mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-30 15:36:55 -04:00
bffbb8b9b7
- func_8016B234: §58b self-def — engine_core.h func_8016B234 (void)->() no-proto (byte-neutral: only 0-arg callers fleet-wide); typedef preamble stripped. - func_8016C998: §59(1) local struct rename Slot/Blk32->Slot_998/Blk32_998 (collide with TU's Slot) + D_801D9CA0 extern moved to block scope (TU's other decls of it are all block-scope; a file-scope one collided). R22 clean-fleet pending (engine_core.h touched).
27977 lines
904 KiB
C
27977 lines
904 KiB
C
/* src/shared/engine_core.h — Phase 15 shared engine-core bodies (cross-overlay dedup, §14).
|
|
* Each DEFINE_func_XXXX() expands to the WHOLE matched body once; instantiated in place at the
|
|
* func_XXXX site in every overlay that shares it (address order preserved). Registry +
|
|
* byte-honesty: config/dedup.us.yaml + tools/dedup_integrate.py. Tool-generated; do not hand-edit. */
|
|
#ifndef SHARED_ENGINE_CORE_H
|
|
#define SHARED_ENGINE_CORE_H
|
|
#include "common.h"
|
|
#include "engine_types.h" /* shared engine struct/union types (§14c struct follow-up) */
|
|
|
|
#define DEFINE_func_80128EA8() \
|
|
void func_80128EA8(s32 a0, s32 a1, s32 a2) { \
|
|
*(s32 *)(a1 + 0x0) = a2; /* sw a2, 0x0(a1) */ \
|
|
*(s16 *)(a1 + 0x4) = 0; /* sh zero, 0x4(a1) */ \
|
|
*(s16 *)(a1 + 0x6) = (*(s32 *)(a2 + 0x4)) & 0x3F; /* lw; andi 0x3F; sh 0x6(a1) */ \
|
|
*(s16 *)(a0 + 0x28) = *(u16 *)(a2 + 0x0); /* lhu 0x0(a2); sh 0x28(a0) */ \
|
|
*(s16 *)(a0 + 0x2A) = *(u16 *)(a2 + 0x2); /* lhu 0x2(a2); sh 0x2A(a0) */ \
|
|
}
|
|
|
|
#define DEFINE_func_8012A568() \
|
|
extern void func_8012A598(void *a0); \
|
|
void func_8012A568(void (*a0)(void)) { \
|
|
func_8012A598(a0); \
|
|
a0(); \
|
|
}
|
|
|
|
#define DEFINE_func_80132EC4() \
|
|
void func_80132EC4(void *a0, s16 a1) { \
|
|
while (*(s32 *)a0 != 0) { \
|
|
*(s16 *)((s32)a0 + 4) = a1; \
|
|
a0 = (void *)((s32)a0 + 8); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80138C30() \
|
|
void func_80138C30(void *a0) { \
|
|
if (*(s16 *)((s32)a0 + 4) == 4) { \
|
|
*(s16 *)((s32)a0 + 4) = 2; \
|
|
} else { \
|
|
*(u32 *)((s32)a0 + 8) |= 0x800; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012D3AC() \
|
|
void func_8012D3AC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8012D5DC() \
|
|
void func_8012D5DC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8012DFCC() \
|
|
void func_8012DFCC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8012E284() \
|
|
void func_8012E284(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80131EE4() \
|
|
void func_80131EE4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801320D0() \
|
|
void func_801320D0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8013277C() \
|
|
void func_8013277C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80136C3C() \
|
|
void func_80136C3C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80136C44() \
|
|
void func_80136C44(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80136C4C() \
|
|
void func_80136C4C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80136D00() \
|
|
void func_80136D00(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80136EC4() \
|
|
void func_80136EC4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80139DEC() \
|
|
void func_80139DEC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8013A378() \
|
|
void func_8013A378(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80141C04() \
|
|
void func_80141C04(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801427DC() \
|
|
void func_801427DC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801427E4() \
|
|
void func_801427E4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80142C7C() \
|
|
void func_80142C7C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80143EA4() \
|
|
void func_80143EA4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80143EAC() \
|
|
void func_80143EAC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80143EB4() \
|
|
void func_80143EB4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80144A90() \
|
|
void func_80144A90(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801458E0() \
|
|
void func_801458E0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80146074() \
|
|
void func_80146074(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80146C98() \
|
|
void func_80146C98(s32 *a0, s16 a1) { \
|
|
*(s16*)((s32)a0 + 0x2) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_80146E90() \
|
|
void func_80146E90(s32 *a0, s32 a1) { \
|
|
*(s32*)((s32)a0 + 0x1C) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014704C() \
|
|
void func_8014704C(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x4C) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80147084() \
|
|
void func_80147084(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x221) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80147098() \
|
|
void func_80147098(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x220) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801470AC() \
|
|
void func_801470AC(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x222) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148C18() \
|
|
s32 func_80148C18(void) { \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148C7C() \
|
|
s32 func_80148C7C(void) { \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148CE4() \
|
|
s32 func_80148CE4(void) { \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148CEC() \
|
|
s32 func_80148CEC(void) { \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148D3C() \
|
|
s32 func_80148D3C(void) { \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148F60() \
|
|
s32 func_80148F60(void) { \
|
|
return -1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148F98() \
|
|
s32 func_80148F98(void) { \
|
|
return -1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FD0() \
|
|
s32 func_80148FD0(void) { \
|
|
return -1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FD8() \
|
|
s32 func_80148FD8(void) { \
|
|
return -1; \
|
|
}
|
|
|
|
#define DEFINE_func_80149004() \
|
|
s32 func_80149004(void) { \
|
|
return -1; \
|
|
}
|
|
|
|
#define DEFINE_func_801490E0() \
|
|
void func_801490E0(s32 *a0, s16 a1) { \
|
|
*(s16*)((s32)a0 + 0x108) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_801490E8() \
|
|
void func_801490E8(s32 *a0, s16 a1) { \
|
|
*(s16*)((s32)a0 + 0x10A) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_801490F0() \
|
|
void func_801490F0(s32 *a0, s16 a1) { \
|
|
*(s16*)((s32)a0 + 0x10C) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_80149FA8() \
|
|
void func_80149FA8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8014B5B0() \
|
|
void func_8014B5B0(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x1C4) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B5D0() \
|
|
void func_8014B5D0(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x1C7) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014BDE0() \
|
|
void func_8014BDE0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80150B9C() \
|
|
void func_80150B9C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80150F78() \
|
|
void func_80150F78(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801510B8() \
|
|
void func_801510B8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801510C0() \
|
|
void func_801510C0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80151130() \
|
|
void func_80151130(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015115C() \
|
|
void func_8015115C(s32 *a0, s16 a1) { \
|
|
*(s16*)((s32)a0 + 0x16C) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_80151878() \
|
|
void func_80151878(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80155F58() \
|
|
void func_80155F58(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80156A14() \
|
|
void func_80156A14(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0xDA) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801585A4() \
|
|
void func_801585A4(s32 *a0) { \
|
|
*(s16*)((s32)a0 + 0x244) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80158794() \
|
|
void func_80158794(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80159874() \
|
|
s32 func_80159874(void) { \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80159A18() \
|
|
void func_80159A18(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015C6A4() \
|
|
void func_8015C6A4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CBCC() \
|
|
void func_8015CBCC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CBD4() \
|
|
void func_8015CBD4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CBDC() \
|
|
void func_8015CBDC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CBE4() \
|
|
void func_8015CBE4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CBEC() \
|
|
void func_8015CBEC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CBF4() \
|
|
void func_8015CBF4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CBFC() \
|
|
void func_8015CBFC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015CC04() \
|
|
void func_8015CC04(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8015EF9C() \
|
|
void func_8015EF9C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8016032C() \
|
|
void func_8016032C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801610FC() \
|
|
void func_801610FC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80162CC4() \
|
|
void func_80162CC4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80164410() \
|
|
void func_80164410(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80165A18() \
|
|
void func_80165A18(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80165B08() \
|
|
void func_80165B08(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80165B10() \
|
|
void func_80165B10(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80165B18() \
|
|
void func_80165B18(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80165B20() \
|
|
void func_80165B20(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80167AD8() \
|
|
void func_80167AD8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8016F4F4() \
|
|
void func_8016F4F4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80171A80() \
|
|
void func_80171A80(s32 *a0, s32 a1) { \
|
|
*(s32*)((s32)a0 + 0x200) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_80171B44() \
|
|
void func_80171B44(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x20C) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80172588() \
|
|
void func_80172588(s32 *a0) { \
|
|
*(s32*)((s32)a0 + 0x1F4) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017288C() \
|
|
void func_8017288C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801729A8() \
|
|
void func_801729A8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80172B0C() \
|
|
void func_80172B0C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80172C48() \
|
|
void func_80172C48(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80172D60() \
|
|
void func_80172D60(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80172E8C() \
|
|
void func_80172E8C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017316C() \
|
|
void func_8017316C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80173294() \
|
|
void func_80173294(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801736A8() \
|
|
void func_801736A8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801737B0() \
|
|
void func_801737B0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801738D4() \
|
|
void func_801738D4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80173A20() \
|
|
void func_80173A20(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80174274() \
|
|
void func_80174274(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80174354() \
|
|
void func_80174354(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80174430() \
|
|
void func_80174430(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80174524() \
|
|
void func_80174524(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017481C() \
|
|
void func_8017481C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801748E4() \
|
|
void func_801748E4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80175798() \
|
|
void func_80175798(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017BE9C() \
|
|
void func_8017BE9C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017BEA4() \
|
|
void func_8017BEA4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017BEAC() \
|
|
void func_8017BEAC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017BEB4() \
|
|
void func_8017BEB4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8012AD44() \
|
|
void func_8012AD44(s32 *a0, s16 a1) { \
|
|
*(s16*)((s32)a0 + 0x2) = a1; \
|
|
*(s16*)((s32)a0 + 0x34) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013A8B0() \
|
|
void func_8013A8B0(s32 *a0) { \
|
|
*(s16*)((s32)a0 + 0x0) = 0; \
|
|
*(s32*)((s32)a0 + 0x4) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80142DB8() \
|
|
s32 func_80142DB8(s32 *a0) { \
|
|
return *(u16*)((s32)a0 + 0x5C) & 0x1; \
|
|
}
|
|
|
|
#define DEFINE_func_80147078() \
|
|
void func_80147078(s32 *a0, s16 a1) { \
|
|
*(s16*)((s32)a0 + 0x0) = a1; \
|
|
*(s16*)((s32)a0 + 0x2) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801487F4() \
|
|
u16 func_801487F4(s32 *a0) { \
|
|
return *(u16*)((s32)a0 + 0xAA); \
|
|
}
|
|
|
|
#define DEFINE_func_80148800() \
|
|
u16 func_80148800(s32 *a0) { \
|
|
return *(u16*)((s32)a0 + 0xAC); \
|
|
}
|
|
|
|
#define DEFINE_func_8014880C() \
|
|
u8 func_8014880C(s32 *a0) { \
|
|
return *(u8*)((s32)a0 + 0xAE); \
|
|
}
|
|
|
|
#define DEFINE_func_80148818() \
|
|
u16 func_80148818(s32 *a0) { \
|
|
return *(u16*)((s32)a0 + 0xAE) >> 8; \
|
|
}
|
|
|
|
#define DEFINE_func_80148F68() \
|
|
s32 func_80148F68(s32 a0) { \
|
|
return (s16)a0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148F74() \
|
|
s32 func_80148F74(s32 a0) { \
|
|
return (a0 + 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148F80() \
|
|
s32 func_80148F80(s32 a0) { \
|
|
return (a0 + 0x200) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148F8C() \
|
|
s32 func_80148F8C(s32 a0) { \
|
|
return (a0 + 0x800) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FA0() \
|
|
s32 func_80148FA0(s32 a0) { \
|
|
return (a0 + 0x600) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FAC() \
|
|
s32 func_80148FAC(s32 a0) { \
|
|
return (a0 + 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FB8() \
|
|
s32 func_80148FB8(s32 a0) { \
|
|
return (a0 - 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FC4() \
|
|
s32 func_80148FC4(s32 a0) { \
|
|
return (a0 - 0x200) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FE0() \
|
|
s32 func_80148FE0(s32 a0) { \
|
|
return (a0 - 0x600) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FEC() \
|
|
s32 func_80148FEC(s32 a0) { \
|
|
return (a0 - 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80148FF8() \
|
|
s32 func_80148FF8(s32 a0) { \
|
|
return (a0 - 0x800) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80149204() \
|
|
void func_80149204(s32 *a0) { \
|
|
*(s32*)((s32)a0 + 0x1E4) = 0; \
|
|
*(s32*)((s32)a0 + 0x1DC) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80149284() \
|
|
s32 func_80149284(s32 *a0, s32 a1) { \
|
|
return *(s32*)((s32)a0 + 0x1DC) & a1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014A674() \
|
|
s32 func_8014A674(s32 *a0) { \
|
|
return *(u8*)((s32)a0 + 0x1BC) < 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014A69C() \
|
|
s32 func_8014A69C(s32 *a0) { \
|
|
return *(u8*)((s32)a0 + 0x1BD) == 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B154() \
|
|
s32 func_8014B154(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x44) & 0x80; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B5B8() \
|
|
u8 func_8014B5B8(s32 *a0) { \
|
|
return *(u8*)((s32)a0 + 0x1C4); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B5C4() \
|
|
void func_8014B5C4(s32 *a0, s32 a1, s32 a2) { \
|
|
*(s8*)((s32)a0 + 0x1C7) = a1 | a2; \
|
|
}
|
|
|
|
#define DEFINE_func_80162AC0() \
|
|
void func_80162AC0(s32 *a0, s8 a1) { \
|
|
*(s8*)((s32)a0 + 0x0) = a1; \
|
|
*(s8*)((s32)a0 + 0x1) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80171A04() \
|
|
void func_80171A04(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x217) = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80171A10() \
|
|
void func_80171A10(s32 *a0) { \
|
|
*(s8*)((s32)a0 + 0x217) = 2; \
|
|
}
|
|
|
|
#define DEFINE_func_80172304() \
|
|
void func_80172304(s32 *a0) { \
|
|
*(s16*)((s32)a0 + 0xAA) = 0x40; \
|
|
}
|
|
|
|
#define DEFINE_func_80172658() \
|
|
s32 func_80172658(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x1; \
|
|
}
|
|
|
|
#define DEFINE_func_80172664() \
|
|
s32 func_80172664(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x2; \
|
|
}
|
|
|
|
#define DEFINE_func_80172670() \
|
|
s32 func_80172670(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x4; \
|
|
}
|
|
|
|
#define DEFINE_func_8017267C() \
|
|
s32 func_8017267C(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x8; \
|
|
}
|
|
|
|
#define DEFINE_func_80172688() \
|
|
s32 func_80172688(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x10; \
|
|
}
|
|
|
|
#define DEFINE_func_80172694() \
|
|
s32 func_80172694(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x20; \
|
|
}
|
|
|
|
#define DEFINE_func_801726A0() \
|
|
s32 func_801726A0(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x40; \
|
|
}
|
|
|
|
#define DEFINE_func_801726AC() \
|
|
s32 func_801726AC(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x80; \
|
|
}
|
|
|
|
#define DEFINE_func_801726B8() \
|
|
s32 func_801726B8(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x100; \
|
|
}
|
|
|
|
#define DEFINE_func_801726C4() \
|
|
s32 func_801726C4(s32 *a0) { \
|
|
return *(s32*)((s32)a0 + 0x1F4) & 0x200; \
|
|
}
|
|
|
|
#define DEFINE_func_801285D4() \
|
|
extern u8 D_800B9A11; \
|
|
void func_801285D4(void) { \
|
|
D_800B9A11 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80129248() \
|
|
extern s16 D_8011DB2C; \
|
|
void func_80129248(s16 a0) { \
|
|
D_8011DB2C = a0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012943C() \
|
|
extern s16 D_80114EE0; \
|
|
void func_8012943C(void) { \
|
|
D_80114EE0 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012A100() \
|
|
extern s8 D_801150D6; \
|
|
void func_8012A100(s8 a0) { \
|
|
D_801150D6 = a0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012A2F4() \
|
|
extern s8 D_801152C0; \
|
|
void func_8012A2F4(void) { \
|
|
D_801152C0 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801379EC() \
|
|
extern s16 D_8012752E; \
|
|
void func_801379EC(void) { \
|
|
D_8012752E = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80139A34() \
|
|
extern s32 D_80127520; \
|
|
void func_80139A34(s32 a0) { \
|
|
D_80127520 = a0; \
|
|
}
|
|
|
|
#define DEFINE_func_80146D80() \
|
|
void func_80146D80(s32 *a0) { \
|
|
*(s32*)((s32)a0 + 0x18) = 0; \
|
|
*(s32*)((s32)a0 + 0x14) = 0; \
|
|
*(s32*)((s32)a0 + 0x10) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80146DE8() \
|
|
void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3) { \
|
|
*(s32*)((s32)a0 + 0x24) = a1; \
|
|
*(s32*)((s32)a0 + 0x28) = a2; \
|
|
*(s32*)((s32)a0 + 0x2C) = a3; \
|
|
}
|
|
|
|
#define DEFINE_func_801472F0() \
|
|
extern void *D_8012707C; \
|
|
void func_801472F0(void *a0) { \
|
|
D_8012707C = a0; \
|
|
}
|
|
|
|
#define DEFINE_func_801473DC() \
|
|
void func_801473DC(s32 *a0) { \
|
|
*(s32*)((s32)a0 + 0x18) = 0; \
|
|
*(s32*)((s32)a0 + 0x14) = 0; \
|
|
*(s32*)((s32)a0 + 0x10) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B4C4() \
|
|
extern s32 D_80078E98; \
|
|
void func_8014B4C4(void) { \
|
|
D_80078E98 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C6C0() \
|
|
extern u8 D_80126D17; \
|
|
void func_8014C6C0(void) { \
|
|
D_80126D17 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C6D0() \
|
|
extern u8 D_80126D1E; \
|
|
void func_8014C6D0(void) { \
|
|
D_80126D1E = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C968() \
|
|
extern s32 D_80126B50; \
|
|
void func_8014C968(void) { \
|
|
D_80126B50 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C98C() \
|
|
extern s32 D_80126B50; \
|
|
s32 func_8014C98C(void) { \
|
|
return D_80126B50; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CAFC() \
|
|
extern s32 D_80126B9C; \
|
|
s32 func_8014CAFC(void) { \
|
|
return D_80126B9C & 0x400; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB0C() \
|
|
extern s32 D_80126B9C; \
|
|
s32 func_8014CB0C(void) { \
|
|
return D_80126B9C & 0x80; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB1C() \
|
|
extern s32 D_80078E94; \
|
|
s32 func_8014CB1C(void) { \
|
|
return D_80078E94; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB58() \
|
|
extern u8 D_80078EC0; \
|
|
s32 func_8014CB58(void) { \
|
|
return D_80078EC0 & 0x7F; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB7C() \
|
|
extern s32 D_80126B9C; \
|
|
s32 func_8014CB7C(void) { \
|
|
return D_80126B9C & 0x800; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB8C() \
|
|
extern s32 D_80126B9C; \
|
|
s32 func_8014CB8C(void) { \
|
|
return D_80126B9C & 0x1000; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CBD8() \
|
|
extern s32 D_80126CDC; \
|
|
void func_8014CBD8(void) { \
|
|
D_80126CDC = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CBE8() \
|
|
extern s16 D_80126CC4; \
|
|
void func_8014CBE8(void) { \
|
|
D_80126CC4 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80153C8C() \
|
|
extern s32 D_80115210; \
|
|
void func_80153C8C(void) { \
|
|
D_80115210 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80153CBC() \
|
|
extern s32 D_80115210; \
|
|
s32 func_80153CBC(void) { \
|
|
return D_80115210; \
|
|
}
|
|
|
|
#define DEFINE_func_801632E0() \
|
|
extern s32 D_80115100; \
|
|
s32 func_801632E0(void) { \
|
|
return D_80115100; \
|
|
}
|
|
|
|
#define DEFINE_func_801658DC() \
|
|
extern s8 D_80078EC4; \
|
|
void func_801658DC(void) { \
|
|
D_80078EC4 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80165978() \
|
|
extern s32 D_8012672C; \
|
|
s32 func_80165978(void) { \
|
|
return D_8012672C; \
|
|
}
|
|
|
|
#define DEFINE_func_801659A8() \
|
|
extern s32 D_8012811C; \
|
|
s32 func_801659A8(void) { \
|
|
return D_8012811C; \
|
|
}
|
|
|
|
#define DEFINE_func_801659CC() \
|
|
extern s32 D_80126B08; \
|
|
s32 func_801659CC(void) { \
|
|
return D_80126B08; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F388() \
|
|
extern u8 D_800B9A17; \
|
|
void func_8016F388(void) { \
|
|
D_800B9A17 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017196C() \
|
|
void func_8017196C(s32 *a0, s8 a1) { \
|
|
*(s8*)((s32)a0 + 0x214) = a1; \
|
|
*(s8*)((s32)a0 + 0x215) = 0; \
|
|
*(s8*)((s32)a0 + 0x216) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80171A34() \
|
|
void func_80171A34(s32 *a0, s8 a1) { \
|
|
*(s8*)((s32)a0 + 0x214) = a1; \
|
|
*(s8*)((s32)a0 + 0x215) = 0; \
|
|
*(s8*)((s32)a0 + 0x216) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80174674() \
|
|
extern s32 D_801270BC; \
|
|
void func_80174674(void) { \
|
|
D_801270BC = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80174754() \
|
|
extern s32 D_801270BC; \
|
|
s32 func_80174754(void) { \
|
|
return D_801270BC; \
|
|
}
|
|
|
|
#define DEFINE_func_80174764() \
|
|
extern s16 D_8011F9C8; \
|
|
s16 func_80174764(void) { \
|
|
return D_8011F9C8; \
|
|
}
|
|
|
|
#define DEFINE_func_80174774() \
|
|
extern s16 D_80126938; \
|
|
s16 func_80174774(void) { \
|
|
return D_80126938; \
|
|
}
|
|
|
|
#define DEFINE_func_8012BF68() \
|
|
void func_8012BF68(void *a0) { \
|
|
*(u16 *)((s32)a0 + 0x5C) &= 0x7FFF; \
|
|
}
|
|
|
|
#define DEFINE_func_801379D8() \
|
|
extern s16 D_8012752E; \
|
|
void func_801379D8(void) { \
|
|
D_8012752E = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80138948() \
|
|
void func_80138948(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x4) = 7; \
|
|
*(s8 *)((s32)a0 + 0x1F) = 0; \
|
|
*(s8 *)((s32)a0 + 0xD) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80146CA0() \
|
|
void func_80146CA0(void *a0) { \
|
|
*(u16 *)((s32)a0 + 0x2) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80146CB4() \
|
|
void func_80146CB4(void *a0) { \
|
|
*(u16 *)((s32)a0 + 0x2) -= 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801472B4() \
|
|
void func_801472B4(void *a0) { \
|
|
*(u16 *)((s32)a0 + 0x7E) &= 0xFFFD; \
|
|
}
|
|
|
|
#define DEFINE_func_801474D8() \
|
|
void func_801474D8(s32 *a0) { \
|
|
*(s16*)((s32)a0 + 0x136) = 0; \
|
|
*(s16*)((s32)a0 + 0x134) = 0; \
|
|
*(s16*)((s32)a0 + 0x132) = 0; \
|
|
*(s16*)((s32)a0 + 0x130) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148634() \
|
|
void func_80148634(void *a0) { \
|
|
*(u16 *)((s32)a0 + 0xAA) = 0; \
|
|
*(u16 *)((s32)a0 + 0xAC) = 0; \
|
|
*(u16 *)((s32)a0 + 0xAE) = 0x8080; \
|
|
}
|
|
|
|
#define DEFINE_func_80148C20() \
|
|
s32 func_80148C20(s32 a0, s16 a1) { \
|
|
s32 *p = *(s32 **)((s32)a0 + 0x20); \
|
|
*(s16*)((s32)p + 0x12) = a1; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014900C() \
|
|
void func_8014900C(s32 *a0) { \
|
|
*(u16*)((s32)a0 + 0x3C) |= 0x8000; \
|
|
}
|
|
|
|
#define DEFINE_func_80149020() \
|
|
void func_80149020(s32 *a0) { \
|
|
*(u16*)((s32)a0 + 0x3C) &= 0x7FFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80149034() \
|
|
void func_80149034(s32 *a0) { \
|
|
*(u16*)((s32)a0 + 0x3C) |= 0x4000; \
|
|
}
|
|
|
|
#define DEFINE_func_80149048() \
|
|
void func_80149048(s32 *a0) { \
|
|
*(u16*)((s32)a0 + 0x3C) &= 0xBFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B33C() \
|
|
extern s32 D_80078E94; \
|
|
void func_8014B33C(void) { \
|
|
D_80078E94 = 0x80000000; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C6AC() \
|
|
extern u8 D_80126D17; \
|
|
void func_8014C6AC(void) { \
|
|
D_80126D17 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C6E0() \
|
|
extern u8 D_80126D1E; \
|
|
void func_8014C6E0(void) { \
|
|
D_80126D1E = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C978() \
|
|
extern s32 D_80126B50; \
|
|
void func_8014C978(void) { \
|
|
D_80126B50 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CA00() \
|
|
s32 func_8014CA00(s32 a0) { \
|
|
s32 *p = *(s32 **)((s32)a0 + 0x78); \
|
|
return *(s16*)((s32)p + 0x2C); \
|
|
}
|
|
|
|
#define DEFINE_func_80171A58() \
|
|
s32 func_80171A58(u8 *a0) { \
|
|
s32 v0 = a0[0x216] + 1; \
|
|
a0[0x216] = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80171A6C() \
|
|
s32 func_80171A6C(u8 *a0) { \
|
|
s32 v0 = a0[0x216] - 1; \
|
|
a0[0x216] = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80172590() \
|
|
s32 func_80172590(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x1; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801725A4() \
|
|
s32 func_801725A4(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x2; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801725B8() \
|
|
s32 func_801725B8(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x4; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801725CC() \
|
|
s32 func_801725CC(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x8; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801725E0() \
|
|
s32 func_801725E0(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x10; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801725F4() \
|
|
s32 func_801725F4(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x20; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80172608() \
|
|
s32 func_80172608(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x40; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017261C() \
|
|
s32 func_8017261C(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x80; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80172630() \
|
|
s32 func_80172630(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x100; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80172644() \
|
|
s32 func_80172644(u8 *a0) { \
|
|
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x200; \
|
|
*(u32 *)((s32)a0 + 0x1F4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80174808() \
|
|
s32 func_80174808(u8 *a0) { \
|
|
s32 v = (s32)a0[0x214] + 1; \
|
|
a0[0x214] = (u8)v; \
|
|
return v; \
|
|
}
|
|
|
|
#define DEFINE_func_80175494() \
|
|
extern u8 D_8011F7A8; \
|
|
void func_80175494(void) { \
|
|
D_8011F7A8 = 2; \
|
|
}
|
|
|
|
#define DEFINE_func_80142C84() \
|
|
void func_80142C84(s32 a0) { \
|
|
*(s32 *)(a0 + 0x14) = 0xFFF40000; \
|
|
*(s32 *)(a0 + 0x48) = 0x20000; \
|
|
*(s16 *)(a0 + 0x102) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80147460() \
|
|
void func_80147460(s32 a0) { \
|
|
*(s32 *)(a0 + 0x8) += *(s32 *)(a0 + 0x34); \
|
|
}
|
|
|
|
#define DEFINE_func_80148C34() \
|
|
s32 func_80148C34(s32 a0, s32 a1) { \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x400) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148C4C() \
|
|
s32 func_80148C4C(s32 a0, s32 a1) { \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x200) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148C64() \
|
|
s32 func_80148C64(s32 a0, s32 a1) { \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x800) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148C84() \
|
|
s32 func_80148C84(s32 a0, s32 a1) { \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x600) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148CB4() \
|
|
s32 func_80148CB4(s32 a0, s32 a1) { \
|
|
s32 v0 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(v0 + 0x12) = (a1 - 0x400) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148CCC() \
|
|
s32 func_80148CCC(s32 a0, s32 a1) { \
|
|
s32 v0 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(v0 + 0x12) = (a1 - 0x200) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148CF4() \
|
|
s32 func_80148CF4(s32 a0, s32 a1) { \
|
|
s32 v0 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(v0 + 0x12) = (a1 - 0x600) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148D0C() \
|
|
s32 func_80148D0C(s32 a0, s32 a1) { \
|
|
s32 v0 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(v0 + 0x12) = (a1 - 0x400) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80149210() \
|
|
void func_80149210(s32 a0, s32 a1) { \
|
|
*(s32 *)((s32)a0 + 0x1E4) = a1 | (a1 << 16); \
|
|
*(s16 *)((s32)a0 + 0x1E4) = a1; \
|
|
*(s16 *)((s32)a0 + 0x1E6) = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B2F8() \
|
|
extern s32 D_80078E94; \
|
|
extern s32 D_80078ECC; \
|
|
void func_8014B2F8(void) { \
|
|
D_80078E94 = 0; \
|
|
D_80078ECC = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B598() \
|
|
extern u8 D_80126D1C; \
|
|
extern s32 D_80126D74; \
|
|
void func_8014B598(s32 a0, s32 a1) { \
|
|
D_80126D1C = a0; \
|
|
D_80126D74 = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014BB0C() \
|
|
extern u16 D_80078EB2; \
|
|
extern s16 D_80078EB4; \
|
|
void func_8014BB0C(void) { \
|
|
D_80078EB4 = D_80078EB2; \
|
|
}
|
|
|
|
#define DEFINE_func_8014BDC8() \
|
|
extern u16 D_80078EB6; \
|
|
extern s16 D_80078EB8; \
|
|
void func_8014BDC8(void) { \
|
|
D_80078EB8 = D_80078EB6; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CA70() \
|
|
u16 func_8014CA70(s32 a0, s32 a1) { \
|
|
s32 base = *(s32 *)((s32)a0 + 0x78); \
|
|
return *(u16 *)((a1 << 1) + base + 0x14); \
|
|
}
|
|
|
|
#define DEFINE_func_8014CAE4() \
|
|
u16 func_8014CAE4(s32 *a0, s32 a1) { \
|
|
s32 base = a0[0x78 / 4]; \
|
|
return *(u16 *)(base + a1 * 2 + 0x1C); \
|
|
}
|
|
|
|
#define DEFINE_func_80153BD8() \
|
|
extern s32 D_801151FC; \
|
|
s32 func_80153BD8(s32 a0) { \
|
|
return (a0 ^ D_801151FC) == 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80153C18() \
|
|
extern s32 D_80127518; \
|
|
extern s32 D_801151FC; \
|
|
void func_80153C18(void) { \
|
|
D_80127518 = 0; \
|
|
D_801151FC = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80153C74() \
|
|
extern s16 D_8011DB0C; \
|
|
extern s16 D_8011DB1A; \
|
|
void func_80153C74(s16 a0, s16 a1) { \
|
|
D_8011DB0C = a0; \
|
|
D_8011DB1A = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_801553A8() \
|
|
void func_801553A8(s32 *a0) { \
|
|
*(s32 *)((s32)a0 + 0x44) &= 0xDFFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80155440() \
|
|
void func_80155440(s32 *a0) { \
|
|
*(s32 *)((s32)a0 + 0x44) &= 0xEFFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F094() \
|
|
void func_8016F094(s32 *a0) { \
|
|
*(s32 *)((s32)a0 + 0x1F8) &= 0xFBFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F1AC() \
|
|
extern s32 D_80126D50; \
|
|
s32 func_8016F1AC(void) { \
|
|
return D_80126D50 & 0x80FFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80171A1C() \
|
|
void func_80171A1C(u8 *a0) { \
|
|
a0[0x215] = 0; \
|
|
a0[0x216] = 0; \
|
|
a0[0x214] = a0[0x214] + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012ADE4() \
|
|
void func_8012ADE4(u8 *a0) { \
|
|
*(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x38); \
|
|
*(s32 *)(a0 + 0x8) = *(s32 *)(a0 + 0x3C); \
|
|
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B200() \
|
|
void func_8012B200(u8 *a0) { \
|
|
*(s32 *)(a0 + 0x18) = 0; \
|
|
*(s32 *)(a0 + 0x14) = 0; \
|
|
*(s32 *)(a0 + 0x10) = 0; \
|
|
*(s32 *)(a0 + 0x4C) = 0; \
|
|
*(s32 *)(a0 + 0x48) = 0; \
|
|
*(s32 *)(a0 + 0x44) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E88C() \
|
|
void func_8012E88C(u8 *a0) { \
|
|
s32 *p = *(s32 **)(a0 + 0x20); \
|
|
p[1] = p[1] & 0x7FFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E8A8() \
|
|
void func_8012E8A8(u8 *a0) { \
|
|
s32 *p = *(s32 **)(a0 + 0x20); \
|
|
p[1] = p[1] | 0x80000000; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E8C4() \
|
|
void func_8012E8C4(u8 *a0) { \
|
|
s32 *p = *(s32 **)(a0 + 0x20); \
|
|
p[1] = p[1] ^ 0x80000000; \
|
|
}
|
|
|
|
#define DEFINE_func_8014905C() \
|
|
void func_8014905C(u8 *a0) { \
|
|
*(s16 *)(a0 + 0x104) = 0; \
|
|
*(s16 *)(a0 + 0x102) = 0; \
|
|
*(s16 *)(a0 + 0x100) = 0; \
|
|
*(s16 *)(a0 + 0x10C) = 0; \
|
|
*(s16 *)(a0 + 0x10A) = 0; \
|
|
*(s16 *)(a0 + 0x108) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80149BEC() \
|
|
void func_80149BEC(s32 a0) { \
|
|
u8 v = *(u8 *)(a0 + 0x223); \
|
|
if (v != 0) { \
|
|
*(u8 *)(a0 + 0x223) = v - 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014A680() \
|
|
void func_8014A680(s32 a0) { \
|
|
u8 v = *(u8 *)(a0 + 0x1BC); \
|
|
if (v != 0) { \
|
|
*(u8 *)(a0 + 0x1BC) = v - 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014A6A8() \
|
|
void func_8014A6A8(s32 a0) { \
|
|
u8 v = *(u8 *)(a0 + 0x1BD); \
|
|
if (v != 0) { \
|
|
*(u8 *)(a0 + 0x1BD) = v - 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014A71C() \
|
|
void func_8014A71C(s32 a0) { \
|
|
u8 v = *(u8 *)(a0 + 0x1BE); \
|
|
if (v != 0) { \
|
|
*(u8 *)(a0 + 0x1BE) = v - 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014BFF4() \
|
|
void func_8014BFF4(s32 a0, s32 a1) { \
|
|
if (*(u8 *)(a0 + 0x4E) == 0) { \
|
|
*(u8 *)(a0 + 0x4E) = a1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801511A8() \
|
|
void func_801511A8(u8 *a0) { \
|
|
u16 v = *(u16 *)(a0 + 0x3C); \
|
|
*(s16 *)(a0 + 0x3E) = 0; \
|
|
*(s16 *)(a0 + 0x40) = 0; \
|
|
*(s16 *)(a0 + 0x42) = 0; \
|
|
*(u16 *)(a0 + 0x3C) = v & 0xFFFE; \
|
|
}
|
|
|
|
#define DEFINE_func_801511C4() \
|
|
void func_801511C4(u8 *a0) { \
|
|
*(u16 *)(a0 + 0xF0) = *(u16 *)(a0 + 0x3E); \
|
|
*(u16 *)(a0 + 0xF2) = *(u16 *)(a0 + 0x40); \
|
|
*(u16 *)(a0 + 0xF4) = *(u16 *)(a0 + 0x42); \
|
|
}
|
|
|
|
#define DEFINE_func_80154134() \
|
|
void func_80154134(u8 *a0) { \
|
|
*(s32 *)(a0 + 0xB4) = 0; \
|
|
*(s16 *)(a0 + 0xBA) = 0; \
|
|
*(s16 *)(a0 + 0xB8) = 0; \
|
|
a0[0xBD] = 0; \
|
|
a0[0xBC] = 0; \
|
|
a0[0xDC] = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80154B7C() \
|
|
void func_80154B7C(u8 *a0, s32 a1) { \
|
|
*(s32 *)(a0 + 0xD0) = a1; \
|
|
*(s16 *)(a0 + 0xD6) = 1; \
|
|
*(s16 *)(a0 + 0xD4) = 1; \
|
|
a0[0xD8] = 0; \
|
|
a0[0xD9] = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80154BC8() \
|
|
void func_80154BC8(void *a0, s32 a1, s32 a2) { \
|
|
*(s32 *)((s32)a0 + 0xD0) = a1; \
|
|
*(s16 *)((s32)a0 + 0xD6) = 1; \
|
|
*(s16 *)((s32)a0 + 0xD4) = 1; \
|
|
*(s8 *)((s32)a0 + 0xD8) = a2; \
|
|
*(s8 *)((s32)a0 + 0xD9) = a2; \
|
|
}
|
|
|
|
#define DEFINE_func_801596D4() \
|
|
s32 func_801596D4(void *a0) { \
|
|
*(s32 *)((s32)a0 + 0x28) = 0x10; \
|
|
*(u8 *)((s32)a0 + 0x15) = *(u8 *)((s32)a0 + 0x15) + 1; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80165124() \
|
|
void func_80165124(void *a0) { \
|
|
*(s8 *)((s32)a0 + 0x50) = *(u16 *)((s32)a0 + 0x62); \
|
|
*(s8 *)((s32)a0 + 0x51) = *(u16 *)((s32)a0 + 0x62); \
|
|
*(s8 *)((s32)a0 + 0x52) = *(u16 *)((s32)a0 + 0x62); \
|
|
}
|
|
|
|
#define DEFINE_func_8016BF34() \
|
|
void func_8016BF34(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x12) = *(u16 *)((s32)a0 + 0x6); \
|
|
*(s16 *)((s32)a0 + 0x16) = *(u16 *)((s32)a0 + 0xA); \
|
|
*(s16 *)((s32)a0 + 0x1A) = *(u16 *)((s32)a0 + 0xE); \
|
|
}
|
|
|
|
#define DEFINE_func_80174ED4() \
|
|
extern u16 D_80126980; \
|
|
s32 func_80174ED4(void) { \
|
|
return (s16)(D_80126980 & 0x8000); \
|
|
}
|
|
|
|
#define DEFINE_func_80128158() \
|
|
extern void func_80128288(void); \
|
|
void func_80128158(void) { \
|
|
func_80128288(); \
|
|
}
|
|
|
|
#define DEFINE_func_80128178() \
|
|
extern void func_801285E4(void); \
|
|
void func_80128178(void) { \
|
|
func_801285E4(); \
|
|
}
|
|
|
|
#define DEFINE_func_80128198() \
|
|
extern void func_80128678(void); \
|
|
void func_80128198(void) { \
|
|
func_80128678(); \
|
|
}
|
|
|
|
#define DEFINE_func_801281B8() \
|
|
extern void func_80128714(void); \
|
|
void func_801281B8(void) { \
|
|
func_80128714(); \
|
|
}
|
|
|
|
#define DEFINE_func_801281D8() \
|
|
extern void func_8013E67C(void); \
|
|
void func_801281D8(void) { \
|
|
func_8013E67C(); \
|
|
}
|
|
|
|
#define DEFINE_func_801281F8() \
|
|
extern void func_8013E558(void); \
|
|
void func_801281F8(void) { \
|
|
func_8013E558(); \
|
|
}
|
|
|
|
#define DEFINE_func_80128228() \
|
|
extern void func_80128A28(void); \
|
|
void func_80128228(void) { \
|
|
func_80128A28(); \
|
|
}
|
|
|
|
#define DEFINE_func_80128248() \
|
|
extern void func_80128AF4(void); \
|
|
void func_80128248(void) { \
|
|
func_80128AF4(); \
|
|
}
|
|
|
|
#define DEFINE_func_80128268() \
|
|
extern void func_801282EC(void); \
|
|
void func_80128268(void) { \
|
|
func_801282EC(); \
|
|
}
|
|
|
|
#define DEFINE_func_801282CC() \
|
|
extern void func_80011B7C(int); \
|
|
void func_801282CC(void) { \
|
|
func_80011B7C(0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A8E8() \
|
|
extern void func_8012AAAC(void); \
|
|
void func_8012A8E8(void) { \
|
|
func_8012AAAC(); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B21C() \
|
|
void func_8012B21C(void *a0) { \
|
|
*(s32 *)((s32)a0 + 0x18) = 0; \
|
|
*(s32 *)((s32)a0 + 0x14) = 0; \
|
|
*(s32 *)((s32)a0 + 0x10) = 0; \
|
|
*(s32 *)((s32)a0 + 0x4C) = 0; \
|
|
*(s32 *)((s32)a0 + 0x44) = 0; \
|
|
*(s32 *)((s32)a0 + 0x48) = 0xC000; \
|
|
}
|
|
|
|
#define DEFINE_func_8012D38C() \
|
|
extern void func_8012D098(); \
|
|
void func_8012D38C(int a0) { \
|
|
func_8012D098(a0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012FCA4() \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012FCA4(int a0) { \
|
|
func_80131CA8(a0, 0x1B); \
|
|
}
|
|
|
|
#define DEFINE_func_80136C1C() \
|
|
extern void func_80136C3C(void); \
|
|
void func_80136C1C(void) { \
|
|
func_80136C3C(); \
|
|
}
|
|
|
|
#define DEFINE_func_801376C8() \
|
|
extern void func_801376E8(int a0, int a1); \
|
|
void func_801376C8(int a0) { \
|
|
func_801376E8(a0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80146534() \
|
|
extern s32 D_80127098; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127090; \
|
|
void func_80146534(void) { \
|
|
D_80127098 = 0; \
|
|
D_80127094 = 0; \
|
|
D_80127090 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80147788() \
|
|
void func_80147788(void *a0, s32 a1) { \
|
|
void *v1 = *(void **)((s32)a0 + 0x20); \
|
|
*(s16 *)((s32)v1 + 0x10) = (*(u16 *)((s32)v1 + 0x10) + a1) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_801477A8() \
|
|
void func_801477A8(void *a0, s32 a1) { \
|
|
void *v1 = *(void **)((s32)a0 + 0x20); \
|
|
*(s16 *)((s32)v1 + 0x12) = (*(u16 *)((s32)v1 + 0x12) + a1) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_801477C8() \
|
|
void func_801477C8(void *a0, s32 a1) { \
|
|
void *v1 = *(void **)((s32)a0 + 0x20); \
|
|
*(s16 *)((s32)v1 + 0x14) = (*(u16 *)((s32)v1 + 0x14) + a1) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80147928() \
|
|
extern void func_80147948(int a0, int a1, int a2); \
|
|
void func_80147928(int a0, int a1) { \
|
|
func_80147948(a0, a1, 0x1F0000); \
|
|
}
|
|
|
|
#define DEFINE_func_8014799C() \
|
|
extern void func_801479BC(int a0, int a1, int a2); \
|
|
void func_8014799C(int a0, int a1) { \
|
|
func_801479BC(a0, a1, 0x1F0000); \
|
|
}
|
|
|
|
#define DEFINE_func_80147A10() \
|
|
extern void func_80147A30(int a0, int a1, int a2); \
|
|
void func_80147A10(int a0, int a1) { \
|
|
func_80147A30(a0, a1, 0x1F0000); \
|
|
}
|
|
|
|
#define DEFINE_func_80149704() \
|
|
extern void func_8015AD08(); \
|
|
void func_80149704(void) { \
|
|
func_8015AD08(); \
|
|
}
|
|
|
|
#define DEFINE_func_80149724() \
|
|
extern void func_8015ACC4(); \
|
|
void func_80149724(void) { \
|
|
func_8015ACC4(); \
|
|
}
|
|
|
|
#define DEFINE_func_80149788() \
|
|
extern void func_8015F7A0(); \
|
|
void func_80149788(void) { \
|
|
func_8015F7A0(); \
|
|
}
|
|
|
|
#define DEFINE_func_80149864() \
|
|
extern void func_801653B8(); \
|
|
void func_80149864(void) { \
|
|
func_801653B8(); \
|
|
}
|
|
|
|
#define DEFINE_func_801498C0() \
|
|
extern void func_80160B00(); \
|
|
void func_801498C0(void) { \
|
|
func_80160B00(); \
|
|
}
|
|
|
|
#define DEFINE_func_80149C94() \
|
|
extern void func_801577C8(); \
|
|
void func_80149C94(void) { \
|
|
func_801577C8(); \
|
|
}
|
|
|
|
#define DEFINE_func_80149CB4() \
|
|
extern void func_80157D20(void); \
|
|
void func_80149CB4(void) { \
|
|
func_80157D20(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014A218() \
|
|
extern void func_8015D4B4(); \
|
|
void func_8014A218(void) { \
|
|
func_8015D4B4(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014A4FC() \
|
|
extern void func_8015EDD4(); \
|
|
void func_8014A4FC(void) { \
|
|
func_8015EDD4(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014A830() \
|
|
extern void func_8015E184(); \
|
|
void func_8014A830(void) { \
|
|
func_8015E184(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014AB5C() \
|
|
extern void func_8014AB7C(); \
|
|
void func_8014AB5C(void) { \
|
|
func_8014AB7C(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014ABF0() \
|
|
extern void func_8014AC10(); \
|
|
void func_8014ABF0(void) { \
|
|
func_8014AC10(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BEF8() \
|
|
extern s32 func_80029178(s32 arg); \
|
|
u8 func_8014BEF8(void) { \
|
|
return func_80029178(0x80); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BF6C() \
|
|
extern s32 func_800291B4(s32 arg); \
|
|
u8 func_8014BF6C(void) { \
|
|
return func_800291B4(0xCF); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BFD4() \
|
|
extern s32 func_800291B4(s32 arg); \
|
|
u8 func_8014BFD4(void) { \
|
|
return func_800291B4(0xD0); \
|
|
}
|
|
|
|
#define DEFINE_func_80150150() \
|
|
extern s32 func_80134510(s32 arg); \
|
|
s32 func_80150150(s32 a, s32 b) { \
|
|
return func_80134510(b) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80150460() \
|
|
extern s32 func_80134510(s32 arg); \
|
|
s32 func_80150460(s32 a, s32 b) { \
|
|
return func_80134510(b) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80150CC4() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150CC4(s32 a) { \
|
|
func_80150EC4(a, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80150CE4() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150CE4(s32 a) { \
|
|
func_80150EC4(a, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_80150D04() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150D04(s32 a) { \
|
|
func_80150EC4(a, 2); \
|
|
}
|
|
|
|
#define DEFINE_func_80150D24() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150D24(s32 a) { \
|
|
func_80150EC4(a, 3); \
|
|
}
|
|
|
|
#define DEFINE_func_80150D44() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150D44(s32 a) { \
|
|
func_80150EC4(a, 4); \
|
|
}
|
|
|
|
#define DEFINE_func_80150D64() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150D64(s32 a) { \
|
|
func_80150EC4(a, 5); \
|
|
}
|
|
|
|
#define DEFINE_func_80150D84() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150D84(s32 a) { \
|
|
func_80150EC4(a, 6); \
|
|
}
|
|
|
|
#define DEFINE_func_80150DA4() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150DA4(s32 a) { \
|
|
func_80150EC4(a, 7); \
|
|
}
|
|
|
|
#define DEFINE_func_80150DC4() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150DC4(s32 a) { \
|
|
func_80150EC4(a, 8); \
|
|
}
|
|
|
|
#define DEFINE_func_80150DE4() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150DE4(s32 a) { \
|
|
func_80150EC4(a, 9); \
|
|
}
|
|
|
|
#define DEFINE_func_80150E04() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150E04(s32 a) { \
|
|
func_80150EC4(a, 10); \
|
|
}
|
|
|
|
#define DEFINE_func_80150E24() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150E24(s32 a) { \
|
|
func_80150EC4(a, 11); \
|
|
}
|
|
|
|
#define DEFINE_func_80150E44() \
|
|
extern void func_80150EC4(s32 a, s32 b); \
|
|
void func_80150E44(s32 a) { \
|
|
func_80150EC4(a, 12); \
|
|
}
|
|
|
|
#define DEFINE_func_80150E64() \
|
|
extern void func_80150EC4(s32 a0, s32 a1); \
|
|
void func_80150E64(s32 a0) { \
|
|
func_80150EC4(a0, 0xD); \
|
|
}
|
|
|
|
#define DEFINE_func_80151110() \
|
|
extern s32 func_8012DB84(void); \
|
|
s32 func_80151110(void) { \
|
|
return func_8012DB84(); \
|
|
}
|
|
|
|
#define DEFINE_func_80151164() \
|
|
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_80151164(s32 a0, s32 a1) { \
|
|
return func_80151184(a0, a1, 0xA); \
|
|
}
|
|
|
|
#define DEFINE_func_80151924() \
|
|
extern s32 func_80151944(void); \
|
|
s32 func_80151924(void) { \
|
|
return func_80151944(); \
|
|
}
|
|
|
|
#define DEFINE_func_80153C9C() \
|
|
extern s32 D_80115210; \
|
|
void func_80153C9C(void) { \
|
|
D_80115210 = D_80115210 + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80155F60() \
|
|
extern s32 func_80155F80(); \
|
|
s32 func_80155F60(void) { \
|
|
return func_80155F80(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015771C() \
|
|
extern s32 func_8015773C(u8 *a0); \
|
|
s32 func_8015771C(u8 *a0) { \
|
|
a0[0x1AA] = 0; \
|
|
return func_8015773C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BE74() \
|
|
extern s32 func_8015BE94(); \
|
|
s32 func_8015BE74(void) { \
|
|
return func_8015BE94(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BEC4() \
|
|
extern s32 func_8015AE2C(); \
|
|
s32 func_8015BEC4(void) { \
|
|
return func_8015AE2C(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BEE4() \
|
|
extern s32 func_8015B950(void); \
|
|
s32 func_8015BEE4(void) { \
|
|
return func_8015B950(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015CCB0() \
|
|
extern s32 func_8015CCD0(); \
|
|
s32 func_8015CCB0(void) { \
|
|
return func_8015CCD0(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015CFFC() \
|
|
extern void func_8015D01C(); \
|
|
void func_8015CFFC(void) { \
|
|
func_8015D01C(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015D524() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015D524(s32 arg0) { \
|
|
func_80154A74(arg0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F360() \
|
|
extern void func_8015F380(); \
|
|
void func_8015F360(void) { \
|
|
func_8015F380(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015FA24() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015FA24(s32 arg0) { \
|
|
func_80154A74(arg0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_80160EE0() \
|
|
extern void func_80160F00(); \
|
|
void func_80160EE0(void) { \
|
|
func_80160F00(); \
|
|
}
|
|
|
|
#define DEFINE_func_80161104() \
|
|
extern s32 func_80161208(); \
|
|
s32 func_80161104(void) { \
|
|
return func_80161208() == 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80162F60() \
|
|
extern void func_80147948(s32 a0, s32 a1, s32 a2); \
|
|
void func_80162F60(s32 arg0, s32 arg1) { \
|
|
func_80147948(arg0, arg1, 0x7F0000); \
|
|
}
|
|
|
|
#define DEFINE_func_80162F80() \
|
|
extern void func_801479BC(s32 a0, s32 a1, s32 a2); \
|
|
void func_80162F80(s32 arg0, s32 arg1) { \
|
|
func_801479BC(arg0, arg1, 0x7F0000); \
|
|
}
|
|
|
|
#define DEFINE_func_80162FA0() \
|
|
extern void func_80147A30(s32 a0, s32 a1, s32 a2); \
|
|
void func_80162FA0(s32 arg0, s32 arg1) { \
|
|
func_80147A30(arg0, arg1, 0x7F0000); \
|
|
}
|
|
|
|
#define DEFINE_func_80164DB0() \
|
|
extern void func_80162CCC(void); \
|
|
void func_80164DB0(void) { \
|
|
func_80162CCC(); \
|
|
}
|
|
|
|
#define DEFINE_func_80165938() \
|
|
extern s32 D_8012672C; \
|
|
extern s32 D_8012811C; \
|
|
extern s32 D_80126B08; \
|
|
void func_80165938(void) { \
|
|
D_8012672C = 0; \
|
|
D_8012811C = 0; \
|
|
D_80126B08 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80165958() \
|
|
extern s32 D_8012672C; \
|
|
void func_80165958(void) { \
|
|
D_8012672C = D_8012672C + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80165988() \
|
|
extern s32 D_8012811C; \
|
|
void func_80165988(void) { \
|
|
D_8012811C = D_8012811C + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80165C58() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_80165C58(s32 arg0) { \
|
|
func_80154A74(arg0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_80168A88() \
|
|
extern void func_80146C3C(void); \
|
|
void func_80168A88(void) { \
|
|
func_80146C3C(); \
|
|
}
|
|
|
|
#define DEFINE_func_8016B428() \
|
|
extern s32 func_8016B448(s32, s32); \
|
|
s32 func_8016B428(s32 a0) { \
|
|
return func_8016B448(a0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016BA48() \
|
|
extern s32 func_8016BA68(s32, s32); \
|
|
s32 func_8016BA48(s32 a0) { \
|
|
return func_8016BA68(a0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016ED6C() \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016ED6C(void) { \
|
|
func_80146C3C(); \
|
|
}
|
|
|
|
#define DEFINE_func_8016EFA8() \
|
|
extern s32 func_8016EFC8(s32); \
|
|
s32 func_8016EFA8(s32 a0) { \
|
|
return func_8016EFC8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F288() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F288(void) { \
|
|
D_80126D50 = D_80126D50 | 0x1000000; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F2A8() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F2A8(void) { \
|
|
D_80126D50 = D_80126D50 | 0x2000000; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F2EC() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F2EC(void) { \
|
|
D_80126D50 = D_80126D50 | 0x8000000; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F330() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F330(void) { \
|
|
D_80126D50 = D_80126D50 | 0x10000000; \
|
|
}
|
|
|
|
#define DEFINE_func_801724EC() \
|
|
extern s32 func_80013450(s32); \
|
|
s32 func_801724EC(s32 a0) { \
|
|
return func_80013450(a0 + 4) < 0x10; \
|
|
}
|
|
|
|
#define DEFINE_func_80172760() \
|
|
extern s32 func_80174650(s32); \
|
|
s32 func_80172760(s32 a0) { \
|
|
return func_80174650(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174188() \
|
|
extern s32 func_8014BCEC(s32, s32); \
|
|
s32 func_80174188(s32 a0) { \
|
|
return func_8014BCEC(a0, 0x19); \
|
|
}
|
|
|
|
#define DEFINE_func_80174630() \
|
|
extern s32 D_801270BC; \
|
|
void func_80174630(void) { \
|
|
D_801270BC = D_801270BC | 0x1; \
|
|
}
|
|
|
|
#define DEFINE_func_801747AC() \
|
|
extern s32 func_8016F0AC(); \
|
|
s32 func_801747AC(s32 a0) { \
|
|
return func_8016F0AC(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801748C4() \
|
|
void func_801748C4(s32 a0) { \
|
|
u8 v = *(u8 *)(a0 + 0x214) + 1; \
|
|
*(s32 *)(a0 + 0x44) |= 0x4000000; \
|
|
*(u8 *)(a0 + 0x214) = v; \
|
|
}
|
|
|
|
#define DEFINE_func_801749A8() \
|
|
extern s32 func_801749C8(s32); \
|
|
s32 func_801749A8(s32 a0) { \
|
|
return func_801749C8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174C60() \
|
|
extern s32 func_80174CB0(s32, s32); \
|
|
s32 func_80174C60(s32 a0) { \
|
|
return func_80174CB0(a0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017ADE8() \
|
|
extern s32 func_8017AD0C(s32); \
|
|
s32 func_8017ADE8(s32 a0) { \
|
|
return func_8017AD0C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80129258() \
|
|
extern s16 D_8011DB30; \
|
|
void func_80129258(void) { \
|
|
s16 *p = &D_8011DB30; \
|
|
s32 i = 0x7F; \
|
|
do { \
|
|
*p = 0; \
|
|
p = (s16 *)((s32)p + 0x38); \
|
|
i--; \
|
|
} while (i >= 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80129350() \
|
|
void func_80129350(s32 a0, s32 a1) { \
|
|
*(s32 *)(a0 + 0x4) = *(s32 *)(a1 + 0x4); \
|
|
*(s32 *)(a0 + 0x8) = *(s32 *)(a1 + 0x8); \
|
|
*(s32 *)(a0 + 0xC) = *(s32 *)(a1 + 0xC); \
|
|
}
|
|
|
|
#define DEFINE_func_80129374() \
|
|
void func_80129374(s32 a0, s32 a1) { \
|
|
*(s32 *)(a0 + 0x10) = *(s32 *)(a1 + 0x10); \
|
|
*(s32 *)(a0 + 0x14) = *(s32 *)(a1 + 0x14); \
|
|
*(s32 *)(a0 + 0x18) = *(s32 *)(a1 + 0x18); \
|
|
}
|
|
|
|
#define DEFINE_func_80129FF4() \
|
|
extern void func_8012A018(s32 a, s32 b); \
|
|
void func_80129FF4(void) { \
|
|
func_8012A018(0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B23C() \
|
|
void func_8012B23C(s32 a0) { \
|
|
*(s32 *)(a0 + 0x18) = 0; \
|
|
*(s32 *)(a0 + 0x14) = 0; \
|
|
*(s32 *)(a0 + 0x10) = 0; \
|
|
*(s32 *)(a0 + 0x4C) = 0; \
|
|
*(s32 *)(a0 + 0x44) = 0; \
|
|
*(s32 *)(a0 + 0x48) = 0x18000; \
|
|
}
|
|
|
|
#define DEFINE_func_8012C194() \
|
|
extern void func_8001D074(s32 a, s32 b); \
|
|
void func_8012C194(void) { \
|
|
func_8001D074(0x3E, 0x7D); \
|
|
}
|
|
|
|
#define DEFINE_func_8012C1B8() \
|
|
extern void func_8001CFDC(s32 a, s32 b); \
|
|
void func_8012C1B8(void) { \
|
|
func_8001CFDC(0x26, 0x85); \
|
|
}
|
|
|
|
#define DEFINE_func_8012CC1C() \
|
|
extern void func_8012CC88(s32 a, s32 b, s32 c); \
|
|
void func_8012CC1C(s32 arg0, s32 arg1) { \
|
|
func_8012CC88(arg0, 0, arg1); \
|
|
}
|
|
|
|
#define DEFINE_func_8012CC40() \
|
|
extern void func_8012CC88(s32 a, s32 b, s32 c); \
|
|
void func_8012CC40(s32 arg0, s32 arg1) { \
|
|
func_8012CC88(arg0, 1, arg1); \
|
|
}
|
|
|
|
#define DEFINE_func_80139A44() \
|
|
extern s32 D_80127530[4]; \
|
|
void func_80139A44(s32 a0, u16 a1) { \
|
|
if (a1 < 4) { \
|
|
D_80127530[a1] = a0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80139A68() \
|
|
extern s16 D_80127540[4]; \
|
|
void func_80139A68(s32 a0, u16 a1) { \
|
|
if (a1 < 4) { \
|
|
D_80127540[a1] = (s16)a0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80139DC8() \
|
|
extern s16 D_8012811A; \
|
|
void func_80139DC8(void) { \
|
|
s32 i = 0x287; \
|
|
s16 *p = &D_8012811A; \
|
|
do { \
|
|
*p = 0; \
|
|
i--; \
|
|
p = (s16 *)((s32)p - 2); \
|
|
} while (i >= 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80143970() \
|
|
extern s32 func_8012C588(s32 a0, s32 a1); \
|
|
s32 func_80143970(s32 a0) { \
|
|
return func_8012C588(0x1B, a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80146554() \
|
|
extern void func_8001D074(s32 a0, s32 a1); \
|
|
void func_80146554(void) { \
|
|
func_8001D074(4, 6); \
|
|
}
|
|
|
|
#define DEFINE_func_80146578() \
|
|
extern void func_8001D074(s32 a0, s32 a1); \
|
|
void func_80146578(void) { \
|
|
func_8001D074(6, 0x16); \
|
|
}
|
|
|
|
#define DEFINE_func_8014659C() \
|
|
extern void func_8001CFDC(s32, s32); \
|
|
void func_8014659C(void) { \
|
|
func_8001CFDC(6, 0x16); \
|
|
}
|
|
|
|
#define DEFINE_func_801465C0() \
|
|
extern void func_8001D074(s32, s32); \
|
|
void func_801465C0(void) { \
|
|
func_8001D074(0x16, 0x3E); \
|
|
}
|
|
|
|
#define DEFINE_func_801465E4() \
|
|
extern void func_8001CFDC(s32, s32); \
|
|
void func_801465E4(void) { \
|
|
func_8001CFDC(0x16, 0x26); \
|
|
}
|
|
|
|
#define DEFINE_func_80147290() \
|
|
extern s16 D_80126BB8; \
|
|
extern s16 D_80126BBA; \
|
|
extern s16 D_80126BBC; \
|
|
void func_80147290(void) { \
|
|
D_80126BB8 = 0x1000; \
|
|
D_80126BBA = 0x1000; \
|
|
D_80126BBC = 0x1000; \
|
|
}
|
|
|
|
#define DEFINE_func_80147300() \
|
|
extern void func_80147364(u16, s32); \
|
|
void func_80147300(u16 arg0) { \
|
|
func_80147364(arg0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80149350() \
|
|
extern void func_8012F14C(s32); \
|
|
void func_80149350(s32 arg0) { \
|
|
func_8012F14C(*(s32 *)(arg0 + 0x20) + 0x34); \
|
|
}
|
|
|
|
#define DEFINE_func_8014942C() \
|
|
extern void func_8012F038(s32); \
|
|
void func_8014942C(s32 arg0) { \
|
|
func_8012F038(*(s32 *)(arg0 + 0x20) + 0x34); \
|
|
}
|
|
|
|
#define DEFINE_func_8014AA04() \
|
|
extern u8 D_80078EC0; \
|
|
void func_8014AA04(s32 a0) { \
|
|
D_80078EC0 = a0 | (D_80078EC0 & 0x80); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BE78() \
|
|
extern void func_80029124(s32, s32); \
|
|
void func_8014BE78(void) { \
|
|
func_80029124(0x12F, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BE9C() \
|
|
extern void func_80029124(s32, s32); \
|
|
void func_8014BE9C(void) { \
|
|
func_80029124(0x12F, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BF48() \
|
|
extern void func_800291A0(s32, s32); \
|
|
void func_8014BF48(void) { \
|
|
func_800291A0(0xCF, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BF8C() \
|
|
extern void func_800291A0(s32, s32); \
|
|
void func_8014BF8C(u8 arg0) { \
|
|
func_800291A0(0xD0, arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BFB0() \
|
|
extern void func_800291A0(s32, s32); \
|
|
void func_8014BFB0(void) { \
|
|
func_800291A0(0xD0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80150CA0() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_80150CA0(int arg) { \
|
|
return func_80151184(arg, 0xE001, 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_80150FB4() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_80150FB4(int arg) { \
|
|
return func_80151184(arg, 0x8, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80151014() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_80151014(int arg) { \
|
|
return func_80151184(arg, 0xC00B, 0x20); \
|
|
}
|
|
|
|
#define DEFINE_func_80151070() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_80151070(int arg) { \
|
|
return func_80151184(arg, 0xE003, 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_80151094() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_80151094(int arg) { \
|
|
return func_80151184(arg, 0xC00D, 0x18); \
|
|
}
|
|
|
|
#define DEFINE_func_801510C8() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_801510C8(int arg) { \
|
|
return func_80151184(arg, 0x4018, 0x20); \
|
|
}
|
|
|
|
#define DEFINE_func_801510EC() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_801510EC(int arg) { \
|
|
return func_80151184(arg, 0xE016, 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_80151138() \
|
|
extern int func_80151184(int arg, int a1, int a2); \
|
|
int func_80151138(int arg) { \
|
|
return func_80151184(arg, 0xC01F, 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_801511E0() \
|
|
extern int func_80151204(int arg, int a1); \
|
|
int func_801511E0(int arg) { \
|
|
return func_80151204(arg, *(short *)((int)arg + 0xF2)); \
|
|
}
|
|
|
|
#define DEFINE_func_80155FB0() \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
int func_80155FB0(int arg, int a1) { \
|
|
return func_80155FF8(arg, a1 | 0x10000); \
|
|
}
|
|
|
|
#define DEFINE_func_80155FD4() \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
int func_80155FD4(int arg, int a1) { \
|
|
return func_80155FF8(arg, a1 | 0x20000); \
|
|
}
|
|
|
|
#define DEFINE_func_801598BC() \
|
|
extern int func_800167F0(int arg); \
|
|
int func_801598BC(void) { \
|
|
return (func_800167F0(4) & 0xFFFF) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80162414() \
|
|
extern s32 func_800167F0(s32 a0); \
|
|
s32 func_80162414(void) { \
|
|
return (func_800167F0(4) & 0xffff) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80168640() \
|
|
void func_80168640(s32 a0) { \
|
|
*(s32 *)(a0 + 0x1C) = 0x20; \
|
|
*(u16 *)(a0 + 0x12) = 0; \
|
|
*(u16 *)(a0 + 0x10) = 0x80; \
|
|
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F264() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F264(void) { \
|
|
D_80126D50 &= 0xFEFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F2C8() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F2C8(void) { \
|
|
D_80126D50 &= 0xFDFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F30C() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F30C(void) { \
|
|
D_80126D50 &= 0xF7FFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F350() \
|
|
extern s32 D_80126D50; \
|
|
void func_8016F350(void) { \
|
|
D_80126D50 &= 0xEFFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F44C() \
|
|
extern s32 func_80029178(s32 a0); \
|
|
s32 func_8016F44C(s32 a0) { \
|
|
return (func_80029178(a0 + 0x125) & 0xff) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F470() \
|
|
extern void func_80029124(s32 a0, s32 a1); \
|
|
void func_8016F470(s32 a0) { \
|
|
func_80029124(a0 + 0x125, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80171904() \
|
|
extern s32 D_80126D50; \
|
|
void func_80171904(s32 a0) { \
|
|
D_80126D50 = a0 | (D_80126D50 & 0x7F000000); \
|
|
}
|
|
|
|
#define DEFINE_func_80179DF8() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179DF8(void) { \
|
|
s16 local; \
|
|
local = 0; \
|
|
func_80179B74(&local); \
|
|
}
|
|
|
|
#define DEFINE_func_8012853C() \
|
|
extern void func_80146074(void); \
|
|
extern void func_80011C10(void); \
|
|
void func_8012853C(void) { \
|
|
func_80146074(); \
|
|
func_80011C10(); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BD14() \
|
|
extern void func_80013350(s32 a0, void *a1); \
|
|
extern u8 D_80126B5C; \
|
|
void func_8012BD14(s32 a0) { \
|
|
func_80013350(a0 + 4, &D_80126B5C); \
|
|
}
|
|
|
|
#define DEFINE_func_801375EC() \
|
|
extern void func_80137614(s32 a0, s32 a1, s32 a2); \
|
|
void func_801375EC(s32 a0, s16 a1) { \
|
|
func_80137614(a0, a1, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80138DB8() \
|
|
extern s32 func_80014E80(s32 a0, s32 a1); \
|
|
s16 func_80138DB8(s32 a0, u8 a1, s32 a2) { \
|
|
return (s16)func_80014E80(a1, a2); \
|
|
}
|
|
|
|
#define DEFINE_func_80139788() \
|
|
extern void func_8001931C(void); \
|
|
extern s16 D_8012752C; \
|
|
void func_80139788(void) { \
|
|
func_8001931C(); \
|
|
D_8012752C = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013E814() \
|
|
extern void func_800D24A0(s32 arg); \
|
|
extern void func_8013E6AC(void); \
|
|
void func_8013E814(void) { \
|
|
func_800D24A0(0); \
|
|
func_8013E6AC(); \
|
|
}
|
|
|
|
#define DEFINE_func_80144A04() \
|
|
extern void func_80144A04(s32 *a0); \
|
|
void func_80144A04(s32 *a0) { \
|
|
void (*fp)(void); \
|
|
fp = (void (*)(void))*(s32 *)((s32)a0 + 0xDC); \
|
|
fp(); \
|
|
}
|
|
|
|
#define DEFINE_func_80144AEC() \
|
|
extern void func_80144B14(void); \
|
|
void func_80144AEC(s32 *a0) { \
|
|
s32 old; \
|
|
old = *(s32 *)((s32)a0 + 0xDC); \
|
|
*(s32 *)((s32)a0 + 0xDC) = (s32)&func_80144B14; \
|
|
*(s16 *)((s32)a0 + 0x0) = 0x83; \
|
|
*(s16 *)((s32)a0 + 0x2) = 1; \
|
|
*(s32 *)((s32)a0 + 0xCC) = old; \
|
|
}
|
|
|
|
#define DEFINE_func_801474EC() \
|
|
void func_801474EC(s32 *a0) { \
|
|
*(s16 *)((s32)a0 + 0x11C) = 0; \
|
|
*(s16 *)((s32)a0 + 0x11A) = 0; \
|
|
*(s16 *)((s32)a0 + 0x118) = 0; \
|
|
*(s16 *)((s32)a0 + 0x124) = 0; \
|
|
*(s16 *)((s32)a0 + 0x122) = 0; \
|
|
*(s16 *)((s32)a0 + 0x120) = 0; \
|
|
*(s16 *)((s32)a0 + 0x12C) = 0; \
|
|
*(s16 *)((s32)a0 + 0x12A) = 0; \
|
|
*(s16 *)((s32)a0 + 0x128) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80147A84() \
|
|
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
|
|
void func_80147A84(s32 arg0) { \
|
|
func_80147AD4(arg0, 0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80147AAC() \
|
|
extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
|
|
void func_80147AAC(s32 arg0) { \
|
|
func_80147C30(arg0, 0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80147F50() \
|
|
extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
|
|
void func_80147F50(s32 arg0) { \
|
|
func_80147F78(arg0, 0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014ACC0() \
|
|
void func_8014ACC0(s32 a0, s32 a1) { \
|
|
s16 v0; \
|
|
v0 = *(u16 *)((s32)a0 + 0x1C8) - a1; \
|
|
*(s16 *)((s32)a0 + 0x1C8) = v0; \
|
|
if (v0 < 0) { \
|
|
*(s16 *)((s32)a0 + 0x1C8) = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B00C() \
|
|
extern void func_8014B034(s32 arg0); \
|
|
void func_8014B00C(s32 arg0) { \
|
|
func_8014B034(arg0 * 60); \
|
|
}
|
|
|
|
#define DEFINE_func_80153BF0() \
|
|
extern s32 D_801151FC; \
|
|
extern s32 D_80127518; \
|
|
s32 func_80153BF0(s32 a0) { \
|
|
if (a0 == D_801151FC) { \
|
|
D_80127518 = 0; \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8015410C() \
|
|
extern void func_80151664(void); \
|
|
extern s32 D_80127518; \
|
|
void func_8015410C(void) { \
|
|
D_80127518 = 0; \
|
|
func_80151664(); \
|
|
}
|
|
|
|
#define DEFINE_func_801627C0() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern s32 D_8011F750; \
|
|
void func_801627C0(void) { \
|
|
func_80016714(&D_8011F750, 0x58); \
|
|
}
|
|
|
|
#define DEFINE_func_80162AF4() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern s32 D_8011F9D0; \
|
|
void func_80162AF4(void) { \
|
|
func_80016714(&D_8011F9D0, 0x820); \
|
|
}
|
|
|
|
#define DEFINE_func_80163234() \
|
|
extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80163234(s32 a0) { \
|
|
func_8016325C(a0, 0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80165C78() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern s32 D_8011D030; \
|
|
void func_80165C78(void) { \
|
|
func_80016714(&D_8011D030, 0xA50); \
|
|
}
|
|
|
|
#define DEFINE_func_8016E8F0() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern s32 D_80115218; \
|
|
void func_8016E8F0(void) { \
|
|
func_80016714(&D_80115218, 0x80); \
|
|
}
|
|
|
|
#define DEFINE_func_80171238() \
|
|
extern void func_801718AC(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_80171238(void) { \
|
|
func_801718AC(D_8011F738); \
|
|
}
|
|
|
|
#define DEFINE_func_80171884() \
|
|
extern void func_80171928(void *a0); \
|
|
extern s32 D_80126B58; \
|
|
void func_80171884(void) { \
|
|
func_80171928(&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80172710() \
|
|
extern void (*D_80127088)(void); \
|
|
void func_80172710(void) { \
|
|
D_80127088(); \
|
|
}
|
|
|
|
#define DEFINE_func_80172ED4() \
|
|
extern void func_8017303C(void *); \
|
|
extern u8 D_800D59EC[]; \
|
|
void func_80172ED4(void) { \
|
|
func_8017303C(D_800D59EC); \
|
|
}
|
|
|
|
#define DEFINE_func_80172EFC() \
|
|
extern void func_8017303C(void *); \
|
|
extern u8 D_800D599C[]; \
|
|
void func_80172EFC(void) { \
|
|
func_8017303C(D_800D599C); \
|
|
}
|
|
|
|
#define DEFINE_func_80172F24() \
|
|
extern void func_8017303C(void *); \
|
|
extern u8 D_800D5934[]; \
|
|
void func_80172F24(void) { \
|
|
func_8017303C(D_800D5934); \
|
|
}
|
|
|
|
#define DEFINE_func_8017329C() \
|
|
extern void func_80174684(void *); \
|
|
extern void func_801732C4(); \
|
|
void func_8017329C(void) { \
|
|
func_80174684(func_801732C4); \
|
|
}
|
|
|
|
#define DEFINE_func_801732F4() \
|
|
extern void func_80174684(void *); \
|
|
extern void func_8017331C(); \
|
|
void func_801732F4(void) { \
|
|
func_80174684(func_8017331C); \
|
|
}
|
|
|
|
#define DEFINE_func_8017334C() \
|
|
extern void func_80174684(void *); \
|
|
extern void func_80173374(); \
|
|
void func_8017334C(void) { \
|
|
func_80174684(func_80173374); \
|
|
}
|
|
|
|
#define DEFINE_func_801733A4() \
|
|
extern void func_80174684(void *); \
|
|
extern void func_8017331C(); \
|
|
void func_801733A4(void) { \
|
|
func_80174684(func_8017331C); \
|
|
}
|
|
|
|
#define DEFINE_func_8017452C() \
|
|
extern void func_80174684(void *); \
|
|
extern void func_80174554(); \
|
|
void func_8017452C(void) { \
|
|
func_80174684(func_80174554); \
|
|
}
|
|
|
|
#define DEFINE_func_80174584() \
|
|
extern void func_80174684(void *); \
|
|
extern void func_801745AC(); \
|
|
void func_80174584(void) { \
|
|
func_80174684(func_801745AC); \
|
|
}
|
|
|
|
#define DEFINE_func_801745DC() \
|
|
extern void func_80174604(void); \
|
|
extern void func_80174684(void *); \
|
|
void func_801745DC(void) { \
|
|
func_80174684(func_80174604); \
|
|
}
|
|
|
|
#define DEFINE_func_80175668() \
|
|
extern short D_800B9A02; \
|
|
extern void func_801757E0(int); \
|
|
void func_80175668(void) { \
|
|
func_801757E0(D_800B9A02); \
|
|
}
|
|
|
|
#define DEFINE_func_80179F44() \
|
|
extern void func_80179B74(short *); \
|
|
void func_80179F44(void) { \
|
|
short sp10; \
|
|
sp10 = 0x18; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A0F4() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A0F4(void) { \
|
|
short sp10; \
|
|
sp10 = 0x7; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A11C() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A11C(void) { \
|
|
short sp10; \
|
|
sp10 = 0x8; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A180() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A180(void) { \
|
|
short sp10; \
|
|
sp10 = 0x9; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A1A8() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A1A8(void) { \
|
|
short sp10; \
|
|
sp10 = 0xA; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A1D0() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A1D0(void) { \
|
|
short sp10; \
|
|
sp10 = 0xB; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A1F8() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A1F8(void) { \
|
|
short sp10; \
|
|
sp10 = 0xC; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A298() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A298(void) { \
|
|
short sp10; \
|
|
sp10 = 0xE; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A2C0() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A2C0(void) { \
|
|
short sp10; \
|
|
sp10 = 0xF; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A2E8() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A2E8(void) { \
|
|
short sp10; \
|
|
sp10 = 0x10; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A310() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A310(void) { \
|
|
short sp10; \
|
|
sp10 = 0x11; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A338() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A338(void) { \
|
|
short sp10; \
|
|
sp10 = 0x19; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A360() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A360(void) { \
|
|
short sp10; \
|
|
sp10 = 0x1E; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A388() \
|
|
extern void func_80179B74(short *); \
|
|
void func_8017A388(void) { \
|
|
short sp10; \
|
|
sp10 = 0x1A; \
|
|
func_80179B74(&sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B14C() \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
void func_8012B14C(s32 a0, s32 a1) { \
|
|
func_800484EC(*(s32 *)((s32)a0 + 0x20) + 0x34, a1, (s32)a0 + 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BF7C() \
|
|
extern s16 D_80126CB0; \
|
|
s32 func_8012BF7C(s16 *a0) { \
|
|
s32 diff; \
|
|
diff = a0[7] - D_80126CB0; \
|
|
if (diff < 0) { \
|
|
diff = -diff; \
|
|
} \
|
|
return diff >= 0x360; \
|
|
}
|
|
|
|
#define DEFINE_func_8012C724() \
|
|
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
|
|
void func_8012C724(s32 a0, s32 a1) { \
|
|
*(u16 *)((s32)a0 + 0xA) |= 0x8000; \
|
|
func_8012C890(a0, a1, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8013E298() \
|
|
extern s16 D_80126CB0; \
|
|
s32 func_8013E298(s16 *a0) { \
|
|
s32 diff; \
|
|
diff = a0[2] - D_80126CB0; \
|
|
if (diff < 0) { \
|
|
diff = -diff; \
|
|
} \
|
|
return (u32)(diff - 0x2C1) < 0x3F; \
|
|
}
|
|
|
|
#define DEFINE_func_80143994() \
|
|
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); \
|
|
void func_80143994(s32 a0, s32 a1) { \
|
|
func_8012C658(0x1B, (s16)a1, a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801477E8() \
|
|
void func_801477E8(s32 *a0, s32 a1) { \
|
|
a0[0xD] = a1; \
|
|
if (a1 < -0x1F0000) { \
|
|
a0[0xD] = -0x1F0000; \
|
|
} else if (a1 > 0x1F0000) { \
|
|
a0[0xD] = 0x1F0000; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149AA8() \
|
|
s32 func_80149AA8(s32 *a0) { \
|
|
s32 v0; \
|
|
if (a0[0x44 / 4] & 0x404) { \
|
|
v0 = 0; \
|
|
} else { \
|
|
v0 = *(u16 *)((s32)a0 + 0xAC) & 0x80; \
|
|
v0 = v0 != 0; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B310() \
|
|
extern void func_8014B33C(void); \
|
|
extern s32 D_80078ECC; \
|
|
void func_8014B310(void) { \
|
|
func_8014B33C(); \
|
|
D_80078ECC = 0x80000000; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C3A4() \
|
|
extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); \
|
|
s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3) { \
|
|
return func_8014C43C(a0, a1, a2, a3, *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12)); \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB2C() \
|
|
extern u8 D_80126D1F; \
|
|
s32 func_8014CB2C(void) { \
|
|
s32 v1 = D_80126D1F; \
|
|
if (v1 & 0x80) { \
|
|
v1 = (v1 & 0x7F) | 0x80000000; \
|
|
} \
|
|
return v1; \
|
|
}
|
|
|
|
#define DEFINE_func_80154AB4() \
|
|
void func_80154AB4(s32 a0, s32 a1) { \
|
|
s32 *base = *(s32 **)(a0 + 0xCC); \
|
|
s32 v1 = base[a1]; \
|
|
*(s16 *)(a0 + 0xD6) = 1; \
|
|
*(s16 *)(a0 + 0xD4) = 1; \
|
|
*(s8 *)(a0 + 0xD8) = 0; \
|
|
*(s8 *)(a0 + 0xD9) = 0; \
|
|
*(s32 *)(a0 + 0xD0) = v1; \
|
|
}
|
|
|
|
#define DEFINE_func_80154B20() \
|
|
void func_80154B20(s32 a0, s32 a1, s32 a2) { \
|
|
s32 *base = *(s32 **)(a0 + 0xCC); \
|
|
s32 v1 = base[a1]; \
|
|
*(s16 *)(a0 + 0xD6) = 1; \
|
|
*(s16 *)(a0 + 0xD4) = 1; \
|
|
*(s8 *)(a0 + 0xD8) = a2; \
|
|
*(s8 *)(a0 + 0xD9) = a2; \
|
|
*(s32 *)(a0 + 0xD0) = v1; \
|
|
}
|
|
|
|
#define DEFINE_func_801607B8() \
|
|
extern void func_80149048(s32 *a0); \
|
|
void func_801607B8(s32 *a0) { \
|
|
a0[0x11] &= ~1; \
|
|
func_80149048(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801619A4() \
|
|
extern u8 D_80078EC0; \
|
|
s32 func_801619A4(s32 *a0) { \
|
|
if (*(s16 *)((s32)a0 + 0x1C8) == 0) { \
|
|
return 0; \
|
|
} \
|
|
return D_80078EC0 & 0x7F; \
|
|
}
|
|
|
|
#define DEFINE_func_8016DA04() \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
s32 func_8016DA04(s32 a0) { \
|
|
return func_80146994(0x31, a0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FB50() \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016FB50(void *a0) { \
|
|
s32 v1 = *(s32 *)((s32)a0 + 0x20); \
|
|
u16 v0 = *(u16 *)((s32)a0 + 0x132); \
|
|
*(s16 *)((s32)a0 + 0x136) = 0; \
|
|
*(s16 *)(v1 + 0x12) = v0; \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FC64() \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016FC64(void *a0) { \
|
|
s32 v1 = *(s32 *)((s32)a0 + 0x20); \
|
|
u16 v0 = *(u16 *)((s32)a0 + 0x132); \
|
|
*(s16 *)((s32)a0 + 0x136) = 0; \
|
|
*(s16 *)(v1 + 0x12) = v0; \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017051C() \
|
|
extern u16 D_800AE6DC; \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8017051C(void *a0) { \
|
|
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = D_800AE6DC; \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174604() \
|
|
extern s32 D_801150F8; \
|
|
extern void func_80174630(void); \
|
|
void func_80174604(void) { \
|
|
D_801150F8 = 1; \
|
|
func_80174630(); \
|
|
}
|
|
|
|
#define DEFINE_func_80179DCC() \
|
|
extern void func_80179B74(short *); \
|
|
void func_80179DCC(short a0) { \
|
|
short sp10[2]; \
|
|
sp10[1] = a0; \
|
|
sp10[0] = 2; \
|
|
func_80179B74(sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_80179E1C() \
|
|
extern void func_80179B74(short *); \
|
|
void func_80179E1C(short a0) { \
|
|
short sp10[2]; \
|
|
sp10[1] = a0; \
|
|
sp10[0] = 3; \
|
|
func_80179B74(sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_80179EE8() \
|
|
extern void func_80179B74(short *p); \
|
|
void func_80179EE8(short a0) { \
|
|
short sp[2]; \
|
|
sp[1] = a0; \
|
|
sp[0] = 0x12; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_80179F6C() \
|
|
extern void func_80179B74(short *p); \
|
|
void func_80179F6C(short a0) { \
|
|
short sp[2]; \
|
|
sp[1] = a0; \
|
|
sp[0] = 0x14; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_801391F0() \
|
|
extern void func_80139634(void *); \
|
|
extern void func_80139DC8(void); \
|
|
void func_801391F0(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x12) = 0; \
|
|
*(s16 *)((s32)a0 + 0x14) = 0; \
|
|
*(s16 *)((s32)a0 + 0x16) = 0; \
|
|
func_80139634(a0); \
|
|
func_80139DC8(); \
|
|
}
|
|
|
|
#define DEFINE_func_8013E558() \
|
|
extern void func_800D24A0(s32 a0); \
|
|
extern void func_80141788(void); \
|
|
extern void *D_8011DB24; \
|
|
void func_8013E558(void) { \
|
|
func_800D24A0(2); \
|
|
D_8011DB24 = (void *)func_80141788; \
|
|
}
|
|
|
|
#define DEFINE_func_8013E67C() \
|
|
extern void func_800D24A0(s32 a0); \
|
|
extern void func_8013E5E8(void); \
|
|
extern void *D_8011DB24; \
|
|
void func_8013E67C(void) { \
|
|
func_800D24A0(0); \
|
|
D_8011DB24 = (void *)func_8013E5E8; \
|
|
}
|
|
|
|
#define DEFINE_func_801496D4() \
|
|
s32 func_801496D4(void *a0) { \
|
|
s32 v0 = 0; \
|
|
if (*(s32 *)((s32)a0 + 0x178)) { \
|
|
return v0; \
|
|
} \
|
|
v0 = *(u16 *)((s32)a0 + 0xAC) & 0x40; \
|
|
if (v0) { \
|
|
v0 = 1; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014B4D4() \
|
|
extern void func_80166244(); \
|
|
extern s32 D_80078E98; \
|
|
void func_8014B4D4(void *a0) { \
|
|
*(u16 *)((s32)a0 + 0x1C8) = 0; \
|
|
D_80078E98 = 0x80000000; \
|
|
func_80166244(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BD98() \
|
|
extern u16 D_80078EB6; \
|
|
extern s16 D_80078EB8; \
|
|
void func_8014BD98(s32 a0, u16 a1) { \
|
|
D_80078EB8 = a1; \
|
|
if (D_80078EB6 < a1) { \
|
|
D_80078EB8 = D_80078EB6; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014BF18() \
|
|
extern void func_800291A0(s32, s32); \
|
|
void func_8014BF18(s32 a0) { \
|
|
if (a0 < 0) { \
|
|
a0 = 0; \
|
|
} \
|
|
func_800291A0(0xCF, a0 & 0xFF); \
|
|
}
|
|
|
|
#define DEFINE_func_8014CBF8() \
|
|
void func_8014CBF8(void *a0) { \
|
|
s32 v1 = *(s32 *)((s32)a0 + 0x174); \
|
|
if (v1 != 0) { \
|
|
if (*(u16 *)(v1 + 0) != 0) { \
|
|
*(s32 *)((s32)a0 + 0x174) = 0; \
|
|
*(s8 *)(v1 + 0x74) = 0; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80154274() \
|
|
extern void func_801542A4(); \
|
|
void func_80154274(s32 *a0, s32 a1) { \
|
|
if (*(s32 *)((s32)a0 + 0xB4) != a1) { \
|
|
func_801542A4(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801542DC() \
|
|
extern void func_8015430C(); \
|
|
void func_801542DC(s32 *a0, s32 a1) { \
|
|
if (*(s32 *)((s32)a0 + 0xB4) != a1) { \
|
|
func_8015430C(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80159404() \
|
|
s32 func_80159404(s32 a0, s32 a1) { \
|
|
s32 a2 = *(s32 *)((s32)a0 + 0x20); \
|
|
u16 v1 = *(u16 *)((s32)a0 + 0x236); \
|
|
u16 v0 = *(u16 *)((s32)a2 + 0x12); \
|
|
*(u16 *)((s32)a2 + 0x12) = (v0 + v1) & 0xFFF; \
|
|
return (*(s32 *)((s32)a0 + 0x234) -= a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80159434() \
|
|
s32 func_80159434(s32 a0, s32 a1) { \
|
|
s32 a2 = *(s32 *)((s32)a0 + 0x20); \
|
|
u16 v1 = *(u16 *)((s32)a0 + 0x23A); \
|
|
u16 v0 = *(u16 *)((s32)a2 + 0x10); \
|
|
*(u16 *)((s32)a2 + 0x10) = (v0 - v1) & 0xFFF; \
|
|
return (*(s32 *)((s32)a0 + 0x238) += a1); \
|
|
}
|
|
|
|
#define DEFINE_func_8016004C() \
|
|
extern u8 D_800B9A17; \
|
|
void func_8016004C(s32 a0) { \
|
|
*(s32 *)((s32)a0 + 0x184) = 0; \
|
|
*(s16 *)((s32)a0 + 0x18A) = 0; \
|
|
*(s16 *)((s32)a0 + 0x188) = 0; \
|
|
*(s32 *)((s32)a0 + 0x44) &= ~0x10; \
|
|
D_800B9A17 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801619D0() \
|
|
extern u8 D_80078EC0; \
|
|
s32 func_801619D0(void *a0) { \
|
|
s32 v0; \
|
|
if (*(s16 *)((s32)a0 + 0x1C8) == 0) { \
|
|
v0 = 0; \
|
|
} else { \
|
|
v0 = ((D_80078EC0 & 0x7F) ^ 3) == 0; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80161D58() \
|
|
extern void func_80161E08(s32); \
|
|
extern s32 func_80162438(s32); \
|
|
s32 func_80161D58(s32 a0) { \
|
|
func_80161E08(a0); \
|
|
return func_80162438(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80165770() \
|
|
extern u8 D_80078EC1; \
|
|
extern void func_800CAF6C(void); \
|
|
void func_80165770(void) { \
|
|
if (D_80078EC1 == 0xC) { \
|
|
func_800CAF6C(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80165A20() \
|
|
extern void func_80165A78(s32); \
|
|
extern s32 func_80165A50(s32); \
|
|
s32 func_80165A20(s32 a0) { \
|
|
func_80165A78(a0); \
|
|
return func_80165A50(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016A05C() \
|
|
extern u8 D_80078EC0; \
|
|
void func_8016A05C(void *a0) { \
|
|
s32 v0; \
|
|
if (D_80078EC0 & 0x7F) { \
|
|
v0 = *(u16 *)((s32)a0 + 2) + 1; \
|
|
} else { \
|
|
v0 = 2; \
|
|
} \
|
|
*(s16 *)((s32)a0 + 2) = v0; \
|
|
}
|
|
|
|
#define DEFINE_func_8016ED8C() \
|
|
extern s32 D_80126D70; \
|
|
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); \
|
|
void func_8016ED8C(s32 a0, s32 a1, s32 a2) { \
|
|
func_8016EDEC(a0, a1, a2); \
|
|
D_80126D70 = a2; \
|
|
}
|
|
|
|
#define DEFINE_func_8016EDBC() \
|
|
extern s32 D_80126D70; \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
void func_8016EDBC(s32 a0, s32 a1, s32 a2) { \
|
|
func_8016EE40(a0, a1, a2); \
|
|
D_80126D70 = a2; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F494() \
|
|
extern void func_80175414(s32); \
|
|
extern s32 func_8016F4C4(s32); \
|
|
s32 func_8016F494(s32 a0) { \
|
|
func_80175414(a0); \
|
|
return func_8016F4C4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F804() \
|
|
extern void func_80171928(void *); \
|
|
void func_8016F804(void *a0) { \
|
|
if (*(u8 *)((s32)a0 + 0x1C2) != 0) { \
|
|
*(u8 *)((s32)a0 + 0x1C2) = 0; \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012A5F8() \
|
|
extern void func_8012A62C(s32); \
|
|
void func_8012A5F8(void (*a0)(void), s32 a1) { \
|
|
func_8012A62C(a1 & 0xFF); \
|
|
a0(); \
|
|
}
|
|
|
|
#define DEFINE_func_801392C8() \
|
|
extern void func_801395D4(void *); \
|
|
void func_801392C8(void *a0) { \
|
|
func_801395D4(a0); \
|
|
*(s8 *)((s32)a0 + 0x1E) = 0; \
|
|
*(s16 *)((s32)a0 + 0x4) = 5; \
|
|
}
|
|
|
|
#define DEFINE_func_801417C4() \
|
|
extern void func_8001903C(void); \
|
|
extern u16 D_80115112; \
|
|
void func_801417C4(void) { \
|
|
u16 *p = &D_80115112; \
|
|
func_8001903C(); \
|
|
*p = *p + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C59C() \
|
|
extern s32 ratan2(s32 dx, s32 dy); \
|
|
s32 func_8014C59C(void *a0, void *a1) { \
|
|
s32 dx = *(s16 *)((s32)a0 + 0x6) - *(s16 *)((s32)a1 + 0x6); \
|
|
s32 dy = *(s16 *)((s32)a0 + 0xE) - *(s16 *)((s32)a1 + 0xE); \
|
|
return ratan2(dx, dy) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80151238() \
|
|
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
|
|
void func_80151238(void *a0) { \
|
|
s16 v0 = *(s16 *)((s32)a0 + 0xF2); \
|
|
if (v0 != 0) { \
|
|
func_8014ACE8(a0, 5, (s32)v0 & 0x7FFF); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80154418() \
|
|
extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); \
|
|
void func_80154418(void *a0) { \
|
|
s32 sp10 = 0; \
|
|
s32 sp14 = 0; \
|
|
s32 sp18 = 0; \
|
|
func_8015444C(a0, &sp10, &sp14, &sp18); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DC84() \
|
|
extern void func_80154A74(int, int); \
|
|
extern int func_8015DD74(int); \
|
|
int func_8015DC84(int a0) { \
|
|
func_80154A74(a0, 0x11); \
|
|
return func_8015DD74(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DFE4() \
|
|
extern void func_80154A74(int, int); \
|
|
extern int func_8015E0D4(int); \
|
|
int func_8015DFE4(int a0) { \
|
|
func_80154A74(a0, 0x11); \
|
|
return func_8015E0D4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015ED6C() \
|
|
extern u8 D_80078EBF; \
|
|
extern void func_80149048(s32 *a0); \
|
|
void func_8015ED6C(s32 *a0) { \
|
|
D_80078EBF = 0; \
|
|
*(s32 *)((s32)a0 + 0x44) &= -2; \
|
|
func_80149048(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80162FC0() \
|
|
void func_80162FC0(s32 *a0) { \
|
|
a0[1] += a0[4]; \
|
|
a0[2] += a0[5]; \
|
|
a0[3] += a0[6]; \
|
|
}
|
|
|
|
#define DEFINE_func_80165840() \
|
|
extern u8 D_80078EC3; \
|
|
extern void func_80165874(void); \
|
|
void func_80165840(void) { \
|
|
if (D_80078EC3 != 0) { \
|
|
D_80078EC3 = 0; \
|
|
func_80165874(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80170B14() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern void func_80170B48(int a0); \
|
|
void func_80170B14(int a0) { \
|
|
func_801719A4(a0, 1); \
|
|
func_80170B48(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80171B10() \
|
|
extern s32 func_8014C568(void *a0); \
|
|
void func_80171B10(void *a0) { \
|
|
s32 ret = func_8014C568(a0); \
|
|
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = ret; \
|
|
}
|
|
|
|
#define DEFINE_func_8012A79C() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s16 func_8012A79C(s16 *a0, s16 *a1) { \
|
|
s16 x0 = a0[0]; \
|
|
s16 x1 = a1[0]; \
|
|
s16 y0 = a0[2]; \
|
|
s16 y1 = a1[2]; \
|
|
return ratan2(x0 - x1, y0 - y1); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B6D4() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012B6D4(s16 *a0, s16 *a1) { \
|
|
s16 ax = a0[5]; \
|
|
s16 bx = a1[5]; \
|
|
s16 by = a1[1]; \
|
|
s16 ay = a0[1]; \
|
|
return (ratan2(ax - bx, by - ay) - 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B70C() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012B70C(s16 *a0, s16 *a1) { \
|
|
s16 ax = a0[2]; \
|
|
s16 bx = a1[2]; \
|
|
s16 by = a1[0]; \
|
|
s16 ay = a0[0]; \
|
|
return (ratan2(ax - bx, by - ay) - 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B744() \
|
|
extern s32 ratan2(s32 x, s32 y); \
|
|
s32 func_8012B744(void *a0, void *a1) { \
|
|
s32 ang; \
|
|
ang = ratan2(*(s16 *)((s32)a0 + 0xA) - *(s16 *)((s32)a1 + 0x4), \
|
|
*(s16 *)((s32)a1 + 0x0) - *(s16 *)((s32)a0 + 0x2)); \
|
|
return (ang - 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E32C() \
|
|
extern u8 D_800AF648; \
|
|
extern void func_8004914C(void *a0); \
|
|
extern void func_800491AC(void *a0); \
|
|
void func_8012E32C(void) { \
|
|
func_8004914C(&D_800AF648); \
|
|
func_800491AC(&D_800AF648); \
|
|
}
|
|
|
|
#define DEFINE_func_801484B0() \
|
|
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 *D_80126B78; \
|
|
void func_801484B0(s32 a0, s32 a1) { \
|
|
func_801485B8(*(s32 *)((s32)D_80126B78 + 0x20) - 0x10, a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80148534() \
|
|
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 *D_80126B78; \
|
|
void func_80148534(s32 a0, s32 a1) { \
|
|
func_801485B8(*(s32 *)((s32)D_80126B78 + 0x20) - 0x8, a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_8014ADA8() \
|
|
extern s32 D_80078E8C; \
|
|
void func_8014ADA8(s32 a0, s32 a1) { \
|
|
s32 v0; \
|
|
v0 = D_80078E8C + a1; \
|
|
D_80078E8C = v0; \
|
|
if (0x1869F < (u32)v0) { \
|
|
D_80078E8C = 0x1869F; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014BEC0() \
|
|
extern void func_80029124(s32 a0, s32 a1); \
|
|
extern u8 D_80078EC0; \
|
|
void func_8014BEC0(void) { \
|
|
D_80078EC0 |= 1; \
|
|
func_80029124(0x80, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_801599E0() \
|
|
extern void func_80159A20(void *a0); \
|
|
void func_801599E0(void *a0) { \
|
|
func_80159A20(a0); \
|
|
*(u8 *)((s32)a0 + 0x4D) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80161240() \
|
|
extern s32 func_801612B8(void *a0, s32 a1); \
|
|
extern void func_8016130C(void *a0, s32 a1); \
|
|
void func_80161240(void *a0) { \
|
|
func_8016130C(a0, func_801612B8(a0, 1)); \
|
|
}
|
|
|
|
#define DEFINE_func_80161418() \
|
|
extern s32 func_801615C4(void *a0, s32 a1); \
|
|
extern void func_8016163C(void *a0, s32 a1); \
|
|
void func_80161418(void *a0) { \
|
|
func_8016163C(a0, func_801615C4(a0, 0)); \
|
|
}
|
|
|
|
#define DEFINE_func_80161450() \
|
|
extern s32 func_801615C4(void *a0, s32 a1); \
|
|
extern void func_80161774(void *a0, s32 a1); \
|
|
void func_80161450(void *a0) { \
|
|
func_80161774(a0, func_801615C4(a0, 0)); \
|
|
}
|
|
|
|
#define DEFINE_func_801614E4() \
|
|
extern s32 func_801615C4(void *a0, s32 a1); \
|
|
extern void func_80161888(void *a0, s32 a1); \
|
|
void func_801614E4(void *a0) { \
|
|
func_80161888(a0, func_801615C4(a0, 0)); \
|
|
}
|
|
|
|
#define DEFINE_func_8016151C() \
|
|
extern s32 func_801615C4(void *a0, s32 a1); \
|
|
extern void func_8016191C(void *a0, s32 a1); \
|
|
void func_8016151C(void *a0) { \
|
|
func_8016191C(a0, func_801615C4(a0, 0)); \
|
|
}
|
|
|
|
#define DEFINE_func_80161554() \
|
|
extern s32 func_801615C4(void *a0, s32 a1); \
|
|
extern void func_8016163C(void *a0, s32 a1); \
|
|
void func_80161554(void *a0) { \
|
|
func_8016163C(a0, func_801615C4(a0, 1)); \
|
|
}
|
|
|
|
#define DEFINE_func_8016158C() \
|
|
extern s32 func_801615C4(void *a0, s32 a1); \
|
|
extern void func_80161774(void *a0, s32 a1); \
|
|
void func_8016158C(void *a0) { \
|
|
func_80161774(a0, func_801615C4(a0, 1)); \
|
|
}
|
|
|
|
#define DEFINE_func_801657A0() \
|
|
extern void func_801657D8(void); \
|
|
extern u8 D_80078EC3; \
|
|
void func_801657A0(void) { \
|
|
if (D_80078EC3 == 0) { \
|
|
D_80078EC3 = 1; \
|
|
func_801657D8(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80173A28() \
|
|
extern s32 D_8012750C; \
|
|
extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
|
|
void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5) { \
|
|
func_80173A60(a0, a1, a2, a3, a4); \
|
|
D_8012750C = a5; \
|
|
}
|
|
|
|
#define DEFINE_func_80174BBC() \
|
|
void func_80174BBC(void *a0) { \
|
|
*(s32 *)((s32)a0 + 0xC) = 0x12C; \
|
|
*(s32 *)((s32)a0 + 0x14) = 0x12C; \
|
|
*(s16 *)((s32)a0 + 0x20) = 0x155; \
|
|
*(s16 *)((s32)a0 + 0x22) = 0x800; \
|
|
*(s16 *)((s32)a0 + 0x24) = 0; \
|
|
*(s16 *)((s32)a0 + 0x2E) = 0; \
|
|
*(s16 *)((s32)a0 + 0x30) = -0x28; \
|
|
*(s16 *)((s32)a0 + 0x32) = 0; \
|
|
*(s32 *)((s32)a0 + 0x54) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80177784() \
|
|
void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3) { \
|
|
*(u32 *)((s32)a0 + 0x0) = (((s32)a0 - 0x14) & 0xFFFFFF) | 0x3000000; \
|
|
*(u32 *)((s32)a0 + 0x4) = 0x74808080; \
|
|
*(s32 *)((s32)a0 + 0x8) = a1; \
|
|
*(s32 *)((s32)a0 + 0xC) = a2; \
|
|
return (void *)((s32)a0 + 0x14); \
|
|
}
|
|
|
|
#define DEFINE_func_801466B4() \
|
|
void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5) { \
|
|
func_801466F0(a0, a1, 0, 0, 0, a2, a3, arg5); \
|
|
}
|
|
|
|
#define DEFINE_func_8014A638() \
|
|
void func_8014A638(s32 arg0) { \
|
|
s16 v; \
|
|
if (*(s32 *)((s32)arg0 + 0x44) & 0x10) { \
|
|
v = *(u16 *)((s32)arg0 + 0x188) - 4; \
|
|
*(s16 *)((s32)arg0 + 0x188) = v; \
|
|
if (v < 0) { \
|
|
*(s16 *)((s32)arg0 + 0x188) = 0; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B768() \
|
|
extern s32 D_80078E9C; \
|
|
void func_8014B768(s32 a0, s32 a1) { \
|
|
D_80078E9C -= a1; \
|
|
if (*(s16 *)((s32)&D_80078E9C + 2) < 0) { \
|
|
D_80078E9C = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014BC44() \
|
|
extern u16 D_80078EB2; \
|
|
extern void func_8014BC80(s32 a0, s32 a1); \
|
|
void func_8014BC44(s32 a0, s32 a1) { \
|
|
if (*(s32 *)((s32)a0 + 0x44) & 0x2000000) { \
|
|
a1 = D_80078EB2; \
|
|
} \
|
|
func_8014BC80(a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_8014C88C() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_8014C8C8(s32 a0, s32 *a1); \
|
|
void func_8014C88C(s32 a0) { \
|
|
s32 sp10; \
|
|
func_80015978(a0 + 4, &sp10); \
|
|
func_8014C8C8(a0, &sp10); \
|
|
}
|
|
|
|
#define DEFINE_func_80157A8C() \
|
|
extern void func_80161D20(s32 a0, s32 a1); \
|
|
extern void func_8014C010(s32 a0, s32 a1); \
|
|
void func_80157A8C(s32 a0) { \
|
|
func_80161D20(a0, *(u16 *)(a0 + 0x16E)); \
|
|
func_8014C010(a0, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_80165694() \
|
|
extern s32 D_80078EC8; \
|
|
void func_80165694(s32 arg0) { \
|
|
if (*(s32 *)((s32)arg0 + 0x1F8) & 0x80FFFFFF) { \
|
|
return; \
|
|
} \
|
|
if (D_80078EC8 != 0) { \
|
|
D_80078EC8 = D_80078EC8 - 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012D624() \
|
|
extern int func_8012D664(); \
|
|
void func_8012D624(s32 a0) { \
|
|
u16 sp[3]; \
|
|
sp[0] = *(u16 *)(a0 + 0x6); \
|
|
sp[1] = *(u16 *)(a0 + 0xA); \
|
|
sp[2] = *(u16 *)(a0 + 0xE); \
|
|
func_8012D664((void *)sp); \
|
|
}
|
|
|
|
#define DEFINE_func_8015369C() \
|
|
extern void (*D_8011DB28)(s32 a0); \
|
|
void func_8015369C(s32 a0) { \
|
|
if (D_8011DB28 != 0) { \
|
|
D_8011DB28(a0 + 0xA0); \
|
|
} \
|
|
*(u8 *)(a0 + 0xDE) = 0x5A; \
|
|
}
|
|
|
|
#define DEFINE_func_80154BE4() \
|
|
void func_80154BE4(s32 a0) { \
|
|
s32 sp10; \
|
|
s32 sp14; \
|
|
sp10 = 0; \
|
|
sp14 = 0; \
|
|
func_80154C24(a0, &sp10, &sp14); \
|
|
func_80154F9C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015987C() \
|
|
extern void func_800167B8(s32 a0); \
|
|
s32 func_8015987C(s32 a0) { \
|
|
func_800167B8(4); \
|
|
*(u8 *)(a0 + 0x15) = *(u8 *)(a0 + 0x15) + 1; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80178BB8() \
|
|
void func_80178BB8(s32 a0, s32 a1) { \
|
|
func_80178BF8(a0, a1); \
|
|
func_80178CBC(a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BE54() \
|
|
extern void func_8012BE98(s32 a0, u16 *a1); \
|
|
extern u16 D_80126B5E; \
|
|
extern u16 D_80126B62; \
|
|
extern u16 D_80126B66; \
|
|
void func_8012BE54(s32 a0) { \
|
|
u16 sp[3]; \
|
|
sp[0] = D_80126B5E; \
|
|
sp[1] = D_80126B62; \
|
|
sp[2] = D_80126B66; \
|
|
func_8012BE98(a0, sp); \
|
|
}
|
|
|
|
#define DEFINE_func_8013A9B4() \
|
|
extern void func_8013A9F8(s32 a0, s32 a1); \
|
|
void func_8013A9B4(s32 a0, s32 a1) { \
|
|
*(s16 *)(a1 + 0x2) = 0; \
|
|
*(s32 *)(a1 + 0x4) = a0; \
|
|
*(s32 *)(a0 + 0x40) = a1; \
|
|
*(s16 *)(a1 + 0x0) = 1; \
|
|
*(s16 *)(a1 + 0xC) = 0; \
|
|
*(s16 *)(a1 + 0xE) = 0; \
|
|
func_8013A9F8(a1, *(u16 *)(a0 + 0x18)); \
|
|
}
|
|
|
|
#define DEFINE_func_80175624() \
|
|
extern s16 D_800B9A02; \
|
|
extern void func_801757A0(s32); \
|
|
void func_80175624(void *a0) { \
|
|
func_801757A0(D_800B9A02); \
|
|
*((u8 *)a0 + 1) = *((u8 *)a0 + 1) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014168C() \
|
|
extern u8 D_80115148[]; \
|
|
extern u8 D_80115149[]; \
|
|
extern u8 D_80115158[]; \
|
|
s16 func_8014168C(s16 a0) { \
|
|
s32 i = a0 * 2; \
|
|
return D_80115148[i] + D_80115149[i] * D_80115158[i]; \
|
|
}
|
|
|
|
#define DEFINE_func_8012A048() \
|
|
extern u16 D_80126B5E; \
|
|
extern u16 D_80126B62; \
|
|
extern u16 D_80126B66; \
|
|
extern s16 D_80126940; \
|
|
extern s16 D_80126942; \
|
|
extern s16 D_80126944; \
|
|
void func_8012A048(void *a0, s32 a1, u8 a2) { \
|
|
*(s32 *)((s32)a0 + 0x0) = a1; \
|
|
*(u8 *)((s32)a0 + 0x4) = a2; \
|
|
*(s32 *)((s32)a0 + 0x9C) = 0; \
|
|
*(s16 *)((s32)a0 + 0xA0) = 0; \
|
|
*(s16 *)((s32)a0 + 0xA2) = 0; \
|
|
D_80126940 = D_80126B5E; \
|
|
D_80126942 = D_80126B62; \
|
|
D_80126944 = D_80126B66; \
|
|
}
|
|
|
|
#define DEFINE_func_80150E84() \
|
|
extern void func_80150EC4(s32 a0, s32 a1); \
|
|
void func_80150E84(s32 a0) { \
|
|
func_80150EC4(a0, 0xE); \
|
|
}
|
|
|
|
#define DEFINE_func_80150EA4() \
|
|
extern void func_80150EC4(s32 a0, s32 a1); \
|
|
void func_80150EA4(s32 a0) { \
|
|
func_80150EC4(a0, 0xF); \
|
|
}
|
|
|
|
#define DEFINE_func_8012CC64() \
|
|
extern void func_8012CC88(s32 a0, s32 a1, s32 a2); \
|
|
void func_8012CC64(s32 a0, s32 a1) { \
|
|
func_8012CC88(a0, 0x11, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80143C74() \
|
|
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); \
|
|
void func_80143C74(s32 a0, s32 a1) { \
|
|
func_8012C658(0x205, a1, a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BEE8() \
|
|
s32 func_8012BEE8(s32 a0) { \
|
|
s32 v0; \
|
|
v0 = *(s32*)(a0 + 0x1C); \
|
|
if (!v0) goto ret1; \
|
|
*(s32*)(a0 + 0x1C) = v0 - 1; \
|
|
return (u32)(v0 - 1) < 1; \
|
|
ret1: \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80146E98() \
|
|
s32 func_80146E98(s32 a0) { \
|
|
s32 v0; \
|
|
v0 = *(s32*)(a0 + 0x1C); \
|
|
if (v0 != 0) { \
|
|
v0 = v0 - 1; \
|
|
*(s32*)(a0 + 0x1C) = v0; \
|
|
return (u32)v0 < 1; \
|
|
} \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016197C() \
|
|
s32 func_8016197C(s32 a0, s32 a1) { \
|
|
s32 v0; \
|
|
if (a1 & 1) { \
|
|
v0 = 1; \
|
|
} else if (a1 & 0x4000) { \
|
|
v0 = 2; \
|
|
} else { \
|
|
v0 = ((u32)a1 >> 11) & 4; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80171A88() \
|
|
s32 func_80171A88(s32 a0) { \
|
|
s32 v0; \
|
|
v0 = *(s32*)(a0 + 0x200); \
|
|
if (!v0) goto ret1; \
|
|
*(s32*)(a0 + 0x200) = v0 - 1; \
|
|
return (u32)(v0 - 1) < 1; \
|
|
ret1: \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80130AC4() \
|
|
void func_80130AC4(s32 a0) { \
|
|
s16 v0; \
|
|
v0 = *(u16*)(a0 + 0xAC) - 1; \
|
|
*(u16*)(a0 + 0xAC) = v0; \
|
|
if (v0 == 0) { \
|
|
*(u8*)(a0 + 0xC1) = 0; \
|
|
*(s16*)(a0 + 0x5E) = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013A9F8() \
|
|
void func_8013A9F8(s32 a0, s32 a1) { \
|
|
s32 orig = a1; \
|
|
a1 -= 2; \
|
|
a1 &= 0xFFFF; \
|
|
if ((u32)a1 < 5) { \
|
|
s32 b = orig & 0xFFFF; \
|
|
b -= 2; \
|
|
b <<= 10; \
|
|
*(s16*)(a0 + 0xE) = b; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80131C78() \
|
|
extern void func_80131CA8(s32 a0, s32 a1); \
|
|
void func_80131C78(s32 a0) { \
|
|
s32 v0 = *(s32*)(a0 + 0x20); \
|
|
*(s8*)(a0 + 0xC1) = 0; \
|
|
*(s16*)(v0 + 0x10) = 0; \
|
|
*(s16*)(a0 + 0x5E) = 0; \
|
|
func_80131CA8(a0, 0xE); \
|
|
}
|
|
|
|
#define DEFINE_func_80161A00() \
|
|
extern u8 D_80078EC0; \
|
|
s32 func_80161A00(s32 a0) { \
|
|
if (*(s16*)(a0 + 0x1C8) != 0) { \
|
|
return ((D_80078EC0 & 0x7F) ^ 0x4) == 0; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80161A30() \
|
|
extern u8 D_80078EC0; \
|
|
s32 func_80161A30(s32 a0) { \
|
|
if (*(s16*)(a0 + 0x1C8) != 0) { \
|
|
return ((D_80078EC0 & 0x7F) ^ 0x5) == 0; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80161A60() \
|
|
extern u8 D_80078EC0; \
|
|
s32 func_80161A60(s32 a0) { \
|
|
s32 v0; \
|
|
if (*(s16*)(a0 + 0x1C8) != 0) { \
|
|
v0 = ((D_80078EC0 & 0x7F) ^ 6) == 0; \
|
|
return v0; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8015A1C8() \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015A1C8(s32 a0) { \
|
|
func_801553C0(a0); \
|
|
func_80154A74(a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8015AC90() \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015AC90(s32 a0) { \
|
|
func_801553C0(a0); \
|
|
func_80154A74(a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8015CF24() \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015CF24(s32 a0) { \
|
|
func_801553C0(a0); \
|
|
func_80154A74(a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_801284B8() \
|
|
extern s32 func_800D0588(void); \
|
|
extern void func_80015310(void); \
|
|
extern void func_80011C10(void); \
|
|
void func_801284B8(void) { \
|
|
if (func_800D0588()) { \
|
|
func_80015310(); \
|
|
func_80011C10(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012C31C() \
|
|
extern u8 D_80120194[]; \
|
|
s32 func_8012C31C(void) { \
|
|
s32 a0; \
|
|
s32 v1; \
|
|
a0 = (s32)D_80120194; \
|
|
v1 = a0 + 0x6480; \
|
|
if (v1 != a0) { \
|
|
do { \
|
|
if (*(u16 *)v1 == 0) { \
|
|
return v1; \
|
|
} \
|
|
v1 -= 0x10C; \
|
|
} while (v1 != a0); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E544() \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8012E544(s32 a0) { \
|
|
s32 a1; \
|
|
s32 v1; \
|
|
v1 = (s32)D_801202A0; \
|
|
a1 = v1 + 0x6480; \
|
|
if (v1 != a1) { \
|
|
do { \
|
|
if (*(u16 *)v1 == a0) { \
|
|
return v1; \
|
|
} \
|
|
v1 += 0x10C; \
|
|
} while (v1 != a1); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013E410() \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8013E410(void) { \
|
|
s32 a0; \
|
|
s32 v1; \
|
|
v1 = (s32)D_801202A0; \
|
|
for (a0 = 0; a0 < 0x60; a0++, v1 += 0x10C) { \
|
|
if (*(u16 *)v1 == 0) { \
|
|
return v1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014BC0C() \
|
|
extern u16 D_80078EB2; \
|
|
void func_8014BC0C(s32 a0, s32 a1) { \
|
|
D_80078EB2 += a1; \
|
|
if ((u16)D_80078EB2 >= 0x1F5) { \
|
|
D_80078EB2 = 0x1F4; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014C278() \
|
|
extern s32 func_80013328(s32 a0, s32 a1); \
|
|
s32 func_8014C278(s32 a0, s32 a1, s32 a2) { \
|
|
return func_80013328(a0 + 4, a1 + 4) < (s32)(a2 & 0xFFFF); \
|
|
}
|
|
|
|
#define DEFINE_func_801632F0() \
|
|
extern s32 D_80115200; \
|
|
s32 func_801632F0(void) { \
|
|
s32 i = 0; \
|
|
s32 *p = &D_80115200; \
|
|
s32 v0; \
|
|
do { \
|
|
v0 = p[0]; \
|
|
if (v0 != 0) { \
|
|
return v0; \
|
|
} \
|
|
i++; \
|
|
p++; \
|
|
} while (i < 3); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B178() \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
void func_8012B178(s32 a0, s32 a1) { \
|
|
s32 sp10[3]; \
|
|
sp10[2] = a1; \
|
|
sp10[1] = 0; \
|
|
sp10[0] = 0; \
|
|
func_800484EC(*(s32 *)(a0 + 0x20) + 0x34, (s32)sp10, a0 + 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BF10() \
|
|
s32 func_8012BF10(s32 a0, s32 a1) { \
|
|
s32 v0; \
|
|
v0 = *(s32*)(a0 + 0x1C); \
|
|
if (v0 == 0) { \
|
|
v0 = 1; \
|
|
} else { \
|
|
v0 -= 1; \
|
|
*(s32*)(a0 + 0x1C) = v0; \
|
|
v0 = (u32)v0 < 1; \
|
|
} \
|
|
if (v0 != 0) { \
|
|
*(s32*)(a0 + 0x1C) = a1; \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012C1DC() \
|
|
extern u8 D_800B3DF0[]; \
|
|
s32 func_8012C1DC(s32 a0) { \
|
|
u8 *p; \
|
|
u8 *end; \
|
|
p = (u8 *)(*(s32 *)(a0 + 0x20) + 0x84); \
|
|
end = D_800B3DF0; \
|
|
if (p != end) { \
|
|
do { \
|
|
if (*(u16 *)p == 0) { \
|
|
return (s32)p; \
|
|
} \
|
|
p += 0x84; \
|
|
} while (p != end); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E4C8() \
|
|
void func_8012E4C8(s32 a0) { \
|
|
s32 v1; \
|
|
s32 t; \
|
|
v1 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(v1 + 0x1C) = 0x1000; \
|
|
*(s16 *)(v1 + 0x18) = 0x1000; \
|
|
*(s16 *)(a0 + 0x60) = 0; \
|
|
*(u16 *)(a0 + 0x5C) = *(u16 *)(a0 + 0x5C) | 1; \
|
|
t = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); \
|
|
*(s16 *)(a0 + 0x5E) = 1; \
|
|
*(s16 *)(a0 + 0x62) = t + 0x800; \
|
|
}
|
|
|
|
#define DEFINE_func_8012EF34() \
|
|
extern void func_8012EFB8(s32 a0); \
|
|
void func_8012EF34(s32 a0, s32 a1) { \
|
|
s32 sp10; \
|
|
register s32 v1 __asm__("$3"); \
|
|
func_8012EFB8(a0); \
|
|
{ \
|
|
register s32 *p __asm__("$3") = &sp10; \
|
|
__asm__ __volatile__("swc2 $19, 0(%0)" : : "r"(p) : "memory"); \
|
|
} \
|
|
v1 = sp10; \
|
|
*(s16 *)(a1 + 4) = v1; \
|
|
}
|
|
|
|
#define DEFINE_func_80149884() \
|
|
extern s16 currentLocationId; \
|
|
extern s32 func_8016F1AC(void); \
|
|
s32 func_80149884(void) { \
|
|
s32 ret; \
|
|
if (currentLocationId == 0x308F) { \
|
|
ret = 0; \
|
|
} else { \
|
|
ret = func_8016F1AC() == 0; \
|
|
} \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_80149CD4() \
|
|
s32 func_80149CD4(s32 a0) { \
|
|
s32 v0; \
|
|
if (*(s32*)(a0 + 0x44) & 0x404) { \
|
|
v0 = 0; \
|
|
} else if (*(s16*)(a0 + 0x1C8) != 0) { \
|
|
v0 = 0; \
|
|
} else { \
|
|
v0 = *(u16*)(a0 + 0xAA) & 8; \
|
|
v0 = v0 != 0; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80149D9C() \
|
|
extern s32 func_80149E94(s32 a0); \
|
|
extern s32 func_80149DD8(s32 a0); \
|
|
s32 func_80149D9C(s32 a0) { \
|
|
s32 v0; \
|
|
if (func_80149E94(a0) != 0) { \
|
|
v0 = 1; \
|
|
} else { \
|
|
v0 = func_80149DD8(a0) != 0; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F410() \
|
|
extern s32 func_8016F44C(s32 a0); \
|
|
extern void func_8016F470(s32 a0); \
|
|
s32 func_8016F410(s32 a0) { \
|
|
if (func_8016F44C(a0) == 0) { \
|
|
return 0; \
|
|
} \
|
|
func_8016F470(a0); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801282EC() \
|
|
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); \
|
|
void func_801282EC(void) { \
|
|
func_8001C0C8(); \
|
|
func_80015310(); \
|
|
func_80129258(); \
|
|
func_801378F0(); \
|
|
func_80010E14(); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B864() \
|
|
extern s16 D_80126CB8; \
|
|
extern s16 D_80126CB4; \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012B864(s32 a0) { \
|
|
s32 dx = *(s16*)(a0 + 0xE) - D_80126CB8; \
|
|
s32 dy = D_80126CB4 - *(s16*)(a0 + 0x6); \
|
|
return (ratan2(dx, dy) - 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8012D5E4() \
|
|
extern s16 D_80126B98; \
|
|
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
if (func_8012DEB8(a0, a1, a2) != 0) { \
|
|
D_80126B98 = a3; \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E504() \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8012E504(s32 a0, s32 a1) { \
|
|
s32 p; \
|
|
s32 end; \
|
|
p = (s32)D_801202A0; \
|
|
end = (s32)D_801202A0 + 0x6480; \
|
|
for (; p != end; p += 0x10C) { \
|
|
if (p != a0) { \
|
|
if (*(u16*)p == a1) { \
|
|
return p; \
|
|
} \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80130360() \
|
|
extern void func_80131CA8(s32 a0, s32 a1); \
|
|
void func_80130360(s32 a0) { \
|
|
*(u8*)(a0 + 0xC1) = 2; \
|
|
if (*(s32*)(a0 + 0xB4) & 2) { \
|
|
*(s16*)(a0 + 0x5C) = 0; \
|
|
*(s16*)(a0 + 0x98) = 0; \
|
|
*(s32*)(a0 + 0x1C) = 0; \
|
|
} \
|
|
func_80131CA8(a0, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_80130858() \
|
|
extern void func_8012AD80(s32 a0); \
|
|
extern s32 func_8012BEE8(s32 a0); \
|
|
extern void func_801319E0(s32 a0); \
|
|
void func_80130858(s32 a0) { \
|
|
func_8012AD80(a0); \
|
|
if (func_8012BEE8(a0)) { \
|
|
func_801319E0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013A8BC() \
|
|
extern u8 D_8011DA80[]; \
|
|
s32 func_8013A8BC(void) { \
|
|
s32 p; \
|
|
s32 i; \
|
|
p = (s32)D_8011DA80; \
|
|
for (i = 0; i < 0x20; i += 0x10) { \
|
|
if (*(s16*)((s32)D_8011DA80 + i) == 0) { \
|
|
return p; \
|
|
} \
|
|
p += 0x10; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80142414() \
|
|
extern s32 func_8012C588(s32 a0, s32 a1); \
|
|
void func_80142414(s32 a0, s16 a1) { \
|
|
s32 v0; \
|
|
v0 = func_8012C588(0x13, a0); \
|
|
if (v0 != 0) { \
|
|
*(s16*)(v0 + 0x52) = a1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80144988() \
|
|
void func_80144988(s32 a0) { \
|
|
s32 t; \
|
|
*(u16*)(a0 + 0xA) = *(u16*)(a0 + 0xA) - 0x40; \
|
|
*(s32*)(a0 + 0x10) = *(s32*)(*(s32*)(a0 + 0x64) + 0x10); \
|
|
*(s32*)(a0 + 0x14) = *(s32*)(*(s32*)(a0 + 0x64) + 0x14); \
|
|
t = *(s32*)(*(s32*)(a0 + 0x64) + 0x18); \
|
|
*(u16*)(a0 + 0x2) = *(u16*)(a0 + 0x2) + 1; \
|
|
*(s32*)(a0 + 0x18) = t; \
|
|
}
|
|
|
|
#define DEFINE_func_80149184() \
|
|
extern s32 func_801491C4(s32 a0); \
|
|
s32 func_80149184(s32 a0) { \
|
|
s32 v0; \
|
|
s32 v1; \
|
|
v0 = func_801491C4(a0); \
|
|
v1 = *(u16*)(*(s32*)(a0 + 0x20) + 0x12); \
|
|
return (v1 - v0) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_801491C4() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 D_801151D4; \
|
|
s32 func_801491C4(s32 a0) { \
|
|
s32 p; \
|
|
s32 v0; \
|
|
p = D_801151D4; \
|
|
v0 = ratan2(*(s32*)(p + 0x3C) - *(s32*)(p + 0x48), *(s32*)(p + 0x44) - *(s32*)(p + 0x50)); \
|
|
return (s16)v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801526D4() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_80152714(s32 a0); \
|
|
void func_801526D4(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_80152714(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801565C0() \
|
|
extern s32 D_801151E0[]; \
|
|
s32 func_801565C0(void) { \
|
|
s32 result; \
|
|
u32 i; \
|
|
result = 0; \
|
|
for (i = 0; i < 3; i++) { \
|
|
if (D_801151E0[i] & 1) { \
|
|
result |= 1; \
|
|
} \
|
|
} \
|
|
return result; \
|
|
}
|
|
|
|
#define DEFINE_func_80175454() \
|
|
extern u8 D_8011F7A8; \
|
|
extern u8 D_8011F7A9; \
|
|
extern u8 D_8011F7AD; \
|
|
extern u8 D_8011F7AE; \
|
|
void func_80175454(void) { \
|
|
u8 *p = &D_8011F7A8; \
|
|
if (*p == 0) { \
|
|
*p = 1; \
|
|
D_8011F7A9 = 0; \
|
|
D_8011F7AD = 0xA; \
|
|
D_8011F7AE = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801757A0() \
|
|
extern void func_80175DA8(s32 a0); \
|
|
extern void func_80175AB8(s32 a0); \
|
|
extern void func_80176144(s32 a0); \
|
|
void func_801757A0(s32 a0) { \
|
|
s32 v = (s16)a0; \
|
|
func_80175DA8(v); \
|
|
func_80175AB8(v); \
|
|
func_80176144(v); \
|
|
}
|
|
|
|
#define DEFINE_func_801757E0() \
|
|
extern void func_80176734(s32 a0); \
|
|
extern void func_80176218(s32 a0); \
|
|
extern void func_80176D00(s32 a0); \
|
|
void func_801757E0(s32 a0) { \
|
|
s32 v = (s16)a0; \
|
|
func_80176734(v); \
|
|
func_80176218(v); \
|
|
func_80176D00(v); \
|
|
}
|
|
|
|
#define DEFINE_func_801399F0() \
|
|
s32 func_801399F0(s32 a0) { \
|
|
s32 v1; \
|
|
if (*(s32*)(a0 + 0x0) == 0) return -1; \
|
|
v1 = *(s16*)(a0 + 0x4); \
|
|
if (v1 == 0) return -1; \
|
|
if (v1 == 0xE) return -1; \
|
|
if (v1 == 0xD) return *(s8*)(a0 + 0x1F); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80134A28() \
|
|
s32 func_80134A28(s32 a0, s32 a1, s32 a2) { \
|
|
return *(s16*)(a0 + 0x0) * *(s16*)(a1 + 0x0) \
|
|
+ *(s16*)(a0 + 0x2) * *(s16*)(a1 + 0x2) \
|
|
+ *(s16*)(a0 + 0x4) * *(s16*)(a1 + 0x4) \
|
|
+ a2; \
|
|
}
|
|
|
|
#define DEFINE_func_80134FB8() \
|
|
s32 func_80134FB8(s32 a0, s32 a1, s32 a2) { \
|
|
return *(s16*)(a0 + 0x0) * *(s16*)(a1 + 0x0) \
|
|
+ *(s16*)(a0 + 0x2) * *(s16*)(a1 + 0x2) \
|
|
+ *(s16*)(a0 + 0x4) * *(s16*)(a1 + 0x4) \
|
|
+ a2; \
|
|
}
|
|
|
|
#define DEFINE_func_80147814() \
|
|
void func_80147814(s32 a0, s32 a1) { \
|
|
s32 v0 = *(s32*)(a0 + 0x34) + a1; \
|
|
*(s32*)(a0 + 0x34) = v0; \
|
|
if (a1 < 0) { \
|
|
if (v0 < (s32)0xFFE10000) { \
|
|
*(s32*)(a0 + 0x34) = (s32)0xFFE10000; \
|
|
return; \
|
|
} \
|
|
} \
|
|
if (a1 > 0) { \
|
|
if ((s32)0x1F0000 < *(s32*)(a0 + 0x34)) { \
|
|
*(s32*)(a0 + 0x34) = 0x1F0000; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801518D8() \
|
|
s32 func_801518D8(s32 a0) { \
|
|
u8 v1 = *(u8*)(a0 + 0x3E); \
|
|
if (v1 == 0x1B) return 1; \
|
|
if (v1 == 0x1C) return 1; \
|
|
if (v1 == 0xF) return 1; \
|
|
if (v1 == 0x10) return 1; \
|
|
if (v1 == 0x3) return 1; \
|
|
if (v1 != 0x13) return v1 == 0x17; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80147948() \
|
|
void func_80147948(s32 a0, s32 a1, s32 a2) { \
|
|
s32 v0 = *(s32*)(a0 + 0x24) + a1; \
|
|
*(s32*)(a0 + 0x24) = v0; \
|
|
if (a1 < 0) { \
|
|
if (!(-a2 < v0)) { \
|
|
*(s32*)(a0 + 0x24) = -a2; \
|
|
return; \
|
|
} \
|
|
} \
|
|
if (a1 > 0) { \
|
|
if (!(*(s32*)(a0 + 0x24) < a2)) { \
|
|
*(s32*)(a0 + 0x24) = a2; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801479BC() \
|
|
void func_801479BC(s32 a0, s32 a1, s32 a2) { \
|
|
s32 v0 = *(s32*)(a0 + 0x28) + a1; \
|
|
*(s32*)(a0 + 0x28) = v0; \
|
|
if (a1 < 0) { \
|
|
if (!(-a2 < v0)) { \
|
|
*(s32*)(a0 + 0x28) = -a2; \
|
|
return; \
|
|
} \
|
|
} \
|
|
if (a1 > 0) { \
|
|
if (!(*(s32*)(a0 + 0x28) < a2)) { \
|
|
*(s32*)(a0 + 0x28) = a2; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80147A30() \
|
|
void func_80147A30(s32 a0, s32 a1, s32 a2) { \
|
|
s32 v0 = *(s32*)(a0 + 0x2C) + a1; \
|
|
*(s32*)(a0 + 0x2C) = v0; \
|
|
if (a1 < 0) { \
|
|
if (-a2 >= v0) { \
|
|
*(s32*)(a0 + 0x2C) = -a2; \
|
|
return; \
|
|
} \
|
|
} \
|
|
if (a1 > 0) { \
|
|
if (*(s32*)(a0 + 0x2C) >= a2) { \
|
|
*(s32*)(a0 + 0x2C) = a2; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012E470() \
|
|
s32 func_8012E470(s32 a0) { \
|
|
s32 a1 = *(s32*)(a0 + 0x20); \
|
|
s32 v1 = *(s16*)(a1 + 0x18); \
|
|
s32 v0 = v1 + (0x1000 - v1) / 4; \
|
|
*(s16*)(a1 + 0x18) = (*(s16*)(a1 + 0x1C) = v0); \
|
|
v0 = *(s32*)(a0 + 0x1C); \
|
|
if (v0 != 0) { \
|
|
v0 -= 1; \
|
|
*(s32*)(a0 + 0x1C) = v0; \
|
|
v1 = v0; \
|
|
return (u32)v1 < 1; \
|
|
} \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80136BC4() \
|
|
void func_80136BC4(s32 a0) { \
|
|
if (*(s32*)(a0 + 0x8) == 0x20) { \
|
|
*(s32*)(a0 + 0x8) = a0 + 0x20; \
|
|
*(s32*)(a0 + 0xC) += a0; \
|
|
*(s32*)(a0 + 0x10) += a0; \
|
|
*(s32*)(a0 + 0x14) += a0; \
|
|
*(s32*)(a0 + 0x18) += a0; \
|
|
*(s32*)(a0 + 0x1C) += a0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80138B88() \
|
|
void func_80138B88(s32 a0) { \
|
|
s32 a1; \
|
|
if (*(s32*)(a0 + 0x8) & 0x2000) { \
|
|
*(s16*)(a0 + 0x4) = 0xD; \
|
|
} else { \
|
|
*(s16*)(a0 + 0x4) = 0xC; \
|
|
*(s32*)(a0 + 0x8) &= ~0x1000; \
|
|
a1 = *(s32*)(a0 + 0x40); \
|
|
if (a1 != 0) { \
|
|
if (*(u16*)(a0 + 0x18) != 0) { \
|
|
*(s16*)a1 = 3; \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801470C0() \
|
|
void func_801470C0(s32 a0) { \
|
|
s32 a1; \
|
|
a1 = *(s32*)(a0 + 0x20); \
|
|
if (a1 != 0) { \
|
|
if ((*(u8*)(a0 + 0x221) | *(u8*)(a0 + 0x220) | *(u8*)(a0 + 0x222)) != 0) { \
|
|
*(s32*)(a1 + 0x4) |= 0x80000000; \
|
|
} else { \
|
|
*(s32*)(a1 + 0x4) &= 0x7FFFFFFF; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80151880() \
|
|
s32 func_80151880(s32 a0) { \
|
|
u16 h; \
|
|
s32 v1; \
|
|
h = *(u16*)(a0 + 0x3E); \
|
|
v1 = h & 0xFF; \
|
|
if (v1 == 0x1B) return 1; \
|
|
if (v1 == 0x1C) return 1; \
|
|
if (v1 == 0xF) return 1; \
|
|
if (v1 == 0x10) return 1; \
|
|
if (v1 == 0xB) return 2; \
|
|
if (v1 != 0x1F) return (h >> 8) & 2; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148038() \
|
|
void func_80148038(s32 a0, s32 a1) { \
|
|
s32 v1 = *(s32*)(a0 + 0x34); \
|
|
if (v1 < 0) { \
|
|
if (a1 < 0) { \
|
|
if ((s32)0xFFE10000 < v1) { \
|
|
} else { \
|
|
a1 = 0; \
|
|
} \
|
|
} \
|
|
} else { \
|
|
if (a1 > 0) { \
|
|
if (0x1EFFFF < v1) { \
|
|
a1 = 0; \
|
|
} \
|
|
} \
|
|
} \
|
|
*(s32*)(a0 + 0x34) += a1; \
|
|
}
|
|
|
|
#define DEFINE_func_80149228() \
|
|
s32 func_80149228(s32 a0) { \
|
|
u32 a1; \
|
|
s32 v0; \
|
|
if (*(s16*)(a0 + 0x1E4) == 0) { \
|
|
*(s32*)(a0 + 0x1DC) = 0; \
|
|
*(s32*)(a0 + 0x1E0) = 0; \
|
|
*(s16*)(a0 + 0x1E4) = *(u16*)(a0 + 0x1E6); \
|
|
} \
|
|
a1 = *(u16*)(a0 + 0xAC); \
|
|
if (a1 != 0) { \
|
|
s32 v0t = *(s32*)(a0 + 0x1E0); \
|
|
u16 v1t = *(u16*)(a0 + 0x1E6); \
|
|
s32 r; \
|
|
*(s32*)(a0 + 0x1E0) = a1; \
|
|
r = a1 & v0t; \
|
|
*(s16*)(a0 + 0x1E4) = v1t; \
|
|
*(s32*)(a0 + 0x1DC) = r; \
|
|
} \
|
|
v0 = *(u16*)(a0 + 0x1E4); \
|
|
v0 -= 1; \
|
|
*(s16*)(a0 + 0x1E4) = v0; \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801489E8() \
|
|
s32 func_801489E8(s32 a0) { \
|
|
u8 v1; \
|
|
v1 = *(u8*)(a0 + 0xA9); \
|
|
switch (v1) { \
|
|
case 0x41: \
|
|
return *(u16*)(a0 + 0xAA) & 0x8000; \
|
|
case 0x53: \
|
|
case 0x73: \
|
|
return *(u8*)(a0 + 0xAE) < 0x40; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012AD80() \
|
|
void func_8012AD80(s32 a0) { \
|
|
*(s32*)(a0 + 0x10) += *(s32*)(a0 + 0x44); \
|
|
*(s32*)(a0 + 0x14) += *(s32*)(a0 + 0x48); \
|
|
*(s32*)(a0 + 0x18) += *(s32*)(a0 + 0x4C); \
|
|
*(s32*)(a0 + 0x4) += *(s32*)(a0 + 0x10); \
|
|
*(s32*)(a0 + 0x8) += *(s32*)(a0 + 0x14); \
|
|
*(s32*)(a0 + 0xC) += *(s32*)(a0 + 0x18); \
|
|
}
|
|
|
|
#define DEFINE_func_8014891C() \
|
|
s32 func_8014891C(s32 a0) { \
|
|
u8 v1; \
|
|
v1 = *(u8*)(a0 + 0xA9); \
|
|
switch (v1) { \
|
|
case 0x41: \
|
|
return *(u16*)(a0 + 0xAA) & 0x1000; \
|
|
case 0x53: \
|
|
case 0x73: \
|
|
return (*(u16*)(a0 + 0xAE) >> 8) < 0x40; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80148A48() \
|
|
s32 func_80148A48(s32 a0) { \
|
|
u8 v1; \
|
|
v1 = *(u8*)(a0 + 0xA9); \
|
|
switch (v1) { \
|
|
case 0x41: \
|
|
return *(u16*)(a0 + 0xAA) & 0x2000; \
|
|
case 0x53: \
|
|
case 0x73: \
|
|
return *(u8*)(a0 + 0xAE) >= 0xC1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013435C() \
|
|
s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3) { \
|
|
s32 t1; \
|
|
s32 sum; \
|
|
if (a3[1] < -0xE00) { \
|
|
t1 = -0x1800; \
|
|
} else { \
|
|
t1 = -0x2F00; \
|
|
} \
|
|
sum = a0[0] * a1[0] + a0[1] * a1[1]; \
|
|
sum = sum + a0[2] * a1[2]; \
|
|
sum = sum + a2; \
|
|
return sum < t1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148980() \
|
|
s32 func_80148980(u8 *a0) { \
|
|
u8 c; \
|
|
s32 v0; \
|
|
c = a0[0xA9]; \
|
|
switch (c) { \
|
|
case 0x41: \
|
|
v0 = *(u16 *)(a0 + 0xAA) & 0x4000; \
|
|
break; \
|
|
case 0x53: \
|
|
case 0x73: \
|
|
v0 = ((u32)*(u16 *)(a0 + 0xAE) >> 8) < 0xC1; \
|
|
v0 = v0 ^ 1; \
|
|
break; \
|
|
default: \
|
|
v0 = 0; \
|
|
break; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801783D0() \
|
|
u32 func_801783D0(s32 a0, s32 a1) { \
|
|
s32 t0; \
|
|
s32 a2; \
|
|
s32 a3; \
|
|
t0 = 0; \
|
|
a2 = a0; \
|
|
a3 = 0; \
|
|
while (a2 >= 10) { \
|
|
a0 = a0 / 10; \
|
|
t0 = t0 | ((a2 - (a0 * 2 + a0 * 8)) << a3); \
|
|
a2 = a0; \
|
|
a3 += 4; \
|
|
} \
|
|
t0 = t0 | (a2 << a3); \
|
|
return t0 << a1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B260() \
|
|
void func_8012B260(u8 *a0) { \
|
|
u8 *a1; \
|
|
s32 a, b, c; \
|
|
u16 t; \
|
|
a1 = *(u8 **)(a0 + 0x20); \
|
|
a = (u16)*(u16 *)(a0 + 6) + (u16)*(u16 *)(a0 + 0x50); \
|
|
*(u16 *)(a1 + 8) = a; \
|
|
*(s32 *)(a1 + 0x48) = (s16)a; \
|
|
b = (u16)*(u16 *)(a0 + 0xA) + (u16)*(u16 *)(a0 + 0x52); \
|
|
*(u16 *)(a1 + 0xA) = b; \
|
|
*(s32 *)(a1 + 0x4C) = (s16)b; \
|
|
c = (u16)*(u16 *)(a0 + 0xE); \
|
|
t = *(u16 *)(a1 + 0x2C) | 1; \
|
|
c = c + (u16)*(u16 *)(a0 + 0x54); \
|
|
*(u16 *)(a1 + 0xC) = c; \
|
|
*(u16 *)(a1 + 0x2C) = t; \
|
|
*(s32 *)(a1 + 0x50) = (s16)c; \
|
|
}
|
|
|
|
#define DEFINE_func_801473EC() \
|
|
void func_801473EC(s32 *a0) { \
|
|
s32 *a2; \
|
|
a2 = a0; \
|
|
a2[1] += a2[4]; \
|
|
a2[2] += a2[5]; \
|
|
a2[3] += a2[6]; \
|
|
if (a2[4] != 0 || a2[5] != 0 || a2[6] != 0) { \
|
|
a2[0x11] |= 0x80000000; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801488A8() \
|
|
s32 func_801488A8(u8 *a0) { \
|
|
u8 c; \
|
|
s32 v0; \
|
|
u32 h; \
|
|
s32 lo; \
|
|
c = a0[0xA9]; \
|
|
switch (c) { \
|
|
case 0x41: \
|
|
v0 = *(u16 *)(a0 + 0xAA) & 0xF000; \
|
|
break; \
|
|
case 0x53: \
|
|
case 0x73: \
|
|
h = *(u16 *)(a0 + 0xAE); \
|
|
lo = h & 0xFF; \
|
|
if (lo != 0x80) { \
|
|
return 1; \
|
|
} \
|
|
if ((s32)(h >> 8) != lo) { \
|
|
return 1; \
|
|
} \
|
|
v0 = 0; \
|
|
break; \
|
|
default: \
|
|
v0 = 0; \
|
|
break; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017509C() \
|
|
s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3) { \
|
|
a1 = (s16)a1; \
|
|
a0 = a0 + a1 * 14; \
|
|
if (*(s16 *)(a0 + 0xC) == 0x7FFF) { \
|
|
return 1; \
|
|
} \
|
|
*(u16 *)(a2 + 0) = *(u16 *)(a0 + 0); \
|
|
*(u16 *)(a2 + 2) = *(u16 *)(a0 + 2); \
|
|
*(u16 *)(a2 + 4) = *(u16 *)(a0 + 4); \
|
|
*(u16 *)(a3 + 0) = *(u16 *)(a0 + 6); \
|
|
*(u16 *)(a3 + 2) = *(u16 *)(a0 + 8); \
|
|
*(u16 *)(a3 + 4) = *(u16 *)(a0 + 0xA); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80139C7C() \
|
|
void func_80139C7C(u8 *a0) { \
|
|
s32 a1; \
|
|
if (*(u8 *)(a0 + 0x20) != 0) { \
|
|
if (*(u8 *)(a0 + 0x22) & 0x8) { \
|
|
a1 = (*(s16 *)(a0 + 0x34) + 0x28) >> 1; \
|
|
} else { \
|
|
a1 = ((*(s16 *)(a0 + 0x34) + 0x28) >> 1) - 0x28; \
|
|
} \
|
|
} else { \
|
|
a1 = (s32)(*(u16 *)(a0 + 0x34) << 16) >> 17; \
|
|
} \
|
|
*(s16 *)(a0 + 0x30) = *(u16 *)(a0 + 0x24) - a1; \
|
|
*(s16 *)(a0 + 0x32) = *(u16 *)(a0 + 0x26) - ((s32)(*(u16 *)(a0 + 0x36) << 16) >> 17); \
|
|
}
|
|
|
|
#define DEFINE_func_80175014() \
|
|
s32 func_80175014(u8 *a0, u8 *a1, s32 a2) { \
|
|
a2 = (s16)a2; \
|
|
a1 = a1 + a2 * 14; \
|
|
if (*(s16 *)(a1 + 0xC) == 0x7FFF) { \
|
|
return 1; \
|
|
} \
|
|
*(s32 *)(a0 + 0x3C) = *(s16 *)(a1 + 0); \
|
|
*(s32 *)(a0 + 0x40) = *(s16 *)(a1 + 2); \
|
|
*(s32 *)(a0 + 0x44) = *(s16 *)(a1 + 4); \
|
|
*(s32 *)(a0 + 0x48) = *(s16 *)(a1 + 6); \
|
|
*(s32 *)(a0 + 0x4C) = *(s16 *)(a1 + 8); \
|
|
*(s32 *)(a0 + 0x50) = *(s16 *)(a1 + 0xA); \
|
|
*(s32 *)(a0 + 0x54) = *(s16 *)(a1 + 0xC) << 5; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80146DF8() \
|
|
void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0) { \
|
|
if (a1 < 0) { \
|
|
if (a1 < -t0) a1 = -t0; \
|
|
} else { \
|
|
if (t0 < a1) a1 = t0; \
|
|
} \
|
|
if (a2 < 0) { \
|
|
if (a2 < -t0) a2 = -t0; \
|
|
} else { \
|
|
if (t0 < a2) a2 = t0; \
|
|
} \
|
|
if (a3 < 0) { \
|
|
if (a3 < -t0) a3 = -t0; \
|
|
} else { \
|
|
if (t0 < a3) a3 = t0; \
|
|
} \
|
|
*(s32 *)((s32)a0 + 0x24) = a1; \
|
|
*(s32 *)((s32)a0 + 0x28) = a2; \
|
|
*(s32 *)((s32)a0 + 0x2C) = a3; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B608() \
|
|
s32 func_8012B608(s32 a0, s32 a1, s32 a2) { \
|
|
s32 v1; \
|
|
s32 t; \
|
|
a0 &= 0xFFF; \
|
|
a1 &= 0xFFF; \
|
|
v1 = a1 - a0; \
|
|
if (a0 == a1) { \
|
|
return 0; \
|
|
} \
|
|
if (v1 >= 0x801) { \
|
|
t = a0 + 0x1000; \
|
|
v1 = a1 - t; \
|
|
} \
|
|
if (v1 < -0x800) { \
|
|
t = a0 - 0x1000; \
|
|
v1 = a1 - t; \
|
|
} \
|
|
if (v1 >= 0) { \
|
|
v1 = v1 / a2; \
|
|
if (v1 != 0) { \
|
|
return v1; \
|
|
} \
|
|
v1 = 1; \
|
|
} else { \
|
|
v1 = v1 / a2; \
|
|
if (v1 != 0) { \
|
|
return v1; \
|
|
} \
|
|
v1 = -1; \
|
|
} \
|
|
return v1; \
|
|
}
|
|
|
|
#define DEFINE_func_8013361C() \
|
|
s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3) { \
|
|
if ((*(s16 *)((s32)a0 + 4) + *(s16 *)((s32)a2 + 0) > *(s16 *)((s32)a1 + 6) + *(s16 *)((s32)a3 + 0)) || \
|
|
(*(s16 *)((s32)a0 + 6) + *(s16 *)((s32)a2 + 0) < *(s16 *)((s32)a1 + 4) + *(s16 *)((s32)a3 + 0)) || \
|
|
(*(s16 *)((s32)a0 + 0xC) + *(s16 *)((s32)a2 + 4) > *(s16 *)((s32)a1 + 0xE) + *(s16 *)((s32)a3 + 4)) || \
|
|
(*(s16 *)((s32)a0 + 0xE) + *(s16 *)((s32)a2 + 4) < *(s16 *)((s32)a1 + 0xC) + *(s16 *)((s32)a3 + 4)) || \
|
|
(*(s16 *)((s32)a0 + 8) + *(s16 *)((s32)a2 + 2) > *(s16 *)((s32)a1 + 0xA) + *(s16 *)((s32)a3 + 2)) || \
|
|
(*(s16 *)((s32)a0 + 0xA) + *(s16 *)((s32)a2 + 2) < *(s16 *)((s32)a1 + 8) + *(s16 *)((s32)a3 + 2))) { \
|
|
return 0; \
|
|
} \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80137FD8() \
|
|
void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
s32 v; \
|
|
u16 h30; \
|
|
*(u8 *)(a2 + 0x3) = 8; \
|
|
*(u8 *)(a2 + 0x7) = 0x3A; \
|
|
*(u8 *)(a2 + 0x4) = *(u8 *)(a1 + 0x0); \
|
|
*(u8 *)(a2 + 0x5) = *(u8 *)(a1 + 0x1); \
|
|
*(u8 *)(a2 + 0x6) = *(u8 *)(a1 + 0x2); \
|
|
*(u8 *)(a2 + 0xC) = *(u8 *)(a1 + 0x0); \
|
|
*(u8 *)(a2 + 0xD) = *(u8 *)(a1 + 0x1); \
|
|
*(u8 *)(a2 + 0xE) = *(u8 *)(a1 + 0x2); \
|
|
*(u8 *)(a2 + 0x14) = 0xFF; \
|
|
*(u8 *)(a2 + 0x15) = 0xFF; \
|
|
*(u8 *)(a2 + 0x16) = 0xFF; \
|
|
*(u8 *)(a2 + 0x1C) = 0xFF; \
|
|
*(u8 *)(a2 + 0x1D) = 0xFF; \
|
|
*(u8 *)(a2 + 0x1E) = 0xFF; \
|
|
h30 = *(u16 *)(a0 + 0x30); \
|
|
*(u16 *)(a2 + 0x18) = h30; \
|
|
*(u16 *)(a2 + 0x8) = h30; \
|
|
if (*(u32 *)(a0 + 0x8) & 0x2000) { \
|
|
v = (*(u16 *)(a0 + 0x30) + *(u16 *)(a0 + 0x34)) - 0xC; \
|
|
*(u16 *)(a2 + 0x20) = v; \
|
|
*(u16 *)(a2 + 0x10) = v; \
|
|
} else { \
|
|
s32 w = *(u16 *)(a0 + 0x30) + *(u16 *)(a0 + 0x34); \
|
|
*(u16 *)(a2 + 0x20) = w; \
|
|
*(u16 *)(a2 + 0x10) = w; \
|
|
} \
|
|
if (*(u8 *)(a1 + 0x3) == 0) { \
|
|
s32 hi = a3 + 0x5; \
|
|
*(u16 *)(a2 + 0x12) = a3; \
|
|
*(u16 *)(a2 + 0xA) = a3; \
|
|
*(u16 *)(a2 + 0x22) = hi; \
|
|
*(u16 *)(a2 + 0x1A) = hi; \
|
|
return; \
|
|
} \
|
|
{ \
|
|
s32 lo = a3 + 0xC; \
|
|
register s32 hi __asm__("$3") = a3 + 0x5; \
|
|
*(u16 *)(a2 + 0x12) = lo; \
|
|
*(u16 *)(a2 + 0xA) = lo; \
|
|
*(u16 *)(a2 + 0x22) = hi; \
|
|
*(u16 *)(a2 + 0x1A) = hi; \
|
|
} \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
}
|
|
|
|
#define DEFINE_func_8016C374() \
|
|
s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
s32 v; \
|
|
*(u16 *)(a1 + 0x0) = *(u16 *)(a1 + 0x0) - 0xA; \
|
|
if ((s16)*(u16 *)(a1 + 0x0) < 0) { \
|
|
*(u16 *)(a1 + 0x0) = 0; \
|
|
} \
|
|
*(u16 *)(a1 + 0x2) = *(u16 *)(a1 + 0x2) - 0xA; \
|
|
if ((s16)*(u16 *)(a1 + 0x2) < 0) { \
|
|
*(u16 *)(a1 + 0x2) = 0; \
|
|
} \
|
|
*(u16 *)(a1 + 0x4) = *(u16 *)(a1 + 0x4) - 0xA; \
|
|
if ((s16)*(u16 *)(a1 + 0x4) < 0) { \
|
|
*(u16 *)(a1 + 0x4) = 0; \
|
|
} \
|
|
*(u16 *)(a2 + 0x0) = *(u16 *)(a2 + 0x0) - 0xA; \
|
|
if ((s16)*(u16 *)(a2 + 0x0) < 0) { \
|
|
*(u16 *)(a2 + 0x0) = 0; \
|
|
} \
|
|
*(u16 *)(a2 + 0x2) = *(u16 *)(a2 + 0x2) - 0xA; \
|
|
if ((s16)*(u16 *)(a2 + 0x2) < 0) { \
|
|
*(u16 *)(a2 + 0x2) = 0; \
|
|
} \
|
|
*(u16 *)(a2 + 0x4) = *(u16 *)(a2 + 0x4) - 0xA; \
|
|
if ((s16)*(u16 *)(a2 + 0x4) < 0) { \
|
|
*(u16 *)(a2 + 0x4) = 0; \
|
|
} \
|
|
*(u8 *)(a3 + 0x0) = *(u16 *)(a1 + 0x0); \
|
|
*(u8 *)(a3 + 0x1) = *(u16 *)(a1 + 0x2); \
|
|
*(u8 *)(a3 + 0x2) = *(u16 *)(a1 + 0x4); \
|
|
*(u8 *)(a3 + 0x4) = *(u16 *)(a2 + 0x0); \
|
|
*(u8 *)(a3 + 0x5) = *(u16 *)(a2 + 0x2); \
|
|
*(u8 *)(a3 + 0x6) = *(u16 *)(a2 + 0x4); \
|
|
v = *(u16 *)(a2 + 0x4) | (*(u16 *)(a2 + 0x0) | *(u16 *)(a2 + 0x2)); \
|
|
return (s16)v; \
|
|
}
|
|
|
|
#define DEFINE_func_80147118() \
|
|
void func_80147118(s32 a0) { \
|
|
s32 vec[3]; \
|
|
vec[0] = ((s32)(*(s16 *)(a0 + 0x60) * *(s16 *)(a0 + 0x68)) / 4096); \
|
|
vec[0] = ((s32)(vec[0] * *(s16 *)(a0 + 0x70)) / 4096); \
|
|
vec[1] = ((s32)(*(s16 *)(a0 + 0x62) * *(s16 *)(a0 + 0x6A)) / 4096); \
|
|
vec[1] = ((s32)(vec[1] * *(s16 *)(a0 + 0x72)) / 4096); \
|
|
vec[2] = ((s32)(*(s16 *)(a0 + 0x64) * *(s16 *)(a0 + 0x6C)) / 4096); \
|
|
vec[2] = ((s32)(vec[2] * *(s16 *)(a0 + 0x74)) / 4096); \
|
|
if (0xFFFF < vec[0]) { \
|
|
vec[0] = 0xFFFF; \
|
|
} \
|
|
if (0xFFFF < vec[1]) { \
|
|
vec[1] = 0xFFFF; \
|
|
} \
|
|
if (0xFFFF < vec[2]) { \
|
|
vec[2] = 0xFFFF; \
|
|
} \
|
|
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) = vec[0]; \
|
|
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) = vec[1]; \
|
|
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C) = vec[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_80129220() \
|
|
extern void func_80129258(void); \
|
|
extern void func_80129248(s16 a0); \
|
|
void func_80129220(void) { \
|
|
func_80129258(); \
|
|
func_80129248(1); \
|
|
}
|
|
|
|
#define DEFINE_func_8012CBA4() \
|
|
extern void func_8012CC88(s32 a, s32 b, s32 c); \
|
|
extern u8 D_800D3918[]; \
|
|
void func_8012CBA4(s32 a0) { \
|
|
func_8012CC88(a0, 0, (s32)D_800D3918); \
|
|
}
|
|
|
|
#define DEFINE_func_8012CBCC() \
|
|
extern void func_8012CC88(s32 a, s32 b, s32 c); \
|
|
extern u8 D_800D3918[]; \
|
|
void func_8012CBCC(s32 a0) { \
|
|
func_8012CC88(a0, 1, (s32)D_800D3918); \
|
|
}
|
|
|
|
#define DEFINE_func_80179E48() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179E48(s16 a0) { \
|
|
s16 sp[2]; \
|
|
sp[0] = 0x1F; \
|
|
sp[1] = a0; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_80179E74() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179E74(s16 a0) { \
|
|
s16 sp[2]; \
|
|
sp[0] = 0x4; \
|
|
sp[1] = a0; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_80170718() \
|
|
extern void func_80129FF4(void); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80170718(void *a0) { \
|
|
func_80129FF4(); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170C14() \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170C44(u8 *a0); \
|
|
void func_80170C14(u8 *a0) { \
|
|
func_80171990(a0); \
|
|
func_80170C44(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017115C() \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8017118C(u8 *a0); \
|
|
void func_8017115C(u8 *a0) { \
|
|
func_80171990(a0); \
|
|
func_8017118C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801717F4() \
|
|
extern void func_8013E588(void *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_801717F4(void *a0) { \
|
|
func_8013E588(a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80171824() \
|
|
extern void func_80175414(s32); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80171824(void *a0) { \
|
|
func_80175414((s32)a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80171854() \
|
|
extern void func_80175454(void); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80171854(void *a0) { \
|
|
func_80175454(); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172B14() \
|
|
extern s16 D_80126B32; \
|
|
extern s32 func_80172B44(void *a0); \
|
|
extern void func_80174684(void *); \
|
|
void func_80172B14(s16 a0) { \
|
|
D_80126B32 = a0; \
|
|
func_80174684((void *)func_80172B44); \
|
|
}
|
|
|
|
#define DEFINE_func_801733CC() \
|
|
extern void func_8016F30C(void); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_801733CC(s32 a0) { \
|
|
func_8016F30C(); \
|
|
func_80174650(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801737B8() \
|
|
extern s16 D_80126B30; \
|
|
extern s32 func_801737E8(void *a0); \
|
|
extern void func_80174684(void *); \
|
|
void func_801737B8(s16 a0) { \
|
|
D_80126B30 = a0; \
|
|
func_80174684((void *)func_801737E8); \
|
|
}
|
|
|
|
#define DEFINE_func_801738DC() \
|
|
extern s16 D_80126B30; \
|
|
extern s32 func_8017390C(void *a0); \
|
|
extern void func_80174684(void *); \
|
|
void func_801738DC(s16 a0) { \
|
|
D_80126B30 = a0; \
|
|
func_80174684((void *)func_8017390C); \
|
|
}
|
|
|
|
#define DEFINE_func_80174158() \
|
|
extern s32 func_80174188(s32 a0); \
|
|
extern void func_801741A8(s32 a0); \
|
|
void func_80174158(s32 a0) { \
|
|
func_80174188(a0); \
|
|
func_801741A8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801743C0() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_801743F0(u8 *a0); \
|
|
void func_801743C0(u8 *a0) { \
|
|
func_80171A1C(a0); \
|
|
func_801743F0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801744B0() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_801744E0(u8 *a0); \
|
|
void func_801744B0(u8 *a0) { \
|
|
func_80171A1C(a0); \
|
|
func_801744E0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174C80() \
|
|
extern s32 func_80174CB0(s32, s32); \
|
|
void func_80174C80(s32 a0) { \
|
|
s32 v; \
|
|
v = (*(u16 *)(a0 + 0xA0) - 0x16) & 0xFFF; \
|
|
*(s16 *)(a0 + 0xA0) = v; \
|
|
func_80174CB0(a0, v); \
|
|
}
|
|
|
|
#define DEFINE_func_80179F14() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179F14(s16 a0, s16 a1) { \
|
|
s16 sp[3]; \
|
|
sp[0] = 0x13; \
|
|
sp[1] = a0; \
|
|
sp[2] = a1; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F2F0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015F324(s32 *a0); \
|
|
void func_8015F2F0(s32 *a0) { \
|
|
func_80147078(a0, 0x14); \
|
|
func_8015F324(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F738() \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015F738(s32 *a0) { \
|
|
func_801553A8(a0); \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F76C() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015F848(s32 *a0); \
|
|
void func_8015F76C(s32 *a0) { \
|
|
func_80147078(a0, 0x15); \
|
|
func_8015F848(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015FA44() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015FBE0(s32 *a0); \
|
|
void func_8015FA44(s32 *a0) { \
|
|
func_80147078(a0, 0x16); \
|
|
func_8015FBE0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015FA78() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015FAAC(s32 *a0); \
|
|
void func_8015FA78(s32 *a0) { \
|
|
func_80147078(a0, 0x16); \
|
|
func_8015FAAC(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801600D0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_801601AC(s32 *a0); \
|
|
void func_801600D0(s32 *a0) { \
|
|
func_80147078(a0, 0x18); \
|
|
func_801601AC(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160104() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80160138(s32 *a0); \
|
|
void func_80160104(s32 *a0) { \
|
|
func_80147078(a0, 0x18); \
|
|
func_80160138(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160334() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80160410(s32 *a0); \
|
|
void func_80160334(s32 *a0) { \
|
|
func_80147078(a0, 0x1B); \
|
|
func_80160410(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160368() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8016039C(s32 *a0); \
|
|
void func_80160368(s32 *a0) { \
|
|
func_80147078(a0, 0x1B); \
|
|
func_8016039C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801607E4() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_801608C0(s32 *a0); \
|
|
void func_801607E4(s32 *a0) { \
|
|
func_80147078(a0, 0x1C); \
|
|
func_801608C0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160818() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8016084C(s32 *a0); \
|
|
void func_80160818(s32 *a0) { \
|
|
func_80147078(a0, 0x1C); \
|
|
func_8016084C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160ACC() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80160BB4(s32 *a0); \
|
|
void func_80160ACC(s32 *a0) { \
|
|
func_80147078(a0, 0x1D); \
|
|
func_80160BB4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012F75C() \
|
|
extern void func_80131B14(); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012F75C(s32 a0) { \
|
|
*(u8 *)(a0 + 0xC1) = 3; \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x4) { \
|
|
func_80131B14(); \
|
|
*(s32 *)(a0 + 0x1C) = 0x10; \
|
|
*(s16 *)(a0 + 0x98) = 0; \
|
|
} \
|
|
func_80131CA8(a0, 6); \
|
|
}
|
|
|
|
#define DEFINE_func_80132E6C() \
|
|
extern void Square0(s32 *a0, s32 *a1); \
|
|
extern s16 D_80126CAC; \
|
|
extern s16 D_80126CB0; \
|
|
s32 func_80132E6C(s16 *a0) { \
|
|
s32 in[3]; \
|
|
s32 out[3]; \
|
|
in[0] = a0[3] - D_80126CAC; \
|
|
in[1] = 0; \
|
|
in[2] = a0[7] - D_80126CB0; \
|
|
Square0(in, out); \
|
|
return out[0] + out[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_80147860() \
|
|
extern void func_80147928(int a0, int a1); \
|
|
extern void func_8014799C(int a0, int a1); \
|
|
extern void func_80147A10(int a0, int a1); \
|
|
void func_80147860(int a0, int a1, int a2, int a3) { \
|
|
func_80147928(a0, a1); \
|
|
func_8014799C(a0, a2); \
|
|
func_80147A10(a0, a3); \
|
|
}
|
|
|
|
#define DEFINE_func_8014C2B0() \
|
|
extern s32 func_8014C59C(void *a0, void *a1); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
s32 func_8014C2B0(void *a0, void *a1, s32 a2) { \
|
|
s16 r1 = (s16)func_8014C59C(a0, a1); \
|
|
s32 v1 = *(s32 *)((u8 *)a0 + 0x20); \
|
|
s16 r2 = (s16)func_80012A60(r1, *(s16 *)(v1 + 0x12)); \
|
|
return r2 < (a2 & 0xFFFF); \
|
|
}
|
|
|
|
#define DEFINE_func_80165BFC() \
|
|
extern s32 func_80161208(); \
|
|
extern void func_80165C58(s32 arg0); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
void func_80165BFC(void *a0) { \
|
|
if (func_80161208() == 0) { \
|
|
if (*(u16 *)((u8 *)a0 + 0xB8) & 0x8000) { \
|
|
func_80165C58((s32)a0); \
|
|
func_801599A4(a0); \
|
|
func_80159B3C(a0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016E688() \
|
|
extern void func_8016E778(); \
|
|
void func_8016E688(void *a0) { \
|
|
u16 *p = (u16 *)a0; \
|
|
s16 v; \
|
|
p[0x10/2] += 0x200; \
|
|
v = p[0x12/2] + p[0x10/2]; \
|
|
p[0x12/2] = v; \
|
|
if (v >= 0x3000) { \
|
|
*(s32 *)((u8 *)a0 + 0x1C) = 4; \
|
|
*(s16 *)((u8 *)a0 + 0x2) += 1; \
|
|
} \
|
|
func_8016E778(); \
|
|
}
|
|
|
|
#define DEFINE_func_801735EC() \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s16 D_80126B40; \
|
|
extern s16 D_80126B32; \
|
|
void func_801735EC(void *a0) { \
|
|
if (D_80126B40 != 0) { \
|
|
*(s32 *)((u8 *)a0 + 0x44) |= 0x40000; \
|
|
} \
|
|
func_801477E8((s32 *)a0, D_80126B32 << 16); \
|
|
func_80171A1C((u8 *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801290DC() \
|
|
extern u8 *func_8012913C(s32 a0); \
|
|
u8 *func_801290DC(s32 a0, u8 *a1) { \
|
|
u8 *v1 = func_8012913C(a0 & 0xFFFF); \
|
|
if (v1 != 0) { \
|
|
*(u16 *)(v1 + 0x6) = *(u16 *)(a1 + 0x0); \
|
|
*(u16 *)(v1 + 0xA) = *(u16 *)(a1 + 0x2); \
|
|
*(u16 *)(v1 + 0xE) = *(u16 *)(a1 + 0x4); \
|
|
} \
|
|
return v1; \
|
|
}
|
|
|
|
#define DEFINE_func_80142778() \
|
|
extern void func_8012C218(void *a0); \
|
|
void func_80142778(u8 *a1) { \
|
|
u8 *a0 = *(u8 **)(a1 + 0x20); \
|
|
*(u16 *)(a0 + 0x18) = *(u16 *)(a0 + 0x18) - 0x800; \
|
|
*(u16 *)(a0 + 0x1A) = *(u16 *)(a0 + 0x1A) - 0x800; \
|
|
*(u16 *)(a1 + 0xA) = *(u16 *)(a1 + 0xA) + 0x10; \
|
|
if (*(s16 *)(a0 + 0x18) <= 0) { \
|
|
func_8012C218(a1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014C99C() \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern s32 func_8016F1AC(void); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern void func_80029124(s32, s32); \
|
|
void func_8014C99C(u8 *a0) { \
|
|
if ((func_80029178(0x119) & 0xFF) != 0) { \
|
|
if (func_8016F1AC() != 0) { \
|
|
func_80139914(*(s32 *)(a0 + 0x198)); \
|
|
*(s32 *)(a0 + 0x198) = 0; \
|
|
func_80029124(0x119, 0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017084C() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern void func_8014706C(void *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_8016BADC(void *a0, s32 a1, s32 a2); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_801708B0(void *a0); \
|
|
extern u8 D_800D5DA8; \
|
|
void func_8017084C(s32 a0) { \
|
|
func_801719A4(a0, 1); \
|
|
func_8014706C((void *)a0); \
|
|
func_80154274((s32 *)a0, (s32)&D_800D5DA8); \
|
|
func_8016BADC((void *)a0, -0x40, 0x40); \
|
|
func_80171990((u8 *)a0); \
|
|
func_801708B0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F95C() \
|
|
extern s32 func_80171CC4(void *a0, void *a1); \
|
|
extern s32 func_80171D1C(void *a0, void *a1, s32 a2); \
|
|
extern void func_80171928(void *a0); \
|
|
extern u16 D_8011F73E; \
|
|
void func_8016F95C(void *a0) { \
|
|
u16 *p = &D_8011F73E; \
|
|
u16 v = *p; \
|
|
s32 r; \
|
|
if (v == 0) { \
|
|
r = func_80171CC4(a0, p - 3); \
|
|
} else { \
|
|
r = func_80171D1C(a0, p - 3, v & 0xFF); \
|
|
} \
|
|
if (r != 0) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801722CC() \
|
|
extern s32 func_80172664(s32 *a0); \
|
|
void func_801722CC(s32 *a0) { \
|
|
if (func_80172664(a0) == 0) { \
|
|
*(s16 *)((u8 *)a0 + 0xAC) = 0x40; \
|
|
*(s16 *)((u8 *)a0 + 0xAA) = 0x40; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017280C() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80172844(u8 *a0); \
|
|
void func_8017280C(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80172844(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172920() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80172958(u8 *a0); \
|
|
void func_80172920(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80172958(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172CDC() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80172D14(u8 *a0); \
|
|
void func_80172CDC(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80172D14(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172DE8() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80172E20(u8 *a0); \
|
|
void func_80172DE8(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80172E20(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173580() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_801735B8(u8 *a0); \
|
|
void func_80173580(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_801735B8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173738() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80173770(u8 *a0); \
|
|
void func_80173738(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80173770(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173824() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_8017385C(u8 *a0); \
|
|
void func_80173824(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_8017385C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173948() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80173980(u8 *a0); \
|
|
void func_80173948(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80173980(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173B88() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80173BC0(u8 *a0); \
|
|
void func_80173B88(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80173BC0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801742E0() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80174318(u8 *a0); \
|
|
void func_801742E0(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171A1C(a0); \
|
|
func_80174318(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012DFD4() \
|
|
extern void func_8012E014(void); \
|
|
extern void func_8012E138(void); \
|
|
void func_8012DFD4(u8 *a0) { \
|
|
if (a0[0x74]) { \
|
|
func_8012E014(); \
|
|
} else { \
|
|
func_8012E138(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80165374() \
|
|
extern void func_801653F4(s32 a0); \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80165580(s32 a0); \
|
|
void func_80165374(s32 a0) { \
|
|
func_801653F4(a0); \
|
|
func_80147078((s32 *)a0, 0x17); \
|
|
*(u8 *)(a0 + 0x197) = 1; \
|
|
func_80165580(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016E6E4() \
|
|
extern void func_8016E778(); \
|
|
void func_8016E6E4(s32 a0) { \
|
|
s32 v0 = *(s32 *)(a0 + 0x1C) - 1; \
|
|
*(s32 *)(a0 + 0x1C) = v0; \
|
|
if (v0 == -1) { \
|
|
*(u16 *)(a0 + 2) = *(u16 *)(a0 + 2) + 1; \
|
|
} \
|
|
func_8016E778(); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FA00() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern void func_80171B44(s32 *a0); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016FA44(s32 a0); \
|
|
void func_8016FA00(s32 a0) { \
|
|
func_801719A4(a0, 1); \
|
|
func_80171B44((s32 *)a0); \
|
|
func_80171990((u8 *)a0); \
|
|
func_8016FA44(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801744E0() \
|
|
extern void func_800D1724(s32 a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
extern s32 D_80127508; \
|
|
void func_801744E0(u8 *a0) { \
|
|
func_800D1724(D_80127508); \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801284F0() \
|
|
extern void func_80175308(void); \
|
|
extern void func_8016E8F0(void); \
|
|
extern void func_80175494(void); \
|
|
extern void func_80011C10(void); \
|
|
extern u8 D_800B9A64; \
|
|
void func_801284F0(void) { \
|
|
func_80175308(); \
|
|
func_8016E8F0(); \
|
|
if (D_800B9A64 != 0) { \
|
|
func_80175494(); \
|
|
} \
|
|
func_80011C10(); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B1B4() \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
void func_8012B1B4(s32 a0, s32 a1) { \
|
|
s32 sp10[4]; \
|
|
func_800484EC(*(s32 *)(a0 + 0x20) + 0x34, a1, (s32)sp10); \
|
|
*(s32 *)(a0 + 0x10) = sp10[0]; \
|
|
*(s32 *)(a0 + 0x18) = sp10[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_8012F87C() \
|
|
extern void func_80131340(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012F87C(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x8) { \
|
|
func_80131340(a0); \
|
|
} \
|
|
func_80131CA8(a0, 0xA); \
|
|
}
|
|
|
|
#define DEFINE_func_8012F91C() \
|
|
extern void func_80131340(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012F91C(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x80) { \
|
|
func_80131340(a0); \
|
|
} \
|
|
func_80131CA8(a0, 0x17); \
|
|
}
|
|
|
|
#define DEFINE_func_8012FF00() \
|
|
extern void func_80131340(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012FF00(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x200) { \
|
|
func_80131340(a0); \
|
|
} \
|
|
func_80131CA8(a0, 0x1F); \
|
|
}
|
|
|
|
#define DEFINE_func_8012FF4C() \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012FF4C(s32 a0) { \
|
|
*(s8 *)(a0 + 0xC1) = 5; \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x20) { \
|
|
s32 v1 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(a0 + 0x5C) = 0; \
|
|
*(s32 *)(a0 + 0x1C) = 0x1E; \
|
|
*(s16 *)(a0 + 0x98) = 0; \
|
|
*(s16 *)(v1 + 0x10) = 0; \
|
|
} \
|
|
func_80131CA8(a0, 0xF); \
|
|
}
|
|
|
|
#define DEFINE_func_80130314() \
|
|
extern void func_80131340(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_80130314(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x800) { \
|
|
func_80131340(a0); \
|
|
} \
|
|
func_80131CA8(a0, 0x2D); \
|
|
}
|
|
|
|
#define DEFINE_func_80160DEC() \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_80160DEC(u8 *a0) { \
|
|
*(s32 *)(a0 + 0x1AC) = 0; \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; \
|
|
func_801553C0((s32)a0); \
|
|
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & -0x181; \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_80172F4C() \
|
|
extern void func_8017303C(void *); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80174650(s32); \
|
|
extern u8 D_800D47F4[]; \
|
|
extern s32 D_80126B58; \
|
|
extern s16 D_80126B30; \
|
|
void func_80172F4C(void) { \
|
|
func_8017303C(D_800D47F4); \
|
|
func_80154A74((s32)&D_80126B58, 0x13); \
|
|
D_80126B30 = 0; \
|
|
func_80174650((s32)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80172F9C() \
|
|
extern void func_8017303C(void *); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80174650(s32); \
|
|
extern u8 D_800D46E4[]; \
|
|
extern s32 D_80126B58; \
|
|
extern s16 D_80126B30; \
|
|
void func_80172F9C(void) { \
|
|
func_8017303C(D_800D46E4); \
|
|
func_80154A74((s32)&D_80126B58, 0x11); \
|
|
D_80126B30 = 0; \
|
|
func_80174650((s32)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80172FEC() \
|
|
extern void func_8017303C(void *); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80174650(s32); \
|
|
extern u8 D_800D5C6C[]; \
|
|
extern s32 D_80126B58; \
|
|
extern s16 D_80126B30; \
|
|
void func_80172FEC(void) { \
|
|
func_8017303C(D_800D5C6C); \
|
|
func_80154A74((s32)&D_80126B58, 0x11); \
|
|
D_80126B30 = 0; \
|
|
func_80174650((s32)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80174B6C() \
|
|
extern void func_80174BBC(void *a0); \
|
|
extern void func_8012A018(s32 a, s32 b); \
|
|
extern void func_8012A0E0(void); \
|
|
extern void func_80174BF4(void *a0); \
|
|
extern u8 D_80126948[]; \
|
|
void func_80174B6C(void) { \
|
|
func_80174BBC(D_80126948); \
|
|
func_8012A018((s32)func_80174BF4, 0); \
|
|
func_8012A0E0(); \
|
|
func_80174BF4(D_80126948); \
|
|
}
|
|
|
|
#define DEFINE_func_80151E78() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern s32 func_80172630(u8 *a0); \
|
|
void func_80151E78(s32 *a0) { \
|
|
u8 *p = (u8 *)a0 + 0xDE; \
|
|
u8 v; \
|
|
func_80149020(a0); \
|
|
v = *p; \
|
|
*p = v + 0xFF; \
|
|
if (v == 0) { \
|
|
*p = 0x10; \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
func_80172630((u8 *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80157CCC() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
void func_80157CCC(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
*(u8 *)(s0 + 0x223) = 0x10; \
|
|
*(s32 *)(s0 + 0x44) = *(s32 *)(s0 + 0x44) & ~2; \
|
|
func_80154A74(s0, 0x11); \
|
|
func_801553C0(s0); \
|
|
func_801553A8((s32 *)s0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016007C() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern u8 D_800B9A17; \
|
|
extern u16 D_801270C0; \
|
|
void func_8016007C(s32 a0) { \
|
|
*(s32 *)(a0 + 0x184) = 0; \
|
|
*(s16 *)(a0 + 0x18A) = 0; \
|
|
*(s16 *)(a0 + 0x188) = 0; \
|
|
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & ~0x10; \
|
|
D_800B9A17 = 1; \
|
|
func_80154A74(a0, 0x11); \
|
|
D_801270C0 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80160FE0() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80160FE0(s32 *a0) { \
|
|
s32 *s0 = a0; \
|
|
func_80149020(a0); \
|
|
if (func_801399F0(*(s32 *)((u8 *)s0 + 0x198)) != 0) { \
|
|
func_80139914(*(s32 *)((u8 *)s0 + 0x198)); \
|
|
*(s32 *)((u8 *)s0 + 0x198) = 0; \
|
|
func_80146CA0(s0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80179D78() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179D78(u16 *a0) { \
|
|
s16 sp[5]; \
|
|
sp[0] = 0x1C; \
|
|
sp[1] = a0[0]; \
|
|
sp[2] = a0[1]; \
|
|
sp[3] = a0[2]; \
|
|
sp[4] = a0[3]; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_801608C0() \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80155440(s32 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_801608C0(s32 *a0) { \
|
|
*(s32 *)((s32)a0 + 0x44) |= 0x41; \
|
|
func_801553A8(a0); \
|
|
func_80155440(a0); \
|
|
func_80154150((s32)a0, 0x24); \
|
|
func_80154A74((s32)a0, 0x1D); \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80162D28() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
void func_80162D28(s32 *a0) { \
|
|
s16 *s0 = (s16 *)a0[8]; \
|
|
s32 s1 = (s32)s0 + 0x34; \
|
|
func_80013F3C(s1); \
|
|
func_800126C4(s1, s0[8]); \
|
|
func_80012558(s1, s0[9]); \
|
|
func_800123F0(s1, s0[10]); \
|
|
}
|
|
|
|
#define DEFINE_func_80162D88() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
void func_80162D88(s32 *a0) { \
|
|
s16 *s0 = (s16 *)a0[8]; \
|
|
s32 s1 = (s32)s0 + 0x34; \
|
|
func_80013F3C(s1); \
|
|
func_80012558(s1, s0[9]); \
|
|
func_800126C4(s1, s0[8]); \
|
|
func_800123F0(s1, s0[10]); \
|
|
}
|
|
|
|
#define DEFINE_func_80162DE8() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
void func_80162DE8(s32 *a0) { \
|
|
s16 *s0 = (s16 *)a0[8]; \
|
|
s32 s1 = (s32)s0 + 0x34; \
|
|
func_80013F3C(s1); \
|
|
func_800123F0(s1, s0[10]); \
|
|
func_800126C4(s1, s0[8]); \
|
|
func_80012558(s1, s0[9]); \
|
|
}
|
|
|
|
#define DEFINE_func_80162E48() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
void func_80162E48(s32 *a0) { \
|
|
s16 *s0 = (s16 *)a0[8]; \
|
|
s32 s1 = (s32)s0 + 0x34; \
|
|
func_80013F3C(s1); \
|
|
func_800123F0(s1, s0[10]); \
|
|
func_80012558(s1, s0[9]); \
|
|
func_800126C4(s1, s0[8]); \
|
|
}
|
|
|
|
#define DEFINE_func_80162EA8() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
void func_80162EA8(s32 *a0) { \
|
|
s16 *s0 = (s16 *)a0[8]; \
|
|
s32 s1 = (s32)s0 + 0x34; \
|
|
func_80013F3C(s1); \
|
|
func_80012558(s1, s0[9]); \
|
|
func_800123F0(s1, s0[10]); \
|
|
func_800126C4(s1, s0[8]); \
|
|
}
|
|
|
|
#define DEFINE_func_80165064() \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_80165124(void *a0); \
|
|
extern void func_801651B8(void *a0); \
|
|
void func_80165064(s32 *a0) { \
|
|
s16 v = *(u16 *)((s32)a0 + 0x62) + 0x10; \
|
|
*(u16 *)((s32)a0 + 0x62) = v; \
|
|
if (v >= 0x100) { \
|
|
*(u16 *)((s32)a0 + 0x62) = 0xFF; \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
func_80165124(a0); \
|
|
func_801651B8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801650C4() \
|
|
extern void func_80162CCC(void); \
|
|
extern void func_80165124(void *a0); \
|
|
extern void func_801651B8(void *a0); \
|
|
void func_801650C4(s32 *a0) { \
|
|
s16 v = *(u16 *)((s32)a0 + 0x62) - 0x10; \
|
|
*(u16 *)((s32)a0 + 0x62) = v; \
|
|
if (v < 0) { \
|
|
func_80162CCC(); \
|
|
} else { \
|
|
func_80165124(a0); \
|
|
func_801651B8(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014C3D0() \
|
|
extern s32 func_8014C59C(void *a0, void *a1); \
|
|
extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); \
|
|
s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3) { \
|
|
s16 v = (s16)func_8014C59C(a0, a1); \
|
|
return func_8014C43C(a0, a1, a2, a3, v); \
|
|
}
|
|
|
|
#define DEFINE_func_80152194() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80147A84(s32 arg0); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern void func_801470B4(s32 a0); \
|
|
extern void func_8015369C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152194(s32 *a0) { \
|
|
u8 v1; \
|
|
func_80149020(a0); \
|
|
func_80147A84((s32)a0); \
|
|
func_801473EC(a0); \
|
|
func_80148038((s32)a0, 0x4000); \
|
|
func_80147460((s32)a0); \
|
|
v1 = *((u8 *)a0 + 0xDE); \
|
|
*((u8 *)a0 + 0xDE) = v1 + 0xFF; \
|
|
if (v1 == 0) { \
|
|
func_801470B4((s32)a0); \
|
|
func_8015369C((s32)a0); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80164CD4() \
|
|
extern s32 func_80164E40(void); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80164CD4(u8 *a0) { \
|
|
u8 *s0 = *(u8 **)(a0 + 0x20); \
|
|
u16 v1; \
|
|
func_80164E40(); \
|
|
v1 = *(u16 *)(a0 + 0x60) + *(u16 *)(a0 + 0x62); \
|
|
*(u16 *)(a0 + 0x60) = v1; \
|
|
*(u16 *)(s0 + 0x1A) = *(u16 *)(s0 + 0x1A) + v1; \
|
|
*(u16 *)(s0 + 0x18) = *(u16 *)(s0 + 0x1A); \
|
|
if (*(s16 *)(a0 + 0x60) < 0) { \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016D464() \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern short func_8016CF04(s32 a0, s32 a1); \
|
|
void func_8016D464(u8 *a0) { \
|
|
u8 *s1 = *(u8 **)(a0 + 0x34); \
|
|
s32 v0; \
|
|
func_800D22E4((s32)a0); \
|
|
func_8016CF04((s32)a0, 1); \
|
|
v0 = *(s32 *)(a0 + 0x1C) - 1; \
|
|
*(s32 *)(a0 + 0x1C) = v0; \
|
|
if (v0 == -1 || *(u16 *)s1 != 1) { \
|
|
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012A0E0() \
|
|
extern void func_8012A100(s8 a0); \
|
|
void func_8012A0E0(void) { \
|
|
func_8012A100(0); \
|
|
}
|
|
|
|
#define DEFINE_func_80150BA4() \
|
|
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_80150BA4(s32 a0) { \
|
|
return func_80151184(a0, 1, 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A220() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_8017A220(void) { \
|
|
s16 v = 0x21; \
|
|
func_80179B74(&v); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A248() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_8017A248(void) { \
|
|
s16 v = 0x22; \
|
|
func_80179B74(&v); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A270() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_8017A270(void) { \
|
|
s16 v = 0xD; \
|
|
func_80179B74(&v); \
|
|
}
|
|
|
|
#define DEFINE_func_801303EC() \
|
|
extern void func_801319E0(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_801303EC(void *a0) { \
|
|
if (*(s32 *)((u8 *)a0 + 0xB4) & 0x10) { \
|
|
func_801319E0((s32)a0); \
|
|
} \
|
|
func_80131CA8((int)a0, 0xC); \
|
|
}
|
|
|
|
#define DEFINE_func_8013767C() \
|
|
extern s32 func_801399A8(void); \
|
|
extern void func_801377B4(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8013767C(s32 a0) { \
|
|
s32 s0 = func_801399A8(); \
|
|
if (s0 != 0) { \
|
|
func_801377B4(a0, 0, s0); \
|
|
} \
|
|
return s0; \
|
|
}
|
|
|
|
#define DEFINE_func_801458E8() \
|
|
extern s32 D_800AE6AC; \
|
|
extern s32 D_800AE6B0; \
|
|
extern s16 D_800B9A0A; \
|
|
extern u8 D_80078E50; \
|
|
extern void func_800D185C(u8 *a0); \
|
|
void func_801458E8(void) { \
|
|
D_800AE6B0 = D_800AE6AC | 0x1000000; \
|
|
func_800D185C(&D_80078E50); \
|
|
D_800B9A0A = 0x3000; \
|
|
}
|
|
|
|
#define DEFINE_func_801516F0() \
|
|
extern void func_8014C8F0(s32 arg0); \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80151780(s32 a0); \
|
|
void func_801516F0(s32 *a0) { \
|
|
func_8014C8F0((s32)a0); \
|
|
*((u8 *)a0 + 0xDE) = (u8)*(u16 *)a0; \
|
|
func_80147078(a0, 0x19); \
|
|
*(s16 *)((u8 *)a0 + 0x2) = 1; \
|
|
func_80151780((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80128D60() \
|
|
extern void func_80018450(s32 a0, s32 a1); \
|
|
extern void func_800183E0(s32 a0); \
|
|
void func_80128D60(s32 a0, s32 *a1, s32 *a2) { \
|
|
a1[0] = (s32)a2; \
|
|
*(s16 *)((u8 *)a1 + 4) = 0; \
|
|
*(s16 *)((u8 *)a1 + 6) = a2[1] & 0x3F; \
|
|
if (a0 != 0) { \
|
|
func_80018450(a0, a2[0]); \
|
|
} else { \
|
|
func_800183E0(a2[0]); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801292C8() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
void func_801292C8(u8 *a0) { \
|
|
u16 *p = *(u16 **)(a0 + 0x20); \
|
|
if (p != 0) { \
|
|
func_80016714(p, (p[0] == 1) ? 0x84 : 0x38); \
|
|
} \
|
|
*(s16 *)a0 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80139954() \
|
|
extern void func_8013A8B0(s32 *a0); \
|
|
extern u16 D_80126A08; \
|
|
extern s16 D_801269F4; \
|
|
extern s32 D_801269F0; \
|
|
extern s32 *D_80126A30; \
|
|
void func_80139954(void) { \
|
|
u16 v = D_80126A08; \
|
|
D_801269F4 = 0; \
|
|
D_801269F0 = 0; \
|
|
if (v != 0) { \
|
|
if (D_80126A30 != 0) { \
|
|
func_8013A8B0(D_80126A30); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80141C50() \
|
|
extern s32 func_80015144(void); \
|
|
extern u16 D_8011511C; \
|
|
extern u16 D_8011511E; \
|
|
s32 func_80141C50(void) { \
|
|
if (D_8011511C != 0x90F) { \
|
|
return 0; \
|
|
} \
|
|
if ((D_8011511E & 0x800) == 0) { \
|
|
return 0; \
|
|
} \
|
|
return func_80015144() != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80143CD4() \
|
|
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); \
|
|
void func_80143CD4(s32 a0) { \
|
|
func_8012C658(0x39, 0, a0); \
|
|
func_8012C658(0x39, 1, a0); \
|
|
func_8012C658(0x39, 2, a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173980() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s16 D_80126B30; \
|
|
void func_80173980(u8 *a0) { \
|
|
if (D_80126B30 == 0) { \
|
|
*(u16 *)(a0 + 0xAC) |= 0x80; \
|
|
*(u16 *)(a0 + 0xAA) |= 0x80; \
|
|
} else { \
|
|
*(u16 *)(a0 + 0xAC) |= 0x10; \
|
|
} \
|
|
func_80171A1C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174F64() \
|
|
extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); \
|
|
void func_80174F64(u8 *a0) { \
|
|
s32 r; \
|
|
u16 *p = (u16 *)(a0 + 0x38); \
|
|
r = func_80175014(a0, *(u8 **)(a0 + 0x34), *p & 0x7FFF); \
|
|
if (r != 0) { \
|
|
*p = *p | 0x8000; \
|
|
} else { \
|
|
*p = *p + 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80174FBC() \
|
|
extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); \
|
|
void func_80174FBC(u8 *a0) { \
|
|
u16 *p = (u16 *)(a0 + 0x38); \
|
|
if ((*p & 0x7FFF) != 0) { \
|
|
func_80175014(a0, *(u8 **)(a0 + 0x34), *p & 0x7FFF); \
|
|
*p = *p - 1; \
|
|
} else { \
|
|
*p = *p | 0x8000; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012F214() \
|
|
extern void func_8004914C(void *a0); \
|
|
extern void func_800491AC(void *a0); \
|
|
extern void RotTransSV(s32 a0, s32 a1, void *a2); \
|
|
void func_8012F214(s32 a0, s32 a1, s32 a2) { \
|
|
s32 *p = (s32 *)(*(s32 *)(a0 + 0x20) + 0x34); \
|
|
s32 buf[2]; \
|
|
func_8004914C(p); \
|
|
func_800491AC(p); \
|
|
RotTransSV(a1, a2, buf); \
|
|
}
|
|
|
|
#define DEFINE_func_801428CC() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_80142D38(s32 *a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
void func_801428CC(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
} else if (func_80142D38(a0) == 1) { \
|
|
func_80142BB4(a0, 0, 3); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80142FFC() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_80142D38(s32 *a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
void func_80142FFC(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
} else if (func_80142D38(a0) == 1) { \
|
|
func_80142BB4(a0, 0, 3); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80143188() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_80142D38(s32 *a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
void func_80143188(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
} else if (func_80142D38(a0) == 1) { \
|
|
func_80142BB4(a0, 0, 3); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80143390() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_80142D38(s32 *a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
void func_80143390(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
} else if (func_80142D38(a0) == 1) { \
|
|
func_80142BB4(a0, 0, 3); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80147478() \
|
|
extern void func_80147514(); \
|
|
extern void func_80147628(s32 a0); \
|
|
void func_80147478(s32 a0) { \
|
|
if ((*(s32 *)(a0 + 0x44) & 0x40000000) == 0) { \
|
|
func_80147514(); \
|
|
func_80147628(a0); \
|
|
*(s32 *)(a0 + 0x44) |= 0x40000000; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014A380() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
void func_8014A380(s32 a0, s32 a1) { \
|
|
s16 buf[4]; \
|
|
func_80015978(a0 + 4, (s32 *)buf); \
|
|
buf[3] = 0; \
|
|
func_8014C4AC(a1, 0x1F, 0, buf, *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)); \
|
|
}
|
|
|
|
#define DEFINE_func_8017C908() \
|
|
extern void ReadGeomOffset(s32 *a0, s32 *a1); \
|
|
extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); \
|
|
extern void func_8004921C(s32 a0, s32 a1); \
|
|
void func_8017C908(s32 a0, s32 a1) { \
|
|
s32 ofx; \
|
|
s32 ofy; \
|
|
s32 sxy; \
|
|
s32 p; \
|
|
ReadGeomOffset(&ofx, &ofy); \
|
|
func_8004921C(0, 0); \
|
|
RotTransPers(a0, a1, &sxy, &p); \
|
|
func_8004921C(ofx, ofy); \
|
|
}
|
|
|
|
#define DEFINE_func_80130740() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80130740(void *a0, u16 *a1) { \
|
|
u16 *p = (u16 *)a0; \
|
|
func_80146A6C(0x10, a0, \
|
|
(s16)(p[3] + a1[0]), \
|
|
(s16)(p[5] + a1[1]), \
|
|
(s16)(p[7] + a1[2]), \
|
|
0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160BB4() \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80155440(s32 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80160BB4(s32 *a0) { \
|
|
s32 *v1; \
|
|
a0[0x44 / 4] |= 0x80; \
|
|
func_801553A8(a0); \
|
|
func_80155440(a0); \
|
|
func_80154150((s32)a0, 0x26); \
|
|
func_80154A74((s32)a0, 0x1E); \
|
|
v1 = (s32 *)a0[0x20 / 4]; \
|
|
a0[0x234 / 4] = 0; \
|
|
*(s16 *)((u8 *)v1 + 0x10) = 0xFE9; \
|
|
a0[0x238 / 4] = 0; \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801628F4() \
|
|
extern void func_80162968(s32 a0); \
|
|
void func_801628F4(s32 *a0) { \
|
|
s16 *a2 = (s16 *)a0[0x4 / 4]; \
|
|
s32 *a1 = (s32 *)a0[0x8 / 4]; \
|
|
if (*(s16 *)((u8 *)a2 + 0x7E) != 0) { \
|
|
a1[0x4 / 4] |= 0x80000000; \
|
|
} else { \
|
|
a1[0x4 / 4] &= 0x7FFFFFFF; \
|
|
} \
|
|
a0[0x20 / 4] = *(s16 *)((u8 *)a2 + 0x78); \
|
|
a0[0x24 / 4] = *(s16 *)((u8 *)a2 + 0x7A); \
|
|
a0[0x28 / 4] = *(s16 *)((u8 *)a2 + 0x7C); \
|
|
func_80162968((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F398() \
|
|
extern void func_80029124(s32, s32); \
|
|
void func_8016F398(void) { \
|
|
func_80029124(0x125, 0); \
|
|
func_80029124(0x126, 0); \
|
|
func_80029124(0x127, 0); \
|
|
func_80029124(0x128, 0); \
|
|
func_80029124(0x129, 0); \
|
|
func_80029124(0x12A, 0); \
|
|
func_80029124(0x12B, 0); \
|
|
func_80029124(0x12C, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172414() \
|
|
extern void func_80161C24(s32, s32); \
|
|
extern void func_8014C010(s32 a0, s32 a1); \
|
|
extern u16 D_800B99DA; \
|
|
void func_80172414(s32 a0) { \
|
|
if (*(u16 *)(a0 + 0xB8) & 0x2000) { \
|
|
func_80161C24(a0, *(u16 *)(a0 + 0x16E)); \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x2C) < (s32)0xFFF90000) { \
|
|
if ((D_800B99DA & 7) == 0) { \
|
|
func_8014C010(a0, 2); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80131AC8() \
|
|
extern s32 func_80131CF4(s32 a0); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
s32 func_80131AC8(void *a0) { \
|
|
s32 s0 = func_80131CF4(*(s32 *)((u8 *)a0 + 0xBC)) & 0xFFFF; \
|
|
if (s0 != 0) { \
|
|
func_8002D4C8(s0, 0); \
|
|
return s0; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014A454() \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
s32 func_8014A454(s32 a0) { \
|
|
s32 v0; \
|
|
if (*(u16 *)(a0 + 0x3C) & 0x4000) { \
|
|
v0 = (s16)func_80012A60(*(s16 *)(a0 + 0x42), \
|
|
(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x800) & 0xFFF); \
|
|
if (v0 < 0x2AA) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801426D4() \
|
|
extern s32 func_8012AD50(void *a0); \
|
|
void func_801426D4(s32 a0) { \
|
|
s32 s0 = *(s32 *)(a0 + 0x20); \
|
|
s16 fc = *(s16 *)(a0 + 0xFC); \
|
|
if (fc != 0) { \
|
|
*(s16 *)(a0 + 0xFC) = fc - 0x10; \
|
|
*(u16 *)(s0 + 0x18) += 0x800; \
|
|
*(u16 *)(s0 + 0x1A) += 0x800; \
|
|
} else { \
|
|
*(s32 *)(a0 + 0x1C) = 0xC; \
|
|
func_8012AD50((void *)a0); \
|
|
*(u16 *)(s0 + 0x1A) = 0x1800; \
|
|
*(u16 *)(s0 + 0x18) = 0x1800; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80146F58() \
|
|
extern s16 func_8012A68C(void); \
|
|
extern s16 func_8012A758(void); \
|
|
extern void func_8004978C(s16 *a0, void *a1); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
void func_80146F58(s32 a0, s32 a1) { \
|
|
s16 vec[3]; \
|
|
u8 mat[0x20]; \
|
|
vec[0] = func_8012A68C(); \
|
|
vec[1] = func_8012A758(); \
|
|
vec[2] = 0; \
|
|
func_8004978C(vec, mat); \
|
|
ApplyMatrixSV(mat, (void *)a0, (void *)a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80147718() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
void func_80147718(s32 a0) { \
|
|
s32 s1 = *(s32 *)(a0 + 0x20); \
|
|
s32 s0 = s1 + 0x34; \
|
|
func_80013F3C(s0); \
|
|
func_800126C4(s0, *(s16 *)(s1 + 0x10)); \
|
|
func_80012558(s0, *(s16 *)(s1 + 0x12)); \
|
|
func_800123F0(s0, *(s16 *)(s1 + 0x14)); \
|
|
*(u16 *)(s1 + 0x2C) |= 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801478B8() \
|
|
extern void func_80147948(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_801479BC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80147A30(s32 a0, s32 a1, s32 a2); \
|
|
void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
func_80147948(a0, a1, 0x7FFFFFFF); \
|
|
func_801479BC(a0, a2, 0x7FFFFFFF); \
|
|
func_80147A30(a0, a3, 0x7FFFFFFF); \
|
|
}
|
|
|
|
#define DEFINE_func_80147CC8() \
|
|
extern void func_80147928(int a0, int a1); \
|
|
extern void func_8014799C(int a0, int a1); \
|
|
extern void func_80147A10(int a0, int a1); \
|
|
extern void func_80147DC0(s32 a0, s32 a1); \
|
|
void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) { \
|
|
func_80147928(a0, a1); \
|
|
func_8014799C(a0, a2); \
|
|
func_80147A10(a0, a3); \
|
|
func_80147DC0(a0, a4); \
|
|
}
|
|
|
|
#define DEFINE_func_80155B9C() \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern s32 D_800D4DB4; \
|
|
void func_80155B9C(s32 a0) { \
|
|
*(s32 *)(a0 + 0x44) |= 2; \
|
|
func_80148038(a0, 0x30000); \
|
|
func_80147460(a0); \
|
|
if (*(s32 *)(a0 + 0x34) >= 0) { \
|
|
func_80154274((s32 *)a0, (s32)&D_800D4DB4); \
|
|
func_80146CA0((void *)a0); \
|
|
func_80147324(0x447); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80164DD0() \
|
|
extern void func_80148534(s32 a0, s32 a1); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern void func_80149374(s32 a0, s32 a1); \
|
|
void func_80164DD0(s32 a0) { \
|
|
s32 sp10[2]; \
|
|
s32 sp18[2]; \
|
|
s32 s2 = *(s32 *)(a0 + 0x4C); \
|
|
func_80148534((s32)sp10, (s32)sp18); \
|
|
func_80015954((s32)sp10, a0 + 4); \
|
|
func_80149374(s2, a0 + 4); \
|
|
*(s16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xA) - 0x40; \
|
|
}
|
|
|
|
#define DEFINE_func_8012F7B4() \
|
|
extern s32 func_8012BEE8(s32); \
|
|
extern s32 func_80131A34(s32, s32); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012F7B4(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 4) { \
|
|
func_8012BEE8(a0); \
|
|
if (*(s32 *)(a0 + 0x1C) == 1) { \
|
|
if (func_80131A34(a0, 8) == 0) { \
|
|
func_80131A34(a0, 0x20); \
|
|
} \
|
|
} \
|
|
} \
|
|
func_80131CA8(a0, 7); \
|
|
}
|
|
|
|
#define DEFINE_func_80154218() \
|
|
extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80154418(void *a0); \
|
|
void func_80154218(u8 *a0, s32 a1, s32 a2) { \
|
|
u8 *s0 = a0; \
|
|
s32 *base = *(s32 **)(s0 + 0xB0); \
|
|
s32 v1 = base[a1]; \
|
|
*(u16 *)(s0 + 0xBA) = 1; \
|
|
*(u16 *)(s0 + 0xB8) = 1; \
|
|
*(s8 *)(s0 + 0xBC) = a2; \
|
|
*(s8 *)(s0 + 0xBD) = a2; \
|
|
*(s32 *)(s0 + 0xB4) = v1; \
|
|
s0[0xDC] = func_801549F8((s32)a0, (s32)&base[a1], a2); \
|
|
func_80154418(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012F1A4() \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
void func_8012F1A4(s32 *a0, s32 a1, s32 *a2) { \
|
|
func_800484EC((s32)a0, a1, (s32)a2); \
|
|
a2[0] += a0[0x14 / 4] << 16; \
|
|
a2[1] += a0[0x18 / 4] << 16; \
|
|
a2[2] += a0[0x1C / 4] << 16; \
|
|
}
|
|
|
|
#define DEFINE_func_8012FC30() \
|
|
extern void func_80131B14(); \
|
|
extern void func_8012B23C(s32 a0); \
|
|
extern s32 func_80131A34(s32, s32); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012FC30(s32 a0) { \
|
|
*(s8 *)(a0 + 0xC1) = 0xA; \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x400) { \
|
|
func_80131B14(); \
|
|
*(s8 *)(a0 + 0xC2) = 0; \
|
|
*(u16 *)(a0 + 0x98) = 0; \
|
|
func_8012B23C(a0); \
|
|
func_80131A34(a0, 8); \
|
|
func_8002D4C8(0xA74, 0); \
|
|
} \
|
|
func_80131CA8(a0, 0x1A); \
|
|
}
|
|
|
|
#define DEFINE_func_801746DC() \
|
|
extern void func_8016EE94(); \
|
|
extern void func_80174684(void *); \
|
|
extern void func_80172710(void); \
|
|
extern s32 func_80172760(s32 a0); \
|
|
void func_801746DC(void) { \
|
|
func_8016EE94((s32)func_80172710, 0x1000000); \
|
|
func_80174684((void *)func_80172760); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B8A4() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern u16 D_80126B66; \
|
|
extern u16 D_80126B5E; \
|
|
s32 func_8012B8A4(s16 *a0) { \
|
|
s16 cx = a0[7]; \
|
|
s16 dx = D_80126B66; \
|
|
s16 dy = D_80126B5E; \
|
|
s16 cy = a0[3]; \
|
|
return (ratan2(cx - dx, dy - cy) - 0x400) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80160B70() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_80160BB4(s32 *a0); \
|
|
void func_80160B70(s32 a0) { \
|
|
if (func_80161104()) { \
|
|
func_80160BB4(a0); \
|
|
} else { \
|
|
*(s32 *)(a0 + 0x1AC) = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016F4FC() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern void func_800D1724(s32 a0); \
|
|
extern void func_80171928(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_8016F4FC(void *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_800D1724(D_8011F738); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801702B8() \
|
|
extern s16 func_80171AB0(s32 a0, void *a1); \
|
|
extern void func_80171928(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_801702B8(s32 a0) { \
|
|
if (func_80171AB0(a0, &D_8011F738) == 0) { \
|
|
func_80171928((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80132EF4() \
|
|
extern u8 *func_8012913C(s32 a0); \
|
|
extern void func_80129350(s32 a0, s32 a1); \
|
|
s32 func_80132EF4(s32 a0, s32 a1) { \
|
|
s32 s0 = func_8012913C(a1 & 0xFFFF); \
|
|
if (s0 != 0) { \
|
|
func_80129350(s0, a0); \
|
|
} \
|
|
return s0; \
|
|
}
|
|
|
|
#define DEFINE_func_801484E8() \
|
|
extern s32 func_80154358(void *a0); \
|
|
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 D_80126B58; \
|
|
void func_801484E8(s32 a0, s32 a1) { \
|
|
s32 v0 = func_80154358(&D_80126B58); \
|
|
func_801485B8(v0 - 0x10, a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_8014856C() \
|
|
extern s32 func_80154358(void *a0); \
|
|
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 D_80126B58; \
|
|
void func_8014856C(s32 a0, s32 a1) { \
|
|
s32 v0 = func_80154358(&D_80126B58); \
|
|
func_801485B8(v0 - 0x8, a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80150C48() \
|
|
extern s32 func_80150480(s32 a0); \
|
|
extern s32 D_800AE6B0; \
|
|
extern u16 D_800AE6DC; \
|
|
void func_80150C48(s32 a0) { \
|
|
if (func_80150480(a0) != 0) { \
|
|
s32 p = *(s32 *)(a0 + 0x1A4); \
|
|
D_800AE6B0 = *(s32 *)(p + 0xDC); \
|
|
p = *(s32 *)(a0 + 0x1A4); \
|
|
D_800AE6DC = *(u16 *)(p + 0xFC); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801291C0() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern s16 D_8011DB30; \
|
|
u8 *func_801291C0(void) { \
|
|
u8 *p = (u8 *)&D_8011DB30; \
|
|
s32 i = 0; \
|
|
loop: \
|
|
if (*(u16 *)p == 0) { \
|
|
func_80016714(p, 0x38); \
|
|
return p; \
|
|
} \
|
|
if (++i < 0x80) { \
|
|
p += 0x38; \
|
|
goto loop; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80173648() \
|
|
extern s32 func_80171CC4(void *a0, void *a1); \
|
|
extern s32 func_80172664(s32 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
extern s16 D_80126B3E; \
|
|
void func_80173648(u8 *a0) { \
|
|
u8 *s0 = a0; \
|
|
s16 *p = &D_80126B3E; \
|
|
if (*p != 0) { \
|
|
func_80171CC4(s0, (u8 *)p - 6); \
|
|
} \
|
|
if (func_80172664((s32 *)s0) == 0) { \
|
|
func_80171A1C(s0); \
|
|
func_80174650((s32)s0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80160F70() \
|
|
extern s32 func_80146E98(s32 a0); \
|
|
extern void func_800D0F4C(s32 a0); \
|
|
extern void func_8014BB24(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_8014BD24(s32 a0, s32 a1); \
|
|
extern s32 func_8013767C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_80110EC0; \
|
|
void func_80160F70(s32 a0) { \
|
|
if (func_80146E98(a0) != 0) { \
|
|
func_800D0F4C(0xA); \
|
|
func_8014BB24(a0, 0x96, 0); \
|
|
func_8014BD24(a0, 0x96); \
|
|
*(s32 *)(a0 + 0x198) = func_8013767C(&D_80110EC0); \
|
|
func_80146CA0((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80168A14() \
|
|
extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80168A14(s32 *a0) { \
|
|
func_80168BDC((s32)a0, 8, 1, 2); \
|
|
func_80146A6C(3, (s32)a0, \
|
|
*(s16 *)((u8 *)a0 + 0x6), \
|
|
*(s16 *)((u8 *)a0 + 0xA), \
|
|
*(s16 *)((u8 *)a0 + 0xE), \
|
|
-5, 0xC0009C00); \
|
|
*(u16 *)((u8 *)a0 + 0x2) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014462C() \
|
|
extern void func_8012AD80(s32 a0); \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern void func_8012C218(void *a0); \
|
|
void func_8014462C(u8 *a0) { \
|
|
u8 *s1 = *(u8 **)(a0 + 0xCC); \
|
|
func_8012AD80((s32)a0); \
|
|
*(u16 *)(s1 + 8) = *(u16 *)(a0 + 6); \
|
|
*(u16 *)(s1 + 0xA) = *(u16 *)(a0 + 0xA); \
|
|
*(u16 *)(s1 + 0xC) = *(u16 *)(a0 + 0xE); \
|
|
if (func_80128ED8(s1, a0 + 0xD0)) { \
|
|
func_80016714(s1, 0x38); \
|
|
func_8012C218(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152254() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_80153800(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_801522CC(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
void func_80152254(s32 *a0) { \
|
|
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
|
|
volatile s32 pad[4]; \
|
|
func_80149020(a0); \
|
|
if (func_80153800((s32)a0) == 0) { \
|
|
*(u16 *)((u8 *)a0 + 0x4) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x8) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0xC) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
|
|
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
|
|
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
|
|
func_80146D90((s32)a0); \
|
|
func_801522CC((s32)a0); \
|
|
func_80159B3C((s32)a0); \
|
|
func_80165718((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152A50() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_80153800(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_80152AC8(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
void func_80152A50(s32 *a0) { \
|
|
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
|
|
volatile s32 pad[4]; \
|
|
func_80149020(a0); \
|
|
if (func_80153800((s32)a0) == 0) { \
|
|
*(u16 *)((u8 *)a0 + 0x4) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x8) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0xC) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
|
|
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
|
|
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
|
|
func_80146D90((s32)a0); \
|
|
func_80152AC8((s32)a0); \
|
|
func_80159B3C((s32)a0); \
|
|
func_80165718((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152F44() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_80153800(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_80152FBC(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
void func_80152F44(s32 *a0) { \
|
|
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
|
|
volatile s32 pad[4]; \
|
|
func_80149020(a0); \
|
|
if (func_80153800((s32)a0) == 0) { \
|
|
*(u16 *)((u8 *)a0 + 0x4) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x8) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0xC) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
|
|
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
|
|
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
|
|
func_80146D90((s32)a0); \
|
|
func_80152FBC((s32)a0); \
|
|
func_80159B3C((s32)a0); \
|
|
func_80165718((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80153204() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_80153800(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_8015327C(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
void func_80153204(s32 *a0) { \
|
|
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
|
|
volatile s32 pad[4]; \
|
|
func_80149020(a0); \
|
|
if (func_80153800((s32)a0) == 0) { \
|
|
*(u16 *)((u8 *)a0 + 0x4) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x8) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0xC) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
|
|
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
|
|
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
|
|
func_80146D90((s32)a0); \
|
|
func_8015327C((s32)a0); \
|
|
func_80159B3C((s32)a0); \
|
|
func_80165718((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801534D8() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_80153800(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_80153550(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
void func_801534D8(s32 *a0) { \
|
|
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
|
|
volatile s32 pad[4]; \
|
|
func_80149020(a0); \
|
|
if (func_80153800((s32)a0) == 0) { \
|
|
*(u16 *)((u8 *)a0 + 0x4) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x8) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0xC) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
|
|
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
|
|
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
|
|
func_80146D90((s32)a0); \
|
|
func_80153550((s32)a0); \
|
|
func_80159B3C((s32)a0); \
|
|
func_80165718((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017AE08() \
|
|
extern s16 func_80174764(void); \
|
|
s32 func_8017AE08(void) { \
|
|
return ((s32 (*)(void))func_80174764)() == 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012CBF4() \
|
|
extern u8 D_800D3918[]; \
|
|
extern void func_8012CC88(s32 a, s32 b, s32 c); \
|
|
void func_8012CBF4(s32 a0) { \
|
|
func_8012CC88(a0, 0x11, (s32)D_800D3918); \
|
|
}
|
|
|
|
#define DEFINE_func_80144A68() \
|
|
extern void func_8012AD44(s32 *a0, s16 a1); \
|
|
void func_80144A68(s32 *a0) { \
|
|
*(s16 *)a0 = 0xC6; \
|
|
func_8012AD44(a0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B12C() \
|
|
extern s32 D_80126B58; \
|
|
extern s32 func_8014B154(s32 *a0); \
|
|
void func_8014B12C(void) { \
|
|
func_8014B154(&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B2A8() \
|
|
extern s32 D_80126B58; \
|
|
extern void func_8014B2F8(void); \
|
|
void func_8014B2A8(void) { \
|
|
((void (*)(s32 *))func_8014B2F8)(&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B2D0() \
|
|
extern s32 D_80126B58; \
|
|
extern void func_8014B310(void); \
|
|
void func_8014B2D0(void) { \
|
|
((void (*)(s32 *))func_8014B310)(&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80156648() \
|
|
extern void func_80156A14(s32 *a0); \
|
|
void func_80156648(s32 *a0) { \
|
|
*((u8 *)a0 + 0x1A8) = 0; \
|
|
*((u8 *)a0 + 0x1A9) = 0; \
|
|
*((u8 *)a0 + 0x1C0) = 0; \
|
|
func_80156A14(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172560() \
|
|
extern s32 func_80013450(s32); \
|
|
s32 func_80172560(u8 *a0, u8 *a1) { \
|
|
*(s16 *)(a1 + 2) = *(u16 *)(a0 + 0xA); \
|
|
return func_80013450((s32)(a0 + 4)) < 0x10; \
|
|
}
|
|
|
|
#define DEFINE_func_8014AD7C() \
|
|
extern s32 D_80126B58; \
|
|
extern void func_8014ADA8(s32 a0, s32 a1); \
|
|
void func_8014AD7C(s32 a0) { \
|
|
func_8014ADA8((s32)&D_80126B58, a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80146DB8() \
|
|
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80146DB8(s32 *a0, s32 *a1) { \
|
|
func_80146DE8(a0, a1[0], a1[1], a1[2]); \
|
|
}
|
|
|
|
#define DEFINE_func_80154B4C() \
|
|
extern void func_80154B7C(u8 *a0, s32 a1); \
|
|
void func_80154B4C(u8 *a0, s32 a1) { \
|
|
if (*(s32 *)(a0 + 0xD0) != a1) { \
|
|
func_80154B7C(a0, a1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80154B98() \
|
|
extern void func_80154BC8(void *a0, s32 a1, s32 a2); \
|
|
void func_80154B98(void *a0, s32 a1, s32 a2) { \
|
|
if (*(s32 *)((s32)a0 + 0xD0) != a1) { \
|
|
func_80154BC8(a0, a1, a2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80158AB4() \
|
|
extern void func_80158AE4(void *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80158AB4(void *a0) { \
|
|
func_80158AE4(a0); \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016EF78() \
|
|
extern s32 func_8016EFC8(s32); \
|
|
extern void func_801726D0(void *a0); \
|
|
extern s32 D_80126B58; \
|
|
void func_8016EF78(s32 a0) { \
|
|
func_8016EFC8(a0); \
|
|
func_801726D0(&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F5B0() \
|
|
extern void func_8014706C(void *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F5B0(void *a0) { \
|
|
func_8014706C(a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F5E0() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F5E0(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F7D4() \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016F804(void *a0); \
|
|
void func_8016F7D4(u8 *a0) { \
|
|
func_80171990(a0); \
|
|
func_8016F804(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017041C() \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8017044C(u8 *a0); \
|
|
void func_8017041C(u8 *a0) { \
|
|
func_80171990(a0); \
|
|
func_8017044C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801704EC() \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8017051C(void *a0); \
|
|
void func_801704EC(u8 *a0) { \
|
|
func_80171990(a0); \
|
|
func_8017051C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801706E8() \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170718(void *a0); \
|
|
void func_801706E8(u8 *a0) { \
|
|
func_80171990(a0); \
|
|
func_80170718(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170C44() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80170C44(u8 *a0) { \
|
|
func_80147060(a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80150F80() \
|
|
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
|
|
extern u8 D_80078EC1; \
|
|
void func_80150F80(s32 a0) { \
|
|
if (D_80078EC1 != 0xC) { \
|
|
func_80151184(a0, 0xC007, 0x20); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80155518() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_801555F4(void *a0); \
|
|
void func_80155518(s32 *a0) { \
|
|
func_80147078(a0, 5); \
|
|
func_801555F4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015554C() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80155580(void *a0); \
|
|
void func_8015554C(s32 *a0) { \
|
|
func_80147078(a0, 5); \
|
|
func_80155580(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801574DC() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_801575E4(void *a0); \
|
|
void func_801574DC(s32 *a0) { \
|
|
func_80147078(a0, 6); \
|
|
func_801575E4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80157510() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80157544(void *a0); \
|
|
void func_80157510(s32 *a0) { \
|
|
func_80147078(a0, 6); \
|
|
func_80157544(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015A230() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015A264(void *a0); \
|
|
void func_8015A230(s32 *a0) { \
|
|
func_80147078(a0, 0x1); \
|
|
func_8015A264(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BF7C() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015BFF4(void *a0); \
|
|
void func_8015BF7C(s32 *a0) { \
|
|
func_80147078(a0, 0x4); \
|
|
func_8015BFF4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015C6E0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015C714(void *a0); \
|
|
void func_8015C6E0(s32 *a0) { \
|
|
func_80147078(a0, 0x9); \
|
|
func_8015C714(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015CC40() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015CC74(s32 *a0); \
|
|
void func_8015CC40(s32 *a0) { \
|
|
func_80147078(a0, 0xB); \
|
|
func_8015CC74(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015CF8C() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015CFC0(s32 *a0); \
|
|
void func_8015CF8C(s32 *a0) { \
|
|
func_80147078(a0, 0xC); \
|
|
func_8015CFC0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DA5C() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern int func_8015E0D4(int); \
|
|
void func_8015DA5C(s32 a0) { \
|
|
func_80154A74(a0, 0x11); \
|
|
func_8015E0D4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DAC4() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015DAF8(s32 *a0); \
|
|
void func_8015DAC4(s32 *a0) { \
|
|
func_80147078(a0, 0xE); \
|
|
func_8015DAF8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DE24() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015DE58(s32 *a0); \
|
|
void func_8015DE24(s32 *a0) { \
|
|
func_80147078(a0, 0xF); \
|
|
func_8015DE58(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E880() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015E8E8(s32 *a0); \
|
|
void func_8015E880(s32 *a0) { \
|
|
func_80147078(a0, 0x11); \
|
|
func_8015E8E8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E8B4() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015E9B8(s32 *a0); \
|
|
void func_8015E8B4(s32 *a0) { \
|
|
func_80147078(a0, 0x11); \
|
|
func_8015E9B8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015EFD8() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015F00C(s32 *a0); \
|
|
void func_8015EFD8(s32 *a0) { \
|
|
func_80147078(a0, 0x13); \
|
|
func_8015F00C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F2BC() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015F380(); \
|
|
void func_8015F2BC(s32 *a0) { \
|
|
func_80147078(a0, 0x14); \
|
|
func_8015F380(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160E3C() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80160F00(); \
|
|
void func_80160E3C(s32 *a0) { \
|
|
func_80147078(a0, 0x1E); \
|
|
func_80160F00(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160E70() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80160EA4(); \
|
|
void func_80160E70(s32 *a0) { \
|
|
func_80147078(a0, 0x1E); \
|
|
func_80160EA4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80165624() \
|
|
extern u8 func_80165658(s32 a0, s32 a1); \
|
|
extern u8 D_80078EC1; \
|
|
extern s16 D_80078EB8; \
|
|
s32 func_80165624(s32 a0) { \
|
|
return (u32)(u16)D_80078EB8 < (u32)(func_80165658(a0, D_80078EC1 & 0x7F) & 0x7F); \
|
|
}
|
|
|
|
#define DEFINE_func_8016B3F4() \
|
|
extern s32 func_8016B448(s32, s32); \
|
|
extern s32 func_8016BA48(s32 a0); \
|
|
void func_8016B3F4(s32 a0) { \
|
|
func_8016B448(a0, 1); \
|
|
func_8016BA48(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F764() \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F764(void *a0) { \
|
|
s32 v0 = *(s32 *)((u8 *)a0 + 0x200) - 1; \
|
|
*(s32 *)((u8 *)a0 + 0x200) = v0; \
|
|
if (v0 == -1) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016FFA8() \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
void func_8016FFA8(u8 *a0) { \
|
|
*(u16 *)(a0 + 0xAC) |= 0x40; \
|
|
*(u16 *)(a0 + 0xAA) |= 0x40; \
|
|
func_80171990(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801735B8() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
void func_801735B8(u8 *a0) { \
|
|
*(u16 *)(a0 + 0xAC) |= 0x40; \
|
|
*(u16 *)(a0 + 0xAA) |= 0x40; \
|
|
func_80171A1C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80175150() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80175184(); \
|
|
void func_80175150(s32 *a0) { \
|
|
func_80147078(a0, 0x8); \
|
|
func_80175184(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A8B0() \
|
|
extern void func_8012AAAC(void); \
|
|
void func_8012A8B0(u8 *a0, s32 a1) { \
|
|
u16 v0 = *(u16 *)(a0 + 0x72); \
|
|
*(s32 *)(a0 + 0x90) = a1; \
|
|
*(s32 *)(a0 + 0x94) = 0; \
|
|
*(s32 *)(a0 + 0x9C) = 0; \
|
|
*(s16 *)(a0 + 0x9A) = 0; \
|
|
*(u16 *)(a0 + 0x72) = v0 & 0xF9FF; \
|
|
func_8012AAAC(); \
|
|
}
|
|
|
|
#define DEFINE_func_80151038() \
|
|
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
|
|
extern s16 currentLocationId; \
|
|
void func_80151038(s32 a0) { \
|
|
s32 a2 = 0x18; \
|
|
if (currentLocationId == 0x30A0) { \
|
|
a2 = 0x30; \
|
|
} \
|
|
func_80151184(a0, 0xC00C, a2); \
|
|
}
|
|
|
|
#define DEFINE_func_801555BC() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_801555F4(void *); \
|
|
void func_801555BC(void *a0) { \
|
|
if (func_80161104()) { \
|
|
func_801555F4(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80157E00() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_80157E38(void *); \
|
|
void func_80157E00(void *a0) { \
|
|
if (func_80161104()) { \
|
|
func_80157E38(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80158000() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_80158038(void *); \
|
|
void func_80158000(void *a0) { \
|
|
if (func_80161104()) { \
|
|
func_80158038(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80158288() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_801582C0(void *); \
|
|
void func_80158288(void *a0) { \
|
|
if (func_80161104()) { \
|
|
func_801582C0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80159BAC() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_80159BE4(s32); \
|
|
void func_80159BAC(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_80159BE4(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015A2A0() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015A2D8(s32); \
|
|
void func_8015A2A0(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015A2D8(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015AD78() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015ADB0(s32); \
|
|
void func_8015AD78(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015ADB0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015C08C() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015C0C4(s32); \
|
|
void func_8015C08C(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015C0C4(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015C750() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015C788(s32); \
|
|
void func_8015C750(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015C788(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015CB94() \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015CB94(s32 a0) { \
|
|
*(s32 *)(a0 + 0x170) = 0; \
|
|
func_801553C0(a0); \
|
|
func_80154A74(a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8015D544() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015D57C(s32); \
|
|
void func_8015D544(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015D57C(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015DB34() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015DB6C(s32); \
|
|
void func_8015DB34(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015DB6C(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015DE94() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015DECC(s32); \
|
|
void func_8015DE94(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015DECC(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015E1F4() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015E22C(s32); \
|
|
void func_8015E1F4(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015E22C(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015E924() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015E95C(s32); \
|
|
void func_8015E924(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015E95C(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015EE44() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015EE7C(s32); \
|
|
void func_8015EE44(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015EE7C(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015F048() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015F080(s32); \
|
|
void func_8015F048(s32 a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015F080(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015F810() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_8015F848(s32 *a0); \
|
|
void func_8015F810(s32 *a0) { \
|
|
if (func_80161104() != 0) { \
|
|
func_8015F848(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80160174() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_801601AC(s32 *a0); \
|
|
void func_80160174(s32 *a0) { \
|
|
if (func_80161104()) { \
|
|
func_801601AC(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801601AC() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80146C98(s32 *a0, s16 a1); \
|
|
void func_801601AC(s32 *a0) { \
|
|
func_80154150((s32)a0, 0x21); \
|
|
func_80146C98(a0, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_801603D8() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_80160410(s32 *a0); \
|
|
void func_801603D8(s32 *a0) { \
|
|
if (func_80161104()) { \
|
|
func_80160410(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80160888() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_801608C0(s32 *a0); \
|
|
void func_80160888(s32 *a0) { \
|
|
if (func_80161104()) { \
|
|
func_801608C0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016533C() \
|
|
extern u8 D_80078EC1; \
|
|
extern s32 D_80126B58; \
|
|
extern u8 D_80126CF8; \
|
|
extern s32 func_801659DC(u8 *a0); \
|
|
void func_8016533C(void) { \
|
|
D_80126CF8 = D_80078EC1; \
|
|
func_801659DC((u8 *)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F578() \
|
|
extern void func_80147084(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F578(s32 *a0) { \
|
|
func_80147084(a0); \
|
|
func_801472B4(a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F610() \
|
|
extern void func_8016F288(void); \
|
|
extern void func_80148634(void *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F610(void *a0) { \
|
|
func_8016F288(); \
|
|
func_80148634(a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F648() \
|
|
extern void func_8016F264(void); \
|
|
extern void func_80148634(void *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F648(void *a0) { \
|
|
func_8016F264(); \
|
|
func_80148634(a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F8AC() \
|
|
extern void *D_8011F738; \
|
|
extern void func_80172358(u8 *a0, u8 *a1); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F8AC(u8 *a0) { \
|
|
func_80172358(a0, (u8 *)&D_8011F738); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FD7C() \
|
|
extern s32 func_80172658(s32 *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016FD7C(s32 *a0) { \
|
|
if (func_80172658(a0)) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801439C0() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern void func_8012C218(void *a0); \
|
|
void func_801439C0(u8 *a0) { \
|
|
if (a0 != 0) { \
|
|
func_80016714(*(void **)(a0 + 0xCC), 0x38); \
|
|
func_8012C218(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80150FD8() \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u16 D_800B99DA; \
|
|
void func_80150FD8(s32 a0) { \
|
|
if (D_800B99DA & 7) { \
|
|
func_80146994(0x34, a0, 0, 0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80164270() \
|
|
extern void func_80162D88(s32 *a0); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80164270(s32 *a0) { \
|
|
s32 *s = a0; \
|
|
func_80162D88(s); \
|
|
func_80146E90(s, 0x20); \
|
|
func_80146CA0(s); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F870() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016F8AC(u8 *a0); \
|
|
void func_8016F870(u8 *a0) { \
|
|
func_801719A4((int)a0, 2); \
|
|
func_80171990(a0); \
|
|
func_8016F8AC(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F920() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016F95C(void *a0); \
|
|
void func_8016F920(u8 *a0) { \
|
|
func_801719A4((int)a0, 2); \
|
|
func_80171990(a0); \
|
|
func_8016F95C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FCCC() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016FD08(u8 *a0); \
|
|
void func_8016FCCC(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_8016FD08(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FDF0() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016FE2C(u8 *a0); \
|
|
void func_8016FDF0(u8 *a0) { \
|
|
func_801719A4((int)a0, 2); \
|
|
func_80171990(a0); \
|
|
func_8016FE2C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FF6C() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016FFA8(u8 *a0); \
|
|
void func_8016FF6C(u8 *a0) { \
|
|
func_801719A4((int)a0, 2); \
|
|
func_80171990(a0); \
|
|
func_8016FFA8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017018C() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_801701C8(u8 *a0); \
|
|
void func_8017018C(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_801701C8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017027C() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_801702B8(s32 a0); \
|
|
void func_8017027C(u8 *a0) { \
|
|
func_801719A4((int)a0, 2); \
|
|
func_80171990(a0); \
|
|
func_801702B8((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170338() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170374(u8 *a0); \
|
|
void func_80170338(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_80170374(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170584() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_801705C0(u8 *a0); \
|
|
void func_80170584(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_801705C0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170670() \
|
|
extern void *D_8011F738; \
|
|
extern void func_8012A568(void (*a0)(void)); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80170670(void *a0) { \
|
|
func_8012A568((void (*)(void))D_8011F738); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801707D4() \
|
|
extern s32 func_80174ED4(void); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_801707D4(void *a0) { \
|
|
if ((s16)func_80174ED4() != 0) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80170DA4() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170DE0(u8 *a0); \
|
|
void func_80170DA4(u8 *a0) { \
|
|
func_801719A4((int)a0, 3); \
|
|
func_80171990(a0); \
|
|
func_80170DE0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170E70() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170EAC(u8 *a0); \
|
|
void func_80170E70(u8 *a0) { \
|
|
func_801719A4((int)a0, 3); \
|
|
func_80171990(a0); \
|
|
func_80170EAC(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170F74() \
|
|
extern void *D_8011F738; \
|
|
extern void func_80029124(s32, s32); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80170F74(void *a0) { \
|
|
func_80029124((s32)D_8011F738, 1); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80171028() \
|
|
extern void *D_8011F738; \
|
|
extern void func_80029124(s32, s32); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80171028(void *a0) { \
|
|
func_80029124((s32)D_8011F738, 0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801710A0() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_801710DC(u8 *a0); \
|
|
void func_801710A0(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_801710DC(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017484C() \
|
|
extern s32 func_8016F0AC(); \
|
|
extern s32 D_80126B9C; \
|
|
void func_8017484C(s32 a0) { \
|
|
func_8016F0AC(a0); \
|
|
D_80126B9C &= 0xFBFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80175114() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80175184(s32 *a0); \
|
|
void func_80175114(s32 *a0) { \
|
|
func_80147078(a0, 8); \
|
|
*(s16 *)((s32)a0 + 2) = 1; \
|
|
func_80175184(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80152C40() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80152C80(s32 *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
void func_80152C40(s32 *a0) { \
|
|
func_80149020(a0); \
|
|
func_80152C80(a0); \
|
|
func_80159B3C(a0); \
|
|
func_80165718((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801541D8() \
|
|
extern void func_80154218(u8 *a0, s32 a1, s32 a2); \
|
|
void func_801541D8(u8 *a0, s32 a1, s32 a2) { \
|
|
if (*(s32 *)(a0 + 0xB4) != ((s32 *)*(s32 **)(a0 + 0xB0))[a1]) { \
|
|
func_80154218(a0, a1, a2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80154A74() \
|
|
extern void func_80154AB4(s32 a0, s32 a1); \
|
|
void func_80154A74(s32 a0, s32 a1) { \
|
|
if (*(s32 *)(a0 + 0xD0) != ((s32 *)*(s32 **)(a0 + 0xCC))[a1]) { \
|
|
func_80154AB4(a0, a1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80154AE0() \
|
|
extern void func_80154B20(s32 a0, s32 a1, s32 a2); \
|
|
void func_80154AE0(s32 a0, s32 a1, s32 a2) { \
|
|
if (*(s32 *)(a0 + 0xD0) != ((s32 *)*(s32 **)(a0 + 0xCC))[a1]) { \
|
|
func_80154B20(a0, a1, a2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80157880() \
|
|
extern void func_8014ED28(s32 a0); \
|
|
extern void func_8014D3E0(s32 a0); \
|
|
extern void func_8014FA04(s32 a0); \
|
|
extern void func_801578C0(s32 a0); \
|
|
void func_80157880(s32 a0) { \
|
|
func_8014ED28(a0); \
|
|
func_8014D3E0(a0); \
|
|
func_8014FA04(a0); \
|
|
func_801578C0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801585AC() \
|
|
extern u16 func_80148800(s32 *a0); \
|
|
s32 func_801585AC(s32 *a0) { \
|
|
u16 r = func_80148800(a0); \
|
|
u16 v = *(u16 *)((u8 *)a0 + 0x244) | r; \
|
|
s32 m; \
|
|
*(u16 *)((u8 *)a0 + 0x244) = v; \
|
|
m = v & 0x10; \
|
|
return m != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80161278() \
|
|
extern s32 D_801152BC; \
|
|
extern s32 func_801612B8(void *a0, s32 a1); \
|
|
extern void func_80161374(void *a0, s32 a1); \
|
|
void func_80161278(void *a0) { \
|
|
s32 r; \
|
|
D_801152BC = 0; \
|
|
r = func_801612B8(a0, 1); \
|
|
func_80161374(a0, r); \
|
|
}
|
|
|
|
#define DEFINE_func_80165024() \
|
|
extern s32 func_80146E98(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_801651B8(void *a0); \
|
|
void func_80165024(void *a0) { \
|
|
if (func_80146E98((s32)a0)) { \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
func_801651B8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801655E4() \
|
|
extern u8 D_80078EC1; \
|
|
extern u8 func_80165658(s32 a0, s32 a1); \
|
|
extern void func_8014BD60(s32 a0, s32 a1); \
|
|
void func_801655E4(s32 a0) { \
|
|
func_8014BD60(a0, func_80165658(a0, D_80078EC1 & 0x7F) & 0x7F); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FA44() \
|
|
extern void *D_8011F738; \
|
|
extern s32 func_80171C64(s32 a0, s32 a1); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016FA44(s32 a0) { \
|
|
if (func_80171C64(a0, *(u8 *)&D_8011F738)) { \
|
|
func_80171928((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016FB10() \
|
|
extern void *D_8011F738; \
|
|
extern s32 func_80171CC4(void *a0, void *a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
void func_8016FB10(void *a0) { \
|
|
if (func_80171CC4(a0, &D_8011F738)) { \
|
|
func_80171990((u8 *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016FC24() \
|
|
extern void *D_8011F738; \
|
|
extern s32 func_80171B4C(s32 a0, s32 a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
void func_8016FC24(s32 a0) { \
|
|
if (func_80171B4C(a0, *(u8 *)&D_8011F738)) { \
|
|
func_80171990((u8 *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80170CB0() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_8017197C(u8 *a0); \
|
|
extern void func_80170CF0(void *a0); \
|
|
void func_80170CB0(u8 *a0) { \
|
|
func_801719A4((int)a0, 3); \
|
|
a0[0x217] = 0; \
|
|
func_8017197C(a0); \
|
|
func_80170CF0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172A8C() \
|
|
extern s16 D_80126B30; \
|
|
extern s32 func_80171CC4(void *a0, void *a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
void func_80172A8C(void *a0) { \
|
|
if (func_80171CC4(a0, &D_80126B30)) { \
|
|
func_80171A1C((u8 *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80172ACC() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80172ACC(u8 *a0) { \
|
|
u8 *p = *(u8 **)(a0 + 0x20); \
|
|
u16 v = *(u16 *)(a0 + 0x132); \
|
|
*(s16 *)(a0 + 0x136) = 0; \
|
|
*(u16 *)(p + 0x12) = v; \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172E94() \
|
|
extern u8 D_800D5A34[]; \
|
|
extern s32 D_80126B58; \
|
|
extern s16 D_80126B30; \
|
|
extern void func_8017303C(void *); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80172E94(void) { \
|
|
func_8017303C((void *)D_800D5A34); \
|
|
D_80126B30 = 0; \
|
|
func_80174650((s32)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80173770() \
|
|
extern s32 D_80127508; \
|
|
extern void func_801723C4(s32 a0, s32 a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80173770(u8 *a0) { \
|
|
func_801723C4((s32)a0, D_80127508); \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174714() \
|
|
extern s32 func_800CF8CC(void); \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern s32 func_8016F0AC(); \
|
|
extern s32 D_80126B58; \
|
|
void func_80174714(void) { \
|
|
if (func_800CF8CC() == 0) { \
|
|
func_80147060((u8 *)&D_80126B58); \
|
|
func_8016F0AC(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801751D8() \
|
|
extern s32 func_80161104(void); \
|
|
extern s32 func_80175218(void *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_801751D8(void *a0) { \
|
|
void *s = a0; \
|
|
if (func_80161104()) { \
|
|
func_80175218(s); \
|
|
func_80146CA0(s); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012A68C() \
|
|
extern void func_8012A7D4(void *a0, void *a1); \
|
|
extern s32 func_8012A6D0(void *a0, void *a1); \
|
|
s16 func_8012A68C(void) { \
|
|
s16 a[4]; \
|
|
s16 b[4]; \
|
|
func_8012A7D4(a, b); \
|
|
return (s16)func_8012A6D0(a, b); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A758() \
|
|
extern void func_8012A7D4(void *a0, void *a1); \
|
|
extern s16 func_8012A79C(s16 *a0, s16 *a1); \
|
|
s16 func_8012A758(void) { \
|
|
s16 a[4]; \
|
|
s16 b[4]; \
|
|
func_8012A7D4(a, b); \
|
|
return func_8012A79C(a, b); \
|
|
}
|
|
|
|
#define DEFINE_func_80130898() \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_80130898(u8 *a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x4000) { \
|
|
*(s16 *)(a0 + 0xAA) = 0x100; \
|
|
*(u16 *)(a0 + 0x5C) = *(u16 *)(a0 + 0x5C) & 0xFFFE; \
|
|
} \
|
|
func_80131CA8((int)a0, 0x28); \
|
|
}
|
|
|
|
#define DEFINE_func_80131E38() \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_80131E38(u8 *a0) { \
|
|
*(s8 *)(a0 + 0xC1) = 0xF; \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x40000) { \
|
|
*(s32 *)(a0 + 0x1C) = 6; \
|
|
*(s16 *)(a0 + 0x5C) = 0; \
|
|
} \
|
|
func_80131CA8((int)a0, 0x39); \
|
|
}
|
|
|
|
#define DEFINE_func_8012EF70() \
|
|
extern void func_8012EFB8(s32 a0); \
|
|
void func_8012EF70(s32 a0, s32 a1) { \
|
|
s32 sp10; \
|
|
register s32 v1 __asm__("$3"); \
|
|
func_8012EFB8(a0); \
|
|
{ \
|
|
register s32 *p __asm__("$3") = &sp10; \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $19\n" \
|
|
"nop\n" \
|
|
"sra $12, $12, 2\n" \
|
|
"sw $12, 0(%0)\n" \
|
|
: : "r"(p) : "memory", "$12"); \
|
|
} \
|
|
v1 = sp10; \
|
|
*(s16 *)(a1 + 4) = v1; \
|
|
}
|
|
|
|
#define DEFINE_func_80151980() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_801519C8(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80151980(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_801519C8(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80152094() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_801520DC(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152094(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_801520DC(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015220C() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_801536DC(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015220C(s32 a0) { \
|
|
func_80149020((s32 *)a0); \
|
|
if (!func_801536DC(a0)) { \
|
|
*(s8 *)(a0 + 0xDE) = 1; \
|
|
*(s8 *)(a0 + 0xDF) = 0; \
|
|
func_80146CA0((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801523AC() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_801523F4(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_801523AC(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_801523F4(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80152868() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_801528B0(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152868(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_801528B0(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80152A08() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_801536DC(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152A08(s32 a0) { \
|
|
func_80149020((s32 *)a0); \
|
|
if (!func_801536DC(a0)) { \
|
|
*(s8 *)(a0 + 0xDE) = 1; \
|
|
*(s8 *)(a0 + 0xDF) = 0; \
|
|
func_80146CA0((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152BA8() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_80152BF0(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152BA8(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_80152BF0(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80152D60() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_80152DA8(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152D60(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_80152DA8(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80152EFC() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_801536DC(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152EFC(s32 a0) { \
|
|
func_80149020((s32 *)a0); \
|
|
if (!func_801536DC(a0)) { \
|
|
*(s8 *)(a0 + 0xDE) = 1; \
|
|
*(s8 *)(a0 + 0xDF) = 0; \
|
|
func_80146CA0((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015309C() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_801530E4(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015309C(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_801530E4(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801531BC() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_801536DC(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_801531BC(s32 a0) { \
|
|
func_80149020((s32 *)a0); \
|
|
if (!func_801536DC(a0)) { \
|
|
*(s8 *)(a0 + 0xDE) = 1; \
|
|
*(s8 *)(a0 + 0xDF) = 0; \
|
|
func_80146CA0((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015335C() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_801533A4(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015335C(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_801533A4(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80153490() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern s32 func_801536DC(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80153490(s32 a0) { \
|
|
func_80149020((s32 *)a0); \
|
|
if (!func_801536DC(a0)) { \
|
|
*(s8 *)(a0 + 0xDE) = 1; \
|
|
*(s8 *)(a0 + 0xDF) = 0; \
|
|
func_80146CA0((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80153D34() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_80153D7C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80153D34(s32 a0) { \
|
|
func_8014E934(a0); \
|
|
func_8014CC28(a0); \
|
|
func_8014F3E8(a0); \
|
|
func_80153D7C(a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80154190() \
|
|
extern void func_80154418(void *a0); \
|
|
void func_80154190(u8 *a0, s32 a1) { \
|
|
s32 v1 = *(s32 *)((a1 << 2) + *(s32 *)(a0 + 0xB0)); \
|
|
*(s16 *)(a0 + 0xBA) = 1; \
|
|
*(s16 *)(a0 + 0xB8) = 1; \
|
|
*(s8 *)(a0 + 0xBC) = 0; \
|
|
*(s8 *)(a0 + 0xBD) = 0; \
|
|
*(s8 *)(a0 + 0xDC) = 0; \
|
|
*(s32 *)(a0 + 0xB4) = v1; \
|
|
func_80154418((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80165B6C() \
|
|
extern s32 func_80161104(void); \
|
|
extern void func_80165BB4(u8 *a0); \
|
|
void func_80165B6C(u8 *a0) { \
|
|
if (func_80161104()) { \
|
|
func_80165BB4(a0); \
|
|
*(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80165BB4() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_80165BB4(u8 *a0) { \
|
|
func_80154150((s32)a0, 0x22); \
|
|
func_80154A74((s32)a0, 0x1A); \
|
|
*(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016DBD8() \
|
|
extern void func_80149374(s32 a0, s32 a1); \
|
|
extern void func_800D1FC8(s32 a0, s32 a1); \
|
|
void func_8016DBD8(u8 *a0) { \
|
|
*(s32 *)(a0 + 0x4) = 0; \
|
|
*(s32 *)(a0 + 0x8) = 0; \
|
|
*(s32 *)(a0 + 0xC) = 0; \
|
|
func_80149374(*(s32 *)(a0 + 0x34), (s32)(a0 + 0x4)); \
|
|
func_800D1FC8((s32)a0, 5); \
|
|
}
|
|
|
|
#define DEFINE_func_801700B8() \
|
|
extern void *D_8011F738; \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_8013767C(s32 a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_801700B8(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_8011F738); \
|
|
func_80171928((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170B90() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80170B90(u8 *a0) { \
|
|
if (*(u16 *)(a0 + 0xB8) & 0x8000) { \
|
|
func_80147060(a0); \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80172310() \
|
|
extern s32 D_80126B58; \
|
|
extern s32 *D_80126B78; \
|
|
extern void func_80172358(u8 *a0, u8 *a1); \
|
|
void func_80172310(u8 *a0) { \
|
|
func_80172358((u8 *)&D_80126B58, a0); \
|
|
*(u16 *)((u8 *)D_80126B78 + 0x12) = *(u16 *)(a0 + 6); \
|
|
}
|
|
|
|
#define DEFINE_func_80172844() \
|
|
extern s16 D_80126B30; \
|
|
extern s32 func_80171CC4(void *a0, void *a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80172844(u8 *a0) { \
|
|
if (func_80171CC4(a0, &D_80126B30)) { \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80172B80() \
|
|
extern s32 D_801150F8; \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80172BC8(void *a0); \
|
|
void func_80172B80(u8 *a0) { \
|
|
if (D_801150F8 == 0) { \
|
|
func_80147060(a0); \
|
|
} \
|
|
func_80171A1C(a0); \
|
|
func_80172BC8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801731D8() \
|
|
extern u8 D_800D5AA0[]; \
|
|
extern void func_8014706C(void *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80173220(void *a0); \
|
|
void func_801731D8(s32 *a0) { \
|
|
func_8014706C(a0); \
|
|
func_80154274(a0, (s32)D_800D5AA0); \
|
|
func_80171A1C((u8 *)a0); \
|
|
func_80173220(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801739D8() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_801739D8(u8 *a0) { \
|
|
if ((*(s32 *)(a0 + 0x44) & 2) == 0) { \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80179D30() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179D30(u16 *a0) { \
|
|
s16 buf[4]; \
|
|
buf[0] = 1; \
|
|
buf[1] = a0[0]; \
|
|
buf[2] = a0[1]; \
|
|
buf[3] = a0[2]; \
|
|
func_80179B74(buf); \
|
|
}
|
|
|
|
#define DEFINE_func_80179EA0() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179EA0(u16 *a0) { \
|
|
s16 buf[4]; \
|
|
buf[0] = 5; \
|
|
buf[1] = a0[0]; \
|
|
buf[2] = a0[1]; \
|
|
buf[3] = a0[2]; \
|
|
func_80179B74(buf); \
|
|
}
|
|
|
|
#define DEFINE_func_8012927C() \
|
|
extern void func_801292C8(u8 *a0); \
|
|
extern s16 D_8011DB30; \
|
|
void func_8012927C(void) { \
|
|
s32 i; \
|
|
u8 *p = (u8 *)&D_8011DB30; \
|
|
for (i = 0; i < 0x80; i++) { \
|
|
func_801292C8(p); \
|
|
p += 0x38; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80150820() \
|
|
extern void func_8014BD24(s32 a0, s32 a1); \
|
|
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
|
|
void func_80150820(s32 a0, s32 a1) { \
|
|
if (a1 != 0) { \
|
|
func_8014BD24(a0, a1); \
|
|
func_8014ACE8((void *)a0, 4, a1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80155FF8() \
|
|
extern int func_80156044(int arg, int a1); \
|
|
int func_80155FF8(int arg, int a1) { \
|
|
__asm__ __volatile__( \
|
|
".set noreorder\n" \
|
|
"addiu $sp, $sp, -24\n" \
|
|
"sw $ra, 16($sp)\n" \
|
|
"lui $v0, 0x1f80\n" \
|
|
"ori $v0, $v0, 0x03fc\n" \
|
|
"addu $t0, $v0, $zero\n" \
|
|
"lw $t1, 0($t0)\n" \
|
|
"nop\n" \
|
|
"sw $sp, 0($t1)\n" \
|
|
"addiu $t1, $t1, -4\n" \
|
|
"addu $sp, $t1, $zero\n" \
|
|
"jal func_80156044\n" \
|
|
"addiu $sp, $sp, 4\n" \
|
|
"lw $sp, 0($sp)\n" \
|
|
"nop\n" \
|
|
"lw $ra, 16($sp)\n" \
|
|
"addiu $sp, $sp, 24\n" \
|
|
: : : "memory"); \
|
|
}
|
|
|
|
#define DEFINE_func_801585EC() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
void func_801585EC(u8 *a0) { \
|
|
*(s32 *)(a0 + 0x44) &= ~2; \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
func_801553C0((s32)a0); \
|
|
func_801553A8((s32 *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160A28() \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_80160A28(s32 a0) { \
|
|
s32 v0; \
|
|
func_801553C0(a0); \
|
|
v0 = *(s32 *)(a0 + 0x44); \
|
|
v0 &= ~0x40; \
|
|
v0 &= ~1; \
|
|
*(s32 *)(a0 + 0x44) = v0; \
|
|
func_80154A74(a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8016236C() \
|
|
extern void func_8014706C(void *a0); \
|
|
extern s32 D_80126B58; \
|
|
s32 func_8016236C(u8 *a0) { \
|
|
func_8014706C(&D_80126B58); \
|
|
*(s32 *)(a0 + 0x28) = 0xA; \
|
|
*(u8 *)(a0 + 0x15) += 1; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80162714() \
|
|
extern s32 func_800291DC(s32); \
|
|
extern s32 func_800D0D7C(s32, s32); \
|
|
extern void func_800291C8(s32, s32); \
|
|
void func_80162714(void) { \
|
|
s32 v0; \
|
|
if ((s16)func_800291DC(0x12) == 0) { \
|
|
v0 = func_800D0D7C(0xC, 0); \
|
|
func_800291C8(0x12, (s16)(v0 | 0x8000)); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80168780() \
|
|
extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_801687CC(s32 a0); \
|
|
void func_80168780(s32 a0) { \
|
|
func_80168BDC(a0, 8, 0, 2); \
|
|
func_801687CC(a0); \
|
|
*(u16 *)(a0 + 2) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801752BC() \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_801752BC(s32 *a0) { \
|
|
*(s16 *)((u8 *)a0 + 0xF6) = 0x1000; \
|
|
func_801553A8(a0); \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
*(s32 *)((u8 *)a0 + 0x44) &= ~2; \
|
|
}
|
|
|
|
#define DEFINE_func_80179B28() \
|
|
extern void func_80139914(s32 a0); \
|
|
void func_80179B28(s32 a0) { \
|
|
s32 v1; \
|
|
if (a0 == 0) return; \
|
|
if (*(s32 *)a0 == 0) return; \
|
|
v1 = *(s16 *)(a0 + 4); \
|
|
if (v1 == 0) return; \
|
|
if (v1 == 0xE) return; \
|
|
func_80139914(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8013A860() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern u8 D_8011DA80[]; \
|
|
void func_8013A860(void) { \
|
|
s32 i; \
|
|
u8 *p; \
|
|
i = 0; \
|
|
p = D_8011DA80; \
|
|
do { \
|
|
func_80016714(p, 0x10); \
|
|
i++; \
|
|
p += 0x10; \
|
|
} while (i < 2); \
|
|
}
|
|
|
|
#define DEFINE_func_80148AAC() \
|
|
extern int func_80148AFC(void *a0); \
|
|
void func_80148AAC(u8 *a0) { \
|
|
u8 *v1; \
|
|
if ((func_80148AFC(a0) & 0xff) != 0) { \
|
|
v1 = *(u8 **)(a0 + 0x20); \
|
|
*(u16 *)(v1 + 0x12) = (*(u16 *)(v1 + 0x12) + 0xFA) & 0xFF8; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80151D60() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_80151DB0(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80151D60(void *a0) { \
|
|
func_8014E934((s32)a0); \
|
|
func_8014CC28((s32)a0); \
|
|
func_8014F3E8((s32)a0); \
|
|
func_80151DB0((s32)a0); \
|
|
*(s8 *)((u8 *)a0 + 0xDE) = 0x20; \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80157D74() \
|
|
extern void func_80157DC4(void *a0); \
|
|
extern void func_80157FC4(void *a0); \
|
|
void func_80157D74(u16 *a0) { \
|
|
switch (a0[0]) { \
|
|
case 0x24: \
|
|
func_80157DC4(a0); \
|
|
break; \
|
|
case 0x25: \
|
|
func_80157FC4(a0); \
|
|
break; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016E728() \
|
|
extern void func_80146C3C(void); \
|
|
extern void func_8016E778(); \
|
|
void func_8016E728(u8 *a0) { \
|
|
s32 v0; \
|
|
s32 v1; \
|
|
v0 = (u16)*(u16 *)(a0 + 0x12) + 0x400; \
|
|
v1 = (u16)*(u16 *)(a0 + 0x16) - 8; \
|
|
*(u16 *)(a0 + 0x12) = v0; \
|
|
*(u16 *)(a0 + 0x16) = v1; \
|
|
if ((s16)v1 <= 0) { \
|
|
func_80146C3C(); \
|
|
} else { \
|
|
func_8016E778(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80170018() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_8013767C(s32 a0); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170068(u8 *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_80170018(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_8011F738); \
|
|
func_80171990(a0); \
|
|
func_80170068(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170068() \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80170068(u8 *a0) { \
|
|
if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { \
|
|
func_80139914(*(s32 *)(a0 + 0x198)); \
|
|
*(s32 *)(a0 + 0x198) = 0; \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80170100() \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_80170100(u8 *a0) { \
|
|
if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { \
|
|
func_80139914(*(s32 *)(a0 + 0x198)); \
|
|
*(s32 *)(a0 + 0x198) = 0; \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80173C64() \
|
|
extern s32 func_80171CC4(void *a0, void *a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s16 D_80126B36; \
|
|
void func_80173C64(u8 *a0) { \
|
|
s16 *p = &D_80126B36; \
|
|
if (*p != 0) { \
|
|
if (func_80171CC4(a0, p - 3) == 0) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_80171A1C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012C044() \
|
|
extern s32 D_801274D4; \
|
|
extern s16 D_80126CAC; \
|
|
extern s32 D_801274E0; \
|
|
extern s32 func_80013478(s32 a0, s32 a1); \
|
|
s32 func_8012C044(s32 a0) { \
|
|
s32 (*fp)(void) = (s32 (*)(void))D_801274D4; \
|
|
if (fp != 0) { \
|
|
return fp(); \
|
|
} \
|
|
return func_80013478(a0 + 4, (s32)&D_80126CAC) >= D_801274E0; \
|
|
}
|
|
|
|
#define DEFINE_func_80144A98() \
|
|
extern void func_8012C1B8(void); \
|
|
extern void func_8012CAE4(void *a0); \
|
|
extern void func_8001C214(s32 a0, s32 a1); \
|
|
void func_80144A98(u8 *a0) { \
|
|
s32 v0; \
|
|
v0 = ((s32 (*)(void))func_8012C1B8)(); \
|
|
*(s32 *)(a0 + 0x20) = v0; \
|
|
if (v0 == 0) { \
|
|
func_8012CAE4(a0); \
|
|
} else { \
|
|
func_8001C214(v0, 0); \
|
|
*(s16 *)(a0 + 0x2) = 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015F848() \
|
|
extern s32 D_8011F730; \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015F848(s32 *a0) { \
|
|
func_801553A8(a0); \
|
|
func_80154150((s32)a0, 0x1F); \
|
|
D_8011F730 |= 0x5; \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801685EC() \
|
|
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80166690(s32 a0, s32 a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_801685EC(s32 a0) { \
|
|
func_80166994(a0, 2, 2, 0); \
|
|
if ((short)func_80166690(2, 1) == 0) { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801717A0() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern int func_800D0F8C(int a0); \
|
|
extern int func_800D0FE0(int a0); \
|
|
extern void func_80171928(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_801717A0(void *a0) { \
|
|
int v0; \
|
|
func_801719A4((int)a0, 1); \
|
|
v0 = func_800D0F8C(*(u8 *)&D_8011F738); \
|
|
if (v0 != 0) { \
|
|
func_800D0FE0(v0); \
|
|
} \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80179F98() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179F98(u16 *a0) { \
|
|
s16 sp[5]; \
|
|
sp[0] = 0x17; \
|
|
sp[1] = a0[0]; \
|
|
sp[2] = a0[1]; \
|
|
sp[3] = a0[2]; \
|
|
sp[4] = a0[3]; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_80179FEC() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_80179FEC(u16 *a0) { \
|
|
s16 sp[5]; \
|
|
sp[0] = 0x20; \
|
|
sp[1] = a0[0]; \
|
|
sp[2] = a0[1]; \
|
|
sp[3] = a0[2]; \
|
|
sp[4] = a0[3]; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_8017A040() \
|
|
extern void func_80179B74(s16 *a0); \
|
|
void func_8017A040(u16 *a0) { \
|
|
s16 sp[5]; \
|
|
sp[0] = 0x1D; \
|
|
sp[1] = a0[0]; \
|
|
sp[2] = a0[1]; \
|
|
sp[3] = a0[2]; \
|
|
sp[4] = a0[3]; \
|
|
func_80179B74(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_80155C0C() \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_800D4DD4[]; \
|
|
void func_80155C0C(s32 *a0) { \
|
|
u8 sp10[0x40]; \
|
|
(void)sp10; \
|
|
a0[0x44 / 4] |= 2; \
|
|
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
|
|
func_80154274(a0, (s32)D_800D4DD4); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80160A74() \
|
|
extern void func_80160B00(); \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80159B70(void *a0); \
|
|
extern u8 D_80078EBF; \
|
|
void func_80160A74(s32 *a0) { \
|
|
if (D_80078EBF == 0x80) { \
|
|
func_80160B00(); \
|
|
} else { \
|
|
func_80147078(a0, 0); \
|
|
func_80159B70(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80162F08() \
|
|
extern void func_80162F60(s32 arg0, s32 arg1); \
|
|
extern void func_80162F80(s32 arg0, s32 arg1); \
|
|
extern void func_80162FA0(s32 arg0, s32 arg1); \
|
|
void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
func_80162F60(a0, a1); \
|
|
func_80162F80(a0, a2); \
|
|
func_80162FA0(a0, a3); \
|
|
}
|
|
|
|
#define DEFINE_func_80164A74() \
|
|
extern void func_80148534(s32 a0, s32 a1); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern void func_80149374(s32 a0, s32 a1); \
|
|
void func_80164A74(s32 *a0) { \
|
|
s32 sp10[2]; \
|
|
s32 sp18[2]; \
|
|
s32 s1 = a0[0x4C / 4]; \
|
|
func_80148534((s32)sp10, (s32)sp18); \
|
|
func_80015954((s32)sp10, (s32)a0 + 4); \
|
|
func_80149374(s1, (s32)a0 + 4); \
|
|
}
|
|
|
|
#define DEFINE_func_80165718() \
|
|
extern s32 func_80165A20(s32 a0); \
|
|
extern u8 D_80078EC1; \
|
|
void func_80165718(s32 a0) { \
|
|
switch (D_80078EC1) { \
|
|
case 3: \
|
|
case 0xC: \
|
|
case 0x18: \
|
|
func_80165A20(a0); \
|
|
break; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016629C() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_8016629C(void *a0) { \
|
|
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
|
|
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
|
|
*(s16 *)((s32)a0 + 0xE), 0xF88FFF2, 0xE000C000); \
|
|
}
|
|
|
|
#define DEFINE_func_801662F4() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_801662F4(void *a0) { \
|
|
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
|
|
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
|
|
*(s16 *)((s32)a0 + 0xE), 0x8FEFFF4, 0xE000C000); \
|
|
}
|
|
|
|
#define DEFINE_func_8016634C() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_8016634C(void *a0) { \
|
|
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
|
|
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
|
|
*(s16 *)((s32)a0 + 0xE), 0xEEEFFF8, 0x6800B000); \
|
|
}
|
|
|
|
#define DEFINE_func_801663A4() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_801663A4(void *a0) { \
|
|
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
|
|
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
|
|
*(s16 *)((s32)a0 + 0xE), 0xCCCFFF8, 0xE000C000); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FE78() \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern u16 D_8011F73E; \
|
|
s32 func_8016FE78(s32 *a0) { \
|
|
*(u16 *)((s32)a0 + 0xAA) |= 0x40; \
|
|
if (D_8011F73E != 0) { \
|
|
func_801477E8(a0, D_8011F73E << 16); \
|
|
} \
|
|
return func_80171990((u8 *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80145BF8() \
|
|
extern s32 func_80028FBC(void); \
|
|
extern s32 func_80029000(void); \
|
|
extern s32 func_80028D9C(void); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
void func_80145BF8(void) { \
|
|
func_8002D4C8(0x21, func_80028FBC() & 0xFFFF); \
|
|
func_8002D4C8(0x22, func_80029000() & 0xFFFF); \
|
|
func_8002D4C8(func_80028D9C() == 0 ? 0xC : 0xB, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014CA14() \
|
|
extern u16 func_8014CA70(s32 a0, s32 a1); \
|
|
extern void func_80147364(u16, s32); \
|
|
extern void *D_8012707C; \
|
|
s32 func_8014CA14(s32 a0, s32 a1) { \
|
|
u16 x = func_8014CA70(a0, a1); \
|
|
if (x == 0) { \
|
|
return 1; \
|
|
} \
|
|
if (x != (s32)D_8012707C) { \
|
|
func_80147364(x, 0); \
|
|
return 0; \
|
|
} \
|
|
D_8012707C = 0; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CA88() \
|
|
extern u16 func_8014CAE4(s32 *a0, s32 a1); \
|
|
extern void func_80147364(u16, s32); \
|
|
extern void *D_8012707C; \
|
|
s32 func_8014CA88(s32 *a0, s32 a1) { \
|
|
u16 x = func_8014CAE4(a0, a1); \
|
|
if (x == 0) { \
|
|
return 1; \
|
|
} \
|
|
if (x != (s32)D_8012707C) { \
|
|
func_80147364(x, 0); \
|
|
return 0; \
|
|
} \
|
|
D_8012707C = 0; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8015C788() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80155440(s32 *a0); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015C788(s32 a0) { \
|
|
func_80154150(a0, 0x12); \
|
|
func_80154A74(a0, 0x17); \
|
|
func_801553A8((s32 *)a0); \
|
|
func_80155440((s32 *)a0); \
|
|
func_80146E90((s32 *)a0, 0xA); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E22C() \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_800D4FF4[]; \
|
|
void func_8015E22C(s32 a0) { \
|
|
func_80154274((s32 *)a0, (s32)D_800D4FF4); \
|
|
*(s32 *)(a0 + 0x234) = 0; \
|
|
func_80146994(5, a0, 0xA, 0); \
|
|
*(s32 *)(a0 + 0x44) |= 2; \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F260() \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80149048(s32 *a0); \
|
|
void func_8015F260(s32 *a0) { \
|
|
s32 v; \
|
|
func_801553A8(a0); \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
v = a0[0x11]; \
|
|
v &= -0x3; \
|
|
v &= -0x2; \
|
|
a0[0x11] = v; \
|
|
func_80149048(a0); \
|
|
*(s16 *)((u8 *)a0 + 0xF6) = 0x1000; \
|
|
}
|
|
|
|
#define DEFINE_func_80160CB4() \
|
|
extern s32 func_80161208(); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80160CB4(s32 *a0) { \
|
|
if (func_80161208() == 0) { \
|
|
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
|
|
func_80154150((s32)a0, 0x27); \
|
|
func_80154A74((s32)a0, 0x1F); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80161488() \
|
|
extern s32 func_801615C4(void *a0, s32 a1); \
|
|
extern void func_80161774(void *a0, s32 a1); \
|
|
extern s32 func_8016197C(s32 a0, s32 a1); \
|
|
s32 func_80161488(void *a0) { \
|
|
s32 v0 = func_801615C4(a0, 0); \
|
|
if (*(u8 *)((u8 *)a0 + 0x1C6) == 0) { \
|
|
func_80161774(a0, v0); \
|
|
} else { \
|
|
return func_8016197C((s32)a0, v0) & -0x8; \
|
|
} \
|
|
/* fall off end: returns clobbered v0 (matches original) */ \
|
|
}
|
|
|
|
#define DEFINE_func_801623B8() \
|
|
extern void func_800D0C48(s32 a0); \
|
|
extern void func_800167B8(s32 a0); \
|
|
s32 func_801623B8(s32 *a0) { \
|
|
if (--a0[0xA] == -1) { \
|
|
func_800D0C48(1); \
|
|
func_800167B8(4); \
|
|
*((u8 *)a0 + 0x15) += 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80157F64() \
|
|
extern s32 func_80029178(s32 a0); \
|
|
extern u16 func_80148800(s32 *a0); \
|
|
extern void func_80149CB4(void); \
|
|
s32 func_80157F64(s32 *a0) { \
|
|
if ((func_80029178(0x87) & 0xFF) != 0) { \
|
|
if ((func_80148800(a0) & 0x80) != 0) { \
|
|
((void (*)(s32 *, s32))func_80149CB4)(a0, 5); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801601E4() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern s32 func_80161208(); \
|
|
void func_801601E4(s32 *a0) { \
|
|
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
|
|
func_80154150((s32)a0, 0x22); \
|
|
func_80154A74((s32)a0, 0x1A); \
|
|
func_80146CA0(a0); \
|
|
} else { \
|
|
((s32 (*)(s32 *))func_80161208)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80160244() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern s32 func_80161208(); \
|
|
void func_80160244(s32 *a0) { \
|
|
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
|
|
func_80154150((s32)a0, 0x23); \
|
|
func_80154A74((s32)a0, 0x1B); \
|
|
func_80146CA0(a0); \
|
|
} else { \
|
|
((s32 (*)(s32 *))func_80161208)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016D5EC() \
|
|
extern short func_8016CF04(s32 a0, s32 a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016D5EC(s32 *a0) { \
|
|
u16 *rec = (u16 *)a0[8]; /* lw 0x20(s0) */ \
|
|
rec[0xC] -= 0x60; /* 0x18 */ \
|
|
rec[0xD] -= 0x60; /* 0x1A */ \
|
|
if ((s16)((s32 (*)(s32, s32))func_8016CF04)((s32)a0, 2) != 0) { \
|
|
((void (*)(s32 *))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016F14C() \
|
|
extern void func_80148634(void *a0); \
|
|
void func_8016F14C(void *a0) { \
|
|
s32 v1 = *(s32 *)((u8 *)a0 + 0x1F8); \
|
|
s32 fp = v1 & 0x80FFFFFF; \
|
|
if (v1 != 0) { \
|
|
if (v1 & 0x1000000) { \
|
|
func_80148634(a0); \
|
|
} \
|
|
((void (*)(void *))fp)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016FED0() \
|
|
extern s32 func_80172664(s32 *a0); \
|
|
extern s32 func_80171CC4(void *a0, void *a1); \
|
|
extern void func_80171928(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_8016FED0(s32 *a0) { \
|
|
if (func_80172664(a0) != 0) { \
|
|
*(u16 *)((u8 *)a0 + 0xAA) |= 0x40; \
|
|
} \
|
|
if (func_80171CC4(a0, &D_8011F738) != 0) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015C0C4() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern s16 D_801152B0; \
|
|
extern s16 D_801152B4; \
|
|
void func_8015C0C4(s32 a0) { \
|
|
s32 t = D_801152B0 << 6; \
|
|
*(s32 *)(a0 + 0x238) = 0x80000; \
|
|
*(s32 *)(a0 + 0x234) = t; \
|
|
*(s32 *)(a0 + 0x23C) = D_801152B4 << 6; \
|
|
func_80154150(a0, 0x11); \
|
|
func_801553A8((s32 *)a0); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012EECC() \
|
|
extern s32 func_8002A4FC(s32 a0); \
|
|
s32 func_8012EECC(s32 a0) { \
|
|
s32 n = a0 * func_8002A4FC(a0); \
|
|
return a0 - (n * 100) / 7680; \
|
|
}
|
|
|
|
#define DEFINE_func_8013A1E8() \
|
|
extern s32 D_80127524; \
|
|
extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); \
|
|
extern void func_80138B88(s32 a0); \
|
|
void func_8013A1E8(s32 a0) { \
|
|
s32 v = D_80127524; \
|
|
if (v == a0) { \
|
|
if (func_80138DB8(v, 0, 0x70) != 0 || (*(s32 *)(v + 8) & 0x800)) { \
|
|
func_80138B88(v); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149078() \
|
|
extern void func_801490E0(s32 *a0, s16 a1); \
|
|
extern void func_801490E8(s32 *a0, s16 a1); \
|
|
extern void func_801490F0(s32 *a0, s16 a1); \
|
|
void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3) { \
|
|
func_801490E0(a0, (s16)a1); \
|
|
func_801490E8(a0, (s16)a2); \
|
|
func_801490F0(a0, (s16)a3); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DB6C() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_8015DCB8(s32 a0); \
|
|
extern void func_80147300(u16 arg0); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_8014BD60(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015DB6C(s32 a0) { \
|
|
func_80154150(a0, 0x1C); \
|
|
func_80154A74(a0, 0x19); \
|
|
*(s32 *)(a0 + 0x234) = 0; \
|
|
func_8015DCB8(a0); \
|
|
func_80147300(0x5F5); \
|
|
func_801553A8((s32 *)a0); \
|
|
func_8014BD60(a0, 4); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DECC() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_8015E018(s32 a0); \
|
|
extern void func_80147300(u16 arg0); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_8014BD60(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015DECC(s32 a0) { \
|
|
func_80154150(a0, 0x1C); \
|
|
func_80154A74(a0, 0x19); \
|
|
*(s32 *)(a0 + 0x234) = 0; \
|
|
func_8015E018(a0); \
|
|
func_80147300(0x5F5); \
|
|
func_801553A8((s32 *)a0); \
|
|
func_8014BD60(a0, 4); \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80161094() \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern void func_80129248(s16 a0); \
|
|
extern u16 D_801270C0; \
|
|
extern u8 D_800B9A17; \
|
|
void func_80161094(s32 a0) { \
|
|
if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { \
|
|
func_80139914(*(s32 *)(a0 + 0x198)); \
|
|
*(s32 *)(a0 + 0x198) = 0; \
|
|
} \
|
|
D_801270C0 = 1; \
|
|
func_80129248(1); \
|
|
D_800B9A17 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012C218() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
void func_8012C218(void *a0) { \
|
|
u16 *p = ((u16 **)a0)[8]; /* 0x20/4 */ \
|
|
if (p) { \
|
|
s32 a1; \
|
|
switch (*p) { \
|
|
case 2: a1 = 0x38; break; \
|
|
case 1: a1 = 0x84; break; \
|
|
default: goto skip; \
|
|
} \
|
|
func_80016714(p, a1); \
|
|
} \
|
|
skip: \
|
|
func_80016714(a0, 0x10C); \
|
|
}
|
|
|
|
#define DEFINE_func_80161B18() \
|
|
extern s32 D_800AE6B0; \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_8015FA78(s32 *a0); \
|
|
s32 func_80161B18(void *a0) { \
|
|
if ((D_800AE6B0 & 0x80FFFFFF) != 0) return 0; \
|
|
if (*(s32 *)((u8 *)a0 + 0x44) & 0x10) { \
|
|
func_801599A4(a0); \
|
|
func_8015FA78((s32 *)a0); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80163664() \
|
|
extern void func_80157158(); \
|
|
void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12) { \
|
|
func_80157158(a0, a1 & 0xFFFF, a2 & 0xFFFF, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FBB8() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern void func_80171B44(s32 *a0); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016FC24(); \
|
|
void func_8016FBB8(s32 a0) { \
|
|
u8 *p; \
|
|
*(s16 *)(a0 + 0x136) = 2; \
|
|
p = *(u8 **)(a0 + 0x20); \
|
|
*(s16 *)(a0 + 0x132) = *(u16 *)(p + 0x12); \
|
|
p = *(u8 **)(a0 + 0x20); \
|
|
*(s16 *)(p + 0x12) = (*(u16 *)(p + 0x12) + 0x800) & 0xFFF; \
|
|
func_801719A4(a0, 1); \
|
|
func_80171B44((s32 *)a0); \
|
|
func_80171990((u8 *)a0); \
|
|
func_8016FC24(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801787D4() \
|
|
extern u8 D_801202A0[]; \
|
|
extern void func_80178840(); \
|
|
void func_801787D4(void) { \
|
|
u8 *p = D_801202A0; \
|
|
s32 i; \
|
|
for (i = 0; i < 0x60; i++) { \
|
|
if (*(u16 *)(p + 0) != 0 && p[0xC0] != 0) { \
|
|
func_80178840(p); \
|
|
} \
|
|
p += 0x10C; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012C820() \
|
|
extern u8 D_80120194[]; \
|
|
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8012C820(u8 *a0) { \
|
|
u8 *base = D_80120194; \
|
|
u8 *p = base + 0x6480; \
|
|
if (p != base) { \
|
|
do { \
|
|
if (*(u16 *)p == 0) goto found; \
|
|
p -= 0x10C; \
|
|
} while (p != base); \
|
|
} \
|
|
p = 0; \
|
|
found: \
|
|
if (p != 0) { \
|
|
*(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xA) | 0x8000; \
|
|
func_8012C890((s32)a0, (s32)p, 0); \
|
|
} else { \
|
|
return 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80146924() \
|
|
extern s32 D_8011D030; \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5) { \
|
|
s32 count = 0; \
|
|
u8 *v1 = (u8 *)&D_8011D030; \
|
|
u8 *end = v1 + 0xA50; \
|
|
while (v1 < end) { \
|
|
if (*(u16 *)v1 == (a0 & 0xFFFF)) count++; \
|
|
v1 += 0x58; \
|
|
} \
|
|
if ((u32)count < (u32)arg5) { \
|
|
return func_80146994(a0 & 0xFFFF, a1, a2, a3); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801498E0() \
|
|
extern s32 func_80149AA8(s32 *a0); \
|
|
extern s32 func_80149B54(s32 *a0); \
|
|
extern void func_80146750(void *a0); \
|
|
s32 func_801498E0(s32 *a0) { \
|
|
s16 st[4]; \
|
|
s32 stw[3]; \
|
|
if (func_80149AA8(a0) != 0 || func_80149B54(a0) != 0) { \
|
|
st[0] = 8; \
|
|
stw[0] = (s32)a0; \
|
|
st[1] = 0; \
|
|
st[2] = -0x1E; \
|
|
st[3] = 0; \
|
|
stw[1] = 0; \
|
|
stw[2] = 0; \
|
|
func_80146750(st); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CD0C() \
|
|
extern void func_8014CF04(s32 a0, void *a1, void *a2); \
|
|
extern void func_8014CD80(s32 a0, void *a1, void *a2); \
|
|
void func_8014CD0C(u8 *a0) { \
|
|
u16 sp10[3]; \
|
|
u16 sp18[3]; \
|
|
u16 b; \
|
|
u16 c; \
|
|
u16 d; \
|
|
b = *(u16 *)(a0 + 0x6); \
|
|
sp18[0] = b; \
|
|
sp10[0] = b; \
|
|
c = *(u16 *)(a0 + 0xA); \
|
|
sp10[1] = c - 3; \
|
|
d = *(u16 *)(a0 + 0xE); \
|
|
sp18[1] = c + 5; \
|
|
sp18[2] = d; \
|
|
sp10[2] = d; \
|
|
if (*(s32 *)(a0 + 0x174) == 0) { \
|
|
func_8014CF04((s32)a0, sp10, sp18); \
|
|
} else { \
|
|
func_8014CD80((s32)a0, sp10, sp18); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015ABD4() \
|
|
extern s32 func_8016F1AC(void); \
|
|
extern s32 func_80029178(s32 a0); \
|
|
extern s32 D_8011F9C4; \
|
|
s32 func_8015ABD4(s32 a0, s32 a1, s32 a2) { \
|
|
if (func_8016F1AC() != 0) { \
|
|
return 0; \
|
|
} \
|
|
if (a2 < a1) { \
|
|
if (D_8011F9C4 == 0) { \
|
|
return 0; \
|
|
} \
|
|
if ((func_80029178(0x21) & 0xFF) != 0) { \
|
|
return 0; \
|
|
} \
|
|
} \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016FD08() \
|
|
extern s32 func_80172658(s32 *a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_8016FD08(u8 *s0) { \
|
|
s32 *p; \
|
|
if (func_80172658((s32 *)s0)) { \
|
|
func_80146D90((s32)s0); \
|
|
*(u16 *)(s0 + 0xAC) = *(u16 *)(s0 + 0xAC) | 0x40; \
|
|
*(u16 *)(s0 + 0xAA) = *(u16 *)(s0 + 0xAA) | 0x40; \
|
|
p = (s32 *)&D_8011F738; \
|
|
if ((*p = *p - 1) == 0) { \
|
|
func_80171990(s0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017385C() \
|
|
extern s16 D_80126B30; \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_8017385C(u8 *a0) { \
|
|
switch (D_80126B30) { \
|
|
case 0: \
|
|
default: \
|
|
*(u16 *)(a0 + 0xAC) |= 0x80; \
|
|
*(u16 *)(a0 + 0xAA) |= 0x80; \
|
|
break; \
|
|
case 1: \
|
|
*(u16 *)(a0 + 0xAC) |= 0x10; \
|
|
*(u16 *)(a0 + 0xAA) |= 0x10; \
|
|
break; \
|
|
} \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012DEB8() \
|
|
extern void func_8012F214(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); \
|
|
extern s16 D_80126B9A; \
|
|
s32 func_8012DEB8(s32 a0, s32 a1, s32 a2) { \
|
|
s32 sp10[2]; \
|
|
s32 sp18[2]; \
|
|
func_8012F214(a0, a1, (s32)sp10); \
|
|
func_8012F214(a0, a2, (s32)sp18); \
|
|
if (func_8012DF34(a0, (s32)sp10, (s32)sp18) != 0) { \
|
|
D_80126B9A = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013A448() \
|
|
extern void func_8013A530(); \
|
|
void func_8013A448(void *a0) { \
|
|
s16 *a1 = *(s16 **)((char *)a0 + 0x4); \
|
|
if (*(u16 *)((char *)a0 + 0x2) == 0) { \
|
|
*(s16 *)((char *)a1 + 0x2A) = 0x400; \
|
|
*(s16 *)((char *)a1 + 0x28) = 0x400; \
|
|
*(s16 *)((char *)a0 + 0x2) = *(u16 *)((char *)a0 + 0x2) + 1; \
|
|
} else { \
|
|
*(s16 *)((char *)a1 + 0x28) = *(u16 *)((char *)a1 + 0x28) + 0x200; \
|
|
*(s16 *)((char *)a1 + 0x2A) = *(u16 *)((char *)a1 + 0x2A) + 0x200; \
|
|
if (*(s16 *)((char *)a1 + 0x28) == 0x1000) { \
|
|
*(s16 *)((char *)a0 + 0x0) = 2; \
|
|
*(s16 *)((char *)a0 + 0x2) = 0; \
|
|
} \
|
|
} \
|
|
func_8013A530(); \
|
|
}
|
|
|
|
#define DEFINE_func_801417F8() \
|
|
extern void func_800D2624(void); \
|
|
extern u8 D_800B9A15; \
|
|
extern u8 D_800B9A16; \
|
|
extern short D_800B9A02; \
|
|
extern u16 D_80115114; \
|
|
extern u16 D_80115112; \
|
|
void func_801417F8(void) { \
|
|
if (D_800B9A15 == 0 || D_800B9A16 != 0) { \
|
|
if (D_80115114 == (u16)(D_800B9A02 ^ 1)) { \
|
|
func_800D2624(); \
|
|
} else { \
|
|
D_80115112 += 1; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80151F38() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80151FB4(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
extern s32 func_80172630(u8 *a0); \
|
|
void func_80151F38(s32 *a0) { \
|
|
func_80149020(a0); \
|
|
*(s16 *)((char *)a0 + 0x64) = *(u16 *)((char *)a0 + 0x64) - (*(u8 *)((char *)a0 + 0xDE) << 6); \
|
|
*(u8 *)((char *)a0 + 0xDE) = *(u8 *)((char *)a0 + 0xDE) + 8; \
|
|
if (*(s16 *)((char *)a0 + 0x64) < 0x1000) { \
|
|
func_80151FB4((s32)a0); \
|
|
func_80159B3C(a0); \
|
|
func_80165718((s32)a0); \
|
|
} else { \
|
|
func_80172630((u8 *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152714() \
|
|
extern void func_80019064(void *a0); \
|
|
extern int func_80151204(int arg, int a1); \
|
|
extern void func_80152790(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
extern u8 D_80062BF4[]; \
|
|
extern u8 D_80078EC1; \
|
|
void func_80152714(s32 a0) { \
|
|
s32 sp[8]; \
|
|
func_80019064((void *)D_80062BF4); \
|
|
func_80151204(a0, *(s16 *)(a0 + 0xF2)); \
|
|
if (D_80078EC1 != 2) { \
|
|
*(s32 *)(a0 + 0x1AC) = 0x3C0000; \
|
|
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) | 0x100; \
|
|
} \
|
|
func_80152790(a0); \
|
|
func_80159B3C((void *)a0); \
|
|
func_80165718(a0); \
|
|
(void)sp; \
|
|
}
|
|
|
|
#define DEFINE_func_80155B20() \
|
|
extern int func_80161208(); \
|
|
extern void func_80146D80(s32 *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_800D4DA8[]; \
|
|
void func_80155B20(s32 *a0) { \
|
|
a0[0x44 / 4] |= 2; \
|
|
if (func_80161208() == 0) { \
|
|
if (*(u16 *)((char *)a0 + 0xB8) == 0x8000) { \
|
|
func_80146D80(a0); \
|
|
func_801477E8(a0, 0xFFF00000); \
|
|
func_80154274(a0, (s32)D_800D4DA8); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016345C() \
|
|
extern u16 func_80156370(u16 a0); \
|
|
extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); \
|
|
void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4) { \
|
|
s32 r; \
|
|
r = func_80156370(a1); \
|
|
func_80163534(a0, a1, (u16)r, a2, a3, a4); \
|
|
}
|
|
|
|
#define DEFINE_func_8016E26C() \
|
|
extern void func_8016E3CC(s32 a0); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_8016E26C(s32 *a0) { \
|
|
func_8016E3CC((s32)a0); \
|
|
if (--a0[0x1C / 4] != 0) { \
|
|
func_80146A6C(0x48, a0, 0, 0, 0, 0x8000, 0); \
|
|
} else { \
|
|
a0[0x1C / 4] = 0x10; \
|
|
*(u16 *)((char *)a0 + 2) += 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012A908() \
|
|
extern u8 D_801202A0[]; \
|
|
extern u16 D_801270C0; \
|
|
extern void func_8012A988(u8 *a0); \
|
|
void func_8012A908(void) { \
|
|
u8 *p = D_801202A0; \
|
|
s32 i; \
|
|
for (i = 0; i < 0x60; i++) { \
|
|
if (((s16)D_801270C0 == 1) || (*(u16 *)(p + 0x72) & 0x1000)) { \
|
|
func_8012A988(p); \
|
|
} \
|
|
p += 0x10C; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80133060() \
|
|
extern void func_801330E0(s16 *a0, s16 *a1, s32 a2); \
|
|
void func_80133060(u8 *a0, s32 *a1, s32 a2) { \
|
|
s16 tmp[3]; \
|
|
tmp[0] = *(u16 *)(a0 + 2); \
|
|
tmp[1] = *(u16 *)(a0 + 6); \
|
|
tmp[2] = *(u16 *)(a0 + 0xA); \
|
|
func_801330E0(tmp, tmp, (s16)a2); \
|
|
a1[0] = tmp[0] << 16; \
|
|
a1[1] = tmp[1] << 16; \
|
|
a1[2] = tmp[2] << 16; \
|
|
}
|
|
|
|
#define DEFINE_func_80142D38() \
|
|
extern s32 func_8012BEE8(s32 a0); \
|
|
s32 func_80142D38(s32 *a0) { \
|
|
if (func_8012BEE8((s32)a0) == 1) { \
|
|
return 1; \
|
|
} \
|
|
if (a0[0x1C / 4] & 1) { \
|
|
((s32 *)a0[0x20 / 4])[1] |= 0x80000000; \
|
|
} else { \
|
|
((s32 *)a0[0x20 / 4])[1] &= 0x7FFFFFFF; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80150BC8() \
|
|
extern u16 D_800B99DA; \
|
|
extern s32 func_801619D0(void *a0); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u8 func_8014BF6C(void); \
|
|
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
|
|
void func_80150BC8(s32 *a0) { \
|
|
if (func_801619D0(a0) != 0) { \
|
|
if (D_800B99DA & 0x7) { \
|
|
func_80146994(0x34, (s32)a0, 0, 0); \
|
|
} \
|
|
} else { \
|
|
if ((func_8014BF6C() & 0xFF) == 0) { \
|
|
func_80151184((s32)a0, 0xC003, 0x10); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80153410() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern void func_801470B4(s32 a0); \
|
|
extern void func_8015369C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80153410(s32 *a0) { \
|
|
func_80149020(a0); \
|
|
func_80148038((s32)a0, 0x18000); \
|
|
func_80147460((s32)a0); \
|
|
if (*(s16 *)((u8 *)a0 + 0xA) < 0x201) { \
|
|
u8 v1 = *(u8 *)((u8 *)a0 + 0xDE); \
|
|
*(u8 *)((u8 *)a0 + 0xDE) = v1 + 0xFF; \
|
|
if (v1 != 0) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_801470B4((s32)a0); \
|
|
func_8015369C((s32)a0); \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80153B58() \
|
|
extern u16 D_800B99DA; \
|
|
extern s32 func_8016DA04(s32 a0); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80153B58(s32 *a0) { \
|
|
if ((D_800B99DA & 0x3) == 0) { \
|
|
func_8016DA04((s32)a0); \
|
|
} \
|
|
if ((D_800B99DA & 0x1) == 0) { \
|
|
func_80146A6C(3, a0, \
|
|
*(s16 *)((u8 *)a0 + 6), \
|
|
*(s16 *)((u8 *)a0 + 0xA), \
|
|
*(s16 *)((u8 *)a0 + 0xE), \
|
|
0x8880000, 0x18009000); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801592CC() \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern s32 func_8013767C(s32 a0); \
|
|
extern void func_80146C98(s32 *a0, s16 a1); \
|
|
extern u8 D_80110C3C[]; \
|
|
void func_801592CC(s32 *a0) { \
|
|
s32 *s0 = a0; \
|
|
s32 *v1 = (s32 *)s0[0x20 / 4]; \
|
|
*(s16 *)((char *)v1 + 0x12) = (*(u16 *)((char *)v1 + 0x12) + 0x16) & 0xFFF; \
|
|
if (func_801399F0(s0[0x198 / 4]) != 0) { \
|
|
func_80139914(s0[0x198 / 4]); \
|
|
s0[0x198 / 4] = func_8013767C((s32)D_80110C3C); \
|
|
func_80146C98(s0, 9); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801642AC() \
|
|
extern void func_80164418(void); \
|
|
extern s32 func_80013328(s32 a0, s32 a1); \
|
|
extern s32 func_80146E98(s32 a0); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_80163764(s32 a0); \
|
|
void func_801642AC(s32 a0) { \
|
|
s32 s1 = a0; \
|
|
s32 s0 = *(s32 *)(s1 + 0x4C); \
|
|
func_80164418(); \
|
|
if (func_80013328(s0 + 4, s1 + 4) < 0x28 || func_80146E98(s1) != 0) { \
|
|
func_80146E90((s32 *)s1, 8); \
|
|
func_80147324(0x44A); \
|
|
func_80146CA0((void *)s1); \
|
|
} \
|
|
func_80163764(s1); \
|
|
}
|
|
|
|
#define DEFINE_func_8016D984() \
|
|
extern void func_80146C3C(void); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
void func_8016D984(s32 *a0) { \
|
|
if ((--*(s32 *)((char *)a0 + 0x1C)) == 0) { \
|
|
func_80146C3C(); \
|
|
} else { \
|
|
func_800D22E4((s32)a0); \
|
|
*(s32 *)((char *)a0 + 0x10) -= *(s32 *)((char *)a0 + 0x10) >> 4; \
|
|
*(s32 *)((char *)a0 + 0x14) -= *(s32 *)((char *)a0 + 0x14) >> 4; \
|
|
*(s32 *)((char *)a0 + 0x18) -= *(s32 *)((char *)a0 + 0x18) >> 4; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017162C() \
|
|
extern void *D_8011F738; \
|
|
extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8017162C(void *a0) { \
|
|
void *s1 = a0; \
|
|
void *s0 = D_8011F738; \
|
|
s32 local; \
|
|
local = 0; \
|
|
func_801716AC(0, s0, &local); \
|
|
func_801716AC(1, s0, &local); \
|
|
func_801716AC(2, s0, &local); \
|
|
if (local == 0) { \
|
|
func_80171928(s1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80128C14() \
|
|
extern void func_80010AE0(s32 a0); \
|
|
extern s16 currentLocationId; \
|
|
void func_80128C14(void) { \
|
|
s32 a0; \
|
|
switch (currentLocationId) { \
|
|
case 0x3023: \
|
|
a0 = 0x4E0; \
|
|
break; \
|
|
case 0x3081: \
|
|
a0 = 0x420; \
|
|
break; \
|
|
case 0x3067: \
|
|
a0 = 0x480; \
|
|
break; \
|
|
case 0x3093: \
|
|
a0 = 0xFFB; \
|
|
break; \
|
|
case 0x30A5: \
|
|
a0 = 0xFFB; \
|
|
break; \
|
|
default: \
|
|
a0 = 0x3E0; \
|
|
break; \
|
|
} \
|
|
func_80010AE0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B030() \
|
|
extern s32 func_80134510(s32 arg); \
|
|
s32 func_8012B030(u8 *a0) { \
|
|
u16 local[3]; \
|
|
local[0] = *(u16 *)(a0 + 0x6); \
|
|
local[1] = *(u16 *)(a0 + 0xA); \
|
|
local[2] = *(u16 *)(a0 + 0xE); \
|
|
if (func_80134510((s32)local) == 0) { \
|
|
return 0; \
|
|
} \
|
|
*(u16 *)(a0 + 0x6) = local[0]; \
|
|
*(u16 *)(a0 + 0xA) = local[1]; \
|
|
*(u16 *)(a0 + 0xE) = local[2]; \
|
|
*(u16 *)(a0 + 0xC) = 0; \
|
|
*(u16 *)(a0 + 0x8) = 0; \
|
|
*(u16 *)(a0 + 0x4) = 0; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012FF98() \
|
|
extern s32 func_8012BEE8(s32 a0); \
|
|
extern void func_80130D48(s32 a0); \
|
|
extern void func_801319E0(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012FF98(u8 *a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x20) { \
|
|
s32 p = *(s32 *)(a0 + 0x20); \
|
|
if (p != 0) { \
|
|
*(u32 *)(p + 4) ^= 0x80000000; \
|
|
} \
|
|
if (func_8012BEE8((s32)a0)) { \
|
|
func_80130D48((s32)a0); \
|
|
func_801319E0((s32)a0); \
|
|
} \
|
|
} \
|
|
func_80131CA8((int)a0, 0x10); \
|
|
}
|
|
|
|
#define DEFINE_func_801305CC() \
|
|
extern s32 func_80131A34(s32, s32); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_801305CC(u8 *a0) { \
|
|
*(u8 *)(a0 + 0xC1) = 0xC; \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x1000) { \
|
|
*(s32 *)(a0 + 0x1C) = 0x3C; \
|
|
*(s32 *)(a0 + 0xC4) = *(s32 *)(a0 + 0xC4) & ~4; \
|
|
if (func_80131A34((s32)a0, 0x20)) { \
|
|
*(s32 *)(a0 + 0xC4) = *(s32 *)(a0 + 0xC4) | 4; \
|
|
} else { \
|
|
*(u16 *)(a0 + 0x98) = 0; \
|
|
} \
|
|
} \
|
|
func_80131CA8((int)a0, 0x22); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E9B8() \
|
|
extern u8 D_80078EC0; \
|
|
extern s16 D_801152A0; \
|
|
extern void func_80160818(s32 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80149034(s32 *a0); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern s32 func_80149184(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015E9B8(s32 *a0) { \
|
|
if (D_80078EC0 & 0x80) { \
|
|
func_80160818(a0); \
|
|
} else { \
|
|
func_80154150((s32)a0, 0x1D); \
|
|
a0[0x44 / 4] |= 1; \
|
|
func_80149034(a0); \
|
|
func_801553A8(a0); \
|
|
D_801152A0 = func_80149184((s32)a0); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012DF34() \
|
|
extern s32 D_80126B58; \
|
|
extern u8 D_801152A8[]; \
|
|
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); \
|
|
s32 func_8012DF34(s32 a0, s32 a1, s32 a2) { \
|
|
s32 s0 = a2; \
|
|
s32 *p = &D_80126B58; \
|
|
if (a0 != 0) { \
|
|
if (*(s16 *)(a0 + 0xAA) != 0) { \
|
|
return 0; \
|
|
} \
|
|
} \
|
|
if (func_80135888(*(s32 *)((s32)p + 0x20), *(s32 *)((s32)p + 0x38), a1, s0) != 0) { \
|
|
func_8012F568(1, 1, 0, 0xA, s0, (s32)D_801152A8); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80139E84() \
|
|
extern void func_80139A8C(s32 a0); \
|
|
extern void func_80139B18(s32 a0); \
|
|
void func_80139E84(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
if (*(u16 *)(s0 + 0xE) == 0) { \
|
|
*(s16 *)(s0 + 0x4) = 2; \
|
|
} else { \
|
|
func_80139A8C(s0); \
|
|
if ((*(s32 *)(s0 + 0x8) & 0x80020) != 0) { \
|
|
*(s16 *)(s0 + 0x4) = 2; \
|
|
*(s16 *)(s0 + 0xE) = 0; \
|
|
if ((*(s32 *)(s0 + 0x8) & 0x20000) == 0) { \
|
|
*(s32 *)(s0 + 0x8) = *(s32 *)(s0 + 0x8) & -0x21; \
|
|
} \
|
|
} \
|
|
} \
|
|
func_80139B18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_80146FC4() \
|
|
extern u8 D_80126DB0[]; \
|
|
extern u16 D_80126DB6; \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern void *memcpy(void *dst, const void *src, u32 n); \
|
|
void func_80146FC4(s32 a0) { \
|
|
s32 s1 = a0; \
|
|
s32 s0; \
|
|
if (*(s16 *)(s1 + 0xA) >= 0x401) { \
|
|
s0 = (s32)D_80126DB0; \
|
|
func_80015954(s0, s1 + 0x4); \
|
|
memcpy((void *)(s1 + 0x88), (void *)s0, 8); \
|
|
*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12) = D_80126DB6; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014D0A4() \
|
|
extern void func_8014D2A0(s32 a0, void *a1, void *a2); \
|
|
extern void func_8014D12C(s32 a0, void *a1, void *a2); \
|
|
void func_8014D0A4(s32 a0) { \
|
|
s16 buf1[4]; \
|
|
s16 buf2[4]; \
|
|
buf1[0] = *(u16 *)(a0 + 0x88); \
|
|
buf1[1] = *(u16 *)(a0 + 0x8A); \
|
|
buf1[2] = *(u16 *)(a0 + 0x8C); \
|
|
buf2[0] = *(u16 *)(a0 + 0x6); \
|
|
buf2[1] = *(u16 *)(a0 + 0xA); \
|
|
buf2[2] = *(u16 *)(a0 + 0xE); \
|
|
if (*(s32 *)(a0 + 0x174) == 0) { \
|
|
func_8014D2A0(a0, buf1, buf2); \
|
|
} else { \
|
|
func_8014D12C(a0, buf1, buf2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014D438() \
|
|
extern void func_8014D610(s32 a0, void *a1, void *a2); \
|
|
extern void func_8014D4C0(s32 a0, void *a1, void *a2); \
|
|
void func_8014D438(s32 a0) { \
|
|
s16 buf1[4]; \
|
|
s16 buf2[4]; \
|
|
buf1[0] = *(u16 *)(a0 + 0x88); \
|
|
buf1[1] = *(u16 *)(a0 + 0x8A); \
|
|
buf1[2] = *(u16 *)(a0 + 0x8C); \
|
|
buf2[0] = *(u16 *)(a0 + 0x6); \
|
|
buf2[1] = *(u16 *)(a0 + 0xA); \
|
|
buf2[2] = *(u16 *)(a0 + 0xE); \
|
|
if (*(s32 *)(a0 + 0x174) == 0) { \
|
|
func_8014D610(a0, buf1, buf2); \
|
|
} else { \
|
|
func_8014D4C0(a0, buf1, buf2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80158CD8() \
|
|
extern u16 func_801487F4(s32 *a0); \
|
|
extern s32 func_80146E98(s32 a0); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80158CD8(s32 *a0) { \
|
|
s32 i = 1; \
|
|
if (func_801487F4(a0) & 0xF0) { \
|
|
i = 4; \
|
|
} \
|
|
while (i > 0) { \
|
|
if (func_80146E98((s32)a0)) { \
|
|
func_80147324(0x453); \
|
|
*(s32 *)((s32)a0 + 0x238) = 0x5B0000; \
|
|
func_80146CA0((void *)a0); \
|
|
i = 0; \
|
|
} \
|
|
i--; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801598E0() \
|
|
extern void func_80159968(void *a0); \
|
|
void func_801598E0(u8 *a0) { \
|
|
switch (a0[0xA9]) { \
|
|
case 0x41: \
|
|
*(u16 *)(a0 + 0xAA) &= 0xAFFF; \
|
|
*(u16 *)(a0 + 0xAC) &= 0xAFFF; \
|
|
break; \
|
|
case 0x53: \
|
|
case 0x73: \
|
|
*(u16 *)(a0 + 0xAE) = a0[0xAE] | 0x8000; \
|
|
break; \
|
|
} \
|
|
func_80159968((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801741EC() \
|
|
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
extern s16 D_80126B3C; \
|
|
extern s16 D_8011F9C8; \
|
|
void func_801741EC(u8 *a0) { \
|
|
s32 v0; \
|
|
s32 s1; \
|
|
s32 t; \
|
|
v0 = *(s32 *)(a0 + 0x20); \
|
|
s1 = func_80012B04(*(s16 *)(v0 + 0x12), D_80126B3C, 4); \
|
|
if ((s16)s1 == 0) { \
|
|
D_8011F9C8 = 1; \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
} \
|
|
t = *(s32 *)(a0 + 0x20); \
|
|
*(u16 *)(t + 0x12) = (*(u16 *)(t + 0x12) + s1) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8012F2E8() \
|
|
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
|
|
void func_8012F2E8(s32 a0, s32 a1, s32 a2) { \
|
|
s32 s0 = a2; \
|
|
s32 in[3]; \
|
|
s32 out[3]; \
|
|
s32 mtx; \
|
|
mtx = *(s32 *)(a0 + 0x20); \
|
|
in[0] = *(s16 *)(a1 + 0x0) - *(s32 *)(mtx + 0x48); \
|
|
in[1] = *(s16 *)(a1 + 0x2) - *(s32 *)(mtx + 0x4C); \
|
|
in[2] = *(s16 *)(a1 + 0x4) - *(s32 *)(mtx + 0x50); \
|
|
ApplyTransposeMatrixLV((void *)(mtx + 0x34), in, out); \
|
|
*(s16 *)(s0 + 0x0) = out[0]; \
|
|
*(s16 *)(s0 + 0x2) = out[1]; \
|
|
*(s16 *)(s0 + 0x4) = out[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_801377B4() \
|
|
extern s32 D_80127524; \
|
|
extern s32 D_80127528; \
|
|
extern void func_80137840(s32 a0); \
|
|
void func_801377B4(s32 a0, s32 a1, s32 a2) { \
|
|
s32 s1 = a0; \
|
|
s32 s0 = a1; \
|
|
s32 s2 = a2; \
|
|
s32 *p; \
|
|
s32 v1; \
|
|
func_80137840(s2); \
|
|
*(s16 *)(s2 + 0x4) = 1; \
|
|
*(s32 *)(s2 + 0x0) = s1; \
|
|
*(s32 *)(s2 + 0x8) = (s16)s0; \
|
|
if ((s0 & 0x2000) == 0) { \
|
|
p = &D_80127524; \
|
|
v1 = *p; \
|
|
if (v1 != 0) { \
|
|
D_80127528 = v1; \
|
|
*(s16 *)(v1 + 0x1A) = 2; \
|
|
} \
|
|
*p = s2; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80139A8C() \
|
|
extern s32 func_80014E80(s32 a0, s32 a1); \
|
|
extern void func_8001931C(void); \
|
|
extern s16 D_8012752C; \
|
|
void func_80139A8C(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 v0; \
|
|
s32 v1; \
|
|
v0 = *(s32 *)(s0 + 0x8); \
|
|
if ((v0 & 0x2021) != 0) { \
|
|
return; \
|
|
} \
|
|
if ((s16)func_80014E80(0, 0x20) == 0) { \
|
|
return; \
|
|
} \
|
|
v0 = *(s32 *)(s0 + 0x8); \
|
|
v1 = v0 | 0x20; \
|
|
*(s32 *)(s0 + 0x8) = v1; \
|
|
if ((v1 & 0x10000) == 0) { \
|
|
return; \
|
|
} \
|
|
*(s32 *)(s0 + 0x8) = (v1 & 0xFFFEFFFF) | 0x20000; \
|
|
func_8001931C(); \
|
|
D_8012752C = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801490F8() \
|
|
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
|
|
void func_801490F8(s32 a0, s32 a1) { \
|
|
s32 s0 = a0; \
|
|
s32 s1 = (s16)a1; \
|
|
*(s16 *)(s0 + 0x100) = \
|
|
*(u16 *)(s0 + 0x100) + \
|
|
func_80012B04(*(s16 *)(s0 + 0x100), *(s16 *)(s0 + 0x108), s1); \
|
|
*(s16 *)(s0 + 0x102) = \
|
|
*(u16 *)(s0 + 0x102) + \
|
|
func_80012B04(*(s16 *)(s0 + 0x102), *(s16 *)(s0 + 0x10A), s1); \
|
|
*(s16 *)(s0 + 0x104) = \
|
|
*(u16 *)(s0 + 0x104) + \
|
|
func_80012B04(*(s16 *)(s0 + 0x104), *(s16 *)(s0 + 0x10C), s1); \
|
|
}
|
|
|
|
#define DEFINE_func_8016829C() \
|
|
extern void func_80146C3C(void); \
|
|
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_8016829C(s32 a0) { \
|
|
s32 *s0 = (s32 *)a0; \
|
|
if ((*(s32 *)(*(s32 *)(a0 + 0x34) + 0x44) & 0x2) == 0) { \
|
|
func_80146C3C(); \
|
|
} else { \
|
|
s16 v0 = *(u16 *)(a0 + 0x2A) - 1; \
|
|
*(s16 *)(a0 + 0x2A) = v0; \
|
|
if (v0 == 0) { \
|
|
func_80166994(a0, 0, *(s16 *)(a0 + 0x2C), 0); \
|
|
*(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
|
|
} \
|
|
} \
|
|
(void)s0; \
|
|
}
|
|
|
|
#define DEFINE_func_801684B4() \
|
|
extern void func_80146C3C(void); \
|
|
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_801684B4(s32 a0) { \
|
|
if ((*(s32 *)(*(s32 *)(a0 + 0x34) + 0x44) & 0x2) == 0) { \
|
|
func_80146C3C(); \
|
|
} else { \
|
|
s16 v0 = *(u16 *)(a0 + 0x2A) - 1; \
|
|
*(s16 *)(a0 + 0x2A) = v0; \
|
|
if (v0 == 0) { \
|
|
func_80166994(a0, 0, 2, 0); \
|
|
*(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80168AE4() \
|
|
extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80168AE4(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
func_80168BDC(s0, 9, 3, 2); \
|
|
func_80168BDC(s0, 9, 2, 1); \
|
|
func_80146A6C(3, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), \
|
|
*(s16 *)(s0 + 0xE), -5, 0xC0009C00); \
|
|
*(s32 *)(s0 + 0x1C) = 1; \
|
|
*(s16 *)(s0 + 0x2) = *(u16 *)(s0 + 0x2) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012F0BC() \
|
|
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
|
|
void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2) { \
|
|
s32 in[3]; \
|
|
s32 out[3]; \
|
|
in[0] = a1[0] - (a0[5] << 16); \
|
|
in[1] = a1[1] - (a0[6] << 16); \
|
|
in[2] = a1[2] - (a0[7] << 16); \
|
|
ApplyTransposeMatrixLV(a0, in, out); \
|
|
a2[0] = out[0]; \
|
|
a2[1] = out[1]; \
|
|
a2[2] = out[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_8014D790() \
|
|
extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); \
|
|
extern void func_8014D820(s32 a0, void *a1, void *a2); \
|
|
void func_8014D790(s32 a0) { \
|
|
s16 l1[3]; \
|
|
s16 l2[3]; \
|
|
l1[0] = *(u16 *)(a0 + 0x88); \
|
|
l1[1] = *(u16 *)(a0 + 0x8A) - 0x10; \
|
|
l1[2] = *(u16 *)(a0 + 0x8C); \
|
|
l2[0] = *(u16 *)(a0 + 0x6); \
|
|
l2[1] = *(u16 *)(a0 + 0xA) - 0x10; \
|
|
l2[2] = *(u16 *)(a0 + 0xE); \
|
|
if (*(s32 *)(a0 + 0x170) == 0) { \
|
|
func_8014DD8C(a0, l1, l2); \
|
|
} else { \
|
|
func_8014D820(a0, l1, l2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80178744() \
|
|
extern void func_80178744(s32 a0, s32 a1); \
|
|
void func_80178744(s32 a0, s32 a1) { \
|
|
s32 v0; \
|
|
s16 sv; \
|
|
if (*(s32 *)(a0 + 0x6C) != 0) { \
|
|
func_80178744(*(s32 *)(a0 + 0x6C), a1); \
|
|
} \
|
|
v0 = *(s32 *)(a0 + 0x20); \
|
|
sv = a1; \
|
|
*(s16 *)(v0 + 0x1C) = sv; \
|
|
*(s16 *)(v0 + 0x1A) = sv; \
|
|
*(s16 *)(v0 + 0x18) = sv; \
|
|
if (a1 == 0x1000) { \
|
|
s32 v1 = *(s32 *)(a0 + 0x20); \
|
|
*(u16 *)(v1 + 0x2C) = *(u16 *)(v1 + 0x2C) & 0xFFEF; \
|
|
} else { \
|
|
s32 v1 = *(s32 *)(a0 + 0x20); \
|
|
*(u16 *)(v1 + 0x2C) = *(u16 *)(v1 + 0x2C) | 0x10; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80142838() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_8012C0EC(s32 *a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
extern void func_80142C9C(s32 *a0); \
|
|
extern s32 func_8012BF10(s32 a0, s32 a1); \
|
|
extern void func_8012AD44(s32 *a0, s16 a1); \
|
|
void func_80142838(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
|
|
if (func_8012C0EC(a0) == 0) { \
|
|
return; \
|
|
} \
|
|
func_80142BB4(a0, 0, 3); \
|
|
return; \
|
|
} \
|
|
func_80142C9C(a0); \
|
|
if (func_8012BF10((s32)a0, 0x30) != 0) { \
|
|
func_8012AD44(a0, 2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80142F68() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_8012C0EC(s32 *a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
extern void func_80142C9C(s32 *a0); \
|
|
extern s32 func_8012BF10(s32 a0, s32 a1); \
|
|
extern void func_8012AD44(s32 *a0, s16 a1); \
|
|
void func_80142F68(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
|
|
if (func_8012C0EC(a0) == 0) { \
|
|
return; \
|
|
} \
|
|
func_80142BB4(a0, 0, 3); \
|
|
return; \
|
|
} \
|
|
func_80142C9C(a0); \
|
|
if (func_8012BF10((s32)a0, 0x30) != 0) { \
|
|
func_8012AD44(a0, 2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801430F4() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_8012C0EC(s32 *a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
extern void func_80142C9C(s32 *a0); \
|
|
extern s32 func_8012BF10(s32 a0, s32 a1); \
|
|
extern void func_8012AD44(s32 *a0, s16 a1); \
|
|
void func_801430F4(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
|
|
if (func_8012C0EC(a0) == 0) { \
|
|
return; \
|
|
} \
|
|
func_80142BB4(a0, 0, 3); \
|
|
return; \
|
|
} \
|
|
func_80142C9C(a0); \
|
|
if (func_8012BF10((s32)a0, 0x30) != 0) { \
|
|
func_8012AD44(a0, 2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B504() \
|
|
extern s32 func_8016F1AC(void); \
|
|
extern s16 D_80078E9A; \
|
|
extern s32 D_80078E98; \
|
|
void func_8014B504(u16 *a0) { \
|
|
s32 v1; \
|
|
if (func_8016F1AC() != 0) { \
|
|
return; \
|
|
} \
|
|
if (*a0 == 0x1E || *a0 == 0x1A) { \
|
|
return; \
|
|
} \
|
|
if ((D_80078E9A & 0x8000) == 0) { \
|
|
return; \
|
|
} \
|
|
v1 = D_80078E98 + 0x1555; \
|
|
D_80078E98 = v1; \
|
|
if (0x257F6A < (v1 & 0x7FFF0000)) { \
|
|
D_80078E98 = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801636D0() \
|
|
extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); \
|
|
extern u16 D_80126B18[]; \
|
|
extern s32 D_80115200; \
|
|
void func_801636D0(s32 a0, s32 a1) { \
|
|
u32 i; \
|
|
s32 v; \
|
|
u16 *p; \
|
|
s32 *q; \
|
|
i = 0; \
|
|
v = a1 & 0x7FFF; \
|
|
p = D_80126B18; \
|
|
q = &D_80115200; \
|
|
do { \
|
|
if (*q & 1) { \
|
|
func_8014AD30(a0, p, 0, v & 0xFFFF); \
|
|
} \
|
|
p += 4; \
|
|
i++; \
|
|
q += 1; \
|
|
} while (i < 3); \
|
|
}
|
|
|
|
#define DEFINE_func_80176D00() \
|
|
extern s32 func_80178004(s32 a0, s32 a1, s32 a2); \
|
|
extern u8 D_8011F7B1; \
|
|
extern u8 D_8011F7A8; \
|
|
extern u16 D_80078EA6; \
|
|
extern u16 D_8011F7B4; \
|
|
extern u16 D_8011F7B6; \
|
|
extern s16 D_8011F81E; \
|
|
void func_80176D00(s32 a0) { \
|
|
u8 *arr = (u8 *)&D_8011F7A8; \
|
|
u8 *base; \
|
|
s32 tmp; \
|
|
s32 a1v, a2v; \
|
|
if (D_8011F7B1 != 0) { \
|
|
return; \
|
|
} \
|
|
base = arr + (s16)a0 * 4; \
|
|
tmp = *(s32 *)(base + 0x20) + 0x14; \
|
|
*(s32 *)(base + 0x38) = tmp; \
|
|
a1v = (s16)(D_8011F7B4 - 0x17); \
|
|
a2v = (s16)(D_8011F7B6 + 0x65); \
|
|
D_8011F81E = D_80078EA6; \
|
|
*(s32 *)(base + 0x40) = func_80178004(tmp, a1v, a2v) - 0x14; \
|
|
}
|
|
|
|
#define DEFINE_func_80178608() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern void func_8013E4B4(void); \
|
|
extern u8 D_801202A0[]; \
|
|
extern u16 D_801270C0; \
|
|
extern s16 D_801270C4; \
|
|
extern s32 D_801274D8; \
|
|
extern s16 D_801270C2; \
|
|
extern u8 D_801270C6; \
|
|
extern u8 D_801270C7; \
|
|
extern s32 D_801274DC; \
|
|
extern s32 D_801274E0; \
|
|
void func_80178608(void) { \
|
|
u16 *p = &D_801270C0; \
|
|
func_80016714(D_801202A0, 0x6480); \
|
|
*p = 1; \
|
|
D_801270C4 = 1; \
|
|
D_801274D8 = 0x240000; \
|
|
D_801270C2 = 0; \
|
|
D_801270C6 = 0; \
|
|
D_801270C7 = 0; \
|
|
D_801274DC = 0x271000; \
|
|
D_801274E0 = 0x400000; \
|
|
func_80016714((u8 *)p + 8, 0x400); \
|
|
func_8013E4B4(); \
|
|
}
|
|
|
|
#define DEFINE_func_8017C0BC() \
|
|
extern void func_80146C3C(void); \
|
|
void func_8017C0BC(u8 *p) { \
|
|
u8 *q; \
|
|
s32 t; \
|
|
s32 b; \
|
|
q = *(u8 **)(p + 0x20); \
|
|
*(u16 *)(p + 0x16) = *(u16 *)(p + 0x16) + *(u16 *)(p + 0x14); \
|
|
if (*(s32 *)(p + 0x1C) < 8) { \
|
|
*(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x200; \
|
|
} else { \
|
|
*(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x51; \
|
|
} \
|
|
b = *(u8 *)(q + 0x26) - 2; \
|
|
*(s16 *)(q + 0x1A) = *(u16 *)(p + 0x16); \
|
|
*(s8 *)(q + 0x26) = b; \
|
|
*(s8 *)(q + 0x25) = b; \
|
|
*(s8 *)(q + 0x24) = b; \
|
|
t = *(s32 *)(p + 0x1C); \
|
|
*(s32 *)(p + 0x1C) = t + 1; \
|
|
if (t >= 0x1E) { \
|
|
((void (*)(u8 *))func_80146C3C)(p); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80128420() \
|
|
extern void func_80129220(void); \
|
|
extern void func_801378F0(void); \
|
|
extern void func_80011E24(void); \
|
|
extern void func_80128C14(void); \
|
|
extern void func_8002AEF8(void); \
|
|
extern void func_800CFBBC(void); \
|
|
extern void func_80015310(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 void func_80011C10(void); \
|
|
extern u8 D_800B9A17; \
|
|
extern u8 D_800B9A10; \
|
|
void func_80128420(void) { \
|
|
func_80129220(); \
|
|
func_801378F0(); \
|
|
func_80011E24(); \
|
|
func_80128C14(); \
|
|
func_8002AEF8(); \
|
|
func_800CFBBC(); \
|
|
func_80015310(); \
|
|
SsUtReverbOff(); \
|
|
D_800B9A17 = 0; \
|
|
D_800B9A10 = 0; \
|
|
func_8013C98C(); \
|
|
func_80129C40(0); \
|
|
func_800D0630(); \
|
|
func_80145CEC(); \
|
|
func_80144B9C(); \
|
|
func_80011C10(); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BDBC() \
|
|
extern s16 D_80126CB8; \
|
|
extern s16 D_80126CB4; \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012BDBC(s32 a0, s32 a1) { \
|
|
s32 s0 = a0; \
|
|
s32 v0; \
|
|
s32 angle; \
|
|
v0 = ratan2(*(s16 *)(s0 + 0xE) - D_80126CB8, D_80126CB4 - *(s16 *)(s0 + 0x6)); \
|
|
v0 = (v0 - 0x400) & 0xFFF; \
|
|
v0 = v0 - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x12); \
|
|
angle = v0 & 0xFFF; \
|
|
if (angle < 0x800) { \
|
|
return angle < (s16)a1; \
|
|
} \
|
|
return (0x1000 - angle) < (s16)a1; \
|
|
}
|
|
|
|
#define DEFINE_func_8013E064() \
|
|
extern int SquareRoot12(int a0); \
|
|
int func_8013E064(s16 *a0, s16 *a1) { \
|
|
s32 d[3]; \
|
|
s32 sq[3]; \
|
|
d[0] = a0[1] - a1[1]; \
|
|
d[1] = a0[3] - a1[3]; \
|
|
d[2] = a0[5] - a1[5]; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
{ \
|
|
register s32 *pd __asm__("$2") = &d[0]; \
|
|
__asm__ __volatile__( \
|
|
"lwc2 $9, 0(%0)\n" \
|
|
"lwc2 $10, 4(%0)\n" \
|
|
"lwc2 $11, 8(%0)\n" \
|
|
"nop\n" \
|
|
"nop\n" \
|
|
"sqr 1\n" \
|
|
: : "r"(pd) : "$9", "$10", "$11", "memory"); \
|
|
} \
|
|
{ \
|
|
register s32 *pq __asm__("$2") = &sq[0]; \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" \
|
|
"swc2 $26, 4(%0)\n" \
|
|
"swc2 $27, 8(%0)\n" \
|
|
: : "r"(pq) : "memory"); \
|
|
} \
|
|
return SquareRoot12(sq[0] + sq[1] + sq[2]); \
|
|
}
|
|
|
|
#define DEFINE_func_8013E0FC() \
|
|
extern int SquareRoot12(int a0); \
|
|
int func_8013E0FC(s16 *a0, s16 *a1) { \
|
|
s32 d[3]; \
|
|
s32 sq[3]; \
|
|
d[0] = a0[1] - a1[0]; \
|
|
d[1] = a0[3] - a1[1]; \
|
|
d[2] = a0[5] - a1[2]; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
{ \
|
|
register s32 *pd __asm__("$2") = &d[0]; \
|
|
__asm__ __volatile__( \
|
|
"lwc2 $9, 0(%0)\n" \
|
|
"lwc2 $10, 4(%0)\n" \
|
|
"lwc2 $11, 8(%0)\n" \
|
|
"nop\n" \
|
|
"nop\n" \
|
|
"sqr 1\n" \
|
|
: : "r"(pd) : "$9", "$10", "$11", "memory"); \
|
|
} \
|
|
{ \
|
|
register s32 *pq __asm__("$2") = &sq[0]; \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" \
|
|
"swc2 $26, 4(%0)\n" \
|
|
"swc2 $27, 8(%0)\n" \
|
|
: : "r"(pq) : "memory"); \
|
|
} \
|
|
return SquareRoot12(sq[0] + sq[1] + sq[2]); \
|
|
}
|
|
|
|
#define DEFINE_func_8013E194() \
|
|
extern int SquareRoot12(int a0); \
|
|
int func_8013E194(s16 *a0, s16 *a1) { \
|
|
s32 d[3]; \
|
|
s32 sq[3]; \
|
|
d[0] = a0[0] - a1[0]; \
|
|
d[1] = a0[1] - a1[1]; \
|
|
d[2] = a0[2] - a1[2]; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
{ \
|
|
register s32 *pd __asm__("$2") = &d[0]; \
|
|
__asm__ __volatile__( \
|
|
"lwc2 $9, 0(%0)\n" \
|
|
"lwc2 $10, 4(%0)\n" \
|
|
"lwc2 $11, 8(%0)\n" \
|
|
"nop\n" \
|
|
"nop\n" \
|
|
"sqr 1\n" \
|
|
: : "r"(pd) : "$9", "$10", "$11", "memory"); \
|
|
} \
|
|
{ \
|
|
register s32 *pq __asm__("$2") = &sq[0]; \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" \
|
|
"swc2 $26, 4(%0)\n" \
|
|
"swc2 $27, 8(%0)\n" \
|
|
: : "r"(pq) : "memory"); \
|
|
} \
|
|
return SquareRoot12(sq[0] + sq[1] + sq[2]); \
|
|
}
|
|
|
|
#define DEFINE_func_80146EC0() \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern void func_80149374(s32 a0, s32 a1); \
|
|
extern void func_80146F58(s32 a0, s32 a1); \
|
|
void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
s32 s2 = a0; \
|
|
s32 s0 = a1; \
|
|
s32 s1 = a3; \
|
|
u16 buf[3]; \
|
|
func_80015954(a2, a1); \
|
|
func_80149374(s2, s0); \
|
|
func_80146F58(s1, (s32)&buf[0]); \
|
|
*(u16 *)(s0 + 2) = *(u16 *)(s0 + 2) + buf[0]; \
|
|
*(u16 *)(s0 + 6) = *(u16 *)(s0 + 6) + buf[1]; \
|
|
*(u16 *)(s0 + 0xA) = *(u16 *)(s0 + 0xA) + buf[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_80158C40() \
|
|
extern u16 func_801487F4(s32 *a0); \
|
|
extern s32 func_80159404(s32 a0, s32 a1); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80158C40(s32 *a0) { \
|
|
s32 n; \
|
|
s32 c; \
|
|
c = 0x3C000; \
|
|
n = 1; \
|
|
if (func_801487F4(a0) & 0xF0) { \
|
|
n = 4; \
|
|
} \
|
|
while (n > 0) { \
|
|
func_80159404((s32)a0, c); \
|
|
if (a0[0x234 / 4] < 0) { \
|
|
func_80146E90(a0, 4); \
|
|
func_80146CA0(a0); \
|
|
n = 0; \
|
|
} \
|
|
n--; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80128678() \
|
|
extern void func_80029444(void); \
|
|
extern void func_8014607C(void); \
|
|
extern void func_801287B8(void); \
|
|
extern void func_800D1754(void); \
|
|
void func_80128678(void) { \
|
|
__asm__ __volatile__( \
|
|
".set noreorder\n" \
|
|
"addiu $sp, $sp, -24\n" \
|
|
"sw $ra, 16($sp)\n" \
|
|
"lui $v0, 0x1f80\n" \
|
|
"ori $v0, $v0, 0x03fc\n" \
|
|
"addu $t0, $v0, $zero\n" \
|
|
"sw $sp, 0($t0)\n" \
|
|
"addiu $t0, $t0, -4\n" \
|
|
"addu $sp, $t0, $zero\n" \
|
|
"jal func_80029444\n" \
|
|
"addiu $sp, $sp, 4\n" \
|
|
"lw $sp, 0($sp)\n" \
|
|
"jal func_8014607C\n" \
|
|
"lui $v0, 0x1f80\n" \
|
|
"ori $v0, $v0, 0x03fc\n" \
|
|
"addu $t0, $v0, $zero\n" \
|
|
"sw $sp, 0($t0)\n" \
|
|
"addiu $t0, $t0, -4\n" \
|
|
"addu $sp, $t0, $zero\n" \
|
|
"jal func_801287B8\n" \
|
|
"addiu $sp, $sp, 4\n" \
|
|
"lw $sp, 0($sp)\n" \
|
|
"lui $v0, 0x1f80\n" \
|
|
"ori $v0, $v0, 0x03fc\n" \
|
|
"addu $t0, $v0, $zero\n" \
|
|
"sw $sp, 0($t0)\n" \
|
|
"addiu $t0, $t0, -4\n" \
|
|
"addu $sp, $t0, $zero\n" \
|
|
"jal func_800D1754\n" \
|
|
"addiu $sp, $sp, 4\n" \
|
|
"lw $sp, 0($sp)\n" \
|
|
"nop\n" \
|
|
"lw $ra, 16($sp)\n" \
|
|
"addiu $sp, $sp, 24\n" \
|
|
: : : "memory"); \
|
|
}
|
|
|
|
#define DEFINE_func_80152790() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_80152790(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
|
|
func_80154A74(s0, 0x11); \
|
|
func_801553C0(s0); \
|
|
func_801470AC((s32 *)s0); \
|
|
func_801472B4((void *)s0); \
|
|
*(s16 *)(s0 + 0x3E) = 0; \
|
|
*(s16 *)(s0 + 0x40) = 0; \
|
|
*(s16 *)(s0 + 0x42) = 0; \
|
|
*(s8 *)(s0 + 0xDD) = 0; \
|
|
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0x60) = 0x1000; \
|
|
*(s16 *)(s0 + 0x62) = 0x1000; \
|
|
*(s16 *)(s0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)s0, 0); \
|
|
func_80153C18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_8013E370() \
|
|
extern void *D_801274CC; \
|
|
extern s32 func_8013E410(void); \
|
|
extern s32 func_8013E448(s32 a0); \
|
|
extern void func_8012C724(s32 a0, s32 a1); \
|
|
void func_8013E370(void) { \
|
|
u8 *s0; \
|
|
u8 *s2; \
|
|
s32 r; \
|
|
s0 = (u8 *)D_801274CC; \
|
|
if (s0 == 0) return; \
|
|
if (*(u16 *)(s0 + 6) == 0) return; \
|
|
s2 = s0 + 6; \
|
|
do { \
|
|
if ((*(u16 *)(s2 + 4) & 0x8000) == 0) { \
|
|
r = func_8013E410(); \
|
|
if (r == 0) return; \
|
|
if (func_8013E448((s32)s0) != 0) { \
|
|
func_8012C724((s32)s0, r); \
|
|
} \
|
|
} \
|
|
s2 += 0x14; \
|
|
s0 += 0x14; \
|
|
} while (*(u16 *)s2 != 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014E514() \
|
|
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
s32 func_8014E514(u8 *a0, s32 a1, s32 a2) { \
|
|
u8 *p; \
|
|
s32 q; \
|
|
p = *(u8 **)(a0 + 0x17C); \
|
|
if (*(u16 *)p != 0 && \
|
|
(*(u16 *)(p + 0x5C) & 0x40) != 0 && \
|
|
(q = *(s32 *)(p + 0x58)) != 0 && \
|
|
func_80135888(*(s32 *)(p + 0x20), q, a1, a2) != 0) { \
|
|
goto success; \
|
|
} \
|
|
*(s32 *)(a0 + 0x17C) = 0; \
|
|
return 0; \
|
|
success: \
|
|
*(u16 *)(a0 + 6) = *(u16 *)(p + 6); \
|
|
*(u16 *)(a0 + 0xE) = *(u16 *)(p + 0xE); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8015B858() \
|
|
extern u8 D_800D4BE0[]; \
|
|
extern s32 D_8011F730; \
|
|
extern s32 func_8014A51C(void); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
s32 func_8015B858(u8 *a0) { \
|
|
if (*(u8 *)(a0 + 0x1C6) != 0) return 0; \
|
|
if (*(s32 *)(a0 + 0x240) != 0) return 0; \
|
|
if (func_8014A51C() == 0) return 0; \
|
|
*(s32 *)(a0 + 0x23C) = *(s32 *)(a0 + 0xB4); \
|
|
*(u8 *)(a0 + 0x244) = *(u8 *)(a0 + 0xBC); \
|
|
func_801477E8((s32 *)a0, 0xFFF20000); \
|
|
func_80154274((s32 *)a0, (s32)D_800D4BE0); \
|
|
D_8011F730 |= 2; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80163194() \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
extern void func_80162F60(s32 arg0, s32 arg1); \
|
|
extern void func_80162F80(s32 arg0, s32 arg1); \
|
|
extern void func_80162FA0(s32 arg0, s32 arg1); \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80146D30(s32 a0); \
|
|
void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4) { \
|
|
s32 pad[4]; \
|
|
s32 out[3]; \
|
|
(void)pad; \
|
|
func_80162F60(a0, a1); \
|
|
func_80162F80(a0, a2); \
|
|
func_80162FA0(a0, a3); \
|
|
func_800484EC(arg4, a0 + 0x24, (s32)out); \
|
|
D_80127090 = out[0]; \
|
|
D_80127094 = out[1]; \
|
|
D_80127098 = out[2]; \
|
|
func_80146D30(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012B370() \
|
|
extern void RotMatrixYXZ(void *m, void *p); \
|
|
void func_8012B370(int a0) { \
|
|
int q; \
|
|
int p; \
|
|
q = *(int *)(a0 + 0x20); \
|
|
if (q != 0) { \
|
|
RotMatrixYXZ((void *)(q + 0x10), (void *)(q + 0x34)); \
|
|
p = *(int *)(a0 + 0x20); \
|
|
*(s16 *)(p + 0x8) = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
|
|
*(s32 *)(p + 0x48) = *(s16 *)(p + 0x8); \
|
|
*(s16 *)(p + 0xA) = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
|
|
*(s32 *)(p + 0x4C) = *(s16 *)(p + 0xA); \
|
|
{ \
|
|
u16 e = *(u16 *)(a0 + 0xE); \
|
|
u16 t2c = *(u16 *)(p + 0x2C) | 0x1; \
|
|
s16 sum = e + *(u16 *)(a0 + 0x54); \
|
|
*(s16 *)(p + 0xC) = sum; \
|
|
*(u16 *)(p + 0x2C) = t2c; \
|
|
*(s32 *)(p + 0x50) = sum; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012B414() \
|
|
extern void func_8004978C(s16 *a0, void *a1); \
|
|
void func_8012B414(int a0) { \
|
|
int q; \
|
|
int p; \
|
|
q = *(int *)(a0 + 0x20); \
|
|
if (q != 0) { \
|
|
func_8004978C((s16 *)(q + 0x10), (void *)(q + 0x34)); \
|
|
p = *(int *)(a0 + 0x20); \
|
|
*(s16 *)(p + 0x8) = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
|
|
*(s32 *)(p + 0x48) = *(s16 *)(p + 0x8); \
|
|
*(s16 *)(p + 0xA) = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
|
|
*(s32 *)(p + 0x4C) = *(s16 *)(p + 0xA); \
|
|
{ \
|
|
u16 e = *(u16 *)(a0 + 0xE); \
|
|
u16 t2c = *(u16 *)(p + 0x2C) | 0x1; \
|
|
s16 sum = e + *(u16 *)(a0 + 0x54); \
|
|
*(s16 *)(p + 0xC) = sum; \
|
|
*(u16 *)(p + 0x2C) = t2c; \
|
|
*(s32 *)(p + 0x50) = sum; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801469C8() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern s32 D_8011D030; \
|
|
s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8) { \
|
|
int count; \
|
|
int p; \
|
|
int end; \
|
|
count = 0; \
|
|
p = (int)&D_8011D030; \
|
|
end = p + 0xA50; \
|
|
if ((u32)p < (u32)end) { \
|
|
int key = a0 & 0xFFFF; \
|
|
do { \
|
|
if (*(u16 *)(p + 0x0) == key) { \
|
|
count++; \
|
|
} \
|
|
p += 0x58; \
|
|
} while ((u32)p < (u32)end); \
|
|
} \
|
|
if ((u32)count < (u32)arg8) { \
|
|
return func_80146A6C(a0 & 0xFFFF, a1, (s16)a2, (s16)a3, (s16)arg5, arg6, arg7); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80152AC8() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_80152AC8(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
|
|
*(s8 *)(s0 + 0xA8) = 0x20; \
|
|
func_80154A74(s0, 0x11); \
|
|
func_801553C0(s0); \
|
|
func_801470AC((s32 *)s0); \
|
|
func_801472B4((void *)s0); \
|
|
*(s16 *)(s0 + 0x3E) = 0; \
|
|
*(s16 *)(s0 + 0x40) = 0; \
|
|
*(s16 *)(s0 + 0x42) = 0; \
|
|
*(s8 *)(s0 + 0xDD) = 0; \
|
|
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0x60) = 0x1000; \
|
|
*(s16 *)(s0 + 0x62) = 0x1000; \
|
|
*(s16 *)(s0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)s0, 0); \
|
|
func_80153C18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_80152FBC() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_80152FBC(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
|
|
*(s8 *)(s0 + 0xA8) = 0x20; \
|
|
func_80154A74(s0, 0x11); \
|
|
func_801553C0(s0); \
|
|
func_801470AC((s32 *)s0); \
|
|
func_801472B4((void *)s0); \
|
|
*(s16 *)(s0 + 0x3E) = 0; \
|
|
*(s16 *)(s0 + 0x40) = 0; \
|
|
*(s16 *)(s0 + 0x42) = 0; \
|
|
*(s8 *)(s0 + 0xDD) = 0; \
|
|
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0x60) = 0x1000; \
|
|
*(s16 *)(s0 + 0x62) = 0x1000; \
|
|
*(s16 *)(s0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)s0, 0); \
|
|
func_80153C18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015327C() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_8015327C(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
|
|
*(s8 *)(s0 + 0xA8) = 0x20; \
|
|
func_80154A74(s0, 0x11); \
|
|
func_801553C0(s0); \
|
|
func_801470AC((s32 *)s0); \
|
|
func_801472B4((void *)s0); \
|
|
*(s16 *)(s0 + 0x3E) = 0; \
|
|
*(s16 *)(s0 + 0x40) = 0; \
|
|
*(s16 *)(s0 + 0x42) = 0; \
|
|
*(s8 *)(s0 + 0xDD) = 0; \
|
|
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0x60) = 0x1000; \
|
|
*(s16 *)(s0 + 0x62) = 0x1000; \
|
|
*(s16 *)(s0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)s0, 0); \
|
|
func_80153C18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_80153550() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_80153550(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
|
|
*(s8 *)(s0 + 0xA8) = 0x20; \
|
|
func_80154A74(s0, 0x11); \
|
|
func_801553C0(s0); \
|
|
func_801470AC((s32 *)s0); \
|
|
func_801472B4((void *)s0); \
|
|
*(s16 *)(s0 + 0x3E) = 0; \
|
|
*(s16 *)(s0 + 0x40) = 0; \
|
|
*(s16 *)(s0 + 0x42) = 0; \
|
|
*(s8 *)(s0 + 0xDD) = 0; \
|
|
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0x60) = 0x1000; \
|
|
*(s16 *)(s0 + 0x62) = 0x1000; \
|
|
*(s16 *)(s0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)s0, 0); \
|
|
func_80153C18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015640C() \
|
|
extern s32 func_801564B0(s32 a0); \
|
|
extern s32 func_80029178(s32 a0); \
|
|
s32 func_8015640C(s32 a0, s32 a1) { \
|
|
if ((func_801564B0(a0) & 0xFFFF) != 0) { \
|
|
if ((func_80029178(0x1C) & 0xFF) != 0) { \
|
|
return (((175 * (a1 & 0xFFFF)) / 100) & 0xFFFF) | 0x8000; \
|
|
} else { \
|
|
return (((150 * (a1 & 0xFFFF)) / 100) & 0xFFFF) | 0x8000; \
|
|
} \
|
|
} \
|
|
return a1 & 0xFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8015B7B4() \
|
|
extern s32 func_80149B54(s32 *a0); \
|
|
extern void func_80156648(s32 *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80147300(u16 arg0); \
|
|
extern u8 D_800D4F8C[]; \
|
|
s32 func_8015B7B4(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
if (func_80149B54((s32 *)s0) != 0) { \
|
|
func_80156648((s32 *)s0); \
|
|
*(s8 *)(s0 + 0x1AA) = 0xC; \
|
|
*(s32 *)(s0 + 0x44) = *(s32 *)(s0 + 0x44) | 0x2; \
|
|
*(s32 *)(s0 + 0x23C) = *(s32 *)(s0 + 0xB4); \
|
|
*(s8 *)(s0 + 0x244) = *(u8 *)(s0 + 0xBC); \
|
|
func_80154274((s32 *)s0, (s32)D_800D4F8C); \
|
|
func_80154A74(s0, 0x22); \
|
|
*(s8 *)(s0 + 0xDA) = 0; \
|
|
func_80146994(5, s0, 5, 0); \
|
|
func_80147324(0x455); \
|
|
func_80147300(0x5F3); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8015E40C() \
|
|
extern void func_80148534(s32 a0, s32 a1); \
|
|
extern void func_80149374(s32 a0, s32 a1); \
|
|
void func_8015E40C(s32 a0) { \
|
|
s32 s1 = a0; \
|
|
s32 s0; \
|
|
s16 sp10[4]; \
|
|
u16 sp18[4]; \
|
|
s0 = *(s32 *)(s1 + 0x18C); \
|
|
if (s0 == 0) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)(s0 + 0x0) == 0) { \
|
|
return; \
|
|
} \
|
|
func_80148534((s32)sp10, (s32)sp18); \
|
|
*(s16 *)(s0 + 0x6) = sp18[0] + *(u16 *)(*(s32 *)(s0 + 0x78) + 0xC); \
|
|
*(s16 *)(s0 + 0xA) = sp18[1] + *(u16 *)(*(s32 *)(s0 + 0x78) + 0xE); \
|
|
*(s16 *)(s0 + 0xE) = sp18[2] + *(u16 *)(*(s32 *)(s0 + 0x78) + 0x10); \
|
|
func_80149374(s1, s0 + 0x4); \
|
|
}
|
|
|
|
#define DEFINE_func_8015FDCC() \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern s32 func_80028DE0(void); \
|
|
extern u8 func_80165700(s32 a0, s32 a1); \
|
|
extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015FDCC(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
if (func_801399F0(*(s32 *)(s0 + 0x198)) != 0) { \
|
|
func_80147324(0x19); \
|
|
func_80139914(*(s32 *)(s0 + 0x198)); \
|
|
*(s32 *)(s0 + 0x198) = 0; \
|
|
if (func_80028DE0() == 0) { \
|
|
if ((func_80165700(s0, *(u8 *)(s0 + 0x1A0)) & 0xFF) != 0) { \
|
|
func_801466F0(0x24, s0, 0, 0, 0, 0, 0, 0); \
|
|
func_80147324(0x989); \
|
|
} \
|
|
} \
|
|
func_80146CA0((void *)s0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017C66C() \
|
|
extern void ReadRotMatrix(void *a0); \
|
|
extern void PushMatrix(void); \
|
|
extern void func_8004974C(void *a0, void *a1); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
extern void PopMatrix(void); \
|
|
void func_8017C66C(u16 *a0, void *a1) { \
|
|
s32 mat[8]; \
|
|
s32 buf[8]; \
|
|
s16 sv[4]; \
|
|
ReadRotMatrix((void *)mat); \
|
|
PushMatrix(); \
|
|
sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); \
|
|
sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); \
|
|
sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); \
|
|
func_8004974C((void *)mat, (void *)buf); \
|
|
ApplyMatrixSV((void *)buf, (void *)sv, a1); \
|
|
PopMatrix(); \
|
|
}
|
|
|
|
#define DEFINE_func_801307B0() \
|
|
extern s32 func_801312D0(s32 a0, void *a1); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
void func_801307B0(s32 a0) { \
|
|
s16 local[3]; \
|
|
*(s8 *)(a0 + 0xC1) = 0x10; \
|
|
*(s16 *)(a0 + 0x5C) = 0; \
|
|
func_801312D0(a0, &local[0]); \
|
|
func_80146A6C(0x10, (void *)a0, \
|
|
(s16)(*(u16 *)(a0 + 0x6) + (u16)local[0]), \
|
|
(s16)(*(u16 *)(a0 + 0xA) + (u16)local[1]), \
|
|
(s16)(*(u16 *)(a0 + 0xE) + (u16)local[2]), \
|
|
0, 0); \
|
|
*(s32 *)(a0 + 0x1C) = 0x1E; \
|
|
*(s32 *)(a0 + 0x18) = 0; \
|
|
*(s32 *)(a0 + 0x10) = 0; \
|
|
func_8002D4C8(0x531, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80132DC4() \
|
|
extern s32 VectorNormalSS(void *a0, void *a1); \
|
|
void func_80132DC4(s32 a0, s32 a1, s32 a2) { \
|
|
s16 in[3]; \
|
|
s16 out[4]; \
|
|
in[0] = (u16)*(u16 *)(a1 + 0x0) - *(u16 *)(a0 + 0x6); \
|
|
in[1] = (u16)*(u16 *)(a1 + 0x2) - *(u16 *)(a0 + 0xA); \
|
|
in[2] = (u16)*(u16 *)(a1 + 0x4) - *(u16 *)(a0 + 0xE); \
|
|
VectorNormalSS(&in[0], &out[0]); \
|
|
*(s32 *)(a0 + 0x10) = out[0] * a2; \
|
|
*(s32 *)(a0 + 0x14) = out[1] * a2; \
|
|
*(s32 *)(a0 + 0x18) = out[2] * a2; \
|
|
}
|
|
|
|
#define DEFINE_func_80139220() \
|
|
extern void func_80139DC8(void); \
|
|
extern void func_801392C8(void *a0); \
|
|
s32 func_80139220(s32 a0) { \
|
|
s32 v1; \
|
|
*(s16 *)(a0 + 0x14) = 0; \
|
|
*(s16 *)(a0 + 0x12) = (*(u16 *)(a0 + 0x12) + 1) % (*(s16 *)(a0 + 0x2E) + 1); \
|
|
func_80139DC8(); \
|
|
v1 = *(u16 *)(a0 + 0x12) - *(u16 *)(a0 + 0x16); \
|
|
if (v1 != -1) { \
|
|
if (v1 < *(s16 *)(a0 + 0x2E)) { \
|
|
return 0; \
|
|
} \
|
|
} \
|
|
func_801392C8((void *)a0); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8017869C() \
|
|
extern void func_80178744(s32 a0, s32 a1); \
|
|
void func_8017869C(s32 a0) { \
|
|
s32 v1; \
|
|
s32 a1; \
|
|
if (*(s16 *)(a0 + 0xAA) == 0) { \
|
|
return; \
|
|
} \
|
|
*(s16 *)(a0 + 0xAA) = *(s16 *)(a0 + 0xAA) - 1; \
|
|
v1 = *(s16 *)(a0 + 0xAA); \
|
|
if (v1 == 0) { \
|
|
a1 = 0x1000; \
|
|
if (*(u16 *)(a0 + 0x5E) == 0x1E) { \
|
|
*(s16 *)(a0 + 0x5E) = 0; \
|
|
} \
|
|
} else if (v1 >= 0xF1) { \
|
|
a1 = 0x1000 - (0x100 - v1) * 0x90; \
|
|
} else { \
|
|
if (v1 < 0x10) { \
|
|
a1 = 0x1000 - v1 * 0x90; \
|
|
} else { \
|
|
a1 = 0x700; \
|
|
} \
|
|
} \
|
|
func_80178744(a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80146608() \
|
|
extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); \
|
|
extern s32 D_8011F9D0; \
|
|
s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13) { \
|
|
u8 *p; \
|
|
u8 *end; \
|
|
s32 cnt; \
|
|
cnt = 0; \
|
|
p = (u8 *)&D_8011F9D0; \
|
|
end = p + 0x820; \
|
|
while (p < end) { \
|
|
if (*(u16 *)p == (a0 & 0xFFFF)) { \
|
|
cnt++; \
|
|
} \
|
|
p += 0x68; \
|
|
} \
|
|
if ((u32)cnt >= (u32)arg12) { \
|
|
return 0; \
|
|
} \
|
|
func_801466F0(a0 & 0xFFFF, a1, (s16)a2, (s16)a3, arg9, arg10, arg11, arg13); \
|
|
}
|
|
|
|
#define DEFINE_func_80137840() \
|
|
extern void func_80139634(void *); \
|
|
extern void func_80139DC8(void); \
|
|
void func_80137840(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
*(u8 *)(s0 + 0xC) = 1; \
|
|
*(u8 *)(s0 + 0x23) = 1; \
|
|
*(s16 *)(s0 + 0x1A) = 1; \
|
|
*(s16 *)(s0 + 0x2A) = 0x1000; \
|
|
*(s16 *)(s0 + 0x28) = 0x1000; \
|
|
*(s16 *)(s0 + 0x2C) = 0x24; \
|
|
*(s16 *)(s0 + 0x2E) = 3; \
|
|
*(s16 *)(s0 + 0x4) = 0; \
|
|
*(s16 *)(s0 + 0x6) = 0; \
|
|
*(s16 *)(s0 + 0x1C) = 0; \
|
|
*(s16 *)(s0 + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0x14) = 0; \
|
|
*(s16 *)(s0 + 0x12) = 0; \
|
|
*(s16 *)(s0 + 0x16) = 0; \
|
|
*(s16 *)(s0 + 0x30) = 0; \
|
|
*(s16 *)(s0 + 0x32) = 0; \
|
|
*(s16 *)(s0 + 0x34) = 0; \
|
|
*(s16 *)(s0 + 0x36) = 0; \
|
|
*(u8 *)(s0 + 0x22) = 0; \
|
|
*(u8 *)(s0 + 0x20) = 0; \
|
|
*(s32 *)(s0 + 0x40) = 0; \
|
|
*(s8 *)(s0 + 0x1F) = -1; \
|
|
*(s16 *)(s0 + 0x44) = 0; \
|
|
*(s16 *)(s0 + 0x46) = 0; \
|
|
*(s16 *)(s0 + 0x48) = 0; \
|
|
*(s16 *)(s0 + 0x4A) = 0; \
|
|
func_80139634((void *)s0); \
|
|
*(u8 *)(s0 + 0xD) = 0; \
|
|
func_80139DC8(); \
|
|
}
|
|
|
|
#define DEFINE_func_80139F0C() \
|
|
extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_80139B18(s32 a0); \
|
|
extern s32 D_80127524; \
|
|
void func_80139F0C(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 a2; \
|
|
if (D_80127524 != s0 && (*(s32 *)(s0 + 8) & 0x2000) == 0) { \
|
|
*(s16 *)(s0 + 4) = 4; \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(s0 + 8) & 0x4000) { \
|
|
a2 = 0x70; \
|
|
} else { \
|
|
a2 = 0x60; \
|
|
} \
|
|
if (func_80138DB8(s0, 0, a2) != 0) { \
|
|
s32 v1; \
|
|
*(s16 *)(s0 + 4) = 2; \
|
|
v1 = *(s32 *)(s0 + 8); \
|
|
if ((v1 & 0x20000) == 0) { \
|
|
*(s32 *)(s0 + 8) = v1 & ~0x20; \
|
|
} \
|
|
func_8002D4C8(0x88D, 0); \
|
|
} \
|
|
func_80139B18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_80159070() \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern s32 func_8013767C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_80110C94[]; \
|
|
extern u8 D_80110CD4[]; \
|
|
void func_80159070(void *a0) { \
|
|
s32 obj; \
|
|
s32 r; \
|
|
s32 v; \
|
|
u8 *tbl; \
|
|
obj = *(s32 *)((u8 *)a0 + 0x20); \
|
|
*(u16 *)(obj + 0x12) = (*(u16 *)(obj + 0x12) + 0x16) & 0xFFF; \
|
|
r = func_801399F0(*(s32 *)((u8 *)a0 + 0x198)); \
|
|
*(s16 *)((u8 *)a0 + 0x244) = r; \
|
|
if ((s16)r != 0) { \
|
|
func_80139914(*(s32 *)((u8 *)a0 + 0x198)); \
|
|
v = *(s16 *)((u8 *)a0 + 0x244); \
|
|
*(s32 *)((u8 *)a0 + 0x198) = 0; \
|
|
switch (v) { \
|
|
default: \
|
|
case 1: \
|
|
tbl = D_80110C94; \
|
|
break; \
|
|
case 2: \
|
|
tbl = D_80110CD4; \
|
|
break; \
|
|
} \
|
|
*(s32 *)((u8 *)a0 + 0x198) = func_8013767C((s32)tbl); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801638A0() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_80135004(s32 a0, void *a1, s32 a2); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern s16 D_801152AA; \
|
|
extern void *memcpy(void *dst, void *src, s32 n); \
|
|
s32 func_801638A0(u8 *a0, s32 a1) { \
|
|
u8 buf[8]; \
|
|
s16 d; \
|
|
s32 p; \
|
|
__builtin_memcpy(buf, a0 + 0x44, 8); \
|
|
p = (s32)(a0 + 4); \
|
|
func_80015978(p, (s32 *)a1); \
|
|
if (func_80135004(1, buf, a1) != 0) { \
|
|
func_80015954(a1, p); \
|
|
d = D_801152AA; \
|
|
if (d >= -0x578) { \
|
|
return 0x8000; \
|
|
} \
|
|
if (d >= -0xBCB) { \
|
|
return 0x4000; \
|
|
} \
|
|
return 0x2000; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80139FE8() \
|
|
extern s32 func_8001B22C(void *a0); \
|
|
extern void func_8001931C(void); \
|
|
extern void func_80139788(void); \
|
|
extern void func_80139A8C(s32 a0); \
|
|
extern void func_80139B18(s32 a0); \
|
|
void func_80139FE8(void *a0) { \
|
|
s32 v1; \
|
|
s32 a0v; \
|
|
v1 = func_8001B22C(a0); \
|
|
if (v1 == 2 || v1 == 4) { \
|
|
*(s16 *)((u8 *)a0 + 4) = 2; \
|
|
} else if (v1 == 0) { \
|
|
a0v = *(s32 *)((u8 *)a0 + 8); \
|
|
if (a0v & 1) { \
|
|
func_8001931C(); \
|
|
} else { \
|
|
*(s32 *)((u8 *)a0 + 8) = (a0v & 0xFFFEFFFF) | 0x20020; \
|
|
func_80139788(); \
|
|
} \
|
|
*(s16 *)((u8 *)a0 + 4) = 2; \
|
|
} else { \
|
|
func_80139A8C((s32)a0); \
|
|
if (*(s32 *)((u8 *)a0 + 8) & 0x20) { \
|
|
*(s16 *)((u8 *)a0 + 4) = 2; \
|
|
} \
|
|
} \
|
|
func_80139B18((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E288() \
|
|
extern u8 D_800D5098[]; \
|
|
extern u8 D_800D5060[]; \
|
|
extern s32 func_80161208(); \
|
|
extern s32 func_8014A850(s32 a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_8015E40C(s32 a0); \
|
|
extern void func_8015E588(void); \
|
|
extern void func_8015E4B0(s32 a0); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_80146C98(s32 *a0, s16 a1); \
|
|
void func_8015E288(s32 a0) { \
|
|
if (func_80161208() != 0) { \
|
|
return; \
|
|
} \
|
|
if (func_8014A850(a0) != 0) { \
|
|
func_80154274((s32 *)a0, (s32)D_800D5098); \
|
|
func_8015E40C(a0); \
|
|
((void (*)(s32))func_8015E588)(a0); \
|
|
func_8015E4B0(a0); \
|
|
func_80146994(5, a0, 0xB, 0); \
|
|
func_80146CA0((void *)a0); \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)(a0 + 0xB8) & 0x8000) { \
|
|
func_80154274((s32 *)a0, (s32)D_800D5060); \
|
|
func_80146C98((s32 *)a0, 3); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80169E44() \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_80146C3C(void); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80169E44(s32 a0) { \
|
|
s32 r; \
|
|
s32 p; \
|
|
if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
return; \
|
|
} \
|
|
r = *(s32 *)(a0 + 0x1C); \
|
|
*(s32 *)(a0 + 0x1C) = r + 1; \
|
|
if (r < 3) { \
|
|
p = func_80146A6C(9, (void *)a0, *(s16 *)(a0 + 0x6), \
|
|
*(s16 *)(a0 + 0xA), \
|
|
*(s16 *)(a0 + 0xE), \
|
|
*(s32 *)(a0 + 0x1C) & 1, 0); \
|
|
if (p != 0) { \
|
|
*(s16 *)(p + 0x12) = *(u16 *)(a0 + 0x12); \
|
|
*(s16 *)(p + 0x16) = *(u16 *)(a0 + 0x16); \
|
|
*(s16 *)(p + 0x1A) = *(u16 *)(a0 + 0x1A); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149290() \
|
|
extern void func_80149350(s32 arg0); \
|
|
void func_80149290(s32 a0) { \
|
|
volatile s32 a; \
|
|
volatile s32 b; \
|
|
volatile s32 c; \
|
|
a = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x48); \
|
|
b = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C); \
|
|
c = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C); \
|
|
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x48) = *(s16 *)(a0 + 6); \
|
|
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C) = *(s16 *)(a0 + 0xA); \
|
|
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x50) = *(s16 *)(a0 + 0xE); \
|
|
func_80149350(a0); \
|
|
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x48) = a; \
|
|
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C) = b; \
|
|
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x50) = c; \
|
|
}
|
|
|
|
#define DEFINE_func_80157EA4() \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern s32 func_80157F64(s32 *a0); \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
extern s32 func_80156600(void *a0); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80157EA4(void *a0) { \
|
|
s32 *v1; \
|
|
*(s32 *)((u8 *)a0 + 0x44) = *(s32 *)((u8 *)a0 + 0x44) | 2; \
|
|
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
|
|
func_801599A4(a0); \
|
|
func_80159B3C(a0); \
|
|
return; \
|
|
} \
|
|
if (func_80157F64((s32 *)a0) != 0) { \
|
|
return; \
|
|
} \
|
|
func_80155FF8((int)a0, *(u8 *)((u8 *)a0 + 0x1AA)); \
|
|
v1 = (s32 *)func_80156600(a0); \
|
|
if (v1 == 0) { \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)((u8 *)a0 + 0x244) != 0) { \
|
|
return; \
|
|
} \
|
|
*(s16 *)((u8 *)a0 + 0x244) = 1; \
|
|
func_80146A6C(0x54, a0, *(s16 *)v1, *(s16 *)((u8 *)v1 + 2), *(s16 *)((u8 *)v1 + 4), 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80154ED8() \
|
|
extern s16 D_80078E96; \
|
|
extern u8 D_800D8D10[]; \
|
|
extern s16 D_80078E9E; \
|
|
extern u16 D_80078EA6; \
|
|
extern void func_801550FC(s32 a0); \
|
|
void func_80154ED8(s32 a0, s32 a1) { \
|
|
*(s32 *)(a0 + 0xC8) = a1; \
|
|
if (D_80078E96 & 0x8000) { \
|
|
*(s32 *)(a0 + 0xC8) = a1 | 0x1000000; \
|
|
func_801550FC((s32)D_800D8D10); \
|
|
return; \
|
|
} \
|
|
if (D_80078E9E >= 0x10) { \
|
|
if (*(s16 *)&D_80078EA6 >= 0x10) { \
|
|
goto and_path; \
|
|
} \
|
|
} \
|
|
if ((*(s32 *)(a0 + 0x44) & 0xC0) != 0) { \
|
|
goto and_path; \
|
|
} \
|
|
*(s32 *)(a0 + 0xC8) = a1 | 0x1000000; \
|
|
func_801550FC(0x40000002); \
|
|
return; \
|
|
and_path: \
|
|
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) & 0xC0FFFFFF; \
|
|
func_801550FC(a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80158D60() \
|
|
extern u16 func_801487F4(s32 *a0); \
|
|
extern s32 func_80159434(s32 a0, s32 a1); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80158D60(s32 a0) { \
|
|
s32 count; \
|
|
s32 i; \
|
|
s32 arg; \
|
|
arg = 0x4C000; \
|
|
count = 1; \
|
|
if (func_801487F4((s32 *)a0) & 0xF0) { \
|
|
count = 4; \
|
|
} \
|
|
for (i = count; i > 0; i--) { \
|
|
func_80159434(a0, arg); \
|
|
if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) < 0xC00) { \
|
|
func_80147324(0x454); \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0xC00; \
|
|
*(s32 *)(a0 + 0x238) = 0xFFEA0000; \
|
|
func_80146CA0((void *)a0); \
|
|
i = 0; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80139B18() \
|
|
extern s16 D_8012752C; \
|
|
extern s32 func_80014E80(s32 a0, s32 a1); \
|
|
extern void func_8001931C(void); \
|
|
void func_80139B18(s32 a0) { \
|
|
s32 m; \
|
|
s32 p; \
|
|
if (*(s32 *)(a0 + 8) & 0x6000) { \
|
|
return; \
|
|
} \
|
|
if ((s16)func_80014E80(0, 0x10) == 0) { \
|
|
return; \
|
|
} \
|
|
m = *(s32 *)(a0 + 8); \
|
|
if (m & 0x10000) { \
|
|
*(s32 *)(a0 + 8) = m & 0xFFFEFFFF; \
|
|
func_8001931C(); \
|
|
D_8012752C = 0; \
|
|
} \
|
|
if (*(s32 *)(a0 + 8) & 0x2000) { \
|
|
*(s16 *)(a0 + 4) = 0xD; \
|
|
return; \
|
|
} \
|
|
*(s16 *)(a0 + 4) = 0xC; \
|
|
p = *(s32 *)(a0 + 0x40); \
|
|
*(s32 *)(a0 + 8) = *(s32 *)(a0 + 8) & 0xFFFFEFFF; \
|
|
if (p == 0) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)(a0 + 0x18) == 0) { \
|
|
return; \
|
|
} \
|
|
*(s16 *)p = 3; \
|
|
}
|
|
|
|
#define DEFINE_func_80164864() \
|
|
extern void func_80164ACC(); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80164864(void *a0) { \
|
|
s32 s = (s32)a0; \
|
|
s32 p = *(s32 *)(s + 0x20); \
|
|
s32 sum; \
|
|
s32 v; \
|
|
s32 w; \
|
|
s32 limit; \
|
|
sum = *(u16 *)(s + 0x60) + *(u16 *)(s + 0x62); \
|
|
*(u16 *)(s + 0x60) = sum; \
|
|
*(u16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) + sum; \
|
|
if (*(s32 *)(s + 0x50) == 0) { \
|
|
limit = 0x4000; \
|
|
v = *(u16 *)(p + 0x1C) + 0x100; \
|
|
w = *(u16 *)(p + 0x12) + 0x71; \
|
|
*(u16 *)(p + 0x1C) = v; \
|
|
*(u16 *)(p + 0x18) = v; \
|
|
*(u16 *)(p + 0x12) = w; \
|
|
func_80164ACC(); \
|
|
} else { \
|
|
limit = 0x2000; \
|
|
v = *(u16 *)(p + 0x1C) + 0x200; \
|
|
w = *(u16 *)(p + 0x12) - 0x71; \
|
|
*(u16 *)(p + 0x1C) = v; \
|
|
*(u16 *)(p + 0x18) = v; \
|
|
*(u16 *)(p + 0x12) = w; \
|
|
} \
|
|
if (limit < *(s16 *)(p + 0x1A)) { \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80162FF4() \
|
|
extern void func_80162F60(s32 arg0, s32 arg1); \
|
|
extern void func_80162F80(s32 arg0, s32 arg1); \
|
|
extern void func_80162FA0(s32 arg0, s32 arg1); \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80146D30(s32 a0); \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
s32 sp[16]; \
|
|
s32 s2 = a0; \
|
|
s32 s0 = a2; \
|
|
s32 s3 = a3; \
|
|
s32 s1 = *(s32 *)(s2 + 0x20); \
|
|
s32 *q; \
|
|
func_80162F60(a0, a1); \
|
|
func_80162F80(s2, s0); \
|
|
func_80162FA0(s2, s3); \
|
|
q = &sp[8]; \
|
|
func_80013F3C((s32)q); \
|
|
func_800126C4((s32)q, *(s16 *)(s1 + 0x10)); \
|
|
func_80012558((s32)q, *(s16 *)(s1 + 0x12)); \
|
|
func_800123F0((s32)q, *(s16 *)(s1 + 0x14)); \
|
|
func_800484EC((s32)q, s2 + 0x24, (s32)&sp[4]); \
|
|
D_80127090 = sp[4]; \
|
|
D_80127094 = sp[5]; \
|
|
D_80127098 = sp[6]; \
|
|
func_80146D30(s2); \
|
|
}
|
|
|
|
#define DEFINE_func_801630C4() \
|
|
extern void func_80162F60(s32 arg0, s32 arg1); \
|
|
extern void func_80162F80(s32 arg0, s32 arg1); \
|
|
extern void func_80162FA0(s32 arg0, s32 arg1); \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80146D30(s32 a0); \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
s32 sp[16]; \
|
|
s32 s2 = a0; \
|
|
s32 s0 = a2; \
|
|
s32 s3 = a3; \
|
|
s32 s1 = *(s32 *)(s2 + 0x20); \
|
|
s32 *q; \
|
|
func_80162F60(a0, a1); \
|
|
func_80162F80(s2, s0); \
|
|
func_80162FA0(s2, s3); \
|
|
q = &sp[8]; \
|
|
func_80013F3C((s32)q); \
|
|
func_80012558((s32)q, *(s16 *)(s1 + 0x12)); \
|
|
func_800126C4((s32)q, *(s16 *)(s1 + 0x10)); \
|
|
func_800123F0((s32)q, *(s16 *)(s1 + 0x14)); \
|
|
func_800484EC((s32)q, s2 + 0x24, (s32)&sp[4]); \
|
|
D_80127090 = sp[4]; \
|
|
D_80127094 = sp[5]; \
|
|
D_80127098 = sp[6]; \
|
|
func_80146D30(s2); \
|
|
}
|
|
|
|
#define DEFINE_func_8016D778() \
|
|
extern void func_80146C3C(void); \
|
|
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
|
|
extern s32 D_80126B9C; \
|
|
void func_8016D778(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 p; \
|
|
s16 sp[6]; \
|
|
if (*(s16 *)(s0 + 0x28) == *(s16 *)(*(s32 *)(s0 + 0x30) + 0x36)) { \
|
|
if ((D_80126B9C & 0x20) != 0) { \
|
|
goto main; \
|
|
} \
|
|
} \
|
|
((void (*)(s32))func_80146C3C)(s0); \
|
|
return; \
|
|
main: \
|
|
p = *(s32 *)(s0 + 0x20); \
|
|
*(u16 *)(p + 0x18) = *(u16 *)(p + 0x18) ^ 0x400; \
|
|
*(u16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) ^ 0x200; \
|
|
sp[0] = *(u16 *)(s0 + 0x12); \
|
|
sp[1] = *(u16 *)(s0 + 0x16); \
|
|
sp[2] = *(u16 *)(s0 + 0x1A); \
|
|
func_800D20C0(&sp[0], &sp[4], 6); \
|
|
*(u16 *)(s0 + 6) = sp[0]; \
|
|
*(u16 *)(s0 + 0xA) = sp[1]; \
|
|
*(u16 *)(s0 + 0xE) = sp[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_80164ACC() \
|
|
extern u8 D_801202A0[]; \
|
|
extern u8 D_80126720[]; \
|
|
extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80164ACC(s32 a0) { \
|
|
u8 *p; \
|
|
s16 buf[4]; \
|
|
p = D_801202A0; \
|
|
if (p < p + 0x6480) { \
|
|
do { \
|
|
if (func_8014C308(a0, (s32)p, 0xB, 2) != 0) { \
|
|
if (func_8014C278(a0, (s32)p, 0x50) != 0) { \
|
|
func_80015978((s32)(p + 4), (s32 *)buf); \
|
|
buf[3] = 0; \
|
|
func_8014C3A4((void *)a0, (s32)p, 0xB, (s32)buf); \
|
|
*(s16 *)(p + 0x60) = (s16)(*(s16 *)(p + 0x60)) / 2; \
|
|
} \
|
|
} \
|
|
p += 0x10C; \
|
|
} while (p < D_80126720); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012FB54() \
|
|
extern void func_801319E0(s32 a0); \
|
|
extern s32 func_80143B6C(s32 a0, s32 a1); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012FB54(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 v1; \
|
|
s32 p; \
|
|
if ((*(s32 *)(s0 + 0xB4) & 0x10000) != 0) { \
|
|
*(s32 *)(s0 + 0x4) = *(s32 *)(s0 + 0x4) + *(s32 *)(s0 + 0x10); \
|
|
*(s32 *)(s0 + 0x8) = *(s32 *)(s0 + 0x8) + *(s32 *)(s0 + 0x14); \
|
|
*(s32 *)(s0 + 0xC) = *(s32 *)(s0 + 0xC) + *(s32 *)(s0 + 0x18); \
|
|
v1 = *(s32 *)(s0 + 0x1C) - 1; \
|
|
*(s32 *)(s0 + 0x1C) = v1; \
|
|
if (v1 == 0) { \
|
|
func_801319E0(s0); \
|
|
} else { \
|
|
p = func_80143B6C(s0, 1); \
|
|
if (p != 0) { \
|
|
*(s16 *)(p + 0xA) = *(u16 *)(p + 0xA) + *(u16 *)(s0 + 0xAC); \
|
|
} \
|
|
if (*(s32 *)(s0 + 0x1C) == 0x13) { \
|
|
func_8002D4C8(0x8F2, 0); \
|
|
} \
|
|
} \
|
|
} \
|
|
func_80131CA8(s0, 0x36); \
|
|
}
|
|
|
|
#define DEFINE_func_80156A88() \
|
|
extern void func_80147324(s32 a0); \
|
|
extern s32 func_8014CA88(s32 *a0, s32 a1); \
|
|
extern s32 func_8014CA14(s32 a0, s32 a1); \
|
|
extern s32 D_801150E0[]; \
|
|
extern s32 D_801151E0[]; \
|
|
void func_80156A88(s32 a0, s32 a1) { \
|
|
s32 v1 = *(s32 *)(a1 + 0xC); \
|
|
s32 s3 = v1 & 0xF0FFFFFF; \
|
|
s32 s5, s4; \
|
|
s32 *s0; \
|
|
s32 *s1; \
|
|
u32 s2; \
|
|
if (v1 == 0x80000000) { \
|
|
return; \
|
|
} \
|
|
s2 = 0; \
|
|
s5 = v1 & 0x1000000; \
|
|
s4 = v1 & 0x2000000; \
|
|
s0 = D_801150E0; \
|
|
s1 = D_801151E0; \
|
|
do { \
|
|
if (*s1 & 1) { \
|
|
if (s5 != 0) { \
|
|
func_80147324(s3 & 0xFFFF); \
|
|
} else if (s4 != 0) { \
|
|
func_8014CA88((s32 *)*s0, s3); \
|
|
} else { \
|
|
func_8014CA14(*s0, s3); \
|
|
} \
|
|
} \
|
|
s0++; \
|
|
s2++; \
|
|
s1++; \
|
|
} while (s2 < 3); \
|
|
}
|
|
|
|
#define DEFINE_func_80176FF4() \
|
|
extern u32 func_801783D0(s32 a0, s32 a1); \
|
|
extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u16 D_8011F82C; \
|
|
extern u16 D_8011F82A; \
|
|
void func_80176FF4(s32 a0) { \
|
|
s32 v0; \
|
|
a0 += 0x50; \
|
|
func_801778A8(a0, (s16)func_801783D0(D_8011F82C, 4), 3, 0xFF); \
|
|
a0 += 0x3C; \
|
|
func_801778A8(a0, (s16)func_801783D0(D_8011F82A, 4), 3, 0xFF); \
|
|
a0 += 0x3C; \
|
|
*(s16 *)(a0 + 0xC) = (u32)(D_8011F82C * 10355) >> 15; \
|
|
a0 += 0x14; \
|
|
v0 = ((s32)(D_8011F82A * 10355) << 1) >> 16; \
|
|
*(s16 *)(a0 + 0xC) = v0; \
|
|
*(s16 *)(a0 + 0x20) = v0 + 2; \
|
|
}
|
|
|
|
#define DEFINE_func_80177340() \
|
|
extern u32 func_801783D0(s32 a0, s32 a1); \
|
|
extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u16 D_8011F830; \
|
|
extern u16 D_8011F82E; \
|
|
void func_80177340(s32 a0) { \
|
|
s32 v0; \
|
|
a0 += 0x50; \
|
|
func_801778A8(a0, (s16)func_801783D0(D_8011F830, 4), 3, 0xFF); \
|
|
a0 += 0x3C; \
|
|
func_801778A8(a0, (s16)func_801783D0(D_8011F82E, 4), 3, 0xFF); \
|
|
a0 += 0x3C; \
|
|
*(s16 *)(a0 + 0xC) = (u32)(D_8011F830 * 10355) >> 15; \
|
|
a0 += 0x14; \
|
|
v0 = ((s32)(D_8011F82E * 10355) << 1) >> 16; \
|
|
*(s16 *)(a0 + 0xC) = v0; \
|
|
*(s16 *)(a0 + 0x20) = v0 + 2; \
|
|
}
|
|
|
|
#define DEFINE_func_80147628() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
void func_80147628(s32 a0) { \
|
|
s32 s2 = *(s32 *)(a0 + 0x20); \
|
|
s32 s1 = s2 + 0x34; \
|
|
func_80013F3C(s1); \
|
|
func_80012558(s1, *(s16 *)(a0 + 0x102)); \
|
|
func_800126C4(s1, *(s16 *)(a0 + 0x100)); \
|
|
func_800123F0(s1, *(s16 *)(a0 + 0x104)); \
|
|
if (*(u16 *)(a0 + 0x136) & 2) { \
|
|
func_80012558(s1, *(s16 *)(a0 + 0x132)); \
|
|
} else { \
|
|
func_80012558(s1, *(s16 *)(s2 + 0x12)); \
|
|
} \
|
|
if (*(u16 *)(a0 + 0x136) & 1) { \
|
|
func_800126C4(s2 + 0x34, *(s16 *)(a0 + 0x130)); \
|
|
} else { \
|
|
func_800126C4(s2 + 0x34, *(s16 *)(s2 + 0x10)); \
|
|
} \
|
|
if (*(u16 *)(a0 + 0x136) & 4) { \
|
|
func_800123F0(s2 + 0x34, *(s16 *)(a0 + 0x134)); \
|
|
} else { \
|
|
func_800123F0(s2 + 0x34, *(s16 *)(s2 + 0x14)); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80158344() \
|
|
extern s32 func_80161208(); \
|
|
extern s32 func_801585AC(s32 *a0); \
|
|
extern void func_80156648(s32 *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
extern u8 D_800D52E8[]; \
|
|
void func_80158344(s32 *a0) { \
|
|
volatile s32 spill[4]; \
|
|
*(s32 *)((s32)a0 + 0x44) |= 2; \
|
|
if (func_80161208() == 0) { \
|
|
if (func_801585AC(a0) != 0) { \
|
|
func_80156648(a0); \
|
|
*(s8 *)((s32)a0 + 0x1AA) = 0x11; \
|
|
func_80154274(a0, (s32)D_800D52E8); \
|
|
*(s32 *)((s32)a0 + 0x234) = 0; \
|
|
func_80147324(0x455); \
|
|
func_80146994(4, (s32)a0, 9, 0); \
|
|
func_80146994(5, (s32)a0, 0xD, 0); \
|
|
func_80146E90(a0, 0x12C); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
if (*(u16 *)((s32)a0 + 0xB8) & 0x8000) { \
|
|
func_801599A4(a0); \
|
|
func_80159B3C(a0); \
|
|
} else { \
|
|
func_80155FF8((int)a0, *(u8 *)((s32)a0 + 0x1AA)); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012CEB0() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
s32 func_8012CEB0(s32 a0, s32 a1, s32 a2) { \
|
|
s32 sp10[2]; \
|
|
s32 r; \
|
|
s32 v; \
|
|
s32 t; \
|
|
if ((a2 & 1) != 0) { \
|
|
s32 u; \
|
|
r = func_80133784((s16)a2, (void *)a0, a1); \
|
|
u = *(u8 *)(a1 + 6); \
|
|
r |= u; \
|
|
if (u == 2 || u == 0x1B) { \
|
|
r |= 0x1000; \
|
|
} \
|
|
return r; \
|
|
} else { \
|
|
r = func_80133784(0, (void *)a0, a1); \
|
|
if (r == 0) { \
|
|
return 0; \
|
|
} \
|
|
v = func_80133784(2, (void *)a1, (s32)sp10); \
|
|
if ((v & 0x6000) == 0) { \
|
|
return 0; \
|
|
} \
|
|
v &= 0xFFFF7FFF; \
|
|
v |= (r & 0x8000); \
|
|
t = *(u8 *)(a1 + 6); \
|
|
*(s16 *)(a1 + 2) = *(u16 *)((s32)sp10 + 2); \
|
|
v |= t; \
|
|
if (t == 2 || t == 0x1B) { \
|
|
v |= 0x1000; \
|
|
} \
|
|
return v; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801580B4() \
|
|
extern u8 D_800D524C[]; \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_80161418(void *a0); \
|
|
extern void func_80156648(s32 *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
void func_801580B4(s32 a0) { \
|
|
s32 reserved[4]; \
|
|
(void)reserved; \
|
|
*(s32 *)(a0 + 0x44) |= 2; \
|
|
if ((*(u16 *)(a0 + 0xB8) & 0x4000) != 0) { \
|
|
func_801477E8((s32 *)a0, 0xFFF40000); \
|
|
*(s32 *)(a0 + 0x234) += 1; \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x234) != 0) { \
|
|
func_80148038(a0, 0x10000); \
|
|
func_80147460(a0); \
|
|
} \
|
|
func_80147AD4(a0, 0, 0, 0); \
|
|
func_801473EC((s32 *)a0); \
|
|
{ \
|
|
register s32 ret __asm__("$2"); \
|
|
func_80161418((void *)a0); \
|
|
__asm__ __volatile__("" : "=r"(ret)); \
|
|
if (ret != 0) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
if (*(u16 *)(a0 + 0xB8) == 0x8000) { \
|
|
func_80156648((s32 *)a0); \
|
|
*(s8 *)(a0 + 0x1AA) = 0xF; \
|
|
func_80154274((s32 *)a0, (s32)D_800D524C); \
|
|
func_80147324(0x455); \
|
|
func_80146CA0((void *)a0); \
|
|
} else { \
|
|
func_80155FF8(a0, *(u8 *)(a0 + 0x1AA)); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80157BC8() \
|
|
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern void func_8014ED28(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_8016158C(void *a0); \
|
|
extern void func_80161D20(s32 a0, s32 a1); \
|
|
extern void func_8014C010(s32 a0, s32 a1); \
|
|
extern void func_8016706C(s32 a0); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_8015BE04(s32 *a0); \
|
|
extern s32 func_801725A4(u8 *a0); \
|
|
void func_80157BC8(s32 a0) { \
|
|
s32 s1; \
|
|
func_80147AD4(a0, 0, 0, 0x10000); \
|
|
func_801473EC((s32 *)a0); \
|
|
func_80148038(a0, 0x1A000); \
|
|
func_80147460(a0); \
|
|
{ \
|
|
register s32 ret __asm__("$2"); \
|
|
func_8014ED28(a0); \
|
|
__asm__ __volatile__("" : "=r"(ret)); \
|
|
if (ret != 0) { \
|
|
func_80146D90(a0); \
|
|
} \
|
|
} \
|
|
{ \
|
|
register s32 r __asm__("$2"); \
|
|
func_8016158C((void *)a0); \
|
|
__asm__ __volatile__("" : "=r"(r)); \
|
|
s1 = r; \
|
|
} \
|
|
if ((s1 & 5) != 0) { \
|
|
func_80161D20(a0, *(u16 *)(a0 + 0x16E)); \
|
|
func_8014C010(a0, 1); \
|
|
func_8016706C(4); \
|
|
func_8016706C(5); \
|
|
func_801599A4((void *)a0); \
|
|
func_80159B3C((void *)a0); \
|
|
} \
|
|
if (s1 != 0) { \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x34) > 0) { \
|
|
func_801599A4((void *)a0); \
|
|
func_80146D90(a0); \
|
|
func_8015BE04((s32 *)a0); \
|
|
} else { \
|
|
func_801725A4((u8 *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80163950() \
|
|
extern u8 D_801202A0[]; \
|
|
extern u8 D_80126720[]; \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
s32 func_80163950(s32 a0) { \
|
|
s32 sp10[2]; \
|
|
s32 sp18[2]; \
|
|
u8 *p; \
|
|
func_80015978(a0 + 4, sp10); \
|
|
func_80015978(a0 + 4, sp18); \
|
|
*(s16 *)((s32)sp10 + 0x2) = *(u16 *)((s32)sp10 + 0x2) - 0x20; \
|
|
*(s16 *)((s32)sp18 + 0x2) = *(u16 *)((s32)sp18 + 0x2) + 0x8; \
|
|
for (p = D_801202A0; p < D_801202A0 + 0x6480; p += 0x10C) { \
|
|
if (*(u16 *)p == 0) continue; \
|
|
if ((*(u16 *)(p + 0x5C) & 0x400) == 0) continue; \
|
|
if (*(s32 *)(p + 0x58) == 0) continue; \
|
|
if (func_80135A4C(*(s32 *)(p + 0x20), *(s32 *)(p + 0x58), sp10, (s32)sp18) != 0) { \
|
|
func_80015954((s32)sp18, a0 + 4); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80149954() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_80147364(u16 a0, s32 a1); \
|
|
extern s32 func_800CCF28(s32 a0); \
|
|
extern void func_80146750(void *a0); \
|
|
extern u8 D_80126B5C; \
|
|
extern void *D_8012707C; \
|
|
extern s16 currentLocationId; \
|
|
s32 func_80149954(s32 s0) { \
|
|
s32 sp10[2]; \
|
|
s16 buf[10]; \
|
|
if (*(s32 *)(s0 + 0x44) & 0x404) { \
|
|
return 0; \
|
|
} \
|
|
if ((*(u16 *)(s0 + 0xAA) & 0x90) == 0) { \
|
|
if (currentLocationId == 0x308D) { \
|
|
func_80015978((s32)&D_80126B5C, sp10); \
|
|
func_8012E5CC((s32)sp10, 0x4, 0x8E0); \
|
|
return 0; \
|
|
} \
|
|
func_8002D4C8(0x4, 0x8E0); \
|
|
return 0; \
|
|
} \
|
|
if (*(u16 *)(s0 + 0xAC) & 0x90) { \
|
|
if ((s32)D_8012707C == 0x8E0) { \
|
|
D_8012707C = 0; \
|
|
} else { \
|
|
func_80147364(0x8E0, 0); \
|
|
} \
|
|
} \
|
|
func_800CCF28(s0); \
|
|
*(s16 *)((s32)buf + 0x0) = 0x12; \
|
|
*(s32 *)((s32)buf + 0x8) = s0; \
|
|
*(s16 *)((s32)buf + 0x2) = 0; \
|
|
*(s16 *)((s32)buf + 0x4) = -0x1E; \
|
|
*(s16 *)((s32)buf + 0x6) = 0; \
|
|
*(s32 *)((s32)buf + 0xC) = 0; \
|
|
*(s32 *)((s32)buf + 0x10) = 0; \
|
|
func_80146750(buf); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801564B0() \
|
|
extern s32 rand(void); \
|
|
extern s32 func_8002A1B4(void); \
|
|
extern s32 func_8002A400(void); \
|
|
extern s32 func_8002A670(void); \
|
|
extern s32 func_8002A8E0(void); \
|
|
extern u8 D_80078E78[]; \
|
|
s32 func_801564B0(s32 a0) { \
|
|
s32 s0 = (s32)D_80078E78; \
|
|
s32 v1; \
|
|
if (*(s32 *)(a0 + 0x44) & 0x200) { \
|
|
if (rand() & 0x1) { \
|
|
return 0x8000; \
|
|
} \
|
|
} \
|
|
if (func_8002A1B4() || func_8002A400() || func_8002A670() || func_8002A8E0()) { \
|
|
if ((rand() & 0x3) == 0) { \
|
|
return 0x8000; \
|
|
} \
|
|
} \
|
|
if ((rand() & 0x3) != 0) { \
|
|
return 0; \
|
|
} \
|
|
v1 = rand() % 160 & 0xFFFF; \
|
|
if ((u32)v1 < 0x51) { \
|
|
return 0; \
|
|
} \
|
|
if (v1 >= *(s16 *)(s0 + 0x2E)) { \
|
|
/* LOAD-BEARING: empty volatile asm blocks gcc's noce store-flag \
|
|
if-conversion (it would fold "cond ? 0x8000 : 0" to (slt)<<15); \
|
|
the original kept the slt+branch form. */ \
|
|
__asm__ __volatile__(""); \
|
|
return 0; \
|
|
} \
|
|
return 0x8000; \
|
|
}
|
|
|
|
#define DEFINE_func_8016D4DC() \
|
|
extern s32 D_80126B58; \
|
|
extern void func_8016C83C(s32 a0); \
|
|
extern s32 VectorNormalSS(void *a0, void *a1); \
|
|
extern short func_8016CF04(s32 a0, s32 a1); \
|
|
extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
void func_8016D4DC(s32 a0) { \
|
|
s16 d[20]; \
|
|
s32 a1 = *(s32 *)(a0 + 0x34); \
|
|
s32 dist; \
|
|
s32 idx; \
|
|
if (*(u16 *)a1 != 1) { \
|
|
*(s16 *)(a0 + 2) = 3; \
|
|
*(s32 *)(a0 + 0x34) = (s32)&D_80126B58; \
|
|
*(s32 *)(a0 + 0x1C) = 0x40; \
|
|
func_8016C83C(a0); \
|
|
return; \
|
|
} \
|
|
d[0] = *(u16 *)(a1 + 6) - *(u16 *)(a0 + 6); \
|
|
d[1] = *(u16 *)(a1 + 0xA) - *(u16 *)(a0 + 0xA); \
|
|
d[2] = *(u16 *)(a1 + 0xE) - *(u16 *)(a0 + 0xE); \
|
|
dist = VectorNormalSS(d, d); \
|
|
if (dist < 0x510) { \
|
|
func_8016CF04(a0, 2); \
|
|
*(s16 *)(a0 + 2) = 4; \
|
|
return; \
|
|
} \
|
|
if (dist < 0x1900) { \
|
|
idx = 6; \
|
|
} else if (dist < 0x6400) { \
|
|
idx = 5; \
|
|
} else { \
|
|
idx = 4; \
|
|
} \
|
|
func_8016C74C(a0, (s32)d, idx, 9, 0x400); \
|
|
func_800D22E4(a0); \
|
|
func_8016CF04(a0, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_80165E90() \
|
|
extern void func_801484B0(s32 a0, s32 a1); \
|
|
extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80148534(s32 a0, s32 a1); \
|
|
extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 D_80126B9C; \
|
|
extern s32 D_80126B58; \
|
|
extern s32 *D_80126B78; \
|
|
void func_80165E90(void) { \
|
|
s32 s1 = (s32)&D_80126B58; \
|
|
s32 buf1[2]; \
|
|
s32 buf2[2]; \
|
|
s32 v1; \
|
|
if ((D_80126B9C & 0x10000400) == 0x10000000) { \
|
|
v1 = (s32)D_80126B78; \
|
|
if (*(s32 *)(v1 + 0x4) >= 0) { \
|
|
if (*(s32 *)(v1 + 0x20) != 0) { \
|
|
func_801484B0((s32)buf1, (s32)buf2); \
|
|
func_80165FA4(s1, (s32)buf1, (s32)buf2); \
|
|
func_80167DBC(s1, (s32)buf1, (s32)buf2); \
|
|
} \
|
|
} \
|
|
} \
|
|
if ((*(s32 *)(s1 + 0x44) & 0x20020400) == 0x20000000) { \
|
|
v1 = *(s32 *)(s1 + 0x20); \
|
|
if (*(s32 *)(v1 + 0x4) >= 0) { \
|
|
if (*(s32 *)(v1 + 0x20) != 0) { \
|
|
func_80148534((s32)buf1, (s32)buf2); \
|
|
func_80165FA4(s1, (s32)buf1, (s32)buf2); \
|
|
func_80167AE0(s1, (s32)buf1, (s32)buf2); \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B190() \
|
|
extern s32 func_8016F1C4(void); \
|
|
extern u8 D_80078E78[]; \
|
|
extern s16 D_80078E96; \
|
|
extern s16 D_80078EB8; \
|
|
extern u16 D_80078EA6; \
|
|
extern u8 D_80078EC1; \
|
|
void func_8014B190(s32 s0) { \
|
|
s16 *s1 = (s16 *)D_80078E78; \
|
|
s32 v0; \
|
|
*(s16 *)(s0 + 0x68) = 0x1000; \
|
|
*(s16 *)(s0 + 0x6A) = 0x1000; \
|
|
*(s16 *)(s0 + 0x6C) = 0x1000; \
|
|
v0 = *(s32 *)(s0 + 0x44) & -0x201; \
|
|
v0 = v0 & -0x401; \
|
|
*(s32 *)(s0 + 0x44) = v0; \
|
|
v0 = func_8016F1C4(); \
|
|
if (v0) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)(s0 + 0x0) == 0x1E) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)(s0 + 0x0) == 0x1A) { \
|
|
return; \
|
|
} \
|
|
if ((D_80078E96 & 0x8000) || \
|
|
((u16)D_80078EB8 < 0xB) || \
|
|
((s16)D_80078EA6 < 0x10) || \
|
|
(D_80078EC1 == 0x1)) { \
|
|
*(s32 *)(s0 + 0x44) |= 0x200; \
|
|
} \
|
|
if (*(s16 *)((s32)s1 + 0x22) & 0x8000) { \
|
|
*(s16 *)(s0 + 0x68) = 0x555; \
|
|
*(s16 *)(s0 + 0x6A) = 0x555; \
|
|
*(s16 *)(s0 + 0x6C) = 0x555; \
|
|
*(s32 *)(s0 + 0x44) |= 0x400; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B5D8() \
|
|
extern s32 func_8016F1C4(void); \
|
|
extern s32 func_80029178(s32 a0); \
|
|
extern void func_8014BC80(s32 a0, s32 a1); \
|
|
extern u8 D_80078E78[]; \
|
|
void func_8014B5D8(s32 s1) { \
|
|
s32 *s0 = (s32 *)D_80078E78; \
|
|
s32 v0; \
|
|
s32 a0; \
|
|
v0 = func_8016F1C4(); \
|
|
if (v0) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)(s1 + 0x0) == 0x1E) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)(s1 + 0x0) == 0x1A) { \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(s1 + 0x44) & 0x10) { \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(s1 + 0x44) & 0x80) { \
|
|
if ((func_80029178(0x1B) & 0xFF) != 0) { \
|
|
a0 = 0x2D8; \
|
|
} else { \
|
|
a0 = 0x5B0; \
|
|
} \
|
|
} else { \
|
|
a0 = 0x16C; \
|
|
} \
|
|
if (*(u8 *)((s32)s0 + 0x49) == 0x12) { \
|
|
a0 = a0 << 1; \
|
|
} \
|
|
v0 = *(s32 *)((s32)s0 + 0x24) - a0; \
|
|
*(s32 *)((s32)s0 + 0x24) = v0; \
|
|
if (v0 < 0) { \
|
|
*(s32 *)((s32)s0 + 0x24) = 0; \
|
|
if (*(s32 *)(s1 + 0x44) & 0x80) { \
|
|
*(s32 *)((s32)s0 + 0x28) = *(s32 *)((s32)s0 + 0x28) + 0xAAA8; \
|
|
} else { \
|
|
*(s32 *)((s32)s0 + 0x28) = *(s32 *)((s32)s0 + 0x28) + 0x1555; \
|
|
} \
|
|
if (*(s16 *)((s32)s0 + 0x2A) < 0x3C) { \
|
|
return; \
|
|
} \
|
|
*(s32 *)((s32)s0 + 0x28) = 0; \
|
|
func_8014BC80(s1, 0x4); \
|
|
} else { \
|
|
*(s32 *)((s32)s0 + 0x28) = 0; \
|
|
*(s8 *)((s32)s0 + 0x43) = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80137BD8() \
|
|
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 short D_800B9A02; \
|
|
extern u8 D_800A6518[]; \
|
|
extern s32 D_80127524; \
|
|
extern u16 D_800B99D8; \
|
|
void func_80137BD8(s32 a0) { \
|
|
u8 buf[8]; \
|
|
if ((*(s32 *)(a0 + 8) & 0x1000) != 0) { \
|
|
func_801392FC(a0, *(u8 *)(a0 + 0x1E), \
|
|
&D_800A6518[(u16)D_800B9A02 * 20]); \
|
|
if (*(u8 *)(a0 + 0x20) != 0) { \
|
|
func_801397B0(a0); \
|
|
} \
|
|
} \
|
|
if (D_80127524 == a0) { \
|
|
if (*(s16 *)(a0 + 4) == 7) { \
|
|
buf[0] = 0x39; \
|
|
buf[1] = 0xFF; \
|
|
buf[2] = 0x71; \
|
|
func_80137DD4(a0, buf, &D_800A6518[(u16)D_800B9A02 * 20]); \
|
|
} else if (*(s16 *)(a0 + 4) == 3) { \
|
|
if ((D_800B99D8 & 4) != 0) { \
|
|
func_80139680(a0, &D_800A6518[(u16)D_800B9A02 * 20]); \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013AA24() \
|
|
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 short D_800B9A02; \
|
|
extern s32 D_800A651C; \
|
|
void func_8013AA24(s32 a0, s32 a1) { \
|
|
s32 s2 = a0; \
|
|
s32 s0 = a1; \
|
|
u8 buf[0xE0]; /* spans 0x10 .. 0xF0 */ \
|
|
s16 m00 = *(u16 *)(s0 + 8); \
|
|
s16 m11; \
|
|
*(s16 *)(buf + 0x02) = 0; /* 0x12 */ \
|
|
*(s16 *)(buf + 0x04) = 0; /* 0x14 */ \
|
|
*(s16 *)(buf + 0x06) = 0; /* 0x16 */ \
|
|
*(s16 *)(buf + 0x00) = m00; /* 0x10 */ \
|
|
m11 = *(u16 *)(s0 + 0xA); \
|
|
*(s16 *)(buf + 0x0A) = 0; /* 0x1A */ \
|
|
*(s16 *)(buf + 0x0C) = 0; /* 0x1C */ \
|
|
*(s16 *)(buf + 0x0E) = 0; /* 0x1E */ \
|
|
*(s16 *)(buf + 0x10) = 0x1000; /* 0x20 */ \
|
|
*(s16 *)(buf + 0x08) = m11; /* 0x18 */ \
|
|
*(s32 *)(buf + 0x14) = *(s16 *)(s2 + 0x24); /* 0x24 */ \
|
|
*(s32 *)(buf + 0x18) = *(s16 *)(s2 + 0x26); /* 0x28 */ \
|
|
*(s32 *)(buf + 0x1C) = 0; /* 0x2C */ \
|
|
{ \
|
|
register s32 *p __asm__("$2") = (s32 *)(buf + 0x00); \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 0(%0)\n" \
|
|
"lw $13, 4(%0)\n" \
|
|
"ctc2 $12, $0\n" \
|
|
"ctc2 $13, $1\n" \
|
|
"lw $12, 8(%0)\n" \
|
|
"lw $13, 12(%0)\n" \
|
|
"lw $14, 16(%0)\n" \
|
|
"ctc2 $12, $2\n" \
|
|
"ctc2 $13, $3\n" \
|
|
"ctc2 $14, $4\n" \
|
|
"lw $12, 20(%0)\n" \
|
|
"lw $13, 24(%0)\n" \
|
|
"ctc2 $12, $5\n" \
|
|
"lw $14, 28(%0)\n" \
|
|
"ctc2 $13, $6\n" \
|
|
"ctc2 $14, $7\n" \
|
|
: : "r"(p) : "$12", "$13", "$14", "memory"); \
|
|
} \
|
|
func_8013AD38((void *)(s0 + 8), *(s16 *)(s0 + 0xC), buf + 0x20, buf + 0xA0); \
|
|
func_8013B204(s2, s0); \
|
|
func_8013AF20(*(s32 *)((u8 *)&D_800A651C + (u16)D_800B9A02 * 20) + \
|
|
*(u16 *)(s2 + 0x1A) * 4, \
|
|
s2 + 0x24, buf + 0x20, buf + 0xA0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014AA28() \
|
|
extern s32 D_80126B58; \
|
|
extern u8 D_80078EC1; \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern s32 func_80165A20(s32 a0); \
|
|
extern void func_8014AB7C(); \
|
|
extern void func_8014AC10(); \
|
|
void func_8014AA28(void) { \
|
|
s32 base = (s32)&D_80126B58; \
|
|
u16 v1 = *(u16 *)base; \
|
|
s32 s0 = D_80078EC1; \
|
|
if ((u32)(v1 - 0x19) >= 2 && (u32)(v1 - 0x1D) >= 2) { \
|
|
func_801599A4((void *)base); \
|
|
func_80159B3C((void *)base); \
|
|
if (s0 == 0xC || s0 == 0x18 || s0 == 0xA) { \
|
|
func_80165A20(base); \
|
|
} \
|
|
} \
|
|
*(s16 *)(base + 0x1C8) = 0; \
|
|
*(s16 *)(base + 0x1CA) = 0; \
|
|
*(s16 *)(base + 0x1CC) = 0; \
|
|
*(s16 *)(base + 0x1CE) = 0; \
|
|
*(s16 *)(base + 0x1D0) = 0; \
|
|
*(s32 *)(base + 0x1D4) = 0; \
|
|
*(s32 *)(base + 0x1D8) = 0; \
|
|
func_8014AB7C(5); \
|
|
func_8014AB7C(6); \
|
|
func_8014AB7C(7); \
|
|
func_8014AB7C(8); \
|
|
func_8014AB7C(9); \
|
|
func_8014AC10(0x26); \
|
|
func_8014AC10(0x27); \
|
|
func_8014AC10(0x39); \
|
|
func_8014AC10(0x3A); \
|
|
func_8014AB7C(0x10); \
|
|
func_8014AB7C(0x11); \
|
|
func_8014AB7C(0x12); \
|
|
func_8014AB7C(0x13); \
|
|
func_8014AB7C(0x14); \
|
|
func_8014AC10(0x3B); \
|
|
func_8014AC10(0x3C); \
|
|
*(u8 *)(base + 0x223) = 0x10; \
|
|
}
|
|
|
|
#define DEFINE_func_8015E714() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80155440(s32 *a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015E714(s32 *a0) { \
|
|
s16 sp18[4]; \
|
|
s16 sp20[4]; \
|
|
s32 s0; \
|
|
if (*(s32 *)((s32)a0 + 0x234) == 0) { \
|
|
s0 = *(s32 *)((s32)a0 + 0x18C); \
|
|
if (s0 != 0) { \
|
|
sp18[0] = *(u16 *)((s32)a0 + 0x6); \
|
|
sp18[1] = *(u16 *)((s32)a0 + 0xA) - 0x14; \
|
|
sp18[2] = *(u16 *)((s32)a0 + 0xE); \
|
|
sp20[0] = *(u16 *)(s0 + 0x6); \
|
|
sp20[1] = *(u16 *)(s0 + 0xA); \
|
|
sp20[2] = *(u16 *)(s0 + 0xE); \
|
|
if (func_80133784(0, sp18, (s32)sp20) != 0) { \
|
|
*(s16 *)(s0 + 0x6) = sp20[0]; \
|
|
*(s16 *)(s0 + 0xA) = sp20[1]; \
|
|
*(s16 *)(s0 + 0xE) = sp20[2]; \
|
|
} \
|
|
func_80015978(s0 + 0x4, (s32 *)sp18); \
|
|
sp18[3] = 0; \
|
|
func_8014C4AC(s0, 0x1C, 0, sp18, *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12)); \
|
|
*(s32 *)((s32)a0 + 0x18C) = 0; \
|
|
} \
|
|
} \
|
|
func_801553C0((s32)a0); \
|
|
func_80155440(a0); \
|
|
*(s32 *)((s32)a0 + 0x44) = *(s32 *)((s32)a0 + 0x44) & -3; \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
*(s32 *)((s32)a0 + 0x44) = *(s32 *)((s32)a0 + 0x44) & -3; \
|
|
}
|
|
|
|
#define DEFINE_func_8016D848() \
|
|
extern void func_80146C3C(void); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_800D20C0(); \
|
|
void func_8016D848(s32 *a0) { \
|
|
s16 sp20[4]; \
|
|
s16 sp28[4]; \
|
|
s32 s2; \
|
|
s32 cnt; \
|
|
s16 i; \
|
|
s32 p; \
|
|
cnt = *(s32 *)((s32)a0 + 0x1C) - 1; \
|
|
*(s32 *)((s32)a0 + 0x1C) = cnt; \
|
|
if (cnt == 0) { \
|
|
func_80146C3C(); \
|
|
return; \
|
|
} \
|
|
if (cnt < 4) { \
|
|
s2 = -0xC00; \
|
|
} else { \
|
|
s2 = 0x800; \
|
|
i = 0; \
|
|
do { \
|
|
func_80146A6C(0x33, a0, 0, 0, 0, 0x8000, 0); \
|
|
i = i + 1; \
|
|
} while (i < 5); \
|
|
} \
|
|
p = *(s32 *)((s32)a0 + 0x20); \
|
|
if ((s2 << 16) == 0) { \
|
|
*(s16 *)(p + 0x18) = *(u16 *)(p + 0x18) ^ 0x400; \
|
|
*(s16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) ^ 0x200; \
|
|
} else { \
|
|
*(s16 *)(p + 0x18) = *(u16 *)(p + 0x18) + s2; \
|
|
*(s16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) + s2; \
|
|
} \
|
|
sp20[0] = *(u16 *)((s32)a0 + 0x12); \
|
|
sp20[1] = *(u16 *)((s32)a0 + 0x16); \
|
|
sp20[2] = *(u16 *)((s32)a0 + 0x1A); \
|
|
func_800D20C0((s32)sp20, (s32)sp28, 0x6); \
|
|
*(s16 *)((s32)a0 + 0x6) = sp20[0]; \
|
|
*(s16 *)((s32)a0 + 0xA) = sp20[1]; \
|
|
*(s16 *)((s32)a0 + 0xE) = sp20[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_8013895C() \
|
|
extern s32 D_80127524; \
|
|
extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); \
|
|
extern void func_80138B88(s32 a0); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
void func_8013895C(s32 a0) { \
|
|
if ((s32)D_80127524 == a0 || (*(s32 *)(a0 + 8) & 0x2000)) { \
|
|
if ((s16)func_80138DB8(a0, 0, 0x40)) { \
|
|
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x1F) + 1; \
|
|
func_80138B88(a0); \
|
|
func_8002D4C8(0x630, 0); \
|
|
} else if ((s16)func_80138DB8(a0, 0, 0x1000)) { \
|
|
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x1F) - 1; \
|
|
if ((s8)*(s8 *)(a0 + 0x1F) < 0) { \
|
|
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x21) - 1; \
|
|
} \
|
|
func_8002D4C8(0x62F, 0); \
|
|
} else if ((s16)func_80138DB8(a0, 0, 0x4000)) { \
|
|
u8 cur = *(u8 *)(a0 + 0x1F); \
|
|
u8 lim = *(u8 *)(a0 + 0x21); \
|
|
*(s8 *)(a0 + 0x1F) = cur + 1; \
|
|
if (!((s32)(s8)(*(s8 *)(a0 + 0x1F)) < (s32)lim)) { \
|
|
*(s8 *)(a0 + 0x1F) = 0; \
|
|
} \
|
|
func_8002D4C8(0x62F, 0); \
|
|
} else if (*(s32 *)(a0 + 8) & 0x2) { \
|
|
if ((s16)func_80138DB8(a0, 0, 0x30)) { \
|
|
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x21) - 1; \
|
|
func_8002D4C8(0x62F, 0); \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80154F9C() \
|
|
extern u8 D_80078E78[]; \
|
|
extern s16 D_80078E96; \
|
|
extern s16 D_80078E9E; \
|
|
extern u16 D_80078EA6; \
|
|
extern u8 D_800D8D10[]; \
|
|
extern s32 func_8016F1AC(void); \
|
|
extern void func_801550FC(s32 a0); \
|
|
void func_80154F9C(s32 a0) { \
|
|
u8 *base = D_80078E78; \
|
|
if (*(s32 *)(a0 + 0xC8) & 0x1000000) { \
|
|
if ((D_80078E96 & 0x8000) || D_80078E9E < 0x10 || (s16)D_80078EA6 < 0x10) { \
|
|
if (func_8016F1AC() == 0) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) & 0xC0FFFFFF; \
|
|
func_801550FC(*(s32 *)(a0 + 0xC8)); \
|
|
} else { \
|
|
if ((D_80078E96 & 0x8000) && func_8016F1AC() == 0) { \
|
|
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) | 0x1000000; \
|
|
func_801550FC((s32)D_800D8D10); \
|
|
return; \
|
|
} \
|
|
if (!(*(s16 *)(base + 0x26) < 0x10) && !(*(s16 *)(base + 0x2E) < 0x10)) { \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x44) & 0xC0) { \
|
|
return; \
|
|
} \
|
|
if (func_8016F1AC() != 0) { \
|
|
return; \
|
|
} \
|
|
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) | 0x1000000; \
|
|
func_801550FC(0x40000002); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80171384() \
|
|
extern void *D_8011F738; \
|
|
extern void func_80171928(void *a0); \
|
|
extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80171384(void *a0) { \
|
|
u8 *p = D_8011F738; \
|
|
s32 last; \
|
|
s32 sum; \
|
|
p[0xC] = func_80012F74(p[0xC], 0, 0xA, 1); \
|
|
p[0xD] = func_80012F74(p[0xD], 0, 0xA, 1); \
|
|
p[0xE] = func_80012F74(p[0xE], 0, 0xA, 1); \
|
|
p[0x1C] = func_80012F74(p[0x1C], 0, 0xA, 1); \
|
|
p[0x1D] = func_80012F74(p[0x1D], 0, 0xA, 1); \
|
|
p[0x1E] = func_80012F74(p[0x1E], 0, 0xA, 1); \
|
|
p[0x2C] = func_80012F74(p[0x2C], 0, 0xA, 1); \
|
|
p[0x2D] = func_80012F74(p[0x2D], 0, 0xA, 1); \
|
|
last = func_80012F74(p[0x2E], 0, 0xA, 1); \
|
|
p[0x2E] = last; \
|
|
sum = p[0xC] + p[0xD] + p[0xE] + p[0x1C] + p[0x1D] + p[0x1E] + p[0x2C] + p[0x2D] + (last & 0xff); \
|
|
if (sum == 0) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016986C() \
|
|
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
|
|
extern void func_800D23D0(void *a0); \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern s32 rand(void); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
void func_8016986C(s32 a0) { \
|
|
s32 s1 = a0; \
|
|
s16 v10[4]; /* sp+0x10 SVECTOR */ \
|
|
s16 v18[4]; /* sp+0x18 SVECTOR */ \
|
|
s16 v20[16]; /* sp+0x20 MATRIX */ \
|
|
s16 v40[16]; /* sp+0x40 MATRIX */ \
|
|
s32 v1; \
|
|
s32 t; \
|
|
v10[0] = *(u16 *)(s1 + 0x6); \
|
|
v10[1] = *(u16 *)(s1 + 0xA); \
|
|
v10[2] = *(u16 *)(s1 + 0xE); \
|
|
func_800D20C0(v10, v18, 1); \
|
|
func_800D23D0(v18); \
|
|
RotMatrixYXZ(v18, (void *)(s1 + 0x38)); \
|
|
v10[0] = *(u16 *)(s1 + 0x12); \
|
|
v10[1] = *(u16 *)(s1 + 0x16); \
|
|
v10[2] = *(u16 *)(s1 + 0x1A); \
|
|
RotMatrixYXZ(v10, v40); \
|
|
v1 = rand(); \
|
|
v10[0] = (v1 & 0x1FC) + 0x180; \
|
|
if (*(s32 *)(s1 + 0x2C) & 0x2) { \
|
|
v10[1] = (((u32)(v1 & 0x7F00)) >> 6) + 0x200; \
|
|
} else { \
|
|
v10[1] = (((u32)(v1 & 0x7F00)) >> 6) + 0xC00; \
|
|
} \
|
|
v10[2] = 0; \
|
|
RotMatrixYXZ(v10, v20); \
|
|
func_80048EAC(v40, v20); \
|
|
if ((*(s32 *)(s1 + 0x2C) & 0x1) == 0) { \
|
|
*(s32 *)(s1 + 0x2C) = 0xE00; \
|
|
} else { \
|
|
*(s32 *)(s1 + 0x2C) = 0xA00; \
|
|
} \
|
|
v10[0] = 0; \
|
|
v10[1] = 0; \
|
|
v10[2] = 0xA; \
|
|
ApplyMatrixSV(v20, v10, v10); \
|
|
*(u16 *)(s1 + 0x12) = v10[0]; \
|
|
*(u16 *)(s1 + 0x16) = v10[1]; \
|
|
{ \
|
|
s32 tmp = *(u16 *)(s1 + 0x2); \
|
|
s32 z = (u16)v10[2]; \
|
|
*(s32 *)(s1 + 0x1C) = 0; \
|
|
*(u16 *)(s1 + 0x2) = tmp + 1; \
|
|
*(u16 *)(s1 + 0x1A) = z; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016AFB0() \
|
|
extern void func_8016B234(); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
void func_8016AFB0(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 s1 = *(s32 *)(s0 + 0x20); \
|
|
s32 v1; \
|
|
s32 v0; \
|
|
if ((u32)*(s32 *)(s0 + 0x2C) < 6) { \
|
|
func_8016B234(); \
|
|
} \
|
|
v1 = *(s32 *)(s0 + 0x2C); \
|
|
if (v1 == 5) goto L9C; \
|
|
if ((u32)v1 < 6) { \
|
|
if (v1 == 1) goto L9C; \
|
|
goto LB8; \
|
|
} \
|
|
if (v1 == 6) goto L38; \
|
|
if (v1 != 7) goto LB8; \
|
|
if (*(s32 *)(s0 + 0x1C) & 0x1) { \
|
|
v1 = 0xAE; \
|
|
} else { \
|
|
v1 = 0xB4; \
|
|
} \
|
|
*(s8 *)(s1 + 0x27) = v1; \
|
|
L38: \
|
|
v0 = *(u8 *)(s1 + 0x26) - 0x8; \
|
|
*(s8 *)(s1 + 0x26) = v0; \
|
|
*(s8 *)(s1 + 0x25) = v0; \
|
|
*(s8 *)(s1 + 0x24) = v0; \
|
|
v0 = *(s32 *)(s0 + 0x1C) - 1; \
|
|
*(s32 *)(s0 + 0x1C) = v0; \
|
|
if (v0 != 0) goto LFC; \
|
|
*(s8 *)(s1 + 0x26) = 0x70; \
|
|
*(s8 *)(s1 + 0x25) = 0x70; \
|
|
*(s8 *)(s1 + 0x24) = 0x70; \
|
|
*(s32 *)(s1 + 0x4) = *(s32 *)(s1 + 0x4) | 0x50000000; \
|
|
*(s32 *)(s0 + 0x1C) = 0x7; \
|
|
*(u16 *)(s0 + 0x2) = *(u16 *)(s0 + 0x2) + 1; \
|
|
goto LFC; \
|
|
L9C: \
|
|
func_800D22E4(s0); \
|
|
*(s32 *)(s0 + 0x14) = *(s32 *)(s0 + 0x14) + 0x18000; \
|
|
LB8: \
|
|
v0 = *(u16 *)(s0 + 0x24) - 0x8; \
|
|
v1 = *(s32 *)(s0 + 0x1C) - 1; \
|
|
*(u16 *)(s0 + 0x24) = v0; \
|
|
*(s32 *)(s0 + 0x1C) = v1; \
|
|
if (v1 != 0) goto LFC; \
|
|
*(u16 *)(s0 + 0x24) = 0x70; \
|
|
*(s32 *)(s0 + 0x1C) = 0x7; \
|
|
*(u16 *)(s0 + 0x26) = *(u16 *)(s0 + 0x26) + 1; \
|
|
*(u16 *)(s0 + 0x2) = *(u16 *)(s0 + 0x2) + 1; \
|
|
LFC: \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80166438() \
|
|
extern u8 D_800D387C[]; \
|
|
extern u8 D_800D3888[]; \
|
|
extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); \
|
|
extern void func_800D1FC8(s32 a0, s32 a1); \
|
|
extern void func_80128EA8(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_801665B4(); \
|
|
extern void func_80146C3C(); \
|
|
void func_80166438(u8 *a0) { \
|
|
u8 *s0; \
|
|
s32 v0; \
|
|
s32 v1; \
|
|
v0 = 0x9B; \
|
|
if ((*(s32 *)(a0 + 0x30) & 0x10000000) == 0) { \
|
|
v0 = 0x9C; \
|
|
} \
|
|
s0 = (u8 *)func_800D21C4((s32)a0, D_800D387C, v0); \
|
|
if (s0 == 0) goto tail; \
|
|
*(s32 *)(a0 + 0x20) = (s32)s0; \
|
|
{ \
|
|
register s32 r asm("$2"); \
|
|
r = *(s32 *)(a0 + 0x30) & 0x7FFF; \
|
|
*(u16 *)(s0 + 0x1A) = r; \
|
|
*(u16 *)(s0 + 0x18) = r; \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x30) & 0x8000) { \
|
|
func_800D1FC8((s32)a0, 6); \
|
|
} \
|
|
v1 = *(s32 *)(a0 + 0x30); \
|
|
if (v1 < 0) { \
|
|
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) | 0x50000000; \
|
|
} else { \
|
|
if (v1 & 0x8000000) { \
|
|
*(s32 *)(s0 + 4) = 0x60000000; \
|
|
} \
|
|
} \
|
|
if ((*(s32 *)(a0 + 0x30) & 0x40000000) == 0) { \
|
|
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) | 0x40; \
|
|
} else { \
|
|
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) & -0x41; \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x30) & 0x20000000) { \
|
|
u32 h; \
|
|
*(s8 *)(s0 + 0x24) = ((u32)*(s32 *)(a0 + 0x2C) >> 20) & 0xF0; \
|
|
h = *(u16 *)(a0 + 0x2E); \
|
|
*(s8 *)(s0 + 0x25) = h & 0xF0; \
|
|
*(s8 *)(s0 + 0x26) = ((u32)*(s32 *)(a0 + 0x2C) >> 12) & 0xF0; \
|
|
} \
|
|
func_80128EA8((s32)s0, (s32)(a0 + 0x24), (s32)D_800D3888); \
|
|
{ \
|
|
register s32 r asm("$2"); \
|
|
r = *(u16 *)(a0 + 2) + 1; \
|
|
*(u16 *)(a0 + 0x16) = *(s32 *)(a0 + 0x2C); \
|
|
*(u16 *)(a0 + 2) = r; \
|
|
} \
|
|
func_801665B4((s32)a0); \
|
|
return; \
|
|
tail: \
|
|
func_80146C3C((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8013240C() \
|
|
extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
|
|
void func_8013240C(s32 a0) { \
|
|
s32 *node; \
|
|
s32 ent; \
|
|
s32 v; \
|
|
s16 h6; \
|
|
ent = *(s32 *)(a0 + 0x0) + (*(s16 *)(a0 + 0x4) << 3); \
|
|
node = (s32 *)*(s32 *)(ent + 0); \
|
|
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0xC) & 0xFFFF3FFF; \
|
|
if ((s32)node == -1) { \
|
|
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0xC) | 0x4000; \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)(ent + 0x6) < 0) { \
|
|
v = 0x1000 - ((*(s16 *)(a0 + 0x6) << 12) / *(s16 *)(ent + 0x4)); \
|
|
} else { \
|
|
v = (*(s16 *)(a0 + 0x6) << 12) / *(s16 *)(ent + 0x4); \
|
|
} \
|
|
func_801325B8(*(s32 *)(a0 + 0x8), node[0], node[1], node[2], v); \
|
|
h6 = *(s16 *)(ent + 0x6); \
|
|
if (h6 < 0) { \
|
|
*(s16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x6) - h6; \
|
|
} else { \
|
|
*(s16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x6) + h6; \
|
|
} \
|
|
if (*(s16 *)(a0 + 0x6) < *(s16 *)(ent + 0x4)) { \
|
|
return; \
|
|
} \
|
|
*(s16 *)(a0 + 0x6) = 0; \
|
|
*(s16 *)(a0 + 0x4) = *(u16 *)(a0 + 0x4) + 1; \
|
|
{ \
|
|
s32 *p = (s32 *)((*(s16 *)(a0 + 0x4) << 3) + *(s32 *)(a0 + 0x0)); \
|
|
s32 w = p[0]; \
|
|
s32 c; \
|
|
if (w != -1) { \
|
|
if (w != 0) { \
|
|
return; \
|
|
} \
|
|
*(s16 *)(a0 + 0x4) = 0; \
|
|
c = *(s32 *)(a0 + 0xC) | 0x8000; \
|
|
} else { \
|
|
c = *(s32 *)(a0 + 0xC) | 0x4000; \
|
|
} \
|
|
*(s32 *)(a0 + 0xC) = c; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80148648() \
|
|
extern u8 D_800B9A64; \
|
|
extern s32 func_80014DC0(); \
|
|
extern s32 func_80014D68(); \
|
|
extern s32 func_80014D94(); \
|
|
extern s32 func_80014CF8(); \
|
|
extern void func_800120DC(); \
|
|
extern s32 func_800CF8B4(); \
|
|
void func_80148648(s32 a0, s32 a1) { \
|
|
s32 v; \
|
|
if (D_800B9A64 == 0) { \
|
|
s32 b = a1 & 0xFF; \
|
|
*(u8 *)(a0 + 0xA9) = func_80014DC0(b); \
|
|
*(s16 *)(a0 + 0xAA) = func_80014D68(b); \
|
|
*(s16 *)(a0 + 0xAC) = func_80014D94(b); \
|
|
{ \
|
|
s32 r4 = func_80014CF8(b, 4); \
|
|
s32 r5 = func_80014CF8(b, 5); \
|
|
*(s16 *)(a0 + 0xAE) = (r4 & 0xFF) | ((r5 & 0xFF) << 8); \
|
|
} \
|
|
} else { \
|
|
*(u8 *)(a0 + 0xA9) = 0x41; \
|
|
func_800120DC(a0 + 0xAA, a0 + 0xAC); \
|
|
} \
|
|
if (*(u8 *)(a0 + 0x1C5) != 0) { \
|
|
*(s16 *)(a0 + 0xAA) = 0; \
|
|
*(s16 *)(a0 + 0xAC) = 0; \
|
|
*(u16 *)(a0 + 0xAE) = 0x8080; \
|
|
} \
|
|
if (func_800CF8B4() == 0) { \
|
|
u16 mode = *(u16 *)(a0 + 0x0); \
|
|
if (mode != 0x1E && mode != 0x1A) { \
|
|
*(s16 *)(a0 + 0xAA) = 0; \
|
|
*(s16 *)(a0 + 0xAC) = 0; \
|
|
*(u16 *)(a0 + 0xAE) = 0x8080; \
|
|
} \
|
|
} \
|
|
{ \
|
|
s32 act = *(u8 *)(a0 + 0xA9); \
|
|
if (act == 0x53 || (act >= 0x54 && act == 0x73)) { \
|
|
if ((*(u16 *)(a0 + 0xAA) & 0xF000) != 0) { \
|
|
*(u8 *)(a0 + 0xA9) = 0x41; \
|
|
} \
|
|
} \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x1B0) != 0) { \
|
|
s32 vAA = *(u16 *)(a0 + 0xAA); \
|
|
s32 vAE = *(u16 *)(a0 + 0xAE); \
|
|
s32 vAC = *(u16 *)(a0 + 0xAC); \
|
|
s32 t; \
|
|
t = ((vAA & 0x2000) << 2) | ((vAA & 0x8000) >> 2); \
|
|
t = t | (vAA & 0x5FFF); \
|
|
*(s16 *)(a0 + 0xAA) = t; \
|
|
t = ((vAC & 0x2000) << 2) | ((vAC & 0x8000) >> 2); \
|
|
t = t | (vAC & 0x5FFF); \
|
|
*(s16 *)(a0 + 0xAC) = t; \
|
|
if ((vAE & 0xFF) != 0x80) { \
|
|
vAE = (~(vAE & 0xFF) & 0xFF) | (vAE & 0xFF00); \
|
|
} \
|
|
*(s16 *)(a0 + 0xAE) = vAE; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80159120() \
|
|
extern s32 func_80029504(void); \
|
|
extern s32 func_801399F0(s32); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern s32 func_80029A94(s32); \
|
|
extern void func_80175454(void); \
|
|
extern void func_801458E0(void); \
|
|
extern void func_800298BC(void *); \
|
|
extern void func_801458E8(void); \
|
|
extern s32 func_8013767C(s32 a0); \
|
|
extern void func_8002992C(s32); \
|
|
extern void func_80145A2C(void); \
|
|
extern void func_80146C98(s32 *a0, s16 a1); \
|
|
extern void func_800CF804(void); \
|
|
extern void func_800CF818(void); \
|
|
extern u8 D_80078E50; \
|
|
extern s32 D_80078E8C; \
|
|
extern u8 D_80110D0C[]; \
|
|
extern u8 D_80110C3C[]; \
|
|
void func_80159120(s32 a0) { \
|
|
s32 r; \
|
|
s32 v1; \
|
|
s32 base; \
|
|
func_80029504(); \
|
|
base = *(s32 *)(a0 + 0x20); \
|
|
*(u16 *)(base + 0x12) = (*(u16 *)(base + 0x12) + 0x16) & 0xFFF; \
|
|
r = func_801399F0(*(s32 *)(a0 + 0x198)); \
|
|
if (r == 0) { \
|
|
return; \
|
|
} \
|
|
func_80139914(*(s32 *)(a0 + 0x198)); \
|
|
*(s32 *)(a0 + 0x198) = 0; \
|
|
if (r != 1) { \
|
|
if (r == 2) { \
|
|
goto L290; \
|
|
} \
|
|
} \
|
|
v1 = *(s16 *)(a0 + 0x244); \
|
|
if (v1 != 1) { \
|
|
if (v1 == 2) { \
|
|
goto L224; \
|
|
} \
|
|
} \
|
|
if (func_80029A94(1) != 0) { \
|
|
s32 t; \
|
|
func_80175454(); \
|
|
func_801458E0(); \
|
|
t = D_80078E8C; \
|
|
func_800298BC(&D_80078E50); \
|
|
func_801458E8(); \
|
|
D_80078E8C = t / 2; \
|
|
goto L270; \
|
|
} \
|
|
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_80110D0C); \
|
|
func_80146C98((s32 *)a0, 0xB); \
|
|
return; \
|
|
L224: \
|
|
if (func_80029A94(0) != 0) { \
|
|
func_80175454(); \
|
|
func_8002992C(0); \
|
|
func_80145A2C(); \
|
|
goto L270; \
|
|
} \
|
|
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_80110D0C); \
|
|
func_80146C98((s32 *)a0, 0xB); \
|
|
return; \
|
|
L270: \
|
|
func_80146C98((s32 *)a0, 0xC); \
|
|
func_800CF804(); \
|
|
func_800CF818(); \
|
|
return; \
|
|
L290: \
|
|
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_80110C3C); \
|
|
func_80146C98((s32 *)a0, 0x9); \
|
|
}
|
|
|
|
#define DEFINE_func_8013AB54() \
|
|
extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); \
|
|
extern void func_8013B274(s32 a0, s32 a1, void *a2); \
|
|
extern void func_8013AF20(); \
|
|
extern s32 D_800A5E60; \
|
|
s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
u8 buf[0xE4]; /* spans 0x10 .. 0xF4 */ \
|
|
s32 neg; \
|
|
s32 a, b; \
|
|
s32 t4, t6; \
|
|
t4 = *(s16 *)(a2 + 4) * 12; \
|
|
*(s16 *)(buf + 0xE0) = t4 + 0x10; /* sp+0xF0 */ \
|
|
neg = a3 & 0x8000; \
|
|
t6 = *(s16 *)(a2 + 6) * 12 + (*(s16 *)(a2 + 6) - 1) * 2; \
|
|
*(s16 *)(buf + 0xE2) = t6 + 8; \
|
|
if (neg == 0) { \
|
|
*(s16 *)(buf + 0xE0) = t4 + 0x38; \
|
|
*(s16 *)(buf + 0xE2) = t6 + 0x10; \
|
|
} \
|
|
a = ((s32)*(s16 *)(buf + 0xE0) << 12) / 154; \
|
|
b = ((s32)*(s16 *)(buf + 0xE2) << 12) / 42; \
|
|
*(s16 *)(buf + 0xE0) = a; \
|
|
*(s16 *)(buf + 0xE2) = b; \
|
|
if (neg != 0) { \
|
|
*(s16 *)(buf + 0xE0) = -a; \
|
|
} \
|
|
*(s16 *)(buf + 0xC8) = b; /* 0xD8 */ \
|
|
*(s16 *)(buf + 0xC2) = 0; /* 0xD2 */ \
|
|
*(s16 *)(buf + 0xC4) = 0; /* 0xD4 */ \
|
|
*(s16 *)(buf + 0xC6) = 0; /* 0xD6 */ \
|
|
*(s16 *)(buf + 0xCA) = 0; /* 0xDA */ \
|
|
*(s16 *)(buf + 0xCC) = 0; /* 0xDC */ \
|
|
*(s16 *)(buf + 0xCE) = 0; /* 0xDE */ \
|
|
*(s16 *)(buf + 0xD0) = 0x1000; /* 0xE0 */ \
|
|
*(s16 *)(buf + 0xC0) = *(u16 *)(buf + 0xE0); /* 0xD0 */ \
|
|
*(s32 *)(buf + 0xD4) = *(s16 *)(a2 + 0); /* 0xE4 */ \
|
|
*(s32 *)(buf + 0xD8) = *(s16 *)(a2 + 2); /* 0xE8 */ \
|
|
*(s32 *)(buf + 0xDC) = 0; /* 0xEC */ \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
{ \
|
|
register s32 *p __asm__("$2") = (s32 *)(buf + 0xC0); \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 0(%0)\n" \
|
|
"lw $13, 4(%0)\n" \
|
|
"ctc2 $12, $0\n" \
|
|
"ctc2 $13, $1\n" \
|
|
"lw $12, 8(%0)\n" \
|
|
"lw $13, 12(%0)\n" \
|
|
"lw $14, 16(%0)\n" \
|
|
"ctc2 $12, $2\n" \
|
|
"ctc2 $13, $3\n" \
|
|
"ctc2 $14, $4\n" \
|
|
"lw $12, 20(%0)\n" \
|
|
"lw $13, 24(%0)\n" \
|
|
"ctc2 $12, $5\n" \
|
|
"lw $14, 28(%0)\n" \
|
|
"ctc2 $13, $6\n" \
|
|
"ctc2 $14, $7\n" \
|
|
: : "r"(p) : "$12", "$13", "$14", "memory"); \
|
|
} \
|
|
func_8013AD38(buf + 0xE0, 0, buf + 0x00, buf + 0x80); \
|
|
D_800A5E60 = a0; \
|
|
if (a3 != 0) { \
|
|
func_8013B274(a1, 0x80, buf + 0xE0); \
|
|
} \
|
|
func_8013AF20(a1, a2, buf + 0x00, buf + 0x80); \
|
|
return D_800A5E60; \
|
|
}
|
|
|
|
#define DEFINE_func_80172738() \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_80172760(s32 a0); \
|
|
void func_80172738(void) { \
|
|
func_80174684((void *)func_80172760); \
|
|
}
|
|
|
|
#define DEFINE_func_80173174() \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_8017319C(void *a0); \
|
|
void func_80173174(void) { \
|
|
func_80174684((void *)func_8017319C); \
|
|
}
|
|
|
|
#define DEFINE_func_8017427C() \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_801742A4(void *a0); \
|
|
void func_8017427C(void) { \
|
|
func_80174684((void *)func_801742A4); \
|
|
}
|
|
|
|
#define DEFINE_func_8017435C() \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_80174384(void *a0); \
|
|
void func_8017435C(void) { \
|
|
func_80174684((void *)func_80174384); \
|
|
}
|
|
|
|
#define DEFINE_func_80174784() \
|
|
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_801747CC(void *a0); \
|
|
void func_80174784(void) { \
|
|
((void (*)(void *, s32))func_8016EDEC)((void *)func_801747CC, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_80174824() \
|
|
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_80174888(void *a0); \
|
|
void func_80174824(void) { \
|
|
((void (*)(void *, s32))func_8016EDEC)((void *)func_80174888, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_80159B08() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80159BE4(s32); \
|
|
void func_80159B08(s32 *a0) { \
|
|
func_80147078(a0, 0); \
|
|
func_80159BE4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015A1FC() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015A2D8(s32); \
|
|
void func_8015A1FC(s32 *a0) { \
|
|
func_80147078(a0, 1); \
|
|
func_8015A2D8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BF48() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015C0C4(s32 a0); \
|
|
void func_8015BF48(s32 *a0) { \
|
|
func_80147078(a0, 0x4); \
|
|
func_8015C0C4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015C6AC() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015C788(s32 a0); \
|
|
void func_8015C6AC(s32 *a0) { \
|
|
func_80147078(a0, 0x9); \
|
|
func_8015C788(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015D480() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015D57C(s32); \
|
|
void func_8015D480(s32 *a0) { \
|
|
func_80147078(a0, 0xD); \
|
|
func_8015D57C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DA90() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015DB6C(s32 a0); \
|
|
void func_8015DA90(s32 *a0) { \
|
|
func_80147078(a0, 0xE); \
|
|
func_8015DB6C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DDF0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015DECC(s32 a0); \
|
|
void func_8015DDF0(s32 *a0) { \
|
|
func_80147078(a0, 0xF); \
|
|
func_8015DECC(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E150() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015E22C(s32 a0); \
|
|
void func_8015E150(s32 *a0) { \
|
|
func_80147078(a0, 0x10); \
|
|
func_8015E22C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E84C() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015E95C(s32); \
|
|
void func_8015E84C(s32 *a0) { \
|
|
func_80147078(a0, 0x11); \
|
|
func_8015E95C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015EDA0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015EE7C(s32); \
|
|
void func_8015EDA0(s32 *a0) { \
|
|
func_80147078(a0, 0x12); \
|
|
func_8015EE7C(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015EFA4() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015F080(s32); \
|
|
void func_8015EFA4(s32 *a0) { \
|
|
func_80147078(a0, 0x13); \
|
|
func_8015F080(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174E9C() \
|
|
extern void func_8012A018(s32 a, s32 b); \
|
|
extern s32 D_8012697C; \
|
|
extern u16 D_80126980; \
|
|
extern s32 func_80174F28(void *a0); \
|
|
void func_80174E9C(s32 a0) { \
|
|
D_8012697C = a0; \
|
|
D_80126980 = 0; \
|
|
func_8012A018((s32)func_80174F28, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174EF0() \
|
|
extern void func_8012A018(s32 a, s32 b); \
|
|
extern s32 D_8012697C; \
|
|
extern u16 D_80126980; \
|
|
extern s32 func_80174F28(void *a0); \
|
|
void func_80174EF0(s32 a0, s16 a1) { \
|
|
D_8012697C = a0; \
|
|
D_80126980 = a1; \
|
|
func_8012A018((s32)func_80174F28, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_80170634() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170670(void *a0); \
|
|
void func_80170634(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_80170670(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170F38() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80170F74(void *a0); \
|
|
void func_80170F38(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_80170F74(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170FEC() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_80171028(void *a0); \
|
|
void func_80170FEC(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
func_80171990(a0); \
|
|
func_80171028(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174438() \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_80174474(void *a0); \
|
|
extern s32 D_80127508; \
|
|
void func_80174438(s32 a0) { \
|
|
func_80174684((void *)func_80174474); \
|
|
D_80127508 = a0; \
|
|
}
|
|
|
|
#define DEFINE_func_801729B0() \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_801729F0(void *a0); \
|
|
extern s16 D_80126B34; \
|
|
extern s16 D_80126B30; \
|
|
extern s16 D_80126B32; \
|
|
void func_801729B0(s32 a0) { \
|
|
D_80126B34 = a0; \
|
|
D_80126B30 = 0; \
|
|
D_80126B32 = 0; \
|
|
func_80174684((void *)func_801729F0); \
|
|
}
|
|
|
|
#define DEFINE_func_80147AD4() \
|
|
extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
|
|
extern void func_80147B5C(s32 a0, void *a1); \
|
|
void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
u8 buf[16]; \
|
|
func_80147CC8(a0, a1, a2, a3, (s32)buf); \
|
|
func_80147B5C(a0, (s32)buf); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F71C() \
|
|
extern void *D_8011F738; \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016F764(void *a0); \
|
|
void func_8016F71C(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
*(void **)(a0 + 0x200) = D_8011F738; \
|
|
func_80171990(a0); \
|
|
func_8016F764((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170928() \
|
|
extern u8 D_800D5A34[]; \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_80126B58; \
|
|
extern void func_80170AD8(void *a0); \
|
|
extern void func_80171904(s32 a0); \
|
|
extern void func_80170B48(int a0); \
|
|
void func_80170928(void) { \
|
|
D_8011F738 = D_800D5A34; \
|
|
func_80171904((s32)func_80170AD8); \
|
|
func_80170B48((int)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80170970() \
|
|
extern u8 D_800D59EC[]; \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_80126B58; \
|
|
extern void func_80170AD8(void *a0); \
|
|
extern void func_80171904(s32 a0); \
|
|
extern void func_80170B48(int a0); \
|
|
void func_80170970(void) { \
|
|
D_8011F738 = D_800D59EC; \
|
|
func_80171904((s32)func_80170AD8); \
|
|
func_80170B48((int)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_801709B8() \
|
|
extern u8 D_800D599C[]; \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_80126B58; \
|
|
extern void func_80170AD8(void *a0); \
|
|
extern void func_80171904(s32 a0); \
|
|
extern void func_80170B48(int a0); \
|
|
void func_801709B8(void) { \
|
|
D_8011F738 = D_800D599C; \
|
|
func_80171904((s32)func_80170AD8); \
|
|
func_80170B48((int)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80170A00() \
|
|
extern u8 D_800D5934[]; \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_80126B58; \
|
|
extern void func_80170AD8(void *a0); \
|
|
extern void func_80171904(s32 a0); \
|
|
extern void func_80170B48(int a0); \
|
|
void func_80170A00(void) { \
|
|
D_8011F738 = D_800D5934; \
|
|
func_80171904((s32)func_80170AD8); \
|
|
func_80170B48((int)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80170A48() \
|
|
extern u8 D_800D5DA8; \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_80126B58; \
|
|
extern void func_80170AD8(void *a0); \
|
|
extern void func_80171904(s32 a0); \
|
|
extern void func_80170B48(int a0); \
|
|
void func_80170A48(void) { \
|
|
D_8011F738 = &D_800D5DA8; \
|
|
func_80171904((s32)func_80170AD8); \
|
|
func_80170B48((int)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_80170A90() \
|
|
extern u8 D_800D5DC0[]; \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_80126B58; \
|
|
extern void func_80170AD8(void *a0); \
|
|
extern void func_80171904(s32 a0); \
|
|
extern void func_80170B48(int a0); \
|
|
void func_80170A90(void) { \
|
|
D_8011F738 = D_800D5DC0; \
|
|
func_80171904((s32)func_80170AD8); \
|
|
func_80170B48((int)&D_80126B58); \
|
|
}
|
|
|
|
#define DEFINE_func_801736B0() \
|
|
extern s32 func_8014C118(void *a0, s32 a1, s32 a2); \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_801736FC(void *a0); \
|
|
extern s32 D_80126B58; \
|
|
extern s32 D_80127508; \
|
|
void func_801736B0(s32 a0, s32 a1) { \
|
|
D_80127508 = func_8014C118(&D_80126B58, a0, (s16)a1); \
|
|
func_80174684(func_801736FC); \
|
|
}
|
|
|
|
#define DEFINE_func_8016FAC0() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8016FB10(void *a0); \
|
|
void func_8016FAC0(u8 *a0) { \
|
|
u8 *v1; \
|
|
*(s16 *)(a0 + 0x136) = 2; \
|
|
v1 = *(u8 **)(a0 + 0x20); \
|
|
*(s16 *)(a0 + 0x132) = *(u16 *)(v1 + 0x12); \
|
|
func_801719A4((int)a0, 2); \
|
|
func_80171990(a0); \
|
|
func_8016FB10(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80170784() \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_801707D4(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_80170784(u8 *a0) { \
|
|
func_801719A4((int)a0, 1); \
|
|
(*(void (*)(void))D_8011F738)(); \
|
|
func_80171990(a0); \
|
|
func_801707D4(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017250C() \
|
|
extern s32 func_80172560(u8 *a0, u8 *a1); \
|
|
int func_8017250C(short *a0, short *a1) { \
|
|
if (func_80172560(a0, a1) == 0) { \
|
|
return 0; \
|
|
} \
|
|
a0[3] = a1[0]; /* sh v0,6(s1) <- lhu 0(s0) */ \
|
|
a0[7] = a1[2]; /* sh v1,0xE(s1) <- lhu 4(s0) */ \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8015E95C() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_8015E9B8(s32 *a0); \
|
|
extern u8 D_80078EC0; \
|
|
void func_8015E95C(s32 a0) { \
|
|
if ((D_80078EC0 & 0x80) == 0) { \
|
|
func_80146A6C(0x14, (void *)a0, 0, 0, 0, 0, 0); \
|
|
} \
|
|
func_8015E9B8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014A1B0() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern u16 func_80156370(u16 a0); \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
void func_8014A1B0(s32 a0, s32 a1) { \
|
|
s16 sp18[4]; \
|
|
u16 tmp; \
|
|
func_80015978(a0 + 4, (s32 *)sp18); \
|
|
sp18[3] = 0; \
|
|
tmp = func_80156370(0xA); \
|
|
func_8014C4AC(a1, 0xA, tmp, sp18, *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)); \
|
|
}
|
|
|
|
#define DEFINE_func_801748EC() \
|
|
extern void func_8012A018(s32 a, s32 b); \
|
|
extern s32 func_8017496C(void *a0); \
|
|
extern s32 D_80126954; \
|
|
extern s32 D_80126950; \
|
|
extern s32 D_8012695C; \
|
|
extern s16 D_80126968; \
|
|
extern s16 D_8012696A; \
|
|
extern s16 D_8012696C; \
|
|
extern s16 D_80126976; \
|
|
extern s16 D_80126978; \
|
|
extern s16 D_8012697A; \
|
|
void func_801748EC(void) { \
|
|
D_80126954 = 0x1F4; \
|
|
D_80126950 = 0x1F4; \
|
|
D_8012695C = 0x384; \
|
|
D_80126968 = 0x1C7; \
|
|
D_8012696A = 0x600; \
|
|
D_8012696C = 0; \
|
|
D_80126976 = 0; \
|
|
D_80126978 = 0; \
|
|
D_8012697A = 0; \
|
|
func_8012A018((s32)func_8017496C, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014E48C() \
|
|
extern void func_8014E5B4(s32 a0, void *a1, void *a2); \
|
|
extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); \
|
|
void func_8014E48C(s32 a0) { \
|
|
s16 buf1[4]; \
|
|
s16 buf2[4]; \
|
|
buf1[0] = *(u16 *)(a0 + 0x88); \
|
|
buf1[1] = *(u16 *)(a0 + 0x8A); \
|
|
buf1[2] = *(u16 *)(a0 + 0x8C); \
|
|
buf2[0] = *(u16 *)(a0 + 0x6); \
|
|
buf2[1] = *(u16 *)(a0 + 0xA); \
|
|
buf2[2] = *(u16 *)(a0 + 0xE); \
|
|
if (*(s32 *)(a0 + 0x17C) == 0) { \
|
|
func_8014E5B4(a0, buf1, buf2); \
|
|
} else { \
|
|
func_8014E514(a0, buf1, buf2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149D10() \
|
|
extern u8 func_8014B5B8(s32 *a0); \
|
|
extern u8 D_80078EBF; \
|
|
extern u8 D_80078EC0; \
|
|
s32 func_80149D10(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0x44) & 0x400) { \
|
|
return 0; \
|
|
} \
|
|
if (D_80078EBF != 0x80) { \
|
|
return 0; \
|
|
} \
|
|
if ((D_80078EC0 & 0x7F) == 0) { \
|
|
return 0; \
|
|
} \
|
|
if (*(u16 *)(a0 + 0xAC) & 0x10) { \
|
|
if ((func_8014B5B8((s32 *)a0) & 0xFF) != 0) { \
|
|
return 2; \
|
|
} \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801432FC() \
|
|
extern s32 func_80142DB8(s32 *a0); \
|
|
extern s32 func_8012C044(s32 a0); \
|
|
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
|
|
extern void func_80142C9C(s32 *a0); \
|
|
extern s32 func_8012BF10(s32 a0, s32 a1); \
|
|
extern void func_8012AD44(s32 *a0, s16 a1); \
|
|
void func_801432FC(s32 *a0) { \
|
|
if (func_80142DB8(a0) == 1) { \
|
|
func_80142BB4(a0, 1, 3); \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
|
|
if (func_8012C044(a0) == 0) { \
|
|
return; \
|
|
} \
|
|
func_80142BB4(a0, 0, 3); \
|
|
return; \
|
|
} \
|
|
func_80142C9C(a0); \
|
|
if (func_8012BF10((s32)a0, 0x30) != 0) { \
|
|
func_8012AD44(a0, 2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801472C8() \
|
|
s32 func_801472C8(struct S *a0) { \
|
|
return a0->f7E = a0->f7E | 0x2; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C8F0() \
|
|
void func_8014C8F0(s32 arg0) { \
|
|
*(struct UnalignedPair *)(arg0 + 0x15c) = *(struct UnalignedPair *)(arg0 + 0x90); \
|
|
}
|
|
|
|
#define DEFINE_func_80139FBC() \
|
|
void func_80139FBC(struct obj *a0) { \
|
|
if (a0->unk8 & 0x800) { \
|
|
a0->unk8 &= ~0x800; \
|
|
a0->unk4 = 2; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014C860() \
|
|
s32 func_8014C860(s32 a0, s32 a1) { \
|
|
s32 r = 1; \
|
|
*(struct S8 *)(a0 + 0x154) = *(struct S8 *)a1; \
|
|
*(s16*)(a0 + 0x15A) = r; \
|
|
return r; \
|
|
}
|
|
|
|
#define DEFINE_func_8012931C() \
|
|
void func_8012931C(struct vec *a0) { \
|
|
a0->unk4 += a0->unk10; \
|
|
a0->unk8 += a0->unk14; \
|
|
a0->unkC += a0->unk18; \
|
|
}
|
|
|
|
#define DEFINE_func_8015BE04() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015BE38(struct Obj *a0); \
|
|
void func_8015BE04(s32 *a0) { \
|
|
func_80147078(a0, 0x3); \
|
|
func_8015BE38((struct Obj *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F540() \
|
|
extern void func_8014708C(void *a0); \
|
|
extern s32 func_801472C8(struct S *a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F540(void *a0) { \
|
|
func_8014708C(a0); \
|
|
func_801472C8((struct S *)a0); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014C010() \
|
|
extern void func_80146AFC(void *a0); \
|
|
void func_8014C010(s32 a0, s32 a1) { \
|
|
struct S8014C010 sp; \
|
|
sp.w8 = a0; \
|
|
sp.h0 = 2; \
|
|
sp.h1 = 0; \
|
|
sp.h2 = 0; \
|
|
sp.h3 = 0; \
|
|
sp.wC = a1; \
|
|
sp.w10 = 0; \
|
|
func_80146AFC(&sp); \
|
|
}
|
|
|
|
#define DEFINE_func_8014AD30() \
|
|
extern void func_80146AFC(void *a0); \
|
|
void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3) { \
|
|
struct S_8014AD30 sp; \
|
|
s16 b = a1[0]; \
|
|
s16 c = a1[1]; \
|
|
s16 d = a1[2]; \
|
|
sp.h0 = 0x1D; \
|
|
sp.w0 = a0; \
|
|
sp.w1 = a2; \
|
|
sp.w2 = a3; \
|
|
sp.h1 = b; \
|
|
sp.h2 = c; \
|
|
sp.h3 = d; \
|
|
func_80146AFC(&sp); \
|
|
}
|
|
|
|
#define DEFINE_func_801504D8() \
|
|
extern s32 func_80150528(void *a0, void *a1, void *a2); \
|
|
void func_801504D8(u16 *a0) { \
|
|
struct V3 a; \
|
|
struct V3 b; \
|
|
s32 t6 = a0[3]; /* 0x6 */ \
|
|
s32 ta; \
|
|
s32 te; \
|
|
b.x = t6; \
|
|
a.x = t6; \
|
|
ta = a0[5]; /* 0xA */ \
|
|
a.y = ta - 3; \
|
|
te = a0[7]; /* 0xE */ \
|
|
b.y = ta + 1; \
|
|
b.z = te; \
|
|
a.z = te; \
|
|
func_80150528(a0, &a, &b); \
|
|
}
|
|
|
|
#define DEFINE_func_80172780() \
|
|
extern void func_80174684(void *); \
|
|
extern s16 D_80126B30; \
|
|
extern s32 func_801727D0(void *a0); \
|
|
void func_80172780(void *a0) { \
|
|
*(struct S8_80172780 *)&D_80126B30 = *(struct S8_80172780 *)a0; \
|
|
func_80174684((void *)func_801727D0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172894() \
|
|
extern void func_80174684(void *); \
|
|
extern s16 D_80126B30; \
|
|
extern s32 func_801728E4(void *a0); \
|
|
void func_80172894(void *a0) { \
|
|
*(struct S8_80172894 *)&D_80126B30 = *(struct S8_80172894 *)a0; \
|
|
func_80174684((void *)func_801728E4); \
|
|
}
|
|
|
|
#define DEFINE_func_80143BDC() \
|
|
extern s32 func_8012C51C(void *a0, s32 a1); \
|
|
void func_80143BDC(u16 *a0) { \
|
|
struct S80143BDC sp; \
|
|
u16 t; \
|
|
sp.f0 = a0[0]; \
|
|
sp.f2 = a0[1]; \
|
|
t = a0[2]; \
|
|
sp.f6 = 0x1C; \
|
|
sp.f8 = 1; \
|
|
sp.fA = 0; \
|
|
sp.f10 = 0; \
|
|
sp.fE = 0; \
|
|
sp.f4 = t; \
|
|
func_8012C51C(&sp, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173460() \
|
|
extern void func_801734BC(s32 a0, s32 a1); \
|
|
extern struct S80126B38 D_80126B38; \
|
|
extern s16 D_80126B3E; \
|
|
void func_80173460(s32 a0, s32 a1) { \
|
|
func_801734BC(a0, a1); \
|
|
D_80126B38 = *(struct S80126B38 *)a1; \
|
|
D_80126B3E = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80131E7C() \
|
|
extern s32 func_8012E470(s32 a0); \
|
|
extern void func_8012E4C8(s32 a0); \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_80131E7C(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x40000) { \
|
|
if (func_8012E470(a0)) { \
|
|
func_8012E4C8(a0); \
|
|
func_80131E00((struct S80131E00 *)a0, 1); \
|
|
} \
|
|
} \
|
|
func_80131CA8(a0, 0x3A); \
|
|
}
|
|
|
|
#define DEFINE_func_801433F0() \
|
|
extern void func_80143458(); \
|
|
extern void func_8012931C(struct vec *a0); \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_801292C8(u8 *a0); \
|
|
void func_801433F0(s32 a0) { \
|
|
if (*(u16 *)(a0 + 2) == 0) { \
|
|
func_80143458(); \
|
|
} else { \
|
|
func_8012931C((struct vec *)a0); \
|
|
if (func_80128ED8(*(void **)(a0 + 0x20), (u8 *)a0 + 0x24) != 0) { \
|
|
func_801292C8((u8 *)a0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012BC60() \
|
|
extern void Square0(s32 *a0, s32 *a1); \
|
|
s32 func_8012BC60(struct Vec *a0, struct Vec *a1) { \
|
|
s32 d[3]; \
|
|
d[0] = a0->unk2 - a1->unk2; \
|
|
d[1] = a0->unk6 - a1->unk6; \
|
|
d[2] = a0->unkA - a1->unkA; \
|
|
Square0(d, d); \
|
|
return d[0] + d[1] + d[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_8013A250() \
|
|
extern void func_80139A8C(s32 a0); \
|
|
extern void func_80139B18(s32 a0); \
|
|
extern void func_80138B88(s32 a0); \
|
|
void func_8013A250(struct S8013A250 *a0) { \
|
|
if (a0->unkC != 0) { \
|
|
a0->unkC = a0->unkC - 1; \
|
|
func_80139A8C((s32)a0); \
|
|
if ((a0->unk8 & 0x80020) == 0) { \
|
|
func_80139B18((s32)a0); \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_80138B88((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8013A4C4() \
|
|
extern void func_8013A530(); \
|
|
void func_8013A4C4(struct S8013A4C4 *a0) { \
|
|
struct Inner8013A4C4 *a1 = a0->unk4; \
|
|
a0->unkE = 0; \
|
|
a1->unk28 -= 0x400; \
|
|
a1->unk2A -= 0x400; \
|
|
if (a1->unk28 < 0x401) { \
|
|
a1->unk2A = 0; \
|
|
a1->unk28 = 0; \
|
|
a0->unk0 = 4; \
|
|
a0->unk2 = 0; \
|
|
a0->unk4 = 0; \
|
|
} else { \
|
|
func_8013A530(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013E22C() \
|
|
extern void Square12(s32 *a0, s32 *a1); \
|
|
s32 func_8013E22C(struct VecA *a0, struct VecB *a1) { \
|
|
s32 d[3]; \
|
|
s32 sq[3]; \
|
|
d[0] = a0->unk2 - a1->unk0; \
|
|
d[1] = a0->unk6 - a1->unk2; \
|
|
d[2] = a0->unkA - a1->unk4; \
|
|
Square12(d, sq); \
|
|
return sq[0] + sq[1] + sq[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_8014FDF4() \
|
|
extern s32 func_80150170(void *a0); \
|
|
extern s32 func_8014FE60(void *a0); \
|
|
void func_8014FDF4(struct S8014FDF4 *a0) { \
|
|
if (a0->f6 != a0->f88 || a0->fA != a0->f8A || a0->fE != a0->f8C) { \
|
|
func_80150170(a0); \
|
|
} else { \
|
|
func_8014FE60(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80151ECC() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern s32 func_80172630(u8 *a0); \
|
|
void func_80151ECC(struct S80151ECC *a0) { \
|
|
func_80149020((s32 *)a0); \
|
|
a0->f64 = a0->f64 + (a0->fDE << 6); \
|
|
a0->fDE = a0->fDE + 5; \
|
|
if (a0->f64 >= 0x1556) { \
|
|
a0->fDE = 0x10; \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
func_80172630((u8 *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80153150() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_801470B4(s32 a0); \
|
|
extern void func_8015369C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80153150(struct S80153150 *a0) { \
|
|
s16 nv; \
|
|
func_80149020((s32 *)a0); \
|
|
nv = (s16)(a0->f64 - 0x100); \
|
|
a0->f64 = nv; \
|
|
a0->f62 = nv; \
|
|
a0->f60 = nv; \
|
|
if (nv <= 0) { \
|
|
a0->fDE = 0x10; \
|
|
func_801470B4((s32)a0); \
|
|
func_8015369C((s32)a0); \
|
|
func_80146CA0(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80172358() \
|
|
void func_80172358(u8 *a0, u8 *a1) { \
|
|
*(u16 *)(a0 + 6) = *(u16 *)(a1 + 0); \
|
|
*(u16 *)(a0 + 0xA) = *(u16 *)(a1 + 2); \
|
|
*(u16 *)(a0 + 0xE) = *(u16 *)(a1 + 4); \
|
|
*(struct U8 *)(a0 + 0x90) = *(struct U8 *)(a1 + 0); \
|
|
*(struct U8 *)(a0 + 0x88) = *(struct U8 *)(a0 + 0x90); \
|
|
}
|
|
|
|
#define DEFINE_func_80136ECC() \
|
|
extern short D_800B9A02; \
|
|
extern u8 D_800A6518[]; \
|
|
extern void GsSortLine(void *a0, void *a1, s32 a2); \
|
|
void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b) { \
|
|
struct { \
|
|
u32 tag; \
|
|
s16 x0; \
|
|
s16 y0; \
|
|
s16 x1; \
|
|
s16 y1; \
|
|
u8 r; \
|
|
u8 g; \
|
|
u8 b; \
|
|
} line; \
|
|
line.x0 = a0; \
|
|
line.tag = 0; \
|
|
line.y0 = a1; \
|
|
line.x1 = a2; \
|
|
line.y1 = a3; \
|
|
line.r = r; \
|
|
line.g = g; \
|
|
line.b = b; \
|
|
GsSortLine(&line, &D_800A6518[(u16)D_800B9A02 * 20], 0); \
|
|
}
|
|
|
|
#define DEFINE_func_801730FC() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern s32 func_80174650(s32); \
|
|
extern s16 D_80126B30; \
|
|
void func_801730FC(struct S801730FC *a0) { \
|
|
if (a0->unkB8 & 0x8000) { \
|
|
func_80171A1C((u8 *)a0); \
|
|
if (D_80126B30 != 0) { \
|
|
func_80147060(a0); \
|
|
func_80154150(a0, 0); \
|
|
} \
|
|
func_80174650((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014350C() \
|
|
extern void func_8014358C(void); \
|
|
extern void func_8012931C(struct vec *a0); \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_801292C8(u8 *a0); \
|
|
void func_8014350C(s32 *a0) { \
|
|
if (*(u16 *)((u8 *)a0 + 2) == 0) { \
|
|
func_8014358C(); \
|
|
return; \
|
|
} \
|
|
func_8012931C((struct vec *)a0); \
|
|
if (func_80128ED8((void *)a0[0x20 / 4], (void *)((u8 *)a0 + 0x24)) != 0) { \
|
|
func_801292C8((u8 *)a0); \
|
|
return; \
|
|
} \
|
|
*(u8 *)(a0[0x20 / 4] + 0x27) = *(u8 *)((u8 *)a0 + 0x28) - 0x70; \
|
|
}
|
|
|
|
#define DEFINE_func_8012FE70() \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
extern void func_80131170(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012FE70(s32 a0) { \
|
|
s32 v1 = *(s32 *)(a0 + 0xC4); \
|
|
*(u8 *)(a0 + 0xC1) = 9; \
|
|
if (v1 & 2) { \
|
|
*(u8 *)(a0 + 0xC1) = 1; \
|
|
func_80131CA8(a0, 3); \
|
|
} else if (v1 & 1) { \
|
|
func_80131E00((struct S80131E00 *)a0, 1); \
|
|
} else { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x200) { \
|
|
func_80131170(a0, 0, 0); \
|
|
} \
|
|
func_80131CA8(a0, 0x1E); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014ED80() \
|
|
extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); \
|
|
s32 func_8014ED80(struct SubED80 *a0) { \
|
|
s16 g1[3]; \
|
|
s16 g2[3]; \
|
|
if (a0->f44 & 0x80000) { \
|
|
return 0; \
|
|
} \
|
|
if (a0->f1F8 & 0x4000000) { \
|
|
return 0; \
|
|
} \
|
|
g1[0] = a0->f88; \
|
|
g1[1] = a0->f8A - 0x10; \
|
|
g1[2] = a0->f8C; \
|
|
g2[0] = a0->f6; \
|
|
g2[1] = a0->fA - 0x10; \
|
|
g2[2] = a0->fE; \
|
|
func_8014EE14((s32)a0, g1, g2); \
|
|
}
|
|
|
|
#define DEFINE_func_8014F24C() \
|
|
extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); \
|
|
s32 func_8014F24C(struct SubF24C *a0) { \
|
|
s16 g1[3]; \
|
|
s16 g2[3]; \
|
|
if (a0->f44 & 0x80000) { \
|
|
return 0; \
|
|
} \
|
|
if (a0->f1F8 & 0x4000000) { \
|
|
return 0; \
|
|
} \
|
|
g1[0] = a0->f88; \
|
|
g1[1] = a0->f8A - 0x10; \
|
|
g1[2] = a0->f8C; \
|
|
g2[0] = a0->f6; \
|
|
g2[1] = a0->fA - 0x10; \
|
|
g2[2] = a0->fE; \
|
|
func_8014F2E0((s32)a0, g1, g2); \
|
|
}
|
|
|
|
#define DEFINE_func_8016380C() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
s32 func_8016380C(struct S8016380C *a0, s32 a1) { \
|
|
struct M8 local; \
|
|
s32 ret; \
|
|
local = a0->m; \
|
|
func_80015978((s32)((u8 *)a0 + 4), (s32 *)a1); \
|
|
ret = func_80133784(1, &local, a1); \
|
|
if (ret != 0) { \
|
|
func_80015954(a1, (s32)((u8 *)a0 + 4)); \
|
|
return ret; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014E6F8() \
|
|
extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); \
|
|
extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); \
|
|
void func_8014E6F8(struct SubE6F8 *a0) { \
|
|
s16 g1[3]; \
|
|
s16 g2[3]; \
|
|
u16 t8A; \
|
|
u16 tA; \
|
|
g1[0] = a0->f88; \
|
|
t8A = a0->f8A; \
|
|
g1[1] = t8A; \
|
|
g1[2] = a0->f8C; \
|
|
g2[0] = a0->f6; \
|
|
tA = a0->fA; \
|
|
g2[1] = tA; \
|
|
g2[2] = a0->fE; \
|
|
if (a0->f180 == 0) { \
|
|
g1[1] = t8A - 0x54; \
|
|
g2[1] = tA - 0x54; \
|
|
func_8014E83C((s32)a0, g1, g2); \
|
|
} else { \
|
|
func_8014E790((s32)a0, g1, g2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152E4C() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80153B58(s32 *a0); \
|
|
extern void func_80147A84(s32 arg0); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern s32 func_801472C8(struct S *a0); \
|
|
extern void func_801470B4(s32 a0); \
|
|
extern void func_8015369C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152E4C(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 v0; \
|
|
func_80149020((s32 *)s0); \
|
|
func_80153B58((s32 *)s0); \
|
|
func_80147A84(s0); \
|
|
func_801473EC((s32 *)s0); \
|
|
v0 = *(u8 *)(s0 + 0xDF); \
|
|
if (v0 == 0) { \
|
|
func_80148038(s0, 0x18000); \
|
|
} else { \
|
|
*(u8 *)(s0 + 0xDF) = v0 - 1; \
|
|
} \
|
|
func_80147460(s0); \
|
|
{ \
|
|
u8 dv = *(u8 *)(s0 + 0xDE); \
|
|
*(u8 *)(s0 + 0xDE) = dv + 0xFF; \
|
|
if (dv != 0) return; \
|
|
} \
|
|
{ \
|
|
*(u8 *)(s0 + 0xDE) = 0x10; \
|
|
func_801472C8(s0); \
|
|
func_801470B4(s0); \
|
|
func_8015369C(s0); \
|
|
func_80146CA0((void *)s0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015294C() \
|
|
extern u16 D_800B99DA; \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_801470B4(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_80147A84(s32 arg0); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern s32 func_801472C8(struct S *a0); \
|
|
extern void func_8015369C(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015294C(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
func_80149020((s32 *)s0); \
|
|
if (D_800B99DA & 1) { \
|
|
func_801470B4(s0); \
|
|
} else { \
|
|
func_801470AC((s32 *)s0); \
|
|
} \
|
|
func_80147A84(s0); \
|
|
func_801473EC((s32 *)s0); \
|
|
func_80148038(s0, 0x18000); \
|
|
func_80147460(s0); \
|
|
{ \
|
|
u8 v = *(u8 *)(s0 + 0xDE); \
|
|
*(u8 *)(s0 + 0xDE) = v + 0xFF; \
|
|
if (v == 0) { \
|
|
*(u8 *)(s0 + 0xDE) = 0x10; \
|
|
func_801472C8((s32 *)s0); \
|
|
func_801470B4(s0); \
|
|
func_8015369C(s0); \
|
|
func_80146CA0((void *)s0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012AE00() \
|
|
extern s32 *D_80126B78; \
|
|
extern s32 *D_80126B90; \
|
|
extern s32 D_80126B58; \
|
|
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80013478(s32 a0, s32 a1); \
|
|
s32 func_8012AE00(s32 a0) { \
|
|
s16 sp10[3]; \
|
|
s16 sp18[4]; \
|
|
struct V8 sp20; \
|
|
s32 r1, r2; \
|
|
s32 base; \
|
|
s32 p18 = (s32)sp18; \
|
|
sp10[0] = *(u16 *)(a0 + 0x3A); \
|
|
sp10[1] = *(u16 *)(a0 + 0x3E); \
|
|
sp10[2] = *(u16 *)(a0 + 0x42); \
|
|
sp18[0] = *(u16 *)(a0 + 0x6); \
|
|
sp18[1] = *(u16 *)(a0 + 0xA); \
|
|
sp18[2] = *(u16 *)(a0 + 0xE); \
|
|
base = (s32)&D_80126B58; \
|
|
sp20 = *(struct V8 *)sp18; \
|
|
if (func_80135888((s32)D_80126B78, (s32)D_80126B90, (s32)sp10, (s32)&sp20) == 0) { \
|
|
return 0; \
|
|
} \
|
|
base += 4; \
|
|
r1 = func_80013478(base, (s32)sp10); \
|
|
r2 = func_80013478(base, p18); \
|
|
if (r1 < r2) { \
|
|
return 0; \
|
|
} \
|
|
*(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x38); \
|
|
*(s32 *)(a0 + 0x8) = *(s32 *)(a0 + 0x3C); \
|
|
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80171520() \
|
|
extern void *D_8011F738; \
|
|
extern struct B16 D_800A5E88; \
|
|
extern struct B16 D_800A5E98; \
|
|
extern struct B16 D_800A5EA8; \
|
|
extern void func_801719A4(int a0, int a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
extern void func_8017162C(void *a0); \
|
|
void func_80171520(s32 a0) { \
|
|
u8 *v1; \
|
|
s32 p; \
|
|
func_801719A4(a0, 1); \
|
|
v1 = (u8 *)D_8011F738; \
|
|
*(struct B16 *)(v1 + 0x0) = D_800A5E88; \
|
|
*(struct B16 *)(v1 + 0x10) = D_800A5E98; \
|
|
*(struct B16 *)(v1 + 0x20) = D_800A5EA8; \
|
|
v1[0xE] = 0; \
|
|
v1[0xD] = 0; \
|
|
v1[0xC] = 0; \
|
|
v1[0x1E] = 0; \
|
|
v1[0x1D] = 0; \
|
|
v1[0x1C] = 0; \
|
|
v1[0x2E] = 0; \
|
|
v1[0x2D] = 0; \
|
|
v1[0x2C] = 0; \
|
|
p = *(s32 *)(a0 + 0x20); \
|
|
*(u16 *)(p + 0x2C) = *(u16 *)(p + 0x2C) | 0x20; \
|
|
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)v1; \
|
|
func_80171990((u8 *)a0); \
|
|
func_8017162C((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012AF0C() \
|
|
s32 func_8012AF0C(s32 a0, s32 a1) { \
|
|
s32 s1 = a0; \
|
|
s32 s2 = a1; \
|
|
s16 spA[4]; /* sp+0x10 */ \
|
|
struct M8012AF0C spB; /* sp+0x18 (src) */ \
|
|
struct M8012AF0C spC; /* sp+0x20 (dst) */ \
|
|
s16 spD[4]; /* sp+0x28 */ \
|
|
spA[0] = *(u16 *)(s1 + 0x3A); \
|
|
spA[1] = *(u16 *)(s1 + 0x3E); \
|
|
spA[2] = *(u16 *)(s1 + 0x42); \
|
|
spB.a = *(u16 *)(s1 + 0x6); \
|
|
spB.b = *(u16 *)(s1 + 0xA); \
|
|
spB.c = *(u16 *)(s1 + 0xE); \
|
|
spC = spB; \
|
|
if (func_80135888(*(s32 *)(s2 + 0x20), *(s32 *)(s2 + 0x58), (s32)spA, (s32)&spC) != 0) { \
|
|
s32 r0, r1; \
|
|
spD[0] = *(u16 *)(s2 + 0x6); \
|
|
spD[1] = *(u16 *)(s2 + 0xA); \
|
|
spD[2] = *(u16 *)(s2 + 0xE); \
|
|
r0 = func_800132BC((s32)spD, (s32)spA); \
|
|
r1 = func_800132BC((s32)spD, (s32)&spB); \
|
|
if (r0 < r1) return 0; \
|
|
*(s32 *)(s1 + 0x4) = *(s32 *)(s1 + 0x38); \
|
|
*(s32 *)(s1 + 0x8) = *(s32 *)(s1 + 0x3C); \
|
|
*(s32 *)(s1 + 0xC) = *(s32 *)(s1 + 0x40); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80138D58() \
|
|
extern void func_8013A9F8(s32 a0, s32 a1); \
|
|
void func_80138D58(s32 a0, u16 a1) { \
|
|
if (*(s32 *)(a0 + 0x40) == 0) { \
|
|
return; \
|
|
} \
|
|
if ((u32)(*(u16 *)(a0 + 0x18) - 2) >= 5) { \
|
|
return; \
|
|
} \
|
|
if ((u32)(u16)(a1 - 2) >= 5) { \
|
|
return; \
|
|
} \
|
|
*(s16 *)(a0 + 0x18) = a1; \
|
|
func_8013A9F8(*(s32 *)(a0 + 0x40), a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80146014() \
|
|
extern void MoveImage(void *a0, s32 a1, s32 a2); \
|
|
void func_80146014(s32 a0) { \
|
|
s32 *r = (s32 *)a0; \
|
|
if (r[3] == 0) { \
|
|
return; \
|
|
} \
|
|
do { \
|
|
MoveImage(r, r[2], r[3]); \
|
|
r += 4; \
|
|
} while (r[3] != 0); \
|
|
}
|
|
|
|
#define DEFINE_func_801582C0() \
|
|
extern u8 D_800D52A8[]; \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801585A4(s32 *a0); \
|
|
extern void func_8016706C(s32 a0); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_801582C0(void *a0) { \
|
|
s32 s0 = (s32)a0; \
|
|
*(s32 *)(s0 + 0x44) = *(s32 *)(s0 + 0x44) | 2; \
|
|
*(s8 *)(s0 + 0x1AA) = 0x10; \
|
|
func_80154274((s32 *)s0, (s32)D_800D52A8); \
|
|
func_80154A74(s0, 0x15); \
|
|
func_801585A4((s32 *)s0); \
|
|
func_8016706C(5); \
|
|
func_80146994(4, s0, 8, 0); \
|
|
func_80147324(0x446); \
|
|
func_80146CA0((void *)s0); \
|
|
}
|
|
|
|
#define DEFINE_func_80139DF4() \
|
|
extern void func_80139A8C(s32 a0); \
|
|
void func_80139DF4(s32 a0) { \
|
|
s32 c; \
|
|
s32 v; \
|
|
c = *(u8 *)(a0 + 0xC); \
|
|
if (c != 0) { \
|
|
c = c - 1; \
|
|
*(s8 *)(a0 + 0xC) = (s8)c; \
|
|
if ((c & 0xFF) != 0) { \
|
|
goto calls; \
|
|
} \
|
|
} \
|
|
*(s16 *)(a0 + 0x4) = 2; \
|
|
return; \
|
|
calls: \
|
|
func_80139A8C(a0); \
|
|
if (*(s32 *)(a0 + 0x8) & 0x20) { \
|
|
*(s16 *)(a0 + 0x4) = 2; \
|
|
v = *(s32 *)(a0 + 0x8); \
|
|
*(s8 *)(a0 + 0xC) = 0; \
|
|
if ((v & 0x20000) == 0) { \
|
|
*(s32 *)(a0 + 0x8) = v & -0x21; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016E3CC() \
|
|
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
|
|
extern void func_800D23D0(void *a0); \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
void func_8016E3CC(s32 a0) { \
|
|
s16 src[4]; \
|
|
u8 mtx[8]; \
|
|
s32 p; \
|
|
p = *(s32 *)(a0 + 0x34); \
|
|
src[0] = *(u16 *)(p + 0x6); \
|
|
src[1] = *(u16 *)(p + 0xA) - 0x28; \
|
|
src[2] = *(u16 *)(p + 0xE); \
|
|
func_800D20C0((void *)src, (void *)mtx, 6); \
|
|
*(s16 *)(a0 + 0x6) = src[0]; \
|
|
*(s16 *)(a0 + 0xA) = src[1]; \
|
|
*(s16 *)(a0 + 0xE) = src[2]; \
|
|
func_800D23D0((void *)mtx); \
|
|
RotMatrixYXZ((void *)mtx, (void *)(a0 + 0x38)); \
|
|
}
|
|
|
|
#define DEFINE_func_8012F374() \
|
|
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
|
|
extern s16 D_80126CB4; \
|
|
extern s16 D_80126CB6; \
|
|
extern s16 D_80126CB8; \
|
|
void func_8012F374(s32 a0, s32 a1) { \
|
|
s32 s0 = a1; \
|
|
s32 in[3]; \
|
|
s32 out[3]; \
|
|
s32 mtx; \
|
|
mtx = *(s32 *)(a0 + 0x20); \
|
|
in[0] = D_80126CB4 - *(s32 *)(mtx + 0x48); \
|
|
in[1] = D_80126CB6 - *(s32 *)(mtx + 0x4C); \
|
|
in[2] = D_80126CB8 - *(s32 *)(mtx + 0x50); \
|
|
ApplyTransposeMatrixLV((void *)(mtx + 0x34), in, out); \
|
|
*(s16 *)(s0 + 0x0) = out[0]; \
|
|
*(s16 *)(s0 + 0x2) = out[1]; \
|
|
*(s16 *)(s0 + 0x4) = out[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_801308DC() \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_801308DC(s32 a0) { \
|
|
*(u8 *)(a0 + 0xC1) = 0xE; \
|
|
if ((*(s32 *)(a0 + 0xB4) & 0x8000) != 0) { \
|
|
*(s32 *)(a0 + 0x1C) = 0x10; \
|
|
*(s16 *)(a0 + 0xAA) = 0; \
|
|
*(s16 *)(a0 + 0x5C) = 0; \
|
|
*(s16 *)(a0 + 0x98) = 0; \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) = 0x400; \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x1C) = 0x400; \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A) = 0x200; \
|
|
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10; \
|
|
func_8002D4C8(0x68A, 0); \
|
|
} \
|
|
func_80131CA8(a0, 0x2A); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F080() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80149048(s32 *a0); \
|
|
extern void func_80156648(s32 *a0); \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015F080(s32 a0) { \
|
|
func_80154150(a0, 0x17); \
|
|
func_80154A74(a0, 0x15); \
|
|
func_80146994(0x5, a0, 0x7, 0); \
|
|
*(s32 *)(a0 + 0x238) = -1; \
|
|
*(s32 *)(a0 + 0x234) = 0; \
|
|
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & -2; \
|
|
func_80149048((s32 *)a0); \
|
|
func_80156648((s32 *)a0); \
|
|
*(s8 *)(a0 + 0x1AA) = 8; \
|
|
func_80149020((s32 *)a0); \
|
|
*(s16 *)(a0 + 0xF6) = 0x19EB; \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A110() \
|
|
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; \
|
|
void func_8012A110(void) { \
|
|
D_80120204 = 0x1F4; \
|
|
D_80120200 = 0x1F4; \
|
|
D_8012020C = 0x5DC; \
|
|
D_80120208 = 0x5DC; \
|
|
D_80120218 = 0x238; \
|
|
D_80120210 = 0x238; \
|
|
D_8012021A = 0; \
|
|
D_80120212 = 0; \
|
|
D_8012021C = 0; \
|
|
D_80120214 = 0; \
|
|
D_80120226 = 0; \
|
|
D_80120220 = 0; \
|
|
D_80120228 = 0; \
|
|
D_80120222 = 0; \
|
|
D_8012022A = 0; \
|
|
D_80120224 = 0; \
|
|
D_80120294 = 0; \
|
|
D_80120298 = 0; \
|
|
D_8012029A = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801653F4() \
|
|
extern s32 func_80165624(s32 a0); \
|
|
extern u8 D_80078EC1; \
|
|
extern u8 D_80078EC5; \
|
|
extern s16 currentLocationId; \
|
|
void func_801653F4(s32 a0) { \
|
|
s32 loc; \
|
|
s32 v; \
|
|
loc = currentLocationId; \
|
|
D_80078EC5 = 0; \
|
|
v = D_80078EC1 & 0x7F; \
|
|
D_80078EC1 = v; \
|
|
if (func_80165624(a0) != 0) { \
|
|
D_80078EC5 = 0x80; \
|
|
return; \
|
|
} \
|
|
if (D_80078EC1 != 0x1A) { \
|
|
return; \
|
|
} \
|
|
if ((u32)(loc - 0x305C) < 2) return; \
|
|
if ((u32)(loc - 0x305E) < 2) return; \
|
|
if ((u32)(loc - 0x3060) < 2) return; \
|
|
if ((u32)(loc - 0x3062) < 2) return; \
|
|
if ((u32)(loc - 0x3064) < 2) return; \
|
|
if (loc == 0x3066) return; \
|
|
D_80078EC5 = 0x80; \
|
|
}
|
|
|
|
#define DEFINE_func_80129010() \
|
|
extern s16 D_8011DB2C; \
|
|
extern s16 D_8011DB30; \
|
|
extern s32 D_80126AEC; \
|
|
void func_80129010(void) { \
|
|
s32 i; \
|
|
s32 s1; \
|
|
s32 idx; \
|
|
void (*fp)(s32); \
|
|
s1 = (s32)&D_8011DB30; \
|
|
if (D_8011DB2C == 0) { \
|
|
return; \
|
|
} \
|
|
i = 0; \
|
|
do { \
|
|
idx = *(u16 *)s1; \
|
|
if (idx != 0) { \
|
|
fp = (void (*)(s32))(*(s32 *)((idx << 2) + (*(s32 *)&D_80126AEC))); \
|
|
fp(s1); \
|
|
if (*(s32 *)(s1 + 0x20) != 0) { \
|
|
*(s16 *)(*(s32 *)(s1 + 0x20) + 0x8) = *(u16 *)(s1 + 0x6); \
|
|
*(s16 *)(*(s32 *)(s1 + 0x20) + 0xA) = *(u16 *)(s1 + 0xA); \
|
|
*(s16 *)(*(s32 *)(s1 + 0x20) + 0xC) = *(u16 *)(s1 + 0xE); \
|
|
} \
|
|
} \
|
|
i++; \
|
|
s1 += 0x38; \
|
|
} while (i < 0x80); \
|
|
}
|
|
|
|
#define DEFINE_func_80138AB4() \
|
|
extern s16 D_80127540[4]; \
|
|
extern s32 func_80139D04(s32 a0, s32 a1); \
|
|
extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80139B18(s32 a0); \
|
|
void func_80138AB4(s32 a0) { \
|
|
u8 sp10[8]; \
|
|
s32 s0 = a0; \
|
|
s32 s1; \
|
|
s32 a0v; \
|
|
s1 = func_80139D04((s32)sp10, (u16)D_80127540[*(u16 *)(s0 + 0x48)]) & 0xFFFF; \
|
|
do { \
|
|
s32 v1 = *(u16 *)(s0 + 0x44); \
|
|
a0v = 0; \
|
|
if ((s32)v1 < s1) { \
|
|
s32 a1v = (sp10[v1] + 0x30) & 0xFF; \
|
|
a0v = func_80138DE0(s0, a1v, 0); \
|
|
if (*(s32 *)(s0 + 0x8) & 0x80220) { \
|
|
/* a0v stays */ \
|
|
} else { \
|
|
a0v = 0; \
|
|
} \
|
|
} else { \
|
|
s32 t = *(u16 *)(s0 + 0x48); \
|
|
if ((u32)t < 3) { \
|
|
*(s16 *)(s0 + 0x48) = t + 1; \
|
|
} \
|
|
*(s16 *)(s0 + 0x4) = 2; \
|
|
} \
|
|
} while (a0v != 0); \
|
|
func_80139B18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B350() \
|
|
extern u8 D_80078E78[]; \
|
|
extern s16 D_80078E96; \
|
|
extern s32 D_80078E94; \
|
|
extern u8 D_80062BF4[]; \
|
|
extern s32 func_8016F1C4(void); \
|
|
extern void func_8014BC80(s32 a0, s32 a1); \
|
|
extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); \
|
|
extern void func_80019064(void *a0); \
|
|
void func_8014B350(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 s1 = (s32)&D_80078E78; \
|
|
s32 v0; \
|
|
s32 v1; \
|
|
u16 buf[4]; \
|
|
if (func_8016F1C4() != 0) { \
|
|
return; \
|
|
} \
|
|
v1 = *(u16 *)(s0 + 0x0); \
|
|
if (v1 == 0x1E || v1 == 0x1A) { \
|
|
return; \
|
|
} \
|
|
if (D_80078E96 & 0x8000) { \
|
|
if (*(s32 *)(s0 + 0x44) & 0x80) { \
|
|
D_80078E94 = D_80078E94 + 0xAAA8; \
|
|
} else { \
|
|
D_80078E94 = D_80078E94 + 0x1555; \
|
|
} \
|
|
v0 = *(u16 *)(s1 + 0x1E) & 0x7FFF; \
|
|
if (v0 < 0x3D) { \
|
|
} else { \
|
|
*(s32 *)(s1 + 0x1C) = 0x80000000; \
|
|
func_8014BC80(s0, 8); \
|
|
buf[0] = *(u16 *)(s0 + 0x6); \
|
|
buf[1] = *(u16 *)(s0 + 0xA) - 0x20; \
|
|
buf[2] = *(u16 *)(s0 + 0xE); \
|
|
func_8014AD30(s0, buf, 6, 0); \
|
|
func_80019064(&D_80062BF4); \
|
|
} \
|
|
} \
|
|
if (*(s16 *)(s1 + 0x56) & 0x8000) { \
|
|
if (*(s32 *)(s0 + 0x44) & 0x80) { \
|
|
*(s32 *)(s1 + 0x54) = *(s32 *)(s1 + 0x54) + 0xAAA8; \
|
|
} else { \
|
|
*(s32 *)(s1 + 0x54) = *(s32 *)(s1 + 0x54) + 0x1555; \
|
|
} \
|
|
v0 = *(u16 *)(s1 + 0x56) & 0x7FFF; \
|
|
if (v0 < 0x3D) { \
|
|
} else { \
|
|
*(s32 *)(s1 + 0x54) = 0x80000000; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80143640() \
|
|
extern u8 *func_8012913C(s32 a0); \
|
|
extern s32 rand(void); \
|
|
void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
u8 *s0; \
|
|
s32 r; \
|
|
s32 d0, d1, d2; \
|
|
s32 t; \
|
|
s32 pad[6]; \
|
|
(void)pad; \
|
|
if ((*(u16 *)(a0 + 0) & (s16)((1 << a3) - 1)) == 0) { \
|
|
s0 = func_8012913C(0x22); \
|
|
if (s0 != 0) { \
|
|
r = rand(); \
|
|
d0 = *(s16 *)(a2 + 0); \
|
|
*(s16 *)(s0 + 6) = (*(u16 *)(a1 + 0) + (r % (d0 << 1))) - d0; \
|
|
r = rand(); \
|
|
d1 = *(s16 *)(a2 + 2); \
|
|
*(s16 *)(s0 + 0xA) = (*(u16 *)(a1 + 2) + (r % (d1 << 1))) - d1; \
|
|
r = rand(); \
|
|
d2 = *(s16 *)(a2 + 4); \
|
|
t = *(u16 *)(a1 + 4); \
|
|
*(s32 *)(s0 + 0x18) = 0; \
|
|
*(s32 *)(s0 + 0x14) = 0; \
|
|
*(s32 *)(s0 + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0xE) = (t + (r % (d2 << 1))) - d2; \
|
|
*(s16 *)(s0 + 0x34) = *(u16 *)(a1 + 6); \
|
|
*(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) = 0xC008; \
|
|
} \
|
|
} \
|
|
*(u16 *)(a0 + 0) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801437D8() \
|
|
extern u8 *func_8012913C(s32 a0); \
|
|
extern s32 rand(void); \
|
|
void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
u8 *s0; \
|
|
s32 r; \
|
|
s32 d0, d1, d2; \
|
|
s32 t; \
|
|
s32 pad[6]; \
|
|
(void)pad; \
|
|
if ((*(u16 *)(a0 + 0) & (s16)((1 << a3) - 1)) == 0) { \
|
|
s0 = func_8012913C(0x23); \
|
|
if (s0 != 0) { \
|
|
r = rand(); \
|
|
d0 = *(s16 *)(a2 + 0); \
|
|
*(s16 *)(s0 + 6) = (*(u16 *)(a1 + 0) + (r % (d0 << 1))) - d0; \
|
|
r = rand(); \
|
|
d1 = *(s16 *)(a2 + 2); \
|
|
*(s16 *)(s0 + 0xA) = (*(u16 *)(a1 + 2) + (r % (d1 << 1))) - d1; \
|
|
r = rand(); \
|
|
d2 = *(s16 *)(a2 + 4); \
|
|
t = *(u16 *)(a1 + 4); \
|
|
*(s32 *)(s0 + 0x18) = 0; \
|
|
*(s32 *)(s0 + 0x14) = 0; \
|
|
*(s32 *)(s0 + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0xE) = (t + (r % (d2 << 1))) - d2; \
|
|
*(s16 *)(s0 + 0x34) = *(u16 *)(a1 + 6); \
|
|
*(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) = 0xC008; \
|
|
} \
|
|
} \
|
|
*(u16 *)(a0 + 0) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80143EBC() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern void func_8012C218(void *a0); \
|
|
extern s32 func_80134510(s32 arg); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 func_8004787C(s32 a0); \
|
|
extern s16 D_801152AC; \
|
|
extern s16 D_801152AA; \
|
|
extern u8 D_801152A8[]; \
|
|
void func_80143EBC(s32 a0) { \
|
|
s32 s1 = *(s32 *)(a0 + 0x64); \
|
|
s32 s0 = *(s32 *)(a0 + 0xCC); \
|
|
s16 sp[3]; \
|
|
s32 v0; \
|
|
if (*(s16 *)(s1 + 0x36) != *(s16 *)(a0 + 0xFC)) { \
|
|
if (a0 == 0) { \
|
|
return; \
|
|
} \
|
|
func_80016714((void *)s0, 0x38); \
|
|
func_8012C218((void *)a0); \
|
|
return; \
|
|
} \
|
|
sp[0] = *(u16 *)(s1 + 6); \
|
|
sp[1] = *(u16 *)(s1 + 0xA) - 0x10; \
|
|
sp[2] = *(u16 *)(s1 + 0xE); \
|
|
if (func_80134510((s32)&sp[0]) == 0) { \
|
|
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) | 0x80000000; \
|
|
return; \
|
|
} \
|
|
*(s16 *)(s0 + 8) = sp[0]; \
|
|
*(s16 *)(s0 + 0xA) = sp[1]; \
|
|
*(s16 *)(s0 + 0xC) = sp[2]; \
|
|
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) & 0x7FFFFFFF; \
|
|
if (*(s16 *)(a0 + 0x70) == 1) { \
|
|
*(s16 *)(s0 + 0x10) = 0x400; \
|
|
*(s16 *)(s0 + 0x12) = 0; \
|
|
} else { \
|
|
*(s16 *)(s0 + 0x10) = ratan2(D_801152AC, D_801152AA) + 0x400; \
|
|
*(s16 *)(s0 + 0x12) = ratan2(*(s16 *)D_801152A8, D_801152AA); \
|
|
} \
|
|
v0 = *(s32 *)(s1 + 0x20); \
|
|
*(s16 *)(s0 + 0x14) = -(*(u16 *)(v0 + 0x12)); \
|
|
v0 = *(s32 *)(s1 + 0x20); \
|
|
*(s16 *)(s0 + 0x18) = func_8004787C((*(u16 *)(v0 + 0x14) & 0x3FF) << 1) + 0x4000; \
|
|
v0 = *(s32 *)(s1 + 0x20); \
|
|
*(s16 *)(s0 + 0x1A) = func_8004787C((*(u16 *)(v0 + 0x10) & 0x3FF) << 1) + 0x4000; \
|
|
}
|
|
|
|
#define DEFINE_func_80162B1C() \
|
|
extern void func_80162CC4(void); \
|
|
extern s32 D_80126D40; \
|
|
extern s32 D_8011F9D0; \
|
|
void func_80162B1C(void) { \
|
|
s32 s3 = *(s32 *)&D_80126D40; \
|
|
s32 s2 = 0; \
|
|
s32 s1 = 0; \
|
|
s32 s0; \
|
|
s32 a0; \
|
|
s32 p; \
|
|
s32 fp; \
|
|
void (*f)(s32); \
|
|
do { \
|
|
s0 = s1 + (s32)&D_8011F9D0; \
|
|
*(s16 *)(s0 + 0x44) = *(u16 *)(s0 + 0x6); \
|
|
*(s16 *)(s0 + 0x46) = *(u16 *)(s0 + 0xA); \
|
|
*(s16 *)(s0 + 0x48) = *(u16 *)(s0 + 0xE); \
|
|
if (*(u16 *)(s0 + 0x0) != 0) { \
|
|
fp = *(s32 *)((*(u16 *)(s0 + 0x0) << 2) + s3 - 4); \
|
|
if (fp != 0) { \
|
|
f = (void (*)(s32))fp; \
|
|
f(s0); \
|
|
} else { \
|
|
((void (*)(s32))func_80162CC4)(s0); \
|
|
} \
|
|
a0 = *(s32 *)(s0 + 0x20); \
|
|
if (a0 != 0) { \
|
|
if (*(u16 *)a0 == 1) { \
|
|
s32 b0 = *(u16 *)(s0 + 0x6); \
|
|
*(s16 *)(a0 + 0x8) = b0; \
|
|
*(s32 *)(a0 + 0x48) = (s16)b0; \
|
|
b0 = *(u16 *)(s0 + 0xA); \
|
|
*(s16 *)(a0 + 0xA) = b0; \
|
|
*(s32 *)(a0 + 0x4C) = (s16)b0; \
|
|
{ \
|
|
s32 m = *(u16 *)(a0 + 0x2C) | 1; \
|
|
s32 c0 = *(u16 *)(s0 + 0xE); \
|
|
*(s16 *)(a0 + 0xC) = c0; \
|
|
*(s16 *)(a0 + 0x2C) = m; \
|
|
*(s32 *)(a0 + 0x50) = (s16)c0; \
|
|
} \
|
|
} else if ((p = *(s32 *)(a0 + 0x34)) != 0) { \
|
|
s32 b0 = *(u16 *)(s0 + 0x6); \
|
|
*(s16 *)(a0 + 0x8) = b0; \
|
|
*(s32 *)(p + 0x14) = (s16)b0; \
|
|
b0 = *(u16 *)(s0 + 0xA); \
|
|
*(s16 *)(a0 + 0xA) = b0; \
|
|
*(s32 *)(*(s32 *)(a0 + 0x34) + 0x18) = (s16)b0; \
|
|
b0 = *(u16 *)(s0 + 0xE); \
|
|
*(s16 *)(a0 + 0xC) = b0; \
|
|
*(s32 *)(*(s32 *)(a0 + 0x34) + 0x1C) = (s16)b0; \
|
|
} else { \
|
|
*(s16 *)(a0 + 0x8) = *(u16 *)(s0 + 0x6); \
|
|
*(s16 *)(a0 + 0xA) = *(u16 *)(s0 + 0xA); \
|
|
*(s16 *)(a0 + 0xC) = *(u16 *)(s0 + 0xE); \
|
|
} \
|
|
} \
|
|
} \
|
|
s2 += 1; \
|
|
s1 += 0x68; \
|
|
} while (s2 < 0x14); \
|
|
}
|
|
|
|
#define DEFINE_func_80147054() \
|
|
s32 func_80147054(void *a0) { \
|
|
s32 r = 1; \
|
|
*(signed char *)((char *)a0 + 0x4C) = r; \
|
|
return r; \
|
|
}
|
|
|
|
#define DEFINE_func_801470A0() \
|
|
s32 func_801470A0(void *a0) { \
|
|
s32 r = 1; \
|
|
*(signed char *)((char *)a0 + 0x220) = r; \
|
|
return r; \
|
|
}
|
|
|
|
#define DEFINE_func_8012DFBC() \
|
|
void func_8012DFBC(void) { \
|
|
char buf[16]; \
|
|
}
|
|
|
|
#define DEFINE_func_80165900() \
|
|
extern s8 D_80078EC4; \
|
|
s32 func_80165900(void) { \
|
|
return (unsigned char)D_80078EC4; \
|
|
}
|
|
|
|
#define DEFINE_func_80129428() \
|
|
extern s16 D_80114EE0; \
|
|
void func_80129428(void) { \
|
|
D_80114EE0 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012AD6C() \
|
|
void func_8012AD6C(void *a0) { \
|
|
*(short *)((char *)a0 + 0x34) = *(unsigned short *)((char *)a0 + 0x34) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012BF54() \
|
|
void func_8012BF54(void *a0) { \
|
|
*(short *)((char *)a0 + 0x5C) = *(unsigned short *)((char *)a0 + 0x5C) | 0x8000; \
|
|
}
|
|
|
|
#define DEFINE_func_801472DC() \
|
|
extern void *D_8012707C; \
|
|
void func_801472DC(void) { \
|
|
D_8012707C = (void *)0x451; \
|
|
}
|
|
|
|
#define DEFINE_func_801658EC() \
|
|
extern s8 D_80078EC4; \
|
|
void func_801658EC(void) { \
|
|
D_80078EC4 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80148D24() \
|
|
s32 func_80148D24(void *a0, int a1) { \
|
|
int p = *(int *)((char *)a0 + 0x20); \
|
|
*(short *)(p + 0x12) = (a1 - 0x800) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012A304() \
|
|
extern s8 D_801152C0; \
|
|
extern s16 D_80127080; \
|
|
extern s16 D_801152C2; \
|
|
void func_8012A304(s32 a0, s32 a1) { \
|
|
D_801152C0 = 1; \
|
|
D_80127080 = a0; \
|
|
D_801152C2 = a1; \
|
|
}
|
|
|
|
#define DEFINE_func_80147264() \
|
|
extern s16 D_80126BB8; \
|
|
extern s16 D_80126BBA; \
|
|
extern s16 D_80126BBC; \
|
|
void func_80147264(s32 a0) { \
|
|
D_80126BB8 = *(u16 *)(a0 + 0x0); \
|
|
D_80126BBA = *(u16 *)(a0 + 0x2); \
|
|
D_80126BBC = *(u16 *)(a0 + 0x4); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F680() \
|
|
extern void func_8016F350(void); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F680(void *a0) { \
|
|
func_8016F350(); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016F6B0() \
|
|
extern void func_8016F330(void); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8016F6B0(void *a0) { \
|
|
func_8016F330(); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BDD0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern s32 func_8015BE94(); \
|
|
void func_8015BDD0(s32 *a0) { \
|
|
func_80147078(a0, 3); \
|
|
((s32 (*)(void *))func_8015BE94)(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014C050() \
|
|
extern s32 D_8011D030; \
|
|
s32 func_8014C050(s32 a0, s32 a1) { \
|
|
u32 i = 0; \
|
|
s32 p = (s32)&D_8011D030; \
|
|
for (; i < 0x1E; i++) { \
|
|
if (*(u16 *)p == a1) { \
|
|
return p; \
|
|
} \
|
|
p += 0x58; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014BD24() \
|
|
extern s16 D_80078EB8; \
|
|
extern u16 D_80078EB6; \
|
|
void func_8014BD24(s32 a0, s32 a1) { \
|
|
u16 v; \
|
|
v = *(u16 *)&D_80078EB8 + a1; \
|
|
D_80078EB8 = v; \
|
|
if (D_80078EB6 < v) { \
|
|
D_80078EB8 = D_80078EB6; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149AD4() \
|
|
extern void func_8015DAC4(s32 *a0); \
|
|
extern void func_8015554C(s32 *a0); \
|
|
void func_80149AD4(s32 *a0) { \
|
|
s32 pad[6]; \
|
|
(void)pad; \
|
|
if (*(s32 *)((s32)a0 + 0x178) != 0) { \
|
|
func_8015DAC4(a0); \
|
|
} else { \
|
|
*(s8 *)((s32)a0 + 0x1AA) = 1; \
|
|
func_8015554C(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149B14() \
|
|
extern void func_8015DAC4(s32 *a0); \
|
|
extern void func_8015554C(s32 *a0); \
|
|
void func_80149B14(s32 *a0) { \
|
|
s32 pad[6]; \
|
|
(void)pad; \
|
|
if (*(s32 *)((s32)a0 + 0x178) != 0) { \
|
|
func_8015DAC4(a0); \
|
|
} else { \
|
|
func_8015554C(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149BAC() \
|
|
extern void func_8015DE24(s32 *a0); \
|
|
extern void func_80157510(s32 *a0); \
|
|
void func_80149BAC(s32 *a0) { \
|
|
if (*(s32 *)((s32)a0 + 0x178) != 0) { \
|
|
func_8015DE24(a0); \
|
|
} else { \
|
|
*(s8 *)((s32)a0 + 0x1AA) = 1; \
|
|
func_80157510(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014BC80() \
|
|
extern s16 D_80078EB4; \
|
|
extern u8 D_800B9A17; \
|
|
void func_8014BC80(s32 a0, s32 a1) { \
|
|
s32 v; \
|
|
v = *(u16 *)&D_80078EB4; \
|
|
if (v < a1) { \
|
|
D_80078EB4 = 0; \
|
|
D_800B9A17 = 0; \
|
|
} else { \
|
|
D_80078EB4 = v - a1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014C088() \
|
|
extern s32 D_8011F9D0; \
|
|
s32 func_8014C088(s32 a0, s32 a1) { \
|
|
u8 *p; \
|
|
u8 *end; \
|
|
p = (u8 *)&D_8011F9D0; \
|
|
end = p + 0xC30; \
|
|
if (p >= end) { \
|
|
return 0; \
|
|
} \
|
|
do { \
|
|
if (*(u16 *)p == a1) { \
|
|
return (s32)p; \
|
|
} \
|
|
p += 0x68; \
|
|
} while (p < end); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80169FE0() \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_80169FE0(s32 a0) { \
|
|
if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016DEE0() \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016DEE0(s32 a0) { \
|
|
if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149A64() \
|
|
extern s32 func_80149AA8(s32 *a0); \
|
|
extern s32 func_80149B54(s32 *a0); \
|
|
s32 func_80149A64(s32 *a0) { \
|
|
if (func_80149AA8(a0) || func_80149B54(a0)) { \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012BCCC() \
|
|
extern s32 func_80013478(s32 a0, s32 a1); \
|
|
extern s16 D_80126CBA; \
|
|
extern s32 D_80126B58; \
|
|
s32 func_8012BCCC(s32 a0) { \
|
|
s32 *p = &D_80126B58; \
|
|
if (D_80126CBA != 0) { \
|
|
return 0x7FFFFFFF; \
|
|
} \
|
|
return func_80013478(a0 + 4, (s32)p + 0x15C); \
|
|
}
|
|
|
|
#define DEFINE_func_80146AB4() \
|
|
extern s32 func_80146B9C(void *a0); \
|
|
void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) { \
|
|
u8 sp[0x18]; \
|
|
*(s16 *)(sp + 0x0) = a0; \
|
|
*(s32 *)(sp + 0x8) = a1; \
|
|
*(s16 *)(sp + 0x2) = a2; \
|
|
*(s16 *)(sp + 0x4) = a3; \
|
|
*(s16 *)(sp + 0x6) = a4; \
|
|
*(s32 *)(sp + 0xC) = a5; \
|
|
*(s32 *)(sp + 0x10) = a6; \
|
|
func_80146B9C(sp); \
|
|
}
|
|
|
|
#define DEFINE_func_8014A4B4() \
|
|
extern s32 func_80029178(s32 a0); \
|
|
s32 func_8014A4B4(void *a0) { \
|
|
if ((func_80029178(0x1E) & 0xFF) != 0) { \
|
|
u32 v = *(u16 *)((s32)a0 + 0xAC) & 0x40; \
|
|
return v != 0; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014ACE8() \
|
|
extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); \
|
|
void func_8014ACE8(void *a0, s32 a1, s32 a2) { \
|
|
u16 sp[4]; \
|
|
sp[0] = *(u16 *)((s32)a0 + 0x6); \
|
|
sp[1] = *(u16 *)((s32)a0 + 0xA) - 0x20; \
|
|
sp[2] = *(u16 *)((s32)a0 + 0xE); \
|
|
func_8014AD30((s32)a0, sp, a1, a2); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A094() \
|
|
extern void *memcpy(void *, const void *, unsigned int); \
|
|
void func_8012A094(s32 a0) { \
|
|
*(s32 *)(a0 + 0x8) = *(s32 *)(a0 + 0xC); \
|
|
*(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x14); \
|
|
memcpy((void *)(a0 + 0x18), (void *)(a0 + 0x20), 8); \
|
|
*(u16 *)(a0 + 0x28) = *(u16 *)(a0 + 0x2E); \
|
|
*(u16 *)(a0 + 0x2A) = *(u16 *)(a0 + 0x30); \
|
|
*(u16 *)(a0 + 0x2C) = *(u16 *)(a0 + 0x32); \
|
|
}
|
|
|
|
#define DEFINE_func_80139634() \
|
|
extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80139634(void *a0) { \
|
|
s16 sp[4]; \
|
|
sp[0] = *(u16 *)((u8 *)a0 + 0x38); \
|
|
sp[1] = *(u16 *)((u8 *)a0 + 0x3A); \
|
|
sp[2] = 0x38; \
|
|
sp[3] = 0x30; \
|
|
func_80059888(&sp[0], 0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80162120() \
|
|
extern s32 func_800291DC(s32); \
|
|
extern s32 func_800D0D7C(s32, s32); \
|
|
extern void func_800291C8(s32, s32); \
|
|
void func_80162120(void) { \
|
|
s32 v0; \
|
|
if ((s16)func_800291DC(8) == 0) { \
|
|
v0 = func_800D0D7C(0, 1); \
|
|
func_800291C8(8, (s16)(v0 | 0x8000)); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012A860() \
|
|
extern int func_8012ACE0(void *a0); \
|
|
extern void func_8012AAAC(void); \
|
|
void func_8012A860(void *a0, int a1) { \
|
|
int v0; \
|
|
register char *p asm("$4"); \
|
|
*(int *)((char *)a0 + 0x90) = a1; \
|
|
v0 = func_8012ACE0(a0); \
|
|
p = (char *)a0; \
|
|
*(unsigned short *)(p + 0x72) = *(unsigned short *)(p + 0x72) | 0x200; \
|
|
*(int *)(p + 0x94) = v0 - 1; \
|
|
*(int *)(p + 0x9C) = 0; \
|
|
*(short *)(p + 0x9A) = 0; \
|
|
func_8012AAAC(); \
|
|
}
|
|
|
|
#define DEFINE_func_8012E57C() \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8012E57C(s32 a0, s32 a1) { \
|
|
u8 *p = D_801202A0; \
|
|
u8 *end = D_801202A0 + 0x6480; \
|
|
if (p != end) { \
|
|
s32 key = (s16)a1; \
|
|
do { \
|
|
if (*(u16 *)(p + 0x0) == a0) { \
|
|
if (*(s16 *)(p + 0x70) == key) { \
|
|
return (s32)p; \
|
|
} \
|
|
} \
|
|
p += 0x10C; \
|
|
} while (p != end); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80146D30() \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
void func_80146D30(s32 a0) { \
|
|
s32 *p = &D_80127090; \
|
|
*(s32 *)(a0 + 0x10) = *p; \
|
|
*(s32 *)(a0 + 0x14) = D_80127094; \
|
|
*(s32 *)(a0 + 0x18) = D_80127098; \
|
|
*p = 0; \
|
|
D_80127094 = 0; \
|
|
D_80127098 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C0C8() \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2) { \
|
|
s32 i = 0; \
|
|
s32 key = (s16)a2; \
|
|
u8 *p = D_801202A0; \
|
|
do { \
|
|
if (*(u16 *)(p + 0x0) == a1) { \
|
|
if (*(s16 *)(p + 0xFC) == key) { \
|
|
return (s32)p; \
|
|
} \
|
|
} \
|
|
i += 1; \
|
|
p += 0x10C; \
|
|
} while ((u32)i < 0x60); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C918() \
|
|
extern u8 D_801151F0[]; \
|
|
s32 func_8014C918(s32 a0, s32 a1) { \
|
|
s32 v1; \
|
|
s32 ret; \
|
|
if (a1 == 0x18) { \
|
|
return 0x8; \
|
|
} \
|
|
v1 = 0; \
|
|
goto search; \
|
|
found: \
|
|
return ret; \
|
|
search: \
|
|
do { \
|
|
ret = v1 & 0xFF; \
|
|
if (D_801151F0[ret] == a1) { \
|
|
goto found; \
|
|
} \
|
|
v1 += 1; \
|
|
} while ((u32)(v1 & 0xFF) < 0x8); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801552F4() \
|
|
extern s32 D_800DE2A4[]; \
|
|
void func_801552F4(s32 a0) { \
|
|
s32 *p = D_800DE2A4; \
|
|
s32 v0 = *p; \
|
|
if (v0 != 0) { \
|
|
do { \
|
|
v0 &= 0x80FFFFFF; \
|
|
*p = v0; \
|
|
p += 1; \
|
|
v0 = *p; \
|
|
} while (v0 != 0); \
|
|
} \
|
|
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) | 0x30000000; \
|
|
}
|
|
|
|
#define DEFINE_func_80155344() \
|
|
extern s32 D_800DE2A4[]; \
|
|
void func_80155344(s32 a0) { \
|
|
s32 *p = D_800DE2A4; \
|
|
s32 v0 = *p; \
|
|
if (v0 != 0) { \
|
|
do { \
|
|
v0 |= 0x1000000; \
|
|
*p = v0; \
|
|
p += 1; \
|
|
v0 = *p; \
|
|
} while (v0 != 0); \
|
|
} \
|
|
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & 0xCFFFFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8014A6C4() \
|
|
extern s32 func_80029178(s32 a0); \
|
|
s32 func_8014A6C4(s32 a0) { \
|
|
s32 r; \
|
|
if ((func_80029178(0x1F) & 0xFF) == 0) { \
|
|
r = 0; \
|
|
} else if (*(s32 *)(a0 + 0x44) & 0x4) { \
|
|
r = 0; \
|
|
} else { \
|
|
r = *(u8 *)(a0 + 0x1BE) == 0; \
|
|
} \
|
|
return r; \
|
|
}
|
|
|
|
#define DEFINE_func_8015AB7C() \
|
|
extern u8 D_800D48DC; \
|
|
s32 func_8015AB7C(s32 a0) { \
|
|
u8 v1; \
|
|
if (*(s32*)(a0 + 0xB4) == (s32)&D_800D48DC) { \
|
|
v1 = *(u8*)(a0 + 0xDC); \
|
|
if (v1 < 6) { \
|
|
return 0x10; \
|
|
} \
|
|
if (v1 < 0xB) { \
|
|
return 0x12; \
|
|
} \
|
|
if (v1 < 0x10) { \
|
|
return 0x7; \
|
|
} \
|
|
return 0x9; \
|
|
} \
|
|
return *(u8*)(a0 + 0xBC); \
|
|
}
|
|
|
|
#define DEFINE_func_801620C4() \
|
|
extern int func_800291DC(int); \
|
|
extern int func_800D0E30(void *a0); \
|
|
int func_801620C4(void) { \
|
|
short local; \
|
|
int lo; \
|
|
local = func_800291DC(8) & 0x7FFF; \
|
|
local = func_800D0E30(&local); \
|
|
lo = *(unsigned char *)&local; \
|
|
return (short)(*((unsigned char *)&local + 1) * 100 + lo); \
|
|
}
|
|
|
|
#define DEFINE_func_801626B8() \
|
|
extern int func_800291DC(int); \
|
|
extern int func_800D0E30(void *a0); \
|
|
int func_801626B8(void) { \
|
|
short local; \
|
|
int lo; \
|
|
local = func_800291DC(0x12) & 0x7FFF; \
|
|
local = func_800D0E30(&local); \
|
|
lo = *(unsigned char *)&local; \
|
|
return (short)(*((unsigned char *)&local + 1) * 100 + lo); \
|
|
}
|
|
|
|
#define DEFINE_func_801633A8() \
|
|
extern s32 D_80115100; \
|
|
extern s32 D_80115200; \
|
|
s32 func_801633A8(void) { \
|
|
s32 *p = &D_80115100; \
|
|
s32 *q = &D_80115200; \
|
|
s32 i; \
|
|
for (i = 0; i < 3; i++) { \
|
|
s32 v1 = q[i]; \
|
|
if (v1 != 0) { \
|
|
if ((*(u16*)(p[i] + 0x5C) & 0x400) == 0) { \
|
|
return v1; \
|
|
} \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017C230() \
|
|
extern void func_80146C3C(void); \
|
|
void func_8017C230(int a0) { \
|
|
int v0 = *(int *)(a0 + 0x1C); \
|
|
register unsigned char *p __asm__("$5") = *(unsigned char **)(a0 + 0x20); \
|
|
*(int *)(a0 + 0x1C) = v0 + 1; \
|
|
if (v0 >= 0x1F) { \
|
|
func_80146C3C(); \
|
|
} else { \
|
|
unsigned short hv = *(unsigned short *)(p + 0x1A) + 0x1E0; \
|
|
signed char bv = *(unsigned char *)(p + 0x26) - 3; \
|
|
*(unsigned short *)(p + 0x1A) = hv; \
|
|
*(unsigned short *)(p + 0x18) = hv; \
|
|
*(signed char *)(p + 0x26) = bv; \
|
|
*(signed char *)(p + 0x25) = bv; \
|
|
*(signed char *)(p + 0x24) = bv; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80146CC8() \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
void func_80146CC8(s32 a0) { \
|
|
s32 *p = &D_80127090; \
|
|
*(s32*)(a0 + 0x10) += *p; \
|
|
*(s32*)(a0 + 0x14) += D_80127094; \
|
|
*(s32*)(a0 + 0x18) += D_80127098; \
|
|
*p = 0; \
|
|
D_80127094 = 0; \
|
|
D_80127098 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801657D8() \
|
|
extern s32 D_80078E94; \
|
|
extern s32 D_80078E9C; \
|
|
extern s32 D_80078EA0; \
|
|
extern s32 D_80078EA4; \
|
|
extern s32 D_80078EA8; \
|
|
extern u8 D_80078EBB; \
|
|
extern s32 D_80078ECC; \
|
|
extern s32 D_80078ED0; \
|
|
extern s32 D_80078ED4; \
|
|
extern s32 D_80078ED8; \
|
|
extern s32 D_80078EDC; \
|
|
extern u8 D_80078EE0; \
|
|
void func_801657D8(void) { \
|
|
D_80078ECC = D_80078E94; \
|
|
D_80078ED0 = D_80078E9C; \
|
|
D_80078ED4 = D_80078EA0; \
|
|
D_80078ED8 = D_80078EA4; \
|
|
D_80078EDC = D_80078EA8; \
|
|
D_80078EE0 = D_80078EBB; \
|
|
}
|
|
|
|
#define DEFINE_func_80165874() \
|
|
extern s32 D_80078ECC; \
|
|
extern s32 D_80078ED0; \
|
|
extern s32 D_80078ED4; \
|
|
extern s32 D_80078ED8; \
|
|
extern s32 D_80078EDC; \
|
|
extern u8 D_80078EE0; \
|
|
extern s32 D_80078E94; \
|
|
extern s32 D_80078E9C; \
|
|
extern s32 D_80078EA0; \
|
|
extern s32 D_80078EA4; \
|
|
extern s32 D_80078EA8; \
|
|
extern u8 D_80078EBB; \
|
|
void func_80165874(void) { \
|
|
D_80078E94 = D_80078ECC; \
|
|
D_80078E9C = D_80078ED0; \
|
|
D_80078EA0 = D_80078ED4; \
|
|
D_80078EA4 = D_80078ED8; \
|
|
D_80078EA8 = D_80078EDC; \
|
|
D_80078EBB = D_80078EE0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013001C() \
|
|
extern s32 func_8012BCCC(s32 a0); \
|
|
extern s32 func_80131AC8(void *a0); \
|
|
void func_8013001C(void *a0) { \
|
|
s32 v0 = func_8012BCCC((s32)a0); \
|
|
if (v0 <= 0x8FFF) { \
|
|
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x30)) { \
|
|
return; \
|
|
} \
|
|
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x31); \
|
|
} else { \
|
|
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x31)) { \
|
|
return; \
|
|
} \
|
|
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x30); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80130088() \
|
|
extern s32 func_8012BCCC(s32 a0); \
|
|
extern s32 func_80131AC8(void *a0); \
|
|
void func_80130088(void *a0) { \
|
|
s32 v0 = func_8012BCCC((s32)a0); \
|
|
if (v0 <= 0x8FFF) { \
|
|
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x32)) { \
|
|
return; \
|
|
} \
|
|
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x33); \
|
|
} else { \
|
|
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x33)) { \
|
|
return; \
|
|
} \
|
|
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x32); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80128564() \
|
|
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; \
|
|
void func_80128564(void) { \
|
|
register s32 p __asm__("$6") = 0x1F8003FC; \
|
|
__asm__ __volatile__( \
|
|
"addu $8, %0, $zero\n" \
|
|
"sw $sp, 0($8)\n" \
|
|
"addiu $8, $8, -4\n" \
|
|
"addu $sp, $8, $zero\n" \
|
|
"jal func_80178608\n" \
|
|
"addiu $sp, $sp, 4\n" \
|
|
"lw $sp, 0($sp)\n" \
|
|
: : "r"(p) : "$8", "memory"); \
|
|
if (currentLocationId == 0x300A) { \
|
|
func_8002D4C8(6, 0); \
|
|
} \
|
|
func_80011A3C(); \
|
|
D_800B99F2 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801691B8() \
|
|
extern s32 func_80169228(void); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
void func_801691B8(void *a0) { \
|
|
if (*(s32 *)((s32)a0 + 0x1C) < 10) { \
|
|
func_80169228(); \
|
|
func_800D22E4((s32)a0); \
|
|
*(s32 *)((s32)a0 + 0x14) += 0x10000; \
|
|
*(s32 *)((s32)a0 + 0x1C) += 1; \
|
|
} else { \
|
|
((void (*)(s32))func_80146C3C)((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016E2E8() \
|
|
extern void func_8016E3CC(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016E2E8(void *a0) { \
|
|
s32 *s1 = *(s32 **)((s32)a0 + 0x20); \
|
|
func_8016E3CC((s32)a0); \
|
|
if (--*(s32 *)((s32)a0 + 0x1C) != 0) { \
|
|
*(u16 *)((s32)s1 + 0x18) -= 0x100; \
|
|
*(u16 *)((s32)s1 + 0x1A) -= 0x120; \
|
|
} else { \
|
|
((void (*)(s32))func_80146C3C)((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016B984() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016B984(void *a0) { \
|
|
if (*(s32*)((s32)a0 + 0x10) != 0) { \
|
|
func_80016714(*(void**)((s32)a0 + 0x10), 0x38); \
|
|
} \
|
|
if (*(s32*)((s32)a0 + 0x14) != 0) { \
|
|
func_80016714(*(void**)((s32)a0 + 0x14), 0x38); \
|
|
} \
|
|
if (*(s32*)((s32)a0 + 0x18) != 0) { \
|
|
func_80016714(*(void**)((s32)a0 + 0x18), 0x38); \
|
|
} \
|
|
((void (*)(void *))func_80146C3C)(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016E358() \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern void func_8016E460(void *a0, void *a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016E358(void *a0) { \
|
|
s32 v0; \
|
|
v0 = *(s32*)((s32)a0 + 0x1C) - 1; \
|
|
*(s32*)((s32)a0 + 0x1C) = v0; \
|
|
if (v0 != 0) { \
|
|
func_800D22E4((s32)a0); \
|
|
*(s16*)((s32)a0 + 0x16) = *(u16*)((s32)a0 + 0x16) - 3; \
|
|
*(s32*)((s32)a0 + 0x30) = *(s32*)((s32)a0 + 0x30) - 0xE; \
|
|
func_8016E460(a0, (void*)((s32)a0 + 0x38)); \
|
|
} else { \
|
|
((void (*)(void *))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B6F0() \
|
|
extern s32 D_80078E9C; \
|
|
extern s32 D_80078ED0; \
|
|
void func_8014B6F0(s32 a0, s32 a1) { \
|
|
D_80078E9C += a1; \
|
|
if (*(s16*)((s32)&D_80078E9C + 2) >= 0xA1) { \
|
|
D_80078E9C = 0xA00000; \
|
|
} \
|
|
D_80078ED0 += a1; \
|
|
if (*(s16*)((s32)&D_80078ED0 + 2) >= 0xA1) { \
|
|
D_80078ED0 = 0xA00000; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012BD3C() \
|
|
extern s32 func_80013478(s32 a0, s32 a1); \
|
|
extern s32 func_8012BDBC(s32 a0, s32 a1); \
|
|
extern s16 D_80126CBA; \
|
|
extern s16 D_80126CB4; \
|
|
s32 func_8012BD3C(s32 a0, s32 a1, s32 a2) { \
|
|
s32 v; \
|
|
s32 hp; \
|
|
hp = a1; \
|
|
if (D_80126CBA != 0) { \
|
|
v = 0x7FFFFFFF; \
|
|
} else { \
|
|
v = func_80013478(a0 + 4, (s32)&D_80126CB4); \
|
|
} \
|
|
if (a2 < v) { \
|
|
return 0; \
|
|
} \
|
|
return func_8012BDBC(a0, (s16)hp); \
|
|
}
|
|
|
|
#define DEFINE_func_8012CAE4() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern u16 D_801274E4[]; \
|
|
void func_8012CAE4(void *a0) { \
|
|
u16 *d; \
|
|
void *p; \
|
|
s32 t; \
|
|
s32 a1; \
|
|
d = D_801274E4; \
|
|
*d |= 1; \
|
|
p = *(void **)((s32)a0 + 0x20); \
|
|
if (p != 0) { \
|
|
t = *(u16 *)p; \
|
|
if (t != 1) { \
|
|
if (t != 2) { \
|
|
goto done; \
|
|
} \
|
|
a1 = 0x38; \
|
|
} else { \
|
|
a1 = 0x84; \
|
|
} \
|
|
func_80016714(p, a1); \
|
|
done:; \
|
|
} \
|
|
func_80016714(a0, 0x10C); \
|
|
}
|
|
|
|
#define DEFINE_func_801553C0() \
|
|
extern s32 func_80029178(s32); \
|
|
extern void func_8001D150(s32, s32); \
|
|
void func_801553C0(s32 a0) { \
|
|
s32 *flags; \
|
|
flags = (s32 *)(a0 + 0x44); \
|
|
if ((*flags & 4) != 0 || (func_80029178(0x12F) & 0xFF) != 0) { \
|
|
*flags = *flags & 0xEFFFFFFF; \
|
|
} else { \
|
|
*flags = *flags | 0x10000000; \
|
|
} \
|
|
func_8001D150(*(s32 *)(*(s32 *)(a0 + 0x20) + 0x24), 0x15); \
|
|
}
|
|
|
|
#define DEFINE_func_8012CE2C() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
s32 func_8012CE2C(s32 a0) { \
|
|
short a[4]; \
|
|
short b[4]; \
|
|
s32 pa, pb; \
|
|
a[0] = *(u16 *)(a0 + 0x6); \
|
|
a[1] = *(u16 *)(a0 + 0xA); \
|
|
a[2] = *(u16 *)(a0 + 0xE); \
|
|
pa = (s32)a; \
|
|
pb = (s32)b; \
|
|
__builtin_memcpy((void *)pb, (void *)pa, 8); \
|
|
b[1] += 8; \
|
|
func_80133784(1, a, pb); \
|
|
return a[1] == b[1]; \
|
|
}
|
|
|
|
#define DEFINE_func_80147DC0() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
void func_80147DC0(s32 a0, s32 a1) { \
|
|
s32 pad[4]; \
|
|
s32 buf[8]; \
|
|
s32 q = *(s32 *)(a0 + 0x20); \
|
|
func_80013F3C((s32)buf); \
|
|
func_800126C4((s32)buf, *(s16 *)(q + 0x10)); \
|
|
func_80012558((s32)buf, *(s16 *)(q + 0x12)); \
|
|
func_800123F0((s32)buf, *(s16 *)(q + 0x14)); \
|
|
func_800484EC((s32)buf, a0 + 0x24, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_8016325C() \
|
|
extern void func_80162F60(s32 arg0, s32 arg1); \
|
|
extern void func_80162F80(s32 arg0, s32 arg1); \
|
|
extern void func_80162FA0(s32 arg0, s32 arg1); \
|
|
extern void func_80146D30(s32 a0); \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
func_80162F60(a0, a1); \
|
|
func_80162F80(a0, a2); \
|
|
func_80162FA0(a0, a3); \
|
|
D_80127090 = *(s32 *)(a0 + 0x24); \
|
|
D_80127094 = *(s32 *)(a0 + 0x28); \
|
|
D_80127098 = *(s32 *)(a0 + 0x2C); \
|
|
func_80146D30(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8013F1BC() \
|
|
extern void func_800D2624(void); \
|
|
extern short D_800B9A02; \
|
|
extern unsigned short D_80115114; \
|
|
extern unsigned short D_80115112; \
|
|
extern unsigned short D_80115118; \
|
|
void func_8013F1BC(void) { \
|
|
unsigned short *p = &D_80115118; \
|
|
if (*p != 0) { \
|
|
*p -= 0x10; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
if (*p != 0) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
if (D_80115114 == ((unsigned short)D_800B9A02 ^ 1)) { \
|
|
func_800D2624(); \
|
|
} else { \
|
|
D_80115112 += 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014CC28() \
|
|
extern void func_8014D3E0(s32 a0); \
|
|
extern void func_8014D04C(void); \
|
|
extern void func_8014CCB4(void); \
|
|
void func_8014CC28(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0x44) < 0) { \
|
|
if (*(s16 *)(a0 + 0xA) != *(s16 *)(a0 + 0x8A)) { \
|
|
func_8014D3E0(a0); \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)(a0 + 0x6) != *(s16 *)(a0 + 0x88) || \
|
|
*(s16 *)(a0 + 0xE) != *(s16 *)(a0 + 0x8C)) { \
|
|
func_8014D04C(); \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_8014CCB4(); \
|
|
}
|
|
|
|
#define DEFINE_func_801567BC() \
|
|
extern u8 D_8011DAD8[]; \
|
|
extern s32 D_801151E0[]; \
|
|
extern s32 func_8014C568(void *a0); \
|
|
void func_801567BC(s32 a0) { \
|
|
s32 obj = a0; \
|
|
s32 i = 0; \
|
|
u8 *q = D_8011DAD8; \
|
|
s32 *p = D_801151E0; \
|
|
do { \
|
|
if (*p & 1) { \
|
|
*(s16 *)(*(s32 *)(obj + 0x20) + 0x12) = \
|
|
((s32 (*)(void *, void *))func_8014C568)((void *)obj, q); \
|
|
} \
|
|
q += 8; \
|
|
i += 1; \
|
|
p += 1; \
|
|
} while ((u32)i < 3); \
|
|
}
|
|
|
|
#define DEFINE_func_80142454() \
|
|
extern u16 D_80126B5E; \
|
|
extern u16 D_80126B62; \
|
|
extern u16 D_80126B66; \
|
|
extern s32 func_8012C51C(void *a0, s32 a1); \
|
|
void func_80142454(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
u16 *s1 = &D_80126B5E; \
|
|
s32 ret; \
|
|
s16 st[10]; \
|
|
st[3] = 0x13; \
|
|
st[0] = *s1; \
|
|
st[1] = D_80126B62; \
|
|
st[2] = D_80126B66; \
|
|
st[4] = 1; \
|
|
st[5] = 0; \
|
|
st[7] = 0; \
|
|
*(s32 *)&st[8] = 0; \
|
|
ret = ((s32 (*)(void *, s32))func_8012C51C)(st, 0); \
|
|
if (ret != 0) { \
|
|
*(s16 *)(ret + 0x52) = s0; \
|
|
*(s32 *)(ret + 0x64) = (s32)s1 - 6; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801581AC() \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_80161418(void *a0); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
void func_801581AC(s32 a0) { \
|
|
s32 reserved[4]; \
|
|
(void)reserved; \
|
|
*(s32 *)(a0 + 0x44) |= 2; \
|
|
func_80148038(a0, 0x10000); \
|
|
func_80147460(a0); \
|
|
func_80147AD4(a0, 0, 0, 0); \
|
|
func_801473EC((s32 *)a0); \
|
|
{ \
|
|
register s32 ret __asm__("$2"); \
|
|
func_80161418((void *)a0); \
|
|
__asm__ __volatile__("" : "=r"(ret)); \
|
|
if (ret != 0) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
if (*(u16 *)(a0 + 0xB8) == 0x8000) { \
|
|
func_801599A4((void *)a0); \
|
|
func_80159B3C((void *)a0); \
|
|
} else { \
|
|
func_80155FF8(a0, *(u8 *)(a0 + 0x1AA)); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016E1CC() \
|
|
extern void func_8016E3CC(s32 a0); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_8016E1CC(s32 a0) { \
|
|
s32 s1; \
|
|
s32 v; \
|
|
s1 = *(s32 *)(a0 + 0x20); \
|
|
func_8016E3CC(a0); \
|
|
v = *(s32 *)(a0 + 0x1C) - 1; \
|
|
*(s32 *)(a0 + 0x1C) = v; \
|
|
if (v != 0) { \
|
|
func_80146A6C(0x48, (void *)a0, 0, 0, 0, 0x8000, 0); \
|
|
*(s16 *)(s1 + 0x18) = *(u16 *)(s1 + 0x18) + 0x100; \
|
|
*(s16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x140; \
|
|
return; \
|
|
} \
|
|
*(s32 *)(a0 + 0x1C) = 0x20; \
|
|
*(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8013914C() \
|
|
extern s32 func_80139220(s32 a0); \
|
|
s32 func_8013914C(s32 a0, s32 a1) { \
|
|
s32 t; \
|
|
if ((s32)*(u16 *)(a0 + 0x14) >= *(s16 *)(a0 + 0x2C)) { \
|
|
if (func_80139220(a0) != 0) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
t = *(u16 *)(a0 + 0x14); \
|
|
*(s16 *)(a1 + 0x0) = *(u16 *)(a0 + 0x38) + (((u32)(t * 3)) >> 1); \
|
|
t = *(u16 *)(a0 + 0x12); \
|
|
*(s16 *)(a1 + 0x2) = *(u16 *)(a0 + 0x3A) + ((t * 3) << 2); \
|
|
*(s16 *)(a0 + 0x14) = *(u16 *)(a0 + 0x14) + 1; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013ED6C() \
|
|
extern s32 func_80141C50(void); \
|
|
extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ \
|
|
extern void func_8013FAF8(s16 a0, s16 a1); \
|
|
extern void func_8013E958(void); \
|
|
extern short D_800B9A02; \
|
|
extern u8 D_801151C8[]; \
|
|
extern s32 D_801151D0; \
|
|
extern u16 D_8011511A; \
|
|
extern u16 D_8011511E; \
|
|
extern u16 D_80115112; \
|
|
void func_8013ED6C(void) { \
|
|
s32 sp10[2]; \
|
|
if ((s16)func_80141C50() == 0) { \
|
|
D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; \
|
|
func_8013F350(); \
|
|
func_8013FAF8(7, 8); \
|
|
if (D_8011511A == 7) { \
|
|
if ((D_8011511E & 0x810) == 0) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_8013E958(); \
|
|
D_80115112 = 4; \
|
|
} \
|
|
(void)sp10; \
|
|
}
|
|
|
|
#define DEFINE_func_801505FC() \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_801506A4(s32 a0, s32 a1); \
|
|
s32 func_801505FC(s32 a0) { \
|
|
u8 *p = D_801202A0; \
|
|
if (p < D_801202A0 + 0x6480) { \
|
|
u8 *end = D_801202A0 + 0x6480; \
|
|
do { \
|
|
if (*(u16 *)(p + 0x0) != 0) { \
|
|
if (*(u16 *)(p + 0x5C) & 0x100) { \
|
|
if (func_8014C278(a0, (s32)p, 0x30) != 0) { \
|
|
func_801506A4(a0, (s32)p); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
p += 0x10C; \
|
|
} while (p < end); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80149DD8() \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_80149F2C(s32 a0, s32 a1); \
|
|
s32 func_80149DD8(s32 a0) { \
|
|
u8 *p; \
|
|
if (*(s32 *)(a0 + 0x178) != 0) { \
|
|
return 0; \
|
|
} \
|
|
if (*(s32 *)(a0 + 0x44) & 0x404) { \
|
|
return 0; \
|
|
} \
|
|
if ((*(u16 *)(a0 + 0xAC) & 0x80) == 0) { \
|
|
return 0; \
|
|
} \
|
|
*(s32 *)(a0 + 0x190) = 0; \
|
|
for (p = D_801202A0; p < D_801202A0 + 0x6480; p += 0x10C) { \
|
|
if (func_80149F2C(a0, (s32)p) != 0) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014E98C() \
|
|
extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); \
|
|
s32 func_8014E98C(void *a0) { \
|
|
s16 buf1[3]; \
|
|
s16 buf2[4]; \
|
|
s32 acc; \
|
|
s32 i; \
|
|
acc = 0; \
|
|
i = 2; \
|
|
if ((*(s32 *)((u8 *)a0 + 0x44) & 0x80000) == 0) { \
|
|
if ((*(s32 *)((u8 *)a0 + 0x1F8) & 0x4000000) == 0) { \
|
|
do { \
|
|
buf1[0] = *(u16 *)((u8 *)a0 + 0x88); \
|
|
i -= 1; \
|
|
buf1[1] = *(u16 *)((u8 *)a0 + 0x8A) - 0x10; \
|
|
buf1[2] = *(u16 *)((u8 *)a0 + 0x8C); \
|
|
buf2[0] = *(u16 *)((u8 *)a0 + 0x6); \
|
|
buf2[1] = *(u16 *)((u8 *)a0 + 0xA) - 0x10; \
|
|
buf2[2] = *(u16 *)((u8 *)a0 + 0xE); \
|
|
acc = acc | func_8014EA4C(a0, buf1, buf2, i); \
|
|
} while (i != 0); \
|
|
} \
|
|
} \
|
|
return acc; \
|
|
}
|
|
|
|
#define DEFINE_func_801575E4() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80156648(s32 *a0); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_8014B768(s32 a0, s32 a1); \
|
|
extern void func_80147300(u16 arg0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_800D4F14[]; \
|
|
extern s32 D_8011F730; \
|
|
void func_801575E4(void *a0) { \
|
|
s32 v; \
|
|
func_80154A74((s32)a0, 0x15); \
|
|
v = *(u8 *)((u8 *)a0 + 0x1AB) ^ 1; \
|
|
*(u8 *)((u8 *)a0 + 0x1AB) = v; \
|
|
if (v != 0) { \
|
|
*(u8 *)((u8 *)a0 + 0x1AA) = 0xA; \
|
|
} else { \
|
|
*(u8 *)((u8 *)a0 + 0x1AA) = 0xB; \
|
|
} \
|
|
func_80154274((s32 *)a0, (s32)D_800D4F14); \
|
|
func_80147324(0x455); \
|
|
func_80146E90((s32 *)a0, 0); \
|
|
func_80156648((s32 *)a0); \
|
|
func_80146994(0x5, (s32)a0, 0, 0); \
|
|
func_8014B768((s32)a0, 0x333); \
|
|
func_80147300(0x5F3); \
|
|
D_8011F730 |= 4; \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016BADC() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_8016BADC(void *a0, s32 a1, s32 a2) { \
|
|
func_80146A6C(0x22, a0, 0, (s16)a1, 0, 0, a2); \
|
|
func_80146A6C(0x22, a0, 0, (s16)a1, 0, 1, a2); \
|
|
func_80146A6C(0x22, a0, 0, (s16)a1, 0, 2, a2); \
|
|
func_80146A6C(0x24, a0, 0, (s16)a1, 0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012C354() \
|
|
extern void func_8001CFDC(s32 a, s32 b); \
|
|
extern void func_8012CAE4(void *a0); \
|
|
extern void func_8001C214(s32 a0, s32 a1); \
|
|
extern u8 D_80078EAE; \
|
|
s32 func_8012C354(s32 a0, s32 a1) { \
|
|
s32 v; \
|
|
*(s32*)(a0 + 0x78) = a1; \
|
|
if (D_80078EAE == 0) { \
|
|
v = (*(s16*)(a1 + 0x0) * 24) / 16; \
|
|
} else { \
|
|
v = *(u16*)(a1 + 0x0); \
|
|
} \
|
|
*(s16*)(a0 + 0x76) = v; \
|
|
*(s16*)(a0 + 0x5C) = *(u16*)(a1 + 0x2); \
|
|
if (*(s32*)(a1 + 0x4) != 0) { \
|
|
*(s32*)(a0 + 0x20) = ((s32 (*)(s32, s32))func_8001CFDC)(0x26, 0x85); \
|
|
if (*(s32*)(a0 + 0x20) == 0) { \
|
|
func_8012CAE4((void *)a0); \
|
|
return 0; \
|
|
} \
|
|
func_8001C214(*(s32*)(a0 + 0x20), *(s32*)(a1 + 0x4)); \
|
|
} \
|
|
if (*(s32*)(a1 + 0x8) != 0) { \
|
|
*(s32*)(a0 + 0x58) = *(s32*)(a1 + 0x8) | 0x60000000; \
|
|
} \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012C438() \
|
|
extern void func_8001CFDC(s32 a, s32 b); \
|
|
extern void func_8012CAE4(void *a0); \
|
|
extern void func_8001C810(s32 a0, s32 a1); \
|
|
extern u8 D_80078EAE; \
|
|
s32 func_8012C438(s32 a0, s32 a1) { \
|
|
s32 v; \
|
|
*(s32*)(a0 + 0x78) = a1; \
|
|
if (D_80078EAE == 0) { \
|
|
v = (*(s16*)(a1 + 0x0) * 24) / 16; \
|
|
} else { \
|
|
v = *(u16*)(a1 + 0x0); \
|
|
} \
|
|
*(s16*)(a0 + 0x76) = v; \
|
|
*(s16*)(a0 + 0x5C) = *(u16*)(a1 + 0x2); \
|
|
if (*(s32*)(a1 + 0x4) != 0) { \
|
|
*(s32*)(a0 + 0x20) = ((s32 (*)(s32, s32))func_8001CFDC)(0x26, 0x85); \
|
|
if (*(s32*)(a0 + 0x20) == 0) { \
|
|
func_8012CAE4((void *)a0); \
|
|
return 0; \
|
|
} \
|
|
func_8001C810(*(s32*)(a0 + 0x20), *(s32*)(a1 + 0x4)); \
|
|
} \
|
|
if (*(s32*)(a1 + 0x8) != 0) { \
|
|
*(s32*)(a0 + 0x58) = *(s32*)(a1 + 0x8) | 0x60000000; \
|
|
} \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8014FA70() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern s32 func_80029178(s32 a0); \
|
|
extern u8 D_801152A8[]; \
|
|
extern s16 D_801152B0; \
|
|
extern s32 D_801152BC; \
|
|
s32 func_8014FA70(s32 a0) { \
|
|
s32 s1; \
|
|
s32 v0; \
|
|
u8 in[8]; \
|
|
u8 out[8]; \
|
|
*(s16 *)(in + 0x0) = *(u16 *)(a0 + 0x88); \
|
|
*(s16 *)(in + 0x2) = *(u16 *)(a0 + 0x8A); \
|
|
*(s16 *)(in + 0x4) = *(u16 *)(a0 + 0x8C); \
|
|
*(s16 *)(out + 0x0) = *(u16 *)(a0 + 0x6); \
|
|
*(s16 *)(out + 0x2) = *(u16 *)(a0 + 0xA); \
|
|
*(s16 *)(out + 0x4) = *(u16 *)(a0 + 0xE); \
|
|
s1 = func_80133784(1, &in[0], (s32)&out[0]); \
|
|
if (s1 != 0) { \
|
|
*(s16 *)(a0 + 0x6) = *(u16 *)(out + 0x0); \
|
|
*(s16 *)(a0 + 0xA) = *(u16 *)(out + 0x2); \
|
|
*(s16 *)(a0 + 0xE) = *(u16 *)(out + 0x4); \
|
|
v0 = *(u8 *)(out + 0x6); \
|
|
if (v0 != 0) { \
|
|
*(s16 *)(a0 + 0x16C) = v0; \
|
|
} \
|
|
*(s16 *)(a0 + 0x16E) = *(u16 *)(out + 0x6) >> 13; \
|
|
if (*(u16 *)(a0 + 0x16C) == 0x1D) { \
|
|
if ((func_80029178(0x21) & 0xFF) == 0) { \
|
|
s1 &= ~0x2000; \
|
|
s1 |= 0x4000; \
|
|
__builtin_memcpy(&D_801152B0, &D_801152A8[0], 8); \
|
|
D_801152BC = 1; \
|
|
} \
|
|
} \
|
|
return s1; \
|
|
} \
|
|
v0 = *(u8 *)(out + 0x6); \
|
|
if (v0 != 0) { \
|
|
*(s16 *)(a0 + 0x16C) = v0; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80172170() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 func_80047948(s32 a0); \
|
|
extern s32 func_8004787C(s32 a0); \
|
|
extern s32 D_801151D4; \
|
|
void func_80172170(s32 a0, s32 a1) { \
|
|
s32 base = D_801151D4; \
|
|
s32 s0; \
|
|
s32 s1; \
|
|
s32 v1; \
|
|
s32 s3 = a1; \
|
|
s32 ang; \
|
|
*(s8 *)(a0 + 0xA9) = 0x73; \
|
|
ang = ratan2(*(s32 *)(base + 0x68) - *(s32 *)(base + 0x5C), \
|
|
*(s32 *)(base + 0x70) - *(s32 *)(base + 0x64)); \
|
|
s0 = (ang + 0x800) & 0xFFF; \
|
|
s0 = (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) - s0) & 0xFF8; \
|
|
if (s0 == 0x400 || s0 == 0xC00) { \
|
|
s1 = 0x80; \
|
|
} else { \
|
|
s32 t = -((s3 & 0xFF) >> 1) * func_80047948(s0); \
|
|
if (t < 0) { \
|
|
t += 0xFFF; \
|
|
} \
|
|
s1 = (t >> 12) + 0x80; \
|
|
} \
|
|
if (s1 < 0) { \
|
|
s1 = 0; \
|
|
} \
|
|
if (!(s1 < 0x100)) { \
|
|
s1 = 0xFF; \
|
|
} \
|
|
if (s0 == 0 || s0 == 0x800) { \
|
|
v1 = 0x80; \
|
|
} else { \
|
|
s32 t = ((s3 & 0xFF) >> 1) * func_8004787C(s0); \
|
|
if (t < 0) { \
|
|
t += 0xFFF; \
|
|
} \
|
|
v1 = (t >> 12) + 0x80; \
|
|
} \
|
|
if (v1 < 0) { \
|
|
v1 = 0; \
|
|
} \
|
|
if (!(v1 < 0x100)) { \
|
|
v1 = 0xFF; \
|
|
} \
|
|
*(s16 *)(a0 + 0xAE) = (v1 & 0xFF) | (s1 << 8); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BCC0() \
|
|
extern s16 D_80078EB4; \
|
|
void func_8014BCC0(s32 a0, s32 a1) { \
|
|
s32 v1 = (u16)D_80078EB4; \
|
|
if (a1 < v1) { \
|
|
D_80078EB4 = v1 - a1; \
|
|
} else { \
|
|
D_80078EB4 = 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B160() \
|
|
extern void func_8014B2F8(void); \
|
|
extern void func_8014B4C4(void); \
|
|
void func_8014B160(s32 a0) { \
|
|
func_8014B2F8(); \
|
|
((void (*)(s32))func_8014B4C4)(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174318() \
|
|
extern void func_80142454(s32 a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80174318(u8 *a0) { \
|
|
func_80142454(-0x80); \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015B8F8() \
|
|
extern void func_801542DC(s32 *a0, s32 a1); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern s32 D_800D4A9C; \
|
|
extern s32 D_800D4B48; \
|
|
void func_8015B8F8(s32 *a0) { \
|
|
s32 v = *(s32 *)((s32)a0 + 0x23C); \
|
|
if (v == (s32)&D_800D4A9C || v == (s32)&D_800D4B48) { \
|
|
((void (*)(s32 *, s32, s32))func_801542DC)(a0, v, *(u8 *)((s32)a0 + 0x244)); \
|
|
} else { \
|
|
func_80154150((s32)a0, 0xF); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80161B84() \
|
|
extern s32 func_80149884(void); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_801498C0(void); \
|
|
s32 func_80161B84(void *a0) { \
|
|
if ((((s32 *)a0)[0x11] & 0x100) != 0) { \
|
|
if (func_80149884() != 0) { \
|
|
func_801599A4(a0); \
|
|
(*(void (*)(void *))func_801498C0)(a0); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80168EC4() \
|
|
extern void func_80168F40(); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
void func_80168EC4(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0x1C) < 5) { \
|
|
func_80168F40(); \
|
|
*(u16 *)(a0 + 0x10) = *(u16 *)(a0 + 0x6); \
|
|
*(u16 *)(a0 + 0x14) = *(u16 *)(a0 + 0xA); \
|
|
*(u16 *)(a0 + 0x18) = *(u16 *)(a0 + 0xE); \
|
|
func_800D22E4(a0); \
|
|
*(s32 *)(a0 + 0x1C) += 1; \
|
|
} else { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80172BC8() \
|
|
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
extern s16 D_80126B32; \
|
|
void func_80172BC8(void *a0) { \
|
|
s32 v0p = *(s32 *)((s32)a0 + 0x20); \
|
|
s32 r = func_80012B04(*(s16 *)(v0p + 0x12), D_80126B32, 4); \
|
|
s32 v1; \
|
|
if (((r << 16) >> 16) == 0) { \
|
|
func_80171A1C((u8 *)a0); \
|
|
func_80174650((s32)a0); \
|
|
} \
|
|
v1 = *(s32 *)((s32)a0 + 0x20); \
|
|
*(s16 *)(v1 + 0x12) = (*(u16 *)(v1 + 0x12) + r) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80151FB4() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_80151FB4(s32 a0) { \
|
|
s32 v1; \
|
|
func_8014BC44(a0, *(s16 *)(a0 + 0xF2)); \
|
|
*(u8 *)(a0 + 0xA8) = 0x20; \
|
|
func_80154A74(a0, 0x11); \
|
|
func_801553C0(a0); \
|
|
func_801470AC((s32 *)a0); \
|
|
func_801472B4((void *)a0); \
|
|
v1 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(a0 + 0x3E) = 0; \
|
|
*(s16 *)(a0 + 0x40) = 0; \
|
|
*(s16 *)(a0 + 0x42) = 0; \
|
|
*(u8 *)(a0 + 0xDD) = 0; \
|
|
*(u16 *)(a0 + 0x3C) = *(u16 *)(a0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(v1 + 0x10) = 0; \
|
|
*(u16 *)(a0 + 0x60) = 0x1000; \
|
|
*(u16 *)(a0 + 0x62) = 0x1000; \
|
|
*(u16 *)(a0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)a0, 0); \
|
|
func_80153C18(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B084() \
|
|
extern u16 D_80078EAC; \
|
|
extern u8 D_80078EBA; \
|
|
extern void func_800D10EC(void); \
|
|
extern void func_8002AC98(void); \
|
|
extern void func_80145C54(void); \
|
|
void func_8014B084(void) { \
|
|
u16 a; \
|
|
u8 b; \
|
|
a = D_80078EAC + 1; \
|
|
b = D_80078EBA + 1; \
|
|
D_80078EAC = a; \
|
|
D_80078EBA = b; \
|
|
if (a >= 0x16E) { \
|
|
D_80078EAC = 1; \
|
|
} \
|
|
D_80078EBA = b % 7; \
|
|
func_800D10EC(); \
|
|
func_8002AC98(); \
|
|
func_80145C54(); \
|
|
}
|
|
|
|
#define DEFINE_func_80149744() \
|
|
extern u8 D_80078EBF; \
|
|
s32 func_80149744(struct S_80149744 *a0) { \
|
|
if ((a0->w44 & 0x4) == 0 && D_80078EBF >= 0x80) { \
|
|
if (a0->h_AC & 0x80) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014A3E0() \
|
|
extern s16 D_801152B0; \
|
|
extern s16 D_801152B4; \
|
|
s32 func_8014A3E0(struct S_8014A3E0 *a0) { \
|
|
s32 sp[4]; \
|
|
sp[0] = a0->h12 * D_801152B0; \
|
|
sp[2] = a0->h1A * D_801152B4; \
|
|
if (sp[0] >= 0 && sp[2] >= 0) { \
|
|
return 1; \
|
|
} \
|
|
*(s16 *)((char *)a0 + 0x6) = a0->h88; \
|
|
*(s16 *)((char *)a0 + 0xA) = a0->h8A; \
|
|
*(s16 *)((char *)a0 + 0xE) = a0->h8C; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80163328() \
|
|
extern s32 D_80115100; \
|
|
extern u16 D_80126B18[]; \
|
|
extern s32 D_80115200; \
|
|
void func_80163328(void) { \
|
|
u32 i; \
|
|
s32 *table; \
|
|
u16 *src; \
|
|
s32 *flags; \
|
|
i = 0; \
|
|
table = &D_80115100; \
|
|
src = D_80126B18; \
|
|
flags = &D_80115200; \
|
|
do { \
|
|
if (*flags & 1) { \
|
|
u8 *dst = (u8 *)*table; \
|
|
*(struct Vec4s *)(dst + 0x7C) = *(struct Vec4s *)src; \
|
|
*(s16 *)((u8 *)*table + 0x82) = 0; \
|
|
} \
|
|
table += 1; \
|
|
src += 4; \
|
|
i += 1; \
|
|
flags += 1; \
|
|
} while (i < 3); \
|
|
}
|
|
|
|
#define DEFINE_func_8013A164() \
|
|
extern s16 D_8012752C; \
|
|
void func_8013A164(struct S8013A164 *a0) { \
|
|
s32 flags; \
|
|
if (a0->field_40 == 0 || a0->field_18 == 0 || *a0->field_40 == 2) { \
|
|
flags = a0->field_08 | 0x1000; \
|
|
a0->field_08 = flags; \
|
|
if (flags & 0x10000) { \
|
|
if (D_8012752C != 0) { \
|
|
if (flags & 0x40000) { \
|
|
a0->field_04 = 2; \
|
|
} else { \
|
|
a0->field_04 = 0x10; \
|
|
} \
|
|
} else { \
|
|
a0->field_04 = 2; \
|
|
} \
|
|
} else { \
|
|
a0->field_04 = 2; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014BDE8() \
|
|
extern s32 func_8016F1AC(void); \
|
|
extern s32 func_8017267C(s32 *a0); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_80013294(void *a0, void *a1); \
|
|
extern void func_80029ED4(s32 a0); \
|
|
void func_8014BDE8(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
struct B8014 sp10; \
|
|
s16 sp18[4]; \
|
|
if (func_8016F1AC() != 0) { \
|
|
return; \
|
|
} \
|
|
if (func_8017267C((s32 *)s0) != 0) { \
|
|
return; \
|
|
} \
|
|
sp10 = *(struct B8014 *)(s0 + 0x98); \
|
|
func_80015978(s0 + 4, (s32 *)sp18); \
|
|
sp18[1] = 0; \
|
|
*(s16 *)((s32)&sp10 + 0x2) = 0; \
|
|
func_80029ED4((func_80013294(&sp10, sp18) << 16) >> 16); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A4BC() \
|
|
extern s32 D_801151D4; \
|
|
extern struct BigCopy D_80126DB8; \
|
|
extern struct BigCopy D_80114EE8; \
|
|
extern u8 D_80127504; \
|
|
void func_8012A4BC(void) { \
|
|
D_80126DB8 = *(struct BigCopy *)D_801151D4; \
|
|
*(struct BigCopy *)D_801151D4 = D_80114EE8; \
|
|
D_80127504 = 0x30; \
|
|
}
|
|
|
|
#define DEFINE_func_80150EC4() \
|
|
extern u8 D_800AE6C0; \
|
|
extern s16 D_800AE6C8; \
|
|
extern s16 D_800AE6CA; \
|
|
extern u8 D_80126948[]; \
|
|
extern s16 D_800AE6CC; \
|
|
extern s32 D_800AE6C4; \
|
|
extern s16 D_800AE6CE; \
|
|
extern u8 D_800AE6BE; \
|
|
extern s32 D_800AE6B0; \
|
|
extern u8 D_801201F8[]; \
|
|
void func_80150EC4(s32 a0, s32 a1) { \
|
|
D_800AE6C0 = 1; \
|
|
D_800AE6C8 = *(u16 *)(a0 + 0x6); \
|
|
D_800AE6CA = *(u16 *)(a0 + 0xA); \
|
|
D_800AE6CC = *(u16 *)(a0 + 0xE); \
|
|
D_800AE6CE = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); \
|
|
D_800AE6B0 = *(s32 *)(((a1 << 2) + D_800AE6C4) + 4); \
|
|
D_800AE6BE = a1 + 1; \
|
|
*(struct copy00 *)D_801201F8 = *(struct copy00 *)D_80126948; \
|
|
}
|
|
|
|
#define DEFINE_func_8013A0A4() \
|
|
extern void func_80139A8C(s32 a0); \
|
|
extern void func_80139B18(s32 a0); \
|
|
void func_8013A0A4(struct S8013A0A4 *a0) { \
|
|
if (a0->field_1E != 0) { \
|
|
a0->field_1E = a0->field_1E + 5; \
|
|
} else { \
|
|
a0->field_1E = 4; \
|
|
} \
|
|
if (a0->field_1E >= 0xC) { \
|
|
a0->field_16 = (a0->field_16 + 1) % (a0->field_2E + 1); \
|
|
a0->field_1E = 0; \
|
|
if (a0->field_8 & 0x100) { \
|
|
a0->field_4 = 6; \
|
|
} else { \
|
|
a0->field_4 = 2; \
|
|
} \
|
|
} \
|
|
func_80139A8C((s32)a0); \
|
|
func_80139B18((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80147060() \
|
|
void func_80147060(u8 * a0) \
|
|
{ \
|
|
s32 v = 1; \
|
|
a0[0x4D] = v; \
|
|
return v; \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB68() \
|
|
extern u8 D_80126D1D; \
|
|
void func_8014CB68(void) \
|
|
{ \
|
|
D_80126D1D = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80153C30() \
|
|
extern u16 D_8011F748; \
|
|
void func_80153C30(void) \
|
|
{ \
|
|
D_8011F748 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80155394() \
|
|
s32 func_80155394(s32 *a0) \
|
|
{ \
|
|
return (a0[0x11] |= 0x20000000); \
|
|
}
|
|
|
|
#define DEFINE_func_80162ACC() \
|
|
s32 func_80162ACC(u8 *a0) \
|
|
{ \
|
|
s32 v = a0[1] + 1; \
|
|
a0[1] = v; \
|
|
return v; \
|
|
}
|
|
|
|
#define DEFINE_func_80162AE0() \
|
|
s32 func_80162AE0(u8 *a0) \
|
|
{ \
|
|
s32 v = a0[1] - 1; \
|
|
a0[1] = v; \
|
|
return v; \
|
|
}
|
|
|
|
#define DEFINE_func_801659B8() \
|
|
extern s32 D_80126B08; \
|
|
void func_801659B8(void) \
|
|
{ \
|
|
D_80126B08 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F250() \
|
|
extern u8 D_80126D1A; \
|
|
void func_8016F250(void) \
|
|
{ \
|
|
D_80126D1A = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F374() \
|
|
extern u8 D_800B9A17; \
|
|
void func_8016F374(void) \
|
|
{ \
|
|
D_800B9A17 = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8017197C() \
|
|
s32 func_8017197C(u8 *a0) \
|
|
{ \
|
|
s32 v = a0[0x215] + 1; \
|
|
a0[0x216] = 0; \
|
|
a0[0x215] = v; \
|
|
return v; \
|
|
}
|
|
|
|
#define DEFINE_func_80171990() \
|
|
s32 func_80171990(u8 *a0) \
|
|
{ \
|
|
s32 v = a0[0x216] + 1; \
|
|
a0[0x216] = v; \
|
|
return v; \
|
|
}
|
|
|
|
#define DEFINE_func_80171A44() \
|
|
s32 func_80171A44(u8 *a0) \
|
|
{ \
|
|
s32 v = a0[0x215] + 1; \
|
|
a0[0x216] = 0; \
|
|
a0[0x215] = v; \
|
|
return v; \
|
|
}
|
|
|
|
#define DEFINE_func_80146D90() \
|
|
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80146D90(s32 a0) \
|
|
{ \
|
|
func_80146DE8(a0, 0, 0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80165910() \
|
|
extern s8 D_80078EC4; \
|
|
s32 func_80165910(void) \
|
|
{ \
|
|
s32 v; \
|
|
s32 ret; \
|
|
v = (u8)D_80078EC4; \
|
|
ret = v; \
|
|
if (v == 0) { \
|
|
register s32 one __asm__("$2"); \
|
|
one = 1; \
|
|
__asm__ __volatile__("" : "=r"(one) : "0"(one)); \
|
|
D_80078EC4 = one; \
|
|
} \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_80151204() \
|
|
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
|
|
int func_80151204(int a0, int a1) \
|
|
{ \
|
|
if (a1 != 0 && a1 != 1000) { \
|
|
func_8014ACE8(a0, 1, a1 & 0x7FFF); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80159B3C() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80159B70(void *a0); \
|
|
void func_80159B3C(void * a0) \
|
|
{ \
|
|
func_80147078(a0, 0); \
|
|
func_80159B70(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017118C() \
|
|
extern void func_80142454(s32 a0); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8017118C(u8 * a0) \
|
|
{ \
|
|
func_80142454(-0x80); \
|
|
func_80171928(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A828() \
|
|
extern void func_8012AAAC(void); \
|
|
void func_8012A828(s32 a0, void * a1) \
|
|
{ \
|
|
*(s32 *)((u8 *)a0 + 0x90) = a1; \
|
|
*(s32 *)((u8 *)a0 + 0x94) = 0; \
|
|
*(s32 *)((u8 *)a0 + 0x9C) = 0; \
|
|
*(s16 *)((u8 *)a0 + 0x9A) = 0; \
|
|
*(u16 *)((u8 *)a0 + 0x72) = *(u16 *)((u8 *)a0 + 0x72) & 0xF9FF; \
|
|
func_8012AAAC(); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BCEC() \
|
|
extern u16 D_80078EB6; \
|
|
s32 func_8014BCEC(s32 a0, s32 a1) \
|
|
{ \
|
|
u16 v; \
|
|
v = D_80078EB6 + a1; \
|
|
D_80078EB6 = v; \
|
|
if (v >= 0x663) { \
|
|
D_80078EB6 = 0x662; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014CB9C() \
|
|
extern struct Packed8 D_80126C98; \
|
|
extern short D_80126C9E; \
|
|
void func_8014CB9C(struct Packed8 *a0) \
|
|
{ \
|
|
D_80126C98 = *a0; \
|
|
D_80126C9E = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8017303C() \
|
|
extern void func_80174684(void *); \
|
|
extern s32 func_80173078(void *a0); \
|
|
extern s32 D_80127508; \
|
|
extern s16 D_80126B30; \
|
|
void func_8017303C(void * a0) \
|
|
{ \
|
|
D_80127508 = a0; \
|
|
D_80126B30 = 1; \
|
|
func_80174684((void *)func_80173078); \
|
|
}
|
|
|
|
#define DEFINE_func_80154150() \
|
|
extern void func_80154190(u8 *a0, s32 a1); \
|
|
void func_80154150(s32 a0, s32 a1) \
|
|
{ \
|
|
if (*(s32 *)(a0 + 0xB4) != ((s32 *)*(s32 *)(a0 + 0xB0))[a1]) { \
|
|
func_80154190(a0, a1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801743F0() \
|
|
extern s32 func_80172658(s32 *a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_801743F0(u8 * a0) \
|
|
{ \
|
|
if (func_80172658(a0)) { \
|
|
func_80171A1C((u8 *)a0); \
|
|
func_80174650((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80147B18() \
|
|
extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); \
|
|
extern void func_80147B5C(s32 a0, void *a1); \
|
|
void func_80147B18(s32 a0) \
|
|
{ \
|
|
s32 buf[4]; \
|
|
s32 b0, b1, b2; \
|
|
func_80147D38(a0, b0, b1, b2, &buf[0]); \
|
|
func_80147B5C(a0, &buf[0]); \
|
|
}
|
|
|
|
#define DEFINE_func_801508B4() \
|
|
extern s32 func_8014A2E4(s32 a0); \
|
|
extern void func_8014A380(s32 a0, s32 a1); \
|
|
s32 func_801508B4(s32 a0) \
|
|
{ \
|
|
s32 r; \
|
|
r = func_8014A2E4(a0); \
|
|
if (r != 0) { \
|
|
func_8014A380(a0, r); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8015173C() \
|
|
extern void func_8014C8F0(s32 arg0); \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80151780(s32 a0); \
|
|
void func_8015173C(s32 *a0) \
|
|
{ \
|
|
func_8014C8F0((s32)a0); \
|
|
*((u8 *)a0 + 0xDE) = *(u16 *)a0; \
|
|
func_80147078(a0, 0x19); \
|
|
func_80151780((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BD8C() \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015BD8C(s32 *a0) \
|
|
{ \
|
|
func_801553A8(a0); \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
*(s32 *)((u8 *)a0 + 0x44) &= ~2; \
|
|
}
|
|
|
|
#define DEFINE_func_8015BF04() \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
void func_8015BF04(s32 *a0) \
|
|
{ \
|
|
func_801553A8(a0); \
|
|
func_80154A74((s32)a0, 0x11); \
|
|
*(s32 *)((u8 *)a0 + 0x44) &= ~2; \
|
|
}
|
|
|
|
#define DEFINE_func_8015BFB0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015C030(s32 *a0, s32 a1); \
|
|
void func_8015BFB0(s32 *a0, s32 a1) \
|
|
{ \
|
|
func_80147078(a0, 0x4); \
|
|
func_8015C030(a0, a1); \
|
|
}
|
|
|
|
#define DEFINE_func_80172D68() \
|
|
extern s32 D_80126B58; \
|
|
extern s32 D_80127508; \
|
|
extern s32 func_80172DAC(void *a0); \
|
|
extern s32 func_8014C168(s32 *a0, s32 a1); \
|
|
extern void func_80174684(void *); \
|
|
void func_80172D68(s32 a0) \
|
|
{ \
|
|
D_80127508 = func_8014C168(&D_80126B58, a0); \
|
|
func_80174684(func_80172DAC); \
|
|
}
|
|
|
|
#define DEFINE_func_8012C284() \
|
|
extern u8 D_80126720[]; \
|
|
u16 *func_8012C284(u16 *a0) \
|
|
{ \
|
|
u16 *end; \
|
|
end = (u16 *)D_80126720; \
|
|
if (a0 == 0) { \
|
|
a0 = (u16 *)(D_80126720 - 0x6480); \
|
|
} else { \
|
|
a0 = (u16 *)((u8 *)a0 + 0x10C); \
|
|
} \
|
|
while (a0 != end) { \
|
|
if (*a0 == 0) { \
|
|
return a0; \
|
|
} \
|
|
a0 = (u16 *)((u8 *)a0 + 0x10C); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8016FE2C() \
|
|
extern s32 func_80172658(s32 *a0); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
void func_8016FE2C(u8 * a0) \
|
|
{ \
|
|
if (func_80172658(a0) != 0) { \
|
|
*(u16 *)((char *)a0 + 0xAC) |= 0x40; \
|
|
*(u16 *)((char *)a0 + 0xAA) |= 0x40; \
|
|
func_80171990((u8 *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80172D14() \
|
|
extern s16 func_80171AB0(s32 a0, void *a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
extern s16 D_80126B30; \
|
|
void func_80172D14(u8 * a0) \
|
|
{ \
|
|
if (func_80171AB0(a0, &D_80126B30) == 0) { \
|
|
func_80171A1C((u8 *)a0); \
|
|
func_80174650(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014B034() \
|
|
extern void func_8014B084(void); \
|
|
extern s16 D_80078E90; \
|
|
void func_8014B034(s32 a0) \
|
|
{ \
|
|
register s16 *ptr = &D_80078E90; \
|
|
s16 v; \
|
|
v = ptr[1] + a0; \
|
|
ptr[1] = v; \
|
|
if (v >= 0x5A0) { \
|
|
ptr[1] = v - 0x5A0; \
|
|
func_8014B084(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152BF0() \
|
|
extern s32 D_80062C14; \
|
|
extern void func_80019064(void *a0); \
|
|
extern int func_80151204(int arg, int a1); \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80152BF0(s32 a0) \
|
|
{ \
|
|
func_80019064(&D_80062C14); \
|
|
func_80151204((int)a0, *(s16 *)((s32)a0 + 0xF2)); \
|
|
func_80149020((s32 *)a0); \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80172958() \
|
|
extern s32 func_80171D1C(void *a0, void *a1, s32 a2); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
extern s16 D_80126B36; \
|
|
extern s16 D_80126B30; \
|
|
void func_80172958(u8 * a0) \
|
|
{ \
|
|
if (func_80171D1C(a0, &D_80126B30, *(u8 *)&D_80126B36)) { \
|
|
func_80171A1C(a0); \
|
|
func_80174650((s32)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801508F8() \
|
|
extern s32 func_8015094C(s32 a0); \
|
|
short func_801508F8(s32 a0) \
|
|
{ \
|
|
if ((*((u8 *) (a0 + 0x1BF))) != 0) \
|
|
{ \
|
|
if ((*((u16 *) a0)) != 0x1A) \
|
|
{ \
|
|
while (func_8015094C(a0) != 0) \
|
|
{ \
|
|
; \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80171CC4() \
|
|
extern s32 func_80171D78(s32 a0, s32 a1); \
|
|
extern int func_8017250C(short *a0, short *a1); \
|
|
extern void func_80146D90(s32 a0); \
|
|
s32 func_80171CC4(void * a0, void * a1) \
|
|
{ \
|
|
s32 ret; \
|
|
ret = func_80171D78(a0, a1); \
|
|
if (func_8017250C(a0, a1) != 0) { \
|
|
func_80146D90((s32)a0); \
|
|
} \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_80171D1C() \
|
|
extern s32 func_80171FFC(short *a0, short *a1, s32 a2); \
|
|
extern int func_8017250C(short *a0, short *a1); \
|
|
extern void func_80146D90(s32 a0); \
|
|
s32 func_80171D1C(void * a0, void * a1, s32 a2) \
|
|
{ \
|
|
s32 ret; \
|
|
ret = func_80171FFC(a0, a1, a2 & 0xFF); \
|
|
if (func_8017250C(a0, a1) != 0) { \
|
|
func_80146D90((s32)a0); \
|
|
} \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_801665B4() \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_80146C3C(); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
void func_801665B4(s32 *a0) \
|
|
{ \
|
|
if (func_80128ED8((void *)a0[8], (void *)(a0 + 9))) { \
|
|
func_80146C3C((s32)a0); \
|
|
} else { \
|
|
func_800D22E4((s32)a0); \
|
|
a0[5] -= a0[5] >> 3; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017044C() \
|
|
extern s32 D_801151D4; \
|
|
extern s16 func_80171AB0(s32 a0, void *a1); \
|
|
extern void func_80171928(void *a0); \
|
|
void func_8017044C(u8 * a0) \
|
|
{ \
|
|
s16 buf[3]; \
|
|
s32 *p; \
|
|
p = (s32 *)D_801151D4; \
|
|
buf[0] = (s16)p[0xF]; /* 0x3C */ \
|
|
buf[1] = (s16)p[0x10]; /* 0x40 */ \
|
|
buf[2] = (s16)p[0x11]; /* 0x44 */ \
|
|
if (func_80171AB0(a0, buf) == 0) { \
|
|
func_80171928((void *)a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801533A4() \
|
|
extern s32 func_801472C8(struct S *a0); \
|
|
extern void func_8014CBF8(void *a0); \
|
|
extern void func_801474EC(s32 *a0); \
|
|
extern void func_80155440(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_80062C04[]; \
|
|
void func_801533A4(s32 a0) \
|
|
{ \
|
|
func_80019064(D_80062C04); \
|
|
func_80149020(a0); \
|
|
func_801472C8((struct S *)a0); \
|
|
*((u8 *)a0 + 0xDE) = 0x40; \
|
|
func_8014CBF8(a0); \
|
|
func_801474EC(a0); \
|
|
func_80155440(a0); \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80157E38() \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_800D4F14[]; \
|
|
void func_80157E38(void * a0) \
|
|
{ \
|
|
*((u8 *)a0 + 0x1AA) = 0xD; \
|
|
func_80154274(a0, (s32)D_800D4F14); \
|
|
func_80154A74((s32)a0, 0x15); \
|
|
func_80146994(5, (s32)a0, 0, 0); \
|
|
func_80147324(0x455); \
|
|
*(s16 *)((u8 *)a0 + 0x244) = 0; \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015D57C() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_80155440(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_801746DC(void); \
|
|
void func_8015D57C(s32 arg0) \
|
|
{ \
|
|
s16 *p; \
|
|
func_80154150((s32)arg0, 0x19); \
|
|
func_801553A8(arg0); \
|
|
func_80155440(arg0); \
|
|
func_80146CA0(arg0); \
|
|
*(s32 *)((s8 *)arg0 + 0x234) = 0; \
|
|
p = *(s16 **)((s8 *)arg0 + 0x178); \
|
|
if (p != 0) { \
|
|
if (*(u16 *)p == 0x1F8) { \
|
|
*(s16 *)((s8 *)p + 0xFC) = 1; \
|
|
func_801746DC(); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80170374() \
|
|
extern s32 func_8014C168(s32 *a0, s32 a1); \
|
|
extern s16 func_80171AB0(s32 a0, void *a1); \
|
|
extern void func_80171928(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_80170374(u8 * a0) \
|
|
{ \
|
|
s16 sp[4]; \
|
|
s32 v0; \
|
|
v0 = func_8014C168(a0, (s32)D_8011F738); \
|
|
sp[0] = *(u16 *)(v0 + 0x6); \
|
|
sp[1] = *(u16 *)(v0 + 0xA); \
|
|
sp[2] = *(u16 *)(v0 + 0xE); \
|
|
if (func_80171AB0((s32)a0, sp) == 0) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013B204() \
|
|
extern void func_8013B274(s32 a0, s32 a1, void *a2); \
|
|
extern short D_800B9A02; \
|
|
extern s32 D_800A651C; \
|
|
void func_8013B204(s32 a0, s32 a1) \
|
|
{ \
|
|
void *a2; \
|
|
s32 idx; \
|
|
a2 = a1; \
|
|
if (*(s16 *)((u8 *)a2 + 0xC) != 0) { \
|
|
return; \
|
|
} \
|
|
if (*(s16 *)a2 != 2) { \
|
|
return; \
|
|
} \
|
|
a2 = (u8 *)a2 + 8; \
|
|
idx = (u16)D_800B9A02; \
|
|
func_8013B274( \
|
|
(&D_800A651C)[idx * 5] + ((u16)(*(u16 *)((u8 *)a0 + 0x1A)) << 2), \
|
|
*(s16 *)((u8 *)a0 + 0x1C), \
|
|
a2); \
|
|
}
|
|
|
|
#define DEFINE_func_8014C43C() \
|
|
extern u16 func_80156370(u16 a0); \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4) \
|
|
{ \
|
|
u16 v0; \
|
|
v0 = func_80156370((u16)a2); \
|
|
func_8014C4AC(a1, a2, v0 & 0xFFFF, a3, (s16)a4); \
|
|
}
|
|
|
|
#define DEFINE_func_801701C8() \
|
|
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80171928(void *a0); \
|
|
extern void *D_8011F738; \
|
|
void func_801701C8(u8 * a0) \
|
|
{ \
|
|
s16 *p; \
|
|
s32 r; \
|
|
r = func_80012B04(((s16 **)a0)[8][9], *(s16 *)&D_8011F738, 4); \
|
|
if ((s16)r == 0) { \
|
|
func_80171928(a0); \
|
|
} \
|
|
p = ((s16 **)a0)[8]; \
|
|
((u16 *)p)[9] = (((u16 *)p)[9] + r) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8015E0D4() \
|
|
int func_8015E0D4(int a0) \
|
|
{ \
|
|
s16 sp18[4]; \
|
|
s32 s0; \
|
|
s0 = *(s32 *)(a0 + 0x178); \
|
|
if (s0 != 0) { \
|
|
func_8014C1A0(a0, s0); \
|
|
func_80015978(s0 + 4, (s32 *)sp18); \
|
|
sp18[3] = 0; \
|
|
func_8014C4AC(s0, 0x11, func_80029AAC(), sp18, \
|
|
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)); \
|
|
*(s32 *)(a0 + 0x178) = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80147D38() \
|
|
extern void func_80147948(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_801479BC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80147A30(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80147DC0(s32 a0, s32 a1); \
|
|
void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4) \
|
|
{ \
|
|
func_80147948(a0, a1, 0x7FFFFFFF); \
|
|
func_801479BC(a0, a2, 0x7FFFFFFF); \
|
|
func_80147A30(a0, a3, 0x7FFFFFFF); \
|
|
func_80147DC0(a0, a4); \
|
|
}
|
|
|
|
#define DEFINE_func_80129398() \
|
|
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[]; \
|
|
void func_80129398(void) \
|
|
{ \
|
|
s32 i; \
|
|
s32 off; \
|
|
for (i = 0; i < 2; i++) { \
|
|
off = i * 0x54; \
|
|
*(s16 *)((char *)D_800B9AAC + off) = 0x7FFF; \
|
|
*(s16 *)((char *)D_800B9AAE + off) = 0; \
|
|
*(u16 *)((char *)D_800B9AB0 + off) = 0xFFFF; \
|
|
*(s16 *)((char *)D_800B9AB2 + off) = 0; \
|
|
*(s16 *)((char *)D_800B9AB4 + off) = 0x140; \
|
|
*(s16 *)((char *)D_800B9AB6 + off) = 0xEE; \
|
|
*(s16 *)((char *)D_800B9AB8 + off) = 0; \
|
|
*(s16 *)((char *)D_800B9ABA + off) = 0; \
|
|
off += 0x54; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80171D78() \
|
|
extern s32 func_8017248C(s32 a0, s32 a1); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern void func_80171EC8(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
s32 func_80171D78(s32 a0, s32 a1) \
|
|
{ \
|
|
s32 ret; \
|
|
s32 ang; \
|
|
s32 p; \
|
|
ret = func_8017248C(a0, a1); \
|
|
if (ret != 0) { \
|
|
func_80146D90(a0); \
|
|
return ret; \
|
|
} \
|
|
ang = ratan2(*(s16 *)(a1 + 0) - *(s16 *)(a0 + 6), \
|
|
*(s16 *)(a1 + 4) - *(s16 *)(a0 + 0xE)); \
|
|
ang = (ang + 0x800) & 0xFFF; \
|
|
p = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(p + 0x12) = ang; \
|
|
func_80171EC8(a0); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801776EC() \
|
|
extern u8 D_8011F7AB; \
|
|
void func_801776EC(u8 *a0) \
|
|
{ \
|
|
u8 *p; \
|
|
switch (D_8011F7AB) { \
|
|
default: \
|
|
D_8011F7AB = 0; \
|
|
case 0: \
|
|
a0[4] = 0xFF; \
|
|
a0[6] = 0x30; \
|
|
a0[5] = 0x30; \
|
|
break; \
|
|
case 1: \
|
|
a0[5] = 0xFF; \
|
|
a0[6] = 0x30; \
|
|
a0[4] = 0x30; \
|
|
break; \
|
|
case 2: \
|
|
a0[6] = 0xFF; \
|
|
a0[5] = 0x30; \
|
|
a0[4] = 0x30; \
|
|
break; \
|
|
} \
|
|
p = &D_8011F7AB; \
|
|
*p = *p + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B2CC() \
|
|
extern void func_80049CAC(s32 a0, s32 a1); \
|
|
void func_8012B2CC(s32 a0) \
|
|
{ \
|
|
s32 a1; \
|
|
s32 p; \
|
|
s16 v; \
|
|
a1 = *(s32 *)(a0 + 0x20); \
|
|
if (a1 != 0) { \
|
|
func_80049CAC(a1 + 0x10, a1 + 0x34); \
|
|
p = *(s32 *)(a0 + 0x20); \
|
|
v = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
|
|
*(s16 *)(p + 0x8) = v; \
|
|
*(s32 *)(p + 0x48) = v; \
|
|
v = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
|
|
*(s16 *)(p + 0xA) = v; \
|
|
*(s32 *)(p + 0x4C) = v; \
|
|
v = *(u16 *)(a0 + 0xE) + *(u16 *)(a0 + 0x54); \
|
|
*(s16 *)(p + 0xC) = v; \
|
|
*(u16 *)(p + 0x2C) = *(u16 *)(p + 0x2C) | 1; \
|
|
*(s32 *)(p + 0x50) = v; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801525F4() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_801525F4(s32 a0) \
|
|
{ \
|
|
s32 v1; \
|
|
func_8014BC44(a0, *(s16 *)(a0 + 0xF2)); \
|
|
*(s8 *)(a0 + 0xA8) = 0x20; \
|
|
func_80154A74(a0, 0x11); \
|
|
func_801553C0(a0); \
|
|
func_801470AC((s32 *)a0); \
|
|
func_801472B4((void *)a0); \
|
|
v1 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(a0 + 0x3E) = 0; \
|
|
*(s16 *)(a0 + 0x40) = 0; \
|
|
*(s16 *)(a0 + 0x42) = 0; \
|
|
*(s8 *)(a0 + 0xDD) = 0; \
|
|
*(s16 *)(a0 + 0x3C) = *(u16 *)(a0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(v1 + 0x10) = 0; \
|
|
*(s16 *)(a0 + 0x60) = 0x1000; \
|
|
*(s16 *)(a0 + 0x62) = 0x1000; \
|
|
*(s16 *)(a0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)a0, 0); \
|
|
func_80153C18(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014C5FC() \
|
|
extern s32 func_80047D3C(s32 a0); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8014C5FC(s32 a0, s32 a1, void * a2) \
|
|
{ \
|
|
s32 dx; \
|
|
s32 dz; \
|
|
s32 dy; \
|
|
s32 r; \
|
|
dz = (s16)(*(u16 *)((s32)a1 + 0xE) + *(u16 *)((s32)a2 + 0x4) - *(u16 *)((s32)a0 + 0xE)); \
|
|
dx = (s16)(*(u16 *)((s32)a1 + 0x6) + *(u16 *)((s32)a2 + 0x0) - *(u16 *)((s32)a0 + 0x6)); \
|
|
r = func_80047D3C(dz * dz + dx * dx); \
|
|
dy = *(s16 *)((s32)a1 + 0xA) + *(s16 *)((s32)a2 + 0x2) - *(s16 *)((s32)a0 + 0xA); \
|
|
return ratan2(dy, (s16)r) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8014FC18() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
s32 func_8014FC18(u8 *self) \
|
|
{ \
|
|
s16 src[4]; \
|
|
s16 dst[4]; \
|
|
s32 ret; \
|
|
src[0] = *(u16 *)(self + 0x6); \
|
|
src[1] = *(u16 *)(self + 0xA); \
|
|
src[2] = *(u16 *)(self + 0xE); \
|
|
dst[0] = *(u16 *)(self + 0x6); \
|
|
dst[1] = *(u16 *)(self + 0xA) + 0x10; \
|
|
dst[2] = *(u16 *)(self + 0xE); \
|
|
ret = func_80133784(1, src, (s32)dst); \
|
|
if (ret != 0) { \
|
|
*(u16 *)(self + 0x6) = dst[0]; \
|
|
*(u16 *)(self + 0xA) = dst[1]; \
|
|
*(u16 *)(self + 0xE) = dst[2]; \
|
|
if (*(u8 *)&dst[3] != 0) { \
|
|
*(s16 *)(self + 0x16C) = *(u8 *)&dst[3]; \
|
|
} \
|
|
*(s16 *)(self + 0x16E) = (u16)dst[3] >> 13; \
|
|
return ret; \
|
|
} \
|
|
if (*(u8 *)&dst[3] != 0) { \
|
|
*(s16 *)(self + 0x16C) = *(u8 *)&dst[3]; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80161124() \
|
|
extern void func_801483E8(void); \
|
|
extern void func_8014CBF8(void *a0); \
|
|
extern void func_801474EC(s32 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern s32 func_80149184(s32 a0); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern s32 func_801725A4(u8 *a0); \
|
|
extern s32 func_80161A60(s32 a0); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern s16 D_801152A0; \
|
|
void func_80161124(void *a0) \
|
|
{ \
|
|
u8 *self = (u8 *)a0; \
|
|
*(s16 *)(self + 0x24A) = 0; \
|
|
func_801483E8(); \
|
|
func_8014CBF8(a0); \
|
|
func_801474EC((s32 *)a0); \
|
|
if (*(s32 *)(self + 0x2C) < (s32)0xFFF46000) { \
|
|
*(s32 *)(self + 0x2C) = 0xFFF46000; \
|
|
} \
|
|
if ((*(s32 *)(self + 0x24) | *(s32 *)(self + 0x2C)) != 0) { \
|
|
func_80154150((s32)self, 0xF); \
|
|
} else { \
|
|
func_80154150((s32)self, 0xD); \
|
|
} \
|
|
func_80154A74((s32)self, 0x22); \
|
|
*(s32 *)(self + 0x5C) = 0; \
|
|
*(s32 *)(self + 0x240) = 0; \
|
|
func_80146E90((s32 *)self, 4); \
|
|
D_801152A0 = func_80149184((s32)self); \
|
|
func_801553A8((s32 *)self); \
|
|
func_801725A4((u8 *)self); \
|
|
if (func_80161A60((s32)self) != 0) { \
|
|
func_80147324(0x8E1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016EE94() \
|
|
extern void func_801726D0(void *a0); \
|
|
extern s32 D_80126D50; \
|
|
extern s32 D_80126B58; \
|
|
extern s32 D_80126D54; \
|
|
extern u8 D_80126D6C; \
|
|
extern u8 D_80126D6D; \
|
|
extern u8 D_80126D6E; \
|
|
extern s32 D_80126D5C; \
|
|
extern s32 D_80126D60; \
|
|
extern s16 D_80126D64; \
|
|
extern s16 D_80126D66; \
|
|
extern s16 D_80126D68; \
|
|
extern s16 D_80126D6A; \
|
|
extern u8 D_80126D1A; \
|
|
extern s32 D_80127058; \
|
|
extern s32 D_8012705C; \
|
|
extern s32 D_80127060; \
|
|
extern s32 D_80127064; \
|
|
extern s32 D_80127068; \
|
|
extern s32 D_8012706C; \
|
|
extern s32 D_80127070; \
|
|
extern s32 D_80127074; \
|
|
extern u8 D_800B9A17; \
|
|
extern s16 D_80126D20; \
|
|
void func_8016EE94(s32 a0, s32 a1) \
|
|
{ \
|
|
a0 = a0 | 0x4000000; \
|
|
D_80126D50 = a0 | a1; \
|
|
D_80126D54 = 0; \
|
|
D_80126D6C = 0; \
|
|
D_80126D6D = 0; \
|
|
D_80126D6E = 0; \
|
|
D_80126D5C = 0; \
|
|
D_80126D60 = 0; \
|
|
D_80126D64 = 0; \
|
|
D_80126D66 = 0; \
|
|
D_80126D68 = 0; \
|
|
D_80126D6A = 0; \
|
|
D_80126D1A = 0; \
|
|
D_80127058 = 0; \
|
|
D_8012705C = 0; \
|
|
D_80127060 = 0; \
|
|
D_80127064 = 0; \
|
|
D_80127068 = 0; \
|
|
D_8012706C = 0; \
|
|
D_80127070 = 0; \
|
|
D_80127074 = 0; \
|
|
func_801726D0(&D_80126B58); \
|
|
D_800B9A17 = 0; \
|
|
D_80126D20 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014BB24() \
|
|
extern s32 func_80029178(s32 a0); \
|
|
extern u8 D_80078E78[]; \
|
|
extern s16 D_80078EB4; \
|
|
void func_8014BB24(s32 a0, s32 a1, s32 a2) \
|
|
{ \
|
|
u8 *base = D_80078E78; \
|
|
u16 cur; \
|
|
if (a2 != 0) { \
|
|
D_80078EB4 = (u16)D_80078EB4 + a1; \
|
|
} else { \
|
|
if ((func_80029178(0x1B) & 0xFF) != 0) { \
|
|
cur = D_80078EB4; \
|
|
if (cur < 0x3E7) { \
|
|
D_80078EB4 = cur + a1; \
|
|
if ((u16)(cur + a1) >= 0x3E8) { \
|
|
D_80078EB4 = 0x3E7; \
|
|
} \
|
|
} \
|
|
} else { \
|
|
cur = D_80078EB4; \
|
|
if (cur < 0x1F4) { \
|
|
D_80078EB4 = cur + a1; \
|
|
if ((u16)(cur + a1) >= 0x1F5) { \
|
|
D_80078EB4 = 0x1F4; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
if (*(u16 *)(base + 0x3A) < *(u16 *)(base + 0x3C)) { \
|
|
*(u16 *)(base + 0x3C) = *(u16 *)(base + 0x3A); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015E5B0() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
void func_8015E5B0(u8 *self) \
|
|
{ \
|
|
u8 *obj; \
|
|
s16 src[4]; \
|
|
s16 dst[4]; \
|
|
obj = *(u8 **)(self + 0x18C); \
|
|
if (obj == 0) { \
|
|
return; \
|
|
} \
|
|
src[0] = *(u16 *)(self + 0x6); \
|
|
src[1] = *(u16 *)(self + 0xA) - 0x14; \
|
|
src[2] = *(u16 *)(self + 0xE); \
|
|
dst[0] = *(u16 *)(obj + 0x6); \
|
|
dst[1] = *(u16 *)(obj + 0xA); \
|
|
dst[2] = *(u16 *)(obj + 0xE); \
|
|
if (func_80133784(0, src, (s32)dst) != 0) { \
|
|
*(u16 *)(obj + 0x6) = dst[0]; \
|
|
*(u16 *)(obj + 0xA) = dst[1]; \
|
|
*(u16 *)(obj + 0xE) = dst[2]; \
|
|
} \
|
|
func_80015978((s32)(obj + 4), (s32 *)src); \
|
|
src[3] = 0; \
|
|
func_8014C4AC((s32)obj, 0x1C, 0, src, \
|
|
*(s16 *)(*(u8 **)(self + 0x20) + 0x12)); \
|
|
*(s32 *)(self + 0x18C) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80172E20() \
|
|
extern s32 D_80127508; \
|
|
extern s16 func_80171AB0(s32 a0, void *a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80172E20(u8 * a0) \
|
|
{ \
|
|
struct Src80172E20 *p = (struct Src80172E20 *)D_80127508; \
|
|
u16 sp10[3]; \
|
|
sp10[0] = p->_6; \
|
|
sp10[1] = p->_A; \
|
|
sp10[2] = p->_E; \
|
|
if (func_80171AB0(a0, sp10) == 0) { \
|
|
func_80171A1C((u8 *)a0); \
|
|
func_80174650(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014706C() \
|
|
void func_8014706C(void *arg0) { \
|
|
M2C_FIELD(arg0, s8 *, 0x4D) = 2; \
|
|
}
|
|
|
|
#define DEFINE_func_8014708C() \
|
|
void func_8014708C(void *arg0) { \
|
|
M2C_FIELD(arg0, s8 *, 0x221) = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801470B4() \
|
|
void func_801470B4(s32 arg0) \
|
|
{ \
|
|
M2C_FIELD(arg0, s8 *, 0x222) = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012AD50() \
|
|
s32 func_8012AD50(void * arg0) \
|
|
{ \
|
|
M2C_FIELD(arg0, s16 *, 0x34) = 0; \
|
|
M2C_FIELD(arg0, u16 *, 2) = (u16) (M2C_FIELD(arg0, u16 *, 2) + 1); \
|
|
}
|
|
|
|
#define DEFINE_func_80151184() \
|
|
s32 func_80151184(s32 arg0, s32 arg1, s32 arg2) \
|
|
{ \
|
|
u16 *new_var; \
|
|
int new_var2; \
|
|
*((s16 *) (((s8 *) arg0) + 0x3E)) = arg1; \
|
|
*((s16 *) (((s8 *) arg0) + 0x40)) = arg2; \
|
|
new_var = (u16 *) (((s8 *) arg0) + 0x42); \
|
|
new_var2 = (u16) (*((u16 *) (((s8 *) (*((void **) (((s8 *) arg0) + 0x20)))) + 0x12))); \
|
|
*((u16 *) (((s8 *) arg0) + 0x3C)) = (u16) ((*((u16 *) (((s8 *) arg0) + 0x3C))) | 1); \
|
|
*new_var = new_var2; \
|
|
}
|
|
|
|
#define DEFINE_func_80139914() \
|
|
extern void func_8013A8B0(s32 *a0); \
|
|
void func_80139914(s32 arg0) \
|
|
{ \
|
|
s32 temp_a0; \
|
|
M2C_FIELD(arg0, s16 *, 4) = 0; \
|
|
M2C_FIELD(arg0, s32 *, 0) = 0; \
|
|
if (M2C_FIELD(arg0, u16 *, 0x18) != 0) { \
|
|
temp_a0 = M2C_FIELD(arg0, s32 *, 0x40); \
|
|
if (temp_a0 != 0) { \
|
|
func_8013A8B0(temp_a0); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80147324() \
|
|
extern void func_80147364(u16, s32); \
|
|
extern void *D_8012707C; \
|
|
void func_80147324(s32 arg0) { \
|
|
s32 temp_a0; \
|
|
temp_a0 = arg0 & 0xFFFF; \
|
|
if (temp_a0 == D_8012707C) { \
|
|
D_8012707C = 0; \
|
|
return; \
|
|
} \
|
|
func_80147364(temp_a0, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80165A78() \
|
|
extern void func_80165AC8(void); \
|
|
void func_80165A78(s32 arg0) \
|
|
{ \
|
|
void *temp_a0; \
|
|
func_80165AC8(); \
|
|
temp_a0 = M2C_FIELD(arg0, void **, 0x20); \
|
|
M2C_FIELD(arg0, s8 *, 0x197) = 0; \
|
|
M2C_FIELD(arg0, s32 *, 0x44) = (s32) (M2C_FIELD(arg0, s32 *, 0x44) & ~8); \
|
|
M2C_FIELD(temp_a0, u16 *, 0x2C) = (u16) (M2C_FIELD(temp_a0, u16 *, 0x2C) & 0xFFDF); \
|
|
}
|
|
|
|
#define DEFINE_func_801554B8() \
|
|
extern s32 func_801659DC(u8 *a0); \
|
|
s32 func_801554B8(void *arg0) { \
|
|
s32 var_v0; \
|
|
u8 temp_a0; \
|
|
temp_a0 = M2C_FIELD(arg0, u8 *, 0x1A0); \
|
|
var_v0 = 0; \
|
|
if (temp_a0 != M2C_FIELD(arg0, u8 *, 0x196)) { \
|
|
if (func_800D02D0(temp_a0) != 0) { \
|
|
M2C_FIELD(arg0, u8 *, 0x196) = (u8) M2C_FIELD(arg0, u8 *, 0x1A0); \
|
|
func_801659DC(arg0); \
|
|
return 0; \
|
|
} \
|
|
var_v0 = 1; \
|
|
/* Duplicate return node #4. Try simplifying control flow for better match */ \
|
|
return var_v0; \
|
|
} \
|
|
return var_v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801530E4() \
|
|
extern void func_80019064(void *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern s32 func_801472C8(struct S *a0); \
|
|
extern void func_801474EC(s32 *a0); \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_8014CBF8(void *a0); \
|
|
extern void func_80155440(s32 *a0); \
|
|
extern u8 D_80062C04[]; \
|
|
void func_801530E4(s32 arg0) \
|
|
{ \
|
|
func_80019064(&D_80062C04); \
|
|
func_80149020(arg0); \
|
|
func_801472C8(arg0); \
|
|
M2C_FIELD(arg0, s8 *, 0xDE) = 0x40; \
|
|
func_8014CBF8(arg0); \
|
|
func_801474EC(arg0); \
|
|
func_80155440(arg0); \
|
|
func_80146CA0(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016B448() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern s32 func_8014C050(s32 a0, s32 a1); \
|
|
extern void func_8016B984(void *a0); \
|
|
extern s32 D_80126B58; \
|
|
s32 func_8016B448(s32 arg0, s32 arg1) \
|
|
{ \
|
|
s32 temp_v0; \
|
|
temp_v0 = func_8014C050(&D_80126B58, 0x1E); \
|
|
if (temp_v0 != 0) { \
|
|
func_8016B984(temp_v0); \
|
|
} \
|
|
func_80146A6C(0x1E, arg0, M2C_FIELD(arg0, s16 *, 0x7C), M2C_FIELD(arg0, s16 *, 0x7E), (s32) M2C_FIELD(arg0, s16 *, 0x80), arg1, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_801485B8() \
|
|
void func_801485B8(s32 arg0, s32 arg1, s32 arg2) \
|
|
{ \
|
|
M2C_FIELD(arg1, s16 *, 0) = (s16) (s8) M2C_FIELD(arg0, u8 *, 0); \
|
|
M2C_FIELD(arg1, s16 *, 2) = (s16) (s8) M2C_FIELD(arg0, u8 *, 1); \
|
|
M2C_FIELD(arg1, s16 *, 4) = (s16) (s8) M2C_FIELD(arg0, u8 *, 2); \
|
|
M2C_FIELD(arg2, s16 *, 0) = (s16) (s8) M2C_FIELD(arg0, u8 *, 3); \
|
|
M2C_FIELD(arg2, s16 *, 2) = (s16) (s8) M2C_FIELD(arg0, u8 *, 4); \
|
|
M2C_FIELD(arg2, s16 *, 4) = (s16) (s8) M2C_FIELD(arg0, u8 *, 5); \
|
|
}
|
|
|
|
#define DEFINE_func_8014E790() \
|
|
s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2) \
|
|
{ \
|
|
s32 temp_a1; \
|
|
void *temp_s0; \
|
|
temp_s0 = M2C_FIELD(arg0, void **, 0x180); \
|
|
if ((M2C_FIELD(temp_s0, u16 *, 0) == 0) || !(M2C_FIELD(temp_s0, u16 *, 0x5C) & 0x20) || (temp_a1 = M2C_FIELD(temp_s0, s32 *, 0x58), (temp_a1 == 0)) || (func_80135888(M2C_FIELD(temp_s0, s32 *, 0x20), temp_a1, arg1, arg2) == 0)) { \
|
|
M2C_FIELD(arg0, void **, 0x180) = NULL; \
|
|
return 0; \
|
|
} \
|
|
M2C_FIELD(arg0, u16 *, 6) = (u16) M2C_FIELD(temp_s0, u16 *, 6); \
|
|
M2C_FIELD(arg0, u16 *, 0xA) = (u16) M2C_FIELD(temp_s0, u16 *, 0xA); \
|
|
M2C_FIELD(arg0, u16 *, 0xE) = (u16) M2C_FIELD(temp_s0, u16 *, 0xE); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012D3B4() \
|
|
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; \
|
|
void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2) { \
|
|
s32 sp10; \
|
|
s32 sp14; \
|
|
s32 temp_v0_2; \
|
|
void *temp_v0; \
|
|
temp_v0 = func_80010A08(0x10); \
|
|
(*(s32 *)((s8*)(temp_v0)+(4))) = arg2; \
|
|
SetLineF2(temp_v0); \
|
|
func_8004914C(&D_800AF648); \
|
|
func_800491AC(&D_800AF648); \
|
|
temp_v0_2 = RotTransPers(arg0, temp_v0 + 8, &sp10, &sp14); \
|
|
if ((temp_v0_2 > 0) && (sp14 >= 0) && (RotTransPers(arg1, temp_v0 + 0xC, &sp10, &sp14) > 0) && (sp14 >= 0)) { \
|
|
AddPrim(*(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + (temp_v0_2 * 4), temp_v0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801303A0() \
|
|
extern void func_8012E364(void); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_801303A0(s32 a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x2) { \
|
|
((void (*)(s32))func_8012E364)(a0); \
|
|
} \
|
|
func_80131CA8(a0, 2); \
|
|
}
|
|
|
|
#define DEFINE_func_8015773C() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
s32 func_8015773C(u8 * arg0) \
|
|
{ \
|
|
*(s32 *)((u8 *)arg0 + 0x44) = *(s32 *)((u8 *)arg0 + 0x44) & ~2; \
|
|
func_80154A74((s32)arg0, 0x11); \
|
|
func_801553C0((s32)arg0); \
|
|
func_801553A8(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BE98() \
|
|
extern s32 func_800132BC(s32 a0, s32 a1); \
|
|
void func_8012BE98(s32 arg0, u16 * arg1) \
|
|
{ \
|
|
s16 a[3]; \
|
|
s16 b[3]; \
|
|
a[0] = *(u16 *)((u8 *)arg0 + 0x6); \
|
|
a[1] = 0; \
|
|
a[2] = *(u16 *)((u8 *)arg0 + 0xE); \
|
|
b[0] = *(u16 *)((u8 *)arg1 + 0x0); \
|
|
b[1] = 0; \
|
|
b[2] = *(u16 *)((u8 *)arg1 + 0x4); \
|
|
func_800132BC((s32)a, (s32)b); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A7D4() \
|
|
extern s32 D_801151D4; \
|
|
void func_8012A7D4(void *arg0, void *arg1) { \
|
|
s32 p; \
|
|
p = D_801151D4; \
|
|
*(s16 *)((u8 *)arg0 + 0x0) = *(s32 *)(p + 0x3C); \
|
|
*(s16 *)((u8 *)arg0 + 0x2) = *(s32 *)(p + 0x40); \
|
|
*(s16 *)((u8 *)arg0 + 0x4) = *(s32 *)(p + 0x44); \
|
|
*(s16 *)((u8 *)arg1 + 0x0) = *(s32 *)(p + 0x48); \
|
|
*(s16 *)((u8 *)arg1 + 0x2) = *(s32 *)(p + 0x4C); \
|
|
*(s16 *)((u8 *)arg1 + 0x4) = *(s32 *)(p + 0x50); \
|
|
}
|
|
|
|
#define DEFINE_func_8012C51C() \
|
|
extern u8 D_80126720[]; \
|
|
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8012C51C(void *a0, s32 a1) { \
|
|
u8 *base = D_80126720; \
|
|
u8 *p; \
|
|
s32 ret; \
|
|
if (a1 == 0) { \
|
|
p = base - 0x6480; \
|
|
} else { \
|
|
p = (u8 *)(a1 + 0x10C); \
|
|
} \
|
|
if (p != base) { \
|
|
do { \
|
|
if (*(u16 *)p == 0) goto found; \
|
|
p += 0x10C; \
|
|
} while (p != base); \
|
|
} \
|
|
p = 0; \
|
|
found: \
|
|
ret = 0; \
|
|
if (p != 0) { \
|
|
ret = func_8012C890((s32)a0, (s32)p, a1); \
|
|
} \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_801301E8() \
|
|
extern s32 func_8012BEE8(s32 a0); \
|
|
extern void func_80130D48(s32 a0); \
|
|
extern void func_801319E0(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_801301E8(u8 *a0) { \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x2000) { \
|
|
if (*(u8 *)(a0 + 0xC3) != 0) { \
|
|
if (*(u16 *)(a0 + 0x72) & 0x4000) { \
|
|
func_80130D48((s32)a0); \
|
|
func_801319E0((s32)a0); \
|
|
} \
|
|
} else if (func_8012BEE8((s32)a0) != 0) { \
|
|
func_80130D48((s32)a0); \
|
|
func_801319E0((s32)a0); \
|
|
} \
|
|
} \
|
|
func_80131CA8((int)a0, 0x26); \
|
|
}
|
|
|
|
#define DEFINE_func_80130278() \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
extern void func_80131170(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
void func_80130278(s32 arg0) { \
|
|
s32 flag; \
|
|
flag = 0; \
|
|
*(u8 *)(arg0 + 0xC1) = 0xB; \
|
|
if (*(s32 *)(arg0 + 0xC4) & 1) { \
|
|
func_80131E00((struct S80131E00 *)arg0, 0xE); \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(arg0 + 0xB4) & 0x800) { \
|
|
func_80131170(arg0, 0, 0); \
|
|
flag = 1; \
|
|
} \
|
|
if (((s32 (*)(int, int))func_80131CA8)(arg0, 0x2C) != 0) { \
|
|
flag = 1; \
|
|
} \
|
|
if (flag == 0) { \
|
|
func_80131E00((struct S80131E00 *)arg0, 6); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012C588() \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8012C588(s32 a0, s32 a1) { \
|
|
s32 p; \
|
|
s32 end; \
|
|
s32 v0; \
|
|
s32 q; \
|
|
s16 sp[10]; \
|
|
if (a1 != 0 && *(u16*)a1 != 0) { \
|
|
sp[0] = *(u16*)(a1 + 0x6); \
|
|
sp[1] = *(u16*)(a1 + 0xA); \
|
|
sp[2] = *(u16*)(a1 + 0xE); \
|
|
} else { \
|
|
sp[2] = 0; \
|
|
sp[1] = 0; \
|
|
sp[0] = 0; \
|
|
} \
|
|
sp[3] = a0; \
|
|
q = (s32)&sp[0]; \
|
|
sp[5] = 0; \
|
|
sp[4] = 0; \
|
|
*(s32*)&sp[8] = 0; \
|
|
sp[7] = 0; \
|
|
sp[6] = 0x7FFF; \
|
|
end = (s32)D_801202A0 + 0x6480; \
|
|
if (a1 == 0) { \
|
|
p = (s32)D_801202A0; \
|
|
} else { \
|
|
p = a1 + 0x10C; \
|
|
} \
|
|
if (p != end) { \
|
|
for (;;) { \
|
|
if (*(u16*)p == 0) { \
|
|
goto found; \
|
|
} \
|
|
p += 0x10C; \
|
|
if (p == end) { \
|
|
break; \
|
|
} \
|
|
} \
|
|
} \
|
|
p = 0; \
|
|
found: \
|
|
v0 = 0; \
|
|
if (p != 0) { \
|
|
v0 = func_8012C890(q, p, a1); \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80147B5C() \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
void func_80147B5C(s32 arg0, void *arg1) { \
|
|
if (*(s32 *)(arg0 + 0x44) & 0x400000) { \
|
|
D_80127090 = *(s32 *)(arg0 + 0x24); \
|
|
} else { \
|
|
D_80127090 = *(s32 *)arg1; \
|
|
} \
|
|
if (*(s32 *)(arg0 + 0x44) & 0x800000) { \
|
|
D_80127094 = *(s32 *)(arg0 + 0x28); \
|
|
} else { \
|
|
D_80127094 = *(s32 *)((u8 *)arg1 + 0x4); \
|
|
} \
|
|
if (*(s32 *)(arg0 + 0x44) & 0x1000000) { \
|
|
D_80127098 = *(s32 *)(arg0 + 0x2C); \
|
|
} else { \
|
|
D_80127098 = *(s32 *)((u8 *)arg1 + 0x8); \
|
|
} \
|
|
*(s32 *)(arg0 + 0x10) = D_80127090; \
|
|
*(s32 *)(arg0 + 0x14) = D_80127094; \
|
|
*(s32 *)(arg0 + 0x18) = D_80127098; \
|
|
D_80127090 = 0; \
|
|
D_80127094 = 0; \
|
|
D_80127098 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E8E0() \
|
|
extern void func_80049CAC(s32 a0, s32 a1); \
|
|
void func_8012E8E0(s32 a0, s32 a1) \
|
|
{ \
|
|
s32 v1; \
|
|
s32 p; \
|
|
s16 v; \
|
|
u16 e; \
|
|
v1 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(a0 + 0x6) = *(u16 *)(a1 + 0x0); \
|
|
*(s16 *)(a0 + 0xA) = *(u16 *)(a1 + 0x2); \
|
|
e = *(u16 *)(a1 + 0x4); \
|
|
*(s16 *)(a0 + 0xC) = 0; \
|
|
*(s16 *)(a0 + 0x8) = 0; \
|
|
*(s16 *)(a0 + 0x4) = 0; \
|
|
*(s16 *)(a0 + 0xE) = e; \
|
|
if (v1 != 0) { \
|
|
*(s16 *)(v1 + 0x12) = *(u16 *)(a1 + 0x6); \
|
|
a1 = *(s32 *)(a0 + 0x20); \
|
|
if (a1 != 0) { \
|
|
func_80049CAC(a1 + 0x10, a1 + 0x34); \
|
|
p = *(s32 *)(a0 + 0x20); \
|
|
v = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
|
|
*(s16 *)(p + 0x8) = v; \
|
|
*(s32 *)(p + 0x48) = v; \
|
|
v = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
|
|
*(s16 *)(p + 0xA) = v; \
|
|
*(s32 *)(p + 0x4C) = v; \
|
|
v = *(u16 *)(a0 + 0xE) + *(u16 *)(a0 + 0x54); \
|
|
*(s16 *)(p + 0xC) = v; \
|
|
*(u16 *)(p + 0x2C) = *(u16 *)(p + 0x2C) | 1; \
|
|
*(s32 *)(p + 0x50) = v; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012832C() \
|
|
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); \
|
|
void func_8012832C(void) { \
|
|
s32 a0 = func_80029504(); \
|
|
s32 v0; \
|
|
switch (currentLocationId) { \
|
|
case 0x300E: \
|
|
if (func_800CF854(a0) == 0) { \
|
|
v0 = func_80128998(); \
|
|
} else { \
|
|
v0 = func_801289F0(); \
|
|
} \
|
|
break; \
|
|
case 0x30A0: \
|
|
if (a0 < 0x640) { \
|
|
v0 = func_801288E8(a0); \
|
|
} else { \
|
|
v0 = func_80128940(a0); \
|
|
} \
|
|
break; \
|
|
case 0x3014: \
|
|
if (a0 == 0x4B0 && (func_80029178(0x138) & 0xFF) == 0) { \
|
|
v0 = func_801288B0(); \
|
|
} else { \
|
|
v0 = 1; \
|
|
} \
|
|
break; \
|
|
default: \
|
|
func_80011C10(); \
|
|
return; \
|
|
} \
|
|
if (v0 != 0) { \
|
|
func_80011C10(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012A988() \
|
|
extern s32 func_8012ACE0(void *a0); \
|
|
extern void func_8012AAAC(void); \
|
|
void func_8012A988(u8 *a0) { \
|
|
s32 v0; \
|
|
s16 t; \
|
|
u16 flags; \
|
|
*(u16 *)(a0 + 0x72) = *(u16 *)(a0 + 0x72) & 0x9FFF; \
|
|
if (*(u16 *)(a0 + 0x0) == 0) return; \
|
|
if (*(u8 *)(a0 + 0xC1) == 0x11) return; \
|
|
t = *(s16 *)(a0 + 0x98); \
|
|
if (t == 0) return; \
|
|
t = t - 1; \
|
|
*(s16 *)(a0 + 0x98) = t; \
|
|
if (t > 0) return; \
|
|
if (*(s32 *)(a0 + 0x90) == 0) return; \
|
|
flags = *(u16 *)(a0 + 0x72); \
|
|
if (flags & 0x400) { \
|
|
v0 = *(s32 *)(a0 + 0x94) - 1; \
|
|
*(s32 *)(a0 + 0x94) = v0; \
|
|
if (v0 < 0) { \
|
|
*(s32 *)(a0 + 0x94) = 1; \
|
|
*(u16 *)(a0 + 0x72) = *(u16 *)(a0 + 0x72) & 0xFBFF; \
|
|
} \
|
|
} else if (flags & 0x200) { \
|
|
v0 = *(s32 *)(a0 + 0x94) - 1; \
|
|
*(s32 *)(a0 + 0x94) = v0; \
|
|
if (v0 < 0) { \
|
|
s32 idx = func_8012ACE0(a0); \
|
|
if (*(s16 *)((idx * 8) + *(s32 *)(a0 + 0x90) + 4) != -1) { \
|
|
*(s32 *)(a0 + 0x94) = 0; \
|
|
*(s16 *)(a0 + 0x98) = 0; \
|
|
return; \
|
|
} \
|
|
*(s32 *)(a0 + 0x94) = idx - 1; \
|
|
} \
|
|
} else { \
|
|
*(s32 *)(a0 + 0x94) = *(s32 *)(a0 + 0x94) + 1; \
|
|
} \
|
|
((void (*)(u8 *))func_8012AAAC)(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801399A8() \
|
|
extern s32 D_801269F0; \
|
|
extern s32 D_80126A3C; \
|
|
s32 func_801399A8(void) { \
|
|
s32 iVar2; s32 puVar3; s32 iVar1; \
|
|
for (iVar2 = 1, puVar3 = (s32)&D_80126A3C, iVar1 = 0x4C; iVar2 < 3; puVar3 += 0x4C, iVar2++, iVar1 += 0x4C) { \
|
|
if (*(s32 *)((s32)&D_801269F0 + iVar1) == 0) return puVar3; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B8E4() \
|
|
extern s16 D_80126CB8; \
|
|
extern s16 D_80126CB4; \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012B8E4(s32 arg0, s32 arg1) { \
|
|
register s32 d __asm__("$16"); \
|
|
register s32 s1ang __asm__("$17"); \
|
|
s32 u5; s32 u6; s32 iVar4; s32 q; s32 t; \
|
|
d = arg1; \
|
|
s1ang = *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12); \
|
|
u5 = (ratan2(*(s16 *)(arg0 + 0xE) - D_80126CB8, D_80126CB4 - *(s16 *)(arg0 + 6)) - 0x400) & 0xFFF; \
|
|
__asm__ __volatile__("" : : "r"(u5)); \
|
|
d = (s16)d; \
|
|
u6 = s1ang & 0xFFF; \
|
|
if (u6 == u5) return 0; \
|
|
iVar4 = u5 - u6; \
|
|
if (iVar4 > 0x800) { t = u6 + 0x1000; iVar4 = u5 - t; } \
|
|
if (iVar4 < -0x800) { t = u6 - 0x1000; iVar4 = u5 - t; } \
|
|
if (iVar4 >= 0) { q = iVar4 / d; if (q == 0) q = 1; } \
|
|
else { q = iVar4 / d; if (q == 0) q = -1; } \
|
|
return q; \
|
|
}
|
|
|
|
#define DEFINE_func_8012CB64() \
|
|
s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { \
|
|
register s32 v0 __asm__("$2"); \
|
|
register s32 v1 __asm__("$3"); \
|
|
v0 = 0; \
|
|
v1 = *(s16*)arg0; \
|
|
if (((arg1 <= v1) && (v1 < arg2)) && (arg3 <= *(s16*)(arg0 + 4))) { \
|
|
v0 = *(s16*)(arg0 + 4) < arg4; \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801319E0() \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
extern void func_8002A04C(s32 a0); \
|
|
extern void func_8012C218(void *a0); \
|
|
void func_801319E0(s32 arg0) { \
|
|
/* arg0 stays in $s0 (callee-saved) across all three calls -- live across each jal, \
|
|
* so clean C allocates it there naturally (no register pin needed). */ \
|
|
if (((s32 (*)(int, int))func_80131CA8)(arg0, 0x11) == 0) { \
|
|
if (*(s32 *)(arg0 + 0x78) != 0) { \
|
|
func_8002A04C(arg0); \
|
|
} \
|
|
func_8012C218((void *)arg0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80143B6C() \
|
|
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); \
|
|
s32 func_80143B6C(s32 arg0, s32 arg1) { \
|
|
s32 iVar1; \
|
|
iVar1 = func_8012C658(0x1C, arg1, arg0); \
|
|
if (((iVar1 != 0) && (*(s32*)(arg0 + 0x20) != 0)) && (arg1 == 0)) { \
|
|
*(s16*)(iVar1 + 0xFC) = *(u16*)(*(s32*)(arg0 + 0x20) + 0x12); \
|
|
} \
|
|
return iVar1; \
|
|
}
|
|
|
|
#define DEFINE_func_80149B54() \
|
|
extern u8 func_8014BEF8(void); \
|
|
s32 func_80149B54(s32 * arg0) \
|
|
{ \
|
|
s32 var_v0; \
|
|
u32 temp; \
|
|
if ((*(u32*)((u8*)arg0 + 0x44) & 0x400) != 0) { var_v0 = 0; goto end; } \
|
|
if (((s32(*)(s32*))func_8014BEF8)(arg0) == 0) { var_v0 = 0; goto end; } \
|
|
temp = *(u16*)((u8*)arg0 + 0xAC) & 0x10; \
|
|
var_v0 = temp != 0; \
|
|
end: \
|
|
return var_v0; \
|
|
}
|
|
|
|
#define DEFINE_func_801468C8() \
|
|
extern s32 D_8011F750; \
|
|
extern s32 D_8011F754; \
|
|
u8 *func_801468C8(s32 arg0, u8 arg1) { \
|
|
register u8 *var_a2 __asm__("$6"); /* $a2 — returned base ptr */ \
|
|
register u8 *var_v1 __asm__("$3"); /* $v1 — scan/store ptr */ \
|
|
s32 var_t0; \
|
|
s32 var_a3; \
|
|
var_t0 = 0; \
|
|
var_a2 = (u8 *)(s32)&D_8011F750; \
|
|
var_v1 = var_a2; \
|
|
var_a3 = 0; \
|
|
do { \
|
|
if (*var_v1 != 0) { \
|
|
var_a2 += 0x2C; \
|
|
var_v1 += 0x2C; \
|
|
var_t0 += 1; \
|
|
var_a3 += 0x2C; \
|
|
} else { \
|
|
*(s32 *)((s32)&D_8011F754 + var_a3) = arg0; \
|
|
*var_v1 = arg1; \
|
|
return var_a2; \
|
|
} \
|
|
} while (var_t0 < 2); \
|
|
return (u8 *)0; \
|
|
}
|
|
|
|
#define DEFINE_func_80146994() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3) \
|
|
{ \
|
|
func_80146A6C(arg0 & 0xFFFF, (void *)arg1, 0, 0, 0, arg2, arg3); \
|
|
}
|
|
|
|
#define DEFINE_func_80149544() \
|
|
extern void func_8012F14C(s32); \
|
|
extern void func_8012EF70(s32 a0, s32 a1); \
|
|
void func_80149544(s32 arg0, s32 arg1, s32 arg2) { \
|
|
s32 sp10[2]; \
|
|
((void(*)(s32,s32,s32))func_8012F14C)(*(s32 *)(arg0 + 0x20) + 0x34, arg1, (s32)sp10); \
|
|
func_8012EF70((s32)sp10, arg2); \
|
|
}
|
|
|
|
#define DEFINE_func_8012913C() \
|
|
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); \
|
|
u8 * func_8012913C(s32 arg0) \
|
|
{ \
|
|
s32 iVar1; \
|
|
u8 *puVar2; \
|
|
iVar1 = ((s32(*)(s32,s32))func_8001D074)(0x7E, 0x100); \
|
|
if (iVar1 == 0) { \
|
|
return (u8 *)0; \
|
|
} \
|
|
puVar2 = func_801291C0(); \
|
|
if (puVar2 == (u8 *)0) { \
|
|
return (u8 *)0; \
|
|
} \
|
|
*(s16 *)puVar2 = arg0; \
|
|
*(s32 *)(puVar2 + 0x20) = iVar1; \
|
|
func_8001CC3C(iVar1, 0, 0, 0); \
|
|
return puVar2; \
|
|
}
|
|
|
|
#define DEFINE_func_80149584() \
|
|
extern void func_8012F14C(s32); \
|
|
extern void func_8012EFB8(s32 a0); \
|
|
void func_80149584(s32 arg0, s32 arg1, s32 arg2) { \
|
|
s8 buf[8]; \
|
|
((void(*)(s32,s32,s32))func_8012F14C)(*(s32 *)(arg0 + 0x20) + 0x34, arg1, (s32)buf); \
|
|
((void(*)(s32,s32))func_8012EFB8)((s32)buf, arg2); \
|
|
}
|
|
|
|
#define DEFINE_func_8013A380() \
|
|
extern u8 D_8011DA80[]; \
|
|
extern void func_8013A530(); \
|
|
extern void func_8013A448(void *a0); \
|
|
extern void func_8013A4C4(struct S8013A4C4 *a0); \
|
|
void func_8013A380(void) { \
|
|
s16 *p; \
|
|
s32 i; \
|
|
p = (s16 *)D_8011DA80; \
|
|
i = 0; \
|
|
do { \
|
|
if (p != (s16 *)0) { \
|
|
switch (*p) { \
|
|
case 2: \
|
|
((void (*)(void *))func_8013A530)(p); \
|
|
break; \
|
|
case 1: \
|
|
func_8013A448(p); \
|
|
break; \
|
|
case 3: \
|
|
func_8013A4C4((struct S8013A4C4 *)p); \
|
|
break; \
|
|
} \
|
|
} \
|
|
i += 1; \
|
|
p += 8; \
|
|
} while (i < 2); \
|
|
}
|
|
|
|
#define DEFINE_func_8012F5F4() \
|
|
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); \
|
|
void func_8012F5F4(s32 arg0) { \
|
|
*(u8 *)(arg0 + 0xC1) = 1; \
|
|
if ((*(s32 *)(arg0 + 0xC4) & 2) != 0) { \
|
|
func_80131CA8(arg0, 3); \
|
|
return; \
|
|
} \
|
|
((void (*)(s32))func_80131B14)(arg0); \
|
|
if (*(s16 *)(arg0 + 0x76) < 1) { \
|
|
func_80131E00((struct S80131E00 *)arg0, 0xC); \
|
|
return; \
|
|
} \
|
|
if (func_80131A34(arg0, 4) != 0) { \
|
|
*(u8 *)(arg0 + 0xC2) = 0; \
|
|
} else { \
|
|
*(s16 *)(arg0 + 0x98) = 0; \
|
|
*(u8 *)(arg0 + 0xC2) = 1; \
|
|
*(s32 *)(arg0 + 0x1C) = 0x10; \
|
|
} \
|
|
func_80131CA8(arg0, 3); \
|
|
}
|
|
|
|
#define DEFINE_func_8013A8FC() \
|
|
extern u8 D_8011DA80[]; \
|
|
extern void func_8013A9B4(s32 a0, s32 a1); \
|
|
s32 func_8013A8FC(s32 arg0) { \
|
|
s32 p; \
|
|
s32 i; \
|
|
s32 v1; \
|
|
if (*(u16*)(arg0 + 0x18) == 0) { \
|
|
return 1; \
|
|
} \
|
|
if (*(s32*)(arg0 + 0x40) == 0) { \
|
|
i = 0; \
|
|
do { \
|
|
if (*(s16*)(i + (s32)D_8011DA80) == 0) { \
|
|
p = i + (s32)D_8011DA80; \
|
|
goto post; \
|
|
} \
|
|
i += 0x10; \
|
|
} while (i < 0x20); \
|
|
i = 0; \
|
|
p = i; \
|
|
post: \
|
|
if (p != 0) { \
|
|
v1 = *(u16*)(arg0 + 0x18); \
|
|
if (v1 < 7) { \
|
|
if (v1 != 0) { \
|
|
func_8013A9B4(arg0, p); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801788B8() \
|
|
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); \
|
|
extern void func_8012E8E0(s32 a0, s32 a1); \
|
|
extern void func_8012B2CC(s32 a0); \
|
|
s32 func_801788B8(s32 arg0, s32 arg1) { \
|
|
s32 iVar1; \
|
|
u16 buf[4]; \
|
|
iVar1 = func_8012C658(0x83, (s32)*(s16 *)((u8 *)arg0 + 0x70), 0); \
|
|
if (iVar1 == 0) { \
|
|
return 0; \
|
|
} \
|
|
*(s32 *)((u8 *)iVar1 + 0x64) = arg0; \
|
|
buf[0] = *(u16 *)((u8 *)arg0 + 0x6); \
|
|
buf[1] = *(u16 *)((u8 *)arg0 + 0xA); \
|
|
buf[2] = *(u16 *)((u8 *)arg0 + 0xE); \
|
|
if (*(s32 *)((u8 *)arg0 + 0x20) != 0) { \
|
|
buf[3] = *(u16 *)((u8 *)(*(s32 *)((u8 *)arg0 + 0x20)) + 0x12); \
|
|
} else { \
|
|
buf[3] = 0; \
|
|
} \
|
|
func_8012E8E0(iVar1, (s32)buf); \
|
|
func_8012B2CC(iVar1); \
|
|
*(s32 *)((u8 *)iVar1 + 0xDC) = arg1; \
|
|
return iVar1; \
|
|
}
|
|
|
|
#define DEFINE_func_80171E08() \
|
|
extern s32 func_8017248C(s32 a0, s32 a1); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80171EC8(s32 a0); \
|
|
s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2) { \
|
|
s32 r; \
|
|
s32 a1v; \
|
|
r = func_8017248C(arg0, arg1); \
|
|
if (r != 0) { \
|
|
func_80146D90(arg0); \
|
|
return r; \
|
|
} \
|
|
a1v = (ratan2((s32)*(s16 *)(arg1 + 0x0) - (s32)*(s16 *)(arg0 + 0x6), \
|
|
(s32)*(s16 *)(arg1 + 0x4) - (s32)*(s16 *)(arg0 + 0xE)) + 0x800) & 0xFFF; \
|
|
if (arg2 != 0) { \
|
|
a1v = (s16)func_80012DBC((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), \
|
|
a1v, (s32)(s16)arg2, 1); \
|
|
} \
|
|
*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = a1v; \
|
|
func_80171EC8(arg0); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014E83C() \
|
|
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2) \
|
|
{ \
|
|
register u8 *p __asm__("$17"); /* $s1 */ \
|
|
register u8 *q __asm__("$16"); /* $s0 */ \
|
|
u8 *end; \
|
|
s32 t; \
|
|
p = D_801202A0; \
|
|
if ((u32)p < (u32)(p + 0x6480)) { \
|
|
end = p + 0x6480; \
|
|
q = p + 0xE; \
|
|
do { \
|
|
if (*(u16 *)p != 0 && (*(u16 *)(q + 0x4E) & 0x20) && \
|
|
(t = *(s32 *)(q + 0x4A), t != 0) && \
|
|
func_80135888(*(s32 *)(q + 0x12), t, arg1, arg2) != 0) { \
|
|
*(s32 *)(arg0 + 0x180) = (s32)p; \
|
|
*(u16 *)(arg0 + 0x6) = *(u16 *)(q - 0x8); \
|
|
*(u16 *)(arg0 + 0xA) = *(u16 *)(q - 0x4); \
|
|
*(u16 *)(arg0 + 0xE) = *(u16 *)q; \
|
|
return 1; \
|
|
} \
|
|
p += 0x10C; \
|
|
q += 0x10C; \
|
|
} while ((u32)p < (u32)end); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014DF94() \
|
|
extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); \
|
|
extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ \
|
|
void func_8014DF94(s32 arg0) { \
|
|
s16 a[3]; \
|
|
s16 b[3]; \
|
|
register s32 u88 __asm__("$4"); \
|
|
register s32 u8C __asm__("$5"); \
|
|
s32 t; \
|
|
s32 t2; \
|
|
u88 = *(u16 *)(arg0 + 0x88); \
|
|
a[0] = u88; \
|
|
a[1] = *(u16 *)(arg0 + 0x8A) - 0x10; \
|
|
u8C = *(u16 *)(arg0 + 0x8C); \
|
|
a[2] = u8C; \
|
|
t = *(u16 *)(arg0 + 6); \
|
|
b[0] = t; \
|
|
b[1] = *(u16 *)(arg0 + 0xA) - 0x10; \
|
|
t = t - u88; \
|
|
t2 = *(u16 *)(arg0 + 0xE); \
|
|
u88 = u88 - t; \
|
|
b[0] = t; \
|
|
__asm__ __volatile__("" : : : "memory"); \
|
|
b[0] = u88; \
|
|
b[2] = t2; \
|
|
__asm__ __volatile__("" : : : "memory"); \
|
|
t2 = t2 - u8C; \
|
|
u8C = u8C - t2; \
|
|
b[2] = t2; \
|
|
__asm__ __volatile__("" : : : "memory"); \
|
|
b[2] = u8C; \
|
|
if (*(s32 *)(arg0 + 0x170) == 0) { \
|
|
func_8014E284(arg0, a, b); \
|
|
} else { \
|
|
func_8014E048(arg0, a, b); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80154358() \
|
|
extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); \
|
|
s32 func_80154358(void * arg0) \
|
|
{ \
|
|
s32 sp10; \
|
|
s32 sp14; \
|
|
s32 sp18; \
|
|
s32 temp_s2; \
|
|
u16 temp_s3; \
|
|
u16 temp_s1; \
|
|
u8 temp_s5; \
|
|
u8 temp_s6; \
|
|
u8 temp_s7; \
|
|
s32 temp_s4; \
|
|
s32 ret; \
|
|
void *v1; \
|
|
temp_s5 = *(u8 *)((u8 *)arg0 + 0xBC); \
|
|
temp_s6 = *(u8 *)((u8 *)arg0 + 0xBD); \
|
|
temp_s7 = *(u8 *)((u8 *)arg0 + 0xDC); \
|
|
sp10 = 0; \
|
|
sp14 = 0; \
|
|
sp18 = 1; \
|
|
temp_s2 = *(s32 *)((u8 *)arg0 + 0xB4); \
|
|
temp_s3 = *(u16 *)((u8 *)arg0 + 0xB8); \
|
|
temp_s1 = *(u16 *)((u8 *)arg0 + 0xBA); \
|
|
temp_s4 = *(s32 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x20); \
|
|
func_8015444C(arg0, &sp10, &sp14, &sp18); \
|
|
v1 = *(void **)((u8 *)arg0 + 0x20); \
|
|
*(s32 *)((u8 *)arg0 + 0xB4) = temp_s2; \
|
|
*(u16 *)((u8 *)arg0 + 0xB8) = temp_s3; \
|
|
*(u16 *)((u8 *)arg0 + 0xBA) = temp_s1; \
|
|
*(u8 *)((u8 *)arg0 + 0xBC) = temp_s5; \
|
|
*(u8 *)((u8 *)arg0 + 0xBD) = temp_s6; \
|
|
*(u8 *)((u8 *)arg0 + 0xDC) = temp_s7; \
|
|
ret = *(s32 *)((u8 *)v1 + 0x20); \
|
|
*(s32 *)((u8 *)v1 + 0x20) = temp_s4; \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_80171EC8() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 func_80047948(s32 a0); \
|
|
extern s32 func_8004787C(s32 a0); \
|
|
extern s32 D_801151D4; \
|
|
void func_80171EC8(s32 a0) { \
|
|
s32 base = D_801151D4; \
|
|
s32 s0; \
|
|
s32 s1; \
|
|
s32 v1; \
|
|
s32 ang; \
|
|
*(s8 *)(a0 + 0xA9) = 0x73; \
|
|
ang = ratan2(*(s32 *)(base + 0x68) - *(s32 *)(base + 0x5C), \
|
|
*(s32 *)(base + 0x70) - *(s32 *)(base + 0x64)); \
|
|
s0 = (ang + 0x800) & 0xFFF; \
|
|
s0 = (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) - s0) & 0xFF8; \
|
|
if (s0 == 0x400 || s0 == 0xC00) { \
|
|
s1 = 0x80; \
|
|
} else { \
|
|
s32 t = -(func_80047948(s0) << 7); \
|
|
if (t < 0) { \
|
|
t += 0xFFF; \
|
|
} \
|
|
s1 = (t >> 12) + 0x80; \
|
|
} \
|
|
if (s1 < 0) { \
|
|
s1 = 0; \
|
|
} \
|
|
if (!(s1 < 0x100)) { \
|
|
s1 = 0xFF; \
|
|
} \
|
|
if (s0 == 0 || s0 == 0x800) { \
|
|
v1 = 0x80; \
|
|
} else { \
|
|
s32 t = func_8004787C(s0); \
|
|
if (t < 0) { \
|
|
t += 0x1F; \
|
|
} \
|
|
v1 = (t >> 5) + 0x80; \
|
|
} \
|
|
if (v1 < 0) { \
|
|
v1 = 0; \
|
|
} \
|
|
if (!(v1 < 0x100)) { \
|
|
v1 = 0xFF; \
|
|
} \
|
|
*(s16 *)(a0 + 0xAE) = (v1 & 0xFF) | (s1 << 8); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BB3C() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3) { \
|
|
register s32 a __asm__("$17"); /* $s1 */ \
|
|
register s32 div __asm__("$16"); /* $s0 */ \
|
|
register s32 q __asm__("$3"); /* $v1 */ \
|
|
register s32 d __asm__("$2"); /* $v0 */ \
|
|
s32 ang; \
|
|
s32 diff; \
|
|
u32 cur; \
|
|
a = arg2; \
|
|
div = arg3; \
|
|
ang = ratan2(*(s16 *)(arg0 + 0xA) - *(s16 *)(arg1 + 0xA), \
|
|
*(s16 *)(arg1 + 0x2) - *(s16 *)(arg0 + 0x2)); \
|
|
ang = ang - 0x400; \
|
|
__asm__ __volatile__("" : : "r"(ang)); \
|
|
div = (s16)div; \
|
|
a = a & 0xFFF; \
|
|
cur = ang & 0xFFF; \
|
|
if (a == cur) { \
|
|
d = 0; \
|
|
} else { \
|
|
s32 t; \
|
|
diff = cur - a; \
|
|
if (0x800 < diff) { \
|
|
t = a + 0x1000; \
|
|
diff = cur - t; \
|
|
} \
|
|
if (diff < -0x800) { \
|
|
t = a - 0x1000; \
|
|
diff = cur - t; \
|
|
} \
|
|
if (diff >= 0) { \
|
|
q = diff / div; \
|
|
if (q == 0) { \
|
|
q = 1; \
|
|
} \
|
|
} else { \
|
|
q = diff / div; \
|
|
if (q == 0) { \
|
|
q = -1; \
|
|
} \
|
|
} \
|
|
d = q; \
|
|
} \
|
|
return (s16)d; \
|
|
}
|
|
|
|
#define DEFINE_func_80164F44() \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_80165124(void *a0); \
|
|
extern s32 func_80165140(s32 a0); \
|
|
extern void func_801651B8(void *a0); \
|
|
void func_80164F44(void *arg0) { \
|
|
s32 iVar4; \
|
|
s16 sVar2; \
|
|
s16 sVar1; \
|
|
s16 sVar3; \
|
|
*(s16 *)((u8 *)arg0 + 0x62) = *(u16 *)((u8 *)arg0 + 0x62) + 4; \
|
|
iVar4 = *(u16 *)((u8 *)arg0 + 0x60) + 0x40; \
|
|
*(s16 *)((u8 *)arg0 + 0x60) = iVar4; \
|
|
sVar2 = *(u16 *)((u8 *)arg0 + 0x2E) - iVar4; \
|
|
*(s16 *)((u8 *)arg0 + 0x2E) = sVar2; \
|
|
*(s16 *)((u8 *)arg0 + 0x2C) = sVar2; \
|
|
if (sVar2 < 0x1000) { \
|
|
*(s16 *)((u8 *)arg0 + 0x2E) = 0x1000; \
|
|
*(s16 *)((u8 *)arg0 + 0x2C) = 0x1000; \
|
|
*(s16 *)((u8 *)arg0 + 0x60) = 0x80; \
|
|
func_80146E90((s32 *)arg0, 0xE); \
|
|
func_80146CA0(arg0); \
|
|
} \
|
|
func_80165124(arg0); \
|
|
sVar3 = 2; \
|
|
if (*(s16 *)((u8 *)arg0 + 0x2C) < 0x2800) { \
|
|
sVar1 = *(u16 *)((u8 *)arg0 + 0x66) + 1; \
|
|
} else { \
|
|
sVar3 = 3; \
|
|
sVar1 = *(u16 *)((u8 *)arg0 + 0x66) + 1; \
|
|
} \
|
|
*(s16 *)((u8 *)arg0 + 0x66) = sVar1; \
|
|
if (sVar1 == sVar3) { \
|
|
func_80165140((s32)arg0); \
|
|
*(s16 *)((u8 *)arg0 + 0x66) = 0; \
|
|
} \
|
|
func_801651B8(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_80139680() \
|
|
extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80052460(s32 a0, s32 a1, s32 a2); \
|
|
void func_80139680(s32 arg0, u8 * arg1) \
|
|
{ \
|
|
s32 buf[10]; \
|
|
s32 var_s1; \
|
|
var_s1 = (s32)*(u16 *)((u8 *)arg0 + 0x12) - (s32)*(u16 *)((u8 *)arg0 + 0x16); \
|
|
if (var_s1 < 0) { \
|
|
var_s1 += 4; \
|
|
} \
|
|
*(s32 *)((u8 *)buf + 0x00) = 0; \
|
|
*(s16 *)((u8 *)buf + 0x0C) = GetTPage(0, 1, 0x1C0, 0x100); \
|
|
*(s16 *)((u8 *)buf + 0x10) = *(u16 *)((u8 *)arg0 + 0x3C); \
|
|
*(s16 *)((u8 *)buf + 0x12) = *(u16 *)((u8 *)arg0 + 0x3E); \
|
|
*(u8 *)((u8 *)buf + 0x16) = 0x80; \
|
|
*(u8 *)((u8 *)buf + 0x15) = 0x80; \
|
|
*(u8 *)((u8 *)buf + 0x14) = 0x80; \
|
|
{ \
|
|
u16 idx = *(u16 *)((u8 *)arg0 + 0x14); \
|
|
s32 base = *(s16 *)((u8 *)arg0 + 0x30); \
|
|
s16 val; \
|
|
if (idx < 0x24) { \
|
|
val = idx * 6 + base; \
|
|
} else { \
|
|
val = base + 0xD2; \
|
|
} \
|
|
*(s16 *)((u8 *)buf + 0x04) = val; \
|
|
} \
|
|
*(s16 *)((u8 *)buf + 0x06) = *(u16 *)((u8 *)arg0 + 0x32) + var_s1 * 0xC; \
|
|
if (var_s1 != 0) { \
|
|
*(s16 *)((u8 *)buf + 0x06) = *(s16 *)((u8 *)buf + 0x06) + var_s1 * 2; \
|
|
} \
|
|
*(s16 *)((u8 *)buf + 0x08) = 0xC; \
|
|
*(s16 *)((u8 *)buf + 0x0A) = 0xC; \
|
|
*(u8 *)((u8 *)buf + 0x0E) = 0xF0; \
|
|
*(u8 *)((u8 *)buf + 0x0F) = 0; \
|
|
func_80052460((s32)buf, arg1, (s32)*(u16 *)((u8 *)arg0 + 0x1A)); \
|
|
}
|
|
|
|
#define DEFINE_func_801298F4() \
|
|
extern unsigned short D_800B99F0; \
|
|
void func_801298F4(void *arg0) { \
|
|
register u8 *a __asm__("$7"); \
|
|
register s32 base4C __asm__("$3"); \
|
|
register u32 b __asm__("$4"); \
|
|
register u16 f38 __asm__("$6"); \
|
|
register u16 f3E __asm__("$5"); \
|
|
register u32 sh __asm__("$2"); \
|
|
u8 *p; \
|
|
a = (u8 *) arg0; \
|
|
base4C = *(s32 *)(a + 0x4C); \
|
|
p = *(u8 **)(a + 0x50); \
|
|
f38 = *(u16 *)(a + 0x38); \
|
|
f3E = *(u16 *)(a + 0x3E); \
|
|
base4C += 8; \
|
|
p += 4; \
|
|
b = *p++; *(s16 *)(a + 0x2) = (u16) b; \
|
|
b = *p++; *(s16 *)(a + 0x4) = (u16) b; \
|
|
b = *p++; *(u8 *)(a + 0x0) = b; \
|
|
b = *p++; *(s32 *)(a + 0x8) = base4C; \
|
|
*(s32 *)(a + 0xC) = (s32) p; \
|
|
*(u8 *)(a + 0x1) = b; \
|
|
sh = ((u32)(u8) *(u8 *)(base4C + 0x6) >> 7) << 0x18; \
|
|
base4C = *(u16 *)(a + 0x3A); \
|
|
b = *(u16 *)(a + 0x3C); \
|
|
*(s16 *)(a + 0x14) = f38; \
|
|
*(s16 *)(a + 0x1A) = f3E; \
|
|
*(s16 *)(a + 0x16) = base4C; \
|
|
*(s16 *)(a + 0x18) = b; \
|
|
*(s32 *)(a + 0x10) = sh | 0x08000000; \
|
|
if (D_800B99F0 == 0) { \
|
|
*(s16 *)(a + 0x1E) = 0; \
|
|
*(s16 *)(a + 0x1C) = 0; \
|
|
} \
|
|
*(u8 *)(a + 0x22) = 0x80; \
|
|
*(u8 *)(a + 0x21) = 0x80; \
|
|
*(u8 *)(a + 0x20) = 0x80; \
|
|
*(s16 *)(a + 0x28) = 0xA0; \
|
|
*(s16 *)(a + 0x2A) = 0x78; \
|
|
*(s32 *)(a + 0x24) = (s32) a; \
|
|
*(s16 *)(a + 0x2E) = 0x1000; \
|
|
*(s16 *)(a + 0x2C) = 0x1000; \
|
|
*(s32 *)(a + 0x30) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80139D04() \
|
|
s32 func_80139D04(s32 a0, s32 a1) { \
|
|
register u8 *p __asm__("$8"); /* $t0 */ \
|
|
register u32 div __asm__("$9"); /* $t1 */ \
|
|
register u32 acc __asm__("$10"); /* $t2 */ \
|
|
register u32 cnt __asm__("$6"); /* $a2 */ \
|
|
register u32 flag __asm__("$7"); /* $a3 */ \
|
|
register u32 param_2 __asm__("$5"); /* $a1 */ \
|
|
u32 q; \
|
|
register u32 rem __asm__("$4"); /* $a0 */ \
|
|
register u32 hi __asm__("$2"); /* $v0 */ \
|
|
register u32 pm __asm__("$3"); /* $v1 */ \
|
|
register u32 dm __asm__("$2"); /* $v0 */ \
|
|
p = (u8 *)a0; \
|
|
param_2 = (u32)a1; \
|
|
div = 10000; \
|
|
acc = 0; \
|
|
flag = 0; \
|
|
cnt = 5; \
|
|
do { \
|
|
q = (param_2 & 0xffff) / (div & 0xffff); \
|
|
hi = acc << 4; \
|
|
acc = q | hi; \
|
|
__asm__ __volatile__("" : : "r"(acc)); \
|
|
if ((flag & 0xffff) == 0) { \
|
|
if ((acc & 0xffff) != 0) { \
|
|
flag = cnt; \
|
|
} \
|
|
if ((flag & 0xffff) != 0) goto store; \
|
|
} else { \
|
|
store: \
|
|
*p = (u8)q; \
|
|
p = p + 1; \
|
|
} \
|
|
pm = param_2 & 0xffff; \
|
|
__asm__ __volatile__("" : : "r"(pm)); \
|
|
dm = div & 0xffff; \
|
|
rem = pm % dm; \
|
|
div = dm / 10; \
|
|
cnt = cnt - 1; \
|
|
param_2 = rem; \
|
|
if ((s32)cnt < 1) { \
|
|
if ((flag & 0xffff) == 0) { \
|
|
*p = 0; \
|
|
flag = flag + 1; \
|
|
} \
|
|
return flag & 0xffff; \
|
|
} \
|
|
} while (1); \
|
|
}
|
|
|
|
#define DEFINE_func_8016B114() \
|
|
extern void func_8016B234(); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016B114(void *arg0) \
|
|
{ \
|
|
s32 s1; \
|
|
u32 state; \
|
|
s32 cv; \
|
|
s1 = *(s32 *)((u8 *)arg0 + 0x20); \
|
|
if ((u32)*(s32 *)((u8 *)arg0 + 0x2C) < 6U) { \
|
|
func_8016B234(); \
|
|
} \
|
|
state = *(u32 *)((u8 *)arg0 + 0x2C); \
|
|
switch (state) { \
|
|
case 6: \
|
|
case 7: \
|
|
cv = *(u8 *)((u8 *)s1 + 0x26) - 0x10; \
|
|
*(u8 *)((u8 *)s1 + 0x26) = cv; \
|
|
*(u8 *)((u8 *)s1 + 0x25) = cv; \
|
|
*(u8 *)((u8 *)s1 + 0x24) = cv; \
|
|
*(u16 *)((u8 *)arg0 + 0xA) = *(u16 *)((u8 *)arg0 + 0xA) - 2; \
|
|
break; \
|
|
case 1: \
|
|
case 5: \
|
|
{ \
|
|
register s32 r26 __asm__("$4"); \
|
|
register s32 r14 __asm__("$2"); \
|
|
register s32 r24 __asm__("$3"); \
|
|
func_800D22E4((s32)arg0); \
|
|
r26 = *(u16 *)((u8 *)arg0 + 0x26); \
|
|
r14 = *(s32 *)((u8 *)arg0 + 0x14); \
|
|
r24 = *(u16 *)((u8 *)arg0 + 0x24); \
|
|
r26 += 1; \
|
|
r14 += 0x18000; \
|
|
r24 -= 0x10; \
|
|
*(s32 *)((u8 *)arg0 + 0x14) = r14; \
|
|
*(u16 *)((u8 *)arg0 + 0x26) = r26; \
|
|
*(u16 *)((u8 *)arg0 + 0x24) = r24; \
|
|
break; \
|
|
} \
|
|
default: \
|
|
{ \
|
|
register s32 d26 __asm__("$2"); \
|
|
register s32 dA __asm__("$3"); \
|
|
register s32 d24 __asm__("$4"); \
|
|
d26 = *(u16 *)((u8 *)arg0 + 0x26); \
|
|
dA = *(u16 *)((u8 *)arg0 + 0xA); \
|
|
d24 = *(u16 *)((u8 *)arg0 + 0x24); \
|
|
d26 += 1; \
|
|
dA -= 2; \
|
|
d24 -= 0x10; \
|
|
*(u16 *)((u8 *)arg0 + 0xA) = dA; \
|
|
*(u16 *)((u8 *)arg0 + 0x26) = d26; \
|
|
*(u16 *)((u8 *)arg0 + 0x24) = d24; \
|
|
break; \
|
|
} \
|
|
} \
|
|
cv = *(s32 *)((u8 *)arg0 + 0x1C) - 1; \
|
|
*(s32 *)((u8 *)arg0 + 0x1C) = cv; \
|
|
if (cv == 0) { \
|
|
((void (*)(s32))func_80146C3C)((s32)arg0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80169A4C() \
|
|
extern s32 func_80017DC4(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern s32 func_80017758(void *a0, void *a1); \
|
|
s32 func_80169A4C(s32 a0, s32 a1) { \
|
|
void *arg0 = (void *)a0; \
|
|
void *arg1 = (void *)a1; \
|
|
u8 buf[0x5C]; /* spans $sp+0x10 .. $sp+0x6B */ \
|
|
u8 *p = buf + 0x38; /* $sp+0x48, passed to first 3 calls */ \
|
|
u8 v1; \
|
|
s8 v0; \
|
|
u16 t2c; \
|
|
register u8 *q __asm__("$4"); /* $sp+0x68, first call a0 */ \
|
|
register s32 m5 __asm__("$3"); /* -5 -> $v1 */ \
|
|
register s32 p5 __asm__("$2"); /* 5 -> $v0 */ \
|
|
q = buf + 0x58; \
|
|
__asm__("" : : "r"(q)); \
|
|
m5 = -5; \
|
|
__asm__("" : : "r"(m5)); \
|
|
p5 = 5; \
|
|
*(s16 *)(buf + 0x18) = p5; /* 0x28 */ \
|
|
*(s16 *)(buf + 0x10) = p5; /* 0x20 */ \
|
|
*(s16 *)(buf + 0x1a) = p5; /* 0x2A */ \
|
|
*(s16 *)(buf + 0x0a) = p5; /* 0x1A */ \
|
|
*(s16 *)(buf + 0x08) = m5; /* 0x18 */ \
|
|
*(s16 *)(buf + 0x00) = m5; /* 0x10 */ \
|
|
*(s16 *)(buf + 0x12) = m5; /* 0x22 */ \
|
|
*(s16 *)(buf + 0x02) = m5; /* 0x12 */ \
|
|
*(s16 *)(buf + 0x1c) = 0; /* 0x2C */ \
|
|
*(s16 *)(buf + 0x14) = 0; /* 0x24 */ \
|
|
*(s16 *)(buf + 0x0c) = 0; /* 0x1C */ \
|
|
*(s16 *)(buf + 0x04) = 0; /* 0x14 */ \
|
|
v1 = *(u8 *)((u8 *)arg0 + 0x30); \
|
|
*(s32 *)(buf + 0x30) = 0x50000000; /* 0x40 */ \
|
|
v0 = (s8)(v1 >> 2); \
|
|
*(u8 *)(buf + 0x2e) = v1; /* 0x3E */ \
|
|
*(u8 *)(buf + 0x2a) = v1; /* 0x3A */ \
|
|
*(u8 *)(buf + 0x26) = v1; /* 0x36 */ \
|
|
*(u8 *)(buf + 0x22) = v1; /* 0x32 */ \
|
|
*(s8 *)(buf + 0x2d) = v0; /* 0x3D */ \
|
|
*(s8 *)(buf + 0x29) = v0; /* 0x39 */ \
|
|
*(s8 *)(buf + 0x25) = v0; /* 0x35 */ \
|
|
*(s8 *)(buf + 0x21) = v0; /* 0x31 */ \
|
|
*(s8 *)(buf + 0x2c) = v0; /* 0x3C */ \
|
|
*(s8 *)(buf + 0x28) = v0; /* 0x38 */ \
|
|
*(s8 *)(buf + 0x24) = v0; /* 0x34 */ \
|
|
*(s8 *)(buf + 0x20) = v0; /* 0x30 */ \
|
|
t2c = *(u16 *)((u8 *)arg0 + 0x2c); \
|
|
*(u16 *)(q + 0x02) = t2c; /* 0x6A */ \
|
|
*(u16 *)(q + 0x00) = t2c; /* 0x68 */ \
|
|
func_80017DC4(q, p); \
|
|
func_80048EAC(arg1, p); \
|
|
*(s32 *)(buf + 0x4c) = (s32)*(s16 *)((u8 *)arg0 + 6); /* 0x5C */ \
|
|
*(s32 *)(buf + 0x50) = (s32)*(s16 *)((u8 *)arg0 + 0xa); /* 0x60 */ \
|
|
*(s32 *)(buf + 0x54) = (s32)*(s16 *)((u8 *)arg0 + 0xe); /* 0x64 */ \
|
|
func_80017758(buf + 0x00, p); \
|
|
*(s16 *)(buf + 0x00) = -7; /* 0x10 */ \
|
|
*(s16 *)(buf + 0x10) = 0; /* 0x20 */ \
|
|
*(s16 *)(buf + 0x08) = 0; /* 0x18 */ \
|
|
*(s16 *)(buf + 0x18) = 7; /* 0x28 */ \
|
|
*(s16 *)(buf + 0x1a) = 0; /* 0x2A */ \
|
|
*(s16 *)(buf + 0x02) = 0; /* 0x12 */ \
|
|
*(s16 *)(buf + 0x0a) = 7; /* 0x1A */ \
|
|
*(s16 *)(buf + 0x12) = -7; /* 0x22 */ \
|
|
func_80017758(buf + 0x00, p); \
|
|
}
|
|
|
|
#define DEFINE_func_8016C74C() \
|
|
extern s32 VectorNormalSS(void *a0, void *a1); \
|
|
void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) { \
|
|
s32 r; s32 lim; s32 sh2; \
|
|
sh2 = (s16)a2; \
|
|
__asm__ __volatile__("" : "=r"(sh2) : "0"(sh2)); \
|
|
__asm__ __volatile__("" : : "r"(a3)); \
|
|
*(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x10) + (*(s16 *)(a1 + 0x0) << sh2); \
|
|
*(s32 *)(a0 + 0x14) = *(s32 *)(a0 + 0x14) + (*(s16 *)(a1 + 0x2) << sh2); \
|
|
*(s32 *)(a0 + 0x18) = *(s32 *)(a0 + 0x18) + (*(s16 *)(a1 + 0x4) << sh2); \
|
|
*(s16 *)(a1 + 0x0) = *(u16 *)(a0 + 0x12); \
|
|
*(s16 *)(a1 + 0x2) = *(u16 *)(a0 + 0x16); \
|
|
*(s16 *)(a1 + 0x4) = *(u16 *)(a0 + 0x1a); \
|
|
lim = *(volatile s32 *)&a4; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
r = ((s32 (*)(void *))VectorNormalSS)((void *)a1); \
|
|
if (lim < r) { \
|
|
*(s32 *)(a0 + 0x10) = *(s16 *)(a1 + 0x0) << (s16)a3; \
|
|
*(s32 *)(a0 + 0x14) = *(s16 *)(a1 + 0x2) << (s16)a3; \
|
|
*(s32 *)(a0 + 0x18) = *(s16 *)(a1 + 0x4) << (s16)a3; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012F68C() \
|
|
extern void func_8012CBCC(s32 a0); \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
extern s32 func_8012BEE8(s32 a0); \
|
|
extern void func_80131C78(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_8012F68C(s32 arg0) { \
|
|
s32 flag; \
|
|
u32 cond; \
|
|
flag = 0; \
|
|
if (!(*(u32 *)(arg0 + 0xC4) & 2) && (*(u32 *)(arg0 + 0xB4) & 1)) { \
|
|
if ((u8)((s32 (*)(s32))func_8012CBCC)(arg0) == 2) { \
|
|
func_80131E00((struct S80131E00 *)arg0, 0x12); \
|
|
return; \
|
|
} \
|
|
if (*(u8 *)(arg0 + 0xC2) != 0) { \
|
|
cond = func_8012BEE8(arg0); \
|
|
} else { \
|
|
cond = *(u16 *)(arg0 + 0x72) & 0x4000; \
|
|
} \
|
|
if (cond != 0) { \
|
|
flag = 1; \
|
|
} \
|
|
if (flag != 0) { \
|
|
func_80131C78(arg0); \
|
|
} \
|
|
} \
|
|
func_80131CA8(arg0, 5); \
|
|
}
|
|
|
|
#define DEFINE_func_80164D4C() \
|
|
extern s32 func_80164E40(void); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80164D4C(void *arg0) { \
|
|
register s32 a __asm__("$16"); \
|
|
register s32 iVar3 __asm__("$17"); \
|
|
s16 sVar1; \
|
|
a = (s32)arg0; \
|
|
iVar3 = *(s32 *)(a + 0x20); \
|
|
if (((s32 (*)(void))func_80164E40)() != 0) { \
|
|
func_80146CA0((void *)a); \
|
|
} else { \
|
|
sVar1 = *(s16 *)(iVar3 + 0x1a) + 0x100; \
|
|
*(s16 *)(iVar3 + 0x1a) = sVar1; \
|
|
*(s16 *)(iVar3 + 0x18) = sVar1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016A890() \
|
|
extern s32 func_8016A8FC(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016A890(s32 arg0) \
|
|
{ \
|
|
s16 *p = *(s16 **)((u8 *)arg0 + 0x34); \
|
|
if (*(s32 *)((u8 *)arg0 + 0x1C) < 4 && *(u16 *)p == 0x14) { \
|
|
((void (*)(void))func_8016A8FC)(); \
|
|
*(s32 *)((u8 *)arg0 + 0x1C) = *(s32 *)((u8 *)arg0 + 0x1C) + 1; \
|
|
} else { \
|
|
((void (*)(s32))func_80146C3C)(arg0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014AB7C() \
|
|
extern void func_80162CCC(void); \
|
|
extern s32 D_8011F9D0; \
|
|
void func_8014AB7C(s32 arg0) { \
|
|
u8 *p; \
|
|
for (p = (u8 *)&D_8011F9D0; p < (u8 *)&D_8011F9D0 + 0x820; p += 0x68) { \
|
|
if (*(u16 *)p == arg0) { \
|
|
((void (*)(u8 *))func_80162CCC)(p); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80165FA4() \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_80020F34(s32 a0, s32 a1); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2) \
|
|
{ \
|
|
s32 buf[8]; \
|
|
func_80013F3C((s32)buf); \
|
|
func_80020F34((s32)buf, *(s32 *)((u8 *)arg0 + 0x20) + 0x18); \
|
|
ApplyMatrixSV(buf, arg1, arg1); \
|
|
ApplyMatrixSV(buf, arg2, arg2); \
|
|
}
|
|
|
|
#define DEFINE_func_801615C4() \
|
|
extern void func_8014ED28(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014FA04(s32 a0); \
|
|
s32 func_801615C4(void * arg0, s32 arg1) \
|
|
{ \
|
|
u32 acc; \
|
|
acc = 0; \
|
|
if (((arg1 & 1) == 0) && (((s32 (*)(void))func_8014ED28)() != 0)) { \
|
|
func_80146D90(arg0); \
|
|
} \
|
|
if (*(s32 *)((u8 *)arg0 + 0x34) > 0) { \
|
|
acc |= ((s32 (*)(s32))func_8014CC28)(arg0); \
|
|
} \
|
|
return acc | ((s32 (*)(s32))func_8014FA04)(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015DD74() \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
int func_8015DD74(int arg0) \
|
|
{ \
|
|
s16 sp18[4]; \
|
|
s32 s0; \
|
|
s0 = *(s32 *)(arg0 + 0x178); \
|
|
if (s0 != 0) { \
|
|
func_8014C1A0(arg0, s0); \
|
|
func_80015978(s0 + 4, (s32 *)sp18); \
|
|
sp18[3] = 0; \
|
|
func_8014C4AC(s0, 9, func_80029AAC(), sp18, \
|
|
*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12)); \
|
|
*(s32 *)(arg0 + 0x178) = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801699D0() \
|
|
extern s32 func_80169A4C(s32 a0, s32 a1); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
void func_801699D0(void *arg0) { \
|
|
s32 temp_v1; \
|
|
temp_v1 = *(s32 *)((u8 *)arg0 + 0x1C); \
|
|
if (temp_v1 < 0xF) { \
|
|
*(s32 *)((u8 *)arg0 + 0x30) = 0xC0 - temp_v1 * 8; \
|
|
func_80169A4C((s32)arg0, (s32)arg0 + 0x38); \
|
|
func_800D22E4((s32)arg0); \
|
|
*(s32 *)((u8 *)arg0 + 0x14) = *(s32 *)((u8 *)arg0 + 0x14) + 0x10000; \
|
|
*(s32 *)((u8 *)arg0 + 0x1C) = *(s32 *)((u8 *)arg0 + 0x1C) + 1; \
|
|
} else { \
|
|
((void (*)(s32))func_80146C3C)((s32)arg0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80148824() \
|
|
extern s32 func_80047D3C(s32 a0); \
|
|
s32 func_80148824(void *arg0) \
|
|
{ \
|
|
register u32 t __asm__("$2"); \
|
|
register s32 hi __asm__("$3"); \
|
|
register s32 lo __asm__("$2"); \
|
|
register s32 chi __asm__("$5"); \
|
|
register s32 clo __asm__("$4"); \
|
|
t = *(u16 *)((u8 *)arg0 + 0xAE); \
|
|
hi = (t >> 8) - 0x80; \
|
|
chi = hi; \
|
|
__asm__ __volatile__("" : : "r"(chi)); \
|
|
lo = (t & 0xFF) - 0x80; \
|
|
clo = lo; \
|
|
if (hi == 0) { \
|
|
if (lo < 0) { \
|
|
return (-clo) & 0xFF; \
|
|
} \
|
|
return clo & 0xFF; \
|
|
} else if (lo == 0) { \
|
|
if (hi < 0) { \
|
|
return (-chi) & 0xFF; \
|
|
} \
|
|
return chi & 0xFF; \
|
|
} \
|
|
hi = hi * hi; \
|
|
chi = lo * lo; \
|
|
return func_80047D3C(hi + chi) & 0xFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80149C08() \
|
|
extern u8 func_8014BEF8(void); \
|
|
extern s32 func_80029178(s32 a0); \
|
|
s32 func_80149C08(s32 arg0) { \
|
|
s32 var_v0; \
|
|
u32 temp; \
|
|
if (*(u8*)(arg0 + 0x223) != 0) { var_v0 = 0; goto end; } \
|
|
if (*(s16*)(arg0 + 0x1C8) != 0) { var_v0 = 0; goto end; } \
|
|
if ((*(u32*)(arg0 + 0x44) & 0x404) != 0) { var_v0 = 0; goto end; } \
|
|
if (((s32(*)(s32))func_8014BEF8)(arg0) == 0) { var_v0 = 0; goto end; } \
|
|
if ((func_80029178(0x89) & 0xFF) == 0) { var_v0 = 0; goto end; } \
|
|
temp = *(u16*)(arg0 + 0xAC) & 0x10; \
|
|
var_v0 = temp != 0; \
|
|
end: \
|
|
return var_v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80160C28() \
|
|
extern s32 func_80161208(); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80160C28(void *arg0) \
|
|
{ \
|
|
s32 p; \
|
|
s32 q; \
|
|
register void *a __asm__("$4"); \
|
|
if (func_80161208() == 0) { \
|
|
*(s32 *)((u8 *)arg0 + 0x238) += 0x1c000; \
|
|
p = *(s32 *)((u8 *)arg0 + 0x20); \
|
|
*(u16 *)((u8 *)p + 0x10) = \
|
|
(*(u16 *)((u8 *)p + 0x10) - *(u16 *)((u8 *)arg0 + 0x23a)) & 0xfff; \
|
|
q = *(s32 *)((u8 *)arg0 + 0x20); \
|
|
if (*(s16 *)((u8 *)q + 0x10) < 0xc00) { \
|
|
a = arg0; \
|
|
__asm__ __volatile__("" : : "r"(a)); \
|
|
*(u16 *)((u8 *)q + 0x10) = 0xc00; \
|
|
*(u16 *)((u8 *)a + 0xb8) = 1; \
|
|
func_80146CA0(a); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016E5F4() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_8012EFB8(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
void func_8016E5F4(s32 arg0) { \
|
|
s32 sp10; \
|
|
func_80015978(arg0 + 4, &sp10); \
|
|
if ((((s32 (*)(s32, s32))func_8012EFB8)((s32)&sp10, (s32)&sp10) & 0xFFFFEFFF) != 0) { \
|
|
((void (*)(s32))func_80146C3C)(arg0); \
|
|
} else { \
|
|
func_80015954((s32)&sp10, arg0 + 4); \
|
|
*(s16 *)((u8 *)arg0 + 0x10) = 0x100; \
|
|
*(s16 *)((u8 *)arg0 + 0x12) = 0; \
|
|
*(s16 *)((u8 *)arg0 + 0x14) = 0; \
|
|
*(s16 *)((u8 *)arg0 + 0x16) = 0x80; \
|
|
*(s16 *)((u8 *)arg0 + 2) = *(u16 *)((u8 *)arg0 + 2) + 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80175590() \
|
|
extern void func_801757A0(s32 a0); \
|
|
extern short D_800B9A02; \
|
|
void func_80175590(void *arg0) { \
|
|
u8 temp_a0; \
|
|
register s16 temp_v1 __asm__("$3"); \
|
|
s32 temp_v0; \
|
|
temp_a0 = *(u8 *)((u8 *)arg0 + 5); \
|
|
temp_v0 = *(u8 *)((u8 *)arg0 + 6) - temp_a0; \
|
|
temp_v1 = -(temp_v0 & 0xFF); \
|
|
*(u8 *)((u8 *)arg0 + 6) = (u8)temp_v0; \
|
|
__asm__ __volatile__("" : : : "memory"); \
|
|
temp_v0 = *(u8 *)((u8 *)arg0 + 6); \
|
|
*(u8 *)((u8 *)arg0 + 5) = (u8)(temp_a0 + 0xFF); \
|
|
*(s16 *)((u8 *)arg0 + 0x10) = temp_v1; \
|
|
*(s16 *)((u8 *)arg0 + 0xC) = temp_v1; \
|
|
*(s16 *)((u8 *)arg0 + 0x16) = (s16)temp_v0; \
|
|
*(s16 *)((u8 *)arg0 + 0x12) = (s16)temp_v0; \
|
|
*(s16 *)((u8 *)arg0 + 0xE) = (s16)temp_v0; \
|
|
*(s16 *)((u8 *)arg0 + 0x14) = (s16)temp_v0; \
|
|
func_801757A0((s32)D_800B9A02); \
|
|
if (*(u8 *)((u8 *)arg0 + 5) == 0) { \
|
|
*(u8 *)((u8 *)arg0 + 8) = 0; \
|
|
*(u8 *)((u8 *)arg0 + 1) = (u8)(*(u8 *)((u8 *)arg0 + 1) + 1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80145C54() \
|
|
extern s32 func_800291B4(s32 arg); \
|
|
extern void func_800291A0(s32, s32); \
|
|
void func_80145C54(void) { \
|
|
register s32 a1 __asm__("$5"); \
|
|
register s32 v1 __asm__("$3"); \
|
|
s32 s0; \
|
|
a1 = func_800291B4(0x4A) & 0xFF; \
|
|
if (a1 >= 0x20) { \
|
|
v1 = a1 + 1; \
|
|
a1 = v1; \
|
|
if ((v1 & 0xF) == 0) { \
|
|
a1 = (u32)v1 >> 4; \
|
|
} \
|
|
s0 = a1 & 0xFF; \
|
|
func_800291A0(0x4A, s0); \
|
|
func_800291A0(0x50, s0); \
|
|
} \
|
|
a1 = func_800291B4(0x4D) & 0xFF; \
|
|
if (a1 >= 0x20) { \
|
|
v1 = a1 + 1; \
|
|
a1 = v1; \
|
|
if ((v1 & 0xF) == 0) { \
|
|
a1 = (u32)v1 >> 4; \
|
|
} \
|
|
func_800291A0(0x4D, a1 & 0xFF); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80149E94() \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_8016F1AC(void); \
|
|
extern s32 func_80149F2C(s32 a0, s32 a1); \
|
|
s32 func_80149E94(s32 arg0) { \
|
|
u8 *p; \
|
|
if ((func_8016F1AC() == 0) && (*(u8 *)(arg0 + 0x1C5) != 0)) { \
|
|
*(u8 *)(arg0 + 0x1C5) = 0; \
|
|
for (p = D_801202A0; p < D_801202A0 + 0x6480; p += 0x10C) { \
|
|
if (func_80149F2C(arg0, (s32)p) != 0) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80142C9C() \
|
|
extern void func_8012CBF4(s32 a0); \
|
|
void func_80142C9C(s32 * arg0) \
|
|
{ \
|
|
u32 uVar1; \
|
|
if (*(s16 *)((u8 *)arg0 + 0x102) < 2) { \
|
|
uVar1 = ((s32 (*)(void))func_8012CBF4)(); \
|
|
if (0x180000 < *(s32 *)((u8 *)arg0 + 0x14)) { \
|
|
*(s32 *)((u8 *)arg0 + 0x14) = 0x180000; \
|
|
} \
|
|
if (((uVar1 & 0x6000) != 0) || (0x100 < *(s16 *)((u8 *)arg0 + 0xA))) { \
|
|
if (*(s16 *)((u8 *)arg0 + 0x102) == 0) { \
|
|
*(s32 *)((u8 *)arg0 + 0x14) = 0xFFF80000; \
|
|
} \
|
|
*(s16 *)((u8 *)arg0 + 0x102) = *(s16 *)((u8 *)arg0 + 0x102) + 1; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014A2E4() \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8014A2E4(s32 a0) { \
|
|
register s32 a0v __asm__("$18"); \
|
|
register u32 i __asm__("$17"); \
|
|
register u8 *p __asm__("$16"); \
|
|
a0v = a0; \
|
|
i = 0; \
|
|
p = D_801202A0; \
|
|
do { \
|
|
if (*(u16 *)(p + 0x0) != 0 \
|
|
&& (*(u16 *)(p + 0x5C) & 0x8000) \
|
|
&& *(s16 *)(p + 0xAA) != 0 \
|
|
&& func_8014C278(a0v, (s32)p, 0x30) != 0) { \
|
|
return (s32)p; \
|
|
} \
|
|
i++; \
|
|
p += 0x10C; \
|
|
} while (i < 0x60); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C308() \
|
|
s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { \
|
|
register s32 v0 __asm__("$2"); \
|
|
register s32 v1 __asm__("$3"); \
|
|
if (*(u16 *)((u8 *)arg1 + 0x0) == 0) { \
|
|
return 0; \
|
|
} \
|
|
if (*(s32 *)((u8 *)arg1 + 0x58) == 0) { \
|
|
return 0; \
|
|
} \
|
|
if (*(u16 *)((u8 *)arg1 + 0x5E) != arg2) { \
|
|
if ((*(s32 *)((u8 *)arg1 + 0x5C) & 0xC100) != 0x8000) { \
|
|
return 0; \
|
|
} \
|
|
if ((*(s16 *)((u8 *)arg1 + 0xAE) & (u16)arg3) == 0) { \
|
|
v0 = 1; \
|
|
v1 = 9; \
|
|
if (arg2 == v1) return v0; \
|
|
v1 = 0x11; \
|
|
if (arg2 == v1) return v0; \
|
|
v1 = 0x29; \
|
|
if (arg2 == v1) return v0; \
|
|
v1 = 0xA; \
|
|
if (arg2 == v1) return v0; \
|
|
return *(s32 *)((u8 *)arg0 + 0x178) != arg1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80146B9C() \
|
|
extern u16 D_8011DA28; \
|
|
s32 func_80146B9C(void * arg0) \
|
|
{ \
|
|
register u8 *p __asm__("$6"); \
|
|
register u8 *q __asm__("$5"); \
|
|
u8 *end; \
|
|
p = (u8 *)&D_8011DA28; \
|
|
end = p - 0x9F8; \
|
|
if ((u32)p >= (u32)end) { \
|
|
q = p + 0x30; \
|
|
do { \
|
|
if (*(u16 *)p == 0) { \
|
|
*(s32 *)(q + 0x4) = *(s32 *)((u8 *)arg0 + 0x8); \
|
|
*(s16 *)p = *(u16 *)((u8 *)arg0 + 0x0); \
|
|
*(s16 *)(q - 0x2A) = *(u16 *)((u8 *)arg0 + 0x2); \
|
|
*(s16 *)(q - 0x26) = *(u16 *)((u8 *)arg0 + 0x4); \
|
|
*(s16 *)(q - 0x22) = *(u16 *)((u8 *)arg0 + 0x6); \
|
|
*(s32 *)(q - 0x4) = *(s32 *)((u8 *)arg0 + 0xC); \
|
|
*(s32 *)(q + 0x0) = *(s32 *)((u8 *)arg0 + 0x10); \
|
|
return (s32)p; \
|
|
} \
|
|
p -= 0x58; \
|
|
q -= 0x58; \
|
|
} while ((u32)p >= (u32)end); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80168540() \
|
|
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80166690(s32 a0, s32 a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_80168540(s32 a0) { \
|
|
s32 v0; \
|
|
if (((*(u32 *)(*(s32 *)(a0 + 0x34) + 0x44) & 2) == 0) || \
|
|
(v0 = *(s32 *)(a0 + 0x1c) - 1, *(s32 *)(a0 + 0x1c) = v0, v0 == 0)) { \
|
|
*(s16 *)(a0 + 2) = *(s16 *)(a0 + 2) + 1; \
|
|
func_80166994(a0, 2, 2, 0); \
|
|
} else { \
|
|
func_80166994(a0, 1, 2, (s32)*(s16 *)(a0 + 0x30)); \
|
|
} \
|
|
if ((short)func_80166690(2, 1) == 0) { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014AC10() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern s32 D_8011D030; \
|
|
void func_8014AC10(s32 arg0) { \
|
|
u8 *p; \
|
|
u8 *end; \
|
|
u8 *t; \
|
|
s32 one; \
|
|
void *a0; \
|
|
s32 a1; \
|
|
p = (u8 *)&D_8011D030; \
|
|
t = p + 0xA50; \
|
|
if (p < t) { \
|
|
one = 1; \
|
|
end = t; \
|
|
do { \
|
|
if (*(u16 *)p == arg0) { \
|
|
a0 = *(void **)(p + 0x20); \
|
|
if (a0 != 0) { \
|
|
a1 = 0x38; \
|
|
if (*(u16 *)a0 == one) { \
|
|
a1 = 0x84; \
|
|
} \
|
|
func_80016714(a0, a1); \
|
|
} \
|
|
func_80016714(p, 0x58); \
|
|
} \
|
|
p += 0x58; \
|
|
} while (p < end); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80168328() \
|
|
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80166690(s32 a0, s32 a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_80168328(s32 arg0) { \
|
|
s32 a1; \
|
|
s32 a2; \
|
|
s32 a3; \
|
|
s32 v; \
|
|
if (((*(s32 *)(*(s32 *)(arg0 + 0x34) + 0x44) & 2) == 0) || \
|
|
(v = *(s32 *)(arg0 + 0x1c) - 1, *(s32 *)(arg0 + 0x1c) = v, v == 0)) { \
|
|
a1 = 2; \
|
|
a3 = 0; \
|
|
a2 = *(s16 *)(arg0 + 0x2c); \
|
|
*(s16 *)(arg0 + 2) = *(s16 *)(arg0 + 2) + 1; \
|
|
func_80166994(arg0, a1, a2, a3); \
|
|
} else { \
|
|
a2 = *(s16 *)(arg0 + 0x2c); \
|
|
a3 = *(s16 *)(arg0 + 0x30); \
|
|
a1 = 1; \
|
|
func_80166994(arg0, a1, a2, a3); \
|
|
} \
|
|
if ((s16)func_80166690(*(s16 *)(arg0 + 0x2c), *(s16 *)(arg0 + 0x28)) == 0) { \
|
|
((void (*)(s32))func_80146C3C)(arg0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801756E4() \
|
|
extern void func_80175DA8(s32 a0); \
|
|
extern void func_80175AB8(s32 a0); \
|
|
extern void func_80176144(s32 a0); \
|
|
extern short D_800B9A02; \
|
|
void func_801756E4(s32 arg0) { \
|
|
register s32 a __asm__("$17") = arg0; \
|
|
register short *p __asm__("$16"); \
|
|
s32 f5; \
|
|
s32 sum; \
|
|
s16 neg; \
|
|
s32 b6; \
|
|
p = &D_800B9A02; \
|
|
f5 = *(u8 *)(a + 5); \
|
|
sum = *(u8 *)(a + 6) + f5; \
|
|
neg = -(s16)(sum & 0xFF); \
|
|
*(u8 *)(a + 6) = sum; \
|
|
__asm__ __volatile__("" : : : "memory"); \
|
|
b6 = *(u8 *)(a + 6); \
|
|
*(u8 *)(a + 5) = (u8)f5 + 0xFF; \
|
|
*(s16 *)(a + 0x10) = neg; \
|
|
*(s16 *)(a + 0xc) = neg; \
|
|
*(u16 *)(a + 0x16) = b6; \
|
|
*(u16 *)(a + 0x12) = b6; \
|
|
*(u16 *)(a + 0xe) = b6; \
|
|
*(u16 *)(a + 0x14) = b6; \
|
|
func_80175DA8(*p); \
|
|
func_80175AB8(*p); \
|
|
func_80176144(*p); \
|
|
if (*(u8 *)(a + 5) == 0) { \
|
|
*(u8 *)(a + 8) = 0; \
|
|
*(u8 *)(a + 1) = *(u8 *)(a + 1) + 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017209C() \
|
|
extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80172170(s32 a0, s32 a1); \
|
|
s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3) { \
|
|
s32 ret; \
|
|
register s32 ang __asm__("$3"); /* $v1 */ \
|
|
register s32 a3p __asm__("$19"); /* $s3 = arg3 */ \
|
|
register s32 a2p __asm__("$20"); /* $s4 = arg2 */ \
|
|
a3p = arg3; \
|
|
a2p = arg2; \
|
|
ret = func_8017248C((s32)arg0, (s32)arg1); \
|
|
if (ret != 0) { \
|
|
func_80146D90((s32)arg0); \
|
|
return ret; \
|
|
} \
|
|
ang = (ratan2((s32)*(s16 *)((u8 *)arg1 + 0) - (s32)*(s16 *)((u8 *)arg0 + 6), \
|
|
(s32)*(s16 *)((u8 *)arg1 + 4) - (s32)*(s16 *)((u8 *)arg0 + 0xE)) \
|
|
+ 0x800) & 0xFFF; \
|
|
if (a3p != 0) { \
|
|
ang = (s16)func_80012DBC((s32)*(s16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12), \
|
|
ang, (s16)a3p, 1); \
|
|
} \
|
|
*(s16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12) = ang; \
|
|
func_80172170((s32)arg0, a2p & 0xFF); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801696D8() \
|
|
extern s32 func_80017DC4(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern s32 func_80017758(void *a0, void *a1); \
|
|
void func_801696D8(s32 a0, s32 a1) { \
|
|
void *arg0 = (void *)a0; \
|
|
void *arg1 = (void *)a1; \
|
|
u8 buf[0x5C]; /* spans $sp+0x10 .. $sp+0x6B */ \
|
|
u8 *p = buf + 0x38; /* $sp+0x48, passed to first 3 calls */ \
|
|
u8 v1; \
|
|
u8 v0; \
|
|
u8 a1b; \
|
|
u16 t2c; \
|
|
u8 *q = buf + 0x58; /* $sp+0x68, first call a0 */ \
|
|
*(s16 *)(buf + 0x00) = 8; /* 0x10 */ \
|
|
*(s16 *)(buf + 0x10) = 0; /* 0x20 */ \
|
|
*(s16 *)(buf + 0x08) = 0; /* 0x18 */ \
|
|
*(s16 *)(buf + 0x18) = -8; /* 0x28 */ \
|
|
*(s16 *)(buf + 0x0a) = 2; /* 0x1A */ \
|
|
*(s16 *)(buf + 0x1a) = 0; /* 0x2A */ \
|
|
*(s16 *)(buf + 0x02) = 0; /* 0x12 */ \
|
|
*(s16 *)(buf + 0x12) = -2; /* 0x22 */ \
|
|
*(s16 *)(buf + 0x1c) = 0; /* 0x2C */ \
|
|
*(s16 *)(buf + 0x14) = 0; /* 0x24 */ \
|
|
*(s16 *)(buf + 0x0c) = 0; /* 0x1C */ \
|
|
*(s16 *)(buf + 0x04) = 0; /* 0x14 */ \
|
|
v1 = *(u8 *)((u8 *)arg0 + 0x30); \
|
|
*(s32 *)(buf + 0x30) = 0x50000000; /* 0x40 */ \
|
|
v0 = (u8)(v1 >> 1); \
|
|
a1b = (u8)(v0 >> 2); \
|
|
*(u8 *)(buf + 0x2a) = v1; /* 0x3A */ \
|
|
*(u8 *)(buf + 0x26) = v1; /* 0x36 */ \
|
|
*(u8 *)(buf + 0x2e) = v0; /* 0x3E */ \
|
|
*(u8 *)(buf + 0x22) = v0; /* 0x32 */ \
|
|
*(u8 *)(buf + 0x29) = v0; /* 0x39 */ \
|
|
*(u8 *)(buf + 0x25) = v0; /* 0x35 */ \
|
|
*(u8 *)(buf + 0x28) = v0; /* 0x38 */ \
|
|
*(u8 *)(buf + 0x24) = v0; /* 0x34 */ \
|
|
*(u8 *)(buf + 0x2d) = a1b; /* 0x3D */ \
|
|
*(u8 *)(buf + 0x21) = a1b; /* 0x31 */ \
|
|
*(u8 *)(buf + 0x2c) = a1b; /* 0x3C */ \
|
|
*(u8 *)(buf + 0x20) = a1b; /* 0x30 */ \
|
|
t2c = *(u16 *)((u8 *)arg0 + 0x2c); \
|
|
*(u16 *)(q + 0x02) = t2c; /* 0x6A */ \
|
|
*(u16 *)(q + 0x00) = t2c; /* 0x68 */ \
|
|
func_80017DC4(q, p); \
|
|
func_80048EAC(arg1, p); \
|
|
*(s32 *)(buf + 0x4c) = (s32)*(s16 *)((u8 *)arg0 + 6); /* 0x5C */ \
|
|
*(s32 *)(buf + 0x50) = (s32)*(s16 *)((u8 *)arg0 + 0xa); /* 0x60 */ \
|
|
*(s32 *)(buf + 0x54) = (s32)*(s16 *)((u8 *)arg0 + 0xe); /* 0x64 */ \
|
|
func_80017758(buf + 0x00, p); \
|
|
*(s16 *)(buf + 0x00) = 2; /* 0x10 */ \
|
|
*(s16 *)(buf + 0x10) = 0; /* 0x20 */ \
|
|
*(s16 *)(buf + 0x08) = 0; /* 0x18 */ \
|
|
*(s16 *)(buf + 0x18) = -2; /* 0x28 */ \
|
|
*(s16 *)(buf + 0x0a) = 8; /* 0x1A */ \
|
|
*(s16 *)(buf + 0x1a) = 0; /* 0x2A */ \
|
|
*(s16 *)(buf + 0x02) = 0; /* 0x12 */ \
|
|
*(s16 *)(buf + 0x12) = -8; /* 0x22 */ \
|
|
func_80017758(buf + 0x00, p); \
|
|
}
|
|
|
|
#define DEFINE_func_8016E460() \
|
|
extern s32 func_80017DC4(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern s32 func_80017758(void *a0, void *a1); \
|
|
void func_8016E460(void *arg0, void *arg1) { \
|
|
u8 buf[0x5C]; /* spans $sp+0x10 .. $sp+0x6B */ \
|
|
u8 *p = buf + 0x38; /* $sp+0x48, passed to calls */ \
|
|
u8 *q = buf + 0x58; /* $sp+0x68, first call a0 */ \
|
|
u8 v1; \
|
|
u8 v0; \
|
|
u8 w; \
|
|
u16 t2c; \
|
|
s32 c7 = 7; \
|
|
s32 cm7 = -7; \
|
|
s32 c3 = 3; \
|
|
s32 cm3 = -3; \
|
|
*(s16 *)(buf + 0x00) = c7; /* 0x10 */ \
|
|
*(s16 *)(buf + 0x10) = 0; /* 0x20 */ \
|
|
*(s16 *)(buf + 0x08) = 0; /* 0x18 */ \
|
|
*(s16 *)(buf + 0x18) = cm7; /* 0x28 */ \
|
|
*(s16 *)(buf + 0x0a) = c3; /* 0x1A */ \
|
|
*(s16 *)(buf + 0x1a) = 0; /* 0x2A */ \
|
|
*(s16 *)(buf + 0x02) = 0; /* 0x12 */ \
|
|
*(s16 *)(buf + 0x12) = cm3; /* 0x22 */ \
|
|
*(s16 *)(buf + 0x1c) = 0; /* 0x2C */ \
|
|
*(s16 *)(buf + 0x14) = 0; /* 0x24 */ \
|
|
*(s16 *)(buf + 0x0c) = 0; /* 0x1C */ \
|
|
*(s16 *)(buf + 0x04) = 0; /* 0x14 */ \
|
|
v1 = *(u8 *)((u8 *)arg0 + 0x30); \
|
|
*(s32 *)(buf + 0x30) = 0x50000000; /* 0x40 */ \
|
|
v0 = v1 >> 2; \
|
|
w = v0 >> 2; \
|
|
*(u8 *)(buf + 0x2a) = v1; /* 0x3A */ \
|
|
*(u8 *)(buf + 0x26) = v1; /* 0x36 */ \
|
|
*(u8 *)(buf + 0x28) = v1; /* 0x38 */ \
|
|
*(u8 *)(buf + 0x24) = v1; /* 0x34 */ \
|
|
*(u8 *)(buf + 0x29) = v0; /* 0x39 */ \
|
|
*(u8 *)(buf + 0x25) = v0; /* 0x35 */ \
|
|
*(u8 *)(buf + 0x2c) = w; /* 0x3C */ \
|
|
*(u8 *)(buf + 0x20) = w; /* 0x30 */ \
|
|
*(u8 *)(buf + 0x2e) = w; /* 0x3E */ \
|
|
*(u8 *)(buf + 0x22) = w; /* 0x32 */ \
|
|
*(u8 *)(buf + 0x2d) = w; /* 0x3D */ \
|
|
*(u8 *)(buf + 0x21) = w; /* 0x31 */ \
|
|
t2c = *(u16 *)((u8 *)arg0 + 0x2c); \
|
|
*(u16 *)(q + 0x02) = t2c; /* 0x6A */ \
|
|
*(u16 *)(q + 0x00) = t2c; /* 0x68 */ \
|
|
func_80017DC4(q, p); \
|
|
func_80048EAC(arg1, p); \
|
|
*(s32 *)(buf + 0x4c) = (s32)*(s16 *)((u8 *)arg0 + 6); /* 0x5C */ \
|
|
*(s32 *)(buf + 0x50) = (s32)*(s16 *)((u8 *)arg0 + 0xa); /* 0x60 */ \
|
|
*(s32 *)(buf + 0x54) = (s32)*(s16 *)((u8 *)arg0 + 0xe); /* 0x64 */ \
|
|
func_80017758(buf + 0x00, p); \
|
|
*(s16 *)(buf + 0x00) = c3; /* 0x10 */ \
|
|
*(s16 *)(buf + 0x10) = 0; /* 0x20 */ \
|
|
*(s16 *)(buf + 0x08) = 0; /* 0x18 */ \
|
|
*(s16 *)(buf + 0x18) = cm3; /* 0x28 */ \
|
|
*(s16 *)(buf + 0x0a) = c7; /* 0x1A */ \
|
|
*(s16 *)(buf + 0x1a) = 0; /* 0x2A */ \
|
|
*(s16 *)(buf + 0x02) = 0; /* 0x12 */ \
|
|
*(s16 *)(buf + 0x12) = cm7; /* 0x22 */ \
|
|
func_80017758(buf + 0x00, p); \
|
|
}
|
|
|
|
#define DEFINE_func_8015AD08() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8015AD3C(void *a0); \
|
|
void func_8015AD08(void *arg0) \
|
|
{ \
|
|
func_80147078((s32 *)arg0, 2); \
|
|
func_8015AD3C(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015D4B4() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern s32 func_8015D4E8(s16 *a0); \
|
|
void func_8015D4B4(s16 *a0) { \
|
|
func_80147078((s32 *)a0, 0xD); \
|
|
func_8015D4E8(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015E184() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern s32 func_8015E1B8(s32 a0); \
|
|
void func_8015E184(s32 *arg0) \
|
|
{ \
|
|
func_80147078(arg0, 0x10); \
|
|
func_8015E1B8((s32)arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015EDD4() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern s32 func_8015EE08(s32 a0); \
|
|
void func_8015EDD4(s32 *arg0) { \
|
|
func_80147078(arg0, 0x12); \
|
|
func_8015EE08((s32)arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F7A0() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern s32 func_8015F7D4(s32 a0); \
|
|
void func_8015F7A0(s32 *arg0) { \
|
|
func_80147078(arg0, 0x15); \
|
|
func_8015F7D4((s32)arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160B00() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern s32 func_80160B34(s32 a0); \
|
|
void func_80160B00(s32 *arg0) { \
|
|
func_80147078(arg0, 0x1D); \
|
|
func_80160B34((s32)arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015ACC4() \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8014ED28(s32 a0); \
|
|
extern void func_8014FA04(s32 a0); \
|
|
extern void func_8015ADB0(s32 a0); \
|
|
void func_8015ACC4(s32 *arg0) { \
|
|
func_80147078(arg0, 2); \
|
|
func_8014ED28((s32)arg0); \
|
|
func_8014FA04((s32)arg0); \
|
|
func_8015ADB0((s32)arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015430C() \
|
|
extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80154418(void *a0); \
|
|
void func_8015430C(u8 *arg0, s32 arg1, s32 arg2) { \
|
|
*(s32 *)(arg0 + 0xB4) = arg1; \
|
|
*(s16 *)(arg0 + 0xBA) = 1; \
|
|
*(s16 *)(arg0 + 0xB8) = 1; \
|
|
*(s8 *)(arg0 + 0xBC) = arg2; \
|
|
*(s8 *)(arg0 + 0xBD) = arg2; \
|
|
*(s8 *)(arg0 + 0xDC) = func_801549F8((s32)arg0, arg1, arg2); \
|
|
func_80154418(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014DCE0() \
|
|
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2) { \
|
|
struct Quad buf; \
|
|
register s32 i __asm__("$17"); \
|
|
register s32 s0 __asm__("$16"); \
|
|
buf = *(struct Quad *)(*(u32 *)(arg0 + 0x58) & 0xFFFFFFF); \
|
|
i = 0; \
|
|
s0 = arg2; \
|
|
do { \
|
|
s32 r; \
|
|
r = func_80135888(*(s32 *)(arg0 + 0x20), (s32)&buf, arg1, s0); \
|
|
i += 1; \
|
|
if (r == 0) { \
|
|
s0 += 8; \
|
|
} else { \
|
|
return 1; \
|
|
} \
|
|
} while (i < 3); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80147514() \
|
|
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_800129CC(s32 a0, s32 a1); \
|
|
void func_80147514(s32 arg0) { \
|
|
s16 buf[8]; \
|
|
*(struct V4s80147514 *)buf = *(struct V4s80147514 *)(arg0 + 0x120); \
|
|
if (((u16)buf[0] | (u16)buf[1] | (u16)buf[2]) == 0) { \
|
|
buf[1] = -0xFFF; \
|
|
} \
|
|
if (*(s16 *)(arg0 + 0x12E) != 0) { \
|
|
buf[0] = (u16)buf[0] + *(u16 *)(arg0 + 0x128); \
|
|
buf[1] = (u16)buf[1] + *(u16 *)(arg0 + 0x12A); \
|
|
buf[2] = (u16)buf[2] + *(u16 *)(arg0 + 0x12C); \
|
|
} \
|
|
*(s16 *)(arg0 + 0x118) = func_80012C6C(*(s16 *)(arg0 + 0x118), buf[0], 8); \
|
|
*(s16 *)(arg0 + 0x11A) = func_80012C6C(*(s16 *)(arg0 + 0x11A), buf[1], 8); \
|
|
*(s16 *)(arg0 + 0x11C) = func_80012C6C(*(s16 *)(arg0 + 0x11C), buf[2], 8); \
|
|
buf[0] = *(u16 *)(arg0 + 0x118); \
|
|
buf[1] = *(u16 *)(arg0 + 0x11A); \
|
|
buf[2] = *(u16 *)(arg0 + 0x11C); \
|
|
func_800129CC((s32)buf, arg0 + 0x100); \
|
|
}
|
|
|
|
#define DEFINE_func_80148C9C() \
|
|
s32 func_80148C9C(s32 a0, s32 a1) { \
|
|
Obj *p = *(Obj **)((s32)a0 + 0x20); \
|
|
p->field_0x12 = (a1 + 0x400) & 0xFFF; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801593E4() \
|
|
void func_801593E4(A801593E4 *a0) { \
|
|
S801593E4 *v1 = a0->p20; \
|
|
v1->field12 = (v1->field12 + 0x16) & 0xFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016B964() \
|
|
void func_8016B964(SrcB964 *a0, DstB964 *a1) { \
|
|
a1->h8 = a0->h6; \
|
|
a1->hA = a0->hA; \
|
|
a1->hC = 3; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C118() \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014C118(void * a0, s32 a1, s32 a2) \
|
|
{ \
|
|
Entry8014C118 *p; \
|
|
s32 i; \
|
|
i = 0; \
|
|
a2 = (s16)a2; \
|
|
p = (Entry8014C118 *)D_801202A0; \
|
|
do { \
|
|
if (p->unk0 == a1) { \
|
|
if (p->unk70 == a2) { \
|
|
return (s32)p; \
|
|
} \
|
|
} \
|
|
i++; \
|
|
p++; \
|
|
} while ((u32)i < 0x60); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80153978() \
|
|
extern s32 func_80133784(s32 a0, void *src, s32 dst); \
|
|
extern s32 func_801539F8(s32 a0, void *a1); \
|
|
s32 func_80153978(s32 a0, u16 *src) { \
|
|
Buf80153978 buf; \
|
|
buf.unk0 = src[0]; \
|
|
buf.unk2 = src[1] + 0x1F; \
|
|
buf.unk4 = src[2]; \
|
|
if (func_80133784(0, src, (s32)&buf) == 0x2000 && \
|
|
buf.unk6 == 0 && \
|
|
func_801539F8(a0, &buf) == 0) { \
|
|
return 0; \
|
|
} \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8013E4B4() \
|
|
extern void func_8012C750(void *a0); \
|
|
extern u8 *D_801274C8; \
|
|
extern void *D_801274CC; \
|
|
void func_8013E4B4(void) { \
|
|
u8 *s0; \
|
|
Ent *p; \
|
|
s32 i; \
|
|
s0 = D_801274C8; \
|
|
if (s0 != 0) { \
|
|
if (*(u16 *)(s0 + 6) != 0) { \
|
|
do { \
|
|
func_8012C750(s0); \
|
|
s0 += 0x14; \
|
|
} while (*(u16 *)(s0 + 6) != 0); \
|
|
} \
|
|
} \
|
|
s0 = (u8 *)D_801274CC; \
|
|
if (s0 != 0) { \
|
|
p = (Ent *)(s0 + 6); \
|
|
for (i = 0; p[i].guard != 0; i++) { \
|
|
p[i].field &= 0x7FFF; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014A238() \
|
|
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014A238(s32 arg0) { \
|
|
u32 i; \
|
|
Entry8014A238 *p; \
|
|
for (i = 0; i < 0x60; i++) { \
|
|
p = &((Entry8014A238 *)D_801202A0)[i]; \
|
|
if ((p->f_0 != 0) && (p->f_AA != 0) && \
|
|
(func_8014C278(arg0, (s32)p, 0x30) != 0) && \
|
|
(func_8014C2B0((void *)arg0, (void *)p, 0x200) != 0)) { \
|
|
return (s32)p; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017AD0C() \
|
|
extern void MoveImage(void *a0, s32 a1, s32 a2); \
|
|
s32 func_8017AD0C(s32 arg0) \
|
|
{ \
|
|
Rect rect; \
|
|
s32 var_v0; \
|
|
s32 var_v1; \
|
|
arg0 = arg0 - 1; \
|
|
rect.x = ((arg0 & 3) * 0x10) + 0x280; \
|
|
var_v0 = arg0; \
|
|
if (arg0 < 0) { \
|
|
var_v0 = arg0 + 3; \
|
|
} \
|
|
rect.y = (var_v0 >> 2) + 0x1F8; \
|
|
rect.w = 0x10; \
|
|
rect.h = 1; \
|
|
MoveImage(&rect, 0x160, 0x1C9); \
|
|
if (arg0 == 0x18) { \
|
|
rect.x = 0x2C0; \
|
|
rect.y = 0x1D0; \
|
|
} else { \
|
|
rect.x = ((arg0 & 7) * 8) + 0x280; \
|
|
var_v1 = arg0; \
|
|
if (arg0 < 0) { \
|
|
var_v1 = arg0 + 7; \
|
|
} \
|
|
rect.y = (var_v1 >> 3) * 0x28 + 0x180; \
|
|
} \
|
|
rect.w = 0x20; \
|
|
rect.h = 0x28; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
MoveImage(&rect, 0x1C8, 0x190); \
|
|
}
|
|
|
|
#define DEFINE_func_80168664() \
|
|
extern Blk20 D_800AE620; \
|
|
extern s32 RotMatrixX(s32 a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80168664(void *arg0) { \
|
|
s32 iVar3; \
|
|
void *blk; \
|
|
iVar3 = *(s32 *)((u8 *)arg0 + 0x34); \
|
|
*(s32 *)((u8 *)arg0 + 0x1c) = 0x20; \
|
|
*(s16 *)((u8 *)arg0 + 0x10) = 0x80; \
|
|
*(s16 *)((u8 *)arg0 + 0x12) = 0; \
|
|
*(s32 *)((u8 *)arg0 + 0x30) = 0x1800; \
|
|
*(Blk20 *)((u8 *)arg0 + 0x38) = D_800AE620; \
|
|
blk = (u8 *)arg0 + 0x38; \
|
|
RotMatrixX(0x400, blk); \
|
|
func_80048EAC((void *)(*(s32 *)((u8 *)iVar3 + 0x20) + 0x34), blk); \
|
|
func_801670E4((s32)arg0, -6, -0x44, -0x18); \
|
|
*(s16 *)((u8 *)arg0 + 2) = *(s16 *)((u8 *)arg0 + 2) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80155F80() \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
s32 func_80155F80(s32 a0) \
|
|
{ \
|
|
*(u32 *)(a0 + 0x44) = *(u32 *)(a0 + 0x44) & ~2; \
|
|
func_80154A74(a0, 0x11); \
|
|
}
|
|
|
|
#define DEFINE_func_8015CC0C() \
|
|
void func_8015CC0C(s32 *param_1) { \
|
|
func_80147078(param_1, 0xB); \
|
|
func_8015CCD0(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_8014C168() \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014C168(s32 * param_1, s32 param_2) \
|
|
{ \
|
|
u32 i; \
|
|
u16 *p; \
|
|
i = 0; \
|
|
p = (u16 *)D_801202A0; \
|
|
for (; i < 0x60; i++) { \
|
|
if (*p == param_2) { \
|
|
return p; \
|
|
} \
|
|
p = (u16 *)((u8 *)p + 0x10C); \
|
|
} \
|
|
return (u16 *)0; \
|
|
}
|
|
|
|
#define DEFINE_func_8016E918() \
|
|
extern s32 D_80115218; \
|
|
void func_8016E918(short param_1, short param_2) { \
|
|
char *p; \
|
|
if (param_2 < 10) { \
|
|
p = (char *)&D_80115218 + ((s32)param_1 << 5); \
|
|
p[0] = param_1 + 1; \
|
|
p[3] = param_2; \
|
|
p[1] = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015CCD0() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern s32 func_801725E0(u8 *a0); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
s32 func_8015CCD0(s32 param_1) \
|
|
{ \
|
|
func_80154150(param_1, 0x14); \
|
|
*(s16 *)(param_1 + 0xB8) = 0; \
|
|
func_801725E0((u8 *)param_1); \
|
|
*(s32 *)(param_1 + 0x234) = 0xF; \
|
|
func_80147324(0x6A7); \
|
|
func_80146CA0((void *)param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_8016C83C() \
|
|
extern s32 VectorNormalSS(void *a0, void *a1); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern short func_8016CF04(s32 a0, s32 a1); \
|
|
void func_8016C83C(s32 a0) { \
|
|
s16 d[20]; \
|
|
s32 a1 = *(s32 *)(a0 + 0x34); \
|
|
s32 v0 = *(s32 *)(a0 + 0x1C) - 1; \
|
|
s32 dist; \
|
|
*(s32 *)(a0 + 0x1C) = v0; \
|
|
if (v0 == 0) { \
|
|
*(s16 *)(a0 + 2) = 4; \
|
|
func_8016CF04(a0, 2); \
|
|
return; \
|
|
} \
|
|
d[0] = *(u16 *)(a1 + 6) - *(u16 *)(a0 + 6); \
|
|
d[1] = *(u16 *)(a1 + 0xA) - *(u16 *)(a0 + 0xA); \
|
|
d[2] = *(u16 *)(a1 + 0xE) - *(u16 *)(a0 + 0xE); \
|
|
dist = VectorNormalSS(d, d); \
|
|
if (dist < 0x790) { \
|
|
*(s16 *)(a0 + 2) = 4; \
|
|
func_8016CF04(a0, 2); \
|
|
return; \
|
|
} \
|
|
*(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x10) + d[0] * 0x40; \
|
|
*(s32 *)(a0 + 0x14) = *(s32 *)(a0 + 0x14) + d[1] * 0x40; \
|
|
*(s32 *)(a0 + 0x18) = *(s32 *)(a0 + 0x18) + d[2] * 0x40; \
|
|
d[0] = *(u16 *)(a0 + 0x12); \
|
|
d[1] = *(u16 *)(a0 + 0x16); \
|
|
d[2] = *(u16 *)(a0 + 0x1A); \
|
|
dist = VectorNormalSS(d, d); \
|
|
{ \
|
|
s32 lim = 0x1000; \
|
|
if (lim < dist) { \
|
|
*(s32 *)(a0 + 0x10) = (s32)d[0] << 10; \
|
|
*(s32 *)(a0 + 0x14) = (s32)d[1] << 10; \
|
|
*(s32 *)(a0 + 0x18) = (s32)d[2] << 10; \
|
|
} \
|
|
} \
|
|
func_800D22E4(a0); \
|
|
func_8016CF04(a0, 1); \
|
|
}
|
|
|
|
#define DEFINE_func_801539F8() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern void *memcpy(void *dst, const void *src, u32 n); \
|
|
s32 func_801539F8(s32 a0, void * a1) \
|
|
{ \
|
|
u8 buf1[8]; \
|
|
u8 buf2[8]; \
|
|
u8 buf3[8]; \
|
|
s32 r1, r2, r3; \
|
|
memcpy(buf1, (void *)(a0 + 0xA0), 8); \
|
|
memcpy(buf2, a1, 8); \
|
|
*(s16 *)(buf1 + 2) -= 4; \
|
|
r1 = func_80133784(0, buf1, buf2); \
|
|
if (r1 != 0x2000) { \
|
|
return 1; \
|
|
} \
|
|
memcpy((void *)buf1, (void *)(s32)buf2, 8); \
|
|
*(s16 *)(buf2 + 2) += 8; \
|
|
r2 = func_80133784(0, buf1, buf2); \
|
|
if (r2 != r1) { \
|
|
return 1; \
|
|
} \
|
|
r3 = func_80133784(2, buf2, buf3); \
|
|
if (r3 != r2) { \
|
|
return 1; \
|
|
} \
|
|
*(s16 *)(a0 + 0x88) = *(s16 *)(buf2 + 0); \
|
|
*(s16 *)(a0 + 0x8A) = *(s16 *)(buf2 + 2); \
|
|
*(s16 *)(a0 + 0x8C) = *(s16 *)(buf2 + 4); \
|
|
memcpy((void *)(a0 + 0x90), (void *)(a0 + 0x88), 8); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80153C44() \
|
|
extern void func_80153C74(s16 a0, s16 a1); \
|
|
extern s16 D_8011DB18; \
|
|
void func_80153C44(int a0, int a1, s16 a2) \
|
|
{ \
|
|
((void (*)(int, int))func_80153C74)(a0, a1); \
|
|
D_8011DB18 = a2; \
|
|
}
|
|
|
|
#define DEFINE_func_8015CF58() \
|
|
extern void func_8015D01C(); \
|
|
void func_8015CF58(s32 *param_1) \
|
|
{ \
|
|
func_80147078(param_1, 0xC); \
|
|
((void (*)(s32 *))func_8015D01C)(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_801711FC() \
|
|
extern void func_80171238(void); \
|
|
void func_801711FC(u8 *param_1) { \
|
|
func_801719A4((int)param_1, 1); \
|
|
func_80171990(param_1); \
|
|
((void (*)(int))func_80171238)((int)param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_80161BE0() \
|
|
extern int func_801497A8(void); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80149864(void); \
|
|
int func_80161BE0(void *param_1) \
|
|
{ \
|
|
if (func_801497A8() == 0) { \
|
|
return 0; \
|
|
} \
|
|
func_801599A4(param_1); \
|
|
((void (*)(void *))func_80149864)(param_1); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_801683D8() \
|
|
extern void func_80146C3C(void); \
|
|
void func_801683D8(s32 a0) { \
|
|
func_80166994(a0, 2, *(short *)(a0 + 0x2c), 0); \
|
|
if ((short)func_80166690(*(short *)(a0 + 0x2c), *(short *)(a0 + 0x28)) == 0) { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801710DC() \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_80171928(void *a0); \
|
|
extern void *D_8011F738; \
|
|
extern u16 D_8011F73A; \
|
|
void func_801710DC(u8 * arg0) \
|
|
{ \
|
|
((M2C_UNK (*)(u16, u16))func_8002D4C8)(D_8011F738, D_8011F73A); \
|
|
((M2C_UNK (*)(s32))func_80171928)(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_801612B8() \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
s32 func_801612B8(void * a0, s32 a1) \
|
|
{ \
|
|
register s32 p __asm__("$17"); \
|
|
register s32 v0 __asm__("$16"); \
|
|
s32 v1; \
|
|
p = a0; \
|
|
if ((a1 & 1) == 0) { \
|
|
func_8014E934(p); \
|
|
} \
|
|
v0 = ((s32 (*)(s32))func_8014CC28)(p); \
|
|
__asm__ __volatile__("" : : "r"(v0)); \
|
|
v1 = ((s32 (*)(s32))func_8014F3E8)(p); \
|
|
return v0 | v1; \
|
|
}
|
|
|
|
#define DEFINE_func_8015616C() \
|
|
extern S801563EC *func_801563EC(u16 idx); \
|
|
extern s32 func_80029B4C(s32 a0, s32 a1); \
|
|
extern s32 func_80029BC8(s32 a0, s32 a1); \
|
|
extern s32 func_80029C44(s32 a0, s32 a1); \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern s32 func_8015640C(s32 a0, s32 a1); \
|
|
extern s32 rand(void); \
|
|
extern u16 D_8012693A; \
|
|
extern u16 D_801152B8; \
|
|
u32 func_8015616C(s32 param_1, u16 param_2) { \
|
|
u16 *p; \
|
|
u16 uVar1, uVar2, uVar3, uVar4, uVar5, uVar7; \
|
|
u32 base; \
|
|
u32 uVar12; \
|
|
s16 sVar11; \
|
|
p = ((u16 * (*)(s32))func_801563EC)(param_2 & 0xFFFF); \
|
|
uVar1 = p[0]; \
|
|
uVar2 = p[1]; \
|
|
uVar3 = p[2]; \
|
|
uVar4 = p[3]; \
|
|
uVar5 = p[4]; \
|
|
uVar7 = p[5]; \
|
|
base = uVar1 & 0xFFF; \
|
|
if (uVar1 & 0x4000) { \
|
|
uVar12 = func_80029B4C(base, (s32)(s16)uVar2) \
|
|
+ func_80029BC8((s32)(s16)uVar3, (s32)(s16)uVar4); \
|
|
} else if (uVar1 & 0x2000) { \
|
|
uVar12 = func_80029C44(base, (s32)(s16)uVar2); \
|
|
} else { \
|
|
uVar12 = base + rand() % (uVar2 + 1); \
|
|
} \
|
|
D_8012693A = uVar5; \
|
|
if ((u8)func_80029178(0x81)) { \
|
|
D_8012693A = D_8012693A << 1; \
|
|
} \
|
|
sVar11 = 0; \
|
|
if (uVar7 != 0) { \
|
|
if ((u8)func_80029178(0x1A)) { \
|
|
sVar11 = 5; \
|
|
} else if ((u8)func_80029178(0x19)) { \
|
|
sVar11 = 4; \
|
|
} else if ((u8)func_80029178(0x18)) { \
|
|
sVar11 = 3; \
|
|
} else if ((u8)func_80029178(0x17)) { \
|
|
sVar11 = 2; \
|
|
} else if ((u8)func_80029178(0x16)) { \
|
|
sVar11 = 1; \
|
|
} \
|
|
} \
|
|
D_801152B8 = uVar7 + sVar11; \
|
|
if (uVar1 & 0x8000) { \
|
|
uVar12 = func_8015640C(param_1, uVar12 & 0xFFFF); \
|
|
} \
|
|
return uVar12 & 0xFFFF; \
|
|
}
|
|
|
|
#define DEFINE_func_80164530() \
|
|
extern s32 func_8014C59C(void *a0, void *a1); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80047D3C(s32 a0); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern u8 D_801202A0[]; \
|
|
extern u8 D_800AF630[]; \
|
|
void func_80164530(s32 arg0) { \
|
|
register u8 *p __asm__("$17"); \
|
|
register s32 s0 __asm__("$16"); \
|
|
register u8 *unaff_s5 __asm__("$21"); \
|
|
register s32 unaff_s6 __asm__("$22"); \
|
|
register u8 *base __asm__("$23"); \
|
|
s32 iVar9; \
|
|
s16 sVar4; \
|
|
s32 ix, iy, dist; \
|
|
sVar4 = 0x1000; \
|
|
base = D_800AF630; \
|
|
p = D_801202A0; \
|
|
iVar9 = *(s32 *)(arg0 + 0x20); \
|
|
for (; p < D_801202A0 + 0x6480; p += 0x10C) { \
|
|
if ((*(u16 *)(p + 0x5C) & 0x2000) != 0) { \
|
|
s32 r2; \
|
|
s0 = func_8014C59C((void *)arg0, (void *)p); \
|
|
r2 = func_80012A60((s32)(s16)s0, (s32)*(s16 *)(iVar9 + 0x12)); \
|
|
if (((s16)r2 < 0x200) && ((s16)r2 < sVar4)) { \
|
|
unaff_s6 = s0; \
|
|
sVar4 = r2; \
|
|
unaff_s5 = p; \
|
|
} \
|
|
} \
|
|
} \
|
|
if (sVar4 != 0x1000) { \
|
|
*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = \
|
|
(s16)func_80012DBC((s32)*(s16 *)(iVar9 + 0x12), (s32)(s16)unaff_s6, 10, 1); \
|
|
if (*(s16 *)(base + 0xA3D8) == 0x30A0) { \
|
|
u32 uVar7 = *(u32 *)(unaff_s5 + 0x58) & 0xFFFFFFF; \
|
|
if (uVar7 != 0) { \
|
|
iy = (s32)((((u32)*(u16 *)(unaff_s5 + 0xE) + \
|
|
((s32)*(s16 *)(uVar7 + 0xC) + (s32)*(s16 *)(uVar7 + 0xE)) / 2) - \
|
|
(u32)*(u16 *)(arg0 + 0xE)) << 16) >> 16; \
|
|
ix = (s32)((((u32)*(u16 *)(unaff_s5 + 0x6) + \
|
|
((s32)*(s16 *)(uVar7 + 0x4) + (s32)*(s16 *)(uVar7 + 0x6)) / 2) - \
|
|
(u32)*(u16 *)(arg0 + 0x6)) << 16) >> 16; \
|
|
dist = func_80047D3C(iy * iy + ix * ix); \
|
|
s0 = ratan2(((s32)*(s16 *)(unaff_s5 + 0xA) + \
|
|
((s32)*(s16 *)(uVar7 + 0x8) + (s32)*(s16 *)(uVar7 + 0xA)) / 2) - \
|
|
(s32)*(s16 *)(arg0 + 0xA), \
|
|
(s32)(s16)dist) & 0xFFF; \
|
|
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = (u16)s0; \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80156FA8() \
|
|
extern s32 func_80013294(void *a0, void *a1); \
|
|
void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3) \
|
|
{ \
|
|
s16 d[3]; \
|
|
d[0] = ((s32)param_2[0] - (s32)param_1[0]) / 3; \
|
|
d[1] = ((s32)param_2[1] - (s32)param_1[1]) / 3; \
|
|
d[2] = ((s32)param_2[2] - (s32)param_1[2]) / 3; \
|
|
param_1[3] = 0; \
|
|
if (((s32 (*)(s16 *))func_80013294)(param_1) >= 0x41) { \
|
|
if (d[0] != 0 || d[1] != 0 || d[2] != 0) { \
|
|
param_3[0] = param_2[0] - d[0]; \
|
|
param_3[1] = param_2[1] - d[1]; \
|
|
param_3[2] = param_2[2] - d[2]; \
|
|
param_3[3] = 0; \
|
|
} else { \
|
|
param_3[3] = 1; \
|
|
} \
|
|
if (d[0] != 0 || d[1] != 0 || d[2] != 0) { \
|
|
param_2[0] = param_1[0] + d[0]; \
|
|
param_2[1] = param_1[1] + d[1]; \
|
|
param_2[2] = param_1[2] + d[2]; \
|
|
param_2[3] = 0; \
|
|
return; \
|
|
} \
|
|
param_2[3] = 1; \
|
|
return; \
|
|
} \
|
|
param_3[3] = 1; \
|
|
param_2[3] = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8017742C() \
|
|
extern u8 D_8011F837; \
|
|
extern u8 D_8011F7F0; \
|
|
extern u8 D_8011F7AB; \
|
|
u32 *func_8017742C(u32 *param_1, s32 param_2, s32 param_3) { \
|
|
s16 sVar1; \
|
|
u32 uVar2; \
|
|
s32 a3 = (s32)param_1; \
|
|
register s32 t1 __asm__("$9") = param_2; \
|
|
s32 t0 = a3; \
|
|
u8 *base = &D_8011F7F0; \
|
|
*(u32 *)a3 = (a3 - 0x14) & 0xffffff | 0x3000000; \
|
|
*(u8 *)(a3 + 7) = 0x60; \
|
|
if (D_8011F837 < 0x80) { \
|
|
*(u8 *)(a3 + 4) = 0xff; \
|
|
*(u8 *)(a3 + 6) = 0x10; \
|
|
*(u8 *)(a3 + 5) = 0x10; \
|
|
} else if (D_8011F837 == 0x80) { \
|
|
switch (D_8011F7AB) { \
|
|
default: \
|
|
D_8011F7AB = 0; \
|
|
case 0: \
|
|
*(u8 *)(t0 + 4) = 0xff; \
|
|
*(u8 *)(t0 + 6) = 0x30; \
|
|
*(u8 *)(t0 + 5) = 0x30; \
|
|
break; \
|
|
case 1: \
|
|
*(u8 *)(a3 + 5) = 0xff; \
|
|
*(u8 *)(a3 + 6) = 0x30; \
|
|
*(u8 *)(a3 + 4) = 0x30; \
|
|
break; \
|
|
case 2: \
|
|
*(u8 *)(a3 + 6) = 0xff; \
|
|
*(u8 *)(a3 + 5) = 0x30; \
|
|
*(u8 *)(a3 + 4) = 0x30; \
|
|
break; \
|
|
} \
|
|
{ \
|
|
u8 *p = &D_8011F7AB; \
|
|
*p = *p + 1; \
|
|
} \
|
|
} else { \
|
|
*(u8 *)(a3 + 5) = 0xff; \
|
|
*(u8 *)(a3 + 6) = 0x10; \
|
|
*(u8 *)(a3 + 4) = 0x10; \
|
|
} \
|
|
a3 += 0x14; \
|
|
*(u16 *)(t0 + 8) = t1; \
|
|
uVar2 = (u32)base[0x47]; \
|
|
*(u16 *)(t0 + 0xc) = 8; \
|
|
sVar1 = (s16)((s32)(uVar2 * 3) >> 3); \
|
|
{ \
|
|
s32 d = param_3 + 0x48; \
|
|
*(s16 *)(t0 + 0xa) = d - sVar1; \
|
|
} \
|
|
*(s16 *)(t0 + 0xe) = sVar1; \
|
|
*(u32 *)a3 = (a3 - 0x14) & 0xffffff | 0x3000000; \
|
|
*(u8 *)(a3 + 7) = 0x60; \
|
|
*(u8 *)(a3 + 5) = 0x40; \
|
|
*(u8 *)(a3 + 4) = 0x40; \
|
|
t0 = a3; \
|
|
if (base[0x47] != 0) { \
|
|
*(u8 *)(a3 + 6) = 0xa0; \
|
|
} else { \
|
|
*(u8 *)(a3 + 6) = 0x40; \
|
|
} \
|
|
*(u16 *)(t0 + 0xc) = 8; \
|
|
*(u16 *)(t0 + 0xe) = 0x48; \
|
|
*(u16 *)(t0 + 8) = t1; \
|
|
*(s16 *)(t0 + 0xa) = param_3; \
|
|
return (u32 *)(a3 + 0x14); \
|
|
}
|
|
|
|
#define DEFINE_func_80153800() \
|
|
extern void (*D_8011DB28)(s32 a0); \
|
|
extern u8 D_80126DB0[]; \
|
|
extern u16 D_80126DB6; \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_800139C8(s32 a0, void *a1, void *a2); \
|
|
extern s32 func_80153978(s32 a0, u16 *src); \
|
|
extern void *memcpy(void *dst, const void *src, u32 n); \
|
|
s32 func_80153800(s32 a0) { \
|
|
s32 s1 = a0; \
|
|
s32 s0; \
|
|
s32 s2; \
|
|
u8 bVar1; \
|
|
s16 buf1[4]; \
|
|
s16 buf2[4]; \
|
|
if (D_8011DB28 != 0) { \
|
|
((void (*)(s32, s32))func_80015978)(s1 + 4, s1 + 0x88); \
|
|
memcpy((void *)(s1 + 0x90), (void *)(s1 + 0x88), 8); \
|
|
ret0: \
|
|
return 0; \
|
|
} \
|
|
bVar1 = *(u8 *)(s1 + 0xDE); \
|
|
if (bVar1 >= 0x21) { \
|
|
s32 base = (s32)D_80126DB0; \
|
|
func_80015954(base, s1 + 4); \
|
|
memcpy((void *)(s1 + 0x88), (void *)base, 8); \
|
|
memcpy((void *)(s1 + 0x90), (void *)(s1 + 0x88), 8); \
|
|
*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12) = D_80126DB6; \
|
|
return 0; \
|
|
} \
|
|
{ \
|
|
register s32 m __asm__("$3") = bVar1 * 4; \
|
|
s2 = m; \
|
|
buf2[1] = *(u16 *)(s1 + 0xA2) - m; \
|
|
} \
|
|
for (s0 = 0; s0 < 0x80; s0++) { \
|
|
s32 ang = s0 * 0x200000; \
|
|
buf1[0] = 0; \
|
|
buf1[1] = 0; \
|
|
buf1[2] = s2; \
|
|
func_800139C8(ang >> 0x10, buf1, buf1); \
|
|
buf2[0] = *(u16 *)(s1 + 0xA0) + buf1[0]; \
|
|
buf2[2] = *(u16 *)(s1 + 0xA4) + buf1[2]; \
|
|
if (((s32 (*)(s32, void *))func_80153978)(s1, buf2) == 0) { \
|
|
goto ret0; \
|
|
} \
|
|
} \
|
|
*(u8 *)(s1 + 0xDE) = *(u8 *)(s1 + 0xDE) + 1; \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80168070() \
|
|
extern void func_80149350(s32 arg0); \
|
|
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
|
|
extern void func_80017E68(void *a0, void *a1); \
|
|
extern void func_800D23D0(void *a0); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 D_801269A4; \
|
|
extern s32 D_801269A8; \
|
|
extern s32 D_801269AC; \
|
|
void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4) { \
|
|
s16 mid[3]; \
|
|
s16 dir[3]; \
|
|
s32 pos[3]; \
|
|
mid[0] = (param_2[0] + param_3[0]) >> 1; \
|
|
mid[1] = (param_2[1] + param_3[1]) >> 1; \
|
|
mid[2] = (param_2[2] + param_3[2]) >> 1; \
|
|
((void (*)(s32, void *, void *))func_80149350)(param_1, mid, mid); \
|
|
func_800D20C0(mid, dir, 8); \
|
|
func_80017E68(mid, param_4); \
|
|
dir[0] = (u16)param_3[0] - (u16)param_2[0]; \
|
|
dir[1] = (u16)param_3[1] - (u16)param_2[1]; \
|
|
dir[2] = (u16)param_3[2] - (u16)param_2[2]; \
|
|
ApplyMatrixSV((void *)(*(s32 *)(param_1 + 0x20) + 0x34), dir, dir); \
|
|
func_800D23D0(dir); \
|
|
RotMatrixYXZ(dir, param_4); \
|
|
pos[0] = D_801269A4 - mid[0]; \
|
|
pos[1] = D_801269A8 - mid[1]; \
|
|
pos[2] = D_801269AC - mid[2]; \
|
|
ApplyTransposeMatrixLV(param_4, pos, pos); \
|
|
dir[2] = -ratan2(pos[0], pos[1]); \
|
|
RotMatrixYXZ(dir, param_4); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B7A4() \
|
|
extern s32 func_8016F1C4(void); \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern void func_8014B944(s32 a0, s32 a1, s32 a2); \
|
|
extern u8 D_800AF630[]; \
|
|
extern u8 D_80078E78[]; \
|
|
extern s16 currentLocationId; \
|
|
extern s32 D_80078EA4; \
|
|
void func_8014B7A4(s16 *param_1) { \
|
|
s32 s0 = (s32)param_1; \
|
|
register u8 *s2 __asm__("$18") = D_800AF630; \
|
|
register s32 s1 __asm__("$17") = (s32)D_80078E78; \
|
|
s32 v0; \
|
|
s32 v1; \
|
|
if (func_8016F1C4() != 0) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)s0 == 0x1E) { \
|
|
return; \
|
|
} \
|
|
if (*(u16 *)s0 == 0x1A) { \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(s0 + 0x44) & 0x10) { \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(s0 + 0x44) & 0x80) { \
|
|
if ((func_80029178(0x1B) & 0xFF) != 0) { \
|
|
func_8014B944(s0, 0x2D80, 0); \
|
|
} else { \
|
|
func_8014B944(s0, 0x16C0, 0); \
|
|
} \
|
|
} else { \
|
|
v1 = currentLocationId; \
|
|
if (v1 == 0x3024) goto check_end; \
|
|
if (v1 == 0x3042) goto check_end; \
|
|
if (v1 == 0x3067) goto check_end; \
|
|
if (v1 == 0x3075) goto check_end; \
|
|
if ((func_80029178(0x21) & 0xFF) != 0) { \
|
|
D_80078EA4 = D_80078EA4 - 0xF2; \
|
|
} else { \
|
|
D_80078EA4 = D_80078EA4 - 0x16C; \
|
|
} \
|
|
} \
|
|
check_end: \
|
|
if (*(s32 *)(s1 + 0x2C) < 0) { \
|
|
*(s32 *)(s1 + 0x2C) = 0; \
|
|
if (*(s32 *)(s0 + 0x44) & 0x80) { \
|
|
v1 = 0xAAA8; \
|
|
v0 = *(s32 *)(s1 + 0x30) + v1; \
|
|
} else { \
|
|
v0 = *(s32 *)(s1 + 0x30) + 0x1555; \
|
|
} \
|
|
*(s32 *)(s1 + 0x30) = v0; \
|
|
if (*(s16 *)(s1 + 0x32) >= 0x3C) { \
|
|
*(s32 *)(s1 + 0x30) = 0; \
|
|
if (*(s16 *)(s2 + 0xA3D8) != 0x3051) { \
|
|
*(s32 *)(s0 + 0x44) = *(s32 *)(s0 + 0x44) | 0x100; \
|
|
} \
|
|
} \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_8014A850() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_80029AF4(void); \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014A850(s32 param_1) { \
|
|
s32 i; \
|
|
s32 cnt; \
|
|
s16 buf[3]; /* 0x18, 0x1A, 0x1C */ \
|
|
s16 out[4]; /* 0x20 .. 0x27 (s2) */ \
|
|
s32 x; \
|
|
s32 uVar2; \
|
|
s16 *po; \
|
|
cnt = 0; \
|
|
po = out; /* anchors &out ($s2) materialization between cnt=0 and i=0 (scheduler LUID) */ \
|
|
i = 0; \
|
|
do { \
|
|
s32 e = (s32)&D_801202A0 + i; \
|
|
if (*(u16 *)(e + 0) != 0 && *(s32 *)(e + 0x58) != 0 && \
|
|
(*(u16 *)(e + 0x5C) & 0x8000) != 0 && *(u8 *)(e + 0xC1) == 7) { \
|
|
x = *(u16 *)(param_1 + 6) - *(u16 *)(e + 6); \
|
|
buf[0] = x; \
|
|
buf[1] = *(u16 *)(param_1 + 0xA) - (*(u16 *)(e + 0xA) + 0x40); \
|
|
buf[2] = *(u16 *)(param_1 + 0xE) - *(u16 *)(e + 0xE); \
|
|
if ((((s16)x < 0) ? -(s16)x : (s16)x) < 0x40) { \
|
|
if (((buf[2] < 0) ? -buf[2] : buf[2]) < 0x40) { \
|
|
if (((buf[1] < 0) ? -buf[1] : buf[1]) < 0x40) { \
|
|
*(s32 *)(param_1 + 0x18C) = e; \
|
|
func_80015978(param_1 + 4, (s32 *)po); \
|
|
out[3] = 0; \
|
|
uVar2 = func_80029AF4(); \
|
|
func_8014C4AC(e, 0x1B, uVar2, po, \
|
|
(s32)*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12)); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
cnt += 1; \
|
|
i += 0x10C; \
|
|
} while ((u32)cnt < 0x60); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80169584() \
|
|
extern s32 func_80017758(void *a0, void *a1); \
|
|
void func_80169584(s32 param_1) { \
|
|
u8 buf[0x60]; /* spans $sp+0x10 .. (named local_<0x78-off>) */ \
|
|
s32 v1; \
|
|
s32 v0; \
|
|
register s32 s0 __asm__("$16"); /* param_1 + 0x38, held across both calls */ \
|
|
*(s16 *)(buf + 0x00) = 7; /* 0x10 = local_68 */ \
|
|
*(s16 *)(buf + 0x18) = -7; /* 0x28 = local_50 */ \
|
|
*(s16 *)(buf + 0x0a) = 2; /* 0x1A = local_5e */ \
|
|
*(s16 *)(buf + 0x10) = 0; /* 0x20 = local_58 */ \
|
|
*(s16 *)(buf + 0x08) = 0; /* 0x18 = local_60 */ \
|
|
*(s16 *)(buf + 0x1a) = 0; /* 0x2A = local_4e */ \
|
|
*(s16 *)(buf + 0x02) = 0; /* 0x12 = local_66 */ \
|
|
*(s16 *)(buf + 0x12) = -2; /* 0x22 = local_56 */ \
|
|
*(s16 *)(buf + 0x1c) = 0; /* 0x2C = local_4c */ \
|
|
*(s16 *)(buf + 0x14) = 0; /* 0x24 = local_54 */ \
|
|
*(s16 *)(buf + 0x0c) = 0; /* 0x1C = local_5c */ \
|
|
*(s16 *)(buf + 0x04) = 0; /* 0x14 = local_64 */ \
|
|
*(u8 *)(buf + 0x22) = 0; /* 0x32 = local_46 */ \
|
|
*(u8 *)(buf + 0x20) = 0; /* 0x30 = local_48 */ \
|
|
*(u8 *)(buf + 0x2e) = 0; /* 0x3E = local_3a */ \
|
|
*(u8 *)(buf + 0x2c) = 0; /* 0x3C = local_3c */ \
|
|
*(u8 *)(buf + 0x2d) = 0; /* 0x3D = local_3b */ \
|
|
*(u8 *)(buf + 0x21) = 0; /* 0x31 = local_47 */ \
|
|
if (*(s32 *)(param_1 + 0x2c) == 0) { \
|
|
v1 = -0x40 - (*(s32 *)(param_1 + 0x1c) << 4); \
|
|
v0 = ((u32)(v1 & 0xff)) >> 2; \
|
|
*(s8 *)(buf + 0x29) = v1; /* 0x39 = local_3f */ \
|
|
*(s8 *)(buf + 0x25) = v1; /* 0x35 = local_43 */ \
|
|
*(s8 *)(buf + 0x2a) = v0; /* 0x3A = local_3e */ \
|
|
*(s8 *)(buf + 0x26) = v0; /* 0x36 = local_42 */ \
|
|
} else { \
|
|
v1 = -0x40 - (*(s32 *)(param_1 + 0x1c) << 4); \
|
|
v0 = ((u32)(v1 & 0xff)) >> 2; \
|
|
*(s8 *)(buf + 0x29) = v1; /* 0x39 */ \
|
|
*(s8 *)(buf + 0x25) = v1; /* 0x35 */ \
|
|
*(s8 *)(buf + 0x2a) = v1; /* 0x3A */ \
|
|
*(s8 *)(buf + 0x26) = v1; /* 0x36 */ \
|
|
} \
|
|
*(s8 *)(buf + 0x28) = v0; /* 0x38 = local_40 */ \
|
|
*(s8 *)(buf + 0x24) = v0; /* 0x34 = local_44 */ \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
*(s32 *)(buf + 0x30) = 0x50000000; /* 0x40 = local_38 */ \
|
|
s0 = param_1 + 0x38; \
|
|
*(s32 *)(param_1 + 0x4c) = (s32)*(s16 *)(param_1 + 0x06); \
|
|
*(s32 *)(param_1 + 0x50) = (s32)*(s16 *)(param_1 + 0x0a); \
|
|
*(s32 *)(param_1 + 0x54) = (s32)*(s16 *)(param_1 + 0x0e); \
|
|
func_80017758(buf + 0x00, (void *)s0); \
|
|
*(s16 *)(buf + 0x02) = 7; /* 0x12 = local_66 */ \
|
|
*(s16 *)(buf + 0x1a) = -7; /* 0x2A = local_4e */ \
|
|
*(s16 *)(buf + 0x08) = 2; /* 0x18 = local_60 */ \
|
|
*(s16 *)(buf + 0x12) = 0; /* 0x22 = local_56 */ \
|
|
*(s16 *)(buf + 0x0a) = 0; /* 0x1A = local_5e */ \
|
|
*(s16 *)(buf + 0x18) = 0; /* 0x28 = local_50 */ \
|
|
*(s16 *)(buf + 0x00) = 0; /* 0x10 = local_68 */ \
|
|
*(s16 *)(buf + 0x10) = -2; /* 0x20 = local_58 */ \
|
|
func_80017758(buf + 0x00, (void *)s0); \
|
|
}
|
|
|
|
#define DEFINE_func_80162968() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 func_80047D3C(s32 a0); \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
void func_80162968(s32 param_1) \
|
|
{ \
|
|
register int p __asm__("$18"); \
|
|
register int iVar4 __asm__("$17"); \
|
|
register int iVar3 __asm__("$16"); \
|
|
register int iVar5 __asm__("$19"); \
|
|
short sVar2; \
|
|
int iVar6; \
|
|
p = param_1; \
|
|
iVar4 = *(int *)(p + 4); \
|
|
iVar5 = *(int *)(p + 8); \
|
|
iVar3 = p + 0xc; \
|
|
*(short *)(iVar5 + 0x10) = \
|
|
(short)ratan2((int)*(short *)(iVar4 + 0x84), (int)*(short *)(iVar4 + 0x82)); \
|
|
sVar2 = (short)func_80047D3C((int)*(short *)(iVar4 + 0x84) * (int)*(short *)(iVar4 + 0x84) + \
|
|
(int)*(short *)(iVar4 + 0x82) * (int)*(short *)(iVar4 + 0x82)); \
|
|
*(short *)(iVar5 + 0x14) = \
|
|
(short)ratan2((int)*(short *)(iVar4 + 0x80), -(int)sVar2); \
|
|
func_80013F3C(iVar3); \
|
|
func_800126C4(iVar3, (int)*(short *)(iVar5 + 0x10)); \
|
|
func_800123F0(iVar3, (int)*(short *)(iVar5 + 0x14)); \
|
|
func_80012558(iVar3, (int)*(short *)(*(int *)(iVar4 + 0x20) + 0x12)); \
|
|
func_800126C4(iVar3, 0x400); \
|
|
iVar6 = ((0x300 - (int)(short)(*(int *)(p + 0x24) - (unsigned int)*(unsigned short *)(iVar4 + 0xa))) * 0x2000) / 0x300; \
|
|
sVar2 = (short)iVar6; \
|
|
if ((*(unsigned int *)(iVar4 + 0x44) & 0x400) != 0) { \
|
|
sVar2 = (short)iVar6 / 3; \
|
|
} \
|
|
*(short *)(iVar5 + 0x1c) = sVar2; \
|
|
*(short *)(iVar5 + 0x1a) = sVar2; \
|
|
*(short *)(iVar5 + 0x18) = sVar2; \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80169058() \
|
|
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
|
|
extern void func_800D23D0(void *a0); \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern s32 rand(void); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
void func_80169058(s32 a0) { \
|
|
s32 s1 = a0; \
|
|
s16 v10[4]; /* sp+0x10 SVECTOR */ \
|
|
s16 v18[4]; /* sp+0x18 SVECTOR */ \
|
|
s16 v20[16]; /* sp+0x20 MATRIX */ \
|
|
s16 v40[16]; /* sp+0x40 MATRIX */ \
|
|
register s32 v1 __asm__("$3"); \
|
|
register s32 v0 __asm__("$2"); \
|
|
v10[0] = *(u16 *)(s1 + 0x6); \
|
|
v10[1] = *(u16 *)(s1 + 0xA); \
|
|
v10[2] = *(u16 *)(s1 + 0xE); \
|
|
func_800D20C0(v10, v18, 1); \
|
|
func_800D23D0(v18); \
|
|
RotMatrixYXZ(v18, (void *)(s1 + 0x38)); \
|
|
v10[0] = *(u16 *)(s1 + 0x12); \
|
|
v10[1] = *(u16 *)(s1 + 0x16); \
|
|
v10[2] = *(u16 *)(s1 + 0x1A); \
|
|
RotMatrixYXZ(v10, v40); \
|
|
if ((*(s32 *)(s1 + 0x2C) & 0x2) == 0) { \
|
|
v0 = rand(); \
|
|
v1 = (v0 & 0x7F) << 3; \
|
|
v0 = ((u32)(v0 & 0x7F00)) >> 5; \
|
|
__asm__ __volatile__("" : "=r"(v0) : "0"(v0)); \
|
|
v0 = v0 + 0xC00; \
|
|
} else { \
|
|
v0 = rand(); \
|
|
v1 = ((v0 & 0x7F) << 3) + 0xE40; \
|
|
v0 = (((u32)(v0 & 0x7F00)) >> 5) + 0xE00; \
|
|
} \
|
|
v10[0] = v1; \
|
|
v10[1] = v0; \
|
|
__asm__ __volatile__("" : : "r"(v1), "r"(v0)); \
|
|
v10[2] = 0; \
|
|
RotMatrixYXZ(v10, v20); \
|
|
func_80048EAC(v40, v20); \
|
|
v10[0] = 0; \
|
|
v10[1] = 0; \
|
|
v10[2] = 0xA; \
|
|
ApplyMatrixSV(v20, v10, v10); \
|
|
*(u16 *)(s1 + 0x12) = v10[0]; \
|
|
*(u16 *)(s1 + 0x16) = v10[1]; \
|
|
{ \
|
|
s32 c = *(u16 *)(s1 + 0x2); \
|
|
s32 z = (u16)v10[2]; \
|
|
*(s32 *)(s1 + 0x1C) = 0; \
|
|
*(u16 *)(s1 + 0x2) = c + 1; \
|
|
*(u16 *)(s1 + 0x1A) = z; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80146128() \
|
|
extern s32 D_80126B58; \
|
|
extern s32 *D_80126B78; \
|
|
extern u8 D_80078EC1; \
|
|
extern s32 D_80078EC8; \
|
|
extern s32 D_80126B9C; \
|
|
extern s32 D_8011F730; \
|
|
extern u16 D_801152B8; \
|
|
extern u16 D_8012693A; \
|
|
extern u8 D_80126BE0[]; \
|
|
extern u8 D_801150F0[]; \
|
|
extern void *memcpy(void *dst, const void *src, u32 n); \
|
|
extern void func_80146FC4(s32 a0); \
|
|
extern void func_80150A70(s32 a0); \
|
|
extern void func_80147098(s32 *a0); \
|
|
extern void func_8014A638(s32 arg0); \
|
|
extern s32 func_80155458(s32 a0); \
|
|
extern s32 func_80029104(void); \
|
|
extern void func_80029344(void); \
|
|
extern void func_8014ADE0(s32 a0); \
|
|
extern void func_8014B350(s32 a0); \
|
|
extern void func_8014B7A4(s16 *param_1); \
|
|
extern s32 func_80161D58(s32 a0); \
|
|
extern void func_80161A90(s32 a0); \
|
|
extern void func_8014B504(u16 *a0); \
|
|
extern void func_80149BEC(s32 a0); \
|
|
extern void func_8014B5D0(s32 *a0); \
|
|
extern void func_8014C99C(u8 *a0); \
|
|
extern void func_8014B190(s32 s0); \
|
|
extern void func_80148648(s32 a0, s32 a1); \
|
|
extern s32 func_80149228(s32 a0); \
|
|
extern void func_8014A59C(s32 a0); \
|
|
extern void func_8016F14C(void *a0); \
|
|
extern void func_80154418(void *a0); \
|
|
extern void func_80154BE4(s32 a0); \
|
|
extern void func_80165694(s32 arg0); \
|
|
extern void func_801654A8(s32 a0); \
|
|
extern void func_8014A680(s32 a0); \
|
|
extern void func_8014A6A8(s32 a0); \
|
|
extern void func_8014A71C(s32 a0); \
|
|
extern void func_80172588(s32 *a0); \
|
|
extern void func_801473DC(s32 *a0); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
s32 func_80146128(void) \
|
|
{ \
|
|
register s32 base __asm__("$16"); \
|
|
register s32 *p __asm__("$17"); \
|
|
p = D_80126B78; \
|
|
base = (s32)&D_80126B58; \
|
|
func_80146FC4(base); \
|
|
memcpy((void *)D_801150F0, (void *)D_80126BE0, 8); \
|
|
func_80150A70(base); \
|
|
((void (*)(s32))func_80147098)(base); \
|
|
func_8014A638(base); \
|
|
D_8011F730 = 0; \
|
|
D_801152B8 = 0; \
|
|
D_8012693A = 0; \
|
|
if (D_80078EC1 == 0x10 && D_80078EC8 != 0) { \
|
|
*(u16 *)((s32)p + 2) = 6; \
|
|
D_80126B9C |= 0x800; \
|
|
} else { \
|
|
*(u16 *)((s32)p + 2) = 1; \
|
|
*(s32 *)(base + 0x44) &= ~0x800; \
|
|
} \
|
|
if (*(s32 *)(base + 0x1B0) != 0) { \
|
|
*(s32 *)(base + 0x1B0) = *(s32 *)(base + 0x1B0) - 1; \
|
|
} \
|
|
if (func_80155458(base) == 0 && (*(s32 *)(base + 0x44) & 0x4000000) == 0) { \
|
|
if ((func_80029104() & 0xFF) != 0) { \
|
|
func_8014ADE0(base); \
|
|
func_8014B350(base); \
|
|
((void (*)(s32))func_8014B7A4)(base); \
|
|
((void (*)(s32))func_80161D58)(base); \
|
|
} \
|
|
func_80029344(); \
|
|
func_80161A90(base); \
|
|
((void (*)(s32))func_8014B504)(base); \
|
|
func_80149BEC(base); \
|
|
((void (*)(s32))func_8014B5D0)(base); \
|
|
((void (*)(s32))func_8014C99C)(base); \
|
|
func_8014B190(base); \
|
|
func_80148648(base, 0); \
|
|
((void (*)(s32))func_80149228)(base); \
|
|
func_8014A59C(base); \
|
|
((void (*)(s32))func_8016F14C)(base); \
|
|
((void (*)(s32))func_80154418)(base); \
|
|
func_80154BE4(base); \
|
|
func_80165694(base); \
|
|
func_801654A8(base); \
|
|
func_8014A680(base); \
|
|
func_8014A6A8(base); \
|
|
func_8014A71C(base); \
|
|
((void (*)(s32))func_80172588)(base); \
|
|
((void (*)(s32))func_801473DC)(base); \
|
|
((void (*)(s32, s32))func_80015978)(base + 4, base + 0x98); \
|
|
return 1; \
|
|
} \
|
|
((void (*)(s32, s32))func_80015978)(base + 4, base + 0x98); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801519C8() \
|
|
extern u8 D_80062BF4[]; \
|
|
extern M2C_UNK D_800D5880; \
|
|
extern s32 D_800D58AC; \
|
|
extern void func_80019064(void *a0); \
|
|
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
|
|
extern int func_80151204(int arg, int a1); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_801519C8(s32 arg0) { \
|
|
s16 r; \
|
|
u8 v1; \
|
|
u8 de; \
|
|
s32 v0w; \
|
|
func_80019064(&D_80062BF4); \
|
|
v1 = *(u8 *)(arg0 + 0xDD); \
|
|
if (v1 != 1 && v1 == 0x11) { \
|
|
s16 v0 = *(s16 *)(arg0 + 0xF2); \
|
|
if (v0 != 0) { \
|
|
func_8014ACE8((void *)arg0, 5, (s32)v0 & 0x7FFF); \
|
|
} \
|
|
} else { \
|
|
func_80151204(arg0, *(s16 *)(arg0 + 0xF2)); \
|
|
} \
|
|
v0w = *(s32 *)(arg0 + 0x20); \
|
|
r = (s16)func_80012A60(*(s16 *)(v0w + 0x12), *(s16 *)(arg0 + 0xF4)); \
|
|
if (r >= 0x401) { \
|
|
func_80154274((s32 *)arg0, (s32)&D_800D5880); \
|
|
} else { \
|
|
func_80154274((s32 *)arg0, (s32)&D_800D58AC); \
|
|
} \
|
|
func_80154A74(arg0, 0x16); \
|
|
func_80149020((s32 *)arg0); \
|
|
func_80147324(0x451); \
|
|
de = *(u8 *)(arg0 + 0xDE); \
|
|
if (de == 2 || de == 3 || (de & 0xFF) == 0xB) { \
|
|
func_80146CA0((void *)arg0); \
|
|
} \
|
|
func_80146CA0((void *)arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_801536DC() \
|
|
extern void (*D_8011DB28)(s32 a0); \
|
|
extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern s32 func_80013294(void *a0, void *a1); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
s32 func_801536DC(s32 param_1) { \
|
|
s32 s0 = param_1; \
|
|
s32 s1; \
|
|
s32 s2; \
|
|
s32 sp10[2]; \
|
|
register s32 r __asm__("$2"); \
|
|
s32 q; \
|
|
if (D_8011DB28 != 0) { \
|
|
D_8011DB28(s0 + 0xA0); \
|
|
} \
|
|
*(s16 *)(s0 + 6) = func_80012C6C((s32)*(s16 *)(s0 + 6), (s32)*(s16 *)(s0 + 0xA0), 8); \
|
|
*(s16 *)(s0 + 0xA) = func_80012C6C((s32)*(s16 *)(s0 + 0xA), (s32)*(s16 *)(s0 + 0xA2), 8); \
|
|
{ \
|
|
register s32 t __asm__("$2") = func_80012C6C((s32)*(s16 *)(s0 + 0xE), (s32)*(s16 *)(s0 + 0xA4), 8); \
|
|
register s32 chk __asm__("$3") = (s32)D_8011DB28; \
|
|
*(s16 *)(s0 + 0xE) = t; \
|
|
if (chk != 0) { \
|
|
s2 = s0 + 4; \
|
|
func_80015978(s2, sp10); \
|
|
s1 = s0 + 0xA0; \
|
|
q = func_80013294(sp10, (void *)s1); \
|
|
if (q < 0x40 || *(u8 *)(s0 + 0xDE) == 0) { \
|
|
func_80015954(s1, s2); \
|
|
return 0; \
|
|
} \
|
|
*(u8 *)(s0 + 0xDE) = *(u8 *)(s0 + 0xDE) - 1; \
|
|
} \
|
|
} \
|
|
r = 1; \
|
|
if (*(s16 *)(s0 + 6) == *(s16 *)(s0 + 0xA0) && \
|
|
*(s16 *)(s0 + 0xA) == *(s16 *)(s0 + 0xA2)) { \
|
|
r = *(s16 *)(s0 + 0xE) != *(s16 *)(s0 + 0xA4); \
|
|
} \
|
|
return r; \
|
|
}
|
|
|
|
#define DEFINE_func_80160410() \
|
|
extern void func_80019064(void *a0); \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80013E94(void *a0, void *a1); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_8001382C(s32 a0, void *a1, void *a2); \
|
|
extern void func_80146DB8(s32 *a0, s32 *a1); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern s32 func_80149184(s32 a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u8 D_80062BD0; \
|
|
extern s16 D_801152A0; \
|
|
void func_80160410(s32 * a0) \
|
|
{ \
|
|
register s32 angle __asm__("$17"); \
|
|
s32 m1[3]; \
|
|
s32 out[12]; \
|
|
u32 buf[2]; \
|
|
func_80019064((void *)&D_80062BD0); \
|
|
func_80149020(a0); \
|
|
{ \
|
|
s32 t = (s32)(*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12)); \
|
|
angle = (s32)(*(u16 *)((s32)a0 + 0x42)) - t; \
|
|
} \
|
|
func_80013E94((void *)((s32)a0 + 0xE8), buf); \
|
|
{ \
|
|
s32 a2v = (s32)*(s16 *)((s32)a0 + 0xE0); \
|
|
u32 v6 = buf[0] | 0x80000000; \
|
|
s32 a3v = (s32)*(s16 *)((s32)a0 + 0xE2); \
|
|
s32 a5v = (s32)*(s16 *)((s32)a0 + 0xE4); \
|
|
buf[0] = v6; \
|
|
func_80146A6C(6, a0, a2v, a3v, a5v, v6, 0); \
|
|
} \
|
|
func_80147324(0x43D); \
|
|
angle = (s32)(angle << 16) >> 16; \
|
|
m1[0] = 0; \
|
|
m1[1] = 0; \
|
|
m1[2] = 0xFFFA0000; \
|
|
func_8001382C(angle, m1, out); \
|
|
func_80146DB8(a0, out); \
|
|
m1[0] = 0; \
|
|
m1[1] = 0; \
|
|
m1[2] = 0x8000; \
|
|
func_8001382C(angle, m1, (void *)((s32)a0 + 0x234)); \
|
|
func_80146E90(a0, 8); \
|
|
func_801553A8(a0); \
|
|
D_801152A0 = func_80149184((s32)a0); \
|
|
func_80146CA0(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80168D94() \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
extern int rand(void); \
|
|
void func_80168D94(int a0) { \
|
|
int s1 = a0; \
|
|
short v10[4]; /* sp+0x10 SVECTOR */ \
|
|
short v18[16]; /* sp+0x18 MATRIX */ \
|
|
short v38[16]; /* sp+0x38 MATRIX */ \
|
|
register int v1 __asm__("$3"); \
|
|
register int v0 __asm__("$2"); \
|
|
v10[0] = *(unsigned short *)(s1 + 0x12); \
|
|
v10[1] = *(unsigned short *)(s1 + 0x16); \
|
|
v10[2] = *(unsigned short *)(s1 + 0x1A); \
|
|
RotMatrixYXZ(v10, v38); \
|
|
if (*(int *)(s1 + 0x2C) == 0) { \
|
|
v0 = rand(); \
|
|
v1 = (v0 & 0x7F) << 3; \
|
|
v0 = (int)((unsigned int)(v0 & 0x7F00) >> 5); \
|
|
__asm__("" : "=r"(v0) : "0"(v0)); \
|
|
v0 += 0xC00; \
|
|
} else { \
|
|
v0 = rand(); \
|
|
v1 = ((v0 & 0x7F) << 3) + 0xE00; \
|
|
v0 = (int)((unsigned int)(v0 & 0x7F00) >> 5) + 0xE00; \
|
|
} \
|
|
v10[0] = v1; \
|
|
v10[1] = v0; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
v10[2] = 0; \
|
|
RotMatrixYXZ(v10, v18); \
|
|
func_80048EAC(v38, v18); \
|
|
v10[0] = 0; \
|
|
v10[1] = 0; \
|
|
v10[2] = 0x24; \
|
|
ApplyMatrixSV(v18, v10, v10); \
|
|
{ \
|
|
register s32 a __asm__("$4") = *(unsigned short *)(s1 + 0x6); \
|
|
register s32 b __asm__("$5") = *(unsigned short *)(s1 + 0xA); \
|
|
register s32 c __asm__("$3") = *(unsigned short *)(s1 + 0xE); \
|
|
*(unsigned short *)(s1 + 0x12) = v10[0]; \
|
|
*(unsigned short *)(s1 + 0x16) = v10[1]; \
|
|
{ \
|
|
s32 z = (unsigned short)v10[2]; \
|
|
s32 t = *(unsigned short *)(s1 + 0x2); \
|
|
*(unsigned short *)(s1 + 0x10) = a; \
|
|
*(unsigned short *)(s1 + 0x14) = b; \
|
|
*(unsigned short *)(s1 + 0x18) = c; \
|
|
*(int *)(s1 + 0x1C) = 0; \
|
|
*(unsigned short *)(s1 + 0x2) = t + 1; \
|
|
*(unsigned short *)(s1 + 0x1A) = z; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80178298() \
|
|
u32 *func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4) { \
|
|
u8 bVar1; \
|
|
short sVar2; \
|
|
if (*param_2 < 0x80) { \
|
|
do { \
|
|
sVar2 = *(short *)param_2; \
|
|
switch (sVar2) { \
|
|
case 0x1850: \
|
|
case 0x1858: \
|
|
*(short *)((u8 *)param_1 + 8) = param_3 + 4; \
|
|
*(short *)((u8 *)param_1 + 0xA) = param_4 + -7; \
|
|
break; \
|
|
case 0x3870: \
|
|
param_3 = param_3 + 8; \
|
|
param_2 = param_2 + 2; \
|
|
continue; \
|
|
case 0x3871: \
|
|
param_3 = param_3 + 4; \
|
|
param_2 = param_2 + 2; \
|
|
continue; \
|
|
case 0x3872: \
|
|
param_3 = param_3 + 2; \
|
|
param_2 = param_2 + 2; \
|
|
continue; \
|
|
default: \
|
|
*(short *)((u8 *)param_1 + 8) = param_3; \
|
|
*(short *)((u8 *)param_1 + 0xA) = param_4; \
|
|
if (*(short *)param_2 >= 0x861) { \
|
|
param_3 = param_3 + 8; \
|
|
} else { \
|
|
param_3 = param_3 + 7; \
|
|
} \
|
|
break; \
|
|
} \
|
|
*param_1 = (u32)(param_1 + -5) & 0xffffff | 0x4000000; \
|
|
*(u32 *)((u8 *)param_1 + 4) = 0x64808080; \
|
|
((u8 *)param_1)[0xC] = *param_2; \
|
|
param_2 = param_2 + 1; \
|
|
bVar1 = *param_2; \
|
|
param_2 = param_2 + 1; \
|
|
*(short *)((u8 *)param_1 + 0xE) = 0x4056; \
|
|
((u8 *)param_1)[0xD] = bVar1; \
|
|
*(short *)((u8 *)param_1 + 0x10) = 8; \
|
|
*(short *)((u8 *)param_1 + 0x12) = 8; \
|
|
param_1 = param_1 + 5; \
|
|
} while (*param_2 < 0x80); \
|
|
} \
|
|
return param_1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016A08C() \
|
|
extern u8 D_80078EBF; \
|
|
extern void func_80148534(s32 a0, s32 a1); \
|
|
extern void func_8016A290(s32 a, void *b, void *c); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80147364(u16, s32); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016A08C(s32 param_1) { \
|
|
register s32 s0 __asm__("$16"); \
|
|
register void *s1 __asm__("$17"); \
|
|
u8 buf20[8]; \
|
|
u8 buf18[8]; \
|
|
s32 iVar4; \
|
|
s16 sVar2; \
|
|
s0 = param_1; \
|
|
if (D_80078EBF != 0) { \
|
|
s1 = buf18; \
|
|
((void (*)(void *, void *))func_80148534)(buf20, s1); \
|
|
*(s32 *)(s0 + 0x30) = (s32)(u32)D_80078EBF - 0x18; \
|
|
if ((s32)((u32)D_80078EBF - 0x18) >= 0) { \
|
|
func_8016A290(s0, buf20, s1); \
|
|
iVar4 = *(s32 *)(s0 + 0x1C) + 1; \
|
|
*(s32 *)(s0 + 0x1C) = iVar4; \
|
|
if (iVar4 == 4) { \
|
|
func_80147324(0x44C); \
|
|
} \
|
|
if (D_80078EBF < 0x80) { \
|
|
sVar2 = 0; \
|
|
do { \
|
|
sVar2 = sVar2 + 1; \
|
|
} while (sVar2 < 2); \
|
|
((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x17, s0, (s32)*(s16 *)(s0 + 6), (s32)*(s16 *)(s0 + 0xA), \
|
|
(s32)*(s16 *)(s0 + 0xE), 0, 0); \
|
|
} else { \
|
|
if (*(s16 *)(s0 + 0x2A) == 0) { \
|
|
*(s16 *)(s0 + 0x2A) = 1; \
|
|
*(s32 *)(s0 + 0x1C) = 0x100; \
|
|
} \
|
|
if ((*(u32 *)(s0 + 0x1C) & 0x1F) == 0) { \
|
|
func_80147324(0x44D); \
|
|
} \
|
|
} \
|
|
} \
|
|
} else { \
|
|
((void (*)(s32, s32))func_80147364)(4, 0x44C); \
|
|
((void (*)(s32))func_80146C3C)(s0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016EDEC() \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_8016EE94(); \
|
|
extern s32 D_80126B58; \
|
|
void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2) \
|
|
{ \
|
|
unsigned short *new_var; \
|
|
if (1) \
|
|
{ \
|
|
((M2C_UNK (*)(void)) func_8016EE94)(); \
|
|
new_var = &D_80126B58; \
|
|
if (((u32) ((*new_var) - 0x19)) >= 2U) \
|
|
{ \
|
|
((M2C_UNK (*)(u16 *)) func_801599A4)(&D_80126B58); \
|
|
((M2C_UNK (*)(u16 *)) func_80159B3C)(&D_80126B58); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016EE40() \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_8016EF78(s32 a0); \
|
|
extern s32 D_80126B58; \
|
|
void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2) \
|
|
{ \
|
|
s32 *new_var; \
|
|
void (*new_var2)(void *a0); \
|
|
unsigned short new_var3; \
|
|
new_var = &D_80126B58; \
|
|
((M2C_UNK (*)(void)) func_8016EF78)(); \
|
|
new_var3 = *new_var; \
|
|
if (((u32) (new_var3 - 0x19)) >= 2U) \
|
|
{ \
|
|
((M2C_UNK (*)(u16 *)) func_801599A4)(&D_80126B58); \
|
|
new_var2 = func_80159B3C; \
|
|
((M2C_UNK (*)(u16 *)) new_var2)(&D_80126B58); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013EA54() \
|
|
extern s32 func_80141C50(void); \
|
|
extern void func_8013F244(void); \
|
|
extern void func_8013FAF8(s16 a0, s16 a1); \
|
|
extern void func_80137B80(void); \
|
|
extern void func_8013E958(void); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern short D_800B9A02; \
|
|
extern u8 D_801151C8[]; \
|
|
extern s32 D_801151D0; \
|
|
extern u16 D_8011511A; \
|
|
extern u16 D_8011511E; \
|
|
extern unsigned short D_80115112; \
|
|
extern s32 D_80115130; \
|
|
extern s16 D_8011514C; \
|
|
extern s16 currentLocationId; \
|
|
void func_8013EA54(void) { \
|
|
s32 sp10[2]; \
|
|
if ((s16)func_80141C50() == 0) { \
|
|
D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; \
|
|
func_8013F244(); \
|
|
func_8013FAF8(0, 5); \
|
|
func_80137B80(); \
|
|
if (D_8011511E & 0x40) { \
|
|
if (D_8011511A == 0 && currentLocationId == 0x308F) { \
|
|
func_8002D4C8(0x466, 0); \
|
|
} else { \
|
|
u16 v = D_8011511A; \
|
|
if (v != 4) { \
|
|
D_80115130 = 0; \
|
|
} \
|
|
if ((u16)(v - 1) <= 1) { \
|
|
D_8011514C = 0; \
|
|
} \
|
|
func_8002D4C8(0x45D, 0); \
|
|
D_80115112 += 1; \
|
|
} \
|
|
} else if (D_8011511E & 0x810) { \
|
|
func_8013E958(); \
|
|
} \
|
|
} \
|
|
(void)sp10; \
|
|
}
|
|
|
|
#define DEFINE_func_80152500() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_801525F4(int); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80147A84(s32 arg0); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern s32 func_801535F4(void *arg0); \
|
|
extern void func_8015BF48(s32 *a0); \
|
|
extern void func_8014C010(s32 a0, s32 a1); \
|
|
extern void func_80165718(s32 a0); \
|
|
void func_80152500(int param_1) \
|
|
{ \
|
|
int iVar1; \
|
|
((int (*)(int))func_80149020)(param_1); \
|
|
if (*(int *)(param_1 + 0x1c) == 0) { \
|
|
if (*(unsigned short *)(param_1 + 0xb8) == 0x8000) { \
|
|
func_801525F4(param_1); \
|
|
((void (*)(int))func_80159B3C)(param_1); \
|
|
goto LAB_801525d8; \
|
|
} \
|
|
} else { \
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + -1; \
|
|
} \
|
|
func_80147A84(param_1); \
|
|
((void (*)(int))func_801473EC)(param_1); \
|
|
func_80148038(param_1, 0x8000); \
|
|
func_80147460(param_1); \
|
|
iVar1 = ((int (*)(int))func_801535F4)(param_1); \
|
|
if (iVar1 == 1) goto LAB_801525a4; \
|
|
if (iVar1 < 2) return; \
|
|
if (iVar1 == 2) goto LAB_801525bc; \
|
|
return; \
|
|
LAB_801525a4: \
|
|
func_801525F4(param_1); \
|
|
((void (*)(int))func_80159B3C)(param_1); \
|
|
goto LAB_801525d0; \
|
|
LAB_801525bc: \
|
|
func_801525F4(param_1); \
|
|
((void (*)(int))func_8015BF48)(param_1); \
|
|
LAB_801525d0: \
|
|
func_8014C010(param_1, 1); \
|
|
LAB_801525d8: \
|
|
func_80165718(param_1); \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_8013F244() \
|
|
extern u16 D_8011511A; \
|
|
extern u16 D_8011511E; \
|
|
extern void func_80141C0C(s32); \
|
|
void func_8013F244(void) \
|
|
{ \
|
|
u16 *p = &D_8011511A; \
|
|
u16 uVar1; \
|
|
s32 iVar2; \
|
|
iVar2 = 0; \
|
|
if (*p < 3) { \
|
|
if ((D_8011511E & 0x2000) != 0) { \
|
|
uVar1 = *p + 1; \
|
|
iVar2 = 1; \
|
|
*p = *p + 1; \
|
|
if (2 < uVar1) { \
|
|
*p = 0; \
|
|
} \
|
|
} \
|
|
if ((D_8011511E & 0x8000) != 0) { \
|
|
D_8011511A = D_8011511A - 1; \
|
|
if (2 < D_8011511A) { \
|
|
D_8011511A = 2; \
|
|
} \
|
|
iVar2 = iVar2 + 1; \
|
|
} \
|
|
if ((D_8011511E & 0x5000) != 0) { \
|
|
D_8011511A = 3; \
|
|
iVar2 = iVar2 + 1; \
|
|
} \
|
|
} else { \
|
|
iVar2 = 0; \
|
|
if ((D_8011511E & 0x5000) == 0) \
|
|
goto done; \
|
|
*p = 0; \
|
|
iVar2 = 1; \
|
|
} \
|
|
done: \
|
|
if ((iVar2 << 0x10) != 0) { \
|
|
func_80141C0C(2); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80155C64() \
|
|
extern void func_80148038(s32 a0, s32 a1); \
|
|
extern void func_80147460(s32 a0); \
|
|
extern void func_8014ED28(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_8014FA04(s32 a0); \
|
|
extern void func_8014C010(s32 a0, s32 a1); \
|
|
extern void func_8015BF48(s32 *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
extern s32 D_800D4DF4; \
|
|
void func_80155C64(s32 a0) { \
|
|
s32 flags; \
|
|
*(s32 *)(a0 + 0x44) |= 2; \
|
|
func_80148038(a0, 0x30000); \
|
|
func_80147460(a0); \
|
|
if (((s32 (*)(s32))func_8014ED28)(a0) != 0) { \
|
|
func_80146D90(a0); \
|
|
} \
|
|
if ((*(s32 *)(a0 + 0x34) > 0) && (((s32 (*)(s32))func_8014CC28)(a0) != 0)) { \
|
|
func_801599A4((void *)a0); \
|
|
func_80159B3C((void *)a0); \
|
|
func_8014C010(a0, 1); \
|
|
return; \
|
|
} \
|
|
flags = ((s32 (*)(s32))func_8014FA04)(a0); \
|
|
if (flags & 0x4000) { \
|
|
func_801599A4((void *)a0); \
|
|
func_8014C010(a0, 1); \
|
|
((void (*)(void *))func_8015BF48)((void *)a0); \
|
|
return; \
|
|
} \
|
|
if (flags & 0x2000) { \
|
|
func_80154274((s32 *)a0, (s32)&D_800D4DF4); \
|
|
func_80146CA0((void *)a0); \
|
|
func_8014C010(a0, 1); \
|
|
return; \
|
|
} \
|
|
((void (*)(s32, s32))func_80155FF8)(a0, *(u8 *)(a0 + 0x1AA)); \
|
|
}
|
|
|
|
#define DEFINE_func_80169408() \
|
|
extern s32 rand(void); \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
|
|
extern void func_800D23D0(void *a0); \
|
|
extern void func_80169584(s32 param_1); \
|
|
void func_80169408(s32 a0) { \
|
|
register s32 s2 __asm__("$18") = a0; \
|
|
register s32 s1 __asm__("$17"); \
|
|
s16 v10[4]; /* sp+0x10 SVECTOR */ \
|
|
s16 out[4]; /* sp+0x18 SVECTOR */ \
|
|
s16 m[32]; /* sp+0x20 MATRIX (+ trailing reserve to 0x60 — matches target frame) */ \
|
|
if (*(s32 *)(s2 + 0x2C) == 0) { \
|
|
s32 r = rand(); \
|
|
s1 = s2 + 0x38; \
|
|
v10[0] = (r & 0x7F) << 5; \
|
|
v10[1] = ((u32)(r & 0x7F00)) >> 3; \
|
|
v10[2] = 0; \
|
|
RotMatrixYXZ(v10, m); \
|
|
func_80048EAC((void *)s1, m); \
|
|
v10[0] = 0; \
|
|
v10[1] = 0; \
|
|
v10[2] = 2; \
|
|
ApplyMatrixSV(m, v10, v10); \
|
|
*(u16 *)(s2 + 0x12) = v10[0]; \
|
|
*(u16 *)(s2 + 0x16) = v10[1]; \
|
|
*(u16 *)(s2 + 0x1A) = v10[2]; \
|
|
v10[0] = *(u16 *)(s2 + 0x6); \
|
|
v10[1] = *(u16 *)(s2 + 0xA); \
|
|
v10[2] = *(u16 *)(s2 + 0xE); \
|
|
func_800D20C0(v10, out, 1); \
|
|
func_800D23D0(out); \
|
|
RotMatrixYXZ(out, (void *)s1); \
|
|
} \
|
|
func_80169584(s2); \
|
|
*(u16 *)(s2 + 0x2) = *(u16 *)(s2 + 0x2) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016432C() \
|
|
extern void func_80164418(void); \
|
|
extern s32 func_80146E98(s32 a0); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_80147364(u16, s32); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_80162CCC(void); \
|
|
void func_8016432C(s32 a0) { \
|
|
s32 s1 = a0; \
|
|
s32 s0 = *(s32 *)(s1 + 0x4C); \
|
|
func_80164418(); \
|
|
if (func_80146E98(s1) != 0) { \
|
|
u32 v44; \
|
|
*(u16 *)(s0 + 0x18A) = 0; \
|
|
if (*(s32 *)(s0 + 0x184) != 0 && \
|
|
((v44 = *(u32 *)(s0 + 0x44)) & 0x400) == 0 && \
|
|
(*(u32 *)(s0 + 0x1F8) & 0x80FFFFFF) == 0) { \
|
|
*(u32 *)(s0 + 0x44) = v44 | 0x10; \
|
|
if (*(s16 *)(s0 + 0x188) < 0x80) { \
|
|
*(u32 *)(s0 + 0x184) = *(u32 *)(s0 + 0x184) | 0x80000000; \
|
|
} \
|
|
} else { \
|
|
*(s32 *)(s0 + 0x184) = 0; \
|
|
} \
|
|
*(u16 *)(s0 + 0x188) = 0; \
|
|
__asm__ __volatile__("" : : "r"(s0)); \
|
|
*(u32 *)(s0 + 0x44) = *(u32 *)(s0 + 0x44) & 0xFFFFFFFB; \
|
|
func_801553C0(s0); \
|
|
func_80147364(4, 0x449); \
|
|
func_80147324(0x44B); \
|
|
((void (*)(s32))func_80162CCC)(s1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017849C() \
|
|
extern void func_801787D4(void); \
|
|
extern void func_8012A908(void); \
|
|
extern void func_8017869C(s32 a0); \
|
|
extern void func_80130D0C(s32 a0); \
|
|
extern void func_8013E370(void); \
|
|
extern u8 D_801202A0[]; \
|
|
extern u16 D_801270C0; \
|
|
extern s32 D_8011DB08; \
|
|
void func_8017849C(void) { \
|
|
register u8 *p __asm__("$17"); /* $s1 base */ \
|
|
register u8 *q __asm__("$16"); /* $s0 = base + 0x54 */ \
|
|
register s32 i __asm__("$18"); /* $s2 counter */ \
|
|
p = (u8 *)D_801202A0; \
|
|
func_801787D4(); \
|
|
i = 0; \
|
|
func_8012A908(); \
|
|
q = p + 0x54; \
|
|
do { \
|
|
if (*(u16 *)p != 0 && \
|
|
(*(s16 *)&D_801270C0 == 1 || (*(u16 *)(q + 0x1E) & 0x1000) != 0)) { \
|
|
register s32 tbl __asm__("$3"); register s32 c6c __asm__("$2"); \
|
|
func_8017869C((s32)p); \
|
|
*(s32 *)(q - 0x1C) = *(s32 *)(q - 0x50); \
|
|
c6c = *(u8 *)(q + 0x6C); \
|
|
*(s32 *)(q - 0x18) = *(s32 *)(q - 0x4C); \
|
|
tbl = D_8011DB08; \
|
|
*(s32 *)(q - 0x14) = *(s32 *)(q - 0x48); \
|
|
if (c6c != 0 && *(u8 *)(q + 0x6D) != 0) { \
|
|
func_80130D0C((s32)p); \
|
|
} else { \
|
|
(*(void (**)(s32))(tbl + *(u16 *)p * 4))((s32)p); \
|
|
} \
|
|
if (*(s32 *)(q - 0x34) != 0) { \
|
|
*(s16 *)(*(s32 *)(q - 0x34) + 8) = \
|
|
*(u16 *)(q - 0x4E) + *(u16 *)(q - 0x4); \
|
|
*(s16 *)(*(s32 *)(q - 0x34) + 10) = \
|
|
*(u16 *)(q - 0x4A) + *(u16 *)(q - 0x2); \
|
|
*(s16 *)(*(s32 *)(q - 0x34) + 0xC) = \
|
|
*(u16 *)(q - 0x46) + *(u16 *)q; \
|
|
} \
|
|
} \
|
|
i++; \
|
|
q += 0x10C; \
|
|
p += 0x10C; \
|
|
} while (i < 0x60); \
|
|
if (*(s16 *)&D_801270C0 == 1) { \
|
|
func_8013E370(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80168BDC() \
|
|
extern void func_800D2318(void); \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4) \
|
|
{ \
|
|
short mtx[16]; \
|
|
short vec[4]; \
|
|
int r; \
|
|
register int i __asm__("$17"); /* loop counter, survives the call -> $s1 */ \
|
|
register int tmp __asm__("$2"); /* increment temp -> $v0 (the split-IV) */ \
|
|
func_800D2318(); \
|
|
vec[0] = *(short *)(param_1 + 0x12); \
|
|
vec[1] = *(short *)(param_1 + 0x16); \
|
|
vec[2] = 0; \
|
|
RotMatrixYXZ(vec, mtx); \
|
|
vec[0] = 0; \
|
|
if (*(int *)(param_1 + 0x2c) < 0) { \
|
|
vec[2] = -8; \
|
|
vec[1] = -4; \
|
|
} else { \
|
|
vec[2] = 2; \
|
|
vec[1] = -2; \
|
|
} \
|
|
ApplyMatrixSV(mtx, vec, vec); \
|
|
*(short *)(param_1 + 6) = *(short *)(param_1 + 6) + vec[0]; \
|
|
*(short *)(param_1 + 0xa) = *(short *)(param_1 + 0xa) + vec[1]; \
|
|
*(short *)(param_1 + 0xe) = *(short *)(param_1 + 0xe) + vec[2]; \
|
|
i = 0; \
|
|
if ((short)param_4 > 0) { \
|
|
do { \
|
|
r = func_80146A6C((unsigned short)param_2, (void *)param_1, \
|
|
(short)*(short *)(param_1 + 6), \
|
|
(short)*(short *)(param_1 + 0xa), \
|
|
(short)*(short *)(param_1 + 0xe), \
|
|
(short)param_3, 0); \
|
|
if (r != 0) { \
|
|
*(short *)(r + 0x12) = *(short *)(param_1 + 0x12); \
|
|
*(short *)(r + 0x16) = *(short *)(param_1 + 0x16); \
|
|
*(short *)(r + 0x1a) = *(short *)(param_1 + 0x1a); \
|
|
} \
|
|
tmp = i + 1; \
|
|
i = tmp; \
|
|
__asm__ __volatile__("" : "=r"(i) : "0"(i)); \
|
|
} while ((short)tmp < (short)param_4); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80155A44() \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern u8 func_8014BEF8(void); \
|
|
extern u16 func_80148800(s32 *a0); \
|
|
extern void func_80149CB4(void); \
|
|
int func_80155A44(int param_1) \
|
|
{ \
|
|
int x = *(unsigned char *)(param_1 + 0x1AA); \
|
|
switch (x) { \
|
|
case 0: \
|
|
case 1: \
|
|
if ((((unsigned char (*)(int))func_80029178)(0x85) & 0xFF) && \
|
|
((int (*)(int))func_8014BEF8)(param_1) && \
|
|
*(unsigned char *)(param_1 + 0x1C0) && \
|
|
(((int (*)(int))func_80148800)(param_1) & 0x10)) { \
|
|
((void (*)(int, int))func_80149CB4)(param_1, 2); \
|
|
return 1; \
|
|
} \
|
|
break; \
|
|
case 2: \
|
|
if ((((unsigned char (*)(int))func_80029178)(0x86) & 0xFF) && \
|
|
(((int (*)(int))func_80148800)(param_1) & 0x10)) { \
|
|
((void (*)(int, int))func_80149CB4)(param_1, 3); \
|
|
return 1; \
|
|
} \
|
|
break; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80158E24() \
|
|
extern u16 func_801487F4(s32 *a0); \
|
|
extern s32 func_80159434(s32 a0, s32 a1); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern M2C_UNK D_800D5904; \
|
|
void func_80158E24(s32 *a0) { \
|
|
s32 n; \
|
|
s32 c; \
|
|
c = 0x4C000; \
|
|
n = 1; \
|
|
if (func_801487F4(a0) & 0xF0) { \
|
|
n = 4; \
|
|
} \
|
|
while (n > 0) { \
|
|
func_80159434((s32)a0, c); \
|
|
if (*(s16 *)(a0[0x20 / 4] + 0x10) < 0xC00) { \
|
|
*(s16 *)(a0[0x20 / 4] + 0x10) = 0xC00; \
|
|
func_80154274(a0, (s32)&D_800D5904); \
|
|
func_80154A74((s32)a0, 0x20); \
|
|
func_8002D4C8(0x2A, 0); \
|
|
func_8002D4C8(0x1C, 0); \
|
|
func_80146CA0(a0); \
|
|
n = 0; \
|
|
} \
|
|
n--; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8016AA50() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80146C3C(void); \
|
|
extern s32 D_8011D030; \
|
|
extern u16 D_80126B5E; \
|
|
extern u16 D_80126B62; \
|
|
extern u16 D_80126B66; \
|
|
void func_8016AA50(s32 param_1, s32 param_2) { \
|
|
register short *psVar3 __asm__("$4"); \
|
|
register s32 iVar4 __asm__("$5"); \
|
|
register s32 sVar2 __asm__("$3"); \
|
|
register s32 t __asm__("$2"); \
|
|
if (param_2 >= 0) { \
|
|
((s32 (*)(s32, void *, s32, s32, s32, s32, s32))func_80146A6C)( \
|
|
0x1d, (void *)param_1, \
|
|
*(s16 *)(param_1 + 0x7c), *(s16 *)(param_1 + 0x7e), \
|
|
*(s16 *)(param_1 + 0x80), 0, param_2); \
|
|
return; \
|
|
} \
|
|
iVar4 = 0; \
|
|
psVar3 = (short *)&D_8011D030; \
|
|
do { \
|
|
sVar2 = (u16)*psVar3; \
|
|
if (sVar2 == 0 || sVar2 == 3 || sVar2 == 9) { \
|
|
((void (*)(void))func_80146C3C)(); \
|
|
((s32 (*)(s32, void *, s32, s32, s32, s32, s32))func_80146A6C)( \
|
|
0x1d, (void *)param_1, \
|
|
(s16)D_80126B5E, (s16)((u16)D_80126B62 - 0x20), \
|
|
(s16)D_80126B66, 7, 0); \
|
|
return; \
|
|
} \
|
|
t = iVar4 + 1; \
|
|
iVar4 = t; \
|
|
__asm__ __volatile__("" : "=r"(t) : "0"(t)); \
|
|
psVar3 = psVar3 + 0x2c; \
|
|
} while ((s16)t < 0x1e); \
|
|
}
|
|
|
|
#define DEFINE_func_801439FC() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern void func_8012C218(void *a0); \
|
|
extern s32 func_80134510(s32 arg); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s16 D_801152AC; \
|
|
extern s16 D_801152AA; \
|
|
extern u8 D_801152A8[]; \
|
|
void func_801439FC(s32 a0) { \
|
|
s32 s1 = *(s32 *)(a0 + 0x64); \
|
|
s32 s0 = *(s32 *)(a0 + 0xCC); \
|
|
s16 sp[3]; \
|
|
s32 v0; \
|
|
if (*(s16 *)(s1 + 0x36) != *(s16 *)(a0 + 0xFC)) { \
|
|
if (a0 == 0) { \
|
|
return; \
|
|
} \
|
|
func_80016714((void *)s0, 0x38); \
|
|
func_8012C218((void *)a0); \
|
|
return; \
|
|
} \
|
|
sp[0] = *(u16 *)(s1 + 6); \
|
|
sp[1] = *(u16 *)(s1 + 0xA) - 0x10; \
|
|
sp[2] = *(u16 *)(s1 + 0xE); \
|
|
if (func_80134510((s32)&sp[0]) == 0) { \
|
|
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) | 0x80000000; \
|
|
return; \
|
|
} \
|
|
*(s16 *)(s0 + 8) = sp[0]; \
|
|
*(s16 *)(s0 + 0xA) = sp[1]; \
|
|
*(s16 *)(s0 + 0xC) = sp[2]; \
|
|
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) & 0x7FFFFFFF; \
|
|
*(s16 *)(s0 + 0x10) = ratan2(D_801152AC, D_801152AA) + 0x400; \
|
|
*(s16 *)(s0 + 0x12) = ratan2(*(s16 *)D_801152A8, D_801152AA); \
|
|
v0 = *(s32 *)(s1 + 0x20); \
|
|
*(s16 *)(s0 + 0x14) = -(*(u16 *)(v0 + 0x12)); \
|
|
}
|
|
|
|
#define DEFINE_func_801415C0() \
|
|
extern s32 func_800291B4(s32 arg); \
|
|
extern void func_800291A0(s32, s32); \
|
|
extern s32 func_800291DC(s32); \
|
|
extern void func_800291C8(s32, s32); \
|
|
void func_801415C0(s32 param_1, s32 param_2) { \
|
|
register s32 a __asm__("$16"); /* $s0: param_2 raw -> sext -> *2+0x14 */ \
|
|
register s32 b __asm__("$17"); /* $s1: param_1 sext / *2+0x14 */ \
|
|
register s32 c __asm__("$18"); /* $s2: param_2 sext + 0x2F */ \
|
|
register s32 d __asm__("$19"); /* $s3: param_1 sext + 0x2F */ \
|
|
register s32 e __asm__("$20"); /* $s4: 291B4(d)&0xFF / 291DC(b) */ \
|
|
a = param_2; \
|
|
b = (s16)param_1; \
|
|
d = b + 0x2F; \
|
|
e = func_800291B4(d) & 0xFF; \
|
|
a = (s16)a; \
|
|
c = a + 0x2F; \
|
|
func_800291A0(d, func_800291B4(c) & 0xFF); \
|
|
func_800291A0(c, e); \
|
|
b = b * 2 + 0x14; \
|
|
e = func_800291DC(b); \
|
|
a = a * 2 + 0x14; \
|
|
func_800291C8(b, (s16)func_800291DC(a)); \
|
|
func_800291C8(a, (s16)e); \
|
|
}
|
|
|
|
#define DEFINE_func_80144558() \
|
|
extern void func_8012C194(void); \
|
|
extern void func_8012CAE4(void *a0); \
|
|
extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80128EA8(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_8012B200(u8 *a0); \
|
|
extern u8 D_800D387C[]; \
|
|
extern u8 D_800D3888[]; \
|
|
void func_80144558(u8 *param_1) { \
|
|
s32 s0; \
|
|
s0 = ((s32 (*)(void))func_8012C194)(); \
|
|
if (s0 == 0) { \
|
|
func_8012CAE4(param_1); \
|
|
} else { \
|
|
*(s32 *)(param_1 + 0xCC) = s0; \
|
|
func_8001CC3C(s0, 0, 0, 0); \
|
|
*(s32 *)(s0 + 0x20) = (s32)D_800D387C; \
|
|
*(u8 *)(s0 + 0x27) = 0x9C; \
|
|
*(u16 *)(s0 + 0x1A) = 0x3000; \
|
|
*(u16 *)(s0 + 0x18) = 0x3000; \
|
|
*(u32 *)(s0 + 4) = *(u32 *)(s0 + 4) | 0x50000000; \
|
|
func_80128EA8(s0, (s32)(param_1 + 0xD0), (s32)D_800D3888); \
|
|
*(u16 *)(s0 + 8) = *(u16 *)(param_1 + 6); \
|
|
*(u16 *)(s0 + 0xA) = *(u16 *)(param_1 + 0xA); \
|
|
*(u16 *)(s0 + 0xC) = *(u16 *)(param_1 + 0xE); \
|
|
*(u16 *)(param_1 + 2) = 1; \
|
|
func_8012B200(param_1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80145B24() \
|
|
extern s32 func_80029504(void); \
|
|
extern s32 func_800291DC(s32); \
|
|
extern void func_800291C8(s32, s32); \
|
|
extern void func_80162120(void); \
|
|
extern void func_80029124(s32, s32); \
|
|
extern s32 func_80165A50(s32); \
|
|
extern void func_80029514(s32); \
|
|
extern u8 D_800AF630[]; \
|
|
extern u8 D_80078EC0; \
|
|
extern s32 D_80126B58; \
|
|
void func_80145B24(void) \
|
|
{ \
|
|
s32 iVar1; \
|
|
s32 uVar2; \
|
|
register u8 *p __asm__("$17"); \
|
|
p = &D_800AF630; \
|
|
iVar1 = func_80029504(); \
|
|
uVar2 = func_800291DC(8); \
|
|
if ((uVar2 & 0x8000) != 0) { \
|
|
func_800291C8(8, 0); \
|
|
func_80162120(); \
|
|
} \
|
|
if (iVar1 >= 0x6A4) { \
|
|
func_80029124(0x1A, 0); \
|
|
func_80029124(0x8E, 0); \
|
|
func_80029124(0x143, 0); \
|
|
if ((D_80078EC0 & 0x7F) != 0) { \
|
|
D_80078EC0 = 1; \
|
|
} \
|
|
func_80165A50((s32)&D_80126B58); \
|
|
func_80029514(0x4B0); \
|
|
} \
|
|
*(s16 *)(p + 0xA3DA) = 0x3000; \
|
|
}
|
|
|
|
#define DEFINE_func_801446A4() \
|
|
extern void func_8012C194(void); \
|
|
extern void func_8012CAE4(void *a0); \
|
|
extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80128EA8(s32 a0, s32 a1, s32 a2); \
|
|
extern u8 D_800D3888[]; \
|
|
extern u8 D_800D387C[]; \
|
|
void func_801446A4(int param_1) \
|
|
{ \
|
|
register int s1 __asm__("$17"); \
|
|
register int iVar1 __asm__("$16"); \
|
|
s1 = param_1; \
|
|
iVar1 = ((int (*)(void))func_8012C194)(); \
|
|
if (iVar1 == 0) { \
|
|
((void (*)(int))func_8012CAE4)(s1); \
|
|
} else { \
|
|
*(int *)(s1 + 0xcc) = iVar1; \
|
|
((void (*)(int, int, int, int))func_8001CC3C)(iVar1, 0, 0, 0); \
|
|
*(int *)(iVar1 + 0x20) = (int)&D_800D387C; \
|
|
*(unsigned char *)(iVar1 + 0x27) = 0x9c; \
|
|
*(short *)(iVar1 + 0x1a) = 0x3000; \
|
|
*(short *)(iVar1 + 0x18) = 0x3000; \
|
|
*(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50000000; \
|
|
func_80128EA8(iVar1, s1 + 0xd0, (int)&D_800D3888); \
|
|
*(short *)(iVar1 + 8) = *(unsigned short *)(s1 + 6); \
|
|
*(short *)(iVar1 + 0xa) = *(unsigned short *)(s1 + 0xa); \
|
|
*(short *)(iVar1 + 0xc) = *(unsigned short *)(s1 + 0xe); \
|
|
*(short *)(s1 + 2) = *(short *)(s1 + 2) + 1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80173E1C() \
|
|
extern void func_801484B0(s32 a0, s32 a1); \
|
|
extern void func_80149350(s32 arg0); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern s32 func_801399F0(s32 a0); \
|
|
extern void func_80139914(s32 a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 D_80127508; \
|
|
extern u8 D_800D5DC0[]; \
|
|
void func_80173E1C(s32 a0) \
|
|
{ \
|
|
register s32 s0 __asm__("$16"); \
|
|
register s32 *s1 __asm__("$17"); \
|
|
s32 sp10[2]; \
|
|
s32 sp18[2]; \
|
|
s1 = &D_80127508; \
|
|
s0 = a0; \
|
|
if (*s1 != 0) { \
|
|
func_801484B0((s32)sp10, (s32)sp18); \
|
|
((void (*)(s32, s32, s32))func_80149350)(s0, (s32)sp10, (s32)sp10); \
|
|
func_80015954((s32)sp10, *s1 + 4); \
|
|
} \
|
|
if (*(s32 *)(s0 + 0x198) != 0) { \
|
|
if (func_801399F0(*(s32 *)(s0 + 0x198)) == 0) { \
|
|
return; \
|
|
} \
|
|
func_80139914(*(s32 *)(s0 + 0x198)); \
|
|
*(s32 *)(s0 + 0x198) = 0; \
|
|
func_80154274((s32 *)s0, (s32)&D_800D5DC0); \
|
|
func_80171A1C((u8 *)s0); \
|
|
} else { \
|
|
s32 iVar1 = *(s32 *)(s0 + 0x200) - 1; \
|
|
*(s32 *)(s0 + 0x200) = iVar1; \
|
|
if (iVar1 != -1) { \
|
|
return; \
|
|
} \
|
|
func_80154274((s32 *)s0, (s32)&D_800D5DC0); \
|
|
func_80171A1C((u8 *)s0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801716AC() \
|
|
extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u8 D_800A5E94; \
|
|
extern u8 D_800A5E95; \
|
|
extern u8 D_800A5E96; \
|
|
s32 func_801716AC(s32 a0, void * a1, s32 * a2) \
|
|
{ \
|
|
s32 d; \
|
|
s32 p; \
|
|
a0 = a0 * 0x10; \
|
|
p = a0 + (s32)a1; \
|
|
d = (s16)func_80012FC8(*(u8 *)(p + 0xC), (&D_800A5E94)[a0], 10, 1); \
|
|
*a2 += d; \
|
|
*(char *)(p + 0xC) = *(u8 *)(p + 0xC) + d; \
|
|
d = (s16)func_80012FC8(*(u8 *)(p + 0xD), (&D_800A5E95)[a0], 10, 1); \
|
|
*a2 += d; \
|
|
*(char *)(p + 0xD) = *(u8 *)(p + 0xD) + d; \
|
|
d = (s16)func_80012FC8(*(u8 *)(p + 0xE), (&D_800A5E96)[a0], 10, 1); \
|
|
*a2 += d; \
|
|
*(char *)(p + 0xE) = *(u8 *)(p + 0xE) + d; \
|
|
}
|
|
|
|
#define DEFINE_func_80155D70() \
|
|
extern u16 func_801487F4(s32 *a0); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_8015E880(s32 *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_8015BDD0(s32 *a0); \
|
|
void func_80155D70(s32 param_1) \
|
|
{ \
|
|
s32 iVar2; \
|
|
s32 iVar3; \
|
|
char buf[64]; \
|
|
*(u32 *)(param_1 + 0x44) |= 2; \
|
|
if (*(u16 *)(param_1 + 0xB8) == 0x8000) { \
|
|
if ((((s32 (*)(void))func_801487F4)() & 0x80) != 0) { \
|
|
((void (*)(s32))func_801599A4)(param_1); \
|
|
((void (*)(s32))func_8015E880)(param_1); \
|
|
} else { \
|
|
((void (*)(s32))func_801599A4)(param_1); \
|
|
((void (*)(s32))func_80159B3C)(param_1); \
|
|
} \
|
|
} else { \
|
|
iVar2 = ((s32 (*)(s32))func_8014CC28)(param_1); \
|
|
iVar3 = ((s32 (*)(s32))func_8014F3E8)(param_1); \
|
|
if (iVar3 == 0 && iVar2 == 0) { \
|
|
((void (*)(s32))func_801599A4)(param_1); \
|
|
((void (*)(s32))func_8015BDD0)(param_1); \
|
|
} \
|
|
} \
|
|
(void)buf; \
|
|
}
|
|
|
|
#define DEFINE_func_80151DB0() \
|
|
extern void func_80019064(void *a0); \
|
|
extern int func_80151204(int arg, int a1); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern s32 func_80172630(u8 *a0); \
|
|
extern s32 D_80062C14; \
|
|
extern M2C_UNK D_800D5880; \
|
|
extern s32 D_800D58AC; \
|
|
void func_80151DB0(s32 param_1) \
|
|
{ \
|
|
short sVar1; \
|
|
unsigned short uVar2; \
|
|
int iVar3; \
|
|
func_80019064(&D_80062C14); \
|
|
((void (*)(int, int))func_80151204)(param_1, (int)*(short *)(param_1 + 0xf2)); \
|
|
sVar1 = ((short (*)(int, int))func_80012A60)((int)*(short *)(*(int *)(param_1 + 0x20) + 0x12), \
|
|
(int)*(short *)(param_1 + 0xf4)); \
|
|
if (sVar1 >= 0x401) { \
|
|
((void (*)(int, void *))func_80154274)(param_1, &D_800D5880); \
|
|
iVar3 = *(int *)(param_1 + 0x20); \
|
|
uVar2 = 0xc00; \
|
|
} else { \
|
|
((void (*)(int, void *))func_80154274)(param_1, &D_800D58AC); \
|
|
iVar3 = *(int *)(param_1 + 0x20); \
|
|
uVar2 = 0x400; \
|
|
} \
|
|
*(unsigned short *)(iVar3 + 0x10) = uVar2; \
|
|
*(unsigned short *)(param_1 + 100) = 0xcc; \
|
|
__asm__ __volatile__("" : : "r"(param_1)); \
|
|
((void (*)(int))func_80149020)(param_1); \
|
|
func_80147324(0x436); \
|
|
((void (*)(int))func_80146CA0)(param_1); \
|
|
((void (*)(int))func_80172630)(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_8014B944() \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern u8 D_80078E78[]; \
|
|
extern s32 D_80078EA4; \
|
|
extern u16 D_80078EA6; \
|
|
void func_8014B944(s32 a0, s32 a1, s32 a2) \
|
|
{ \
|
|
u8 *base = D_80078E78; \
|
|
if (a2 != 0) { \
|
|
D_80078EA4 += a1; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
if ((s16)D_80078EA6 >= 0xA1) { \
|
|
D_80078EA4 = 0xA00000; \
|
|
} \
|
|
} else { \
|
|
if ((func_80029178(0x1B) & 0xFF) != 0) { \
|
|
D_80078EA4 += a1; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
if ((s16)D_80078EA6 >= 0xA1) { \
|
|
D_80078EA4 = 0xA00000; \
|
|
} \
|
|
} else { \
|
|
if ((s16)D_80078EA6 < 0x80) { \
|
|
D_80078EA4 += a1; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
if ((s16)D_80078EA6 >= 0x81) { \
|
|
D_80078EA4 = 0x800000; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
if (a2 != 0) { \
|
|
*(s32 *)(base + 0x60) += a1; \
|
|
if (*(s16 *)(base + 0x62) >= 0xA1) { \
|
|
*(s32 *)(base + 0x60) = 0xA00000; \
|
|
} \
|
|
} else { \
|
|
if ((func_80029178(0x1B) & 0xFF) != 0) { \
|
|
*(s32 *)(base + 0x60) += a1; \
|
|
if (*(s16 *)(base + 0x62) >= 0xA1) { \
|
|
*(s32 *)(base + 0x60) = 0xA00000; \
|
|
} \
|
|
} else { \
|
|
if (*(s16 *)(base + 0x62) < 0x80) { \
|
|
*(s32 *)(base + 0x60) += a1; \
|
|
if (*(s16 *)(base + 0x62) >= 0x81) { \
|
|
*(s32 *)(base + 0x60) = 0x800000; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014A59C() \
|
|
extern u8 D_80078EBF; \
|
|
extern s32 func_80029178(s32 arg); \
|
|
void func_8014A59C(s32 a0) { \
|
|
s32 r; \
|
|
s32 add; \
|
|
if (*(u32 *)(a0 + 0x44) & 1) { \
|
|
if ((*(u16 *)(a0 + 0xAA) & 8) != 0) { \
|
|
r = func_80029178(0x20); \
|
|
add = 3; \
|
|
if ((r & 0xFF) != 0) { \
|
|
add = 6; \
|
|
} \
|
|
D_80078EBF = D_80078EBF + add; \
|
|
if (0x80 < D_80078EBF) { \
|
|
__asm__ __volatile__(""); \
|
|
D_80078EBF = 0x80; \
|
|
} \
|
|
} \
|
|
} else { \
|
|
D_80078EBF = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80157AC8() \
|
|
extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern s32 func_80161208(); \
|
|
extern void func_8016706C(s32 a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
extern s32 func_801725A4(u8 *a0); \
|
|
extern u8 D_800D51AC[]; \
|
|
void func_80157AC8(s32 param_1) \
|
|
{ \
|
|
*(u32 *)(param_1 + 0x44) = *(u32 *)(param_1 + 0x44) | 2; \
|
|
((s32 (*)(s32, s32, s32, s32))func_80147AD4)(param_1, 0, 0, 0x10000); \
|
|
((void (*)(s32))func_801473EC)(param_1); \
|
|
if (((s32 (*)(s32))func_80161208)(param_1) == 0) { \
|
|
if (*(s32 *)(param_1 + 0x2c) > 0) { \
|
|
func_8016706C(4); \
|
|
func_8016706C(5); \
|
|
((void (*)(s32, s32))func_80154274)(param_1, (s32)D_800D51AC); \
|
|
((void (*)(s32))func_80146CA0)(param_1); \
|
|
} else { \
|
|
((void (*)(s32, s32))func_80155FF8)(param_1, *(u8 *)(param_1 + 0x1aa)); \
|
|
((void (*)(s32))func_801725A4)(param_1); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80151AE4() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80151C54(s32 a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_801542DC(s32 *a0, s32 a1); \
|
|
extern void func_8014E934(s32 a0); \
|
|
extern void func_8014F3E8(s32 a0); \
|
|
extern void func_8014CC28(s32 a0); \
|
|
extern void func_8015BDD0(s32 *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
extern u8 D_800D46E4[]; \
|
|
extern M2C_UNK D_800D5880; \
|
|
void func_80151AE4(s32 arg0) \
|
|
{ \
|
|
func_80149020(arg0); \
|
|
if (*(u16 *)((s32)arg0 + 0xB8) == 0x8000) { \
|
|
func_80151C54(arg0); \
|
|
func_80159B3C(arg0); \
|
|
if (*(s32 *)((s32)arg0 + 0xB4) == (s32)&D_800D5880) { \
|
|
((void (*)(s32, s32, s32))func_801542DC)(arg0, (s32)D_800D46E4, 0xE); \
|
|
} \
|
|
} else { \
|
|
func_8014E934(arg0); \
|
|
if (((s32 (*)(s32))func_8014F3E8)(arg0) != 0) { \
|
|
return; \
|
|
} \
|
|
if (((s32 (*)(s32))func_8014CC28)(arg0) != 0) { \
|
|
return; \
|
|
} \
|
|
func_80151C54(arg0); \
|
|
func_8015BDD0(arg0); \
|
|
} \
|
|
func_80165718(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_80155EA4() \
|
|
extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_801473EC(s32 *a0); \
|
|
extern void func_8014C010(s32 a0, s32 a1); \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern s32 func_80161208(); \
|
|
extern u16 D_800B99DA; \
|
|
void func_80155EA4(void *arg0) { \
|
|
volatile s32 spill[4]; /* forces the 0x28 frame the target reserves */ \
|
|
*(s32 *)((u8 *)arg0 + 0x44) |= 2; \
|
|
func_80147AD4((s32)arg0, 0, 0, 0x8000); \
|
|
func_801473EC((s32 *)arg0); \
|
|
if ((D_800B99DA & 3) == 0) { \
|
|
func_8014C010((s32)arg0, 2); \
|
|
} \
|
|
func_80155FF8((int)arg0, *(u8 *)((u8 *)arg0 + 0x1AA)); \
|
|
if ((*(s32 *)((u8 *)arg0 + 0x2C) >= 0) || (*(u8 *)((u8 *)arg0 + 0x1C0) != 0)) { \
|
|
func_801599A4(arg0); \
|
|
func_80159B3C(arg0); \
|
|
} else { \
|
|
((void (*)(void *))func_80161208)(arg0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80177F84() \
|
|
void func_80177F84(s32 param_1, s32 param_2) { \
|
|
u16 uVar4; \
|
|
s16 iVar3; \
|
|
register u8 *pcVar2 __asm__("$6"); \
|
|
u32 uVar1; \
|
|
register s32 c5 __asm__("$10"); \
|
|
register s32 cmask __asm__("$9"); \
|
|
uVar4 = 0x100; \
|
|
iVar3 = 0; \
|
|
c5 = 5; \
|
|
cmask = -257; \
|
|
pcVar2 = (u8 *)(param_1 + 0xc); \
|
|
do { \
|
|
register u32 src __asm__("$2"); \
|
|
register u32 byteval __asm__("$3"); \
|
|
register u32 testval __asm__("$4"); \
|
|
src = (param_2 >> 0x10) & 0xf; \
|
|
__asm__ __volatile__("" : : "r"(src)); \
|
|
byteval = src; \
|
|
__asm__ __volatile__("" : "=r"(byteval) : "0"(byteval)); \
|
|
testval = src; \
|
|
__asm__ __volatile__("" : : "r"(byteval), "r"(testval)); \
|
|
param_2 = param_2 << 4; \
|
|
if ((iVar3 == c5) || (testval != 0)) { \
|
|
uVar4 = 0; \
|
|
} \
|
|
pcVar2 += 0x14; \
|
|
iVar3 += 1; \
|
|
{ \
|
|
register s32 r __asm__("$4"); \
|
|
r = *(u16 *)(pcVar2 - 2); \
|
|
pcVar2[0] = (u8)(byteval * 8 + 8); \
|
|
*(u16 *)(pcVar2 - 2) = uVar4 | (r & cmask); \
|
|
} \
|
|
} while (iVar3 < 5); \
|
|
}
|
|
|
|
#define DEFINE_func_80147C30() \
|
|
extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
s32 out[3]; \
|
|
s32 *p0 = &D_80127090; \
|
|
s32 *p1 = &D_80127094; \
|
|
s32 *p2 = &D_80127098; \
|
|
func_80147CC8(a0, a1, a2, a3, (s32)out); \
|
|
D_80127090 = out[0]; \
|
|
D_80127094 = out[1]; \
|
|
D_80127098 = out[2]; \
|
|
*(s32 *)(a0 + 0x10) = *p0; \
|
|
*(s32 *)(a0 + 0x14) = *p1; \
|
|
*(s32 *)(a0 + 0x18) = *p2; \
|
|
D_80127090 = 0; \
|
|
D_80127094 = 0; \
|
|
D_80127098 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014FD54() \
|
|
extern void func_80149290(s32 a0); \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
int func_8014FD54(int param_1) \
|
|
{ \
|
|
short buf1[3]; \
|
|
short buf2[4]; \
|
|
int ret; \
|
|
register int result __asm__("$2"); \
|
|
buf1[0] = 0; \
|
|
buf1[1] = 0; \
|
|
buf1[2] = 7; \
|
|
((void (*)(int, void *, void *))func_80149290)(param_1, buf1, buf1); \
|
|
buf2[0] = 0; \
|
|
buf2[1] = 0; \
|
|
buf2[2] = (short)0xffe8; \
|
|
((void (*)(int, void *, void *))func_80149290)(param_1, buf2, buf2); \
|
|
ret = func_80133784(1, buf1, (int)buf2); \
|
|
if (ret != 0) { \
|
|
result = 0; \
|
|
if ((ret & 0x8000) != 0) { \
|
|
result = *(unsigned char *)((char *)buf2 + 6) == 0x15; \
|
|
} \
|
|
} else { \
|
|
result = 0; \
|
|
} \
|
|
return result; \
|
|
}
|
|
|
|
#define DEFINE_func_801416D4() \
|
|
extern s16 D_8011514C; \
|
|
extern u8 D_8011514D; \
|
|
extern u8 D_8011515C; \
|
|
extern s32 func_800D11F0(s32 a0); \
|
|
extern s32 func_800D1658(s32 a0); \
|
|
extern void func_80141C0C(s32); \
|
|
s32 func_801416D4(s16 param_1) { \
|
|
s32 cVar2; \
|
|
register s32 iVar1 __asm__("$3"); \
|
|
register s32 two __asm__("$6"); \
|
|
two = 2; \
|
|
iVar1 = 0; \
|
|
cVar2 = *(u8 *)&D_8011514C + D_8011514D * D_8011515C; \
|
|
if (param_1 == 1) goto c1; \
|
|
if (param_1 < 2) { \
|
|
if (param_1 == 0) goto c0; \
|
|
goto ret; \
|
|
} \
|
|
if (param_1 == two) goto c2; \
|
|
goto ret; \
|
|
c0: \
|
|
iVar1 = func_800D11F0(cVar2 & 0xFF); \
|
|
goto ret; \
|
|
c1: \
|
|
iVar1 = func_800D1658(cVar2 & 0xFF); \
|
|
goto ret; \
|
|
c2: \
|
|
func_80141C0C(6); \
|
|
iVar1 = 1; \
|
|
ret: \
|
|
return (iVar1 << 0x10) >> 0x10; \
|
|
}
|
|
|
|
#define DEFINE_func_8015B6F4() \
|
|
extern s32 func_80149AA8(s32 *a0); \
|
|
extern void func_80156648(s32 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_80147300(u16 arg0); \
|
|
extern s32 D_800D4A9C; \
|
|
int func_8015B6F4(int param_1) \
|
|
{ \
|
|
register int b4 __asm__("$3"); \
|
|
register unsigned int f44 __asm__("$2"); \
|
|
register unsigned int bc __asm__("$4"); \
|
|
if (((int (*)(void))func_80149AA8)() == 0) return 0; \
|
|
((void (*)(int))func_80156648)(param_1); \
|
|
b4 = *(int *)(param_1 + 0xb4); \
|
|
*(unsigned char *)(param_1 + 0x1aa) = 6; \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
f44 = *(unsigned int *)(param_1 + 0x44); \
|
|
bc = *(unsigned char *)(param_1 + 0xbc); \
|
|
*(int *)(param_1 + 0x23c) = b4; \
|
|
*(unsigned int *)(param_1 + 0x44) = f44 | 2; \
|
|
*(unsigned char *)(param_1 + 0x244) = bc; \
|
|
if (*(int *)(param_1 + 0xb4) == (int)&D_800D4A9C) { \
|
|
func_80154150(param_1, 0xb); \
|
|
} else { \
|
|
func_80154150(param_1, 0xc); \
|
|
} \
|
|
func_80154A74(param_1, 0x22); \
|
|
*(unsigned char *)(param_1 + 0xda) = 0; \
|
|
((void (*)(int, int, int, int))func_80146994)(4, param_1, 5, 0); \
|
|
func_80147324(0x400); \
|
|
((void (*)(int))func_80147300)(0x5f3); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8013E448() \
|
|
extern s32 (*D_801274D0)(s32); \
|
|
extern s32 D_801274D8; \
|
|
extern s32 D_801274DC; \
|
|
extern s16 D_80126CAC; \
|
|
extern s32 func_800132BC(s32 a0, s32 a1); \
|
|
s32 func_8013E448(s32 param_1) \
|
|
{ \
|
|
s32 iVar1; \
|
|
register s32 uVar2 __asm__("$2"); \
|
|
if (D_801274D0 == 0) { \
|
|
iVar1 = func_800132BC((s32)&D_80126CAC, param_1); \
|
|
uVar2 = 0; \
|
|
if (D_801274D8 < iVar1) { \
|
|
uVar2 = (iVar1 < D_801274DC); \
|
|
} \
|
|
return uVar2; \
|
|
} \
|
|
return (*D_801274D0)(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_801493D0() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_8012F14C(s32); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
void func_801493D0(s32 param_1, s32 param_2, s32 param_3) \
|
|
{ \
|
|
u8 buf1[8]; \
|
|
u8 *new_var; \
|
|
u8 buf2[8]; \
|
|
((void (*)(s32, u8 *)) func_80015978)(param_2, buf1); \
|
|
new_var = buf2; \
|
|
((void (*)(s32, u8 *, u8 *)) func_8012F14C)((*((s32 *) (param_1 + 0x20))) + 0x34, buf1, new_var); \
|
|
new_var++; \
|
|
new_var--; \
|
|
((void (*)(u8 *, s32)) func_80015954)(buf2, param_3); \
|
|
}
|
|
|
|
#define DEFINE_func_80175414() \
|
|
extern u8 D_8011F7A8; \
|
|
extern u8 D_8011F7A9; \
|
|
extern u8 D_8011F7AD; \
|
|
extern u8 D_8011F7AE; \
|
|
void func_80175414(s32 _arg0) \
|
|
{ \
|
|
unsigned char *p = &D_8011F7A8; \
|
|
if (*p == 1) { \
|
|
*p = 0; \
|
|
D_8011F7AD = 10; \
|
|
D_8011F7A9 = 0; \
|
|
D_8011F7AE = 0x37; \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80171928() \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
void func_80171928(void * a0) \
|
|
{ \
|
|
unsigned char idx = *(unsigned char *)((char *)a0 + 0x214); \
|
|
unsigned int *base = *(unsigned int **)((char *)a0 + 0x1FC); \
|
|
unsigned int cur = *(unsigned int *)((char *)a0 + 0x1F8); \
|
|
*(unsigned int *)((char *)a0 + 0x1F8) = base[idx] | (cur & 0x7F000000); \
|
|
((void (*)(void *))func_80171A1C)(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014BD60() \
|
|
extern s16 D_80078EB8; \
|
|
void func_8014BD60(s32 param_1, s32 param_2) \
|
|
{ \
|
|
int new_var; \
|
|
int v1; \
|
|
v1 = (int) ((unsigned short) D_80078EB8); \
|
|
if (v1 < param_2) \
|
|
{ \
|
|
D_80078EB8 = 0; \
|
|
} \
|
|
else \
|
|
{ \
|
|
D_80078EB8 = (unsigned short) ((new_var = v1) - param_2); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80173EF8() \
|
|
extern s16 D_80126938; \
|
|
extern s16 D_80126B3A; \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_800D128C(s32, s32); \
|
|
extern void func_80029124(s32, s32); \
|
|
extern void func_80029514(s32); \
|
|
extern void func_80174158(s32 a0); \
|
|
extern void func_8002A088(s32); \
|
|
extern void func_8002A2D4(s32); \
|
|
extern void func_8002A544(s32); \
|
|
extern void func_8002A7B4(s32); \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern s32 func_80174188(s32 a0); \
|
|
extern void func_801741A8(s32 a0); \
|
|
extern s32 func_800D0EC4(void); \
|
|
extern void func_800D0F0C(s32, s32); \
|
|
extern void func_80145EE8(s32); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
void func_80173EF8(void *param_1) \
|
|
{ \
|
|
if ((*(u16 *)((s32)param_1 + 0xB8) & 0x8000) == 0) { \
|
|
return; \
|
|
} \
|
|
D_80126938 = 1; \
|
|
((void (*)(void))func_80147060)(); \
|
|
switch (D_80126B3A) { \
|
|
case 0: \
|
|
break; \
|
|
case 0x70: \
|
|
func_800D128C((u8)D_80126B3A, 0); \
|
|
break; \
|
|
case 0x78: \
|
|
func_80029124(0x8A, 1); \
|
|
func_80029514(0xC8); \
|
|
((void (*)(void *))func_80174158)(param_1); \
|
|
func_8002A088(0x64); \
|
|
func_8002A2D4(0x20); \
|
|
func_8002A544(0x20); \
|
|
func_8002A7B4(0x18); \
|
|
break; \
|
|
case 0x79: \
|
|
func_80029124(0x8B, 1); \
|
|
func_80029514(0x258); \
|
|
((void (*)(void *))func_80174158)(param_1); \
|
|
func_8002A088(0xA0); \
|
|
func_8002A2D4(0x28); \
|
|
func_8002A544(0x40); \
|
|
func_8002A7B4(0x30); \
|
|
break; \
|
|
case 0x7A: \
|
|
func_80029124(0x8C, 1); \
|
|
func_80029514(0x384); \
|
|
((void (*)(void *))func_80174158)(param_1); \
|
|
func_8002A088(0xF0); \
|
|
func_8002A2D4(0x30); \
|
|
func_8002A544(0x60); \
|
|
func_8002A7B4(0x48); \
|
|
break; \
|
|
case 0x7B: \
|
|
func_80029124(0x8D, 1); \
|
|
func_80029514(0x4B0); \
|
|
((void (*)(void *))func_80174158)(param_1); \
|
|
func_8002A088(0x140); \
|
|
func_8002A2D4(0x40); \
|
|
func_8002A544(0x80); \
|
|
func_8002A7B4(0x60); \
|
|
break; \
|
|
case 0x7C: \
|
|
if ((u8)func_80029178(0x11D) == 0) { \
|
|
((void (*)(void *))func_80174188)(param_1); \
|
|
} \
|
|
func_8002A088(0x190); \
|
|
func_8002A2D4(0x50); \
|
|
func_8002A544(0xA0); \
|
|
func_8002A7B4(0x80); \
|
|
((void (*)(void *))func_801741A8)(param_1); \
|
|
func_80029124(0x8E, 1); \
|
|
break; \
|
|
default: \
|
|
func_800D0F0C(func_800D0EC4(), (s32)D_80126B3A); \
|
|
break; \
|
|
} \
|
|
func_80145EE8(0); \
|
|
((void (*)(void *))func_80171A1C)(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_80141CA4() \
|
|
extern s32 func_80029504(void); \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern s32 func_800291B4(s32 arg); \
|
|
extern unsigned char D_80112C04[]; \
|
|
extern unsigned char D_80112C50[]; \
|
|
extern unsigned char D_80112C9C[]; \
|
|
extern unsigned char D_80112CE8[]; \
|
|
extern unsigned char D_80112D38[]; \
|
|
extern unsigned char D_80112D78[]; \
|
|
extern unsigned char D_80112DBC[]; \
|
|
extern unsigned char D_80112DF4[]; \
|
|
extern unsigned char D_80112E14[]; \
|
|
extern unsigned char D_80112E40[]; \
|
|
extern unsigned char D_80112E6C[]; \
|
|
extern unsigned char D_80112EBC[]; \
|
|
extern unsigned char D_80112F0C[]; \
|
|
extern unsigned char D_80112F48[]; \
|
|
extern unsigned char D_80112F9C[]; \
|
|
extern unsigned char D_80112FDC[]; \
|
|
extern unsigned char D_8011302C[]; \
|
|
extern unsigned char D_80113074[]; \
|
|
extern unsigned char D_801130B8[]; \
|
|
extern unsigned char D_801130E8[]; \
|
|
extern unsigned char D_80113138[]; \
|
|
extern unsigned char D_8011317C[]; \
|
|
extern unsigned char D_801131A8[]; \
|
|
extern unsigned char D_801131E8[]; \
|
|
extern unsigned char D_80113214[]; \
|
|
extern unsigned char D_80113254[]; \
|
|
extern unsigned char D_80113278[]; \
|
|
extern unsigned char D_801132B8[]; \
|
|
extern unsigned char D_801132E4[]; \
|
|
extern unsigned char D_80113324[]; \
|
|
extern unsigned char D_80113360[]; \
|
|
extern unsigned char D_801133A4[]; \
|
|
extern unsigned char D_801133F4[]; \
|
|
extern unsigned char D_80113440[]; \
|
|
extern unsigned char D_80113474[]; \
|
|
extern unsigned char D_801134B0[]; \
|
|
extern unsigned char D_801134FC[]; \
|
|
extern unsigned char D_80113530[]; \
|
|
extern unsigned char D_80113554[]; \
|
|
extern unsigned char D_801135A8[]; \
|
|
extern unsigned char D_80113600[]; \
|
|
extern unsigned char D_80113650[]; \
|
|
extern unsigned char D_80113694[]; \
|
|
extern unsigned char D_801136DC[]; \
|
|
extern unsigned char D_80113724[]; \
|
|
extern unsigned char D_80113744[]; \
|
|
extern unsigned char D_80113770[]; \
|
|
extern unsigned char D_80113794[]; \
|
|
extern unsigned char D_801137D8[]; \
|
|
extern unsigned char D_8011381C[]; \
|
|
extern unsigned char D_8011383C[]; \
|
|
extern unsigned char D_8011386C[]; \
|
|
extern unsigned char D_801138A4[]; \
|
|
extern unsigned char D_801138D0[]; \
|
|
extern unsigned char D_80113900[]; \
|
|
extern unsigned char D_80113944[]; \
|
|
extern unsigned char D_80113964[]; \
|
|
extern unsigned char D_8011399C[]; \
|
|
extern unsigned char D_801139E8[]; \
|
|
extern unsigned char D_80113A28[]; \
|
|
extern unsigned char D_80113A50[]; \
|
|
extern unsigned char D_80113A84[]; \
|
|
extern unsigned char D_80113AB0[]; \
|
|
extern unsigned char D_80113AE0[]; \
|
|
extern unsigned char D_80113B34[]; \
|
|
extern unsigned char D_80113B68[]; \
|
|
extern unsigned char D_80113BA4[]; \
|
|
extern unsigned char D_80113BC0[]; \
|
|
extern unsigned char D_80113BF0[]; \
|
|
extern unsigned char D_80113C20[]; \
|
|
extern unsigned char D_80113C3C[]; \
|
|
extern unsigned char D_80113C7C[]; \
|
|
unsigned char *func_80141CA4(void) { \
|
|
s32 iVar3; \
|
|
register s32 cVar1 __asm__("$3"); \
|
|
iVar3 = func_80029504(); \
|
|
if (iVar3 < 10) { \
|
|
return D_80112C04; \
|
|
} \
|
|
if (iVar3 < 0x14) { \
|
|
if (func_80029178(0xdf) & 0xff) { \
|
|
return D_80112D38; \
|
|
} \
|
|
if (func_80029178(0xe0) & 0xff) { \
|
|
return D_80112CE8; \
|
|
} \
|
|
cVar1 = func_80029178(0xde) & 0xff; \
|
|
if (cVar1) { \
|
|
return D_80112C9C; \
|
|
} \
|
|
return D_80112C50; \
|
|
} \
|
|
if (iVar3 < 0x1e) { \
|
|
return D_80112D78; \
|
|
} \
|
|
if (iVar3 < 0x28) { \
|
|
return D_80112DBC; \
|
|
} \
|
|
if (iVar3 < 0x32) { \
|
|
return D_80113B34; \
|
|
} \
|
|
if (iVar3 < 0x3c) { \
|
|
cVar1 = func_80029178(0xe5) & 0xff; \
|
|
if (cVar1 == 0) { \
|
|
return D_80112DF4; \
|
|
} \
|
|
return D_80112E14; \
|
|
} \
|
|
if (iVar3 < 0x46) { \
|
|
return D_80112E40; \
|
|
} \
|
|
if (iVar3 < 0x50) { \
|
|
return D_80112E6C; \
|
|
} \
|
|
if (iVar3 < 0x5a) { \
|
|
return D_80112EBC; \
|
|
} \
|
|
if (iVar3 < 100) { \
|
|
return D_80112F0C; \
|
|
} \
|
|
if (iVar3 < 0x78) { \
|
|
return D_80112F48; \
|
|
} \
|
|
if (iVar3 < 0x82) { \
|
|
return D_80112F9C; \
|
|
} \
|
|
if (iVar3 < 0x85) { \
|
|
if (func_80029178(0x9e) & 0xff) { \
|
|
return D_80113074; \
|
|
} \
|
|
cVar1 = func_80029178(0xef) & 0xff; \
|
|
if (cVar1 == 0) { \
|
|
return D_80112FDC; \
|
|
} \
|
|
return D_8011302C; \
|
|
} \
|
|
if (iVar3 < 0x87) { \
|
|
return D_801130B8; \
|
|
} \
|
|
if (iVar3 < 0x8c) { \
|
|
return D_801130E8; \
|
|
} \
|
|
if (iVar3 < 0x96) { \
|
|
return D_80113138; \
|
|
} \
|
|
if (iVar3 < 200) { \
|
|
return D_8011317C; \
|
|
} \
|
|
if (iVar3 < 0xd2) { \
|
|
return D_801131A8; \
|
|
} \
|
|
if (iVar3 < 0xdc) { \
|
|
return D_801131E8; \
|
|
} \
|
|
if (iVar3 < 0xf0) { \
|
|
return D_80113214; \
|
|
} \
|
|
if (iVar3 < 0x104) { \
|
|
return D_80113254; \
|
|
} \
|
|
if (iVar3 < 0x118) { \
|
|
return D_80113278; \
|
|
} \
|
|
if (iVar3 < 0x136) { \
|
|
if (func_80029178(0xf9) & 0xff) { \
|
|
return D_801132E4; \
|
|
} \
|
|
cVar1 = func_80029178(0xfa) & 0xff; \
|
|
if (cVar1) { \
|
|
return D_80113324; \
|
|
} \
|
|
return D_801132B8; \
|
|
} \
|
|
if (iVar3 < 0x140) { \
|
|
return D_80113360; \
|
|
} \
|
|
if (iVar3 < 0x14a) { \
|
|
cVar1 = func_80029178(0xff) & 0xff; \
|
|
if (cVar1) { \
|
|
return D_801133F4; \
|
|
} \
|
|
return D_801133A4; \
|
|
} \
|
|
if (iVar3 < 0x17c) { \
|
|
return D_80113440; \
|
|
} \
|
|
if (iVar3 < 0x186) { \
|
|
return D_80113474; \
|
|
} \
|
|
if (iVar3 < 400) { \
|
|
return D_801134B0; \
|
|
} \
|
|
if (iVar3 < 0x19a) { \
|
|
return D_801134FC; \
|
|
} \
|
|
if (iVar3 < 0x1ae) { \
|
|
return D_80113530; \
|
|
} \
|
|
if (iVar3 < 0x1cc) { \
|
|
return D_80113554; \
|
|
} \
|
|
if (iVar3 < 0x1d1) { \
|
|
return D_801135A8; \
|
|
} \
|
|
if (iVar3 < 0x1e0) { \
|
|
return D_80113600; \
|
|
} \
|
|
if (iVar3 < 600) { \
|
|
cVar1 = func_80029178(0xb3) & 0xff; \
|
|
if (cVar1 == 0) { \
|
|
return D_80113650; \
|
|
} \
|
|
return D_80113694; \
|
|
} \
|
|
if (iVar3 < 0x276) { \
|
|
if (func_80029178(0x10c) & 0xff) { \
|
|
return D_80113744; \
|
|
} \
|
|
cVar1 = func_80029178(0x10d) & 0xff; \
|
|
if (cVar1) { \
|
|
return D_80113770; \
|
|
} \
|
|
return D_801136DC; \
|
|
} \
|
|
if (iVar3 < 0x280) { \
|
|
return D_80113724; \
|
|
} \
|
|
if (iVar3 < 0x28a) { \
|
|
return D_80113794; \
|
|
} \
|
|
if (iVar3 < 0x29e) { \
|
|
return D_801137D8; \
|
|
} \
|
|
if (iVar3 < 0x2a8) { \
|
|
return D_8011381C; \
|
|
} \
|
|
if (iVar3 < 700) { \
|
|
return D_8011383C; \
|
|
} \
|
|
if (iVar3 < 0x2c6) { \
|
|
return D_8011386C; \
|
|
} \
|
|
if (iVar3 < 0x2d0) { \
|
|
return D_801138A4; \
|
|
} \
|
|
if (iVar3 < 0x2da) { \
|
|
return D_801138D0; \
|
|
} \
|
|
if (iVar3 < 0x2e4) { \
|
|
return D_80113900; \
|
|
} \
|
|
if (iVar3 < 0x2f8) { \
|
|
return D_80113944; \
|
|
} \
|
|
if (iVar3 < 900) { \
|
|
return D_80113964; \
|
|
} \
|
|
if (iVar3 < 0x3a2) { \
|
|
return D_8011399C; \
|
|
} \
|
|
if (iVar3 < 0x3ac) { \
|
|
cVar1 = func_800291B4(0x3b) & 0xff; \
|
|
if ((u32)cVar1 < 10) { \
|
|
return D_801139E8; \
|
|
} \
|
|
return D_80113A28; \
|
|
} \
|
|
if (iVar3 < 0x3b6) { \
|
|
return D_80113A50; \
|
|
} \
|
|
if (iVar3 < 0x3ca) { \
|
|
__asm__ __volatile__(""); \
|
|
return D_80113A28; \
|
|
} \
|
|
if (iVar3 < 0x3d4) { \
|
|
return D_80113A84; \
|
|
} \
|
|
if (iVar3 < 0x3f2) { \
|
|
return D_80113AB0; \
|
|
} \
|
|
if (iVar3 < 0x44c) { \
|
|
return D_80113AE0; \
|
|
} \
|
|
if (iVar3 < 0x47e) { \
|
|
return D_80113B68; \
|
|
} \
|
|
if (iVar3 < 0x492) { \
|
|
return D_80113BA4; \
|
|
} \
|
|
if (iVar3 < 0x4b0) { \
|
|
return D_80113BC0; \
|
|
} \
|
|
if (iVar3 < 0x4ba) { \
|
|
cVar1 = func_80029178(0x138) & 0xff; \
|
|
if (cVar1 == 0) { \
|
|
return D_80113BF0; \
|
|
} \
|
|
return D_80113C20; \
|
|
} \
|
|
if (iVar3 < 0x636) { \
|
|
cVar1 = func_80029178(0x143) & 0xff; \
|
|
if (cVar1 == 0) { \
|
|
return D_80113C20; \
|
|
} \
|
|
return D_80113C3C; \
|
|
} \
|
|
return D_80113C7C; \
|
|
}
|
|
|
|
#define DEFINE_func_80171C64() \
|
|
extern void func_80171EC8(s32 a0); \
|
|
extern void func_80146D90(s32 a0); \
|
|
s32 func_80171C64(s32 param_1, s32 param_2) \
|
|
{ \
|
|
register s32 s __asm__("$17") = param_1; \
|
|
register s32 d __asm__("$16") = param_2; \
|
|
u8 v; \
|
|
((void (*)(void))func_80171EC8)(); \
|
|
v = *(u8 *)(s + 0x20C); \
|
|
*(u8 *)(s + 0x20C) = v + 1; \
|
|
if ((v & 0xFF) == (d & 0xFF)) { \
|
|
func_80146D90(s); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80158548() \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern s32 func_80161208(); \
|
|
void func_80158548(s32 param_1) { \
|
|
*(u32 *)(param_1 + 0x44) = *(u32 *)(param_1 + 0x44) | 2; \
|
|
if (*(u16 *)(param_1 + 0xb8) & 0x8000) { \
|
|
((void (*)(void))func_801599A4)(); \
|
|
((void (*)(s32))func_80159B3C)(param_1); \
|
|
} else { \
|
|
((void (*)(s32))func_80161208)(param_1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801687CC() \
|
|
extern void func_80168828(void); \
|
|
extern void func_80146C3C(void); \
|
|
void func_801687CC(s32 param_1) \
|
|
{ \
|
|
if (*(int *)(param_1 + 0x1c) < 3) { \
|
|
func_80168828(); \
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1; \
|
|
} else { \
|
|
((void (*)(int))func_80146C3C)(param_1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013E588() \
|
|
extern s32 func_800D0EC4(void); \
|
|
extern void func_80141874(void); \
|
|
extern u8 D_800B9A15; \
|
|
extern unsigned char D_800B9A13; \
|
|
extern u16 D_80115110; \
|
|
extern unsigned short D_80115112; \
|
|
extern void *D_8011DB24; \
|
|
void func_8013E588(void * _arg0) \
|
|
{ \
|
|
if (func_800D0EC4() == 0) { \
|
|
D_800B9A15 = 1; \
|
|
D_800B9A13 = 2; \
|
|
D_80115110 = 1; \
|
|
D_80115112 = 0; \
|
|
D_8011DB24 = func_80141874; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80171AB0() \
|
|
extern s32 func_8014C568(void *a0); \
|
|
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
|
|
s16 func_80171AB0(s32 param_1, void * _arg1) \
|
|
{ \
|
|
short sVar1; \
|
|
sVar1 = ((short (*)(void))func_8014C568)(); \
|
|
sVar1 = ((short (*)(int, int, int))func_80012B04)((int)*(short *)(*(int *)(param_1 + 0x20) + 0x12), (int)sVar1, 4); \
|
|
*(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12) = \
|
|
*(short *)(*(int *)(param_1 + 0x20) + 0x12) + sVar1 & 0xfff; \
|
|
return (int)sVar1; \
|
|
}
|
|
|
|
#define DEFINE_func_80172A2C() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern void func_80149350(s32 arg0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_80172A8C(void *a0); \
|
|
extern s16 D_80126B30; \
|
|
void func_80172A2C(int param_1) \
|
|
{ \
|
|
((void (*)(int))func_80147060)(param_1); \
|
|
*(short *)(param_1 + 0x136) = 2; \
|
|
*(short *)(param_1 + 0x132) = *(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12); \
|
|
((void (*)(int, void *, void *))func_80149350)(param_1, &D_80126B30, &D_80126B30); \
|
|
((void (*)(int))func_80171A1C)(param_1); \
|
|
((void (*)(int))func_80172A8C)(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_8016951C() \
|
|
extern void func_80169584(s32 param_1); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016951C(int param_1) \
|
|
{ \
|
|
int iVar1; \
|
|
iVar1 = *(int *)(param_1 + 0x1c); \
|
|
*(int *)(param_1 + 0x1c) = iVar1 + 1; \
|
|
if (iVar1 < 10) { \
|
|
((void (*)(void))func_80169584)(); \
|
|
func_800D22E4(param_1); \
|
|
*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 0x8000; \
|
|
} else { \
|
|
((void (*)(int))func_80146C3C)(param_1); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80156370() \
|
|
extern S801563EC *func_801563EC(u16 idx); \
|
|
extern s32 rand(void); \
|
|
u16 func_80156370(u16 param_1) { \
|
|
u16 *puVar3; \
|
|
u16 uVar1; \
|
|
u16 uVar2; \
|
|
s32 iVar4; \
|
|
s32 iVar5; \
|
|
puVar3 = ((u16 * (*)(s32))func_801563EC)(param_1 & 0xFFFF); \
|
|
uVar1 = puVar3[0] & 0xfff; \
|
|
uVar2 = puVar3[1]; \
|
|
iVar4 = rand(); \
|
|
iVar5 = uVar2 + 1; \
|
|
return (u16)(uVar1 + iVar4 % iVar5); \
|
|
}
|
|
|
|
#define DEFINE_func_8016DB34() \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016DB34(s32 param_1) \
|
|
{ \
|
|
s32 iVar2; \
|
|
iVar2 = *(s32 *)(param_1 + 0x20); \
|
|
if (((s32 (*)(s32, s32))func_80128ED8)(iVar2, param_1 + 0x24) != 0) { \
|
|
((void (*)(s32))func_80146C3C)(param_1); \
|
|
} else { \
|
|
*(s8 *)(iVar2 + 0x27) = *(u8 *)(param_1 + 0x28) - 0x70; \
|
|
*(s32 *)(param_1 + 0x10) = *(s32 *)(param_1 + 0x10) - 0x60000; \
|
|
*(s32 *)(param_1 + 0x14) = *(s32 *)(param_1 + 0x14) + *(s32 *)(param_1 + 0x10); \
|
|
*(s32 *)(param_1 + 0x8) = *(s32 *)(param_1 + 0x8) + *(s32 *)(param_1 + 0x14); \
|
|
*(s16 *)(iVar2 + 0x18) = *(s16 *)(iVar2 + 0x18) - 0x500; \
|
|
*(s16 *)(iVar2 + 0x1a) = *(s16 *)(iVar2 + 0x1a) - 0x300; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013E2C4() \
|
|
extern s16 D_80126CAC; \
|
|
extern short D_80126CAE; \
|
|
extern s16 D_80126CB0; \
|
|
int func_8013E2C4(short *a0) { \
|
|
int in[3]; \
|
|
int out[3]; \
|
|
in[0] = D_80126CAC - a0[0]; \
|
|
in[1] = D_80126CAE - a0[1]; \
|
|
in[2] = D_80126CB0 - a0[2]; \
|
|
__asm__ __volatile__( \
|
|
"lwc2 $9, 0(%0)\n" \
|
|
"lwc2 $10, 4(%0)\n" \
|
|
"lwc2 $11, 8(%0)\n" \
|
|
"nop\n" \
|
|
"nop\n" \
|
|
"sqr 0\n" \
|
|
: : "r"(&in[0]) : "$9", "$10", "$11", "memory"); \
|
|
{ \
|
|
register int *pout __asm__("$2") = &out[0]; \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" \
|
|
"swc2 $26, 4(%0)\n" \
|
|
"swc2 $27, 8(%0)\n" \
|
|
: : "r"(pout) : "memory"); \
|
|
} \
|
|
return (out[0] + out[1] + out[2]) - 0x90001U < 0x18FFF; \
|
|
}
|
|
|
|
#define DEFINE_func_8016A1CC() \
|
|
extern u8 D_80078EBF; \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_80147364(u16, s32); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016A1CC(int param_1) \
|
|
{ \
|
|
register int iVar1 __asm__("$2"); \
|
|
if (D_80078EBF != 0) { \
|
|
iVar1 = D_80078EBF - 0x18; \
|
|
*(int *)(param_1 + 0x30) = iVar1; \
|
|
if (iVar1 >= 0) { \
|
|
iVar1 = *(int *)(param_1 + 0x1c) + 1; \
|
|
*(int *)(param_1 + 0x1c) = iVar1; \
|
|
if (iVar1 == 4) { \
|
|
func_80147324(0x44c); \
|
|
} \
|
|
if (D_80078EBF >= 0x80) { \
|
|
if (*(short *)(param_1 + 0x2a) == 0) { \
|
|
*(short *)(param_1 + 0x2a) = 1; \
|
|
*(int *)(param_1 + 0x1c) = 0x100; \
|
|
} \
|
|
if ((*(unsigned int *)(param_1 + 0x1c) & 0x1f) == 0) { \
|
|
func_80147324(0x44d); \
|
|
} \
|
|
} \
|
|
} \
|
|
} else { \
|
|
((void (*)(int, int))func_80147364)(4, 0x44c); \
|
|
((void (*)(int))func_80146C3C)(param_1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80158AE4() \
|
|
extern s32 D_800AE6AC; \
|
|
extern s32 D_800AE6B0; \
|
|
extern s32 D_80078EC8; \
|
|
extern void func_8016F264(void); \
|
|
extern void func_80165840(void); \
|
|
extern void func_801658DC(void); \
|
|
extern s32 func_80165A20(s32 a0); \
|
|
extern void func_80165A78(s32); \
|
|
extern void func_8014BF48(void); \
|
|
extern void func_8014CBF8(void *a0); \
|
|
extern void func_8014B160(s32 a0); \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_80158AE4(void * a0) \
|
|
{ \
|
|
D_800AE6B0 = D_800AE6AC | 0x1000000; \
|
|
func_8016F264(); \
|
|
((void (*)(s32))func_80165840)(a0); \
|
|
((void (*)(s32))func_801658DC)(a0); \
|
|
func_80165A20(a0); \
|
|
func_80165A78(a0); \
|
|
func_8014BF48(); \
|
|
func_8014CBF8((void *)a0); \
|
|
func_8014B160(a0); \
|
|
func_80149020((s32 *)a0); \
|
|
*(s16 *)(a0 + 0x12E) = 0; \
|
|
*(s16 *)(a0 + 0x74) = 0x1000; \
|
|
*(s16 *)(a0 + 0x72) = 0x1000; \
|
|
*(s16 *)(a0 + 0x70) = 0x1000; \
|
|
*(s16 *)(a0 + 0x6C) = 0x1000; \
|
|
*(s16 *)(a0 + 0x6A) = 0x1000; \
|
|
*(s16 *)(a0 + 0x68) = 0x1000; \
|
|
*(s16 *)(a0 + 0x64) = 0x1000; \
|
|
*(s16 *)(a0 + 0x62) = 0x1000; \
|
|
*(s16 *)(a0 + 0x60) = 0x1000; \
|
|
*(s16 *)(a0 + 0x1BA) = 0x1000; \
|
|
*(s16 *)(a0 + 0x1B8) = 0x1000; \
|
|
*(s16 *)(a0 + 0xF6) = 0x1000; \
|
|
D_80078EC8 = 0; \
|
|
*(s16 *)(a0 + 0x1C8) = 0; \
|
|
func_80146CA0((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80151780() \
|
|
extern s16 D_8011DB1A; \
|
|
extern s32 D_80127518; \
|
|
extern s32 D_801151FC; \
|
|
extern s32 func_801725CC(u8 *a0); \
|
|
extern s32 func_80029D3C(void); \
|
|
extern void func_80151878(void); \
|
|
extern void func_80153B58(s32 *a0); \
|
|
void func_80151780(s32 a0) { \
|
|
u8 idx; \
|
|
s32 *tbl; \
|
|
s32 fp; \
|
|
idx = *(u8 *)(a0 + 0xDD); \
|
|
tbl = *(s32 **)(a0 + 0x1F0); \
|
|
if (idx != 0 && idx < 0x21) { \
|
|
fp = tbl[idx - 1]; \
|
|
if (fp != 0) { \
|
|
((s32 (*)(s32))func_801725CC)(a0); \
|
|
{ \
|
|
register s32 cur __asm__("$4"); \
|
|
cur = D_8011DB1A; \
|
|
if (cur != 1000) { \
|
|
D_8011DB1A = func_80029D3C(); \
|
|
} \
|
|
} \
|
|
(*(void (**)(s32))((s32)tbl + (s32)(*(u8 *)(a0 + 0xDD)) * 4 - 4))(a0); \
|
|
D_801151FC = D_80127518; \
|
|
} else { \
|
|
((void (*)(s32))func_80151878)(a0); \
|
|
} \
|
|
} else { \
|
|
(*(void (**)(s32))((s32)tbl + 8))(a0); \
|
|
} \
|
|
if ((*(u16 *)(a0 + 0xF0) & 0x200) != 0) { \
|
|
((void (*)(s32))func_80153B58)(a0); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80155150() \
|
|
extern void func_8001D150(s32, s32); \
|
|
extern void func_8001D130(int, int); \
|
|
extern u8 func_8014BEF8(void); \
|
|
void func_80155150(int param_1) { \
|
|
int iVar1; \
|
|
unsigned int uVar2; \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x19); \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x18); \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x16); \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x15); \
|
|
uVar2 = *(unsigned int *)(param_1 + 0x44); \
|
|
if ((uVar2 & 0x400) != 0) { \
|
|
return; \
|
|
} \
|
|
if ((uVar2 & 0x20000) == 0) { \
|
|
if ((uVar2 & 0x20000000) != 0) { \
|
|
func_8001D130(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x19); \
|
|
} else { \
|
|
iVar1 = ((int (*)(int))func_8014BEF8)(param_1); \
|
|
if (iVar1 != 0) { \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x19); \
|
|
func_8001D130(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x18); \
|
|
goto LAB_80155260; \
|
|
} \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x19); \
|
|
} \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x18); \
|
|
} \
|
|
LAB_80155260: \
|
|
if ((*(unsigned int *)(param_1 + 0x44) & 0x10000000) != 0) { \
|
|
func_8001D130(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x16); \
|
|
goto LAB_801552CC; \
|
|
} \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x16); \
|
|
func_8001D130(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x15); \
|
|
if ((*(unsigned int *)(param_1 + 0x44) & 4) == 0) { \
|
|
return; \
|
|
} \
|
|
LAB_801552CC: \
|
|
func_8001D150(*(int *)(*(int *)(param_1 + 0x20) + 0x24), 0x15); \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80165A50() \
|
|
extern u8 D_80078EC1; \
|
|
extern u8 D_80078EC2; \
|
|
extern u8 D_80078EC3; \
|
|
extern s8 D_80078EC4; \
|
|
s32 func_80165A50(s32 _arg0) \
|
|
{ \
|
|
D_80078EC1 = 0; \
|
|
D_80078EC2 = 0; \
|
|
D_80078EC3 = 0; \
|
|
D_80078EC4 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8016F4C4() \
|
|
extern void func_8016F0E4(void); \
|
|
extern void func_80165770(void); \
|
|
s32 func_8016F4C4(s32 param_1) \
|
|
{ \
|
|
func_8016F0E4(); \
|
|
((void (*)(s32))func_80165770)(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_80142740() \
|
|
extern s32 func_8012BEE8(s32 a0); \
|
|
extern s32 func_8012AD50(void *a0); \
|
|
void func_80142740(int param_1) \
|
|
{ \
|
|
if (((int (*)(void))func_8012BEE8)() != 0) { \
|
|
((void (*)(int))func_8012AD50)(param_1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801746A4() \
|
|
extern void func_80172710(void); \
|
|
extern s32 func_80172760(s32 a0); \
|
|
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80174684(void *); \
|
|
void func_801746A4(void) \
|
|
{ \
|
|
((void (*)(void *, int))func_8016EDEC)(func_80172710, 0x1000000); \
|
|
func_80174684(func_80172760); \
|
|
}
|
|
|
|
#define DEFINE_func_8016D64C() \
|
|
extern short func_8016CBC0(void); \
|
|
extern void func_80146C3C(void); \
|
|
void func_8016D64C(int param_1) \
|
|
{ \
|
|
if (func_8016CBC0() == 0) { \
|
|
((void (*)(int))func_80146C3C)(param_1); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_801726D0() \
|
|
extern s32 func_80172760(s32 a0); \
|
|
extern s32 func_80174650(s32); \
|
|
extern void (*D_80127088)(void); \
|
|
extern s32 D_801270BC; \
|
|
extern s16 D_80126B0C; \
|
|
void func_801726D0(void * _arg0) \
|
|
{ \
|
|
D_80127088 = func_80172760; \
|
|
D_801270BC = 0; \
|
|
D_80126B0C = 0; \
|
|
((void (*)(void))func_80174650)(); \
|
|
}
|
|
|
|
#define DEFINE_func_801741A8() \
|
|
extern void func_8014BDC8(void); \
|
|
extern void func_8014BB0C(void); \
|
|
extern void func_8014B2A8(void); \
|
|
extern s32 D_80078ED8; \
|
|
extern s32 D_80078EA4; \
|
|
void func_801741A8(s32 _arg0) \
|
|
{ \
|
|
func_8014BDC8(); \
|
|
func_8014BB0C(); \
|
|
func_8014B2A8(); \
|
|
D_80078ED8 = 0xA00000; \
|
|
D_80078EA4 = 0xA00000; \
|
|
}
|
|
|
|
#define DEFINE_func_8015086C() \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_8014B2F8(void); \
|
|
extern void func_80147324(s32 arg0); \
|
|
void func_8015086C(int param_1) \
|
|
{ \
|
|
((void (*)(int, int, int, int))func_80146994)(0x48, param_1, 0, 0); \
|
|
((void (*)(int))func_8014B2F8)(param_1); \
|
|
func_80147324(0xA1B); \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_801730B4() \
|
|
extern void func_8014706C(void *arg0); \
|
|
extern void func_801542A4(); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern void func_801730FC(struct S801730FC *a0); \
|
|
extern s32 D_80127508; \
|
|
void func_801730B4(s32 a0) { \
|
|
func_8014706C((void *)a0); \
|
|
((void (*)(s32, s32))func_801542A4)(a0, D_80127508); \
|
|
((void (*)(void *))func_80171A1C)((void *)a0); \
|
|
((void (*)(void *))func_801730FC)((void *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_801723C4() \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_8014A1B0(s32 a0, s32 a1); \
|
|
void func_801723C4(s32 param_1, s32 param_2) \
|
|
{ \
|
|
((void (*)(void))func_801599A4)(); \
|
|
((void (*)(int, int))func_80147078)(param_1, 0xd); \
|
|
*(int *)(param_1 + 0x178) = param_2; \
|
|
func_8014A1B0(param_1, param_2); \
|
|
}
|
|
|
|
#define DEFINE_func_80157B74() \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern s32 func_80161208(); \
|
|
void func_80157B74(int param_1) \
|
|
{ \
|
|
if (*(unsigned short *)(param_1 + 0xB8) == 0x8000) { \
|
|
((void (*)(void))func_801599A4)(); \
|
|
((void (*)(int))func_80159B3C)(param_1); \
|
|
} else { \
|
|
((void (*)(int))func_80161208)(param_1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80170DE0() \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_8011F73C; \
|
|
extern s32 D_8011F740; \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern void func_801718AC(void *a0); \
|
|
void func_80170DE0(u8 * _arg0) \
|
|
{ \
|
|
s32 arg; \
|
|
if (((u8 (*)(s32))func_80029178)(D_8011F738)) { \
|
|
arg = D_8011F740; \
|
|
} else { \
|
|
arg = D_8011F73C; \
|
|
} \
|
|
((void (*)(s32))func_801718AC)(arg); \
|
|
}
|
|
|
|
#define DEFINE_func_80170EAC() \
|
|
extern void *D_8011F738; \
|
|
extern s32 D_8011F73C; \
|
|
extern s32 D_8011F740; \
|
|
extern int func_800D0F8C(int a0); \
|
|
extern void func_801718AC(void *a0); \
|
|
void func_80170EAC(u8 * _arg0) \
|
|
{ \
|
|
s32 arg; \
|
|
if (((int (*)(volatile char))func_800D0F8C)(D_8011F738) != 0) \
|
|
{ \
|
|
arg = D_8011F73C; \
|
|
} \
|
|
else \
|
|
{ \
|
|
arg = D_8011F740; \
|
|
} \
|
|
((void (*)(s32)) func_801718AC)(arg); \
|
|
}
|
|
|
|
#define DEFINE_func_80142BB4() \
|
|
extern void func_801439C0(u8 *a0); \
|
|
extern void func_8012AD44(s32 *a0, s16 a1); \
|
|
extern void func_8012C218(void *a0); \
|
|
extern void func_8012C098(void); \
|
|
void func_80142BB4(s32 * param_1, s32 param_2, s32 param_3) \
|
|
{ \
|
|
void *new_var; \
|
|
new_var = param_1; \
|
|
if ((*((s16 *) (new_var + 0xfc))) == 1) \
|
|
{ \
|
|
if ((param_2 != ((char) 0)) || ((*((s16 *) (new_var + 0x100))) == 0)) \
|
|
{ \
|
|
*((u16 *) (new_var + 0x5c)) = (*((u16 *) (new_var + 0x5c))) & 0xfefe; \
|
|
*((u32 *) ((*((s32 *) (new_var + 0x20))) + 4)) = (*((u32 *) ((*((s32 *) (new_var + 0x20))) + 4))) | 0x80000000; \
|
|
func_801439C0(*((u8 **) (new_var + 0xcc))); \
|
|
func_8012AD44((s32 *) new_var, param_3); \
|
|
} \
|
|
} \
|
|
else \
|
|
if ((param_2 != 0) || ((*((s16 *) (new_var + 0x100))) == 0)) \
|
|
{ \
|
|
do { func_8012C218(new_var = (void *) new_var); } while (0); \
|
|
} \
|
|
else \
|
|
{ \
|
|
((void (*)(void *)) func_8012C098)((void *) new_var); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80153E00() \
|
|
extern u8 D_80078E78[]; \
|
|
extern s32 D_80127518; \
|
|
extern s16 currentLocationId; \
|
|
extern s16 D_8011DB0C; \
|
|
extern u16 D_8011F748; \
|
|
extern s16 D_8011DB1A; \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern u16 func_80148800(s32 *a0); \
|
|
extern s32 func_8014891C(s32 a0); \
|
|
extern s32 func_80148980(u8 *a0); \
|
|
extern s32 func_801489E8(s32 a0); \
|
|
extern s32 func_80148A48(s32 a0); \
|
|
extern void func_80153C18(void); \
|
|
extern void func_8015410C(void); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_80165718(s32 a0); \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
|
|
extern void func_8014B310(void); \
|
|
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80153E00(s32 param_1) { \
|
|
s32 b; \
|
|
register u32 uVar3 __asm__("$17"); \
|
|
register u32 s2 __asm__("$18"); \
|
|
register u8 *s3 __asm__("$19"); \
|
|
register u32 t __asm__("$2"); \
|
|
s32 iVar4; \
|
|
s32 db0c; \
|
|
func_80149020((s32 *)param_1); \
|
|
s3 = D_80078E78; \
|
|
b = *(u8 *)(param_1 + 0xA9); \
|
|
if (b == 0x53) goto LAB_E74; \
|
|
if (b < 0x54) { \
|
|
if (b == 0x41) goto LAB_E64; \
|
|
t = (u16)uVar3; \
|
|
goto LAB_EC8; \
|
|
} \
|
|
if (b == 0x73) goto LAB_E74; \
|
|
t = (u16)uVar3; \
|
|
goto LAB_EC8; \
|
|
LAB_E64: \
|
|
uVar3 = func_80148800((s32 *)param_1) & 0xf000; \
|
|
goto LAB_EC4; \
|
|
LAB_E74: \
|
|
iVar4 = func_8014891C(param_1); \
|
|
s2 = (u32)(iVar4 != 0) << 0xc; \
|
|
uVar3 = s2; \
|
|
iVar4 = func_80148980((u8 *)param_1); \
|
|
if (iVar4 != 0) { \
|
|
uVar3 = s2 | 0x4000; \
|
|
} \
|
|
iVar4 = func_801489E8(param_1); \
|
|
if (iVar4 != 0) { \
|
|
uVar3 = uVar3 | 0x8000; \
|
|
} \
|
|
iVar4 = func_80148A48(param_1); \
|
|
if (iVar4 != 0) { \
|
|
uVar3 = uVar3 | 0x2000; \
|
|
} \
|
|
LAB_EC4: \
|
|
t = (u16)uVar3; \
|
|
LAB_EC8: \
|
|
uVar3 = t >> 0xc; \
|
|
if ((((u16)uVar3 != 0) && (((u16)uVar3 & *(u8 *)(param_1 + 0xdf)) == 0)) && \
|
|
(iVar4 = *(u8 *)(param_1 + 0xde) - 1, *(u8 *)(param_1 + 0xde) = (u8)iVar4, (u8)iVar4 == 0)) { \
|
|
((void (*)(s32))func_80153C18)(param_1); \
|
|
} \
|
|
*(u8 *)(param_1 + 0xdf) = (u8)uVar3; \
|
|
if (D_80127518 == 0) { \
|
|
if (currentLocationId != 0x3075) { \
|
|
*(u16 *)(param_1 + 0x88) = *(u16 *)(param_1 + 0x244); \
|
|
*(u16 *)(param_1 + 0x8a) = *(u16 *)(param_1 + 0x246); \
|
|
*(u16 *)(param_1 + 0x8c) = *(u16 *)(param_1 + 0x248); \
|
|
} \
|
|
((void (*)(s32))func_8015410C)(param_1); \
|
|
func_80159B3C((void *)param_1); \
|
|
func_80165718(param_1); \
|
|
return; \
|
|
} \
|
|
db0c = *(u16 *)&D_8011DB0C; \
|
|
if (db0c == 1) goto LAB_FA8; \
|
|
if (db0c < 2) goto LAB_AC; \
|
|
if (db0c == 2) goto LAB_FD4; \
|
|
if (db0c != 3) goto LAB_AC; \
|
|
((void (*)(s32))func_8014B310)(param_1); \
|
|
LAB_FA8: \
|
|
func_8014BC44(param_1, (s32)D_8011DB1A); \
|
|
func_8014ACE8((void *)param_1, 1, (s32)D_8011DB1A); \
|
|
goto LAB_9C; \
|
|
LAB_FD4: \
|
|
func_8014BC44(param_1, (s32)D_8011DB1A); \
|
|
func_8014ACE8((void *)param_1, 1, (s32)D_8011DB1A); \
|
|
((void (*)(s32))func_8014B310)(param_1); \
|
|
func_80146994(0x42, param_1, 0, 0); \
|
|
func_80146A6C(0x42, (void *)param_1, 0x20, 0, 0, 1, 0); \
|
|
func_80146A6C(0x42, (void *)param_1, 0, 0, 0x20, 1, 0); \
|
|
func_80146A6C(0x42, (void *)param_1, -0x20, 0, 0, 1, 0); \
|
|
func_80146A6C(0x42, (void *)param_1, 0, 0, -0x20, 1, 0); \
|
|
LAB_9C: \
|
|
D_8011DB0C = 0; \
|
|
D_8011F748 = 0; \
|
|
LAB_AC: \
|
|
if (D_8011F748 != 0) { \
|
|
((void (*)(s32))func_8015410C)(param_1); \
|
|
func_80159B3C((void *)param_1); \
|
|
func_8014BC44(param_1, *(u16 *)(s3 + 0x3C)); \
|
|
D_8011DB0C = 0; \
|
|
D_8011F748 = 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80128DB4() \
|
|
extern void func_80018450(s32 a0, s32 a1); \
|
|
extern void func_800183E0(s32 a0); \
|
|
s32 func_80128DB4(s32 a0, s32 *a1) { \
|
|
s32 base = a1[0]; \
|
|
s16 cnt = *(s16 *)((u8 *)a1 + 6); \
|
|
if (cnt == 0) { \
|
|
return 1; \
|
|
} \
|
|
cnt = cnt - 1; \
|
|
*(s16 *)((u8 *)a1 + 6) = cnt; \
|
|
if (cnt > 0) { \
|
|
return 0; \
|
|
} \
|
|
{ \
|
|
s16 idx = *(s16 *)((u8 *)a1 + 4); \
|
|
u32 flags = *(u32 *)(base + idx * 8 + 4); \
|
|
if ((flags & 0xC0) == 0xC0) { \
|
|
*(s16 *)((u8 *)a1 + 6) = 0; \
|
|
return 1; \
|
|
} \
|
|
if ((flags & 0x80) != 0) { \
|
|
*(s16 *)((u8 *)a1 + 4) = 0; \
|
|
} else { \
|
|
*(s16 *)((u8 *)a1 + 4) = idx + 1; \
|
|
} \
|
|
*(s16 *)((u8 *)a1 + 6) = \
|
|
*(u32 *)(base + *(s16 *)((u8 *)a1 + 4) * 8 + 4) & 0x3F; \
|
|
if (a0 != 0) { \
|
|
func_80018450(a0, *(s32 *)(base + *(s16 *)((u8 *)a1 + 4) * 8)); \
|
|
} else { \
|
|
func_800183E0(*(s32 *)(base + *(s16 *)((u8 *)a1 + 4) * 8)); \
|
|
} \
|
|
return 0; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801300F4() \
|
|
extern s32 func_80131A34(s32, s32); \
|
|
extern s32 func_8012BCCC(s32); \
|
|
extern s32 func_80131AC8(void *a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
void func_801300F4(s32 a0) { \
|
|
s32 done = 0; \
|
|
s32 r; \
|
|
*(u8 *)(a0 + 0xC1) = 0xD; \
|
|
if ((*(u32 *)(a0 + 0xB4) & 0x2000) != 0) { \
|
|
*(u16 *)(a0 + 0x5C) = 0; \
|
|
*(s32 *)(a0 + 0x1C) = 0x1E; \
|
|
*(u16 *)(a0 + 0x98) = 0; \
|
|
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; \
|
|
r = func_80131A34(a0, 0x27); \
|
|
if (r != 0) { \
|
|
*(u8 *)(a0 + 0xC3) = 1; \
|
|
} else { \
|
|
*(u8 *)(a0 + 0xC3) = 0; \
|
|
} \
|
|
r = func_8012BCCC(a0); \
|
|
if (r < 0x9000) { \
|
|
r = ((s32 (*)(s32, s32))func_80131AC8)(a0, 0x30); \
|
|
done = 1; \
|
|
if (r != 0) goto skip; \
|
|
((s32 (*)(s32, s32))func_80131AC8)(a0, 0x31); \
|
|
} else { \
|
|
r = ((s32 (*)(s32, s32))func_80131AC8)(a0, 0x31); \
|
|
done = 1; \
|
|
if (r != 0) goto skip; \
|
|
((s32 (*)(s32, s32))func_80131AC8)(a0, 0x30); \
|
|
} \
|
|
done = 1; \
|
|
} \
|
|
skip: \
|
|
r = ((s32 (*)(s32, s32))func_80131CA8)(a0, 0x25); \
|
|
if (r != 0) { \
|
|
done = 1; \
|
|
} \
|
|
if (!done) { \
|
|
((void (*)(s32, s32))func_80131E00)(a0, 6); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80136D08() \
|
|
extern s32 AddPrim(s32, void *); \
|
|
extern s32 RotTransPers(s32, s32, s32 *, s32 *); \
|
|
extern void SetLineG2(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; \
|
|
void func_80136D08(s32 arg0, s32 arg1) { \
|
|
s32 sp10; \
|
|
s32 sp14; \
|
|
s32 temp_v0; \
|
|
s32 temp_v0_2; \
|
|
void *buf; \
|
|
func_8004914C(&D_800AF648); \
|
|
func_800491AC(&D_800AF648); \
|
|
buf = func_80010A08(0x14); \
|
|
SetLineG2(buf); \
|
|
*((u8 *)buf + 0xE) = 0xFF; \
|
|
*((u8 *)buf + 0x4) = 0xFF; \
|
|
*((u8 *)buf + 0xD) = 0x80; \
|
|
*((u8 *)buf + 0x5) = 0x80; \
|
|
*((u8 *)buf + 0xC) = 0x80; \
|
|
*((u8 *)buf + 0x6) = 0x80; \
|
|
temp_v0 = RotTransPers(arg0, (s32)buf + 8, &sp10, &sp14); \
|
|
temp_v0_2 = RotTransPers(arg1, (s32)buf + 0x10, &sp10, &sp14); \
|
|
temp_v0 = ((temp_v0 + temp_v0_2) >> 3) * 4; \
|
|
AddPrim(*(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + temp_v0, buf); \
|
|
}
|
|
|
|
#define DEFINE_func_80130AF0() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80131B14(); \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
extern int func_80131A34(int a0, int a1); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_80130AF0(int param_1) { \
|
|
*(unsigned char *)(param_1 + 0xc1) = 0x13; \
|
|
if ((*(unsigned int *)(param_1 + 0xc4) & 2) != 0) { \
|
|
func_80131CA8(param_1, 3); \
|
|
return; \
|
|
} \
|
|
if ((*(unsigned int *)(param_1 + 0xb4) & 0x20000) != 0) { \
|
|
((void (*)(int, int, int, int, int, int, int))func_80146A6C)(3, param_1, (int)*(short *)(param_1 + 0x7c), \
|
|
(int)*(short *)(param_1 + 0x7e), \
|
|
(int)*(short *)(param_1 + 0x80), 0xc0cfff8, 0xf000b000); \
|
|
if (((*(unsigned int *)(param_1 + 0xb4) & 1) != 0) || \
|
|
((*(unsigned int *)(param_1 + 0xc4) & 2) == 0)) { \
|
|
((void (*)(int))func_80131B14)(param_1); \
|
|
if (*(short *)(param_1 + 0x76) < 1) { \
|
|
((void (*)(int, int))func_80131E00)(param_1, 0xc); \
|
|
return; \
|
|
} \
|
|
if (func_80131A34(param_1, 4) != 0) { \
|
|
*(unsigned char *)(param_1 + 0xc2) = 0; \
|
|
} else { \
|
|
*(unsigned char *)(param_1 + 0xc2) = 1; \
|
|
*(short *)(param_1 + 0x98) = 0; \
|
|
*(int *)(param_1 + 0x1c) = 0x10; \
|
|
} \
|
|
} \
|
|
func_80131CA8(param_1, 3); \
|
|
} \
|
|
func_80131CA8(param_1, 0x37); \
|
|
}
|
|
|
|
#define DEFINE_func_8012944C() \
|
|
extern s32 D_8005128C; \
|
|
extern s16 D_80114EE0; \
|
|
extern u8 D_800B9A78; \
|
|
extern void func_801298F4(void *arg0); \
|
|
extern void func_801299C8(s32 a, s32 b, s32 c); \
|
|
void func_8012944C(void) { \
|
|
register s32 base __asm__("$16"); /* $s0 = &D_800B9A78 */ \
|
|
register short *p __asm__("$17"); /* $s1 = base + 0x1E */ \
|
|
register s32 i __asm__("$18"); /* $s2 = counter */ \
|
|
register s32 sh __asm__("$19"); /* $s3 = 0x30000 + i*0x10000 */ \
|
|
s32 *g = (s32 *)&D_8005128C; \
|
|
int v; \
|
|
s32 arg; \
|
|
if (*g == 0x34420200) { \
|
|
*g = 0; \
|
|
} \
|
|
D_80114EE0 = 1; \
|
|
base = (s32)&D_800B9A78; \
|
|
i = 0; \
|
|
sh = 0x30000; \
|
|
p = (short *)(base + 0x1E); \
|
|
do { \
|
|
v = (u16)p[0xb]; \
|
|
if (v == 0x7ffe) goto F0; \
|
|
if (v < 0x7fff) { \
|
|
if (v == 0x7ffd) goto DC; \
|
|
goto L504; \
|
|
} \
|
|
if (v != 0x7fff) goto L504; \
|
|
goto L530; \
|
|
DC: \
|
|
if (i != 0) goto L530; \
|
|
func_801299C8(1, 1, base); \
|
|
goto L530; \
|
|
F0: \
|
|
arg = (i << 0x11) >> 0x10; \
|
|
func_801299C8(1, arg, base); \
|
|
goto L530; \
|
|
L504: \
|
|
func_801298F4((void *)base); \
|
|
arg = sh >> 0x10; \
|
|
*p = p[0x12] + p[0xe]; \
|
|
func_801299C8(1, arg, base); \
|
|
L530: \
|
|
p += 0x2a; \
|
|
sh += 0x10000; \
|
|
i += 1; \
|
|
base += 0x54; \
|
|
} while (i < 2); \
|
|
}
|
|
|
|
#define DEFINE_func_8012D4B4() \
|
|
extern void func_8012F214(s32 a0, s32 a1, s32 a2); \
|
|
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; \
|
|
void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { \
|
|
s32 sp10[2]; \
|
|
s32 sp18[2]; \
|
|
s32 sp20; \
|
|
s32 sp24; \
|
|
s32 temp_v0_2; \
|
|
void *temp_v0; \
|
|
func_8012F214(arg0, arg1, (s32)sp10); \
|
|
func_8012F214(arg0, arg2, (s32)sp18); \
|
|
temp_v0 = func_80010A08(0x10); \
|
|
(*(s32 *)((s8 *)(temp_v0) + (4))) = arg3; \
|
|
SetLineF2(temp_v0); \
|
|
func_8004914C(&D_800AF648); \
|
|
func_800491AC(&D_800AF648); \
|
|
temp_v0_2 = RotTransPers((s32)sp10, temp_v0 + 8, &sp20, &sp24); \
|
|
if ((temp_v0_2 > 0) && (sp24 >= 0) && \
|
|
(RotTransPers((s32)sp18, temp_v0 + 0xC, &sp20, &sp24) > 0) && (sp24 >= 0)) { \
|
|
AddPrim(*(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + (temp_v0_2 * 4), temp_v0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80137030() \
|
|
extern short D_800B9A02; \
|
|
extern u8 D_800A6518[]; \
|
|
extern void GsSortLine(void *a0, void *a1, s32 a2); \
|
|
void func_80137030(s16 a0, s16 a1) { \
|
|
struct { \
|
|
u32 tag; \
|
|
s16 x0; \
|
|
s16 y0; \
|
|
s16 x1; \
|
|
s16 y1; \
|
|
u8 r; \
|
|
u8 g; \
|
|
u8 b; \
|
|
} line; \
|
|
s16 cx; \
|
|
s16 cy; \
|
|
s16 tx; \
|
|
s16 ty; \
|
|
tx = a0 - 3; \
|
|
ty = a1 - 3; \
|
|
cx = a0; \
|
|
cy = a1; \
|
|
line.tag = 0; \
|
|
line.r = 0; \
|
|
line.g = 0xFF; \
|
|
line.b = 0; \
|
|
line.x0 = tx; \
|
|
line.y0 = ty; \
|
|
line.x1 = cx; \
|
|
line.y1 = cy; \
|
|
GsSortLine(&line, &D_800A6518[(u16)D_800B9A02 * 20], 0); \
|
|
tx = a0 + 3; \
|
|
line.tag = 0; \
|
|
line.r = 0; \
|
|
line.g = 0xFF; \
|
|
line.b = 0; \
|
|
line.x0 = tx; \
|
|
line.y0 = ty; \
|
|
line.x1 = cx; \
|
|
line.y1 = cy; \
|
|
GsSortLine(&line, &D_800A6518[(u16)D_800B9A02 * 20], 0); \
|
|
ty = a1 + 3; \
|
|
line.tag = 0; \
|
|
line.r = 0; \
|
|
line.g = 0xFF; \
|
|
line.b = 0; \
|
|
line.x0 = cx; \
|
|
line.y0 = ty; \
|
|
line.x1 = cx; \
|
|
line.y1 = cy; \
|
|
GsSortLine(&line, &D_800A6518[(u16)D_800B9A02 * 20], 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80132288() \
|
|
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); \
|
|
void func_80132288(int *param_1, int *param_2, int param_3) { \
|
|
int src; int dst; \
|
|
param_1[0] = (int)param_2; \
|
|
*(short *)((int)param_1 + 4) = 0; \
|
|
*(short *)((int)param_1 + 6) = 0; \
|
|
param_1[2] = param_3; \
|
|
{ \
|
|
register char *node __asm__("$6") = (char *)*(int *)param_2[0]; \
|
|
if (*(int *)(node + 4) == 1) src = *(int *)(node + 0xC); \
|
|
else src = (int)(node + ((*(unsigned int *)(node + 0xC) >> 2 << 2) + 0xC)); \
|
|
} \
|
|
{ \
|
|
char *p3 = (char *)param_3; \
|
|
if (*(int *)(p3 + 4) == 1) dst = *(int *)(p3 + 0xC); \
|
|
else dst = (int)(p3 + ((*(unsigned int *)(p3 + 0xC) >> 2 << 2) + 0xC)); \
|
|
func_8005C324(dst, src, *(int *)(p3 + 0x10) << 3); \
|
|
} \
|
|
{ \
|
|
register int *pn __asm__("$3") = (int *)param_2[0]; \
|
|
if (pn[2] != 0) { \
|
|
{ \
|
|
register char *node __asm__("$6") = (char *)pn[0]; \
|
|
if (*(int *)(node + 4) == 1) src = *(int *)(node + 0x14); \
|
|
else src = (int)(node + ((*(unsigned int *)(node + 0x14) >> 2 << 2) + 0xC)); \
|
|
} \
|
|
{ \
|
|
char *p3 = (char *)param_3; \
|
|
if (*(int *)(p3 + 4) == 1) dst = *(int *)(p3 + 0x14); \
|
|
else dst = (int)(p3 + ((*(unsigned int *)(p3 + 0x14) >> 2 << 2) + 0xC)); \
|
|
func_8005C324(dst, src, *(int *)(p3 + 0x18) << 3); \
|
|
} \
|
|
} \
|
|
} \
|
|
if (*(short *)((int)param_2 + 6) < 0) { \
|
|
int *node = (int *)param_2[0]; \
|
|
func_801325B8(param_3, node[0], node[1], node[2], 0x1000); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012DBD0() \
|
|
extern s32 func_8012DE2C(s32 a0); \
|
|
extern s32 func_8012DDA4(void); \
|
|
extern void func_80013350(s32 a0, void *a1); \
|
|
s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { \
|
|
register s32 param_1 __asm__("$18"); /* $s2 */ \
|
|
register s32 param_2 __asm__("$20"); /* $s4 */ \
|
|
register s32 param_3 __asm__("$21"); /* $s5 */ \
|
|
register s32 param_4 __asm__("$19"); /* $s3 */ \
|
|
register s32 iVar1 __asm__("$16"); /* $s0 */ \
|
|
register s32 iVar5 __asm__("$17"); /* $s1 (running max, then its square) */ \
|
|
s32 iVar4; \
|
|
register s32 t __asm__("$2"); /* $v0: keep the loaded halfword in $v0 so abs copies $v0->$v1 */ \
|
|
u32 uVar3; \
|
|
param_1 = arg0; \
|
|
param_2 = arg1; \
|
|
param_3 = arg2; \
|
|
param_4 = arg3; \
|
|
iVar1 = func_8012DE2C(param_1); \
|
|
if (iVar1 == 0) { \
|
|
return 0; \
|
|
} \
|
|
if (*(u32 *)(param_1 + 0x58) == 0) { \
|
|
iVar5 = 0x80; \
|
|
} else { \
|
|
uVar3 = *(u32 *)(param_1 + 0x58) & 0xfffffff; \
|
|
t = (s32)*(s16 *)(uVar3 + 4); \
|
|
iVar4 = (s32)*(s16 *)(uVar3 + 6); \
|
|
iVar5 = t; \
|
|
if (t < 0) { \
|
|
iVar5 = -iVar5; \
|
|
} \
|
|
if (iVar4 < 0) { \
|
|
iVar4 = -iVar4; \
|
|
} \
|
|
__asm__ __volatile__("" : "=r"(iVar4) : "0"(iVar4)); \
|
|
if (iVar5 < iVar4) { \
|
|
iVar5 = iVar4; \
|
|
} \
|
|
t = (s32)*(s16 *)(uVar3 + 8); \
|
|
iVar4 = t; \
|
|
if (t < 0) { \
|
|
iVar4 = -iVar4; \
|
|
} \
|
|
__asm__ __volatile__("" : "=r"(iVar4) : "0"(iVar4)); \
|
|
if (iVar5 < iVar4) { \
|
|
iVar5 = iVar4; \
|
|
} \
|
|
t = (s32)*(s16 *)(uVar3 + 10); \
|
|
iVar4 = t; \
|
|
if (t < 0) { \
|
|
iVar4 = -iVar4; \
|
|
} \
|
|
__asm__ __volatile__("" : "=r"(iVar4) : "0"(iVar4)); \
|
|
if (iVar5 < iVar4) { \
|
|
iVar5 = iVar4; \
|
|
} \
|
|
t = (s32)*(s16 *)(uVar3 + 0xc); \
|
|
iVar4 = t; \
|
|
if (t < 0) { \
|
|
iVar4 = -iVar4; \
|
|
} \
|
|
__asm__ __volatile__("" : "=r"(iVar4) : "0"(iVar4)); \
|
|
if (iVar5 < iVar4) { \
|
|
iVar5 = iVar4; \
|
|
} \
|
|
t = (s32)*(s16 *)(uVar3 + 0xe); \
|
|
iVar4 = t; \
|
|
if (t < 0) { \
|
|
iVar4 = -iVar4; \
|
|
} \
|
|
__asm__ __volatile__("" : "=r"(iVar4) : "0"(iVar4)); \
|
|
if (iVar5 < iVar4) { \
|
|
iVar5 = iVar4; \
|
|
} \
|
|
} \
|
|
iVar5 = iVar5 * iVar5; \
|
|
LAB_8012dcf8: \
|
|
do { \
|
|
u16 uVar6 = *(u16 *)(iVar1 + 0x5c); \
|
|
if ((uVar6 & 0x8000) != 0) { \
|
|
if ((uVar6 & 0x4000) == 0) { \
|
|
if (*(u16 *)(iVar1 + 0x5e) != param_4) { \
|
|
if ((*(u16 *)(iVar1 + 0xae) & 1) == 0) { \
|
|
if (((s32(*)(s32, s32))func_80013350)(param_1 + 4, iVar1 + 4) < iVar5) { \
|
|
*(u16 *)(iVar1 + 0x60) = param_2; \
|
|
*(u16 *)(iVar1 + 0x62) = param_3; \
|
|
*(u16 *)(iVar1 + 0x5e) = param_4; \
|
|
*(u16 *)(iVar1 + 0x5c) = *(u16 *)(iVar1 + 0x5c) | 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
iVar1 = func_8012DDA4(); \
|
|
} while (iVar1 != 0); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8013339C() \
|
|
void func_8013339C(short *param_1, short *param_2) \
|
|
{ \
|
|
short sVar4; \
|
|
short sVar5; \
|
|
short sVar6; \
|
|
sVar4 = 1; \
|
|
if (*param_2 != 0) { \
|
|
sVar4 = *param_2; \
|
|
} \
|
|
sVar5 = 1; \
|
|
if (param_2[1] != 0) { \
|
|
sVar5 = param_2[1]; \
|
|
} \
|
|
sVar6 = 1; \
|
|
if (param_2[2] != 0) { \
|
|
sVar6 = param_2[2]; \
|
|
} \
|
|
param_1[0] = (short)(((int)param_1[0] << 0xc) / (int)sVar4); \
|
|
param_1[3] = (short)(((int)param_1[3] << 0xc) / (int)sVar4); \
|
|
param_1[6] = (short)(((int)param_1[6] << 0xc) / (int)sVar4); \
|
|
param_1[1] = (short)(((int)param_1[1] << 0xc) / (int)sVar5); \
|
|
param_1[4] = (short)(((int)param_1[4] << 0xc) / (int)sVar5); \
|
|
param_1[7] = (short)(((int)param_1[7] << 0xc) / (int)sVar5); \
|
|
param_1[2] = (short)(((int)param_1[2] << 0xc) / (int)sVar6); \
|
|
param_1[5] = (short)(((int)param_1[5] << 0xc) / (int)sVar6); \
|
|
param_1[8] = (short)(((int)param_1[8] << 0xc) / (int)sVar6); \
|
|
}
|
|
|
|
#define DEFINE_func_80130514() \
|
|
extern void func_8012CBF4(s32 a0); \
|
|
extern void func_801319E0(int); \
|
|
extern int func_80131D68(int, int); \
|
|
extern int func_8012BEE8(int); \
|
|
extern void func_80131CA8(int, int); \
|
|
void func_80130514(int param_1) \
|
|
{ \
|
|
unsigned int uVar1; \
|
|
if ((*(unsigned int *)(param_1 + 0xb4) & 0x40) != 0) { \
|
|
uVar1 = ((int (*)(void))func_8012CBF4)(); \
|
|
if (0xf < *(short *)(param_1 + 10)) { \
|
|
func_801319E0(param_1); \
|
|
return; \
|
|
} \
|
|
if (func_80131D68(param_1, uVar1) == 1) { \
|
|
return; \
|
|
} \
|
|
if (func_8012BEE8(param_1) != 0) { \
|
|
if ((uVar1 & 0x2000) != 0) { \
|
|
*(unsigned char *)(param_1 + 0xc1) = 0; \
|
|
*(unsigned short *)(param_1 + 0x5e) = 0; \
|
|
func_80131CA8(param_1, 0xe); \
|
|
} \
|
|
} \
|
|
} \
|
|
/* Scheduling barrier: blocks gcc-2.7.2 reorg from hoisting the join-block \
|
|
`move $a0,$s0` into the first branch's delay slot (target keeps a nop there). */ \
|
|
__asm__ __volatile__(""); \
|
|
func_80131CA8(param_1, 0x13); \
|
|
}
|
|
|
|
#define DEFINE_func_8013A2BC() \
|
|
extern s32 D_80127524; \
|
|
extern s32 D_80127528; \
|
|
extern void func_80138C30(void *a0); \
|
|
void func_8013A2BC(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 *v1; \
|
|
s32 *p; \
|
|
s32 v0; \
|
|
v1 = *(s32 **)(s0 + 0x40); \
|
|
if (v1 == 0 || *(u16 *)(s0 + 0x18) == 0 || *(s16 *)v1 == 4) { \
|
|
p = &D_80127524; \
|
|
if (*p == s0) { \
|
|
v0 = D_80127528; \
|
|
D_80127528 = 0; \
|
|
*p = v0; \
|
|
if (v0 != 0) { \
|
|
*(s16 *)(D_80127524 + 0x1A) = 1; \
|
|
__asm__ __volatile__("" : : : "memory"); \
|
|
((void (*)(s32))func_80138C30)(*p); \
|
|
} \
|
|
} \
|
|
if ((*(s32 *)(s0 + 8) & 0x8000) == 0) { \
|
|
*(s16 *)(s0 + 4) = 0xD; \
|
|
} else { \
|
|
*(s16 *)(s0 + 4) = 0xE; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80130438() \
|
|
extern void func_80131B14(); \
|
|
extern void func_80143CD4(s32 a0); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
extern void func_800CB0E8(s32 a0); \
|
|
extern s32 func_80131A34(s32 a0, s32 a1); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
extern s32 *D_80126B78; \
|
|
void func_80130438(s32 a0) { \
|
|
s32 flag; \
|
|
flag = 0; \
|
|
*(u8 *)(a0 + 0xC1) = 6; \
|
|
if ((*(u32 *)(a0 + 0xB4) & 0x40) != 0) { \
|
|
flag = 1; \
|
|
func_80131B14(); \
|
|
*(s32 *)(a0 + 0x1C) = 0x78; \
|
|
func_80143CD4(a0); \
|
|
func_8002D4C8(0x47B, 0); \
|
|
func_8002D4C8(0x478, 0); \
|
|
func_800CB0E8(a0); \
|
|
if (func_80131A34(a0, 0x14) == 0) { \
|
|
*(s16 *)(a0 + 0x98) = 0; \
|
|
} \
|
|
} \
|
|
if (((s32 (*)(s32, s32))func_80131CA8)(a0, 0x12) != 0) { \
|
|
flag = 1; \
|
|
} \
|
|
if (flag == 0) { \
|
|
*(s16 *)(a0 + 0x5E) = 2; \
|
|
*(s16 *)(a0 + 0x60) = 1; \
|
|
*(s16 *)(a0 + 0x62) = *(u16 *)((s32)D_80126B78 + 0x12); \
|
|
((void (*)(s32, s32))func_80131E00)(a0, 1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012C2D0() \
|
|
extern u8 D_80120194[]; \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8012C2D0(void) \
|
|
{ \
|
|
s32 p; \
|
|
s32 it; \
|
|
it = (s32)D_80120194; \
|
|
__asm__ __volatile__("" : "=r"(it) : "0"(it)); \
|
|
p = it + 0x658C; \
|
|
goto test; \
|
|
copy: \
|
|
return it; \
|
|
test: \
|
|
it = (s32)D_801202A0; \
|
|
__asm__ __volatile__("" : "=r"(it) : "0"(it)); \
|
|
if (it == p) goto zero; \
|
|
body: \
|
|
if (*(u16 *)it == 0) goto copy; \
|
|
it += 0x10C; \
|
|
if (it != p) goto body; \
|
|
zero: \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012B0B4() \
|
|
extern int func_80047948(int a0); \
|
|
extern int func_8004787C(int a0); \
|
|
void func_8012B0B4(unsigned int *param_1, int param_2, int param_3) \
|
|
{ \
|
|
int iVar1, iVar2; \
|
|
register int prod __asm__("$7"); /* mflo dest = $a3 (both products) */ \
|
|
register unsigned int *p __asm__("$2"); /* store addr copied into $v0 */ \
|
|
register int sh1 __asm__("$2"); /* shares $v0 with p (non-overlapping) */ \
|
|
register int sh2 __asm__("$3"); /* 2nd-product shift -> $v1 */ \
|
|
unsigned int uVar3, result; \
|
|
uVar3 = (param_2 - 0x400U) & 0xfff; \
|
|
iVar1 = func_80047948(uVar3); \
|
|
result &= 0xFFFF0000; \
|
|
prod = iVar1 * param_3; \
|
|
sh1 = prod >> 0xc; \
|
|
result |= sh1 & 0xFFFF; \
|
|
iVar2 = func_8004787C(uVar3); \
|
|
prod = iVar2 * -param_3; \
|
|
result &= 0xFFFF; \
|
|
/* Force the param_1->$v0 copy AND let the scheduler hoist it into the \
|
|
mult->mflo delay slot (a plain `p = param_1` gets coalesced away). */ \
|
|
__asm__ ("addu %0,%1,$zero" : "=r"(p) : "r"(param_1)); \
|
|
sh2 = prod >> 0xc; \
|
|
result |= sh2 << 0x10; \
|
|
*p = result; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E28C() \
|
|
extern s32 AddPrim(s32, void *); \
|
|
extern void *func_80010A08(s32); \
|
|
extern s32 GetTPage(s32, s32, s32, s32); \
|
|
extern s32 func_8005A600(s32, s32, s32, s32, s32); \
|
|
extern s32 D_800A651C; \
|
|
extern s16 D_800B9A02; \
|
|
void func_8012E28C(s32 arg0, s32 arg1) { \
|
|
void *temp_v0; \
|
|
s32 temp_v1; \
|
|
s32 base; \
|
|
if (arg0 > 0) { \
|
|
base = *(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + (arg0 * 4); \
|
|
temp_v0 = func_80010A08(0xC); \
|
|
temp_v1 = GetTPage(0, arg1, 0, 0); \
|
|
func_8005A600((s32)temp_v0, 0, 0, (u16)temp_v1, 0); \
|
|
AddPrim(base, temp_v0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012E688() \
|
|
extern u8 D_800AF648; \
|
|
extern void func_8004914C(void *a0); \
|
|
extern void func_800491AC(void *a0); \
|
|
extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
void func_8012E688(s32 param_1, u16 param_2, u16 param_3) \
|
|
{ \
|
|
struct { short v[3]; short pad; short xy[2]; int sp1c; int flag; } f; \
|
|
register void *p __asm__("$4"); \
|
|
register u16 a __asm__("$16") = param_2; \
|
|
register u16 b __asm__("$17") = param_3; \
|
|
if (*(s32 *)(param_1 + 0x20) != 0) { \
|
|
f.v[0] = (short)*(s32 *)(*(s32 *)(param_1 + 0x20) + 0x48); \
|
|
f.v[1] = (short)*(s32 *)(*(s32 *)(param_1 + 0x20) + 0x4C); \
|
|
f.v[2] = (short)*(s32 *)(*(s32 *)(param_1 + 0x20) + 0x50); \
|
|
p = &D_800AF648; \
|
|
func_8004914C(p); \
|
|
func_800491AC(&D_800AF648); \
|
|
RotTransPers((s32)f.v, (s32)f.xy, &f.sp1c, &f.flag); \
|
|
if (f.flag < 0) { \
|
|
return; \
|
|
} \
|
|
if ((u16)(f.xy[0] + 199) >= 399) { \
|
|
return; \
|
|
} \
|
|
if ((u16)(f.xy[1] + 0xA9) >= 0x153) { \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_8002D4C8(a, b); \
|
|
}
|
|
|
|
#define DEFINE_func_8012BFA8() \
|
|
extern s16 D_80126CAC; \
|
|
extern short D_80126CAE; \
|
|
extern s16 D_80126CB0; \
|
|
int func_8012BFA8(short *a0) { \
|
|
int in[3]; \
|
|
int out[3]; \
|
|
in[0] = D_80126CAC - a0[3]; \
|
|
in[1] = D_80126CAE - a0[5]; \
|
|
in[2] = D_80126CB0 - a0[7]; \
|
|
__asm__ __volatile__( \
|
|
"lwc2 $9, 0(%0)\n" \
|
|
"lwc2 $10, 4(%0)\n" \
|
|
"lwc2 $11, 8(%0)\n" \
|
|
"nop\n" \
|
|
"nop\n" \
|
|
"sqr 0\n" \
|
|
: : "r"(&in[0]) : "$9", "$10", "$11", "memory"); \
|
|
{ \
|
|
register int *pout __asm__("$2") = &out[0]; \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" \
|
|
"swc2 $26, 4(%0)\n" \
|
|
"swc2 $27, 8(%0)\n" \
|
|
: : "r"(pout) : "memory"); \
|
|
} \
|
|
return 0xfffff < out[0] + out[1] + out[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_80130974() \
|
|
extern int func_8012BEE8(int); \
|
|
extern void func_80166244(); \
|
|
extern void func_801319E0(int); \
|
|
extern void func_80131CA8(int, int); \
|
|
void func_80130974(int param_1) { \
|
|
short sVar1; \
|
|
if ((*(unsigned int *)(param_1 + 0xb4) & 0x8000) != 0) { \
|
|
sVar1 = *(short *)(*(int *)(param_1 + 0x20) + 0x18); \
|
|
if (sVar1 < 0x1000) { \
|
|
*(short *)(*(int *)(param_1 + 0x20) + 0x18) = sVar1 + 0x400; \
|
|
*(short *)(*(int *)(param_1 + 0x20) + 0x1c) = \
|
|
*(unsigned short *)(*(int *)(param_1 + 0x20) + 0x1c) + 0x400; \
|
|
} \
|
|
if (func_8012BEE8(param_1) != 0) { \
|
|
((void (*)(int))func_80166244)(param_1); \
|
|
func_801319E0(param_1); \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_80131CA8(param_1, 0x2b); \
|
|
}
|
|
|
|
#define DEFINE_func_8012F968() \
|
|
extern s32 D_801151D4; \
|
|
extern s32 func_8012B744(void *a0, void *a1); \
|
|
extern s32 func_80131A34(s32 a0, s32 a1); \
|
|
extern s32 func_8012C588(s32 a0, s32 a1); \
|
|
extern void func_80131CA8(s32 a0, s32 a1); \
|
|
void func_8012F968(s32 param_1) { \
|
|
s32 iVar3; \
|
|
s32 iVar2; \
|
|
u32 uVar4; \
|
|
struct { s16 a; s16 b; s16 c; } sp; \
|
|
iVar3 = D_801151D4; \
|
|
*(u8 *)(param_1 + 0xc1) = 0x12; \
|
|
if ((*(u32 *)(param_1 + 0xb4) & 0x10000) != 0) { \
|
|
sp.a = *(s32 *)(iVar3 + 0x5c); \
|
|
sp.b = *(s32 *)(iVar3 + 0x60); \
|
|
sp.c = *(s32 *)(iVar3 + 0x64); \
|
|
iVar2 = *(s32 *)(param_1 + 0x20); \
|
|
*(s16 *)(param_1 + 0x5c) = 0; \
|
|
*(s16 *)(param_1 + 0x54) = 0; \
|
|
*(s16 *)(param_1 + 0x52) = 0; \
|
|
*(s16 *)(param_1 + 0x50) = 0; \
|
|
*(s16 *)(iVar2 + 0x14) = 0; \
|
|
*(s16 *)(iVar2 + 0x10) = 0; \
|
|
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = ((s16 (*)(s32, s32))func_8012B744)(param_1 + 4, (s32)&sp); \
|
|
*(s32 *)(param_1 + 0x1c) = 0x2d; \
|
|
if (*(u32 *)(param_1 + 0x58) != 0) { \
|
|
uVar4 = *(u32 *)(param_1 + 0x58) & 0xfffffff | 0x80000000; \
|
|
*(s16 *)(param_1 + 0xac) = \
|
|
(s16)((s32)*(s16 *)(uVar4 + 8) + (s32)*(s16 *)(uVar4 + 10) >> 1); \
|
|
} else { \
|
|
*(s16 *)(param_1 + 0xac) = 0; \
|
|
} \
|
|
*(s32 *)(param_1 + 0x10) = \
|
|
((*(s32 *)(iVar3 + 0x5c) - (s32)*(s16 *)(param_1 + 6)) * 0x10000) / 0x1e; \
|
|
*(s32 *)(param_1 + 0x14) = \
|
|
(((*(s32 *)(iVar3 + 0x60) - (s32)*(s16 *)(param_1 + 10)) - \
|
|
(s32)*(s16 *)(param_1 + 0xac)) * 0x10000) / 0x1e; \
|
|
*(s32 *)(param_1 + 0x18) = \
|
|
((*(s32 *)(iVar3 + 0x64) - (s32)*(s16 *)(param_1 + 0xe)) * 0x10000) / 0x1e; \
|
|
*(s16 *)(param_1 + 0x98) = 0; \
|
|
if (func_80131A34(param_1, 0x24) == 0) { \
|
|
*(u32 *)(param_1 + 0xc4) = *(u32 *)(param_1 + 0xc4) & 0xfffffffb; \
|
|
if (func_80131A34(param_1, 0x20) != 0) { \
|
|
*(u32 *)(param_1 + 0xc4) = *(u32 *)(param_1 + 0xc4) | 4; \
|
|
} else { \
|
|
*(s16 *)(param_1 + 0x98) = 0; \
|
|
} \
|
|
} \
|
|
((void (*)(s32, s32))func_8012C588)(0x289, param_1); \
|
|
} \
|
|
func_80131CA8(param_1, 0x35); \
|
|
}
|
|
|
|
#define DEFINE_func_8012D714() \
|
|
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8012D714(s32 param_1, u32 param_2) { \
|
|
u16 a[3]; \
|
|
u16 b[3]; \
|
|
u32 base; \
|
|
base = (*(u32 *)(param_1 + 0x58) & 0xFFFFFFF) | 0x80000000; \
|
|
if (param_2 & 1) { \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 8); \
|
|
b[2] = *(u16 *)(base + 0xC); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 0xA); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xC); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xE); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 8); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 0xA); \
|
|
a[2] = *(u16 *)(base + 0xE); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
if (param_2 & 2) { \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 4); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xC); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xE); \
|
|
b[0] = *(u16 *)(base + 4); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 6); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xC); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 6); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xE); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
if (param_2 & 4) { \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 4); \
|
|
b[1] = *(u16 *)(base + 8); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 4); \
|
|
a[1] = *(u16 *)(base + 0xA); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 4); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 6); \
|
|
a[1] = *(u16 *)(base + 8); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 8); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
a[0] = *(u16 *)(base + 6); \
|
|
a[1] = *(u16 *)(base + 0xA); \
|
|
a[2] = *(u16 *)(base + 0xC); \
|
|
b[0] = *(u16 *)(base + 6); \
|
|
b[1] = *(u16 *)(base + 0xA); \
|
|
b[2] = *(u16 *)(base + 0xE); \
|
|
if (((s32 (*)(s32, void *, void *))func_8012DEB8)(param_1, a, b) != 0) { \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012F568() \
|
|
extern void *memcpy(void *, const void *, u32); \
|
|
extern u8 D_80126C38; \
|
|
extern u8 D_80126C40; \
|
|
extern u16 D_80126B94; \
|
|
extern u16 D_80126B96; \
|
|
extern s16 D_80126B98; \
|
|
extern s16 D_80126B9A; \
|
|
void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6) \
|
|
{ \
|
|
memcpy(&D_80126C38, param_5, 8); \
|
|
memcpy(&D_80126C40, param_6, 8); \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
D_80126B96 = param_2; \
|
|
D_80126B9A = param_3; \
|
|
D_80126B98 = param_4; \
|
|
D_80126B94 = D_80126B94 | param_1; \
|
|
}
|
|
|
|
#define DEFINE_func_8015126C() \
|
|
void func_8015126C(u16 *p) \
|
|
{ \
|
|
extern s32 D_80127078; \
|
|
extern s32 D_80126AE4; \
|
|
extern s32 D_801151FC; \
|
|
extern s32 D_80127518; \
|
|
extern s32 D_800AE6A8; /* +0x8 == D_800AE6B0 (s32) */ \
|
|
extern u8 D_80078E78[]; /* +0x49 == D_80078EC1 (u8) */ \
|
|
extern s32 func_801470A0(void *a0); \
|
|
extern s32 func_8014A454(s32 a0); \
|
|
extern void func_80160368(s32 *a0); \
|
|
extern s32 func_801619D0(void *a0); \
|
|
extern s32 func_80151880(s32 a0); \
|
|
extern void func_800CCF68(void *); \
|
|
extern s32 func_80161A00(s32 a0); \
|
|
extern s32 func_801518D8(s32 a0); \
|
|
extern void func_800CCF58(void *); \
|
|
extern s32 func_80161A30(s32 a0); \
|
|
extern s32 func_80161A60(s32 a0); \
|
|
extern void func_801599A4(void *); \
|
|
extern void func_801607B8(s32 *a0); \
|
|
extern void func_80147084(s32 *a0); \
|
|
extern s32 func_80029D3C(void); \
|
|
extern s32 func_8014CB7C(void); \
|
|
extern void func_80153C9C(void); \
|
|
extern void func_8015173C(s32 *a0); \
|
|
extern s32 func_801725CC(u8 *a0); \
|
|
extern void func_8014B310(void); \
|
|
extern void func_8014B4D4(void *a0); \
|
|
extern void func_8014B944(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_80146D80(s32 *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern void func_8014BD24(s32 a0, s32 a1); \
|
|
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
|
|
register u8 *r __asm__("$18") = D_80078E78; /* $s2 */ \
|
|
register s32 *q __asm__("$17") = &D_800AE6A8; /* $s1 */ \
|
|
register s32 sh16 __asm__("$2"); /* $v0 */ \
|
|
u16 uVar3; \
|
|
s32 angle; \
|
|
s32 v; \
|
|
D_80126AE4 = D_80127078; \
|
|
D_80127078 = 0; \
|
|
D_801151FC = 0; \
|
|
if (*(u8 *)(p + 0x54) != 0) { \
|
|
if (((p[0x1e] & 1) == 0) || ((p[0x1f] & 0x8000) == 0)) { \
|
|
p[0x1e] &= 0xfffe; \
|
|
p[0x1f] = 0; \
|
|
p[0x20] = 0; \
|
|
p[0x21] = 0; \
|
|
} \
|
|
{ \
|
|
u8 bVar2 = *(u8 *)(p + 0x54) - 1; \
|
|
*(u8 *)(p + 0x54) = bVar2; \
|
|
if ((bVar2 & 1) != 0) { \
|
|
((void (*)(void *))func_801470A0)(p); \
|
|
} \
|
|
} \
|
|
} \
|
|
uVar3 = p[0x1e]; \
|
|
if ((uVar3 & 1) == 0) { \
|
|
goto L638; \
|
|
} \
|
|
if (((*(u32 *)(p + 0x1e) & 0x80008000) == 0) || ((q[2] & 0x80ffffff) != 0)) { \
|
|
p[0x1e] = uVar3 & 0xfffe; \
|
|
p[0x1f] = 0; \
|
|
p[0x20] = 0; \
|
|
p[0x21] = 0; \
|
|
goto L638; \
|
|
} \
|
|
{ \
|
|
u16 uVar1 = p[0x1f]; \
|
|
p[0x1e] = uVar3 & 0xfffe; \
|
|
p[0x1f] = uVar1 & 0x7fff; \
|
|
if (((uVar1 & 0x4000) == 0) && ((*(u32 *)(p + 0x22) & 1) != 0) && \
|
|
(((s32 (*)(void *))func_8014A454)(p) != 0)) { \
|
|
((void (*)(void *))func_80160368)(p); \
|
|
p[0x1f] = 0; \
|
|
p[0x20] = 0; \
|
|
p[0x21] = 0; \
|
|
p[0x1e] &= 0xfffe; \
|
|
return; \
|
|
} \
|
|
} \
|
|
if ((func_801619D0(p) != 0) && (((s32 (*)(void *))func_80151880)(p) != 0)) { \
|
|
p[0x20] = 0; \
|
|
p[0x79] = 0; \
|
|
func_800CCF68(p); \
|
|
} \
|
|
if ((((s32 (*)(void *))func_80161A00)(p) != 0) && (((s32 (*)(void *))func_801518D8)(p) != 0)) { \
|
|
func_800CCF58(p); \
|
|
} \
|
|
if (((s32 (*)(void *))func_80161A30)(p) != 0) { \
|
|
p[0xe4] = 0; \
|
|
} \
|
|
if (((s32 (*)(void *))func_80161A60)(p) != 0) { \
|
|
p[0xe4] = 0; \
|
|
} \
|
|
if (((u32)(p[0] - 0x19) < 2) || \
|
|
((*(u32 *)(p + 0xfc) != 0) && ((*(u32 *)(p + 0xfc) & 0x2000000) == 0))) { \
|
|
goto L620; \
|
|
} \
|
|
p[0x78] = p[0x1f]; \
|
|
p[0x79] = p[0x20]; \
|
|
p[0x7a] = p[0x21]; \
|
|
func_801599A4(p); \
|
|
((void (*)(void *))func_801607B8)(p); \
|
|
((void (*)(void *))func_80147084)(p); \
|
|
{ \
|
|
u16 t = p[0x1f]; \
|
|
register s32 cmp79 __asm__("$4"); \
|
|
*(u8 *)(p + 0x54) = 0; \
|
|
((s8 *)p)[0xdd] = (s8)t; \
|
|
if (((t & 0xff) != 0x11) && ((cmp79 = *(s16 *)(p + 0x79)) != 1000)) { \
|
|
angle = func_80029D3C(); \
|
|
p[0x79] = angle; \
|
|
if (r[0x49] == 5) { \
|
|
sh16 = angle << 16; \
|
|
} else { \
|
|
if (func_8014CB7C() == 0) { \
|
|
goto LAB_8015152c; \
|
|
} \
|
|
sh16 = p[0x79] << 16; \
|
|
} \
|
|
p[0x79] = (u16)(((sh16 >> 16) + (s32)((u32)sh16 >> 31)) >> 1); \
|
|
} \
|
|
} \
|
|
LAB_8015152c: \
|
|
func_80153C9C(); \
|
|
func_8015173C(p); \
|
|
((void (*)(void *))func_801725CC)(p); \
|
|
if ((p[0x1f] & 0x2000) != 0) { \
|
|
((void (*)(void *))func_8014B310)(p); \
|
|
} \
|
|
if ((p[0x1f] & 0x1000) != 0) { \
|
|
func_8014B4D4(p); \
|
|
} \
|
|
if ((p[0x1f] & 0x800) != 0) { \
|
|
((void (*)(void *, s32, s32))func_8014B944)(p, 0x50000, 1); \
|
|
} \
|
|
if ((p[0x1f] & 0x400) != 0) { \
|
|
((void (*)(void *))func_80146D80)(p); \
|
|
((void (*)(void *, s32))func_801477E8)(p, 0); \
|
|
} \
|
|
if (((s32 (*)(void *))func_80151880)(p) == 2) { \
|
|
func_80147324(0x676); \
|
|
} \
|
|
if (r[0x49] == 0x14) { \
|
|
((void (*)(void *, s32))func_8014BD24)(p, 10); \
|
|
func_8014ACE8(p, 4, 10); \
|
|
} \
|
|
D_80127518 = D_80126AE4; \
|
|
v = D_80126AE4; \
|
|
goto L640; \
|
|
L620: \
|
|
p[0x1f] = 0; \
|
|
p[0x20] = 0; \
|
|
p[0x21] = 0; \
|
|
p[0x1e] &= 0xfffe; \
|
|
L638: \
|
|
v = D_80127518; \
|
|
L640: \
|
|
D_801151FC = v; \
|
|
}
|
|
|
|
#define DEFINE_func_80156B74() \
|
|
void func_80156B74(s32 param_1, u32 param_2, u8 *param_3) { \
|
|
extern S8 D_80126AF0[]; \
|
|
extern S8 D_801270A8; \
|
|
extern void func_801484B0(s32 a0, s32 a1); \
|
|
extern void func_801484E8(s32 a0, s32 a1); \
|
|
extern void func_80148534(s32 a0, s32 a1); \
|
|
extern void func_8014856C(s32 a0, s32 a1); \
|
|
extern void func_800139C8(s32 a0, void *a1, void *a2); \
|
|
extern void func_80156ECC(s32 a0, void *a1, void *a2, void *a3, void *a4); \
|
|
u16 local_28[3]; \
|
|
B8 auStack_20; \
|
|
s32 v1 = *(s32 *)(param_1 + 0x20); \
|
|
D_801270A8.a = 0; \
|
|
D_801270A8.b = -0x1E; \
|
|
D_801270A8.c = 0; \
|
|
if (param_2 == 0) { \
|
|
if (*(s32 *)(v1 + 0x20) != 0) { \
|
|
((void (*)(void *, void *))func_801484B0)(local_28, &auStack_20); \
|
|
D_80126AF0[0].a = local_28[0]; \
|
|
D_80126AF0[0].b = local_28[1]; \
|
|
D_80126AF0[0].c = local_28[2]; \
|
|
((void (*)(void *, void *))func_801484E8)(local_28, &auStack_20); \
|
|
D_80126AF0[1].a = local_28[0]; \
|
|
D_80126AF0[1].b = local_28[1]; \
|
|
D_80126AF0[1].c = local_28[2]; \
|
|
goto L_call; \
|
|
} \
|
|
goto L_zero; \
|
|
} \
|
|
if (param_2 != 1) goto L_not1; \
|
|
if (*(s32 *)(v1 + 0x20) != 0) { \
|
|
((void (*)(void *, void *))func_80148534)(local_28, &auStack_20); \
|
|
D_80126AF0[0].a = local_28[0]; \
|
|
D_80126AF0[0].b = local_28[1]; \
|
|
D_80126AF0[0].c = local_28[2]; \
|
|
((void (*)(void *, void *))func_8014856C)(local_28, &auStack_20); \
|
|
D_80126AF0[1].a = local_28[1]; \
|
|
D_80126AF0[1].b = local_28[1]; \
|
|
D_80126AF0[1].c = local_28[2]; \
|
|
goto L_call; \
|
|
} \
|
|
L_zero: \
|
|
D_80126AF0[0].a = 0; \
|
|
D_80126AF0[0].b = 0; \
|
|
D_80126AF0[0].c = 0; \
|
|
D_80126AF0[1].a = 0; \
|
|
D_80126AF0[1].b = 0; \
|
|
D_80126AF0[1].c = 0; \
|
|
goto L_call; \
|
|
L_not1: \
|
|
if (param_2 == 2) { \
|
|
D_80126AF0[0].a = 0; \
|
|
D_80126AF0[0].b = -0x1E; \
|
|
D_80126AF0[0].c = -0x52; \
|
|
func_800139C8((s32)(s16)(*(u16 *)(param_1 + 0x24A) - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12)), \
|
|
&D_80126AF0[0], &D_80126AF0[0]); \
|
|
D_80126AF0[1].a = 0; \
|
|
D_80126AF0[1].b = -0x1E; \
|
|
D_80126AF0[1].c = -0x52; \
|
|
goto L_call; \
|
|
} \
|
|
{ \
|
|
u32 uVar1 = param_2 & 0x80FFFFFF; \
|
|
D_80126AF0[0].a = (s8)*(u8 *)(*param_3 * 3 + uVar1); \
|
|
D_80126AF0[0].b = (s8)*(u8 *)(*param_3 * 3 + uVar1 + 1); \
|
|
D_80126AF0[0].c = (s8)*(u8 *)(*param_3 * 3 + uVar1 + 2); \
|
|
D_80126AF0[1].a = (s8)*(u8 *)(*param_3 * 3 + uVar1 + 3); \
|
|
D_80126AF0[1].b = (s8)*(u8 *)(*param_3 * 3 + uVar1 + 4); \
|
|
D_80126AF0[1].c = (s8)*(u8 *)(*param_3 * 3 + uVar1 + 5); \
|
|
} \
|
|
L_call: \
|
|
if ((param_2 & 0xF000000) == 0) { \
|
|
*param_3 = *param_3 + 1; \
|
|
} \
|
|
func_80156ECC(param_1, &D_801270A8, &D_80126AF0[0], &D_80126AF0[1], &D_80126AF0[2]); \
|
|
}
|
|
|
|
#define DEFINE_func_80163C2C() \
|
|
void func_80163C2C(s32 param_1) { \
|
|
extern void func_80164530(s32 arg0); \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_800126C4(s32 a0, s32 a1); \
|
|
extern void func_800123F0(s32 a0, s32 a1); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); \
|
|
extern void func_80162FC0(s32 *a0); \
|
|
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80147364(u16, s32); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u16 func_80156370(u16 param_1); \
|
|
extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); \
|
|
extern s32 func_801632F0(void); \
|
|
extern s32 func_801632E0(void); \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); \
|
|
extern void func_80163764(s32 a0); \
|
|
extern void (*D_8011DB10)(s32); \
|
|
u8 dead[0x20]; \
|
|
Buf32 buf; \
|
|
u8 dead2[8]; \
|
|
s32 iVar3; \
|
|
s32 iVar4; \
|
|
s32 obj; \
|
|
u16 tmp; \
|
|
s32 flags; \
|
|
iVar4 = *(s32 *)(param_1 + 0x4c); \
|
|
iVar3 = *(s32 *)(param_1 + 0x20); \
|
|
((void (*)(void))func_80164530)(); \
|
|
*(u16 *)(iVar3 + 0x14) = (*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + 0x71) & 0xfff; \
|
|
((void (*)(void *))func_80013F3C)(&buf); \
|
|
((void (*)(void *, s32))func_800126C4)(&buf, *(s16 *)(param_1 + 0x60)); \
|
|
((void (*)(void *, s32))func_800123F0)(&buf, *(s16 *)(param_1 + 0x64)); \
|
|
((void (*)(void *, s32))func_80012558)(&buf, *(s16 *)(param_1 + 0x62)); \
|
|
((void (*)(void *, s32))func_80012558)(&buf, *(s16 *)(iVar3 + 0x12)); \
|
|
((void (*)(void *, s32))func_800126C4)(&buf, *(s16 *)(iVar3 + 0x10)); \
|
|
((void (*)(void *, s32))func_800123F0)(&buf, *(s16 *)(iVar3 + 0x14)); \
|
|
((void (*)(s32, s32, s32, s32, void *))func_80163194)(param_1, 0, 0, 0x18000, &buf); \
|
|
((void (*)(s32))func_80162FC0)(param_1); \
|
|
*(Blk16 *)(iVar3 + 0x34) = buf.lo; \
|
|
*(Blk16 *)(iVar3 + 0x44) = buf.hi; \
|
|
if (*(s32 *)(param_1 + 0x2c) >= 0) { \
|
|
((void (*)(s32, s32, s32, s32))func_80146DE8)(param_1, 0, 0, 0xc0000); \
|
|
((void (*)(s32, s32))func_80146E90)(param_1, 0x20); \
|
|
((void (*)(s32, s32))func_80147364)(4, 0x448); \
|
|
((void (*)(s32))func_80146CA0)(param_1); \
|
|
((void (*)(s32))func_80146CA0)(param_1); \
|
|
return; \
|
|
} \
|
|
func_801634D8(param_1, 0xd, (u16)((s32 (*)(s32))func_80156370)(0xd), 1, 0); \
|
|
flags = ((s32 (*)(s32))func_801632F0)(param_1); \
|
|
if ((flags & 1) != 0) { \
|
|
obj = ((s32 (*)(s32))func_801632E0)(param_1); \
|
|
*(s32 *)(iVar4 + 0x184) = obj; \
|
|
*(u32 *)(iVar4 + 0x44) = *(u32 *)(iVar4 + 0x44) | 0x20; \
|
|
tmp = *(u16 *)(obj + 0x36); \
|
|
*(u16 *)(iVar4 + 0x18a) = 0; \
|
|
*(u16 *)(iVar4 + 0x188) = 0; \
|
|
*(u16 *)(iVar4 + 0x194) = tmp; \
|
|
((void (*)(s32, s32, s32, s32))func_80146DE8)(param_1, 0, 0, 0xc0000); \
|
|
if (D_8011DB10 == 0) { \
|
|
((void (*)(s32, s32))func_80015978)(param_1 + 4, param_1 + 0x58); \
|
|
} else { \
|
|
(*D_8011DB10)(param_1 + 0x58); \
|
|
func_80015954(param_1 + 0x58, param_1 + 4); \
|
|
} \
|
|
*(u16 *)(param_1 + 0x66) = 0; \
|
|
((void (*)(s32, s32))func_80147364)(4, 0x448); \
|
|
((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146AB4)(0x30, param_1, 0, 0, 0, 0, *(s32 *)(iVar4 + 0x184)); \
|
|
} else { \
|
|
if ((flags & 6) == 0) goto ret; \
|
|
((void (*)(s32, s32, s32, s32))func_80146DE8)(param_1, 0, 0, 0xc0000); \
|
|
((void (*)(s32, s32))func_80146E90)(param_1, 0x20); \
|
|
((void (*)(s32, s32))func_80147364)(4, 0x448); \
|
|
((void (*)(s32))func_80146CA0)(param_1); \
|
|
} \
|
|
((void (*)(s32))func_80146CA0)(param_1); \
|
|
ret: \
|
|
func_80163764(param_1); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A62C() \
|
|
void func_8012A62C(s32 a0) { \
|
|
extern s32 D_801151D4; \
|
|
extern struct BigCopy D_80126DB8; \
|
|
extern u8 D_80127504; \
|
|
D_80126DB8 = *(struct BigCopy *)D_801151D4; \
|
|
D_80127504 = a0; \
|
|
}
|
|
|
|
#define DEFINE_func_801661CC() \
|
|
void func_801661CC(s32 param_1) \
|
|
{ \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern void func_80146C3C(void); \
|
|
extern void func_800D22E4(s32 a0); \
|
|
if (((s32 (*)(s32, s32))func_80128ED8)(*(s32 *)(param_1 + 0x20), param_1 + 0x24) != 0) { \
|
|
((void (*)(s32))func_80146C3C)(param_1); \
|
|
} else { \
|
|
func_800D22E4(param_1); \
|
|
*(s32 *)(param_1 + 0x10) = (*(s32 *)(param_1 + 0x10) >> 1) + (*(s32 *)(param_1 + 0x10) >> 2); \
|
|
*(s32 *)(param_1 + 0x18) = (*(s32 *)(param_1 + 0x18) >> 1) + (*(s32 *)(param_1 + 0x18) >> 2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8015ADB0() \
|
|
void func_8015ADB0(s32 arg0) { \
|
|
extern s32 D_8011F730; \
|
|
extern void func_80161124(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_8014C010(s32 a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
if (*(u8 *)(arg0 + 0xA8) >= 0x19) { \
|
|
*(u8 *)(arg0 + 0xA8) = 0x18; \
|
|
} \
|
|
func_80161124(arg0); \
|
|
((void (*)(s32, s32))func_801477E8)(arg0, 0xFFEE0000); \
|
|
func_8014C010(arg0, 2); \
|
|
D_8011F730 |= 1; \
|
|
((void (*)(s32))func_80146CA0)(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_80156ECC() \
|
|
void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5) { \
|
|
extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); \
|
|
extern void func_80147478(s32 a0); \
|
|
extern void func_80149350(s32 arg0); \
|
|
unsigned short uVar1; \
|
|
func_80156FA8(param_3, param_4, param_5); \
|
|
((s32 (*)(s32))func_80147478)(param_1); \
|
|
((s32 (*)(s32, s32, s32))func_80149350)(param_1, param_2, param_2); \
|
|
uVar1 = *(unsigned short *)(param_3 + 6); \
|
|
if (*(short *)(param_3 + 6) == 0) { \
|
|
((s32 (*)(s32, s32, s32))func_80149350)(param_1, param_3, param_3); \
|
|
*(unsigned short *)(param_3 + 6) = uVar1; \
|
|
} \
|
|
uVar1 = *(unsigned short *)(param_4 + 6); \
|
|
if (*(short *)(param_4 + 6) == 0) { \
|
|
((s32 (*)(s32, s32, s32))func_80149350)(param_1, param_4, param_4); \
|
|
*(unsigned short *)(param_4 + 6) = uVar1; \
|
|
} \
|
|
uVar1 = *(unsigned short *)(param_5 + 6); \
|
|
if (*(short *)(param_5 + 6) == 0) { \
|
|
((s32 (*)(s32, s32, s32))func_80149350)(param_1, param_5, param_5); \
|
|
*(unsigned short *)(param_5 + 6) = uVar1; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012CFA8() \
|
|
void func_8012CFA8(s32 arg0) \
|
|
{ \
|
|
extern s32 AddPrim(s32, void *); \
|
|
extern s32 RotTransPers(s32, s32 *, s32 *, s32 *); \
|
|
extern void SetPolyF3(void *); \
|
|
extern void *func_80010A08(s32); \
|
|
extern void func_8004914C(void *a0); \
|
|
extern void func_800491AC(void *a0); \
|
|
extern s32 D_800A651C; \
|
|
extern u8 D_800AF648; \
|
|
extern short D_800B9A02; \
|
|
s32 sp10; \
|
|
s32 sp14; \
|
|
s32 sp18; \
|
|
s32 temp_a2; \
|
|
void *temp_v0; \
|
|
temp_v0 = func_80010A08(0x14); \
|
|
(*(s32 *)((s8 *)(temp_v0) + (4))) = 0xFF; \
|
|
SetPolyF3(temp_v0); \
|
|
func_8004914C(&D_800AF648); \
|
|
func_800491AC(&D_800AF648); \
|
|
temp_a2 = (RotTransPers(arg0, &sp10, &sp14, &sp18) >> 2) - 0x20; \
|
|
if (temp_a2 > 0) { \
|
|
*(s32 *)((s8 *)temp_v0 + 8) = sp10; \
|
|
*(s16 *)((s8 *)temp_v0 + 0xC) = *(u16 *)((s8 *)temp_v0 + 8) + 8; \
|
|
*(s16 *)((s8 *)temp_v0 + 0xE) = *(u16 *)((s8 *)temp_v0 + 0xA); \
|
|
*(s16 *)((s8 *)temp_v0 + 0x10) = *(u16 *)((s8 *)temp_v0 + 8); \
|
|
*(s16 *)((s8 *)temp_v0 + 0x12) = *(u16 *)((s8 *)temp_v0 + 0xA) + 8; \
|
|
AddPrim(*(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + (temp_a2 * 4), temp_v0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80147E44() \
|
|
void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
extern void func_80147928(int a0, int a1); \
|
|
extern void func_8014799C(int a0, int a1); \
|
|
extern void func_80147A10(int a0, int a1); \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void RotMatrixX(s32 a0, void *a1); \
|
|
extern void RotMatrixY(s32 a0, void *a1); \
|
|
extern void RotMatrixZ(s32 a0, void *a1); \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 D_80127090; \
|
|
extern s32 D_80127094; \
|
|
extern s32 D_80127098; \
|
|
register s32 r_a0 __asm__("$17"); /* $s1 = param_1 */ \
|
|
register s32 r_a2 __asm__("$16"); /* $s0 = param_3 */ \
|
|
register s32 r_a3 __asm__("$19"); /* $s3 = param_4 */ \
|
|
register s32 v __asm__("$18"); /* $s2 = *(a0+0x20) */ \
|
|
s32 out[3]; \
|
|
s32 m[8]; \
|
|
s32 *p0 = &D_80127090; \
|
|
s32 *p1 = &D_80127094; \
|
|
s32 *p2 = &D_80127098; \
|
|
r_a0 = a0; \
|
|
r_a2 = a2; \
|
|
r_a3 = a3; \
|
|
v = *(s32 *)(r_a0 + 0x20); \
|
|
func_80147928(r_a0, a1); \
|
|
func_8014799C(r_a0, r_a2); \
|
|
func_80147A10(r_a0, r_a3); \
|
|
func_80013F3C((s32)m); \
|
|
RotMatrixY(*(s16 *)(v + 0x12), (void *)m); \
|
|
RotMatrixX(*(s16 *)(v + 0x10), (void *)m); \
|
|
RotMatrixZ(*(s16 *)(v + 0x14), (void *)m); \
|
|
func_800484EC((s32)m, r_a0 + 0x24, (s32)out); \
|
|
D_80127090 = out[0]; \
|
|
D_80127094 = out[1]; \
|
|
D_80127098 = out[2]; \
|
|
*(s32 *)(r_a0 + 0x10) = *p0; \
|
|
*(s32 *)(r_a0 + 0x14) = *p1; \
|
|
*(s32 *)(r_a0 + 0x18) = *p2; \
|
|
D_80127090 = 0; \
|
|
D_80127094 = 0; \
|
|
D_80127098 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80166054() \
|
|
void func_80166054(s32 arg0) { \
|
|
extern void func_80149374(s32 a0, s32 a1); \
|
|
extern s32 func_8004787C(s32 a0); \
|
|
extern s32 func_80047948(s32 a0); \
|
|
extern void func_800D1FC8(s32 a0, s32 a1); \
|
|
extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); \
|
|
extern void func_80128EA8(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_801661CC(s32 a0); \
|
|
extern void func_80146C3C(void); \
|
|
extern u8 D_800D387C[]; \
|
|
extern u8 D_800D3888[]; \
|
|
register s32 param_1 __asm__("$18"); /* $s2 */ \
|
|
register s32 s0 __asm__("$16"); /* $s0 */ \
|
|
register s32 s1 __asm__("$17"); /* $s1 */ \
|
|
register s32 r0 __asm__("$19"); /* $s3 */ \
|
|
register s32 r1 __asm__("$20"); /* $s4 */ \
|
|
s32 v1; \
|
|
s32 iVar2; \
|
|
s32 iVar3; \
|
|
register u32 fld __asm__("$2"); /* $v0 */ \
|
|
s32 v0; \
|
|
register s32 r2 __asm__("$5"); /* $a1 */ \
|
|
register s32 a0 __asm__("$4"); /* $a0 */ \
|
|
param_1 = arg0; \
|
|
s0 = *(s32 *)(param_1 + 0x34); \
|
|
func_80149374(s0, param_1 + 4); \
|
|
v1 = *(s32 *)(param_1 + 0x2c); \
|
|
if (v1 != 0) { \
|
|
s1 = 8; \
|
|
if (v1 != 3) { \
|
|
s0 = *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) << 16; \
|
|
} else { \
|
|
fld = *(s32 *)(param_1 + 0x30); \
|
|
s0 = fld & 0xfff; \
|
|
s1 = (fld >> 12) & 0xf; \
|
|
s0 = s0 << 16; \
|
|
} \
|
|
s0 = s0 >> 16; \
|
|
iVar2 = func_8004787C(s0); \
|
|
r0 = iVar2 << s1; \
|
|
r1 = -r0; \
|
|
iVar3 = func_80047948(s0); \
|
|
r2 = iVar3 << s1; \
|
|
a0 = -r2; \
|
|
if (*(s32 *)(param_1 + 0x2c) == 2) { \
|
|
r1 = r0; \
|
|
a0 = r2; \
|
|
} \
|
|
*(s32 *)(param_1 + 0x10) = r1; \
|
|
*(s32 *)(param_1 + 0x18) = a0; \
|
|
} \
|
|
*(s32 *)(param_1 + 0x14) = 0xffff0000; \
|
|
func_800D1FC8(param_1, 6); \
|
|
v0 = func_800D21C4(param_1, D_800D387C, 0x9c); \
|
|
if (v0 != 0) { \
|
|
register s32 uVar1 __asm__("$2"); \
|
|
*(s32 *)(param_1 + 0x20) = v0; \
|
|
*(u32 *)(v0 + 4) = *(u32 *)(v0 + 4) | 0x50000040; \
|
|
if (*(s32 *)(param_1 + 0x2c) != 3) { \
|
|
uVar1 = 0x2000; \
|
|
} else { \
|
|
uVar1 = *(u16 *)(param_1 + 0x32); \
|
|
} \
|
|
*(u16 *)(v0 + 0x18) = uVar1; \
|
|
__asm__("" ::: "memory"); \
|
|
*(u16 *)(v0 + 0x1a) = *(u16 *)(v0 + 0x18); \
|
|
func_80128EA8(v0, param_1 + 0x24, (s32)D_800D3888); \
|
|
func_801661CC(param_1); \
|
|
*(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; \
|
|
} else { \
|
|
((void (*)(s32))func_80146C3C)(param_1); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8017CE24() \
|
|
extern s32 func_800167F0(s32 arg0); \
|
|
s32 func_8017CE24(void) { \
|
|
return (func_800167F0(0) & 0xFFFF) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801705C0() \
|
|
extern void *D_8011F738; \
|
|
extern void func_80171928(void *a0); \
|
|
void func_801705C0(u8 * a0) \
|
|
{ \
|
|
((void (*)(void))D_8011F738)(); \
|
|
((void (*)(s32))func_80171928)(a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017C048() \
|
|
void func_8017C048(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017C120() \
|
|
void func_8017C120(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017C238() \
|
|
void func_8017C238(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017C338() \
|
|
void func_8017C338(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017D5CC() \
|
|
s32 func_8017D5CC(void) { \
|
|
return 0x1; \
|
|
}
|
|
|
|
#define DEFINE_func_801805A0() \
|
|
void func_801805A0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80180800() \
|
|
void func_80180800(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80180A30() \
|
|
void func_80180A30(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80180B04() \
|
|
void func_80180B04(void *a0) { \
|
|
*(short *)(*(int *)((char *)a0 + 0xcc) + 0xfc) = 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80180B14() \
|
|
void func_80180B14(void *a0) { \
|
|
*(short *)(*(int *)((char *)a0 + 0xcc) + 0xfc) = 0x2; \
|
|
}
|
|
|
|
#define DEFINE_func_8017DA84() \
|
|
s32 func_8017DA84(s32 arg0) { \
|
|
if (arg0 < 5) { \
|
|
return 0x57; \
|
|
} \
|
|
return 0x3D; \
|
|
}
|
|
|
|
#define DEFINE_func_801807E8() \
|
|
void func_801807E8(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x10A) = 0x60; \
|
|
*(s16 *)((s32)a0 + 0x106) = 0; \
|
|
*(s16 *)((s32)a0 + 0x108) = 0; \
|
|
*(s16 *)((s32)a0 + 0xFE) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017D464() \
|
|
s32 func_8017D464(u8 *a0) { \
|
|
*(s32 *)(a0 + 0x28) = 0xA; \
|
|
*(u8 *)(a0 + 0x15) += 1; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017E0EC() \
|
|
extern u16 D_80115112; \
|
|
void func_8017E0EC(void) { \
|
|
register s32 *p __asm__("$3"); /* pinned to $v1 */ \
|
|
register s32 v __asm__("$2"); /* pinned to $v0 */ \
|
|
p = &D_80115112; \
|
|
v = *(u16 *)p + 1; \
|
|
*(u16 *)p = v; \
|
|
}
|
|
|
|
#define DEFINE_func_8017D7E0() \
|
|
extern void func_8017D808(s32 arg0, s32 arg1); \
|
|
extern s32 D_801274E8; \
|
|
void func_8017D7E0(s32 arg0) { \
|
|
func_8017D808(arg0, &D_801274E8); \
|
|
}
|
|
|
|
#define DEFINE_func_8017CDFC() \
|
|
extern s32 func_800167F0(s32 arg0); \
|
|
s32 func_8017CDFC(void) { \
|
|
return (func_800167F0(0) & 0xFFFF) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80181DE0() \
|
|
void func_80181DE0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018258C() \
|
|
void func_8018258C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80183010() \
|
|
void func_80183010(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80183A78() \
|
|
void func_80183A78(s32 *a0) { \
|
|
*(s8 *)((s32)a0 + 0x20C) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80183C94() \
|
|
void func_80183C94(void *a0) { \
|
|
*(s8 *)((s32)a0 + 0x20C) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8018535C() \
|
|
void func_8018535C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801854C4() \
|
|
void func_801854C4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80188DF0() \
|
|
void func_80188DF0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80189950() \
|
|
void func_80189950(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80184164() \
|
|
void func_80184164(void *a0) { \
|
|
*(short *)(*(int *)((char *)a0 + 0x20) + 0x12) = 0xC00; \
|
|
}
|
|
|
|
#define DEFINE_func_8018A650() \
|
|
void func_8018A650(s32 *a0, s32 a1, s32 a2, s32 a3) { \
|
|
*(s8 *)((s32)a0 + 0x4) = a1; \
|
|
*(s8 *)((s32)a0 + 0x5) = a2; \
|
|
*(s8 *)((s32)a0 + 0x6) = a3; \
|
|
}
|
|
|
|
#define DEFINE_func_8017FC9C() \
|
|
void func_8017FC9C(void *a0) { \
|
|
*(short *)((char *)a0 + 0x2) = 4; \
|
|
*(short *)((char *)a0 + 0x98) = 0; \
|
|
*(int *)((char *)a0 + 0x1c) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80184B00() \
|
|
void func_80184B00(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x2) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80185364() \
|
|
void func_80185364(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0xA) = -0x1B26; \
|
|
*(s16 *)((s32)a0 + 0x6) = 0; \
|
|
*(s16 *)((s32)a0 + 0xE) = 0x1C59; \
|
|
}
|
|
|
|
#define DEFINE_func_80180394() \
|
|
void func_80180394(void *a0) { \
|
|
*(short *)((char *)a0 + 0x2) = 0x7; \
|
|
*(short *)((char *)a0 + 0x98) = 0; \
|
|
*(int *)((char *)a0 + 0x1c) = 0x1e; \
|
|
*(short *)((char *)a0 + 0x5c) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801803B0() \
|
|
extern void func_801803D0(void); \
|
|
void func_801803B0(void) { \
|
|
func_801803D0(); \
|
|
}
|
|
|
|
#define DEFINE_func_80181914() \
|
|
extern u8 D_8012694C; \
|
|
void func_80181914(void) { \
|
|
D_8012694C++; \
|
|
}
|
|
|
|
#define DEFINE_func_8018621C() \
|
|
extern void func_8013BD34(void); \
|
|
void func_8018621C(void) { \
|
|
func_8013BD34(); \
|
|
}
|
|
|
|
#define DEFINE_func_80182338() \
|
|
extern s32 func_800167F0(s32 arg0); \
|
|
s32 func_80182338(void) { \
|
|
return (func_800167F0(4) & 0xFFFF) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801823F0() \
|
|
extern s32 func_800167F0(s32 arg0); \
|
|
s32 func_801823F0(void) { \
|
|
return (func_800167F0(0) & 0xFFFF) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801824A8() \
|
|
extern s32 func_800167F0(s32 arg0); \
|
|
s32 func_801824A8(void) { \
|
|
return (func_800167F0(0) & 0xFFFF) != 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80184174() \
|
|
extern s32 D_801B5C90; \
|
|
void func_80184174(void *arg0) { \
|
|
*(u16 *)((s32)arg0 + 0xdc) = 0x5a; \
|
|
*(u16 *)((s32)arg0 + 0xde) = 0x3c; \
|
|
*(u16 *)((s32)arg0 + 0xe0) = 1; \
|
|
*(u16 *)((s32)arg0 + 0x2) = *(u16 *)((s32)arg0 + 0x2) + 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80188F08() \
|
|
extern void func_8018A3FC(s32 *a0); \
|
|
extern u8 D_801E8830[]; \
|
|
void func_80188F08(void) { \
|
|
func_8018A3FC(D_801E8830); \
|
|
}
|
|
|
|
#define DEFINE_func_80181CE0() \
|
|
extern s32 D_8012695C; \
|
|
extern s16 D_80126968; \
|
|
extern s16 D_80126978; \
|
|
void func_80181CE0(void) { \
|
|
D_8012695C = 0x50; \
|
|
D_80126968 = 0x71; \
|
|
D_80126978 = -0x80; \
|
|
}
|
|
|
|
#define DEFINE_func_8018623C() \
|
|
extern s32 D_801E8010; \
|
|
extern void func_8002D4C8(s32 arg0, s32 arg1); \
|
|
void func_8018623C(u16 arg0, u16 arg1) { \
|
|
if (D_801E8010 == 0) { \
|
|
func_8002D4C8(arg0 & 0xFFFF, arg1 & 0xFFFF); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80180210() \
|
|
void func_80180210(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80183808() \
|
|
void func_80183808(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80170B48() \
|
|
void func_80170B48(int a0) \
|
|
{ \
|
|
extern void *D_8011F738; \
|
|
extern void func_8014706C(void *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern s32 func_80171990(u8 *a0); \
|
|
func_8014706C(a0); \
|
|
func_80154274((s32 *)a0, (s32)D_8011F738); \
|
|
func_80171990((u8 *)a0); \
|
|
func_80170B90((u8 *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F948() \
|
|
void func_8015F948(s32 *param_1) { \
|
|
extern void func_80146C98(s32 *a0, s16 a1); \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern s32 func_80161104(void); \
|
|
func_80147078(param_1, 0x15); \
|
|
if (((s32 (*)(s32 *))func_80161104)(param_1) != 0) { \
|
|
func_80154150((s32)param_1, 0x22); \
|
|
func_80154A74((s32)param_1, 0x1A); \
|
|
func_80146C98(param_1, 2); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80155E30() \
|
|
void func_80155E30(void *a0) { \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern s32 func_80161208(void); \
|
|
volatile s32 spill[4]; \
|
|
*(s32 *)((u8 *)a0 + 0x44) = *(s32 *)((u8 *)a0 + 0x44) | 2; \
|
|
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
|
|
func_801599A4(a0); \
|
|
func_80159B3C(a0); \
|
|
return; \
|
|
} \
|
|
if (((s32 (*)(s32 *))func_80161208)(a0) != 0) { \
|
|
return; \
|
|
} \
|
|
func_80155FF8((int)a0, *(u8 *)((u8 *)a0 + 0x1AA)); \
|
|
}
|
|
|
|
#define DEFINE_func_801576A8() \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
void func_801576A8(void *arg0) { \
|
|
extern int func_80155FF8(int arg, int a1); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern s32 func_80161208(void); \
|
|
volatile s32 spill[4]; /* forces the 0x28 frame the target reserves */ \
|
|
*(s32 *)((u8 *)arg0 + 0x44) |= 2; \
|
|
if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { \
|
|
func_801599A4(arg0); \
|
|
func_80159B3C(arg0); \
|
|
} else if (((s32 (*)(void *))func_80161208)(arg0) == 0) { \
|
|
func_80155FF8((int)arg0, *(u8 *)((u8 *)arg0 + 0x1AA)); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80168F40() \
|
|
void func_80168F40(void *arg0) { \
|
|
extern Blk20 D_800AE620; \
|
|
extern s32 func_80016A5C(); \
|
|
struct A a; \
|
|
struct B b; \
|
|
a.unk00 = *(u16 *)((u8 *)arg0 + 0x10); \
|
|
a.unk02 = *(u16 *)((u8 *)arg0 + 0x14); \
|
|
a.unk04 = *(u16 *)((u8 *)arg0 + 0x18); \
|
|
a.unk08 = *(u16 *)((u8 *)arg0 + 0x6); \
|
|
a.unk0A = *(u16 *)((u8 *)arg0 + 0xA); \
|
|
a.unk0C = *(u16 *)((u8 *)arg0 + 0xE); \
|
|
a.unk10 = 8; \
|
|
a.unk14 = 0xC0; \
|
|
a.unk12 = 0; \
|
|
a.unk11 = 0; \
|
|
a.unk16 = 0x80; \
|
|
a.unk15 = 0x80; \
|
|
*(struct Bv *)&b = *(struct Bv *)&D_800AE620; \
|
|
a.unk18 = 0x50000000; \
|
|
func_80016A5C(&a, &b); \
|
|
}
|
|
|
|
#define DEFINE_func_80163A94() \
|
|
void func_80163A94(s32 param_1) { \
|
|
extern s32 D_800636C8; \
|
|
extern s32 D_800DE5A0; \
|
|
extern void func_8001C214(s32 a0, s32 a1); \
|
|
extern void func_8014659C(void); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern void func_80149374(int, int); \
|
|
s32 iVar7; \
|
|
s32 iVar1; \
|
|
s32 iVar2; \
|
|
s32 iVar3; \
|
|
iVar7 = *(s32 *)(param_1 + 0x4c); \
|
|
*(u32 *)(iVar7 + 0x44) = *(u32 *)(iVar7 + 0x44) | 4; \
|
|
iVar1 = ((s32 (*)(void))func_8014659C)(); \
|
|
*(s32 *)(param_1 + 0x20) = iVar1; \
|
|
if (iVar1 != 0) { \
|
|
func_8001C214(iVar1, (s32)&D_800DE5A0); \
|
|
*(s32 *)(iVar1 + 0x20) = (s32)&D_800636C8; \
|
|
*(s16 *)(iVar1 + 0x1c) = 0x1800; \
|
|
*(s16 *)(iVar1 + 0x1a) = 0x1800; \
|
|
*(s16 *)(iVar1 + 0x18) = 0x1800; \
|
|
*(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0x10; \
|
|
func_80149374(iVar7, param_1 + 4); \
|
|
iVar3 = *(s32 *)(param_1 + 0x20); \
|
|
iVar2 = *(s32 *)(iVar7 + 0x20); \
|
|
*(Blk16 *)(iVar3 + 0x34) = *(Blk16 *)(iVar2 + 0x34); \
|
|
*(Blk16 *)(iVar3 + 0x44) = *(Blk16 *)(iVar2 + 0x44); \
|
|
*(s16 *)(iVar1 + 0x10) = *(s16 *)(*(s32 *)(iVar7 + 0x20) + 0x10); \
|
|
*(s16 *)(iVar1 + 0x12) = *(s16 *)(*(s32 *)(iVar7 + 0x20) + 0x12); \
|
|
*(s16 *)(iVar1 + 0x14) = *(s16 *)(*(s32 *)(iVar7 + 0x20) + 0x14); \
|
|
*(s16 *)(param_1 + 0x60) = *(s16 *)(iVar7 + 0x100); \
|
|
*(s16 *)(param_1 + 0x62) = *(s16 *)(iVar7 + 0x102); \
|
|
*(s16 *)(param_1 + 0x64) = *(s16 *)(iVar7 + 0x104); \
|
|
func_80147324(0x448); \
|
|
func_80146E90((s32 *)param_1, 0x10); \
|
|
func_80146A6C(0xd, (void *)param_1, 0, 0, 0, 0, 0); \
|
|
func_80146DE8((s32 *)param_1, 0, 0, 0xffe00000); \
|
|
func_80146CA0((void *)param_1); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80156848() \
|
|
extern s32 D_801151E0[]; \
|
|
extern B8 D_80128120[]; \
|
|
extern B8 D_80128138[]; \
|
|
extern S8 D_80126AF0[]; \
|
|
extern u8 D_80126730[]; \
|
|
void func_80156848(s32 param_1, s32 param_2) { \
|
|
extern s32 D_801151E0[]; \
|
|
extern u8 D_80126730[]; \
|
|
extern S8 D_80126AF0[]; \
|
|
extern B8 D_80128120[]; \
|
|
extern B8 D_80128138[]; \
|
|
extern void func_80013E94(void *a0, void *a1); \
|
|
extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80156A1C(s32 a0, s32 a1); \
|
|
u32 uVar1; \
|
|
s32 i; \
|
|
u32 uVar3; \
|
|
u32 local_20[2]; \
|
|
uVar3 = 0; \
|
|
i = 0; \
|
|
do { \
|
|
uVar1 = D_801151E0[uVar3]; \
|
|
if (uVar1 & 1) { \
|
|
func_80013E94(&D_80128120[i], local_20); \
|
|
((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(*(u8 *)(param_2 + 8), param_1, (s32)D_80126AF0[i].a, \
|
|
(s32)D_80126AF0[i].b, (s32)D_80126AF0[i].c, local_20[0], \
|
|
*(u8 *)(param_2 + 9)); \
|
|
} else if (uVar1 & 6) { \
|
|
func_80156A1C(param_1, uVar3); \
|
|
func_80013E94(&D_80128138[i], local_20); \
|
|
if ((D_801151E0[uVar3] & 6) == 4) { \
|
|
local_20[0] = local_20[0] | 0x80000000; \
|
|
} \
|
|
((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(6, param_1, (s32)D_80126AF0[i].a, \
|
|
(s32)D_80126AF0[i].b, (s32)D_80126AF0[i].c, local_20[0], 0); \
|
|
if (D_80126730[uVar3] == 0x24) { \
|
|
((void (*)(s32, s32, s32, s32, s32, s32, s32, s32))func_801469C8)(0x53, param_1, (s32)D_80126AF0[i].a, \
|
|
(s32)D_80126AF0[i].b, (s32)D_80126AF0[i].c, local_20[0], 0, 0x14); \
|
|
} \
|
|
} \
|
|
uVar3 = uVar3 + 1; \
|
|
i = i + 1; \
|
|
} while (uVar3 < 3); \
|
|
}
|
|
|
|
#define DEFINE_func_8012FDA8() \
|
|
void func_8012FDA8(int param_1) \
|
|
{ \
|
|
extern void func_8012CBF4(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
int iVar1; \
|
|
unsigned int uVar2; \
|
|
if ((*(unsigned int *)(param_1 + 0xb4) & 0x100) != 0) { \
|
|
iVar1 = *(int *)(param_1 + 0x1c) + 1; \
|
|
*(int *)(param_1 + 0x1c) = iVar1; \
|
|
if (0x14 < iVar1) { \
|
|
((void (*)(int, int))func_80131E00)(param_1, 0xd); \
|
|
return; \
|
|
} \
|
|
uVar2 = ((int (*)(int))func_8012CBF4)(param_1); \
|
|
if ((uVar2 & 0x2000) != 0) { \
|
|
if ((uVar2 & 0xff) == 2) { \
|
|
((void (*)(int, int))func_80131E00)(param_1, 0x12); \
|
|
return; \
|
|
} \
|
|
if ((uVar2 & 0xff) == 0x1a) { \
|
|
func_801319E0(param_1); \
|
|
return; \
|
|
} \
|
|
func_80131C78(param_1); \
|
|
} \
|
|
} \
|
|
func_80131CA8(param_1, 0x1d); \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_8012BA10() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012BA10(s32 arg0, s32 arg1) { \
|
|
extern u16 D_80126B5E; \
|
|
extern u16 D_80126B66; \
|
|
register s32 d __asm__("$16"); /* $s0 -- pinned: divisor, live across the jal */ \
|
|
register s32 s1ang __asm__("$17"); /* $s1 -- pinned: ptr+0x12 angle, live across the jal */ \
|
|
s32 u5; s32 u6; s32 iVar4; s32 q; s32 t; \
|
|
d = arg1; \
|
|
s1ang = *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12); \
|
|
u5 = (ratan2(*(s16 *)(arg0 + 0xE) - (s16)D_80126B66, (s16)D_80126B5E - *(s16 *)(arg0 + 6)) - 0x400) & 0xFFF; \
|
|
__asm__ __volatile__("" : : "r"(u5)); /* scheduling barrier: anchor u5 before the (s16)d cast */ \
|
|
d = (s16)d; \
|
|
u6 = s1ang & 0xFFF; \
|
|
if (u6 == u5) return 0; \
|
|
iVar4 = u5 - u6; \
|
|
if (iVar4 > 0x800) { t = u6 + 0x1000; iVar4 = u5 - t; } \
|
|
if (iVar4 < -0x800) { t = u6 - 0x1000; iVar4 = u5 - t; } \
|
|
if (iVar4 >= 0) { q = iVar4 / d; if (q == 0) q = 1; } \
|
|
else { q = iVar4 / d; if (q == 0) q = -1; } \
|
|
return q; \
|
|
}
|
|
|
|
#define DEFINE_func_80181D2C() \
|
|
extern void (*D_8018EA0C[])(void); \
|
|
void func_80181D2C(u8 *param_1) \
|
|
{ \
|
|
D_8018EA0C[param_1[0x4]](); \
|
|
}
|
|
|
|
#define DEFINE_func_80182D00() \
|
|
extern void (*D_8018ED5C[])(void); \
|
|
void func_80182D00(void *a0) { \
|
|
D_8018ED5C[*(u8 *)((s32)a0 + 0x214)](); \
|
|
}
|
|
|
|
#define DEFINE_func_801868D4() \
|
|
extern void (*D_8018F31C[])(void); \
|
|
void func_801868D4(void *a0) { \
|
|
D_8018F31C[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_801863E8() \
|
|
extern void (*D_8018F2FC[])(void); \
|
|
void func_801863E8(void *a0) { \
|
|
D_8018F2FC[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8017BF98() \
|
|
void func_8017BF98(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017C07C() \
|
|
void func_8017C07C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017C14C() \
|
|
void func_8017C14C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017DD74() \
|
|
void func_8017DD74(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017DF7C() \
|
|
void func_8017DF7C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80180714() \
|
|
void func_80180714(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80188470() \
|
|
void func_80188470(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801892D4() \
|
|
void func_801892D4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801892DC() \
|
|
void func_801892DC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80189C74() \
|
|
void func_80189C74(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80189104() \
|
|
void func_80189104(void *a0) { \
|
|
*(short *)((char *)a0 + 0x2) = 0x3; \
|
|
}
|
|
|
|
#define DEFINE_func_801890F8() \
|
|
void func_801890F8(void *a0) { \
|
|
*(short *)((char *)a0 + 0x2) = 0x2; \
|
|
}
|
|
|
|
#define DEFINE_func_8018918C() \
|
|
void func_8018918C(void *a0) { \
|
|
*(short *)((char *)a0 + 0x2) = 0x5; \
|
|
*(int *)((char *)a0 + 0x1c) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80188F18() \
|
|
void func_80188F18(void *a0) { \
|
|
*(s32 *)((s32)a0 + 0x48) = 0x1400; \
|
|
*(s32 *)((s32)a0 + 0x14) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017F49C() \
|
|
void func_8017F49C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80182ADC() \
|
|
void func_80182ADC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80182AE4() \
|
|
void func_80182AE4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80183AF8() \
|
|
void func_80183AF8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80183C50() \
|
|
void func_80183C50(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80187D04() \
|
|
void func_80187D04(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80189274() \
|
|
void func_80189274(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80182910() \
|
|
void func_80182910(void *a0) { \
|
|
*(short *)((char *)a0 + 0x2) = 0x3; \
|
|
}
|
|
|
|
#define DEFINE_func_80182904() \
|
|
void func_80182904(void *a0) { \
|
|
*(short *)((char *)a0 + 0x2) = 0x2; \
|
|
}
|
|
|
|
#define DEFINE_func_8017F224() \
|
|
void func_8017F224(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018235C() \
|
|
extern void (*D_8018EAD8[])(void); \
|
|
void func_8018235C(void *a0) { \
|
|
D_8018EAD8[*(u8 *)((s32)a0 + 0x15)](); \
|
|
}
|
|
|
|
#define DEFINE_func_801831A8() \
|
|
extern s32 D_8018ED88; \
|
|
extern void func_8013C9C4(s32); \
|
|
void func_801831A8(void * arg0) { \
|
|
if ((*(s32 *)((char *)arg0 + 0x204) & 0xF) == 0) { \
|
|
func_8013C9C4((s32)&D_8018ED88); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801856B4() \
|
|
void func_801856B4(void *a0) { \
|
|
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x800; \
|
|
}
|
|
|
|
#define DEFINE_func_80182988() \
|
|
void func_80182988(s32 *a0) { \
|
|
*(s16 *)((s32)a0 + 0x2) = 0x5; \
|
|
*(s32 *)((s32)a0 + 0x1c) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017D6A8() \
|
|
void func_8017D6A8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018015C() \
|
|
void func_8018015C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80184B68() \
|
|
void func_80184B68(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80184CB0() \
|
|
void func_80184CB0(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x5C) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801851F0() \
|
|
void func_801851F0(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_801851F8() \
|
|
void func_801851F8(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80185200() \
|
|
void func_80185200(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80185208() \
|
|
void func_80185208(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_80185210() \
|
|
void func_80185210(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018525C() \
|
|
void func_8018525C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018A988() \
|
|
void func_8018A988(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018C69C() \
|
|
void func_8018C69C(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018CDDC() \
|
|
void func_8018CDDC(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018CDE4() \
|
|
void func_8018CDE4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8018AFE8() \
|
|
s32 func_8018AFE8(void) { \
|
|
return -1; \
|
|
}
|
|
|
|
#define DEFINE_func_80187E28() \
|
|
void func_80187E28(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x2) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80182704() \
|
|
void func_80182704(void *a0) { \
|
|
*(s32 *)((s32)a0 + 0x48) = 0x1400; \
|
|
*(s32 *)((s32)a0 + 0x14) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017F190() \
|
|
extern s32 D_8018FB28; \
|
|
extern s32 func_8012AD50(void *a0); \
|
|
void func_8017F190(void) { \
|
|
D_8018FB28 = 0; \
|
|
((void (*)(void))func_8012AD50)(); \
|
|
}
|
|
|
|
#define DEFINE_func_8017E264() \
|
|
void func_8017E264(void *a0) { \
|
|
*(s8 *)((s32)a0 + 0xA0) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8018B868() \
|
|
void func_8018B868(void *a0) { \
|
|
M2C_FIELD(a0, s16 *, 0x2) = 2; \
|
|
}
|
|
|
|
#define DEFINE_func_8017C090() \
|
|
void func_8017C090(void *a0) { \
|
|
*(s16 *)((s32)a0 + 0x2) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8018248C() \
|
|
s32 func_8018248C(s32 arg0) { \
|
|
return *(u16*)(arg0 + 0x2) == 0x6; \
|
|
}
|
|
|
|
#define DEFINE_func_8018B564() \
|
|
void func_8018B564(void *a0) { \
|
|
M2C_FIELD(a0, s16 *, 0x2) = 2; \
|
|
}
|
|
|
|
#define DEFINE_func_8018B6E8() \
|
|
void func_8018B6E8(s32 *a0) { \
|
|
*(s16 *)((s32)a0 + 0x2) = 0x2; \
|
|
}
|
|
|
|
#define DEFINE_func_8017DEA4() \
|
|
void func_8017DEA4(void) { \
|
|
}
|
|
|
|
#define DEFINE_func_8017D12C() \
|
|
extern void func_8002931C(void); \
|
|
extern int func_8017D12C(int arg); \
|
|
int func_8017D12C(int arg) { \
|
|
((void (*)(int))func_8002931C)(0x1A40000); \
|
|
}
|
|
|
|
#define DEFINE_func_8018B9D0() \
|
|
void func_8018B9D0(void *a0) { \
|
|
M2C_FIELD(a0, s16 *, 0x2) = 2; \
|
|
}
|
|
|
|
#define DEFINE_func_8017E0FC() \
|
|
void func_8017E0FC(u8 *a0) { \
|
|
*(u8 *)(a0 + 0x214) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8017E074() \
|
|
void func_8017E074(void *a0) { \
|
|
*(u8 *)((s32)a0 + 0x214) += 1; \
|
|
}
|
|
|
|
#define DEFINE_func_80181998() \
|
|
extern s32 D_801D7598; \
|
|
extern s32 D_801D2200; \
|
|
void func_80181998(void) { \
|
|
*(s32 *)&D_801D2200 = D_801D7598; \
|
|
}
|
|
|
|
#define DEFINE_func_80183958() \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 D_8018F83C; \
|
|
void func_80183958(void) { \
|
|
((void (*)(void *, s32))func_8016EE40)(&D_8018F83C, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_801819B0() \
|
|
extern s32 D_801E7018; \
|
|
extern s32 D_801D2200; \
|
|
void func_801819B0(void) { \
|
|
*(s32 *)&D_801D2200 = D_801E7018; \
|
|
}
|
|
|
|
#define DEFINE_func_8018071C() \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
extern M2C_UNK D_8018F4F8; \
|
|
void func_8018071C(void) { \
|
|
((void (*)(void *, s32))func_8016EE40)(&D_8018F4F8, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_80183930() \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
extern M2C_UNK D_8018F830; \
|
|
void func_80183930(void) { \
|
|
((void (*)(void *, s32))func_8016EE40)(&D_8018F830, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_801892E4() \
|
|
extern s32 func_80128ED8(void *a0, void *a1); \
|
|
extern s32 D_801EAC88; \
|
|
void func_801892E4(void *arg0) { \
|
|
((void (*)(s32 *, s32))func_80128ED8)(*(s32 *)((s32)arg0 + 0xCC), &D_801EAC88); \
|
|
}
|
|
|
|
#define DEFINE_func_80184440() \
|
|
extern s32 D_801EAC64; \
|
|
extern s32 D_801EAC68; \
|
|
void func_80184440(void) { \
|
|
__asm__ __volatile__( \
|
|
".set noreorder\n" \
|
|
"addiu $sp, $sp, -8\n" \
|
|
"sw $fp, 0($sp)\n" \
|
|
"addu $fp, $sp, $zero\n" \
|
|
"li $v0, 1\n" \
|
|
"lui $at, %%hi(D_801EAC64)\n" \
|
|
"sw $v0, %%lo(D_801EAC64)($at)\n" \
|
|
"lui $at, %%hi(D_801EAC68)\n" \
|
|
"sw $zero, %%lo(D_801EAC68)($at)\n" \
|
|
"addu $sp, $fp, $zero\n" \
|
|
"lw $fp, 0($sp)\n" \
|
|
"addiu $sp, $sp, 8\n" \
|
|
: : : "memory"); \
|
|
}
|
|
|
|
#define DEFINE_func_801819EC() \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
extern M2C_UNK D_8018DDCC; \
|
|
void func_801819EC(void) { \
|
|
((void (*)(void *, s32))func_8016EE40)(&D_8018DDCC, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_80181A3C() \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
extern M2C_UNK D_8018DDE4; \
|
|
void func_80181A3C(void) { \
|
|
((void (*)(void *, s32))func_8016EE40)(&D_8018DDE4, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_801819C4() \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
extern M2C_UNK D_8018DDC0; \
|
|
void func_801819C4(void) { \
|
|
((void (*)(void *, s32))func_8016EE40)(&D_8018DDC0, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_8017F4A4() \
|
|
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
|
|
extern M2C_UNK D_8018DA14; \
|
|
void func_8017F4A4(void) { \
|
|
((void (*)(void *, s32))func_8016EE40)(&D_8018DA14, 0x1000000); \
|
|
}
|
|
|
|
#define DEFINE_func_801835C4() \
|
|
extern void (*D_8018F804[])(void); \
|
|
void func_801835C4(void *a0) { \
|
|
D_8018F804[*(u8 *)((s32)a0 + 0x15)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018BF08() \
|
|
extern void func_8014B2A8(void); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
void func_8018BF08(void) { \
|
|
func_8014B2A8(); \
|
|
((s32 (*)(s32, s32))func_8002D4C8)(0x464, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_801848E4() \
|
|
extern void (*D_8018FE80[])(void); \
|
|
void func_801848E4(void *a0) { \
|
|
D_8018FE80[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018553C() \
|
|
extern void (*D_801903DC[])(void); \
|
|
void func_8018553C(void *a0) { \
|
|
D_801903DC[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_801838E0() \
|
|
extern void (*D_8018E858[])(void); \
|
|
void func_801838E0(void *a0) { \
|
|
D_8018E858[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018385C() \
|
|
extern void (*D_8018F824[])(void); \
|
|
void func_8018385C(u8 *a0) { \
|
|
D_8018F824[a0[0x15]](); \
|
|
}
|
|
|
|
#define DEFINE_func_801838A4() \
|
|
extern void (*D_8018E208[])(void); \
|
|
void func_801838A4(void *a0) { \
|
|
D_8018E208[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_80183B00() \
|
|
extern void (*D_8018E8A0[])(void); \
|
|
void func_80183B00(void *a0) { \
|
|
D_8018E8A0[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018AF00() \
|
|
extern s32 D_801E03E0; \
|
|
extern s32 D_801E7980; \
|
|
extern void func_8018A168(s32 arg0, s32 arg1); \
|
|
void func_8018AF00(void) { \
|
|
D_801E7980 = &D_801E03E0; \
|
|
func_8018A168(0x474, 0x4B0); \
|
|
}
|
|
|
|
#define DEFINE_func_8016B91C() \
|
|
extern void func_8016B964(SrcB964 *a0, DstB964 *a1); \
|
|
void func_8016B91C(s32 arg0) { \
|
|
((void (*)(s32, s32))func_8016B964)(arg0, *(s32*)((u8*)arg0 + 0x10)); \
|
|
((void (*)(s32, s32))func_8016B964)(arg0, *(s32*)((u8*)arg0 + 0x14)); \
|
|
((void (*)(s32, s32))func_8016B964)(arg0, *(s32*)((u8*)arg0 + 0x18)); \
|
|
}
|
|
|
|
#define DEFINE_func_8017248C() \
|
|
extern s32 func_801724EC(s32 a0); \
|
|
s32 func_8017248C(s32 arg0, s32 arg1) \
|
|
{ \
|
|
if (((s32 (*)(void*, void*))func_801724EC)(arg0, arg1) != 0) { \
|
|
*(u16*)((u8*)arg0 + 6) = *(u16*)((u8*)arg1 + 0); \
|
|
*(u16*)((u8*)arg0 + 0xA) = *(u16*)((u8*)arg1 + 2); \
|
|
*(u16*)((u8*)arg0 + 0xE) = *(u16*)((u8*)arg1 + 4); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017C5CC() \
|
|
extern void (*D_80190CCC[])(void); \
|
|
void func_8017C5CC(void *a0) { \
|
|
D_80190CCC[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018AB3C() \
|
|
extern void (*D_801E0554[])(void); \
|
|
void func_8018AB3C(void *a0) { \
|
|
D_801E0554[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_80186084() \
|
|
extern void (*D_801B8A3C[])(void); \
|
|
void func_80186084(void *a0) { \
|
|
D_801B8A3C[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8017D6B0() \
|
|
extern void (*D_80190D1C[])(void); \
|
|
void func_8017D6B0(s32 *param_1) \
|
|
{ \
|
|
D_80190D1C[*(u16 *)((char *)param_1 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018233C() \
|
|
extern void (*D_80191EE4[])(void); \
|
|
void func_8018233C(s32 *param_1) { \
|
|
D_80191EE4[*(u16 *)((char *)param_1 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018A740() \
|
|
extern void (*D_801E04F0[])(void); \
|
|
void func_8018A740(void *a0) { \
|
|
D_801E04F0[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8018A898() \
|
|
extern void (*D_801E051C[])(void); \
|
|
void func_8018A898(void *a0) { \
|
|
D_801E051C[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8017F058() \
|
|
extern void (*D_8019155C[])(void); \
|
|
void func_8017F058(void *a0) { \
|
|
D_8019155C[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_801800E0() \
|
|
extern void (*D_801918E4[])(void); \
|
|
void func_801800E0(void *a0) { \
|
|
D_801918E4[*(u16 *)((s32)a0 + 0x2)](); \
|
|
}
|
|
|
|
#define DEFINE_func_8014EE14() \
|
|
extern u16 D_800B99DA; \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 D_801150D8; \
|
|
extern u8 D_80126720[]; \
|
|
extern s16 D_80126724; \
|
|
extern s16 D_801152AA; \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
|
|
s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2) \
|
|
{ \
|
|
register s32 param_1 __asm__("$16"); /* $s0 */ \
|
|
register s32 param_2 __asm__("$23"); /* $s7 */ \
|
|
register s16 *param_3 __asm__("$18"); /* $s2 */ \
|
|
register s32 sVar6 __asm__("$20"); /* $s4 */ \
|
|
register s32 sVar7 __asm__("$21"); /* $s5 */ \
|
|
register s32 uVar8 __asm__("$22"); /* $s6 */ \
|
|
u16 *psVar4; \
|
|
s32 *piVar5; \
|
|
s32 iVar2; \
|
|
param_1 = arg0; \
|
|
param_2 = arg1; \
|
|
param_3 = arg2; \
|
|
uVar8 = 0; \
|
|
sVar7 = 8; \
|
|
sVar6 = 8; \
|
|
switch ((D_800B99DA & 0x60) >> 5) { \
|
|
case 0: \
|
|
case 1: \
|
|
sVar7 = 7; \
|
|
break; \
|
|
case 2: \
|
|
sVar6 = 7; \
|
|
break; \
|
|
} \
|
|
__asm__("" : "=r"(param_1) : "0"(param_1)); \
|
|
__asm__("" : "=r"(param_2) : "0"(param_2)); \
|
|
__asm__("" : "=r"(param_3) : "0"(param_3)); \
|
|
if ((*(u32 *)(param_1 + 0x44) & 0x100000) != 0) { \
|
|
psVar4 = (u16 *)D_801202A0; \
|
|
while (psVar4 < (u16 *)(D_801202A0 + 0x6480)) { \
|
|
piVar5 = (s32 *)((u8 *)psVar4 + 0x58); \
|
|
if (*psVar4 != 0 && *piVar5 != 0 && \
|
|
psVar4 != *(u16 **)(param_1 + 0x178) && \
|
|
psVar4 != *(u16 **)(param_1 + 0x174) && \
|
|
(piVar5[1] & 0x1800) != 0) { \
|
|
D_801150D8 = 0; \
|
|
iVar2 = ((s32 (*)(s32, s32, s32, s16 *))func_80135A4C)(piVar5[-0xe], ((struct { s32 w; } *)piVar5)->w, param_2, param_3); \
|
|
if (iVar2 != 0) { \
|
|
if ((D_801150D8 & 1) != 0) { \
|
|
if (-1 < (s32)*(s16 *)D_80126720 - (s32)*param_3) \
|
|
*(s16 *)(param_1 + 6) = *param_3 - sVar7; \
|
|
else \
|
|
*(s16 *)(param_1 + 6) = *param_3 + sVar7; \
|
|
if (-1 < (s32)D_80126724 - (s32)param_3[2]) \
|
|
*(s16 *)(param_1 + 0xE) = param_3[2] - sVar6; \
|
|
else \
|
|
*(s16 *)(param_1 + 0xE) = param_3[2] + sVar6; \
|
|
uVar8 = 1; \
|
|
} else { \
|
|
*(s16 *)(param_1 + 6) = ((u16 *)param_3)[0]; \
|
|
*(s16 *)(param_1 + 0xA) = ((u16 *)param_3)[1] + 0x10; \
|
|
uVar8 = 1; \
|
|
*(s16 *)(param_1 + 0xE) = ((u16 *)param_3)[2]; \
|
|
} \
|
|
} \
|
|
} \
|
|
psVar4 += 0x86; \
|
|
} \
|
|
} else { \
|
|
psVar4 = (u16 *)D_801202A0; \
|
|
while (psVar4 < (u16 *)(D_801202A0 + 0x6480)) { \
|
|
piVar5 = (s32 *)((u8 *)psVar4 + 0x58); \
|
|
if (*psVar4 != 0 && *piVar5 != 0 && \
|
|
psVar4 != *(u16 **)(param_1 + 0x178) && \
|
|
psVar4 != *(u16 **)(param_1 + 0x174) && \
|
|
(piVar5[1] & 0x1800) != 0) { \
|
|
D_801150D8 = 0; \
|
|
iVar2 = ((s32 (*)(s32, s32, s32, s16 *))func_80135A4C)(piVar5[-0xe], ((struct { s32 w; } *)piVar5)->w, param_2, param_3); \
|
|
if (iVar2 != 0) { \
|
|
if ((D_801150D8 & 1) != 0) { \
|
|
if (-1 < (s32)*(s16 *)D_80126720 - (s32)*param_3) \
|
|
*(s16 *)(param_1 + 6) = *param_3 - sVar7; \
|
|
else \
|
|
*(s16 *)(param_1 + 6) = *param_3 + sVar7; \
|
|
if (-1 < (s32)D_80126724 - (s32)param_3[2]) \
|
|
*(s16 *)(param_1 + 0xE) = param_3[2] - sVar6; \
|
|
else \
|
|
*(s16 *)(param_1 + 0xE) = param_3[2] + sVar6; \
|
|
} else { \
|
|
*(s16 *)(param_1 + 6) = ((u16 *)param_3)[0]; \
|
|
*(s16 *)(param_1 + 0xA) = ((u16 *)param_3)[1] + 0x10; \
|
|
*(s16 *)(param_1 + 0xE) = ((u16 *)param_3)[2]; \
|
|
uVar8 = 1; \
|
|
if (*piVar5 < 0) { \
|
|
s32 av = D_801152AA; \
|
|
if (av < 0) av = -av; \
|
|
if (0x800 < (s16)av) { \
|
|
if (-1 < (s32)*(s16 *)D_80126720 - (s32)*param_3) \
|
|
*(s16 *)(param_1 + 6) = *param_3 - sVar7; \
|
|
else \
|
|
*(s16 *)(param_1 + 6) = *param_3 + sVar7; \
|
|
if (-1 < (s32)D_80126724 - (s32)param_3[2]) \
|
|
*(s16 *)(param_1 + 0xE) = param_3[2] - sVar6; \
|
|
else \
|
|
*(s16 *)(param_1 + 0xE) = param_3[2] + sVar6; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
psVar4 += 0x86; \
|
|
} \
|
|
} \
|
|
return uVar8; \
|
|
}
|
|
|
|
#define DEFINE_func_80150528() \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
|
|
s32 func_80150528(void *arg0, void *arg1, void *arg2) \
|
|
{ \
|
|
u8 *p = D_801202A0; \
|
|
/* Inline limit expression (NOT a cached `end` local): gcc hoists the \
|
|
* loop-invariant `D_801202A0 + 0x6480` into the preheader, landing it in a \
|
|
* callee-saved reg via a temp->saved copy (addu $s5,$v1,$zero) because it \
|
|
* is live across the jal. A cached `end` local instead keeps the limit in \
|
|
* one saved reg (52 ins, wrong regalloc). */ \
|
|
if (p < D_801202A0 + 0x6480) { \
|
|
do { \
|
|
if (*(u16*)p != 0) { \
|
|
if ((*(u16*)(p + 0x5C) & 0x80) != 0) { \
|
|
if (*(s32*)(p + 0x58) != 0) { \
|
|
if (((s32 (*)(s32, s32, s32, s32))func_80135A4C)( \
|
|
*(s32*)(p + 0x20), *(s32*)(p + 0x58), \
|
|
(s32)arg1, (s32)arg2) != 0) { \
|
|
*(s32*)((u8*)arg0 + 0x1A4) = (s32)p; \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
p += 0x10C; \
|
|
} while (p < D_801202A0 + 0x6480); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014F2E0() \
|
|
extern s32 D_801150D8; \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2) \
|
|
{ \
|
|
s32 ret = 0; \
|
|
u8 *s; \
|
|
for (s = D_801202A0; s < D_801202A0 + 0x6480; s += 0x10C) { \
|
|
if (*(u16 *)s != 0 && \
|
|
*(s32 *)(s + 0x58) != 0 && \
|
|
(s16 *)s != *(s16 **)(arg0 + 0x178) && \
|
|
(s16 *)s != *(s16 **)(arg0 + 0x174) && \
|
|
(*(s32 *)(s + 0x5C) & 0x1800) != 0) { \
|
|
D_801150D8 = 0; \
|
|
if (((s32 (*)(s32, s32, s32, s32))func_80135A4C)(((struct { s32 field; } *)(s + 0x20))->field, \
|
|
((struct { s32 field; } *)(s + 0x58))->field, \
|
|
(s32)arg1, (s32)arg2) != 0) { \
|
|
ret = 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_80149374() \
|
|
extern void func_80015978(s32 a0, s32 *a1); \
|
|
extern void func_8012F14C(s32); \
|
|
extern void func_80015954(s32 a0, s32 a1); \
|
|
void func_80149374(s32 arg0, s32 arg1) \
|
|
{ \
|
|
u64 sp10; \
|
|
u64 sp18; \
|
|
((void (*)(s32, void*))func_80015978)(arg1, &sp10); \
|
|
{ \
|
|
void *q = &sp18; \
|
|
((void (*)(s32, void*, void*))func_8012F14C)(*(s32*)(arg0 + 0x20) + 0x34, &sp10, q); \
|
|
__asm__ __volatile__("" : "=r"(q)); /* LOAD-BEARING: kills the (plus sp 0x18) CSE class reg; emits 0 bytes */ \
|
|
} \
|
|
((void (*)(void*, s32))func_80015954)(&sp18, arg1); \
|
|
}
|
|
|
|
#define DEFINE_func_80132784() \
|
|
extern void func_80049CAC(s32 a0, s32 a1); \
|
|
extern void func_80020F34(s32 a0, s32 a1); \
|
|
extern void func_80054514(s32 a0, s32 a1); \
|
|
void func_80132784(s32 a0, s32 a1, u32 a2) \
|
|
{ \
|
|
s32 s7 = a0; \
|
|
s32 s0p = a1; \
|
|
u32 s2v = a2; \
|
|
s32 s6; \
|
|
s32 s1m; \
|
|
s16 sVar1; \
|
|
u8 buf[0xC0]; \
|
|
if (((*((s32 *) (s7 + 0x20))) != 0) || ((*((s32 *) (s0p + 0x20))) != 0)) \
|
|
{ \
|
|
s6 = *((s32 *) (s0p + 0x20)); \
|
|
s1m = *((s32 *) (s6 + 0x20)); \
|
|
if (s1m != 0) \
|
|
{ \
|
|
*((s32 *) (buf + 0x48)) = *((s32 *) (s6 + 0x78)); \
|
|
*((s32 *) (buf + 0x00)) = 0; \
|
|
if (((*((u16 *) (s6 + 0x2C))) & 1) != 0) \
|
|
{ \
|
|
*((Blk16 *) (buf + 0x04)) = *((Blk16 *) (s6 + 0x34)); \
|
|
*((Blk16 *) (buf + 0x14)) = *((Blk16 *) (s6 + 0x44)); \
|
|
} \
|
|
else \
|
|
{ \
|
|
func_80049CAC(s6 + 0x10, (s32) (buf + 0x04)); \
|
|
sVar1 = (*((s16 *) (s0p + 6))) + (*((s16 *) (s0p + 0x50))); \
|
|
*((s16 *) (s6 + 8)) = sVar1; \
|
|
*((s32 *) (buf + 0x18)) = (s32) sVar1; \
|
|
sVar1 = (*((s16 *) (s0p + 0xA))) + (*((s16 *) (s0p + 0x52))); \
|
|
*((s16 *) (s6 + 0xA)) = sVar1; \
|
|
*((s32 *) (buf + 0x1C)) = (s32) sVar1; \
|
|
sVar1 = (*((s16 *) (s0p + 0xE))) + (*((s16 *) (s0p + 0x54))); \
|
|
*((s16 *) (s6 + 0xC)) = sVar1; \
|
|
*((s32 *) (buf + 0x20)) = (s32) sVar1; \
|
|
*((Blk16 *) (s6 + 0x34)) = *((Blk16 *) (buf + 0x04)); \
|
|
*((Blk16 *) (s6 + 0x44)) = *((Blk16 *) (buf + 0x14)); \
|
|
*((u16 *) (s6 + 0x2C)) = (*((u16 *) (s6 + 0x2C))) | 1; \
|
|
} \
|
|
if (((*((u16 *) (s6 + 0x2C))) & 0x10) != 0) \
|
|
{ \
|
|
func_80020F34((s32) (buf + 0x04), s6 + 0x18); \
|
|
} \
|
|
func_80054514((s32) (buf + 0x00), (s32) (buf + 0x50)); \
|
|
if (((s1m & 0x1000000) == 0) && (((*((u16 *) (s6 + 0x2C))) & 0x40) == 0)) \
|
|
{ \
|
|
s1m = s1m + ((s2v & 0xFFFF) * 0xC); \
|
|
func_80049CAC(s1m + 6, (s32) (buf + 0x70)); \
|
|
*((s32 *) (buf + 0x84)) = (s32) (*((s16 *) (s1m + 0))); \
|
|
*((s32 *) (buf + 0x88)) = (s32) (*((s16 *) (s1m + 2))); \
|
|
*((s32 *) (buf + 0x8C)) = (s32) (*((s16 *) (s1m + 4))); \
|
|
} \
|
|
else \
|
|
{ \
|
|
u32 *pu = (u32 *) ((s1m & 0xFEFFFFFF) + ((s2v & 0xFFFF) * 8)); \
|
|
u32 w; \
|
|
*((u16 *) (buf + 0xB0)) = *((u16 *) (((s32) pu) + 6)); \
|
|
w = *pu; \
|
|
*((u16 *) (buf + 0xB2)) = ((u16) (*((u8 *) (((s32) pu) + 1)))) | ((u16) ((w & 0xF) << 8)); \
|
|
*((u16 *) (buf + 0xB4)) = ((u16) (w >> 0x10)) & 0xFF; \
|
|
*((u16 *) (buf + 0xB4)) = (*((u16 *) (buf + 0xB4))) | ((u16) ((w & 0xF0) << 4)); \
|
|
func_80049CAC((s32) (buf + 0xB0), (s32) (buf + 0x70)); \
|
|
*((s32 *) (buf + 0x84)) = (s32) (*((s8 *) (((s32) pu) + 3))); \
|
|
*((s32 *) (buf + 0x88)) = (s32) ((s8) pu[1]); \
|
|
*((s32 *) (buf + 0x8C)) = (s32) (*((s8 *) (((s32) pu) + 5))); \
|
|
} \
|
|
{ \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 0(%0)\n" "lw $13, 4(%0)\n" \
|
|
"ctc2 $12, $0\n" "ctc2 $13, $1\n" \
|
|
"lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n" \
|
|
"ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n" \
|
|
: : "r"((s32 *)(buf + 0x50)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x70)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"((s16 *)(buf + 0x90)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x72)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"((s16 *)(buf + 0x92)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x74)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"((s16 *)(buf + 0x94)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 20(%0)\n" "lw $13, 24(%0)\n" \
|
|
"ctc2 $12, $5\n" "lw $14, 28(%0)\n" \
|
|
"ctc2 $13, $6\n" "ctc2 $14, $7\n" \
|
|
: : "r"((s32 *)(buf + 0x50)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $13, 4(%0)\n" "lhu $12, 0(%0)\n" \
|
|
"sll $13, $13, 16\n" "or $12, $12, $13\n" \
|
|
"mtc2 $12, $0\n" "lwc2 $1, 8(%0)\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 0, 0, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x84)) : "$12", "$13", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" "swc2 $26, 4(%0)\n" "swc2 $27, 8(%0)\n" \
|
|
: : "r"((s32 *)(buf + 0xA4)) : "memory"); \
|
|
} \
|
|
s6 = *((s32 *) (s7 + 0x20)); \
|
|
func_80049CAC(s6 + 0x10, (s32) (buf + 0x70)); \
|
|
sVar1 = (*((s16 *) (s7 + 6))) + (*((s16 *) (s7 + 0x50))); \
|
|
*((s16 *) (s6 + 8)) = sVar1; \
|
|
*((s32 *) (buf + 0x84)) = (s32) sVar1; \
|
|
sVar1 = (*((s16 *) (s7 + 0xA))) + (*((s16 *) (s7 + 0x52))); \
|
|
*((s16 *) (s6 + 0xA)) = sVar1; \
|
|
*((s32 *) (buf + 0x88)) = (s32) sVar1; \
|
|
sVar1 = (*((s16 *) (s7 + 0xE))) + (*((s16 *) (s7 + 0x54))); \
|
|
*((s16 *) (s6 + 0xC)) = sVar1; \
|
|
*((s32 *) (buf + 0x8C)) = (s32) sVar1; \
|
|
{ \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 0(%0)\n" "lw $13, 4(%0)\n" \
|
|
"ctc2 $12, $0\n" "ctc2 $13, $1\n" \
|
|
"lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n" \
|
|
"ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n" \
|
|
: : "r"((s32 *)(buf + 0x90)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x70)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"((s16 *)(buf + 0x50)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x72)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"((s16 *)(buf + 0x52)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x74)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"((s16 *)(buf + 0x54)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 20(%0)\n" "lw $13, 24(%0)\n" \
|
|
"ctc2 $12, $5\n" "lw $14, 28(%0)\n" \
|
|
"ctc2 $13, $6\n" "ctc2 $14, $7\n" \
|
|
: : "r"((s32 *)(buf + 0x90)) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"lhu $13, 4(%0)\n" "lhu $12, 0(%0)\n" \
|
|
"sll $13, $13, 16\n" "or $12, $12, $13\n" \
|
|
"mtc2 $12, $0\n" "lwc2 $1, 8(%0)\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 0, 0, 0\n" \
|
|
: : "r"((s16 *)(buf + 0x84)) : "$12", "$13", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" "swc2 $26, 4(%0)\n" "swc2 $27, 8(%0)\n" \
|
|
: : "r"((s32 *)(buf + 0x64)) : "memory"); \
|
|
} \
|
|
*((Blk16 *) (s6 + 0x34)) = *((Blk16 *) (buf + 0x50)); \
|
|
*((Blk16 *) (s6 + 0x44)) = *((Blk16 *) (buf + 0x60)); \
|
|
s0p = 0x30; \
|
|
*((Blk16 *) (s6 + 0x54)) = *((Blk16 *) (buf + 0x50)); \
|
|
*((Blk16 *) (s6 + 0x64)) = *((Blk16 *) (buf + 0x60)); \
|
|
*((s32 *) (s6 + s0p)) = 1; \
|
|
*((u16 *) (s6 + 0x2C)) = (*((u16 *) (s6 + 0x2C))) | 1; \
|
|
} \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_801542A4() \
|
|
extern void func_80154418(void *a0); \
|
|
void func_801542A4(s32 *a0, s32 a1) { \
|
|
*(s32 *)((u8 *)a0 + 0xB4) = a1; \
|
|
*(s16 *)((u8 *)a0 + 0xBA) = 1; \
|
|
*(s16 *)((u8 *)a0 + 0xB8) = 1; \
|
|
*(s8 *)((u8 *)a0 + 0xBC) = 0; \
|
|
*(s8 *)((u8 *)a0 + 0xBD) = 0; \
|
|
*(s8 *)((u8 *)a0 + 0xDC) = 0; \
|
|
((void (*)(void))func_80154418)(); \
|
|
}
|
|
|
|
#define DEFINE_func_8015BE94() \
|
|
extern void func_80161124(void *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
s32 func_8015BE94(s32 *a0) \
|
|
{ \
|
|
((void (*)(s32 *))func_80161124)(a0); \
|
|
((s32 (*)(s32))func_80146CA0)((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8015F380() \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80148534(s32 a0, s32 a1); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80147324(s32 arg0); \
|
|
extern s32 func_801725B8(u8 *a0); \
|
|
extern void func_80146CA0(void *a0); \
|
|
void func_8015F380(void* arg0) { \
|
|
s64 sp20; \
|
|
s64 sp28; \
|
|
((void (*)(void*, s32))func_80154150)(arg0, 0x18); \
|
|
*(s8*)((u8*)arg0 + 0x244) = 0; \
|
|
*(s8*)((u8*)arg0 + 0x245) = 0; \
|
|
((void (*)(void*, s32))func_80146E90)(arg0, 0); \
|
|
((void (*)(s64*, s64*))func_80148534)(&sp20, &sp28); \
|
|
((void (*)(s32, void*, s16, s16, s16, s32, s32))func_80146A6C)(0x25, arg0, *(s16*)((u8*)arg0 + 0x6), (s16)(*(u16*)((u8*)arg0 + 0xA) - 0x14), *(s16*)((u8*)arg0 + 0xE), 0, 0); \
|
|
((void (*)(s32, void*, s16, s16, s16, s32, s32))func_80146A6C)(0x25, arg0, *(s16*)((u8*)arg0 + 0x6), (s16)(*(u16*)((u8*)arg0 + 0xA) - 0x14), *(s16*)((u8*)arg0 + 0xE), 1, 0); \
|
|
func_80147324(0x56D); \
|
|
((void (*)(void*))func_801725B8)(arg0); \
|
|
func_80146CA0(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_80160F00() \
|
|
extern void func_80149020(s32 *a0); \
|
|
extern void func_80154150(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_80129248(s16 a0); \
|
|
extern void func_80146E90(s32 *a0, s32 a1); \
|
|
extern void func_80146CA0(void *a0); \
|
|
extern u16 D_801270C0; \
|
|
extern u8 D_800B9A17; \
|
|
void func_80160F00(void* arg0) { \
|
|
((void (*)(void*))func_80149020)(arg0); \
|
|
((void (*)(void*, s32))func_80154150)(arg0, 4); \
|
|
((void (*)(void*, s32))func_80154A74)(arg0, 0x11); \
|
|
D_801270C0 = 2; \
|
|
((void (*)(s32))func_80129248)(0); \
|
|
D_800B9A17 = 0; \
|
|
((void (*)(void*, s32))func_80146E90)(arg0, 0x10); \
|
|
func_80146CA0(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_801653B8() \
|
|
extern void func_801653F4(s32 a0); \
|
|
extern void func_80147078(s32 *a0, s16 a1); \
|
|
extern void func_80165580(s32 _arg0); \
|
|
void func_801653B8(s32 *a0) { \
|
|
s32 s = (s32)a0; \
|
|
((void (*)(s32 *))func_801653F4)((s32 *)s); \
|
|
((void (*)(s32, s32))func_80147078)(s, 0x17); \
|
|
((void (*)(void *))func_80165580)((void *)s); \
|
|
}
|
|
|
|
#define DEFINE_func_80166244() \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
void func_80166244(void* arg0) { \
|
|
((void (*)(s32, void*, s16, s16, s16, u32, u32))func_80146A6C)(3, arg0, *(s16*)((u8*)arg0 + 6), *(u16*)((u8*)arg0 + 0xA) - 0x10, *(s16*)((u8*)arg0 + 0xE), 0x8F8FFF8, 0xE000B000); \
|
|
}
|
|
|
|
#define DEFINE_func_8016E778() \
|
|
extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); \
|
|
void func_8016E778(int param_1) \
|
|
{ \
|
|
short local_18[3]; \
|
|
unsigned int local_10; \
|
|
unsigned short uVar1; \
|
|
int iVar2; \
|
|
uVar1 = *(unsigned short *)(param_1 + 0x12); \
|
|
local_18[2] = uVar1; \
|
|
local_18[1] = uVar1; \
|
|
local_18[0] = uVar1; \
|
|
iVar2 = *(short *)(param_1 + 0x16); \
|
|
local_10 = iVar2 | (iVar2 << 16 | iVar2 << 8); \
|
|
func_8016E7C8(param_1, local_18, &local_10); \
|
|
}
|
|
|
|
#define DEFINE_func_801732C4() \
|
|
extern void func_8016F2A8(void); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_801732C4(s32 *a0) { \
|
|
((void (*)(s32 *))func_8016F2A8)(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8017331C() \
|
|
extern void func_8016F2C8(void); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_8017331C(s32 *a0) { \
|
|
((void (*)(s32 *))func_8016F2C8)(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173374() \
|
|
extern void func_8016F2EC(void); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80173374(s32 *a0) { \
|
|
((void (*)(s32 *))func_8016F2EC)(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80174554() \
|
|
extern void func_8014706C(void *arg0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_80174554(s32 arg0) { \
|
|
((void (*)(s32 *))func_8014706C)((s32 *)arg0); \
|
|
func_80174650(arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_801745AC() \
|
|
extern void func_80147060(u8 *a0); \
|
|
extern s32 func_80174650(s32); \
|
|
void func_801745AC(s32 *a0) { \
|
|
((void (*)(s32 *))func_80147060)(a0); \
|
|
func_80174650((s32)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014F74C() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern u8 D_800D3918[]; \
|
|
extern u8 D_801152A8[]; \
|
|
extern s16 D_801152B0; \
|
|
extern s32 D_801152BC; \
|
|
int func_8014F74C(s32 arg0) \
|
|
{ \
|
|
PosT sp10; \
|
|
MoveT sp18; \
|
|
PosT sp20; \
|
|
u16 x6, xA, xE; \
|
|
s32 ret; \
|
|
sp10.x = *(u16 *)(arg0 + 0x88); \
|
|
sp10.y = *(u16 *)(arg0 + 0x8A); \
|
|
sp10.z = *(u16 *)(arg0 + 0x8C); \
|
|
sp18.x = sp20.x = x6 = *(u16 *)(arg0 + 6); \
|
|
sp18.y = sp20.y = xA = *(u16 *)(arg0 + 0xA); \
|
|
sp18.z = sp20.z = xE = *(u16 *)(arg0 + 0xE); \
|
|
if (*(s16 *)(arg0 + 0x146) != 0) { \
|
|
sp18.x = x6 + *(u16 *)(arg0 + 0x140); \
|
|
sp18.y = xA + *(u16 *)(arg0 + 0x142); \
|
|
sp18.z = xE + *(u16 *)(arg0 + 0x144); \
|
|
} \
|
|
ret = func_80133784(0, &sp10, (s32)&sp18); \
|
|
if (ret != 0) { \
|
|
*(s16 *)(arg0 + 6) = sp18.x; \
|
|
*(s16 *)(arg0 + 0xA) = sp18.y; \
|
|
*(s16 *)(arg0 + 0xE) = sp18.z; \
|
|
if (*(u8 *)&sp18.w != 0) { \
|
|
*(u16 *)(arg0 + 0x16C) = *(u8 *)&sp18.w; \
|
|
} \
|
|
*(u16 *)(arg0 + 0x16E) = (u32)sp18.w >> 13; \
|
|
if (ret == 0x2000) { \
|
|
__builtin_memcpy((void *)(arg0 + 0x120), (void *)D_801152A8, 8); \
|
|
} else if (ret == 0x4000) { \
|
|
__builtin_memcpy((void *)(arg0 + 0x120), (void *)&D_801152B0, 8); \
|
|
} \
|
|
if (*(u16 *)(arg0 + 0x16C) != 0x1D) { \
|
|
return ret; \
|
|
} \
|
|
if ((func_80029178(0x21) & 0xFF) == 0) { \
|
|
ret &= ~0x2000; \
|
|
ret |= 0x4000; \
|
|
__builtin_memcpy((void *)&D_801152B0, (void *)D_801152A8, 8); \
|
|
D_801152BC = 1; \
|
|
} \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
return ret; \
|
|
} \
|
|
/* ret == 0 */ \
|
|
__builtin_memcpy((void *)(arg0 + 0x120), (void *)D_800D3918, 8); \
|
|
if (*(u8 *)&sp18.w != 0) { \
|
|
*(u16 *)(arg0 + 0x16C) = *(u8 *)&sp18.w; \
|
|
} \
|
|
if (((sp10.x != sp20.x) || (sp10.y != sp20.y) || (sp10.z != sp20.z)) && \
|
|
(sp10.x == (s16)sp18.x) && (sp10.y == (s16)sp18.y) && (sp10.z == (s16)sp18.z)) { \
|
|
return 0x8000; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014E048() \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ \
|
|
extern s16 D_801152AC; \
|
|
s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3) \
|
|
{ \
|
|
s32 dx; \
|
|
s32 dz; \
|
|
s32 w0; \
|
|
s32 w1; \
|
|
s32 t2; \
|
|
s32 p1; \
|
|
register s32 h __asm__("$4"); /* a0 — the b[0]-store copy temp (RC-4b) */ \
|
|
register u16 *p3 __asm__("$7"); /* a3 — force the addu a3,a2 copy to materialize (RC-3) */ \
|
|
u16 *psVar11; \
|
|
s32 sVar7; \
|
|
s16 sVar8; \
|
|
u32 uVar10; \
|
|
short a[3]; \
|
|
short b[3]; \
|
|
__asm__("addu %0,%1,$zero" : "=r"(p3) : "r"(param_3)); \
|
|
w0 = p3[0]; \
|
|
w1 = param_2[0]; \
|
|
dx = w0 - w1; \
|
|
p1 = param_1; \
|
|
__asm__ __volatile__("" : : "r"(p1), "r"(param_2)); \
|
|
w0 = p3[2]; \
|
|
w1 = param_2[2]; \
|
|
dz = w0 - w1; \
|
|
if ((short)(dx | dz) != 0) { \
|
|
h = dx; \
|
|
b[0] = (short)h; \
|
|
b[1] = p3[1] - param_2[1]; \
|
|
t2 = p3[2] - param_2[2]; \
|
|
b[2] = t2; \
|
|
b[0] = -(short)dx; \
|
|
b[2] = -t2; \
|
|
psVar11 = *(u16 **)(p1 + 0x170); \
|
|
if (*psVar11 != 0) { \
|
|
if ((psVar11[0x2e] & 0x1000U) != 0) { \
|
|
sVar8 = (s16)dz; \
|
|
if (*(s32 *)(psVar11 + 0x2c) != 0) { \
|
|
if (((s32 (*)(s32, s32, u16 *))func_80135A4C)(*(s32 *)(psVar11 + 0x10), *(s32 *)(psVar11 + 0x2c), param_2) != 0) { \
|
|
s32 ndz = psVar11[3] - *(u16 *)(p1 + 6); \
|
|
s32 ndx = psVar11[7] - *(u16 *)(p1 + 0xe); \
|
|
sVar7 = (s16)ratan2((s32)sVar8, (s32)(s16)dx); \
|
|
sVar8 = (s16)ratan2((s32)(s16)ndx, (s32)(s16)ndz); \
|
|
if ((s16)func_80012A60(sVar7, sVar8) < 0x400) { \
|
|
a[0] = psVar11[3]; \
|
|
a[1] = psVar11[5]; \
|
|
a[2] = psVar11[7]; \
|
|
b[0] = a[0] + b[0]; \
|
|
b[1] = a[1] + b[1]; \
|
|
b[2] = a[2] + b[2]; \
|
|
uVar10 = ((s32 (*)(s32, void *, void *))func_80133784)(0, a, b); \
|
|
if ((uVar10 == 0) || (((uVar10 & 0x2000) != 0) && ((*(u16 *)D_801152A8 | *(u16 *)&D_801152AC) == 0))) { \
|
|
psVar11[3] = b[0]; \
|
|
psVar11[5] = b[1]; \
|
|
psVar11[7] = b[2]; \
|
|
} else { \
|
|
*(u16 *)(p1 + 6) = *param_2; \
|
|
*(u16 *)(p1 + 10) = param_2[1] + 0x10; \
|
|
*(u16 *)(p1 + 0xe) = param_2[2]; \
|
|
} \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
*(s32 *)(p1 + 0x170) = 0; \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80157580() \
|
|
extern void func_8014CC28(s32 a0); /* defined */ \
|
|
extern void func_8014F3E8(s32 a0); /* declared */ \
|
|
extern void func_8015BDD0(s32 *a0); /* defined */ \
|
|
extern void func_801575E4(void *a0); /* defined */ \
|
|
void func_80157580(s32 arg0) { \
|
|
s32 temp_s1; \
|
|
/* return-cast: canonical func_8014CC28 is void, but its $v0 is used here */ \
|
|
temp_s1 = ((s32 (*)(s32))func_8014CC28)(arg0); \
|
|
/* return-cast: canonical func_8014F3E8 is void, but its $v0 is tested here */ \
|
|
if ((((s32 (*)(s32))func_8014F3E8)(arg0) == 0) && (temp_s1 == 0)) { \
|
|
func_8015BDD0((s32 *)arg0); \
|
|
return; \
|
|
} \
|
|
func_801575E4((void *)arg0); \
|
|
}
|
|
|
|
#define DEFINE_func_80129CF8() \
|
|
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 struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ \
|
|
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 */ \
|
|
void func_80129CF8(void) \
|
|
{ \
|
|
RView view; /* unused: reserves the extra 0x20 frame bytes the target has */ \
|
|
s32 *cam; \
|
|
s32 *p1; \
|
|
s32 *p2; \
|
|
s32 a; \
|
|
s32 b; \
|
|
s32 iVar2; \
|
|
func_8012A328(); \
|
|
p2 = (s32 *)D_800AF630; \
|
|
p1 = (s32 *)&D_80126DB8; \
|
|
if (*(u8 *)&D_801150D6 == 1) { \
|
|
cam = D_80126E60; \
|
|
} else if (*(u8 *)&D_801150D6 == 2) { \
|
|
cam = D_80126F04; \
|
|
} else { \
|
|
cam = (s32 *)D_80126948; \
|
|
if (*(u8 *)&D_801150D6 == 3) { \
|
|
cam = D_80126FA8; \
|
|
} \
|
|
} \
|
|
if (cam[0] != 0) { \
|
|
(*(void (*)(s32 *))cam[0])(cam); \
|
|
} \
|
|
func_80053308(cam[2]); \
|
|
if (D_80127504 != 0) { \
|
|
p1[0xf] = (s16)func_80012F74((s16)p1[0xf], (s16)cam[0xf], 2, 1); \
|
|
p1[0x10] = (s16)func_80012F74((s16)p1[0x10], (s16)cam[0x10], 2, 1); \
|
|
p1[0x11] = (s16)func_80012F74((s16)p1[0x11], (s16)cam[0x11], 2, 1); \
|
|
p1[0x12] = (s16)func_80012F74((s16)p1[0x12], (s16)cam[0x12], 2, 1); \
|
|
p1[0x13] = (s16)func_80012F74((s16)p1[0x13], (s16)cam[0x13], 2, 1); \
|
|
p1[0x14] = (s16)func_80012F74((s16)p1[0x14], (s16)cam[0x14], 2, 1); \
|
|
p1[0x15] = (s16)func_80012F74((s16)p1[0x15], (s16)cam[0x15], 2, 1); \
|
|
D_80127504 = D_80127504 - 1; \
|
|
} else { \
|
|
p1[0xf] = cam[0xf]; \
|
|
p1[0x10] = cam[0x10]; \
|
|
p1[0x11] = cam[0x11]; \
|
|
p1[0x12] = cam[0x12]; \
|
|
p1[0x13] = cam[0x13]; \
|
|
p1[0x14] = cam[0x14]; \
|
|
p1[0x15] = cam[0x15]; \
|
|
} \
|
|
a = p1[0xf]; \
|
|
b = cam[0x1f]; \
|
|
cam[0x17] = a + b; \
|
|
a = p1[0x10]; \
|
|
b = cam[0x20]; \
|
|
cam[0x18] = a + b; \
|
|
a = p1[0x11]; \
|
|
b = cam[0x21]; \
|
|
cam[0x19] = a + b; \
|
|
a = p1[0x12]; \
|
|
b = cam[0x22]; \
|
|
cam[0x1a] = a + b; \
|
|
a = p1[0x13]; \
|
|
b = cam[0x23]; \
|
|
cam[0x1b] = a + b; \
|
|
a = p1[0x14]; \
|
|
b = cam[0x24]; \
|
|
cam[0x1c] = a + b; \
|
|
iVar2 = p1[0x15] + cam[0x25]; \
|
|
cam[0x1e] = cam[0x16]; \
|
|
cam[0x1d] = iVar2; \
|
|
GsSetRefView2L(&cam[0x17]); \
|
|
*(RView *)(p2 + 6) = *(RView *)D_800AE688; \
|
|
D_801151D4 = (s32)cam; \
|
|
}
|
|
|
|
#define DEFINE_func_80138ED0() \
|
|
extern s32 func_8013914C(s32 a0, s32 a1); \
|
|
extern void func_800599B8(u16 *); \
|
|
extern u16 D_80127C0C[]; \
|
|
extern s32 D_80127548[]; \
|
|
s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3) \
|
|
{ \
|
|
u16 local[4]; \
|
|
u16 uVar1; \
|
|
s32 result; \
|
|
u16 uVar4; \
|
|
u8 *pbVar7; \
|
|
u8 *pb; \
|
|
u16 *base; \
|
|
u16 *p; \
|
|
s32 iVar2; \
|
|
u32 s0acc; \
|
|
u32 tmp; \
|
|
s32 shift; \
|
|
pb = param_3; \
|
|
uVar1 = *(u8 *)(param_1 + 0x23) & 0xf; \
|
|
result = ((s32 (*)(u8 *, u16 *))func_8013914C)(param_1, local); \
|
|
if (result != 0) { \
|
|
return 1; \
|
|
} \
|
|
uVar4 = local[0] - *(u16 *)(param_1 + 0x38); \
|
|
pbVar7 = pb + (param_2 & 0xffff) * 0xc; \
|
|
base = D_80127C0C + uVar4; \
|
|
iVar2 = 0; \
|
|
if (uVar4 % 3 != 0) { \
|
|
u32 pv = uVar1; \
|
|
p = base; \
|
|
do { \
|
|
shift = 6; \
|
|
do { \
|
|
tmp = (s0acc & 0xffff) << 4; \
|
|
s0acc = tmp | pv; \
|
|
if ((((s32)*pbVar7 >> shift) & 1) == 0) { \
|
|
s0acc = tmp; \
|
|
} \
|
|
shift++; \
|
|
} while (shift < 8); \
|
|
*p = *p | (s0acc << 8); \
|
|
p++; \
|
|
shift = 2; \
|
|
do { \
|
|
tmp = (s0acc & 0xffff) << 4; \
|
|
s0acc = tmp | pv; \
|
|
if ((((s32)*pbVar7 >> shift) & 1) == 0) { \
|
|
s0acc = tmp; \
|
|
} \
|
|
shift++; \
|
|
} while (shift < 6); \
|
|
*p = s0acc; \
|
|
p += 0x35; \
|
|
iVar2++; \
|
|
pbVar7++; \
|
|
} while (iVar2 < 0xc); \
|
|
iVar2 = 0; \
|
|
} else { \
|
|
u32 pv = uVar1; \
|
|
p = base; \
|
|
do { \
|
|
shift = 4; \
|
|
do { \
|
|
tmp = (s0acc & 0xffff) << 4; \
|
|
s0acc = tmp | pv; \
|
|
if ((((s32)*pbVar7 >> shift) & 1) == 0) { \
|
|
s0acc = tmp; \
|
|
} \
|
|
shift++; \
|
|
} while (shift < 8); \
|
|
*p = s0acc; \
|
|
p++; \
|
|
shift = 2; \
|
|
do { \
|
|
tmp = (s0acc & 0xffff) << 4; \
|
|
s0acc = tmp | pv; \
|
|
if ((((s32)*pbVar7 >> shift) & 1) == 0) { \
|
|
s0acc = tmp; \
|
|
} \
|
|
shift++; \
|
|
} while (shift < 4); \
|
|
*p = s0acc & 0xff; \
|
|
p += 0x35; \
|
|
iVar2++; \
|
|
pbVar7++; \
|
|
} while (iVar2 < 0xc); \
|
|
iVar2 = 0; \
|
|
} \
|
|
{ \
|
|
u16 *src = base; \
|
|
s32 dcount; \
|
|
s32 df; \
|
|
s32 decoy; \
|
|
s32 c36; \
|
|
u16 tv; \
|
|
register s32 *dp __asm__("$4"); \
|
|
register u16 *ba __asm__("$5"); \
|
|
dp = D_80127548; \
|
|
dcount = *dp; \
|
|
c36 = 0x24; \
|
|
__asm__ ("" : : "r"(c36), "r"(dcount)); \
|
|
df = c36 - dcount; \
|
|
tmp = (df << 1) + df; \
|
|
tmp = tmp << 4; \
|
|
dp = dp + 1; \
|
|
ba = (u16 *)(tmp + (u8 *)dp); \
|
|
__asm__ ("" : "=r"(decoy) : "r"(ba)); \
|
|
__asm__ ("" : : "r"(decoy)); \
|
|
{ \
|
|
register u16 *dst __asm__("$4"); \
|
|
dst = ba; \
|
|
do { \
|
|
tv = *src; src++; \
|
|
*dst = tv; dst++; \
|
|
tv = *src; src += 0x35; \
|
|
*dst = tv; dst++; \
|
|
iVar2++; \
|
|
} while (iVar2 < 0xc); \
|
|
} \
|
|
} \
|
|
local[2] = 2; \
|
|
local[3] = 0xc; \
|
|
func_800599B8(local); \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012D098() \
|
|
extern void func_8012F214(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); \
|
|
void func_8012D098(u16 *param_1, u32 param_2) \
|
|
{ \
|
|
s32 bufA[2]; \
|
|
s32 bufB[2]; \
|
|
s32 bufC[2]; \
|
|
s32 bufD[2]; \
|
|
s32 bufE[2]; \
|
|
s32 bufF[2]; \
|
|
s32 bufG[2]; \
|
|
s32 bufH[2]; \
|
|
u16 scratch[3]; \
|
|
if (param_1 != 0 && *param_1 != 0) { \
|
|
if (param_2 == 0) { \
|
|
if (*(u32 *)(param_1 + 0x2c) == 0) { \
|
|
return; \
|
|
} \
|
|
param_2 = (*(u32 *)(param_1 + 0x2c) & 0xfffffff) | 0x80000000; \
|
|
} \
|
|
scratch[0] = *(u16 *)(param_2 + 4); \
|
|
scratch[1] = *(u16 *)(param_2 + 8); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xc); \
|
|
func_8012F214(param_1, scratch, bufA); \
|
|
scratch[0] = *(u16 *)(param_2 + 6); \
|
|
scratch[1] = *(u16 *)(param_2 + 8); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xc); \
|
|
func_8012F214(param_1, scratch, bufB); \
|
|
scratch[0] = *(u16 *)(param_2 + 4); \
|
|
scratch[1] = *(u16 *)(param_2 + 0xa); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xc); \
|
|
func_8012F214(param_1, scratch, bufC); \
|
|
scratch[0] = *(u16 *)(param_2 + 6); \
|
|
scratch[1] = *(u16 *)(param_2 + 0xa); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xc); \
|
|
func_8012F214(param_1, scratch, bufD); \
|
|
scratch[0] = *(u16 *)(param_2 + 4); \
|
|
scratch[1] = *(u16 *)(param_2 + 8); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xe); \
|
|
func_8012F214(param_1, scratch, bufE); \
|
|
scratch[0] = *(u16 *)(param_2 + 6); \
|
|
scratch[1] = *(u16 *)(param_2 + 8); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xe); \
|
|
func_8012F214(param_1, scratch, bufF); \
|
|
scratch[0] = *(u16 *)(param_2 + 4); \
|
|
scratch[1] = *(u16 *)(param_2 + 0xa); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xe); \
|
|
func_8012F214(param_1, scratch, bufG); \
|
|
scratch[0] = *(u16 *)(param_2 + 6); \
|
|
scratch[1] = *(u16 *)(param_2 + 0xa); \
|
|
scratch[2] = *(u16 *)(param_2 + 0xe); \
|
|
func_8012F214(param_1, scratch, bufH); \
|
|
func_8012D3B4(bufA, bufB, 0xffffff); \
|
|
func_8012D3B4(bufB, bufD, 0xffffff); \
|
|
func_8012D3B4(bufD, bufC, 0xffffff); \
|
|
func_8012D3B4(bufC, bufA, 0xffffff); \
|
|
func_8012D3B4(bufE, bufF, 0xffffff); \
|
|
func_8012D3B4(bufF, bufH, 0xffffff); \
|
|
func_8012D3B4(bufH, bufG, 0xffffff); \
|
|
func_8012D3B4(bufG, bufE, 0xffffff); \
|
|
func_8012D3B4(bufA, bufE, 0xffffff); \
|
|
func_8012D3B4(bufB, bufF, 0xffffff); \
|
|
func_8012D3B4(bufC, bufG, 0xffffff); \
|
|
func_8012D3B4(bufD, bufH, 0xffffff); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_8012EC04() \
|
|
extern void func_80049CAC(s32 a0, s32 a1); \
|
|
void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3) \
|
|
{ \
|
|
struct { s16 h[8]; } buf; \
|
|
s32 iVar4; \
|
|
s32 M; \
|
|
s32 c; \
|
|
register u32 v __asm__("$17"); /* $s1 */ \
|
|
iVar4 = *(s32 *)(param_1 + 0x20); \
|
|
v = *(u32 *)(iVar4 + 0x20); \
|
|
if (v == 0) { \
|
|
*(Blk16 *)(param_3) = *(Blk16 *)(iVar4 + 0x34); \
|
|
*(Blk16 *)((s32)param_3 + 0x10) = *(Blk16 *)(iVar4 + 0x44); \
|
|
} else if ((v & 0x1000000) != 0) { \
|
|
register s32 p __asm__("$16"); \
|
|
s32 w; \
|
|
p = (s32)(v & 0xfeffffff); \
|
|
p = p + param_2 * 8; \
|
|
buf.h[0] = *(s16 *)(p + 6); \
|
|
w = *(s32 *)p; \
|
|
buf.h[1] = (s16)(*(u8 *)(p + 1) | ((w & 0xf) << 8)); \
|
|
buf.h[2] = (s16)(((w >> 0x10) & 0xff) | ((w & 0xf0) << 4)); \
|
|
func_80049CAC((s32)&buf, (s32)param_3); \
|
|
param_3[5] = *(s8 *)(p + 3); \
|
|
param_3[6] = *(s8 *)(p + 4); \
|
|
param_3[7] = *(s8 *)(p + 5); \
|
|
} else { \
|
|
s32 q; \
|
|
v = v + param_2 * 0xc; \
|
|
q = (s32)v; \
|
|
buf.h[0] = *(s16 *)(q + 6); \
|
|
buf.h[1] = *(s16 *)(q + 8); \
|
|
buf.h[2] = *(s16 *)(q + 0xa); \
|
|
func_80049CAC((s32)&buf, (s32)param_3); \
|
|
param_3[5] = *(s16 *)(q + 0); \
|
|
param_3[6] = *(s16 *)(q + 2); \
|
|
param_3[7] = *(s16 *)(q + 4); \
|
|
} \
|
|
/* --- GTE tail --- */ \
|
|
/* gte_SetRotMatrix(M) */ \
|
|
M = *(s32 *)(param_1 + 0x20) + 0x34; \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 0(%0)\n" "lw $13, 4(%0)\n" \
|
|
"ctc2 $12, $0\n" "ctc2 $13, $1\n" \
|
|
"lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n" \
|
|
"ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n" \
|
|
: : "r"(M) : "$12", "$13", "$14", "memory"); \
|
|
/* column 0: param_3 in place */ \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"((s32)param_3) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"((s32)param_3) : "$12", "$13", "$14", "memory"); \
|
|
/* column 1: param_3 + 2 */ \
|
|
c = (s32)param_3 + 2; \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"(c) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"(c) : "$12", "$13", "$14", "memory"); \
|
|
/* column 2: param_3 + 4 */ \
|
|
c = (s32)param_3 + 4; \
|
|
__asm__ __volatile__( \
|
|
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
|
|
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
|
|
: : "r"(c) : "$12", "$13", "$14", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
|
|
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
|
|
: : "r"(c) : "$12", "$13", "$14", "memory"); \
|
|
/* gte_SetTransMatrix(M) — M reloaded */ \
|
|
M = *(s32 *)(param_1 + 0x20) + 0x34; \
|
|
__asm__ __volatile__( \
|
|
"lw $12, 20(%0)\n" "lw $13, 24(%0)\n" \
|
|
"ctc2 $12, $5\n" "lw $14, 28(%0)\n" \
|
|
"ctc2 $13, $6\n" "ctc2 $14, $7\n" \
|
|
: : "r"(M) : "$12", "$13", "$14", "memory"); \
|
|
/* gte_ldlv0(param_3->t) ; gte_rt() ; gte_stlvnl(param_3->t) */ \
|
|
c = (s32)param_3 + 0x14; \
|
|
__asm__ __volatile__( \
|
|
"lhu $13, 4(%0)\n" "lhu $12, 0(%0)\n" \
|
|
"sll $13, $13, 16\n" "or $12, $12, $13\n" \
|
|
"mtc2 $12, $0\n" "lwc2 $1, 8(%0)\n" \
|
|
"nop\n" "nop\n" "mvmva 1, 0, 0, 0, 0\n" \
|
|
: : "r"(c) : "$12", "$13", "memory"); \
|
|
__asm__ __volatile__( \
|
|
"swc2 $25, 0(%0)\n" "swc2 $26, 4(%0)\n" "swc2 $27, 8(%0)\n" \
|
|
: : "r"(c) : "memory"); \
|
|
}
|
|
|
|
#define DEFINE_func_801392FC() \
|
|
extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80052460(s32 a0, s32 a1, s32 a2); \
|
|
void func_801392FC(s32 arg0, s32 arg1, u8 *arg2) \
|
|
{ \
|
|
s32 buf[16]; \
|
|
s32 i; \
|
|
s32 acc; \
|
|
s32 rem; \
|
|
u16 cnt; \
|
|
register s32 a1c __asm__("$5"); \
|
|
*(s32 *)((u8 *)buf + 0x00) = 0; \
|
|
*(s16 *)((u8 *)buf + 0x0C) = GetTPage(0, 1, \
|
|
*(s16 *)((u8 *)arg0 + 0x38) & 0xFFC0, \
|
|
*(s16 *)((u8 *)arg0 + 0x3A) & 0xFF00); \
|
|
*(s16 *)((u8 *)buf + 0x10) = *(u16 *)((u8 *)arg0 + 0x3C); \
|
|
*(s16 *)((u8 *)buf + 0x12) = *(u16 *)((u8 *)arg0 + 0x3E); \
|
|
*(u8 *)((u8 *)buf + 0x16) = 0x80; \
|
|
*(u8 *)((u8 *)buf + 0x15) = 0x80; \
|
|
*(u8 *)((u8 *)buf + 0x14) = 0x80; \
|
|
i = 0; \
|
|
cnt = *(volatile u16 *)((u8 *)arg0 + 0x2E); \
|
|
if (*(s16 *)((u8 *)arg0 + 0x2E) > 0) { \
|
|
s32 c12 = 0xC; \
|
|
s32 c12ma = 0xC - arg1; \
|
|
acc = 0; \
|
|
do { \
|
|
rem = (*(u16 *)((u8 *)arg0 + 0x16) + i) % ((s16)cnt + 1); \
|
|
*(s16 *)((u8 *)buf + 0x04) = *(u16 *)((u8 *)arg0 + 0x30); \
|
|
if (i != 0) { \
|
|
*(s16 *)((u8 *)buf + 0x06) = (*(u16 *)((u8 *)arg0 + 0x32) + acc - arg1) + i * 2; \
|
|
} else { \
|
|
*(s16 *)((u8 *)buf + 0x06) = *(u16 *)((u8 *)arg0 + 0x32); \
|
|
} \
|
|
if (i == 0) { \
|
|
*(s16 *)((u8 *)buf + 0x0A) = c12ma; \
|
|
} else { \
|
|
*(s16 *)((u8 *)buf + 0x0A) = c12; \
|
|
} \
|
|
*(u8 *)((u8 *)buf + 0x0E) = 0; \
|
|
if (i != 0) { \
|
|
s32 t = rem * 12 + *(u8 *)((u8 *)arg0 + 0x3A); \
|
|
*(u8 *)((u8 *)buf + 0x0F) = t; \
|
|
} else { \
|
|
s32 t = rem * 12 + *(u8 *)((u8 *)arg0 + 0x3A) + arg1; \
|
|
*(u8 *)((u8 *)buf + 0x0F) = t; \
|
|
} \
|
|
*(s16 *)((u8 *)buf + 0x08) = *(u16 *)((u8 *)arg0 + 0x34); \
|
|
func_80052460((s32)buf, (s32)arg2, *(u16 *)((u8 *)arg0 + 0x1A)); \
|
|
acc += 0xC; \
|
|
i++; \
|
|
cnt = *(volatile u16 *)((u8 *)arg0 + 0x2E); \
|
|
} while (i < *(s16 *)((u8 *)arg0 + 0x2E)); \
|
|
} \
|
|
if (arg1 != 0) { \
|
|
s16 w; \
|
|
rem = (*(u16 *)((u8 *)arg0 + 0x16) + i) % (*(s16 *)((u8 *)arg0 + 0x2E) + 1); \
|
|
*(s16 *)((u8 *)buf + 0x04) = *(u16 *)((u8 *)arg0 + 0x30); \
|
|
*(s16 *)((u8 *)buf + 0x06) = (*(u16 *)((u8 *)arg0 + 0x32) + i * 12) - arg1 + i * 2; \
|
|
*(s16 *)((u8 *)buf + 0x0A) = arg1 - 2; \
|
|
*(u8 *)((u8 *)buf + 0x0E) = 0; \
|
|
{ \
|
|
s32 t = rem * 12 + *(u8 *)((u8 *)arg0 + 0x3A); \
|
|
*(u8 *)((u8 *)buf + 0x0F) = t; \
|
|
} \
|
|
w = *(s16 *)((u8 *)arg0 + 0x34); \
|
|
if (w >= 0xFD) { \
|
|
*(s16 *)((u8 *)buf + 0x08) = 0x100; \
|
|
func_80052460((s32)buf, (s32)arg2, *(u16 *)((u8 *)arg0 + 0x1A)); \
|
|
{ \
|
|
s32 t2; \
|
|
*(s16 *)((u8 *)buf + 0x04) = *(u16 *)((u8 *)arg0 + 0x30) + *(u16 *)((u8 *)buf + 0x08); \
|
|
*(s16 *)((u8 *)buf + 0x08) = 0x20; \
|
|
*(u8 *)((u8 *)buf + 0x0E) = rem << 5; \
|
|
t2 = (*(s16 *)((u8 *)arg0 + 0x2E) + 1) * 12 + *(u8 *)((u8 *)arg0 + 0x3A); \
|
|
*(u8 *)((u8 *)buf + 0x0F) = t2; \
|
|
} \
|
|
a1c = (s32)arg2; \
|
|
func_80052460((s32)buf, a1c, *(u16 *)((u8 *)arg0 + 0x1A)); \
|
|
} else { \
|
|
*(s16 *)((u8 *)buf + 0x08) = w; \
|
|
func_80052460((s32)buf, (s32)arg2, *(u16 *)((u8 *)arg0 + 0x1A)); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8013A530() \
|
|
extern void *memcpy(void *, const void *, u32); \
|
|
extern void func_80015D4C(); \
|
|
extern void func_80015F04(); \
|
|
extern void func_8013AA24(s32 a0, s32 a1); \
|
|
void func_8013A530(int param_1) \
|
|
{ \
|
|
int iVar11; \
|
|
u16 uVar2; \
|
|
int sVar2; \
|
|
register u8 bVar1 __asm__("$8"); \
|
|
int deadlocal[2]; \
|
|
iVar11 = *(int *)(param_1 + 4); \
|
|
uVar2 = *(u16 *)(iVar11 + 0x18); \
|
|
sVar2 = uVar2; \
|
|
bVar1 = *(u8 *)(iVar11 + 0x22); \
|
|
if (uVar2 != 0 && uVar2 < 7) { \
|
|
if (uVar2 != 1) { \
|
|
if (sVar2 != 0 && sVar2 < 7) { \
|
|
register u32 f34 __asm__("$5"); \
|
|
u32 uVar2b; \
|
|
u32 uVar6; \
|
|
short sVar5; \
|
|
register int fc __asm__("$5"); \
|
|
register int zr __asm__("$0"); \
|
|
int iVar7; \
|
|
f34 = *(u16 *)(iVar11 + 0x34); \
|
|
uVar6 = f34 + 0x10; \
|
|
uVar2b = *(u16 *)(iVar11 + 0x36) + 0x10; \
|
|
if (*(u8 *)(iVar11 + 0x20) != 0) { \
|
|
uVar6 = f34 + 0x38; \
|
|
} \
|
|
sVar5 = (short)((int)((int)*(s16 *)(iVar11 + 0x28) * (uVar6 & 0xffff)) / 0x9a); \
|
|
*(s16 *)(param_1 + 8) = sVar5; \
|
|
if ((bVar1 & 8) == 0) { \
|
|
*(s16 *)(param_1 + 8) = -sVar5; \
|
|
} \
|
|
if ((bVar1 & 0x60) == 0 || (bVar1 & 0x80) != 0) { \
|
|
*(s16 *)(param_1 + 8) = -*(s16 *)(param_1 + 8); \
|
|
} \
|
|
sVar5 = (short)((int)((int)*(s16 *)(iVar11 + 0x2a) * (uVar2b & 0xffff)) / 0x2a); \
|
|
*(s16 *)(param_1 + 0xa) = sVar5; \
|
|
if ((bVar1 & 0x10) != 0) { \
|
|
*(s16 *)(param_1 + 0xa) = -sVar5; \
|
|
} \
|
|
__asm__("" :: "r"(bVar1)); \
|
|
fc = *(s16 *)(param_1 + 0xc); \
|
|
iVar7 = fc + zr; \
|
|
if (fc < *(s16 *)(param_1 + 0xe)) { \
|
|
int t = iVar7 + 0x400; \
|
|
*(s16 *)(param_1 + 0xc) = (short)t; \
|
|
if (((t << 16) >> 16) > (int)*(s16 *)(param_1 + 0xe)) { \
|
|
*(s16 *)(param_1 + 0xc) = *(s16 *)(param_1 + 0xe); \
|
|
} \
|
|
} else if (*(s16 *)(param_1 + 0xe) < fc) { \
|
|
int t = iVar7 - 0x400; \
|
|
__asm__("" :: "r"(iVar7), "r"(t)); \
|
|
*(s16 *)(param_1 + 0xc) = (short)t; \
|
|
if (((t << 16) >> 16) < (int)*(s16 *)(param_1 + 0xe)) { \
|
|
*(s16 *)(param_1 + 0xc) = *(s16 *)(param_1 + 0xe); \
|
|
} \
|
|
} \
|
|
__asm__("" :: "r"(fc)); \
|
|
func_8013AA24(iVar11, param_1); \
|
|
} \
|
|
} else { \
|
|
int iVar7, iVar8; \
|
|
u32 uVar6, uVar4; \
|
|
memcpy((void *)(param_1 + 8), (void *)(iVar11 + 0x28), 4); \
|
|
uVar6 = ((*(s16 *)(iVar11 + 0x34) + 0x10) * (int)*(s16 *)(param_1 + 8)) >> 0xc; \
|
|
uVar4 = ((*(s16 *)(iVar11 + 0x36) + 0x10) * (int)*(s16 *)(param_1 + 0xa)) >> 0xc; \
|
|
iVar7 = *(u16 *)(iVar11 + 0x24) - ((uVar6 & 0xffff) >> 1); \
|
|
iVar8 = *(u16 *)(iVar11 + 0x26) - ((uVar4 & 0xffff) >> 1); \
|
|
func_80015F04((int)(s16)iVar7, (int)(s16)iVar8, (int)(s16)uVar6, (int)(s16)uVar4, \
|
|
0xb3, 0x99, 0x4c, *(u16 *)(iVar11 + 0x1a), 4); \
|
|
func_80015F04((int)(s16)(iVar7 + 1), (int)(s16)(iVar8 + 1), \
|
|
(int)(s16)(uVar6 - 2), (int)(s16)(uVar4 - 2), \
|
|
0xe6, 0xcc, 0x73, *(u16 *)(iVar11 + 0x1a), 4); \
|
|
func_80015D4C((int)(s16)iVar7, (int)(s16)iVar8, (int)(s16)uVar6, (int)(s16)uVar4, \
|
|
0xff, 0xe6, 0x99, *(u16 *)(iVar11 + 0x1a), 4); \
|
|
} \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_8013AF20() \
|
|
extern void *func_80010A08(s32); \
|
|
void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4) \
|
|
{ \
|
|
u32 *puVar3; \
|
|
u32 *puVar4; \
|
|
u32 *puVar5; \
|
|
s32 iVar8; \
|
|
s32 j; \
|
|
puVar3 = (u32 *)func_80010A08(0x168); \
|
|
puVar4 = (u32 *)func_80010A08(0x1e0); \
|
|
puVar5 = (u32 *)func_80010A08(0x1e0); \
|
|
iVar8 = 0; \
|
|
j = 0; \
|
|
do { \
|
|
*(u8 *)((s32)puVar4 + 3) = 3; \
|
|
*(u8 *)((s32)puVar4 + 7) = 0x40; \
|
|
*(u8 *)((s32)puVar4 + 4) = 0x3d; \
|
|
*(u8 *)((s32)puVar4 + 5) = 0x3d; \
|
|
*(u8 *)((s32)puVar4 + 6) = 0x3d; \
|
|
*(u16 *)((s32)puVar4 + 8) = param_3[j]; \
|
|
*(u16 *)((s32)puVar4 + 0xa) = param_3[j + 1]; \
|
|
iVar8 = iVar8 + 1; \
|
|
*(u16 *)((s32)puVar4 + 0xc) = param_3[j + 2]; \
|
|
*(u16 *)((s32)puVar4 + 0xe) = param_3[j + 3]; \
|
|
j += 2; \
|
|
/* addPrim(param_1, puVar4): setaddr(p, getaddr(ot)), setaddr(ot, p) */ \
|
|
((P_TAG *)puVar4)->addr = ((P_TAG *)param_1)->addr; \
|
|
((P_TAG *)param_1)->addr = (u32)puVar4; \
|
|
puVar4 = puVar4 + 4; \
|
|
} while (iVar8 < 0x1e); \
|
|
iVar8 = 0; \
|
|
j = 0; \
|
|
do { \
|
|
iVar8 = iVar8 + 1; \
|
|
*(u8 *)((s32)puVar5 + 3) = 3; \
|
|
*(u8 *)((s32)puVar5 + 7) = 0x40; \
|
|
*(u8 *)((s32)puVar5 + 4) = 0x92; \
|
|
*(u8 *)((s32)puVar5 + 5) = 0x92; \
|
|
*(u8 *)((s32)puVar5 + 6) = 0x92; \
|
|
*(u16 *)((s32)puVar5 + 8) = param_3[j] + (s8)param_4[j]; \
|
|
*(u16 *)((s32)puVar5 + 0xa) = param_3[j + 1] + (s8)param_4[j + 1]; \
|
|
*(u16 *)((s32)puVar5 + 0xc) = param_3[j + 2] + (s8)param_4[j + 2]; \
|
|
*(u16 *)((s32)puVar5 + 0xe) = param_3[j + 3] + (s8)param_4[j + 3]; \
|
|
j += 2; \
|
|
((P_TAG *)puVar5)->addr = ((P_TAG *)param_1)->addr; \
|
|
((P_TAG *)param_1)->addr = (u32)puVar5; \
|
|
puVar5 = puVar5 + 4; \
|
|
} while (iVar8 < 0x1e); \
|
|
iVar8 = 0; \
|
|
j = 0; \
|
|
do { \
|
|
*(u8 *)((s32)puVar3 + 3) = 5; \
|
|
*(u8 *)((s32)puVar3 + 7) = 0x28; \
|
|
*(u8 *)((s32)puVar3 + 4) = 0xff; \
|
|
*(u8 *)((s32)puVar3 + 5) = 0xff; \
|
|
*(u8 *)((s32)puVar3 + 6) = 0xff; \
|
|
*(u16 *)((s32)puVar3 + 8) = param_3[j]; \
|
|
*(u16 *)((s32)puVar3 + 0xa) = param_3[j + 1]; \
|
|
*(u16 *)((s32)puVar3 + 0xc) = param_2[0]; \
|
|
*(u16 *)((s32)puVar3 + 0xe) = param_2[1]; \
|
|
*(u16 *)((s32)puVar3 + 0x10) = param_3[j + 2]; \
|
|
*(u16 *)((s32)puVar3 + 0x12) = param_3[j + 3]; \
|
|
iVar8 = iVar8 + 2; \
|
|
*(u16 *)((s32)puVar3 + 0x14) = param_3[j + 4]; \
|
|
*(u16 *)((s32)puVar3 + 0x16) = param_3[j + 5]; \
|
|
j += 4; \
|
|
((P_TAG *)puVar3)->addr = ((P_TAG *)param_1)->addr; \
|
|
((P_TAG *)param_1)->addr = (u32)puVar3; \
|
|
puVar3 = puVar3 + 6; \
|
|
} while (iVar8 < 0x1e); \
|
|
}
|
|
|
|
#define DEFINE_func_801571C4() \
|
|
extern s32 func_80135004(s32 a0, void *a1, s32 a2); \
|
|
extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_8014C918(s32 a0, s32 a1); \
|
|
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
|
|
extern u8 D_801202A0[]; \
|
|
extern u8 D_801152A8[]; \
|
|
extern u8 D_80126720[]; \
|
|
u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12) \
|
|
{ \
|
|
s16 sp18[4]; \
|
|
u16 local_40; \
|
|
u16 local_38; \
|
|
u32 local_30; \
|
|
u32 ret; \
|
|
u32 counter; \
|
|
u32 s4val; \
|
|
s32 off; \
|
|
s32 r; \
|
|
ret = 0; \
|
|
; \
|
|
local_38 = a10; \
|
|
r = ((s32 (*)(s32, s32, s32))func_80135004)(1, a3, a4); \
|
|
if (r != 0) \
|
|
{ \
|
|
*((u8 *) a11) = (*((u16 *) (a4 + 6))) >> 13; \
|
|
*((u8 *) a12) = *((u16 *) (a4 + 6)); \
|
|
ret = 2; \
|
|
__builtin_memcpy((void *) a6, D_801152A8, 8); \
|
|
} \
|
|
counter = 0; \
|
|
s4val = a1; \
|
|
local_30 = a2 & 0x8000; \
|
|
off = 0; \
|
|
do \
|
|
{ \
|
|
u8 *e = &D_801202A0[off]; \
|
|
s32 a1v; \
|
|
if (((((((*((u16 *) e)) != 0) && ((a1v = *((s32 *) (e + 0x58))) != 0)) && (((*((u32 *) (e + 0x5c))) & 0x8100) == 0x8000)) && ((*((u16 *) (e + 0x5e))) != 10)) && (((a9 & 0x80) != 0) || ((*((u16 *) (e + 0x5e))) != s4val))) && ((s4val != 0xd) || (((*((u16 *) (e + 0x5c))) & 0x2000) != 0))) \
|
|
{ \
|
|
if (func_80135260(*((s32 *) (e + 0x20)), a1v, a3, a4) != 0) \
|
|
{ \
|
|
if ((((*((u16 *) (e + 0x5c))) & 0x4000) != 0) || (((*((s16 *) (e + 0xae))) & local_38) != 0)) \
|
|
{ \
|
|
*((u8 *) a11) = func_8014C918(a0, *((u8 *) (e + 0x75))); \
|
|
*((u8 *) a12) = 0; \
|
|
__builtin_memcpy((void *) a6, D_801152A8, 8); \
|
|
ret |= 4; \
|
|
*((s32 *) a7) = (s32) e; \
|
|
} \
|
|
else \
|
|
{ \
|
|
__builtin_memcpy(sp18, (void *) a4, 8); \
|
|
if (local_30 != 0) \
|
|
{ \
|
|
sp18[3] = 1; \
|
|
} \
|
|
else \
|
|
{ \
|
|
sp18[3] = 0; \
|
|
} \
|
|
func_8014C4AC((s32) e, a1, a2 & 0x7fff, sp18, *((s16 *) ((*((s32 *) (a0 + 0x20))) + 0x12))); \
|
|
__builtin_memcpy((void *) a5, D_801152A8, 8); \
|
|
*((s32 *) a7) = (s32) e; \
|
|
__builtin_memcpy((void *) a8, D_80126720, 8); \
|
|
ret |= 1; \
|
|
if ((a9 & 0x7f) != 0) \
|
|
{ \
|
|
return ret; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
counter += 1; \
|
|
off += 0x10c; \
|
|
} \
|
|
while (counter < 0x60); \
|
|
__asm__ volatile("" : "=r"(local_40)); \
|
|
return ret; \
|
|
}
|
|
|
|
#define DEFINE_func_8014EA4C() \
|
|
extern u8 D_801202A0[]; \
|
|
extern u16 D_800B99DA; \
|
|
extern s32 D_801150D8; \
|
|
extern s16 D_801152AA; \
|
|
extern u8 D_80126720[]; \
|
|
extern s16 D_80126724; \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
|
|
s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3) \
|
|
{ \
|
|
u8 buf[24]; \
|
|
s32 acc; \
|
|
s16 d5; \
|
|
s16 d4; \
|
|
s32 mode; \
|
|
u8 *p; \
|
|
acc = 0; \
|
|
__builtin_memcpy(buf + 16, a2, 8); \
|
|
d5 = 8; \
|
|
mode = (D_800B99DA & 0x60) >> 5; \
|
|
d4 = 8; \
|
|
switch (mode) { \
|
|
case 0: \
|
|
case 1: \
|
|
d5 = 7; \
|
|
break; \
|
|
case 2: \
|
|
d4 = 7; \
|
|
break; \
|
|
} \
|
|
for (p = D_801202A0; p < D_801202A0 + 0x6480; p += 0x10C) { \
|
|
s32 *q = (s32 *)(p + 0x58); \
|
|
if (*(u16 *)p == 0) continue; \
|
|
if (q[0] == 0) continue; \
|
|
if (p == *(u8 **)((u8 *)a0 + 0x178)) continue; \
|
|
if (p == *(u8 **)((u8 *)a0 + 0x174)) continue; \
|
|
if ((q[1] & 0x1800) == 0) continue; \
|
|
D_801150D8 = 0; \
|
|
if (func_80135A4C(q[-0xe], ((struct { s32 w; } *)q)->w, (s32 *)a1, (s32)a2) != 0) { \
|
|
if ((D_801150D8 & 1) != 0) { \
|
|
if ((*(u16 *)(p + 0x5C) & 0x10) == 0) { \
|
|
if ((*(s16 *)&D_80126720) - *(s16 *)((u8 *)a1 + 0x0) >= 0) \
|
|
*(s16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a2 + 0x0) - d5; \
|
|
else \
|
|
*(s16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a2 + 0x0) + d5; \
|
|
if (D_80126724 - *(s16 *)((u8 *)a1 + 0x4) >= 0) \
|
|
*(s16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a2 + 0x4) - d4; \
|
|
else \
|
|
*(s16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a2 + 0x4) + d4; \
|
|
} \
|
|
acc |= 2; \
|
|
} else { \
|
|
*(s16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a2 + 0x0); \
|
|
*(s16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a2 + 0x2) + 0x10; \
|
|
*(s16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a2 + 0x4); \
|
|
acc |= 1; \
|
|
if (q[0] < 0) { \
|
|
s32 t = D_801152AA; \
|
|
if (t < 0) t = -t; \
|
|
if (0x800 < (s16)t) { \
|
|
if ((*(s16 *)&D_80126720) - *(s16 *)((u8 *)a2 + 0x0) >= 0) \
|
|
*(s16 *)((u8 *)a0 + 0x6) = *(s16 *)((u8 *)a2 + 0x0) - d5; \
|
|
else \
|
|
*(s16 *)((u8 *)a0 + 0x6) = *(s16 *)((u8 *)a2 + 0x0) + d5; \
|
|
if (D_80126724 - *(s16 *)((u8 *)a2 + 0x4) >= 0) \
|
|
*(s16 *)((u8 *)a0 + 0xE) = *(s16 *)((u8 *)a2 + 0x4) - d4; \
|
|
else \
|
|
*(s16 *)((u8 *)a0 + 0xE) = *(s16 *)((u8 *)a2 + 0x4) + d4; \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
} \
|
|
return acc; \
|
|
}
|
|
|
|
#define DEFINE_func_80176D94() \
|
|
extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u32 func_801783D0(s32 a0, s32 a1); \
|
|
extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern u16 D_8011F82C; \
|
|
extern u16 D_8011F82A; \
|
|
u32 *func_80176D94(void *param_1, u32 param_2, s16 param_3_) \
|
|
{ \
|
|
register s32 c3 __asm__("$21") = 3; /* $s5 */ \
|
|
register s32 cad __asm__("$20") = 0xad; /* $s4 */ \
|
|
register s32 cff __asm__("$19") = 0xff; /* $s3 */ \
|
|
s32 iVar6 = (s16)param_3_; /* -> $s1 */ \
|
|
u32 uVar5 = iVar6 << 16; /* -> $s0 */ \
|
|
void *uVar2; \
|
|
void *u4, *u5; /* fresh single-set save vars (S2 boost) */ \
|
|
u32 *puVar3; \
|
|
s16 sVar1; \
|
|
u32 uVar4; \
|
|
u32 dl; /* multi-set D-load var (2 sets, no boost) */ \
|
|
s32 t; \
|
|
uVar2 = ((void * (*)(void *, s32, s32))func_80177784)(param_1, uVar5 | (u16)param_2, 0x6b565040); \
|
|
uVar2 = ((void * (*)(void *, s32, s32))func_80177784)(uVar2, uVar5 | ((param_2 + 8) & 0xffff), 0x6b565808); \
|
|
uVar2 = ((void * (*)(void *, s32, s32))func_80177784)(uVar2, uVar5 | ((param_2 + 0x10) & 0xffff), 0x6b564060); \
|
|
u4 = ((void * (*)(void *, s32, s32))func_80177784)(uVar2, uVar5 | ((param_2 + 0x30) & 0xffff), 0x6b563858); \
|
|
sVar1 = (s16)func_801783D0(D_8011F82C, 4); \
|
|
u5 = func_801777BC(u4, sVar1, (s32)((param_2 + 0x18) << 16) >> 16, iVar6, c3, cad, cff); \
|
|
sVar1 = (s16)func_801783D0(D_8011F82A, 4); \
|
|
puVar3 = (u32 *)func_801777BC(u5, sVar1, (s32)((param_2 + 0x38) << 16) >> 16, iVar6, c3, cad, cff); \
|
|
dl = ((struct { u16 h; } *)&D_8011F82C)->h; \
|
|
{ u32 v0m = ((u32)(puVar3 - 5) & 0xffffff) | 0x3000000; \
|
|
register u32 c6000 __asm__("$6") = 0x6000dcff; \
|
|
puVar3[1] = c6000; \
|
|
*puVar3 = v0m; } \
|
|
uVar4 = ((iVar6 + 10) << 16) | ((param_2 + 1) & 0xffff); \
|
|
puVar3[2] = uVar4; \
|
|
puVar3[3] = ((s32)(dl * 0x50e6) >> 16) | 0x20000; \
|
|
dl = ((struct { u16 h; } *)&D_8011F82A)->h; \
|
|
puVar3[5] = ((u32)puVar3 & 0xffffff) | 0x3000000; \
|
|
puVar3[10] = ((u32)(puVar3 + 5) & 0xffffff) | 0x3000000; \
|
|
puVar3[6] = 0x600000ff; \
|
|
puVar3[7] = uVar4; \
|
|
puVar3[0xb] = 0x60000000; \
|
|
puVar3[0xc] = ((iVar6 + 9) << 16) | (param_2 & 0xffff); \
|
|
t = (s32)(dl * 0x50e6) >> 16; \
|
|
puVar3[8] = t | 0x20000; \
|
|
puVar3[0xd] = (t + 2) | 0x40000; \
|
|
return puVar3 + 0xf; \
|
|
}
|
|
|
|
#define DEFINE_func_80148094() \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 csqrt(s32 a0); \
|
|
extern void func_80013F3C(s32 a0); \
|
|
extern void func_80012558(s32 a0, s32 a1); \
|
|
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
void func_80148094(int param_1, short *param_2, int *param_3) { \
|
|
s32 s4 = *(int *)(param_1 + 0x20); \
|
|
s32 out[3]; \
|
|
s32 buf[8]; \
|
|
s32 bp; \
|
|
s32 t1; \
|
|
int sVar1; \
|
|
int fac; \
|
|
int r; \
|
|
if (*param_2 != 0 || param_2[2] != 0) { \
|
|
t1 = ratan2(-(int)param_2[2], -(int)*param_2) + 0x400; \
|
|
bp = (s32)buf; \
|
|
func_80013F3C(bp); \
|
|
func_80012558(bp, (s32)*(short *)(s4 + 0x12)); \
|
|
func_800484EC(bp, param_1 + 0x24, (s32)out); \
|
|
sVar1 = (s16)func_80012A60((s16)t1, (s16)(ratan2(out[2], out[0]) + 0x400)); \
|
|
out[0] = *(int *)(param_1 + 0x24); \
|
|
if (out[0] < 0) out[0] = -out[0]; \
|
|
out[2] = *(int *)(param_1 + 0x2c); \
|
|
if (out[2] < 0) out[2] = -out[2]; \
|
|
{ \
|
|
int q = csqrt((int)*param_2 * (int)*param_2 + (int)param_2[2] * (int)param_2[2]); \
|
|
if (q < 0) q += 0x3f; \
|
|
fac = ratan2((int)param_2[1], q >> 6); \
|
|
} \
|
|
if (sVar1 < 0x200) { \
|
|
__asm__("" :: "r"(fac)); /* L1: +1 flow-ref on fac (already live-through here); zero bytes */ \
|
|
if (out[0] == out[2]) { \
|
|
r = *(int *)(param_1 + 0x24) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[0] = r >> 10; \
|
|
out[1] = 0; \
|
|
r = *(int *)(param_1 + 0x2c) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[2] = r >> 10; \
|
|
} else if (out[0] > out[2]) { \
|
|
r = *(int *)(param_1 + 0x24) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[0] = r >> 10; \
|
|
out[1] = 0; \
|
|
out[2] = *(int *)(param_1 + 0x2c); \
|
|
} else { \
|
|
out[0] = *(int *)(param_1 + 0x24); \
|
|
out[1] = 0; \
|
|
r = *(int *)(param_1 + 0x2c) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[2] = r >> 10; \
|
|
} \
|
|
} else if (sVar1 >= 0x201) { /* L2: ==0x200 arm must be the LAST (fall-through) block */ \
|
|
if (out[0] == out[2]) { \
|
|
r = *(int *)(param_1 + 0x24) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[0] = *(int *)(param_1 + 0x24) + (r >> 10); \
|
|
out[1] = 0; \
|
|
r = *(int *)(param_1 + 0x2c) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[2] = *(int *)(param_1 + 0x2c) + (r >> 10); \
|
|
} else if (out[0] > out[2]) { \
|
|
r = *(int *)(param_1 + 0x24) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[0] = *(int *)(param_1 + 0x24) + (r >> 10); \
|
|
out[1] = 0; \
|
|
out[2] = *(int *)(param_1 + 0x2c); \
|
|
} else { \
|
|
out[0] = *(int *)(param_1 + 0x24); \
|
|
out[1] = 0; \
|
|
r = *(int *)(param_1 + 0x2c) * -fac; \
|
|
if (r < 0) r += 0x3ff; \
|
|
out[2] = *(int *)(param_1 + 0x2c) + (r >> 10); \
|
|
} \
|
|
} else { \
|
|
out[0] = *(int *)(param_1 + 0x24); /* L3: out[0] store before out[1]=0 (delay-fill) */ \
|
|
out[1] = 0; \
|
|
out[2] = *(int *)(param_1 + 0x2c); \
|
|
} \
|
|
param_3[0] = out[0]; \
|
|
param_3[1] = out[1]; \
|
|
param_3[2] = out[2]; \
|
|
return; \
|
|
} \
|
|
param_3[0] = *(int *)(param_1 + 0x24); \
|
|
param_3[1] = *(int *)(param_1 + 0x28); \
|
|
param_3[2] = *(int *)(param_1 + 0x2c); \
|
|
}
|
|
|
|
#define DEFINE_func_801770E0() \
|
|
extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); \
|
|
extern u32 func_801783D0(s32 a0, s32 a1); \
|
|
extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern u16 D_8011F830; \
|
|
extern u16 D_8011F82E; \
|
|
u32 *func_801770E0(void *param_1, u32 param_2, s16 param_3_) \
|
|
{ \
|
|
register s32 c3 __asm__("$21") = 3; /* $s5 */ \
|
|
register s32 cb8 __asm__("$20") = 0xb8; /* $s4 */ \
|
|
register s32 cff __asm__("$19") = 0xff; /* $s3 */ \
|
|
s32 iVar6 = (s16)param_3_; /* -> $s1 */ \
|
|
u32 uVar5 = iVar6 << 16; /* -> $s0 */ \
|
|
void *uVar2; \
|
|
void *u4, *u5; /* fresh single-set save vars (S2 boost) */ \
|
|
u32 *puVar3; \
|
|
s16 sVar1; \
|
|
u32 uVar4; \
|
|
u32 dl; /* multi-set D-load var (2 sets, no boost) */ \
|
|
s32 t; \
|
|
uVar2 = ((void * (*)(void *, s32, s32))func_80177784)(param_1, uVar5 | (u16)param_2, 0x6e165010); \
|
|
uVar2 = ((void * (*)(void *, s32, s32))func_80177784)(uVar2, uVar5 | ((param_2 + 8) & 0xffff), 0x6e165808); \
|
|
uVar2 = ((void * (*)(void *, s32, s32))func_80177784)(uVar2, uVar5 | ((param_2 + 0x10) & 0xffff), 0x6e164060); \
|
|
u4 = ((void * (*)(void *, s32, s32))func_80177784)(uVar2, uVar5 | ((param_2 + 0x30) & 0xffff), 0x6e163858); \
|
|
sVar1 = (s16)func_801783D0(D_8011F830, 4); \
|
|
u5 = func_801777BC(u4, sVar1, (s32)((param_2 + 0x18) << 16) >> 16, iVar6, c3, cb8, cff); \
|
|
sVar1 = (s16)func_801783D0(D_8011F82E, 4); \
|
|
puVar3 = (u32 *)func_801777BC(u5, sVar1, (s32)((param_2 + 0x38) << 16) >> 16, iVar6, c3, cb8, cff); \
|
|
dl = ((struct { u16 h; } *)&D_8011F830)->h; \
|
|
{ u32 v0m = ((u32)(puVar3 - 5) & 0xffffff) | 0x3000000; \
|
|
register u32 c6055 __asm__("$6") = 0x6055ff00; \
|
|
puVar3[1] = c6055; \
|
|
*puVar3 = v0m; } \
|
|
uVar4 = ((iVar6 - 4) << 16) | ((param_2 + 1) & 0xffff); \
|
|
puVar3[2] = uVar4; \
|
|
puVar3[3] = ((s32)(dl * 0x50e6) >> 16) | 0x20000; \
|
|
dl = ((struct { u16 h; } *)&D_8011F82E)->h; \
|
|
puVar3[5] = ((u32)puVar3 & 0xffffff) | 0x3000000; \
|
|
puVar3[10] = ((u32)(puVar3 + 5) & 0xffffff) | 0x3000000; \
|
|
puVar3[6] = 0x60ff3214; \
|
|
puVar3[7] = uVar4; \
|
|
puVar3[0xb] = 0x60000000; \
|
|
puVar3[0xc] = ((iVar6 - 5) << 16) | (param_2 & 0xffff); \
|
|
t = (s32)(dl * 0x50e6) >> 16; \
|
|
puVar3[8] = t | 0x20000; \
|
|
puVar3[0xd] = (t + 2) | 0x40000; \
|
|
return puVar3 + 0xf; \
|
|
}
|
|
|
|
#define DEFINE_func_801372B0() \
|
|
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_800B9A11; \
|
|
extern u8 D_800AF630[]; \
|
|
extern u16 aD800B9A02 __asm__("D_800B9A02"); \
|
|
extern u8 D_800A6518[]; \
|
|
void func_801372B0(void) { \
|
|
Svec_801372B0 in; \
|
|
Svec_801372B0 out; \
|
|
Gline_801372B0 prim; \
|
|
register u8 *mat __asm__("$23") = D_800AF630; /* $s7 = base; +0x18 after branch */ \
|
|
register s32 white __asm__("$19"); /* $s3, assigned lazily in-if */ \
|
|
register s16 ax __asm__("$16"); /* $s0 = out.vx+0x7B */ \
|
|
register s16 ay __asm__("$17"); /* $s1 = out.vx+0x75 */ \
|
|
register s16 bx __asm__("$18"); /* $s2 = out.vy-0x57 */ \
|
|
register s16 by __asm__("$20"); /* $s4 = out.vy-0x5D */ \
|
|
in.vz = 0; \
|
|
in.vy = 0; \
|
|
in.vx = 0; \
|
|
if (D_800B9A11 != 1) { \
|
|
mat += 0x18; /* addiu $s7, $s7, 0x18 (post-branch) */ \
|
|
white = 0xFF; \
|
|
/* --- corner 0: +X axis, white line from (0x78,-0x5A) --- */ \
|
|
in.vx = 0x10; \
|
|
ApplyMatrixSV(mat, &in, &out); \
|
|
{ \
|
|
register s16 vx __asm__("$7") = out.vx; /* $a3 */ \
|
|
register s16 vy __asm__("$3") = out.vy; /* $v1 */ \
|
|
prim.attr = 0; /* LEVER B: colors BEFORE x0 here — */ \
|
|
prim.r = white; prim.g = white; prim.b = white; /* drops the sb LUIDs below the x0 */ \
|
|
prim.x0 = 0x78; /* store -> white's S2 boost fires */ \
|
|
prim.y0 = -0x5A; /* late -> li $s3,0xFF lands @31 */ \
|
|
{ s16 x1v = vx + 0x78; __asm__("" : "=r"(x1v) : "0"(x1v)); prim.x1 = x1v; } \
|
|
{ s16 y1v = vy - 0x5A; __asm__("" : "=r"(y1v) : "0"(y1v)); prim.y1 = y1v; } \
|
|
aGsSortLine(&prim, &D_800A6518[(u32)aD800B9A02 * 0x14], 0); \
|
|
} \
|
|
/* --- corner 1: +X +6, red cross --- */ \
|
|
in.vx = in.vx + 6; \
|
|
ApplyMatrixSV(mat, &in, &out); \
|
|
prim.attr = 0; \
|
|
prim.r = white; prim.g = 0; prim.b = 0; \
|
|
bx = out.vy; /* $s2 = out.vy (load) */ \
|
|
ay = out.vx; /* $s1 = out.vx (load) */ \
|
|
by = bx - 0x5D; /* $s4 = out.vy - 0x5D */ \
|
|
ax = ay + 0x7B; /* $s0 = out.vx + 0x7B */ \
|
|
bx = bx - 0x57; /* $s2 = out.vy - 0x57 (in place) */ \
|
|
{ \
|
|
Gline_801372B0 *op = (Gline_801372B0*)&D_800A6518[(u32)aD800B9A02 * 0x14]; \
|
|
__asm__("" : "=r"(op) : "0"(op)); \
|
|
ay = ay + 0x75; /* $s1 = out.vx + 0x75 (in place) */ \
|
|
prim.x0 = ay; prim.y0 = by; prim.x1 = ax; prim.y1 = bx; \
|
|
aGsSortLine(&prim, op, 0); \
|
|
} \
|
|
__asm__("" : "=r"(ax) : "0"(ax)); /* LEVER A: 2nd set kills ax's S2 */ \
|
|
__asm__("" : "=r"(by) : "0"(by)); /* boost (same for by) -> by/ax/bx/ */ \
|
|
prim.attr = 0; /* chain/ay revert to source order */ \
|
|
prim.r = white; prim.g = 0; prim.b = 0; \
|
|
prim.x0 = ax; prim.y0 = by; prim.x1 = ay; prim.y1 = bx; \
|
|
aGsSortLine(&prim, &D_800A6518[(u32)aD800B9A02 * 0x14], 0); \
|
|
/* --- corner 2: +Y axis, white line + sibling 030 --- */ \
|
|
in.vx = 0; \
|
|
in.vy = 0x10; \
|
|
ApplyMatrixSV(mat, &in, &out); \
|
|
{ \
|
|
register s16 vx __asm__("$7") = out.vx; /* $a3 */ \
|
|
register s16 vy __asm__("$2") = out.vy; /* $v0 */ \
|
|
prim.x0 = 0x78; \
|
|
prim.attr = 0; \
|
|
prim.r = white; prim.g = white; prim.b = white; \
|
|
prim.y0 = -0x5A; \
|
|
{ s16 x1v = vx + 0x78; __asm__("" : "=r"(x1v) : "0"(x1v)); prim.x1 = x1v; } \
|
|
{ s16 y1v = vy - 0x5A; __asm__("" : "=r"(y1v) : "0"(y1v)); prim.y1 = y1v; } \
|
|
aGsSortLine(&prim, &D_800A6518[(u32)aD800B9A02 * 0x14], 0); \
|
|
} \
|
|
in.vy = in.vy + 6; \
|
|
ApplyMatrixSV(mat, &in, &out); \
|
|
aF80137030((s32)(s16)(out.vx + 0x78), (s32)(s16)(out.vy - 0x5A)); \
|
|
/* --- corner 3: +Z axis, white line + sibling 178 --- */ \
|
|
in.vy = 0; \
|
|
in.vz = 0x10; \
|
|
ApplyMatrixSV(mat, &in, &out); \
|
|
{ \
|
|
register s16 vx __asm__("$7") = out.vx; /* $a3 */ \
|
|
register s16 vy __asm__("$2") = out.vy; /* $v0 */ \
|
|
prim.x0 = 0x78; \
|
|
prim.attr = 0; \
|
|
prim.r = white; prim.g = white; prim.b = white; \
|
|
prim.y0 = -0x5A; \
|
|
{ s16 x1v = vx + 0x78; __asm__("" : "=r"(x1v) : "0"(x1v)); prim.x1 = x1v; } \
|
|
{ s16 y1v = vy - 0x5A; __asm__("" : "=r"(y1v) : "0"(y1v)); prim.y1 = y1v; } \
|
|
aGsSortLine(&prim, &D_800A6518[(u32)aD800B9A02 * 0x14], 0); \
|
|
} \
|
|
in.vz = in.vz + 6; \
|
|
ApplyMatrixSV(mat, &in, &out); \
|
|
func_80137178((s32)(s16)(out.vx + 0x78), (s32)(s16)(out.vy - 0x5A)); \
|
|
} \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_80174650() \
|
|
extern s32 D_801270BC; \
|
|
extern s32 D_801150F8; \
|
|
s32 func_80174650(s32 _arg0) \
|
|
{ \
|
|
D_801270BC = D_801270BC | 1; \
|
|
D_801150F8 = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C8C8() \
|
|
void func_8014C8C8(s32 dst, s32 * src) \
|
|
{ \
|
|
*(struct up *)(dst + 0x15c) = *(struct up *)(src + 0); \
|
|
*(s16 *)(dst + 0x162) = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8012C098() \
|
|
extern void func_8012C218(void *a0); \
|
|
void func_8012C098(void *param_1) \
|
|
{ \
|
|
int iVar1; \
|
|
iVar1 = *(int *)((char *)param_1 + 0x68); \
|
|
if ((iVar1 != 0) && ((*(short *)((char *)param_1 + 0x72) & 0x8000) != 0)) { \
|
|
*(unsigned short *)(iVar1 + 10) = *(unsigned short *)(iVar1 + 10) & 0x7fff; \
|
|
} \
|
|
func_8012C218(param_1); \
|
|
return; \
|
|
}
|
|
|
|
#define DEFINE_func_8012F14C() \
|
|
extern void func_8004914C(void *a0); \
|
|
extern void func_800491AC(void *a0); \
|
|
extern void RotTransSV(s32 a0, s32 a1, void *a2); \
|
|
void func_8012F14C(s32 a0, s32 a1, s32 a2) \
|
|
{ \
|
|
s32 buf[2]; \
|
|
func_8004914C((void *)a0); \
|
|
func_800491AC((void *)a0); \
|
|
RotTransSV(a1, a2, buf); \
|
|
}
|
|
|
|
#define DEFINE_func_80157158() \
|
|
void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, \
|
|
s32 a4, s32 a5, s32 a6, s32 a7, \
|
|
s32 a8, s32 a9, u16 a10, s32 a11, s32 a12) { \
|
|
func_801571C4(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
|
|
}
|
|
|
|
#define DEFINE_func_8012F038() \
|
|
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
|
|
void func_8012F038(int param_1, short *param_2, short *param_3) { \
|
|
int in[3]; \
|
|
int out[3]; \
|
|
in[0] = (int)param_2[0] - *(int *)(param_1 + 0x14); \
|
|
in[1] = (int)param_2[1] - *(int *)(param_1 + 0x18); \
|
|
in[2] = (int)param_2[2] - *(int *)(param_1 + 0x1c); \
|
|
ApplyTransposeMatrixLV((void *)param_1, in, out); \
|
|
param_3[0] = out[0]; \
|
|
param_3[1] = out[1]; \
|
|
param_3[2] = out[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_8014964C() \
|
|
extern void func_8012F14C(s32); \
|
|
extern void func_8012EFB8(s32 a0); \
|
|
void func_8014964C(s32 param_1, s32 param_2) { \
|
|
Vec3 in; \
|
|
Vec3 out; \
|
|
s32 mid[2]; \
|
|
register s32 p2 __asm__("$16"); \
|
|
Vec3 *pin; \
|
|
s32 *m1; \
|
|
s32 *m2; \
|
|
s32 mtx; \
|
|
p2 = param_2; \
|
|
in.f0 = *(s16 *)(p2 + 2); \
|
|
in.f2 = *(s16 *)(p2 + 6); \
|
|
in.f4 = *(s16 *)(p2 + 0xA); \
|
|
pin = ∈ \
|
|
__asm__ __volatile__("" : "=r"(pin) : "0"(pin)); \
|
|
mtx = *(s32 *)(param_1 + 0x20); \
|
|
__asm__ __volatile__("" : "=r"(mtx) : "0"(mtx)); \
|
|
m1 = mid; \
|
|
__asm__ __volatile__("" : "=r"(m1) : "0"(m1)); \
|
|
((void (*)(s32, Vec3 *, s32 *))func_8012F14C)(mtx + 0x34, pin, m1); \
|
|
m2 = mid; \
|
|
__asm__ __volatile__("" : "=r"(m2) : "0"(m2)); \
|
|
((void (*)(s32 *, Vec3 *))func_8012EFB8)(m2, &out); \
|
|
*(s16 *)(p2 + 2) = out.f0; \
|
|
*(s16 *)(p2 + 6) = out.f2; \
|
|
*(s16 *)(p2 + 0xA) = out.f4; \
|
|
}
|
|
|
|
#define DEFINE_func_8012C0EC() \
|
|
extern s32 D_801274D4; \
|
|
extern s16 D_80126CAC; \
|
|
extern s32 D_801274E0; \
|
|
extern s32 func_80013478(s32 a0, s32 a1); \
|
|
extern void func_8012C218(void *a0); \
|
|
s32 func_8012C0EC(s32 a0) { \
|
|
s32 (*fp)(s32) = (s32 (*)(s32))D_801274D4; \
|
|
s32 cond; \
|
|
s32 *p; \
|
|
if (fp == 0) { \
|
|
cond = (func_80013478(a0 + 4, (s32)&D_80126CAC) < D_801274E0) ^ 1; \
|
|
} else { \
|
|
cond = fp(a0); \
|
|
} \
|
|
if (cond == 0) { \
|
|
return 0; \
|
|
} \
|
|
p = *(s32 **)(a0 + 0x68); \
|
|
if (p != 0) { \
|
|
if ((*(s16 *)(a0 + 0x72) & 0x8000) != 0) { \
|
|
*(u16 *)((s32)p + 0xA) = *(u16 *)((s32)p + 0xA) & 0x7FFF; \
|
|
} \
|
|
} \
|
|
func_8012C218((void *)a0); \
|
|
return 1; \
|
|
}
|
|
|
|
#define DEFINE_func_8012E5CC() \
|
|
extern u8 D_800AF648; \
|
|
extern void func_8004914C(void *a0); \
|
|
extern void func_800491AC(void *a0); \
|
|
extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); \
|
|
extern void func_8002D4C8(s32 a0, s32 a1); \
|
|
void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3) \
|
|
{ \
|
|
struct { short xy[2]; int sp14; int flag; } f; \
|
|
register void *p __asm__("$4"); \
|
|
p = &D_800AF648; \
|
|
func_8004914C(p); \
|
|
func_800491AC(&D_800AF648); \
|
|
RotTransPers(param_1, (s32)f.xy, &f.sp14, &f.flag); \
|
|
if (f.flag >= 0 && (u16)(f.xy[0] + 199) < 399 && (u16)(f.xy[1] + 0xA9) < 0x153) { \
|
|
func_8002D4C8(param_2, param_3); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8012C750() \
|
|
extern u8 D_80120194[]; \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
|
|
s32 func_8012C750(s32 a0) \
|
|
{ \
|
|
s32 p; \
|
|
s32 it; \
|
|
s32 v0; \
|
|
if (*(u16 *)(a0 + 0xA) & 0x800) { \
|
|
s32 base = (s32)D_80120194; \
|
|
p = base + 0x6480; \
|
|
if (p != base) { \
|
|
do { \
|
|
if (*(u16 *)p == 0) goto found; \
|
|
p -= 0x10C; \
|
|
} while (p != base); \
|
|
} \
|
|
p = 0; \
|
|
goto found; \
|
|
} else { \
|
|
it = (s32)D_80120194; \
|
|
__asm__ __volatile__("" : "=r"(it) : "0"(it)); \
|
|
p = it + 0x658C; \
|
|
goto test; \
|
|
copy: \
|
|
p = it; \
|
|
goto found; \
|
|
test: \
|
|
it = (s32)D_801202A0; \
|
|
__asm__ __volatile__("" : "=r"(it) : "0"(it)); \
|
|
if (it == p) goto zero; \
|
|
body: \
|
|
if (*(u16 *)it == 0) goto copy; \
|
|
it += 0x10C; \
|
|
if (it != p) goto body; \
|
|
zero: \
|
|
p = 0; \
|
|
} \
|
|
found: \
|
|
if (p == 0) { \
|
|
v0 = 0; \
|
|
} else { \
|
|
*(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xA) | 0x8000; \
|
|
v0 = func_8012C890(a0, p, 0); \
|
|
} \
|
|
return v0; \
|
|
}
|
|
|
|
#define DEFINE_func_80128ED8() \
|
|
s32 func_80128ED8(s32 param_1, s32 *param_2) { \
|
|
register s32 iVar4 __asm__("$8"); /* base ptr, lives whole fn in $t0 */ \
|
|
register s32 cnt __asm__("$2"); /* decremented count in $v0 */ \
|
|
register s32 cc __asm__("$3"); /* preserved count copy in $v1 (forces the bne-delay-slot copy) */ \
|
|
register s32 idx __asm__("$3"); /* offset-4 index, loaded into $v1 */ \
|
|
register s32 idc __asm__("$7"); /* $a3: preserved idx copy, forced SEPARATE from the multiply */ \
|
|
u32 uVar3; \
|
|
s32 frame_pad[4]; /* phantom 0x10 frame the target reserves (induce via clobber anchor) */ \
|
|
__asm__ __volatile__("" : : "r"(&frame_pad) : "memory"); \
|
|
iVar4 = *param_2; \
|
|
cnt = *(s16 *)((s32)param_2 + 6); \
|
|
if (cnt == 0) { \
|
|
return 1; \
|
|
} \
|
|
cc = cnt; \
|
|
__asm__ __volatile__("" : "=r"(cc) : "0"(cc)); /* force the count-preserve copy ($v1=$v0) */ \
|
|
cnt = cc - 1; \
|
|
*(s16 *)((s32)param_2 + 6) = (s16)cnt; \
|
|
if (cnt * 0x10000 < 1) { \
|
|
idx = *(s16 *)((s32)param_2 + 4); \
|
|
__asm__ __volatile__("" : "=r"(idx) : "0"(idx)); /* pin the index into $v1 */ \
|
|
uVar3 = *(u32 *)(idx * 8 + iVar4 + 4); \
|
|
idc = idx; \
|
|
if ((uVar3 & 0xc0) == 0xc0) { \
|
|
*(s16 *)((s32)param_2 + 6) = 0; \
|
|
return 1; \
|
|
} \
|
|
if ((uVar3 & 0x80) != 0) { \
|
|
*(s16 *)((s32)param_2 + 4) = 0; \
|
|
} else { \
|
|
cnt = idc + 1; /* reuse the dead $v0 pin so idc+1 lands in $v0, not $a3 */ \
|
|
*(s16 *)((s32)param_2 + 4) = cnt; \
|
|
} \
|
|
*(u16 *)((s32)param_2 + 6) = \
|
|
(u16)(*(u32 *)((s16)param_2[1] * 8 + iVar4 + 4) & 0x3f); \
|
|
*(u16 *)(param_1 + 0x28) = *(u16 *)((s16)param_2[1] * 8 + iVar4); \
|
|
*(u16 *)(param_1 + 0x2a) = *(u16 *)((s16)param_2[1] * 8 + iVar4 + 2); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80177EA4() \
|
|
uint *func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4) \
|
|
{ \
|
|
uint uVar1; \
|
|
register int iVar2 __asm__("$4"); \
|
|
register uint *p1 __asm__("$9"); \
|
|
register uint *puVar3 __asm__("$8"); \
|
|
register int iVar4 __asm__("$10"); \
|
|
register uint uVar5 __asm__("$11"); \
|
|
register uint mask __asm__("$12"); \
|
|
register int nx __asm__("$2"); \
|
|
register int p4s __asm__("$7"); \
|
|
int cont; \
|
|
p1 = param_1; uVar5 = 0x1000000; iVar4 = 0; mask = 0xffffff; \
|
|
p4s = param_4 << 0x10; \
|
|
puVar3 = p1 + 3; \
|
|
do { \
|
|
register uint c74 __asm__("$4"); \
|
|
register uint c3 __asm__("$3"); \
|
|
register uint m __asm__("$2"); \
|
|
c74 = 0x74808080; \
|
|
m = (uint)(p1 + -5) & mask; \
|
|
__asm__ __volatile__("" : "=r"(m) : "0"(m)); \
|
|
c3 = 0x3000000; \
|
|
*p1 = m | c3; \
|
|
puVar3[-2] = c74; \
|
|
if ((short)iVar4 != 0) { \
|
|
register int six __asm__("$2"); \
|
|
six = 6; \
|
|
if ((short)iVar4 == six) { iVar2 = 1; uVar5 = 0; } \
|
|
else { \
|
|
register int t __asm__("$2"); \
|
|
t = param_2 >> 0x10 & 0xf; \
|
|
iVar2 = t + 1; \
|
|
param_2 = param_2 << 4; \
|
|
} \
|
|
{ \
|
|
register int iv2c __asm__("$3"); \
|
|
register int one __asm__("$2"); \
|
|
iv2c = iVar2; \
|
|
__asm__ __volatile__("" : "=r"(iv2c) : "0"(iv2c)); \
|
|
one = 1; \
|
|
if (iv2c != one) uVar5 = 0; \
|
|
} \
|
|
uVar1 = p4s | (param_3 & 0xffff) | uVar5; \
|
|
} else { iVar2 = 0; uVar1 = p4s | (param_3 & 0xffff); } \
|
|
puVar3[-1] = uVar1; \
|
|
__asm__ __volatile__("" : : "r"(iVar2) : "memory"); \
|
|
{ \
|
|
register uint c6b __asm__("$3"); \
|
|
register uint r __asm__("$2"); \
|
|
c6b = 0x6b564000; \
|
|
r = (uint)(iVar2 << 3) | c6b; \
|
|
*puVar3 = r; \
|
|
} \
|
|
puVar3 = puVar3 + 5; p1 = p1 + 5; param_3 = param_3 + 8; \
|
|
{ \
|
|
register int sx __asm__("$2"); \
|
|
nx = iVar4 + 1; \
|
|
iVar4 = nx; \
|
|
sx = nx << 0x10; \
|
|
cont = (sx >> 0x10) < 7; \
|
|
} \
|
|
} while (cont); \
|
|
return p1; \
|
|
}
|
|
|
|
#define DEFINE_func_8016A8FC() \
|
|
extern s32 func_80016A5C(); \
|
|
extern Blk20 D_800AE620; \
|
|
s32 func_8016A8FC(s32 a0) \
|
|
{ \
|
|
Prim p; \
|
|
int ptr; \
|
|
ptr = *(int *)(a0 + 0x34); \
|
|
p.v0 = (short)*(int *)(a0 + 0x4C); \
|
|
p.v1 = (short)*(int *)(a0 + 0x50); \
|
|
p.v2 = (short)*(int *)(a0 + 0x54); \
|
|
p.w0 = *(unsigned short *)(ptr + 6); \
|
|
p.w1 = *(unsigned short *)(ptr + 0xA); \
|
|
p.w2 = *(unsigned short *)(ptr + 0xE); \
|
|
p.v0 = (short)(((int)*(short *)(a0 + 6) + *(int *)(a0 + 0x4C)) >> 1); \
|
|
p.v1 = (short)(((int)*(short *)(a0 + 0xA) + *(int *)(a0 + 0x50)) >> 1); \
|
|
p.v2 = (short)(((int)*(short *)(a0 + 0xE) + *(int *)(a0 + 0x54)) >> 1); \
|
|
*(short *)(a0 + 6) = (short)*(int *)(a0 + 0x4C); \
|
|
p.w0 = (short)(((int)*(short *)(a0 + 6) + (int)*(short *)(ptr + 6)) >> 1); \
|
|
*(int *)(a0 + 0x4C) = p.w0; \
|
|
*(short *)(a0 + 0xA) = (short)*(int *)(a0 + 0x50); \
|
|
p.w1 = (short)(((int)*(short *)(a0 + 0xA) + (int)*(short *)(ptr + 0xA)) >> 1); \
|
|
*(int *)(a0 + 0x50) = p.w1; \
|
|
*(short *)(a0 + 0xE) = (short)*(int *)(a0 + 0x54); \
|
|
p.w2 = (short)(((int)*(short *)(a0 + 0xE) + (int)*(short *)(ptr + 0xE)) >> 1); \
|
|
*(int *)(a0 + 0x54) = p.w2; \
|
|
p.b11 = 0x10; \
|
|
p.b15 = 0x80; \
|
|
p.b16 = 0x20; \
|
|
p.b14 = 0x20; \
|
|
p.b12 = 0; \
|
|
p.b10 = 0; \
|
|
p.w18 = 0x50000000; \
|
|
((s32 (*)(void *, void *))func_80016A5C)(&p, &D_800AE620); \
|
|
}
|
|
|
|
#define DEFINE_func_8014A048() \
|
|
extern u8 func_8014BEF8(void); \
|
|
extern void func_8012F14C(s32); \
|
|
extern s32 func_80135260(s32, s32, s32, s32); \
|
|
extern void func_8014A1B0(s32 a0, s32 a1); \
|
|
extern u8 D_801202A0[]; \
|
|
s32 func_8014A048(s32 param_1) { \
|
|
Loc L; \
|
|
s32 s0; \
|
|
s32 s2; \
|
|
u32 s3; \
|
|
if ((*(u32 *)(param_1 + 0x44) & 0x400) != 0) { \
|
|
return 0; \
|
|
} \
|
|
if ((*(u16 *)(param_1 + 0xAC) & 0x80) == 0) { \
|
|
if ((*(u16 *)(param_1 + 0xAC) & 0x10) == 0) { \
|
|
return 0; \
|
|
} \
|
|
if (((s32 (*)(s32))func_8014BEF8)(param_1) == 0) { \
|
|
goto ret0; \
|
|
} \
|
|
} \
|
|
L.a30 = *(s16 *)(param_1 + 6); \
|
|
L.a2e = *(s16 *)(param_1 + 0xA); \
|
|
L.a2c = *(s16 *)(param_1 + 0xE); \
|
|
L.a1e = -0x10; \
|
|
L.a20 = 0; \
|
|
L.a1c = -0x20; \
|
|
((void (*)(s32, s32, s32))func_8012F14C)(*(s32 *)(param_1 + 0x20) + 0x34, (s32)&L.a20, (s32)L.buf); \
|
|
s3 = 0; \
|
|
s2 = 0; \
|
|
while (1) { \
|
|
s0 = (s32)D_801202A0 + s2; \
|
|
__asm__ __volatile__("" : "=r"(s0) : "0"(s0)); \
|
|
if ((*(u16 *)s0 != 0) && \
|
|
(*(s32 *)(s0 + 0x58) != 0) && \
|
|
(*(s16 *)(s0 + 0xAA) == 0) && \
|
|
(*(s32 *)(param_1 + 0x184) != s0) && \
|
|
((*(u16 *)(s0 + 0x5C) & 0x200) != 0) && \
|
|
(((s32 (*)(s32, s32, s32, s32))func_80135260)(*(s32 *)(s0 + 0x20), *(s32 *)(s0 + 0x58), (s32)&L.a30, (s32)L.buf) != 0)) { \
|
|
break; \
|
|
} \
|
|
s3++; \
|
|
s2 += 0x10C; \
|
|
if (s3 >= 0x60) { \
|
|
return 0; \
|
|
} \
|
|
} \
|
|
*(s32 *)(param_1 + 0x178) = s0; \
|
|
func_8014A1B0(param_1, s0); \
|
|
return 1; \
|
|
ret0: \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_801678F0() \
|
|
extern s32 rand(void); \
|
|
extern void RotMatrixYXZ(void *a0, void *a1); \
|
|
extern void func_80048EAC(void *a0, void *a1); \
|
|
extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
|
|
extern void func_80146C3C(void); \
|
|
extern u16 D_800B99DA; \
|
|
void func_801678F0(s32 a0) { \
|
|
s32 p; \
|
|
s32 r; \
|
|
s16 buf[4]; \
|
|
p = *(s32 *)(a0 + 0x34); \
|
|
if ((*(s32 *)(p + 0x44) & 0x10) != 0) { \
|
|
if (*(s16 *)(a0 + 0x12) > *(s16 *)(a0 + 0x10)) { \
|
|
if (*(s32 *)(a0 + 0x1C) > 0) { \
|
|
*(u16 *)(a0 + 0x10) = rand() & 0x30; \
|
|
*(s32 *)(a0 + 0x1C) = -0x30; \
|
|
} \
|
|
} else { \
|
|
if (*(s32 *)(a0 + 0x1C) < 0) { \
|
|
*(u16 *)(a0 + 0x10) = (rand() & 0x30) + 0x40; \
|
|
*(s32 *)(a0 + 0x1C) = 0x30; \
|
|
} \
|
|
} \
|
|
*(s16 *)(a0 + 0x12) = *(u16 *)(a0 + 0x12) + *(s32 *)(a0 + 0x1C); \
|
|
if (*(s32 *)(a0 + 0x30) != 0) { \
|
|
*(s32 *)(a0 + 0x30) = *(s32 *)(a0 + 0x30) - 0xC0; \
|
|
} \
|
|
buf[0] = 0x400; \
|
|
buf[1] = 0; \
|
|
buf[2] = D_800B99DA << 8; \
|
|
RotMatrixYXZ((void *)buf, (void *)(a0 + 0x38)); \
|
|
((void (*)(s32, s32))func_80048EAC)(*(s32 *)(p + 0x20) + 0x34, a0 + 0x38); \
|
|
func_801670E4(a0, -6, -0x44, -0x18); \
|
|
r = ((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0xE, a0, *(s16 *)(a0 + 6), *(s16 *)(a0 + 0xA), *(s16 *)(a0 + 0xE), 0, 0); \
|
|
if (r != 0) { \
|
|
*(Blk32 *)(r + 0x38) = *(Blk32 *)(a0 + 0x38); \
|
|
} \
|
|
} else { \
|
|
((void (*)(s32))func_80146C3C)(a0); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014DD8C() \
|
|
s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2) { \
|
|
extern u8 D_801202A0[]; \
|
|
extern u8 D_80126720[]; \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
|
|
s16 temp_s0; \
|
|
s32 temp_s0_2; \
|
|
s16 temp_s1; \
|
|
s16 temp_v0; \
|
|
s16 temp_v1; \
|
|
s32 temp_a1; \
|
|
s8 *var_s2; \
|
|
s8 *var_s3; \
|
|
__asm__ __volatile__("" :: "r"(((void *)arg0))); \
|
|
temp_v0 = M2C_FIELD(arg2, u16 *, 0) - M2C_FIELD(arg1, u16 *, 0); \
|
|
temp_v1 = M2C_FIELD(arg2, u16 *, 4) - M2C_FIELD(arg1, u16 *, 4); \
|
|
if (((temp_v0 | temp_v1) << 0x10) != 0) { \
|
|
var_s3 = (s8 *) D_801202A0; \
|
|
if (var_s3 < var_s3 + 0x6480) { \
|
|
var_s2 = var_s3 + 0xE; \
|
|
__asm__ __volatile__("" :: "r"(var_s2)); \
|
|
loop_3: \
|
|
if (M2C_FIELD(var_s3, u16 *, 0) != 0) { \
|
|
temp_a1 = M2C_FIELD(var_s2, s32 *, 0x4A); \
|
|
if ((temp_a1 != 0) && (M2C_FIELD(var_s2, u16 *, 0x4E) & 0x1000) && (func_80135A4C(M2C_FIELD(var_s2, s32 *, 0x12), temp_a1, (s32 *)arg1, (s32)arg2) != 0)) { \
|
|
temp_s1 = M2C_FIELD(var_s2, u16 *, -8) - M2C_FIELD(((void *)arg0), u16 *, 6); \
|
|
temp_s0 = M2C_FIELD(var_s2, u16 *, 0) - M2C_FIELD(((void *)arg0), u16 *, 0xE); \
|
|
temp_s0_2 = (s16) ratan2(temp_v1, temp_v0); \
|
|
if ((s16) func_80012A60(temp_s0_2, (s16) ratan2(temp_s0, temp_s1)) < 0x400) { \
|
|
M2C_FIELD(((void *)arg0), s8 **, 0x170) = var_s3; \
|
|
M2C_FIELD(((void *)arg0), u16 *, 6) = (u16) M2C_FIELD(arg2, u16 *, 0); \
|
|
M2C_FIELD(((void *)arg0), s16 *, 0xA) = (s16) (M2C_FIELD(arg2, u16 *, 2) + 0x10); \
|
|
M2C_FIELD(((void *)arg0), u16 *, 0xE) = (u16) M2C_FIELD(arg2, u16 *, 4); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
var_s3 += 0x10C; \
|
|
var_s2 += 0x10C; \
|
|
if ((u32) var_s3 >= (u32) D_80126720) { \
|
|
goto block_10; \
|
|
} \
|
|
goto loop_3; \
|
|
} \
|
|
return 0; \
|
|
} \
|
|
block_10: \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8017C710() \
|
|
int func_8017C710(short *param_1, short *param_2, short *param_3, int param_4) { \
|
|
register int i2o __asm__("$5"); \
|
|
register int i4o __asm__("$9"); \
|
|
short sVar1; int rx, rz, uVar5; \
|
|
i4o = param_2[1]; \
|
|
__asm__ __volatile__("" : : "r"(i4o)); \
|
|
i2o = param_1[1]; uVar5 = 0; \
|
|
if (i2o >= i4o) { \
|
|
rx = param_1[0] - i2o * (param_2[0] - param_1[0]); \
|
|
rz = param_1[2] - i2o * (param_2[2] - param_1[2]); \
|
|
} else { \
|
|
register int den __asm__("$3"); \
|
|
int p2x = param_2[0], p2z = param_2[2]; \
|
|
den = i2o - i4o; \
|
|
rx = p2x + i4o * (p2x - param_1[0]) / den; \
|
|
rz = p2z + i4o * (p2z - param_1[2]) / den; \
|
|
} \
|
|
if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } \
|
|
else i2o = -0x7fff; \
|
|
*param_3 = (short)i2o; \
|
|
if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } \
|
|
else i2o = -0x7fff; \
|
|
param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; \
|
|
if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } \
|
|
if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } \
|
|
if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } \
|
|
if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } \
|
|
return uVar5; \
|
|
}
|
|
|
|
#define DEFINE_func_80130650() \
|
|
extern void func_801319E0(s32 a0); \
|
|
extern s32 func_8012BEE8(s32 a0); \
|
|
extern void func_8012CBF4(s32); \
|
|
extern s32 func_80131D68(s32 a0, s32 a1); \
|
|
extern void func_80131C78(s32 a0); \
|
|
extern void func_80131CA8(int a0, int a1); \
|
|
void func_80130650(s32 a0) { \
|
|
s32 s1; \
|
|
if (*(s32 *)(a0 + 0xB4) & 0x1000) { \
|
|
if (*(s16 *)(a0 + 0xA) >= 0x10) { \
|
|
func_801319E0(a0); \
|
|
return; \
|
|
} \
|
|
if (func_8012BEE8(a0) != 0) { \
|
|
func_801319E0(a0); \
|
|
return; \
|
|
} \
|
|
if (*(s32 *)(a0 + 0xC4) & 0x4) { \
|
|
s32 v1 = *(s32 *)(a0 + 0x20); \
|
|
*(s16 *)(v1 + 0x10) = *(u16 *)(v1 + 0x10) - 0x100; \
|
|
} \
|
|
s1 = ((s32 (*)(s32))func_8012CBF4)(a0); \
|
|
if (func_80131D68(a0, s1) == 1) { \
|
|
return; \
|
|
} \
|
|
if (s1 & 0x2000) { \
|
|
func_80131C78(a0); \
|
|
} \
|
|
} \
|
|
func_80131CA8(a0, 0x23); \
|
|
}
|
|
|
|
#define DEFINE_func_80149450() \
|
|
extern void func_8012F038(s32); \
|
|
void func_80149450(s32 a0, s16 *a1) { \
|
|
s16 *s0 = a1; \
|
|
s16 sp10[3]; \
|
|
s16 sp18[3]; \
|
|
sp18[0] = *(u16 *)((char *)s0 + 0x2); \
|
|
sp18[1] = *(u16 *)((char *)s0 + 0x6); \
|
|
sp18[2] = *(u16 *)((char *)s0 + 0xA); \
|
|
((void (*)(s32, s32, s32))func_8012F038)(*(s32 *)(a0 + 0x20) + 0x34, (s32)sp18, (s32)sp10); \
|
|
*(s16 *)((char *)s0 + 0x2) = *(u16 *)((char *)sp10 + 0x0); \
|
|
*(s16 *)((char *)s0 + 0x6) = *(u16 *)((char *)sp10 + 0x2); \
|
|
*(s16 *)((char *)s0 + 0xA) = *(u16 *)((char *)sp10 + 0x4); \
|
|
}
|
|
|
|
#define DEFINE_func_80174684() \
|
|
extern u8 D_80126D6C; \
|
|
extern void (*D_80127088)(void); \
|
|
extern s32 D_801270BC; \
|
|
void func_80174684(void* a0) \
|
|
{ \
|
|
D_80126D6C = 0; \
|
|
(*(void * *)&D_80127088) = a0; \
|
|
D_801270BC = 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80129C40() \
|
|
extern struct BigCopy D_80126DB8; \
|
|
extern u8 D_80126948[]; \
|
|
extern struct BigCopy D_80114EE8; \
|
|
extern s32 D_80126E60[]; \
|
|
extern s8 D_801150D6; \
|
|
extern s8 D_801152C0; \
|
|
extern u8 D_80127504; \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
extern void func_800144D4(void); \
|
|
void func_80129C40(s32 _arg0) \
|
|
{ \
|
|
func_80016714(((u8 *)&D_80126DB8), 0xA4); \
|
|
func_80016714(D_80126948, 0xA4); \
|
|
func_80016714(((u8 *)&D_80114EE8), 0xA4); \
|
|
func_80016714(((u8 *)&D_80114EE8) + 0xA4, 0xA4); \
|
|
func_80016714(((u8 *)&D_80114EE8) + 0x148, 0xA4); \
|
|
func_80016714(((u8 *)D_80126E60), 0xA4); \
|
|
func_80016714(((u8 *)D_80126E60) + 0xA4, 0xA4); \
|
|
func_80016714(((u8 *)D_80126E60) + 0x148, 0xA4); \
|
|
D_801150D6 = 0; \
|
|
D_801152C0 = 0; \
|
|
(*(s8 *)&D_80127504) = 0; \
|
|
func_800144D4(); \
|
|
}
|
|
|
|
#define DEFINE_func_8012A6D0() \
|
|
extern s32 func_80047D3C(s32 a0); \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
s32 func_8012A6D0(void* a0, void* a1) \
|
|
{ \
|
|
s32 s0 = a0; \
|
|
s32 s1 = a1; \
|
|
s32 dy = *(s16 *)(s0 + 0x4) - *(s16 *)(s1 + 0x4); \
|
|
s32 dx = *(s16 *)(s0 + 0x0) - *(s16 *)(s1 + 0x0); \
|
|
s32 d; \
|
|
d = func_80047D3C(dy * dy + dx * dx); \
|
|
return (s16)ratan2(*(s16 *)(s0 + 0x2) - *(s16 *)(s1 + 0x2), (s16)d); \
|
|
}
|
|
|
|
#define DEFINE_func_80130A18() \
|
|
extern void func_80131CA8(int, int); \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
void func_80130A18(u8 *a0) { \
|
|
s16 b1[4]; \
|
|
s16 b2[4]; \
|
|
*(u16 *)(a0 + 0x5C) = *(u16 *)(a0 + 0x5C) & 0xFFFE; \
|
|
if (((s32 (*)(int, int))func_80131CA8)((int)a0, 0x34) != 0) { \
|
|
return; \
|
|
} \
|
|
b1[0] = *(u16 *)(a0 + 6); \
|
|
b1[1] = *(u16 *)(a0 + 0xA) - 0x10; \
|
|
b1[2] = *(u16 *)(a0 + 0xE); \
|
|
b2[0] = *(u16 *)(a0 + 6); \
|
|
b2[1] = *(u16 *)(a0 + 0xA) + 8; \
|
|
b2[2] = *(u16 *)(a0 + 0xE); \
|
|
if ((func_80133784(0x11, b1, (s32)b2) & 0x6000) != 0) { \
|
|
*(s8 *)(a0 + 0xC1) = 0x11; \
|
|
*(s16 *)(a0 + 0xAC) = 0x78; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80131D68() \
|
|
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
|
|
extern void func_80131CA8(int, int); \
|
|
extern void func_8002A04C(s32 a0); \
|
|
extern void func_8012C218(void *a0); \
|
|
int func_80131D68(int a0, int a1) \
|
|
{ \
|
|
s32 s0 = a0; \
|
|
s32 c = a1 & 0xFF; \
|
|
if (c == 2 || c == 0x1B) { \
|
|
func_80131E00((struct S80131E00 *)s0, 0x12); \
|
|
return 1; \
|
|
} \
|
|
if (c == 0x1A || c == 0x1C) { \
|
|
if (((s32 (*)(int, int))func_80131CA8)(s0, 0x11) != 0) { \
|
|
return 1; \
|
|
} \
|
|
if (*(s32 *)(s0 + 0x78) != 0) { \
|
|
func_8002A04C(s0); \
|
|
} \
|
|
func_8012C218((void *)s0); \
|
|
return 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80136DFC() \
|
|
extern u16 D_80126B5E; \
|
|
extern u16 D_80126B62; \
|
|
extern u16 D_80126B66; \
|
|
extern s32 *D_80126B78; \
|
|
extern u16 D_80126CC4; \
|
|
extern M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); \
|
|
void func_80136DFC(void) { \
|
|
((void (*)(s32, s32, s32, s32, s32, s32))func_800153CC)(0xA, (*(s16 *)&D_80126B5E), 0x110, 0x3C, 4, 0); \
|
|
((void (*)(s32, s32, s32, s32, s32, s32))func_800153CC)(0xB, (*(s16 *)&D_80126B62), 0x110, 0x44, 4, 0); \
|
|
((void (*)(s32, s32, s32, s32, s32, s32))func_800153CC)(0xC, (*(s16 *)&D_80126B66), 0x110, 0x4C, 4, 0); \
|
|
((void (*)(s32, s32, s32, s32, s32, s32))func_800153CC)(0xD, *(s16 *)((s32)D_80126B78 + 0x12), 0x110, 0x54, 4, 0); \
|
|
((void (*)(s32, s32, s32, s32, s32, s32))func_800153CC)(0xE, D_80126CC4, 0x110, 0x5C, 4, 0); \
|
|
}
|
|
|
|
#define DEFINE_func_80146C3C() \
|
|
extern void func_80016714(void *a0, s32 a1); \
|
|
void func_80146C3C(u8 *a0) { \
|
|
u8 *s0 = a0; \
|
|
u16 *p = *(u16 **)(s0 + 0x20); \
|
|
if (p != 0) { \
|
|
s32 a1; \
|
|
if (*p == 1) { \
|
|
a1 = 0x84; \
|
|
} else { \
|
|
a1 = 0x38; \
|
|
} \
|
|
func_80016714(p, a1); \
|
|
} \
|
|
func_80016714(s0, 0x58); \
|
|
}
|
|
|
|
#define DEFINE_func_80147F78() \
|
|
extern void func_80147928(int a0, int a1); \
|
|
extern void func_8014799C(int a0, int a1); \
|
|
extern void func_80147A10(int a0, int a1); \
|
|
extern volatile s32 D_80127090; \
|
|
extern volatile s32 D_80127094; \
|
|
extern volatile s32 D_80127098; \
|
|
void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3) { \
|
|
s32 reserved[16]; \
|
|
s32 t; \
|
|
func_80147928(a0, a1); \
|
|
func_8014799C(a0, a2); \
|
|
func_80147A10(a0, a3); \
|
|
D_80127090 = *(s32 *)(a0 + 0x24); \
|
|
t = D_80127090; \
|
|
D_80127094 = *(s32 *)(a0 + 0x28); \
|
|
D_80127098 = *(s32 *)(a0 + 0x2C); \
|
|
*(s32 *)(a0 + 0x10) = t; \
|
|
*(s32 *)(a0 + 0x14) = D_80127094; \
|
|
*(s32 *)(a0 + 0x18) = D_80127098; \
|
|
D_80127090 = 0; \
|
|
D_80127094 = 0; \
|
|
D_80127098 = 0; \
|
|
(void)reserved; \
|
|
}
|
|
|
|
#define DEFINE_func_801494CC() \
|
|
extern void func_8012F038(s32); \
|
|
void func_801494CC(s32 a0, u16 *a1, u16 *a2) { \
|
|
u16 dst[3]; \
|
|
u16 src[3]; \
|
|
src[0] = a1[1]; \
|
|
src[1] = a1[3]; \
|
|
src[2] = a1[5]; \
|
|
((void (*)(s32, u16 *, u16 *))func_8012F038)(*(s32 *)(a0 + 0x20) + 0x34, src, dst); \
|
|
a2[1] = dst[0]; \
|
|
a2[3] = dst[1]; \
|
|
a2[5] = dst[2]; \
|
|
}
|
|
|
|
#define DEFINE_func_80149F2C() \
|
|
extern s32 func_80144A04(s32 *a0); \
|
|
extern void func_801599A4(void *a0); \
|
|
extern void func_80159B3C(void *a0); \
|
|
extern void func_8016EDEC(s32 a0, s32 a1); \
|
|
s32 func_80149F2C(s32 a0, s32 a1) \
|
|
{ \
|
|
void *s1 = a0; \
|
|
s32 *s0; \
|
|
if (*(u16 *)a1 == 0x83 || *(u16 *)a1 == 0x61) { \
|
|
s0 = (s32 *)func_80144A04((s32 *)a1); \
|
|
if (s0 != 0) { \
|
|
func_801599A4(s1); \
|
|
func_80159B3C(s1); \
|
|
func_8016EDEC((s32)s0, 0x1000000); \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014C1C8() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
void func_8014C1C8(s32 a0, s32 a1, void* a2) \
|
|
{ \
|
|
s16 buf[4]; \
|
|
s16 out[4]; \
|
|
s32 s0 = a1; \
|
|
buf[0] = *(u16 *)(a0 + 6); \
|
|
buf[1] = *(u16 *)(a0 + 0xA); \
|
|
buf[2] = *(u16 *)(a0 + 0xE); \
|
|
out[0] = *(u16 *)(s0 + 6) + *(u16 *)(a2 + 0); \
|
|
out[1] = *(u16 *)(s0 + 0xA) + *(u16 *)(a2 + 2); \
|
|
out[2] = *(u16 *)(s0 + 0xE) + *(u16 *)(a2 + 4); \
|
|
if (func_80133784(1, buf, (s32)out) != 0) { \
|
|
*(s16 *)(s0 + 6) = out[0]; \
|
|
*(s16 *)(s0 + 0xA) = out[1]; \
|
|
*(s16 *)(s0 + 0xE) = out[2]; \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_80152C80() \
|
|
extern void func_8014BC44(s32 a0, s32 a1); \
|
|
extern void func_80154A74(s32 a0, s32 a1); \
|
|
extern void func_801553C0(s32 a0); \
|
|
extern void func_801470AC(s32 *a0); \
|
|
extern void func_801472B4(void *a0); \
|
|
extern void func_801477E8(s32 *a0, s32 a1); \
|
|
extern void func_80153C18(); \
|
|
void func_80152C80(s32* a0) \
|
|
{ \
|
|
s32 s0 = a0; \
|
|
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
|
|
*(s8 *)(s0 + 0xA8) = 0x20; \
|
|
func_80154A74(s0, 0x11); \
|
|
func_801553C0(s0); \
|
|
func_801470AC((s32 *)s0); \
|
|
func_801472B4((void *)s0); \
|
|
*(s16 *)(s0 + 0x3E) = 0; \
|
|
*(s16 *)(s0 + 0x40) = 0; \
|
|
*(s16 *)(s0 + 0x42) = 0; \
|
|
*(s8 *)(s0 + 0xDD) = 0; \
|
|
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
|
|
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
|
|
*(s16 *)(s0 + 0x60) = 0x1000; \
|
|
*(s16 *)(s0 + 0x62) = 0x1000; \
|
|
*(s16 *)(s0 + 0x64) = 0x1000; \
|
|
func_801477E8((s32 *)s0, 0); \
|
|
func_80153C18(s0); \
|
|
}
|
|
|
|
#define DEFINE_func_801719A4() \
|
|
extern void *D_8011F738; \
|
|
void func_801719A4(int a0, int a1) \
|
|
{ \
|
|
u32 i; \
|
|
s32 off; \
|
|
s32 pad[1]; \
|
|
for (i = 0; i < a1; i++) { \
|
|
off = i * 4; \
|
|
*(s32*)((s32)&D_8011F738 + off) = \
|
|
*(s32*)(((*(u8*)(a0 + 0x214) + i) << 2) + *(s32*)(a0 + 0x1FC)); \
|
|
} \
|
|
*(u8*)(a0 + 0x214) += i; \
|
|
}
|
|
|
|
#define DEFINE_func_80173BC0() \
|
|
extern s16 D_80126B3A; \
|
|
extern struct S80126B38 D_80126B38; \
|
|
extern s16 D_8011F9C8; \
|
|
extern s32 func_800D0EC4(void); \
|
|
extern void func_8013E588(void*); \
|
|
extern s32 func_80174650(s32); \
|
|
extern void func_80171A34(s32 *a0, s8 a1); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
void func_80173BC0(u8* a0) \
|
|
{ \
|
|
s32 v = D_80126B3A; \
|
|
if (v != 0 && v < 0x6F && func_800D0EC4() == 0) { \
|
|
if ((*(s16 *)&D_80126B38) & 0x8000) { \
|
|
((void (*)(void))func_8013E588)(); \
|
|
} else { \
|
|
func_80174650((s32)a0); \
|
|
D_8011F9C8 = 2; \
|
|
func_80171A34(a0, 7); \
|
|
return; \
|
|
} \
|
|
} \
|
|
func_80171A1C((u8 *)a0); \
|
|
}
|
|
|
|
#define DEFINE_func_80173CB4() \
|
|
extern s16 func_80171AB0(s32 a0, void *a1); \
|
|
extern void func_8014706C(void *a0); \
|
|
extern void func_80154274(s32 *a0, s32 a1); \
|
|
extern void func_801553A8(s32 *a0); \
|
|
extern void func_8016BADC(void *a0, s32 a1, s32 a2); \
|
|
extern void func_80147324(s32 a0); \
|
|
extern s32 func_8013767C(s32 a0); \
|
|
extern void func_80171A1C(u8 *a0); \
|
|
extern s32 D_801151D4; \
|
|
extern struct S80126B38 D_80126B38; \
|
|
extern u8 D_800D5DA8; \
|
|
extern u8 D_800D5DB8; \
|
|
extern s32 D_8012750C; \
|
|
void func_80173CB4(s32 a0) { \
|
|
s32 s0 = a0; \
|
|
s32 v1 = D_801151D4; \
|
|
s16 tmp[4]; \
|
|
s32 a; \
|
|
s32 d; \
|
|
tmp[0] = *(s32 *)(v1 + 0x3C); \
|
|
tmp[1] = *(s32 *)(v1 + 0x40); \
|
|
tmp[2] = *(s32 *)(v1 + 0x44); \
|
|
if (func_80171AB0(a0, tmp) != 0) { \
|
|
return; \
|
|
} \
|
|
func_8014706C((void *)s0); \
|
|
switch ((u8)(*(u8 *)&D_80126B38)) { \
|
|
case 0: \
|
|
func_80154274((s32 *)s0, (s32)&D_800D5DA8); \
|
|
*(s32 *)(s0 + 0x200) = 0x20; \
|
|
a = 0x843; \
|
|
goto ld0; \
|
|
case 1: \
|
|
func_80154274((s32 *)s0, (s32)&D_800D5DA8); \
|
|
goto lb8; \
|
|
case 2: \
|
|
func_80154274((s32 *)s0, (s32)&D_800D5DA8); \
|
|
__asm__ __volatile__(""); \
|
|
goto lb8; \
|
|
case 3: \
|
|
func_80154274((s32 *)s0, (s32)&D_800D5DB8); \
|
|
func_801553A8((s32 *)s0); \
|
|
goto lb8; \
|
|
default: \
|
|
goto ld8; \
|
|
} \
|
|
lb8: \
|
|
func_8016BADC((void *)s0, -0x40, 0x40); \
|
|
*(s32 *)(s0 + 0x200) = 0x80; \
|
|
a = 0x6A6; \
|
|
ld0: \
|
|
func_80147324(a); \
|
|
ld8: \
|
|
d = D_8012750C; \
|
|
if (d != 0) { \
|
|
*(s32 *)(s0 + 0x198) = func_8013767C(d); \
|
|
} else { \
|
|
*(s32 *)(s0 + 0x198) = 0; \
|
|
} \
|
|
func_80171A1C((u8 *)s0); \
|
|
}
|
|
|
|
#define DEFINE_func_8014ADE0() \
|
|
extern u8 D_80078E78[]; \
|
|
extern s32 func_8016F1C4(void); \
|
|
extern s32 func_8014B154(s32 *a0); \
|
|
extern void func_8014BD24(s32 a0, s32 a1); \
|
|
extern void func_8014BB24(s32 a0, s32 a1, s32 a2); \
|
|
extern void func_8014BC80(s32 a0, s32 a1); \
|
|
extern void func_8014BD60(s32 a0, s32 a1); \
|
|
extern void func_8014B084(void); \
|
|
extern s32 func_80029178(s32 a0); \
|
|
void func_8014ADE0(s32 a0) \
|
|
{ \
|
|
/* BLOCK-scope extern: the s32 view of the accumulator. The only file-scope decl of \
|
|
* this symbol in the TU is `extern s16 D_80078E90;` from DEFINE_func_8014B034(), \
|
|
* instantiated at line 1166 — AFTER our slot at 1162 — so gcc-2.7.2 emits only \
|
|
* "warning: type mismatch with previous external decl" (probe-verified, exit 0, no \
|
|
* -Werror in the build) instead of a hard `conflicting types` error. Unlike \
|
|
* `*(s32*)&D_80078E90`, this keeps the symbol_ref INSIDE the mem so each access folds \
|
|
* to `lui %hi / lw %lo`; taking the address instead materializes it and CSE hoists it \
|
|
* into a reg across all 4 uses (§18 &sym trap) — measured, it shifts ~100 insns. */ \
|
|
extern s32 D_80078E90; \
|
|
register u8 *p __asm__("$17") = D_80078E78; \
|
|
s32 temp_s2; \
|
|
s32 var_a1; \
|
|
if (func_8016F1C4() != 0) { \
|
|
return; \
|
|
} \
|
|
if ((*(u16 *)a0 == 0x1A) || (*(u16 *)a0 == 0x1E) || (*(s32 *)(a0 + 0x44) & 0x10)) { \
|
|
return; \
|
|
} \
|
|
temp_s2 = D_80078E90; \
|
|
if (func_8014B154((s32 *)a0) != 0) { \
|
|
D_80078E90 = D_80078E90 + 0xAAA8; \
|
|
} else { \
|
|
D_80078E90 = D_80078E90 + 0x1555; \
|
|
} \
|
|
if ((*(s16 *)(p + 0x1A) - (temp_s2 >> 16)) > 0) { \
|
|
if (p[0x49] == 3) { \
|
|
func_8014BD24(a0, 1); \
|
|
} \
|
|
} \
|
|
if (((s16)(*(s16 *)(p + 0x1A) / 60) - (s16)((s16)(temp_s2 >> 16) / 60)) > 0) { \
|
|
if (func_8014B154((s32 *)a0) == 0) { \
|
|
var_a1 = 4; \
|
|
} else if (func_80029178(0x1B) & 0xFF) { \
|
|
var_a1 = 0xA; \
|
|
} else { \
|
|
var_a1 = 4; \
|
|
} \
|
|
if (*(u16 *)(p + 0x40) != 0) { \
|
|
func_8014BB24(a0, var_a1, 0); \
|
|
} else if (*(u16 *)(p + 0x3C) != 0) { \
|
|
if (*(u16 *)(p + 0x3C) >= 5U) { \
|
|
func_8014BC80(a0, 4); \
|
|
} else { \
|
|
*(u16 *)(p + 0x3C) = 1; \
|
|
} \
|
|
} \
|
|
if (func_8014B154((s32 *)a0) != 0) { \
|
|
if (func_80029178(0x1B) & 0xFF) { \
|
|
func_8014BD24(a0, 8); \
|
|
} else { \
|
|
func_8014BD60(a0, 1); \
|
|
} \
|
|
} else { \
|
|
func_8014BD60(a0, 4); \
|
|
} \
|
|
} \
|
|
if (*(s16 *)(p + 0x1A) >= 0x5A0) { \
|
|
*(s32 *)(p + 0x18) = 0; \
|
|
func_8014B084(); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801325B8() \
|
|
extern void memcpy(); \
|
|
extern void gteMIMefunc(); \
|
|
void func_801325B8(int dst, int src, int m0, int mm, int arg5) \
|
|
{ \
|
|
register int p __asm__("$4"); \
|
|
register int m __asm__("$16"); \
|
|
register int n __asm__("$17"); \
|
|
register int dv __asm__("$18"); \
|
|
int sv; \
|
|
int ofs; \
|
|
int c; \
|
|
m = m0; \
|
|
p = src; \
|
|
if (*(int *)(p + 4) == 1) { \
|
|
sv = *(int *)(p + 0xC); \
|
|
} else { \
|
|
ofs = (int)((*(unsigned int *)(p + 0xC) >> 2) << 2) + 0xC; \
|
|
sv = p + ofs; \
|
|
} \
|
|
p = dst; \
|
|
sv += *(int *)(m + 8) * 8; \
|
|
if (*(int *)(p + 4) == 1) { \
|
|
dv = *(int *)(p + 0xC); \
|
|
} else { \
|
|
ofs = (int)((*(unsigned int *)(p + 0xC) >> 2) << 2) + 0xC; \
|
|
dv = p + ofs; \
|
|
} \
|
|
c = *(int *)(m + 8); \
|
|
dv += c * 8; \
|
|
n = *(int *)(m + 0xC); \
|
|
m += 0x10; \
|
|
memcpy(dv, sv, n * 8); \
|
|
gteMIMefunc(dv, m, n, arg5); \
|
|
if (mm != 0) { \
|
|
m = mm; \
|
|
p = src; \
|
|
if (*(int *)(p + 4) == 1) { \
|
|
sv = *(int *)(p + 0x14); \
|
|
} else { \
|
|
ofs = (int)((*(unsigned int *)(p + 0x14) >> 2) << 2) + 0xC; \
|
|
sv = p + ofs; \
|
|
} \
|
|
p = dst; \
|
|
sv += *(int *)(m + 8) * 8; \
|
|
if (*(int *)(p + 4) == 1) { \
|
|
dv = *(int *)(p + 0x14); \
|
|
} else { \
|
|
ofs = (int)((*(unsigned int *)(p + 0x14) >> 2) << 2) + 0xC; \
|
|
dv = p + ofs; \
|
|
} \
|
|
c = *(int *)(m + 8); \
|
|
dv += c * 8; \
|
|
n = *(int *)(m + 0xC); \
|
|
m += 0x10; \
|
|
memcpy(dv, sv, n * 8); \
|
|
gteMIMefunc(dv, m, n, arg5); \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_801387B8() \
|
|
void func_801387B8(s32 arg0) { \
|
|
extern s32 func_80138DE0(s32, s32, s32); \
|
|
extern s32 func_80139220(s32 a0); \
|
|
extern void func_80138948(void *a0); \
|
|
extern void func_80139A8C(s32 a0); \
|
|
extern void func_80139B18(s32 a0); \
|
|
extern s32 D_80127530[]; \
|
|
u16 *p; \
|
|
s32 base; \
|
|
s32 cont; \
|
|
u8 cmd; \
|
|
s32 sub; \
|
|
s32 pc; \
|
|
for (;;) { \
|
|
cont = 0; \
|
|
if (*(s32 *)(arg0 + 8) & 0x400) { \
|
|
base = D_80127530[*(u16 *)(arg0 + 0x4A)]; \
|
|
p = (u16 *)(arg0 + 0x44); \
|
|
} else { \
|
|
p = (u16 *)(arg0 + 0x10); \
|
|
base = *(s32 *)(arg0 + 0); \
|
|
} \
|
|
pc = *p; \
|
|
cmd = *(u8 *)(base + pc); \
|
|
sub = *(u8 *)(base + pc + 1); \
|
|
if (cmd >= 0x20) { \
|
|
cont = func_80138DE0(arg0, cmd, sub); \
|
|
if (!(*(s32 *)(arg0 + 8) & 0x80220)) { \
|
|
cont = 0; \
|
|
} \
|
|
} else { \
|
|
if (cmd != 0) { \
|
|
switch (cmd) { \
|
|
case 10: \
|
|
func_80139220(arg0); \
|
|
*p += 1; \
|
|
goto loop_end; \
|
|
case 1: \
|
|
cont = 1; \
|
|
*(u8 *)(arg0 + 0x23) = sub; \
|
|
*p += 2; \
|
|
goto loop_end; \
|
|
case 7: \
|
|
if (!(*(s32 *)(arg0 + 8) & 0x20000)) { \
|
|
*(s32 *)(arg0 + 8) &= ~0x20; \
|
|
} \
|
|
break; \
|
|
case 23: \
|
|
*(s32 *)(arg0 + 8) |= 2; \
|
|
default: \
|
|
cont = 1; \
|
|
*p += 1; \
|
|
goto loop_end; \
|
|
} \
|
|
} \
|
|
func_80138948((void *)arg0); \
|
|
} \
|
|
loop_end: \
|
|
if (cont == 0) { \
|
|
func_80139A8C(arg0); \
|
|
func_80139B18(arg0); \
|
|
return; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define DEFINE_func_8014F4C0() \
|
|
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
|
|
extern s32 func_80029178(s32 arg); \
|
|
extern int func_8014F74C(); \
|
|
extern u8 D_800D3918[]; \
|
|
extern u8 D_801152A8[]; \
|
|
extern s16 D_801152B0; \
|
|
extern s32 D_801152BC; \
|
|
s32 func_8014F4C0(s32 arg0) \
|
|
{ \
|
|
PosT sp10; \
|
|
MoveT sp18; \
|
|
u16 x6, xA, xE; \
|
|
s32 ret; \
|
|
if (*(s16 *)(arg0 + 0x146) != 0) { \
|
|
return func_8014F74C(); \
|
|
} \
|
|
sp10.x = *(u16 *)(arg0 + 0x88); \
|
|
sp10.y = *(u16 *)(arg0 + 0x8A); \
|
|
sp10.z = *(u16 *)(arg0 + 0x8C); \
|
|
sp18.x = x6 = *(u16 *)(arg0 + 6); \
|
|
sp18.y = xA = *(u16 *)(arg0 + 0xA) + 8; \
|
|
sp18.z = xE = *(u16 *)(arg0 + 0xE); \
|
|
if (*(s16 *)(arg0 + 0x146) != 0) { \
|
|
sp18.x = x6 + *(u16 *)(arg0 + 0x140); \
|
|
sp18.y = xA + *(u16 *)(arg0 + 0x142); \
|
|
sp18.z = xE + *(u16 *)(arg0 + 0x144); \
|
|
} \
|
|
ret = func_80133784(0, &sp10, (s32)&sp18); \
|
|
if (ret != 0) { \
|
|
if (*(u8 *)&sp18.w != 0) { \
|
|
*(u16 *)(arg0 + 0x16C) = *(u8 *)&sp18.w; \
|
|
} \
|
|
*(u16 *)(arg0 + 0x16E) = (u32)sp18.w >> 13; \
|
|
if (ret == 0x2000) { \
|
|
__builtin_memcpy((void *)(arg0 + 0x120), (void *)D_801152A8, 8); \
|
|
} else if (ret == 0x4000) { \
|
|
__builtin_memcpy((void *)(arg0 + 0x120), (void *)&D_801152B0, 8); \
|
|
} \
|
|
/* NOT the sibling's `if (x != 0x1D) return ret;` early-return form — that inverts the \
|
|
* branch polarity here (beq instead of the target's bne) and costs +2 ins. The \
|
|
* short-circuit && is what folds the 0x1D test and the func_80029178 test into the \
|
|
* single fallthrough chain the target uses. */ \
|
|
if (*(u16 *)(arg0 + 0x16C) == 0x1D && (func_80029178(0x21) & 0xFF) == 0) { \
|
|
ret &= ~0x2000; \
|
|
ret |= 0x4000; \
|
|
__builtin_memcpy((void *)&D_801152B0, (void *)D_801152A8, 8); \
|
|
D_801152BC = 1; \
|
|
} \
|
|
return ret; \
|
|
} \
|
|
/* ret == 0 */ \
|
|
__builtin_memcpy((void *)(arg0 + 0x120), (void *)D_800D3918, 8); \
|
|
if (*(u8 *)&sp18.w != 0) { \
|
|
*(u16 *)(arg0 + 0x16C) = *(u8 *)&sp18.w; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_8014E284() \
|
|
extern u8 D_801202A0[]; \
|
|
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ \
|
|
extern s32 ratan2(s32 a0, s32 a1); \
|
|
extern s32 func_80012A60(s32 a0, s32 a1); \
|
|
s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2) { \
|
|
u16 *a1 = (u16 *)arg1; \
|
|
u16 *a2 = (u16 *)arg2; \
|
|
EntSC01077 *p; \
|
|
s16 dx; \
|
|
s16 dz; \
|
|
s16 ax; \
|
|
s16 az; \
|
|
s32 r1; \
|
|
s32 r2; \
|
|
dx = a2[0] - a1[0]; \
|
|
dz = a2[2] - a1[2]; \
|
|
if ((s16)(dx | dz) != 0) { \
|
|
for (p = (EntSC01077 *)D_801202A0; p < (EntSC01077 *)D_801202A0 + 96; p++) { \
|
|
if (p->f00 == 0) continue; \
|
|
if (p->f58 == 0) continue; \
|
|
if ((p->f5C & 0x1000) == 0) continue; \
|
|
/* §17a-1 fn-ptr cast: keep the canonical extern, call with the intended sig. */ \
|
|
if (((s32 (*)(s32, s32, u16 *, u16 *))func_80135A4C)(p->f20, p->f58, a1, a2) == 0) continue; \
|
|
ax = p->f06 - *(u16 *)(a0 + 6); \
|
|
az = p->f0E - *(u16 *)(a0 + 0xE); \
|
|
r1 = (s16)ratan2(dz, dx); \
|
|
r2 = (s16)ratan2(az, ax); \
|
|
if ((s16)func_80012A60(r1, r2) < 0x400) { \
|
|
*(s32 *)(a0 + 0x170) = (s32)p; \
|
|
*(u16 *)(a0 + 6) = a2[0]; \
|
|
*(u16 *)(a0 + 0xA) = a2[1] + 0x10; \
|
|
*(u16 *)(a0 + 0xE) = a2[2]; \
|
|
return 1; \
|
|
} \
|
|
} \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define DEFINE_func_80137DD4() \
|
|
extern void *func_80010A08(s32); \
|
|
extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); \
|
|
void func_80137DD4(s32 ent, u8 *arg, u8 *work) { \
|
|
register s32 t __asm__("$4"); \
|
|
s32 d, c, c1, sub, y; \
|
|
u32 b; \
|
|
P_TAG_80137DD4 *q, *r; \
|
|
{ \
|
|
register u32 h12 __asm__("$2"), h16 __asm__("$3"); \
|
|
h12 = *(u16 *)(ent + 0x12); \
|
|
h16 = *(u16 *)(ent + 0x16); \
|
|
t = h12 - h16; \
|
|
} \
|
|
d = t; \
|
|
if ((s16)t < 0) { \
|
|
register s32 e __asm__("$2"); \
|
|
e = t + 1; \
|
|
d = (u32)*(u16 *)(ent + 0x2e) + e; \
|
|
} \
|
|
b = *(volatile u8 *)(ent + 0x1f); \
|
|
c = (s8)b; \
|
|
sub = d - (u32)*(u8 *)(ent + 0x21); \
|
|
c1 = c + 1; \
|
|
y = (u32)*(u16 *)(ent + 0x32) + (s16)(sub + c1) * 0xe; \
|
|
q = (P_TAG_80137DD4 *)func_80010A08(0x48); \
|
|
*(u8 *)(arg + 3) = 0; \
|
|
func_80137FD8(ent, (s32)arg, (s32)q, (s16)y); \
|
|
q->addr = ((P_TAG_80137DD4 *)((u32)*(u16 *)(ent + 0x1a) * 4 + *(s32 *)(work + 4)))->addr; \
|
|
((P_TAG_80137DD4 *)((u32)*(u16 *)(ent + 0x1a) * 4 + *(s32 *)(work + 4)))->addr = (u32)q; \
|
|
q = (P_TAG_80137DD4 *)((u8 *)q + 0x24); \
|
|
*(u8 *)(arg + 3) = 1; \
|
|
func_80137FD8(ent, (s32)arg, (s32)q, (s16)y); \
|
|
q->addr = ((P_TAG_80137DD4 *)((u32)*(u16 *)(ent + 0x1a) * 4 + *(s32 *)(work + 4)))->addr; \
|
|
((P_TAG_80137DD4 *)((u32)*(u16 *)(ent + 0x1a) * 4 + *(s32 *)(work + 4)))->addr = (u32)q; \
|
|
r = (P_TAG_80137DD4 *)func_80010A08(8); \
|
|
r->len = 1; \
|
|
*(u32 *)((u8 *)r + 4) = 0xe100000a; \
|
|
r->addr = ((P_TAG_80137DD4 *)((u32)*(u16 *)(ent + 0x1a) * 4 + *(s32 *)(work + 4)))->addr; \
|
|
((P_TAG_80137DD4 *)((u32)*(u16 *)(ent + 0x1a) * 4 + *(s32 *)(work + 4)))->addr = (u32)r; \
|
|
}
|
|
|
|
#define DEFINE_func_80150170() \
|
|
extern s32 func_801502EC(s32 e, void *a1, void *a2); \
|
|
extern s32 func_80150460(s32 e, s32 a1); \
|
|
extern u8 D_801152A8[]; \
|
|
s32 func_80150170(void *e) { \
|
|
u8 a[8]; \
|
|
u8 b[8]; \
|
|
u8 out[8]; \
|
|
s32 r5; \
|
|
s32 r6; \
|
|
*(s16 *)(a + 0) = *(s16 *)(b + 0) = *(u16 *)(((s32)e) + 6); \
|
|
*(s16 *)(a + 2) = *(s16 *)(b + 2) = *(u16 *)(((s32)e) + 0xA) - 0x10; \
|
|
*(s16 *)(a + 4) = *(s16 *)(b + 4) = *(u16 *)(((s32)e) + 0xE); \
|
|
r5 = func_801502EC(((s32)e), a, out); \
|
|
r6 = func_80150460(((s32)e), (s32)b); \
|
|
if (r6 == 0) { \
|
|
*(s16 *)(b + 2) = 0x7fff; \
|
|
} \
|
|
if ((r5 | r6) != 0) { \
|
|
if (*(s16 *)(a + 2) < *(s16 *)(b + 2)) { \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
*(s16 *)(((s32)e) + 0x78) = *(u16 *)(a + 0); \
|
|
*(s16 *)(((s32)e) + 0x7a) = *(u16 *)(a + 2); \
|
|
*(s16 *)(((s32)e) + 0x7c) = *(u16 *)(a + 4); \
|
|
__builtin_memcpy((void *)(((s32)e) + 0x80), out, 8); \
|
|
} else { \
|
|
__asm__ __volatile__("" ::: "memory"); \
|
|
*(s16 *)(((s32)e) + 0x78) = *(u16 *)(b + 0); \
|
|
*(s16 *)(((s32)e) + 0x7a) = *(u16 *)(b + 2); \
|
|
*(s16 *)(((s32)e) + 0x7c) = *(u16 *)(b + 4); \
|
|
__builtin_memcpy((void *)(((s32)e) + 0x80), D_801152A8, 8); \
|
|
} \
|
|
*(u16 *)(((s32)e) + 0x7e) &= 0xfffe; \
|
|
return 1; \
|
|
} \
|
|
{ \
|
|
register s32 c __asm__("$3"); /* $v1 */ \
|
|
register s32 t __asm__("$4"); /* $a0 */ \
|
|
t = *(u16 *)(a + 0); \
|
|
c = 0x7fff; \
|
|
*(s16 *)(((s32)e) + 0x7a) = c; \
|
|
*(s16 *)(((s32)e) + 0x78) = t; \
|
|
t = *(u16 *)(a + 4); \
|
|
*(s16 *)(((s32)e) + 0x7c) = t; \
|
|
*(u16 *)(((s32)e) + 0x7e) |= 1; \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#endif
|