summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/anim_hp_bar.asm80
-rw-r--r--engine/battle_start.asm22
-rwxr-xr-xengine/billspc.asm69
-rwxr-xr-xengine/breeding/egg.asm20
-rwxr-xr-xengine/buy_sell_toss.asm2
-rwxr-xr-xengine/card_flip.asm60
-rwxr-xr-xengine/clock_reset.asm2
-rw-r--r--engine/color.asm271
-rw-r--r--engine/credits.asm16
-rwxr-xr-xengine/crystal_intro.asm72
-rwxr-xr-xengine/debug.asm41
-rwxr-xr-xengine/delete_save_change_clock.asm298
-rw-r--r--engine/diploma.asm42
-rwxr-xr-xengine/dummy_game.asm2
-rw-r--r--engine/events.asm18
-rw-r--r--engine/events_2.asm16
-rwxr-xr-xengine/events_3.asm41
-rwxr-xr-xengine/evolution_animation.asm53
-rwxr-xr-xengine/evolve.asm25
-rw-r--r--engine/facings.asm128
-rw-r--r--engine/fish.asm10
-rw-r--r--engine/fruit_trees.asm6
-rwxr-xr-xengine/healmachineanim.asm7
-rwxr-xr-xengine/intro_menu.asm30
-rw-r--r--engine/landmarks.asm6
-rwxr-xr-xengine/link.asm211
-rwxr-xr-xengine/link_trade.asm8
-rwxr-xr-xengine/main_menu.asm4
-rwxr-xr-xengine/map_object_action.asm118
-rw-r--r--engine/map_objects.asm66
-rw-r--r--engine/map_setup.asm10
-rwxr-xr-xengine/mart.asm25
-rwxr-xr-xengine/menu.asm8
-rwxr-xr-xengine/mon_icons.asm27
-rwxr-xr-xengine/move_mon.asm30
-rwxr-xr-xengine/move_mon_wo_mail.asm133
-rw-r--r--engine/movement.asm10
-rwxr-xr-xengine/mysterygift.asm178
-rwxr-xr-xengine/mysterygift2.asm2
-rwxr-xr-xengine/namingscreen.asm28
-rwxr-xr-xengine/npc_movement.asm4
-rwxr-xr-xengine/npctrade.asm6
-rwxr-xr-xengine/options_menu.asm11
-rwxr-xr-xengine/overworld.asm23
-rw-r--r--engine/pack.asm6
-rw-r--r--engine/party_menu.asm31
-rw-r--r--engine/phone.asm16
-rwxr-xr-xengine/player_movement.asm100
-rwxr-xr-xengine/player_object.asm26
-rwxr-xr-xengine/player_step.asm10
-rw-r--r--engine/pokedex.asm13
-rwxr-xr-xengine/pokegear.asm4
-rw-r--r--engine/predef.asm14
-rwxr-xr-xengine/printer.asm1253
-rwxr-xr-xengine/printer/serial.asm645
-rw-r--r--engine/radio.asm10
-rwxr-xr-xengine/rtc.asm3
-rw-r--r--engine/save.asm87
-rw-r--r--engine/scripting.asm678
-rwxr-xr-xengine/search.asm4
-rwxr-xr-xengine/search2.asm134
-rwxr-xr-xengine/selectmenu.asm6
-rwxr-xr-xengine/slot_machine.asm36
-rw-r--r--engine/specials.asm8
-rwxr-xr-xengine/sprite_anims.asm56
-rwxr-xr-xengine/sprites.asm24
-rwxr-xr-xengine/startmenu.asm64
-rwxr-xr-xengine/stats_screen.asm31
-rw-r--r--engine/std_scripts.asm8
-rwxr-xr-xengine/switch_items.asm3
-rwxr-xr-xengine/time.asm11
-rwxr-xr-xengine/time_capsule/conversion.asm5
-rw-r--r--engine/timeofdaypals.asm18
-rwxr-xr-xengine/timeset.asm18
-rw-r--r--engine/title.asm11
-rwxr-xr-xengine/tmhm2.asm9
-rwxr-xr-xengine/trade/animation.asm668
-rwxr-xr-xengine/trainer_card.asm4
-rwxr-xr-xengine/unown_puzzle.asm8
-rwxr-xr-xengine/unowndex.asm3
-rwxr-xr-xengine/variables.asm4
-rwxr-xr-xengine/warp_connection.asm71
-rwxr-xr-xengine/wildmons.asm30
83 files changed, 3414 insertions, 2955 deletions
diff --git a/engine/anim_hp_bar.asm b/engine/anim_hp_bar.asm
index c8a543ba1..6272ff7ea 100755
--- a/engine/anim_hp_bar.asm
+++ b/engine/anim_hp_bar.asm
@@ -41,10 +41,10 @@ _AnimateHPBar: ; d627
; d65f
.IsMaximumMoreThan48Pixels: ; d65f
- ld a, [Buffer2]
+ ld a, [wCurHPAnimMaxHP + 1]
and a
jr nz, .player
- ld a, [Buffer1]
+ ld a, [wCurHPAnimMaxHP]
cp 6 * 8
jr nc, .player
and a
@@ -56,11 +56,8 @@ _AnimateHPBar: ; d627
; d670
.ComputePixels: ; d670
-; Buffer1-2: Max HP
-; Buffer3-4: Old HP
-; Buffer5-6: New HP
push hl
- ld hl, Buffer1
+ ld hl, wCurHPAnimMaxHP
ld a, [hli]
ld e, a
ld a, [hli]
@@ -74,20 +71,20 @@ _AnimateHPBar: ; d627
ld a, e
ld [wCurHPBarPixels], a
- ld a, [Buffer5]
+ ld a, [wCurHPAnimNewHP]
ld c, a
- ld a, [Buffer6]
+ ld a, [wCurHPAnimNewHP + 1]
ld b, a
- ld a, [Buffer1]
+ ld a, [wCurHPAnimMaxHP]
ld e, a
- ld a, [Buffer2]
+ ld a, [wCurHPAnimMaxHP + 1]
ld d, a
call ComputeHPBarPixels
ld a, e
ld [wNewHPBarPixels], a
push hl
- ld hl, Buffer3
+ ld hl, wCurHPAnimOldHP
ld a, [hli]
ld c, a
ld a, [hli]
@@ -104,18 +101,18 @@ _AnimateHPBar: ; d627
sbc b
ld d, a
jr c, .negative
- ld a, [Buffer3]
- ld [wd1f5], a
- ld a, [Buffer5]
- ld [wd1f6], a
+ ld a, [wCurHPAnimOldHP]
+ ld [wCurHPAnimLowHP], a
+ ld a, [wCurHPAnimNewHP]
+ ld [wCurHPAnimHighHP], a
ld bc, 1
jr .got_direction
.negative
- ld a, [Buffer3]
- ld [wd1f6], a
- ld a, [Buffer5]
- ld [wd1f5], a
+ ld a, [wCurHPAnimOldHP]
+ ld [wCurHPAnimHighHP], a
+ ld a, [wCurHPAnimNewHP]
+ ld [wCurHPAnimLowHP], a
ld a, e
xor $ff
inc a
@@ -126,9 +123,9 @@ _AnimateHPBar: ; d627
ld bc, -1
.got_direction
ld a, d
- ld [wd1f3], a
+ ld [wCurHPAnimDeltaHP], a
ld a, e
- ld [wd1f4], a
+ ld [wCurHPAnimDeltaHP + 1], a
ret
; d6e2
@@ -151,7 +148,7 @@ ShortAnim_UpdateVariables: ; d6e2
LongAnim_UpdateVariables: ; d6f5
.loop
- ld hl, Buffer3
+ ld hl, wCurHPAnimOldHP
ld a, [hli]
ld e, a
ld a, [hli]
@@ -171,13 +168,13 @@ LongAnim_UpdateVariables: ; d6f5
ld h, d
add hl, bc
ld a, l
- ld [Buffer3], a
+ ld [wCurHPAnimOldHP], a
ld a, h
- ld [Buffer4], a
+ ld [wCurHPAnimOldHP + 1], a
push hl
push de
push bc
- ld hl, Buffer1
+ ld hl, wCurHPAnimMaxHP
ld a, [hli]
ld e, a
ld a, [hli]
@@ -222,13 +219,13 @@ ShortHPBarAnim_UpdateTiles: ; d730
LongHPBarAnim_UpdateTiles: ; d749
call HPBarAnim_UpdateHPRemaining
- ld a, [Buffer3]
+ ld a, [wCurHPAnimOldHP]
ld c, a
- ld a, [Buffer4]
+ ld a, [wCurHPAnimOldHP + 1]
ld b, a
- ld a, [Buffer1]
+ ld a, [wCurHPAnimMaxHP]
ld e, a
- ld a, [Buffer2]
+ ld a, [wCurHPAnimMaxHP + 1]
ld d, a
call ComputeHPBarPixels
ld c, e
@@ -273,14 +270,13 @@ HPBarAnim_UpdateHPRemaining: ; d784
push hl
add hl, de
ld a, " "
-rept 2
ld [hli], a
-endr
+ ld [hli], a
ld [hld], a
dec hl
- ld a, [Buffer3]
+ ld a, [wCurHPAnimOldHP]
ld [StringBuffer2 + 1], a
- ld a, [Buffer4]
+ ld a, [wCurHPAnimOldHP + 1]
ld [StringBuffer2], a
ld de, StringBuffer2
lb bc, 2, 3
@@ -293,9 +289,9 @@ HPBarAnim_PaletteUpdate: ; d7b4
ld a, [hCGB]
and a
ret z
- ld hl, wd1f0
+ ld hl, wCurHPAnimPal
call SetHPPal
- ld a, [wd1f0]
+ ld a, [wCurHPAnimPal]
ld c, a
callba ApplyHPBarPals
ret
@@ -376,7 +372,7 @@ HPBarAnim_BGMapUpdate: ; d7c9
; d839
ShortHPBar_CalcPixelFrame: ; d839
- ld a, [Buffer1]
+ ld a, [wCurHPAnimMaxHP]
ld c, a
ld b, 0
ld hl, 0
@@ -412,24 +408,24 @@ ShortHPBar_CalcPixelFrame: ; d839
jr c, .no_carry
inc b
.no_carry
- ld a, [wd1f5]
+ ld a, [wCurHPAnimLowHP]
cp b
jr nc, .finish
- ld a, [wd1f6]
+ ld a, [wCurHPAnimHighHP]
cp b
jr c, .finish
ld a, b
.finish
- ld [Buffer3], a
+ ld [wCurHPAnimOldHP], a
ret
.return_zero
xor a
- ld [Buffer3], a
+ ld [wCurHPAnimOldHP], a
ret
.return_max
- ld a, [Buffer1]
- ld [Buffer3], a
+ ld a, [wCurHPAnimMaxHP]
+ ld [wCurHPAnimOldHP], a
ret
; d88c
diff --git a/engine/battle_start.asm b/engine/battle_start.asm
index d2ead2757..627519daa 100644
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -39,9 +39,9 @@ Predef_StartBattle: ; 8c20f
call DmgToCgbBGPals
call DelayFrame
xor a
- ld [hFFC6], a
- ld [hFFC7], a
- ld [hFFC8], a
+ ld [hLCDCPointer], a
+ ld [hLYOverrideStart], a
+ ld [hLYOverrideEnd], a
ld [hSCY], a
ld a, $1
@@ -56,7 +56,7 @@ Predef_StartBattle: ; 8c20f
ld a, [wLinkMode]
cp LINK_MOBILE
jr z, .mobile
- callba Function6454
+ callba ReanchorBGMap_NoOAMUpdate
call UpdateSprites
call DelayFrame
call .NonMobile_LoadPokeballTiles
@@ -84,7 +84,7 @@ Predef_StartBattle: ; 8c20f
.NonMobile_LoadPokeballTiles: ; 8c2a0
call LoadTrainerBattlePokeballTiles
hlbgcoord 0, 0
- call Function8c2cf
+ call ConvertTrainerBattlePokeballTilesTo2bpp
ret
; 8c2aa
@@ -113,7 +113,7 @@ LoadTrainerBattlePokeballTiles:
ret
; 8c2cf
-Function8c2cf: ; 8c2cf
+ConvertTrainerBattlePokeballTilesTo2bpp: ; 8c2cf
ld a, [rSVBK]
push af
ld a, $6
@@ -132,7 +132,7 @@ Function8c2cf: ; 8c2cf
pop hl
ld de, wDecompressScratch
- ld b, BANK(Function8c2cf) ; BANK(@)
+ ld b, BANK(ConvertTrainerBattlePokeballTilesTo2bpp) ; BANK(@)
ld c, $28
call Request2bpp
pop af
@@ -302,12 +302,12 @@ StartTrainerBattle_SetUpForWavyOutro: ; 8c3e8 (23:43e8)
call StartTrainerBattle_NextScene
- ld a, $43
- ld [hFFC6], a
+ ld a, rSCX - $ff00
+ ld [hLCDCPointer], a
xor a
- ld [hFFC7], a
+ ld [hLYOverrideStart], a
ld a, $90
- ld [hFFC8], a
+ ld [hLYOverrideEnd], a
xor a
ld [wcf64], a
ld [wcf65], a
diff --git a/engine/billspc.asm b/engine/billspc.asm
index 5e9e7393b..b9b51f850 100755
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -64,7 +64,7 @@ _DepositPKMN: ; e2391 (38:6391)
call PCMonInfo
ld a, $ff
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
call WaitBGMap
call BillsPC_UpdateSelectionCursor
@@ -120,7 +120,7 @@ _DepositPKMN: ; e2391 (38:6391)
call ClearSprites
call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
ld de, PCString_WhatsUp
call BillsPC_PlaceString
@@ -142,9 +142,8 @@ _DepositPKMN: ; e2391 (38:6391)
ld e, a
ld d, 0
ld hl, BillsPCDepositJumptable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -182,7 +181,7 @@ BillsPCDepositFuncStats: ; e24c8 (38:64c8)
call PCMonInfo
call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
ret
@@ -334,7 +333,7 @@ _WithdrawPKMN: ; e2583 (38:6583)
call PCMonInfo
ld a, $ff
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
call WaitBGMap
call BillsPC_UpdateSelectionCursor
@@ -389,7 +388,7 @@ _WithdrawPKMN: ; e2583 (38:6583)
call ClearSprites
call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
ld de, PCString_WhatsUp
call BillsPC_PlaceString
@@ -411,9 +410,8 @@ BillsPC_Withdraw: ; e2675 (38:6675)
ld e, a
ld d, 0
ld hl, .dw
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -449,7 +447,7 @@ endr
call PCMonInfo
call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
ret
@@ -586,7 +584,7 @@ _MovePKMNWithoutMail: ; e2759
call PCMonInfo
ld a, $ff
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
call WaitBGMap
call BillsPC_UpdateSelectionCursor
@@ -652,7 +650,7 @@ _MovePKMNWithoutMail: ; e2759
call ClearSprites
call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
ld de, PCString_WhatsUp
call BillsPC_PlaceString
@@ -675,9 +673,8 @@ _MovePKMNWithoutMail: ; e2759
ld e, a
ld d, 0
ld hl, .Jumptable2
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -711,7 +708,7 @@ endr
call PCMonInfo
call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, SCGB_17
+ ld a, SCGB_BILLS_PC
call BillsPC_ApplyPalettes
ret
; e28bd
@@ -1162,10 +1159,10 @@ BillsPC_LoadMonStats: ; e2b6d (38:6b6d)
add [hl]
ld e, a
ld d, $0
- ld hl, wBillsPCPokemonList + 1
-rept 3
+ ld hl, wBillsPCPokemonList + 1 ; box number
+ add hl, de
+ add hl, de
add hl, de
-endr
ld a, [hl]
and a
jr z, .party
@@ -1277,9 +1274,9 @@ BillsPC_RefreshTextboxes: ; e2c2c (38:6c2c)
ld e, a
ld d, 0
ld hl, wBillsPCPokemonList
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ld e, l
ld d, h
hlcoord 9, 4
@@ -1293,9 +1290,9 @@ endr
ld de, 2 * SCREEN_WIDTH
add hl, de
pop de
-rept 3
inc de
-endr
+ inc de
+ inc de
pop af
dec a
jr nz, .loop
@@ -1496,9 +1493,9 @@ BillsPC_GetSelectedPokemonSpecies: ; e2def (38:6def)
ld e, a
ld d, $0
ld hl, wBillsPCPokemonList
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ld a, [hl]
ret
@@ -2010,9 +2007,8 @@ MovePKMNWitoutMail_InsertMon: ; e31e7
.moving_to_box
ld hl, .Jumptable
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
@@ -2024,7 +2020,7 @@ endr
.dw_return ; e322a
pop af
ld e, a
- callba Function14ad5
+ callba MovePkmnWOMail_InsertMon_SaveGame
ret
; e3233
@@ -2059,10 +2055,10 @@ endr
.PartyToBox: ; e3267
call .CopyFromParty
ld a, $1
- ld [wc2cd], a
+ ld [wGameLogicPaused], a
callba SaveGameData
xor a
- ld [wc2cd], a
+ ld [wGameLogicPaused], a
call .CopyToBox
ret
; e327d
@@ -2143,7 +2139,7 @@ endr
ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
- callba Function51322
+ callba InsertPokemonIntoBox
ret
; e3316
@@ -2172,7 +2168,7 @@ endr
ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
- callba Function5138b
+ callba InsertPokemonIntoParty
ret
; e3357
@@ -2215,9 +2211,9 @@ GetBoxPointer: ; e3396 (38:7396)
ld c, b
ld b, 0
ld hl, .boxes
-rept 3
add hl, bc
-endr
+ add hl, bc
+ add hl, bc
ld a, [hli]
ld b, a
ld a, [hli]
@@ -2256,9 +2252,8 @@ BillsPC_ApplyPalettes: ; e33d0 (38:73d0)
BillsPC_Jumptable: ; e33df (38:73df)
ld e, a
ld d, $0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -2434,9 +2429,9 @@ GetBoxCount: ; e366c (38:766c)
ld c, a
ld b, 0
ld hl, .boxbanks
-rept 3
add hl, bc
-endr
+ add hl, bc
+ add hl, bc
ld a, [hli]
ld b, a
call GetSRAMBank
diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm
index b6f41743e..326faaa6c 100755
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -8,7 +8,7 @@ CheckBreedmonCompatibility: ; 16e1d
ld [TempMonDVs], a
ld a, [wBreedMon1DVs + 1]
ld [TempMonDVs + 1], a
- ld a, BREEDMON
+ ld a, TEMPMON
ld [MonType], a
predef GetGender
jr c, .genderless
@@ -88,7 +88,7 @@ CheckBreedmonCompatibility: ; 16e1d
.CheckDVs: ; 16ebc (5:6ebc)
; If Defense DVs match and the lower 3 bits of the Special DVs match,
-; maximize the chances of spawning an egg regardless of species.
+; avoid breeding
ld a, [wBreedMon1DVs]
and %1111
ld b, a
@@ -232,7 +232,7 @@ HatchEggs: ; 16f70 (5:6f70)
push de
callba SetEggMonCaughtData
- callba MobileFn_10608d
+ callba TrainerRankings_EggsHatched
ld a, [CurPartyMon]
ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
ld bc, PARTYMON_STRUCT_LENGTH
@@ -442,9 +442,8 @@ GLOBAL EggMoves
ld c, a
ld b, 0
ld hl, EggMovePointers
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, BANK(EggMovePointers)
call GetFarHalfword
.loop
@@ -477,9 +476,8 @@ endr
ld c, a
ld b, 0
ld hl, EvosAttacksPointers
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, BANK(EvosAttacksPointers)
call GetFarHalfword
.loop3
@@ -590,7 +588,7 @@ GetHeritableMoves: ; 17197
ld [TempMonDVs], a
ld a, [wBreedMon2DVs + 1]
ld [TempMonDVs + 1], a
- ld a, BREEDMON
+ ld a, TEMPMON
ld [MonType], a
predef GetGender
jr c, .inherit_mon2_moves
@@ -606,7 +604,7 @@ GetHeritableMoves: ; 17197
ld [TempMonDVs], a
ld a, [wBreedMon1DVs + 1]
ld [TempMonDVs + 1], a
- ld a, BREEDMON
+ ld a, TEMPMON
ld [MonType], a
predef GetGender
jr c, .inherit_mon1_moves
@@ -788,7 +786,7 @@ EggHatch_AnimationSequence: ; 1728f (5:728f)
Hatch_LoadFrontpicPal: ; 17363 (5:7363)
ld [PlayerHPPal], a
- ld b, SCGB_0B
+ ld b, SCGB_EVOLUTION
ld c, $0
jp GetSGBLayout
@@ -849,7 +847,7 @@ Hatch_InitShellFragments: ; 173b3 (5:73b3)
add [hl]
ld [hl], a
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld [hl], d
diff --git a/engine/buy_sell_toss.asm b/engine/buy_sell_toss.asm
index 7f2ad2727..bd18cc83a 100755
--- a/engine/buy_sell_toss.asm
+++ b/engine/buy_sell_toss.asm
@@ -48,7 +48,7 @@ Toss_Sell_Loop: ; 24ff9
; 2500e
BuySellToss_InterpretJoypad: ; 2500e
- call Function354b ; get joypad
+ call JoyTextDelay_ForcehJoyDown ; get joypad
bit B_BUTTON_F, c
jr nz, .b
bit A_BUTTON_F, c
diff --git a/engine/card_flip.asm b/engine/card_flip.asm
index 2c334fc25..0479e8248 100755
--- a/engine/card_flip.asm
+++ b/engine/card_flip.asm
@@ -71,9 +71,8 @@ _CardFlip: ; e00ee (38:40ee)
ld e, a
ld d, 0
ld hl, .Jumptable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -276,9 +275,8 @@ endr
ld e, a
ld d, 0
ld hl, wDeck
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [wCardFlipWhichCard]
ld e, a
add hl, de
@@ -442,9 +440,8 @@ CardFlip_DisplayCardFaceUp: ; e03ec
ld e, a
ld d, 0
ld hl, .Deck
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld e, a
ld d, [hl]
@@ -675,9 +672,8 @@ CardFlip_BlankDiscardedCardSlot: ; e0534
and a
jr nz, .discarded2
hlcoord 13, 3
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $36
ld bc, SCREEN_WIDTH
add hl, bc
@@ -686,9 +682,8 @@ endr
.discarded2
hlcoord 13, 3
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $36
ld bc, SCREEN_WIDTH
add hl, bc
@@ -703,9 +698,8 @@ endr
and a
jr nz, .discarded1
hlcoord 13, 4
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $3b
ld bc, SCREEN_WIDTH
add hl, bc
@@ -714,9 +708,8 @@ endr
.discarded1
hlcoord 13, 4
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $3d
ld bc, SCREEN_WIDTH
add hl, bc
@@ -731,9 +724,8 @@ endr
and a
jr nz, .discarded4
hlcoord 13, 6
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $36
ld bc, SCREEN_WIDTH
add hl, bc
@@ -742,9 +734,8 @@ endr
.discarded4
hlcoord 13, 6
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $36
ld bc, SCREEN_WIDTH
add hl, bc
@@ -759,9 +750,8 @@ endr
and a
jr nz, .discarded3
hlcoord 13, 7
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $3c
ld bc, SCREEN_WIDTH
add hl, bc
@@ -770,9 +760,8 @@ endr
.discarded3
hlcoord 13, 7
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $3d
ld bc, SCREEN_WIDTH
add hl, bc
@@ -787,9 +776,8 @@ endr
and a
jr nz, .discarded6
hlcoord 13, 9
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $36
ld bc, SCREEN_WIDTH
add hl, bc
@@ -798,9 +786,8 @@ endr
.discarded6
hlcoord 13, 9
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $36
ld bc, SCREEN_WIDTH
add hl, bc
@@ -815,9 +802,8 @@ endr
and a
jr nz, .discarded5
hlcoord 13, 10
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $3c
ld bc, SCREEN_WIDTH
add hl, bc
@@ -826,9 +812,8 @@ endr
.discarded5
hlcoord 13, 10
-rept 2
add hl, bc
-endr
+ add hl, bc
ld [hl], $3d
ld bc, SCREEN_WIDTH
add hl, bc
@@ -1296,9 +1281,8 @@ ChooseCard_HandleJoypad: ; e089c
ld [hl], a
cp $3
jr c, .left_to_number_gp
-rept 2
dec [hl]
-endr
+ dec [hl]
jp .play_sound
.left_to_number_gp
@@ -1326,9 +1310,8 @@ endr
ld [hl], a
cp $4
ret nc
-rept 2
inc [hl]
-endr
+ inc [hl]
jr .play_sound
.d_up ; e090a
@@ -1357,9 +1340,8 @@ endr
ld [hl], a
cp $3
jr c, .up_to_mon_group
-rept 2
dec [hl]
-endr
+ dec [hl]
jr .play_sound
.up_to_mon_group
@@ -1387,9 +1369,8 @@ endr
ld [hl], a
cp $6
ret nc
-rept 2
inc [hl]
-endr
+ inc [hl]
.play_sound ; e0959
ld de, SFX_POKEBALLS_PLACED_ON_TABLE
@@ -1408,9 +1389,8 @@ CardFlip_UpdateCursorOAM: ; e0960
.skip
call CollapseCursorPosition
-rept 2
add hl, hl
-endr
+ add hl, hl
ld de, .OAMData
add hl, de
ld a, [hli]
diff --git a/engine/clock_reset.asm b/engine/clock_reset.asm
index 546cc8c13..4e6f588e9 100755
--- a/engine/clock_reset.asm
+++ b/engine/clock_reset.asm
@@ -121,7 +121,7 @@ RestartClock: ; 20021 (8:4021)
; 0x200ba
.joy_loop
- call Function354b
+ call JoyTextDelay_ForcehJoyDown
ld c, a
push af
call .PrintTime
diff --git a/engine/color.asm b/engine/color.asm
index faf102867..3bc431d22 100644
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -79,6 +79,7 @@ CheckContestMon:
ret
Function8aa4:
+; XXX
push de
push bc
ld hl, PalPacket_9ce6
@@ -96,9 +97,9 @@ Function8aa4:
ld a, d
ld [wSGBPals + 6], a
ld hl, wSGBPals
- call Function9809
+ call PushSGBPals_
ld hl, BlkPacket_9a86
- call Function9809
+ call PushSGBPals_
ret
InitPartyMenuPalettes:
@@ -138,6 +139,7 @@ Function8b07:
; Unreferenced
call CheckCGB
ret z
+; CGB only
ld hl, .BGPal
ld de, UnknBGPals
ld bc, 1 palettes
@@ -175,16 +177,17 @@ Function8b3f:
and a
ret z
ld hl, BlkPacket_9a86
- jp Function9809
+ jp PushSGBPals_
Function8b4d:
+; XXX
call CheckCGB
jr nz, .cgb
ld a, [hSGB]
and a
ret z
ld hl, PalPacket_9c26
- jp Function9809
+ jp PushSGBPals_
.cgb
ld de, UnknOBPals
@@ -193,13 +196,14 @@ Function8b4d:
jp LoadHLPaletteIntoDE
Function8b67:
+; XXX
call CheckCGB
jr nz, .cgb
ld a, [hSGB]
and a
ret z
ld hl, PalPacket_9c36
- jp Function9809
+ jp PushSGBPals_
.cgb
ld de, UnknOBPals
@@ -208,8 +212,9 @@ Function8b67:
jp LoadHLPaletteIntoDE
Function8b81:
+; XXX
call CheckCGB
- jr nz, .asm_8bb2
+ jr nz, .cgb
ld a, [hSGB]
and a
ret z
@@ -230,45 +235,45 @@ Function8b81:
ld a, [hl]
ld [wSGBPals + 6], a
ld hl, wSGBPals
- jp Function9809
+ jp PushSGBPals_
-.asm_8bb2
+.cgb
ld de, UnknOBPals
ld a, c
call GetMonPalettePointer_
call LoadPalette_White_Col1_Col2_Black
ret
-Function8bbd:
+LoadTrainerClassPaletteAsNthBGPal:
ld a, [TrainerClass]
call GetTrainerPalettePointer
ld a, e
- jr asm_8bd7
+ jr got_palette_pointer_8bd7
-Function8bc6:
+LoadMonPaletteAsNthBGPal:
ld a, [CurPartySpecies]
call GetMonPalettePointer
ld a, e
bit 7, a
- jr z, .asm_8bd7
+ jr z, got_palette_pointer_8bd7
and $7f
-rept 4
inc hl
-endr
-.asm_8bd7
+ inc hl
+ inc hl
+ inc hl
-asm_8bd7
+got_palette_pointer_8bd7
push hl
ld hl, UnknBGPals
- ld de, $8
-.asm_8bde
+ ld de, 1 palettes
+.loop
and a
- jr z, .asm_8be5
+ jr z, .got_addr
add hl, de
dec a
- jr .asm_8bde
+ jr .loop
-.asm_8be5
+.got_addr
ld e, l
ld d, h
pop hl
@@ -276,30 +281,31 @@ asm_8bd7
ret
Function8bec:
+; XXX
ld a, [hCGB]
and a
- jr nz, .asm_8bf7
+ jr nz, .cgb
ld hl, PlayerLightScreenCount
- jp Function9809
+ jp PushSGBPals_
-.asm_8bf7
- ld a, [EnemyLightScreenCount]
+.cgb
+ ld a, [EnemyLightScreenCount] ; col
ld c, a
- ld a, [EnemyReflectCount]
+ ld a, [EnemyReflectCount] ; row
hlcoord 0, 0, AttrMap
- ld de, $14
-.asm_8c04
+ ld de, SCREEN_WIDTH
+.loop
and a
- jr z, .asm_8c0b
+ jr z, .done
add hl, de
dec a
- jr .asm_8c04
+ jr .loop
-.asm_8c0b
+.done
ld b, $0
add hl, bc
lb bc, 6, 4
- ld a, [EnemySafeguardCount]
+ ld a, [EnemySafeguardCount] ; value
and $3
call FillBoxCGB
call LoadEDTile
@@ -401,16 +407,16 @@ LoadStatsScreenPals:
ld a, $1
ret
-Function8cb4:
+LoadMailPalettes:
ld l, e
ld h, 0
-rept 3
add hl, hl
-endr
- ld de, Palettes_8d05
+ add hl, hl
+ add hl, hl
+ ld de, .MailPals
add hl, de
call CheckCGB
- jr nz, .asm_8cf0
+ jr nz, .cgb
push hl
ld hl, PalPacket_9ce6
ld de, wSGBPals
@@ -428,12 +434,12 @@ endr
ld a, [hli]
ld [wSGBPals + 6], a
ld hl, wSGBPals
- call Function9809
+ call PushSGBPals_
ld hl, BlkPacket_9a86
- call Function9809
+ call PushSGBPals_
ret
-.asm_8cf0
+.cgb
ld de, UnknBGPals
ld bc, 1 palettes
ld a, $5
@@ -443,7 +449,7 @@ endr
call ApplyAttrMap
ret
-Palettes_8d05:
+.MailPals:
RGB 20, 31, 11
RGB 31, 19, 00
RGB 31, 10, 09
@@ -497,7 +503,8 @@ Palettes_8d05:
INCLUDE "predef/cgb.asm"
Function95f0:
- ld hl, Palette_9608
+; XXX
+ ld hl, .Palette
ld de, UnknBGPals
ld bc, 8
ld a, $5
@@ -507,7 +514,7 @@ Function95f0:
call ApplyAttrMap
ret
-Palette_9608:
+.Palette:
RGB 31, 31, 31
RGB 09, 31, 31
RGB 10, 12, 31
@@ -534,9 +541,9 @@ CopyPalettes:
GetPredefPal:
ld l, a
ld h, $0
-rept 3 ; multiply by 8
add hl, hl
-endr
+ add hl, hl
+ add hl, hl
ld bc, Palettes_9df6
add hl, bc
ret
@@ -604,30 +611,36 @@ FillBoxCGB:
jr nz, .row
ret
-Function9673:
+ResetBGPals:
push af
push bc
push de
push hl
+
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
+
ld hl, UnknBGPals
ld c, 8
.loop
ld a, $ff
-rept 4
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
xor a
-rept 4
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
dec c
jr nz, .loop
+
pop af
ld [rSVBK], a
+
pop hl
pop de
pop bc
@@ -769,8 +782,8 @@ GetFrontpicPalettePointer:
GetTrainerPalettePointer:
ld l, a
ld h, 0
- add hl,hl
- add hl,hl
+ add hl, hl
+ add hl, hl
ld bc, TrainerPalettes
add hl, bc
ret
@@ -830,19 +843,20 @@ Palettes_979c:
RGB 00, 00, 00
Function97cc:
+; XXX
call CheckCGB
ret z
ld a, $90
ld [rOBPI], a
ld a, $1c
call GetPredefPal
- call Function97e5
+ call .PushPalette
ld a, $21
call GetPredefPal
- call Function97e5
+ call .PushPalette
ret
-Function97e5:
+.PushPalette:
ld c, 1 palettes
.loop
ld a, [hli]
@@ -854,9 +868,9 @@ Function97e5:
GetMonPalettePointer:
ld l, a
ld h, $0
-rept 3
add hl, hl
-endr
+ add hl, hl
+ add hl, hl
ld bc, PokemonPalettes
add hl, bc
ret
@@ -874,7 +888,7 @@ rept 4
endr
ret
-Function9809:
+PushSGBPals_:
ld a, [wcfbe]
push af
set 7, a
@@ -924,9 +938,10 @@ PushSGBPals:
jr nz, .loop
ret
-Function9853:
+InitSGBBorder:
call CheckCGB
ret nz
+; SGB/DMG only
di
ld a, [wcfbe]
push af
@@ -935,29 +950,30 @@ Function9853:
xor a
ld [rJOYP], a
ld [hSGB], a
- call Function994a
- jr nc, .asm_988a
+ call PushSGBBorderPalsAndWait
+ jr nc, .skip
ld a, $1
ld [hSGB], a
- call Function98eb
- call Function99b4
+ call _InitSGBBorderPals
+ call SGBBorder_PushBGPals
call SGBDelayCycles
- call Function993f
- call Function992c
+ call SGB_ClearVRAM
+ call PushSGBBorder
call SGBDelayCycles
- call Function993f
+ call SGB_ClearVRAM
ld hl, PalPacket_9d66
call PushSGBPals
-.asm_988a
+.skip
pop af
ld [wcfbe], a
ei
ret
-Function9890::
+InitCGBPals::
call CheckCGB
ret z
+; CGB only
ld a, $1
ld [rVBK], a
ld hl, VTiles0
@@ -1009,7 +1025,7 @@ Function9890::
jr nz, .loop
ret
-Function98eb:
+_InitSGBBorderPals:
ld hl, .PalPacketPointerTable
ld c, 9
.loop
@@ -1038,25 +1054,26 @@ Function98eb:
dw PalPacket_9de6
Function9911:
+; XXX
di
xor a
ld [rJOYP], a
ld hl, PalPacket_9d56
call PushSGBPals
- call Function992c
+ call PushSGBBorder
call SGBDelayCycles
- call Function993f
+ call SGB_ClearVRAM
ld hl, PalPacket_9d66
call PushSGBPals
ei
ret
-Function992c:
+PushSGBBorder:
call .LoadSGBBorderPointers
push de
- call Function9a24
+ call SGBBorder_YetMorePalPushing
pop hl
- call Function99d8
+ call SGBBorder_MorePalPushing
ret
.LoadSGBBorderPointers:
@@ -1064,21 +1081,21 @@ Function992c:
ld de, SGBBorderMap
ret
-Function993f:
+SGB_ClearVRAM:
ld hl, VTiles0
ld bc, $2000
xor a
call ByteFill
ret
-Function994a:
+PushSGBBorderPalsAndWait:
ld hl, PalPacket_9d26
call PushSGBPals
call SGBDelayCycles
ld a, [rJOYP]
and $3
cp $3
- jr nz, .asm_99a6
+ jr nz, .carry
ld a, $20
ld [rJOYP], a
ld a, [rJOYP]
@@ -1098,32 +1115,32 @@ endr
call SGBDelayCycles
ld a, $30
ld [rJOYP], a
-rept 3
ld a, [rJOYP]
-endr
+ ld a, [rJOYP]
+ ld a, [rJOYP]
call SGBDelayCycles
call SGBDelayCycles
ld a, [rJOYP]
and $3
cp $3
- jr nz, .asm_99a6
- call Function99ab
+ jr nz, .carry
+ call .FinalPush
and a
ret
-.asm_99a6
- call Function99ab
+.carry
+ call .FinalPush
scf
ret
-Function99ab:
+.FinalPush:
ld hl, PalPacket_9d16
call PushSGBPals
jp SGBDelayCycles
-Function99b4:
+SGBBorder_PushBGPals:
call DisableLCD
- ld a, $e4
+ ld a, %11100100
ld [rBGP], a
ld hl, Palettes_9df6
ld de, VTiles1
@@ -1138,7 +1155,7 @@ Function99b4:
ld [rBGP], a
ret
-Function99d8:
+SGBBorder_MorePalPushing:
call DisableLCD
ld a, $e4
ld [rBGP], a
@@ -1146,7 +1163,7 @@ Function99d8:
ld bc, 20 tiles
call CopyData
ld b, 18
-.asm_99ea
+.loop
push bc
ld bc, $c
call CopyData
@@ -1156,7 +1173,7 @@ Function99d8:
call CopyData
pop bc
dec b
- jr nz, .asm_99ea
+ jr nz, .loop
ld bc, $140
call CopyData
ld bc, Start
@@ -1172,13 +1189,13 @@ Function99d8:
ld [rBGP], a
ret
-Function9a24:
+SGBBorder_YetMorePalPushing:
call DisableLCD
ld a, %11100100
ld [rBGP], a
ld de, VTiles1
ld b, $80
-.asm_9a30
+.loop
push bc
ld bc, 1 tiles
call CopyData
@@ -1186,7 +1203,7 @@ Function9a24:
call ClearBytes
pop bc
dec b
- jr nz, .asm_9a30
+ jr nz, .loop
call DrawDefaultTiles
ld a, $e3
ld [rLCDC], a
@@ -1198,25 +1215,27 @@ Function9a24:
CopyData: ; 0x9a52
; copy bc bytes of data from hl to de
+.loop
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b
- jr nz, CopyData
+ jr nz, .loop
ret
; 0x9a5b
ClearBytes: ; 0x9a5b
; clear bc bytes of data starting from de
+.loop
xor a
ld [de], a
inc de
dec bc
ld a, c
or b
- jr nz, ClearBytes
+ jr nz, .loop
ret
; 0x9a64
@@ -1729,34 +1748,34 @@ Palettes_9df6:
RGB 31, 31, 31
SGBBorderMap:
- db $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $14,$14, $15,$14, $16,$14, $17,$14, $17,$54, $16,$54, $15,$54, $14,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14
- db $01,$14, $02,$14, $03,$14, $03,$54, $02,$54, $01,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $24,$14, $25,$14, $26,$14, $07,$14, $07,$54, $26,$54, $25,$54, $24,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$54, $01,$14, $02,$14, $03,$14, $03,$54, $02,$54, $01,$54
- db $11,$14, $12,$14, $13,$14, $13,$54, $12,$54, $11,$54, $10,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $24,$14, $34,$14, $35,$14, $35,$54, $34,$54, $33,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $10,$14, $11,$14, $12,$14, $13,$14, $13,$54, $12,$54, $11,$54
- db $21,$14, $22,$14, $23,$14, $23,$54, $22,$54, $21,$54, $20,$54, $07,$14, $08,$14, $09,$14, $0a,$14, $0b,$14, $0c,$14, $0d,$14, $07,$14, $07,$14, $18,$14, $09,$14, $1a,$14, $1b,$14, $0d,$14, $0c,$14, $1c,$14, $29,$14, $07,$14, $20,$14, $21,$14, $22,$14, $23,$14, $23,$54, $22,$54, $21,$54
- db $31,$14, $32,$14, $07,$14, $07,$14, $32,$54, $36,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $38,$10, $27,$10, $32,$14, $07,$54, $07,$54, $32,$54, $31,$54
- db $05,$14, $06,$14, $07,$14, $07,$54, $06,$54, $1f,$10, $37,$10, $06,$14, $07,$14, $07,$54, $06,$54, $05,$54
- db $15,$14, $16,$14, $17,$14, $17,$54, $16,$54, $1f,$10, $37,$10, $16,$14, $17,$14, $17,$54, $16,$54, $15,$54
- db $25,$14, $26,$14, $07,$14, $07,$54, $26,$54, $1f,$10, $37,$10, $26,$14, $07,$14, $07,$54, $26,$54, $25,$54
- db $33,$14, $34,$14, $35,$14, $35,$54, $34,$54, $1f,$10, $37,$10, $34,$14, $35,$14, $35,$54, $34,$54, $33,$54
- db $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14
- db $02,$54, $01,$54, $07,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $07,$14, $01,$14, $02,$14
- db $12,$54, $11,$54, $10,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $10,$14, $11,$14, $12,$14
- db $22,$54, $21,$54, $20,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $20,$14, $21,$14, $22,$14
- db $32,$54, $31,$54, $30,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $30,$14, $31,$14, $32,$14
- db $06,$54, $05,$54, $04,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $04,$14, $05,$14, $06,$14
- db $16,$54, $15,$54, $14,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $14,$14, $15,$14, $16,$14
- db $26,$54, $25,$54, $24,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $24,$14, $25,$14, $26,$14
- db $34,$54, $33,$54, $07,$54, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $07,$14, $33,$14, $34,$14
- db $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $1f,$10, $37,$10, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14
- db $01,$14, $02,$14, $03,$14, $03,$54, $02,$54, $1f,$10, $37,$10, $02,$14, $03,$14, $03,$54, $02,$54, $01,$54
- db $11,$14, $12,$14, $13,$14, $13,$54, $12,$54, $1f,$10, $37,$10, $12,$14, $13,$14, $13,$54, $12,$54, $11,$54
- db $21,$14, $22,$14, $23,$14, $23,$54, $22,$54, $1f,$10, $37,$10, $22,$14, $23,$14, $23,$54, $22,$54, $21,$54
- db $31,$14, $32,$14, $07,$14, $07,$14, $32,$54, $1f,$10, $37,$10, $32,$14, $07,$54, $07,$54, $32,$54, $31,$54
- db $05,$14, $06,$14, $07,$14, $07,$54, $06,$54, $2e,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2f,$10, $2d,$10, $06,$14, $07,$14, $07,$54, $06,$54, $05,$54
- db $15,$14, $16,$14, $17,$14, $17,$54, $16,$54, $15,$54, $14,$54, $07,$14, $07,$14, $39,$14, $0e,$14, $09,$14, $0f,$14, $28,$14, $07,$14, $19,$14, $0c,$14, $1c,$14, $29,$14, $2a,$14, $2b,$14, $2c,$14, $39,$14, $07,$14, $07,$14, $14,$14, $15,$14, $16,$14, $17,$14, $17,$54, $16,$54, $15,$54
- db $25,$14, $26,$14, $07,$14, $07,$54, $26,$54, $25,$54, $24,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $01,$14, $02,$14, $03,$14, $03,$54, $02,$54, $01,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $24,$14, $25,$14, $26,$14, $07,$14, $07,$54, $26,$54, $25,$54
- db $33,$14, $34,$14, $35,$14, $35,$54, $34,$54, $24,$54, $07,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $10,$14, $11,$14, $12,$14, $13,$14, $13,$54, $12,$54, $11,$54, $10,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $24,$14, $34,$14, $35,$14, $35,$54, $34,$54, $33,$54
- db $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $20,$14, $21,$14, $22,$14, $23,$14, $23,$54, $22,$54, $21,$54, $20,$54, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14, $07,$14
+ db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
+ db $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $54, $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54
+ db $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54
+ db $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54, $20, $54, $07, $14, $08, $14, $09, $14, $0a, $14, $0b, $14, $0c, $14, $0d, $14, $07, $14, $07, $14, $18, $14, $09, $14, $1a, $14, $1b, $14, $0d, $14, $0c, $14, $1c, $14, $29, $14, $07, $14, $20, $14, $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54
+ db $31, $14, $32, $14, $07, $14, $07, $14, $32, $54, $36, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $27, $10, $32, $14, $07, $54, $07, $54, $32, $54, $31, $54
+ db $05, $14, $06, $14, $07, $14, $07, $54, $06, $54, $1f, $10, $37, $10, $06, $14, $07, $14, $07, $54, $06, $54, $05, $54
+ db $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $1f, $10, $37, $10, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54
+ db $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $1f, $10, $37, $10, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54
+ db $33, $14, $34, $14, $35, $14, $35, $54, $34, $54, $1f, $10, $37, $10, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54
+ db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
+ db $02, $54, $01, $54, $07, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $01, $14, $02, $14
+ db $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14
+ db $22, $54, $21, $54, $20, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $20, $14, $21, $14, $22, $14
+ db $32, $54, $31, $54, $30, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $30, $14, $31, $14, $32, $14
+ db $06, $54, $05, $54, $04, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $04, $14, $05, $14, $06, $14
+ db $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14
+ db $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14
+ db $34, $54, $33, $54, $07, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $33, $14, $34, $14
+ db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
+ db $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $1f, $10, $37, $10, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54
+ db $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $1f, $10, $37, $10, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54
+ db $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $1f, $10, $37, $10, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54
+ db $31, $14, $32, $14, $07, $14, $07, $14, $32, $54, $1f, $10, $37, $10, $32, $14, $07, $54, $07, $54, $32, $54, $31, $54
+ db $05, $14, $06, $14, $07, $14, $07, $54, $06, $54, $2e, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2d, $10, $06, $14, $07, $14, $07, $54, $06, $54, $05, $54
+ db $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $39, $14, $0e, $14, $09, $14, $0f, $14, $28, $14, $07, $14, $19, $14, $0c, $14, $1c, $14, $29, $14, $2a, $14, $2b, $14, $2c, $14, $39, $14, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54
+ db $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54
+ db $33, $14, $34, $14, $35, $14, $35, $54, $34, $54, $24, $54, $07, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54
+ db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $20, $14, $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54, $20, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
SGBBorderPalettes:
RGB 24, 06, 06
@@ -1941,9 +1960,9 @@ LoadMapPals:
ld a, [MapGroup]
ld l, a
ld h, 0
-rept 3
- add hl,hl
-endr
+ add hl, hl
+ add hl, hl
+ add hl, hl
ld de, RoofPals
add hl, de
ld a, [TimeOfDayPal]
@@ -2016,7 +2035,7 @@ INCLUDE "tilesets/ob.pal"
RoofPals:
INCLUDE "tilesets/roof.pal"
-Palettes_b641:
+DiplomaPalettes:
RGB 27, 31, 27
RGB 21, 21, 21
RGB 13, 13, 13
diff --git a/engine/credits.asm b/engine/credits.asm
index 9074b9c65..fad8a615e 100644
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -183,7 +183,7 @@ Credits:: ; 109847
call ByteFill
ld a, rSCX - $ff00
- ld [hFFC6], a
+ ld [hLCDCPointer], a
call GetCreditsPalette
call SetPalettes
@@ -211,7 +211,7 @@ Credits:: ; 109847
.exit_credits
call ClearBGPalettes
xor a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
ld [hBGMapAddress], a
pop af
ld [hVBlank], a
@@ -258,9 +258,8 @@ Credits_Jumptable: ; 109926
ld e, a
ld d, 0
ld hl, .Jumptable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -326,9 +325,8 @@ Credits_LYOverride: ; 109986 (42:5986)
cp $30
jr c, Credits_LYOverride
ld a, [wCreditsLYOverride]
-rept 2
dec a
-endr
+ dec a
ld [wCreditsLYOverride], a
ld hl, LYOverrides + $1f
call .Fill
@@ -398,9 +396,8 @@ ParseCredits: ; 1099aa
ld e, a
ld d, 0
ld hl, CreditsStrings
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld d, [hl]
ld e, a
@@ -741,9 +738,8 @@ Credits_LoadBorderGFX: ; 109bca (42:5bca)
ld [hl], a
ld a, [wCreditsBorderMon]
and 3
-rept 2
add a
-endr
+ add a
add e
add a
ld e, a
diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm
index 2be7a375e..29bb0934f 100755
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -13,7 +13,7 @@ Copyright_GFPresents: ; e4579
ld a, $90
ld [hWY], a
call WaitBGMap
- ld b, SCGB_19
+ ld b, SCGB_GAMEFREAK_LOGO
call GetSGBLayout
call SetPalettes
ld c, 10
@@ -82,13 +82,13 @@ Copyright_GFPresents: ; e4579
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
call _InitSpriteAnimStruct
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], $a0
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $60
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $30
xor a
@@ -101,7 +101,7 @@ Copyright_GFPresents: ; e4579
ld [hBGMapMode], a
ld a, $90
ld [hWY], a
- ld de, $e4e4
+ lb de, %11100100, %11100100
call DmgToCgbObjPals
ret
; e465e
@@ -120,9 +120,8 @@ PlaceGameFreakPresents: ; e4670
ld e, a
ld d, 0
ld hl, .dw
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -213,14 +212,13 @@ PlaceGameFreakPresents_3: ; e46dd
GameFreakLogoJumper: ; e46ed (39:46ed)
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld e, [hl]
ld d, 0
ld hl, GameFreakLogoScenes
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -234,7 +232,7 @@ GameFreakLogoScenes: ; e46fd (39:46fd)
dw GameFreakLogoScene5
GameFreakLogoScene1: ; e4707 (39:4707)
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ret
@@ -275,7 +273,7 @@ GameFreakLogoScene2: ; e470d (39:470d)
ret
.asm_e4747
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0D
@@ -295,7 +293,7 @@ GameFreakLogoScene3: ; e4759 (39:4759)
ret
.asm_e4764
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0D
@@ -317,9 +315,8 @@ GameFreakLogoScene4: ; e4776 (39:4776)
ld e, a
ld d, $0
ld hl, GameFreakLogoPalettes
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [rSVBK]
push af
ld a, $5
@@ -335,7 +332,7 @@ endr
ret
.asm_e47a3
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
call PlaceGameFreakPresents_AdvanceIndex
@@ -436,9 +433,8 @@ IntroSceneJumper: ; e490f
ld e, a
ld d, 0
ld hl, IntroScenes
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -625,7 +621,7 @@ IntroScene5: ; e4a7a (39:4a7a)
call ClearTileMap
xor a
ld [hBGMapMode], a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap005
@@ -819,7 +815,7 @@ IntroScene8: ; e4bd3 (39:4bd3)
IntroScene9: ; e4c04 (39:4c04)
; Set up the next scene (same bg).
xor a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
call ClearSprites
hlcoord 0, 0, AttrMap
; first 12 rows have palette 1
@@ -893,7 +889,7 @@ IntroScene11: ; e4c86 (39:4c86)
call ClearTileMap
xor a
ld [hBGMapMode], a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap007
@@ -986,9 +982,8 @@ IntroScene12: ; e4cfa (39:4cfa)
ret z
cp c
jr z, .playsound
-rept 2
inc hl
-endr
+ inc hl
jr .loop
.playsound
ld a, [hli]
@@ -1660,16 +1655,15 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
ret
CrystalIntro_UnownFade: ; e5223 (39:5223)
-rept 3
add a
-endr
+ add a
+ add a
ld e, a
ld d, $0
ld hl, BGPals
add hl, de
-rept 2
inc hl
-endr
+ inc hl
ld a, [wcf65]
and $3f
cp $1f
@@ -1698,9 +1692,8 @@ endr
push hl
ld hl, .BWFade
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld d, [hl]
ld e, a
@@ -1712,9 +1705,8 @@ endr
push hl
ld hl, .BlackLBlueFade
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld d, [hl]
ld e, a
@@ -1726,9 +1718,8 @@ endr
push hl
ld hl, .BlackBlueFade
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld d, [hl]
ld e, a
@@ -1786,9 +1777,9 @@ Intro_Scene20_AppearUnown: ; e5348 (39:5348)
.got_pointer
ld a, [wcf65]
and $7
-rept 3
add a
-endr
+ add a
+ add a
ld c, a
ld a, [rSVBK]
push af
@@ -1844,9 +1835,9 @@ endr
; e539d
Intro_FadeUnownWordPals: ; e539d (39:539d)
-rept 3
add a
-endr
+ add a
+ add a
ld e, a
ld d, $0
ld hl, BGPals
@@ -2102,8 +2093,8 @@ Intro_ResetLYOverrides: ; e5516 (39:5516)
pop af
ld [rSVBK], a
- ld a, $43
- ld [hFFC6], a
+ ld a, rSCX - $ff00
+ ld [hLCDCPointer], a
ret
Intro_PerspectiveScrollBG: ; e552f (39:552f)
@@ -2127,9 +2118,8 @@ Intro_PerspectiveScrollBG: ; e552f (39:552f)
; grass in the front
ld hl, LYOverrides + $5f
ld a, [hl]
-rept 2
inc a
-endr
+ inc a
ld bc, $31
call ByteFill
ld a, [LYOverrides + 0]
diff --git a/engine/debug.asm b/engine/debug.asm
index a02f536db..78fc52489 100755
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -300,9 +300,8 @@ Function81a74: ; 81a74
ld e, a
ld d, 0
ld hl, Jumptable_81acf
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -482,9 +481,8 @@ Function81bf4: ; 81bf4
inc a
ld l, a
ld h, $0
-rept 2
add hl, hl
-endr
+ add hl, hl
ld de, OverworldMap
add hl, de
ld de, wc608
@@ -558,9 +556,8 @@ Function81c33: ; 81c33
ld a, [wc608 + 3]
ld [hli], a
xor a
-rept 2
ld [hli], a
-endr
+ ld [hli], a
ld [hl], a
ld hl, wSGBPals
call Function81f0c
@@ -576,9 +573,9 @@ endr
; 81ca7
Function81ca7: ; 81ca7
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
ld a, [de]
call Function81cbc
ld a, [de]
@@ -609,9 +606,8 @@ Function81cc2: ; 81cc2
ld e, a
ld d, 0
ld hl, Jumptable_81d02
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -855,9 +851,8 @@ String_81e4d: db "おぼえられない@" ; cannot be taught
Function81e55: ; 81e55
cp $32
jr c, .asm_81e5b
-rept 2
inc a
-endr
+ inc a
.asm_81e5b
add $bf
@@ -938,9 +933,8 @@ Function81eca: ; 81eca
inc a
ld l, a
ld h, $0
-rept 2
add hl, hl
-endr
+ add hl, hl
ld de, OverworldMap
add hl, de
ld e, l
@@ -970,9 +964,8 @@ Function81ee3: ; 81ee3
inc de
ld [hli], a
xor a
-rept 2
ld [hli], a
-endr
+ ld [hli], a
dec c
jr nz, .asm_81ee3
ret
@@ -1108,9 +1101,8 @@ Function81f5e: ; 81f5e
ld a, b
ld [hli], a
ld a, [de]
-rept 2
add a
-endr
+ add a
add $18
ld [hli], a
xor a
@@ -1241,9 +1233,9 @@ Function8220f: ; 8220f
ld a, [wcf64]
ld l, a
ld h, $0
-rept 3
add hl, hl
-endr
+ add hl, hl
+ add hl, hl
ld de, UnknBGPals
add hl, de
ld de, wc608
@@ -1356,9 +1348,8 @@ Function822f0: ; 822f0
ld e, a
ld d, 0
ld hl, .dw
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -1400,9 +1391,8 @@ Function82309: ; 82309
ld e, a
ld d, $0
ld hl, wc608
-rept 2
add hl, de
-endr
+ add hl, de
ld e, l
ld d, h
call Function81ea5
@@ -1500,9 +1490,8 @@ Function82391: ; 82391
ld c, a
ld b, $0
ld hl, wc608
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, e
ld [hli], a
ld [hl], d
diff --git a/engine/delete_save_change_clock.asm b/engine/delete_save_change_clock.asm
new file mode 100755
index 000000000..7a806ad01
--- /dev/null
+++ b/engine/delete_save_change_clock.asm
@@ -0,0 +1,298 @@
+_ResetClock: ; 4d3b1
+ callba BlankScreen
+ ld b, SCGB_DIPLOMA
+ call GetSGBLayout
+ call LoadStandardFont
+ call LoadFontsExtra
+ ld de, MUSIC_MAIN_MENU
+ call PlayMusic
+ ld hl, .text_askreset
+ call PrintText
+ ld hl, .NoYes_MenuDataHeader
+ call CopyMenuDataHeader
+ call VerticalMenu
+ ret c
+ ld a, [wMenuCursorY]
+ cp $1
+ ret z
+ call ClockResetPassword
+ jr c, .wrongpassword
+ ld a, BANK(sRTCStatusFlags)
+ call GetSRAMBank
+ ld a, $80
+ ld [sRTCStatusFlags], a
+ call CloseSRAM
+ ld hl, .text_okay
+ call PrintText
+ ret
+
+.wrongpassword
+ ld hl, .text_wrong
+ call PrintText
+ ret
+
+.text_okay ; 0x4d3fe
+ ; Password OK. Select CONTINUE & reset settings.
+ text_jump UnknownText_0x1c55db
+ db "@"
+
+.text_wrong ; 0x4d403
+ ; Wrong password!
+ text_jump UnknownText_0x1c560b
+ db "@"
+
+.text_askreset ; 0x4d408
+ ; Reset the clock?
+ text_jump UnknownText_0x1c561c
+ db "@"
+
+.NoYes_MenuDataHeader: ; 0x4d40d
+ db $00 ; flags
+ db 07, 14 ; start coords
+ db 11, 19 ; end coords
+ dw .NoYes_MenuData2
+ db 1 ; default option
+
+.NoYes_MenuData2: ; 0x4d415
+ db $c0 ; flags
+ db 2 ; items
+ db "NO@"
+ db "YES@"
+
+ClockResetPassword: ; 4d41e
+ call .CalculatePassword
+ push de
+ ld hl, StringBuffer2
+ ld bc, 5
+ xor a
+ call ByteFill
+ ld a, $4
+ ld [StringBuffer2 + 5], a
+ ld hl, .pleaseenterpasswordtext
+ call PrintText
+.loop
+ call .updateIDdisplay
+.loop2
+ call JoyTextDelay
+ ld a, [hJoyLast]
+ ld b, a
+ and A_BUTTON
+ jr nz, .confirm
+ ld a, b
+ and D_PAD
+ jr z, .loop2
+ call .dpadinput
+ ld c, 3
+ call DelayFrames
+ jr .loop
+
+.confirm
+ call .ConvertDecIDToBytes
+ pop de
+ ld a, e
+ cp l
+ jr nz, .nope
+ ld a, d
+ cp h
+ jr nz, .nope
+ and a
+ ret
+
+.nope
+ scf
+ ret
+
+.pleaseenterpasswordtext ; 0x4d463
+ ; Please enter the password.
+ text_jump UnknownText_0x1c562e
+ db "@"
+
+.updateIDdisplay ; 4d468
+ hlcoord 14, 15
+ ld de, StringBuffer2
+ ld c, 5
+.loop3
+ ld a, [de]
+ add "0"
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .loop3
+ hlcoord 14, 16
+ ld bc, 5
+ ld a, " "
+ call ByteFill
+ hlcoord 14, 16
+ ld a, [StringBuffer2 + 5]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld [hl], $61
+ ret
+
+.dpadinput ; 4d490
+ ld a, b
+ and D_LEFT
+ jr nz, .left
+ ld a, b
+ and D_RIGHT
+ jr nz, .right
+ ld a, b
+ and D_UP
+ jr nz, .up
+ ld a, b
+ and D_DOWN
+ jr nz, .down
+ ret
+
+.left
+ ld a, [StringBuffer2 + 5]
+ and a
+ ret z
+ dec a
+ ld [StringBuffer2 + 5], a
+ ret
+
+.right
+ ld a, [StringBuffer2 + 5]
+ cp $4
+ ret z
+ inc a
+ ld [StringBuffer2 + 5], a
+ ret
+
+.up
+ call .getcurrentdigit
+ ld a, [hl]
+ cp 9
+ jr z, .wraparound_up
+ inc a
+ ld [hl], a
+ ret
+
+.wraparound_up
+ ld [hl], $0
+ ret
+
+.down
+ call .getcurrentdigit
+ ld a, [hl]
+ and a
+ jr z, .wraparound_down
+ dec a
+ ld [hl], a
+ ret
+
+.wraparound_down
+ ld [hl], 9
+ ret
+
+.getcurrentdigit ; 4d4d5
+ ld a, [StringBuffer2 + 5]
+ ld e, a
+ ld d, $0
+ ld hl, StringBuffer2
+ add hl, de
+ ret
+
+.ConvertDecIDToBytes: ; 4d4e0
+ ld hl, 0
+ ld de, StringBuffer2 + 4
+ ld bc, 1
+ call .ConvertToBytes
+ ld bc, 10
+ call .ConvertToBytes
+ ld bc, 100
+ call .ConvertToBytes
+ ld bc, 1000
+ call .ConvertToBytes
+ ld bc, 10000
+.ConvertToBytes: ; 4d501
+ ld a, [de]
+ dec de
+ push hl
+ ld hl, 0
+ call AddNTimes
+ ld c, l
+ ld b, h
+ pop hl
+ add hl, bc
+ ret
+
+.CalculatePassword: ; 4d50f
+ ld a, BANK(sPlayerData)
+ call GetSRAMBank
+ ld de, 0
+ ld hl, sPlayerData + (PlayerID - wPlayerData)
+ ld c, $2
+ call .ComponentFromNumber
+ ld hl, sPlayerData + (PlayerName - wPlayerData)
+ ld c, $5 ; PLAYER_NAME_LENGTH_J
+ call .ComponentFromString
+ ld hl, sPlayerData + (Money - wPlayerData)
+ ld c, $3
+ call .ComponentFromNumber
+ call CloseSRAM
+ ret
+
+.ComponentFromNumber: ; 4d533
+ ld a, [hli]
+ add e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ dec c
+ jr nz, .ComponentFromNumber
+ ret
+
+.ComponentFromString: ; 4d53e
+ ld a, [hli]
+ cp "@"
+ ret z
+ add e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ dec c
+ jr nz, .ComponentFromString
+ ret
+
+_DeleteSaveData: ; 4d54c
+ callba BlankScreen
+ ld b, SCGB_DIPLOMA
+ call GetSGBLayout
+ call LoadStandardFont
+ call LoadFontsExtra
+ ld de, MUSIC_MAIN_MENU
+ call PlayMusic
+ ld hl, .Text_ClearAllSaveData
+ call PrintText
+ ld hl, .NoYesMenuDataHeader
+ call CopyMenuDataHeader
+ call VerticalMenu
+ ret c
+ ld a, [wMenuCursorY]
+ cp $1
+ ret z
+ callba EmptyAllSRAMBanks
+ ret
+
+.Text_ClearAllSaveData: ; 0x4d580
+ ; Clear all save data?
+ text_jump UnknownText_0x1c564a
+ db "@"
+
+.NoYesMenuDataHeader: ; 0x4d585
+ db $00 ; flags
+ db 07, 14 ; start coords
+ db 11, 19 ; end coords
+ dw .MenuData2
+ db 1 ; default option
+
+.MenuData2: ; 0x4d58d
+ db $c0 ; flags
+ db 2 ; items
+ db "NO@"
+ db "YES@"
diff --git a/engine/diploma.asm b/engine/diploma.asm
index 8f8ef9e99..c446ff86b 100644
--- a/engine/diploma.asm
+++ b/engine/diploma.asm
@@ -1,50 +1,50 @@
_Diploma: ; 1dd702
- call Function1dd709
+ call PlaceDiplomaOnScreen
call WaitPressAorB_BlinkCursor
ret
; 1dd709
-Function1dd709: ; 1dd709
+PlaceDiplomaOnScreen: ; 1dd709
call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
- ld hl, LZ_1dd805
+ ld hl, DiplomaGFX
ld de, VTiles2
call Decompress
- ld hl, Tilemap_1ddc4b
+ ld hl, DiplomaPage1Tilemap
decoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call CopyBytes
- ld de, String_1dd760
+ ld de, .Player
hlcoord 2, 5
call PlaceString
- ld de, String_1dd767
+ ld de, .EmptyString
hlcoord 15, 5
call PlaceString
ld de, PlayerName
hlcoord 9, 5
call PlaceString
- ld de, String_1dd768
+ ld de, .Certification
hlcoord 2, 8
call PlaceString
call EnableLCD
call WaitBGMap
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call SetPalettes
call DelayFrame
ret
; 1dd760
-String_1dd760:
+.Player:
db "PLAYER@"
-String_1dd767:
+.EmptyString:
db "@"
-String_1dd768:
+.Certification:
db "This certifies"
next "that you have"
next "completed the"
@@ -53,26 +53,26 @@ String_1dd768:
db "@"
; 1dd7ae
-Function1dd7ae: ; 1dd7ae
+PrintDiplomaPage2: ; 1dd7ae
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, $7f
call ByteFill
- ld hl, Tilemap_1dddb3
+ ld hl, DiplomaPage2Tilemap
decoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call CopyBytes
- ld de, String_1dd7fa
+ ld de, .GameFreak
hlcoord 8, 0
call PlaceString
- ld de, String_1dd7f0
+ ld de, .PlayTime
hlcoord 3, 15
call PlaceString
hlcoord 12, 15
ld de, GameTimeHours
lb bc, 2, 4
call PrintNum
- ld [hl], $67
+ ld [hl], $67 ; colon
inc hl
ld de, GameTimeMinutes
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
@@ -80,15 +80,15 @@ Function1dd7ae: ; 1dd7ae
ret
; 1dd7f0
-String_1dd7f0: db "PLAY TIME@"
-String_1dd7fa: db "GAME FREAK@"
+.PlayTime: db "PLAY TIME@"
+.GameFreak: db "GAME FREAK@"
; 1dd805
-LZ_1dd805: ; 1dd805
+DiplomaGFX: ; 1dd805
INCBIN "gfx/unknown/1dd805.2bpp.lz"
-Tilemap_1ddc4b: ; 1ddc4b
+DiplomaPage1Tilemap: ; 1ddc4b
INCBIN "gfx/unknown/1ddc4b.tilemap"
-Tilemap_1dddb3: ; 1dddb3
+DiplomaPage2Tilemap: ; 1dddb3
INCBIN "gfx/unknown/1dddb3.tilemap"
diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm
index bb5377d8f..e5ef9b4cf 100755
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -8,7 +8,7 @@ _DummyGame: ; e1e5b (38:5e5b)
.LoadGFXAndPals:
call DisableLCD
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
callab ClearSpriteAnims
ld hl, LZ_e2221
diff --git a/engine/events.asm b/engine/events.asm
index 3bcac8925..e7598b595 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -167,10 +167,10 @@ HandleMap: ; 96773
cp 2 ; HandleMap
ret nz
- call Function967d1
+ call HandleMapObjects
call NextOverworldFrame
- call Function967e1
- call Function967f4
+ call HandleMapBackground
+ call CheckPlayerState
ret
; 96795
@@ -226,21 +226,21 @@ HandleMapTimeAndJoypad: ; 967c1
ret
; 967d1
-Function967d1: ; 967d1
+HandleMapObjects: ; 967d1
callba HandleNPCStep ; engine/map_objects.asm
callba _HandlePlayerStep
call _CheckObjectEnteringVisibleRange
ret
; 967e1
-Function967e1: ; 967e1
+HandleMapBackground: ; 967e1
callba _UpdateSprites
callba ScrollScreen
callba PlaceMapNameSign
ret
; 967f4
-Function967f4: ; 967f4
+CheckPlayerState: ; 967f4
ld a, [wPlayerStepFlags]
bit 5, a ; in the middle of step
jr z, .events
@@ -547,7 +547,7 @@ OWPlayerInput: ; 96974
.Action:
push af
- callba Function80422
+ callba StopPlayerForEvent
pop af
scf
ret
@@ -1030,9 +1030,9 @@ DoPlayerEvent: ; 96beb
ld c, a
ld b, 0
ld hl, PlayerEventScriptPointers
-rept 3
add hl, bc
-endr
+ add hl, bc
+ add hl, bc
ld a, [hli]
ld [ScriptBank], a
ld a, [hli]
diff --git a/engine/events_2.asm b/engine/events_2.asm
index 2e7c37c92..42e3ed8e4 100644
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -458,10 +458,10 @@ HandleQueuedCommand: ; 97e79
.okay
ld e, a
ld d, 0
- ld hl, .Jumptable_ba
-rept 3
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
add hl, de
-endr
ld a, [hli]
push af
ld a, [hli]
@@ -472,7 +472,7 @@ endr
ret
; 97e94
-.Jumptable_ba: ; 97e94
+.Jumptable: ; 97e94
dba CmdQueue_Null
dba CmdQueue_Null2
dba CmdQueue_StoneTable
@@ -531,9 +531,9 @@ CmdQueue_Type4: ; 97ebc
ld a, [hl]
dec a
ld [hl], a
- jr z, .asm_97eee
+ jr z, .finish
and $1
- jr z, .asm_97ee4
+ jr z, .add
ld hl, 2
add hl, bc
ld a, [hSCY]
@@ -541,7 +541,7 @@ CmdQueue_Type4: ; 97ebc
ld [hSCY], a
ret
-.asm_97ee4
+.add
ld hl, 2
add hl, bc
ld a, [hSCY]
@@ -549,7 +549,7 @@ CmdQueue_Type4: ; 97ebc
ld [hSCY], a
ret
-.asm_97eee
+.finish
ld hl, 4
add hl, bc
ld a, [hl]
diff --git a/engine/events_3.asm b/engine/events_3.asm
index b1c142a27..b6aaea3b7 100755
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -45,7 +45,7 @@ ReturnFromMapSetupScript:: ; b8000
ld [wLandmarkSignTimer], a
call LoadMapNameSignGFX
call InitMapNameFrame
- callba Function104303
+ callba HDMATransfer_OnlyTopFourRows
ret
.dont_do_map_sign
@@ -55,7 +55,7 @@ ReturnFromMapSetupScript:: ; b8000
ld [rWY], a
ld [hWY], a
xor a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
ret
; b8064
@@ -65,7 +65,7 @@ ReturnFromMapSetupScript:: ; b8000
ld a, [wPreviousLandmark]
cp c
ret z
- cp $0
+ cp SPECIAL_MAP
ret
; b8070
@@ -113,7 +113,7 @@ PlaceMapNameSign:: ; b8098 (2e:4098)
jr nz, .skip2
call InitMapNameFrame
call PlaceMapNameCenterAlign
- callba Function104303
+ callba HDMATransfer_OnlyTopFourRows
.skip2
ld a, $80
ld a, $70
@@ -126,7 +126,7 @@ PlaceMapNameSign:: ; b8098 (2e:4098)
ld [rWY], a
ld [hWY], a
xor a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
ret
@@ -184,12 +184,10 @@ PlaceMapNameCenterAlign: ; b80e1 (2e:40e1)
InitMapSignAttrMap: ; b8115
ld de, AttrMap - TileMap
add hl, de
-rept 2
inc b
-endr
-rept 2
+ inc b
+ inc c
inc c
-endr
ld a, $87
.loop
push bc
@@ -261,15 +259,13 @@ PlaceMapNameFrame: ; b812f
jr .enterloop
.continueloop
-rept 2
ld [hli], a
-endr
+ ld [hli], a
.enterloop
inc a
-rept 2
ld [hli], a
-endr
+ ld [hli], a
dec a
dec c
jr nz, .continueloop
@@ -280,13 +276,13 @@ CheckForHiddenItems: ; b8172
; Checks to see if there are hidden items on the screen that have not yet been found. If it finds one, returns carry.
call GetMapScriptHeaderBank
ld [Buffer1], a
-; Get the coordinate of the bottom right corner of the screen, and load it in wd1ec/wd1ed.
+; Get the coordinate of the bottom right corner of the screen, and load it in Buffer3/Buffer4.
ld a, [XCoord]
add SCREEN_WIDTH / 4
- ld [wd1ed], a
+ ld [Buffer4], a
ld a, [YCoord]
add SCREEN_HEIGHT / 4
- ld [wd1ec], a
+ ld [Buffer3], a
; Get the pointer for the first signpost header in the map...
ld hl, wCurrentMapSignpostHeaderPointer
ld a, [hli]
@@ -305,7 +301,7 @@ CheckForHiddenItems: ; b8172
call .GetFarByte
ld e, a
; Is the Y coordinate of the signpost on the screen? If not, go to the next signpost.
- ld a, [wd1ec]
+ ld a, [Buffer3]
sub e
jr c, .next
cp SCREEN_HEIGHT / 2
@@ -313,7 +309,7 @@ CheckForHiddenItems: ; b8172
; Is the X coordinate of the signpost on the screen? If not, go to the next signpost.
call .GetFarByte
ld d, a
- ld a, [wd1ed]
+ ld a, [Buffer4]
sub d
jr c, .next
cp SCREEN_WIDTH / 2
@@ -364,7 +360,7 @@ CheckForHiddenItems: ; b8172
TreeMonEncounter: ; b81ea
- callba MobileFn_1060ef
+ callba TrainerRankings_TreeEncounters
xor a
ld [TempWildMonSpecies], a
@@ -522,9 +518,8 @@ GetTreeMons: ; b82d2
ld e, a
ld d, 0
ld hl, TreeMons
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
@@ -709,9 +704,9 @@ SelectTreeMon: ; b841f
.loop
sub [hl]
jr c, .ok
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
jr .loop
.ok
diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm
index dc0ddd8f6..2f1c4c522 100755
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -21,7 +21,7 @@ EvolutionAnimation: ; 4e5e1
pop de
pop hl
- ld a, [Buffer4]
+ ld a, [wEvolutionCanceled]
and a
ret z
@@ -30,7 +30,7 @@ EvolutionAnimation: ; 4e5e1
; 4e607
.EvolutionAnimation: ; 4e607
- ld a, $e4
+ ld a, %11100100
ld [rOBP0], a
ld de, MUSIC_NONE
@@ -48,29 +48,29 @@ EvolutionAnimation: ; 4e5e1
call WaitBGMap
xor a
ld [hBGMapMode], a
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
ld [PlayerHPPal], a
ld c, $0
call .GetSGBLayout
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
ld [CurPartySpecies], a
ld [CurSpecies], a
call .PlaceFrontpic
ld de, VTiles2
ld hl, VTiles2 tile $31
- ld bc, $31
+ ld bc, 7 * 7
call Request2bpp
- ld a, $31
- ld [wd1ec], a
+ ld a, 7 * 7
+ ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
- ld a, [Buffer2]
+ ld a, [wEvolutionNewSpecies]
ld [CurPartySpecies], a
ld [CurSpecies], a
call .LoadFrontpic
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
ld [CurPartySpecies], a
ld [CurSpecies], a
@@ -79,7 +79,7 @@ EvolutionAnimation: ; 4e5e1
call .check_statused
jr c, .skip_cry
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
call PlayCry
.skip_cry
@@ -95,13 +95,12 @@ EvolutionAnimation: ; 4e5e1
jr c, .cancel_evo
ld a, -7 * 7
- ld [wd1ec], a
-
+ ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
xor a
- ld [Buffer4], a
+ ld [wEvolutionCanceled], a
- ld a, [Buffer2]
+ ld a, [wEvolutionNewSpecies]
ld [PlayerHPPal], a
ld c, $0
@@ -136,9 +135,9 @@ EvolutionAnimation: ; 4e5e1
.cancel_evo
ld a, $1
- ld [Buffer4], a
+ ld [wEvolutionCanceled], a
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
ld [PlayerHPPal], a
ld c, $0
@@ -154,7 +153,7 @@ EvolutionAnimation: ; 4e5e1
; 4e703
.GetSGBLayout: ; 4e703
- ld b, SCGB_0B
+ ld b, SCGB_EVOLUTION
jp GetSGBLayout
; 4e708
@@ -187,9 +186,8 @@ EvolutionAnimation: ; 4e5e1
call .Flash
pop bc
inc b
-rept 2
dec c
-endr
+ dec c
jr nz, .loop
and a
ret
@@ -201,10 +199,10 @@ endr
.Flash: ; 4e741
ld a, -7 * 7 ; new stage
- ld [wd1ec], a
+ ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
ld a, 7 * 7 ; previous stage
- ld [wd1ec], a
+ ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
dec b
jr nz, .Flash
@@ -221,7 +219,7 @@ endr
.loop1
push bc
.loop2
- ld a, [wd1ec]
+ ld a, [wEvolutionPicOffset]
add [hl]
ld [hli], a
dec c
@@ -270,7 +268,7 @@ endr
; 4e7a6
.PlayEvolvedSFX: ; 4e7a6
- ld a, [Buffer4]
+ ld a, [wEvolutionCanceled]
and a
ret nz
ld de, SFX_EVOLVED
@@ -320,7 +318,7 @@ endr
depixel 9, 11
ld a, SPRITE_ANIM_INDEX_13
call _InitSpriteAnimStruct
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld a, [wJumptableIndex]
and %1110
@@ -344,9 +342,8 @@ endr
ld a, [hVBlankCounter]
and %1110
srl a
-rept 2
inc a
-endr
+ inc a
and $7
ld b, a
ld hl, Sprites + 3 ; attributes
@@ -355,9 +352,9 @@ endr
ld a, [hl]
or b
ld [hli], a
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
dec c
jr nz, .loop6
pop bc
diff --git a/engine/evolve.asm b/engine/evolve.asm
index db7d7e946..2f7739191 100755
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -29,7 +29,7 @@ EvolveAfterBattle_MasterLoop
cp $ff
jp z, .ReturnToMap
- ld [Buffer1], a
+ ld [wEvolutionOldSpecies], a
push hl
ld a, [CurPartyMon]
@@ -41,14 +41,13 @@ EvolveAfterBattle_MasterLoop
and a
jp z, EvolveAfterBattle_MasterLoop
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
dec a
ld b, 0
ld c, a
ld hl, EvosAttacksPointers
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
@@ -205,7 +204,7 @@ endr
push hl
ld a, [hl]
- ld [Buffer2], a
+ ld [wEvolutionNewSpecies], a
ld a, [CurPartyMon]
ld hl, PartyMonNicknames
call GetNick
@@ -241,14 +240,14 @@ endr
ld a, [hl]
ld [CurSpecies], a
ld [TempMonSpecies], a
- ld [Buffer2], a
+ ld [wEvolutionNewSpecies], a
ld [wd265], a
call GetPokemonName
push hl
ld hl, Text_EvolvedIntoPKMN
call PrintTextBoxText
- callba MobileFn_106094
+ callba TrainerRankings_MonsEvolved
ld de, MUSIC_NONE
call PlayMusic
@@ -437,9 +436,8 @@ LearnLevelMoves: ; 42487
ld b, 0
ld c, a
ld hl, EvosAttacksPointers
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
@@ -532,7 +530,7 @@ FillMoves: ; 424e1
ld a, [CurPartyLevel]
cp b
jp c, .done
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
and a
jr z, .CheckMove
ld a, [wd002]
@@ -565,7 +563,7 @@ FillMoves: ; 424e1
ld h, d
ld l, e
call ShiftMoves
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
and a
jr z, .ShiftedMove
push de
@@ -582,7 +580,7 @@ FillMoves: ; 424e1
.LearnMove:
ld a, [hl]
ld [de], a
- ld a, [Buffer1]
+ ld a, [wEvolutionOldSpecies]
and a
jr z, .NextMove
push hl
@@ -638,9 +636,8 @@ GetPreEvolution: ; 42581
.loop ; For each Pokemon...
ld hl, EvosAttacksPointers
ld b, 0
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/facings.asm b/engine/facings.asm
index f807e77f8..ee9efec3f 100644
--- a/engine/facings.asm
+++ b/engine/facings.asm
@@ -1,36 +1,36 @@
Facings: ; 4049
- dw Facing00
- dw Facing01
- dw Facing02
- dw Facing03
- dw Facing04
- dw Facing05
- dw Facing06
- dw Facing07
- dw Facing08
- dw Facing09
- dw Facing10
- dw Facing11
- dw Facing12
- dw Facing13
- dw Facing14
- dw Facing15
- dw Facing16
- dw Facing17
- dw Facing18
- dw Facing19
- dw Facing20
- dw Facing21
- dw Facing22
- dw Facing23
- dw Facing24
- dw Facing25
- dw Facing26
- dw Facing27
- dw Facing28
- dw Facing29
- dw Facing30
- dw Facing31
+ dw FacingStepDown0
+ dw FacingStepDown1
+ dw FacingStepDown2
+ dw FacingStepDown3
+ dw FacingStepUp0
+ dw FacingStepUp1
+ dw FacingStepUp2
+ dw FacingStepUp3
+ dw FacingStepLeft0
+ dw FacingStepLeft1
+ dw FacingStepLeft2
+ dw FacingStepLeft3
+ dw FacingStepRight0
+ dw FacingStepRight1
+ dw FacingStepRight2
+ dw FacingStepRight3
+ dw FacingFishDown
+ dw FacingFishUp
+ dw FacingFishLeft
+ dw FacingFishRight
+ dw FacingEmote
+ dw FacingShadow
+ dw FacingBigDollAsymmetric
+ dw FacingBigDollSymmetric
+ dw FacingWeirdTree0
+ dw FacingWeirdTree1
+ dw FacingWeirdTree2
+ dw FacingWeirdTree3
+ dw FacingBoulderDust1
+ dw FacingBoulderDust2
+ dw FacingGrass1
+ dw FacingGrass2
FacingsEnd: dw 0
NUM_FACINGS EQU (FacingsEnd - Facings) / 2
@@ -47,10 +47,10 @@ Y_FLIP EQU 1 << OAM_Y_FLIP
BEHIND_BG EQU 1 << OAM_PRIORITY
-Facing00:
-Facing02:
-Facing24:
-Facing26: ; standing down
+FacingStepDown0:
+FacingStepDown2:
+FacingWeirdTree0:
+FacingWeirdTree2: ; standing down
db 4 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
@@ -58,7 +58,7 @@ Facing26: ; standing down
db 8, 8, 2, $03
; 409c
-Facing01: ; walking down 1
+FacingStepDown1: ; walking down 1
db 4 ; #
db 0, 0, 0, $80
db 0, 8, 0, $81
@@ -66,7 +66,7 @@ Facing01: ; walking down 1
db 8, 8, 2, $83
; 40ad
-Facing03: ; walking down 2
+FacingStepDown3: ; walking down 2
db 4 ; #
db 0, 8, X_FLIP, $80
db 0, 0, X_FLIP, $81
@@ -74,8 +74,8 @@ Facing03: ; walking down 2
db 8, 0, 2 | X_FLIP, $83
; 40be
-Facing04:
-Facing06: ; standing up
+FacingStepUp0:
+FacingStepUp2: ; standing up
db 4 ; #
db 0, 0, 0, $04
db 0, 8, 0, $05
@@ -83,7 +83,7 @@ Facing06: ; standing up
db 8, 8, 2, $07
; 40cf
-Facing05: ; walking up 1
+FacingStepUp1: ; walking up 1
db 4 ; #
db 0, 0, 0, $84
db 0, 8, 0, $85
@@ -91,7 +91,7 @@ Facing05: ; walking up 1
db 8, 8, 2, $87
; 40e0
-Facing07: ; walking up 2
+FacingStepUp3: ; walking up 2
db 4 ; #
db 0, 8, X_FLIP, $84
db 0, 0, X_FLIP, $85
@@ -99,8 +99,8 @@ Facing07: ; walking up 2
db 8, 0, 2 | X_FLIP, $87
; 40f1
-Facing08:
-Facing10: ; standing left
+FacingStepLeft0:
+FacingStepLeft2: ; standing left
db 4 ; #
db 0, 0, 0, $08
db 0, 8, 0, $09
@@ -108,8 +108,8 @@ Facing10: ; standing left
db 8, 8, 2, $0b
; 4102
-Facing12:
-Facing14: ; standing right
+FacingStepRight0:
+FacingStepRight2: ; standing right
db 4 ; #
db 0, 8, X_FLIP, $08
db 0, 0, X_FLIP, $09
@@ -117,8 +117,8 @@ Facing14: ; standing right
db 8, 0, 2 | X_FLIP, $0b
; 4113
-Facing09:
-Facing11: ; walking left
+FacingStepLeft1:
+FacingStepLeft3: ; walking left
db 4 ; #
db 0, 0, 0, $88
db 0, 8, 0, $89
@@ -126,8 +126,8 @@ Facing11: ; walking left
db 8, 8, 2, $8b
; 4124
-Facing13:
-Facing15: ; walking right
+FacingStepRight1:
+FacingStepRight3: ; walking right
db 4 ; #
db 0, 8, X_FLIP, $88
db 0, 0, X_FLIP, $89
@@ -135,7 +135,7 @@ Facing15: ; walking right
db 8, 0, 2 | X_FLIP, $8b
; 4135
-Facing16: ; fishing down
+FacingFishDown: ; fishing down
db 5 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
@@ -144,7 +144,7 @@ Facing16: ; fishing down
db 16, 0, 4, $fc
; 414a
-Facing17: ; fishing up
+FacingFishUp: ; fishing up
db 5 ; #
db 0, 0, 0, $04
db 0, 8, 0, $05
@@ -153,7 +153,7 @@ Facing17: ; fishing up
db -8, 0, 4, $fc
; 415f
-Facing18: ; fishing left
+FacingFishLeft: ; fishing left
db 5 ; #
db 0, 0, 0, $08
db 0, 8, 0, $09
@@ -162,7 +162,7 @@ Facing18: ; fishing left
db 5, -8, 4 | X_FLIP, $fd
; 4174
-Facing19: ; fishing right
+FacingFishRight: ; fishing right
db 5 ; #
db 0, 8, X_FLIP, $08
db 0, 0, X_FLIP, $09
@@ -171,7 +171,7 @@ Facing19: ; fishing right
db 5, 16, 4, $fd
; 4189
-Facing20: ; emote
+FacingEmote: ; emote
db 4 ; #
db 0, 0, 4, $f8
db 0, 8, 4, $f9
@@ -179,13 +179,13 @@ Facing20: ; emote
db 8, 8, 4, $fb
; 419a
-Facing21: ; shadow
+FacingShadow: ; shadow
db 2 ; #
db 0, 0, 4, $fc
db 0, 8, 4 | X_FLIP, $fc
; 41a3
-Facing23: ; big snorlax or lapras doll
+FacingBigDollSymmetric: ; big snorlax or lapras doll
db 16 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
@@ -205,7 +205,7 @@ Facing23: ; big snorlax or lapras doll
db 24, 16, X_FLIP, $07
; 41e4
-Facing25: ; 41e4
+FacingWeirdTree1: ; 41e4
db 4 ; #
db 0, 0, 0, $04
db 0, 8, 0, $05
@@ -213,7 +213,7 @@ Facing25: ; 41e4
db 8, 8, 0, $07
; 41f5
-Facing27: ; 41f5
+FacingWeirdTree3: ; 41f5
db 4 ; #
db 0, 8, X_FLIP, $04
db 0, 0, X_FLIP, $05
@@ -221,7 +221,7 @@ Facing27: ; 41f5
db 8, 0, X_FLIP, $07
; 4206
-Facing22: ; big doll other than snorlax or lapras
+FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
db 14 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
@@ -239,7 +239,7 @@ Facing22: ; big doll other than snorlax or lapras
db 24, 16, 0, $0b
; 423f
-Facing28: ; boulder dust 1
+FacingBoulderDust1: ; boulder dust 1
db 4 ; #
db 0, 0, 4, $fe
db 0, 8, 4, $fe
@@ -247,7 +247,7 @@ Facing28: ; boulder dust 1
db 8, 8, 4, $fe
; 4250
-Facing29: ; boulder dust 2
+FacingBoulderDust2: ; boulder dust 2
db 4 ; #
db 0, 0, 4, $ff
db 0, 8, 4, $ff
@@ -255,13 +255,13 @@ Facing29: ; boulder dust 2
db 8, 8, 4, $ff
; 4261
-Facing30: ; 4261
+FacingGrass1: ; 4261
db 2 ; #
db 8, 0, 4, $fe
db 8, 8, 4 | X_FLIP, $fe
; 426a
-Facing31: ; 426a
+FacingGrass2: ; 426a
db 2 ; #
db 9, -1, 4, $fe
db 9, 9, 4 | X_FLIP, $fe
diff --git a/engine/fish.asm b/engine/fish.asm
index 6aeec10a6..44fe57b25 100644
--- a/engine/fish.asm
+++ b/engine/fish.asm
@@ -38,9 +38,8 @@ endr
inc hl
ld e, b
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -51,9 +50,9 @@ endr
cp [hl]
jr z, .ok
jr c, .ok
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
jr .loop
.ok
inc hl
@@ -84,9 +83,8 @@ endr
and 3
cp NITE
jr c, .time_species
-rept 2
inc hl
-endr
+ inc hl
.time_species
ld d, [hl]
diff --git a/engine/fruit_trees.asm b/engine/fruit_trees.asm
index cbbe5faaf..6a40fb05c 100644
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -58,7 +58,7 @@ CheckFruitTree: ; 44055
; 4405f
PickedFruitTree: ; 4405f
- callba MobileFn_10609b ; empty function
+ callba TrainerRankings_FruitPicked
ld b, 1
jp GetFruitTreeFlag
; 4406a
@@ -66,9 +66,9 @@ PickedFruitTree: ; 4405f
ResetFruitTrees: ; 4406a
xor a
ld hl, FruitTreeFlags
-rept 3
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
ld [hl], a
ld hl, DailyFlags
set 4, [hl]
diff --git a/engine/healmachineanim.asm b/engine/healmachineanim.asm
index 01ed6d652..5162b3830 100755
--- a/engine/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -25,9 +25,8 @@ HealMachineAnim: ; 12324
ld e, a
ld d, 0
ld hl, .Pointers
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -219,9 +218,9 @@ INCBIN "gfx/unknown/0123fc.2bpp"
ld [hld], a
ld a, e
ld [hli], a
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
dec c
jr nz, .palette_loop_2
pop de
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index ea5c9296a..3e4257ab7 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -140,7 +140,7 @@ _ResetWRAM: ; 5bae
ld [wSecretID + 1], a
ld hl, PartyCount
- call InitList
+ call .InitList
xor a
ld [wCurBox], a
@@ -151,20 +151,20 @@ _ResetWRAM: ; 5bae
ld a, BANK(sBoxCount)
call GetSRAMBank
ld hl, sBoxCount
- call InitList
+ call .InitList
call CloseSRAM
ld hl, NumItems
- call InitList
+ call .InitList
ld hl, NumKeyItems
- call InitList
+ call .InitList
ld hl, NumBalls
- call InitList
+ call .InitList
ld hl, PCItems
- call InitList
+ call .InitList
xor a
ld [wRoamMon1Species], a
@@ -232,7 +232,7 @@ ENDC
ret
; 5ca1
-InitList: ; 5ca1
+.InitList: ; 5ca1
; Loads 0 in the count and -1 in the first item or mon slot.
xor a
ld [hli], a
@@ -688,7 +688,7 @@ OakSpeech: ; 0x5f99
ld [TrainerClass], a
call Intro_PrepTrainerPic
- ld b, SCGB_FRONTPICPALS
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
call Intro_RotatePalettesLeftFrontpic
@@ -709,7 +709,7 @@ OakSpeech: ; 0x5f99
ld [TempMonDVs], a
ld [TempMonDVs + 1], a
- ld b, SCGB_FRONTPICPALS
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
call Intro_WipeInFrontpic
@@ -726,7 +726,7 @@ OakSpeech: ; 0x5f99
ld [TrainerClass], a
call Intro_PrepTrainerPic
- ld b, SCGB_FRONTPICPALS
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
call Intro_RotatePalettesLeftFrontpic
@@ -739,7 +739,7 @@ OakSpeech: ; 0x5f99
ld [CurPartySpecies], a
callba DrawIntroPlayerPic
- ld b, SCGB_FRONTPICPALS
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
call Intro_RotatePalettesLeftFrontpic
@@ -809,7 +809,7 @@ NamePlayer: ; 0x6074
ld [CurPartySpecies], a
callba DrawIntroPlayerPic
- ld b, SCGB_FRONTPICPALS
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
call RotateThreePalettesLeft
@@ -1041,14 +1041,14 @@ StartTitleScreen: ; 6219
call ClearScreen
call WaitBGMap2
xor a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call UpdateTimePals
ld a, [wcf64]
@@ -1172,7 +1172,7 @@ TitleScreenEntrance: ; 62bc
ld hl, wJumptableIndex
inc [hl]
xor a
- ld [hFFC6], a
+ ld [hLCDCPointer], a
; Play the title screen music.
ld de, MUSIC_TITLE
diff --git a/engine/landmarks.asm b/engine/landmarks.asm
index 8fb7035f2..a0b4336aa 100644
--- a/engine/landmarks.asm
+++ b/engine/landmarks.asm
@@ -3,9 +3,8 @@ GetLandmarkCoords: ; 0x1ca896
push hl
ld l, e
ld h, 0
-rept 2
add hl, hl
-endr
+ add hl, hl
ld de, Landmarks
add hl, de
ld a, [hli]
@@ -24,9 +23,8 @@ GetLandmarkName:: ; 0x1ca8a5
ld l, e
ld h, 0
-rept 2
add hl, hl
-endr
+ add hl, hl
ld de, Landmarks + 2
add hl, de
ld a, [hli]
diff --git a/engine/link.asm b/engine/link.asm
index 14c9c2f4d..f5bc24da9 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -25,7 +25,7 @@ LinkCommunications: ; 28000
hlcoord 4, 10
ld de, String_PleaseWait
call PlaceString
- call Function28eff
+ call SetTradeRoomBGPals
call WaitBGMap2
ld hl, wcf5d
xor a
@@ -41,7 +41,7 @@ TimeCapsule: ; 2805d
call FixDataForLinkTransfer
xor a
ld [wPlayerLinkAction], a
- call Function87d
+ call WaitLinkTransfer
ld a, [hLinkPlayerNumber]
cp $2
jr nz, .player_1
@@ -163,9 +163,9 @@ TimeCapsule: ; 2805d
ld hl, wTimeCapsulePartyMon1Species
call Function2868a
ld a, OTPartyMonOT % $100
- ld [wd102], a
+ ld [wUnusedD102], a
ld a, OTPartyMonOT / $100
- ld [wd103], a
+ ld [wUnusedD102 + 1], a
ld de, MUSIC_NONE
call PlayMusic
ld a, [hLinkPlayerNumber]
@@ -404,9 +404,9 @@ Gen2ToGen2LinkComms: ; 28177
ld bc, OTPartyDataEnd - OTPartyMons
call CopyBytes
ld a, OTPartyMonOT % $100
- ld [wd102], a
+ ld [wUnusedD102], a
ld a, OTPartyMonOT / $100
- ld [wd103], a
+ ld [wUnusedD102 + 1], a
ld de, MUSIC_NONE
call PlayMusic
ld a, [hLinkPlayerNumber]
@@ -431,10 +431,12 @@ Gen2ToGen2LinkComms: ; 28177
ld bc, NAME_LENGTH
call CopyBytes
call ReturnToMapFromSubmenu
- ld a, [wc2d7]
+
+ ; LET'S DO THIS
+ ld a, [wDisableTextAcceleration]
push af
- ld a, $1
- ld [wc2d7], a
+ ld a, 1
+ ld [wDisableTextAcceleration], a
ld a, [rIE]
push af
ld a, [rIF]
@@ -446,7 +448,9 @@ Gen2ToGen2LinkComms: ; 28177
ld [rIE], a
pop af
ld [rIF], a
+
predef StartBattle
+
ld a, [rIF]
ld h, a
xor a
@@ -456,7 +460,7 @@ Gen2ToGen2LinkComms: ; 28177
ld a, h
ld [rIF], a
pop af
- ld [wc2d7], a
+ ld [wDisableTextAcceleration], a
pop af
ld [Options], a
callba LoadPokemonData
@@ -491,10 +495,10 @@ LinkTimeout: ; 283b2
pop de
pop hl
bccoord 1, 14
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
call RotateThreePalettesRight
call ClearScreen
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call WaitBGMap2
ret
@@ -575,9 +579,9 @@ FixDataForLinkTransfer: ; 28434
jr nz, .loop2
ld hl, wMisc
ld a, $fd
-rept 3
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
ld b, $c8
xor a
.loop3
@@ -1094,14 +1098,12 @@ Function2868a: ; 2868a
ld a, $46
ld [hli], a
xor a
-rept 2
ld [hli], a
-endr
+ ld [hli], a
ld [hl], a
pop hl
-rept 2
inc de
-endr
+ inc de
ret
; 28771
@@ -1211,9 +1213,9 @@ InitTradeMenuDisplay: ; 287e3
callba InitTradeSpeciesList
xor a
ld hl, wOtherPlayerLinkMode
-rept 3
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
ld [hl], a
ld a, 1
ld [wMenuCursorY], a
@@ -1252,8 +1254,8 @@ LinkTradeOTPartymonMenuLoop: ; 28835
bit A_BUTTON_F, a
jr z, .not_a_button
ld a, $1
- ld [wd263], a
- callab Function50db9
+ ld [wInitListType], a
+ callab InitList
ld hl, OTPartyMon1Species
callba LinkMonStatsScreen
jp LinkTradePartiesMenuMasterLoop
@@ -1445,8 +1447,8 @@ Function28926: ; 28926
pop af
ld [wMenuCursorY], a
ld a, $4
- ld [wd263], a
- callab Function50db9
+ ld [wInitListType], a
+ callab InitList
callba LinkMonStatsScreen
call Call_LoadTempTileMapToTileMap
hlcoord 6, 1
@@ -1488,7 +1490,7 @@ Function28926: ; 28926
callba Link_WaitBGMap
ld hl, .Text_CantTradeLastMon
bccoord 1, 14
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
jr .cancel_trade
.abnormal
@@ -1510,7 +1512,7 @@ Function28926: ; 28926
callba Link_WaitBGMap
ld hl, .Text_Abnormal
bccoord 1, 14
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
.cancel_trade
hlcoord 0, 12
@@ -1595,7 +1597,7 @@ Function28ade: ; 28ade
Function28b22: ; 28b22
call RotateThreePalettesRight
call ClearScreen
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call WaitBGMap2
xor a
@@ -1686,7 +1688,7 @@ LinkTrade: ; 28b87
call GetPokemonName
ld hl, UnknownText_0x28eb8
bccoord 1, 14
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
call LoadStandardMenuDataHeader
hlcoord 10, 7
ld b, 3
@@ -1900,7 +1902,7 @@ LinkTrade: ; 28b87
call DelayFrames
call ClearTileMap
call LoadFontsBattleExtra
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
ld a, [hLinkPlayerNumber]
cp $1
@@ -1934,26 +1936,26 @@ LinkTrade: ; 28b87
callab EvolvePokemon
call ClearScreen
call LoadTradeScreenBorder
- call Function28eff
+ call SetTradeRoomBGPals
callba Link_WaitBGMap
ld b, $1
pop af
ld c, a
cp MEW
- jr z, .asm_28e49
+ jr z, .loop
ld a, [CurPartySpecies]
cp MEW
- jr z, .asm_28e49
+ jr z, .loop
ld b, $2
ld a, c
cp CELEBI
- jr z, .asm_28e49
+ jr z, .loop
ld a, [CurPartySpecies]
cp CELEBI
- jr z, .asm_28e49
+ jr z, .loop
ld b, $0
-.asm_28e49
+.loop
ld a, b
ld [wPlayerLinkAction], a
push bc
@@ -1961,17 +1963,17 @@ LinkTrade: ; 28b87
pop bc
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
- jr z, .asm_28e63
+ jr z, .save
ld a, b
and a
- jr z, .asm_28e63
+ jr z, .save
ld a, [wOtherPlayerLinkAction]
cp b
- jr nz, .asm_28e49
+ jr nz, .loop
-.asm_28e63
- callba Function14a58
- callba MobileFn_1060af
+.save
+ callba SaveAfterLinkTrade
+ callba TrainerRankings_Trades
callba BackupMobileEventIndex
ld c, 40
call DelayFrames
@@ -2027,8 +2029,8 @@ LoadTradeScreenBorder: ; 28ef8
ret
; 28eff
-Function28eff: ; 28eff
- callba Function16d6a7
+SetTradeRoomBGPals: ; 28eff
+ callba LoadTradeRoomBGPals_ ; just a nested farcall; so wasteful
call SetPalettes
ret
; 28f09
@@ -2148,7 +2150,7 @@ Special_EnterTimeCapsule: ; 29c7b
ld c, 10
call DelayFrames
ld a, $4
- call Function29f17
+ call Link_EnsureSync
ld c, 40
call DelayFrames
xor a
@@ -2197,7 +2199,7 @@ WaitForOtherPlayerToExit: ; 29c92
ld [rIE], a
pop af
ld [rIF], a
- ld hl, wcf5b
+ ld hl, wLinkTimeoutFrames
xor a
ld [hli], a
ld [hl], a
@@ -2238,7 +2240,7 @@ Special_SetBitsForTimeCapsuleRequest: ; 29cfa
Special_WaitForLinkedFriend: ; 29d11
ld a, [wPlayerLinkAction]
and a
- jr z, .asm_29d2f
+ jr z, .no_link_action
ld a, $2
ld [rSB], a
xor a
@@ -2251,17 +2253,17 @@ Special_WaitForLinkedFriend: ; 29d11
call DelayFrame
call DelayFrame
-.asm_29d2f
+.no_link_action
ld a, $2
- ld [wcf5c], a
+ ld [wLinkTimeoutFrames + 1], a
ld a, $ff
- ld [wcf5b], a
-.asm_29d39
+ ld [wLinkTimeoutFrames], a
+.loop
ld a, [hLinkPlayerNumber]
cp $2
- jr z, .asm_29d79
+ jr z, .connected
cp $1
- jr z, .asm_29d79
+ jr z, .connected
ld a, -1
ld [hLinkPlayerNumber], a
ld a, $2
@@ -2272,16 +2274,16 @@ Special_WaitForLinkedFriend: ; 29d11
ld [rSC], a
ld a, $80
ld [rSC], a
- ld a, [wcf5b]
+ ld a, [wLinkTimeoutFrames]
dec a
- ld [wcf5b], a
- jr nz, .asm_29d68
- ld a, [wcf5c]
+ ld [wLinkTimeoutFrames], a
+ jr nz, .not_done
+ ld a, [wLinkTimeoutFrames + 1]
dec a
- ld [wcf5c], a
- jr z, .asm_29d8d
+ ld [wLinkTimeoutFrames + 1], a
+ jr z, .done
-.asm_29d68
+.not_done
ld a, $1
ld [rSB], a
ld a, $1
@@ -2289,19 +2291,19 @@ Special_WaitForLinkedFriend: ; 29d11
ld a, $81
ld [rSC], a
call DelayFrame
- jr .asm_29d39
+ jr .loop
-.asm_29d79
+.connected
call LinkDataReceived
call DelayFrame
call LinkDataReceived
- ld c, $32
+ ld c, 50
call DelayFrames
ld a, $1
ld [ScriptVar], a
ret
-.asm_29d8d
+.done
xor a
ld [ScriptVar], a
ret
@@ -2310,7 +2312,7 @@ Special_WaitForLinkedFriend: ; 29d11
Special_CheckLinkTimeout: ; 29d92
ld a, $1
ld [wPlayerLinkAction], a
- ld hl, wcf5b
+ ld hl, wLinkTimeoutFrames
ld a, $3
ld [hli], a
xor a
@@ -2320,19 +2322,19 @@ Special_CheckLinkTimeout: ; 29d92
ld [hVBlank], a
call DelayFrame
call DelayFrame
- call Function29e0c
+ call Link_CheckCommunicationError
xor a
ld [hVBlank], a
ld a, [ScriptVar]
and a
ret nz
- jp Function29f04
+ jp Link_ResetSerialRegistersAfterLinkClosure
; 29dba
Function29dba: ; 29dba
ld a, $5
ld [wPlayerLinkAction], a
- ld hl, wcf5b
+ ld hl, wLinkTimeoutFrames
ld a, $3
ld [hli], a
xor a
@@ -2342,7 +2344,7 @@ Function29dba: ; 29dba
ld [hVBlank], a
call DelayFrame
call DelayFrame
- call Function29e0c
+ call Link_CheckCommunicationError
ld a, [ScriptVar]
and a
jr z, .vblank
@@ -2357,11 +2359,11 @@ Function29dba: ; 29dba
jr nz, .script_var
ld a, $6
ld [wPlayerLinkAction], a
- ld hl, wcf5b
+ ld hl, wLinkTimeoutFrames
ld a, $1
ld [hli], a
ld [hl], $32
- call Function29e0c
+ call Link_CheckCommunicationError
ld a, [wOtherPlayerLinkMode]
cp $6
jr z, .vblank
@@ -2377,40 +2379,40 @@ Function29dba: ; 29dba
ret
; 29e0c
-Function29e0c: ; 29e0c
+Link_CheckCommunicationError: ; 29e0c
xor a
ld [hFFCA], a
- ld a, [wcf5b]
+ ld a, [wLinkTimeoutFrames]
ld h, a
- ld a, [wcf5c]
+ ld a, [wLinkTimeoutFrames + 1]
ld l, a
push hl
- call Function29e3b
+ call .CheckConnected
pop hl
- jr nz, .asm_29e2f
- call Function29e47
- call Function29e53
- call Function29e3b
- jr nz, .asm_29e2f
- call Function29e47
+ jr nz, .load_true
+ call .AcknowledgeSerial
+ call .ConvertDW
+ call .CheckConnected
+ jr nz, .load_true
+ call .AcknowledgeSerial
xor a
- jr .asm_29e31
+ jr .load_scriptvar
-.asm_29e2f
+.load_true
ld a, $1
-.asm_29e31
+.load_scriptvar
ld [ScriptVar], a
- ld hl, wcf5b
+ ld hl, wLinkTimeoutFrames
xor a
ld [hli], a
ld [hl], a
ret
; 29e3b
-Function29e3b: ; 29e3b
- call Function87d
- ld hl, wcf5b
+.CheckConnected: ; 29e3b
+ call WaitLinkTransfer
+ ld hl, wLinkTimeoutFrames
ld a, [hli]
inc a
ret nz
@@ -2419,17 +2421,19 @@ Function29e3b: ; 29e3b
ret
; 29e47
-Function29e47: ; 29e47
- ld b, $a
-.asm_29e49
+.AcknowledgeSerial: ; 29e47
+ ld b, 10
+.loop
call DelayFrame
call LinkDataReceived
dec b
- jr nz, .asm_29e49
+ jr nz, .loop
ret
; 29e53
-Function29e53: ; 29e53
+.ConvertDW: ; 29e53
+ ; [wLinkTimeoutFrames] = ((hl - $100) / 4) + $100
+ ; = (hl / 4) + $c0
dec h
srl h
rr l
@@ -2437,9 +2441,9 @@ Function29e53: ; 29e53
rr l
inc h
ld a, h
- ld [wcf5b], a
+ ld [wLinkTimeoutFrames], a
ld a, l
- ld [wcf5c], a
+ ld [wLinkTimeoutFrames + 1], a
ret
; 29e66
@@ -2448,12 +2452,11 @@ Special_TryQuickSave: ; 29e66
push af
callba Link_SaveGame
ld a, $1
- jr nc, .asm_29e75
+ jr nc, .return_result
xor a
-
-.asm_29e75
+.return_result
ld [ScriptVar], a
- ld c, $1e
+ ld c, 30
call DelayFrames
pop af
ld [wd265], a
@@ -2462,7 +2465,7 @@ Special_TryQuickSave: ; 29e66
Special_CheckBothSelectedSameRoom: ; 29e82
ld a, [wd265]
- call Function29f17
+ call Link_EnsureSync
push af
call LinkDataReceived
call DelayFrame
@@ -2523,19 +2526,19 @@ Special_Colosseum: ; 29ed9
Special_CloseLink: ; 29eee
xor a
ld [wLinkMode], a
- ld c, $3
+ ld c, 3
call DelayFrames
- jp Function29f04
+ jp Link_ResetSerialRegistersAfterLinkClosure
; 29efa
Special_FailedLinkToPast: ; 29efa
ld c, 40
call DelayFrames
ld a, $e
- jp Function29f17
+ jp Link_EnsureSync
; 29f04
-Function29f04: ; 29f04
+Link_ResetSerialRegistersAfterLinkClosure: ; 29f04
ld c, 3
call DelayFrames
ld a, -1
@@ -2548,7 +2551,7 @@ Function29f04: ; 29f04
ret
; 29f17
-Function29f17: ; 29f17
+Link_EnsureSync: ; 29f17
add $d0
ld [wPlayerLinkAction], a
ld [wcf57], a
diff --git a/engine/link_trade.asm b/engine/link_trade.asm
index 4f0198549..96401f188 100755
--- a/engine/link_trade.asm
+++ b/engine/link_trade.asm
@@ -25,7 +25,7 @@ Function16d43b: ; 16d43b
call ClearSprites
callba __LoadTradeScreenBorder ; useless to farcall
callba Function16d42e ; useless to farcall
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call SetPalettes
call WaitBGMap
@@ -145,8 +145,8 @@ LinkComms_LoadPleaseWaitTextboxBorderGFX: ; 16d69a
ret
; 16d6a7
-Function16d6a7: ; 16d6a7
- callba Function49811
+LoadTradeRoomBGPals_: ; 16d6a7
+ callba LoadTradeRoomBGPals
ret
; 16d6ae
@@ -171,7 +171,7 @@ LinkTextbox: ; 16d6ca
Function16d6ce: ; 16d6ce
call LoadStandardMenuDataHeader
call Function16d6e1
- callba Function87d
+ callba WaitLinkTransfer
call Call_ExitMenu
call WaitBGMap2
ret
diff --git a/engine/main_menu.asm b/engine/main_menu.asm
index bad1682c7..c3b30d2d0 100755
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -4,9 +4,9 @@ INCBIN "gfx/unknown/049c0c.2bpp"
MainMenu: ; 49cdc
xor a
- ld [wc2d7], a
+ ld [wDisableTextAcceleration], a
call Function49ed0
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call SetPalettes
ld hl, GameTimerPause
diff --git a/engine/map_object_action.asm b/engine/map_object_action.asm
index 63748ce6a..a7ab87200 100755
--- a/engine/map_object_action.asm
+++ b/engine/map_object_action.asm
@@ -14,23 +14,23 @@
; 445f
Pointers445f: ; 445f
- dw SetFacingStanding, SetFacingStanding ; 00
- dw Function44b5, SetFacingCurrent ; 01 standing?
- dw Function44c1, SetFacingCurrent ; 02 walking?
- dw Function4508, SetFacingCurrent ; 03 bumping?
- dw Function4529, SetFacingCurrent ; 04
- dw Function4539, SetFacingStanding ; 05
- dw Function456e, Function456e ; 06
- dw Function457b, SetFacingStanding ; 07
- dw Function4582, Function4582 ; 08
- dw Function4589, Function4589 ; 09
- dw Function4590, Function45a4 ; 0a
- dw Function45ab, SetFacingCurrent ; 0c
- dw Function45be, Function45be ; 0b
- dw Function45c5, Function45c5 ; 0d
- dw Function45da, SetFacingStanding ; 0e
- dw Function45ed, SetFacingStanding ; 0f
- dw Function44e4, SetFacingCurrent ; 10
+ dw SetFacingStanding, SetFacingStanding ; 00
+ dw SetFacingStandAction, SetFacingCurrent ; 01 standing?
+ dw SetFacingStepAction, SetFacingCurrent ; 02 walking?
+ dw SetFacingBumpAction, SetFacingCurrent ; 03 bumping?
+ dw SetFacingCounterclockwiseSpin, SetFacingCurrent ; 04
+ dw SetFacingCounterclockwiseSpin2, SetFacingStanding ; 05
+ dw SetFacingFish, SetFacingFish ; 06
+ dw SetFacingShadow, SetFacingStanding ; 07
+ dw SetFacingEmote, SetFacingEmote ; 08
+ dw SetFacingBigDollSym, SetFacingBigDollSym ; 09
+ dw SetFacingBounce, SetFacingFreezeBounce ; 0a
+ dw SetFacingWeirdTree, SetFacingCurrent ; 0b
+ dw SetFacingBigDollAsym, SetFacingBigDollAsym ; 0c
+ dw SetFacingBigDoll, SetFacingBigDoll ; 0d
+ dw SetFacingBoulderDust, SetFacingStanding ; 0e
+ dw SetFacingGrassShake, SetFacingStanding ; 0f
+ dw SetFacingSkyfall, SetFacingCurrent ; 10
; 44a3
SetFacingStanding: ; 44a3
@@ -42,23 +42,23 @@ SetFacingStanding: ; 44a3
SetFacingCurrent: ; 44aa
call GetSpriteDirection
- or 0 ; useless
+ or FACING_STEP_DOWN_0 ; useless
ld hl, OBJECT_FACING_STEP
add hl, bc
ld [hl], a
ret
; 44b5
-Function44b5: ; 44b5
+SetFacingStandAction: ; 44b5
ld hl, OBJECT_FACING_STEP
add hl, bc
ld a, [hl]
and 1
- jr nz, Function44c1
+ jr nz, SetFacingStepAction
jp SetFacingCurrent
; 44c1
-Function44c1: ; 44c1
+SetFacingStepAction: ; 44c1
ld hl, OBJECT_FLAGS1
add hl, bc
bit SLIDING, [hl]
@@ -77,7 +77,7 @@ Function44c1: ; 44c1
ld d, a
call GetSpriteDirection
- or 0 ; useless
+ or FACING_STEP_DOWN_0 ; useless
or d
ld hl, OBJECT_FACING_STEP
add hl, bc
@@ -85,7 +85,7 @@ Function44c1: ; 44c1
ret
; 44e4
-Function44e4: ; 44e4
+SetFacingSkyfall: ; 44e4
ld hl, OBJECT_FLAGS1
add hl, bc
bit SLIDING, [hl]
@@ -104,7 +104,7 @@ Function44e4: ; 44e4
ld d, a
call GetSpriteDirection
- or 0 ; useless
+ or FACING_STEP_DOWN_0 ; useless
or d
ld hl, OBJECT_FACING_STEP
add hl, bc
@@ -112,7 +112,7 @@ Function44e4: ; 44e4
ret
; 4508
-Function4508: ; 4508
+SetFacingBumpAction: ; 4508
ld hl, OBJECT_FLAGS1
add hl, bc
bit SLIDING, [hl]
@@ -130,7 +130,7 @@ Function4508: ; 4508
ld d, a
call GetSpriteDirection
- or 0 ; useless
+ or FACING_STEP_DOWN_0 ; useless
or d
ld hl, OBJECT_FACING_STEP
add hl, bc
@@ -138,24 +138,28 @@ Function4508: ; 4508
ret
; 4529
-Function4529: ; 4529
- call Function453f
+SetFacingCounterclockwiseSpin: ; 4529
+ call CounterclockwiseSpinAction
ld hl, OBJECT_FACING
add hl, bc
ld a, [hl]
- or 0 ; useless
+ or FACING_STEP_DOWN_0 ; useless
ld hl, OBJECT_FACING_STEP
add hl, bc
ld [hl], a
ret
; 4539
-Function4539: ; 4539
- call Function453f
+SetFacingCounterclockwiseSpin2: ; 4539
+ call CounterclockwiseSpinAction
jp SetFacingStanding
; 453f
-Function453f: ; 453f
+CounterclockwiseSpinAction: ; 453f
+; Here, OBJECT_STEP_FRAME consists of two 2-bit components,
+; using only bits 0,1 and 4,5.
+; bits 0,1 is a timer (4 overworld frames)
+; bits 4,5 determines the facing - the direction is counterclockwise.
ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
@@ -195,39 +199,39 @@ Function453f: ; 453f
db OW_DOWN, OW_RIGHT, OW_UP, OW_LEFT
; 456e
-Function456e: ; 456e
+SetFacingFish: ; 456e
call GetSpriteDirection
rrca
rrca
- add $10
+ add FACING_FISH_DOWN
ld hl, OBJECT_FACING_STEP
add hl, bc
ld [hl], a
ret
; 457b
-Function457b: ; 457b
+SetFacingShadow: ; 457b
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], FACING_15
+ ld [hl], FACING_SHADOW
ret
; 4582
-Function4582: ; 4582 emote
+SetFacingEmote: ; 4582 emote
ld hl, OBJECT_FACING_STEP
add hl, bc
ld [hl], FACING_EMOTE
ret
; 4589
-Function4589: ; 4589
+SetFacingBigDollSym: ; 4589
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], FACING_17
+ ld [hl], FACING_BIG_DOLL_SYM
ret
; 4590
-Function4590: ; 4590
+SetFacingBounce: ; 4590
ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
@@ -235,21 +239,21 @@ Function4590: ; 4590
and %00001111
ld [hl], a
and %00001000
- jr z, Function45a4
+ jr z, SetFacingFreezeBounce
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], FACING_04
+ ld [hl], FACING_STEP_UP_0
ret
; 45a4
-Function45a4: ; 45a4
+SetFacingFreezeBounce: ; 45a4
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], 0
+ ld [hl], FACING_STEP_DOWN_0
ret
; 45ab
-Function45ab: ; 45ab
+SetFacingWeirdTree: ; 45ab
ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
@@ -258,28 +262,28 @@ Function45ab: ; 45ab
and %00001100
rrca
rrca
- add $18
+ add FACING_WEIRD_TREE_0
ld hl, OBJECT_FACING_STEP
add hl, bc
ld [hl], a
ret
; 45be
-Function45be: ; 45be
+SetFacingBigDollAsym: ; 45be
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], FACING_16
+ ld [hl], FACING_BIG_DOLL_ASYM
ret
; 45c5
-Function45c5: ; 45c5
+SetFacingBigDoll: ; 45c5
ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS]
- ld d, FACING_17
+ ld d, FACING_BIG_DOLL_SYM ; symmetric
cp SPRITE_BIG_SNORLAX
jr z, .ok
cp SPRITE_BIG_LAPRAS
jr z, .ok
- ld d, FACING_16
+ ld d, FACING_BIG_DOLL_ASYM ; asymmetric
.ok
ld hl, OBJECT_FACING_STEP
@@ -288,7 +292,7 @@ Function45c5: ; 45c5
ret
; 45da
-Function45da: ; 45da
+SetFacingBoulderDust: ; 45da
ld hl, OBJECT_STEP_FRAME
add hl, bc
inc [hl]
@@ -297,15 +301,15 @@ Function45da: ; 45da
ld hl, OBJECT_FACING_STEP
add hl, bc
and 2
- ld a, FACING_1C
+ ld a, FACING_BOULDER_DUST_1
jr z, .ok
- inc a ; FACING_1D
+ inc a ; FACING_BOULDER_DUST_2
.ok
ld [hl], a
ret
; 45ed
-Function45ed: ; 45ed
+SetFacingGrassShake: ; 45ed
ld hl, OBJECT_STEP_FRAME
add hl, bc
inc [hl]
@@ -313,9 +317,9 @@ Function45ed: ; 45ed
ld hl, OBJECT_FACING_STEP
add hl, bc
and 4
- ld a, FACING_1E
+ ld a, FACING_GRASS_1
jr z, .ok
- inc a ; FACING_1F
+ inc a ; FACING_GRASS_2
.ok
ld [hl], a
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index 7a38f3ffe..3f63030ec 100644
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -137,7 +137,7 @@ Function437b: ; 437b
cp STEP_TYPE_SLEEP
ret z
.ok3
- ld hl, Pointers4b45
+ ld hl, StepTypesJumptable
rst JumpTable
ret
@@ -268,9 +268,9 @@ EndSpriteMovement: ; 467b
ld [hl], a
ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
-rept 3
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
ld [hl], a ; OBJECT_30
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
@@ -776,7 +776,7 @@ MapObjectMovementPattern: ; 47dd
ld [hl], STANDING
ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], PERSON_ACTION_09
+ ld [hl], PERSON_ACTION_BIG_SNORLAX
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_04
@@ -789,7 +789,7 @@ MapObjectMovementPattern: ; 47dd
ld [hl], STANDING
ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], PERSON_ACTION_0A
+ ld [hl], PERSON_ACTION_BOUNCE
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_04
@@ -864,7 +864,7 @@ MapObjectMovementPattern: ; 47dd
call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], PERSON_ACTION_07
+ ld [hl], PERSON_ACTION_SHADOW
ld hl, OBJECT_STEP_DURATION
add hl, de
ld a, [hl]
@@ -921,7 +921,7 @@ MapObjectMovementPattern: ; 47dd
call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], PERSON_ACTION_0E
+ ld [hl], PERSON_ACTION_BOULDER_DUST
ld hl, OBJECT_STEP_DURATION
add hl, de
ld a, [hl]
@@ -965,7 +965,7 @@ MapObjectMovementPattern: ; 47dd
call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], PERSON_ACTION_0F
+ ld [hl], PERSON_ACTION_GRASS_SHAKE
ld hl, OBJECT_STEP_DURATION
add hl, de
ld a, [hl]
@@ -1084,7 +1084,7 @@ SetRandomStepDuration: ; 4b2d
ret
; 4b45
-Pointers4b45: ; 4b45
+StepTypesJumptable: ; 4b45
; These pointers use OBJECT_STEP_TYPE. See constants/sprite_constants.asm
dw ObjectMovementReset ; 00
dw MapObjectMovementPattern ; unused
@@ -1804,7 +1804,7 @@ SkyfallTop: ; 4f83
.Init:
ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], PERSON_ACTION_10
+ ld [hl], PERSON_ACTION_SKYFALL
ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], 16
@@ -1876,8 +1876,8 @@ Function5000: ; unscripted?
ld a, [wPlayerNextMovement]
ld hl, wPlayerMovement
ld [hl], a
-; load [wPlayerNextMovement] with movement_step_sleep_1
- ld a, movement_step_sleep_1
+; load [wPlayerNextMovement] with movement_step_sleep
+ ld a, movement_step_sleep
ld [wPlayerNextMovement], a
; recover the previous value of [wPlayerNextMovement]
ld a, [hl]
@@ -1987,7 +1987,7 @@ ApplyMovementToFollower: ; 54b8
cp d
ret nz
ld a, e
- cp movement_step_sleep_1
+ cp movement_step_sleep
ret z
cp movement_step_end
ret z
@@ -1995,7 +1995,7 @@ ApplyMovementToFollower: ; 54b8
ret z
cp movement_step_bump
ret z
- cp movement_turn_step_right + 1
+ cp movement_slow_step
ret c
push af
ld hl, wFollowerMovementQueueLength
@@ -2034,7 +2034,7 @@ GetFollowerNextMovementByte: ; 54e6
.done
call .CancelFollowIfLeaderMissing
ret c
- ld a, movement_step_sleep_1
+ ld a, movement_step_sleep
ret
.CancelFollowIfLeaderMissing:
@@ -2209,7 +2209,7 @@ Function55e0:: ; 55e0
xor a
.loop
ld [hMapObjectIndexBuffer], a
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .ok
call Function565c
.ok
@@ -2260,7 +2260,7 @@ Function5629: ; 5629
cp NUM_OBJECT_STRUCTS
ret nc
call GetObjectStruct
- call GetObjectSprite
+ call DoesObjectHaveASprite
ret z
call Function5673
ret
@@ -2363,7 +2363,7 @@ Function56a3: ; 56a3
; 56cd
Function56cd: ; 56cd
- ld a, [wFollowNotExactPersonX]
+ ld a, [wPlayerBGMapOffsetX]
ld d, a
ld hl, OBJECT_SPRITE_X_OFFSET
add hl, bc
@@ -2392,7 +2392,7 @@ Function56cd: ; 56cd
sub $20
.ok3
ld [hUsedSpriteIndex], a
- ld a, [wFollowNotExactPersonY]
+ ld a, [wPlayerBGMapOffsetY]
ld e, a
ld hl, OBJECT_SPRITE_Y_OFFSET
add hl, bc
@@ -2489,7 +2489,7 @@ HandleNPCStep:: ; 576a
xor a
.loop
ld [hMapObjectIndexBuffer], a
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .next
call Function437b
.next
@@ -2505,11 +2505,11 @@ HandleNPCStep:: ; 576a
; 579d
RefreshPlayerSprite: ; 579d
- ld a, movement_step_sleep_1
+ ld a, movement_step_sleep
ld [wPlayerNextMovement], a
ld [wPlayerMovement], a
xor a
- ld [wd04e], a
+ ld [wPlayerTurningDirection], a
ld [PlayerObjectStepFrame], a
call .TryResetPlayerAction
callba CheckWarpFacingDown
@@ -2662,7 +2662,7 @@ Function587a: ; 587a
xor a
.loop
push af
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .next
ld hl, OBJECT_FLAGS2
add hl, bc
@@ -2707,7 +2707,7 @@ Function58b9:: ; 58b9
xor a
.loop
push af
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .next
ld hl, OBJECT_FLAGS2
add hl, bc
@@ -2817,19 +2817,19 @@ _UpdateSprites:: ; 5920
ret
; 5958
-Function5958: ; 5958
+ApplyBGMapAnchorToObjects: ; 5958
push hl
push de
push bc
- ld a, [wFollowNotExactPersonX]
+ ld a, [wPlayerBGMapOffsetX]
ld d, a
- ld a, [wFollowNotExactPersonY]
+ ld a, [wPlayerBGMapOffsetY]
ld e, a
ld bc, ObjectStructs
ld a, NUM_OBJECT_STRUCTS
.loop
push af
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .skip
ld hl, OBJECT_SPRITE_X
add hl, bc
@@ -2850,8 +2850,8 @@ Function5958: ; 5958
dec a
jr nz, .loop
xor a
- ld [wFollowNotExactPersonX], a
- ld [wFollowNotExactPersonY], a
+ ld [wPlayerBGMapOffsetX], a
+ ld [wPlayerBGMapOffsetY], a
pop bc
pop de
pop hl
@@ -2881,7 +2881,7 @@ PRIORITY_HIGH EQU $30
ld hl, wMovementPointer
.loop
push hl
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .skip
ld hl, OBJECT_FACING_STEP
add hl, bc
@@ -2986,7 +2986,7 @@ PRIORITY_HIGH EQU $30
add [hl]
add 8
ld e, a
- ld a, [wFollowNotExactPersonX]
+ ld a, [wPlayerBGMapOffsetX]
add e
ld [hFFBF], a
ld hl, OBJECT_SPRITE_Y
@@ -2997,7 +2997,7 @@ PRIORITY_HIGH EQU $30
add [hl]
add 12
ld e, a
- ld a, [wFollowNotExactPersonY]
+ ld a, [wPlayerBGMapOffsetY]
add e
ld [hFFC0], a
ld hl, OBJECT_FACING_STEP
diff --git a/engine/map_setup.asm b/engine/map_setup.asm
index 952c12ac1..dc013ffdd 100644
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -204,9 +204,9 @@ ReadMapSetupScript: ; 1541d
ld c, a
ld b, 0
ld hl, MapSetupCommands
-rept 3
add hl, bc
-endr
+ add hl, bc
+ add hl, bc
; bank
ld b, [hl]
@@ -258,8 +258,8 @@ MapSetupCommands: ; 15440
dba LoadMapPalettes ; 11
dba LoadWildMonData ; 12
dba RefreshMapSprites ; 13
- dba RunCallback_05_03 ; 14
- dba RunCallback_03 ; 15
+ dba HandleNewMap ; 14
+ dba InitCommandQueue ; 15
dba LoadObjectsRunCallback_02 ; 16
dba LoadSpawnPoint ; 17
dba EnterMapConnection ; 18
@@ -289,7 +289,7 @@ MapSetupCommands: ; 15440
DontScrollText: ; 154ca
xor a
- ld [wc2d7], a
+ ld [wDisableTextAcceleration], a
ret
; 154cf
diff --git a/engine/mart.asm b/engine/mart.asm
index f756d3bc2..7002902cc 100755
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -145,9 +145,8 @@ GetMart: ; 15b31
.IsAMart:
ld hl, Marts
-rept 2
add hl, de
-endr
+ add hl, de
ld e, [hl]
inc hl
ld d, [hl]
@@ -393,9 +392,8 @@ LoadBuyMenuText: ; 15c7d
pop af
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -405,9 +403,8 @@ endr
MartAskPurchaseQuantity: ; 15c91
call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
-rept 2
inc hl
-endr
+ inc hl
ld a, [hl]
and a
jp z, StandardMartAskPurchaseQuantity
@@ -421,9 +418,9 @@ GetMartDialogGroup: ; 15ca3
ld e, a
ld d, 0
ld hl, .MartTextFunctionPointers
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ret
; 15cb0
@@ -579,9 +576,9 @@ BargainShopAskPurchaseQuantity:
ld h, [hl]
ld l, a
inc hl
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
inc hl
ld a, [hli]
ld [hMoneyTemp + 2], a
@@ -620,9 +617,9 @@ RooftopSaleAskPurchaseQuantity:
ld h, [hl]
ld l, a
inc hl
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
inc hl
ld e, [hl]
inc hl
@@ -666,9 +663,9 @@ MenuDataHeader_Buy: ; 0x15e18
ld c, a
ld b, 0
ld hl, wMartItem1BCD
-rept 3
add hl, bc
-endr
+ add hl, bc
+ add hl, bc
push de
ld d, h
ld e, l
diff --git a/engine/menu.asm b/engine/menu.asm
index 870ca89bf..e84d8d597 100755
--- a/engine/menu.asm
+++ b/engine/menu.asm
@@ -296,7 +296,7 @@ Function241d5: ; 241d5
call Place2DMenuCursor
.loop
call Move2DMenuCursor
- call Function10402d ; BUG: This function is in another bank.
+ call HDMATransferTileMapToWRAMBank3 ; BUG: This function is in another bank.
; Pointer in current bank (9) is bogus.
call .loop2
jr nc, .done
@@ -319,7 +319,7 @@ Function241d5: ; 241d5
ret c
ld c, 1
ld b, 3
- call Function10062d ; BUG: This function is in another bank.
+ call AdvanceMobileInactivityTimerAndCheckExpired ; BUG: This function is in another bank.
; Pointer in current bank (9) is bogus.
ret c
callba Function100337
@@ -836,8 +836,8 @@ _InitVerticalMenuCursor:: ; 2446d
ld [hli], a
; wCursorOffCharacter, wCursorCurrentTile
xor a
-rept 3
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
ret
; 244c3
diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm
index 4b7f03bfb..7e8136235 100755
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -38,11 +38,11 @@ LoadMenuMonIcon: ; 8e83f
.Jumptable: ; 8e854 (23:6854)
- dw Function8e8d5 ; party menu
- dw Function8e961 ; naming screen
- dw Function8e97d ; moves (?)
+ dw PartyMenu_InitAnimatedMonIcon ; party menu
+ dw NamingScreen_InitAnimatedMonIcon ; naming screen
+ dw MoveList_InitAnimatedMonIcon ; moves (?)
dw Trade_LoadMonIconGFX ; trade
- dw Function8e898 ; mobile
+ dw Mobile_InitAnimatedMonIcon ; mobile
dw Mobile_InitPartyMenuBGPal71 ; mobile
dw .GetPartyMenuMonIcon ; unused
@@ -84,8 +84,8 @@ LoadMenuMonIcon: ; 8e83f
ld [hl], a
ret
-Function8e898: ; 8e898 (23:6898)
- call Function8e8d5
+Mobile_InitAnimatedMonIcon: ; 8e898 (23:6898)
+ call PartyMenu_InitAnimatedMonIcon
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld a, SPRITE_ANIM_SEQ_NULL
@@ -121,7 +121,7 @@ Mobile_InitPartyMenuBGPal71: ; 8e8b1 (23:68b1)
ld [wc608 + 1], a
ret
-Function8e8d5: ; 8e8d5 (23:68d5)
+PartyMenu_InitAnimatedMonIcon: ; 8e8d5 (23:68d5)
call InitPartyMenuIcon
call .SpawnItemIcon
call SetPartyMonIconAnimSpeed
@@ -144,11 +144,11 @@ Function8e8d5: ; 8e8d5 (23:68d5)
pop bc
pop hl
jr c, .mail
- ld a, $3
+ ld a, SPRITE_ANIM_FRAMESET_03
jr .okay
.mail
- ld a, $2
+ ld a, SPRITE_ANIM_FRAMESET_02
.okay
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
@@ -169,9 +169,10 @@ InitPartyMenuIcon: ; 8e908 (23:6908)
call GetMemIconGFX
ld a, [hObjectStructIndexBuffer]
; y coord
-rept 4
add a
-endr
+ add a
+ add a
+ add a
add $1c
ld d, a
; x coord
@@ -217,7 +218,7 @@ SetPartyMonIconAnimSpeed: ; 8e936 (23:6936)
db $00, $40, $80
; 8e961
-Function8e961: ; 8e961 (23:6961)
+NamingScreen_InitAnimatedMonIcon: ; 8e961 (23:6961)
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
@@ -231,7 +232,7 @@ Function8e961: ; 8e961 (23:6961)
ld [hl], SPRITE_ANIM_SEQ_NULL
ret
-Function8e97d: ; 8e97d (23:697d)
+MoveList_InitAnimatedMonIcon: ; 8e97d (23:697d)
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
diff --git a/engine/move_mon.asm b/engine/move_mon.asm
index 310eab8c2..e07237d68 100755
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -266,15 +266,15 @@ endr
ld [de], a
inc de
ld hl, EnemyMonStatus
- ; Copy EnemyMonStatus
+ ; Copy EnemyMonStatus
ld a, [hli]
ld [de], a
inc de
- ; Copy EnemyMonUnused
+ ; Copy EnemyMonUnused
ld a, [hli]
ld [de], a
inc de
- ; Copy EnemyMonHP
+ ; Copy EnemyMonHP
ld a, [hli]
ld [de], a
inc de
@@ -452,8 +452,8 @@ SentGetPkmnIntoFromBox: ; db3f
ld hl, wBreedMon1Species
jr z, .breedmon
- ; we want to sent a Pkmn into the Box
- ; so check if there's enough space
+ ; we want to sent a Pkmn into the Box
+ ; so check if there's enough space
ld hl, sBoxCount
ld a, [hl]
cp MONS_PER_BOX
@@ -654,7 +654,7 @@ SentGetPkmnIntoFromBox: ; db3f
ld a, [sBoxCount]
dec a
ld b, a
- call Functiondcb6
+ call RestorePPofDepositedPokemon
.CloseSRAM_And_ClearCarryFlag:
call CloseSRAM
and a
@@ -667,7 +667,7 @@ CloseSRAM_And_SetCarryFlag: ; dcb1
ret
; dcb6
-Functiondcb6: ; dcb6
+RestorePPofDepositedPokemon: ; dcb6
ld a, b
ld hl, sBoxMons
ld bc, BOXMON_STRUCT_LENGTH
@@ -696,10 +696,10 @@ Functiondcb6: ; dcb6
ld a, [MonType]
push af
ld b, 0
-.asm_dcec
+.loop
ld a, [hli]
and a
- jr z, .asm_dd18
+ jr z, .done
ld [TempMonMoves], a
ld a, BOXMON
ld [MonType], a
@@ -722,9 +722,9 @@ Functiondcb6: ; dcb6
inc b
ld a, b
cp NUM_MOVES
- jr c, .asm_dcec
+ jr c, .loop
-.asm_dd18
+.done
pop af
ld [MonType], a
pop af
@@ -973,7 +973,7 @@ SentPkmnIntoBox: ; de6e
ld [de], a
inc de
- ; Set all 5 Experience Values to 0
+ ; Set all 5 Experience Values to 0
xor a
ld b, 2 * 5
.loop2
@@ -1025,7 +1025,7 @@ SentPkmnIntoBox: ; de6e
call CopyBytes
ld b, 0
- call Functiondcb6
+ call RestorePPofDepositedPokemon
call CloseSRAM
scf
@@ -1459,9 +1459,9 @@ CalcPkmnStatC: ; e17b
ld a, [hl]
swap a
and $1
-rept 3
add a
-endr
+ add a
+ add a
ld b, a
ld a, [hli]
and $1
diff --git a/engine/move_mon_wo_mail.asm b/engine/move_mon_wo_mail.asm
new file mode 100755
index 000000000..d3b4e78a5
--- /dev/null
+++ b/engine/move_mon_wo_mail.asm
@@ -0,0 +1,133 @@
+InsertPokemonIntoBox: ; 51322
+ ld a, BANK(sBoxCount)
+ call GetSRAMBank
+ ld hl, sBoxCount
+ call InsertSpeciesIntoBoxOrParty
+ ld a, [sBoxCount]
+ dec a
+ ld [wd265], a
+ ld hl, sBoxMonNicknames
+ ld bc, PKMN_NAME_LENGTH
+ ld de, wBufferMonNick
+ call InsertDataIntoBoxOrParty
+ ld a, [sBoxCount]
+ dec a
+ ld [wd265], a
+ ld hl, sBoxMonOT
+ ld bc, NAME_LENGTH
+ ld de, wBufferMonOT
+ call InsertDataIntoBoxOrParty
+ ld a, [sBoxCount]
+ dec a
+ ld [wd265], a
+ ld hl, sBoxMons
+ ld bc, BOXMON_STRUCT_LENGTH
+ ld de, wBufferMon
+ call InsertDataIntoBoxOrParty
+ ld hl, wBufferMonMoves
+ ld de, TempMonMoves
+ ld bc, NUM_MOVES
+ call CopyBytes
+ ld hl, wBufferMonPP
+ ld de, TempMonPP
+ ld bc, NUM_MOVES
+ call CopyBytes
+ ld a, [CurPartyMon]
+ ld b, a
+ callba RestorePPofDepositedPokemon
+ jp CloseSRAM
+
+InsertPokemonIntoParty: ; 5138b
+ ld hl, PartyCount
+ call InsertSpeciesIntoBoxOrParty
+ ld a, [PartyCount]
+ dec a
+ ld [wd265], a
+ ld hl, PartyMonNicknames
+ ld bc, PKMN_NAME_LENGTH
+ ld de, wBufferMonNick
+ call InsertDataIntoBoxOrParty
+ ld a, [PartyCount]
+ dec a
+ ld [wd265], a
+ ld hl, PartyMonOT
+ ld bc, NAME_LENGTH
+ ld de, wBufferMonOT
+ call InsertDataIntoBoxOrParty
+ ld a, [PartyCount]
+ dec a
+ ld [wd265], a
+ ld hl, PartyMons
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld de, wBufferMon
+ call InsertDataIntoBoxOrParty
+ ret
+
+InsertSpeciesIntoBoxOrParty: ; 513cb
+ inc [hl]
+ inc hl
+ ld a, [CurPartyMon]
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [CurPartySpecies]
+ ld c, a
+.loop
+ ld a, [hl]
+ ld [hl], c
+ inc hl
+ inc c
+ ld c, a
+ jr nz, .loop
+ ret
+
+InsertDataIntoBoxOrParty: ; 513e0
+ push de
+ push hl
+ push bc
+ ld a, [wd265]
+ dec a
+ call AddNTimes
+ push hl
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+.loop
+ push bc
+ ld a, [wd265]
+ ld b, a
+ ld a, [CurPartyMon]
+ cp b
+ pop bc
+ jr z, .insert
+ push hl
+ push de
+ push bc
+ call CopyBytes
+ pop bc
+ pop de
+ pop hl
+ push hl
+ ld a, l
+ sub c
+ ld l, a
+ ld a, h
+ sbc b
+ ld h, a
+ pop de
+ ld a, [wd265]
+ dec a
+ ld [wd265], a
+ jr .loop
+
+.insert
+ pop bc
+ pop hl
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld d, h
+ ld e, l
+ pop hl
+ call CopyBytes
+ ret
diff --git a/engine/movement.asm b/engine/movement.asm
index 5a05aab49..7b58e4023 100644
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -55,8 +55,8 @@ MovementPointers: ; 5075
dw Movement_fast_jump_step_up ; 35
dw Movement_fast_jump_step_left ; 36
dw Movement_fast_jump_step_right ; 37
- dw Movement_remove_sliding ; 38
- dw Movement_set_sliding ; 39
+ dw Movement_remove_sliding ; 38
+ dw Movement_set_sliding ; 39
dw Movement_remove_fixed_facing ; 3a
dw Movement_fix_facing ; 3b
dw Movement_show_person ; 3c
@@ -85,10 +85,10 @@ MovementPointers: ; 5075
dw Movement_hide_emote ; 53
dw Movement_show_emote ; 54
dw Movement_step_shake ; 55
- dw Movement_tree_shake ; 56
+ dw Movement_tree_shake ; 56
dw Movement_rock_smash ; 57
dw Movement_return_dig ; 58
- dw Movement_skyfall_top ; 59
+ dw Movement_skyfall_top ; 59
; 5129
@@ -365,7 +365,7 @@ Movement_tree_shake: ; 5279
ld hl, OBJECT_ACTION
add hl, bc
- ld [hl], PERSON_ACTION_0B
+ ld [hl], PERSON_ACTION_WEIRD_TREE
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm
index 5e6d317ba..f2d29b08a 100755
--- a/engine/mysterygift.asm
+++ b/engine/mysterygift.asm
@@ -2,13 +2,13 @@ DoMysteryGift: ; 1048ba (41:48ba)
call ClearTileMap
call ClearSprites
call WaitBGMap
- call Function105153
+ call InitMysteryGiftLayout
hlcoord 3, 8
ld de, .String_PressAToLink_BToCancel
call PlaceString
call WaitBGMap
- callba Function2c642
- call Function1050fb
+ callba PrepMysteryGiftDataToSend
+ call MysteryGift_ClearTrainerData
ld a, $2
ld [wca01], a
ld a, $14
@@ -27,7 +27,7 @@ DoMysteryGift: ; 1048ba (41:48ba)
call ClearTileMap
call EnableLCD
call WaitBGMap
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call SetPalettes
pop de
@@ -63,7 +63,7 @@ DoMysteryGift: ; 1048ba (41:48ba)
jr z, .skip_append_save
call .SaveMysteryGiftTrainerName
callba RestoreMobileEventIndex
- callba MobileFn_1060a9
+ callba TrainerRankings_MysteryGift
callba BackupMobileEventIndex
.skip_append_save
ld a, [wMysteryGiftPartnerSentDeco]
@@ -239,14 +239,16 @@ Function104a95: ; 104a95 (41:4a95)
di
callba ClearChannels
call Function104d5e
+
.loop2
call Function104d96
call Function104ddd
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $10
jp z, Function104bd0
cp $6c
jr nz, .loop2
+
ld a, [hPrintNum9]
cp $2
jr z, Function104b22
@@ -256,7 +258,8 @@ Function104a95: ; 104a95 (41:4a95)
jr nz, .ly_loop
call Function104b49
jp nz, Function104bd0
- jr asm_104b0a
+ jr Function104b0a
+ ; Delay frame
.ly_loop
ld a, [rLY]
cp $90
@@ -264,12 +267,15 @@ Function104a95: ; 104a95 (41:4a95)
ld c, rRP % $100
ld a, $c0
ld [$ff00+c], a
- ld b, $f0
+ ld b, 240 ; This might have been intended as a 4-second timeout buffer.
+ ; However, it is reset with each frame.
.loop3
push bc
- call Function105038
+ call MysteryGift_ReadJoypad
+
ld b, $2
ld c, rRP % $100
+ ; Delay frame
.ly_loop2
ld a, [$ff00+c]
and b
@@ -284,24 +290,25 @@ Function104a95: ; 104a95 (41:4a95)
ld a, [rLY]
cp $90
jr c, .ly_loop3
+
ld a, b
pop bc
dec b
- jr z, .loop2
+ jr z, .loop2 ; we never jump here
or a
jr nz, .loop2
- ld a, [hMoneyTemp + 1]
- bit 1, a
+ ; Check if we've pressed the B button
+ ld a, [hMGJoypadReleased]
+ bit B_BUTTON_F, a
jr z, .loop3
ld a, $10
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
jp Function104bd0
Function104b04: ; 104b04 (41:4b04)
call Function104b40
jp nz, Function104bd0
-
-asm_104b0a: ; 104b0a (41:4b0a)
+Function104b0a: ; 104b0a (41:4b0a)
call Function104d38
jp nz, Function104bd0
call Function104b88
@@ -331,7 +338,7 @@ Function104b40: ; 104b40 (41:4b40)
Function104b49: ; 104b49 (41:4b49)
call Function105033
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
ld a, [hPrintNum1]
@@ -346,7 +353,7 @@ Function104b49: ; 104b49 (41:4b49)
call Function104d4e
ret nz
call Function10502e
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
call Function104d43
@@ -357,7 +364,7 @@ Function104b49: ; 104b49 (41:4b49)
call Function104d56
ret nz
call Function105033
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
@@ -369,7 +376,7 @@ Function104b88: ; 104b88 (41:4b88)
call Function104d4e
ret nz
call Function10502e
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
call Function104d43
@@ -379,7 +386,7 @@ Function104b88: ; 104b88 (41:4b88)
call Function104d56
ret nz
call Function105033
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
ld a, [hPrintNum1]
@@ -393,29 +400,29 @@ Function104b88: ; 104b88 (41:4b88)
call Function104d4e
ret nz
call Function10502e
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
Function104bd0: ; 104bd0 (41:4bd0)
nop
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $10
- jr z, .asm_104c18
+ jr z, .quit
cp $6c
- jr nz, .asm_104c18
+ jr nz, .quit
ld hl, wca01
dec [hl]
- jr z, .asm_104c18
+ jr z, .quit
ld hl, wMysteryGiftTrainerData
ld de, wMysteryGiftPartnerData
ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData
call CopyBytes
ld a, [wMysteryGiftTrainerData]
cp $3
- jr nc, .asm_104c18
+ jr nc, .quit
callba StagePartyDataForMysteryGift
- call Function1050fb
+ call MysteryGift_ClearTrainerData
ld a, $26
ld [wca02], a
ld a, [hPrintNum9]
@@ -424,12 +431,14 @@ Function104bd0: ; 104bd0 (41:4bd0)
call Function104d43
jr nz, Function104bd0
jp Function104b04
+
.asm_104c10
call Function104d38
jr nz, Function104bd0
jp Function104b22
-.asm_104c18
- ld a, [hPrintNum10]
+
+.quit
+ ld a, [hMGStatusFlags]
push af
call Function104da0
xor a
@@ -449,7 +458,7 @@ Function104c2d: ; 104c2d (41:4c2d)
.asm_104c37
call Function104d96
call Function104ddd
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $10
jp z, Function104d1c
cp $6c
@@ -485,7 +494,7 @@ Function104c8a: ; 104c8a (41:4c8a)
call Function104d56
ret nz
call Function105033
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
ld a, [hPrintNum1]
@@ -500,7 +509,7 @@ Function104c8a: ; 104c8a (41:4c8a)
call Function104d4e
ret nz
call Function10502e
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
call Function104d43
@@ -511,7 +520,7 @@ Function104c8a: ; 104c8a (41:4c8a)
call Function104d56
ret nz
call Function105033
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
@@ -523,7 +532,7 @@ Function104cd2: ; 104cd2 (41:4cd2)
call Function104d4e
ret nz
call Function10502e
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
call Function104d43
@@ -533,7 +542,7 @@ Function104cd2: ; 104cd2 (41:4cd2)
call Function104d56
ret nz
call Function105033
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret nz
ld a, [hPrintNum1]
@@ -548,13 +557,13 @@ Function104cd2: ; 104cd2 (41:4cd2)
call Function104d4e
ret nz
call Function10502e
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
Function104d1c: ; 104d1c (41:4d1c)
nop
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
push af
call Function104da0
xor a
@@ -569,33 +578,33 @@ Function104d1c: ; 104d1c (41:4d1c)
Function104d32: ; 104d32 (41:4d32)
ld a, $80
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
and a
ret
Function104d38: ; 104d38 (41:4d38)
call Function104d96
call Function104e46
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
Function104d43: ; 104d43 (41:4d43)
call Function104d96
call Function104dfe
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
Function104d4e: ; 104d4e (41:4d4e)
call Function104e93
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
Function104d56: ; 104d56 (41:4d56)
call Function104f57
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
cp $6c
ret
@@ -704,19 +713,19 @@ Function104ddd: ; 104ddd (41:4ddd)
ld a, $1
ld [hPrintNum9], a
.loop
- call Function105038
+ call MysteryGift_ReadJoypad
ld b, $2
ld c, rRP % $100
- ld a, [hMoneyTemp + 1]
- bit 1, a
+ ld a, [hMGJoypadReleased]
+ bit B_BUTTON_F, a
jr z, .next
ld a, $10
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
ret
.next
bit 0, a
- jr nz, asm_104e3a
+ jr nz, Function104e3a
ld a, [$ff00+c]
and b
jr nz, .loop
@@ -735,7 +744,7 @@ Function104dfe: ; 104dfe (41:4dfe)
call Function104da9
jp z, Function104f42
ld a, $6c
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
ld d, $3d
call Function104dd1
ld d, $5
@@ -748,17 +757,17 @@ Function104dfe: ; 104dfe (41:4dfe)
call Function104dd1
ret
-asm_104e3a: ; 104e3a (41:4e3a)
+Function104e3a: ; 104e3a (41:4e3a)
+ ; Wait a random amount of time
call Random
ld e, a
and $f
ld d, a
-.asm_104e41
+.loop
dec de
ld a, d
or e
- jr nz, .asm_104e41
-
+ jr nz, .loop
Function104e46: ; 104e46 (41:4e46)
ld a, $2
ld [hPrintNum9], a
@@ -788,13 +797,13 @@ Function104e46: ; 104e46 (41:4e46)
ld d, $3d
call Function104dd1
ld a, $6c
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
ret
Function104e8c: ; 104e8c (41:4e8c)
ld [rRP], a
ld a, $ff
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
ret
Function104e93: ; 104e93 (41:4e93)
@@ -824,7 +833,7 @@ Function104e93: ; 104e93 (41:4e93)
ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
ld b, $2
call Function104ed6
- ld hl, hPrintNum10
+ ld hl, hMGStatusFlags
ld b, $1
call Function104faf
ld a, [hPrintNum2]
@@ -902,21 +911,21 @@ Function104ed6: ; 104ed6 (41:4ed6)
ret
Function104f42: ; 104f42 (41:4f42)
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
or $2
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
ret
Function104f49: ; 104f49 (41:4f49)
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
or $1
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
ret
Function104f50: ; 104f50 (41:4f50)
- ld a, [hPrintNum10]
+ ld a, [hMGStatusFlags]
or $80
- ld [hPrintNum10], a
+ ld [hMGStatusFlags], a
ret
Function104f57: ; 104f57 (41:4f57)
@@ -960,7 +969,7 @@ Function104f57: ; 104f57 (41:4f57)
push de
ld d, $3d
call Function104dd1
- ld hl, hPrintNum10
+ ld hl, hMGStatusFlags
ld b, $1
call Function104ed6
pop de
@@ -986,7 +995,7 @@ Function104faf: ; 104faf (41:4faf)
cpl
ld b, a
xor a
- ld [hMoneyTemp + 2], a
+ ld [hMGJoypadPressed + 2], a
call Function104d86
.asm_104fd2
inc b
@@ -1009,10 +1018,10 @@ Function104faf: ; 104faf (41:4faf)
bit 1, a
jr nz, .asm_104fe5
.asm_104fed
- ld a, [hMoneyTemp + 2]
+ ld a, [hMGJoypadPressed + 2]
ld d, a
ld a, [rTIMA]
- ld [hMoneyTemp + 2], a
+ ld [hMGJoypadPressed + 2], a
sub d
cp $12
jr c, .asm_104ffd
@@ -1058,31 +1067,48 @@ Function105033: ; 105033 (41:5033)
ld b, $0
jp Function104f57
-Function105038: ; 105038 (41:5038)
- ld a, $20
+MysteryGift_ReadJoypad: ; 105038 (41:5038)
+; We can only get four inputs at a time.
+; We take d-pad first for no particular reason.
+ ld a, R_DPAD
ld [rJOYP], a
+; Read twice to give the request time to take.
ld a, [rJOYP]
ld a, [rJOYP]
+
+; The Joypad register output is in the lo nybble (inversed).
+; We make the hi nybble of our new container d-pad input.
cpl
and $f
swap a
+
+; We'll keep this in b for now.
ld b, a
- ld a, $10
+
+; Buttons make 8 total inputs (A, B, Select, Start).
+; We can fit this into one byte.
+ ld a, R_BUTTONS
ld [rJOYP], a
+; Wait for input to stabilize.
rept 6
ld a, [rJOYP]
endr
+; Buttons take the lo nybble.
cpl
and $f
or b
ld c, a
- ld a, [hMoneyTemp]
+; To get the delta we xor the last frame's input with the new one.
+ ld a, [hMGJoypadPressed]
xor c
+; Released this frame:
and c
- ld [hMoneyTemp + 1], a
+ ld [hMGJoypadReleased], a
+; Pressed this frame:
ld a, c
- ld [hMoneyTemp], a
+ ld [hMGJoypadPressed], a
ld a, $30
+; Reset the joypad register since we're done with it.
ld [rJOYP], a
ret
@@ -1179,7 +1205,7 @@ RestoreMysteryGift: ; 1050ea (41:50ea)
ld [de], a
jp CloseSRAM
-Function1050fb: ; 1050fb (41:50fb)
+MysteryGift_ClearTrainerData: ; 1050fb (41:50fb)
ld hl, wMysteryGiftTrainerData
xor a
ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData
@@ -1247,7 +1273,7 @@ StagePartyDataForMysteryGift: ; 10510b (41:510b)
ld [wca00], a
jp CloseSRAM
-Function105153: ; 105153 (41:5153)
+InitMysteryGiftLayout: ; 105153 (41:5153)
call ClearBGPalettes
call DisableLCD
ld hl, MysteryGiftGFX
@@ -1333,7 +1359,7 @@ Function105153: ; 105153 (41:5153)
ld [hl], $41
call EnableLCD
call WaitBGMap
- ld b, SCGB_1D
+ ld b, SCGB_MYSTERY_GIFT
call GetSGBLayout
call SetPalettes
ret
@@ -1398,7 +1424,7 @@ Function105688: ; 105688 (41:5688)
call PlaceString
call WaitBGMap
call Function10578c
- call Function1050fb
+ call MysteryGift_ClearTrainerData
ld a, $24
ld [wca02], a
ld a, [rIE]
@@ -1511,7 +1537,7 @@ Function105777: ; 105777 (41:5777)
call ClearTileMap
call EnableLCD
call WaitBGMap
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call SetPalettes
ret
diff --git a/engine/mysterygift2.asm b/engine/mysterygift2.asm
index 4fad773e1..4048ea533 100755
--- a/engine/mysterygift2.asm
+++ b/engine/mysterygift2.asm
@@ -1,4 +1,4 @@
-Function2c642: ; 2c642 (b:4642)
+PrepMysteryGiftDataToSend: ; 2c642 (b:4642)
ld de, wMysteryGiftStaging
ld a, $1
ld [de], a
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index d9fe253fb..d80b4717b 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -43,7 +43,7 @@ NamingScreen: ; 116c1
.SetUpNamingScreen: ; 116f8
call ClearBGPalettes
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call DisableLCD
call LoadNamingScreenGFX
@@ -65,9 +65,8 @@ NamingScreen: ; 116c1
ld e, a
ld d, 0
ld hl, .Jumptable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -401,9 +400,8 @@ NamingScreenJoypadLoop: ; 11915
ld e, a
ld d, $0
ld hl, .Jumptable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -662,9 +660,8 @@ NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
jr nz, .asm_11ade
ld a, $4
.asm_11ade
-rept 2
dec a
-endr
+ dec a
ld e, a
add a
add e
@@ -989,15 +986,15 @@ BoxNameInputUpper:
; 11e5d
GFX_11e5d: ; ????
-INCBIN "gfx/unknown/011e5d.2bpp"
+INCBIN "gfx/unknown/011e5d.1bpp"
; 11e6d
NamingScreenGFX_MiddleLine:
-INCBIN "gfx/unknown/011e65.2bpp"
+INCBIN "gfx/unknown/011e65.1bpp"
; 11e6d
NamingScreenGFX_UnderLine: ; 11e6d
-INCBIN "gfx/unknown/011e6d.2bpp"
+INCBIN "gfx/unknown/011e6d.1bpp"
; 11e75
_ComposeMailMessage: ; 11e75 (mail?)
@@ -1052,7 +1049,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
ld a, $e3
ld [rLCDC], a
call .initwNamingScreenMaxNameLength
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call WaitBGMap
call WaitTop
@@ -1164,9 +1161,8 @@ INCBIN "gfx/icon/mail2.2bpp"
ld e, a
ld d, 0
ld hl, .Jumptable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -1391,9 +1387,8 @@ ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
jr nz, .wrap_around_command_left
ld a, $4
.wrap_around_command_left
-rept 2
dec a
-endr
+ dec a
ld e, a
add a
add e
@@ -1476,9 +1471,8 @@ MailComposition_TryAddLastCharacter: ; 121ac (4:61ac)
jr nz, .asm_121c3
push hl
ld hl, wNamingScreenCurrNameLength
-rept 2
dec [hl]
-endr
+ dec [hl]
jr .asm_121c8
.asm_121c3
diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm
index 097c62017..f9ce7b04e 100755
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -320,7 +320,7 @@ IsNPCAtCoord: ; 7041
xor a
.loop
ld [hObjectStructIndexBuffer], a
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .next
ld hl, OBJECT_FLAGS1
@@ -490,7 +490,7 @@ Function7113: ; unreferenced
xor a
.loop
ld [hObjectStructIndexBuffer], a
- call GetObjectSprite
+ call DoesObjectHaveASprite
jr z, .next
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
diff --git a/engine/npctrade.asm b/engine/npctrade.asm
index a8d3b71aa..f28734ea9 100755
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -311,9 +311,8 @@ GetTradeAttribute: ; 0xfcdc2
ld e, a
ld d, 0
ld hl, NPCTrades
-rept 2
add hl, de
-endr
+ add hl, de
pop de
add hl, de
ret
@@ -458,9 +457,8 @@ PrintTradeText: ; fcf38
call AddNTimes
ld a, [wcf64]
ld c, a
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/options_menu.asm b/engine/options_menu.asm
index 00799395a..68c1883ee 100755
--- a/engine/options_menu.asm
+++ b/engine/options_menu.asm
@@ -32,7 +32,7 @@ _OptionsMenu: ; e41d0
inc a
ld [hBGMapMode], a
call WaitBGMap
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
call SetPalettes
@@ -85,9 +85,8 @@ GetOptionPointer: ; e42d6
ld e, a ; copy it to de
ld d, 0
ld hl, .Pointers
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -143,9 +142,8 @@ Options_TextSpeed: ; e42f5
.NonePressed:
ld b, 0
ld hl, .Strings
-rept 2
add hl, bc
-endr
+ add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
@@ -363,9 +361,8 @@ Options_Print: ; e4424
.NonePressed:
ld b, $0
ld hl, .Strings
-rept 2
add hl, bc
-endr
+ add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
diff --git a/engine/overworld.asm b/engine/overworld.asm
index 5e12b09a2..4d22e55b6 100755
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -23,7 +23,7 @@ Function14146: ; mobile
push af
res 7, [hl]
set 6, [hl]
- call RunCallback_04
+ call MapCallbackSprites_LoadUsedSpritesGFX
pop af
ld [wSpriteFlags], a
ret
@@ -35,7 +35,7 @@ Function14157: ; mobile
push af
set 7, [hl]
res 6, [hl]
- call RunCallback_04
+ call MapCallbackSprites_LoadUsedSpritesGFX
pop af
ld [wSpriteFlags], a
ret
@@ -43,7 +43,7 @@ Function14157: ; mobile
RefreshSprites:: ; 14168
call .Refresh
- call RunCallback_04
+ call MapCallbackSprites_LoadUsedSpritesGFX
ret
; 1416f
@@ -147,9 +147,8 @@ AddOutdoorSprites: ; 141ee
ld c, a
ld b, 0
ld hl, OutdoorSprites
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
@@ -165,7 +164,7 @@ endr
; 14209
-RunCallback_04: ; 14209
+MapCallbackSprites_LoadUsedSpritesGFX: ; 14209
ld a, MAPCALLBACK_SPRITES
call RunMapCallback
call GetUsedSprites
@@ -364,9 +363,8 @@ AddSpriteGFX: ; 142e5
jr z, .exists
and a
jr z, .new
-rept 2
inc hl
-endr
+ inc hl
dec c
jr nz, .loop
@@ -428,9 +426,8 @@ SortUsedSprites: ; 1431e
ld a, [de]
and a
jr nz, .FoundLastSprite
-rept 2
dec de
-endr
+ dec de
dec c
jr nz, .FindLastSprite
.FoundLastSprite:
@@ -472,16 +469,14 @@ endr
; Keep doing this until everything's in order.
.loop
-rept 2
dec de
-endr
+ dec de
dec c
jr nz, .CheckFollowing
pop hl
-rept 2
inc hl
-endr
+ inc hl
pop de
pop bc
dec c
diff --git a/engine/pack.asm b/engine/pack.asm
index ff80dce23..19b7fccbf 100644
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -1252,9 +1252,8 @@ Pack_JumptableNext: ; 10866 (4:4866)
Pack_GetJumptablePointer: ; 1086b
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -1300,9 +1299,8 @@ DrawPackGFX: ; 1089d
jr nz, .female
.male_dude
ld hl, PackGFXPointers
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld e, a
ld d, [hl]
diff --git a/engine/party_menu.asm b/engine/party_menu.asm
index 934e1458a..266451c37 100644
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -20,7 +20,7 @@ SelectTradeOrDaycareMon: ; 5001d
call ClearBGPalettes
call InitPartyMenuLayout
call WaitBGMap
- ld b, SCGB_0A
+ ld b, SCGB_PARTY_MENU
call GetSGBLayout
call SetPalettes
call DelayFrame
@@ -110,9 +110,8 @@ PlacePartyNicknames: ; 5009b
jr nz, .loop
.end
-rept 2
dec hl
-endr
+ dec hl
ld de, .CANCEL
call PlaceString
ret
@@ -161,7 +160,7 @@ PlacePartyHPBar: ; 500cf
inc b
dec c
jr nz, .loop
- ld b, SCGB_0A
+ ld b, SCGB_PARTY_MENU
call GetSGBLayout
ret
; 50117
@@ -219,9 +218,8 @@ PlacePartyMenuHPDigits: ; 50138
pop de
ld a, "/"
ld [hli], a
-rept 2
inc de
-endr
+ inc de
lb bc, 2, 3
call PrintNum
@@ -390,9 +388,8 @@ PlacePartyMonEvoStoneCompatibility: ; 5022f
ld e, a
ld d, 0
ld hl, EvosAttacksPointers
-rept 2
add hl, de
-endr
+ add hl, de
call .DetermineCompatibility
pop hl
call PlaceString
@@ -426,19 +423,16 @@ endr
ld a, [hli]
and a
jr z, .nope
-rept 2
inc hl
-endr
+ inc hl
cp EVOLVE_ITEM
jr nz, .loop2
-rept 2
dec hl
-endr
+ dec hl
ld a, [CurItem]
cp [hl]
-rept 2
inc hl
-endr
+ inc hl
jr nz, .loop2
ld de, .string_able
ret
@@ -613,9 +607,8 @@ GetPartyMenuTilemapPointers: ; 50396
ld e, a
ld d, 0
ld hl, .Pointers
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -794,9 +787,8 @@ PrintPartyMenuText: ; 5049a
ld hl, PartyMenuStrings
ld e, a
ld d, $0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld d, [hl]
ld e, a
@@ -932,9 +924,8 @@ PrintPartyMenuActionText: ; 50566
.PrintText: ; 505c1
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/phone.asm b/engine/phone.asm
index 7f96dd2c3..f5f39218d 100644
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -266,9 +266,8 @@ CheckSpecialPhoneCall:: ; 90136 (24:4136)
jr nc, .NoPhoneCall
call .DoSpecialPhoneCall
-rept 2
inc hl
-endr
+ inc hl
ld a, [hli]
ld e, a
push hl
@@ -472,7 +471,7 @@ UnknownScript_0x90261: ; 0x90261
RingTwice_StartCall: ; 9026f
call .Ring
call .Ring
- callba MobileFn_1060d3
+ callba TrainerRankings_PhoneCalls
ret
; 9027c
@@ -501,7 +500,7 @@ PhoneCall:: ; 9029a
ld [PhoneCallerHi], a
call Phone_FirstOfTwoRings
call Phone_FirstOfTwoRings
- callba MobileFn_1060d3
+ callba TrainerRankings_PhoneCalls
ret
; 902b3
@@ -520,9 +519,8 @@ Phone_CallerTextboxWithName2: ; 902c9
call Phone_CallerTextbox
hlcoord 1, 2
ld [hl], $62
-rept 2
inc hl
-endr
+ inc hl
ld a, [PhoneScriptBank]
ld b, a
ld a, [PhoneCallerLo]
@@ -621,9 +619,8 @@ Function90363: ; 90363 (24:4363)
call Phone_CallerTextbox
hlcoord 1, 1
ld [hl], $62
-rept 2
inc hl
-endr
+ inc hl
ld d, h
ld e, l
pop bc
@@ -699,9 +696,8 @@ GetCallerName: ; 903a9 (24:43a9)
ld c, b
ld b, 0
ld hl, NonTrainerCallerNames
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld e, a
ld d, [hl]
diff --git a/engine/player_movement.asm b/engine/player_movement.asm
index d02d1e5b2..2f6660135 100755
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -1,7 +1,7 @@
DoPlayerMovement:: ; 80000
call .GetDPad
- ld a, movement_step_sleep_1
+ ld a, movement_step_sleep
ld [MovementAnimation], a
xor a
ld [wd041], a
@@ -233,12 +233,12 @@ DoPlayerMovement:: ; 80000
; If the player is turning, change direction first. This also lets
; the player change facing without moving by tapping a direction.
- ld a, [wd04e]
+ ld a, [wPlayerTurningDirection]
cp 0
- jr nz, .asm_80169
+ jr nz, .not_turning
ld a, [WalkingDirection]
cp STANDING
- jr z, .asm_80169
+ jr z, .not_turning
ld e, a
ld a, [PlayerDirection]
@@ -246,7 +246,7 @@ DoPlayerMovement:: ; 80000
rrca
and 3
cp e
- jr z, .asm_80169
+ jr z, .not_turning
ld a, STEP_TURN
call .DoStep
@@ -254,7 +254,7 @@ DoPlayerMovement:: ; 80000
scf
ret
-.asm_80169
+.not_turning
xor a
ret
; 8016b
@@ -465,10 +465,10 @@ DoPlayerMovement:: ; 80000
ld a, [hl]
ld [MovementAnimation], a
- ld hl, .InPlace
+ ld hl, .FinishFacing
add hl, de
ld a, [hl]
- ld [wd04e], a
+ ld [wPlayerTurningDirection], a
ld a, 4
ret
@@ -481,54 +481,54 @@ DoPlayerMovement:: ; 80000
dw .SlideStep
dw .TurningStep
dw .BackJumpStep
- dw .InPlace
+ dw .FinishFacing
.SlowStep:
- slow_step_down
- slow_step_up
- slow_step_left
- slow_step_right
+ slow_step DOWN
+ slow_step UP
+ slow_step LEFT
+ slow_step RIGHT
.NormalStep:
- step_down
- step_up
- step_left
- step_right
+ step DOWN
+ step UP
+ step LEFT
+ step RIGHT
.FastStep:
- big_step_down
- big_step_up
- big_step_left
- big_step_right
+ big_step DOWN
+ big_step UP
+ big_step LEFT
+ big_step RIGHT
.JumpStep:
- jump_step_down
- jump_step_up
- jump_step_left
- jump_step_right
+ jump_step DOWN
+ jump_step UP
+ jump_step LEFT
+ jump_step RIGHT
.SlideStep:
- fast_slide_step_down
- fast_slide_step_up
- fast_slide_step_left
- fast_slide_step_right
+ fast_slide_step DOWN
+ fast_slide_step UP
+ fast_slide_step LEFT
+ fast_slide_step RIGHT
.BackJumpStep:
- jump_step_up
- jump_step_down
- jump_step_right
- jump_step_left
+ jump_step UP
+ jump_step DOWN
+ jump_step RIGHT
+ jump_step LEFT
.TurningStep:
- turn_step_down
- turn_step_up
- turn_step_left
- turn_step_right
-.InPlace:
- db $80 + movement_turn_head_down
- db $80 + movement_turn_head_up
- db $80 + movement_turn_head_left
- db $80 + movement_turn_head_right
+ turn_step DOWN
+ turn_step UP
+ turn_step LEFT
+ turn_step RIGHT
+.FinishFacing:
+ db $80 + DOWN
+ db $80 + UP
+ db $80 + LEFT
+ db $80 + RIGHT
; 802b3
.StandInPlace: ; 802b3
ld a, 0
- ld [wd04e], a
- ld a, movement_step_sleep_1
+ ld [wPlayerTurningDirection], a
+ ld a, movement_step_sleep
ld [MovementAnimation], a
xor a
ret
@@ -536,7 +536,7 @@ DoPlayerMovement:: ; 80000
._WalkInPlace: ; 802bf
ld a, 0
- ld [wd04e], a
+ ld [wPlayerTurningDirection], a
ld a, movement_step_bump
ld [MovementAnimation], a
xor a
@@ -549,7 +549,7 @@ DoPlayerMovement:: ; 80000
call CheckStandingOnIce
ret nc
- ld a, [wd04e]
+ ld a, [wPlayerTurningDirection]
cp 0
ret z
@@ -812,7 +812,7 @@ DoPlayerMovement:: ; 80000
; 80404
CheckStandingOnIce:: ; 80404
- ld a, [wd04e]
+ ld a, [wPlayerTurningDirection]
cp 0
jr z, .not_ice
cp $f0
@@ -833,14 +833,14 @@ CheckStandingOnIce:: ; 80404
ret
; 80422
-Function80422:: ; 80422
+StopPlayerForEvent:: ; 80422
ld hl, wPlayerNextMovement
- ld a, movement_step_sleep_1
+ ld a, movement_step_sleep
cp [hl]
ret z
ld [hl], a
ld a, 0
- ld [wd04e], a
+ ld [wPlayerTurningDirection], a
ret
; 80430
diff --git a/engine/player_object.asm b/engine/player_object.asm
index 930d71b3e..6b38a6328 100755
--- a/engine/player_object.asm
+++ b/engine/player_object.asm
@@ -474,7 +474,7 @@ CopyTempObjectToObjectStruct: ; 8286
sub [hl]
and $f
swap a
- ld hl, wFollowNotExactPersonY
+ ld hl, wPlayerBGMapOffsetY
sub [hl]
ld hl, OBJECT_SPRITE_Y
add hl, de
@@ -492,7 +492,7 @@ CopyTempObjectToObjectStruct: ; 8286
sub [hl]
and $f
swap a
- ld hl, wFollowNotExactPersonX
+ ld hl, wPlayerBGMapOffsetX
sub [hl]
ld hl, OBJECT_SPRITE_X
add hl, de
@@ -516,7 +516,7 @@ CopyTempObjectToObjectStruct: ; 8286
TrainerWalkToPlayer: ; 831e
ld a, [hLastTalked]
call InitMovementBuffer
- ld a, movement_step_sleep_1
+ ld a, movement_step_sleep
call AppendToMovementBuffer
ld a, [wd03f]
dec a
@@ -598,10 +598,10 @@ Special_SurfStartStep: ; 8379
ret
.movement_data
- slow_step_down
- slow_step_up
- slow_step_left
- slow_step_right
+ slow_step DOWN
+ slow_step UP
+ slow_step LEFT
+ slow_step RIGHT
FollowNotExact:: ; 839e
push bc
@@ -660,7 +660,7 @@ FollowNotExact:: ; 839e
sub [hl]
and $f
swap a
- ld hl, wFollowNotExactPersonX
+ ld hl, wPlayerBGMapOffsetX
sub [hl]
ld hl, OBJECT_SPRITE_X
add hl, de
@@ -673,7 +673,7 @@ FollowNotExact:: ; 839e
sub [hl]
and $f
swap a
- ld hl, wFollowNotExactPersonY
+ ld hl, wPlayerBGMapOffsetY
sub [hl]
ld hl, OBJECT_SPRITE_Y
add hl, de
@@ -827,12 +827,12 @@ QueueFollowerFirstStep: ; 848a
jr z, .check_y
jr c, .left
and a
- ld a, movement_step_right
+ ld a, movement_step + RIGHT
ret
.left
and a
- ld a, movement_step_left
+ ld a, movement_step + LEFT
ret
.check_y
@@ -843,12 +843,12 @@ QueueFollowerFirstStep: ; 848a
jr z, .same_xy
jr c, .up
and a
- ld a, movement_step_down
+ ld a, movement_step + DOWN
ret
.up
and a
- ld a, movement_step_up
+ ld a, movement_step + UP
ret
.same_xy
diff --git a/engine/player_step.asm b/engine/player_step.asm
index 48abcecbc..83158c1b7 100755
--- a/engine/player_step.asm
+++ b/engine/player_step.asm
@@ -26,12 +26,12 @@ _HandlePlayerStep:: ; d497 (3:5497)
ld d, a
ld a, [wPlayerStepVectorY]
ld e, a
- ld a, [wFollowNotExactPersonX]
+ ld a, [wPlayerBGMapOffsetX]
sub d
- ld [wFollowNotExactPersonX], a
- ld a, [wFollowNotExactPersonY]
+ ld [wPlayerBGMapOffsetX], a
+ ld a, [wPlayerBGMapOffsetY]
sub e
- ld [wFollowNotExactPersonY], a
+ ld [wPlayerBGMapOffsetY], a
ret
ScrollScreen:: ; d4d2 (3:54d2)
@@ -77,7 +77,7 @@ HandlePlayerStep: ; d4e5 (3:54e5)
ret
.mobile ; d509 (3:5509)
- callba MobileFn_10602e
+ callba TrainerRankings_StepCount
ret
.fail2 ; d510 (3:5510)
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
index 761b38874..e61a24964 100644
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -694,9 +694,9 @@ Pokedex_UpdateSearchScreen: ; 40471 (10:4471)
.show_search_results
ld [wDexListingEnd], a
ld a, [wDexListingScrollOffset]
- ld [wc7e0], a
+ ld [wDexListingScrollOffsetBackup], a
ld a, [wDexListingCursor]
- ld [wc7e1], a
+ ld [wDexListingCursorBackup], a
ld a, [wLastDexEntry]
ld [wcf65], a
xor a
@@ -777,9 +777,9 @@ Pokedex_UpdateSearchResultsScreen: ; 40562 (10:4562)
ret
.return_to_search_screen
- ld a, [wc7e0]
+ ld a, [wDexListingScrollOffsetBackup]
ld [wDexListingScrollOffset], a
- ld a, [wc7e1]
+ ld a, [wDexListingCursorBackup]
ld [wDexListingCursor], a
ld a, [wcf65]
ld [wLastDexEntry], a
@@ -823,7 +823,7 @@ Pokedex_UpdateUnownMode: ; 405df (10:45df)
call DelayFrame
call Pokedex_CheckSGB
jr nz, .decompress
- callba Function1ddf26
+ callba LoadSGBPokedexGFX2
jr .done
.decompress
@@ -2385,9 +2385,8 @@ Pokedex_ApplyUsualPals: ; 41427
Pokedex_LoadPointer: ; 41432
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index c2e73180a..d180ee875 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -516,7 +516,7 @@ Pokegear_UpdateClock: ; 90f86 (24:4f86)
callba PrintHoursMins
ld hl, .DayText
bccoord 6, 6
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
ret
; 90fa8 (24:4fa8)
@@ -711,7 +711,7 @@ PokegearMap_UpdateLandmarkName: ; 910b4
push de
callba GetLandmarkName
pop de
- callba Function1de2c5
+ callba TownMap_ConvertLineBreakCharacters
hlcoord 8, 0
ld [hl], $34
ret
diff --git a/engine/predef.asm b/engine/predef.asm
index f52127311..73bc937a3 100644
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -12,9 +12,9 @@ GetPredefPointer:: ; 854b
ld e, a
ld d, 0
ld hl, PredefPointers
-rept 3
- add hl,de
-endr
+ add hl, de
+ add hl, de
+ add hl, de
pop de
ld a, [hli]
@@ -64,7 +64,7 @@ PredefPointers:: ; 856b
add_predef CopyPkmnToTempMon
add_predef ListMoves ; $20
add_predef PlaceNonFaintStatus
- add_predef Function50cdb
+ add_predef Predef22
add_predef ListMovePP
add_predef GetGender
add_predef StatsScreenInit
@@ -78,7 +78,7 @@ PredefPointers:: ; 856b
add_predef GetUnownLetter
add_predef LoadPoisonBGPals
add_predef Predef2F
- add_predef Function9853 ; $30
+ add_predef InitSGBBorder ; $30
add_predef Predef_LoadSGBLayout
add_predef _Area
add_predef CheckContestMon
@@ -102,7 +102,7 @@ PredefPointers:: ; 856b
add_predef PlaceStatusString
add_predef LoadMonAnimation
add_predef AnimateFrontpic
- add_predef Functiond0669 ; $48
+ add_predef Predef48 ; $48
add_predef HOF_AnimateFrontpic
- dbw $ff, Function2d43 ; ????
+ dbw $ff, InexplicablyEmptyFunction ; ???
; 864c
diff --git a/engine/printer.asm b/engine/printer.asm
index 876e59efc..7dd2d4f4a 100755
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -1,814 +1,227 @@
-Function84000: ; 84000
- ld hl, OverworldMap
- lb bc, 4, 12
- xor a
- call Function842ab
- xor a
- ld [rSB], a
- ld [rSC], a
- ld [wc2d5], a
- ld hl, wc2d4
- set 0, [hl]
- ld a, [GBPrinter]
- ld [wcbfb], a
- xor a
- ld [wJumptableIndex], a
- ret
-; 84022
-
-Function84022: ; 84022
- ld a, [wJumptableIndex]
- ld e, a
- ld d, 0
- ld hl, .Jumptable
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 84031
-
-
-.Jumptable: ; 84031 (21:4031)
-
- dw Function84077
- dw Function84143
- dw Function84120
- dw Function84099
- dw Function84180
- dw Function8412e
- dw Function840c5
- dw Function84180
- dw Function84120
- dw Function840de
- dw Function84180
- dw Function84120
- dw Function841a1
- dw Function84063
- dw Function8406d
- dw Function84120
- dw Function84103
- dw Function84071
- dw Function841b0
- dw Function841b3
-
-
-Function84059: ; 84059 (21:4059)
- ld hl, wJumptableIndex
- inc [hl]
- ret
-
-Function8405e: ; 8405e (21:405e)
- ld hl, wJumptableIndex
- dec [hl]
- ret
-
-Function84063: ; 84063 (21:4063)
- xor a
- ld [wca89], a
- ld hl, wJumptableIndex
- set 7, [hl]
- ret
-
-Function8406d: ; 8406d (21:406d)
- call Function84059
- ret
-
-Function84071: ; 84071 (21:4071)
- ld a, $1
- ld [wJumptableIndex], a
- ret
-
-Function84077: ; 84077 (21:4077)
- call Function841fb
- ld hl, Unknown_842b7
- call Function841e2
- xor a
- ld [wca8e], a
- ld [wca8f], a
- ld a, [wcf65]
- ld [wca81], a
- call Function84059
- call Function841c3
- ld a, $1
- ld [wcbf8], a
- ret
-
-Function84099: ; 84099 (21:4099)
- call Function841fb
- ld hl, wca81
- ld a, [hl]
- and a
- jr z, Function840c5
- ld hl, Unknown_842c3
- call Function841e2
- call Function84260
- ld a, $80
- ld [wca8e], a
- ld a, $2
- ld [wca8f], a
- call Function84219
- call Function84059
- call Function841c3
- ld a, $2
- ld [wcbf8], a
- ret
-
-Function840c5: ; 840c5 (21:40c5)
- ld a, $6
- ld [wJumptableIndex], a
- ld hl, Unknown_842c9
- call Function841e2
- xor a
- ld [wca8e], a
- ld [wca8f], a
- call Function84059
- call Function841c3
- ret
-
-Function840de: ; 840de (21:40de)
- call Function841fb
- ld hl, Unknown_842bd
- call Function841e2
- call Function84249
- ld a, $4
- ld [wca8e], a
- ld a, $0
- ld [wca8f], a
- call Function84219
- call Function84059
- call Function841c3
- ld a, $3
- ld [wcbf8], a
- ret
-
-Function84103: ; 84103 (21:4103)
- call Function841fb
- ld hl, Unknown_842b7
- call Function841e2
- xor a
- ld [wca8e], a
- ld [wca8f], a
- ld a, [wcf65]
- ld [wca81], a
- call Function84059
- call Function841c3
- ret
-
-Function84120: ; 84120 (21:4120)
- ld hl, wca8b
- inc [hl]
- ld a, [hl]
- cp $6
- ret c
- xor a
- ld [hl], a
- call Function84059
- ret
-
-Function8412e: ; 8412e (21:412e)
- ld hl, wca8b
- inc [hl]
- ld a, [hl]
- cp $6
- ret c
- xor a
- ld [hl], a
- ld hl, wca81
- dec [hl]
- call Function8405e
- call Function8405e
- ret
-
-Function84143: ; 84143 (21:4143)
- ld a, [wc2d5]
- and a
- ret nz
- ld a, [wca88]
- cp $ff
- jr nz, .printer_connected
- ld a, [wca89]
- cp $ff
- jr z, .printer_error
-
-.printer_connected
- ld a, [wca88]
- cp $81
- jr nz, .printer_error
- ld a, [wca89]
- cp $0
- jr nz, .printer_error
- ld hl, wc2d4
- set 1, [hl]
- ld a, $5
- ld [wca8a], a
- call Function84059
- ret
-
-.printer_error
- ld a, $ff
- ld [wca88], a
- ld [wca89], a
- ld a, $e
- ld [wJumptableIndex], a
- ret
-
-Function84180: ; 84180 (21:4180)
- ld a, [wc2d5]
- and a
- ret nz
- ld a, [wca89]
- and $f0
- jr nz, .asm_8419b
- ld a, [wca89]
- and $1
- jr nz, .asm_84197
- call Function84059
- ret
-.asm_84197
- call Function8405e
- ret
-.asm_8419b
- ld a, $12
- ld [wJumptableIndex], a
- ret
-
-Function841a1: ; 841a1 (21:41a1)
- ld a, [wc2d5]
- and a
- ret nz
- ld a, [wca89]
- and $f3
- ret nz
- call Function84059
- ret
-
-Function841b0: ; 841b0 (21:41b0)
- call Function84059
-
-Function841b3: ; 841b3 (21:41b3)
- ld a, [wc2d5]
- and a
- ret nz
- ld a, [wca89]
- and $f0
- ret nz
- xor a
- ld [wJumptableIndex], a
- ret
-
-Function841c3: ; 841c3 (21:41c3)
- ld a, [wc2d5]
- and a
- jr nz, Function841c3
- xor a
- ld [wca8c], a
- ld [wca8d], a
- ld a, $1
- ld [wc2d5], a
- ld a, $88
- ld [rSB], a
- ld a, $1
- ld [rSC], a
- ld a, $81
- ld [rSC], a
- ret
-
-Function841e2: ; 841e2 (21:41e2)
- ld a, [hli]
- ld [wca82], a
- ld a, [hli]
- ld [wca83], a
- ld a, [hli]
- ld [wca84], a
- ld a, [hli]
- ld [wca85], a
- ld a, [hli]
- ld [wca86], a
- ld a, [hl]
- ld [wca87], a
- ret
-
-Function841fb: ; 841fb (21:41fb)
- xor a
- ld hl, wca82
-rept 3
- ld [hli], a
-endr
- ld [hl], a
- ld hl, wca86
- ld [hli], a
- ld [hl], a
- xor a
- ld [wca8e], a
- ld [wca8f], a
- ld hl, OverworldMap
- ld bc, $280
- call Function842ab
- ret
-
-Function84219: ; 84219 (21:4219)
- ld hl, 0
- ld bc, $4
- ld de, wca82
- call Function8423c
- ld a, [wca8e]
- ld c, a
- ld a, [wca8f]
- ld b, a
- ld de, OverworldMap
- call Function8423c
- ld a, l
- ld [wca86], a
- ld a, h
- ld [wca87], a
- ret
-
-Function8423c: ; 8423c (21:423c)
- ld a, [de]
- inc de
- add l
- jr nc, .asm_84242
- inc h
-.asm_84242
- ld l, a
- dec bc
- ld a, c
- or b
- jr nz, Function8423c
- ret
-
-Function84249: ; 84249 (21:4249)
- ld a, $1
- ld [OverworldMap], a
- ld a, [wcbfa]
- ld [wc801], a
- ld a, $e4
- ld [wc802], a
- ld a, [wcbfb]
- ld [wc803], a
- ret
-
-Function84260: ; 84260 (21:4260)
- ld a, [wca81]
- xor $ff
- ld d, a
- ld a, [wcf65]
- inc a
- add d
- ld hl, wca90
- ld de, $28
-.asm_84271
- and a
- jr z, .asm_84278
- add hl, de
- dec a
- jr .asm_84271
-.asm_84278
- ld e, l
- ld d, h
- ld hl, OverworldMap
- ld c, $28
-.asm_8427f
- ld a, [de]
- inc de
- push bc
- push de
- push hl
- swap a
- ld d, a
- and $f0
- ld e, a
- ld a, d
- and $f
- ld d, a
- and $8
- ld a, d
- jr nz, .asm_84297
- or $90
- jr .asm_84299
-.asm_84297
- or $80
-.asm_84299
- ld d, a
- lb bc, $21, 1
- call Request2bpp
- pop hl
- ld de, $10
- add hl, de
- pop de
- pop bc
- dec c
- jr nz, .asm_8427f
- ret
-
-Function842ab: ; 842ab
- push de
- ld e, a
-.asm_842ad
- ld [hl], e
- inc hl
- dec bc
- ld a, c
- or b
- jr nz, .asm_842ad
- ld a, e
- pop de
- ret
-; 842b7
-
-Unknown_842b7: db 1, 0, $00, 0, 1, 0
-Unknown_842bd: db 2, 0, $04, 0, 0, 0
-Unknown_842c3: db 4, 0, $80, 2, 0, 0
-Unknown_842c9: db 4, 0, $00, 0, 4, 0
-Unknown_842cf: db 8, 0, $00, 0, 8, 0 ; unused
-Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused
-; 842db
-
-
-_PrinterReceive:: ; 842db
- ld a, [wc2d5]
- add a
- ld e, a
- ld d, 0
- ld hl, .Jumptable
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 842ea
-
-
-.Jumptable: ; 842ea (21:42ea)
-
- dw Function8432f
- dw Function84330
- dw Function84339
- dw Function84343
- dw Function8434d
- dw Function84357
- dw Function84361
- dw Function8438b
- dw Function84395
- dw Function8439f
- dw Function843a8
- dw Function843b6
- dw Function84330
- dw Function843c0
- dw Function843c9
- dw Function843c9
- dw Function843c9
- dw Function843c0
- dw Function843c9
- dw Function8439f
- dw Function843a8
- dw Function843e6
- dw Function84330
- dw Function843d2
- dw Function843c9
- dw Function843c9
- dw Function843c9
- dw Function843d2
- dw Function843c9
- dw Function8439f
- dw Function843a8
- dw Function843b6
-
-
-Function8432a: ; 8432a (21:432a)
- ld hl, wc2d5
- inc [hl]
- ret
-
-Function8432f: ; 8432f (21:432f)
- ret
-
-Function84330: ; 84330 (21:4330)
- ld a, $33
- call Function843db
- call Function8432a
- ret
-
-Function84339: ; 84339 (21:4339)
- ld a, [wca82]
- call Function843db
- call Function8432a
- ret
-
-Function84343: ; 84343 (21:4343)
- ld a, [wca83]
- call Function843db
- call Function8432a
- ret
-
-Function8434d: ; 8434d (21:434d)
- ld a, [wca84]
- call Function843db
- call Function8432a
- ret
-
-Function84357: ; 84357 (21:4357)
- ld a, [wca85]
- call Function843db
- call Function8432a
- ret
-
-Function84361: ; 84361 (21:4361)
- ld hl, wca8e
- ld a, [hli]
- ld d, [hl]
- ld e, a
- or d
- jr z, .asm_84388
- dec de
- ld [hl], d
- dec hl
- ld [hl], e
- ld a, [wca8c]
- ld e, a
- ld a, [wca8d]
- ld d, a
- ld hl, OverworldMap
- add hl, de
- inc de
- ld a, e
- ld [wca8c], a
- ld a, d
- ld [wca8d], a
- ld a, [hl]
- call Function843db
- ret
-.asm_84388
- call Function8432a
-
-Function8438b: ; 8438b (21:438b)
- ld a, [wca86]
- call Function843db
- call Function8432a
- ret
-
-Function84395: ; 84395 (21:4395)
- ld a, [wca87]
- call Function843db
- call Function8432a
- ret
-
-Function8439f: ; 8439f (21:439f)
- ld a, $0
- call Function843db
- call Function8432a
- ret
-
-Function843a8: ; 843a8 (21:43a8)
- ld a, [rSB]
- ld [wca88], a
- ld a, $0
- call Function843db
- call Function8432a
- ret
-
-Function843b6: ; 843b6 (21:43b6)
- ld a, [rSB]
- ld [wca89], a
- xor a
- ld [wc2d5], a
- ret
-
-Function843c0: ; 843c0 (21:43c0)
- ld a, $f
- call Function843db
- call Function8432a
- ret
+INCLUDE "engine/printer/serial.asm"
-Function843c9: ; 843c9 (21:43c9)
- ld a, $0
- call Function843db
- call Function8432a
- ret
-
-Function843d2: ; 843d2 (21:43d2)
- ld a, $8
- call Function843db
- call Function8432a
- ret
-
-Function843db: ; 843db (21:43db)
- ld [rSB], a
- ld a, $1
- ld [rSC], a
- ld a, $81
- ld [rSC], a
- ret
-
-Function843e6: ; 843e6 (21:43e6)
- ld a, [rSB]
- ld [wca89], a
- xor a
- ld [wc2d5], a
- ret
-
-Function843f0: ; 843f0
-.asm_843f0
+SendScreenToPrinter: ; 843f0
+.loop
call JoyTextDelay
- call Function846f6
- jr c, .asm_8440f
+ call CheckCancelPrint
+ jr c, .cancel
ld a, [wJumptableIndex]
bit 7, a
- jr nz, .asm_8440d
- call Function84022
- call Function84757
- call Function84785
+ jr nz, .finished
+ call PrinterJumptableIteration
+ call CheckPrinterStatus
+ call PlacePrinterStatusString
call DelayFrame
- jr .asm_843f0
+ jr .loop
-.asm_8440d
+.finished
and a
ret
-.asm_8440f
+.cancel
scf
ret
; 84411
-Function84411: ; 84411
+Printer_CleanUpAfterSend: ; 84411
xor a
- ld [wc2d4], a
- ld [wc2d5], a
+ ld [wPrinterConnectionOpen], a
+ ld [wPrinterOpcode], a
ret
; 84419
-Function84419: ; 84419
+Printer_PrepareTileMapForPrint: ; 84419
push af
- call Function84000
+ call Printer_StartTransmission
pop af
ld [wcbfa], a
- call Function84728
+ call Printer_CopyTileMapToBuffer
ret
; 84425
-Function84425: ; 84425
+Printer_ExitPrinter: ; 84425
call ReturnToMapFromSubmenu
- call Function84753
+ call Printer_RestartMapMusic
ret
; 8442c
PrintDexEntry: ; 8442c
- ld a, [wcf65]
+ ld a, [wPrinterQueueLength]
push af
+
ld hl, VTiles1
ld de, FontInversed
lb bc, BANK(FontInversed), $80
call Request1bpp
+
xor a
ld [hPrinter], a
- call Function8474c
+ call Printer_PlayMusic
+
ld a, [rIE]
push af
xor a
ld [rIF], a
ld a, $9
ld [rIE], a
- call Function84000
+
+ call Printer_StartTransmission
ld a, $10
ld [wcbfa], a
callba PrintPage1
call ClearTileMap
- ld a, $e4
+ ld a, %11100100
call DmgToCgbBGPals
call DelayFrame
+
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], $4
- ld a, $8
- ld [wcf65], a
- call Function84742
- call Function843f0
- jr c, .asm_8449d
- call Function84411
+
+ ld a, 8 ; 16 rows
+ ld [wPrinterQueueLength], a
+ call Printer_ResetJoypadRegisters
+ call SendScreenToPrinter
+ jr c, .skip_second_page ; canceled or got an error
+
+ call Printer_CleanUpAfterSend
ld c, 12
call DelayFrames
xor a
ld [hBGMapMode], a
- call Function84000
+
+ call Printer_StartTransmission
ld a, $3
ld [wcbfa], a
callba PrintPage2
- call Function84742
- ld a, $4
- ld [wcf65], a
- call Function843f0
+ call Printer_ResetJoypadRegisters
+ ld a, 4
+ ld [wPrinterQueueLength], a
+ call SendScreenToPrinter
-.asm_8449d
+.skip_second_page
pop af
ld [hVBlank], a
- call Function84411
+ call Printer_CleanUpAfterSend
+
xor a
ld [rIF], a
pop af
ld [rIE], a
- call Function84425
- ld c, $8
-.asm_844ae
+
+ call Printer_ExitPrinter
+ ld c, 8
+.low_volume_delay_frames
call LowVolume
call DelayFrame
dec c
- jr nz, .asm_844ae
+ jr nz, .low_volume_delay_frames
+
pop af
- ld [wcf65], a
+ ld [wPrinterQueueLength], a
ret
; 844bc
PrintPCBox: ; 844bc (21:44bc)
- ld a, [wcf65]
+ ld a, [wPrinterQueueLength]
push af
- ld a, $9
- ld [wcf65], a
+ ld a, 18 / 2
+ ld [wPrinterQueueLength], a
+
ld a, e
- ld [wd004], a
+ ld [wAddrOfBoxToPrint], a
ld a, d
- ld [wd005], a
+ ld [wAddrOfBoxToPrint + 1], a
ld a, b
- ld [wd006], a
+ ld [wBankOfBoxToPrint], a
ld a, c
- ld [wd007], a
+ ld [wWhichBoxToPrint], a
+
xor a
ld [hPrinter], a
- ld [wd003], a
- call Function8474c
+ ld [wFinishedPrintingBox], a
+ call Printer_PlayMusic
+
ld a, [rIE]
push af
xor a
ld [rIF], a
- ld a, $9
+ ld a, %1001
ld [rIE], a
+
ld hl, hVBlank
ld a, [hl]
push af
- ld [hl], $4
+ ld [hl], %0100
+
xor a
ld [hBGMapMode], a
- call Function84817
- ld a, $10
- call Function84419
- call Function84559
- jr c, .asm_84545
- call Function84411
+ call PrintPCBox_Page1
+ ld a, $10 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
+ call Printer_ResetRegistersAndStartDataSend
+ jr c, .cancel
+
+ call Printer_CleanUpAfterSend
ld c, 12
call DelayFrames
xor a
ld [hBGMapMode], a
- call Function8486f
- ld a, $0
- call Function84419
- call Function84559
- jr c, .asm_84545
- call Function84411
+ call PrintPCBox_Page2
+ ld a, $0 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
+ call Printer_ResetRegistersAndStartDataSend
+ jr c, .cancel
+
+ call Printer_CleanUpAfterSend
ld c, 12
call DelayFrames
+
xor a
ld [hBGMapMode], a
- call Function84893
- ld a, $0
- call Function84419
- call Function84559
- jr c, .asm_84545
- call Function84411
+ call PrintPCBox_Page3
+ ld a, $0 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
+ call Printer_ResetRegistersAndStartDataSend
+ jr c, .cancel
+
+ call Printer_CleanUpAfterSend
ld c, 12
call DelayFrames
+
xor a
ld [hBGMapMode], a
- call Function848b7
- ld a, $3
- call Function84419
- call Function84559
-.asm_84545
+ call PrintPCBox_Page4
+ ld a, $3 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
+ call Printer_ResetRegistersAndStartDataSend
+.cancel
pop af
ld [hVBlank], a
- call Function84411
+ call Printer_CleanUpAfterSend
+
xor a
ld [rIF], a
pop af
ld [rIE], a
- call Function84425
+ call Printer_ExitPrinter
+
pop af
- ld [wcf65], a
+ ld [wPrinterQueueLength], a
ret
-Function84559: ; 84559 (21:4559)
- call Function84742
- call Function843f0
+Printer_ResetRegistersAndStartDataSend: ; 84559 (21:4559)
+ call Printer_ResetJoypadRegisters
+ call SendScreenToPrinter
ret
PrintUnownStamp: ; 84560
- ld a, [wcf65]
+ ld a, [wPrinterQueueLength]
push af
xor a
ld [hPrinter], a
- call Function8474c
+ call Printer_PlayMusic
ld a, [rIE]
push af
xor a
@@ -822,248 +235,274 @@ PrintUnownStamp: ; 84560
xor a
ld [hBGMapMode], a
call LoadTileMapToTempTileMap
- callba Function16dac
- ld a, $0
- call Function84419
+ callba PlaceUnownPrinterFrontpic
+ ld a, $0 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
call Call_LoadTempTileMapToTileMap
- call Function84742
- ld a, $9
- ld [wcf65], a
-.asm_84597
+ call Printer_ResetJoypadRegisters
+ ld a, 18 / 2
+ ld [wPrinterQueueLength], a
+.loop
call JoyTextDelay
- call Function846f6
- jr c, .asm_845c0
+ call CheckCancelPrint
+ jr c, .done
ld a, [wJumptableIndex]
bit 7, a
- jr nz, .asm_845c0
- call Function84022
+ jr nz, .done
+ call PrinterJumptableIteration
ld a, [wJumptableIndex]
cp $2
- jr nc, .asm_845b5
- ld a, $3
- ld [wca81], a
+ jr nc, .check_status
+ ld a, 6 / 2
+ ld [wPrinterRowIndex], a
-.asm_845b5
- call Function84757
- call Function84785
+.check_status
+ call CheckPrinterStatus
+ call PlacePrinterStatusString
call DelayFrame
- jr .asm_84597
+ jr .loop
-.asm_845c0
+.done
pop af
ld [hVBlank], a
- call Function84411
+ call Printer_CleanUpAfterSend
call Call_LoadTempTileMapToTileMap
xor a
ld [rIF], a
pop af
ld [rIE], a
pop af
- ld [wcf65], a
+ ld [wPrinterQueueLength], a
ret
; 845d4
PrintMail: ; 845d4
- call Function845db
- call Function84425
+ call PrintMail_
+ call Printer_ExitPrinter
ret
; 845db
-Function845db: ; 845db
- ld a, [wcf65]
+PrintMail_: ; 845db
+ ld a, [wPrinterQueueLength]
push af
xor a
ld [hPrinter], a
- call Function8474c
+ call Printer_PlayMusic
+
ld a, [rIE]
push af
xor a
ld [rIF], a
- ld a, $9
+ ld a, %1001
ld [rIE], a
+
xor a
ld [hBGMapMode], a
- ld a, $13
- call Function84419
+
+ ld a, $13 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
ld hl, hVBlank
ld a, [hl]
push af
- ld [hl], $4
- ld a, $9
- ld [wcf65], a
- call Function843f0
+ ld [hl], %0100
+
+ ld a, 18 / 2
+ ld [wPrinterQueueLength], a
+ call SendScreenToPrinter
+
pop af
ld [hVBlank], a
- call Function84411
- call Function84735
+ call Printer_CleanUpAfterSend
+ call Printer_CopyBufferToTileMap
+
xor a
ld [rIF], a
pop af
ld [rIE], a
+
pop af
- ld [wcf65], a
+ ld [wPrinterQueueLength], a
ret
; 8461a
PrintPartymon: ; 8461a
- ld a, [wcf65]
+ ld a, [wPrinterQueueLength]
push af
xor a
ld [hPrinter], a
- call Function8474c
+ call Printer_PlayMusic
+
ld a, [rIE]
push af
xor a
ld [rIF], a
- ld a, $9
+ ld a, %1001
ld [rIE], a
+
xor a
ld [hBGMapMode], a
- callba Function1dc381
- ld a, $10
- call Function84419
+ callba PrintPartyMonPage1
+ ld a, $10 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
+
ld hl, hVBlank
ld a, [hl]
push af
- ld [hl], $4
- ld a, $8
- ld [wcf65], a
- call Function84742
- call Function843f0
- jr c, .asm_84671
- call Function84411
+ ld [hl], %0100
+
+ ld a, 16 / 2
+ ld [wPrinterQueueLength], a
+ call Printer_ResetJoypadRegisters
+ call SendScreenToPrinter
+ jr c, .cancel
+
+ call Printer_CleanUpAfterSend
ld c, 12
call DelayFrames
+
xor a
ld [hBGMapMode], a
- callba Function1dc47b
- ld a, $3
- call Function84419
- ld a, $9
- ld [wcf65], a
- call Function84742
- call Function843f0
-
-.asm_84671
+ callba PrintPartyMonPage2
+ ld a, $3 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
+
+ ld a, 18 / 2
+ ld [wPrinterQueueLength], a
+ call Printer_ResetJoypadRegisters
+ call SendScreenToPrinter
+.cancel
pop af
ld [hVBlank], a
- call Function84411
- call Function84735
+ call Printer_CleanUpAfterSend
+
+ call Printer_CopyBufferToTileMap
xor a
ld [rIF], a
pop af
ld [rIE], a
- call Function84425
+ call Printer_ExitPrinter
+
pop af
- ld [wcf65], a
+ ld [wPrinterQueueLength], a
ret
; 84688
_PrintDiploma: ; 84688
- ld a, [wcf65]
+ ld a, [wPrinterQueueLength]
push af
- callba Function1dd709
+
+ callba PlaceDiplomaOnScreen
+
xor a
ld [hPrinter], a
- call Function8474c
+ call Printer_PlayMusic
+
ld a, [rIE]
push af
xor a
ld [rIF], a
- ld a, $9
+ ld a, %1001
ld [rIE], a
+
ld hl, hVBlank
ld a, [hl]
push af
- ld [hl], $4
- ld a, $10
- call Function84419
- call Function84742
- ld a, $9
- ld [wcf65], a
- call Function843f0
- jr c, .asm_846e2
- call Function84411
+ ld [hl], %0100
+
+ ld a, $10 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
+ call Printer_ResetJoypadRegisters
+
+ ld a, 18 / 2
+ ld [wPrinterQueueLength], a
+ call SendScreenToPrinter
+ jr c, .cancel
+ call Printer_CleanUpAfterSend
ld c, 12
call DelayFrames
+
call LoadTileMapToTempTileMap
xor a
ld [hBGMapMode], a
- callba Function1dd7ae
- ld a, $3
- call Function84419
+
+ callba PrintDiplomaPage2
+
+ ld a, $3 ; to be loaded to wcbfa
+ call Printer_PrepareTileMapForPrint
call Call_LoadTempTileMapToTileMap
- call Function84742
- ld a, $9
- ld [wcf65], a
- call Function843f0
+ call Printer_ResetJoypadRegisters
-.asm_846e2
+ ld a, 18 / 2
+ ld [wPrinterQueueLength], a
+ call SendScreenToPrinter
+.cancel
pop af
ld [hVBlank], a
- call Function84411
+ call Printer_CleanUpAfterSend
+
xor a
ld [rIF], a
pop af
ld [rIE], a
- call Function84425
+ call Printer_ExitPrinter
+
pop af
- ld [wcf65], a
+ ld [wPrinterQueueLength], a
ret
; 846f6
-Function846f6: ; 846f6
+CheckCancelPrint: ; 846f6
ld a, [hJoyDown]
and B_BUTTON
- jr nz, .asm_846fe
+ jr nz, .pressed_b
and a
ret
-.asm_846fe
+.pressed_b
ld a, [wca80]
cp $c
- jr nz, .asm_84722
-.asm_84705
- ld a, [wc2d5]
+ jr nz, .cancel
+.loop
+ ld a, [wPrinterOpcode]
and a
- jr nz, .asm_84705
- ld a, $16
- ld [wc2d5], a
+ jr nz, .loop
+ ld a, $16 ; cancel
+ ld [wPrinterOpcode], a
ld a, $88
ld [rSB], a
ld a, $1
ld [rSC], a
ld a, $81
ld [rSC], a
-.asm_8471c
- ld a, [wc2d5]
+.loop2
+ ld a, [wPrinterOpcode]
and a
- jr nz, .asm_8471c
+ jr nz, .loop2
-.asm_84722
+.cancel
ld a, $1
ld [hPrinter], a
scf
ret
; 84728
-Function84728: ; 84728
+Printer_CopyTileMapToBuffer: ; 84728
hlcoord 0, 0
- ld de, wca90
+ ld de, wPrinterTileMapBuffer
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call CopyBytes
ret
; 84735
-Function84735: ; 84735
- ld hl, wca90
+Printer_CopyBufferToTileMap: ; 84735
+ ld hl, wPrinterTileMapBuffer
decoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call CopyBytes
ret
; 84742
-Function84742: ; 84742
+Printer_ResetJoypadRegisters: ; 84742
xor a
ld [hJoyReleased], a
ld [hJoyPressed], a
@@ -1072,27 +511,29 @@ Function84742: ; 84742
ret
; 8474c
-Function8474c: ; 8474c
+Printer_PlayMusic: ; 8474c
ld de, MUSIC_PRINTER
call PlayMusic2
ret
; 84753
-Function84753: ; 84753
+Printer_RestartMapMusic: ; 84753
call RestartMapMusic
ret
; 84757
-Function84757: ; 84757
- ld a, [wca88]
+CheckPrinterStatus: ; 84757
+; Check for printer errors
+; If [ca88] == -1, we're disconnected
+ ld a, [wPrinterHandshake]
cp -1
jr nz, .printer_connected
- ld a, [wca89]
+ ld a, [wPrinterStatusFlags]
cp -1
jr z, .error_2
-
.printer_connected
- ld a, [wca89]
+; ca89 contains printer status flags
+ ld a, [wPrinterStatusFlags]
and %11100000
ret z ; no error
@@ -1100,27 +541,31 @@ Function84757: ; 84757
jr nz, .error_1
bit 6, a
jr nz, .error_4
- ld a, 6 ; error 3
+ ; paper error
+ ld a, PRINTER_ERROR_3
jr .load_text_index
.error_4
- ld a, 7 ; error 4
+ ; temperature error
+ ld a, PRINTER_ERROR_4
jr .load_text_index
.error_1
- ld a, 4 ; error 1
+ ; printer battery low
+ ld a, PRINTER_ERROR_1
jr .load_text_index
.error_2
- ld a, 5 ; error 2
-
+ ; connection error
+ ld a, PRINTER_ERROR_2
.load_text_index
- ld [wcbf8], a
+ ld [wPrinterStatus], a
ret
; 84785
-Function84785: ; 84785
- ld a, [wcbf8]
+PlacePrinterStatusString: ; 84785
+; Print nonzero printer status
+ ld a, [wPrinterStatus]
and a
ret z
push af
@@ -1133,9 +578,8 @@ Function84785: ; 84785
ld e, a
ld d, 0
ld hl, PrinterStatusStringPointers
-rept 2
add hl, de
-endr
+ add hl, de
ld e, [hl]
inc hl
ld d, [hl]
@@ -1148,12 +592,13 @@ endr
ld a, $1
ld [hBGMapMode], a
xor a
- ld [wcbf8], a
+ ld [wPrinterStatus], a
ret
; 847bd
Function847bd: ; 847bd
- ld a, [wcbf8]
+; XXX
+ ld a, [wPrinterStatus]
and a
ret z
push af
@@ -1166,9 +611,8 @@ Function847bd: ; 847bd
ld e, a
ld d, 0
ld hl, PrinterStatusStringPointers
-rept 2
add hl, de
-endr
+ add hl, de
ld e, [hl]
inc hl
ld d, [hl]
@@ -1181,7 +625,7 @@ endr
ld a, $1
ld [hBGMapMode], a
xor a
- ld [wcbf8], a
+ ld [wPrinterStatus], a
ret
; 847f5
@@ -1190,34 +634,38 @@ String_PressBToCancel:
; 84807
PrinterStatusStringPointers: ; 84807
- dw String_1dc275 ; @
- dw String_1dc276 ; CHECKING LINK
- dw String_1dc289 ; TRANSMITTING
- dw String_1dc29c ; PRINTING
- dw String_1dc2ad ; error 1
- dw String_1dc2e2 ; error 2
- dw String_1dc317 ; error 3
- dw String_1dc34c ; error 4
+ dw GBPrinterString_Null ; @
+ dw GBPrinterString_CheckingLink ; CHECKING LINK
+ dw GBPrinterString_Transmitting ; TRANSMITTING
+ dw GBPrinterString_Printing ; PRINTING
+ dw GBPrinterString_PrinterError1 ; error 1
+ dw GBPrinterString_PrinterError2 ; error 2
+ dw GBPrinterString_PrinterError3 ; error 3
+ dw GBPrinterString_PrinterError4 ; error 4
; 84817
-Function84817: ; 84817 (21:4817)
+PrintPCBox_Page1: ; 84817 (21:4817)
xor a
- ld [wd002], a
+ ld [wWhichBoxMonToPrint], a
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld a, " "
call ByteFill
call Printer_PlaceEmptyBoxSlotString
+
hlcoord 0, 0
ld bc, 9 * SCREEN_WIDTH
ld a, " "
call ByteFill
+
call Printer_PlaceSideBorders
call Printer_PlaceTopBorder
+
hlcoord 4, 3
ld de, .String_PokemonList
call PlaceString
- ld a, [wd007]
+
+ ld a, [wWhichBoxToPrint]
ld bc, BOX_NAME_LENGTH
ld hl, wBoxNames
call AddNTimes
@@ -1225,11 +673,11 @@ Function84817: ; 84817 (21:4817)
ld e, l
hlcoord 6, 5
call PlaceString
- ld a, $1
- call Function849c6
+ ld a, 1
+ call Printer_GetBoxMonSpecies
hlcoord 2, 9
- ld c, $3
- call Function848e7
+ ld c, 3
+ call Printer_PrintBoxListSegment
ret
; 84865 (21:4865)
@@ -1237,41 +685,41 @@ Function84817: ; 84817 (21:4817)
db "#MON LIST@"
; 8486f
-Function8486f: ; 8486f (21:486f)
+PrintPCBox_Page2: ; 8486f (21:486f)
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld a, " "
call ByteFill
call Printer_PlaceEmptyBoxSlotString
call Printer_PlaceSideBorders
- ld a, [wd003]
+ ld a, [wFinishedPrintingBox]
and a
ret nz
- ld a, $4
- call Function849c6
+ ld a, 4
+ call Printer_GetBoxMonSpecies
hlcoord 2, 0
- ld c, $6
- call Function848e7
+ ld c, 6
+ call Printer_PrintBoxListSegment
ret
-Function84893: ; 84893 (21:4893)
+PrintPCBox_Page3: ; 84893 (21:4893)
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld a, " "
call ByteFill
call Printer_PlaceEmptyBoxSlotString
call Printer_PlaceSideBorders
- ld a, [wd003]
+ ld a, [wFinishedPrintingBox]
and a
ret nz
- ld a, $a
- call Function849c6
+ ld a, 10
+ call Printer_GetBoxMonSpecies
hlcoord 2, 0
- ld c, $6
- call Function848e7
+ ld c, 6
+ call Printer_PrintBoxListSegment
ret
-Function848b7: ; 848b7 (21:48b7)
+PrintPCBox_Page4: ; 848b7 (21:48b7)
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld a, " "
@@ -1282,119 +730,126 @@ Function848b7: ; 848b7 (21:48b7)
call ClearBox
call Printer_PlaceSideBorders
call Printer_PlaceBottomBorders
- ld a, [wd003]
+ ld a, [wFinishedPrintingBox]
and a
ret nz
- ld a, $10
- call Function849c6
+ ld a, 16
+ call Printer_GetBoxMonSpecies
hlcoord 2, 0
- ld c, $5
- call Function848e7
+ ld c, 5
+ call Printer_PrintBoxListSegment
ret
-Function848e7: ; 848e7 (21:48e7)
- ld a, [wd006]
+Printer_PrintBoxListSegment: ; 848e7 (21:48e7)
+ ld a, [wBankOfBoxToPrint]
call GetSRAMBank
-
-Function848ed: ; 848ed (21:48ed)
+.loop
ld a, c
and a
- jp z, Function84986
+ jp z, .max_length
dec c
ld a, [de]
cp $ff
- jp z, Function84981
+ jp z, .finish
ld [wd265], a
ld [CurPartySpecies], a
+
push bc
push hl
push de
+
push hl
- ld bc, $10
+ ld bc, 16
ld a, " "
call ByteFill
pop hl
+
push hl
call GetBasePokemonName
pop hl
+
push hl
call PlaceString
ld a, [CurPartySpecies]
cp EGG
pop hl
jr z, .ok2
- ld bc, $b
+
+ ld bc, PKMN_NAME_LENGTH
add hl, bc
- call Function8498a
- ld bc, $9
+ call Printer_GetMonGender
+ ld bc, SCREEN_WIDTH - PKMN_NAME_LENGTH
add hl, bc
ld a, "/"
ld [hli], a
+
push hl
- ld bc, $e
+ ld bc, 14
ld a, " "
call ByteFill
pop hl
+
push hl
- ld a, [wd004]
+ ld a, [wAddrOfBoxToPrint]
ld l, a
- ld a, [wd005]
+ ld a, [wAddrOfBoxToPrint + 1]
ld h, a
- ld bc, $372
+ ld bc, sBoxMonNicknames - sBox
add hl, bc
- ld bc, $b
- ld a, [wd002]
+ ld bc, PKMN_NAME_LENGTH
+ ld a, [wWhichBoxMonToPrint]
call AddNTimes
ld e, l
ld d, h
pop hl
+
push hl
call PlaceString
pop hl
- ld bc, $b
+
+ ld bc, PKMN_NAME_LENGTH
add hl, bc
push hl
- ld a, [wd004]
+ ld a, [wAddrOfBoxToPrint]
ld l, a
- ld a, [wd005]
+ ld a, [wAddrOfBoxToPrint + 1]
ld h, a
- ld bc, $35
+ ld bc, 2 + MONS_PER_BOX + MON_LEVEL
add hl, bc
- ld bc, $20
- ld a, [wd002]
+ ld bc, BOXMON_STRUCT_LENGTH
+ ld a, [wWhichBoxMonToPrint]
call AddNTimes
ld a, [hl]
pop hl
- call Function383d
+ call PrintLevel_Force3Digits
.ok2
- ld hl, wd002
+ ld hl, wWhichBoxMonToPrint
inc [hl]
pop de
pop hl
- ld bc, $3c
+ ld bc, 3 * SCREEN_WIDTH
add hl, bc
pop bc
inc de
- jp Function848ed
+ jp .loop
-Function84981: ; 84981 (21:4981)
+.finish
ld a, $1
- ld [wd003], a
-
-Function84986: ; 84986 (21:4986)
+ ld [wFinishedPrintingBox], a
+.max_length
call CloseSRAM
ret
-Function8498a: ; 8498a (21:498a)
+Printer_GetMonGender: ; 8498a (21:498a)
push hl
- ld a, [wd004]
+ ld a, [wAddrOfBoxToPrint]
ld l, a
- ld a, [wd005]
+ ld a, [wAddrOfBoxToPrint + 1]
ld h, a
ld bc, $2b
add hl, bc
- ld bc, $20
- ld a, [wd002]
+ ld bc, BOXMON_STRUCT_LENGTH
+ ld a, [wWhichBoxMonToPrint]
call AddNTimes
ld de, TempMonDVs
ld a, [hli]
@@ -1402,28 +857,28 @@ Function8498a: ; 8498a (21:498a)
inc de
ld a, [hli]
ld [de], a
- ld a, [wd002]
+ ld a, [wWhichBoxMonToPrint]
ld [CurPartyMon], a
- ld a, $3
+ ld a, TEMPMON
ld [MonType], a
callba GetGender
- ld a, $7f
- jr c, .asm_849c3
- ld a, $ef
- jr nz, .asm_849c3
- ld a, $f5
-.asm_849c3
+ ld a, " "
+ jr c, .got_gender
+ ld a, "♂"
+ jr nz, .got_gender
+ ld a, "♀"
+.got_gender
pop hl
ld [hli], a
ret
-Function849c6: ; 849c6 (21:49c6)
+Printer_GetBoxMonSpecies: ; 849c6 (21:49c6)
push hl
ld e, a
ld d, $0
- ld a, [wd004]
+ ld a, [wAddrOfBoxToPrint]
ld l, a
- ld a, [wd005]
+ ld a, [wAddrOfBoxToPrint + 1]
ld h, a
add hl, de
ld e, l
diff --git a/engine/printer/serial.asm b/engine/printer/serial.asm
new file mode 100755
index 000000000..da1c334ed
--- /dev/null
+++ b/engine/printer/serial.asm
@@ -0,0 +1,645 @@
+Printer_StartTransmission: ; 84000
+ ld hl, wGameboyPrinterRAM
+ ld bc, wGameboyPrinterRAMEnd - wGameboyPrinterRAM
+ xor a
+ call Printer_ByteFill
+ xor a
+ ld [rSB], a
+ ld [rSC], a
+ ld [wPrinterOpcode], a
+ ld hl, wPrinterConnectionOpen
+ set 0, [hl]
+ ld a, [GBPrinter]
+ ld [wGBPrinterSettings], a
+ xor a
+ ld [wJumptableIndex], a
+ ret
+; 84022
+
+PrinterJumptableIteration: ; 84022
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 84031
+
+
+.Jumptable: ; 84031 (21:4031)
+
+ dw Print_InitPrinterHandshake ; 00
+ dw Printer_CheckConnectionStatus ; 01
+ dw Printer_WaitSerial ; 02
+ dw Printer_StartTransmittingTilemap ; 03
+ dw Printer_TransmissionLoop ; 04
+ dw Printer_WaitSerialAndLoopBack2 ; 05
+
+ dw Printer_EndTilemapTransmission ; 06
+ dw Printer_TransmissionLoop ; 07
+ dw Printer_WaitSerial ; 08
+ dw Printer_SignalSendHeader ; 09
+ dw Printer_TransmissionLoop ; 0a
+ dw Printer_WaitSerial ; 0b
+ dw Printer_WaitUntilFinished ; 0c
+ dw Printer_Quit ; 0d
+
+ dw Printer_NextSection_ ; 0e
+ dw Printer_WaitSerial ; 0f
+ dw Printer_SignalLoopBack ; 10
+ dw Printer_SectionOne ; 11
+ dw Printer_WaitLoopBack ; 12
+ dw Printer_WaitLoopBack_ ; 13
+
+
+Printer_NextSection: ; 84059 (21:4059)
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+Printer_PrevSection: ; 8405e (21:405e)
+ ld hl, wJumptableIndex
+ dec [hl]
+ ret
+
+Printer_Quit: ; 84063 (21:4063)
+ xor a
+ ld [wPrinterStatusFlags], a
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+Printer_NextSection_: ; 8406d (21:406d)
+ call Printer_NextSection
+ ret
+
+Printer_SectionOne: ; 84071 (21:4071)
+ ld a, $1
+ ld [wJumptableIndex], a
+ ret
+
+Print_InitPrinterHandshake: ; 84077 (21:4077)
+ call Printer_ResetData
+ ld hl, PrinterDataPacket1
+ call Printer_CopyPacket
+ xor a
+ ld [wPrinterSendByteCounter], a
+ ld [wPrinterSendByteCounter + 1], a
+ ld a, [wPrinterQueueLength]
+ ld [wPrinterRowIndex], a
+ call Printer_NextSection
+ call Printer_WaitHandshake
+ ld a, PRINTER_STATUS_CHECKING
+ ld [wPrinterStatus], a
+ ret
+
+Printer_StartTransmittingTilemap: ; 84099 (21:4099)
+ call Printer_ResetData
+ ; check ???
+ ld hl, wPrinterRowIndex
+ ld a, [hl]
+ and a
+ jr z, Printer_EndTilemapTransmission
+ ; send packet 3
+ ld hl, PrinterDataPacket3 ; signal start of transmission
+ call Printer_CopyPacket
+ ; prepare to send 40 tiles
+ call Printer_Convert2RowsTo2bpp
+ ld a, (40 tiles) % $100
+ ld [wPrinterSendByteCounter], a
+ ld a, (40 tiles) / $100
+ ld [wPrinterSendByteCounter + 1], a
+ ; compute the checksum
+ call Printer_ComputeChecksum
+ call Printer_NextSection
+ call Printer_WaitHandshake
+ ld a, PRINTER_STATUS_TRANSMITTING
+ ld [wPrinterStatus], a
+ ret
+
+Printer_EndTilemapTransmission: ; 840c5 (21:40c5)
+ ; ensure that we go from here to routine 7
+ ld a, $6
+ ld [wJumptableIndex], a
+ ; send packet 4
+ ld hl, PrinterDataPacket4 ; signal no transmission
+ call Printer_CopyPacket
+ ; send no tile data
+ xor a
+ ld [wPrinterSendByteCounter], a
+ ld [wPrinterSendByteCounter + 1], a
+ call Printer_NextSection
+ call Printer_WaitHandshake
+ ret
+
+Printer_SignalSendHeader: ; 840de (21:40de)
+ call Printer_ResetData
+ ld hl, PrinterDataPacket2 ; signal request print
+ call Printer_CopyPacket
+ ; prepare to send 1 tile
+ call Printer_StageHeaderForSend
+ ld a, 4 % $100
+ ld [wPrinterSendByteCounter], a
+ ld a, 4 / $100
+ ld [wPrinterSendByteCounter + 1], a
+ ; compute the checksum
+ call Printer_ComputeChecksum
+ call Printer_NextSection
+ call Printer_WaitHandshake
+ ld a, PRINTER_STATUS_PRINTING
+ ld [wPrinterStatus], a
+ ret
+
+Printer_SignalLoopBack: ; 84103 (21:4103)
+ call Printer_ResetData
+ ; send packet 1
+ ld hl, PrinterDataPacket1 ; signal no transmission
+ call Printer_CopyPacket
+ ; send no tile data
+ xor a
+ ld [wPrinterSendByteCounter], a
+ ld [wPrinterSendByteCounter + 1], a
+ ld a, [wPrinterQueueLength]
+ ld [wPrinterRowIndex], a
+ call Printer_NextSection
+ call Printer_WaitHandshake
+ ret
+
+Printer_WaitSerial: ; 84120 (21:4120)
+ ld hl, wPrinterSerialFrameDelay
+ inc [hl]
+ ld a, [hl]
+ cp $6
+ ret c
+ xor a
+ ld [hl], a
+ call Printer_NextSection
+ ret
+
+Printer_WaitSerialAndLoopBack2: ; 8412e (21:412e)
+ ld hl, wPrinterSerialFrameDelay
+ inc [hl]
+ ld a, [hl]
+ cp $6
+ ret c
+ xor a
+ ld [hl], a
+ ld hl, wPrinterRowIndex
+ dec [hl]
+ call Printer_PrevSection
+ call Printer_PrevSection
+ ret
+
+Printer_CheckConnectionStatus: ; 84143 (21:4143)
+ ld a, [wPrinterOpcode]
+ and a
+ ret nz
+ ld a, [wPrinterHandshake]
+ cp $ff
+ jr nz, .printer_connected
+ ld a, [wPrinterStatusFlags]
+ cp $ff
+ jr z, .printer_error
+
+.printer_connected
+ ld a, [wPrinterHandshake]
+ cp $81
+ jr nz, .printer_error
+ ld a, [wPrinterStatusFlags]
+ cp $0
+ jr nz, .printer_error
+ ld hl, wPrinterConnectionOpen
+ set 1, [hl]
+ ld a, $5
+ ld [wHandshakeFrameDelay], a
+ call Printer_NextSection
+ ret
+
+.printer_error
+ ld a, $ff
+ ld [wPrinterHandshake], a
+ ld [wPrinterStatusFlags], a
+ ld a, $e
+ ld [wJumptableIndex], a
+ ret
+
+Printer_TransmissionLoop: ; 84180 (21:4180)
+ ld a, [wPrinterOpcode]
+ and a
+ ret nz
+ ld a, [wPrinterStatusFlags]
+ and $f0
+ jr nz, .enter_wait_loop
+ ld a, [wPrinterStatusFlags]
+ and $1
+ jr nz, .cycle_back
+ call Printer_NextSection
+ ret
+
+.cycle_back
+ call Printer_PrevSection
+ ret
+
+.enter_wait_loop
+ ld a, $12 ; Printer_WaitLoopBack
+ ld [wJumptableIndex], a
+ ret
+
+Printer_WaitUntilFinished: ; 841a1 (21:41a1)
+ ld a, [wPrinterOpcode]
+ and a
+ ret nz
+ ld a, [wPrinterStatusFlags]
+ and $f3
+ ret nz
+ call Printer_NextSection
+ ret
+
+Printer_WaitLoopBack: ; 841b0 (21:41b0)
+ call Printer_NextSection
+Printer_WaitLoopBack_: ; 841b3 (21:41b3)
+ ld a, [wPrinterOpcode]
+ and a
+ ret nz
+ ld a, [wPrinterStatusFlags]
+ and $f0
+ ret nz
+ xor a
+ ld [wJumptableIndex], a
+ ret
+
+Printer_WaitHandshake: ; 841c3 (21:41c3)
+.loop
+ ld a, [wPrinterOpcode]
+ and a
+ jr nz, .loop
+ xor a
+ ld [wPrinterSendByteOffset], a
+ ld [wPrinterSendByteOffset + 1], a
+ ld a, $1
+ ld [wPrinterOpcode], a
+ ld a, $88
+ ld [rSB], a
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+ ret
+
+Printer_CopyPacket: ; 841e2 (21:41e2)
+ ld a, [hli]
+ ld [wca82], a
+ ld a, [hli]
+ ld [wca83], a
+ ld a, [hli]
+ ld [wca84], a
+ ld a, [hli]
+ ld [wca85], a
+ ld a, [hli]
+ ld [wPrinterChecksum], a
+ ld a, [hl]
+ ld [wPrinterChecksum + 1], a
+ ret
+
+Printer_ResetData: ; 841fb (21:41fb)
+ xor a
+ ld hl, wca82
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld hl, wPrinterChecksum
+ ld [hli], a
+ ld [hl], a
+ xor a
+ ld [wPrinterSendByteCounter], a
+ ld [wPrinterSendByteCounter + 1], a
+ ld hl, wGameboyPrinterRAM
+ ld bc, wGameboyPrinter2bppSourceEnd - wGameboyPrinter2bppSource
+ call Printer_ByteFill
+ ret
+
+Printer_ComputeChecksum: ; 84219 (21:4219)
+ ld hl, 0
+ ld bc, 4
+ ld de, wca82
+ call .ComputeChecksum
+ ld a, [wPrinterSendByteCounter]
+ ld c, a
+ ld a, [wPrinterSendByteCounter + 1]
+ ld b, a
+ ld de, wGameboyPrinterRAM
+ call .ComputeChecksum
+ ld a, l
+ ld [wPrinterChecksum], a
+ ld a, h
+ ld [wPrinterChecksum + 1], a
+ ret
+
+.ComputeChecksum: ; 8423c (21:423c)
+.loop
+ ld a, [de]
+ inc de
+ add l
+ jr nc, .no_overflow
+ inc h
+.no_overflow
+ ld l, a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .loop
+ ret
+
+Printer_StageHeaderForSend: ; 84249 (21:4249)
+ ld a, $1
+ ld [wGameboyPrinter2bppSource + 0], a
+ ld a, [wcbfa]
+ ld [wGameboyPrinter2bppSource + 1], a
+ ld a, %11100100
+ ld [wGameboyPrinter2bppSource + 2], a
+ ld a, [wGBPrinterSettings]
+ ld [wGameboyPrinter2bppSource + 3], a
+ ret
+
+Printer_Convert2RowsTo2bpp: ; 84260 (21:4260)
+ ; de = wPrinterTileMapBuffer + 2 * SCREEN_WIDTH * ([wPrinterQueueLength] - [wPrinterRowIndex])
+ ld a, [wPrinterRowIndex]
+ xor $ff
+ ld d, a
+ ld a, [wPrinterQueueLength]
+ inc a
+ add d
+ ld hl, wPrinterTileMapBuffer
+ ld de, 2 * SCREEN_WIDTH
+.loop1
+ and a
+ jr z, .okay1
+ add hl, de
+ dec a
+ jr .loop1
+.okay1
+ ld e, l
+ ld d, h
+ ld hl, wGameboyPrinter2bppSource
+ ld c, 2 * SCREEN_WIDTH
+.loop2
+ ld a, [de]
+ inc de
+ push bc
+ push de
+ push hl
+ ; convert tile index to vram address
+ swap a
+ ld d, a
+ and $f0
+ ld e, a
+ ld a, d
+ and $f
+ ld d, a
+ and $8
+ ld a, d
+ jr nz, .vtiles_8xxx
+ or $90
+ jr .got_vtile_addr
+
+.vtiles_8xxx
+ or $80
+.got_vtile_addr
+ ld d, a
+ ; copy 1 vtile to hl
+ lb bc, BANK(Printer_Convert2RowsTo2bpp), 1
+ call Request2bpp
+ pop hl
+ ld de, 1 tiles
+ add hl, de
+ pop de
+ pop bc
+ dec c
+ jr nz, .loop2
+ ret
+
+Printer_ByteFill: ; 842ab
+ push de
+ ld e, a
+.loop
+ ld [hl], e
+ inc hl
+ dec bc
+ ld a, c
+ or b
+ jr nz, .loop
+ ld a, e
+ pop de
+ ret
+; 842b7
+
+PrinterDataPacket1:
+ db 1, 0, $00, 0
+ dw 1
+PrinterDataPacket2:
+ db 2, 0, $04, 0
+ dw 0
+PrinterDataPacket3:
+ db 4, 0, $80, 2
+ dw 0
+PrinterDataPacket4:
+ db 4, 0, $00, 0
+ dw 4
+PrinterDataPacket5: ; unused
+ db 8, 0, $00, 0
+ dw 8
+PrinterDataPacket6: ; unused
+ db 15, 0, $00, 0
+ dw 15
+; 842db
+
+_PrinterReceive:: ; 842db
+ ld a, [wPrinterOpcode]
+ add a
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 842ea
+
+
+.Jumptable: ; 842ea (21:42ea)
+ dw Printer_DoNothing ; 00
+
+ dw Printer_Send0x33 ; 01
+ dw Printer_Sendwca82 ; 02
+ dw Printer_Sendwca83 ; 03
+ dw Printer_Sendwca84 ; 04
+ dw Printer_Sendwca85 ; 05
+ dw Printer_SendNextByte ; 06
+ dw Printer_SendwPrinterChecksumLo ; 07
+ dw Printer_SendwPrinterChecksumHi ; 08
+ dw Printer_Send0x00 ; 09
+ dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 0a
+ dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop ; 0b
+
+ dw Printer_Send0x33 ; 0c triggered by AskSerial
+ dw Printer_Send0x0f ; 0d
+ dw Printer_Send0x00_ ; 0e
+ dw Printer_Send0x00_ ; 0f
+ dw Printer_Send0x00_ ; 10
+ dw Printer_Send0x0f ; 11
+ dw Printer_Send0x00_ ; 12
+ dw Printer_Send0x00 ; 13
+ dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 14
+ dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop_ ; 15
+
+ dw Printer_Send0x33 ; 16 triggered by pressing B
+ dw Printer_Send0x08 ; 17
+ dw Printer_Send0x00_ ; 18
+ dw Printer_Send0x00_ ; 19
+ dw Printer_Send0x00_ ; 1a
+ dw Printer_Send0x08 ; 1b
+ dw Printer_Send0x00_ ; 1c
+ dw Printer_Send0x00 ; 1d
+ dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 1e
+ dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop ; 1f
+
+
+Printer_NextInstruction: ; 8432a (21:432a)
+ ld hl, wPrinterOpcode
+ inc [hl]
+ ret
+
+Printer_DoNothing: ; 8432f (21:432f)
+ ret
+
+Printer_Send0x33: ; 84330 (21:4330)
+ ld a, $33
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_Sendwca82: ; 84339 (21:4339)
+ ld a, [wca82]
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_Sendwca83: ; 84343 (21:4343)
+ ld a, [wca83]
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_Sendwca84: ; 8434d (21:434d)
+ ld a, [wca84]
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_Sendwca85: ; 84357 (21:4357)
+ ld a, [wca85]
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_SendNextByte: ; 84361 (21:4361)
+ ; decrement 16-bit counter
+ ld hl, wPrinterSendByteCounter
+ ld a, [hli]
+ ld d, [hl]
+ ld e, a
+ or d
+ jr z, .done
+ dec de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+
+ ld a, [wPrinterSendByteOffset]
+ ld e, a
+ ld a, [wPrinterSendByteOffset + 1]
+ ld d, a
+ ld hl, wGameboyPrinterRAM
+ add hl, de
+ inc de
+ ld a, e
+ ld [wPrinterSendByteOffset], a
+ ld a, d
+ ld [wPrinterSendByteOffset + 1], a
+ ld a, [hl]
+ call Printer_SerialSend
+ ret
+
+.done
+ call Printer_NextInstruction
+Printer_SendwPrinterChecksumLo: ; 8438b (21:438b)
+ ld a, [wPrinterChecksum]
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_SendwPrinterChecksumHi: ; 84395 (21:4395)
+ ld a, [wPrinterChecksum + 1]
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_Send0x00: ; 8439f (21:439f)
+ ld a, $0
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_ReceiveTowPrinterHandshakeAndSend0x00: ; 843a8 (21:43a8)
+ ld a, [rSB]
+ ld [wPrinterHandshake], a
+ ld a, $0
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop: ; 843b6 (21:43b6)
+ ld a, [rSB]
+ ld [wPrinterStatusFlags], a
+ xor a
+ ld [wPrinterOpcode], a
+ ret
+
+Printer_Send0x0f: ; 843c0 (21:43c0)
+ ld a, $f
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_Send0x00_: ; 843c9 (21:43c9)
+ ld a, $0
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_Send0x08: ; 843d2 (21:43d2)
+ ld a, $8
+ call Printer_SerialSend
+ call Printer_NextInstruction
+ ret
+
+Printer_SerialSend: ; 843db (21:43db)
+ ld [rSB], a
+ ld a, $1 ; switch to internal clock
+ ld [rSC], a
+ ld a, $81 ; start transfer
+ ld [rSC], a
+ ret
+
+Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop_: ; 843e6 (21:43e6)
+ ld a, [rSB]
+ ld [wPrinterStatusFlags], a
+ xor a
+ ld [wPrinterOpcode], a
+ ret
diff --git a/engine/radio.asm b/engine/radio.asm
index 678fc05d5..ce3bc7942 100644
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -139,7 +139,7 @@ PrintRadioLine:
cp 2
jr nz, .print
bccoord 1, 16
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
jr .skip
.print
call PrintTextBoxText
@@ -201,10 +201,11 @@ OaksPkmnTalk3:
OaksPkmnTalk4:
; Choose a random route, and a random Pokemon from that route.
+.sample
call Random
and $1f
- cp $f
- jr nc, OaksPkmnTalk4
+ cp $f ; so wasteful
+ jr nc, .sample
; We now have a number between 0 and 14.
ld hl, .routes
ld c, a
@@ -1576,7 +1577,8 @@ BuenasPassword4:
; There are only 11 groups to choose from.
.greater_than_11
call Random
- and $f
+ maskbits NUM_PASSWORD_CATEGORIES
+ and x
cp NUM_PASSWORD_CATEGORIES
jr nc, .greater_than_11
; Store it in the high nybble of e.
diff --git a/engine/rtc.asm b/engine/rtc.asm
index 1f5e1e27c..3018b5301 100755
--- a/engine/rtc.asm
+++ b/engine/rtc.asm
@@ -35,9 +35,8 @@ GetTimeOfDay:: ; 14032
cp [hl]
jr c, .match
; else, get the next entry
-rept 2
inc hl
-endr
+ inc hl
; try again
jr .check
diff --git a/engine/save.asm b/engine/save.asm
index f2f3a79bd..de2d3bc65 100644
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -4,14 +4,14 @@ SaveMenu: ; 14a1a
call SpeechTextBox
call UpdateSprites
callba SaveMenu_LoadEDTile
- ld hl, UnknownText_0x15283
+ ld hl, Text_WouldYouLikeToSaveTheGame
call SaveTheGame_yesorno
jr nz, .refused
call AskOverwriteSaveFile
jr c, .refused
- call SetWRAMStateForSave
+ call PauseGameLogic
call _SavingDontTurnOffThePower
- call ClearWRAMStateAfterSave
+ call ResumeGameLogic
call ExitMenu
and a
ret
@@ -23,8 +23,8 @@ SaveMenu: ; 14a1a
scf
ret
-Function14a58: ; 14a58
- call SetWRAMStateForSave
+SaveAfterLinkTrade: ; 14a58
+ call PauseGameLogic
callba StageRTCTimeForSave
callba BackupMysteryGift
call SavePokemonData
@@ -33,21 +33,21 @@ Function14a58: ; 14a58
call SaveBackupChecksum
callba BackupPartyMonMail
callba SaveRTC
- call ClearWRAMStateAfterSave
+ call ResumeGameLogic
ret
; 14a83
ChangeBoxSaveGame: ; 14a83 (5:4a83)
push de
- ld hl, UnknownText_0x152a1
+ ld hl, Text_SaveOnBoxSwitch
call MenuTextBox
call YesNoBox
call ExitMenu
jr c, .refused
call AskOverwriteSaveFile
jr c, .refused
- call SetWRAMStateForSave
+ call PauseGameLogic
call SavingDontTurnOffThePower
call SaveBox
pop de
@@ -55,7 +55,7 @@ ChangeBoxSaveGame: ; 14a83 (5:4a83)
ld [wCurBox], a
call LoadBox
call SavedTheGame
- call ClearWRAMStateAfterSave
+ call ResumeGameLogic
and a
ret
.refused
@@ -65,9 +65,9 @@ ChangeBoxSaveGame: ; 14a83 (5:4a83)
Link_SaveGame: ; 14ab2
call AskOverwriteSaveFile
jr c, .refused
- call SetWRAMStateForSave
+ call PauseGameLogic
call _SavingDontTurnOffThePower
- call ClearWRAMStateAfterSave
+ call ResumeGameLogic
and a
.refused
@@ -75,19 +75,19 @@ Link_SaveGame: ; 14ab2
; 14ac2
MovePkmnWOMail_SaveGame: ; 14ac2
- call SetWRAMStateForSave
+ call PauseGameLogic
push de
call SaveBox
pop de
ld a, e
ld [wCurBox], a
call LoadBox
- call ClearWRAMStateAfterSave
+ call ResumeGameLogic
ret
; 14ad5
-Function14ad5: ; 14ad5
- call SetWRAMStateForSave
+MovePkmnWOMail_InsertMon_SaveGame: ; 14ad5
+ call PauseGameLogic
push de
call SaveBox
pop de
@@ -111,7 +111,7 @@ Function14ad5: ; 14ad5
callba BackupMobileEventIndex
callba SaveRTC
call LoadBox
- call ClearWRAMStateAfterSave
+ call ResumeGameLogic
ld de, SFX_SAVE
call PlaySFX
ld c, 24
@@ -120,16 +120,16 @@ Function14ad5: ; 14ad5
; 14b34
StartMovePkmnWOMail_SaveGame: ; 14b34
- ld hl, UnknownText_0x152a6
+ ld hl, Text_SaveOnMovePkmnWOMail
call MenuTextBox
call YesNoBox
call ExitMenu
jr c, .refused
call AskOverwriteSaveFile
jr c, .refused
- call SetWRAMStateForSave
+ call PauseGameLogic
call _SavingDontTurnOffThePower
- call ClearWRAMStateAfterSave
+ call ResumeGameLogic
and a
ret
@@ -138,15 +138,15 @@ StartMovePkmnWOMail_SaveGame: ; 14b34
ret
; 14b54
-SetWRAMStateForSave: ; 14b54
+PauseGameLogic: ; 14b54
ld a, $1
- ld [wc2cd], a
+ ld [wGameLogicPaused], a
ret
; 14b5a
-ClearWRAMStateAfterSave: ; 14b5a
+ResumeGameLogic: ; 14b5a
xor a
- ld [wc2cd], a
+ ld [wGameLogicPaused], a
ret
; 14b5f
@@ -184,13 +184,13 @@ AskOverwriteSaveFile: ; 14b89
jr z, .erase
call CompareLoadedAndSavedPlayerID
jr z, .yoursavefile
- ld hl, UnknownText_0x15297
+ ld hl, Text_AnotherSaveFile
call SaveTheGame_yesorno
jr nz, .refused
jr .erase
.yoursavefile
- ld hl, UnknownText_0x15292
+ ld hl, Text_AlreadyASaveFile
call SaveTheGame_yesorno
jr nz, .refused
jr .ok
@@ -208,7 +208,7 @@ AskOverwriteSaveFile: ; 14b89
; 14baf
SaveTheGame_yesorno: ; 14baf
- ld b, BANK(UnknownText_0x15283)
+ ld b, BANK(Text_WouldYouLikeToSaveTheGame)
call MapTextbox
call LoadMenuTextBox
lb bc, 0, 7
@@ -253,7 +253,7 @@ SavedTheGame: ; 14be6
ld a, 3
ld [Options], a
; <PLAYER> saved the game!
- ld hl, UnknownText_0x1528d
+ ld hl, Text_PlayerSavedTheGame
call PrintText
; restore the original text speed setting
pop af
@@ -355,7 +355,7 @@ SavingDontTurnOffThePower: ; 14c99
ld a, $3
ld [Options], a
; SAVING... DON'T TURN OFF THE POWER.
- ld hl, UnknownText_0x15288
+ ld hl, Text_SavingDontTurnOffThePower
call PrintText
; Restore the text speed setting
pop af
@@ -416,17 +416,18 @@ EraseHallOfFame: ; 14d06
; 14d18
Function14d18: ; 14d18
-; copy Unknown_14d2c to SRA4:a007
+; XXX
+; copy .Data to SRA4:a007
ld a, $4
call GetSRAMBank
- ld hl, Unknown_14d2c
+ ld hl, .Data
ld de, $a007
- ld bc, 48
+ ld bc, .DataEnd - .Data
call CopyBytes
jp CloseSRAM
; 14d2c
-Unknown_14d2c: ; 14d2c
+.Data: ; 14d2c
db $0d, $02, $00, $05, $00, $00
db $22, $02, $01, $05, $00, $00
db $03, $04, $05, $08, $03, $05
@@ -436,6 +437,7 @@ Unknown_14d2c: ; 14d2c
db $0f, $05, $14, $07, $05, $05
db $11, $0c, $0c, $06, $06, $04
; 14d5c
+.DataEnd
EraseBattleTowerStatus: ; 14d5c
ld a, BANK(sBattleTowerChallengeState)
@@ -451,6 +453,7 @@ SaveData: ; 14d68
; 14d6c
Function14d6c: ; 14d6c
+; XXX
ld a, $4
call GetSRAMBank
ld a, [$a60b]
@@ -467,6 +470,7 @@ Function14d6c: ; 14d6c
; 14d83
Function14d83: ; 14d83
+; XXX
ld a, $4
call GetSRAMBank
xor a
@@ -477,6 +481,7 @@ Function14d83: ; 14d83
; 14d93
Function14d93: ; 14d93
+; XXX
ld a, $7
call GetSRAMBank
xor a
@@ -664,7 +669,7 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5)
push af
set NO_TEXT_SCROLL, a
ld [Options], a
- ld hl, UnknownText_0x1529c
+ ld hl, Text_SaveFileCorrupted
call PrintText
pop af
ld [Options], a
@@ -1156,49 +1161,49 @@ Checksum: ; 15273
; 15283
-UnknownText_0x15283: ; 0x15283
+Text_WouldYouLikeToSaveTheGame: ; 0x15283
; Would you like to save the game?
text_jump UnknownText_0x1c454b
db "@"
; 0x15288
-UnknownText_0x15288: ; 0x15288
+Text_SavingDontTurnOffThePower: ; 0x15288
; SAVING… DON'T TURN OFF THE POWER.
text_jump UnknownText_0x1c456d
db "@"
; 0x1528d
-UnknownText_0x1528d: ; 0x1528d
+Text_PlayerSavedTheGame: ; 0x1528d
; saved the game.
text_jump UnknownText_0x1c4590
db "@"
; 0x15292
-UnknownText_0x15292: ; 0x15292
+Text_AlreadyASaveFile: ; 0x15292
; There is already a save file. Is it OK to overwrite?
text_jump UnknownText_0x1c45a3
db "@"
; 0x15297
-UnknownText_0x15297: ; 0x15297
+Text_AnotherSaveFile: ; 0x15297
; There is another save file. Is it OK to overwrite?
text_jump UnknownText_0x1c45d9
db "@"
; 0x1529c
-UnknownText_0x1529c: ; 0x1529c
+Text_SaveFileCorrupted: ; 0x1529c
; The save file is corrupted!
text_jump UnknownText_0x1c460d
db "@"
; 0x152a1
-UnknownText_0x152a1: ; 0x152a1
+Text_SaveOnBoxSwitch: ; 0x152a1
; When you change a #MON BOX, data will be saved. OK?
text_jump UnknownText_0x1c462a
db "@"
; 0x152a6
-UnknownText_0x152a6: ; 0x152a6
+Text_SaveOnMovePkmnWOMail: ; 0x152a6
; Each time you move a #MON, data will be saved. OK?
text_jump UnknownText_0x1c465f
db "@"
diff --git a/engine/scripting.asm b/engine/scripting.asm
index 078ce8931..e9899ef0f 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -1,15 +1,14 @@
; Event scripting commands.
-EnableScriptMode:: ; 96c56
+EnableScriptMode::
push af
ld a, SCRIPT_READ
ld [ScriptMode], a
pop af
ret
-; 96c5e
-ScriptEvents:: ; 96c5e
+ScriptEvents::
call StartScript
.loop
ld a, [ScriptMode]
@@ -18,20 +17,18 @@ ScriptEvents:: ; 96c5e
call CheckScript
jr nz, .loop
ret
-; 96c6e
-.modes ; 96c6e
+.modes
dw EndScript
dw RunScriptCommand
dw WaitScriptMovement
dw WaitScript
-EndScript: ; 96c76
+EndScript:
call StopScript
ret
-; 96c7a
-WaitScript: ; 96c7a
+WaitScript:
call StopScript
ld hl, ScriptDelay
@@ -44,9 +41,8 @@ WaitScript: ; 96c7a
ld [ScriptMode], a
call StartScript
ret
-; 96c91
-WaitScriptMovement: ; 96c91
+WaitScriptMovement:
call StopScript
ld hl, VramState
@@ -59,17 +55,15 @@ WaitScriptMovement: ; 96c91
ld [ScriptMode], a
call StartScript
ret
-; 96ca9
-RunScriptCommand: ; 96ca9
+RunScriptCommand:
call GetScriptByte
ld hl, ScriptCommandTable
rst JumpTable
ret
-; 96cb1
-ScriptCommandTable: ; 96cb1
+ScriptCommandTable:
dw Script_scall ; 00
dw Script_farscall ; 01
dw Script_ptcall ; 02
@@ -242,27 +236,23 @@ ENDC
dw Script_name ; a7
dw Script_wait ; a8
dw Script_check_save ; a9
-; 96e05
-StartScript: ; 96e05
+StartScript:
ld hl, ScriptFlags
set SCRIPT_RUNNING, [hl]
ret
-; 96e0b
-CheckScript: ; 96e0b
+CheckScript:
ld hl, ScriptFlags
bit SCRIPT_RUNNING, [hl]
ret
-; 96e11
-StopScript: ; 96e11
+StopScript:
ld hl, ScriptFlags
res SCRIPT_RUNNING, [hl]
ret
-; 96e17
-Script_callasm: ; 96e17
+Script_callasm:
; script command 0xe
; parameters:
; asm (AsmPointerParam)
@@ -276,9 +266,8 @@ Script_callasm: ; 96e17
ld a, b
rst FarCall
ret
-; 96e26
-Script_special: ; 96e26
+Script_special:
; script command 0xf
; parameters:
; predefined_script (MultiByteParam)
@@ -289,9 +278,8 @@ Script_special: ; 96e26
ld d, a
callba Special
ret
-; 96e35
-Script_ptcallasm: ; 96e35
+Script_ptcallasm:
; script command 0x10
; parameters:
; asm (PointerToAsmPointerParam)
@@ -308,9 +296,8 @@ Script_ptcallasm: ; 96e35
ld a, b
rst FarCall
ret
-; 96e45
-Script_jumptextfaceplayer: ; 96e45
+Script_jumptextfaceplayer:
; script command 0x51
; parameters:
; text_pointer (RawTextPointerLabelParam)
@@ -324,9 +311,8 @@ Script_jumptextfaceplayer: ; 96e45
ld b, BANK(JumpTextFacePlayerScript)
ld hl, JumpTextFacePlayerScript
jp ScriptJump
-; 96e5f
-Script_jumptext: ; 96e5f
+Script_jumptext:
; script command 0x53
; parameters:
; text_pointer (RawTextPointerLabelParam)
@@ -340,22 +326,20 @@ Script_jumptext: ; 96e5f
ld b, BANK(JumpTextScript)
ld hl, JumpTextScript
jp ScriptJump
-; 96e79
-JumpTextFacePlayerScript: ; 96e79
+JumpTextFacePlayerScript:
faceplayer
-JumpTextScript: ; 96e7a
+JumpTextScript:
opentext
repeattext -1, -1
waitbutton
closetext
end
-; 96e81
IF _CRYSTAL
-Script_farjumptext: ; 96e81
+Script_farjumptext:
; script command 0x52
; parameters:
; text_pointer (PointerLabelBeforeBank)
@@ -369,12 +353,11 @@ Script_farjumptext: ; 96e81
ld b, BANK(JumpTextScript)
ld hl, JumpTextScript
jp ScriptJump
-; 96e9b
ENDC
-Script_writetext: ; 96e9b
+Script_writetext:
; script command 0x4c
; parameters:
; text_pointer (RawTextPointerLabelParam)
@@ -387,9 +370,8 @@ Script_writetext: ; 96e9b
ld b, a
call MapTextbox
ret
-; 96eab
-Script_farwritetext: ; 96eab
+Script_farwritetext:
; script command 0x4b
; parameters:
; text_pointer (PointerLabelBeforeBank)
@@ -402,9 +384,8 @@ Script_farwritetext: ; 96eab
ld h, a
call MapTextbox
ret
-; 96ebb
-Script_repeattext: ; 96ebb
+Script_repeattext:
; script command 0x4d
; parameters:
; byte (SingleByteParam)
@@ -430,15 +411,13 @@ Script_repeattext: ; 96ebb
.done
ret
-; 96ed9
-Script_waitbutton: ; 96ed9
+Script_waitbutton:
; script command 0x54
jp WaitButton
-; 96edc
-Script_buttonsound: ; 96edc
+Script_buttonsound:
; script command 0x55
ld a, [hOAMUpdate]
@@ -450,9 +429,8 @@ Script_buttonsound: ; 96edc
pop af
ld [hOAMUpdate], a
ret
-; 96eed
-Script_yesorno: ; 96eed
+Script_yesorno:
; script command 0x4e
call YesNoBox
@@ -462,9 +440,8 @@ Script_yesorno: ; 96eed
.no
ld [ScriptVar], a
ret
-; 96efa
-Script_loadmenudata: ; 96efa
+Script_loadmenudata:
; script command 0x4f
; parameters:
; data (MenuDataPointerParam)
@@ -478,17 +455,15 @@ Script_loadmenudata: ; 96efa
call Call_a_de
call UpdateSprites
ret
-; 96f0f
-Script_closewindow: ; 96f0f
+Script_closewindow:
; script command 0x50
call CloseWindow
call UpdateSprites
ret
-; 96f16
-Script_pokepic: ; 96f16
+Script_pokepic:
; script command 0x56
; parameters:
; pokemon (PokemonParam)
@@ -501,16 +476,14 @@ Script_pokepic: ; 96f16
ld [CurPartySpecies], a
callba Pokepic
ret
-; 96f29
-Script_closepokepic: ; 96f29
+Script_closepokepic:
; script command 0x57
callba ClosePokepic
ret
-; 96f30
-Script_verticalmenu: ; 96f30
+Script_verticalmenu:
; script command 0x59
ld a, [ScriptBank]
@@ -522,9 +495,8 @@ Script_verticalmenu: ; 96f30
.ok
ld [ScriptVar], a
ret
-; 96f41
-Script__2dmenu: ; 96f41
+Script__2dmenu:
; script command 0x58
ld a, [ScriptBank]
@@ -536,9 +508,8 @@ Script__2dmenu: ; 96f41
.ok
ld [ScriptVar], a
ret
-; 96f52
-Script_battletowertext: ; 96f52
+Script_battletowertext:
; script command 0xa4
; parameters:
; pointer (PointerLabelBeforeBank)
@@ -549,9 +520,8 @@ Script_battletowertext: ; 96f52
ld c, a
callba BattleTowerText
ret
-; 96f60
-Script_verbosegiveitem: ; 96f60
+Script_verbosegiveitem:
; script command 0x9e
; parameters:
; item (ItemLabelByte)
@@ -565,14 +535,12 @@ Script_verbosegiveitem: ; 96f60
ld b, BANK(GiveItemScript)
ld de, GiveItemScript
jp ScriptCall
-; 96f76
-ret_96f76: ; 96f76
+ret_96f76:
ret
-; 96f77
-GiveItemScript: ; 96f77
+GiveItemScript:
callasm ret_96f76
writetext ReceivedItemText
iffalse .Full
@@ -586,15 +554,13 @@ GiveItemScript: ; 96f77
buttonsound
pocketisfull
end
-; 96f89
-ReceivedItemText: ; 96f89
+ReceivedItemText:
text_jump UnknownText_0x1c4719
db "@"
-; 96f8e
-Script_verbosegiveitem2: ; 96f8e
+Script_verbosegiveitem2:
; script command 0x9f
; parameters:
; item (ItemLabelByte)
@@ -624,9 +590,8 @@ Script_verbosegiveitem2: ; 96f8e
ld b, BANK(GiveItemScript)
ld de, GiveItemScript
jp ScriptCall
-; 96fc6
-Script_itemnotify: ; 96fc6
+Script_itemnotify:
; script command 0x45
call GetPocketName
@@ -635,9 +600,8 @@ Script_itemnotify: ; 96fc6
ld hl, PutItemInPocketText
call MapTextbox
ret
-; 96fd5
-Script_pocketisfull: ; 96fd5
+Script_pocketisfull:
; script command 0x46
call GetPocketName
@@ -646,9 +610,8 @@ Script_pocketisfull: ; 96fd5
ld hl, PocketIsFullText
call MapTextbox
ret
-; 96fe4
-Script_specialsound: ; 96fe4
+Script_specialsound:
; script command 0x88
callba CheckItemPocket
@@ -661,10 +624,9 @@ Script_specialsound: ; 96fe4
call PlaySFX
call WaitSFX
ret
-; 96ffe
-GetPocketName: ; 96ffe
+GetPocketName:
callba CheckItemPocket
ld a, [wItemAttributeParamBuffer]
dec a
@@ -695,28 +657,24 @@ GetPocketName: ; 96ffe
db "BALL POCKET@"
.TM:
db "TM POCKET@"
-; 97051
-CurItemName: ; 97051
+CurItemName:
ld a, [CurItem]
ld [wd265], a
call GetItemName
ret
-; 9705b
-PutItemInPocketText: ; 9705b
+PutItemInPocketText:
text_jump UnknownText_0x1c472c
db "@"
-; 97060
-PocketIsFullText: ; 97060
+PocketIsFullText:
text_jump UnknownText_0x1c474b
db "@"
-; 97065
-Script_pokemart: ; 97065
+Script_pokemart:
; script command 0x94
; parameters:
; dialog_id (SingleByteParam)
@@ -732,9 +690,8 @@ Script_pokemart: ; 97065
ld b, a
callba OpenMartDialog
ret
-; 9707c
-Script_elevator: ; 9707c
+Script_elevator:
; script command 0x95
; parameters:
; floor_list_pointer (PointerLabelParam)
@@ -752,9 +709,8 @@ Script_elevator: ; 9707c
ld a, TRUE
ld [ScriptVar], a
ret
-; 97099
-Script_trade: ; 97099
+Script_trade:
; script command 0x96
; parameters:
; trade_id (SingleByteParam)
@@ -763,9 +719,8 @@ Script_trade: ; 97099
ld e, a
callba NPCTrade
ret
-; 970a4
-Script_phonecall: ; 970a4
+Script_phonecall:
; script command 0x98
; parameters:
; caller_name (RawTextPointerLabelParam)
@@ -778,16 +733,14 @@ Script_phonecall: ; 970a4
ld b, a
callba PhoneCall
ret
-; 970b7
-Script_hangup: ; 970b7
+Script_hangup:
; script command 0x99
callba HangUp
ret
-; 970be
-Script_askforphonenumber: ; 970be
+Script_askforphonenumber:
; script command 0x97
; parameters:
; number (SingleByteParam)
@@ -809,9 +762,8 @@ Script_askforphonenumber: ; 970be
.done
ld [ScriptVar], a
ret
-; 970df
-Script_describedecoration: ; 970df
+Script_describedecoration:
; script command 0x9a
; parameters:
; byte (SingleByteParam)
@@ -822,9 +774,8 @@ Script_describedecoration: ; 970df
ld h, d
ld l, e
jp ScriptJump
-; 970ee
-Script_fruittree: ; 970ee
+Script_fruittree:
; script command 0x9b
; parameters:
; tree_id (SingleByteParam)
@@ -834,9 +785,8 @@ Script_fruittree: ; 970ee
ld b, BANK(FruitTreeScript)
ld hl, FruitTreeScript
jp ScriptJump
-; 970fc
-Script_swarm: ; 970fc
+Script_swarm:
; script command 0xa0
; parameters:
; flag (SingleByteParam)
@@ -851,9 +801,8 @@ Script_swarm: ; 970fc
ld e, a
callba StoreSwarmMapIndices
ret
-; 9710f
-Script_trainertext: ; 9710f
+Script_trainertext:
; script command 0x62
; parameters:
; which_text (SingleByteParam)
@@ -871,9 +820,8 @@ Script_trainertext: ; 9710f
ld b, a
call MapTextbox
ret
-; 97125
-Script_scripttalkafter: ; 97125
+Script_scripttalkafter:
; script command 0x65
ld hl, wScriptAfterPointer
@@ -883,9 +831,8 @@ Script_scripttalkafter: ; 97125
ld a, [EngineBuffer1]
ld b, a
jp ScriptJump
-; 97132
-Script_trainerflagaction: ; 97132
+Script_trainerflagaction:
; script command 0x63
; parameters:
; action (SingleByteParam)
@@ -905,37 +852,34 @@ Script_trainerflagaction: ; 97132
ld a, TRUE
ld [ScriptVar], a
ret
-; 9714c
-Script_winlosstext: ; 9714c
+Script_winlosstext:
; script command 0x64
; parameters:
; win_text_pointer (TextPointerLabelParam)
; loss_text_pointer (TextPointerLabelParam)
- ld hl, wWinTextPointer ; d047
+ ld hl, wWinTextPointer
call GetScriptByte
ld [hli], a
call GetScriptByte
ld [hli], a
- ld hl, wLossTextPointer ; d049; this is unnecessary
+ ld hl, wLossTextPointer
call GetScriptByte
ld [hli], a
call GetScriptByte
ld [hli], a
ret
-; 97163
-Script_end_if_just_battled: ; 97163
+Script_end_if_just_battled:
; script command 0x66
ld a, [wRunningTrainerBattleScript]
and a
ret z
jp Script_end
-; 9716b
-Script_check_just_battled: ; 9716b
+Script_check_just_battled:
; script command 0x67
ld a, TRUE
@@ -946,25 +890,22 @@ Script_check_just_battled: ; 9716b
xor a
ld [ScriptVar], a
ret
-; 9717a
-Script_encountermusic: ; 9717a
+Script_encountermusic:
; script command 0x80
ld a, [OtherTrainerClass]
ld e, a
callba PlayTrainerEncounterMusic
ret
-; 97185
-Script_playmapmusic: ; 97185
+Script_playmapmusic:
; script command 0x82
call PlayMapMusic
ret
-; 97189
-Script_playmusic: ; 97189
+Script_playmusic:
; script command 0x7f
; parameters:
; music_pointer (MultiByteParam)
@@ -980,9 +921,8 @@ Script_playmusic: ; 97189
ld d, a
call PlayMusic
ret
-; 971a2
-Script_musicfadeout: ; 971a2
+Script_musicfadeout:
; script command 0x81
; parameters:
; music (MultiByteParam)
@@ -996,9 +936,8 @@ Script_musicfadeout: ; 971a2
and $7f
ld [MusicFade], a
ret
-; 971b7
-Script_playsound: ; 971b7
+Script_playsound:
; script command 0x85
; parameters:
; sound_pointer (MultiByteParam)
@@ -1009,24 +948,21 @@ Script_playsound: ; 971b7
ld d, a
call PlaySFX
ret
-; 971c3
-Script_waitsfx: ; 971c3
+Script_waitsfx:
; script command 0x86
call WaitSFX
ret
-; 971c7
-Script_warpsound: ; 971c7
+Script_warpsound:
; script command 0x87
callba Function14a07
call PlaySFX
ret
-; 971d1
-Script_cry: ; 971d1
+Script_cry:
; script command 0x84
; parameters:
; cry_id (MultiByteParam)
@@ -1041,18 +977,16 @@ Script_cry: ; 971d1
.ok
call PlayCry
ret
-; 971e3
-GetScriptPerson: ; 971e3
+GetScriptPerson:
and a
ret z
cp LAST_TALKED
ret z
dec a
ret
-; 971ea
-Script_setlasttalked: ; 971ea
+Script_setlasttalked:
; script command 0x68
; parameters:
; person (SingleByteParam)
@@ -1061,9 +995,8 @@ Script_setlasttalked: ; 971ea
call GetScriptPerson
ld [hLastTalked], a
ret
-; 971f3
-Script_applymovement: ; 971f3
+Script_applymovement:
; script command 0x69
; parameters:
; person (SingleByteParam)
@@ -1072,9 +1005,8 @@ Script_applymovement: ; 971f3
call GetScriptByte
call GetScriptPerson
ld c, a
-; 971fa
-ApplyMovement: ; 971fa
+ApplyMovement:
push bc
ld a, c
callba SetFlagsForMovement_1
@@ -1097,14 +1029,12 @@ ApplyMovement: ; 971fa
ld [ScriptMode], a
call StopScript
ret
-; 97221
-SetFlagsForMovement_2: ; 97221
+SetFlagsForMovement_2:
callba _SetFlagsForMovement_2
ret
-; 97228
-Script_applymovement2: ; 97228
+Script_applymovement2:
; apply movement to last talked
; script command 0x6a
; parameters:
@@ -1113,9 +1043,8 @@ Script_applymovement2: ; 97228
ld a, [hLastTalked]
ld c, a
jp ApplyMovement
-; 9722e
-Script_faceplayer: ; 9722e
+Script_faceplayer:
; script command 0x6b
ld a, [hLastTalked]
@@ -1133,9 +1062,8 @@ Script_faceplayer: ; 9722e
ld d, a
call ApplyPersonFacing
ret
-; 97248
-Script_faceperson: ; 97248
+Script_faceperson:
; script command 0x6c
; parameters:
; person1 (SingleByteParam)
@@ -1166,9 +1094,8 @@ Script_faceperson: ; 97248
ld d, c
call ApplyPersonFacing
ret
-; 97274
-Script_spriteface: ; 97274
+Script_spriteface:
; script command 0x76
; parameters:
; person (SingleByteParam)
@@ -1187,9 +1114,8 @@ Script_spriteface: ; 97274
ld e, a
call ApplyPersonFacing
ret
-; 9728b
-ApplyPersonFacing: ; 9728b
+ApplyPersonFacing:
ld a, d
push de
call CheckObjectVisibility
@@ -1220,9 +1146,8 @@ ApplyPersonFacing: ; 9728b
pop de
scf
ret
-; 972bc
-.DisableTextTiles: ; 972bc
+.DisableTextTiles:
call LoadMapPart
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -1234,9 +1159,8 @@ ApplyPersonFacing: ; 9728b
or c
jr nz, .loop
ret
-; 972ce
-Script_variablesprite: ; 972ce
+Script_variablesprite:
; script command 0x6d
; parameters:
; byte (SingleByteParam)
@@ -1250,9 +1174,8 @@ Script_variablesprite: ; 972ce
call GetScriptByte
ld [hl], a
ret
-; 972dd
-Script_appear: ; 972dd
+Script_appear:
; script command 0x6f
; parameters:
; person (SingleByteParam)
@@ -1264,9 +1187,8 @@ Script_appear: ; 972dd
ld b, 0 ; clear
call ApplyEventActionAppearDisappear
ret
-; 972ee
-Script_disappear: ; 972ee
+Script_disappear:
; script command 0x6e
; parameters:
; person (SingleByteParam)
@@ -1283,9 +1205,8 @@ Script_disappear: ; 972ee
call ApplyEventActionAppearDisappear
callba _UpdateSprites
ret
-; 9730b
-ApplyEventActionAppearDisappear: ; 9730b
+ApplyEventActionAppearDisappear:
push bc
call GetMapObject
ld hl, MAPOBJECT_EVENT_FLAG
@@ -1304,9 +1225,8 @@ ApplyEventActionAppearDisappear: ; 9730b
.okay
call EventFlagAction
ret
-; 97325
-Script_follow: ; 97325
+Script_follow:
; script command 0x70
; parameters:
; person2 (SingleByteParam)
@@ -1320,16 +1240,14 @@ Script_follow: ; 97325
ld c, a
callba StartFollow
ret
-; 9733a
-Script_stopfollow: ; 9733a
+Script_stopfollow:
; script command 0x71
callba StopFollow
ret
-; 97341
-Script_moveperson: ; 97341
+Script_moveperson:
; script command 0x72
; parameters:
; person (SingleByteParam)
@@ -1347,9 +1265,8 @@ Script_moveperson: ; 97341
ld e, a
callba CopyDECoordsToMapObject
ret
-; 9735b
-Script_writepersonxy: ; 9735b
+Script_writepersonxy:
; script command 0x73
; parameters:
; person (SingleByteParam)
@@ -1363,9 +1280,8 @@ Script_writepersonxy: ; 9735b
ld b, a
callba WritePersonXY
ret
-; 9736f
-Script_follownotexact: ; 9736f
+Script_follownotexact:
; script command 0x77
; parameters:
; person2 (SingleByteParam)
@@ -1379,9 +1295,8 @@ Script_follownotexact: ; 9736f
ld c, a
callba FollowNotExact
ret
-; 97384
-Script_loademote: ; 97384
+Script_loademote:
; script command 0x74
; parameters:
; bubble (SingleByteParam)
@@ -1394,9 +1309,8 @@ Script_loademote: ; 97384
ld c, a
callba LoadEmote
ret
-; 97396
-Script_showemote: ; 97396
+Script_showemote:
; script command 0x75
; parameters:
; bubble (SingleByteParam)
@@ -1416,9 +1330,8 @@ Script_showemote: ; 97396
ld b, BANK(ShowEmoteScript)
ld de, ShowEmoteScript
jp ScriptCall
-; 973b6
-ShowEmoteScript: ; 973b6
+ShowEmoteScript:
loademote EMOTE_MEM
applymovement2 .Show
pause 0
@@ -1427,17 +1340,16 @@ ShowEmoteScript: ; 973b6
.Show:
show_emote
- step_sleep_1
+ step_sleep 1
step_end
.Hide:
hide_emote
- step_sleep_1
+ step_sleep 1
step_end
-; 973c7
-Script_earthquake: ; 973c7
+Script_earthquake:
; script command 0x78
; parameters:
; param (DecimalParam)
@@ -1453,22 +1365,19 @@ Script_earthquake: ; 973c7
ld b, BANK(.script)
ld de, .script
jp ScriptCall
-; 973e6
-.script ; 973e6
+.script
applymovement PLAYER, wd002
end
-; 973eb
-EarthquakeMovement: ; 973eb
+EarthquakeMovement:
step_shake 16 ; the 16 gets overwritten with the script byte
step_sleep 16 ; the 16 gets overwritten with the lower 6 bits of the script byte
step_end
EarthquakeMovementEnd
-; 973f0
-Script_loadpikachudata: ; 973f0
+Script_loadpikachudata:
; script command 0x5a
ld a, PIKACHU
@@ -1476,17 +1385,15 @@ Script_loadpikachudata: ; 973f0
ld a, 5
ld [CurPartyLevel], a
ret
-; 973fb
-Script_randomwildmon: ; 973fb
+Script_randomwildmon:
; script command 0x5b
xor a
ld [wBattleScriptFlags], a
ret
-; 97400
-Script_loadmemtrainer: ; 97400
+Script_loadmemtrainer:
; script command 0x5c
ld a, (1 << 7) | 1
@@ -1496,9 +1403,8 @@ Script_loadmemtrainer: ; 97400
ld a, [wTempTrainerID]
ld [OtherTrainerID], a
ret
-; 97412
-Script_loadwildmon: ; 97412
+Script_loadwildmon:
; script command 0x5d
; parameters:
; pokemon (PokemonParam)
@@ -1511,9 +1417,8 @@ Script_loadwildmon: ; 97412
call GetScriptByte
ld [CurPartyLevel], a
ret
-; 97424
-Script_loadtrainer: ; 97424
+Script_loadtrainer:
; script command 0x5e
; parameters:
; trainer_group (TrainerGroupParam)
@@ -1526,9 +1431,8 @@ Script_loadtrainer: ; 97424
call GetScriptByte
ld [OtherTrainerID], a
ret
-; 97436
-Script_startbattle: ; 97436
+Script_startbattle:
; script command 0x5f
call BufferScreen
@@ -1537,9 +1441,8 @@ Script_startbattle: ; 97436
and $3f
ld [ScriptVar], a
ret
-; 97447
-Script_catchtutorial: ; 97447
+Script_catchtutorial:
; script command 0x61
; parameters:
; byte (SingleByteParam)
@@ -1549,9 +1452,8 @@ Script_catchtutorial: ; 97447
call BufferScreen
callba CatchTutorial
jp Script_reloadmap
-; 97459
-Script_reloadmapafterbattle: ; 97459
+Script_reloadmapafterbattle:
; script command 0x60
ld hl, wBattleScriptFlags
@@ -1580,9 +1482,8 @@ Script_reloadmapafterbattle: ; 97459
callba LoadScriptBDE
.done
jp Script_reloadmap
-; 97491
-Script_reloadmap: ; 97491
+Script_reloadmap:
; script command 0x7b
xor a
@@ -1593,9 +1494,8 @@ Script_reloadmap: ; 97491
call LoadMapStatus
call StopScript
ret
-; 974a2
-Script_scall: ; 974a2
+Script_scall:
; script command 0x0
; parameters:
; pointer (ScriptPointerLabelParam)
@@ -1607,9 +1507,8 @@ Script_scall: ; 974a2
call GetScriptByte
ld d, a
jr ScriptCall
-; 974b0
-Script_farscall: ; 974b0
+Script_farscall:
; script command 0x1
; parameters:
; pointer (ScriptPointerLabelBeforeBank)
@@ -1621,9 +1520,8 @@ Script_farscall: ; 974b0
call GetScriptByte
ld d, a
jr ScriptCall
-; 974be
-Script_ptcall: ; 974be
+Script_ptcall:
; script command 0x2
; parameters:
; pointer (PointerLabelToScriptPointer)
@@ -1639,7 +1537,7 @@ Script_ptcall: ; 974be
ld d, [hl]
; fallthrough
-ScriptCall: ; 974cb
+ScriptCall:
; Bug: The script stack has a capacity of 5 scripts, yet there is
; nothing to stop you from pushing a sixth script. The high part
; of the script address can then be overwritten by modifications
@@ -1652,9 +1550,9 @@ ScriptCall: ; 974cb
inc [hl]
ld d, $0
ld hl, wScriptStack
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
pop de
ld a, [ScriptBank]
ld [hli], a
@@ -1669,16 +1567,14 @@ endr
ld a, d
ld [ScriptPos + 1], a
ret
-; 974f3
-CallCallback:: ; 974f3
+CallCallback::
ld a, [ScriptBank]
or $80
ld [ScriptBank], a
jp ScriptCall
-; 974fe
-Script_jump: ; 974fe
+Script_jump:
; script command 0x3
; parameters:
; pointer (ScriptPointerLabelParam)
@@ -1690,9 +1586,8 @@ Script_jump: ; 974fe
ld a, [ScriptBank]
ld b, a
jp ScriptJump
-; 9750d
-Script_farjump: ; 9750d
+Script_farjump:
; script command 0x4
; parameters:
; pointer (ScriptPointerLabelBeforeBank)
@@ -1704,9 +1599,8 @@ Script_farjump: ; 9750d
call GetScriptByte
ld h, a
jp ScriptJump
-; 9751c
-Script_ptjump: ; 9751c
+Script_ptjump:
; script command 0x5
; parameters:
; pointer (PointerLabelToScriptPointer)
@@ -1721,9 +1615,8 @@ Script_ptjump: ; 9751c
ld h, [hl]
ld l, a
jp ScriptJump
-; 9752c
-Script_iffalse: ; 9752c
+Script_iffalse:
; script command 0x8
; parameters:
; pointer (ScriptPointerLabelParam)
@@ -1732,9 +1625,8 @@ Script_iffalse: ; 9752c
and a
jp nz, SkipTwoScriptBytes
jp Script_jump
-; 97536
-Script_iftrue: ; 97536
+Script_iftrue:
; script command 0x9
; parameters:
; pointer (ScriptPointerLabelParam)
@@ -1743,9 +1635,8 @@ Script_iftrue: ; 97536
and a
jp nz, Script_jump
jp SkipTwoScriptBytes
-; 97540
-Script_if_equal: ; 97540
+Script_if_equal:
; script command 0x6
; parameters:
; byte (SingleByteParam)
@@ -1756,9 +1647,8 @@ Script_if_equal: ; 97540
cp [hl]
jr z, Script_jump
jr SkipTwoScriptBytes
-; 9754b
-Script_if_not_equal: ; 9754b
+Script_if_not_equal:
; script command 0x7
; parameters:
; byte (SingleByteParam)
@@ -1769,9 +1659,8 @@ Script_if_not_equal: ; 9754b
cp [hl]
jr nz, Script_jump
jr SkipTwoScriptBytes
-; 97556
-Script_if_greater_than: ; 97556
+Script_if_greater_than:
; script command 0xa
; parameters:
; byte (SingleByteParam)
@@ -1783,9 +1672,8 @@ Script_if_greater_than: ; 97556
cp b
jr c, Script_jump
jr SkipTwoScriptBytes
-; 97562
-Script_if_less_than: ; 97562
+Script_if_less_than:
; script command 0xb
; parameters:
; byte (SingleByteParam)
@@ -1797,18 +1685,16 @@ Script_if_less_than: ; 97562
cp b
jr c, Script_jump
jr SkipTwoScriptBytes
-; 9756e
-Script_jumpstd: ; 9756e
+Script_jumpstd:
; script command 0xc
; parameters:
; predefined_script (MultiByteParam)
call StdScript
jr ScriptJump
-; 97573
-Script_callstd: ; 97573
+Script_callstd:
; script command 0xd
; parameters:
; predefined_script (MultiByteParam)
@@ -1817,17 +1703,16 @@ Script_callstd: ; 97573
ld d, h
ld e, l
jp ScriptCall
-; 9757b
-StdScript: ; 9757b
+StdScript:
call GetScriptByte
ld e, a
call GetScriptByte
ld d, a
ld hl, StdScripts
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ld a, BANK(StdScripts)
call GetFarByte
ld b, a
@@ -1835,15 +1720,13 @@ endr
ld a, BANK(StdScripts)
call GetFarHalfword
ret
-; 97596
-SkipTwoScriptBytes: ; 97596
+SkipTwoScriptBytes:
call GetScriptByte
call GetScriptByte
ret
-; 9759d
-ScriptJump: ; 9759d
+ScriptJump:
ld a, b
ld [ScriptBank], a
ld a, l
@@ -1851,9 +1734,8 @@ ScriptJump: ; 9759d
ld a, h
ld [ScriptPos + 1], a
ret
-; 975aa
-Script_priorityjump: ; 975aa
+Script_priorityjump:
; script command 0x8d
; parameters:
; pointer (ScriptPointerLabelParam)
@@ -1867,9 +1749,8 @@ Script_priorityjump: ; 975aa
ld hl, ScriptFlags
set 3, [hl]
ret
-; 975c2
-Script_checktriggers: ; 975c2
+Script_checktriggers:
; script command 0x13
call CheckTriggers
@@ -1881,9 +1762,8 @@ Script_checktriggers: ; 975c2
ld a, $ff
ld [ScriptVar], a
ret
-; 975d1
-Script_checkmaptriggers: ; 975d1
+Script_checkmaptriggers:
; script command 0x11
; parameters:
; map_group (SingleByteParam)
@@ -1905,9 +1785,8 @@ Script_checkmaptriggers: ; 975d1
ld a, $ff
ld [ScriptVar], a
ret
-; 975eb
-Script_dotrigger: ; 975eb
+Script_dotrigger:
; script command 0x14
; parameters:
; trigger_id (SingleByteParam)
@@ -1917,9 +1796,8 @@ Script_dotrigger: ; 975eb
ld a, [MapNumber]
ld c, a
jr DoTrigger
-; 975f5
-Script_domaptrigger: ; 975f5
+Script_domaptrigger:
; script command 0x12
; parameters:
; map_group (MapGroupParam)
@@ -1930,7 +1808,7 @@ Script_domaptrigger: ; 975f5
ld b, a
call GetScriptByte
ld c, a
-DoTrigger: ; 975fd
+DoTrigger:
call GetMapTrigger
ld a, d
or e
@@ -1939,9 +1817,8 @@ DoTrigger: ; 975fd
ld [de], a
.no_trigger
ret
-; 97609
-Script_copybytetovar: ; 97609
+Script_copybytetovar:
; script command 0x19
; parameters:
; address (RAMAddressParam)
@@ -1953,9 +1830,8 @@ Script_copybytetovar: ; 97609
ld a, [hl]
ld [ScriptVar], a
ret
-; 97616
-Script_copyvartobyte: ; 97616
+Script_copyvartobyte:
; script command 0x1a
; parameters:
; address (RAMAddressParam)
@@ -1967,9 +1843,8 @@ Script_copyvartobyte: ; 97616
ld a, [ScriptVar]
ld [hl], a
ret
-; 97623
-Script_loadvar: ; 97623
+Script_loadvar:
; script command 0x1b
; parameters:
; address (RAMAddressParam)
@@ -1982,9 +1857,8 @@ Script_loadvar: ; 97623
call GetScriptByte
ld [hl], a
ret
-; 97630
-Script_writebyte: ; 97630
+Script_writebyte:
; script command 0x15
; parameters:
; value (SingleByteParam)
@@ -1992,9 +1866,8 @@ Script_writebyte: ; 97630
call GetScriptByte
ld [ScriptVar], a
ret
-; 97637
-Script_addvar: ; 97637
+Script_addvar:
; script command 0x16
; parameters:
; value (SingleByteParam)
@@ -2004,9 +1877,8 @@ Script_addvar: ; 97637
add [hl]
ld [hl], a
ret
-; 97640
-Script_random: ; 97640
+Script_random:
; script command 0x17
; parameters:
; input (SingleByteParam)
@@ -2047,9 +1919,8 @@ Script_random: ; 97640
call SimpleDivide
ld [ScriptVar], a
ret
-; 97673
-.Divide256byC: ; 97673
+.Divide256byC:
xor a
ld b, a
sub c
@@ -2060,9 +1931,8 @@ Script_random: ; 97640
dec b
add c
ret
-; 9767d
-Script_checkcode: ; 9767d
+Script_checkcode:
; script command 0x1c
; parameters:
; variable_id (SingleByteParam)
@@ -2072,9 +1942,8 @@ Script_checkcode: ; 9767d
ld a, [de]
ld [ScriptVar], a
ret
-; 97688
-Script_writevarcode: ; 97688
+Script_writevarcode:
; script command 0x1d
; parameters:
; variable_id (SingleByteParam)
@@ -2084,9 +1953,8 @@ Script_writevarcode: ; 97688
ld a, [ScriptVar]
ld [de], a
ret
-; 97693
-Script_writecode: ; 97693
+Script_writecode:
; script command 0x1e
; parameters:
; variable_id (SingleByteParam)
@@ -2097,27 +1965,23 @@ Script_writecode: ; 97693
call GetScriptByte
ld [de], a
ret
-; 9769e
-GetVarAction: ; 9769e
+GetVarAction:
ld c, a
callba _GetVarAction
ret
-; 976a6
-Script_checkver: ; 976a6
+Script_checkver:
; script command 0x18
ld a, [Version]
ld [ScriptVar], a
ret
-; 976ad
-Version: ; 976ad
+Version:
db VERSION
-; 976ae
-Script_pokenamemem: ; 976ae
+Script_pokenamemem:
; script command 0x40
; parameters:
; pokemon (PokemonParam); leave $0 to draw from script var
@@ -2132,22 +1996,21 @@ Script_pokenamemem: ; 976ae
call GetPokemonName
ld de, StringBuffer1
-ConvertMemToText: ; 976c0
+ConvertMemToText:
call GetScriptByte
cp 3
jr c, .ok
xor a
.ok
-CopyConvertedText: ; 976c8
+CopyConvertedText:
ld hl, StringBuffer3
ld bc, StringBuffer4 - StringBuffer3
call AddNTimes
call CopyName2
ret
-; 976d5
-Script_itemtotext: ; 976d5
+Script_itemtotext:
; script command 0x41
; parameters:
; item (ItemLabelByte); use 0 to draw from ScriptVar
@@ -2162,9 +2025,8 @@ Script_itemtotext: ; 976d5
call GetItemName
ld de, StringBuffer1
jr ConvertMemToText
-; 976e9
-Script_mapnametotext: ; 976e9
+Script_mapnametotext:
; script command 0x42
; parameters:
; memory (SingleByteParam)
@@ -2175,14 +2037,13 @@ Script_mapnametotext: ; 976e9
ld c, a
call GetWorldMapLocation
-ConvertLandmarkToText: ; 976f4
+ConvertLandmarkToText:
ld e, a
callba GetLandmarkName
ld de, StringBuffer1
jp ConvertMemToText
-; 97701
-Script_landmarktotext: ; 97701
+Script_landmarktotext:
; script command 0xa5
; parameters:
; id (SingleByteParam)
@@ -2190,9 +2051,8 @@ Script_landmarktotext: ; 97701
call GetScriptByte
jr ConvertLandmarkToText
-; 97706
-Script_trainertotext: ; 97706
+Script_trainertotext:
; script command 0x43
; parameters:
; trainer_id (TrainerGroupParam)
@@ -2205,9 +2065,8 @@ Script_trainertotext: ; 97706
ld b, a
callba GetTrainerName
jr ConvertMemToText
-; 97716
-Script_name: ; 97716
+Script_name:
; script command 0xa7
; parameters:
; type (SingleByteParam)
@@ -2217,15 +2076,14 @@ Script_name: ; 97716
call GetScriptByte
ld [wNamedObjectTypeBuffer], a
-ContinueToGetName: ; 9771c
+ContinueToGetName:
call GetScriptByte
ld [CurSpecies], a
call GetName
ld de, StringBuffer1
jp ConvertMemToText
-; 9772b
-Script_trainerclassname: ; 9772b
+Script_trainerclassname:
; script command 0xa6
; parameters:
; id (SingleByteParam)
@@ -2234,9 +2092,8 @@ Script_trainerclassname: ; 9772b
ld a, TRAINER_NAME
ld [wNamedObjectTypeBuffer], a
jr ContinueToGetName
-; 97732
-Script_readmoney: ; 97732
+Script_readmoney:
; script command 0x3d
; parameters:
; account (SingleByteParam)
@@ -2249,9 +2106,8 @@ Script_readmoney: ; 97732
call PrintNum
ld de, StringBuffer1
jp ConvertMemToText
-; 97747
-Script_readcoins: ; 97747
+Script_readcoins:
; script command 0x3e
; parameters:
; memory (SingleByteParam)
@@ -2263,9 +2119,8 @@ Script_readcoins: ; 97747
call PrintNum
ld de, StringBuffer1
jp ConvertMemToText
-; 9775c
-Script_RAM2MEM: ; 9775c
+Script_RAM2MEM:
; script command 0x3f
; parameters:
; memory (SingleByteParam)
@@ -2277,17 +2132,15 @@ Script_RAM2MEM: ; 9775c
call PrintNum
ld de, StringBuffer1
jp ConvertMemToText
-; 97771
-ResetStringBuffer1: ; 97771
+ResetStringBuffer1:
ld hl, StringBuffer1
ld bc, NAME_LENGTH
ld a, "@"
call ByteFill
ret
-; 9777d
-Script_stringtotext: ; 9777d
+Script_stringtotext:
; script command 0x44
; parameters:
; text_pointer (EncodedTextLabelParam)
@@ -2302,9 +2155,8 @@ Script_stringtotext: ; 9777d
rst FarCall
ld de, StringBuffer2
jp ConvertMemToText
-; 97792
-Script_givepokeitem: ; 97792
+Script_givepokeitem:
; script command 0x2f
; parameters:
; pointer (PointerParamToItemAndLetter)
@@ -2325,9 +2177,8 @@ Script_givepokeitem: ; 97792
pop bc
callba GivePokeItem
ret
-; 977b7
-Script_checkpokeitem: ; 977b7
+Script_checkpokeitem:
; script command 0x30
; parameters:
; pointer (PointerParamToItemAndLetter)
@@ -2340,9 +2191,8 @@ Script_checkpokeitem: ; 977b7
ld b, a
callba CheckPokeItem
ret
-; 977ca
-Script_giveitem: ; 977ca
+Script_giveitem:
; script command 0x1f
; parameters:
; item (ItemLabelByte)
@@ -2366,9 +2216,8 @@ Script_giveitem: ; 977ca
xor a
ld [ScriptVar], a
ret
-; 977f0
-Script_takeitem: ; 977f0
+Script_takeitem:
; script command 0x20
; parameters:
; item (ItemLabelByte)
@@ -2388,9 +2237,8 @@ Script_takeitem: ; 977f0
ld a, TRUE
ld [ScriptVar], a
ret
-; 97812
-Script_checkitem: ; 97812
+Script_checkitem:
; script command 0x21
; parameters:
; item (ItemLabelByte)
@@ -2405,9 +2253,8 @@ Script_checkitem: ; 97812
ld a, TRUE
ld [ScriptVar], a
ret
-; 97829
-Script_givemoney: ; 97829
+Script_givemoney:
; script command 0x22
; parameters:
; account (SingleByteParam)
@@ -2417,9 +2264,8 @@ Script_givemoney: ; 97829
call LoadMoneyAmountToMem
callba GiveMoney
ret
-; 97836
-Script_takemoney: ; 97836
+Script_takemoney:
; script command 0x23
; parameters:
; account (SingleByteParam)
@@ -2429,9 +2275,8 @@ Script_takemoney: ; 97836
call LoadMoneyAmountToMem
callba TakeMoney
ret
-; 97843
-Script_checkmoney: ; 97843
+Script_checkmoney:
; script command 0x24
; parameters:
; account (SingleByteParam)
@@ -2440,9 +2285,8 @@ Script_checkmoney: ; 97843
call GetMoneyAccount
call LoadMoneyAmountToMem
callba CompareMoney
-; 9784f
-CompareMoneyAction: ; 9784f
+CompareMoneyAction:
jr c, .two
jr z, .one
ld a, 0
@@ -2455,18 +2299,16 @@ CompareMoneyAction: ; 9784f
.done
ld [ScriptVar], a
ret
-; 97861
-GetMoneyAccount: ; 97861
+GetMoneyAccount:
call GetScriptByte
and a
ld de, Money
ret z
ld de, wMomsMoney
ret
-; 9786d
-LoadMoneyAmountToMem: ; 9786d
+LoadMoneyAmountToMem:
ld bc, hMoneyTemp
push bc
call GetScriptByte
@@ -2479,9 +2321,8 @@ LoadMoneyAmountToMem: ; 9786d
ld [bc], a
pop bc
ret
-; 97881
-Script_givecoins: ; 97881
+Script_givecoins:
; script command 0x25
; parameters:
; coins (CoinByteParam)
@@ -2489,9 +2330,8 @@ Script_givecoins: ; 97881
call LoadCoinAmountToMem
callba GiveCoins
ret
-; 9788b
-Script_takecoins: ; 9788b
+Script_takecoins:
; script command 0x26
; parameters:
; coins (CoinByteParam)
@@ -2499,9 +2339,8 @@ Script_takecoins: ; 9788b
call LoadCoinAmountToMem
callba TakeCoins
ret
-; 97895
-Script_checkcoins: ; 97895
+Script_checkcoins:
; script command 0x27
; parameters:
; coins (CoinByteParam)
@@ -2509,18 +2348,16 @@ Script_checkcoins: ; 97895
call LoadCoinAmountToMem
callba CheckCoins
jr CompareMoneyAction
-; 978a0
-LoadCoinAmountToMem: ; 978a0
+LoadCoinAmountToMem:
call GetScriptByte
ld [hMoneyTemp + 1], a
call GetScriptByte
ld [hMoneyTemp], a
ld bc, hMoneyTemp
ret
-; 978ae
-Script_checktime: ; 978ae
+Script_checktime:
; script command 0x2b
; parameters:
; time (SingleByteParam)
@@ -2534,9 +2371,8 @@ Script_checktime: ; 978ae
ld a, TRUE
ld [ScriptVar], a
ret
-; 978c3
-Script_checkpoke: ; 978c3
+Script_checkpoke:
; script command 0x2c
; parameters:
; pkmn (PokemonParam)
@@ -2551,9 +2387,8 @@ Script_checkpoke: ; 978c3
ld a, TRUE
ld [ScriptVar], a
ret
-; 978da
-Script_addcellnum: ; 978da
+Script_addcellnum:
; script command 0x28
; parameters:
; person (SingleByteParam)
@@ -2567,9 +2402,8 @@ Script_addcellnum: ; 978da
ld a, TRUE
ld [ScriptVar], a
ret
-; 978ef
-Script_delcellnum: ; 978ef
+Script_delcellnum:
; script command 0x29
; parameters:
; person (SingleByteParam)
@@ -2583,9 +2417,8 @@ Script_delcellnum: ; 978ef
ld a, TRUE
ld [ScriptVar], a
ret
-; 97904
-Script_checkcellnum: ; 97904
+Script_checkcellnum:
; script command 0x2a
; parameters:
; person (SingleByteParam)
@@ -2600,9 +2433,8 @@ Script_checkcellnum: ; 97904
ld a, TRUE
ld [ScriptVar], a
ret
-; 97919
-Script_specialphonecall: ; 97919
+Script_specialphonecall:
; script command 0x9c
; parameters:
; call_id (MultiByteParam)
@@ -2612,9 +2444,8 @@ Script_specialphonecall: ; 97919
call GetScriptByte
ld [wSpecialPhoneCallID + 1], a
ret
-; 97926
-Script_checkphonecall: ; 97926
+Script_checkphonecall:
; script command 0x9d
; returns false if no special phone call is stored
@@ -2625,9 +2456,8 @@ Script_checkphonecall: ; 97926
.ok
ld [ScriptVar], a
ret
-; 97932
-Script_givepoke: ; 97932
+Script_givepoke:
; script command 0x2d
; parameters:
; pokemon (PokemonParam)
@@ -2660,9 +2490,8 @@ Script_givepoke: ; 97932
ld a, b
ld [ScriptVar], a
ret
-; 97968
-Script_giveegg: ; 97968
+Script_giveegg:
; script command 0x2e
; parameters:
; pkmn (PokemonParam)
@@ -2681,9 +2510,8 @@ Script_giveegg: ; 97968
ld a, 2
ld [ScriptVar], a
ret
-; 97988
-Script_setevent: ; 97988
+Script_setevent:
; script command 0x33
; parameters:
; bit_number (MultiByteParam)
@@ -2695,9 +2523,8 @@ Script_setevent: ; 97988
ld b, SET_FLAG
call EventFlagAction
ret
-; 97996
-Script_clearevent: ; 97996
+Script_clearevent:
; script command 0x32
; parameters:
; bit_number (MultiByteParam)
@@ -2709,9 +2536,8 @@ Script_clearevent: ; 97996
ld b, RESET_FLAG
call EventFlagAction
ret
-; 979a4
-Script_checkevent: ; 979a4
+Script_checkevent:
; script command 0x31
; parameters:
; bit_number (MultiByteParam)
@@ -2729,9 +2555,8 @@ Script_checkevent: ; 979a4
.false
ld [ScriptVar], a
ret
-; 979bb
-Script_setflag: ; 979bb
+Script_setflag:
; script command 0x36
; parameters:
; bit_number (MultiByteParam)
@@ -2743,9 +2568,8 @@ Script_setflag: ; 979bb
ld b, SET_FLAG
call _EngineFlagAction
ret
-; 979c9
-Script_clearflag: ; 979c9
+Script_clearflag:
; script command 0x35
; parameters:
; bit_number (MultiByteParam)
@@ -2757,9 +2581,8 @@ Script_clearflag: ; 979c9
ld b, RESET_FLAG
call _EngineFlagAction
ret
-; 979d7
-Script_checkflag: ; 979d7
+Script_checkflag:
; script command 0x34
; parameters:
; bit_number (MultiByteParam)
@@ -2777,30 +2600,26 @@ Script_checkflag: ; 979d7
.false
ld [ScriptVar], a
ret
-; 979ee
-_EngineFlagAction: ; 979ee
+_EngineFlagAction:
callba EngineFlagAction
ret
-; 979f5
-Script_wildoff: ; 979f5
+Script_wildoff:
; script command 0x38
ld hl, StatusFlags
set 5, [hl]
ret
-; 979fb
-Script_wildon: ; 979fb
+Script_wildon:
; script command 0x37
ld hl, StatusFlags
res 5, [hl]
ret
-; 97a01
-Script_xycompare: ; 97a01
+Script_xycompare:
; script command 0x39
; parameters:
; pointer (MultiByteParam)
@@ -2810,9 +2629,8 @@ Script_xycompare: ; 97a01
call GetScriptByte
ld [wXYComparePointer + 1], a
ret
-; 97a0e
-Script_warpfacing: ; 97a0e
+Script_warpfacing:
; script command 0xa3
; parameters:
; facing (SingleByteParam)
@@ -2830,7 +2648,7 @@ Script_warpfacing: ; 97a0e
ld [wPlayerSpriteSetupFlags], a
; fall through
-Script_warp: ; 97a1d
+Script_warp:
; script command 0x3c
; parameters:
; map_group (MapGroupParam)
@@ -2870,9 +2688,8 @@ Script_warp: ; 97a1d
call LoadMapStatus
call StopScript
ret
-; 97a65
-Script_warpmod: ; 97a65
+Script_warpmod:
; script command 0x3a
; parameters:
; warp_id (SingleByteParam)
@@ -2886,9 +2703,8 @@ Script_warpmod: ; 97a65
call GetScriptByte
ld [BackupMapNumber], a
ret
-; 97a78
-Script_blackoutmod: ; 97a78
+Script_blackoutmod:
; script command 0x3b
; parameters:
; map_group (MapGroupParam)
@@ -2899,17 +2715,15 @@ Script_blackoutmod: ; 97a78
call GetScriptByte
ld [wLastSpawnMapNumber], a
ret
-; 97a85
-Script_dontrestartmapmusic: ; 97a85
+Script_dontrestartmapmusic:
; script command 0x83
ld a, 1
ld [wDontPlayMapMusicOnReload], a
ret
-; 97a8b
-Script_writecmdqueue: ; 97a8b
+Script_writecmdqueue:
; script command 0x7d
; parameters:
; queue_pointer (MultiByteParam)
@@ -2922,9 +2736,8 @@ Script_writecmdqueue: ; 97a8b
ld b, a
callba WriteCmdQueue ; no need to farcall
ret
-; 97a9e
-Script_delcmdqueue: ; 97a9e
+Script_delcmdqueue:
; script command 0x7e
; parameters:
; byte (SingleByteParam)
@@ -2938,9 +2751,8 @@ Script_delcmdqueue: ; 97a9e
ld a, 1
ld [ScriptVar], a
ret
-; 97ab3
-Script_changemap: ; 97ab3
+Script_changemap:
; script command 0x79
; parameters:
; map_data_pointer (MapDataPointerParam)
@@ -2954,9 +2766,8 @@ Script_changemap: ; 97ab3
call ChangeMap
call BufferScreen
ret
-; 97acc
-Script_changeblock: ; 97acc
+Script_changeblock:
; script command 0x7a
; parameters:
; x (SingleByteParam)
@@ -2974,9 +2785,8 @@ Script_changeblock: ; 97acc
ld [hl], a
call BufferScreen
ret
-; 97ae3
-Script_reloadmappart:: ; 97ae3
+Script_reloadmappart::
; script command 0x7c
xor a
@@ -2986,23 +2796,20 @@ Script_reloadmappart:: ; 97ae3
callba ReloadMapPart
call UpdateSprites
ret
-; 97af6
-Script_warpcheck: ; 97af6
+Script_warpcheck:
; script command 0x8e
call WarpCheck
ret nc
callba EnableEvents
ret
-; 97b01
Script_enableevents: ; unreferenced
callba EnableEvents
ret
-; 97b08
-Script_newloadmap: ; 97b08
+Script_newloadmap:
; script command 0x8a
; parameters:
; which_method (SingleByteParam)
@@ -3013,23 +2820,20 @@ Script_newloadmap: ; 97b08
call LoadMapStatus
call StopScript
ret
-; 97b16
-Script_reloadandreturn: ; 97b16
+Script_reloadandreturn:
; script command 0x92
call Script_newloadmap
jp Script_end
-; 97b1c
-Script_textbox: ; 97b1c
+Script_textbox:
; script command 0x47
call OpenText
ret
-; 97b20
-Script_refreshscreen: ; 97b20
+Script_refreshscreen:
; script command 0x48
; parameters:
; dummy (SingleByteParam)
@@ -3037,9 +2841,8 @@ Script_refreshscreen: ; 97b20
call RefreshScreen
call GetScriptByte
ret
-; 97b27
-Script_loadbytec2cf: ; 97b27
+Script_loadbytec2cf:
; script command 0x4a
; parameters:
; byte (SingleByteParam)
@@ -3047,20 +2850,18 @@ Script_loadbytec2cf: ; 97b27
call GetScriptByte
ld [wc2cf], a
ret
-; 97b2e
ld c, c ; XXX
-Script_closetext: ; 97b2f
+Script_closetext:
; script command 0x49
- call Function2e20
+ call _OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
call CloseText
ret
-; 97b36
-Script_passtoengine: ; 97b36
+Script_passtoengine:
; script command 0x89
; parameters:
; data_pointer (PointerLabelBeforeBank)
@@ -3074,9 +2875,8 @@ Script_passtoengine: ; 97b36
pop af
call StartAutoInput
ret
-; 97b47
-Script_pause: ; 97b47
+Script_pause:
; script command 0x8b
; parameters:
; length (DecimalParam)
@@ -3092,9 +2892,8 @@ Script_pause: ; 97b47
dec [hl]
jr nz, .loop
ret
-; 97b5c
-Script_deactivatefacing: ; 97b5c
+Script_deactivatefacing:
; script command 0x8c
; parameters:
; time (SingleByteParam)
@@ -3108,18 +2907,16 @@ Script_deactivatefacing: ; 97b5c
ld [ScriptMode], a
call StopScript
ret
-; 97b6e
-Script_ptpriorityjump: ; 97b6e
+Script_ptpriorityjump:
; script command 0x8f
; parameters:
; pointer (ScriptPointerLabelParam)
call StopScript
jp Script_jump
-; 97b74
-Script_end: ; 97b74
+Script_end:
; script command 0x91
call ExitScriptSubroutine
@@ -3135,9 +2932,8 @@ Script_end: ; 97b74
res 0, [hl]
call StopScript
ret
-; 97b8c
-Script_return: ; 97b8c
+Script_return:
; script command 0x90
call ExitScriptSubroutine
@@ -3147,9 +2943,8 @@ Script_return: ; 97b8c
res 0, [hl]
call StopScript
ret
-; 97b9a
-ExitScriptSubroutine: ; 97b9a
+ExitScriptSubroutine:
; Return carry if there's no parent to return to.
ld hl, wScriptStackSize
@@ -3160,9 +2955,9 @@ ExitScriptSubroutine: ; 97b9a
ld e, [hl]
ld d, $0
ld hl, wScriptStack
-rept 3
add hl,de
-endr
+ add hl,de
+ add hl,de
ld a, [hli]
ld b, a
and " "
@@ -3178,9 +2973,8 @@ endr
.done
scf
ret
-; 97bc0
-Script_end_all: ; 97bc0
+Script_end_all:
; script command 0x93
xor a
@@ -3192,22 +2986,20 @@ Script_end_all: ; 97bc0
res 0, [hl]
call StopScript
ret
-; 97bd5
-Script_halloffame: ; 97bd5
+Script_halloffame:
; script command 0xa1
ld hl, GameTimerPause
res 0, [hl]
- callba Mobile_HallOfFame
- callba Mobile_HallOfFame2
+ callba TrainerRankings_HallOfFame
+ callba TrainerRankings_HallOfFame2
callba HallOfFame
ld hl, GameTimerPause
set 0, [hl]
jr ReturnFromCredits
-; 97bf3
-Script_credits: ; 97bf3
+Script_credits:
; script command 0xa2
callba RedCredits
@@ -3217,9 +3009,8 @@ ReturnFromCredits:
call LoadMapStatus
call StopScript
ret
-; 97c051
-Script_wait: ; 97c05
+Script_wait:
; script command 0xa8
; parameters:
; unknown (SingleByteParam)
@@ -3235,23 +3026,20 @@ Script_wait: ; 97c05
jr nz, .loop
pop bc
ret
-; 97c15
-Script_check_save: ; 97c15
+Script_check_save:
; script command 0xa9
callba CheckSave
ld a, c
ld [ScriptVar], a
ret
-; 97c20
-; 97c20 unreferenced
+; unreferenced
ld a, [.byte]
ld [ScriptVar], a
ret
.byte
db 0
-; 97c28
diff --git a/engine/search.asm b/engine/search.asm
index 662623296..9543ecfbb 100755
--- a/engine/search.asm
+++ b/engine/search.asm
@@ -117,9 +117,9 @@ CheckOwnMonAnywhere: ; 0x4a721
; Load the box.
ld hl, BoxAddressTable1
ld b, 0
-rept 3
add hl, bc
-endr
+ add hl, bc
+ add hl, bc
ld a, [hli]
call GetSRAMBank
ld a, [hli]
diff --git a/engine/search2.asm b/engine/search2.asm
new file mode 100755
index 000000000..9ef5491f0
--- /dev/null
+++ b/engine/search2.asm
@@ -0,0 +1,134 @@
+_FindGreaterThanThatLevel: ; 4dbd2
+ ld hl, PartyMon1Level
+ call FindGreaterThanThatLevel
+ ret
+
+_FindAtLeastThatHappy: ; 4dbd9
+ ld hl, PartyMon1Happiness
+ call FindAtLeastThatHappy
+ ret
+
+_FindThatSpecies: ; 4dbe0
+ ld hl, PartyMon1Species
+ jp FindThatSpecies
+
+_FindThatSpeciesYourTrainerID: ; 4dbe6
+ ld hl, PartyMon1Species
+ call FindThatSpecies
+ ret z
+ ld a, c
+ ld hl, PartyMon1ID
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ ld a, [PlayerID]
+ cp [hl]
+ jr nz, .nope
+ inc hl
+ ld a, [PlayerID + 1]
+ cp [hl]
+ jr nz, .nope
+ ld a, $1
+ and a
+ ret
+
+.nope
+ xor a
+ ret
+
+FindAtLeastThatHappy: ; 4dc0a
+; Sets the bits for the Pokemon that have a happiness greater than or equal to b.
+; The lowest bits are used. Sets z if no Pokemon in your party is at least that happy.
+ ld c, $0
+ ld a, [PartyCount]
+ ld d, a
+.loop
+ ld a, d
+ dec a
+ push hl
+ push bc
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ pop bc
+ ld a, b
+ cp [hl]
+ pop hl
+ jr z, .greater_equal
+ jr nc, .lower
+
+.greater_equal
+ ld a, c
+ or $1
+ ld c, a
+
+.lower
+ sla c
+ dec d
+ jr nz, .loop
+ call RetroactivelyIgnoreEggs
+ ld a, c
+ and a
+ ret
+
+FindGreaterThanThatLevel: ; 4dc31
+ ld c, $0
+ ld a, [PartyCount]
+ ld d, a
+.loop
+ ld a, d
+ dec a
+ push hl
+ push bc
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ pop bc
+ ld a, b
+ cp [hl]
+ pop hl
+ jr c, .greater
+ ld a, c
+ or $1
+ ld c, a
+
+.greater
+ sla c
+ dec d
+ jr nz, .loop
+ call RetroactivelyIgnoreEggs
+ ld a, c
+ and a
+ ret
+
+FindThatSpecies: ; 4dc56
+; Find species b in your party.
+; If you have no Pokemon, returns c = -1 and z.
+; If that species is in your party, returns its location in c, and nz.
+; Otherwise, returns z.
+ ld c, -1
+ ld hl, PartySpecies
+.loop
+ ld a, [hli]
+ cp -1
+ ret z
+ inc c
+ cp b
+ jr nz, .loop
+ ld a, $1
+ and a
+ ret
+
+RetroactivelyIgnoreEggs: ; 4dc67
+ ld e, -2
+ ld hl, PartySpecies
+.loop
+ ld a, [hli]
+ cp -1
+ ret z
+ cp EGG
+ jr nz, .skip_notegg
+ ld a, c
+ and e
+ ld c, a
+
+.skip_notegg
+ rlc e
+ jr .loop
diff --git a/engine/selectmenu.asm b/engine/selectmenu.asm
index 4e461a68e..838438a4c 100755
--- a/engine/selectmenu.asm
+++ b/engine/selectmenu.asm
@@ -45,9 +45,8 @@ CheckRegisteredItem: ; 13345
inc hl
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
call .IsSameItem
jr c, .NoRegisteredItem
and a
@@ -71,9 +70,8 @@ endr
inc hl
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
call .IsSameItem
jr c, .NoRegisteredItem
ret
diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm
index c31dbd2b3..ea842ea9c 100755
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -20,7 +20,7 @@ _SlotMachine:
call PlaySFX
call WaitSFX
call ClearBGPalettes
- callba MobileFn_105fd0
+ callba TrainerRankings_EndSlotsWinStreak
ld hl, Options
res NO_TEXT_SCROLL, [hl]
ld hl, rLCDC ; $ff40
@@ -201,9 +201,9 @@ Function9282c: ; 9282c
ld a, [hl]
xor $20
ld [hli], a
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
dec c
jr nz, .loop
ret
@@ -686,9 +686,9 @@ Slots_SpinReels: ; 92b0f (24:6b0f)
ld a, [hl]
add d
ld [hli], a
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
dec e
jr nz, .loop
ret
@@ -1812,7 +1812,7 @@ SlotGetPayout: ; 93124 (24:7124)
ld a, [hl]
ld [wPayout], a
ld d, a
- callba MobileFn_105fe3
+ callba TrainerRankings_AddToSlotsPayouts
ret
.PayoutTable:
@@ -1836,7 +1836,7 @@ SlotPayoutText: ; 93158 (24:7158)
jr nz, .MatchedSomething
ld hl, .Text_Darn
call PrintText
- callba MobileFn_105fd0
+ callba TrainerRankings_EndSlotsWinStreak
ret
.MatchedSomething:
@@ -1844,9 +1844,9 @@ SlotPayoutText: ; 93158 (24:7158)
ld e, a
ld d, 0
ld hl, .PayoutStrings
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ld de, StringBuffer2
ld bc, 4
call CopyBytes
@@ -1860,7 +1860,7 @@ endr
.return
ld hl, .Text_PrintPayout
call PrintText
- callba MobileFn_105f9f
+ callba TrainerRankings_AddToSlotsWinStreak
ret
; 93195 (24:7195)
@@ -1948,7 +1948,7 @@ endr
; 9321d
SlotMachine_AnimateGolem: ; 9321d (24:721d)
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld e, [hl]
ld d, 0
@@ -1982,7 +1982,7 @@ SlotMachine_AnimateGolem: ; 9321d (24:721d)
.retain
dec [hl]
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0C
@@ -2009,7 +2009,7 @@ SlotMachine_AnimateGolem: ; 9321d (24:721d)
ret
.play_sound
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0D
@@ -2041,7 +2041,7 @@ SlotMachine_AnimateGolem: ; 9321d (24:721d)
ret
.restart
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
xor a
ld [hl], a
@@ -2049,7 +2049,7 @@ SlotMachine_AnimateGolem: ; 9321d (24:721d)
ret
Slots_AnimateChansey: ; 932ac (24:72ac)
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld e, [hl]
ld d, 0
@@ -2082,7 +2082,7 @@ Slots_AnimateChansey: ; 932ac (24:72ac)
ret
.limit
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld a, $1
@@ -2100,7 +2100,7 @@ Slots_AnimateChansey: ; 932ac (24:72ac)
ret
.retain
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0C
@@ -2116,7 +2116,7 @@ Slots_AnimateChansey: ; 932ac (24:72ac)
ret
.spawn_egg
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
dec [hl]
push bc
diff --git a/engine/specials.asm b/engine/specials.asm
index c15422750..2d9b6f998 100644
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -2,9 +2,9 @@
Special:: ; c01b
; Run script special de.
ld hl, SpecialsPointers
-rept 3
add hl,de
-endr
+ add hl,de
+ add hl,de
ld b, [hl]
inc hl
ld a, [hli]
@@ -114,7 +114,7 @@ SpecialsPointers:: ; c029
add_special RandomPhoneRareWildMon
add_special RandomPhoneWildMon
add_special RandomPhoneMon
- add_special RunCallback_04
+ add_special MapCallbackSprites_LoadUsedSpritesGFX
add_special PlaySlowCry
add_special SpecialSnorlaxAwake
add_special Special_YoungerHaircutBrother
@@ -179,7 +179,7 @@ SpecialsPointers:: ; c029
add_special Mobile_SelectThreeMons
add_special Function1037eb
add_special Function10383c
- add_special Mobile_HealParty
+ add_special TrainerRankings_Healings
add_special RefreshSprites
add_special Function1037c2
add_special Mobile_DummyReturnFalse
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
index 5addaad5d..0e25cafdf 100755
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -133,17 +133,17 @@ DoAnimFrame: ; 8d24b
ret
.four ; 8d302 (23:5302)
- call .anonymous_dw
+ call .AnonymousJumptable
jp [hl]
; 8d306 (23:5306)
-; Anonymous dw (see .anonymous_dw)
+; Anonymous dw (see .AnonymousJumptable)
dw .four_zero
dw .four_one
; 8d30a
.four_zero ; 8d30a
- call .IncrementSpriteAnimStruct0B
+ call .IncrementJumptableIndex
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
@@ -245,7 +245,7 @@ DoAnimFrame: ; 8d24b
add hl, bc
dec [hl]
.asm_8d395
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld a, [hl]
push af
@@ -267,7 +267,7 @@ DoAnimFrame: ; 8d24b
add hl, bc
ld a, [hl]
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
add [hl]
ld [hl], a
@@ -290,7 +290,7 @@ DoAnimFrame: ; 8d24b
add hl, bc
ld d, [hl]
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld a, [hl]
push af
@@ -345,7 +345,7 @@ DoAnimFrame: ; 8d24b
inc hl
ld [hl], d
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld a, [hl]
xor $20
@@ -372,7 +372,7 @@ DoAnimFrame: ; 8d24b
ret
.SlotsChanseyEgg: ; 8d43e (23:543e)
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld a, [hl]
dec [hl]
@@ -417,11 +417,11 @@ DoAnimFrame: ; 8d24b
ret
.sixteen ; 8d483 (23:5483)
- call .anonymous_dw
+ call .AnonymousJumptable
jp [hl]
; 8d487 (23:5487)
-; Anonymous dw (see .anonymous_dw)
+; Anonymous dw (see .AnonymousJumptable)
dw .sixteen_zero
dw .sixteen_one
dw .sixteen_two
@@ -434,7 +434,7 @@ DoAnimFrame: ; 8d24b
ld a, $14
call _ReinitSpriteAnimFrame
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld [hl], $2
@@ -454,7 +454,7 @@ DoAnimFrame: ; 8d24b
ret
.asm_8d4af
- call .IncrementSpriteAnimStruct0B
+ call .IncrementJumptableIndex
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
@@ -482,7 +482,7 @@ DoAnimFrame: ; 8d24b
; 8d4d5
.sixteen_one ; 8d4d5
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld [hl], $4
@@ -539,7 +539,7 @@ DoAnimFrame: ; 8d24b
ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
- call .IncrementSpriteAnimStruct0B
+ call .IncrementJumptableIndex
ret
.sixteen_five ; 8d526
@@ -554,19 +554,19 @@ DoAnimFrame: ; 8d24b
inc [hl]
inc [hl]
cp $b0
- jr nc, .asm_8d53f
+ jr nc, .delete
and $3
ret nz
ld de, SFX_POKEBALLS_PLACED_ON_TABLE
call PlaySFX
ret
-.asm_8d53f
+.delete
call DeinitializeSprite
ret
.eighteen ; 8d543 (23:5543)
- callab Function29676
+ callab TradeAnim_AnimateTrademonInTube
ret
.EggShell: ; 8d54a (23:554a)
@@ -579,7 +579,7 @@ DoAnimFrame: ; 8d24b
add $8
ld [hl], a
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld a, [hl]
xor $20
@@ -630,9 +630,9 @@ DoAnimFrame: ; 8d24b
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
-rept 3
inc [hl]
-endr
+ inc [hl]
+ inc [hl]
push af
push de
call .Sprites_Sine
@@ -804,12 +804,12 @@ endr
ret
.thirtytwo ; 8d680 (23:5680)
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld d, [hl]
-rept 3
inc [hl]
-endr
+ inc [hl]
+ inc [hl]
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
@@ -847,21 +847,21 @@ endr
ret
.twentysix ; 8d6b7 (23:56b7)
- callba Function11d0b6
+ callba AnimateEZChatCursor
ret
.thirtyone ; 8d6be (23:56be)
callba UpdateCelebiPosition
ret
-.anonymous_dw ; 8d6c5 (23:56c5)
+.AnonymousJumptable: ; 8d6c5 (23:56c5)
ld hl, [sp+$0]
ld e, [hl]
inc hl
ld d, [hl]
inc de
- ld hl, SPRITEANIMSTRUCT_0B
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld l, [hl]
ld h, $0
@@ -873,8 +873,8 @@ endr
ret
; 8d6d8 (23:56d8)
-.IncrementSpriteAnimStruct0B: ; 8d6d8
- ld hl, SPRITEANIMSTRUCT_0B
+.IncrementJumptableIndex: ; 8d6d8
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ret
diff --git a/engine/sprites.asm b/engine/sprites.asm
index 5755c6d8f..70240e0e0 100755
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -154,9 +154,9 @@ InitSpriteAnimStruct:: ; 8cfd6
ld e, a
ld d, 0
ld hl, SpriteAnimSeqData
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ld e, l
ld d, h
; Set hl to the first field (field 0) in the current structure.
@@ -341,7 +341,7 @@ AddOrSubtractX: ; 8d0ce
push hl
ld a, [hl]
ld hl, wCurrSpriteAddSubFlags
- bit 5, [hl]
+ bit 5, [hl] ; x flip
jr z, .ok
; 8 - a
add $8
@@ -521,9 +521,9 @@ GetFrameOAMPointer: ; 8d1a2
ld e, a
ld d, 0
ld hl, SpriteAnimOAMData
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ret
; 8d1ac
@@ -556,8 +556,8 @@ SpriteAnimSeqData: ; 8d1c4
db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00 ; 01
db SPRITE_ANIM_FRAMESET_08, SPRITE_ANIM_SEQ_05, $05 ; 02
db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00 ; 03
- db SPRITE_ANIM_FRAMESET_0B, SPRITE_ANIM_SEQ_07, $06 ; 04
- db SPRITE_ANIM_FRAMESET_0C, SPRITE_ANIM_SEQ_08, $06 ; 05
+ db SPRITE_ANIM_FRAMESET_0B, SPRITE_ANIM_SEQ_07, $06 ; 04 gs intro star
+ db SPRITE_ANIM_FRAMESET_0C, SPRITE_ANIM_SEQ_08, $06 ; 05 gs intro sparkle
db SPRITE_ANIM_FRAMESET_SLOT_GOLEM, SPRITE_ANIM_SEQ_SLOT_GOLEM, $07 ; 06 slots golem
db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07 ; 07 slots chansey
db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07 ; 08 slots egg
@@ -569,11 +569,11 @@ SpriteAnimSeqData: ; 8d1c4
db SPRITE_ANIM_FRAMESET_13, SPRITE_ANIM_SEQ_10, $00 ; 0e
db SPRITE_ANIM_FRAMESET_15, SPRITE_ANIM_SEQ_NULL, $00 ; 0f
db SPRITE_ANIM_FRAMESET_16, SPRITE_ANIM_SEQ_11, $00 ; 10
- db SPRITE_ANIM_FRAMESET_17, SPRITE_ANIM_SEQ_12, $00 ; 11
- db SPRITE_ANIM_FRAMESET_18, SPRITE_ANIM_SEQ_12, $00 ; 12
+ db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00 ; 11
+ db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_SEQ_TRADEMON_IN_TUBE, $00 ; 12
db SPRITE_ANIM_FRAMESET_19, SPRITE_ANIM_SEQ_13, $00 ; 13
db SPRITE_ANIM_FRAMESET_1A, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob
- db SPRITE_ANIM_FRAMESET_1B, SPRITE_ANIM_SEQ_NULL, $00 ; 15
+ db SPRITE_ANIM_FRAMESET_1B, SPRITE_ANIM_SEQ_NULL, $00 ; 15 chris on magnet train
db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree
db SPRITE_ANIM_FRAMESET_1E, SPRITE_ANIM_SEQ_NULL, $00 ; 17
db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00 ; 18 flying leaves
@@ -582,8 +582,8 @@ SpriteAnimSeqData: ; 8d1c4
db SPRITE_ANIM_FRAMESET_25, SPRITE_ANIM_SEQ_NULL, $00 ; 1b headbutt
db SPRITE_ANIM_FRAMESET_20, SPRITE_ANIM_SEQ_13, $00 ; 1c
db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00 ; 1d
- db SPRITE_ANIM_FRAMESET_2D, SPRITE_ANIM_SEQ_NULL, $00 ; 1e
- db SPRITE_ANIM_FRAMESET_2E, SPRITE_ANIM_SEQ_NULL, $00 ; 1f
+ db SPRITE_ANIM_FRAMESET_2D, SPRITE_ANIM_SEQ_NULL, $00 ; 1e kris on map
+ db SPRITE_ANIM_FRAMESET_2E, SPRITE_ANIM_SEQ_NULL, $00 ; 1f kris on magnet train
db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00 ; 20
db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00 ; 21
db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00 ; 22
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index b2b82bd6a..fa61d99cb 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -5,7 +5,7 @@ StartMenu:: ; 125cd
ld de, SFX_MENU
call PlaySFX
- callba Function6454
+ callba ReanchorBGMap_NoOAMUpdate
ld hl, StatusFlags2
bit 2, [hl] ; bug catching contest
@@ -19,11 +19,11 @@ StartMenu:: ; 125cd
ld a, [wd0d2]
ld [wMenuCursorBuffer], a
call .DrawMenuAccount_
- call MenuFunc_1e7f
+ call DrawVariableLengthMenuBox
call .DrawBugContestStatusBox
- call Function2e31
- call Function2e20
- callba Function64bf
+ call SafeUpdateSprites
+ call _OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ callba LoadFonts_NoOAMUpdate
call .DrawBugContestStatus
call UpdateTimePals
jr .Select
@@ -142,7 +142,7 @@ StartMenu:: ; 125cd
call Call_ExitMenu
call ReloadTilesetAndPalettes
call .DrawMenuAccount_
- call MenuFunc_1e7f
+ call DrawVariableLengthMenuBox
call .DrawBugContestStatus
call UpdateSprites
call ret_d90
@@ -194,31 +194,31 @@ StartMenu:: ; 125cd
.QuitString: db "QUIT@"
.PokedexDesc: db "#MON"
- next "database@"
+ next "database@"
.PartyDesc: db "Party ", $4a
- next "status@"
+ next "status@"
.PackDesc: db "Contains"
- next "items@"
+ next "items@"
.PokegearDesc: db "Trainer's"
- next "key device@"
+ next "key device@"
.StatusDesc: db "Your own"
- next "status@"
+ next "status@"
.SaveDesc: db "Save your"
- next "progress@"
+ next "progress@"
.OptionDesc: db "Change"
- next "settings@"
+ next "settings@"
.ExitDesc: db "Close this"
- next "menu@"
+ next "menu@"
.QuitDesc: db "Quit and"
- next "be judged.@"
+ next "be judged.@"
.OpenMenu: ; 127e5
@@ -1255,7 +1255,7 @@ MonMenu_Fly: ; 12e30
jr z, .Fail
cp $0
jr z, .Error
- callba MobileFn_1060b5
+ callba TrainerRankings_Fly
ld b, $4
ld a, $2
ret
@@ -1457,7 +1457,7 @@ ChooseMoveToDelete: ; 12f5b
push af
set NO_TEXT_SCROLL, [hl]
call LoadFontsBattleExtra
- call .asm_12f73
+ call .ChooseMoveToDelete
pop bc
ld a, b
ld [Options], a
@@ -1467,36 +1467,36 @@ ChooseMoveToDelete: ; 12f5b
ret
; 12f73
-.asm_12f73
+.ChooseMoveToDelete
call SetUpMoveScreenBG
ld de, DeleteMoveScreenAttrs
call SetMenuAttributes
call SetUpMoveList
ld hl, w2DMenuFlags1
set 6, [hl]
- jr .asm_12f93
+ jr .enter_loop
-.asm_12f86
+.loop
call ScrollingMenuJoypad
- bit 1, a
- jp nz, .asm_12f9f
- bit 0, a
- jp nz, .asm_12f9c
+ bit B_BUTTON_F, a
+ jp nz, .b_button
+ bit A_BUTTON_F, a
+ jp nz, .a_button
-.asm_12f93
+.enter_loop
call PrepareToPlaceMoveData
call PlaceMoveData
- jp .asm_12f86
+ jp .loop
; 12f9c
-.asm_12f9c
+.a_button
and a
- jr .asm_12fa0
+ jr .finish
-.asm_12f9f
+.b_button
scf
-.asm_12fa0
+.finish
push af
xor a
ld [wSwitchMon], a
@@ -1762,7 +1762,7 @@ SetUpMoveScreenBG: ; 13172
call ClearSprites
xor a
ld [hBGMapMode], a
- callba Functionfb571
+ callba LoadStatsScreenPageTilesGFX
callba ClearSpriteAnims2
ld a, [CurPartyMon]
ld e, a
@@ -1797,7 +1797,7 @@ SetUpMoveScreenBG: ; 13172
call PrintLevel
ld hl, PlayerHPPal
call SetHPPal
- ld b, SCGB_0E
+ ld b, SCGB_MOVE_LIST
call GetSGBLayout
hlcoord 16, 0
lb bc, 1, 3
diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm
index e3bc6069c..2412c0e13 100755
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -6,14 +6,14 @@ BattleStatsScreenInit: ; 4dc7b (13:5c7b)
ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd)
and a
jr z, StatsScreenInit
- jr _BattleStatsScreenInit
+ jr _MobileStatsScreenInit
StatsScreenInit: ; 4dc8a
ld hl, StatsScreenMain
jr StatsScreenInit_gotaddress
-_BattleStatsScreenInit: ; 4dc8f
- ld hl, StatsScreenBattle
+_MobileStatsScreenInit: ; 4dc8f
+ ld hl, StatsScreenMobile
jr StatsScreenInit_gotaddress
StatsScreenInit_gotaddress: ; 4dc94
@@ -33,7 +33,7 @@ StatsScreenInit_gotaddress: ; 4dc94
call ClearBGPalettes
call ClearTileMap
call UpdateSprites
- callba Functionfb53e
+ callba StatsScreen_LoadFont
pop hl
call _hl_
call ClearBGPalettes
@@ -73,7 +73,7 @@ StatsScreenMain: ; 0x4dcd2
ret
; 0x4dcf7
-StatsScreenBattle: ; 4dcf7
+StatsScreenMobile: ; 4dcf7
xor a
ld [wJumptableIndex], a
; stupid interns
@@ -89,7 +89,7 @@ StatsScreenBattle: ; 4dcf7
ld hl, StatsScreenPointerTable
rst JumpTable
call StatsScreen_WaitAnim
- callba Function100dfd
+ callba MobileComms_CheckInactivityTimer
jr c, .exit
ld a, [wJumptableIndex]
bit 7, a
@@ -100,7 +100,6 @@ StatsScreenBattle: ; 4dcf7
; 4dd2a
StatsScreenPointerTable: ; 4dd2a
-
dw MonStatsInit ; regular pokémon
dw EggStatsInit ; egg
dw StatsScreenWaitCry
@@ -129,7 +128,7 @@ StatsScreen_WaitAnim: ; 4dd3a (13:5d3a)
.finish
ld hl, wcf64
res 5, [hl]
- callba Function10402d
+ callba HDMATransferTileMapToWRAMBank3
ret
StatsScreen_SetJumptableIndex: ; 4dd62 (13:5d62)
@@ -149,7 +148,7 @@ MonStatsInit: ; 4dd72 (13:5d72)
res 6, [hl]
call ClearBGPalettes
call ClearTileMap
- callba Function10402d
+ callba HDMATransferTileMapToWRAMBank3
call StatsScreen_CopyToTempMon
ld a, [CurPartySpecies]
cp EGG
@@ -223,7 +222,7 @@ StatsScreenWaitCry: ; 4dde6 (13:5de6)
StatsScreen_CopyToTempMon: ; 4ddf2 (13:5df2)
ld a, [MonType]
- cp BREEDMON
+ cp TEMPMON
jr nz, .breedmon
ld a, [wBufferMon]
ld [CurSpecies], a
@@ -250,7 +249,7 @@ StatsScreen_CopyToTempMon: ; 4ddf2 (13:5df2)
StatsScreen_GetJoypad: ; 4de2c (13:5e2c)
call GetJoypad
ld a, [MonType]
- cp BREEDMON
+ cp TEMPMON
jr nz, .notbreedmon
push hl
push de
@@ -641,9 +640,8 @@ StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
inc a
ld d, a
callba CalcExpAtLevel
-rept 2
ld hl, TempMonExp + 2
-endr
+ ld hl, TempMonExp + 2
ld a, [hQuotient + 2]
sub [hl]
dec hl
@@ -660,9 +658,8 @@ endr
.AlreadyAtMaxLevel:
ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
xor a
-rept 2
ld [hli], a
-endr
+ ld [hli], a
ld [hl], a
ret
; 4e119 (13:6119)
@@ -1016,7 +1013,7 @@ EggStatsScreen: ; 4e33a
call DelayFrame
hlcoord 0, 0
call PrepMonFrontpic
- callba Function10402d
+ callba HDMATransferTileMapToWRAMBank3
call StatsScreen_AnimateEgg
ld a, [TempMonHappiness]
@@ -1147,7 +1144,7 @@ GetNicknamePointer: ; 4e528 (13:6528)
ld h, [hl]
ld l, a
ld a, [MonType]
- cp BREEDMON
+ cp TEMPMON
ret z
ld a, [CurPartyMon]
jp SkipNames
diff --git a/engine/std_scripts.asm b/engine/std_scripts.asm
index 9c9542cf4..4b69a4de1 100644
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -107,7 +107,7 @@ PokeCenterNurseScript:
farwritetext NurseTakePokemonText
pause 20
- special Mobile_HealParty
+ special TrainerRankings_Healings
spriteface LAST_TALKED, LEFT
pause 10
special HealParty
@@ -1907,8 +1907,8 @@ HappinessCheckScript:
end
Movement_ContestResults_WalkAfterWarp: ; bcea1
- step_right
- step_down
- turn_head_up
+ step RIGHT
+ step DOWN
+ turn_head UP
step_end
; bcea5
diff --git a/engine/switch_items.asm b/engine/switch_items.asm
index 0d4512876..b699d4719 100755
--- a/engine/switch_items.asm
+++ b/engine/switch_items.asm
@@ -231,9 +231,8 @@ ItemSwitch_ConvertSpacingToDW: ; 24a80 (9:4a80)
ld c, a
ld b, 0
ld hl, .spacing_dws
-rept 2
add hl, bc
-endr
+ add hl, bc
ld c, [hl]
inc hl
ld b, [hl]
diff --git a/engine/time.asm b/engine/time.asm
index 255346c0a..2112ec35c 100755
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -102,9 +102,9 @@ CheckDailyResetTimer:: ; 11452
ret nc
xor a
ld hl, DailyFlags
-rept 3
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
ld [hl], a
ld hl, wDailyRematchFlags
rept 4
@@ -374,17 +374,16 @@ CalcHoursDaysSince: ; 115d2
; 115d6
CalcMinsHoursDaysSince: ; 115d6
-rept 2
inc hl
-endr
+ inc hl
xor a
jr _CalcMinsHoursDaysSince
; 115db
CalcSecsMinsHoursDaysSince: ; 115db
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
ld a, [hSeconds]
ld c, a
sub [hl]
diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm
index 5d093d515..561721074 100755
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -46,9 +46,8 @@ ValidateOTTrademon: ; fb57e
ld [CurSpecies], a
call GetBaseData
ld hl, wLinkOTPartyMonTypes
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [BaseType1]
cp [hl]
jr nz, .abnormal
@@ -384,7 +383,7 @@ NewPokedexEntry: ; fb877
ld [TempMonDVs], a
ld a, [hl]
ld [TempMonDVs + 1], a
- ld b, SCGB_FRONTPICPALS
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
call SetPalettes
ret
diff --git a/engine/timeofdaypals.asm b/engine/timeofdaypals.asm
index 1bfc2457b..e9b19c6f7 100644
--- a/engine/timeofdaypals.asm
+++ b/engine/timeofdaypals.asm
@@ -140,9 +140,9 @@ Special_BattleTowerFade: ; 8c092
ld b, $4
.asm_8c09c
call DmgToCgbTimePals
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
ld c, $7
call DelayFrames
dec b
@@ -245,9 +245,8 @@ GetTimePalette: ; 8c117
ld e, a
ld d, 0
ld hl, .TimePalettes
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -305,9 +304,9 @@ DmgToCgbTimePals: ; 8c14e
ConvertTimePalsIncHL: ; 8c15e
.loop
call DmgToCgbTimePals
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
ld c, 2
call DelayFrames
dec b
@@ -318,9 +317,9 @@ endr
ConvertTimePalsDecHL: ; 8c16d
.loop
call DmgToCgbTimePals
-rept 3
dec hl
-endr
+ dec hl
+ dec hl
ld c, 2
call DelayFrames
dec b
@@ -346,9 +345,8 @@ GetTimePalFade: ; 8c17c
ld c, a
ld b, $0
ld hl, .dmgfades
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/timeset.asm b/engine/timeset.asm
index fd6b2de94..f828b0ff8 100755
--- a/engine/timeset.asm
+++ b/engine/timeset.asm
@@ -18,7 +18,7 @@ InitClock: ; 90672 (24:4672)
call RotateFourPalettesLeft
call ClearTileMap
call ClearSprites
- ld b, SCGB_08
+ ld b, SCGB_DIPLOMA
call GetSGBLayout
xor a
ld [hBGMapMode], a
@@ -200,9 +200,8 @@ UnreferencedFunction907f1: ; 907f1
push hl
call DisplayHourOClock
pop de
-rept 2
inc de
-endr
+ inc de
ld a, ":"
ld [de], a
inc de
@@ -216,9 +215,9 @@ endr
ld [hl], a
pop hl
call DisplayMinutesWithMinString
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
ret
; 90810
@@ -521,9 +520,8 @@ Special_SetDayOfWeek: ; 90913
ld e, a
ld d, 0
ld hl, .WeekdayStrings
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld d, [hl]
ld e, a
@@ -579,7 +577,7 @@ Special_InitialSetDSTFlag: ; 90a54
lb bc, 3, 18
call ClearBox
ld hl, .Text
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
ret
; 90a6c
@@ -610,7 +608,7 @@ Special_InitialClearDSTFlag: ; 90a88
lb bc, 3, 18
call ClearBox
ld hl, .Text
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
ret
; 90aa0
@@ -638,7 +636,7 @@ DebugDisplayTime: ; 90abc
lb bc, 3, SCREEN_WIDTH - 2
call ClearBox
ld hl, .Text
- call PlaceWholeStringInBoxAtOnce
+ call PlaceHLTextAtBC
ret
; 90acc
diff --git a/engine/title.asm b/engine/title.asm
index 30804fbe8..787872939 100644
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -188,8 +188,8 @@ _TitleScreen: ; 10ed67
call ByteFill
; Let LCD Stat know we're messing around with SCX
- ld a, rSCX - rJOYP
- ld [hFFC6], a
+ ld a, rSCX - $ff00
+ ld [hLCDCPointer], a
pop af
ld [rSVBK], a
@@ -351,9 +351,8 @@ InitializeBackground: ; 10ef06
ld b, a
ld a, e
ld [hli], a
-rept 2
inc e
-endr
+ inc e
ld a, $80
ld [hli], a
dec c
@@ -378,9 +377,9 @@ AnimateTitleCrystal: ; 10ef32
ld a, [hl]
add 2
ld [hli], a
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
dec c
jr nz, .loop
diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm
index 289857623..6e32fdae8 100755
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -146,7 +146,7 @@ TeachTMHM: ; 2c867
and a
jr z, .nope
- callba MobileFn_106049
+ callba TrainerRankings_TMsHMsTaught
ld a, [CurItem]
call IsHM
ret c
@@ -423,9 +423,9 @@ TMHM_DisplayPocketItems: ; 2c9e2 (b:49e2)
.NotTMHM:
call TMHMPocket_GetCurrentLineCoord
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
push de
ld de, TMHM_String_Cancel
call PlaceString
@@ -581,9 +581,8 @@ PrintMoveDesc: ; 2cb3e
dec a
ld c, a
ld b, 0
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld e, a
ld d, [hl]
diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm
index 91e190075..d90f45a82 100755
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -7,10 +7,10 @@ TradeAnimation: ; 28f24
ld hl, wPlayerTrademonSpecies
ld de, wOTTrademonSpecies
call LinkTradeAnim_LoadTradeMonSpecies
- ld de, .data_28f3f
- jr RunTradeAnimSequence
+ ld de, .script
+ jr RunTradeAnimScript
-.data_28f3f
+.script
tradeanim_setup_givemon_scroll
tradeanim_show_givemon_data
tradeanim_do_givemon_scroll
@@ -22,7 +22,7 @@ TradeAnimation: ; 28f24
tradeanim_wait_anim
tradeanim_bulge_through_tube
tradeanim_wait_anim
- tradeanim_1e
+ tradeanim_textbox_scroll
tradeanim_give_trademon_sfx
tradeanim_tube_to_ot
tradeanim_sent_to_ot_text
@@ -41,10 +41,10 @@ TradeAnimation: ; 28f24
tradeanim_show_getmon_data
tradeanim_poof
tradeanim_wait_anim
- tradeanim_1d
+ tradeanim_frontpic_scroll
tradeanim_animate_frontpic
tradeanim_wait_80_if_ot_egg
- tradeanim_1e
+ tradeanim_textbox_scroll
tradeanim_take_care_of_text
tradeanim_scroll_out_right
tradeanim_end
@@ -58,10 +58,10 @@ TradeAnimationPlayer2: ; 28f63
ld hl, wOTTrademonSpecies
ld de, wPlayerTrademonSpecies
call LinkTradeAnim_LoadTradeMonSpecies
- ld de, .data_28f7e
- jr RunTradeAnimSequence
+ ld de, .script
+ jr RunTradeAnimScript
-.data_28f7e
+.script
tradeanim_ot_sends_text_2
tradeanim_ot_bids_farewell
tradeanim_wait_40
@@ -75,10 +75,10 @@ TradeAnimationPlayer2: ; 28f63
tradeanim_show_getmon_data
tradeanim_poof
tradeanim_wait_anim
- tradeanim_1d
+ tradeanim_frontpic_scroll
tradeanim_animate_frontpic
tradeanim_wait_180_if_ot_egg
- tradeanim_1e
+ tradeanim_textbox_scroll
tradeanim_take_care_of_text
tradeanim_scroll_out_right
@@ -92,14 +92,14 @@ TradeAnimationPlayer2: ; 28f63
tradeanim_wait_anim
tradeanim_bulge_through_tube
tradeanim_wait_anim
- tradeanim_1e
+ tradeanim_textbox_scroll
tradeanim_give_trademon_sfx
tradeanim_tube_to_player
tradeanim_sent_to_ot_text
tradeanim_scroll_out_right
tradeanim_end
-RunTradeAnimSequence: ; 28fa1
+RunTradeAnimScript: ; 28fa1
ld hl, wTradeAnimPointer
ld [hl], e
inc hl
@@ -132,6 +132,7 @@ RunTradeAnimSequence: ; 28fa1
pop af
ld [hMapAnims], a
ret
+
; 28fdb
.TradeAnimLayout: ; 28fdb
@@ -197,8 +198,9 @@ RunTradeAnimSequence: ; 28fa1
ld a, [wOTTrademonSpecies]
ld de, wOTTrademonSpeciesName
call TradeAnim_GetNickname
- call Function297ed
+ call TradeAnim_NormalPals
ret
+
; 29082
DoTradeAnimation: ; 29082
@@ -217,6 +219,7 @@ DoTradeAnimation: ; 29082
call LoadStandardFont
scf
ret
+
; 290a0
.DoTradeAnimCommand: ; 290a0
@@ -224,9 +227,8 @@ DoTradeAnimation: ; 29082
ld e, a
ld d, 0
ld hl, .JumpTable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -234,63 +236,64 @@ endr
; 290af
.JumpTable: ; 290af
- dw TradeAnim_Next ; 00
- dw TradeAnim_ShowGivemonData ; 01
- dw TradeAnim_ShowGetmonData ; 02
- dw TradeAnim_EnterLinkTube ; 03
- dw TradeAnim_04 ; 04
- dw TradeAnim_ExitLinkTube ; 05
- dw TradeAnim_TubeToOT1 ; 06
- dw TradeAnim_TubeToOT2 ; 07
- dw TradeAnim_TubeToOT3 ; 08
- dw TradeAnim_TubeToOT4 ; 09
- dw TradeAnim_TubeToOT5 ; 0a
- dw TradeAnim_TubeToOT6 ; 0b
- dw TradeAnim_TubeToOT7 ; 0c
- dw TradeAnim_TubeToOT8 ; 0d
- dw TradeAnim_TubeToPlayer1 ; 0e
- dw TradeAnim_TubeToPlayer2 ; 0f
- dw TradeAnim_TubeToPlayer3 ; 10
- dw TradeAnim_TubeToPlayer4 ; 11
- dw TradeAnim_TubeToPlayer5 ; 12
- dw TradeAnim_TubeToPlayer6 ; 13
- dw TradeAnim_TubeToPlayer7 ; 14
- dw TradeAnim_TubeToPlayer8 ; 15
- dw TradeAnim_SentToOTText ; 16
- dw TradeAnim_OTBidsFarewell ; 17
- dw TradeAnim_TakeCareOfText ; 18
- dw TradeAnim_OTSendsText1 ; 19
- dw TradeAnim_OTSendsText2 ; 1a
- dw TradeAnim_SetupGivemonScroll ; 1b
- dw TradeAnim_DoGivemonScroll ; 1c
- dw TradeAnim_1d ; 1d
- dw TradeAnim_1e ; 1e
- dw TradeAnim_ScrollOutRight ; 1f
- dw TradeAnim_ScrollOutRight2 ; 20
- dw TraideAnim_Wait80 ; 21
- dw TraideAnim_Wait40 ; 22
- dw TradeAnim_RockingBall ; 23
- dw TradeAnim_DropBall ; 24
- dw TradeAnim_WaitAnim ; 25
- dw TradeAnim_WaitAnim2 ; 26
- dw TradeAnim_Poof ; 27
+ dw TradeAnim_AdvanceScriptPointer ; 00
+ dw TradeAnim_ShowGivemonData ; 01
+ dw TradeAnim_ShowGetmonData ; 02
+ dw TradeAnim_EnterLinkTube1 ; 03
+ dw TradeAnim_EnterLinkTube2 ; 04
+ dw TradeAnim_ExitLinkTube ; 05
+ dw TradeAnim_TubeToOT1 ; 06
+ dw TradeAnim_TubeToOT2 ; 07
+ dw TradeAnim_TubeToOT3 ; 08
+ dw TradeAnim_TubeToOT4 ; 09
+ dw TradeAnim_TubeToOT5 ; 0a
+ dw TradeAnim_TubeToOT6 ; 0b
+ dw TradeAnim_TubeToOT7 ; 0c
+ dw TradeAnim_TubeToOT8 ; 0d
+ dw TradeAnim_TubeToPlayer1 ; 0e
+ dw TradeAnim_TubeToPlayer2 ; 0f
+ dw TradeAnim_TubeToPlayer3 ; 10
+ dw TradeAnim_TubeToPlayer4 ; 11
+ dw TradeAnim_TubeToPlayer5 ; 12
+ dw TradeAnim_TubeToPlayer6 ; 13
+ dw TradeAnim_TubeToPlayer7 ; 14
+ dw TradeAnim_TubeToPlayer8 ; 15
+ dw TradeAnim_SentToOTText ; 16
+ dw TradeAnim_OTBidsFarewell ; 17
+ dw TradeAnim_TakeCareOfText ; 18
+ dw TradeAnim_OTSendsText1 ; 19
+ dw TradeAnim_OTSendsText2 ; 1a
+ dw TradeAnim_SetupGivemonScroll ; 1b
+ dw TradeAnim_DoGivemonScroll ; 1c
+ dw TradeAnim_FrontpicScrollStart ; 1d
+ dw TradeAnim_TextboxScrollStart ; 1e
+ dw TradeAnim_ScrollOutRight ; 1f
+ dw TradeAnim_ScrollOutRight2 ; 20
+ dw TraideAnim_Wait80 ; 21
+ dw TraideAnim_Wait40 ; 22
+ dw TradeAnim_RockingBall ; 23
+ dw TradeAnim_DropBall ; 24
+ dw TradeAnim_WaitAnim ; 25
+ dw TradeAnim_WaitAnim2 ; 26
+ dw TradeAnim_Poof ; 27
dw TradeAnim_BulgeThroughTube ; 28
- dw TradeAnim_GiveTrademonSFX ; 29
- dw TradeAnim_GetTrademonSFX ; 2a
- dw TradeAnim_End ; 2b
- dw TradeAnim_AnimateFrontpic ; 2c
- dw TraideAnim_Wait96 ; 2d
- dw TraideAnim_Wait80IfOTEgg ; 2e
- dw TraideAnim_Wait180IfOTEgg ; 2f
+ dw TradeAnim_GiveTrademonSFX ; 29
+ dw TradeAnim_GetTrademonSFX ; 2a
+ dw TradeAnim_End ; 2b
+ dw TradeAnim_AnimateFrontpic ; 2c
+ dw TraideAnim_Wait96 ; 2d
+ dw TraideAnim_Wait80IfOTEgg ; 2e
+ dw TraideAnim_Wait180IfOTEgg ; 2f
; 2910f
-NextTradeAnim: ; 2910f
+TradeAnim_IncrementJumptableIndex: ; 2910f
ld hl, wJumptableIndex
inc [hl]
ret
+
; 29114
-TradeAnim_Next: ; 29114
+TradeAnim_AdvanceScriptPointer: ; 29114
ld hl, wTradeAnimPointer
ld e, [hl]
inc hl
@@ -302,47 +305,51 @@ TradeAnim_Next: ; 29114
dec hl
ld [hl], e
ret
+
; 29123
TradeAnim_End: ; 29123
ld hl, wJumptableIndex
set 7, [hl]
ret
+
; 29129
TradeAnim_TubeToOT1: ; 29129
- ld a, $ed
- call Function292f6
+ ld a, $ed ; >>>>>>>>
+ call TradeAnim_PlaceTrademonStatsOnTubeAnim
ld a, [wLinkTradeSendmonSpecies]
ld [wd265], a
xor a
depixel 5, 11, 4, 0
ld b, $0
- jr Function2914e
+ jr TradeAnim_InitTubeAnim
TradeAnim_TubeToPlayer1: ; 2913c
- ld a, $ee
- call Function292f6
+ ld a, $ee ; <<<<<<<<
+ call TradeAnim_PlaceTrademonStatsOnTubeAnim
ld a, [wLinkTradeGetmonSpecies]
ld [wd265], a
ld a, $2
depixel 9, 18, 4, 4
ld b, $4
-
-Function2914e: ; 2914e
+TradeAnim_InitTubeAnim: ; 2914e
push bc
push de
push bc
push de
+
push af
call DisableLCD
callab ClearSpriteAnims
hlbgcoord 20, 3
- ld bc, $c
+ ld bc, 12
ld a, $60
call ByteFill
pop af
- call Function29281
+
+ call TradeAnim_TubeAnimJumptable
+
xor a
ld [hSCX], a
ld a, $7
@@ -351,113 +358,127 @@ Function2914e: ; 2914e
ld [hWY], a
call EnableLCD
call LoadTradeBubbleGFX
+
pop de
- ld a, SPRITE_ANIM_INDEX_11
+ ld a, SPRITE_ANIM_INDEX_TRADEMON_ICON
call _InitSpriteAnimStruct
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
pop bc
ld [hl], b
+
pop de
- ld a, SPRITE_ANIM_INDEX_12
+ ld a, SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
call _InitSpriteAnimStruct
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
pop bc
ld [hl], b
+
call WaitBGMap
- ld b, SCGB_1B
+ ld b, SCGB_TRADE_TUBE
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
- ld a, $d0
+ ld a, %11010000
call DmgToCgbObjPal0
- call NextTradeAnim
+
+ call TradeAnim_IncrementJumptableIndex
ld a, $5c
ld [wcf64], a
ret
+
; 291af
TradeAnim_TubeToOT2: ; 291af
- call Function2981d
+ call TradeAnim_FlashBGPals
ld a, [hSCX]
add $2
ld [hSCX], a
cp $50
ret nz
ld a, $1
- call Function29281
- call NextTradeAnim
+ call TradeAnim_TubeAnimJumptable
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 291c4
TradeAnim_TubeToOT3: ; 291c4
- call Function2981d
+ call TradeAnim_FlashBGPals
ld a, [hSCX]
add $2
ld [hSCX], a
cp $a0
ret nz
ld a, $2
- call Function29281
- call NextTradeAnim
+ call TradeAnim_TubeAnimJumptable
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 291d9
TradeAnim_TubeToOT4: ; 291d9
- call Function2981d
+ call TradeAnim_FlashBGPals
ld a, [hSCX]
add $2
ld [hSCX], a
and a
ret nz
- call NextTradeAnim
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 291e8
TradeAnim_TubeToPlayer3: ; 291e8
- call Function2981d
+ call TradeAnim_FlashBGPals
ld a, [hSCX]
sub $2
ld [hSCX], a
cp $b0
ret nz
ld a, $1
- call Function29281
- call NextTradeAnim
+ call TradeAnim_TubeAnimJumptable
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 291fd
TradeAnim_TubeToPlayer4: ; 291fd
- call Function2981d
+ call TradeAnim_FlashBGPals
ld a, [hSCX]
sub $2
ld [hSCX], a
cp $60
ret nz
xor a
- call Function29281
- call NextTradeAnim
+ call TradeAnim_TubeAnimJumptable
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 29211
TradeAnim_TubeToPlayer5: ; 29211
- call Function2981d
+ call TradeAnim_FlashBGPals
ld a, [hSCX]
sub $2
ld [hSCX], a
and a
ret nz
- call NextTradeAnim
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 29220
TradeAnim_TubeToOT6:
TradeAnim_TubeToPlayer6: ; 29220
ld a, $80
ld [wcf64], a
- call NextTradeAnim
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 29229
TradeAnim_TubeToOT8:
@@ -478,16 +499,17 @@ TradeAnim_TubeToPlayer8: ; 29229
call EnableLCD
call LoadTradeBallAndCableGFX
call WaitBGMap
- call Function297ed
- call TradeAnim_Next
+ call TradeAnim_NormalPals
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 2925d
TradeAnim_TubeToOT5:
TradeAnim_TubeToOT7:
TradeAnim_TubeToPlayer2:
TradeAnim_TubeToPlayer7: ; 2925d
- call Function2981d
+ call TradeAnim_FlashBGPals
ld hl, wcf64
ld a, [hl]
and a
@@ -496,47 +518,50 @@ TradeAnim_TubeToPlayer7: ; 2925d
ret
.done
- call NextTradeAnim
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 2926d
TradeAnim_GiveTrademonSFX: ; 2926d
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ld de, SFX_GIVE_TRADEMON
call PlaySFX
ret
+
; 29277
TradeAnim_GetTrademonSFX: ; 29277
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ld de, SFX_GET_TRADEMON
call PlaySFX
ret
+
; 29281
-Function29281: ; 29281
+TradeAnim_TubeAnimJumptable: ; 29281
and 3
ld e, a
ld d, 0
- ld hl, Jumptable_2928f
-rept 2
+ ld hl, .Jumptable
+ add hl, de
add hl, de
-endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 2928f
-Jumptable_2928f: ; 2928f
- dw Function29297
- dw Function292af
- dw Function292be
- dw Function29297
+.Jumptable: ; 2928f
+ dw .Zero
+ dw .One
+ dw .Two
+ dw .Three
; 29297
-Function29297: ; 29297
- call Function297cf
+.Zero: ; 29297
+.Three: ; 29297
+ call TradeAnim_BlankTileMap
hlcoord 9, 3
ld [hl], $5b
inc hl
@@ -544,21 +569,23 @@ Function29297: ; 29297
ld a, $60
call ByteFill
hlcoord 3, 2
- call Function292ec
+ call TradeAnim_CopyTradeGameBoyTilemap
ret
+
; 292af
-Function292af: ; 292af
- call Function297cf
+.One: ; 292af
+ call TradeAnim_BlankTileMap
hlcoord 0, 3
ld bc, SCREEN_WIDTH
ld a, $60
call ByteFill
ret
+
; 292be
-Function292be: ; 292be
- call Function297cf
+.Two: ; 292be
+ call TradeAnim_BlankTileMap
hlcoord 0, 3
ld bc, $11
ld a, $60
@@ -582,18 +609,20 @@ Function292be: ; 292be
ld a, $5b
ld [hl], a
hlcoord 10, 6
- call Function292ec
+ call TradeAnim_CopyTradeGameBoyTilemap
ret
+
; 292ec
-Function292ec: ; 292ec
+TradeAnim_CopyTradeGameBoyTilemap: ; 292ec
ld de, TradeGameBoyTilemap
lb bc, 8, 6
- call Function297db
+ call TradeAnim_CopyBoxFromDEtoHL
ret
+
; 292f6
-Function292f6: ; 292f6
+TradeAnim_PlaceTrademonStatsOnTubeAnim: ; 292f6
push af
call ClearBGPalettes
call WaitTop
@@ -631,20 +660,21 @@ Function292f6: ; 292f6
ld [hBGMapAddress + 1], a
call ClearTileMap
ret
+
; 29348
-TradeAnim_EnterLinkTube: ; 29348
+TradeAnim_EnterLinkTube1: ; 29348
call ClearTileMap
call WaitTop
ld a, $a0
ld [hSCX], a
call DelayFrame
hlcoord 8, 2
- ld de, Tilemap_298f7
+ ld de, TradeLinkTubeTilemap
lb bc, 3, 12
- call Function297db
+ call TradeAnim_CopyBoxFromDEtoHL
call WaitBGMap
- ld b, SCGB_1B
+ ld b, SCGB_TRADE_TUBE
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
@@ -652,11 +682,12 @@ TradeAnim_EnterLinkTube: ; 29348
call DmgToCgbObjPals
ld de, SFX_POTION
call PlaySFX
- call NextTradeAnim
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 2937e
-TradeAnim_04: ; 2937e
+TradeAnim_EnterLinkTube2: ; 2937e
ld a, [hSCX]
and a
jr z, .done
@@ -667,24 +698,26 @@ TradeAnim_04: ; 2937e
.done
ld c, 80
call DelayFrames
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29391
TradeAnim_ExitLinkTube: ; 29391
ld a, [hSCX]
cp $a0
- jr z, .asm_2939c
+ jr z, .done
sub $4
ld [hSCX], a
ret
-.asm_2939c
+.done
call ClearTileMap
xor a
ld [hSCX], a
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 293a6
TradeAnim_SetupGivemonScroll: ; 293a6
@@ -694,8 +727,9 @@ TradeAnim_SetupGivemonScroll: ; 293a6
ld [hSCX], a
ld a, $50
ld [hWY], a
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 293b6
TradeAnim_DoGivemonScroll: ; 293b6
@@ -714,26 +748,29 @@ TradeAnim_DoGivemonScroll: ; 293b6
ld [hWX], a
xor a
ld [hSCX], a
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 293d2
-TradeAnim_1d: ; 293d2
+TradeAnim_FrontpicScrollStart: ; 293d2
ld a, $7
ld [hWX], a
ld a, $50
ld [hWY], a
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 293de
-TradeAnim_1e: ; 293de
+TradeAnim_TextboxScrollStart: ; 293de
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 293ea
TradeAnim_ScrollOutRight: ; 293ea
@@ -750,8 +787,9 @@ TradeAnim_ScrollOutRight: ; 293ea
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
call ClearTileMap
- call NextTradeAnim
+ call TradeAnim_IncrementJumptableIndex
ret
+
; 2940c
TradeAnim_ScrollOutRight2: ; 2940c
@@ -772,19 +810,20 @@ TradeAnim_ScrollOutRight2: ; 2940c
ld [hWY], a
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 2942e
TradeAnim_ShowGivemonData: ; 2942e
- call Function2951f
+ call ShowPlayerTrademonStats
ld a, [wPlayerTrademonSpecies]
ld [CurPartySpecies], a
ld a, [wPlayerTrademonDVs]
ld [TempMonDVs], a
ld a, [wPlayerTrademonDVs + 1]
ld [TempMonDVs + 1], a
- ld b, SCGB_1A
+ ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
@@ -798,31 +837,34 @@ TradeAnim_ShowGivemonData: ; 2942e
call PlayCryHeader
.skip_cry
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29461
TradeAnim_ShowGetmonData: ; 29461
- call Function29549
+ call ShowOTTrademonStats
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
ld a, [wOTTrademonDVs]
ld [TempMonDVs], a
ld a, [wOTTrademonDVs + 1]
ld [TempMonDVs + 1], a
- ld b, SCGB_1A
+ ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
call TradeAnim_ShowGetmonFrontpic
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29487
TradeAnim_AnimateFrontpic: ; 29487
callba AnimateTrademonFrontpic
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29491
TradeAnim_GetFrontpic: ; 29491
@@ -836,6 +878,7 @@ TradeAnim_GetFrontpic: ; 29491
pop de
predef GetFrontpic
ret
+
; 294a9
TradeAnim_GetNickname: ; 294a9
@@ -847,6 +890,7 @@ TradeAnim_GetNickname: ; 294a9
ld bc, NAME_LENGTH
call CopyBytes
ret
+
; 294bb
TradeAnim_ShowGivemonFrontpic: ; 294bb
@@ -861,7 +905,7 @@ TradeAnim_ShowFrontpic: ; 294c3
lb bc, 10, $31
call Request2bpp
call WaitTop
- call Function297cf
+ call TradeAnim_BlankTileMap
hlcoord 7, 2
xor a
ld [hGraphicStartTile], a
@@ -869,27 +913,31 @@ TradeAnim_ShowFrontpic: ; 294c3
predef PlaceGraphic
call WaitBGMap
ret
+
; 294e7
TraideAnim_Wait80: ; 294e7
ld c, 80
call DelayFrames
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 294f0
TraideAnim_Wait40: ; 294f0
ld c, 40
call DelayFrames
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 294f9
TraideAnim_Wait96: ; 294f9
ld c, 96
call DelayFrames
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29502
TraideAnim_Wait80IfOTEgg: ; 29502
@@ -898,6 +946,7 @@ TraideAnim_Wait80IfOTEgg: ; 29502
ld c, 80
call DelayFrames
ret
+
; 2950c
TraideAnim_Wait180IfOTEgg: ; 2950c
@@ -906,55 +955,59 @@ TraideAnim_Wait180IfOTEgg: ; 2950c
ld c, 180
call DelayFrames
ret
+
; 29516
IsOTTrademonEgg: ; 29516
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ld a, [wOTTrademonSpecies]
cp EGG
ret
+
; 2951f
-Function2951f: ; 2951f
+ShowPlayerTrademonStats: ; 2951f
ld de, wPlayerTrademonSpecies
ld a, [de]
cp EGG
- jr z, Function295a1
- call Function29573
+ jr z, TrademonStats_Egg
+ call TrademonStats_MonTemplate
ld de, wPlayerTrademonSpecies
- call Function295e3
+ call TrademonStats_PrintSpeciesNumber
ld de, wPlayerTrademonSpeciesName
- call Function295ef
+ call TrademonStats_PrintSpeciesName
ld a, [wPlayerTrademonCaughtData]
ld de, wPlayerTrademonOTName
- call Function295f6
- ld de, PlayerScreens
- call Function29611
- call Function295d8
+ call TrademonStats_PrintOTName
+ ld de, wPlayerTrademonID
+ call TrademonStats_PrintTrademonID
+ call TrademonStats_WaitBGMap
ret
+
; 29549
-Function29549: ; 29549
+ShowOTTrademonStats: ; 29549
ld de, wOTTrademonSpecies
ld a, [de]
cp EGG
- jr z, Function295a1
- call Function29573
+ jr z, TrademonStats_Egg
+ call TrademonStats_MonTemplate
ld de, wOTTrademonSpecies
- call Function295e3
+ call TrademonStats_PrintSpeciesNumber
ld de, wOTTrademonSpeciesName
- call Function295ef
+ call TrademonStats_PrintSpeciesName
ld a, [wOTTrademonCaughtData]
ld de, wOTTrademonOTName
- call Function295f6
+ call TrademonStats_PrintOTName
ld de, wOTTrademonID
- call Function29611
- call Function295d8
+ call TrademonStats_PrintTrademonID
+ call TrademonStats_WaitBGMap
ret
+
; 29573
-Function29573: ; 29573
+TrademonStats_MonTemplate: ; 29573
call WaitTop
- call Function297cf
+ call TradeAnim_BlankTileMap
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
hlcoord 3, 0
@@ -962,129 +1015,138 @@ Function29573: ; 29573
ld c, $d
call TextBox
hlcoord 4, 0
- ld de, String29591
+ ld de, .OTMonData
call PlaceString
ret
+
; 29591
-String29591: ; 29591
+.OTMonData: ; 29591
db "─── №."
next ""
next "OT/"
next "<ID>№.@"
; 295a1
-Function295a1: ; 295a1
+TrademonStats_Egg: ; 295a1
call WaitTop
- call Function297cf
+ call TradeAnim_BlankTileMap
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
hlcoord 3, 0
- ld b, $6
- ld c, $d
+ ld b, 6
+ ld c, 13
call TextBox
hlcoord 4, 2
- ld de, String295c2
+ ld de, .EggData
call PlaceString
- call Function295d8
+ call TrademonStats_WaitBGMap
ret
+
; 295c2
-String295c2: ; 295c2
+.EggData: ; 295c2
db "EGG"
next "OT/?????"
next "<ID>№.?????@"
; 295d8
-Function295d8: ; 295d8
+TrademonStats_WaitBGMap: ; 295d8
call WaitBGMap
call WaitTop
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
ret
+
; 295e3
-Function295e3: ; 295e3
+TrademonStats_PrintSpeciesNumber: ; 295e3
hlcoord 10, 0
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
ld [hl], " "
ret
+
; 295ef
-Function295ef: ; 295ef
+TrademonStats_PrintSpeciesName: ; 295ef
hlcoord 4, 2
call PlaceString
ret
+
; 295f6
-Function295f6: ; 295f6
+TrademonStats_PrintOTName: ; 295f6
cp 3
- jr c, .asm_295fb
+ jr c, .caught_gender_okay
xor a
-
-.asm_295fb
+.caught_gender_okay
push af
hlcoord 7, 4
call PlaceString
inc bc
pop af
- ld hl, Unknown_2960e
+ ld hl, .Gender
ld d, 0
ld e, a
add hl, de
ld a, [hl]
ld [bc], a
ret
+
; 2960e
-Unknown_2960e: ; 2960e
+.Gender: ; 2960e
db " ", "♂", "♀"
; 29611
-Function29611: ; 29611
+TrademonStats_PrintTrademonID: ; 29611
hlcoord 7, 6
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
ret
+
; 2961b
TradeAnim_RockingBall: ; 2961b
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_0E
call _InitSpriteAnimStruct
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ld a, $20
ld [wcf64], a
ret
+
; 2962c
TradeAnim_DropBall: ; 2962c
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_0E
call _InitSpriteAnimStruct
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld [hl], $1
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], $dc
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ld a, $38
ld [wcf64], a
ret
+
; 29649
TradeAnim_Poof: ; 29649
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_0F
call _InitSpriteAnimStruct
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ld a, $10
ld [wcf64], a
ld de, SFX_BALL_POOF
call PlaySFX
ret
+
; 29660
TradeAnim_BulgeThroughTube: ; 29660
@@ -1093,177 +1155,184 @@ TradeAnim_BulgeThroughTube: ; 29660
depixel 5, 11
ld a, SPRITE_ANIM_INDEX_10
call _InitSpriteAnimStruct
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ld a, $40
ld [wcf64], a
ret
+
; 29676
-Function29676: ; 29676 (a:5676)
- ld hl, $b
+TradeAnim_AnimateTrademonInTube: ; 29676 (a:5676)
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld e, [hl]
ld d, 0
- ld hl, Jumptable_29686
-rept 2
+ ld hl, .Jumptable
+ add hl, de
add hl, de
-endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 29686
-Jumptable_29686: ; 29686 (a:5686)
- dw Function2969a
- dw Function296a4
- dw Function296af
- dw Function296bd
- dw Function296cf
- dw Function296dd
- dw Function296f2
+.Jumptable: ; 29686 (a:5686)
+ dw .InitTimer
+ dw .WaitTimer1
+ dw .MoveRight
+ dw .MoveDown
+ dw .MoveUp
+ dw .MoveLeft
+ dw .WaitTimer2
; 2969a
-Function29694: ; 29694 (a:5694)
- ld hl, $b
+.JumptableNext: ; 29694 (a:5694)
+ ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ret
-Function2969a: ; 2969a (a:569a)
- call Function29694
- ld hl, $c
+.InitTimer: ; 2969a (a:569a)
+ call .JumptableNext
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $80
ret
-Function296a4: ; 296a4 (a:56a4)
- ld hl, $c
+.WaitTimer1: ; 296a4 (a:56a4)
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
dec [hl]
and a
ret nz
- call Function29694
+ call .JumptableNext
-Function296af: ; 296af (a:56af)
- ld hl, $4
+.MoveRight: ; 296af (a:56af)
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $94
- jr nc, .asm_296ba
+ jr nc, .done_move_right
inc [hl]
ret
-.asm_296ba
- call Function29694
-Function296bd: ; 296bd (a:56bd)
- ld hl, $5
+.done_move_right
+ call .JumptableNext
+
+.MoveDown: ; 296bd (a:56bd)
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
cp $4c
- jr nc, .asm_296c8
+ jr nc, .done_move_down
inc [hl]
ret
-.asm_296c8
- ld hl, $
+
+.done_move_down
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
-Function296cf: ; 296cf (a:56cf)
- ld hl, $5
+.MoveUp: ; 296cf (a:56cf)
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
cp $2c
- jr z, .asm_296da
+ jr z, .done_move_up
dec [hl]
ret
-.asm_296da
- call Function29694
-Function296dd: ; 296dd (a:56dd)
- ld hl, $4
+.done_move_up
+ call .JumptableNext
+
+.MoveLeft: ; 296dd (a:56dd)
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $58
- jr z, .asm_296e8
+ jr z, .done_move_left
dec [hl]
ret
-.asm_296e8
- call Function29694
- ld hl, $c
+
+.done_move_left
+ call .JumptableNext
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $80
ret
-Function296f2: ; 296f2 (a:56f2)
- ld hl, $c
+.WaitTimer2: ; 296f2 (a:56f2)
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
dec [hl]
and a
ret nz
- ld hl, $
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
+
; 29701 (a:5701)
TradeAnim_SentToOTText: ; 29701
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
jr z, .time_capsule
- ld hl, UnknownText_0x29737
+ ld hl, .Text_MonName
call PrintText
ld c, 189
call DelayFrames
- ld hl, UnknownText_0x29732
+ ld hl, .Text_WasSentTo
call PrintText
- call Function297c9
+ call TradeAnim_Wait80Frames
ld c, 128
call DelayFrames
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
.time_capsule
- ld hl, UnknownText_0x29732
+ ld hl, .Text_WasSentTo
call PrintText
- call Function297c9
- call TradeAnim_Next
+ call TradeAnim_Wait80Frames
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29732
-UnknownText_0x29732: ; 0x29732
+.Text_WasSentTo: ; 0x29732
; was sent to @ .
text_jump UnknownText_0x1bc6e9
db "@"
; 0x29737
-UnknownText_0x29737: ; 0x29737
+.Text_MonName: ; 0x29737
;
text_jump UnknownText_0x1bc701
db "@"
; 0x2973c
TradeAnim_OTBidsFarewell: ; 2973c
- ld hl, UnknownText_0x29752
+ ld hl, .Text_BidsFarewellToMon
call PrintText
- call Function297c9
- ld hl, UnknownText_0x29757
+ call TradeAnim_Wait80Frames
+ ld hl, .Text_MonName
call PrintText
- call Function297c9
- call TradeAnim_Next
+ call TradeAnim_Wait80Frames
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29752
-UnknownText_0x29752: ; 0x29752
+.Text_BidsFarewellToMon: ; 0x29752
; bids farewell to
text_jump UnknownText_0x1bc703
db "@"
; 0x29757
-UnknownText_0x29757: ; 0x29757
+.Text_MonName: ; 0x29757
; .
text_jump UnknownText_0x1bc719
db "@"
@@ -1276,103 +1345,109 @@ TradeAnim_TakeCareOfText: ; 2975c
ld a, " "
call ByteFill
call WaitBGMap
- ld hl, UnknownText_0x2977a
+ ld hl, .Text_TakeGoodCareOfMon
call PrintText
- call Function297c9
- call TradeAnim_Next
+ call TradeAnim_Wait80Frames
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 2977a
-UnknownText_0x2977a: ; 0x2977a
+.Text_TakeGoodCareOfMon: ; 0x2977a
; Take good care of @ .
text_jump UnknownText_0x1bc71f
db "@"
; 0x2977f
TradeAnim_OTSendsText1: ; 2977f
- ld hl, UnknownText_0x2979a
+ ld hl, .Text_ForYourMon
call PrintText
- call Function297c9
- ld hl, UnknownText_0x2979f
+ call TradeAnim_Wait80Frames
+ ld hl, .Text_OTSends
call PrintText
- call Function297c9
+ call TradeAnim_Wait80Frames
ld c, 14
call DelayFrames
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 2979a
-UnknownText_0x2979a: ; 0x2979a
+.Text_ForYourMon: ; 0x2979a
; For @ 's @ ,
text_jump UnknownText_0x1bc739
db "@"
; 0x2979f
-UnknownText_0x2979f: ; 0x2979f
+.Text_OTSends: ; 0x2979f
; sends @ .
text_jump UnknownText_0x1bc74c
db "@"
; 0x297a4
TradeAnim_OTSendsText2: ; 297a4
- ld hl, UnknownText_0x297bf
+ ld hl, .Text_WillTrade
call PrintText
- call Function297c9
- ld hl, UnknownText_0x297c4
+ call TradeAnim_Wait80Frames
+ ld hl, .Text_ForYourMon
call PrintText
- call Function297c9
+ call TradeAnim_Wait80Frames
ld c, 14
call DelayFrames
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 297bf
-UnknownText_0x297bf: ; 0x297bf
+.Text_WillTrade: ; 0x297bf
; will trade @ @
text_jump UnknownText_0x1bc75e
db "@"
; 0x297c4
-UnknownText_0x297c4: ; 0x297c4
+.Text_ForYourMon: ; 0x297c4
; for @ 's @ .
text_jump UnknownText_0x1bc774
db "@"
; 0x297c9
-Function297c9: ; 297c9
+TradeAnim_Wait80Frames: ; 297c9
ld c, 80
call DelayFrames
ret
+
; 297cf
-Function297cf: ; 297cf
+TradeAnim_BlankTileMap: ; 297cf
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, " "
call ByteFill
ret
+
; 297db
-Function297db: ; 297db
-.asm_297db
+TradeAnim_CopyBoxFromDEtoHL: ; 297db
+.row
push bc
push hl
-.asm_297dd
+.col
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_297dd
+ jr nz, .col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
- jr nz, .asm_297db
+ jr nz, .row
ret
+
; 297ed
-Function297ed: ; 297ed
+TradeAnim_NormalPals: ; 297ed
ld a, [hSGB]
and a
ld a, %11100100 ; 3,2,1,0
@@ -1384,6 +1459,7 @@ Function297ed: ; 297ed
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
ret
+
; 297ff
LinkTradeAnim_LoadTradePlayerNames: ; 297ff
@@ -1396,6 +1472,7 @@ LinkTradeAnim_LoadTradePlayerNames: ; 297ff
ld bc, NAME_LENGTH
call CopyBytes
ret
+
; 29814
LinkTradeAnim_LoadTradeMonSpecies: ; 29814
@@ -1404,16 +1481,18 @@ LinkTradeAnim_LoadTradeMonSpecies: ; 29814
ld a, [de]
ld [wLinkTradeGetmonSpecies], a
ret
+
; 2981d
-Function2981d: ; 2981d
+TradeAnim_FlashBGPals: ; 2981d
ld a, [wcf65]
and $7
ret nz
ld a, [rBGP]
- xor $3c
+ xor %00111100
call DmgToCgbBGPals
ret
+
; 2982b
LoadTradeBallAndCableGFX: ; 2982b
@@ -1435,6 +1514,7 @@ LoadTradeBallAndCableGFX: ; 2982b
ld [hli], a
ld [hl], $62
ret
+
; 2985a
LoadTradeBubbleGFX: ; 2985a
@@ -1450,6 +1530,7 @@ LoadTradeBubbleGFX: ; 2985a
ld [hli], a
ld [hl], $62
ret
+
; 29879
TradeAnim_WaitAnim: ; 29879
@@ -1461,8 +1542,9 @@ TradeAnim_WaitAnim: ; 29879
ret
.done
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29886
TradeAnim_WaitAnim2: ; 29886
@@ -1474,8 +1556,9 @@ TradeAnim_WaitAnim2: ; 29886
ret
.done
- call TradeAnim_Next
+ call TradeAnim_AdvanceScriptPointer
ret
+
; 29893
@@ -1484,7 +1567,7 @@ DebugTrade: ; 29893
; It was meant for use in Japanese versions, so the
; constant used for copy length was changed by accident.
- ld hl, Unknown_298b5
+ ld hl, .DebugTradeData
ld a, [hli]
ld [wPlayerTrademonSpecies], a
@@ -1508,9 +1591,10 @@ DebugTrade: ; 29893
dec c
jr nz, .loop2
ret
+
; 298b5
-Unknown_298b5: ; 298b5
+.DebugTradeData: ; 298b5
db VENUSAUR, "ゲーフり@@", $23, $01 ; GAME FREAK
db CHARIZARD, "クりーチャ@", $56, $04 ; Creatures Inc.
; 298c7
@@ -1528,7 +1612,7 @@ TradeGameBoyTilemap: ; 298c7
db $4f, $50, $50, $50, $51, $52
; 297f7
-Tilemap_298f7: ; 297f7
+TradeLinkTubeTilemap: ; 297f7
; 12x3
db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53
db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54
diff --git a/engine/trainer_card.asm b/engine/trainer_card.asm
index b6fac7f7c..a993ce4ba 100755
--- a/engine/trainer_card.asm
+++ b/engine/trainer_card.asm
@@ -62,9 +62,9 @@ TrainerCard: ; 25105
call WaitBGMap
ld hl, wJumptableIndex
xor a
-rept 3
ld [hli], a
-endr
+ ld [hli], a
+ ld [hli], a
ld [hl], a
ret
diff --git a/engine/unown_puzzle.asm b/engine/unown_puzzle.asm
index ada5244a7..8d46a02a6 100755
--- a/engine/unown_puzzle.asm
+++ b/engine/unown_puzzle.asm
@@ -47,7 +47,7 @@ UnownPuzzle: ; e1190
ld a, $93
ld [rLCDC], a
call WaitBGMap
- ld b, SCGB_18
+ ld b, SCGB_UNOWN_PUZZLE
call GetSGBLayout
ld a, $e4
call DmgToCgbBGPals
@@ -178,9 +178,8 @@ UnownPuzzleJumptable: ; e12ca
ld e, a
ld d, 0
ld hl, .Jumptable
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -840,9 +839,8 @@ LoadUnownPuzzlePiecesGFX: ; e17a3
ld e, a
ld d, 0
ld hl, .LZPointers
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/unowndex.asm b/engine/unowndex.asm
index 0b251da0b..d7fe63dc3 100755
--- a/engine/unowndex.asm
+++ b/engine/unowndex.asm
@@ -34,9 +34,8 @@ PrintUnownWord: ; fba2e (3e:7a2e)
ld e, a
ld d, 0
ld hl, UnownWords
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld e, a
ld d, [hl]
diff --git a/engine/variables.asm b/engine/variables.asm
index 3ddfce8d6..fde2583b7 100755
--- a/engine/variables.asm
+++ b/engine/variables.asm
@@ -7,9 +7,9 @@ _GetVarAction:: ; 80648 (20:4648)
ld c, a
ld b, 0
ld hl, .VarActionTable
-rept 3
add hl, bc
-endr
+ add hl, bc
+ add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
diff --git a/engine/warp_connection.asm b/engine/warp_connection.asm
index 9d1f35479..180aada87 100755
--- a/engine/warp_connection.asm
+++ b/engine/warp_connection.asm
@@ -1,5 +1,5 @@
-RunCallback_05_03: ; 1045b0
+HandleNewMap: ; 1045b0
call Clearwc7e8
call ResetMapBufferEventFlags
call ResetFlashIfOutOfCave
@@ -7,7 +7,7 @@ RunCallback_05_03: ; 1045b0
call ResetBikeFlags
ld a, MAPCALLBACK_NEWMAP
call RunMapCallback
-RunCallback_03: ; 1045c4
+InitCommandQueue: ; 1045c4
callba ClearCmdQueue
ld a, MAPCALLBACK_CMDQUEUE
call RunMapCallback
@@ -20,18 +20,16 @@ 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
+ jp z, .south
+ cp UP
+ jp z, .north
+ cp LEFT
+ jp z, .west
+ cp RIGHT
+ jp z, .east
ret
-; 1045ed
-
-EnterWestConnection: ; 1045ed
+.west
ld a, [WestConnectedMapGroup]
ld [MapGroup], a
ld a, [WestConnectedMapNumber]
@@ -64,11 +62,9 @@ EnterWestConnection: ; 1045ed
ld [wOverworldMapAnchor], a
ld a, h
ld [wOverworldMapAnchor + 1], a
- jp EnteredConnection
-; 104629
-
+ jp .done
-EnterEastConnection: ; 104629
+.east
ld a, [EastConnectedMapGroup]
ld [MapGroup], a
ld a, [EastConnectedMapNumber]
@@ -85,27 +81,25 @@ EnterEastConnection: ; 104629
ld h, [hl]
ld l, a
srl c
- jr z, .skip_to_load
+ jr z, .skip_to_load2
ld a, [EastConnectedMapWidth]
add 6
ld e, a
ld d, 0
-.loop
+.loop2
add hl, de
dec c
- jr nz, .loop
+ jr nz, .loop2
-.skip_to_load
+.skip_to_load2
ld a, l
ld [wOverworldMapAnchor], a
ld a, h
ld [wOverworldMapAnchor + 1], a
- jp EnteredConnection
-; 104665
+ jp .done
-
-EnterNorthConnection: ; 104665
+.north
ld a, [NorthConnectedMapGroup]
ld [MapGroup], a
ld a, [NorthConnectedMapNumber]
@@ -128,11 +122,9 @@ EnterNorthConnection: ; 104665
ld [wOverworldMapAnchor], a
ld a, h
ld [wOverworldMapAnchor + 1], a
- jp EnteredConnection
-; 104696
-
+ jp .done
-EnterSouthConnection: ; 104696
+.south
ld a, [SouthConnectedMapGroup]
ld [MapGroup], a
ld a, [SouthConnectedMapNumber]
@@ -155,10 +147,7 @@ EnterSouthConnection: ; 104696
ld [wOverworldMapAnchor], a
ld a, h
ld [wOverworldMapAnchor + 1], a
- ; fallthrough
-; 1046c4
-
-EnteredConnection: ; 1046c4
+.done
scf
ret
; 1046c6
@@ -239,35 +228,39 @@ LoadMapTimeOfDay: ; 104750
callba ReplaceTimeOfDayPals
callba UpdateTimeOfDayPal
call OverworldTextModeSwitch
- call Function104770
- call Function1047a3
+ call .ClearBGMap
+ call .PushAttrMap
ret
-Function104770: ; 104770 (41:4770)
+.ClearBGMap: ; 104770 (41:4770)
ld a, VBGMap0 / $100
ld [wBGMapAnchor + 1], a
xor a
ld [wBGMapAnchor], a
ld [hSCY], a
ld [hSCX], a
- callba Function5958
+ callba ApplyBGMapAnchorToObjects
+
ld a, [rVBK]
push af
ld a, $1
ld [rVBK], a
+
xor a
ld bc, VBGMap1 - VBGMap0
hlbgcoord 0, 0
call ByteFill
+
pop af
ld [rVBK], a
+
ld a, $60
ld bc, VBGMap1 - VBGMap0
hlbgcoord 0, 0
call ByteFill
ret
-Function1047a3: ; 1047a3 (41:47a3)
+.PushAttrMap: ; 1047a3 (41:47a3)
decoord 0, 0
call .copy
ld a, [hCGB]
@@ -326,7 +319,7 @@ RefreshMapSprites: ; 1047f0
jr nz, .skip
ld hl, VramState
set 0, [hl]
- call Function2e31
+ call SafeUpdateSprites
.skip
ld a, [wPlayerSpriteSetupFlags]
and %00011100
@@ -369,7 +362,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
.left
ld a, [PlayerStandingMapX]
- sub $4
+ sub 4
cp -1
jr z, .ok
and a
diff --git a/engine/wildmons.asm b/engine/wildmons.asm
index 140de9205..6208cfbce 100755
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -62,9 +62,9 @@ FindNest: ; 2a01f
ld b, a
ld a, [hli]
ld c, a
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
ld a, NUM_WILDMONS_PER_AREA_TIME_OF_DAY * 3
call .SearchMapForMon
jr nc, .next_grass
@@ -108,9 +108,8 @@ endr
ld a, [wNamedObjectIndexBuffer]
cp [hl]
jr z, .found
-rept 2
inc hl
-endr
+ inc hl
pop af
dec a
jr nz, .ScanMapLoop
@@ -268,15 +267,14 @@ ChooseWildEncounter: ; 2a14f
call CheckEncounterRoamMon
jp c, .startwildbattle
-rept 3
inc hl
-endr
+ inc hl
+ inc hl
call CheckOnWater
ld de, .WaterMonTable
jr z, .watermon
-rept 2
inc hl
-endr
+ inc hl
ld a, [TimeOfDay]
ld bc, $e
call AddNTimes
@@ -597,9 +595,9 @@ CheckEncounterRoamMon: ; 2a2ce
cp [hl]
jr nz, .DontEncounterRoamMon
; We've decided to take on a beast, so stage its information for battle.
-rept 3
dec hl
-endr
+ dec hl
+ dec hl
ld a, [hli]
ld [TempWildMonSpecies], a
ld a, [hl]
@@ -702,9 +700,8 @@ UpdateRoamMons: ; 2a30d
inc hl
ld c, a
ld b, $0
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [wRoamMons_LastMapGroup]
cp [hl]
jr nz, .done
@@ -866,9 +863,8 @@ RandomPhoneRareWildMon: ; 2a4ab
dec a
ld c, a
ld b, $0
-rept 2
add hl, bc
-endr
+ add hl, bc
; We now have the pointer to one of the last (rarest) three wild Pokemon found in that area.
inc hl
ld c, [hl] ; Contains the species index of this rare Pokemon
@@ -942,9 +938,8 @@ RandomPhoneWildMon: ; 2a51f
and $3
ld c, a
ld b, $0
-rept 2
add hl, bc
-endr
+ add hl, bc
inc hl
ld a, [hl]
ld [wNamedObjectIndexBuffer], a
@@ -963,9 +958,8 @@ RandomPhoneMon: ; 2a567
dec a
ld c, a
ld b, 0
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, BANK(TrainerGroups)
call GetFarHalfword