through sub_80F5334

This commit is contained in:
PikalaxALT
2020-01-17 09:51:32 -05:00
parent 9af01f5fad
commit fc9a008481
4 changed files with 131 additions and 283 deletions
+125
View File
@@ -0,0 +1,125 @@
#include "global.h"
#include "decompress.h"
#include "dma3.h"
#include "gpu_regs.h"
#include "help_system.h"
#include "m4a.h"
#include "save.h"
#include "save_failed_screen.h"
#include "strings.h"
bool32 gUnknown_3005430;
EWRAM_DATA u16 gUnknown_203AB4C = SAVE_NORMAL;
EWRAM_DATA u8 gUnknown_203AB50 = 0;
void sub_80F52EC(void);
void sub_80F53CC(void);
void sub_80F53E8(void);
void sub_80F5404(const u8 *a0);
bool32 sub_80F5458(void);
extern const u16 gUnknown_841EE44[];
void sub_80F50F4(void)
{
gUnknown_3005430 = FALSE;
}
void DoSaveFailedScreen(u8 saveType)
{
gUnknown_203AB4C = saveType;
gUnknown_3005430 = TRUE;
}
bool32 sub_80F5118(void)
{
switch (gUnknown_203AB50)
{
case 0:
if (!gUnknown_3005430)
return FALSE;
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 128);
SaveCallbacks();
gUnknown_203AB50 = 1;
break;
case 1:
SaveMapTiles();
SaveMapGPURegs();
SaveMapTextColors();
sub_80F52EC();
SetGpuReg(REG_OFFSET_DISPCNT, 0);
gUnknown_203AB50 = 2;
break;
case 2:
RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0);
RequestDma3Copy(gUnknown_841EE44, (void *)PLTT, 0x20, 0);
gUnknown_203AB50 = 3;
break;
case 3:
sub_80F53E8();
sub_80F5404(gUnknown_8418C83);
sub_80F53CC();
gUnknown_203AB50 = 4;
break;
case 4:
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON);
gUnknown_203AB50 = 5;
break;
case 5:
if (sub_80F5458() == TRUE)
{
gSaveSucceeded = SAVE_STATUS_OK;
sub_80F5404(gUnknown_8418E09);
}
else
{
gSaveSucceeded = SAVE_STATUS_ERROR;
sub_80F5404(gUnknown_8418CD9);
}
gUnknown_203AB50 = 6;
break;
case 6:
if (JOY_NEW(A_BUTTON))
gUnknown_203AB50 = 7;
break;
case 7:
SetGpuReg(REG_OFFSET_DISPCNT, 0);
RestoreMapTiles();
sub_80F52EC();
gUnknown_203AB50 = 8;
break;
case 8:
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
RestoreMapTextColors();
RestoreGPURegs();
RestoreCallbacks();
gUnknown_3005430 = FALSE;
gUnknown_203AB50 = 0;
break;
}
return TRUE;
}
void sub_80F52EC(void)
{
int i;
for (i = 0; i < BG_PLTT_SIZE; i += sizeof(u16))
{
*((u16 *)(BG_PLTT + i)) = RGB_BLACK;
*((u16 *)(OBJ_PLTT + i)) = RGB_BLACK;
}
}
void sub_80F5318(void)
{
RequestDma3Copy(gDecompressionBuffer + 0x3800, (void *)BG_SCREEN_ADDR(31), 0x500, 0);
}
void sub_80F5334(void)
{
RequestDma3Copy(gDecompressionBuffer + 0x020, (void *)BG_CHAR_ADDR(3) + 0x20, 0x2300, 0);
}