mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 07:40:42 -04:00
1153 lines
39 KiB
C
1153 lines
39 KiB
C
#include "common.h"
|
|
#include "../shared/engine_core.h"
|
|
|
|
/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) ===================
|
|
* The file-scope decl environment from earlier code regions of this object —
|
|
* file-local types, col-0 decls, DEFINE_func macro externs, and each earlier
|
|
* definition's implied prototype (types first, then decls in original order).
|
|
* Decls emit no code => byte-neutral. See cookbook §8c. */
|
|
extern void func_80128288(void);
|
|
extern void func_80128158(void);
|
|
extern void func_801285E4(void);
|
|
extern void func_80128178(void);
|
|
extern void func_80128678(void);
|
|
extern void func_80128198(void);
|
|
extern void func_80128714(void);
|
|
extern void func_801281B8(void);
|
|
extern void func_8013E67C(void);
|
|
extern void func_801281D8(void);
|
|
extern void func_8013E558(void);
|
|
extern void func_801281F8(void);
|
|
extern s32 D_8019EFC8;
|
|
extern s32 func_80128218(void);
|
|
extern void func_80128A28(void);
|
|
extern void func_80128228(void);
|
|
extern void func_80128AF4(void);
|
|
extern void func_80128248(void);
|
|
extern void func_801282EC(void);
|
|
extern void func_80128268(void);
|
|
extern u16 D_800B99F6;
|
|
extern void (*D_801801C8[])(void);
|
|
extern void func_80011B7C(int);
|
|
extern void func_801282CC(void);
|
|
extern void func_8001C0C8(void);
|
|
extern void func_80015310(void);
|
|
extern void func_80129258(void);
|
|
extern void func_801378F0(void);
|
|
extern void func_80010E14(void);
|
|
extern s16 currentLocationId;
|
|
extern s32 func_80029504(void);
|
|
extern s32 func_800CF854(s32);
|
|
extern s32 func_80128998(void);
|
|
extern s32 func_801289F0(void);
|
|
extern s32 func_801288E8(s32);
|
|
extern s32 func_80128940(s32);
|
|
extern s32 func_80029178(s32);
|
|
extern s32 func_801288B0(void);
|
|
extern void func_80011C10(void);
|
|
extern void func_8012832C(void);
|
|
extern void func_80129220(void);
|
|
extern void func_80011E24(void);
|
|
extern void func_80128C14(void);
|
|
extern void func_8002AEF8(void);
|
|
extern void func_800CFBBC(void);
|
|
extern void SsUtReverbOff(void);
|
|
extern void func_8013C98C(void);
|
|
extern void func_80129C40(s32 a0);
|
|
extern void func_800D0630(void);
|
|
extern void func_80145CEC(void);
|
|
extern void func_80144B9C(void);
|
|
extern u8 D_800B9A17;
|
|
extern u8 D_800B9A10;
|
|
extern void func_80128420(void);
|
|
extern s32 func_800D0588(void);
|
|
extern void func_801284B8(void);
|
|
extern void func_80175308(void);
|
|
extern void func_8016E8F0(void);
|
|
extern void func_80175494(void);
|
|
extern u8 D_800B9A64;
|
|
extern void func_801284F0(void);
|
|
extern void func_80146074(void);
|
|
extern void func_8012853C(void);
|
|
extern void func_80178608(void);
|
|
extern void func_8002D4C8(s32 a0, s32 a1);
|
|
extern s32 func_80011A3C(void);
|
|
extern short currentLocationId;
|
|
extern short D_800B99F2;
|
|
extern void func_80128564(void);
|
|
extern u8 D_800B9A11;
|
|
extern void func_801285D4(void);
|
|
extern s32 func_800D18DC(void);
|
|
extern void func_8014607C(void);
|
|
extern void func_801287B8(void);
|
|
extern s32 D_801A0144;
|
|
extern void func_80029444(void);
|
|
extern void func_800D1754(void);
|
|
extern s32 D_80126B58;
|
|
extern u16 D_800B99DA;
|
|
extern void func_80129CF8(void);
|
|
extern void func_8017849C(void);
|
|
extern void func_8014FDF4(struct S8014FDF4 *a0);
|
|
extern s32 func_801505FC(s32 a0);
|
|
extern void func_801508B4(void *a0);
|
|
extern void func_80165E90(void);
|
|
extern void func_801627E8(void);
|
|
extern void func_80162B1C(void);
|
|
extern void func_80165CA0(void);
|
|
extern void func_80129010(void);
|
|
extern void func_8013CA14(void);
|
|
extern void func_800190AC(void);
|
|
extern void func_8012956C(void);
|
|
extern void func_8016E95C(void);
|
|
extern void func_801754A8(void);
|
|
extern void func_8013BC7C(void *arg0);
|
|
extern void func_8013BCDC(void);
|
|
extern void func_801379FC(void);
|
|
extern void func_8001212C(void);
|
|
extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10);
|
|
extern u8 D_800AEFD0;
|
|
extern int D_800C7C60;
|
|
extern int *D_800C7C64;
|
|
extern int D_800A2E20;
|
|
extern int D_800AF558;
|
|
extern int D_8019EFC8;
|
|
extern int func_801288E8(int arg0);
|
|
extern u8 D_800AF560;
|
|
extern s32 func_80128940(s32 _arg0);
|
|
extern int D_800AECB0;
|
|
extern u8 D_800AECB8;
|
|
extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4);
|
|
extern s16 D_800B9A00;
|
|
extern M2C_UNK (*D_8017FF04)();
|
|
extern s16 (*D_8017FF08)();
|
|
extern M2C_UNK (*D_8017FF10)();
|
|
extern s32 (*D_8017FF14)();
|
|
extern s32 D_801A0140;
|
|
extern void func_80010AE0(s32 a0);
|
|
extern void func_80018450(s32 a0, s32 a1);
|
|
extern void func_800183E0(s32 a0);
|
|
extern void func_80128D60(s32 a0, s32 *a1, s32 *a2);
|
|
extern s32 func_80128DB4(s32 a0, s32 *a1);
|
|
extern void func_80128EA8(s32 a0, s32 a1, s32 a2);
|
|
extern M2C_UNK D_8019EFCC;
|
|
extern void func_80128FAC(u16 *arg0);
|
|
extern s16 D_8011DB2C;
|
|
extern s16 D_8011DB30;
|
|
extern s32 D_80126AEC;
|
|
extern u8 *func_8012913C(s32 a0);
|
|
extern u8 * func_801290DC(s32 a0, u8 *a1);
|
|
extern void func_8001D074(s32 a, s32 b);
|
|
extern u8 *func_801291C0(void);
|
|
extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3);
|
|
extern u8 * func_8012913C(s32 arg0);
|
|
extern void func_80016714(void *a0, s32 a1);
|
|
extern u8 * func_801291C0(void);
|
|
extern void func_80129248(s16 a0);
|
|
extern void func_801292C8(u8 *a0);
|
|
extern void func_8012927C(void);
|
|
extern void func_8012931C(struct vec *a0);
|
|
extern void func_80129350(s32 a0, s32 a1);
|
|
extern void func_80129374(s32 a0, s32 a1);
|
|
extern s16 D_800B9AAC[];
|
|
extern s16 D_800B9AAE[];
|
|
extern s16 D_800B9AB0[];
|
|
extern s16 D_800B9AB2[];
|
|
extern s16 D_800B9AB4[];
|
|
extern s16 D_800B9AB6[];
|
|
extern s16 D_800B9AB8[];
|
|
extern s16 D_800B9ABA[];
|
|
extern void func_80129398(void);
|
|
extern s16 D_80114EE0;
|
|
extern void func_80129428(void);
|
|
extern void func_8012943C(void);
|
|
extern s32 D_8005128C;
|
|
extern u8 D_800B9A78;
|
|
extern void func_801298F4(void *arg0);
|
|
extern void func_801299C8(s32 a, s32 b, s32 c);
|
|
extern void func_8012944C(void);
|
|
extern unsigned short D_800B99F0;
|
|
extern void func_8012A328(void);
|
|
extern void func_80053308(s32);
|
|
extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */
|
|
extern void GsSetRefView2L(void *);
|
|
extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */
|
|
extern u8 D_80127504;
|
|
extern s32 D_80126E60[];
|
|
extern s32 D_80126F04[];
|
|
extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */
|
|
extern s32 D_80126FA8[];
|
|
extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */
|
|
extern s32 D_800AE688[];
|
|
extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */
|
|
extern void func_8012A018(s32 a, s32 b);
|
|
extern void func_80129FF4(void);
|
|
extern u16 D_80126B5E;
|
|
extern u16 D_80126B62;
|
|
extern u16 D_80126B66;
|
|
extern s16 D_80126940;
|
|
extern s16 D_80126942;
|
|
extern s16 D_80126944;
|
|
extern void func_8012A048(void *a0, s32 a1, u8 a2);
|
|
extern void *memcpy(void *, const void *, unsigned int);
|
|
extern void func_8012A094(s32 a0);
|
|
extern void func_8012A100(s8 a0);
|
|
extern void func_8012A0E0(void);
|
|
extern s8 D_801150D6;
|
|
extern s32 D_80120204;
|
|
extern s32 D_80120200;
|
|
extern s32 D_8012020C;
|
|
extern s32 D_80120208;
|
|
extern s16 D_80120218;
|
|
extern s16 D_80120210;
|
|
extern s16 D_8012021A;
|
|
extern s16 D_80120212;
|
|
extern s16 D_8012021C;
|
|
extern s16 D_80120214;
|
|
extern s16 D_80120226;
|
|
extern s16 D_80120220;
|
|
extern s16 D_80120228;
|
|
extern s16 D_80120222;
|
|
extern s16 D_8012022A;
|
|
extern s16 D_80120224;
|
|
extern s32 D_80120294;
|
|
extern s16 D_80120298;
|
|
extern s16 D_8012029A;
|
|
extern void func_8012A110(void);
|
|
extern s8 D_801152C0;
|
|
extern void func_8012A2F4(void);
|
|
extern s16 D_80127080;
|
|
extern s16 D_801152C2;
|
|
extern void func_8012A304(s32 a0, s32 a1);
|
|
extern s32 D_801151D4;
|
|
extern void func_8012A4BC(void);
|
|
extern void func_8012A62C(s32);
|
|
extern void func_8012A5F8(void (*a0)(void), s32 a1);
|
|
extern void func_8012A62C(s32 a0);
|
|
extern void func_8012A7D4(void *a0, void *a1);
|
|
extern s32 func_8012A6D0(void *a0, void *a1);
|
|
extern s16 func_8012A68C(void);
|
|
extern s16 func_8012A79C(s16 *a0, s16 *a1);
|
|
extern s16 func_8012A758(void);
|
|
extern s32 ratan2(s32 a0, s32 a1);
|
|
extern void func_8012A7D4(void *arg0, void *arg1);
|
|
extern void func_8012AAAC();
|
|
extern void func_8012A828(s32 a0, void * a1);
|
|
extern int func_8012ACE0(void *a0);
|
|
extern void func_8012A860(void *a0, int a1);
|
|
extern void func_8012A8B0(u8 *a0, s32 a1);
|
|
extern void func_8012A8E8(void);
|
|
extern u8 D_801202A0[];
|
|
extern u16 D_801270C0;
|
|
extern void func_8012A988(u8 *a0);
|
|
extern void func_8012A908(void);
|
|
extern s32 func_8012ACE0(void *a0);
|
|
extern M2C_UNK D_8018025C;
|
|
extern void func_8012ACA0(void *arg0);
|
|
extern s32 func_8012ACE0(void *o);
|
|
extern void func_8012AD44(s32 *a0, s16 a1);
|
|
extern s32 func_8012AD50(void * arg0);
|
|
extern void func_8012AD64(s32 *a0, s16 a1);
|
|
extern void func_8012AD6C(void *a0);
|
|
extern void func_8012AD80(s32 a0);
|
|
extern void func_8012ADE4(u8 *a0);
|
|
extern s32 *D_80126B78;
|
|
extern s32 *D_80126B90;
|
|
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
|
|
extern s32 func_80013478(s32 a0, s32 a1);
|
|
extern s32 func_8012AE00(s32 a0);
|
|
extern s32 func_8012AF0C(s32 a0, s32 a1);
|
|
extern s32 func_80134510(s32 arg);
|
|
extern s32 func_8012B030(u8 *a0);
|
|
extern int func_80047948(int a0);
|
|
extern int func_8004787C(int a0);
|
|
extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3);
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
|
|
extern void func_8012B14C(s32 a0, s32 a1);
|
|
extern void func_8012B178(s32 a0, s32 a1);
|
|
extern void func_8012B1B4(s32 a0, s32 a1);
|
|
extern void func_8012B200(u8 *a0);
|
|
extern void func_8012B21C(void *a0);
|
|
extern void func_8012B23C(s32 a0);
|
|
extern void func_8012B260(u8 *a0);
|
|
extern void func_80049CAC(s32 a0, s32 a1);
|
|
extern void func_8012B2CC(s32 a0);
|
|
extern void RotMatrixYXZ(void *m, void *p);
|
|
extern void func_8012B370(int a0);
|
|
extern void func_8004978C(s16 *a0, void *a1);
|
|
extern void func_8012B414(int a0);
|
|
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
|
|
extern s32 func_8012B6D4(s16 *a0, s16 *a1);
|
|
extern s32 func_8012B70C(s16 *a0, s16 *a1);
|
|
extern s32 ratan2(s32 x, s32 y);
|
|
extern s32 func_8012B744(void *a0, void *a1);
|
|
extern s16 D_80126CB8;
|
|
extern s16 D_80126CB4;
|
|
extern s32 func_8012B864(s32 a0);
|
|
extern s32 func_8012B8A4(s16 *a0);
|
|
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
|
|
extern s32 func_8012BA10(s32 arg0, s32 arg1);
|
|
extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3);
|
|
extern void Square0(s32 *a0, s32 *a1);
|
|
extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1);
|
|
extern s16 D_80126CBA;
|
|
extern s32 func_8012BCCC(s32 a0);
|
|
extern void func_80013350(s32 a0, void *a1);
|
|
extern u8 D_80126B5C;
|
|
extern void func_8012BD14(s32 a0);
|
|
extern s32 func_8012BDBC(s32 a0, s32 a1);
|
|
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
|
|
extern void func_8012BE98(s32 a0, u16 *a1);
|
|
extern void func_8012BE54(s32 a0);
|
|
extern s32 func_800132BC(s32 a0, s32 a1);
|
|
extern void func_8012BE98(s32 arg0, u16 * arg1);
|
|
extern s32 func_8012BEE8(s32 a0);
|
|
extern s32 func_8012BF10(s32 a0, s32 a1);
|
|
extern void func_8012BF4C(s32 *a0, s32 a1);
|
|
extern void func_8012BF54(void *a0);
|
|
extern void func_8012BF68(void *a0);
|
|
extern s16 D_80126CB0;
|
|
extern s32 func_8012BF7C(s16 *a0);
|
|
extern s16 D_80126CAC;
|
|
extern short D_80126CAE;
|
|
extern int func_8012BFA8(short *a0);
|
|
extern s32 D_801274D4;
|
|
extern s32 D_801274E0;
|
|
extern s32 func_8012C044(s32 a0);
|
|
extern void func_8012C194(void);
|
|
extern void func_8001CFDC(s32 a, s32 b);
|
|
extern void func_8012C1B8(void);
|
|
extern u8 D_800B3DF0[];
|
|
extern s32 func_8012C1DC(s32 a0);
|
|
extern void func_8012C218(void *a0);
|
|
extern u8 D_80126720[];
|
|
extern u16 * func_8012C284(u16 *a0);
|
|
extern u8 D_80120194[];
|
|
extern s32 func_8012C2D0(void);
|
|
extern s32 func_8012C31C(void);
|
|
extern void func_8012CAE4(void *a0);
|
|
extern void func_8001C214(s32 a0, s32 a1);
|
|
extern u8 D_80078EAE;
|
|
extern s32 func_8012C354(s32 a0, s32 a1);
|
|
extern void func_8001C810(s32 a0, s32 a1);
|
|
extern s32 func_8012C438(s32 a0, s32 a1);
|
|
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2);
|
|
extern s32 func_8012C51C(void *a0, s32 a1);
|
|
extern s32 func_8012C588(s32 a0, s32 a1);
|
|
extern void func_8012C724(s32 a0, s32 a1);
|
|
extern s32 func_8012C820(u8 *a0);
|
|
extern s32 D_80183740;
|
|
extern s16 D_801270C4;
|
|
extern u16 D_801274E4[];
|
|
extern s32 D_8011DB08;
|
|
extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
|
|
extern s32 func_8012CC88(s32 a, s32 b, s32 c);
|
|
extern u8 D_800D3918[];
|
|
extern void func_8012CBA4(s32 a0);
|
|
extern void func_8012CBCC(s32 a0);
|
|
extern void func_8012CBF4(s32 a0);
|
|
extern void func_8012CC1C(s32 arg0, s32 arg1);
|
|
extern void func_8012CC40(s32 arg0, s32 arg1);
|
|
extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2);
|
|
extern void func_8012CC64(s32 a0, s32 a1);
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2);
|
|
extern s32 func_8012CE2C(s32 a0);
|
|
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
|
|
extern void func_8012CFA8(s32 arg0);
|
|
extern void func_8012F214(s32 a0, s32 a1, s32 a2);
|
|
extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2);
|
|
extern void func_8012D098(u16 *param_1, u32 param_2);
|
|
extern void func_8012D098();
|
|
extern void func_8012D38C(int a0);
|
|
extern void func_8012D3AC(void);
|
|
extern s32 AddPrim(s32, void *);
|
|
extern s32 RotTransPers(s32, s32, s32 *, s32 *);
|
|
extern void SetLineF2(void *);
|
|
extern void *func_80010A08(s32);
|
|
extern void func_8004914C(void *);
|
|
extern void func_800491AC(void *);
|
|
extern s32 D_800A651C;
|
|
extern u8 D_800AF648;
|
|
extern s16 D_800B9A02;
|
|
extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
|
extern void func_8012D5DC(void);
|
|
extern s16 D_80126B98;
|
|
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
|
|
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
|
|
extern int func_8012D664();
|
|
extern void func_8012D624(s32 a0);
|
|
extern int func_8012D664(int arg0, int arg1, int arg2);
|
|
extern s32 func_8012D714(s32 param_1, u32 param_2);
|
|
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5);
|
|
extern void func_8014C978(void);
|
|
extern M2C_UNK D_80180274;
|
|
extern M2C_UNK D_8018027C;
|
|
extern s32 func_8012DB84(void);
|
|
extern s32 func_8012DE2C(s32 a0);
|
|
extern s32 func_8012DDA4(void);
|
|
extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
|
extern s32 func_8012DDA4();
|
|
extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2);
|
|
extern s16 D_80126B9A;
|
|
extern u8 D_801152A8[];
|
|
extern void func_8012DFBC(void);
|
|
extern void func_8012DFCC(void);
|
|
extern void func_8012E014(s32 arg0);
|
|
extern void func_8012E138(void);
|
|
extern void func_8012DFD4(u8 *a0);
|
|
extern s32 func_8012E27C(void);
|
|
extern void func_8012E284(void);
|
|
extern s32 GetTPage(s32, s32, s32, s32);
|
|
extern s32 func_8005A600(s32, s32, s32, s32, s32);
|
|
extern void func_8012E28C(s32 arg0, s32 arg1);
|
|
extern void func_8004914C(void *a0);
|
|
extern void func_800491AC(void *a0);
|
|
extern void func_8012E32C(void);
|
|
extern s32 func_8012E470(s32 a0);
|
|
extern void func_8012E4C8(s32 a0);
|
|
extern s32 func_8012E504(s32 a0, s32 a1);
|
|
extern s32 func_8012E544(s32 a0);
|
|
extern s32 func_8012E57C(s32 a0, s32 a1);
|
|
extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3);
|
|
extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3);
|
|
extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3);
|
|
extern void func_8012E88C(u8 *a0);
|
|
extern void func_8012E8A8(u8 *a0);
|
|
extern void func_8012E8C4(u8 *a0);
|
|
extern void func_8012E8E0(s32 a0, s32 a1);
|
|
extern void func_8016AA50(int, int);
|
|
extern void func_8016B428(int);
|
|
extern void func_80019064(void *);
|
|
extern int D_80180284;
|
|
extern void func_8012E9C0(int param_1);
|
|
extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3);
|
|
extern s32 func_8002A4FC(s32 a0);
|
|
extern s32 func_8012EECC(s32 a0);
|
|
extern void func_8012EFB8(s32 a0);
|
|
extern void func_8012EF34(s32 a0, s32 a1);
|
|
extern void func_8012EF70(s32 a0, s32 a1);
|
|
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2);
|
|
extern void func_8012F038(int param_1, short *param_2, short *param_3);
|
|
extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2);
|
|
extern void RotTransSV(s32 a0, s32 a1, void *a2);
|
|
extern void func_8012F14C(s32 a0, s32 a1, s32 a2);
|
|
extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2);
|
|
extern void func_8012F2E8(s32 a0, s32 a1, s32 a2);
|
|
extern s16 D_80126CB6;
|
|
extern void func_8012F374(s32 a0, s32 a1);
|
|
extern void *memcpy(void *, const void *, u32);
|
|
extern u8 D_80126C38;
|
|
extern u8 D_80126C40;
|
|
extern u16 D_80126B94;
|
|
extern u16 D_80126B96;
|
|
extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6);
|
|
extern void func_80131B14();
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
|
|
extern s32 func_80131A34(s32, s32);
|
|
extern void func_80131CA8(int a0, int a1);
|
|
extern void func_8012F5F4(s32 arg0);
|
|
extern void func_80131C78(s32 a0);
|
|
extern void func_8012F68C(s32 arg0);
|
|
extern void func_8012F75C(s32 a0);
|
|
extern s32 func_8012BEE8(s32);
|
|
extern void func_8012F7B4(s32 a0);
|
|
extern void func_80131170();
|
|
extern void func_80131CA8();
|
|
extern unsigned char D_801802A0[];
|
|
extern void func_8012F828(int param_1);
|
|
extern void func_80131340(s32 a0);
|
|
extern void func_8012F87C(s32 a0);
|
|
extern void func_80131170(s32 a0, s32 a1, s32 a2);
|
|
extern u8 D_801802AC[];
|
|
extern void func_8012F8C8(u8* arg0);
|
|
extern void func_8012F91C(s32 a0);
|
|
extern s32 func_80131A34(s32 a0, s32 a1);
|
|
extern void func_80131CA8(s32 a0, s32 a1);
|
|
extern void func_8012F968(s32 param_1);
|
|
extern void func_801319E0(s32 a0);
|
|
extern s32 func_80143B6C(s32 a0, s32 a1);
|
|
extern void func_8012FB54(s32 a0);
|
|
extern void func_8012FC30(s32 a0);
|
|
extern void func_8012FCA4(int a0);
|
|
extern s32 func_8012FCC4(s32 param_1);
|
|
extern void func_8012FDA8(int param_1);
|
|
extern void func_8012FE70(s32 a0);
|
|
extern void func_8012FF00(s32 a0);
|
|
extern void func_8012FF4C(s32 a0);
|
|
extern void func_80130D48(s32 a0);
|
|
extern void func_8012FF98(u8 *a0);
|
|
extern s32 func_80131AC8(void *a0);
|
|
extern void func_8013001C(void *a0);
|
|
extern void func_80130088(void *a0);
|
|
extern s32 func_8012BCCC(s32);
|
|
extern void func_801300F4(s32 a0);
|
|
extern void func_801301E8(u8 *a0);
|
|
extern void func_80130278(s32 arg0);
|
|
extern void func_80130314(s32 a0);
|
|
extern void func_80130360(s32 a0);
|
|
extern void func_8012E364(void);
|
|
extern void func_801303A0(s32 a0);
|
|
extern void func_801303EC(void *a0);
|
|
extern void func_80143CD4(s32 a0);
|
|
extern void func_800CB0E8(s32 a0);
|
|
extern void func_80130438(s32 a0);
|
|
extern void func_801319E0(int);
|
|
extern int func_80131D68(int, int);
|
|
extern int func_8012BEE8(int);
|
|
extern void func_80131CA8(int, int);
|
|
extern void func_80130514(int param_1);
|
|
extern void func_801305CC(u8 *a0);
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
|
extern void func_80130740(void *a0, u16 *a1);
|
|
extern s32 func_801312D0(s32 a0, void *a1);
|
|
extern void func_801307B0(s32 a0);
|
|
extern void func_80130858(s32 a0);
|
|
extern void func_80130898(u8 *a0);
|
|
extern void func_801308DC(s32 a0);
|
|
extern void func_80166244();
|
|
extern void func_80130974(int param_1);
|
|
extern void func_80130AC4(s32 a0);
|
|
extern int func_80131A34(int a0, int a1);
|
|
extern void func_80130AF0(int param_1);
|
|
extern void (*D_801802C0[])(void);
|
|
extern void func_80130D0C(void *a0);
|
|
extern s32 rand(void);
|
|
extern u8 D_80078E78[];
|
|
extern u16 D_80078EB2;
|
|
extern u16 D_80078EB4;
|
|
extern s16 D_80180310[];
|
|
extern s16 D_80180340[];
|
|
extern s16 D_801803A0[];
|
|
extern s16 D_801803A8[];
|
|
extern s16 D_801803C8[];
|
|
extern void func_80130D48(s32 arg0);
|
|
extern void func_80131170(s32 p, s32 b, s32 c);
|
|
extern s32 func_801312D0(s32 param_1, void *param_2);
|
|
extern void func_8002A04C(s32 a0);
|
|
extern void func_801319E0(s32 arg0);
|
|
extern s32 func_80131CF4(s32 a0);
|
|
extern void (*D_80180400[])(struct S80131E00 *a0);
|
|
extern void func_80131E38(u8 *a0);
|
|
extern void func_80131E7C(s32 a0);
|
|
extern void func_80131EE4(void);
|
|
extern void (*D_80180458[])(void);
|
|
extern void func_80131EEC(void *a0);
|
|
extern void (*D_801804A0[])(void);
|
|
extern void func_80131F28(void *a0);
|
|
extern void (*D_801804A8[])(void);
|
|
extern void func_80131F64(void *a0);
|
|
extern void (*D_801804B0[])(void);
|
|
extern void func_80131FA0(void *a0);
|
|
extern void (*D_801804B8[])(void);
|
|
extern void func_80131FDC(void *a0);
|
|
extern void func_801320D0(void);
|
|
extern void func_8001C214(int, int);
|
|
extern int D_80180460;
|
|
extern void func_801320D8(int param_1);
|
|
extern s32 func_80132144(s32 param_1);
|
|
extern int D_80180480;
|
|
extern void func_801321B0(int param_1);
|
|
extern int D_80180490;
|
|
extern void func_8013221C(int param_1);
|
|
extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */
|
|
extern void func_801325B8(int a0, int a1, int a2, int a3, int a4);
|
|
extern void func_80132288(int *param_1, int *param_2, int param_3);
|
|
extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
|
|
extern void func_8013240C(s32 a0);
|
|
extern void func_8013277C(void);
|
|
extern void func_80020F34(s32 a0, s32 a1);
|
|
extern void func_80054514(s32 a0, s32 a1);
|
|
extern void func_80132784(s32 a0, s32 a1, u32 a2);
|
|
extern s32 VectorNormalSS(void *a0, void *a1);
|
|
extern void func_80132DC4(s32 a0, s32 a1, s32 a2);
|
|
extern s32 func_80132E6C(s16 *a0);
|
|
extern void func_80132EC4(void *a0, s16 a1);
|
|
extern s32 func_80132EF4(s32 a0, s32 a1);
|
|
extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3);
|
|
extern void func_80133060(u8 *a0, s32 *a1, s32 a2);
|
|
extern void func_8013339C(short *param_1, short *param_2);
|
|
extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3);
|
|
extern s32 D_801A01B0;
|
|
extern s32 D_801A01B4[];
|
|
extern int D_801A01B8;
|
|
extern void func_80136BC4(s32 a0);
|
|
extern void func_801336E8(void *a0, int a1, int a2);
|
|
extern void func_80136BC4(s32);
|
|
extern void func_8013373C(s16 arg0);
|
|
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
|
|
extern s32 func_80133CD4();
|
|
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
|
|
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
|
|
extern s32 func_80134510(s32 param);
|
|
extern s32 func_801345F8(s32 arg);
|
|
extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
|
extern s32 func_80134A28(s32 a0, s32 a1, s32 a2);
|
|
extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
|
extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2);
|
|
extern s32 func_80135004(s32 arg0, s32 p1, s32 p2);
|
|
extern u8 D_801804C4;
|
|
extern u8 D_801804C0;
|
|
extern s16 *D_801804C8;
|
|
extern u8 D_801804CC;
|
|
extern int D_801A01B0;
|
|
extern u16 D_801A01C0;
|
|
extern int func_80134A74(int, s16, s16, int);
|
|
extern int func_80135168(u16 arg0, u16 *p1, u16 *p2);
|
|
extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4);
|
|
extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2);
|
|
extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2);
|
|
extern s16 *D_801804C8; /* holds a pointer value (*(u16**)&D_801804C8) */
|
|
extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3);
|
|
extern void func_80136C3C(void);
|
|
extern void func_80136C1C(void);
|
|
extern void func_80136C44(void);
|
|
extern void func_80136C4C(void);
|
|
extern void (*D_801804DC[])(void);
|
|
extern void func_80136C54(void);
|
|
extern s32 func_80136C90();
|
|
extern void func_80136D00(void);
|
|
extern void SetLineG2(void *);
|
|
extern void func_80136D08(s32 arg0, s32 arg1);
|
|
extern void func_80136EC4(void);
|
|
extern short D_800B9A02;
|
|
extern u8 D_800A6518[];
|
|
extern void GsSortLine(void *a0, void *a1, s32 a2);
|
|
extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b);
|
|
extern void func_80137030(s16 a0, s16 a1);
|
|
extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out);
|
|
extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine");
|
|
extern void aF80137030(s32 x, s32 y) __asm__("func_80137030");
|
|
extern void func_80137178(s32 x, s32 y);
|
|
extern u8 D_800AF630[];
|
|
extern u16 aD800B9A02 __asm__("D_800B9A02");
|
|
extern void func_801372B0(void);
|
|
extern void func_80137614(s32 a0, s32 a1, s32 a2);
|
|
extern void func_801375EC(s32 a0, s16 a1);
|
|
extern s32 func_801399A8(void);
|
|
extern void func_801377B4(s32 a0, s32 a1, s32 a2);
|
|
extern s32 func_8013767C(s32 a0);
|
|
extern void func_801376E8(int a0, int a1);
|
|
extern void func_801376C8(int a0);
|
|
extern s32 D_80127524;
|
|
extern s32 D_80127528;
|
|
extern void func_80137840(s32 a0);
|
|
extern void func_80139634(void *);
|
|
extern void func_80139DC8(void);
|
|
extern s16 D_8012752E;
|
|
extern void func_801379D8(void);
|
|
extern void func_801379EC(void);
|
|
extern int D_80180530;
|
|
extern int D_801269F0;
|
|
extern void func_80138BE0(int p);
|
|
extern void func_80137B80(void);
|
|
extern void func_801392FC();
|
|
extern void func_801397B0(s32 a0);
|
|
extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2);
|
|
extern void func_80139680(s32 a0, u8 *a1);
|
|
extern u16 D_800B99D8;
|
|
extern void func_80137BD8(s32 a0);
|
|
extern unsigned char D_80126A0E;
|
|
extern short D_80126A0A;
|
|
extern s16 D_801269F4;
|
|
extern int D_800A5E60;
|
|
extern int func_80137D08(int arg0, int arg1, short arg2);
|
|
extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3);
|
|
extern s32 func_801380E0(s32 arg0);
|
|
extern void func_801387B8(s32 arg0);
|
|
extern void func_80138948(void *a0);
|
|
extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2);
|
|
extern void func_80138B88(s32 a0);
|
|
extern void func_8013895C(s32 a0);
|
|
extern s16 D_80127540[4];
|
|
extern s32 func_80139D04(s32 a0, s32 a1);
|
|
extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2);
|
|
extern void func_80139B18(s32 a0);
|
|
extern void func_80138AB4(s32 a0);
|
|
extern void (*D_80180534[])(void);
|
|
extern void func_80138C30(void *a0);
|
|
extern s32 func_80139BE0(s32);
|
|
extern s32 func_80138C60(s32 arg0);
|
|
extern void func_8013A9F8(s32 a0, s32 a1);
|
|
extern void func_80138D58(s32 a0, u16 a1);
|
|
extern s32 func_80014E80(s32 a0, s32 a1);
|
|
extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3);
|
|
extern s32 func_8013914C(s32 a0, s32 a1);
|
|
extern void func_800599B8(u16 *);
|
|
extern u16 D_80127C0C[];
|
|
extern s32 D_80127548[];
|
|
extern s32 func_80139220(s32 a0);
|
|
extern void func_801391F0(void *a0);
|
|
extern void func_801392C8(void *a0);
|
|
extern void func_801395D4(void *);
|
|
extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3);
|
|
extern s32 func_80052460(s32 a0, s32 a1, s32 a2);
|
|
extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2);
|
|
extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3);
|
|
extern void func_801395D4(void * a0);
|
|
extern void func_80139634(void *a0);
|
|
extern void func_80139680(s32 arg0, u8 * arg1);
|
|
extern void func_8001931C(void);
|
|
extern s16 D_8012752C;
|
|
extern void func_80139788(void);
|
|
extern u8 D_80180578;
|
|
extern u8 D_801805BC;
|
|
extern void GsSortSprite(void *a0, u8 *a1, s32 a2);
|
|
extern void func_801397B0(s32 arg0);
|
|
extern void func_8013A8B0(s32 *a0);
|
|
extern void func_80139914(s32 arg0);
|
|
extern u16 D_80126A08;
|
|
extern s32 D_801269F0;
|
|
extern s32 *D_80126A30;
|
|
extern void func_80139954(void);
|
|
extern s32 D_80126A3C;
|
|
extern s32 func_801399F0(s32 a0);
|
|
extern s32 D_80127520;
|
|
extern void func_80139A34(s32 a0);
|
|
extern s32 D_80127530[4];
|
|
extern void func_80139A44(s32 a0, u16 a1);
|
|
extern void func_80139A68(s32 a0, u16 a1);
|
|
extern void func_80139A8C(s32 a0);
|
|
extern void func_80139C7C(u8 *a0);
|
|
extern s16 D_8012811A;
|
|
extern void func_80139DEC(void);
|
|
extern void func_80139DF4(s32 a0);
|
|
extern void func_80139E84(s32 a0);
|
|
extern void func_80139F0C(s32 a0);
|
|
extern void func_80139FBC(struct obj *a0);
|
|
extern s32 func_8001B22C(void *a0);
|
|
extern void func_80139FE8(void *a0);
|
|
extern void func_8013A0A4(struct S8013A0A4 *a0);
|
|
extern void func_8013A164(struct S8013A164 *a0);
|
|
extern void func_8013A1E8(s32 a0);
|
|
extern void func_8013A250(struct S8013A250 *a0);
|
|
extern void func_8013A2BC(s32 a0);
|
|
extern void func_8013A378(void);
|
|
extern u8 D_8011DA80[];
|
|
extern void func_8013A530();
|
|
extern void func_8013A448(void *a0);
|
|
extern void func_8013A4C4(struct S8013A4C4 *a0);
|
|
extern void func_8013A380(void);
|
|
extern void func_80015D4C();
|
|
extern void func_80015F04();
|
|
extern void func_8013AA24(s32 a0, s32 a1);
|
|
extern void func_8013A530(int param_1);
|
|
extern void func_8013A860(void);
|
|
extern s32 func_8013A8BC(void);
|
|
extern void func_8013A9B4(s32 a0, s32 a1);
|
|
extern s32 func_8013A8FC(s32 arg0);
|
|
extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3);
|
|
extern void func_8013B204(s32 a0, s32 a1);
|
|
extern void func_8013AF20();
|
|
extern void func_8013B274(s32 a0, s32 a1, void *a2);
|
|
extern s32 D_800A5E60;
|
|
extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3);
|
|
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
|
|
extern u8 D_80180600[]; /* sign table, alt (when a1 < 0xC00) */
|
|
extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3);
|
|
extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4);
|
|
extern s16 D_80180678, D_8018067A, D_8018067C, D_8018067E, D_80180680, D_80180682;
|
|
extern u16 D_800D45F6;
|
|
/* ==== end §8b carried decl layer ==== */
|
|
|
|
|
|
|
|
void func_8013B568(s32 arg0) {
|
|
|
|
extern s32 D_80180684;
|
|
D_80180684 = arg0;
|
|
}
|
|
|
|
|
|
|
|
/* func_8013B598 (ov_SC01_077_o0, -O0): fills entry a0 of the 0x1C-stride table at
|
|
* D_801A14F8 from a 3-halfword source record.
|
|
*
|
|
* -O0 CONSTANT-OFFSET FOLD (the quirk that stalled this -O0 cluster in Phase 19):
|
|
* at -O0 gcc-2.7.2 folds a constant offset into the memory operand ONLY through a
|
|
* COMPONENT_REF / a real ARRAY_REF on an array-typed DECL:
|
|
* D_801A14F8[a0].f4 = ... -> lui $at,%hi(sym); addu $at,$at,idx; sh %lo(sym+4)($at)
|
|
* A CAST base defeats it (NOP_EXPR over the ADDR_EXPR), and so does pointer indexing:
|
|
* ((S *)D_801A14F8)[a0].f4 -> lui;addiu;addu;sh 4(reg) (+2 ins per store)
|
|
* a1[1] -> addiu $v1,$a0,2; lhu 0($v1) (+1 ins per load)
|
|
* So the table extern must carry the FULL struct type (not the pad-only canonical
|
|
* E_3B7AC), and the source record must be read as ->field, not as a[i]. Casting the
|
|
* incoming POINTER is harmless (a NOP on a register), only the base decl's type matters.
|
|
*
|
|
* Both types are body-scoped (cookbook §100) and the extern is declared inside the body,
|
|
* matching the established -O0 sibling pattern in src/ov_SC07_010/ov_SC07_010_o0.c
|
|
* (func_8013B7AC: `extern E_3B7AC D_801A9420[];` in-body). NOTE FOR BANKING: the canonical
|
|
* sig-layer decl `extern E_3B7AC D_801A14F8[];` (f0 + pad only) CANNOT be used here — it has
|
|
* no f4/f6/f8/fC members. The in-body decl below must be the one that survives; do not also
|
|
* emit a file-scope E_3B7AC decl for D_801A14F8 (conflicting types).
|
|
*
|
|
* 66/66 instructions byte-identical (match_one --o0).
|
|
*/
|
|
void func_8013B598(s32 a0, u16 *a1) {
|
|
extern Spr_8013B598_8013B598 D_801A14F8[];
|
|
|
|
D_801A14F8[a0].f0 = 1;
|
|
D_801A14F8[a0].f4 = ((Src_8013B598_8013B598 *)a1)->f0;
|
|
D_801A14F8[a0].f6 = ((Src_8013B598_8013B598 *)a1)->f2;
|
|
D_801A14F8[a0].f8 = ((Src_8013B598_8013B598 *)a1)->f4;
|
|
D_801A14F8[a0].fC = 0x100;
|
|
}
|
|
|
|
|
|
|
|
|
|
void func_8013B6A0(s32 idx, u16 *src, s32 val)
|
|
{
|
|
extern Ent_8013B6A0_8013B6A0 D_801A14F8[];
|
|
|
|
D_801A14F8[idx].f0 = 1;
|
|
D_801A14F8[idx].f4 = ((Src_8013B6A0_8013B6A0 *)src)->f0;
|
|
D_801A14F8[idx].f6 = ((Src_8013B6A0_8013B6A0 *)src)->f2;
|
|
D_801A14F8[idx].f8 = ((Src_8013B6A0_8013B6A0 *)src)->f4;
|
|
D_801A14F8[idx].fC = val;
|
|
}
|
|
|
|
|
|
/* sizeof 0x1C stride */
|
|
void func_8013B7AC(int a0) {
|
|
extern E_3B7AC_8013B7AC D_801A14F8[];
|
|
D_801A14F8[a0].f0 = 0; }
|
|
|
|
|
|
|
|
|
|
void func_8013B7F4(s32 a0, s32 a1) {
|
|
|
|
extern s32 D_801A1614;
|
|
func_8013B83C(a0, a1, D_801A1614);
|
|
}
|
|
|
|
|
|
extern s32 D_801A15B0;
|
|
extern s32 D_801A1614;
|
|
|
|
void func_8013B83C(s32 a0, s32 a1, s32 a2) {
|
|
/* sizeof 0x1C */
|
|
extern Ent_8013B83C D_801DAA08_e[] __asm__("D_801A14F8");
|
|
extern s32 D_801A1594;
|
|
extern s32 D_801A1598;
|
|
extern s32 D_801A159C;
|
|
extern s32 D_801A15C0;
|
|
extern s32 D_801A1610;
|
|
extern s32 D_801A1618;
|
|
extern s16 D_800B9A0E;
|
|
extern void func_80052D90(s32 a0, void *a1);
|
|
extern void func_8013C08C(void *a0, s32 a1);
|
|
s32 i;
|
|
|
|
D_801A15B0 = 0;
|
|
D_801A159C = 0;
|
|
D_801A1598 = 0;
|
|
D_801A1594 = 0;
|
|
func_80052D90(0, &D_801A15C0);
|
|
if (a0 == 0) {
|
|
return;
|
|
}
|
|
D_801A1610 = a2 + 500;
|
|
D_801A1614 = a2;
|
|
for (i = 0; i < 4; i++) {
|
|
D_801DAA08_e[i].f0 = 0;
|
|
D_801DAA08_e[i].f4 = D_801DAA08_e[i].f6 = D_801DAA08_e[i].f8 = 0x6000;
|
|
D_801DAA08_e[i].fC = 0x100;
|
|
D_801DAA08_e[i].f18 = 0;
|
|
}
|
|
switch (*(u8 *)a0) {
|
|
case 0x42:
|
|
if (D_800B9A0E == 0) {
|
|
func_8013BD74(&D_801A15B0, a0);
|
|
} else {
|
|
func_8013BD74(&D_801A15B0, a1);
|
|
}
|
|
D_801A1618 = 0;
|
|
break;
|
|
case 0x43:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 1;
|
|
break;
|
|
case 0x44:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 2;
|
|
break;
|
|
case 0x45:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 3;
|
|
break;
|
|
case 0x46:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 4;
|
|
break;
|
|
case 0x47:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 5;
|
|
break;
|
|
case 0x48:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 6;
|
|
break;
|
|
case 0x49:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 9;
|
|
break;
|
|
case 0x4A:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 0xC;
|
|
break;
|
|
case 0x4B:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 0xD;
|
|
break;
|
|
case 0x4C:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 0xE;
|
|
break;
|
|
case 0x4D:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 0xF;
|
|
break;
|
|
case 0x4E:
|
|
func_8013C08C(&D_801A15B0, a0);
|
|
D_801A1618 = 0x10;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
void func_8013BC7C(void *arg0) {
|
|
|
|
extern void (*D_8017FEE8[])(void *);
|
|
D_8017FEE8[((S_8013BC7C_8013BC7C *)arg0)->f68](arg0);
|
|
}
|
|
|
|
|
|
|
|
/* func_8013BCDC (ov_SC01_077_o0, -O0): guarded indirect call through D_80180684.
|
|
* D_80180684 is declared `extern s32` in the TU (canonical-sig layer) and holds a
|
|
* function pointer; read it as an s32, test non-null, cast to fn-ptr and call.
|
|
* Frame residual: target frame is 0x30 (saves $ra/$fp/$s0 at 0x28/0x24/0x20) — 16
|
|
* bytes of var_size above the minimal 0x20. At -O0 (no DCE) an unused 16-byte local
|
|
* reserves exactly that var region (cookbook §42 lever 3, frame-pad induction) with
|
|
* zero body instructions. 22/22 byte-identical via rtu_match. */
|
|
void func_8013BCDC(void) {
|
|
|
|
extern s32 D_80180684;
|
|
s32 pad[4];
|
|
if (D_80180684 != 0) {
|
|
((void (*)(void))D_80180684)();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void func_8013BD34(s32 a0) {
|
|
|
|
extern s32 D_801A15B0;
|
|
func_8013BD74(&D_801A15B0, a0);
|
|
}
|
|
|
|
|
|
|
|
extern s16 D_801A14B8;
|
|
extern s16 D_801A14BA;
|
|
extern s16 D_801A14BC;
|
|
extern s16 D_801A14BE;
|
|
|
|
void func_8013BD74(void *a0, s32 a1) {
|
|
/* §100 draft-LOCAL types: file-scope typedefs are NOT carried by extract_unit/remap_hseq, so a
|
|
file-scope E_13BD74 banks the exemplar and then fails every sibling with `E_13BD74'
|
|
undeclared (the §94 type-carry class, measured on ov_SC01_000). Block scope travels with the
|
|
body and is byte-neutral (a type emits no code). */
|
|
s32 *q;
|
|
s32 *p;
|
|
s32 i;
|
|
s32 unused0;
|
|
s32 unused1;
|
|
P_13BD74 *e;
|
|
P_13BD74 *end;
|
|
s32 unused2;
|
|
s32 base;
|
|
s32 unused3;
|
|
|
|
D_801A14B8 = -0xA0;
|
|
D_801A14BA = -0x78;
|
|
D_801A14BC = 0x140;
|
|
D_801A14BE = 0xF0;
|
|
((E_13BD74 *)a0)->f8 = (void *)a1;
|
|
((E_13BD74 *)a0)->fC = (void *)(a1 + 8);
|
|
base = a1 + 0x4008;
|
|
if (((u8 *)a1)[4] == 0) {
|
|
p = (s32 *)((E_13BD74 *)a0)->fC;
|
|
for (i = 0; i < 0x1000; i++) {
|
|
if (*p != 0) {
|
|
*p += (s32)((E_13BD74 *)a0)->fC;
|
|
q = (s32 *)*p;
|
|
q[0] += (s32)q;
|
|
q[5] += (s32)q;
|
|
e = (P_13BD74 *)q[5];
|
|
q[6] = q[6] * 12 + q[5];
|
|
end = (P_13BD74 *)q[6];
|
|
while (e < end) {
|
|
switch (e->code) {
|
|
case 0x24:
|
|
case 0x2C:
|
|
case 0x34:
|
|
case 0x3C:
|
|
*(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base;
|
|
break;
|
|
case 0x26:
|
|
case 0x2E:
|
|
case 0x36:
|
|
case 0x3E:
|
|
*(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base;
|
|
break;
|
|
}
|
|
e++;
|
|
}
|
|
}
|
|
p++;
|
|
}
|
|
((u8 *)a1)[4] = 1;
|
|
}
|
|
}
|
|
|
|
|
|
DEFINE_func_8013C08C() /* dedup: shared engine-core @0x8013C08C (src/shared) */
|
|
|
|
|
|
|
|
void func_8013C0F8(int param_1) {
|
|
int iVar1;
|
|
int iVar2;
|
|
unsigned int local_18;
|
|
unsigned int local_14;
|
|
Bar *local_10;
|
|
Foo *local_c;
|
|
|
|
iVar1 = param_1 + 0x14;
|
|
if (*(char *)(param_1 + 4) == '\0') {
|
|
iVar2 = iVar1 + *(int *)(param_1 + 0xc);
|
|
*(int *)(param_1 + 0xc) = iVar2;
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + iVar1;
|
|
local_c = (Foo *)iVar1;
|
|
for (local_18 = 0; local_18 < *(unsigned int *)(param_1 + 8); local_18++, local_c++) {
|
|
local_c->field10 = local_c->field10 + iVar1;
|
|
local_10 = (Bar *)local_c->field10;
|
|
for (local_14 = 0; local_14 < local_c->count; local_14++, local_10++) {
|
|
switch (local_10->tag) {
|
|
case 0x24:
|
|
case 0x2c:
|
|
case 0x34:
|
|
case 0x3c:
|
|
*(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2;
|
|
break;
|
|
case 0x26:
|
|
case 0x2e:
|
|
case 0x36:
|
|
case 0x3e:
|
|
*(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
*(unsigned char *)(param_1 + 4) = 1;
|
|
}
|
|
}
|
|
|
|
DEFINE_func_8013C360() /* dedup: shared engine-core @0x8013C360 (src/shared) */
|
|
|
|
|
|
void func_8013C414(s32 param_1, s32 param_2)
|
|
{
|
|
s32 base10; /* 0x00 */
|
|
s32 p; /* 0x04 */
|
|
s32 q; /* 0x08 */
|
|
s32 base4008; /* 0x0C */
|
|
s32 lo; /* 0x10 */
|
|
u32 i; /* 0x14 */
|
|
s32 unused; /* 0x18 */
|
|
s32 base8; /* 0x1C */
|
|
T3Reloc *r; /* 0x20 */
|
|
T3Reloc *s; /* 0x24 */
|
|
|
|
if (*(s32 *)(param_2 + 4) == 0) {
|
|
base10 = param_2 + 0x10;
|
|
base4008 = param_1 + 0x4008;
|
|
lo = *(s32 *)(param_2 + 0xC) + base10;
|
|
base8 = param_1 + 8;
|
|
p = base10;
|
|
for (i = 0; i < *(u32 *)(param_2 + 8); i++) {
|
|
*(s32 *)p = *(s32 *)p + base8;
|
|
if (*(s32 *)(p + 4) != 0) {
|
|
*(s32 *)(p + 4) = *(s32 *)(p + 4) + base10;
|
|
q = *(s32 *)(p + 4);
|
|
*(s32 *)q = *(s32 *)q + q;
|
|
*(s32 *)(q + 0x14) = *(s32 *)(q + 0x14) + q;
|
|
r = (T3Reloc *)*(s32 *)(q + 0x14);
|
|
*(s32 *)(q + 0x18) = *(s32 *)(q + 0x18) * 0xC + *(s32 *)(q + 0x14);
|
|
s = (T3Reloc *)*(s32 *)(q + 0x18);
|
|
while (r < s) {
|
|
switch (r->type) {
|
|
case 0x24:
|
|
case 0x2C:
|
|
case 0x34:
|
|
case 0x3C:
|
|
if ((*(u32 *)r) & 0x800000) {
|
|
(*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo;
|
|
} else {
|
|
(*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008;
|
|
}
|
|
break;
|
|
case 0x26:
|
|
case 0x2E:
|
|
case 0x36:
|
|
case 0x3E:
|
|
if ((*(u32 *)r) & 0x800000) {
|
|
(*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo;
|
|
} else {
|
|
(*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008;
|
|
}
|
|
break;
|
|
}
|
|
r++;
|
|
}
|
|
}
|
|
p = p + 0xC;
|
|
}
|
|
*(s32 *)(param_2 + 4) = 1;
|
|
p = param_2 + 0x10;
|
|
for (i = 0; i < *(u32 *)(param_2 + 8); i++) {
|
|
if (*(s32 *)(p + 8) == 0) {
|
|
*(s32 *)(p + 8) = *(s32 *)(*(s32 *)p);
|
|
}
|
|
p = p + 0xC;
|
|
}
|
|
} else {
|
|
p = param_2 + 0x10;
|
|
for (i = 0; i < *(u32 *)(param_2 + 8); i++) {
|
|
*(s32 *)(*(s32 *)p) = *(s32 *)(p + 8);
|
|
p = p + 0xC;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void func_8013C938(void) {
|
|
|
|
extern s32 D_801A15B0;
|
|
D_801A15B0 = 1;
|
|
}
|
|
|
|
|
|
|
|
void func_8013C964(void) {
|
|
|
|
extern s32 D_801A15B0;
|
|
D_801A15B0 = 0;
|
|
}
|
|
|