![]() |
Routines |
| Prev: 9F31 | Up: Map | Next: 9FFF |
|
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 |