summaryrefslogtreecommitdiff
path: root/arm9/src/save_data_read_error.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src/save_data_read_error.c')
-rw-r--r--arm9/src/save_data_read_error.c79
1 files changed, 71 insertions, 8 deletions
diff --git a/arm9/src/save_data_read_error.c b/arm9/src/save_data_read_error.c
index f3778435..9524475c 100644
--- a/arm9/src/save_data_read_error.c
+++ b/arm9/src/save_data_read_error.c
@@ -13,7 +13,7 @@ extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_valu
extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen);
extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32);
-const struct WindowTemplate gSaveDataReadErrorWindowTemplate = {
+static const struct WindowTemplate sSaveDataReadErrorWindowTemplate = {
.bgId = GF_BG_LYR_MAIN_0,
.tilemapLeft = 3,
.tilemapTop = 3,
@@ -23,14 +23,14 @@ const struct WindowTemplate gSaveDataReadErrorWindowTemplate = {
.baseTile = 0x23,
};
-const struct GraphicsModes gSaveDataReadErrorGraphicsModes = {
+static const struct GraphicsModes sSaveDataReadErrorGraphicsModes = {
.dispMode = GX_DISPMODE_GRAPHICS,
.bgMode = GX_BGMODE_0,
.subMode = GX_BGMODE_0,
._2d3dMode = GX_BG0_AS_2D,
};
-const struct BgTemplate gSaveDataReadErrorBgTemplate = {
+static const struct BgTemplate sSaveDataReadErrorBgTemplate = {
.x = 0,
.y = 0,
.bufferSize = 0x800,
@@ -46,7 +46,7 @@ const struct BgTemplate gSaveDataReadErrorBgTemplate = {
.mosaic = FALSE,
};
-const struct GraphicsBanks gSaveDataReadErrorGraphicsBanks = {
+static const struct GraphicsBanks sSaveDataReadErrorGraphicsBanks = {
.bg = 3,
.bgextpltt = 0,
.subbg = 0,
@@ -83,13 +83,13 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id)
reg_G2S_DB_BLDCNT = 0;
reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
- GX_SetBanks(&gSaveDataReadErrorGraphicsBanks);
+ GX_SetBanks(&sSaveDataReadErrorGraphicsBanks);
struct BgConfig* bg_config = BgConfig_Alloc(heap_id);
- SetBothScreensModesAndDisable(&gSaveDataReadErrorGraphicsModes);
+ SetBothScreensModesAndDisable(&sSaveDataReadErrorGraphicsModes);
- InitBgFromTemplate(bg_config, 0, &gSaveDataReadErrorBgTemplate, 0);
+ InitBgFromTemplate(bg_config, 0, &sSaveDataReadErrorBgTemplate, 0);
BgClearTilemapBufferAndCommit(bg_config, 0);
FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id);
FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id);
@@ -102,7 +102,7 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id)
FUN_0201BD5C();
- AddWindow(bg_config, &window, &gSaveDataReadErrorWindowTemplate);
+ AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate);
FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
FUN_0200CCA4(&window, FALSE, 0x01F7, 2);
@@ -121,3 +121,66 @@ THUMB_FUNC void ShowSaveDataReadError(u32 heap_id)
OS_WaitIrq(TRUE, OS_IE_V_BLANK);
}
}
+
+THUMB_FUNC void ShowGBACartRemovedError(u32 heap_id)
+{
+ struct Window window;
+
+ FUN_0200E3A0(PM_LCD_TOP, 0);
+ FUN_0200E3A0(PM_LCD_BOTTOM, 0);
+
+ Main_SetVBlankIntrCB(NULL, NULL);
+ FUN_02015F34(NULL, NULL);
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+
+ SetKeyRepeatTimers(4, 8);
+
+ gMain.screensFlipped = 0;
+
+ GX_SwapDisplay();
+ reg_G2_BLDCNT = 0;
+ reg_G2S_DB_BLDCNT = 0;
+ reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
+ reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
+ GX_SetBanks(&sSaveDataReadErrorGraphicsBanks);
+
+ struct BgConfig* bg_config = BgConfig_Alloc(heap_id);
+
+ SetBothScreensModesAndDisable(&sSaveDataReadErrorGraphicsModes);
+
+ InitBgFromTemplate(bg_config, 0, &sSaveDataReadErrorBgTemplate, 0);
+ BgClearTilemapBufferAndCommit(bg_config, 0);
+ FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id);
+ FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id);
+ BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id);
+ BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21);
+ BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21);
+
+ struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0005_bin, heap_id);
+ struct String* str = String_ctor(384, heap_id);
+
+ FUN_0201BD5C();
+
+ AddWindow(bg_config, &window, &sSaveDataReadErrorWindowTemplate);
+ FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
+ FUN_0200CCA4(&window, FALSE, 0x01F7, 2);
+
+ ReadMsgDataIntoString(msg_data, 1, str);
+ AddTextPrinterParameterized(&window, 0, str, 0, 0, 0, NULL);
+ String_dtor(str);
+
+ GX_BothDispOn();
+ FUN_0200E394(PM_LCD_TOP);
+ FUN_0200E394(PM_LCD_BOTTOM);
+ SetBrightness(0, 0x3F, 3);
+
+ while (TRUE)
+ {
+ HandleDSLidAction();
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
+ }
+}