Add Nuzloptions menu to main menu

This commit is contained in:
robjlyons 2026-02-20 16:37:07 +00:00
parent d20c0831d8
commit 830c454304
2 changed files with 146 additions and 3 deletions

View File

@ -34,7 +34,7 @@ MainMenu:
jr z, .noSaveFile
; there's a save file
hlcoord 0, 0
lb bc, 6, 13
lb bc, 8, 13
call TextBoxBorder
hlcoord 2, 2
ld de, ContinueText
@ -42,7 +42,7 @@ MainMenu:
jr .next2
.noSaveFile
hlcoord 0, 0
lb bc, 4, 13
lb bc, 6, 13
call TextBoxBorder
hlcoord 2, 2
ld de, NewGameText
@ -62,6 +62,7 @@ MainMenu:
ld a, PAD_A | PAD_B | PAD_START
ld [wMenuWatchedKeys], a
ld a, [wSaveFileStatus]
inc a
ld [wMaxMenuItem], a
call HandleMenuInput
bit B_PAD_B, a
@ -82,6 +83,11 @@ MainMenu:
jr z, .choseContinue
cp 1
jp z, StartNewGame
cp 2
jr z, .choseOptionMenu
call DisplayNuzloptionsMenu
jp .mainMenuLoop
.choseOptionMenu
call DisplayOptionMenu
ld a, TRUE
ld [wOptionsInitialized], a
@ -183,7 +189,141 @@ ContinueText:
NewGameText:
db "NEW GAME"
next "OPTION@"
next "OPTION"
next "NUZLOPTIONS@"
DisplayNuzloptionsMenu:
call InitNuzloptionsMenu
.nuzloptionsMenuLoop
call JoypadLowSensitivity
ldh a, [hJoy5]
and PAD_START | PAD_B
ret nz
call NuzloptionsControl
jr c, .dpadDelay
call NuzloptionsMenu_UpdateSelectedOption
.dpadDelay
call NuzloptionsMenu_UpdateCursorPosition
call DelayFrame
call DelayFrame
call DelayFrame
jr .nuzloptionsMenuLoop
NuzloptionsMenu_UpdateSelectedOption:
ld a, [wNuzloptionsCursorLocation]
and a
jr z, .all151
ld hl, wNuzloptionsRandomise
jr .update
.all151
ld hl, wNuzloptionsAll151Pokemon
.update
ldh a, [hJoy5]
and PAD_LEFT | PAD_RIGHT
jr z, .drawOnly
ld a, [hl]
xor 1
ld [hl], a
.drawOnly
ld a, [hl]
ld c, a
ld b, 0
ld hl, .Strings
add hl, bc
add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
ld a, [wNuzloptionsCursorLocation]
and a
jr z, .placeAll151
hlcoord 14, 6
jr .place
.placeAll151
hlcoord 14, 4
.place
call PlaceString
ret
.Strings:
dw .Off
dw .On
.Off: db "OFF@"
.On: db "ON @"
NuzloptionsControl:
ld hl, wNuzloptionsCursorLocation
ldh a, [hJoy5]
cp PAD_DOWN
jr z, .pressedDown
cp PAD_UP
jr z, .pressedUp
and a
ret
.pressedDown
ld a, [hl]
cp 1
jr nz, .increase
xor a
ld [hl], a
scf
ret
.increase
inc [hl]
scf
ret
.pressedUp
ld a, [hl]
and a
jr nz, .decrease
ld [hl], 2
.decrease
dec [hl]
scf
ret
NuzloptionsMenu_UpdateCursorPosition:
hlcoord 1, 1
ld de, SCREEN_WIDTH
ld c, 8
.loop
ld [hl], ' '
add hl, de
dec c
jr nz, .loop
hlcoord 1, 4
ld bc, SCREEN_WIDTH * 2
ld a, [wNuzloptionsCursorLocation]
call AddNTimes
ld [hl], '▶'
ret
InitNuzloptionsMenu:
hlcoord 0, 0
lb bc, 8, SCREEN_WIDTH - 2
call TextBoxBorder
hlcoord 2, 2
ld de, NuzloptionsText
call PlaceString
xor a
ld [wNuzloptionsCursorLocation], a
ld [wNuzloptionsAll151Pokemon], a
ld [wNuzloptionsRandomise], a
call NuzloptionsMenu_UpdateSelectedOption
ld a, 1
ld [wNuzloptionsCursorLocation], a
call NuzloptionsMenu_UpdateSelectedOption
xor a
ld [wNuzloptionsCursorLocation], a
inc a
ldh [hAutoBGTransferEnabled], a
call Delay3
ret
NuzloptionsText:
db "ALL 151 POKEMON:"
next "RANDOMISE:@"
DisplayContinueGameInfo:
xor a

View File

@ -1940,6 +1940,9 @@ wPlayerMoney:: ds 3 ; BCD
wRivalName:: ds NAME_LENGTH
wOptions:: db
wNuzloptionsAll151Pokemon:: db
wNuzloptionsRandomise:: db
wNuzloptionsCursorLocation:: db
wObtainedBadges:: flag_array NUM_BADGES