diff --git a/payload/graphics/msg_box.tilemap b/payload/graphics/messages.bin similarity index 100% rename from payload/graphics/msg_box.tilemap rename to payload/graphics/messages.bin diff --git a/payload/graphics/msg_box.png b/payload/graphics/messages.png similarity index 100% rename from payload/graphics/msg_box.png rename to payload/graphics/messages.png diff --git a/payload/include/message_box.h b/payload/include/message_box.h new file mode 100644 index 0000000..ecff960 --- /dev/null +++ b/payload/include/message_box.h @@ -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 diff --git a/payload/include/save.h b/payload/include/save.h index 2e731ce..3dfb44a 100644 --- a/payload/include/save.h +++ b/payload/include/save.h @@ -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 diff --git a/payload/ld_script.txt b/payload/ld_script.txt index 7b3ed26..9b349aa 100644 --- a/payload/ld_script.txt +++ b/payload/ld_script.txt @@ -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 : diff --git a/payload/src/main.c b/payload/src/main.c index 3891502..bb78e7d 100644 --- a/payload/src/main.c +++ b/payload/src/main.c @@ -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; } } diff --git a/payload/src/message_box.c b/payload/src/message_box.c new file mode 100644 index 0000000..b66b2d8 --- /dev/null +++ b/payload/src/message_box.c @@ -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; + } +} diff --git a/payload/src/save.c b/payload/src/save.c index 40fd33b..37ef8e5 100644 --- a/payload/src/save.c +++ b/payload/src/save.c @@ -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) {