home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume16 / nethack31 / patch2m / patches02l
Text File  |  1993-06-16  |  55KB  |  2,312 lines

  1. *** /tmp/da11840    Tue Jun  1 17:00:36 1993
  2. --- sys/amiga/amiwind.c    Tue Jun  1 12:12:53 1993
  3. ***************
  4. *** 3,70 ****
  5.   /*    Copyright (c) Kenneth Lorber, Bethesda, Maryland 1993      */
  6.   /* NetHack may be freely redistributed.  See license for details. */
  7.   
  8. ! /*
  9. !  *  Here is some very Amiga specific stuff, dealing with
  10. !  *  screens, windows, menus, and input via IntuiMessages.
  11. !  */
  12.   
  13. - #include "hack.h"
  14. - #include "winami.h"
  15.   /* Have to undef CLOSE as display.h and intuition.h both use it */
  16.   #undef CLOSE
  17.   
  18. ! #include <exec/types.h>
  19. ! #include <exec/alerts.h>
  20. ! #include <exec/io.h>
  21. ! #include <exec/devices.h>
  22. ! #include <devices/console.h>
  23. ! #include <devices/conunit.h>
  24. ! #include <intuition/intuition.h>
  25. ! #include <intuition/intuitionbase.h>
  26. ! #include <libraries/dosextens.h>
  27.   
  28. ! #ifdef __SASC
  29. ! # undef COUNT
  30. ! # include <dos.h>       /* for __emit */
  31. ! # include <string.h>
  32. ! # include <proto/dos.h>
  33. ! # include <proto/exec.h>
  34. ! /* kludge - see amirip for why */
  35. ! # undef red
  36. ! # undef green
  37. ! # undef blue
  38. ! # undef index
  39. ! # include <proto/graphics.h>
  40. ! # include <proto/intuition.h>
  41. ! # include <proto/diskfont.h>
  42. ! # include <proto/console.h>
  43.   #endif
  44.   
  45. - #undef  NULL
  46. - #define NULL    0L
  47.   #include "Amiga:amimenu.c"
  48.   
  49. - /*  First, external declarations... */
  50. - struct Library *ConsoleDevice;
  51. - #ifdef AZTEC_50
  52. - # include <functions.h>
  53. - #endif
  54. - #ifdef  INTUI_NEW_LOOK
  55. - #define NewWindow ExtNewWindow
  56. - #endif
  57. - #include "Amiga:winami.p"
  58. - #include "Amiga:amiwind.p"
  59. - #include "Amiga:amidos.p"
  60.   static int BufferGetchar(void);
  61.   static void ProcessMessage( register struct IntuiMessage *message );
  62.   
  63. --- 3,23 ----
  64.   /*    Copyright (c) Kenneth Lorber, Bethesda, Maryland 1993      */
  65.   /* NetHack may be freely redistributed.  See license for details. */
  66.   
  67. ! #include "amiga:windefs.h"
  68. ! #include "amiga:winext.h"
  69. ! #include "amiga:winproto.h"
  70.   
  71.   /* Have to undef CLOSE as display.h and intuition.h both use it */
  72.   #undef CLOSE
  73.   
  74. ! #ifdef AMII_GRAPHICS    /* too early in the file? too late? */
  75.   
  76. ! #ifndef    SHAREDLIB
  77. ! struct Library *ConsoleDevice;
  78.   #endif
  79.   
  80.   #include "Amiga:amimenu.c"
  81.   
  82.   static int BufferGetchar(void);
  83.   static void ProcessMessage( register struct IntuiMessage *message );
  84.   
  85. ***************
  86. *** 75,85 ****
  87. --- 28,42 ----
  88.   /*  Now our own variables */
  89.   
  90.   struct IntuitionBase *IntuitionBase;
  91. + #ifndef    SHAREDLIB
  92.   struct Screen *HackScreen;
  93. + #endif
  94.   struct Window *pr_WindowPtr;
  95.   struct MsgPort *HackPort;
  96.   struct IOStdReq ConsoleIO;
  97. + #ifndef    SHAREDLIB
  98.   char Initialized = 0;
  99. + #endif
  100.   WEVENT lastevent;
  101.   
  102.   #ifdef HACKFONT
  103. ***************
  104. *** 87,98 ****
  105.   struct Library *DiskfontBase;
  106.   #endif
  107.   
  108.   extern struct Library *ConsoleDevice;
  109.   
  110. - #define CSI     '\x9b'
  111. - #define NO_CHAR     -1
  112. - #define RAWHELP     0x5F    /* Rawkey code of the HELP key */
  113.   #define KBDBUFFER   10
  114.   static unsigned char KbdBuffer[KBDBUFFER];
  115.   unsigned char KbdBuffered;
  116. --- 44,53 ----
  117.   struct Library *DiskfontBase;
  118.   #endif
  119.   
  120. + #ifndef    SHAREDLIB
  121.   extern struct Library *ConsoleDevice;
  122. + #endif
  123.   
  124.   #define KBDBUFFER   10
  125.   static unsigned char KbdBuffer[KBDBUFFER];
  126.   unsigned char KbdBuffered;
  127. ***************
  128. *** 122,134 ****
  129. --- 77,118 ----
  130.    * See amiwind.c for the amiga specific colormap.
  131.    */
  132.   
  133. + #ifdef    VIEWWINDOW
  134. + int foreg[16] = { 8, 7, 4, 2, 6, 5, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
  135. + int backg[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 1, 6, 5, 3, 1 };
  136. + #else
  137.   int foreg[16] = { 0, 7, 4, 2, 6, 5, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
  138.   int backg[16] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 1, 6, 5, 3, 1 };
  139.   #endif
  140. + #if 0
  141. +     #define BLACK        0
  142. +     #define RED        1
  143. +     #define GREEN        2
  144. +     #define BROWN        3    /* on IBM, low-intensity yellow is brown */
  145. +     #define BLUE        4
  146. +     #define MAGENTA     5
  147. +     #define CYAN        6
  148. +     #define GRAY        7    /* low-intensity white */
  149. +     #define NO_COLOR    8
  150. +     #define ORANGE_COLORED    9    /* "orange" conflicts with the object */
  151. +     #define BRIGHT_GREEN    10
  152. +     #define YELLOW        11
  153. +     #define BRIGHT_BLUE    12
  154. +     #define BRIGHT_MAGENTA  13
  155. +     #define BRIGHT_CYAN    14
  156. +     #define WHITE        15
  157. +     #define MAXCOLORS    16
  158. + #endif
  159. + #endif
  160.   
  161.   #ifdef HACKFONT
  162.   
  163. + struct TextFont *TextsFont;
  164.   struct TextFont *HackFont;
  165. + #ifdef    VIEWWINDOW
  166. + struct TextFont *HackFont4;
  167. + struct TextFont *HackFont16;
  168. + #endif
  169.   UBYTE FontName[] = "NetHack:hack.font";
  170.       /* # chars in "NetHack:": */
  171.   #define         SIZEOF_DISKNAME 8
  172. ***************
  173. *** 141,149 ****
  174.   #else
  175.       (UBYTE *) "topaz.font",
  176.   #endif
  177. !     TOPAZ_EIGHTY, FS_NORMAL, FPF_DISKFONT | FPF_ROMFONT
  178.   };
  179.   
  180.   /*
  181.    * Open a window that shares the HackPort IDCMP. Use CloseShWindow()
  182.    * to close.
  183. --- 125,168 ----
  184.   #else
  185.       (UBYTE *) "topaz.font",
  186.   #endif
  187. !     8, FS_NORMAL, FPF_DISKFONT | FPF_DESIGNED
  188. !     | FPF_ROMFONT
  189.   };
  190.   
  191. + #ifdef    VIEWWINDOW
  192. + struct TextAttr Hack40 = {
  193. + #ifdef HACKFONT
  194. +     &FontName[SIZEOF_DISKNAME],
  195. + #else
  196. +     (UBYTE *) "topaz.font",
  197. + #endif
  198. +     4, FS_NORMAL, FPF_DISKFONT | FPF_DESIGNED
  199. + #ifndef    HACKFONT
  200. +     | FPF_ROMFONT
  201. + #endif
  202. + };
  203. + struct TextAttr Hack160 = {
  204. + #ifdef HACKFONT
  205. +     &FontName[SIZEOF_DISKNAME],
  206. + #else
  207. +     (UBYTE *) "topaz.font",
  208. + #endif
  209. +     16, FS_NORMAL, FPF_DISKFONT | FPF_DESIGNED
  210. + #ifndef    HACKFONT
  211. +     | FPF_ROMFONT
  212. + #endif
  213. + };
  214. + #endif
  215. + struct TextAttr TextsFont13 = {
  216. +     (UBYTE *) "courier.font",
  217. +     13, FS_NORMAL, FPF_DISKFONT | FPF_DESIGNED
  218. + #ifndef    HACKFONT
  219. +     | FPF_ROMFONT
  220. + #endif
  221. + };
  222.   /*
  223.    * Open a window that shares the HackPort IDCMP. Use CloseShWindow()
  224.    * to close.
  225. ***************
  226. *** 177,183 ****
  227.   void CloseShWindow(win)
  228.   struct Window *win;
  229.   {
  230. !     register struct IntuiMessage *msg, *nxt;
  231.   
  232.       if( !HackPort )
  233.       panic("HackPort NULL in CloseShWindow" );
  234. --- 196,202 ----
  235.   void CloseShWindow(win)
  236.   struct Window *win;
  237.   {
  238. !     register struct IntuiMessage *msg;
  239.   
  240.       if( !HackPort )
  241.       panic("HackPort NULL in CloseShWindow" );
  242. ***************
  243. *** 332,353 ****
  244.       int c;
  245.       static int skip_mouse=0;    /* need to ignore next mouse event on
  246.                    * a window activation */
  247.       switch(message->Class) {
  248.       case ACTIVEWINDOW:
  249. !     skip_mouse=1;break;
  250.       case MOUSEBUTTONS:
  251.       {
  252. !         if(skip_mouse){
  253.           skip_mouse=0;
  254.           break;
  255.           }
  256. !         if( message->Code == SELECTDOWN ){
  257.           lastevent.type = WEMOUSE;
  258. !         lastevent.u.mouse.x = message->MouseX;
  259. !         lastevent.u.mouse.y = message->MouseY;
  260.               /* With shift equals RUN */
  261. !         lastevent.u.mouse.qual = (message->Qualifier &
  262.             (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT)) != 0;
  263.           }
  264.       }
  265.       break;
  266. --- 351,409 ----
  267.       int c;
  268.       static int skip_mouse=0;    /* need to ignore next mouse event on
  269.                    * a window activation */
  270. +     struct Window *w = message->IDCMPWindow;
  271.       switch(message->Class) {
  272.       case ACTIVEWINDOW:
  273. !     if( alwaysinvent && WIN_INVEN != WIN_ERR &&
  274. !                 message->IDCMPWindow ==
  275. !                 amii_wins[ WIN_INVEN ]->win )
  276. !     {
  277. !         DoMenuScroll( WIN_INVEN, 0 );
  278. !     }
  279. !     else if( scrollmsg && WIN_MESSAGE != WIN_ERR &&
  280. !                 message->IDCMPWindow ==
  281. !                 amii_wins[ WIN_MESSAGE ]->win )
  282. !     {
  283. !         DoMenuScroll( WIN_MESSAGE, 0 );
  284. !     }
  285. !     else
  286. !     {
  287. !         skip_mouse=1;
  288. !     }
  289. !     break;
  290.       case MOUSEBUTTONS:
  291.       {
  292. !         if( skip_mouse )
  293. !         {
  294.           skip_mouse=0;
  295.           break;
  296.           }
  297. !         if( !amii_wins[ WIN_MAP ] || w != amii_wins[ WIN_MAP ]->win )
  298. !         break;
  299. !         if( message->Code == SELECTUP )
  300. !         {
  301. ! #ifdef    VIEWWINDOW
  302. !         amii_putstr( WIN_MESSAGE, 0, "done..." );
  303. !         w->Flags &= ~REPORTMOUSE;
  304. ! #endif
  305. !         }
  306. !         else if( message->Code == SELECTDOWN )
  307. !         {
  308.           lastevent.type = WEMOUSE;
  309. !         lastevent.un.mouse.x = message->MouseX;
  310. !         lastevent.un.mouse.y = message->MouseY;
  311.               /* With shift equals RUN */
  312. !         lastevent.un.mouse.qual = (message->Qualifier &
  313.             (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT)) != 0;
  314. + #ifdef    VIEWWINDOW
  315. +         w->Flags |= REPORTMOUSE;
  316. +         amii_putstr( WIN_MESSAGE, 0,
  317. +             "drag mouse to see other areas of this level" );
  318. + #endif
  319.           }
  320.       }
  321.       break;
  322. ***************
  323. *** 358,364 ****
  324.           struct MenuItem *item;
  325.   
  326.           thismenu = message->Code;
  327. !         while (thismenu != MENUNULL) {
  328.           item = ItemAddress(HackMenu, (ULONG) thismenu);
  329.           if (KbdBuffered < KBDBUFFER)
  330.               BufferQueueChar(item->Command); /* Unused: No COMMSEQ */
  331. --- 414,421 ----
  332.           struct MenuItem *item;
  333.   
  334.           thismenu = message->Code;
  335. !         while (thismenu != MENUNULL)
  336. !         {
  337.           item = ItemAddress(HackMenu, (ULONG) thismenu);
  338.           if (KbdBuffered < KBDBUFFER)
  339.               BufferQueueChar(item->Command); /* Unused: No COMMSEQ */
  340. ***************
  341. *** 367,372 ****
  342. --- 424,469 ----
  343.       }
  344.       break;
  345.   
  346. +     case REFRESHWINDOW:
  347. + #ifdef    VIEWWINDOW
  348. +     {
  349. +         struct Window *vw, *vbw;
  350. +         if( amii_wins[ WIN_VIEWBOX ] && amii_wins[ WIN_VIEW ] &&
  351. +             w == amii_wins[ WIN_VIEWBOX ]->win )
  352. +         {
  353. +         vw = amii_wins[ WIN_VIEW ]->win;
  354. +         vbw = amii_wins[ WIN_VIEWBOX ]->win;
  355. +         if( vw->LeftEdge != (vbw->LeftEdge+vbw->BorderLeft) ||
  356. +             vw->TopEdge != ( vbw->TopEdge + vbw->BorderTop ) ||
  357. +             vw->Width != (vbw->Width -vbw->BorderLeft - vbw->BorderRight ) ||
  358. +             vw->Height != (vbw->Height - vbw->BorderTop - vbw->BorderBottom ) )
  359. +         {
  360. +             MoveWindow( vw, (vbw->LeftEdge+vbw->BorderLeft) - vw->LeftEdge,
  361. +             ( vbw->TopEdge + vbw->BorderTop ) - vw->TopEdge );
  362. +             SizeWindow( vw,
  363. +             ( vbw->Width -vbw->BorderLeft -
  364. +                 vbw->BorderRight ) - vw->Width,
  365. +             ( vbw->Height - vbw->BorderTop -
  366. +                 vbw->BorderBottom - vw->Height ) );
  367. +         }
  368. +         }
  369. +         else if( amii_wins[ WIN_MESSAGE ] && w == amii_wins[ WIN_MESSAGE ]->win )
  370. +         {
  371. +         DoMenuScroll( WIN_MESSAGE, 0 );
  372. +         }
  373. +     }
  374. + #endif
  375. +     break;
  376. +     case CLOSEWINDOW:
  377. +     if( WIN_INVEN != WIN_ERR && message->IDCMPWindow ==
  378. +                 amii_wins[ WIN_INVEN ]->win )
  379. +     {
  380. +         dismiss_nhwindow( WIN_INVEN );
  381. +     }
  382. +     break;
  383.       case RAWKEY:
  384.       if (!(message->Code & IECODE_UP_PREFIX)){
  385.           /* May queue multiple characters
  386. ***************
  387. *** 376,385 ****
  388. --- 473,557 ----
  389.           BufferQueueChar( c );
  390.           }
  391.           break;
  392. +     case MOUSEMOVE:
  393. + #ifdef    VIEWWINDOW
  394. +     if( w == amii_wins[ WIN_MAP ]->win )
  395. +     {
  396. +         int posx, posy, dx, dy;
  397. +         register struct MsgPort *port = w->UserPort;
  398. +         struct amii_WinDesc *cw;
  399. +         posx = message->MouseX;
  400. +         posy = message->MouseY;
  401. +         cursor_on( WIN_MAP );
  402. +         cw = amii_wins[ WIN_MAP ];
  403. +         do {
  404. +         if( message->Class == MOUSEBUTTONS ||
  405. +                     message->Class == INACTIVEWINDOW )
  406. +         {
  407. +             w->Flags &= ~REPORTMOUSE;
  408. +             break;
  409. +         }
  410. +         else if( message->Class == MOUSEMOVE )
  411. +         {
  412. +             if( posx != message->MouseX || posy != message->MouseY )
  413. +             {
  414. +             dx = message->MouseX - posx;
  415. +             dy = message->MouseY - posy;
  416. +             dx /= MAPFTWIDTH;
  417. +             dy /= MAPFTHEIGHT;
  418. +             if( dx != 0 || dy != 0 )
  419. +             {
  420. +                 posx = message->MouseX;
  421. +                 posy = message->MouseY;
  422. +                 amii_curs( WIN_MAP,
  423. +                 (posx - w->BorderLeft)/MAPFTWIDTH+dx,
  424. +                 (posy - w->BorderTop)/MAPFTHEIGHT+dy );
  425. +                 cursor_on( WIN_MAP );
  426. +             }
  427. +             }
  428. +         }
  429. +         ReplyMsg( (struct Message *) message );
  430. +         while( !(message = (struct IntuiMessage *)GetMsg( port ) ) )
  431. +             WaitPort( port );
  432. +         } while( message );
  433. +         amii_putstr( WIN_MESSAGE, 0, "done..." );
  434. +         break;
  435. +     }
  436. + #endif
  437. +     /* FALL through for MESSAGE or INVEN windows */
  438. +     case GADGETDOWN:
  439. +     if( WIN_MESSAGE != WIN_ERR && message->IDCMPWindow ==
  440. +             amii_wins[ WIN_MESSAGE ]->win )
  441. +     {
  442. +         DoMenuScroll( WIN_MESSAGE, 0 );
  443. +     }
  444. +     else if( WIN_INVEN != WIN_ERR && message->IDCMPWindow ==
  445. +             amii_wins[ WIN_INVEN ]->win )
  446. +     {
  447. +         DoMenuScroll( WIN_INVEN, 0 );
  448. +     }
  449. +     break;
  450. +     case NEWSIZE:
  451. +     if( WIN_MESSAGE != WIN_ERR && message->IDCMPWindow ==
  452. +             amii_wins[ WIN_MESSAGE ]->win )
  453. +     {
  454. +         ReDisplayData( WIN_MESSAGE );
  455. +     }
  456. +     else if( WIN_INVEN != WIN_ERR && message->IDCMPWindow ==
  457. +             amii_wins[ WIN_INVEN ]->win )
  458. +     {
  459. +         ReDisplayData( WIN_INVEN );
  460. +     }
  461. +     break;
  462.       }
  463.       ReplyMsg((struct Message *) message);
  464.   }
  465.   
  466. + #endif /* AMII_GRAPHICS */
  467.   /*
  468.    *  Get all incoming messages and fill up the keyboard buffer,
  469.    *  thus allowing Intuition to (maybe) free up the IntuiMessages.
  470. ***************
  471. *** 388,403 ****
  472. --- 560,586 ----
  473.    *  between characters and incoming messages.
  474.    */
  475.   
  476. + #if defined(TTY_GRAPHICS) && !defined(AMII_GRAPHICS)
  477. + int kbhit(){return 0};
  478. + #else
  479.   int
  480.   kbhit()
  481.   {
  482.       int c;
  483. + #ifdef TTY_GRAPHICS
  484. +         /* a kludge to defuse the mess in allmain.c */
  485. +         /* I hope this is the right approach */
  486. +     if(windowprocs.win_init_nhwindows==amii_procs.win_init_nhwindows)return 0;
  487. + #endif
  488.       c = amikbhit();
  489.       if( c <= 0 )
  490.           return( 0 );
  491.       return( c );
  492.   }
  493. + #endif
  494.   
  495. + #ifdef AMII_GRAPHICS
  496.   int
  497.   amikbhit()
  498.   {
  499. ***************
  500. *** 445,451 ****
  501.       if( KbdBuffered )
  502.       {
  503.       lastevent.type = WEKEY;
  504. !     lastevent.u.key = BufferGetchar();
  505.       }
  506.       return( lastevent.type );
  507.   }
  508. --- 628,634 ----
  509.       if( KbdBuffered )
  510.       {
  511.       lastevent.type = WEKEY;
  512. !     lastevent.un.key = BufferGetchar();
  513.       }
  514.       return( lastevent.type );
  515.   }
  516. ***************
  517. *** 455,470 ****
  518.    *  when there is something that s/he should read.
  519.    */
  520.   
  521. ! void CleanUp()
  522.   {
  523.       register struct IntuiMessage *msg;
  524.   
  525. !     /* Finish closing things up */
  526.   
  527. -     amii_raw_print("");
  528. -     amii_getret();
  529. -     ((struct Process *) FindTask(NULL))->pr_WindowPtr = (APTR) pr_WindowPtr;
  530.       if (ConsoleIO.io_Device)
  531.       CloseDevice( (struct IORequest *)&ConsoleIO );
  532.       ConsoleIO.io_Device = 0;
  533. --- 638,654 ----
  534.    *  when there is something that s/he should read.
  535.    */
  536.   
  537. ! void amii_cleanup()
  538.   {
  539.       register struct IntuiMessage *msg;
  540.   
  541. !     /* Close things up */
  542. !     if( HackPort )
  543. !     {
  544. !     amii_raw_print("");
  545. !     amii_getret();
  546. !     }
  547.   
  548.       if (ConsoleIO.io_Device)
  549.       CloseDevice( (struct IORequest *)&ConsoleIO );
  550.       ConsoleIO.io_Device = 0;
  551. ***************
  552. *** 473,479 ****
  553.       DeletePort( ConsoleIO.io_Message.mn_ReplyPort );
  554.       ConsoleIO.io_Message.mn_ReplyPort = 0;
  555.   
  556. !     if (HackPort) {
  557.       Forbid();
  558.       while (msg = (struct IntuiMessage *) GetMsg(HackPort))
  559.           ReplyMsg((struct Message *) msg);
  560. --- 657,665 ----
  561.       DeletePort( ConsoleIO.io_Message.mn_ReplyPort );
  562.       ConsoleIO.io_Message.mn_ReplyPort = 0;
  563.   
  564. !     /* Strip messages before deleting the port */
  565. !     if( HackPort )
  566. !     {
  567.       Forbid();
  568.       while (msg = (struct IntuiMessage *) GetMsg(HackPort))
  569.           ReplyMsg((struct Message *) msg);
  570. ***************
  571. *** 483,493 ****
  572.       Permit();
  573.       }
  574.   
  575. !     if (HackScreen) {
  576.   #ifdef  INTUI_NEW_LOOK
  577.       if( IntuitionBase->LibNode.lib_Version >= 37 )
  578.       {
  579. !         while( CloseScreen(HackScreen) == FALSE )
  580.           {
  581.           struct EasyStruct easy =
  582.           {
  583. --- 669,683 ----
  584.       Permit();
  585.       }
  586.   
  587. !     /* Close the screen, under v37 or greater it is a pub screen and there may be
  588. !      * visitors, so check close status and wait till everyone is gone.
  589. !      */
  590. !     if( HackScreen )
  591. !     {
  592.   #ifdef  INTUI_NEW_LOOK
  593.       if( IntuitionBase->LibNode.lib_Version >= 37 )
  594.       {
  595. !         while( CloseScreen( HackScreen ) == FALSE )
  596.           {
  597.           struct EasyStruct easy =
  598.           {
  599. ***************
  600. *** 500,513 ****
  601.           EasyRequest( NULL, &easy, NULL, NULL );
  602.           }
  603.       }
  604. ! #else
  605. !     CloseScreen(HackScreen);
  606.   #endif
  607.       HackScreen = NULL;
  608.       }
  609.   
  610.   #ifdef HACKFONT
  611.       if (HackFont)
  612.       {
  613.       CloseFont(HackFont);
  614. --- 690,704 ----
  615.           EasyRequest( NULL, &easy, NULL, NULL );
  616.           }
  617.       }
  618. !     else
  619.   #endif
  620. +     {
  621. +         CloseScreen(HackScreen);
  622. +     }
  623.       HackScreen = NULL;
  624.       }
  625.   
  626.   #ifdef HACKFONT
  627.       if (HackFont)
  628.       {
  629.       CloseFont(HackFont);
  630. ***************
  631. *** 514,519 ****
  632. --- 705,730 ----
  633.       HackFont = NULL;
  634.       }
  635.   
  636. + #ifdef    VIEWWINDOW
  637. +     if (HackFont4)
  638. +     {
  639. +     CloseFont(HackFont4);
  640. +     HackFont4 = NULL;
  641. +     }
  642. +     if (HackFont16)
  643. +     {
  644. +     CloseFont(HackFont16);
  645. +     HackFont16 = NULL;
  646. +     }
  647. + #endif
  648. +     if( TextsFont )
  649. +     {
  650. +     CloseFont( TextsFont );
  651. +     TextsFont = NULL;
  652. +     }
  653.       if( DiskfontBase )
  654.       {
  655.       CloseLibrary(DiskfontBase);
  656. ***************
  657. *** 521,526 ****
  658. --- 732,744 ----
  659.       }
  660.   #endif
  661.   
  662. + #ifdef    VIEWWINDOW
  663. +     if (LayersBase) {
  664. +     CloseLibrary((struct Library *)LayersBase);
  665. +     LayersBase = NULL;
  666. +     }
  667. + #endif
  668.       if (GfxBase) {
  669.       CloseLibrary((struct Library *)GfxBase);
  670.       GfxBase = NULL;
  671. ***************
  672. *** 531,563 ****
  673.       IntuitionBase = NULL;
  674.       }
  675.   
  676.       Initialized = 0;
  677.   }
  678.   
  679.   void Abort(rc)
  680.   long rc;
  681.   {
  682.   #ifdef CHDIR
  683.       extern char orgdir[];
  684.       chdir(orgdir);
  685.   #endif
  686. !     if (Initialized && ConsoleDevice) {
  687. !     printf("\n\nAbort with alert code %08lx...\n", rc);
  688. !     amii_getret();
  689.       } else
  690. !     Alert(rc);
  691.   #ifdef __SASC
  692.       {
  693.   /*  __emit(0x4afc);     /* illegal instruction */
  694.       __emit(0x40fc);     /* divide by */
  695.       __emit(0x0000);     /*  #0  */
  696. !     /* NOTE: don't move CleanUp() above here - */
  697. !     /* it is too likely to kill the system     */
  698. !     /* before it can get the SnapShot out, if  */
  699. !     /* there is something really wrong.    */
  700.       }
  701.   #endif
  702. !     CleanUp();
  703.   #undef exit
  704.   #ifdef AZTEC_C
  705.       _abort();
  706. --- 749,818 ----
  707.       IntuitionBase = NULL;
  708.       }
  709.   
  710. + #ifdef    SHAREDLIB
  711. +     if (DOSBase) {
  712. +     CloseLibrary((struct Library *)DOSBase);
  713. +     DOSBase = NULL;
  714. +     }
  715. + #endif
  716. +     ((struct Process *) FindTask(NULL))->pr_WindowPtr = (APTR) pr_WindowPtr;
  717.       Initialized = 0;
  718.   }
  719.   
  720. + #ifndef    SHAREDLIB
  721.   void Abort(rc)
  722.   long rc;
  723.   {
  724. +     int fault = 1;
  725.   #ifdef CHDIR
  726.       extern char orgdir[];
  727.       chdir(orgdir);
  728.   #endif
  729. ! #ifdef AMII_GRAPHICS
  730. !     if (Initialized
  731. !       && ConsoleDevice
  732. !       && windowprocs.win_init_nhwindows==amii_procs.win_init_nhwindows) {
  733. !       printf("\n\nAbort with alert code %08lx...\n", rc);
  734. !       amii_getret();
  735.       } else
  736. ! #endif
  737. !       printf("\n\nAbort with alert code %08lx...\n",rc);
  738. ! #if 0
  739. !       Alert(rc);              /* this is too severe */
  740. ! #endif
  741.   #ifdef __SASC
  742. + #ifdef    INTUI_NEW_LOOK
  743.       {
  744. +         struct EasyStruct es =
  745. +         {
  746. +             sizeof( struct EasyStruct ),
  747. +             0,
  748. +             "NetHack Panic Request",
  749. +             "NetHack is Aborting with code == 0x%08lx",
  750. +         "Continue Abort|Return to Program|Clean up and exit",
  751. +         };
  752. +         fault = EasyRequest( NULL, &es, NULL, (long)rc );
  753. +         if( fault == 2 )
  754. +             return;
  755. +     }
  756. + #endif
  757. +     if( fault == 1 )
  758. +     {
  759.   /*  __emit(0x4afc);     /* illegal instruction */
  760.       __emit(0x40fc);     /* divide by */
  761.       __emit(0x0000);     /*  #0  */
  762. !       /* NOTE: don't move amii_cleanup() above here - */
  763. !       /* it is too likely to kill the system     */
  764. !       /* before it can get the SnapShot out, if  */
  765. !       /* there is something really wrong.    */
  766.       }
  767.   #endif
  768. ! #ifdef AMII_GRAPHICS
  769. !     if(windowprocs.win_init_nhwindows==amii_procs.win_init_nhwindows)
  770. !       amii_cleanup();
  771. ! #endif
  772.   #undef exit
  773.   #ifdef AZTEC_C
  774.       _abort();
  775. ***************
  776. *** 565,570 ****
  777. --- 820,834 ----
  778.       exit((int) rc);
  779.   }
  780.   
  781. + void
  782. + CleanUp()
  783. + {
  784. +     amii_cleanup();
  785. + }
  786. + #endif
  787. + #ifdef AMII_GRAPHICS
  788.   #ifdef AMIFLUSH
  789.   /* This routine adapted from AmigaMail IV-37 by Michael Sinz */
  790.   static struct Message *
  791. ***************
  792. *** 620,625 ****
  793. --- 884,894 ----
  794.       struct Window *w;
  795.   {
  796.       short i, x, y;
  797. + #ifdef    VIEWWINDOW
  798. +     struct Window *vw = amii_wins[ WIN_VIEW ]->win;
  799. +     register struct RastPort *vrp = vw->RPort;
  800. + #endif
  801. +     register struct RastPort *rp = w->RPort;
  802.   
  803.       /* If nothing is buffered, return before we do anything */
  804.       if(glyph_node_index == 0)
  805. ***************
  806. *** 627,657 ****
  807.   
  808.       cursor_off( WIN_MAP );
  809.       start_glyphout( WIN_MAP );
  810.       /* Set up the drawing mode */
  811. !     SetDrMd( w->RPort, JAM2);
  812.   
  813.       /* Go ahead and start dumping the stuff */
  814.       for(i=0; i<glyph_node_index; ++i) {
  815.       /* These coordinate calculations must be synced with the
  816. !      * code in curs() in winami.c.  curs_on_u() calls curs()
  817.        * to draw the cursor on top of the player
  818.        */
  819. !     y = w->BorderTop + (g_nodes[i].y-1) * w->RPort->TxHeight +
  820. !         w->RPort->TxBaseline + 1;
  821. !     x = g_nodes[i].x * w->RPort->TxWidth + w->BorderLeft;
  822.   
  823.       /* Move pens to correct location */
  824. !     Move(w->RPort, (long)x, (long)y);
  825.   
  826.       /* Setup the colors */
  827. !     SetAPen(w->RPort, (long)g_nodes[i].fg_color);
  828. !     SetBPen(w->RPort, (long)g_nodes[i].bg_color);
  829.   
  830.       /* Do it */
  831. !     Text(w->RPort, g_nodes[i].buffer, g_nodes[i].len);
  832.       }
  833.   
  834. !     end_glyphout( WIN_MAP );
  835.       /* Clean up */
  836.       glyph_node_index = glyph_buffer_index = 0;
  837.   }
  838. --- 896,952 ----
  839.   
  840.       cursor_off( WIN_MAP );
  841.       start_glyphout( WIN_MAP );
  842. + #ifdef    VIEWWINDOW
  843. +     cursor_off( WIN_VIEW );
  844. +     start_glyphout( WIN_VIEW );
  845. + #endif
  846.       /* Set up the drawing mode */
  847. !     SetDrMd( rp, JAM2);
  848. ! #ifdef    VIEWWINDOW
  849. !     SetDrMd( vrp, JAM2);
  850. ! #endif
  851.   
  852.       /* Go ahead and start dumping the stuff */
  853.       for(i=0; i<glyph_node_index; ++i) {
  854.       /* These coordinate calculations must be synced with the
  855. !      * code in amii_curs() in winami.c.  curs_on_u() calls amii_curs()
  856.        * to draw the cursor on top of the player
  857.        */
  858. !     y = w->BorderTop + (g_nodes[i].y-1) * rp->TxHeight +
  859. !         rp->TxBaseline + 1;
  860. !     x = g_nodes[i].x * rp->TxWidth + w->BorderLeft;
  861.   
  862.       /* Move pens to correct location */
  863. !     Move( rp, (long)x, (long)y);
  864.   
  865.       /* Setup the colors */
  866. !     SetAPen( rp, (long)g_nodes[i].fg_color);
  867. !     SetBPen( rp, (long)g_nodes[i].bg_color);
  868.   
  869.       /* Do it */
  870. !     Text( rp, g_nodes[i].buffer, g_nodes[i].len);
  871. ! #ifdef    VIEWWINDOW
  872. !     y = vw->BorderTop + (g_nodes[i].y-1) * vrp->TxHeight + vrp->TxBaseline + 1;
  873. !     x = g_nodes[i].x * vrp->TxWidth + vw->BorderLeft;
  874. !     /* Move pens to correct location */
  875. !     Move( vrp, (long)x, (long)y);
  876. !     /* Setup the colors */
  877. !     SetAPen( vrp, (long)g_nodes[i].fg_color);
  878. !     SetBPen( vrp, (long)g_nodes[i].bg_color);
  879. !     /* Do it */
  880. !     Text( vrp, g_nodes[i].buffer, g_nodes[i].len);
  881. ! #endif
  882.       }
  883.   
  884. !     amii_end_glyphout( WIN_MAP );
  885. ! #ifdef    VIEWWINDOW
  886. !     amii_end_glyphout( WIN_VIEW );
  887. ! #endif
  888.       /* Clean up */
  889.       glyph_node_index = glyph_buffer_index = 0;
  890.   }
  891. ***************
  892. *** 665,676 ****
  893.       int color_index, glyph;
  894.   {
  895.       int fg_color, bg_color;
  896. !     struct WinDesc *cw;
  897.       struct Window *w;
  898.       int curx;
  899.       int cury;
  900.   
  901. !     if( ( cw=wins[window] ) == (struct WinDesc *)NULL )
  902.       panic("bad winid in amiga_print_glyph: %d", window );
  903.   
  904.       w = cw->win;
  905. --- 960,971 ----
  906.       int color_index, glyph;
  907.   {
  908.       int fg_color, bg_color;
  909. !     struct amii_WinDesc *cw;
  910.       struct Window *w;
  911.       int curx;
  912.       int cury;
  913.   
  914. !     if( ( cw=amii_wins[window] ) == (struct amii_WinDesc *)NULL )
  915.       panic("bad winid in amiga_print_glyph: %d", window );
  916.   
  917.       w = cw->win;
  918. ***************
  919. *** 740,752 ****
  920.   start_glyphout(window)
  921.       winid window;
  922.   {
  923. !     struct WinDesc *cw;
  924.       struct Window *w;
  925.   
  926. !     if( ( cw=wins[window] ) == (struct WinDesc *)NULL )
  927.       panic( "bad winid %d in start_glyphout()", window );
  928.   
  929. !     if( cw->flags & FLMAP_INGLYPH )
  930.       return;
  931.   
  932.       if( !(w = cw->win ) )
  933. --- 1035,1047 ----
  934.   start_glyphout(window)
  935.       winid window;
  936.   {
  937. !     struct amii_WinDesc *cw;
  938.       struct Window *w;
  939.   
  940. !     if( ( cw=amii_wins[window] ) == (struct amii_WinDesc *)NULL )
  941.       panic( "bad winid %d in start_glyphout()", window );
  942.   
  943. !     if( cw->wflags & FLMAP_INGLYPH )
  944.       return;
  945.   
  946.       if( !(w = cw->win ) )
  947. ***************
  948. *** 766,772 ****
  949.        */
  950.       usecolor = flags.use_color;
  951.       flags.use_color = FALSE;
  952. !     cw->flags |= FLMAP_INGLYPH;
  953.   }
  954.   
  955.   /*
  956. --- 1061,1067 ----
  957.        */
  958.       usecolor = flags.use_color;
  959.       flags.use_color = FALSE;
  960. !     cw->wflags |= FLMAP_INGLYPH;
  961.   }
  962.   
  963.   /*
  964. ***************
  965. *** 773,790 ****
  966.    * General cleanup routine -- flushes and restores cursor
  967.    */
  968.   void
  969. ! end_glyphout(window)
  970.       winid window;
  971.   {
  972. !     struct WinDesc *cw;
  973.       struct Window *w;
  974.   
  975. !     if( ( cw = wins[ window ] ) == (struct WinDesc *)NULL )
  976. !     panic("bad window id %d in end_glyphout()", window );
  977.   
  978. !     if( ( cw->flags & FLMAP_INGLYPH ) == 0 )
  979.       return;
  980. !     cw->flags &= ~(FLMAP_INGLYPH);
  981.   
  982.       if( !(w = cw->win ) )
  983.       panic( "bad winid %d, no window ptr set", window );
  984. --- 1068,1085 ----
  985.    * General cleanup routine -- flushes and restores cursor
  986.    */
  987.   void
  988. ! amii_end_glyphout(window)
  989.       winid window;
  990.   {
  991. !     struct amii_WinDesc *cw;
  992.       struct Window *w;
  993.   
  994. !     if( ( cw = amii_wins[ window ] ) == (struct amii_WinDesc *)NULL )
  995. !     panic("bad window id %d in amii_end_glyphout()", window );
  996.   
  997. !     if( ( cw->wflags & FLMAP_INGLYPH ) == 0 )
  998.       return;
  999. !     cw->wflags &= ~(FLMAP_INGLYPH);
  1000.   
  1001.       if( !(w = cw->win ) )
  1002.       panic( "bad winid %d, no window ptr set", window );
  1003. ***************
  1004. *** 866,871 ****
  1005. --- 1161,1167 ----
  1006.           free( sip );
  1007.       }
  1008.       else if( gd->GadgetType == PROPGADGET )
  1009.       {
  1010.           free( (struct PropInfo *)gd->SpecialInfo );
  1011.       }
  1012. ***************
  1013. *** 893,899 ****
  1014. --- 1189,1207 ----
  1015.   int state;
  1016.   {
  1017.   }
  1018. + #endif  /* AMII_GRAPHICS */
  1019.   
  1020. + #ifndef    SHAREDLIB
  1021. + void
  1022. + amiv_loadlib( void )
  1023. + {
  1024. + }
  1025. + void
  1026. + amii_loadlib( void )
  1027. + {
  1028. + }
  1029.   /* fatal error */
  1030.   /*VARARGS1*/
  1031.   void error VA_DECL(const char *, s)
  1032. ***************
  1033. *** 907,909 ****
  1034. --- 1215,1218 ----
  1035.       VA_END();
  1036.       Abort(0L);
  1037.   }
  1038. + #endif
  1039. *** /tmp/da11848    Tue Jun  1 17:00:39 1993
  1040. --- sys/amiga/amiwind.p    Tue Apr 13 15:41:46 1993
  1041. ***************
  1042. *** 20,30 ****
  1043.   void FDECL( WindowPrintf, ( char *,... ));
  1044.   void NDECL( CleanUp );
  1045.   int FDECL( ConvertKey, ( struct IntuiMessage * ));
  1046.   void FDECL( Abort, (long ));
  1047.   void FDECL( flush_glyph_buffer, (struct Window *));
  1048.   void FDECL( amiga_print_glyph, (winid , int , int ));
  1049.   void FDECL( start_glyphout, (winid ));
  1050. ! void FDECL( end_glyphout, (winid ));
  1051.   #ifdef    INTUI_NEW_LOOK
  1052.   struct ExtNewWindow *FDECL( DupNewWindow, (struct ExtNewWindow *));
  1053.   void FDECL( FreeNewWindow, (struct ExtNewWindow *));
  1054. --- 20,32 ----
  1055.   void FDECL( WindowPrintf, ( char *,... ));
  1056.   void NDECL( CleanUp );
  1057.   int FDECL( ConvertKey, ( struct IntuiMessage * ));
  1058. + #ifndef    SHAREDLIB
  1059.   void FDECL( Abort, (long ));
  1060. + #endif
  1061.   void FDECL( flush_glyph_buffer, (struct Window *));
  1062.   void FDECL( amiga_print_glyph, (winid , int , int ));
  1063.   void FDECL( start_glyphout, (winid ));
  1064. ! void FDECL( amii_end_glyphout, (winid ));
  1065.   #ifdef    INTUI_NEW_LOOK
  1066.   struct ExtNewWindow *FDECL( DupNewWindow, (struct ExtNewWindow *));
  1067.   void FDECL( FreeNewWindow, (struct ExtNewWindow *));
  1068. ***************
  1069. *** 35,37 ****
  1070. --- 37,40 ----
  1071.   void NDECL( bell );
  1072.   void NDECL( amii_delay_output );
  1073.   void FDECL( amii_number_pad, (int ));
  1074. + void amii_cleanup( void );
  1075. *** /tmp/da11864    Tue Jun  1 17:00:44 1993
  1076. --- sys/amiga/char.c    Mon May  3 13:21:08 1993
  1077. ***************
  1078. *** 14,23 ****
  1079.   };
  1080.   
  1081.   struct IntuiText Type_IText1 = {
  1082. !     3,0,JAM2,
  1083.       38,1,
  1084.       NULL,
  1085. !     (UBYTE *)"Wizard",
  1086.       NULL
  1087.   };
  1088.   
  1089. --- 14,23 ----
  1090.   };
  1091.   
  1092.   struct IntuiText Type_IText1 = {
  1093. !     7,0,JAM2,
  1094.       38,1,
  1095.       NULL,
  1096. !     "Wizard",
  1097.       NULL
  1098.   };
  1099.   
  1100. ***************
  1101. *** 53,62 ****
  1102.   };
  1103.   
  1104.   struct IntuiText Type_IText2 = {
  1105. !     3,0,JAM2,
  1106.       29,1,
  1107.       NULL,
  1108. !     (UBYTE *)"Valkyrie",
  1109.       NULL
  1110.   };
  1111.   
  1112. --- 53,62 ----
  1113.   };
  1114.   
  1115.   struct IntuiText Type_IText2 = {
  1116. !     7,0,JAM2,
  1117.       29,1,
  1118.       NULL,
  1119. !     "Valkyrie",
  1120.       NULL
  1121.   };
  1122.   
  1123. ***************
  1124. *** 95,101 ****
  1125.       1,0,JAM2,
  1126.       14,1,
  1127.       NULL,
  1128. !     (UBYTE *)"Pick a Random Character Type",
  1129.       NULL
  1130.   };
  1131.   
  1132. --- 95,101 ----
  1133.       1,0,JAM2,
  1134.       14,1,
  1135.       NULL,
  1136. !     "Pick a Random Character Type",
  1137.       NULL
  1138.   };
  1139.   
  1140. ***************
  1141. *** 131,140 ****
  1142.   };
  1143.   
  1144.   struct IntuiText Type_IText4 = {
  1145. !     3,0,JAM2,
  1146.       33,1,
  1147.       NULL,
  1148. !     (UBYTE *)"Samurai",
  1149.       NULL
  1150.   };
  1151.   
  1152. --- 131,140 ----
  1153.   };
  1154.   
  1155.   struct IntuiText Type_IText4 = {
  1156. !     7,0,JAM2,
  1157.       33,1,
  1158.       NULL,
  1159. !     "Samurai",
  1160.       NULL
  1161.   };
  1162.   
  1163. ***************
  1164. *** 170,179 ****
  1165.   };
  1166.   
  1167.   struct IntuiText Type_IText5 = {
  1168. !     3,0,JAM2,
  1169.       34,1,
  1170.       NULL,
  1171. !     (UBYTE *)"Tourist",
  1172.       NULL
  1173.   };
  1174.   
  1175. --- 170,179 ----
  1176.   };
  1177.   
  1178.   struct IntuiText Type_IText5 = {
  1179. !     7,0,JAM2,
  1180.       34,1,
  1181.       NULL,
  1182. !     "Tourist",
  1183.       NULL
  1184.   };
  1185.   
  1186. ***************
  1187. *** 209,218 ****
  1188.   };
  1189.   
  1190.   struct IntuiText Type_IText6 = {
  1191. !     3,0,JAM2,
  1192.       40,1,
  1193.       NULL,
  1194. !     (UBYTE *)"Rogue",
  1195.       NULL
  1196.   };
  1197.   
  1198. --- 209,218 ----
  1199.   };
  1200.   
  1201.   struct IntuiText Type_IText6 = {
  1202. !     7,0,JAM2,
  1203.       40,1,
  1204.       NULL,
  1205. !     "Rogue",
  1206.       NULL
  1207.   };
  1208.   
  1209. ***************
  1210. *** 248,257 ****
  1211.   };
  1212.   
  1213.   struct IntuiText Type_IText7 = {
  1214. !     3,0,JAM2,
  1215.       36,1,
  1216.       NULL,
  1217. !     (UBYTE *)"Priest",
  1218.       NULL
  1219.   };
  1220.   
  1221. --- 248,257 ----
  1222.   };
  1223.   
  1224.   struct IntuiText Type_IText7 = {
  1225. !     7,0,JAM2,
  1226.       36,1,
  1227.       NULL,
  1228. !     "Priest",
  1229.       NULL
  1230.   };
  1231.   
  1232. ***************
  1233. *** 287,296 ****
  1234.   };
  1235.   
  1236.   struct IntuiText Type_IText8 = {
  1237. !     3,0,JAM2,
  1238.       35,1,
  1239.       NULL,
  1240. !     (UBYTE *)"Healer",
  1241.       NULL
  1242.   };
  1243.   
  1244. --- 287,296 ----
  1245.   };
  1246.   
  1247.   struct IntuiText Type_IText8 = {
  1248. !     7,0,JAM2,
  1249.       35,1,
  1250.       NULL,
  1251. !     "Healer",
  1252.       NULL
  1253.   };
  1254.   
  1255. ***************
  1256. *** 326,335 ****
  1257.   };
  1258.   
  1259.   struct IntuiText Type_IText9 = {
  1260. !     3,0,JAM2,
  1261.       33,1,
  1262.       NULL,
  1263. !     (UBYTE *)"Caveman",
  1264.       NULL
  1265.   };
  1266.   
  1267. --- 326,335 ----
  1268.   };
  1269.   
  1270.   struct IntuiText Type_IText9 = {
  1271. !     7,0,JAM2,
  1272.       33,1,
  1273.       NULL,
  1274. !     "Caveman",
  1275.       NULL
  1276.   };
  1277.   
  1278. ***************
  1279. *** 365,374 ****
  1280.   };
  1281.   
  1282.   struct IntuiText Type_IText10 = {
  1283. !     3,0,JAM2,
  1284.       16,1,
  1285.       NULL,
  1286. !     (UBYTE *)"Archeologist",
  1287.       NULL
  1288.   };
  1289.   
  1290. --- 365,374 ----
  1291.   };
  1292.   
  1293.   struct IntuiText Type_IText10 = {
  1294. !     7,0,JAM2,
  1295.       16,1,
  1296.       NULL,
  1297. !     "Archeologist",
  1298.       NULL
  1299.   };
  1300.   
  1301. ***************
  1302. *** 404,413 ****
  1303.   };
  1304.   
  1305.   struct IntuiText Type_IText11 = {
  1306. !     3,0,JAM2,
  1307.       36,1,
  1308.       NULL,
  1309. !     (UBYTE *)"Knight",
  1310.       NULL
  1311.   };
  1312.   
  1313. --- 404,413 ----
  1314.   };
  1315.   
  1316.   struct IntuiText Type_IText11 = {
  1317. !     7,0,JAM2,
  1318.       36,1,
  1319.       NULL,
  1320. !     "Knight",
  1321.       NULL
  1322.   };
  1323.   
  1324. ***************
  1325. *** 443,452 ****
  1326.   };
  1327.   
  1328.   struct IntuiText Type_IText12 = {
  1329. !     3,0,JAM2,
  1330.       48,1,
  1331.       NULL,
  1332. !     (UBYTE *)"Elf",
  1333.       NULL
  1334.   };
  1335.   
  1336. --- 443,452 ----
  1337.   };
  1338.   
  1339.   struct IntuiText Type_IText12 = {
  1340. !     7,0,JAM2,
  1341.       48,1,
  1342.       NULL,
  1343. !     "Elf",
  1344.       NULL
  1345.   };
  1346.   
  1347. ***************
  1348. *** 482,491 ****
  1349.   };
  1350.   
  1351.   struct IntuiText Type_IText13 = {
  1352. !     3,0,JAM2,
  1353.       27,1,
  1354.       NULL,
  1355. !     (UBYTE *)"Barbarian",
  1356.       NULL
  1357.   };
  1358.   
  1359. --- 482,491 ----
  1360.   };
  1361.   
  1362.   struct IntuiText Type_IText13 = {
  1363. !     7,0,JAM2,
  1364.       27,1,
  1365.       NULL,
  1366. !     "Barbarian",
  1367.       NULL
  1368.   };
  1369.   
  1370. ***************
  1371. *** 515,521 ****
  1372.       WINDOWCLOSE+ACTIVATE+NOCAREREFRESH,
  1373.       &Type_Gadget1,
  1374.       NULL,
  1375. !     (UBYTE *)"Pick a Character",
  1376.       NULL,
  1377.       NULL,
  1378.       5,5,
  1379. --- 515,521 ----
  1380.       WINDOWCLOSE+ACTIVATE+NOCAREREFRESH,
  1381.       &Type_Gadget1,
  1382.       NULL,
  1383. !     "Pick a Character",
  1384.       NULL,
  1385.       NULL,
  1386.       5,5,
  1387. *** /tmp/da11888    Tue Jun  1 17:00:50 1993
  1388. --- sys/amiga/colorwin.c    Wed May 19 10:07:49 1993
  1389. ***************
  1390. *** 15,21 ****
  1391.   };
  1392.   
  1393.   struct IntuiText Col_IText1 = {
  1394. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1395.       13,1,    /* XY origin relative to container TopLeft */
  1396.       NULL,    /* font pointer or NULL for default */
  1397.       "Save",    /* pointer to text */
  1398. --- 15,21 ----
  1399.   };
  1400.   
  1401.   struct IntuiText Col_IText1 = {
  1402. !     7,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1403.       13,1,    /* XY origin relative to container TopLeft */
  1404.       NULL,    /* font pointer or NULL for default */
  1405.       "Save",    /* pointer to text */
  1406. ***************
  1407. *** 54,60 ****
  1408.   };
  1409.   
  1410.   struct IntuiText Col_IText2 = {
  1411. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1412.       17,1,    /* XY origin relative to container TopLeft */
  1413.       NULL,    /* font pointer or NULL for default */
  1414.       "Use",    /* pointer to text */
  1415. --- 54,60 ----
  1416.   };
  1417.   
  1418.   struct IntuiText Col_IText2 = {
  1419. !     7,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1420.       17,1,    /* XY origin relative to container TopLeft */
  1421.       NULL,    /* font pointer or NULL for default */
  1422.       "Use",    /* pointer to text */
  1423. ***************
  1424. *** 63,69 ****
  1425.   
  1426.   struct Gadget Col_Okay = {
  1427.       &Col_Save,    /* next gadget */
  1428. !     117,77,    /* origin XY of hit box relative to window TopLeft */
  1429.       58,11,    /* hit box width and height */
  1430.       NULL,    /* gadget flags */
  1431.       RELVERIFY,    /* activation flags */
  1432. --- 63,69 ----
  1433.   
  1434.   struct Gadget Col_Okay = {
  1435.       &Col_Save,    /* next gadget */
  1436. !     128,77,    /* origin XY of hit box relative to window TopLeft */
  1437.       58,11,    /* hit box width and height */
  1438.       NULL,    /* gadget flags */
  1439.       RELVERIFY,    /* activation flags */
  1440. ***************
  1441. *** 93,99 ****
  1442.   };
  1443.   
  1444.   struct IntuiText Col_IText3 = {
  1445. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1446.       6,1,    /* XY origin relative to container TopLeft */
  1447.       NULL,    /* font pointer or NULL for default */
  1448.       "Cancel",    /* pointer to text */
  1449. --- 93,99 ----
  1450.   };
  1451.   
  1452.   struct IntuiText Col_IText3 = {
  1453. !     7,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1454.       6,1,    /* XY origin relative to container TopLeft */
  1455.       NULL,    /* font pointer or NULL for default */
  1456.       "Cancel",    /* pointer to text */
  1457. ***************
  1458. *** 102,108 ****
  1459.   
  1460.   struct Gadget Col_Cancel = {
  1461.       &Col_Okay,    /* next gadget */
  1462. !     218,77,    /* origin XY of hit box relative to window TopLeft */
  1463.       58,11,    /* hit box width and height */
  1464.       NULL,    /* gadget flags */
  1465.       RELVERIFY,    /* activation flags */
  1466. --- 102,108 ----
  1467.   
  1468.   struct Gadget Col_Cancel = {
  1469.       &Col_Okay,    /* next gadget */
  1470. !     244,77,    /* origin XY of hit box relative to window TopLeft */
  1471.       58,11,    /* hit box width and height */
  1472.       NULL,    /* gadget flags */
  1473.       RELVERIFY,    /* activation flags */
  1474. ***************
  1475. *** 133,139 ****
  1476.   
  1477.   struct Gadget Col_RedPen = {
  1478.       &Col_Cancel,    /* next gadget */
  1479. !     7,12,    /* origin XY of hit box relative to window TopLeft */
  1480.       271,11,    /* hit box width and height */
  1481.       NULL,    /* gadget flags */
  1482.       RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE,    /* activation flags */
  1483. --- 133,139 ----
  1484.   
  1485.   struct Gadget Col_RedPen = {
  1486.       &Col_Cancel,    /* next gadget */
  1487. !     32,12,    /* origin XY of hit box relative to window TopLeft */
  1488.       271,11,    /* hit box width and height */
  1489.       NULL,    /* gadget flags */
  1490.       RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE,    /* activation flags */
  1491. ***************
  1492. *** 164,170 ****
  1493.   
  1494.   struct Gadget Col_GreenPen = {
  1495.       &Col_RedPen,    /* next gadget */
  1496. !     7,24,    /* origin XY of hit box relative to window TopLeft */
  1497.       271,11,    /* hit box width and height */
  1498.       NULL,    /* gadget flags */
  1499.       RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE,    /* activation flags */
  1500. --- 164,170 ----
  1501.   
  1502.   struct Gadget Col_GreenPen = {
  1503.       &Col_RedPen,    /* next gadget */
  1504. !     32,24,    /* origin XY of hit box relative to window TopLeft */
  1505.       271,11,    /* hit box width and height */
  1506.       NULL,    /* gadget flags */
  1507.       RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE,    /* activation flags */
  1508. ***************
  1509. *** 195,201 ****
  1510.   
  1511.   struct Gadget Col_BluePen = {
  1512.       &Col_GreenPen,    /* next gadget */
  1513. !     7,36,    /* origin XY of hit box relative to window TopLeft */
  1514.       271,11,    /* hit box width and height */
  1515.       NULL,    /* gadget flags */
  1516.       RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE,    /* activation flags */
  1517. --- 195,201 ----
  1518.   
  1519.   struct Gadget Col_BluePen = {
  1520.       &Col_GreenPen,    /* next gadget */
  1521. !     32,36,    /* origin XY of hit box relative to window TopLeft */
  1522.       271,11,    /* hit box width and height */
  1523.       NULL,    /* gadget flags */
  1524.       RELVERIFY+GADGIMMEDIATE+FOLLOWMOUSE,    /* activation flags */
  1525. ***************
  1526. *** 211,219 ****
  1527.   
  1528.   #define Col_GadgetList1 Col_BluePen
  1529.   
  1530.   struct NewWindow Col_NewWindowStructure1 = {
  1531.       175,45,    /* window XY origin relative to TopLeft of screen */
  1532. !     284,93,    /* window width and height */
  1533.       0,1,    /* detail and block pens */
  1534.       MOUSEBUTTONS+MOUSEMOVE+GADGETDOWN+GADGETUP+CLOSEWINDOW+VANILLAKEY+INTUITICKS,    /* IDCMP flags */
  1535.       WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH,    /* other window flags */
  1536. --- 211,245 ----
  1537.   
  1538.   #define Col_GadgetList1 Col_BluePen
  1539.   
  1540. + struct IntuiText Col_IText6 = {
  1541. +     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1542. +     17,38,    /* XY origin relative to container TopLeft */
  1543. +     NULL,    /* font pointer or NULL for default */
  1544. +     "B",    /* pointer to text */
  1545. +     NULL    /* next IntuiText structure */
  1546. + };
  1547. + struct IntuiText Col_IText5 = {
  1548. +     4,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1549. +     16,26,    /* XY origin relative to container TopLeft */
  1550. +     NULL,    /* font pointer or NULL for default */
  1551. +     "G",    /* pointer to text */
  1552. +     &Col_IText6    /* next IntuiText structure */
  1553. + };
  1554. + struct IntuiText Col_IText4 = {
  1555. +     7,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1556. +     16,14,    /* XY origin relative to container TopLeft */
  1557. +     NULL,    /* font pointer or NULL for default */
  1558. +     "R",    /* pointer to text */
  1559. +     &Col_IText5    /* next IntuiText structure */
  1560. + };
  1561. + #define Col_IntuiTextList1 Col_IText4
  1562.   struct NewWindow Col_NewWindowStructure1 = {
  1563.       175,45,    /* window XY origin relative to TopLeft of screen */
  1564. !     312,93,    /* window width and height */
  1565.       0,1,    /* detail and block pens */
  1566.       MOUSEBUTTONS+MOUSEMOVE+GADGETDOWN+GADGETUP+CLOSEWINDOW+VANILLAKEY+INTUITICKS,    /* IDCMP flags */
  1567.       WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH,    /* other window flags */
  1568. *** /tmp/da11912    Tue Jun  1 17:00:55 1993
  1569. --- sys/amiga/hackwb.hlp    Mon May  3 13:35:05 1993
  1570. ***************
  1571. *** 22,35 ****
  1572.    Top Scores  - View the score file.
  1573.    Recover     - Recover a game which was interrupted by a
  1574.                  GURU, Software Failure, or other disaster.
  1575. -  Edit Default Game - The file wbdefaults.def is always
  1576. -                loaded to provide the default ToolTypes
  1577. -                information for the NewGame icon (specifying
  1578. -                options, character name and character type).
  1579. -                The window opened by this selection allows
  1580. -                you to edit this information as well as
  1581. -                create new "games" by changing wbdefaults to
  1582. -                a different name and using save/load.
  1583.    Edit Configuration - The string data in nethack.cnf can be
  1584.                  edited saved and loaded using the requester
  1585.                  opened by this selection.
  1586. --- 22,27 ----
  1587. ***************
  1588. *** 40,51 ****
  1589.                  Game Configuration  gadget lets you change
  1590.                  the options that "Edit Default Game" let you
  1591.                  enter.  
  1592. !  Change Comment  - Lets you set a comment string for the
  1593. !                save file.
  1594. !  Set Options - takes you directly to the options editing
  1595. !                requester.
  1596. !  Copy Options - Creates a new icon with the same options as
  1597. !                the selected game.  The new Icon has no saved
  1598.                  game associated with it.
  1599.    Discard     - Deletes the icon and any saved game
  1600.                  associated with it.
  1601. --- 32,39 ----
  1602.                  Game Configuration  gadget lets you change
  1603.                  the options that "Edit Default Game" let you
  1604.                  enter.  
  1605. !  Copy Info   - Creates a new icon with the same tooltypes as
  1606. !                the selected icon.  The new icon has no saved
  1607.                  game associated with it.
  1608.    Discard     - Deletes the icon and any saved game
  1609.                  associated with it.
  1610. *** /tmp/da11928    Tue Jun  1 17:00:59 1993
  1611. --- sys/amiga/randwin.c    Tue May 11 10:08:45 1993
  1612. ***************
  1613. *** 15,21 ****
  1614.   };
  1615.   
  1616.   struct IntuiText Rnd_IText1 = {
  1617. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1618.       8,5,    /* XY origin relative to container TopLeft */
  1619.       NULL,    /* font pointer or NULL for default */
  1620.       "OKAY",    /* pointer to text */
  1621. --- 15,21 ----
  1622.   };
  1623.   
  1624.   struct IntuiText Rnd_IText1 = {
  1625. !     7,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1626.       8,5,    /* XY origin relative to container TopLeft */
  1627.       NULL,    /* font pointer or NULL for default */
  1628.       "OKAY",    /* pointer to text */
  1629. ***************
  1630. *** 41,47 ****
  1631.   #define Rnd_GadgetList1 Rnd_Gadget1
  1632.   
  1633.   struct IntuiText Rnd_IText6 = {
  1634. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1635.       198,29,    /* XY origin relative to container TopLeft */
  1636.       NULL,    /* font pointer or NULL for default */
  1637.       "a",    /* pointer to text */
  1638. --- 41,47 ----
  1639.   #define Rnd_GadgetList1 Rnd_Gadget1
  1640.   
  1641.   struct IntuiText Rnd_IText6 = {
  1642. !     6,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1643.       198,29,    /* XY origin relative to container TopLeft */
  1644.       NULL,    /* font pointer or NULL for default */
  1645.       "a",    /* pointer to text */
  1646. ***************
  1647. *** 57,63 ****
  1648.   };
  1649.   
  1650.   struct IntuiText Rnd_IText4 = {
  1651. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1652.       25,29,    /* XY origin relative to container TopLeft */
  1653.       NULL,    /* font pointer or NULL for default */
  1654.       "exciting game playing as",    /* pointer to text */
  1655. --- 57,63 ----
  1656.   };
  1657.   
  1658.   struct IntuiText Rnd_IText4 = {
  1659. !     6,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1660.       25,29,    /* XY origin relative to container TopLeft */
  1661.       NULL,    /* font pointer or NULL for default */
  1662.       "exciting game playing as",    /* pointer to text */
  1663. ***************
  1664. *** 65,71 ****
  1665.   };
  1666.   
  1667.   struct IntuiText Rnd_IText3 = {
  1668. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1669.       15,18,    /* XY origin relative to container TopLeft */
  1670.       NULL,    /* font pointer or NULL for default */
  1671.       "I think that you will have an",    /* pointer to text */
  1672. --- 65,71 ----
  1673.   };
  1674.   
  1675.   struct IntuiText Rnd_IText3 = {
  1676. !     6,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1677.       15,18,    /* XY origin relative to container TopLeft */
  1678.       NULL,    /* font pointer or NULL for default */
  1679.       "I think that you will have an",    /* pointer to text */
  1680. ***************
  1681. *** 73,82 ****
  1682.   };
  1683.   
  1684.   struct IntuiText Rnd_IText2 = {
  1685. !     3,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1686.       7,6,    /* XY origin relative to container TopLeft */
  1687.       NULL,    /* font pointer or NULL for default */
  1688. !     "You asked for a random Character,",    /* pointer to text */
  1689.       &Rnd_IText3    /* next IntuiText structure */
  1690.   };
  1691.   
  1692. --- 73,82 ----
  1693.   };
  1694.   
  1695.   struct IntuiText Rnd_IText2 = {
  1696. !     6,0,JAM2,    /* front and back text pens, drawmode and fill byte */
  1697.       7,6,    /* XY origin relative to container TopLeft */
  1698.       NULL,    /* font pointer or NULL for default */
  1699. !     "You asked for a random Character.",    /* pointer to text */
  1700.       &Rnd_IText3    /* next IntuiText structure */
  1701.   };
  1702.   
  1703. *** /tmp/da11976    Tue Jun  1 17:01:20 1993
  1704. --- sys/amiga/wbdata.c    Thu May  6 11:25:53 1993
  1705. ***************
  1706. *** 11,20 ****
  1707.   char *classes = "ABCEHKPRSTVW";
  1708.   struct TmpRas tmpras;
  1709.   
  1710. ! DEFAULTS  defgame =
  1711.   {
  1712. !     PL_RANDOM,
  1713. !     NULL, NULL,
  1714.   };
  1715.   
  1716.   OPTIONS curopts[] =
  1717. --- 11,45 ----
  1718.   char *classes = "ABCEHKPRSTVW";
  1719.   struct TmpRas tmpras;
  1720.   
  1721. ! UWORD __chip waitPointer[] =
  1722.   {
  1723. !     0x0000,0x0000,
  1724. !     0x0400,0x07c0,
  1725. !     0x0000,0x07c0,
  1726. !     0x0100,0x0380,
  1727. !     0x0000,0x07e0,
  1728. !     0x07c0,0x1ff8,
  1729. !     0x1ff0,0x3fec,
  1730. !     0x3ff8,0x7fde,
  1731. !     0x3ff8,0x7fbe,
  1732. !     0x7ffc,0xff7f,
  1733. !     0x7efc,0xffff,
  1734. !     0x7ffc,0xffff,
  1735. !     0x3ff8,0x7ffe,
  1736. !     0x3ff8,0x7ffe,
  1737. !     0x1ff0,0x3ffc,
  1738. !     0x07c0,0x1ff8,
  1739. !     0x0000,0x07e0,
  1740. !     0x0000,0x0000,
  1741.   };
  1742.   
  1743.   OPTIONS curopts[] =
  1744. ***************
  1745. *** 32,40 ****
  1746.       { 0, 1, "legacy", NULL, GADOLEGACY, },
  1747.       { 0, 0, "lit_corridor", NULL, GADOLITCORRIDOR, },
  1748.       { 0, 1, "news", NULL, GADONEWS, },
  1749. !     { 0, 0, "numberpad", NULL, GADONUMBERPAD, },
  1750.       { 0, 1, "null", NULL, GADONULL, },
  1751. !     { 0, 1, "pickup", NULL, GADOPICKUP, },
  1752.       { 0, 0, "rest_on_space", NULL, GADORESTONSPACE, },
  1753.       { 0, 1, "safepet", NULL, GADOSAFEPET, },
  1754.       { 0, 0, "showexp", NULL, GADOSHOWEXP, },
  1755. --- 57,65 ----
  1756.       { 0, 1, "legacy", NULL, GADOLEGACY, },
  1757.       { 0, 0, "lit_corridor", NULL, GADOLITCORRIDOR, },
  1758.       { 0, 1, "news", NULL, GADONEWS, },
  1759. !     { 0, 0, "number_pad", NULL, GADONUMBERPAD, },
  1760.       { 0, 1, "null", NULL, GADONULL, },
  1761. !     { 0, 1, "autopickup", NULL, GADOPICKUP, },
  1762.       { 0, 0, "rest_on_space", NULL, GADORESTONSPACE, },
  1763.       { 0, 1, "safepet", NULL, GADOSAFEPET, },
  1764.       { 0, 0, "showexp", NULL, GADOSHOWEXP, },
  1765. ***************
  1766. *** 46,52 ****
  1767.       { 0, 0, "time", NULL, GADOTIME, },
  1768.       { 0, 1, "tombstone", NULL, GADOTOMBSTONE, },
  1769.       { 0, 1, "verbose", NULL, GADOVERBOSE, },
  1770. !     { 0, 0, "asksave", NULL, GADOASKSAVE, },
  1771.       { 0, 0, "packorder", "", GADOPACKORDER, },
  1772.       { 0, 0, "dogname", "", GADODOGNAME, },
  1773.       { 0, 0, "catname", "", GADOCATNAME, },
  1774. --- 71,84 ----
  1775.       { 0, 0, "time", NULL, GADOTIME, },
  1776.       { 0, 1, "tombstone", NULL, GADOTOMBSTONE, },
  1777.       { 0, 1, "verbose", NULL, GADOVERBOSE, },
  1778. !     { 0, 0, "asksavedisk", NULL, GADOASKSAVE, },
  1779. !     { 0, 0, "name", "", GADONAME, },
  1780. !     { 0, 0, "score", "", GADOSCORE, },
  1781. !     { 0, 0, "palette", "", GADOPALETTE, },
  1782. !     { 0, 0, "windowtype", "", GADOWINDOWTYPE, },
  1783. !     { 0, 0, "msghistory", "", GADOMSGHISTORY, },
  1784. !     { 0, 0, "pickup_types", "", GADOPICKUPTYPES, },
  1785. !     { 0, 0, "pettype", "", GADOPETTYPE, },
  1786.       { 0, 0, "packorder", "", GADOPACKORDER, },
  1787.       { 0, 0, "dogname", "", GADODOGNAME, },
  1788.       { 0, 0, "catname", "", GADOCATNAME, },
  1789. ***************
  1790. *** 102,107 ****
  1791. --- 134,174 ----
  1792.   
  1793.   };
  1794.   
  1795. + USHORT __chip tall_up_renderdata[] = {
  1796. + /* Plane 0 */
  1797. +    0xfff0,
  1798. +    0x8700,
  1799. +    0x8700,
  1800. +    0x8700,
  1801. +    0x8f80,
  1802. +    0x8f80,
  1803. +    0xbfe0,
  1804. +    0xbfe0,
  1805. +    0xbfe0,
  1806. +    0x8000,
  1807. + /* Plane 1 */
  1808. +    0x0008,
  1809. +    0x0708,
  1810. +    0x0708,
  1811. +    0x0708,
  1812. +    0x0f88,
  1813. +    0x0f88,
  1814. +    0x3fe8,
  1815. +    0x3fe8,
  1816. +    0x3fe8,
  1817. +    0x7ff8,
  1818. + };
  1819. + struct Image tall_up_renderimage = {
  1820. +    0, 0,
  1821. +    13, 10, 2,
  1822. +    tall_up_renderdata,
  1823. +    3,0,
  1824. +    NULL,
  1825. + };
  1826.   struct Image up_renderimage = {
  1827.      0, 0,
  1828.      13, 5, 2,
  1829. ***************
  1830. *** 110,120 ****
  1831.      NULL,
  1832.   };
  1833.   
  1834.   USHORT __chip up_selectdata[] = {
  1835.   /* Plane 0 */
  1836. !    0x0008, 0x78f8, 0x7078, 0x4018, 0xfff8,
  1837.   /* Plane 1 */
  1838. !    0xfff0, 0xf8f0, 0xf070, 0xc010, 0x0000,
  1839.   };
  1840.   
  1841.   struct Image up_selectimage = {
  1842. --- 177,220 ----
  1843.      NULL,
  1844.   };
  1845.   
  1846. + USHORT __chip tall_up_selectdata[] = {
  1847. + /* Plane 0 */
  1848. +    0x0008,
  1849. +    0x78f8,
  1850. +    0x78f8,
  1851. +    0x78f8,
  1852. +    0x7078,
  1853. +    0x7078,
  1854. +    0x4018,
  1855. +    0x4018,
  1856. +    0x4018,
  1857. +    0xfff8,
  1858. + /* Plane 1 */
  1859. +    0xfff0,
  1860. +    0xf8f0,
  1861. +    0xf8f0,
  1862. +    0xf8f0,
  1863. +    0xf070,
  1864. +    0xf070,
  1865. +    0xc010,
  1866. +    0xc010,
  1867. +    0xc010,
  1868. +    0x0000,
  1869. + };
  1870.   USHORT __chip up_selectdata[] = {
  1871.   /* Plane 0 */
  1872. !    0x0008,
  1873. !    0x78f8,
  1874. !    0x7078,
  1875. !    0x4018,
  1876. !    0xfff8,
  1877.   /* Plane 1 */
  1878. !    0xfff0,
  1879. !    0xf8f0,
  1880. !    0xf070,
  1881. !    0xc010,
  1882. !    0x0000,
  1883.   };
  1884.   
  1885.   struct Image up_selectimage = {
  1886. ***************
  1887. *** 125,130 ****
  1888. --- 225,238 ----
  1889.      NULL,
  1890.   };
  1891.   
  1892. + struct Image tall_up_selectimage = {
  1893. +    0, 0,
  1894. +    13, 10, 2,
  1895. +    tall_up_selectdata,
  1896. +    3,0,
  1897. +    NULL,
  1898. + };
  1899.   USHORT __chip down_renderdata[] = {
  1900.   /* Plane 0 */
  1901.      0xfff0,
  1902. ***************
  1903. *** 142,147 ****
  1904. --- 250,289 ----
  1905.   
  1906.   };
  1907.   
  1908. + USHORT __chip tall_down_renderdata[] = {
  1909. + /* Plane 0 */
  1910. +    0xfff0,
  1911. +    0xbfe0,
  1912. +    0xbfe0,
  1913. +    0xbfe0,
  1914. +    0x8f80,
  1915. +    0x8f80,
  1916. +    0x8700,
  1917. +    0x8700,
  1918. +    0x8700,
  1919. +    0x8000,
  1920. + /* Plane 1 */
  1921. +    0x0008,
  1922. +    0x3fe8,
  1923. +    0x3fe8,
  1924. +    0x3fe8,
  1925. +    0x0f88,
  1926. +    0x0f88,
  1927. +    0x0708,
  1928. +    0x0708,
  1929. +    0x0708,
  1930. +    0x7ff8,
  1931. + };
  1932. + struct Image tall_down_renderimage = {
  1933. +    0, 0,
  1934. +    13, 10, 2,
  1935. +    tall_down_renderdata,
  1936. +    3,0,
  1937. +    NULL,
  1938. + };
  1939.   struct Image down_renderimage = {
  1940.      0, 0,
  1941.      13, 5, 2,
  1942. ***************
  1943. *** 152,160 ****
  1944.   
  1945.   USHORT __chip down_selectdata[] = {
  1946.   /* Plane 0 */
  1947. !    0x0008, 0x4018, 0x7078, 0x78f8, 0x7ff8,
  1948.   /* Plane 1 */
  1949. !    0xfff0, 0xc010, 0xf070, 0xf8f0, 0x8000,
  1950.   };
  1951.   
  1952.   struct Image down_selectimage = {
  1953. --- 294,343 ----
  1954.   
  1955.   USHORT __chip down_selectdata[] = {
  1956.   /* Plane 0 */
  1957. !    0x0008,
  1958. !    0x4018,
  1959. !    0x7078,
  1960. !    0x78f8,
  1961. !    0x7ff8,
  1962.   /* Plane 1 */
  1963. !    0xfff0,
  1964. !    0xc010,
  1965. !    0xf070,
  1966. !    0xf8f0,
  1967. !    0x8000,
  1968. ! };
  1969. ! USHORT __chip tall_down_selectdata[] = {
  1970. ! /* Plane 0 */
  1971. !    0x0008,
  1972. !    0x4018,
  1973. !    0x4018,
  1974. !    0x4018,
  1975. !    0x7078,
  1976. !    0x7078,
  1977. !    0x78f8,
  1978. !    0x78f8,
  1979. !    0x78f8,
  1980. !    0x7ff8,
  1981. ! /* Plane 1 */
  1982. !    0xfff0,
  1983. !    0xc010,
  1984. !    0xc010,
  1985. !    0xc010,
  1986. !    0xf070,
  1987. !    0xf070,
  1988. !    0xf8f0,
  1989. !    0xf8f0,
  1990. !    0xf8f0,
  1991. !    0x8000,
  1992. ! };
  1993. ! struct Image tall_down_selectimage = {
  1994. !    0, 0,
  1995. !    13, 10, 2,
  1996. !    tall_down_selectdata,
  1997. !    3,0,
  1998. !    NULL,
  1999.   };
  2000.   
  2001.   struct Image down_selectimage = {
  2002. *** /tmp/da11984    Tue Jun  1 17:01:22 1993
  2003. --- sys/amiga/wbdefs.h    Thu May  6 11:25:57 1993
  2004. ***************
  2005. *** 43,60 ****
  2006.   #define ITEM_ABOUT    1
  2007.   #define ITEM_SCORES    2
  2008.   #define ITEM_RECOVER    3
  2009. ! /*#define ITEM_EDNEW        4*/
  2010. ! #define ITEM_EDDEF    4
  2011. ! #define ITEM_CONFIG    5
  2012. ! #define ITEM_QUIT    6
  2013.   
  2014.   #define MENU_GAME    1
  2015.   #define ITEM_INFO    0
  2016. ! #define ITEM_SETCOMMENT    1
  2017. ! #define ITEM_SETOPT    2
  2018. ! #define ITEM_COPYOPT    3
  2019. ! #define ITEM_DISCARD    4
  2020. ! #define ITEM_RENAME    5
  2021.   
  2022.   #define GADSCROLL    1   /* The scroll bar */
  2023.   #define GADNEWGAME    2   /* New Game requested */
  2024. --- 43,56 ----
  2025.   #define ITEM_ABOUT    1
  2026.   #define ITEM_SCORES    2
  2027.   #define ITEM_RECOVER    3
  2028. ! #define ITEM_CONFIG    4
  2029. ! #define ITEM_QUIT    5
  2030.   
  2031.   #define MENU_GAME    1
  2032.   #define ITEM_INFO    0
  2033. ! #define ITEM_COPYOPT    1
  2034. ! #define ITEM_DISCARD    2
  2035. ! #define ITEM_RENAME    3
  2036.   
  2037.   #define GADSCROLL    1   /* The scroll bar */
  2038.   #define GADNEWGAME    2   /* New Game requested */
  2039. ***************
  2040. *** 72,79 ****
  2041.   #define GADOUTFILE    10
  2042.   #define GADCATNAME    11
  2043.   #define GADDOGNAME    12
  2044. - #define GADDEFLOAD    13
  2045. - #define GADDEFSAVE    14
  2046.   
  2047.   #define GADSTRSAVE    15
  2048.   #define GADSTRLEVELS    16
  2049. --- 68,73 ----
  2050. ***************
  2051. *** 80,86 ****
  2052.   #define GADSTRPATH    17
  2053.   #define GADSTRPENS    18
  2054.   #define GADSTRHACKDIR    19
  2055. - #define GADEDOPTIONS    20
  2056.   #define GADCONFSAVE    21
  2057.   #define GADCONFLOAD    22
  2058.   #define GADCONFNAME    23
  2059. --- 74,79 ----
  2060. ***************
  2061. *** 93,99 ****
  2062.   #define GADHELPOKAY    30
  2063.   #define GADHELPFRWD    31
  2064.   #define GADHELPBKWD    32
  2065. ! #define GADEDDEF    33
  2066.   
  2067.   #define GADRESTDIR    34
  2068.   #define GADRESTOLD    35
  2069. --- 86,92 ----
  2070.   #define GADHELPOKAY    30
  2071.   #define GADHELPFRWD    31
  2072.   #define GADHELPBKWD    32
  2073. ! #define GADEDITOPTS    33
  2074.   
  2075.   #define GADRESTDIR    34
  2076.   #define GADRESTOLD    35
  2077. ***************
  2078. *** 100,105 ****
  2079. --- 93,102 ----
  2080.   #define GADRESTNEW    36
  2081.   #define GADRESTCAN    37
  2082.   #define GADRESTOKAY    38
  2083. + #define GADSAVEINFO    39
  2084. + #define GADUSEINFO    40
  2085. + #define GADQUITINFO    41
  2086. + #define GADPLNAME    42
  2087.   
  2088.   /*
  2089.    *  Option gadgets GadgetID's
  2090. ***************
  2091. *** 139,144 ****
  2092. --- 136,148 ----
  2093.   #define GADOLITCORRIDOR    133
  2094.   #define GADOSHOWEXP    134
  2095.   #define GADOSHOWSCORE    135
  2096. + #define    GADONAME    136
  2097. + #define    GADOSCORE    137
  2098. + #define    GADOPALETTE    138
  2099. + #define    GADOWINDOWTYPE    139
  2100. + #define    GADOMSGHISTORY    140
  2101. + #define    GADOPICKUPTYPES    141
  2102. + #define    GADOPETTYPE    142
  2103.   
  2104.   /* Definition of workbench size layout */
  2105.   
  2106. ***************
  2107. *** 165,176 ****
  2108.   #define RstOld        (Sbuff(&Rst_RestOld))
  2109.   #define RstNew        (Sbuff(&Rst_RestNew))
  2110.   
  2111. - #define DefPlayerName    (Sbuff(&Defs_PlayerName))
  2112. - #define DefOutFile    (Sbuff(&Defs_DefaultName))
  2113.   #define StrString    (Sbuff(&Str_String))
  2114.   
  2115.   #define StrTools    (Sbuff(&Info_ToolTypes))
  2116.   
  2117.   #define GAMEIMAGE    "HackExe:NetHack"
  2118.   #define GAMESTACK    50000
  2119. --- 169,178 ----
  2120.   #define RstOld        (Sbuff(&Rst_RestOld))
  2121.   #define RstNew        (Sbuff(&Rst_RestNew))
  2122.   
  2123.   #define StrString    (Sbuff(&Str_String))
  2124.   
  2125.   #define StrTools    (Sbuff(&Info_ToolTypes))
  2126. + #define StrPlayer    (Sbuff(&Info_Player))
  2127.   
  2128.   #define GAMEIMAGE    "HackExe:NetHack"
  2129.   #define GAMESTACK    50000
  2130. ***************
  2131. *** 210,215 ****
  2132.   
  2133.   #define NO_FLASH    0
  2134.   #define FLASH        1
  2135. - #define GAME_FROM_DEFAULT   0
  2136. - #define GAME_FROM_INFO      1
  2137. --- 212,214 ----
  2138. *** /tmp/da11992    Tue Jun  1 17:01:24 1993
  2139. --- sys/amiga/wbprotos.h    Mon May 24 11:12:34 1993
  2140. ***************
  2141. *** 23,29 ****
  2142.   void getline P(( FILE *fp , long *offarr , int which , char *buf , int size ));
  2143.   void help_requester P(( char *file ));
  2144.   void do_closewindow P(( void ));
  2145. ! void do_menu P(( int mcode ));
  2146.   void menu_discard P(( void ));
  2147.   void menu_copyopt P(( void ));
  2148.   void menu_rename P(( void ));
  2149. --- 23,29 ----
  2150.   void getline P(( FILE *fp , long *offarr , int which , char *buf , int size ));
  2151.   void help_requester P(( char *file ));
  2152.   void do_closewindow P(( void ));
  2153. ! void do_menu P(( struct Menu *mptr, int mcode ));
  2154.   void menu_discard P(( void ));
  2155.   void menu_copyopt P(( void ));
  2156.   void menu_rename P(( void ));
  2157. ***************
  2158. *** 34,39 ****
  2159. --- 34,40 ----
  2160.   void SafeCloseWindow P(( struct Window *window ));
  2161.   GPTR AllocGITEM P(( void ));
  2162.   void FreeGITEM P(( GPTR gptr ));
  2163. + void RemoveGITEM P(( GPTR ));
  2164.   struct DiskObject *AllocDObj P(( char *str ));
  2165.   void FreeDObj P(( struct DiskObject *doptr ));
  2166.   void LoadIcons P(( void ));
  2167. ***************
  2168. *** 45,51 ****
  2169.   void do_buttons P(( struct IntuiMessage *imsg ));
  2170.   void do_gadgetdown P(( struct IntuiMessage *imsg ));
  2171.   int ask_request P(( char *str ));
  2172. ! void menu_setopt P(( void ));
  2173.   void menu_info P(( void ));
  2174.   int IsEditEntry P(( char *, GPTR ));
  2175.   void menu_comment P(( void ));
  2176. --- 46,52 ----
  2177.   void do_buttons P(( struct IntuiMessage *imsg ));
  2178.   void do_gadgetdown P(( struct IntuiMessage *imsg ));
  2179.   int ask_request P(( char *str ));
  2180. ! void setopt P(( GPTR ));
  2181.   void menu_info P(( void ));
  2182.   int IsEditEntry P(( char *, GPTR ));
  2183.   void menu_comment P(( void ));
  2184. ***************
  2185. *** 75,81 ****
  2186.   GPTR NeedGame P(( void ));
  2187.   void ChgGameItems P(( struct Menu *menup , int enable ));
  2188.   void ChgNewGameItems P(( struct Menu *menup , int enable ));
  2189. ! int EditOptions P(( OPTR optr ));
  2190.   struct Gadget *FindGadget P(( struct Window *window ,
  2191.       struct NewWindow *newwindow , int id ));
  2192.   void ZapOptions P(( OPTR optr ));
  2193. --- 76,82 ----
  2194.   GPTR NeedGame P(( void ));
  2195.   void ChgGameItems P(( struct Menu *menup , int enable ));
  2196.   void ChgNewGameItems P(( struct Menu *menup , int enable ));
  2197. ! int EditOptions P(( OPTR optr, GPTR gptr ));
  2198.   struct Gadget *FindGadget P(( struct Window *window ,
  2199.       struct NewWindow *newwindow , int id ));
  2200.   void ZapOptions P(( OPTR optr ));
  2201. *** /tmp/da12000    Tue Jun  1 17:01:26 1993
  2202. --- sys/amiga/wbstruct.h    Mon May  3 13:33:32 1993
  2203. ***************
  2204. *** 42,51 ****
  2205.                    * options value.
  2206.                    */
  2207.   } OPTIONS, *OPTR;
  2208. - typedef struct DEFAULTS
  2209. - {
  2210. -     int pltype;            /* Character class */
  2211. -     char *plname;        /* Players name */
  2212. -     char *options;        /* Preferred options string */
  2213. - } DEFAULTS;
  2214. --- 42,44 ----
  2215. *** /tmp/da12032    Tue Jun  1 17:01:51 1993
  2216. --- sys/amiga/winami.p    Tue Apr 13 15:41:59 1993
  2217. ***************
  2218. *** 40,46 ****
  2219.   void FDECL(DisplayData, (int  , int  , int ));
  2220.   void FDECL(SetPropInfo, (struct Window * , struct Gadget * , long  , long  , long ));
  2221.   void FDECL(kill_nhwindows, (int ));
  2222. ! void FDECL(amii_cl_end, (struct WinDesc * , int ));
  2223.   void FDECL(cursor_off, (winid ));
  2224.   void FDECL(cursor_on, (winid ));
  2225.   void NDECL(amii_getret );
  2226. --- 40,46 ----
  2227.   void FDECL(DisplayData, (int  , int  , int ));
  2228.   void FDECL(SetPropInfo, (struct Window * , struct Gadget * , long  , long  , long ));
  2229.   void FDECL(kill_nhwindows, (int ));
  2230. ! void FDECL(amii_cl_end, (struct amii_WinDesc * , int ));
  2231.   void FDECL(cursor_off, (winid ));
  2232.   void FDECL(cursor_on, (winid ));
  2233.   void NDECL(amii_getret );
  2234. ***************
  2235. *** 55,57 ****
  2236. --- 55,58 ----
  2237.   void NDECL( amii_setpens );
  2238.   void FDECL( SetBorder, (struct Gadget *) );
  2239.   void NDECL( port_help );
  2240. + void FDECL( dismiss_nhwindow, (winid) );
  2241.