diff options
Diffstat (limited to 'engine/menu/vending_machine.asm')
-rwxr-xr-x | engine/menu/vending_machine.asm | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/engine/menu/vending_machine.asm b/engine/menu/vending_machine.asm new file mode 100755 index 00000000..1f0ed084 --- /dev/null +++ b/engine/menu/vending_machine.asm @@ -0,0 +1,138 @@ +VendingMachineMenu: ; 74ee0 (1d:4ee0) + ld hl, VendingMachineText1 + call PrintText + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + xor a + ld [wCurrentMenuItem], a ; $cc26 + ld [wLastMenuItem], a ; $cc2a + ld a, $3 + ld [wMenuWatchedKeys], a ; $cc29 + ld a, $3 + ld [wMaxMenuItem], a ; $cc28 + ld a, $5 + ld [wTopMenuItemY], a ; $cc24 + ld a, $1 + ld [wTopMenuItemX], a ; $cc25 + ld hl, $d730 + set 6, [hl] + FuncCoord 0, 3 ; $c3dc + ld hl, Coord + ld b, $8 + ld c, $c + call TextBoxBorder + call UpdateSprites + FuncCoord 2, 5 ; $c406 + ld hl, Coord + ld de, DrinkText + call PlaceString + FuncCoord 9, 6 ; $c421 + ld hl, Coord + ld de, DrinkPriceText + call PlaceString + ld hl, $d730 + res 6, [hl] + call HandleMenuInput + bit 1, a + jr nz, .asm_74f93 + ld a, [wCurrentMenuItem] ; $cc26 + cp $3 + jr z, .asm_74f93 + xor a + ld [$ff9f], a + ld [$ffa1], a + ld a, $2 + ld [$ffa0], a + call HasEnoughMoney + jr nc, .enoughMoney + ld hl, VendingMachineText4 + jp PrintText +.enoughMoney + call Func_74fe7 + ld a, [$ffdb] + ld b, a + ld c, 1 + call GiveItem + jr nc, .BagFull + ld b, $3c ; number of times to play the "brrrrr" sound +.playDeliverySound ; 0x74f63 + ld c, $2 + call DelayFrames + push bc + ld a, (SFX_02_53 - SFX_Headers_02) / 3 + call PlaySound + pop bc + dec b + jr nz, .playDeliverySound +.asm_74f72 + ld hl, VendingMachineText5 + call PrintText + ld hl, $ffde + ld de, wPlayerMoney + 2 ; $d349 + ld c, $3 + ld a, $c + call Predef ; indirect jump to Func_f836 (f836 (3:7836)) + ld a, $13 + ld [$d125], a + jp DisplayTextBoxID +.BagFull + ld hl, VendingMachineText6 + jp PrintText +.asm_74f93 + ld hl, VendingMachineText7 + jp PrintText + +VendingMachineText1: ; 74f99 (1d:4f99) + TX_FAR _VendingMachineText1 + db "@" + +DrinkText: ; 74f9e (1d:4f9e) + db "FRESH WATER" + next "SODA POP" + next "LEMONADE" + next "CANCEL@" + +DrinkPriceText: ; 74fc3 (1d:4fc3) + db "¥200" + next "¥300" + next "¥350",$4E,"@" + +VendingMachineText4: ; 74fd3 (1d:4fd3) + TX_FAR _VendingMachineText4 + db "@" + +VendingMachineText5: ; 74fd8 (1d:4fd8) + TX_FAR _VendingMachineText5 + db "@" + +VendingMachineText6: ; 74fdd (1d:4fdd) + TX_FAR _VendingMachineText6 + db "@" + +VendingMachineText7: ; 74fe2 (1d:4fe2) + TX_FAR _VendingMachineText7 + db "@" + +Func_74fe7: ; 74fe7 (1d:4fe7) + ld hl, VendingPrices + ld a, [$cc26] + add a + add a + ld d, $0 + ld e, a + add hl, de + ld a, [hli] + ld [$ffdb], a + ld a, [hli] + ld [$ffdc], a + ld a, [hli] + ld [$ffdd], a + ld a, [hl] + ld [$ffde], a + ret + +VendingPrices: ; 75000 (1d:5000) + db FRESH_WATER,$00,$02,$00 + db SODA_POP, $00,$03,$00 + db LEMONADE, $00,$03,$50 |