diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-07-23 14:07:10 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-07-24 05:52:16 +0800 |
commit | e150a620450a17bb2ab3905c04c33777dc6bf0cc (patch) | |
tree | 072352d576675b46ce0b0358dce03bea02872238 | |
parent | a674ba2749871cb1c26c4c17719cc784e329f815 (diff) |
battle transition data decomp
24 files changed, 765 insertions, 131 deletions
diff --git a/data/data_83F5738.s b/data/data_83F5738.s index 12fa41711..dc09b0532 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -133,128 +133,7 @@ gUnknown_83F846D:: @ 83F846D gUnknown_83F847D:: @ 83F847D .incbin "baserom.gba", 0x3F847D, 0x323 -sBigPokeballTileset:: @ 83F87A0 - .incbin "baserom.gba", 0x3F87A0, 0x580 - -sSlidingPokeballTilemap:: @ 83F8D20 - .incbin "baserom.gba", 0x3F8D20, 0x240 - -sVsBarTileset:: @ 83F8F60 - .incbin "baserom.gba", 0x3F8F60, 0x11E0 - -sGridSquareTilemap:: @ 83FA140 - .incbin "baserom.gba", 0x3FA140, 0x1E0 - -sBT_Phase1Tasks:: @ 83FA320 - .incbin "baserom.gba", 0x3FA320, 0x48 - -sBT_Phase2Tasks:: @ 83FA368 - .incbin "baserom.gba", 0x3FA368, 0x48 - -sBT_MainPhases:: @ 83FA3B0 - .incbin "baserom.gba", 0x3FA3B0, 0x10 - -sBT_Phase2BlurFuncs:: @ 83FA3C0 - .incbin "baserom.gba", 0x3FA3C0, 0xC - -sBT_Phase2DistortedWaveFuncs:: @ 83FA3CC - .incbin "baserom.gba", 0x3FA3CC, 0x8 - -sBT_Phase2HorizontalCorrugateFuncs:: @ 83FA3D4 - .incbin "baserom.gba", 0x3FA3D4, 0x8 - -sBT_Phase2BigPokeballFuncs:: @ 83FA3DC - .incbin "baserom.gba", 0x3FA3DC, 0x18 - -sBT_Phase2SlidingPokeballsFuncs:: @ 83FA3F4 - .incbin "baserom.gba", 0x3FA3F4, 0xC - -gUnknown_83FA400:: @ 83FA400 - .incbin "baserom.gba", 0x3FA400, 0x4 - -gUnknown_83FA404:: @ 83FA404 - .incbin "baserom.gba", 0x3FA404, 0xA - -gUnknown_83FA40E:: @ 83FA40E - .incbin "baserom.gba", 0x3FA40E, 0x6 - -sBT_Phase2ClockwiseBlackFadeFuncs:: @ 83FA414 - .incbin "baserom.gba", 0x3FA414, 0x1C - -sBT_Phase2FullScreenWaveFuncs:: @ 83FA430 - .incbin "baserom.gba", 0x3FA430, 0x8 - -sBT_Phase2BlackWaveToRightFuncs:: @ 83FA438 - .incbin "baserom.gba", 0x3FA438, 0xC - -gUnknown_83FA444:: @ 83FA444 - .incbin "baserom.gba", 0x3FA444, 0x20 - -sBT_Phase2AntiClockwiseSpiralFuncs:: @ 83FA464 - .incbin "baserom.gba", 0x3FA464, 0x8 - -sBT_Phase2MugshotFuncs:: @ 83FA46C - .incbin "baserom.gba", 0x3FA46C, 0x28 - -sMugshotsTrainerPicIDsTable:: @ 83FA494 - .incbin "baserom.gba", 0x3FA494, 0x6 - -sMugshotsOpponentRotationScales:: @ 83FA49A - .incbin "baserom.gba", 0x3FA49A, 0x14 - -sMugshotsOpponentCoords:: @ 83FA4AE - .incbin "baserom.gba", 0x3FA4AE, 0x16 - -sBT_Phase2MugshotSpriteFuncs:: @ 83FA4C4 - .incbin "baserom.gba", 0x3FA4C4, 0x1C - -sMugShotSlideVelocity:: @ 83FA4E0 - .incbin "baserom.gba", 0x3FA4E0, 0x4 - -sMugShotSlideDeceleration:: @ 83FA4E4 - .incbin "baserom.gba", 0x3FA4E4, 0x4 - -sBT_Phase2SlicedScreenFuncs:: @ 83FA4E8 - .incbin "baserom.gba", 0x3FA4E8, 0xC - -sBT_Phase2WhiteFadeInStripesFuncs:: @ 83FA4F4 - .incbin "baserom.gba", 0x3FA4F4, 0x14 - -sWhiteStripeDelay:: @ 83FA508 - .incbin "baserom.gba", 0x3FA508, 0xC - -sBT_Phase2GridSquaresFuncs:: @ 83FA514 - .incbin "baserom.gba", 0x3FA514, 0xC - -sBT_Phase2BlackDoodlesFuncs:: @ 83FA520 - .incbin "baserom.gba", 0x3FA520, 0x14 - -sBlackDoodlesSegments:: @ 83FA534 - .incbin "baserom.gba", 0x3FA534, 0x46 - -sBlackDoodlesDelay:: @ 83FA57A - .incbin "baserom.gba", 0x3FA57A, 0xE - -sBT_Phase1FadeFuncs:: @ 83FA588 - .incbin "baserom.gba", 0x3FA588, 0x44 - -sSpriteTemplate_SlidingPokeball:: @ 83FA5CC - .incbin "baserom.gba", 0x3FA5CC, 0x6C - -sSlidingPokeballBigPokeballPalette:: @ 83FA638 - .incbin "baserom.gba", 0x3FA638, 0x108 - -sVsBarOpponentPalettes:: @ 83FA740 - .incbin "baserom.gba", 0x3FA740, 0x14 - -sVsBarPlayerPalettes:: @ 83FA754 - .incbin "baserom.gba", 0x3FA754, 0x30 - -sBigPokeballTilemap:: @ 83FA784 - .incbin "baserom.gba", 0x3FA784, 0x4B0 - -sVsBarTilemap:: @ 83FAC34 - .incbin "baserom.gba", 0x3FAC34, 0x500 + .section .rodata.83FB134 gUnknown_83FB134:: @ 83FB134 .incbin "baserom.gba", 0x3FB134, 0xA80 diff --git a/data/field_map_obj.s b/data/field_map_obj.s index d12de7aa9..72d20cd4e 100644 --- a/data/field_map_obj.s +++ b/data/field_map_obj.s @@ -31,7 +31,13 @@ gUnknown_83A0010:: @ 83A0010 .incbin "baserom.gba", 0x3A0010, 0x3688 gUnknown_83A3698:: @ 83A3698 - .incbin "baserom.gba", 0x3A3698, 0x1AC0 + .incbin "baserom.gba", 0x3A3698, 0x80 + +gEventObjectBaseOam_32x32:: @ 83A3718 + .incbin "baserom.gba", 0x3A3718, 0x8 + +gUnknown_83A3720:: @ 83A3720 + .incbin "baserom.gba", 0x3A3720, 0x1a38 gUnknown_83A5158:: @ 83A5158 .incbin "baserom.gba", 0x3A5158, 0xB0 diff --git a/graphics/battle_transitions/agatha_bg.pal b/graphics/battle_transitions/agatha_bg.pal new file mode 100644 index 000000000..4aac79fec --- /dev/null +++ b/graphics/battle_transitions/agatha_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +255 82 172 +255 98 189 +255 115 205 +255 131 222 +255 148 238 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/big_pokeball_tilemap.bin b/graphics/battle_transitions/big_pokeball_tilemap.bin Binary files differnew file mode 100644 index 000000000..691e16ef7 --- /dev/null +++ b/graphics/battle_transitions/big_pokeball_tilemap.bin diff --git a/graphics/battle_transitions/big_pokeball_tileset.png b/graphics/battle_transitions/big_pokeball_tileset.png Binary files differnew file mode 100644 index 000000000..21b227441 --- /dev/null +++ b/graphics/battle_transitions/big_pokeball_tileset.png diff --git a/graphics/battle_transitions/blue_bg.pal b/graphics/battle_transitions/blue_bg.pal new file mode 100644 index 000000000..30da9c5f9 --- /dev/null +++ b/graphics/battle_transitions/blue_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +197 197 65 +213 213 82 +230 230 98 +246 246 115 +255 255 131 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/bruno_bg.pal b/graphics/battle_transitions/bruno_bg.pal new file mode 100644 index 000000000..b55e6a6cd --- /dev/null +++ b/graphics/battle_transitions/bruno_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +8 213 8 +32 238 32 +49 246 49 +74 255 74 +123 255 123 +230 123 139 +246 139 156 +255 156 172 +255 172 189 +255 189 205 +230 123 139 diff --git a/graphics/battle_transitions/green_bg.pal b/graphics/battle_transitions/green_bg.pal new file mode 100644 index 000000000..8ebd38309 --- /dev/null +++ b/graphics/battle_transitions/green_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +230 123 139 +246 139 156 +255 156 172 +255 172 189 +255 189 205 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/grid_square_tilemap.bin b/graphics/battle_transitions/grid_square_tilemap.bin Binary files differnew file mode 100644 index 000000000..7f67463eb --- /dev/null +++ b/graphics/battle_transitions/grid_square_tilemap.bin diff --git a/graphics/battle_transitions/lance_bg.pal b/graphics/battle_transitions/lance_bg.pal new file mode 100644 index 000000000..6717a90bd --- /dev/null +++ b/graphics/battle_transitions/lance_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +0 0 131 +16 16 148 +32 32 164 +49 49 180 +65 65 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/lorelei_bg.pal b/graphics/battle_transitions/lorelei_bg.pal new file mode 100644 index 000000000..1f30ed062 --- /dev/null +++ b/graphics/battle_transitions/lorelei_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +189 0 189 +205 16 205 +222 32 222 +238 49 238 +255 65 255 +106 180 213 +123 197 230 +139 213 246 +156 230 255 +172 246 255 +255 255 255 diff --git a/graphics/battle_transitions/red_bg.pal b/graphics/battle_transitions/red_bg.pal new file mode 100644 index 000000000..e43b0f74c --- /dev/null +++ b/graphics/battle_transitions/red_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 180 213 +123 197 230 +139 213 246 +156 230 255 +172 246 255 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/sliding_pokeball.pal b/graphics/battle_transitions/sliding_pokeball.pal new file mode 100644 index 000000000..6190709ed --- /dev/null +++ b/graphics/battle_transitions/sliding_pokeball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 172 238 +246 8 0 +238 213 180 +222 180 148 +255 255 255 +222 230 238 +189 205 230 +156 180 222 +98 156 180 +148 0 0 +197 197 197 +238 230 164 +222 205 131 +213 180 106 +205 156 82 +0 0 0 diff --git a/graphics/battle_transitions/sliding_pokeball.png b/graphics/battle_transitions/sliding_pokeball.png Binary files differnew file mode 100644 index 000000000..3802a915b --- /dev/null +++ b/graphics/battle_transitions/sliding_pokeball.png diff --git a/graphics/battle_transitions/sliding_pokeball_tilemap.bin b/graphics/battle_transitions/sliding_pokeball_tilemap.bin Binary files differnew file mode 100644 index 000000000..6cdeb0d17 --- /dev/null +++ b/graphics/battle_transitions/sliding_pokeball_tilemap.bin diff --git a/graphics/battle_transitions/unused_brendan.png b/graphics/battle_transitions/unused_brendan.png Binary files differnew file mode 100644 index 000000000..926ba0ff7 --- /dev/null +++ b/graphics/battle_transitions/unused_brendan.png diff --git a/graphics/battle_transitions/unused_lass.png b/graphics/battle_transitions/unused_lass.png Binary files differnew file mode 100644 index 000000000..378fa3c19 --- /dev/null +++ b/graphics/battle_transitions/unused_lass.png diff --git a/graphics/battle_transitions/unused_trainer.pal b/graphics/battle_transitions/unused_trainer.pal new file mode 100644 index 000000000..ad94d728a --- /dev/null +++ b/graphics/battle_transitions/unused_trainer.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 164 +255 222 205 +222 164 148 +205 131 115 +123 90 82 +57 74 123 +41 57 98 +24 41 82 +16 32 57 +222 230 238 +255 197 90 +189 156 90 +255 98 90 +197 65 65 +255 255 255 +0 0 0 diff --git a/graphics/battle_transitions/vsbar_tilemap.bin b/graphics/battle_transitions/vsbar_tilemap.bin Binary files differnew file mode 100644 index 000000000..4f170b470 --- /dev/null +++ b/graphics/battle_transitions/vsbar_tilemap.bin diff --git a/graphics/battle_transitions/vsbar_tileset.png b/graphics/battle_transitions/vsbar_tileset.png Binary files differnew file mode 100644 index 000000000..1d327cdaf --- /dev/null +++ b/graphics/battle_transitions/vsbar_tileset.png diff --git a/include/battle_transition.h b/include/battle_transition.h index 4e9d0029c..4ef5f19d9 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -3,10 +3,6 @@ #include "global.h" -bool8 BT_IsDone(void); -void BT_StartOnField(u8 transitionId); -bool8 FldEff_Pokeball(void); - enum { MUGSHOT_LORELEI, @@ -36,4 +32,10 @@ enum #define B_TRANSITION_BLUE 16 #define B_TRANSITION_ANTI_CLOCKWISE_SPIRAL 17 +extern const struct SpritePalette sSpritePalette_SlidingPokeball; + +bool8 BT_IsDone(void); +void BT_StartOnField(u8 transitionId); +bool8 FldEff_Pokeball(void); + #endif // GUARD_BATTLE_TRANSITION_H diff --git a/ld_script.txt b/ld_script.txt index c6b35f651..1dc198e6f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -418,6 +418,8 @@ SECTIONS { data/data_83F5738.o(.rodata); src/battle_records.o(.rodata); data/data_83F5738.o(.rodata.83F6C90); + src/battle_transition.o(.rodata); + data/data_83F5738.o(.rodata.83FB134); src/save.o(.rodata); data/data_83FECCC.o(.rodata); src/intro.o(.rodata); diff --git a/src/battle_transition.c b/src/battle_transition.c new file mode 100644 index 000000000..7894a5b73 --- /dev/null +++ b/src/battle_transition.c @@ -0,0 +1,577 @@ +#include "global.h" +#include "sprite.h" +#include "task.h" +#include "battle_transition.h" + +typedef bool8 (*TransitionStateFunc)(struct Task *task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite); + +struct TransitionData +{ + vu8 vblankDma; + u16 winIn; + u16 winOut; + u16 win0H; + u16 win0V; + u16 unused_A; + u16 unused_C; + u16 bldCnt; + u16 bldAlpha; + u16 bldY; + s16 bg123HOfs; + s16 bg123VOfs; + s16 bg0HOfsOpponent; + s16 bg0HOfsPlayer; + s16 bg0VOfs; + s16 unused_1E; + s16 counter; + s16 unused_22; + s16 data[11]; // for multiple purposes +}; + +struct __attribute__((packed)) BlackDoodleSegment +{ + s16 startPtX; + s16 startPtY; + s16 endPtX; + s16 endPtY; + u16 whichSide; +}; + +EWRAM_DATA struct TransitionData *sTransitionStructPtr = NULL; + +// TODO: move this declaration to include/event_object_movement.h +extern const struct OamData gEventObjectBaseOam_32x32; + +bool8 BT_Phase1_FadeOut(struct Task *task); +bool8 BT_Phase1_FadeIn(struct Task *task); +bool8 BT_Phase2BlackDoodles_Init(struct Task *task); +bool8 BT_Phase2BlackDoodles_InitSingleBrush(struct Task *task); +bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task); +bool8 BT_Phase2BlackDoodles_IsDone(struct Task *task); +bool8 BT_Phase2BlackDoodles_NextBrush(struct Task *task); +bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task); +bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task); +bool8 BT_Phase2GridSquares_IsDone(struct Task *task); +bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task); +bool8 BT_Phase2WhiteFadeInStripes_SetupSprites(struct Task *task); +bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task); +bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task); +bool8 BT_Phase2WhiteFadeInStripes_IsDone(struct Task *task); +bool8 BT_Phase2SlicedScreen_Init(struct Task *task); +bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task); +bool8 BT_Phase2SlicedScreen_End(struct Task *task); +bool8 BT_Phase2Mugshot_Init(struct Task *task); +bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task); +bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task); +bool8 BT_Phase2Mugshot_StartSpriteSlide(struct Task *task); +bool8 BT_Phase2Mugshot_WaitForOpponentInPlace(struct Task *task); +bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task); +bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task); +bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task); +bool8 BT_Phase2Mugshot_WaitForBlackFade(struct Task *task); +bool8 BT_Phase2Mugshot_End(struct Task *task); +bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task); +bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task); +bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task); +bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task); +bool8 BT_Phase2BlackWaveToRight_End(struct Task *task); +bool8 BT_Phase2FullScreenWave_Init(struct Task *task); +bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade_Step3(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade_End(struct Task *task); +bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task); +bool8 BT_Phase2SlidingPokeballs_SetupFldeffArgs(struct Task *task); +bool8 BT_Phase2SlidingPokeballs_IsDone(struct Task *task); +bool8 BT_Phase2BigPokeball_Init(struct Task *task); +bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task); +bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task); +bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task); +bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task); +bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task); +bool8 BT_Phase2HorizontalCorrugate_Init(struct Task *task); +bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task); +bool8 BT_Phase2DistortedWave_InitWave(struct Task *task); +bool8 BT_Phase2DistortedWave_UpdateWave(struct Task *task); +bool8 BT_Phase2Blur_InitBgMosaic(struct Task *task); +bool8 BT_Phase2Blur_Anim(struct Task *task); +bool8 BT_Phase2Blur_IsDone(struct Task *task); +bool8 BT_Phase1Blink(struct Task *task); +bool8 BT_WaitForPhase1(struct Task *task); +bool8 BT_Phase2LaunchAnimTask(struct Task *task); +bool8 BT_WaitForPhase2(struct Task *task); +bool8 BT_Phase2Blur(struct Task *task); +bool8 BT_Phase2DistortedWave(struct Task *task); +bool8 BT_Phase2HorizontalCorrugate(struct Task *task); +bool8 BT_Phase2BigPokeball(struct Task *task); +bool8 BT_Phase2SlidingPokeballs(struct Task *task); +bool8 BT_Phase2ClockwiseBlackFade(struct Task *task); +bool8 BT_Phase2FullScreenWave(struct Task *task); +bool8 BT_Phase2BlackWaveToRight(struct Task *task); +bool8 BT_Phase2SlicedScreen(struct Task *task); +bool8 BT_Phase2WhiteFadeInStripes(struct Task *task); +bool8 BT_Phase2GridSquares(struct Task *task); +bool8 BT_Phase2BlackDoodles(struct Task *task); +bool8 BT_Phase2StartLoreleiMugshot(struct Task *task); +bool8 BT_Phase2StartBrunoMugshot(struct Task *task); +bool8 BT_Phase2StartAgathaMugshot(struct Task *task); +bool8 BT_Phase2StartLanceMugshot(struct Task *task); +bool8 BT_Phase2StartBlueMugshot(struct Task *task); +bool8 BT_Phase2AntiClockwiseSpiral(struct Task *task); +bool8 BT_Phase1Task(struct Task *task); + +bool8 BT_Phase2MugshotsSpriteFuncs_Wait(struct Sprite *sprite); +bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite); +bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite); +bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite); +bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite); + +void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite); +void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite); + +const u32 sBigPokeballTileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball_tileset.4bpp"); +const u32 sSlidingPokeballTilemap[] = INCBIN_U32("graphics/battle_transitions/sliding_pokeball_tilemap.bin"); +const u8 sSpriteImage_SlidingPokeball[] = INCBIN_U8("graphics/battle_transitions/sliding_pokeball.4bpp"); +const u32 sVsBarTileset[] = INCBIN_U32("graphics/battle_transitions/vsbar_tileset.4bpp"); +const u8 sSpriteImage_UnusedBrendan[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +const u8 sSpriteImage_UnusedLass[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +const u32 sGridSquareTilemap[] = INCBIN_U32("graphics/battle_transitions/grid_square_tilemap.bin"); + +const TransitionStateFunc sBT_Phase1Tasks[] = +{ + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, + BT_Phase1Task, +}; + +const TransitionStateFunc sBT_Phase2Tasks[] = +{ + BT_Phase2Blur, + BT_Phase2DistortedWave, + BT_Phase2HorizontalCorrugate, + BT_Phase2BigPokeball, + BT_Phase2SlidingPokeballs, + BT_Phase2ClockwiseBlackFade, + BT_Phase2FullScreenWave, + BT_Phase2BlackWaveToRight, + BT_Phase2SlicedScreen, + BT_Phase2WhiteFadeInStripes, + BT_Phase2GridSquares, + BT_Phase2BlackDoodles, + BT_Phase2StartLoreleiMugshot, + BT_Phase2StartBrunoMugshot, + BT_Phase2StartAgathaMugshot, + BT_Phase2StartLanceMugshot, + BT_Phase2StartBlueMugshot, + BT_Phase2AntiClockwiseSpiral, +}; + +const TransitionStateFunc sBT_MainPhases[] = +{ + BT_Phase1Blink, + BT_WaitForPhase1, + BT_Phase2LaunchAnimTask, + BT_WaitForPhase2, +}; + +const TransitionStateFunc sBT_Phase2BlurFuncs[] = +{ + BT_Phase2Blur_InitBgMosaic, + BT_Phase2Blur_Anim, + BT_Phase2Blur_IsDone, +}; + +const TransitionStateFunc sBT_Phase2DistortedWaveFuncs[] = +{ + BT_Phase2DistortedWave_InitWave, + BT_Phase2DistortedWave_UpdateWave, +}; + +const TransitionStateFunc sBT_Phase2HorizontalCorrugateFuncs[] = +{ + BT_Phase2HorizontalCorrugate_Init, + BT_Phase2HorizontalCorrugate_UpdateWave, +}; + +const TransitionStateFunc sBT_Phase2BigPokeballFuncs[] = +{ + BT_Phase2BigPokeball_Init, + BT_Phase2BigPokeball_LoadTilemapAndWave, + BT_Phase2BigPokeball_UpdateWave1IncEva, + BT_Phase2BigPokeball_UpdateWave2DecEvb, + BT_Phase2BigPokeball_UpdateWave3, + BT_Phase2BigPokeball_CircleEffect, +}; + +const TransitionStateFunc sBT_Phase2SlidingPokeballsFuncs[] = +{ + BT_Phase2SlidingPokeballs_LoadBgGfx, + BT_Phase2SlidingPokeballs_SetupFldeffArgs, + BT_Phase2SlidingPokeballs_IsDone, +}; + +const s16 gUnknown_83FA400[] = { -16, 256 }; + +const s16 gUnknown_83FA404[] = { 0, 16, 32, 8, 24 }; + +const s16 gUnknown_83FA40E[] = { 8, -8 }; + +const TransitionStateFunc sBT_Phase2ClockwiseBlackFadeFuncs[] = +{ + BT_Phase2ClockwiseBlackFade_Init, + BT_Phase2ClockwiseBlackFade_Step1, + BT_Phase2ClockwiseBlackFade_Step2, + BT_Phase2ClockwiseBlackFade_Step3, + BT_Phase2ClockwiseBlackFade_Step4, + BT_Phase2ClockwiseBlackFade_Step5, + BT_Phase2ClockwiseBlackFade_End, +}; + +const TransitionStateFunc sBT_Phase2FullScreenWaveFuncs[] = +{ + BT_Phase2FullScreenWave_Init, + BT_Phase2FullScreenWave_UpdateWave, +}; + +const TransitionStateFunc sBT_Phase2BlackWaveToRightFuncs[] = +{ + BT_Phase2BlackWaveToRight_Init, + BT_Phase2BlackWaveToRight_UpdateWave, + BT_Phase2BlackWaveToRight_End, +}; +const s16 gUnknown_83FA444[] = +{ + 0x0, 0x26E, + 0x100, 0x69, + 0x0, -0x69, + -0x100, -0x266E, + 0x0, 0x26E, + 0x100, 0x69, + 0x0, -0x69, + -0x100, -0x266E, +}; + +const TransitionStateFunc sBT_Phase2AntiClockwiseSpiralFuncs[] = +{ + BT_Phase2AntiClockwiseSpiral_Init, + BT_Phase2AntiClockwiseSpiral_Update, +}; + +const TransitionStateFunc sBT_Phase2MugshotFuncs[] = +{ + BT_Phase2Mugshot_Init, + BT_Phase2Mugshot_LoadGfx, + BT_Phase2Mugshot_VsBarsSlideIn, + BT_Phase2Mugshot_StartSpriteSlide, + BT_Phase2Mugshot_WaitForOpponentInPlace, + BT_Phase2Mugshot_WaitForPlayerInPlace, + BT_Phase2Mugshot_ExpandWhiteBand, + BT_Phase2Mugshot_StartBlackFade, + BT_Phase2Mugshot_WaitForBlackFade, + BT_Phase2Mugshot_End, +}; + +const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_COUNT] = +{ + // TODO: document these with macro + 0x70, 0x71, 0x72, 0x73, 0x7D +}; + +const s16 sMugshotsOpponentRotationScales[MUGSHOTS_COUNT][2] = +{ + {0x200, 0x200}, + {0x200, 0x200}, + {0x200, 0x200}, + {0x200, 0x200}, + {0x200, 0x200}, +}; + +const s16 sMugshotsOpponentCoords[MUGSHOTS_COUNT][2] = +{ + { -8, 0 }, + { -10, 0 }, + { 0, 0 }, + { -32, 0 }, + { 0, 0 }, +}; + +const TransitionSpriteCallback sBT_Phase2MugshotSpriteFuncs[] = +{ + BT_Phase2MugshotsSpriteFuncs_Wait, + BT_Phase2MugshotsSpriteFuncs_InitParams, + BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn, + BT_Phase2MugshotsSpriteFuncs_DecelerateSprite, + BT_Phase2MugshotsSpriteFuncs_Wait, + BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2, // not used + BT_Phase2MugshotsSpriteFuncs_Wait, +}; + +const s16 sMugShotSlideVelocity[] = { 12, -12 }; + +const s16 sMugShotSlideDeceleration[] = { -1, 1 }; + +const TransitionStateFunc sBT_Phase2SlicedScreenFuncs[] = +{ + BT_Phase2SlicedScreen_Init, + BT_Phase2SlicedScreen_UpdateOffsets, + BT_Phase2SlicedScreen_End, +}; + +const TransitionStateFunc sBT_Phase2WhiteFadeInStripesFuncs[] = +{ + BT_Phase2WhiteFadeInStripes_Init, + BT_Phase2WhiteFadeInStripes_SetupSprites, + BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone, + BT_Phase2WhiteFadeInStripes_Stop, + BT_Phase2WhiteFadeInStripes_IsDone, +}; + +const u16 sWhiteStripeDelay[] = { 0, 9, 15, 6, 12, 3 }; + +const TransitionStateFunc sBT_Phase2GridSquaresFuncs[] = +{ + BT_Phase2GridSquares_LoadGfx, + BT_Phase2GridSquares_UpdateTileset, + BT_Phase2GridSquares_IsDone, +}; + +const TransitionStateFunc sBT_Phase2BlackDoodlesFuncs[] = +{ + BT_Phase2BlackDoodles_Init, + BT_Phase2BlackDoodles_InitSingleBrush, + BT_Phase2BlackDoodles_DrawSingleBrush, + BT_Phase2BlackDoodles_IsDone, + BT_Phase2BlackDoodles_NextBrush, +}; + +const struct BlackDoodleSegment sBlackDoodlesSegments[] = +{ + { + .startPtX = 0x38, + .startPtY = 0x0, + .endPtX = 0x0, + .endPtY = 0xA0, + .whichSide = 0, + }, + { + .startPtX = 0x68, + .startPtY = 0xA0, + .endPtX = 0xF0, + .endPtY = 0x58, + .whichSide = 1, + }, + { + .startPtX = 0xF0, + .startPtY = 0x48, + .endPtX = 0x38, + .endPtY = 0x0, + .whichSide = 1, + }, + { + .startPtX = 0x0, + .startPtY = 0x20, + .endPtX = 0x90, + .endPtY = 0xA0, + .whichSide = 0, + }, + { + .startPtX = 0x90, + .startPtY = 0xA0, + .endPtX = 0xB8, + .endPtY = 0x0, + .whichSide = 1, + }, + { + .startPtX = 0x38, + .startPtY = 0x0, + .endPtX = 0xA8, + .endPtY = 0xA0, + .whichSide = 0, + }, + { + .startPtX = 0xA8, + .startPtY = 0xA0, + .endPtX = 0x30, + .endPtY = 0x0, + .whichSide = 1, + }, +}; + +const s16 sBlackDoodlesDelay[] = { 1, 1, 1, 1, 1, 1, 0 }; + +const TransitionStateFunc sBT_Phase1FadeFuncs[] = +{ + BT_Phase1_FadeOut, + BT_Phase1_FadeIn, +}; + +const struct SpriteFrameImage sSpriteImageTable_SlidingPokeball[] = +{ + { + .data = sSpriteImage_SlidingPokeball, + .size = 0x200, + }, +}; + +const union AnimCmd sSpriteAnim_SlidingPokeball[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const sSpriteAnimTable_SlidingPokeball[] = { sSpriteAnim_SlidingPokeball }; + +const union AffineAnimCmd sSpriteAffineAnim_SlidingPokeball1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd sSpriteAffineAnim_SlidingPokeball2[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const sSpriteAffineAnimTable_SlidingPokeball[] = +{ + sSpriteAffineAnim_SlidingPokeball1, + sSpriteAffineAnim_SlidingPokeball2, +}; + +const struct SpriteTemplate sSpriteTemplate_SlidingPokeball = +{ + .tileTag = SPRITE_INVALID_TAG, + .paletteTag = 0x1009, + .oam = &gEventObjectBaseOam_32x32, + .anims = sSpriteAnimTable_SlidingPokeball, + .images = sSpriteImageTable_SlidingPokeball, + .affineAnims = sSpriteAffineAnimTable_SlidingPokeball, + .callback = SpriteCB_BT_Phase2SlidingPokeballs, +}; + +const struct OamData sOamData_Unused = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct SpriteFrameImage sSpriteImageTable_UnusedBrendan[] = +{ + { + .data = sSpriteImage_UnusedBrendan, + .size = 0x800, + }, +}; + +const struct SpriteFrameImage sSpriteImageTable_UnusedLass[] = +{ + { + .data = sSpriteImage_UnusedLass, + .size = 0x800, + }, +}; + +const union AnimCmd sSpriteAnim_Unused[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const sSpriteAnimTable_Unused[] = { sSpriteAnim_Unused }; + +const struct SpriteTemplate sSpriteTemplateTable_Unused[] = +{ + { + .tileTag = SPRITE_INVALID_TAG, + .paletteTag = 0x100A, + .oam = &sOamData_Unused, + .anims = sSpriteAnimTable_Unused, + .images = sSpriteImageTable_UnusedBrendan, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_BT_Phase2Mugshots, + }, + { + .tileTag = SPRITE_INVALID_TAG, + .paletteTag = 0x100A, + .oam = &sOamData_Unused, + .anims = sSpriteAnimTable_Unused, + .images = sSpriteImageTable_UnusedLass, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_BT_Phase2Mugshots, + }, +}; + +// this palette is shared by big pokeball and sliding pokeball +const u16 sSlidingPokeballBigPokeballPalette[] = INCBIN_U16("graphics/battle_transitions/sliding_pokeball.gbapal"); + +const struct SpritePalette sSpritePalette_SlidingPokeball = +{ + .data = sSlidingPokeballBigPokeballPalette, + .tag = 0x1009, +}; + +const u16 sVsBarLoreleiPalette[] = INCBIN_U16("graphics/battle_transitions/lorelei_bg.gbapal"); +const u16 sVsBarBrunoPalette[] = INCBIN_U16("graphics/battle_transitions/bruno_bg.gbapal"); +const u16 sVsBarAgathaPalette[] = INCBIN_U16("graphics/battle_transitions/agatha_bg.gbapal"); +const u16 sVsBarLancePalette[] = INCBIN_U16("graphics/battle_transitions/lance_bg.gbapal"); +const u16 sVsBarBluePalette[] = INCBIN_U16("graphics/battle_transitions/blue_bg.gbapal"); +const u16 sVsBarMalePlayerPalette[] = INCBIN_U16("graphics/battle_transitions/red_bg.gbapal"); +const u16 sVsBarFemalePlayerPalette[] = INCBIN_U16("graphics/battle_transitions/green_bg.gbapal"); + +const u16 *const sVsBarOpponentPalettes[MUGSHOTS_COUNT] = +{ + sVsBarLoreleiPalette, + sVsBarBrunoPalette, + sVsBarAgathaPalette, + sVsBarLancePalette, + sVsBarBluePalette, +}; + +const u16 *const sVsBarPlayerPalettes[] = +{ + sVsBarMalePlayerPalette, + sVsBarFemalePlayerPalette, +}; + +const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); + +const struct SpritePalette sSpritePalette_UnusedTrainer = +{ + .data = sUnusedTrainerPalette, + .tag = 0x100A, +}; + +const u16 sBigPokeballTilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_tilemap.bin"); +const u16 sVsBarTilemap[] = INCBIN_U16("graphics/battle_transitions/vsbar_tilemap.bin"); diff --git a/sym_ewram.txt b/sym_ewram.txt index e97441132..3797720d5 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1055,10 +1055,7 @@ gUnknown_2039A24: @ 2039A24 .space 0x4 .include "src/coins.o" - - .align 2 -sTransitionStructPtr: @ 2039A2C - .space 0x4 + .include "src/battle_transition.o" gUnknown_2039A30: @ 2039A30 .space 0x4 |