Add tons of function names. Datatypes TODO

This commit is contained in:
rozlette 2019-09-20 01:43:40 -05:00
parent 70b60dfce5
commit 4c11f2f364
12 changed files with 33848 additions and 16611 deletions

16893
functions.py

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3437,9 +3437,9 @@ extern f32 D_801D1508; // D_801D1508
//extern UNK_TYPE D_801D150C; //extern UNK_TYPE D_801D150C;
//extern UNK_TYPE D_801D1510; //extern UNK_TYPE D_801D1510;
//extern UNK_TYPE D_801D1514; //extern UNK_TYPE D_801D1514;
extern u32 D_801D1520; extern u32 D_801D1520; // D_801D1520
extern u32 D_801D1524; extern u32 D_801D1524; // D_801D1524
extern u32 D_801D1528; //extern UNK_TYPE D_801D1528;
//extern UNK_TYPE D_801D1530; //extern UNK_TYPE D_801D1530;
//extern UNK_TYPE D_801D1534; //extern UNK_TYPE D_801D1534;
//extern UNK_TYPE D_801D1538; //extern UNK_TYPE D_801D1538;
@ -4440,10 +4440,10 @@ extern f32 D_801DDA84; // D_801DDA84
//extern UNK_TYPE D_801DFD40; //extern UNK_TYPE D_801DFD40;
//extern UNK_TYPE D_801DFD50; //extern UNK_TYPE D_801DFD50;
//extern UNK_TYPE D_801DFD5C; //extern UNK_TYPE D_801DFD5C;
extern UNK_TYPE D_801DFD70; //extern UNK_TYPE D_801DFD70;
extern UNK_TYPE D_801DFD78; //extern UNK_TYPE D_801DFD78;
extern UNK_TYPE D_801DFD80; //extern UNK_TYPE D_801DFD80;
extern UNK_TYPE D_801DFD88; //extern UNK_TYPE D_801DFD88;
//extern UNK_TYPE D_801DFD90; //extern UNK_TYPE D_801DFD90;
//extern UNK_TYPE D_801DFD9C; //extern UNK_TYPE D_801DFD9C;
//extern UNK_TYPE D_801DFDA8; //extern UNK_TYPE D_801DFDA8;
@ -5041,7 +5041,7 @@ extern u8 D_801EF677; // D_801EF677
//extern UNK_TYPE D_801F3F3A; //extern UNK_TYPE D_801F3F3A;
//extern UNK_TYPE D_801F3F3B; //extern UNK_TYPE D_801F3F3B;
//extern UNK_TYPE D_801F3F3C; //extern UNK_TYPE D_801F3F3C;
extern z_StaticContext* staticContext; extern z_StaticContext* staticContext; // D_801F3F60
//extern UNK_TYPE D_801F3F70; //extern UNK_TYPE D_801F3F70;
//extern UNK_TYPE D_801F3F80; //extern UNK_TYPE D_801F3F80;
//extern UNK_TYPE D_801F3F83; //extern UNK_TYPE D_801F3F83;
@ -5204,8 +5204,8 @@ extern z_StaticContext* staticContext;
//extern UNK_TYPE D_801F80F8; //extern UNK_TYPE D_801F80F8;
//extern UNK_TYPE D_801F8150; //extern UNK_TYPE D_801F8150;
//extern UNK_TYPE D_801F8154; //extern UNK_TYPE D_801F8154;
extern OSMesgQueue D_801F8160; extern OSMesgQueue D_801F8160; // D_801F8160
extern OSMesg D_801F8178[]; extern OSMesg D_801F8178[]; // D_801F8178
extern UNK_TYPE D_801F8180[]; // D_801F8180 extern UNK_TYPE D_801F8180[]; // D_801F8180
//extern UNK_TYPE D_801F8188; //extern UNK_TYPE D_801F8188;
//extern UNK_TYPE D_801F818C; //extern UNK_TYPE D_801F818C;
@ -5217,21 +5217,21 @@ extern UNK_TYPE D_801F8180[]; // D_801F8180
//extern UNK_TYPE D_801F81A8; //extern UNK_TYPE D_801F81A8;
//extern UNK_TYPE D_801F81B8; //extern UNK_TYPE D_801F81B8;
//extern UNK_TYPE D_801F81BC; //extern UNK_TYPE D_801F81BC;
extern UNK_TYPE D_801F81C0; //extern UNK_TYPE D_801F81C0;
//extern UNK_TYPE D_801F82D8; //extern UNK_TYPE D_801F82D8;
extern UNK_TYPE D_801F84F8; //extern UNK_TYPE D_801F84F8;
extern OSMesgQueue D_801F8500; //extern UNK_TYPE D_801F8500;
extern OSMesg D_801F8518[]; //extern UNK_TYPE D_801F8518;
extern OSThread D_801F8608; //extern UNK_TYPE D_801F8608;
extern UNK_TYPE D_801F87B8; //extern UNK_TYPE D_801F87B8;
extern UNK_TYPE D_801F9FB8; //extern UNK_TYPE D_801F9FB8;
extern UNK_TYPE D_801FA5B8; //extern UNK_TYPE D_801FA5B8;
extern UNK_TYPE D_801FADB8; //extern UNK_TYPE D_801FADB8;
extern s80085320 D_801FB2B8; //extern UNK_TYPE D_801FB2B8;
extern s80085320 D_801FB2D8; //extern UNK_TYPE D_801FB2D8;
extern s80085320 D_801FB2F8; //extern UNK_TYPE D_801FB2F8;
extern s80085320 D_801FB318; //extern UNK_TYPE D_801FB318;
extern UNK_TYPE D_801FB338; //extern UNK_TYPE D_801FB338;
//extern UNK_TYPE D_801FBAA0; //extern UNK_TYPE D_801FBAA0;
//extern UNK_TYPE D_801FBAB0; //extern UNK_TYPE D_801FBAB0;
//extern UNK_TYPE D_801FBAB4; //extern UNK_TYPE D_801FBAB4;
@ -5615,8 +5615,8 @@ extern UNK_TYPE D_80208EA0; // D_80208EA0
//extern UNK_TYPE D_80209AA0; //extern UNK_TYPE D_80209AA0;
//extern UNK_TYPE D_80209EA0; //extern UNK_TYPE D_80209EA0;
//extern UNK_TYPE D_8024A4C0; //extern UNK_TYPE D_8024A4C0;
extern UNK_TYPE D_803824C0; extern UNK_TYPE D_803824C0; // D_803824C0
extern UNK_TYPE D_80780000; extern UNK_TYPE D_80780000; // D_80780000
//extern UNK_TYPE D_80784600; //extern UNK_TYPE D_80784600;
//extern UNK_TYPE D_807DA800; //extern UNK_TYPE D_807DA800;
//extern UNK_TYPE D_80800860; //extern UNK_TYPE D_80800860;
@ -15569,10 +15569,6 @@ extern UNK_PTR D_800980D0_;
extern UNK_TYPE D_80099AD0_; extern UNK_TYPE D_80099AD0_;
extern UNK_TYPE D_8009A670_; extern UNK_TYPE D_8009A670_;
extern UNK_TYPE D_8009B140_; extern UNK_TYPE D_8009B140_;
extern UNK_TYPE D_801FA5B8_;
extern UNK_TYPE D_801FADB8_;
extern UNK_TYPE D_801FB2B8_;
extern UNK_TYPE D_801F9FB8_;
extern (*D_801BE960[12])(u8*, z_ActorCompInitEntry*); extern (*D_801BE960[12])(u8*, z_ActorCompInitEntry*);
#endif #endif

View File

