![]() |
Routines |
| Prev: C26A | Up: Map | Next: C2AA |
|
Checks if hero has enough money (var_money_digits12/var_money_digits34) to cover the price
in D/E. Sets var_paid to 1 (can pay) or 0 (cannot pay). Returns.
|
||||
| purchase_handler | C27A | LD HL,($C33E) | Load money digits 1–2 (var_money_digits12) into HL | |
| C27D | LD A,H | If digit 1 != '0' → can pay (purchase_handler_0) | ||
| C27E | CP $30 | |||
| C280 | JR NZ,purchase_handler_0 | |||
| C282 | LD A,L | If digit 2 != '0' → can pay (purchase_handler_0) | ||
| C283 | CP $30 | |||
| C285 | JR NZ,purchase_handler_0 | |||
| C287 | ADD A,$00 | ADD A,$00 (check zero) | ||
| C289 | LD A,($C341) | Load digit 3 ($C341), subtract D; if borrow → cannot pay (purchase_handler_1) | ||
| C28C | SUB D | |||
| C28D | JP C,purchase_handler_1 | |||
| C290 | LD A,($C341) | If digit 3 != D → can pay (purchase_handler_0) | ||
| C293 | CP D | |||
| C294 | JP NZ,purchase_handler_0 | |||
| C297 | LD A,($C340) | Load digit 4 (var_money_digits34), subtract E; if borrow → cannot pay (purchase_handler_1) | ||
| C29A | SUB E | |||
| C29B | JR C,purchase_handler_1 | |||
| purchase_handler_0 | C29D | LD A,$01 | A = 1 | |
| C29F | LD ($C33B),A | Set var_paid = 1 (can pay) | ||
| C2A2 | RET | |||
| purchase_handler_1 | C2A3 | LD A,$00 | A = 0 | |
| C2A5 | LD ($C33B),A | Set var_paid = 0 (cannot pay) | ||
| C2A8 | RET | |||
| Prev: C26A | Up: Map | Next: C2AA |