diff --git a/asm/include/main_020257FC.inc b/asm/include/main_020257FC.inc deleted file mode 100644 index 3879bf78..00000000 --- a/asm/include/main_020257FC.inc +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -.public _020AFCEC -.public _020AFCF0 -.public _022A59B8 -.public _022A59C0 -.public FileClose -.public FileRom_HandleOpen -.public FileRom_InitDataTransfer -.public FileRom_StopDataTransfer -.public FileRom_Veneer_FileInit -.public GetLanguage -.public MemZero diff --git a/asm/main_020257FC.s b/asm/main_020257FC.s deleted file mode 100644 index 3a46b03e..00000000 --- a/asm/main_020257FC.s +++ /dev/null @@ -1,50 +0,0 @@ - .include "asm/macros.inc" - .include "main_020257FC.inc" - - .text - - arm_func_start sub_020257FC -sub_020257FC: ; 0x020257FC - stmdb sp!, {r3, lr} - ldr r0, _02025814 ; =_022A59B8 - mov r1, #8 - bl MemZero - bl LoadStringFile - ldmia sp!, {r3, pc} - .align 2, 0 -_02025814: .word _022A59B8 - arm_func_end sub_020257FC - - arm_func_start LoadStringFile -LoadStringFile: ; 0x02025818 - stmdb sp!, {r4, lr} - bl GetLanguage - ldr r1, _0202587C ; =_020AFCEC - mov r4, r0 - ldrsb r0, [r1] - cmp r0, r4 - ldmeqia sp!, {r4, pc} - bl FileRom_InitDataTransfer - ldr r1, _0202587C ; =_020AFCEC - mvn r0, #0 - ldrsb r1, [r1] - cmp r1, r0 - beq _02025854 - ldr r0, _02025880 ; =_022A59C0 - bl FileClose -_02025854: - ldr r1, _0202587C ; =_020AFCEC - ldr r0, _02025880 ; =_022A59C0 - strb r4, [r1] - bl FileRom_Veneer_FileInit - ldr r1, _02025884 ; =_020AFCF0 - ldr r0, _02025880 ; =_022A59C0 - ldr r1, [r1, r4, lsl #2] - bl FileRom_HandleOpen - bl FileRom_StopDataTransfer - ldmia sp!, {r4, pc} - .align 2, 0 -_0202587C: .word _020AFCEC -_02025880: .word _022A59C0 -_02025884: .word _020AFCF0 - arm_func_end LoadStringFile diff --git a/include/main_0202593C.h b/include/main_0202593C.h index 27265577..e5797814 100644 --- a/include/main_0202593C.h +++ b/include/main_0202593C.h @@ -1,6 +1,9 @@ #ifndef PMDSKY_MAIN_0202593C_H #define PMDSKY_MAIN_0202593C_H +void sub_020257FC(void); +void LoadStringFile(void); + // return: Pointer to byte buffer u8* AllocateTemp1024ByteBufferFromPool(void); // Likely a linker-generated veneer for GetStringFromFile. diff --git a/main.lsf b/main.lsf index 93a98975..eb255dd7 100644 --- a/main.lsf +++ b/main.lsf @@ -59,7 +59,6 @@ Static main Object src/main_020251AC.o Object asm/main_020251F0.o Object src/main_02025788.o - Object asm/main_020257FC.o Object src/main_0202593C.o Object asm/main_0202598C.o Object src/main_020265C4.o diff --git a/src/main_0202593C.c b/src/main_0202593C.c index 97434cab..a7299b3a 100644 --- a/src/main_0202593C.c +++ b/src/main_0202593C.c @@ -1,5 +1,6 @@ #include "main_0202593C.h" #include "main_02025788.h" +#include "main_0200330C.h" #include "file_rom.h" u8* strcpy(u8* dest, u8* src); @@ -8,6 +9,37 @@ u8* strncpy(u8* dest, u8* src, u32 n); extern u16 _022A59B8[]; extern u8 _022A5A08[]; +extern s8 GetLanguage(); +extern s8 _020AFCEC; +extern const char * _020AFCF0[10]; +extern struct file_stream _022A59C0; + +void FileClose(struct file_stream* file); + +void sub_020257FC(void) +{ + MemZero((u8 *)_022A59B8, 8); + LoadStringFile(); +} + +void LoadStringFile(void) +{ + s8 temp_r0; + + temp_r0 = GetLanguage(); + if (_020AFCEC == temp_r0) { + return; + } + FileRom_InitDataTransfer(); + if (_020AFCEC != -1) { + FileClose(&_022A59C0); + } + _020AFCEC = temp_r0; + FileRom_Veneer_FileInit(&_022A59C0); + FileRom_HandleOpen(&_022A59C0, _020AFCF0[temp_r0]); + FileRom_StopDataTransfer(); +} + u8* AllocateTemp1024ByteBufferFromPool(void) { u16 scratch_1 = _022A59B8[2];