mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
up to groudon transition
This commit is contained in:
parent
eb00e8ba4a
commit
9106d8df18
File diff suppressed because it is too large
Load Diff
@ -4,129 +4,6 @@
|
||||
|
||||
.section .rodata
|
||||
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8C54:: @ 85C8C54
|
||||
.4byte sub_8148798
|
||||
.4byte sub_8148864
|
||||
.4byte sub_8148AD4
|
||||
.4byte sub_8148B14
|
||||
|
||||
.align 1
|
||||
gUnknown_085C8C64:: @ 85C8C64
|
||||
.2byte 0x7727
|
||||
|
||||
.align 1
|
||||
gUnknown_085C8C66:: @ 85C8C66
|
||||
.2byte 0x0001, 0xffff, 0x0000
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8C6C:: @ 85C8C6C
|
||||
.4byte sub_8148BC4
|
||||
.4byte sub_8148CE8
|
||||
.4byte sub_8148C28
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8C78:: @ 85C8C78
|
||||
.4byte sub_8148BC4
|
||||
.4byte sub_8148D6C
|
||||
|
||||
.align 1
|
||||
gUnknown_085C8C80:: @ 85C8C80
|
||||
.2byte 0xfffa, 0x0004
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8C84:: @ 85C8C84
|
||||
.4byte sub_8148E8C
|
||||
.4byte sub_8148F4C
|
||||
.4byte sub_8149008
|
||||
|
||||
gUnknown_085C8C90:: @ 85C8C90
|
||||
.2byte 0x0001, 0x001b, 0x0113, 0xffff
|
||||
|
||||
gUnknown_085C8C98:: @ 85C8C98
|
||||
.2byte 0x0002, 0x01e6, 0xffff
|
||||
|
||||
gUnknown_085C8C9E:: @ 85C8C9E
|
||||
.2byte 0x0003, 0x0106, 0xffff
|
||||
|
||||
gUnknown_085C8CA4:: @ 85C8CA4
|
||||
.2byte 0x0004, 0x01fb, 0xfffe
|
||||
|
||||
gUnknown_085C8CAA:: @ 85C8CAA
|
||||
.2byte 0x0001, 0x00d5, 0xffff
|
||||
|
||||
gUnknown_085C8CB0:: @ 85C8CB0
|
||||
.2byte 0x0002, 0x0224, 0xfffe
|
||||
|
||||
gUnknown_085C8CB6:: @ 85C8CB6
|
||||
.2byte 0x0003, 0x00c4, 0xffff
|
||||
|
||||
gUnknown_085C8CBC:: @ 85C8CBC
|
||||
.2byte 0x0004, 0x023d, 0x0135, 0xffff
|
||||
|
||||
gUnknown_085C8CC4:: @ 85C8CC4
|
||||
.2byte 0x0001, 0x01da, 0xffff
|
||||
|
||||
gUnknown_085C8CCA:: @ 85C8CCA
|
||||
.2byte 0x0002, 0x0127, 0x0020, 0xffff
|
||||
|
||||
gUnknown_085C8CD2:: @ 85C8CD2
|
||||
.2byte 0x0003, 0x003a, 0xffff
|
||||
|
||||
gUnknown_085C8CD8:: @ 85C8CD8
|
||||
.2byte 0x0004, 0x01c7, 0xffff
|
||||
|
||||
gUnknown_085C8CDE:: @ 85C8CDE
|
||||
.2byte 0x0001, 0x021c, 0xffff
|
||||
|
||||
gUnknown_085C8CE4:: @ 85C8CE4
|
||||
.2byte 0x0002, 0x00e5, 0xffff
|
||||
|
||||
gUnknown_085C8CEA:: @ 85C8CEA
|
||||
.2byte 0x0003, 0x00f4, 0x001c, 0xffff
|
||||
|
||||
gUnknown_085C8CF2:: @ 85C8CF2
|
||||
.2byte 0x0004, 0x0205, 0xffff
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8CF8:: @ 85C8CF8
|
||||
.4byte gUnknown_085C8C90
|
||||
.4byte gUnknown_085C8CA4
|
||||
.4byte gUnknown_085C8C98
|
||||
.4byte gUnknown_085C8C9E
|
||||
.4byte gUnknown_085C8CEA
|
||||
.4byte gUnknown_085C8CE4
|
||||
.4byte gUnknown_085C8CF2
|
||||
.4byte gUnknown_085C8CDE
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8D18:: @ 85C8D18
|
||||
.4byte gUnknown_085C8CBC
|
||||
.4byte gUnknown_085C8CB0
|
||||
.4byte gUnknown_085C8CB6
|
||||
.4byte gUnknown_085C8CAA
|
||||
.4byte gUnknown_085C8CCA
|
||||
.4byte gUnknown_085C8CD8
|
||||
.4byte gUnknown_085C8CC4
|
||||
.4byte gUnknown_085C8CD2
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8D38:: @ 85C8D38
|
||||
.4byte gUnknown_085C8CF8
|
||||
.4byte gUnknown_085C8D18
|
||||
|
||||
.align 2
|
||||
sPhase2_Groudon_Funcs:: @ 85C8D40
|
||||
.4byte Phase2_WeatherTrio_Func1
|
||||
.4byte Phase2_WaitPaletteFade
|
||||
.4byte sub_8149178
|
||||
.4byte sub_81491C8
|
||||
.4byte sub_8149224
|
||||
.4byte Phase2_FramesCountdown
|
||||
.4byte Phase2_WeatherDuo_Func6
|
||||
.4byte Phase2_WeatherDuo_Func7
|
||||
|
||||
.align 2
|
||||
sPhase2_Rayquaza_Funcs:: @ 85C8D60
|
||||
.4byte Phase2_WeatherTrio_Func1
|
||||
@ -138,8 +15,8 @@ sPhase2_Rayquaza_Funcs:: @ 85C8D60
|
||||
.4byte sub_8149410
|
||||
.4byte sub_814943C
|
||||
.4byte sub_814946C
|
||||
.4byte sub_8148CE8
|
||||
.4byte sub_8148C28
|
||||
.4byte Phase2_Blackhole1_Func2
|
||||
.4byte Phase2_Blackhole1_Func3
|
||||
|
||||
.align 2
|
||||
gUnknown_085C8D8C:: @ 85C8D8C
|
||||
|
@ -17,7 +17,7 @@ enum // TRANSITION_MUGSHOT
|
||||
MUGSHOTS_COUNT
|
||||
};
|
||||
|
||||
// credits for the names go to Dyskinesia and Tetrable
|
||||
// credits for the names go to Dyskinesia, Tetrable and Farore
|
||||
// names are naturally subject to change
|
||||
|
||||
#define B_TRANSITION_BLUR 0
|
||||
@ -47,9 +47,9 @@ enum // TRANSITION_MUGSHOT
|
||||
#define B_TRANSITION_GROUDON 23
|
||||
#define B_TRANSITION_RAYQUAZA 24
|
||||
#define B_TRANSITION_25 25
|
||||
#define B_TRANSITION_26 26
|
||||
#define B_TRANSITION_27 27
|
||||
#define B_TRANSITION_28 28
|
||||
#define B_TRANSITION_BLACKHOLE1 26
|
||||
#define B_TRANSITION_BLACKHOLE2 27
|
||||
#define B_TRANSITION_RECTANGULAR_SPIRAL 28
|
||||
#define B_TRANSITION_29 29
|
||||
#define B_TRANSITION_30 30
|
||||
#define B_TRANSITION_31 31
|
||||
|
@ -41,6 +41,15 @@ struct TransitionData
|
||||
s16 data[11];
|
||||
};
|
||||
|
||||
struct StructRectangularSpiral
|
||||
{
|
||||
u8 field_0;
|
||||
s16 field_2;
|
||||
u8 field_4;
|
||||
s16 field_6;
|
||||
u8 field_8;
|
||||
};
|
||||
|
||||
typedef bool8 (*TransitionStateFunc)(struct Task *task);
|
||||
typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite);
|
||||
|
||||
@ -81,9 +90,9 @@ void Phase2Task_Kyogre(u8 taskId);
|
||||
void Phase2Task_Groudon(u8 taskId);
|
||||
void Phase2Task_Rayquaza(u8 taskId);
|
||||
void Phase2Task_25(u8 taskId);
|
||||
void Phase2Task_26(u8 taskId);
|
||||
void Phase2Task_27(u8 taskId);
|
||||
void Phase2Task_28(u8 taskId);
|
||||
void Phase2Task_Blackhole1(u8 taskId);
|
||||
void Phase2Task_Blackhole2(u8 taskId);
|
||||
void Phase2Task_RectangularSpiral(u8 taskId);
|
||||
void Phase2Task_29(u8 taskId);
|
||||
void Phase2Task_30(u8 taskId);
|
||||
void Phase2Task_31(u8 taskId);
|
||||
@ -127,6 +136,9 @@ bool8 Phase2_WaitPaletteFade(struct Task *task);
|
||||
bool8 Phase2_Kyogre_Func3(struct Task *task);
|
||||
bool8 Phase2_Kyogre_Func4(struct Task *task);
|
||||
bool8 Phase2_Kyogre_Func5(struct Task *task);
|
||||
bool8 Phase2_Groudon_Func3(struct Task *task);
|
||||
bool8 Phase2_Groudon_Func4(struct Task *task);
|
||||
bool8 Phase2_Groudon_Func5(struct Task *task);
|
||||
bool8 Phase2_WeatherDuo_Func6(struct Task *task);
|
||||
bool8 Phase2_WeatherDuo_Func7(struct Task *task);
|
||||
bool8 Phase2_BigPokeball_Func1(struct Task *task);
|
||||
@ -166,6 +178,17 @@ bool8 Phase2_Shards_Func2(struct Task *task);
|
||||
bool8 Phase2_Shards_Func3(struct Task *task);
|
||||
bool8 Phase2_Shards_Func4(struct Task *task);
|
||||
bool8 Phase2_Shards_Func5(struct Task *task);
|
||||
bool8 Phase2_25_Func1(struct Task *task);
|
||||
bool8 Phase2_25_Func2(struct Task *task);
|
||||
bool8 Phase2_25_Func3(struct Task *task);
|
||||
bool8 Phase2_25_Func4(struct Task *task);
|
||||
bool8 Phase2_Blackhole_Func1(struct Task *task);
|
||||
bool8 Phase2_Blackhole1_Func2(struct Task *task);
|
||||
bool8 Phase2_Blackhole1_Func3(struct Task *task);
|
||||
bool8 Phase2_Blackhole2_Func2(struct Task *task);
|
||||
bool8 Phase2_RectangularSpiral_Func1(struct Task *task);
|
||||
bool8 Phase2_RectangularSpiral_Func2(struct Task *task);
|
||||
bool8 Phase2_RectangularSpiral_Func3(struct Task *task);
|
||||
bool8 Phase2_Mugshot_Func1(struct Task *task);
|
||||
bool8 Phase2_Mugshot_Func2(struct Task *task);
|
||||
bool8 Phase2_Mugshot_Func3(struct Task *task);
|
||||
@ -197,6 +220,7 @@ void sub_8148484(s16 spriteId, s16 value);
|
||||
void sub_814849C(s16 spriteId);
|
||||
s16 sub_81484B8(s16 spriteId);
|
||||
bool8 IsPhase1Done(void);
|
||||
bool16 sub_8149048(const s16 * const *arg0, struct StructRectangularSpiral *arg1);
|
||||
void sub_814713C(struct Sprite *sprite);
|
||||
void sub_8148380(struct Sprite *sprite);
|
||||
bool8 sub_81483A8(struct Sprite *sprite);
|
||||
@ -206,9 +230,10 @@ bool8 sub_814842C(struct Sprite *sprite);
|
||||
bool8 sub_8148458(struct Sprite *sprite);
|
||||
|
||||
// iwram bss vars
|
||||
IWRAM_DATA u16 gUnknown_03001208;
|
||||
IWRAM_DATA static s16 sUnusedRectangularSpiralVar;
|
||||
IWRAM_DATA static u8 sTestingTransitionId;
|
||||
IWRAM_DATA static u8 sTestingTransitionState;
|
||||
IWRAM_DATA static struct StructRectangularSpiral sRectangularSpiralTransition[4];
|
||||
|
||||
// ewram vars
|
||||
EWRAM_DATA struct TransitionData *sTransitionStructPtr = NULL;
|
||||
@ -288,9 +313,9 @@ const TaskFunc sPhase2_Tasks[B_TRANSITION_COUNT] =
|
||||
Phase2Task_Groudon, // 23
|
||||
Phase2Task_Rayquaza, // 24
|
||||
Phase2Task_25, // 25
|
||||
Phase2Task_26, // 26
|
||||
Phase2Task_27, // 27
|
||||
Phase2Task_28, // 28
|
||||
Phase2Task_Blackhole1, // 26
|
||||
Phase2Task_Blackhole2, // 27
|
||||
Phase2Task_RectangularSpiral, // 28
|
||||
Phase2Task_29, // 29
|
||||
Phase2Task_30, // 30
|
||||
Phase2Task_31, // 31
|
||||
@ -502,6 +527,98 @@ const TransitionStateFunc sPhase2_Slice_Funcs[] =
|
||||
Phase2_Slice_Func3
|
||||
};
|
||||
|
||||
const TransitionStateFunc sPhase2_25_Funcs[] =
|
||||
{
|
||||
Phase2_25_Func1,
|
||||
Phase2_25_Func2,
|
||||
Phase2_25_Func3,
|
||||
Phase2_25_Func4
|
||||
};
|
||||
|
||||
const u8 gUnknown_085C8C64[] = {39, 119};
|
||||
const s16 gUnknown_085C8C66[] = {1, -1};
|
||||
|
||||
const TransitionStateFunc sPhase2_Blackhole1_Funcs[] =
|
||||
{
|
||||
Phase2_Blackhole_Func1,
|
||||
Phase2_Blackhole1_Func2,
|
||||
Phase2_Blackhole1_Func3
|
||||
};
|
||||
|
||||
const TransitionStateFunc sPhase2_Blackhole2_Funcs[] =
|
||||
{
|
||||
Phase2_Blackhole_Func1,
|
||||
Phase2_Blackhole2_Func2
|
||||
};
|
||||
|
||||
const s16 gUnknown_085C8C80[] = {-6, 4};
|
||||
|
||||
const TransitionStateFunc sPhase2_RectangularSpiral_Funcs[] =
|
||||
{
|
||||
Phase2_RectangularSpiral_Func1,
|
||||
Phase2_RectangularSpiral_Func2,
|
||||
Phase2_RectangularSpiral_Func3
|
||||
};
|
||||
|
||||
const s16 gUnknown_085C8C90[] = {1, 27, 275, -1};
|
||||
const s16 gUnknown_085C8C98[] = {2, 486, -1};
|
||||
const s16 gUnknown_085C8C9E[] = {3, 262, -1};
|
||||
const s16 gUnknown_085C8CA4[] = {4, 507, -2};
|
||||
const s16 gUnknown_085C8CAA[] = {1, 213, -1};
|
||||
const s16 gUnknown_085C8CB0[] = {2, 548, -2};
|
||||
const s16 gUnknown_085C8CB6[] = {3, 196, -1};
|
||||
const s16 gUnknown_085C8CBC[] = {4, 573, 309, -1};
|
||||
const s16 gUnknown_085C8CC4[] = {1, 474, -1};
|
||||
const s16 gUnknown_085C8CCA[] = {2, 295, 32, -1};
|
||||
const s16 gUnknown_085C8CD2[] = {3, 58, -1};
|
||||
const s16 gUnknown_085C8CD8[] = {4, 455, -1};
|
||||
const s16 gUnknown_085C8CDE[] = {1, 540, -1};
|
||||
const s16 gUnknown_085C8CE4[] = {2, 229, -1};
|
||||
const s16 gUnknown_085C8CEA[] = {3, 244, 28, -1};
|
||||
const s16 gUnknown_085C8CF2[] = {4, 517, -1};
|
||||
|
||||
const s16 *const gUnknown_085C8CF8[] =
|
||||
{
|
||||
gUnknown_085C8C90,
|
||||
gUnknown_085C8CA4,
|
||||
gUnknown_085C8C98,
|
||||
gUnknown_085C8C9E,
|
||||
gUnknown_085C8CEA,
|
||||
gUnknown_085C8CE4,
|
||||
gUnknown_085C8CF2,
|
||||
gUnknown_085C8CDE
|
||||
};
|
||||
|
||||
const s16 *const gUnknown_085C8D18[] =
|
||||
{
|
||||
gUnknown_085C8CBC,
|
||||
gUnknown_085C8CB0,
|
||||
gUnknown_085C8CB6,
|
||||
gUnknown_085C8CAA,
|
||||
gUnknown_085C8CCA,
|
||||
gUnknown_085C8CD8,
|
||||
gUnknown_085C8CC4,
|
||||
gUnknown_085C8CD2
|
||||
};
|
||||
|
||||
const s16 *const *const gUnknown_085C8D38[] =
|
||||
{
|
||||
gUnknown_085C8CF8,
|
||||
gUnknown_085C8D18
|
||||
};
|
||||
|
||||
const TransitionStateFunc sPhase2_Groudon_Funcs[] =
|
||||
{
|
||||
Phase2_WeatherTrio_Func1,
|
||||
Phase2_WaitPaletteFade,
|
||||
Phase2_Groudon_Func3,
|
||||
Phase2_Groudon_Func4,
|
||||
Phase2_Groudon_Func5,
|
||||
Phase2_FramesCountdown,
|
||||
Phase2_WeatherDuo_Func6,
|
||||
Phase2_WeatherDuo_Func7
|
||||
};
|
||||
|
||||
extern const u16 gFieldEffectObjectPalette10[];
|
||||
extern const u16 sBigPokeball_Tilemap[];
|
||||
extern const u16 sMugshotsTilemap[];
|
||||
@ -722,7 +839,7 @@ bool8 Phase2_Swirl_Func1(struct Task *task)
|
||||
|
||||
bool8 Phase2_Swirl_Func2(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
task->data[1] += 4;
|
||||
task->data[2] += 8;
|
||||
|
||||
@ -780,7 +897,7 @@ bool8 Phase2_Shuffle_Func2(struct Task *task)
|
||||
u8 i;
|
||||
u16 r3, r4;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
r4 = task->data[1];
|
||||
r3 = task->data[2] >> 8;
|
||||
task->data[1] += 4224;
|
||||
@ -1084,7 +1201,7 @@ bool8 Phase2_WeatherDuo_Func7(struct Task *task)
|
||||
|
||||
bool8 Phase2_BigPokeball_Func3(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
if (task->data[3] == 0 || --task->data[3] == 0)
|
||||
{
|
||||
task->data[2]++;
|
||||
@ -1104,7 +1221,7 @@ bool8 Phase2_BigPokeball_Func3(struct Task *task)
|
||||
|
||||
bool8 Phase2_BigPokeball_Func4(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
if (task->data[3] == 0 || --task->data[3] == 0)
|
||||
{
|
||||
task->data[1]--;
|
||||
@ -1124,7 +1241,7 @@ bool8 Phase2_BigPokeball_Func4(struct Task *task)
|
||||
|
||||
bool8 Phase2_BigPokeball_Func5(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
task->data[4] += 8;
|
||||
task->data[5] -= 256;
|
||||
|
||||
@ -1165,7 +1282,7 @@ bool8 Phase2_WaitPaletteFade(struct Task *task)
|
||||
|
||||
bool8 Phase2_BigPokeball_Func6(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
if (task->data[2] < 1024)
|
||||
task->data[2] += 128;
|
||||
if (task->data[1] != 0)
|
||||
@ -1359,7 +1476,7 @@ bool8 Phase2_Clockwise_BlackFade_Func1(struct Task *task)
|
||||
|
||||
bool8 Phase2_Clockwise_BlackFade_Func2(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], -1, 1, 1);
|
||||
do
|
||||
@ -1383,7 +1500,7 @@ bool8 Phase2_Clockwise_BlackFade_Func3(struct Task *task)
|
||||
s16 r1, r3;
|
||||
vu8 var = 0;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
sub_814A1AC(sTransitionStructPtr->data, 120, 80, 240, sTransitionStructPtr->data[5], 1, 1);
|
||||
|
||||
@ -1418,7 +1535,7 @@ bool8 Phase2_Clockwise_BlackFade_Func3(struct Task *task)
|
||||
|
||||
bool8 Phase2_Clockwise_BlackFade_Func4(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], 160, 1, 1);
|
||||
do
|
||||
@ -1442,7 +1559,7 @@ bool8 Phase2_Clockwise_BlackFade_Func5(struct Task *task)
|
||||
s16 r1, r2, var4;
|
||||
vu8 var = 0;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
sub_814A1AC(sTransitionStructPtr->data, 120, 80, 0, sTransitionStructPtr->data[5], 1, 1);
|
||||
|
||||
@ -1479,7 +1596,7 @@ bool8 Phase2_Clockwise_BlackFade_Func5(struct Task *task)
|
||||
|
||||
bool8 Phase2_Clockwise_BlackFade_Func6(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], 0, 1, 1);
|
||||
do
|
||||
@ -1554,7 +1671,7 @@ bool8 Phase2_Ripple_Func2(struct Task *task)
|
||||
s16 r3;
|
||||
u16 r4, r8;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
r3 = task->data[2] >> 8;
|
||||
r4 = task->data[1];
|
||||
@ -1633,7 +1750,7 @@ bool8 Phase2_Wave_Func2(struct Task *task)
|
||||
u16* toStore;
|
||||
bool8 nextFunc;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
toStore = gUnknown_02038C28[0];
|
||||
r5 = task->data[2];
|
||||
task->data[2] += 16;
|
||||
@ -1772,7 +1889,7 @@ bool8 Phase2_Mugshot_Func3(struct Task *task)
|
||||
s16 value;
|
||||
s32 mergedValue;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
toStore = gUnknown_02038C28[0];
|
||||
r5 = task->data[1];
|
||||
@ -1818,7 +1935,7 @@ bool8 Phase2_Mugshot_Func4(struct Task *task)
|
||||
u8 i;
|
||||
u16* toStore;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
for (i = 0, toStore = gUnknown_02038C28[0]; i < 160; i++, toStore++)
|
||||
{
|
||||
@ -1860,7 +1977,7 @@ bool8 Phase2_Mugshot_Func6(struct Task *task)
|
||||
sTransitionStructPtr->field_1A += 8;
|
||||
if (sub_81484B8(task->tPlayerSpriteId))
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
SetVBlankCallback(NULL);
|
||||
DmaStop(0);
|
||||
memset(gUnknown_02038C28[0], 0, 0x140);
|
||||
@ -1880,7 +1997,7 @@ bool8 Phase2_Mugshot_Func7(struct Task *task)
|
||||
{
|
||||
bool32 r6;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
r6 = TRUE;
|
||||
sTransitionStructPtr->field_18 -= 8;
|
||||
sTransitionStructPtr->field_1A += 8;
|
||||
@ -1919,7 +2036,7 @@ bool8 Phase2_Mugshot_Func7(struct Task *task)
|
||||
|
||||
bool8 Phase2_Mugshot_Func8(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
BlendPalettes(-1, 0x10, 0x7FFF);
|
||||
sTransitionStructPtr->BLDCNT = 0xFF;
|
||||
task->data[3] = 0;
|
||||
@ -1930,7 +2047,7 @@ bool8 Phase2_Mugshot_Func8(struct Task *task)
|
||||
|
||||
bool8 Phase2_Mugshot_Func9(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
task->data[3]++;
|
||||
memset(gUnknown_02038C28[0], task->data[3], 0x140);
|
||||
@ -2104,7 +2221,7 @@ bool8 Phase2_Slice_Func1(struct Task *task)
|
||||
sTransitionStructPtr->WININ = 63;
|
||||
sTransitionStructPtr->WINOUT = 0;
|
||||
sTransitionStructPtr->WIN0V = 160;
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
for (i = 0; i < 160; i++)
|
||||
{
|
||||
@ -2126,7 +2243,7 @@ bool8 Phase2_Slice_Func2(struct Task *task)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = 0;
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
|
||||
task->data[1] += (task->data[2] >> 8);
|
||||
if (task->data[1] > 0xF0)
|
||||
@ -2189,3 +2306,509 @@ void HBlankCB_Phase2_Slice(void)
|
||||
REG_BG3HOFS = var;
|
||||
}
|
||||
}
|
||||
|
||||
void Phase2Task_25(u8 taskId)
|
||||
{
|
||||
while (sPhase2_25_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
|
||||
}
|
||||
|
||||
bool8 Phase2_25_Func1(struct Task *task)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
sub_8149F08();
|
||||
dp12_8087EA4();
|
||||
|
||||
sTransitionStructPtr->WININ = 63;
|
||||
sTransitionStructPtr->WINOUT = 0;
|
||||
sTransitionStructPtr->WIN0V = 160;
|
||||
|
||||
for (i = 0; i < 0xA0; i++)
|
||||
{
|
||||
gUnknown_02038C28[1][i] = sTransitionStructPtr->field_14;
|
||||
gUnknown_02038C28[1][0xA0 + i] = 0xF0;
|
||||
gUnknown_02038C28[0][i] = sTransitionStructPtr->field_14;
|
||||
gUnknown_02038C28[0][0xA0 + i] = 0xF0;
|
||||
gUnknown_02038C28[0][0x140 + i] = 0;
|
||||
gUnknown_02038C28[0][0x1E0 + i] = 0x100;
|
||||
gUnknown_02038C28[0][0x280 + i] = 1;
|
||||
}
|
||||
|
||||
task->data[4] = 0;
|
||||
task->data[5] = 0;
|
||||
task->data[6] = 7;
|
||||
|
||||
EnableInterrupts(INTR_FLAG_HBLANK);
|
||||
|
||||
SetVBlankCallback(VBlankCB_Phase2_Slice);
|
||||
SetHBlankCallback(HBlankCB_Phase2_Slice);
|
||||
|
||||
task->tState++;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 Phase2_25_Func2(struct Task *task)
|
||||
{
|
||||
u16 i, j, k;
|
||||
u8 arr1[ARRAY_COUNT(gUnknown_085C8C64)];
|
||||
s16 arr2[ARRAY_COUNT(gUnknown_085C8C66)];
|
||||
u8 var;
|
||||
u16 *ptr4, *ptr3, *ptr1, *ptr2;
|
||||
s16 unkVar;
|
||||
|
||||
memcpy(arr1, gUnknown_085C8C64, sizeof(arr1));
|
||||
memcpy(arr2, gUnknown_085C8C66, sizeof(arr2));
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
var = 0;
|
||||
|
||||
for (i = 0; i <= task->data[5]; i++)
|
||||
{
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
for (k = 0; k < 2; k++)
|
||||
{
|
||||
unkVar = (arr1[j]) + (arr2[k] * -(i) * 2);
|
||||
if (unkVar >= 0 && (unkVar != 79 || j != 1))
|
||||
{
|
||||
ptr4 = &gUnknown_02038C28[0][unkVar + 320];
|
||||
ptr3 = &gUnknown_02038C28[0][unkVar + 480];
|
||||
ptr1 = &gUnknown_02038C28[0][unkVar + 640];
|
||||
if (*ptr4 > 0xEF)
|
||||
{
|
||||
*ptr4 = 0xF0;
|
||||
var++;
|
||||
}
|
||||
else
|
||||
{
|
||||
*ptr4 += (*ptr3 >> 8);
|
||||
if (*ptr1 <= 0x7F)
|
||||
*ptr1 *= 2;
|
||||
if (*ptr3 <= 0xFFF)
|
||||
*ptr3 += *ptr1;
|
||||
}
|
||||
ptr2 = &gUnknown_02038C28[0][unkVar];
|
||||
ptr3 = &gUnknown_02038C28[0][unkVar + 160];
|
||||
*ptr2 = sTransitionStructPtr->field_14 + *ptr4;
|
||||
*ptr3 = 0xF0 - *ptr4;
|
||||
|
||||
if (i == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
for (k = 0; k < 2; k++)
|
||||
{
|
||||
unkVar = (arr1[j] + 1) + (arr2[k] * -(i) * 2);
|
||||
if (unkVar <= 160 && (unkVar != 80 || j != 1))
|
||||
{
|
||||
ptr4 = &gUnknown_02038C28[0][unkVar + 320];
|
||||
ptr3 = &gUnknown_02038C28[0][unkVar + 480];
|
||||
ptr1 = &gUnknown_02038C28[0][unkVar + 640];
|
||||
if (*ptr4 > 0xEF)
|
||||
{
|
||||
*ptr4 = 0xF0;
|
||||
var++;
|
||||
}
|
||||
else
|
||||
{
|
||||
*ptr4 += (*ptr3 >> 8);
|
||||
if (*ptr1 <= 0x7F)
|
||||
*ptr1 *= 2;
|
||||
if (*ptr3 <= 0xFFF)
|
||||
*ptr3 += *ptr1;
|
||||
}
|
||||
ptr2 = &gUnknown_02038C28[0][unkVar];
|
||||
ptr3 = &gUnknown_02038C28[0][unkVar + 160];
|
||||
*ptr2 = sTransitionStructPtr->field_14 - *ptr4;
|
||||
*ptr3 = (*ptr4 << 8) | (0xF1);
|
||||
|
||||
if (i == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (--task->data[4] < 0)
|
||||
task->data[4] = 0;
|
||||
if (task->data[4] <= 0 && task->data[5] + 1 <= 20)
|
||||
task->data[4] = task->data[6], task->data[5]++;
|
||||
if (var > 0x9F)
|
||||
task->tState++;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_25_Func3(struct Task *task)
|
||||
{
|
||||
u16 i;
|
||||
bool32 done = TRUE;
|
||||
u16 checkVar2 = 0xFF10;
|
||||
|
||||
for (i = 0; i < 0xA0; i++)
|
||||
{
|
||||
if (gUnknown_02038C28[1][i] != 0xF0 && gUnknown_02038C28[1][i] != checkVar2)
|
||||
done = FALSE; // a break statement should be put here
|
||||
}
|
||||
|
||||
if (done == TRUE)
|
||||
task->tState++;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_25_Func4(struct Task *task)
|
||||
{
|
||||
DmaStop(0);
|
||||
sub_8149F84();
|
||||
DestroyTask(FindTaskIdByFunc(Phase2Task_25));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Phase2Task_Blackhole1(u8 taskId)
|
||||
{
|
||||
while (sPhase2_Blackhole1_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
|
||||
}
|
||||
|
||||
void Phase2Task_Blackhole2(u8 taskId)
|
||||
{
|
||||
while (sPhase2_Blackhole2_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
|
||||
}
|
||||
|
||||
bool8 Phase2_Blackhole_Func1(struct Task *task)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sub_8149F08();
|
||||
dp12_8087EA4();
|
||||
|
||||
sTransitionStructPtr->WININ = 0;
|
||||
sTransitionStructPtr->WINOUT = 63;
|
||||
sTransitionStructPtr->field_6 = 240;
|
||||
sTransitionStructPtr->WIN0V = 160;
|
||||
|
||||
for (i = 0; i < 0xA0; i++)
|
||||
{
|
||||
gUnknown_02038C28[1][i] = 0;
|
||||
}
|
||||
|
||||
SetVBlankCallback(VBlankCB1_Phase2_BigPokeball);
|
||||
|
||||
task->tState++;
|
||||
task->data[1] = 1;
|
||||
task->data[2] = 0x100;
|
||||
task->data[7] = 0;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_Blackhole1_Func3(struct Task *task)
|
||||
{
|
||||
if (task->data[7] == 1)
|
||||
{
|
||||
DmaStop(0);
|
||||
SetVBlankCallback(NULL);
|
||||
DestroyTask(FindTaskIdByFunc(task->func));
|
||||
}
|
||||
else
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
if (task->data[2] < 0x400)
|
||||
task->data[2] += 0x80;
|
||||
if (task->data[1] < 0xA0)
|
||||
task->data[1] += (task->data[2] >> 8);
|
||||
if (task->data[1] > 0xA0)
|
||||
task->data[1] = 0xA0;
|
||||
sub_814A014(gUnknown_02038C28[0], 0x78, 0x50, task->data[1]);
|
||||
if (task->data[1] == 0xA0)
|
||||
{
|
||||
task->data[7] = 1;
|
||||
sub_8149F84();
|
||||
}
|
||||
else
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA++;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_Blackhole1_Func2(struct Task *task)
|
||||
{
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
if (task->data[7] == 0)
|
||||
{
|
||||
task->data[7]++;
|
||||
task->data[1] = 0x30;
|
||||
task->data[6] = 0;
|
||||
}
|
||||
task->data[1] += gUnknown_085C8C80[task->data[6]];
|
||||
task->data[6] = (task->data[6] + 1) % 2;
|
||||
sub_814A014(gUnknown_02038C28[0], 0x78, 0x50, task->data[1]);
|
||||
if (task->data[1] < 9)
|
||||
{
|
||||
task->tState++;
|
||||
task->data[7] = 0;
|
||||
}
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_Blackhole2_Func2(struct Task *task)
|
||||
{
|
||||
u16 index; // should be s16 I think
|
||||
s16 amplitude;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA = FALSE;
|
||||
if (task->data[7] == 0)
|
||||
{
|
||||
task->data[7]++;
|
||||
task->data[5] = 2;
|
||||
task->data[6] = 2;
|
||||
}
|
||||
if (task->data[1] > 0xA0)
|
||||
task->data[1] = 0xA0;
|
||||
|
||||
sub_814A014(gUnknown_02038C28[0], 0x78, 0x50, task->data[1]);
|
||||
if (task->data[1] == 0xA0)
|
||||
{
|
||||
DmaStop(0);
|
||||
sub_8149F84();
|
||||
DestroyTask(FindTaskIdByFunc(task->func));
|
||||
}
|
||||
|
||||
index = task->data[5];
|
||||
if ((task->data[5] & 0xFF) <= 128)
|
||||
{
|
||||
amplitude = task->data[6];
|
||||
task->data[5] += 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
amplitude = task->data[6] - 1;
|
||||
task->data[5] += 16;
|
||||
}
|
||||
task->data[1] += Sin(index & 0xFF, amplitude);
|
||||
|
||||
if (task->data[1] <= 0)
|
||||
task->data[1] = 1;
|
||||
if (task->data[5] > 0xFE)
|
||||
task->data[5] >>= 8, task->data[6]++;
|
||||
|
||||
sTransitionStructPtr->VBlank_DMA++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Phase2Task_RectangularSpiral(u8 taskId)
|
||||
{
|
||||
while (sPhase2_RectangularSpiral_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
|
||||
}
|
||||
|
||||
bool8 Phase2_RectangularSpiral_Func1(struct Task *task)
|
||||
{
|
||||
u16 *dst1, *dst2;
|
||||
|
||||
sub_8149F58(&dst1, &dst2);
|
||||
CpuCopy16(sShrinkingBoxTileset, dst2, 0x20);
|
||||
CpuCopy16(sShrinkingBoxTileset + 0x70, dst2 + 0x20, 0x20);
|
||||
CpuFill16(0xF000, dst1, 0x800);
|
||||
LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
|
||||
|
||||
task->data[3] = 1;
|
||||
task->tState++;
|
||||
|
||||
sRectangularSpiralTransition[0].field_0 = 0;
|
||||
sRectangularSpiralTransition[0].field_2 = -1;
|
||||
sRectangularSpiralTransition[0].field_4 = 1;
|
||||
sRectangularSpiralTransition[0].field_6 = 308;
|
||||
sRectangularSpiralTransition[0].field_8 = 0;
|
||||
|
||||
sRectangularSpiralTransition[1].field_0 = 0;
|
||||
sRectangularSpiralTransition[1].field_2 = -1;
|
||||
sRectangularSpiralTransition[1].field_4 = 1;
|
||||
sRectangularSpiralTransition[1].field_6 = 308;
|
||||
sRectangularSpiralTransition[1].field_8 = 0;
|
||||
|
||||
sRectangularSpiralTransition[2].field_0 = 0;
|
||||
sRectangularSpiralTransition[2].field_2 = -3;
|
||||
sRectangularSpiralTransition[2].field_4 = 1;
|
||||
sRectangularSpiralTransition[2].field_6 = 307;
|
||||
sRectangularSpiralTransition[2].field_8 = 0;
|
||||
|
||||
sRectangularSpiralTransition[3].field_0 = 0;
|
||||
sRectangularSpiralTransition[3].field_2 = -3;
|
||||
sRectangularSpiralTransition[3].field_4 = 1;
|
||||
sRectangularSpiralTransition[3].field_6 = 307;
|
||||
sRectangularSpiralTransition[3].field_8 = 0;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_RectangularSpiral_Func2(struct Task *task)
|
||||
{
|
||||
u16 *dst1, *dst2;
|
||||
u8 i;
|
||||
u16 j;
|
||||
bool32 done = TRUE;
|
||||
|
||||
sub_8149F58(&dst1, &dst2);
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
for (j = 0; j < ARRAY_COUNT(sRectangularSpiralTransition); j++)
|
||||
{
|
||||
s16 var = 0, var2 = 0;
|
||||
s32 var3 = 0;
|
||||
|
||||
if (sub_8149048(gUnknown_085C8D38[j / 2], &sRectangularSpiralTransition[j]))
|
||||
{
|
||||
u32 one;
|
||||
done = FALSE;
|
||||
var = sRectangularSpiralTransition[j].field_2;
|
||||
one = 1;
|
||||
if ((j & 1) == one)
|
||||
var = 0x27D - var;
|
||||
|
||||
var2 = var % 32;
|
||||
var3 = var / 32 * 32;
|
||||
|
||||
dst1[var3 + var2] = 0xF002;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (done == TRUE)
|
||||
task->tState++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_RectangularSpiral_Func3(struct Task *task)
|
||||
{
|
||||
DmaStop(0);
|
||||
sub_8149F84();
|
||||
DestroyTask(FindTaskIdByFunc(task->func));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool16 sub_8149048(const s16 * const *arg0, struct StructRectangularSpiral *arg1)
|
||||
{
|
||||
const s16 *array = arg0[arg1->field_0];
|
||||
if (array[arg1->field_4] == -1)
|
||||
return FALSE;
|
||||
|
||||
// ??
|
||||
sUnusedRectangularSpiralVar = array[0];
|
||||
sUnusedRectangularSpiralVar = array[1];
|
||||
sUnusedRectangularSpiralVar = array[2];
|
||||
sUnusedRectangularSpiralVar = array[3];
|
||||
|
||||
switch (array[0])
|
||||
{
|
||||
case 1:
|
||||
arg1->field_2 += 0x1;
|
||||
break;
|
||||
case 2:
|
||||
arg1->field_2 -= 0x1;
|
||||
break;
|
||||
case 3:
|
||||
arg1->field_2 -= 0x20;
|
||||
break;
|
||||
case 4:
|
||||
arg1->field_2 += 0x20;
|
||||
break;
|
||||
}
|
||||
|
||||
if (arg1->field_2 > 0x27F || array[arg1->field_4] == -1)
|
||||
return FALSE;
|
||||
|
||||
if (arg1->field_8 == 0 && array[arg1->field_4] == -2)
|
||||
{
|
||||
arg1->field_8 = 1;
|
||||
arg1->field_4 = 1;
|
||||
arg1->field_2 = arg1->field_6;
|
||||
arg1->field_0 = 4;
|
||||
}
|
||||
|
||||
if (arg1->field_2 == array[arg1->field_4])
|
||||
{
|
||||
(arg1->field_0)++;
|
||||
if (arg1->field_8 == 1)
|
||||
{
|
||||
if (arg1->field_0 > 7)
|
||||
{
|
||||
(arg1->field_4)++;
|
||||
(arg1->field_0) = 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (arg1->field_0 > 3)
|
||||
{
|
||||
(arg1->field_4)++;
|
||||
(arg1->field_0) = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Phase2Task_Groudon(u8 taskId)
|
||||
{
|
||||
while (sPhase2_Groudon_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
|
||||
}
|
||||
|
||||
bool8 Phase2_Groudon_Func3(struct Task *task)
|
||||
{
|
||||
u16 *dst1, *dst2;
|
||||
|
||||
sub_8149F58(&dst1, &dst2);
|
||||
CpuFill16(0, dst1, 0x800);
|
||||
LZ77UnCompVram(gUnknown_085BE51C, dst2);
|
||||
LZ77UnCompVram(gUnknown_085BEA88, dst1);
|
||||
|
||||
task->tState++;
|
||||
task->data[1] = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_Groudon_Func4(struct Task *task)
|
||||
{
|
||||
if (task->data[1] % 3 == 0)
|
||||
{
|
||||
u16 var = (task->data[1] % 30) / 3;
|
||||
LoadPalette(gUnknown_085BF0A0 + (var * 16), 0xF0, 0x20);
|
||||
}
|
||||
if (++task->data[1] > 58)
|
||||
{
|
||||
task->tState++;
|
||||
task->data[1] = 0;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Phase2_Groudon_Func5(struct Task *task)
|
||||
{
|
||||
if (task->data[1] % 5 == 0)
|
||||
{
|
||||
s16 var = task->data[1] / 5;
|
||||
LoadPalette(gUnknown_085BF2A0 + (var * 16), 0xF0, 0x20);
|
||||
}
|
||||
if (++task->data[1] > 68)
|
||||
{
|
||||
task->tState++;
|
||||
task->data[1] = 0;
|
||||
task->tFrames = 30;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -74,11 +74,6 @@ gUnknown_03001204: @ 3001204
|
||||
.space 0x4
|
||||
|
||||
.include "src/battle_transition.o"
|
||||
|
||||
.align 4
|
||||
|
||||
gUnknown_03001210: @ 3001210
|
||||
.space 0x30
|
||||
|
||||
gUnknown_03001240: @ 3001240
|
||||
.space 0x30
|
||||
|
Loading…
Reference in New Issue
Block a user