Do most of code_0x800FEC90

This commit is contained in:
rozlette 2019-03-06 21:48:32 -06:00
parent 79c2ce743d
commit 2b7d9ed708
8 changed files with 1377 additions and 33 deletions

View File

@ -25,14 +25,16 @@ build/src/libultra/%: CC := $(QEMU_IRIX) -L $(IRIX_53_ROOT) $(IRIX_53_ROOT)/usr/
build/src/libultra/%: CFLAGS := $(CFLAGS) -Wab,-r4300_mul
build/src/boot_O1/%: OPTIMIZATION := -O1
build/src/boot_O2_g3/%: OPTIMIZATION := -O2 -g3
#test.txt: OPTIMIZATION := -O2
#test.txt: CC := $(QEMU_IRIX) -L $(IRIX_53_ROOT) $(IRIX_53_ROOT)/usr/bin/cc
build/src/code/%: CFLAGS := $(CFLAGS) -Wab,-r4300_mul
test.txt: OPTIMIZATION := -O2 -g3
test.txt: CC := $(QEMU_IRIX) -L $(IRIX_71_ROOT) $(IRIX_71_ROOT)/usr/bin/cc
test.txt: CFLAGS := $(CFLAGS) -Wab,-r4300_mul
CC := $(QEMU_IRIX) -L $(IRIX_71_ROOT) $(IRIX_71_ROOT)/usr/bin/cc
test.txt: CC := python3 preprocess.py $(CC) -- $(AS) $(ASFLAGS) --
build/src/boot_O2_g3/%: CC := python3 preprocess.py $(CC) -- $(AS) $(ASFLAGS) --
build/src/code/%: CC := python3 preprocess.py $(CC) -- $(AS) $(ASFLAGS) --
BASEROM_FILES := $(wildcard baserom/*)
BASEROM_O_FILES := $(BASEROM_FILES:baserom/%=build/baserom/%.o)

View File

@ -221,7 +221,7 @@ SECTIONS
build/asm/code_0x800F42A0.o(.text)
build/asm/code_0x800F4F40.o(.text)
build/asm/code_0x800F5090.o(.text)
build/asm/code_0x800FEC90.o(.text)
build/src/code/code_0x800FEC90.o(.text)
build/asm/code_0x801005C0.o(.text)
build/asm/code_0x80102C60.o(.text)
build/asm/code_0x80102E40.o(.text)

View File

@ -85,7 +85,7 @@ known_funcs = {
0x80089420:("__osCleanupThread","UNK_RET","UNK_ARGS"),
0x80089430:("__osDequeueThread","UNK_RET","OSThread**, OSThread*"),
0x80089470:("osDestroyThread","void","OSThread* t"),
0x80089630:("_blkclr","UNK_RET","u8*, u32"), # multiple names? bzero/_bzero/blkclr/_blkclr
0x80089630:("_blkclr","UNK_RET","void*, size_t"), # multiple names? bzero/_bzero/blkclr/_blkclr
0x80089AA0:("__osSiCreateAccessQueue","void","void"),
0x80089AF0:("__osSiGetAccess","void","void"),
0x80089B34:("__osSiRelAccess","void","void"),
@ -122,7 +122,7 @@ known_funcs = {
0x8008D2C0:("osGetCount","u32","void"),
0x8008D350:("func_8008D350","UNK_TYPE","void"),
0x8008D640:("osSetEventMesg","void","OSEvent e, OSMesgQueue* mq, OSMesg m"),
0x8008D700:("sqrtf","UNK_RET","UNK_ARGS"),
0x8008D700:("sqrtf","f32","f32"),
0x8008D730:("osContStartQuery","s32","OSMesgQueue* mq"),
0x8008D7AC:("osContGetQuery","void","OSContStatus* data"),
0x8008E050:("_Printf","int","void* (*pfn)(void*), void* arg, const unsigned char* fmt, va_list ap"),
@ -283,9 +283,10 @@ known_funcs = {
0x800FED44:("func_800FED44","f32","s16"),
0x800FED84:("func_800FED84","f32","s16"),
0x800FFADC:("func_800FFADC","void","z_Actor*, z_ActorCompInitEntry*"), # Compact Instance Initializer
0x800FFCD8:("func_800FFCD8","UNK_RET","f32*, f32, f32, f32, f32"),
0x800FFEBC:("func_800FFEBC","UNK_TYPE","s16*, s16, UNK_TYPE, UNK_TYPE, UNK_TYPE"),
0x80100504:("func_80100504","UNK_TYPE","UNK_TYPE"),
0x800FF8D4:("func_800FF8D4","f32","z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2"),
0x800FFCD8:("func_800FFCD8","f32","f32*, f32, f32, f32, f32"),
0x800FFEBC:("func_800FFEBC","s16","s16*, s16, s16, s16, s16"),
0x80100504:("func_80100504","UNK_TYPE","u32"),
0x80112E80:("func_80112E80","UNK_RET","z_GlobalContext*, UNK_TYPE"),
0x80115908:("func_80115908","UNK_RET","z_GlobalContext*, UNK_TYPE"),
0x8012C28C:("func_8012C28C","UNK_RET","z_GraphicsContext*"),
@ -300,11 +301,15 @@ known_funcs = {
0x801660B8:("func_801660B8","u32*","z_GlobalContext*, u32*, UNK_TYPE"),
0x80174BF0:("func_80174BF0","UNK_RET","UNK_TYPE"),
0x801795C0:("func_801795C0","f32","f32"),
0x8017A6D4:("func_8017A6D4","f32","z_Vector3D*"),
0x80180100:("func_80180100","UNK_TYPE","f32, f32"),
0x8018039C:("func_8018039C","UNK_RET","f32, f32, f32, UNK_TYPE"),
0x80181A40:("func_80181A40","UNK_TYPE","z_GraphicsContext*"),
0x80183070:("func_80183070","void","void"),
0x8018349C:("func_8018349C","UNK_RET","UNK_TYPE, UNK_TYPE"),
0x8019F0C8:("func_8019F0C8","UNK_RET","UNK_TYPE"),
0x8019F0C8:("func_8019F0C8","UNK_RET","u16"),
0x8019F128:("func_8019F128","UNK_RET","u16"),
0x8019F1C0:("func_8019F1C0","UNK_RET","UNK_TYPE, u16"),
0x8019FAD8:("func_8019FAD8","UNK_RET","UNK_PTR, UNK_TYPE, f32"),
# ovl_En_Test

View File

@ -252,7 +252,7 @@ UNK_RET __osCleanupThread(UNK_ARGS); // func_80089420
UNK_RET __osDequeueThread(OSThread**, OSThread*); // func_80089430
void osDestroyThread(OSThread* t); // func_80089470
// UNK_RET func_80089580(UNK_ARGS);
UNK_RET _blkclr(u8*, u32); // func_80089630
UNK_RET _blkclr(void*, size_t); // func_80089630
// UNK_RET func_800896D0(UNK_ARGS);
// UNK_RET func_80089838(UNK_ARGS);
// UNK_RET func_80089944(UNK_ARGS);
@ -319,7 +319,7 @@ u32 osGetCount(void); // func_8008D2C0
UNK_TYPE func_8008D350(void); // func_8008D350
// UNK_RET func_8008D470(UNK_ARGS);
void osSetEventMesg(OSEvent e, OSMesgQueue* mq, OSMesg m); // func_8008D640
UNK_RET sqrtf(UNK_ARGS); // func_8008D700
f32 sqrtf(f32); // func_8008D700
// UNK_RET func_8008D710(UNK_ARGS);
s32 osContStartQuery(OSMesgQueue* mq); // func_8008D730
void osContGetQuery(OSContStatus* data); // func_8008D7AC
@ -1016,13 +1016,13 @@ void func_800BE03C(z_GlobalContext*, UNK_TYPE); // func_800BE03C
UNK_TYPE func_800C6024(UNK_TYPE); // func_800C6024
// UNK_RET func_800C6044(UNK_ARGS);
// UNK_RET func_800C6098(UNK_ARGS);
UNK_TYPE func_800C6188(z_GlobalContext*, UNK_PTR, z_Actor*, UNK_TYPE);
UNK_TYPE func_800C6188(z_GlobalContext*, UNK_PTR, z_Actor*, UNK_TYPE); // func_800C6188
UNK_TYPE func_800C6248(UNK_TYPE, UNK_TYPE); // func_800C6248
// UNK_RET func_800C62BC(UNK_ARGS);
// UNK_RET func_800C6314(UNK_ARGS);
// UNK_RET func_800C636C(UNK_ARGS);
// UNK_RET func_800C641C(UNK_ARGS);
UNK_RET func_800C64CC(z_GlobalContext*, UNK_PTR, UNK_TYPE);
UNK_RET func_800C64CC(z_GlobalContext*, UNK_PTR, UNK_TYPE); // func_800C64CC
// UNK_RET func_800C6554(UNK_ARGS);
// UNK_RET func_800C656C(UNK_ARGS);
// UNK_RET func_800C6838(UNK_ARGS);
@ -1042,7 +1042,7 @@ UNK_RET func_800C64CC(z_GlobalContext*, UNK_PTR, UNK_TYPE);
// UNK_RET func_800C921C(UNK_ARGS);
// UNK_RET func_800C9380(UNK_ARGS);
// UNK_RET func_800C94E0(UNK_ARGS);
UNK_RET func_800C9564(UNK_TYPE, UNK_PTR);
UNK_RET func_800C9564(UNK_TYPE, UNK_PTR); // func_800C9564
// UNK_RET func_800C9640(UNK_ARGS);
// UNK_RET func_800C9694(UNK_ARGS);
// UNK_RET func_800C9704(UNK_ARGS);
@ -1080,7 +1080,7 @@ UNK_RET func_800CAAD0(UNK_TYPE, UNK_TYPE, UNK_TYPE); // func_800CAAD0
UNK_RET func_800CAC0C(UNK_TYPE, UNK_TYPE, UNK_TYPE); // func_800CAC0C
UNK_RET func_800CACA0(UNK_TYPE, UNK_TYPE, UNK_TYPE); // func_800CACA0
UNK_TYPE func_800CAD2C(UNK_TYPE, UNK_TYPE, UNK_TYPE); // func_800CAD2C
UNK_RET func_800CAE10(z_Actor*, UNK_TYPE);
UNK_RET func_800CAE10(z_Actor*, UNK_TYPE); // func_800CAE10
// UNK_RET func_800CAE34(UNK_ARGS);
// UNK_RET func_800CAE7C(UNK_ARGS);
UNK_RET func_800CAE88(UNK_TYPE); // func_800CAE88
@ -1921,7 +1921,7 @@ f32 func_800FED84(s16); // func_800FED84
// UNK_RET func_800FF6C4(UNK_ARGS);
// UNK_RET func_800FF6F8(UNK_ARGS);
// UNK_RET func_800FF884(UNK_ARGS);
// UNK_RET func_800FF8D4(UNK_ARGS);
f32 func_800FF8D4(z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2); // func_800FF8D4
// UNK_RET func_800FF92C(UNK_ARGS);
// UNK_RET func_800FF960(UNK_ARGS);
// UNK_RET func_800FF9A4(UNK_ARGS);
@ -1940,10 +1940,10 @@ void func_800FFADC(z_Actor*, z_ActorCompInitEntry*); // func_800FFADC
// UNK_RET func_800FFC50(UNK_ARGS);
// UNK_RET func_800FFC7C(UNK_ARGS);
// UNK_RET func_800FFCB4(UNK_ARGS);
UNK_RET func_800FFCD8(f32*, f32, f32, f32, f32); // func_800FFCD8
f32 func_800FFCD8(f32*, f32, f32, f32, f32); // func_800FFCD8
// UNK_RET func_800FFDF8(UNK_ARGS);
// UNK_RET func_800FFE68(UNK_ARGS);
UNK_TYPE func_800FFEBC(s16*, s16, UNK_TYPE, UNK_TYPE, UNK_TYPE); // func_800FFEBC
s16 func_800FFEBC(s16*, s16, s16, s16, s16); // func_800FFEBC
// UNK_RET func_800FFFD8(UNK_ARGS);
// UNK_RET func_80100009(UNK_ARGS);
// UNK_RET func_80100030(UNK_ARGS);
@ -1954,7 +1954,7 @@ UNK_TYPE func_800FFEBC(s16*, s16, UNK_TYPE, UNK_TYPE, UNK_TYPE); // func_800FFEB
// UNK_RET func_8010011C(UNK_ARGS);
// UNK_RET func_801001B8(UNK_ARGS);
// UNK_RET func_80100448(UNK_ARGS);
UNK_TYPE func_80100504(UNK_TYPE); // func_80100504
UNK_TYPE func_80100504(u32); // func_80100504
// UNK_RET func_80100584(UNK_ARGS);
// UNK_RET func_801005A0(UNK_ARGS);
// UNK_RET func_801005C0(UNK_ARGS);
@ -3466,7 +3466,7 @@ f32 func_801795C0(f32); // func_801795C0
// UNK_RET func_8017A634(UNK_ARGS);
// UNK_RET func_8017A678(UNK_ARGS);
// UNK_RET func_8017A6A8(UNK_ARGS);
// UNK_RET func_8017A6D4(UNK_ARGS);
f32 func_8017A6D4(z_Vector3D*); // func_8017A6D4
// UNK_RET func_8017A6F8(UNK_ARGS);
// UNK_RET func_8017A720(UNK_ARGS);
// UNK_RET func_8017A740(UNK_ARGS);
@ -3530,7 +3530,7 @@ f32 func_801795C0(f32); // func_801795C0
// UNK_RET func_8017FEB0(UNK_ARGS);
// UNK_RET func_8017FEE4(UNK_ARGS);
// UNK_RET func_801800CC(UNK_ARGS);
// UNK_RET func_80180100(UNK_ARGS);
UNK_TYPE func_80180100(f32, f32); // func_80180100
// UNK_RET func_8018012C(UNK_ARGS);
// UNK_RET func_80180160(UNK_ARGS);
// UNK_RET func_8018019C(UNK_ARGS);
@ -4203,10 +4203,10 @@ UNK_RET func_8018349C(UNK_TYPE, UNK_TYPE); // func_8018349C
// UNK_RET func_8019EE88(UNK_ARGS);
// UNK_RET func_8019F024(UNK_ARGS);
// UNK_RET func_8019F05C(UNK_ARGS);
UNK_RET func_8019F0C8(UNK_TYPE); // func_8019F0C8
// UNK_RET func_8019F128(UNK_ARGS);
UNK_RET func_8019F0C8(u16); // func_8019F0C8
UNK_RET func_8019F128(u16); // func_8019F128
// UNK_RET func_8019F170(UNK_ARGS);
// UNK_RET func_8019F1C0(UNK_ARGS);
UNK_RET func_8019F1C0(UNK_TYPE, u16); // func_8019F1C0
// UNK_RET func_8019F208(UNK_ARGS);
// UNK_RET func_8019F230(UNK_ARGS);
// UNK_RET func_8019F258(UNK_ARGS);
@ -4219,7 +4219,7 @@ UNK_RET func_8019F0C8(UNK_TYPE); // func_8019F0C8
// UNK_RET func_8019F88C(UNK_ARGS);
// UNK_RET func_8019F900(UNK_ARGS);
// UNK_RET func_8019FA18(UNK_ARGS);
UNK_RET func_8019FAD8(UNK_PTR, UNK_TYPE, f32);
UNK_RET func_8019FAD8(UNK_PTR, UNK_TYPE, f32); // func_8019FAD8
// UNK_RET func_8019FB0C(UNK_ARGS);
// UNK_RET func_8019FC20(UNK_ARGS);
// UNK_RET func_8019FCB8(UNK_ARGS);

View File

@ -111,6 +111,14 @@ typedef struct {
/* 0x8 */ f32 z;
} z_Vector3D;
// Rotation?
// 3D Vector of s16?
typedef struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
/* 0x4 */ s16 z;
} z_Vector3Ds16;
struct z_Actor;
typedef void(*z_ActorFunc)(struct z_Actor*, void*);
@ -183,7 +191,7 @@ typedef struct {
u32 cont : 1;
u32 type : 4;
u32 offset : 11;
u32 value : 16;
s32 value : 16;
} z_ActorCompInitEntry;
typedef struct {

View File

@ -698,7 +698,7 @@ extern UNK_TYPE D_00C7A4E0; // D_00C7A4E0
//extern UNK_TYPE D_060005C0;
//extern UNK_TYPE D_060005C4;
//extern UNK_TYPE D_060005C8;
extern UNK_TYPE D_060005D0;
extern UNK_TYPE D_060005D0; // D_060005D0
//extern UNK_TYPE D_060005D4;
//extern UNK_TYPE D_060005F8;
//extern UNK_TYPE D_060005FC;
@ -1058,7 +1058,7 @@ extern UNK_TYPE D_06001228; // D_06001228
//extern UNK_TYPE D_06002CD0;
//extern UNK_TYPE D_06002CE0;
//extern UNK_TYPE D_06002D28;
extern UNK_TYPE D_06002D30;
extern UNK_TYPE D_06002D30; // D_06002D30
//extern UNK_TYPE D_06002D84;
//extern UNK_TYPE D_06002DD4;
//extern UNK_TYPE D_06002DE8;
@ -3140,7 +3140,7 @@ extern u8 D_801C207E; // D_801C207E
//extern UNK_TYPE D_801D14F0;
//extern UNK_TYPE D_801D1500;
//extern UNK_TYPE D_801D1504;
//extern UNK_TYPE D_801D1508;
extern f32 D_801D1508; // D_801D1508
//extern UNK_TYPE D_801D150C;
//extern UNK_TYPE D_801D1510;
//extern UNK_TYPE D_801D1514;
@ -3864,8 +3864,8 @@ extern UNK_TYPE D_801DCBFC; // D_801DCBFC
//extern UNK_TYPE D_801DD9FC;
//extern UNK_TYPE D_801DDA00;
//extern UNK_TYPE D_801DDA7C;
//extern UNK_TYPE D_801DDA80;
//extern UNK_TYPE D_801DDA84;
extern f32 D_801DDA80; // D_801DDA80
extern f32 D_801DDA84; // D_801DDA84
//extern UNK_TYPE D_801DDA90;
//extern UNK_TYPE D_801DDA94;
//extern UNK_TYPE D_801DDA98;
@ -4887,7 +4887,7 @@ extern u8 D_801EF677; // D_801EF677
//extern UNK_TYPE D_801F8154;
//extern UNK_TYPE D_801F8160;
//extern UNK_TYPE D_801F8178;
//extern UNK_TYPE D_801F8180;
extern UNK_TYPE D_801F8180[]; // D_801F8180
//extern UNK_TYPE D_801F8188;
//extern UNK_TYPE D_801F818C;
//extern UNK_TYPE D_801F8190;
@ -11194,7 +11194,7 @@ extern f32 D_808637D0; // D_808637D0
//extern UNK_TYPE D_80ACA9F0;
//extern UNK_TYPE D_80ACB140;
//extern UNK_TYPE D_80ACB3B0;
extern f32 D_80ACB650;
extern f32 D_80ACB650; // D_80ACB650
//extern UNK_TYPE D_80ACC2C0;
//extern UNK_TYPE D_80ACC2EC;
//extern UNK_TYPE D_80ACC308;
@ -14311,5 +14311,6 @@ extern UNK_PTR D_800980D0_;
extern UNK_TYPE D_80099AD0_;
extern UNK_TYPE D_8009A670_;
extern UNK_TYPE D_8009B140_;
extern (*D_801BE960[12])(u8*, z_ActorCompInitEntry*);
#endif

1323
src/code/code_0x800FEC90.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -157,6 +157,7 @@ known_vars = {
0x801C2078:("D_801C2078","u8",True),
0x801C2079:("D_801C2079","u8",False),
0x801C207E:("D_801C207E","u8",False),
0x801D1508:("D_801D1508","f32",False),
0x801DBE68:("D_801DBE68","f32",False),
0x801DBE6C:("D_801DBE6C","f32",False),
0x801DBE70:("D_801DBE70","f32",False),
@ -185,11 +186,14 @@ known_vars = {
0x801DCBC4:("","UNK_TYPE",False),
0x801DCBE4:("","UNK_TYPE",False),
0x801DCBFC:("","UNK_TYPE",False),
0x801DDA80:("","f32",False),
0x801DDA84:("","f32",False),
0x801E3FA0:("","UNK_TYPE",False),
0x801ED930:("","UNK_TYPE",False),
0x801ED940:("","UNK_TYPE",False),
0x801EF670:("D_801EF670","u8",False), # save info/link struct?
0x801EF677:("D_801EF677","u8",False), # part of save info/link struct?
0x801F8180:("D_801F8180","UNK_TYPE",True),
0x80208EA0:("","UNK_TYPE",False),
# En_Test
@ -209,4 +213,5 @@ extra_vars = (
("D_80099AD0_","UNK_TYPE"), # needed to match?
("D_8009A670_","UNK_TYPE"), # needed to match?
("D_8009B140_","UNK_TYPE"), # needed to match?
("(*D_801BE960[12])(u8*, z_ActorCompInitEntry*)",""), # TODO better function pointer representation
)