summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm572
1 files changed, 12 insertions, 560 deletions
diff --git a/main.asm b/main.asm
index 7560e8b99..6ed4dfef1 100644
--- a/main.asm
+++ b/main.asm
@@ -4456,7 +4456,7 @@ RemoveItemFromPocket: ; d2ff
ld e, l
ld a, [hli]
ld c, a
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
cp c
jr nc, .ok ; memory
ld c, a
@@ -7944,555 +7944,7 @@ GetObjectTimeMask: ; 245a7 (9:45a7)
xor a
ret
-Function245af:: ; 245af
- xor a
- ld [wMenuJoypad], a
- ld [hBGMapMode], a
- inc a
- ld [hInMenu], a
- call ClearObjectStructsa
- call Function24764
- call Function247dd
- call Function245f1
- call ApplyTilemap
- xor a
- ld [hBGMapMode], a
- ret
-; 245cb
-
-Function245cb:: ; 245cb
-.loop
- call MenuJoyAction
- jp c, .exit
- call z, .zero
- jr .loop
-; 245d6
-
-.exit: ; 245d6
- call MenuClickSound
- ld [wMenuJoypad], a
- ld a, 0
- ld [hInMenu], a
- ret
-; 245e1
-
-.zero: ; 245e1
- call Function245f1
- ld a, 1
- ld [hBGMapMode], a
- ld c, 3
- call DelayFrames
- xor a
- ld [hBGMapMode], a
- ret
-; 245f1
-
-Function245f1: ; 245f1
- xor a
- ld [hBGMapMode], a
- ld hl, Options
- ld a, [hl]
- push af
- set NO_TEXT_SCROLL, [hl]
- call Function247f0
- call Function2488b
- call Function248b8
- pop af
- ld [Options], a
- ret
-; 24609
-
-MenuJoyAction: ; 24609
-.loop
- call ScrollingMenuJoypad
- ld a, [hJoyLast]
- and D_PAD
- ld b, a
- ld a, [hJoyPressed]
- and BUTTONS
- or b
- bit 0, a ; A
- jp nz, .a_button
- bit 1, a ; B
- jp nz, .b_button
- bit 2, a ; Select
- jp nz, .select
- bit 3, a ; Start
- jp nz, .start
- bit 4, a ; Right
- jp nz, .d_right
- bit 5, a ; Left
- jp nz, .d_left
- bit 6, a ; Up
- jp nz, .d_up
- bit 7, a ; Down
- jp nz, .d_down
- jr .loop
-; 24640
-
-.unreferenced: ; unreferenced
- ld a, -1
- and a
- ret
-; 24644
-
-.a_button: ; 24644
- call Function1bee
- ld a, [wMenuCursorY]
- dec a
- call Function248d5
- ld a, [MenuSelection]
- ld [CurItem], a
- ld a, [wcf75]
- ld [wItemQuantityBuffer], a
- call Function246fc
- dec a
- ld [wScrollingMenuCursorPosition], a
- ld [wd107], a
- ld a, [MenuSelection]
- cp -1
- jr z, .b_button
- ld a, A_BUTTON
- scf
- ret
-; 2466f
-
-.b_button: ; 2466f
- ld a, B_BUTTON
- scf
- ret
-; 24673
-
-.select: ; 24673
- ld a, [wMenuData2Flags]
- bit 7, a
- jp z, xor_a_dec_a
- ld a, [wMenuCursorY]
- dec a
- call Function248d5
- ld a, [MenuSelection]
- cp -1
- jp z, xor_a_dec_a
- call Function246fc
- dec a
- ld [wScrollingMenuCursorPosition], a
- ld a, SELECT
- scf
- ret
-; 24695
-
-.start: ; 24695
- ld a, [wMenuData2Flags]
- bit 6, a
- jp z, xor_a_dec_a
- ld a, START
- scf
- ret
-; 246a1
-
-.d_left: ; 246a1
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a_dec_a
- ld a, [wMenuData2Flags]
- bit 3, a
- jp z, xor_a_dec_a
- ld a, D_LEFT
- scf
- ret
-; 246b5
-
-.d_right: ; 246b5
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a_dec_a
- ld a, [wMenuData2Flags]
- bit 2, a
- jp z, xor_a_dec_a
- ld a, D_RIGHT
- scf
- ret
-; 246c9
-
-.d_up: ; 246c9
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a
- ld hl, wMenuScrollPosition
- ld a, [hl]
- and a
- jr z, .xor_dec_up
- dec [hl]
- jp xor_a
-
-.xor_dec_up
- jp xor_a_dec_a
-; 246df
-
-.d_down: ; 246df
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a
- ld hl, wMenuScrollPosition
- ld a, [wMenuData2Items]
- add [hl]
- ld b, a
- ld a, [wd144]
- cp b
- jr c, .xor_dec_down
- inc [hl]
- jp xor_a
-
-.xor_dec_down
- jp xor_a_dec_a
-; 246fc
-
-Function246fc: ; 246fc
- ld a, [wMenuScrollPosition]
- ld c, a
- ld a, [wMenuCursorY]
- add c
- ld c, a
- ret
-; 24706
-
-Function24706: ; 24706 (9:4706)
- call MenuBoxCoord2Tile
- ld de, SCREEN_WIDTH
- add hl, de
- ld de, 2 * SCREEN_WIDTH
- ld a, [wMenuData2Items]
-.asm_24713
- ld [hl], " "
- add hl, de
- dec a
- jr nz, .asm_24713
- ret
-
-ClearObjectStructsa: ; 2471a
-; Get the value of (wMenuData2Bank):(wMenuData2Addr) and store it in wd144.
- ld hl, wMenuData2Addr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wMenuData2Bank]
- call GetFarByte
- ld [wd144], a
-; if ([wd144] + 1) < [wMenuData2Items] + [wMenuScrollPosition]: [wMenuScrollPosition] = max(([wd144] + 1) - [wMenuData2Items], 0)
- ld a, [wMenuData2Items]
- ld c, a
- ld a, [wMenuScrollPosition]
- add c
- ld c, a
- ld a, [wd144]
- inc a
- cp c
- jr nc, .skip
- ld a, [wMenuData2Items]
- ld c, a
- ld a, [wd144]
- inc a
- sub c
- jr nc, .store
- xor a
-
-.store
- ld [wMenuScrollPosition], a
-
-.skip
- ld a, [wMenuScrollPosition]
- ld c, a
- ld a, [wMenuCursorBuffer]
- add c
- ld b, a
- ld a, [wd144]
- inc a
- cp b
- jr c, .asm_2475a
- jr nc, .asm_24763
-
-.asm_2475a
- xor a
- ld [wMenuScrollPosition], a
- ld a, $1
- ld [wMenuCursorBuffer], a
-
-.asm_24763
- ret
-; 24764
-
-Function24764: ; 24764
- ld a, [wMenuData2Flags]
- ld c, a
- ld a, [wd144]
- ld b, a
- ld a, [wMenuBorderTopCoord]
- add $1
- ld [wcfa1], a
- ld a, [wMenuBorderLeftCoord]
- add $0
- ld [wcfa2], a
- ld a, [wMenuData2Items]
- cp b
- jr c, .asm_24786
- jr z, .asm_24786
- ld a, b
- inc a
-
-.asm_24786
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld a, $8c
- bit 2, c
- jr z, .asm_24796
- set 0, a
-
-.asm_24796
- bit 3, c
- jr z, .asm_2479c
- set 1, a
-
-.asm_2479c
- ld [wcfa5], a
- xor a
- ld [wcfa6], a
- ld a, $20
- ld [wcfa7], a
- ld a, $c3
- bit 7, c
- jr z, .asm_247b0
- add $4
-
-.asm_247b0
- bit 6, c
- jr z, .asm_247b6
- add $8
-
-.asm_247b6
- ld [wcfa8], a
- ld a, [wcfa3]
- ld b, a
- ld a, [wMenuCursorBuffer]
- and a
- jr z, .asm_247c8
- cp b
- jr z, .asm_247ca
- jr c, .asm_247ca
-
-.asm_247c8
- ld a, $1
-
-.asm_247ca
- ld [wMenuCursorY], a
- ld a, $1
- ld [wMenuCursorX], a
- xor a
- ld [wCursorCurrentTile], a
- ld [wCursorCurrentTile + 1], a
- ld [wCursorOffCharacter], a
- ret
-; 247dd
-
-Function247dd: ; 247dd
- ld a, [wd144]
- ld c, a
- ld a, [wd0e3]
- and a
- jr z, .asm_247ef
- dec a
- cp c
- jr c, .asm_247ef
- xor a
- ld [wd0e3], a
-
-.asm_247ef
- ret
-; 247f0
-
-Function247f0: ; 247f0
- call ClearWholeMenuBox
- ld a, [wMenuData2Flags]
- bit 4, a
- jr z, .asm_2480d
- ld a, [wMenuScrollPosition]
- and a
- jr z, .asm_2480d
- ld a, [wMenuBorderTopCoord]
- ld b, a
- ld a, [wMenuBorderRightCoord]
- ld c, a
- call Coord2Tile
- ld [hl], $61
-
-.asm_2480d
- call MenuBoxCoord2Tile
- ld bc, $15
- add hl, bc
- ld a, [wMenuData2Items]
- ld b, a
- ld c, $0
-.asm_2481a
- ld a, [wMenuScrollPosition]
- add c
- ld [wScrollingMenuCursorPosition], a
- ld a, c
- call Function248d5
- ld a, [MenuSelection]
- cp $ff
- jr z, .asm_24851
- push bc
- push hl
- call Function2486e
- pop hl
- ld bc, $28
- add hl, bc
- pop bc
- inc c
- ld a, c
- cp b
- jr nz, .asm_2481a
- ld a, [wMenuData2Flags]
- bit 4, a
- jr z, .asm_24850
- ld a, [wMenuBorderBottomCoord]
- ld b, a
- ld a, [wMenuBorderRightCoord]
- ld c, a
- call Coord2Tile
- ld [hl], $ee
-
-.asm_24850
- ret
-
-.asm_24851
- ld a, [wMenuData2Flags]
- bit 0, a
- jr nz, .asm_24866
- ld de, .string_2485f
- call PlaceString
- ret
-
-.string_2485f
- db "CANCEL@"
-
-.asm_24866
- ld d, h
- ld e, l
- ld hl, wcf98
- jp CallPointerAt
-; 2486e
-
-Function2486e: ; 2486e
- push hl
- ld d, h
- ld e, l
- ld hl, wcf98
- call CallPointerAt
- pop hl
- ld a, [wcf93]
- and a
- jr z, .asm_2488a
- ld e, a
- ld d, $0
- add hl, de
- ld d, h
- ld e, l
- ld hl, wcf9b
- call CallPointerAt
-
-.asm_2488a
- ret
-; 2488b
-
-Function2488b: ; 2488b
- ld a, [wd0e3]
- and a
- jr z, .asm_248b7
- ld b, a
- ld a, [wMenuScrollPosition]
- cp b
- jr nc, .asm_248b7
- ld c, a
- ld a, [wMenuData2Items]
- add c
- cp b
- jr c, .asm_248b7
- ld a, b
- sub c
- dec a
- add a
- add $1
- ld c, a
- ld a, [wMenuBorderTopCoord]
- add c
- ld b, a
- ld a, [wMenuBorderLeftCoord]
- add $0
- ld c, a
- call Coord2Tile
- ld [hl], $ec
-
-.asm_248b7
- ret
-; 248b8
-
-Function248b8: ; 248b8
- ld a, [wMenuData2Flags]
- bit 5, a
- ret z
- bit 1, a
- jr z, .asm_248c7
- ld a, [wd0e3]
- and a
- ret nz
-
-.asm_248c7
- ld a, [wMenuCursorY]
- dec a
- call Function248d5
- ld hl, wcf9e
- call CallPointerAt
- ret
-; 248d5
-
-Function248d5: ; 248d5
- push de
- push hl
- ld e, a
- ld a, [wMenuScrollPosition]
- add e
- ld e, a
- ld d, $0
- ld hl, wMenuData2Addr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- inc hl
- ld a, [wcf94]
- cp $1
- jr z, .asm_248f2
- cp $2
- jr z, .asm_248f1
-
-.asm_248f1
- add hl, de
-
-.asm_248f2
- add hl, de
- ld a, [wMenuData2Bank]
- call GetFarByte
- ld [MenuSelection], a
- ld [CurItem], a
- inc hl
- ld a, [wMenuData2Bank]
- call GetFarByte
- ld [wcf75], a
- pop hl
- pop de
- ret
-; 2490c
-
+INCLUDE "engine/scrolling_menu.asm"
INCLUDE "engine/switch_items.asm"
PlaceMenuItemName: ; 0x24ab4
@@ -8518,7 +7970,7 @@ PlaceMenuItemQuantity: ; 0x24ac3
add hl, de
ld [hl], "×"
inc hl
- ld de, wcf75
+ ld de, MenuSelectionQuantity
lb bc, 1, 2
call PrintNum
@@ -8526,25 +7978,25 @@ PlaceMenuItemQuantity: ; 0x24ac3
ret
; 0x24ae8
-PlaceMoneyTopRightOW: ; 24ae8
+PlaceMoneyTopRight: ; 24ae8
ld hl, MenuDataHeader_0x24b15
call CopyMenuDataHeader
- jr Function24b01
+ jr PlaceMoneyDataHeader
-PlaceMoneyBottomLeftOW: ; 24af0
+PlaceMoneyBottomLeft: ; 24af0
ld hl, MenuDataHeader_0x24b1d
call CopyMenuDataHeader
- jr Function24b01
+ jr PlaceMoneyDataHeader
-PlaceMoneyTopRightMenu: ; 24af8
+PlaceMoneyAtTopLeftOfTextbox: ; 24af8
ld hl, MenuDataHeader_0x24b15
- ld de, $b
- call Function1e2e
+ lb de, 0, 11
+ call OffsetMenuDataHeader
-Function24b01: ; 24b01
+PlaceMoneyDataHeader: ; 24b01
call MenuBox
call MenuBoxCoord2Tile
- ld de, $15
+ ld de, SCREEN_WIDTH + 1
add hl, de
ld de, Money
lb bc, PRINTNUM_MONEY | 3, 6