Split message_box.c from save.c

This commit is contained in:
GriffinR
2022-01-15 14:51:32 -05:00
parent 4c04e13962
commit 4a96086ff1
8 changed files with 72 additions and 73 deletions

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,16 @@
#ifndef GUARD_MESSAGE_BOX_H
#define GUARD_MESSAGE_BOX_H
enum Message
{
MSG_WILL_NOW_UPDATE = 0,
MSG_HAS_BEEN_UPDATED,
MSG_UNABLE_TO_UPDATE,
MSG_NO_NEED_TO_UPDATE,
MSG_UPDATING
};
void MessageBox_Load(void);
void MessageBox_Display(enum Message);
#endif //GUARD_MESSAGE_BOX_H

View File

@@ -15,14 +15,7 @@
#define SECTOR_ID_SAVEBLOCK2 0
#define SECTOR_ID_SAVEBLOCK1_START 1
#define SECTOR_ID_SAVEBLOCK1_END 4
#define SECTOR_ID_PKMN_STORAGE_START 5
#define SECTOR_ID_PKMN_STORAGE_END 13
#define NUM_SECTORS_PER_SLOT 14
// Save Slot 1: 0-13; Save Slot 2: 14-27
#define SECTOR_ID_HOF_1 28
#define SECTOR_ID_HOF_2 29
#define SECTOR_ID_TRAINER_HILL 30
#define SECTOR_ID_RECORDED_BATTLE 31
#define SECTORS_COUNT 32
#define SAVE_STATUS_EMPTY 0
@@ -42,15 +35,6 @@ enum
SECTOR_CHECK, // unused
};
enum MsgBoxUpdateMessage
{
MSGBOX_WILL_NOW_UPDATE = 0,
MSGBOX_HAS_BEEN_UPDATED,
MSGBOX_UNABLE_TO_UPDATE,
MSGBOX_NO_NEED_TO_UPDATE,
MSGBOX_UPDATING
};
struct SaveBlockChunk
{
u8 * data;
@@ -76,9 +60,4 @@ extern const struct SaveBlockChunk gSaveBlockChunks[];
u8 WriteSaveSectorOrSlot(u16 sectorId, const struct SaveBlockChunk *chunks);
u8 TryLoadSaveSlot(u16 sectorId, const struct SaveBlockChunk *chunks);
void msg_load_gfx(void);
void msg_display(enum MsgBoxUpdateMessage);
bool32 flash_maincb_check_need_reset_pacifidlog_tm(void);
bool32 flash_maincb_reset_pacifidlog_tm(void);
#endif //GUARD_SAVE_H

View File

@@ -10,6 +10,7 @@ SECTIONS {
src/main.o(.text);
src/rtc.o(.text);
src/berry_fix_save.o(.text);
src/message_box.o(.text);
src/save.o(.text);
src/event_data.o(.text);
} =0
@@ -34,6 +35,7 @@ SECTIONS {
src/main.o(.rodata);
src/rtc.o(.rodata);
src/save.o(.rodata);
src/message_box.o(.rodata);
} =0
lib_rodata :

View File

@@ -4,6 +4,7 @@
#include "rtc.h"
#include "berry_fix_save.h"
#include "event_data.h"
#include "message_box.h"
static s32 gInitialWaitTimer;
IntrFunc gIntrTable[16];
@@ -70,7 +71,7 @@ void AgbMain(void)
REG_IE |= INTR_FLAG_GAMEPAK;
REG_DISPSTAT = DISPSTAT_VBLANK_INTR;
REG_IME = INTR_FLAG_VBLANK;
msg_load_gfx();
MessageBox_Load();
gMainCallbackState = MAINCB_INIT;
gUnknown_3001194 = 0;
for (;;)
@@ -173,7 +174,7 @@ void main_callback(u32 * state, void * unused1, void * unused2)
switch (*state)
{
case MAINCB_INIT:
msg_display(MSGBOX_WILL_NOW_UPDATE);
MessageBox_Display(MSG_WILL_NOW_UPDATE);
if (++gInitialWaitTimer >= 180)
{
gInitialWaitTimer = 0;
@@ -240,7 +241,7 @@ void main_callback(u32 * state, void * unused1, void * unused2)
*state = MAINCB_FIX_PACIFIDLOG_TM;
break;
case MAINCB_FIX_PACIFIDLOG_TM:
msg_display(MSGBOX_UPDATING);
MessageBox_Display(MSG_UPDATING);
if (BerryFix_ResetPacifidlogTM() == TRUE)
{
gUpdateSuccessful |= 1;
@@ -253,16 +254,16 @@ void main_callback(u32 * state, void * unused1, void * unused2)
if (gUpdateSuccessful == 0)
*state = MAINCB_NO_NEED_TO_FIX;
else
msg_display(MSGBOX_HAS_BEEN_UPDATED);
MessageBox_Display(MSG_HAS_BEEN_UPDATED);
break;
case MAINCB_NO_NEED_TO_FIX:
msg_display(MSGBOX_NO_NEED_TO_UPDATE);
MessageBox_Display(MSG_NO_NEED_TO_UPDATE);
break;
case MAINCB_YEAR_MAKES_NO_SENSE:
msg_display(MSGBOX_UNABLE_TO_UPDATE);
MessageBox_Display(MSG_UNABLE_TO_UPDATE);
break;
case MAINCB_ERROR:
msg_display(MSGBOX_UNABLE_TO_UPDATE);
MessageBox_Display(MSG_UNABLE_TO_UPDATE);
break;
}
}

46
payload/src/message_box.c Normal file
View File

@@ -0,0 +1,46 @@
#include "global.h"
#include "message_box.h"
static const u16 sMessages_Pal[] = INCBIN_U16("graphics/messages.gbapal");
static const u8 sMessages_Tilemap[] = INCBIN_U8("graphics/messages.bin.lz");
static const u8 sMessages_Gfx[] = INCBIN_U8("graphics/messages.4bpp.lz");
void MessageBox_Load(void)
{
REG_DISPCNT = 0;
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
REG_BLDCNT = 0;
LZ77UnCompVram(sMessages_Gfx, (void *)BG_VRAM);
LZ77UnCompVram(sMessages_Tilemap, (void *)BG_SCREEN_ADDR(28));
CpuCopy16(sMessages_Pal, (void *)BG_PLTT, BG_PLTT_SIZE);
REG_BG0CNT = BGCNT_SCREENBASE(28) | BGCNT_TXT512x512;
REG_DISPCNT = DISPCNT_BG0_ON;
}
void MessageBox_Display(enum Message msg)
{
switch (msg)
{
case MSG_WILL_NOW_UPDATE:
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
break;
case MSG_HAS_BEEN_UPDATED:
REG_BG0HOFS = 0x100;
REG_BG0VOFS = 0;
break;
case MSG_UNABLE_TO_UPDATE:
REG_BG0HOFS = 0x100;
REG_BG0VOFS = 0xB0;
break;
case MSG_NO_NEED_TO_UPDATE:
REG_BG0HOFS = 0;
REG_BG0VOFS = 0xB0;
break;
case MSG_UPDATING:
REG_BG0HOFS = 0;
REG_BG0VOFS = 0x160;
break;
}
}

View File

@@ -1,6 +1,5 @@
#include "global.h"
#include "save.h"
#include "rtc.h"
/*
The Berry Fix Program contains a copy of most of Ruby/Sapphire's save code.
@@ -56,50 +55,6 @@ const struct SaveBlockChunk gSaveBlockChunks[] =
SAVEBLOCK_CHUNK(gPokemonStorage, 8),
};
const u16 gInfoMessagesPal[] = INCBIN_U16("graphics/msg_box.gbapal");
const u8 gInfoMessagesTilemap[] = INCBIN_U8("graphics/msg_box.tilemap.lz");
const u8 gInfoMessagesGfx[] = INCBIN_U8("graphics/msg_box.4bpp.lz");
void msg_load_gfx(void)
{
REG_DISPCNT = 0;
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
REG_BLDCNT = 0;
LZ77UnCompVram(gInfoMessagesGfx, (void *)BG_VRAM);
LZ77UnCompVram(gInfoMessagesTilemap, (void *)BG_SCREEN_ADDR(28));
CpuCopy16(gInfoMessagesPal, (void *)BG_PLTT, BG_PLTT_SIZE);
REG_BG0CNT = BGCNT_SCREENBASE(28) | BGCNT_TXT512x512;
REG_DISPCNT = DISPCNT_BG0_ON;
}
void msg_display(enum MsgBoxUpdateMessage a0)
{
switch (a0)
{
case MSGBOX_WILL_NOW_UPDATE:
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
break;
case MSGBOX_HAS_BEEN_UPDATED:
REG_BG0HOFS = 0x100;
REG_BG0VOFS = 0;
break;
case MSGBOX_UNABLE_TO_UPDATE:
REG_BG0HOFS = 0x100;
REG_BG0VOFS = 0xB0;
break;
case MSGBOX_NO_NEED_TO_UPDATE:
REG_BG0HOFS = 0;
REG_BG0VOFS = 0xB0;
break;
case MSGBOX_UPDATING:
REG_BG0HOFS = 0;
REG_BG0VOFS = 0x160;
break;
}
}
// Unused
static void ClearSaveData(void)
{