diff options
Diffstat (limited to 'engine')
82 files changed, 3041 insertions, 2374 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..050fa69af 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 @@ -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..d37d6c33a 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 @@ -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 @@ -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..202ad10ff 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,7 +240,7 @@ endr ld a, [hl] ld [CurSpecies], a ld [TempMonSpecies], a - ld [Buffer2], a + ld [wEvolutionNewSpecies], a ld [wd265], a call GetPokemonName @@ -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/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..09619cfa5 100644 --- a/engine/fruit_trees.asm +++ b/engine/fruit_trees.asm @@ -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..951eb1444 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,16 +1963,16 @@ 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 +.save + callba SaveAfterLinkTrade callba MobileFn_1060af callba BackupMobileEventIndex ld c, 40 @@ -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..59e0ef7de 100755 --- a/engine/map_object_action.asm +++ b/engine/map_object_action.asm @@ -274,12 +274,12 @@ Function45be: ; 45be Function45c5: ; 45c5 ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS] - ld d, FACING_17 + ld d, FACING_17 ; symmetric cp SPRITE_BIG_SNORLAX jr z, .ok cp SPRITE_BIG_LAPRAS jr z, .ok - ld d, FACING_16 + ld d, FACING_16 ; asymmetric .ok ld hl, OBJECT_FACING_STEP diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 7a38f3ffe..58c30c8fb 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 @@ -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 @@ -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..3cc2796db 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 diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm index 5e6d317ba..9f5302506 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 @@ -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..9d1376a62 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 @@ -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..24e4fb873 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) 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..745948a6f 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -1427,12 +1427,12 @@ 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 @@ -1652,9 +1652,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 @@ -1825,9 +1825,9 @@ StdScript: ; 9757b 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 @@ -3054,7 +3054,7 @@ Script_loadbytec2cf: ; 97b27 Script_closetext: ; 97b2f ; script command 0x49 - call Function2e20 + call _OpenAndCloseMenu_HDMATransferTileMapAndAttrMap call CloseText ret ; 97b36 @@ -3160,9 +3160,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 " " 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..00ab1d828 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -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 @@ -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 @@ -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..841a59cd3 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 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..bf71a0b8d 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 @@ -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..0f144f79c 100644 --- a/engine/std_scripts.asm +++ b/engine/std_scripts.asm @@ -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..6efd07294 100755 --- a/engine/tmhm2.asm +++ b/engine/tmhm2.asm @@ -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 |