Decompiled a couple functions
This commit is contained in:
parent
1d45805511
commit
e579899bd0
|
|
@ -41,6 +41,8 @@ typedef struct {
|
||||||
/* 0xc */ s32 field_0xc;
|
/* 0xc */ s32 field_0xc;
|
||||||
} Stack__dma_load_loop; // size:0x10
|
} Stack__dma_load_loop; // size:0x10
|
||||||
|
|
||||||
|
extern void romCopy(const void* src, const void* dst, const s32 len);
|
||||||
|
|
||||||
extern void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* arg1, s16 arg2);
|
extern void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* arg1, s16 arg2);
|
||||||
extern void Stack__dma_load_loop_delete(Stack__dma_load_loop* arg0);
|
extern void Stack__dma_load_loop_delete(Stack__dma_load_loop* arg0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ segments:
|
||||||
- [0x1B2E0, asm]
|
- [0x1B2E0, asm]
|
||||||
- [0x1B320, asm]
|
- [0x1B320, asm]
|
||||||
- [0x1B360, asm]
|
- [0x1B360, asm]
|
||||||
- [0x1B3A0, asm]
|
- [0x1B3A0, c]
|
||||||
- [0x1B3E0, c]
|
- [0x1B3E0, c]
|
||||||
- [0x1B510, c]
|
- [0x1B510, c]
|
||||||
- [0x1B530, asm]
|
- [0x1B530, asm]
|
||||||
|
|
@ -508,6 +508,7 @@ segments:
|
||||||
- [0x4F0FB0, bin] # Song
|
- [0x4F0FB0, bin] # Song
|
||||||
- [0x4F4070, bin]
|
- [0x4F4070, bin]
|
||||||
|
|
||||||
|
# __calls_romCopy_8009DF48 starts reading here
|
||||||
- [0x594280, bin]
|
- [0x594280, bin]
|
||||||
|
|
||||||
- [0x636784, bin, "last_battle_test.n64"]
|
- [0x636784, bin, "last_battle_test.n64"]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
extern void (*SWAP_BUFFER_FUNC_800A9E8C)(void*);
|
||||||
|
|
||||||
|
/* 1B3A0 8008AFA0 */
|
||||||
|
void set_swap_buffer_func_800A9E8C(void (*arg0)(void*)) {
|
||||||
|
s32 mask;
|
||||||
|
|
||||||
|
mask = osSetIntMask(OS_IM_NONE);
|
||||||
|
SWAP_BUFFER_FUNC_800A9E8C = arg0;
|
||||||
|
osSetIntMask(mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
35
src/2DE10.c
35
src/2DE10.c
|
|
@ -2,7 +2,40 @@
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "2DE10", func_8009DA10);
|
INCLUDE_ASM(const s32, "2DE10", func_8009DA10);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DA50);
|
// INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DA50);
|
||||||
|
/* 2DE50 8009DA50 */
|
||||||
|
void __calls_romCopy_8009DA50(u8* src, u8* dst, u32 len)
|
||||||
|
{
|
||||||
|
u8 sp1F[32];
|
||||||
|
u8* _dst;
|
||||||
|
u8* _src;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
// align to 16
|
||||||
|
_src = (u8*) (((u32) &sp1F[15] >> 4) << 4);
|
||||||
|
|
||||||
|
if (len < 0x10)
|
||||||
|
{
|
||||||
|
_dst = dst;
|
||||||
|
|
||||||
|
// copy into stack, length aligned to 2 bytes
|
||||||
|
romCopy(src, _src, (len + 1) & ~1);
|
||||||
|
|
||||||
|
len--;
|
||||||
|
// then copy from stack into destination
|
||||||
|
while(len != -1)
|
||||||
|
{
|
||||||
|
*_dst++ = *_src++;
|
||||||
|
len--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// too big to fit in our stack, so just do a regular copy
|
||||||
|
romCopy(src, dst, (len + 1) & ~1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void func_8009DAEC(void) { }
|
void func_8009DAEC(void) { }
|
||||||
|
|
||||||
|
|
|
||||||
11
src/A370.c
11
src/A370.c
|
|
@ -22,7 +22,7 @@ INCLUDE_ASM(const s32, "A370", func_8007AB7C);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "A370", func_8007ABAC);
|
INCLUDE_ASM(const s32, "A370", func_8007ABAC);
|
||||||
|
|
||||||
extern void __some_logging(char*, u8);
|
extern void __some_logging(unsigned char*, ...);
|
||||||
extern char D_800AE038;
|
extern char D_800AE038;
|
||||||
extern OSMesgQueue MQ_800AF320;
|
extern OSMesgQueue MQ_800AF320;
|
||||||
|
|
||||||
|
|
@ -72,7 +72,14 @@ INCLUDE_ASM(const s32, "A370", func_8007BA98);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "A370", func_8007BB48);
|
INCLUDE_ASM(const s32, "A370", func_8007BB48);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "A370", func_8007BB90);
|
// INCLUDE_ASM(const s32, "A370", func_8007BB90);
|
||||||
|
extern unsigned char STR_Error;
|
||||||
|
extern unsigned char STR_LHa___s_s__s;
|
||||||
|
|
||||||
|
/* BF90 8007BB90 */
|
||||||
|
void __log_lha_error(unsigned char* arg0, unsigned char* arg1) {
|
||||||
|
__some_logging(&STR_LHa___s_s__s, &STR_Error, arg0, arg1);
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "A370", func_8007BBC0);
|
INCLUDE_ASM(const s32, "A370", func_8007BBC0);
|
||||||
|
|
||||||
|
|
|
||||||
59
src/main.c
59
src/main.c
|
|
@ -1,6 +1,6 @@
|
||||||
#include "PR/os.h"
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "main", func_80070C60);
|
INCLUDE_ASM(const s32, "main", func_80070C60);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "main", AddHeap);
|
INCLUDE_ASM(const s32, "main", AddHeap);
|
||||||
|
|
@ -103,7 +103,62 @@ s32 func_80072944(void) {
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "main", __calls_copy_controller_data);
|
INCLUDE_ASM(const s32, "main", __calls_copy_controller_data);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "main", __calls_osViSwapBuffer_8007307C);
|
extern u8 __reset_compared_osTvType(); /* extern */
|
||||||
|
extern void* D_800C4BB8;
|
||||||
|
extern OSViMode osViModeMpalHpf1;
|
||||||
|
extern OSViMode osViModeMpalLan1;
|
||||||
|
extern OSViMode osViModeNtscHpf1;
|
||||||
|
extern OSViMode osViModeNtscLan1;
|
||||||
|
|
||||||
|
#define OS_TV_TYPE_PAL 0
|
||||||
|
#define OS_TV_TYPE_NTSC 1
|
||||||
|
#define OS_TV_TYPE_MPAL 2
|
||||||
|
|
||||||
|
/* 347C 8007307C */
|
||||||
|
void __calls_osViSwapBuffer_8007307C(void** buffers)
|
||||||
|
{
|
||||||
|
u8 prev;
|
||||||
|
|
||||||
|
D_800C4BB8 = buffers[3];
|
||||||
|
prev = __reset_compared_osTvType();
|
||||||
|
|
||||||
|
if (prev == OS_TV_TYPE_MPAL)
|
||||||
|
{
|
||||||
|
switch(osTvType)
|
||||||
|
{
|
||||||
|
case OS_TV_TYPE_NTSC:
|
||||||
|
osViSetMode(&osViModeNtscHpf1);
|
||||||
|
break;
|
||||||
|
case OS_TV_TYPE_MPAL:
|
||||||
|
osViSetMode(&osViModeMpalHpf1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (prev == OS_TV_TYPE_NTSC)
|
||||||
|
{
|
||||||
|
if (osTvType == prev) goto ntsc;
|
||||||
|
|
||||||
|
if(osTvType == OS_TV_TYPE_MPAL) goto pal;
|
||||||
|
|
||||||
|
goto next;
|
||||||
|
|
||||||
|
ntsc:
|
||||||
|
osViSetMode(&osViModeNtscLan1);
|
||||||
|
goto next;
|
||||||
|
|
||||||
|
pal:
|
||||||
|
osViSetMode(&osViModeMpalLan1);
|
||||||
|
goto next;
|
||||||
|
|
||||||
|
}
|
||||||
|
next:
|
||||||
|
|
||||||
|
if (prev != OS_TV_TYPE_PAL)
|
||||||
|
osViSetSpecialFeatures(OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
|
||||||
|
|
||||||
|
osViSwapBuffer(buffers[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "main", func_80073164);
|
INCLUDE_ASM(const s32, "main", func_80073164);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
void __load_song(void*);
|
void __load_song(void*);
|
||||||
|
|
||||||
extern void romCopy(const void* src, const void* dst, const s32 len);
|
|
||||||
extern void Mus__unknown_80081DB4(const void* arg0, const void* arg1);
|
extern void Mus__unknown_80081DB4(const void* arg0, const void* arg1);
|
||||||
extern void func_80081F7C(const void* arg);
|
extern void func_80081F7C(const void* arg);
|
||||||
extern void MusFxBankSetPtrBank(const void*, const void*);
|
extern void MusFxBankSetPtrBank(const void*, const void*);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ maybe_boot_01 = 0x800851C0;
|
||||||
|
|
||||||
__add_0x594284 = 0x8009DD28;
|
__add_0x594284 = 0x8009DD28;
|
||||||
|
|
||||||
|
__log_lha_error = 0x8007BB90;
|
||||||
|
|
||||||
D_800A81C0 = 0x800A81C0; // size:0x30
|
D_800A81C0 = 0x800A81C0; // size:0x30
|
||||||
D_800C4BBC = 0x800C4BBC; // size:0x8
|
D_800C4BBC = 0x800C4BBC; // size:0x8
|
||||||
D_800AEFE0 = 0x800AEFE0; // size:0x8
|
D_800AEFE0 = 0x800AEFE0; // size:0x8
|
||||||
|
|
@ -13,6 +15,16 @@ D_800E7D90 = 0x800E7D90; // size:0x58
|
||||||
D_800E7DE8 = 0x800E7DE8; // size:0x58
|
D_800E7DE8 = 0x800E7DE8; // size:0x58
|
||||||
D_800AEFE0 = 0x800AEFE0; // size:0x8
|
D_800AEFE0 = 0x800AEFE0; // size:0x8
|
||||||
|
|
||||||
|
VALID_LHA_MAGIC = 0x800A8750;
|
||||||
|
|
||||||
|
STR_LHa___s_s__s = 0x800AE30C; // type:asciz
|
||||||
|
STR_Error = 0x800AE31C; // type:asciz
|
||||||
|
STR_Fatal_error = 0x800AE324; // type:asciz
|
||||||
|
STR_Invalid_header_LHarc_file_ = 0x800AE0E8; // type:asciz
|
||||||
|
STR_rb = 0x800AE0A8; // type:asciz
|
||||||
|
STR_wb = 0x800AE27C; // type:asciz
|
||||||
|
STR_Unknown_method_skiped = 0x800AE284; // type:asciz
|
||||||
|
|
||||||
__calls_osViSwapBuffer_8007307C = 0x8007307C;
|
__calls_osViSwapBuffer_8007307C = 0x8007307C;
|
||||||
__osViSwapBuffer_3 = 0x8008B110;
|
__osViSwapBuffer_3 = 0x8008B110;
|
||||||
|
|
||||||
|
|
@ -292,9 +304,15 @@ __thread_80089200 = 0x80089200;
|
||||||
__thread_800893C0 = 0x800893C0;
|
__thread_800893C0 = 0x800893C0;
|
||||||
__thread_80089540 = 0x80089540;
|
__thread_80089540 = 0x80089540;
|
||||||
|
|
||||||
|
STR_INVALID_HEADER_LHA_FILE = 0x800AE108;
|
||||||
|
|
||||||
SWAP_BUFFER_FUNC = 0x800A9E84;
|
SWAP_BUFFER_FUNC = 0x800A9E84;
|
||||||
set_swap_buffer_func = 0x800899D0;
|
set_swap_buffer_func = 0x800899D0;
|
||||||
|
SWAP_BUFFER_FUNC_800A9E88 = 0x800A9E88;
|
||||||
|
|
||||||
|
SWAP_BUFFER_FUNC_800A9E8C = 0x800A9E8C;
|
||||||
|
set_swap_buffer_func_800A9E8C = 0x8008AFA0;
|
||||||
|
|
||||||
__reset_compared_osTvType = 0x8016CD3C;
|
__reset_compared_osTvType = 0x8016CD3C;
|
||||||
__get_compared_osTvType = 0x8016CD30;
|
__get_compared_osTvType = 0x8016CD30;
|
||||||
__inc_compared_osTvType = 0x8016CD5C;
|
__inc_compared_osTvType = 0x8016CD5C;
|
||||||
|
|
@ -315,7 +333,7 @@ __calls_read_controller_0 = 0x8008A47C;
|
||||||
__calls_read_controller_1 = 0x8008A508;
|
__calls_read_controller_1 = 0x8008A508;
|
||||||
__calls_read_controller_2 = 0x8008A528;
|
__calls_read_controller_2 = 0x8008A528;
|
||||||
|
|
||||||
__CRC_ERROR = 0x800AE2A0;
|
STR_CRC_error = 0x800AE2A0;
|
||||||
__FILE_WRITE_ERROR = 0x800AE348;
|
__FILE_WRITE_ERROR = 0x800AE348;
|
||||||
__FILE_READ_ERROR = 0x800AE378;
|
__FILE_READ_ERROR = 0x800AE378;
|
||||||
__logs_read_error = 0x8007C590;
|
__logs_read_error = 0x8007C590;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue