mirror of
https://github.com/YohannDR/mzm.git
synced 2024-10-07 02:23:20 +00:00
Decompile getting_fully_powered_suit.c cutscene
This commit is contained in:
parent
55699eda45
commit
623f9e14b3
@ -21340,8 +21340,8 @@ unk_61f0c: @ 0x08061f0c
|
||||
lbl_08061f20: .4byte 0x08754bc4
|
||||
lbl_08061f24: .4byte 0x030013ae
|
||||
|
||||
thumb_func_start sub_08061f28
|
||||
sub_08061f28: @ 0x08061f28
|
||||
thumb_func_start unk_61f28
|
||||
unk_61f28: @ 0x08061f28
|
||||
ldr r0, lbl_08061f3c @ =0x08754bc4
|
||||
ldr r2, [r0]
|
||||
movs r0, #0
|
||||
|
File diff suppressed because it is too large
Load Diff
14
database.txt
14
database.txt
@ -740,6 +740,16 @@ cutscenes/MechaSeesSamus/EyeCover.gfx.lz;2671;0x3c3334;4
|
||||
cutscenes/MechaSeesSamus/Palette.pal;160;0x3c5cf0;2
|
||||
cutscenes/MechaSeesSamus/Metal.tt;368;0x3c5e30;4
|
||||
|
||||
# Getting fully powered suit
|
||||
|
||||
cutscenes/GettingFullyPoweredSuit/Palette.pal;304;0x3c66a0;2
|
||||
cutscenes/GettingFullyPoweredSuit/Samus.gfx.lz;2608;0x3c6900;4
|
||||
cutscenes/GettingFullyPoweredSuit/RingSparkles.gfx.lz;646;0x3c91c0;4
|
||||
cutscenes/GettingFullyPoweredSuit/Samus.tt;387;0x3c9bd8;4
|
||||
cutscenes/GettingFullyPoweredSuit/Background.gfx.lz;15072;0x3ca1e4;1
|
||||
cutscenes/GettingFullyPoweredSuit/Background.tt;734;0x3cd814;4
|
||||
cutscenes/GettingFullyPoweredSuit/RingPalette.pal;112;0x3ce38c;2
|
||||
|
||||
# Blobs
|
||||
|
||||
Blob_8cad0_8cee2.bin;1042;0x8cad0;1
|
||||
@ -752,10 +762,10 @@ Blob_34099c_345868.bin;20172;0x34099c;1
|
||||
Blob_345d00_360130.bin;107568;0x345d00;1
|
||||
Blob_3602e8_36bdac.bin;47812;0x3602e8;1
|
||||
Blob_375cc4_386f60.bin;70300;0x375cc4;1
|
||||
Blob_3c63f0_45f45c.bin;626796;0x3c63f0;1
|
||||
Blob_3ce46c_45f45c.bin;593904;0x3c63f0;1
|
||||
Blob_479400_754bb4.bin;2996148;0x479400;1
|
||||
Blob_754bd0_75e6a8.bin;39640;0x754bd0;1
|
||||
Blob_75fae4_75fd88.bin;676;0x75fae4;1
|
||||
Blob_75fdbc_75fde0.bin;36;0x75fdbc;1
|
||||
Blob_75fdfc_75fe5c.bin;96;0x75fdfc;1
|
||||
Blob_76002c_7f7734.bin;620296;0x76002c;1
|
||||
Blob_760044_7f7734.bin;620272;0x760044c;1
|
||||
|
22
include/cutscenes/getting_fully_powered_suit.h
Normal file
22
include/cutscenes/getting_fully_powered_suit.h
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef GETTING_FULLY_POWERED_SUIT_CUTSCENE
|
||||
#define GETTING_FULLY_POWERED_SUIT_CUTSCENE
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/cutscene.h"
|
||||
|
||||
#define GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_GOING_UP 1
|
||||
#define GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_AROUND_RING1 2
|
||||
#define GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_AROUND_RING2 3
|
||||
#define GETTING_FULLY_POWERED_SUIT_OAM_ID_RING_BOTTOM 4
|
||||
#define GETTING_FULLY_POWERED_SUIT_OAM_ID_RING_TOP 5
|
||||
|
||||
u8 GettingFullyPoweredSuitAnimation(void);
|
||||
void GettingFullyPoweredSuitUpdateRingPalette(struct CutscenePaletteData* pPalette);
|
||||
void GettingFullyPoweredSuitUpdateRing(struct CutsceneOamData* pOam);
|
||||
void GettingFullyPoweredSuitUpdateSparkleAroundRing(struct CutsceneOamData* pOam, u8 sparkleId);
|
||||
void GettingFullyPoweredSuitUpdateSparkleGoingUp(struct CutsceneOamData* pOam, u8 sparkleId);
|
||||
u8 GettingFullyPoweredSuitInit(void);
|
||||
u8 GettingFullyPoweredSuitSubroutine(void);
|
||||
void GettingFullyPoweredSuitProcessOAM(void);
|
||||
|
||||
#endif /* GETTING_FULLY_POWERED_SUIT_CUTSCENE */
|
23
include/data/cutscenes/getting_fully_powered_suit_data.h
Normal file
23
include/data/cutscenes/getting_fully_powered_suit_data.h
Normal file
@ -0,0 +1,23 @@
|
||||
#ifndef GETTING_FULLY_POWERED_SUIT_DATA_H
|
||||
#define GETTING_FULLY_POWERED_SUIT_DATA_H
|
||||
|
||||
#include "structs/cutscene.h"
|
||||
|
||||
extern const struct CutscenePageData sGettingFullyPoweredSuitPageData[3];
|
||||
extern const struct CutscenePaletteData sGettingFullyPoweredSuitPaletteData;
|
||||
extern const u8 sGettingFullyPoweredSuitRingPaletteRows[7];
|
||||
extern const u16 sGettingFullyPoweredSuitRingSparklesSpawnPositions[6][2];
|
||||
extern const u16 sGettingFullyPoweredSuit_3c642c[6];
|
||||
|
||||
extern const struct OamArray sGettingFullyPoweredSuitCutsceneOAM[6];
|
||||
|
||||
|
||||
extern const u16 sGettingFullyPoweredSuitPAL[19 * 16];
|
||||
extern const u32 sGettingFullyPoweredSuitSamusGFX[2608];
|
||||
extern const u32 sGettingFullyPoweredSuitRingSparklesGFX[646];
|
||||
extern const u32 sGettingFullyPoweredSuitSamusTileTable[387];
|
||||
extern const u8 sGettingFullyPoweredSuitBackgroundGFX[15072];
|
||||
extern const u32 sGettingFullyPoweredSuitBackgroundTileTable[734];
|
||||
extern const u16 sGettingFullyPoweredSuitRingPAL[7 * 16];
|
||||
|
||||
#endif /* GETTING_FULLY_POWERED_SUIT_DATA_H */
|
@ -0,0 +1,9 @@
|
||||
#ifndef INTERNAL_GETTING_FULLY_POWERED_SUIT_DATA_H
|
||||
#define INTERNAL_GETTING_FULLY_POWERED_SUIT_DATA_H
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/cutscene.h"
|
||||
|
||||
extern const struct CutsceneSubroutineData sGettingFullyPoweredSuitSubroutineData[3];
|
||||
|
||||
#endif /* INTERNAL_GETTING_FULLY_POWERED_SUIT_DATA_H */
|
@ -28,7 +28,7 @@
|
||||
#define REG_WIN0V (REG_BASE + 0x044)
|
||||
#define REG_WIN1V (REG_BASE + 0x046)
|
||||
#define REG_WININ (REG_BASE + 0x048)
|
||||
#define REG_WINOUT (REG_BASE + 0x048)
|
||||
#define REG_WINOUT (REG_BASE + 0x04A)
|
||||
#define REG_MOSAIC (REG_BASE + 0x04C)
|
||||
#define REG_BLDCNT (REG_BASE + 0x050)
|
||||
#define REG_BLDALPHA (REG_BASE + 0x052)
|
||||
|
@ -188,7 +188,7 @@ struct CutsceneData {
|
||||
extern u8 gCutsceneToSkip;
|
||||
extern i8 gCurrentCutscene;
|
||||
|
||||
extern i8 sOamXOffset_NonGameplay;
|
||||
extern i8 sOamYOffset_NonGameplay;
|
||||
extern i8 gOamXOffset_NonGameplay;
|
||||
extern i8 gOamYOffset_NonGameplay;
|
||||
|
||||
#endif
|
||||
|
@ -254,8 +254,8 @@ SECTIONS {
|
||||
. = 0x00005704; gClipdataCodePointer = .;
|
||||
. = 0x00005708; gCurrentRoomScrollDataPointer = .;
|
||||
. = 0x00005714; gUnk_3005714 = .;
|
||||
. = 0x00005804; sOamXOffset_NonGameplay = .;
|
||||
. = 0x00005805; sOamYOffset_NonGameplay = .;
|
||||
. = 0x00005804; gOamXOffset_NonGameplay = .;
|
||||
. = 0x00005805; gOamYOffset_NonGameplay = .;
|
||||
|
||||
|
||||
. = 0x000058e0; src/libgcc/fp-bit-base.o(.bss);
|
||||
@ -400,6 +400,7 @@ SECTIONS {
|
||||
src/cutscenes/ridley_landing.o(.text);
|
||||
src/cutscenes/ridley_spawn.o(.text);
|
||||
src/cutscenes/mecha_sees_samus.o(.text);
|
||||
src/cutscenes/getting_fully_powered_suit.o(.text);
|
||||
asm/disasm_0x08065bd8.o(.text);
|
||||
src/intro.o(.text);
|
||||
asm/disasm_0x0808117c.o(.text);
|
||||
@ -517,6 +518,7 @@ SECTIONS {
|
||||
src/data/cutscenes/ridley_landing_data.o(.rodata);
|
||||
src/data/cutscenes/ridley_spawn_data.o(.rodata);
|
||||
src/data/cutscenes/mecha_sees_samus_data.o(.rodata);
|
||||
src/data/cutscenes/getting_fully_powered_suit_data.o(.rodata);
|
||||
/* 3c63f0-45f45c */
|
||||
src/data/intro_data.o(.rodata);
|
||||
/* 479400-754bb4 */
|
||||
@ -533,6 +535,7 @@ SECTIONS {
|
||||
src/data/cutscenes/internal_ridley_landing_data.o(.rodata);
|
||||
src/data/cutscenes/internal_ridley_spawn_data.o(.rodata);
|
||||
src/data/cutscenes/internal_mecha_sees_samus_data.o(.rodata);
|
||||
src/data/cutscenes/internal_getting_fully_powered_suit_data.o(.rodata);
|
||||
/* 76002c-7f7734 */
|
||||
} >rom
|
||||
}
|
||||
|
@ -245,7 +245,7 @@ void CutsceneInit(void)
|
||||
CallbackSetVBlank(CutsceneLoadingVBlank);
|
||||
BitFill(3, 0, &gNonGameplayRAM, sizeof(union NonGameplayRAM), 0x20);
|
||||
|
||||
sOamXOffset_NonGameplay = sOamYOffset_NonGameplay = 0;
|
||||
gOamXOffset_NonGameplay = gOamYOffset_NonGameplay = 0;
|
||||
gNextOamSlot = 0;
|
||||
ResetFreeOAM();
|
||||
|
||||
|
368
src/cutscenes/getting_fully_powered_suit.c
Normal file
368
src/cutscenes/getting_fully_powered_suit.c
Normal file
@ -0,0 +1,368 @@
|
||||
#include "cutscenes/getting_fully_powered_suit.h"
|
||||
#include "cutscenes/cutscene_utils.h"
|
||||
#include "macros.h"
|
||||
|
||||
#include "data/shortcut_pointers.h"
|
||||
#include "data/generic_data.h"
|
||||
#include "data/cutscenes/getting_fully_powered_suit_data.h"
|
||||
#include "data/cutscenes/internal_getting_fully_powered_suit_data.h"
|
||||
|
||||
#include "constants/audio.h"
|
||||
#include "constants/cutscene.h"
|
||||
#include "constants/game_state.h"
|
||||
|
||||
#include "structs/game_state.h"
|
||||
#include "structs/display.h"
|
||||
|
||||
/**
|
||||
* @brief 65bd8 | 204 | Handles the animation part (entire cutscene)
|
||||
*
|
||||
* @return u8 FALSE
|
||||
*/
|
||||
u8 GettingFullyPoweredSuitAnimation(void)
|
||||
{
|
||||
i32 i;
|
||||
u16* bgPosition;
|
||||
|
||||
switch (CUTSCENE_DATA.timeInfo.subStage)
|
||||
{
|
||||
case 0:
|
||||
CutsceneStartSpriteEffect(CUTSCENE_DATA.bldcnt, 12, 8, 1);
|
||||
CUTSCENE_DATA.timeInfo.timer = 0;
|
||||
CUTSCENE_DATA.timeInfo.subStage++;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (CUTSCENE_DATA.timeInfo.timer > 20)
|
||||
{
|
||||
CUTSCENE_DATA.oam[6].unk_D = 2;
|
||||
CUTSCENE_DATA.timeInfo.timer = 0;
|
||||
CUTSCENE_DATA.timeInfo.subStage++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (CUTSCENE_DATA.oam[6].yPosition <= BLOCK_SIZE * 17)
|
||||
{
|
||||
CUTSCENE_DATA.timeInfo.timer = 0;
|
||||
CUTSCENE_DATA.timeInfo.subStage++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
bgPosition = CutsceneGetBGVOFSPointer(sGettingFullyPoweredSuitPageData[0].bg);
|
||||
if (*bgPosition - 4 > BLOCK_SIZE * 32)
|
||||
(*bgPosition) -= 4;
|
||||
else
|
||||
{
|
||||
*bgPosition = BLOCK_SIZE * 32;
|
||||
CUTSCENE_DATA.timeInfo.timer = 0;
|
||||
CUTSCENE_DATA.timeInfo.subStage++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if (CUTSCENE_DATA.oam[6].yPosition < BLOCK_SIZE * 8)
|
||||
{
|
||||
CUTSCENE_DATA.dispcnt ^= DCNT_WIN1;
|
||||
CutsceneStartSpriteEffect(CUTSCENE_DATA.bldcnt | BLDCNT_BG0_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BG1_FIRST_TARGET_PIXEL | BLDCNT_BG2_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BG3_FIRST_TARGET_PIXEL | BLDCNT_OBJ_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BACKDROP_FIRST_TARGET_PIXEL, 16, 8, 1);
|
||||
|
||||
CUTSCENE_DATA.oam[6].unk_D |= 4;
|
||||
CUTSCENE_DATA.timeInfo.timer = 0;
|
||||
CUTSCENE_DATA.timeInfo.subStage++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if (CUTSCENE_DATA.timeInfo.timer > 60)
|
||||
{
|
||||
CUTSCENE_DATA.timeInfo.timer = 0;
|
||||
CUTSCENE_DATA.timeInfo.subStage++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 6:
|
||||
unk_61f28();
|
||||
CUTSCENE_DATA.timeInfo.stage++;
|
||||
MACRO_CUTSCENE_NEXT_STAGE();
|
||||
break;
|
||||
}
|
||||
|
||||
GettingFullyPoweredSuitUpdateRingPalette(&CUTSCENE_DATA.paletteData[0]);
|
||||
*CutsceneGetBGVOFSPointer(sGettingFullyPoweredSuitPageData[1].bg) = *CutsceneGetBGHOFSPointer(sGettingFullyPoweredSuitPageData[0].bg);
|
||||
|
||||
GettingFullyPoweredSuitUpdateRing(&CUTSCENE_DATA.oam[6]);
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
GettingFullyPoweredSuitUpdateSparkleAroundRing(&CUTSCENE_DATA.oam[i], i);
|
||||
|
||||
// ...
|
||||
|
||||
i = -0x800 + *CutsceneGetBGVOFSPointer(sGettingFullyPoweredSuitPageData[0].bg);
|
||||
i = (CUTSCENE_DATA.oam[6].yPosition - i >> 2) + 8;
|
||||
if (i < 0)
|
||||
i = 0;
|
||||
else if (i > 0xA0)
|
||||
i = 0xA0;
|
||||
|
||||
write16(REG_WIN1V, i);
|
||||
|
||||
for (i = 7; i < 12; i++)
|
||||
GettingFullyPoweredSuitUpdateSparkleGoingUp(&CUTSCENE_DATA.oam[i], i);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 65ddc | 60 | Updates the ring palette
|
||||
*
|
||||
* @param pPalette Cutscene palette data pointer
|
||||
*/
|
||||
void GettingFullyPoweredSuitUpdateRingPalette(struct CutscenePaletteData* pPalette)
|
||||
{
|
||||
if (!(pPalette->active & TRUE))
|
||||
return;
|
||||
|
||||
if (pPalette->timer != 0)
|
||||
{
|
||||
pPalette->timer--;
|
||||
return;
|
||||
}
|
||||
|
||||
pPalette->timer = pPalette->maxTimer;
|
||||
pPalette->paletteRow++;
|
||||
|
||||
if (pPalette->paletteRow >= ARRAY_SIZE(sGettingFullyPoweredSuitRingPaletteRows))
|
||||
pPalette->paletteRow = 0;
|
||||
|
||||
DMATransfer(3, &sGettingFullyPoweredSuitRingPAL[sGettingFullyPoweredSuitRingPaletteRows[pPalette->paletteRow] * 16],
|
||||
PALRAM_BASE + 0x340, 32, 0x10);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 65e3c | 70 | Updates the ring object
|
||||
*
|
||||
* @param pOam Cutscene OAM data pointer
|
||||
*/
|
||||
void GettingFullyPoweredSuitUpdateRing(struct CutsceneOamData* pOam)
|
||||
{
|
||||
u16 unk;
|
||||
|
||||
if (pOam->unk_D & 4)
|
||||
{
|
||||
unk = ++pOam->unk_18;
|
||||
pOam->unk_10 = -4 - (unk / 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
pOam->unk_10 = -4;
|
||||
pOam->unk_18 = 0;
|
||||
}
|
||||
|
||||
if (pOam->unk_D & 2)
|
||||
{
|
||||
pOam->yPosition += pOam->unk_10;
|
||||
if (pOam->yPosition < -0xBF)
|
||||
pOam->unk_D = 0;
|
||||
}
|
||||
|
||||
CUTSCENE_DATA.oam[13].yPosition = pOam->yPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 65eac | c4 | Updates a sparkle around the ring
|
||||
*
|
||||
* @param pOam Cutscene OAM data pointer
|
||||
* @param sparkleId Sparkle ID
|
||||
*/
|
||||
void GettingFullyPoweredSuitUpdateSparkleAroundRing(struct CutsceneOamData* pOam, u8 sparkleId)
|
||||
{
|
||||
if (pOam->unk_D == 0)
|
||||
{
|
||||
pOam->timer = sRandomNumberTable[(gFrameCounter8Bit + sparkleId) & 0xFF] & 0x1F;
|
||||
pOam->unk_D = 1;
|
||||
}
|
||||
else if (pOam->unk_D == 1)
|
||||
{
|
||||
if (pOam->timer != 0)
|
||||
pOam->timer--;
|
||||
else
|
||||
{
|
||||
if (sRandomNumberTable[gFrameCounter8Bit] & 1)
|
||||
update_cutscene_oam_data_id(pOam, GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_AROUND_RING2);
|
||||
else
|
||||
update_cutscene_oam_data_id(pOam, GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_AROUND_RING1);
|
||||
|
||||
pOam->unk_D = 2;
|
||||
}
|
||||
}
|
||||
else if (!pOam->idChanged)
|
||||
pOam->unk_D = 0;
|
||||
|
||||
if (pOam->idChanged)
|
||||
{
|
||||
pOam->xPosition = CUTSCENE_DATA.oam[6].xPosition + sGettingFullyPoweredSuitRingSparklesSpawnPositions[sparkleId][0];
|
||||
pOam->yPosition = CUTSCENE_DATA.oam[6].yPosition + sGettingFullyPoweredSuitRingSparklesSpawnPositions[sparkleId][1];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 65f70 | b0 | Updates a sparkle going up
|
||||
*
|
||||
* @param pOam Cutscene OAM data pointer
|
||||
* @param sparkleId Sparkle ID
|
||||
*/
|
||||
void GettingFullyPoweredSuitUpdateSparkleGoingUp(struct CutsceneOamData* pOam, u8 sparkleId)
|
||||
{
|
||||
u16 unk;
|
||||
|
||||
if (pOam->unk_D & 2)
|
||||
{
|
||||
unk = ++pOam->unk_18;
|
||||
pOam->unk_10 += (unk / 16);
|
||||
|
||||
if (pOam->unk_10 > 0x20)
|
||||
pOam->unk_10 = 0x20;
|
||||
|
||||
pOam->yPosition -= pOam->unk_10;
|
||||
if (pOam->yPosition >= -0xDF)
|
||||
return;
|
||||
|
||||
pOam->unk_D = 0;
|
||||
pOam->timer = sGettingFullyPoweredSuitBackgroundGFX[gFrameCounter8Bit + sparkleId] & 0x3F;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pOam->timer == 0)
|
||||
{
|
||||
pOam->unk_D = 2;
|
||||
pOam->unk_10 = 0;
|
||||
pOam->xPosition = sGettingFullyPoweredSuit_3c642c[sparkleId - 7] + (sRandomNumberTable[gFrameCounter8Bit] & 0x3F);
|
||||
pOam->yPosition = BLOCK_SIZE * 11;
|
||||
pOam->unk_18 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
pOam->timer--;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 66020 | 33c | Initializes the getting fully powered suit cutscene
|
||||
*
|
||||
* @return u8 FALSE
|
||||
*/
|
||||
u8 GettingFullyPoweredSuitInit(void)
|
||||
{
|
||||
i32 i;
|
||||
|
||||
unk_61f0c();
|
||||
DMATransfer(3, sGettingFullyPoweredSuitPAL, PALRAM_BASE, 352, 0x10);
|
||||
DMATransfer(3, PALRAM_BASE, PALRAM_BASE + 0x200, 0x200, 0x20);
|
||||
write16(PALRAM_BASE, 0);
|
||||
|
||||
LZ77UncompVRAM(sGettingFullyPoweredSuitSamusGFX, VRAM_BASE + sGettingFullyPoweredSuitPageData[0].graphicsPage * 0x4000);
|
||||
LZ77UncompVRAM(sGettingFullyPoweredSuitSamusTileTable, VRAM_BASE + sGettingFullyPoweredSuitPageData[0].tiletablePage * 0x800);
|
||||
|
||||
LZ77UncompVRAM(sGettingFullyPoweredSuitBackgroundGFX, VRAM_BASE + sGettingFullyPoweredSuitPageData[1].graphicsPage * 0x4000);
|
||||
LZ77UncompVRAM(sGettingFullyPoweredSuitBackgroundTileTable, VRAM_BASE + sGettingFullyPoweredSuitPageData[1].tiletablePage * 0x800);
|
||||
|
||||
LZ77UncompVRAM(sGettingFullyPoweredSuitRingSparklesGFX, VRAM_BASE + 0x10000);
|
||||
|
||||
CutsceneSetBGCNTPageData(sGettingFullyPoweredSuitPageData[0]);
|
||||
CutsceneSetBGCNTPageData(sGettingFullyPoweredSuitPageData[1]);
|
||||
|
||||
CutsceneReset();
|
||||
|
||||
CUTSCENE_DATA.bldcnt = BLDCNT_BG2_FIRST_TARGET_PIXEL | BLDCNT_BRIGHTNESS_INCREASE_EFFECT |
|
||||
BLDCNT_BG0_SECOND_TARGET_PIXEL | BLDCNT_BG1_SECOND_TARGET_PIXEL | BLDCNT_BG3_SECOND_TARGET_PIXEL |
|
||||
BLDCNT_OBJ_SECOND_TARGET_PIXEL | BLDCNT_BACKDROP_SECOND_TARGET_PIXEL;
|
||||
|
||||
gWrittenToBLDY_NonGameplay = 0;
|
||||
gWrittenToBLDALPHA_L = 0;
|
||||
gWrittenToBLDALPHA_H = 16;
|
||||
|
||||
CutsceneSetBackgroundPosition(CUTSCENE_BG_EDIT_HOFS, sGettingFullyPoweredSuitPageData[0].bg, 0x800);
|
||||
CutsceneSetBackgroundPosition(CUTSCENE_BG_EDIT_HOFS, sGettingFullyPoweredSuitPageData[1].bg, 0x800);
|
||||
|
||||
CutsceneSetBackgroundPosition(CUTSCENE_BG_EDIT_VOFS, sGettingFullyPoweredSuitPageData[0].bg, 0xA80);
|
||||
CutsceneSetBackgroundPosition(CUTSCENE_BG_EDIT_VOFS, sGettingFullyPoweredSuitPageData[1].bg, 0xA80);
|
||||
|
||||
CUTSCENE_DATA.oam[6].xPosition = BLOCK_SIZE * 8 - QUARTER_BLOCK_SIZE;
|
||||
CUTSCENE_DATA.oam[6].yPosition = BLOCK_SIZE * 22;
|
||||
CUTSCENE_DATA.oam[6].priority = sGettingFullyPoweredSuitPageData[0].priority;
|
||||
CUTSCENE_DATA.oam[6].unk_B_4 = 0;
|
||||
CUTSCENE_DATA.oam[6].unk_C_0 = 2;
|
||||
|
||||
update_cutscene_oam_data_id(&CUTSCENE_DATA.oam[6], GETTING_FULLY_POWERED_SUIT_OAM_ID_RING_BOTTOM);
|
||||
CUTSCENE_DATA.oam[13] = CUTSCENE_DATA.oam[6];
|
||||
CUTSCENE_DATA.oam[13].priority = sGettingFullyPoweredSuitPageData[0].priority + 1;
|
||||
update_cutscene_oam_data_id(&CUTSCENE_DATA.oam[13], GETTING_FULLY_POWERED_SUIT_OAM_ID_RING_TOP);
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
CUTSCENE_DATA.oam[i].priority = sGettingFullyPoweredSuitPageData[0].priority;
|
||||
CUTSCENE_DATA.oam[i].unk_C_0 = 2;
|
||||
}
|
||||
|
||||
CUTSCENE_DATA.oam[7].xPosition = sGettingFullyPoweredSuit_3c642c[0];
|
||||
CUTSCENE_DATA.oam[7].yPosition = BLOCK_SIZE * 11;
|
||||
CUTSCENE_DATA.oam[7].priority = sGettingFullyPoweredSuitPageData[0].priority;
|
||||
CUTSCENE_DATA.oam[i].timer = sRandomNumberTable[gFrameCounter8Bit] & 0x3F;
|
||||
update_cutscene_oam_data_id(&CUTSCENE_DATA.oam[7], GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_GOING_UP);
|
||||
|
||||
for (i = 8; i < 12; i++)
|
||||
{
|
||||
CUTSCENE_DATA.oam[i] = CUTSCENE_DATA.oam[7];
|
||||
|
||||
CUTSCENE_DATA.oam[i].xPosition = sGettingFullyPoweredSuit_3c642c[i - 7];
|
||||
CUTSCENE_DATA.oam[i].timer = sGettingFullyPoweredSuitBackgroundGFX[gFrameCounter8Bit + i] & 0x3F;
|
||||
}
|
||||
|
||||
CUTSCENE_DATA.paletteData[0] = sGettingFullyPoweredSuitPaletteData;
|
||||
CUTSCENE_DATA.dispcnt = DCNT_OBJ | DCNT_WIN1 | sGettingFullyPoweredSuitPageData[0].bg | sGettingFullyPoweredSuitPageData[1].bg;
|
||||
|
||||
write8(REG_WINOUT, 0x3F);
|
||||
write8(REG_WININ + 1, 0x1F);
|
||||
write16(REG_WIN1H, 0xF0);
|
||||
write16(REG_WIN1V, 0xA0);
|
||||
|
||||
gPauseScreenFlag = PAUSE_SCREEN_NONE;
|
||||
PlayMusic(MUSIC_GETTING_FULLY_POWERED_SUIT_CUTSCENE, 0);
|
||||
|
||||
CUTSCENE_DATA.timeInfo.timer = 0;
|
||||
CUTSCENE_DATA.timeInfo.subStage = 0;
|
||||
CUTSCENE_DATA.timeInfo.stage++;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 6635c | 34 | Subroutine for the getting fully powered suit cutscene
|
||||
*
|
||||
* @return u8 bool, ended
|
||||
*/
|
||||
u8 GettingFullyPoweredSuitSubroutine(void)
|
||||
{
|
||||
u8 ended;
|
||||
|
||||
ended = sGettingFullyPoweredSuitSubroutineData[CUTSCENE_DATA.timeInfo.stage].pFunction();
|
||||
CutsceneUpdateBackgroundsPosition(TRUE);
|
||||
GettingFullyPoweredSuitProcessOAM();
|
||||
|
||||
return ended;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 66390 | 38 | Processes the OAM
|
||||
*
|
||||
*/
|
||||
void GettingFullyPoweredSuitProcessOAM(void)
|
||||
{
|
||||
gNextOamSlot = 0;
|
||||
process_cutscene_oam(sGettingFullyPoweredSuitSubroutineData[CUTSCENE_DATA.timeInfo.stage].oamLength, CUTSCENE_DATA.oam, sGettingFullyPoweredSuitCutsceneOAM);
|
||||
ResetFreeOAM();
|
||||
}
|
310
src/data/cutscenes/getting_fully_powered_suit_data.c
Normal file
310
src/data/cutscenes/getting_fully_powered_suit_data.c
Normal file
@ -0,0 +1,310 @@
|
||||
#include "data/cutscenes/getting_fully_powered_suit_data.h"
|
||||
#include "cutscenes/getting_fully_powered_suit.h"
|
||||
#include "gba.h"
|
||||
#include "macros.h"
|
||||
|
||||
const struct CutscenePageData sGettingFullyPoweredSuitPageData[3] = {
|
||||
[0] = {
|
||||
.graphicsPage = 0,
|
||||
.tiletablePage = 0x1E,
|
||||
.priority = 2,
|
||||
.bg = DCNT_BG2,
|
||||
.screenSize = 0x8000
|
||||
},
|
||||
[1] = {
|
||||
.graphicsPage = 2,
|
||||
.tiletablePage = 0x1C,
|
||||
.priority = 3,
|
||||
.bg = DCNT_BG3,
|
||||
.screenSize = 0x8000
|
||||
},
|
||||
[2] = {
|
||||
.graphicsPage = 0,
|
||||
.tiletablePage = 0x1F,
|
||||
.priority = 3,
|
||||
.bg = DCNT_BG3,
|
||||
.screenSize = 0
|
||||
}
|
||||
};
|
||||
|
||||
const struct CutscenePaletteData sGettingFullyPoweredSuitPaletteData = {
|
||||
.active = TRUE,
|
||||
.timer = 0,
|
||||
.paletteRow = 0,
|
||||
.maxTimer = 2
|
||||
};
|
||||
|
||||
const u8 sGettingFullyPoweredSuitRingPaletteRows[7] = {
|
||||
0, 1, 2, 3, 4, 5, 6
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitRingSparklesSpawnPositions[6][2] = {
|
||||
[0] = {
|
||||
-(BLOCK_SIZE * 3 + HALF_BLOCK_SIZE + 8), 0x18
|
||||
},
|
||||
[1] = {
|
||||
-(BLOCK_SIZE * 2 + HALF_BLOCK_SIZE + 8), HALF_BLOCK_SIZE + 8
|
||||
},
|
||||
[2] = {
|
||||
BLOCK_SIZE * 3 + 8, 0x18
|
||||
},
|
||||
[3] = {
|
||||
BLOCK_SIZE + QUARTER_BLOCK_SIZE, HALF_BLOCK_SIZE + 12
|
||||
},
|
||||
[4] = {
|
||||
BLOCK_SIZE * 4 + HALF_BLOCK_SIZE + 4, -QUARTER_BLOCK_SIZE
|
||||
},
|
||||
[5] = {
|
||||
-(BLOCK_SIZE * 4 + HALF_BLOCK_SIZE), 20
|
||||
}
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuit_3c642c[6] = {
|
||||
BLOCK_SIZE * 6 + HALF_BLOCK_SIZE, BLOCK_SIZE * 10 + 8, BLOCK_SIZE * 5,
|
||||
BLOCK_SIZE * 12 + QUARTER_BLOCK_SIZE, BLOCK_SIZE * 3, 0
|
||||
};
|
||||
|
||||
extern const struct FrameData sGettingFullyPoweredSuitOAM_SparkleGoingUp[7];
|
||||
extern const struct FrameData sGettingFullyPoweredSuitOAM_SparkleAroundRing1[11];
|
||||
extern const struct FrameData sGettingFullyPoweredSuitOAM_RingBottom[3];
|
||||
extern const struct FrameData sGettingFullyPoweredSuitOAM_RingTop[3];
|
||||
extern const struct FrameData sGettingFullyPoweredSuitOAM_SparkleAroundRing2[9];
|
||||
|
||||
const struct OamArray sGettingFullyPoweredSuitCutsceneOAM[6] = {
|
||||
[0] = {
|
||||
.pOam = sGettingFullyPoweredSuitOAM_SparkleGoingUp,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_NONE
|
||||
},
|
||||
[GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_GOING_UP] = {
|
||||
.pOam = sGettingFullyPoweredSuitOAM_SparkleGoingUp,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_CHANGE_FRAME
|
||||
},
|
||||
[GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_AROUND_RING1] = {
|
||||
.pOam = sGettingFullyPoweredSuitOAM_SparkleAroundRing1,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_KILL_AFTER_END
|
||||
},
|
||||
[GETTING_FULLY_POWERED_SUIT_OAM_ID_SPARKLE_AROUND_RING2] = {
|
||||
.pOam = sGettingFullyPoweredSuitOAM_SparkleAroundRing2,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_KILL_AFTER_END
|
||||
},
|
||||
[GETTING_FULLY_POWERED_SUIT_OAM_ID_RING_BOTTOM] = {
|
||||
.pOam = sGettingFullyPoweredSuitOAM_RingBottom,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_CHANGE_FRAME
|
||||
},
|
||||
[GETTING_FULLY_POWERED_SUIT_OAM_ID_RING_TOP] = {
|
||||
.pOam = sGettingFullyPoweredSuitOAM_RingTop,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_CHANGE_FRAME
|
||||
},
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame0[7] = {
|
||||
0x2,
|
||||
0x8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2080,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2040
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame1[7] = {
|
||||
0x2,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2000,
|
||||
0x8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x20c0
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame2[7] = {
|
||||
0x2,
|
||||
0x8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2100,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2040
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame3[10] = {
|
||||
0x3,
|
||||
0x8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2140,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2000,
|
||||
0xfe, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2080
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame4[7] = {
|
||||
0x2,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2040,
|
||||
0x2, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x20c0
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame5[10] = {
|
||||
0x3,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2000,
|
||||
0x0, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2100,
|
||||
OBJ_SHAPE_VERTICAL | 0x3, 0x1f8, OBJ_SPRITE_OAM | 0x2140
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame2[4] = {
|
||||
0x1,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2052
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame3[4] = {
|
||||
0x1,
|
||||
0xf0, OBJ_SIZE_32x32 | 0x1f0, OBJ_SPRITE_OAM | 0x2002
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame4[4] = {
|
||||
0x1,
|
||||
0xf0, OBJ_SIZE_32x32 | 0x1f0, OBJ_SPRITE_OAM | 0x2006
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame9[4] = {
|
||||
0x1,
|
||||
0xf0, OBJ_SIZE_32x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200a
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_RingBottom_Frame0[16] = {
|
||||
0x5,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x20c3,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x20c7,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x20cb,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x20cf,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x20d3
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_RingBottom_Frame1[16] = {
|
||||
0x5,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x1b8, OBJ_SPRITE_OAM | 0x2144,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x1d8, OBJ_SPRITE_OAM | 0x2148,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x1f8, OBJ_SPRITE_OAM | 0x214c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x16 | 0x18, OBJ_SPRITE_OAM | 0x2150,
|
||||
0x0, OBJ_SIZE_16x16 | 0x38, OBJ_SPRITE_OAM | 0x2154
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_RingTop_Frame0[19] = {
|
||||
0x6,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1a8, OBJ_SPRITE_OAM | 0x2082,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1c8, OBJ_SPRITE_OAM | 0x2086,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1e8, OBJ_SPRITE_OAM | 0x208a,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x8, OBJ_SPRITE_OAM | 0x208e,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x28, OBJ_SPRITE_OAM | 0x2092,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x48, OBJ_SPRITE_OAM | 0x2096
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_RingTop_Frame1[16] = {
|
||||
0x5,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x2103,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x2107,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x210b,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x210f,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x2113
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame0[4] = {
|
||||
0x1,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2012
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame1[4] = {
|
||||
0x1,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2014
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame2[4] = {
|
||||
0x1,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2016
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame4[4] = {
|
||||
0x1,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x2018
|
||||
};
|
||||
|
||||
const u16 sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame3[4] = {
|
||||
0x1,
|
||||
0xf8, OBJ_SIZE_16x16 | 0x1f8, OBJ_SPRITE_OAM | 0x201a
|
||||
};
|
||||
|
||||
const struct FrameData sGettingFullyPoweredSuitOAM_SparkleGoingUp[7] = {
|
||||
sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame0,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame1,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame2,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame3,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame4,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleGoingUp_Frame5,
|
||||
4,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
const struct FrameData sGettingFullyPoweredSuitOAM_SparkleAroundRing1[11] = {
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame0,
|
||||
2,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame1,
|
||||
2,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame2,
|
||||
2,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame3,
|
||||
3,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame4,
|
||||
3,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame3,
|
||||
3,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame4,
|
||||
3,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame3,
|
||||
3,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame4,
|
||||
3,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame9,
|
||||
3,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
const struct FrameData sGettingFullyPoweredSuitOAM_RingBottom[3] = {
|
||||
sGettingFullyPoweredSuitOAM_RingBottom_Frame0,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_RingBottom_Frame1,
|
||||
4,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
const struct FrameData sGettingFullyPoweredSuitOAM_RingTop[3] = {
|
||||
sGettingFullyPoweredSuitOAM_RingTop_Frame0,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_RingTop_Frame1,
|
||||
4,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
const struct FrameData sGettingFullyPoweredSuitOAM_SparkleAroundRing2[9] = {
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame0,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing1_Frame1,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame2,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame3,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame4,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame4,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame3,
|
||||
4,
|
||||
sGettingFullyPoweredSuitOAM_SparkleAroundRing2_Frame4,
|
||||
4,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
const u16 sGettingFullyPoweredSuitPAL[19 * 16] = INCBIN_U16("data/cutscenes/GettingFullyPoweredSuit/Palette.pal");
|
||||
const u32 sGettingFullyPoweredSuitSamusGFX[2608] = INCBIN_U32("data/cutscenes/GettingFullyPoweredSuit/Samus.gfx.lz");
|
||||
const u32 sGettingFullyPoweredSuitRingSparklesGFX[646] = INCBIN_U32("data/cutscenes/GettingFullyPoweredSuit/RingSparkles.gfx.lz");
|
||||
const u32 sGettingFullyPoweredSuitSamusTileTable[387] = INCBIN_U32("data/cutscenes/GettingFullyPoweredSuit/Samus.tt");
|
||||
const u8 sGettingFullyPoweredSuitBackgroundGFX[15072] = INCBIN_U8("data/cutscenes/GettingFullyPoweredSuit/Background.gfx.lz");
|
||||
const u32 sGettingFullyPoweredSuitBackgroundTileTable[734] = INCBIN_U32("data/cutscenes/GettingFullyPoweredSuit/Background.tt");
|
||||
const u16 sGettingFullyPoweredSuitRingPAL[7 * 16] = INCBIN_U16("data/cutscenes/GettingFullyPoweredSuit/RingPalette.pal");
|
||||
|
||||
const u8 sTempArray_3ce46c[0x90ff0] = INCBIN_U8("data/Blob_3ce46c_45f45c.bin");
|
@ -0,0 +1,20 @@
|
||||
#include "data/cutscenes/internal_getting_fully_powered_suit_data.h"
|
||||
#include "cutscenes/getting_fully_powered_suit.h"
|
||||
#include "macros.h"
|
||||
|
||||
const struct CutsceneSubroutineData sGettingFullyPoweredSuitSubroutineData[3] = {
|
||||
[0] = {
|
||||
.pFunction = GettingFullyPoweredSuitInit,
|
||||
.oamLength = 14
|
||||
},
|
||||
[1] = {
|
||||
.pFunction = GettingFullyPoweredSuitAnimation,
|
||||
.oamLength = 14
|
||||
},
|
||||
[2] = {
|
||||
.pFunction = (CutsceneFunc_T)0x8061228,//CutsceneEndFunction,
|
||||
.oamLength = 0
|
||||
}
|
||||
};
|
||||
|
||||
const u8 sTempArray_760044[0x976f0] = INCBIN_U8("data/Blob_760044_7f7734.bin");
|
@ -13,9 +13,7 @@ const struct CutsceneSubroutineData sMechaSeesSamusSubroutineData[3] = {
|
||||
.oamLength = 2
|
||||
},
|
||||
{
|
||||
.pFunction = (CutsceneFunc_T)0x8061229, //CutsceneEndFunction,
|
||||
.pFunction = (CutsceneFunc_T)0x8061229,//CutsceneEndFunction,
|
||||
.oamLength = 2
|
||||
}
|
||||
};
|
||||
|
||||
const u8 sTempArray_76002c[0x97708] = INCBIN_U8("data/Blob_76002c_7f7734.bin");
|
||||
|
@ -267,5 +267,3 @@ const u32 sMechaSeesSamusMetalGFX[2382] = INCBIN_U32("data/cutscenes/MechaSeesSa
|
||||
const u32 sMechaSeesSamusCoverEyeGFX[2671] = INCBIN_U32("data/cutscenes/MechaSeesSamus/EyeCover.gfx.lz");
|
||||
const u16 sMechaSeesSamusPAL[10 * 16] = INCBIN_U16("data/cutscenes/MechaSeesSamus/Palette.pal");
|
||||
const u32 sMechaSeesSamusCoverMetalTileTable[368] = INCBIN_U32("data/cutscenes/MechaSeesSamus/Metal.tt");
|
||||
|
||||
const u8 sTempArray_3c63f0[0x9906c] = INCBIN_U8("data/Blob_3c63f0_45f45c.bin");
|
@ -16,7 +16,8 @@ subDirs: array = [
|
||||
"cutscenes/RidleyInSpace/",
|
||||
"cutscenes/RidleyLanding/",
|
||||
"cutscenes/RidleySpawn/",
|
||||
"cutscenes/MechaSeesSamus/"
|
||||
"cutscenes/MechaSeesSamus/",
|
||||
"cutscenes/GettingFullyPoweredSuit/",
|
||||
]
|
||||
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user