summaryrefslogtreecommitdiff
path: root/home/menu.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/menu.asm')
-rw-r--r--home/menu.asm518
1 files changed, 37 insertions, 481 deletions
diff --git a/home/menu.asm b/home/menu.asm
index a418baab..412955b2 100644
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -1,506 +1,62 @@
-LoadMenuDataHeader:: ; 1bac (0:1bac)
- call CopyMenuDataHeader
- call PushWindow
- ret
-
-CopyMenuDataHeader:: ; 1bb3 (0:1bb3)
- ld de, wMenuDataHeader
- ld bc, wMenuDataHeaderEnd - wMenuDataHeader
- call CopyBytes
- ret
-
-StoreTo_wMenuCursorBuffer
- ld [wMenuCursorBuffer], a
- ret
-
-MenuTextBox:: ; 1bc1 (0:1bc1)
- push hl
- call LoadMenuTextBox
- pop hl
- jp PrintText
-
-; XXX
-ret_1bc9
- ret
-
-LoadMenuTextBox:: ; 1bca (0:1bca)
- ld hl, .MenuDataHeader
- call LoadMenuDataHeader
- ret
-.MenuDataHeader:
- db $40 ; tile backup
- db 12, 0 ; start coords
- db 17, 19 ; end coords
- dw $8000
- db 0 ; default option
-
-MenuTextBoxBackup::
- call MenuTextBox
- call CloseWindow
- ret
-
-LoadStandardMenuDataHeader::
- ld hl, .MenuDataHeader
- call LoadMenuDataHeader
- ret
-
-.MenuDataHeader: ; 1d75
- db $40 ; tile backup
- db 0, 0 ; start coords
- db 17, 19 ; end coords
- dw 0
- db 1 ; default option
-
-Call_ExitMenu::
- call ExitMenu
- ret
-
-VerticalMenu:: ; 1bf3 (0:1bf3)
- xor a
- ldh [hBGMapMode], a
- call MenuBox
- call UpdateSprites
- call PlaceVerticalMenuItems
- call ApplyTilemap
- call CopyMenuData2
- ld a, [wMenuData2Flags]
- bit 7, a
- jr z, .asm_1c19
- call InitVerticalMenuCursor
- call StaticMenuJoypad
- call MenuClickSound
- bit 1, a
- jr z, .asm_1c1b
-.asm_1c19
- scf
- ret
-.asm_1c1b
- and a
- ret
-
-GetMenu2::
- call LoadMenuDataHeader
- call VerticalMenu
- call CloseWindow
- ld a, [wMenuCursorY]
- ret
-
-CopyNameFromMenu::
+SetMenuAttributes::
push hl
push bc
- push af
- ld hl, wMenuData2Pointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
- inc hl
- inc hl
- pop af
- call GetNthString
- ld d, h
- ld e, l
- call CopyName1
+ ld hl, w2DMenuCursorInitY
+ ld b, $8
+.loop
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec b
+ jr nz, .loop
+ ld a, $1
+ ld [hli], a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
pop bc
pop hl
ret
-YesNoBox::
- lb bc, SCREEN_WIDTH - 6, 7
-PlaceYesNoBox::
- jr _YesNoBox
-
-PlaceGenericTwoOptionBox::
- call LoadMenuDataHeader
- jr InterpretTwoOptionMenu
-
-_YesNoBox::
- push bc
- ld hl, YesNoMenuDataHeader
- call CopyMenuDataHeader
- pop bc
- ld a, b
- ld [wMenuBorderLeftCoord], a
- add $5
- ld [wMenuBorderRightCoord], a
- ld a, c
- ld [wMenuBorderTopCoord], a
- add $4
- ld [wMenuBorderBottomCoord], a
- call PushWindow
-InterpretTwoOptionMenu::
- call VerticalMenu
- push af
- ld c, $f
- call DelayFrames
- call CloseWindow
- pop af
- jr c, .asm_1c80
- ld a, [wMenuCursorY]
- cp $2
- jr z, .asm_1c80
- and a
- ret
-.asm_1c80
- ld a, $2
- ld [wMenuCursorY], a
- scf
- ret
-YesNoMenuDataHeader:: ; 1c87 (0:1c87)
- db $40 ; tile backup
- db 5, 10 ; start coords
- db 9, 15 ; end coords
- dw .MenuData2
- db 1 ; default option
-
-.MenuData2: ; 1e25
- db $c0 ; flags
- db 2
- db "YES@"
- db "NO@"
-
-OffsetMenuDataHeader::
- call OffsetMenuDataHeader_
- call PushWindow
- ret
-
-OffsetMenuDataHeader_:: ; 1c9f (0:1c9f)
- push de
- call CopyMenuDataHeader
- pop de
- ld a, [wMenuBorderLeftCoord]
- ld h, a
- ld a, [wMenuBorderRightCoord]
- sub h
- ld h, a
- ld a, d
- ld [wMenuBorderLeftCoord], a
- add h
- ld [wMenuBorderRightCoord], a
- ld a, [wMenuBorderTopCoord]
- ld l, a
- ld a, [wMenuBorderBottomCoord]
- sub l
- ld l, a
- ld a, e
- ld [wMenuBorderTopCoord], a
- add l
- ld [wMenuBorderBottomCoord], a
- ret
-
-DoNthMenu::
- call DrawVariableLengthMenuBox
- call MenuWriteText
- call InitMenuCursorAndButtonPermissions
- call GetStaticMenuJoypad
+StaticMenuJoypad::
+ callfar _StaticMenuJoypad
call GetMenuJoypad
- call MenuClickSound
ret
-SetUpMenu::
- call DrawVariableLengthMenuBox
- call MenuWriteText
- call InitMenuCursorAndButtonPermissions
- ld hl, wcedc
- set 7, [hl]
- ret
-
-DrawVariableLengthMenuBox:: ; 1ce9 (0:1ce9)
- call CopyMenuData2
- call GetMenuIndexSet
- call AutomaticGetMenuBottomCoord
- call MenuBox
+ScrollingMenuJoypad::
+ callfar _ScrollingMenuJoypad
+ call GetMenuJoypad
ret
-MenuWriteText:: ; 1cf6 (0:1cf6)
- xor a
- ldh [hBGMapMode], a
- call GetMenuIndexSet
- call RunMenuItemPrintingFunction
- call SafeUpdateSprites
- ldh a, [hOAMUpdate]
+GetMenuJoypad::
+ push bc
push af
- ld a, $1
- ldh [hOAMUpdate], a
- call ApplyTilemap
- pop af
- ldh [hOAMUpdate], a
- ret
-
-AutomaticGetMenuBottomCoord:: ; 1d10 (0:1d10)
- ld a, [wMenuBorderLeftCoord]
- ld c, a
- ld a, [wMenuBorderRightCoord]
- sub c
- ld c, a
- ld a, [wMenuData2Items]
- add a
- inc a
+ ldh a, [hJoyLast]
+ and D_PAD
ld b, a
- ld a, [wMenuBorderTopCoord]
- add b
- ld [wMenuBorderBottomCoord], a
- ret
-
-GetMenuIndexSet:: ; 1d27 (0:1d27)
- ld hl, wMenuData2IndicesPointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wWhichIndexSet]
- and a
- jr z, .asm_1d3d
+ ldh a, [hJoyPressed]
+ and BUTTONS
+ or b
ld b, a
- ld c, $ff
-.asm_1d36
- ld a, [hli]
- cp c
- jr nz, .asm_1d36
- dec b
- jr nz, .asm_1d36
-.asm_1d3d
- ld d, h
- ld e, l
- ld a, [hl]
- ld [wMenuData2Items], a
- ret
-
-RunMenuItemPrintingFunction:: ; 1d44 (0:1d44)
- call MenuBoxCoord2Tile
- ld bc, 2 * SCREEN_WIDTH + 2
- add hl, bc
-.asm_1d4b
- inc de
- ld a, [de]
- cp $ff
- ret z
- ld [wMenuSelection], a
- push de
- push hl
- ld d, h
- ld e, l
- ld hl, wMenuData2DisplayFunctionPointer
- call ._hl_
- pop hl
- ld de, $28
- add hl, de
- pop de
- jr .asm_1d4b
-
-._hl_ ; 1d65 (0:1d65)
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-
-InitMenuCursorAndButtonPermissions:: ; 1d69 (0:1d69)
- call InitVerticalMenuCursor
- ld hl, wMenuJoypadFilter
- ld a, [wMenuData2Flags]
- bit 3, a
- jr z, .asm_1d78
- set 3, [hl]
-.asm_1d78
- ld a, [wMenuData2Flags]
- bit 2, a
- jr z, .asm_1d83
- set 5, [hl]
- set 4, [hl]
-.asm_1d83
- ret
-
-GetScrollingMenuJoypad::
- call ScrollingMenuJoypad
- ld hl, wMenuJoypadFilter
- and [hl]
- jr ContinueGettingMenuJoypad
-
-GetStaticMenuJoypad:: ; 1d8d (0:1d8d)
- xor a
- ld [wMenuJoypad], a
- call StaticMenuJoypad
-ContinueGettingMenuJoypad::
- bit 0, a
- jr nz, .asm_1dbc
- bit 1, a
- jr nz, .asm_1dd7
- bit 3, a
- jr nz, .asm_1dd7
- bit 4, a
- jr nz, .asm_1dae
- bit 5, a
- jr nz, .asm_1db5
- xor a
- ld [wMenuJoypad], a
- jr .asm_1dc1
-.asm_1dae
- ld a, $10
- ld [wMenuJoypad], a
- jr .asm_1dc1
-.asm_1db5
- ld a, $20
- ld [wMenuJoypad], a
- jr .asm_1dc1
-.asm_1dbc
- ld a, $1
- ld [wMenuJoypad], a
-.asm_1dc1
- call GetMenuIndexSet
- ld a, [wMenuCursorY]
- ld l, a
- ld h, $0
- add hl, de
- ld a, [hl]
- ld [wMenuSelection], a
- ld a, [wMenuCursorY]
- ld [wMenuCursorBuffer], a
- and a
- ret
-.asm_1dd7
- ld a, $2
- ld [wMenuJoypad], a
- ld a, $ff
- ld [wMenuSelection], a
- scf
+ pop af
+ ld a, b
+ pop bc
ret
-PlaceMenuStrings::
- push de
- ld hl, wMenuData2PointerTableAddr
+PlaceHollowCursor::
+ ld hl, wCursorCurrentTile
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wMenuSelection]
- call GetNthString
- ld d, h
- ld e, l
- pop hl
- call PlaceString
- ret
-
-PlaceNthMenuStrings::
- push de
- ld a, [wMenuSelection]
- call GetMenuDataPointerTableEntry
- inc hl
- inc hl
- ld a, [hli]
- ld d, [hl]
- ld e, a
- pop hl
- call PlaceString
- ret
-
-Function1e08::
- call GetMenuDataPointerTableEntry
- inc hl
- inc hl
- ld a, [hli]
- ld d, [hl]
- ld e, a
+ ld [hl], "▷"
ret
-MenuJumptable::
- ld a, [wMenuSelection]
- call GetMenuDataPointerTableEntry
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-
-GetMenuDataPointerTableEntry:: ; 1e1b (0:1e1b)
- ld e, a
- ld d, $0
- ld hl, wMenuData2PointerTableAddr
+HideCursor::
+ ld hl, wCursorCurrentTile
ld a, [hli]
ld h, [hl]
ld l, a
- add hl, de
- add hl, de
- add hl, de
- add hl, de
- ret
-
-ClearWindowData::
- ld hl, wWindowData
- call .bytefill
- ld hl, wMenuDataHeader
- call .bytefill
- ld hl, wMenuData2
- call .bytefill
- ld hl, wMenuData3
- call .bytefill
- xor a
- call OpenSRAM
- xor a
- ld hl, sWindowStackTop
- ld [hld], a
- ld [hld], a
- ld a, l
- ld [wWindowStackPointer], a
- ld a, h
- ld [wWindowStackPointer + 1], a
- call CloseSRAM
- ret
-
-.bytefill
- ld bc, $10
- xor a
- call ByteFill
- ret
-
-MenuClickSound:: ; 1e5f (0:1e5f)
- push af
- and $3
- jr z, .asm_1e6e
- ld hl, wMenuDataHeader
- bit 3, a
- jr nz, .asm_1e6e
- call PlayClickSFX
-.asm_1e6e
- pop af
- ret
-PlayClickSFX:: ; 1e70 (0:1e70)
- push de
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- pop de
- ret
-
-MenuTextBoxWaitButton::
- call MenuTextBox
- call WaitButton
- call ExitMenu
- ret
-
-Place2DMenuItemName::
- ld [wBuffer], a
- ldh a, [hROMBank]
- push af
- ld a, [wBuffer]
- rst Bankswitch
- call PlaceString
- pop af
- rst Bankswitch
- ret
-
-_2DMenu::
- call CopyMenuData2
- ldh a, [hROMBank]
- ld [wMenuDataBank], a
- push af
- ld a, BANK(_2DMenu_)
- rst Bankswitch
- call _2DMenu_
- pop bc
- ld a, b
- rst Bankswitch
- ld a, [wMenuCursorBuffer]
- ret
-
-ResetBGWindow::
- xor a
- ldh [hBGMapMode], a
- ld a, $90
- ldh [rWY], a
- ldh [hWY], a
+ ld [hl], " "
ret