diff options
Diffstat (limited to 'engine')
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 |