[Scummvm-cvs-logs] SF.net SVN: scummvm: [22162] scummvm/trunk/engines/lure/diassembly

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Tue Apr 25 15:39:01 CEST 2006


Revision: 22162
Author:   dreammaster
Date:     2006-04-25 15:38:00 -0700 (Tue, 25 Apr 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=22162&view=rev

Log Message:
-----------
Added disassembly of door close support routines and other miscellaneous action support code

Modified Paths:
--------------
    scummvm/trunk/engines/lure/diassembly/LURE.ASM
    scummvm/trunk/engines/lure/diassembly/Lure_notes.txt
Modified: scummvm/trunk/engines/lure/diassembly/LURE.ASM
===================================================================
--- scummvm/trunk/engines/lure/diassembly/LURE.ASM	2006-04-25 22:29:32 UTC (rev 22161)
+++ scummvm/trunk/engines/lure/diassembly/LURE.ASM	2006-04-25 22:38:00 UTC (rev 22162)
@@ -145,6 +145,7 @@
 ANIM_HOTSPOT_ID           equ  1Bh
 ANIM_LAYER1_SKIP          equ  1Dh
 ANIM_VOICE_CHAR_ID        equ  1Eh
+ANIM_V20                  equ  20h
 ANIM_CHAR_RECT_Y          equ  22h
 ANIM_VOICE_CTR            equ  24h
 ANIM_DIRECTION            equ  26h
@@ -182,7 +183,7 @@
 HS_MOVEMENT_OFFSET        equ  24h
 HS_STEP_CTR               equ  26h
 HS_FRAME_OFFSET           equ  28h
-HS_FRAME_NUM              equ  2Ah
+HS_ACTION_CTR             equ  2Ah
 HS_V2B                    equ  2Bh
 HS_HOTSPOT_SCRIPT_ID      equ  2Dh
 HS_USE_HOTSPOT_ID         equ  2Fh
@@ -351,6 +352,11 @@
 PATHFIND_X_CHANGE2      equ  18h
 PATHFIND_Y_CHANGE2      equ  1Ah
 
+WALKTO_RECORD_SIZE      equ  6
+WALKTO_HOTSPOT_ID       equ  0
+WALKTO_X                equ  2
+WALKTO_Y                equ  4
+
                                 ; The following equates show data references outside the range of the program.
 
      = 0000                     data_1e         equ     0                       ; (0000:0000=30h)
@@ -386,7 +392,7 @@
      = 2800                     data_37e        equ     2800h                   ;*(0000:2800=1F12h)
      = 2B01                     data_38e        equ     2B01h                   ;*(0000:2B01=663Eh)
 
-     = 30D4                     data_40e        equ     30D4h                   ;*(0000:30D4=6AEh)
+
      = 30D6                     data_41e        equ     30D6h                   ;*(0000:30D6=81h)
      = 31E4                     data_42e        equ     31E4h                   ;*(0000:31E4=830Fh)
      = 3350                     data_43e        equ     3350h                   ;*(0000:3350=0C033h)
@@ -421,7 +427,7 @@
      = 31E4                     data_70e        equ     31E4h                   ;*(0874:31E4=2E11h)
      = 3350                     data_71e        equ     3350h                   ;*(0874:3350=9A90h)
      = 3356                     data_72e        equ     3356h                   ;*(0874:3356=289Ah)
-     = 3358                     data_73e        equ     3358h                   ;*(0874:3358=5E69h)
+
      = 335A                     data_74e        equ     335Ah                   ;*(0874:335A=0C70Fh)
      = 335E                     data_75e        equ     335Eh                   ;*(0874:335E=0FF47h)
      = 3360                     data_76e        equ     3360h                   ;*(0874:3360=0FFh)
@@ -436,8 +442,8 @@
      = 3379                     data_85e        equ     3379h                   ;*(0874:3379=0C722h)
      = 337B                     data_86e        equ     337Bh                   ;*(0874:337B=5806h)
      = 337E                     data_88e        equ     337Eh                   ;*(0874:337E=0)
-     = 3380                     data_89e        equ     3380h                   ;*(0874:3380=6F6h)
 
+
      = 33DC                     data_91e        equ     33DCh                   ;*(0874:33DC=11A2h)
      = 33DE                     data_92e        equ     33DEh                   ;*(0874:33DE=0A21Dh)
      = 33E0                     data_93e        equ     33E0h                   ;*(0874:33E0=0F2h)
@@ -1456,12 +1462,14 @@
                                                                                 ;  allocate memory, bx=bytes/16
 273F:07ED              vga_no_implementation    retn
 
-                                ;\xDF\xDF\xDF\xDF External Entry into Subroutine \xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
+                                ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
+                                ;                              SUBROUTINE
                                 ;
                                 ;         Called from:   273F:6614
+                                ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
-273F:07EE                       sub_11:
-273F:07EE  C6 06 38B0 01                        mov     byte ptr ds:[38B0h],1   ; (273F:38B0=0EAh)
+                                     sub_11     proc    near
+273F:07EE  C6 06 38B0 01                        mov     data_781, 1
 273F:07F3  80 0E 11D0 01                        or      menubar_state, 1   ; (273F:11D0=56h)
 273F:07F8  FF 16 075E                           call    [show_cursor_proc]
 273F:07FC  8C DD                                mov     bp,ds
@@ -1493,7 +1501,7 @@
 273F:0853  26: A3 336A                          mov     es:data_79e,ax          ; (0874:336A=7500h)
 273F:0857  A1 0748                              mov     ax, screen_width
 273F:085A  26: A3 3374                          mov     es:data_83e,ax          ; (0874:3374=1EA1h)
-273F:085E  A1 076A                              mov     ax, display_character_proc 
+273F:085E  A1 076A                              mov     ax, display_character_proc
 273F:0861  26: A3 336C                          mov     es:data_80e,ax          ; (0874:336C=9A07h)
 273F:0865  A1 074A                              mov     ax, char_width
 273F:0868  26: A3 336E                          mov     es:data_81e,ax          ; (0874:336E=8090h)
@@ -1509,7 +1517,8 @@
 273F:0888  06                                   push    es
 273F:0889  1F                                   pop     ds
 273F:088A  C3                                   retn
-
+                                     sub_11     endp
+                                     
                                 ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
                                 ;                              JUMP POINT
                                 ;
@@ -1517,7 +1526,7 @@
 
 273F:088B \xFA8E C5         action_look_2:         mov     es,bp
 273F:088D \xFABF 65F3                              mov     di, offset player_action_support_record
-273F:0890 \xFABE 3382                              mov     si, offset data_770
+273F:0890 \xFABE 3382                              mov     si, offset data_3382
 273F:0893  F7 04 FFFF                           test    word ptr [si],0FFFFh
 273F:0897  78 37                                js      loc_65                  ; Jump if sign=1
 273F:0899                       loc_63:                                         ;  xref 273F:089F
@@ -1534,7 +1543,7 @@
 273F:08AB  A3 1924                              mov     hotspot_id, ax
 273F:08AE \xFABE 6CEF                              mov     si, offset player_hotspot_rec
 273F:08B1  89 44 52                             mov     [si+HS_DEST_HOTSPOT],ax
-273F:08B4  88 44 2A                             mov     [si+2Ah],al
+273F:08B4  88 44 2A                             mov     [si+HS_ACTION_CTR],al
 273F:08B7  88 44 FF                             mov     [si-1],al
 273F:08BA  8B DE                                mov     bx,si
 273F:08BC  03 5C 61                             add     bx, [si+HS_ACTION_OFFSET]
@@ -2390,7 +2399,7 @@
 
 273F:0DAF                       sub_34          proc    near
 273F:0DAF  C7 06 31E4 0000                      mov     word ptr ds:[31E4h],0   ; (273F:31E4=0E4h)
-273F:0DB5  C7 06 30D4 0000                      mov     word ptr ds:[30D4h],0   ; (273F:30D4=0A311h)
+273F:0DB5  C7 06 30D4 0000                      mov     hotspot_display_buffer, 0
 273F:0DBB  2D 0001                              sub     ax,1
 273F:0DBE  33 DB                                xor     bx,bx                   ; Zero register
 273F:0DC0  3C 10                                cmp     al,10h
@@ -3164,7 +3173,7 @@
 273F:1334 \xFABE 6CEF                              mov     si, offset player_hotspot_rec
 273F:1337  33 C0                                xor     ax,ax                   ; Zero register
 273F:1339  89 44 52                             mov     [si+HS_DEST_HOTSPOT],ax
-273F:133C  88 44 2A                             mov     [si+2Ah],al
+273F:133C  88 44 2A                             mov     [si+HS_ACTION_CTR], al
 273F:133F  89 44 42                             mov     [si+42h],ax
 273F:1342  88 44 44                             mov     [si+44h],al
 273F:1345  8B DE                                mov     bx,si
@@ -3252,7 +3261,7 @@
 273F:1411  89 7F 01                             mov     [bx+1],di
 273F:1414  89 05                                mov     [di],ax
 273F:1416  88 44 FF                             mov     [si-1],al
-273F:1419  88 44 2A                             mov     [si+2Ah],al
+273F:1419  88 44 2A                             mov     [si+HS_ACTION_CTR],al
 273F:141C  89 44 42                             mov     [si+42h],ax
 273F:141F  88 44 44                             mov     [si+44h],al
 273F:1422  88 44 FF                             mov     [si-1],al
@@ -10458,8 +10467,8 @@
 273F:43D0  75 03                                jnz     loc_846                 ; Is width < 8 pixels?
 273F:43D2  BA 0001                              mov     dx, 1                   ; Yes, default to 1 (8 pixels)
 273F:43D5                       loc_846:
-273F:43D5  2D 0010                              sub     ax, 10h                 ; Is left <= 128
-273F:43D8  73 0A                                jnc     loc_847                 ; Jump if carry=0
+273F:43D5  2D 0010                              sub     ax, 10h                 ; Is left < 0
+273F:43D8  73 0A                                jnc     loc_847                 ; Jump if not
 273F:43DA  F7 D8                                neg     ax
 273F:43DC  2B D0                                sub     dx, ax
 273F:43DE  72 2D                                jc      loc_850                 ; Exit if offscreen to left
@@ -10468,7 +10477,7 @@
 273F:43E4                       loc_847:
 273F:43E4  8B E8                                mov     bp, ax
 273F:43E6  03 EA                                add     bp, dx                  ; Add width
-273F:43E8  83 ED 29                             sub     bp, 29h
+273F:43E8  83 ED 29                             sub     bp, ROOM_PATHS_WIDTH+1
 273F:43EB  72 09                                jc      loc_848                 ; Jump if on screen
 273F:43ED  83 C5 01                             add     bp, 1
 273F:43F0  2B D5                                sub     dx, bp
@@ -10721,7 +10730,7 @@
 273F:4552  C6 07 02                             mov     byte ptr [bx], CHAR_ACTION_DISPATCH_ACTION
 273F:4555  8B 44 06                             mov     ax, [si+HS_ROOM_NUM]
 273F:4558  89 47 03                             mov     [bx+CURRENT_ACTION_ROOM_NUM], ax
-273F:455B  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:455B  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:455F  C3                                   retn
                              seq_method_48      endp
 
@@ -10831,9 +10840,9 @@
 273F:45D7  8B 44 06                             mov     ax, [si+HS_ROOM_NUM]    ; Is object in same room
 273F:45DA  3B 47 06                             cmp     ax, [bx+HS_ROOM_NUM]    ;  as the character?
 273F:45DD  75 72                                jne     loc_884                 ; Jump if not
-273F:45DF  F6 44 2A FF                          test    byte ptr [si+HS_FRAME_NUM], 0FFh
+273F:45DF  F6 44 2A FF                          test    byte ptr [si+HS_ACTION_CTR], 0FFh
 273F:45E3  75 46                                jnz     loc_883                 ; Jump if not zero
-273F:45E5  C6 44 2A 01                          mov     byte ptr [si+HS_FRAME_NUM], 1
+273F:45E5  C6 44 2A 01                          mov     byte ptr [si+HS_ACTION_CTR], 1
 273F:45E9  81 3E BA1B 0408                      cmp     active_hotspot_id, 408h
 273F:45EF  72 09                                jb      loc_881                 ; Jump if below
 273F:45F1                       loc_880:                                        ;  xref 273F:4606, 463B, 4641, 4647
@@ -10854,7 +10863,7 @@
 273F:4610  BB 0005                              mov     bx,5
 273F:4613  E8 1D8C                              call    display_message_dialog_2
 273F:4616  5B                                   pop     bx
-273F:4617  C7 44 42 0004                        mov     word ptr [si+42h],4
+273F:4617  C7 44 42 0004                        mov     word ptr [si+HS_V42],4
 273F:461C                       loc_882:                                        ;  xref 273F:460D
 273F:461C  C7 47 2B 002A                        mov     word ptr [bx+HS_V2B], 2Ah
 273F:4621  8B 45 1B                             mov     ax, [di+ANIM_HOTSPOT_ID]
@@ -10862,8 +10871,8 @@
 273F:4627  B8 0003                              mov     ax,3
 273F:462A  C3                                   retn
 273F:462B                       loc_883:                                        ;  xref 273F:45E3
-273F:462B  80 44 2A 01                          add     byte ptr [si+HS_FRAME_NUM], 1
-273F:462F  80 7C 2A 06                          cmp     byte ptr [si+HS_FRAME_NUM], 6
+273F:462B  80 44 2A 01                          add     byte ptr [si+HS_ACTION_CTR], 1
+273F:462F  80 7C 2A 06                          cmp     byte ptr [si+HS_ACTION_CTR], 6
 273F:4633  73 41                                jae     loc_887                 ; Jump if above or =
 273F:4635  81 3E BA1B 0408                      cmp     active_hotspot_id, 408h
 273F:463B  73 B4                                jae     loc_880                 ; Jump if above or =
@@ -10875,18 +10884,18 @@
 273F:464D  75 17                                jne     loc_886                 ; Jump if not equal
 273F:464F  EB A0                                jmp     short loc_880           ; (45F1)
 273F:4651                       loc_884:                                        ;  xref 273F:45DD
-273F:4651  F6 44 2A FF                          test    byte ptr [si+HS_FRAME_NUM],0FFh  ; char has frame set?
+273F:4651  F6 44 2A FF                          test    byte ptr [si+HS_ACTION_CTR],0FFh  
 273F:4655  75 07                                jnz     loc_885                 ; Jump if yes
 273F:4657  33 C0                                xor     ax, ax                  ; Zero register
 273F:4659  53                                   push    bx
 273F:465A  E8 1D54                              call    display_message_dialog_3
 273F:465D  5B                                   pop     bx
 273F:465E                       loc_885:
-273F:465E  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:465E  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:4662  B8 0001                              mov     ax, 1
 273F:4665  C3                                   retn
 273F:4666                       loc_886:                                        ;  xref 273F:464D
-273F:4666  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:4666  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:466A  B8 000E                              mov     ax,0Eh
 273F:466D  53                                   push    bx
 273F:466E  E8 1D40                              call    display_message_dialog_3
@@ -10894,7 +10903,7 @@
 273F:4672  B8 0002                              mov     ax,2
 273F:4675  C3                                   retn
 273F:4676                       loc_887:                                        ;  xref 273F:4633
-273F:4676  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:4676  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:467A  B8 000D                              mov     ax, 0Dh
 273F:467D  53                                   push    bx
 273F:467E  E8 1D30                              call    display_message_dialog_3
@@ -10902,7 +10911,7 @@
 273F:4682  B8 0004                              mov     ax,4
 273F:4685  C3                                   retn
 273F:4686                       loc_888:                                        ;  xref 273F:45C8
-273F:4686  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:4686  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:468A  81 3E BA1B 0408                      cmp     active_hotspot_id, 408h
 273F:4690  73 0F                                jae     loc_889                 ; Jump if above or =
 273F:4692  C6 47 44 08                          mov     byte ptr [bx+44h],8
@@ -11002,7 +11011,7 @@
 273F:470A  8B 45 1B                             mov     ax, [di+ANIM_HOTSPOT_ID]
 273F:470D  3D 03E8                              cmp     ax, PLAYER_HOTSPOT_ID
 273F:4710  72 70                                jb      loc_903                 ; Jump if below
-273F:4712  3D 0408                              cmp     ax,408h
+273F:4712  3D 0408                              cmp     ax, 408h
 273F:4715  73 6B                                jae     loc_903                 ; Jump if above or =
 273F:4717  53                                   push    bx
 273F:4718  8B DE                                mov     bx, si
@@ -11014,7 +11023,7 @@
 273F:4729  72 17                                jb      loc_897
 273F:472B  5E                                   pop     si                      ; Non selectable hotspot
 273F:472C  5F                                   pop     di
-273F:472D  8A 47 08                             mov     al, [bx+8]
+273F:472D  8A 47 08                             mov     al, [bx+HS_LOAD_FLAG]
 273F:4730  88 45 26                             mov     [di+ANIM_DIRECTION], al
 273F:4733  8B 5C 21                             mov     bx, [si+HS_PIXEL_OFFSET]
 273F:4736  3C 01                                cmp     al, FACING_DOWN
@@ -12885,18 +12894,18 @@
 
                     character_walking_check     proc    near
 273F:5489  57                                   push    di
-273F:548A \xFABF BC4B                              mov     di, offset hotspot_proximity_list
+273F:548A \xFABF BC4B                              mov     di, offset hotspot_walkto_list
 273F:548D  A1 BA1B                              mov     ax, active_hotspot_id
 273F:5490                       loc_1092:                                       ;  xref 273F:549D
-273F:5490 \xFAF7 05 FFFF                           test    word ptr [di], 0FFFFh   ; End of list reached?
+273F:5490 \xFAF7 05 FFFF                           test    word ptr [di+WALKTO_HOTSPOT_ID], 0FFFFh ; End of list reached?
 273F:5494  74 4F                                jz      loc_1094                ; Jump if yes
-273F:5496  3B 05                                cmp     ax, [di]                ; Found entry for active hotspot?
+273F:5496  3B 05                                cmp     ax, [diWALKTO_HOTSPOT_ID] ; Found entry for active hotspot?
 273F:5498  74 05                                je      loc_1093                ; Jump if yes
 273F:549A  83 C7 06                             add     di, 6                   ; Move to next record
 273F:549D  EB F1                                jmp     short loc_1092
 273F:549F                       loc_1093:
-273F:549F  8B 4D 02                             mov     cx, [di+2]
-273F:54A2  8B 55 04                             mov     dx, [di+4]
+273F:549F  8B 4D 02                             mov     cx, [di+WALKTO_X]
+273F:54A2  8B 55 04                             mov     dx, [di+WALKTO_Y]
 273F:54A5  B0 01                                mov     al, 1
 273F:54A7  F6 C6 80                             test    dh, 80h
 273F:54AA  74 47                                jz      loc_1095                ; Jump if zero
@@ -13036,7 +13045,7 @@
                      character_walking_end_2:
 273F:558D \xFA33 C0                                xor     ax, ax
 273F:558F  89 45 24                             mov     [di+ANIM_VOICE_CTR], ax
-273F:5592  88 44 2A                             mov     [si+HS_FRAME_NUM], al
+273F:5592  88 44 2A                             mov     [si+HS_ACTION_CTR], al
 273F:5595  8B DE                                mov     bx, si
 273F:5597  03 5C 61                             add     bx, [si+HS_ACTION_OFFSET]
 273F:559A  83 C3 63                             add     bx, HS_FIRST_ACTION_OFFSET
@@ -13284,16 +13293,16 @@
 273F:570F  5E                                   pop     si
 273F:5710  A1 BA19                              mov     ax, use_hotspot_id
 273F:5713  E8 EE91                              call    hotspot_action_precheck
-273F:5716  0B C0                                or      ax,ax                   ; Zero ?
-273F:5718  74 08                                jz      loc_1116                ; Jump if zero
-273F:571A  3D 0003                              cmp     ax,3
-273F:571D  74 47                                je      loc_ret_1119            ; Jump if equal
+273F:5716  0B C0                                or      ax, ax                  ; Execute?
+273F:5718  74 08                                jz      loc_1116                ; Jump if yes
+273F:571A  3D 0003                              cmp     ax, 3                   ; Initial?
+273F:571D  74 47                                je      loc_ret_1119            ; Exit if not
 273F:571F  E9 FE5F                              jmp     character_walking_end
 273F:5722                       loc_1116:                                       ;  xref 273F:5718
 273F:5722  53                                   push    bx
 273F:5723  E8 FE5B                              call    character_walking_end
 273F:5726  5B                                   pop     bx
-273F:5727  C6 44 2A 00                          mov     byte ptr [si+2Ah],0
+273F:5727  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:572B  E8 EFC0                              call    character_face_hotspot
 273F:572E  E8 FEC5                              call    hotspot_get_action_sequence
 273F:5731  79 03                                jns     loc_1117                ; Jump if not sign
@@ -13301,7 +13310,7 @@
 273F:5736                       loc_1117:                                       ;  xref 273F:5731
 273F:5736  74 0A                                jz      loc_1118                ; Jump if zero
 273F:5738  E8 E6F9                              call    sequence_execute
-273F:573B  3D 0001                              cm5708p     ax,1
+273F:573B  3D 0001                              cmp     ax,1
 273F:573E  74 26                                je      loc_ret_1119            ; Jump if equal
 273F:5740  73 2F                                jnc     loc_1121                ; Jump if carry=0
 273F:5742                       loc_1118:                                       ;  xref 273F:5736
@@ -13310,13 +13319,13 @@
 273F:5746  E8 1AA5                              call    room_exit_hs_get_pointer
 273F:5749  5B                                   pop     bx
 273F:574A  87 F3                                xchg    si,bx
-273F:574C  F6 47 0C FF                          test    byte ptr [bx+0Ch],0FFh
+273F:574C  F6 47 0C FF                          test    byte ptr [bx+REHS_EXIT_BLOCKED], 0FFh
 273F:5750  74 14                                jz      loc_ret_1119            ; Jump if zero
-273F:5752  C6 47 0C 00                          mov     byte ptr [bx+0Ch],0
-273F:5756  81 7D 1B 03E8                        cmp     word ptr [di+1Bh], PLAYER_HOTSPOT_ID
+273F:5752  C6 47 0C 00                          mov     byte ptr [bx+REHS_EXIT_BLOCKED], 0
+273F:5756  81 7D 1B 03E8                        cmp     word ptr [di+ANIM_HOTSPOT_ID], PLAYER_HOTSPOT_ID
 273F:575B  74 09                                je      loc_ret_1119            ; Jump if equal
-273F:575D  C6 44 44 03                          mov     byte ptr [si+44h],3
-273F:5761  C7 44 42 0004                        mov     word ptr [si+42h],4
+273F:575D  C6 44 44 03                          mov     byte ptr [si+HS_V44], 3
+273F:5761  C7 44 42 0004                        mov     word ptr [si+HS_V42], 4
 
 273F:5766                       loc_ret_1119:                                   ;  xref 273F:571D, 573E, 5750, 575B
 273F:5766  C3                                   retn
@@ -13326,9 +13335,9 @@
 273F:576B  E8 0C43                              call    display_message_dialog_3
 273F:576E  E9 FE10                              jmp     character_walking_end
 273F:5771                       loc_1121:                                       ;  xref 273F:5740
-273F:5771  F6 44 60 FF                          test    byte ptr [si+60h],0FFh
+273F:5771  F6 44 60 FF                          test    byte ptr [si+HS_V60],0FFh
 273F:5775  74 04                                jz      loc_1122                ; Jump if zero
-273F:5777  C6 44 60 04                          mov     byte ptr [si+60h],4
+273F:5777  C6 44 60 04                          mov     byte ptr [si+HS_V60],4
 273F:577B                       loc_1122:                                       ;  xref 273F:5775
 273F:577B  E9 0C33                              jmp     display_message_dialog_3
                                  open_proc      endp
@@ -13348,9 +13357,9 @@
 273F:578C BEB04C                                mov     si, offset exit_hotspots_list
 273F:578F E801EE                                call    is_roomexit_hotspot
 273F:5792 7516                                  jnz     close_proc_2
-273F:5794 A119BA                                mov     ax, [BA19]
+273F:5794 A119BA                                mov     ax, use_hotspot_id
 273F:5797 E8541A                                call    room_exit_hs_get_pointer
-273F:579A F6440CFF                              test    byte ptr [si+0Ch], 0FFh
+273F:579A F6440CFF                              test    byte ptr [si+REHS_EXIT_BLOCKED], 0FFh
 273F:579E 740A                                  jz      close_proc_2
 273F:57A0 5E                                    pop     si
 273F:57A1 B80300                                mov     ax, 3
@@ -13361,14 +13370,14 @@
 273F:57AE E8F6ED                                call    hotspot_action_precheck
 273F:57B1 0BC0                                  or      ax, ax
 273F:57B3 7408                                  jz      loc_1123
-273F:57B5 3D0300                                cmp     AX, 3
+273F:57B5 3D0300                                cmp     ax, 3
 273F:57B8 7448                                  jz      loc_ret_1127
 273F:57BA E9C4FD                                jmp     character_walking_end
 273F:57BD                       loc_1123:
 273F:57BD  53                                   push    bx
 273F:57BE  E8 FDC0                              call    character_walking_end
 273F:57C1  5B                                   pop     bx
-273F:57C2  C6 44 2A 00                          mov     byte ptr [si+2Ah],0
+273F:57C2  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:57C6  E8 EF25                              call    character_face_hotspot
 273F:57C9  E8 FE2A                              call    hotspot_get_action_sequence
 273F:57CC  79 03                                jns     loc_1125                ; Jump if not sign
@@ -13384,19 +13393,19 @@
 273F:57DC  E8 1A0F                              call    room_exit_hs_get_pointer 
 273F:57DF  5B                                   pop     bx
 273F:57E0  87 DE                                xchg    bx,si
-273F:57E2  F6 47 0C FF                          test    byte ptr [bx+0Ch],0FFh
+273F:57E2  F6 47 0C FF                          test    byte ptr [bx+REHS_EXIT_BLOCKED], 0FFh
 273F:57E6  75 1A                                jnz     loc_ret_1127            ; Jump if not zero
-273F:57E8  8B EB                                mov     bp,bx
+273F:57E8  8B EB                                mov     bp, bx
 
-273F:57EA  8B 5F 0D                             mov     bx,[bx+0Dh]
-273F:57ED  E8 1A7B                              call    sub_183                 ; (726B)
-273F:57F0  74 11                                jz      loc_1128                ; Jump if zero
-273F:57F2  8B DD                                mov     bx,bp
-273F:57F4  8B 5F 0F                             mov     bx,[bx+0Fh]
-273F:57F7  E8 1A71                              call    sub_183                 ; (726B)
-273F:57FA  74 07                                jz      loc_1128                ; Jump if zero
+273F:57EA  8B 5F 0D                             mov     bx, [bx+REHS_HOTSPOT1_OFFSET]
+273F:57ED  E8 1A7B                              call    door_close_check
+273F:57F0  74 11                                jz      loc_1128                ; Jump if can't close
+273F:57F2  8B DD                                mov     bx, bp
+273F:57F4  8B 5F 0F                             mov     bx, [bx+REHS_HOTSPOT2_OFFSET]
+273F:57F7  E8 1A71                              call    door_close_check
+273F:57FA  74 07                                jz      loc_1128                ; Jump if can't close
 273F:57FC  8B DD                                mov     bx,bp
-273F:57FE  C6 47 0C 01                          mov     byte ptr [bx+0Ch],1
+273F:57FE  C6 47 0C 01                          mov     byte ptr [bx+REHS_EXIT_BLOCKED], 1
 
 273F:5802                       loc_ret_1127:                                   ;  xref 273F:57E6, 581F
 273F:5802  C3                                   retn
@@ -13567,7 +13576,7 @@
 273F:5913  74 E6                                je      loc_ret_1140            ; Jump if equal
 273F:5915  E9 FC69                              jmp     character_walking_end
 273F:5918                       loc_1141:                                       ;  xref 273F:590E
-273F:5918  88 44 2A                             mov     [si+2Ah], al
+273F:5918  88 44 2A                             mov     [si+HS_ACTION_CTR], al
 273F:591B  53                                   push    bx
 273F:591C  E8 FC62                              call    character_walking_end
 273F:591F  5B                                   pop     bx
@@ -13661,7 +13670,6 @@
 273F:59A7  D0 EB                                shr     bl,1                    ; Shift w/zeros fill
 273F:59A9  2E: 88 1E 5977                       mov     cs:data_359,bl          ; (273F:5977=0)
 273F:59AE  BD 0001                              mov     bp,1
-                                                assume  ds:data_seg
 273F:59B1  FF 16 077A                           call    [draw_dialog_proc]
 273F:59B5  A1 9832                              mov     ax, room_number         ; Get the current room's
 273F:59B8  E8 B366                              call    get_room_resource_pointer3 ; short name
@@ -13777,8 +13785,8 @@
 273F:5AA7  E8 B240                              call    get_room_resource_pointer2
 273F:5AAA  5B                                   pop     bx
 273F:5AAB  87 DE                                xchg    bx,si                   ; bx=item to use, si=hotspot
-273F:5AAD  8B 47 06                             mov     ax,[bx+6]
-273F:5AB0  3B 45 1B                             cmp     ax,[di+1Bh]
+273F:5AAD  8B 47 06                             mov     ax, [bx+HS_ROOM_NUM]
+273F:5AB0  3B 45 1B                             cmp     ax, [di+ANIM_HOTSPOT_ID]; Item in char's inventory?
 273F:5AB3  75 12                                jne     loc_1155                ; Jump if not equal
 273F:5AB5  A1 BA1B                              mov     ax, active_hotspot_id
 273F:5AB8  E8 EAEC                              call    hotspot_action_precheck
@@ -13797,10 +13805,10 @@
 273F:5ACD  53                                   push    bx
 273F:5ACE  E8 FAB0                              call    character_walking_end
 273F:5AD1  5B                                   pop     bx
-273F:5AD2  81 7D 1B 03E9                        cmp     word ptr [di+1Bh],3E9h
+273F:5AD2  81 7D 1B 03E9                        cmp     word ptr [di+ANIM_HOTSPOT_ID], 3E9h
 273F:5AD7  75 09                                jne     loc_1157                ; Jump if not equal
-273F:5AD9  C6 44 FF 28                          mov     byte ptr [si-1],28h     ; '('
-273F:5ADD  C7 44 1F 0050                        mov     word ptr [si+1Fh],50h
+273F:5AD9  C6 44 FF 28                          mov     byte ptr [si-1], 28h    ; '('
+273F:5ADD  C7 44 1F 0050                        mov     word ptr [si+HS_FRAME_CTR], 50h
 273F:5AE2                       loc_1157:                                       ;  xref 273F:5AD7
 273F:5AE2  E8 FB11                              call    hotspot_get_action_sequence
 273F:5AE5  79 03                                jns     loc_1158                ; Jump if not sign
@@ -13833,20 +13841,20 @@
 273F:5B0E  81 3E BA19 0408                      cmp     use_hotspot_id, 408h
 273F:5B14  72 29                                jb      loc_1163                ; Jump if below
 273F:5B16  56                                   push    si
-273F:5B17 \xFABE 4AD0                              mov     si, 4AD0h                ; (273F:4AD0=0E2h)
+273F:5B17 \xFABE 4AD0                              mov     si, offset lookat_hotspot_list
 273F:5B1A  8B 0E BA19                           mov     cx, use_hotspot_id
-273F:5B1E                       loc_1160:                                       ;  xref 273F:5B27
-273F:5B1E \xFAAD                                   lodsw                           ; String [si] to ax
-273F:5B1F  0B C0                                or      ax,ax                   ; Zero ?
-273F:5B21  74 09                                jz      loc_1162                ; Jump if zero
-273F:5B23  3B C1                                cmp     ax,cx
-273F:5B25  74 02                                je      loc_1161                ; Jump if equal
-273F:5B27  EB F5                                jmp     short loc_1160          ; (5B1E)
-273F:5B29                       loc_1161:                                       ;  xref 273F:5B25
+273F:5B1E                       loc_1160:
+273F:5B1E \xFAAD                                   lodsw                           ; Get next hotspot Id
+273F:5B1F  0B C0                                or      ax,ax                   ; Reached end of list?
+273F:5B21  74 09                                jz      loc_1162                ; Jump if yes
+273F:5B23  3B C1                                cmp     ax,cx                   ; Found hotspot?
+273F:5B25  74 02                                je      loc_1161                ; Jump if yes
+273F:5B27  EB F5                                jmp     short loc_1160          ; Keep scanning
+273F:5B29                       loc_1161:
 273F:5B29  5E                                   pop     si
-273F:5B2A  EB 13                                jmp     short loc_1163          ; (5B3F)
-273F:5B2C                       loc_1162:                                       ;  xref 273F:5B21
-273F:5B2C  5E                                   pop     si
+273F:5B2A  EB 13                                jmp     short loc_1163          
+273F:5B2C                       loc_1162:
+273F:5B2C  5E                                   pop     si                      ; Hotspot not found
 273F:5B2D  A1 BA19                              mov     ax, use_hotspot_id
 273F:5B30  E8 EA74                              call    hotspot_action_precheck
 273F:5B33  0B C0                                or      ax,ax                   ; Zero ?
@@ -13855,7 +13863,7 @@
 273F:5B3A  74 8A                                je      loc_ret_1154            ; Jump if equal
 273F:5B3C  E9 FA42                              jmp     character_walking_end
 273F:5B3F                       loc_1163:                                       ;  xref 273F:5B14, 5B2A, 5B35
-273F:5B3F  C6 44 2A 00                          mov     byte ptr [si+2Ah],0
+273F:5B3F  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:5B43  E8 EBA8                              call    character_face_hotspot
 273F:5B46  53                                   push    bx
 273F:5B47  E8 FA37                              call    character_walking_end
@@ -13870,12 +13878,12 @@
 273F:5B5A                       loc_1165:                                       ;  xref 273F:5B53, 5C1E
 273F:5B5A \xFAA1 BA1B                              mov     ax, active_hotspot_id
 273F:5B5D  E8 B1C1                              call    get_room_resource_pointer3
-273F:5B60  8B 5C 06                             mov     bx,[si+6]
-273F:5B63  0B DB                                or      bx,bx                   ; Zero ?
+273F:5B60  8B 5C 06                             mov     bx, [si+HSH_DESC_2]
+273F:5B63  0B DB                                or      bx, bx                  ; Zero ?
 273F:5B65  75 03                                jnz     loc_1166                ; Jump if not zero
-273F:5B67  8B 5C 04                             mov     bx,[si+4]
+273F:5B67  8B 5C 04                             mov     bx, [si+HSH_DESC]
 273F:5B6A                       loc_1166:
-273F:5B6A  80 E7 1F                             and     bh,1Fh
+273F:5B6A  80 E7 1F                             and     bh, 1Fh
 273F:5B6D  E9 2D4C                              jmp     display_dialog
 273F:5B70                       loc_ret_1167:                                   ;  xref 273F:5B58, 5BA0, 5BCD, 5BDD
 273F:5B70  C3                                   retn
@@ -13888,17 +13896,17 @@
 
                                   give_proc     proc    near
 273F:5B71  8B DD                                mov     bx,bp
-273F:5B73  8B 47 02                             mov     ax,[bx+2]
+273F:5B73  8B 47 02                             mov     ax, [bx+2]
 273F:5B76  A3 BA1B                              mov     active_hotspot_id, ax
-273F:5B79  8B 07                                mov     ax,[bx]
+273F:5B79  8B 07                                mov     ax, [bx]
 273F:5B7B  A3 BA19                              mov     use_hotspot_id, ax
-273F:5B7E  83 C5 04                             add     bp,4
+273F:5B7E  83 C5 04                             add     bp, 4
 273F:5B81  56                                   push    si
 273F:5B82  E8 B165                              call    get_room_resource_pointer2
 273F:5B85  5B                                   pop     bx
 273F:5B86  87 DE                                xchg    bx,si
-273F:5B88  8B 47 06                             mov     ax,[bx+6]
-273F:5B8B  3B 45 1B                             cmp     ax,[di+1Bh]
+273F:5B88  8B 47 06                             mov     ax, [bx+HS_ROOM_NUM]
+273F:5B8B  3B 45 1B                             cmp     ax, [di+ANIM_HOTSPOT_ID]; Is item in char's inventory?
 273F:5B8E  74 03                                je      loc_1168                ; Jump if equal
 273F:5B90  E9 0179                              jmp     loc_1187                ; (5D0C)
 273F:5B93                       loc_1168:                                       ;  xref 273F:5B8E
@@ -13949,7 +13957,7 @@
 273F:5BF4                       loc_1174:                                       ;  xref 273F:5BDF
 273F:5BF4  8B D8                                mov     bx,ax
 273F:5BF6  8B 0E BA1B                           mov     cx, active_hotspot_id
-273F:5BFA  8B 55 1B                             mov     dx,[di+1Bh]
+273F:5BFA  8B 55 1B                             mov     dx, [di+ANIM_HOTSPOT_ID]
 273F:5BFD  E9 0790                              jmp     display_message_dialog
                                   give_proc     endp
 
@@ -14004,15 +14012,15 @@
 273F:5C43  B8 014B                              mov     ax,14Bh
 273F:5C46  8B 16 BA1B                           mov     dx, active_hotspot_id
 273F:5C4A  53                                   push    bx
-273F:5C4B \xFABB 4AE6                              mov     bx,4AE6h                ; (273F:4AE6=0EEh)
-273F:5C4E                       loc_1179:                                       ;  xref 273F:5C59
-273F:5C4E  83 C3 04                             add     bx,4
-273F:5C51  F7 07 FFFF                           test    word ptr [bx],0FFFFh
-273F:5C55  74 12                                jz      loc_1180                ; Jump if zero
-273F:5C57  3B 17                                cmp     dx,[bx]
-273F:5C59  75 F3                                jne     loc_1179                ; Jump if not equal
-273F:5C5B  8B 47 02                             mov     ax,[bx+2]
-273F:5C5E  F6 C4 80                             test    ah,80h
+273F:5C4B \xFABB 4AE6                              mov     bx, offset bribe_hotspot_list - 4
+273F:5C4E                       loc_1179:                                       
+273F:5C4E  83 C3 04                             add     bx, 4                   ; Move to next entry
+273F:5C51  F7 07 FFFF                           test    word ptr [bx],0FFFFh    ; End of list reached?
+273F:5C55  74 12                                jz      loc_1180                ; Jump if yes
+273F:5C57  3B 17                                cmp     dx, [bx]                ; Char Id found?
+273F:5C59  75 F3                                jne     loc_1179                ; Keep scanning if not
+273F:5C5B  8B 47 02                             mov     ax, [bx+2]              ; Get 
+273F:5C5E  F6 C4 80                             test    ah, 80h
 273F:5C61  74 06                                jz      loc_1180                ; Jump if zero
 273F:5C63  80 E4 7F                             and     ah,7Fh
 273F:5C66  E8 E1CB                              call    sequence_execute
@@ -14026,7 +14034,7 @@
 273F:5C79  53                                   push    bx
 273F:5C7A  E8 F904                              call    character_walking_end
 273F:5C7D  5B                                   pop     bx
-273F:5C7E  C6 44 2A 00                          mov     byte ptr [si+2Ah],0
+273F:5C7E  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:5C82  E8 F971                              call    hotspot_get_action_sequence
 273F:5C85  74 05                                jz      loc_1181                ; Jump if zero
 273F:5C87  E8 E1AA                              call    sequence_execute
@@ -14034,10 +14042,10 @@
 273F:5C8C                       loc_1181:                                       ;  xref 273F:5C85
 273F:5C8C  BA 03E8                              mov     dx, PLAYER_HOTSPOT_ID
 273F:5C8F  8B 0E BA19                           mov     cx, use_hotspot_id
-273F:5C93  BB 0029                              mov     bx,29h
+273F:5C93  BB 0029                              mov     bx, 29h
 273F:5C96  83 3E BA3B 06                        cmp     talk_record_index, 6
 273F:5C9B  75 03                                jne     loc_1182                ; Jump if not equal
-273F:5C9D \xFABB 0030                              mov     bx,30h                  ; (273F:0030=0Ah)
+273F:5C9D \xFABB 0030                              mov     bx, 30h  
 273F:5CA0                       loc_1182:                                       ;  xref 273F:5C9B
 273F:5CA0  E9 06ED                              jmp     display_message_dialog
                                 bribe_proc      endp
@@ -14097,16 +14105,21 @@
                                   ask_proc      endp
 
                                 ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
-                                ;                              SUBROUTINE
+                                ;                              JUMP POINT
                                 ;
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
 
 273F:5D0C                       loc_1187:                                       ;  xref 273F:5AC7, 5B90, 5D2F
-273F:5D0C  B8 000F                              mov     ax,0Fh                  ; "What???"
+273F:5D0C  B8 000F                              mov     ax, 0Fh                 ; "What???"
 273F:5D0F  E8 069F                              call    display_message_dialog_3
 273F:5D12  E9 F86C                              jmp     character_walking_end
 
+                                ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
+                                ;                              SUBROUTINE
+                                ;
+                                ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
+
                                drink_proc       proc    near
 273F:5D15  8B DD                                mov     bx,bp
 273F:5D17  8B 07                                mov     ax,[bx]
@@ -14989,7 +15002,7 @@
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
                      display_message_dialog     proc    near
-273F:6390  89 16 4B41                           mov     word ptr ds:[4B41h],dx  ; (273F:4B41=0DB33h)
+273F:6390  89 16 4B41                           mov     data_792, dx
 273F:6394  53                                   push    bx
 273F:6395  8B D9                                mov     bx, cx
 273F:6397  E8 A94E                              call    get_room_resource_pointer
@@ -15005,8 +15018,8 @@
 
                    display_message_dialog_2:
 273F:63A2  8B 16 BA1B                           mov     dx, active_hotspot_id
-273F:63A6  89 16 4B41                           mov     word ptr ds:[4B41h],dx  ; (273F:4B41=0DB33h)
-273F:63AA  8B 4D 1B                             mov     cx,[di+1Bh]
+273F:63A6  89 16 4B41                           mov     data_792, dx
+273F:63AA  8B 4D 1B                             mov     cx, [di+ANIM_HOTSPOT_ID]
 273F:63AD  B2 01                                mov     dl,1
 273F:63AF  EB 0A                                jmp     display_message_dialog_4
 
@@ -15091,14 +15104,14 @@
 273F:6431  5E                                   pop     si
 273F:6432  C3                                   retn
 
-; Further handling code for if the ax is not signed. This is starting to get
-; ridiculous
+; Further handling code for if the ax is not signed. In this case the message
+; is shown as a talk dialog
 
 273F:6433                       loc_1265:                                       ;  xref 273F:640F
 273F:6433  8B D0                                mov     dx,ax
 273F:6435  F6 C1 FF                             test    cl,0FFh
 273F:6438  74 07                                jz      loc_1266                ; Jump if zero
-273F:643A  8B 0E 4B41                           mov     cx,word ptr ds:[4B41h]  ; (273F:4B41=0DB33h)
+273F:643A  8B 0E 4B41                           mov     cx, data_792
 273F:643E  E9 FCEE                              jmp     talk_setup_3
 273F:6441                       loc_1266:                                       ;  xref 273F:6438
 273F:6441  B9 03E7                              mov     cx,3E7h
@@ -15176,11 +15189,13 @@
 273F:64E2  89 0E 9841                           mov     data_436,cx             ; (273F:9841=20EFh)
 273F:64E6  C3                                   retn
 
-                                ;\xDF\xDF\xDF\xDF External Entry into Subroutine \xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
+                                ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
+                                ;                              SUBROUTINE
                                 ;
                                 ;         Called from:   273F:654F, 655F
+                                ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
-273F:64E7                       sub_154:
+                                sub_154:
 273F:64E7  8B DA                                mov     bx,dx
 273F:64E9  53                                   push    bx
 273F:64EA  E8 A7FB                              call    get_room_resource_pointer
@@ -15188,34 +15203,42 @@
 273F:64F0  5A                                   pop     dx
 273F:64F1  B9 002D                              mov     cx, NUM_ANIMATION_SLOTS
 
-273F:64F4                       locloop_1276:                                   ;  xref 273F:6502
-273F:64F4  F6 47 0C FF                          test    byte ptr [bx+0Ch],0FFh
-273F:64F8  74 0D                                jz      loc_1277                ; Jump if zero
-273F:64FA  39 57 1E                             cmp     [bx+1Eh],dx
+273F:64F4                       locloop_1276:
+273F:64F4  F6 47 0C FF                          test    byte ptr [bx+ANIM_LAYER], 0FFh
+273F:64F8  74 0D                                jz      loc_1277                ; Jump if anim has no layer
+273F:64FA  39 57 1E                             cmp     [bx+ANIM_VOICE_CHAR_ID], dx
 273F:64FD  74 08                                je      loc_1277                ; Jump if equal
-273F:64FF  83 C3 29                             add     bx,29h
+273F:64FF  83 C3 29                             add     bx, ANIMATION_SLOT_SIZE
 273F:6502  E2 F0                                loop    locloop_1276            ; Loop if cx > 0
 
-273F:6504  83 EB 29                             sub     bx,29h
-273F:6507                       loc_1277:                                       ;  xref 273F:64F8, 64FD
-273F:6507  8B 44 06                             mov     ax,[si+6]
-273F:650A  89 47 0E                             mov     [bx+0Eh],ax
-273F:650D  C7 47 1B FFFE                        mov     word ptr [bx+1Bh],0FFFEh
-273F:6512  C7 47 20 0028                        mov     word ptr [bx+20h],28h
-273F:6517  89 57 1E                             mov     [bx+1Eh],dx
-273F:651A  C6 47 0D 01                          mov     byte ptr [bx+0Dh],1
-273F:651E  C7 47 04 0020                        mov     word ptr [bx+4],20h
-273F:6523  C7 47 06 0012                        mov     word ptr [bx+6],12h
-273F:6528  C6 47 0C 01                          mov     byte ptr [bx+0Ch],1
-273F:652C  C6 47 10 01                          mov     byte ptr [bx+10h],1
-273F:6530  C7 47 11 6571                        mov     word ptr [bx+11h],6571h
-273F:6535  C7 47 13 0013                        mov     word ptr [bx+13h],13h
-273F:653A  C7 47 15 0012                        mov     word ptr [bx+15h],12h
-273F:653F  8B 44 1B                             mov     ax,[si+1Bh]
-273F:6542  01 47 15                             add     [bx+15h],ax
-273F:6545  C7 47 17 0001                        mov     word ptr [bx+17h],1
-273F:654A  C6 47 28 00                          mov     byte ptr [bx+28h],0
+273F:6504  83 EB 29                             sub     bx, ANIMATION_SLOT_SIZE
+273F:6507                       loc_1277:
+273F:6507  8B 44 06                             mov     ax, [si+HS_ROOM_NUM]
+273F:650A  89 47 0E                             mov     [bx+ANIM_ROOM_NUM], ax
+273F:650D  C7 47 1B FFFE                        mov     word ptr [bx+ANIM_HOTSPOT_ID], 0FFFEh
+273F:6512  C7 47 20 0028                        mov     word ptr [bx+ANIM_V20], 40
+273F:6517  89 57 1E                             mov     [bx+ANIM_VOICE_CHAR_ID], dx
+273F:651A  C6 47 0D 01                          mov     byte ptr [bx+ANIM_FLAGS], 1
+273F:651E  C7 47 04 0020                        mov     word ptr [bx+ANIM_WIDTH], 20h
+273F:6523  C7 47 06 0012                        mov     word ptr [bx+ANIM_HEIGHT], 12h
+273F:6528  C6 47 0C 01                          mov     byte ptr [bx+ANIM_LAYER], 1
+273F:652C  C6 47 10 01                          mov     byte ptr [bx+ANIM_CAN_UNLOAD], 1
+273F:6530  C7 47 11 6571                        mov     word ptr [bx+ANIM_TICK_PROC], offset tick_proc_6571
+273F:6535  C7 47 13 0013                        mov     word ptr [bx+ANIM_WIDTH_COPY], 19
+273F:653A  C7 47 15 0012                        mov     word ptr [bx+ANIM_HEIGHT_COPY], 18
+273F:653F  8B 44 1B                             mov     ax, [si+HS_HEIGHT_COPY]
+273F:6542  01 47 15                             add     [bx+ANIM_HEIGHT_COPY], ax
+273F:6545  C7 47 17 0001                        mov     word ptr [bx+ANIM_Y_CORRECTION], 1
+273F:654A  C6 47 28 00                          mov     byte ptr [bx+ANIM_START_COLOUR], 0
 273F:654E  C3                                   retn
+                                sub_154         endp
+
+                                ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
+                                ;                              SUPPORT CODE
+                                ;
+                                ; This is support code used by display_message_dialog
+                                ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
+
 273F:654F                       loc_1278:                                       ;  xref 273F:6408
 273F:654F  E8 FF95                              call    sub_154                 ; (64E7)
 273F:6552  A1 5813                              mov     ax, voice_pixel_segment
@@ -15231,9 +15254,13 @@
 273F:656B  D1 E0                                shl     ax,1                    ; Shift w/zeros fill
 273F:656D  89 47 08                             mov     [bx+ANIM_FRAME_OFFSET], ax
 273F:6570  C3                                   retn
-                     display_message_dialog     endp
 
-                                                                                ;* No entry point to code
+                                ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
+                                ;                              SUBROUTINE
+                                ;
+                                ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
+
+                             tick_proc_6571     proc    near
 273F:6571  8B 45 1E                             mov     ax,[di+1Eh]
 273F:6574  E8 A773                              call    get_room_resource_pointer2
 273F:6577  8B 44 06                             mov     ax,[si+6]
@@ -15258,6 +15285,7 @@
 273F:65A0  2D 0014                              sub     ax, 20
 273F:65A3  89 45 02                             mov     [di+ANIM_Y],ax
 273F:65A6  C3                                   retn
+                             tick_proc_6571     endp
                                                                                 ;* No entry point to code
 273F:65A7  A1 983B                              mov     ax, talk_character_id
 273F:65AA  E8 A73B                              call    get_room_resource_pointer
@@ -15284,7 +15312,7 @@
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
 273F:65DE  0000          actions_proc_list      dw      0
-273F:65E0  6698                                 dw      offset action_use       ; 01 - GET
+273F:65E0  6698                                 dw      offset action_do        ; 01 - GET
 273F:65E2  0000                                 dw      0
 273F:65E4  6698                                 dw      offset action_do        ; 03 - PUSH
 273F:65E6  6698                                 dw      offset action_do        ; 04 - PULL
@@ -15321,8 +15349,8 @@
 
 273F:6614  E8 A1D7                              call    sub_11                  ; (07EE)
 273F:6617                       loc_1283:                                       ;  xref 273F:670A
-273F:6617 \xFAC7 06 3382 FFFF                      mov     data_770, 0FFFFh
-273F:661D  C7 06 3380 0000                      mov     word ptr ds:data_89e,0  ; (0874:3380=6F6h)
+273F:6617 \xFAC7 06 3382 FFFF                      mov     data_3382, 0FFFFh
+273F:661D  C7 06 3380 0000                      mov     data_3380, 0
 273F:6623  C7 06 335E 0001                      mov     word ptr ds:data_75e,1  ; (0874:335E=0FF47h)
 273F:6629  B8 0007                              mov     ax,7
 273F:662C  F7 26 336A                           mul     word ptr ds:data_79e    ; (0874:336A=7500h) dx:ax = data * ax
@@ -15331,7 +15359,7 @@
 273F:6637  C7 06 3350 0000                      mov     word ptr ds:data_71e,0  ; (0874:3350=9A90h)
 273F:663D  A1 3356                              mov     ax,ds:data_72e          ; (0874:3356=289Ah)
 273F:6640  A3 3379                              mov     ds:data_85e,ax          ; (0874:3379=0C722h)
-273F:6643  A1 3358                              mov     ax,ds:data_73e          ;
+273F:6643  A1 3358                              mov     ax, data_3358
 273F:6646  0B C0                                or      ax,ax                   ; Hotspot highlighted?
 273F:6648  74 19                                jz      loc_1284                ; No, so set up for look/status menu
 
@@ -15380,7 +15408,7 @@
                                 ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
 
 
-273F:6698  E8 028A              action_do:      call    sub_159                 
+273F:6698  E8 028A              action_do:      call    sub_159
 273F:669B  E9 0097          action_status:      jmp     action_look
 
 
@@ -15396,10 +15424,10 @@
 273F:66B3  E8 A69E              action_use:     call    sub_32                  ; (0D54)
 273F:66B6  F7 06 31E4 FFFF                      test    popmenu_entry_count, 0FFFFh
 273F:66BC  74 42                                jz      loc_1291                ; Jump if zero
-273F:66BE  E8 02D0                              call    menu_make_selections
+273F:66BE  E8 02D0                              call    menu_make_selections    ; Select inventory item
 273F:66C1  0B C0                                or      ax,ax                   ; Zero ?
 273F:66C3  78 3E                                js      loc_1292                ; Jump if sign=1
-273F:66C5  8B 36 3380                           mov     si,ds:data_89e          ; (0874:3380=6F6h)
+273F:66C5  8B 36 3380                           mov     si, data_3380           ; Get the hotspot
 273F:66C9  83 BC 337C 0B                        cmp     word ptr ds:data_86e+1[si],0Bh ; (0874:337C=4758h)
 273F:66CE  75 05                                jne     loc_1288                ; Jump if not equal
 273F:66D0  BB 33E4                              mov     bx,33E4h
@@ -15472,7 +15500,7 @@
 273F:673B  BB 33E4                              mov     bx,33E4h
 273F:673E  E8 050F                              call    sub_166                 ; (6C50)
 273F:6741                       loc_1295:                                       ;  xref 273F:676E, 67EA
-273F:6741 \xFA83 3E 3380 08                        cmp     word ptr ds:[3380h],8   ; (273F:3380=12Dh)
+273F:6741 \xFA83 3E 3380 08                        cmp     data_3380, 8
 273F:6746  75 06                                jne     loc_1296                ; Jump if not equal
 273F:6748  A1 3356                              mov     ax,word ptr ds:[3356h]  ; (273F:3356=9B9h)
 273F:674B  A3 3379                              mov     data_266,ax             ; (273F:3379=62C0h)
@@ -15483,11 +15511,11 @@
 273F:6757  E8 0237                              call    menu_make_selections
 273F:675A  0B C0                                or      ax,ax                   ; Zero ?
 273F:675C  79 12                                jns     loc_1298                ; Jump if not sign
-273F:675E  83 3E 3380 08                        cmp     word ptr ds:[3380h],8   ; (273F:3380=12Dh)
+273F:675E  83 3E 3380 08                        cmp     data_3380, 8
 273F:6763  74 9E                                je      loc_1292                ; Jump if equal
 273F:6765                       loc_1297:                                       ;  xref 273F:6795, 679C, 683E
 273F:6765 \xFAE8 00F7                              call    sub_157                 ; (685F)
-273F:6768  C7 06 3380 0008                      mov     word ptr ds:[3380h],8   ; (273F:3380=12Dh)
+273F:6768  C7 06 3380 0008                      mov     data_3380, 8
 273F:676E  EB D1                                jmp     short loc_1295          ; (6741)
 273F:6770                       loc_1298:                                       ;  xref 273F:675C
 273F:6770  3D 0017                              cmp     ax,17h
@@ -15511,7 +15539,7 @@
 273F:6797  E8 01F7                              call    menu_make_selections
 273F:679A  0B C0                                or      ax,ax                   ; Zero ?
 273F:679C  78 C7                                js      loc_1297                ; Jump if sign=1
-273F:679E  8B 1E 3380                           mov     bx,word ptr ds:[3380h]  ; (273F:3380=12Dh)
+273F:679E  8B 1E 3380                           mov     bx, data_3380
 273F:67A2  8B 9F 337C                           mov     bx,word ptr data_267+1[bx] ; (273F:337C=4Eh)
 273F:67A6  83 FB 16                             cmp     bx,16h
 273F:67A9  75 03                                jne     loc_1303                ; Jump if not equal
@@ -15526,7 +15554,7 @@
 273F:67BD  E9 0081                              jmp     loc_1312                ; (6841)
 273F:67C0                       loc_1304:                                       ;  xref 273F:6773, 67BB, 681C, 6839
                                                                                 ;            685C
-273F:67C0 \xFA83 3E 3380 4A                        cmp     word ptr ds:[3380h],4Ah ; (273F:3380=12Dh)
+273F:67C0 \xFA83 3E 3380 4A                        cmp     data_3380, 4Ah
 273F:67C5  73 0B                                jae     loc_1305                ; Jump if above or =
 273F:67C7  BE 2E41                              mov     si,2E41h
 273F:67CA  BB 2E53                              mov     bx,2E53h
@@ -15599,10 +15627,10 @@
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
 273F:685F                       sub_157         proc    near
-273F:685F  83 2E 3380 04                        sub     word ptr ds:[3380h],4   ; (273F:3380=12Dh)
-273F:6864  8B 1E 3380                           mov     bx,word ptr ds:[3380h]  ; (273F:3380=12Dh)
-273F:6868  8B 87 3382                           mov     ax, data_770[bx]
-273F:686C  C7 87 3382 FFFF                      mov     data_770[bx],0FFFFh
+273F:685F  83 2E 3380 04                        sub     data_3380, 4
+273F:6864  8B 1E 3380                           mov     bx, data_3380
+273F:6868  8B 87 3382                           mov     ax, data_3382[bx]
+273F:686C  C7 87 3382 FFFF                      mov     data_3382[bx],0FFFFh
 273F:6872  B9 0140                              mov     cx,140h
 273F:6875  50                                   push    ax
 273F:6876  33 D2                                xor     dx,dx                   ; Zero register
@@ -15706,22 +15734,22 @@
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
 273F:6925                       sub_159         proc    near
-273F:6925  8B 1E 3358                           mov     bx,word ptr ds:[3358h]  ; (273F:3358=0F300h)
-273F:6929  8B 36 3380                           mov     si,word ptr ds:[3380h]  ; (273F:3380=12Dh)
-273F:692D  89 9C 3382                           mov     data_770[si],bx 
-273F:6931  89 9C 3384                           mov     word ptr ds:[3384h][si],bx ; (273F:3384=810Ch)
-273F:6935  C7 84 3386 FFFF                      mov     word ptr ds:[3386h][si],0FFFFh ; (273F:3386=0EFh)
-273F:693B  83 06 3380 04                        add     word ptr ds:[3380h],4   ; (273F:3380=12Dh)
+273F:6925  8B 1E 3358                           mov     bx, data_3358           ; Get the hotspot Id
+273F:6929  8B 36 3380                           mov     si, data_3380           ; Get offset
+273F:692D  89 9C 3382                           mov     data_3382[si], bx       ; Store hotspot Id
+273F:6931  89 9C 3384                           mov     word ptr ds:[3384h][si], bx
+273F:6935  C7 84 3386 FFFF                      mov     word ptr ds:[3386h][si], 0FFFFh
+273F:693B  83 06 3380 04                        add     data_3380, 4
 273F:6940  1E                                   push    ds
 273F:6941  8E DD                                mov     ds,bp
-273F:6943  E8 A3D9                              call    get_room_resource_pointer3
-273F:6946  8B 44 02                             mov     ax,[si+2]
-273F:6949  80 E4 1F                             and     ah,1Fh
+273F:6943  E8 A3D9                              call    get_room_resource_pointer3 ; Get header pointer
+273F:6946  8B 44 02                             mov     ax, [si+HSH_NAME]
+273F:6949  80 E4 1F                             and     ah, 1Fh
 273F:694C  1F                                   pop     ds
-273F:694D  BF 30D4                              mov     di,30D4h
-273F:6950  E8 13E7                              call    decode_string
-273F:6953  BB 30D4                              mov     bx,30D4h
-273F:6956  E8 02F7                              call    sub_166                 ; (6C50)
+273F:694D  BF 30D4                              mov     di, offset hotspot_display_buffer
+273F:6950  E8 13E7                              call    decode_string           ; Decode hotspot name
+273F:6953  BB 30D4                              mov     bx, offset hotspot_display_buffer
+273F:6956  E8 02F7                              call    sub_166                 ; Displays name
 273F:6959  C3                                   retn
                                 sub_159         endp
 
@@ -15783,7 +15811,7 @@
 
                        menu_make_selections     proc    near
 
-273F:6991  8B 36 3380                           mov     si,word ptr ds:[3380h]  ; (273F:3380=12Dh)
+273F:6991  8B 36 3380                           mov     si, data_3380
 273F:6995  F6 84 3383 80                        test    byte ptr ds:[3383h][si],80h ; (273F:3383=74h)
 273F:699A  74 36                                jz      loc_1327                ; Jump if zero
 273F:699C  C6 06 337D 00                        mov     data_269,0              ; (273F:337D=0)
@@ -15796,17 +15824,17 @@
 273F:69B0  FF 36 335E                           push    word ptr ds:[335Eh]     ; (273F:335E=0C183h)
 273F:69B4  E8 0299                              call    sub_166                 ; (6C50)
 273F:69B7  5B                                   pop     bx
-273F:69B8  8B 36 3380                           mov     si,word ptr ds:[3380h]  ; (273F:3380=12Dh)
-273F:69BC  89 9C 3382                           mov     data_770[si],bx 
+273F:69B8  8B 36 3380                           mov     si, data_3380
+273F:69BC  89 9C 3382                           mov     data_3382[si],bx 
 273F:69C0  89 84 3384                           mov     word ptr ds:[3384h][si],ax ; (273F:3384=810Ch)
 273F:69C4  83 C6 04                             add     si,4
-273F:69C7  C7 84 3382 FFFF                      mov     data_770[si], 0FFFFh 
-273F:69CD  89 36 3380                           mov     word ptr ds:[3380h],si  ; (273F:3380=12Dh)
+273F:69C7  C7 84 3382 FFFF                      mov     data_3382[si], 0FFFFh 
+273F:69CD  89 36 3380                           mov     data_3380, si
 
 273F:69D1                       loc_ret_1326:                                   ;  xref 273F:69A9, 69AE
 273F:69D1  C3                                   retn
 273F:69D2                       loc_1327:                                       ;  xref 273F:699A
-273F:69D2  83 06 3380 04                        add     word ptr ds:[3380h],4   ; (273F:3380=12Dh)
+273F:69D2  83 06 3380 04                        add     data_3380, 4
 273F:69D7  8B 84 3384                           mov     ax,word ptr ds:[3384h][si] ; (273F:3384=810Ch)
 273F:69DB  C6 06 337D 01                        mov     data_269,1              ; (273F:337D=0)
 273F:69E0  C3                                   retn
@@ -16182,8 +16210,6 @@
 273F:6C73  D3 E0                                shl     ax,cl                   ; Shift w/zeros fill
 273F:6C75  8B D8                                mov     bx,ax
 273F:6C77  26: 02 17                            add     dl,es:[bx]
-           nlure.lst                           Sourcer v6.09   17-Nov- 5   5:53 pm   Page 261
-
 273F:6C7A  EB F0                                jmp     short loc_1362          ; (6C6C)
 273F:6C7C                       loc_1363:                                       ;  xref 273F:6C6F
 273F:6C7C  26: 02 16 0000                       add     dl,es:data_1454e        ; (E375:0000=0)
@@ -17125,30 +17151,27 @@
                                 ;                              SUBROUTINE
                                 ;
                                 ;         Called from:   273F:57ED, 57F7
-                                ; This whole routine seems to be about finding any animation entry that
-                                ; falls within the bounds of a given rectangle. Called only by the
-                                ; close door proc.
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
-273F:726B                       sub_183         proc    near
+                            door_close_check    proc    near
 273F:726B  55                                   push    bp
 273F:726C  56                                   push    si
-273F:726D  8B 5F 0B                             mov     bx,[bx+0Bh]
-273F:7270  8B 57 0E                             mov     dx, [bx+0Eh]            ; Get room number
+273F:726D  8B 5F 0B                             mov     bx, [bx+HS_ANIM_OFFSET]
+273F:7270  8B 57 0E                             mov     dx, [bx+ANIM_ROOM_NUM]  ; Get room number
 273F:7273 \xFABE B14E                              mov     si, offset animation_table
 273F:7276  B9 002D                              mov     cx, NUM_ANIMATION_SLOTS
-273F:7279  8B 07                                mov     ax,[bx]
+273F:7279  8B 07                                mov     ax, [bx+ANIM_X]
 273F:727B  A3 10E6                              mov     char_rect_left, ax
-273F:727E  03 47 13                             add     ax,[bx+13h]
+273F:727E  03 47 13                             add     ax, [bx+ANIM_WIDTH_COPY]
 273F:7281  A3 10E8                              mov     char_rect_right, ax
-273F:7284  8B 47 02                             mov     ax,[bx+2]
-273F:7287  03 47 15                             add     ax,[bx+15h]
+273F:7284  8B 47 02                             mov     ax, [bx+ANIM_Y]
+273F:7287  03 47 15                             add     ax, [bx+ANIM_HEIGHT_COPY]
 273F:728A  50                                   push    ax
-273F:728B  2B 47 17                             sub     ax,[bx+17h]
-273F:728E  2B 47 22                             sub     ax,[bx+22h]
+273F:728B  2B 47 17                             sub     ax, [bx+ANIM_Y_CORRECTION]
+273F:728E  2B 47 22                             sub     ax, [bx+ANIM_CHAR_RECT_Y]
 273F:7291  A3 10EA                              mov     char_rect_top, ax
 273F:7294  58                                   pop     ax
-273F:7295  03 47 22                             add     ax,[bx+22h]
+273F:7295  03 47 22                             add     ax, [bx+ANIM_CHAR_RECT_Y]
 273F:7298  A3 10EC                              mov     char_rect_bottom, ax
 
 273F:729B                       locloop_1429:                                   ;  xref 273F:72FC
@@ -17171,11 +17194,11 @@
 273F:72C0                       loc_1430:
 273F:72C0  3D FFFE                              cmp     ax,0FFFEh
 273F:72C3  73 34                                jae     loc_1431                ; Skip if Id is 0fffeh or 0ffffh
-273F:72C5  8B 04                                mov     ax, [si]                ; Get anim x pos
+273F:72C5  8B 04                                mov     ax, [si+ANIM_X]         ; Get anim x pos
 273F:72C7  3B 06 10E8                           cmp     ax, char_rect_right    ; More than set X pos?
 273F:72CB  73 2C                                jae     loc_1431                ; If yes, skip entry
-273F:72CD  03 44 13                             add     ax,[si+13h]             ; Copy of anim width
-273F:72D0  3B 06 10E6                           cmp     ax, char_rect_left        ; Compare against loaded right
+273F:72CD  03 44 13                             add     ax,[si+ANIM_WIDTH_COPY] ; anim width
+273F:72D0  3B 06 10E6                           cmp     ax, char_rect_left      ; Compare against loaded right
 273F:72D4  72 23                                jb      loc_1431                ; Skip if less or equal
 273F:72D6  74 21                                jz      loc_1431
 
@@ -17184,32 +17207,31 @@
 ; is greater than the X end position. That is to say, the given horizontal slice
 
 273F:72D8  8B 44 02                             mov     ax, [si+ANIM_Y]         ; Get Y position
-273F:72DB  03 44 15                             add     ax,[si+15h]             ; Add copy of anim height
+273F:72DB  03 44 15                             add     ax, [si+ANIM_HEIGHT_COPY]; Add copy of anim height
 273F:72DE  8B E8                                mov     bp,ax
-273F:72E0  03 44 22                             add     ax,[si+22h]             ; ???
+273F:72E0  03 44 22                             add     ax, [si+ANIM_CHAR_RECT_Y]
 273F:72E3  3B 06 10EA                           cmp     ax, char_rect_top
 273F:72E7  72 10                                jb      loc_1431                ; Not meeting Y start
 273F:72E9  8B C5                                mov     ax, bp
-273F:72EB  2B 44 17                             sub     ax, [si+17h]
-273F:72EE  2B 44 22                             sub     ax, [si+22h]
+273F:72EB  2B 44 17                             sub     ax, [si+ANIM_Y_CORRECTION]
+273F:72EE  2B 44 22                             sub     ax, [si+ANIM_CHAR_RECT_Y]
 273F:72F1  3B 06 10EC                           cmp     ax, char_rect_bottom
 273F:72F5  74 0B                                je      loc_1432                ; Jump if equal
 273F:72F7  72 09                                jc      loc_1432                ; Jump if carry Set
-273F:72F9                       loc_1431:                                       ;  xref 273F:729D, 72A1, 72A7, 72AC
-                                                                                ;            72B4, 72BE, 72C3, 72CB
-                                                                                ;            72D4, 72D6, 72E7
+
+273F:72F9                       loc_1431:
 273F:72F9  83 C6 29                             add     si, ANIMATION_SLOT_SIZE
 273F:72FC  E2 9D                                loop    locloop_1429            ; Loop if cx > 0
 
-273F:72FE  0C 01                                or      al,1
-273F:7300  EB 02                                jmp     short loc_1433          ; (7304)
-273F:7302                       loc_1432:                                       ;  xref 273F:72F5, 72F7
-273F:7302  33 C0                                xor     ax,ax                   ; Zero register
-273F:7304                       loc_1433:                                       ;  xref 273F:7300
+273F:72FE  0C 01                                or      al,1                    ; Result = 1 (no blockings)
+273F:7300  EB 02                                jmp     short loc_1433
+273F:7302                       loc_1432:
+273F:7302  33 C0                                xor     ax,ax                   ; Result = 0 (a blocking)
+273F:7304                       loc_1433:
 273F:7304  5E                                   pop     si
 273F:7305  5D                                   pop     bp
 273F:7306  C3                                   retn
-                                sub_183         endp
+                            door_close_check    endp
 
 
                                 ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
@@ -19247,10 +19269,10 @@
                                 ;
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
                               
-273F:800F  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:800F  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:8013               loc_set_frame_offset:                                   ;  xref 273F:8269, 83C8, 840E, 84C7
                                                                                 ;            84D2, 85D1
-273F:8013 \xFA8A 44 2A                             mov     al, [si+HS_FRAME_NUM]
+273F:8013 \xFA8A 44 2A                             mov     al, [si+HS_ACTION_CTR]
 273F:8016  32 E4                                xor     ah, ah                   ; Zero register
 273F:8018  8B 5C 21                             mov     bx, [si+HS_PIXEL_OFFSET]
 273F:801B  F7 67 07                             mul     word ptr [bx+PIXEL_FRAME_SIZE]
@@ -19351,7 +19373,7 @@
 273F:80AE  8B 45 0F                             mov     ax,[di+HS_Y]
 273F:80B1  2D 000A                              sub     ax, 10
 273F:80B4  89 44 0F                             mov     [si+HS_Y], ax           ; Set y position
-273F:80B7  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:80B7  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:80BB  C7 44 24 0630                        mov     word ptr [si+HS_SCRIPT_OFFSET], 630h
 273F:80C0  BB 0425                              mov     bx, 425h
 273F:80C3  E9 8C00                              jmp     animation_load_entry
@@ -19432,7 +19454,7 @@
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
                              seq_method_55      proc    near
-273F:816C  C6 06 7D4B 01                        mov     BYTE PTR [goewin_hotspot_rec+HS_FRAME_NUM], 1
+273F:816C  C6 06 7D4B 01                        mov     BYTE PTR [goewin_hotspot_rec+HS_ACTION_CTR], 1
 273F:8171  2E A1 8168                           mov     ax, cs:data_410
 273F:8175  A3 7D21                              mov     [goewin_hotspot_rec], ax
 273F:8178  2E A1 816A                           mov     ax, cs:data_411
@@ -19445,13 +19467,13 @@
                                 ;
                                 ;\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC
 
-273F:8180  F6 44 2A FF                          test    bye ptr [SI+HS_FRAME_NUM], 0FFh
+273F:8180  F6 44 2A FF                          test    bye ptr [SI+HS_ACTION_CTR], 0FFh
 273F:8184  74 B8                                jz      loc_ret_1607
 273F:8186  E8 20 8E                             call    hotspot_script_execute
 273F:8189  75 B3                                jnz     loc_ret_1607
 273F:818B  C7 44 17 4F82                        mov     word ptr [si+HS_TICK_PROC], 4F82h
 273F:8190  C7 45 11 4F82                        mov     word ptr [di+ANIM_TICK_PROC], 4F82h
-273F:8195  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:8195  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:8199  C3                                   ret
 
                                 ;\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xDF
@@ -19962,7 +19984,7 @@
 273F:855A                       sub_213         proc    near
 273F:855A  53                                   push    bx
 273F:855B  E8 FD29                              call    sub_211                 ; list[room #] => bx
-273F:855E  F6 44 2A FF                          test    byte ptr [si+HS_FRAME_NUM], 0FFh
+273F:855E  F6 44 2A FF                          test    byte ptr [si+HS_ACTION_CTR], 0FFh
 273F:8562  75 45                                jnz     loc_1669                ; Jump if not zero
 273F:8564  58                                   pop     ax
 273F:8565  E8 FF6D                              call    sub_212                 ; (84D5)
@@ -20013,7 +20035,7 @@
 273F:85B6  83 C3 04                             add     bx,4
 273F:85B9  E2 F7                                loop    locloop_1670            ; Loop if cx > 0
 
-273F:85BB  C6 44 2A 00                          mov     byte ptr [si+HS_FRAME_NUM], 0
+273F:85BB  C6 44 2A 00                          mov     byte ptr [si+HS_ACTION_CTR], 0
 273F:85BF                       loc_1671:                                       ;  xref 273F:85C7
 273F:85BF  5B                                   pop     bx
 273F:85C0  33 C0                                xor     ax,ax                   ; Zero register
@@ -20278,7 +20300,7 @@
 273F:87A4                       loc_1685:                                       ;  xref 273F:8780
 273F:87A4  33 C0                                xor     ax,ax                   ; Zero register
 273F:87A6  89 44 61                             mov     [si+HS_ACTION_OFFSET], ax
-273F:87A9  88 44 2A                             mov     [si+HS_FRAME_NUM], al
+273F:87A9  88 44 2A                             mov     [si+HS_ACTION_CTR], al
 273F:87AC  89 44 42                             mov     [si+HS_V42], ax
 273F:87AF  88 44 44                             mov     [si+HS_V44], al
 273F:87B2  C3                                   retn
@@ -25999,7 +26021,9 @@
 31E4:30BF  32 00 67 01 8A 01                    db       32h, 00h, 67h, 01h, 8Ah, 01h
 31E4:30C5  BE 00 01 01 0B 00                    db      0BEh, 00h, 01h, 01h, 0Bh, 00h
 31E4:30CB  00 00 2D 00 00 00                    db       00h, 00h, 2Dh, 00h, 00h, 00h
-31E4:30D1  7F 00 9A 00 C6 00                    db       7Fh, 00h, 9Ah, 00h,0C6h, 00h
+31E4:30D1  7F 00 9A                             db       7Fh, 00h, 9Ah
+
+31E4:30D4  00 C6 00    hotspot_display_buffer   db       00h,0C6h, 00h
 31E4:30D7  19 01 0D 00 00 00                    db       19h, 01h, 0Dh, 00h, 00h, 00h
 31E4:30DD  2A 00 A7 01 BF 01                    db       2Ah, 00h,0A7h, 01h,0BFh, 01h
 31E4:30E3  CF 00 21 01 0E 00                    db      0CFh, 00h, 21h, 01h, 0Eh, 00h
@@ -26120,8 +26144,9 @@
 31E4:3347  23 00 00 00 7F                       db       23h, 00h, 00h, 00h, 7Fh
 31E4:334C  8700         popmenu_num_entries     dw       8700h
 31E4:334D  00 02 01 47 01                       db       00h, 02h, 01h, 47h, 01h
-31E4:3353  0D 00 00 00 17 00                    db       0Dh, 00h, 00h, 00h, 17h, 00h
-31E4:3359  3B 01 7E 01 B5 00                    db       3Bh, 01h, 7Eh, 01h,0B5h, 00h
+31E4:3353  0D 00 00 00 17                       db       0Dh, 00h, 00h, 00h, 17h
+31E4:3358  3B00                   data_3358     dw       3B00h
+31E4:335A  01 7E 01 B5 00                       db       01h, 7Eh, 01h,0B5h, 00h
 31E4:335F  EB 00 0B                             db      0EBh, 00h, 0Bh
 31E4:3362  0000       popmenu_current_index     dw       0
 31E4:3364  0100         popmenu_prior_index     dw       100h
@@ -26131,11 +26156,13 @@
 31E4:336B  0F 01 47 01 0E 00                    db       0Fh, 01h, 47h, 01h, 0Eh, 00h
 31E4:3371  00 00 18 00 0C 01                    db       00h, 00h, 18h, 00h, 0Ch, 01h
 31E4:3377  2F 01 CB 00 F9 00                    db       2Fh, 01h,0CBh, 00h,0F9h, 00h
-31E4:337D  0D 00 00 00 1C                       db       0Dh, 00h, 00h, 00h, 1Ch
+31E4:337D  0D 00 00                             db       0Dh, 00h, 00h
 
-31E4:3382  00 00                   data_770     dw       0
-
-31E4:3384  00 D4 00 0B 01                       db       00h,0D4h, 00h, 0Bh, 01h
+31E4:3380  1C00                   data_3380     dw       1C00h
+31E4:3382  00 00                  data_3382     dw       0
+31E4:3384  D400                   data_3384     dw      0D400h
+31E4:3386  0B00                   data_3386     dw       0B00h
+31E4:3388  01                                   db       01h
 31E4:3389  BB 00 0A 01 0B 00                    db      0BBh, 00h, 0Ah, 01h, 0Bh, 00h
 31E4:338F  00 00 10 00 9B 00                    db       00h, 00h, 10h, 00h, 9Bh, 00h
 31E4:3395  DF 00 21 01 47 01                    db      0DFh, 00h, 21h, 01h, 47h, 01h
@@ -26377,16 +26404,23 @@
 ........
 31E4:47DD  0000 0000            data_786        dd      00000h                  ; Data table (indexed access)
 31E4:47E1  02EF[00]                             db      751 dup (0)
-31E4:4AD0  11 04 12 04 1F 04                    db       11h, 04h, 12h, 04h, 1Fh, 04h
-31E4:4AD6  20 04 21 04 22 04                    db       20h, 04h, 21h, 04h, 22h, 04h
-31E4:4ADC  26 04 27 04 28 04                    db       26h, 04h, 27h, 04h, 28h, 04h
-31E4:4AE2  29 04 36 04 37 04                    db       29h, 04h, 36h, 04h, 37h, 04h
-31E4:4AE8  00 00 21 04 79 08                    db       00h, 00h, 21h, 04h, 79h, 08h
-31E4:4AEE  E9 03 C7 08 29 04                    db      0E9h, 03h,0C7h, 08h, 29h, 04h
-31E4:4AF4  D1 08 22 04 D4 08                    db      0D1h, 08h, 22h, 04h,0D4h, 08h
-31E4:4AFA  20 04 D6 08 2B 04                    db       20h, 04h,0D6h, 08h, 2Bh, 04h
-31E4:4B00  56 09 F2 03 E6 0B                    db       56h, 09h,0F2h, 03h,0E6h, 0Bh
-31E4:4B06  00 00                                db       00h, 00h
+
+; List of hotspots that don't to be walked to before being looked at
+                         lookat_hotspot_list
+31E4:4AD0  0411 0412 041F 0420                  dw      0411h, 0412h, 041Fh, 0420h
+31E4:4AD8  0421 0422 0426 0427                  dw      0421h, 0422h, 0426h, 0427h
+31E4:4AE0  0428 0429 0436 0437                  dw      0428h, 0429h, 0436h, 0437h
+31E4:4AE8  0000                                 dw      0
+
+31E4:4AEA  0421 0879      bribe_hotspot_list    dw      421h, 879h
+31E4:4AEE  03E9 08C7                            dw      3E9h, 8C7h
+31E4:4AF2  0429 08D1                            dw      429h, 8D1h
+31E4:4AF6  0422 08D4                            dw      422h, 8D4h
+31E4:4AFA  0420 08D6                            dw      420h, 8D6h
+31E4:4AFE  042B 0956                            dw      42Bh, 956h
+31E4:4B02  03F2 0BE6                            dw      3F2h,0BE6h
+31E4:4B06  0000                                 dw      0
+
 31E4:4B08  59 6F 75 20 61 72    carrying_str    db      'You are carrying '
 31E4:4B0E  65 20 63 61 72 72
 31E4:4B14  79 69 6E 67 20
@@ -26400,7 +26434,7 @@
 
 31E4:4B34  000C[00]                             db      13 dup (0)
 31E4:4B40  00                   data_791        db      0
-31E4:4B41  00 00                                db      0, 0
+31E4:4B41  00 00                data_792        dw      0
 
 31E4:4B43  0050[00]             hotspot_name    db      80 dup (0)
 31E4:4B93  005D[00]              action_name    db      93 dup (0)
@@ -31674,7 +31708,7 @@
 31E4:BC43  06 00 00 00 00 00                    db       06h, 00h, 00h, 00h, 00h, 00h
 31E4:BC49  00 00                 num_groats     dw       0
 
-                      hotspot_proximity_list
+                        hotspot_walkto_list
 31E4:BC4B  0418 0143 8123                       dw       418h, 143h, 8123h
 31E4:BC51  2721 0144 80FB
 31E4:BC57  2722 0095 8105

Modified: scummvm/trunk/engines/lure/diassembly/Lure_notes.txt
===================================================================
--- scummvm/trunk/engines/lure/diassembly/Lure_notes.txt	2006-04-25 22:29:32 UTC (rev 22161)
+++ scummvm/trunk/engines/lure/diassembly/Lure_notes.txt	2006-04-25 22:38:00 UTC (rev 22162)
@@ -212,6 +212,11 @@
              dh = 0=>non fatal error, 1=>fatal error
                   If a fatal error, function does not return
 
+display_message_dialog - Uses the message segment data to look up the
+              specific response to an action for a specific character
+   Input:  cx = character Id
+           ??
+
 display_message_dialog_3 - Uses the message segment data to look up the
               specific response to an action for a specific character
    Input:  ax = Message Id. Commonly stored in the sequence field for
@@ -219,6 +224,11 @@
            si = Character hotspot record
            di = Player animation slot
 
+door_close_check - Checks the passed hotspot, which is one half of a doorway,
+              to make sure there's no character within it, preventing closing
+   Input:  bx = Hotspot offset
+  Output:  al = 1 => Door can close, 0 => Door can't close
+
 draw_dialog_frame - Draws the frame for a dialog in an off-screen buffer
    Input:  es:di = Destination buffer
               bx = Horizontal size of dialog - 16
@@ -780,6 +790,9 @@
             8h     1    Script flag - a non-zero value indicates that the value
                         at offset 9h is a script offset to execute. Otherwise,
                         the offset is treated as a code subroutine, and jumped to
+                        Also used by non-visual hotspots to indicate the direction
+                        to face the character in when an action is performed on
+                        the hotspot
             9h     2    Script sequence to execute, or offset for loading
                         routine for hotspot. So far I'm aware of two code routines:
                            7167h = stub method that calls animation_load
@@ -817,7 +830,9 @@
                         frames for a given direction to quickly retrieve the
                         position change and frame number in a walking sequence -
                         used along with offset 26h to handling walking
-           2Ah     1    Current frame number
+           2Ah     1    A counter used to determine the number of times the
+                        action precheck method has been called within the
+                        handling of an action
            2Bh     2    ???
            2Dh     2    Script Id of a hotspot the character is to use
            2Fh     2    Hotspot Id of a hotspot the character is to use


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list