diff options
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | asm/clear_save_data_menu.s | 289 | ||||
-rw-r--r-- | include/gba/types.h | 18 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/clear_save_data_menu.c | 124 |
5 files changed, 130 insertions, 303 deletions
@@ -149,7 +149,6 @@ asm/berry_tag_screen.o \ asm/mystery_event_menu.o \ asm/save_failed_screen.o \ asm/rom_81473B8.o \ -asm/clear_save_data_menu.o \ asm/rom_8148B8C.o \ asm/libgcnmultiboot.o \ asm/m4a_1.o \ diff --git a/asm/clear_save_data_menu.s b/asm/clear_save_data_menu.s deleted file mode 100644 index 22460043c..000000000 --- a/asm/clear_save_data_menu.s +++ /dev/null @@ -1,289 +0,0 @@ - .include "constants/gba_constants.s" - .include "constants/species_constants.s" - .include "asm/macros.s" - - .syntax unified - - .text - - thumb_func_start sub_8148930 -sub_8148930: @ 8148930 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl calls_flash_erase_block - adds r0, r4, 0 - bl DestroyTask - ldr r0, _08148950 @ =sub_8148B34 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08148950: .4byte sub_8148B34 - thumb_func_end sub_8148930 - - thumb_func_start sub_8148954 -sub_8148954: @ 8148954 - push {lr} - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8148954 - - thumb_func_start sub_8148964 -sub_8148964: @ 8148964 - push {lr} - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8148964 - - thumb_func_start sub_8148970 -sub_8148970: @ 8148970 - push {r4,lr} - sub sp, 0xC - ldr r0, _08148AA4 @ =gMain - ldr r1, _08148AA8 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08148986 - cmp r0, 0x1 - bne _08148986 - b _08148B04 -_08148986: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 19 - movs r4, 0 - strh r4, [r0] - adds r0, 0x10 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0xA - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x22 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x6 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - add r0, sp, 0x4 - strh r4, [r0] - ldr r1, _08148AAC @ =0x040000d4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _08148AB0 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - str r2, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _08148AB4 @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r2, [r0] - str r0, [r1] - ldr r0, _08148AB8 @ =0x05000002 - str r0, [r1, 0x4] - ldr r0, _08148ABC @ =0x810001ff - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - ldr r2, _08148AC0 @ =gPlttBufferUnfaded - ldr r0, _08148AC4 @ =0x00007fff - strh r0, [r2] - ldr r1, _08148AC8 @ =gPlttBufferFaded - strh r0, [r1] - ldr r0, _08148ACC @ =0x00003945 - strh r0, [r2, 0x2] - strh r0, [r1, 0x2] - movs r1, 0 - ldr r3, _08148AD0 @ =0x06000020 - ldr r0, _08148AD4 @ =0x00001111 - adds r2, r0, 0 -_08148A14: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _08148A14 - movs r1, 0 - ldr r4, _08148AD8 @ =0x06003800 - movs r3, 0x1 - ldr r2, _08148ADC @ =0x000004ff -_08148A2C: - lsls r0, r1, 1 - adds r0, r4 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bls _08148A2C - bl ResetTasks - bl ResetSpriteData - ldr r0, _08148AE0 @ =gWindowConfig_81E6C3C - bl SetUpWindowConfig - ldr r0, _08148AE4 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - movs r0, 0x1 - negs r0, r0 - ldr r1, _08148AE8 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _08148AEC @ =0x04000208 - ldrh r1, [r2] - movs r0, 0 - strh r0, [r2] - ldr r3, _08148AF0 @ =0x04000200 - ldrh r0, [r3] - movs r4, 0x1 - orrs r0, r4 - strh r0, [r3] - strh r1, [r2] - ldr r2, _08148AF4 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _08148AF8 @ =sub_8148964 - bl SetVBlankCallback - ldr r1, _08148AFC @ =REG_BG3CNT - ldr r2, _08148B00 @ =0x00000703 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xE - movs r2, 0x90 - lsls r2, 4 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _08148AA4 @ =gMain - ldr r1, _08148AA8 @ =0x0000043c - adds r0, r1 - strb r4, [r0] - b _08148B28 - .align 2, 0 -_08148AA4: .4byte gMain -_08148AA8: .4byte 0x0000043c -_08148AAC: .4byte 0x040000d4 -_08148AB0: .4byte 0x8100c000 -_08148AB4: .4byte 0x85000100 -_08148AB8: .4byte 0x05000002 -_08148ABC: .4byte 0x810001ff -_08148AC0: .4byte gPlttBufferUnfaded -_08148AC4: .4byte 0x00007fff -_08148AC8: .4byte gPlttBufferFaded -_08148ACC: .4byte 0x00003945 -_08148AD0: .4byte 0x06000020 -_08148AD4: .4byte 0x00001111 -_08148AD8: .4byte 0x06003800 -_08148ADC: .4byte 0x000004ff -_08148AE0: .4byte gWindowConfig_81E6C3C -_08148AE4: .4byte gWindowConfig_81E6CE4 -_08148AE8: .4byte 0x0000ffff -_08148AEC: .4byte 0x04000208 -_08148AF0: .4byte 0x04000200 -_08148AF4: .4byte REG_DISPSTAT -_08148AF8: .4byte sub_8148964 -_08148AFC: .4byte REG_BG3CNT -_08148B00: .4byte 0x00000703 -_08148B04: - bl UpdatePaletteFade - ldr r0, _08148B20 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08148B28 - ldr r0, _08148B24 @ =sub_8148954 - bl SetMainCallback2 - movs r0, 0x1 - b _08148B2A - .align 2, 0 -_08148B20: .4byte gPaletteFade -_08148B24: .4byte sub_8148954 -_08148B28: - movs r0, 0 -_08148B2A: - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8148970 - - thumb_func_start sub_8148B34 -sub_8148B34: @ 8148B34 - push {r4,lr} - sub sp, 0x4 - ldr r0, _08148B60 @ =gMain - ldr r1, _08148B64 @ =0x0000043c - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08148B48 - cmp r0, 0x1 - beq _08148B6C -_08148B48: - movs r0, 0x1 - negs r0, r0 - ldr r1, _08148B68 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x1 - strb r0, [r4] - b _08148B80 - .align 2, 0 -_08148B60: .4byte gMain -_08148B64: .4byte 0x0000043c -_08148B68: .4byte 0x0000ffff -_08148B6C: - bl UpdatePaletteFade - ldr r0, _08148B88 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08148B80 - bl DoSoftReset -_08148B80: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08148B88: .4byte gPaletteFade - thumb_func_end sub_8148B34 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/gba/types.h b/include/gba/types.h index 589d27b58..be7390d5a 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -1,14 +1,16 @@ #ifndef GUARD_GBA_TYPES_H #define GUARD_GBA_TYPES_H -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; -typedef unsigned long long u64; -typedef signed char s8; -typedef signed short s16; -typedef signed int s32; -typedef signed long long s64; +#include <stdint.h> + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; typedef volatile u8 vu8; typedef volatile u16 vu16; diff --git a/ld_script.txt b/ld_script.txt index 4d36d310c..645ef8f37 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -180,7 +180,6 @@ SECTIONS { asm/save_failed_screen.o(.text); asm/rom_81473B8.o(.text); src/clear_save_data_menu.o(.text); - asm/clear_save_data_menu.o(.text); asm/rom_8148B8C.o(.text); } =0 diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index c3879339d..11eda7209 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -7,15 +7,18 @@ #include "palette.h" #include "sound.h" -extern bool8 sub_8148970(void); -extern void sub_8148830(u8); -extern void sub_81488BC(u8); - extern u8 gSystemText_ClearAllSaveDataPrompt[]; extern u8 gSystemText_ClearingData[]; extern u8 *gUnknown_08376D74[][2]; +void c2_clear_save_data_screen_2(void); +void sub_814881C(void); +void sub_8148830(u8); +void sub_81488BC(u8); void sub_8148930(u8); +void sub_8148954(void); +static void VBlankCB_InitMenu(void); +u8 sub_8148970(void); void sub_8148B34(void); void c2_clear_save_data_screen_2(void) @@ -69,3 +72,116 @@ void sub_81488BC(u8 taskId) AnimateSprites(); BuildOamBuffer(); } + +void sub_8148930(u8 r0_in) +{ + calls_flash_erase_block(); + DestroyTask(r0_in); + SetMainCallback2(sub_8148B34); +} + +void sub_8148954(void) +{ + RunTasks(); + UpdatePaletteFade(); +} + +static void VBlankCB_InitMenu(void) +{ + TransferPlttBuffer(); +} + +u8 sub_8148970(void) +{ + u16 i; + u16 ime; + + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + + REG_DISPCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + + ResetPaletteFade(); + + gPlttBufferUnfaded[0] = 0x7fff; + gPlttBufferFaded[0] = 0x7fff; + gPlttBufferUnfaded[1] = 0x3945; + gPlttBufferFaded[1] = 0x3945; + + i = 0; + do + { + ((vu16 *)(VRAM + 0x20))[i] = 0x1111; + i++; + } while (i < 0x10); + + i = 0; + do + { + ((vu16 *)(VRAM + 0x3800))[i] = 0x0001; + i++; + } while (i < 0x500); + + ResetTasks(); + ResetSpriteData(); + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); + + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + + SetVBlankCallback(VBlankCB_InitMenu); + + REG_BG3CNT = 0x0703; + REG_DISPCNT = 0x0900; + gMain.state = 1; + return 0; + case 1: + UpdatePaletteFade(); + if (gPaletteFade.active) + return 0; + SetMainCallback2(sub_8148954); + return 1; + } +} + +void sub_8148B34(void) +{ + switch (gMain.state) + { + case 0: + default: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff); + gMain.state = 1; + break; + case 1: + UpdatePaletteFade(); + if (gPaletteFade.active) + return; + DoSoftReset(); + break; + } +} |