Prev: 9F31 Up: Map Next: 9FFF
9F54: Old woman encounter
Entry point for the old-woman visitor. Opens the door, runs the approach
animation, then dispatches based on gun inventory and keypress.
Keys: 'a' = rob (demand money at gunpoint), 'v' = rape, '0' = fire gun, 'q' = leave.
oldwoman_encounter 9F54 CALL door_open Open door (door_open)
9F57 CALL oldwoman_approach Approach animation (oldwoman_approach)
Wait for keypress loop — advances PRNG each iteration
oldwoman_encounter_0 9F5A CALL wait_keypress Wait for keypress (wait_keypress)
9F5D LD A,($C33D) Load gun flag (var_inv_gun)
9F60 CP $00 If no gun → oldwoman_no_gun (complain and exit)
9F62 JP Z,oldwoman_no_gun
9F65 LD A,($C34C) Load last key ($C34C)
9F68 CP $61 If 'a' ($61) → rob at gunpoint (oldwoman_encounter_1)
9F6A JP Z,oldwoman_encounter_1
9F6D CP $76 If 'v' ($76) → rape (oldwoman_rape)
9F6F JP Z,oldwoman_rape
9F72 CP $71 If 'q' ($71) → leave (oldwoman_encounter_3)
9F74 JP Z,oldwoman_encounter_3
9F77 CALL prng_tick Advance PRNG (prng_tick)
9F7A JR oldwoman_encounter_0 Loop back to oldwoman_encounter_0
Rob at gunpoint branch (key 'a')
oldwoman_encounter_1 9F7C CALL draw_gun Draw gun (draw_gun)
9F7F LD DE,$DC71 Set CHARS=$DC71 ("Isto é um assalto")
9F82 CALL set_chars
9F85 LD HL,$C03B Draw "Isto é um assalto" bubble (frame_bubble_hero_r1c1_thief)
9F88 CALL draw_frame
9F8B LD A,$03 Delay 3
9F8D CALL delay_a
9F90 LD DE,$DB51 Set CHARS=$DB51 ("Oooh meu Deus")
9F93 CALL set_chars
9F96 LD HL,$C00F Draw "Oooh meu Deus" bubble (frame_bubble_street_r2c17)
9F99 CALL draw_frame
9F9C LD A,$00 Clear LAST K ($5C08 = 0)
9F9E LD ($5C08),A
9FA1 LD A,$0F Delay 15
9FA3 CALL delay_a
9FA6 CALL prng_tick Advance PRNG (prng_tick)
9FA9 LD A,($5C08) If '0' pressed (fire gun) → oldwoman_refuses_shoot
9FAC CP $30
9FAE CALL Z,oldwoman_refuses_shoot
Old woman hands over money — default 100$00, PRNG2==1 → 200$00, PRNG2==2 → 500$00
9FB1 LD DE,$DD21 Set CHARS=$DD21 (bubble defaults to "Só tenho 100$00")
9FB4 CALL set_chars
9FB7 LD HL,$C00F Draw price offer bubble (frame_bubble_street_r2c17)
9FBA CALL draw_frame
9FBD LD A,($C34A) Load PRNG2 (var_prng2)
9FC0 CP $01 If PRNG2==1 → oldwoman_encounter_4 (200$00)
9FC2 JP Z,oldwoman_encounter_4
9FC5 CP $02 If PRNG2==2 → oldwoman_rob_500 (500$00)
9FC7 JP Z,oldwoman_rob_500
9FCA LD B,$01 Else B=1 (default: 100$00)
This entry point is used by the routine at oldwoman_rob_500.
oldwoman_encounter_2 9FCC CALL money_add Add B to money (money_add)
9FCF LD A,($5C08) If '0' pressed (fire gun) → oldwoman_refuses_shoot ("Não mato mulheres") again
9FD2 CP $30
9FD4 CALL Z,oldwoman_refuses_shoot
9FD7 LD HL,$C052 Clear price bubble (frame_clear_hero_r1c1_thief)
9FDA CALL draw_frame
9FDD LD A,$09 Delay 9
9FDF CALL delay_a
Common exit path
oldwoman_encounter_3 9FE2 CALL oldwoman_exit Exit animation (oldwoman_exit)
9FE5 LD HL,$C026 Clear right bubble (frame_clear_street_r2c17)
9FE8 CALL draw_frame
9FEB CALL draw_hero Redraw hero body (draw_hero)
9FEE CALL door_close Close door (door_close)
9FF1 JP main_1 Return to main loop (main_1)
200$00 variant (PRNG2 == 1)
oldwoman_encounter_4 9FF4 LD HL,$9FFF Draw 200$00 bubble variant (frame_oldwoman_price_200)
9FF7 CALL draw_frame
9FFA LD B,$02 B = 2 (200$00)
9FFC JP oldwoman_encounter_2 JP $9FCC
Prev: 9F31 Up: Map Next: 9FFF