mirror of
https://github.com/YohannDR/mzm.git
synced 2025-03-09 00:30:57 +00:00
Split fusion gallery, more ending code
This commit is contained in:
parent
44e5f349d6
commit
fd8a05f4c4
@ -3,3 +3,7 @@
|
||||
#define ENDING_FLAG_FIRST_TIME_ATTACK_CLEAR 0x20
|
||||
#define ENDING_FLAG_FIRST_HARD_MODE_CLEAR 0x40
|
||||
#define ENDING_FLAG_FIRST_CLEAR 0x80
|
||||
|
||||
#define ENDING_IMAGE_OAM_SET_CLEAR_TIME 0
|
||||
#define ENDING_IMAGE_OAM_SET_YOUR_RATE 1
|
||||
#define ENDING_IMAGE_OAM_SET_COLLECTING 2
|
||||
|
@ -2,32 +2,18 @@
|
||||
#define ENDING_AND_GALLERY_DATA_H
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/ending_and_gallery.h"
|
||||
|
||||
#define NUMBER_OF_ENDING_IMAGES 8
|
||||
|
||||
// ...
|
||||
|
||||
extern const u16 sEndingImageTextPAL[14 * 16];
|
||||
|
||||
// ...
|
||||
|
||||
extern const u32* const sEndingImagesTopHalfGfxPointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u32* const sEndingImagesLowerHalfGfxPointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u32* const sEndingImagesTopHalfTileTablePointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u32* const sEndingImagesLowerHalfTileTablePointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u16* const sEndingImagesPalPointers[NUMBER_OF_ENDING_IMAGES];
|
||||
|
||||
// ...
|
||||
|
||||
extern const u16* const sEndingWhitePalPointers[4];
|
||||
|
||||
// ...
|
||||
|
||||
extern const u32 sEndingImageTextGFX[803];
|
||||
extern const u32 sEndingImageTextJapGFX[511];
|
||||
|
||||
// ...
|
||||
|
||||
extern const u32 sEndingImageNumbersMiscGFX[218];
|
||||
|
||||
// ...
|
||||
@ -45,12 +31,33 @@ extern const u16 sEndingPosingPAL_White4[5 * 16];
|
||||
|
||||
extern const u16 sUnlockedOptionsPAL[1 * 16];
|
||||
|
||||
extern const struct EndingImageOam sEndingImageOam_54bd54[6];
|
||||
extern const struct EndingImageOam sEndingImageOam_ClearTime_English[9];
|
||||
extern const struct EndingImageOam sEndingImageOam_YourRate_English[11];
|
||||
extern const struct EndingImageOam sEndingImageOam_Collecting_English[17];
|
||||
extern const struct EndingImageOam sEndingImageOam_54bf58[6];
|
||||
extern const struct EndingImageOam sEndingImageOam_ClearTime_Hiragana[6];
|
||||
extern const struct EndingImageOam sEndingImageOam_YourRate_Hiragana[11];
|
||||
extern const struct EndingImageOam sEndingImageOam_Collecting_Hiragana[17];
|
||||
|
||||
extern const u32* const sEndingImagesTopHalfGfxPointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u32* const sEndingImagesLowerHalfGfxPointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u32* const sEndingImagesTopHalfTileTablePointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u32* const sEndingImagesLowerHalfTileTablePointers[NUMBER_OF_ENDING_IMAGES];
|
||||
extern const u16* const sEndingImagesPalPointers[NUMBER_OF_ENDING_IMAGES];
|
||||
|
||||
// ...
|
||||
|
||||
extern const u32 sCreditsCharactersGFX[615];
|
||||
|
||||
// ...
|
||||
|
||||
extern const u32 sEndingImageTextGFX[803];
|
||||
extern const u32 sEndingImageTextJapGFX[511];
|
||||
|
||||
extern const u8 sEndingImageNumbersGFX_Upper[10 * 64];
|
||||
extern const u8 sEndingImageNumbersGFX_Lower[10 * 64];
|
||||
|
||||
extern const u32 sEndingNumbersMiscGX[218];
|
||||
extern const u32 sEndingSamusPosingSpaceBackgroundGFX[2938];
|
||||
extern const u32 sEndingSamusPosingSpaceBackgroundTileTable[412];
|
||||
|
10
include/data/fusion_gallery_data.h
Normal file
10
include/data/fusion_gallery_data.h
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef ENDING_AND_GALLERY_DATA_H
|
||||
#define ENDING_AND_GALLERY_DATA_H
|
||||
|
||||
#include "structs/fusion_gallery.h"
|
||||
|
||||
#define NUMBER_OF_FUSION_GALLERY_IMAGES 13
|
||||
|
||||
extern const struct FusionGalleryImageEntry sFusionGalleryData[NUMBER_OF_FUSION_GALLERY_IMAGES];
|
||||
|
||||
#endif /* ENDING_AND_GALLERY_DATA_H */
|
@ -3,11 +3,7 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
void FusionGalleryVBlank(void);
|
||||
void FusionGalleryInit(void);
|
||||
u32 FusionGalleryDisplay(void);
|
||||
u32 FusionGallerySubroutine(void);
|
||||
void EndingImageCheckDisplayLetter(u32 offset);
|
||||
void EndingImageUpdateLettersSpawnDelay(u32 offset);
|
||||
void EndingImageLoadTextOAM(u32 set);
|
||||
void EndingImageDisplayLinePermanently(u32 line);
|
||||
void EndingImageLoadIGTAndPercentageGraphics(void);
|
||||
|
11
include/fusion_gallery.h
Normal file
11
include/fusion_gallery.h
Normal file
@ -0,0 +1,11 @@
|
||||
#ifndef FUSION_GALLERY_H
|
||||
#define FUSION_GALLERY_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
void FusionGalleryVBlank(void);
|
||||
void FusionGalleryInit(void);
|
||||
u32 FusionGalleryDisplay(void);
|
||||
u32 FusionGallerySubroutine(void);
|
||||
|
||||
#endif /* FUSION_GALLERY_H */
|
@ -5,6 +5,15 @@
|
||||
|
||||
#define ENDING_DATA sNonGameplayRamPointer->ending
|
||||
|
||||
struct EndingImageOam {
|
||||
u8 unk_0;
|
||||
u8 spawnDelay;
|
||||
u8 unk_2;
|
||||
u16 xPosition;
|
||||
u16 yPosition;
|
||||
const u16* const pFrame;
|
||||
};
|
||||
|
||||
struct EndingData {
|
||||
u8 stage;
|
||||
u8 unk_1;
|
||||
@ -17,8 +26,8 @@ struct EndingData {
|
||||
u16 unk_E;
|
||||
u16 creditLineTilemap_1[32];
|
||||
u16 creditLineTilemap_2[32];
|
||||
u32 unk_90;
|
||||
u32 unk_94;
|
||||
u32 creditLineOffset_1;
|
||||
u32 creditLineOffset_2;
|
||||
u8 endingNumber;
|
||||
u8 completionPercentage;
|
||||
u8 language;
|
||||
@ -28,7 +37,7 @@ struct EndingData {
|
||||
u8 unk_12A[17];
|
||||
u8 padding_13B[6];
|
||||
u8 unk_141;
|
||||
u8 unk_142[6];
|
||||
u8 endingLettersSpawnDelay[6];
|
||||
u8 unk_148[17];
|
||||
u8 padding_159[7];
|
||||
u8 unk_160[6];
|
||||
|
58
include/structs/fusion_gallery.h
Normal file
58
include/structs/fusion_gallery.h
Normal file
@ -0,0 +1,58 @@
|
||||
#ifndef FUSION_GALLERY_STRUCT_H
|
||||
#define FUSION_GALLERY_STRUCT_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define FUSION_GALLERY_DATA sNonGameplayRamPointer->fusionGallery
|
||||
|
||||
struct FusionGalleryImageEntry {
|
||||
const u32* const pTopGfx;
|
||||
const u32* const pBottomGfx;
|
||||
const u32* const pTopTileTable;
|
||||
const u32* const pBottomTileTable;
|
||||
const u16* const pPalette;
|
||||
};
|
||||
|
||||
struct FusionGalleryData {
|
||||
u8 stage;
|
||||
u8 unk_1;
|
||||
u16 unk_2;
|
||||
u16 unk_4;
|
||||
u8 unk_6;
|
||||
u16 unk_8;
|
||||
u16 unk_A;
|
||||
u16 currentCreditLine;
|
||||
u16 unk_E;
|
||||
u16 creditLineTilemap_1[32];
|
||||
u16 creditLineTilemap_2[32];
|
||||
u32 unk_90;
|
||||
u16 unk_94;
|
||||
u16 unk_96;
|
||||
u8 unk_98;
|
||||
u8 currentImage;
|
||||
u8 language;
|
||||
u8 oamLength;
|
||||
u8 padding_9C[136];
|
||||
u8 unk_124[6];
|
||||
u8 unk_12A[17];
|
||||
u8 padding_13B[6];
|
||||
u8 unk_141;
|
||||
u8 endingLettersSpawnDelay[6];
|
||||
u8 unk_148[17];
|
||||
u8 padding_159[7];
|
||||
u8 unk_160[6];
|
||||
u8 unk_166[17];
|
||||
u8 unk_177;
|
||||
u8 unk_178;
|
||||
u8 unk_179;
|
||||
u8 padding_17A[3];
|
||||
u8 unk_17D;
|
||||
u16 oamXPositions[30];
|
||||
u16 oamYPositions[30];
|
||||
const u16* oamFramePointers[30];
|
||||
u8 padding_270[79];
|
||||
u16 dispcnt;
|
||||
u16 bldcnt;
|
||||
};
|
||||
|
||||
#endif /* FUSION_GALLERY_STRUCT_H */
|
@ -12,6 +12,7 @@
|
||||
#include "structs/menus/title_screen.h"
|
||||
#include "structs/menus/erase_sram.h"
|
||||
#include "structs/menus/file_select.h"
|
||||
#include "structs/fusion_gallery.h"
|
||||
|
||||
|
||||
union NonGameplayRAM {
|
||||
@ -23,6 +24,7 @@ union NonGameplayRAM {
|
||||
struct TitleScreenData titleScreen;
|
||||
struct EraseSramData eraseSram;
|
||||
struct FileSelectData fileSelect;
|
||||
struct FusionGalleryData fusionGallery;
|
||||
u8 inGame[1576];
|
||||
};
|
||||
|
||||
|
@ -216,9 +216,9 @@ void ColorFadingTransferPaletteOnTransition(void)
|
||||
unk_5b304();
|
||||
|
||||
if (sColorFadingData[gColorFading.type].isWhite)
|
||||
value = 0x7FFF;
|
||||
value = COLOR_WHITE;
|
||||
else
|
||||
value = 0;
|
||||
value = COLOR_BLACK;
|
||||
color = value;
|
||||
|
||||
if (sColorFadingData[gColorFading.type].bgColorMask | sColorFadingData[gColorFading.type].objColorMask)
|
||||
|
@ -14,74 +14,310 @@
|
||||
#include "structs/ending_and_gallery.h"
|
||||
#include "structs/game_state.h"
|
||||
|
||||
/**
|
||||
* @brief 847f8 | 78 | V-blank code for the fusion gallery
|
||||
*
|
||||
*/
|
||||
void FusionGalleryVBlank(void)
|
||||
{
|
||||
dma_set(3, gOamData, OAM_BASE, (DMA_ENABLE | DMA_32BIT) << 16 | OAM_SIZE / 4);
|
||||
|
||||
write16(REG_DISPCNT, ENDING_DATA.dispcnt);
|
||||
write16(REG_BLDCNT, ENDING_DATA.bldcnt);
|
||||
|
||||
write16(REG_BLDY, gWrittenToBLDY_NonGameplay);
|
||||
|
||||
write16(REG_BG0VOFS, (gBG0YPosition / 16) & 0x1FF);
|
||||
write16(REG_BG1VOFS, (gBG1YPosition / 16) & 0x1FF);
|
||||
}
|
||||
|
||||
void FusionGalleryInit(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
u32 FusionGalleryDisplay(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
u32 FusionGallerySubroutine(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 84c34 | 48 | Checks if an ending letter should display
|
||||
*
|
||||
* @param offset Offset, to document
|
||||
*/
|
||||
void EndingImageCheckDisplayLetter(u32 offset)
|
||||
void EndingImageUpdateLettersSpawnDelay(u32 offset)
|
||||
{
|
||||
if (!ENDING_DATA.unk_124[offset])
|
||||
return;
|
||||
|
||||
if (ENDING_DATA.unk_142[offset])
|
||||
if (ENDING_DATA.endingLettersSpawnDelay[offset])
|
||||
{
|
||||
ENDING_DATA.unk_142[offset]--;
|
||||
if (ENDING_DATA.unk_142[offset] == 0)
|
||||
ENDING_DATA.endingLettersSpawnDelay[offset]--;
|
||||
if (ENDING_DATA.endingLettersSpawnDelay[offset] == 0)
|
||||
ENDING_DATA.unk_124[offset]++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 84c7c | 26c | Loads a set of OAM for the ending image
|
||||
*
|
||||
* @param set Set to load
|
||||
*/
|
||||
void EndingImageLoadTextOAM(u32 set)
|
||||
{
|
||||
i32 i;
|
||||
|
||||
if (ENDING_DATA.language == LANGUAGE_HIRAGANA)
|
||||
{
|
||||
if (set == ENDING_IMAGE_OAM_SET_CLEAR_TIME)
|
||||
{
|
||||
ENDING_DATA.oamLength = ARRAY_SIZE(sEndingImageOam_ClearTime_Hiragana) + 6;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sEndingImageOam_ClearTime_Hiragana); i++)
|
||||
{
|
||||
ENDING_DATA.unk_124[i + 6] = sEndingImageOam_ClearTime_Hiragana[i].unk_0;
|
||||
ENDING_DATA.endingLettersSpawnDelay[i + 6] = sEndingImageOam_ClearTime_Hiragana[i].spawnDelay;
|
||||
ENDING_DATA.unk_160[i + 6] = sEndingImageOam_ClearTime_Hiragana[i].unk_2;
|
||||
|
||||
ENDING_DATA.oamXPositions[i + 6] = sEndingImageOam_ClearTime_Hiragana[i].xPosition;
|
||||
ENDING_DATA.oamYPositions[i + 6] = sEndingImageOam_ClearTime_Hiragana[i].yPosition;
|
||||
|
||||
ENDING_DATA.oamFramePointers[i + 6] = sEndingImageOam_ClearTime_Hiragana[i].pFrame;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ENDING_DATA.oamLength = ARRAY_SIZE(sEndingImageOam_YourRate_Hiragana) + 6;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sEndingImageOam_YourRate_Hiragana); i++)
|
||||
{
|
||||
ENDING_DATA.unk_124[i + 6] = sEndingImageOam_YourRate_Hiragana[i].unk_0;
|
||||
ENDING_DATA.endingLettersSpawnDelay[i + 6] = sEndingImageOam_YourRate_Hiragana[i].spawnDelay;
|
||||
ENDING_DATA.unk_160[i + 6] = sEndingImageOam_YourRate_Hiragana[i].unk_2;
|
||||
|
||||
ENDING_DATA.oamXPositions[i + 6] = sEndingImageOam_YourRate_Hiragana[i].xPosition;
|
||||
ENDING_DATA.oamYPositions[i + 6] = sEndingImageOam_YourRate_Hiragana[i].yPosition;
|
||||
|
||||
ENDING_DATA.oamFramePointers[i + 6] = sEndingImageOam_YourRate_Hiragana[i].pFrame;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (set == ENDING_IMAGE_OAM_SET_CLEAR_TIME)
|
||||
{
|
||||
ENDING_DATA.oamLength = ARRAY_SIZE(sEndingImageOam_ClearTime_English) + 6;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sEndingImageOam_ClearTime_English); i++)
|
||||
{
|
||||
ENDING_DATA.unk_124[i + 6] = sEndingImageOam_ClearTime_English[i].unk_0;
|
||||
ENDING_DATA.endingLettersSpawnDelay[i + 6] = sEndingImageOam_ClearTime_English[i].spawnDelay;
|
||||
ENDING_DATA.unk_160[i + 6] = sEndingImageOam_ClearTime_English[i].unk_2;
|
||||
|
||||
ENDING_DATA.oamXPositions[i + 6] = sEndingImageOam_ClearTime_English[i].xPosition;
|
||||
ENDING_DATA.oamYPositions[i + 6] = sEndingImageOam_ClearTime_English[i].yPosition;
|
||||
|
||||
ENDING_DATA.oamFramePointers[i + 6] = sEndingImageOam_ClearTime_English[i].pFrame;
|
||||
}
|
||||
}
|
||||
else if (set == ENDING_IMAGE_OAM_SET_YOUR_RATE)
|
||||
{
|
||||
ENDING_DATA.oamLength = ARRAY_SIZE(sEndingImageOam_YourRate_English) + 6;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sEndingImageOam_YourRate_English); i++)
|
||||
{
|
||||
ENDING_DATA.unk_124[i + 6] = sEndingImageOam_YourRate_English[i].unk_0;
|
||||
ENDING_DATA.endingLettersSpawnDelay[i + 6] = sEndingImageOam_YourRate_English[i].spawnDelay;
|
||||
ENDING_DATA.unk_160[i + 6] = sEndingImageOam_YourRate_English[i].unk_2;
|
||||
|
||||
ENDING_DATA.oamXPositions[i + 6] = sEndingImageOam_YourRate_English[i].xPosition;
|
||||
ENDING_DATA.oamYPositions[i + 6] = sEndingImageOam_YourRate_English[i].yPosition;
|
||||
|
||||
ENDING_DATA.oamFramePointers[i + 6] = sEndingImageOam_YourRate_English[i].pFrame;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ENDING_DATA.oamLength = ARRAY_SIZE(sEndingImageOam_Collecting_English) + 6;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sEndingImageOam_Collecting_English); i++)
|
||||
{
|
||||
ENDING_DATA.unk_124[i + 6] = sEndingImageOam_Collecting_English[i].unk_0;
|
||||
ENDING_DATA.endingLettersSpawnDelay[i + 6] = sEndingImageOam_Collecting_English[i].spawnDelay;
|
||||
ENDING_DATA.unk_160[i + 6] = sEndingImageOam_Collecting_English[i].unk_2;
|
||||
|
||||
ENDING_DATA.oamXPositions[i + 6] = sEndingImageOam_Collecting_English[i].xPosition;
|
||||
ENDING_DATA.oamYPositions[i + 6] = sEndingImageOam_Collecting_English[i].yPosition;
|
||||
|
||||
ENDING_DATA.oamFramePointers[i + 6] = sEndingImageOam_Collecting_English[i].pFrame;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 84ee8 | c8 | Display a line of text of an ending image permanetly
|
||||
*
|
||||
* @param line Line
|
||||
*/
|
||||
void EndingImageDisplayLinePermanently(u32 line)
|
||||
{
|
||||
i32 i;
|
||||
|
||||
if (ENDING_DATA.language == LANGUAGE_HIRAGANA)
|
||||
{
|
||||
ENDING_DATA.unk_124[line] = sEndingImageOam_54bf58[line].unk_0;
|
||||
ENDING_DATA.endingLettersSpawnDelay[line] = sEndingImageOam_54bf58[line].spawnDelay;
|
||||
ENDING_DATA.unk_160[line] = sEndingImageOam_54bf58[line].unk_2;
|
||||
ENDING_DATA.oamXPositions[line] = sEndingImageOam_54bf58[line].xPosition;
|
||||
ENDING_DATA.oamYPositions[line] = sEndingImageOam_54bf58[line].yPosition;
|
||||
ENDING_DATA.oamFramePointers[line] = sEndingImageOam_54bf58[line].pFrame;
|
||||
}
|
||||
else
|
||||
{
|
||||
ENDING_DATA.unk_124[line] = sEndingImageOam_54bd54[line].unk_0;
|
||||
ENDING_DATA.endingLettersSpawnDelay[line] = sEndingImageOam_54bd54[line].spawnDelay;
|
||||
ENDING_DATA.unk_160[line] = sEndingImageOam_54bd54[line].unk_2;
|
||||
ENDING_DATA.oamXPositions[line] = sEndingImageOam_54bd54[line].xPosition;
|
||||
ENDING_DATA.oamYPositions[line] = sEndingImageOam_54bd54[line].yPosition;
|
||||
ENDING_DATA.oamFramePointers[line] = sEndingImageOam_54bd54[line].pFrame;
|
||||
}
|
||||
|
||||
for (i = 0; i < ENDING_DATA.oamLength - 6; i++)
|
||||
ENDING_DATA.unk_124[i + 6] = 0;
|
||||
|
||||
ENDING_DATA.oamLength = 6;
|
||||
}
|
||||
|
||||
void EndingImageLoadIGTAndPercentageGraphics(void)
|
||||
{
|
||||
// https://decomp.me/scratch/vLTLr
|
||||
|
||||
i32 hoursTens;
|
||||
i32 hoursOnes;
|
||||
i32 minutesTens;
|
||||
i32 minutesOnes;
|
||||
i32 secondsTens;
|
||||
i32 secondsOnes;
|
||||
|
||||
i32 percentageHundreds;
|
||||
i32 percentageTens;
|
||||
i32 percentageOnes;
|
||||
|
||||
i32 offset;
|
||||
|
||||
hoursTens = 0;
|
||||
hoursOnes = gInGameTimer.hours;
|
||||
|
||||
while (hoursOnes > 9)
|
||||
{
|
||||
hoursOnes -= 10;
|
||||
hoursTens++;
|
||||
}
|
||||
|
||||
minutesTens = 0;
|
||||
minutesOnes = gInGameTimer.minutes;
|
||||
|
||||
while (minutesOnes > 9)
|
||||
{
|
||||
minutesOnes -= 10;
|
||||
minutesTens++;
|
||||
}
|
||||
|
||||
secondsTens = 0;
|
||||
secondsOnes = gInGameTimer.seconds;
|
||||
|
||||
while (secondsOnes > 9)
|
||||
{
|
||||
secondsOnes -= 10;
|
||||
secondsTens++;
|
||||
}
|
||||
|
||||
if (hoursTens != 0)
|
||||
{
|
||||
offset = hoursTens * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x10000, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x10400, DMA_ENABLE << 16 | 32);
|
||||
}
|
||||
|
||||
offset = hoursOnes * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x10040, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x10440, DMA_ENABLE << 16 | 32);
|
||||
|
||||
offset = minutesTens * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x100A0, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x104A0, DMA_ENABLE << 16 | 32);
|
||||
|
||||
offset = minutesOnes * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x100E0, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x104E0, DMA_ENABLE << 16 | 32);
|
||||
|
||||
offset = secondsTens * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x10140, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x10540, DMA_ENABLE << 16 | 32);
|
||||
|
||||
offset = secondsOnes * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x10180, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x10580, DMA_ENABLE << 16 | 32);
|
||||
|
||||
percentageHundreds = 0;
|
||||
percentageTens = 0;
|
||||
percentageOnes = ENDING_DATA.completionPercentage;
|
||||
|
||||
while (percentageOnes >= 100)
|
||||
{
|
||||
percentageOnes -= 100;
|
||||
percentageHundreds++;
|
||||
}
|
||||
|
||||
while (percentageOnes >= 10)
|
||||
{
|
||||
percentageOnes -= 10;
|
||||
percentageTens++;
|
||||
}
|
||||
|
||||
if (percentageHundreds != 0)
|
||||
{
|
||||
offset = percentageHundreds * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x101C0, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x105C0, DMA_ENABLE << 16 | 32);
|
||||
}
|
||||
if (percentageTens != 0)
|
||||
{
|
||||
offset = percentageTens * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x10200, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x10600, DMA_ENABLE << 16 | 32);
|
||||
}
|
||||
|
||||
offset = percentageOnes * 64;
|
||||
dma_set(3, &sEndingImageNumbersGFX_Upper[offset], VRAM_BASE + 0x10240, DMA_ENABLE << 16 | 32);
|
||||
dma_set(3, &sEndingImageNumbersGFX_Lower[offset], VRAM_BASE + 0x10640, DMA_ENABLE << 16 | 32);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 851b4 | 164 | V-blank code for gallery, ending image and credits
|
||||
*
|
||||
*/
|
||||
void GalleryVBlank(void)
|
||||
{
|
||||
u32 buffer;
|
||||
u32 bgPos;
|
||||
|
||||
dma_set(3, gOamData, OAM_BASE, (DMA_ENABLE | DMA_32BIT) << 16 | OAM_SIZE / 4);
|
||||
|
||||
if (ENDING_DATA.unk_6 == 1)
|
||||
{
|
||||
dma_set(3, ENDING_DATA.creditLineTilemap_1, VRAM_BASE + ENDING_DATA.creditLineOffset_1,
|
||||
DMA_ENABLE << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_1));
|
||||
dma_set(3, ENDING_DATA.creditLineTilemap_2, VRAM_BASE + ENDING_DATA.creditLineOffset_2,
|
||||
DMA_ENABLE << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_2));
|
||||
|
||||
buffer = 0;
|
||||
dma_set(3, &buffer, VRAM_BASE + 0x800 + ENDING_DATA.creditLineOffset_1,
|
||||
(DMA_ENABLE | DMA_32BIT | DMA_SRC_FIXED) << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_1) / 2);
|
||||
buffer = 0;
|
||||
dma_set(3, &buffer, VRAM_BASE + 0x800 + ENDING_DATA.creditLineOffset_2,
|
||||
(DMA_ENABLE | DMA_32BIT | DMA_SRC_FIXED) << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_2) / 2);
|
||||
}
|
||||
else if (ENDING_DATA.unk_6 != 0)
|
||||
{
|
||||
dma_set(3, ENDING_DATA.creditLineTilemap_1, VRAM_BASE + 0x800 + ENDING_DATA.creditLineOffset_1,
|
||||
DMA_ENABLE << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_1));
|
||||
dma_set(3, ENDING_DATA.creditLineTilemap_2, VRAM_BASE + 0x800 + ENDING_DATA.creditLineOffset_2,
|
||||
DMA_ENABLE << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_2));
|
||||
|
||||
buffer = 0;
|
||||
dma_set(3, &buffer, VRAM_BASE + ENDING_DATA.creditLineOffset_1,
|
||||
(DMA_ENABLE | DMA_32BIT | DMA_SRC_FIXED) << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_1) / 2);
|
||||
buffer = 0;
|
||||
dma_set(3, &buffer, VRAM_BASE + ENDING_DATA.creditLineOffset_2,
|
||||
(DMA_ENABLE | DMA_32BIT | DMA_SRC_FIXED) << 16 | ARRAY_SIZE(ENDING_DATA.creditLineTilemap_2) / 2);
|
||||
}
|
||||
|
||||
write16(REG_DISPCNT, ENDING_DATA.dispcnt);
|
||||
write16(REG_BLDCNT, ENDING_DATA.bldcnt);
|
||||
|
||||
write16(REG_BLDALPHA, gWrittenToBLDALPHA_H << 8 | gWrittenToBLDALPHA_L);
|
||||
write16(REG_BLDY, gWrittenToBLDY_NonGameplay);
|
||||
|
||||
write16(REG_BG0VOFS, bgPos = gBG0YPosition / 16 & 0x1FF);
|
||||
write16(REG_BG1VOFS, bgPos);
|
||||
write16(REG_BG2VOFS, gBG2YPosition / 16 & 0x1FF);
|
||||
write16(REG_BG3VOFS, gBG3YPosition / 16 & 0x1FF);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -184,9 +420,110 @@ u8 CreditsDisplayLine(u32 line)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 859f4 | 18c | Displays the credits
|
||||
*
|
||||
* @return u8 bool, ended
|
||||
*/
|
||||
u8 CreditsDisplay(void)
|
||||
{
|
||||
u8 ended;
|
||||
i32 temp;
|
||||
u8 result;
|
||||
|
||||
u8 unk_0;
|
||||
u8 unk_1;
|
||||
|
||||
if (ENDING_DATA.unk_1)
|
||||
{
|
||||
ended = FALSE;
|
||||
switch (ENDING_DATA.timer++)
|
||||
{
|
||||
case 464:
|
||||
ENDING_DATA.unk_1++;
|
||||
break;
|
||||
|
||||
case 528:
|
||||
ENDING_DATA.bldcnt = BLDCNT_BG0_FIRST_TARGET_PIXEL | BLDCNT_ALPHA_BLENDING_EFFECT | BLDCNT_BG2_SECOND_TARGET_PIXEL;
|
||||
gWrittenToBLDY_NonGameplay = 0;
|
||||
ENDING_DATA.unk_1++;
|
||||
break;
|
||||
|
||||
case 560:
|
||||
ENDING_DATA.dispcnt = DCNT_BG2 | DCNT_BG3;
|
||||
ENDING_DATA.bldcnt = 0;
|
||||
ended = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (ENDING_DATA.unk_1 == 2)
|
||||
{
|
||||
if (!(ENDING_DATA.endScreenTimer++ & 3))
|
||||
{
|
||||
if (gWrittenToBLDY_NonGameplay)
|
||||
gWrittenToBLDY_NonGameplay--;
|
||||
}
|
||||
}
|
||||
else if (ENDING_DATA.unk_1 == 3)
|
||||
{
|
||||
if (ENDING_DATA.timer & 1)
|
||||
{
|
||||
if (gWrittenToBLDALPHA_L)
|
||||
{
|
||||
gWrittenToBLDALPHA_L--;
|
||||
gWrittenToBLDALPHA_H = 16 - gWrittenToBLDALPHA_L;
|
||||
}
|
||||
else
|
||||
ENDING_DATA.unk_1++;
|
||||
}
|
||||
}
|
||||
|
||||
return ended;
|
||||
}
|
||||
|
||||
if (ENDING_DATA.unk_E > 127)
|
||||
{
|
||||
ENDING_DATA.unk_E &= 127;
|
||||
|
||||
if (ENDING_DATA.unk_8 == ENDING_DATA.unk_A)
|
||||
{
|
||||
ended = CreditsDisplayLine(ENDING_DATA.currentCreditLine);
|
||||
unk_0 = ended & 0xF0;
|
||||
ended = ended & 0xF;
|
||||
|
||||
if (ended == 0x9)
|
||||
{
|
||||
ENDING_DATA.unk_1 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
temp = ENDING_DATA.unk_A * 0x40 + 0x500;
|
||||
if (temp > 0x7FF)
|
||||
temp &= 0x7FF;
|
||||
|
||||
ENDING_DATA.creditLineOffset_1 = temp + 0xF000;
|
||||
|
||||
temp = ENDING_DATA.unk_A * 0x40 + 0x540;
|
||||
if (temp > 0x7FF)
|
||||
temp &= 0x7FF;
|
||||
|
||||
ENDING_DATA.creditLineOffset_2 = temp + 0xF000;
|
||||
|
||||
ENDING_DATA.unk_A += ended;
|
||||
ENDING_DATA.currentCreditLine++;
|
||||
ENDING_DATA.unk_6++;
|
||||
|
||||
if (unk_0 == 0x80)
|
||||
ENDING_DATA.unk_6++;
|
||||
}
|
||||
}
|
||||
|
||||
ENDING_DATA.unk_8++;
|
||||
}
|
||||
|
||||
ENDING_DATA.unk_E += 7;
|
||||
gBG0YPosition += 7;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -837,7 +1174,7 @@ u8 EndingImageDisplay(void)
|
||||
break;
|
||||
|
||||
case 30:
|
||||
EndingImageLoadTextOAM(0);
|
||||
EndingImageLoadTextOAM(ENDING_IMAGE_OAM_SET_CLEAR_TIME);
|
||||
ENDING_DATA.unk_1 = TRUE;
|
||||
break;
|
||||
|
||||
@ -852,7 +1189,7 @@ u8 EndingImageDisplay(void)
|
||||
break;
|
||||
|
||||
case 330:
|
||||
EndingImageLoadTextOAM(1);
|
||||
EndingImageLoadTextOAM(ENDING_IMAGE_OAM_SET_YOUR_RATE);
|
||||
break;
|
||||
|
||||
case 375:
|
||||
@ -864,7 +1201,7 @@ u8 EndingImageDisplay(void)
|
||||
case 380:
|
||||
if (ENDING_DATA.language == LANGUAGE_JAPANESE || ENDING_DATA.language == LANGUAGE_ENGLISH ||
|
||||
ENDING_DATA.language == LANGUAGE_ITALIAN)
|
||||
EndingImageLoadTextOAM(2);
|
||||
EndingImageLoadTextOAM(ENDING_IMAGE_OAM_SET_COLLECTING);
|
||||
break;
|
||||
|
||||
case 460:
|
||||
@ -915,7 +1252,7 @@ u8 EndingImageDisplay(void)
|
||||
if (ENDING_DATA.unk_1 == TRUE)
|
||||
{
|
||||
for (i = 6; i < ENDING_DATA.oamLength; i++)
|
||||
EndingImageCheckDisplayLetter(i);
|
||||
EndingImageUpdateLettersSpawnDelay(i);
|
||||
}
|
||||
|
||||
EndingImageDisplayText();
|
||||
@ -1180,12 +1517,6 @@ void GalleryInit(void)
|
||||
GalleryVBlank();
|
||||
}
|
||||
|
||||
#define GALLERY_RESET_BG_POS()\
|
||||
do { \
|
||||
gBG0YPosition = 0; \
|
||||
gBG1YPosition = 0; \
|
||||
} while(0);
|
||||
|
||||
/**
|
||||
* @brief 8761c | 15c | Handles the display of the gallery image
|
||||
*
|
||||
|
258
src/fusion_gallery.c
Normal file
258
src/fusion_gallery.c
Normal file
@ -0,0 +1,258 @@
|
||||
#include "fusion_gallery.h"
|
||||
|
||||
#include "data/shortcut_pointers.h"
|
||||
#include "data/fusion_gallery_data.h"
|
||||
|
||||
#include "constants/audio.h"
|
||||
#include "constants/ending_and_gallery.h"
|
||||
#include "constants/game_state.h"
|
||||
#include "constants/text.h"
|
||||
|
||||
#include "structs/bg_clip.h"
|
||||
#include "structs/display.h"
|
||||
#include "structs/fusion_gallery.h"
|
||||
#include "structs/game_state.h"
|
||||
|
||||
#define GALLERY_RESET_BG_POS()\
|
||||
do { \
|
||||
gBG0YPosition = 0; \
|
||||
gBG1YPosition = 0; \
|
||||
} while(0);
|
||||
|
||||
/**
|
||||
* @brief 847f8 | 78 | V-blank code for the fusion gallery
|
||||
*
|
||||
*/
|
||||
void FusionGalleryVBlank(void)
|
||||
{
|
||||
dma_set(3, gOamData, OAM_BASE, (DMA_ENABLE | DMA_32BIT) << 16 | OAM_SIZE / 4);
|
||||
|
||||
write16(REG_DISPCNT, FUSION_GALLERY_DATA.dispcnt);
|
||||
write16(REG_BLDCNT, FUSION_GALLERY_DATA.bldcnt);
|
||||
|
||||
write16(REG_BLDY, gWrittenToBLDY_NonGameplay);
|
||||
|
||||
write16(REG_BG0VOFS, (gBG0YPosition / 16) & 0x1FF);
|
||||
write16(REG_BG1VOFS, (gBG1YPosition / 16) & 0x1FF);
|
||||
}
|
||||
|
||||
void FusionGalleryInit(void)
|
||||
{
|
||||
u32 zero;
|
||||
u32 image;
|
||||
|
||||
write16(REG_IME, FALSE);
|
||||
write16(REG_DISPSTAT, read16(REG_DISPSTAT) & ~DSTAT_IF_HBLANK);
|
||||
write16(REG_IE, read16(REG_IE) & ~IF_HBLANK);
|
||||
write16(REG_IF, IF_HBLANK);
|
||||
|
||||
write16(REG_IME, TRUE);
|
||||
write16(REG_DISPCNT, 0);
|
||||
|
||||
write16(REG_IME, FALSE);
|
||||
CallbackSetVBlank(FusionGalleryVBlank);
|
||||
write16(REG_IME, TRUE);
|
||||
|
||||
if (gGameModeSub1 == 0)
|
||||
{
|
||||
ClearGfxRam();
|
||||
zero = 0;
|
||||
dma_set(3, &zero, &gNonGameplayRAM, (DMA_ENABLE | DMA_32BIT | DMA_SRC_FIXED) << 16 | sizeof(gNonGameplayRAM) / 4);
|
||||
}
|
||||
|
||||
image = FUSION_GALLERY_DATA.currentImage;
|
||||
LZ77UncompVRAM(sFusionGalleryData[image].pTopGfx, VRAM_BASE);
|
||||
LZ77UncompVRAM(sFusionGalleryData[image].pBottomGfx, VRAM_BASE + 0x8000);
|
||||
LZ77UncompVRAM(sFusionGalleryData[image].pTopTileTable, VRAM_BASE + 0xE000);
|
||||
LZ77UncompVRAM(sFusionGalleryData[image].pBottomTileTable, VRAM_BASE + 0xF800);
|
||||
|
||||
BitFill(3, 0x4FF04FF, VRAM_BASE + 0xE800, 0x800, 32);
|
||||
dma_set(3, sFusionGalleryData[image].pPalette, PALRAM_BASE, DMA_ENABLE << 16 | PALRAM_SIZE / 4);
|
||||
|
||||
write16(REG_BG0CNT, 0x9C00);
|
||||
write16(REG_BG1CNT, 0x9E09);
|
||||
|
||||
gNextOamSlot = 0;
|
||||
ResetFreeOAM();
|
||||
|
||||
gBG0XPosition = 0;
|
||||
gBG0YPosition = 0x1000;
|
||||
gBG1XPosition = 0;
|
||||
gBG1YPosition = 0x1000;
|
||||
gBG2XPosition = 0;
|
||||
gBG2YPosition = 0;
|
||||
gBG3XPosition = 0;
|
||||
gBG3YPosition = 0;
|
||||
|
||||
write16(REG_BG0HOFS, 0);
|
||||
write16(REG_BG0VOFS, 0x1000);
|
||||
write16(REG_BG1HOFS, 0);
|
||||
write16(REG_BG1VOFS, 0x1000);
|
||||
write16(REG_BG2HOFS, 0);
|
||||
write16(REG_BG2VOFS, 0);
|
||||
write16(REG_BG3HOFS, 0);
|
||||
write16(REG_BG3VOFS, 0);
|
||||
|
||||
FUSION_GALLERY_DATA.unk_2 = 0;
|
||||
FUSION_GALLERY_DATA.dispcnt = DCNT_BG0 | DCNT_BG1 | DCNT_OBJ;
|
||||
ENDING_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 |
|
||||
BLDCNT_ALPHA_BLENDING_EFFECT | BLDCNT_BRIGHTNESS_INCREASE_EFFECT;
|
||||
|
||||
FusionGalleryVBlank();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 84a40 | 120 | Handles the display of the fusion gallery image
|
||||
*
|
||||
* @return u32 bool, ended
|
||||
*/
|
||||
u32 FusionGalleryDisplay(void)
|
||||
{
|
||||
u8 imageId;
|
||||
u32 ended;
|
||||
i32 velocity;
|
||||
u32 change;
|
||||
u8 complPercent;
|
||||
u8 bit;
|
||||
|
||||
ended = FALSE;
|
||||
change = FALSE;
|
||||
imageId = FUSION_GALLERY_DATA.currentImage;
|
||||
complPercent = 0;
|
||||
|
||||
if (gChangedInput & KEY_B)
|
||||
{
|
||||
FUSION_GALLERY_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 |
|
||||
BLDCNT_ALPHA_BLENDING_EFFECT | BLDCNT_BRIGHTNESS_INCREASE_EFFECT;
|
||||
|
||||
gWrittenToBLDY_NonGameplay = 0;
|
||||
ended = TRUE;
|
||||
}
|
||||
else if (gChangedInput & (KEY_A | KEY_RIGHT))
|
||||
{
|
||||
if (imageId < NUMBER_OF_FUSION_GALLERY_IMAGES - 1)
|
||||
imageId++;
|
||||
else
|
||||
imageId = 0;
|
||||
|
||||
change++;
|
||||
}
|
||||
else if (gChangedInput & KEY_LEFT)
|
||||
{
|
||||
if (imageId != 0)
|
||||
imageId--;
|
||||
else
|
||||
imageId = NUMBER_OF_FUSION_GALLERY_IMAGES - 1;
|
||||
|
||||
change++;
|
||||
}
|
||||
|
||||
|
||||
if (change)
|
||||
{
|
||||
FUSION_GALLERY_DATA.currentImage = imageId;
|
||||
|
||||
FUSION_GALLERY_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 |
|
||||
BLDCNT_ALPHA_BLENDING_EFFECT | BLDCNT_BRIGHTNESS_INCREASE_EFFECT;
|
||||
|
||||
gWrittenToBLDY_NonGameplay = 0;
|
||||
gGameModeSub1 = 5;
|
||||
}
|
||||
|
||||
change = FALSE;
|
||||
velocity = 8;
|
||||
|
||||
if (FUSION_GALLERY_DATA.unk_2 != 0)
|
||||
{
|
||||
if (gButtonInput & KEY_DOWN)
|
||||
change = TRUE;
|
||||
|
||||
velocity = 12;
|
||||
}
|
||||
|
||||
if (!change)
|
||||
{
|
||||
if (gBG0YPosition > velocity)
|
||||
{
|
||||
gBG0YPosition -= velocity;
|
||||
gBG1YPosition -= velocity;
|
||||
}
|
||||
else
|
||||
{
|
||||
GALLERY_RESET_BG_POS();
|
||||
FUSION_GALLERY_DATA.unk_2 = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gBG0YPosition += velocity;
|
||||
gBG1YPosition += velocity;
|
||||
|
||||
if (gBG0YPosition > BLOCK_SIZE * 64)
|
||||
{
|
||||
gBG0YPosition = BLOCK_SIZE * 64;
|
||||
gBG1YPosition = BLOCK_SIZE * 64;
|
||||
}
|
||||
}
|
||||
|
||||
return ended;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 84b60 | d4 | Fusion gallery subroutine
|
||||
*
|
||||
* @return u32 bool, ended
|
||||
*/
|
||||
u32 FusionGallerySubroutine(void)
|
||||
{
|
||||
u32 ended;
|
||||
|
||||
ended = FALSE;
|
||||
FUSION_GALLERY_DATA.stage = 0;
|
||||
|
||||
switch (gGameModeSub1)
|
||||
{
|
||||
case 0:
|
||||
case 4:
|
||||
GalleryInit();
|
||||
gGameModeSub1 = 1;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (gWrittenToBLDY_NonGameplay != 0)
|
||||
{
|
||||
gWrittenToBLDY_NonGameplay--;
|
||||
break;
|
||||
}
|
||||
|
||||
FUSION_GALLERY_DATA.bldcnt = 0;
|
||||
gGameModeSub1++;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (GalleryDisplay())
|
||||
gGameModeSub1++;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 5:
|
||||
if (gWrittenToBLDY_NonGameplay < 16)
|
||||
{
|
||||
if (FUSION_GALLERY_DATA.unk_94++ & 1)
|
||||
gWrittenToBLDY_NonGameplay++;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (gGameModeSub1 == 3)
|
||||
ended++;
|
||||
else
|
||||
gGameModeSub1 = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
return ended;
|
||||
}
|
@ -338,7 +338,7 @@ void GameOverInit_Unused(void)
|
||||
UpdateSOUNDCNT_H(0x194F780);
|
||||
StopAllMusicsAndSounds();
|
||||
|
||||
write16(PALRAM_BASE, 0x7FFF);
|
||||
write16(PALRAM_BASE, COLOR_WHITE);
|
||||
|
||||
write16(REG_BG0CNT, 0);
|
||||
write16(REG_BG1CNT, 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user