mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-11-14 00:56:40 +13:00
disasm of options menu
hg-commit-id: 9122bf61b409
This commit is contained in:
parent
61b0c12165
commit
3316118125
|
|
@ -600,6 +600,18 @@ W_PARTYMON6NAME EQU $D2EC
|
|||
|
||||
W_RIVALNAME EQU $D34A ; 11 characters, including null
|
||||
|
||||
W_OPTIONS EQU $D355
|
||||
; bit 7 = battle animation
|
||||
; 0: On
|
||||
; 1: Off
|
||||
; bit 6 = battle style
|
||||
; 0: Shift
|
||||
; 1: Set
|
||||
; bits 0-3 = text speed (number of frames to delay after printing a letter)
|
||||
; 1: Fast
|
||||
; 3: Medium
|
||||
; 5: Slow
|
||||
|
||||
W_OBTAINEDBADGES EQU $D356
|
||||
|
||||
W_PLAYERIDHI EQU $D359
|
||||
|
|
|
|||
331
main.asm
331
main.asm
|
|
@ -5745,17 +5745,17 @@ RedisplayStartMenu: ; 2ADF
|
|||
inc a ; adjust position to account for missing pokedex menu item
|
||||
.displayMenuItem\@
|
||||
cp a,0
|
||||
jp z,$7095 ; POKEDEX
|
||||
jp z,StartMenu_Pokedex
|
||||
cp a,1
|
||||
jp z,DisplayPokemonMenu ; POKEMON
|
||||
jp z,StartMenu_Pokemon
|
||||
cp a,2
|
||||
jp z,DisplayItemMenu ; ITEM
|
||||
jp z,StartMenu_Item
|
||||
cp a,3
|
||||
jp z,DisplayTrainerInfo ; Trainer Info
|
||||
jp z,StartMenu_TrainerInfo
|
||||
cp a,4
|
||||
jp z,$75e3 ; SAVE / RESET
|
||||
jp z,StartMenu_SaveReset
|
||||
cp a,5
|
||||
jp z,$75f6 ; OPTION
|
||||
jp z,StartMenu_Option
|
||||
|
||||
; EXIT falls through to here
|
||||
CloseStartMenu: ; 2B70
|
||||
|
|
@ -8416,7 +8416,275 @@ UnnamedText_5d4d: ; 0x5d4d
|
|||
db $50
|
||||
; 0x5d4d + 5 bytes
|
||||
|
||||
INCBIN "baserom.gbc",$5d52,$3c3
|
||||
INCBIN "baserom.gbc",$5d52,$5e8a - $5d52
|
||||
|
||||
DisplayOptionMenu: ; 5E8A
|
||||
FuncCoord 0,0
|
||||
ld hl,Coord
|
||||
ld b,3
|
||||
ld c,18
|
||||
call TextBoxBorder
|
||||
FuncCoord 0,5
|
||||
ld hl,Coord
|
||||
ld b,3
|
||||
ld c,18
|
||||
call TextBoxBorder
|
||||
FuncCoord 0,10
|
||||
ld hl,Coord
|
||||
ld b,3
|
||||
ld c,18
|
||||
call TextBoxBorder
|
||||
FuncCoord 1,1
|
||||
ld hl,Coord
|
||||
ld de,TextSpeedOptionText
|
||||
call PlaceString
|
||||
FuncCoord 1,6
|
||||
ld hl,Coord
|
||||
ld de,BattleAnimationOptionText
|
||||
call PlaceString
|
||||
FuncCoord 1,11
|
||||
ld hl,Coord
|
||||
ld de,BattleStyleOptionText
|
||||
call PlaceString
|
||||
FuncCoord 2,16
|
||||
ld hl,Coord
|
||||
ld de,OptionMenuCancelText
|
||||
call PlaceString
|
||||
xor a
|
||||
ld [W_CURMENUITEMID],a
|
||||
ld [W_OLDMENUITEMID],a
|
||||
inc a
|
||||
ld [$d358],a
|
||||
ld [$cd40],a
|
||||
ld a,3 ; text speed cursor Y coordinate
|
||||
ld [W_TOPMENUITEMY],a
|
||||
call SetCursorPositionsFromOptions
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
ld [W_TOPMENUITEMX],a
|
||||
ld a,$01
|
||||
ld [H_AUTOBGTRANSFERENABLED],a ; enable auto background transfer
|
||||
call Delay3
|
||||
.loop\@
|
||||
call PlaceMenuCursor
|
||||
call SetOptionsFromCursorPositions
|
||||
.getJoypadStateLoop\@
|
||||
call GetJoypadStateLowSensitivity
|
||||
ld a,[$ffb5]
|
||||
ld b,a
|
||||
and a,%11111011 ; any key besides select pressed?
|
||||
jr z,.getJoypadStateLoop\@
|
||||
bit 1,b ; B button pressed?
|
||||
jr nz,.exitMenu\@
|
||||
bit 3,b ; Start button pressed?
|
||||
jr nz,.exitMenu\@
|
||||
bit 0,b ; A button pressed?
|
||||
jr z,.checkDirectionKeys\@
|
||||
ld a,[W_TOPMENUITEMY]
|
||||
cp a,16 ; is the cursor on Cancel?
|
||||
jr nz,.loop\@
|
||||
.exitMenu\@
|
||||
ld a,$90
|
||||
call $23b1 ; play sound
|
||||
ret
|
||||
.eraseOldMenuCursor\@
|
||||
ld [W_TOPMENUITEMX],a
|
||||
call EraseMenuCursor
|
||||
jp .loop\@
|
||||
.checkDirectionKeys\@
|
||||
ld a,[W_TOPMENUITEMY]
|
||||
bit 7,b ; Down pressed?
|
||||
jr nz,.downPressed\@
|
||||
bit 6,b ; Up pressed?
|
||||
jr nz,.upPressed\@
|
||||
cp a,8 ; cursor in Battle Animation section?
|
||||
jr z,.cursorInBattleAnimation\@
|
||||
cp a,13 ; cursor in Battle Style section?
|
||||
jr z,.cursorInBattleStyle\@
|
||||
cp a,16 ; cursor on Cancel?
|
||||
jr z,.loop\@
|
||||
.cursorInTextSpeed\@
|
||||
bit 5,b ; Left pressed?
|
||||
jp nz,.pressedLeftInTextSpeed\@
|
||||
jp .pressedRightInTextSpeed\@
|
||||
.downPressed\@
|
||||
cp a,16
|
||||
ld b,-13
|
||||
ld hl,$cd3d
|
||||
jr z,.updateMenuVariables\@
|
||||
ld b,5
|
||||
cp a,3
|
||||
inc hl
|
||||
jr z,.updateMenuVariables\@
|
||||
cp a,8
|
||||
inc hl
|
||||
jr z,.updateMenuVariables\@
|
||||
ld b,3
|
||||
inc hl
|
||||
jr .updateMenuVariables\@
|
||||
.upPressed\@
|
||||
cp a,8
|
||||
ld b,-5
|
||||
ld hl,$cd3d
|
||||
jr z,.updateMenuVariables\@
|
||||
cp a,13
|
||||
inc hl
|
||||
jr z,.updateMenuVariables\@
|
||||
cp a,16
|
||||
ld b,-3
|
||||
inc hl
|
||||
jr z,.updateMenuVariables\@
|
||||
ld b,13
|
||||
inc hl
|
||||
.updateMenuVariables\@
|
||||
add b
|
||||
ld [W_TOPMENUITEMY],a
|
||||
ld a,[hl]
|
||||
ld [W_TOPMENUITEMX],a
|
||||
call PlaceUnfilledArrowMenuCursor
|
||||
jp .loop\@
|
||||
.cursorInBattleAnimation\@
|
||||
ld a,[$cd3e] ; battle animation cursor X coordinate
|
||||
xor a,$0b ; toggle between 1 and 10
|
||||
ld [$cd3e],a
|
||||
jp .eraseOldMenuCursor\@
|
||||
.cursorInBattleStyle\@
|
||||
ld a,[$cd3f] ; battle style cursor X coordinate
|
||||
xor a,$0b ; toggle between 1 and 10
|
||||
ld [$cd3f],a
|
||||
jp .eraseOldMenuCursor\@
|
||||
.pressedLeftInTextSpeed\@
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
cp a,1
|
||||
jr z,.updateTextSpeedXCoord\@
|
||||
cp a,7
|
||||
jr nz,.fromSlowToMedium\@
|
||||
sub a,6
|
||||
jr .updateTextSpeedXCoord\@
|
||||
.fromSlowToMedium\@
|
||||
sub a,7
|
||||
jr .updateTextSpeedXCoord\@
|
||||
.pressedRightInTextSpeed\@
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
cp a,14
|
||||
jr z,.updateTextSpeedXCoord\@
|
||||
cp a,7
|
||||
jr nz,.fromFastToMedium\@
|
||||
add a,7
|
||||
jr .updateTextSpeedXCoord\@
|
||||
.fromFastToMedium\@
|
||||
add a,6
|
||||
.updateTextSpeedXCoord\@
|
||||
ld [$cd3d],a ; text speed cursor X coordinate
|
||||
jp .eraseOldMenuCursor\@
|
||||
|
||||
TextSpeedOptionText: ; 5FC0
|
||||
db "TEXT SPEED",$4E
|
||||
db " FAST MEDIUM SLOW@"
|
||||
|
||||
BattleAnimationOptionText: ; 5FDE
|
||||
db "BATTLE ANIMATION",$4E
|
||||
db " ON OFF@"
|
||||
|
||||
BattleStyleOptionText: ; 5FFD
|
||||
db "BATTLE STYLE",$4E
|
||||
db " SHIFT SET@"
|
||||
|
||||
OptionMenuCancelText: ; 6018
|
||||
db "CANCEL@"
|
||||
|
||||
; sets the options variable according to the current placement of the menu cursors in the options menu
|
||||
SetOptionsFromCursorPositions: ; 601F
|
||||
ld hl,TextSpeedOptionData
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
ld c,a
|
||||
.loop\@
|
||||
ld a,[hli]
|
||||
cp c
|
||||
jr z,.textSpeedMatchFound\@
|
||||
inc hl
|
||||
jr .loop\@
|
||||
.textSpeedMatchFound\@
|
||||
ld a,[hl]
|
||||
ld d,a
|
||||
ld a,[$cd3e] ; battle animation cursor X coordinate
|
||||
dec a
|
||||
jr z,.battleAnimationOn\@
|
||||
.battleAnimationOff\@
|
||||
set 7,d
|
||||
jr .checkBattleStyle\@
|
||||
.battleAnimationOn\@
|
||||
res 7,d
|
||||
.checkBattleStyle\@
|
||||
ld a,[$cd3f] ; battle style cursor X coordinate
|
||||
dec a
|
||||
jr z,.battleStyleShift\@
|
||||
.battleStyleSet\@
|
||||
set 6,d
|
||||
jr .storeOptions\@
|
||||
.battleStyleShift\@
|
||||
res 6,d
|
||||
.storeOptions\@
|
||||
ld a,d
|
||||
ld [W_OPTIONS],a
|
||||
ret
|
||||
|
||||
; reads the options variable and places menu cursors in the correct positions within the options menu
|
||||
SetCursorPositionsFromOptions: ; 604C
|
||||
ld hl,TextSpeedOptionData + 1
|
||||
ld a,[W_OPTIONS]
|
||||
ld c,a
|
||||
and a,$3f
|
||||
push bc
|
||||
ld de,2
|
||||
call IsInArray
|
||||
pop bc
|
||||
dec hl
|
||||
ld a,[hl]
|
||||
ld [$cd3d],a ; text speed cursor X coordinate
|
||||
FuncCoord 0,3
|
||||
ld hl,Coord
|
||||
call .placeUnfilledRightArrow\@
|
||||
sla c
|
||||
ld a,1 ; On
|
||||
jr nc,.storeBattleAnimationCursorX\@
|
||||
ld a,10 ; Off
|
||||
.storeBattleAnimationCursorX\@
|
||||
ld [$cd3e],a ; battle animation cursor X coordinate
|
||||
FuncCoord 0,8
|
||||
ld hl,Coord
|
||||
call .placeUnfilledRightArrow\@
|
||||
sla c
|
||||
ld a,1
|
||||
jr nc,.storeBattleStyleCursorX\@
|
||||
ld a,10
|
||||
.storeBattleStyleCursorX\@
|
||||
ld [$cd3f],a ; battle style cursor X coordinate
|
||||
FuncCoord 0,13
|
||||
ld hl,Coord
|
||||
call .placeUnfilledRightArrow\@
|
||||
; cursor in front of Cancel
|
||||
FuncCoord 0,16
|
||||
ld hl,Coord
|
||||
ld a,1
|
||||
.placeUnfilledRightArrow\@
|
||||
ld e,a
|
||||
ld d,0
|
||||
add hl,de
|
||||
ld [hl],$ec ; unfilled right arrow menu cursor
|
||||
ret
|
||||
|
||||
; table that indicates how the 3 text speed options affect frame delays
|
||||
; Format:
|
||||
; 00: X coordinate of menu cursor
|
||||
; 01: delay after printing a letter (in frames)
|
||||
TextSpeedOptionData: ; 6096
|
||||
db 14,5 ; Slow
|
||||
db 7,3 ; Medium
|
||||
db 1,1 ; Fast
|
||||
db 7 ; default X coordinate (Medium)
|
||||
db $ff ; terminator
|
||||
|
||||
INCBIN "baserom.gbc",$609e,$6115-$609e
|
||||
|
||||
OakSpeech: ; 6115
|
||||
ld a,$FF
|
||||
|
|
@ -16656,9 +16924,18 @@ ShrinkPic1:
|
|||
ShrinkPic2:
|
||||
INCBIN "pic/trainer/shrink2.pic"
|
||||
|
||||
INCBIN "baserom.gbc",$13074,$130A9 - $13074
|
||||
INCBIN "baserom.gbc",$13074,$13095 - $13074
|
||||
|
||||
DisplayPokemonMenu: ; 70A9
|
||||
StartMenu_Pokedex: ; 7095
|
||||
ld a,$29
|
||||
call Predef
|
||||
call $3701 ; restore saved screen
|
||||
call Delay3
|
||||
call LoadGBPal
|
||||
call $2429
|
||||
jp RedisplayStartMenu
|
||||
|
||||
StartMenu_Pokemon: ; 70A9
|
||||
ld a,[W_NUMINPARTY]
|
||||
and a
|
||||
jp z,RedisplayStartMenu
|
||||
|
|
@ -16739,7 +17016,7 @@ DisplayPokemonMenu: ; 70A9
|
|||
.choseSwitch\@
|
||||
ld a,[W_NUMINPARTY]
|
||||
cp a,2 ; is there more than one pokemon in the party?
|
||||
jp c,DisplayPokemonMenu ; if not, no switching
|
||||
jp c,StartMenu_Pokemon ; if not, no switching
|
||||
call $7653
|
||||
ld a,$04 ; swap pokemon positions menu
|
||||
ld [$d07d],a
|
||||
|
|
@ -16754,7 +17031,7 @@ DisplayPokemonMenu: ; 70A9
|
|||
ld a,$37
|
||||
call Predef
|
||||
call ReloadMapData
|
||||
jp DisplayPokemonMenu
|
||||
jp StartMenu_Pokemon
|
||||
.choseOutOfBattleMove\@
|
||||
push hl
|
||||
ld a,[$cf92]
|
||||
|
|
@ -16802,7 +17079,7 @@ DisplayPokemonMenu: ; 70A9
|
|||
call LoadFontTilePatterns
|
||||
ld hl,$d72e
|
||||
set 1,[hl]
|
||||
jp DisplayPokemonMenu
|
||||
jp StartMenu_Pokemon
|
||||
.cut\@
|
||||
bit 1,a ; does the player have the Cascade Badge?
|
||||
jp z,.newBadgeRequired\@
|
||||
|
|
@ -16958,7 +17235,7 @@ ItemMenuLoop: ; 72FC
|
|||
call $3709 ; restore saved screen
|
||||
call GoPAL_SET_CF1C
|
||||
|
||||
DisplayItemMenu: ; 7302
|
||||
StartMenu_Item: ; 7302
|
||||
ld a,[W_ISLINKBATTLE]
|
||||
dec a
|
||||
jr nz,.notInLinkBattle\@
|
||||
|
|
@ -17079,7 +17356,7 @@ DisplayItemMenu: ; 7302
|
|||
call $3dbe
|
||||
pop af
|
||||
ld [$cfcb],a
|
||||
jp DisplayItemMenu
|
||||
jp StartMenu_Item
|
||||
.partyMenuNotDisplayed\@
|
||||
pop af
|
||||
ld [$cfcb],a
|
||||
|
|
@ -17159,7 +17436,7 @@ UsableItems_CloseMenu: ; 7459
|
|||
db SUPER_ROD
|
||||
db $ff
|
||||
|
||||
DisplayTrainerInfo: ; 7460
|
||||
StartMenu_TrainerInfo: ; 7460
|
||||
call GBPalWhiteOut
|
||||
call ClearScreen
|
||||
call $2429 ; move sprites
|
||||
|
|
@ -17360,7 +17637,29 @@ TrainerInfo_DrawVerticalLine: ; 75D8
|
|||
jr nz,.loop\@
|
||||
ret
|
||||
|
||||
INCBIN "baserom.gbc",$135e3,$13773 - $135e3
|
||||
StartMenu_SaveReset: ; 75E3
|
||||
ld a,[$d72e]
|
||||
bit 6,a ; is the player using the link feature?
|
||||
jp nz,InitGame
|
||||
ld a,$3f
|
||||
call Predef ; save the game
|
||||
call $3701 ; restore saved screen
|
||||
jp HoldTextDisplayOpen
|
||||
|
||||
StartMenu_Option: ; 75F6
|
||||
xor a
|
||||
ld [H_AUTOBGTRANSFERENABLED],a
|
||||
call ClearScreen
|
||||
call $2429
|
||||
ld hl,DisplayOptionMenu
|
||||
ld b,BANK(DisplayOptionMenu)
|
||||
call Bankswitch
|
||||
call $3701 ; restore saved screen
|
||||
call LoadTextBoxTilePatterns
|
||||
call $2429
|
||||
jp RedisplayStartMenu
|
||||
|
||||
INCBIN "baserom.gbc",$13613,$7773 - $7613
|
||||
|
||||
TechnicalMachines: ; 0x13773
|
||||
db MEGA_PUNCH
|
||||
|
|
|
|||
Loading…
Reference in a new issue