aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/lure/diassembly/LURE.ASM190
1 files changed, 98 insertions, 92 deletions
diff --git a/engines/lure/diassembly/LURE.ASM b/engines/lure/diassembly/LURE.ASM
index ca4e681f57..0fedcbe337 100644
--- a/engines/lure/diassembly/LURE.ASM
+++ b/engines/lure/diassembly/LURE.ASM
@@ -141,6 +141,7 @@ ANIM_LAYER1_SKIP equ 1Dh
ANIM_VOICE_CHAR_ID equ 1Eh
ANIM_VOICE_CTR equ 24h
ANIM_DIRECTION equ 26h
+ANIM_UNKOWN1 equ 27h
ANIM_START_COLOUR equ 28h
; Hotspot header record constants
@@ -176,10 +177,11 @@ HS_TALK_Y equ 36h
HS_TALK_COUNTDOWN equ 37h
HS_TALK_CHAR_ID equ 39h
HS_RESPONSE_ID equ 3Ch
+HS_UNKNOWN1 equ 44h
HS_DIRECTION equ 50h
HS_DEST_HOTSPOT equ 52h
HS_DEST_X equ 54h
-HS_CHAR_Y equ 56h
+HS_DEST_Y equ 56h
HS_MOMENT_SRC_OFFSET equ 5Ah
HS_ACTION_OFFSET equ 61h
HS_FIRST_ACTION_OFFSET equ 63h
@@ -2710,9 +2712,12 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
+ ; bx=character Id, cx=index in master script table
+ ; Usage of action block for hotspot likely to be making the alternate
+ ; hotspot script non-interruptable until done
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
- seq_method_27 proc near
+ seq_set_blocking_hotspot_script proc near
273F:10A3 81 FB 03E8 cmp bx, PLAYER_HOTSPOT_ID
273F:10A7 75 05 jne loc_154 ; Jump if not equal
273F:10A9 C6 06 9834 02 mov byte ptr data_427,2 ; (273F:9834=0F9h)
@@ -2722,15 +2727,15 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:10B3 81 C1 57E0 add cx, offset hotspot_script_master_list
273F:10B7 8B D9 mov bx,cx
273F:10B9 8B 07 mov ax,[bx]
-273F:10BB 89 44 24 mov [si+24h],ax
-273F:10BE 8B DE mov bx,si
-273F:10C0 03 5C 61 add bx,[si+61h]
-273F:10C3 83 C3 63 add bx,63h
-273F:10C6 C6 07 03 mov byte ptr [bx],3
-273F:10C9 8B 7C 0B mov di,[si+0Bh]
-273F:10CC C6 44 49 01 mov byte ptr [si+49h],1
+273F:10BB 89 44 24 mov [si+HS_SCRIPT_OFFSET], ax
+273F:10BE 8B DE mov bx, si
+273F:10C0 03 5C 61 add bx, [si+HS_ACTION_OFFSET]
+273F:10C3 83 C3 63 add bx, HS_FIRST_ACTION_OFFSET
+273F:10C6 C6 07 03 mov byte ptr [bx], PLAYER_ACTION_EXEC_SCRIPT
+273F:10C9 8B 7C 0B mov di, [si+HS_ANIM_OFFSET]
+273F:10CC C6 44 49 01 mov byte ptr [si+49h], 1
273F:10D0 E9 605B jmp loc_1413 ; (712E)
- seq_method_27 endp
+ seq_set_blocking_hotspot_script endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
@@ -3138,7 +3143,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:13C4 03 5C 61 add bx,[si+61h]
273F:13C7 83 C3 63 add bx,63h
273F:13CA 89 4C 54 mov [si+HS_DEST_X], cx
-273F:13CD 89 54 56 mov [si+HS_CHAR_Y], dx
+273F:13CD 89 54 56 mov [si+HS_DEST_Y], dx
273F:13D0 C7 44 52 FFFF mov [si+HS_DEST_HOTSPOT], 0FFFFh
273F:13D5 A1 1920 mov ax, room_exit_hotspot_id
273F:13D8 0B C0 or ax,ax
@@ -3156,7 +3161,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:13FA 2D 0010 sub ax,10h
273F:13FD 89 44 54 mov [si+HS_DEST_X], ax
273F:1400 A1 11DD mov ax, char_dest_y
-273F:1403 89 44 56 mov [si+HS_CHAR_Y], ax
+273F:1403 89 44 56 mov [si+HS_DEST_Y], ax
273F:1406 loc_192: ; xref 273F:13DA, 13DF
273F:1406 C6 07 01 mov byte ptr [bx], PLAYER_ACTION_START_WALK
273F:1409 33 C0 xor ax,ax ; Zero register
@@ -3209,8 +3214,8 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:1463 D1 E1 loc_194_2: shl cx, 1
273F:1465 81 C1 57E0 add cx, offset hotspot_script_master_list
273F:1469 8B D9 mov bx, cx
-273F:146B 8B 07 mov ax, [bx]
-273F:146D 89 44 24 mov word ptr [si+24h], ax
+273F:146B 8B 07 mov ax, [bx] ; Get script offset from list
+273F:146D 89 44 24 mov [si+HS_SCRIPT_OFFSET], ax
273F:1470 33 C0 xor ax, ax
273F:1472 89 44 26 mov word ptr [si+26h], ax
273F:1475 89 44 28 mov word ptr [si+28h], ax
@@ -10290,8 +10295,13 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:4360 E9 0EE3 jmp loc_1067 ; (5246)
sub_91 endp
+ ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
+ ; JUMP POINT
+ ;
+ ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
+
273F:4363 loc_842: ; xref 273F:50E7, 5F24
-273F:4363 ú88 44 44 mov [si+44h],al
+273F:4363 ú88 44 44 mov [si+HS_UNKNOWN1], al
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
@@ -10884,8 +10894,6 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
- nlure.lst Sourcer v6.09 17-Nov- 5 5:53 pm Page 177
-
;
; Called from: 273F:5411, 572B, 57C6, 58C3, 5920, 5958, 5ACA
; 5B43, 5BAA, 5C76, 5CC7, 8A00
@@ -12102,7 +12110,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:4F82 ú8B DE mov bx, si
273F:4F84 03 5C 61 add bx, [si+61h]
273F:4F87 83 C3 63 add bx, 63h
-273F:4F8A E8 11EB call sub_144 ; (6178)
+273F:4F8A E8 11EB call talk_countdown_handler
273F:4F8D F7 44 2F FFFF test word ptr [si+2Fh],0FFFFh
273F:4F92 74 1F jz loc_1023 ; Jump if zero
273F:4F94 8B 44 2B mov ax,[si+2Bh]
@@ -12290,7 +12298,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5131 57 push di
273F:5132 53 push bx
273F:5133 E8 F42A call sub_105 ; (4560)
-273F:5136 8B 4C 56 mov cx,[si+HS_CHAR_Y]
+273F:5136 8B 4C 56 mov cx,[si+HS_DEST_Y]
273F:5139 8B 5C 54 mov bx,[si+HS_DEST_X]
273F:513C 8B 45 1B mov ax,[di+1Bh]
273F:513F 8A 54 4C mov dl,[si+4Ch]
@@ -12545,7 +12553,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5357 8A C6 mov al,dh
273F:5359 80 E6 0F and dh,0Fh
273F:535C 89 4C 54 mov [si+HS_DEST_X],cx
-273F:535F 89 54 56 mov [si+HS_CHAR_Y],dx
+273F:535F 89 54 56 mov [si+HS_DEST_Y],dx
273F:5362 C7 44 52 FFFF mov [si+HS_DEST_HOTSPOT], 0FFFFh
273F:5367 53 push bx
273F:5368 úBB 2E57 mov bx,2E57h ; (273F:2E57=0A0h)
@@ -12801,7 +12809,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5538 03 5C 61 add bx,[si+61h]
273F:553B 83 C3 63 add bx,63h
273F:553E C6 07 01 mov byte ptr [bx],1
-273F:5541 89 54 56 mov [si+HS_CHAR_Y],dx
+273F:5541 89 54 56 mov [si+HS_DEST_Y],dx
273F:5544 89 4C 54 mov [si+HS_DEST_X],cx
273F:5547 33 C0 xor ax,ax ; Zero register
273F:5549 C3 retn
@@ -13028,7 +13036,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:569D 2B 4F 04 sub cx,[bx+4]
273F:56A0 F7 E1 mul cx ; dx:ax = reg * ax
273F:56A2 03 57 04 add dx,[bx+4]
-273F:56A5 89 54 56 mov [si+HS_CHAR_Y],dx
+273F:56A5 89 54 56 mov [si+HS_DEST_Y],dx
273F:56A8 8B C2 mov ax,dx
273F:56AA 5A pop dx
273F:56AB B9 0003 mov cx,3
@@ -13252,7 +13260,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5823 8B 0E BA19 mov cx, use_hotspot_id
273F:5827 B8 0001 mov ax,1
273F:582A BA 007C mov dx,7Ch
-273F:582D E8 0922 call sub_143 ; (6152)
+273F:582D E8 0922 call talk_converse_2
273F:5830 E8 FDC3 call hotspot_get_action_sequence
273F:5833 79 03 jns loc_1130 ; Jump if not sign
273F:5835 E9 0B79 jmp display_message_dialog_3
@@ -13847,7 +13855,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5C69 8B D0 mov dx,ax
273F:5C6B BB 03E8 mov bx, PLAYER_HOTSPOT_ID
273F:5C6E 8B 0E BA1B mov cx, active_hotspot_id
-273F:5C72 E8 04A7 call sub_140 ; (611C)
+273F:5C72 E8 04A7 call talk_setup
273F:5C75 5B pop bx
273F:5C76 E8 EA75 call sub_110 ; (46EE)
273F:5C79 53 push bx
@@ -14052,7 +14060,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5DF2 8B 5F FA mov bx,[bx-6]
273F:5DF5 8B 4D 1B mov cx,[di+1Bh]
273F:5DF8 56 push si
-273F:5DF9 E8 032E call sub_141 ; (612A)
+273F:5DF9 E8 032E call talk_setup_2
273F:5DFC 5E pop si
273F:5DFD loc_1198: ; xref 273F:5DF0
273F:5DFD 83 C5 08 add bp,8
@@ -14077,7 +14085,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5E26 8B 47 02 mov ax,[bx+2]
273F:5E29 8B 5D 1B mov bx,[di+1Bh]
273F:5E2C B9 03E7 mov cx,3E7h
-273F:5E2F E9 0319 jmp loc_1234 ; (614B)
+273F:5E2F E9 0319 jmp talk_converse
;* No entry point to code
273F:5E32 8B DE mov bx,si
273F:5E34 03 5C 61 add bx,[si+61h]
@@ -14100,7 +14108,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5E44 8B DE mov bx, si
273F:5E46 03 5C 61 add bx, [si+HS_ACTION_OFFSET]
273F:5E49 83 C3 63 add bx, HS_FIRST_ACTION_OFFSET
-273F:5E4C E8 0329 call sub_144 ; Handles talk dialogs
+273F:5E4C E8 0329 call talk_countdown_handler
273F:5E4F F7 44 1F FFFF test word ptr [si+HS_FRAME_CTR], 0FFFFh
273F:5E54 74 0B jz loc_1200 ; Jump if zero
273F:5E56 C7 06 F010 0000 mov timer_ticks, 0
@@ -14111,7 +14119,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5E64 F6 45 1D FF test byte ptr [di+ANIM_LAYER1_SKIP], 0FFh
273F:5E68 74 13 jz loc_1202 ; Jump if zero
273F:5E6A C7 06 F010 0000 mov timer_ticks, 0
-273F:5E70 F7 06 10BE FFFF test data_615, 0FFFFh
+273F:5E70 F7 06 10BE FFFF test data_615, 0FFFFh
273F:5E76 74 01 jz loc_1201 ; Jump if zero
273F:5E78 C3 retn
273F:5E79 loc_1201: ; xref 273F:5E76
@@ -14124,7 +14132,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5E8A C7 44 58 0000 mov word ptr [si+58h],0
273F:5E8F 56 push si
273F:5E90 E8 AE57 call get_room_resource_pointer2
-273F:5E93 80 7C 44 07 cmp byte ptr [si+44h],7
+273F:5E93 80 7C 44 07 cmp byte ptr [si+HS_UNKNOWN1], 7
273F:5E97 5E pop si
273F:5E98 74 03 jz loc_1203 ; Jump if zero
273F:5E9A C6 07 00 mov byte ptr [bx],0
@@ -14138,7 +14146,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5EB3 83 7C 4A 01 cmp word ptr [si+4Ah], 1
273F:5EB7 75 0F jne loc_1204 ; Jump if not equal
273F:5EB9 C7 44 4A 0000 mov word ptr [si+4Ah], 0
-273F:5EBE F6 44 44 FF test byte ptr [si+44h], 0FFh
+273F:5EBE F6 44 44 FF test byte ptr [si+HS_UNKNOWN1], 0FFh
273F:5EC2 75 07 jnz loc_1205 ; Jump if not zero
273F:5EC4 E8 E4C0 call sub_94 ; (4387)
273F:5EC7 C3 retn
@@ -14160,24 +14168,24 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5EF0 C3 retn
273F:5EF1 loc_1206: ; xref 273F:5EE1
273F:5EF1 E8 E493 call sub_94 ; (4387)
-273F:5EF4 C6 44 44 00 mov byte ptr [si+44h],0
+273F:5EF4 C6 44 44 00 mov byte ptr [si+HS_UNKNOWN1], 0
273F:5EF8 F6 44 FF FF test byte ptr [si-1],0FFh
273F:5EFC 74 17 jz loc_ret_1207 ; Jump if zero
273F:5EFE C6 44 FF 00 mov byte ptr [si-1],0
273F:5F02 8B 44 FB mov ax,[si-5]
273F:5F05 89 44 54 mov [si+HS_DEST_X], ax
273F:5F08 8B 44 FD mov ax,[si-3]
-273F:5F0B 89 44 56 mov [si+HS_CHAR_Y], ax
-273F:5F0E C6 07 01 mov byte ptr [bx],1
-273F:5F11 C6 45 27 00 mov byte ptr [di+27h],0
+273F:5F0B 89 44 56 mov [si+HS_DEST_Y], ax
+273F:5F0E C6 07 01 mov byte ptr [bx], PLAYER_ACTION_START_WALK
+273F:5F11 C6 45 27 00 mov byte ptr [di+ANIM_UNKOWN1], 0
273F:5F15 loc_ret_1207: ; xref 273F:5EFC
273F:5F15 C3 retn
273F:5F16 loc_1208: ; xref 273F:5ED0, 5ED4
-273F:5F16 B0 02 mov al,2
-273F:5F18 8A 27 mov ah,[bx]
-273F:5F1A F6 C4 FF test ah,0FFh
+273F:5F16 B0 02 mov al, 2
+273F:5F18 8A 27 mov ah, [bx]
+273F:5F1A F6 C4 FF test ah, 0FFh
273F:5F1D 75 08 jnz loc_1209 ; Jump if not zero
273F:5F1F C7 44 52 0000 mov [si+HS_DEST_HOTSPOT], 0
273F:5F24 E9 E43C jmp loc_842 ; (4363)
@@ -14202,7 +14210,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5F48 E8 B05E call hotspot_script_execute
273F:5F4B 0B C0 or ax,ax ; Zero ?
273F:5F4D 75 F5 jnz loc_ret_1210 ; Jump if not zero
-273F:5F4F C6 07 02 mov byte ptr [bx],2
+273F:5F4F C6 07 02 mov byte ptr [bx], PLAYER_ACTION_DISPATCH_ACTION
273F:5F52 C3 retn
; Code below is responsible for starting the player walking
@@ -14213,10 +14221,10 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5F59 C6 07 04 mov byte ptr [bx], 4
273F:5F5C E8 E428 call sub_94 ; (4387)
273F:5F5F loc_1214: ; xref 273F:5F3F
-273F:5F5F C6 44 44 00 mov byte ptr [si+44h],0
+273F:5F5F C6 44 44 00 mov byte ptr [si+HS_UNKNOWN1],0
273F:5F63 E8 E5FA call sub_105 ; (4560)
273F:5F66 8B 4C 54 mov cx, [si+HS_DEST_X]
-273F:5F69 8B 54 56 mov dx, [si+HS_CHAR_Y]
+273F:5F69 8B 54 56 mov dx, [si+HS_DEST_Y]
273F:5F6C 53 push bx
273F:5F6D 56 push si
273F:5F6E 57 push di
@@ -14239,7 +14247,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5F86 loc_1215:
273F:5F86 3D 0001 cmp ax,1
273F:5F89 74 42 je loc_1218 ; Jump if equal
-273F:5F8B F6 45 27 01 test byte ptr [di+27h],1
+273F:5F8B F6 45 27 01 test byte ptr [di+ANIM_UNKOWN1], 1
273F:5F8F 75 05 jnz loc_1216 ; Jump if not zero
273F:5F91 3D 0002 cmp ax,2
273F:5F94 74 37 je loc_1218 ; Jump if equal
@@ -14251,7 +14259,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5FA2 C6 44 FF 01 mov byte ptr [si-1],1
273F:5FA6 8B 44 54 mov ax,[si+HS_DEST_X]
273F:5FA9 89 44 FB mov [si-5],ax
-273F:5FAC 8B 44 56 mov ax,[si+HS_CHAR_Y]
+273F:5FAC 8B 44 56 mov ax,[si+HS_DEST_Y]
273F:5FAF 89 44 FD mov [si-3],ax
273F:5FB2 80 44 4C 01 add byte ptr [si+4Ch],1
273F:5FB6 E9 F6AD jmp loc_1108 ; (5666)
@@ -14286,7 +14294,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:5FF7 56 push si
273F:5FF8 53 push bx
273F:5FF9 E8 11F2 call room_exit_hs_get_pointer
-273F:5FFC 8A 44 0C mov al,[si+0Ch]
+273F:5FFC 8A 44 0C mov al, [si+REHS_EXIT_BLOCKED]
273F:5FFF 5B pop bx
273F:6000 5E pop si
273F:6001 0A C0 or al,al ; Is exit now blocked?
@@ -14300,19 +14308,19 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:600C 0B C0 or ax,ax ; Zero ?
273F:600E 75 F8 jnz loc_ret_1220 ; Jump if not zero
273F:6010 E8 AE9D call character_update_frame
-273F:6013 0A C0 or al,al ; Zero ?
+273F:6013 0A C0 or al, al ; Zero ?
273F:6015 74 1F jz loc_1224 ; Jump if zero
273F:6017 80 3E 9834 04 cmp byte ptr data_427,4 ; (273F:9834=0F9h)
273F:601C 75 05 jne loc_1222 ; Jump if not equal
273F:601E C6 06 9834 00 mov byte ptr data_427,0 ; (273F:9834=0F9h)
273F:6023 loc_1222: ; xref 273F:601C
-273F:6023 F6 44 FF FF test byte ptr [si-1],0FFh
+273F:6023 F6 44 FF FF test byte ptr [si-1], 0FFh
273F:6027 74 0A jz loc_1223 ; Jump if zero
-273F:6029 C6 44 44 06 mov byte ptr [si+44h],6
-273F:602D C7 44 42 000F mov word ptr [si+42h],0Fh
+273F:6029 C6 44 44 06 mov byte ptr [si+HS_UNKNOWN1], 6
+273F:602D C7 44 42 000F mov word ptr [si+42h], 0Fh
273F:6032 C3 retn
273F:6033 loc_1223: ; xref 273F:5FDB, 6027
-273F:6033 C6 07 02 mov byte ptr [bx],2
+273F:6033 C6 07 02 mov byte ptr [bx], PLAYER_ACTION_DISPATCH_ACTION
273F:6036 loc_1224: ; xref 273F:6015
273F:6036 E9 E24F jmp loc_833 ; (4288)
@@ -14334,7 +14342,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:6049 C6 44 FF 01 mov byte ptr [si-1],1
273F:604D 8B 44 54 mov ax,[si+HS_DEST_X]
273F:6050 89 44 FB mov [si-5],ax
-273F:6053 8B 44 56 mov ax,[si+HS_CHAR_Y]
+273F:6053 8B 44 56 mov ax,[si+HS_DEST_Y]
273F:6056 89 44 FD mov [si-3],ax
273F:6059 C6 06 9834 04 mov byte ptr data_427,4 ; (273F:9834=0F9h)
273F:605E C6 44 2A 00 mov byte ptr [si+2Ah],0
@@ -14438,7 +14446,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:610A B0 01 mov al, 1
273F:610C 8B D1 mov dx, cx
273F:610E B9 03E7 mov cx, 3E7h
-273F:6111 EB 38 jmp short loc_1234 ; (614B)
+273F:6111 EB 38 jmp talk_converse
sub_139 endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
@@ -14447,25 +14455,26 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
273F:6113 B8 0001 mov ax,1
-273F:6116 EB 33 jmp short loc_1234 ; (614B)
+273F:6116 EB 33 jmp talk_converse
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
+ ; bx=talking char Id, cx=talk to char Id, dx=string Id
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
- seq_method_31 proc near
+ seq_converse proc near
273F:6118 32 C0 xor al, al
-273F:611A EB 2F jmp loc_1234
- seq_method_31 endp
+273F:611A EB 2F jmp talk_converse
+ seq_converse endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
-273F:611C sub_140:
-273F:611C EB 0C jmp short sub_141
+273F:611C talk_setup:
+273F:611C EB 0C jmp talk_setup_2
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
@@ -14476,14 +14485,13 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:6120 8B D3 mov dx,bx
273F:6122 BB 03E8 mov bx, PLAYER_HOTSPOT_ID
273F:6125 B9 03E7 mov cx,3E7h
-273F:6128 EB 21 jmp short loc_1234 ; (614B)
+273F:6128 EB 21 jmp short talk_converse
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: 273F:5DF9
-273F:612A sub_141:
-273F:612A loc_1232: ; xref 273F:611C
+273F:612A talk_setup_2:
273F:612A 51 push cx
273F:612B E8 ABBA call get_room_resource_pointer
273F:612E 59 pop cx
@@ -14493,7 +14501,6 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
; Called from: 273F:5DDC, 8C43, 8C8F, 8D33
talk_setup_3:
-273F:612F loc_1233: ; si = character
273F:612F ú89 54 3C mov [si+HS_RESPONSE_ID], dx
273F:6132 89 4C 39 mov [si+HS_TALK_CHAR_ID], cx
273F:6135 C7 44 37 0028 mov word ptr [si+37h], 28h
@@ -14502,11 +14509,12 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:613D E8 ABA8 call get_room_resource_pointer ; Get char talking to
273F:6140 5B pop bx
273F:6141 87 DE xchg bx, si ; bx=character talking to
-273F:6143 8B 47 37 mov ax, [bx+37h]
-273F:6146 01 44 37 add [si+37h], ax
+273F:6143 8B 47 37 mov ax, [bx+HS_TALK_COUNTDOWN]
+273F:6146 01 44 37 add [si+HS_TALK_COUNTDOWN], ax
273F:6149 EB 16 jmp short loc_1236
-273F:614B loc_1234: ; xref 273F:5E2F, 6111, 6116, 6128
+; bx=talking char Id, cx=talking to char Id, dx=string Id, ax=???
+273F:614B talk_converse:
273F:614B 50 push ax
273F:614C 51 push cx
273F:614D E8 AB98 call get_room_resource_pointer
@@ -14517,15 +14525,14 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;
; Called from: 273F:582D, 638C
-273F:6152 sub_143:
-273F:6152 loc_1235: ; xref 273F:6446
+273F:6152 talk_converse_2:
273F:6152 ú89 54 3C mov [si+HS_RESPONSE_ID], dx
-273F:6155 89 4C 39 mov [si+39h],cx
-273F:6158 C7 44 37 0028 mov word ptr [si+37h],28h
+273F:6155 89 4C 39 mov [si+HS_TALK_CHAR_ID],cx
+273F:6158 C7 44 37 0028 mov [si+HS_TALK_COUNTDOWN], 28h
273F:615D A8 FF test al,0FFh
273F:615F 74 16 jz loc_ret_1237 ; Jump if zero
-273F:6161 loc_1236: ; xref 273F:6149
-273F:6161 8B 44 37 mov ax, [si+37h]
+273F:6161 loc_1236: ; xref 273F:6149
+273F:6161 8B 44 37 mov ax, [si+HS_TALK_COUNTDOWN]
273F:6164 89 44 42 mov [si+42h], ax
273F:6167 C6 44 44 05 mov byte ptr [si+44h],5
273F:616B A1 BA19 mov ax, use_hotspot_id
@@ -14533,7 +14540,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:6171 A1 BA1B mov ax, active_hotspot_id
273F:6174 89 44 40 mov [si+40h], ax
-273F:6177 loc_ret_1237: ; xref 273F:615F, 617D
+273F:6177 loc_ret_1237:
273F:6177 C3 retn
sub_139 endp
@@ -14546,8 +14553,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
; si = hotspot record, bx = table offset
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
- sub_144 proc near
-273F:6178 loc_1238: ; xref 273F:862D
+ talk_countdown_handler proc near
273F:6178 úF7 44 37 FFFF test word ptr [si+HS_TALK_COUNTDOWN], 0FFFFh
273F:617D 74 F8 jz loc_ret_1237 ; Jump if zero
273F:617F 83 7C 37 28 cmp word ptr [si+HS_TALK_COUNTDOWN], 28h
@@ -14583,7 +14589,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:61CD loc_1242: ; xref 273F:61B7
273F:61CD 5B pop bx
273F:61CE C3 retn
- sub_144 endp
+ talk_countdown_handler endp
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
@@ -14917,11 +14923,11 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
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:643E E9 FCEE jmp loc_1233 ; (612F)
+273F:643E E9 FCEE jmp talk_setup_3
273F:6441 loc_1266: ; xref 273F:6438
273F:6441 B9 03E7 mov cx,3E7h
273F:6444 B0 01 mov al,1
-273F:6446 E9 FD09 jmp loc_1235 ; (6152)
+273F:6446 E9 FD09 jmp talk_converse_2
273F:6449 loc_ret_1267: ; xref 273F:640D, 6451
273F:6449 C3 retn
@@ -16838,7 +16844,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:71E1 26: 8B 0E 0000 mov cx, es:[0]
273F:71E6 loc_1422:
273F:71E6 89 4D 08 mov [di+ANIM_FRAME_OFFSET], cx ; Set frame
-273F:71E9 C6 45 27 01 mov byte ptr [di+27h],1
+273F:71E9 C6 45 27 01 mov byte ptr [di+ANIM_UNKOWN1], 1
273F:71ED C3 retn
animation_load endp
@@ -18935,7 +18941,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:7F36 C3 ret
set_village_skorl_tick_proc endp
-273F:7F37 E8 3E E2 call sub_144
+273F:7F37 E8 3E E2 call talk_countdown_handler
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
@@ -19296,7 +19302,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
-273F:81B3 E8 DFC2 call sub_144 ; (6178)
+273F:81B3 E8 DFC2 call talk_countdown_handler
273F:81B6 F7 44 1F FFFF test word ptr [si+1Fh],0FFFFh
273F:81BB 74 05 jz loc_1612 ; Jump if zero
273F:81BD 83 6C 1F 01 sub word ptr [si+1Fh],1
@@ -19321,7 +19327,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:81ED C7 44 24 03F6 mov word ptr [si+24h],3F6h
273F:81F2 C3 retn
;* No entry point to code
-273F:81F3 E8 DF82 call sub_144 ; (6178)
+273F:81F3 E8 DF82 call talk_countdown_handler
273F:81F6 F7 44 1F FFFF test word ptr [si+1Fh],0FFFFh
273F:81FB 74 05 jz loc_1614 ; Jump if zero
273F:81FD 83 6C 1F 01 sub word ptr [si+1Fh],1
@@ -19333,7 +19339,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:820A 89 44 1F mov [si+1Fh],ax
273F:820D C3 retn
;* No entry point to code
-273F:820E E8 DF67 call sub_144 ; (6178)
+273F:820E E8 DF67 call talk_countdown_handler
273F:8211 F7 44 1F FFFF test word ptr [si+1Fh],0FFFFh
273F:8216 74 05 jz loc_1616 ; Jump if zero
273F:8218 83 6C 1F 01 sub word ptr [si+1Fh],1
@@ -19363,7 +19369,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
head_animation_tick_proc proc near
-273F:8241 E8 DF34 call sub_144 ; (6178)
+273F:8241 E8 DF34 call talk_countdown_handler
273F:8244 úBB 6CEF mov bx, offset player_hotspot_rec
273F:8247 81 7F 0F 00CF cmp word ptr [bx+HS_Y], 80h + 79
273F:824C 73 03 jae loc_1618 ; Jump if above or =
@@ -19441,7 +19447,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
sub_211 endp
;* No entry point to code
-273F:82A0 E8 DED5 call sub_144 ; (6178)
+273F:82A0 E8 DED5 call talk_countdown_handler
273F:82A3 F7 44 1F FFFF test word ptr [si+1Fh],0FFFFh
273F:82A8 74 05 jz loc_1622 ; Jump if zero
273F:82AA 83 6C 1F 01 sub word ptr [si+1Fh],1
@@ -19842,7 +19848,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
;* No entry point to code
-273F:85CE E8 DBA7 call sub_144 ; (6178)
+273F:85CE E8 DBA7 call talk_countdown_handler
273F:85D1 E9 FA3F jmp loc_1600 ; (8013)
;* No entry point to code
273F:85D4 BA 3627 mov dx,3627h
@@ -19906,7 +19912,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:8623 73 F1 jae loc_ret_1676 ; Jump if above or =
273F:8625 C7 44 0F 00D5 mov word ptr [si+0Fh],0D5h
273F:862A E9 EB45 jmp animation_load_2
-273F:862D E9 DB48 jmp loc_1238 ; (6178)
+273F:862D E9 DB48 jmp talk_countdown_handler
;* No entry point to code
273F:8630 úBE 7D21 mov si, offset goewin_hotspot_rec
@@ -19926,7 +19932,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;* No entry point to code
273F:865A C7 44 50 0000 mov word ptr [si+50h],0
273F:865F C6 44 44 07 mov byte ptr [si+44h],7
-273F:8663 E8 DB12 call sub_144 ; (6178)
+273F:8663 E8 DB12 call talk_countdown_handler
273F:8666 F7 44 1F FFFF test word ptr [si+1Fh],0FFFFh
273F:866B 74 05 jz loc_1678 ; Jump if zero
273F:866D 83 6C 1F 01 sub word ptr [si+1Fh],1
@@ -20143,7 +20149,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
;* No entry point to code
-273F:87EC E8 D989 call sub_144 ; (6178)
+273F:87EC E8 D989 call talk_countdown_handler
273F:87EF F7 44 1F FFFF test word ptr [si+1Fh],0FFFFh
273F:87F4 74 05 jz loc_1688 ; Jump if zero
273F:87F6 83 6C 1F 01 sub word ptr [si+1Fh],1
@@ -20167,7 +20173,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:8824 BD 706C mov bp,706Ch
273F:8827 E9 CD57 jmp loc_1102 ; (5581)
;* No entry point to code
-273F:882A E8 D94B call sub_144 ; (6178)
+273F:882A E8 D94B call talk_countdown_handler
273F:882D F7 44 1F FFFF test word ptr [si+1Fh],0FFFFh
273F:8832 74 05 jz loc_1690 ; Jump if zero
273F:8834 83 6C 1F 01 sub word ptr [si+1Fh],1
@@ -20846,7 +20852,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:8D38 loc_1753: ; xref 273F:8AB4
273F:8D38 E8 0036 call sub_222 ; (8D71)
-273F:8D3B E8 D43A call sub_144 ; (6178)
+273F:8D3B E8 D43A call talk_countdown_handler
273F:8D3E 8B 1E CF06 mov bx, talk_to_hotspot_ptr
273F:8D42 83 7F 37 06 cmp word ptr [bx+37h],6
273F:8D46 73 0D jae loc_ret_1754 ; Jump if above or =
@@ -20858,7 +20864,7 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
273F:8D55 C3 retn
273F:8D56 loc_1755: ; xref 273F:8ABA
273F:8D56 E8 0018 call sub_222 ; (8D71)
-273F:8D59 E8 D41C call sub_144 ; Show talk image
+273F:8D59 E8 D41C call talk_countdown_handler
273F:8D5C 8B 1E CF06 mov bx, talk_to_hotspot_ptr
273F:8D60 83 7F 37 06 cmp word ptr [bx+37h],6
273F:8D64 73 EF jae loc_ret_1754 ; Jump if above or =
@@ -31374,11 +31380,11 @@ PLAYER_ACTION_CONTINUE_WALK equ 5
31E4:BAEF dw 8022h
dw offset sub_92
dw 7eeeh
- dw offset seq_method_27
+ dw offset seq_set_blocking_hotspot_script
dw offset seq_decrease_inventory_items
- dw offset sub_140
+ dw offset talk_setup
dw offset seq_set_frame_number ; #30
- dw offset seq_method_31
+ dw offset seq_converse
31E4:BAFF dw offset seq_disable_hotspot
dw offset seq_cut_sack
dw offset seq_increase_groats