diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-06-10 17:36:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-10 17:36:43 -0400 |
commit | a9a427c6f268e04468c8e30242f3ed4f96036848 (patch) | |
tree | 6bab63e3bd983d393f7182bcc271c3e0ab2d3b93 /src | |
parent | 2859900ea9aa6f381006976fa94b95e6a4cad0b7 (diff) | |
parent | a7815857ad8af1a35e69692e6eee3e854421b790 (diff) |
Merge branch 'master' into doc-link
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_setup.c | 4 | ||||
-rw-r--r-- | src/battle_transition.c | 723 | ||||
-rwxr-xr-x | src/field_message_box.c | 107 | ||||
-rw-r--r-- | src/match_call.c | 2 | ||||
-rw-r--r-- | src/play_time.c | 50 | ||||
-rw-r--r-- | src/scrcmd.c | 2 | ||||
-rwxr-xr-x | src/shop.c | 10 | ||||
-rw-r--r-- | src/trainer_hill.c | 2 | ||||
-rw-r--r-- | src/tv.c | 528 | ||||
-rw-r--r-- | src/unk_transition.c | 2 |
10 files changed, 518 insertions, 912 deletions
diff --git a/src/battle_setup.c b/src/battle_setup.c index b44c7b9ec..40e36d302 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -1360,7 +1360,7 @@ void ShowTrainerIntroSpeech(void) else CopyPyramidTrainerSpeechBefore(LocalIdToPyramidTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId)); - sub_80982B8(); + ShowFieldMessageFromBuffer(); } else if (InTrainerHillChallenge()) { @@ -1369,7 +1369,7 @@ void ShowTrainerIntroSpeech(void) else CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_INTRO, LocalIdToHillTrainerId(gObjectEvents[gApproachingTrainers[gApproachingTrainerId].objectEventId].localId)); - sub_80982B8(); + ShowFieldMessageFromBuffer(); } else { diff --git a/src/battle_transition.c b/src/battle_transition.c index 23182e976..e76a3a34c 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -237,29 +237,29 @@ static bool8 Transition_Phase1(struct Task *task); static bool8 Transition_WaitForPhase1(struct Task *task); static bool8 Transition_Phase2(struct Task *task); static bool8 Transition_WaitForPhase2(struct Task *task); -static void sub_8149F08(void); -static void sub_8149F84(void); +static void InitTransitionStructVars(void); +static void FadeScreenBlack(void); static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); static void sub_814A014(u16 *a0, s16 a1, s16 a2, s16 a3); static void sub_8149F98(s16 *array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); -static void sub_8149F40(u16 **a0); +static void GetBg0TilemapDst(u16 **tileset); static void sub_814A1AC(s16 *a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); static bool8 sub_814A228(s16 *a0, bool8 a1, bool8 a2); -static void sub_8148484(s16 spriteId, s16 value); -static void sub_814849C(s16 spriteId); -static s16 sub_81484B8(s16 spriteId); +static void SetTrainerPicSlideTable(s16 spriteId, s16 arrId); +static void IncrementTrainerPicState(s16 spriteId); +static s16 IsTrainerPicSlideDone(s16 spriteId); static bool8 Phase1_TransitionAll_Func1(struct Task *task); static bool8 Phase1_TransitionAll_Func2(struct Task *task); static bool8 IsPhase1Done(void); static bool16 sub_8149048(const s16 * const *arg0, struct StructRectangularSpiral *arg1); static void sub_814713C(struct Sprite *sprite); -static void sub_8148380(struct Sprite *sprite); +static void SpriteCb_TrainerPic(struct Sprite *sprite); static void sub_8149864(struct Sprite *sprite); -static bool8 sub_81483A8(struct Sprite *sprite); -static bool8 sub_81483AC(struct Sprite *sprite); -static bool8 sub_81483F8(struct Sprite *sprite); -static bool8 sub_814842C(struct Sprite *sprite); -static bool8 sub_8148458(struct Sprite *sprite); +static bool8 TrainerPicCb_Nothing(struct Sprite *sprite); +static bool8 TrainerPicCb_SetSlideOffsets(struct Sprite *sprite); +static bool8 TrainerPicCb_Slide1(struct Sprite *sprite); +static bool8 TrainerPicCb_Slide2(struct Sprite *sprite); +static bool8 TrainerPicCb_Slide3(struct Sprite *sprite); // iwram bss vars static s16 sUnusedRectangularSpiralVar; @@ -273,39 +273,39 @@ EWRAM_DATA static struct TransitionData *sTransitionStructPtr = NULL; // const rom data static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); -static const u8 sSpriteImage_85B98F0[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp"); -static const u32 sUnknown_085B9AF0[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); -static const u8 sSpriteImage_85B9CD0[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); -static const u8 sSpriteImage_85BA4D0[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +static const u8 sPokeball_Gfx[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp"); +static const u32 sEliteFour_Tileset[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +static const u8 sUnusedBrendan_Gfx[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +static const u8 sUnusedLass_Gfx[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); -static const u32 sEvilTeam_Palette[] = INCBIN_U32("graphics/battle_transitions/evil_team.gbapal"); +static const u16 sEvilTeam_Palette[] = INCBIN_U16("graphics/battle_transitions/evil_team.gbapal"); static const u32 sTeamAqua_Tileset[] = INCBIN_U32("graphics/battle_transitions/team_aqua.4bpp.lz"); static const u32 sTeamAqua_Tilemap[] = INCBIN_U32("graphics/battle_transitions/team_aqua.bin.lz"); static const u32 sTeamMagma_Tileset[] = INCBIN_U32("graphics/battle_transitions/team_magma.4bpp.lz"); static const u32 sTeamMagma_Tilemap[] = INCBIN_U32("graphics/battle_transitions/team_magma.bin.lz"); -static const u32 gUnknown_085BBC14[] = INCBIN_U32("graphics/battle_transitions/85BBC14.4bpp"); -static const u32 gUnknown_085BC2B4[] = INCBIN_U32("graphics/battle_transitions/85BC2B4.gbapal"); -static const u32 gUnknown_085BC2D4[] = INCBIN_U32("graphics/battle_transitions/85BC2D4.gbapal"); -static const u32 gUnknown_085BC2F4[] = INCBIN_U32("graphics/battle_transitions/85BC2F4.gbapal"); -static const u32 gUnknown_085BC314[] = INCBIN_U32("graphics/battle_transitions/85BC314.bin"); -static const u32 gUnknown_085BCB14[] = INCBIN_U32("graphics/battle_transitions/85BCB14.bin"); -static const u32 gUnknown_085BD314[] = INCBIN_U32("graphics/battle_transitions/85BD314.bin"); +static const u32 sRegis_Tileset[] = INCBIN_U32("graphics/battle_transitions/regis.4bpp"); +static const u16 sRegice_Palette[] = INCBIN_U16("graphics/battle_transitions/regice.gbapal"); +static const u16 sRegisteel_Palette[] = INCBIN_U16("graphics/battle_transitions/registeel.gbapal"); +static const u16 sRegirock_Palette[] = INCBIN_U16("graphics/battle_transitions/regirock.gbapal"); +static const u32 sRegice_Tilemap[] = INCBIN_U32("graphics/battle_transitions/regice.bin"); +static const u32 sRegisteel_Tilemap[] = INCBIN_U32("graphics/battle_transitions/registeel.bin"); +static const u32 sRegirock_Tilemap[] = INCBIN_U32("graphics/battle_transitions/regirock.bin"); static const u16 gUnknown_085BDB14[] = INCBIN_U16("graphics/battle_transitions/85BDB14.gbapal"); -static const u32 gUnknown_085BDB34[] = INCBIN_U32("graphics/battle_transitions/kyogre.4bpp.lz"); -static const u32 gUnknown_085BE1E8[] = INCBIN_U32("graphics/battle_transitions/kyogre.bin.lz"); -static const u32 gUnknown_085BE51C[] = INCBIN_U32("graphics/battle_transitions/groudon.4bpp.lz"); -static const u32 gUnknown_085BEA88[] = INCBIN_U32("graphics/battle_transitions/groudon.bin.lz"); -static const u16 gUnknown_085BEDA0[] = INCBIN_U16("graphics/battle_transitions/kyogre_pt1.gbapal"); -static const u16 gUnknown_085BEEE0[] = INCBIN_U16("graphics/battle_transitions/kyogre_pt2.gbapal"); -static const u16 gUnknown_085BF0A0[] = INCBIN_U16("graphics/battle_transitions/groudon_pt1.gbapal"); -static const u16 gUnknown_085BF2A0[] = INCBIN_U16("graphics/battle_transitions/groudon_pt2.gbapal"); -static const u16 gUnknown_085BF4A0[] = INCBIN_U16("graphics/battle_transitions/rayquaza.gbapal"); -static const u32 gUnknown_085BF6A0[] = INCBIN_U32("graphics/battle_transitions/rayquaza.4bpp"); -static const u32 gUnknown_085C6BE0[] = INCBIN_U32("graphics/battle_transitions/rayquaza.bin"); -static const u32 gUnknown_085C7BE0[] = INCBIN_U32("graphics/battle_transitions/frontier_brain.gbapal"); +static const u32 sKyogre_Tileset[] = INCBIN_U32("graphics/battle_transitions/kyogre.4bpp.lz"); +static const u32 sKyogre_Tilemap[] = INCBIN_U32("graphics/battle_transitions/kyogre.bin.lz"); +static const u32 sGroudon_Tileset[] = INCBIN_U32("graphics/battle_transitions/groudon.4bpp.lz"); +static const u32 sGroudon_Tilemap[] = INCBIN_U32("graphics/battle_transitions/groudon.bin.lz"); +static const u16 sKyogre1_Palette[] = INCBIN_U16("graphics/battle_transitions/kyogre_pt1.gbapal"); +static const u16 sKyogre2_Palette[] = INCBIN_U16("graphics/battle_transitions/kyogre_pt2.gbapal"); +static const u16 sGroudon1_Palette[] = INCBIN_U16("graphics/battle_transitions/groudon_pt1.gbapal"); +static const u16 sGroudon2_Palette[] = INCBIN_U16("graphics/battle_transitions/groudon_pt2.gbapal"); +static const u16 sRayquaza_Palette[] = INCBIN_U16("graphics/battle_transitions/rayquaza.gbapal"); +static const u32 sRayquaza_Tileset[] = INCBIN_U32("graphics/battle_transitions/rayquaza.4bpp"); +static const u32 sRayquaza_Tilemap[] = INCBIN_U32("graphics/battle_transitions/rayquaza.bin"); +static const u16 gUnknown_085C7BE0[] = INCBIN_U16("graphics/battle_transitions/frontier_brain.gbapal"); static const u32 gUnknown_085C7C00[] = INCBIN_U32("graphics/battle_transitions/frontier_brain.4bpp.lz"); static const u32 gUnknown_085C828C[] = INCBIN_U32("graphics/battle_transitions/frontier_brain.bin.lz"); -static const u32 gUnknown_085C8578[] = INCBIN_U32("graphics/battle_transitions/frontier_squares_blanktiles.gbapal"); +static const u16 gUnknown_085C8578[] = INCBIN_U16("graphics/battle_transitions/frontier_squares_blanktiles.gbapal"); static const u32 gUnknown_085C8598[] = INCBIN_U32("graphics/battle_transitions/frontier_square_1.4bpp.lz"); static const u32 gUnknown_085C86F4[] = INCBIN_U32("graphics/battle_transitions/frontier_square_2.4bpp.lz"); static const u32 gUnknown_085C87F4[] = INCBIN_U32("graphics/battle_transitions/frontier_square_3.4bpp.lz"); @@ -319,48 +319,48 @@ static const TaskFunc sPhase1_Tasks[B_TRANSITION_COUNT] = static const TaskFunc sPhase2_Tasks[B_TRANSITION_COUNT] = { - Phase2Task_Blur, // 0 - Phase2Task_Swirl, // 1 - Phase2Task_Shuffle, // 2 - Phase2Task_BigPokeball, // 3 - Phase2Task_PokeballsTrail, // 4 - Phase2Task_Clockwise_BlackFade, // 5 - Phase2Task_Ripple, // 6 - Phase2Task_Wave, // 7 - Phase2Task_Slice, // 8 - Phase2Task_WhiteFade, // 9 - Phase2Task_GridSquares, // 10 - Phase2Task_Shards, // 11 - Phase2Task_Sidney, // 12 - Phase2Task_Phoebe, // 13 - Phase2Task_Glacia, // 14 - Phase2Task_Drake, // 15 - Phase2Task_Champion, // 16 - Phase2Task_Aqua, // 17 - Phase2Task_Magma, // 18 - Phase2Task_Regice, // 19 - Phase2Task_Registeel, // 20 - Phase2Task_Regirock, // 21 - Phase2Task_Kyogre, // 22 - Phase2Task_Groudon, // 23 - Phase2Task_Rayquaza, // 24 - Phase2Task_ShredSplit, // 25 - Phase2Task_Blackhole1, // 26 - Phase2Task_Blackhole2, // 27 - Phase2Task_RectangularSpiral, // 28 - Phase2Task_29, // 29 - Phase2Task_30, // 30 - Phase2Task_31, // 31 - Phase2Task_32, // 32 - Phase2Task_33, // 33 - Phase2Task_34, // 34 - Phase2Task_35, // 35 - Phase2Task_36, // 36 - Phase2Task_37, // 37 - Phase2Task_38, // 38 - Phase2Task_39, // 39 - Phase2Task_40, // 40 - Phase2Task_41, // 41 + [B_TRANSITION_BLUR] = Phase2Task_Blur, + [B_TRANSITION_SWIRL] = Phase2Task_Swirl, + [B_TRANSITION_SHUFFLE] = Phase2Task_Shuffle, + [B_TRANSITION_BIG_POKEBALL] = Phase2Task_BigPokeball, + [B_TRANSITION_POKEBALLS_TRAIL] = Phase2Task_PokeballsTrail, + [B_TRANSITION_CLOCKWISE_BLACKFADE] = Phase2Task_Clockwise_BlackFade, + [B_TRANSITION_RIPPLE] = Phase2Task_Ripple, + [B_TRANSITION_WAVE] = Phase2Task_Wave, + [B_TRANSITION_SLICE] = Phase2Task_Slice, + [B_TRANSITION_WHITEFADE] = Phase2Task_WhiteFade, + [B_TRANSITION_GRID_SQUARES] = Phase2Task_GridSquares, + [B_TRANSITION_SHARDS] = Phase2Task_Shards, + [B_TRANSITION_SIDNEY] = Phase2Task_Sidney, + [B_TRANSITION_PHOEBE] = Phase2Task_Phoebe, + [B_TRANSITION_GLACIA] = Phase2Task_Glacia, + [B_TRANSITION_DRAKE] = Phase2Task_Drake, + [B_TRANSITION_CHAMPION] = Phase2Task_Champion, + [B_TRANSITION_AQUA] = Phase2Task_Aqua, + [B_TRANSITION_MAGMA] = Phase2Task_Magma, + [B_TRANSITION_REGICE] = Phase2Task_Regice, + [B_TRANSITION_REGISTEEL] = Phase2Task_Registeel, + [B_TRANSITION_REGIROCK] = Phase2Task_Regirock, + [B_TRANSITION_KYOGRE] = Phase2Task_Kyogre, + [B_TRANSITION_GROUDON] = Phase2Task_Groudon, + [B_TRANSITION_RAYQUAZA] = Phase2Task_Rayquaza, + [B_TRANSITION_SHRED_SPLIT] = Phase2Task_ShredSplit, + [B_TRANSITION_BLACKHOLE1] = Phase2Task_Blackhole1, + [B_TRANSITION_BLACKHOLE2] = Phase2Task_Blackhole2, + [B_TRANSITION_RECTANGULAR_SPIRAL] = Phase2Task_RectangularSpiral, + [B_TRANSITION_29] = Phase2Task_29, + [B_TRANSITION_30] = Phase2Task_30, + [B_TRANSITION_31] = Phase2Task_31, + [B_TRANSITION_32] = Phase2Task_32, + [B_TRANSITION_33] = Phase2Task_33, + [B_TRANSITION_34] = Phase2Task_34, + [B_TRANSITION_35] = Phase2Task_35, + [B_TRANSITION_36] = Phase2Task_36, + [B_TRANSITION_37] = Phase2Task_37, + [B_TRANSITION_38] = Phase2Task_38, + [B_TRANSITION_39] = Phase2Task_39, + [B_TRANSITION_40] = Phase2Task_40, + [B_TRANSITION_41] = Phase2Task_41, }; static const TransitionStateFunc sMainTransitionPhases[] = @@ -515,42 +515,42 @@ static const TransitionStateFunc sPhase2_Mugshot_Funcs[] = static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_COUNT] = { - TRAINER_PIC_ELITE_FOUR_SIDNEY, - TRAINER_PIC_ELITE_FOUR_PHOEBE, - TRAINER_PIC_ELITE_FOUR_GLACIA, - TRAINER_PIC_ELITE_FOUR_DRAKE, - TRAINER_PIC_CHAMPION_WALLACE + [MUGSHOT_SIDNEY] = TRAINER_PIC_ELITE_FOUR_SIDNEY, + [MUGSHOT_PHOEBE] = TRAINER_PIC_ELITE_FOUR_PHOEBE, + [MUGSHOT_GLACIA] = TRAINER_PIC_ELITE_FOUR_GLACIA, + [MUGSHOT_DRAKE] = TRAINER_PIC_ELITE_FOUR_DRAKE, + [MUGSHOT_CHAMPION] = TRAINER_PIC_CHAMPION_WALLACE, }; static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_COUNT][2] = { - {0x200, 0x200}, - {0x200, 0x200}, - {0x1B0, 0x1B0}, - {0x1A0, 0x1A0}, - {0x188, 0x188}, + [MUGSHOT_SIDNEY] = {0x200, 0x200}, + [MUGSHOT_PHOEBE] = {0x200, 0x200}, + [MUGSHOT_GLACIA] = {0x1B0, 0x1B0}, + [MUGSHOT_DRAKE] = {0x1A0, 0x1A0}, + [MUGSHOT_CHAMPION] = {0x188, 0x188}, }; static const s16 sMugshotsOpponentCoords[MUGSHOTS_COUNT][2] = { - {0, 0}, - {0, 0}, - {-4, 4}, - {0, 5}, - {-8, 7}, + [MUGSHOT_SIDNEY] = {0, 0}, + [MUGSHOT_PHOEBE] = {0, 0}, + [MUGSHOT_GLACIA] = {-4, 4}, + [MUGSHOT_DRAKE] = {0, 5}, + [MUGSHOT_CHAMPION] = {-8, 7}, }; -static const TransitionSpriteCallback sUnknown_085C8C24[] = +static const TransitionSpriteCallback sTrainerPicSpriteCbs[] = { - sub_81483A8, - sub_81483AC, - sub_81483F8, - sub_814842C, - sub_81483A8, - sub_8148458, - sub_81483A8 + TrainerPicCb_Nothing, + TrainerPicCb_SetSlideOffsets, + TrainerPicCb_Slide1, + TrainerPicCb_Slide2, + TrainerPicCb_Nothing, + TrainerPicCb_Slide3, + TrainerPicCb_Nothing }; -static const s16 sUnknown_085C8C40[2] = {12, -12}; -static const s16 sUnknown_085C8C44[2] = {-1, 1}; +static const s16 sTrainerPicSlideOffsets1[2] = {12, -12}; +static const s16 sTrainerPicSlideOffsets2[2] = {-1, 1}; static const TransitionStateFunc sPhase2_Slice_Funcs[] = { @@ -712,52 +712,52 @@ static const TransitionStateFunc sPhase1_TransitionAll_Funcs[] = Phase1_TransitionAll_Func2 }; -static const struct SpriteFrameImage sSpriteImageTable_85C8E2C[] = +static const struct SpriteFrameImage sSpriteImage_Pokeball[] = { - sSpriteImage_85B98F0, 0x200 + sPokeball_Gfx, sizeof(sPokeball_Gfx) }; -static const union AnimCmd sSpriteAnim_85C8E34[] = +static const union AnimCmd sSpriteAnim_Pokeball[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_85C8E3C[] = +static const union AnimCmd *const sSpriteAnimTable_Pokeball[] = { - sSpriteAnim_85C8E34 + sSpriteAnim_Pokeball }; -static const union AffineAnimCmd sSpriteAffineAnim_85C8E40[] = +static const union AffineAnimCmd sSpriteAffineAnim_Pokeball1[] = { AFFINEANIMCMD_FRAME(0, 0, -4, 1), AFFINEANIMCMD_JUMP(0) }; -static const union AffineAnimCmd sSpriteAffineAnim_85C8E50[] = +static const union AffineAnimCmd sSpriteAffineAnim_Pokeball2[] = { AFFINEANIMCMD_FRAME(0, 0, 4, 1), AFFINEANIMCMD_JUMP(0) }; -static const union AffineAnimCmd *const sSpriteAffineAnimTable_85C8E60[] = +static const union AffineAnimCmd *const sSpriteAffineAnimTable_Pokeball[] = { - sSpriteAffineAnim_85C8E40, - sSpriteAffineAnim_85C8E50 + sSpriteAffineAnim_Pokeball1, + sSpriteAffineAnim_Pokeball2 }; -static const struct SpriteTemplate gUnknown_085C8E68 = +static const struct SpriteTemplate sSpriteTemplate_Pokeball = { .tileTag = 0xFFFF, .paletteTag = 4105, .oam = &gObjectEventBaseOam_32x32, - .anims = sSpriteAnimTable_85C8E3C, - .images = sSpriteImageTable_85C8E2C, - .affineAnims = sSpriteAffineAnimTable_85C8E60, + .anims = sSpriteAnimTable_Pokeball, + .images = sSpriteImage_Pokeball, + .affineAnims = sSpriteAffineAnimTable_Pokeball, .callback = sub_814713C }; -static const struct OamData gOamData_85C8E80 = +static const struct OamData sOam_UnusedBrendanLass = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -774,47 +774,47 @@ static const struct OamData gOamData_85C8E80 = .affineParam = 0, }; -static const struct SpriteFrameImage sSpriteImageTable_85C8E88[] = +static const struct SpriteFrameImage sImageTable_UnusedBrendan[] = { - sSpriteImage_85B9CD0, 0x800 + sUnusedBrendan_Gfx, sizeof(sUnusedBrendan_Gfx) }; -static const struct SpriteFrameImage sSpriteImageTable_85C8E90[] = +static const struct SpriteFrameImage sImageTable_UnusedLass[] = { - sSpriteImage_85BA4D0, 0x800 + sUnusedLass_Gfx, sizeof(sUnusedLass_Gfx) }; -static const union AnimCmd sSpriteAnim_85C8E98[] = +static const union AnimCmd sSpriteAnim_UnusedBrendanLass[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_85C8EA0[] = +static const union AnimCmd *const sSpriteAnimTable_UnusedBrendanLass[] = { - sSpriteAnim_85C8E98 + sSpriteAnim_UnusedBrendanLass }; -static const struct SpriteTemplate sSpriteTemplate_85C8EA4 = +static const struct SpriteTemplate sSpriteTemplate_UnusedBrendan = { .tileTag = 0xFFFF, .paletteTag = 4106, - .oam = &gOamData_85C8E80, - .anims = sSpriteAnimTable_85C8EA0, - .images = sSpriteImageTable_85C8E88, + .oam = &sOam_UnusedBrendanLass, + .anims = sSpriteAnimTable_UnusedBrendanLass, + .images = sImageTable_UnusedBrendan, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8148380 + .callback = SpriteCb_TrainerPic }; -static const struct SpriteTemplate sSpriteTemplate_85C8EBC = +static const struct SpriteTemplate sSpriteTemplate_UnusedLass = { .tileTag = 0xFFFF, .paletteTag = 4106, - .oam = &gOamData_85C8E80, - .anims = sSpriteAnimTable_85C8EA0, - .images = sSpriteImageTable_85C8E90, + .oam = &sOam_UnusedBrendanLass, + .anims = sSpriteAnimTable_UnusedBrendanLass, + .images = sImageTable_UnusedLass, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8148380 + .callback = SpriteCb_TrainerPic }; static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effects/palettes/10.gbapal"); @@ -834,17 +834,17 @@ static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may static const u16 *const sOpponentMugshotsPals[MUGSHOTS_COUNT] = { - sMugshotPal_Sidney, - sMugshotPal_Phoebe, - sMugshotPal_Glacia, - sMugshotPal_Drake, - sMugshotPal_Champion + [MUGSHOT_SIDNEY] = sMugshotPal_Sidney, + [MUGSHOT_PHOEBE] = sMugshotPal_Phoebe, + [MUGSHOT_GLACIA] = sMugshotPal_Glacia, + [MUGSHOT_DRAKE] = sMugshotPal_Drake, + [MUGSHOT_CHAMPION] = sMugshotPal_Champion }; -static const u16 *const sPlayerMugshotsPals[2] = +static const u16 *const sPlayerMugshotsPals[GENDER_COUNT] = { - sMugshotPal_Brendan, - sMugshotPal_May + [MALE] = sMugshotPal_Brendan, + [FEMALE] = sMugshotPal_May }; static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); @@ -1102,7 +1102,7 @@ static void Phase2Task_Swirl(u8 taskId) static bool8 Phase2_Swirl_Func1(struct Task *task) { - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK); sub_8149F98(gScanlineEffectRegBuffers[1], sTransitionStructPtr->field_14, 0, 2, 0, 160); @@ -1156,7 +1156,7 @@ static void Phase2Task_Shuffle(u8 taskId) static bool8 Phase2_Shuffle_Func1(struct Task *task) { - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK); @@ -1249,7 +1249,7 @@ static void sub_814669C(struct Task *task) { s32 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); task->tData1 = 16; @@ -1273,13 +1273,13 @@ static void sub_814669C(struct Task *task) static bool8 Phase2_Aqua_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; task->tFrames = 60; sub_814669C(task); - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - LZ77UnCompVram(sTeamAqua_Tileset, dst2); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + LZ77UnCompVram(sTeamAqua_Tileset, tileset); LoadPalette(sEvilTeam_Palette, 0xF0, 0x20); task->tState++; @@ -1288,13 +1288,13 @@ static bool8 Phase2_Aqua_Func1(struct Task *task) static bool8 Phase2_Magma_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; task->tFrames = 60; sub_814669C(task); - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - LZ77UnCompVram(sTeamMagma_Tileset, dst2); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + LZ77UnCompVram(sTeamMagma_Tileset, tileset); LoadPalette(sEvilTeam_Palette, 0xF0, 0x20); task->tState++; @@ -1303,13 +1303,13 @@ static bool8 Phase2_Magma_Func1(struct Task *task) static bool8 Phase2_Regi_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; task->tFrames = 60; sub_814669C(task); - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - CpuCopy16(gUnknown_085BBC14, dst2, 0x2000); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + CpuCopy16(sRegis_Tileset, tileset, 0x2000); task->tState++; return FALSE; @@ -1317,12 +1317,12 @@ static bool8 Phase2_Regi_Func1(struct Task *task) static bool8 Phase2_BigPokeball_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; sub_814669C(task); - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - CpuCopy16(sBigPokeball_Tileset, dst2, 0x580); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + CpuCopy16(sBigPokeball_Tileset, tileset, 0x580); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; @@ -1332,16 +1332,16 @@ static bool8 Phase2_BigPokeball_Func1(struct Task *task) static bool8 Phase2_BigPokeball_Func2(struct Task *task) { s16 i, j; - u16 *dst1, *dst2; + u16 *tilemap, *tileset; const u16 *BigPokeballMap; - sub_8149F58(&dst1, &dst2); + GetBg0TilesDst(&tilemap, &tileset); BigPokeballMap = sBigPokeball_Tilemap; for (i = 0; i < 20; i++) { for (j = 0; j < 30; j++, BigPokeballMap++) { - dst1[i * 32 + j] = *BigPokeballMap | 0xF000; + tilemap[i * 32 + j] = *BigPokeballMap | 0xF000; } } sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); @@ -1352,10 +1352,10 @@ static bool8 Phase2_BigPokeball_Func2(struct Task *task) static bool8 Phase2_Aqua_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LZ77UnCompVram(sTeamAqua_Tilemap, dst1); + GetBg0TilesDst(&tilemap, &tileset); + LZ77UnCompVram(sTeamAqua_Tilemap, tilemap); sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; @@ -1364,10 +1364,10 @@ static bool8 Phase2_Aqua_Func2(struct Task *task) static bool8 Phase2_Magma_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LZ77UnCompVram(sTeamMagma_Tilemap, dst1); + GetBg0TilesDst(&tilemap, &tileset); + LZ77UnCompVram(sTeamMagma_Tilemap, tilemap); sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; @@ -1376,11 +1376,11 @@ static bool8 Phase2_Magma_Func2(struct Task *task) static bool8 Phase2_Regice_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LoadPalette(gUnknown_085BC2B4, 0xF0, 0x20); - CpuCopy16(gUnknown_085BC314, dst1, 0x500); + GetBg0TilesDst(&tilemap, &tileset); + LoadPalette(sRegice_Palette, 0xF0, 0x20); + CpuCopy16(sRegice_Tilemap, tilemap, 0x500); sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; @@ -1389,11 +1389,11 @@ static bool8 Phase2_Regice_Func2(struct Task *task) static bool8 Phase2_Registeel_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LoadPalette(gUnknown_085BC2D4, 0xF0, 0x20); - CpuCopy16(gUnknown_085BCB14, dst1, 0x500); + GetBg0TilesDst(&tilemap, &tileset); + LoadPalette(sRegisteel_Palette, 0xF0, 0x20); + CpuCopy16(sRegisteel_Tilemap, tilemap, 0x500); sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; @@ -1402,11 +1402,11 @@ static bool8 Phase2_Registeel_Func2(struct Task *task) static bool8 Phase2_Regirock_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LoadPalette(gUnknown_085BC2F4, 0xF0, 0x20); - CpuCopy16(gUnknown_085BD314, dst1, 0x500); + GetBg0TilesDst(&tilemap, &tileset); + LoadPalette(sRegirock_Palette, 0xF0, 0x20); + CpuCopy16(sRegirock_Tilemap, tilemap, 0x500); sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160); task->tState++; @@ -1415,12 +1415,12 @@ static bool8 Phase2_Regirock_Func2(struct Task *task) static bool8 Phase2_Kyogre_Func3(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - LZ77UnCompVram(gUnknown_085BDB34, dst2); - LZ77UnCompVram(gUnknown_085BE1E8, dst1); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + LZ77UnCompVram(sKyogre_Tileset, tileset); + LZ77UnCompVram(sKyogre_Tilemap, tilemap); task->tState++; return FALSE; @@ -1432,7 +1432,7 @@ static bool8 Phase2_Kyogre_Func4(struct Task *task) { u16 var = task->tData1 % 30; var /= 3; - LoadPalette(gUnknown_085BEDA0 + (var * 16), 0xF0, 0x20); + LoadPalette(sKyogre1_Palette + (var * 16), 0xF0, 0x20); } if (++task->tData1 > 58) { @@ -1448,7 +1448,7 @@ static bool8 Phase2_Kyogre_Func5(struct Task *task) if (task->tData1 % 5 == 0) { s16 var = task->tData1 / 5; - LoadPalette(gUnknown_085BEEE0 + (var * 16), 0xF0, 0x20); + LoadPalette(sKyogre2_Palette + (var * 16), 0xF0, 0x20); } if (++task->tData1 > 68) { @@ -1472,7 +1472,7 @@ static bool8 Phase2_WeatherDuo_Func7(struct Task *task) if (!gPaletteFade.active) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(task->func)); } return FALSE; @@ -1575,7 +1575,7 @@ static bool8 Phase2_BigPokeball_Func6(struct Task *task) { SetVBlankCallback(NULL); DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(task->func)); } else @@ -1624,11 +1624,11 @@ static void Phase2Task_PokeballsTrail(u8 taskId) static bool8 Phase2_PokeballsTrail_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - CpuSet(sPokeballTrail_Tileset, dst2, 0x20); - CpuFill32(0, dst1, 0x800); + GetBg0TilesDst(&tilemap, &tileset); + CpuSet(sPokeballTrail_Tileset, tileset, 0x20); + CpuFill32(0, tilemap, 0x800); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; @@ -1662,7 +1662,7 @@ static bool8 Phase2_PokeballsTrail_Func3(struct Task *task) { if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) { - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_PokeballsTrail)); } return FALSE; @@ -1670,7 +1670,7 @@ static bool8 Phase2_PokeballsTrail_Func3(struct Task *task) bool8 FldEff_Pokeball(void) { - u8 spriteId = CreateSpriteAtEnd(&gUnknown_085C8E68, gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_Pokeball, gFieldEffectArguments[0], gFieldEffectArguments[1], 0); gSprites[spriteId].oam.priority = 0; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].data[0] = gFieldEffectArguments[2]; @@ -1709,7 +1709,7 @@ static void sub_814713C(struct Sprite *sprite) u16 *ptr; sprite->data[2] = posX; - var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2 + var = (((REG_BG0CNT >> 8) & 0x1F) << 11); ptr = (u16 *)(VRAM + var); SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); @@ -1733,7 +1733,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func1(struct Task *task) { u16 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 0; @@ -1900,7 +1900,7 @@ static bool8 Phase2_Clockwise_BlackFade_Func6(struct Task *task) static bool8 Phase2_Clockwise_BlackFade_Func7(struct Task *task) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_Clockwise_BlackFade)); return FALSE; } @@ -1927,7 +1927,7 @@ static bool8 Phase2_Ripple_Func1(struct Task *task) { u8 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); for (i = 0; i < 160; i++) @@ -1962,7 +1962,7 @@ static bool8 Phase2_Ripple_Func2(struct Task *task) for (i = 0; i < 160; i++, r4 += r8) { s16 var = r4 >> 8; - + var++; var--; gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3); @@ -2005,7 +2005,7 @@ static bool8 Phase2_Wave_Func1(struct Task *task) { u8 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 63; @@ -2057,7 +2057,7 @@ static bool8 Phase2_Wave_Func2(struct Task *task) static bool8 Phase2_Wave_Func3(struct Task *task) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_Wave)); return FALSE; } @@ -2113,7 +2113,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task *task) { u8 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); Mugshots_CreateOpponentPlayerSprites(task); @@ -2138,20 +2138,20 @@ static bool8 Phase2_Mugshot_Func1(struct Task *task) static bool8 Phase2_Mugshot_Func2(struct Task *task) { s16 i, j; - u16 *dst1, *dst2; - const u16 *MugshotsMap; + u16 *tilemap, *tileset; + const u16 *mugshotsMap; - MugshotsMap = sMugshotsTilemap; - sub_8149F58(&dst1, &dst2); - CpuSet(sUnknown_085B9AF0, dst2, 0xF0); + mugshotsMap = sMugshotsTilemap; + GetBg0TilesDst(&tilemap, &tileset); + CpuSet(sEliteFour_Tileset, tileset, 0xF0); LoadPalette(sOpponentMugshotsPals[task->tMugshotId], 0xF0, 0x20); LoadPalette(sPlayerMugshotsPals[gSaveBlock2Ptr->playerGender], 0xFA, 0xC); for (i = 0; i < 20; i++) { - for (j = 0; j < 32; j++, MugshotsMap++) + for (j = 0; j < 32; j++, mugshotsMap++) { - dst1[i * 32 + j] = *MugshotsMap | 0xF000; + tilemap[i * 32 + j] = *mugshotsMap | 0xF000; } } @@ -2229,9 +2229,9 @@ static bool8 Phase2_Mugshot_Func4(struct Task *task) sTransitionStructPtr->BG0HOFS_1 -= 8; sTransitionStructPtr->BG0HOFS_2 += 8; - sub_8148484(task->tOpponentSpriteId, 0); - sub_8148484(task->tPlayerSpriteId, 1); - sub_814849C(task->tOpponentSpriteId); + SetTrainerPicSlideTable(task->tOpponentSpriteId, 0); + SetTrainerPicSlideTable(task->tPlayerSpriteId, 1); + IncrementTrainerPicState(task->tOpponentSpriteId); PlaySE(SE_BT_START); @@ -2243,10 +2243,10 @@ static bool8 Phase2_Mugshot_Func5(struct Task *task) { sTransitionStructPtr->BG0HOFS_1 -= 8; sTransitionStructPtr->BG0HOFS_2 += 8; - if (sub_81484B8(task->tOpponentSpriteId)) + if (IsTrainerPicSlideDone(task->tOpponentSpriteId)) { task->tState++; - sub_814849C(task->tPlayerSpriteId); + IncrementTrainerPicState(task->tPlayerSpriteId); } return FALSE; } @@ -2255,7 +2255,7 @@ static bool8 Phase2_Mugshot_Func6(struct Task *task) { sTransitionStructPtr->BG0HOFS_1 -= 8; sTransitionStructPtr->BG0HOFS_2 += 8; - if (sub_81484B8(task->tPlayerSpriteId)) + if (IsTrainerPicSlideDone(task->tPlayerSpriteId)) { sTransitionStructPtr->VBlank_DMA = FALSE; SetVBlankCallback(NULL); @@ -2317,7 +2317,7 @@ static bool8 Phase2_Mugshot_Func7(struct Task *task) static bool8 Phase2_Mugshot_Func8(struct Task *task) { sTransitionStructPtr->VBlank_DMA = FALSE; - BlendPalettes(-1, 0x10, 0x7FFF); + BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); sTransitionStructPtr->BLDCNT = 0xFF; task->tData3 = 0; @@ -2341,7 +2341,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task *task) static bool8 Phase2_Mugshot_Func10(struct Task *task) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(task->func)); return FALSE; } @@ -2377,6 +2377,13 @@ static void HBlankCB_Phase2_Mugshots(void) REG_BG0HOFS = sTransitionStructPtr->BG0HOFS_2; } +// data fields for player/opponent sprites in mugshots +#define sState data[0] +#define sOffsetX data[1] +#define sOffsetX2 data[2] +#define sDone data[6] +#define sSlideTableId data[7] + static void Mugshots_CreateOpponentPlayerSprites(struct Task *task) { struct Sprite *opponentSprite, *playerSprite; @@ -2391,8 +2398,8 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task *task) opponentSprite = &gSprites[task->tOpponentSpriteId]; playerSprite = &gSprites[task->tPlayerSpriteId]; - opponentSprite->callback = sub_8148380; - playerSprite->callback = sub_8148380; + opponentSprite->callback = SpriteCb_TrainerPic; + playerSprite->callback = SpriteCb_TrainerPic; opponentSprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; playerSprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; @@ -2413,77 +2420,86 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task *task) SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 512, 0); } -static void sub_8148380(struct Sprite *sprite) +static void SpriteCb_TrainerPic(struct Sprite *sprite) { - while (sUnknown_085C8C24[sprite->data[0]](sprite)); + while (sTrainerPicSpriteCbs[sprite->sState](sprite)); } -static bool8 sub_81483A8(struct Sprite *sprite) +static bool8 TrainerPicCb_Nothing(struct Sprite *sprite) { return FALSE; } -static bool8 sub_81483AC(struct Sprite *sprite) +static bool8 TrainerPicCb_SetSlideOffsets(struct Sprite *sprite) { - s16 arr0[2]; - s16 arr1[2]; + s16 offfsets1[ARRAY_COUNT(sTrainerPicSlideOffsets1)]; + s16 offfsets2[ARRAY_COUNT(sTrainerPicSlideOffsets2)]; - memcpy(arr0, sUnknown_085C8C40, sizeof(sUnknown_085C8C40)); - memcpy(arr1, sUnknown_085C8C44, sizeof(sUnknown_085C8C44)); + memcpy(offfsets1, sTrainerPicSlideOffsets1, sizeof(sTrainerPicSlideOffsets1)); + memcpy(offfsets2, sTrainerPicSlideOffsets2, sizeof(sTrainerPicSlideOffsets2)); - sprite->data[0]++; - sprite->data[1] = arr0[sprite->data[7]]; - sprite->data[2] = arr1[sprite->data[7]]; + sprite->sState++; + sprite->sOffsetX = offfsets1[sprite->sSlideTableId]; + sprite->sOffsetX2 = offfsets2[sprite->sSlideTableId]; return TRUE; } -static bool8 sub_81483F8(struct Sprite *sprite) +// fast slide to around middle screen +static bool8 TrainerPicCb_Slide1(struct Sprite *sprite) { - sprite->pos1.x += sprite->data[1]; - if (sprite->data[7] && sprite->pos1.x < 133) - sprite->data[0]++; - else if (!sprite->data[7] && sprite->pos1.x > 103) - sprite->data[0]++; + sprite->pos1.x += sprite->sOffsetX; + if (sprite->sSlideTableId && sprite->pos1.x < 133) + sprite->sState++; + else if (!sprite->sSlideTableId && sprite->pos1.x > 103) + sprite->sState++; return FALSE; } -static bool8 sub_814842C(struct Sprite *sprite) +// slower but accelerating slide +static bool8 TrainerPicCb_Slide2(struct Sprite *sprite) { - sprite->data[1] += sprite->data[2]; - sprite->pos1.x += sprite->data[1]; - if (sprite->data[1] == 0) + sprite->sOffsetX += sprite->sOffsetX2; + sprite->pos1.x += sprite->sOffsetX; + if (sprite->sOffsetX == 0) { - sprite->data[0]++; - sprite->data[2] = -sprite->data[2]; - sprite->data[6] = 1; + sprite->sState++; + sprite->sOffsetX2 = -sprite->sOffsetX2; + sprite->sDone = TRUE; } return FALSE; } -static bool8 sub_8148458(struct Sprite *sprite) +// Has no practical effect +static bool8 TrainerPicCb_Slide3(struct Sprite *sprite) { - sprite->data[1] += sprite->data[2]; - sprite->pos1.x += sprite->data[1]; + sprite->sOffsetX += sprite->sOffsetX2; + sprite->pos1.x += sprite->sOffsetX; if (sprite->pos1.x < -31 || sprite->pos1.x > 271) - sprite->data[0]++; + sprite->sState++; return FALSE; } -static void sub_8148484(s16 spriteId, s16 value) +static void SetTrainerPicSlideTable(s16 spriteId, s16 arrId) { - gSprites[spriteId].data[7] = value; + gSprites[spriteId].sSlideTableId = arrId; } -static void sub_814849C(s16 spriteId) +static void IncrementTrainerPicState(s16 spriteId) { - gSprites[spriteId].data[0]++; + gSprites[spriteId].sState++; } -static s16 sub_81484B8(s16 spriteId) +static s16 IsTrainerPicSlideDone(s16 spriteId) { - return gSprites[spriteId].data[6]; + return gSprites[spriteId].sDone; } +#undef sState +#undef sOffsetX +#undef sOffsetX2 +#undef sDone +#undef sSlideTableId + static void Phase2Task_Slice(u8 taskId) { while (sPhase2_Slice_Funcs[gTasks[taskId].tState](&gTasks[taskId])); @@ -2493,7 +2509,7 @@ static bool8 Phase2_Slice_Func1(struct Task *task) { u16 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); task->tData2 = 256; @@ -2559,7 +2575,7 @@ static bool8 Phase2_Slice_Func2(struct Task *task) static bool8 Phase2_Slice_Func3(struct Task *task) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_Slice)); return FALSE; } @@ -2596,7 +2612,7 @@ static bool8 Phase2_ShredSplit_Func1(struct Task *task) { u16 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 63; @@ -2749,7 +2765,7 @@ static bool8 Phase2_ShredSplit_Func3(struct Task *task) static bool8 Phase2_ShredSplit_Func4(struct Task *task) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_ShredSplit)); return FALSE; } @@ -2768,7 +2784,7 @@ static bool8 Phase2_Blackhole_Func1(struct Task *task) { s32 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 0; @@ -2812,7 +2828,7 @@ static bool8 Phase2_Blackhole1_Func3(struct Task *task) if (task->tData1 == 0xA0) { task->tFuncState = 1; - sub_8149F84(); + FadeScreenBlack(); } else { @@ -2864,7 +2880,7 @@ static bool8 Phase2_Blackhole2_Func2(struct Task *task) if (task->tData1 == 0xA0) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(task->func)); } @@ -2897,12 +2913,12 @@ static void Phase2Task_RectangularSpiral(u8 taskId) static bool8 Phase2_RectangularSpiral_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - CpuCopy16(sShrinkingBoxTileset, dst2, 0x20); - CpuCopy16(sShrinkingBoxTileset + 0x70, dst2 + 0x20, 0x20); - CpuFill16(0xF000, dst1, 0x800); + GetBg0TilesDst(&tilemap, &tileset); + CpuCopy16(sShrinkingBoxTileset, tileset, 0x20); + CpuCopy16(sShrinkingBoxTileset + 0x70, tileset + 0x20, 0x20); + CpuFill16(0xF000, tilemap, 0x800); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tData3 = 1; @@ -2937,12 +2953,12 @@ static bool8 Phase2_RectangularSpiral_Func1(struct Task *task) static bool8 Phase2_RectangularSpiral_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; u8 i; u16 j; bool32 done = TRUE; - sub_8149F58(&dst1, &dst2); + GetBg0TilesDst(&tilemap, &tileset); for (i = 0; i < 2; i++) { @@ -2963,7 +2979,7 @@ static bool8 Phase2_RectangularSpiral_Func2(struct Task *task) var2 = var % 32; var3 = var / 32 * 32; - dst1[var3 + var2] = 0xF002; + tilemap[var3 + var2] = 0xF002; } } } @@ -2976,7 +2992,7 @@ static bool8 Phase2_RectangularSpiral_Func2(struct Task *task) static bool8 Phase2_RectangularSpiral_Func3(struct Task *task) { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(task->func)); return FALSE; } @@ -3051,12 +3067,12 @@ static void Phase2Task_Groudon(u8 taskId) static bool8 Phase2_Groudon_Func3(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - LZ77UnCompVram(gUnknown_085BE51C, dst2); - LZ77UnCompVram(gUnknown_085BEA88, dst1); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + LZ77UnCompVram(sGroudon_Tileset, tileset); + LZ77UnCompVram(sGroudon_Tilemap, tilemap); task->tState++; task->tData1 = 0; @@ -3068,7 +3084,7 @@ static bool8 Phase2_Groudon_Func4(struct Task *task) if (task->tData1 % 3 == 0) { u16 var = (task->tData1 % 30) / 3; - LoadPalette(gUnknown_085BF0A0 + (var * 16), 0xF0, 0x20); + LoadPalette(sGroudon1_Palette + (var * 16), 0xF0, 0x20); } if (++task->tData1 > 58) { @@ -3084,7 +3100,7 @@ static bool8 Phase2_Groudon_Func5(struct Task *task) if (task->tData1 % 5 == 0) { s16 var = task->tData1 / 5; - LoadPalette(gUnknown_085BF2A0 + (var * 16), 0xF0, 0x20); + LoadPalette(sGroudon2_Palette + (var * 16), 0xF0, 0x20); } if (++task->tData1 > 68) { @@ -3103,20 +3119,20 @@ static void Phase2Task_Rayquaza(u8 taskId) static bool8 Phase2_Rayquaza_Func3(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; u16 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); SetGpuReg(REG_OFFSET_BG0CNT, 0x9A08); - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - CpuCopy16(gUnknown_085BF6A0, dst2, 0x2000); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + CpuCopy16(sRayquaza_Tileset, tileset, 0x2000); sTransitionStructPtr->field_20 = 0; task->tState++; - LoadPalette(gUnknown_085BF4A0 + 0x50, 0xF0, 0x20); + LoadPalette(sRayquaza_Palette + 0x50, 0xF0, 0x20); for (i = 0; i < 160; i++) { @@ -3130,10 +3146,10 @@ static bool8 Phase2_Rayquaza_Func3(struct Task *task) static bool8 Phase2_Rayquaza_Func4(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - CpuCopy16(gUnknown_085C6BE0, dst1, 0x1000); + GetBg0TilesDst(&tilemap, &tileset); + CpuCopy16(sRayquaza_Tilemap, tilemap, 0x1000); task->tState++; return FALSE; } @@ -3143,7 +3159,7 @@ static bool8 Phase2_Rayquaza_Func5(struct Task *task) if ((task->tData1 % 4) == 0) { u16 value = task->tData1 / 4; - const u16 *palPtr = &gUnknown_085BF4A0[(value + 5) * 16]; + const u16 *palPtr = &sRayquaza_Palette[(value + 5) * 16]; LoadPalette(palPtr, 0xF0, 0x20); } if (++task->tData1 > 40) @@ -3192,7 +3208,7 @@ static bool8 Phase2_Rayquaza_Func9(struct Task *task) if ((task->tData1 % 3) == 0) { u16 value = task->tData1 / 3; - const u16 *palPtr = &gUnknown_085BF4A0[(value + 0) * 16]; + const u16 *palPtr = &sRayquaza_Palette[(value + 0) * 16]; LoadPalette(palPtr, 0xF0, 0x20); } if (++task->tData1 >= 40) @@ -3245,7 +3261,7 @@ static bool8 Phase2_WhiteFade_Func1(struct Task *task) { u16 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); sTransitionStructPtr->BLDCNT = 0xBF; @@ -3322,7 +3338,7 @@ static bool8 Phase2_WhiteFade_Func5(struct Task *task) { if (++sTransitionStructPtr->BLDY > 16) { - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_WhiteFade)); } return FALSE; @@ -3407,11 +3423,11 @@ static void Phase2Task_GridSquares(u8 taskId) static bool8 Phase2_GridSquares_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - CpuSet(sShrinkingBoxTileset, dst2, 0x10); - CpuFill16(0xF000, dst1, 0x800); + GetBg0TilesDst(&tilemap, &tileset); + CpuSet(sShrinkingBoxTileset, tileset, 0x10); + CpuFill16(0xF000, tilemap, 0x800); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; @@ -3420,14 +3436,14 @@ static bool8 Phase2_GridSquares_Func1(struct Task *task) static bool8 Phase2_GridSquares_Func2(struct Task *task) { - u16* dst1; + u16* tileset; if (task->tData1 == 0) { - sub_8149F40(&dst1); + GetBg0TilemapDst(&tileset); task->tData1 = 3; task->tData2++; - CpuSet(sShrinkingBoxTileset + (task->tData2 * 8), dst1, 0x10); + CpuSet(sShrinkingBoxTileset + (task->tData2 * 8), tileset, 0x10); if (task->tData2 > 0xD) { task->tState++; @@ -3443,7 +3459,7 @@ static bool8 Phase2_GridSquares_Func3(struct Task *task) { if (--task->tData1 == 0) { - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_GridSquares)); } return FALSE; @@ -3458,7 +3474,7 @@ static bool8 Phase2_Shards_Func1(struct Task *task) { u16 i; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); sTransitionStructPtr->WININ = 0x3F; @@ -3540,7 +3556,7 @@ static bool8 Phase2_Shards_Func4(struct Task *task) else { DmaStop(0); - sub_8149F84(); + FadeScreenBlack(); DestroyTask(FindTaskIdByFunc(Phase2Task_Shards)); return FALSE; } @@ -3553,8 +3569,8 @@ static bool8 Phase2_Shards_Func5(struct Task *task) task->tState = 1; return TRUE; } - else - return FALSE; + + return FALSE; } static void VBlankCB_Phase2_Shards(void) @@ -3665,7 +3681,7 @@ static bool8 Phase1_TransitionAll_Func2(struct Task *task) #undef tData6 #undef tData7 -static void sub_8149F08(void) +static void InitTransitionStructVars(void) { memset(sTransitionStructPtr, 0, sizeof(*sTransitionStructPtr)); sub_8089C08(&sTransitionStructPtr->field_14, &sTransitionStructPtr->field_16); @@ -3678,37 +3694,28 @@ static void VBlankCB_BattleTransition(void) TransferPlttBuffer(); } -static void sub_8149F40(u16 **a0) +static void GetBg0TilemapDst(u16 **tileset) { - u16 reg, *vram; - - reg = REG_BG0CNT >> 2; - reg <<= 0xE; - vram = (u16*)(VRAM + reg); - - *a0 = vram; + u16 charBase = REG_BG0CNT >> 2; + charBase <<= 0xE; + *tileset = (u16*)(VRAM + charBase); } -void sub_8149F58(u16 **a0, u16 **a1) +void GetBg0TilesDst(u16 **tilemap, u16 **tileset) { - u16 reg0, reg1, *vram0, *vram1; - - reg0 = REG_BG0CNT >> 8; - reg1 = REG_BG0CNT >> 2; - - reg0 <<= 0xB; - reg1 <<= 0xE; + u16 screenBase = REG_BG0CNT >> 8; + u16 charBase = REG_BG0CNT >> 2; - vram0 = (u16*)(VRAM + reg0); - *a0 = vram0; + screenBase <<= 0xB; + charBase <<= 0xE; - vram1 = (u16*)(VRAM + reg1); - *a1 = vram1; + *tilemap = (u16*)(VRAM + screenBase); + *tileset = (u16*)(VRAM + charBase); } -static void sub_8149F84(void) +static void FadeScreenBlack(void) { - BlendPalettes(-1, 0x10, 0); + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); } static void sub_8149F98(s16 *array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize) @@ -3851,12 +3858,12 @@ static bool8 sub_814A228(s16 *data, bool8 a1, bool8 a2) static bool8 Phase2_29_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; sub_814669C(task); - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - LZ77UnCompVram(gUnknown_085C7C00, dst2); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + LZ77UnCompVram(gUnknown_085C7C00, tileset); LoadPalette(gUnknown_085C7BE0, 0xF0, 0x20); task->tState++; @@ -3865,10 +3872,10 @@ static bool8 Phase2_29_Func1(struct Task *task) static bool8 Phase2_29_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LZ77UnCompVram(gUnknown_085C828C, dst1); + GetBg0TilesDst(&tilemap, &tileset); + LZ77UnCompVram(gUnknown_085C828C, tilemap); sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 0x84, task->tData5, 160); task->tState++; @@ -3887,9 +3894,9 @@ static void Phase2Task_30(u8 taskId) static bool8 Phase2_30_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F08(); + InitTransitionStructVars(); ScanlineEffect_Clear(); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); task->tData2 = 0x2000; @@ -3901,9 +3908,9 @@ static bool8 Phase2_30_Func1(struct Task *task) sTransitionStructPtr->BLDALPHA = (task->tData6 << 8) | (task->tData5); REG_BLDCNT = sTransitionStructPtr->BLDCNT; REG_BLDALPHA = sTransitionStructPtr->BLDALPHA; - sub_8149F58(&dst1, &dst2); - CpuFill16(0, dst1, 0x800); - LZ77UnCompVram(gUnknown_085C7C00, dst2); + GetBg0TilesDst(&tilemap, &tileset); + CpuFill16(0, tilemap, 0x800); + LZ77UnCompVram(gUnknown_085C7C00, tileset); LoadPalette(gUnknown_085C7BE0, 0xF0, 0x20); sTransitionStructPtr->field_16 = 0; @@ -3913,10 +3920,10 @@ static bool8 Phase2_30_Func1(struct Task *task) static bool8 Phase2_30_Func2(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LZ77UnCompVram(gUnknown_085C828C, dst1); + GetBg0TilesDst(&tilemap, &tileset); + LZ77UnCompVram(gUnknown_085C828C, tilemap); task->tState++; return TRUE; @@ -4024,10 +4031,10 @@ static void Phase2Task_32(u8 taskId) static bool8 Phase2_31_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LZ77UnCompVram(gUnknown_085C8598, dst2); + GetBg0TilesDst(&tilemap, &tileset); + LZ77UnCompVram(gUnknown_085C8598, tileset); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect(0, 1, 0, 0, 1, 0x20, 0xF); @@ -4065,9 +4072,9 @@ static bool8 Phase2_31_Func2(struct Task *task) static bool8 Phase2_31_Func3(struct Task *task) { u8 i; - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); + GetBg0TilesDst(&tilemap, &tileset); if (task->tData6++ >= task->tData7) { switch (task->tData5) @@ -4081,13 +4088,13 @@ static bool8 Phase2_31_Func3(struct Task *task) break; case 1: BlendPalettes(0xFFFF7FFF, 0x10, 0); - LZ77UnCompVram(gUnknown_085C86F4, dst2); + LZ77UnCompVram(gUnknown_085C86F4, tileset); break; case 2: - LZ77UnCompVram(gUnknown_085C87F4, dst2); + LZ77UnCompVram(gUnknown_085C87F4, tileset); break; case 3: - LZ77UnCompVram(gUnknown_085C88A4, dst2); + LZ77UnCompVram(gUnknown_085C88A4, tileset); break; default: FillBgTilemapBufferRect_Palette0(0, 1, 0, 0, 0x20, 0x20); @@ -4105,10 +4112,10 @@ static bool8 Phase2_31_Func3(struct Task *task) static bool8 Phase2_33_Func1(struct Task *task) { - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LZ77UnCompVram(gUnknown_085C8598, dst2); + GetBg0TilesDst(&tilemap, &tileset); + LZ77UnCompVram(gUnknown_085C8598, tileset); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect(0, 1, 0, 0, 1, 0x20, 0xF); @@ -4221,10 +4228,10 @@ static void sub_814ABE4(u8 taskId) static bool8 Phase2_32_Func1(struct Task *task) { u8 taskId = 0; - u16 *dst1, *dst2; + u16 *tilemap, *tileset; - sub_8149F58(&dst1, &dst2); - LZ77UnCompVram(gUnknown_085C8598, dst2); + GetBg0TilesDst(&tilemap, &tileset); + LZ77UnCompVram(gUnknown_085C8598, tileset); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); CopyBgTilemapBufferToVram(0); LoadPalette(gUnknown_085C8578, 0xF0, 0x20); diff --git a/src/field_message_box.c b/src/field_message_box.c index da5042221..1b760c7df 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -5,128 +5,136 @@ #include "task.h" #include "text.h" #include "match_call.h" +#include "field_message_box.h" static EWRAM_DATA u8 sFieldMessageBoxMode = 0; -static void textbox_fdecode_auto_and_task_add(u8*, bool32); -static void textbox_auto_and_task_add(void); +static void ExpandStringAndStartDrawFieldMessage(const u8*, bool32); +static void StartDrawFieldMessage(void); void InitFieldMessageBox(void) { - sFieldMessageBoxMode = 0; - gTextFlags.canABSpeedUpPrint = 0; - gTextFlags.useAlternateDownArrow = 0; - gTextFlags.autoScroll = 0; - gTextFlags.forceMidTextSpeed = 0; + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; + gTextFlags.canABSpeedUpPrint = FALSE; + gTextFlags.useAlternateDownArrow = FALSE; + gTextFlags.autoScroll = FALSE; + gTextFlags.forceMidTextSpeed = FALSE; } -static void sub_8098154(u8 taskId) +#define tState data[0] + +static void Task_DrawFieldMessage(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: LoadMessageBoxAndBorderGfx(); - task->data[0]++; + task->tState++; break; case 1: DrawDialogueFrame(0, 1); - task->data[0]++; + task->tState++; break; case 2: - if (RunTextPrintersAndIsPrinter0Active() != 1) + if (RunTextPrintersAndIsPrinter0Active() != TRUE) { - sFieldMessageBoxMode = 0; + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; DestroyTask(taskId); } } } -static void task_add_textbox(void) +#undef tState + +static void CreateTask_DrawFieldMessage(void) { - CreateTask(sub_8098154, 0x50); + CreateTask(Task_DrawFieldMessage, 0x50); } -static void task_del_textbox(void) +static void DestroyTask_DrawFieldMessage(void) { - u8 taskId = FindTaskIdByFunc(sub_8098154); + u8 taskId = FindTaskIdByFunc(Task_DrawFieldMessage); if (taskId != 0xFF) DestroyTask(taskId); } -bool8 ShowFieldMessage(u8 *str) +bool8 ShowFieldMessage(const u8 *str) { - if (sFieldMessageBoxMode != 0) + if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN) return FALSE; - textbox_fdecode_auto_and_task_add(str, 1); - sFieldMessageBoxMode = 2; + ExpandStringAndStartDrawFieldMessage(str, TRUE); + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL; return TRUE; } -void sub_8098214(u8 taskId) +static void Task_HidePokenavMessageWhenDone(u8 taskId) { if (!IsMatchCallTaskActive()) { - sFieldMessageBoxMode = 0; + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; DestroyTask(taskId); } } -bool8 sub_8098238(u8 *str) +bool8 ShowPokenavFieldMessage(const u8 *str) { - if (sFieldMessageBoxMode != 0) + if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN) return FALSE; StringExpandPlaceholders(gStringVar4, str); - CreateTask(sub_8098214, 0); + CreateTask(Task_HidePokenavMessageWhenDone, 0); StartMatchCallFromScript(str); sFieldMessageBoxMode = 2; return TRUE; } -bool8 ShowFieldAutoScrollMessage(u8 *str) +bool8 ShowFieldAutoScrollMessage(const u8 *str) { - if (sFieldMessageBoxMode != 0) + if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN) return FALSE; - sFieldMessageBoxMode = 3; - textbox_fdecode_auto_and_task_add(str, 0); + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL; + ExpandStringAndStartDrawFieldMessage(str, FALSE); return TRUE; } -bool8 sub_80982A0(u8 *str) +// Unused +static bool8 ForceShowFieldAutoScrollMessage(const u8 *str) { - sFieldMessageBoxMode = 3; - textbox_fdecode_auto_and_task_add(str, 1); + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL; + ExpandStringAndStartDrawFieldMessage(str, TRUE); return TRUE; } -bool8 sub_80982B8(void) +// Same as ShowFieldMessage, but instead of accepting a +// string arg it just prints whats already in gStringVar4 +bool8 ShowFieldMessageFromBuffer(void) { - if (sFieldMessageBoxMode != 0) + if (sFieldMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN) return FALSE; - sFieldMessageBoxMode = 2; - textbox_auto_and_task_add(); + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL; + StartDrawFieldMessage(); return TRUE; } -static void textbox_fdecode_auto_and_task_add(u8* str, bool32 allowSkippingDelayWithButtonPress) +static void ExpandStringAndStartDrawFieldMessage(const u8* str, bool32 allowSkippingDelayWithButtonPress) { StringExpandPlaceholders(gStringVar4, str); AddTextPrinterForMessage(allowSkippingDelayWithButtonPress); - task_add_textbox(); + CreateTask_DrawFieldMessage(); } -static void textbox_auto_and_task_add(void) +static void StartDrawFieldMessage(void) { AddTextPrinterForMessage(TRUE); - task_add_textbox(); + CreateTask_DrawFieldMessage(); } void HideFieldMessageBox(void) { - task_del_textbox(); + DestroyTask_DrawFieldMessage(); ClearDialogWindowAndFrame(0, 1); - sFieldMessageBoxMode = 0; + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } u8 GetFieldMessageBoxMode(void) @@ -136,20 +144,21 @@ u8 GetFieldMessageBoxMode(void) bool8 IsFieldMessageBoxHidden(void) { - if (sFieldMessageBoxMode == 0) + if (sFieldMessageBoxMode == FIELD_MESSAGE_BOX_HIDDEN) return TRUE; return FALSE; } -void sub_8098358(void) +// Unused +static void ReplaceFieldMessageWithFrame(void) { - task_del_textbox(); + DestroyTask_DrawFieldMessage(); DrawStdWindowFrame(0, 1); - sFieldMessageBoxMode = 0; + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } void StopFieldMessage(void) { - task_del_textbox(); - sFieldMessageBoxMode = 0; + DestroyTask_DrawFieldMessage(); + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } diff --git a/src/match_call.c b/src/match_call.c index 9d8523576..033276684 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -1098,7 +1098,7 @@ bool32 TryStartMatchCall(void) return FALSE; } -void StartMatchCallFromScript(u8 *message) +void StartMatchCallFromScript(const u8 *message) { gMatchCallState.triggeredFromScript = 1; StartMatchCall(); diff --git a/src/play_time.c b/src/play_time.c index 27a57f28b..97f4ac22f 100644 --- a/src/play_time.c +++ b/src/play_time.c @@ -35,31 +35,31 @@ void PlayTimeCounter_Stop(void) void PlayTimeCounter_Update(void) { - if (sPlayTimeCounterState == RUNNING) - { - gSaveBlock2Ptr->playTimeVBlanks++; - - if (gSaveBlock2Ptr->playTimeVBlanks > 59) - { - gSaveBlock2Ptr->playTimeVBlanks = 0; - gSaveBlock2Ptr->playTimeSeconds++; - - if (gSaveBlock2Ptr->playTimeSeconds > 59) - { - gSaveBlock2Ptr->playTimeSeconds = 0; - gSaveBlock2Ptr->playTimeMinutes++; - - if (gSaveBlock2Ptr->playTimeMinutes > 59) - { - gSaveBlock2Ptr->playTimeMinutes = 0; - gSaveBlock2Ptr->playTimeHours++; - - if (gSaveBlock2Ptr->playTimeHours > 999) - PlayTimeCounter_SetToMax(); - } - } - } - } + if (sPlayTimeCounterState != RUNNING) + return; + + gSaveBlock2Ptr->playTimeVBlanks++; + + if (gSaveBlock2Ptr->playTimeVBlanks < 60) + return; + + gSaveBlock2Ptr->playTimeVBlanks = 0; + gSaveBlock2Ptr->playTimeSeconds++; + + if (gSaveBlock2Ptr->playTimeSeconds < 60) + return; + + gSaveBlock2Ptr->playTimeSeconds = 0; + gSaveBlock2Ptr->playTimeMinutes++; + + if (gSaveBlock2Ptr->playTimeMinutes < 60) + return; + + gSaveBlock2Ptr->playTimeMinutes = 0; + gSaveBlock2Ptr->playTimeHours++; + + if (gSaveBlock2Ptr->playTimeHours > 999) + PlayTimeCounter_SetToMax(); } void PlayTimeCounter_SetToMax(void) diff --git a/src/scrcmd.c b/src/scrcmd.c index d7d52b349..d7c18fb38 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1282,7 +1282,7 @@ bool8 ScrCmd_pokenavcall(struct ScriptContext *ctx) if (msg == NULL) msg = (const u8 *)ctx->data[0]; - sub_8098238(msg); + ShowPokenavFieldMessage(msg); return FALSE; } diff --git a/src/shop.c b/src/shop.c index a4d1939cb..73b1cd4e2 100755 --- a/src/shop.c +++ b/src/shop.c @@ -796,15 +796,15 @@ static void BuyMenuCollectObjectEventData(void) u8 r8 = 0; GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); - for (y = 0; y < 16; y++) - gShopDataPtr->viewportObjects[y][OBJ_EVENT_ID] = 16; + for (y = 0; y < OBJECT_EVENTS_COUNT; y++) + gShopDataPtr->viewportObjects[y][OBJ_EVENT_ID] = OBJECT_EVENTS_COUNT; for (y = 0; y < 5; y++) { for (x = 0; x < 7; x++) { u8 objEventId = GetObjectEventIdByXY(facingX - 4 + x, facingY - 2 + y); - if (objEventId != 16) + if (objEventId != OBJECT_EVENTS_COUNT) { gShopDataPtr->viewportObjects[r8][OBJ_EVENT_ID] = objEventId; gShopDataPtr->viewportObjects[r8][X_COORD] = x; @@ -839,9 +839,9 @@ static void BuyMenuDrawObjectEvents(void) u8 spriteId; const struct ObjectEventGraphicsInfo *graphicsInfo; - for (i = 0; i < 16; i++) // max objects? + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { - if (gShopDataPtr->viewportObjects[i][OBJ_EVENT_ID] == 16) + if (gShopDataPtr->viewportObjects[i][OBJ_EVENT_ID] == OBJECT_EVENTS_COUNT) continue; graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[gShopDataPtr->viewportObjects[i][OBJ_EVENT_ID]].graphicsId); diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 87866b02e..d6cb49837 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -904,7 +904,7 @@ const u8 *GetTrainerHillTrainerScript(void) static void ShowTrainerHillPostBattleText(void) { CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_AFTER, gSpecialVar_LastTalked); - sub_80982B8(); + ShowFieldMessageFromBuffer(); } static void CreateNPCTrainerHillParty(u16 trainerId, u8 firstMonId) @@ -3800,25 +3800,28 @@ static s8 sub_80F06D0(TVShow *tvShows) return -1; } -#ifdef NONMATCHING static void sub_80F0708(void) // FIXME: register allocation shenanigans { u16 i; - TVShow *show; + u16 j; for (i = 0; i < LAST_TVSHOW_IDX; i ++) { switch (gSaveBlock1Ptr->tvShows[i].common.kind) { case TVSHOW_CONTEST_LIVE_UPDATES: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.species, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies, i); + j = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.species; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies; + sub_80F0B24(j, i); break; case TVSHOW_3_CHEERS_FOR_POKEBLOCKS: break; case TVSHOW_BATTLE_UPDATE: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesPlayer, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesOpponent, i); + j = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesPlayer; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesOpponent; + sub_80F0B24(j, i); break; case TVSHOW_FAN_CLUB_SPECIAL: break; @@ -3828,43 +3831,57 @@ static void sub_80F0708(void) // FIXME: register allocation shenanigans case TVSHOW_OFF_AIR: break; case TVSHOW_FAN_CLUB_LETTER: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species, i); + j = (&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species; + sub_80F0B24(j, i); break; case TVSHOW_RECENT_HAPPENINGS: break; case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species, i); + j = (&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species; + sub_80F0B24(j, i); break; case TVSHOW_UNKN_SHOWTYPE_04: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06, i); + j = (&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06; + sub_80F0B24(j, i); break; case TVSHOW_NAME_RATER_SHOW: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies, i); + j = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies; + sub_80F0B24(j, i); break; case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species, i); + j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species; + sub_80F0B24(j, i); break; case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies, i); + j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies; + sub_80F0B24(j, i); break; case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species, i); + j = (&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species; + sub_80F0B24(j, i); break; case TVSHOW_SMART_SHOPPER: break; case TVSHOW_POKEMON_TODAY_FAILED: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2, i); + j = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2; + sub_80F0B24(j, i); break; case TVSHOW_FISHING_ADVICE: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species, i); + j = (&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species; + sub_80F0B24(j, i); break; case TVSHOW_WORLD_OF_MASTERS: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke, i); + j = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke; + sub_80F0B24(j, i); break; case TVSHOW_TODAYS_RIVAL_TRAINER: @@ -3876,37 +3893,48 @@ static void sub_80F0708(void) // FIXME: register allocation shenanigans case TVSHOW_FIND_THAT_GAMER: break; case TVSHOW_BREAKING_NEWS: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species, i); + j = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species; + sub_80F0B24(j, i); break; case TVSHOW_SECRET_BASE_VISIT: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species, i); + j = (&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species; + sub_80F0B24(j, i); break; case TVSHOW_LOTTO_WINNER: break; case TVSHOW_BATTLE_SEMINAR: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies, i); + j = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies; + sub_80F0B24(j, i); break; case TVSHOW_TRAINER_FAN_CLUB: break; case TVSHOW_CUTIES: break; case TVSHOW_FRONTIER: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species1, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species2, i); - switch ((&gSaveBlock1Ptr->tvShows[i])->frontier.facility) + j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species1; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species2; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->frontier.facility; + switch (j) { case 3: case 4: break; case 1: case 5 ... 13: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i); + j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3; + sub_80F0B24(j, i); break; case 2: - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i); - sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species4, i); + j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3; + sub_80F0B24(j, i); + j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species4; + sub_80F0B24(j, i); break; } break; @@ -3926,444 +3954,6 @@ static void sub_80F0708(void) // FIXME: register allocation shenanigans } } } -#else -NAKED static void sub_80F0708(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r9\n" - "\tmov r6, r8\n" - "\tpush {r6,r7}\n" - "\tsub sp, 0x8\n" - "\tmovs r0, 0\n" - "\tmov r9, r0\n" - "_080F0716:\n" - "\tldr r3, =gSaveBlock1Ptr\n" - "\tldr r1, [r3]\n" - "\tmov r4, r9\n" - "\tlsls r2, r4, 3\n" - "\tadds r0, r2, r4\n" - "\tlsls r0, 2\n" - "\tadds r1, r0\n" - "\tldr r0, =0x000027cc\n" - "\tadds r1, r0\n" - "\tldrb r0, [r1]\n" - "\tadds r7, r2, 0\n" - "\tcmp r0, 0x29\n" - "\tbls _080F0732\n" - "\tb _080F0AD8\n" - "_080F0732:\n" - "\tlsls r0, 2\n" - "\tldr r1, =_080F0748\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.pool\n" - "\t.align 2, 0\n" - "_080F0748:\n" - "\t.4byte _080F0AE2_break @ TVSHOW_OFF_AIR\n" - "\t.4byte _080F0848 @ TVSHOW_FAN_CLUB_LETTER\n" - "\t.4byte _080F0AE2_break @ TVSHOW_RECENT_HAPPENINGS\n" - "\t.4byte _080F0860 @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n" - "\t.4byte _080F0878 @ TVSHOW_UNKN_SHOWTYPE_04\n" - "\t.4byte _080F0890 @ TVSHOW_NAME_RATER_SHOW\n" - "\t.4byte _080F08BC @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n" - "\t.4byte _080F08D4 @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n" - "\t.4byte _080F07F0 @ TVSHOW_CONTEST_LIVE_UPDATES\n" - "\t.4byte _080F0AE2_break @ TVSHOW_3_CHEERS_FOR_POKEBLOCKS\n" - "\t.4byte _080F081C @ TVSHOW_BATTLE_UPDATE\n" - "\t.4byte _080F0AE2_break @ TVSHOW_FAN_CLUB_SPECIAL\n" - "\t.4byte _080F0AE2_break @ TVSHOW_CONTEST_LIVE_UPDATES_2\n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0900 @ TVSHOW_POKEMON_TODAY_CAUGHT\n" - "\t.4byte _080F0AE2_break @ TVSHOW_SMART_SHOPPER\n" - "\t.4byte _080F0918 @ TVSHOW_POKEMON_TODAY_FAILED\n" - "\t.4byte _080F0944 @ TVSHOW_FISHING_ADVICE\n" - "\t.4byte _080F095C @ TVSHOW_WORLD_OF_MASTERS\n" - "\t.4byte _080F0AE2_break @ TVSHOW_TODAYS_RIVAL_TRAINER\n" - "\t.4byte _080F0AE2_break @ TVSHOW_TREND_WATCHER\n" - "\t.4byte _080F0AE2_break @ TVSHOW_TREASURE_INVESTIGATORS\n" - "\t.4byte _080F0AE2_break @ TVSHOW_FIND_THAT_GAMER\n" - "\t.4byte _080F0974 @ TVSHOW_BREAKING_NEWS\n" - "\t.4byte _080F09A0 @ TVSHOW_SECRET_BASE_VISIT\n" - "\t.4byte _080F0AE2_break @ TVSHOW_LOTTO_WINNER\n" - "\t.4byte _080F09C0 @ TVSHOW_BATTLE_SEMINAR\n" - "\t.4byte _080F0AE2_break @ TVSHOW_TRAINER_FAN_CLUB\n" - "\t.4byte _080F0AE2_break @ TVSHOW_CUTIES\n" - "\t.4byte _080F09F4 @ TVSHOW_FRONTIER\n" - "\t.4byte _080F0AE2_break @ TVSHOW_NUMBER_ONE\n" - "\t.4byte _080F0AE2_break @ TVSHOW_SECRET_BASE_SECRETS\n" - "\t.4byte _080F0AE2_break @ TVSHOW_SAFARI_FAN_CLUB\n" - "\t.4byte _080F0AD8 @ \n" - "\t.4byte _080F0AE2_break @ TVSHOW_MASS_OUTBREAK\n" - "_080F07F0:\n" - "\tldr r0, [r3]\n" - "\tmov r1, r9\n" - "\tadds r4, r7, r1\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x12]\n" - "\tlsls r5, r1, 24\n" - "\tlsrs r5, 24\n" - "\tadds r1, r5, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r6\n" - "\tldrh r0, [r4, 0x2]\n" - "\tb _080F09E6\n" - "\t.pool\n" - "_080F081C:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r4, r7, r2\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x16]\n" - "\tlsls r5, r2, 24\n" - "\tlsrs r5, 24\n" - "\tadds r1, r5, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r6\n" - "\tldrh r0, [r4, 0x2]\n" - "\tb _080F09E6\n" - "\t.pool\n" - "_080F0848:\n" - "\tldr r0, [r3]\n" - "\tmov r4, r9\n" - "\tadds r1, r7, r4\n" - "\tlsls r1, 2\n" - "\tadds r1, r0\n" - "\tldr r0, =0x000027cc\n" - "\tadds r1, r0\n" - "\tldrh r0, [r1, 0x2]\n" - "\tb _080F09B0\n" - "\t.pool\n" - "_080F0860:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r1, r7, r2\n" - "\tlsls r1, 2\n" - "\tadds r1, r0\n" - "\tldr r4, =0x000027cc\n" - "\tadds r1, r4\n" - "\tldrh r0, [r1, 0x2]\n" - "\tlsls r1, r2, 24\n" - "\tb _080F09B2\n" - "\t.pool\n" - "_080F0878:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r1, r7, r2\n" - "\tlsls r1, 2\n" - "\tadds r1, r0\n" - "\tldr r4, =0x000027cc\n" - "\tadds r1, r4\n" - "\tldrh r0, [r1, 0x6]\n" - "\tlsls r1, r2, 24\n" - "\tb _080F09B2\n" - "\t.pool\n" - "_080F0890:\n" - "\tldr r0, [r3]\n" - "\tmov r1, r9\n" - "\tadds r4, r7, r1\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x2]\n" - "\tlsls r5, r1, 24\n" - "\tlsrs r5, 24\n" - "\tadds r1, r5, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r6\n" - "\tldrh r0, [r4, 0x1C]\n" - "\tb _080F09E6\n" - "\t.pool\n" - "_080F08BC:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r1, r7, r2\n" - "\tlsls r1, 2\n" - "\tadds r1, r0\n" - "\tldr r4, =0x000027cc\n" - "\tadds r1, r4\n" - "\tldrh r0, [r1, 0x2]\n" - "\tlsls r1, r2, 24\n" - "\tb _080F09B2\n" - "\t.pool\n" - "_080F08D4:\n" - "\tldr r0, [r3]\n" - "\tmov r1, r9\n" - "\tadds r4, r7, r1\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0xA]\n" - "\tlsls r5, r1, 24\n" - "\tlsrs r5, 24\n" - "\tadds r1, r5, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r6\n" - "\tldrh r0, [r4, 0x14]\n" - "\tb _080F09E6\n" - "\t.pool\n" - "_080F0900:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r1, r7, r2\n" - "\tlsls r1, 2\n" - "\tadds r1, r0\n" - "\tldr r4, =0x000027cc\n" - "\tadds r1, r4\n" - "\tldrh r0, [r1, 0x10]\n" - "\tlsls r1, r2, 24\n" - "\tb _080F09B2\n" - "\t.pool\n" - "_080F0918:\n" - "\tldr r0, [r3]\n" - "\tmov r1, r9\n" - "\tadds r4, r7, r1\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0xC]\n" - "\tlsls r5, r1, 24\n" - "\tlsrs r5, 24\n" - "\tadds r1, r5, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r6\n" - "\tldrh r0, [r4, 0xE]\n" - "\tb _080F09E6\n" - "\t.pool\n" - "_080F0944:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r1, r7, r2\n" - "\tlsls r1, 2\n" - "\tadds r1, r0\n" - "\tldr r4, =0x000027cc\n" - "\tadds r1, r4\n" - "\tldrh r0, [r1, 0x4]\n" - "\tlsls r1, r2, 24\n" - "\tb _080F09B2\n" - "\t.pool\n" - "_080F095C:\n" - "\tldr r0, [r3]\n" - "\tmov r1, r9\n" - "\tadds r4, r7, r1\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x8]\n" - "\tb _080F09D0\n" - "\t.pool\n" - "_080F0974:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r4, r7, r2\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x2]\n" - "\tlsls r5, r2, 24\n" - "\tlsrs r5, 24\n" - "\tadds r1, r5, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r6\n" - "\tldrh r0, [r4, 0xA]\n" - "\tb _080F09E6\n" - "\t.pool\n" - "_080F09A0:\n" - "\tldr r0, [r3]\n" - "\tmov r4, r9\n" - "\tadds r1, r7, r4\n" - "\tlsls r1, 2\n" - "\tadds r1, r0\n" - "\tldr r0, =0x000027cc\n" - "\tadds r1, r0\n" - "\tldrh r0, [r1, 0x8]\n" - "_080F09B0:\n" - "\tlsls r1, r4, 24\n" - "_080F09B2:\n" - "\tlsrs r1, 24\n" - "\tbl sub_80F0B24\n" - "\tb _080F0AE2_break\n" - "\t.pool\n" - "_080F09C0:\n" - "\tldr r0, [r3]\n" - "\tmov r1, r9\n" - "\tadds r4, r7, r1\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r6, =0x000027cc\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x6]\n" - "_080F09D0:\n" - "\tlsls r5, r1, 24\n" - "\tlsrs r5, 24\n" - "\tadds r1, r5, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r6\n" - "\tldrh r0, [r4, 0x4]\n" - "_080F09E6:\n" - "\tadds r1, r5, 0\n" - "\tbl sub_80F0B24\n" - "\tb _080F0AE2_break\n" - "\t.pool\n" - "_080F09F4:\n" - "\tldr r0, [r3]\n" - "\tmov r2, r9\n" - "\tadds r4, r7, r2\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r5, =0x000027cc\n" - "\tadds r0, r5\n" - "\tldrh r0, [r0, 0x4]\n" - "\tlsls r2, 24\n" - "\tmov r8, r2\n" - "\tlsrs r6, r2, 24\n" - "\tadds r1, r6, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r0, r4, r0\n" - "\tadds r0, r5\n" - "\tldrh r0, [r0, 0x6]\n" - "\tadds r1, r6, 0\n" - "\tbl sub_80F0B24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r0, [r3]\n" - "\tadds r4, r0\n" - "\tadds r4, r5\n" - "\tldrb r0, [r4, 0xD]\n" - "\tsubs r0, 0x1\n" - "\tmov r6, r8\n" - "\tcmp r0, 0xC\n" - "\tbhi _080F0AE2_break\n" - "\tlsls r0, 2\n" - "\tldr r1, =_080F0A48\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.pool\n" - "\t.align 2, 0\n" - "_080F0A48:\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0AA0\n" - "\t.4byte _080F0AE2_break\n" - "\t.4byte _080F0AE2_break\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "\t.4byte _080F0A7C\n" - "_080F0A7C:\n" - "\tldr r0, =gSaveBlock1Ptr\n" - "\tldr r1, [r0]\n" - "\tmov r4, r9\n" - "\tadds r0, r7, r4\n" - "\tlsls r0, 2\n" - "\tadds r0, r1\n" - "\tldr r1, =0x000027cc\n" - "\tadds r0, r1\n" - "\tldrh r0, [r0, 0x8]\n" - "\tlsrs r1, r6, 24\n" - "\tbl sub_80F0B24\n" - "\tb _080F0AE2_break\n" - "\t.pool\n" - "_080F0AA0:\n" - "\tldr r2, =gSaveBlock1Ptr\n" - "\tldr r0, [r2]\n" - "\tmov r1, r9\n" - "\tadds r4, r7, r1\n" - "\tlsls r4, 2\n" - "\tadds r0, r4, r0\n" - "\tldr r5, =0x000027cc\n" - "\tadds r0, r5\n" - "\tldrh r0, [r0, 0x8]\n" - "\tlsrs r6, 24\n" - "\tadds r1, r6, 0\n" - "\tstr r2, [sp]\n" - "\tbl sub_80F0B24\n" - "\tldr r2, [sp]\n" - "\tldr r0, [r2]\n" - "\tadds r4, r0\n" - "\tadds r4, r5\n" - "\tldrh r0, [r4, 0xA]\n" - "\tadds r1, r6, 0\n" - "\tbl sub_80F0B24\n" - "\tb _080F0AE2_break\n" - "\t.pool\n" - "_080F0AD8:\n" - "\tmov r2, r9\n" - "\tlsls r0, r2, 24\n" - "\tlsrs r0, 24\n" - "\tbl SetTvShowInactive\n" - "_080F0AE2_break:\n" - "\tmov r0, r9\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tcmp r0, 0x17\n" - "\tbhi _080F0AF2\n" - "\tb _080F0716\n" - "_080F0AF2:\n" - "\tadd sp, 0x8\n" - "\tpop {r3,r4}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif void SetTvShowInactive(u8 showIdx) { diff --git a/src/unk_transition.c b/src/unk_transition.c index 09e194be3..dff165bc9 100644 --- a/src/unk_transition.c +++ b/src/unk_transition.c @@ -187,7 +187,7 @@ static void sub_81DA700(void) { u16 *dst1, *dst2; - sub_8149F58(&dst1, &dst2); + GetBg0TilesDst(&dst1, &dst2); LZ77UnCompVram(gUnknown_0862AD54, dst2); LZ77UnCompVram(gUnknown_0862AF30, dst1); LoadPalette(gUnknown_0862B53C, 0xF0, 0x20); |