mirror of
https://github.com/pret/berry-fix.git
synced 2026-09-26 20:07:14 -05:00
Split message_box.c from save.c
This commit is contained in:
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
16
payload/include/message_box.h
Normal file
16
payload/include/message_box.h
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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 :
|
||||
|
||||
@@ -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
46
payload/src/message_box.c
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user