@ -1,9 +1,9 @@
#include <ultra64.h> #include <ultra64.h>
#include <global.h> #include <global.h>
void func_80081820(void) {} void nop_80081820(void) {}
void func_80081828(void) {} void nop_80081828(void) {}
void func_80081830(void) { void func_80081830(void) {
func_8008481C(80, 200, &D_80098280, (UNK_PTR)(*(u32*)0xA4040010)); func_8008481C(80, 200, &D_80098280, (UNK_PTR)(*(u32*)0xA4040010));

View File

@ -1,14 +1,14 @@
#include <ultra64.h> #include <ultra64.h>
#include <global.h> #include <global.h>
UNK_RET func_80080060(void) { UNK_RET start(void) {
func_80085320(&D_80099500, &D_80099AF0, &D_80099EF0, 0, -1, &D_80098190); thread_info_init(&D_80099500, &D_80099AF0, &D_80099EF0, 0, -1, &D_80098190);
osMemSize = func_8008D350(); osMemSize = func_8008D350();
func_800818F4(); func_800818F4();
osInitialize(); osInitialize();
osUnmapTLBAll(); osUnmapTLBAll();
D_80096B40 = func_80092920(); D_80096B40 = func_80092920();
func_80085320(&D_80099AD0, &D_800996D0, &D_80099AD0_, 0, 256, &D_80098198); thread_info_init(&D_80099AD0, &D_800996D0, &D_80099AD0_, 0, 256, &D_80098198);
osCreateThread(&D_80099520, 1, (void(*)(void*))func_80080514, 0, &D_80099AD0, 12); osCreateThread(&D_80099520, 1, (void(*)(void*))Idle_ThreadEntry, 0, &D_80099AD0, 12);
osStartThread(&D_80099520); osStartThread(&D_80099520);
} }

View File

@ -7,27 +7,27 @@ UNK_RET func_800805E0(UNK_TYPE a0) {
if (a0 != 0) { if (a0 != 0) {
switch (osTvType) { switch (osTvType) {
case 2: case 2:
func_8008B650(&D_80098010); osViSetMode(&D_80098010);
break; break;
case 0: case 0:
func_8008B650(&D_80097590); osViSetMode(&D_80097590);
break; break;
case 1: case 1:
default: default:
func_8008B650(&D_80097FC0); osViSetMode(&D_80097FC0);
break; break;
} }
// TODO v0 is used here instead of a0. Is this a 7.1 optimization? // TODO v0 is used here instead of a0. Is this a 7.1 optimization?
if (D_80096B2C != 0) { if (D_80096B2C != 0) {
func_80092100(D_80096B2C); osViSetSpecialFeatures(D_80096B2C);
} }
if (D_80096B34 != 1) { if (D_80096B34 != 1) {
osViSetYScale(1); osViSetYScale(1);
} }
} else { } else {
func_8008B650(&D_8009B240); osViSetMode(&D_8009B240);
if (D_80096B28 != 0) { if (D_80096B28 != 0) {
func_80087E00(D_80096B28); func_80087E00(D_80096B28);
@ -35,7 +35,7 @@ UNK_RET func_800805E0(UNK_TYPE a0) {
// TODO v0 is used here instead of a0. Is this a 7.1 optimization? // TODO v0 is used here instead of a0. Is this a 7.1 optimization?
if (D_80096B2C != 0) { if (D_80096B2C != 0) {
func_80092100(D_80096B2C); osViSetSpecialFeatures(D_80096B2C);
} }
if (D_80096B30 != 1) { if (D_80096B30 != 1) {
@ -74,24 +74,24 @@ glabel func_800805E0
/* 000368 0x80080620 1441000A */ bne $v0, $at, .L_8008064C /* 000368 0x80080620 1441000A */ bne $v0, $at, .L_8008064C
/* 000369 0x80080624 00000000 */ nop /* 000369 0x80080624 00000000 */ nop
/* 000370 0x80080628 3C04800A */ lui $a0, %hi(D_80098010) /* 000370 0x80080628 3C04800A */ lui $a0, %hi(D_80098010)
/* 000371 0x8008062C 0C022D94 */ jal func_8008B650 /* 000371 0x8008062C 0C022D94 */ jal osViSetMode
/* 000372 0x80080630 24848010 */ addiu $a0, %lo(D_80098010) /* 000372 0x80080630 24848010 */ addiu $a0, %lo(D_80098010)
/* 000373 0x80080634 10000007 */ b .L_80080654 /* 000373 0x80080634 10000007 */ b .L_80080654
/* 000374 0x80080638 00000000 */ nop /* 000374 0x80080638 00000000 */ nop
.L_8008063C: .L_8008063C:
/* 000375 0x8008063C 0C022D94 */ jal func_8008B650 /* 000375 0x8008063C 0C022D94 */ jal osViSetMode
/* 000376 0x80080640 24847590 */ addiu $a0, $a0, 30096 /* 000376 0x80080640 24847590 */ addiu $a0, $a0, 30096
/* 000377 0x80080644 10000003 */ b .L_80080654 /* 000377 0x80080644 10000003 */ b .L_80080654
/* 000378 0x80080648 00000000 */ nop /* 000378 0x80080648 00000000 */ nop
.L_8008064C: .L_8008064C:
/* 000379 0x8008064C 0C022D94 */ jal func_8008B650 /* 000379 0x8008064C 0C022D94 */ jal osViSetMode
/* 000380 0x80080650 24847FC0 */ addiu $a0, $a0, 32704 /* 000380 0x80080650 24847FC0 */ addiu $a0, $a0, 32704
.L_80080654: .L_80080654:
/* 000381 0x80080654 3C048009 */ lui $a0, %hi(D_80096B2C) /* 000381 0x80080654 3C048009 */ lui $a0, %hi(D_80096B2C)
/* 000382 0x80080658 8C846B2C */ lw $a0, %lo(D_80096B2C)($a0) /* 000382 0x80080658 8C846B2C */ lw $a0, %lo(D_80096B2C)($a0)
/* 000383 0x8008065C 50800004 */ beqzl $a0, .L_80080670 /* 000383 0x8008065C 50800004 */ beqzl $a0, .L_80080670
/* 000384 0x80080660 3C013F80 */ lui $at, 0x3F80 /* 000384 0x80080660 3C013F80 */ lui $at, 0x3F80
/* 000385 0x80080664 0C024840 */ jal func_80092100 /* 000385 0x80080664 0C024840 */ jal osViSetSpecialFeatures
/* 000386 0x80080668 00000000 */ nop /* 000386 0x80080668 00000000 */ nop
/* 000387 0x8008066C 3C013F80 */ lui $at, 0x3F80 /* 000387 0x8008066C 3C013F80 */ lui $at, 0x3F80
.L_80080670: .L_80080670:
@ -107,7 +107,7 @@ glabel func_800805E0
/* 000397 0x80080694 10000025 */ b .L_8008072C /* 000397 0x80080694 10000025 */ b .L_8008072C
/* 000398 0x80080698 8FAF0018 */ lw $t7, 24($sp) /* 000398 0x80080698 8FAF0018 */ lw $t7, 24($sp)
.L_8008069C: .L_8008069C:
/* 000399 0x8008069C 0C022D94 */ jal func_8008B650 /* 000399 0x8008069C 0C022D94 */ jal osViSetMode
/* 000400 0x800806A0 2484B240 */ addiu $a0, $a0, -19904 /* 000400 0x800806A0 2484B240 */ addiu $a0, $a0, -19904
/* 000401 0x800806A4 3C048009 */ lui $a0, %hi(D_80096B28) /* 000401 0x800806A4 3C048009 */ lui $a0, %hi(D_80096B28)
/* 000402 0x800806A8 90846B28 */ lbu $a0, %lo(D_80096B28)($a0) /* 000402 0x800806A8 90846B28 */ lbu $a0, %lo(D_80096B28)($a0)
@ -120,7 +120,7 @@ glabel func_800805E0
/* 000408 0x800806C0 8C846B2C */ lw $a0, %lo(D_80096B2C)($a0) /* 000408 0x800806C0 8C846B2C */ lw $a0, %lo(D_80096B2C)($a0)
/* 000409 0x800806C4 50800004 */ beqzl $a0, .L_800806D8 /* 000409 0x800806C4 50800004 */ beqzl $a0, .L_800806D8
/* 000410 0x800806C8 3C013F80 */ lui $at, 0x3F80 /* 000410 0x800806C8 3C013F80 */ lui $at, 0x3F80
/* 000411 0x800806CC 0C024840 */ jal func_80092100 /* 000411 0x800806CC 0C024840 */ jal osViSetSpecialFeatures
/* 000412 0x800806D0 00000000 */ nop /* 000412 0x800806D0 00000000 */ nop
/* 000413 0x800806D4 3C013F80 */ lui $at, 0x3F80 /* 000413 0x800806D4 3C013F80 */ lui $at, 0x3F80
.L_800806D8: .L_800806D8:
@ -160,8 +160,8 @@ glabel func_800805E0
UNK_RET func_80080748(void) { UNK_RET func_80080748(void) {
if (D_80096B24 != 0) { if (D_80096B24 != 0) {
func_8008AE70(1); osViRepeatLine(1);
} else { } else {
func_8008AE70(0); osViRepeatLine(0);
} }
} }

View File

@ -1,7 +1,7 @@
#include <ultra64.h> #include <ultra64.h>
#include <global.h> #include <global.h>
s32 func_80080790(void* a0, void* a1, s32 a2) { s32 Dmamgr_DoDmaTransfer(void* a0, void* a1, s32 a2) {
u32 spPad; u32 spPad;
OSIoMesg sp60; OSIoMesg sp60;
OSMesgQueue sp48; OSMesgQueue sp48;
@ -44,11 +44,11 @@ END:
return ret; return ret;
} }
void func_800808D4(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) { void Dmamgr_osEPiStartDmaWrapper(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
osEPiStartDma(pihandle, mb, direction); osEPiStartDma(pihandle, mb, direction);
} }
DmadataEntry* func_800808F4(u32 a0) { DmadataEntry* Dmamgr_FindDmaEntry(u32 a0) {
DmadataEntry* curr; DmadataEntry* curr;
for (curr = dmadata; curr->vromEnd != 0; curr++) { for (curr = dmadata; curr->vromEnd != 0; curr++) {
@ -61,8 +61,8 @@ DmadataEntry* func_800808F4(u32 a0) {
return NULL; return NULL;
} }
s32 func_80080950(u32 a0) { s32 Dmamgr_TranslateVromToRom(u32 a0) {
DmadataEntry* v0 = func_800808F4(a0); DmadataEntry* v0 = Dmamgr_FindDmaEntry(a0);
if (v0 != NULL) { if (v0 != NULL) {
if (v0->romEnd == 0) { if (v0->romEnd == 0) {
@ -79,8 +79,8 @@ s32 func_80080950(u32 a0) {
return -1; return -1;
} }
s32 func_800809BC(u32 a0) { s32 Dmamgr_FindDmaIndex(u32 a0) {
DmadataEntry* v0 = func_800808F4(a0); DmadataEntry* v0 = Dmamgr_FindDmaEntry(a0);
if (v0 != NULL) { if (v0 != NULL) {
return v0 - dmadata; return v0 - dmadata;
@ -95,7 +95,7 @@ UNK_TYPE* func_800809F4(u32 a0) {
#ifdef NONMATCHING #ifdef NONMATCHING
void func_80080A08(s80080A08* a0) { void Dmamgr_HandleRequest(s80080A08* a0) {
UNK_TYPE sp34; UNK_TYPE sp34;
UNK_TYPE sp30; UNK_TYPE sp30;
UNK_TYPE sp2C; UNK_TYPE sp2C;
@ -109,14 +109,14 @@ void func_80080A08(s80080A08* a0) {
sp30 = (UNK_TYPE)a0->unk4; sp30 = (UNK_TYPE)a0->unk4;
sp2C = a0->unk8; sp2C = a0->unk8;
sp1C = func_800809BC(sp34); sp1C = Dmamgr_FindDmaIndex(sp34);
if ((sp1C >= 0) && (sp1C < D_8009B2BC)) { if ((sp1C >= 0) && (sp1C < D_8009B2BC)) {
if (dmadata[sp1C].romEnd == 0) { if (dmadata[sp1C].romEnd == 0) {
if (dmadata[sp1C].vromEnd < (sp2C + sp34)) { if (dmadata[sp1C].vromEnd < (sp2C + sp34)) {
func_80083E4C(&D_800981C4, 499); func_80083E4C(&D_800981C4, 499);
} }
func_80080790((u8*)((dmadata[sp1C].romStart + sp34) - dmadata[sp1C].vromStart), (u8*)sp30, sp2C); Dmamgr_DoDmaTransfer((u8*)((dmadata[sp1C].romStart + sp34) - dmadata[sp1C].vromStart), (u8*)sp30, sp2C);
return; return;
} }
@ -133,7 +133,7 @@ void func_80080A08(s80080A08* a0) {
} }
osSetThreadPri(NULL, 10); osSetThreadPri(NULL, 10);
func_80081178(sp28, sp30, sp24); Yaz0_LoadAndDecompressFile(sp28, sp30, sp24);
osSetThreadPri(NULL, 17); osSetThreadPri(NULL, 17);
} else { } else {
func_80083E4C(&D_800981F4, 558); func_80083E4C(&D_800981F4, 558);
@ -143,7 +143,7 @@ void func_80080A08(s80080A08* a0) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_80080A08 glabel Dmamgr_HandleRequest
/* 000618 0x80080A08 27BDFFC8 */ addiu $sp, $sp, -56 /* 000618 0x80080A08 27BDFFC8 */ addiu $sp, $sp, -56
/* 000619 0x80080A0C AFBF0014 */ sw $ra, 20($sp) /* 000619 0x80080A0C AFBF0014 */ sw $ra, 20($sp)
/* 000620 0x80080A10 00802825 */ move $a1, $a0 /* 000620 0x80080A10 00802825 */ move $a1, $a0
@ -152,7 +152,7 @@ glabel func_80080A08
/* 000623 0x80080A1C AFAE0030 */ sw $t6, 48($sp) /* 000623 0x80080A1C AFAE0030 */ sw $t6, 48($sp)
/* 000624 0x80080A20 8CAF0008 */ lw $t7, 8($a1) /* 000624 0x80080A20 8CAF0008 */ lw $t7, 8($a1)
/* 000625 0x80080A24 AFA40034 */ sw $a0, 52($sp) /* 000625 0x80080A24 AFA40034 */ sw $a0, 52($sp)
/* 000626 0x80080A28 0C02026F */ jal func_800809BC /* 000626 0x80080A28 0C02026F */ jal Dmamgr_FindDmaIndex
/* 000627 0x80080A2C AFAF002C */ sw $t7, 44($sp) /* 000627 0x80080A2C AFAF002C */ sw $t7, 44($sp)
/* 000628 0x80080A30 8FA70034 */ lw $a3, 52($sp) /* 000628 0x80080A30 8FA70034 */ lw $a3, 52($sp)
/* 000629 0x80080A34 0440004B */ bltz $v0, .L_80080B64 /* 000629 0x80080A34 0440004B */ bltz $v0, .L_80080B64
@ -191,7 +191,7 @@ glabel func_80080A08
/* 000661 0x80080AB4 8FA50030 */ lw $a1, 48($sp) /* 000661 0x80080AB4 8FA50030 */ lw $a1, 48($sp)
/* 000662 0x80080AB8 01E7C021 */ addu $t8, $t7, $a3 /* 000662 0x80080AB8 01E7C021 */ addu $t8, $t7, $a3
/* 000663 0x80080ABC 8FA6002C */ lw $a2, 44($sp) /* 000663 0x80080ABC 8FA6002C */ lw $a2, 44($sp)
/* 000664 0x80080AC0 0C0201E4 */ jal func_80080790 /* 000664 0x80080AC0 0C0201E4 */ jal Dmamgr_DoDmaTransfer
/* 000665 0x80080AC4 03192023 */ subu $a0, $t8, $t9 /* 000665 0x80080AC4 03192023 */ subu $a0, $t8, $t9
/* 000666 0x80080AC8 1000002B */ b .L_80080B78 /* 000666 0x80080AC8 1000002B */ b .L_80080B78
/* 000667 0x80080ACC 8FBF0014 */ lw $ra, 20($sp) /* 000667 0x80080ACC 8FBF0014 */ lw $ra, 20($sp)
@ -228,7 +228,7 @@ glabel func_80080A08
/* 000695 0x80080B3C 2405000A */ li $a1, 10 /* 000695 0x80080B3C 2405000A */ li $a1, 10
/* 000696 0x80080B40 8FA40028 */ lw $a0, 40($sp) /* 000696 0x80080B40 8FA40028 */ lw $a0, 40($sp)
/* 000697 0x80080B44 8FA50030 */ lw $a1, 48($sp) /* 000697 0x80080B44 8FA50030 */ lw $a1, 48($sp)
/* 000698 0x80080B48 0C02045E */ jal func_80081178 /* 000698 0x80080B48 0C02045E */ jal Yaz0_LoadAndDecompressFile
/* 000699 0x80080B4C 8FA60024 */ lw $a2, 36($sp) /* 000699 0x80080B4C 8FA60024 */ lw $a2, 36($sp)
/* 000700 0x80080B50 00002025 */ move $a0, $zero /* 000700 0x80080B50 00002025 */ move $a0, $zero
/* 000701 0x80080B54 0C023F00 */ jal osSetThreadPri /* 000701 0x80080B54 0C023F00 */ jal osSetThreadPri
@ -251,7 +251,7 @@ glabel func_80080A08
#ifdef NONMATCHING #ifdef NONMATCHING
void func_80080B84(void* a0) { void Dmamgr_ThreadEntry(void* a0) {
s80080A08* sp34; s80080A08* sp34;
UNK_TYPE pad; UNK_TYPE pad;
s80080A08* s0; s80080A08* s0;
@ -260,7 +260,7 @@ void func_80080B84(void* a0) {
osRecvMesg(&D_8009B2C0, (OSMesg)&sp34, 1); osRecvMesg(&D_8009B2C0, (OSMesg)&sp34, 1);
if (sp34 == NULL) return; if (sp34 == NULL) return;
s0 = sp34; s0 = sp34;
func_80080A08(s0); Dmamgr_HandleRequest(s0);
// TODO a0 isn't being used for this comparison // TODO a0 isn't being used for this comparison
if (s0->unk18 == NULL) continue; if (s0->unk18 == NULL) continue;
osSendMesg(&D_8009B2C0, (OSMesg)s0->unk1C, 0); osSendMesg(&D_8009B2C0, (OSMesg)s0->unk1C, 0);
@ -270,7 +270,7 @@ void func_80080B84(void* a0) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_80080B84 glabel Dmamgr_ThreadEntry
/* 000713 0x80080B84 27BDFFC8 */ addiu $sp, $sp, -56 /* 000713 0x80080B84 27BDFFC8 */ addiu $sp, $sp, -56
/* 000714 0x80080B88 AFBF0024 */ sw $ra, 36($sp) /* 000714 0x80080B88 AFBF0024 */ sw $ra, 36($sp)
/* 000715 0x80080B8C AFB20020 */ sw $s2, 32($sp) /* 000715 0x80080B8C AFB20020 */ sw $s2, 32($sp)
@ -288,7 +288,7 @@ glabel func_80080B84
/* 000726 0x80080BB8 8FA40034 */ lw $a0, 52($sp) /* 000726 0x80080BB8 8FA40034 */ lw $a0, 52($sp)
/* 000727 0x80080BBC 5080000C */ beqzl $a0, .L_80080BF0 /* 000727 0x80080BBC 5080000C */ beqzl $a0, .L_80080BF0
/* 000728 0x80080BC0 8FBF0024 */ lw $ra, 36($sp) /* 000728 0x80080BC0 8FBF0024 */ lw $ra, 36($sp)
/* 000729 0x80080BC4 0C020282 */ jal func_80080A08 /* 000729 0x80080BC4 0C020282 */ jal Dmamgr_HandleRequest
/* 000730 0x80080BC8 00808025 */ move $s0, $a0 /* 000730 0x80080BC8 00808025 */ move $s0, $a0
/* 000731 0x80080BCC 8E040018 */ lw $a0, 24($s0) /* 000731 0x80080BCC 8E040018 */ lw $a0, 24($s0)
/* 000732 0x80080BD0 5080FFF6 */ beqzl $a0, .L_80080BAC /* 000732 0x80080BD0 5080FFF6 */ beqzl $a0, .L_80080BAC
@ -311,7 +311,7 @@ glabel func_80080B84
#ifdef NONMATCHING #ifdef NONMATCHING
s32 func_80080C04(s80080A08* a0, UNK_FUN_PTR(a1), UNK_PTR a2, UNK_TYPE a3, UNK_TYPE sp30, OSMesgQueue* sp34, UNK_TYPE sp38) { s32 Dmamgr_SendRequest(s80080A08* a0, UNK_FUN_PTR(a1), UNK_PTR a2, UNK_TYPE a3, UNK_TYPE sp30, OSMesgQueue* sp34, UNK_TYPE sp38) {
// TODO this isn't correct, it uses a lui, addiu to get the address of D_80096B60, then loads it, // TODO this isn't correct, it uses a lui, addiu to get the address of D_80096B60, then loads it,
// meaning that this is likely just "if (*D_80096B60 >= 2)". However, I can not get it to not // meaning that this is likely just "if (*D_80096B60 >= 2)". However, I can not get it to not
// produce the usual lui, lw combo to load from an address :/ // produce the usual lui, lw combo to load from an address :/
@ -334,7 +334,7 @@ s32 func_80080C04(s80080A08* a0, UNK_FUN_PTR(a1), UNK_PTR a2, UNK_TYPE a3, UNK_T
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_80080C04 glabel Dmamgr_SendRequest
/* 000745 0x80080C04 27BDFFE0 */ addiu $sp, $sp, -32 /* 000745 0x80080C04 27BDFFE0 */ addiu $sp, $sp, -32
/* 000746 0x80080C08 AFB00018 */ sw $s0, 24($sp) /* 000746 0x80080C08 AFB00018 */ sw $s0, 24($sp)
/* 000747 0x80080C0C 00808025 */ move $s0, $a0 /* 000747 0x80080C0C 00808025 */ move $s0, $a0
@ -376,7 +376,7 @@ glabel func_80080C04
#endif #endif
s32 func_80080C90(UNK_TYPE a0, UNK_PTR a1, UNK_TYPE a2) { s32 Dmamgr_SendRequestAndWait(UNK_TYPE a0, UNK_PTR a1, UNK_TYPE a2) {
s80080A08 sp48; s80080A08 sp48;
OSMesgQueue sp30; OSMesgQueue sp30;
OSMesg sp2C; OSMesg sp2C;
@ -384,7 +384,7 @@ s32 func_80080C90(UNK_TYPE a0, UNK_PTR a1, UNK_TYPE a2) {
osCreateMesgQueue(&sp30, &sp2C, 1); osCreateMesgQueue(&sp30, &sp2C, 1);
ret = func_80080C04(&sp48, (UNK_FUN_ARG)a0, a1, a2, 0, &sp30, 0); ret = Dmamgr_SendRequest(&sp48, (UNK_FUN_ARG)a0, a1, a2, 0, &sp30, 0);
if (ret == -1) { if (ret == -1) {
return ret; return ret;
@ -397,11 +397,11 @@ s32 func_80080C90(UNK_TYPE a0, UNK_PTR a1, UNK_TYPE a2) {
#ifdef NONMATCHING #ifdef NONMATCHING
void func_80080D0C() { void Dmamgr_Start() {
DmadataEntry* v0; DmadataEntry* v0;
u32 v1; u32 v1;
// TODO register load ordering is wrong // TODO register load ordering is wrong
func_80080790(&dmadataRomStart, dmadata, (u8*)&dmadataRomEnd - (u8*)&dmadataRomStart); Dmamgr_DoDmaTransfer(&dmadataRomStart, dmadata, (u8*)&dmadataRomEnd - (u8*)&dmadataRomStart);
for (v0 = dmadata, v1 = 0; v0->vromEnd != 0; v0++, v1++); for (v0 = dmadata, v1 = 0; v0->vromEnd != 0; v0++, v1++);
@ -409,9 +409,9 @@ void func_80080D0C() {
osCreateMesgQueue(&D_8009B2C0, (OSMesg)&D_8009B2D8, 32); osCreateMesgQueue(&D_8009B2C0, (OSMesg)&D_8009B2D8, 32);
func_80085320(&D_8009B2A0, &D_8009B508, &D_8009BA08, 0, 256, &D_80098204); thread_info_init(&D_8009B2A0, &D_8009B508, &D_8009BA08, 0, 256, &D_80098204);
osCreateThread(&D_8009B358, 18, func_80080B84, NULL, &D_8009BA08, 17); osCreateThread(&D_8009B358, 18, Dmamgr_ThreadEntry, NULL, &D_8009BA08, 17);
osStartThread(&D_8009B358); osStartThread(&D_8009B358);
} }
@ -419,7 +419,7 @@ void func_80080D0C() {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_80080D0C glabel Dmamgr_Start
/* 000811 0x80080D0C 27BDFFE0 */ addiu $sp, $sp, -32 /* 000811 0x80080D0C 27BDFFE0 */ addiu $sp, $sp, -32
/* 000812 0x80080D10 AFBF001C */ sw $ra, 28($sp) /* 000812 0x80080D10 AFBF001C */ sw $ra, 28($sp)
/* 000813 0x80080D14 3C040002 */ lui $a0, %hi(dmadataRomStart) /* 000813 0x80080D14 3C040002 */ lui $a0, %hi(dmadataRomStart)
@ -428,7 +428,7 @@ glabel func_80080D0C
/* 000816 0x80080D20 2484A500 */ addiu $a0, %lo(dmadataRomStart) /* 000816 0x80080D20 2484A500 */ addiu $a0, %lo(dmadataRomStart)
/* 000817 0x80080D24 3C05800A */ lui $a1, %hi(dmadata) /* 000817 0x80080D24 3C05800A */ lui $a1, %hi(dmadata)
/* 000818 0x80080D28 24A5F8B0 */ addiu $a1, %lo(dmadata) /* 000818 0x80080D28 24A5F8B0 */ addiu $a1, %lo(dmadata)
/* 000819 0x80080D2C 0C0201E4 */ jal func_80080790 /* 000819 0x80080D2C 0C0201E4 */ jal Dmamgr_DoDmaTransfer
/* 000820 0x80080D30 01C43023 */ subu $a2, $t6, $a0 /* 000820 0x80080D30 01C43023 */ subu $a2, $t6, $a0
/* 000821 0x80080D34 3C04800A */ lui $a0, %hi(dmadata) /* 000821 0x80080D34 3C04800A */ lui $a0, %hi(dmadata)
/* 000822 0x80080D38 2484F8B0 */ addiu $a0, %lo(dmadata) /* 000822 0x80080D38 2484F8B0 */ addiu $a0, %lo(dmadata)
@ -462,15 +462,15 @@ glabel func_80080D0C
/* 000848 0x80080DA0 24A5B508 */ addiu $a1, %lo(D_8009B508) /* 000848 0x80080DA0 24A5B508 */ addiu $a1, %lo(D_8009B508)
/* 000849 0x80080DA4 2484B2A0 */ addiu $a0, $a0, -19808 /* 000849 0x80080DA4 2484B2A0 */ addiu $a0, $a0, -19808
/* 000850 0x80080DA8 AFA80014 */ sw $t0, 20($sp) /* 000850 0x80080DA8 AFA80014 */ sw $t0, 20($sp)
/* 000851 0x80080DAC 0C0214C8 */ jal func_80085320 /* 000851 0x80080DAC 0C0214C8 */ jal thread_info_init
/* 000852 0x80080DB0 00003825 */ move $a3, $zero /* 000852 0x80080DB0 00003825 */ move $a3, $zero
/* 000853 0x80080DB4 3C09800A */ lui $t1, %hi(D_8009BA08) /* 000853 0x80080DB4 3C09800A */ lui $t1, %hi(D_8009BA08)
/* 000854 0x80080DB8 2529BA08 */ addiu $t1, %lo(D_8009BA08) /* 000854 0x80080DB8 2529BA08 */ addiu $t1, %lo(D_8009BA08)
/* 000855 0x80080DBC 3C04800A */ lui $a0, %hi(D_8009B358) /* 000855 0x80080DBC 3C04800A */ lui $a0, %hi(D_8009B358)
/* 000856 0x80080DC0 3C068008 */ lui $a2, %hi(func_80080B84) /* 000856 0x80080DC0 3C068008 */ lui $a2, %hi(Dmamgr_ThreadEntry)
/* 000857 0x80080DC4 240A0011 */ li $t2, 17 /* 000857 0x80080DC4 240A0011 */ li $t2, 17
/* 000858 0x80080DC8 AFAA0014 */ sw $t2, 20($sp) /* 000858 0x80080DC8 AFAA0014 */ sw $t2, 20($sp)
/* 000859 0x80080DCC 24C60B84 */ addiu $a2, %lo(func_80080B84) /* 000859 0x80080DCC 24C60B84 */ addiu $a2, %lo(Dmamgr_ThreadEntry)
/* 000860 0x80080DD0 2484B358 */ addiu $a0, %lo(D_8009B358) /* 000860 0x80080DD0 2484B358 */ addiu $a0, %lo(D_8009B358)
/* 000861 0x80080DD4 AFA90010 */ sw $t1, 16($sp) /* 000861 0x80080DD4 AFA90010 */ sw $t1, 16($sp)
/* 000862 0x80080DD8 24050012 */ li $a1, 18 /* 000862 0x80080DD8 24050012 */ li $a1, 18
@ -487,6 +487,6 @@ glabel func_80080D0C
#endif #endif
void func_80080E00() { void Dmamgr_Stop() {
osSendMesg(&D_8009B2C0, NULL, 1); osSendMesg(&D_8009B2C0, NULL, 1);
} }

View File

@ -5,28 +5,28 @@
// This file is most likely En_A_Obj // This file is most likely En_A_Obj
UNK_RET func_800A5AC0(void* a0, UNK_TYPE a1) { UNK_RET EnAObj_Init(void* a0, UNK_TYPE a1) {
s800A5AC0* s0 = (s800A5AC0*)a0; s800A5AC0* s0 = (s800A5AC0*)a0;
s0->unk116 = ((s0->unk1C >> 8) & 0xFF) | 0x300; s0->unk116 = ((s0->unk1C >> 8) & 0xFF) | 0x300;
s0->unk1C = (s0->unk1C & 0xFF) - 9; s0->unk1C = (s0->unk1C & 0xFF) - 9;
func_800FFADC((z_Actor*)s0, (z_ActorCompInitEntry*)&D_801ADEAC); Lib_ApplyActorInitVars((z_Actor*)s0, (z_ActorCompInitEntry*)&D_801ADEAC);
func_800B3BA4(&s0->unkBC, 0, (UNK_PTR)&func_800B3FC0, 12); func_800B3BA4(&s0->unkBC, 0, (UNK_PTR)&func_800B3FC0, 12);
func_800E1374(a1, &s0->unk148, (z_Actor*)s0, &D_801ADE80); Collision_InitCylinder(a1, &s0->unk148, (z_Actor*)s0, &D_801ADE80);
func_800E7DF8((z_Actor*)s0, &s0->unk148); Collision_CylinderMoveToActor((z_Actor*)s0, &s0->unk148);
s0->unkB6 = 255; s0->unkB6 = 255;
s0->unk144 = func_800A5B98; s0->unk144 = EnAObj_Update1;
} }
UNK_RET func_800A5B6C(s800A5AC0* a0, z_GlobalContext* a1) { UNK_RET EnAObj_Fini(s800A5AC0* a0, z_GlobalContext* a1) {
UNK_TYPE* a2 = &a0->unk148; UNK_TYPE* a2 = &a0->unk148;
func_800E11EC(a1, a2); Collision_FiniCylinder(a1, a2);
} }
UNK_RET func_800A5B98(s800A5AC0* a0, UNK_TYPE a1) { UNK_RET EnAObj_Update1(s800A5AC0* a0, UNK_TYPE a1) {
s16 v0; s16 v0;
s32 v1; s32 v1;
if (func_800B84D0(a0, a1) != 0) { if (func_800B84D0(a0, a1) != 0) {
a0->unk144 = (void(*)(s800A5AC0*, UNK_TYPE))func_800A5C28; //! Is this cast correct? a0->unk144 = (void(*)(s800A5AC0*, UNK_TYPE))EnAObj_Update2; //! Is this cast correct?
} else { } else {
v0 = a0->unk92 - a0->unkBE; v0 = a0->unk92 - a0->unkBE;
v1 = (v0 < 0)? -v0 : v0; v1 = (v0 < 0)? -v0 : v0;
@ -36,18 +36,18 @@ UNK_RET func_800A5B98(s800A5AC0* a0, UNK_TYPE a1) {
} }
} }
UNK_RET func_800A5C28(s800A5AC0* a0) { UNK_RET EnAObj_Update2(s800A5AC0* a0) {
if (func_800B867C(a0) != 0) { if (func_800B867C(a0) != 0) {
a0->unk144 = func_800A5B98; a0->unk144 = EnAObj_Update1;
} }
} }
UNK_RET func_800A5C60(s800A5AC0* a0, UNK_TYPE a1) { UNK_RET EnAObj_Main(s800A5AC0* a0, UNK_TYPE a1) {
(a0->unk144)(a0, a1); (a0->unk144)(a0, a1);
func_800B675C(a0, 0x42340000); func_800B675C(a0, 0x42340000);
func_800E2928(a1, a1 + 0x18884, &a0->unk148); Collision_AddOT(a1, a1 + 0x18884, &a0->unk148);
} }
UNK_RET func_800A5CB8(s800A5AC0* a0, UNK_TYPE a1) { UNK_RET EnAObj_Draw(s800A5AC0* a0, UNK_TYPE a1) {
func_800BDFC0(a1, D_801ADEB0[a0->unk1C], a1, a0); func_800BDFC0(a1, D_801ADEB0[a0->unk1C], a1, a0);
} }

View File

@ -1,17 +1,17 @@
#include <ultra64.h> #include <ultra64.h>
#include <global.h> #include <global.h>
void effect_ss_init(z_GlobalContext* ctxt, s32 numEntries) { void EffectSS_Init(z_GlobalContext* ctxt, s32 numEntries) {
u32 i; u32 i;
z_LoadedParticleEntry* iter; z_LoadedParticleEntry* iter;
z_ParticleOverlayTableEntry* iter2; z_ParticleOverlayTableEntry* iter2;
EffectSS2Info.data_table = (z_LoadedParticleEntry*)func_80172AC8(&ctxt->unk74, numEntries * sizeof(z_LoadedParticleEntry)); EffectSS2Info.data_table = (z_LoadedParticleEntry*)GameStateHeap_AllocFromEnd(&ctxt->unk74, numEntries * sizeof(z_LoadedParticleEntry));
EffectSS2Info.searchIndex = 0; EffectSS2Info.searchIndex = 0;
EffectSS2Info.size = numEntries; EffectSS2Info.size = numEntries;
for (iter = EffectSS2Info.data_table; iter < EffectSS2Info.data_table + EffectSS2Info.size; iter++) { for (iter = EffectSS2Info.data_table; iter < EffectSS2Info.data_table + EffectSS2Info.size; iter++) {
effect_ss_reset_entry(iter); EffectSS_ResetLoadedParticleEntry(iter);
} }
for (i = 0, iter2 = particleOverlayTable; i != 0x27; i++) { for (i = 0, iter2 = particleOverlayTable; i != 0x27; i++) {
@ -19,7 +19,7 @@ void effect_ss_init(z_GlobalContext* ctxt, s32 numEntries) {
} }
} }
void effect_ss_clear(z_GlobalContext* ctxt) { void EffectSS_Clear(z_GlobalContext* ctxt) {
u32 i; u32 i;
z_LoadedParticleEntry* iter; z_LoadedParticleEntry* iter;
z_ParticleOverlayTableEntry* iter2; z_ParticleOverlayTableEntry* iter2;
@ -31,24 +31,24 @@ void effect_ss_clear(z_GlobalContext* ctxt) {
// This code is completely useless, as data_table was juest to NULL and size to 0 // This code is completely useless, as data_table was juest to NULL and size to 0
for (iter = EffectSS2Info.data_table; iter < EffectSS2Info.data_table + EffectSS2Info.size; iter++) { for (iter = EffectSS2Info.data_table; iter < EffectSS2Info.data_table + EffectSS2Info.size; iter++) {
effect_ss_delete(iter); EffectSS_Delete(iter);
} }
// Free memory from loaded particle overlays // Free memory from loaded particle overlays
for (i = 0, iter2 = particleOverlayTable; i != 0x27; i++) { for (i = 0, iter2 = particleOverlayTable; i != 0x27; i++) {
addr = (void*)iter2->loadedRamAddr; addr = (void*)iter2->loadedRamAddr;
if (addr != NULL) { if (addr != NULL) {
func_80102CE0(addr); zelda_free(addr);
} }
(iter2++)->loadedRamAddr = 0; (iter2++)->loadedRamAddr = 0;
} }
} }
z_LoadedParticleEntry* effect_ss_get_table() { z_LoadedParticleEntry* EffectSS_GetTable() {
return EffectSS2Info.data_table; return EffectSS2Info.data_table;
} }
void effect_ss_delete(z_LoadedParticleEntry* a0) { void EffectSS_Delete(z_LoadedParticleEntry* a0) {
if (a0->flags & 0x2) { if (a0->flags & 0x2) {
func_801A72CC((UNK_PTR)&a0->position); func_801A72CC((UNK_PTR)&a0->position);
} }
@ -57,10 +57,10 @@ void effect_ss_delete(z_LoadedParticleEntry* a0) {
func_801A72CC((UNK_PTR)&a0->unk2C); func_801A72CC((UNK_PTR)&a0->unk2C);
} }
effect_ss_reset_entry(a0); EffectSS_ResetLoadedParticleEntry(a0);
} }
void effect_ss_reset_entry(z_LoadedParticleEntry* particle) { void EffectSS_ResetLoadedParticleEntry(z_LoadedParticleEntry* particle) {
u32 i; u32 i;
particle->type = 0x27; particle->type = 0x27;
@ -92,7 +92,7 @@ void effect_ss_reset_entry(z_LoadedParticleEntry* particle) {
// XXX Some regalloc differences and instruction ordering // XXX Some regalloc differences and instruction ordering
#ifdef NONMATCHING #ifdef NONMATCHING
s32 effect_ss_find_free_space(u32 priority, u32* tableEntry) { s32 EffectSS_FindFreeSpace(u32 priority, u32* tableEntry) {
s32 ret = 0; s32 ret = 0;
s32 i; s32 i;
@ -149,7 +149,7 @@ s32 effect_ss_find_free_space(u32 priority, u32* tableEntry) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel effect_ss_find_free_space glabel EffectSS_FindFreeSpace
/* 010769 0x800B0304 27BDFFF8 */ addiu $sp, $sp, -8 /* 010769 0x800B0304 27BDFFF8 */ addiu $sp, $sp, -8
/* 010770 0x800B0308 AFB00004 */ sw $s0, 0X4($sp) /* 010770 0x800B0308 AFB00004 */ sw $s0, 0X4($sp)
/* 010771 0x800B030C 3C06801B */ lui $a2, %hi(EffectSS2Info) /* 010771 0x800B030C 3C06801B */ lui $a2, %hi(EffectSS2Info)
@ -244,10 +244,10 @@ glabel effect_ss_find_free_space
#endif #endif
void func_800B043C(z_GlobalContext* ctxt, z_LoadedParticleEntry* a1) { void EffectSS_Copy(z_GlobalContext* ctxt, z_LoadedParticleEntry* a1) {
u32 index; u32 index;
if (func_8016A01C(ctxt) != 1) { if (func_8016A01C(ctxt) != 1) {
if (effect_ss_find_free_space(a1->priority, &index) == 0) { if (EffectSS_FindFreeSpace(a1->priority, &index) == 0) {
EffectSS2Info.searchIndex = index + 1; EffectSS2Info.searchIndex = index + 1;
EffectSS2Info.data_table[index] = *a1; EffectSS2Info.data_table[index] = *a1;
} }
@ -256,14 +256,14 @@ void func_800B043C(z_GlobalContext* ctxt, z_LoadedParticleEntry* a1) {
#ifdef NONMATCHING #ifdef NONMATCHING
void effect_ss_load_particle(z_GlobalContext* ctxt, u32 type, u32 priority, void* initData) { void EffectSS_LoadParticle(z_GlobalContext* ctxt, u32 type, u32 priority, void* initData) {
u32 index; u32 index;
u32 initRet; u32 initRet;
u32 overlaySize; u32 overlaySize;
z_ParticleOverlayInfo* overlayInfo; z_ParticleOverlayInfo* overlayInfo;
z_ParticleOverlayTableEntry* entry = &particleOverlayTable[type]; z_ParticleOverlayTableEntry* entry = &particleOverlayTable[type];
if (effect_ss_find_free_space(priority, &index) != 0) { if (EffectSS_FindFreeSpace(priority, &index) != 0) {
return; return;
} }
@ -274,13 +274,13 @@ void effect_ss_load_particle(z_GlobalContext* ctxt, u32 type, u32 priority, void
// XXX this subtraction is done earlier // XXX this subtraction is done earlier
overlaySize = entry->vramEnd - entry->vramStart; overlaySize = entry->vramEnd - entry->vramStart;
if (entry->loadedRamAddr == 0) { if (entry->loadedRamAddr == 0) {
entry->loadedRamAddr = (u32)func_80102C88(overlaySize); entry->loadedRamAddr = (u32)zelda_mallocR(overlaySize);
if (entry->loadedRamAddr == 0) { if (entry->loadedRamAddr == 0) {
return; return;
} }
func_8008501C(entry->vromStart, entry->vromEnd, entry->vramStart, entry->vramEnd, entry->loadedRamAddr); load_and_relocate_overlay(entry->vromStart, entry->vromEnd, entry->vramStart, entry->vramEnd, entry->loadedRamAddr);
} }
// XXX this should use a0, but it doesn't // XXX this should use a0, but it doesn't
@ -292,7 +292,7 @@ void effect_ss_load_particle(z_GlobalContext* ctxt, u32 type, u32 priority, void
} }
if (overlayInfo->init != 0) { if (overlayInfo->init != 0) {
effect_ss_delete(&EffectSS2Info.data_table[index]); EffectSS_Delete(&EffectSS2Info.data_table[index]);
EffectSS2Info.data_table[index].type = type; EffectSS2Info.data_table[index].type = type;
EffectSS2Info.data_table[index].priority = priority; EffectSS2Info.data_table[index].priority = priority;
@ -300,7 +300,7 @@ void effect_ss_load_particle(z_GlobalContext* ctxt, u32 type, u32 priority, void
initRet = (*overlayInfo->init)(ctxt, index, &EffectSS2Info.data_table[index], initData); initRet = (*overlayInfo->init)(ctxt, index, &EffectSS2Info.data_table[index], initData);
if (initRet == 0) { if (initRet == 0) {
effect_ss_reset_entry(&EffectSS2Info.data_table[index]); EffectSS_ResetLoadedParticleEntry(&EffectSS2Info.data_table[index]);
} }
} }
} }
@ -308,7 +308,7 @@ void effect_ss_load_particle(z_GlobalContext* ctxt, u32 type, u32 priority, void
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel effect_ss_load_particle glabel EffectSS_LoadParticle
/* 010885 0x800B04D4 27BDFFC0 */ addiu $sp, $sp, -64 /* 010885 0x800B04D4 27BDFFC0 */ addiu $sp, $sp, -64
/* 010886 0x800B04D8 AFBF001C */ sw $ra, 0X1C($sp) /* 010886 0x800B04D8 AFBF001C */ sw $ra, 0X1C($sp)
/* 010887 0x800B04DC AFA40040 */ sw $a0, 0X40($sp) /* 010887 0x800B04DC AFA40040 */ sw $a0, 0X40($sp)
@ -316,7 +316,7 @@ glabel effect_ss_load_particle
/* 010889 0x800B04E4 AFA60048 */ sw $a2, 0X48($sp) /* 010889 0x800B04E4 AFA60048 */ sw $a2, 0X48($sp)
/* 010890 0x800B04E8 AFA7004C */ sw $a3, 0X4C($sp) /* 010890 0x800B04E8 AFA7004C */ sw $a3, 0X4C($sp)
/* 010891 0x800B04EC 8FA40048 */ lw $a0, 0X48($sp) /* 010891 0x800B04EC 8FA40048 */ lw $a0, 0X48($sp)
/* 010892 0x800B04F0 0C02C0C1 */ jal effect_ss_find_free_space /* 010892 0x800B04F0 0C02C0C1 */ jal EffectSS_FindFreeSpace
/* 010893 0x800B04F4 27A5003C */ addiu $a1, $sp, 60 /* 010893 0x800B04F4 27A5003C */ addiu $a1, $sp, 60
/* 010894 0x800B04F8 1440005C */ bnez $v0, .L_800B066C /* 010894 0x800B04F8 1440005C */ bnez $v0, .L_800B066C
/* 010895 0x800B04FC 8FAE003C */ lw $t6, 0X3C($sp) /* 010895 0x800B04FC 8FAE003C */ lw $t6, 0X3C($sp)
@ -340,7 +340,7 @@ glabel effect_ss_load_particle
/* 010912 0x800B0540 8C6B0010 */ lw $t3, 0X10($v1) /* 010912 0x800B0540 8C6B0010 */ lw $t3, 0X10($v1)
/* 010913 0x800B0544 5560000F */ bnezl $t3, .L_800B0584 /* 010913 0x800B0544 5560000F */ bnezl $t3, .L_800B0584
/* 010914 0x800B0548 8C620014 */ lw $v0, 0X14($v1) /* 010914 0x800B0548 8C620014 */ lw $v0, 0X14($v1)
/* 010915 0x800B054C 0C040B22 */ jal func_80102C88 /* 010915 0x800B054C 0C040B22 */ jal zelda_mallocR
/* 010916 0x800B0550 AFA30028 */ sw $v1, 0X28($sp) /* 010916 0x800B0550 AFA30028 */ sw $v1, 0X28($sp)
/* 010917 0x800B0554 8FA30028 */ lw $v1, 0X28($sp) /* 010917 0x800B0554 8FA30028 */ lw $v1, 0X28($sp)
/* 010918 0x800B0558 10400044 */ beqz $v0, .L_800B066C /* 010918 0x800B0558 10400044 */ beqz $v0, .L_800B066C
@ -350,7 +350,7 @@ glabel effect_ss_load_particle
/* 010922 0x800B0568 8C660008 */ lw $a2, 0X8($v1) /* 010922 0x800B0568 8C660008 */ lw $a2, 0X8($v1)
/* 010923 0x800B056C 8C67000C */ lw $a3, 0XC($v1) /* 010923 0x800B056C 8C67000C */ lw $a3, 0XC($v1)
/* 010924 0x800B0570 AFA30028 */ sw $v1, 0X28($sp) /* 010924 0x800B0570 AFA30028 */ sw $v1, 0X28($sp)
/* 010925 0x800B0574 0C021407 */ jal func_8008501C /* 010925 0x800B0574 0C021407 */ jal load_and_relocate_overlay
/* 010926 0x800B0578 AFA20010 */ sw $v0, 0X10($sp) /* 010926 0x800B0578 AFA20010 */ sw $v0, 0X10($sp)
/* 010927 0x800B057C 8FA30028 */ lw $v1, 0X28($sp) /* 010927 0x800B057C 8FA30028 */ lw $v1, 0X28($sp)
/* 010928 0x800B0580 8C620014 */ lw $v0, 0X14($v1) /* 010928 0x800B0580 8C620014 */ lw $v0, 0X14($v1)
@ -375,7 +375,7 @@ glabel effect_ss_load_particle
/* 010944 0x800B05C0 01394823 */ subu $t1, $t1, $t9 /* 010944 0x800B05C0 01394823 */ subu $t1, $t1, $t9
/* 010945 0x800B05C4 00094940 */ sll $t1, $t1, 5 /* 010945 0x800B05C4 00094940 */ sll $t1, $t1, 5
/* 010946 0x800B05C8 AFA20030 */ sw $v0, 0X30($sp) /* 010946 0x800B05C8 AFA20030 */ sw $v0, 0X30($sp)
/* 010947 0x800B05CC 0C02C084 */ jal effect_ss_delete /* 010947 0x800B05CC 0C02C084 */ jal EffectSS_Delete
/* 010948 0x800B05D0 012A2021 */ addu $a0, $t1, $t2 /* 010948 0x800B05D0 012A2021 */ addu $a0, $t1, $t2
/* 010949 0x800B05D4 8FAD003C */ lw $t5, 0X3C($sp) /* 010949 0x800B05D4 8FAD003C */ lw $t5, 0X3C($sp)
/* 010950 0x800B05D8 24030060 */ li $v1, 96 /* 010950 0x800B05D8 24030060 */ li $v1, 96
@ -413,7 +413,7 @@ glabel effect_ss_load_particle
/* 010982 0x800B0658 01E30019 */ multu $t7, $v1 /* 010982 0x800B0658 01E30019 */ multu $t7, $v1
/* 010983 0x800B065C 00004812 */ mflo $t1 /* 010983 0x800B065C 00004812 */ mflo $t1
/* 010984 0x800B0660 012A2021 */ addu $a0, $t1, $t2 /* 010984 0x800B0660 012A2021 */ addu $a0, $t1, $t2
/* 010985 0x800B0664 0C02C09C */ jal effect_ss_reset_entry /* 010985 0x800B0664 0C02C09C */ jal EffectSS_ResetLoadedParticleEntry
/* 010986 0x800B0668 00000000 */ nop /* 010986 0x800B0668 00000000 */ nop
.L_800B066C: .L_800B066C:
/* 010987 0x800B066C 8FBF001C */ lw $ra, 0X1C($sp) /* 010987 0x800B066C 8FBF001C */ lw $ra, 0X1C($sp)
@ -427,7 +427,7 @@ glabel effect_ss_load_particle
// XXX regalloc is wrong // XXX regalloc is wrong
#ifdef NONMATCHING #ifdef NONMATCHING
void effect_ss_update_particle(z_GlobalContext* ctxt, u32 index) { void EffectSS_UpdateParticle(z_GlobalContext* ctxt, u32 index) {
z_LoadedParticleEntry* particle = &EffectSS2Info.data_table[index]; z_LoadedParticleEntry* particle = &EffectSS2Info.data_table[index];
if (particle->update != NULL) { if (particle->update != NULL) {
@ -446,7 +446,7 @@ void effect_ss_update_particle(z_GlobalContext* ctxt, u32 index) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel effect_ss_update_particle glabel EffectSS_UpdateParticle
/* 010991 0x800B067C 27BDFFE8 */ addiu $sp, $sp, -24 /* 010991 0x800B067C 27BDFFE8 */ addiu $sp, $sp, -24
/* 010992 0x800B0680 AFBF0014 */ sw $ra, 0X14($sp) /* 010992 0x800B0680 AFBF0014 */ sw $ra, 0X14($sp)
/* 010993 0x800B0684 3C0F801B */ lui $t7, %hi(EffectSS2Info) /* 010993 0x800B0684 3C0F801B */ lui $t7, %hi(EffectSS2Info)
@ -492,7 +492,7 @@ glabel effect_ss_update_particle
#endif #endif
void effect_ss_update_all_particles(z_GlobalContext* ctxt) { void EffectSS_UpdateAllParticles(z_GlobalContext* ctxt) {
s32 i; s32 i;
for (i = 0; i < EffectSS2Info.size; i++) { for (i = 0; i < EffectSS2Info.size; i++) {
@ -500,12 +500,12 @@ void effect_ss_update_all_particles(z_GlobalContext* ctxt) {
EffectSS2Info.data_table[i].life--; EffectSS2Info.data_table[i].life--;
if (EffectSS2Info.data_table[i].life < 0) { if (EffectSS2Info.data_table[i].life < 0) {
effect_ss_delete(&EffectSS2Info.data_table[i]); EffectSS_Delete(&EffectSS2Info.data_table[i]);
} }
} }
if (EffectSS2Info.data_table[i].life > -1) { if (EffectSS2Info.data_table[i].life > -1) {
effect_ss_update_particle(ctxt, i); EffectSS_UpdateParticle(ctxt, i);
} }
} }
} }
@ -513,7 +513,7 @@ void effect_ss_update_all_particles(z_GlobalContext* ctxt) {
// XXX regalloc is wrong // XXX regalloc is wrong
#ifdef NONMATCHING #ifdef NONMATCHING
void effect_ss_draw_particle(z_GlobalContext* ctxt, s32 index) { void EffectSS_DrawParticle(z_GlobalContext* ctxt, s32 index) {
z_LoadedParticleEntry* entry = &EffectSS2Info.data_table[index]; z_LoadedParticleEntry* entry = &EffectSS2Info.data_table[index];
if (entry->draw != 0) { if (entry->draw != 0) {
(*entry->draw)(ctxt); (*entry->draw)(ctxt);
@ -523,7 +523,7 @@ void effect_ss_draw_particle(z_GlobalContext* ctxt, s32 index) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel effect_ss_draw_particle glabel EffectSS_DrawParticle
/* 011078 0x800B07D8 27BDFFE8 */ addiu $sp, $sp, -24 /* 011078 0x800B07D8 27BDFFE8 */ addiu $sp, $sp, -24
/* 011079 0x800B07DC AFBF0014 */ sw $ra, 0X14($sp) /* 011079 0x800B07DC AFBF0014 */ sw $ra, 0X14($sp)
/* 011080 0x800B07E0 3C0F801B */ lui $t7, %hi(EffectSS2Info) /* 011080 0x800B07E0 3C0F801B */ lui $t7, %hi(EffectSS2Info)
@ -546,13 +546,13 @@ glabel effect_ss_draw_particle
#endif #endif
void effect_ss_draw_all_particles(z_GlobalContext* ctxt) { void EffectSS_DrawAllParticles(z_GlobalContext* ctxt) {
UNK_TYPE s0; UNK_TYPE s0;
s32 i; s32 i;
s0 = func_80102580(&ctxt->unk818, ctxt->unk0); s0 = Lights_CreateMapper(&ctxt->unk818, ctxt->unk0);
func_801022F0(s0, ctxt->unk818, 0, ctxt); Lights_MapLights(s0, ctxt->unk818, 0, ctxt);
func_80101BC8(s0, ctxt->unk0); Lights_UploadLights(s0, ctxt->unk0);
for (i = 0; i < EffectSS2Info.size; i++) { for (i = 0; i < EffectSS2Info.size; i++) {
if (EffectSS2Info.data_table[i].life > -1) { if (EffectSS2Info.data_table[i].life > -1) {
@ -563,9 +563,9 @@ void effect_ss_draw_all_particles(z_GlobalContext* ctxt) {
EffectSS2Info.data_table[i].position.z > 32000 || EffectSS2Info.data_table[i].position.z > 32000 ||
EffectSS2Info.data_table[i].position.z < -32000 EffectSS2Info.data_table[i].position.z < -32000
) { ) {
effect_ss_delete(&EffectSS2Info.data_table[i]); EffectSS_Delete(&EffectSS2Info.data_table[i]);
} else { } else {
effect_ss_draw_particle(ctxt, i); EffectSS_DrawParticle(ctxt, i);
} }
} }
} }

View File

@ -5,7 +5,7 @@
extern float fabsf(float); extern float fabsf(float);
#pragma intrinsic (fabsf) #pragma intrinsic (fabsf)
void* func_800FEC90(void* dst, void* src, size_t n) { void* Lib_bcopy(void* dst, void* src, size_t n) {
_bcopy(src, dst, n); _bcopy(src, dst, n);
return dst; return dst;
@ -13,7 +13,7 @@ void* func_800FEC90(void* dst, void* src, size_t n) {
#ifdef NONMATCHING #ifdef NONMATCHING
void* func_800FECC0(u8* a0, u32 a1, u32 a2) { void* Lib_memset(u8* a0, u32 a1, u32 a2) {
u8* v0; u8* v0;
// XXX: realloc is messed up // XXX: realloc is messed up
@ -33,7 +33,7 @@ void* func_800FECC0(u8* a0, u32 a1, u32 a2) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_800FECC0 glabel Lib_memset
/* 091264 0x800FECC0 27BDFFE8 */ addiu $sp, $sp, -24 /* 091264 0x800FECC0 27BDFFE8 */ addiu $sp, $sp, -24
/* 091265 0x800FECC4 AFBF0014 */ sw $ra, 0X14($sp) /* 091265 0x800FECC4 AFBF0014 */ sw $ra, 0X14($sp)
/* 091266 0x800FECC8 AFA40018 */ sw $a0, 0X18($sp) /* 091266 0x800FECC8 AFA40018 */ sw $a0, 0X18($sp)
@ -76,15 +76,15 @@ glabel func_800FECC0
#endif #endif
f32 func_800FED44(s16 a0) { f32 Lib_cos(s16 a0) {
return coss(a0) * D_801DDA80; return coss(a0) * D_801DDA80;
} }
f32 func_800FED84(s16 a0) { f32 Lib_sin(s16 a0) {
return sins(a0) * D_801DDA84; return sins(a0) * D_801DDA84;
} }
s32 func_800FEDC4(s32 a0, s32 a1, s32 a2) { s32 Lib_StepTowardsGet_i(s32 a0, s32 a1, s32 a2) {
s32 v1; s32 v1;
if (a1 >= a0) { if (a1 >= a0) {
@ -101,17 +101,17 @@ s32 func_800FEDC4(s32 a0, s32 a1, s32 a2) {
return a1; return a1;
} }
UNK_RET func_800FEE08(u32* a0, u32 a1, u32 a2) { UNK_RET Lib_StepTowards_i(u32* a0, u32 a1, u32 a2) {
*a0 = func_800FEDC4(*a0, a1, a2); *a0 = Lib_StepTowardsGet_i(*a0, a1, a2);
} }
UNK_TYPE func_800FEE34(u32* a0, u32 a1, u32 a2) { UNK_TYPE Lib_StepTowardsCheck_i(u32* a0, u32 a1, u32 a2) {
func_800FEE08(a0, a1, a2); Lib_StepTowards_i(a0, a1, a2);
return a1 == *a0; return a1 == *a0;
} }
UNK_TYPE func_800FEE70(s16* a0, s16 a1, s16 a2) { UNK_TYPE Lib_StepTowardsCheckFramerateScaled_s(s16* a0, s16 a1, s16 a2) {
f32 f0; f32 f0;
if (a2 != 0) { if (a2 != 0) {
@ -135,7 +135,7 @@ UNK_TYPE func_800FEE70(s16* a0, s16 a1, s16 a2) {
return 0; return 0;
} }
UNK_TYPE func_800FEF2C(s16* a0, s16 a1, s16 a2) { UNK_TYPE Lib_StepTowardsCheck_s(s16* a0, s16 a1, s16 a2) {
if (a2 != 0) { if (a2 != 0) {
if (a1 < *a0) { if (a1 < *a0) {
a2 = -a2; a2 = -a2;
@ -155,7 +155,7 @@ UNK_TYPE func_800FEF2C(s16* a0, s16 a1, s16 a2) {
return 0; return 0;
} }
UNK_TYPE func_800FEFB4(s8* a0, s8 a1, s8 a2) { UNK_TYPE Lib_StepTowardsCheck_c(s8* a0, s8 a1, s8 a2) {
if (a2 != 0) { if (a2 != 0) {
if (a1 < *a0) { if (a1 < *a0) {
a2 = -a2; a2 = -a2;
@ -177,7 +177,7 @@ UNK_TYPE func_800FEFB4(s8* a0, s8 a1, s8 a2) {
#ifdef NONMATCHING #ifdef NONMATCHING
UNK_TYPE func_800FF03C(f32* a0, f32 a1, f32 a2) { UNK_TYPE Lib_StepTowardsCheck_f(f32* a0, f32 a1, f32 a2) {
if (a2 != 0) { if (a2 != 0) {
// XXX: regalloc is messed up // XXX: regalloc is messed up
if (a1 < *a0) { if (a1 < *a0) {
@ -201,7 +201,7 @@ UNK_TYPE func_800FF03C(f32* a0, f32 a1, f32 a2) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_800FF03C glabel Lib_StepTowardsCheck_f
/* 091487 0x800FF03C 44857000 */ mtc1 $a1, $f14 /* 091487 0x800FF03C 44857000 */ mtc1 $a1, $f14
/* 091488 0x800FF040 44866000 */ mtc1 $a2, $f12 /* 091488 0x800FF040 44866000 */ mtc1 $a2, $f12
/* 091489 0x800FF044 44802000 */ mtc1 $zero, $f4 /* 091489 0x800FF044 44802000 */ mtc1 $zero, $f4
@ -568,7 +568,7 @@ glabel func_800FF3A0
/* 091735 0x800FF41C 44992000 */ mtc1 $t9, $f4 /* 091735 0x800FF41C 44992000 */ mtc1 $t9, $f4
/* 091736 0x800FF420 468090A0 */ cvt.s.w $f2, $f18 /* 091736 0x800FF420 468090A0 */ cvt.s.w $f2, $f18
/* 091737 0x800FF424 46802320 */ cvt.s.w $f12, $f4 /* 091737 0x800FF424 46802320 */ cvt.s.w $f12, $f4
/* 091738 0x800FF428 0C060040 */ jal func_80180100 /* 091738 0x800FF428 0C060040 */ jal atans_flip
/* 091739 0x800FF42C 46001387 */ neg.s $f14, $f2 /* 091739 0x800FF42C 46001387 */ neg.s $f14, $f2
/* 091740 0x800FF430 8FA5001C */ lw $a1, 0X1C($sp) /* 091740 0x800FF430 8FA5001C */ lw $a1, 0X1C($sp)
/* 091741 0x800FF434 10000002 */ b .L_800FF440 /* 091741 0x800FF434 10000002 */ b .L_800FF440
@ -583,15 +583,15 @@ glabel func_800FF3A0
#endif #endif
s16 func_800FF450(s16 a0, s16 a1) { s16 Lib_rand_s(s16 a0, s16 a1) {
return (s16)(func_80086FDC() * a1) + a0; return (s16)(randZeroOne() * a1) + a0;
} }
s16 func_800FF4A4(s16 a0, s16 a1, s16 a2) { s16 Lib_randStride_s(s16 a0, s16 a1, s16 a2) {
return (s16)(func_80086FDC() * a2) * a1 + a0; return (s16)(randZeroOne() * a2) * a1 + a0;
} }
UNK_RET func_800FF50C(z_Vector3D* dst, z_Vector3D* src) { UNK_RET Lib_CopyVec3f(z_Vector3D* dst, z_Vector3D* src) {
f32 x = src->x; f32 x = src->x;
f32 y = src->y; f32 y = src->y;
f32 z = src->z; f32 z = src->z;
@ -601,7 +601,7 @@ UNK_RET func_800FF50C(z_Vector3D* dst, z_Vector3D* src) {
dst->z = z; dst->z = z;
} }
UNK_RET func_800FF52C(z_Vector3Ds16* dst, z_Vector3Ds16* src) { UNK_RET Lib_CopyVec3s(z_Vector3Ds16* dst, z_Vector3Ds16* src) {
s16 x = src->x; s16 x = src->x;
s16 y = src->y; s16 y = src->y;
s16 z = src->z; s16 z = src->z;
@ -611,7 +611,7 @@ UNK_RET func_800FF52C(z_Vector3Ds16* dst, z_Vector3Ds16* src) {
dst->z = z; dst->z = z;
} }
UNK_RET func_800FF54C(z_Vector3D* dst, z_Vector3Ds16* src) { UNK_RET Lib_ToVec3f(z_Vector3D* dst, z_Vector3Ds16* src) {
f32 x = src->x; f32 x = src->x;
f32 y = src->y; f32 y = src->y;
f32 z = src->z; f32 z = src->z;
@ -621,7 +621,7 @@ UNK_RET func_800FF54C(z_Vector3D* dst, z_Vector3Ds16* src) {
dst->z = z; dst->z = z;
} }
UNK_RET func_800FF584(z_Vector3Ds16* dst, z_Vector3D* src) { UNK_RET Lib_ToVec3s(z_Vector3Ds16* dst, z_Vector3D* src) {
f32 x = src->x; f32 x = src->x;
f32 y = src->y; f32 y = src->y;
f32 z = src->z; f32 z = src->z;
@ -631,56 +631,56 @@ UNK_RET func_800FF584(z_Vector3Ds16* dst, z_Vector3D* src) {
dst->z = z; dst->z = z;
} }
UNK_RET func_800FF5BC(z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2) { UNK_RET Lib_AddVec3f(z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2) {
a2->x = a0->x + a1->x; a2->x = a0->x + a1->x;
a2->y = a0->y + a1->y; a2->y = a0->y + a1->y;
a2->z = a0->z + a1->z; a2->z = a0->z + a1->z;
} }
UNK_RET func_800FF5F4(z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2) { UNK_RET Lib_SubVec3f(z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2) {
a2->x = a0->x - a1->x; a2->x = a0->x - a1->x;
a2->y = a0->y - a1->y; a2->y = a0->y - a1->y;
a2->z = a0->z - a1->z; a2->z = a0->z - a1->z;
} }
UNK_RET func_800FF62C(z_Vector3D* a0, z_Vector3Ds16* a1, z_Vector3Ds16* a2) { UNK_RET Lib_SubVec3sToVec3f(z_Vector3D* a0, z_Vector3Ds16* a1, z_Vector3Ds16* a2) {
a0->x = a1->x - a2->x; a0->x = a1->x - a2->x;
a0->y = a1->y - a2->y; a0->y = a1->y - a2->y;
a0->z = a1->z - a2->z; a0->z = a1->z - a2->z;
} }
UNK_RET func_800FF688(z_Vector3D* a0, f32 a1) { UNK_RET Lib_ScaleInPlaceVec3f(z_Vector3D* a0, f32 a1) {
a0->x *= a1; a0->x *= a1;
a0->y *= a1; a0->y *= a1;
a0->z *= a1; a0->z *= a1;
} }
UNK_RET func_800FF6C4(z_Vector3D* a0, f32 a1, z_Vector3D* a2) { UNK_RET Lib_ScaleVec3f(z_Vector3D* a0, f32 a1, z_Vector3D* a2) {
a2->x = a0->x * a1; a2->x = a0->x * a1;
a2->y = a0->y * a1; a2->y = a0->y * a1;
a2->z = a0->z * a1; a2->z = a0->z * a1;
} }
UNK_RET func_800FF6F8(z_Vector3D* a0, z_Vector3D* a1, f32 a2, z_Vector3D* a3) { UNK_RET Lib_LerpVec3f(z_Vector3D* a0, z_Vector3D* a1, f32 a2, z_Vector3D* a3) {
a3->x = (a1->x - a0->x) * a2 + a0->x; a3->x = (a1->x - a0->x) * a2 + a0->x;
a3->y = (a1->y - a0->y) * a2 + a0->y; a3->y = (a1->y - a0->y) * a2 + a0->y;
a3->z = (a1->z - a0->z) * a2 + a0->z; a3->z = (a1->z - a0->z) * a2 + a0->z;
} }
UNK_RET func_800FF750(z_Vector3D* a0, z_Vector3D* a1, f32 a2, z_Vector3D* a3) { UNK_RET Lib_AddScaledVec3f(z_Vector3D* a0, z_Vector3D* a1, f32 a2, z_Vector3D* a3) {
a3->x = a1->x * a2 + a0->x; a3->x = a1->x * a2 + a0->x;
a3->y = a1->y * a2 + a0->y; a3->y = a1->y * a2 + a0->y;
a3->z = a1->z * a2 + a0->z; a3->z = a1->z * a2 + a0->z;
} }
UNK_RET func_800FF79C(z_Vector3D* a0, f32 a1, z_Vector3D* a2) { UNK_RET Lib_ModifyRandScaled(z_Vector3D* a0, f32 a1, z_Vector3D* a2) {
a2->x = func_801795C0(a1) + a0->x; a2->x = randPlusMinusPoint5Scaled(a1) + a0->x;
a2->y = func_801795C0(a1) + a0->y; a2->y = randPlusMinusPoint5Scaled(a1) + a0->y;
a2->z = func_801795C0(a1) + a0->z; a2->z = randPlusMinusPoint5Scaled(a1) + a0->z;
} }
void func_800FF810(z_Vector3D* a0, z_Vector3D* a1, f32 a2, z_Vector3D* a3) { void Lib_ScaledNormalizedDifferenceVec3f(z_Vector3D* a0, z_Vector3D* a1, f32 a2, z_Vector3D* a3) {
f32 f0 = func_800FF8D4(a0, a1, a3); f32 f0 = Lib_DistanceAndDifferenceVec3f(a0, a1, a3);
f32 f2; f32 f2;
if (f0 == 0) { if (f0 == 0) {
@ -694,24 +694,24 @@ void func_800FF810(z_Vector3D* a0, z_Vector3D* a1, f32 a2, z_Vector3D* a3) {
a3->z *= f2; a3->z *= f2;
} }
f32 func_800FF884(z_Vector3D* a0, z_Vector3D* a1) { f32 Lib_DistanceVec3f(z_Vector3D* a0, z_Vector3D* a1) {
z_Vector3D sp1C; z_Vector3D sp1C;
func_800FF5F4(a1, a0, &sp1C); Lib_SubVec3f(a1, a0, &sp1C);
return sqrtf((sp1C.x * sp1C.x) + (sp1C.y * sp1C.y) + (sp1C.z * sp1C.z)); return sqrtf((sp1C.x * sp1C.x) + (sp1C.y * sp1C.y) + (sp1C.z * sp1C.z));
} }
f32 func_800FF8D4(z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2) { f32 Lib_DistanceAndDifferenceVec3f(z_Vector3D* a0, z_Vector3D* a1, z_Vector3D* a2) {
func_800FF5F4(a1, a0, a2); Lib_SubVec3f(a1, a0, a2);
return sqrtf((a2->x * a2->x) + (a2->y * a2->y) + (a2->z * a2->z)); return sqrtf((a2->x * a2->x) + (a2->y * a2->y) + (a2->z * a2->z));
} }
f32 func_800FF92C(z_Vector3D* a0, z_Vector3D* a1) { f32 Lib_DistanceXZVec3f(z_Vector3D* a0, z_Vector3D* a1) {
f32 dx = a1->x - a0->x; f32 dx = a1->x - a0->x;
f32 dz = a1->z - a0->z; f32 dz = a1->z - a0->z;
return sqrtf((dx * dx) + (dz * dz)); return sqrtf((dx * dx) + (dz * dz));
} }
f32 func_800FF960(z_Vector3D* a0, z_Vector3D* a1, f32* a2, f32* a3) { f32 Lib_DistanceAndDifferenceXZVec3f(z_Vector3D* a0, z_Vector3D* a1, f32* a2, f32* a3) {
*a2 = a1->x - a0->x; *a2 = a1->x - a0->x;
*a3 = a1->z - a0->z; *a3 = a1->z - a0->z;
return sqrtf((*a2 * *a2) + (*a3 * *a3)); return sqrtf((*a2 * *a2) + (*a3 * *a3));
@ -719,10 +719,10 @@ f32 func_800FF960(z_Vector3D* a0, z_Vector3D* a1, f32* a2, f32* a3) {
#ifdef NONMATCHING #ifdef NONMATCHING
UNK_RET func_800FF9A4(z_Vector3D* a0, z_Vector3D* a1, f32 a2) { UNK_RET Lib_PushAwayXZVec3f(z_Vector3D* a0, z_Vector3D* a1, f32 a2) {
f32 sp24; f32 sp24;
f32 sp20; f32 sp20;
f32 f0 = func_800FF960(a1, a0, &sp24, &sp20); f32 f0 = Lib_DistanceAndDifferenceXZVec3f(a1, a0, &sp24, &sp20);
f32 f2 = f0 - a2; f32 f2 = f0 - a2;
if ((f0 >= a2) && (f2 != 0)) { if ((f0 >= a2) && (f2 != 0)) {
@ -738,7 +738,7 @@ UNK_RET func_800FF9A4(z_Vector3D* a0, z_Vector3D* a1, f32 a2) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_800FF9A4 glabel Lib_PushAwayXZVec3f
/* 092089 0x800FF9A4 27BDFFD8 */ addiu $sp, $sp, -40 /* 092089 0x800FF9A4 27BDFFD8 */ addiu $sp, $sp, -40
/* 092090 0x800FF9A8 AFA5002C */ sw $a1, 0X2C($sp) /* 092090 0x800FF9A8 AFA5002C */ sw $a1, 0X2C($sp)
/* 092091 0x800FF9AC 00802825 */ move $a1, $a0 /* 092091 0x800FF9AC 00802825 */ move $a1, $a0
@ -748,7 +748,7 @@ glabel func_800FF9A4
/* 092095 0x800FF9BC 8FA4002C */ lw $a0, 0X2C($sp) /* 092095 0x800FF9BC 8FA4002C */ lw $a0, 0X2C($sp)
/* 092096 0x800FF9C0 27A60024 */ addiu $a2, $sp, 36 /* 092096 0x800FF9C0 27A60024 */ addiu $a2, $sp, 36
/* 092097 0x800FF9C4 27A70020 */ addiu $a3, $sp, 32 /* 092097 0x800FF9C4 27A70020 */ addiu $a3, $sp, 32
/* 092098 0x800FF9C8 0C03FE58 */ jal func_800FF960 /* 092098 0x800FF9C8 0C03FE58 */ jal Lib_DistanceAndDifferenceXZVec3f
/* 092099 0x800FF9CC AFA50028 */ sw $a1, 0X28($sp) /* 092099 0x800FF9CC AFA50028 */ sw $a1, 0X28($sp)
/* 092100 0x800FF9D0 C7A20030 */ lwc1 $f2, 0X30($sp) /* 092100 0x800FF9D0 C7A20030 */ lwc1 $f2, 0X30($sp)
/* 092101 0x800FF9D4 44807000 */ mtc1 $zero, $f14 /* 092101 0x800FF9D4 44807000 */ mtc1 $zero, $f14
@ -787,59 +787,59 @@ glabel func_800FF9A4
#endif #endif
f32 func_800FFA4C(z_Vector3D* a0, z_Vector3D* a1) { f32 Lib_DistanceYVec3f(z_Vector3D* a0, z_Vector3D* a1) {
return a1->y - a0->y; return a1->y - a0->y;
} }
UNK_TYPE func_800FFA60(z_Vector3D* a0, z_Vector3D* a1) { UNK_TYPE Lib_YawVec3f(z_Vector3D* a0, z_Vector3D* a1) {
f32 f14 = a1->x - a0->x; f32 f14 = a1->x - a0->x;
f32 f12 = a1->z - a0->z; f32 f12 = a1->z - a0->z;
return func_80180100(f12, f14); return atans_flip(f12, f14);
} }
UNK_TYPE func_800FFA94(z_Vector3D* a0, z_Vector3D* a1) { UNK_TYPE Lib_PitchVec3f(z_Vector3D* a0, z_Vector3D* a1) {
return func_80180100(func_800FF92C(a0, a1), a0->y - a1->y); return atans_flip(Lib_DistanceXZVec3f(a0, a1), a0->y - a1->y);
} }
void func_800FFADC(z_Actor* a0, z_ActorCompInitEntry* a1) { void Lib_ApplyActorInitVars(z_Actor* a0, z_ActorCompInitEntry* a1) {
do { do {
D_801BE960[a1->type]((u8*)a0, a1); D_801BE960[a1->type]((u8*)a0, a1);
} while ((a1++)->cont); } while ((a1++)->cont);
} }
UNK_RET func_800FFB54(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarByte1(u8* a0, z_ActorCompInitEntry* a1) {
*(u8*)(a0 + a1->offset) = (u8)(a1->value); *(u8*)(a0 + a1->offset) = (u8)(a1->value);
} }
UNK_RET func_800FFB70(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarByte2(u8* a0, z_ActorCompInitEntry* a1) {
*(u8*)(a0 + a1->offset) = (u8)(a1->value); *(u8*)(a0 + a1->offset) = (u8)(a1->value);
} }
UNK_RET func_800FFB8C(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarShort1(u8* a0, z_ActorCompInitEntry* a1) {
*(u16*)(a0 + a1->offset) = (u16)(a1->value); *(u16*)(a0 + a1->offset) = (u16)(a1->value);
} }
UNK_RET func_800FFBA8(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarShort2(u8* a0, z_ActorCompInitEntry* a1) {
*(u16*)(a0 + a1->offset) = (u16)(a1->value); *(u16*)(a0 + a1->offset) = (u16)(a1->value);
} }
UNK_RET func_800FFBC4(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarWord1(u8* a0, z_ActorCompInitEntry* a1) {
*(u32*)(a0 + a1->offset) = (u32)(a1->value); *(u32*)(a0 + a1->offset) = (u32)(a1->value);
} }
UNK_RET func_800FFBE0(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarWord2(u8* a0, z_ActorCompInitEntry* a1) {
*(u32*)(a0 + a1->offset) = (u32)(a1->value); *(u32*)(a0 + a1->offset) = (u32)(a1->value);
} }
UNK_RET func_800FFBFC(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarFloat(u8* a0, z_ActorCompInitEntry* a1) {
*(f32*)(a0 + a1->offset) = (f32)(a1->value); *(f32*)(a0 + a1->offset) = (f32)(a1->value);
} }
UNK_RET func_800FFC20(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarFloat1000th(u8* a0, z_ActorCompInitEntry* a1) {
*(f32*)(a0 + a1->offset) = (f32)(a1->value) / 1000; *(f32*)(a0 + a1->offset) = (f32)(a1->value) / 1000;
} }
UNK_RET func_800FFC50(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarVector3f(u8* a0, z_ActorCompInitEntry* a1) {
z_Vector3D* v0 = (z_Vector3D*)(a0 + a1->offset); z_Vector3D* v0 = (z_Vector3D*)(a0 + a1->offset);
f32 f0 = (f32)(a1->value); f32 f0 = (f32)(a1->value);
@ -848,7 +848,7 @@ UNK_RET func_800FFC50(u8* a0, z_ActorCompInitEntry* a1) {
v0->x = f0; v0->x = f0;
} }
UNK_RET func_800FFC7C(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarVector3f1000th(u8* a0, z_ActorCompInitEntry* a1) {
z_Vector3D* v0 = (z_Vector3D*)(a0 + a1->offset); z_Vector3D* v0 = (z_Vector3D*)(a0 + a1->offset);
f32 f0 = (f32)(a1->value) / 1000; f32 f0 = (f32)(a1->value) / 1000;
@ -857,7 +857,7 @@ UNK_RET func_800FFC7C(u8* a0, z_ActorCompInitEntry* a1) {
v0->x = f0; v0->x = f0;
} }
UNK_RET func_800FFCB4(u8* a0, z_ActorCompInitEntry* a1) { UNK_RET Lib_ApplyActorInitVarVector3s(u8* a0, z_ActorCompInitEntry* a1) {
z_Vector3Ds16* v0 = (z_Vector3Ds16*)(a0 + a1->offset); z_Vector3Ds16* v0 = (z_Vector3Ds16*)(a0 + a1->offset);
s16 v1 = (s16)(a1->value); s16 v1 = (s16)(a1->value);
@ -906,7 +906,7 @@ f32 func_800FFCD8(f32* a0, f32 a1, f32 a2, f32 a3, f32 a4) {
return fabsf(a1 - *a0); return fabsf(a1 - *a0);
} }
UNK_RET func_800FFDF8(f32* a0, f32 a1, f32 a2, f32 a3) { UNK_RET Lib_ScaleMax_f(f32* a0, f32 a1, f32 a2, f32 a3) {
f32 f2; f32 f2;
if (*a0 != a1) { if (*a0 != a1) {
@ -922,7 +922,7 @@ UNK_RET func_800FFDF8(f32* a0, f32 a1, f32 a2, f32 a3) {
} }
} }
void func_800FFE68(f32* a0, f32 a1, f32 a2) { void Lib_Scale_f(f32* a0, f32 a1, f32 a2) {
f32 f0 = *a0 * a1; f32 f0 = *a0 * a1;
if (a2 < f0) { if (a2 < f0) {
@ -936,14 +936,14 @@ void func_800FFE68(f32* a0, f32 a1, f32 a2) {
#ifdef NONMATCHING #ifdef NONMATCHING
s16 func_800FFEBC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4) { s16 Lib_ScaleMaxMin_s(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4) {
} }
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_800FFEBC glabel Lib_ScaleMaxMin_s
/* 092415 0x800FFEBC AFA50004 */ sw $a1, 0X4($sp) /* 092415 0x800FFEBC AFA50004 */ sw $a1, 0X4($sp)
/* 092416 0x800FFEC0 AFA60008 */ sw $a2, 0X8($sp) /* 092416 0x800FFEC0 AFA60008 */ sw $a2, 0X8($sp)
/* 092417 0x800FFEC4 00063400 */ sll $a2, $a2, 16 /* 092417 0x800FFEC4 00063400 */ sll $a2, $a2, 16
@ -1028,7 +1028,7 @@ glabel func_800FFEBC
#endif #endif
void func_800FFFD8(s16* a0, s16 a1, s16 a2, s16 a3) { void Lib_ScaleMax_s(s16* a0, s16 a1, s16 a2, s16 a3) {
s16 v0 = a1 - *a0; s16 v0 = a1 - *a0;
v0 /= a2; v0 /= a2;
@ -1045,7 +1045,7 @@ void func_800FFFD8(s16* a0, s16 a1, s16 a2, s16 a3) {
*a0 += v0; *a0 += v0;
} }
UNK_RET func_8010007C(u8* a0, u8* a1) { UNK_RET Lib_CopyColor(u8* a0, u8* a1) {
a0[0] = a1[0]; a0[0] = a1[0];
a0[1] = a1[1]; a0[1] = a1[1];
a0[2] = a1[2]; a0[2] = a1[2];
@ -1064,12 +1064,12 @@ UNK_RET func_801000F4(UNK_TYPE a0, u16 a1) {
func_8019F1C0(a0, a1); func_8019F1C0(a0, a1);
} }
void func_8010011C(z_Vector3D* a0, s16 a1, z_Vector3D* a2, z_Vector3D* a3) { void Lib_TranslateAndRotateYVec3f(z_Vector3D* a0, s16 a1, z_Vector3D* a2, z_Vector3D* a3) {
f32 sp1C; f32 sp1C;
f32 f0; f32 f0;
sp1C = func_800FED44(a1); sp1C = Lib_cos(a1);
f0 = func_800FED84(a1); f0 = Lib_sin(a1);
a3->x = a0->x + (a2->x * sp1C + a2->z * f0); a3->x = a0->x + (a2->x * sp1C + a2->z * f0);
a3->y = a0->y + a2->y; a3->y = a0->y + a2->y;
a3->z = a0->z + (a2->z * sp1C - a2->x * f0); a3->z = a0->z + (a2->z * sp1C - a2->x * f0);
@ -1077,7 +1077,7 @@ void func_8010011C(z_Vector3D* a0, s16 a1, z_Vector3D* a2, z_Vector3D* a3) {
#ifdef NONMATCHING #ifdef NONMATCHING
void func_801001B8(u8* a0, u8* a1, f32 a2, u8* a3) { void Lib_LerpRGB(u8* a0, u8* a1, f32 a2, u8* a3) {
// XXX regalloc is slightly off // XXX regalloc is slightly off
a3[0] = (f32)a0[0] + ((f32)a1[0] - (f32)a0[0]) * a2; a3[0] = (f32)a0[0] + ((f32)a1[0] - (f32)a0[0]) * a2;
a3[1] = (f32)a0[1] + ((f32)a1[1] - (f32)a0[1]) * a2; a3[1] = (f32)a0[1] + ((f32)a1[1] - (f32)a0[1]) * a2;
@ -1087,7 +1087,7 @@ void func_801001B8(u8* a0, u8* a1, f32 a2, u8* a3) {
#else #else
GLOBAL_ASM( GLOBAL_ASM(
glabel func_801001B8 glabel Lib_LerpRGB
/* 092606 0x801001B8 44866000 */ mtc1 $a2, $f12 /* 092606 0x801001B8 44866000 */ mtc1 $a2, $f12
/* 092607 0x801001BC 00000000 */ nop /* 092607 0x801001BC 00000000 */ nop
/* 092608 0x801001C0 908E0000 */ lbu $t6, 0X0($a0) /* 092608 0x801001C0 908E0000 */ lbu $t6, 0X0($a0)
@ -1271,13 +1271,13 @@ glabel func_801001B8
#endif #endif
f32 func_80100448(z_Vector3D* a0, z_Vector3D* a1, f32 a2) { f32 Lib_PushAwayVec3f(z_Vector3D* a0, z_Vector3D* a1, f32 a2) {
z_Vector3D sp24; z_Vector3D sp24;
f32 f2; f32 f2;
f32 f0; f32 f0;
func_800FF5F4(a1, a0, &sp24); Lib_SubVec3f(a1, a0, &sp24);
f0 = func_8017A6D4(&sp24); f0 = Math3D_Length(&sp24);
if (a2 < f0) { if (a2 < f0) {
f2 = a2 / f0; f2 = a2 / f0;
f0 = f0 - a2; f0 = f0 - a2;
@ -1285,20 +1285,20 @@ f32 func_80100448(z_Vector3D* a0, z_Vector3D* a1, f32 a2) {
a0->y = a0->y + f2 * sp24.y; a0->y = a0->y + f2 * sp24.y;
a0->z = a0->z + f2 * sp24.z; a0->z = a0->z + f2 * sp24.z;
} else { } else {
func_800FF50C(a0, a1); Lib_CopyVec3f(a0, a1);
f0 = 0; f0 = 0;
} }
return f0; return f0;
} }
void func_801004FC(void) {} void Lib_Nop801004FC(void) {}
UNK_TYPE func_80100504(u32 a0) { UNK_TYPE Lib_PtrSegToPhys(u32 a0) {
return(D_801F8180[(a0 << 4) >> 28] + (a0 & 0xFFFFFF)) + 0x80000000; return(D_801F8180[(a0 << 4) >> 28] + (a0 & 0xFFFFFF)) + 0x80000000;
} }
UNK_TYPE func_8010053C(u32 a0) { UNK_TYPE Lib_PtrSegToPhysNull(u32 a0) {
if ((a0 >> 28) == 0) { if ((a0 >> 28) == 0) {
return a0; return a0;
} }
@ -1306,7 +1306,7 @@ UNK_TYPE func_8010053C(u32 a0) {
return(D_801F8180[(a0 << 4) >> 28] + (a0 & 0xFFFFFF)) + 0x80000000; return(D_801F8180[(a0 << 4) >> 28] + (a0 & 0xFFFFFF)) + 0x80000000;
} }
UNK_TYPE func_80100584(UNK_TYPE a0) { UNK_TYPE Lib_PtrSegToK0(UNK_TYPE a0) {
if (a0 == 0) { if (a0 == 0) {
return 0; return 0;
} else { } else {
@ -1314,7 +1314,7 @@ UNK_TYPE func_80100584(UNK_TYPE a0) {
} }
} }
UNK_TYPE func_801005A0(UNK_TYPE a0) { UNK_TYPE Lib_PtrSegToK0Null(UNK_TYPE a0) {
if (a0 == 0) { if (a0 == 0) {
return 0; return 0;
} else { } else {

73
src/test.old Normal file
View File

@ -0,0 +1,73 @@
#include <ultra64.h>
#include <global.h>
void func_80174BF0(void* a0) {
u32 s0;
s16* sp38;
s16 v0;
D_801D1520 = 320;
D_801D1524 = 240;
func_8010C0C0();
func_80083BC4();
func_801792A4();
func_80179260();
D_801D1528 = 0x80780000 - (u32)&D_803824C0;
func_800865F8((u32)&D_803824C0, D_801D1528);
func_800E93E0();
staticContext->unkD4 = 0;
osCreateMesgQueue(&D_801F8160, D_801F8178, 1);
osSetEventMesg(5, &D_801F8160, NULL);
osCreateMesgQueue(&D_801F8500, D_801F8518, 60);
func_80085320(&D_801FB2D8, &D_801F9FB8, &D_801FA5B8_, 0, 256, &D_801DFD70);
func_801772A0(&D_801F81C0, &D_801FA5B8, 16, D_8009B290, 1, &D_80099EF0);
func_8008189C();
func_80081250(&D_80099EF0, &D_801F84F8, &D_801F8500);
func_80085320(&D_801FB2F8, &D_801FA5B8, &D_801FADB8_, 0, 256, &D_801DFD78);
func_80173074(&D_801FB338, &D_801FADB8, 11, 10, &D_801F81C0, &D_80099EF0);
func_80085320(&D_801FB318, &D_801FADB8, &D_801FB2B8_, 0, 256, &D_801DFD80);
func_80176194(&D_801F8160, &D_80099EF0, 7, 15, &D_801FADB8);
func_80173048(&D_801FB338);
func_80085320(&D_801FB2B8, &D_801F87B8, &D_801F9FB8_, 0, 256, &D_801DFD88);
osCreateThread(&D_801F8608, 4, (void (*)(void*))func_801748A0, a0, &D_801F9FB8_, 9);
osStartThread(&D_801F8608);
s0 = 0;
while (s0 == 0) {
sp38 = NULL;
osRecvMesg(&D_801F8500, (OSMesg*)&sp38, 1);
if (sp38 == NULL) break;
v0 = *sp38;
if (v0 == 3) {
s0 = 1;
} else if (v0 == 4) {
func_8010C164();
}
}
func_800812DC(&D_80099EF0, &D_801F84F8);
osDestroyThread(&D_801F8608);
}

View File

@ -5031,7 +5031,7 @@ D_801F3F38 = 0x801F3F38;
D_801F3F3A = 0x801F3F3A; D_801F3F3A = 0x801F3F3A;
D_801F3F3B = 0x801F3F3B; D_801F3F3B = 0x801F3F3B;
D_801F3F3C = 0x801F3F3C; D_801F3F3C = 0x801F3F3C;
D_801F3F60 = 0x801F3F60; staticContext = 0x801F3F60;
D_801F3F70 = 0x801F3F70; D_801F3F70 = 0x801F3F70;
D_801F3F80 = 0x801F3F80; D_801F3F80 = 0x801F3F80;
D_801F3F83 = 0x801F3F83; D_801F3F83 = 0x801F3F83;
@ -5605,6 +5605,7 @@ D_80208EA0 = 0x80208EA0;
D_80209AA0 = 0x80209AA0; D_80209AA0 = 0x80209AA0;
D_80209EA0 = 0x80209EA0; D_80209EA0 = 0x80209EA0;
D_8024A4C0 = 0x8024A4C0; D_8024A4C0 = 0x8024A4C0;
D_803824C0 = 0x803824C0;
D_80780000 = 0x80780000; D_80780000 = 0x80780000;
D_80784600 = 0x80784600; D_80784600 = 0x80784600;
D_807DA800 = 0x807DA800; D_807DA800 = 0x807DA800;