Prev: C26A Up: Map Next: C2AA
C27A: Purchase handler — check money and set paid flag
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