From d30bc8b08414a6a564b1d3fb9ba7b49eaa972844 Mon Sep 17 00:00:00 2001 From: SNBeast Date: Thu, 8 Jul 2021 20:17:54 -0400 Subject: Decompile unk_02022450.s --- arm9/src/game_init.c | 3 +-- arm9/src/unk_02022450.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 arm9/src/unk_02022450.c (limited to 'arm9/src') diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c index 1c6098ea..020d4b75 100644 --- a/arm9/src/game_init.c +++ b/arm9/src/game_init.c @@ -7,6 +7,7 @@ #include "MWC_string.h" #include "tp.h" #include "unk_0201B4E8.h" +#include "unk_02022450.h" #include "game_init.h" #include "registers.h" #include "heap.h" @@ -14,8 +15,6 @@ #pragma thumb on -extern void FUN_02022450(void); - typedef volatile struct { u8 sys_and_irq_stack[0x3F80]; diff --git a/arm9/src/unk_02022450.c b/arm9/src/unk_02022450.c new file mode 100644 index 00000000..2c69342c --- /dev/null +++ b/arm9/src/unk_02022450.c @@ -0,0 +1,43 @@ +#include "global.h" +#include "FS_file.h" +#include "OS_terminate_proc.h" +#include "CARD_rom.h" +#include "MI_memory.h" + +#include "unk_02022450.h" + +static const char string_saying_rom[] = "rom"; + +THUMB_FUNC void FUN_02022450 () { + if (!FS_IsAvailable()) { + OS_Terminate(); + } + else { + if (!*(u32*)0x027FF00C) { + CARD_Init(); + MI_CpuCopy8((u8*)0x027FFE00, (u8*)0x027FF000, 22 * 16); + MI_CpuCopy8((u8*)0x027FFE00, (u8*)0x027FFA80, 22 * 16); + *(u32*)0x027FF00C = 0x4A414441; + } + FSArchive * const r0 = FS_FindArchive(string_saying_rom, 3); + u32 *r1 = (u32*)0x027FF000; + r0->fat = r1[18]; + r0->fat_size = r1[19]; + r0->fnt = r1[16]; + r0->fnt_size = r1[17]; + if (*(u32*)0x027FF00C != 0x4A414441 || *(u16*)0x027FF010 != 0x3130) { + OS_Terminate(); + } + } + return; +} + +THUMB_FUNC void Reset_To_File (const char* path) { + FSFile file; + FS_InitFile(&file); + if (FS_OpenFile(&file, path)) { + *(u32*)HW_ROM_BASE_OFFSET_BUF = file.prop.file.top; + OS_ResetSystem(0); + } + return; +} -- cgit v1.2.3 From e1895a19eac585f6100785937a07caf29fe42c36 Mon Sep 17 00:00:00 2001 From: SNBeast Date: Thu, 8 Jul 2021 20:31:33 -0400 Subject: Use already defined constants whoops I should've checked this before --- arm9/src/unk_02022450.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02022450.c b/arm9/src/unk_02022450.c index 2c69342c..34d2dcd6 100644 --- a/arm9/src/unk_02022450.c +++ b/arm9/src/unk_02022450.c @@ -15,8 +15,8 @@ THUMB_FUNC void FUN_02022450 () { else { if (!*(u32*)0x027FF00C) { CARD_Init(); - MI_CpuCopy8((u8*)0x027FFE00, (u8*)0x027FF000, 22 * 16); - MI_CpuCopy8((u8*)0x027FFE00, (u8*)0x027FFA80, 22 * 16); + MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)0x027FF000, 22 * 16); + MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)HW_CARD_ROM_HEADER, 22 * 16); *(u32*)0x027FF00C = 0x4A414441; } FSArchive * const r0 = FS_FindArchive(string_saying_rom, 3); -- cgit v1.2.3 From 5d25e5e60c1e4e347310f014f38865cbac1c8ab1 Mon Sep 17 00:00:00 2001 From: SNBeast Date: Fri, 9 Jul 2021 09:01:59 -0400 Subject: Use another defined constant --- arm9/src/unk_02022450.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02022450.c b/arm9/src/unk_02022450.c index 34d2dcd6..30fed94a 100644 --- a/arm9/src/unk_02022450.c +++ b/arm9/src/unk_02022450.c @@ -13,14 +13,14 @@ THUMB_FUNC void FUN_02022450 () { OS_Terminate(); } else { + u32 *r1 = (u32*)HW_MAIN_MEM_SHARED; if (!*(u32*)0x027FF00C) { CARD_Init(); - MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)0x027FF000, 22 * 16); + MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)r1, 22 * 16); MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)HW_CARD_ROM_HEADER, 22 * 16); *(u32*)0x027FF00C = 0x4A414441; } FSArchive * const r0 = FS_FindArchive(string_saying_rom, 3); - u32 *r1 = (u32*)0x027FF000; r0->fat = r1[18]; r0->fat_size = r1[19]; r0->fnt = r1[16]; -- cgit v1.2.3 From a5efde18cac4c7ddfd294fad3a9f7ab1d6fa7b1e Mon Sep 17 00:00:00 2001 From: SNBeast Date: Fri, 9 Jul 2021 13:55:57 -0400 Subject: More defined constants --- arm9/src/unk_02022450.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02022450.c b/arm9/src/unk_02022450.c index 30fed94a..3425384e 100644 --- a/arm9/src/unk_02022450.c +++ b/arm9/src/unk_02022450.c @@ -8,24 +8,26 @@ static const char string_saying_rom[] = "rom"; +/*Replacing (HW_MAIN_MEM_SHARED + 0xC) or (HW_MAIN_MEM_SHARED + 0x10) or defining ADAJ or 01 constants causes match failure*/ THUMB_FUNC void FUN_02022450 () { if (!FS_IsAvailable()) { OS_Terminate(); } else { - u32 *r1 = (u32*)HW_MAIN_MEM_SHARED; - if (!*(u32*)0x027FF00C) { + struct CARD_Header* card_header_buffer = (struct CARD_Header*)HW_MAIN_MEM_SHARED; + + if (!*(u32*)(HW_MAIN_MEM_SHARED + 0xC)) { CARD_Init(); - MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)r1, 22 * 16); - MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)HW_CARD_ROM_HEADER, 22 * 16); - *(u32*)0x027FF00C = 0x4A414441; + MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)card_header_buffer, HW_CARD_ROM_HEADER_SIZE); + MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)HW_CARD_ROM_HEADER, HW_CARD_ROM_HEADER_SIZE); + *(u32*)(HW_MAIN_MEM_SHARED + 0xC) = 0x4A414441 /*"ADAJ" LE*/; } FSArchive * const r0 = FS_FindArchive(string_saying_rom, 3); - r0->fat = r1[18]; - r0->fat_size = r1[19]; - r0->fnt = r1[16]; - r0->fnt_size = r1[17]; - if (*(u32*)0x027FF00C != 0x4A414441 || *(u16*)0x027FF010 != 0x3130) { + r0->fat = card_header_buffer->header_48; + r0->fat_size = card_header_buffer->header_4C; + r0->fnt = card_header_buffer->header_40; + r0->fnt_size = card_header_buffer->header_44; + if (*(u32*)(HW_MAIN_MEM_SHARED + 0xC) != 0x4A414441 /*"ADAJ" LE*/ || *(u16*)(HW_MAIN_MEM_SHARED + 0x10) != 0x3130 /*"01" LE*/) { OS_Terminate(); } } -- cgit v1.2.3 From afdedc1b2e42c5d622f169c0ce08571fb2e232c2 Mon Sep 17 00:00:00 2001 From: SNBeast Date: Fri, 9 Jul 2021 20:03:33 -0400 Subject: Correct Spacing For real this time --- arm9/src/unk_02022450.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02022450.c b/arm9/src/unk_02022450.c index 3425384e..7984fcc2 100644 --- a/arm9/src/unk_02022450.c +++ b/arm9/src/unk_02022450.c @@ -35,11 +35,11 @@ THUMB_FUNC void FUN_02022450 () { } THUMB_FUNC void Reset_To_File (const char* path) { - FSFile file; - FS_InitFile(&file); - if (FS_OpenFile(&file, path)) { - *(u32*)HW_ROM_BASE_OFFSET_BUF = file.prop.file.top; - OS_ResetSystem(0); - } - return; + FSFile file; + FS_InitFile(&file); + if (FS_OpenFile(&file, path)) { + *(u32*)HW_ROM_BASE_OFFSET_BUF = file.prop.file.top; + OS_ResetSystem(0); + } + return; } -- cgit v1.2.3 From 795f3323f2649e89e3cfe89676bf0d0f182a6c5d Mon Sep 17 00:00:00 2001 From: SNBeast Date: Sat, 10 Jul 2021 03:07:05 +0000 Subject: Fix the merge conflict right this time --- arm9/src/game_init.c | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c index 020d4b75..44dcc111 100644 --- a/arm9/src/game_init.c +++ b/arm9/src/game_init.c @@ -15,18 +15,6 @@ #pragma thumb on -typedef volatile struct -{ - u8 sys_and_irq_stack[0x3F80]; - u8 svc_stack[0x40]; - u8 reserved[0x38]; - u32 intr_check; - void * intr_vector; -} -OS_DTCM; - -#define DTCM (*(OS_DTCM *)HW_DTCM) - static struct { void * contents; u32 name_hash; -- cgit v1.2.3