mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-11-12 16:24:52 +13:00
disasm of pokemon menu function
hg-commit-id: 47d36266a0ae
This commit is contained in:
parent
6a90847eb6
commit
d527e05cd8
|
|
@ -600,6 +600,8 @@ W_PARTYMON6NAME EQU $D2EC
|
||||||
|
|
||||||
W_RIVALNAME EQU $D34A ; 11 characters, including null
|
W_RIVALNAME EQU $D34A ; 11 characters, including null
|
||||||
|
|
||||||
|
W_OBTAINEDBADGES EQU $D356
|
||||||
|
|
||||||
W_PLAYERIDHI EQU $D359
|
W_PLAYERIDHI EQU $D359
|
||||||
W_PLAYERIDLO EQU $D35A
|
W_PLAYERIDLO EQU $D35A
|
||||||
|
|
||||||
|
|
|
||||||
330
main.asm
330
main.asm
|
|
@ -5681,6 +5681,8 @@ DisplayStartMenu: ; 2ACD
|
||||||
ld [$d11a],a
|
ld [$d11a],a
|
||||||
ld a,$8f ; Start menu sound
|
ld a,$8f ; Start menu sound
|
||||||
call $23b1
|
call $23b1
|
||||||
|
|
||||||
|
RedisplayStartMenu: ; 2ADF
|
||||||
ld b,BANK(DrawStartMenu)
|
ld b,BANK(DrawStartMenu)
|
||||||
ld hl,DrawStartMenu
|
ld hl,DrawStartMenu
|
||||||
call Bankswitch
|
call Bankswitch
|
||||||
|
|
@ -5745,7 +5747,7 @@ DisplayStartMenu: ; 2ACD
|
||||||
cp a,0
|
cp a,0
|
||||||
jp z,$7095 ; POKEDEX
|
jp z,$7095 ; POKEDEX
|
||||||
cp a,1
|
cp a,1
|
||||||
jp z,$70a9 ; POKEMON
|
jp z,DisplayPokemonMenu ; POKEMON
|
||||||
cp a,2
|
cp a,2
|
||||||
jp z,$7302 ; ITEM
|
jp z,$7302 ; ITEM
|
||||||
cp a,3
|
cp a,3
|
||||||
|
|
@ -6971,8 +6973,7 @@ Multiply: ; 38AC
|
||||||
; INPUT
|
; INPUT
|
||||||
; FF95-FF98 = dividend
|
; FF95-FF98 = dividend
|
||||||
; FF99 = divisor
|
; FF99 = divisor
|
||||||
; b = number of signficant bytes in the dividend (starting from FF95)
|
; b = number of bytes in the dividend (starting from FF95)
|
||||||
; all bytes considered "not signifcant" will be treated as 0
|
|
||||||
; OUTPUT
|
; OUTPUT
|
||||||
; FF95-FF98 = quotient
|
; FF95-FF98 = quotient
|
||||||
; FF99 = remainder
|
; FF99 = remainder
|
||||||
|
|
@ -15268,7 +15269,7 @@ ItemUseBall: ; 03:5687
|
||||||
ld a,8
|
ld a,8
|
||||||
.next7\@ ;$574d
|
.next7\@ ;$574d
|
||||||
ld [H_DIVISOR],a
|
ld [H_DIVISOR],a
|
||||||
ld b,4 ;number of significant bytes
|
ld b,4 ; number of bytes in dividend
|
||||||
call Divide
|
call Divide
|
||||||
ld hl,W_ENEMYMONCURHP
|
ld hl,W_ENEMYMONCURHP
|
||||||
ld a,[hli]
|
ld a,[hli]
|
||||||
|
|
@ -16452,43 +16453,290 @@ ShrinkPic1:
|
||||||
ShrinkPic2:
|
ShrinkPic2:
|
||||||
INCBIN "pic/trainer/shrink2.pic"
|
INCBIN "pic/trainer/shrink2.pic"
|
||||||
|
|
||||||
INCBIN "baserom.gbc",$13074,$13228 - $13074
|
INCBIN "baserom.gbc",$13074,$130A9 - $13074
|
||||||
|
|
||||||
UnnamedText_13228: ; 0x13228
|
DisplayPokemonMenu: ; 70A9
|
||||||
TX_FAR _UnnamedText_13228
|
ld a,[W_NUMINPARTY]
|
||||||
|
and a
|
||||||
|
jp z,RedisplayStartMenu
|
||||||
|
xor a
|
||||||
|
ld [$cc35],a
|
||||||
|
ld [$d07d],a
|
||||||
|
ld [$cfcb],a
|
||||||
|
call DisplayPartyMenu
|
||||||
|
jr .checkIfPokemonChosen\@
|
||||||
|
.loop\@
|
||||||
|
xor a
|
||||||
|
ld [$cc35],a
|
||||||
|
ld [$d07d],a
|
||||||
|
call GoBackToPartyMenu
|
||||||
|
.checkIfPokemonChosen\@
|
||||||
|
jr nc,.chosePokemon\@
|
||||||
|
.exitMenu\@
|
||||||
|
call GBPalWhiteOutWithDelay3
|
||||||
|
call $3dbe
|
||||||
|
call LoadGBPal
|
||||||
|
jp RedisplayStartMenu
|
||||||
|
.chosePokemon\@
|
||||||
|
call $3719 ; save screen
|
||||||
|
ld a,$04
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; display pokemon menu options
|
||||||
|
ld hl,$cd3d
|
||||||
|
ld bc,$020c ; max menu item ID, top menu item Y
|
||||||
|
ld e,5
|
||||||
|
.adjustMenuVariablesLoop\@
|
||||||
|
dec e
|
||||||
|
jr z,.storeMenuVariables\@
|
||||||
|
ld a,[hli]
|
||||||
|
and a
|
||||||
|
jr z,.storeMenuVariables\@
|
||||||
|
inc b
|
||||||
|
dec c
|
||||||
|
dec c
|
||||||
|
jr .adjustMenuVariablesLoop\@
|
||||||
|
.storeMenuVariables\@
|
||||||
|
ld hl,W_TOPMENUITEMY
|
||||||
|
ld a,c
|
||||||
|
ld [hli],a ; top menu item Y
|
||||||
|
ld a,[$fff7]
|
||||||
|
ld [hli],a ; top menu item X
|
||||||
|
xor a
|
||||||
|
ld [hli],a ; current menu item ID
|
||||||
|
inc hl
|
||||||
|
ld a,b
|
||||||
|
ld [hli],a ; max menu item ID
|
||||||
|
ld a,%00000011 ; A button, B button
|
||||||
|
ld [hli],a ; menu watched keys
|
||||||
|
xor a
|
||||||
|
ld [hl],a
|
||||||
|
call HandleMenuInput
|
||||||
|
push af
|
||||||
|
call $3725 ; restore saved screen
|
||||||
|
pop af
|
||||||
|
bit 1,a ; was the B button pressed?
|
||||||
|
jp nz,.loop\@
|
||||||
|
; if the B button wasn't pressed
|
||||||
|
ld a,[W_MAXMENUITEMID]
|
||||||
|
ld b,a
|
||||||
|
ld a,[W_CURMENUITEMID] ; menu selection
|
||||||
|
cp b
|
||||||
|
jp z,.exitMenu\@ ; if the player chose Cancel
|
||||||
|
dec b
|
||||||
|
cp b
|
||||||
|
jr z,.choseSwitch\@
|
||||||
|
dec b
|
||||||
|
cp b
|
||||||
|
jp z,.choseStats\@
|
||||||
|
ld c,a
|
||||||
|
ld b,0
|
||||||
|
ld hl,$cd3d
|
||||||
|
add hl,bc
|
||||||
|
jp .choseOutOfBattleMove\@
|
||||||
|
.choseSwitch\@
|
||||||
|
ld a,[W_NUMINPARTY]
|
||||||
|
cp a,2 ; is there more than one pokemon in the party?
|
||||||
|
jp c,DisplayPokemonMenu ; if not, no switching
|
||||||
|
call $7653
|
||||||
|
ld a,$04 ; swap pokemon positions menu
|
||||||
|
ld [$d07d],a
|
||||||
|
call GoBackToPartyMenu
|
||||||
|
jp .checkIfPokemonChosen\@
|
||||||
|
.choseStats\@
|
||||||
|
call CleanLCD_OAM
|
||||||
|
xor a
|
||||||
|
ld [$cc49],a
|
||||||
|
ld a,$36
|
||||||
|
call Predef
|
||||||
|
ld a,$37
|
||||||
|
call Predef
|
||||||
|
call $3071
|
||||||
|
jp DisplayPokemonMenu
|
||||||
|
.choseOutOfBattleMove\@
|
||||||
|
push hl
|
||||||
|
ld a,[$cf92]
|
||||||
|
ld hl,W_PARTYMON1NAME
|
||||||
|
call GetPartyMonName
|
||||||
|
pop hl
|
||||||
|
ld a,[hl]
|
||||||
|
dec a
|
||||||
|
add a
|
||||||
|
ld b,0
|
||||||
|
ld c,a
|
||||||
|
ld hl,.outOfBattleMovePointers\@
|
||||||
|
add hl,bc
|
||||||
|
ld a,[hli]
|
||||||
|
ld h,[hl]
|
||||||
|
ld l,a
|
||||||
|
ld a,[W_OBTAINEDBADGES] ; badges obtained
|
||||||
|
jp [hl]
|
||||||
|
.outOfBattleMovePointers\@
|
||||||
|
dw .cut\@
|
||||||
|
dw .fly\@
|
||||||
|
dw .surf\@
|
||||||
|
dw .surf\@
|
||||||
|
dw .strength\@
|
||||||
|
dw .flash\@
|
||||||
|
dw .dig\@
|
||||||
|
dw .teleport\@
|
||||||
|
dw .softboiled\@
|
||||||
|
.fly\@
|
||||||
|
bit 2,a ; does the player have the Thunder Badge?
|
||||||
|
jp z,.newBadgeRequired\@
|
||||||
|
call CheckIfInOutsideMap
|
||||||
|
jr z,.canFly\@
|
||||||
|
ld a,[$cf92]
|
||||||
|
ld hl,W_PARTYMON1NAME
|
||||||
|
call GetPartyMonName
|
||||||
|
ld hl,.cannotFlyHereText\@
|
||||||
|
call PrintText
|
||||||
|
jp .loop\@
|
||||||
|
.canFly\@
|
||||||
|
call $30a9 ; allow player to pick fly destination on map
|
||||||
|
ld a,[$d732]
|
||||||
|
bit 3,a ; did the player decide to fly?
|
||||||
|
jp nz,.goBackToMap\@
|
||||||
|
call LoadFontTilePatterns
|
||||||
|
ld hl,$d72e
|
||||||
|
set 1,[hl]
|
||||||
|
jp DisplayPokemonMenu
|
||||||
|
.cut\@
|
||||||
|
bit 1,a ; does the player have the Cascade Badge?
|
||||||
|
jp z,.newBadgeRequired\@
|
||||||
|
ld a,$3c
|
||||||
|
call Predef
|
||||||
|
ld a,[$cd6a]
|
||||||
|
and a
|
||||||
|
jp z,.loop\@
|
||||||
|
jp CloseTextDisplay
|
||||||
|
.surf\@
|
||||||
|
bit 4,a ; does the player have the Soul Badge?
|
||||||
|
jp z,.newBadgeRequired\@
|
||||||
|
ld b,$03
|
||||||
|
ld hl,$4dc0
|
||||||
|
call Bankswitch
|
||||||
|
ld hl,$d728
|
||||||
|
bit 1,[hl]
|
||||||
|
res 1,[hl]
|
||||||
|
jp z,.loop\@
|
||||||
|
ld a,$07
|
||||||
|
ld [$cf91],a
|
||||||
|
ld [$d152],a
|
||||||
|
call $30bc
|
||||||
|
ld a,[$cd6a]
|
||||||
|
and a
|
||||||
|
jp z,.loop\@
|
||||||
|
call GBPalWhiteOutWithDelay3
|
||||||
|
jp .goBackToMap\@
|
||||||
|
.strength\@
|
||||||
|
bit 3,a ; does the player have the Rainbow Badge?
|
||||||
|
jp z,.newBadgeRequired\@
|
||||||
|
ld a,$5b
|
||||||
|
call Predef
|
||||||
|
call GBPalWhiteOutWithDelay3
|
||||||
|
jp .goBackToMap\@
|
||||||
|
.flash\@
|
||||||
|
bit 0,a ; does the player have the Boulder Badge?
|
||||||
|
jp z,.newBadgeRequired\@
|
||||||
|
xor a
|
||||||
|
ld [$d35d],a
|
||||||
|
ld hl,.flashLightsAreaText\@
|
||||||
|
call PrintText
|
||||||
|
call GBPalWhiteOutWithDelay3
|
||||||
|
jp .goBackToMap\@
|
||||||
|
.flashLightsAreaText\@
|
||||||
|
TX_FAR _FlashLightsAreaText
|
||||||
db $50
|
db $50
|
||||||
; 0x13228 + 5 bytes
|
.dig\@
|
||||||
|
ld a,$1d
|
||||||
INCBIN "baserom.gbc",$1322d,$1327b - $1322d
|
ld [$cf91],a
|
||||||
|
ld [$d152],a
|
||||||
UnnamedText_1327b: ; 0x1327b
|
call $30bc
|
||||||
TX_FAR _UnnamedText_1327b
|
ld a,[$cd6a]
|
||||||
|
and a
|
||||||
|
jp z,.loop\@
|
||||||
|
call GBPalWhiteOutWithDelay3
|
||||||
|
jp .goBackToMap\@
|
||||||
|
.teleport\@
|
||||||
|
call CheckIfInOutsideMap
|
||||||
|
jr z,.canTeleport\@
|
||||||
|
ld a,[$cf92]
|
||||||
|
ld hl,W_PARTYMON1NAME
|
||||||
|
call GetPartyMonName
|
||||||
|
ld hl,.cannotUseTeleportNowText\@
|
||||||
|
call PrintText
|
||||||
|
jp .loop\@
|
||||||
|
.canTeleport\@
|
||||||
|
ld hl,.warpToLastPokemonCenterText\@
|
||||||
|
call PrintText
|
||||||
|
ld hl,$d732
|
||||||
|
set 3,[hl]
|
||||||
|
set 6,[hl]
|
||||||
|
ld hl,$d72e
|
||||||
|
set 1,[hl]
|
||||||
|
res 4,[hl]
|
||||||
|
ld c,60
|
||||||
|
call DelayFrames
|
||||||
|
call GBPalWhiteOutWithDelay3 ; zero all three palettes and wait 3 V-blanks
|
||||||
|
jp .goBackToMap\@
|
||||||
|
.warpToLastPokemonCenterText\@
|
||||||
|
TX_FAR _WarpToLastPokemonCenterText
|
||||||
db $50
|
db $50
|
||||||
; 0x1327b + 5 bytes
|
.cannotUseTeleportNowText\@
|
||||||
|
TX_FAR _CannotUseTeleportNowText
|
||||||
UnnamedText_13280: ; 0x13280
|
|
||||||
TX_FAR _UnnamedText_13280
|
|
||||||
db $50
|
db $50
|
||||||
; 0x13280 + 5 bytes
|
.cannotFlyHereText\@
|
||||||
|
TX_FAR _CannotFlyHereText
|
||||||
UnnamedText_13285: ; 0x13285
|
|
||||||
TX_FAR _UnnamedText_13285
|
|
||||||
db $50
|
db $50
|
||||||
; 0x13285 + 5 bytes
|
.softboiled\@
|
||||||
|
ld hl,W_PARTYMON1_MAXHP
|
||||||
INCBIN "baserom.gbc",$1328a,$132d4 - $1328a
|
ld a,[$cf92]
|
||||||
|
ld bc,44
|
||||||
UnnamedText_132d4: ; 0x132d4
|
call AddNTimes
|
||||||
TX_FAR _UnnamedText_132d4
|
ld a,[hli]
|
||||||
|
ld [H_DIVIDEND],a
|
||||||
|
ld a,[hl]
|
||||||
|
ld [H_DIVIDEND + 1],a
|
||||||
|
ld a,5
|
||||||
|
ld [H_DIVISOR],a
|
||||||
|
ld b,2 ; number of bytes
|
||||||
|
call Divide
|
||||||
|
ld bc,-33
|
||||||
|
add hl,bc
|
||||||
|
ld a,[hld]
|
||||||
|
ld b,a
|
||||||
|
ld a,[H_QUOTIENT + 3]
|
||||||
|
sub b
|
||||||
|
ld b,[hl]
|
||||||
|
ld a,[H_QUOTIENT + 2]
|
||||||
|
sbc b
|
||||||
|
jp nc,.notHealthyEnough\@
|
||||||
|
ld a,[$cc2b]
|
||||||
|
push af
|
||||||
|
ld a,$14
|
||||||
|
ld [$cf91],a
|
||||||
|
ld [$d152],a
|
||||||
|
call $30bc
|
||||||
|
pop af
|
||||||
|
ld [$cc2b],a
|
||||||
|
jp .loop\@
|
||||||
|
.notHealthyEnough\@ ; if current HP is less than 1/5 of max HP
|
||||||
|
ld hl,.notHealthyEnoughText\@
|
||||||
|
call PrintText
|
||||||
|
jp .loop\@
|
||||||
|
.notHealthyEnoughText\@
|
||||||
|
TX_FAR _NotHealthyEnoughText
|
||||||
db $50
|
db $50
|
||||||
; 0x132d4 + 5 bytes
|
.goBackToMap\@
|
||||||
|
call $3dbe
|
||||||
INCBIN "baserom.gbc",$132d9,$132e8 - $132d9
|
jp CloseTextDisplay
|
||||||
|
.newBadgeRequired\@
|
||||||
UnnamedText_132e8: ; 0x132e8
|
ld hl,.newBadgeRequiredText\@
|
||||||
TX_FAR _UnnamedText_132e8
|
call PrintText
|
||||||
|
jp .loop\@
|
||||||
|
.newBadgeRequiredText\@
|
||||||
|
TX_FAR _NewBadgeRequiredText
|
||||||
db $50
|
db $50
|
||||||
; 0x132e8 + 5 bytes
|
|
||||||
|
|
||||||
; writes a blank tile to all possible menu cursor positions on the party menu
|
; writes a blank tile to all possible menu cursor positions on the party menu
|
||||||
ErasePartyMenuCursors: ; 72ED
|
ErasePartyMenuCursors: ; 72ED
|
||||||
|
|
@ -36483,7 +36731,7 @@ CalcHitChance: ; 6624
|
||||||
call Multiply
|
call Multiply
|
||||||
ld a,[hl]
|
ld a,[hl]
|
||||||
ld [H_DIVISOR],a ; set divisor to the the denominator of the ratio (the dividend is the product of the previous multiplication)
|
ld [H_DIVISOR],a ; set divisor to the the denominator of the ratio (the dividend is the product of the previous multiplication)
|
||||||
ld b,$04 ; number of significant bytes in the dividend
|
ld b,$04 ; number of bytes in the dividend
|
||||||
call Divide
|
call Divide
|
||||||
ld a,[H_QUOTIENT + 3]
|
ld a,[H_QUOTIENT + 3]
|
||||||
ld b,a
|
ld b,a
|
||||||
|
|
@ -82418,34 +82666,34 @@ _UnnamedText_cdff: ; 0xa4088
|
||||||
db "Forget SURFing!", $58
|
db "Forget SURFing!", $58
|
||||||
; 0xa4088 + 33 bytes
|
; 0xa4088 + 33 bytes
|
||||||
|
|
||||||
_UnnamedText_13228: ; 0xa40a9
|
_FlashLightsAreaText: ; 0xa40a9
|
||||||
db $0, "A blinding FLASH", $4f
|
db $0, "A blinding FLASH", $4f
|
||||||
db "lights the area!", $58
|
db "lights the area!", $58
|
||||||
; 0xa40a9 + 35 bytes
|
; 0xa40a9 + 35 bytes
|
||||||
|
|
||||||
_UnnamedText_1327b: ; 0xa40cc
|
_WarpToLastPokemonCenterText: ; 0xa40cc
|
||||||
db $0, "Warp to the last", $4f
|
db $0, "Warp to the last", $4f
|
||||||
db "#MON CENTER.", $57
|
db "#MON CENTER.", $57
|
||||||
; 0xa40cc + 31 bytes
|
; 0xa40cc + 31 bytes
|
||||||
|
|
||||||
_UnnamedText_13280: ; 0xa40eb
|
_CannotUseTeleportNowText: ; 0xa40eb
|
||||||
TX_RAM $cd6d
|
TX_RAM $cd6d
|
||||||
db $0, " can't", $4f
|
db $0, " can't", $4f
|
||||||
db "use TELEPORT now.", $58
|
db "use TELEPORT now.", $58
|
||||||
; 0xa40eb + 28 bytes
|
; 0xa40eb + 28 bytes
|
||||||
|
|
||||||
_UnnamedText_13285: ; 0xa4107
|
_CannotFlyHereText: ; 0xa4107
|
||||||
TX_RAM $cd6d
|
TX_RAM $cd6d
|
||||||
db $0, " can't", $4f
|
db $0, " can't", $4f
|
||||||
db "FLY here.", $58
|
db "FLY here.", $58
|
||||||
; 0xa4107 + 20 bytes
|
; 0xa4107 + 20 bytes
|
||||||
|
|
||||||
_UnnamedText_132d4: ; 0xa411b
|
_NotHealthyEnoughText: ; 0xa411b
|
||||||
db $0, "Not healthy", $4f
|
db $0, "Not healthy", $4f
|
||||||
db "enough.", $58
|
db "enough.", $58
|
||||||
; 0xa411b + 21 bytes
|
; 0xa411b + 21 bytes
|
||||||
|
|
||||||
_UnnamedText_132e8: ; 0xa4130
|
_NewBadgeRequiredText: ; 0xa4130
|
||||||
db $0, "No! A new BADGE", $4f
|
db $0, "No! A new BADGE", $4f
|
||||||
db "is required.", $58
|
db "is required.", $58
|
||||||
; 0xa4130 + 30 bytes
|
; 0xa4130 + 30 bytes
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue