![]() |
Routines |
| Prev: A799 | Up: Map | Next: AB87 |
|
Entry point for the café visit. Fades in and draws the scene.
Polls for 's' (exit café). If the mobster appears first, 's' and 'n' are used to accept or refuse his deals.
On 's' with no mobster: waiter brings the bill and hero leaves.
|
||||
|
Setup
|
||||
| cafe_encounter | A7A0 | CALL fade_in_blue | Fade in (fade_in_blue) | |
| A7A3 | CALL draw_cafe_bg | Draw café background (draw_cafe_bg) | ||
| A7A6 | CALL cafe_scene_step | Draw café logo (cafe_scene_step) | ||
| A7A9 | LD HL,$3031 | HL = "01" (initial café tab) | ||
| A7AC | LD ($C338),HL | Store to var_cafe_tab (café tab) | ||
| A7AF | LD A,$01 | A = 1 | ||
| A7B1 | LD ($AB87),A | Set café visit counter (var_cafe_visits) = 1 (first visit) | ||
|
Wait for player to press 's' (exit café)
|
||||
| cafe_encounter_0 | A7B4 | LD A,$00 | Clear LAST K — begin input poll | |
| A7B6 | LD ($5C08),A | |||
| A7B9 | LD E,$05 | E = 5 (outer timeout) | ||
| cafe_encounter_1 | A7BB | LD C,$00 | C = 0 (256 mid iterations) | |
| cafe_encounter_2 | A7BD | LD B,$00 | B = 0 (256 inner iterations) | |
| cafe_encounter_3 | A7BF | LD A,($5C08) | Poll LAST K ($5C08) | |
| A7C2 | CP $73 | If 's' (exit) pressed → waiter brings bill (cafe_encounter_34) | ||
| A7C4 | JP Z,cafe_encounter_34 | |||
| A7C7 | DJNZ cafe_encounter_3 | DJNZ inner loop | ||
| A7C9 | DEC C | DEC C — mid loop | ||
| A7CA | JR NZ,cafe_encounter_2 | |||
| A7CC | DEC E | DEC E — outer timeout loop | ||
| A7CD | JR NZ,cafe_encounter_1 | |||
|
Timeout — redraw and retry
|
||||
| A7CF | CALL cafe_scene_step | Redraw café logo (cafe_scene_step) | ||
| A7D2 | CALL prng_tick | Advance PRNG (prng_tick) | ||
| A7D5 | LD A,($C34A) | If PRNG2 != 0 → restart poll (cafe_encounter_0) | ||
| A7D8 | CP $00 | |||
| A7DA | JP Z,cafe_encounter_4 | |||
| A7DD | JP cafe_encounter_0 | Restart poll (cafe_encounter_0) | ||
|
Dispatch — waiter or mobster
|
||||
| cafe_encounter_4 | A7E0 | CALL prng_tick | Advance PRNG again (prng_tick) | |
| A7E3 | LD A,($C34A) | If PRNG2 == 2 → alternative café event (cafe_encounter_33) | ||
| A7E6 | CP $02 | |||
| A7E8 | JP Z,cafe_encounter_33 | |||
| A7EB | CALL cafe_mobster_approach | Mobster approaches (cafe_mobster_approach) | ||
| A7EE | LD A,$11 | Set PAPER=0 (black, erase colour) | ||
| A7F0 | RST $10 | |||
| A7F1 | LD A,$00 | |||
| A7F3 | RST $10 | |||
| A7F4 | LD D,$05 | D = 5 (row) | ||
| A7F6 | LD E,$13 | E = 19 (column) | ||
| A7F8 | LD L,$04 | L = $04 (fill character) | ||
| A7FA | LD C,$04 | C = 4 (row count) | ||
| A7FC | CALL cafe_fill_rect | Fill table rectangle (cafe_fill_rect) — erase mobster from background | ||
| A7FF | LD HL,$ABC3 | Erase mobster sprite remnant (LABC3) | ||
| A802 | CALL draw_frame | |||
|
Check inventory — what to offer hero
|
||||
| A805 | LD A,($C33C) | If no wallet (var_inv_wallet == 0) → mobster offers to sell wallet (cafe_encounter_12) | ||
| A808 | CP $00 | |||
| A80A | JP Z,cafe_encounter_12 | |||
| A80D | LD A,($C33D) | If no gun (var_inv_gun == 0) → mobster offers to sell gun (cafe_encounter_18) | ||
| A810 | CP $00 | |||
| A812 | JP Z,cafe_encounter_18 | |||
| A815 | LD A,($C337) | If no drugs (var_inv_drugs == 0) → mobster offers to sell drugs (cafe_encounter_24) | ||
| A818 | CP $00 | |||
| A81A | JP Z,cafe_encounter_24 | |||
|
Drugs deal — hero has drugs
|
||||
| A81D | LD A,$03 | Delay 3 | ||
| A81F | CALL delay_a | |||
| A822 | LD DE,$E9F9 | Set CHARS=$E9F9, draw "Sei que tem aí droga" (frame_bubble_mobster_r6c22) | ||
| A825 | CALL set_chars | |||
| A828 | LD HL,$ABFA | |||
| A82B | CALL draw_frame | |||
| A82E | LD A,$0A | Delay 10 | ||
| A830 | CALL delay_a | |||
| A833 | LD DE,$E899 | Set CHARS=$E899, draw "Ofereço-lhe 1000$00" (frame_bubble_mobster_r6c22) | ||
| A836 | CALL set_chars | |||
| A839 | LD HL,$ABFA | |||
| A83C | CALL draw_frame | |||
| A83F | CALL prng_tick | Advance PRNG (prng_tick) | ||
| A842 | LD B,$0A | B = 10 (bid amount) | ||
| A844 | LD A,($C34A) | Load PRNG2 (var_prng2) | ||
| A847 | CP $01 | If PRNG2 == 1 → price 1500$00 (cafe_encounter_10) | ||
| A849 | JP Z,cafe_encounter_10 | |||
| A84C | CP $02 | If PRNG2 == 2 → price 2000$00 (cafe_encounter_11) | ||
| A84E | JP Z,cafe_encounter_11 | |||
| cafe_encounter_5 | A851 | PUSH BC | PUSH BC (save bid amount) | |
| A852 | LD A,$00 | Clear LAST K — wait for player input | ||
| A854 | LD ($C34C),A | |||
| cafe_encounter_6 | A857 | CALL wait_keypress | Wait for keypress (wait_keypress) | |
| A85A | LD A,($C34C) | Load key (var_last_key) | ||
| A85D | CP $73 | If 's' (accept) → sell drugs (cafe_encounter_7) | ||
| A85F | JP Z,cafe_encounter_7 | |||
| A862 | CP $6E | If 'n' (refuse) → decline deal (cafe_encounter_9) | ||
| A864 | JP Z,cafe_encounter_9 | |||
| A867 | JP cafe_encounter_6 | Loop back to wait (cafe_encounter_6) | ||
|
Hero sells drugs to mobster
|
||||
| cafe_encounter_7 | A86A | LD DE,$E659 | Set CHARS=$E659, draw "Aceito" (frame_bubble_hero_r5c0) | |
| A86D | CALL set_chars | |||
| A870 | LD HL,$ABCE | |||
| A873 | CALL draw_frame | |||
| A876 | LD A,$00 | A = 0 | ||
| A878 | LD ($C337),A | Clear drugs flag (var_inv_drugs) | ||
| A87B | POP BC | POP BC (restore bid amount into B) | ||
| A87C | CALL money_add | Add B to score (money_add) | ||
|
Post-deal — advance scene
|
||||
| cafe_encounter_8 | A87F | CALL prng_tick | Advance PRNG (prng_tick) | |
|
Post-deal cleanup
|
||||
| A882 | LD A,$02 | Delay 2 | ||
| A884 | CALL delay_a | |||
| A887 | LD HL,$AC11 | Clear mobster bubble (frame_clear_mobster_r6c22) | ||
| A88A | CALL draw_frame | |||
| A88D | LD A,$05 | Delay 5 | ||
| A88F | CALL delay_a | |||
| A892 | LD HL,$ABE5 | Clear hero bubble (frame_clear_hero_r5c0) | ||
| A895 | CALL draw_frame | |||
| A898 | CALL cafe_scene_step | Redraw café logo (cafe_scene_step) | ||
| A89B | CALL cafe_mobster_seq1 | Advance scene (cafe_mobster_seq1) | ||
| A89E | LD HL,$AC52 | Erase mobster from table (frame_cafe_erase_mobster) | ||
| A8A1 | CALL draw_frame | |||
| A8A4 | JP cafe_encounter_0 | Restart poll (cafe_encounter_0) | ||
|
Hero declines deal
|
||||
| cafe_encounter_9 | A8A7 | LD DE,$E6B9 | Set CHARS=$E6B9, draw "Não" (frame_bubble_hero_r5c0) | |
| A8AA | CALL set_chars | |||
| A8AD | LD HL,$ABCE | |||
| A8B0 | CALL draw_frame | |||
| A8B3 | LD HL,$AC11 | Clear mobster bubble (frame_clear_mobster_r6c22) | ||
| A8B6 | CALL draw_frame | |||
| A8B9 | CALL cafe_scene_step | Redraw café logo (cafe_scene_step) | ||
| A8BC | POP BC | POP BC | ||
| A8BD | LD A,$04 | Delay 4 | ||
| A8BF | CALL delay_a | |||
| A8C2 | LD HL,$ABE5 | Clear hero bubble (frame_clear_hero_r5c0) | ||
| A8C5 | CALL draw_frame | |||
| A8C8 | JP cafe_encounter_8 | Jump to post-deal (cafe_encounter_8) | ||
|
Drugs sell offer — price variant 1: 1500$00 (B=15)
|
||||
| cafe_encounter_10 | A8CB | LD A,$16 | Print AT(7,23) — overlay price digit in bubble | |
| A8CD | RST $10 | |||
| A8CE | LD A,$07 | |||
| A8D0 | RST $10 | |||
| A8D1 | LD A,$17 | |||
| A8D3 | RST $10 | |||
| A8D4 | LD A,$2C | |||
| A8D6 | RST $10 | |||
| A8D7 | LD B,$0F | B = 15 (units for money deduction) | ||
| A8D9 | JP cafe_encounter_5 | Jump to player input (cafe_encounter_5) — hero still chooses s/n | ||
|
Drugs sell offer — price variant 2: 2000$00 (B=20)
|
||||
| cafe_encounter_11 | A8DC | LD A,$16 | Print AT(7,23) — overlay price digit in bubble | |
| A8DE | RST $10 | |||
| A8DF | LD A,$07 | |||
| A8E1 | RST $10 | |||
| A8E2 | LD A,$17 | |||
| A8E4 | RST $10 | |||
| A8E5 | LD A,$2D | |||
| A8E7 | RST $10 | |||
| A8E8 | LD B,$14 | B = 20 (units for money deduction) | ||
| A8EA | JP cafe_encounter_5 | Jump to player input (cafe_encounter_5) — hero still chooses s/n | ||
|
No wallet — mobster offers hero's stolen wallet
|
||||
| cafe_encounter_12 | A8ED | LD DE,$E7D9 | Set CHARS=$E7D9, draw "Tenho a sua carteira" (frame_bubble_mobster_r6c22) | |
| A8F0 | CALL set_chars | |||
| A8F3 | LD HL,$ABFA | |||
| A8F6 | CALL draw_frame | |||
| A8F9 | LD A,$09 | Delay 9 | ||
| A8FB | CALL delay_a | |||
| A8FE | LD DE,$E909 | Set CHARS=$E909, draw "Aceita por 1000$00" (frame_bubble_mobster_r6c22) | ||
| A901 | CALL set_chars | |||
| A904 | LD HL,$ABFA | |||
| A907 | CALL draw_frame | |||
| A90A | CALL prng_tick | Advance PRNG (prng_tick) | ||
| A90D | LD B,$0A | B = 10 (bid amount) | ||
| A90F | LD DE,$3130 | DE = "10" (price digits) | ||
| A912 | LD A,($C34A) | PRNG2 == 1 → wallet at 800$00 (cafe_encounter_16) | ||
| A915 | CP $01 | |||
| A917 | JP Z,cafe_encounter_16 | |||
| A91A | CP $02 | PRNG2 == 2 → wallet at 300$00 (cafe_encounter_17) | ||
| A91C | JP Z,cafe_encounter_17 | |||
| cafe_encounter_13 | A91F | PUSH BC | PUSH BC | |
| A920 | CALL purchase_handler | Check money vs price (purchase_handler) | ||
| A923 | LD A,($C33B) | If cannot afford wallet → hero says "Não tenho dinheiro" (cafe_hero_arrested_0) | ||
| A926 | CP $00 | |||
| A928 | CALL Z,cafe_hero_arrested_0 | |||
| A92B | LD A,($C33B) | If confirmed cannot pay → cancel deal (cafe_encounter_8) | ||
| A92E | CP $00 | |||
| A930 | JP Z,cafe_encounter_8 | Jump to cancel (cafe_encounter_8) | ||
| A933 | LD A,$00 | Clear LAST K | ||
| A935 | LD ($C34C),A | |||
| cafe_encounter_14 | A938 | CALL wait_keypress | Wait for keypress (wait_keypress) | |
| A93B | LD A,($C34C) | Load key (var_last_key) | ||
| A93E | CP $73 | If 's' (accept) → buy wallet (cafe_encounter_15) | ||
| A940 | JP Z,cafe_encounter_15 | |||
| A943 | CP $6E | If 'n' (refuse) → decline deal (cafe_encounter_9) | ||
| A945 | JP Z,cafe_encounter_9 | |||
| A948 | JR cafe_encounter_14 | Loop back (cafe_encounter_14) | ||
|
Hero buys wallet
|
||||
| cafe_encounter_15 | A94A | LD DE,$E659 | Set CHARS=$E659, draw "Aceito" (frame_bubble_hero_r5c0) | |
| A94D | CALL set_chars | |||
| A950 | LD HL,$ABCE | |||
| A953 | CALL draw_frame | |||
| A956 | LD A,$01 | A = 1 | ||
| A958 | LD ($C33C),A | Set wallet flag (var_inv_wallet) | ||
| A95B | POP BC | POP BC | ||
| A95C | CALL deduct_money | Deduct money (deduct_money) | ||
| A95F | CALL cafe_scene_step | Redraw café logo (cafe_scene_step) | ||
| A962 | JP cafe_encounter_8 | Jump to post-deal (cafe_encounter_8) | ||
|
Wallet price variant 1 — 800$00 (B=8)
|
||||
| cafe_encounter_16 | A965 | LD A,$16 | Print AT(7,23) — overlay digit (price variant 1) | |
| A967 | RST $10 | |||
| A968 | LD A,$07 | |||
| A96A | RST $10 | |||
| A96B | LD A,$17 | |||
| A96D | RST $10 | |||
| A96E | LD A,$2C | |||
| A970 | RST $10 | |||
| A971 | LD DE,$3038 | DE = "08" | ||
| A974 | LD B,$08 | B = 8 | ||
| A976 | JP cafe_encounter_13 | Jump to player input (cafe_encounter_13) | ||
|
Wallet price variant 2 — 300$00 (B=3)
|
||||
| cafe_encounter_17 | A979 | LD A,$16 | Print AT(7,23) — overlay digit (price variant 2) | |
| A97B | RST $10 | |||
| A97C | LD A,$07 | |||
| A97E | RST $10 | |||
| A97F | LD A,$17 | |||
| A981 | RST $10 | |||
| A982 | LD A,$2D | |||
| A984 | RST $10 | |||
| A985 | LD DE,$3033 | DE = "03" | ||
| A988 | LD B,$03 | B = 3 | ||
| A98A | JP cafe_encounter_13 | Jump to player input (cafe_encounter_13) | ||
|
No gun — mobster offers gun
|
||||
| cafe_encounter_18 | A98D | LD DE,$E839 | Set CHARS=$E839, draw "Tenho aqui uma arma" (frame_bubble_mobster_r6c22) | |
| A990 | CALL set_chars | |||
| A993 | LD HL,$ABFA | |||
| A996 | CALL draw_frame | |||
| A999 | LD A,$09 | Delay 9 | ||
| A99B | CALL delay_a | |||
| A99E | LD DE,$E909 | Set CHARS=$E909, draw "Aceita por 1000$00" (frame_bubble_mobster_r6c22) | ||
| A9A1 | CALL set_chars | |||
| A9A4 | LD HL,$ABFA | |||
| A9A7 | CALL draw_frame | |||
| A9AA | CALL prng_tick | Advance PRNG (prng_tick) | ||
| A9AD | CALL cafe_scene_transition | Transition café scene (cafe_scene_transition) | ||
| A9B0 | LD B,$0A | B = 10 (bid amount) | ||
| A9B2 | LD DE,$3130 | DE = "10" (price digits) | ||
| A9B5 | LD A,($C34A) | PRNG2 == 1 → gun at 800$00 (cafe_encounter_22) | ||
| A9B8 | CP $01 | |||
| A9BA | JP Z,cafe_encounter_22 | |||
| A9BD | CP $02 | PRNG2 == 2 → gun at 300$00 (cafe_encounter_23) | ||
| A9BF | JP Z,cafe_encounter_23 | |||
| cafe_encounter_19 | A9C2 | PUSH BC | PUSH BC | |
| A9C3 | CALL purchase_handler | Check money vs price (purchase_handler) | ||
| A9C6 | LD A,($C33B) | If cannot afford gun → hero says "Não tenho dinheiro" (cafe_hero_arrested_0) | ||
| A9C9 | CP $00 | |||
| A9CB | JP Z,cafe_hero_arrested_0 | |||
| A9CE | LD A,($C33B) | If confirmed cannot pay → cancel deal (cafe_encounter_8) | ||
| A9D1 | JP Z,cafe_encounter_8 | Jump to cancel (cafe_encounter_8) | ||
| A9D4 | LD A,$00 | Clear LAST K | ||
| A9D6 | LD ($C34C),A | |||
| cafe_encounter_20 | A9D9 | CALL wait_keypress | Wait for keypress (wait_keypress) | |
| A9DC | LD A,($C34C) | Load key (var_last_key) | ||
| A9DF | CP $73 | If 's' (accept) → buy gun (cafe_encounter_21) | ||
| A9E1 | JP Z,cafe_encounter_21 | |||
| A9E4 | CP $6E | If 'n' (refuse) → decline deal (cafe_encounter_9) | ||
| A9E6 | JP Z,cafe_encounter_9 | |||
| A9E9 | JR cafe_encounter_20 | Loop back (cafe_encounter_20) | ||
|
Hero buys gun
|
||||
| cafe_encounter_21 | A9EB | LD DE,$E659 | Set CHARS=$E659, draw "Aceito" (frame_bubble_hero_r5c0) | |
| A9EE | CALL set_chars | |||
| A9F1 | LD HL,$ABCE | |||
| A9F4 | CALL draw_frame | |||
| A9F7 | LD A,$01 | Set gun-active flag (enables weapon use) | ||
| A9F9 | LD ($C33D),A | |||
| A9FC | POP BC | POP BC | ||
| A9FD | CALL deduct_money | Deduct money (deduct_money) | ||
| AA00 | JP cafe_encounter_8 | Jump to post-deal (cafe_encounter_8) | ||
|
Gun price variant 1 — 800$00 (B=8)
|
||||
| cafe_encounter_22 | AA03 | LD A,$16 | Print AT(7,23) — overlay digit (price variant 1) | |
| AA05 | RST $10 | |||
| AA06 | LD A,$07 | |||
| AA08 | RST $10 | |||
| AA09 | LD A,$17 | |||
| AA0B | RST $10 | |||
| AA0C | LD A,$2C | |||
| AA0E | RST $10 | |||
| AA0F | LD B,$08 | B = 8 | ||
| AA11 | LD DE,$3038 | DE = "08" | ||
| AA14 | JP cafe_encounter_19 | Jump to player input (cafe_encounter_19) | ||
|
Gun price variant 2 — 300$00 (B=3)
|
||||
| cafe_encounter_23 | AA17 | LD A,$16 | Print AT(7,23) — overlay digit (price variant 2) | |
| AA19 | RST $10 | |||
| AA1A | LD A,$07 | |||
| AA1C | RST $10 | |||
| AA1D | LD A,$17 | |||
| AA1F | RST $10 | |||
| AA20 | LD A,$2D | |||
| AA22 | RST $10 | |||
| AA23 | LD B,$03 | B = 3 | ||
| AA25 | LD DE,$3033 | DE = "03" | ||
| AA28 | JP cafe_encounter_19 | Jump to player input (cafe_encounter_19) | ||
|
No drugs — mobster offers drugs (boi, LSD or axe)
|
||||
| cafe_encounter_24 | AA2B | CALL prng_tick | Advance PRNG (prng_tick) | |
| AA2E | LD DE,$E979 | Set CHARS=$E979, draw "Tenho Boi para vender" (frame_bubble_mobster_r6c22) — PRNG may switch to LSD or axe | ||
| AA31 | CALL set_chars | |||
| AA34 | LD HL,$ABFA | |||
| AA37 | CALL draw_frame | |||
| AA3A | LD A,($C34A) | PRNG2 == 1 → offer LSD instead (cafe_encounter_31) | ||
| AA3D | CP $01 | |||
| AA3F | JP Z,cafe_encounter_31 | |||
| AA42 | CP $02 | PRNG2 == 2 → offer axe instead (cafe_encounter_32) | ||
| AA44 | JP Z,cafe_encounter_32 | |||
| cafe_encounter_25 | AA47 | LD A,$08 | Delay 8 | |
| AA49 | CALL delay_a | |||
| AA4C | LD DE,$E909 | Set CHARS=$E909, draw "Aceita por 1000$00" (frame_bubble_mobster_r6c22) | ||
| AA4F | CALL set_chars | |||
| AA52 | LD HL,$ABFA | |||
| AA55 | CALL draw_frame | |||
| AA58 | CALL prng_tick | Advance PRNG (prng_tick) | ||
| AA5B | LD B,$0A | B = 10 (bid amount) | ||
| AA5D | LD DE,$3130 | DE = "10" (price digits) | ||
| AA60 | LD A,($C34A) | PRNG2 == 1 → boi at 800$00 (cafe_encounter_29) | ||
| AA63 | CP $01 | |||
| AA65 | JP Z,cafe_encounter_29 | |||
| AA68 | CP $02 | PRNG2 == 2 → boi at 300$00 (cafe_encounter_30) | ||
| AA6A | JP Z,cafe_encounter_30 | |||
| cafe_encounter_26 | AA6D | PUSH BC | PUSH BC | |
| AA6E | CALL purchase_handler | Check money vs price (purchase_handler) | ||
| AA71 | LD A,($C33B) | If cannot afford drugs → hero says "Não tenho dinheiro" (cafe_hero_arrested_0) | ||
| AA74 | CP $00 | |||
| AA76 | JP Z,cafe_hero_arrested_0 | |||
| AA79 | LD A,($C33B) | If confirmed cannot pay → cancel deal (cafe_encounter_8) | ||
| AA7C | CP $00 | |||
| AA7E | JP Z,cafe_encounter_8 | Jump to cancel (cafe_encounter_8) | ||
| AA81 | LD A,$00 | Clear LAST K | ||
| AA83 | LD ($C34C),A | |||
| cafe_encounter_27 | AA86 | CALL wait_keypress | Wait for keypress (wait_keypress) | |
| AA89 | LD A,($C34C) | Load key (var_last_key) | ||
| AA8C | CP $73 | If 's' (accept) → buy boi (cafe_encounter_28) | ||
| AA8E | JP Z,cafe_encounter_28 | |||
| AA91 | CP $6E | If 'n' (refuse) → decline deal (cafe_encounter_9) | ||
| AA93 | JP Z,cafe_encounter_9 | |||
| AA96 | JP cafe_encounter_27 | Loop back (cafe_encounter_27) | ||
|
Hero buys drugs from mobster
|
||||
| cafe_encounter_28 | AA99 | LD DE,$E659 | Set CHARS=$E659, draw "Aceito" (frame_bubble_hero_r5c0) | |
| AA9C | CALL set_chars | |||
| AA9F | LD HL,$ABCE | |||
| AAA2 | CALL draw_frame | |||
| AAA5 | POP BC | POP BC | ||
| AAA6 | CALL deduct_money | Deduct money (deduct_money) | ||
| AAA9 | LD A,$01 | A = 1 | ||
| AAAB | LD ($C337),A | Set drugs flag (var_inv_drugs) | ||
| AAAE | JP cafe_encounter_8 | Jump to post-deal (cafe_encounter_8) | ||
|
Boi bid price variant 1 — 800$00 (B=8)
|
||||
| cafe_encounter_29 | AAB1 | LD A,$16 | Print AT(7,23) — overlay digit (bid price variant 1) | |
| AAB3 | RST $10 | |||
| AAB4 | LD A,$07 | |||
| AAB6 | RST $10 | |||
| AAB7 | LD A,$17 | |||
| AAB9 | RST $10 | |||
| AABA | LD A,$2C | |||
| AABC | RST $10 | |||
| AABD | LD B,$08 | B = 8 | ||
| AABF | LD DE,$3038 | DE = "08" | ||
| AAC2 | JP cafe_encounter_26 | Jump to player input (cafe_encounter_26) | ||
|
Boi bid price variant 2 — 300$00 (B=3)
|
||||
| cafe_encounter_30 | AAC5 | LD A,$16 | Print AT(7,23) — overlay digit (bid price variant 2) | |
| AAC7 | RST $10 | |||
| AAC8 | LD A,$07 | |||
| AACA | RST $10 | |||
| AACB | LD A,$17 | |||
| AACD | RST $10 | |||
| AACE | LD A,$2D | |||
| AAD0 | RST $10 | |||
| AAD1 | LD B,$03 | B = 3 | ||
| AAD3 | LD DE,$3033 | DE = "03" | ||
| AAD6 | JP cafe_encounter_26 | Jump to player input (cafe_encounter_26) | ||
|
Drug offer variant 1 — overlay "LSD" in bubble
|
||||
| cafe_encounter_31 | AAD9 | LD A,$16 | Print chars $2C-$2D at (6,26) — replaces "Boi" with "LSD" | |
| AADB | RST $10 | |||
| AADC | LD A,$06 | |||
| AADE | RST $10 | |||
| AADF | LD A,$1A | |||
| AAE1 | RST $10 | |||
| AAE2 | LD A,$2C | |||
| AAE4 | RST $10 | |||
| AAE5 | LD A,$2D | |||
| AAE7 | RST $10 | |||
| AAE8 | JP cafe_encounter_25 | Jump to bid loop (cafe_encounter_25) | ||
|
Drug offer variant 2 — overlay "Axe" in bubble
|
||||
| cafe_encounter_32 | AAEB | LD A,$16 | Print chars $2E-$2F at (6,26) — replaces "Boi" with "Axe" (hashish) | |
| AAED | RST $10 | |||
| AAEE | LD A,$06 | |||
| AAF0 | RST $10 | |||
| AAF1 | LD A,$1A | |||
| AAF3 | RST $10 | |||
| AAF4 | LD A,$2E | |||
| AAF6 | RST $10 | |||
| AAF7 | LD A,$2F | |||
| AAF9 | RST $10 | |||
| AAFA | JP cafe_encounter_25 | Jump to bid loop (cafe_encounter_25) | ||
|
No mobster — waiter comes to serve a drink
|
||||
| cafe_encounter_33 | AAFD | CALL cafe_drink_anim | Advance café scene state (cafe_drink_anim) | |
| AB00 | LD A,$16 | Erase previous waiter sprite at (9,9) | ||
| AB02 | RST $10 | |||
| AB03 | LD A,$09 | |||
| AB05 | RST $10 | |||
| AB06 | LD A,$09 | |||
| AB08 | RST $10 | |||
| AB09 | LD A,$11 | |||
| AB0B | RST $10 | |||
| AB0C | LD A,$00 | |||
| AB0E | RST $10 | |||
| AB0F | LD A,$80 | |||
| AB11 | RST $10 | |||
| AB12 | LD A,$16 | |||
| AB14 | RST $10 | |||
| AB15 | LD A,$0A | |||
| AB17 | RST $10 | |||
| AB18 | LD A,$09 | |||
| AB1A | RST $10 | |||
| AB1B | LD A,$80 | |||
| AB1D | RST $10 | |||
| AB1E | LD A,$08 | Delay 8 | ||
| AB20 | CALL delay_a | |||
| AB23 | CALL cafe_waiter_approach | Waiter approaches hero (cafe_waiter_approach) | ||
| AB26 | LD A,$02 | Delay 2 | ||
| AB28 | CALL delay_a | |||
| AB2B | CALL cafe_waiter_serve | Waiter serves drink (cafe_waiter_serve) | ||
| AB2E | CALL cafe_scene_step | Redraw café logo (cafe_scene_step) | ||
| AB31 | LD A,$03 | Delay 3 | ||
| AB33 | CALL delay_a | |||
| AB36 | CALL increment_cafe_tab | Increment café tab (increment_cafe_tab) — drink added to bill | ||
| AB39 | LD A,($AB87) | Increment café visit counter (var_cafe_visits) | ||
| AB3C | INC A | |||
| AB3D | LD ($AB87),A | |||
| AB40 | CALL cafe_waiter_clear | Advance scene state (cafe_waiter_clear) | ||
| AB43 | CALL draw_expense | Draw expense display (draw_expense) | ||
| AB46 | JP cafe_encounter_0 | Restart poll (cafe_encounter_0) | ||
|
Hero presses 's' — waiter brings bill
|
||||
| cafe_encounter_34 | AB49 | CALL cafe_waiter_approach | Waiter walks to hero (cafe_waiter_approach) | |
| AB4C | LD DE,$E779 | Set CHARS=$E779, draw "A sua conta" (frame_bubble_waiter_r1c19) | ||
| AB4F | CALL set_chars | |||
| AB52 | LD HL,$AC26 | |||
| AB55 | CALL draw_frame | |||
| AB58 | LD A,$05 | Delay 5 | ||
| AB5A | CALL delay_a | |||
| AB5D | CALL cafe_scene_step | Redraw café logo (cafe_scene_step) | ||
| AB60 | LD DE,($C338) | DE = café tab (var_cafe_tab) | ||
| AB64 | CALL purchase_handler | Check if hero can pay tab (purchase_handler) | ||
| AB67 | LD A,($C33B) | If cannot pay → arrested (game over) (cafe_hero_arrested) | ||
| AB6A | CP $00 | |||
| AB6C | JP Z,cafe_hero_arrested | |||
| AB6F | LD A,($AB87) | Load café visit count (var_cafe_visits) into B | ||
| AB72 | LD B,A | Deduct B from money (deduct_money) | ||
| AB73 | CALL deduct_money | |||
| AB76 | LD HL,$AC3D | Clear waiter bubble (frame_clear_waiter_r1c19) | ||
| AB79 | CALL draw_frame | |||
| AB7C | CALL cafe_waiter_clear | Advance scene state (cafe_waiter_clear) | ||
| AB7F | LD A,$04 | Delay 4 | ||
| AB81 | CALL delay_a | |||
| AB84 | JP main | Return to main loop (main) | ||
| Prev: A799 | Up: Map | Next: AB87 |