mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
e8bc86d1fe
Since we're aiming for consistency across the codebase, I believe it includes a uniform way to refer to the creatures this game consists of in the labels of the code. The only exceptions to this rule are labels referring to things named through the use of the <PK><MN> or <PKMN> characters, in which case PKMN is used. Most of this was already consistent enough™, I just picked the convention with the most occurences and fixed the outliers.
1174 lines
18 KiB
NASM
Executable File
1174 lines
18 KiB
NASM
Executable File
const_value set 1
|
|
const PINK_PAGE ; 1
|
|
const GREEN_PAGE ; 2
|
|
const BLUE_PAGE ; 3
|
|
NUM_STAT_PAGES EQU const_value +- 1
|
|
|
|
BattleStatsScreenInit: ; 4dc7b (13:5c7b)
|
|
ld a, [wLinkMode]
|
|
cp LINK_MOBILE
|
|
jr nz, StatsScreenInit
|
|
|
|
ld a, [wBattleMode]
|
|
and a
|
|
jr z, StatsScreenInit
|
|
jr _MobileStatsScreenInit
|
|
|
|
StatsScreenInit: ; 4dc8a
|
|
ld hl, StatsScreenMain
|
|
jr StatsScreenInit_gotaddress
|
|
|
|
_MobileStatsScreenInit: ; 4dc8f
|
|
ld hl, StatsScreenMobile
|
|
jr StatsScreenInit_gotaddress
|
|
|
|
StatsScreenInit_gotaddress: ; 4dc94
|
|
ld a, [hMapAnims]
|
|
push af
|
|
xor a
|
|
ld [hMapAnims], a ; disable overworld tile animations
|
|
ld a, [wBoxAlignment] ; whether sprite is to be mirrorred
|
|
push af
|
|
ld a, [wJumptableIndex]
|
|
ld b, a
|
|
ld a, [wcf64]
|
|
ld c, a
|
|
|
|
push bc
|
|
push hl
|
|
call ClearBGPalettes
|
|
call ClearTileMap
|
|
call UpdateSprites
|
|
farcall StatsScreen_LoadFont
|
|
pop hl
|
|
call _hl_
|
|
call ClearBGPalettes
|
|
call ClearTileMap
|
|
pop bc
|
|
|
|
; restore old values
|
|
ld a, b
|
|
ld [wJumptableIndex], a
|
|
ld a, c
|
|
ld [wcf64], a
|
|
pop af
|
|
ld [wBoxAlignment], a
|
|
pop af
|
|
ld [hMapAnims], a
|
|
ret
|
|
; 0x4dcd2
|
|
|
|
StatsScreenMain: ; 0x4dcd2
|
|
xor a
|
|
ld [wJumptableIndex], a
|
|
; stupid interns
|
|
ld [wcf64], a
|
|
ld a, [wcf64]
|
|
and %11111100
|
|
or 1
|
|
ld [wcf64], a
|
|
.loop ; 4dce3
|
|
ld a, [wJumptableIndex]
|
|
and $ff ^ (1 << 7)
|
|
ld hl, StatsScreenPointerTable
|
|
rst JumpTable
|
|
call StatsScreen_WaitAnim ; check for keys?
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr z, .loop
|
|
ret
|
|
; 0x4dcf7
|
|
|
|
StatsScreenMobile: ; 4dcf7
|
|
xor a
|
|
ld [wJumptableIndex], a
|
|
; stupid interns
|
|
ld [wcf64], a
|
|
ld a, [wcf64]
|
|
and %11111100
|
|
or 1
|
|
ld [wcf64], a
|
|
.loop
|
|
farcall Mobile_SetOverworldDelay
|
|
ld a, [wJumptableIndex]
|
|
and $ff ^ (1 << 7)
|
|
ld hl, StatsScreenPointerTable
|
|
rst JumpTable
|
|
call StatsScreen_WaitAnim
|
|
farcall MobileComms_CheckInactivityTimer
|
|
jr c, .exit
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr z, .loop
|
|
|
|
.exit
|
|
ret
|
|
; 4dd2a
|
|
|
|
StatsScreenPointerTable: ; 4dd2a
|
|
dw MonStatsInit ; regular pokémon
|
|
dw EggStatsInit ; egg
|
|
dw StatsScreenWaitCry
|
|
dw EggStatsJoypad
|
|
dw StatsScreen_LoadPage
|
|
dw StatsScreenWaitCry
|
|
dw MonStatsJoypad
|
|
dw StatsScreen_Exit
|
|
; 4dd3a
|
|
|
|
|
|
StatsScreen_WaitAnim: ; 4dd3a (13:5d3a)
|
|
ld hl, wcf64
|
|
bit 6, [hl]
|
|
jr nz, .try_anim
|
|
bit 5, [hl]
|
|
jr nz, .finish
|
|
call DelayFrame
|
|
ret
|
|
|
|
.try_anim
|
|
farcall SetUpPokeAnim
|
|
jr nc, .finish
|
|
ld hl, wcf64
|
|
res 6, [hl]
|
|
.finish
|
|
ld hl, wcf64
|
|
res 5, [hl]
|
|
farcall HDMATransferTileMapToWRAMBank3
|
|
ret
|
|
|
|
StatsScreen_SetJumptableIndex: ; 4dd62 (13:5d62)
|
|
ld a, [wJumptableIndex]
|
|
and $80
|
|
or h
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
StatsScreen_Exit: ; 4dd6c (13:5d6c)
|
|
ld hl, wJumptableIndex
|
|
set 7, [hl]
|
|
ret
|
|
|
|
MonStatsInit: ; 4dd72 (13:5d72)
|
|
ld hl, wcf64
|
|
res 6, [hl]
|
|
call ClearBGPalettes
|
|
call ClearTileMap
|
|
farcall HDMATransferTileMapToWRAMBank3
|
|
call StatsScreen_CopyToTempMon
|
|
ld a, [wCurPartySpecies]
|
|
cp EGG
|
|
jr z, .egg
|
|
call StatsScreen_InitUpperHalf
|
|
ld hl, wcf64
|
|
set 4, [hl]
|
|
ld h, 4
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
.egg
|
|
ld h, 1
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
EggStatsInit: ; 4dda1
|
|
call EggStatsScreen
|
|
ld a, [wJumptableIndex]
|
|
inc a
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; 0x4ddac
|
|
|
|
|
|
EggStatsJoypad: ; 4ddac (13:5dac)
|
|
call StatsScreen_GetJoypad
|
|
jr nc, .check
|
|
ld h, 0
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
.check
|
|
bit A_BUTTON_F, a
|
|
jr nz, .quit
|
|
and D_DOWN | D_UP | A_BUTTON | B_BUTTON
|
|
jp StatsScreen_JoypadAction
|
|
|
|
.quit
|
|
ld h, 7
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
StatsScreen_LoadPage: ; 4ddc6 (13:5dc6)
|
|
call StatsScreen_LoadGFX
|
|
ld hl, wcf64
|
|
res 4, [hl]
|
|
ld a, [wJumptableIndex]
|
|
inc a
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
MonStatsJoypad: ; 4ddd6 (13:5dd6)
|
|
call StatsScreen_GetJoypad
|
|
jr nc, .next
|
|
ld h, 0
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
.next
|
|
and D_DOWN | D_UP | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON
|
|
jp StatsScreen_JoypadAction
|
|
|
|
StatsScreenWaitCry: ; 4dde6 (13:5de6)
|
|
call IsSFXPlaying
|
|
ret nc
|
|
ld a, [wJumptableIndex]
|
|
inc a
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
StatsScreen_CopyToTempMon: ; 4ddf2 (13:5df2)
|
|
ld a, [wMonType]
|
|
cp TEMPMON
|
|
jr nz, .breedmon
|
|
ld a, [wBufferMonSpecies]
|
|
ld [wCurSpecies], a
|
|
call GetBaseData
|
|
ld hl, wBufferMon
|
|
ld de, wTempMon
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call CopyBytes
|
|
jr .done
|
|
|
|
.breedmon
|
|
farcall CopyMonToTempMon
|
|
ld a, [wCurPartySpecies]
|
|
cp EGG
|
|
jr z, .done
|
|
ld a, [wMonType]
|
|
cp BOXMON
|
|
jr c, .done
|
|
farcall CalcTempmonStats
|
|
.done
|
|
and a
|
|
ret
|
|
|
|
StatsScreen_GetJoypad: ; 4de2c (13:5e2c)
|
|
call GetJoypad
|
|
ld a, [wMonType]
|
|
cp TEMPMON
|
|
jr nz, .notbreedmon
|
|
push hl
|
|
push de
|
|
push bc
|
|
farcall StatsScreenDPad
|
|
pop bc
|
|
pop de
|
|
pop hl
|
|
ld a, [wMenuJoypad]
|
|
and D_DOWN | D_UP
|
|
jr nz, .set_carry
|
|
ld a, [wMenuJoypad]
|
|
jr .clear_flags
|
|
|
|
.notbreedmon
|
|
ld a, [hJoyPressed]
|
|
.clear_flags
|
|
and a
|
|
ret
|
|
|
|
.set_carry
|
|
scf
|
|
ret
|
|
|
|
StatsScreen_JoypadAction: ; 4de54 (13:5e54)
|
|
push af
|
|
ld a, [wcf64]
|
|
maskbits NUM_STAT_PAGES
|
|
ld c, a
|
|
pop af
|
|
bit B_BUTTON_F, a
|
|
jp nz, .b_button
|
|
bit D_LEFT_F, a
|
|
jr nz, .d_left
|
|
bit D_RIGHT_F, a
|
|
jr nz, .d_right
|
|
bit A_BUTTON_F, a
|
|
jr nz, .a_button
|
|
bit D_UP_F, a
|
|
jr nz, .d_up
|
|
bit D_DOWN_F, a
|
|
jr nz, .d_down
|
|
jr .done
|
|
|
|
.d_down
|
|
ld a, [wMonType]
|
|
cp BOXMON
|
|
jr nc, .done
|
|
and a
|
|
ld a, [wPartyCount]
|
|
jr z, .next_mon
|
|
ld a, [wOTPartyCount]
|
|
.next_mon
|
|
ld b, a
|
|
ld a, [wCurPartyMon]
|
|
inc a
|
|
cp b
|
|
jr z, .done
|
|
ld [wCurPartyMon], a
|
|
ld b, a
|
|
ld a, [wMonType]
|
|
and a
|
|
jr nz, .load_mon
|
|
ld a, b
|
|
inc a
|
|
ld [wPartyMenuCursor], a
|
|
jr .load_mon
|
|
|
|
.d_up
|
|
ld a, [wCurPartyMon]
|
|
and a
|
|
jr z, .done
|
|
dec a
|
|
ld [wCurPartyMon], a
|
|
ld b, a
|
|
ld a, [wMonType]
|
|
and a
|
|
jr nz, .load_mon
|
|
ld a, b
|
|
inc a
|
|
ld [wPartyMenuCursor], a
|
|
jr .load_mon
|
|
|
|
.a_button
|
|
ld a, c
|
|
cp BLUE_PAGE ; last page
|
|
jr z, .b_button
|
|
.d_right
|
|
inc c
|
|
ld a, BLUE_PAGE ; last page
|
|
cp c
|
|
jr nc, .set_page
|
|
ld c, PINK_PAGE ; first page
|
|
jr .set_page
|
|
|
|
.d_left
|
|
dec c
|
|
jr nz, .set_page
|
|
ld c, BLUE_PAGE ; last page
|
|
jr .set_page
|
|
|
|
.done
|
|
ret
|
|
|
|
.set_page
|
|
ld a, [wcf64]
|
|
and %11111100
|
|
or c
|
|
ld [wcf64], a
|
|
ld h, 4
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
.load_mon
|
|
ld h, 0
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
.b_button ; 4dee4 (13:5ee4)
|
|
ld h, 7
|
|
call StatsScreen_SetJumptableIndex
|
|
ret
|
|
|
|
StatsScreen_InitUpperHalf: ; 4deea (13:5eea)
|
|
call .PlaceHPBar
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
ld a, [wBaseDexNo]
|
|
ld [wd265], a
|
|
ld [wCurSpecies], a
|
|
hlcoord 8, 0
|
|
ld [hl], "№"
|
|
inc hl
|
|
ld [hl], "."
|
|
inc hl
|
|
hlcoord 10, 0
|
|
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
|
|
ld de, wd265
|
|
call PrintNum
|
|
hlcoord 14, 0
|
|
call PrintLevel
|
|
ld hl, .NicknamePointers
|
|
call GetNicknamePointer
|
|
call CopyNickname
|
|
hlcoord 8, 2
|
|
call PlaceString
|
|
hlcoord 18, 0
|
|
call .PlaceGenderChar
|
|
hlcoord 9, 4
|
|
ld a, "/"
|
|
ld [hli], a
|
|
ld a, [wBaseDexNo]
|
|
ld [wd265], a
|
|
call GetPokemonName
|
|
call PlaceString
|
|
call StatsScreen_PlaceHorizontalDivider
|
|
call StatsScreen_PlacePageSwitchArrows
|
|
call StatsScreen_PlaceShinyIcon
|
|
ret
|
|
|
|
.PlaceHPBar: ; 4df45 (13:5f45)
|
|
ld hl, wTempMonHP
|
|
ld a, [hli]
|
|
ld b, a
|
|
ld c, [hl]
|
|
ld hl, wTempMonMaxHP
|
|
ld a, [hli]
|
|
ld d, a
|
|
ld e, [hl]
|
|
farcall ComputeHPBarPixels
|
|
ld hl, wCurHPPal
|
|
call SetHPPal
|
|
ld b, SCGB_STATS_SCREEN_HP_PALS
|
|
call GetSGBLayout
|
|
call DelayFrame
|
|
ret
|
|
|
|
.PlaceGenderChar: ; 4df66 (13:5f66)
|
|
push hl
|
|
farcall GetGender
|
|
pop hl
|
|
ret c
|
|
ld a, "♂"
|
|
jr nz, .got_gender
|
|
ld a, "♀"
|
|
.got_gender
|
|
ld [hl], a
|
|
ret
|
|
; 4df77 (13:5f77)
|
|
|
|
.NicknamePointers: ; 4df77
|
|
dw wPartyMonNicknames
|
|
dw wOTPartyMonNicknames
|
|
dw sBoxMonNicknames
|
|
dw wBufferMonNick
|
|
; 4df7f
|
|
|
|
Unreferenced_Function4df7f: ; 4df7f
|
|
hlcoord 7, 0
|
|
ld bc, SCREEN_WIDTH
|
|
ld d, SCREEN_HEIGHT
|
|
.loop
|
|
ld a, $31 ; vertical divider
|
|
ld [hl], a
|
|
add hl, bc
|
|
dec d
|
|
jr nz, .loop
|
|
ret
|
|
; 4df8f
|
|
|
|
StatsScreen_PlaceHorizontalDivider: ; 4df8f (13:5f8f)
|
|
hlcoord 0, 7
|
|
ld b, SCREEN_WIDTH
|
|
ld a, $62 ; horizontal divider (empty HP/exp bar)
|
|
.loop
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .loop
|
|
ret
|
|
|
|
StatsScreen_PlacePageSwitchArrows: ; 4df9b (13:5f9b)
|
|
hlcoord 12, 6
|
|
ld [hl], "◀"
|
|
hlcoord 19, 6
|
|
ld [hl], "▶"
|
|
ret
|
|
|
|
StatsScreen_PlaceShinyIcon: ; 4dfa6 (13:5fa6)
|
|
ld bc, wTempMonDVs
|
|
farcall CheckShininess
|
|
ret nc
|
|
hlcoord 19, 0
|
|
ld [hl], "⁂"
|
|
ret
|
|
|
|
StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
|
|
ld a, [wBaseDexNo]
|
|
ld [wd265], a
|
|
ld [wCurSpecies], a
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call .ClearBox
|
|
call .PageTilemap
|
|
call .LoadPals
|
|
ld hl, wcf64
|
|
bit 4, [hl]
|
|
jr nz, .place_frontpic
|
|
call SetPalettes
|
|
ret
|
|
|
|
.place_frontpic
|
|
call StatsScreen_PlaceFrontpic
|
|
ret
|
|
|
|
.ClearBox: ; 4dfda (13:5fda)
|
|
ld a, [wcf64]
|
|
maskbits NUM_STAT_PAGES
|
|
ld c, a
|
|
call StatsScreen_LoadPageIndicators
|
|
hlcoord 0, 8
|
|
lb bc, 10, 20
|
|
call ClearBox
|
|
ret
|
|
|
|
.LoadPals: ; 4dfed (13:5fed)
|
|
ld a, [wcf64]
|
|
maskbits NUM_STAT_PAGES
|
|
ld c, a
|
|
farcall LoadStatsScreenPals
|
|
call DelayFrame
|
|
ld hl, wcf64
|
|
set 5, [hl]
|
|
ret
|
|
|
|
.PageTilemap: ; 4e002 (13:6002)
|
|
ld a, [wcf64]
|
|
maskbits NUM_STAT_PAGES
|
|
dec a
|
|
ld hl, .Jumptable
|
|
rst JumpTable
|
|
ret
|
|
|
|
.Jumptable: ; 4e00d (13:600d)
|
|
; entries correspond to *_PAGE constants
|
|
dw .PinkPage
|
|
dw .GreenPage
|
|
dw .BluePage
|
|
|
|
.PinkPage: ; 4e013 (13:6013)
|
|
hlcoord 0, 9
|
|
ld b, $0
|
|
predef DrawPlayerHP
|
|
hlcoord 8, 9
|
|
ld [hl], $41 ; right HP/exp bar end cap
|
|
ld de, .Status_Type
|
|
hlcoord 0, 12
|
|
call PlaceString
|
|
ld a, [wTempMonPokerusStatus]
|
|
ld b, a
|
|
and $f
|
|
jr nz, .HasPokerus
|
|
ld a, b
|
|
and $f0
|
|
jr z, .NotImmuneToPkrs
|
|
hlcoord 8, 8
|
|
ld [hl], "." ; Pokérus immunity dot
|
|
.NotImmuneToPkrs:
|
|
ld a, [wMonType]
|
|
cp BOXMON
|
|
jr z, .StatusOK
|
|
hlcoord 6, 13
|
|
push hl
|
|
ld de, wTempMonStatus
|
|
predef PlaceStatusString
|
|
pop hl
|
|
jr nz, .done_status
|
|
jr .StatusOK
|
|
.HasPokerus:
|
|
ld de, .PkrsStr
|
|
hlcoord 1, 13
|
|
call PlaceString
|
|
jr .done_status
|
|
.StatusOK:
|
|
ld de, .OK_str
|
|
call PlaceString
|
|
.done_status
|
|
hlcoord 1, 15
|
|
predef PrintMonTypes
|
|
hlcoord 9, 8
|
|
ld de, SCREEN_WIDTH
|
|
ld b, 10
|
|
ld a, $31 ; vertical divider
|
|
.vertical_divider
|
|
ld [hl], a
|
|
add hl, de
|
|
dec b
|
|
jr nz, .vertical_divider
|
|
ld de, .ExpPointStr
|
|
hlcoord 10, 9
|
|
call PlaceString
|
|
hlcoord 17, 14
|
|
call .PrintNextLevel
|
|
hlcoord 13, 10
|
|
lb bc, 3, 7
|
|
ld de, wTempMonExp
|
|
call PrintNum
|
|
call .CalcExpToNextLevel
|
|
hlcoord 13, 13
|
|
lb bc, 3, 7
|
|
ld de, wBuffer1
|
|
call PrintNum
|
|
ld de, .LevelUpStr
|
|
hlcoord 10, 12
|
|
call PlaceString
|
|
ld de, .ToStr
|
|
hlcoord 14, 14
|
|
call PlaceString
|
|
hlcoord 11, 16
|
|
ld a, [wTempMonLevel]
|
|
ld b, a
|
|
ld de, wTempMonExp + 2
|
|
predef FillInExpBar
|
|
hlcoord 10, 16
|
|
ld [hl], $40 ; left exp bar end cap
|
|
hlcoord 19, 16
|
|
ld [hl], $41 ; right exp bar end cap
|
|
ret
|
|
|
|
.PrintNextLevel: ; 4e0d3 (13:60d3)
|
|
ld a, [wTempMonLevel]
|
|
push af
|
|
cp MAX_LEVEL
|
|
jr z, .AtMaxLevel
|
|
inc a
|
|
ld [wTempMonLevel], a
|
|
.AtMaxLevel:
|
|
call PrintLevel
|
|
pop af
|
|
ld [wTempMonLevel], a
|
|
ret
|
|
|
|
.CalcExpToNextLevel: ; 4e0e7 (13:60e7)
|
|
ld a, [wTempMonLevel]
|
|
cp MAX_LEVEL
|
|
jr z, .AlreadyAtMaxLevel
|
|
inc a
|
|
ld d, a
|
|
farcall CalcExpAtLevel
|
|
ld hl, wTempMonExp + 2
|
|
ld hl, wTempMonExp + 2
|
|
ld a, [hQuotient + 2]
|
|
sub [hl]
|
|
dec hl
|
|
ld [wBuffer3], a
|
|
ld a, [hQuotient + 1]
|
|
sbc [hl]
|
|
dec hl
|
|
ld [wBuffer2], a
|
|
ld a, [hQuotient]
|
|
sbc [hl]
|
|
ld [wBuffer1], a
|
|
ret
|
|
|
|
.AlreadyAtMaxLevel:
|
|
ld hl, wBuffer1
|
|
xor a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ret
|
|
; 4e119 (13:6119)
|
|
|
|
.Status_Type: ; 4e119
|
|
db "STATUS/"
|
|
next "TYPE/@"
|
|
; 4e127
|
|
|
|
.OK_str: ; 4e127
|
|
db "OK @"
|
|
; 4e12b
|
|
|
|
.ExpPointStr: ; 4e12b
|
|
db "EXP POINTS@"
|
|
; 4e136
|
|
|
|
.LevelUpStr: ; 4e136
|
|
db "LEVEL UP@"
|
|
; 4e13f
|
|
|
|
.ToStr: ; 4e13f
|
|
db "TO@"
|
|
; 4e142
|
|
|
|
.PkrsStr: ; 4e142
|
|
db "#RUS@"
|
|
; 4e147
|
|
|
|
.GreenPage: ; 4e147 (13:6147)
|
|
ld de, .Item
|
|
hlcoord 0, 8
|
|
call PlaceString
|
|
call .GetItemName
|
|
hlcoord 8, 8
|
|
call PlaceString
|
|
ld de, .Move
|
|
hlcoord 0, 10
|
|
call PlaceString
|
|
ld hl, wTempMonMoves
|
|
ld de, wListMoves_MoveIndicesBuffer
|
|
ld bc, NUM_MOVES
|
|
call CopyBytes
|
|
hlcoord 8, 10
|
|
ld a, SCREEN_WIDTH * 2
|
|
ld [wBuffer1], a
|
|
predef ListMoves
|
|
hlcoord 12, 11
|
|
ld a, SCREEN_WIDTH * 2
|
|
ld [wBuffer1], a
|
|
predef ListMovePP
|
|
ret
|
|
|
|
.GetItemName: ; 4e189 (13:6189)
|
|
ld de, .ThreeDashes
|
|
ld a, [wTempMonItem]
|
|
and a
|
|
ret z
|
|
ld b, a
|
|
farcall TimeCapsule_ReplaceTeruSama
|
|
ld a, b
|
|
ld [wd265], a
|
|
call GetItemName
|
|
ret
|
|
; 4e1a0 (13:61a0)
|
|
|
|
.Item: ; 4e1a0
|
|
db "ITEM@"
|
|
; 4e1a5
|
|
|
|
.ThreeDashes: ; 4e1a5
|
|
db "---@"
|
|
; 4e1a9
|
|
|
|
.Move: ; 4e1a9
|
|
db "MOVE@"
|
|
; 4e1ae
|
|
|
|
.BluePage: ; 4e1ae (13:61ae)
|
|
call .PlaceOTInfo
|
|
hlcoord 10, 8
|
|
ld de, SCREEN_WIDTH
|
|
ld b, 10
|
|
ld a, $31 ; vertical divider
|
|
.BluePageVerticalDivider:
|
|
ld [hl], a
|
|
add hl, de
|
|
dec b
|
|
jr nz, .BluePageVerticalDivider
|
|
hlcoord 11, 8
|
|
ld bc, 6
|
|
predef PrintTempMonStats
|
|
ret
|
|
|
|
.PlaceOTInfo: ; 4e1cc (13:61cc)
|
|
ld de, IDNoString
|
|
hlcoord 0, 9
|
|
call PlaceString
|
|
ld de, OTString
|
|
hlcoord 0, 12
|
|
call PlaceString
|
|
hlcoord 2, 10
|
|
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
|
|
ld de, wTempMonID
|
|
call PrintNum
|
|
ld hl, .OTNamePointers
|
|
call GetNicknamePointer
|
|
call CopyNickname
|
|
farcall CheckNickErrors
|
|
hlcoord 2, 13
|
|
call PlaceString
|
|
ld a, [wTempMonCaughtGender]
|
|
and a
|
|
jr z, .done
|
|
cp $7f
|
|
jr z, .done
|
|
and $80
|
|
ld a, "♂"
|
|
jr z, .got_gender
|
|
ld a, "♀"
|
|
.got_gender
|
|
hlcoord 9, 13
|
|
ld [hl], a
|
|
.done
|
|
ret
|
|
; 4e216 (13:6216)
|
|
|
|
.OTNamePointers: ; 4e216
|
|
dw wPartyMonOT
|
|
dw wOTPartyMonOT
|
|
dw sBoxMonOT
|
|
dw wBufferMonOT
|
|
; 4e21e
|
|
|
|
IDNoString: ; 4e21e
|
|
db "<ID>№.@"
|
|
|
|
OTString: ; 4e222
|
|
db "OT/@"
|
|
; 4e226
|
|
|
|
|
|
StatsScreen_PlaceFrontpic: ; 4e226 (13:6226)
|
|
ld hl, wTempMonDVs
|
|
predef GetUnownLetter
|
|
call StatsScreen_GetAnimationParam
|
|
jr c, .egg
|
|
and a
|
|
jr z, .no_cry
|
|
jr .cry
|
|
|
|
.egg
|
|
call .AnimateEgg
|
|
call SetPalettes
|
|
ret
|
|
|
|
.no_cry
|
|
call .AnimateMon
|
|
call SetPalettes
|
|
ret
|
|
|
|
.cry
|
|
call SetPalettes
|
|
call .AnimateMon
|
|
ld a, [wCurPartySpecies]
|
|
call PlayMonCry2
|
|
ret
|
|
|
|
.AnimateMon: ; 4e253 (13:6253)
|
|
ld hl, wcf64
|
|
set 5, [hl]
|
|
ld a, [wCurPartySpecies]
|
|
cp UNOWN
|
|
jr z, .unown
|
|
hlcoord 0, 0
|
|
call PrepMonFrontpic
|
|
ret
|
|
|
|
.unown
|
|
xor a
|
|
ld [wBoxAlignment], a
|
|
hlcoord 0, 0
|
|
call _PrepMonFrontpic
|
|
ret
|
|
|
|
.AnimateEgg: ; 4e271 (13:6271)
|
|
ld a, [wCurPartySpecies]
|
|
cp UNOWN
|
|
jr z, .unownegg
|
|
ld a, TRUE
|
|
ld [wBoxAlignment], a
|
|
call .get_animation
|
|
ret
|
|
|
|
.unownegg
|
|
xor a
|
|
ld [wBoxAlignment], a
|
|
call .get_animation
|
|
ret
|
|
|
|
.get_animation ; 4e289 (13:6289)
|
|
ld a, [wCurPartySpecies]
|
|
call IsAPokemon
|
|
ret c
|
|
call StatsScreen_LoadTextBoxSpaceGFX
|
|
ld de, vTiles2 tile $00
|
|
predef GetAnimatedFrontpic
|
|
hlcoord 0, 0
|
|
ld d, $0
|
|
ld e, ANIM_MON_MENU
|
|
predef LoadMonAnimation
|
|
ld hl, wcf64
|
|
set 6, [hl]
|
|
ret
|
|
|
|
StatsScreen_GetAnimationParam: ; 4e2ad (13:62ad)
|
|
ld a, [wMonType]
|
|
ld hl, .Jumptable
|
|
rst JumpTable
|
|
ret
|
|
|
|
.Jumptable: ; 4e2b5 (13:62b5)
|
|
dw .PartyMon
|
|
dw .OTPartyMon
|
|
dw .BoxMon
|
|
dw .Tempmon
|
|
dw .Wildmon
|
|
|
|
.PartyMon: ; 4e2bf (13:62bf)
|
|
ld a, [wCurPartyMon]
|
|
ld hl, wPartyMon1
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call AddNTimes
|
|
ld b, h
|
|
ld c, l
|
|
jr .CheckEggFaintedFrzSlp
|
|
|
|
.OTPartyMon: ; 4e2cf (13:62cf)
|
|
xor a
|
|
ret
|
|
|
|
.BoxMon: ; 4e2d1 (13:62d1)
|
|
ld hl, sBoxMons
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
ld a, [wCurPartyMon]
|
|
call AddNTimes
|
|
ld b, h
|
|
ld c, l
|
|
ld a, BANK(sBoxMons)
|
|
call GetSRAMBank
|
|
call .CheckEggFaintedFrzSlp
|
|
push af
|
|
call CloseSRAM
|
|
pop af
|
|
ret
|
|
|
|
.Tempmon: ; 4e2ed (13:62ed)
|
|
ld bc, wTempMonSpecies
|
|
jr .CheckEggFaintedFrzSlp ; utterly pointless
|
|
|
|
.CheckEggFaintedFrzSlp: ; 4e2f2 (13:62f2)
|
|
ld a, [wCurPartySpecies]
|
|
cp EGG
|
|
jr z, .egg
|
|
call CheckFaintedFrzSlp
|
|
jr c, .FaintedFrzSlp
|
|
.egg
|
|
xor a
|
|
scf
|
|
ret
|
|
|
|
.Wildmon: ; 4e301 (13:6301)
|
|
ld a, $1
|
|
and a
|
|
ret
|
|
|
|
.FaintedFrzSlp: ; 4e305 (13:6305)
|
|
xor a
|
|
ret
|
|
|
|
StatsScreen_LoadTextBoxSpaceGFX: ; 4e307 (13:6307)
|
|
nop
|
|
push hl
|
|
push de
|
|
push bc
|
|
push af
|
|
call DelayFrame
|
|
ld a, [rVBK]
|
|
push af
|
|
ld a, $1
|
|
ld [rVBK], a
|
|
ld de, TextBoxSpaceGFX
|
|
lb bc, BANK(TextBoxSpaceGFX), 1
|
|
ld hl, vTiles2 tile " "
|
|
call Get2bpp
|
|
pop af
|
|
ld [rVBK], a
|
|
pop af
|
|
pop bc
|
|
pop de
|
|
pop hl
|
|
ret
|
|
; 4e32a (13:632a)
|
|
|
|
Unreferenced_4e32a: ; 4e32a
|
|
; A blank space tile?
|
|
ds 16
|
|
; 4e33a
|
|
|
|
EggStatsScreen: ; 4e33a
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
ld hl, wCurHPPal
|
|
call SetHPPal
|
|
ld b, SCGB_STATS_SCREEN_HP_PALS
|
|
call GetSGBLayout
|
|
call StatsScreen_PlaceHorizontalDivider
|
|
ld de, EggString
|
|
hlcoord 8, 1
|
|
call PlaceString
|
|
ld de, IDNoString
|
|
hlcoord 8, 3
|
|
call PlaceString
|
|
ld de, OTString
|
|
hlcoord 8, 5
|
|
call PlaceString
|
|
ld de, FiveQMarkString
|
|
hlcoord 11, 3
|
|
call PlaceString
|
|
ld de, FiveQMarkString
|
|
hlcoord 11, 5
|
|
call PlaceString
|
|
ld a, [wTempMonHappiness] ; egg status
|
|
ld de, EggSoonString
|
|
cp $6
|
|
jr c, .picked
|
|
ld de, EggCloseString
|
|
cp $b
|
|
jr c, .picked
|
|
ld de, EggMoreTimeString
|
|
cp $29
|
|
jr c, .picked
|
|
ld de, EggALotMoreTimeString
|
|
.picked
|
|
hlcoord 1, 9
|
|
call PlaceString
|
|
ld hl, wcf64
|
|
set 5, [hl]
|
|
call SetPalettes ; pals
|
|
call DelayFrame
|
|
hlcoord 0, 0
|
|
call PrepMonFrontpic
|
|
farcall HDMATransferTileMapToWRAMBank3
|
|
call StatsScreen_AnimateEgg
|
|
|
|
ld a, [wTempMonHappiness]
|
|
cp 6
|
|
ret nc
|
|
ld de, SFX_2_BOOPS
|
|
call PlaySFX
|
|
ret
|
|
; 0x4e3c0
|
|
|
|
EggString: ; 4e3c0
|
|
db "EGG@"
|
|
|
|
FiveQMarkString: ; 4e3c4
|
|
db "?????@"
|
|
|
|
EggSoonString: ; 0x4e3ca
|
|
db "It's making sounds"
|
|
next "inside. It's going"
|
|
next "to hatch soon!@"
|
|
|
|
EggCloseString: ; 0x4e3fd
|
|
db "It moves around"
|
|
next "inside sometimes."
|
|
next "It must be close"
|
|
next "to hatching.@"
|
|
|
|
EggMoreTimeString: ; 0x4e43d
|
|
db "Wonder what's"
|
|
next "inside? It needs"
|
|
next "more time, though.@"
|
|
|
|
EggALotMoreTimeString: ; 0x4e46e
|
|
db "This EGG needs a"
|
|
next "lot more time to"
|
|
next "hatch.@"
|
|
; 0x4e497
|
|
|
|
|
|
StatsScreen_AnimateEgg: ; 4e497 (13:6497)
|
|
call StatsScreen_GetAnimationParam
|
|
ret nc
|
|
ld a, [wTempMonHappiness]
|
|
ld e, $7
|
|
cp 6
|
|
jr c, .animate
|
|
ld e, $8
|
|
cp 11
|
|
jr c, .animate
|
|
ret
|
|
|
|
.animate
|
|
push de
|
|
ld a, $1
|
|
ld [wBoxAlignment], a
|
|
call StatsScreen_LoadTextBoxSpaceGFX
|
|
ld de, vTiles2 tile $00
|
|
predef GetAnimatedFrontpic
|
|
pop de
|
|
hlcoord 0, 0
|
|
ld d, $0
|
|
predef LoadMonAnimation
|
|
ld hl, wcf64
|
|
set 6, [hl]
|
|
ret
|
|
|
|
StatsScreen_LoadPageIndicators: ; 4e4cd (13:64cd)
|
|
hlcoord 13, 5
|
|
ld a, $36 ; first of 4 small square tiles
|
|
call .load_square
|
|
hlcoord 15, 5
|
|
ld a, $36 ; " " " "
|
|
call .load_square
|
|
hlcoord 17, 5
|
|
ld a, $36 ; " " " "
|
|
call .load_square
|
|
ld a, c
|
|
cp GREEN_PAGE
|
|
ld a, $3a ; first of 4 large square tiles
|
|
hlcoord 13, 5 ; PINK_PAGE (< GREEN_PAGE)
|
|
jr c, .load_square
|
|
hlcoord 15, 5 ; GREEN_PAGE (= GREEN_PAGE)
|
|
jr z, .load_square
|
|
hlcoord 17, 5 ; BLUE_PAGE (> GREEN_PAGE)
|
|
.load_square ; 4e4f7 (13:64f7)
|
|
push bc
|
|
ld [hli], a
|
|
inc a
|
|
ld [hld], a
|
|
ld bc, SCREEN_WIDTH
|
|
add hl, bc
|
|
inc a
|
|
ld [hli], a
|
|
inc a
|
|
ld [hl], a
|
|
pop bc
|
|
ret
|
|
|
|
CopyNickname: ; 4e505 (13:6505)
|
|
ld de, wStringBuffer1
|
|
ld bc, MON_NAME_LENGTH
|
|
jr .okay ; utterly pointless
|
|
.okay
|
|
ld a, [wMonType]
|
|
cp BOXMON
|
|
jr nz, .partymon
|
|
ld a, BANK(sBoxMonNicknames)
|
|
call GetSRAMBank
|
|
push de
|
|
call CopyBytes
|
|
pop de
|
|
call CloseSRAM
|
|
ret
|
|
|
|
.partymon
|
|
push de
|
|
call CopyBytes
|
|
pop de
|
|
ret
|
|
|
|
GetNicknamePointer: ; 4e528 (13:6528)
|
|
ld a, [wMonType]
|
|
add a
|
|
ld c, a
|
|
ld b, 0
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, [wMonType]
|
|
cp TEMPMON
|
|
ret z
|
|
ld a, [wCurPartyMon]
|
|
jp SkipNames
|
|
|
|
|
|
CheckFaintedFrzSlp: ; 4e53f
|
|
ld hl, MON_HP
|
|
add hl, bc
|
|
ld a, [hli]
|
|
or [hl]
|
|
jr z, .fainted_frz_slp
|
|
ld hl, MON_STATUS
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and 1 << FRZ | SLP
|
|
jr nz, .fainted_frz_slp
|
|
and a
|
|
ret
|
|
|
|
.fainted_frz_slp
|
|
scf
|
|
ret
|
|
; 4e554
|