1
0
mirror of https://github.com/blawar/ooot.git synced 2024-07-04 18:13:37 +00:00
ooot/include/functions.h
2020-03-20 08:48:38 +11:00

2389 lines
83 KiB
C

#ifndef _FUNCTIONS_H_
#define _FUNCTIONS_H_
#include <z64.h>
float fabsf(float f);
#pragma intrinsic(fabsf)
float sqrtf(float f);
#pragma intrinsic(sqrtf)
void cleararena(void);
void bootproc(void);
void Main_ThreadEntry(void* arg0);
void Idle_ThreadEntry(void* a0);
void ViConfig_UpdateVi(u32 arg0);
void ViConfig_UpdateBlack();
s32 DmaMgr_CompareName(const char* name1, const char* name2);
s32 DmaMgr_DMARomToRam(u32 rom, u32 ram, u32 size);
s32 DmaMgr_DmaCallback0(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction);
void DmaMgr_DmaCallback1(u32 ram, u32 rom, u32 size);
void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, const char* errorDesc);
const char* DmaMgr_GetFileNameImpl(u32 vrom);
const char* DmaMgr_GetFileName(u32 vrom);
void DmaMgr_ProcessMsg(DmaRequest* req);
void DmaMgr_ThreadEntry(void* arg0);
s32 DmaMgr_SendRequestImpl(DmaRequest* req, u32 ram, u32 vrom, u32 size, u32 unk, OSMesgQueue* queue, OSMesg msg);
s32 DmaMgr_SendRequest0(u32 ram, u32 vrom, u32 size);
void DmaMgr_Start();
s32 DmaMgr_SendRequest2(DmaRequest* req, u32 ram, u32 vrom, u32 size, u32 unk5, OSMesgQueue* queue, OSMesg msg, const char* file, s32 line);
s32 DmaMgr_SendRequest1(void* ram0, u32 vrom, u32 size, const char* file, s32 line);
void* Yaz0_FirstDMA();
void* Yaz0_NextDMA(void* curSrcPos);
void Yaz0_DecompressImpl(Yaz0Header* hdr, u8* dst);
void Yaz0_Decompress(u32 romStart, void* dst, u32 size);
void Locale_Init();
void Locale_ResetRegion();
u32 func_80001F48();
u32 func_80001F8C();
u32 Locale_IsRegionNative();
void __assert(const char* exp, const char* file, s32 line);
void isPrintfInit();
void osSyncPrintfUnused(const char* fmt, ...);
void osSyncPrintf(const char* fmt, ...);
void rmonPrintf(const char* fmt, ...);
u32 is_proutSyncPrintf(void* arg0, const char *str, s32 count);
void func_80002384(const char* exp, const char* file, u32 line);
OSPiHandle* osDriveRomInit();
void Yaz0_Old_DecompressImpl(Yaz0Header* hdr, u8* dst);
void StackCheck_Init(StackEntry* entry, void* stackTop, void* stackBottom, u32 initValue, s32 minSpace, const char* name);
void StackCheck_Cleanup(StackEntry* entry);
StackStatus StackCheck_GetState(StackEntry* entry);
u32 StackCheck_CheckAll();
u32 StackCheck_Check(StackEntry* entry);
float LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, float var1, const char* var2Name, float var2, const char* var3Name, float var3);
s32 LogUtils_CheckIntRange(const char* exp, s32 arg1, const char* var1Name, s32 var1, const char* var2Name, s32 var2, const char* var3Name, s32 var3);
void LogUtils_LogHexDump(void* ptr, s32 size0);
void LogUtils_LogPointer(s32 value, u32 max, void* ptr, const char *name, const char *file, s32 line);
void LogUtils_CheckBoundary(const char* name, s32 value, s32 unk, const char* file, s32 line);
void LogUtils_CheckNullPointer(const char* exp, void* ptr, const char* file, s32 line);
void LogUtils_CheckValidPointer(const char* exp, void* ptr0, const char* file, s32 line);
void LogUtils_LogThreadId(const char* name, s32 line);
void LogUtils_HungupThread(const char* name, s32 line);
void LogUtils_ResetHungup();
char* proutSprintf(char* dst, const char *fmt, size_t size);
s32 vsprintf(char* dst, const char* fmt, va_list args);
s32 sprintf(char* dst, const char* fmt, ...);
void __osPiCreateAccessQueue(void);
void __osPiGetAccess(void);
void __osPiRelAccess(void);
s32 osSendMesg(OSMesgQueue* mq, OSMesg mesg, s32 flag);
void osStopThread(OSThread* thread);
void osViExtendVStart(u32 arg0);
s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flag);
void __createSpeedParam(void);
void __osInitialize_common(void);
void __osInitialize_autodetect();
// ? __ull_rshift(?);
// ? __ull_rem(?);
// ? __ull_div(?);
// ? __ll_lshift(?);
// ? __ll_rem(?);
// ? __ll_div(?);
// ? __ll_mul(?);
// ? __ull_divremi(?);
// ? __ll_mod(?);
// ? __ll_rshift(?);
void __osExceptionPreamble();
// ? __osException(?);
void __osEnqueueAndYield(OSThread**);
void __osEnqueueThread(OSThread**, OSThread*);
OSThread *__osPopThread(OSThread**);
// ? __osNop(?);
void __osDispatchThread();
void __osCleanupThread(void);
void __osDequeueThread(OSThread **queue, OSThread *thread);
void osDestroyThread(OSThread *thread);
void bzero(void *__s, u32 __n);
void osCreateThread(OSThread* thread, OSId id, void (*entry)(void*), void* arg, void* sp, OSPri pri);
void __osSetSR(u32);
u32 __osGetSR();
void osWritebackDCache(void *vaddr, s32 nbytes);
void* osViGetNextFramebuffer();
void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgCnt);
void __osDevMgrMain(void* arg);
s32 __osPiRawStartDma(s32 dir, u32 cart_addr, void *dram_addr, size_t size);
u32 osVirtualToPhysical(void* vaddr);
void osViBlack(u8 active);
s32 __osSiRawReadIo(void *a0, u32 *a1);
OSId osGetThreadId(OSThread* thread);
OSIntMask osSetIntMask(OSIntMask);
void osViSetMode(OSViMode *mode);
u32 __osProbeTLB(void *);
u32 osGetMemSize(void);
void osSetEventMesg(OSEvent e, OSMesgQueue *mq, OSMesg msg);
s32 _Printf(char *(*pfn)(char *, const char *, size_t), char *arg, const char *fmt, va_list ap);
void osUnmapTLBAll(void);
s32 osEPiStartDma(OSPiHandle* handle, OSIoMesg* mb, s32 direction);
const u8 *strchr(const u8 *str, s32 ch);
size_t strlen(const u8 *str);
void *memcpy(void *dst, const void *src, size_t size);
void osInvalICache(void* vaddr, s32 nbytes);
void osCreateMesgQueue(OSMesgQueue* mq, OSMesg* msg, s32 count);
void osInvalDCache(void* vaddr, s32 nbytes);
u32 __osSiDeviceBusy();
void osSetThreadPri(OSThread* thread, OSPri pri);
OSPri osGetThreadPri(OSThread* thread);
s32 __osEPiRawReadIo(OSPiHandle *handle, u32 devAddr, u32 *data);
void osViSwapBuffer(void *vaddr);
s32 __osEPiRawStartDma(OSPiHandle *handle, s32 direction, u32 cartAddr, void* dramAddr, size_t size);
u32 bcmp(void *__sl,void *__s2,u32 __n);
OSTime osGetTime(void);
void __osTimerServicesInit();
void __osTimerInterrupt();
void __osSetTimerIntr(OSTime tim);
OSTime __osInsertTimer(OSTimer *a0);
u32 osGetCount(void);
void __osSetGlobalIntMask(u32 mask);
void __osSetCompare(u32);
void* bcopy(void *__src,void *__dest,u32 __n);
void __osResetGlobalIntMask(u32 mask);
s32 __osDisableInt(void);
void __osRestoreInt(s32);
void __osViInit();
void __osViSwapContext();
OSMesgQueue* osPiGetCmdQueue();
s32 osEPiReadIo(OSPiHandle* handle, u32 devAddr, u32* data);
void osViSetSpecialFeatures(u32 func);
OSPiHandle* osCartRomInit();
void __osSetFpcCsr(u32);
u32 __osGetFpcCsr();
s32 osEPiWriteIo(OSPiHandle* handle, u32 devAddr, u32 data);
void osMapTLBRdb(void);
u32 __osGetCause();
s32 __osEPiRawWriteIo(OSPiHandle *handle, u32 devAddr, u32 data);
void osCreateViManager(OSPri pri);
void viMgrMain(void *vargs);
OSViContext* __osViGetCurrentContext();
void osStartThread(OSThread* thread);
void osViSetYScale(float scale);
void osViSetXScale(f32 value);
void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg);
void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg);
void __osSetWatchLo(u32);
// ? func_80009320(?);
// ? func_800093F0(?);
// ? func_8001D234(?);
// ? func_8001D310(?);
// ? func_8001D480(?);
// ? func_8001D5C8(?);
Actor* Item_DropCollectible(GlobalContext* globalCtx, Vec3f* spawnPos, s16 params);
Actor* Item_DropCollectible2(GlobalContext* globalCtx, Vec3f* spawnPos, s16 params);
void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3f* spawnPos, s16 params);
// ? func_8001FDF0(?);
// ? func_80020184(?);
// ? func_800208E0(?);
// ? func_80020A50(?);
// ? func_80020F60(?);
// ? func_80020FC0(?);
// ? func_800214D0(?);
// ? func_80021F00(?);
// ? func_800224F4(?);
// ? func_80022A10(?);
// ? func_8002389C(?);
void func_80024F0C(UNK_TYPE);
void func_80026400(GlobalContext*, Color_RGBA8*, u8, s16);
// ? func_80026608(?);
void func_80026860(GlobalContext*, Color_RGBA8*, u8, s16);
// ? func_80026A6C(?);
GlobalContext* func_80026B00(void);
// ? func_80026B0C(?);
// ? func_80026C1C(?);
// ? func_80026C2C(?);
// ? Effect_Add(?);
// ? func_80026E74(?);
// ? func_80026F70(?);
// ? func_8002709C(?);
// ? func_800271A8(?);
// ? func_800272B0(?);
// ? func_80027410(?); Effect_SS_Clear
// ? func_800274E0(?); Effect_SS_Delete
void Effect_SS_ResetEntry(LoadedParticleEntry* particle);
// ? func_800275D0(?);
// ? func_80027798(?);
// ? func_80027A40(?);
// ? func_80027AE0(?);
// ? func_80027B98(?);
// ? func_80027BDC(?);
// ? func_80027E34(?);
// ? func_80027E84(?);
// ? func_800281E8(?);
// ? func_8002829C(?);
// ? func_80028304(?);
// ? func_8002857C(?);
// ? func_8002865C(?);
void func_800286CC(GlobalContext*, Vec3f*, Vec3f*, Vec3f*, s16, s16);
// ? func_8002873C(?);
// ? func_800287AC(?);
// ? func_80028894(?);
void func_80028B74(GlobalContext*, Vec3f*, UNK_PTR, UNK_PTR, Color_RGB8*, Color_RGB8*);
// ? func_80028BB0(?);
// ? func_80028EF4(?);
// ? func_80028FD8(?);
// ? func_80029060(?);
void Effect_SpawnFragment(GlobalContext* globalCtx, Vec3f* burstDepthY, Vec3f* burstDepthX, Vec3f* burstOrigin,
s16 gravityInfluence, s16 u0, s16 rotSpeed, s16 burstVel, u8 u1, s16 scale, u8 u2,
s16 jitter, s32 duration, s16 u3, s16 objNumber, u32 dList);
// ? func_800292DC(?);
// ? func_80029320(?);
// ? func_80029444(?);
// ? func_80029568(?);
// ? func_80029724(?);
// ? func_8002993C(?);
// ? func_800299AC(?);
// ? func_80029C50(?);
// ? func_80029CA4(?);
// ? func_80029F44(?);
// ? func_8002A32C(?);
// ? func_8002A3C4(?);
void func_8002A65C(GlobalContext* globalCtx, Actor* actor, Vec3f* pos, u32 arg3, u32 arg4);
void func_8002A6B8(GlobalContext* globalCtx, Vec3f* pos, Vec3f* arg2, Vec3f* arg3, u32 arg4, s32 arg5, u32 arg6, u32 arg7, u32 arg8, u32 arg9, u32 arg10, u32 arg11, u32 arg12, u32 arg13, u32 arg14, u32 arg15);
// ? func_8002A894(?);
// ? func_8002A95C(?);
// ? func_8002A9F4(?);
// ? func_8002AAB0(?);
void Overlay_LoadGameState(GameStateOverlay* overlayEntry);
void Overlay_FreeGameState(GameStateOverlay* overlayEntry);
void ActorShape_Init(ActorShape* shape, f32 arg1, void* shadowDrawFunc, f32 arg3);
void ActorShadow_DrawFunc_Circle(Actor* actor, LightMapper* lightMapper, GlobalContext* globalCtx);
void ActorShadow_DrawFunc_WhiteCircle(Actor* actor, LightMapper* lightMapper, GlobalContext* globalCtx);
void ActorShadow_DrawFunc_Squiggly(Actor* actor, LightMapper* lightMapper, GlobalContext* globalCtx);
void ActorShadow_DrawFunc_Teardrop(Actor* actor, LightMapper* lightMapper, GlobalContext* globalCtx);
void func_8002BDB0(Actor* actor, s32 arg1, s32 arg2, UNK_PTR arg3, s32 arg4, UNK_PTR arg5);
void func_8002C124(TargetContext* targetCtx, GlobalContext* globalCtx);
s32 Flags_GetSwitch(GlobalContext* globalCtx, s32 flag);
void Flags_SetSwitch(GlobalContext* globalCtx, s32 flag);
void Flags_UnsetSwitch(GlobalContext* globalCtx, s32 flag);
s32 Flags_GetUnknown(GlobalContext* globalCtx, s32 flag);
void Flags_SetUnknown(GlobalContext* globalCtx, s32 flag);
void Flags_UnsetUnknown(GlobalContext* globalCtx, s32 flag);
s32 Flags_GetTreasure(GlobalContext* globalCtx, s32 flag);
void Flags_SetTreasure(GlobalContext* globalCtx, s32 flag);
s32 Flags_GetClear(GlobalContext* globalCtx, s32 flag);
void Flags_SetClear(GlobalContext* globalCtx, s32 flag);
void Flags_UnsetClear(GlobalContext* globalCtx, s32 flag);
s32 Flags_GetTempClear(GlobalContext* globalCtx, s32 flag);
void Flags_SetTempClear(GlobalContext* globalCtx, s32 flag);
void Flags_UnsetTempClear(GlobalContext* globalCtx, s32 flag);
s32 Flags_GetCollectible(GlobalContext* globalCtx, s32 flag);
void Flags_SetCollectible(GlobalContext* globalCtx, s32 flag);
void TitleCard_InitBossName(GlobalContext* globalCtx, TitleCardContext* titleCtx, u32 texture,
s16 arg3, s16 arg4, u8 arg5, u8 arg6);
void TitleCard_InitPlaceName(GlobalContext* globalCtx, TitleCardContext* titleCtx, u32 texture,
s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7);
s32 func_8002D53C(GlobalContext* globalCtx, TitleCardContext* titleCtx);
void Actor_Kill(Actor* actor);
void Actor_SetHeight(Actor* actor, f32 offset);
void Actor_SetScale(Actor* actor, f32 scale);
void Actor_SetObjectDependency(GlobalContext* globalCtx, Actor* actor);
void func_8002D7EC(Actor* actor);
void func_8002D868(Actor* actor);
void Actor_MoveForward(Actor* actor);
void func_8002D908(Actor* actor);
void func_8002D97C(Actor* actor);
void func_8002D9A4(Actor* actor, f32 arg1);
s16 func_8002DA78(Actor* actorA, Actor* actorB);
s16 func_8002DAC0(Actor* actor, Vec3f* arg1);
f32 func_8002DB48(Actor* actorA, Actor* actorB);
s16 func_8002DAE0(Actor* actorA, Actor* actorB);
s16 func_8002DB28(Actor* actor, Vec3f* arg1);
f32 func_8002DB8C(Actor* actorA, Actor* actorB);
f32 func_8002DBB0(Actor* actor, Vec3f* arg1);
void func_8002DBD0(Actor* actor, Vec3f* result, Vec3f* arg2);
f32 Actor_HeightDiff(Actor* actorA, Actor* actorB);
f32 func_8002DC84(Player* player);
f32 func_8002DCE4(Player* player);
s32 func_8002DD6C(Player* player);
s32 func_8002DD78(Player* player);
s32 func_8002DDE4(GlobalContext* globalCtx);
s32 func_8002DDF4(GlobalContext* globalCtx);
void func_8002DE04(GlobalContext* globalCtx, Actor* actorA, Actor* actorB);
void func_8002DE74(GlobalContext* globalCtx, Player* player);
void func_8002DECC(GlobalContext* globalCtx, Player* player, Actor* actor);
s32 func_8002DEEC(Player* player);
void func_8002DF18(GlobalContext* globalCtx, ActorContext* actorCtx);
u32 func_8002DF38(GlobalContext* globalCtx, Actor* actor, u8 newAction);
s32 func_8002DF54(GlobalContext* globalCtx, Actor* actor, u8 arg2);
void func_8002DF90(DynaPolyActor* dynaActor);
void func_8002DFA4(DynaPolyActor* dynaActor, f32 arg1, s16 arg2);
s32 func_8002DFC8(Actor* actor, s16 arg1, GlobalContext* globalCtx);
s32 func_8002E084(Actor* actor, s16 arg1);
s32 func_8002E12C(Actor* actor, f32 arg1, s16 arg2);
s32 func_8002E1A8(Actor* actorA, Actor* actorB, f32 arg2, s16 arg3);
void func_8002E4B4(GlobalContext* globalCtx, Actor* actor, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
Hilite* func_8002EABC(Vec3f* object, Vec3f* eye, Vec3f* lightDir, GraphicsContext* gfxCtx);
Hilite* func_8002EB44(Vec3f* object, Vec3f* eye, Vec3f* lightDir, GraphicsContext* gfxCtx);
void func_8002EBCC(Actor* actor, GlobalContext* globalCtx, s32 flag);
void func_8002ED80(Actor* actor, GlobalContext* globalCtx, s32 flag);
PosRot* func_8002EEE4(PosRot* arg0, Actor* actor);
PosRot* func_8002EF14(PosRot* arg0, Actor* actor);
PosRot* func_8002EF44(PosRot* arg0, Actor* actor);
s32 func_8002F0C8(Actor* actor, Player* player, s32 arg2);
u32 func_8002F194(Actor* actor, GlobalContext* globalCtx);
s32 func_8002F1C4(Actor* actor, GlobalContext* globalCtx, f32 arg2, f32 arg3, u32 arg4);
s32 func_8002F298(Actor* actor, GlobalContext* globalCtx, f32 arg2, u32 arg3);
s32 func_8002F2CC(Actor* actor, GlobalContext* globalCtx, f32 arg2);
s32 func_8002F2F4(Actor* actor, GlobalContext* globalCtx);
u32 func_8002F334(Actor* actor, GlobalContext* globalCtx);
s8 func_8002F368(GlobalContext* globalCtx);
void func_8002F374(GlobalContext* globalCtx, Actor* actor, s16* arg2, s16* arg3);
u32 func_8002F410(Actor* actor, GlobalContext* globalCtx);
s32 func_8002F434(Actor* actor, GlobalContext* globalCtx, s32 getItemId, f32 xzRange, f32 yRange);
void func_8002F554(Actor* actor, GlobalContext* globalCtx, s32 getItemId);
void func_8002F580(Actor* actor, GlobalContext* globalCtx);
u32 func_8002F5A0(Actor* actor, GlobalContext* globalCtx);
void func_8002F5C4(Actor* actorA, Actor* actorB, GlobalContext* globalCtx);
void func_8002F5F0(Actor* actor, GlobalContext* globalCtx);
u32 func_8002F618(GlobalContext* globalCtx, Actor* actor);
u32 func_8002F63C(GlobalContext* globalCtx, Actor* actor, s32 arg2);
u32 func_8002F674(GlobalContext* globalCtx, Actor* actor);
void func_8002F698(GlobalContext* globalCtx, u32 arg1, f32 arg2, s16 arg3, f32 arg4, u32 arg5, u32 arg6);
void func_8002F6D4(GlobalContext* globalCtx, u32 arg1, f32 arg2, s16 arg3, f32 arg4, u32 arg5);
void func_8002F71C(GlobalContext* globalCtx, u32 arg1, f32 arg2, s16 arg3, f32 arg4);
void func_8002F758(GlobalContext* globalCtx, u32 arg1, f32 arg2, s16 arg3, f32 arg4, u32 arg5);
void func_8002F7A0(GlobalContext* globalCtx, u32 arg1, f32 arg2, s16 arg3, f32 arg4);
void func_8002F7DC(Actor* actor, u16 sfxId);
void Audio_PlayActorSound2(Actor* actor, u16 sfxId);
void func_8002F850(GlobalContext* globalCtx, Actor* actor);
void func_8002F8F0(Actor* actor, u16 sfxId);
void func_8002F91C(Actor* actor, u16 sfxId);
void func_8002F948(Actor* actor, u16 sfxId);
void func_8002F974(Actor* actor, u16 sfxId);
void func_8002F994(Actor* actor, s32 sfxId);
s32 func_8002F9EC(GlobalContext* globalCtx, Actor* actor, UNK_TYPE arg2, UNK_TYPE arg3, UNK_TYPE arg4);
void func_800304B0(GlobalContext* globalCtx);
void func_800304DC(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* actorEntry);
void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx);
s32 func_800314D4(GlobalContext* globalCtx, Actor* actorB, Vec3f* arg2, f32 arg3);
void func_80031B14(GlobalContext* globalCtx, ActorContext* actorCtx);
Actor* Actor_Spawn(ActorContext* actorCtx, GlobalContext* globalCtx, s16 actorId,
f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s16 params);
Actor* Actor_SpawnAttached(ActorContext* actorCtx, Actor* attachedTo, GlobalContext* globalCtx, s16 actorId,
f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s16 params);
void Actor_SpawnTransitionActors(GlobalContext* globalCtx, ActorContext* actorCtx);
Actor* Actor_SpawnEntry(ActorContext* actorCtx, ActorEntry* actorEntry, GlobalContext* globalCtx);
Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, GlobalContext* globalCtx);
Actor* func_80032AF0(GlobalContext* globalCtx, ActorContext* actorCtx, Actor** actorPtr, Player* player);
Actor* Actor_Find(ActorContext* actorCtx, s32 actorId, s32 actorType);
void func_80032C7C(GlobalContext* globalCtx, Actor* actor);
void func_80033260(GlobalContext* globalCtx, Actor* actor, Vec3f* arg2, f32 arg3,
s32 arg4, f32 arg5, s16 arg6, s16 arg7, u8 arg8);
void func_80033480(GlobalContext* globalCtx, Vec3f* arg1, f32 arg2, s32 arg3, s16 arg4, s16 arg5, u8 arg6);
Actor* func_80033640(GlobalContext* globalCtx, Collider* collider);
Actor* func_80033684(GlobalContext* globalCtx, Actor* explosiveActor);
void Actor_ChangeType(GlobalContext* globalCtx, ActorContext* actorCtx, Actor* actor, u8 actorType);
void Actor_SetTextWithPrefix(GlobalContext* globalCtx, Actor* actor, s16 textIdLower);
s16 func_800339B8(Actor* actor, GlobalContext* globalCtx, f32 arg2, s16 arg3);
s32 func_80033A84(GlobalContext* globalCtx, Actor* actor);
s32 func_80033AB8(GlobalContext* globalCtx, Actor* actor);
f32 func_80033AEC(Vec3f* arg0, Vec3f* arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5);
void func_80033C30(Vec3f* arg0, Vec3f* arg1, u8 alpha, GlobalContext* globalCtx);
void func_80033DB8(GlobalContext* globalCtx, s16 arg1, s16 arg2);
void func_80033E1C(GlobalContext* globalCtx, s16 arg1, s16 arg2, s16 arg3);
void func_80033E88(Actor* actor, GlobalContext* globalCtx, s16 arg2, s16 arg3);
f32 Math_Rand_ZeroFloat(f32 f);
f32 Math_Rand_CenteredFloat(f32 f);
void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2);
void func_8003424C(GlobalContext* globalCtx, Vec3f* arg1);
void func_8003426C(Actor* actor, s16 arg1, s16 arg2, s16 arg3, s16 arg4);
Hilite* func_800342EC(Vec3f* object, GlobalContext* globalCtx);
Hilite* func_8003435C(Vec3f* object, GlobalContext* globalCtx);
s16 func_800347E8(s16 arg0);
void func_80034BA0(GlobalContext* globalCtx, SkelAnime* skelAnime, void* unkFunc1, void* unkFunc2, Actor* actor, s16 alpha);
void func_80034CC4(GlobalContext* globalCtx, SkelAnime* skelAnime, void* unkFunc1, void* unkFunc2, Actor* actor, s16 alpha);
void Actor_Noop(Actor* actor, GlobalContext* globalCtx);
void Draw_DListOpa(GlobalContext* globalCtx, u32 dlist);
void Draw_DListXlu(GlobalContext* globalCtx, u32 dlist);
Actor* Actor_FindNearby(GlobalContext* globalCtx, Actor* refActor, s16 actorId, u8 actorType, f32 range);
s32 func_800354B4(GlobalContext* globalCtx, Actor* actor, f32 range, s16 arg3, s16 arg4, s16 arg5);
void func_8003555C(GlobalContext* globalCtx, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3);
void func_800355B8(GlobalContext* globalCtx, Vec3f* arg1);
u8 func_800355E4(GlobalContext* globalCtx, ColliderCylinderInit* colCylinderInit);
u8 Actor_ApplyDamage(Actor* actor);
void func_80035650(Actor* actor, ColliderBody* colBody, s32 freezeFlag);
void func_8003573C(Actor* actor, ColliderBody* colBody, s32 freezeFlag);
void func_80035844(Vec3f* arg0, Vec3f* arg1, s16* arg2, s32 arg3);
void func_800359B8(Actor* actor, s16 arg1, Vec3s* arg2);
s32 Flags_GetEventChkInf(s32 flag);
void Flags_SetEventChkInf(s32 flag);
s32 Flags_GetInfTable(s32 flag);
void Flags_SetInfTable(s32 flag);
u16 func_80037C30(GlobalContext* globalCtx, s16 arg1);
s32 func_80037D98(GlobalContext* globalCtx, Actor* actor, s16 arg2, s32* arg3);
s32 func_80038290(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f arg4);
void ActorOverlayTable_LogPrint(void);
void ActorOverlayTable_Init(void);
void ActorOverlayTable_Cleanup(void);
// ? func_80038600(?);
// ? func_80038708(?);
// ? func_8003871C(?);
// ? func_80038728(?);
// ? func_80038780(?);
// ? func_800387FC(?);
// ? func_8003880C(?);
// ? func_80038870(?);
// ? func_80038878(?);
// ? func_800388A8(?);
// ? func_800388E8(?);
// ? func_80038924(?);
// ? func_800389D4(?);
void func_80038A28(CollisionPoly*, f32, f32, f32, MtxF*);
// ? func_80038B7C(?);
// ? func_80038BE0(?);
// ? func_80038D48(?);
// ? func_80038E78(?);
// ? func_80038F20(?);
// ? func_80038F60(?);
// ? func_80039000(?);
// ? func_800390A0(?);
// ? func_8003937C(?);
// ? func_80039448(?);
// ? func_8003965C(?);
// ? func_800396F0(?);
// ? func_8003992C(?);
// ? func_80039A3C(?);
// ? func_80039AEC(?);
// ? func_8003A3E0(?);
// ? func_8003A5B8(?);
// ? func_8003A7D8(?);
// ? func_8003A95C(?);
// ? func_8003AB28(?);
// ? func_8003AC54(?);
// ? func_8003AD00(?);
// ? func_8003ADC8(?);
// ? func_8003AEA8(?);
// ? func_8003B04C(?);
// ? func_8003B218(?);
// ? func_8003B3C8(?);
// ? func_8003BB18(?);
// ? func_8003BF18(?);
// ? func_8003BF5C(?);
// ? func_8003BFF4(?);
// ? func_8003C078(?);
// ? T_BGCheck_getBGDataInfo(?);
// ? func_8003C55C(?);
// ? func_8003C614(?);
f32 func_8003C8EC(GlobalContext*, CollisionContext*, CollisionPoly**, Vec3f*);
// ? func_8003C940(?);
// ? func_8003C9A4(?);
f32 func_8003CA0C(GlobalContext*, CollisionContext*, CollisionPoly**, u32*, Actor*, Vec3f*);
// ? func_8003CB30(?);
f32 func_8003CCA4(CollisionContext*, CollisionPoly**, s32*, Vec3f*);
// ? func_8003CDD4(?);
s32 func_8003D52C(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, f32, CollisionPoly**, u32*, Actor*, f32);
s32 func_8003D594(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, f32, CollisionPoly**, u32*, Actor*, f32);
// ? func_8003D600(?);
s32 func_8003D7A0(CollisionContext*, f32*, Vec3f*, f32, UNK_PTR, u32*, Actor*);
// ? func_8003D7F0(?);
// ? func_8003DD28(?);
// ? func_8003DD6C(?);
s32 func_8003DE84(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*);
s32 func_8003DF10(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*, Actor*);
// ? func_8003DFA0(?);
// ? func_8003E0FC(?);
// ? func_8003E188(?);
// ? func_8003E214(?);
// ? func_8003E398(?);
// ? func_8003E3AC(?);
// ? func_8003E4DC(?);
// ? func_8003E530(?);
// ? func_8003E568(?);
// ? func_8003E5B4(?);
// ? func_8003E688(?);
// ? func_8003E6C4(?);
// ? func_8003E6E4(?);
// ? func_8003E6EC(?);
// ? func_8003E750(?);
// ? func_8003E804(?);
// ? func_8003E82C(?);
// ? func_8003E834(?);
// ? func_8003E888(?);
// ? func_8003E890(?);
// ? func_8003E8EC(?);
// ? func_8003E934(?);
// ? func_8003E954(?);
// ? func_8003E9A0(?);
void func_8003EBF8(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, u32 dynaPolyId);
void func_8003EC50(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, u32 dynaPolyId);
u32 DynaPolyInfo_RegisterActor(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, Actor* actor, u32 arg3);
DynaPolyActor* DynaPolyInfo_GetActor(CollisionContext* colCtx, u32 dynaPolyId);
void DynaPolyInfo_Free(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, u32 dynaPolyId);
// ? func_8003EE80(?);
// ? func_8003F8EC(?);
// ? func_8003F984(?);
// ? func_8003FB64(?);
// ? func_8003FBF4(?);
// ? func_8003FDDC(?);
// ? func_80040284(?);
// ? func_800409A8(?);
// ? func_80040BE4(?);
// ? func_80040E40(?);
// ? func_80040FA4(?);
// ? func_80041128(?);
// ? func_80041240(?);
// ? func_800413F8(?);
// ? func_80041510(?);
// ? func_80041648(?);
// ? func_800417A0(?);
void DynaPolyInfo_Alloc(u32 collision, void* collisionPtr);
// ? func_80041978(?);
// ? func_800419B0(?);
// ? func_80041A28(?);
// ? func_80041A4C(?);
// ? func_80041B24(?);
// ? func_80041B80(?);
// ? func_80041C10(?);
// ? func_80041C98(?);
// ? func_80041D4C(?);
// ? func_80041D94(?);
// ? func_80041DB8(?);
// ? func_80041EC8(?);
// ? func_80041F10(?);
// ? func_80041F34(?);
// ? func_80042048(?);
// ? func_80042108(?);
s32 func_8004213C(GlobalContext*, CollisionContext*, f32, f32, f32*, UNK_PTR);
// ? func_80042244(?);
// ? func_80042538(?);
// ? func_80042548(?);
// ? func_8004259C(?);
s32 func_800427B4(CollisionPoly*, CollisionPoly*, s32, s32, Vec3f*);
// ? func_80042868(?);
// ? func_80042B2C(?);
// ? func_80042C3C(?);
// ? func_80042CB8(?);
// ? func_80042EF8(?);
// ? func_80042FC4(?);
// ? func_800430A0(?);
// ? func_800432A0(?);
// ? func_80043334(?);
// ? func_800433A4(?);
void DynaPolyInfo_SetActorMove(DynaPolyActor* actor, DynaPolyMoveFlag flags);
void func_800434A0(DynaPolyActor* dynaActor);
void func_800434A8(DynaPolyActor* actor);
// ? func_800434B8(?);
// ? func_800434F8(?);
void func_80043538(DynaPolyActor* actor);
f32 func_800437F0(f32, f32);
// ? func_8004389C(?);
// ? func_800438DC(?);
// ? func_8004391C(?);
// ? func_800439AC(?);
// ? func_80043A3C(?);
// ? func_80043ABC(?);
// ? func_80043B60(?);
// ? func_80043BC4(?);
// ? func_80043C28(?);
// ? func_80043CAC(?);
// ? func_80043D18(?);
// ? func_80043F34(?);
// ? func_80043F94(?);
// ? func_80044340(?);
// ? func_800443A0(?);
// ? func_80044434(?);
// ? func_80044510(?);
// ? func_80044568(?);
// ? func_80044740(?);
// ? func_8004476C(?);
// ? func_8004479C(?);
// ? func_8004481C(?);
// ? func_800448CC(?);
// ? func_800449AC(?);
// ? func_80044A74(?);
// ? func_80044ADC(?);
// ? func_80044E68(?);
// ? func_800450A4(?);
// ? func_80045128(?);
// ? func_80045254(?);
// ? func_80045350(?);
// ? func_8004545C(?);
// ? func_80045508(?);
// ? func_80045714(?);
// ? func_800457A8(?);
// ? func_800458D4(?);
// ? func_80045B08(?);
// ? func_80045C74(?);
// ? func_800460A8(?);
// ? func_800466F8(?);
// ? func_800468CC(?);
// ? func_800469C0(?);
// ? func_80046B44(?);
// ? func_80046CB4(?);
// ? func_80046E20(?);
// ? func_80047394(?);
// ? func_800473A0(?);
// ? func_80051B3C(?);
// ? func_80052E0C(?);
// ? func_80054314(?);
// ? func_8005445C(?);
// ? func_80054478(?);
// ? func_80057C6C(?);
// ? func_80057FC4(?);
// ? func_80058148(?);
// ? func_80058354(?);
// ? func_800584E8(?);
// ? func_800588B4(?);
// ? func_80058CF8(?);
// ? func_80058D34(?);
// ? func_80058E8C(?);
// ? func_800591EC(?);
// ? func_80059EC8(?);
// ? func_8005A02C(?);
// ? func_8005A04C(?);
// ? func_8005A444(?);
// ? func_8005A548(?);
// ? func_8005A77C(?);
// ? func_8005A7A8(?);
// ? func_8005A8C4(?);
s16 func_8005A970(u32 gl790);
s16 func_8005A9F4(Camera* camera);
// ? func_8005AA90(?);
// ? func_8005AC48(?);
// ? func_8005AC60(?);
// ? func_8005AC6C(?);
// ? func_8005AD40(?);
// ? func_8005AE64(?);
// ? func_8005AFB4(?);
// ? func_8005B044(?);
// ? func_8005B1A4(?);
s32 CollisionBtlTbl_Get(s32 index);
// ? func_8005B280(?);
// ? func_8005B2AC(?);
// ? func_8005B65C(?);
s32 func_8005B6A0(GlobalContext* globalCtx, Collider* collision);
// ? func_8005B6B0(?);
s32 func_8005B6EC(GlobalContext* globalCtx, Collider* collision, Actor* actor, ColliderBodyInfo* src);
s32 func_8005B72C(GlobalContext* globalCtx, Collider* collision, Actor* actor, ColliderBodyInfo* src);
void func_8005B76C(GlobalContext* globalCtx, Collider* collision);
void func_8005B784(GlobalContext* globalCtx, Collider* collision);
void func_8005B79C(GlobalContext* globalCtx, Collider* collision);
// ? func_8005B7C0(?);
s32 func_8005B7E4(GlobalContext* globalCtx, ColliderTouch* touch);
// ? func_8005B7F4(?);
void func_8005B818(GlobalContext* globalCtx, ColliderBody* body);
// ? func_8005B824(?);
s32 func_8005B850(GlobalContext* globalCtx, ColliderBump* bump);
// ? func_8005B860(?);
// ? func_8005B884(?);
s32 func_8005B904(GlobalContext* globalCtx, ColliderBody* body);
s32 func_8005B93C(GlobalContext* globalCtx, ColliderBody* colliderBody, ColliderBodyInfoInner* bodyFlags);
void func_8005B9B0(GlobalContext* globalCtx, ColliderBody* body);
void func_8005B9E8(GlobalContext* globalCtx, ColliderBody* body);
// ? func_8005BA1C(?);
// ? func_8005BA30(?);
s32 func_8005BA74(UNK_TYPE, UNK_TYPE);
// ? func_8005BA84(?);
// ? func_8005BAD8(?);
// ? func_8005BB10(?);
// ? func_8005BB48(?);
// ? func_8005BB8C(?);
// ? func_8005BBB0(?);
// ? func_8005BBD4(?);
// ? func_8005C2BC(?);
s32 func_8005C318(GlobalContext* globalCtx, ColliderDimensions* dim);
s32 func_8005C328(GlobalContext* globalCtx, ColliderDimensions* dest, ColliderDimensions* src);
s32 ActorCollider_AllocCylinder(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 ActorCollider_FreeCylinder(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 func_8005C3F4(GlobalContext* globalCtx, ColliderCylinderMain* collision, ColliderCylinderInit* arg2);
s32 ActorCollider_InitCylinder(GlobalContext* globalCtx, ColliderCylinderMain* collision, Actor* actor, ColliderCylinderInit* src);
s32 func_8005C508(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 func_8005C540(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 func_8005C578(GlobalContext* globalCtx, ColliderCylinderMain* collision);
// ? func_8005C5B0(?);
s32 func_8005C5F8(UNK_TYPE, UNK_TYPE);
// ? func_8005C608(?);
// ? func_8005C6C0(?);
// ? func_8005C6F8(?);
// ? func_8005C730(?);
// ? func_8005C774(?);
// ? func_8005C798(?);
// ? func_8005C7BC(?);
// ? func_8005CE6C(?);
s32 func_8005CEB4(GlobalContext* globalCtx, ColliderDimensions* dim);
// ? func_8005CEC4(?);
// ? func_8005CEDC(?);
// ? func_8005CF90(?);
s32 func_8005D018(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 func_8005D060(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 func_8005D0A8(GlobalContext* globalCtx, ColliderCylinderMain* collision, Actor* actor, ColliderCylinderInit* src);
s32 func_8005D104(GlobalContext* globalCtx, ColliderCylinderMain* collision, Actor* actor, ColliderCylinderInit* src);
s32 func_8005D160(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 func_8005D1A8(GlobalContext* globalCtx, ColliderCylinderMain* collision);
s32 func_8005D1E0(GlobalContext* globalCtx, ColliderCylinderMain* collision);
// ? func_8005D218(?);
// ? func_8005D334(?);
// ? func_8005D3A4(?);
// ? func_8005D3BC(?);
void func_8005D400(UNK_TYPE, UNK_TYPE);
// ? func_8005D40C(?);
// ? func_8005D4DC(?);
// ? func_8005D62C(?);
s32 Actor_CollisionCheck_SetAT(GlobalContext* globalCtx, SubGlobalContext11E60* simpleBodyGroups, ColliderCylinderMain* collision);
s32 Actor_CollisionCheck_SetAC(GlobalContext* globalCtx, SubGlobalContext11E60* simpleBodyGroups, ColliderCylinderMain* collision);
s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, SubGlobalContext11E60* simpleBodyGroups, ColliderCylinderMain* collision);
// ? func_8005DF2C(?);
// ? func_8005DF50(?);
// ? func_8005DF74(?);
// ? func_8005DFAC(?);
// ? func_8005E2EC(?);
// ? func_8005E4F8(?);
// ? func_8005E604(?);
// ? func_8005E800(?);
// ? func_8005E81C(?);
// ? func_800611A0(?);
// ? func_80061274(?);
// ? func_8006139C(?);
// ? func_8006146C(?);
// ? func_800614A4(?);
// ? func_8006199C(?);
// ? func_80061BF4(?);
// ? func_80061C18(?);
// ? func_80061C98(?);
// ? func_80061E48(?);
// ? func_80061E8C(?);
void func_80061ED4(SubActorStruct98 *sub98, ActorDamageChart *damageChart, SubActor98Init *subActor98Init);
// ? func_80061EFC(?);
// ? func_80061F64(?);
// ? func_800622E4(?);
// ? func_80062530(?);
// ? func_800626B0(?);
void ActorCollider_Cylinder_Update(Actor* actor, ColliderCylinderMain* collision);
// ? func_80062734(?);
// ? func_80062A28(?);
// ? func_80062B80(?);
// ? func_80062CD4(?);
void func_80062D60(GlobalContext*, Vec3f*);
// ? func_80062DAC(?);
// ? func_80062E14(?);
s32 func_80062ECC(f32, f32, f32, Vec3f*, Vec3f*, Vec3f*, Vec3f*, Vec3f*);
void SaveContext_Init(void);
// ? func_800636C0(?);
void func_8006375C(UNK_TYPE, UNK_TYPE, UNK_TYPE);
// ? func_8006376C(?);
// ? func_80063828(?);
// ? func_8006390C(?);
// ? func_80063C04(?);
// ? func_80063D7C(?);
void DebugDisplay_Init(void);
DebugDispObject* DebugDisplay_AddObject(f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ,
f32 scaleX, f32 scaleY, f32 scaleZ, u8 red, u8 green, u8 blue, u8 alpha,
s16 type, GraphicsContext* gfxCtx);
void DebugDisplay_DrawObjects(GlobalContext* globalCtx);
void func_8006450C(GlobalContext* globalCtx, CutsceneContext* csCtx);
void func_80064534(GlobalContext* globalCtx, CutsceneContext* csCtx);
void func_80064558(GlobalContext* globalCtx, CutsceneContext* csCtx);
void func_800645A0(GlobalContext* globalCtx, CutsceneContext* csCtx);
void Cutscene_HandleEntranceTriggers(GlobalContext* globalCtx);
void Cutscene_HandleConditionalTriggers(GlobalContext* globalCtx);
void Cutscene_SetSegment(GlobalContext* globalCtx, u32 segment);
void* MemCopy(void* dest, void* src, s32 size);
void func_800694A0(GlobalContext* globalCtx, s16 drawId);
// ? func_8006BA00(?);
// ? func_8006BA30(?);
void Audio_PlaySoundAtPosition(GlobalContext* globalCtx, Vec3f* pos2, s32 radius, u16 sfxId);
// ? func_8006BBC0(?);
// ? func_8006BE88(?);
// ? func_8006BF1C(?);
// ? func_8006C0FC(?);
// ? func_8006C3A0(?);
// ? func_8006C3D0(?);
void func_8006C438(GlobalContext* globalCtx, s16 arg1);
s32 func_8006C4A4(GlobalContext*, s32);
// ? func_8006C510(?);
// ? func_8006C5A8(?);
// ? func_8006CBAC(?);
// ? func_8006CFC0(?);
// ? func_8006D074(?);
// ? func_8006D0AC(?);
// ? func_8006D0EC(?);
// ? func_8006D684(?);
// ? func_8006DC68(?);
// ? func_8006DE30(?);
// ? func_8006DF68(?);
// ? func_8006E0A0(?);
// ? func_8006E0EC(?);
// ? func_8006E418(?);
// ? func_8006EA30(?);
// ? func_8006ECF4(?);
void func_8006EE48(UNK_TYPE);
// ? func_8006EE50(?);
// ? func_8006EE60(?);
// ? func_8006EEBC(?);
// ? func_8006EF10(?);
// ? func_8006F0A0(?);
// ? func_8006F0D4(?);
// ? func_8006F0FC(?);
// ? func_8006F140(?);
f32 func_8006F93C(u16, u16, u16);
// ? func_8006FB94(?);
// ? func_8006FC88(?);
// ? func_80070600(?);
// ? func_800706A0(?);
// ? func_80070718(?);
// ? func_80070C24(?);
// ? func_800730DC(?);
// ? func_80073988(?);
// ? func_80073A5C(?);
f32 func_800746DC();
// ? func_80074704(?);
// ? func_80074D6C(?);
// ? func_80074FF4(?);
// ? func_800750C0(?);
// ? func_800753C4(?);
// ? func_8007542C(?);
// ? func_800758AC(?);
// ? func_80075B44(?);
// ? func_80075E68(?);
// ? func_80075F14(?);
// ? func_800760F4(?);
// ? func_800763A8(?);
// ? func_800766C4(?);
// ? func_8007672C(?);
// ? func_80076934(?);
s32 func_800775CC();
void func_800775D8();
s32 func_800775E4();
void func_800775F0(u16);
// ? func_80077600(?);
void Lib_MemSet(u8 dest[], size_t size, u8 val);
f32 Math_Coss(s16 angle);
f32 Math_Sins(s16 angle);
s32 Math_ApproxUpdateScaledS(s16* fp, s16 target, s16 step);
s32 Math_ApproxS(s16* fp, s16 target, s16 step);
s32 Math_ApproxF(f32* fp, f32 target, f32 step);
s32 func_80077AF8(s16* fp, s16 target, s16 step);
s32 func_80077B58(s16* fp, s16 target, s16 step);
s32 func_80077C6C(f32* fp, f32 target, f32 incrStep, f32 decrStep);
s16 Math_Rand_S16Offset(s16 base, s16 range);
void Math_Vec3f_Copy(Vec3f* dest, Vec3f* src);
void Math_Vec3s_ToVec3f(Vec3f* dest, Vec3s* src);
void Math_Vec3f_Sum(Vec3f* a, Vec3f* b, Vec3f* dest);
void Math_Vec3f_Diff(Vec3f* a, Vec3f* b, Vec3f* dest);
void Math_Vec3s_DiffToVec3f(Vec3f* dest, Vec3s* a, Vec3s* b);
void Math_Vec3f_Scale(Vec3f* vec, f32 scaleF);
f32 Math_Vec3f_DistXYZ(Vec3f* a, Vec3f* b);
f32 Math_Vec3f_DistXYZAndStoreDiff(Vec3f* a, Vec3f* b, Vec3f* dest);
f32 Math_Vec3f_DistXZ(Vec3f* a, Vec3f* b);
s16 Math_Vec3f_Yaw(Vec3f* a, Vec3f* b);
s16 Math_Vec3f_Pitch(Vec3f* a, Vec3f* b);
void Actor_ProcessInitChain(Actor* actor, InitChainEntry* initChain);
f32 Math_SmoothScaleMaxMinF(f32* pValue, f32 target, f32 scale, f32 maxStep, f32 minStep);
void Math_SmoothScaleMaxF(f32* pValue, f32 target, f32 scale, f32 maxStep);
void Math_SmoothDownscaleMaxF(f32* pValue, f32 scale, f32 maxStep);
s16 Math_SmoothScaleMaxMinS(s16* pValue, s16 target, s16 invScale, s16 maxStep, s16 minStep);
void Math_SmoothScaleMaxS(s16* pValue, s16 target, s16 invScale, s16 maxStep);
void Color_RGBA8_Copy(Color_RGBA8* dst, Color_RGBA8* src);
void func_80078884(u16 sfxId);
void func_800788CC(u16 sfxId);
void func_80078914(Vec3f* arg0, u16 sfxId);
void Health_InitData(GlobalContext* globalCtx);
void Health_UpdateData(GlobalContext* globalCtx);
void Interface_DrawHealth(GlobalContext* globalCtx);
void Health_HandleCriticalAlarm(GlobalContext* globalCtx);
void Lights_InitPositionalLight(LightInfoPositional* info, s16 posX, s16 posY, s16 posZ, u8 red, u8 green, u8 blue, s16 radius, u32 type);
void Lights_InitType0PositionalLight(LightInfoPositional* info, s16 posX, s16 posY, s16 posZ, u8 red, u8 green, u8 blue, s16 radius);
void Lights_InitType2PositionalLight(LightInfoPositional* info, s16 posX, s16 posY, s16 posZ, u8 red, u8 green, u8 blue, s16 radius);
void Lights_SetPositionalLightColorAndRadius(LightInfoPositional* info, u8 red, u8 green, u8 blue, s16 radius);
void Lights_InitDirectional(LightInfoDirectional* info, s8 dirX, s8 dirY, s8 dirZ, u8 red, u8 green, u8 blue);
void Lights_MapperInit(LightMapper* mapper, u8 red, u8 green, u8 blue);
// ? func_8007A084(?);
// ? func_8007A474(?);
z_Light* Lights_FindFreeSlot();
void Lights_Free(z_Light* light);
void func_8007A614(GlobalContext* globalCtx, LightingContext* lightCtx);
void func_8007A698(LightingContext* lightCtx, u8 arg1, u8 arg2, u8 arg3, s16 arg4, s16 arg5);
void Lights_SetAmbientColor(LightingContext* lightCtx, u8 red, u8 green, u8 blue);
LightMapper* Lights_CreateMapper(LightingContext* lightCtx, GraphicsContext* gfxCtx);
void Lights_ClearHead(GlobalContext* globalCtx, LightingContext* lightCtx);
void Lights_RemoveAll(GlobalContext* globalCtx, LightingContext* lightCtx);
z_Light* Lights_Insert(GlobalContext* globalCtx, LightingContext* lightCtx, LightInfo* info);
void Lights_Remove(GlobalContext* globalCtx, LightingContext* lightCtx, z_Light* light);
LightMapper* func_8007A960(GraphicsContext* gfxCtx, u8 red, u8 green, u8 blue);
// ? func_8007A9B4(?);
// ? func_8007ABBC(?);
void ZeldaArena_CheckPointer(void* ptr, u32 size, const char* name, const char* action);
void* ZeldaArena_Malloc(u32 size);
void* ZeldaArena_MallocDebug(u32 size, const char* file, s32 line);
void* ZeldaArena_MallocR(u32 size);
void* ZeldaArena_MallocRDebug(u32 size, const char* file, s32 line);
void* ZeldaArena_Realloc(void* ptr, u32 newSize);
void* ZeldaArena_ReallocDebug(void* ptr, u32 newSize, const char* file, s32 line);
void ZeldaArena_Free(void* ptr);
void ZeldaArena_FreeDebug(void* ptr, const char* file, s32 line);
void* ZeldaArena_Calloc(u32 num, u32 size);
void ZeldaArena_Display();
void ZeldaArena_GetSizes(u32* outMaxFree, u32* outFree, u32* outAlloc);
void ZeldaArena_Check();
void ZeldaArena_Init(void* start, u32 size);
void ZeldaArena_Cleanup();
u8 ZeldaArena_IsInitalized();
void MapMark_Init(GlobalContext* globalCtx);
void MapMark_ClearPointers(GlobalContext* globalCtx);
void MapMark_DrawConditionally(GlobalContext* globalCtx);
// ? func_8007BE60(?);
// ? func_8007BED4(?);
// ? func_8007BF08(?);
// ? func_8007BF10(?);
f32 func_8007BF90(Vec3f*, Vec3f*);
// ? func_8007C028(?);
// ? func_8007C058(?);
// ? func_8007C0A8(?);
// ? func_8007C0F8(?);
// ? func_8007C25C(?);
// ? func_8007C29C(?);
// ? func_8007C3F4(?);
// ? func_8007C490(?);
// ? func_8007C4E0(?);
// ? func_8007C680(?);
// ? func_8007C704(?);
// ? func_8007C76C(?);
// ? func_8007C7A8(?);
// ? func_8007C7F8(?);
// ? func_8007C820(?);
// ? func_8007C850(?);
// ? func_8007FFE0(?);
// ? func_80080024(?);
s16 func_800800F8(GlobalContext* globalCtx, u32 arg1, u32 arg2, Actor* actor, u32 arg4);
// ? func_800803F0(?);
// ? func_80080480(?);
void func_80080788(UNK_TYPE, UNK_TYPE);
// ? func_800807A0(?);
// ? func_800807FC(?);
// ? func_800808FC(?);
// ? func_80080AB4(?);
// ? func_80080E04(?);
// ? func_80080F44(?);
void func_80080F68(GlobalContext* globalCtx);
// ? func_80081240(?);
void Interface_DrawMinimap(GlobalContext* globalCtx);
// ? func_80082248(?);
void func_8008226C(GlobalContext* globalCtx);
void Interface_ChangeAlpha(u16 alphaType);
void Interface_SetSceneRestrictions(GlobalContext* globalCtx);
void Inventory_SwapAgeEquipment(void);
void Interface_InitHorsebackArchery(GlobalContext* globalCtx);
void func_800849EC(GlobalContext* globalCtx);
void Interface_LoadItemIcon1(GlobalContext* globalCtx, u16 button);
void Interface_LoadItemIcon2(GlobalContext* globalCtx, u16 button);
void func_80084BF4(GlobalContext* globalCtx, u16 flag);
u8 Item_Give(GlobalContext* globalCtx, u8 item);
u8 Item_CheckObtainability(u8 item);
void Inventory_DeleteItem(u16 item, u16 invSlot);
s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u16 oldItem, u16 newItem);
s32 Inventory_HasEmptyBottle(void);
s32 Inventory_HasSpecificBottle(u8 bottleItem);
void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 cButton);
s32 Inventory_ConsumeFairy(GlobalContext* globalCtx);
void Interface_SetDoAction(GlobalContext* globalCtx, u16 action);
void Interface_SetNaviCall(GlobalContext* globalCtx, u16 naviCallState);
void Interface_LoadActionLabelB(GlobalContext* globalCtx, u16 action);
s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange);
void Rupees_ChangeBy(s16 rupeeChange);
void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
void func_80087680(GlobalContext* globalCtx);
void func_800876C8(GlobalContext* globalCtx);
s32 func_80087708(GlobalContext* globalCtx, s16 arg1, s16 arg2);
void func_80088B34(s16 arg0);
void Interface_Draw(GlobalContext* globalCtx);
void Interface_Update(GlobalContext* globalCtx);
// ? func_8008E6A0(?);
// ? func_8008E6AC(?);
// ? func_8008E750(?);
UNK_TYPE func_8008E8DC(GlobalContext*, Player*);
UNK_TYPE func_8008E988(GlobalContext*);
UNK_TYPE func_8008E9C4(Player* player);
UNK_TYPE func_8008E9D0(Player* player);
// ? func_8008E9F8(?);
// ? func_8008EA40(?);
// ? func_8008EB2C(?);
// ? func_8008EC04(?);
void func_8008ECAC(GlobalContext*, Player* player);
void func_8008EDF0(Player*);
// ? func_8008EE08(?);
UNK_TYPE func_8008EF44(GlobalContext*, UNK_TYPE);
// ? func_8008F034(?);
u8 func_8008F080(GlobalContext*);
void func_8008F08C(GlobalContext*);
UNK_TYPE func_8008F098(GlobalContext*);
UNK_TYPE func_8008F0AC(GlobalContext*);
s32 func_8008F0D8(Player* player, UNK_TYPE);
UNK_TYPE func_8008F104(Player* player);
UNK_TYPE func_8008F128(Player* player);
s32 func_8008F158(UNK_TYPE);
void func_8008F180(Player* player);
UNK_TYPE func_8008F1A0(Player* player);
// ? func_8008F1CC(?);
s32 func_8008F224(Player* player, UNK_TYPE);
void func_8008F250(Player* player);
s32 func_8008F270(Player* player, UNK_TYPE);
s32 func_8008F29C(Player* player);
s32 func_8008F2F8(GlobalContext*);
// ? func_8008F470(?);
// ? func_8008F87C(?);
// ? func_8008FCC8(?);
// ? func_800902F0(?);
// ? func_80090440(?);
u8 func_80090480(GlobalContext* globalCtx, Collider* collider, UNK_PTR a2, Vec3f* a3, Vec3f* a4);
// ? func_80090604(?);
// ? func_800906D4(?);
// ? func_800907E4(?);
// ? func_80090A28(?);
// ? func_80090AFC(?);
// ? func_80091880(?);
// ? func_80091A24(?);
void PreNMI_Init(PreNMIContext* prenmiCtx);
// ? func_80092500(?);
// ? func_80092584(?);
// ? func_80092AB8(?);
// ? func_80092B48(?);
// ? func_80092BFC(?);
// ? func_80092C20(?);
void func_80092DAC(s16, s16);
void func_80092DF0(s16, s16);
// ? func_80092E3C(?);
void func_80092E70(s16, s16, UNK_TYPE, UNK_TYPE, UNK_TYPE);
// ? func_80092F38(?);
s16 func_80092F88(Camera*, UNK_TYPE);
// ? func_80092FAC(?);
// ? func_80092FF0(?);
// ? func_80093370(?);
// ? func_80093708(?);
// ? func_8009373C(?);
Gfx* func_80093774(Gfx* a0, u32 a1);
// ? func_800937C0(?);
// ? func_80093808(?);
// ? func_800938B4(?);
// ? func_8009398C(?);
// ? func_80093AD0(?);
void func_80093BA8(GraphicsContext* gfxCtx);
// ? func_80093C80(?);
void func_80093D18(GraphicsContext* gfxCtx);
void func_80093D84(GraphicsContext* gfxCtx);
// ? func_80093F34(?);
// ? func_80093F58(?);
void func_80094044(GraphicsContext *gfxCtx);
// ? func_800940B0(?);
// ? func_800942F0(?);
// ? func_8009435C(?);
// ? func_800944A0(?);
// ? func_80094520(?);
// ? func_8009457C(?);
// ? func_800945A0(?);
// ? func_80094678(?);
Gfx* func_800946E4(Gfx* a0);
// ? func_800947AC(?);
// ? func_80094A14(?);
// ? func_80094C50(?);
// ? func_80094DB8(?);
Gfx* func_80094E78(GraphicsContext* gfxCtx, u32 x, u32 y);
Gfx* Draw_TexScroll(GraphicsContext* gfxCtx, u32 x, u32 y, s32 width, s32 height);
Gfx* Draw_TwoTexScroll(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2);
Gfx* Draw_TwoTexScrollEnvColor(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2, s32 red, s32 green, s32 blue, s32 alpha);
// ? func_80095248(?);
void func_80095AA0(GlobalContext* globalCtx, Room* room, UNK_TYPE arg2, UNK_TYPE arg3);
// ? func_8009638C(?);
void func_80096FD4(GlobalContext* globalCtx, Room* room);
u32 func_80096FE8(GlobalContext* globalCtx, RoomContext* roomCtx);
s32 func_8009728C(GlobalContext* globalCtx, RoomContext* roomCtx, s32 roomNum);
s32 func_800973FC(GlobalContext* globalCtx, RoomContext* roomCtx);
void Room_Draw(GlobalContext* globalCtx, Room* room, u32 flags);
void func_80097534(GlobalContext* globalCtx, RoomContext* roomCtx);
// ? func_800975D0(?);
// ? func_80097604(?);
// ? func_80097820(?);
// ? func_80097848(?);
// ? func_80097850(?);
// ? func_80097904(?);
void Inventory_ChangeEquipment(s16 equipment, u16 value);
u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment);
void Inventory_ChangeUpgrade(s16 upgrade, s16 value);
void Object_InitBank(GlobalContext* globalCtx, ObjectContext* objectCtx);
void Object_UpdateBank(ObjectContext* objectCtx);
s32 Object_GetIndex(ObjectContext* objectCtx, s16 objectId);
s32 Object_IsLoaded(ObjectContext* objectCtx, s32 bankIndex);
void func_800981B8(ObjectContext* objectCtx);
s32 Scene_ExecuteCommands(GlobalContext* globalCtx, SceneCmd* sceneCmd);
void func_80098CBC(GlobalContext* globalCtx, u8* nbTransitionActors);
void func_800994A0(GlobalContext* globalCtx);
void Scene_Draw(GlobalContext* globalCtx);
// ? func_800A08A0(?);
// ? func_800A0D94(?);
// ? func_800A106C(?);
// ? func_800A1344(?);
void SkelAnime_Draw(GlobalContext* globalCtx, u32 limbIndex, u32 adt, u8 limbDListCnt, void* internal0, void* internal1);
// ? func_800A180C(?);
void func_800A1AC8(GlobalContext *globalCtx, u32 limbIndex, u32 actorDrawTbl, u32 dListCount, void* posUpdateFunc, void *drawFunc, Actor* actor);
// ? func_800A1D8C(?);
// ? func_800A1FC8(?);
s32 SkelAnime_GetFrameCount(u32 animation);
// ? func_800A2044(?);
// ? func_800A24A0(?);
Gfx* func_800A273C(GlobalContext* globalCtx, u32 limbIndex, u32 adt, u8 limbDListCnt, void* internal0, void* internal1, Actor* actor, Gfx* gfx);
// ? func_800A2E70(?);
// ? func_800A32EC(?);
// ? func_800A3334(?);
// ? func_800A336C(?);
// ? func_800A3478(?);
// ? func_800A34DC(?);
// ? func_800A390C(?);
// ? func_800A39AC(?);
// ? func_800A3B8C(?);
// ? func_800A3BE4(?);
// ? func_800A3C9C(?);
// ? func_800A3F08(?);
// ? func_800A3D70(?);
// ? func_800A4478(?);
void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, u32 skeleton, u32 animation, u8 unk0, u8 unk1, u8 unk2);
void func_800A46F8(GlobalContext* globalCtx, SkelAnime* skelAnime, u32 skeleton, u32 animation, u8 unk0, u16* unk1, u8 unk2);
// ? func_800A4A20(?);
// ? func_800A4AD8(?);
// ? func_800A4D9C(?);
// ? func_800A4EE0(?);
// ? func_800A487C(?);
// ? func_800A49B0(?);
s32 SkelAnime_FrameUpdateMatrix(SkelAnime* skelAnime);
// ? func_800A4C58(?);
// ? func_800A4FE4(?);
void SkelAnime_ChangeAnimation(SkelAnime* skelAnime, u32 animation, f32 playbackSpeed, f32 unk0, f32 frameCount, u8 unk1, f32 transitionRate);
void func_800A51E8(SkelAnime *skelAnime, u32 animation);
void func_800A5240(SkelAnime *skelAnime, u32 animation, f32 unk0);
void func_800A529C(SkelAnime *skelAnime, u32 animation, f32 unk0, Actor *actor);
// ? func_800A52F8(?);
// ? func_800A54FC(?);
UNK_TYPE func_800A56C8(SkelAnime* skelAnime, f32 arg1);
// ? func_800A56F0(?);
// ? func_800A5774(?);
// ? func_800A57C0(?);
// ? func_800A598C(?);
// ? func_800A5E28(?);
// ? func_800A5F60(?);
// ? func_800A60D8(?);
// ? func_800A6460(?);
// ? func_800A698C(?);
// ? func_800A6AC4(?);
// ? func_800A6E10(?);
// ? func_800A6EF4(?);
// ? func_800A6FA0(?);
// ? func_800A72FC(?);
// ? func_800A730C(?);
// ? func_800A735C(?);
// ? func_800A73E0(?);
void func_800A76A4(MtxF* dest, f32 x, f32 y, f32 z);
// ? func_800A7704(?);
// ? func_800A7894(?);
void func_800A7A24(MtxF* dest, f32 x, f32 y, f32 z);
// ? func_800A7B04(?);
// ? func_800A7B84(?);
// ? func_800A7C60(?);
// ? func_800A7E70(?);
// ? func_800A7EC0(?);
// ? func_800A81A0(?);
// ? func_800A82C8(?);
// ? func_800A9A9C(?);
// ? func_800A9D28(?);
void func_800A9D40(u32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration,
u8 handlePulse, u32 handleSpeed);
void func_800A9E14(UNK_PTR dramAddr, size_t size, UNK_TYPE arg2);
void Sram_ReadWrite(UNK_TYPE arg0, UNK_PTR dramAddr, size_t size, UNK_TYPE arg3);
void func_800A9F30(s32, s32);
void func_800A9F6C(f32, u8, u8, u8);
void func_800AA000(f32, u8, u8, u8);
void func_800AA0B4();
u32 func_800AA148();
void func_800AA15C();
void func_800AA16C();
void func_800AA178(u32);
// ? func_800AA190(?);
void func_800AA278(View*, GraphicsContext*);
// ? func_800AA358(?);
// ? func_800AA43C(?);
void func_800AA460(View*, f32, f32, f32);
// ? func_800AA4FC(?);
// ? func_800AA550(?);
void func_800AA76C(View*, f32, f32, f32);
void func_800AA78C(View*, f32, f32, f32);
void func_800AA7AC(View*, f32);
// ? func_800AA7B8(?);
// ? func_800AA814(?);
// ? func_800AA890(?);
// ? func_800AAA50(?);
// ? func_800AAA9C(?);
// ? func_800AB0A8(?);
// ? func_800AB2C4(?);
// ? func_800AB560(?);
// ? func_800AB944(?);
// ? func_800AB9EC(?);
void func_800ABE74(f32, f32, f32);
// ? func_800AC030(?);
// ? func_800AC2F4(?);
// ? func_800AC89C(?);
// ? func_800AC9A4(?);
// ? func_800ACA28(?);
// ? func_800ACA90(?);
// ? func_800ACA98(?);
// ? func_800ACAF8(?);
// ? func_800ACE70(?);
// ? func_800ACE90(?);
// ? func_800ACE98(?);
// ? func_800AD000(?);
// ? func_800AD054(?);
// ? func_800AD080(?);
// ? func_800AD394(?);
// ? func_800AD5C0(?);
// ? func_800AD920(?);
// ? func_800AD950(?);
// ? func_800AD958(?);
// ? func_800ADBB0(?);
// ? func_800AE2C0(?);
// ? func_800AEFC8(?);
// ? func_800AF178(?);
// ? func_800AF218(?);
// ? func_800B0E50(?);
// ? func_800B1030(?);
// ? func_800B10C4(?);
// ? func_800B1744(?);
void PlayerCall_InitFuncPtrs();
// ? func_800B18B0(?);
// ? func_800B1CFC(?);
// ? func_800B1DBC(?);
// ? func_800B1E84(?);
// ? func_800B2074(?);
// ? func_800B2188(?);
// ? func_800B23E8(?);
// ? func_800B2400(?);
// ? func_800B2438(?);
// ? func_800B24D0(?);
// ? func_800B24D8(?);
// ? func_800B25EC(?);
// ? func_800B25F4(?);
// ? func_800B2604(?);
// ? func_800B2944(?);
// ? func_800B29D0(?);
// ? func_800B2A88(?);
// ? func_800B2AB0(?);
// ? func_800B2AB8(?);
// ? func_800B2B98(?);
// ? func_800B2DD4(?);
// ? func_800B2DDC(?);
// ? func_800B2E1C(?);
// ? func_800B2E30(?);
// ? func_800B301C(?);
// ? func_800B3044(?);
// ? func_800B304C(?);
// ? func_800B31D0(?);
// ? func_800B346C(?);
// ? func_800B3474(?);
// ? func_800B34CC(?);
// ? func_800B34D4(?);
// ? func_800B34E0(?);
// ? func_800B3538(?);
// ? func_800B3560(?);
// ? func_800B3568(?);
// ? func_800B3718(?);
// ? func_800B37DC(?);
// ? func_800B37E4(?);
// ? func_800B37EC(?);
// ? func_800B3840(?);
// ? func_800B3898(?);
// ? func_800B38A4(?);
// ? func_800B38FC(?);
// ? func_800B3908(?);
// ? func_800B3968(?);
// ? func_800B39B8(?);
// ? func_800B3B50(?);
// ? func_800B3BD4(?);
// ? func_800B3DF8(?);
// ? func_800B3EBC(?);
// ? func_800B3EFC(?);
// ? func_800B3F38(?);
// ? func_800B3F54(?);
// ? func_800B3F94(?);
// ? func_800B3FF4(?);
// ? func_800B404C(?);
// ? func_800B4088(?);
// ? func_800B41DC(?);
// ? func_800B42C0(?);
// ? func_800B4370(?);
// ? func_800B44E0(?);
// ? func_800B4920(?);
// ? func_800B4A68(?);
// ? func_800B4AA8(?);
// ? func_800B4AE4(?);
// ? func_800B4B20(?);
// ? func_800B4D58(?);
// ? func_800B4DE4(?);
// ? func_800B4E7C(?);
// ? func_800B8730(?);
// ? func_800B87D8(?);
// ? func_800B8978(?);
// ? func_800B8A0C(?);
// ? func_800B8BA4(?);
// ? func_800B8F58(?);
// ? func_800B9060(?);
// ? func_800B91B0(?);
// ? func_800B958C(?);
// ? func_800B9638(?);
// ? func_800BB0A0(?);
// ? func_800BB2B4(?);
// ? func_800BB570(?);
// ? func_800BB5E8(?);
// ? func_800BB5F8(?);
// ? func_800BB764(?);
// ? func_800BB838(?);
// ? func_800BB90C(?);
// ? func_800BBB6C(?);
// ? func_800BBC14(?);
void KaleidoManager_LoadOvl(KaleidoManagerOvl* ovl);
void KaleidoManager_ClearOvl(KaleidoManagerOvl* ovl);
void KaleidoManager_Init(GlobalContext* globalCtx);
void KaleidoManager_Destroy();
void* KaleidoManager_GetRamAddr(void* vram);
void KaleidoScopeCall_LoadPlayer();
void KaleidoScopeCall_Init(GlobalContext* globalCtx);
void KaleidoScopeCall_Destroy(GlobalContext* globalCtx);
void KaleidoScopeCall_Update(GlobalContext* globalCtx);
void KaleidoScopeCall_Draw(GlobalContext *globalCtx);
// ? func_800BC450(?);
// ? func_800BC490(?);
s32 func_800BC56C(GlobalContext*, s16);
// ? func_800BC5E0(?);
void func_800BC88C(GlobalContext*);
Gfx* func_800BC8A0(GlobalContext* globalCtx, Gfx* a1);
// ? func_800BC8EC(?);
UNK_TYPE func_800BCA64(UNK_ARGS);
// ? func_800BD314(?);
// ? func_800BED40(?);
// ? func_800BEDD8(?);
// ? func_800BFAE4(?);
s32 func_800BFC84(GlobalContext* globalCtx);
f32 func_800BFCB8(GlobalContext* globalCtx, MtxF* a1, Vec3f* a2);
void* func_800BFE5C(GlobalContext* globalCtx, RomFile* file);
// ? func_800BFEC4(?);
// ? func_800BFF0C(?);
// ? Area_Spawn(?);
// ? func_800C016C(?);
// ? func_800C0230(?);
s16 func_800C030C(GlobalContext* globalCtx);
// ? func_800C0314(?);
// ? func_800C0384(?);
Camera* func_800C04A4(GlobalContext*, s16);
// ? func_800C04D8(?);
void func_800C0704(GlobalContext*, s16, f32);
// ? func_800C0744(?);
// ? func_800C078C(?);
// ? func_800C0808(?);
// ? func_800C0874(?);
void func_800C0C88(GlobalContext *globalCtx);
// ? func_800C0A44(?);
// ? func_800C0A88(?);
void func_800C0AF4(GlobalContext*, s8, s16);
void func_800C0B60(GlobalContext* globalCtx);
void func_800C0BB4(GlobalContext* globalCtx);
// ? func_800C0CB8(?);
s32 func_800C0D28(GlobalContext* globalCtx);
// ? func_800C0D34(?);
// ? func_800C0E70(?);
// ? func_800C0EA8(?);
// ? func_800C0ED8(?);
// ? func_800C0F08(?);
// ? func_800C0F28(?);
// ? func_800C1258(?);
// ? func_800C170C(?);
// ? func_800C1AE8(?);
// ? func_800C1B24(?);
// ? func_800C1F20(?);
// ? func_800C1FA4(?);
// ? func_800C20B4(?);
// ? func_800C24BC(?);
// ? func_800C2500(?);
// ? func_800C2FE4(?);
// ? func_800C3770(?);
void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, u32 size);
void THGA_Dt(TwoHeadGfxArena* thga);
u32 THGA_IsCrash(TwoHeadGfxArena* thga);
void THGA_Init(TwoHeadGfxArena* thga);
s32 THGA_GetSize(TwoHeadGfxArena* thga);
Gfx* THGA_GetHead(TwoHeadGfxArena* thga);
void THGA_SetHead(TwoHeadGfxArena* thga, Gfx* start);
Gfx* THGA_GetTail(TwoHeadGfxArena* thga);
Gfx* THGA_AllocStartArray8(TwoHeadGfxArena* thga, u32 count);
Gfx* THGA_AllocStart8(TwoHeadGfxArena* thga);
Gfx* THGA_AllocStart8Wrapper(TwoHeadGfxArena* thga);
Gfx* THGA_AllocEnd(TwoHeadGfxArena* thga, u32 size);
Gfx* THGA_AllocEndArray64(TwoHeadGfxArena* thga, u32 count);
Gfx* THGA_AllocEnd64(TwoHeadGfxArena* thga);
Gfx* THGA_AllocEndArray16(TwoHeadGfxArena* thga, u32 count);
Gfx* THGA_AllocEnd16(TwoHeadGfxArena* thga);
void* THA_GetHead(TwoHeadArena* tha);
void THA_SetHead(TwoHeadArena* tha, void* start);
void* THA_GetTail(TwoHeadArena* tha);
void* THA_AllocStart(TwoHeadArena* tha, u32 size);
void* THA_AllocStart1(TwoHeadArena* tha);
void* THA_AllocEnd(TwoHeadArena* tha, u32 size);
void* THA_AllocEndAlign16(TwoHeadArena* tha, u32 size);
void* THA_AllocEndAlign(TwoHeadArena* tha, u32 size, u32 mask);
s32 THA_GetSize(TwoHeadArena* tha);
u32 THA_IsCrash(TwoHeadArena* tha);
void THA_Init(TwoHeadArena* tha);
void THA_Ct(TwoHeadArena* tha, void* ptr, u32 size);
void THA_Dt(TwoHeadArena* tha);
// ? func_800C3C20(?);
// ? func_800C3C80(?);
// ? func_800C3CB8(?);
// ? func_800C3E40(?);
// ? func_800C3FC4(?);
// ? func_800C3FEC(?);
// ? func_800C3E70(?);
void TitleSetup_InitImpl(GameState* gameState);
void TitleSetup_Destroy(GameState* gameState);
void TitleSetup_Init(GameState* gameState);
// ? func_800C4130(?);
// ? func_800C41F0(?);
// ? func_800C4344(?);
// ? func_800C4558(?);
// ? func_800C46EC(?);
// ? func_800C48CC(?);
// ? func_800C49F4(?);
// ? func_800C4A98(?);
// ? func_800C4AC8(?);
// ? func_800C4E80(?);
// ? func_800C4F20(?);
// ? func_800C5080(?);
// ? func_800C5360(?);
// ? func_800C546C(?);
// ? func_800C547C(?);
void* Game_Alloc(GameState* gameState, size_t size, char* file, s32 line);
void func_800C55D0(GameAlloc* this);
void* GameAlloc_MallocDebug(GameAlloc* this, u32 size, const char* file, s32 line);
void* GameAlloc_Malloc(GameAlloc* this, u32 size);
void GameAlloc_Free(GameAlloc* this, void* data);
void GameAlloc_Cleanup(GameAlloc* this);
void GameAlloc_Init(GameAlloc* this);
// ? func_800C5850(?);
// ? func_800C58BC(?);
// ? func_800C5AB0(?);
// ? func_800C5B14(?);
// ? func_800C5C2C(?);
// ? func_800C5D08(?);
// ? func_800C5D94(?);
// ? func_800C5DC0(?);
// ? func_800C61D8(?);
void Graph_ThreadEntry(void*);
void* Graph_Alloc(GraphicsContext* gfxCtx, size_t size);
void func_800C6AC4(Gfx** a0, GraphicsContext* gfxCtx, char* file, s32 line);
void func_800C6B54(Gfx** a0, GraphicsContext* gfxCtx, char* file, s32 line);
Gfx* func_800C6C20(Gfx* a0);
// ? func_800C6C28(?);
// ? func_800C6C3C(?);
ListAlloc* ListAlloc_Init(ListAlloc* this);
void* ListAlloc_Alloc(ListAlloc* this, u32 size);
void ListAlloc_Free(ListAlloc* this, void* data);
void ListAlloc_FreeAll(ListAlloc* this);
void Main_LogSystemHeap();
void Main(void*);
// OSMesgQueue* PadMgr_LockGetControllerQueue(PadMgr* padmgr);
// void PadMgr_UnlockReleaseControllerQueue(PadMgr* padmgr, OSMesgQueue* ctrlrqueue);
// void PadMgr_Lock2(PadMgr* padmgr);
// void PadMgr_Unlock2(PadMgr* padmgr)
// ? func_800C740C(?);
// ? func_800C7818(?);
// ? func_800C7928(?);
// ? func_800C7948(?);
// ? func_800C7974(?);
// ? func_800C7C14(?);
// ? func_800C7DD0(?);
void func_800C7E08(Input*, u32);
//void PadMgr_Init(PadMgr* padmgr, OSMesg mesg, UNK_TYPE arg2, OSId id, OSPri priority, void* stack);
// ? func_800C82A0(?);
// ? func_800C84E4(?);
// ? func_800C8534(?);
// ? func_800C87CC(?);
// ? func_800C87F0(?);
// ? func_800C8910(?);
// ? func_800C89D4(?);
// ? func_800C8A94(?);
// ? func_800C8BC4(?);
// ? func_800C8C40(?);
// ? func_800C8CB8(?);
// ? func_800C8EDC(?);
// ? func_800C9018(?);
// ? func_800C91BC(?);
// ? func_800C94B4(?);
// ? func_800C95F8(?);
void func_800C9644(u32 a0);
// ? func_800C9874(?);
// ? func_800C9940(?);
// ? func_800C9998(?);
// ? func_800C99BC(?);
// ? func_800C99C4(?);
// ? func_800C9E08(?);
// ? func_800C9E44(?);
// ? func_800CA104(?);
void SysCfb_Init(s32 n64dd);
u32 SysCfb_GetFbPtr(s32 idx);
u32 SysCfb_GetFbEnd();
f32 func_800CA720(f32);
f32 func_800CA774(f32);
// ? func_800CA7D0(?);
// ? func_800CA8E8(?);
// ? func_800CAB94(?);
// ? func_800CACAC(?);
// ? func_800CAD08(?);
// ? func_800CAEE8(?);
// ? func_800CAF5C(?);
// ? func_800CAFA0(?);
// ? func_800CAFEC(?);
// ? func_800CB010(?);
// ? func_800CB1F8(?);
// ? func_800CB338(?);
// ? func_800CB55C(?);
// ? func_800CB594(?);
// ? func_800CB600(?);
// ? func_800CB628(?);
// ? func_800CB650(?);
// ? func_800CB678(?);
// ? func_800CB698(?);
// ? func_800CB7B4(?);
// ? func_800CB824(?);
// ? func_800CB88C(?);
// ? func_800CB934(?);
// ? func_800CBAE4(?);
// ? func_800CBC60(?);
// ? func_800CC8B4(?);
// ? func_800CC9C8(?);
// ? func_800CCA04(?);
// ? func_800CCA3C(?);
// ? func_800CCB0C(?);
// ? func_800CCBE4(?);
// ? func_800CCF00(?);
// ? func_800CCF98(?);
// ? func_800CD044(?);
// ? func_800CD0F0(?);
// ? func_800CD168(?);
// ? func_800CD2D8(?);
// ? func_800CD34C(?);
// ? func_800CD668(?);
// ? func_800CD6B0(?);
// ? func_800CD760(?);
// ? func_800CD7D8(?);
// ? func_800CD95C(?);
// ? func_800CD9D0(?);
// ? func_800CDD18(?);
// ? func_800CDD60(?);
// ? func_800CDE10(?);
// ? func_800CDE88(?);
// ? func_800CE010(?);
// ? func_800CE084(?);
// ? func_800CE15C(?);
// ? func_800CE25C(?);
// ? func_800CE3C0(?);
// ? func_800CE46C(?);
// ? func_800CE4B8(?);
// ? func_800CE600(?);
// ? func_800CE800(?);
// ? func_800CE934(?);
// ? func_800CED50(?);
// ? func_800CEE0C(?);
// ? func_800CF7D0(?);
// ? func_800CFC6C(?);
// ? func_800CFC8C(?);
// ? func_800CFCAC(?);
// ? func_800CFD84(?);
// ? func_800CFDA4(?);
// ? func_800CFF14(?);
// ? func_800CFF34(?);
// ? func_800D0104(?);
// ? func_800D0480(?);
// ? func_800D04F0(?);
// ? func_800D0560(?);
// ? func_800D05D0(?);
// ? func_800D05DC(?);
// ? func_800D05F0(?);
s16 atan2s(f32 x, f32 y);
f32 atan2f(f32 x, f32 y);
void Matrix_Init(GameState* gameState);
void Matrix_Push(void);
void Matrix_Pull(void);
void Matrix_Get(MtxF* dest);
void Matrix_Put(MtxF* src);
void Matrix_Mult(MtxF* mf, u8 mode);
void Matrix_Translate(f32 x, f32 y, f32 z, u8 mode);
void Matrix_Scale(f32 x, f32 y, f32 z, u8 mode);
void Matrix_RotateX(f32 x, u8 mode);
void Matrix_RotateY(f32 y, u8 mode);
void Matrix_RotateZ(f32 z, u8 mode);
void Matrix_RotateXYZ(s16 x, s16 y, s16 z, u8 mode);
void func_800D1340(Vec3f* arg0, Vec3s* arg1);
void func_800D1694(f32 x, f32 y, f32 z, Vec3s* vec);
Mtx* Matrix_MtxFToMtx(MtxF* src, Mtx* dest);
Mtx* Matrix_ToMtx(Mtx* dest, char* file, s32 line);
Mtx* Matrix_NewMtx(GraphicsContext* gfxCtx, char* file, s32 line);
Mtx* Matrix_MtxFToNewMtx(MtxF* src, GraphicsContext* gfxCtx);
void Matrix_MultVec3f(Vec3f* src, Vec3f* dest);
void Matrix_MtxFCopy(MtxF* dest, MtxF* src);
void Matrix_MtxToMtxF(Mtx* src, MtxF* dest);
void Matrix_MultVec3fExt(Vec3f* src, Vec3f* dest, MtxF* mf);
void Matrix_Reverse(MtxF* mf);
void func_800D1FD4(MtxF* mf);
void func_800D20CC(MtxF* mf, Vec3s* vec, s32 flag);
void func_800D2264(MtxF* mf, Vec3s* vec, s32 flag);
void func_800D23FC(f32 f, Vec3f* vec, u8 mode);
MtxF* Matrix_CheckFloats(MtxF* mf, char* file, s32 line);
void func_800D2CEC(Mtx* mtx, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6);
// ? func_800D2DF0(?);
// ? func_800D2DFC(?);
// ? func_800D2E14(?);
// ? func_800D2E20(?);
// ? func_800D2E30(?);
// ? func_800D3140(?);
// ? func_800D3140(?);
// ? func_800D31F0(?);
// ? func_800D3210(?);
void IrqMgr_AddClient(IrqMgr* this, IrqMgrClient* c, OSMesgQueue* msgQ);
void IrqMgr_RemoveClient(IrqMgr* this, IrqMgrClient* c);
void IrqMgr_SendMesgForClient(IrqMgr* this, OSMesg msg);
void IrqMgr_JamMesgForClient(IrqMgr* this, OSMesg msg);
void IrqMgr_HandlePreNMI(IrqMgr *this);
void IrqMgr_CheckStack();
void IrqMgr_HandlePRENMI450(IrqMgr* this);
void IrqMgr_HandlePRENMI480(IrqMgr* this);
void IrqMgr_HandlePRENMI500(IrqMgr* this);
void IrqMgr_HandleRetrace(IrqMgr* this);
void IrqMgr_ThreadEntry(void* arg0);
void IrqMgr_Create(IrqMgr* this, void* stack, OSPri pri, u8 retraceCount);
void DebugArena_CheckPointer(void* ptr, u32 size, const char* name, const char* action);
void* DebugArena_Malloc(u32 size);
void* DebugArena_MallocDebug(u32 size, const char* file, s32 line);
void* DebugArena_MallocR(u32 size);
void* DebugArena_MallocRDebug(u32 size, const char* file, s32 line);
void* DebugArena_Realloc(void* ptr, u32 newSize);
void* DebugArena_ReallocDebug(void* ptr, u32 newSize, const char* file, s32 line);
void DebugArena_Free(void* ptr);
void DebugArena_FreeDebug(void* ptr, const char* file, s32 line);
void* DebugArena_Calloc(u32 num, u32 size);
void DebugArena_Display();
void DebugArena_GetSizes(u32* outMaxFree, u32* outFree, u32* outAlloc);
void DebugArena_Check();
void DebugArena_Init(void* start, u32 size);
void DebugArena_Cleanup();
u8 DebugArena_IsInitalized();
void Fault_SleepImpl(u32);
void Fault_ClientProcessThread(FaultClientContext*);
void Fault_ProcessClientContext(FaultClientContext*);
u32 Fault_ProcessClient(u32, u32, u32);
void Fault_AddClient(FaultClient*, void*, void*, void*);
void Fault_RemoveClient(FaultClient*);
void Fault_AddAddrConvClient(FaultAddrConvClient*, void*, void*);
void Fault_RemoveAddrConvClient(FaultAddrConvClient*);
u32 Fault_ConvertAddress(FaultAddrConvClient*);
void Fault_Sleep(u32);
void Fault_PadCallback(Input*);
void Fault_UpdatePadImpl();
u32 Fault_WaitForInputImpl();
void Fault_WaitForInput();
void Fault_DrawRec(s32, s32, s32, s32, u16);
void Fault_FillScreenBlack();
void Fault_FillScreenRed();
void Fault_DrawCornerRec(u16);
void Fault_PrintFReg(s32, f32*);
void Fault_LogFReg(s32, f32*);
void Fault_PrintFPCR(u32);
void Fault_LogFPCR(u32);
void Fault_PrintThreadContext(OSThread*);
void Fault_LogThreadContext(OSThread*);
OSThread* Fault_FindFaultedThread();
void Fault_Wait5Seconds();
void Fault_WaitForButtonCombo();
void Fault_DrawMemDumpPage(const char*, u32*, u32);
void Fault_DrawMemDump(u32, u32, u32, u32);
// ? func_800D59F8(?);
void Fault_DrawStackTrace(OSThread*, s32, s32, u32);
void Fault_LogStackTrace(OSThread*, u32);
void Fault_ResumeThread(OSThread*);
void Fault_CommitFB();
void Fault_ProcessClients();
void Fault_UpdatePad();
void Fault_ThreadEntry(void*);
void Fault_SetFB(void*, u16, u16);
void Fault_Start(void);
void Fault_HangupFaultClient(const char*, const char*);
void Fault_AddHungupAndCrashImpl(const char*, const char*);
void Fault_AddHungupAndCrash(const char*, u32);
void FaultDrawer_SetOsSyncPrintfEnabled(u32);
void FaultDrawer_DrawRecImpl(s32, s32, s32, s32, u16);
void FaultDrawer_DrawChar(char);
s32 FaultDrawer_ColorToPrintColor(u16);
void FaultDrawer_UpdatePrintColor();
void FaultDrawer_SetForeColor(u16);
void FaultDrawer_SetBackColor(u16);
void FaultDrawer_SetFontColor(u16);
void FaultDrawer_SetCharPad(s8, s8);
void FaultDrawer_SetCursor(s32, s32);
void FaultDrawer_FillScreen();
u32 FaultDrawer_FormatStringFunc(u32, const char*, s32);
void FaultDrawer_VPrintf(const char*, char*);
void FaultDrawer_Printf(const char*, ...);
void FaultDrawer_DrawText(s32, s32, const char*, ...);
void FaultDrawer_SetDrawerFB(void*, u16, u16);
void FaultDrawer_SetInputCallback(void(*)());
void FaultDrawer_SetDefault();
// ? func_800D7CD0(?);
// ? func_800D7D04(?);
// ? func_800D7EA4(?);
// ? func_800D7F5C(?);
// ? func_800D7FC4(?);
// ? func_800D7FD0(?);
// ? func_800D805C(?);
// ? func_800D8124(?);
// ? func_800D82A0(?);
// ? func_800D8400(?);
// ? func_800DAC80(?);
// ? func_800DAC90(?);
// ? func_800DACC0(?);
// ? func_800DB03C(?);
// ? func_800DB0C4(?);
// ? func_800DB2C0(?);
// ? func_800DB330(?);
// ? func_800DB3D8(?);
// ? func_800DB480(?);
// ? func_800DB4E4(?);
// ? func_800DB680(?);
// ? func_800DB828(?);
// ? func_800DBA40(?);
// ? func_800DBAE8(?);
// ? func_800DBB9C(?);
// ? func_800DBBD4(?);
// ? func_800DBC20(?);
// ? func_800DBC64(?);
// ? func_800DBCB0(?);
// ? func_800DBCD4(?);
// ? func_800DBD10(?);
// ? func_800DBD38(?);
// ? func_800DBD60(?);
// ? func_800DBD94(?);
// ? func_800DBDB0(?);
// ? func_800DBDE4(?);
// ? func_800DBE38(?);
// ? func_800DBE74(?);
// ? func_800DBE98(?);
// ? func_800DBEB0(?);
// ? func_800DBF5C(?);
// ? func_800DC008(?);
// ? func_800DC074(?);
// ? func_800DC0E0(?);
// ? func_800DC124(?);
// ? func_800DC164(?);
// ? func_800DC1D8(?);
// ? func_800DC2DC(?);
// ? func_800DC384(?);
// ? func_800DC910(?);
// ? func_800DD62C(?);
// ? func_800DD6CC(?);
// ? func_800DD9F4(?);
// ? func_800DDB64(?);
// ? func_800DDE20(?);
// ? func_800DDE3C(?);
// ? func_800DDF80(?);
// ? func_800DE048(?);
// ? func_800DE1B4(?);
// ? func_800DE238(?);
// ? func_800DE258(?);
// ? func_800DE2B0(?);
// ? func_800DE308(?);
// ? func_800DE344(?);
// ? func_800DE380(?);
// ? func_800DE3DC(?);
// ? func_800DE434(?);
// ? func_800DE45C(?);
// ? func_800DE470(?);
// ? func_800DE4B0(?);
// ? func_800DE5F0(?);
// ? func_800DE650(?);
// ? func_800DE6D4(?);
// ? func_800DE758(?);
// ? func_800DE81C(?);
// ? func_800DE8E0(?);
// ? func_800DF074(?);
// ? func_800DF0CC(?);
// ? func_800DF5DC(?);
// ? func_800DF630(?);
// ? func_800DF688(?);
// ? func_800DF7BC(?);
// ? func_800DF7C4(?);
// ? func_800DF888(?);
// ? func_800DF8F4(?);
// ? func_800DFBF8(?);
// ? func_800E04E8(?);
// ? func_800E0540(?);
// ? func_800E05C4(?);
// ? func_800E0634(?);
// ? func_800E06CC(?);
// ? func_800E0964(?);
// ? func_800E0AD8(?);
// ? func_800E0BB4(?);
// ? func_800E0BF8(?);
// ? func_800E0C80(?);
// ? func_800E0CBC(?);
// ? func_800E0E0C(?);
// ? func_800E0E6C(?);
// ? func_800E0E90(?);
// ? func_800E0EB4(?);
// ? func_800E1148(?);
// ? func_800E11F0(?);
// ? func_800E12DC(?);
// ? func_800E1618(?);
// ? func_800E18B0(?);
// ? func_800E1928(?);
// ? func_800E1A18(?);
// ? func_800E1A48(?);
// ? func_800E1A78(?);
// ? func_800E1AD8(?);
// ? func_800E1B08(?);
// ? func_800E1B68(?);
// ? func_800E1C18(?);
// ? func_800E1C78(?);
// ? func_800E1D64(?);
// ? func_800E1E34(?);
// ? func_800E1E6C(?);
// ? func_800E1EB0(?);
// ? func_800E1EF4(?);
// ? func_800E1F38(?);
// ? func_800E1F7C(?);
// ? func_800E202C(?);
// ? func_800E20D4(?);
// ? func_800E2124(?);
// ? func_800E217C(?);
// ? func_800E22C4(?);
// ? func_800E2318(?);
// ? func_800E2338(?);
// ? func_800E2454(?);
// ? func_800E2558(?);
// ? func_800E2768(?);
// ? func_800E27A4(?);
// ? func_800E27F8(?);
// ? func_800E283C(?);
// ? func_800E2AA8(?);
// ? func_800E2BCC(?);
// ? func_800E2BE0(?);
// ? func_800E2CE0(?);
// ? func_800E2FEC(?);
// ? func_800E301C(?);
// ? func_800E3034(?);
// ? func_800E3094(?);
// ? func_800E3400(?);
// ? func_800E3414(?);
// ? func_800E35E0(?);
// ? func_800E3678(?);
// ? func_800E36EC(?);
// ? func_800E3874(?);
// ? func_800E38F8(?);
// ? func_800E390C(?);
// ? func_800E3A14(?);
// ? func_800E3A44(?);
// ? func_800E3AC8(?);
// ? func_800E3BEC(?);
// ? func_800E3D10(?);
// ? func_800E3D1C(?);
// ? func_800E3E58(?);
// ? func_800E3FB4(?);
// ? func_800E4044(?);
// ? func_800E4058(?);
// ? func_800E4198(?);
// ? func_800E4590(?);
// ? func_800E4744(?);
// ? func_800E48C0(?);
// ? func_800E4918(?);
// ? func_800E4D94(?);
// ? func_800E4EEC(?);
// ? func_800E4F58(?);
// ? func_800E4FB0(?);
// ? func_800E4FE0(?);
// ? func_800E5000(?);
// ? func_800E5584(?);
// ? func_800E5958(?);
// ? func_800E59AC(?);
// ? func_800E59F4(?);
// ? func_800E5A8C(?);
// ? func_800E5AD8(?);
// ? func_800E5AFC(?);
// ? func_800E5B20(?);
// ? func_800E5B50(?);
// ? func_800E5B80(?);
// ? func_800E5C10(?);
// ? func_800E5C28(?);
// ? func_800E5D6C(?);
// ? func_800E5E20(?);
// ? func_800E5E84(?);
// ? func_800E5EDC(?);
// ? func_800E5F34(?);
// ? func_800E5F88(?);
// ? func_800E6024(?);
// ? func_800E6128(?);
// ? func_800E6300(?);
// ? func_800E6680(?);
// ? func_800E66C0(?);
// ? func_800E67C0(?);
// ? func_800E6818(?);
// ? func_800E6840(?);
// ? func_800E6880(?);
// ? func_800E68C0(?);
// ? func_800E6940(?);
// ? func_800E6DB8(?);
// ? func_800E6E68(?);
// ? func_800E6F28(?);
// ? func_800E6F8C(?);
// ? func_800E745C(?);
// ? func_800E7498(?);
// ? func_800E756C(?);
// ? func_800E7650(?);
// ? func_800E7744(?);
// ? func_800E7888(?);
// ? func_800E7B60(?);
// ? func_800E7B80(?);
// ? func_800E7BA0(?);
// ? func_800E7CA4(?);
// ? func_800E7CFC(?);
// ? func_800E7D0C(?);
// ? func_800E7D5C(?);
// ? func_800E7E00(?);
// ? func_800E7F60(?);
// ? func_800E809C(?);
// ? func_800E80DC(?);
// ? func_800E8108(?);
// ? func_800E8188(?);
// ? func_800E82C0(?);
// ? func_800E82F4(?);
// ? func_800E8320(?);
// ? func_800E836C(?);
// ? func_800E83BC(?);
// ? func_800E84B4(?);
// ? func_800E8788(?);
// ? func_800E88C0(?);
// ? func_800E8A88(?);
// ? func_800E8BD4(?);
// ? func_800E8C30(?);
// ? func_800E8C68(?);
// ? func_800E8EA4(?);
// ? func_800E8F00(?);
// ? func_800E8FB8(?);
// ? func_800E8FE4(?);
// ? func_800E9004(?);
// ? func_800E9340(?);
// ? func_800E93A8(?);
// ? func_800E9584(?);
// ? func_800E96D8(?);
// ? func_800E97FC(?);
// ? func_800E9878(?);
// ? func_800E98C8(?);
// ? func_800E9934(?);
// ? func_800E9A2C(?);
// ? func_800E9AAC(?);
// ? func_800E9B44(?);
// ? func_800E9B6C(?);
// ? func_800E9C28(?);
// ? func_800E9C68(?);
// ? func_800E9CA8(?);
// ? func_800E9D48(?);
// ? func_800E9D5C(?);
// ? func_800E9D94(?);
// ? func_800E9DD4(?);
// ? func_800E9ED8(?);
// ? func_800E9F64(?);
// ? func_800EA0C0(?);
// ? func_800EA440(?);
// ? func_800EAAE0(?);
// ? func_800EAEF4(?);
// ? func_800EAF24(?);
// ? func_800EAF98(?);
// ? func_800EB044(?);
// ? func_800EB068(?);
// ? func_800EBD58(?);
// ? func_800EC564(?);
// ? func_800EC618(?);
// ? func_800EC668(?);
// ? func_800EC734(?);
// ? func_800EC80C(?);
// ? func_800EC8DC(?);
// ? func_800ECA00(?);
// ? func_800ECA60(?);
// ? func_800ECAF0(?);
// ? func_800ECB34(?);
// ? func_800ECB7C(?);
// ? func_800ECC04(?);
// ? func_800ECDBC(?);
// ? func_800ECDF8(?);
// ? func_800ED200(?);
// ? func_800ED458(?);
// ? func_800ED858(?);
// ? func_800ED93C(?);
// ? func_800EDA3C(?);
// ? func_800EDD68(?);
// ? func_800EE170(?);
// ? func_800EE29C(?);
// ? func_800EE2D4(?);
// ? func_800EE318(?);
// ? func_800EE3C8(?);
// ? func_800EE3D4(?);
// ? func_800EE3F8(?);
// ? func_800EE404(?);
// ? func_800EE57C(?);
// ? func_800EE5EC(?);
// ? func_800EE6F4(?);
// ? func_800EE824(?);
// ? func_800EE930(?);
// ? func_800EE97C(?);
// ? func_800EE9D0(?);
// ? func_800EEA50(?);
// ? func_800F1BDC(?);
// ? func_800F2150(?);
// ? func_800F227C(?);
// ? func_800F2464(?);
// ? func_800F27A0(?);
// ? func_800F28AC(?);
// ? func_800F28B4(?);
// ? func_800F29FC(?);
// ? func_800F2A04(?);
// ? func_800F2D6C(?);
// ? func_800F2E28(?);
// ? func_800F3054(?);
// ? func_800F3188(?);
// ? func_800F32F0(?);
// ? func_800F3468(?);
// ? func_800F35EC(?);
// ? func_800F37B8(?);
// ? func_800F3990(?);
// ? func_800F3A08(?);
// ? func_800F3ED4(?);
// ? func_800F3F3C(?);
// ? func_800F3F84(?);
// ? func_800F4010(?);
void func_800F436C(UNK_TYPE arg0, s16 arg1, f32 arg2);
// ? func_800F4414(?);
// ? func_800F4524(?);
// ? func_800F4784(?);
// ? func_800F491C(?);
// ? func_800F4A70(?);
void func_800F4C58(Vec3f*, u16, u8);
// ? func_800F50CC(?);
// ? func_800F510C(?);
// ? func_800F5510(?);
// ? func_800F5550(?);
// ? func_800F56A8(?);
void func_800F595C(u16);
void func_800F59E8(u16);
// ? func_800F5ACC(?);
// ? func_800F5C64(?);
// ? func_800F5CF8(?);
// ? func_800F5E18(?);
// ? func_800F5E90(?);
// ? func_800F64E0(?);
// ? func_800F66C0(?);
// ? func_800F6700(?);
// ? func_800F67A0(?);
// ? func_800F6828(?);
void func_800F68BC(s8);
// ? func_800F68D4(?);
// ? func_800F691C(?);
void func_800F6964(u16);
// ? func_800F6B68(?);
// ? func_800F6BB8(?);
// ? func_800F6C14(?);
// ? func_800F6C34(?);
// ? func_800F6D58(?);
// ? func_800F6E7C(?);
// ? func_800F6FB4(?);
// ? func_800F70F8(?);
// ? func_800F711C(?);
// ? func_800F7170(?);
// ? func_800F71BC(?);
void func_800F7260(u16);
// ? func_800F72B8(?);
// ? func_800F731C(?);
void Audio_PlaySoundGeneral(u16 sfxId, Vec3f* a1, u32 a2, u32* a3, u32* a4, u32* a5);
// ? func_800F74E0(?);
// ? func_800F7680(?);
// ? func_800F7B54(?);
// ? func_800F7CEC(?);
// ? func_800F8480(?);
// ? func_800F87A0(?);
// ? func_800F8884(?);
// ? func_800F89E8(?);
void func_800F8D04(u32 a0);
// ? func_800F8D04(?);
// ? func_800F8E3C(?);
// ? func_800F8F34(?);
// ? func_800F8F88(?);
// ? func_800F8FF4(?);
// ? func_800F905C(?);
// ? func_800F9280(?);
// ? func_800F9474(?);
// ? func_800F94FC(?);
void Audio_SetBGM(u32 bgmID);
// ? func_800FA034(?);
u16 func_800FA0B4(s32 a0);
// ? func_800FA11C(?);
// ? func_800FA240(?);
// ? func_800FA3DC(?);
// ? func_800FAD34(?);
// ? func_800FADF8(?);
// ? func_800FAEB4(?);
void GfxPrint_InitDlist(GfxPrint*);
void GfxPrint_SetColor(GfxPrint*, u32, u32, u32, u32);
void GfxPrint_SetPosPx(GfxPrint*, s32, s32);
void GfxPrint_SetPos(GfxPrint*, s32, s32);
void GfxPrint_SetBasePosPx(GfxPrint*, s32, s32);
void GfxPrint_PrintCharImpl(GfxPrint*, u8);
void GfxPrint_PrintChar(GfxPrint*, u8);
void GfxPrint_PrintStringWithSize(GfxPrint*, const void*, size_t, size_t);
GfxPrint* GfxPrint_Callback(GfxPrint*, const char*, size_t);
void GfxPrint_Ctor(GfxPrint*);
void GfxPrint_Dtor(GfxPrint*);
void GfxPrint_Open(GfxPrint*, Gfx*);
Gfx* GfxPrint_Close(GfxPrint*);
void GfxPrint_VPrintf(GfxPrint*, const char*, va_list);
void GfxPrint_Printf(GfxPrint*, const char*, ...);
void func_800FBCE0();
void func_800FBFD8();
void *Overlay_AllocateAndLoad(u32 vRomStart, u32 vRomEnd, void *vRamStart, void *vRamEnd);
// ? func_800FC258(?);
void Overlay_DoRelocation(void *allocatedVRamAddress, OverlayRelocationSection *overlayInfo, void *vRamAddress);
s32 Overlay_Load(u32 vRomStart, u32 vRomEnd, void *vRamStart, void *vRamEnd, void *allocatedVRamAddress);
// ? func_800FC800(?);
// ? func_800FC83C(?);
// ? func_800FCAB4(?);
void SystemHeap_Init(void *start, u32 size);
// ? func_800FCC00(?);
// ? func_800FCC08(?);
// ? func_800FCC10(?);
// ? func_800FCC1C(?);
// ? func_800FCC24(?);
// ? func_800FCC6C(?);
// ? func_800FCD40(?);
// ? func_800FCE80(?);
// ? func_800FCF34(?);
// ? func_800FCF54(?);
// ? func_800FCFA0(?);
// ? func_800FD0C4(?);
// ? func_800FD210(?);
f32 func_800FD250(f32 f12, f32 f14);
// ? func_800FD338(?);
// ? func_800FD390(?);
// ? func_800FD3C8(?);
// ? func_800FD400(?);
// ? func_800FD438(?);
// ? func_800FD470(?);
void SystemArena_CheckPointer(void* ptr, u32 size, const char* name, const char* action);
void* SystemArena_Malloc(u32 size);
void* SystemArena_MallocDebug(u32 size, const char* file, s32 line);
void* SystemArena_MallocR(u32 size);
void* SystemArena_MallocRDebug(u32 size, const char* file, s32 line);
void* SystemArena_Realloc(void* ptr, u32 newSize);
void* SystemArena_ReallocDebug(void* ptr, u32 newSize, const char* file, s32 line);
void SystemArena_Free(void* ptr);
void SystemArena_FreeDebug(void* ptr, const char* file, s32 line);
void* SystemArena_Calloc(u32 num, u32 size);
void SystemArena_Display();
void SystemArena_GetSizes(u32* outMaxFree, u32* outFree, u32* outAlloc);
void SystemArena_Check();
void SystemArena_Init(void* start, u32 size);
void SystemArena_Cleanup();
u8 SystemArena_IsInitalized();
// ? func_800FD9A0(?);
f32 Math_Rand_ZeroOne();
bool ArenaImpl_GetFillAllocBlock(Arena* arena);
bool ArenaImpl_GetFillFreeBlock(Arena* arena);
bool ArenaImpl_GetCheckFreeBlock(Arena* arena);
void ArenaImpl_SetFillAllocBlock(Arena* arena);
void ArenaImpl_SetFillFreeBlock(Arena* arena);
void ArenaImpl_SetCheckFreeBlock(Arena* arena);
void ArenaImpl_UnsetFillAllocBlock(Arena* arena);
void ArenaImpl_UnsetFillFreeBlock(Arena* arena);
void ArenaImpl_UnsetCheckFreeBlock(Arena* arena);
void ArenaImpl_SetDebugInfo(ArenaNode* node, const char* file, s32 line, Arena* arena);
void ArenaImpl_LockInit(Arena* arena);
void ArenaImpl_Lock(Arena* arena);
void ArenaImpl_Unlock(Arena* arena);
ArenaNode* ArenaImpl_GetNextBlock(ArenaNode* node);
ArenaNode* ArenaImpl_GetPrevBlock(ArenaNode* node);
ArenaNode* ArenaImpl_GetLastBlock(Arena* arena);
void __osMallocInit(Arena* arena, void* start, u32 size);
void __osMallocAddBlock(Arena* arena, void* start, s32 size);
void ArenaImpl_RemoveAllBlocks(Arena* arena);
void __osMallocCleanup(Arena* arena);
u8 __osMallocIsInitalized(Arena* arena);
void __osMalloc_FreeBlockTest(Arena* arena, ArenaNode* node);
void* __osMalloc_NoLockDebug(Arena* arena, u32 size, const char* file, s32 line);
void* __osMallocDebug(Arena* arena, u32 size, const char* file, s32 line);
void* __osMallocRDebug(Arena *arena, u32 size, const char *file, s32 line);
void* __osMalloc_NoLock(Arena *arena, u32 size);
void* __osMalloc(Arena* arena, u32 size);
void* __osMallocR(Arena *arena, u32 size);
void __osFree_NoLock(Arena* arena, void* ptr);
void __osFree(Arena* arena, void* ptr);
void __osFree_NoLockDebug(Arena* arena, void* ptr, const char* file, s32 line);
void __osFreeDebug(Arena* arena, void* ptr, const char* file, s32 line);
void* __osRealloc(Arena* arena, void* ptr, u32 newSize);
void* __osReallocDebug(Arena* arena, void* ptr, u32 newSize, const char* file, s32 line);
void ArenaImpl_GetSizes(Arena* arena, u32* outMaxFree, u32* outFree, u32* outAlloc);
void __osDisplayArena(Arena* arena);
void ArenaImpl_FaultClient(Arena* arena);
u32 __osCheckArena(Arena* arena);
u8 func_800FF334(Arena* arena);
// ? func_800FF3A0(?);
// ? func_800FF4AC(?);
// ? func_800FF540(?);
// ? func_800FF5A8(?);
// ? func_800FF62C(?);
// ? func_800FF698(?);
// ? func_800FF740(?);
// ? func_800FF7FC(?);
// ? func_800FF8D4(?);
// ? func_800FFA50(?);
// ? func_800FFC78(?);
// ? func_800FFE14(?);
// ? func_800FFF50(?);
// ? func_80100040(?);
// ? func_801001E0(?);
f32 sinf(f32);
s16 sins(u16);
// ? func_801004C0(?);
// ? func_801005CC(?);
// ? func_80100734(?);
// s32 osSetVibration(unk_controller_t *arg0, u32 vibrate);
// void osSetUpMempakWrite(s32 ctrlridx, pif_data_buffer_t* buf);
// s32 osProbeVibrationPack(OSMesgQueue* ctrlrqueue, unk_controller_t *unk_controller, u32 ctrlridx);
// void __osSiCreateAccessQueue();
// void __osSiGetAccess();
// void __osSiRelAccess();
// s32 osContInit(OSMesgQueue *mq, u8 *ctl_present_bitfield, OSContStatus *status);
// void __osContGetInitData(u8 *ctl_present_bitfield, OSContStatus *status);
// void __osPackRequestData(u8 command);
// s32 osContStartReadData(OSMesgQueue *mq);
// void osContGetReadData(OSContPad *pad);
// void __osPackReadData();
// ? guPerspectiveF(?);
// ? guPerspective(?);
// ? func_80101360(?);
// s32 __osSiRawStartDma(s32 dir, void *addr);
// ? osSpTaskYield(?);
// ? func_801014C0(?);
// ? func_80101594(?);
// ? func_80101910(?);
// ? func_801019E0(?);
// ? func_80101AA4(?);
// ? func_80101B40(?);
// ? func_80101B90(?);
// ? func_80101E34(?);
// ? func_80101EB0(?);
// ? func_801021E4(?);
// ? osStopTimer(?);
// ? func_80102420(?);
// ? func_80102494(?);
// ? func_80102590(?);
// ? func_801028E0(?);
// ? func_80102A44(?);
// ? func_80102BF0(?);
// ? func_80102CC4(?);
// ? func_80102FA0(?);
// ? func_80103010(?);
// ? func_801031F0(?);
// ? func_80103210(?);
// ? func_8010328C(?);
// ? func_801032B0(?);
void func_80103A70(UNK_PTR, Gfx*, Hilite*, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s32, s32);
// ? func_80103B30(?);
// ? func_80103B60(?);
// ? func_80103BB0(?);
// ? func_80103D58(?);
// ? func_80103DC0(?);
// ? func_80103E20(?);
// ? func_80103FA4(?);
// ? func_80103FF0(?);
// ? func_80104140(?);
// ? func_80104160(?);
u32 osDpGetStatus(void);
void osDpSetStatus(u32 status);
// ? func_801041E0(?);
// ? func_801043B8(?);
// ? func_80104450(?);
// ? func_801045A4(?);
f32 cosf(f32);
s16 coss(u16);
void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount);
// ? func_8010499C(?);
// ? func_80104A50(?);
// ? func_80104B00(?);
// ? func_80104C80(?);
void func_80104D00(u8 a0);
// ? func_80104D60(?);
// ? func_80104F40(?);
// ? func_80105148(?);
// ? func_80105250(?);
// ? func_80105788(?);
// ? func_80105A60(?);
// ? osAiGetLength(?);
// ? func_80105C20(?);
// ? func_80105CF0(?);
// ? func_80105F40(?);
// ? func_80106170(?);
// ? func_80106240(?);
u32 __osSpGetStatus();
void __osSpSetStatus(u32 status);
// ? osWritebackDCacheAll(?);
OSThread* __osGetCurrFaultedThread();
// ? func_801064E0(?);
// ? __d_to_ll(?);
// ? __f_to_ll(?);
// ? __d_to_ull(?);
// ? __f_to_ull(?);
// ? __ll_to_d(?);
// ? __ll_to_f(?);
// ? __ull_to_d(?);
// ? __ull_to_f(?);
// ? func_80106760(?);
// ? func_801067A0(?);
f32 absf(f32);
// ? func_80106860(?);
// ? func_801068B0(?);
// ? func_801069B0(?);
u8 func_80106BC8(GlobalContext* globalCtx);
// ? func_80106C88(?);
// ? func_80106CCC(?);
// ? func_80106D40(?);
// ? func_80106F1C(?);
// ? func_80107244(?);
// ? func_80107448(?);
// ? func_80107628(?);
// ? func_801076CC(?);
// ? func_80107980(?);
// ? func_801080B4(?);
// ? func_801083F8(?);
// ? func_801086B0(?);
// ? func_80109968(?);
// ? func_80109B3C(?);
// ? func_8010B0C0(?);
// ? func_8010B680(?);
void func_8010B720(GlobalContext* globalCtx, u16 textId);
// ? func_8010B820(?);
// ? func_8010BD58(?);
u8 func_8010BDBC(MessageContext* msgCtx);
// ? func_8010BED8(?);
// ? func_8010C358(?);
// ? func_8010C39C(?);
// ? func_8010F2CC(?);
// ? func_8010F494(?);
// ? func_8010F58C(?);
// ? func_8010F6F0(?);
void func_8011040C(void);
// ? func_80110450(?);
// ? func_80110460(?);
// ? func_801104C8(?);
void func_80110990(GlobalContext* globalCtx);
void func_801109B0(GlobalContext* globalCtx);
void func_80110F68(GlobalContext* globalCtx);
void func_80112098(GlobalContext* globalCtx);
void func_80800878(TitleContext*);
#endif