summaryrefslogtreecommitdiff
path: root/engine/menu/vending_machine.asm
blob: 7a8b698553d4d1d3beb8545821c24e56352f8dd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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 ; SubtractBCDPredef
	call Predef
	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