From b02305625920d42649587d6ba6504777dcac25a0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 19 Nov 2015 23:38:16 -0500 Subject: [PATCH] engine/stats_screen.asm --- contents.asm | 2 + engine/stats_screen.asm | 1150 +++++++++++++++++++++++++++++++++++++ main.asm | 1212 +-------------------------------------- misc/mobile_22.asm | 28 +- wram.asm | 6 +- 5 files changed, 1203 insertions(+), 1195 deletions(-) create mode 100755 engine/stats_screen.asm diff --git a/contents.asm b/contents.asm index 0d55c2dcd..c13fffc7b 100644 --- a/contents.asm +++ b/contents.asm @@ -48,6 +48,8 @@ PIC_POINTERS EQU $48 UNOWN_PIC_POINTERS EQU $49 TRAINER_PIC_POINTERS EQU $4A +PICS_FIX EQU $36 + PICS_1 EQU $48 PICS_2 EQU $49 PICS_3 EQU $4A diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm new file mode 100755 index 000000000..11c6f61ce --- /dev/null +++ b/engine/stats_screen.asm @@ -0,0 +1,1150 @@ +Function4dc7b: ; 4dc7b (13:5c7b) + ld a, [wLinkMode] + cp LINK_MOBILE + jr nz, StatsScreenInit + + ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd) + and a + jr z, StatsScreenInit + jr Function4dc8f + +StatsScreenInit: ; 4dc8a + ld hl, StatsScreenMain + jr StatsScreenInit_gotaddress + +Function4dc8f: ; 4dc8f + ld hl, StatsScreenBattle + jr StatsScreenInit_gotaddress + +StatsScreenInit_gotaddress: ; 4dc94 + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a ; disable overworld tile animations + ld a, [wc2c6] ; 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 + callba Functionfb53e + 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 [wc2c6], a + pop af + ld [hMapAnims], a + ret +; 0x4dcd2 + +StatsScreenMain: ; 0x4dcd2 + xor a + ld [wJumptableIndex], a + ; stupid interns + ld [wcf64], a + ld a, [wcf64] + and $fc + or $1 + ld [wcf64], a +.loop ; 4dce3 + ld a, [wJumptableIndex] + and $7f + ld hl, StatsScreenPointerTable + rst JumpTable + call Function4dd3a ; check for keys? + ld a, [wJumptableIndex] + bit 7, a + jr z, .loop + ret +; 0x4dcf7 + +StatsScreenBattle: ; 4dcf7 + xor a + ld [wJumptableIndex], a + ; stupid interns + ld [wcf64], a + ld a, [wcf64] + and $fc + or $1 + ld [wcf64], a +.loop + callba Function100dd2 + ld a, [wJumptableIndex] + and $7f + ld hl, StatsScreenPointerTable + rst JumpTable + call Function4dd3a + callba Function100dfd + 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 Function4ddac + dw Function4ddc6 + dw StatsScreenWaitCry + dw Function4ddd6 + dw Function4dd6c +; 4dd3a + + +Function4dd3a: ; 4dd3a (13:5d3a) + ld hl, wcf64 + bit 6, [hl] + jr nz, .asm_4dd49 + bit 5, [hl] + jr nz, .asm_4dd56 + call DelayFrame + ret +.asm_4dd49 + callba Functiond00b4 + jr nc, .asm_4dd56 + ld hl, wcf64 + res 6, [hl] +.asm_4dd56 + ld hl, wcf64 + res 5, [hl] + callba Function10402d + ret + +Function4dd62: ; 4dd62 (13:5d62) + ld a, [wJumptableIndex] + and $80 + or h + ld [wJumptableIndex], a + ret + +Function4dd6c: ; 4dd6c (13:5d6c) + ld hl, wJumptableIndex + set 7, [hl] + ret + +MonStatsInit: ; 4dd72 (13:5d72) + ld hl, wcf64 + res 6, [hl] + call ClearBGPalettes + call ClearTileMap + callba Function10402d + call Function4ddf2 + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_4dd9b + call Function4deea + ld hl, wcf64 + set 4, [hl] + ld h, $4 + call Function4dd62 + ret +.asm_4dd9b + ld h, $1 + call Function4dd62 + ret + +EggStatsInit: ; 4dda1 + call EggStatsScreen + ld a, [wJumptableIndex] + inc a + ld [wJumptableIndex], a + ret +; 0x4ddac + + +Function4ddac: ; 4ddac (13:5dac) + call Function4de2c + jr nc, .asm_4ddb7 + ld h, $0 + call Function4dd62 + ret +.asm_4ddb7 + bit 0, a + jr nz, .asm_4ddc0 + and $c3 + jp Function4de54 +.asm_4ddc0 + ld h, $7 + call Function4dd62 + ret + +Function4ddc6: ; 4ddc6 (13:5dc6) + call Function4dfb6 + ld hl, wcf64 + res 4, [hl] + ld a, [wJumptableIndex] + inc a + ld [wJumptableIndex], a + ret + +Function4ddd6: ; 4ddd6 (13:5dd6) + call Function4de2c + jr nc, .asm_4dde1 + ld h, $0 + call Function4dd62 + ret + +.asm_4dde1 + and $f3 + jp Function4de54 + +StatsScreenWaitCry: ; 4dde6 (13:5de6) + call IsSFXPlaying + ret nc + ld a, [wJumptableIndex] + inc a + ld [wJumptableIndex], a + ret + +Function4ddf2: ; 4ddf2 (13:5df2) + ld a, [MonType] + cp BREEDMON + jr nz, .asm_4de10 + ld a, [wd018_Mon] + ld [CurSpecies], a + call GetBaseData + ld hl, wd018_Mon + ld de, TempMon + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + jr .asm_4de2a +.asm_4de10 + callba CopyPkmnToTempMon + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_4de2a + ld a, [MonType] + cp BOXMON + jr c, .asm_4de2a + callba Function50890 +.asm_4de2a + and a + ret + +Function4de2c: ; 4de2c (13:5e2c) + call GetJoypad + ld a, [MonType] + cp BREEDMON + jr nz, .notbreedmon + push hl + push de + push bc + callba Functione2f95 + pop bc + pop de + pop hl + ld a, [wcf73] + and $c0 + jr nz, .set_carry + ld a, [wcf73] + jr .clear_flags + +.notbreedmon + ld a, [hJoyPressed] +.clear_flags + and a + ret + +.set_carry + scf + ret + +Function4de54: ; 4de54 (13:5e54) + push af + ld a, [wcf64] + and $3 + ld c, a + pop af + bit 1, a + jp nz, Function4dee4 + bit 5, a + jr nz, .asm_4dec7 + bit 4, a + jr nz, .asm_4debd + bit 0, a + jr nz, .asm_4deb8 + bit 6, a + jr nz, .asm_4dea0 + bit 7, a + jr nz, .asm_4de77 + jr .asm_4dece +.asm_4de77 + ld a, [MonType] + cp BOXMON + jr nc, .asm_4dece + and a + ld a, [PartyCount] + jr z, .asm_4de87 + ld a, [OTPartyCount] +.asm_4de87 + ld b, a + ld a, [CurPartyMon] + inc a + cp b + jr z, .asm_4dece + ld [CurPartyMon], a + ld b, a + ld a, [MonType] + and a + jr nz, .asm_4dede + ld a, b + inc a + ld [wd0d8], a + jr .asm_4dede +.asm_4dea0 + ld a, [CurPartyMon] + and a + jr z, .asm_4dece + dec a + ld [CurPartyMon], a + ld b, a + ld a, [MonType] + and a + jr nz, .asm_4dede + ld a, b + inc a + ld [wd0d8], a + jr .asm_4dede +.asm_4deb8 + ld a, c + cp $3 + jr z, Function4dee4 +.asm_4debd + inc c + ld a, $3 + cp c + jr nc, .asm_4decf + ld c, $1 + jr .asm_4decf +.asm_4dec7 + dec c + jr nz, .asm_4decf + ld c, $3 + jr .asm_4decf +.asm_4dece + ret +.asm_4decf + ld a, [wcf64] + and $fc + or c + ld [wcf64], a + ld h, $4 + call Function4dd62 + ret +.asm_4dede + ld h, $0 + call Function4dd62 + ret + +Function4dee4: ; 4dee4 (13:5ee4) + ld h, $7 + call Function4dd62 + ret + +Function4deea: ; 4deea (13:5eea) + call Function4df45 + xor a + ld [hBGMapMode], a + ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) + ld [wd265], a + ld [CurSpecies], 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, Unknown_4df77 + call Function4e528 + call Function4e505 + hlcoord 8, 2 + call PlaceString + hlcoord 18, 0 + call Function4df66 + hlcoord 9, 4 + ld a, "/" + ld [hli], a + ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) + ld [wd265], a + call GetPokemonName + call PlaceString + call Function4df8f + call Function4df9b + call Function4dfa6 + ret + +Function4df45: ; 4df45 (13:5f45) + ld hl, TempMonHP + ld a, [hli] + ld b, a + ld c, [hl] + ld hl, TempMonMaxHP + ld a, [hli] + ld d, a + ld e, [hl] + callba DrawPartyMenuHPBar + ld hl, wcda1 + call SetHPPal + ld b, SCGB_03 + call GetSGBLayout + call DelayFrame + ret + +Function4df66: ; 4df66 (13:5f66) + push hl + callba GetGender + pop hl + ret c + ld a, "♂" + jr nz, .got_gender + ld a, "♀" +.got_gender + ld [hl], a + ret +; 4df77 (13:5f77) + +Unknown_4df77: ; 4df77 + dw PartyMonNicknames + dw OTPartyMonNicknames + dw sBoxMonNicknames + dw wd002 +; 4df7f + +Function4df7f: ; 4df7f + hlcoord 7, 0 + ld bc, SCREEN_WIDTH + ld d, SCREEN_HEIGHT +.loop + ld a, $31 + ld [hl], a + add hl, bc + dec d + jr nz, .loop + ret +; 4df8f + +Function4df8f: ; 4df8f (13:5f8f) + hlcoord 0, 7 + ld b, SCREEN_WIDTH + ld a, "_" +.loop + ld [hli], a + dec b + jr nz, .loop + ret + +Function4df9b: ; 4df9b (13:5f9b) + hlcoord 12, 6 + ld [hl], "◀" + hlcoord 19, 6 + ld [hl], "▶" + ret + +Function4dfa6: ; 4dfa6 (13:5fa6) + ld bc, TempMonDVs + callba CheckShininess + ret nc + hlcoord 19, 0 + ld [hl], "" + ret + +Function4dfb6: ; 4dfb6 (13:5fb6) + ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) + ld [wd265], a + ld [CurSpecies], a + xor a + ld [hBGMapMode], a + call Function4dfda + call Function4e002 + call Function4dfed + ld hl, wcf64 + bit 4, [hl] + jr nz, .asm_4dfd6 + call SetPalettes + ret + +.asm_4dfd6 + call Function4e226 + ret + +Function4dfda: ; 4dfda (13:5fda) + ld a, [wcf64] + and $3 + ld c, a + call Function4e4cd + hlcoord 0, 8 + lb bc, 10, 20 + call ClearBox + ret + +Function4dfed: ; 4dfed (13:5fed) + ld a, [wcf64] + and $3 + ld c, a + callba Function8c8a + call DelayFrame + ld hl, wcf64 + set 5, [hl] + ret + +Function4e002: ; 4e002 (13:6002) + ld a, [wcf64] + and $3 + dec a + ld hl, Jumptable_4e00d + rst JumpTable + ret + +Jumptable_4e00d: ; 4e00d (13:600d) + dw Function4e013 + dw Function4e147 + dw Function4e1ae + + +Function4e013: ; 4e013 (13:6013) + hlcoord 0, 9 + ld b, $0 + predef DrawPlayerHP + hlcoord 8, 9 + ld [hl], $41 + ld de, String_4e119 + hlcoord 0, 12 + call PlaceString + ld a, [TempMonPokerusStatus] + ld b, a + and $f + jr nz, .asm_4e055 + ld a, b + and $f0 + jr z, .asm_4e03d + hlcoord 8, 8 + ld [hl], $e8 +.asm_4e03d + ld a, [MonType] + cp $2 + jr z, .asm_4e060 + hlcoord 6, 13 + push hl + ld de, TempMonStatus + predef PlaceStatusString + pop hl + jr nz, .asm_4e066 + jr .asm_4e060 +.asm_4e055 + ld de, String_4e142 + hlcoord 1, 13 + call PlaceString + jr .asm_4e066 +.asm_4e060 + ld de, String_4e127 + call PlaceString +.asm_4e066 + hlcoord 1, 15 + predef PrintMonTypes + hlcoord 9, 8 + ld de, $14 + ld b, $a + ld a, $31 +.asm_4e078 + ld [hl], a + add hl, de + dec b + jr nz, .asm_4e078 + ld de, String_4e12b + hlcoord 10, 9 + call PlaceString + hlcoord 17, 14 + call Function4e0d3 + hlcoord 13, 10 + lb bc, 3, 7 + ld de, TempMonExp + call PrintNum + call Function4e0e7 + hlcoord 13, 13 + lb bc, 3, 7 + ld de, Buffer1 ; wd1ea (aliases: MagikarpLength) + call PrintNum + ld de, String_4e136 + hlcoord 10, 12 + call PlaceString + ld de, String_4e13f + hlcoord 14, 14 + call PlaceString + hlcoord 11, 16 + ld a, [TempMonLevel] + ld b, a + ld de, TempMonExp + 2 + predef FillInExpBar + hlcoord 10, 16 + ld [hl], $40 + hlcoord 19, 16 + ld [hl], $41 + ret + +Function4e0d3: ; 4e0d3 (13:60d3) + ld a, [TempMonLevel] + push af + cp MAX_LEVEL + jr z, .asm_4e0df + inc a + ld [TempMonLevel], a +.asm_4e0df + call PrintLevel + pop af + ld [TempMonLevel], a + ret + +Function4e0e7: ; 4e0e7 (13:60e7) + ld a, [TempMonLevel] + cp MAX_LEVEL + jr z, .asm_4e111 + inc a + ld d, a + callba CalcExpAtLevel +rept 2 + ld hl, TempMonExp + 2 +endr + ld a, [$ffb6] + sub [hl] + dec hl + ld [wd1ec], a + ld a, [$ffb5] + sbc [hl] + dec hl + ld [Buffer2], a ; wd1eb (aliases: MovementType) + ld a, [hQuotient] + sbc [hl] + ld [Buffer1], a ; wd1ea (aliases: MagikarpLength) + ret +.asm_4e111 + ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength) + xor a +rept 2 + ld [hli], a +endr + ld [hl], a + ret +; 4e119 (13:6119) + +String_4e119: ; 4e119 + db "STATUS/" + next "TYPE/@" +; 4e127 + +String_4e127: ; 4e127 + db "OK @" +; 4e12b + +String_4e12b: ; 4e12b + db "EXP POINTS@" +; 4e136 + +String_4e136: ; 4e136 + db "LEVEL UP@" +; 4e13f + +String_4e13f: ; 4e13f + db "TO@" +; 4e142 + +String_4e142: ; 4e142 + db "#RUS@" +; 4e147 + +Function4e147: ; 4e147 (13:6147) + ld de, String_4e1a0 + hlcoord 0, 8 + call PlaceString + call Function4e189 + hlcoord 8, 8 + call PlaceString + ld de, String_4e1a9 + hlcoord 0, 10 + call PlaceString + ld hl, TempMonMoves + ld de, wListMoves_MoveIndicesBuffer + ld bc, NUM_MOVES + call CopyBytes + hlcoord 8, 10 + ld a, SCREEN_WIDTH * 2 + ld [Buffer1], a + predef ListMoves + hlcoord 12, 11 + ld a, $28 + ld [Buffer1], a + predef Function50c50 + ret + +Function4e189: ; 4e189 (13:6189) + ld de, String_4e1a5 + ld a, [TempMonItem] + and a + ret z + ld b, a + callba Function28771 + ld a, b + ld [wd265], a + call GetItemName + ret +; 4e1a0 (13:61a0) + +String_4e1a0: ; 4e1a0 + db "ITEM@" +; 4e1a5 + +String_4e1a5: ; 4e1a5 + db "---@" +; 4e1a9 + +String_4e1a9: ; 4e1a9 + db "MOVE@" +; 4e1ae + +Function4e1ae: ; 4e1ae (13:61ae) + call Function4e1cc + hlcoord 10, 8 + ld de, $14 + ld b, $a + ld a, $31 +.asm_4e1bb + ld [hl], a + add hl, de + dec b + jr nz, .asm_4e1bb + hlcoord 11, 8 + ld bc, $6 + predef PrintTempMonStats + ret + +Function4e1cc: ; 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, TempMonID + call PrintNum + ld hl, Unknown_4e216 + call Function4e528 + call Function4e505 + callba CheckNickErrors + hlcoord 2, 13 + call PlaceString + ld a, [TempMonCaughtGender] + and a + jr z, .asm_4e215 + cp $7f + jr z, .asm_4e215 + and $80 + ld a, "♂" + jr z, .asm_4e211 + ld a, "♀" +.asm_4e211 + hlcoord 9, 13 + ld [hl], a +.asm_4e215 + ret +; 4e216 (13:6216) + +Unknown_4e216: ; 4e216 + dw PartyMonOT + dw OTPartyMonOT + dw sBoxMonOT + dw wd00d +; 4e21e + +IDNoString: ; 4e21e + db $73, "№.@" + +OTString: ; 4e222 + db "OT/@" +; 4e226 + + +Function4e226: ; 4e226 (13:6226) + ld hl, TempMonDVs + predef GetUnownLetter + call Function4e2ad + jr c, .asm_4e238 + and a + jr z, .asm_4e23f + jr .asm_4e246 +.asm_4e238 + call Function4e271 + call SetPalettes + ret +.asm_4e23f + call Function4e253 + call SetPalettes + ret +.asm_4e246 + call SetPalettes + call Function4e253 + ld a, [CurPartySpecies] + call PlayCry2 + ret + +Function4e253: ; 4e253 (13:6253) + ld hl, wcf64 + set 5, [hl] + ld a, [CurPartySpecies] + cp UNOWN + jr z, .asm_4e266 + hlcoord 0, 0 + call PrepMonFrontpic + ret +.asm_4e266 + xor a + ld [wc2c6], a + hlcoord 0, 0 + call _PrepMonFrontpic + ret + +Function4e271: ; 4e271 (13:6271) + ld a, [CurPartySpecies] + cp UNOWN + jr z, .asm_4e281 + ld a, $1 + ld [wc2c6], a + call Function4e289 + ret +.asm_4e281 + xor a + ld [wc2c6], a + call Function4e289 + ret + +Function4e289: ; 4e289 (13:6289) + ld a, [CurPartySpecies] + call IsAPokemon + ret c + call Function4e307 + ld de, VTiles2 tile $00 + predef Function5108b + hlcoord 0, 0 + ld d, $0 + ld e, $2 + predef LoadMonAnimation + ld hl, wcf64 + set 6, [hl] + ret + +Function4e2ad: ; 4e2ad (13:62ad) + ld a, [MonType] + ld hl, .Jumptable + rst JumpTable + ret + +.Jumptable: ; 4e2b5 (13:62b5) + dw Function4e2bf + dw Function4e2cf + dw Function4e2d1 + dw Function4e2ed + dw Function4e301 + + +Function4e2bf: ; 4e2bf (13:62bf) + ld a, [CurPartyMon] + ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld b, h + ld c, l + jr Function4e2f2 + +Function4e2cf: ; 4e2cf (13:62cf) + xor a + ret + +Function4e2d1: ; 4e2d1 (13:62d1) + ld hl, sBoxMons + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld b, h + ld c, l + ld a, BANK(sBoxMons) + call GetSRAMBank + call Function4e2f2 + push af + call CloseSRAM + pop af + ret + +Function4e2ed: ; 4e2ed (13:62ed) + ld bc, TempMonSpecies ; wd10e (aliases: TempMon) + jr Function4e2f2 ; utterly pointless + +Function4e2f2: ; 4e2f2 (13:62f2) + ld a, [CurPartySpecies] + cp EGG + jr z, .egg + call CheckFaintedFrzSlp + jr c, Function4e305 +.egg + xor a + scf + ret + +Function4e301: ; 4e301 (13:6301) + ld a, $1 + and a + ret +Function4e305: ; 4e305 (13:6305) + xor a + ret + +Function4e307: ; 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 $7f + call Get2bpp + pop af + ld [rVBK], a + pop af + pop bc + pop de + pop hl + ret +; 4e32a (13:632a) + +Unknown_4e32a: ; 4e32a +; A blank tile? + ds 16 +; 4e33a + +EggStatsScreen: ; 4e33a + xor a + ld [hBGMapMode], a + ld hl, wcda1 + call SetHPPal + ld b, SCGB_03 + call GetSGBLayout + call Function4df8f + 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, [TempMonHappiness] ; 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 + callba Function10402d + call Function4e497 + + ld a, [TempMonHappiness] + 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 + + +Function4e497: ; 4e497 (13:6497) + call Function4e2ad + ret nc + ld a, [TempMonHappiness] + ld e, $7 + cp $6 + jr c, .asm_4e4ab + ld e, $8 + cp $b + jr c, .asm_4e4ab + ret +.asm_4e4ab + push de + ld a, $1 + ld [wc2c6], a + call Function4e307 + ld de, VTiles2 tile $00 + predef Function5108b + pop de + hlcoord 0, 0 + ld d, $0 + predef LoadMonAnimation + ld hl, wcf64 + set 6, [hl] + ret + +Function4e4cd: ; 4e4cd (13:64cd) + hlcoord 13, 5 + ld a, $36 + 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 $2 + ld a, $3a + hlcoord 13, 5 + jr c, .load_square + hlcoord 15, 5 + jr z, .load_square + hlcoord 17, 5 +.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 + +Function4e505: ; 4e505 (13:6505) + ld de, StringBuffer1 + ld bc, PKMN_NAME_LENGTH + jr .okay ; uuterly pointless +.okay + ld a, [MonType] + 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 + +Function4e528: ; 4e528 (13:6528) + ld a, [MonType] + add a + ld c, a + ld b, 0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [MonType] + cp $3 + ret z + ld a, [CurPartyMon] + 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 diff --git a/main.asm b/main.asm index 0c2625399..a185662ab 100644 --- a/main.asm +++ b/main.asm @@ -20233,11 +20233,11 @@ CheckPartyFullAfterContest: ; 4d9e5 xor a ld [CurPartyMon], a ld hl, wContestMon - ld de, wd018 + ld de, wd018_Mon ld bc, BOXMON_STRUCT_LENGTH call CopyBytes ld hl, PlayerName - ld de, wd00d + ld de, wd00d_MonOT ld bc, NAME_LENGTH call CopyBytes callab Function51322 @@ -20249,9 +20249,9 @@ CheckPartyFullAfterContest: ; 4d9e5 jr c, .Box_SkipNickname ld a, BOXMON ld [MonType], a - ld de, wd050 + ld de, wd050_MonNick callab InitNickname - ld hl, wd050 + ld hl, wd050_MonNick .Box_SkipNickname ld a, BANK(sBoxMonNicknames) @@ -20538,1157 +20538,7 @@ RetroactivelyIgnoreEggs: ; 4dc67 ; 4dc7b -Function4dc7b: ; 4dc7b (13:5c7b) - ld a, [wLinkMode] - cp LINK_MOBILE - jr nz, StatsScreenInit - - ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd) - and a - jr z, StatsScreenInit - jr Function4dc8f - -StatsScreenInit: ; 4dc8a - ld hl, StatsScreenMain - jr StatsScreenInit_gotaddress - -Function4dc8f: ; 4dc8f - ld hl, StatsScreenBattle - jr StatsScreenInit_gotaddress - -StatsScreenInit_gotaddress: ; 4dc94 - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a ; disable overworld tile animations - ld a, [wc2c6] ; 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 - callba Functionfb53e - 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 [wc2c6], a - pop af - ld [hMapAnims], a - ret -; 0x4dcd2 - -StatsScreenMain: ; 0x4dcd2 - xor a - ld [wJumptableIndex], a - ; stupid interns - ld [wcf64], a - ld a, [wcf64] - and $fc - or $1 - ld [wcf64], a -.loop ; 4dce3 - ld a, [wJumptableIndex] - and $7f - ld hl, StatsScreenPointerTable - rst JumpTable - call Function4dd3a ; check for keys? - ld a, [wJumptableIndex] - bit 7, a - jr z, .loop - ret -; 0x4dcf7 - -StatsScreenBattle: ; 4dcf7 - xor a - ld [wJumptableIndex], a - ; stupid interns - ld [wcf64], a - ld a, [wcf64] - and $fc - or $1 - ld [wcf64], a -.loop - callba Function100dd2 - ld a, [wJumptableIndex] - and $7f - ld hl, StatsScreenPointerTable - rst JumpTable - call Function4dd3a - callba Function100dfd - 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 Function4ddac - dw Function4ddc6 - dw StatsScreenWaitCry - dw Function4ddd6 - dw Function4dd6c -; 4dd3a - - -Function4dd3a: ; 4dd3a (13:5d3a) - ld hl, wcf64 - bit 6, [hl] - jr nz, .asm_4dd49 - bit 5, [hl] - jr nz, .asm_4dd56 - call DelayFrame - ret -.asm_4dd49 - callba Functiond00b4 - jr nc, .asm_4dd56 - ld hl, wcf64 - res 6, [hl] -.asm_4dd56 - ld hl, wcf64 - res 5, [hl] - callba Function10402d - ret - -Function4dd62: ; 4dd62 (13:5d62) - ld a, [wJumptableIndex] - and $80 - or h - ld [wJumptableIndex], a - ret - -Function4dd6c: ; 4dd6c (13:5d6c) - ld hl, wJumptableIndex - set 7, [hl] - ret - -MonStatsInit: ; 4dd72 (13:5d72) - ld hl, wcf64 - res 6, [hl] - call ClearBGPalettes - call ClearTileMap - callba Function10402d - call Function4ddf2 - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_4dd9b - call Function4deea - ld hl, wcf64 - set 4, [hl] - ld h, $4 - call Function4dd62 - ret -.asm_4dd9b - ld h, $1 - call Function4dd62 - ret - -EggStatsInit: ; 4dda1 - call EggStatsScreen - ld a, [wJumptableIndex] - inc a - ld [wJumptableIndex], a - ret -; 0x4ddac - - -Function4ddac: ; 4ddac (13:5dac) - call Function4de2c - jr nc, .asm_4ddb7 - ld h, $0 - call Function4dd62 - ret -.asm_4ddb7 - bit 0, a - jr nz, .asm_4ddc0 - and $c3 - jp Function4de54 -.asm_4ddc0 - ld h, $7 - call Function4dd62 - ret - -Function4ddc6: ; 4ddc6 (13:5dc6) - call Function4dfb6 - ld hl, wcf64 - res 4, [hl] - ld a, [wJumptableIndex] - inc a - ld [wJumptableIndex], a - ret - -Function4ddd6: ; 4ddd6 (13:5dd6) - call Function4de2c - jr nc, .asm_4dde1 - ld h, $0 - call Function4dd62 - ret - -.asm_4dde1 - and $f3 - jp Function4de54 - -StatsScreenWaitCry: ; 4dde6 (13:5de6) - call IsSFXPlaying - ret nc - ld a, [wJumptableIndex] - inc a - ld [wJumptableIndex], a - ret - -Function4ddf2: ; 4ddf2 (13:5df2) - ld a, [MonType] - cp BREEDMON - jr nz, .asm_4de10 - ld a, [wd018] - ld [CurSpecies], a - call GetBaseData - ld hl, wd018 - ld de, TempMon - ld bc, PARTYMON_STRUCT_LENGTH - call CopyBytes - jr .asm_4de2a -.asm_4de10 - callba CopyPkmnToTempMon - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_4de2a - ld a, [MonType] - cp BOXMON - jr c, .asm_4de2a - callba Function50890 -.asm_4de2a - and a - ret - -Function4de2c: ; 4de2c (13:5e2c) - call GetJoypad - ld a, [MonType] - cp BREEDMON - jr nz, .notbreedmon - push hl - push de - push bc - callba Functione2f95 - pop bc - pop de - pop hl - ld a, [wcf73] - and $c0 - jr nz, .set_carry - ld a, [wcf73] - jr .clear_flags - -.notbreedmon - ld a, [hJoyPressed] -.clear_flags - and a - ret - -.set_carry - scf - ret - -Function4de54: ; 4de54 (13:5e54) - push af - ld a, [wcf64] - and $3 - ld c, a - pop af - bit 1, a - jp nz, Function4dee4 - bit 5, a - jr nz, .asm_4dec7 - bit 4, a - jr nz, .asm_4debd - bit 0, a - jr nz, .asm_4deb8 - bit 6, a - jr nz, .asm_4dea0 - bit 7, a - jr nz, .asm_4de77 - jr .asm_4dece -.asm_4de77 - ld a, [MonType] - cp BOXMON - jr nc, .asm_4dece - and a - ld a, [PartyCount] - jr z, .asm_4de87 - ld a, [OTPartyCount] -.asm_4de87 - ld b, a - ld a, [CurPartyMon] - inc a - cp b - jr z, .asm_4dece - ld [CurPartyMon], a - ld b, a - ld a, [MonType] - and a - jr nz, .asm_4dede - ld a, b - inc a - ld [wd0d8], a - jr .asm_4dede -.asm_4dea0 - ld a, [CurPartyMon] - and a - jr z, .asm_4dece - dec a - ld [CurPartyMon], a - ld b, a - ld a, [MonType] - and a - jr nz, .asm_4dede - ld a, b - inc a - ld [wd0d8], a - jr .asm_4dede -.asm_4deb8 - ld a, c - cp $3 - jr z, Function4dee4 -.asm_4debd - inc c - ld a, $3 - cp c - jr nc, .asm_4decf - ld c, $1 - jr .asm_4decf -.asm_4dec7 - dec c - jr nz, .asm_4decf - ld c, $3 - jr .asm_4decf -.asm_4dece - ret -.asm_4decf - ld a, [wcf64] - and $fc - or c - ld [wcf64], a - ld h, $4 - call Function4dd62 - ret -.asm_4dede - ld h, $0 - call Function4dd62 - ret - -Function4dee4: ; 4dee4 (13:5ee4) - ld h, $7 - call Function4dd62 - ret - -Function4deea: ; 4deea (13:5eea) - call Function4df45 - xor a - ld [hBGMapMode], a - ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) - ld [wd265], a - ld [CurSpecies], 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, Unknown_4df77 - call Function4e528 - call Function4e505 - hlcoord 8, 2 - call PlaceString - hlcoord 18, 0 - call Function4df66 - hlcoord 9, 4 - ld a, "/" - ld [hli], a - ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) - ld [wd265], a - call GetPokemonName - call PlaceString - call Function4df8f - call Function4df9b - call Function4dfa6 - ret - -Function4df45: ; 4df45 (13:5f45) - ld hl, TempMonHP - ld a, [hli] - ld b, a - ld c, [hl] - ld hl, TempMonMaxHP - ld a, [hli] - ld d, a - ld e, [hl] - callba DrawPartyMenuHPBar - ld hl, wcda1 - call SetHPPal - ld b, SCGB_03 - call GetSGBLayout - call DelayFrame - ret - -Function4df66: ; 4df66 (13:5f66) - push hl - callba GetGender - pop hl - ret c - ld a, "♂" - jr nz, .got_gender - ld a, "♀" -.got_gender - ld [hl], a - ret -; 4df77 (13:5f77) - -Unknown_4df77: ; 4df77 - dw PartyMonNicknames - dw OTPartyMonNicknames - dw sBoxMonNicknames - dw wd002 -; 4df7f - -Function4df7f: ; 4df7f - hlcoord 7, 0 - ld bc, SCREEN_WIDTH - ld d, SCREEN_HEIGHT -.loop - ld a, $31 - ld [hl], a - add hl, bc - dec d - jr nz, .loop - ret -; 4df8f - -Function4df8f: ; 4df8f (13:5f8f) - hlcoord 0, 7 - ld b, SCREEN_WIDTH - ld a, "_" -.loop - ld [hli], a - dec b - jr nz, .loop - ret - -Function4df9b: ; 4df9b (13:5f9b) - hlcoord 12, 6 - ld [hl], "◀" - hlcoord 19, 6 - ld [hl], "▶" - ret - -Function4dfa6: ; 4dfa6 (13:5fa6) - ld bc, TempMonDVs - callba CheckShininess - ret nc - hlcoord 19, 0 - ld [hl], "" - ret - -Function4dfb6: ; 4dfb6 (13:5fb6) - ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) - ld [wd265], a - ld [CurSpecies], a - xor a - ld [hBGMapMode], a - call Function4dfda - call Function4e002 - call Function4dfed - ld hl, wcf64 - bit 4, [hl] - jr nz, .asm_4dfd6 - call SetPalettes - ret - -.asm_4dfd6 - call Function4e226 - ret - -Function4dfda: ; 4dfda (13:5fda) - ld a, [wcf64] - and $3 - ld c, a - call Function4e4cd - hlcoord 0, 8 - lb bc, 10, 20 - call ClearBox - ret - -Function4dfed: ; 4dfed (13:5fed) - ld a, [wcf64] - and $3 - ld c, a - callba Function8c8a - call DelayFrame - ld hl, wcf64 - set 5, [hl] - ret - -Function4e002: ; 4e002 (13:6002) - ld a, [wcf64] - and $3 - dec a - ld hl, Jumptable_4e00d - rst JumpTable - ret - -Jumptable_4e00d: ; 4e00d (13:600d) - dw Function4e013 - dw Function4e147 - dw Function4e1ae - - -Function4e013: ; 4e013 (13:6013) - hlcoord 0, 9 - ld b, $0 - predef DrawPlayerHP - hlcoord 8, 9 - ld [hl], $41 - ld de, String_4e119 - hlcoord 0, 12 - call PlaceString - ld a, [TempMonPokerusStatus] - ld b, a - and $f - jr nz, .asm_4e055 - ld a, b - and $f0 - jr z, .asm_4e03d - hlcoord 8, 8 - ld [hl], $e8 -.asm_4e03d - ld a, [MonType] - cp $2 - jr z, .asm_4e060 - hlcoord 6, 13 - push hl - ld de, TempMonStatus - predef PlaceStatusString - pop hl - jr nz, .asm_4e066 - jr .asm_4e060 -.asm_4e055 - ld de, String_4e142 - hlcoord 1, 13 - call PlaceString - jr .asm_4e066 -.asm_4e060 - ld de, String_4e127 - call PlaceString -.asm_4e066 - hlcoord 1, 15 - predef PrintMonTypes - hlcoord 9, 8 - ld de, $14 - ld b, $a - ld a, $31 -.asm_4e078 - ld [hl], a - add hl, de - dec b - jr nz, .asm_4e078 - ld de, String_4e12b - hlcoord 10, 9 - call PlaceString - hlcoord 17, 14 - call Function4e0d3 - hlcoord 13, 10 - lb bc, 3, 7 - ld de, TempMonExp - call PrintNum - call Function4e0e7 - hlcoord 13, 13 - lb bc, 3, 7 - ld de, Buffer1 ; wd1ea (aliases: MagikarpLength) - call PrintNum - ld de, String_4e136 - hlcoord 10, 12 - call PlaceString - ld de, String_4e13f - hlcoord 14, 14 - call PlaceString - hlcoord 11, 16 - ld a, [TempMonLevel] - ld b, a - ld de, TempMonExp + 2 - predef FillInExpBar - hlcoord 10, 16 - ld [hl], $40 - hlcoord 19, 16 - ld [hl], $41 - ret - -Function4e0d3: ; 4e0d3 (13:60d3) - ld a, [TempMonLevel] - push af - cp MAX_LEVEL - jr z, .asm_4e0df - inc a - ld [TempMonLevel], a -.asm_4e0df - call PrintLevel - pop af - ld [TempMonLevel], a - ret - -Function4e0e7: ; 4e0e7 (13:60e7) - ld a, [TempMonLevel] - cp MAX_LEVEL - jr z, .asm_4e111 - inc a - ld d, a - callba CalcExpAtLevel -rept 2 - ld hl, TempMonExp + 2 -endr - ld a, [$ffb6] - sub [hl] - dec hl - ld [wd1ec], a - ld a, [$ffb5] - sbc [hl] - dec hl - ld [Buffer2], a ; wd1eb (aliases: MovementType) - ld a, [hQuotient] - sbc [hl] - ld [Buffer1], a ; wd1ea (aliases: MagikarpLength) - ret -.asm_4e111 - ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength) - xor a -rept 2 - ld [hli], a -endr - ld [hl], a - ret -; 4e119 (13:6119) - -String_4e119: ; 4e119 - db "STATUS/" - next "TYPE/@" -; 4e127 - -String_4e127: ; 4e127 - db "OK @" -; 4e12b - -String_4e12b: ; 4e12b - db "EXP POINTS@" -; 4e136 - -String_4e136: ; 4e136 - db "LEVEL UP@" -; 4e13f - -String_4e13f: ; 4e13f - db "TO@" -; 4e142 - -String_4e142: ; 4e142 - db "#RUS@" -; 4e147 - -Function4e147: ; 4e147 (13:6147) - ld de, String_4e1a0 - hlcoord 0, 8 - call PlaceString - call Function4e189 - hlcoord 8, 8 - call PlaceString - ld de, String_4e1a9 - hlcoord 0, 10 - call PlaceString - ld hl, TempMonMoves - ld de, wListMoves_MoveIndicesBuffer - ld bc, NUM_MOVES - call CopyBytes - hlcoord 8, 10 - ld a, SCREEN_WIDTH * 2 - ld [Buffer1], a - predef ListMoves - hlcoord 12, 11 - ld a, $28 - ld [Buffer1], a - predef Function50c50 - ret - -Function4e189: ; 4e189 (13:6189) - ld de, String_4e1a5 - ld a, [TempMonItem] - and a - ret z - ld b, a - callba Function28771 - ld a, b - ld [wd265], a - call GetItemName - ret -; 4e1a0 (13:61a0) - -String_4e1a0: ; 4e1a0 - db "ITEM@" -; 4e1a5 - -String_4e1a5: ; 4e1a5 - db "---@" -; 4e1a9 - -String_4e1a9: ; 4e1a9 - db "MOVE@" -; 4e1ae - -Function4e1ae: ; 4e1ae (13:61ae) - call Function4e1cc - hlcoord 10, 8 - ld de, $14 - ld b, $a - ld a, $31 -.asm_4e1bb - ld [hl], a - add hl, de - dec b - jr nz, .asm_4e1bb - hlcoord 11, 8 - ld bc, $6 - predef PrintTempMonStats - ret - -Function4e1cc: ; 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, TempMonID - call PrintNum - ld hl, Unknown_4e216 - call Function4e528 - call Function4e505 - callba CheckNickErrors - hlcoord 2, 13 - call PlaceString - ld a, [TempMonCaughtGender] - and a - jr z, .asm_4e215 - cp $7f - jr z, .asm_4e215 - and $80 - ld a, "♂" - jr z, .asm_4e211 - ld a, "♀" -.asm_4e211 - hlcoord 9, 13 - ld [hl], a -.asm_4e215 - ret -; 4e216 (13:6216) - -Unknown_4e216: ; 4e216 - dw PartyMonOT - dw OTPartyMonOT - dw sBoxMonOT - dw wd00d -; 4e21e - -IDNoString: ; 4e21e - db $73, "№.@" - -OTString: ; 4e222 - db "OT/@" -; 4e226 - - -Function4e226: ; 4e226 (13:6226) - ld hl, TempMonDVs - predef GetUnownLetter - call Function4e2ad - jr c, .asm_4e238 - and a - jr z, .asm_4e23f - jr .asm_4e246 -.asm_4e238 - call Function4e271 - call SetPalettes - ret -.asm_4e23f - call Function4e253 - call SetPalettes - ret -.asm_4e246 - call SetPalettes - call Function4e253 - ld a, [CurPartySpecies] - call PlayCry2 - ret - -Function4e253: ; 4e253 (13:6253) - ld hl, wcf64 - set 5, [hl] - ld a, [CurPartySpecies] - cp UNOWN - jr z, .asm_4e266 - hlcoord 0, 0 - call PrepMonFrontpic - ret -.asm_4e266 - xor a - ld [wc2c6], a - hlcoord 0, 0 - call _PrepMonFrontpic - ret - -Function4e271: ; 4e271 (13:6271) - ld a, [CurPartySpecies] - cp UNOWN - jr z, .asm_4e281 - ld a, $1 - ld [wc2c6], a - call Function4e289 - ret -.asm_4e281 - xor a - ld [wc2c6], a - call Function4e289 - ret - -Function4e289: ; 4e289 (13:6289) - ld a, [CurPartySpecies] - call IsAPokemon - ret c - call Function4e307 - ld de, VTiles2 tile $00 - predef Function5108b - hlcoord 0, 0 - ld d, $0 - ld e, $2 - predef LoadMonAnimation - ld hl, wcf64 - set 6, [hl] - ret - -Function4e2ad: ; 4e2ad (13:62ad) - ld a, [MonType] - ld hl, Jumptable_4e2b5 - rst JumpTable - ret - -Jumptable_4e2b5: ; 4e2b5 (13:62b5) - dw Function4e2bf - dw Function4e2cf - dw Function4e2d1 - dw Function4e2ed - dw Function4e301 - - -Function4e2bf: ; 4e2bf (13:62bf) - ld a, [CurPartyMon] - ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld b, h - ld c, l - jr Function4e2f2 - -Function4e2cf: ; 4e2cf (13:62cf) - xor a - ret - -Function4e2d1: ; 4e2d1 (13:62d1) - ld hl, sBoxMons - ld bc, $30 - ld a, [CurPartyMon] - call AddNTimes - ld b, h - ld c, l - ld a, $1 - call GetSRAMBank - call Function4e2f2 - push af - call CloseSRAM - pop af - ret - -Function4e2ed: ; 4e2ed (13:62ed) - ld bc, TempMonSpecies ; wd10e (aliases: TempMon) - jr Function4e2f2 - -Function4e2f2: ; 4e2f2 (13:62f2) - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_4e2fe - call CheckFaintedFrzSlp - jr c, Function4e305 -.asm_4e2fe - xor a - scf - ret - -Function4e301: ; 4e301 (13:6301) - ld a, $1 - and a - ret -Function4e305: ; 4e305 (13:6305) - xor a - ret - -Function4e307: ; 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 $7f - call Get2bpp - pop af - ld [rVBK], a - pop af - pop bc - pop de - pop hl - ret -; 4e32a (13:632a) - -Unknown_4e32a: ; 4e32a -; A blank tile? - ds 16 -; 4e33a - -EggStatsScreen: ; 4e33a - xor a - ld [hBGMapMode], a - ld hl, wcda1 - call SetHPPal - ld b, SCGB_03 - call GetSGBLayout - call Function4df8f - 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, [TempMonHappiness] ; 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 - callba Function10402d - call Function4e497 - - ld a, [TempMonHappiness] - 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 - - -Function4e497: ; 4e497 (13:6497) - call Function4e2ad - ret nc - ld a, [TempMonHappiness] - ld e, $7 - cp $6 - jr c, .asm_4e4ab - ld e, $8 - cp $b - jr c, .asm_4e4ab - ret -.asm_4e4ab - push de - ld a, $1 - ld [wc2c6], a - call Function4e307 - ld de, VTiles2 tile $00 - predef Function5108b - pop de - hlcoord 0, 0 - ld d, $0 - predef LoadMonAnimation - ld hl, wcf64 - set 6, [hl] - ret - -Function4e4cd: ; 4e4cd (13:64cd) - hlcoord 13, 5 - ld a, $36 - call Function4e4f7 - hlcoord 15, 5 - ld a, $36 - call Function4e4f7 - hlcoord 17, 5 - ld a, $36 - call Function4e4f7 - ld a, c - cp $2 - ld a, $3a - hlcoord 13, 5 - jr c, Function4e4f7 - hlcoord 15, 5 - jr z, Function4e4f7 - hlcoord 17, 5 - -Function4e4f7: ; 4e4f7 (13:64f7) - push bc - ld [hli], a - inc a - ld [hld], a - ld bc, $14 - add hl, bc - inc a - ld [hli], a - inc a - ld [hl], a - pop bc - ret - -Function4e505: ; 4e505 (13:6505) - ld de, StringBuffer1 - ld bc, $b - jr .asm_4e50d -.asm_4e50d - ld a, [MonType] - cp BOXMON - jr nz, .asm_4e522 - ld a, BANK(sBoxMonNicknames) - call GetSRAMBank - push de - call CopyBytes - pop de - call CloseSRAM - ret -.asm_4e522 - push de - call CopyBytes - pop de - ret - -Function4e528: ; 4e528 (13:6528) - ld a, [MonType] - add a - ld c, a - ld b, 0 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [MonType] - cp $3 - ret z - ld a, [CurPartyMon] - 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 - +INCLUDE "engine/stats_screen.asm" CatchTutorial:: ; 4e554 ld a, [BattleType] @@ -22010,7 +20860,7 @@ CopyPkmnToTempMon: ; 5084a Function5088b: ; 5088b - ld bc, wd018 + ld bc, wd018_Mon jr Function50893 ; 50890 @@ -22976,7 +21826,7 @@ _SwitchPartyMons: ld [Buffer2], a ; wd1eb (aliases: MovementType) cp b jr z, .skip - call .SwapPartymonViaSRAM + call .SwapMonAndMail ld a, [wd1ec] call .ClearSprite ld a, [Buffer2] ; wd1eb (aliases: MovementType) @@ -23007,7 +21857,7 @@ _SwitchPartyMons: call WaitPlaySFX ret -.SwapPartymonViaSRAM: ; 50f62 (14:4f62) +.SwapMonAndMail: ; 50f62 (14:4f62) push hl push de push bc @@ -23261,7 +22111,7 @@ Function51103: ; 51103 ld b, a call Get2bpp pop hl - ld de, 7 * 7 * $10 + ld de, 7 * 7 tiles add hl, de push hl ld a, $1 @@ -23269,17 +22119,17 @@ Function51103: ; 51103 call GetFarWRAMByte pop hl and $f - ld de, w6_d000 + $800 + 5 * 5 * $10 + ld de, w6_d800 + 5 * 5 tiles ld c, 5 * 5 cp 5 - jr z, .asm_5113b - ld de, w6_d000 + $800 + 6 * 6 * $10 + jr z, .got_dims + ld de, w6_d800 + 6 * 6 tiles ld c, 6 * 6 cp 6 - jr z, .asm_5113b - ld de, w6_d000 + $800 + 7 * 7 * $10 + jr z, .got_dims + ld de, w6_d800 + 7 * 7 tiles ld c, 7 * 7 -.asm_5113b +.got_dims push hl push bc @@ -23376,10 +22226,10 @@ FixPicBank: ; 511c5 ; This is a thing for some reason. push hl push bc - sub PICS_1 - $36 + sub PICS_1 - PICS_FIX ld c, a ld b, 0 - ld hl, Unknown_511d4 + ld hl, .PicsBanks add hl, bc ld a, [hl] pop bc @@ -23387,7 +22237,7 @@ FixPicBank: ; 511c5 ret ; 511d4 -Unknown_511d4: ; 511d4 +.PicsBanks: ; 511d4 db PICS_1 db PICS_2 db PICS_3 @@ -23513,28 +22363,28 @@ Function5127c: ; 5127c jr z, .asm_512a8 ld a, c cp 7 * 7 - ld de, 7 * 7 * $10 - jr z, .asm_51296 + ld de, 7 * 7 tiles + jr z, .got_dims cp 6 * 6 - ld de, 6 * 6 * $10 - jr z, .asm_51296 - ld de, 5 * 5 * $10 + ld de, 6 * 6 tiles + jr z, .got_dims + ld de, 5 * 5 tiles -.asm_51296 +.got_dims ld a, [hl] ld b, $0 ld c, $8 -.asm_5129b +.loop rra rl b dec c - jr nz, .asm_5129b + jr nz, .loop ld a, b ld [hli], a dec de ld a, e or d - jr nz, .asm_51296 + jr nz, .got_dims .asm_512a8 pop bc @@ -23648,13 +22498,13 @@ Function51322: ; 51322 ld [wd265], a ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH - ld de, wd018 + ld de, wd018_Mon call Function513e0 - ld hl, wd01a + ld hl, wd018_MonMoves ld de, TempMonMoves ld bc, NUM_MOVES call CopyBytes - ld hl, wd02f + ld hl, wd018_MonPP ld de, TempMonPP ld bc, NUM_MOVES call CopyBytes @@ -23686,7 +22536,7 @@ Function5138b: ; 5138b ld [wd265], a ld hl, PartyMons ld bc, PARTYMON_STRUCT_LENGTH - ld de, wd018 + ld de, wd018_Mon call Function513e0 ret ; 513cb diff --git a/misc/mobile_22.asm b/misc/mobile_22.asm index 3fc378924..4e4efec93 100644 --- a/misc/mobile_22.asm +++ b/misc/mobile_22.asm @@ -665,9 +665,10 @@ Function894dc: ; 894dc push af ld a, 5 ld [rSVBK], a + ld c, d ld b, 0 - ld hl, Unknown_89509 + ld hl, .PalettePointers rept 2 add hl, bc endr @@ -675,25 +676,26 @@ endr ld h, [hl] ld l, a ld de, wMapPals - ld bc, 24 + ld bc, 3 palettes call CopyBytes - ld hl, Palette_89557 - ld de, wd018 - ld bc, 24 + ld hl, .Pals345 + ld de, wMapPals + 3 palettes + ld bc, 3 palettes call CopyBytes + pop af ld [rSVBK], a pop bc ret ; 89509 -Unknown_89509: ; 89509 - dw Palette_8950f - dw Palette_89527 - dw Palette_8953f +.PalettePointers: ; 89509 + dw .Pals012a + dw .Pals012b + dw .Pals012c ; 8950f -Palette_8950f: ; 8950f +.Pals012a: ; 8950f RGB 31, 31, 31 RGB 10, 17, 13 RGB 10, 08, 22 @@ -709,7 +711,7 @@ Palette_8950f: ; 8950f RGB 10, 17, 13 RGB 00, 00, 00 -Palette_89527: ; 89527 +.Pals012b: ; 89527 RGB 31, 31, 31 RGB 30, 22, 11 RGB 31, 08, 15 @@ -725,7 +727,7 @@ Palette_89527: ; 89527 RGB 30, 22, 11 RGB 00, 00, 00 -Palette_8953f: ; 8953f +.Pals012c: ; 8953f RGB 31, 31, 31 RGB 15, 20, 26 RGB 25, 07, 20 @@ -741,7 +743,7 @@ Palette_8953f: ; 8953f RGB 15, 20, 26 RGB 00, 00, 00 -Palette_89557: ; 89557 +.Pals345: ; 89557 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 13, 00 diff --git a/wram.asm b/wram.asm index a026c84af..efcd6999f 100644 --- a/wram.asm +++ b/wram.asm @@ -1536,6 +1536,8 @@ wd016:: ds 1 wMartItem8BCD:: wd017:: ds 1 + ds wd00d - @ +wd00d_MonOT:: ds NAME_LENGTH wd018_Mon:: party_struct wd018_Mon ds wd018_Mon - @ @@ -1620,6 +1622,7 @@ MenuItemsListEnd:: wTempTrainerHeaderEnd:: wd04e:: ds 2 wOaksPkmnTalkPkmnNameBuffer:: +wd050_MonNick:: wd050:: ds PKMN_NAME_LENGTH +- 1 wd05a:: ds 12 wd066:: ds 10 @@ -2998,7 +3001,8 @@ SECTION "WRAM 6", WRAMX, BANK [6] w6_d000:: ds $400 w6_d400:: ds $200 -w6_d600:: ds $600 +w6_d600:: ds $200 +w6_d800:: INCLUDE "sram.asm"