summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm2163
1 files changed, 343 insertions, 1820 deletions
diff --git a/main.asm b/main.asm
index 0117e41c3..dac5605b3 100644
--- a/main.asm
+++ b/main.asm
@@ -45,9 +45,9 @@ LoadPushOAM:: ; 4031
; 403f
PushOAM: ; 403f
- ld a, Sprites >> 8
+ ld a, Sprites / $100
ld [rDMA], a
- ld a, $28
+ ld a, 40
.loop
dec a
jr nz, .loop
@@ -149,12 +149,12 @@ Function64db: ; 64db
ld [rSVBK], a
ld a, $60
- ld hl, w6_d000
+ ld hl, wBackupTilemap
lb bc, 4, 0
call ByteFill
- ld a, w6_d000 / $100
+ ld a, wBackupTilemap / $100
ld [rHDMA1], a
- ld a, w6_d000 % $100
+ ld a, wBackupTilemap % $100
ld [rHDMA2], a
ld a, (VBGMap0 % $8000) / $100
ld [rHDMA3], a
@@ -169,264 +169,7 @@ Function64db: ; 64db
ret
; 6508
-LearnMove: ; 6508
- call LoadTileMapToTempTileMap
- ld a, [CurPartyMon]
- ld hl, PartyMonNicknames
- call GetNick
- ld hl, StringBuffer1
- ld de, wd050_MonNick
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
-
-.loop
- ld hl, PartyMon1Moves
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, [CurPartyMon]
- call AddNTimes
- ld d, h
- ld e, l
- ld b, NUM_MOVES
-; Get the first empty move slot. This routine also serves to
-; determine whether the Pokemon learning the moves already has
-; all four slots occupied, in which case one would need to be
-; deleted.
-.next
- ld a, [hl]
- and a
- jr z, .learn
- inc hl
- dec b
- jr nz, .next
-; If we're here, we enter the routine for forgetting a move
-; to make room for the new move we're trying to learn.
- push de
- call ForgetMove
- pop de
- jp c, .cancel
-
- push hl
- push de
- ld [wd265], a
-
- ld b, a
- ld a, [wBattleMode]
- and a
- jr z, .not_disabled
- ld a, [DisabledMove]
- cp b
- jr nz, .not_disabled
- xor a
- ld [DisabledMove], a
- ld [PlayerDisableCount], a
-.not_disabled
-
- call GetMoveName
- ld hl, UnknownText_0x6684 ; 1, 2 and…
- call PrintText
- pop de
- pop hl
-
-.learn
- ld a, [wd262]
- ld [hl], a
- ld bc, MON_PP - MON_MOVES
- add hl, bc
-
- push hl
- push de
- dec a
- ld hl, Moves + MOVE_PP
- ld bc, MOVE_LENGTH
- call AddNTimes
- ld a, BANK(Moves)
- call GetFarByte
- pop de
- pop hl
-
- ld [hl], a
-
- ld a, [wBattleMode]
- and a
- jp z, .learned
-
- ld a, [CurPartyMon]
- ld b, a
- ld a, [CurBattleMon]
- cp b
- jp nz, .learned
-
- ld a, [PlayerSubStatus5]
- bit SUBSTATUS_TRANSFORMED, a
- jp nz, .learned
-
- ld h, d
- ld l, e
- ld de, BattleMonMoves
- ld bc, NUM_MOVES
- call CopyBytes
- ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES)
- add hl, bc
- ld de, BattleMonPP
- ld bc, NUM_MOVES
- call CopyBytes
- jp .learned
-
-.cancel
- ld hl, UnknownText_0x6675 ; Stop learning <MOVE>?
- call PrintText
- call YesNoBox
- jp c, .loop
-
- ld hl, UnknownText_0x667a ; <MON> did not learn <MOVE>.
- call PrintText
- ld b, 0
- ret
-
-.learned
- ld hl, UnknownText_0x666b ; <MON> learned <MOVE>!
- call PrintText
- ld b, 1
- ret
-; 65d3
-
-ForgetMove: ; 65d3
- push hl
- ld hl, UnknownText_0x667f
- call PrintText
- call YesNoBox
- pop hl
- ret c
- ld bc, -NUM_MOVES
- add hl, bc
- push hl
- ld de, wListMoves_MoveIndicesBuffer
- ld bc, NUM_MOVES
- call CopyBytes
- pop hl
-.loop
- push hl
- ld hl, UnknownText_0x6670
- call PrintText
- hlcoord 5, 2
- ld b, NUM_MOVES * 2
- ld c, MOVE_NAME_LENGTH
- call TextBox
- hlcoord 5 + 2, 2 + 2
- ld a, SCREEN_WIDTH * 2
- ld [Buffer1], a
- predef ListMoves
- ; wMenuData3
- ld a, $4
- ld [wcfa1], a
- ld a, $6
- ld [wcfa2], a
- ld a, [wd0eb]
- inc a
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld [MenuSelection2], a
- ld [wcfaa], a
- ld a, $3
- ld [wcfa8], a
- ld a, $20
- ld [wcfa5], a
- xor a
- ld [wcfa6], a
- ld a, $20
- ld [wcfa7], a
- call Function1bc9
- push af
- call Call_LoadTempTileMapToTileMap
- pop af
- pop hl
- bit 1, a
- jr nz, .cancel
- push hl
- ld a, [MenuSelection2]
- dec a
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [hl]
- push af
- push bc
- call IsHMMove
- pop bc
- pop de
- ld a, d
- jr c, .hmmove
- pop hl
- add hl, bc
- and a
- ret
-
-.hmmove
- ld hl, UnknownText_0x669a
- call PrintText
- pop hl
- jr .loop
-
-.cancel
- scf
- ret
-; 666b
-
-UnknownText_0x666b: ; 666b
-; <MON> learned <MOVE>!
- text_jump UnknownText_0x1c5660
- db "@"
-; 6670
-
-UnknownText_0x6670: ; 6670
-; Which move should be forgotten?
- text_jump UnknownText_0x1c5678
- db "@"
-; 6675
-
-UnknownText_0x6675: ; 6675
-; Stop learning <MOVE>?
- text_jump UnknownText_0x1c5699
- db "@"
-; 667a
-
-UnknownText_0x667a: ; 667a
-; <MON> did not learn <MOVE>.
- text_jump UnknownText_0x1c56af
- db "@"
-; 667f
-
-UnknownText_0x667f: ; 667f
-; <MON> is trying to learn <MOVE>. But <MON> can't learn more than
-; four moves. Delete an older move to make room for <MOVE>?
- text_jump UnknownText_0x1c56c9
- db "@"
-; 6684
-
-UnknownText_0x6684: ; 6684
- text_jump UnknownText_0x1c5740 ; 1, 2 and…
- start_asm
- push de
- ld de, SFX_SWITCH_POKEMON
- call PlaySFX
- pop de
- ld hl, UnknownText_0x6695
- ret
-; 6695
-
-UnknownText_0x6695: ; 6695
-; Poof! <MON> forgot <MOVE>. And…
- text_jump UnknownText_0x1c574e
- db "@"
-; 669a
-
-UnknownText_0x669a: ; 669a
-; HM moves can't be forgotten now.
- text_jump UnknownText_0x1c5772
- db "@"
-; 669f
-
+INCLUDE "engine/learn.asm"
CheckNickErrors:: ; 669f
; error-check monster nick before use
@@ -494,215 +237,19 @@ CheckNickErrors:: ; 669f
.textcommands ; 66cf
; table defining which characters are actually text commands
; format:
- ; ≥ <
- db $00, $05
- db $14, $19
- db $1d, $26
- db $35, $3a
- db $3f, $40
- db $49, $5d
- db $5e, $7f
- db $ff ; end
+ ; ≥ <
+ db "<START>", $04 + 1
+ db "<PLAY_G>", $18 + 1
+ db $1d, "%" + 1
+ db $35, "<GREEN>" + 1
+ db "<ENEMY>", "<ENEMY>" + 1
+ db $49, "<TM>" + 1
+ db "<ROCKET>", "┘" + 1
+ db -1 ; end
; 66de
-_Multiply:: ; 66de
-
-; hMultiplier is one byte.
- ld a, 8
- ld b, a
-
- xor a
- ld [hMultiplicand - 1], a
- ld [hMathBuffer + 1], a
- ld [hMathBuffer + 2], a
- ld [hMathBuffer + 3], a
- ld [hMathBuffer + 4], a
-
-
-.loop
- ld a, [hMultiplier]
- srl a
- ld [hMultiplier], a
- jr nc, .next
-
- ld a, [hMathBuffer + 4]
- ld c, a
- ld a, [hMultiplicand + 2]
- add c
- ld [hMathBuffer + 4], a
-
- ld a, [hMathBuffer + 3]
- ld c, a
- ld a, [hMultiplicand + 1]
- adc c
- ld [hMathBuffer + 3], a
-
- ld a, [hMathBuffer + 2]
- ld c, a
- ld a, [hMultiplicand + 0]
- adc c
- ld [hMathBuffer + 2], a
-
- ld a, [hMathBuffer + 1]
- ld c, a
- ld a, [hMultiplicand - 1]
- adc c
- ld [hMathBuffer + 1], a
-
-.next
- dec b
- jr z, .done
-
-
-; hMultiplicand <<= 1
-
- ld a, [hMultiplicand + 2]
- add a
- ld [hMultiplicand + 2], a
-
- ld a, [hMultiplicand + 1]
- rla
- ld [hMultiplicand + 1], a
-
- ld a, [hMultiplicand + 0]
- rla
- ld [hMultiplicand + 0], a
-
- ld a, [hMultiplicand - 1]
- rla
- ld [hMultiplicand - 1], a
-
- jr .loop
-
-
-.done
- ld a, [hMathBuffer + 4]
- ld [hProduct + 3], a
-
- ld a, [hMathBuffer + 3]
- ld [hProduct + 2], a
-
- ld a, [hMathBuffer + 2]
- ld [hProduct + 1], a
-
- ld a, [hMathBuffer + 1]
- ld [hProduct + 0], a
-
- ret
-; 673e
-
-
-_Divide:: ; 673e
- xor a
- ld [hMathBuffer + 0], a
- ld [hMathBuffer + 1], a
- ld [hMathBuffer + 2], a
- ld [hMathBuffer + 3], a
- ld [hMathBuffer + 4], a
-
- ld a, 9
- ld e, a
-
-.loop
- ld a, [hMathBuffer + 0]
- ld c, a
- ld a, [hDividend + 1]
- sub c
- ld d, a
-
- ld a, [hDivisor]
- ld c, a
- ld a, [hDividend + 0]
- sbc c
- jr c, .asm_6767
-
- ld [hDividend + 0], a
-
- ld a, d
- ld [hDividend + 1], a
-
- ld a, [hMathBuffer + 4]
- inc a
- ld [hMathBuffer + 4], a
-
- jr .loop
-
-.asm_6767
- ld a, b
- cp 1
- jr z, .done
-
- ld a, [hMathBuffer + 4]
- add a
- ld [hMathBuffer + 4], a
-
- ld a, [hMathBuffer + 3]
- rla
- ld [hMathBuffer + 3], a
-
- ld a, [hMathBuffer + 2]
- rla
- ld [hMathBuffer + 2], a
-
- ld a, [hMathBuffer + 1]
- rla
- ld [hMathBuffer + 1], a
-
- dec e
- jr nz, .asm_6798
-
- ld e, 8
- ld a, [hMathBuffer + 0]
- ld [hDivisor], a
- xor a
- ld [hMathBuffer + 0], a
-
- ld a, [hDividend + 1]
- ld [hDividend + 0], a
-
- ld a, [hDividend + 2]
- ld [hDividend + 1], a
-
- ld a, [hDividend + 3]
- ld [hDividend + 2], a
-
-.asm_6798
- ld a, e
- cp 1
- jr nz, .asm_679e
- dec b
-
-.asm_679e
- ld a, [hDivisor]
- srl a
- ld [hDivisor], a
-
- ld a, [hMathBuffer + 0]
- rr a
- ld [hMathBuffer + 0], a
-
- jr .loop
-
-.done
- ld a, [hDividend + 1]
- ld [hDivisor], a
-
- ld a, [hMathBuffer + 4]
- ld [hDividend + 3], a
-
- ld a, [hMathBuffer + 3]
- ld [hDividend + 2], a
-
- ld a, [hMathBuffer + 2]
- ld [hDividend + 1], a
-
- ld a, [hMathBuffer + 1]
- ld [hDividend + 0], a
-
- ret
-; 67c1
-
+INCLUDE "engine/math.asm"
ItemAttributes: ; 67c1
INCLUDE "items/item_attributes.asm"
@@ -3410,7 +2957,7 @@ Script_Cut: ; 0xc802
writetext UnknownText_0xc7c4
reloadmappart
callasm CutDownTreeOrGrass
- loadmovesprites
+ closetext
end
; 0xc810
@@ -3565,7 +3112,7 @@ Script_UseFlash: ; 0xc8e6
special UpdateTimePals
writetext UnknownText_0xc8f3
callasm BlindingFlash
- loadmovesprites
+ closetext
end
; 0xc8f3
@@ -3662,8 +3209,8 @@ SurfFromMenuScript: ; c983
UsedSurfScript: ; c986
writetext UsedSurfText ; "used SURF!"
+ waitbutton
closetext
- loadmovesprites
callasm Functionc9a2 ; empty function
@@ -3806,7 +3353,7 @@ AskSurfScript: ; ca2c
writetext AskSurfText
yesorno
iftrue UsedSurfScript
- loadmovesprites
+ closetext
end
; ca36
@@ -3962,8 +3509,8 @@ Script_WaterfallFromMenu: ; 0xcb1c
Script_UsedWaterfall: ; 0xcb20
callasm GetPartyNick
writetext UnknownText_0xcb51
+ waitbutton
closetext
- loadmovesprites
playsound SFX_BUBBLEBEAM
.loop
applymovement PLAYER, WaterfallStep
@@ -4031,7 +3578,7 @@ Script_AskWaterfall: ; 0xcb86
writetext UnknownText_0xcb90
yesorno
iftrue Script_UsedWaterfall
- loadmovesprites
+ closetext
end
; 0xcb90
@@ -4069,16 +3616,16 @@ dig_incave
.CheckCanDig: ; cbb8
call GetMapPermission
- cp $4
+ cp CAVE
jr z, .incave
- cp $7
+ cp DUNGEON
jr z, .incave
.fail
ld a, $2
ret
.incave
- ld hl, wdca9
+ ld hl, wDigWarp
ld a, [hli]
and a
jr z, .fail
@@ -4093,8 +3640,8 @@ dig_incave
; cbd8
.DoDig: ; cbd8
- ld hl, wdca9
- ld de, wd146
+ ld hl, wDigWarp
+ ld de, wNextWarp
ld bc, 3
call CopyBytes
call GetPartyNick
@@ -4159,8 +3706,8 @@ UsedDigScript: ; 0xcc35
writetext UnknownText_0xcc1c
UsedDigOrEscapeRopeScript: ; 0xcc3c
+ waitbutton
closetext
- loadmovesprites
playsound SFX_WARP_TO
applymovement PLAYER, .DigOut
farscall Script_AbortBugContest
@@ -4208,9 +3755,9 @@ TeleportFunction: ; cc61
jr .nope
.CheckIfSpawnPoint
- ld a, [wdcb2]
+ ld a, [wLastSpawnMapGroup]
ld d, a
- ld a, [wdcb3]
+ ld a, [wLastSpawnMapNumber]
ld e, a
callba IsSpawnPoint
jr nc, .nope
@@ -4257,7 +3804,7 @@ Script_UsedTeleport: ; 0xccbb
writetext UnknownText_0xccb1
pause 60
reloadmappart
- loadmovesprites
+ closetext
playsound SFX_WARP_TO
applymovement PLAYER, .TeleportFrom
farscall Script_AbortBugContest
@@ -4347,7 +3894,7 @@ Script_UsedStrength: ; 0xcd2d
cry 0
pause 3
writetext UnknownText_0xcd46
- loadmovesprites
+ closetext
end
; 0xcd41
@@ -4381,7 +3928,7 @@ AskStrengthScript:
writetext UnknownText_0xcd69
yesorno
iftrue Script_UsedStrength
- loadmovesprites
+ closetext
end
; 0xcd69
@@ -4525,7 +4072,7 @@ Script_UsedWhirlpool: ; 0xce0f
writetext UnknownText_0xcdd9
reloadmappart
callasm DisappearWhirlpool
- loadmovesprites
+ closetext
end
; 0xce1d
@@ -4584,7 +4131,7 @@ Script_AskWhirlpoolOW: ; 0xce6e
writetext UnknownText_0xce78
yesorno
iftrue Script_UsedWhirlpool
- loadmovesprites
+ closetext
end
; 0xce78
@@ -4642,16 +4189,16 @@ HeadbuttScript: ; 0xceab
callasm TreeMonEncounter
iffalse .no_battle
- loadmovesprites
- battlecheck
+ closetext
+ setup_random_encounter
startbattle
returnafterbattle
end
.no_battle
writetext UnknownText_0xcea2
+ waitbutton
closetext
- loadmovesprites
end
; 0xcec9
@@ -4676,7 +4223,7 @@ AskHeadbuttScript: ; 0xcedc
writetext UnknownText_0xcee6
yesorno
iftrue HeadbuttScript
- loadmovesprites
+ closetext
end
; 0xcee6
@@ -4742,7 +4289,7 @@ RockSmashFromMenuScript: ; 0xcf2e
RockSmashScript: ; cf32
callasm GetPartyNick
writetext UnknownText_0xcf58
- loadmovesprites
+ closetext
special WaitSFX
playsound SFX_STRENGTH
earthquake 84
@@ -4752,7 +4299,7 @@ RockSmashScript: ; cf32
callasm RockMonEncounter
copybytetovar TempWildMonSpecies
iffalse .done
- battlecheck
+ setup_random_encounter
startbattle
returnafterbattle
.done
@@ -4776,7 +4323,7 @@ AskRockSmashScript: ; 0xcf5d
writetext UnknownText_0xcf77
yesorno
iftrue RockSmashScript
- loadmovesprites
+ closetext
end
.no
jumptext UnknownText_0xcf72
@@ -4920,7 +4467,7 @@ Script_NotEvenANibble2: ; 0xd027
Script_NotEvenANibble_FallThrough: ; 0xd02d
loademote EMOTE_SHADOW
callasm PutTheRodAway
- loadmovesprites
+ closetext
end
; 0xd035
@@ -4940,8 +4487,8 @@ Script_GotABite: ; 0xd035
applymovement PLAYER, .Movement_RestoreRod
writetext UnknownText_0xd0a4
callasm PutTheRodAway
- loadmovesprites
- battlecheck
+ closetext
+ setup_random_encounter
startbattle
returnafterbattle
end
@@ -5125,15 +4672,15 @@ Script_GetOnBike: ; 0xd13e
special UpdateTimePals
writecode VAR_MOVEMENT, PLAYER_BIKE
writetext UnknownText_0xd17c
+ waitbutton
closetext
- loadmovesprites
special ReplaceKrisSprite
end
; 0xd14e
Script_GetOnBike_Register: ; 0xd14e
writecode VAR_MOVEMENT, PLAYER_BIKE
- loadmovesprites
+ closetext
special ReplaceKrisSprite
end
; 0xd156
@@ -5147,10 +4694,10 @@ Script_GetOffBike: ; 0xd158
special UpdateTimePals
writecode VAR_MOVEMENT, PLAYER_NORMAL
writetext UnknownText_0xd181
- closetext
+ waitbutton
FinishGettingOffBike:
- loadmovesprites
+ closetext
special ReplaceKrisSprite
special PlayMapMusic
end
@@ -5163,8 +4710,8 @@ Script_GetOffBike_Register: ; 0xd16b
UnknownScript_0xd171: ; 0xd171
writetext UnknownText_0xd177
+ waitbutton
closetext
- loadmovesprites
end
; 0xd177
@@ -5218,7 +4765,7 @@ AskCutScript: ; 0xd1a9
callasm .CheckMap
iftrue Script_Cut
.script_d1b8
- loadmovesprites
+ closetext
end
; 0xd1ba
@@ -7012,11 +6559,11 @@ AddTempmonToParty: ; da96
call AddNTimes
predef GetUnownLetter
callab UpdateUnownDex
- ld a, [wdef4]
+ ld a, [wFirstUnownSeen]
and a
jr nz, .done
ld a, [UnownLetter]
- ld [wdef4], a
+ ld [wFirstUnownSeen], a
.done
and a
@@ -9044,7 +8591,7 @@ Special_GiveParkBalls: ; 135db
BugCatchingContestBattleScript:: ; 0x135eb
writecode VAR_BATTLETYPE, BATTLETYPE_CONTEST
- battlecheck
+ setup_random_encounter
startbattle
returnafterbattle
copybytetovar wParkBallsRemaining
@@ -9056,7 +8603,7 @@ BugCatchingContestOverScript:: ; 0x135f8
playsound SFX_ELEVATOR_END
loadfont
writetext UnknownText_0x1360f
- closetext
+ waitbutton
jump BugCatchingContestReturnToGateScript
; 0x13603
@@ -9064,10 +8611,10 @@ BugCatchingContestOutOfBallsScript: ; 0x13603
playsound SFX_ELEVATOR_END
loadfont
writetext UnknownText_0x13614
- closetext
+ waitbutton
BugCatchingContestReturnToGateScript: ; 0x1360b
- loadmovesprites
+ closetext
jumpstd bugcontestresultswarp
; 0x1360f
@@ -9086,8 +8633,8 @@ UnknownText_0x13614: ; 0x13614
RepelWoreOffScript:: ; 0x13619
loadfont
writetext .text
+ waitbutton
closetext
- loadmovesprites
end
; 0x13620
@@ -9113,10 +8660,10 @@ SignpostItemScript:: ; 0x13625
.bag_full: ; 0x1363e
keeptextopen
writetext .no_room_text
- closetext
+ waitbutton
.finish: ; 13643
- loadmovesprites
+ closetext
end
; 0x13645
@@ -9917,7 +9464,7 @@ UpdateItemDescription: ; 0x244c3
; 0x244e3
Pokepic:: ; 244e3
- ld hl, MenuDataHeader_0x24547
+ ld hl, PokepicMenuDataHeader
call CopyMenuDataHeader
call MenuBox
call UpdateSprites
@@ -9946,8 +9493,8 @@ Pokepic:: ; 244e3
ret
; 24528
-PokepicYesOrNo:: ; 24528
- ld hl, MenuDataHeader_0x24547
+ClosePokepic:: ; 24528
+ ld hl, PokepicMenuDataHeader
call CopyMenuDataHeader
call ClearMenuBoxInterior
call WaitBGMap
@@ -9961,7 +9508,7 @@ PokepicYesOrNo:: ; 24528
ret
; 24547
-MenuDataHeader_0x24547: ; 0x24547
+PokepicMenuDataHeader: ; 0x24547
db $40 ; flags
db 04, 06 ; start coords
db 13, 14 ; end coords
@@ -14291,12 +13838,12 @@ SECTION "Tileset Data 4", ROMX, BANK[TILESETS_4]
INCLUDE "tilesets/data_4.asm"
-SECTION "bankD", ROMX, BANK[$D]
+SECTION "Effect Commands", ROMX, BANK[$D]
INCLUDE "battle/effect_commands.asm"
-SECTION "bankE", ROMX, BANK[$E]
+SECTION "Enemy Trainers", ROMX, BANK[$E]
INCLUDE "battle/ai/items.asm"
@@ -14326,8 +13873,8 @@ GetTrainerClassName: ; 3952d
ret
; 39550
-Function39550: ; 39550
- ld hl, wd26b
+GetOTName: ; 39550
+ ld hl, OTPlayerName
ld a, [wLinkMode]
and a
jr nz, .ok
@@ -14352,13 +13899,13 @@ Function39550: ; 39550
ret
; 3957b
-Function3957b: ; 3957b
+GetTrainerAttributes: ; 3957b
ld a, [TrainerClass]
ld c, a
- call Function39550
+ call GetOTName
ld a, [TrainerClass]
dec a
- ld hl, TrainerClassAttributes
+ ld hl, TrainerClassAttributes + TRNATTR_ITEM1
ld bc, NUM_TRAINER_ATTRIBUTES
call AddNTimes
ld de, wEnemyTrainerItem1
@@ -14374,414 +13921,14 @@ Function3957b: ; 3957b
INCLUDE "trainers/attributes.asm"
-
-ReadTrainerParty: ; 39771
- ld a, [InBattleTowerBattle]
- bit 0, a
- ret nz
-
- ld a, [wLinkMode]
- and a
- ret nz
-
- ld hl, OTPartyCount
- xor a
- ld [hli], a
- dec a
- ld [hl], a
-
- ld hl, OTPartyMons
- ld bc, OTPartyMonsEnd - OTPartyMons
- xor a
- call ByteFill
-
- ld a, [OtherTrainerClass]
- cp CAL
- jr nz, .not_cal2
- ld a, [OtherTrainerID]
- cp CAL2
- jr z, .cal2
- ld a, [OtherTrainerClass]
-.not_cal2
-
- dec a
- ld c, a
- ld b, 0
- ld hl, TrainerGroups
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
- ld a, [OtherTrainerID]
- ld b, a
-.skip_trainer
- dec b
- jr z, .got_trainer
-.loop
- ld a, [hli]
- cp $ff
- jr nz, .loop
- jr .skip_trainer
-.got_trainer
-
-.skip_name
- ld a, [hli]
- cp "@"
- jr nz, .skip_name
-
- ld a, [hli]
- ld c, a
- ld b, 0
- ld d, h
- ld e, l
- ld hl, TrainerTypes
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld bc, .done
- push bc
- jp [hl]
-
-.done
- jp ComputeTrainerReward
-
-.cal2
- ld a, BANK(sMysteryGiftTrainer)
- call GetSRAMBank
- ld de, sMysteryGiftTrainer
- call TrainerType2
- call CloseSRAM
- jr .done
-; 397e3
-
-TrainerTypes: ; 397e3
- dw TrainerType1 ; level, species
- dw TrainerType2 ; level, species, moves
- dw TrainerType3 ; level, species, item
- dw TrainerType4 ; level, species, item, moves
-; 397eb
-
-TrainerType1: ; 397eb
-; normal (level, species)
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
- ld a, OTPARTYMON
- ld [MonType], a
- push hl
- predef TryAddMonToParty
- pop hl
- jr .loop
-; 39806
-
-TrainerType2: ; 39806
-; moves
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
- ld a, OTPARTYMON
- ld [MonType], a
-
- push hl
- predef TryAddMonToParty
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Moves
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- pop hl
-
- ld b, NUM_MOVES
-.copy_moves
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .copy_moves
-
- push hl
-
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Species
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- ld hl, MON_PP
- add hl, de
- push hl
- ld hl, MON_MOVES
- add hl, de
- pop de
-
- ld b, NUM_MOVES
-.copy_pp
- ld a, [hli]
- and a
- jr z, .copied_pp
-
- push hl
- push bc
- dec a
- ld hl, Moves + MOVE_PP
- ld bc, MOVE_LENGTH
- call AddNTimes
- ld a, BANK(Moves)
- call GetFarByte
- pop bc
- pop hl
-
- ld [de], a
- inc de
- dec b
- jr nz, .copy_pp
-.copied_pp
-
- pop hl
- jr .loop
-; 39871
-
-TrainerType3: ; 39871
-; item
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
- ld a, OTPARTYMON
- ld [MonType], a
- push hl
- predef TryAddMonToParty
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- pop hl
- ld a, [hli]
- ld [de], a
- jr .loop
-; 3989d (e:589d)
-
-TrainerType4: ; 3989d
-; item + moves
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
-
- ld a, OTPARTYMON
- ld [MonType], a
-
- push hl
- predef TryAddMonToParty
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- pop hl
-
- ld a, [hli]
- ld [de], a
-
- push hl
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Moves
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- pop hl
-
- ld b, NUM_MOVES
-.copy_moves
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .copy_moves
-
- push hl
-
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- ld hl, MON_PP
- add hl, de
-
- push hl
- ld hl, MON_MOVES
- add hl, de
- pop de
-
- ld b, NUM_MOVES
-.copy_pp
- ld a, [hli]
- and a
- jr z, .copied_pp
-
- push hl
- push bc
- dec a
- ld hl, Moves + MOVE_PP
- ld bc, MOVE_LENGTH
- call AddNTimes
- ld a, BANK(Moves)
- call GetFarByte
- pop bc
- pop hl
-
- ld [de], a
- inc de
- dec b
- jr nz, .copy_pp
-.copied_pp
-
- pop hl
- jr .loop
-; 3991b
-
-ComputeTrainerReward: ; 3991b (e:591b)
- ld hl, hProduct
- xor a
-rept 3
- ld [hli], a
-endr
- ld a, [wEnemyTrainerBaseReward]
- ld [hli], a
- ld a, [CurPartyLevel]
- ld [hl], a
- call Multiply
- ld hl, wBattleReward
- xor a
- ld [hli], a
- ld a, [hProduct + 2]
- ld [hli], a
- ld a, [hProduct + 3]
- ld [hl], a
- ret
-
-
-Battle_GetTrainerName:: ; 39939
- ld a, [InBattleTowerBattle]
- bit 0, a
- ld hl, wd26b
- jp nz, CopyTrainerName
-
- ld a, [OtherTrainerID]
- ld b, a
- ld a, [OtherTrainerClass]
- ld c, a
-
-GetTrainerName:: ; 3994c
- ld a, c
- cp CAL
- jr nz, .not_cal2
-
- ld a, BANK(sMysteryGiftTrainerHouseFlag)
- call GetSRAMBank
- ld a, [sMysteryGiftTrainerHouseFlag]
- and a
- call CloseSRAM
- jr z, .not_cal2
-
- ld a, BANK(sMysteryGiftPartnerName)
- call GetSRAMBank
- ld hl, sMysteryGiftPartnerName
- call CopyTrainerName
- jp CloseSRAM
-
-.not_cal2
- dec c
- push bc
- ld b, 0
- ld hl, TrainerGroups
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop bc
-
-.loop
- dec b
- jr z, CopyTrainerName
-
-.skip
- ld a, [hli]
- cp $ff
- jr nz, .skip
- jr .loop
-
-CopyTrainerName: ; 39984
- ld de, StringBuffer1
- push de
- ld bc, NAME_LENGTH
- call CopyBytes
- pop de
- ret
-; 39990
-
-Function39990: ; 39990
-; This function is useless.
- ld de, StringBuffer1
- push de
- ld bc, NAME_LENGTH
- pop de
- ret
-; 39999
+INCLUDE "trainers/read_party.asm"
INCLUDE "trainers/trainer_pointers.asm"
INCLUDE "trainers/trainers.asm"
-SECTION "bankF", ROMX, BANK[$F]
+SECTION "Battle Core", ROMX, BANK[$F]
INCLUDE "battle/core.asm"
@@ -14793,72 +13940,6 @@ SECTION "bank10", ROMX, BANK[$10]
INCLUDE "engine/pokedex.asm"
-
-Function41a7f: ; 41a7f
- xor a
- ld [hBGMapMode], a
- callba Function1de247
- call Function41af7
- call DisableLCD
- call LoadStandardFont
- call LoadFontsExtra
- call Function414b7
- call Function4147b
- ld a, [wd265]
- ld [CurPartySpecies], a
- call Function407fd
- call Function40ba0
- hlcoord 0, 17
- ld [hl], $3b
- inc hl
- ld bc, $13
- ld a, " "
- call ByteFill
- callba Function4424d
- call EnableLCD
- call WaitBGMap
- call GetBaseData
- ld de, VTiles2
- predef GetFrontpic
- ld a, $4
- call Function41423
- ld a, [CurPartySpecies]
- call PlayCry
- ret
-; 41ad7
-
-
-Function41ad7: ; 41ad7 (10:5ad7)
- ld a, $3
- ld [hBGMapMode], a
- ld c, 4
- call DelayFrames
- ret
-
-Function41ae1: ; 41ae1 (10:5ae1)
- ld a, $4
- ld [hBGMapMode], a
- ld c, 4
- call DelayFrames
- ret
-
-Function41aeb: ; 41aeb (10:5aeb)
- ld a, [hCGB]
- and a
- jr z, .asm_41af3
- call Function41ae1
-.asm_41af3
- call Function41ad7
- ret
-
-
-Function41af7: ; 41af7
- xor a
- ld [hBGMapMode], a
- ret
-; 41afb
-
-
INCLUDE "battle/moves/moves.asm"
INCLUDE "engine/evolve.asm"
@@ -14867,233 +13948,10 @@ SECTION "bank11", ROMX, BANK[$11]
INCLUDE "engine/fruit_trees.asm"
+INCLUDE "battle/ai/move.asm"
-AIChooseMove: ; 440ce
-; Score each move in EnemyMonMoves starting from Buffer1. Lower is better.
-; Pick the move with the lowest score.
-
-; Wildmons attack at random.
- ld a, [wBattleMode]
- dec a
- ret z
-
- ld a, [wLinkMode]
- and a
- ret nz
-
-; No use picking a move if there's no choice.
- callba CheckSubstatus_RechargeChargedRampageBideRollout
- ret nz
-
-
-; The default score is 20. Unusable moves are given a score of 80.
- ld a, 20
- ld hl, Buffer1
-rept 3
- ld [hli], a
-endr
- ld [hl], a
-
-; Don't pick disabled moves.
- ld a, [EnemyDisabledMove]
- and a
- jr z, .CheckPP
-
- ld hl, EnemyMonMoves
- ld c, 0
-.CheckDisabledMove
- cp [hl]
- jr z, .ScoreDisabledMove
- inc c
- inc hl
- jr .CheckDisabledMove
-.ScoreDisabledMove
- ld hl, Buffer1
- ld b, 0
- add hl, bc
- ld [hl], 80
-
-; Don't pick moves with 0 PP.
-.CheckPP
- ld hl, Buffer1 - 1
- ld de, EnemyMonPP
- ld b, 0
-.CheckMovePP
- inc b
- ld a, b
- cp EnemyMonMovesEnd - EnemyMonMoves + 1
- jr z, .ApplyLayers
- inc hl
- ld a, [de]
- inc de
- and $3f
- jr nz, .CheckMovePP
- ld [hl], 80
- jr .CheckMovePP
-
-
-; Apply AI scoring layers depending on the trainer class.
-.ApplyLayers
- ld hl, TrainerClassAttributes + 3
-
- ; If we have a battle in BattleTower just load the Attributes of the first TrainerClass (Falkner)
- ; so we have always the same AI, regardless of the loaded class of trainer
- ld a, [InBattleTowerBattle]
- bit 0, a
- jr nz, .battle_tower_skip
-
- ld a, [TrainerClass]
- dec a
- ld bc, 7 ; Trainer2AI - Trainer1AI
- call AddNTimes
-
-.battle_tower_skip
- lb bc, CHECK_FLAG, 0
- push bc
- push hl
-
-.CheckLayer
- pop hl
- pop bc
-
- ld a, c
- cp 16 ; up to 16 scoring layers
- jr z, .DecrementScores
-
- push bc
- ld d, BANK(TrainerClassAttributes)
- predef FlagPredef
- ld d, c
- pop bc
-
- inc c
- push bc
- push hl
-
- ld a, d
- and a
- jr z, .CheckLayer
-
- ld hl, AIScoringPointers
- dec c
- ld b, 0
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, BANK(AIScoring)
- call FarCall_hl
-
- jr .CheckLayer
-
-; Decrement the scores of all moves one by one until one reaches 0.
-.DecrementScores
- ld hl, Buffer1
- ld de, EnemyMonMoves
- ld c, EnemyMonMovesEnd - EnemyMonMoves
-
-.DecrementNextScore
- ; If the enemy has no moves, this will infinite.
- ld a, [de]
- inc de
- and a
- jr z, .DecrementScores
-
- ; We are done whenever a score reaches 0
- dec [hl]
- jr z, .PickLowestScoreMoves
-
- ; If we just decremented the fourth move's score, go back to the first move
- inc hl
- dec c
- jr z, .DecrementScores
-
- jr .DecrementNextScore
-
-; In order to avoid bias towards the moves located first in memory, increment the scores
-; that were decremented one more time than the rest (in case there was a tie).
-; This means that the minimum score will be 1.
-.PickLowestScoreMoves
- ld a, c
-
-.move_loop
- inc [hl]
- dec hl
- inc a
- cp NUM_MOVES + 1
- jr nz, .move_loop
-
- ld hl, Buffer1
- ld de, EnemyMonMoves
- ld c, NUM_MOVES
-
-; Give a score of 0 to a blank move
-.loop2
- ld a, [de]
- and a
- jr nz, .skip_load
- ld [hl], a
-
-; Disregard the move if its score is not 1
-.skip_load
- ld a, [hl]
- dec a
- jr z, .keep
- xor a
- ld [hli], a
- jr .after_toss
-
-.keep
- ld a, [de]
- ld [hli], a
-.after_toss
- inc de
- dec c
- jr nz, .loop2
-
-; Randomly choose one of the moves with a score of 1
-.ChooseMove
- ld hl, Buffer1
- call Random
- and 3
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [hl]
- and a
- jr z, .ChooseMove
-
- ld [CurEnemyMove], a
- ld a, c
- ld [CurEnemyMoveNum], a
- ret
-; 441af
-
-
-AIScoringPointers: ; 441af
- dw AI_Basic
- dw AI_Setup
- dw AI_Types
- dw AI_Offensive
- dw AI_Smart
- dw AI_Opportunist
- dw AI_Aggressive
- dw AI_Cautious
- dw AI_Status
- dw AI_Risky
- dw AI_None
- dw AI_None
- dw AI_None
- dw AI_None
- dw AI_None
- dw AI_None
-; 441cf
-
-
-Function441cf: ; 441cf
- ld hl, Unknown_441fc
+AnimateDexSearchSlowpoke: ; 441cf
+ ld hl, .FrameIDs
ld b, 25
.loop
ld a, [hli]
@@ -15101,53 +13959,54 @@ Function441cf: ; 441cf
; Wrap around
cp $fe
jr nz, .ok
- ld hl, Unknown_441fc
+ ld hl, .FrameIDs
ld a, [hli]
.ok
- ld [wc7db], a
+ ld [wDexSearchSlowpokeFrame], a
ld a, [hli]
ld c, a
push bc
push hl
- call Function44207
+ call DoDexSearchSlowpokeFrame
pop hl
pop bc
call DelayFrames
dec b
jr nz, .loop
xor a
- ld [wc7db], a
- call Function44207
+ ld [wDexSearchSlowpokeFrame], a
+ call DoDexSearchSlowpokeFrame
ld c, 32
call DelayFrames
ret
; 441fc
-Unknown_441fc: ; 441fc
+.FrameIDs: ; 441fc
+ ; frame ID, duration
db 0, 7
db 1, 7
db 2, 7
db 3, 7
db 4, 7
- db $fe
+ db -2
; 44207
-Function44207: ; 44207
- ld a, [wc7db]
- ld hl, Unknown_44228
+DoDexSearchSlowpokeFrame: ; 44207
+ ld a, [wDexSearchSlowpokeFrame]
+ ld hl, .SpriteData
ld de, Sprites
-.asm_44210
+.loop
ld a, [hli]
- cp $ff
+ cp -1
ret z
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
- ld a, [wc7db]
+ ld a, [wDexSearchSlowpokeFrame]
ld b, a
add a
add b
@@ -15158,50 +14017,53 @@ Function44207: ; 44207
ld a, [hli]
ld [de], a
inc de
- jr .asm_44210
+ jr .loop
; 44228
-Unknown_44228: ; 44228
- db $58, $48, $00, $00
- db $58, $50, $01, $00
- db $58, $58, $02, $00
- db $60, $48, $10, $00
- db $60, $50, $11, $00
- db $60, $58, $12, $00
- db $68, $48, $20, $00
- db $68, $50, $21, $00
- db $68, $58, $22, $00
- db $ff
+.SpriteData: ; 44228
+ dsprite 11, 0, 9, 0, $00, $00
+ dsprite 11, 0, 10, 0, $01, $00
+ dsprite 11, 0, 11, 0, $02, $00
+ dsprite 12, 0, 9, 0, $10, $00
+ dsprite 12, 0, 10, 0, $11, $00
+ dsprite 12, 0, 11, 0, $12, $00
+ dsprite 13, 0, 9, 0, $20, $00
+ dsprite 13, 0, 10, 0, $21, $00
+ dsprite 13, 0, 11, 0, $22, $00
+ db -1
; 4424d
-Function4424d: ; 4424d
+DisplayDexEntry: ; 4424d
call GetPokemonName
hlcoord 9, 3
- call PlaceString
+ call PlaceString ; mon species
ld a, [wd265]
ld b, a
- call Function44333
+ call GetDexEntryPointer
ld a, b
push af
hlcoord 9, 5
- call FarString
+ call FarString ; dex species
ld h, b
ld l, c
push de
+; Print dex number
hlcoord 2, 8
- ld a, $5c
+ ld a, $5c ; No
ld [hli], a
- ld a, $5d
+ ld a, $5d ; .
ld [hli], a
ld de, wd265
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
+; Check to see if we caught it. Get out of here if we haven't.
ld a, [wd265]
dec a
call CheckCaughtMon
pop hl
pop bc
ret z
+; Get the height of the Pokemon.
ld a, [CurPartySpecies]
ld [CurSpecies], a
inc hl
@@ -15217,7 +14079,7 @@ rept 2
endr
ld a, d
or e
- jr z, .asm_442b0
+ jr z, .skip_height
push hl
push de
ld hl, [sp+$0]
@@ -15227,11 +14089,11 @@ endr
lb bc, 2, 36
call PrintNum
hlcoord 14, 7
- ld [hl], "<ROCKET>"
+ ld [hl], $5e ; ft symbol
pop af
pop hl
-.asm_442b0
+.skip_height
pop af
push af
inc hl
@@ -15242,32 +14104,34 @@ endr
ld e, h
ld a, e
or d
- jr z, .skip
+ jr z, .skip_weight
push de
ld hl, [sp+$0]
ld d, h
ld e, l
hlcoord 11, 9
- lb bc, 2, 69
+ lb bc, 2, PRINTNUM_RIGHTALIGN | 5
call PrintNum
pop de
-.skip
+.skip_weight
+; Page 1
lb bc, 5, SCREEN_WIDTH - 2
hlcoord 2, 11
call ClearBox
hlcoord 1, 10
- ld bc, $13
- ld a, $61
+ ld bc, SCREEN_WIDTH - 1
+ ld a, $61 ; horizontal divider
call ByteFill
+ ; page number
hlcoord 1, 9
- ld [hl], "<CONT>"
+ ld [hl], $55
inc hl
- ld [hl], "<CONT>"
+ ld [hl], $55
hlcoord 1, 10
- ld [hl], "<......>"
+ ld [hl], $56 ; P.
inc hl
- ld [hl], "<DONE>"
+ ld [hl], $57 ; 1
pop de
inc de
pop af
@@ -15278,23 +14142,26 @@ endr
ld a, [wPokedexStatus]
or a
ret z
+
+; Page 2
push bc
push de
lb bc, 5, SCREEN_WIDTH - 2
hlcoord 2, 11
call ClearBox
hlcoord 1, 10
- ld bc, $13
+ ld bc, SCREEN_WIDTH - 1
ld a, $61
call ByteFill
+ ; page number
hlcoord 1, 9
- ld [hl], "<CONT>"
+ ld [hl], $55
inc hl
- ld [hl], "<CONT>"
+ ld [hl], $55
hlcoord 1, 10
- ld [hl], "<......>"
+ ld [hl], $56 ; P.
inc hl
- ld [hl], "<PROMPT>"
+ ld [hl], $58 ; 2
pop de
inc de
pop af
@@ -15307,7 +14174,8 @@ String_44331: ; 44331
db "#@"
; 44333
-Function44333: ; 44333
+GetDexEntryPointer: ; 44333
+; return dex entry pointer b:de
push hl
ld hl, PokedexDataPointerTable
ld a, b
@@ -15324,7 +14192,7 @@ endr
rlca
rlca
and $3
- ld hl, PokedexEntryBanks
+ ld hl, .PokedexEntryBanks
ld d, 0
ld e, a
add hl, de
@@ -15334,7 +14202,7 @@ endr
ret
; 44351
-PokedexEntryBanks: ; 44351
+.PokedexEntryBanks: ; 44351
GLOBAL PokedexEntries1
GLOBAL PokedexEntries2
@@ -15347,22 +14215,26 @@ GLOBAL PokedexEntries4
db BANK(PokedexEntries4)
; 44355
-Function44355: ; 44355
- call Function44333
+GetDexEntryPagePointer: ; 44355
+ call GetDexEntryPointer ; b:de
push hl
ld h, d
ld l, e
+; skip species name
.loop1
ld a, b
call GetFarByte
inc hl
cp "@"
jr nz, .loop1
+; skip height and weight
rept 4
inc hl
endr
+; if c != 1: skip entry
dec c
jr z, .done
+; skip entry
.loop2
ld a, b
call GetFarByte
@@ -17000,7 +15872,7 @@ Function4aad3: ; 4aad3
jr nz, .loop
call Function4aa7a
- callba Function8cf69
+ callba PlaySpriteAnimations
ret
; 4aafb
@@ -19233,6 +18105,92 @@ endr
INCLUDE "engine/evolution_animation.asm"
+Function4e881: ; 4e881
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ hlbgcoord 0, 0
+ ld bc, VBGMap1 - VBGMap0
+ ld a, " "
+ call ByteFill
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call ByteFill
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ ld hl, .SavingRecordDontTurnOff
+ call PrintText
+ call Function3200
+ call SetPalettes
+ ret
+; 4e8bd
+
+.SavingRecordDontTurnOff: ; 0x4e8bd
+ ; SAVING RECORD… DON'T TURN OFF!
+ text_jump UnknownText_0x1bd39e
+ db "@"
+; 0x4e8c2
+
+
+Function4e8c2: ; 4e8c2
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ hlbgcoord 0, 0
+ ld bc, VBGMap1 - VBGMap0
+ ld a, " "
+ call ByteFill
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call ByteFill
+ ld hl, wd000 ; UnknBGPals
+ ld c, 4 * $10
+.load_white_palettes
+ ld a, (palred 31 + palgreen 31 + palblue 31) % $100
+ ld [hli], a
+ ld a, (palred 31 + palgreen 31 + palblue 31) / $100
+ ld [hli], a
+ dec c
+ jr nz, .load_white_palettes
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ call Function3200
+ call SetPalettes
+ ret
+; 4e906
+
+Function4e906: ; 4e906
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, wBackupTilemap
+ ld bc, wBackupAttrMap - wBackupTilemap
+ ld a, " "
+ call ByteFill
+ hlbgcoord 0, 0
+ ld de, wBackupTilemap
+ ld b, $0
+ ld c, $40
+ call Request2bpp
+ pop af
+ ld [rSVBK], a
+ ret
+; 4e929
+
+
Function4e929: ; mobile function
ld h, b
ld l, c
@@ -20657,15 +19615,15 @@ _GetFrontpic: ; 510a5
ld a, $6
ld [rSVBK], a
ld a, b
- ld de, w6_d000 + $800
+ ld de, wBackupTilemap + $800
call FarDecompress
pop bc
- ld hl, w6_d000
- ld de, w6_d000 + $800
+ ld hl, wBackupTilemap
+ ld de, wBackupTilemap + $800
call Function512ab
pop hl
push hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -20708,7 +19666,7 @@ Function51103: ; 51103
ld a, $1
ld [rVBK], a
push hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -20739,7 +19697,7 @@ Function51103: ; 51103
call Function5114f
pop bc
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld a, [hROMBank]
ld b, a
call Get2bpp
@@ -20749,7 +19707,7 @@ Function51103: ; 51103
; 5114f
Function5114f: ; 5114f
- ld hl, w6_d000
+ ld hl, wBackupTilemap
swap c
ld a, c
and $f
@@ -20808,14 +19766,14 @@ GetBackpic: ; 5116c
inc hl
ld a, d
call GetFarHalfword
- ld de, w6_d000
+ ld de, wBackupTilemap
pop af
call FarDecompress
- ld hl, w6_d000
+ ld hl, wBackupTilemap
ld c, 6 * 6
call Function5127c
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld a, [hROMBank]
ld b, a
call Get2bpp
@@ -20914,10 +19872,10 @@ GetTrainerPic: ; 5120d
ld a, BANK(TrainerPicPointers)
call GetFarHalfword
pop af
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarDecompress
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -20943,10 +19901,10 @@ DecompressPredef: ; 5125d
push de
push bc
ld a, b
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarDecompress
pop bc
- ld de, w6_d000
+ ld de, wBackupTilemap
pop hl
ld a, [hROMBank]
ld b, a
@@ -22686,16 +21644,16 @@ INCLUDE "engine/phone_scripts.asm"
TalkToTrainerScript:: ; 0xbe66a
faceplayer
- trainerstatus CHECK_FLAG
+ trainerflagaction CHECK_FLAG
iftrue AlreadyBeatenTrainerScript
- loadtrainerdata
- playrammusic
+ memtrainerdata
+ encountermusic
jump StartBattleWithMapTrainerScript
; 0xbe675
SeenByTrainerScript:: ; 0xbe675
- loadtrainerdata
- playrammusic
+ memtrainerdata
+ encountermusic
showemote EMOTE_SHOCK, LAST_TALKED, 30
callasm TrainerWalkToPlayer
applymovement2 MovementBuffer
@@ -22707,12 +21665,12 @@ SeenByTrainerScript:: ; 0xbe675
StartBattleWithMapTrainerScript: ; 0xbe68a
loadfont
trainertext $0
+ waitbutton
closetext
- loadmovesprites
- loadtrainerdata
+ memtrainerdata
startbattle
returnafterbattle
- trainerstatus SET_FLAG
+ trainerflagaction SET_FLAG
loadvar wRunningTrainerBattleScript, -1
AlreadyBeatenTrainerScript:
@@ -23094,7 +22052,7 @@ Unknown_e00ed:
; Graphics for an unused Game Corner
; game were meant to be here.
-Functione00ed: ; e00ed (38:40ed)
+ret_e00ed: ; e00ed (38:40ed)
ret
; e00ee (38:40ee)
@@ -23138,7 +22096,7 @@ UpdateUnownDex: ; fba18
; fba2e
-Functionfba2e: ; fba2e (3e:7a2e)
+PrintUnownWord: ; fba2e (3e:7a2e)
hlcoord 4, 15
ld bc, 12
ld a, " "
@@ -23159,13 +22117,13 @@ endr
ld e, a
ld d, [hl]
hlcoord 4, 15
-.asm_fba52
+.loop
ld a, [de]
- cp $ff
+ cp -1
ret z
inc de
ld [hli], a
- jr .asm_fba52
+ jr .loop
; fba5a (3e:7a5a)
UnownWords: ; fba5a
@@ -23262,18 +22220,18 @@ Function104000:: ; 104000
Function104006: ; 104006
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10419d
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function10419d
ret
; 10402d
@@ -23285,11 +22243,11 @@ Function10402d:: ; 10402d
Function104033: ; 104033
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10419d
ret
; 104047
@@ -23301,11 +22259,11 @@ Function104047: ; 104047
Function10404d: ; 10404d
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function10419d
ret
; 104061
@@ -23317,10 +22275,10 @@ ReloadMapPart:: ; 104061
Function104067: ; 104067
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
call DelayFrame
di
@@ -23328,11 +22286,11 @@ Function104067: ; 104067
push af
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041ad
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041ad
pop af
ld [rVBK], a
@@ -23347,10 +22305,10 @@ Function104099: ; 104099
Function1040a2: ; 1040a2
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
call DelayFrame
di
@@ -23358,11 +22316,11 @@ Function1040a2: ; 1040a2
push af
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041c1
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041c1
pop af
ld [rVBK], a
@@ -23417,10 +22375,10 @@ Function104110:: ; 104110
Function104116: ; 104116
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
call DelayFrame
di
@@ -23428,11 +22386,11 @@ Function104116: ; 104116
push af
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041b7
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041b7
pop af
ld [rVBK], a
@@ -23447,19 +22405,19 @@ Function104148: ; 104148 (41:4148)
Function10414e: ; 10414e
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
ld c, $ff
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function104265
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041ad
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041ad
ret
; 104177
@@ -23478,7 +22436,7 @@ Function104177: ; 104177
ld [rSVBK], a
ld a, [rVBK]
push af
- call Function10419c
+ call ._hl_
pop af
ld [rVBK], a
pop af
@@ -23490,7 +22448,7 @@ Function104177: ; 104177
ret
; 10419c
-Function10419c: ; 10419c
+._hl_: ; 10419c
jp [hl]
; 10419d
@@ -23700,7 +22658,7 @@ _Get2bpp:: ; 104284
push bc
push hl
- ; Copy c tiles of the 2bpp from b:de to w6_d000
+ ; Copy c tiles of the 2bpp from b:de to wBackupTilemap
ld a, b ; bank
ld l, c ; number of tiles
ld h, $0
@@ -23711,7 +22669,7 @@ endr
ld c, l
ld h, d ; address
ld l, e
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarCopyBytes
pop hl
@@ -23723,7 +22681,7 @@ endr
ld d, h
ld e, l
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function104209
; restore the previous bank
@@ -23778,7 +22736,7 @@ endr
ld b, h
ld h, d
ld l, e
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarCopyBytesDouble_DoubleBankSwitch
pop hl
@@ -23790,7 +22748,7 @@ endr
ld d, h
ld e, l
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function104209
pop af
@@ -23804,22 +22762,22 @@ Function104303: ; 104303
; 104309
Function104309:
- ld hl, w6_d000
+ ld hl, wBackupTilemap
decoord 0, 0
call Function10433a
- ld hl, w6_d000 + $80
+ ld hl, wBackupTilemap + $80
decoord 0, 0, AttrMap
call Function10433a
ld a, $1
ld [rVBK], a
ld c, $8
- ld hl, w6_d000 + $80
+ ld hl, wBackupTilemap + $80
debgcoord 0, 0, VBGMap1
call Function104209
ld a, $0
ld [rVBK], a
ld c, $8
- ld hl, w6_d000
+ ld hl, wBackupTilemap
debgcoord 0, 0, VBGMap1
call Function104209
ret
@@ -23827,7 +22785,7 @@ Function104309:
Function10433a: ; 10433a (41:433a)
ld b, 4
.outer_loop
- ld c, 20
+ ld c, SCREEN_WIDTH
.inner_loop
ld a, [de]
ld [hli], a
@@ -23835,7 +22793,7 @@ Function10433a: ; 10433a (41:433a)
dec c
jr nz, .inner_loop
ld a, l
- add $20 - 20
+ add $20 - SCREEN_WIDTH
ld l, a
ld a, h
adc $0
@@ -23858,446 +22816,7 @@ FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp"
BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp"
FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
-
-RunCallback_05_03: ; 1045b0
- call Clearwc7e8
- call ResetMapBufferEventFlags
- call ResetFlashIfOutOfCave
- call GetCurrentMapTrigger
- call ResetBikeFlags
- ld a, $5
- call RunMapCallback
-
-RunCallback_03: ; 1045c4
- callba ClearCmdQueue
- ld a, $3
- call RunMapCallback
- call GetMapHeaderTimeOfDayNybble
- ld [wc2d0], a
- ret
-
-
-EnterMapConnection: ; 1045d6
-; Return carry if a connection has been entered.
- ld a, [wPlayerStepDirection]
- and a
- jp z, EnterSouthConnection
- cp 1
- jp z, EnterNorthConnection
- cp 2
- jp z, EnterWestConnection
- cp 3
- jp z, EnterEastConnection
- ret
-; 1045ed
-
-
-EnterWestConnection: ; 1045ed
- ld a, [WestConnectedMapGroup]
- ld [MapGroup], a
- ld a, [WestConnectedMapNumber]
- ld [MapNumber], a
- ld a, [WestConnectionStripXOffset]
- ld [XCoord], a
- ld a, [WestConnectionStripYOffset]
- ld hl, YCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, WestConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load
- ld a, [WestConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop
- add hl, de
- dec c
- jr nz, .loop
-
-.skip_to_load
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104629
-
-
-EnterEastConnection: ; 104629
- ld a, [EastConnectedMapGroup]
- ld [MapGroup], a
- ld a, [EastConnectedMapNumber]
- ld [MapNumber], a
- ld a, [EastConnectionStripXOffset]
- ld [XCoord], a
- ld a, [EastConnectionStripYOffset]
- ld hl, YCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, EastConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load
- ld a, [EastConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop
- add hl, de
- dec c
- jr nz, .loop
-
-.skip_to_load
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104665
-
-
-EnterNorthConnection: ; 104665
- ld a, [NorthConnectedMapGroup]
- ld [MapGroup], a
- ld a, [NorthConnectedMapNumber]
- ld [MapNumber], a
- ld a, [NorthConnectionStripYOffset]
- ld [YCoord], a
- ld a, [NorthConnectionStripXOffset]
- ld hl, XCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, NorthConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld b, 0
- srl c
- add hl, bc
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104696
-
-
-EnterSouthConnection: ; 104696
- ld a, [SouthConnectedMapGroup]
- ld [MapGroup], a
- ld a, [SouthConnectedMapNumber]
- ld [MapNumber], a
- ld a, [SouthConnectionStripYOffset]
- ld [YCoord], a
- ld a, [SouthConnectionStripXOffset]
- ld hl, XCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, SouthConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld b, 0
- srl c
- add hl, bc
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- ; fallthrough
-; 1046c4
-
-EnteredConnection: ; 1046c4
- scf
- ret
-; 1046c6
-
-LoadWarpData: ; 1046c6
- call Function1046df
- call Function104718
- ld a, [wd146]
- ld [WarpNumber], a
- ld a, [wd147]
- ld [MapGroup], a
- ld a, [wd148]
- ld [MapNumber], a
- ret
-
-Function1046df: ; 1046df (41:46df)
- call GetMapPermission
- call CheckOutdoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapPermission
- call CheckIndoorMap
- ret nz
- ld a, [wd14a]
- cp $f
- jr nz, .asm_104705
- ld a, [wd14b]
- cp $a
- ret z
- cp $c
- ret z
-.asm_104705
- ld a, [wd149]
- ld [wdca9], a
- ld a, [wd14a]
- ld [wdcaa], a
- ld a, [wd14b]
- ld [wdcab], a
- ret
-
-Function104718: ; 104718 (41:4718)
- call GetMapPermission
- call CheckOutdoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapPermission
- call CheckIndoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapTileset
- ld a, c
- cp $7
- jr z, .asm_104743
- cp $15
- jr z, .asm_104743
- ret
-.asm_104743
- ld a, [wd14a]
- ld [wdcb2], a
- ld a, [wd14b]
- ld [wdcb3], a
- ret
-
-LoadMapTimeOfDay: ; 104750
- ld hl, VramState
- res 6, [hl]
- ld a, $1
- ld [wSpriteUpdatesEnabled], a
- callba Function8c0e5
- callba Function8c001
- call OverworldTextModeSwitch
- call Function104770
- call Function1047a3
- ret
-
-Function104770: ; 104770 (41:4770)
- ld a, VBGMap0 / $100
- ld [wBGMapAnchor + 1], a
- xor a
- ld [wBGMapAnchor], a
- ld [hSCY], a
- ld [hSCX], a
- callba Function5958
- ld a, [rVBK]
- push af
- ld a, $1
- ld [rVBK], a
- xor a
- lb bc, 4, 0
- hlbgcoord 0, 0
- call ByteFill
- pop af
- ld [rVBK], a
- ld a, $60
- lb bc, 4, 0
- hlbgcoord 0, 0
- call ByteFill
- ret
-
-Function1047a3: ; 1047a3 (41:47a3)
- decoord 0, 0
- call .copy
- ld a, [hCGB]
- and a
- ret z
-
- decoord 0, 0, AttrMap
- ld a, $1
- ld [rVBK], a
-.copy:
- hlbgcoord 0, 0
- ld c, SCREEN_WIDTH
- ld b, SCREEN_HEIGHT
-.row
- push bc
-.column
- ld a, [de]
- inc de
- ld [hli], a
- dec c
- jr nz, .column
- ld bc, $20 - SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
- ld a, $0
- ld [rVBK], a
- ret
-
-LoadGraphics: ; 1047cf
- call LoadTilesetHeader
- call LoadTileset
- xor a
- ld [hMapAnims], a
- xor a
- ld [hTileAnimFrame], a
- callba RefreshSprites
- call LoadFontsExtra
- callba Function106594
- ret
-
-LoadMapPalettes: ; 1047eb
- ld b, SCGB_09
- jp GetSGBLayout
-; 1047f0
-
-RefreshMapSprites: ; 1047f0
- call ClearSprites
- callba ReturnFromMapSetupScript
- call GetMovementPermissions
- callba Function579d
- callba CheckReplaceKrisSprite
- ld hl, wPlayerSpriteSetupFlags
- bit 6, [hl]
- jr nz, .skip
- ld hl, VramState
- set 0, [hl]
- call Function2e31
-.skip
- ld a, [wPlayerSpriteSetupFlags]
- and $1c
- ld [wPlayerSpriteSetupFlags], a
- ret
-
-CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
- ld a, [wPlayerStepDirection]
- cp STANDING
- ret z
- and a ; DOWN
- jr z, .down
- cp UP
- jr z, .up
- cp LEFT
- jr z, .left
- cp RIGHT
- jr z, .right
- and a
- ret
-
-.down
- ld a, [PlayerNextMapY]
- sub 4
- ld b, a
- ld a, [MapHeight]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.up
- ld a, [PlayerNextMapY]
- sub 4
- cp -1
- jr z, .ok
- and a
- ret
-
-.left
- ld a, [PlayerNextMapX]
- sub $4
- cp -1
- jr z, .ok
- and a
- ret
-
-.right
- ld a, [PlayerNextMapX]
- sub 4
- ld b, a
- ld a, [MapWidth]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.ok
- scf
- ret
-
-
-GetCoordOfUpperLeftCorner:: ; 10486d
- ld hl, OverworldMap
- ld a, [XCoord]
- bit 0, a
- jr nz, .increment_then_halve1
- srl a
- add $1
- jr .resume
-
-.increment_then_halve1
- add $1
- srl a
-
-.resume
- ld c, a
- ld b, $0
- add hl, bc
- ld a, [MapWidth]
- add $6
- ld c, a
- ld b, $0
- ld a, [YCoord]
- bit 0, a
- jr nz, .increment_then_halve2
- srl a
- add $1
- jr .resume2
-
-.increment_then_halve2
- add $1
- srl a
-
-.resume2
- call AddNTimes
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- ld a, [YCoord]
- and $1
- ld [wd196], a
- ld a, [XCoord]
- and $1
- ld [wd197], a
- ret
-; 1048ba
+INCLUDE "engine/warp_connection.asm"
INCLUDE "engine/mysterygift.asm"
@@ -24422,7 +22941,7 @@ UnownFont: ; 1dc000
INCBIN "gfx/misc/unown_font.2bpp"
; 1dc1b0
-Function1dc1b0: ; 1dc1b0
+PrintPage1: ; 1dc1b0
hlcoord 0, 0
ld de, wca90
ld bc, 17 * SCREEN_WIDTH
@@ -24454,8 +22973,8 @@ Function1dc1b0: ; 1dc1b0
push af
ld a, [wd265]
ld b, a
- ld c, $1
- callba Function44355
+ ld c, 1 ; get page 1
+ callba GetDexEntryPagePointer
pop af
ld a, b
ld hl, wcb6d
@@ -24465,16 +22984,16 @@ Function1dc1b0: ; 1dc1b0
ld de, SCREEN_WIDTH
add hl, de
ld b, $f
-.asm_1dc20a
+.column_loop
ld [hl], $37
add hl, de
dec b
- jr nz, .asm_1dc20a
+ jr nz, .column_loop
ld [hl], $3a
ret
; 1dc213
-Function1dc213: ; 1dc213
+PrintPage2: ; 1dc213
ld hl, wca90
ld bc, $a0
ld a, " "
@@ -24482,11 +23001,11 @@ Function1dc213: ; 1dc213
ld hl, wca90
ld a, $36
ld b, $6
- call Function1dc26a
+ call .FillColumn
ld hl, wcaa3
ld a, $37
ld b, $6
- call Function1dc26a
+ call .FillColumn
ld hl, wcb08
ld [hl], $38
inc hl
@@ -24504,8 +23023,8 @@ Function1dc213: ; 1dc213
push af
ld a, [wd265]
ld b, a
- ld c, $2
- callba Function44355
+ ld c, 2 ; get page 2
+ callba GetDexEntryPagePointer
pop af
ld hl, wcaa5
ld a, b
@@ -24513,14 +23032,14 @@ Function1dc213: ; 1dc213
ret
; 1dc26a
-Function1dc26a: ; 1dc26a
+.FillColumn: ; 1dc26a
push de
ld de, SCREEN_WIDTH
-.asm_1dc26e
+.column_loop
ld [hl], a
add hl, de
dec b
- jr nz, .asm_1dc26e
+ jr nz, .column_loop
pop de
ret
; 1dc275
@@ -24866,7 +23385,7 @@ String_PM: db "PM@" ; 1dd6ff
INCLUDE "engine/diploma.asm"
-Function1ddf1c: ; 1ddf1c
+LoadSGBPokedexGFX: ; 1ddf1c
ld hl, LZ_1ddf33
ld de, VTiles2 tile $31
call Decompress
@@ -24882,21 +23401,21 @@ Function1ddf26: ; 1ddf26 (77:5f26)
; 1ddf33 (77:5f33)
LZ_1ddf33: ; 1ddf33
-INCBIN "gfx/unknown/1ddf33.2bpp.lz"
+INCBIN "gfx/pokedex/sgb.2bpp.lz"
; 1de0d7
-Function1de0d7: ; 1de0d7
- ld hl, LZ_1de0e1
+LoadQuestionMarkPic: ; 1de0d7
+ ld hl, .QuestionMarkLZ
ld de, sScratch
call Decompress
ret
; 1de0e1
-LZ_1de0e1: ; 1de0e1
-INCBIN "gfx/unknown/1de0e1.2bpp.lz"
+.QuestionMarkLZ: ; 1de0e1
+INCBIN "gfx/pics/questionmark/front.2bpp.lz"
; 1de171
-Function1de171: ; 1de171 (77:6171)
+DrawPokedexListWindow: ; 1de171 (77:6171)
ld a, $32
hlcoord 0, 17
ld bc, 12
@@ -24906,46 +23425,49 @@ Function1de171: ; 1de171 (77:6171)
call ClearBox
ld a, $34
hlcoord 0, 0
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 16
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 5, 0
ld [hl], $3f
hlcoord 5, 16
ld [hl], $40
- ld a, [wc7d4]
- cp $1
- jr z, .asm_1de1bf
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
+ jr z, .OldMode
+; scroll bar
hlcoord 11, 0
ld [hl], $50
ld a, $51
hlcoord 11, 1
ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $52
- jr .asm_1de1d0
-.asm_1de1bf
+ jr .Done
+
+.OldMode
+; no scroll bar
hlcoord 11, 0
ld [hl], $66
ld a, $67
hlcoord 11, 1
ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
-.asm_1de1d0
+.Done
ret
-Function1de1d1: ; 1de1d1 (77:61d1)
+DrawPokedexSearchResultsWindow: ; 1de1d1 (77:61d1)
ld a, $34
hlcoord 0, 0
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 10
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 5, 0
ld [hl], $3f
@@ -24956,35 +23478,36 @@ Function1de1d1: ; 1de1d1 (77:61d1)
ld a, $67
hlcoord 11, 1
ld b, SCREEN_HEIGHT / 2
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
ld a, $34
hlcoord 0, 11
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 17
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 11, 11
ld [hl], $66
ld a, $67
hlcoord 11, 12
ld b, 5
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
hlcoord 0, 12
lb bc, 5, 11
call ClearBox
- ld de, String_1de23c
+ ld de, .esults_D
hlcoord 0, 12
call PlaceString
ret
; 1de23c (77:623c)
-String_1de23c: ; 1de23c
-; At a glance, this is less coherent in the Japanese charset.
+.esults_D: ; 1de23c
+; (SEARCH R)
db "ESULTS<NEXT>"
+; (### FOUN)
next "D!@"
; 1de247
@@ -25003,15 +23526,15 @@ Function1de247: ; 1de247
ld [hl], $66
hlcoord 19, 1
ld a, $67
- ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ ld b, 15
+ call Bank77_FillColumn
ld [hl], $68
hlcoord 19, 17
ld [hl], $3c
xor a
ld b, SCREEN_HEIGHT
hlcoord 19, 0, AttrMap
- call Function1de27f
+ call Bank77_FillColumn
call Function3200
pop hl
ld a, l
@@ -25021,7 +23544,7 @@ Function1de247: ; 1de247
ret
; 1de27f
-Function1de27f: ; 1de27f
+Bank77_FillColumn: ; 1de27f
push de
ld de, SCREEN_WIDTH
.loop