Click to expand
#define MSL_PPC_EABI_CRITICAL_REGIONS_GAMECUBE_H
#define RUNTIME_PLATFORM_H
/// @file
/// @todo Assumes @c __PPCGEKKO__.
#define STDBOOL_H
/// A signed integer used to contain boolean values
/// @todo Maybe some versions of MetroWerks support @c _Bool?
typedef int bool;
/// #bool true
/// @todo Make this and #false part of an @c enum. Fake usages, such as
/// assigning to a @c u32, will need to be addressed.
#define true 1
/// #bool false
#define false 0
/// @file
/// @todo Assumes @c __PPCGEKKO__.
#define __STDDEF_H__
typedef unsigned short wchar_t;
typedef signed int ssize_t;
/// @deprecated Use #usize_t.
typedef unsigned long size_t;
/// @todo Rename to @c size_t when #size_t is deleted.
typedef unsigned int usize_t;
typedef signed int intptr_t;
typedef unsigned int uintptr_t;
/// A null pointer
#define NULL ((void*) 0)
/// A signed 8-bit integer
typedef signed char s8;
/// A signed 16-bit integer
typedef signed short s16;
/// A signed 32-bit integer
typedef signed long s32;
/// A signed 64-bit integer
typedef signed long long s64;
/// An unsigned 8-bit integer
typedef unsigned char u8;
/// An unsigned 16-bit integer
typedef unsigned short u16;
/// An unsigned 32-bit integer
typedef unsigned long u32;
/// An unsigned 64-bit integer
typedef unsigned long long u64;
/// An unsigned short integer of platform-dependent size
typedef unsigned short ushort;
/// An unsigned integer of platform-dependent size
typedef unsigned int uint;
/// A volatile, unsigned 8-bit integer
typedef volatile u8 vu8;
/// A volatile, unsigned 16-bit integer
typedef volatile u16 vu16;
/// A volatile, unsigned 32-bit integer
typedef volatile u32 vu32;
/// A volatile, unsigned 64-bit integer
typedef volatile u64 vu64;
/// A volatile, signed 8-bit integer
typedef volatile s8 vs8;
/// A volatile, signed 16-bit integer
typedef volatile s16 vs16;
/// A volatile, signed 32-bit integer
typedef volatile s32 vs32;
/// A volatile, signed 64-bit integer
typedef volatile s64 vs64;
/// A 32-bit floating-point number
typedef float f32;
/// A 64-bit floating-point number
typedef double f64;
/// A volatile 32-bit floating-point number
typedef volatile f32 vf32;
/// A volatile 64-bit floating-point number
typedef volatile f64 vf64;
/// The underlying type of an @c enum, used as a placeholder
typedef int enum_t;
/// A @c void callback with no arguments.
typedef void (*Event)(void);
#define ATTRIBUTE_ALIGN(num) __attribute__((aligned(num)))
#define SECTION_INIT
#define ATTRIBUTE_NORETURN
#define ATTRIBUTE_RESTRICT
#define AT_ADDRESS(x)
#define U8_MAX 0xFF
#define U16_MAX 0xFFFF
#define U32_MAX 0xFFFFFFFF
#define S8_MAX 0x7F
#define S16_MAX 0x7FFF
#define S32_MAX 0x7FFFFFFF
#define F32_MAX 3.4028235e38f
#define SQ(x) ((x) * (x))
#define MIN(a, b) (((a) > (b)) ? (b) : (a))
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
#define STATIC_ASSERT(cond) struct { int x[1 - 2 * !(cond)]; };
#define RETURN_IF(cond) do { if ((cond)) { return; } } while (0)
#define SDATA
#define WEAK
void __kill_critical_regions(void);
#define MSL_ABORT_EXIT_H
void exit(int code);
#define _MSL_COMMON_ANSI_FILES_H
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
typedef unsigned long __file_handle;
typedef unsigned long fpos_t;
#define set_error(file) do { (file)->file_state.error = 1; (file)->buffer_length = 0; } while (0)
enum __file_kinds {
__closed_file,
__disk_file,
__console_file,
__unavailable_file,
};
enum __file_orientation {
/* 0x0 */ UNORIENTED,
/* 0x1 */ CHAR_ORIENTED,
/* 0x2 */ WIDE_ORIENTED,
};
typedef struct _file_modes {
unsigned int open_mode : 2;
unsigned int io_mode : 3;
unsigned int buffer_mode : 2;
unsigned int file_kind : 3;
unsigned int file_orientation : 2;
unsigned int binary_io : 1;
} file_modes;
enum __io_modes {
__read = 1,
__write = 2,
__read_write = 3,
__append = 4,
};
enum __io_states {
__neutral,
__writing,
__reading,
__rereading,
};
enum __io_results {
__no_io_error,
__io_error,
__io_EOF,
};
typedef struct _file_states {
unsigned int io_state : 3;
unsigned int free_buffer : 1;
unsigned char eof;
unsigned char error;
} file_states;
typedef void (*__idle_proc)(void);
typedef int (*__pos_proc)(__file_handle file, fpos_t* position, int mode,
__idle_proc idle_proc);
typedef int (*__io_proc)(__file_handle file, unsigned char* buff,
size_t* count, __idle_proc idle_proc);
typedef int (*__close_proc)(__file_handle file);
typedef struct _FILE {
/* 0x00 */ __file_handle handle;
/* 0x04 */ file_modes file_mode;
/* 0x08 */ file_states file_state;
/* 0x0C */ unsigned char is_dynamically_allocated;
/* 0x0D */ char char_buffer;
/* 0x0E */ char char_buffer_overflow;
/* 0x0F */ char ungetc_buffer[2];
/* 0x12 */ wchar_t ungetc_wide_buffer[2];
/* 0x18 */ unsigned long position;
/* 0x1C */ unsigned char* buffer;
/* 0x20 */ unsigned long buffer_size;
/* 0x24 */ unsigned char* buffer_ptr;
/* 0x28 */ unsigned long buffer_length;
/* 0x2C */ unsigned long buffer_alignment;
/* 0x30 */ unsigned long save_buffer_length;
/* 0x34 */ unsigned long buffer_position;
/* 0x38 */ __pos_proc position_fn;
/* 0x3C */ __io_proc read_fn;
/* 0x40 */ __io_proc write_fn;
/* 0x44 */ __close_proc close_fn;
/* 0x48 */ __idle_proc idle_fn;
/* 0x4C */ struct _FILE* next_file;
} FILE;
typedef struct _files {
FILE _stdin;
FILE _stdout;
FILE _stderr;
FILE empty;
} files;
#define _IONBF 0
#define _IOLBF 1
#define _IOFBF 2
extern files __files;
unsigned int __flush_all(void);
void __close_all(void);
#define _BUFFER_IO_H_
typedef struct _BufferIoUnkFlagStruct {
/* 0x00 */ struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
} BufferIoUnkFlagStruct;
typedef struct _BufferIoUnkStruct {
/* 0x00 */ s32 x00;
/* 0x04 */ BufferIoUnkFlagStruct x04;
/* 0x05 */ BufferIoUnkFlagStruct x05;
/* 0x06 */ BufferIoUnkFlagStruct x06;
/* 0x07 */ BufferIoUnkFlagStruct x07;
/* 0x08 */ s32 x08_filler[3];
/* 0x14 */ s32 x14;
/* 0x18 */ s32 x18;
/* 0x1C */ s32 x1C;
/* 0x20 */ s32 x20;
/* 0x24 */ s32 x24;
/* 0x28 */ s32 x28;
/* 0x2C */ s32 x2C_filler;
/* 0x30 */ s32 x30;
/* 0x34 */ s32 x34_filler[2];
/* 0x3C */ s32 (*x3C)(s32 x3C_arg0, s32 x3C_arg1, s32* x3C_arg2,
s32 x3C_arg3);
/* 0x40 */ s32 x40_filler;
/* 0x44 */ s32 x44;
} BufferIoUnkStruct;
void __prep_buffer(BufferIoUnkStruct* arg0);
s32 __flush_buffer(BufferIoUnkStruct* arg0, s32* arg1);
#define MSL_CONSOLE_IO_H
s32 MSL_ConsoleIo_80325F18(void);
s32 __write_console(s32, s32 arg1, s32* arg2);
u8 __read_console(u32, u8* buf, u32* n);
#define __CSTRING_H__
int wcstombs(void* dst, const void* src, size_t len);
int memcmp(const void* str1, const void* str2, size_t len);
void* memchr(const void* str, int c, size_t len);
void* memmove(void* dst, const void* src, size_t len);
#define MSL_CTYPE_H
extern const unsigned char __ctype_map[];
extern const unsigned char __lower_map[];
extern const unsigned char __upper_map[];
#define EOF -1L
#define __control_char 0x01
#define __motion_char 0x02
#define __space_char 0x04
#define __punctuation 0x08
#define __digit 0x10
#define __hex_digit 0x20
#define __lower_case 0x40
#define __upper_case 0x80
#define __letter (__lower_case | __upper_case)
#define __alphanumeric (__letter | __digit)
#define __graphic (__alphanumeric | __punctuation)
#define __printable (__graphic | __space_char)
#define __whitespace (__motion_char | __space_char)
#define __control (__motion_char | __control_char)
#define __zero_fill(c) ((int) (unsigned char) (c))
inline int isalpha(int c)
{
return (int) (__ctype_map[(unsigned char) c] & (0x40 | 0x80));
}
inline int isdigit(int c)
{
return (int) (__ctype_map[(unsigned char) c] & 0x10);
}
inline int isspace(int c)
{
return (int) (__ctype_map[(unsigned char) c] & (0x02 | 0x04));
}
inline int isupper(int c)
{
return (int) (__ctype_map[(unsigned char) c] & 0x80);
}
inline int isxdigit(int c)
{
return (int) (__ctype_map[(unsigned char) c] & 0x20);
}
int toupper(int c);
int tolower(int c);
#define MSL_COMMON_SRC_ERRNO_H
#define ENOERR 0
#define EDOM 33
#define ERANGE 34
#define EFPOS 40
#define ESIGPARM 36
extern int errno;
#define _STD_LIMITS_H
#define CHAR_BIT 8
#define SCHAR_MIN (-0x7F - 1)
#define SCHAR_MAX 0x7F
#define UCHAR_MAX 0xFF
#define CHAR_MIN 0
#define CHAR_MAX SCHAR_MAX
#define SHRT_MIN (-0x7FFF - 1)
#define SHRT_MAX 0x7FFF
#define USHRT_MAX 0xFFFF
#define INT_MIN (-0x7FFFFFFF - 1)
#define INT_MAX 0x7FFFFFFF
#define UINT_MAX 0xFFFFFFFF
#define LONG_MIN (-0x7FFFFFFFL - 1)
#define LONG_MAX 0x7FFFFFFFL
#define ULONG_MAX 0xFFFFFFFFUL
#define LLONG_MIN (-0x7FFFFFFFFFFFFFFFLL - 1)
#define LLONG_MAX 0x7FFFFFFFFFFFFFFFLL
#define ULLONG_MAX 0xFFFFFFFFFFFFFFFFULL
#define MSL_MATH_H
#define METROTRK_INTRINSICS_H
void __sync(void);
void __isync(void);
int __cntlzw(unsigned int);
float sqrtf__Ff(float);
float __fnmsubs(float, float, float);
double __fabs(double);
float __fabsf(float);
double __frsqrte(double);
void* __memcpy(void* dst, const void* src, unsigned long n);
#define MSL_HI(x) *(int*) &x
#define MSL_LO(x) *(1 + (int*) &x)
#define M_PI 3.14159265358979323846
#define M_PI_2 (M_PI / 2)
#define M_PI_3 (M_PI / 3)
static float const deg_to_rad = 3.14159265358979323846 / 180;
static float const rad_to_deg = 180 / 3.14159265358979323846;
#pragma push
#pragma cplusplus on
#define FLT_EPSILON 1.00000001335e-10F
#pragma pop
enum FloatType {
FP_NAN = 1,
FP_INFINITE = 2,
FP_ZERO = 3,
FP_NORMAL = 4,
FP_SUBNORMAL = 5
};
static inline s32 __fpclassifyf(float x)
{
const s32 exp_mask = 0b01111111100000000000000000000000; // = 0x7F800000
const s32 mantissa_mask =
0b00000000011111111111111111111111; // = 0x007fffff
switch ((*(s32*) &x) & exp_mask) {
case exp_mask:
return ((*(s32*) &x) & mantissa_mask) ? FP_NAN : FP_INFINITE;
case 0:
return ((*(s32*) &x) & mantissa_mask) ? FP_SUBNORMAL : FP_ZERO;
default:
return FP_NORMAL;
}
}
extern int __HI(double);
extern int __LO(double);
static inline s32 __fpclassifyd(double x)
{
switch (__HI(x) & 0x7ff00000) {
case 0x7ff00000:
return ((__HI(x) & 0x000fffff) || (__LO(x) & 0xffffffff))
? FP_NAN
: FP_INFINITE;
case 0:
return ((__HI(x) & 0x000fffff) || (__LO(x) & 0xffffffff))
? FP_SUBNORMAL
: FP_ZERO;
default:
return FP_NORMAL;
}
}
#define fpclassify(x) ((sizeof(x) == sizeof(float)) ? __fpclassifyf((float) (x)) : __fpclassifyd((double) (x)))
/// @todo Is #fabs_inline fake? See #ftCo_AttackS3_CheckInput.
#define ABS(x) ((x) < 0 ? -(x) : (x))
static inline f32 fabs_inline(f32 x)
{
if (x < 0) {
return -x;
} else {
return x;
}
}
static inline double fabs(double f)
{
return __fabs(f);
}
double frexp(double x, int* exponent);
float fabsf__Ff(float);
float tanf(float x);
float cos__Ff(float x);
float sin__Ff(float x);
float cosf(float x);
float sinf(float x);
void __sinit_trigf_c(void);
float logf(float);
#define _MATH_PPC_H_
#pragma push
#pragma cplusplus on
extern inline float sqrtf(float x)
{
static const double _half = .5;
static const double _three = 3.0;
volatile float y;
if (x > 0.0f) {
double guess = __frsqrte((double) x); // returns an approximation to
guess = _half * guess *
(_three - guess * guess * x); // now have 12 sig bits
guess = _half * guess *
(_three - guess * guess * x); // now have 24 sig bits
guess = _half * guess *
(_three - guess * guess * x); // now have 32 sig bits
y = (float) (x * guess);
return y;
}
return x;
}
#pragma pop
inline float sqrtf_accurate(float x)
{
volatile float y;
if (x > 0.0f) {
double guess = __frsqrte((double) x); // returns an approximation to
guess =
0.5 * guess * (3.0 - guess * guess * x); // now have 12 sig bits
guess =
0.5 * guess * (3.0 - guess * guess * x); // now have 24 sig bits
guess =
0.5 * guess * (3.0 - guess * guess * x); // now have 32 sig bits
guess = 0.5 * guess * (3.0 - guess * guess * x); // extra iteration
y = (float) (x * guess);
return y;
}
return x;
}
#define __MEM_FUNCS_H__
void __copy_longs_aligned(void* dst, const void* src, size_t len);
void __copy_longs_rev_aligned(void* dst, const void* src, size_t len);
void __copy_longs_unaligned(void* dst, const void* src, size_t len);
void __copy_longs_rev_unaligned(void* dst, const void* src, size_t len);
#define GALE01_323CF0
#define PLACEHOLDER_H
/** @file
* This header contains macros emitted by m2c in "valid syntax" mode,
* which can be enabled by passing `--valid-syntax` on the command line.
*
* In this mode, unhandled types and expressions are emitted as macros so
* that the output is compilable without human intervention.
*/
#define M2C_MACROS_H
/* Unknown types */
typedef s32 M2C_UNK;
typedef s8 M2C_UNK8;
typedef s16 M2C_UNK16;
typedef s32 M2C_UNK32;
typedef s64 M2C_UNK64;
/* Unknown field access, like `*(type_ptr) &expr->unk_offset` */
#define M2C_FIELD(expr, type_ptr, offset) (*(type_ptr) ((s8*) (expr) + (offset)))
/* Bitwise (reinterpret) cast */
#define M2C_BITWISE(type, expr) ((type) (expr))
/* Unaligned reads */
#define M2C_LWL(expr) (expr)
#define M2C_FIRST3BYTES(expr) (expr)
#define M2C_UNALIGNED32(expr) (expr)
/* Unhandled instructions */
#define M2C_ERROR(desc) (0)
#define M2C_TRAP_IF(cond) (0)
#define M2C_BREAK() (0)
#define M2C_SYNC() (0)
/* Carry bit from partially-implemented instructions */
#define M2C_CARRY 0
/* Memcpy patterns */
#define M2C_MEMCPY_ALIGNED memcpy
#define M2C_MEMCPY_UNALIGNED memcpy
/// A label in a jump table
typedef void (*jmp_t)(void);
/// A jump table
typedef jmp_t jtbl_t[];
#define NOT_IMPLEMENTED asm { nop }
#define UNK_T M2C_UNK
#define UNK_RET M2C_UNK
#define UNK_PARAMS
#define UNK_SIZE_ARRAY [0]
#define U32_TO_F32 4503599627370496.0
#define S32_TO_F32 4503601774854144.0
#define ASM
#define UNUSED
#define PAD_STACK(bytes) do { UNUSED unsigned char _[(bytes)]; } while (0)
/// @warning Creates fake @c .rodata entries!
#define FORCE_PAD_STACK(bytes) do { UNUSED unsigned char _[(bytes)] = { 0 }; } while (0)
#define FORCE_PAD_STACK_8 do { UNUSED u64 _0 = 0; } while (0)
#define FORCE_PAD_STACK_16 do { UNUSED u64 _0 = 0, _1 = 0; } while (0)
#define FORCE_PAD_STACK_32 do { UNUSED u64 _0 = 0, _1 = 0, _2 = 0, _3 = 0; } while (0)
#define STDARG_H
typedef struct {
char gpr;
char fpr;
char reserved[2];
char* input_arg_area;
char* reg_save_area;
} __va_list[1];
typedef __va_list va_list;
void* __va_arg(va_list v_list, unsigned char type);
#define va_start(ap, fmt) ((void) fmt, __builtin_va_info(&ap))
#define va_arg(ap, t) (*((t*) __va_arg(ap, _var_arg_typeof(t))))
#define va_end(ap) (void) 0
/* 323CF0 */ M2C_UNK __stdio_atexit();
/* 323CF4 */ int sprintf(char* s, const char* format, ...);
/* 323DC8 */ int vsprintf(char* s, const char* format, va_list arg);
/* 323E38 */ int vprintf(const char* format, va_list arg);
/* 323EB4 */ int printf(const char*, ...);
/* 323F80 */ M2C_UNK __StringWrite();
/* 323FEC */ M2C_UNK __FileWrite();
/* 324044 */ M2C_UNK __pformatter();
/* 324674 */ M2C_UNK float2str();
/* 324CAC */ M2C_UNK round_decimal();
/* 324DE0 */ M2C_UNK longlong2str();
/* 3250C0 */ M2C_UNK long2str();
/* 3252E4 */ M2C_UNK parse_format();
#define _RAND_H_
void srand(unsigned int seed);
int rand(void);
#define _MSL_COMMON_SCANF_H
enum __ReadProcActions {
__GetAChar,
__UngetAChar,
__TestForError
};
enum __WReadProcActions {
__GetAwChar,
__UngetAwChar,
__TestForwcsError
};
typedef struct {
char* CharStr;
size_t MaxCharCount;
size_t CharsWritten;
} __OutStrCtrl;
typedef struct {
char* NextChar;
int NullCharDetected;
} __InStrCtrl;
typedef struct {
wchar_t* wCharStr;
size_t MaxCharCount;
size_t CharsWritten;
} __wOutStrCtrl;
typedef struct {
wchar_t* wNextChar;
int wNullCharDetected;
} __wInStrCtrl;
#define MSL_STRING_H
char* strncpy(char* dst, const char* src,
unsigned long n);
int __StringRead(void* isc, int ch, int Action);
char* strchr(const char* str, int chr);
int strncmp(const char* str1, const char* str2, unsigned long n);
int strcmp(const char* str1, const char* str2);
char* strcpy(char* dst, const char* src);
size_t strlen(const char* s);
#define _MSL_COMMON_STRTOUL_H
long strtol(const char* str, char** end, int base);
unsigned long strtoul(const char* str, char** end, int base);
unsigned long __strtoul(int base, int max_width,
int (*ReadProc)(void*, int, int), void* ReadProcArg,
int* chars_scanned, int* negative, int* overflow);
#define MSL_TRIGF_H
float acosf(float);
float asinf(float);
float atan2f(float y, float x);
float atanf(float);
float cosf(float);
float sinf(float);
float tanf(float);
#define _WCHAR_IO_H_
/// @file
/// @todo Delete this.
#define _common_structs_h_
#define DOLPHIN_GX_FORWARD_H
#define DOLPHIN_GXENUM_H
typedef u8 GXBool;
#define GX_FALSE ((GXBool) 0)
#define GX_TRUE ((GXBool) 1)
#define GX_ENABLE ((GXBool) 1)
#define GX_DISABLE ((GXBool) 0)
typedef enum {
GX_PERSPECTIVE,
GX_ORTHOGRAPHIC,
} GXProjectionType;
typedef enum {
GX_NEVER,
GX_LESS,
GX_EQUAL,
GX_LEQUAL,
GX_GREATER,
GX_NEQUAL,
GX_GEQUAL,
GX_ALWAYS,
} GXCompare;
typedef enum {
GX_AOP_AND,
GX_AOP_OR,
GX_AOP_XOR,
GX_AOP_XNOR,
GX_MAX_ALPHAOP,
} GXAlphaOp;
typedef enum {
GX_ZC_LINEAR,
GX_ZC_NEAR,
GX_ZC_MID,
GX_ZC_FAR,
} GXZFmt16;
typedef enum {
GX_GM_1_0,
GX_GM_1_7,
GX_GM_2_2,
} GXGamma;
typedef enum {
GX_PF_RGB8_Z24,
GX_PF_RGBA6_Z24,
GX_PF_RGB565_Z16,
GX_PF_Z24,
GX_PF_Y8,
GX_PF_U8,
GX_PF_V8,
GX_PF_YUV420,
} GXPixelFmt;
typedef enum {
GX_QUADS = 0x80,
GX_TRIANGLES = 0x90,
GX_TRIANGLESTRIP = 0x98,
GX_TRIANGLEFAN = 0xA0,
GX_LINES = 0xA8,
GX_LINESTRIP = 0xB0,
GX_POINTS = 0xB8,
} GXPrimitive;
typedef enum {
GX_VTXFMT0,
GX_VTXFMT1,
GX_VTXFMT2,
GX_VTXFMT3,
GX_VTXFMT4,
GX_VTXFMT5,
GX_VTXFMT6,
GX_VTXFMT7,
GX_MAX_VTXFMT,
} GXVtxFmt;
typedef enum GXAttr {
GX_VA_PNMTXIDX,
GX_VA_TEX0MTXIDX,
GX_VA_TEX1MTXIDX,
GX_VA_TEX2MTXIDX,
GX_VA_TEX3MTXIDX,
GX_VA_TEX4MTXIDX,
GX_VA_TEX5MTXIDX,
GX_VA_TEX6MTXIDX,
GX_VA_TEX7MTXIDX,
GX_VA_POS,
GX_VA_NRM,
GX_VA_CLR0,
GX_VA_CLR1,
GX_VA_TEX0,
GX_VA_TEX1,
GX_VA_TEX2,
GX_VA_TEX3,
GX_VA_TEX4,
GX_VA_TEX5,
GX_VA_TEX6,
GX_VA_TEX7,
GX_POS_MTX_ARRAY,
GX_NRM_MTX_ARRAY,
GX_TEX_MTX_ARRAY,
GX_LIGHT_ARRAY,
GX_VA_NBT,
GX_VA_MAX_ATTR,
GX_VA_NULL = 0xFF,
} GXAttr;
typedef enum GXAttrType {
GX_NONE,
GX_DIRECT,
GX_INDEX8,
GX_INDEX16,
} GXAttrType;
#define _GX_TF_CTF 0x20
#define _GX_TF_ZTF 0x10
typedef enum {
GX_TF_I4 = 0x0,
GX_TF_I8 = 0x1,
GX_TF_IA4 = 0x2,
GX_TF_IA8 = 0x3,
GX_TF_RGB565 = 0x4,
GX_TF_RGB5A3 = 0x5,
GX_TF_RGBA8 = 0x6,
GX_TF_CMPR = 0xE,
GX_CTF_R4 = 0x0 | 0x20,
GX_CTF_RA4 = 0x2 | 0x20,
GX_CTF_RA8 = 0x3 | 0x20,
GX_CTF_YUVA8 = 0x6 | 0x20,
GX_CTF_A8 = 0x7 | 0x20,
GX_CTF_R8 = 0x8 | 0x20,
GX_CTF_G8 = 0x9 | 0x20,
GX_CTF_B8 = 0xA | 0x20,
GX_CTF_RG8 = 0xB | 0x20,
GX_CTF_GB8 = 0xC | 0x20,
GX_TF_Z8 = 0x1 | 0x10,
GX_TF_Z16 = 0x3 | 0x10,
GX_TF_Z24X8 = 0x6 | 0x10,
GX_CTF_Z4 = 0x0 | 0x10 | 0x20,
GX_CTF_Z8M = 0x9 | 0x10 | 0x20,
GX_CTF_Z8L = 0xA | 0x10 | 0x20,
GX_CTF_Z16L = 0xC | 0x10 | 0x20,
GX_TF_A8 = GX_CTF_A8,
} GXTexFmt;
typedef enum {
GX_TF_C4 = 0x8,
GX_TF_C8 = 0x9,
GX_TF_C14X2 = 0xA,
} GXCITexFmt;
typedef enum {
GX_CLAMP,
GX_REPEAT,
GX_MIRROR,
GX_MAX_TEXWRAPMODE,
} GXTexWrapMode;
typedef enum {
GX_NEAR,
GX_LINEAR,
GX_NEAR_MIP_NEAR,
GX_LIN_MIP_NEAR,
GX_NEAR_MIP_LIN,
GX_LIN_MIP_LIN,
} GXTexFilter;
typedef enum {
GX_ANISO_1,
GX_ANISO_2,
GX_ANISO_4,
GX_MAX_ANISOTROPY,
} GXAnisotropy;
typedef enum {
GX_TLUT0 = 0,
GX_TLUT1,
GX_TLUT2,
GX_TLUT3,
GX_TLUT4,
GX_TLUT5,
GX_TLUT6,
GX_TLUT7,
GX_TLUT8,
GX_TLUT9,
GX_TLUT10,
GX_TLUT11,
GX_TLUT12,
GX_TLUT13,
GX_TLUT14,
GX_TLUT15,
GX_BIGTLUT0,
GX_BIGTLUT1,
GX_BIGTLUT2,
GX_BIGTLUT3
} GXTlut;
typedef enum {
GX_TL_IA8 = 0x0,
GX_TL_RGB565 = 0x1,
GX_TL_RGB5A3 = 0x2,
GX_MAX_TLUTFMT
} GXTlutFmt;
typedef enum {
GX_TEXMAP0,
GX_TEXMAP1,
GX_TEXMAP2,
GX_TEXMAP3,
GX_TEXMAP4,
GX_TEXMAP5,
GX_TEXMAP6,
GX_TEXMAP7,
GX_MAX_TEXMAP,
GX_TEXMAP_NULL = 0xFF,
GX_TEX_DISABLE = 0x100,
} GXTexMapID;
typedef enum {
GX_TEXCOORD0,
GX_TEXCOORD1,
GX_TEXCOORD2,
GX_TEXCOORD3,
GX_TEXCOORD4,
GX_TEXCOORD5,
GX_TEXCOORD6,
GX_TEXCOORD7,
GX_MAX_TEXCOORD,
GX_TEXCOORD_NULL = 0xFF,
} GXTexCoordID;
typedef enum {
GX_TEVSTAGE0,
GX_TEVSTAGE1,
GX_TEVSTAGE2,
GX_TEVSTAGE3,
GX_TEVSTAGE4,
GX_TEVSTAGE5,
GX_TEVSTAGE6,
GX_TEVSTAGE7,
GX_TEVSTAGE8,
GX_TEVSTAGE9,
GX_TEVSTAGE10,
GX_TEVSTAGE11,
GX_TEVSTAGE12,
GX_TEVSTAGE13,
GX_TEVSTAGE14,
GX_TEVSTAGE15,
GX_MAX_TEVSTAGE,
} GXTevStageID;
typedef enum {
GX_MODULATE,
GX_DECAL,
GX_BLEND,
GX_REPLACE,
GX_PASSCLR,
} GXTevMode;
typedef enum {
GX_MTX3x4,
GX_MTX2x4,
} GXTexMtxType;
typedef enum {
GX_TG_MTX3x4,
GX_TG_MTX2x4,
GX_TG_BUMP0,
GX_TG_BUMP1,
GX_TG_BUMP2,
GX_TG_BUMP3,
GX_TG_BUMP4,
GX_TG_BUMP5,
GX_TG_BUMP6,
GX_TG_BUMP7,
GX_TG_SRTG,
} GXTexGenType;
typedef enum {
GX_PNMTX0 = 0,
GX_PNMTX1 = 3,
GX_PNMTX2 = 6,
GX_PNMTX3 = 9,
GX_PNMTX4 = 12,
GX_PNMTX5 = 15,
GX_PNMTX6 = 18,
GX_PNMTX7 = 21,
GX_PNMTX8 = 24,
GX_PNMTX9 = 27,
} GXPosNrmMtx;
typedef enum {
GX_TEXMTX0 = 30,
GX_TEXMTX1 = 33,
GX_TEXMTX2 = 36,
GX_TEXMTX3 = 39,
GX_TEXMTX4 = 42,
GX_TEXMTX5 = 45,
GX_TEXMTX6 = 48,
GX_TEXMTX7 = 51,
GX_TEXMTX8 = 54,
GX_TEXMTX9 = 57,
GX_IDENTITY = 60,
} GXTexMtx;
typedef enum {
GX_COLOR0,
GX_COLOR1,
GX_ALPHA0,
GX_ALPHA1,
GX_COLOR0A0,
GX_COLOR1A1,
GX_COLOR_ZERO,
GX_ALPHA_BUMP,
GX_ALPHA_BUMPN,
GX_COLOR_NULL = 0xFF,
} GXChannelID;
typedef enum {
GX_TG_POS,
GX_TG_NRM,
GX_TG_BINRM,
GX_TG_TANGENT,
GX_TG_TEX0,
GX_TG_TEX1,
GX_TG_TEX2,
GX_TG_TEX3,
GX_TG_TEX4,
GX_TG_TEX5,
GX_TG_TEX6,
GX_TG_TEX7,
GX_TG_TEXCOORD0,
GX_TG_TEXCOORD1,
GX_TG_TEXCOORD2,
GX_TG_TEXCOORD3,
GX_TG_TEXCOORD4,
GX_TG_TEXCOORD5,
GX_TG_TEXCOORD6,
GX_TG_COLOR0,
GX_TG_COLOR1,
} GXTexGenSrc;
typedef enum {
GX_BM_NONE,
GX_BM_BLEND,
GX_BM_LOGIC,
GX_BM_SUBTRACT,
GX_MAX_BLENDMODE,
} GXBlendMode;
typedef enum {
GX_BL_ZERO,
GX_BL_ONE,
GX_BL_SRCCLR,
GX_BL_INVSRCCLR,
GX_BL_SRCALPHA,
GX_BL_INVSRCALPHA,
GX_BL_DSTALPHA,
GX_BL_INVDSTALPHA,
GX_BL_DSTCLR = GX_BL_SRCCLR,
GX_BL_INVDSTCLR = GX_BL_INVSRCCLR,
} GXBlendFactor;
typedef enum {
GX_LO_CLEAR,
GX_LO_AND,
GX_LO_REVAND,
GX_LO_COPY,
GX_LO_INVAND,
GX_LO_NOOP,
GX_LO_XOR,
GX_LO_OR,
GX_LO_NOR,
GX_LO_EQUIV,
GX_LO_INV,
GX_LO_REVOR,
GX_LO_INVCOPY,
GX_LO_INVOR,
GX_LO_NAND,
GX_LO_SET,
} GXLogicOp;
typedef enum {
GX_POS_XY = 0,
GX_POS_XYZ = 1,
GX_NRM_XYZ = 0,
GX_NRM_NBT = 1,
GX_NRM_NBT3 = 2,
GX_CLR_RGB = 0,
GX_CLR_RGBA = 1,
GX_TEX_S = 0,
GX_TEX_ST = 1,
} GXCompCnt;
typedef enum {
GX_U8 = 0,
GX_S8 = 1,
GX_U16 = 2,
GX_S16 = 3,
GX_F32 = 4,
GX_RGB565 = 0,
GX_RGB8 = 1,
GX_RGBX8 = 2,
GX_RGBA4 = 3,
GX_RGBA6 = 4,
GX_RGBA8 = 5,
} GXCompType;
typedef enum {
GX_PTTEXMTX0 = 64,
GX_PTTEXMTX1 = 67,
GX_PTTEXMTX2 = 70,
GX_PTTEXMTX3 = 73,
GX_PTTEXMTX4 = 76,
GX_PTTEXMTX5 = 79,
GX_PTTEXMTX6 = 82,
GX_PTTEXMTX7 = 85,
GX_PTTEXMTX8 = 88,
GX_PTTEXMTX9 = 91,
GX_PTTEXMTX10 = 94,
GX_PTTEXMTX11 = 97,
GX_PTTEXMTX12 = 100,
GX_PTTEXMTX13 = 103,
GX_PTTEXMTX14 = 106,
GX_PTTEXMTX15 = 109,
GX_PTTEXMTX16 = 112,
GX_PTTEXMTX17 = 115,
GX_PTTEXMTX18 = 118,
GX_PTTEXMTX19 = 121,
GX_PTIDENTITY = 125,
} GXPTTexMtx;
typedef enum {
GX_TEVPREV,
GX_TEVREG0,
GX_TEVREG1,
GX_TEVREG2,
GX_MAX_TEVREG,
} GXTevRegID;
typedef enum {
GX_DF_NONE,
GX_DF_SIGN,
GX_DF_CLAMP,
} GXDiffuseFn;
typedef enum {
GX_SRC_REG,
GX_SRC_VTX,
} GXColorSrc;
typedef enum {
GX_AF_SPEC,
GX_AF_SPOT,
GX_AF_NONE,
} GXAttnFn;
typedef enum {
GX_LIGHT0 = 0x001,
GX_LIGHT1 = 0x002,
GX_LIGHT2 = 0x004,
GX_LIGHT3 = 0x008,
GX_LIGHT4 = 0x010,
GX_LIGHT5 = 0x020,
GX_LIGHT6 = 0x040,
GX_LIGHT7 = 0x080,
GX_MAX_LIGHT = 9,
GX_LIGHT_AMBIENT = 0x100,
GX_LIGHT_NULL = 0,
} GXLightID;
typedef enum {
GX_TO_ZERO,
GX_TO_SIXTEENTH,
GX_TO_EIGHTH,
GX_TO_FOURTH,
GX_TO_HALF,
GX_TO_ONE,
GX_MAX_TEXOFFSET,
} GXTexOffset;
typedef enum {
GX_SP_OFF,
GX_SP_FLAT,
GX_SP_COS,
GX_SP_COS2,
GX_SP_SHARP,
GX_SP_RING1,
GX_SP_RING2,
} GXSpotFn;
typedef enum {
GX_DA_OFF,
GX_DA_GENTLE,
GX_DA_MEDIUM,
GX_DA_STEEP,
} GXDistAttnFn;
typedef enum {
GX_CULL_NONE,
GX_CULL_FRONT,
GX_CULL_BACK,
GX_CULL_ALL
} GXCullMode;
typedef enum {
GX_TEV_SWAP0 = 0,
GX_TEV_SWAP1,
GX_TEV_SWAP2,
GX_TEV_SWAP3,
GX_MAX_TEVSWAP
} GXTevSwapSel;
typedef enum {
GX_CH_RED = 0,
GX_CH_GREEN,
GX_CH_BLUE,
GX_CH_ALPHA
} GXTevColorChan;
typedef enum _GXFogType {
GX_FOG_NONE = 0,
GX_FOG_LIN = 2,
GX_FOG_EXP = 4,
GX_FOG_EXP2 = 5,
GX_FOG_REVEXP = 6,
GX_FOG_REVEXP2 = 7
} GXFogType;
typedef enum {
GX_CC_CPREV,
GX_CC_APREV,
GX_CC_C0,
GX_CC_A0,
GX_CC_C1,
GX_CC_A1,
GX_CC_C2,
GX_CC_A2,
GX_CC_TEXC,
GX_CC_TEXA,
GX_CC_RASC,
GX_CC_RASA,
GX_CC_ONE,
GX_CC_HALF,
GX_CC_KONST,
GX_CC_ZERO
} GXTevColorArg;
typedef enum {
GX_CA_APREV,
GX_CA_A0,
GX_CA_A1,
GX_CA_A2,
GX_CA_TEXA,
GX_CA_RASA,
GX_CA_KONST,
GX_CA_ZERO
} GXTevAlphaArg;
typedef enum {
GX_TEV_ADD = 0,
GX_TEV_SUB = 1,
GX_TEV_COMP_R8_GT = 8,
GX_TEV_COMP_R8_EQ = 9,
GX_TEV_COMP_GR16_GT = 10,
GX_TEV_COMP_GR16_EQ = 11,
GX_TEV_COMP_BGR24_GT = 12,
GX_TEV_COMP_BGR24_EQ = 13,
GX_TEV_COMP_RGB8_GT = 14,
GX_TEV_COMP_RGB8_EQ = 15,
GX_TEV_COMP_A8_GT = GX_TEV_COMP_RGB8_GT,
GX_TEV_COMP_A8_EQ = GX_TEV_COMP_RGB8_EQ
} GXTevOp;
typedef enum {
GX_TB_ZERO,
GX_TB_ADDHALF,
GX_TB_SUBHALF,
GX_MAX_TEVBIAS
} GXTevBias;
typedef enum {
GX_CS_SCALE_1,
GX_CS_SCALE_2,
GX_CS_SCALE_4,
GX_CS_DIVIDE_2,
GX_MAX_TEVSCALE
} GXTevScale;
typedef enum {
GX_TEV_KCSEL_1 = 0x00,
GX_TEV_KCSEL_7_8 = 0x01,
GX_TEV_KCSEL_3_4 = 0x02,
GX_TEV_KCSEL_5_8 = 0x03,
GX_TEV_KCSEL_1_2 = 0x04,
GX_TEV_KCSEL_3_8 = 0x05,
GX_TEV_KCSEL_1_4 = 0x06,
GX_TEV_KCSEL_1_8 = 0x07,
GX_TEV_KCSEL_K0 = 0x0C,
GX_TEV_KCSEL_K1 = 0x0D,
GX_TEV_KCSEL_K2 = 0x0E,
GX_TEV_KCSEL_K3 = 0x0F,
GX_TEV_KCSEL_K0_R = 0x10,
GX_TEV_KCSEL_K1_R = 0x11,
GX_TEV_KCSEL_K2_R = 0x12,
GX_TEV_KCSEL_K3_R = 0x13,
GX_TEV_KCSEL_K0_G = 0x14,
GX_TEV_KCSEL_K1_G = 0x15,
GX_TEV_KCSEL_K2_G = 0x16,
GX_TEV_KCSEL_K3_G = 0x17,
GX_TEV_KCSEL_K0_B = 0x18,
GX_TEV_KCSEL_K1_B = 0x19,
GX_TEV_KCSEL_K2_B = 0x1A,
GX_TEV_KCSEL_K3_B = 0x1B,
GX_TEV_KCSEL_K0_A = 0x1C,
GX_TEV_KCSEL_K1_A = 0x1D,
GX_TEV_KCSEL_K2_A = 0x1E,
GX_TEV_KCSEL_K3_A = 0x1F
} GXTevKColorSel;
typedef enum {
GX_TEV_KASEL_1 = 0x00,
GX_TEV_KASEL_7_8 = 0x01,
GX_TEV_KASEL_3_4 = 0x02,
GX_TEV_KASEL_5_8 = 0x03,
GX_TEV_KASEL_1_2 = 0x04,
GX_TEV_KASEL_3_8 = 0x05,
GX_TEV_KASEL_1_4 = 0x06,
GX_TEV_KASEL_1_8 = 0x07,
GX_TEV_KASEL_K0_R = 0x10,
GX_TEV_KASEL_K1_R = 0x11,
GX_TEV_KASEL_K2_R = 0x12,
GX_TEV_KASEL_K3_R = 0x13,
GX_TEV_KASEL_K0_G = 0x14,
GX_TEV_KASEL_K1_G = 0x15,
GX_TEV_KASEL_K2_G = 0x16,
GX_TEV_KASEL_K3_G = 0x17,
GX_TEV_KASEL_K0_B = 0x18,
GX_TEV_KASEL_K1_B = 0x19,
GX_TEV_KASEL_K2_B = 0x1A,
GX_TEV_KASEL_K3_B = 0x1B,
GX_TEV_KASEL_K0_A = 0x1C,
GX_TEV_KASEL_K1_A = 0x1D,
GX_TEV_KASEL_K2_A = 0x1E,
GX_TEV_KASEL_K3_A = 0x1F
} GXTevKAlphaSel;
typedef enum {
GX_KCOLOR0 = 0,
GX_KCOLOR1,
GX_KCOLOR2,
GX_KCOLOR3,
GX_MAX_KCOLOR
} GXTevKColorID;
typedef enum {
GX_ZT_DISABLE,
GX_ZT_ADD,
GX_ZT_REPLACE,
GX_MAX_ZTEXOP,
} GXZTexOp;
typedef enum {
GX_ITF_8,
GX_ITF_5,
GX_ITF_4,
GX_ITF_3,
GX_MAX_ITFORMAT,
} GXIndTexFormat;
typedef enum {
GX_ITB_NONE,
GX_ITB_S,
GX_ITB_T,
GX_ITB_ST,
GX_ITB_U,
GX_ITB_SU,
GX_ITB_TU,
GX_ITB_STU,
GX_MAX_ITBIAS,
} GXIndTexBiasSel;
typedef enum {
GX_ITBA_OFF,
GX_ITBA_S,
GX_ITBA_T,
GX_ITBA_U,
GX_MAX_ITBALPHA,
} GXIndTexAlphaSel;
typedef enum {
GX_ITM_OFF,
GX_ITM_0,
GX_ITM_1,
GX_ITM_2,
GX_ITM_S0 = 5,
GX_ITM_S1,
GX_ITM_S2,
GX_ITM_T0 = 9,
GX_ITM_T1,
GX_ITM_T2,
} GXIndTexMtxID;
typedef enum {
GX_ITW_OFF,
GX_ITW_256,
GX_ITW_128,
GX_ITW_64,
GX_ITW_32,
GX_ITW_16,
GX_ITW_0,
GX_MAX_ITWRAP,
} GXIndTexWrap;
typedef enum {
GX_INDTEXSTAGE0,
GX_INDTEXSTAGE1,
GX_INDTEXSTAGE2,
GX_INDTEXSTAGE3,
GX_MAX_INDTEXSTAGE,
} GXIndTexStageID;
typedef enum {
GX_CLIP_ENABLE = 0,
GX_CLIP_DISABLE = 1,
} GXClipMode;
typedef enum {
GX_TC_LINEAR,
GX_TC_GE,
GX_TC_EQ,
GX_TC_LE,
GX_MAX_TEVCLAMPMODE,
} GXTevClampMode;
// todo: clean up invocations via defines or inlines
/* for example,
static inline void WriteBP(u32 i) {
WGPIPE.u8 = GX_LOAD_BP_REG;
WGPIPE.u32 = i;
} */
// most or all GX commands follow a pattern of fixed args
typedef enum {
GX_NOP = 0x00,
GX_DRAW_QUADS = 0x80,
GX_DRAW_TRIANGLES = 0x90,
GX_DRAW_TRIANGLE_STRIP = 0x98,
GX_DRAW_TRIANGLE_FAN = 0xA0,
GX_DRAW_LINES = 0xA8,
GX_DRAW_LINE_STRIP = 0xB0,
GX_DRAW_POINTS = 0xB8,
GX_LOAD_BP_REG = 0x61,
GX_LOAD_CP_REG = 0x08,
GX_LOAD_XF_REG = 0x10,
GX_LOAD_INDX_A = 0x20,
GX_LOAD_INDX_B = 0x28,
GX_LOAD_INDX_C = 0x30,
GX_LOAD_INDX_D = 0x38,
GX_CMD_CALL_DL = 0x40,
GX_CMD_INVL_VC = 0x48,
GX_OPCODE_MASK = 0xF8,
GX_VAT_MASK = 0x07,
} GXCommand;
typedef enum {
GX_CLAMP_NONE,
GX_CLAMP_TOP,
GX_CLAMP_BOTTOM
} GXFBClamp;
typedef struct GXTexObj GXTexObj;
typedef struct GXTlutObj GXTlutObj;
typedef struct GXColor GXColor;
typedef struct GXColorS10 GXColorS10;
typedef struct GXRenderModeObj GXRenderModeObj;
typedef struct GXContexts GXContexts;
typedef struct GXGPFifo GXGPFifo;
typedef struct GXSettings GXSettings;
typedef struct GXContext GXContext;
typedef struct GXFifoObj GXFifoObj;
typedef void (*GXDrawDoneCallback)(void);
/// @todo Signature unknown.
typedef void* (*GXTexRegionCallback)(void);
static inline void GXEnd(void) {}
#define DOLPHIN_GX_TYPES_H
#define GX_FIFO_OBJSIZE 128
struct GXFifoObj {
u8 pad[128];
};
struct GXRenderModeObj {
u32 viTVMode;
u16 fbWidth;
u16 efbHeight;
u16 xfbHeight;
u16 viXOrigin;
u16 viYOrigin;
u16 viWidth;
u16 viHeight;
u32 xfbMode;
u8 field_rendering;
u8 aa;
u8 sample_pattern[12][2];
u8 vfilter[7];
};
struct GXColor {
u8 r, g, b, a;
};
struct GXColorS10 {
s16 r, g, b, a;
};
#define GX_MAX_Z24 0x00ffffff
#define DOLPHIN_MTX_TYPES_H
#define DOLPHIN_MTX_FORWARD_H
typedef f32 Mtx[3][4];
typedef f32 (*MtxPtr)[4];
typedef f32 Mtx44[4][4];
typedef f32 (*Mtx44Ptr)[4];
typedef struct IntVec2 IntVec2;
typedef struct IntVec3 IntVec3;
typedef struct S16Vec3 S16Vec3;
typedef struct S32Vec2 S32Vec2;
typedef struct S32Vec3 S32Vec3;
typedef struct S8Vec3 S8Vec3;
typedef struct U8Vec4 U8Vec4;
typedef struct Vec2 Vec2;
typedef struct Vec3 Vec3;
typedef struct Vec4 Quaternion, Vec4;
struct Vec2 {
f32 x, y;
};
struct Vec3 {
f32 x, y, z;
};
struct Vec4 {
f32 x, y, z, w;
};
struct U8Vec4 {
u8 x, y, z, w;
};
struct S8Vec3 {
s8 x, y, z;
};
struct S16Vec3 {
s16 x, y, z;
};
struct S32Vec2 {
s32 x, y;
};
struct S32Vec3 {
s32 x, y, z;
};
struct IntVec2 {
int x, y;
};
struct IntVec3 {
int x, y, z;
};
// Most of these should be moved to independent headers once they are created
// SOUND EFFECTS
#define SFX_VOLUME_MAX 0x7FU
#define SFX_PAN_MID 0x40U
// HSD_PAD
/// @todo @c PascalCase members
typedef u32 HSD_Pad;
#define HSD_PAD_DPADLEFT (1 << 0)
#define HSD_PAD_DPADRIGHT (1 << 1)
#define HSD_PAD_DPADDOWN (1 << 2)
#define HSD_PAD_DPADUP (1 << 3)
#define HSD_PAD_Z (1 << 4)
#define HSD_PAD_R (1 << 5)
#define HSD_PAD_L (1 << 6)
#define HSD_PAD_7 (1 << 7)
/// @remarks Also covers Z-Button macro in-game.
#define HSD_PAD_A (1 << 8)
#define HSD_PAD_B (1 << 9)
#define HSD_PAD_X (1 << 10)
#define HSD_PAD_Y (1 << 11)
#define HSD_PAD_START (1 << 12)
/// Digital input of either L or R
#define HSD_PAD_LR (1 << 31)
#define HSD_PAD_AB (HSD_PAD_A | HSD_PAD_B)
#define HSD_PAD_XY (HSD_PAD_X | HSD_PAD_Y)
// COLLISION FLAGS
// From Ness's Yo-Yo collision check
/// @todo These (and #CollData::env_flags) should be a bitfield struct
#define MPCOLL_RIGHTWALL 0x3F ///< Bits 0-5
#define MPCOLL_FLAGS_B05 (1 << 5)
#define MPCOLL_LEFTWALL 0xFC0 ///< Bits 6-11
#define MPCOLL_WALL (MPCOLL_RIGHTWALL | MPCOLL_LEFTWALL) ///< Bits 0-11
#define MPCOLL_FLAGS_B11 (1 << 11)
#define MPCOLL_CEIL 0x6000 ///< Bits 13-14
#define MPCOLL_FLAGS_B14 (1 << 14)
#define MPCOLL_UNK 0x18000 // Floor??
#define MPCOLL_GRPUSH (1 << 15)
#define MPCOLL_FLAGS_B16 (1 << 16)
#define MPCOLL_FLAGS_B20 (1 << 20) // 0x100000
#define MPCOLL_FLAGS_B21 (1 << 21) // 0x200000
#define MPCOLL_FLAGS_B23 (1 << 23)
#define MPCOLL_FLAGS_B24 (1 << 24)
#define MPCOLL_FLAGS_B25 (1 << 25)
typedef union UnkFlagStruct {
u8 u8;
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
} UnkFlagStruct;
typedef struct ColorOverlay {
s32 x0_timer; // 0x0
s32 x4_pri; // 0x4 this colanims priority, lower = will persist
s32* x8_ptr1; // 0x8
s32 xC_loop; // 0xc
s32* x10_ptr2; // 0x10
s32 x14; // 0x14
s32* x18_alloc; // 0x18
s32 x1c; // 0x1c
s32 x20; // 0x20
s32 x24; // 0x24
s32 x28_colanim; // 0x28, id for the color animation in effect
GXColor x2C_hex; // 0x2C
f32 x30_color_red; // 0x30
f32 x34_color_green; // 0x34
f32 x38_color_blue; // 0x38
f32 x3C_color_alpha; // 0x3C
f32 x40_colorblend_red; // 0x40
f32 x44_colorblend_green; // 0x44
f32 x48_colorblend_blue; // 0x48
f32 x4C_colorblend_alpha; // 0x4C
GXColor x50_light_color; // 0x50
f32 x54_light_red; // 0x54
f32 x58_light_green; // 0x58
f32 x5C_light_blue; // 0x5C
f32 x60_light_alpha; // 0x60
f32 x64_lightblend_red; // 0x64
f32 x68_lightblend_green; // 0x68
f32 x6C_lightblend_blue; // 0x6c
f32 x70_lightblend_alpha; // 0x70
f32 x74_light_angle; // 0x74
f32 x78_light_unk; // 0x78
u8 x7C_color_enable : 1; // 0x7c, 0x80
u8 x7C_flag2 : 1; // 0x7c, 0x40
u8 x7C_light_enable : 1; // 0x7c, 0x20
u8 x7C_flag4 : 1; // 0x7c, 0x10
u8 x7C_flag5 : 1; // 0x7c, 0x08
u8 x7C_flag6 : 1; // 0x7c, 0x04
u8 x7C_flag7 : 1; // 0x7c, 0x02
u8 x7C_flag8 : 1; // 0x7c, 0x01
} ColorOverlay;
struct r13_ColAnimStruct {
u32 x0_unk;
u8 x4_unk;
u8 x5_unk;
u8 x6_unk;
u8 x7_unk;
};
typedef enum GroundOrAir {
GA_Ground,
GA_Air,
} GroundOrAir;
#define _STDIO_H_
typedef struct {
uint open_mode : 2;
uint io_mode : 3;
uint buffer_mode : 2;
uint file_kind : 3;
uint file_orientation : 2;
uint binary_io : 1;
} __file_modes;
int puts(const char* s);
int printf(const char*, ...);
int sprintf(char* s, const char* format, ...);
int vprintf(const char* format, va_list arg);
int vsprintf(char* s, const char* format, va_list arg);
int fwide(FILE* stream, int mode);
#define GALE01_3276A8
/* 3276A8 */ enum_t TRKInitializeDispatcher(void);
/* 3276BC */ M2C_UNK TRKDispatchMessage();
#define METROTRK_DOLPHIN_TRK_H
void EnableMetroTRKInterrupts(void);
#define GALE01_32AC28
/* 32AC28 */ M2C_UNK TRKLoadContext();
/* 32ACB0 */ M2C_UNK TRKEXICallBack();
/* 32ACE8 */ M2C_UNK InitMetroTRKCommTable();
/* 32ADD0 */ M2C_UNK TRKUARTInterruptHandler();
/* 32ADD4 */ M2C_UNK TRKInitializeIntDrivenUART();
/* 32AE14 */ M2C_UNK EnableEXI2Interrupts();
/* 32AE44 */ M2C_UNK TRKPollUART();
/* 32AE74 */ M2C_UNK TRK_ReadUARTN();
/* 32AEB8 */ M2C_UNK TRK_WriteUARTN();
/* 32AEFC */ M2C_UNK ReserveEXI2Port();
/* 32AF2C */ M2C_UNK UnreserveEXI2Port();
/* 32AF5C */ M2C_UNK TRK_board_display();
#define __MEM_TRK_H__
void* TRK_memcpy(void* dst, const void* src, unsigned long n);
void* TRK_memset(void* dst, int val, unsigned long n);
#define GALE01_32A868
/* 32A868 */ M2C_UNK TRKSaveExtended1Block();
/* 32AA20 */ M2C_UNK TRKRestoreExtended1Block();
/* 32ABD8 */ int TRKTargetCPUMinorType(void);
#define GALE01_326C94
/* 326C94 */ void TRKSetBufferUsed(M2C_UNK arg0, int arg1);
/* 326C9C */ M2C_UNK TRKInitializeMessageBuffers();
/* 326D14 */ M2C_UNK TRKGetFreeBuffer();
/* 326DB0 */ M2C_UNK TRKGetBuffer();
/* 326DDC */ M2C_UNK TRKReleaseBuffer();
/* 326E44 */ M2C_UNK TRKResetBuffer();
/* 326E84 */ M2C_UNK TRKSetBufferPosition();
/* 326EB4 */ M2C_UNK TRKAppendBuffer();
/* 326F58 */ M2C_UNK TRKReadBuffer();
/* 326FE4 */ M2C_UNK TRKAppendBuffer1_ui16();
/* 327038 */ M2C_UNK TRKAppendBuffer1_ui32();
/* 32709C */ M2C_UNK TRKAppendBuffer1_ui64();
/* 327124 */ M2C_UNK TRKAppendBuffer_ui8();
/* 32718C */ M2C_UNK TRKAppendBuffer_ui32();
/* 327208 */ M2C_UNK TRKReadBuffer1_ui8();
/* 32722C */ M2C_UNK TRKReadBuffer1_ui16();
/* 3272AC */ M2C_UNK TRKReadBuffer1_ui32();
/* 32733C */ M2C_UNK TRKReadBuffer1_ui64();
/* 3273EC */ M2C_UNK TRKReadBuffer_ui8();
/* 327460 */ M2C_UNK TRKReadBuffer_ui32();
#define GALE01_327740
/* 327740 */ M2C_UNK TRKMessageIntoReply();
/* 3277D8 */ M2C_UNK TRKSendACK();
/* 327828 */ M2C_UNK TRKStandardACK();
/* 32785C */ M2C_UNK MTRK_MsgHndlr_8032785C();
/* 327884 */ M2C_UNK MTRK_MsgHndlr_80327884();
/* 3278AC */ M2C_UNK MTRK_MsgHndlr_803278AC();
/* 3278FC */ M2C_UNK TRKDoReset();
/* 32792C */ M2C_UNK TRKDoVersions();
/* 327AB0 */ M2C_UNK TRKDoSupportMask();
/* 327B8C */ M2C_UNK TRKDoCPUType();
/* 327DD0 */ M2C_UNK TRKDoReadMemory();
/* 327FB8 */ M2C_UNK TRKDoWriteMemory();
/* 3281B4 */ M2C_UNK TRKDoReadRegisters();
/* 3283B8 */ M2C_UNK TRKDoWriteRegisters();
/* 3285C0 */ M2C_UNK TRKDoFlushCache();
/* 3286F8 */ M2C_UNK TRKDoContinue();
/* 32875C */ M2C_UNK TRKDoStep();
/* 328960 */ M2C_UNK TRKDoStop();
/* 3289E4 */ M2C_UNK TRKSuppAccessFile();
/* 328CBC */ M2C_UNK TRKRequestSend();
/* 328E60 */ bool TRKInitializeMutex(void);
/* 328E68 */ bool TRKAcquireMutex(void);
/* 328E70 */ bool TRKReleaseMutex(void);
/* 328E78 */ M2C_UNK TRKDoNotifyStopped();
#define GALE01_326AD8
/* 326AD8 */ M2C_UNK TRKInitializeNub();
/* 326BAC */ M2C_UNK TRKTerminateNub();
/* 326BD0 */ M2C_UNK TRKNubWelcome();
/* 326BF8 */ M2C_UNK TRKInitializeEndian();
/* 4A4B40 */ extern size_t MTRK_NubInit_804A4B40;
#define GALE01_3274DC
/* 3274DC */ M2C_UNK TRKTestForPacket();
/* 3275AC */ M2C_UNK TRKGetInput();
/* 327628 */ M2C_UNK TRKProcessInput();
/* 327678 */ M2C_UNK TRKInitializeSerialHandler();
/* 32769C */ bool TRKTerminateSerialHandler(void);
/* 3276A4 */ M2C_UNK usr_put_initialize();
#define GALE01_32904C
struct gTRKCPUState_t {
/* 0x000 */ char pad_0[0x80];
/* 0x080 */ s32 unk_80; /* inferred */
/* 0x084 */ char pad_84[0x3AC]; /* maybe part of unk_80[0xEC]? */
}; /* size = 0x430 */
struct { int x[1 - 2 * !(sizeof(struct gTRKCPUState_t) == 0x430)]; };;
struct gTRKState_t {
/* 0x00 */ char pad_0[0x98];
/* 0x98 */ s32 unk_98;
/* 0x9C */ char pad_9C[4];
/* 0xA0 */ s32 unk_A0; /* inferred */
}; /* size = 0xA4 */
struct { int x[1 - 2 * !(sizeof(struct gTRKState_t) == 0xA4)]; };;
/* 4A4BF0 */ extern struct gTRKState_t gTRKState;
/* 32904C */ int __TRK_get_MSR(void);
/* 329054 */ void __TRK_set_MSR(int);
/* 32905C */ M2C_UNK TRKValidMemory32();
/* 329194 */ M2C_UNK TRK_ppc_memcpy();
/* 3291D0 */ M2C_UNK TRKTargetAccessMemory();
/* 329334 */ M2C_UNK TRKTargetReadInstruction();
/* 329380 */ M2C_UNK TRKTargetAccessDefault();
/* 32947C */ M2C_UNK TRKTargetAccessFP();
/* 3295C4 */ M2C_UNK TRKTargetAccessExtended1();
/* 32973C */ M2C_UNK TRKTargetAccessExtended2();
/* 3298B8 */ M2C_UNK TRKTargetVersions();
/* 3298E0 */ M2C_UNK TRKTargetSupportMask();
/* 329984 */ M2C_UNK TRKTargetCPUType();
/* 3299EC */ M2C_UNK TRKInterruptHandler();
/* 329B80 */ M2C_UNK TRKExceptionHandler();
/* 329C1C */ M2C_UNK TRKPostInterruptEvent();
/* 329CCC */ M2C_UNK TRKInterruptHandlerEnableInterrupts();
/* 329DE4 */ M2C_UNK TRKTargetInterrupt();
/* 329E48 */ M2C_UNK TRKTargetAddStopInfo();
/* 329ED8 */ M2C_UNK TRKTargetAddExceptionInfo();
/* 329F60 */ M2C_UNK TRKTargetEnableTrace();
/* 329F9C */ M2C_UNK TRKTargetStepDone();
/* 32A020 */ M2C_UNK TRKTargetDoStep();
/* 32A090 */ M2C_UNK TRKTargetCheckStep();
/* 32A0F8 */ M2C_UNK TRKTargetSingleStep();
/* 32A13C */ M2C_UNK TRKTargetStepOutOfRange();
/* 32A184 */ s32 TRKTargetGetPC(void);
/* 32A194 */ M2C_UNK TRKTargetSupportRequest();
/* 32A284 */ M2C_UNK TRKTargetFlushCache();
/* 32A2C0 */ s32 TRKTargetStopped(void);
/* 32A2D0 */ void TRKTargetSetStopped(s32 arg0);
/* 32A2E0 */ M2C_UNK TRKTargetStop();
/* 32A308 */ M2C_UNK TRKPPCAccessSPR();
/* 32A3B8 */ M2C_UNK TRKPPCAccessPairedSingleRegister();
/* 32A430 */ M2C_UNK TRKPPCAccessFPRegister();
/* 32A5B0 */ M2C_UNK TRKPPCAccessSpecialReg();
/* 32A618 */ void TRKTargetSetInputPendingPtr(s32 arg0);
/* 4A4C98 */ extern struct gTRKCPUState_t gTRKCPUState;
#define RUNTIME_GECKO_EXCEPTIONPPC_H
typedef struct __eti_init_info {
void* eti_start;
void* eti_end;
void* code_start;
unsigned long code_size;
} __eti_init_info;
int __register_fragment(__eti_init_info*, char* TOC);
void __unregister_fragment(int fragmentID);
#define RUNTIME_GECKO_SETJMP_H
typedef struct __jmp_buf {
unsigned long pc; /* 0: saved PC */
unsigned long cr; /* 4: saved CR */
unsigned long sp; /* 8: saved SP */
unsigned long rtoc; /* 12: saved RTOC */
unsigned long reserved; /* 16: not used */
unsigned long gprs[19]; /* 20: saved R13-R31 */
double fp14; /* 96: saved FP14-FP31 */
double fp15;
double fp16;
double fp17;
double fp18;
double fp19;
double fp20;
double fp21;
double fp22;
double fp23;
double fp24;
double fp25;
double fp26;
double fp27;
double fp28;
double fp29;
double fp30;
double fp31;
double fpscr; /* 240: saved FPSCR */
} __jmp_buf;
int __setjmp(register __jmp_buf*);
void longjmp(register __jmp_buf* env, register int val);
#define RUNTIME___INIT_CPP_EXCEPTIONS_H
void __fini_cpp_exceptions(void);
void __init_cpp_exceptions(void);
#define ___mem_
void* memset(void* dst, int val, unsigned long n);
void __fill_mem(void* dst, int val, unsigned long n);
void* memcpy(void* dst, const void* src, unsigned long n);
#define RUNTIME_GLOBAL_DESTRUCTOR_CHAIN_H
void __destroy_global_chain(void);
#define RUNTIME_RUNTIME_H
u64 __shl2i(void*, bool, s8);
void __cvt_sll_flt(void);
void __cvt_dbl_usll(void);
void __cvt_fp2unsigned(void);
#define GALE01_32AFE4
/* 32AFE4 */ M2C_UNK DBGEXIImm();
/* 32B27C */ M2C_UNK DBGReadMailbox();
/* 32B328 */ M2C_UNK DBGRead();
/* 32B404 */ M2C_UNK DBGWrite();
/* 32B4E0 */ M2C_UNK DBGReadStatus();
/* 32B58C */ M2C_UNK MWCallback();
/* 32B5C8 */ M2C_UNK DBGHandler();
/* 32B608 */ M2C_UNK DBInitComm();
/* 32B680 */ M2C_UNK DBInitInterrupts();
/* 32B6D4 */ M2C_UNK DBQueryData();
/* 32B770 */ M2C_UNK DBRead();
/* 32B7FC */ M2C_UNK DBWrite();
/* 32BA5C */ M2C_UNK DBOpen();
/* 32BA60 */ M2C_UNK DBClose();
/* 32BA64 */ bool Hu_IsStub(void);
#define DOLPHIN_AI_AI
typedef void (*AISCallback)(u32 count);
typedef void (*AIDCallback)(void);
extern vu32 __AIRegs[8] ;
AIDCallback AIRegisterDMACallback(AIDCallback);
void AIInitDMA(u32 addr, u32 length);
void AIStartDMA(void);
void AISetStreamPlayState(u32 state);
u32 AIGetStreamPlayState(void);
void AISetDSPSampleRate(u32 rate);
u32 AIGetDSPSampleRate(void);
void AISetStreamSampleRate(u32 rate);
u32 AIGetStreamSampleRate(void);
void AISetStreamVolLeft(u8 volume);
u8 AIGetStreamVolLeft(void);
void AISetStreamVolRight(u8 volume);
u8 AIGetStreamVolRight(void);
void AIInit(u8* stack);
void AIResetStreamSampleCount(void);
void AISetStreamTrigger(u32 trigger);
#define _AMCEXI2STUBS_H_
void EXI2_Init(void);
void EXI2_EnableInterrupts(void);
bool EXI2_Poll(void);
bool EXI2_ReadN(void);
bool EXI2_WriteN(void);
void EXI2_Reserve(void);
void EXI2_Unreserve(void);
bool AMC_IsStub(void);
#define DOLPHIN_AR_AR_H
// offsets for __DSPRegs[i]
#define DSP_MAILBOX_IN_HI (0)
#define DSP_MAILBOX_IN_LO (1)
#define DSP_MAILBOX_OUT_HI (2)
#define DSP_MAILBOX_OUT_LO (3)
#define DSP_CONTROL_STATUS (5)
#define DSP_ARAM_SIZE (9)
#define DSP_ARAM_MODE (11)
#define DSP_ARAM_REFRESH (13)
#define DSP_ARAM_DMA_MM_HI (16) // Main mem address
#define DSP_ARAM_DMA_MM_LO (17)
#define DSP_ARAM_DMA_ARAM_HI (18) // ARAM address
#define DSP_ARAM_DMA_ARAM_LO (19)
#define DSP_ARAM_DMA_SIZE_HI (20) // DMA buffer size
#define DSP_ARAM_DMA_SIZE_LO (21)
#define DSP_DMA_START_HI (24) // DMA start address
#define DSP_DMA_START_LO (25)
#define DSP_DMA_CONTROL_LEN (27)
#define DSP_DMA_BYTES_LEFT (29)
#define DSP_DMA_START_FLAG (0x8000) // set to start DSP
void ARStartDMA(u32 type, u32 source, u32 dest, u32 length);
Event ARRegisterDMACallback(Event callback);
void __ARChecksize(void);
u32 ARGetBaseAddress(void);
u32 ARGetSize(void);
u32 ARGetDMAStatus(void);
u32 ARAlloc(u32 length);
u32 ARFree(u32* length);
bool ARCheckInit(void);
u32 ARInit(u32* stack_index_addr, u32 num_entries);
#define DOLPHIN_AR_ARQ_H
#define ARQ_CHUNK_SIZE_DEFAULT 4096
typedef enum ARQType {
ARQ_TYPE_MRAM_TO_ARAM,
ARQ_TYPE_ARAM_TO_MRAM,
} ARQType;
typedef enum ARQPrio {
ARQ_PRIORITY_LOW,
ARQ_PRIORITY_HIGH,
} ARQPrio;
typedef struct ARQRequest ARQRequest;
typedef void (*ARQCallback)(ARQRequest*);
struct ARQRequest {
ARQRequest* next;
u32 owner;
u32 type;
ARQPrio priority;
u32 source;
u32 dest;
size_t length;
ARQCallback callback;
};
void ARQInit(void);
void ARQReset(void);
void ARQPostRequest(ARQRequest* task, u32 owner, ARQType type,
ARQPrio priority, u32 source, u32 dest, size_t length,
ARQCallback callback);
void __ARQServiceQueueLo(void);
void __ARQCallbackHack(ARQRequest*);
void __ARQInitTempQueue(void);
void __ARQPushTempQueue(ARQRequest* task);
void __ARQInterruptServiceRoutine(void);
#define _DOLPHIN_AX_H_
#define __DOLPHIN_DSP_H_
#define DOLPHIN_OS_OSCONTEXT_H
#define __OS_CONTEXT_FRAME 768
#define OS_CONTEXT_R0 0
#define OS_CONTEXT_R1 4
#define OS_CONTEXT_R2 8
#define OS_CONTEXT_R3 12
#define OS_CONTEXT_R4 16
#define OS_CONTEXT_R5 20
#define OS_CONTEXT_R6 24
#define OS_CONTEXT_R7 28
#define OS_CONTEXT_R8 32
#define OS_CONTEXT_R9 36
#define OS_CONTEXT_R10 40
#define OS_CONTEXT_R11 44
#define OS_CONTEXT_R12 48
#define OS_CONTEXT_R13 52
#define OS_CONTEXT_R14 56
#define OS_CONTEXT_R15 60
#define OS_CONTEXT_R16 64
#define OS_CONTEXT_R17 68
#define OS_CONTEXT_R18 72
#define OS_CONTEXT_R19 76
#define OS_CONTEXT_R20 80
#define OS_CONTEXT_R21 84
#define OS_CONTEXT_R22 88
#define OS_CONTEXT_R23 92
#define OS_CONTEXT_R24 96
#define OS_CONTEXT_R25 100
#define OS_CONTEXT_R26 104
#define OS_CONTEXT_R27 108
#define OS_CONTEXT_R28 112
#define OS_CONTEXT_R29 116
#define OS_CONTEXT_R30 120
#define OS_CONTEXT_R31 124
#define OS_CONTEXT_CR 128
#define OS_CONTEXT_LR 132
#define OS_CONTEXT_CTR 136
#define OS_CONTEXT_XER 140
#define OS_CONTEXT_FPR0 144
#define OS_CONTEXT_FPR1 152
#define OS_CONTEXT_FPR2 160
#define OS_CONTEXT_FPR3 168
#define OS_CONTEXT_FPR4 176
#define OS_CONTEXT_FPR5 184
#define OS_CONTEXT_FPR6 192
#define OS_CONTEXT_FPR7 200
#define OS_CONTEXT_FPR8 208
#define OS_CONTEXT_FPR9 216
#define OS_CONTEXT_FPR10 224
#define OS_CONTEXT_FPR11 232
#define OS_CONTEXT_FPR12 240
#define OS_CONTEXT_FPR13 248
#define OS_CONTEXT_FPR14 256
#define OS_CONTEXT_FPR15 264
#define OS_CONTEXT_FPR16 272
#define OS_CONTEXT_FPR17 280
#define OS_CONTEXT_FPR18 288
#define OS_CONTEXT_FPR19 296
#define OS_CONTEXT_FPR20 304
#define OS_CONTEXT_FPR21 312
#define OS_CONTEXT_FPR22 320
#define OS_CONTEXT_FPR23 328
#define OS_CONTEXT_FPR24 336
#define OS_CONTEXT_FPR25 344
#define OS_CONTEXT_FPR26 352
#define OS_CONTEXT_FPR27 360
#define OS_CONTEXT_FPR28 368
#define OS_CONTEXT_FPR29 376
#define OS_CONTEXT_FPR30 384
#define OS_CONTEXT_FPR31 392
#define OS_CONTEXT_FPSCR 400
#define OS_CONTEXT_SRR0 408
#define OS_CONTEXT_SRR1 412
#define OS_CONTEXT_MODE 416
#define OS_CONTEXT_STATE 418
#define OS_CONTEXT_GQR0 420
#define OS_CONTEXT_GQR1 424
#define OS_CONTEXT_GQR2 428
#define OS_CONTEXT_GQR3 432
#define OS_CONTEXT_GQR4 436
#define OS_CONTEXT_GQR5 440
#define OS_CONTEXT_GQR6 444
#define OS_CONTEXT_GQR7 448
#define __OSCONTEXT_PADDING 452
#define OS_CONTEXT_PSF0 456
#define OS_CONTEXT_PSF1 464
#define OS_CONTEXT_PSF2 472
#define OS_CONTEXT_PSF3 480
#define OS_CONTEXT_PSF4 488
#define OS_CONTEXT_PSF5 496
#define OS_CONTEXT_PSF6 504
#define OS_CONTEXT_PSF7 512
#define OS_CONTEXT_PSF8 520
#define OS_CONTEXT_PSF9 528
#define OS_CONTEXT_PSF10 536
#define OS_CONTEXT_PSF11 544
#define OS_CONTEXT_PSF12 552
#define OS_CONTEXT_PSF13 560
#define OS_CONTEXT_PSF14 568
#define OS_CONTEXT_PSF15 576
#define OS_CONTEXT_PSF16 584
#define OS_CONTEXT_PSF17 592
#define OS_CONTEXT_PSF18 600
#define OS_CONTEXT_PSF19 608
#define OS_CONTEXT_PSF20 616
#define OS_CONTEXT_PSF21 624
#define OS_CONTEXT_PSF22 632
#define OS_CONTEXT_PSF23 640
#define OS_CONTEXT_PSF24 648
#define OS_CONTEXT_PSF25 656
#define OS_CONTEXT_PSF26 664
#define OS_CONTEXT_PSF27 672
#define OS_CONTEXT_PSF28 680
#define OS_CONTEXT_PSF29 688
#define OS_CONTEXT_PSF30 696
#define OS_CONTEXT_PSF31 704
#define OS_CONTEXT_STATE_EXC 0x02u
#define OS_CONTEXT_STATE_FPSAVED 0x01u
typedef struct OSContext {
u32 gprs[32]; // at 0x0
u32 cr; // at 0x80
u32 lr; // at 0x84
u32 ctr; // at 0x88
u32 xer; // at 0x8C
f64 fprs[32]; // at 0x90
f64 fpscr; // at 0x190
u32 srr0; // at 0x198
u32 srr1; // at 0x19C
u16 mode; // at 0x1A0
u16 state; // at 0x1A2
u32 gqrs[8]; // at 0x1A4
f64 psfs[32]; // at 0x1C8
} OSContext;
extern OSContext* OS_CURRENT_CONTEXT ;
extern OSContext* OS_CURRENT_FPU_CONTEXT ;
void OSSaveFPUContext(OSContext*);
void OSSetCurrentContext(OSContext*);
OSContext* OSGetCurrentContext(void);
bool OSSaveContext(OSContext*);
void OSLoadContext(OSContext*);
void* OSGetStackPointer(void);
void OSSwitchFiber(void*, void*);
void OSSwitchFiberEx(u32, u32, u32, u32, void*, void*);
void OSClearContext(OSContext*);
void OSInitContext(OSContext* ctx, u32 pc, u32 newsp);
void OSDumpContext(const OSContext*);
void __OSContextInit(void);
void __OSLoadFPUContext(u32 _, OSContext* fpuctx);
void OSLoadFPUContext(OSContext* fpuctx);
void __OSSaveFPUContext(u32 unused1, u32 unused2, OSContext* fpuctx);
// https://github.com/kiwi515/open_rvl/blob/605e2a99ad053441f0ebb9b322a18433f92025e2/include/OS/OSInterrupt.h
#define _OS_INTERRUPT_H_
#define _DOLPHIN_OS_EXCEPTION_
typedef enum OSException {
OS_EXCEPTION_FLOATING_POINT = 7,
OS_EXCEPTION_COUNT = 15,
} OSException;
typedef u8 __OSException;
typedef void (*__OSExceptionHandler)(__OSException exception,
OSContext* context);
#define OS_EXCEPTION_SAVE_GPRS(context) stw r0, OS_CONTEXT_R0(context); stw r1, OS_CONTEXT_R1(context); stw r2, OS_CONTEXT_R2(context); stmw r6, OS_CONTEXT_R6(context); mfspr r0, GQR1; stw r0, OS_CONTEXT_GQR1(context); mfspr r0, GQR2; stw r0, OS_CONTEXT_GQR2(context); mfspr r0, GQR3; stw r0, OS_CONTEXT_GQR3(context); mfspr r0, GQR4; stw r0, OS_CONTEXT_GQR4(context); mfspr r0, GQR5; stw r0, OS_CONTEXT_GQR5(context); mfspr r0, GQR6; stw r0, OS_CONTEXT_GQR6(context); mfspr r0, GQR7; stw r0, OS_CONTEXT_GQR7(context);
#define OS_INTRMASK_MEM_0 (0x80000000U >> OS_INTR_MEM_0)
#define OS_INTRMASK_MEM_1 (0x80000000U >> OS_INTR_MEM_1)
#define OS_INTRMASK_MEM_2 (0x80000000U >> OS_INTR_MEM_2)
#define OS_INTRMASK_MEM_3 (0x80000000U >> OS_INTR_MEM_3)
#define OS_INTRMASK_MEM_ADDRESS (0x80000000U >> OS_INTR_MEM_ADDRESS)
#define OS_INTRMASK_DSP_AI (0x80000000U >> OS_INTR_DSP_AI)
#define OS_INTRMASK_DSP_ARAM (0x80000000U >> OS_INTR_DSP_ARAM)
#define OS_INTRMASK_DSP_DSP (0x80000000U >> OS_INTR_DSP_DSP)
#define OS_INTRMASK_AI_AI (0x80000000U >> OS_INTR_AI_AI)
#define OS_INTRMASK_EXI_0_EXI (0x80000000U >> OS_INTR_EXI_0_EXI)
#define OS_INTRMASK_EXI_0_TC (0x80000000U >> OS_INTR_EXI_0_TC)
#define OS_INTRMASK_EXI_0_EXT (0x80000000U >> OS_INTR_EXI_0_EXT)
#define OS_INTRMASK_EXI_1_EXI (0x80000000U >> OS_INTR_EXI_1_EXI)
#define OS_INTRMASK_EXI_1_TC (0x80000000U >> OS_INTR_EXI_1_TC)
#define OS_INTRMASK_EXI_1_EXT (0x80000000U >> OS_INTR_EXI_1_EXT)
#define OS_INTRMASK_EXI_2_EXI (0x80000000U >> OS_INTR_EXI_2_EXI)
#define OS_INTRMASK_EXI_2_TC (0x80000000U >> OS_INTR_EXI_2_TC)
#define OS_INTRMASK_PI_CP (0x80000000U >> OS_INTR_PI_CP)
#define OS_INTRMASK_PI_PE_TOKEN (0x80000000U >> OS_INTR_PI_PE_TOKEN)
#define OS_INTRMASK_PI_PE_FINISH (0x80000000U >> OS_INTR_PI_PE_FINISH)
#define OS_INTRMASK_PI_SI (0x80000000U >> OS_INTR_PI_SI)
#define OS_INTRMASK_PI_DI (0x80000000U >> OS_INTR_PI_DI)
#define OS_INTRMASK_PI_RSW (0x80000000U >> OS_INTR_PI_RSW)
#define OS_INTRMASK_PI_ERROR (0x80000000U >> OS_INTR_PI_ERROR)
#define OS_INTRMASK_PI_VI (0x80000000U >> OS_INTR_PI_VI)
#define OS_INTRMASK_PI_DEBUG (0x80000000U >> OS_INTR_PI_DEBUG)
#define OS_INTRMASK_PI_HSP (0x80000000U >> OS_INTR_PI_HSP)
#define OS_INTRMASK_MEM (OS_INTRMASK_MEM_0 | OS_INTRMASK_MEM_1 | OS_INTRMASK_MEM_2 | OS_INTRMASK_MEM_3 | OS_INTRMASK_MEM_ADDRESS)
#define OS_INTRMASK_AI (OS_INTRMASK_AI_AI)
#define OS_INTRMASK_DSP (OS_INTRMASK_DSP_AI | OS_INTRMASK_DSP_ARAM | OS_INTRMASK_DSP_DSP)
#define OS_INTRMASK_EXI_0 (OS_INTRMASK_EXI_0_EXI | OS_INTRMASK_EXI_0_TC | OS_INTRMASK_EXI_0_EXT)
#define OS_INTRMASK_EXI_1 (OS_INTRMASK_EXI_1_EXI | OS_INTRMASK_EXI_1_TC | OS_INTRMASK_EXI_1_EXT)
#define OS_INTRMASK_EXI_2 (OS_INTRMASK_EXI_2_EXI | OS_INTRMASK_EXI_2_TC)
#define OS_INTRMASK_EXI (OS_INTRMASK_EXI_0_EXI | OS_INTRMASK_EXI_0_TC | OS_INTRMASK_EXI_0_EXT | OS_INTRMASK_EXI_1_EXI | OS_INTRMASK_EXI_1_TC | OS_INTRMASK_EXI_1_EXT | OS_INTRMASK_EXI_2_EXI | OS_INTRMASK_EXI_2_TC)
#define OS_INTRMASK_PI (OS_INTRMASK_PI_CP | OS_INTRMASK_PI_SI | OS_INTRMASK_PI_DI | OS_INTRMASK_PI_RSW | OS_INTRMASK_PI_ERROR | OS_INTRMASK_PI_VI | OS_INTRMASK_PI_PE_TOKEN | OS_INTRMASK_PI_PE_FINISH | OS_INTRMASK_PI_DEBUG | OS_INTRMASK_PI_HSP)
#define OS_INTRMASK_PI_PE (OS_INTRMASK_PI_PE_TOKEN | OS_INTRMASK_PI_PE_FINISH)
typedef enum OSInterruptType {
OS_INTR_MEM_0,
OS_INTR_MEM_1,
OS_INTR_MEM_2,
OS_INTR_MEM_3,
OS_INTR_MEM_ADDRESS,
OS_INTR_DSP_AI,
OS_INTR_DSP_ARAM,
OS_INTR_DSP_DSP,
OS_INTR_AI_AI,
OS_INTR_EXI_0_EXI,
OS_INTR_EXI_0_TC,
OS_INTR_EXI_0_EXT,
OS_INTR_EXI_1_EXI,
OS_INTR_EXI_1_TC,
OS_INTR_EXI_1_EXT,
OS_INTR_EXI_2_EXI,
OS_INTR_EXI_2_TC,
OS_INTR_PI_CP,
OS_INTR_PI_PE_TOKEN,
OS_INTR_PI_PE_FINISH,
OS_INTR_PI_SI,
OS_INTR_PI_DI,
OS_INTR_PI_RSW,
OS_INTR_PI_ERROR,
OS_INTR_PI_VI,
OS_INTR_PI_DEBUG,
OS_INTR_PI_HSP,
OS_INTR_PI_ACR,
OS_INTR_28,
OS_INTR_29,
OS_INTR_30,
OS_INTR_31,
OS_INTR_MAX
} OSInterruptType;
typedef s16 __OSInterrupt;
typedef void (*__OSInterruptHandler)(__OSInterrupt interrupt,
OSContext* context);
typedef u32 OSInterruptMask;
extern volatile u32 __OSLastInterruptSrr0;
extern volatile s16 __OSLastInterrupt;
extern volatile s64 __OSLastInterruptTime;
/// @sz{4}
extern M2C_UNK lbl_804D738C;
void __RAS_OSDisableInterrupts_begin(void);
void __RAS_OSDisableInterrupts_end(void);
bool OSDisableInterrupts(void);
bool OSEnableInterrupts(void);
bool OSRestoreInterrupts(bool);
__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt,
__OSInterruptHandler);
__OSInterruptHandler __OSGetInterruptHandler(__OSInterrupt);
void __OSInterruptInit(void);
u32 __OSMaskInterrupts(u32);
u32 __OSUnmaskInterrupts(u32);
u32 SetInterruptMask(OSInterruptMask mask, OSInterruptMask current);
void __OSDispatchInterrupt(__OSException exception, OSContext* context);
#define __DOLPHIN_OSTIME_H_
typedef s64 OSTime;
typedef u32 OSTick;
typedef struct OSCalendarTime {
int sec; // seconds after the minute [0, 61]
int min; // minutes after the hour [0, 59]
int hour; // hours since midnight [0, 23]
int mday; // day of the month [1, 31]
int mon; // month since January [0, 11]
int year; // years in AD [1, ...]
int wday; // days since Sunday [0, 6]
int yday; // days since January 1 [0, 365]
int msec; // milliseconds after the second [0,999]
int usec; // microseconds after the millisecond [0,999]
} OSCalendarTime;
void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* td);
OSTime OSGetTime(void);
OSTick OSGetTick(void);
OSTime __OSTimeToSystemTime(OSTime);
OSTime __OSGetSystemTime(void);
extern u32 __OSBusClock ;
#define OS_BUS_CLOCK __OSBusClock
#define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4)
#define OSTicksToSeconds(ticks) ((ticks) / (OS_TIMER_CLOCK))
#define OSTicksToMilliseconds(ticks) ((ticks) / (OS_TIMER_CLOCK / 1000))
#define OSTicksToMicroseconds(ticks) (((ticks) * 8) / (OS_TIMER_CLOCK / 125000))
#define OSSecondsToTicks(sec) ((sec) * (OS_TIMER_CLOCK))
#define OSMillisecondsToTicks(msec) ((msec) * (OS_TIMER_CLOCK / 1000))
#define OSMicrosecondsToTicks(usec) (((usec) * (OS_TIMER_CLOCK / 125000)) / 8)
#define OSNanosecondsToTicks(nsec) (((nsec) * (OS_TIMER_CLOCK / 125000)) / 8000)
#define HW_REG(reg, type) *(volatile type*) (uintptr_t) (reg)
extern volatile u16 __DSPRegs[] ;
typedef void (*DSPCallback)(void* task);
typedef struct _DSPTaskInfo {
/*0x00*/ volatile u32 state;
/*0x04*/ volatile u32 priority;
/*0x08*/ volatile u32 flags;
/*0x0C*/ u16* iram_mmem_addr;
/*0x10*/ u32 iram_length;
/*0x14*/ u32 iram_addr;
/*0x18*/ u16* dram_mmem_addr;
/*0x1C*/ u32 dram_length;
/*0x20*/ u32 dram_addr;
/*0x24*/ u16 dsp_init_vector;
/*0x26*/ u16 dsp_resume_vector;
/*0x28*/ DSPCallback init_cb;
/*0x2C*/ DSPCallback res_cb;
/*0x30*/ DSPCallback done_cb;
/*0x34*/ DSPCallback req_cb;
/*0x38*/ struct _DSPTaskInfo* next;
/*0x3C*/ struct _DSPTaskInfo* prev;
OSTime t_context;
OSTime t_task;
} DSPTaskInfo;
u32 DSPCheckMailToDSP(void);
u32 DSPCheckMailFromDSP(void);
u32 DSPReadMailFromDSP(void);
void DSPSendMailToDSP(u32 mail);
void DSPInit(void);
bool DSPCheckInit(void);
void __DSP_debug_printf(const char* fmt, ...);
void __DSPHandler(__OSInterrupt intr, OSContext* ctx);
void __DSP_boot_task(DSPTaskInfo* task);
void __DSP_insert_task(DSPTaskInfo* task);
void __DSP_remove_task(DSPTaskInfo* task);
DSPTaskInfo* DSPAddTask(DSPTaskInfo* task);
void __DSP_exec_task(DSPTaskInfo*, DSPTaskInfo*);
void DSPCancelTask(void);
void* DSPAssertTask(DSPTaskInfo* task);
typedef struct _AXPBMIX {
/* 0x00 */ u16 vL;
/* 0x02 */ u16 vDeltaL;
/* 0x04 */ u16 vR;
/* 0x06 */ u16 vDeltaR;
/* 0x08 */ u16 vAuxAL;
/* 0x0A */ u16 vDeltaAuxAL;
/* 0x0C */ u16 vAuxAR;
/* 0x0E */ u16 vDeltaAuxAR;
/* 0x10 */ u16 vAuxBL;
/* 0x12 */ u16 vDeltaAuxBL;
/* 0x14 */ u16 vAuxBR;
/* 0x16 */ u16 vDeltaAuxBR;
/* 0x18 */ u16 vAuxBS;
/* 0x1A */ u16 vDeltaAuxBS;
/* 0x1C */ u16 vS;
/* 0x1E */ u16 vDeltaS;
/* 0x20 */ u16 vAuxAS;
/* 0x22 */ u16 vDeltaAuxAS;
} AXPBMIX;
typedef struct _AXPBITD {
/* 0x00 */ u16 flag;
/* 0x02 */ u16 bufferHi;
/* 0x04 */ u16 bufferLo;
/* 0x06 */ u16 shiftL;
/* 0x08 */ u16 shiftR;
/* 0x0A */ u16 targetShiftL;
/* 0x0C */ u16 targetShiftR;
} AXPBITD;
typedef struct _AXPBUPDATE {
/* 0x00 */ u16 updNum[5];
/* 0x0A */ u16 dataHi;
/* 0x0C */ u16 dataLo;
} AXPBUPDATE;
typedef struct _AXPBDPOP {
/* 0x00 */ s16 aL;
/* 0x02 */ s16 aAuxAL;
/* 0x04 */ s16 aAuxBL;
/* 0x06 */ s16 aR;
/* 0x08 */ s16 aAuxAR;
/* 0x0A */ s16 aAuxBR;
/* 0x0C */ s16 aS;
/* 0x0E */ s16 aAuxAS;
/* 0x10 */ s16 aAuxBS;
} AXPBDPOP;
typedef struct _AXPBVE {
/* 0x00 */ u16 currentVolume;
/* 0x02 */ s16 currentDelta;
} AXPBVE;
typedef struct _AXPBFIR {
/* 0x00 */ u16 numCoefs;
/* 0x02 */ u16 coefsHi;
/* 0x04 */ u16 coefsLo;
} AXPBFIR;
typedef struct _AXPBADDR {
/* 0x00 */ u16 loopFlag;
/* 0x02 */ u16 format;
/* 0x04 */ u16 loopAddressHi;
/* 0x06 */ u16 loopAddressLo;
/* 0x08 */ u16 endAddressHi;
/* 0x0A */ u16 endAddressLo;
/* 0x0C */ u16 currentAddressHi;
/* 0x0E */ u16 currentAddressLo;
} AXPBADDR;
typedef struct _AXPBADPCM {
/* 0x00 */ u16 a[8][2];
/* 0x20 */ u16 gain;
/* 0x22 */ u16 pred_scale;
/* 0x24 */ u16 yn1;
/* 0x26 */ u16 yn2;
} AXPBADPCM;
typedef struct _AXPBSRC {
/* 0x00 */ u16 ratioHi;
/* 0x02 */ u16 ratioLo;
/* 0x04 */ u16 currentAddressFrac;
/* 0x06 */ u16 last_samples[4];
} AXPBSRC;
typedef struct _AXPBADPCMLOOP {
/* 0x00 */ u16 loop_pred_scale;
/* 0x02 */ u16 loop_yn1;
/* 0x04 */ u16 loop_yn2;
} AXPBADPCMLOOP;
typedef struct _AXPB {
/* 0x00 */ u16 nextHi;
/* 0x02 */ u16 nextLo;
/* 0x04 */ u16 currHi;
/* 0x06 */ u16 currLo;
/* 0x08 */ u16 srcSelect;
/* 0x0A */ u16 coefSelect;
/* 0x0C */ u16 mixerCtrl;
/* 0x0E */ u16 state;
/* 0x10 */ u16 type;
/* 0x12 */ AXPBMIX mix;
/* 0x36 */ AXPBITD itd;
/* 0x44 */ AXPBUPDATE update;
/* 0x52 */ AXPBDPOP dpop;
/* 0x64 */ AXPBVE ve;
/* 0x68 */ AXPBFIR fir;
/* 0x6E */ AXPBADDR addr;
/* 0x7E */ AXPBADPCM adpcm;
/* 0xA6 */ AXPBSRC src;
/* 0xB4 */ AXPBADPCMLOOP adpcmLoop;
/* 0xBA */ u16 pad[3];
} AXPB;
typedef struct _AXVPB {
/* 0x000 */ void* next;
/* 0x004 */ void* prev;
/* 0x008 */ void* next1;
/* 0x00C */ u32 priority;
/* 0x010 */ void (*callback)(void*);
/* 0x014 */ u32 userContext;
/* 0x018 */ u32 index;
/* 0x01C */ u32 sync;
/* 0x020 */ u32 depop;
/* 0x024 */ u32 updateMS;
/* 0x028 */ u32 updateCounter;
/* 0x02C */ u32 updateTotal;
/* 0x030 */ u16* updateWrite;
/* 0x034 */ u16 updateData[128];
/* 0x134 */ void* itdBuffer;
/* 0x138 */ AXPB pb;
} AXVPB;
typedef struct _AXPBITDBUFFER {
/* 0x00 */ s16 data[32];
} AXPBITDBUFFER;
typedef struct _AXPBU {
/* 0x00 */ u16 data[128];
} AXPBU;
typedef struct _AXSPB {
/* 0x00 */ u16 dpopLHi;
/* 0x02 */ u16 dpopLLo;
/* 0x04 */ s16 dpopLDelta;
/* 0x06 */ u16 dpopRHi;
/* 0x08 */ u16 dpopRLo;
/* 0x0A */ s16 dpopRDelta;
/* 0x0C */ u16 dpopSHi;
/* 0x0E */ u16 dpopSLo;
/* 0x10 */ s16 dpopSDelta;
/* 0x12 */ u16 dpopALHi;
/* 0x14 */ u16 dpopALLo;
/* 0x16 */ s16 dpopALDelta;
/* 0x18 */ u16 dpopARHi;
/* 0x1A */ u16 dpopARLo;
/* 0x1C */ s16 dpopARDelta;
/* 0x1E */ u16 dpopASHi;
/* 0x20 */ u16 dpopASLo;
/* 0x22 */ s16 dpopASDelta;
/* 0x24 */ u16 dpopBLHi;
/* 0x26 */ u16 dpopBLLo;
/* 0x28 */ s16 dpopBLDelta;
/* 0x2A */ u16 dpopBRHi;
/* 0x2C */ u16 dpopBRLo;
/* 0x2E */ s16 dpopBRDelta;
/* 0x30 */ u16 dpopBSHi;
/* 0x32 */ u16 dpopBSLo;
/* 0x34 */ s16 dpopBSDelta;
} AXSPB;
typedef struct _AXPROFILE {
/* 0x00 */ u64 axFrameStart;
/* 0x08 */ u64 auxProcessingStart;
/* 0x10 */ u64 auxProcessingEnd;
/* 0x18 */ u64 userCallbackStart;
/* 0x20 */ u64 userCallbackEnd;
/* 0x28 */ u64 axFrameEnd;
/* 0x30 */ u32 axNumVoices;
} AXPROFILE;
struct AX_AUX_DATA {
/* 0x00 */ long* l;
/* 0x00 */ long* r;
/* 0x00 */ long* s;
};
#define AX_DSP_SLAVE_LENGTH 3264
#define AX_MAX_VOICES 64
#define AX_SRC_TYPE_NONE 0
#define AX_SRC_TYPE_LINEAR 1
#define AX_SRC_TYPE_4TAP_8K 2
#define AX_SRC_TYPE_4TAP_12K 3
#define AX_SRC_TYPE_4TAP_16K 4
// sync flags
#define AX_SYNC_FLAG_COPYALL (1 << 31)
#define AX_SYNC_FLAG_UNK1 (1 << 30) // reserved, unused?
#define AX_SYNC_FLAG_UNK2 (1 << 29) // reserved, unused?
#define AX_SYNC_FLAG_UNK3 (1 << 28) // reserved, unused?
#define AX_SYNC_FLAG_UNK4 (1 << 27) // reserved, unused?
#define AX_SYNC_FLAG_UNK5 (1 << 26) // reserved, unused?
#define AX_SYNC_FLAG_UNK6 (1 << 25) // reserved, unused?
#define AX_SYNC_FLAG_UNK7 (1 << 24) // reserved, unused?
#define AX_SYNC_FLAG_UNK8 (1 << 23) // reserved, unused?
#define AX_SYNC_FLAG_UNK9 (1 << 22) // reserved, unused?
#define AX_SYNC_FLAG_UNK10 (1 << 21) // reserved, unused?
#define AX_SYNC_FLAG_COPYADPCMLOOP (1 << 20)
#define AX_SYNC_FLAG_COPYRATIO (1 << 19)
#define AX_SYNC_FLAG_COPYSRC (1 << 18)
#define AX_SYNC_FLAG_COPYADPCM (1 << 17)
#define AX_SYNC_FLAG_COPYCURADDR (1 << 16)
#define AX_SYNC_FLAG_COPYENDADDR (1 << 15)
#define AX_SYNC_FLAG_COPYLOOPADDR (1 << 14)
#define AX_SYNC_FLAG_COPYLOOP (1 << 13)
#define AX_SYNC_FLAG_COPYADDR (1 << 12)
#define AX_SYNC_FLAG_COPYFIR (1 << 11)
#define AX_SYNC_FLAG_SWAPVOL (1 << 10)
#define AX_SYNC_FLAG_COPYVOL (1 << 9)
#define AX_SYNC_FLAG_COPYDPOP (1 << 8)
#define AX_SYNC_FLAG_COPYUPDATE (1 << 7)
#define AX_SYNC_FLAG_COPYTSHIFT (1 << 6)
#define AX_SYNC_FLAG_COPYITD (1 << 5)
#define AX_SYNC_FLAG_COPYAXPBMIX (1 << 4)
#define AX_SYNC_FLAG_COPYTYPE (1 << 3)
#define AX_SYNC_FLAG_COPYSTATE (1 << 2)
#define AX_SYNC_FLAG_COPYMXRCTRL (1 << 1)
#define AX_SYNC_FLAG_COPYSELECT (1 << 0)
#define AX_PRIORITY_STACKS 32
// AX.c
void AXInit(void);
void AXQuit(void);
// AXAlloc.c
void AXFreeVoice(AXVPB* p);
AXVPB* AXAcquireVoice(u32 priority, void (*callback)(void*), u32 userContext);
void AXSetVoicePriority(AXVPB* p, u32 priority);
// AXAux.c
void AXRegisterAuxACallback(void (*callback)(void*, void*), void* context);
void AXRegisterAuxBCallback(void (*callback)(void*, void*), void* context);
// AXCL.c
void AXSetMode(u32 mode);
u32 AXGetMode(void);
// AXOut.c
extern AXPROFILE __AXLocalProfile;
extern DSPTaskInfo task;
extern u16 ax_dram_image[8192];
// AXProf.c
void AXInitProfile(AXPROFILE* profile, u32 maxProfiles);
u32 AXGetProfile(void);
// AXVPB.c
void AXSetVoiceSrcType(AXVPB* p, u32 type);
void AXSetVoiceState(AXVPB* p, u16 state);
void AXSetVoiceType(AXVPB* p, u16 type);
void AXSetVoiceMix(AXVPB* p, AXPBMIX* mix);
void AXSetVoiceItdOn(AXVPB* p);
void AXSetVoiceItdTarget(AXVPB* p, u16 lShift, u16 rShift);
void AXSetVoiceUpdateIncrement(AXVPB* p);
void AXSetVoiceUpdateWrite(AXVPB* p, u16 param, u16 data);
void AXSetVoiceDpop(AXVPB* p, AXPBDPOP* dpop);
void AXSetVoiceVe(AXVPB* p, AXPBVE* ve);
void AXSetVoiceVeDelta(AXVPB* p, s16 delta);
void AXSetVoiceFir(AXVPB* p, AXPBFIR* fir);
void AXSetVoiceAddr(AXVPB* p, AXPBADDR* addr);
void AXSetVoiceLoop(AXVPB* p, u16 loop);
void AXSetVoiceLoopAddr(AXVPB* p, u32 addr);
void AXSetVoiceEndAddr(AXVPB* p, u32 addr);
void AXSetVoiceCurrentAddr(AXVPB* p, u32 addr);
void AXSetVoiceAdpcm(AXVPB* p, AXPBADPCM* adpcm);
void AXSetVoiceSrc(AXVPB* p, AXPBSRC* src_);
void AXSetVoiceSrcRatio(AXVPB* p, float ratio);
void AXSetVoiceAdpcmLoop(AXVPB* p, AXPBADPCMLOOP* adpcmloop);
void AXSetMaxDspCycles(u32 cycles);
u32 AXGetMaxDspCycles(void);
u32 AXGetDspCycles(void);
// DSPCode.c
extern u16 axDspSlaveLength;
extern u16 axDspSlave[3264];
#define DOLPHIN_AX_AX_H
void AXInitEx(void);
#define DOLPHIN_AX_AXALLOC_H
AXVPB* __AXGetStackHead(u32 priority);
void __AXServiceCallbackStack(void);
void __AXInitVoiceStacks(void);
void __AXAllocInit(void);
void __AXAllocQuit(void);
void __AXPushFreeStack(AXVPB* p);
AXVPB* __AXPopFreeStack(void);
void __AXPushCallbackStack(AXVPB* p);
AXVPB* __AXPopCallbackStack(void);
void __AXRemoveFromStack(AXVPB* p);
void __AXPushStackHead(AXVPB* p, u32 priority);
AXVPB* __AXPopStackFromBottom(u32 priority);
#define DOLPHIN_AX_AXAUX_H
void __AXAuxInit(void);
void __AXAuxQuit(void);
void __AXGetAuxAInput(u32* p);
void __AXGetAuxAOutput(u32* p);
void __AXGetAuxBInput(u32* p);
void __AXGetAuxBOutput(u32* p);
void __AXProcessAux(void);
#define DOLPHIN_AX_AXCL_H
/* 3592B4 */ u32 __AXGetCommandListCycles(void);
/* 3592BC */ M2C_UNK __AXGetCommandListAddress();
/* 3592F8 */ M2C_UNK __AXNextFrame();
/* 359708 */ void __AXClInit(void);
#define DOLPHIN_AX_AXINIT_H
void __AXAuxInit(void);
#define DOLPHIN_AX_AXOUT_H
/* 359724 */ M2C_UNK __AXOutNewFrame();
/* 3598AC */ M2C_UNK __AXOutAiCallback();
/* 359914 */ M2C_UNK __AXDSPInitCallback();
/* 359920 */ M2C_UNK __AXDSPResumeCallback();
/* 359978 */ M2C_UNK __AXDSPDoneCallback();
/* 359984 */ M2C_UNK __AXOutInitDSP();
/* 359A48 */ void __AXOutInit(void);
#define DOLPHIN_AX_AXPROF_H
AXPROFILE* __AXGetCurrentProfile(void);
void AXInitProfile(AXPROFILE* profile, u32 maxProfiles);
u32 AXGetProfile(void);
#define GALE01_359D8C
/* 359D8C */ AXSPB* __AXGetStudio(void);
/* 359D98 */ M2C_UNK __AXPrintStudio();
/* 35A190 */ void __AXSPBInit(void);
/* 35A1BC */ M2C_UNK __AXDepopVoice();
#define GALE01_35A250
/* 35A250 */ u32 __AXGetNumVoices(void);
/* 35A258 */ void __AXServiceVPB(AXVPB* pvpb);
/* 35A934 */ void __AXSyncPBs(u32 lessDspCycles);
/* 35AB7C */ AXPB* __AXGetPBs(void);
/* 35AB88 */ void __AXSetPBDefault(AXVPB* p);
/* 35ABC4 */ void __AXVPBInit(void);
/* 35AE20 */ M2C_UNK AXVPB_8035AE20();
#define DOLPHIN_AXFX_AXFX_H
void* AXFXAllocFunction(size_t size);
void AXFXFreeFunction(void* ptr);
void AXFXSetHooks(void* (*alloc_hook)(size_t), void (*free_hook)(void*));
#define DOLPHIN_BASE_PPCARCH_H
// Gekko registers
#define GQR0 0x390
#define GQR1 0x391
#define GQR2 0x392
#define GQR3 0x393
#define GQR4 0x394
#define GQR5 0x395
#define GQR6 0x396
#define GQR7 0x397
u32 PPCMfmsr(void);
void PPCMtmsr(u32);
u32 PPCMfhid0(void);
void PPCMthid0(u32);
u32 PPCMfl2cr(void);
void PPCMtl2cr(u32);
void PPCMtdec(u32);
void PPCSync(void);
void PPCHalt(void);
u32 PPCMfhid2(void);
void PPCMtwpar(u32);
void PPCDisableSpeculation(void);
void PPCSetFpNonIEEEMode(void);
void PPCMthid2(u32);
#define DOLPHIN_CARD_H
#define DOLPHIN_CARD_FORWARD_H
#define _DOLPHIN_OS_H__
#define OS_SOUND_MODE_MONO 0
#define OS_SOUND_MODE_STEREO 1
#define OSRoundUp32B(x) (((u32) (x) + 32 - 1) & ~(32 - 1))
#define OSRoundDown32B(x) (((u32) (x)) & ~(32 - 1))
#define OS_CACHED_REGION_PREFIX 0x8000
#define OS_BASE_CACHED (OS_CACHED_REGION_PREFIX << 16)
#define OSPhysicalToCached(paddr) ((void*) ((u32) (paddr) + OS_BASE_CACHED))
#define OSPhysicalToUncached(paddr) ((void*) ((u32) (paddr) - 0x40000000))
#define DOLPHIN_OS_OSALARM_H
typedef struct OSAlarm OSAlarm;
typedef void (*OSAlarmHandler)(OSAlarm* alarm, OSContext* context);
struct OSAlarm {
OSAlarmHandler handler;
u32 tag;
OSTime fire;
OSAlarm* prev;
OSAlarm* next;
OSTime period;
OSTime start;
};
void OSSetAlarm(OSAlarm* alarm, OSTime tick, OSAlarmHandler handler);
void OSCancelAlarm(OSAlarm* alarm);
void OSInitAlarm(void);
void OSCreateAlarm(OSAlarm* alarm);
void OSSetPeriodicAlarm(OSAlarm* alarm, OSTime start, OSTime period,
OSAlarmHandler handler);
#define __DOLPHIN_OSALLOC_H_
typedef struct _HeapCell {
struct _HeapCell* prev;
struct _HeapCell* next;
size_t size;
} HeapCell;
typedef struct _Heap {
s32 size;
struct _HeapCell* free; // linked list of free cells
struct _HeapCell* allocated; // linked list of allocated cells
} Heap;
typedef int OSHeapHandle;
extern volatile OSHeapHandle __OSCurrHeap;
void* OSInitAlloc(void*, void*, int);
OSHeapHandle OSCreateHeap(void*, void*);
void OSDestroyHeap(size_t idx);
OSHeapHandle OSSetCurrentHeap(OSHeapHandle);
void* OSAllocFromHeap(OSHeapHandle heap, size_t size);
size_t OSCheckHeap(OSHeapHandle);
void OSFreeToHeap(OSHeapHandle heap, void* ptr);
#define OSAlloc(size) OSAllocFromHeap(__OSCurrHeap, (size))
#define OSFree(ptr) OSFreeToHeap(__OSCurrHeap, (ptr))
#define __DOLPHIN_OSARENA_H_
void* OSGetArenaHi(void);
void* OSGetArenaLo(void);
void OSSetArenaHi(void* addr);
void OSSetArenaLo(void* addr);
void* OSAllocFromArenaLo(u32 size, u32 align);
void* OSAllocFromArenaHi(u32 size, u32 align);
#define _OSCACHE_H_
void DCFlushRange(void* addr, size_t nbytes);
void DCStoreRange(void* addr, size_t nbytes);
void DCInvalidateRange(void* addr, size_t nbytes);
void DCFlushRangeNoSync(void* addr, size_t nbytes);
void ICFlashInvalidate(void);
void ICInvalidateRange(void* addr, size_t nbytes);
void LCDisable(void);
void __OSCacheInit(void);
void DCZeroRange(register void* addr, register size_t nbytes);
void ICEnable(void);
void __LCEnable(void);
void DCEnable(void);
void LCEnable(void);
u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes);
void LCQueueWait(register u32 len);
void L2GlobalInvalidate(void);
void L2Enable(void);
void LCStoreBlocks(void* dst, void* src, u32 nblocks);
#define DOLPHIN_OS_OSERROR_H
#define OS_ERROR_SYSTEM_RESET 0
#define OS_ERROR_MACHINE_CHECK 1
#define OS_ERROR_DSI 2
#define OS_ERROR_ISI 3
#define OS_ERROR_EXTERNAL_INTERRUPT 4
#define OS_ERROR_ALIGNMENT 5
#define OS_ERROR_PROGRAM 6
#define OS_ERROR_FLOATING_POINT 7
#define OS_ERROR_DECREMENTER 8
#define OS_ERROR_SYSTEM_CALL 9
#define OS_ERROR_TRACE 10
#define OS_ERROR_PERFORMACE_MONITOR 11
#define OS_ERROR_BREAKPOINT 12
#define OS_ERROR_SYSTEM_INTERRUPT 13
#define OS_ERROR_THERMAL_INTERRUPT 14
#define OS_ERROR_PROTECTION 15
#define OS_ERROR_MAX (OS_ERROR_THERMAL_INTERRUPT + 1)
typedef u16 OSError;
typedef void (*OSErrorHandler)(OSError error, OSContext* context, ...);
OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler);
void __OSUnhandledException(u8 error, OSContext* context, u32 dsisr, u32 dar);
void OSPanic(char* file, int line, char* msg, ...);
void OSReport(char*, ...);
#define DOLPHIN_OS_OSEXI_H
typedef void (*EXICallback)(s32 chan, OSContext* context);
typedef enum {
EXI_STATE_DMA_ACCESS = (1 << 0),
EXI_STATE_IMM_ACCESS = (1 << 1),
EXI_STATE_SELECTED = (1 << 2),
EXI_STATE_ATTACHED = (1 << 3),
EXI_STATE_LOCKED = (1 << 4),
EXI_STATE_BUSY = EXI_STATE_DMA_ACCESS | EXI_STATE_IMM_ACCESS
} EXIState;
typedef enum {
EXI_CHAN_0,
EXI_CHAN_1,
EXI_CHAN_2,
EXI_MAX_CHAN
} EXIChannel;
typedef enum {
EXI_READ,
EXI_WRITE,
EXI_TYPE_2,
EXI_MAX_TYPE
} EXIType;
typedef struct EXIControl {
EXICallback exiCallback;
EXICallback tcCallback;
EXICallback extCallback;
vu32 state;
int immLen;
u8* immBuf;
u32 dev;
u32 id;
s32 idTime;
int items;
struct {
u32 dev;
EXICallback callback;
} queue[3];
} EXIControl;
#define EXI_REG_MAX 5
extern vu32 __EXIRegs[EXI_MAX_CHAN][5] ;
void SetExiInterruptMask(EXIChannel, volatile EXIControl*);
bool EXIImm(EXIChannel, void* buf, s32 len, u32 type, EXICallback);
bool EXIImmEx(EXIChannel, void* buf, s32 len, u32 mode);
bool EXIDma(EXIChannel, void* buf, s32 len, u32 type, EXICallback);
bool EXISync(EXIChannel);
u32 EXIClearInterrupts(EXIChannel, bool exi, bool tc, bool ext);
EXICallback EXISetExiCallback(EXIChannel, EXICallback exiCallback);
bool EXIProbe(EXIChannel);
s32 EXIProbeEx(EXIChannel);
bool EXIAttach(EXIChannel, EXICallback);
bool EXIDetach(EXIChannel);
bool EXISelect(s32, u32 dev, u32 freq);
bool EXIDeselect(EXIChannel);
void EXIInit(void);
bool EXILock(s32, u32 dev, EXICallback unlockedCallback);
bool EXIUnlock(EXIChannel);
u32 EXIGetState(EXIChannel);
s32 EXIGetID(EXIChannel, u32 dev, u32* id);
#define DOLPHIN_OS_OSFONT_H
u16 OSGetFontEncode(void);
#define DOLPHIN_OS_OSLINK_H
void __OSModuleInit(void);
#define __DOLPHIN_OSMEMORY_H_
extern volatile u16 __MEMRegs[64] ;
u32 OSGetPhysicalMemSize(void);
u32 OSGetConsoleSimulatedMemSize(void);
void Config48MB(void);
void RealMode(Event);
void __OSInitMemoryProtection(void);
void Config24MB(void);
#define DOLPHIN_OS_OSMUTEX_H
// https://github.com/kiwi515/open_rvl/blob/fe0742f3ed2090041d5a3c98b98da5ff3546338a/include/OS/OSThread.h
#define _OSTHREAD_H_
#define OS_PRIORITY_MIN 0
#define OS_PRIORITY_MAX 31
#define OS_THREAD_ATTR_DETACH 0x0001u
#define OS_THREAD_STACK_MAGIC 0xDEADBABE
#define OS_THREAD_SPECIFIC_MAX 2
typedef s32 OSPriority; // 0 highest, 31 lowest
typedef struct OSThread OSThread;
typedef struct OSThreadQueue OSThreadQueue;
typedef struct OSThreadLink OSThreadLink;
typedef struct OSMutex OSMutex;
typedef struct OSMutexQueue OSMutexQueue;
typedef struct OSMutexLink OSMutexLink;
typedef struct OSCond OSCond;
typedef enum {
OS_THREAD_STATE_EXITED = 0,
OS_THREAD_STATE_READY = 1,
OS_THREAD_STATE_RUNNING = 2,
OS_THREAD_STATE_WAITING = 4,
OS_THREAD_STATE_MORIBUND = 8
} OSThreadState;
typedef enum {
OS_THREAD_DETACHED = (1 << 0)
} OSThreadFlag;
struct OSThreadQueue {
OSThread* head; // at 0x0
OSThread* tail; // at 0x4
};
struct OSThreadLink {
OSThread* next;
OSThread* prev;
};
struct OSMutexQueue {
OSMutex* head; // at 0x0
OSMutex* tail; // at 0x4
};
struct OSMutexLink {
OSMutex* next; // at 0x0
OSMutex* prev; // at 0x4
};
struct OSThread {
OSContext context;
u16 state;
u16 attr;
s32 suspend;
OSPriority priority;
OSPriority base;
void* val;
OSThreadQueue* queue;
OSThreadLink link;
OSThreadQueue queueJoin;
OSMutex* mutex;
OSMutexQueue queueMutex;
OSThreadLink linkActive;
u8* stackBase;
u32* stackEnd;
s32 error;
void* specific[2];
};
typedef void (*OSSwitchThreadCallback)(OSThread* from, OSThread* to);
extern OSThreadQueue OS_THREAD_QUEUE ;
extern OSThread* OS_CURRENT_THREAD ;
OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback);
void __OSThreadInit(void);
void OSSetCurrentThread(OSThread*);
void OSInitMutexQueue(OSMutexQueue*);
void OSInitThreadQueue(OSThreadQueue*);
OSThread* OSGetCurrentThread(void);
bool OSIsThreadTerminated(OSThread*);
s32 OSDisableScheduler(void);
s32 OSEnableScheduler(void);
s32 __OSGetEffectivePriority(OSThread*);
void __OSPromoteThread(OSThread*, s32);
void __OSReschedule(void);
void OSYieldThread(void);
bool OSCreateThread(OSThread* thread, void* (*func)(void*), void* param,
void* stack, u32 stackSize, OSPriority priority, u16 attr);
void OSExitThread(OSThread*);
void OSCancelThread(OSThread*);
bool OSJoinThread(OSThread*, void*);
void OSDetachThread(OSThread*);
s32 OSResumeThread(OSThread*);
s32 OSSuspendThread(OSThread*);
void OSSleepThread(OSThreadQueue*);
void OSWakeupThread(OSThreadQueue*);
bool OSSetThreadPriority(OSThread*, s32);
void OSClearStack(u8);
void OSSleepTicks(s64);
void CheckThreadQueue(void);
void UnsetRun(OSThread* thread);
void OSCheckActiveThreads(void);
void SetEffectivePriority(void);
typedef struct OSMutex {
OSThreadQueue queue; // at 0x00
OSThread* thread; // at 0x08
s32 count; // at 0x0C
OSMutexLink link; // at 0x10
} OSMutex;
void OSInitMutex(OSMutex*);
void OSLockMutex(OSMutex*);
void OSUnlockMutex(OSMutex*);
void __OSUnlockAllMutex(OSThread*);
bool OSTryLockMutex(OSMutex*);
bool __OSCheckDeadLock(OSThread* thread);
bool __OSCheckMutexes(OSThread* thread);
bool __OSCheckMutex(OSMutex* mutex);
#define DOLPHIN_OS_OSRESET_H
typedef bool (*OSResetFunction)(bool);
typedef struct OSResetFunctionInfo OSResetFunctionInfo;
struct OSResetFunctionInfo {
OSResetFunction func;
u32 priority;
OSResetFunctionInfo* next;
OSResetFunctionInfo* prev;
};
void OSResetSystem(int reset, u32 resetCode, bool forceMenu);
void OSRegisterResetFunction(OSResetFunctionInfo* func);
void __OSDoHotReset(s32 arg0);
/// @todo @c enum
#define OS_RESET_RESTART 0
#define OS_RESET_HOTRESET 1
#define OS_RESET_SHUTDOWN 2
bool __OSCallResetFunctions(bool funcs_arg);
u32 OSGetResetCode(void);
#define DOLPHIN_OS_OSRESETSW_H
struct _OSResetSW_Unk1;
typedef bool (*OSResetSW_Predicate)(struct _OSResetSW_Unk1*);
typedef union {
OSResetSW_Predicate predicate;
struct {
u8 x0_addr_prefix;
u8 x1_addr_suffix;
} bytes;
} OSResetSW_Predicate_Union;
typedef enum {
OSRESETSW_ENUM1_UNK0,
OSRESETSW_ENUM1_UNK1,
OSRESETSW_ENUM1_UNK2,
OSRESETSW_ENUM1_UNK3,
OSRESETSW_ENUM1_UNK4,
OSRESETSW_ENUM1_UNK5,
OSRESETSW_ENUM1_UNK6,
} OSResetSW_Enum1;
typedef struct _OSResetSW_Unk1 {
OSResetSW_Predicate_Union x0_predicate_union;
s32 x4;
s32 x8;
u8* xC_buffer;
u8 x10_pad[0x14 - 0x10];
OSResetSW_Enum1 x14_enum;
u8 x18_pad[0x54 - 0x18];
u8* x54_buffer;
u8 x58_pad[0x5E - 0x58];
u8 x5E;
u8 x5F_pad[0x8E - 0x5F];
u8 x8E;
u8 x8F_pad[0x9A - 0x8F];
u8 x9A;
u8 x9B_pad[0xB4 - 0x9B];
u8* xB4_buffer;
u8 xB8_pad[0xBC - 0xB8];
u32 xBC_flags;
u8 xC0_pad[0xC4 - 0xC0];
bool xC4;
u8 xCC_pad[0xD0 - 0xCC];
bool xD0;
OSResetSW_Predicate xD4_predicate;
} OSResetSW_Unk1;
typedef bool (*OSResetSW_MulticastPredicate)(OSResetSW_Predicate*);
bool OSGetResetSwitchState(void);
void __OSResetSWInterruptHandler(__OSInterrupt interrupt, OSContext* context);
bool OSGetResetButtonState(void);
#define DOLPHIN_OS_OSSERIAL_H
#define _DOLPHIN_SIPRIV
typedef void (*SICallback)(s32 chan, u32 sr, OSContext* context);
typedef void (*SITypeAndStatusCallback)(s32 chan, u32 type);
typedef struct SIPacket {
s32 chan;
void* output;
u32 outputBytes;
void* input;
u32 inputBytes;
SICallback callback;
OSTime fire;
} SIPacket;
void SIInit(void);
u32 SIGetStatus(s32 chan);
bool SIBusy(void);
bool SIIsChanBusy(s32 chan);
bool SITransfer(s32 chan, void* output, u32 outputBytes, void* input,
u32 inputBytes, SICallback callback, OSTime delay);
u32 SISync(void);
void SISetCommand(s32 chan, u32 command);
u32 SIGetCommand(s32 chan);
void SITransferCommands(void);
u32 SISetXY(u32 x, u32 y);
u32 SIEnablePolling(u32 poll);
u32 SIDisablePolling(u32 poll);
bool SIGetResponse(s32 chan, void* data);
bool SIRegisterPollingHandler(__OSInterruptHandler handler);
bool SIUnregisterPollingHandler(__OSInterruptHandler handler);
u32 SIGetType(s32 chan);
u32 SIGetTypeAsync(s32 chan, SITypeAndStatusCallback callback);
u32 SIDecodeType(u32 type);
#define SI_MAX_CHAN 4
#define SI_MAX_COMCSR_INLNGTH 128
#define SI_MAX_COMCSR_OUTLNGTH 128
#define SI_ERROR_UNDER_RUN 0x0001
#define SI_ERROR_OVER_RUN 0x0002
#define SI_ERROR_COLLISION 0x0004
#define SI_ERROR_NO_RESPONSE 0x0008
#define SI_ERROR_WRST 0x0010
#define SI_ERROR_RDST 0x0020
#define SI_ERROR_UNKNOWN 0x0040
#define SI_ERROR_BUSY 0x0080
#define SI_CHAN0 0
#define SI_CHAN1 1
#define SI_CHAN2 2
#define SI_CHAN3 3
#define SI_CHAN0_BIT 0x80000000
#define SI_CHAN1_BIT 0x40000000
#define SI_CHAN2_BIT 0x20000000
#define SI_CHAN3_BIT 0x10000000
#define SI_CHAN_BIT(chan) (SI_CHAN0_BIT >> (chan))
#define SI_TYPE_MASK 0x18000000u
#define SI_TYPE_N64 0x00000000u
#define SI_TYPE_DOLPHIN 0x08000000u
#define SI_TYPE_GC SI_TYPE_DOLPHIN
#define SI_GC_WIRELESS 0x80000000
#define SI_GC_NOMOTOR 0x20000000
#define SI_GC_STANDARD 0x01000000
#define SI_WIRELESS_RECEIVED 0x40000000
#define SI_WIRELESS_IR 0x04000000
#define SI_WIRELESS_STATE 0x02000000
#define SI_WIRELESS_ORIGIN 0x00200000
#define SI_WIRELESS_FIX_ID 0x00100000
#define SI_WIRELESS_TYPE 0x000f0000
#define SI_WIRELESS_LITE_MASK 0x000c0000
#define SI_WIRELESS_LITE 0x00040000
#define SI_WIRELESS_CONT_MASK 0x00080000
#define SI_WIRELESS_CONT 0x00000000
#define SI_WIRELESS_ID 0x00c0ff00
#define SI_WIRELESS_TYPE_ID (SI_WIRELESS_TYPE | SI_WIRELESS_ID)
#define SI_N64_CONTROLLER (SI_TYPE_N64 | 0x05000000)
#define SI_N64_MIC (SI_TYPE_N64 | 0x00010000)
#define SI_N64_KEYBOARD (SI_TYPE_N64 | 0x00020000)
#define SI_N64_MOUSE (SI_TYPE_N64 | 0x02000000)
#define SI_GBA (SI_TYPE_N64 | 0x00040000)
#define SI_GC_CONTROLLER (SI_TYPE_GC | SI_GC_STANDARD)
#define SI_GC_RECEIVER (SI_TYPE_GC | SI_GC_WIRELESS)
#define SI_GC_WAVEBIRD (SI_TYPE_GC | SI_GC_WIRELESS | SI_GC_STANDARD | SI_WIRELESS_STATE | SI_WIRELESS_FIX_ID)
#define SI_GC_KEYBOARD (SI_TYPE_GC | 0x00200000)
#define SI_GC_STEERING (SI_TYPE_GC | 0x00000000)
#define DOLPHIN_OS_OSSYNC_H
void __OSSystemCallVector(void);
void __OSInitSystemCall(void);
typedef struct CARDFileInfo CARDFileInfo;
typedef struct CARDStat CARDStat;
typedef void (*CARDCallback)(EXIChannel chan, s32 result);
#define __DOLPHIN_DVD_H_
#define DOLPHIN_DVD_FORWARD_H
typedef struct DVDCommandBlock DVDCommandBlock;
typedef void (*DVDCBCallback)(s32 result, DVDCommandBlock* block);
struct bb2struct {
u32 _00;
u32 _04;
s32 _08; // size?
u32 FSTMaxLength;
void* FSTLocationInRam;
};
typedef struct DVDDiskID {
char gameName[4];
char company[2];
u8 diskNumber;
u8 gameVersion;
u8 streaming;
u8 streamingBufSize;
u8 padding[22];
} DVDDiskID;
typedef struct DVDBuffer {
void* bootFilePosition;
u32 FSTPosition;
u32 FSTLength;
u32 FSTMaxLength;
void* FSTAddress;
u32 userPosition;
u32 userLength;
u32 padding0;
} DVDBuffer;
struct DVDCommandBlock {
/*0x00*/ DVDCommandBlock* next;
/*0x04*/ DVDCommandBlock* prev;
/*0x08*/ u32 command;
/*0x0C*/ s32 state;
/*0x10*/ u32 offset;
/*0x14*/ u32 length;
/*0x18*/ void* addr;
/*0x1C*/ u32 currTransferSize;
/*0x20*/ u32 transferredSize;
/*0x24*/ DVDDiskID* id;
/*0x28*/ DVDCBCallback callback;
/*0x2C*/ void* userData;
};
typedef struct DVDFileInfo DVDFileInfo;
typedef void (*DVDCallback)(s32 result, DVDFileInfo* fileInfo);
struct DVDFileInfo {
/*0x00*/ DVDCommandBlock cb;
/*0x30*/ u32 startAddr;
/*0x34*/ u32 length;
/*0x38*/ DVDCallback callback;
};
typedef struct DVDDriveInfo {
u16 revisionLevel;
u16 deviceCode;
u32 releaseDate;
u8 padding[24];
} DVDDriveInfo;
// Minimum transfer size.
#define DVD_MIN_TRANSFER_SIZE 32
// DVD states.
#define DVD_STATE_FATAL_ERROR -1
#define DVD_STATE_END 0
#define DVD_STATE_BUSY 1
#define DVD_STATE_WAITING 2
#define DVD_STATE_COVER_CLOSED 3
#define DVD_STATE_NO_DISK 4
#define DVD_STATE_COVER_OPEN 5
#define DVD_STATE_WRONG_DISK 6
#define DVD_STATE_MOTOR_STOPPED 7
#define DVD_STATE_PAUSING 8
#define DVD_STATE_IGNORED 9
#define DVD_STATE_CANCELED 10
#define DVD_STATE_RETRY 11
// File info states.
#define DVD_FILEINFO_READY 0
#define DVD_FILEINFO_BUSY 1
// DVD results.
#define DVD_RESULT_GOOD 0
#define DVD_RESULT_FATAL_ERROR -1
#define DVD_RESULT_IGNORED -2
#define DVD_RESULT_CANCELED -3
#define DVD_AIS_SUCCESS 0
extern OSThreadQueue __DVDThreadQueue;
typedef void (*DVDLowCallback)(u32 intType);
DVDLowCallback DVDLowClearCallback(void);
void DVDInit(void);
bool DVDOpen(char*, DVDFileInfo*);
bool DVDClose(DVDFileInfo*);
bool DVDChangeDir(char*);
bool DVDFastOpen(s32 entrynum, DVDFileInfo* fileInfo);
bool DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length,
s32 offset, DVDCallback callback, s32 prio);
s32 DVDConvertPathToEntrynum(const char* pathPtr);
void DVDReset(void);
s32 DVDCancel(DVDCommandBlock* block);
s32 DVDGetDriveStatus(void);
void __CARDSetDiskID(const DVDDiskID* id);
bool DVDReadAbsAsyncForBS(DVDCommandBlock* block, void* addr, s32 length,
s32 offset, DVDCBCallback callback);
bool DVDReadDiskID(DVDCommandBlock* block, DVDDiskID* diskID,
DVDCBCallback callback);
bool DVDCheckDisk(void);
void __DVDPrepareResetAsync(DVDCBCallback callback);
bool DVDSetAutoInvalidation(bool autoInval);
#define DVDReadAsync(fileInfo, addr, length, offset, callback) DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2)
s32 DVDGetCommandBlockStatus(const DVDCommandBlock* block);
bool DVDCancelAsync(DVDCommandBlock* block, DVDCBCallback callback);
int DVDCancelAll(void);
DVDDiskID* DVDGetCurrentDiskID(void);
u32 CategorizeError(u32 error);
bool DVDCancelStreamAsync(DVDCommandBlock* block, DVDCBCallback callback);
int DVDCancelStream(DVDCommandBlock* block);
bool DVDStopStreamAtEndAsync(DVDCommandBlock* block, DVDCBCallback callback);
bool DVDInquiryAsync(DVDCommandBlock* block, void* addr,
DVDCBCallback callback);
bool DVDReadAbsAsyncPrio(DVDCommandBlock* block, void* addr, s32 length,
s32 offset, DVDCBCallback callback, s32 prio);
bool DVDSeekAbsAsyncPrio(DVDCommandBlock* block, u32 offset,
DVDCBCallback callback, s32 prio);
bool DVDPrepareStreamAbsAsync(DVDCommandBlock* block, u32 length, u32 offset,
DVDCBCallback callback);
#define CARD_FAT_CHECKSUM 0
#define CARD_FAT_CHECKSUMINV 1
#define CARD_FAT_CHECKCODE 2
#define CARD_FAT_FREEBLOCKS 3
#define CARD_FAT_LASTSLOT 4
#define CARD_FAT_AVAIL 0
#define CARD_RESULT_UNLOCKED 1
#define CARD_RESULT_READY 0
#define CARD_RESULT_BUSY -1
#define CARD_RESULT_WRONGDEVICE -2
#define CARD_RESULT_NOCARD -3
#define CARD_RESULT_NOFILE -4
#define CARD_RESULT_IOERROR -5
#define CARD_RESULT_BROKEN -6
#define CARD_RESULT_EXIST -7
#define CARD_RESULT_NOENT -8
#define CARD_RESULT_INSSPACE -9
#define CARD_RESULT_NOPERM -10
#define CARD_RESULT_LIMIT -11
#define CARD_RESULT_NAMETOOLONG -12
#define CARD_RESULT_ENCODING -13
#define CARD_RESULT_CANCELED -14
#define CARD_RESULT_FATAL_ERROR -128
#define CARD_NUM_SYSTEM_BLOCK 5
#define CARD_WORKAREA_SIZE (5 * 8 * 1024)
#define CARD_SYSTEM_BLOCK_SIZE (8 * 1024)
#define CARD_READ_SIZE 512
#define CARD_MAX_FILE 127
#define CARD_COMMENT_SIZE 64
#define CARD_FILENAME_MAX 32
#define CARD_ICON_MAX 8
#define CARD_ICON_WIDTH 32
#define CARD_ICON_HEIGHT 32
#define CARD_BANNER_WIDTH 96
#define CARD_BANNER_HEIGHT 32
#define CARD_STAT_ICON_NONE 0
#define CARD_STAT_ICON_C8 1
#define CARD_STAT_ICON_RGB5A3 2
#define CARD_STAT_ICON_MASK 3
#define CARD_STAT_BANNER_NONE 0
#define CARD_STAT_BANNER_C8 1
#define CARD_STAT_BANNER_RGB5A3 2
#define CARD_STAT_BANNER_MASK 3
#define CARD_STAT_ANIM_LOOP 0x00
#define CARD_STAT_ANIM_BOUNCE 0x04
#define CARD_STAT_ANIM_MASK 0x04
#define CARD_STAT_SPEED_END 0
#define CARD_STAT_SPEED_FAST 1
#define CARD_STAT_SPEED_MIDDLE 2
#define CARD_STAT_SPEED_SLOW 3
#define CARD_STAT_SPEED_MASK 3
#define CARD_MAX_MOUNT_STEP (CARD_NUM_SYSTEM_BLOCK + 2)
#define CARD_PAGE_SIZE 128
#define CARD_SEG_SIZE 512
#define CARD_STAT_SPEED_END 0
#define CARD_STAT_SPEED_FAST 1
#define CARD_STAT_SPEED_MIDDLE 2
#define CARD_STAT_SPEED_SLOW 3
#define CARD_STAT_SPEED_MASK 3
#define CARD_ATTR_PUBLIC 0x04
#define CARD_ATTR_NO_COPY 0x08
#define CARD_ATTR_NO_MOVE 0x10
#define CARD_ATTR_GLOBAL 0x20
#define CARD_ATTR_COMPANY 0x40
struct CARDFileInfo {
s32 chan;
s32 fileNo;
s32 offset;
s32 length;
u16 iBlock;
u16 __padding;
};
typedef struct CARDDir {
u8 gameName[4];
u8 company[2];
u8 _padding0;
u8 bannerFormat;
u8 fileName[32];
u32 time; // seconds since 01/01/2000 midnight
u32 iconAddr; // 0xffffffff if not used
u16 iconFormat;
u16 iconSpeed;
u8 permission;
u8 copyTimes;
u16 startBlock;
u16 length;
u8 _padding1[2];
u32 commentAddr; // 0xffffffff if not used
} CARDDir;
typedef struct CARDDirCheck {
u8 padding0[64 - 2 * 4];
u16 padding1;
s16 checkCode;
u16 checkSum;
u16 checkSumInv;
} CARDDirCheck;
typedef struct CARDControl {
bool attached;
s32 result;
u16 size;
u16 pageSize;
s32 sectorSize;
u16 cBlock;
u16 vendorID;
s32 latency;
u8 id[12];
union {
int mountStep;
int formatStep;
};
u32 scramble;
DSPTaskInfo task;
void* workArea;
CARDDir* currentDir;
u16* currentFat;
OSThreadQueue threadQueue;
u8 cmd[9];
s32 cmdlen;
vu32 mode;
int retry;
int repeat;
u32 addr;
void* buffer;
u32 xferred;
u16 freeNo;
u16 startBlock;
CARDFileInfo* fileInfo;
CARDCallback extCallback;
CARDCallback txCallback;
CARDCallback exiCallback;
CARDCallback apiCallback;
CARDCallback xferCallback;
CARDCallback eraseCallback;
CARDCallback unlockCallback;
OSAlarm alarm;
u32 cid;
const DVDDiskID* diskID;
} CARDControl;
extern CARDControl __CARDBlock[2];
typedef struct CARDID {
u8 serial[32]; // flashID[12] + timebase[8] + counterBias[4] + language[4]
// +
// XXX[4]
u16 deviceID;
u16 size;
u16 encode; // character set -- 0: S-JIS, 1: ANSI
u8 padding[512 - 32 - 5 * 2];
u16 checkSum;
u16 checkSumInv;
} CARDID;
s32 CARDClose(CARDFileInfo*);
int CARDWrite(CARDFileInfo*, void* buf, s32 length, s32 offset);
int CARDRead(CARDFileInfo*, void* buf, u32 length, u32 offset);
s32 __CARDClearStatus(s32 chan);
s32 __CARDReadStatus(s32 chan, u8* status);
static s32 Retry(s32 chan);
CARDDir* __CARDGetDirBlock(CARDControl*);
u16* __CARDGetFatBlock(CARDControl* card);
s32 __CARDUpdateFatBlock(s32 chan, u16* fat, CARDCallback);
void __CARDDefaultApiCallback(s32 chan, s32 result);
void __CARDSyncCallback(s32, s32);
#define __CARDGetDirCheck(dir) ((CARDDirCheck*) &(dir)[CARD_MAX_FILE])
#define CARDIsValidBlockNo(card, iBlock) (CARD_NUM_SYSTEM_BLOCK <= (iBlock) && (iBlock) < (card)->cBlock)
#define DOLPHIN_CARD_CARDBIOS_H
s32 __CARDEnableInterrupt(s32 chan, bool enable);
s32 __CARDEraseSector(s32 chan, u32 addr, CARDCallback callback);
s32 __CARDGetControlBlock(s32 chan, CARDControl** pcard);
s32 __CARDPutControlBlock(struct CARDControl* card, s32 result);
s32 __CARDReadSegment(s32 chan, CARDCallback callback);
s32 __CARDSync(s32 i);
s32 __CARDWritePage(s32 chan, CARDCallback callback);
void __CARDExiHandler(s32 chan, OSContext* context);
void __CARDExtHandler(s32 chan, OSContext* context);
void CARDInit(void);
s32 __CARDStart(s32 chan, CARDCallback txCallback, CARDCallback exiCallback);
s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed);
s32 CARDGetResultCode(s32 chan);
s32 CARDGetSectorSize(s32 chan, u32* size);
void __CARDTxHandler(s32 chan, OSContext* context);
void __CARDUnlockedHandler(s32 chan, OSContext* context);
#define DOLPHIN_CARD_CARDBLOCK_H
s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback);
s32 __CARDFreeBlock(s32 chan, u16 nBlock, CARDCallback callback);
s32 __CARDFreeBlock(s32 chan, u16 nBlock, CARDCallback callback);
s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback);
#define DOLPHIN_CARD_CARDCHECK_H
void __CARDCheckSum(void* ptr, int length, u16* checksum, u16* checksumInv);
s32 __CARDVerify(CARDControl* card);
void __CARDCheckSum(void* ptr, int length, u16* checksum, u16* checksumInv);
s32 __CARDVerify(CARDControl* card);
s32 CARDCheckExAsync(s32 chan, s32* xferBytes, CARDCallback callback);
s32 CARDCheckAsync(s32 chan, CARDCallback callback);
#define DOLPHIN_CARD_CARDCREATE_H
s32 CARDCreateAsync(s32 chan, const char* fileName, u32 size,
CARDFileInfo* fileInfo, CARDCallback callback);
void CreateCallbackFat(s32 chan, s32 result);
#define DOLPHIN_CARD_CARDDELETE_H
s32 CARDFastDeleteAsync(s32 chan, s32 fileNo, CARDCallback callback);
s32 CARDDeleteAsync(s32 chan, const char* fileName, CARDCallback callback);
#define DOLPHIN_CARD_CARDDIR_H
s32 __CARDUpdateDir(s32 chan, CARDCallback callback);
s32 __CARDUpdateDir(s32 chan, CARDCallback callback);
#define DOLPHIN_CARD_CARDFORMAT_H
void FormatCallback(s32 chan, s32 result);
s32 CARDFormatAsync(s32 chan, CARDCallback callback);
s32 __CARDFormatRegionAsync(s32 chan, u16 encode, CARDCallback callback);
#define DOLPHIN_CARD_CARDMOUNT_H
s32 CARDUnmount(s32 chan);
void __CARDMountCallback(s32 chan, s32 result);
s32 CARDProbe(EXIChannel chan);
s32 CARDProbeEx(EXIChannel chan, s32* memSize, s32* sectorSize);
s32 DoMount(EXIChannel chan);
s32 CARDMountAsync(s32 chan, void* workArea, CARDCallback detachCallback,
CARDCallback attachCallback);
#define DOLPHIN_CARD_CARDOPEN_H
bool __CARDCompareFileName(CARDDir* ent, const char* filename);
s32 __CARDAccess(CARDControl* card, CARDDir* ent);
bool __CARDIsOpened(CARDControl* card, s32 fileno);
s32 __CARDGetFileNo(CARDControl* card, const char* filename, s32* pfileno);
s32 CARDFastOpen(EXIChannel chan, s32 fileno, CARDFileInfo* fileinfo);
s32 CARDOpen(EXIChannel chan, const char* filename, CARDFileInfo* fileInfo);
s32 __CARDIsPublic(CARDDir* ent);
s32 CARDOpen(EXIChannel chan, const char* filename, CARDFileInfo* fileinfo);
bool __CARDCompareFileName(CARDDir* ent, const char* filename);
bool __CARDIsOpened(CARDControl* card, s32 fileno);
s32 __CARDAccess(CARDControl* card, CARDDir* ent);
s32 __CARDIsPublic(CARDDir* ent);
s32 __CARDGetFileNo(CARDControl* card, const char* filename, s32* pfileno);
s32 CARDFastOpen(EXIChannel chan, s32 fileno, CARDFileInfo* fileinfo);
#define DOLPHIN_CARD_CARDRDWR_H
s32 __CARDWrite(s32 chan, u32 addr, u32 length, void* dst,
CARDCallback callback);
s32 __CARDRead(s32 chan, u32 addr, u32 length, void* dst,
CARDCallback callback);
u32 CARDGetXferredBytes(s32 chan);
#define DOLPHIN_CARD_CARDREAD_H
s32 __CARDSeek(CARDFileInfo* fileInfo, s32 length, s32 offset,
CARDControl** pcard);
s32 CARDReadAsync(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset,
CARDCallback callback);
#define DOLPHIN_CARD_CARDRENAME_H
s32 CARDRenameAsync(s32 chan, const char* old, const char* new,
CARDCallback callback);
#define DOLPHIN_CARD_CARDSTAT_H
s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat* stat);
s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat* stat,
CARDCallback callback);
#define DOLPHIN_CARD_CARDUNLOCK_H
s32 __CARDUnlock(s32 chan, u8 flashID[12]);
s32 DummyLen(void);
u32 bitrev(u32 data);
s32 ReadArrayUnlock(s32 chan, u32 data, void* rbuf, s32 rlen, s32 mode);
#define DOLPHIN_CARD_CARDWRITE_H
s32 CARDWriteAsync(CARDFileInfo* fileInfo, const void* buf, u32 length,
s32 offset, CARDCallback callback);
#define __DOLPHIN_DB_H__
typedef struct {
u32 bPresent;
u32 exceptionMask;
void (*ExceptionDestination)(void);
void* exceptionReturn;
} DBInterface;
void DBInit(void);
bool DBIsDebuggerPresent(void);
bool __DBIsExceptionMarked(u8 exception);
void DBPrintf(const char* str, ...);
int __DBIsExceptionMarked(u8 a);
#define DOLPHIN_DVD_DVDERROR_H
void __DVDStoreErrorCode(u32 error);
#define DOLPHIN_DVD_DVDFS_H
typedef struct FSTEntry {
unsigned int isDirAndStringOff;
unsigned int parentOrPosition;
unsigned int nextEntryOrLength;
} FSTEntry;
void __DVDFSInit(void);
#define DOLPHIN_DVD_DVDLOW_H
void __DVDInitWA(void);
void __DVDInterruptHandler(__OSInterrupt, OSContext*);
bool DVDLowRead(void*, u32, u32, DVDLowCallback);
bool DVDLowStopMotor(DVDLowCallback callback);
bool DVDLowRequestError(DVDLowCallback callback);
bool DVDLowSeek(u32 offset, DVDLowCallback callback);
bool DVDLowAudioBufferConfig(bool enable, u32 size, DVDLowCallback callback);
bool DVDLowReadDiskID(DVDDiskID* diskID, DVDLowCallback callback);
bool DVDLowRequestAudioStatus(u32 subcmd, DVDLowCallback callback);
bool DVDLowAudioStream(u32 subcmd, u32 length, u32 offset,
DVDLowCallback callback);
bool DVDLowInquiry(DVDDriveInfo* info, DVDLowCallback callback);
bool DVDLowWaitCoverClose(DVDLowCallback callback);
void DVDLowReset(void);
bool DVDLowBreak(void);
#define DOLPHIN_DVD_DVDQUEUE_H
void __DVDClearWaitingQueue(void);
bool __DVDCheckWaitingQueue(void);
int __DVDPushWaitingQueue(int a, DVDCommandBlock* b);
bool __DVDDequeueWaitingQueue(DVDCommandBlock* a);
DVDCommandBlock* __DVDPopWaitingQueue(void);
#define DOLPHIN_DVD_FSTLOAD_H
void __fstLoad(void);
void cb(s32 param_1, DVDCommandBlock* block);
#define DOLPHIN_GX_GXATTR_H
#define GXSetTexCoordGen(dst_coord, func, src_param, mtx) GXSetTexCoordGen2(dst_coord, func, src_param, mtx, GX_DISABLE, GX_PTIDENTITY)
void GXSetNumTexGens(u8 num);
void GXSetTexCoordGen2(GXTexCoordID, GXTexGenType, GXTexGenSrc, u32, GXBool,
u32);
void GXInvalidateVtxCache(void);
void GXSetArray(GXAttr attr, s32 base_ptr, u8 stride);
void GXSetVtxAttrFmt(size_t vtxfmt, GXAttr attr, enum_t count, GXCompType type,
u8 frac);
void GXClearVtxDesc(void);
void GXSetVtxDesc(GXAttr attr, s32 type);
void __GXSetVCD(void);
void __GXSetVAT(void);
void __GXSetVCD(void);
void GXClearVtxDesc(void);
void __GXXfVtxSpecs(void);
void __GXSetVAT(void);
void GXInvalidateVtxCache(void);
#define DOLPHIN_GX_GXBUMP_H
void __GXUpdateBPMask(void);
void GXSetIndTexCoordScale(s32, s32, s32);
void GXSetIndTexMtx(s32, M2C_UNK, s32);
void XSetIndTexCoordScale(void);
void GXSetIndTexOrder(s32, s32, s32);
void GXSetNumIndStages(s32 arg0);
void GXSetTevDirect(void);
void __GXUpdateBPMask(void);
void __GXFlushTextureState(void);
void GXSetTevIndirect(s32, s32, u8, s32, s32, s32, s32, s32);
#define DOLPHIN_GX_GXDISPLAYLIST_H
void GXCallDisplayList(s32, s32);
#define DOLPHIN_GX_GXFRAMEBUF_H
extern GXRenderModeObj GXPal528IntDf;
extern GXRenderModeObj GXMpal480IntDf;
extern GXRenderModeObj GXFrameBuf_804011E0;
extern GXRenderModeObj GXFrameBuf_804011A4;
extern GXRenderModeObj GXNtsc480IntDf;
void GXClearBoundingBox(void);
void GXCopyDisp(void*, GXBool);
void GXCopyTex(void*, GXBool);
void GXSetCopyFilter(GXBool, u8[12][2], GXBool, u8[7]);
void GXSetDispCopyDst(u16, u16);
void GXSetDispCopyFrame2Field(s32 arg0);
void GXSetDispCopyFrame2Field(s32 arg0);
void GXSetDispCopyGamma(s32 arg0);
void GXSetDispCopySrc(u16, u16, u16, u16);
u32 GXSetDispCopyYScale(f32);
void GXSetTexCopyDst(u16, u16, GXTexFmt, GXBool);
void GXSetTexCopySrc(u16, u16, u16, u16);
void GXSetCopyClamp(s32);
void GXSetCopyClear(GXColor, u32);
#define DOLPHIN_GX_GXGEOMETRY_H
void GXBegin(GXPrimitive type, GXVtxFmt vtxfmt, u16 nverts);
void GXSetLineWidth(u8 width, GXTexOffset texOffsets);
void GXSetPointSize(u8 pointSize, GXTexOffset texOffsets);
void GXEnableTexOffsets(GXTexCoordID coord, GXBool line_enable,
GXBool point_enable);
void GXSetCullMode(GXCullMode mode);
void GXSetCoPlanar(GXBool enable);
void __GXSetDirtyState(void);
void __GXSendFlushPrim(void);
#define _GXINIT_H_
GXFifoObj* GXInit(GXFifoObj* fifo, u32 size);
void __GXDefaultTexRegionCallback(void);
M2C_UNK __GXDefaultTlutRegionCallback(u32 arg0);
#define DOLPHIN_GX_GXLIGHT_H
#define DOLPHIN_GX___TYPES_H
#define GX_WRITE_U8(ub) WGPIPE.u8 = ((u8*) &ub);
#define GX_WRITE_U16(us) WGPIPE.u16 = (*(u16*) &us);
#define GX_WRITE_U32(ui) WGPIPE.u32 = (*(u32*) &ui);
#define GX_WRITE_F32(f) WGPIPE.f32 = (*(f32*) &f);
#define INSERT_FIELD(reg, value, nbits, shift) (reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | ((u32) (value) << (shift));
// GXFifoObj private fields
typedef struct __GXFifoObj {
void* base; // at 0x00
void* end; // at 0x04
u32 size; // at 0x08
u32 hiWaterMark; // at 0x0C
u32 loWaterMark; // at 0x10
void* readPtr; // at 0x14
void* writePtr; // at 0x18
s32 x1C; // at 0x1C
u8 x20_pad[4]; // at 0x20
} __GXFifoObj;
struct GXContext {
union {
u32 u32;
u16 u16[2];
} x0; // at 0x000
u16 x4; // at 0x004
u16 x6; // at 0x006
OSContext* x8; // at 0x008
u32 xC; // at 0x00C
u32 x10; // at 0x010
u32 x14; // at 0x014
u32 x18; // at 0x018
s32 x1C_data[(0x3C - 0x1C) / 4]; // at 0x01C
s32 x3C_data[(0x5C - 0x3C) / 4]; // at 0x03C
s32 x5C_data[(0x7C - 0x5C) / 4]; // at 0x05C
s32 x7C; // at 0x07C
s32 x80; // at 0x080
s32 x84; // at 0x084
u32 x88_data[4]; // at 0x088
u32 x98_data[4]; // at 0x098
u32 ambColors[2]; // at 0x0A8
u32 matColors[2]; // at 0x0B0
s32 xB8[GX_MAX_TEXCOORD]; // at 0x0B8
u8 xD8_pad[0xF8 - 0xD8]; // at 0x0D8
s32 xF8; // at 0x0F8
s32 xFC; // at 0x0FC
u32 x100_data[(0x130 - 0x100) / 4]; // at 0x100
u32 x130_data[(0x170 - 0x130) / 4]; // at 0x130
u32 x170_data[(0x1AC - 0x170) / 4]; // at 0x170
u8 x1AC_pad[0x1B0 - 0x1AC]; // at 0x1AC
GXTexRegionCallback callbacks[(0x1D0 - 0x1B0) / 4]; // at 0x1B0
u32 x1D0[(0x204 - 0x1D0) / 4]; // at 0x1D0
u32 x204; // at 0x204
u8 x208_pad[0x2D0 - 0x208]; // at 0x208
struct {
u32 unk[4];
} x2D0[(0x410 - 0x2D0) / 16]; // at 0x2D0
GXTexRegionCallback tex_region_cb; // at 0x410
GXTexRegionCallback tlut_region_cb; // at 0x414
u32 x418; // at 0x418
GXBool x41C; // at 0x41C
GXBool x41D; // at 0x41D
u32 projection_type; // at 0x420
f32 projection_v[6]; // at 0x424
f32 viewport_v[6]; // at 0x43C
u8 x454_pad[4]; // at 0x454
f32 x458; // at 0x458
s32 x45C_data[0x20 / 4]; // at 0x45C
s32 x47C_data[0x20 / 4]; // at 0x47C
u32 x49C_data[(0x4EC - 0x49C) / 4]; // at 0x49C
u8 x4EC; // at 0x4EC
GXBool x4ED; // at 0x4ED
u8 x4EE; // at 0x4EE
u32 x4F0_flags; // at 0x4F0
GXFifoObj* fifo; // at 0x4F4
u8 x4F8_pad[0x570 - 0x4F8]; // at 0x4F8
u32 dirtyFlags; // at 0x570
};
struct GXSettings {
u16 z_mode;
u16 color_settings;
u16 dst_alpha;
u16 x6;
u16 x8;
};
extern volatile u32* __piReg;
extern volatile u16* __peReg;
extern volatile u16* __cpReg;
extern volatile u32* __memReg;
extern volatile union WGPIPE_T {
s8 s8;
u8 u8;
s16 s16;
u16 u16;
u32 u32;
s32 s32;
void* ptr;
f32 f32;
} WGPIPE ;
typedef struct __GXGPFifo {
u16 x0;
s16 x2;
s16 x4;
s16 x6;
u8 x8_pad[0x38 - 0x8];
} __GXGPFifo;
struct GXContexts {
GXContext* main;
GXContext* null;
};
struct GXTexObj {
u8 x0_pad[0x8];
u32 dimensions;
u8 xC_pad[0x8];
GXTexFmt tex_fmt; // at 0x14
u8 x18_pad[8]; // at 0x18
};
struct GXTlutObj {
u32 dummy[3];
};
typedef struct _GXLightObj {
char x0[0xC]; // at 0x00
GXColor color; // at 0x0C
f32 aa; // at 0x10
f32 ab; // at 0x14
f32 ac; // at 0x18
f32 ka; // at 0x1C
f32 kb; // at 0x20
f32 kc; // at 0x24
Vec3 pos; // at 0x28
Vec3 dir; // at 0x34
} GXLightObj;
void GXInitLightAttn(GXLightObj* light, f32 aa, f32 ab, f32 ac, f32 ka, f32 kb,
f32 kc);
void GXInitLightSpot(GXLightObj* light, f32 angle, GXSpotFn fn);
void GXInitLightDistAttn(GXLightObj* light, f32 ref_distance,
f32 ref_brightness, GXDistAttnFn dist_fn);
void GXInitLightPos(GXLightObj* light, f32 x, f32 y, f32 z);
void GXInitLightDir(GXLightObj* light, f32 x, f32 y, f32 z);
void GXInitLightColor(GXLightObj* light, GXColor color);
void GXLoadLightObjImm(GXLightObj* light, GXLightID light_id);
void GXSetChanAmbColor(GXChannelID chan, GXColor* color);
void GXSetChanMatColor(GXChannelID chan, GXColor* color);
void GXSetNumChans(u8 num_chans);
void GXSetChanCtrl(GXChannelID chan, GXBool enable, GXColorSrc amb_src,
GXColorSrc mat_src, u32 light_mask, GXDiffuseFn diff_fn,
GXAttnFn attn_fn);
#define DOLPHIN_GX_GXMISC_H
void GXPixModeSync(void);
void GXWaitDrawDone(void);
void GXSetDrawDone(void);
void GXSetMisc(s32, u32);
void GXPokeAlphaMode(GXCompare func, u8 threshold);
void GXPokeAlphaRead(s32 mode);
void GXPokeAlphaUpdate(bool update_enable);
void GXPokeColorUpdate(bool update_enable);
void GXPokeDstAlpha(bool enable, u8 alpha);
void GXPokeDither(s32 dither);
void GXPokeZMode(bool compare_enable, GXCompare func, bool update_enable);
void GXTokenInterruptHandler(__OSInterrupt _, OSContext* current_ctx);
GXDrawDoneCallback GXSetDrawDoneCallback(GXDrawDoneCallback cb);
void GXFinishInterruptHandler(__OSInterrupt _, OSContext* current_ctx);
void __GXPEInit(void);
void GXPokeBlendMode(GXBlendMode type, GXBlendFactor src_factor,
GXBlendFactor dst_factor, GXLogicOp op);
#define DOLPHIN_GX_GXPERF_H
void GXClearGPMetric(void);
void GXSetGPMetric(u32, u32);
#define DOLPHIN_GX_GXPIXEL_H
typedef struct _GXFogAdjTbl {
u16 r[10];
} GXFogAdjTbl;
void GXSetFieldMode(int, int);
void GXInitFogAdjTable(GXFogAdjTbl*, u16, Mtx44);
void GXSetFogRangeAdj(s8, u16, GXFogAdjTbl*);
void GXSetPixelFmt(int, int);
void GXSetFieldMask(s32, s8);
void GXSetDstAlpha(u8, u8);
void GXSetDither(u8);
void GXSetZCompLoc(u8);
void GXSetZMode(u8, u32, u32);
void GXSetAlphaUpdate(u8);
void GXSetColorUpdate(u8);
void GXSetBlendMode(s32, s32, s32, s32);
void GXSetFog(s32, GXColor, f32, f32, f32, f32);
#define DOLPHIN_GX_GXSTUBS_H
void __GXSetRange(f32 nearz, f32);
#define DOLPHIN_GX_GXTEV_H
void GXSetTevOp(GXTevStageID id, GXTevMode mode);
void GXSetTevColorIn(GXTevStageID stage, GXTevColorArg a, GXTevColorArg b,
GXTevColorArg c, GXTevColorArg d);
void GXSetTevAlphaIn(GXTevStageID stage, GXTevAlphaArg a, GXTevAlphaArg b,
GXTevAlphaArg c, GXTevAlphaArg d);
void GXSetTevColorOp(GXTevStageID stage, GXTevOp op, GXTevBias bias,
GXTevScale scale, GXBool clamp, GXTevRegID out_reg);
void GXSetTevAlphaOp(GXTevStageID stage, GXTevOp op, GXTevBias bias,
GXTevScale scale, GXBool clamp, GXTevRegID out_reg);
void GXSetTevColor(GXTevRegID id, GXColor color);
void GXSetTevKColor(GXTevKColorID id, GXColor color);
void GXSetTevKColorSel(GXTevStageID stage, GXTevKColorSel sel);
void GXSetTevKAlphaSel(GXTevStageID stage, GXTevKAlphaSel sel);
void GXSetTevSwapMode(GXTevStageID stage, GXTevSwapSel ras_sel,
GXTevSwapSel tex_sel);
void GXSetTevSwapModeTable(GXTevSwapSel table, GXTevColorChan red,
GXTevColorChan green, GXTevColorChan blue,
GXTevColorChan alpha);
void GXSetAlphaCompare(GXCompare comp0, u8 ref0, GXAlphaOp op, GXCompare comp1,
u8 ref1);
void GXSetZTexture(GXZTexOp op, GXTexFmt fmt, u32 bias);
void GXSetTevOrder(GXTevStageID stage, GXTexCoordID coord, GXTexMapID map,
GXChannelID color);
void GXSetNumTevStages(u8 nStages);
void GXSetTevColorS10(s32, GXColorS10);
void GXSetTevClampMode(s32 arg0, s32 arg1);
#define DOLPHIN_GX_GXTEXTURE_H
void __GXSetSUTexSize(void);
void GXLoadTexObjPreLoaded(const GXTexObj*, M2C_UNK, GXTexMapID);
void GXInvalidateTexAll(void);
GXTexRegionCallback GXSetTlutRegionCallback(GXTexRegionCallback arg0);
void __SetSURegs(s32, s32);
void GXInitTexObj(GXTexObj*, void*, u16, u16, GXTexFmt, GXTexWrapMode,
GXTexWrapMode, GXBool);
s32 GXGetTexObjWidth(GXTexObj* tex_obj);
s32 GXGetTexObjHeight(GXTexObj* tex_obj);
GXTexFmt GXGetTexObjFmt(GXTexObj* tex_obj);
void GXLoadTexObj(const GXTexObj*, GXTexMapID);
void GXInitTlutRegion(s32* arg0, s32 arg1, s32 arg2);
s32 GXGetTexBufferSize(u16, u16, u32, u8, u8);
void GXInitTexObjCI(GXTexObj*, void*, u16, u16, GXCITexFmt, GXTexWrapMode,
GXTexWrapMode, GXBool, u32);
void GXInitTexObjLOD(GXTexObj*, GXTexFilter, GXTexFilter, f32, f32, f32,
GXBool, GXBool, GXAnisotropy);
void GXInitTlutObj(GXTlutObj*, void*, GXTlutFmt, u16);
void GXLoadTlut(GXTlutObj*, s32);
void __GXSetTmemConfig(s32);
GXTexRegionCallback GXSetTexRegionCallback(GXTexRegionCallback arg0);
void GXInitTexCacheRegion(M2C_UNK, s8, u32, s32, u32, s32, s32);
void __GetImageTileCount(u32, s16, s16, s32*, s32*, s32*);
#define DOLPHIN_GX_GXTRANSFORM_H
void GXProject(f32 x, // model coordinates
f32 y, f32 z,
Mtx mtx, // model-view matrix
f32* pm, // projection matrix, as returned by GXGetProjectionv
f32* vp, // viewport, as returned by GXGetViewportv
f32* sx, // screen coordinates
f32* sy, f32* sz);
void GXSetViewportJitter(f32 left, f32 top, f32 wd, f32 ht, f32 nearz,
f32 farz, u32 field);
void GXSetViewport(f32, f32, f32, f32, f32, f32);
void GXLoadTexMtxImm(void* arg0, u32 arg1, s32 arg2);
void GXSetCurrentMtx(s32 arg0);
void GXLoadNrmMtxImm(M2C_UNK, s32);
void GXLoadPosMtxImm(M2C_UNK, s32);
void GXSetScissor(s32 left, s32 top, s32 width, s32 height);
void GXSetScissorBoxOffset(u32 x_off, u32 y_off);
void GXGetProjectionv(f32* proj);
void GXGetViewportv(f32* viewport_v);
void GXSetProjection(Mtx44 proj, s32 projection_type);
void WriteMTXPS4x3(float* src, float* dst);
void WriteMTXPS3x3from3x4(float* src, float* dst);
void WriteMTXPS4x2(float* src, float* dst);
void __GXSetMatrixIndex(s32);
void GXSetClipMode(s32);
#define _DOLPHIN_GXVERT_H_
static inline void GXPosition3f32(const f32 x, const f32 y, const f32 z)
{
WGPIPE.f32 = x;
WGPIPE.f32 = y;
WGPIPE.f32 = z;
}
static inline void GXPosition3u16(const u16 x, const u16 y, const u16 z)
{
WGPIPE.u16 = x;
WGPIPE.u16 = y;
WGPIPE.u16 = z;
}
static inline void GXPosition3s16(const s16 x, const s16 y, const s16 z)
{
WGPIPE.s16 = x;
WGPIPE.s16 = y;
WGPIPE.s16 = z;
}
static inline void GXPosition3u8(const u8 x, const u8 y, const u8 z)
{
WGPIPE.u8 = x;
WGPIPE.u8 = y;
WGPIPE.u8 = z;
}
static inline void GXPosition3s8(const s8 x, const s8 y, const s8 z)
{
WGPIPE.s8 = x;
WGPIPE.s8 = y;
WGPIPE.s8 = z;
}
static inline void GXPosition2f32(const f32 x, const f32 y)
{
WGPIPE.f32 = x;
WGPIPE.f32 = y;
}
static inline void GXPosition2u16(const u16 x, const u16 y)
{
WGPIPE.u16 = x;
WGPIPE.u16 = y;
}
static inline void GXPosition2s16(const s16 x, const s16 y)
{
WGPIPE.s16 = x;
WGPIPE.s16 = y;
}
static inline void GXPosition2u8(const u8 x, const u8 y)
{
WGPIPE.u8 = x;
WGPIPE.u8 = y;
}
static inline void GXPosition2s8(const s8 x, const s8 y)
{
WGPIPE.s8 = x;
WGPIPE.s8 = y;
}
static inline void GXPosition1x8(const u8 index)
{
WGPIPE.u8 = index;
}
static inline void GXPosition1x16(const u16 index)
{
WGPIPE.u16 = index;
}
static inline void GXNormal3f32(const f32 nx, const f32 ny, const f32 nz)
{
WGPIPE.f32 = nx;
WGPIPE.f32 = ny;
WGPIPE.f32 = nz;
}
static inline void GXNormal3s16(const s16 nx, const s16 ny, const s16 nz)
{
WGPIPE.s16 = nx;
WGPIPE.s16 = ny;
WGPIPE.s16 = nz;
}
static inline void GXNormal3s8(const s8 nx, const s8 ny, const s8 nz)
{
WGPIPE.s8 = nx;
WGPIPE.s8 = ny;
WGPIPE.s8 = nz;
}
static inline void GXNormal1x8(const u8 index)
{
WGPIPE.u8 = index;
}
static inline void GXNormal1x16(const u16 index)
{
WGPIPE.u16 = index;
}
static inline void GXColor4u8(const u8 r, const u8 g, const u8 b, const u8 a)
{
WGPIPE.u8 = r;
WGPIPE.u8 = g;
WGPIPE.u8 = b;
WGPIPE.u8 = a;
}
static inline void GXColor3u8(const u8 r, const u8 g, const u8 b)
{
WGPIPE.u8 = r;
WGPIPE.u8 = g;
WGPIPE.u8 = b;
}
static inline void GXColor3f32(const f32 r, const f32 g, const f32 b)
{
WGPIPE.u8 = (u8) (r * 255.0);
WGPIPE.u8 = (u8) (g * 255.0);
WGPIPE.u8 = (u8) (b * 255.0);
}
static inline void GXColor1u32(const u32 clr)
{
WGPIPE.u32 = clr;
}
static inline void GXColor1u16(const u16 clr)
{
WGPIPE.u16 = clr;
}
static inline void GXColor1x8(const u8 index)
{
WGPIPE.u8 = index;
}
static inline void GXColor1x16(const u16 index)
{
WGPIPE.u16 = index;
}
static inline void GXTexCoord2f32(const f32 s, const f32 t)
{
WGPIPE.f32 = s;
WGPIPE.f32 = t;
}
static inline void GXTexCoord2u16(const u16 s, const u16 t)
{
WGPIPE.u16 = s;
WGPIPE.u16 = t;
}
static inline void GXTexCoord2s16(const s16 s, const s16 t)
{
WGPIPE.s16 = s;
WGPIPE.s16 = t;
}
static inline void GXTexCoord2u8(const u8 s, const u8 t)
{
WGPIPE.u8 = s;
WGPIPE.u8 = t;
}
static inline void GXTexCoord2s8(const s8 s, const s8 t)
{
WGPIPE.s8 = s;
WGPIPE.s8 = t;
}
static inline void GXTexCoord1f32(const f32 s)
{
WGPIPE.f32 = s;
}
static inline void GXTexCoord1u16(const u16 s)
{
WGPIPE.u16 = s;
}
static inline void GXTexCoord1s16(const s16 s)
{
WGPIPE.s16 = s;
}
static inline void GXTexCoord1u8(const u8 s)
{
WGPIPE.u8 = s;
}
static inline void GXTexCoord1s8(const s8 s)
{
WGPIPE.s8 = s;
}
static inline void GXTexCoord1x8(const u8 index)
{
WGPIPE.u8 = index;
}
static inline void GXTexCoord1x16(const u16 index)
{
WGPIPE.u16 = index;
}
static inline void GXMatrixIndex1u8(const u8 index)
{
WGPIPE.u8 = index;
}
#define DOLPHIN_GX___GXBUMP_H
void __GXFlushTextureState(void);
#define DOLPHIN_GX___GXFIFO_H
void __GXFifoInit(void);
void GXSetGPFifo(GXFifoObj* fifo);
void GXSetCPUFifo(GXFifoObj* fifo);
void GXInitFifoBase(GXFifoObj* fifo, void* base, u32 size);
#define DOLPHIN_GX___GXINIT_H
/* 004D2788 */ extern GXContexts __GXContexts;
static inline void set_x2(GXBool value)
{
__GXContexts.main->x0.u16[1] = value;
}
#define DOLPHIN_GX___GXMISC_HG
/* 00339BB0 */ extern void __GXPEInit(void);
void GXPokeZMode(bool compare_enable, GXCompare func, bool update_enable);
void GXPokeDstAlpha(bool enable, u8 alpha);
void GXPokeAlphaRead(s32 mode);
void GXPokeAlphaMode(GXCompare func, u8 threshold);
void GXPokeBlendMode(GXBlendMode type, GXBlendFactor src_factor,
GXBlendFactor dst_factor, GXLogicOp op);
void GXPokeDither(s32 dither);
void GXPokeAlphaUpdate(bool update_enable);
void GXPokeColorUpdate(bool update_enable);
#define HIO_DEV Dev
typedef void (*HIOCallback)(void);
typedef bool (*HIOEnumCallback)(s32 chan);
bool HIOEnumDevices(HIOEnumCallback callback);
bool HIOInit(s32 chan, HIOCallback callback);
bool HIOReadMailbox(u32* word);
bool HIOWriteMailbox(u32 word);
bool HIORead(u32 addr, void* buffer, s32 size);
bool HIOWrite(u32 addr, void* buffer, s32 size);
bool HIOReadAsync(u32 addr, void* buffer, s32 size, HIOCallback callback);
bool HIOWriteAsync(u32 addr, void* buffer, s32 size, HIOCallback callback);
bool HIOReadStatus(u32* status);
#define DOLPHIN_MCC_FIO_H
/* 32EA84 */ M2C_UNK fioMccChannelEvent();
/* 32EB44 */ M2C_UNK FIOInit();
/* 32EC00 */ M2C_UNK FIOExit();
/* 32EC6C */ M2C_UNK FIOQuery();
/* 32ED8C */ M2C_UNK FIOFopen();
/* 32EE94 */ M2C_UNK FIOFclose();
/* 32EF48 */ M2C_UNK FIOFwrite();
/* 32F020 */ M2C_UNK fioPacketMakeHeader();
/* 32F0E4 */ M2C_UNK fioPacketSendPacket();
/* 32F228 */ M2C_UNK fioPacketReceiveResult();
/* 32F390 */ M2C_UNK fioPacketReceiveDone();
/* 32F39C */ M2C_UNK fioPacketWrite();
/* 32F468 */ M2C_UNK fioPacketResultWrite();
#define DOLPHIN_MCC_MCC_H
/* 32C74C */ M2C_UNK callbackEventStream();
/* 32C7D0 */ M2C_UNK MCCStreamOpen();
/* 32C848 */ M2C_UNK MCCStreamClose();
/* 32C880 */ M2C_UNK MCCStreamWrite();
/* 32CA60 */ M2C_UNK LoadChannelInfo();
/* 32CB7C */ M2C_UNK FlushChannelInfo();
/* 32CC80 */ void SetChannelInfoDirty(bool dirty);
/* 32CC88 */ M2C_UNK MakeMemoryMap();
/* 32CD40 */ M2C_UNK SearchFreeBlocks();
/* 32CE40 */ M2C_UNK NotifyCompulsorily();
/* 32CF48 */ M2C_UNK WaitAMinute();
/* 32CFD8 */ M2C_UNK MailboxCheck();
/* 32D260 */ M2C_UNK MCCExiCallback();
/* 32D280 */ M2C_UNK MCCTxCallback();
/* 32D29C */ M2C_UNK MCCRxCallback();
/* 32D2B8 */ M2C_UNK mccInitializeCheck();
/* 32D5E8 */ M2C_UNK MCCInit();
/* 32D88C */ M2C_UNK MCCExit();
/* 32D954 */ M2C_UNK MCCEnumDevices();
/* 32D9AC */ M2C_UNK MCCGetFreeBlocks();
/* 32DA3C */ u8 MCCGetLastError(void);
/* 32DA44 */ M2C_UNK MCCGetChannelInfo();
/* 32DB14 */ M2C_UNK MCCGetConnectionStatus();
/* 32DBD4 */ M2C_UNK MCCNotify();
/* 32DCB0 */ M2C_UNK MCCSetChannelEventMask();
/* 32DDC0 */ M2C_UNK MCCOpen();
/* 32DFDC */ M2C_UNK MCCClose();
/* 32E1B8 */ M2C_UNK MCCRead();
/* 32E504 */ M2C_UNK MCCWrite();
/* 32E868 */ M2C_UNK MCCCheckAsyncDone();
#define __MTX_H__
void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f);
void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f);
void C_MTXIdentity(Mtx m);
void C_MTXCopy(const Mtx src, Mtx dst);
void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab);
void C_MTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase,
u32 count);
void C_MTXTranspose(const Mtx src, Mtx xPose);
void C_MTXFrustum(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f);
u32 C_MTXInverse(const Mtx src, Mtx inv);
u32 C_MTXInvXpose(const Mtx src, Mtx invX);
void PSMTXIdentity(Mtx m);
void PSMTXCopy(const Mtx src, Mtx dst);
void PSMTXConcat(const Mtx a, const Mtx b, Mtx ab);
void PSMTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase,
u32 count);
void PSMTXTranspose(const Mtx src, Mtx xPose);
u32 PSMTXInverse(const Mtx src, Mtx inv);
u32 PSMTXInvXpose(const Mtx src, Mtx invX);
#define MTXIdentity PSMTXIdentity
#define MTXCopy PSMTXCopy
#define MTXConcat PSMTXConcat
#define MTXConcatArray PSMTXConcatArray
#define MTXTranspose PSMTXTranspose
#define MTXInverse PSMTXInverse
#define MTXInvXpose PSMTXInvXpose
void C_MTXQuat(Mtx m, const Quaternion* q);
void C_MTXReflect(Mtx m, const Vec3* p, const Vec3* n);
void C_MTXTrans(Mtx m, f32 xT, f32 yT, f32 zT);
void C_MTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT);
void C_MTXScale(Mtx m, f32 xS, f32 yS, f32 zS);
void C_MTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS);
void C_MTXRotRad(Mtx m, char axis, f32 rad);
void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA);
void C_MTXRotAxisRad(Mtx m, const Vec3* axis, f32 rad);
void C_MTXLookAt(Mtx m, Vec3* cam_pos, Vec3* up, Vec3* target);
void PSMTXQuat(Mtx m, const Quaternion* q);
void PSMTXReflect(Mtx m, const Vec3* p, const Vec3* n);
void PSMTXTransApply(const Mtx src, Mtx dst, f32 xT, f32 yT, f32 zT);
void PSMTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS);
void PSMTXRotRad(Mtx m, char axis, f32 rad);
void PSMTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA);
void PSMTXRotAxisRad(Mtx m, const Vec3* axis, f32 rad);
#define MTXQuat PSMTXQuat
#define MTXReflect PSMTXReflect
#define MTXTrans PSMTXTrans
#define MTXTransApply PSMTXTransApply
#define MTXScale PSMTXScale
#define MTXScaleApply PSMTXScaleApply
#define MTXRotRad PSMTXRotRad
#define MTXRotTrig PSMTXRotTrig
#define MTXRotAxisRad PSMTXRotAxisRad
void PSMTXIdentity(Mtx m);
void PSMTXTrans(Mtx m, f32 x_trans, f32 y_trans, f32 z_trans);
void PSMTXScale(Mtx m, f32 x_scale, f32 y_scale, f32 z_scale);
#define MTXLightPerspective C_MTXLightPerspective
#define MTXLightFrustum C_MTXLightFrustum
#define MTXLightOrtho C_MTXLightOrtho
void C_MTXLightPerspective(Mtx m, f32 fov, f32 aspect, f32 x_scale,
f32 y_scale, f32 z_x_mult, f32 z_y_mult);
void C_MTXLightFrustum(Mtx m, f32 top, f32 bottom, f32 left, f32 right,
f32 near, f32 x_scale, f32 y_scale, f32 z_x_mult,
f32 z_y_mult);
void C_MTXLightOrtho(Mtx m, f32 top, f32 bottom, f32 left, f32 right,
f32 x_scale, f32 y_scale, f32 z_x_mult, f32 z_y_mult);
#define DOLPHIN_MTX_MTXVEC_H
void PSMTXMUltiVec(Mtx, Vec3*, Vec3*);
void PSMTXMultVecSR(Mtx, Vec3*, Vec3*);
#define DOLPHIN_MTX_VEC_H
#define VEC2_SQ_LEN(v) ((SQ((v).x) + SQ((v).y)))
#define VEC3_SQ_LEN(v) ((SQ((v).x) + SQ((v).y) + SQ((v).z)))
#define VECCrossProduct PSVECCrossProduct
#define VECSubtract PSVECSubtract
#define VECNormalize PSVECNormalize
#define VECAdd PSVECAdd
#define VECScale PSVECScale
#define VECMag PSVECMag
#define VECDotProduct PSVECDotProduct
void PSVECCrossProduct(Vec3* a, Vec3* b, Vec3* axb);
void PSVECSubtract(Vec3 const* a, Vec3 const* b, Vec3* ab);
void PSVECNormalize(Vec3* a, Vec3* b);
void PSVECAdd(Vec3* a, Vec3* b, Vec3* result);
void PSVECScale(Vec3* src, Vec3* dst, float scale);
float PSVECMag(Vec3* v);
float PSVECDotProduct(Vec3* a, Vec3* b);
#define DOLPHIN_OS_OSAUDIOSYSTEM_H
void __OSInitAudioSystem(void);
void __OSStopAudioSystem(void);
typedef struct OSBootInfo {
DVDDiskID DVDDiskID; // _00
u32 magic; // _20
u32 version; // _24
u32 memorySize; // _28
u32 consoleType; // _2C
void* arenaLo; // _30, overrides __ArenaLo if non-null
void* arenaHi; // _34, overrides FSTLocation if non-null
void* FSTLocation; // _38, start addr of FST area
u32 FSTMaxLength; // _3C, length of FST area
} OSBootInfo;
/** @file
* @todo Should be called @c OS.h.
*/
#define DOLPHIN_OS_OS_H
extern vu32 __PIRegs[12] ;
extern vu32 __DIRegs[16] ;
__OSExceptionHandler __OSGetExceptionHandler(u8);
__OSExceptionHandler __OSSetExceptionHandler(u8, __OSExceptionHandler);
u32 OSGetConsoleType(void);
void OSInit(void);
void __OSPSInit(void);
void OSExceptionInit(void);
void __OSDBIntegrator(void);
void __OSDBJump(void);
void __DBVECTOR(void);
void __OSEVSetNumber(void);
void __OSEVEnd(void);
void OSExceptionVector(void);
void OSDefaultExceptionHandler(void);
void ClearArena(void);
u32 __OSGetDIConfig(void);
#define DOLPHIN_OS_OSREBOOT_H
void __OSReboot(u32 resetCode, bool forceMenu);
void Run(Event);
void __OSReboot(u32 resetCode, bool forceMenu);
#define DOLPHIN_OS_OSRTC
typedef struct OSSram {
u16 checkSum;
u16 checkSumInv;
u32 ead0;
u32 ead1;
u32 counterBias;
s8 displayOffsetH;
u8 ntd;
u8 language;
u8 flags;
} OSSram;
typedef struct OSSramEx {
u8 flashID[2][12];
u32 wirelessKeyboardID;
u16 wirelessPadID[4];
u8 dvdErrorCode;
u8 _padding0;
u8 flashIDCheckSum[2];
u16 gbs;
u8 _padding1[2];
} OSSramEx;
OSSram* __OSLockSram(void);
OSSramEx* __OSLockSramEx(void);
void __OSUnlockSram(bool commit);
void __OSUnlockSramEx(bool commit);
bool __OSSyncSram(void);
u32 OSGetWirelessID(u32 chan);
void OSSetWirelessID(u32 chan, u16 id);
u32 OSGetSoundMode(void);
void OSSetSoundMode(u32 mode);
u32 OSGetProgressiveMode(void);
void OSSetProgressiveMode(u32 mode);
void WriteSramCallback(s32 unused0, OSContext* unused1);
void __OSInitSram(void);
#define DOLPHIN_OS_OSUARTEXI_H
s32 ReadUARTN(void);
void WriteUARTN(void);
s32 InitializeUART(void);
#define DOLPHIN_OS_INIT___PPC_EABI_INIT_H
void __init_user(void);
void _ExitProcess(void);
void __init_hardware(void);
void __flush_cache(void* address, size_t size);
#define DOLPHIN_OS_INIT___START_H
#define PAD3_BUTTON_ADDR 0x800030E4
#define EXCEPTIONMASK_ADDR 0x80000044
#define BOOTINFO2_ADDR 0x800000F4
#define OS_BI2_DEBUGFLAG_OFFSET 0xC
#define ARENAHI_ADDR 0x80000034
#define DEBUGFLAG_ADDR 0x800030E8
#define DVD_DEVICECODE_ADDR 0x800030E6
#define MSR_FP 0x2000
extern void InitMetroTRK(void);
u16 Pad3Button ;
extern int main(int argc, char* argv[]);
extern void exit(int);
extern void __init_user(void);
extern void OSInit(void);
extern void DBInit(void);
void __check_pad3(void);
void __start(void);
void __init_data(void);
void __init_hardware(void);
void __flush_cache(void* address, size_t size);
extern u8 _stack_addr[];
extern u8 _SDA_BASE_[];
extern u8 _SDA2_BASE_[];
typedef struct __rom_copy_info {
u8* rom;
void* addr;
size_t size;
} __rom_copy_info;
extern __rom_copy_info _rom_copy_info[];
typedef struct __bss_init_info {
void* addr;
size_t size;
} __bss_init_info;
extern __bss_init_info _bss_init_info[];
#define DOLPHIN_PAD_PADCLAMP_H
void ClampStick(s8* px, s8* py, s8 max, s8 xy, s8 min);
#define DOLPHIN_PAD_FORWARD_H
typedef struct PADStatus PADStatus;
#define _PAD_H_
#define PAD_CHAN0 0
#define PAD_CHAN1 1
#define PAD_CHAN2 2
#define PAD_CHAN3 3
#define PAD_CHANMAX 4
#define PAD_CHAN0_BIT 0x80000000
#define PAD_CHAN1_BIT 0x40000000
#define PAD_CHAN2_BIT 0x20000000
#define PAD_CHAN3_BIT 0x10000000
#define PAD_ERR_NO_CONTROLLER -1
#define PAD_ERR_NONE 0
#define PAD_SPEC_2 2
struct PADStatus {
u16 button;
s8 stickX;
s8 stickY;
s8 substickX;
s8 substickY;
u8 triggerLeft;
u8 triggerRight;
u8 analogA;
u8 analogB;
s8 err;
};
extern u32 __PADFixBits;
void PADControlMotor(int chan, u32 command);
void VISetBlack(bool);
u32 VIGetRetraceCount(void);
void PADClamp(PADStatus*);
void PADRead(PADStatus*);
void PADReset(u32);
void PADTypeAndStatusCallback(s32 chan, u32 type);
void PADSetSpec(s32);
void PADInit(void);
bool __PADDisableRecalibration(bool);
void PADRecalibrate(s32);
void PADOriginCallback(s32 unused0, s32 arg1);
void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context);
void PADProbeCallback(s32 chan, u32 error, OSContext* context);
void UpdateOrigin(s32 arg0);
#define _vi_h_
#define VIPadFrameBufferWidth(width) ((u16) (((u16) (width) + 15) & ~15))
#define VI_NTSC 0
#define VI_PAL 1
#define VI_MPAL 2
#define VI_DEBUG 3
#define VI_DEBUG_PAL 4
#define VI_EURGB60 5
typedef void (*VIRetraceCallback)(u32 retraceCount);
u32 VIGetTvFormat(void);
void VIConfigure(GXRenderModeObj*);
void VISetBlack(bool);
void VIFlush(void);
void VISetNextFrameBuffer(void*);
void VIWaitForRetrace(void);
void VIInit(void);
u32 VIGetNextField(void);
M2C_UNK VIGetDTVStatus(void);
VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback callback);
VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback);
#define GALE01_028B9C
#define MELEE_CM_FORWARD_H
// typedef struct Camera Camera;
typedef struct CameraBounds CameraBounds;
typedef struct CameraBox CameraBox;
typedef struct CameraMovement CameraMovement;
typedef struct CameraUnkGlobals CameraUnkGlobals;
#define SYSDOLPHIN_BASELIB_FORWARD_H
typedef struct HSD_AnimJoint HSD_AnimJoint;
typedef struct HSD_AObj HSD_AObj;
typedef struct HSD_AObjDesc HSD_AObjDesc;
typedef struct HSD_Archive HSD_Archive;
typedef struct HSD_ArchiveExternInfo HSD_ArchiveExternInfo;
typedef struct HSD_ArchiveHeader HSD_ArchiveHeader;
typedef struct HSD_ArchivePublicInfo HSD_ArchivePublicInfo;
typedef struct HSD_ArchiveRelocationInfo HSD_ArchiveRelocationInfo;
typedef struct HSD_ByteCodeExpDesc HSD_ByteCodeExpDesc;
typedef struct HSD_CameraAnim HSD_CameraAnim;
typedef struct HSD_CameraDescCommon HSD_CameraDescCommon;
typedef struct HSD_CameraDescFrustum HSD_CameraDescFrustum;
typedef struct HSD_CameraDescPerspective HSD_CameraDescPerspective;
typedef struct HSD_CObj HSD_CObj;
typedef struct HSD_CObjInfo HSD_CObjInfo;
typedef struct HSD_DObj HSD_DObj;
typedef struct HSD_DObjDesc HSD_DObjDesc;
typedef struct HSD_DObjInfo HSD_DObjInfo;
typedef struct HSD_Envelope HSD_Envelope;
typedef struct HSD_EnvelopeDesc HSD_EnvelopeDesc;
typedef struct HSD_Exp HSD_Exp;
typedef struct HSD_ExpDesc HSD_ExpDesc;
typedef struct HSD_Fog HSD_Fog;
typedef struct HSD_FogAdj HSD_FogAdj;
typedef struct HSD_FogAdjDesc HSD_FogAdjDesc;
typedef struct HSD_FogAdjInfo HSD_FogAdjInfo;
typedef struct HSD_FogDesc HSD_FogDesc;
typedef struct HSD_FogInfo HSD_FogInfo;
typedef struct HSD_GObj HSD_GObj;
typedef struct HSD_GObjProc HSD_GObjProc;
typedef struct HSD_Hash HSD_Hash;
typedef struct HSD_HashEntry HSD_HashEntry;
typedef struct HSD_IKHint HSD_IKHint;
typedef struct HSD_IKHintDesc HSD_IKHintDesc;
typedef struct HSD_ImageDesc HSD_ImageDesc;
typedef struct HSD_JObj HSD_JObj;
typedef struct HSD_Joint HSD_Joint;
typedef struct HSD_LightAnim HSD_LightAnim;
typedef struct HSD_LightAttn HSD_LightAttn;
typedef struct HSD_LightDesc HSD_LightDesc;
typedef struct HSD_LightPoint HSD_LightPoint;
typedef struct HSD_LightPointDesc HSD_LightPointDesc;
typedef struct HSD_LightSpot HSD_LightSpot;
typedef struct HSD_LightSpotDesc HSD_LightSpotDesc;
typedef struct HSD_LObj HSD_LObj;
typedef struct HSD_LObjInfo HSD_LObjInfo;
typedef struct HSD_MatAnimJoint HSD_MatAnimJoint;
typedef struct HSD_Material HSD_Material;
typedef struct HSD_MObj HSD_MObj;
typedef struct HSD_MObjInfo HSD_MObjInfo;
typedef struct HSD_Obj HSD_Obj;
typedef struct HSD_PadData HSD_PadData;
typedef struct HSD_PadRumbleListData HSD_PadRumbleListData;
typedef struct HSD_PadStatus HSD_PadStatus;
typedef struct HSD_PEDesc HSD_PEDesc;
typedef struct HSD_PObj HSD_PObj;
typedef struct HSD_PObjDesc HSD_PObjDesc;
typedef struct HSD_PObjInfo HSD_PObjInfo;
typedef struct HSD_RObj HSD_RObj;
typedef struct HSD_RObjAnimJoint HSD_RObjAnimJoint;
typedef struct HSD_RObjDesc HSD_RObjDesc;
typedef struct HSD_RumbleData HSD_RumbleData;
typedef struct HSD_Rvalue HSD_Rvalue;
typedef struct HSD_RvalueList HSD_RvalueList;
typedef struct HSD_Shadow HSD_Shadow;
typedef struct HSD_ShapeAnim HSD_ShapeAnim;
typedef struct HSD_ShapeAnimDObj HSD_ShapeAnimDObj;
typedef struct HSD_ShapeAnimJoint HSD_ShapeAnimJoint;
typedef struct HSD_ShapeSet HSD_ShapeSet;
typedef struct HSD_ShapeSetDesc HSD_ShapeSetDesc;
typedef struct HSD_SM HSD_SM;
typedef struct HSD_Spline HSD_Spline;
typedef struct HSD_TExpDag HSD_TExpDag;
typedef struct HSD_TExpRes HSD_TExpRes;
typedef struct HSD_TObj HSD_TObj;
typedef struct HSD_ViewingRect HSD_ViewingRect;
typedef struct HSD_VtxDescList HSD_VtxDescList;
typedef struct HSD_WObj HSD_WObj;
typedef struct HSD_WObjAnim HSD_WObjAnim;
typedef struct HSD_WObjDesc HSD_WObjDesc;
typedef struct HSD_WObjInfo HSD_WObjInfo;
typedef struct PadLibData PadLibData;
typedef struct RumbleCommand RumbleCommand;
typedef struct RumbleInfo RumbleInfo;
typedef struct TextKerning TextKerning;
typedef struct UnkGeneratorMember UnkGeneratorMember;
typedef struct UnkGeneratorStruct UnkGeneratorStruct;
typedef union HSD_CObjDesc HSD_CObjDesc;
typedef union HSD_ObjData HSD_ObjData;
typedef union HSD_Rumble HSD_Rumble;
typedef union HSD_TExp HSD_TExp;
typedef void (*GObj_RenderFunc)(HSD_GObj* gobj, int code);
typedef void (*HSD_ObjUpdateFunc)(void* obj, enum_t type, HSD_ObjData* fval);
typedef void (*HSD_DevComCallback)(void*, int, void*, bool cancelflag);
typedef void (*HSD_GObjEvent)(HSD_GObj* gobj);
typedef void (*HSD_UserDataEvent)(void* user_data);
typedef bool (*HSD_GObjPredicate)(HSD_GObj* gobj);
typedef void (*HSD_GObjInteraction)(HSD_GObj* gobj0, HSD_GObj* gobj1);
typedef void (*HSD_MObjSetupFunc)(HSD_MObj* mobj, u32 rendermode);
#define HSD_A_S_W0 2
#define HSD_DEFAULT_MAX_SHAPE_VERTICES 2000
#define HSD_DEFAULT_MAX_SHAPE_NORMALS 2000
#define POBJ_ANIM (1 << 3)
#define POBJ_SKIN (0 << 12)
#define POBJ_SHAPEANIM (1 << 12)
#define POBJ_ENVELOPE (2 << 12)
#define pobj_type(o) (o->flags & 0x3000)
#define POBJ_CULLFRONT (1 << 14)
#define POBJ_CULLBACK (1 << 15)
#define SHAPESET_AVERAGE 1
#define SHAPESET_ADDITIVE 1 << 1
typedef enum PObjSetupFlag {
SETUP_NORMAL = 1,
SETUP_REFLECTION = 2,
SETUP_HIGHLIGHT = 4,
SETUP_NORMAL_PROJECTION = 6,
SETUP_JOINT0 = 1,
SETUP_JOINT1 = 2,
SETUP_NONE = 0
} PObjSetupFlag;
typedef enum HSD_TrspMask {
HSD_TRSP_OPA = 1,
HSD_TRSP_XLU = 2,
HSD_TRSP_TEXEDGE = 4,
HSD_TRSP_ALL = 7,
} HSD_TrspMask;
#define HSD_A_L_LITC_R 9
#define HSD_A_L_LITC_G 10
#define HSD_A_L_LITC_B 11
#define HSD_A_L_VIS 12
#define HSD_A_L_A0 13
#define HSD_A_L_A1 14
#define HSD_A_L_A2 15
#define HSD_A_L_K0 16
#define HSD_A_L_K1 17
#define HSD_A_L_K2 18
#define HSD_A_L_CUTOFF 19
#define HSD_A_L_REFDIST 20
#define HSD_A_L_REFBRIGHT 21
#define HSD_A_L_LITC_A 22
#define LOBJ_AMBIENT (0 << 0)
#define LOBJ_INFINITE (1 << 0)
#define LOBJ_POINT (2 << 0)
#define LOBJ_SPOT (3 << 0)
#define LOBJ_DIFFUSE (1 << 2)
#define LOBJ_SPECULAR (1 << 3)
#define LOBJ_ALPHA (1 << 4)
#define LOBJ_HIDDEN (1 << 5)
#define LOBJ_RAW_PARAM (1 << 6)
#define LOBJ_DIFF_DIRTY (1 << 7)
#define LOBJ_SPEC_DIRTY (1 << 8)
#define LOBJ_TYPE_MASK 3
#define LOBJ_LIGHT_ATTN_NONE 0
#define LOBJ_LIGHT_ATTN 1
#define MELEE_CM_TYPES_H
struct CameraBox {
CameraBox* next;
CameraBox* prev;
bool x8;
/* +C:0 */ u8 xC_b0 : 1;
u8 xD_fill[0x10 - 0xD];
Vec3 x10; // might be Vec2?
Vec3 x1C;
float x28;
Vec2 x2C;
Vec3 x34;
Vec2 x40;
Vec3 x48;
Vec3 x54;
Vec3 x60;
};
struct CameraMovement {
/* +0 */ Vec3 interest;
/* +C */ Vec3 target_interest;
/* +18 */ Vec3 position;
/* +24 */ Vec3 target_position;
/* +30 */ float fov;
/* +34 */ float target_fov;
};
struct CameraBounds {
float x_min;
float y_min;
float x_max;
float y_max;
int subjects;
float z_pos;
};
struct UnkInternalCameraStruct {
/* 0x0 */ s32 x0;
/* 0x4 */ s32 x4;
/* 0x8 */ s32 x8;
/* 0xC */ s32 xC;
};
typedef struct Camera {
/* 0x000 */ HSD_GObj* gobj;
/* 0x004 */ u32 mode;
/* 0x008 */ u8 background_r;
/* 0x009 */ u8 background_g;
/* 0x00A */ u8 background_b;
/* 0x00B */ s8 pad_B;
/* 0x00C */ f32 nearz;
/* 0x010 */ f32 farz;
/* 0x014 */ CameraMovement movement;
/* 0x04C */ CameraMovement movement_lerp;
/* 0x084 */ Vec2 translation;
/* 0x08C */ s32 unk_8C[5]; /* maybe part of translation[4]? */
/* 0x0A0 */ HSD_GObj* unk_A0;
/* 0x0A4 */ f32 unk_A4;
/* 0x0A8 */ f32 unk_A8;
/* 0x0AC */ f32 unk_AC; /* inferred */
/* 0x0B0 */ struct UnkInternalCameraStruct unk_B0[2][8];
/* 0x1B0 */ struct UnkInternalCameraStruct unk_1B0[2][8];
/* 0x2B0 */ u8 pad_2B0[0x2BC - 0x2B0];
/* 0x2BC */ f32 unk_2bc;
/* 0x2C0 */ f32 unk_2c0;
/* 0x2C4 */ char pad_2C4[0x7D]; /* maybe part of unk_2c0[0x20]? */
/* 0x341:0 */ u8 unk_341_b0 : 1;
/* 0x341:1 */ u8 unk_341_b1 : 1;
/* 0x341:2 */ u8 unk_341_b2 : 1;
/* 0x341:3 */ u8 unk_341_b3 : 1;
/* 0x341:4 */ u8 unk_341_b4 : 1;
/* 0x341:5 */ u8 unk_341_b5 : 1;
/* 0x341:6 */ u8 unk_341_b6 : 1;
/* 0x341:7 */ u8 unk_341_b7 : 1;
/* 0x342 */ char pad_342[0x56]; /* maybe part of unk_341[0x57]? */
/* 0x398:0 */ u8 unk_398_b0 : 1;
/* 0x398:1 */ u8 unk_398_b1 : 1;
/* 0x398:2 */ u8 unk_398_b2 : 1;
/* 0x398:3 */ u8 unk_398_b3 : 1;
/* 0x398:4 */ u8 unk_398_b4 : 1;
/* 0x398:5 */ u8 unk_398_b5 : 1;
/* 0x398:6 */ u8 unk_398_b6_b7 : 2;
/* 0x399:0 */ u8 unk_399_b0_b1 : 2;
/* 0x399:2 */ u8 unk_399_b2 : 1;
/* 0x399:3 */ u8 unk_399_b3 : 1;
/* 0x399:4 */ u8 unk_399_b4 : 1;
/* 0x399:5 */ u8 unk_399_b5 : 1;
/* 0x399:6 */ u8 unk_399_b6 : 1;
/* 0x399:7 */ u8 unk_399_b7 : 1;
/* 0x39A:0 */ u8 unk_39A_b0 : 1;
/* 0x39A:1 */ u8 unk_39A_b1 : 1;
/* 0x39A:2 */ u8 unk_39A_b2 : 1;
/* 0x39A:3 */ u8 unk_39A_b3 : 1;
/* 0x39A:4 */ u8 unk_39A_b4 : 1;
/* 0x39A:5 */ u8 unk_39A_b5 : 1;
/* 0x39A:6 */ u8 unk_39A_b6 : 1;
/* 0x39A:7 */ u8 unk_39A_b7 : 1;
/* 0x39B */ char pad_39B[5]; /* maybe part of unk_39A[6]? */
/* 0x3A0 */ u32 last_mode;
} Camera; /* size = 0x3A4 */
/// @todo Size should be 0x39C like #cm_80452C68
struct { int x[1 - 2 * !(sizeof(struct Camera) == 0x3A4)]; };;
struct CameraUnkGlobals {
/* +0 */ float _0[11];
/* +2C */ float x2C;
/* +30 */ float x30;
/* +34 */ float x34;
/* +38 */ float x38;
/* +3C */ float x3C;
/* +40 */ float x40;
/* +44 */ float _44[43];
};
#define _cobj_h_
#define _object_h_
#define _class_h_
#define HSD_CLASS_INFO(o) ((HSD_ClassInfo*) o)
#define HSD_CLASS_METHOD(o) (((HSD_Class*) o)->class_info)
#define HSD_PARENT_INFO(o) ((o)->parent.head.parent)
#define next_p(p) (p != NULL ? p->next : NULL)
typedef struct _HSD_Class {
struct _HSD_ClassInfo* class_info;
} HSD_Class;
typedef struct _HSD_ClassInfoHead {
void (*info_init)(void);
u32 flags;
char* library_name;
char* class_name;
s16 obj_size;
s16 info_size;
struct _HSD_ClassInfo* parent;
struct _HSD_ClassInfo* next;
struct _HSD_ClassInfo* child;
u32 nb_exist;
u32 nb_peak;
} HSD_ClassInfoHead;
typedef struct _HSD_ClassInfo {
struct _HSD_ClassInfoHead head;
HSD_Class* (*alloc)(struct _HSD_ClassInfo* c);
int (*init)(struct _HSD_Class* c);
void (*release)(struct _HSD_Class* c);
void (*destroy)(struct _HSD_Class* c);
void (*amnesia)(struct _HSD_ClassInfo* c);
} HSD_ClassInfo;
typedef struct _HSD_FreeList {
struct _HSD_FreeList* next;
} HSD_FreeList;
typedef struct _HSD_MemoryEntry {
u32 size;
u32 nb_alloc;
u32 nb_free;
struct _HSD_FreeList* free_list;
struct _HSD_MemoryEntry* next;
} HSD_MemoryEntry;
extern HSD_ClassInfo hsdClass;
// void hsdDelete(void* object);
void ClassInfoInit(HSD_ClassInfo* info);
void hsdInitClassInfo(HSD_ClassInfo* class_info, HSD_ClassInfo* parent_info,
char* base_class_library, char* type, s32 info_size,
s32 class_size);
void OSReport_PrintSpaces(s32 count);
void* hsdAllocMemPiece(s32 size);
void hsdFreeMemPiece(void* mem, s32 size);
void* hsdNew(HSD_ClassInfo*);
bool hsdChangeClass(void* object, void* class_info);
bool hsdIsDescendantOf(void* info, void* p);
bool hsdObjIsDescendantOf(HSD_Obj* o, HSD_ClassInfo* p);
HSD_ClassInfo* hsdSearchClassInfo(const char* class_name);
void hsdForgetClassLibrary(const char* library_name);
HSD_MemoryEntry* GetMemoryEntry(s32 idx);
HSD_Class* _hsdClassAlloc(HSD_ClassInfo* info);
int _hsdClassInit(HSD_Class* arg0);
void _hsdClassRelease(HSD_Class* cls);
void _hsdClassDestroy(HSD_Class* cls);
void _hsdClassAmnesia(HSD_ClassInfo* info);
void class_set_flags(HSD_ClassInfo* class_info, s32 set, s32 reset);
void ForgetClassLibraryReal(HSD_ClassInfo* class_info);
void DumpClassStat(HSD_ClassInfo* info, s32 level);
void hsdDumpClassStat(HSD_ClassInfo* info, bool recursive, s32 level);
void ForgetClassLibraryChild(const char* library_name,
HSD_ClassInfo* class_info);
static inline void hsdDelete(void* object)
{
if (object == ((void*) 0)) {
return;
}
(((HSD_Class*) object)->class_info)->release((HSD_Class*) object);
(((HSD_Class*) object)->class_info)->destroy((HSD_Class*) object);
}
#define SYSDOLPHIN_BASELIB_DEBUG_H
typedef void (*ReportCallback)(s32, s32);
typedef void (*PanicCallback)(OSContext*, ...);
typedef int (*LogFunc)(s32, s32, s32*, s32);
void __assert(char*, u32, char*);
void HSD_LogInit(void);
void HSD_Panic(char*, u32, char*);
/// @todo Take @c file as another arg, ignore it if @c BUGFIX.
/// @todo Add another variant that takes a string for @c cond.
#define HSD_ASSERT(line, cond) ((cond) ? ((void) 0) : __assert(__FILE__, line, #cond))
int report_func(s32 arg0, s32 arg1, s32* arg2, s32 arg3);
void HSD_SetReportCallback(ReportCallback cb);
void HSD_SetPanicCallback(PanicCallback cb);
#define HSD_OBJ_NOREF ((u16) - 1)
#define HSD_OBJ(o) ((HSD_Obj*) o)
#define HSD_OBJECT_INFO(o) (o.parent.parent)
#define HSD_OBJECT_METHOD(o) (o->parent.parent.class_info)
#define HSD_OBJECT_PARENT_INFO(o) ((o)->parent.parent.head.parent)
typedef enum _HSD_Type {
AOBJ_TYPE = 1,
COBJ_TYPE,
DOBJ_TYPE,
FOBJ_TYPE,
FOG_TYPE,
JOBJ_TYPE,
LOBJ_TYPE,
MOBJ_TYPE,
POBJ_TYPE,
ROBJ_TYPE,
TOBJ_TYPE,
WOBJ_TYPE,
RENDER_TYPE,
CHAN_TYPE,
TEVREG_TYPE,
CBOBJ_TYPE,
HSD_MAX_TYPE,
} HSD_Type;
#define MASK_OF(type) (1 << ((type) - 1))
typedef enum _HSD_TypeMask {
AOBJ_MASK = (1 << ((AOBJ_TYPE) - 1)),
COBJ_MASK = (1 << ((COBJ_TYPE) - 1)),
DOBJ_MASK = (1 << ((DOBJ_TYPE) - 1)),
FOBJ_MASK = (1 << ((FOBJ_TYPE) - 1)),
FOG_MASK = (1 << ((FOG_TYPE) - 1)),
JOBJ_MASK = (1 << ((JOBJ_TYPE) - 1)),
LOBJ_MASK = (1 << ((LOBJ_TYPE) - 1)),
MOBJ_MASK = (1 << ((MOBJ_TYPE) - 1)),
POBJ_MASK = (1 << ((POBJ_TYPE) - 1)),
ROBJ_MASK = (1 << ((ROBJ_TYPE) - 1)),
TOBJ_MASK = (1 << ((TOBJ_TYPE) - 1)),
WOBJ_MASK = (1 << ((WOBJ_TYPE) - 1)),
RENDER_MASK = (1 << ((RENDER_TYPE) - 1)),
CHAN_MASK = (1 << ((CHAN_TYPE) - 1)),
TEVREG_MASK = (1 << ((TEVREG_TYPE) - 1)),
CBOBJ_MASK = (1 << ((CBOBJ_TYPE) - 1)),
ALL_TYPE_MASK = (1 << ((HSD_MAX_TYPE) - 1)) - 1,
} HSD_TypeMask;
struct HSD_Obj {
struct _HSD_Class parent;
u16 ref_count;
u16 ref_count_individual;
};
typedef struct _HSD_ObjInfo {
struct _HSD_ClassInfo parent;
} HSD_ObjInfo;
extern HSD_ClassInfo hsdObj;
void ObjInfoInit(void);
static inline bool ref_DEC(void* o)
{
bool ret;
if ((ret = (((HSD_Obj*) o)->ref_count == ((u16) - 1)))) {
return ret;
}
return ((HSD_Obj*) o)->ref_count-- == 0;
}
static inline void ref_INC(void* o)
{
if (o != ((void*) 0)) {
((HSD_Obj*) o)->ref_count++;
((((HSD_Obj*) o)->ref_count != ((u16) - 1)) ? ((void) 0) : __assert("src/sysdolphin/baselib/object.h", 93, "HSD_OBJ(o)->ref_count != HSD_OBJ_NOREF"));
}
}
static inline int ref_CNT(void* o)
{
if (((HSD_Obj*) o)->ref_count == ((u16) - 1)) {
return -1;
} else {
return ((HSD_Obj*) o)->ref_count;
}
}
static inline int iref_CNT(void* o)
{
return ((HSD_Obj*) o)->ref_count_individual;
}
static inline bool iref_DEC(void* o)
{
bool ret;
if ((ret = (((HSD_Obj*) o)->ref_count_individual == 0))) {
return ret;
}
((HSD_Obj*) o)->ref_count_individual -= 1;
return ((HSD_Obj*) o)->ref_count_individual == 0;
}
static inline void iref_INC(void* o)
{
((HSD_Obj*) o)->ref_count_individual++;
((((HSD_Obj*) o)->ref_count_individual != 0) ? ((void) 0) : __assert("src/sysdolphin/baselib/object.h", 158, "HSD_OBJ(o)->ref_count_individual != 0"));
}
#define PROJ_PERSPECTIVE 1
#define PROJ_FRUSTUM 2
#define PROJ_ORTHO 3
typedef struct _Scissor {
u16 left;
u16 right;
u16 top;
u16 bottom;
} Scissor;
typedef struct _HSD_RectS16 {
s16 xmin;
s16 xmax;
s16 ymin;
s16 ymax;
} HSD_RectS16;
typedef struct _HSD_RectF32 {
f32 xmin;
f32 xmax;
f32 ymin;
f32 ymax;
} HSD_RectF32;
struct HSD_CObj {
/* +0 */ HSD_Obj parent;
/* +8 */ u32 flags;
/* +C */ HSD_RectF32 viewport;
/* +1C */ Scissor scissor;
/* +24 */ HSD_WObj* eyepos;
/* +28 */ HSD_WObj* interest;
union {
/* +2C */ f32 roll;
/* +2C */ Vec3 up;
} u;
/* +38 */ f32 near;
/* +3C */ f32 far;
union {
struct {
f32 fov;
f32 aspect;
} perspective;
struct {
f32 top;
f32 bottom;
f32 left;
f32 right;
} frustum;
struct {
f32 top;
f32 bottom;
f32 left;
f32 right;
} ortho;
} projection_param;
/* +50 */ u8 projection_type;
/* +54 */ Mtx view_mtx;
/* +84 */ HSD_AObj* aobj;
/* +88 */ Mtx* proj_mtx;
};
struct HSD_CameraDescCommon {
char* class_name; // 0x00
u16 flags; // 0x04
u16 projection_type; // 0x06
HSD_RectS16 viewport;
Scissor scissor;
HSD_WObjDesc* eyepos; // 0x18
HSD_WObjDesc* interest; // 0x1C
f32 roll; // 0x20
Vec3* up_vector; // 0x24
f32 nnear; // 0x28
f32 ffar; // 0x2C
};
struct HSD_CameraDescFrustum {
char* class_name; // 0x00
u16 flags; // 0x04
u16 projection_type; // 0x06
HSD_RectS16 viewport;
Scissor scissor;
HSD_WObjDesc* eyepos; // 0x18
HSD_WObjDesc* interest; // 0x1C
f32 roll; // 0x20
Vec3* up_vector; // 0x24
f32 nnear; // 0x28
f32 ffar; // 0x2C
f32 top;
f32 bottom;
f32 left;
f32 right;
};
struct HSD_CameraDescPerspective {
char* class_name; // 0x00
u16 flags; // 0x04
u16 projection_type; // 0x06
HSD_RectS16 viewport;
Scissor scissor;
HSD_WObjDesc* eyepos; // 0x18
HSD_WObjDesc* interest; // 0x1C
f32 roll; // 0x20
Vec3* up_vector; // 0x24
f32 nnear; // 0x28
f32 ffar; // 0x2C
f32 fov;
f32 aspect;
};
union HSD_CObjDesc {
char* class_name;
HSD_CameraDescCommon common;
HSD_CameraDescFrustum frustum;
HSD_CameraDescFrustum ortho;
HSD_CameraDescPerspective perspective;
};
struct HSD_CObjInfo {
HSD_ObjInfo parent;
int (*load)(HSD_CObj* cobj, HSD_CObjDesc* desc);
};
struct HSD_CameraAnim {
HSD_AObjDesc* aobjdesc;
HSD_WObjAnim* eye_anim;
HSD_WObjAnim* interest_anim;
};
typedef struct _cobj_Unk1 cobj_Unk1;
#define HSD_COBJ(o) ((HSD_CObj*) (o))
#define HSD_COBJ_INFO(i) ((HSD_CObjInfo*) (i))
#define HSD_COBJ_METHOD(o) HSD_COBJ_INFO(HSD_OBJECT_METHOD(o))
void HSD_CObjEraseScreen(HSD_CObj* cobj, s32 enable_color, s32 enable_alpha,
s32 enable_depth);
void HSD_CObjRemoveAnim(HSD_CObj* cobj);
HSD_WObj* HSD_CObjGetInterestWObj(HSD_CObj* cobj);
void HSD_CObjSetInterestWObj(HSD_CObj* cobj, HSD_WObj* interest);
HSD_WObj* HSD_CObjGetEyePositionWObj(HSD_CObj* cobj);
void HSD_CObjSetEyePositionWObj(HSD_CObj* cobj, HSD_WObj* eyepos);
void HSD_CObjSetInterest(HSD_CObj* cobj, Vec3*);
void HSD_CObjSetEyePosition(HSD_CObj* cobj, Vec3*);
bool HSD_CObjSetCurrent(HSD_CObj*);
void HSD_CObjEndCurrent(void);
void HSD_CObjSetViewportfx4(HSD_CObj*, f32, f32, f32, f32);
void HSD_CObjGetEyePosition(HSD_CObj* cobj, Vec3* cam_pos);
int HSD_CObjGetEyeVector(HSD_CObj* cobj, Vec3* eye);
int HSD_CObjGetUpVector(HSD_CObj* cobj, Vec3* up);
void HSD_CObjGetInterest(HSD_CObj* cobj, Vec3* interest);
HSD_CObj* HSD_CObjAlloc(void);
void HSD_CObjRemoveAnimByFlags(HSD_CObj* cobj, u32 flags);
void HSD_CObjAddAnim(HSD_CObj* cobj, HSD_CameraAnim* canim);
void HSD_CObjAnim(HSD_CObj* cobj);
void HSD_CObjReqAnim(HSD_CObj* cobj, f32 startframe);
GXProjectionType makeProjectionMtx(HSD_CObj* cobj, Mtx mtx);
void HSD_CObjSetupViewingMtx(HSD_CObj* cobj);
f32 HSD_CObjGetEyeDistance(HSD_CObj* cobj);
void HSD_CObjSetUpVector(HSD_CObj* cobj, Vec3* up);
int HSD_CObjGetLeftVector(HSD_CObj* cobj, Vec3* left);
void HSD_CObjSetMtxDirty(HSD_CObj* cobj);
bool HSD_CObjMtxIsDirty(HSD_CObj*);
void HSD_CObjGetViewingMtx(HSD_CObj* cobj, Mtx mtx);
MtxPtr HSD_CObjGetInvViewingMtxPtrDirect(HSD_CObj* cobj);
MtxPtr HSD_CObjGetViewingMtxPtr(HSD_CObj* cobj);
MtxPtr HSD_CObjGetInvViewingMtxPtr(HSD_CObj* cobj);
void HSD_CObjSetRoll(HSD_CObj* cobj, f32);
f32 HSD_CObjGetFov(HSD_CObj* cobj);
void HSD_CObjSetFov(HSD_CObj*, f32);
f32 HSD_CObjGetAspect(HSD_CObj* cobj);
void HSD_CObjSetAspect(HSD_CObj* cobj, f32 aspect);
f32 HSD_CObjGetTop(HSD_CObj* cobj);
void HSD_CObjSetTop(HSD_CObj* cobj, f32 top);
f32 HSD_CObjGetBottom(HSD_CObj* cobj);
void HSD_CObjSetBottom(HSD_CObj* cobj, f32 bottom);
f32 HSD_CObjGetLeft(HSD_CObj* cobj);
void HSD_CObjSetLeft(HSD_CObj* cobj, f32 left);
f32 HSD_CObjGetRight(HSD_CObj* cobj);
void HSD_CObjSetRight(HSD_CObj* cobj, f32 right);
f32 HSD_CObjGetNear(HSD_CObj*);
void HSD_CObjSetNear(HSD_CObj* cobj, f32 near);
f32 HSD_CObjGetFar(HSD_CObj*);
void HSD_CObjSetFar(HSD_CObj* cobj, f32 far);
void HSD_CObjGetScissor(HSD_CObj* cobj, Scissor*);
void HSD_CObjSetScissor(HSD_CObj* cobj, Scissor*);
void HSD_CObjSetScissorx4(HSD_CObj*, u16 left, u16 right, u16 top, u16 bottom);
void HSD_CObjGetViewportf(HSD_CObj* cobj, HSD_RectF32*);
void HSD_CObjSetViewport(HSD_CObj* cobj, HSD_RectS16* viewport);
void HSD_CObjSetViewportf(HSD_CObj* cobj, HSD_RectF32*);
u32 HSD_CObjGetProjectionType(HSD_CObj*);
void HSD_CObjSetProjectionType(HSD_CObj*, u32);
void HSD_CObjSetPerspective(HSD_CObj* cobj, f32 fov, f32 aspect);
void HSD_CObjSetFrustum(HSD_CObj*, f32 top, f32 bottom, f32 left, f32 right);
void HSD_CObjSetOrtho(HSD_CObj*, f32 top, f32 bottom, f32 left, f32 right);
void HSD_CObjGetPerspective(HSD_CObj* cobj, f32* top, f32* bottom);
void HSD_CObjGetOrtho(HSD_CObj*, f32* top, f32* bottom, f32* left, f32* right);
u32 HSD_CObjGetFlags(HSD_CObj* cobj);
void HSD_CObjSetFlags(HSD_CObj*, u32);
void HSD_CObjClearFlags(HSD_CObj*, u32);
HSD_CObj* HSD_CObjGetCurrent(void);
void HSD_CObjInit(HSD_CObj* cobj, HSD_CObjDesc* desc);
HSD_CObj* HSD_CObjLoadDesc(HSD_CObjDesc* desc);
void HSD_CObjSetDefaultClass(HSD_ClassInfo* info);
static inline MtxPtr HSD_CObjGetViewingMtxPtrDirect(HSD_CObj* cobj)
{
return cobj->view_mtx;
}
/* 028B9C */ void Camera_80028B9C(int);
/* 028F5C */ void Camera_80028F5C(CameraBox* subject, s32 arg1);
/* 029020 */ CameraBox* Camera_80029020(void);
/* 029044 */ CameraBox* Camera_80029044(int);
/* 0290D4 */ void Camera_800290D4(CameraBox*);
/* 029124 */ u32 Camera_80029124(Vec3*, s32);
/* 02928C */ s32 Camera_8002928C(CameraBox*);
/* 0293E0 */ M2C_UNK Camera_800293E0();
/* 02958C */ M2C_UNK Camera_8002958C();
/* 029AAC */ void Camera_80028F5C(CameraBox*, s32);
/* 029BC4 */ void Camera_80029BC4(CameraBounds* bounds,
CameraMovement* movement);
/* 029C88 */ void Camera_80029C88(CameraMovement* movement, f32);
/* 029CF8 */ M2C_UNK Camera_80029CF8();
/* 02A0C0 */ M2C_UNK Camera_8002A0C0();
/* 02A278 */ void Camera_8002A278(float x, float y);
/* 02A28C */ M2C_UNK Camera_8002A28C();
/* 02A4AC */ void Camera_8002A4AC(HSD_GObj*);
/* 02A768 */ void Camera_8002A768(CameraMovement* movement, int arg1);
/* 02AF68 */ M2C_UNK Camera_8002AF68();
/* 02B0E0 */ M2C_UNK Camera_8002B0E0();
/* 02B1F8 */ void Camera_8002B1F8(CameraMovement* movement);
/* 02B3D4 */ M2C_UNK Camera_8002B3D4();
/* 02B694 */ M2C_UNK Camera_8002B694();
/* 02BA00 */ M2C_UNK Camera_8002BA00();
/* 02BAA8 */ M2C_UNK Camera_8002BAA8();
/* 02BC78 */ M2C_UNK Camera_8002BC78();
/* 02BD88 */ M2C_UNK Camera_8002BD88();
/* 02C010 */ M2C_UNK Camera_8002C010();
/* 02C1A8 */ M2C_UNK Camera_8002C1A8();
/* 02C5B4 */ M2C_UNK Camera_8002C5B4();
/* 02C908 */ M2C_UNK Camera_8002C908();
/* 02CB0C */ M2C_UNK Camera_8002CB0C();
/* 02CDDC */ M2C_UNK Camera_8002CDDC();
/* 02D318 */ M2C_UNK Camera_8002D318();
/* 02D85C */ M2C_UNK Camera_8002D85C();
/* 02DDC4 */ M2C_UNK Camera_8002DDC4();
/* 02DFE4 */ M2C_UNK Camera_8002DFE4();
/* 02E158 */ M2C_UNK Camera_8002E158();
/* 02E234 */ M2C_UNK Camera_8002E234();
/* 02E490 */ M2C_UNK Camera_8002E490();
/* 02E6FC */ void Camera_8002E6FC(u8);
/* 02E818 */ void Camera_8002E818(Vec3*);
/* 02E948 */ void Camera_8002E948(bool (*)(Vec3*));
/* 02EA64 */ void Camera_8002EA64(Vec3*);
/* 02EB5C */ void Camera_8002EB5C(float);
/* 02EC7C */ void Camera_8002EC7C(float);
/* 02ED9C */ void Camera_8002ED9C(float);
/* 02EEC8 */ void Camera_8002EEC8(float);
/* 02EF14 */ void Camera_8002EF14(void);
/* 02F0E4 */ void Camera_8002F0E4(s32);
/* 02F260 */ bool Camera_8002F260(void);
/* 02F274 */ void Camera_8002F274(void);
/* 02F360 */ M2C_UNK fn_8002F360();
/* 02F3AC */ M2C_UNK Camera_8002F3AC();
/* 02F474 */ void Camera_8002F474(void);
/* 02F488 */ M2C_UNK fn_8002F488();
/* 02F4D4 */ M2C_UNK Camera_8002F4D4();
/* 02F73C */ M2C_UNK Camera_8002F73C();
/* 02F760 */ M2C_UNK Camera_8002F760();
/* 02F784 */ M2C_UNK Camera_8002F784();
/* 02F7AC */ M2C_UNK Camera_8002F7AC();
/* 02F8F4 */ void Camera_8002F8F4(void);
/* 02F908 */ M2C_UNK fn_8002F908();
/* 02F9E4 */ M2C_UNK Camera_8002F9E4();
/* 02FBA0 */ M2C_UNK fn_8002FBA0();
/* 02FC7C */ M2C_UNK Camera_8002FC7C();
/* 02FE38 */ M2C_UNK Camera_8002FE38();
/* 02FEEC */ M2C_UNK Camera_8002FEEC();
/* 03006C */ M2C_UNK Camera_8003006C();
/* 0300F0 */ M2C_UNK Camera_800300F0();
/* 03010C */ M2C_UNK Camera_8003010C();
/* 030130 */ M2C_UNK Camera_80030130();
/* 030154 */ M2C_UNK Camera_80030154();
/* 030178 */ M2C_UNK Camera_80030178();
/* 03019C */ M2C_UNK Camera_8003019C();
/* 0301D0 */ M2C_UNK fn_800301D0();
/* 0304E0 */ M2C_UNK Camera_800304E0();
/* 030688 */ M2C_UNK Camera_80030688();
/* 030730 */ void Camera_80030730(f32 arg8);
/* 030740 */ void Camera_80030740(u8 r, u8 g, u8 b);
/* 030758 */ M2C_UNK Camera_80030758();
/* 030788 */ void Camera_80030788(Vec3*);
/* 0307AC */ M2C_UNK Camera_800307AC();
/* 0307D0 */ M2C_UNK Camera_800307D0();
/* 030A50 */ HSD_GObj* Camera_80030A50(void);
/* 030A60 */ M2C_UNK Camera_80030A60();
/* 030A78 */ bool Camera_80030A78(void);
/* 030A8C */ M2C_UNK Camera_80030A8C();
/* 030AA4 */ M2C_UNK Camera_80030AA4();
/* 030AC4 */ M2C_UNK Camera_80030AC4();
/* 030AE0 */ M2C_UNK Camera_80030AE0();
/* 030AF8 */ bool Camera_80030AF8(void);
/* 030B0C */ M2C_UNK Camera_80030B0C();
/* 030B24 */ bool Camera_80030B24(void);
/* 030B38 */ M2C_UNK Camera_80030B38();
/* 030B50 */ bool Camera_80030B50(void);
/* 030B64 */ M2C_UNK Camera_80030B64();
/* 030B7C */ bool Camera_80030B7C(void);
/* 030B90 */ M2C_UNK Camera_80030B90();
/* 030BA8 */ bool Camera_80030BA8(void);
/* 030BBC */ M2C_UNK Camera_80030BBC();
/* 030CD8 */ bool Camera_80030CD8(CameraBox*, S32Vec2*);
/* 030CFC */ bool Camera_80030CFC(CameraBox*, float);
/* 030DE4 */ void Camera_80030DE4(f32 arg8, f32 arg9);
/* 030DF8 */ M2C_UNK Camera_80030DF8();
/* 030E10 */ M2C_UNK Camera_80030E10();
/* 030E34 */ void Camera_80030E34(f32 arg8);
/* 030E44 */ void Camera_80030E44(enum_t, Vec3*);
/* 031044 */ M2C_UNK Camera_80031044();
/* 031060 */ enum_t Camera_80031060(void);
/* 031074 */ void Camera_80031074(u8);
/* 03108C */ enum_t Camera_8003108C(void);
/* 0310A0 */ void Camera_800310A0(u8);
/* 0310B8 */ HSD_CObj* Camera_800310B8(void);
/* 0310E8 */ M2C_UNK Camera_800310E8();
/* 031144 */ float Camera_80031144(void);
/* 031154 */ bool Camera_80031154(Vec3*);
/* 03118C */ bool Camera_8003118C(Vec3*, float);
/* 0311CC */ void Camera_800311CC(f32 arg8);
/* 0311DC */ void Camera_800311DC(f32 arg8);
/* 0311EC */ M2C_UNK Camera_800311EC();
/* 031328 */ M2C_UNK Camera_80031328();
/* 0313E0 */ M2C_UNK Camera_800313E0();
#define __GALE01_028B9C
/* 3B73B8 */ static Vec3 cm_803B73B8;
/* 3B73C4 */ static Vec3 cm_803B73C4;
/* 3BCB64 */ static HSD_CObjDesc cm_803BCB64;
/* 3BCBB0 */ static s8 cm_803BCBB0[0x20] = "couldn't get CmSubject struct.\n";
/* 3BCCA0 */ static CameraUnkGlobals cm_803BCCA0 = {
83.0f, 1000.0f, -30.0f, 5.0f, -7.0f, 17.5f, -17.5f, 0.0f, 0.0682f,
60.0f, 120.0f, 0.05f, 0.1f, 120.0f, 900.0f, 0.15f, 38.0f, 0.1f,
0.1f, 0.001f, 0.1f, 1.0f, 1.0f, 0.6f, 0.6f, 0.05f, 0.1f,
29.0f, 0.1f, 0.1f, 0.1f, 0.1f, 0.5f, 0.5f, 0.4f, -11.0f,
400.0f, 0.2f, 4.0f, 0.05f, 1.0f, -7.0f, 7.0f, 0.5f, 0.5f,
0.004f, 0.2f, 0.025f, 0.2f, 0.003f, 0.2f, 0.025f, 0.2f, 0.02f,
1.0f, 0.14f, 1200.0f, -0.2f, 1.2f, 0.0f,
};
/* 452C68 */ static Camera cm_80452C68;
/* 4D6458 */ static CameraBox* cm_804D6458;
/* 4D6460 */ static CameraBox* cm_804D6460;
/* 4D6468 */ static CameraBox* cm_804D6468;
/* 4D7E04 */ static float cm_804D7E04;
/* 4D7E14 */ static float cm_804D7E14;
/* 4D7E30 */ static float cm_804D7E30;
/* 4D7E60 */ static float cm_804D7E60;
/* 4D7E6C */ static float cm_804D7E6C;
#define _CMSNAP_H_
#define GALE01_390730
#define _objalloc_h_
typedef struct _objheap {
u32 top;
u32 curr;
u32 size;
u32 remain;
} objheap;
typedef struct _HSD_ObjAllocLink {
struct _HSD_ObjAllocLink* next;
} HSD_ObjAllocLink;
typedef struct _HSD_ObjAllocData {
u32 num_limit_flag : 1;
u32 heap_limit_flag : 1;
HSD_ObjAllocLink* freehead;
u32 used;
u32 free;
u32 peak;
u32 num_limit;
u32 heap_limit_size;
u32 heap_limit_num;
u32 size;
u32 align;
struct _HSD_ObjAllocData* next;
} HSD_ObjAllocData;
static inline u32 HSD_ObjAllocGetUsing(HSD_ObjAllocData* data)
{
((data) ? ((void) 0) : __assert("src/sysdolphin/baselib/objalloc.h", 205, "data"));
return data->used;
}
static inline u32 HSD_ObjAllocGetFreed(HSD_ObjAllocData* data)
{
((data) ? ((void) 0) : __assert("src/sysdolphin/baselib/objalloc.h", 221, "data"));
return data->free;
}
static inline u32 HSD_ObjAllocGetPeak(HSD_ObjAllocData* data)
{
((data) ? ((void) 0) : __assert("src/sysdolphin/baselib/objalloc.h", 237, "data"));
return data->peak;
}
void HSD_ObjSetHeap(u32 size, void* ptr);
s32 HSD_ObjAllocAddFree(HSD_ObjAllocData* data, u32 num);
void* HSD_ObjAlloc(HSD_ObjAllocData* data);
void HSD_ObjFree(HSD_ObjAllocData* data, void* obj);
void _HSD_ObjAllocForgetMemory(void* low, void* high);
void HSD_ObjAllocInit(HSD_ObjAllocData* data, size_t size, u32 align);
struct _GObjUnkStruct;
#define HSD_GOBJ_GXLINK_NONE ((u8) 0xFF)
#define HSD_GOBJ_OBJ_NONE 0xFF
#define HSD_GOBJ_CLASS_STAGE 0x3
#define HSD_GOBJ_CLASS_FIGHTER 0x4
#define HSD_GOBJ_CLASS_ITEM 0x6
/// Used by chain-type items in-game to link multiple parts together
#define HSD_GOBJ_CLASS_ITEMLINK 0x7
#define HSD_GOBJ_CLASS_EFFECT 0x8
struct HSD_GObj {
/* +0 */ u16 classifier;
/* +2 */ u8 p_link;
/* +3 */ u8 gx_link;
/* +4 */ u8 p_priority;
/* +5 */ u8 render_priority;
/* +6 */ u8 obj_kind;
/* +7 */ u8 user_data_kind;
/* +8 */ HSD_GObj* next;
/* +C */ HSD_GObj* prev;
/* +10 */ HSD_GObj* next_gx;
/* +14 */ HSD_GObj* prev_gx;
/* +18 */ HSD_GObjProc* proc;
/* +1C */ GObj_RenderFunc render_cb;
/* +20 */ u64 gxlink_prios;
/* +28 */ void* hsd_obj;
/* +2C */ void* user_data;
/* +30 */ void (*user_data_remove_func)(void* data);
/* +34 */ void* x34_unk;
};
typedef struct _HSD_GObjLibInitDataType {
u8 p_link_max; // 804CE380
u8 gx_link_max; // 804CE381
u8 gproc_pri_max; // 804CE382
u32 unk_1; // 804CE384
u64* unk_2; // 804CE388
HSD_ObjAllocData gobj_def; // 804CE38C
HSD_ObjAllocData gobj_proc_def; // 804CE3B8
} HSD_GObjLibInitDataType;
/// @todo Belongs in `melee/` somewhere
typedef struct _HSD_GObjList {
/* +0 */ HSD_GObj* x0;
/* +4 */ HSD_GObj* x4;
/* +8 */ HSD_GObj* x8;
/* +C */ HSD_GObj* xC;
/* +10 */ HSD_GObj* x10;
/* +14 */ HSD_GObj* x14;
/* +18 */ HSD_GObj* x18;
/* +1C */ HSD_GObj* x1C;
/* +20 */ HSD_GObj* fighters;
/* +24 */ HSD_GObj* items;
/* +28 */ HSD_GObj* x28;
/* +2C */ HSD_GObj* x2C;
/* +30 */ HSD_GObj* x30;
/* +34 */ HSD_GObj* x34;
/* +38 */ HSD_GObj* x38;
/* +3C */ HSD_GObj* x3C;
/* +40 */ HSD_GObj* x40;
/* +44 */ HSD_GObj* x44;
/* +48 */ HSD_GObj* x48;
} HSD_GObjList;
extern struct _unk_gobj_struct {
union {
u32 flags;
struct {
u32 b0 : 1;
u32 b1 : 1;
u32 b2 : 1;
u32 b3 : 1;
};
};
u32 type;
u8 p_link;
u8 p_prio;
HSD_GObj* gobj;
} HSD_GObj_804CE3E4;
typedef struct _GObjUnkStruct GObjUnkStruct;
typedef struct _GObjFuncs GObjFuncs;
extern HSD_GObj* HSD_GObj_804D7818;
extern HSD_GObj* HSD_GObj_804D781C;
extern HSD_GObjProc* HSD_GObj_804D7830;
extern HSD_GObjProc* HSD_GObj_804D7838;
extern HSD_GObjProc** HSD_GObj_804D7840;
extern s32 HSD_GObj_804D7834;
extern s32 HSD_GObj_804D783C;
// extern HSD_GObj* HSD_SisLib_804D797C; @todo: is this actually correct?
extern HSD_GObj** HSD_GObj_804D7820;
extern HSD_GObj** HSD_GObj_804D7824;
extern HSD_GObjLibInitDataType HSD_GObjLibInitData;
extern HSD_GObj** plinklow_gobjs;
extern HSD_GObjList* HSD_GObj_Entities;
extern u8 HSD_GObj_804D784B[5];
extern GObjFuncs HSD_GObj_80408610;
extern s8 HSD_GObj_804D7848;
extern s8 HSD_GObj_804D7849;
extern s8 HSD_GObj_804D784A;
extern GObjFuncs HSD_GObj_80408620;
void HSD_GObj_80390C5C(HSD_GObj* gobj);
void HSD_GObj_80390C84(HSD_GObj* gobj);
void HSD_GObj_80390CAC(HSD_GObj* gobj);
u32 HSD_GObj_80390EB8(s32 i);
void HSD_GObj_803910D8(HSD_GObj*);
u8 HSD_GObj_803912A8(GObjUnkStruct*, GObjFuncs*);
HSD_GObj* GObj_Create(u16 classifier, u8 p_link, u8 priority);
void HSD_GObj_80391070(HSD_GObj* gobj, int arg1);
void HSD_GObj_80390CD4(HSD_GObj* gobj);
void HSD_GObj_80390CFC(void);
void render_gobj(HSD_GObj* cur, int i);
void HSD_GObj_80390FC0(void);
void HSD_GObj_80391044(HSD_GObj* gobj);
void HSD_GObj_803910B4(HSD_GObj* gobj);
void HSD_GObj_80391120(HSD_Obj* obj);
void HSD_GObj_803911C0(HSD_Obj* obj);
void HSD_GObj_80391260(struct _GObjUnkStruct* arg0);
void HSD_GObj_803912E0(GObjFuncs* arg0);
void HSD_GObj_80390ED0(HSD_GObj* gobj, u32 mask);
extern HSD_GObj* HSD_GObj_804D7814;
static inline void* HSD_GObjGetUserData(HSD_GObj* gobj)
{
return gobj->user_data;
}
static inline void* HSD_GObjGetHSDObj(HSD_GObj* gobj)
{
return gobj->hsd_obj;
}
static inline u16 HSD_GObjGetClassifier(HSD_GObj* gobj)
{
return gobj->classifier;
}
static inline HSD_GObj* HSD_GObjGetNext(HSD_GObj* gobj)
{
return gobj->next;
}
#define GET_COBJ(gobj) ((HSD_CObj*) HSD_GObjGetHSDObj(gobj))
#define GET_FOG(gobj) ((HSD_Fog*) HSD_GObjGetHSDObj(gobj))
#define GET_JOBJ(gobj) ((HSD_JObj*) HSD_GObjGetHSDObj(gobj))
#define GET_LOBJ(gobj) ((HSD_LObj*) HSD_GObjGetHSDObj(gobj))
void cmSnap_800315C8(void);
void cmSnap_800316B4(void);
void* cmSnap_80031618(void);
void cmSnap_80031640(HSD_GObj* gobj, int code);
#define GALE01_225374
#define MELEE_FT_FORWARD_H
#define FIGHTERVARS_SIZE 0xF8
typedef enum_t FtMotionId;
typedef struct Fighter Fighter;
typedef struct Fighter_804D653C_t Fighter_804D653C_t;
typedef struct Fighter_CostumeStrings Fighter_CostumeStrings;
typedef struct Fighter_DemoStrings Fighter_DemoStrings;
typedef struct FighterBone FighterBone;
typedef struct ftCmdScript ftCmdScript;
typedef struct FtCmdState FtCmdState;
typedef struct ftCo_DatAttrs_xBC_t ftCo_DatAttrs_xBC_t;
typedef struct ftCommonData ftCommonData;
typedef struct ftData ftData;
typedef struct ftData_UnkCountStruct ftData_UnkCountStruct;
typedef struct ftDeviceUnk1 ftDeviceUnk1;
typedef struct ftDeviceUnk2 ftDeviceUnk2;
typedef struct ftLk_SpecialN_Vec3Group ftLk_SpecialN_Vec3Group;
typedef struct ftMaterial_UnkTevStruct ftMaterial_UnkTevStruct;
typedef struct FtSFX FtSFX;
typedef struct ftSubactionList ftSubactionList;
typedef struct gmScriptEventDefault gmScriptEventDefault;
typedef struct MotionState MotionState;
typedef struct UnkFloat6_Camera UnkFloat6_Camera;
typedef u32 MotionFlags;
typedef struct Fighter_GObj Fighter_GObj;
struct Fighter_GObj {
/* +0 */ u16 classifier;
/* +2 */ u8 p_link;
/* +3 */ u8 gx_link;
/* +4 */ u8 p_priority;
/* +5 */ u8 render_priority;
/* +6 */ u8 obj_kind;
/* +7 */ u8 user_data_kind;
/* +8 */ Fighter_GObj* next;
/* +C */ Fighter_GObj* prev;
/* +10 */ Fighter_GObj* next_gx;
/* +14 */ Fighter_GObj* prev_gx;
/* +18 */ HSD_GObjProc* proc;
/* +1C */ void (*rendered)(Fighter_GObj* gobj, s32 code);
/* +20 */ u64 gxlink_prios;
/* +28 */ HSD_JObj* hsd_obj;
/* +2C */ Fighter* user_data;
/* +30 */ void (*user_data_remove_func)(Fighter* data);
/* +34 */ void* x34_unk;
};
typedef char* (*Fighter_MotionFileStringGetter)(enum_t arg0);
typedef void (*Fighter_ItemEvent)(HSD_GObj* gobj, bool arg1);
typedef void (*Fighter_ModelEvent)(Fighter* fp, int arg1, bool arg2);
typedef void (*Fighter_UnkMtxEvent)(HSD_GObj* gobj, int arg1, Mtx vmtx);
typedef void (*Fighter_UnkPtrEvent)(int arg0, int* arg1, int* arg2);
typedef void (*FighterEvent)(Fighter* fp);
typedef void (*FtCmd)(Fighter_GObj* gobj, FtCmdState* cmd);
typedef bool (*ftDevice_Callback0)(M2C_UNK, HSD_GObj*, Vec3*);
typedef enum FighterKind {
FTKIND_MARIO,
FTKIND_FOX,
FTKIND_CAPTAIN,
FTKIND_DONKEY,
FTKIND_KIRBY,
FTKIND_KOOPA,
FTKIND_LINK,
FTKIND_SEAK,
FTKIND_NESS,
FTKIND_PEACH,
FTKIND_POPO,
FTKIND_NANA,
FTKIND_PIKACHU,
FTKIND_SAMUS,
FTKIND_YOSHI,
FTKIND_PURIN,
FTKIND_MEWTWO,
FTKIND_LUIGI,
FTKIND_MARS,
FTKIND_ZELDA,
FTKIND_CLINK,
FTKIND_DRMARIO,
FTKIND_FALCO,
FTKIND_PICHU,
FTKIND_GAMEWATCH,
FTKIND_GANON,
FTKIND_EMBLEM,
FTKIND_MASTERH,
FTKIND_CREZYH,
FTKIND_BOY,
FTKIND_GIRL,
FTKIND_GKOOPS,
FTKIND_SANDBAG,
FTKIND_NONE,
FTKIND_MAX = FTKIND_NONE
} FighterKind;
typedef enum CharacterKind {
CKIND_CAPTAIN, // Captain Falcon (Captain)
CKIND_DONKEY, // Donkey Kong (Donkey)
CKIND_FOX, // Fox
CKIND_GAMEWATCH, // Mr. Game & Watch (GameWatch)
CKIND_KIRBY, // Kirby
CKIND_KOOPA, // Bowser (Koopa)
CKIND_LINK, // Link
CKIND_LUIGI, // Luigi
CKIND_MARIO, // Mario
CKIND_MARS, // Marth (Mars)
CKIND_MEWTWO, // Mewtwo
CKIND_NESS, // Ness
CKIND_PEACH, // Peach
CKIND_PIKACHU, // Pikachu
CKIND_POPONANA, // Ice Climbers (Popo & Nana)
CKIND_PURIN, // Jigglypuff (Purin)
CKIND_SAMUS, // Samus
CKIND_YOSHI, // Yoshi
CKIND_ZELDA, // Zelda (ZE->SE)
CKIND_SEAK, // Sheik (SE->ZE)
CKIND_FALCO, // Falco
CKIND_CLINK, // Young Link (CLink)
CKIND_DRMARIO, // Dr. Mario
CKIND_EMBLEM, // Roy (Emblem)
CKIND_PICHU, // Pichu
CKIND_GANON, // Ganondorf (Ganon)
CKIND_MASTERH, // Master Hand (MasterH)
CKIND_BOY, // Male Wireframe (Boy)
CKIND_GIRL, // Female Wireframe (Girl)
CKIND_GKOOPS, // Giga Bowser (GKoops)
CKIND_CREZYH, // Crazy Hand (CrezyH)
CHKIND_SANDBAG, // Sandbag
CHKIND_POPO, // Popo
CHKIND_NONE, // None
CHKIND_MAX = CHKIND_NONE
} CharacterKind;
static MotionFlags const Ft_MF_None = 0;
static MotionFlags const Ft_MF_KeepFastFall = 1 << 0;
static MotionFlags const Ft_MF_KeepGfx = 1 << 1;
/// Preserve full body collision state
static MotionFlags const Ft_MF_KeepColAnimHitStatus = 1 << 2;
/// Keep hitboxes
static MotionFlags const Ft_MF_SkipHit = 1 << 3;
/// Ignore model state change ?
static MotionFlags const Ft_MF_SkipModel = 1 << 4;
static MotionFlags const Ft_MF_SkipAnimVel = 1 << 5;
static MotionFlags const Ft_MF_Unk06 = 1 << 6;
/// Ignore switching to character's "hurt" textures ?
static MotionFlags const Ft_MF_SkipMatAnim = 1 << 7;
/// Resets thrower GObj pointer to NULL if false?
static MotionFlags const Ft_MF_SkipThrowException = 1 << 8;
static MotionFlags const Ft_MF_KeepSfx = 1 << 9;
/// Ignore Parasol state change
static MotionFlags const Ft_MF_SkipParasol = 1 << 10;
/// Ignore rumble update?
static MotionFlags const Ft_MF_SkipRumble = 1 << 11;
static MotionFlags const Ft_MF_SkipColAnim = 1 << 12;
/// Keep respawn platform?
static MotionFlags const Ft_MF_KeepAccessory = 1 << 13;
/// Run all Subaction Events up to the current animation frame
static MotionFlags const Ft_MF_UpdateCmd = 1 << 14;
static MotionFlags const Ft_MF_SkipNametagVis = 1 << 15;
/// Assume this is for individual bones?
static MotionFlags const Ft_MF_KeepColAnimPartHitStatus = 1 << 16;
static MotionFlags const Ft_MF_KeepSwordTrail = 1 << 17;
/// Used by Ness during Up/Down Smash
static MotionFlags const Ft_MF_SkipItemVis = 1 << 18;
/// Skips updating bit 5 of #Fighter::x2222_flag?
static MotionFlags const Ft_MF_Unk19 = 1 << 19;
static MotionFlags const Ft_MF_UnkUpdatePhys = 1 << 20;
/// Sets anim rate to 0 and some other stuff
static MotionFlags const Ft_MF_FreezeState = 1 << 21;
static MotionFlags const Ft_MF_SkipModelPartVis = 1 << 22;
static MotionFlags const Ft_MF_SkipMetalB = 1 << 23;
static MotionFlags const Ft_MF_Unk24 = 1 << 24;
static MotionFlags const Ft_MF_SkipAttackCount = 1 << 25;
static MotionFlags const Ft_MF_SkipModelFlags = 1 << 26;
static MotionFlags const Ft_MF_Unk27 = 1 << 27;
static MotionFlags const Ft_MF_SkipHitStun = 1 << 28;
/// Keeps current fighter animation?
static MotionFlags const Ft_MF_SkipAnim = 1 << 29;
static MotionFlags const Ft_MF_Unk30 = 1 << 30;
/// Unused?
static MotionFlags const Ft_MF_Unk31 = 1 << 31;
// Ledge Grab Macros
#define CLIFFCATCH_BOTH 0
#define CLIFFCATCH_LEFT -1
#define CLIFFCATCH_RIGHT 1
typedef enum Fighter_Part {
FtPart_TopN,
FtPart_TransN,
FtPart_XRotN,
FtPart_YRotN,
FtPart_HipN,
FtPart_WaistN,
FtPart_LLegJA,
FtPart_LLegJ,
FtPart_LKneeJ,
FtPart_LFootJA,
FtPart_LFootJ,
FtPart_RLegJA,
FtPart_RLegJ,
FtPart_RKneeJ,
FtPart_RFootJA,
FtPart_RFootJ,
FtPart_BustN,
FtPart_LShoulderN,
FtPart_LShoulderJA,
FtPart_LShoulderJ,
FtPart_LArmJ,
FtPart_LHandN,
FtPart_L1stNa,
FtPart_L1stNb,
FtPart_L2ndNa,
FtPart_L2ndNb,
FtPart_L3rdNa,
FtPart_L3rdNb,
FtPart_L4thNa,
FtPart_L4thNb,
FtPart_LThumbNa,
FtPart_LThumbNb,
FtPart_LHandNb,
FtPart_NeckN,
FtPart_HeadN,
FtPart_RShoulderN,
FtPart_RShoulderJA,
FtPart_RShoulderJ,
FtPart_RArmJ,
FtPart_RHandN,
FtPart_R1stNa,
FtPart_R1stNb,
FtPart_R2ndNa,
FtPart_R2ndNb,
FtPart_R3rdNa,
FtPart_R3rdNb,
FtPart_R4thNa,
FtPart_R4thNb,
FtPart_RThumbNa,
FtPart_RThumbNb,
FtPart_RHandNb,
FtPart_ThrowN,
FtPart_TransN2,
FtPart_109 = 109,
} Fighter_Part;
typedef enum FtWalkType {
FtWalkType_Slow,
FtWalkType_Middle,
FtWalkType_Fast,
} FtWalkType;
typedef enum FtMoveId {
FtMoveId_None,
FtMoveId_Default,
FtMoveId_Attack11,
FtMoveId_Attack12,
FtMoveId_Attack13,
FtMoveId_Attack100,
FtMoveId_AttackDash,
FtMoveId_AttackS3,
FtMoveId_AttackHi3,
FtMoveId_AttackLw3,
FtMoveId_AttackS4,
FtMoveId_AttackHi4,
FtMoveId_AttackLw4,
FtMoveId_AttackAirN,
FtMoveId_AttackAirF,
FtMoveId_AttackAirB,
FtMoveId_AttackAirHi,
FtMoveId_AttackAirLw,
FtMoveId_SpecialN,
FtMoveId_SpecialS,
FtMoveId_SpecialHi,
FtMoveId_SpecialLw,
FtMoveId_KbSpecialNMr,
FtMoveId_KbSpecialNFx,
FtMoveId_KbSpecialNCa,
FtMoveId_KbSpecialNDk,
FtMoveId_KbSpecialNKp,
FtMoveId_KbSpecialNLk,
FtMoveId_KbSpecialNSk,
FtMoveId_KbSpecialNNs,
FtMoveId_KbSpecialNPe,
FtMoveId_KbSpecialNPp,
FtMoveId_KbSpecialNPk,
FtMoveId_KbSpecialNSs,
FtMoveId_KbSpecialNYs,
FtMoveId_KbSpecialNPr,
FtMoveId_KbSpecialNMt,
FtMoveId_KbSpecialNLg,
FtMoveId_KbSpecialNMs,
FtMoveId_KbSpecialNZd,
FtMoveId_KbSpecialNCl,
FtMoveId_KbSpecialNDr,
FtMoveId_KbSpecialNFc,
FtMoveId_KbSpecialNPc,
FtMoveId_KbSpecialNGw,
FtMoveId_KbSpecialNGn,
FtMoveId_KbSpecialNFe,
FtMoveId_KbSpecialNGk,
FtMoveId_Unk48,
FtMoveId_Unk49,
FtMoveId_DownAttackU,
FtMoveId_DownAttackD,
FtMoveId_CatchAttack,
FtMoveId_ThrowF,
FtMoveId_ThrowB,
FtMoveId_ThrowHi,
FtMoveId_ThrowLw,
FtMoveId_CargoThrowF,
FtMoveId_CargoThrowB,
FtMoveId_CargoThrowHi,
FtMoveId_CargoThrowLw,
FtMoveId_CliffAttackSlow,
FtMoveId_CliffAttackQuick,
FtMoveId_SwordSwing1,
FtMoveId_SwordSwing3,
FtMoveId_SwordSwing4,
FtMoveId_SwordSwingDash,
FtMoveId_BatSwing1,
FtMoveId_BatSwing3,
FtMoveId_BatSwing4,
FtMoveId_BatSwingDash,
FtMoveId_ParasolSwing1,
FtMoveId_ParasolSwing3,
FtMoveId_ParasolSwing4,
FtMoveId_ParasolSwingDash,
FtMoveId_HarisenSwing1,
FtMoveId_HarisenSwing3,
FtMoveId_HarisenSwing4,
FtMoveId_HarisenSwingDash,
FtMoveId_StarRodSwing1,
FtMoveId_StarRodSwing3,
FtMoveId_StarRodSwing4,
FtMoveId_StarRodSwingDash,
FtMoveId_LipstickSwing1,
FtMoveId_LipstickSwing3,
FtMoveId_LipstickSwing4,
FtMoveId_LipstickSwingDash,
FtMoveId_Parasol,
FtMoveId_LGunShoot,
FtMoveId_FireFlowerShoot,
FtMoveId_Screw,
FtMoveId_ScopeRapid,
FtMoveId_ScopeFire,
FtMoveId_Hammer,
FtMoveId_WarpStarFall,
} FtMoveId;
typedef enum SmashState {
SmashState_None,
SmashState_PreCharge,
SmashState_Charging,
SmashState_Release,
} SmashState;
typedef enum ftCommon_BuryType {
BuryType_Unk0,
BuryType_Unk1,
BuryType_Unk2,
BuryType_Unk3,
} ftCommon_BuryType;
#define Ft_Dynamics_NumMax 10
#define MELEE_IT_FORWARD_H
typedef struct Article Article;
typedef struct BobOmbRain BobOmbRain;
typedef struct BoneDynamicsDesc BoneDynamicsDesc;
typedef struct CameraBoxFlags CameraBoxFlags;
typedef struct DynamicBoneTable DynamicBoneTable;
typedef struct ECB ECB;
typedef struct flag32 flag32;
typedef struct HSD_ObjAllocUnk HSD_ObjAllocUnk;
typedef struct HSD_ObjAllocUnk2 HSD_ObjAllocUnk2;
typedef struct HSD_ObjAllocUnk4 HSD_ObjAllocUnk4;
typedef struct HSD_ObjAllocUnk5 HSD_ObjAllocUnk5;
typedef struct HSD_ObjAllocUnk6 HSD_ObjAllocUnk6;
typedef struct it_2F28_DatAttrs it_2F28_DatAttrs;
typedef struct Item Item;
typedef struct Item_DynamicBones Item_DynamicBones;
typedef struct ItemAttr ItemAttr;
typedef struct ItemCommonData ItemCommonData;
typedef struct ItemDynamics ItemDynamics;
typedef struct ItemModelDesc ItemModelDesc;
typedef struct ItemModStruct ItemModStruct;
typedef struct ItemStateArray ItemStateArray;
typedef struct ItemStateDesc ItemStateDesc;
typedef struct itSword_ItemVars itSword_ItemVars;
typedef struct SpawnItem SpawnItem;
typedef struct UnkItemArticles3 UnkItemArticles3;
typedef struct Item_GObj Item_GObj;
struct Item_GObj {
/* +0 */ u16 classifier;
/* +2 */ u8 p_link;
/* +3 */ u8 gx_link;
/* +4 */ u8 p_priority;
/* +5 */ u8 render_priority;
/* +6 */ u8 obj_kind;
/* +7 */ u8 user_data_kind;
/* +8 */ Item_GObj* next;
/* +C */ Item_GObj* prev;
/* +10 */ Item_GObj* next_gx;
/* +14 */ Item_GObj* prev_gx;
/* +18 */ HSD_GObjProc* proc;
/* +1C */ void (*rendered)(Item_GObj* gobj, s32 code);
/* +20 */ u64 gxlink_prios;
/* +28 */ HSD_JObj* hsd_obj;
/* +2C */ Item* user_data;
/* +30 */ void (*user_data_remove_func)(Item* data);
/* +34 */ void* x34_unk;
};
typedef void (*ItCmd)(Item_GObj* gobj, FtCmdState* cmd);
typedef enum Item_StateChangeFlags {
ITEM_UNK_0x1 = (1 << 0),
ITEM_ANIM_UPDATE = (1 << 1),
ITEM_DROP_UPDATE = (1 << 2),
ITEM_MODEL_UPDATE = (1 << 3),
ITEM_HIT_PRESERVE = (1 << 4),
ITEM_SFX_PRESERVE = (1 << 5),
ITEM_COLANIM_PRESERVE = (1 << 6),
ITEM_UNK_UPDATE = (1 << 7),
ITEM_CMD_UPDATE = (1 << 8),
} Item_StateChangeFlags;
typedef enum Item_UnkKinds {
ITEM_UNK_MATO = 4,
ITEM_UNK_LOCKON,
ITEM_UNK_ENEMY,
ITEM_UNK_7
} Item_UnkKinds;
// Based on "ID Lists" from the SSBM datasheet, in-game references, and further
// research by VetriTheRetri
// https://docs.google.com/spreadsheets/d/1JX2w-r2fuvWuNgGb6D3Cs4wHQKLFegZe2jhbBuIhCG8
// Development JP name strings are listed starting at data address 0x803EA7A8
typedef enum ItemKind {
// COMMON ITEMS
It_Kind_Capsule, // Capsule
It_Kind_Box, // Crate
It_Kind_Taru, // Barrel
It_Kind_Egg, // Egg
It_Kind_Kusudama, // Party Ball (Kusudama)
It_Kind_TaruCann, // Barrel Cannon (TaruCann)
It_Kind_BombHei, // Bob-omb (BombHei)
It_Kind_Dosei, // Mr. Saturn (Dosei)
It_Kind_Heart, // Heart Container
It_Kind_Tomato, // Maxim Tomato
It_Kind_Star, // Starman (Super Star)
It_Kind_Bat, // Home-Run Bat
It_Kind_Sword, // Beam Sword
It_Kind_Parasol, // Parasol
It_Kind_G_Shell, // Green Shell (G Shell)
It_Kind_R_Shell, // Red Shell (R Shell)
It_Kind_L_Gun, // Ray Gun (L Gun)
It_Kind_Freeze, // Freezie (Freeze)
It_Kind_Foods, // Food
It_Kind_MSBomb, // Proximity Mine (MSBomb)
It_Kind_Flipper, // Flipper
It_Kind_S_Scope, // Super Scope (S Scope)
It_Kind_StarRod, // Star Rod
It_Kind_LipStick, // Lip's Stick
It_Kind_Harisen, // Fan (Harisen)
It_Kind_F_Flower, // Fire Flower (F Flower)
It_Kind_Kinoko, // Super Mushroom (Kinoko)
It_Kind_DKinoko, // Poison Mushroom (DKinoko)
It_Kind_Hammer, // Hammer
It_Kind_WStar, // Warp Star (WStar)
It_Kind_ScBall, // Screw Attack (ScBall)
It_Kind_RabbitC, // Bunny Hood (RabbitC)
It_Kind_MetalB, // Metal Box
It_Kind_Spycloak, // Cloaking Device (Spycloak)
It_Kind_M_Ball, // Poké Ball (M Ball)
// ITEM-RELATED
It_Kind_L_Gun_Ray, // Ray Gun recoil effect (?)
It_Kind_StarRod_Star, // Star Rod Star
It_Kind_LipStick_Spore, // Lips Stick Dust
It_Kind_S_Scope_Beam, // Super Scope Beam
It_Kind_L_Gun_Beam, // Ray Gun Beam
It_Kind_Hammer_Head, // Hammer Head
It_Kind_F_Flower_Flame, // Flower
It_Kind_EvYoshiEgg, // Yoshi's Egg (Event)
// MONSTERS
It_Kind_Kuriboh, // Goomba (Kuriboh)
It_Kind_Leadead, // Redead (Leadead)
It_Kind_Octarock, // Octarok (Octarock)
It_Kind_Ottosea, // Ottosea
It_Kind_Octarock_Stone, // Stone (Octarok Projectile)
// CHARACTER-RELATED
It_Kind_Mario_Fire, // Mario's fireball
It_Kind_DrMario_Vitamin, // Dr. Mario's pill
It_Kind_Kirby_CBeam, // Kirby's Cutter beam
It_Kind_Kirby_Hammer, // Kirby's Hammer
It_Kind_Unk1, // Maybe Kirby copy star?
It_Kind_Unk2,
It_Kind_Fox_Laser, // Fox's Laser
It_Kind_Falco_Laser, // Falco's Laser
It_Kind_Fox_Illusion, // Fox's Illusion
It_Kind_Falco_Phantasm, // Falco's Phantasm
It_Kind_Link_Bomb, // Link's bomb
It_Kind_CLink_Bomb, // Young Link's bomb
It_Kind_Link_Boomerang, // Link's boomerang
It_Kind_CLink_Boomerang, // Young Link's boomerang
It_Kind_Link_HShot, // Link's Hookshot
It_Kind_CLink_HShot, // Young Link's Hookshot
It_Kind_Link_Arrow, // Link's Arrow
It_Kind_CLink_Arrow, // Young Link's Fire Arrow
It_Kind_Ness_PKFire, // PK Fire
It_Kind_Ness_PKFire_Flame, // PK Fire Pillar
It_Kind_Ness_PKFlush, // PK Flash (charging state)
It_Kind_Ness_PKThunder, // PK Thunder (Ball)
It_Kind_Ness_PKThunder1, // PK Thunder (Trail 1)
It_Kind_Ness_PKThunder2, // PK Thunder (Trail 2)
It_Kind_Ness_PKThunder3, // PK Thunder (Trail 3)
It_Kind_Ness_PKThunder4, // PK Thunder (Trail 4)
It_Kind_Fox_Blaster, // Fox's Blaster
It_Kind_Falco_Blaster, // Falco's Blaster
It_Kind_Link_Bow, // Link's Bow
It_Kind_CLink_Bow, // Young Link's Bow
It_Kind_Ness_PKFlush_Explode, // PK Flash (explosion)
It_Kind_Seak_NeedleThrow, // Needle (thrown)
It_Kind_Seak_NeedleHeld, // Needle (held)
It_Kind_Pikachu_Thunder, // Pikachu's Thunder
It_Kind_Pichu_Thunder, // Pichu's Thunder
It_Kind_Mario_Cape, // Mario's cape
It_Kind_DrMario_Sheet, // Dr. Mario's cape
It_Kind_Seak_Vanish, // Smoke (Sheik)
It_Kind_Yoshi_EggThrow, // Yoshi's Egg (thrown)
It_Kind_Yoshi_EggLay, // Yoshi's Egg Lay???
It_Kind_Yoshi_Star, // Yoshi's Star
It_Kind_Pikachu_TJolt_Ground, // Pikachu's thunder (B)
It_Kind_Pikachu_TJolt_Air, // Pikachu's thunder (B)
It_Kind_Pichu_TJolt_Ground, // Pichu's thunder (B)
It_Kind_Pichu_TJolt_Air, // Pichu's thunder (B)
It_Kind_Samus_Bomb, // Samus's bomb
It_Kind_Samus_Charge, // Samus's chargeshot
It_Kind_Samus_Missile, // Missile
It_Kind_Samus_GBeam, // Grapple beam
It_Kind_Seak_Chain, // Sheik's chain
It_Kind_Peach_Explode, // Peach Bomber explosion?
It_Kind_Peach_Turnip, // Peach's turnip
It_Kind_Koopa_Flame, // Bowser's flame
It_Kind_Ness_Bat, // Ness's baseball bat
It_Kind_Ness_Yoyo, // Ness's Yo-Yo
It_Kind_Peach_Parasol, // Peach's parasol
It_Kind_Peach_Toad, // Peach's Toad special
It_Kind_Luigi_Fire, // Luigi's fireball
It_Kind_IceClimber_Ice, // Ice (Ice Climbers)
It_Kind_IceClimber_Blizzard, // Blizzard
It_Kind_Zelda_DinFire, // Din's Fire (charging state)
It_Kind_Zelda_DinFire_Explode, // Din's Fire (explosion)
It_Kind_Mewtwo_Disable, // Mewtwo's Disable Projectile
It_Kind_Peach_ToadSpore, // Peach Toad's spore effect
It_Kind_Mewtwo_ShadowBall, // Mewtwo's Shadowball
It_Kind_IceClimber_GumStrings, // Ice Climbers Belay (Up B)
It_Kind_GameWatch_Greenhouse, // Mr. Game & Watch's Insecticide Spray
It_Kind_GameWatch_Manhole, // Mr. Game & Watch's Manhole
It_Kind_GameWatch_Fire, // Mr. Game & Watch's Fire (?)
It_Kind_GameWatch_Parachute, // Mr. Game & Watch's Parachute
It_Kind_GameWatch_Turtle, // Mr. Game & Watch's Turtle
It_Kind_GameWatch_Breath, // Mr. Game & Watch's Sparky
It_Kind_GameWatch_Judge, // Mr. Game & Watch's Judge
It_Kind_GameWatch_Panic, // Mr. Game & Watch's Oil Panic (?)
It_Kind_GameWatch_Chef, // Sausage
It_Kind_CLink_Milk, // Milk (Young Link)
It_Kind_GameWatch_Rescue, // Mr. Game & Watch's Firefighter
It_Kind_MasterHand_Laser, // Master Hand's Laser
It_Kind_MasterHand_Bullet, // Master Hand's Bullet
It_Kind_CrazyHand_Laser, // Crazy Hand's Laser
It_Kind_CrazyHand_Bullet, // Crazy Hand's Bullet
It_Kind_CrazyHand_Bomb, // Crazy Hand's Bomb
It_Kind_Kirby_MarioFire, // Kirby copy Mario's Fire (B)
It_Kind_Kirby_DrMarioVitamin, // Kirby copy Dr. Mario's Capsule (B)
It_Kind_Kirby_LuigiFire, // Kirby copy Luigi's Fire (B)
It_Kind_Kirby_IceClimberIce, // Kirby copy Ice Climbers' Ice Shot (B)
It_Kind_Kirby_PeachToad, // Kirby copy Peach's Toad (B)
It_Kind_Kirby_PeachToadSpore, // Kirby copy Toad's Spore (B)
It_Kind_Kirby_FoxLaser, // Kirby copy Fox's Laser (B)
It_Kind_Kirby_FalcoLaser, // Kirby copy Falco's Laser (B)
It_Kind_Kirby_FoxBlaster, // Kirby copy Fox's Blaster (B)
It_Kind_Kirby_FalcoBlaster, // Kirby copy Falco's Blaster (B)
It_Kind_Kirby_LinkArrow, // Kirby copy Link's Arrow (B)
It_Kind_Kirby_CLinkArrow, // Kirby copy Young Link's Arrow (B)
It_Kind_Kirby_LinkBow, // Kirby copy Link's Arrow (B)
It_Kind_Kirby_CLinkBow, // Kirby copy Young Link's Arrow (B)
It_Kind_Kirby_MewtwoShadowBall, // Kirby copy Mewtwo's Shadowball (B)
It_Kind_Kirby_NessPKFlush, // Kirby copy PK Flash (B)
It_Kind_Kirby_NessPKFlush_Explode, // Kirby copy PK Flash Explosion (B)
It_Kind_Kirby_PikachuTJolt_Ground, // Kirby copy Pikachu's Thunder (B)
It_Kind_Kirby_PikachuTJolt_Air, // Kirby copy Pikachu's Thunder (B)
It_Kind_Kirby_PichuTJolt_Ground, // Kirby copy Pichu's Thunder (B)
It_Kind_Kirby_PichuTJolt_Air, // Kirby copy Pichu's Thunder (B)
It_Kind_Kirby_SamusCharge, // Kirby copy Samus' Chargeshot (B)
It_Kind_Kirby_SeakNeedleThrow, // Kirby copy Sheik's Needle (thrown) (B)
It_Kind_Kirby_SeakNeedleHeld, // Kirby copy Sheik's Needle (ground) (B)
It_Kind_Kirby_KoopaFlame, // Kirby copy Bowser's Flame (B)
It_Kind_Kirby_GameWatchChef, // Kirby copy Mr. Game & Watch's Sausage (B)
It_Kind_Kirby_GameWatchChefPan, // Kirby copy Mr. Game & Watch's Chef Pan
// (B)
It_Kind_Kirby_YoshiEggLay, // Kirby's Yoshi Egg Lay??? (B)
It_Kind_Unk4, // (unique)
It_Kind_Coin, // Coin (?)
// POKéMON
Pokemon_Random, // Used for Random Pokémon value
Pokemon_Tosakinto, // Goldeen (Tosakinto)
Pokemon_Chicorita, // Chikorita (Chicorita)
Pokemon_Kabigon, // Snorlax (Kabigon)
Pokemon_Kamex, // Blastoise (Kamex)
Pokemon_Matadogas, // Weezing (Matadogas)
Pokemon_Lizardon, // Charizard (Lizardon)
Pokemon_Fire, // Moltres (Fire)
Pokemon_Thunder, // Zapdos (Thunder)
Pokemon_Freezer, // Articuno (Freezer)
Pokemon_Sonans, // Wobbuffet (Sonans)
Pokemon_Hassam, // Scizor (Hassam)
Pokemon_Unknown, // Unown (Unknown)
Pokemon_Entei, // Entei
Pokemon_Raikou, // Raikou
Pokemon_Suikun, // Suicune (Suikun)
Pokemon_Kireihana, // Bellossom (Kireihana)
Pokemon_Marumine, // Electrode (Marumine)
Pokemon_Lugia, // Lugia
Pokemon_Houou, // Ho-oh (Houou)
Pokemon_Metamon, // Ditto (Metamon)
Pokemon_Pippi, // Clefairy (Pippi)
Pokemon_Togepy, // Togepi (Togepy)
Pokemon_Mew, // Mew
Pokemon_Cerebi, // Celebi (Cerebi)
Pokemon_Hitodeman, // Staryu (Hitodeman)
Pokemon_Lucky, // Chansey (Lucky)
Pokemon_Porygon2, // Porygon2
Pokemon_Hinoarashi, // Cyndaquil (Hinoarashi)
Pokemon_Maril, // Marill (Maril)
Pokemon_Fushigibana, // Venusaur (Fushigibana)
// POKéMON-RELATED
Pokemon_Chicorita_Leaf, // Chikorita's Leaf
Pokemon_Kamex_HydroPump, // Blastoise's Water
Pokemon_Matadogas_Gas1, // Weezing's Gas
Pokemon_Matadogas_Gas2, // Weezing's Gas
Pokemon_Lizardon_Flame1, // Charizard's Breath
Pokemon_Lizardon_Flame2, // Charizard's Breath
Pokemon_Lizardon_Flame3, // Charizard's Breath
Pokemon_Lizardon_Flame4, // Charizard's Breath
Pokemon_Unknown_Swarm, // Mini-Unowns
Pokemon_Lugia_Aeroblast, // Lugia's Aeroblast
Pokemon_Lugia_Aeroblast2, // Lugia's Aeroblast
Pokemon_Lugia_Aeroblast3, // Lugia's Aeroblast
Pokemon_Houou_SacredFire, // Ho-Oh's Flame
Pokemon_Hitodeman_Star, // Staryu's Star
Pokemon_Lucky_Egg, // Chansey's Healing Egg
Pokemon_Hinoarashi_Flame, // Cyndaquil's Fire
Pokemon_Unk, // ???
// MONSTERS 2
It_Kind_Old_Kuri, // Old Goomba (old-Kuri)
It_Kind_Mato, // Target (Mato)
It_Kind_Heiho, // Yoshi's Story Shy Guy (Heiho)
It_Kind_Nokonoko, // Koopa Troopa (Green) (Nokonoko)
It_Kind_Patapata, // Koopa Troopa (Red) (Patapata)
It_Kind_Likelike, // Like-Like (likelike)
It_Kind_Old_Lead, // Old Redead (old-lead) [invalid]
It_Kind_Old_Octa, // Old Octorok (old-octa) [invalid]
It_Kind_Old_Otto, // Old Ottosea (old-otto)
It_Kind_Whitebea, // Polar Bear (whitebea)
It_Kind_Klap, // Klaptrap (klap)
It_Kind_ZGShell, // Green Shell (zgshell)
It_Kind_ZRShell, // Red Shell (green act) (zrshell)
// STAGE-SPECIFIC
It_Kind_Tincle, // Tingle (Tincle) (on balloon)
It_Kind_Invalid1, // [Invalid]
It_Kind_Invalid2, // [Invalid]
It_Kind_Invalid3, // [Invalid]
It_Kind_WhispyApple, // Whispy Apple
It_Kind_WhispyHealApple, // Whispy's Healing Apple
It_Kind_Invalid4, // [Invalid]
It_Kind_Invalid5, // [Invalid]
It_Kind_Invalid6, // [Invalid]
It_Kind_Tools, // Tool (Flatzone)
It_Kind_Invalid7, // [Invalid]
It_Kind_Invalid8, // [Invalid]
It_Kind_Kyasarin, // Birdo (Kyasarin)
It_Kind_Arwing_Laser, // Arwing Laser
It_Kind_GreatFox_Laser, // Great Fox's Laser
It_Kind_Kyasarin_Egg, // Birdo's Egg
} ItemKind;
/* 225374 */ void db_80225374(void);
/* 2254B8 */ M2C_UNK db_802254B8();
/* 22558C */ M2C_UNK fn_8022558C();
/* 2255A4 */ M2C_UNK fn_802255A4();
/* 2255BC */ M2C_UNK fn_802255BC();
/* 2255D4 */ M2C_UNK db_802255D4();
/* 2256CC */ M2C_UNK db_802256CC();
/* 225754 */ M2C_UNK db_80225754();
/* 225A00 */ M2C_UNK fn_80225A00();
/* 225A54 */ M2C_UNK fn_80225A54();
/* 225B0C */ u32 db_80225B0C(void);
/* 225B20 */ u32 db_80225B20(void);
/* 225B34 */ u32 db_80225B34(void);
/* 225B48 */ M2C_UNK fn_80225B48();
/* 225B9C */ M2C_UNK fn_80225B9C();
/* 225BF0 */ M2C_UNK fn_80225BF0();
/* 225C44 */ M2C_UNK fn_80225C44();
/* 225C8C */ M2C_UNK fn_80225C8C();
/* 225CD4 */ M2C_UNK fn_80225CD4();
/* 225D1C */ s32 db_80225D1C(void);
/* 225D2C */ void db_80225D2C(void);
/* 225D40 */ void db_80225D40(void);
/* 225D54 */ s32 db_80225D54(HSD_ObjAllocUnk4* arg0);
/* 225D64 */ void db_80225D64(Item_GObj* item, Fighter_GObj* owner);
/* 225D7C */ M2C_UNK fn_80225D7C();
/* 225DD8 */ void db_80225DD8(Item_GObj* item, Fighter_GObj* owner);
/* 225E6C */ M2C_UNK fn_80225E6C();
/* 225F20 */ M2C_UNK fn_80225F20();
/* 2260D4 */ M2C_UNK fn_802260D4();
/* 2261BC */ M2C_UNK fn_802261BC();
/* 2262E0 */ M2C_UNK fn_802262E0();
/* 2264C4 */ M2C_UNK fn_802264C4();
/* 22659C */ M2C_UNK fn_8022659C();
/* 22666C */ M2C_UNK fn_8022666C();
/* 226730 */ M2C_UNK fn_80226730();
/* 2267C8 */ M2C_UNK fn_802267C8();
/* 2268B8 */ M2C_UNK fn_802268B8();
/* 22697C */ M2C_UNK fn_8022697C();
/* 2269C0 */ M2C_UNK fn_802269C0();
/* 226BD4 */ M2C_UNK fn_80226BD4();
/* 226E00 */ M2C_UNK fn_80226E00();
/* 226E0C */ M2C_UNK fn_80226E0C();
/* 2270C4 */ M2C_UNK fn_802270C4();
/* 22713C */ M2C_UNK fn_8022713C();
/* 227174 */ M2C_UNK fn_80227174();
/* 227188 */ M2C_UNK fn_80227188();
/* 227484 */ M2C_UNK fn_80227484();
/* 2277E8 */ M2C_UNK fn_802277E8();
/* 227904 */ void fn_80227904(HSD_GObj* camera, s8 port);
/* 2279E8 */ void fn_802279E8(HSD_GObj* camera, Vec3* camera_pos,
Vec3* camera_interest, float cstick_x,
float cstick_y);
/* 227B64 */ void fn_80227B64(HSD_GObj* camera, float cstick_x,
float cstick_y);
/* 227BA8 */ M2C_UNK fn_80227BA8();
/* 227CAC */ void fn_80227CAC(HSD_GObj* camera, float cstick_y);
/* 227D38 */ M2C_UNK fn_80227D38();
/* 227EB0 */ M2C_UNK fn_80227EB0();
/* 227FE0 */ void fn_80227FE0(HSD_GObj* camera, float cstick_x,
float cstick_y);
/* 228124 */ M2C_UNK fn_80228124();
/* 228318 */ M2C_UNK fn_80228318();
/* 2283F0 */ M2C_UNK fn_802283F0();
/* 228620 */ M2C_UNK fn_80228620();
/* 22873C */ M2C_UNK fn_8022873C();
/* 2287C4 */ M2C_UNK fn_802287C4();
/* 2287D8 */ M2C_UNK fn_802287D8();
/* 228820 */ M2C_UNK fn_80228820();
/* 22886C */ void db_8022886C(void);
/* 22887C */ M2C_UNK db_8022887C();
/* 22892C */ M2C_UNK db_8022892C();
/* 2289F8 */ M2C_UNK fn_802289F8();
/* 228A64 */ void db_80228A64(void);
/* 228AB4 */ M2C_UNK fn_80228AB4();
/* 228B28 */ M2C_UNK fn_80228B28();
/* 228C4C */ void db_80228C4C(void);
/* 228CF4 */ M2C_UNK fn_80228CF4();
/* 228D18 */ M2C_UNK fn_80228D18();
/* 228D38 */ M2C_UNK fn_80228D38();
/* 228E54 */ M2C_UNK fn_80228E54();
/* 22900C */ M2C_UNK fn_8022900C();
/* 2291A0 */ M2C_UNK fn_802291A0();
/* 229220 */ M2C_UNK fn_80229220();
/* 229240 */ M2C_UNK fn_80229240();
/* 4A0E30 */ extern HSD_ObjAllocUnk4 it_804A0E30;
/* 4D4A08 */ extern enum_t g_debugLevel;
/* 4D6B30 */ extern u16 db_804D6B30;
#define __GALE01_225374
struct lbl_8049FAA0_t {
/* 0x00 */ char pad_0[8];
/* 0x08 */ s32 unk_8; /* inferred */
/* 0x0C */ char pad_C[8]; /* maybe part of unk_8[3]? */
/* 0x14 */ s32 unk_14;
char pad_18[0x8];
/* 0x20:0 */ u8 x20_b0 : 1;
/* 0x20:1 */ u8 x20_b1 : 1;
/* 0x20:2 */ u8 x20_b2 : 1;
}; /* size = 0x18 */
/* 453004 */ extern M2C_UNK cm_80453004;
/* 49FAA0 */ static struct lbl_8049FAA0_t lbl_8049FAA0;
/* 4D6B50 */ static IntVec2 lbl_804D6B50;
/* 4D6B5C */ static s8 lbl_804D6B5C;
/* 4D6B8C */ static UnkFlagStruct lbl_804D6B8C;
#define GALE01_063930
/* 06729C */ void efAsync_8006729C(void);
/* 06730C */ void efAsync_8006730C(HSD_Archive* archive, u8* data, u32 length,
int index);
/* 06737C */ void efAsync_8006737C(s8);
/* 067624 */ void efAsync_80067624(HSD_GObj*, M2C_UNK*);
/* 067688 */ void efAsync_80067688(void*);
/* 0676F0 */ void efAsync_Spawn(HSD_GObj*, void*, u32, u32, HSD_JObj*, ...);
#define GALE01_05B4B8
#define MELEE_EF_FORWARD_H
typedef struct ef_UnkStruct0 ef_UnkStruct0;
typedef struct ef_UnkStruct1 ef_UnkStruct1;
typedef struct ef_UnkStruct2 ef_UnkStruct2;
/* 05B4B8 */ void efLib_8005B4B8(void);
/* 05B880 */ void efLib_DestroyAll(HSD_GObj* gobj);
/* 05BA40 */ void efLib_PauseAll(HSD_GObj* gobj);
/* 05BAC4 */ void efLib_ResumeAll(HSD_GObj* gobj);
/* 05BE88 */ ef_UnkStruct0* efLib_8005BE88(int);
/* 05F864 */ void efLib_8005F864(HSD_GObj* gobj, s8, float, float);
/* 05FBE4 */ M2C_UNK fn_8005FBE4();
#define MELEE_EF_EFSYNC_H
void efSync_Spawn(s32, ...);
#define MELEE_EF_TYPES_H
struct ef_UnkStruct2 {
/* +0 */ HSD_JObj* x0;
};
struct ef_UnkStruct0 {
/* +0 */ ef_UnkStruct2* x0;
/* +4 */ int x4;
/* +8 */ M2C_UNK x8;
/* +C */ s16 xC;
/* +E */ s16 xE;
/* +10 */ int x10;
/* +14 */ int x14;
/* +18 */ int x18;
};
struct ef_UnkStruct1 {
/* +0 */ int x0;
/* +4 */ int x4;
/* +8 */ int x8;
/* +C */ int xC;
};
#define MELEE_FT_CHARA_FORWARD_H
#define MELEE_FT_CHARA_FTCLINK_FORWARD_H
static MotionFlags const ftCl_MF_Zair =
Ft_MF_KeepFastFall | Ft_MF_SkipModel | Ft_MF_SkipAnimVel | Ft_MF_Unk06;
#define GALE01_149354
/* 149354 */ void ftCl_AppealS_Anim(HSD_GObj* gobj);
/* 14943C */ void ftCl_AppealS_IASA(HSD_GObj* gobj);
/* 14945C */ void ftCl_AppealS_Phys(HSD_GObj* gobj);
/* 14947C */ void ftCl_AppealS_Coll(HSD_GObj* gobj);
#define GALE01_148C64
#define MELEE_FT_CHARA_FTLINK_FORWARD_H
#define MELEE_FT_CHARA_FTCOMMON_FORWARD_H
struct UNK_SAMUS_S2;
typedef Fighter ftCo_Fighter;
typedef Fighter_GObj ftCo_GObj;
typedef struct ftCollisionBox ftCollisionBox;
static MotionFlags const ftCo_MF_5_6 = Ft_MF_SkipAnimVel | Ft_MF_Unk06;
static MotionFlags const ftCo_MF_2_5_6 =
ftCo_MF_5_6 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_Squat = ftCo_MF_2_5_6 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_Dash = ftCo_MF_Squat | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_Run = ftCo_MF_5_6 | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_Appeal =
ftCo_MF_5_6 | Ft_MF_KeepFastFall | Ft_MF_SkipModel;
static MotionFlags const ftCo_MF_9_10 = Ft_MF_KeepSfx | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_LandingAirN =
ftCo_MF_9_10 | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_LandingAirF =
ftCo_MF_LandingAirN | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_LandingAirB =
ftCo_MF_LandingAirN | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_LandingAirHi =
ftCo_MF_LandingAirB | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_LandingAirLw = ftCo_MF_9_10 | Ft_MF_SkipModel;
static MotionFlags const ftCo_MF_Turn = ftCo_MF_2_5_6 | Ft_MF_KeepAccessory;
static MotionFlags const ftCo_MF_Walk =
ftCo_MF_2_5_6 | Ft_MF_KeepGfx | Ft_MF_UpdateCmd;
static MotionFlags const ftCo_MF_3_5_6 = ftCo_MF_5_6 | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_Jump =
ftCo_MF_3_5_6 | Ft_MF_KeepFastFall | Ft_MF_SkipNametagVis;
static MotionFlags const ftCo_MF_JumpAir =
ftCo_MF_3_5_6 | Ft_MF_KeepGfx | Ft_MF_KeepColAnimPartHitStatus;
static MotionFlags const ftCo_MF_GuardReflect =
ftCo_MF_5_6 | Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_SkipModel |
Ft_MF_SkipColAnim | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftCo_MF_Guard = Ft_MF_Unk19 | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftCo_MF_AttackBase =
Ft_MF_KeepSfx | Ft_MF_SkipItemVis;
static MotionFlags const ftCo_MF_Attack =
ftCo_MF_AttackBase | Ft_MF_FreezeState;
static MotionFlags const ftCo_MF_Attack_2 =
ftCo_MF_Attack | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_AttackDash =
ftCo_MF_Attack_2 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_AttackS3 = ftCo_MF_Attack_2 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_AttackHi3 =
ftCo_MF_AttackS3 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_AttackLw3 = ftCo_MF_Attack | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_CliffAttackQuick =
ftCo_MF_AttackLw3 | Ft_MF_KeepFastFall | Ft_MF_KeepGfx |
Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipModel | Ft_MF_SkipAnimVel;
static MotionFlags const ftCo_MF_AttackAir =
ftCo_MF_Attack | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_AttackAirN =
ftCo_MF_AttackAir | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipHit |
Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_AttackAirF =
ftCo_MF_AttackAirN | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_AttackAirB =
ftCo_MF_AttackAirN | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_AttackAirHi =
ftCo_MF_AttackAirF | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_AttackAirLw =
ftCo_MF_AttackAir | Ft_MF_SkipModel;
static MotionFlags const ftCo_MF_Attack4 =
ftCo_MF_AttackLw3 | Ft_MF_SkipRumble;
static MotionFlags const ftCo_MF_AttackS4 =
ftCo_MF_Attack4 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_AttackHi4 = ftCo_MF_Attack4 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_AttackLw4 =
ftCo_MF_Attack4 | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_Attack1 = ftCo_MF_Attack | Ft_MF_Unk19;
static MotionFlags const ftCo_MF_Attack11 =
ftCo_MF_Attack1 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_Attack12 = ftCo_MF_Attack1 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_Attack13 =
ftCo_MF_Attack12 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_Attack100 =
ftCo_MF_Attack1 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_ItemScope =
Ft_MF_SkipItemVis | Ft_MF_SkipModelPartVis;
static MotionFlags const ftCo_MF_SwordSwing1 = ftCo_MF_ItemScope | Ft_MF_Unk06;
static MotionFlags const ftCo_MF_SwordSwing3 =
ftCo_MF_SwordSwing1 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_SwordSwingDash =
ftCo_MF_SwordSwing3 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_BatSwing1 =
ftCo_MF_SwordSwing1 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_BatSwing3 =
ftCo_MF_BatSwing1 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_BatSwingDash =
ftCo_MF_BatSwing3 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_ParasolSwing1 =
ftCo_MF_SwordSwing1 | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_ParasolSwing3 =
ftCo_MF_ParasolSwing1 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_ParasolSwingDash =
ftCo_MF_ParasolSwing3 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_HarisenSwing1 =
ftCo_MF_BatSwing1 | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_HarisenSwing3 =
ftCo_MF_HarisenSwing1 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_HarisenSwingDash =
ftCo_MF_HarisenSwing3 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_StarRodSwing1 =
ftCo_MF_SwordSwing1 | Ft_MF_SkipModel;
static MotionFlags const ftCo_MF_StarRodSwing3 =
ftCo_MF_StarRodSwing1 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_StarRodSwingDash =
ftCo_MF_StarRodSwing3 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_LipstickSwing1 =
ftCo_MF_StarRodSwing1 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_LipstickSwing3 =
ftCo_MF_LipstickSwing1 | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_LipstickSwingDash =
ftCo_MF_LipstickSwing3 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_ParasolOpen =
ftCo_MF_ParasolSwing1 | Ft_MF_SkipModel;
static MotionFlags const ftCo_MF_HammerBase =
ftCo_MF_LipstickSwing1 | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_Hammer = ftCo_MF_HammerBase | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_WarpStarFall =
ftCo_MF_Hammer | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_ItemScope_5_6 =
ftCo_MF_5_6 | ftCo_MF_ItemScope;
static MotionFlags const ftCo_MF_ItemThrow =
ftCo_MF_ItemScope_5_6 | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_LGunShoot =
ftCo_MF_ItemScope | Ft_MF_KeepFastFall | Ft_MF_SkipHit | Ft_MF_SkipModel |
Ft_MF_Unk06 | Ft_MF_SkipThrowException;
static MotionFlags const ftCo_MF_ItemScopeFire =
ftCo_MF_LGunShoot | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_HammerFall =
ftCo_MF_Hammer | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_ItemThrowAir =
ftCo_MF_ItemThrow | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_LGunShootAir =
ftCo_MF_LGunShoot | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_ItemScopeAir =
ftCo_MF_HammerBase | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException |
Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_Swing4 = Ft_MF_KeepGfx | Ft_MF_SkipRumble;
static MotionFlags const ftCo_MF_SwordSwing4 =
ftCo_MF_SwordSwing1 | ftCo_MF_Swing4;
static MotionFlags const ftCo_MF_BatSwing4 =
ftCo_MF_BatSwing1 | ftCo_MF_Swing4;
static MotionFlags const ftCo_MF_ParasolSwing4 =
ftCo_MF_ParasolSwing1 | ftCo_MF_Swing4;
static MotionFlags const ftCo_MF_HarisenSwing4 =
ftCo_MF_HarisenSwing1 | ftCo_MF_Swing4;
static MotionFlags const ftCo_MF_StarRodSwing4 =
ftCo_MF_StarRodSwing1 | ftCo_MF_Swing4;
static MotionFlags const ftCo_MF_LipstickSwing4 =
ftCo_MF_LipstickSwing1 | ftCo_MF_Swing4;
static MotionFlags const ftCo_MF_ItemThrow4 =
ftCo_MF_ItemScope_5_6 | ftCo_MF_Swing4;
static MotionFlags const ftCo_MF_ItemThrowAir4 =
ftCo_MF_ItemThrow4 | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_HammerMove =
ftCo_MF_HammerBase | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_HammerTurn =
ftCo_MF_HammerMove | Ft_MF_KeepAccessory;
static MotionFlags const ftCo_MF_HammerWalk =
ftCo_MF_HammerMove | Ft_MF_UpdateCmd;
static MotionFlags const ftCo_MF_ItemFall =
Ft_MF_SkipHit | Ft_MF_SkipModel | Ft_MF_Unk06 | Ft_MF_SkipModelPartVis;
static MotionFlags const ftCo_MF_ItemScrewBase =
ftCo_MF_AttackBase | ftCo_MF_ItemFall | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_ItemScrew =
ftCo_MF_ItemScrewBase | Ft_MF_SkipNametagVis;
static MotionFlags const ftCo_MF_HammerJump =
ftCo_MF_HammerMove | Ft_MF_SkipParasol | Ft_MF_SkipNametagVis;
static MotionFlags const ftCo_MF_ItemScrewAir =
ftCo_MF_ItemScrewBase | Ft_MF_SkipParasol | Ft_MF_KeepColAnimPartHitStatus;
static MotionFlags const ftCo_MF_LiftWait =
Ft_MF_Unk19 | Ft_MF_SkipModelPartVis;
static MotionFlags const ftCo_MF_LiftMove = ftCo_MF_LiftWait |
Ft_MF_KeepColAnimHitStatus |
Ft_MF_SkipAnimVel | Ft_MF_Unk06;
static MotionFlags const ftCo_MF_LiftTurn =
ftCo_MF_LiftMove | Ft_MF_KeepAccessory;
static MotionFlags const ftCo_MF_LiftWalk =
ftCo_MF_LiftMove | Ft_MF_KeepGfx | Ft_MF_UpdateCmd;
static MotionFlags const ftCo_MF_ParasolFall =
ftCo_MF_ItemFall | Ft_MF_SkipItemVis | Ft_MF_Unk19;
static MotionFlags const ftCo_MF_FireFlowerShoot =
ftCo_MF_ParasolFall | Ft_MF_KeepGfx | Ft_MF_SkipThrowException;
static MotionFlags const ftCo_MF_ItemScopeRapid =
ftCo_MF_ParasolFall | Ft_MF_KeepColAnimHitStatus |
Ft_MF_SkipThrowException | Ft_MF_Unk19;
static MotionFlags const ftCo_MF_FireFlowerShootAir =
ftCo_MF_FireFlowerShoot | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_ItemScopeAirRapid =
ftCo_MF_ItemScopeRapid | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_Dazed =
Ft_MF_UnkUpdatePhys | Ft_MF_SkipModelPartVis;
static MotionFlags const ftCo_MF_Damage = ftCo_MF_Dazed | Ft_MF_KeepSwordTrail;
static MotionFlags const ftCo_MF_DamageScrew =
ftCo_MF_Damage | Ft_MF_SkipNametagVis;
static MotionFlags const ftCo_MF_DamageScrewAir =
ftCo_MF_Damage | Ft_MF_KeepColAnimPartHitStatus;
static MotionFlags const ftCo_MF_Down = Ft_MF_SkipHit | Ft_MF_SkipAnimVel |
Ft_MF_Unk06 | Ft_MF_FreezeState |
Ft_MF_SkipModelPartVis;
static MotionFlags const ftCo_MF_DownU =
ftCo_MF_Down | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_DownD = ftCo_MF_DownU | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_DownDamageU =
ftCo_MF_DownU | Ft_MF_KeepSwordTrail;
static MotionFlags const ftCo_MF_DownDamageD =
ftCo_MF_DownD | Ft_MF_KeepSwordTrail;
static MotionFlags const ftCo_MF_DownAttack =
ftCo_MF_Attack | Ft_MF_SkipModel | Ft_MF_SkipAnimVel |
Ft_MF_SkipModelPartVis;
static MotionFlags const ftCo_MF_DownAttackU =
ftCo_MF_DownAttack | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_DownAttackD =
ftCo_MF_DownAttack | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_PassiveWall =
ftCo_MF_Dazed | Ft_MF_FreezeState;
static MotionFlags const ftCo_MF_Passive = ftCo_MF_Down | Ft_MF_KeepGfx |
Ft_MF_KeepColAnimHitStatus |
Ft_MF_UnkUpdatePhys;
static MotionFlags const ftCo_MF_StopWall =
Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_SkipHit | Ft_MF_SkipAnimVel |
Ft_MF_Unk06 | Ft_MF_SkipMetalB;
static MotionFlags const ftCo_MF_Pass =
ftCo_MF_StopWall | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_OttottoWait = Ft_MF_Unk19 | Ft_MF_SkipMetalB;
static MotionFlags const ftCo_MF_CliffAction =
Ft_MF_UnkUpdatePhys | Ft_MF_SkipMetalB;
static MotionFlags const ftCo_MF_CliffAction_4_5 =
ftCo_MF_CliffAction | Ft_MF_SkipModel | Ft_MF_SkipAnimVel;
static MotionFlags const ftCo_MF_CliffCatch =
ftCo_MF_CliffAction_4_5 | Ft_MF_Unk06;
static MotionFlags const ftCo_MF_CliffAttackSlow =
ftCo_MF_AttackBase | ftCo_MF_CliffAction_4_5 | Ft_MF_KeepGfx |
Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_CliffWait = ftCo_MF_CliffAction | Ft_MF_Unk19;
static MotionFlags const ftCo_MF_CatchWait =
Ft_MF_FreezeState | Ft_MF_SkipMetalB;
static MotionFlags const ftCo_MF_CatchBase =
ftCo_MF_CatchWait | Ft_MF_SkipModel | Ft_MF_SkipAnimVel;
static MotionFlags const ftCo_MF_Catch =
ftCo_MF_CatchBase | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_Throw = ftCo_MF_CatchBase | Ft_MF_SkipItemVis;
static MotionFlags const ftCo_MF_CatchAttack =
ftCo_MF_Throw | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCo_MF_ThrowF =
ftCo_MF_CatchAttack | Ft_MF_KeepFastFall;
static MotionFlags const ftCo_MF_ThrowB = ftCo_MF_CatchAttack | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_ThrowHi = ftCo_MF_ThrowF | Ft_MF_KeepGfx;
static MotionFlags const ftCo_MF_ThrowLw = ftCo_MF_Throw | Ft_MF_SkipHit;
static MotionFlags const ftCo_MF_Capture =
ftCo_MF_CatchWait | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftCo_MF_CaptureAir =
ftCo_MF_Capture | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_Thrown =
ftCo_MF_Capture | Ft_MF_KeepSwordTrail;
static MotionFlags const ftCo_MF_ThrownAir =
ftCo_MF_Thrown | Ft_MF_SkipParasol;
static MotionFlags const ftCo_MF_Shouldered = ftCo_MF_Capture | Ft_MF_Unk19;
static MotionFlags const ftCo_MF_Rebirth =
Ft_MF_SkipModelPartVis | Ft_MF_SkipMetalB;
static MotionFlags const ftCo_MF_ThrownStar =
ftCo_MF_Rebirth | Ft_MF_KeepSwordTrail;
static MotionFlags const ftCo_MF_Dead = ftCo_MF_Dazed | Ft_MF_SkipMetalB;
static MotionFlags const ftCo_MF_Sleep = ftCo_MF_Dead | Ft_MF_KeepSwordTrail;
static MotionFlags const ftCo_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
typedef enum ftCommon_MotionState {
ftCo_MS_None = -1,
ftCo_MS_DeadDown,
ftCo_MS_DeadLeft,
ftCo_MS_DeadRight,
ftCo_MS_DeadUp,
ftCo_MS_DeadUpStar,
ftCo_MS_DeadUpStarIce,
ftCo_MS_DeadUpFall,
ftCo_MS_DeadUpFallHitCamera,
ftCo_MS_DeadUpFallHitCameraFlat,
ftCo_MS_DeadUpFallIce,
ftCo_MS_DeadUpFallHitCameraIce,
ftCo_MS_Sleep,
ftCo_MS_Rebirth,
ftCo_MS_RebirthWait,
ftCo_MS_Wait,
ftCo_MS_WalkSlow,
ftCo_MS_WalkMiddle,
ftCo_MS_WalkFast,
ftCo_MS_Turn,
ftCo_MS_TurnRun,
ftCo_MS_Dash,
ftCo_MS_Run,
ftCo_MS_RunDirect,
ftCo_MS_RunBrake,
ftCo_MS_KneeBend,
ftCo_MS_JumpF,
ftCo_MS_JumpB,
ftCo_MS_JumpAerialF,
ftCo_MS_JumpAerialB,
ftCo_MS_Fall,
ftCo_MS_FallF,
ftCo_MS_FallB,
ftCo_MS_FallAerial,
ftCo_MS_FallAerialF,
ftCo_MS_FallAerialB,
ftCo_MS_FallSpecial,
ftCo_MS_FallSpecialF,
ftCo_MS_FallSpecialB,
ftCo_MS_DamageFall,
ftCo_MS_Squat,
ftCo_MS_SquatWait,
ftCo_MS_SquatRv,
ftCo_MS_Landing,
ftCo_MS_LandingFallSpecial,
ftCo_MS_Attack11,
ftCo_MS_Attack12,
ftCo_MS_Attack13,
ftCo_MS_Attack100Start,
ftCo_MS_Attack100Loop,
ftCo_MS_Attack100End,
ftCo_MS_AttackDash,
ftCo_MS_AttackS3Hi,
ftCo_MS_AttackS3HiS,
ftCo_MS_AttackS3S,
ftCo_MS_AttackS3LwS,
ftCo_MS_AttackS3Lw,
ftCo_MS_AttackHi3,
ftCo_MS_AttackLw3,
ftCo_MS_AttackS4Hi,
ftCo_MS_AttackS4HiS,
ftCo_MS_AttackS4S,
ftCo_MS_AttackS4LwS,
ftCo_MS_AttackS4Lw,
ftCo_MS_AttackHi4,
ftCo_MS_AttackLw4,
ftCo_MS_AttackAirN,
ftCo_MS_AttackAirF,
ftCo_MS_AttackAirB,
ftCo_MS_AttackAirHi,
ftCo_MS_AttackAirLw,
ftCo_MS_LandingAirN,
ftCo_MS_LandingAirF,
ftCo_MS_LandingAirB,
ftCo_MS_LandingAirHi,
ftCo_MS_LandingAirLw,
ftCo_MS_DamageHi1,
ftCo_MS_DamageHi2,
ftCo_MS_DamageHi3,
ftCo_MS_DamageN1,
ftCo_MS_DamageN2,
ftCo_MS_DamageN3,
ftCo_MS_DamageLw1,
ftCo_MS_DamageLw2,
ftCo_MS_DamageLw3,
ftCo_MS_DamageAir1,
ftCo_MS_DamageAir2,
ftCo_MS_DamageAir3,
ftCo_MS_DamageFlyHi,
ftCo_MS_DamageFlyN,
ftCo_MS_DamageFlyLw,
ftCo_MS_DamageFlyTop,
ftCo_MS_DamageFlyRoll,
ftCo_MS_LightGet,
ftCo_MS_HeavyGet,
ftCo_MS_LightThrowF,
ftCo_MS_LightThrowB,
ftCo_MS_LightThrowHi,
ftCo_MS_LightThrowLw,
ftCo_MS_LightThrowDash,
ftCo_MS_LightThrowDrop,
ftCo_MS_LightThrowAirF,
ftCo_MS_LightThrowAirB,
ftCo_MS_LightThrowAirHi,
ftCo_MS_LightThrowAirLw,
ftCo_MS_HeavyThrowF,
ftCo_MS_HeavyThrowB,
ftCo_MS_HeavyThrowHi,
ftCo_MS_HeavyThrowLw,
ftCo_MS_LightThrowF4,
ftCo_MS_LightThrowB4,
ftCo_MS_LightThrowHi4,
ftCo_MS_LightThrowLw4,
ftCo_MS_LightThrowAirF4,
ftCo_MS_LightThrowAirB4,
ftCo_MS_LightThrowAirHi4,
ftCo_MS_LightThrowAirLw4,
ftCo_MS_HeavyThrowF4,
ftCo_MS_HeavyThrowB4,
ftCo_MS_HeavyThrowHi4,
ftCo_MS_HeavyThrowLw4,
ftCo_MS_SwordSwing1,
ftCo_MS_SwordSwing3,
ftCo_MS_SwordSwing4,
ftCo_MS_SwordSwingDash,
ftCo_MS_BatSwing1,
ftCo_MS_BatSwing3,
ftCo_MS_BatSwing4,
ftCo_MS_BatSwingDash,
ftCo_MS_ParasolSwing1,
ftCo_MS_ParasolSwing3,
ftCo_MS_ParasolSwing4,
ftCo_MS_ParasolSwingDash,
ftCo_MS_HarisenSwing1,
ftCo_MS_HarisenSwing3,
ftCo_MS_HarisenSwing4,
ftCo_MS_HarisenSwingDash,
ftCo_MS_StarRodSwing1,
ftCo_MS_StarRodSwing3,
ftCo_MS_StarRodSwing4,
ftCo_MS_StarRodSwingDash,
ftCo_MS_LipstickSwing1,
ftCo_MS_LipstickSwing3,
ftCo_MS_LipstickSwing4,
ftCo_MS_LipstickSwingDash,
ftCo_MS_ItemParasolOpen,
ftCo_MS_ItemParasolFall,
ftCo_MS_ItemParasolFallSpecial,
ftCo_MS_ItemParasolDamageFall,
ftCo_MS_LGunShoot,
ftCo_MS_LGunShootAir,
ftCo_MS_LGunShootEmpty,
ftCo_MS_LGunShootAirEmpty,
ftCo_MS_FireFlowerShoot,
ftCo_MS_FireFlowerShootAir,
ftCo_MS_ItemScrew,
ftCo_MS_ItemScrewAir,
ftCo_MS_DamageScrew,
ftCo_MS_DamageScrewAir,
ftCo_MS_ItemScopeStart,
ftCo_MS_ItemScopeRapid,
ftCo_MS_ItemScopeFire,
ftCo_MS_ItemScopeEnd,
ftCo_MS_ItemScopeAirStart,
ftCo_MS_ItemScopeAirRapid,
ftCo_MS_ItemScopeAirFire,
ftCo_MS_ItemScopeAirEnd,
ftCo_MS_ItemScopeStartEmpty,
ftCo_MS_ItemScopeRapidEmpty,
ftCo_MS_ItemScopeFireEmpty,
ftCo_MS_ItemScopeEndEmpty,
ftCo_MS_ItemScopeAirStartEmpty,
ftCo_MS_ItemScopeAirRapidEmpty,
ftCo_MS_ItemScopeAirFireEmpty,
ftCo_MS_ItemScopeAirEndEmpty,
ftCo_MS_LiftWait,
ftCo_MS_LiftWalk1,
ftCo_MS_LiftWalk2,
ftCo_MS_LiftTurn,
ftCo_MS_GuardOn,
ftCo_MS_Guard,
ftCo_MS_GuardOff,
ftCo_MS_GuardSetOff,
ftCo_MS_GuardReflect,
ftCo_MS_DownBoundU,
ftCo_MS_DownWaitU,
ftCo_MS_DownDamageU,
ftCo_MS_DownStandU,
ftCo_MS_DownAttackU,
ftCo_MS_DownFowardU,
ftCo_MS_DownBackU,
ftCo_MS_DownSpotU,
ftCo_MS_DownBoundD,
ftCo_MS_DownWaitD,
ftCo_MS_DownDamageD,
ftCo_MS_DownStandD,
ftCo_MS_DownAttackD,
ftCo_MS_DownFowardD,
ftCo_MS_DownBackD,
ftCo_MS_DownSpotD,
ftCo_MS_Passive,
ftCo_MS_PassiveStandF,
ftCo_MS_PassiveStandB,
ftCo_MS_PassiveWall,
ftCo_MS_PassiveWallJump,
ftCo_MS_PassiveCeil,
ftCo_MS_ShieldBreakFly,
ftCo_MS_ShieldBreakFall,
ftCo_MS_ShieldBreakDownU,
ftCo_MS_ShieldBreakDownD,
ftCo_MS_ShieldBreakStandU,
ftCo_MS_ShieldBreakStandD,
ftCo_MS_Furafura,
ftCo_MS_Catch,
ftCo_MS_CatchPull,
ftCo_MS_CatchDash,
ftCo_MS_CatchDashPull,
ftCo_MS_CatchWait,
ftCo_MS_CatchAttack,
ftCo_MS_CatchCut,
ftCo_MS_ThrowF,
ftCo_MS_ThrowB,
ftCo_MS_ThrowHi,
ftCo_MS_ThrowLw,
ftCo_MS_CapturePulledHi,
ftCo_MS_CaptureWaitHi,
ftCo_MS_CaptureDamageHi,
ftCo_MS_CapturePulledLw,
ftCo_MS_CaptureWaitLw,
ftCo_MS_CaptureDamageLw,
ftCo_MS_CaptureCut,
ftCo_MS_CaptureJump,
ftCo_MS_CaptureNeck,
ftCo_MS_CaptureFoot,
ftCo_MS_EscapeF,
ftCo_MS_EscapeB,
ftCo_MS_EscapeN,
ftCo_MS_EscapeAir,
ftCo_MS_ReboundStop,
ftCo_MS_Rebound,
ftCo_MS_ThrownF,
ftCo_MS_ThrownB,
ftCo_MS_ThrownHi,
ftCo_MS_ThrownLw,
ftCo_MS_ThrownlwWomen,
ftCo_MS_Pass,
ftCo_MS_Ottotto,
ftCo_MS_OttottoWait,
ftCo_MS_FlyReflectWall,
ftCo_MS_FlyReflectCeil,
ftCo_MS_StopWall,
ftCo_MS_StopCeil,
ftCo_MS_MissFoot,
ftCo_MS_CliffCatch,
ftCo_MS_CliffWait,
ftCo_MS_CliffClimbSlow,
ftCo_MS_CliffClimbQuick,
ftCo_MS_CliffAttackSlow,
ftCo_MS_CliffAttackQuick,
ftCo_MS_CliffEscapeSlow,
ftCo_MS_CliffEscapeQuick,
ftCo_MS_CliffJumpSlow1,
ftCo_MS_CliffJumpSlow2,
ftCo_MS_CliffJumpQuick1,
ftCo_MS_CliffJumpQuick2,
ftCo_MS_AppealSR,
ftCo_MS_AppealSL,
ftCo_MS_ShoulderedWait,
ftCo_MS_ShoulderedWalkSlow,
ftCo_MS_ShoulderedWalkMiddle,
ftCo_MS_ShoulderedWalkFast,
ftCo_MS_ShoulderedTurn,
ftCo_MS_ThrownFF,
ftCo_MS_ThrownFB,
ftCo_MS_ThrownFHi,
ftCo_MS_ThrownFLw,
ftCo_MS_CaptureCaptain,
ftCo_MS_CaptureYoshi,
ftCo_MS_YoshiEgg,
ftCo_MS_CaptureKoopa,
ftCo_MS_CaptureDamageKoopa,
ftCo_MS_CaptureWaitKoopa,
ftCo_MS_ThrownKoopaF,
ftCo_MS_ThrownKoopaB,
ftCo_MS_CaptureKoopaAir,
ftCo_MS_CaptureDamageKoopaAir,
ftCo_MS_CaptureWaitKoopaAir,
ftCo_MS_ThrownKoopaAirF,
ftCo_MS_ThrownKoopaAirB,
ftCo_MS_CaptureKirby,
ftCo_MS_CaptureWaitKirby,
ftCo_MS_ThrownKirbyStar,
ftCo_MS_ThrownCopyStar,
ftCo_MS_ThrownKirby,
ftCo_MS_BarrelWait,
ftCo_MS_Bury,
ftCo_MS_BuryWait,
ftCo_MS_BuryJump,
ftCo_MS_DamageSong,
ftCo_MS_DamageSongWait,
ftCo_MS_DamageSongRv,
ftCo_MS_DamageBind,
ftCo_MS_CaptureMewtwo,
ftCo_MS_CaptureMewtwoAir,
ftCo_MS_ThrownMewtwo,
ftCo_MS_ThrownMewtwoAir,
ftCo_MS_WarpStarJump,
ftCo_MS_WarpStarFall,
ftCo_MS_HammerWait,
ftCo_MS_HammerWalk,
ftCo_MS_HammerTurn,
ftCo_MS_HammerKneeBend,
ftCo_MS_HammerFall,
ftCo_MS_HammerJump,
ftCo_MS_HammerLanding,
ftCo_MS_KinokoGiantStart,
ftCo_MS_KinokoGiantStartAir,
ftCo_MS_KinokoGiantEnd,
ftCo_MS_KinokoGiantEndAir,
ftCo_MS_KinokoSmallStart,
ftCo_MS_KinokoSmallStartAir,
ftCo_MS_KinokoSmallEnd,
ftCo_MS_KinokoSmallEndAir,
ftCo_MS_Entry,
ftCo_MS_EntryStart,
ftCo_MS_EntryEnd,
ftCo_MS_DamageIce,
ftCo_MS_DamageIceJump,
ftCo_MS_CaptureMasterHand,
ftCo_MS_CaptureDamageMasterHand,
ftCo_MS_CaptureWaitMasterHand,
ftCo_MS_ThrownMasterHand,
ftCo_MS_CaptureKirbyYoshi,
ftCo_MS_KirbyYoshiEgg,
ftCo_MS_CaptureLeadead,
ftCo_MS_CaptureLikelike,
ftCo_MS_DownReflect,
ftCo_MS_CaptureCrazyHand,
ftCo_MS_CaptureDamageCrazyHand,
ftCo_MS_CaptureWaitCrazyHand,
ftCo_MS_ThrownCrazyHand,
ftCo_MS_Barrel,
ftCo_MS_Count
} ftCommon_MotionState;
typedef enum ftCo_Submotion {
ftCo_SM_None = -1,
ftCo_SM_DeadUpFallHitCamera,
ftCo_SM_DeadUpFallHitCameraFlat,
ftCo_SM_Wait1_0,
ftCo_SM_Wait2,
ftCo_SM_Unk004,
ftCo_SM_Unk005,
ftCo_SM_Wait1_1,
ftCo_SM_WalkSlow,
ftCo_SM_WalkMiddle,
ftCo_SM_WalkFast,
ftCo_SM_Turn,
ftCo_SM_TurnRun,
ftCo_SM_Dash,
ftCo_SM_Run,
ftCo_SM_RunBrake,
ftCo_SM_Kneebend,
ftCo_SM_JumpF,
ftCo_SM_JumpB,
ftCo_SM_JumpAerialF,
ftCo_SM_JumpAerialB,
ftCo_SM_Fall,
ftCo_SM_FallF,
ftCo_SM_FallB,
ftCo_SM_FallAerial,
ftCo_SM_FallAerialF,
ftCo_SM_FallAerialB,
ftCo_SM_FallSpecial,
ftCo_SM_FallSpecialF,
ftCo_SM_FallSpecialB,
ftCo_SM_DamageFall,
ftCo_SM_Squat,
ftCo_SM_SquatWait,
ftCo_SM_Unk032,
ftCo_SM_SquatWaitItem,
ftCo_SM_SquatRv,
ftCo_SM_Landing,
ftCo_SM_LandingFallSpecial,
ftCo_SM_GuardOn,
ftCo_SM_Guard,
ftCo_SM_GuardOff,
ftCo_SM_GuardDamage,
ftCo_SM_EscapeN,
ftCo_SM_EscapeF,
ftCo_SM_EscapeB,
ftCo_SM_EscapeAir,
ftCo_SM_Rebound,
ftCo_SM_Attack11,
ftCo_SM_Attack12,
ftCo_SM_Attack13,
ftCo_SM_Attack100Start,
ftCo_SM_Attack100Loop,
ftCo_SM_Attack100End,
ftCo_SM_AttackDash,
ftCo_SM_AttackS3Hi,
ftCo_SM_AttackS3HiS,
ftCo_SM_AttackS3,
ftCo_SM_AttackS3LwS,
ftCo_SM_AttackS3Lw,
ftCo_SM_AttackHi3,
ftCo_SM_AttackLw3,
ftCo_SM_AttackS4Hi,
ftCo_SM_AttackS4HiS,
ftCo_SM_AttackS4,
ftCo_SM_AttackS4LwS,
ftCo_SM_AttackS4Lw,
ftCo_SM_Unk065,
ftCo_SM_AttackHi4,
ftCo_SM_AttackLw4,
ftCo_SM_AttackAirN,
ftCo_SM_AttackAirF,
ftCo_SM_AttackAirB,
ftCo_SM_AttackAirHi,
ftCo_SM_AttackAirLw,
ftCo_SM_LandingAirN,
ftCo_SM_LandingAirF,
ftCo_SM_LandingAirB,
ftCo_SM_LandingAirHi,
ftCo_SM_LandingAirLw,
ftCo_SM_LightGet,
ftCo_SM_LightThrowF,
ftCo_SM_LightThrowB,
ftCo_SM_LightThrowHi,
ftCo_SM_LightThrowLw,
ftCo_SM_LightThrowDash,
ftCo_SM_LightThrowDrop,
ftCo_SM_LightThrowAirF,
ftCo_SM_LightThrowAirB,
ftCo_SM_LightThrowAirHi,
ftCo_SM_LightThrowAirLw,
ftCo_SM_HeavyGet,
ftCo_SM_HeavyWalk1,
ftCo_SM_HeavyWalk2,
ftCo_SM_HeavyThrowF,
ftCo_SM_HeavyThrowB,
ftCo_SM_HeavyThrowHi,
ftCo_SM_HeavyThrowLw,
ftCo_SM_LightThrowF4,
ftCo_SM_LightThrowB4,
ftCo_SM_LightThrowHi4,
ftCo_SM_LightThrowLw4,
ftCo_SM_LightThrowAirF4,
ftCo_SM_LightThrowAirB4,
ftCo_SM_LightThrowAirHi4,
ftCo_SM_LightThrowAirLw4,
ftCo_SM_HeavyThrowF4,
ftCo_SM_HeavyThrowB4,
ftCo_SM_HeavyThrowHi4,
ftCo_SM_HeavyThrowLw4,
ftCo_SM_SwordSwing1,
ftCo_SM_SwordSwing3,
ftCo_SM_SwordSwing4,
ftCo_SM_SwordSwingDash,
ftCo_SM_BatSwing1,
ftCo_SM_BatSwing3,
ftCo_SM_BatSwing4,
ftCo_SM_BatSwingDash,
ftCo_SM_ParasolSwing1,
ftCo_SM_ParasolSwing3,
ftCo_SM_ParasolSwing4,
ftCo_SM_ParasolSwingDash,
ftCo_SM_HarisenSwing1,
ftCo_SM_HarisenSwing3,
ftCo_SM_HarisenSwing4,
ftCo_SM_HarisenSwingDash,
ftCo_SM_StarRodSwing1,
ftCo_SM_StarRodSwing3,
ftCo_SM_StarRodSwing4,
ftCo_SM_StarRodSwingDash,
ftCo_SM_LipstickSwing1,
ftCo_SM_LipstickSwing3,
ftCo_SM_LipstickSwing4,
ftCo_SM_LipstickSwingDash,
ftCo_SM_HammerWait,
ftCo_SM_HammerMove,
ftCo_SM_ItemParasolOpen,
ftCo_SM_ItemParasolFall,
ftCo_SM_ItemParasolFallSpecial,
ftCo_SM_ItemParasolDamageFall,
ftCo_SM_LGunShoot,
ftCo_SM_LGunShootAir,
ftCo_SM_LGunShootEmpty,
ftCo_SM_LGunShootAirEmpty,
ftCo_SM_FireFlowerShoot,
ftCo_SM_FireFlowerShootAir,
ftCo_SM_ItemScrew,
ftCo_SM_ItemScrewAir,
ftCo_SM_ItemScrewDamage,
ftCo_SM_ItemScrewDamageAir,
ftCo_SM_ItemBlind,
ftCo_SM_ItemScopeStart,
ftCo_SM_ItemScopeRapid,
ftCo_SM_ItemScopeFire,
ftCo_SM_ItemScopeEnd,
ftCo_SM_ItemScopeAirStart,
ftCo_SM_ItemScopeAirRapid,
ftCo_SM_ItemScopeAirFire,
ftCo_SM_ItemScopeAirEnd,
ftCo_SM_ItemScopeStartEmpty,
ftCo_SM_ItemScopeRapidEmpty,
ftCo_SM_ItemScopeFireEmpty,
ftCo_SM_ItemScopeEndEmpty,
ftCo_SM_ItemScopeAirStartEmpty,
ftCo_SM_ItemScopeAirRapidEmpty,
ftCo_SM_ItemScopeAirFireEmpty,
ftCo_SM_ItemScopeAirEndEmpty,
ftCo_SM_DamageHi1,
ftCo_SM_DamageHi2,
ftCo_SM_DamageHi3,
ftCo_SM_DamageN1,
ftCo_SM_DamageN2,
ftCo_SM_DamageN3,
ftCo_SM_DamageLw1,
ftCo_SM_DamageLw2,
ftCo_SM_DamageLw3,
ftCo_SM_DamageAir1,
ftCo_SM_DamageAir2,
ftCo_SM_DamageAir3,
ftCo_SM_DamageFlyHi,
ftCo_SM_DamageFlyN,
ftCo_SM_DamageFlyLw,
ftCo_SM_DamageFlyTop,
ftCo_SM_DamageFlyRoll,
ftCo_SM_Unk182,
ftCo_SM_DownBoundU,
ftCo_SM_DownWaitU,
ftCo_SM_DownDamageU,
ftCo_SM_DownStandU,
ftCo_SM_DownAttackU,
ftCo_SM_DownFowardU,
ftCo_SM_DownBackU,
ftCo_SM_DownSpotU,
ftCo_SM_DownBoundD,
ftCo_SM_DownWaitD,
ftCo_SM_DownDamageD,
ftCo_SM_DownStandD,
ftCo_SM_DownAttackD,
ftCo_SM_DownFowardD,
ftCo_SM_DownBackD,
ftCo_SM_DownSpotD,
ftCo_SM_Passive,
ftCo_SM_PassiveStandF,
ftCo_SM_PassiveStandB,
ftCo_SM_PassiveWall,
ftCo_SM_PassiveWallJump,
ftCo_SM_PassiveCeil,
ftCo_SM_FuraFura,
ftCo_SM_FuraSleepStart,
ftCo_SM_FuraSleepLoop,
ftCo_SM_FuraSleepEnd,
ftCo_SM_Pass,
ftCo_SM_Ottotto,
ftCo_SM_OttottoWait,
ftCo_SM_WallDamage,
ftCo_SM_StopWall,
ftCo_SM_StopCeil,
ftCo_SM_MissFoot,
ftCo_SM_CliffCatch,
ftCo_SM_CliffWait,
ftCo_SM_Unk218,
ftCo_SM_CliffClimbSlow,
ftCo_SM_CliffClimbQuick,
ftCo_SM_CliffAttackSlow,
ftCo_SM_CliffAttackQuick,
ftCo_SM_CliffEscapeSlow,
ftCo_SM_CliffEscapeQuick,
ftCo_SM_CliffJumpSlow1,
ftCo_SM_CliffJumpSlow2,
ftCo_SM_CliffJumpQuick1,
ftCo_SM_CliffJumpQuick2,
ftCo_SM_Unk229,
ftCo_SM_Unk230,
ftCo_SM_Unk231,
ftCo_SM_Unk232,
ftCo_SM_Unk233,
ftCo_SM_Unk234,
ftCo_SM_Unk235,
ftCo_SM_Unk236,
ftCo_SM_Unk237,
ftCo_SM_EntryStart,
ftCo_SM_AppealSR,
ftCo_SM_AppealSL,
ftCo_SM_Unk241,
ftCo_SM_Catch,
ftCo_SM_CatchDash,
ftCo_SM_CatchWait,
ftCo_SM_CatchAttack,
ftCo_SM_CatchCut,
ftCo_SM_ThrowF,
ftCo_SM_ThrowB,
ftCo_SM_ThrowHi,
ftCo_SM_ThrowLw,
ftCo_SM_CapturePulledHi,
ftCo_SM_CaptureWaitHi,
ftCo_SM_CaptureDamageHi,
ftCo_SM_CapturePulledLw,
ftCo_SM_CaptureWaitLw,
ftCo_SM_CaptureDamageLw,
ftCo_SM_CaptureCut,
ftCo_SM_CaptureJump,
ftCo_SM_CaptureNeck,
ftCo_SM_CaptureFoot,
ftCo_SM_Unk261,
ftCo_SM_ThrownF,
ftCo_SM_ThrownB,
ftCo_SM_ThrownHi,
ftCo_SM_ThrownLw,
ftCo_SM_ThrownlwWomen,
ftCo_SM_ShoulderedWait,
ftCo_SM_ShoulderedWalkSlow,
ftCo_SM_ShoulderedWalkMiddle,
ftCo_SM_ShoulderedWalkFast,
ftCo_SM_ShoulderedTurn,
ftCo_SM_ThrownFF,
ftCo_SM_ThrownFB,
ftCo_SM_ThrownFHi,
ftCo_SM_ThrownFLw,
ftCo_SM_CaptureCaptain,
ftCo_SM_YoshiEgg,
ftCo_SM_CaptureDamageKoopa,
ftCo_SM_ThrownKoopaF,
ftCo_SM_ThrownKoopaB,
ftCo_SM_CaptureDamageKoopaAir,
ftCo_SM_ThrownKoopaAirF,
ftCo_SM_ThrownKoopaAirB,
ftCo_SM_ThrownCopyStar,
ftCo_SM_ThrownKirbyStar,
ftCo_SM_ShieldBreakFly,
ftCo_SM_ShieldBreakFall,
ftCo_SM_ShieldBreakDownU,
ftCo_SM_ShieldBreakDownD,
ftCo_SM_ShieldBreakStandU,
ftCo_SM_ShieldBreakStandD,
ftCo_SM_ThrownMewtwo,
ftCo_SM_ThrownMewtwoAir,
ftCo_SM_KirbyYoshiEgg,
ftCo_SM_Count,
} ftCo_Submotion;
typedef enum ftCo_Surface {
FTCO_Surface_None,
ftCo_Surface_LeftWall,
ftCo_Surface_RightWall,
ftCo_Surface_Ceiling,
} ftCo_Surface;
typedef Fighter ftLk_Fighter;
typedef HSD_GObj ftLk_GObj;
typedef struct ftLk_DatAttrs ftLk_DatAttrs;
typedef struct ftLk_FighterVars ftLk_FighterVars;
typedef union ftLk_MotionVars ftLk_MotionVars;
static MotionFlags const ftLk_MF_Base0 =
Ft_MF_SkipModel | Ft_MF_SkipThrowException;
static MotionFlags const ftLk_MF_Base1 = Ft_MF_SkipItemVis | Ft_MF_FreezeState;
static MotionFlags const ftLk_MF_Base2 = ftLk_MF_Base1 | Ft_MF_KeepFastFall;
static MotionFlags const ftLk_MF_Base3 = ftLk_MF_Base0 | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftLk_MF_AttackS42 = ftLk_MF_Base2 | Ft_MF_SkipHit;
static MotionFlags const ftLk_MF_SpecialN = ftLk_MF_Base2 | ftLk_MF_Base3;
static MotionFlags const ftLk_MF_SpecialNFullyCharged =
ftLk_MF_SpecialN | Ft_MF_Unk19;
static MotionFlags const ftLk_MF_SpecialAirNCharge =
ftLk_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftLk_MF_SpecialAirNFullyCharged =
ftLk_MF_SpecialNFullyCharged | Ft_MF_SkipParasol;
static MotionFlags const ftLk_MF_SpecialAirNFire =
ftLk_MF_SpecialAirNCharge | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftLk_MF_SpecialSThrow =
ftLk_MF_Base3 | ftLk_MF_Base1 | Ft_MF_KeepGfx;
static MotionFlags const ftLk_MF_SpecialSCatch =
ftLk_MF_SpecialSThrow | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftLk_MF_SpecialAirSThrow =
ftLk_MF_SpecialSThrow | ftLk_MF_Base3 | Ft_MF_SkipParasol;
static MotionFlags const ftLk_MF_SpecialAirSThrowEmpty =
ftLk_MF_SpecialSCatch | ftLk_MF_Base1 | Ft_MF_SkipParasol;
static MotionFlags const ftLk_MF_SpecialHi =
Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_SkipModel | Ft_MF_KeepSfx |
Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys | Ft_MF_FreezeState;
static MotionFlags const ftLk_MF_SpecialLw =
Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipModel | Ft_MF_SkipItemVis |
Ft_MF_UnkUpdatePhys | Ft_MF_FreezeState;
static MotionFlags const ftLk_MF_SpecialAirLw =
ftLk_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftLk_MF_ZairCatch =
Ft_MF_SkipModelPartVis | Ft_MF_SkipMetalB;
typedef enum ftLink_MotionState {
ftLk_MS_AttackS42 = ftCo_MS_Count,
ftLk_MS_AppealSR,
ftLk_MS_AppealSL,
ftLk_MS_SpecialNStart,
ftLk_MS_SpecialNLoop,
ftLk_MS_SpecialNEnd,
ftLk_MS_SpecialAirNStart,
ftLk_MS_SpecialAirNLoop,
ftLk_MS_SpecialAirNEnd,
ftLk_MS_SpecialS1,
ftLk_MS_SpecialS2,
ftLk_MS_SpecialS1Empty,
ftLk_MS_SpecialAirS1,
ftLk_MS_SpecialAirS2,
ftLk_MS_SpecialAirS1Empty,
ftLk_MS_SpecialHi,
ftLk_MS_SpecialAirHi,
ftLk_MS_SpecialLw,
ftLk_MS_SpecialAirLw,
ftLk_MS_AirCatch,
ftLk_MS_AirCatchHit,
ftLk_MS_Count,
ftLk_MS_SelfCount = ftLk_MS_Count - ftCo_MS_Count,
} ftLink_MotionState;
typedef enum ftLk_SpecialNIndex {
ftLk_SpecialNIndex_Start,
ftLk_SpecialNIndex_Loop,
ftLk_SpecialNIndex_End,
ftLk_SpecialNIndex_AirStart,
ftLk_SpecialNIndex_AirLoop,
ftLk_SpecialNIndex_AirEnd,
ftLk_SpecialNIndex_None,
} ftLk_SpecialNIndex;
typedef enum ftLk_Submotion {
ftLk_SM_AttackS42 = ftCo_SM_Count,
ftLk_SM_SpecialNStart,
ftLk_SM_SpecialNLoop,
ftLk_SM_SpecialNEnd,
ftLk_SM_SpecialAirNStart,
ftLk_SM_SpecialAirNLoop,
ftLk_SM_SpecialAirNEnd,
ftLk_SM_SpecialS1,
ftLk_SM_SpecialS2,
ftLk_SM_SpecialS1Empty,
ftLk_SM_SpecialAirS1,
ftLk_SM_SpecialAirS2,
ftLk_SM_SpecialAirS1Empty,
ftLk_SM_SpecialHi,
ftLk_SM_SpecialAirHi,
ftLk_SM_SpecialLw,
ftLk_SM_SpecialAirLw,
ftLk_SM_AirCatch,
ftLk_SM_AirCatchHit,
ftLk_SM_Count,
ftLk_SM_SelfCount = ftLk_SM_Count - ftCo_SM_Count,
} ftLk_Submotion;
#define MELEE_FT_TYPES_H
#define MELEE_FT_CHARA_FTCAPTAIN_TYPES_H
#define MELEE_FT_CHARA_FTCAPTAIN_FORWARD_H
typedef struct ftCaptain_DatAttrs ftCaptain_DatAttrs;
typedef union ftCaptain_MotionVars ftCaptain_MotionVars;
static MotionFlags const ftCa_MF_Special = ftCo_MF_Special | Ft_MF_KeepSfx;
static MotionFlags const ftCa_MF_SpecialN =
ftCa_MF_Special | Ft_MF_KeepFastFall;
static MotionFlags const ftCa_MF_SpecialAirN =
ftCa_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftCa_MF_SpecialS = ftCa_MF_Special | Ft_MF_KeepGfx;
static MotionFlags const ftCa_MF_SpecialAirSStart =
ftCa_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftCa_MF_SpecialAirS =
ftCa_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftCa_MF_SpecialHi =
ftCo_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftCa_MF_SpecialAirHi =
ftCa_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftCa_MF_SpecialLw =
ftCa_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftCa_MF_SpecialLwRebound =
ftCa_MF_SpecialLw | Ft_MF_SkipParasol;
typedef enum ftCaptain_MotionState {
ftCa_MS_SwordSwing4 = ftCo_MS_Count,
ftCa_MS_BatSwing4,
ftCa_MS_ParasolSwing4,
ftCa_MS_HarisenSwing4,
ftCa_MS_StarRodSwing4,
ftCa_MS_LipstickSwing4,
ftCa_MS_SpecialN,
ftCa_MS_SpecialAirN,
ftCa_MS_SpecialSStart,
ftCa_MS_SpecialS,
ftCa_MS_SpecialAirSStart,
ftCa_MS_SpecialAirS,
ftCa_MS_SpecialHi,
ftCa_MS_SpecialAirHi,
ftCa_MS_SpecialHiCatch,
ftCa_MS_SpecialHiThrow,
ftCa_MS_SpecialLw,
ftCa_MS_SpecialLwEnd,
ftCa_MS_SpecialAirLw,
ftCa_MS_SpecialAirLwEnd,
ftCa_MS_SpecialAirLwEndAir,
ftCa_MS_SpecialLwEndAir,
ftCa_MS_SpecialHiThrow1,
ftCa_MS_Count,
ftCa_MS_SelfCount = ftCa_MS_Count - ftCo_MS_Count,
} ftCaptain_MotionState;
typedef enum ftCa_Submotion {
ftCa_SM_SwordSwing4 = ftCo_SM_Count,
ftCa_SM_BatSwing4,
ftCa_SM_ParasolSwing4,
ftCa_SM_HarisenSwing4,
ftCa_SM_StarRodSwing4,
ftCa_SM_LipstickSwing4,
ftCa_SM_SpecialN,
ftCa_SM_SpecialAirN,
ftCa_SM_SpecialSStart,
ftCa_SM_SpecialS,
ftCa_SM_SpecialAirSStart,
ftCa_SM_SpecialAirS,
ftCa_SM_SpecialHi,
ftCa_SM_SpecialAirHi,
ftCa_SM_SpecialHiCatch,
ftCa_SM_SpecialHiThrow0,
ftCa_SM_SpecialLw,
ftCa_SM_SpecialLwEnd,
ftCa_SM_SpecialAirLw,
ftCa_SM_SpecialAirLwEnd,
ftCa_SM_SpecialLwEndAir,
ftCa_SM_SpecialAirLwEndAir,
ftCa_SM_SpecialHiThrow1,
ftCa_SM_Count,
ftCa_SM_SelfCount = ftCa_SM_Count - ftCo_SM_Count,
} ftCa_Submotion;
struct ftCaptain_FighterVars {
/* 0x222C */ u32 during_specials_start;
/* 0x2230 */ u32 during_specials;
u8 _[0xF8 - 8];
};
struct ftCaptain_DatAttrs {
/* +0 */ float specialn_stick_range_y_neg;
/* +4 */ float specialn_stick_range_y_pos;
/* +8 */ float specialn_angle_diff;
/* +C */ float specialn_vel_x;
/* +10 */ float specialn_vel_mul;
/* +14 */ float specials_gr_vel_x;
/* +18 */ float specials_grav;
/* +1C */ float specials_terminal_vel;
/* +20 */ float specials_unk0;
/* +24 */ float specials_unk1;
/* +28 */ float specials_unk2;
/* +2C */ float specials_unk3;
/* +30 */ float specials_unk4;
/* +34 */ float specials_unk5;
/* +38 */ float specials_miss_landing_lag;
/* +3C */ float specials_hit_landing_lag;
/* +40 */ float specialhi_air_friction_mul;
/* +44 */ float specialhi_horz_vel;
/* +48 */ float specialhi_freefall_air_spd_mul;
/* +4C */ float specialhi_landing_lag;
/* +50 */ float specialhi_unk0;
/* +54 */ float specialhi_unk1;
/* +58 */ float specialhi_input_var;
/* +5C */ float specialhi_unk2;
/* +60 */ float specialhi_catch_grav;
/* +64 */ s32 specialhi_air_var;
/* +68 */ float x68;
/* +6C */ u32 speciallw_unk1;
/* +70 */ float speciallw_flame_particle_angle;
/* +74 */ float speciallw_on_hit_spd_modifier;
/* +78 */ s32 speciallw_unk2;
/* +7C */ float speciallw_ground_lag_mul;
/* +80 */ float speciallw_landing_lag_mul;
/* +84 */ float speciallw_ground_traction;
/* +88 */ float speciallw_air_landing_traction;
};
union ftCaptain_MotionVars {
struct ftCaptainSpecialSVars {
/* fp+2340 */ float grav;
} specials;
struct ftCaptainSpecialHiVars {
/* fp+2340 */ u16 x0;
/* fp+2342:0 */ u8 x2_b0 : 1;
/* fp+2342:1 */ u8 x2_b1 : 1;
/* fp+2342:2 */ u8 x2_b2 : 1;
/* fp+2342:3 */ u8 x2_b3 : 1;
/* fp+2342:4 */ u8 x2_b4 : 1;
/* fp+2342:5 */ u8 x2_b5 : 1;
/* fp+2342:6 */ u8 x2_b6 : 1;
/* fp+2342:7 */ u8 x2_b7 : 1;
/* fp+2343 */ u8 x3;
/* fp+2344 */ Vec2 vel;
} specialhi;
struct ftCaptainSpecialLwVars {
/* fp+2340 */ u16 x0;
/* fp+2342 */ u16 x2;
/* fp+2344 */ float friction;
} speciallw;
};
#define MELEE_FT_CHARA_FTCOMMON_TYPES_H
#define MELEE_FT_CHARA_FTKIRBY_FORWARD_H
typedef struct HSD_GObj ftKb_GObj;
typedef struct Fighter ftKb_Fighter;
typedef struct ftKb_DatAttrs ftKb_DatAttrs;
/// @todo Clean up factorization
static MotionFlags const ftKb_MF_MultiJump =
Ft_MF_KeepGfx | Ft_MF_SkipHit | Ft_MF_SkipAnimVel | Ft_MF_Unk06;
static MotionFlags const ftKb_MF_AttackDash =
Ft_MF_KeepFastFall | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipItemVis |
Ft_MF_FreezeState;
static MotionFlags const ftKb_MF_AttackDashAir =
ftKb_MF_AttackDash | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_18_20_21 =
Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys | Ft_MF_FreezeState;
static MotionFlags const ftKb_MF_4_18_20_21 =
ftKb_MF_18_20_21 | Ft_MF_SkipModel;
static MotionFlags const ftKb_MF_2_4_18_20_21 =
ftKb_MF_4_18_20_21 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftKb_MF_5_18_20_21 =
ftKb_MF_18_20_21 | Ft_MF_SkipAnimVel;
static MotionFlags const ftKb_MF_SpecialN =
ftKb_MF_4_18_20_21 | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialS = ftKb_MF_4_18_20_21 | Ft_MF_KeepGfx;
static MotionFlags const ftKb_MF_SpecialHi =
ftKb_MF_4_18_20_21 | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftKb_MF_SpecialNMr =
ftKb_MF_4_18_20_21 | Ft_MF_KeepFastFall | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftKb_MF_SpecialNKp =
ftKb_MF_4_18_20_21 | Ft_MF_KeepFastFall | Ft_MF_SkipHit;
static MotionFlags const ftKb_MF_SpecialNPe =
ftKb_MF_2_4_18_20_21 | Ft_MF_KeepFastFall | Ft_MF_SkipHit;
static MotionFlags const ftKb_MF_SpecialNYs =
ftKb_MF_5_18_20_21 | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialNLg =
ftKb_MF_5_18_20_21 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftKb_MF_SpecialNZd =
ftKb_MF_5_18_20_21 | Ft_MF_KeepGfx | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftKb_MF_SpecialNDr =
ftKb_MF_5_18_20_21 | Ft_MF_SkipHit;
static MotionFlags const ftKb_MF_SpecialNGk =
ftKb_MF_SpecialNZd | Ft_MF_SkipHit;
static MotionFlags const ftKb_MF_SpecialNFx =
ftKb_MF_2_4_18_20_21 | Ft_MF_KeepGfx | Ft_MF_SkipThrowException;
static MotionFlags const ftKb_MF_SpecialNLk = ftKb_MF_4_18_20_21 |
Ft_MF_KeepGfx | Ft_MF_SkipHit |
Ft_MF_SkipThrowException;
static MotionFlags const ftKb_MF_SpecialNSk =
ftKb_MF_SpecialNLk | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialNNs =
ftKb_MF_2_4_18_20_21 | Ft_MF_SkipHit | Ft_MF_SkipThrowException;
static MotionFlags const ftKb_MF_SpecialNPp =
ftKb_MF_SpecialNNs | Ft_MF_KeepGfx;
static MotionFlags const ftKb_MF_SpecialNPk =
ftKb_MF_SpecialNPp | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialNSs =
ftKb_MF_5_18_20_21 | Ft_MF_SkipThrowException;
static MotionFlags const ftKb_MF_SpecialNSs_1 =
ftKb_MF_SpecialNSs | Ft_MF_KeepGfx;
static MotionFlags const ftKb_MF_SpecialNMt =
ftKb_MF_SpecialNSs_1 | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialNCl =
ftKb_MF_SpecialNMt | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftKb_MF_SpecialNFc =
ftKb_MF_SpecialNDr | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftKb_MF_SpecialNPc =
ftKb_MF_SpecialNSs_1 | Ft_MF_SkipHit;
static MotionFlags const ftKb_MF_SpecialNGw =
ftKb_MF_SpecialNPc | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialLw =
ftKb_MF_2_4_18_20_21 | Ft_MF_KeepSfx;
static MotionFlags const ftKb_MF_SpecialNCa =
ftKb_MF_SpecialLw | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftKb_MF_SpecialNDk =
ftKb_MF_4_18_20_21 | Ft_MF_SkipHit | Ft_MF_KeepSfx;
static MotionFlags const ftKb_MF_5_9_18_20_21 =
ftKb_MF_5_18_20_21 | Ft_MF_KeepSfx;
static MotionFlags const ftKb_MF_2_5_9_18_20_21 =
ftKb_MF_5_9_18_20_21 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftKb_MF_SpecialNPr =
ftKb_MF_5_9_18_20_21 | Ft_MF_KeepGfx;
static MotionFlags const ftKb_MF_SpecialNMs =
ftKb_MF_2_5_9_18_20_21 | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialNGn =
ftKb_MF_2_5_9_18_20_21 | Ft_MF_SkipHit;
static MotionFlags const ftKb_MF_SpecialNFeStart =
ftKb_MF_SpecialNMs | Ft_MF_SkipHit;
static MotionFlags const ftKb_MF_SpecialAirN =
ftKb_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirS =
ftKb_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirHi =
ftKb_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNMr =
ftKb_MF_SpecialNMr | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNKp =
ftKb_MF_SpecialNKp | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNPe =
ftKb_MF_SpecialNPe | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNYs =
ftKb_MF_SpecialNYs | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNLg =
ftKb_MF_SpecialNLg | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNZd =
ftKb_MF_SpecialNZd | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNDr =
ftKb_MF_SpecialNDr | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNGk =
ftKb_MF_SpecialNGk | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNFx =
ftKb_MF_SpecialNFx | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNLk =
ftKb_MF_SpecialNLk | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNSk =
ftKb_MF_SpecialNSk | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNNs =
ftKb_MF_SpecialNNs | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNPp =
ftKb_MF_SpecialNPp | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNPk =
ftKb_MF_SpecialNPk | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNSs =
ftKb_MF_SpecialNSs | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNMt =
ftKb_MF_SpecialNMt | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNCl =
ftKb_MF_SpecialNCl | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNFc =
ftKb_MF_SpecialNFc | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNPc =
ftKb_MF_SpecialNPc | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNGw =
ftKb_MF_SpecialNGw | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirLw =
ftKb_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNCa =
ftKb_MF_SpecialNCa | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNDk =
ftKb_MF_SpecialNDk | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNPr =
ftKb_MF_SpecialNPr | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNMs =
ftKb_MF_SpecialNMs | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNGn =
ftKb_MF_SpecialNGn | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialNFe =
ftKb_MF_SpecialNFeStart | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_0_4_18_20_21 =
ftKb_MF_4_18_20_21 | Ft_MF_KeepFastFall;
static MotionFlags const ftKb_MF_SpecialNCaptureTurn =
ftKb_MF_0_4_18_20_21 | Ft_MF_KeepAccessory;
static MotionFlags const ftKb_MF_SpecialAirNCaptureTurn =
ftKb_MF_SpecialNCaptureTurn | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialNCaptureWalk =
ftKb_MF_0_4_18_20_21 | Ft_MF_UpdateCmd;
static MotionFlags const ftKb_MF_SpecialNCaptureJumpSquat =
ftKb_MF_0_4_18_20_21 | Ft_MF_SkipNametagVis;
static MotionFlags const ftKb_MF_SpecialNLoop =
ftKb_MF_0_4_18_20_21 | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNKpLoop =
ftKb_MF_SpecialNKp | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNGkLoop =
ftKb_MF_SpecialNGk | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNFxLoop =
ftKb_MF_SpecialNFx | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNLkCharged =
ftKb_MF_SpecialNLk | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNSkLoop =
ftKb_MF_SpecialNSk | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNMtLoop =
ftKb_MF_SpecialNMt | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNClCharged =
ftKb_MF_SpecialNCl | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNFcLoop =
ftKb_MF_SpecialNFc | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialNPrLoop =
ftKb_MF_SpecialNPr | Ft_MF_Unk19;
static MotionFlags const ftKb_MF_SpecialAirNLoop =
ftKb_MF_SpecialNLoop | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNKpLoop =
ftKb_MF_SpecialNKpLoop | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNGkLoop =
ftKb_MF_SpecialNGkLoop | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNFxLoop =
ftKb_MF_SpecialNFxLoop | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNLkCharged =
ftKb_MF_SpecialNLkCharged | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNSkLoop =
ftKb_MF_SpecialNSkLoop | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNMtLoop =
ftKb_MF_SpecialNMtLoop | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNClCharged =
ftKb_MF_SpecialNClCharged | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNFcLoop =
ftKb_MF_SpecialNFcLoop | Ft_MF_SkipParasol;
static MotionFlags const ftKb_MF_SpecialAirNPrLoop =
ftKb_MF_SpecialNPrLoop | Ft_MF_SkipParasol;
typedef enum ftKirby_MotionState {
ftKb_MS_JumpAerialF1 = ftCo_MS_Count,
ftKb_MS_JumpAerialF2,
ftKb_MS_JumpAerialF3,
ftKb_MS_JumpAerialF4,
ftKb_MS_JumpAerialF5,
ftKb_MS_JumpAerialF1Met,
ftKb_MS_JumpAerialF2Met,
ftKb_MS_JumpAerialF3Met,
ftKb_MS_JumpAerialF4Met,
ftKb_MS_JumpAerialF5Met,
ftKb_MS_AttackDash,
ftKb_MS_AttackDashAir,
ftKb_MS_SpecialN,
ftKb_MS_SpecialNLoop,
ftKb_MS_SpecialNEnd,
ftKb_MS_SpecialNCapture0,
ftKb_MS_SpecialNCapture1,
ftKb_MS_Eat,
ftKb_MS_EatWait,
ftKb_MS_EatWalkSlow,
ftKb_MS_EatWalkMiddle,
ftKb_MS_EatWalkFast,
ftKb_MS_EatTurn,
ftKb_MS_EatJump1,
ftKb_MS_EatJump2,
ftKb_MS_EatLanding,
ftKb_MS_SpecialNDrink0,
ftKb_MS_SpecialNDrink1,
ftKb_MS_SpecialNSpit0,
ftKb_MS_SpecialNSpit1,
ftKb_MS_SpecialAirN,
ftKb_MS_SpecialAirNLoop,
ftKb_MS_SpecialAirNEnd,
ftKb_MS_SpecialAirNCapture0,
ftKb_MS_SpecialAirNCapture1,
ftKb_MS_EatAir,
ftKb_MS_EatFall,
ftKb_MS_SpecialAirNDrink0,
ftKb_MS_SpecialAirNDrink1,
ftKb_MS_SpecialAirNSpit0,
ftKb_MS_SpecialAirNSpit1,
ftKb_MS_EatTurnAir,
ftKb_MS_SpecialS,
ftKb_MS_SpecialAirS,
ftKb_MS_SpecialHi1,
ftKb_MS_SpecialHi2,
ftKb_MS_SpecialHi3,
ftKb_MS_SpecialHi4,
ftKb_MS_SpecialAirHi1,
ftKb_MS_SpecialAirHi2,
ftKb_MS_SpecialAirHi3,
ftKb_MS_SpecialAirHi4,
ftKb_MS_SpecialLw1,
ftKb_MS_SpecialLw,
ftKb_MS_SpecialLwEnd,
ftKb_MS_SpecialAirLwStart,
ftKb_MS_SpecialAirLw,
ftKb_MS_SpecialAirLwEnd,
ftKb_MS_MrSpecialN,
ftKb_MS_MrSpecialAirN,
ftKb_MS_LkSpecialNStart,
ftKb_MS_LkSpecialNLoop,
ftKb_MS_LkSpecialNEnd,
ftKb_MS_LkSpecialAirNStart,
ftKb_MS_LkSpecialAirNLoop,
ftKb_MS_LkSpecialAirNEnd,
ftKb_MS_SsSpecialNStart,
ftKb_MS_SsSpecialNHold,
ftKb_MS_SsSpecialNCancel,
ftKb_MS_SsSpecialN,
ftKb_MS_SsSpecialAirNStart,
ftKb_MS_SsSpecialAirN,
ftKb_MS_YsSpecialN1,
ftKb_MS_YsSpecialNCapture1_0,
ftKb_MS_YsSpecialNCapture1_1,
ftKb_MS_YsSpecialNCapture2_0,
ftKb_MS_YsSpecialNCapture2_1,
ftKb_MS_YsSpecialAirNCapture2,
ftKb_MS_YsSpecialAirNCapture1_0,
ftKb_MS_YsSpecialAirNCapture1_1,
ftKb_MS_YsSpecialAirN2_0,
ftKb_MS_YsSpecialAirN2_1,
ftKb_MS_FxSpecialNStart,
ftKb_MS_FxSpecialNLoop,
ftKb_MS_FxSpecialNEnd,
ftKb_MS_FxSpecialAirNStart,
ftKb_MS_FxSpecialAirNLoop,
ftKb_MS_FxSpecialAirNEnd,
ftKb_MS_PkSpecialN,
ftKb_MS_PkSpecialAirN,
ftKb_MS_LgSpecialN,
ftKb_MS_LgSpecialAirN,
ftKb_MS_CaSpecialN,
ftKb_MS_CaSpecialAirN,
ftKb_MS_NsSpecialNStart,
ftKb_MS_NsSpecialNHold0,
ftKb_MS_NsSpecialNHold1,
ftKb_MS_NsSpecialNEnd,
ftKb_MS_NsSpecialAirNStart,
ftKb_MS_NsSpecialAirNHold0,
ftKb_MS_NsSpecialAirNHold1,
ftKb_MS_NsSpecialAirNEnd,
ftKb_MS_KpSpecialNStart,
ftKb_MS_KpSpecialN,
ftKb_MS_KpSpecialNEnd,
ftKb_MS_KpSpecialAirNStart,
ftKb_MS_KpSpecialAirN,
ftKb_MS_KpSpecialAirNEnd,
ftKb_MS_PeSpecialLw,
ftKb_MS_PeSpecialLwHit,
ftKb_MS_PeSpecialAirLw,
ftKb_MS_PeSpecialAirLwHit,
ftKb_MS_PpSpecialN,
ftKb_MS_PpSpecialAirN,
ftKb_MS_DkSpecialNStart,
ftKb_MS_DkSpecialNLoop,
ftKb_MS_DkSpecialNCancel,
ftKb_MS_DkSpecialN,
ftKb_MS_DkSpecialNFull,
ftKb_MS_DkSpecialAirNStart,
ftKb_MS_DkSpecialAirNLoop,
ftKb_MS_DkSpecialAirNCancel,
ftKb_MS_DkSpecialAirN,
ftKb_MS_DkSpecialAirNFull,
ftKb_MS_ZdSpecialN,
ftKb_MS_ZdSpecialAirN,
ftKb_MS_SkSpecialNStart,
ftKb_MS_SkSpecialNLoop,
ftKb_MS_SkSpecialNCancel,
ftKb_MS_SkSpecialNEnd,
ftKb_MS_SkSpecialAirNStart,
ftKb_MS_SkSpecialAirNLoop,
ftKb_MS_SkSpecialAirNCancel,
ftKb_MS_SkSpecialAirNEnd,
ftKb_MS_PrSpecialNStartR,
ftKb_MS_PrSpecialNStartL,
ftKb_MS_PrSpecialNLoop,
ftKb_MS_PrSpecialNFull,
ftKb_MS_PrSpecialN1,
ftKb_MS_PrSpecialNTurn,
ftKb_MS_PrSpecialNEndR,
ftKb_MS_PrSpecialNEndL,
ftKb_MS_PrSpecialAirNStartR,
ftKb_MS_PrSpecialAirNStartL,
ftKb_MS_PrSpecialAirNLoop,
ftKb_MS_PrSpecialAirNFull,
ftKb_MS_PrSpecialAirN,
ftKb_MS_PrSpecialN0,
ftKb_MS_PrSpecialAirNEndR0,
ftKb_MS_PrSpecialAirNEndR1,
ftKb_MS_PrSpecialNHit,
ftKb_MS_MsSpecialNStart,
ftKb_MS_MsSpecialNLoop,
ftKb_MS_MsSpecialNEnd0,
ftKb_MS_MsSpecialNEnd1,
ftKb_MS_MsSpecialAirNStart,
ftKb_MS_MsSpecialAirNLoop,
ftKb_MS_MsSpecialAirNEnd0,
ftKb_MS_MsSpecialAirNEnd1,
ftKb_MS_MtSpecialNStart,
ftKb_MS_MtSpecialNLoop,
ftKb_MS_MtSpecialNLoopFull,
ftKb_MS_MtSpecialNCancel,
ftKb_MS_MtSpecialNEnd,
ftKb_MS_MtSpecialAirNStart,
ftKb_MS_MtSpecialAirNLoop,
ftKb_MS_MtSpecialAirNLoopFull,
ftKb_MS_MtSpecialAirNCancel,
ftKb_MS_MtSpecialAirNEnd,
ftKb_MS_GwSpecialN,
ftKb_MS_GwSpecialAirN,
ftKb_MS_DrSpecialN,
ftKb_MS_DrSpecialAirN,
ftKb_MS_ClSpecialNStart,
ftKb_MS_ClSpecialNLoop,
ftKb_MS_ClSpecialNEnd,
ftKb_MS_ClSpecialAirNStart,
ftKb_MS_ClSpecialAirNLoop,
ftKb_MS_ClSpecialAirNEnd,
ftKb_MS_FcSpecialNStart,
ftKb_MS_FcSpecialNLoop,
ftKb_MS_FcSpecialNEnd,
ftKb_MS_FcSpecialAirNStart,
ftKb_MS_FcSpecialAirNLoop,
ftKb_MS_FcSpecialAirNEnd,
ftKb_MS_PcSpecialN,
ftKb_MS_PcSpecialAirN,
ftKb_MS_GnSpecialN,
ftKb_MS_GnSpecialAirN,
ftKb_MS_FeSpecialNStart,
ftKb_MS_FeSpecialNLoop,
ftKb_MS_FeSpecialNEnd0,
ftKb_MS_FeSpecialNEnd1,
ftKb_MS_FeSpecialAirNStart,
ftKb_MS_FeSpecialAirNLoop,
ftKb_MS_FeSpecialAirNEnd0,
ftKb_MS_FeSpecialAirNEnd1,
ftKb_MS_GkSpecialNStart,
ftKb_MS_GkSpecialN,
ftKb_MS_GkSpecialNEnd,
ftKb_MS_GkSpecialAirNStart,
ftKb_MS_GkSpecialAirN,
ftKb_MS_GkSpecialAirNEnd,
ftKb_MS_Count,
ftKb_MS_SelfCount = ftKb_MS_Count - ftCo_MS_Count,
} ftKirby_MotionState;
typedef enum ftKb_Submotion {
ftKb_SM_JumpAerialF1 = ftCo_SM_Count,
ftKb_SM_JumpAerialF2,
ftKb_SM_JumpAerialF3,
ftKb_SM_JumpAerialF4,
ftKb_SM_JumpAerialF5,
ftKb_SM_JumpAerialF1Met,
ftKb_SM_JumpAerialF2Met,
ftKb_SM_JumpAerialF3Met,
ftKb_SM_JumpAerialF4Met,
ftKb_SM_JumpAerialF5Met,
ftKb_SM_SpecialN,
ftKb_SM_SpecialNLoop,
ftKb_SM_SpecialNEnd,
ftKb_SM_SpecialNCapture,
ftKb_SM_Eat,
ftKb_SM_EatWait,
ftKb_SM_EatWalkSlow,
ftKb_SM_EatWalkMiddle,
ftKb_SM_EatWalkFast,
ftKb_SM_EatJump1,
ftKb_SM_EatJump2,
ftKb_SM_EatLanding,
ftKb_SM_EatTurn,
ftKb_SM_SpecialNDrink,
ftKb_SM_SpecialNSpit,
ftKb_SM_SpecialAirN,
ftKb_SM_SpecialAirNLoop,
ftKb_SM_SpecialS,
ftKb_SM_SpecialAirS,
ftKb_SM_SpecialHi1,
ftKb_SM_SpecialHi2,
ftKb_SM_SpecialHi3,
ftKb_SM_SpecialHi4,
ftKb_SM_SpecialAirHi1,
ftKb_SM_SpecialAirHi2,
ftKb_SM_SpecialAirHi3,
ftKb_SM_SpecialAirHiEnd,
ftKb_SM_SpecialLw1,
ftKb_SM_SpecialLw,
ftKb_SM_SpecialLwEnd,
ftKb_SM_SpecialAirLwStart,
ftKb_SM_SpecialAirLw,
ftKb_SM_SpecialAirLwEnd,
ftKb_SM_MrSpecialN,
ftKb_SM_MrSpecialAirN,
ftKb_SM_LkSpecialNStart,
ftKb_SM_LkSpecialNLoop,
ftKb_SM_LkSpecialNEnd,
ftKb_SM_LkSpecialAirNStart,
ftKb_SM_LkSpecialAirNLoop,
ftKb_SM_LkSpecialAirNEnd,
ftKb_SM_SsSpecialNStart,
ftKb_SM_SsSpecialNHold,
ftKb_SM_SsSpecialNCancel,
ftKb_SM_SsSpecialN,
ftKb_SM_SsSpecialAirNStart,
ftKb_SM_SsSpecialAirN,
ftKb_SM_YsSpecialN1,
ftKb_SM_YsSpecialNCapture1,
ftKb_SM_YsSpecialNCapture2,
ftKb_SM_YsSpecialAirNCapture2,
ftKb_SM_YsSpecialAirCapture1,
ftKb_SM_YsSpecialAirN2,
ftKb_SM_FxSpecialNStart,
ftKb_SM_FxSpecialNLoop,
ftKb_SM_FxSpecialNEnd,
ftKb_SM_FxSpecialAirNStart,
ftKb_SM_FxSpecialAirNLoop,
ftKb_SM_FxSpecialAirNEnd,
ftKb_SM_PkSpecialN,
ftKb_SM_PkSpecialAirN,
ftKb_SM_LgSpecialN,
ftKb_SM_LgSpecialAirN,
ftKb_SM_CaSpecialN,
ftKb_SM_CaSpecialAirN,
ftKb_SM_NsSpecialNStart,
ftKb_SM_NsSpecialNHold0,
ftKb_SM_NsSpecialNHold1,
ftKb_SM_NsSpecialNEnd,
ftKb_SM_NsSpecialAirNStart,
ftKb_SM_NsSpecialAirNHold0,
ftKb_SM_NsSpecialAirNHold1,
ftKb_SM_NsSpecialAirNEnd,
ftKb_SM_KpSpecialNStart,
ftKb_SM_KpSpecialN,
ftKb_SM_KpSpecialNEnd,
ftKb_SM_KpSpecialAirNStart,
ftKb_SM_KpSpecialAirN,
ftKb_SM_KpSpecialAirNEnd,
ftKb_SM_PeSpecialLw,
ftKb_SM_PeSpecialLwHit,
ftKb_SM_PeSpecialAirLw,
ftKb_SM_PeSpecialAirLwHit,
ftKb_SM_PpSpecialN,
ftKb_SM_PpSpecialAirN,
ftKb_SM_DkSpecialNStart,
ftKb_SM_DkSpecialNLoop,
ftKb_SM_DkSpecialNCancel,
ftKb_SM_DkSpecialN,
ftKb_SM_DkSpecialNFull,
ftKb_SM_DkSpecialAirNStart,
ftKb_SM_DkSpecialAirNLoop,
ftKb_SM_DkSpecialAirNCancel,
ftKb_SM_DkSpecialAirN,
ftKb_SM_DkSpecialAirNFull,
ftKb_SM_ZdSpecialN,
ftKb_SM_ZdSpecialAirN,
ftKb_SM_SkSpecialNStart,
ftKb_SM_SkSpecialNLoop,
ftKb_SM_SkSpecialNCancel,
ftKb_SM_SkSpecialNEnd,
ftKb_SM_SkSpecialAirNStart,
ftKb_SM_SkSpecialAirNLoop,
ftKb_SM_SkSpecialAirNCancel,
ftKb_SM_SkSpecialAirNEnd,
ftKb_SM_PrSpecialNStartR,
ftKb_SM_PrSpecialNStartL,
ftKb_SM_PrSpecialNLoop,
ftKb_SM_PrSpecialNFull,
ftKb_SM_PrSpecialN1,
ftKb_SM_PrSpecialNTurn,
ftKb_SM_PrSpecialNEndR,
ftKb_SM_PrSpecialNEndL,
ftKb_SM_PrSpecialAirNStartR,
ftKb_SM_PrSpecialAirNStartL,
ftKb_SM_PrSpecialAirNLoop,
ftKb_SM_PrSpecialAirNFull,
ftKb_SM_PrSpecialAirN,
ftKb_SM_PrSpecialN0,
ftKb_SM_PrSpecialAirNEndR0,
ftKb_SM_PrSpecialAirNEndR1,
ftKb_SM_PrSpecialNHit,
ftKb_SM_MsSpecialNStart,
ftKb_SM_MsSpecialNLoop,
ftKb_SM_MsSpecialNEnd0,
ftKb_SM_MsSpecialNEnd1,
ftKb_SM_MsSpecialAirNStart,
ftKb_SM_MsSpecialAirNLoop,
ftKb_SM_MsSpecialAirNEnd0,
ftKb_SM_MsSpecialAirNEnd1,
ftKb_SM_MtSpecialNStart,
ftKb_SM_MtSpecialNLoop,
ftKb_SM_MtSpecialNLoopFull,
ftKb_SM_MtSpecialNCancel,
ftKb_SM_MtSpecialNEnd,
ftKb_SM_MtSpecialAirNStart,
ftKb_SM_MtSpecialAirNLoop,
ftKb_SM_MtSpecialAirNLoopFull,
ftKb_SM_MtSpecialAirNCancel,
ftKb_SM_MtSpecialAirNEnd,
ftKb_SM_GwSpecialN,
ftKb_SM_GwSpecialAirN,
ftKb_SM_DrSpecialN,
ftKb_SM_DrSpecialAirN,
ftKb_SM_ClSpecialNStart,
ftKb_SM_ClSpecialNLoop,
ftKb_SM_ClSpecialNEnd,
ftKb_SM_ClSpecialAirNStart,
ftKb_SM_ClSpecialAirNLoop,
ftKb_SM_ClSpecialAirNEnd,
ftKb_SM_FcSpecialNStart,
ftKb_SM_FcSpecialNLoop,
ftKb_SM_FcSpecialNEnd,
ftKb_SM_FcSpecialAirNStart,
ftKb_SM_FcSpecialAirNLoop,
ftKb_SM_FcSpecialAirNEnd,
ftKb_SM_PcSpecialN,
ftKb_SM_PcSpecialAirN,
ftKb_SM_GnSpecialN,
ftKb_SM_GnSpecialAirN,
ftKb_SM_FeSpecialNStart,
ftKb_SM_FeSpecialNLoop,
ftKb_SM_FeSpecialNEnd0,
ftKb_SM_FeSpecialNEnd1,
ftKb_SM_FeSpecialAirNStart,
ftKb_SM_FeSpecialAirNLoop,
ftKb_SM_FeSpecialAirNEnd0,
ftKb_SM_FeSpecialAirNEnd1,
ftKb_SM_GkSpecialNStart,
ftKb_SM_GkSpecialN,
ftKb_SM_GkSpecialNEnd,
ftKb_SM_GkSpecialAirNStart,
ftKb_SM_GkSpecialAirN,
ftKb_SM_GkSpecialAirNEnd,
ftKb_SM_Count,
ftKb_SM_SelfCount = ftKb_SM_Count - ftCo_SM_Count,
} ftKb_Submotion;
struct ftCollisionBox {
/* +0 */ float top;
/* +4 */ float bottom;
/* +8 */ Vec2 left;
/* +10 */ Vec2 right;
};
struct UNK_SAMUS_S2 {
Fighter_Part parts[3];
Vec3 vec1;
Vec3 vec2;
float scale;
};
union ftCommon_MotionVars {
struct {
/* fp+2340 */ float x0;
/* fp+2344 */ FtMotionId msid;
/* fp+2348 */ float slow_anim_frame;
/* fp+234C */ float middle_anim_frame;
/* fp+2350 */ float fast_anim_frame;
/* fp+2354 */ float slow_anim_rate;
/* fp+2358 */ float middle_anim_rate;
/* fp+235C */ float fast_anim_rate;
/* fp+2360 */ float accel_mul;
} walk;
struct {
/* fp+2340 */ bool x0;
} attack1;
struct {
/* fp+2340 */ int x0;
} attackdash;
struct {
/* fp+2340 */ bool x0;
} attacklw3;
struct {
/* fp+2340 */ float x0;
/* fp+2344 */ int x4;
/* fp+2348 */ int x8;
/* fp+234C */ M2C_UNK xC;
/* fp+2350 */ M2C_UNK x10;
/* fp+2354 */ float x14;
/* fp+2358 */ u8 x18;
/* fp+2359 */ u8 x19;
/* fp+235A */ u8 x1A;
/* fp+235B */ u8 x1B;
} damage;
struct {
/* fp+2340 */ s8 x0;
/* fp+2341 */ s8 x1;
/* fp+2342 */ s8 x2;
/* fp+2343 */ s8 x3;
/* fp+2344 */ float x4;
/* fp+2348 */ ftCollisionBox x8;
} damageice;
struct {
/* fp+2340 */ float x0;
} damageicejump;
struct {
/* fp+2340 */ float x0;
/* fp+2344 */ float x4;
/* fp+2348 */ float x8;
/* fp+234C */ bool xC;
/* fp+2350 */ float x10;
/* fp+2354 */ float x14;
/* fp+2358 */ float x18;
/* fp+235C */ int x1C;
/* fp+2360 */ int x20;
/* fp+2364 */ int x24;
/* fp+2368 */ M2C_UNK x28;
/* fp+236C */ float x2C;
} guard;
struct {
/* fp+2340 */ bool x0; // itemget action is heavy type?
} itemget;
struct {
/* fp+2340 */ float facing_dir;
/* fp+2344 */ float x4;
/* fp+2348 */ int x8;
/* fp+234C */ int xC;
/* fp+2350 */ float x10;
/* fp+2354 */ int x14;
/* fp+2358 */ M2C_UNK x18;
/* fp+235C */ M2C_UNK x1C;
/* fp+2360 */ int x20;
} itemthrow;
struct {
/* fp+2340 */ int unk_timer;
/* fp+2344 */ float anim_spd;
/* fp+2348 */ Vec3 x8;
} itemthrow4;
struct {
/* fp+2340 */ int x0;
/* fp+2344 */ float x4;
/* fp+2348 */ float x8;
/* fp+234C */ int xC;
/* fp+2350 */ bool x10;
/* fp+2354 */ float x14;
/* fp+2358 */ bool allow_interrupt;
} fallspecial;
struct {
/* fp+2340 */ bool x0;
/* fp+2344 */ float x4;
/* fp+2348 */ bool x8;
} lift;
struct {
/* fp+2340 */ float x0;
} downwait;
struct {
/* fp+2340 */ bool x0;
/* fp+2344 */ bool x4;
} escape;
struct {
/* fp+2340 */ int timer;
/* fp+2344 */ Vec3 self_vel;
} escapeair;
struct {
/* fp+2340 */ float x0;
/* fp+2344 */ float anim_start;
} rebound;
struct {
/* fp+2340 */ bool x0;
/* fp+2344 */ float x4;
} pass;
struct {
/**
* Used to check against opponent's #Fighter::213C while they're
* occupying a ledge within grab range
*/
/* fp+2340 */ int ledge_id;
/* fp+2344 */ float x4;
/* fp+2348 */ bool x8;
} cliff;
struct {
/* fp+2340 */ bool x0;
} cliffjump;
struct {
/* fp+2340 */ bool x0;
} cargoturn;
struct {
/* fp+2340 */ int x0;
/* fp+2344 */ int x4;
/* fp+2348 */ float x8;
} cargokneebend;
struct {
/* fp+2340 */ float x0;
/* fp+2344 */ int x4;
} shouldered;
struct {
/* fp+2340 */ float x0;
} downdamage;
struct {
/* fp+2340 */ ftCo_GObj* x0;
/* fp+2344 */ bool x4;
/* fp+2348 */ float x8;
/* fp+234C */ float xC;
/* fp+2350 */ float x10;
/* fp+2354 */ float x14;
/* fp+2358 */ Vec3 x18;
/* fp+2364 */ Vec3 scale;
} yoshiegg;
struct {
/* fp+2340 */ bool x0;
/* fp+2344 */ M2C_UNK x4;
/* fp+2348 */ float x8;
/* fp+234C */ float xC;
/* fp+2350 */ float x10;
} capturekoopa;
struct {
/* fp+2340 */ Vec2 pos_offset;
/* fp+2348 */ Vec2 x8;
/* fp+2350 */ Vec2 x10;
/* fp+2358 */ bool x18;
/* fp+235C */ M2C_UNK x1C;
/* fp+2360 */ M2C_UNK x20;
/* fp+2364 */ M2C_UNK x24;
/* fp+2368 */ M2C_UNK x28;
/* fp+236C */ Vec3 scale;
} capturekirby;
struct {
/* fp+2340 */ ftKb_GObj* thrower_gobj;
/* fp+2344 */ float x4;
/* fp+2348 */ float x8;
/* fp+234C */ float xC;
/* fp+2350 */ float x10;
/* fp+2354 */ bool x14;
union {
u8 x18;
struct {
/* fp+2358:0 */ u8 x18_b0 : 1;
/* fp+2358:1 */ u8 x18_b1 : 1;
/* fp+2358:2 */ u8 x18_b2 : 1;
/* fp+2358:3 */ u8 x18_b3 : 1;
/* fp+2358:4 */ u8 x18_b4 : 1;
/* fp+2358:5 */ u8 x18_b5 : 1;
/* fp+2358:6 */ u8 x18_b6 : 1;
/* fp+2358:7 */ u8 x18_b7 : 1;
};
};
/* fp+235C */ Vec3 scale;
/* fp+2368 */ ftCollisionBox coll_box;
} thrownkirby;
struct {
/* fp+2340 */ int x0;
/* fp+2344 */ ftCollisionBox coll_box;
/* fp+235C */ float x1C;
/* fp+2360 */ enum_t x20;
/* fp+2364 */ Vec3 translate;
} bury;
struct {
/* fp+2340 */ float x0;
} buryjump;
struct {
/* fp+2340 */ int timer;
/* fp+2344 */ int x4;
/* fp+2348 */ bool x8;
/* fp+234C */ int vel_y_exponent;
} passivewall;
struct {
/* fp+2340 */ int x0;
/* fp+2344 */ float x4;
} aircatchhit;
struct {
/* fp+2340 */ float x0;
} aircatch;
struct {
/* fp+2340 */ Vec3 cur_pos;
/* fp+234C */ Vec3 self_vel;
/* fp+2358 */ float facing_dir;
/* fp+235C */ int x1C;
/* fp+2360 */ ftCollisionBox ecb;
} warpstar;
struct {
/* fp+2340 */ int x0;
/* fp+2344 */ int x4;
/* fp+2344 */ float x8;
} jumpb;
struct {
/* fp+2340 */ int x0;
/* fp+2344 */ int x4;
/* fp+2348 */ float x8;
} hammerkneebend;
struct {
/* fp+2340 */ M2C_UNK x0;
/* fp+2344 */ float x4;
} hammerlanding;
struct {
/* fp+2340 */ Item_GObj* x0;
} captureleadead;
struct {
/* fp+2340 */ bool timer;
} entry;
struct {
/* fp+2340 */ Item_GObj* x0;
} capturelikelike;
};
#define MELEE_FT_CHARA_FTDONKEY_TYPES_H
struct ftDonkey_FighterVars {
/* 0x222C */ s32 x222C;
/* 0x2230 */ s32 x2230;
};
union ftDonkey_MotionVars {
struct ftDonkey_SpecialNVars {
s32 x0;
s32 x4;
s32 x8;
s32 xC;
s32 x10;
s32 x14;
} specialn;
struct ftDonkey_SpecialLwVars {
s32 x0;
} speciallw;
/// @todo Rename to correct state.
struct ftDonkey_State5Vars {
bool x0;
s32 x4;
float x8;
} unk5;
/// @todo Rename to correct state.
struct ftDonkey_State7Vars {
s32 x0;
s32 x4;
float x8;
} unk7;
/// @todo Rename to correct state.
struct ftDonkey_State8Vars {
s32 x0;
float x4;
} unk8;
};
typedef struct _ftDonkeyAttributes {
s32 motion_state;
s32 x4_motion_state;
//// used by ftDk_HeavyWalk.c (maybe Cargo Hold) ////
float x8;
float xC;
float x10;
float x14;
float x18;
float x1C;
/////////////////////////////////////////////////
struct {
float x20_TURN_SPEED;
float x24_JUMP_STARTUP_LAG;
float x28_LANDING_LAG;
} cargo_hold;
//// Giant Punch
struct {
s32 x2C_MAX_ARM_SWINGS;
s32 x30_DAMAGE_PER_SWING;
float x34_PUNCH_HORIZONTAL_VEL;
float x38_LANDING_LAG;
} SpecialN;
//// Headbutt
struct {
float x3C_MIN_STICK_X_MOMENTUM;
float x40_MOMENTUM_TRANSITION_MODIFIER;
float x44_AERIAL_GRAVITY;
} SpecialS;
float x48_UNKNOWN;
//// Spinning Kong
struct {
float x4C_AERIAL_VERTICAL_VELOCITY;
float x50_AERIAL_GRAVITY;
float x54_GROUNDED_HORIZONTAL_VELOCITY;
float x58_AERIAL_HORIZONTAL_VELOCITY;
float x5C_GROUNDED_MOBILITY;
float x60_AERIAL_MOBILITY;
float x64_LANDING_LAG;
} SpecialHi;
/// Hand Slap
struct {
float x68;
float x6C;
float x70;
} SpecialLw;
} ftDonkeyAttributes;
#define MELEE_FT_CHARA_FTFOX_TYPES_H
#define MELEE_FT_CHARA_FTFOX_FORWARD_H
typedef struct ftFox_DatAttrs ftFox_DatAttrs;
static MotionFlags const ftFx_MF_Appeal =
Ft_MF_KeepGfx | Ft_MF_SkipModel | Ft_MF_SkipAnimVel | Ft_MF_Unk06;
static MotionFlags const ftFx_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftFx_MF_SpecialN =
ftFx_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftFx_MF_SpecialS =
ftFx_MF_Special | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftFx_MF_SpecialHi =
ftFx_MF_SpecialS | Ft_MF_KeepFastFall;
static MotionFlags const ftFx_MF_SpecialAirN =
ftFx_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftFx_MF_SpecialAirS =
ftFx_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftFx_MF_SpecialAirHiHold =
ftFx_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftFx_MF_SpecialLw =
ftFx_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipColAnim;
static MotionFlags const ftFx_MF_SpecialAirLw =
ftFx_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftFx_MF_SpecialNLoop = ftFx_MF_SpecialN | Ft_MF_Unk19;
static MotionFlags const ftFx_MF_SpecialAirNLoop =
ftFx_MF_SpecialNLoop | Ft_MF_SkipParasol;
static MotionFlags const ftFx_MF_SpecialLwLoop =
ftFx_MF_SpecialLw | Ft_MF_Unk19;
static MotionFlags const ftFx_MF_SpecialAirLwLoop =
ftFx_MF_SpecialLwLoop | Ft_MF_SkipParasol;
typedef enum ftFox_MotionState {
ftFx_MS_SpecialNStart = ftCo_MS_Count,
ftFx_MS_SpecialNLoop,
ftFx_MS_SpecialNEnd,
ftFx_MS_SpecialAirNStart,
ftFx_MS_SpecialAirNLoop,
ftFx_MS_SpecialAirNEnd,
ftFx_MS_SpecialSStart,
ftFx_MS_SpecialS,
ftFx_MS_SpecialSEnd,
ftFx_MS_SpecialAirSStart,
ftFx_MS_SpecialAirS,
ftFx_MS_SpecialAirSEnd,
ftFx_MS_SpecialHiHold,
ftFx_MS_SpecialHiHoldAir,
ftFx_MS_SpecialHi,
ftFx_MS_SpecialAirHi,
ftFx_MS_SpecialHiLanding,
ftFx_MS_SpecialHiFall,
ftFx_MS_SpecialHiBound,
ftFx_MS_SpecialLwStart,
ftFx_MS_SpecialLwLoop,
ftFx_MS_SpecialLwHit,
ftFx_MS_SpecialLwEnd,
ftFx_MS_SpecialLwTurn,
ftFx_MS_SpecialAirLwStart,
ftFx_MS_SpecialAirLwLoop,
ftFx_MS_SpecialAirLwHit,
ftFx_MS_SpecialAirLwEnd,
ftFx_MS_SpecialAirLwTurn,
ftFx_MS_AppealSStartR,
ftFx_MS_AppealSStartL,
ftFx_MS_AppealSR,
ftFx_MS_AppealSL,
ftFx_MS_AppealSEndR,
ftFx_MS_AppealSEndL,
ftFx_MS_Count,
ftFx_MS_SelfCount = ftFx_MS_Count - ftCo_MS_Count,
} ftFox_MotionState;
typedef enum ftFx_Submotion {
ftFx_SM_SpecialNStart = ftCo_SM_Count,
ftFx_SM_SpecialNLoop,
ftFx_SM_SpecialNEnd,
ftFx_SM_SpecialAirNStart,
ftFx_SM_SpecialAirNLoop,
ftFx_SM_SpecialAirNEnd,
ftFx_SM_SpecialSStart,
ftFx_SM_SpecialS,
ftFx_SM_SpecialSEnd,
ftFx_SM_SpecialAirSStart,
ftFx_SM_SpecialAirS,
ftFx_SM_SpecialAirSEnd,
ftFx_SM_SpecialHiHold,
ftFx_SM_SpecialHiHoldAir,
ftFx_SM_SpecialHi,
ftFx_SM_SpecialHiLanding,
ftFx_SM_SpecialHiFall,
ftFx_SM_SpecialHiBound,
ftFx_SM_SpecialLwStart,
ftFx_SM_SpecialLwLoop,
ftFx_SM_SpecialLwHit,
ftFx_SM_SpecialLwEnd,
ftFx_SM_SpecialAirLwStart,
ftFx_SM_SpecialAirLwLoop,
ftFx_SM_SpecialAirLwHit,
ftFx_SM_SpecialAirLwEnd,
ftFx_SM_AppealSStartR,
ftFx_SM_AppealSStartL,
ftFx_SM_AppealSR,
ftFx_SM_AppealSL,
ftFx_SM_AppealSEndR,
ftFx_SM_AppealSEndL,
ftFx_SM_Count,
ftFx_SM_SelfCount = ftFx_SM_Count - ftCo_SM_Count,
} ftFx_Submotion;
typedef enum ftFx_SpecialNIndex {
// msid = currASID - ftFx_MS_SpecialNStart;
ftFx_SpecialNIndex_Start,
ftFx_SpecialNIndex_Loop,
ftFx_SpecialNIndex_End,
ftFx_SpecialNIndex_AirStart,
ftFx_SpecialNIndex_AirLoop,
ftFx_SpecialNIndex_AirEnd,
// msid = currASID - ftCo_MS_CatchDash;
ftFx_SpecialNIndex_ThrowB,
ftFx_SpecialNIndex_ThrowHi,
ftFx_SpecialNIndex_ThrowLw,
// ftFx_SpecialNIndex_None,
} ftFx_SpecialNIndex;
#define MELEE_LB_TYPES_H
#define MELEE_LB_FORWARD_H
typedef struct AbsorbDesc AbsorbDesc;
typedef struct CollData CollData;
typedef struct DynamicsDesc DynamicsDesc;
typedef struct HitCapsule HitCapsule;
typedef struct HitResult HitResult;
typedef struct HitVictim HitVictim;
typedef struct HSD_AllocEntry HSD_AllocEntry;
typedef struct HurtCapsule HurtCapsule;
typedef struct lbRefract_CallbackData lbRefract_CallbackData;
typedef struct PreloadCache PreloadCache;
typedef struct PreloadCacheScene PreloadCacheScene;
typedef struct PreloadCacheSceneEntry PreloadCacheSceneEntry;
typedef struct PreloadEntry PreloadEntry;
typedef struct ReflectDesc ReflectDesc;
typedef struct ShieldDesc ShieldDesc;
typedef enum HurtCapsuleState {
HurtCapsule_Enabled,
HurtCapsule_Disabled,
Intangible
} HurtCapsuleState;
typedef enum HitElement {
HitElement_Normal,
HitElement_Fire,
HitElement_Electric,
HitElement_Slash,
HitElement_Coin,
HitElement_Ice,
/// Sleep for 103 frames
HitElement_Nap,
/// Sleep for 412 frames
HitElement_Sleep,
HitElement_Catch,
HitElement_Ground,
HitElement_Cape,
HitElement_Inert,
HitElement_Disable,
HitElement_Dark,
/// Screw Attack
HitElement_Scball,
HitElement_Lipstick,
/// Formerly presumed empty, this hitbox element is used by
/// ReDead grab attacks
HitElement_Leadead,
} HitElement;
typedef enum HitCapsuleState {
HitCapsule_Disabled,
HitCapsule_Enabled,
HitCapsule_Unk2,
HitCapsule_Unk3,
HitCapsule_Max = HitCapsule_Unk3,
} HitCapsuleState;
struct { int x[1 - 2 * !(HitCapsule_Max == 3)]; };;
typedef void (*RefractCallbackTypeA)(struct lbRefract_CallbackData*, s32, u32,
s8, s8);
typedef void (*RefractCallbackTypeB)(struct lbRefract_CallbackData*, s32, u32,
s8, s8, s8, s8);
typedef void (*RefractCallbackTypeC)(struct lbRefract_CallbackData*, s32, u32,
s32*, s32*, s32*, s32*);
struct DynamicsData {
/* +0 */ HSD_JObj* jobj;
/* +4 */ u8 _4[0x90 - 0x4];
/* +90 */ struct DynamicsData* next;
};
struct DynamicsDesc {
/* +0 */ struct DynamicsData* data;
/* +4 */ int count;
/* +8 */ Vec3 pos;
};
struct BoneDynamicsDesc {
enum_t bone_id;
DynamicsDesc dyn_desc;
};
struct HitResult {
HSD_JObj* bone;
/// Follows attach bone position if toggled OFF
u8 skip_update_pos : 1;
Vec3 pos;
Vec3 offset;
float size;
};
struct HitVictim {
M2C_UNK victim;
uint x4;
};
struct HitCapsule {
/* +0 */ HitCapsuleState state;
/* +4 */ uint x4;
/* +8 */ u32 unk_count;
/* +C */ float damage;
/* +10 */ Vec3 b_offset;
/* +1C */ float scale;
/* +20 */ int kb_angle;
/* +24 */ u32 x24;
/* +28 */ u32 x28;
/* +2C */ u32 x2C;
/* +30 */ uint element;
/* +34 */ int x34;
/* +38 */ int sfx_severity;
/* +3C */ enum_t sfx_kind;
/* +40 */ u8 x40_b0 : 1;
/* +40 */ u8 x40_b1 : 1;
/* +40 */ u8 x40_b2 : 1;
/* +40 */ u8 x40_b3 : 1;
/* +40 */ u8 x40_b4 : 1;
/* +40 */ u8 x40_b5 : 1;
/* +40 */ u8 x40_b6 : 1;
/* +40 */ u8 x40_b7 : 1;
/* +41:0 */ u8 x41_b0 : 1;
/* +41:1 */ u8 x41_b1 : 1;
/* +41:2 */ u8 x41_b2 : 1;
/* +41:3 */ u8 x41_b3 : 1;
/* +41:4 */ u8 x41_b4 : 1;
/* +41:5 */ u8 x41_b5 : 1;
/* +41:6 */ u8 x41_b6 : 1;
/* +41:7 */ u8 x41_b7 : 1;
/* +42:0 */ u8 x42_b0 : 1;
/* +42:1 */ u8 x42_b1 : 1;
/* +42:2 */ u8 x42_b2 : 1;
/* +42:3 */ u8 x42_b3 : 1;
/* +42:4 */ u8 x42_b4 : 1;
/* +42:5 */ u8 x42_b5 : 1;
/* +42:6 */ u8 x42_b6 : 1;
/* +42:7 */ u8 x42_b7 : 1;
/* +43 */ union {
/* +43 */ u8 x43;
struct {
/* +43:0 */ u8 x43_b0 : 1;
/* +43:1 */ u8 x43_b1 : 1;
/* +43:2 */ u8 x43_b2 : 1;
/* +43:3 */ u8 x43_b3 : 1;
/* +43:4 */ u8 x43_b4 : 1;
/* +43:5 */ u8 x43_b5 : 1;
/* +43:6 */ u8 x43_b6 : 1;
/* +43:7 */ u8 x43_b7 : 1;
};
};
/* +44 */ u8 x44;
/* +45 */ u8 x45;
/* +46 */ u8 x46[0x48 - 0x46];
/* +48 */ HSD_JObj* jobj;
/* +4C */ Vec3 x4C;
/* +58 */ Vec3 x58;
/* +64 */ Vec3 hurt_coll_pos;
/* +70 */ float coll_distance;
/* +74 */ HitVictim victims_1[12];
/* +D4 */ HitVictim victims_2[12];
/* +134 */ union {
HSD_GObj* owner;
u8 hit_grabbed_victim_only : 1;
};
};
struct { int x[1 - 2 * !(sizeof(HitCapsule) == 0x138)]; };;
struct HurtCapsule {
HurtCapsuleState state;
Vec3 a_offset;
Vec3 b_offset;
float scale;
HSD_JObj* bone; // 0x20
u8 skip_update_pos : 1;
u8 x24_b1 : 1; // 0x24 0x40
u8 x24_b2 : 1; // 0x24 0x20
u8 x24_b3 : 1; // 0x24 0x10
u8 x24_b4 : 1; // 0x24 0x08
u8 x24_b5 : 1; // 0x24 0x04
u8 x24_b6 : 1; // 0x24 0x02
u8 x24_b7 : 1; // 0x24 0x01
Vec3 a_pos;
Vec3 b_pos;
int bone_idx; // 0x40
enum_t kind; // 0x44. 0 = low, 1 = mid, 2 = high
bool is_grabbable; // 0x48
};
struct { int x[1 - 2 * !(sizeof(HurtCapsule) == 0x4C)]; };;
struct ReflectDesc {
u32 x0_bone_id;
s32 x4_max_damage;
Vec3 x8_offset;
float x14_size;
float x18_damage_mul;
float x1C_speed_mul;
/// @remarks Setting this to 1 causes the reflector to skip ownership
/// change
u8 x20_behavior;
};
struct AbsorbDesc {
/* +0 */ int x0_bone_id;
/* +4 */ Vec3 x4_offset;
/* +10 */ float x10_size;
};
struct ShieldDesc {
int bone;
Vec3 pos;
float radius;
float dmg_mul;
float vel_mul;
u8 flags : 8;
};
struct lbRefract_CallbackData {
s32 unk0; // x00
s32 unk1; // x04
s32 unk2; // x08
s32 unk3; // x08
s32 unk4; // x10
s32 unk5; // x14
void* callback0; // x1C
void* callback1; // x20
};
typedef struct _ECBFlagStruct {
union {
struct {
u8 b0 : 1;
u8 b1234 : 4;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
u8 raw;
};
} ECBFlagStruct;
typedef struct SurfaceData {
int index;
u32 unk;
Vec3 normal;
} SurfaceData;
typedef struct _ftECB {
Vec2 top;
Vec2 bottom;
Vec2 right;
Vec2 left;
} ftECB;
struct CollData {
/* fp+6F0 */ HSD_GObj* x0_gobj;
/* fp+6F4 */ Vec3 cur_topn;
/* fp+700 */ Vec3 cur_topn_correct;
/* fp+70C */ Vec3 prev_topn;
/* fp+718 */ Vec3 x28_vec;
/* fp+724 */ ECBFlagStruct x34_flags;
/* fp+725 */ ECBFlagStruct x35_flags;
/* fp+726 */ s16 x36;
/* fp+728 */ s32 x38;
/* fp+72C */ s32 x3C;
/* fp+730 */ int ledge_id_unk0;
/* fp+734 */ int ledge_id_unk1;
/* fp+738 */ u32 x48;
/* fp+73C */ u32 x4C;
/* fp+740 */ float x50;
/* fp+744 */ float x54;
/* fp+748 */ float x58;
/* fp+74C */ float x5C;
/* fp+750 */ s32 x60;
/* fp+754 */ ftECB x64_ecb;
/* fp+774 */ ftECB x84_ecb;
/* fp+794 */ ftECB xA4_ecbCurrCorrect;
/* fp+7B4 */ ftECB xC4_ecb;
/* fp+7D4 */ ftECB xE4_ecb;
/// @todo this is the start of a substruct with size 0x2C
/* fp+7F4 */ s32 x104;
/* fp+7F8 */ union {
/* fp+7F8 */ struct {
/* fp+7F8 */ HSD_JObj* x108_joint;
/* fp+7FC */ HSD_JObj* x10C_joint[6];
};
/* fp+7F8 */ struct {
/* fp+7F8 */ float x108_f32;
/* fp+7FC */ float x10C_f32;
/* fp+800 */ float x110_f32;
/* fp+804 */ float x114_f32;
/* fp+808 */ float x118_f32;
/* fp+80C */ float x11C_f32;
/* fp+810 */ float x120_f32;
};
};
/* fp+814 */ float x124;
/* fp+818 */ float x128;
/* fp+81C */ float x12C;
/* fp+820 */ u32 x130_flags;
/* fp+824 */ s32 env_flags;
/* fp+828 */ s32 prev_env_flags;
/* fp+82C */ s32 x13C;
/* fp+830 */ Vec3 x140;
/* fp+83C */ SurfaceData floor;
/* fp+850 */ SurfaceData right_wall;
/* fp+864 */ SurfaceData left_wall;
/* fp+878 */ SurfaceData ceiling;
};
struct HSD_AllocEntry {
struct HSD_AllocEntry* next;
u32* addr;
size_t size;
};
struct PreloadCacheSceneEntry {
struct PreloadCache* field0_0x0;
struct PreloadCache* field1_0x4;
};
struct PreloadEntry {
s8 state;
u8 type;
s8 heap;
u8 load_state;
u8 unknown004;
u8 field5_0x5;
u16 entry_num;
s16 load_score;
u8 field8_0xa;
u8 field9_0xb;
u32 size;
HSD_AllocEntry* raw_data;
HSD_AllocEntry* archive;
s32 effect_index;
};
struct PreloadCacheScene {
u32 is_heap_persistent[2];
u8 major_id;
u8 field2_0x9;
u8 field3_0xa;
u8 field4_0xb;
u32 stage_id;
PreloadCacheSceneEntry entries[8];
s32 major_scene_changes;
};
struct PreloadCache {
u32 persistent_heaps;
PreloadCacheScene scene;
PreloadCacheScene new_scene;
PreloadEntry entries[80];
s32 persistent_heap;
int preloaded;
M2C_UNK x974;
};
struct lb_800138D8_t {
/* +0 */ char pad_0[0x11];
/* +11 */ s8 x11;
/* +12 */ s8 x12;
/* +13 */ char pad_13[0x18 - 0x13];
/* +18 */ int x18;
};
struct ftFox_FighterVars {
/* 0x222C */ HSD_GObj* x222C_blasterGObj;
};
typedef struct ftFoxSpecialN {
/// 0x2340 - Check to allow repeated blaster shots
bool isBlasterLoop;
} ftFoxSpecialN;
typedef struct ftFoxSpecialS {
/// 0x2340 - Number of frames to pass before gravity takes effect
s32 gravityDelay;
/// 0x2344 through 0x2370 - Related to Illusion/Phantasm model's position?
Vec3 ghostEffectPos[4];
/// 0x2374 through 0x2380 - ColAnim blend frames?
float blendFrames[4];
/// 0x2384 - Illusion/Phantasm GObj pointer
HSD_GObj* ghostGObj;
} ftFoxSpecialS;
typedef struct ftFoxSpecialHi {
/// 0x2340 - Number of frames to pass before gravity takes effect
s32 gravityDelay;
/// 0x2344 - Used to rotate Fox/Falco's model?
float rotateModel;
/// 0x2348 - Number of frames Firefox/Firebird's launch animation lasts for
s32 travelFrames;
/// 0x234C - ???
s32 unk;
/// 0x2350 - ???
s32 unk2;
} ftFoxSpecialHi;
typedef struct ftFoxSpecialLw {
/// 0x2340 - Auto lag frames after initializing Reflector if B is not being
/// held. Reflector is immediately released with no lag once these frames
/// have passed
s32 releaseLag;
/// 0x2344 - Number of frames it takes Fox/Falco to turn around on command
s32 turnFrames;
/// 0x2348 - Check if Fox/Falco is no longer holding B
bool isRelease;
/// 0x234C - Number of frames to pass before gravity takes effect
s32 gravityDelay;
} ftFoxSpecialLw;
typedef struct ftFoxAppealS {
/// 0x2340 - Fox/Falco's facing direction as a boolean variable, used to
/// load indexed ASIDs from the AppealS struct
bool facingDir;
/// 0x2344 - Incremented every time one of the three stages of the AppealS
/// animation is completed
s32 animCount;
} ftFoxAppealS;
typedef union ftFox_MotionVars {
ftFoxSpecialN SpecialN;
ftFoxSpecialS SpecialS;
ftFoxSpecialHi SpecialHi;
ftFoxSpecialLw SpecialLw;
ftFoxAppealS AppealS;
} ftFox_MotionVars;
struct ftFox_DatAttrs {
// NEUTRAL SPECIAL - BLASTER
float x0_FOX_BLASTER_UNK1;
float x4_FOX_BLASTER_UNK2;
float x8_FOX_BLASTER_UNK3;
float xC_FOX_BLASTER_UNK4;
/// Angle at which Blaster shots are fired
float x10_FOX_BLASTER_ANGLE;
/// Velocity at which Blaster shots are fired
float x14_FOX_BLASTER_VEL;
float x18_FOX_BLASTER_LANDING_LAG;
ItemKind x1C_FOX_BLASTER_SHOT_ITKIND;
ItemKind x20_FOX_BLASTER_GUN_ITKIND;
// SIDE SPECIAL - FOX ILLUSION / FALCO PHANTASM
float x24_FOX_ILLUSION_GRAVITY_DELAY; // Frames required to pass before
// gravity is applied
float x28_FOX_ILLUSION_GROUND_VEL_X; // Horizontal velocity?
float x2C_FOX_ILLUSION_UNK1;
float x30_FOX_ILLUSION_UNK2;
float x34_FOX_ILLUSION_GROUND_END_VEL_X;
float x38_FOX_ILLUSION_GROUND_FRICTION;
float x3C_FOX_ILLUSION_AIR_END_VEL_X;
float x40_FOX_ILLUSION_AIR_MUL_X;
float x44_FOX_ILLUSION_FALL_ACCEL;
float x48_FOX_ILLUSION_TERMINAL_VELOCITY;
float x4C_FOX_ILLUSION_FREEFALL_MOBILITY;
float x50_FOX_ILLUSION_LANDING_LAG;
// UP SPECIAL - FIREFOX / FIREBIRD
float x54_FOX_FIREFOX_GRAVITY_DELAY;
float x58_FOX_FIREFOX_VEL_X; // Initial velocity
float x5C_FOX_FIREFOX_AIR_MOMENTUM_PRESERVE_X;
float x60_FOX_FIREFOX_FALL_ACCEL;
float x64_FOX_FIREFOX_DIRECTION_STICK_RANGE_MIN; // Minimum control stick
// range required for
// direction change
float
x68_FOX_FIREFOX_DURATION; // Amount of frames Firefox/Firebird travels
s32 x6C_FOX_FIREFOX_BOUNCE_VAR;
float x70_FOX_FIREFOX_DURATION_END;
float x74_FOX_FIREFOX_SPEED;
float x78_FOX_FIREFOX_REVERSE_ACCEL; // ???
float x7C_FOX_FIREFOX_GROUND_MOMENTUM_END;
float x80_FOX_FIREFOX_UNK2;
float x84_FOX_FIREFOX_BOUND_VEL_X; // Horizontal velocity of SpecialHiBound
// action state
float
x88_FOX_FIREFOX_FACING_STICK_RANGE_MIN; // Minimum control stick range
// required to change
// character's facing direction
float x8C_FOX_FIREFOX_FREEFALL_MOBILITY;
float x90_FOX_FIREFOX_LANDING_LAG;
float x94_FOX_FIREFOX_BOUND_ANGLE;
// DOWN SPECIAL - REFLECTOR
/**
* Auto lag frames after initializing Reflector if B is not being held.
* Reflector is immediately released with no lag once these frames have
* passed.
*/
float x98_FOX_REFLECTOR_RELEASE_LAG;
/// Amount of turn frames for changing Reflector direction
float x9C_FOX_REFLECTOR_TURN_FRAMES;
float xA0_FOX_REFLECTOR_UNK1;
s32 xA4_FOX_REFLECTOR_GRAVITY_DELAY;
float xA8_FOX_REFLECTOR_MOMENTUM_PRESERVE_X;
float xAC_FOX_REFLECTOR_FALL_ACCEL;
ReflectDesc xB0_FOX_REFLECTOR_REFLECTION;
};
#define MELEE_FT_CHARA_FTGAMEWATCH_TYPES_H
#define MELEE_FT_CHARA_FTGAMEWATCH_FORWARD_H
static MotionFlags const ftGw_MF_Base = Ft_MF_SkipItemVis | Ft_MF_FreezeState;
static MotionFlags const ftGw_MF_Landing = Ft_MF_KeepColAnimHitStatus |
Ft_MF_SkipHit | Ft_MF_KeepSfx |
Ft_MF_SkipParasol;
static MotionFlags const ftGw_MF_LandingAirB = ftGw_MF_Landing | Ft_MF_KeepGfx;
static MotionFlags const ftGw_MF_LandingAirHi =
ftGw_MF_LandingAirB | Ft_MF_KeepFastFall;
static MotionFlags const ftGw_MF_Attack = ftGw_MF_Base | Ft_MF_KeepSfx;
static MotionFlags const ftGw_MF_AttackLw3 = ftGw_MF_Attack | Ft_MF_SkipHit;
static MotionFlags const ftGw_MF_AttackAirN = ftGw_MF_Attack | ftGw_MF_Landing;
static MotionFlags const ftGw_MF_AttackAirB =
ftGw_MF_AttackAirN | Ft_MF_KeepGfx;
static MotionFlags const ftGw_MF_AttackAirHi =
ftGw_MF_AttackAirB | Ft_MF_KeepFastFall;
static MotionFlags const ftGw_MF_AttackS4 =
ftGw_MF_AttackLw3 | Ft_MF_KeepFastFall | Ft_MF_SkipRumble;
static MotionFlags const ftGw_MF_Attack11 =
ftGw_MF_Attack | Ft_MF_KeepFastFall | Ft_MF_Unk19;
static MotionFlags const ftGw_MF_Attack100 =
ftGw_MF_Attack | Ft_MF_KeepColAnimHitStatus | Ft_MF_Unk19;
static MotionFlags const ftGw_MF_Special =
ftGw_MF_Base | Ft_MF_SkipModel | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftGw_MF_SpecialS = ftGw_MF_Special | Ft_MF_KeepGfx;
static MotionFlags const ftGw_MF_SpecialHi =
ftGw_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftGw_MF_SpecialLwCatch =
ftGw_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftGw_MF_SpecialN =
ftGw_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftGw_MF_SpecialAirS =
ftGw_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftGw_MF_SpecialAirHi =
ftGw_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftGw_MF_SpecialAirLwCatch =
ftGw_MF_SpecialLwCatch | Ft_MF_SkipParasol;
static MotionFlags const ftGw_MF_SpecialAirN =
ftGw_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftGw_MF_SpecialLw =
ftGw_MF_SpecialLwCatch | Ft_MF_Unk19;
static MotionFlags const ftGw_MF_SpecialAirLw =
ftGw_MF_SpecialLw | Ft_MF_SkipParasol;
// Mr. Game & Watch Motion State IDs
typedef enum ftGameWatch_MotionState {
ftGw_MS_Attack11 = ftCo_MS_Count,
ftGw_MS_Attack100Start,
ftGw_MS_Attack100Loop,
ftGw_MS_Attack100End,
ftGw_MS_AttackLw3,
ftGw_MS_AttackS4,
ftGw_MS_AttackAirN,
ftGw_MS_AttackAirB,
ftGw_MS_AttackAirHi,
ftGw_MS_LandingAirN,
ftGw_MS_LandingAirB,
ftGw_MS_LandingAirHi,
ftGw_MS_SpecialN,
ftGw_MS_SpecialAirN,
ftGw_MS_SpecialS1,
ftGw_MS_SpecialS2,
ftGw_MS_SpecialS3,
ftGw_MS_SpecialS4,
ftGw_MS_SpecialS5,
ftGw_MS_SpecialS6,
ftGw_MS_SpecialS7,
ftGw_MS_SpecialS8,
ftGw_MS_SpecialS9,
ftGw_MS_SpecialAirS1,
ftGw_MS_SpecialAirS2,
ftGw_MS_SpecialAirS3,
ftGw_MS_SpecialAirS4,
ftGw_MS_SpecialAirS5,
ftGw_MS_SpecialAirS6,
ftGw_MS_SpecialAirS7,
ftGw_MS_SpecialAirS8,
ftGw_MS_SpecialAirS9,
ftGw_MS_SpecialHi,
ftGw_MS_SpecialAirHi,
ftGw_MS_SpecialLw,
ftGw_MS_SpecialLwCatch,
ftGw_MS_SpecialLwShoot,
ftGw_MS_SpecialAirLw,
ftGw_MS_SpecialAirLwCatch,
ftGw_MS_SpecialAirLwShoot,
ftGw_MS_Count,
ftGw_MS_SelfCount = ftGw_MS_Count - ftCo_MS_Count,
} ftGameWatch_MotionState;
typedef enum ftGw_Submotion {
ftGw_SM_SpecialN = ftCo_SM_Count,
ftGw_SM_SpecialAirN,
ftGw_SM_SpecialS1,
ftGw_SM_SpecialS2,
ftGw_SM_SpecialS3,
ftGw_SM_SpecialS4,
ftGw_SM_SpecialS5,
ftGw_SM_SpecialS6,
ftGw_SM_SpecialS7,
ftGw_SM_SpecialS8,
ftGw_SM_SpecialS9,
ftGw_SM_SpecialAirS1,
ftGw_SM_SpecialAirS2,
ftGw_SM_SpecialAirS3,
ftGw_SM_SpecialAirS4,
ftGw_SM_SpecialAirS5,
ftGw_SM_SpecialAirS6,
ftGw_SM_SpecialAirS7,
ftGw_SM_SpecialAirS8,
ftGw_SM_SpecialAirS9,
ftGw_SM_SpecialHi,
ftGw_SM_SpecialAirHi,
ftGw_SM_SpecialLw,
ftGw_SM_SpecialLwCatch,
ftGw_SM_SpecialLwShoot,
ftGw_SM_SpecialAirLw,
ftGw_SM_SpecialAirLwCatch,
ftGw_SM_SpecialAirLwShoot,
ftGw_SM_Count,
ftGw_SM_SelfCount = ftGw_SM_Count - ftCo_SM_Count,
} ftGw_Submotion;
typedef enum ftGameWatch_PanicLevel {
ftGw_Panic_Empty,
ftGw_Panic_Low,
ftGw_Panic_Mid,
ftGw_Panic_Full,
} ftGameWatch_PanicLevel;
struct ftGameWatch_FighterVars {
/* 0x222C */ s32 x222C_judgeVar1;
/* 0x2230 */ s32 x2230_judgeVar2;
/* 0x2234 */ u32 x2234;
/* 0x2238 */ s32 x2238_panicCharge;
/* 0x223C */ s32 x223C_panicDamage;
/* 0x2240 */ s32 x2240_chefVar1;
/* 0x2244 */ s32 x2244_chefVar2;
/* 0x2248 */ HSD_GObj* x2248_manholeGObj;
/* 0x224C */ HSD_GObj* x224C_greenhouseGObj;
/* 0x2250 */ HSD_GObj* x2250_manholeGObj2;
/* 0x2254 */ HSD_GObj* x2254_fireGObj;
/* 0x2258 */ HSD_GObj* x2258_parachuteGObj;
/* 0x225C */ HSD_GObj* x225C_turtleGObj;
/* 0x2260 */ HSD_GObj* x2260_sparkyGObj;
/* 0x2264 */ HSD_GObj* x2264_judgementGObj;
/* 0x2268 */ HSD_GObj* x2268_panicGObj;
/* 0x226C */ HSD_GObj* x226C_rescueGObj;
};
typedef struct ftGameWatchChef {
int sausageCount[6];
} ftGameWatchChef;
typedef struct ftGameWatchJudge {
s32 rollVar[9];
} ftGameWatchJudge;
typedef struct _ftGameWatchAttributes {
/// MISC. ATTRIBUTES
/// Mr. Game & Watch's Z-Axis stretch; 0.01 by default
float x0_GAMEWATCH_WIDTH;
/// Array of four GXColor values, one for each Mr. Game & Watch costume
/// color
GXColor x4_GAMEWATCH_COLOR[4];
/// Outline color of Mr. Game & Watch's model
GXColor x14_GAMEWATCH_OUTLINE;
/// NEUTRAL SPECIAL - CHEF
/// Allow rapid-firing sausages from this frame onward
float x18_GAMEWATCH_CHEF_LOOPFRAME;
/// Maximum amount of sausages created per Chef use
float x1C_GAMEWATCH_CHEF_MAX;
/// SIDE SPECIAL - JUDGEMENT
/// Horizontal momentum preservation value
float x20_GAMEWATCH_JUDGE_MOMENTUM_PRESERVE;
/// Multiplies momentum preservation value
float x24_GAMEWATCH_JUDGE_MOMENTUM_MUL;
float x28_GAMEWATCH_JUDGE_VEL_Y;
float x2C_GAMEWATCH_JUDGE_FRICTION1;
float x30_GAMEWATCH_JUDGE_FRICTION2;
/// Array of BOOLs that toggle respective Judgement numbers ON/OFF. If a
/// number is OFF, it is excluded from RNG rolls. Game panics if less than
/// 2 numbers are ON.
s32 x34_GAMEWATCH_JUDGE_ROLL[9];
/// UP SPECIAL - FIRE RESCUE
/// Minimum control stick range required for directional influence? Also
/// affects how far Mr. Game & Watch flings horizontally (?)
float x58_GAMEWATCH_RESCUE_STICK_RANGE;
/// Radians -- controls how far Mr. Game & Watch can angle Fire Rescue?
float x5C_GAMEWATCH_RESCUE_ANGLE_UNK;
/// Landing lag / Freefall toggle
float x60_GAMEWATCH_RESCUE_LANDING;
/// DOWN SPECIAL - OIL PANIC
/// Horizontal momentum preservation value
float x64_GAMEWATCH_PANIC_MOMENTUM_PRESERVE;
/// Multiplies momentum preservation value
float x68_GAMEWATCH_PANIC_MOMENTUM_MUL;
/// Falling acceleration
float x6C_GAMEWATCH_PANIC_FALL_ACCEL;
/// Terminal Y velocity?
float x70_GAMEWATCH_PANIC_VEL_Y_MAX;
/// Extra damage added to Oil Panic after formula
float x74_GAMEWATCH_PANIC_DAMAGE_ADD;
/// Damage multiplier
float x78_GAMEWATCH_PANIC_DAMAGE_MUL;
float x7C_GAMEWATCH_PANIC_TURN_FRAMES;
/// Oil Panic absorption attributes
AbsorbDesc x80_GAMEWATCH_PANIC_ABSORPTION;
} ftGameWatchAttributes;
typedef union ftGameWatch_MotionVars {
struct ftGameWatch_Attack11Vars {
/// 0x2340 - Set to 0 but never used?
bool unk;
} Attack11;
struct ftGameWatch_SpecialNVars {
/// 0x2340
bool isChefLoopDisable;
/// 0x2344 - Maximum number of sausages able to be spawned per Chef use
s32 maxSausage;
} SpecialN;
struct ftGameWatch_SpecialLwVars {
/// 0x2340 - bool to check if Mr. Game & Watch is no longer holding B
bool isRelease;
/// 0x2344 - Number of frames it takes Mr. Game & Watch to turn around
/// on command
s32 turnFrames;
} SpecialLw;
} ftGameWatch_MotionVars;
#define MELEE_FT_CHARA_FTKIRBY_TYPES_H
#define MELEE_FT_CHARA_FTMARS_TYPES_H
struct ftMars_FighterVars {
/* 0x222C */ u32 x222C;
u8 _[0xF8 - 4];
};
typedef struct _MarsAttributes {
int x0;
int x4;
int x8;
float specialn_friction;
float x10;
float x14;
float x18;
float x1C;
float x20;
float x24;
float x28;
float x2C;
float x30;
float x34;
float x38;
float x3C;
float x40;
float x44;
float x48;
float x4C;
float x50;
float x54;
float x58;
float x5C;
float x60;
AbsorbDesc x64;
u8 x78[0x98 - 0x78];
} MarsAttributes;
union ftMars_MotionVars {
struct ftMars_Unk0MotionVars {
bool x0;
} unk0;
struct ftMars_SpecialNVars {
int cur_frame;
} specialn;
struct ftMars_SpecialSVars {
int x0;
} specials;
struct ftMars_SpecialLwVars {
int x0;
} speciallw;
};
#define MELEE_FT_CHARA_FTNESS_TYPES_H
#define MELEE_FT_CHARA_FTNESS_FORWARD_H
static MotionFlags const ftNs_MF_Attack4 =
Ft_MF_SkipHit | Ft_MF_SkipRumble | Ft_MF_SkipItemVis | Ft_MF_FreezeState;
static MotionFlags const ftNs_MF_AttackHi4 = ftNs_MF_Attack4 | Ft_MF_KeepGfx;
static MotionFlags const ftNs_MF_AttackLw4 =
ftNs_MF_AttackHi4 | Ft_MF_KeepFastFall;
static MotionFlags const ftNs_MF_AttackHi4Start =
ftNs_MF_AttackHi4 | Ft_MF_KeepSfx;
static MotionFlags const ftNs_MF_AttackLw4Start =
ftNs_MF_AttackLw4 | Ft_MF_KeepSfx;
static MotionFlags const ftNs_MF_AttackS4 =
ftNs_MF_Attack4 | Ft_MF_KeepFastFall | Ft_MF_KeepSfx | Ft_MF_SkipColAnim;
static MotionFlags const ftNs_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftNs_MF_SpecialLw =
ftNs_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftNs_MF_Special_SkipUpdateThrowException =
ftNs_MF_Special | Ft_MF_SkipThrowException;
static MotionFlags const ftNs_MF_SpecialN =
ftNs_MF_Special_SkipUpdateThrowException | Ft_MF_KeepFastFall;
static MotionFlags const ftNs_MF_SpecialS =
ftNs_MF_Special_SkipUpdateThrowException | Ft_MF_KeepGfx;
static MotionFlags const ftNs_MF_SpecialHi = ftNs_MF_SpecialN | Ft_MF_KeepGfx;
static MotionFlags const ftNs_MF_SpecialAirLw =
ftNs_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftNs_MF_SpecialAirN =
ftNs_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftNs_MF_SpecialAirS =
ftNs_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftNs_MF_SpecialAirHi =
ftNs_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftNs_MF_SpecialLwLoop =
ftNs_MF_SpecialLw | Ft_MF_Unk19;
static MotionFlags const ftNs_MF_SpecialAirLwLoop =
ftNs_MF_SpecialLwLoop | Ft_MF_SkipParasol;
typedef enum ftNess_MotionState {
ftNs_MS_AttackS4 = ftCo_MS_Count,
ftNs_MS_AttackHi4,
ftNs_MS_AttackHi4Charge,
ftNs_MS_AttackHi4Release,
ftNs_MS_AttackLw4,
ftNs_MS_AttackLw4Charge,
ftNs_MS_AttackLw4Release,
ftNs_MS_SpecialNStart,
ftNs_MS_SpecialNHold,
ftNs_MS_SpecialNRelease,
ftNs_MS_SpecialNEnd,
ftNs_MS_SpecialAirNStart,
ftNs_MS_SpecialAirNHold,
ftNs_MS_SpecialAirNRelease,
ftNs_MS_SpecialAirNEnd,
ftNs_MS_SpecialS,
ftNs_MS_SpecialAirS,
ftNs_MS_SpecialHiStart,
ftNs_MS_SpecialHiHold,
ftNs_MS_SpecialHiEnd,
ftNs_MS_SpecialHi,
ftNs_MS_SpecialAirHiStart,
ftNs_MS_SpecialAirHiHold,
ftNs_MS_SpecialAirHiEnd,
ftNs_MS_SpecialAirHi,
ftNs_MS_SpecialAirHiRebound,
ftNs_MS_SpecialLwStart,
ftNs_MS_SpecialLwHold,
ftNs_MS_SpecialLwHit,
ftNs_MS_SpecialLwEnd,
ftNs_MS_SpecialLwTurn,
ftNs_MS_SpecialAirLwStart,
ftNs_MS_SpecialAirLwHold,
ftNs_MS_SpecialAirLwHit,
ftNs_MS_SpecialAirLwEnd,
ftNs_MS_SpecialAirLwTurn,
ftNs_MS_Count,
ftNs_MS_SelfCount = ftNs_MS_Count - ftCo_MS_Count,
} ftNess_MotionState;
typedef enum ftNs_Submotion {
ftNs_SM_AttackHi4Charge = ftCo_SM_Count,
ftNs_SM_AttackHi4Release,
ftNs_SM_AttackLw4Charge,
ftNs_SM_AttackLw4Release,
ftNs_SM_SpecialNStart,
ftNs_SM_SpecialNHold0,
ftNs_SM_SpecialNHold1,
ftNs_SM_SpecialNEnd,
ftNs_SM_SpecialAirNStart,
ftNs_SM_SpecialAirNHold0,
ftNs_SM_SpecialAirNHold1,
ftNs_SM_SpecialAirNEnd,
ftNs_SM_SpecialS,
ftNs_SM_SpecialAirS,
ftNs_SM_SpecialHiStart,
ftNs_SM_SpecialHiHold,
ftNs_SM_SpecialHiEnd,
ftNs_SM_SpecialHi,
ftNs_SM_SpecialAirHiStart,
ftNs_SM_SpecialAirHiHold,
ftNs_SM_SpecialAirHiEnd,
ftNs_SM_SpecialAirHi,
ftNs_SM_SpecialAirHiRebound,
ftNs_SM_SpecialLwStart,
ftNs_SM_SpecialLwHold,
ftNs_SM_SpecialLwHit,
ftNs_SM_SpecialLwEnd,
ftNs_SM_SpecialAirLwStart,
ftNs_SM_SpecialAirLwHold,
ftNs_SM_SpecialAirLwHit,
ftNs_SM_SpecialAirLwEnd,
ftNs_SM_Count,
ftNs_SM_SelfCount = ftNs_SM_Count - ftCo_SM_Count,
} ftNs_Submotion;
struct ftNess_FighterVars {
/* 0x222C */ HSD_GObj* yoyo_gobj;
/* 0x2230 */ Vec3 yoyo_hitbox_pos;
/* 0x223C */ float x223C;
/* 0x2240 */ HSD_GObj* pkflash_gobj;
/* 0x2244 */ HSD_GObj* pkthunder_gobj;
/* 0x2248 */ HSD_GObj* bat_gobj;
/// bool for PK Thunder GFX?
/* 0x224C */ u32 pkthunder_gfx;
};
union ftNess_MotionVars {
struct ftNess_YoyoVars {
/// 0x2340 - Current frame of Up/Down Smash animation as an integer
s32 yoyoCurrentFrame;
/// 0x2344 - Frames until Up/Down Smash hitbox automatically refreshes;
/// part of why the Yo-Yo Glitch occurs
s32 yoyoRehitTimer;
/// 0x2348 - bool to indicate whether Ness can charge the Yo-Yo
bool isChargeDisable;
/// 0x234C - bool to indicate whether Yo-Yo hitbox position should
/// update based on raw Vec3 input (false) or modified calculations
/// (true)
bool isPosUpdateMod;
} attackhi4, attacklw4;
struct ftNess_SpecialNVars {
/// 0x2340 - Number of frames Ness remains in the "charge loop"
/// animation after releasing PK Flash
/* fp+2340 */ int frames_to_loop_charge_ground;
/// 0x2344 - Number of extra frames Ness remains in the "charge loop"
/// animation after releasing PK Flash?
/* fp+2344 */ int frames_to_loop_charge_air;
/// 0x2348 - Number of frames to pass before gravity takes effect
/* fp+2348 */ int falling_acceleration_delay;
/// 0x234C - Minimum number of frames required to pass for PK Flash to
/// auto-release if B is not being held
/* fp+234C */ int charge_release_delay;
} specialn;
struct ftNess_SpecialHiVars {
/// 0x2340 - PK Thunder collision type? Used to check if PK Thunder is
/// colliding with Ness
s32 thunderColl;
/// 0x2344 - Number of frames Ness remains in the "control loop"
/// animation after PK Thunder despawns
s32 thunderTimerLoop1;
/// 0x2348 - Number of extra frames Ness remains in the "control loop"
/// animation after PK Thunder despawns?
s32 thunderTimerLoop2;
/// 0x234C - Number of frames to pass before gravity takes effect
s32 gravityDelay;
/// 0x2350 - ???
Vec3 collPos1;
/// 0x235C - ???
Vec3 collPos2;
/// 0x2368 - Aerial velocity of PK Thunder 2 (Self-Hit)
float aerialVel;
/// 0x236C - Set various times but never actually used?
float unkVar;
/// 0x2370 - Facing direction change frorm PK Thunder collision
float facingDir;
/// 0x2374 through 0x237C - Unused vector
Vec3 unkVector1;
/// 0x2380 - bool used in a weird way to switch to PK Thunder 2 GFX
s32 jibakuGFX;
/// 0x2384 - Fall acceleration of PK Thunder 2 (Self-Hit)
float fallAccel;
/// 0x2388 - Set various times but never actually used?
float unkVar3;
/// 0x238C - Set various times but never actually used?
float unkVar4;
} specialhi;
struct ftNess_SpecialLwVars {
/// 0x2340 - Auto lag frames after initializing PSI Magnet if B is not
/// being held; PSI Magnet is immediately released with no lag once
/// these frames have passed
s32 releaseLag;
/// 0x2344 - Unused turnaround timer
s32 turnFrames;
/// 0x2348 - Check if Ness is no longer holding B
bool isRelease;
/// 0x234C - Number of frames to pass before gravity takes effect
s32 gravityDelay;
s32 x10;
} speciallw;
};
// Special Attributes
typedef struct ftNessAttributes {
// Neutral Special - PK Flash
s32 x0_PKFLASH_TIMER1_LOOPFRAMES;
s32 x4_PKFLASH_TIMER2_LOOPFRAMES;
s32 x8_PKFLASH_GRAVITY_DELAY;
s32 xC_PKFLASH_MINCHARGEFRAMES;
float x10_PKFLASH_UNK1;
float x14_PKFLASH_FALL_ACCEL;
float x18_PKFLASH_UNK2;
float x1C_PKFLASH_LANDING_LAG; // If set to 0, Ness does not enter freefall
// after aerial PK Flash, but loses his
// double jump.
// Side Special - PK Fire
float x20_PKFIRE_AERIAL_LAUNCH_TRAJECTORY; // Radians
float x24_PKFIRE_AERIAL_VELOCITY;
float x28_PKFIRE_GROUNDED_LAUNCH_TRAJECTORY; // Radians
float x2C_PKFIRE_GROUNDED_VELOCITY;
float x30_PKFIRE_SPAWN_X;
float x34_PKFIRE_SPAWN_Y;
float x38_PKFIRE_LANDING_LAG;
// Up Special - PK Thunder
float x3C_PK_THUNDER_UNK1;
u32 x40_PK_THUNDER_LOOP1;
u32 x44_PK_THUNDER_LOOP2;
u32 x48_PK_THUNDER_GRAVITY_DELAY;
float x4C_PK_THUNDER_UNK2;
float x50_PK_THUNDER_FALL_ACCEL;
// Up Special - PK Thunder 2 (Self-Hit)
float x54_PK_THUNDER_2_MOMENTUM;
float x58_PK_THUNDER_2_UNK1;
float x5C_PK_THUNDER_2_DECELERATION_RATE;
float x60_PK_THUNDER_2_KNOCKDOWN_ANGLE; // Angle to determine whether to
// enter PK Thunder 2 or DownBound
// state (Ground Only)
float x64_PK_THUNDER_2_WALLHUG_ANGLE; // Surface angle to determine whether
// PK Thunder 2 wallhugs or bounces
float x68_PK_THUNDER_2_UNK2;
float
x6C_PK_THUNDER_2_FREEFALL_ANIM_BLEND; // Amount of animation blend
// frames Ness goes through when
// entering FallSpecial through
// his SpecialHi Motion States
float x70_PK_THUNDER_2_LANDING_LAG; // If set to 0, Ness does not enter
// freefall after aerial PK Thunder,
// but loses his double jump.
// Down Special - PSI Magnet
float x74_PSI_MAGNET_RELEASE_LAG; // Auto lag frames after initializing PSI
// Magnet if B is not being held. PSI
// Magnet is immediately released with no
// lag once these frames have passed.
float x78_PSI_MAGNET_UNK1; // Note: Reminiscent of Fox and Falco's
// Reflector turn duration attribute? Unused.
float x7C_PSI_MAGNET_UNK2; // Note: Reminiscent of Fox and Falco's
// Reflector Unk1 attribute? Unused.
float x80_PSI_MAGNET_UNK3; // Unused.
s32 x84_PSI_MAGNET_FRAMES_BEFORE_GRAVITY;
float x88_PSI_MAGNET_MOMENTUM_PRESERVATION;
float x8C_PSI_MAGNET_FALL_ACCEL;
float x90_PSI_MAGNET_UNK4; // Unused.
float x94_PSI_MAGNET_HEAL_MUL; // Multiplies projectile damage by this
// value and heals result
AbsorbDesc x98_PSI_MAGNET_ABSORPTION;
// Up/Down Smash - Yo-Yo
float xAC_YOYO_CHARGE_DURATION; // Amount of frames Yo-Yo can be charged
float
xB0_YOYO_DAMAGE_MUL; // Charged Yo-Yo damage multiplier; 350 by
// default, identical to the Smash Charge standard
float xB4_YOYO_REHIT_RATE; // Amount of frames needed for the Yo-Yo to hit
// again after colliding with a hurtbox
// Forward Smash - Baseball Bat
ReflectDesc xB8_BASEBALL_BAT;
} ftNessAttributes;
struct ftKb_FighterVars {
/* fp+222C */ struct ftKb_Hat {
/* +0 fp+222C */ M2C_UNK x0;
/* +4 fp+2230 */ uint x4;
/* +8:0 fp+2234:0 */ u8 x8_b0 : 1;
/* +9 fp+2235 */ u8 x9[3];
/* +C fp+2238 */ FighterKind kind;
/* +10 fp+223C */ HSD_JObj* jobj;
/* +14 fp+2240 */ u32 x14;
/* +18 fp+2244 */ M2C_UNK unk_hsd_obj;
/* +1C fp+2248 */ M2C_UNK x1C;
/* +20 fp+224C */ M2C_UNK x20;
/* +24 fp+2250 */ M2C_UNK x24;
} hat;
/* fp+224C */ u8 _28[0x60 - 0x28];
/* fp+228C */ M2C_UNK x60;
/* fp+2290 */ M2C_UNK x64;
/* fp+2294 */ u8 _68[0x7C - 0x68];
/* fp+22A8 */ Item_GObj* ns_flash_gobj;
/* fp+2294 */ u8 x80[0x9C - 0x80];
/* fp+22C8 */ int x9C;
/* fp+22CC */ M2C_UNK xA0;
/* fp+22D0 */ M2C_UNK xA4;
/* fp+22D4 */ int xA8;
/* fp+22D8 */ M2C_UNK xAC;
/* fp+22DC */ M2C_UNK xB0;
/* fp+22E0 */ int xB4;
/* fp+22E4 */ M2C_UNK xB8;
/* fp+22E8 */ int xBC;
/* fp+22EC */ M2C_UNK xC0;
/* fp+22F0 */ M2C_UNK xC4;
/* fp+22F4 */ M2C_UNK xC8;
/* fp+22F8 */ bool xCC;
/* fp+22FC */ Item_GObj* xD0;
/* fp+2300 */ M2C_UNK xD4;
/* fp+2304 */ M2C_UNK xD8;
/* fp+2308 */ M2C_UNK xDC;
/* fp+230C */ int xE0;
/* fp+2310 */ short xE4;
/* fp+2314 */ float xE8;
/* fp+2318 */ float xEC;
/* fp+231C */ float xF0;
/* fp+2320:0 */ u8 xF4_b0 : 1;
};
struct { int x[1 - 2 * !(sizeof(struct ftKb_FighterVars) == 0xF8)]; };;
struct ftKb_SpecialNMs_DatAttrs {
/* da+35C */ u32 charge_iterations;
/* da+360 */ u32 base_damage;
/* da+364 */ u32 additional_damage_per_iteration;
/* da+368 */ float air_horizontal_momentum_preservation;
/* da+36C */ float air_horizontal_deceleration_rate;
};
struct { int x[1 - 2 * !(sizeof(struct ftKb_SpecialNMs_DatAttrs) == 0x14)]; };;
/// @todo Every hat is its own struct.
struct ftKb_DatAttrs {
// Midair Jumps
/* +0 */ u32 jumpaerial_turn_duration;
/* +4 */ float jumpaerial_horizontal_momentum_backwards;
/* +8 */ float jumpaerial_horizontal_momentum_forwards;
/* +C */ float jumpaerial_momentum_from_turning;
/* +10 */ float jumpaerial_horizontal_momentum;
/* +14 */ float jumpaerial_jump1_vertical_momentum;
/* +18 */ float jumpaerial_jump2_vertical_momentum;
/* +1C */ float jumpaerial_jump3_vertical_momentum;
/* +20 */ float jumpaerial_jump4_vertical_momentum;
/* +24 */ float jumpaerial_jump5_vertical_momentum;
/* +28 */ u32 jumpaerial_number_of_jumps;
/* +2C */ u32 jumpaerial_first_jump_action_state;
/* +30 */ u32 jumpaerial_final_jump_action_state;
/* +34 */ s16 jumpaerial_unk;
// Neutral B (no hat)
/* +38 */ float specialn_x_offset_inhaled;
/* +3C */ float specialn_y_offset_inhaled;
/* +40 */ float specialn_z_offset_inhaled;
/* +44 */ float specialn_gravity_of_inhaled;
/* +48 */ float specialn_velocity_outer_grab_box;
/* +4C */ float specialn_velocity_inner_grab_box;
/* +50 */ float specialn_inhale_velocity;
/* +54 */ float specialn_inhale_resistance;
/* +58 */ float specialn_duration_divisor;
/* +5C */ float specialn_base_duration;
/* +60 */ float specialn_star_deceleration_rate;
/* +64 */ float specialn_star_duration_divisor;
/* +68 */ float specialn_star_base_duration;
/* +6C */ float specialn_frames_in_swallow_star;
/* +70 */ float specialn_spit_spin;
/* +74 */ float specialn_x_axis_range_walk;
/* +78 */ float specialn_y_axis_range_jump;
/* +7C */ float specialn_walk_speed;
/* +80 */ float specialn_jump_height;
/* +84 */ float specialn_stop_momentum;
/* +88 */ float specialn_ground_spit_initial_horizontal_velocity;
/* +8C */ float specialn_spit_deceleration_rate;
/* +90 */ float specialn_spit_out_release_angle; // In radians
/* +94 */ float specialn_swallow_star_vertical_velocity;
/* +98 */ float specialn_swallow_star_gravity;
/* +9C */ float specialn_opponent_horizontal_velocity;
/* +A0 */ float specialn_opponent_vertical_velocity;
/* +A4 */ float specialn_ability_loss_star_x;
/* +A8 */ float specialn_ability_loss_star_y;
/* +AC */ float specialn_ability_loss_star_z;
/* +B0 */ float specialn_odds_lose_ability_on_hit;
/* +B4 */ float specialn_unk1;
/* +B8 */ float specialn_swallow_star_y_release;
/* +BC */ float specialn_unk2;
/* +C0 */ float specialn_unk3;
/* +C4 */ float specialn_unk4;
/* +C8 */ float specialn_unk5;
// Side B
/* +CC */ float specials_aerial_vertical_momentum;
/* +D0 */ float specials_landing_lag;
// Up B
/* +D4 */ float specialhi_vertical_momentum;
/* +D8 */ float specialhi_horizontal_momentum;
/* +DC */ float specialhi_projectile_spawn_x;
/* +E0 */ float specialhi_projectile_spawn_y;
/* +E4 */ float specialhi_reverse_upb_stick_range;
/* +E8 */ float specialhi_unk;
// Down B
/* +EC */ u32 speciallw_max_time_in_stone;
/* +F0 */ u32 speciallw_min_time_in_stone;
/* +F4 */ float speciallw_min_slant_angle_slide;
/* +F8 */ float speciallw_max_slant_angle_slide;
/* +FC */ float speciallw_slide_acceleration;
/* +100 */ float speciallw_slide_max_speed;
/* +104 */ float speciallw_gravity;
/* +108 */ u32 speciallw_hp;
/* +10C */ u32 speciallw_resistance;
/* +110 */ u32 speciallw_unk;
/* +114 */ float speciallw_freefall_toggle;
// Bowser
// In frames, checked in this many frame intervals
/* +118 */ u32 specialn_kp_b_button_check_frequency;
/* +11C */ float specialn_kp_fuel_recharge_rate;
/* +120 */ float specialn_kp_flame_size_recharge_rate;
/* +124 */ float specialn_kp_max_fuel;
/* +128 */ float specialn_kp_spew_flame_velocity;
/* +12C */ float specialn_kp_flame_scale;
/* +130 */ float specialn_kp_lowest_charge_graphic_size;
/* +134 */ u32 specialn_kp_screen_shake_frequency;
/* +138 */ float specialn_kp_breath_x_offset;
// Values repeat below here
/* +13C */ float specialn_kp_breath_y_offset;
// Giga Bowser
// In frames, checked in this many frame intervals
/* +140 */ u32 specialn_gk_b_button_check_frequency;
/* +144 */ float specialn_gk_fuel_recharge_rate;
/* +148 */ float specialn_gk_flame_size_recharge_rate;
/* +14C */ float specialn_gk_max_fuel;
/* +150 */ float specialn_gk_spew_flame_velocity;
/* +154 */ float specialn_gk_flame_scale;
/* +158 */ float specialn_gk_lowest_charge_graphic_size;
/* +15C */ u32 specialn_gk_screen_shake_frequency;
/* +160 */ float specialn_gk_breath_x_offset;
/* +164 */ float specialn_gk_breath_y_offset;
// Samus
/* +168 */ float specialn_ss_charge_time;
/* +16C */ float specialn_ss_aerial_shot_recoil;
/* +170 */ u32 specialn_ss_frames_per_charge_level;
/* +174 */ float specialn_ss_freefall_toggle;
// Peach
/* +178 */ float specialn_pe_friction;
/* +17C */ float specialn_pe_air_horizontal_momentum_preservation;
/* +180 */ float specialn_pe_air_initial_vertical_momentum;
/* +184 */ float specialn_pe_fall_acceleration;
/* +188 */ float specialn_pe_unk2;
/* +18C */ float specialn_pe_unk3;
// Donkey Kong
/* +190 */ int specialn_dk_swings_to_full_charge;
/* +194 */ u32 specialn_dk_damage_increase_per_swing;
/* +198 */ float specialn_dk_grounded_punch_horizontal_velocity;
/* +19C */ float specialn_dk_freefall_toggle;
// Ness
/* +1A0 */ int specialn_ns_frames_to_loop_charge_ground;
/* +1A4 */ int specialn_ns_frames_to_loop_charge_air;
/* +1A8 */ int specialn_ns_falling_acceleration_delay;
/* +1AC */ int specialn_ns_charge_release_delay;
/* +1B0 */ float specialn_ns_unk1;
/* +1B4 */ float specialn_ns_gravity;
/* +1B8 */ float specialn_ns_unk2;
/* +1BC */ float specialn_ns_freefall_toggle;
// Pikachu
/* +1C0 */ float specialn_pk_ground_spawn_offset_x;
/* +1C4 */ float specialn_pk_ground_spawn_offset_y;
/* +1C8 */ float specialn_pk_air_spawn_offset_x;
/* +1CC */ float specialn_pk_air_spawn_offset_y;
/* +1D0 */ float specialn_pk_freefall_toggle;
/* +1D4 */ u32 specialn_pk_grounded_item_id;
/* +1D8 */ u32 specialn_pk_air_item_id;
// Pichu
/* +1DC */ float specialn_pc_ground_spawn_offset_x;
/* +1E0 */ float specialn_pc_ground_spawn_offset_y;
/* +1E4 */ float specialn_pc_air_spawn_offset_x;
/* +1E8 */ float specialn_pc_air_spawn_offset_y;
/* +1EC */ float specialn_pc_freefall_toggle;
/* +1F0 */ u32 specialn_pc_grounded_item_id;
/* +1F4 */ u32 specialn_pc_air_item_id;
// Captain Falcon
/* +1F8 */ float specialn_ca_x_axis_range;
/* +1FC */ float specialn_ca_y_axis_range;
/* +200 */ float specialn_ca_angle_difference;
/* +204 */ float specialn_ca_forward_momentum;
/* +208 */ float specialn_ca_additional_vertical_momentum;
// Ganondorf
/* +20C */ float specialn_gn_x_axis_range;
/* +210 */ float specialn_gn_y_axis_range;
/* +214 */ float specialn_gn_angle_difference;
/* +218 */ float specialn_gn_forward_momentum;
/* +21C */ float specialn_gn_additional_vertical_momentum;
// Fox
/* +220 */ float specialn_fx_unk1;
/* +224 */ float specialn_fx_unk2;
/* +228 */ float specialn_fx_unk3;
/* +22C */ float specialn_fx_unk4;
/* +230 */ float specialn_fx_launch_angle;
/* +234 */ float specialn_fx_launch_speed;
/* +238 */ float specialn_fx_freefall_toggle;
/* +23C */ u32 specialn_fx_blaster_projectile_id;
/* +240 */ u32 specialn_fx_blaster_item_id;
// Falco
/* +244 */ float specialn_fc_unk1;
/* +248 */ float specialn_fc_unk2;
/* +24C */ float specialn_fc_unk3;
/* +250 */ float specialn_fc_unk4;
/* +254 */ float specialn_fc_launch_angle;
/* +258 */ float specialn_fc_launch_speed;
/* +25C */ float specialn_fc_freefall_toggle;
/* +260 */ u32 specialn_fc_blaster_projectile_id;
/* +264 */ u32 specialn_fc_blaster_item_id;
// Link
/// In frames
/* +268 */ float specialn_lk_max_charge;
/* +26C */ float specialn_lk_arrow_charge_speed;
/* +270 */ float specialn_lk_freefall_toggle;
/* +274 */ u32 specialn_lk_bow_item_loader_id;
/* +278 */ u32 specialn_lk_bow_item_id;
// Young Link
// In frames
/* +27C */ float specialn_cl_max_charge;
/* +280 */ float specialn_cl_arrow_charge_speed;
/* +284 */ float specialn_cl_freefall_toggle;
/* +288 */ u32 specialn_cl_bow_item_loader_id;
/* +28C */ u32 specialn_cl_bow_item_id;
// Sheik
/* +290 */ float specialn_sk_graphic_x_offset_ground;
/* +294 */ float specialn_sk_graphic_y_offset_ground;
/* +298 */ float specialn_sk_graphic_x_offset_air;
/* +29C */ float specialn_sk_graphic_y_offset_air;
/* +2A0 */ float specialn_sk_freefall_toggle;
// Zelda
/* +2A4 */ float specialn_zd_unk1;
/* +2A8 */ u32 specialn_zd_frames_before_gravity;
/* +2AC */ float specialn_zd_horizontal_momentum_preservation;
/* +2B0 */ float specialn_zd_fall_acceleration;
// Jigglypuff
/* +2B4 */ u32 specialn_pr_duration;
/* +2B8 */ u32 specialn_pr_unk;
/* +2BC */ float specialn_pr_air_height_offset_at_start;
/* +2C0 */ float specialn_pr_bounciness;
/* +2C4 */ float specialn_pr_unk1;
/* +2C8 */ float specialn_pr_gravity_during_roll;
/* +2CC */ float specialn_pr_base_speed;
/* +2D0 */ float specialn_pr_max_speed;
/* +2D4 */ float specialn_pr_unk2;
/* +2D8 */ float specialn_pr_air_x_axis_momentum;
/* +2DC */ float specialn_pr_air_y_axis_momentum;
/* +2E0 */ float specialn_pr_air_initial_momentum;
/* +2E4 */ float specialn_pr_max_momentum;
/* +2E8 */ float specialn_pr_spinning_speed;
/* +2EC */ float specialn_pr_spinning_speed_turn;
/* +2F0 */ u32 specialn_pr_delay_per_smoke;
/* +2F4 */ float specialn_pr_unk3;
/* +2F8 */ float specialn_pr_bounce1;
/* +2FC */ float specialn_pr_bounce2;
/* +300 */ float specialn_pr_base_damage;
/* +304 */ float specialn_pr_damage_multiplier;
/* +308 */ float specialn_pr_horizontal_bounce_momentum_on_hit;
/* +30C */ float specialn_pr_vertical_bounce_momentum_on_hit;
/* +310 */ float specialn_pr_forward_momentum_from_stick;
/* +314 */ float specialn_pr_unk4;
/* +318 */ float specialn_pr_unk5;
/* +31C */ u32 specialn_pr_unk6;
/* +320 */ float specialn_pr_charge_rate1;
/* +324 */ float specialn_pr_charge_time;
/* +328 */ float specialn_pr_charge_rate2;
/* +32C */ float specialn_pr_charge_spin_animation;
/* +330 */ float specialn_pr_unk7;
/* +334 */ float specialn_pr_unk8;
/* +338 */ float specialn_pr_some_speed_var;
/* +33C */ float specialn_pr_spin_anim_speed_after_collision;
/* +340 */ float specialn_pr_air_speed;
/* +344 */ float specialn_pr_turn_rate_related;
/* +348 */ float specialn_pr_unk9;
/* +34C */ float specialn_pr_unk10;
/* +350 */ float specialn_pr_unk11;
/* +354 */ float specialn_pr_unk12;
/* +358 */ float specialn_pr_freefall_toggle;
struct ftKb_SpecialNMs_DatAttrs ms, fe;
// Mewtwo
/* +384 */ float specialn_mt_charge_time;
/* +388 */ float specialn_mt_ground_horizontal_momentum;
/* +38C */ float specialn_mt_air_horizontal_momentum;
/* +390 */ u32 specialn_mt_loops_to_full_charge;
/* +394 */ float specialn_mt_frames_to_transition;
/* +398 */ float specialn_mt_freefall_toggle;
// Ice Climbers
/* +39C */ float specialn_pp_air_vertical_momentum;
/* +3A0 */ float specialn_pp_landing_lag;
/* +3A4 */ float specialn_pp_x_spawn;
/* +3A8 */ float specialn_pp_y_spawn;
// Yoshi
/* +3AC */ float specialn_ys_initial_horizontal_momentum;
/* +3B0 */ float specialn_ys_initial_vertical_momentum;
/* +3B4 */ float specialn_ys_damage_multiplier;
/* +3B8 */ float specialn_ys_unk;
/* +3BC */ float specialn_ys_growth_time;
/* +3C0 */ float specialn_ys_base_duration;
/* +3C4 */ float specialn_ys_egg_breakout_resistance;
/* +3C8 */ float specialn_ys_frames_reduced_per_input;
/* +3CC */ float specialn_ys_unk1;
/* +3D0 */ float specialn_ys_unk2;
/* +3D4 */ u32 specialn_ys_iframes_on_release;
/* +3D8 */ float specialn_ys_horizontal_velocity_on_breakout;
/* +3DC */ float specialn_ys_vertical_velocity_on_breakout;
/* +3E0 */ float specialn_ys_unk3;
// Mr. Game & Watch
/* +3E4 */ float specialn_gw_frame_on_repeat;
/* +3E8 */ float specialn_gw_max_sausages_per_use;
/* +3EC */ AbsorbDesc specialn_pe_absorbdesc;
/* +400 */ ReflectDesc specialn_zd_reflectdesc;
// Final Cutter
/* +424 */ float specialhi_initial_velocity;
/* +428 */ float specialhi_unk2;
/* +42C */ float specialhi_duration;
/* +430 */ float specialhi_deceleration_rate;
};
struct { int x[1 - 2 * !(sizeof(struct ftKb_DatAttrs) == 0x434)]; };;
union ftKb_MotionVars {
struct ftGameWatch_SpecialNVars specialn_gw;
struct ftMars_SpecialNVars specialn_ms;
struct ftNess_SpecialNVars specialn_ns;
struct ftKb_SpecialNPe_Vars {
/* fp+2340 */ int facing_dir;
} specialn_pe;
};
#define MELEE_FT_CHARA_FTKOOPA_TYPES_H
struct ftKoopa_FighterVars {
/* 0x222C */ float x222C;
/* 0x2230 */ float x2230;
};
union ftKoopa_MotionVars {
/// @todo Proper state name.
struct ftKoopa_State1Vars {
M2C_UNK x0;
bool x4;
M2C_UNK x8;
bool xC;
} unk1;
/// @todo Possibly #ftKoopa_State1Vars.
struct ftKoopa_SpecialSVars {
/* fp+2340 */ bool b_held;
/* fp+2344 */ bool x4;
/* fp+2348 */ int facing_dir;
/* fp+2348 */ bool xC;
} specials;
};
typedef struct _ftKoopaAttributes {
float x0;
u32 x4;
float x8;
float xC;
float x10;
float x14;
float x18;
float x1C;
u32 x20;
float x24;
float x28;
u32 x2C;
float x30;
float x34;
float x38;
float x3C;
float x40;
float x44;
float x48;
float x4C;
u32 unk50;
float x54;
float x58;
float x5C;
float x60;
float x64;
float x68;
float x6C;
float x70;
float x74;
float x78;
float x7C;
float x80;
float x84;
float x88;
float x8C;
float x90;
float x94;
float x98;
float x9C;
} ftKoopaAttributes;
typedef struct _ftKoopaVars {
float x0;
float x4;
} ftKoopaVars;
#define MELEE_FT_CHARA_FTLINK_TYPES_H
struct ftLk_DatAttrs {
/* +0 */ float x0;
/* +4 */ float specialn_anim_rate;
/* +8 */ float x8;
/* +C */ int xC;
/* +10 */ int x10;
/* +14 */ float x14;
/* +18 */ float x18;
/* +1C */ float x1C;
/* +20 */ float x20;
/* +24 */ float x24;
/* +28 */ float specialhi_pos_y_offset;
/* +2C */ int x2C;
/* +30 */ float x30;
/* +34 */ float x34;
/* +38 */ float specialairhi_drift_stick_mul;
/* +3C */ float specialairhi_drift_max_mul;
/* +40 */ float x40;
/* +44 */ float specialhi_grav_mul;
/* +48 */ int x48;
/* +4C */ float attackairlw_hit_vel_y;
/* +50 */ float attackairlw_hit_anim_frame_start;
/* +54 */ float attackairlw_hit_anim_frame_end;
/* +58 */ u32 attackairlw_anim_flags[3];
/* +64 */ M2C_UNK x64;
/* +68 */ M2C_UNK x68;
/* +6C */ M2C_UNK x6C;
/* +70 */ M2C_UNK x70;
/* +74 */ M2C_UNK x74;
/* +78 */ M2C_UNK x78;
/* +7C */ M2C_UNK x7C;
/* +80 */ M2C_UNK x80;
/* +84 */ M2C_UNK x84;
/* +88 */ s32 x88;
/* +8C */ M2C_UNK x8C;
/* +90 */ M2C_UNK x90;
/* +94 */ M2C_UNK x94;
/* +98 */ s32 x98;
/* +9C */ M2C_UNK x9C;
/* +A0 */ M2C_UNK xA0;
/* +A4 */ int xA4;
/* +A8 */ s32 xA8;
/* +AC */ M2C_UNK xAC;
/* +B0 */ int xB0;
/* +B4 */ float xB4;
/* +B8 */ int xB8;
/* +BC */ int xBC;
/* +C0 */ u8 xC0_filler[0xC4 - 0xC0];
/* +C4 */ AbsorbDesc xC4;
/* +D8 */ float xD8;
};
struct ftLk_FighterVars {
/* fp+222C */ bool used_boomerang;
/* fp+2230 */ bool x4;
/* fp+2234 */ Item_GObj* boomerang_gobj;
/* fp+2238 */ Item_GObj* xC;
/* fp+223C */ Item_GObj* arrow_gobj;
/* fp+2240 */ Item_GObj* x14;
/* fp+2244 */ Item_GObj* x18;
/* fp+2248 */ u32 x1C;
u8 _[0xF8 - 0x20];
};
union ftLk_MotionVars {
struct ftLk_AttackAirVars {
/* fp+2340 */ float lw_frame_start;
} attackair;
struct ftLk_SpecialNVars {
/* fp+2340 */ Vec2 x0;
/* fp+2348 */ Vec3 x8;
/* fp+2354 */ float x14;
/* fp+2358 */ int unk_timer;
} specialn;
};
struct ftLk_SpecialN_Vec3Group {
/* +0 */ Vec3 a;
/* +C */ Vec3 b;
/* +18 */ Vec3 c;
};
#define MELEE_FT_CHARA_FTLUIGI_TYPES_H
struct ftLuigi_FighterVars {
/* 0x222C */ bool x222C_cycloneCharge;
/* 0x2230 */ u32 x2230;
/* 0x2234 */ u32 x2234;
u8 _[0xF8 - 0xC];
};
typedef struct _ftLuigiAttributes {
/// SIDE SPECIAL - GREEN MISSILE
float x0_LUIGI_GREENMISSILE_UNK1;
float x4_LUIGI_GREENMISSILE_SMASH;
float x8_LUIGI_GREENMISSILE_CHARGE_RATE;
float xC_LUIGI_GREENMISSILE_MAX_CHARGE_FRAMES;
float x10_LUIGI_GREENMISSILE_DAMAGE_TILT;
/// (base damage + charge duration) * this value?
float x14_LUIGI_GREENMISSILE_DAMAGE_SLOPE;
float x18_LUIGI_GREENMISSILE_TRACTION;
float x1C_LUIGI_GREENMISSILE_UNK2;
float x20_LUIGI_GREENMISSILE_FALLING_SPEED;
float x24_LUIGI_GREENMISSILE_VEL_X;
float x28_LUIGI_GREENMISSILE_MUL_X;
float x2C_LUIGI_GREENMISSILE_VEL_Y;
float x30_LUIGI_GREENMISSILE_MUL_Y;
float x34_LUIGI_GREENMISSILE_GRAVITY_START;
float x38_LUIGI_GREENMISSILE_FRICTION_END;
float x3C_LUIGI_GREENMISSILE_X_DECEL;
float x40_LUIGI_GREENMISSILE_GRAVITY_MUL;
/// 1.0f divided by this value
float x44_LUIGI_GREENMISSILE_MISFIRE_CHANCE;
float x48_LUIGI_GREENMISSILE_MISFIRE_VEL_X;
float x4C_LUIGI_GREENMISSILE_MISFIRE_VEL_Y;
/// UP SPECIAL - SUPER JUMP PUNCH
/// Multiplies Luigi's max horionztal aerial mobility
float x50_LUIGI_SUPERJUMP_FREEFALL_MOBILITY;
float x54_LUIGI_SUPERJUMP_LANDING_LAG;
/// Minimum stick range required for turnaround
float x58_LUIGI_SUPERJUMP_REVERSE_STICK_RANGE;
/// Minimum stick range required for horionztal momentum?
float x5C_LUIGI_SUPERJUMP_MOMENTUM_STICK_RANGE;
float x60_LUIGI_SUPERJUMP_ANGLE_DIFF;
float x64_LUIGI_SUPERJUMP_VEL_X;
float x68_LUIGI_SUPERJUMP_GRAVITY_START;
float x6C_LUIGI_SUPERJUMP_VEL_Y;
/// DOWN SPECIAL - LUIGI CYCLONE
/// Vertical momentum from (first?) B button tap
float x70_LUIGI_CYCLONE_TAP_MOMENTUM;
float x74_LUIGI_CYCLONE_MOMENTUM_X_GROUND;
float x78_LUIGI_CYCLONE_MOMENTUM_X_AIR;
float x7C_LUIGI_CYCLONE_MOMENTUM_X_MUL_GROUND;
float x80_LUIGI_CYCLONE_MOMENTUM_X_MUL_AIR;
float x84_LUIGI_CYCLONE_FRICTION_END;
s32 x88_LUIGI_CYCLONE_UNK;
float x8C_LUIGI_CYCLONE_TAP_Y_VEL_MAX;
float x90_LUIGI_CYCLONE_TAP_GRAVITY;
s32 x94_LUIGI_CYCLONE_LANDING_LAG;
} ftLuigiAttributes;
typedef struct ftLuigiSpecialS {
/// 0x2340 - Number of frames Green Missile has been charged
s32 chargeFrames;
/// 0x2344 - Check if Green Missile will misfire
bool isMisfire;
} ftLuigiSpecialS;
typedef struct ftLuigiSpecialLw {
/// 0x2340 - Grounded momentum of Luigi Cyclone
float groundVelX;
/// 0x2344 - Set but never used?
s32 unk;
/// 0x2348 - Skipped entirely
s32 _;
/// 0x234C - Checked in collision, related to some angle calculation
bool isUnkColl;
} ftLuigiSpecialLw;
typedef union ftLuigi_MotionVars {
ftLuigiSpecialS SpecialS;
ftLuigiSpecialLw SpecialLw;
} ftLuigi_MotionVars;
#define MELEE_FT_CHARA_FTMARIO_TYPES_H
#define MELEE_FT_CHARA_FTMARIO_FORWARD_H
static MotionFlags const ftMr_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftMr_MF_SpecialN =
ftMr_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftMr_MF_SpecialHi =
ftMr_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftMr_MF_SpecialLw =
ftMr_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_KeepSfx;
static MotionFlags const ftMr_MF_SpecialAirN =
ftMr_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftMr_MF_SpecialAirHi =
ftMr_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftMr_MF_SpecialAirLw =
ftMr_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftMr_MF_SpecialS =
ftMr_MF_Special | Ft_MF_KeepGfx | Ft_MF_SkipModel | Ft_MF_SkipColAnim;
typedef enum ftMario_MotionState {
ftMr_MS_AppealSR = ftCo_MS_Count,
ftMr_MS_AppealSL,
ftMr_MS_SpecialN,
ftMr_MS_SpecialAirN,
ftMr_MS_SpecialS,
ftMr_MS_SpecialAirS,
ftMr_MS_SpecialHi,
ftMr_MS_SpecialAirHi,
ftMr_MS_SpecialLw,
ftMr_MS_SpecialAirLw,
ftMr_MS_Count,
ftMr_MS_SelfCount = ftMr_MS_Count - ftCo_MS_Count,
} ftMario_MotionState;
typedef enum ftMr_Submotion {
ftMr_SM_SpecialN = ftCo_SM_Count,
ftMr_SM_SpecialAirN,
ftMr_SM_SpecialS,
ftMr_SM_SpecialAirS,
ftMr_SM_SpecialHi,
ftMr_SM_SpecialAirHi,
ftMr_SM_SpecialLw,
ftMr_SM_SpecialAirLw,
ftMr_SM_Count,
ftMr_SM_SelfCount = ftMr_SM_Count - ftCo_SM_Count,
} ftMr_Submotion;
struct ftMario_FighterVars {
/// Current Megavitamin color combo
/* 0x222C */ int x222C_vitaminCurr;
/// Previous Megavitamin color combo
/* 0x2230 */ int x2230_vitaminPrev;
/* 0x2234 */ bool x2234_tornadoCharge;
/* 0x2238 */ bool x2238_isCapeBoost;
/* 0x223C */ HSD_GObj* x223C_capeGObj;
/* 0x2240 */ uint x2240;
u8 _[0xF8 - 0x18];
};
typedef struct ftMario_DatAttrs {
struct ftMario_SpecialS_DatAttrs {
float vel_x_decay;
Vec2 vel;
float grav;
float terminal_vel;
ItemKind cape_kind;
} specials;
struct ftMario_SpecialHi_DatAttrs {
float freefall_mobility;
float landing_lag;
float reverse_stick_range;
float momentum_stick_range;
float angle_diff;
float vel_x;
float grav;
float vel_mul;
} specialhi;
struct ftMario_SpecialLw_DatAttrs {
float vel_y;
float momentum_x;
float air_momentum_x;
float momentum_x_mul;
float air_momentum_x_mul;
float friction_end;
s32 unk0;
float tap_y_vel_max;
float tap_grav;
s32 landing_lag;
} speciallw;
ReflectDesc cape_reflection;
} ftMario_DatAttrs;
typedef struct ftMario_SpecialLw_ECB {
u8 x0_str_arr[3];
u8 x3_balign;
uint x4;
uint x8;
uint xC;
uint x10;
uint x14;
} ftMario_SpecialLw_ECB;
typedef struct ftMarioSpecialS {
/// 0x2340 - bool to check if reflect bubble should be enabled
bool reflecting;
} ftMarioSpecialS;
typedef struct ftMarioSpecialLw {
/// 0x2340 - Grounded momentum of Mario / Dr. Tornado
float groundVelX;
/// 0x2344 - Set but never used?
s32 unk;
/// 0x2348 - Skipped entirely
s32 _;
/// 0x234C - Checked in collision, related to some angle calculation
bool isUnkColl;
} ftMarioSpecialLw;
typedef union ftMario_MotionVars {
ftMarioSpecialS SpecialS;
ftMarioSpecialLw SpecialLw;
} ftMario_MotionVars;
#define MELEE_FT_CHARA_FTMASTERHAND_TYPES_H
#define MELEE_FT_CHARA_FTMASTERHAND_FORWARD_H
typedef struct ftMasterHand_SpecialAttrs ftMasterHand_SpecialAttrs;
typedef enum ftMasterHand_UnkEnum0 {
ftMh_UnkEnum0_Unk00,
ftMh_UnkEnum0_Unk01,
ftMh_UnkEnum0_Unk02,
ftMh_UnkEnum0_Unk03,
ftMh_UnkEnum0_Unk04,
ftMh_UnkEnum0_Unk05,
ftMh_UnkEnum0_Unk06,
ftMh_UnkEnum0_Unk07,
ftMh_UnkEnum0_Unk08,
ftMh_UnkEnum0_Unk09,
ftMh_UnkEnum0_Unk10,
} ftMasterHand_UnkEnum0;
typedef enum ftMasterhand_MotionState {
ftMh_MS_Wait1_0 = ftCo_MS_Count,
ftMh_MS_Wait2_0,
ftMh_MS_Entry,
ftMh_MS_Damage,
ftMh_MS_Damage2,
ftMh_MS_WaitSweep,
ftMh_MS_SweepLoop,
ftMh_MS_SweepWait,
ftMh_MS_Slap,
ftMh_MS_Walk2,
ftMh_MS_WalkLoop,
ftMh_MS_WalkWait,
ftMh_MS_WalkShoot,
ftMh_MS_Drill,
ftMh_MS_RockCrushUp,
ftMh_MS_RockCrushWait,
ftMh_MS_RockCrushDown,
ftMh_MS_PaperCrush,
ftMh_MS_Poke1,
ftMh_MS_Poke2,
ftMh_MS_FingerBeamStart,
ftMh_MS_FingerBeamLoop,
ftMh_MS_FingerBeamEnd,
ftMh_MS_FingerGun1,
ftMh_MS_FingerGun2,
ftMh_MS_FingerGun3,
ftMh_MS_BackAirplane1,
ftMh_MS_BackAirplane2,
ftMh_MS_BackAirplane3,
ftMh_MS_BackPunch,
ftMh_MS_BackCrush,
ftMh_MS_BackDisappear,
ftMh_MS_Wait1_1,
ftMh_MS_Grab,
ftMh_MS_Cancel,
ftMh_MS_Squeezing0,
ftMh_MS_Squeezing1,
ftMh_MS_Squeeze,
ftMh_MS_Throw,
ftMh_MS_Slam,
ftMh_MS_Fail,
ftMh_MS_TagCrush,
ftMh_MS_TagApplaud,
ftMh_MS_TagRockPaper,
ftMh_MS_TagGrab,
ftMh_MS_TagSqueeze,
ftMh_MS_TagFail,
ftMh_MS_TagCancel,
ftMh_MS_Wait1_2,
ftMh_MS_Wait2_1,
ftMh_MS_Count,
ftMh_MS_SelfCount = ftMh_MS_Count - ftCo_MS_Count,
} ftMasterhand_MotionState;
typedef enum ftMh_Submotion {
ftMh_SM_Wait1_0 = ftCo_SM_Count,
ftMh_SM_Wait2_0,
ftMh_SM_Entry,
ftMh_SM_Damage,
ftMh_SM_Damage2,
ftMh_SM_WaitSweep,
ftMh_SM_SweepLoop,
ftMh_SM_SweepWait,
ftMh_SM_Slap,
ftMh_SM_Walk2,
ftMh_SM_WalkLoop,
ftMh_SM_WalkWait,
ftMh_SM_WalkShoot,
ftMh_SM_Drill,
ftMh_SM_RockCrushUp,
ftMh_SM_RockCrushWait,
ftMh_SM_RockCrushDown,
ftMh_SM_PaperCrush,
ftMh_SM_Poke1,
ftMh_SM_Poke2,
ftMh_SM_FingerBeamStart,
ftMh_SM_FingerBeamLoop,
ftMh_SM_FingerBeamEnd,
ftMh_SM_FingerGun1,
ftMh_SM_FingerGun2,
ftMh_SM_FingerGun3,
ftMh_SM_BackAirplane1,
ftMh_SM_BackAirplane2,
ftMh_SM_BackAirplane3,
ftMh_SM_BackPunch,
ftMh_SM_BackCrush,
ftMh_SM_BackDisappear,
ftMh_SM_Wait1_1,
ftMh_SM_Grab,
ftMh_SM_Cancel,
ftMh_SM_Squeezing0,
ftMh_SM_Squeezing1,
ftMh_SM_Squeeze,
ftMh_SM_Throw,
ftMh_SM_Slam,
ftMh_SM_Fail,
ftMh_SM_TagCrush,
ftMh_SM_TagApplaud,
ftMh_SM_TagRockPaper,
ftMh_SM_TagGrab,
ftMh_SM_TagSqueeze,
ftMh_SM_TagFail,
ftMh_SM_TagCancel,
ftMh_SM_Wait1_2,
ftMh_SM_Wait2_1,
ftMh_SM_Count,
ftMh_SM_SelfCount = ftMh_SM_Count - ftCo_SM_Count,
} ftMh_Submotion;
struct ftMasterhand_FighterVars {
/* 0x222C */ HSD_GObj* x222C;
/* 0x2230 */ u32 x2230;
/* 0x2234 */ u32 x2234;
/* 0x2238 */ float x2238;
/* 0x223C */ float x223C;
/* 0x2240 */ Vec3 x2240_pos;
/* 0x224C */ u32 x224C;
/* 0x2250 */ s32 x2250;
/* 0x2254 */ s32 x2254;
/* 0x2258 */ s32 x2258;
};
struct ftMasterHand_SpecialAttrs {
s32 x0;
s32 x4;
s32 x8;
s32 xC;
s32 x10;
s32 x14;
s32 x18;
s32 x1C;
s32 x20;
s32 x24;
float x28;
float x2C;
Vec2 x30_pos2;
float x38;
float x3C;
Vec3 x40_pos;
float x4C;
Vec2 x50;
float x58;
float x5C;
float x60;
float x64;
float x68;
s32 x6C;
s32 x70;
s32 x74;
float x78;
s32 x7C;
float x80;
s32 x84;
Vec2 x88_pos;
s32 x90;
s32 x94;
float x98;
float x9C;
s32 xA0;
float xA4;
Vec2 xA8_pos;
s32 xB0;
s32 xB4;
float xB8;
Vec2 xBC_pos;
Vec2 xC4_pos;
Vec2 xCC_pos;
float xD4;
float xD8;
float xDC;
float xE0;
float xE4;
float xE8;
s32 xEC;
s32 xF0;
float xF4;
float xF8;
float xFC;
float x100;
float x104;
float x108;
float x10C;
Vec2 x110_pos;
Vec2 x118_pos;
float x120;
Vec2 x124_pos;
Vec2 x12C_pos;
Vec2 x134_pos;
Vec2 x13C_pos;
s32 x144;
s32 x148;
float x14C;
float x150;
float x154;
float x158;
float x15C;
s32 x160;
s32 x164;
s32 x168;
s32 x16C;
s32 x170;
s32 x174;
float x178;
};
union ftMasterHand_MotionVars {
struct ftMasterHand_Unk0Vars {
float x0;
HSD_GObjEvent x4;
int x8;
Vec3 xC;
float x18;
float x1C;
int x20;
float x24;
int x28;
int x2C;
int x30;
int x34;
int x38;
int x3C;
int x40;
int x44;
int x48;
int x4C;
float x50;
int x54;
Vec3 x58;
Vec3 x64;
int x70;
int x74;
int x78;
} unk0;
struct ftMasterHand_Unk4Vars {
ftMasterHand_UnkEnum0 x0;
int x4;
int x8;
} unk4;
struct ftMasterHand_Unk13Vars {
float x0;
float x4;
} unk13;
};
#define MELEE_FT_CHARA_FTMEWTWO_TYPES_H
struct ftMewtwo_FighterVars {
/* 0x222C */ HSD_GObj* x222C_disableGObj;
/* 0x2230 */ HSD_GObj*
x2230_shadowHeldGObj; // GObj of Shadow Ball while in Mewtwo's hands?
/* 0x2234 */ s32 x2234_shadowBallCharge; // Number of cycles Shadow Ball
// has been charged
/* 0x2238 */ HSD_GObj* x2238_shadowBallGObj;
/* 0x223C */ bool x223C_isConfusionBoost;
};
typedef struct ftMewtwoSpecialHi {
/// 0x2340 - Number of frames Teleport's zoom animation lasts for
s32 travelFrames;
float stickX;
float stickY;
/// 0x234C - ???
s32 unk4;
float velX;
float velY;
float groundVelX;
} ftMewtwoSpecialHi;
typedef struct ftMewtwoSpecialS {
/// 0x2340 - ???
u8 isConfusionReflect : 1;
} ftMewtwoSpecialS;
typedef struct ftMewtwoSpecialN {
bool isFull;
s32 x2344;
bool x2348;
s32 releaseLag;
/// 0x2350 - Charge level of Shadow Ball
float chargeLevel;
} ftMewtwoSpecialN;
typedef union ftMewtwo_MotionVars {
ftMewtwoSpecialN SpecialN;
ftMewtwoSpecialS SpecialS;
ftMewtwoSpecialHi SpecialHi;
} ftMewtwo_MotionVars;
typedef struct _ftMewtwoAttributes {
// NEUTRAL SPECIAL - SHADOW BALL (SpecialN/SpecialAirN)
float x0_MEWTWO_SHADOWBALL_CHARGE_CYCLES; // Number of frames each
// iteration cycle lasts?
float x4_MEWTWO_SHADOWBALL_GROUND_RECOIL_X;
float x8_MEWTWO_SHADOWBALL_AIR_RECOIL_X;
s32 xC_MEWTWO_SHADOWBALL_CHARGE_ITERATIONS; // Number of iterations
// required for full charge
s32 x10_MEWTWO_SHADOWBALL_RELEASE_LAG;
float x14_MEWTWO_SHADOWBALL_LANDING_LAG;
// SIDE SPECIAL - CONFUSION (SpecialS/SpecialAirS)
float x18_MEWTWO_CONFUSION_AIR_BOOST;
ReflectDesc x1C_MEWTWO_CONFUSION_REFLECTION;
// UP SPECIAL - TELEPORT (SpecialHi/SpecialAirHi)
float x40_MEWTWO_TELEPORT_VEL_DIV_X;
float x44_MEWTWO_TELEPORT_VEL_DIV_Y;
float x48_MEWTWO_TELEPORT_GRAVITY;
float x4C_MEWTWO_TELEPORT_TERMINAL_VELOCITY;
s32 x50_MEWTWO_TELEPORT_DURATION;
float x54_MEWTWO_TELEPORT_UNK2;
float x58_MEWTWO_TELEPORT_STICK_RANGE_MIN;
float x5C_MEWTWO_TELEPORT_MOMENTUM;
float x60_MEWTWO_TELEPORT_MOMENTUM_ADD;
float x64_MEWTWO_TELEPORT_DRIFT;
s32 x68_MEWTWO_TELEPORT_ANGLE_CLAMP; // Clamp teleport travel if surface
// angle is greater than this value
float x6C_MEWTWO_TELEPORT_MOMENTUM_END_MUL;
float x70_MEWTWO_TELEPORT_FREEFALL_MOBILITY;
float x74_MEWTWO_TELEPORT_LANDING_LAG;
// DOWN SPECIAL - DISABLE (SpecialLw/SpecialAirLw)
float x78_MEWTWO_DISABLE_GRAVITY;
float x7C_MEWTWO_DISABLE_TERMINAL_VELOCITY;
float x80_MEWTWO_DISABLE_OFFSET_X;
float x84_MEWTWO_DISABLE_OFFSET_Y;
} ftMewtwoAttributes;
#define MELEE_FT_CHARA_FTPEACH_TYPES_H
#define MELEE_FT_CHARA_FTPEACH_FORWARD_H
static MotionFlags const ftPe_MF_Base = Ft_MF_SkipItemVis | Ft_MF_FreezeState;
static MotionFlags const ftPe_MF_FloatAttack =
ftPe_MF_Base | Ft_MF_SkipParasol;
static MotionFlags const ftPe_MF_FloatAttackAirN =
ftPe_MF_FloatAttack | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipHit;
static MotionFlags const ftPe_MF_Move_14 =
ftPe_MF_FloatAttackAirN | Ft_MF_KeepFastFall;
static MotionFlags const ftPe_MF_FloatAttackAirB =
ftPe_MF_FloatAttackAirN | Ft_MF_KeepGfx;
static MotionFlags const ftPe_MF_FloatAttackAirHi =
ftPe_MF_FloatAttackAirN | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftPe_MF_Move_17 =
ftPe_MF_FloatAttack | Ft_MF_SkipModel;
static MotionFlags const ftPe_MF_AttackS4 = ftPe_MF_Base | Ft_MF_KeepFastFall |
Ft_MF_SkipHit | Ft_MF_KeepSfx |
Ft_MF_SkipRumble;
static MotionFlags const ftPe_MF_Special =
ftPe_MF_Base | Ft_MF_SkipModel | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftPe_MF_SpecialN =
ftPe_MF_Special | Ft_MF_KeepFastFall;
static MotionFlags const ftPe_MF_SpecialHi = ftPe_MF_SpecialN | Ft_MF_KeepGfx;
static MotionFlags const ftPe_MF_SpecialLw =
ftPe_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftPe_MF_SpecialS =
ftPe_MF_Special | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftPe_MF_SpecialAirN =
ftPe_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftPe_MF_SpecialAirHi =
ftPe_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftPe_MF_SpecialAirS =
ftPe_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftPe_MF_ParasolOpen =
Ft_MF_SkipHit | Ft_MF_SkipModel | Ft_MF_Unk06 | Ft_MF_SkipItemVis |
Ft_MF_SkipModelPartVis;
static MotionFlags const ftPe_MF_ParasolFallSpecial =
ftPe_MF_ParasolOpen | Ft_MF_Unk19;
typedef enum ftPeach_MotionState {
ftPe_MS_Float = ftCo_MS_Count,
ftPe_MS_FloatFallF,
ftPe_MS_FloatFallB,
ftPe_MS_FloatAttackAirN,
ftPe_MS_FloatAttackAirF,
ftPe_MS_FloatAttackAirB,
ftPe_MS_FloatAttackAirHi,
ftPe_MS_FloatAttackAirLw,
ftPe_MS_AttackS4Club,
ftPe_MS_AttackS4Pan,
ftPe_MS_AttackS4Racket,
ftPe_MS_SpecialLw,
ftPe_MS_SpecialAirLw,
ftPe_MS_SpecialSStart,
ftPe_MS_SpecialSEnd,
ftPe_MS_SpecialSJump,
ftPe_MS_SpecialAirSStart,
ftPe_MS_SpecialAirSEnd_0,
ftPe_MS_SpecialAirSEnd_1,
ftPe_MS_SpecialAirSJump,
ftPe_MS_SpecialHiStart,
ftPe_MS_SpecialHiEnd,
ftPe_MS_SpecialAirHiStart,
ftPe_MS_SpecialAirHiEnd,
ftPe_MS_SpecialN,
ftPe_MS_SpecialNHit,
ftPe_MS_SpecialAirN,
ftPe_MS_SpecialAirNHit,
ftPe_MS_ItemParasolOpen,
ftPe_MS_ItemParasolFall,
ftPe_MS_Count,
ftPe_MS_SelfCount = ftPe_MS_Count - ftCo_MS_Count,
} ftPeach_MotionState;
typedef enum ftPe_Submotion {
ftPe_SM_Float = ftCo_SM_Count,
ftPe_SM_FloatFallF,
ftPe_SM_FloatFallB,
ftPe_SM_AttackS4_0,
ftPe_SM_AttackS4_1,
ftPe_SM_AttackS4_2,
ftPe_SM_SpecialLw,
ftPe_SM_SpecialSStart,
ftPe_SM_SpecialSEnd,
ftPe_SM_SpecialSJump,
ftPe_SM_SpecialAirSStart,
ftPe_SM_SpecialAirSEnd_0,
ftPe_SM_SpecialAirSEnd_1,
ftPe_SM_SpecialHiStart,
ftPe_SM_SpecialHiEnd,
ftPe_SM_SpecialAirHiStart,
ftPe_SM_SpecialAirHiEnd,
ftPe_SM_SpecialN,
ftPe_SM_SpecialNHit,
ftPe_SM_SpecialAirN,
ftPe_SM_SpecialAirNHit,
ftPe_SM_ItemParasolOpen,
ftPe_SM_ItemParasolFall,
ftPe_SM_Count,
ftPe_SM_SelfCount = ftPe_SM_Count - ftCo_SM_Count,
} ftPe_Submotion;
struct ftPeach_FighterVars {
/* fp+222C */ bool has_float;
/* fp+2230 */ float x4;
/* fp+2234 */ FtMotionId attacks4_motion_id;
/* fp+2238 */ HSD_GObj* unk_item_gobj;
/* fp+223C */ HSD_GObj* parasol_gobj;
/* fp+2240 */ bool specialairn_used;
/* fp+2244 */ HSD_GObj* toad_gobj;
/* fp+2248 */ HSD_GObj* veg_gobj;
};
typedef struct ftPe_DatAttrs {
/* +0 */ float floatfallf_anim_start;
/* +4 */ float floatfallb_anim_start;
/* +8 */ float floatfall_anim_start_offset;
/* +C */ float xC;
/* +10 */ int speciallw_item_table_count;
/* +14 */ int x14;
/* +1C */ struct ftPe_ItemChance {
/* +0 */ int randi_max;
/* +4 */ ItemKind kind;
} speciallw_item_table[3];
/* +30 */ int x30;
/* +34 */ float x34;
/* +38 */ float x38;
/* +3C */ float x3C;
/* +40 */ float x40;
/* +44 */ float specials_vel_x;
/* +48 */ float specials_smash_vel_x;
/* +4C */ float specials_vel_y;
/* +50 */ float x50;
/* +54 */ float x54;
/* +58 */ float x58;
/* +5C */ float x5C;
/* +60 */ float specials_end_vel_x;
/* +64 */ float specials_end_vel_y;
/* +68 */ float x68;
/* +6C */ float x6C;
/* +70 */ float x70;
/* +74 */ float x74;
/* +78 */ float x78;
/* +7C */ float x7C;
/* +80 */ float x80;
/* +84 */ float x84;
/* +88 */ float x88;
/* +8C */ float x8C;
/* +90 */ int x90;
/* +94 */ float specialairn_vel_x_div;
/* +98 */ float x98;
/* +9C */ float specialairn_vel_y;
/* +A0 */ float xA0;
/* +A4 */ float xA4;
/* +A8 */ float xA8;
/* +AC */ AbsorbDesc xAC;
} ftPe_DatAttrs;
union ftPe_MotionVars {
struct ftPe_FloatAttackVars {
/* fp+2340 */ bool x0;
} floatattack;
struct ftPe_SpecialSVars {
/* fp+2340 */ bool x0;
} specials;
struct ftPe_SpecialHiVars {
/* fp+2340 */ ItemKind kind;
} specialhi;
struct ftPe_SpecialNVars {
/* fp+2340 */ int facing_dir;
} specialn;
};
#define MELEE_FT_CHARA_FTPIKACHU_TYPES_H
struct ftPikachu_FighterVars {
char filler0[0xF8];
};
typedef struct _ftPikachuAttributes {
float x0;
float x4;
float x8;
float xC;
float x10;
u32 x14;
u32 x18;
float x1C;
float x20;
float x24;
float x28;
float x2C;
float x30;
float x34;
float x38;
float x3C;
float x40;
float x44;
float x48;
float x4C;
float x50;
float x54;
float x58;
int x5C;
s32 x60; // up b zip duration
float x64;
float x68; // up b angle offset 1
Vec3 x6C_scale;
float x78; // up b angle offset 2
Vec3 x7C_scale;
float x88;
float x8C; // up b minimum stick magnitude
float x90; // up b zip stick magnitude to velocity slope
float x94; // up b zip stick magnitude to velocity intercept
float x98; // second zip velocity decay
float x9C;
s32 xA0;
float xA4;
s32 xA8; // minimum stick angle difference between two up b zips
float xAC;
float xB0;
float xB4;
float xB8;
float xBC;
float xC0;
float xC4;
float xC8;
float xCC;
float xD0;
s32 xD4;
s32 xD8;
u32 xDC;
float height_attributes[6];
} ftPikachuAttributes;
union ftPikachu_MotionVars {
/// @todo Proper state name.
struct ftPikachu_State2Vars {
s32 x0;
} unk2;
/// @todo Proper state name.
struct ftPikachu_State3Vars {
s32 x0;
} unk3;
struct ftPikachu_SpecialHiVars {
int x0;
s32 x4;
s32 x8;
int xC;
Vec2 x10;
s32 x18;
Vec2 x1C;
float x24;
} specialhi;
struct ftPikachu_SpecialLwVars {
Item_GObj* x0;
bool x4;
} speciallw;
};
#define MELEE_FT_CHARA_FTPOPO_TYPES_H
struct ftPopo_FighterVars {
/* 0x222C */ Item_GObj* x222C;
/* 0x2230:0 */ u8 x2230_b0 : 1;
/* 0x2231 */ u8 filler_x2231[3];
/* 0x2234 */ u32 x2234;
/* 0x2238 */ u32 x2238;
/* 0x223C */ u32 x223C;
/* 0x2240 */ u32 x2240;
/* 0x2244 */ u32 x2244;
/* 0x2248 */ u32 x2248;
/* 0x224C */ u32 x224C;
/* 0x2250 */ float x2250;
};
typedef struct ftIceClimberAttributes {
float x0;
float x4;
float x8;
float xC;
float x10;
float x14;
float x18;
int x1C;
float x20;
float x24;
float x28;
float x2C;
u8 _30[0x68 - 0x30];
int x68;
u8 _6C[0xC4 - 0x6C];
float xC4;
float xC8;
u8 _CC[0x90];
} ftIceClimberAttributes;
struct { int x[1 - 2 * !(sizeof(ftIceClimberAttributes) == 0x15C)]; };;
union ftPp_MotionVars {
struct ftPp_SpecialSVars {
/* fp+2340 */ float x0;
/* fp+2344 */ int x4;
/* fp+2348 */ int x8;
/* fp+234C */ int xC;
/* fp+2350 */ int x10;
/* fp+2354 */ int x14;
/* fp+2358 */ M2C_UNK x18;
/* fp+235C */ float x1C;
} specials;
};
#define MELEE_FT_CHARA_FTPURIN_TYPES_H
struct ftPurin_FighterVars {
/* 0x222C */ u32 x222C;
/* 0x2230 */ Vec3 x2230;
/* 0x223C */ HSD_JObj* x223C;
/* 0x2240 */ u32 x2240;
/* 0x2244 */ void* x2244;
/* 0x2248 */ u32 x2248;
};
typedef union ftPurin_MotionVars {
struct ftPurin_SpecialHiVars {
bool x0;
} specialhi;
struct ftPurin_SpecialNVars {
/* fp+2340 */ int x0;
/* fp+2344 */ M2C_UNK x4;
/* fp+2348 */ M2C_UNK x8;
/* fp+234C */ M2C_UNK xC;
/* fp+2350 */ u8 _10[0x1C - 0x10];
/* fp+235C */ float x1C;
/* fp+2360 */ float facing_dir;
/* fp+2364 */ u8 _24[0x34 - 0x24];
/* fp+2374 */ Vec3 x34;
} specialn;
} ftPurin_MotionVars;
typedef struct _ftPurinAttributes {
float x0;
float x4;
float x8;
float xC;
float x10;
s32 x14;
float x18;
s32 x1C;
s32 x20;
s32 x24;
s32 x28;
s32 x2C;
s32 x30;
s32 x34;
s32 x38;
float x3C;
float x40;
float x44;
u8 _48[0x88 - 0x48];
Vec2 specialn_vel;
u8 _90[0xDC - 0x90];
float xDC;
float xE0;
float xE4;
M2C_UNK xE8;
M2C_UNK xEC;
float xF0;
float xF4;
u8 _F8[0x100 - 0xF8];
} ftPurinAttributes;
struct { int x[1 - 2 * !(sizeof(ftPurinAttributes) == 0x100)]; };;
#define MELEE_FT_CHARA_FTSAMUS_TYPES_H
struct ftSamus_FighterVars {
/* 0x222C */ Item_GObj* x222C;
/* 0x2230 */ s32 x2230;
/* 0x2234 */ u32 x2234;
/* 0x2238 */ u32 x2238;
/* 0x223C */ Item_GObj* x223C;
/* 0x2240 */ u8 x2240;
/* 0x2241 */ u8 x2241;
/* 0x2242 */ u8 x2242;
/* 0x2243 */ u8 x2243;
/* 0x2244 */ u32 x2244;
/* 0x2248 */ u32 x2248;
};
typedef struct _ftSamusAttributes {
/* +0 */ float x0;
/* +4 */ float x4;
/* +8 */ float x8;
/* +C */ float xC;
/* +10 */ float x10;
/* +14 */ float x14;
/* +18 */ float x18;
/* +1C */ float x1C;
/* +20 */ int x20;
/* +24 */ float x24;
/* +28 */ float x28;
/* +2C */ float x2C;
/* +30 */ float x30;
/* +34 */ float x34;
/* +38 */ float x38;
/* +3C */ float x3C;
/* +40 */ float x40;
/* +44 */ float x44;
/* +48 */ float x48;
/* +4C */ float x4C;
/* +50 */ float x50;
/* +54 */ float x54;
/* +58 */ float x58;
/* +5C */ float x5C;
/* +60 */ float x60;
/* +64 */ float x64;
/* +68 */ float x68;
/* +6C */ float x6C;
/* +70 */ float x70;
/* +74 */ Vec3 x74_vec;
/* +80 */ float x80;
/* +84 */ ftCollisionBox height_attributes;
/* +9C */ M2C_UNK x9C;
/* +A0 */ M2C_UNK xA0;
/* +A4 */ M2C_UNK xA4;
/* +A8 */ M2C_UNK xA8;
/* +AC */ M2C_UNK xAC;
/* +B0 */ M2C_UNK xB0;
/* +B4 */ M2C_UNK xB4;
/* +B8 */ M2C_UNK xB8;
/* +BC */ int xBC;
/* +C0 */ int xC0;
/* +C4 */ int xC4;
/* +C8 */ int xC8;
/* +CC */ M2C_UNK xCC;
/* +D0 */ M2C_UNK xD0;
} ftSs_DatAttrs;
/// maybe Samus grapple?
struct UNK_SAMUS_S1 {
HSD_Joint* x0_joint;
HSD_AnimJoint** x4_anim_joints;
HSD_AnimJoint* x8_anim_joint;
HSD_MatAnimJoint* xC_matanim_joint;
};
union ftSamus_MotionVars {
/// @todo Proper state name.
struct ftSamus_State2Vars {
s32 x0;
} unk2;
/// @todo Proper state name.
struct ftSamus_State3Vars {
s32 x0;
s32 x4;
float x8;
} unk3;
/// @todo Proper state name.
struct ftSamus_State5Vars {
s32 x0;
} unk5;
/// @todo Proper state name.
struct ftSamus_State6Vars {
s32 x0;
} unk6;
};
#define MELEE_FT_CHARA_FTSANDBAG_TYPES_H
struct ftSandbag_FighterVars {
char filler0[0xF8];
};
#define MELEE_FT_CHARA_FTSEAK_TYPES_H
struct ftSeak_FighterVars {
/* fp+222C */ int x0;
/* fp+2230 */ Item_GObj* x4;
/* fp+2234 */ HSD_GObj* x8;
/* fp+2238 */ Vec3 xC[4];
/* fp+2268 */ Vec3 x3C[4];
/* fp+2298 */ Vec3 lstick_delta;
};
/// @sz{74}
typedef struct _ftSeakAttributes { // x2D4 (fp->dat_attrs)
float x0;
float x4;
float x8;
float xC;
float x10;
float x14;
float x18;
float x1C;
float x20;
float x24;
float x28;
float self_vel_y;
s32 x30;
s32 x34;
s32 x38;
s32 x3C;
s32 x40;
s32 x44;
s32 x48;
s32 x4C;
u8 data_filler_1[0x24];
} ftSeakAttributes;
typedef struct itChainSegment {
float x00;
float x04;
float x08;
float x0C;
float x10;
float x14;
float x18;
float x1C;
float x20;
float x24;
float x28;
float x2C;
float x30;
float x34;
float x38;
float x3C;
float x40;
float x44;
float x48;
float x4C;
float x50;
} itChainSegment;
union ftSeak_MotionVars {
struct ftSeak_SpecialNVars {
enum_t x0;
bool x4;
s32 x8;
s32 xC;
s32 x10;
s32 x14;
s32 x18;
s32 x1C;
s32 x20;
s32 x24;
s32 x28;
s32 x2C;
} specialn;
struct ftSeak_SpecialSVars {
s32 x0;
s32 x4;
s32 x8;
s32 xC;
float x10;
float x14;
float x18;
s32 x1C;
s32 x20;
s32 x24;
s32 x28;
s32 x2C;
} specials;
struct ftSeakSpecialHi {
s32 x0;
s32 x4;
s32 x8;
s32 xC;
s32 x10;
s32 x14;
s32 x18;
s32 x1C;
s32 x20;
s32 x24;
s32 x28;
s32 x2C;
} specialhi;
};
#define MELEE_FT_CHARA_FTYOSHI_TYPES_H
struct ftYoshi_FighterVars {
/* 0x222C */ u32 x222C;
/* 0x2230 */ u32 x2230;
/* 0x2234 */ u32 x2234;
/* 0x2238 */ u32 x2238;
};
typedef struct _ftYoshiAttributes {
float x0;
float x4;
float x8;
float xC;
float x10;
float x14;
float x18;
float x1C;
float x20;
float x24;
s32 x28;
s32 x2C;
u8 data_filler1[0xEF];
float x120;
u8 data_filler2[0x14];
} ftYoshiAttributes;
struct S_UNK_YOSHI2 {
s32 x0;
s32 x4;
s32 x8_end_index;
u8* xC_start_index;
};
struct S_UNK_YOSHI1 {
s32 x0;
struct S_UNK_YOSHI2* unk_struct;
};
union ftYoshi_MotionVars {
/// @todo Proper state name.
struct ftYoshi_State2Vars {
float x0;
M2C_UNK x4;
M2C_UNK x8;
bool xC;
M2C_UNK x10;
float x14;
float x18;
} unk2;
struct ftYoshi_SpecialNVars {
/* fp+2340 */ int x0_b0 : 1;
} specialn;
};
#define MELEE_FT_CHARA_FTZAKOBOY_TYPES_H
struct ftZakoBoy_FighterVars {
char filler0[0xF8];
};
typedef struct _ftZakoboyAttributes {
s32 x0;
} ftZakoboyAttributes;
#define MELEE_FT_CHARA_FTZELDA_TYPES_H
struct ftZelda_FighterVars {
/* 0x222C */ HSD_GObj* x222C;
};
typedef struct ftZelda_DatAttrs {
float x0;
s32 x4; // Type confirmed
float x8;
float xC;
s32 x10; // Type confirmed
s32 x14; // Type confirmed
s32 x18; // Type confirmed
s32 x1C; // Type confirmed
float x20; // Type confirmed
float x24; // Type confirmed
s32 x28;
float x2C; // Type confirmed
s32 x30;
float x34; // Type confirmed
float x38; // Type confirmed
float x3C; // Type confirmed
float x40; // Type confirmed
float x44; // Type confirmed
s32 x48; // Type confirmed
float x4C; // Type confirmed
float x50; // Type confirmed
float x54;
float x58;
float x5C;
s32 x60; // Type confirmed
float x64; // Type confirmed
float x68; // Type confirmed
float x6C; // Type confirmed
float x70; // Type confirmed
float x74; // Type confirmed
float x78; // Type confirmed
float x7C; // Type confirmed
float x80; // Type confirmed
ReflectDesc x84;
} ftZelda_DatAttrs;
union ftZelda_MotionVars {
struct ftZelda_SpecialHiVars {
int x0;
Vec2 x4;
int xC;
Vec2 x10;
float x18;
} specialhi;
struct ftZelda_SpecialNVars {
int x0;
} specialn;
struct ftZelda_SpecialSVars {
int x0;
int x4;
int x8;
int xC;
} specials;
};
#define MELEE_GR_TYPES_H
#define MELEE_GR_FORWARD_H
typedef struct grDynamicAttr_UnkStruct grDynamicAttr_UnkStruct;
typedef struct Ground Ground;
typedef struct StageInfo StageInfo;
typedef struct UnkArchiveStruct UnkArchiveStruct;
typedef struct UnkBgmStruct UnkBgmStruct;
typedef struct UnkStage6B0 UnkStage6B0;
typedef struct UnkStageDatInternal UnkStageDatInternal;
typedef struct UnkStageDat UnkStageDat;
typedef struct Ground_GObj Ground_GObj;
struct Ground_GObj {
/* +0 */ u16 classifier;
/* +2 */ u8 p_link;
/* +3 */ u8 gx_link;
/* +4 */ u8 p_priority;
/* +5 */ u8 render_priority;
/* +6 */ u8 obj_kind;
/* +7 */ u8 user_data_kind;
/* +8 */ Ground_GObj* next;
/* +C */ Ground_GObj* prev;
/* +10 */ Ground_GObj* next_gx;
/* +14 */ Ground_GObj* prev_gx;
/* +18 */ HSD_GObjProc* proc;
/* +1C */ void (*rendered)(Ground_GObj* gobj, s32 code);
/* +20 */ u64 gxlink_prios;
/* +28 */ HSD_JObj* hsd_obj;
/* +2C */ Ground* user_data;
/* +30 */ void (*user_data_remove_func)(Ground* data);
/* +34 */ void* x34_unk;
};
/// @todo Finish values, use @c PascalCase
typedef enum InternalStageId {
InternalStageID_Unk00,
InternalStageID_Unk01,
/// Princess Peach's Castle
CASTLE,
/// Rainbow Cruise
RCRUISE,
/// Kongo Jungle
KONGO,
/// Jungle Japes
GARDEN,
/// Great Bay
GREATBAY,
/// Hyrule Temple
SHRINE,
/// Brinstar
ZEBES,
/// Brinstar Depths
KRAID,
/// Yoshi's Story
STORY,
/// Yoshi's Island
YORSTER,
/// Fountain of Dreams
IZUMI,
/// Green Greens
GREENS,
/// Corneria
CORNERIA,
/// Venom
VENOM,
/// Pokemon Stadium
PSTADIUM,
/// Poke Floats
PURA,
/// Mute City
MUTECITY,
/// Big Blue
BIGBLUE,
/// Onett
ONETT,
/// Fourside
FOURSIDE,
/// Icicle Mountain
ICEMTN,
InternalStageID_Unk23,
/// Mushroom Kingdom
INISHIE1,
/// Mushroom Kingdom II
INISHIE2,
InternalStageID_Unk26,
/// Flat Zone
FLATZONE,
/// Dream Land
OLDPUPUPU,
/// Yoshi's Island (64)
OLDYOSHI,
/// Kongo Jungle (64)
OLDKONGO,
STAGEKIND_UNK31,
STAGEKIND_UNK32,
STAGEKIND_UNK33,
STAGEKIND_UNK34,
STAGEKIND_UNK35,
STAGEKIND_UNK36,
STAGEKIND_UNK37,
STAGEKIND_UNK38,
STAGEKIND_UNK39,
} InternalStageId;
#define MELEE_SC_FORWARD_H
typedef struct StaticModelDesc StaticModelDesc;
typedef struct DynamicModelDesc DynamicModelDesc;
typedef struct SceneDesc SceneDesc;
typedef struct StageBlastZone {
f32 left; // 0x74
f32 right; // 0x78
f32 top; // 0x7C
f32 bottom; // 0x80
} StageBlastZone;
/// @remarks This struct is based in part on the datasheet however the info
/// there is likely incorrect as this doesn't quite match @c
/// grGroundParam.
typedef struct StageCameraInfo {
StageBlastZone cam_bounds; // 0x00
f32 cam_x_offset; // 0x10
f32 cam_y_offset; // 0x14
f32 cam_vertical_tilt; // 0x18
f32 cam_pan_degrees; // 0x1C
f32 x20; // 0x20
f32 x24; // 0x24
f32 cam_track_ratio; // 0x28
f32 cam_fixed_zoom; // 0x2C
f32 cam_track_smooth; // 0x30
f32 cam_zoom_rate; // 0x34
f32 cam_max_depth; // 0x38
f32 x3C; // 0x3C
f32 pausecam_zpos_min; // 0x40
f32 pausecam_zpos_init; // 0x44
f32 pausecam_zpos_max; // 0x48
f32 cam_angle_up; // 0x4C
f32 cam_angle_down; // 0x50
f32 cam_angle_left; // 0x54
f32 cam_angle_right; // 0x58
Vec3 fixed_cam_pos; // 0x5C - 0x64
f32 fixed_cam_fov; // 0x68
f32 fixed_cam_vert_angle; // 0x6C
f32 fixed_cam_horz_angle; // 0x70
} StageCameraInfo;
struct StageInfo {
StageCameraInfo cam_info; // 0x00 - 0x70
StageBlastZone blast_zone; // 0x74 - 0x80
u32 x84; // 0x84
InternalStageId internal_stage_id; // 0x88
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
} unk8C;
s32 x90;
s32 x94;
s32 x98;
s32 x9C;
u8 xA0[4];
u8 xA4_pad[0x12C - 0xA4];
HSD_GObj* x12C;
Vec3 x130, x13C, x148, x154, x160, x16C;
DynamicsDesc* (*x178)(int);
bool (*x17C)(Vec3*, int, HSD_JObj*);
HSD_GObj* x180[4];
u8 x190_pad[0x280 - 0x190];
HSD_JObj* x280[261];
void* x694[4];
void* x6A4;
/* +6A8 */ struct {
s32 unk0;
Article* unk4;
}** itemdata;
/* +6AC */ void* coll_data;
/* +6B0 */ UnkStage6B0* param;
/* +6B4 */ M2C_UNK** ald_yaku_all;
/* +6B8 */ void* map_ptcl;
/* +6BC */ void* map_texg;
/* +6C0 */ void* yakumono_param;
/* +6C4 */ void* map_plit;
/* +6C8 */ void* x6C8;
/* +6CC */ DynamicModelDesc* quake_model_set;
s16 x6D0;
s16 x6D2;
s16 x6D4;
s16 x6D6;
s32 x6D8;
s16 x6DC;
s16 x6DE;
f32 x6E0;
int x6E4[2];
u8 x6EC_pad[0x708 - 0x6EC];
s16 x708;
f32 x70C;
f32 x710;
s32 x714;
f32 x718;
f32 x71C;
s32 x720;
f32 x724;
f32 x728;
HSD_GObj* x72C;
Vec3 x730;
f32 x73C;
s32 x740;
u8 x744_pad[0x748 - 0x744];
};
typedef struct StageCallbacks {
/* +0 */ void (*callback0)(HSD_GObj*);
/* +4 */ bool (*callback1)(HSD_GObj*);
/* +8 */ void (*callback2)(HSD_GObj*);
/* +C */ void (*callback3)(HSD_GObj*);
/* +10 */ union {
/* +10 */ u32 flags;
struct {
/* +10:0 */ u8 flags_b0 : 1;
/* +10:1 */ u8 flags_b1 : 1;
/* +10:2 */ u8 flags_b2 : 1;
/* +10:3 */ u8 flags_b3 : 1;
/* +10:4 */ u8 flags_b4 : 1;
/* +10:5 */ u8 flags_b5 : 1;
/* +10:6 */ u8 flags_b6 : 1;
/* +10:7 */ u8 flags_b7 : 1;
};
};
} StageCallbacks;
typedef struct StageData {
u32 flags1;
StageCallbacks* callbacks;
char* data1;
void (*callback0)(void);
void (*callback1)(int);
void (*callback2)(void);
void (*callback3)(void);
bool (*callback4)(void);
DynamicsDesc* (*callback5)(enum_t);
bool (*callback6)(Vec3*, int, HSD_JObj*);
u32 flags2;
S16Vec3* x2C;
size_t x30; // size of x2C array
} StageData;
typedef struct StructPairWithStageID {
s32 stage_id;
s32 list_idx;
} StructPairWithStageID;
struct GroundVars_unk {
int xC4;
int xC8;
int xCC;
int xD0;
int xD4;
int xD8;
float xDC;
u8 xE0_pad[0x218 - 0xE0];
};
struct GroundVars_izumi {
HSD_TObj* xC4;
HSD_GObj* xC8;
HSD_GObj* xCC;
HSD_JObj* xD0;
HSD_JObj* xD4;
int xD8;
float xDC;
u8 xE0_pad[0x218 - 0xE0];
};
struct GroundVars_izumi2 {
HSD_JObj* xC4;
HSD_JObj* xC8;
int xCC;
int xD0;
int xD4;
int xD8;
float xDC;
u8 xE0_pad[0x218 - 0xE0];
};
struct GroundVars_izumi3 {
short xC4;
short xC6;
short xC8;
short xCA;
HSD_JObj* xCC;
float xD0;
float xD4;
float xD8;
float xDC;
u8 xE0_pad[0x218 - 0xE0];
};
struct GroundVars_flatzone {
u8 xC4;
u8 xC5;
u8 xC6;
u8 xC7;
s16 xC8;
s16 xCA;
s16 xCC;
s16 xCE;
s32 xD0;
s32 xD4;
};
struct grDynamicAttr_UnkStruct {
grDynamicAttr_UnkStruct* next;
s32 unk4;
Vec3 unk8;
s32 unk14;
f32 unk18;
s32 unk1C;
u8 x0_fill[0x24 - 0x20];
};
struct GroundVars_flatzone2 {
s32 xC4;
f32 xC8;
grDynamicAttr_UnkStruct* xCC;
s32 xD0;
s32 xD4;
};
struct grKongo_GroundVars {
/* gp+C4 */ f32 xC4;
/* gp+C8 */ f32 xC8;
/* gp+CC */ f32 xCC;
/* gp+D0 */ union {
struct {
void* keep;
} taru;
} u;
/* gp+D4 */ f32 xD4;
/* gp+D8 */ f32 xD8;
/* gp+DC */ HSD_JObj* xDC;
/* gp+E0 */ HSD_JObj* xE0;
/* gp+E4 */ s16 xE4;
/* gp+E6 */ s16 xE6;
/* gp+E8 */ f32 xE8;
u8 xEC_pad[0x218 - 0xEC];
};
struct grKongo_GroundVars2 {
HSD_Spline* xC4;
f32 xC8;
s16 xCC;
s16 xCE;
f32 xD0;
f32 xD4;
f32 xD8;
f32 xDC;
f32 xE0;
f32 xE4;
f32 xE8;
u8 xE0_pad[0x218 - 0xE0];
};
// @todo: Investigate if these extra structs could be
// shared among stages/other things as more are decompiled.
struct grKongo_GroundVars3 {
/* gp+C4 */ s16 xC4;
/* gp+C6 */ s16 xC6;
/* gp+C8 */ s16 xC8;
/* gp+CA */ s16 xCA;
HSD_JObj* xCC;
HSD_JObj* xD0;
f32 xD4;
f32 xD8;
f32 xDC;
f32 xE0;
f32 xE4;
f32 xE8;
u8 xE0_pad[0x218 - 0xE0];
};
struct grCorneria_GroundVars {
/* +0 gp+C4 */ char pad_0[0x68];
/* +68 gp+12C */ HSD_JObj* x68;
};
struct grIceMt_GroundVars {
/* +0 gp+C4 */ char pad_0[0x14];
/* +0 gp+D8 */ s16 xD8;
};
struct Ground {
int x0; // 0x0
HSD_GObj* gobj; // 0x4
HSD_GObjEvent x8_callback;
HSD_GObjEvent xC_callback;
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
} x10_flags;
struct {
u8 b012 : 3;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
} x11_flags;
InternalStageId map_id; // 0x14
HSD_GObj* x18; // 0x18
HSD_GObjEvent x1C_callback;
int x20[8];
char pad_40[0xC4 - 0x40];
union GroundVars { // how big should this be?
char pad_0[0x218 - 0xC4];
struct GroundVars_unk unk;
struct GroundVars_flatzone flatzone;
struct GroundVars_flatzone2 flatzone2;
struct GroundVars_izumi izumi;
struct GroundVars_izumi2 izumi2;
struct GroundVars_izumi3 izumi3;
struct grKongo_GroundVars kongo;
struct grKongo_GroundVars2 kongo2;
struct grKongo_GroundVars3 kongo3;
struct grCorneria_GroundVars corneria;
struct grIceMt_GroundVars icemt;
} gv;
};
// Appears to be related to stage audio
struct UnkBgmStruct {
s32 x0;
s32 x4;
s32 x8;
u32 xC;
u32 x10;
s16 x14;
s16 x16;
s16 x18;
u8 pad[0x64 - 0x1A];
};
// TODO: what is this struct?
struct UnkStage6B0 {
f32 x0;
s16 x4;
u8 x6_pad[2];
s16 x8;
s16 xA;
s32 xC;
s32 x10;
s32 x14;
f32 x18;
f32 x1C, x20, x24, x28;
u8 x2C_pad[0x2E - 0x2C];
s16 x2E;
s32 x30;
s32 x34;
s32 x38;
f32 x3C, x40, x44, x48;
bool x4C_fixed_cam;
f32 x50, x54, x58, x5C, x60, x64;
s16 x68;
u8 x6C_pad[0xB0 - 0x6A];
UnkBgmStruct* xB0;
s32 xB4; // number of entries in xB0
s32 xB8;
s32 xBC;
s32 xC0;
s32 xC4;
s32 xC8;
s32 xCC;
s32 xD0;
s32 xD4;
s32 xD8;
};
struct UnkStageDatInternal {
u8 x0_fill[0x4];
u32 unk4; // flags
};
struct UnkStageDat_x8_t {
/* +0 */ struct HSD_Joint* unk0;
/* +4 */ u8 _4[0x10 - 0x4];
/* +10 */ HSD_CameraDescPerspective* x10;
/* +14 */ M2C_UNK x14;
/* +18 */ M2C_UNK x18;
/* +1C */ HSD_FogDesc* x1C;
/* +20 */ S16Vec3* unk20;
/* +24 */ s32 unk24; // size of unk20 array
/* +28 */ M2C_UNK x28;
/* +2C */ s16* x2C;
/* +30 */ int x30;
};
struct UnkStageDat {
void* unk0;
s32 unk4;
struct UnkStageDat_x8_t* unk8;
s32 unkC;
HSD_Spline** unk10;
s32 unk14;
u8 x18_fill[0x20 - 0x18];
void* unk20;
s32 unk24;
UnkStageDatInternal** unk28;
s32 unk2C; // size
};
struct { int x[1 - 2 * !(sizeof(struct UnkStageDat_x8_t) == 0x34)]; };;
struct UnkArchiveStruct {
HSD_Archive* unk0;
UnkStageDat* unk4;
s32 unk8;
};
#define FTPART_INVALID 0xFF
// Table in PlCo.dat
typedef struct _FighterPartsTable {
u8* joint_to_part;
u8* part_to_joint;
u32 parts_num;
} FighterPartsTable;
// Points to data in PlCo.dat
struct ftCommonData {
/* +0 */ float x0;
/* +4 */ float x4;
/* +8 */ float x8_someStickThreshold;
/* +C */ float xC;
/* +10 */ float x10;
/* +14 */ float x14;
/* +18 */ float x18;
/* +1C */ int x1C;
/* +20 */ float x20;
/* +24 */ float x24;
/* +28 */ float x28;
/* +2C */ float x2C;
/* +30 */ float x30;
/* +34 */ M2C_UNK x34;
/* +38 */ M2C_UNK x38;
/* +3C */ float x3C;
/* +40 */ int x40;
/* +44 */ float x44;
/* +48 */ M2C_UNK x48;
/* +4C */ M2C_UNK x4C;
/* +50 */ float x50;
/* +54 */ M2C_UNK x54;
/* +58 */ M2C_UNK x58;
/* +5C */ M2C_UNK x5C;
/* +60 */ M2C_UNK x60;
/* +64 */ M2C_UNK x64;
/* +68 */ float x68;
/* +6C */ M2C_UNK x6C;
/* +70 */ float x70_someLStickYMax;
/* +6C */ int x74;
/* +78 */ float x78;
/* +7C */ u8 x7C[0x88 - 0x7C];
/* +88 */ float x88;
/* +8C */ int x8C;
/* +90 */ u8 x90[0x98 - 0x90];
/* +98 */ float x98;
/* +9C */ float x9C;
/* +A0 */ float xA0;
/* +A4 */ float xA4;
/* +A8 */ float xA8;
/* +AC */ float attackhi3_stick_threshold_y;
/* +B0 */ float xB0;
/* +B4 */ float xB4;
/* +B8 */ float xB8;
/* +BC */ float xBC;
/* +C0 */ float xC0;
/* +C4 */ float xC4;
/* +C8 */ float xC8;
/* +CC */ float xCC;
/* +D0 */ float xD0;
/* +D4 */ float xD4;
/* +D8 */ float xD8;
/* +DC */ float xDC;
/* +E0 */ float xE0;
/* +E4 */ int xE4;
/* +E8 */ float xE8;
/* +EC */ float xEC;
/* +F0 */ float xF0;
/* +F4 */ float xF4;
/* +F8 */ float xF8;
/* +FC */ int xFC;
/* +100 */ float x100;
/* +104 */ float kb_min;
/* +108 */ M2C_UNK x108;
/* +10C */ M2C_UNK x10C;
/* +110 */ M2C_UNK x110;
/* +114 */ M2C_UNK x114;
/* +118 */ M2C_UNK x118;
/* +11C */ M2C_UNK x11C;
/* +120 */ M2C_UNK x120;
/* +124 */ float kb_squat_mul;
/* +128 */ float x128;
/* +12C */ float x12C;
/* +130 */ int x130;
/* +134 */ int x134;
/* +138 */ float x138;
/* +13C */ float x13C;
/* +140 */ float x140;
/* +144 */ float x144;
/* +148 */ float x148;
/* +14C */ float x14C;
/* +150 */ float x150;
/* +154 */ float x154;
/* +158 */ float x158;
/* +15C */ float x15C;
/* +160 */ float x160;
/* +164 */ float x164;
/* +168 */ float x168;
/* +16C */ float x16C;
/* +170 */ float x170;
/* +174 */ float x174;
/* +178 */ float x178;
/* +17C */ float x17C;
/* +180 */ float x180;
/* +184 */ float x184;
/* +188 */ float x188;
/* +18C */ int x18C;
/* +190 */ float x190;
/* +194 */ float x194_unkHitLagFrames;
/* +198 */ float x198;
/* +19C */ float x19C;
/* +1A0 */ float x1A0;
/* +1A4 */ M2C_UNK x1A4;
/* +1A8 */ float x1A8;
/* +1AC */ float x1AC;
/* +1B0 */ float x1B0;
/* +1B4 */ M2C_UNK x1B4;
/* +1B8 */ int x1B8;
/* +1BC */ float x1BC;
/* +1C0 */ float x1C0;
/* +1C4 */ M2C_UNK x1C4;
/* +1C8 */ float x1C8;
/* +1CC */ M2C_UNK x1CC;
/* +1D0 */ float x1D0;
/* +1D4 */ M2C_UNK x1D4;
/* +1D8 */ M2C_UNK x1D8;
/* +1DC */ M2C_UNK x1DC;
/* +1E0 */ float x1E0;
/* +1E4 */ float x1E4;
/* +1E8 */ M2C_UNK x1E8;
/* +1EC */ float x1EC;
/* +1F0 */ float x1F0;
/* +1F4 */ float x1F4;
/* +1F8 */ M2C_UNK x1F8;
/* +1FC */ float x1FC;
/* +200 */ float x200;
/* +204 */ float x204_knockbackFrameDecay;
/* +208 */ u8 x208[0x210 - 0x208];
/* +210 */ float x210;
/* +214 */ int x214;
/* +218 */ float x218;
/* +21C */ float x21C;
/* +220 */ float x220;
/* +224 */ int x224;
/* +228 */ float x228;
/* +22C */ float x22C;
/* +230 */ float x230;
/* +234 */ M2C_UNK x234;
/* +238 */ M2C_UNK x238;
/* +23C */ M2C_UNK x23C;
/* +240 */ M2C_UNK x240;
/* +244 */ float x244;
/* +248 */ float x248;
/* +24C */ float x24C;
/* +250 */ float x250;
/* +254 */ float x254;
/* +258 */ float x258;
/* +25C */ float x25C;
/* +260 */ float x260_startShieldHealth;
/* +264 */ float x264;
/* +268 */ float x268;
/* +26C */ M2C_UNK x26C;
/* +270 */ M2C_UNK x270;
/* +274 */ M2C_UNK x274;
/* +278 */ float x278;
/* +27C */ float x27C;
/* +280 */ float x280_unkShieldHealth;
/* +284 */ float x284;
/* +288 */ float x288;
/* +28C */ float x28C;
/* +290 */ float x290;
/* +294 */ float x294;
/* +298 */ float x298;
/* +29C */ M2C_UNK x29C;
/* +2A0 */ int x2A0;
/* +2A4 */ float x2A4;
/* +2A8 */ float x2A8;
/* +2AC */ float x2AC;
/* +2B0 */ float x2B0;
/* +2B4 */ float x2B4;
/* +2B8 */ M2C_UNK x2B8;
/* +2BC */ float x2BC;
/* +2C0 */ M2C_UNK x2C0;
/* +2C4 */ M2C_UNK x2C4;
/* +2C8 */ M2C_UNK x2C8;
/* +2CC */ M2C_UNK x2CC;
/* +2D0 */ M2C_UNK x2D0;
/* +2D4 */ float x2D4;
/* +2D8 */ float x2D8;
/* +2DC */ float x2DC;
/* +2E0 */ float x2E0;
/* +2E4 */ float x2E4;
/* +2E8 */ float x2E8;
/* +2EC */ float x2EC;
/* +2F0 */ float x2F0;
/* +2F4 */ M2C_UNK x2F4;
/* +2F8 */ float x2F8;
/* +2FC */ float x2FC;
/* +300 */ float x300;
/* +304 */ float x304;
/* +308 */ float x308;
/* +30C */ M2C_UNK x30C;
/* +310 */ M2C_UNK x310;
/* +314 */ float x314;
/* +318 */ int x318;
/* +31C */ float x31C;
/* +320 */ int x320;
/* +324 */ int x324;
/* +328 */ M2C_UNK x328;
/* +32C */ Vec2 escapeair_deadzone;
/* +334 */ int x334;
/* +338 */ float escapeair_force;
/* +33C */ float escapeair_decay;
/* +340 */ float x340;
/* +344 */ float x344;
/* +348 */ M2C_UNK x348;
/* +34C */ M2C_UNK x34C;
/* +350 */ M2C_UNK x350;
/* +354 */ M2C_UNK x354;
/* +358 */ M2C_UNK x358;
/* +35C */ M2C_UNK x35C;
/* +360 */ M2C_UNK x360;
/* +364 */ M2C_UNK x364;
/* +368 */ M2C_UNK x368;
/* +36C */ M2C_UNK x36C;
/* +370 */ M2C_UNK x370;
/* +374 */ M2C_UNK x374;
/* +378 */ M2C_UNK x378;
/* +37C */ M2C_UNK x37C;
/* +380 */ M2C_UNK x380;
/* +384 */ M2C_UNK x384;
/* +388 */ M2C_UNK x388;
/* +38C */ M2C_UNK x38C;
/* +390 */ M2C_UNK x390;
/* +394 */ M2C_UNK x394;
/* +398 */ M2C_UNK x398;
/* +39C */ M2C_UNK x39C;
/* +3A0 */ M2C_UNK x3A0;
/* +3A4 */ M2C_UNK x3A4;
/* +3A8 */ float x3A8;
/* +3AC */ M2C_UNK x3AC;
/* +3B0 */ float x3B0;
/* +3B4 */ float shouldered_anim_rate;
/* +3B8 */ M2C_UNK x3B8;
/* +3BC */ M2C_UNK x3BC;
/* +3C0 */ int x3C0;
/* +3C4 */ M2C_UNK x3C4;
/* +3C8 */ M2C_UNK x3C8;
/* +3CC */ int x3CC;
/* +3D0 */ float x3D0;
/* +3D4 */ float x3D4;
/* +3D8 */ float x3D8;
/* +3DC */ float x3DC;
/* +3E0 */ float x3E0;
/* +3E4 */ float x3E4;
/* +3E8 */ float x3E8_shieldKnockbackFrameDecay;
/* +3EC */ float x3EC_shieldGroundFrictionMultiplier;
/* +3F0 */ u8 x3F0[0x400 - 0x3F0];
/* +410 */ float x400;
/* +410 */ float x404;
/* +410 */ float x408;
/* +40C */ float x40C;
/* +410 */ M2C_UNK x410;
/* +414 */ M2C_UNK x414;
/* +418 */ int x418;
/* +41C */ int x41C;
/* +420 */ M2C_UNK x420;
/* +424 */ float x424;
/* +428 */ int x428;
/* +42C */ M2C_UNK x42C;
/* +430 */ M2C_UNK x430;
/* +434 */ M2C_UNK x434;
/* +438 */ float x438;
/* +43C */ M2C_UNK x43C;
/* +440 */ float x440;
/* +444 */ float x444;
/* +448 */ float x448;
/* +44C */ float x44C;
/* +450 */ float x450;
/* +454 */ float x454;
/* +458 */ float x458;
/* +45C */ float x45C;
/* +460 */ float x460;
/* +464 */ float x464;
/* +468 */ float x468;
/* +46C */ float x46C;
/* +470 */ float x470;
/* +474 */ M2C_UNK x474;
/* +478 */ float x478;
/* +47C */ float x47C;
/* +480 */ float x480;
/* +484 */ M2C_UNK x484;
/* +488 */ int x488;
/* +48C */ float x48C;
/* +490 */ float x490;
/* +494 */ float x494;
/* +498 */ int ledge_cooldown;
/* +49C */ int x49C;
/* +4A0 */ float x4A0;
/* +4A4 */ float x4A4;
/* +4A8 */ float x4A8;
/* +4AC */ float x4AC;
/* +4B0 */ float x4B0;
/* +4B4 */ int x4B4;
/* +4B8 */ float x4B8;
/* +4BC */ float x4BC;
/* +4C0 */ float x4C0;
/* +4C4 */ int x4C4;
/* +4C8 */ int x4C8;
/* +4CC */ int x4CC;
/* +4D0 */ float x4D0;
/* +4D4 */ float x4D4;
/* +4D8 */ u32 x4D8;
/* +4DC */ Vec2 x4DC;
/* +4E4 */ Vec3 x4E4;
/* +4F0 */ M2C_UNK x4F0;
/* +4F4 */ M2C_UNK x4F4;
/* +4F8 */ M2C_UNK x4F8;
/* +4FC */ M2C_UNK x4FC;
/* +500 */ M2C_UNK x500;
/* +504 */ M2C_UNK x504;
/* +508 */ M2C_UNK x508;
/* +50C */ M2C_UNK x50C;
/* +510 */ M2C_UNK x510;
/* +514 */ M2C_UNK x514;
/* +518 */ M2C_UNK x518;
/* +51C */ M2C_UNK x51C;
/* +520 */ M2C_UNK x520;
/* +524 */ M2C_UNK x524;
/* +528 */ M2C_UNK x528;
/* +52C */ M2C_UNK x52C;
/* +530 */ M2C_UNK x530;
/* +534 */ M2C_UNK x534;
/* +538 */ M2C_UNK x538;
/* +53C */ M2C_UNK x53C;
/* +540 */ M2C_UNK x540;
/* +544 */ M2C_UNK x544;
/* +548 */ M2C_UNK x548;
/* +54C */ M2C_UNK x54C;
/* +550 */ M2C_UNK x550;
/* +554 */ M2C_UNK x554;
/* +558 */ M2C_UNK x558;
/* +55C */ M2C_UNK x55C;
/* +560 */ M2C_UNK x560;
/* +564 */ M2C_UNK x564;
/* +568 */ float x568;
/* +56C */ float x56C;
/* +570 */ float x570;
/* +574 */ float x574;
/* +578 */ float x578;
/* +57C */ int x57C;
/* +580 */ int x580;
/* +584 */ int x584;
/* +588 */ int x588;
/* +58C */ M2C_UNK x58C;
/* +590 */ M2C_UNK x590;
/* +594 */ M2C_UNK x594;
/* +598 */ M2C_UNK x598;
/* +59C */ float x59C;
/* +5A0 */ u8 x5A0[0x5C0 - 0x5A0];
/* +5C0 */ float x5C0;
/* +5C4 */ M2C_UNK x5C4;
/* +5C8 */ M2C_UNK x5C8;
/* +5CC */ M2C_UNK x5CC;
/* +5D0 */ M2C_UNK x5D0;
/* +5D4 */ M2C_UNK x5D4;
/* +5D8 */ M2C_UNK x5D8;
/* +5DC */ uint bury_timer_unk1;
/* +5E0 */ uint bury_timer_unk2;
/* +5E4 */ uint bury_timer_unk3;
/* +5E8 */ M2C_UNK x5E8;
/* +5EC */ M2C_UNK x5EC;
/* +5F0 */ u32 x5F0;
/* +5F4 */ int x5F4;
/* +5F8 */ float x5F8;
/* +5FC */ float x5FC;
/* +600 */ float x600;
/* +604 */ float x604;
/* +608 */ float x608;
/* +60C */ float x60C;
/* +610 */ float x610;
/* +614 */ float x614;
/* +618 */ float x618;
/* +61C */ float x61C;
/* +620 */ int x620;
/* +624 */ float x624;
/* +628 */ float x628;
/* +62C */ float x62C;
/* +630 */ float x630;
/* +634 */ float x634;
/* +638 */ float x638;
/* +63C */ float x63C;
/* +640 */ float x640;
/* +644 */ float x644;
/* +648 */ int x648;
/* +64C */ float x64C;
/* +650 */ float x650;
/* +654 */ float x654;
/* +658 */ float x658;
/* +65C */ float x65C;
/* +660 */ float x660;
/* +664 */ float x664;
/* +668 */ float x668;
/* +66C */ float x66C;
/* +670 */ float x670;
/* +674 */ float x674;
/* +678 */ M2C_UNK x678;
/* +67C */ M2C_UNK x67C;
/* +680 */ M2C_UNK x680;
/* +684 */ M2C_UNK x684;
/* +688 */ M2C_UNK x688;
/* +68C */ M2C_UNK x68C;
/* +690 */ M2C_UNK x690;
/* +694 */ float x694;
/* +698 */ float x698;
/* +69C */ float x69C;
/* +6A0 */ float x6A0;
/* +6A4 */ float x6A4;
/* +6A8 */ float x6A8;
/* +6AC */ int x6AC;
/* +6B0 */ int x6B0;
/* +6B4 */ int x6B4;
/* +6B8 */ int x6B8;
/* +6BC */ M2C_UNK x6BC;
/* +6C0 */ M2C_UNK x6C0;
/* +6C4 */ M2C_UNK x6C4;
/* +6C8 */ int x6C8;
/* +6CC */ int x6CC;
/* +6D0 */ float x6D0;
/* +6D4 */ M2C_UNK x6D4;
/// @todo expand to actual size
/* +6D8 */ void* x6D8[1];
/* +6DC */ GXColor x6DC_colorsByPlayer[4];
/* +6EC */ u8 x6EC[0x6F0 - 0x6EC];
/* +6F0 */ float unk_armor;
/* +6F4 */ int x6F4_unkDamage;
/* +6F8 */ int x6F8;
/* +6FC */ int x6FC;
/* +700 */ int x700;
/* +704 */ float x704;
/* +708 */ float x708;
/* +70C */ float x70C;
/* +710 */ float x710;
/* +714 */ float x714;
/* +718 */ float kb_ice_mul;
/* +71C */ u8 x71C[0x760 - 0x71C];
/* +760 */ int x760;
/* +764 */ int x764;
/* +768 */ float x768;
/* +76C */ float x76C;
/* +770 */ float x770;
/* +774 */ int x774;
/* +778 */ float passive_wall_vel_y_base;
/* +77C */ float x77C;
/* +780 */ M2C_UNK x780;
/* +784 */ M2C_UNK x784;
/* +788 */ float x788;
/* +78C */ float x78C;
/* +790 */ M2C_UNK x790;
/* +794 */ float x794;
/* +798 */ float x798;
/* +79C */ float x79C;
/* +7A0 */ float x7A0;
/* +7A4 */ float x7A4;
/* +7A8 */ float x7A8;
/* +7AC */ int x7AC;
/* +7B0 */ int x7B0;
/* +7B4 */ int x7B4_unkDamage;
/* +7B8 */ float x7B8;
/* +7BC */ float x7BC;
/* +7C0 */ float x7C0;
/* +7C4 */ float kb_smashcharge_mul;
/* +7C8 */ int x7C8;
/* +7CC */ int x7CC;
/* +7D0 */ int x7D0;
/* +7D4 */ float hit_weight_mul;
/* +7D8 */ int x7D8;
/* +7DC */ int x7DC;
/* +7E0 */ int x7E0;
/* +7E4 */ float x7E4_scaleZ;
/* +7E8 */ uint unk_kb_angle_min;
/* +7EC */ uint unk_kb_angle_max;
/* +7F0 */ int x7F0;
/* +7F4 */ u8 x7F4[0x814 - 0x7F4];
/* +814 */ int x814;
// lots of more data following, exact size to be determined
};
typedef struct _FtSFXArr {
int num;
int* sfx_ids;
} FtSFXArr;
struct FtSFX {
FtSFXArr* smash;
int x4;
int x8;
int xC;
int x10;
int x14;
int x18;
int x1C;
int x20;
int x24;
int x28;
int x2C;
int x30;
int x34;
};
typedef struct _DObjList {
usize_t count;
HSD_DObj** data;
} DObjList;
typedef struct {
u32 unk0;
f32 unk4;
} ftData_x34;
typedef struct ftData_x44_t {
s16 unk0;
s16 unk2;
s16 unk4;
s16 unk6;
s16 unk8;
s16 unkA;
s16 unkC;
s16 unk10;
s16 unk12;
s16 unk14;
s16 unk16;
s16 unk18;
} ftData_x44_t;
struct ftData {
/* +0 */ struct {
/* +0 */ u8 x0[0x8C];
/* +8C */ float x8C;
/* +90 */ u8 x90[0xFC - 0x90];
/* +FC */ float xFC;
/* +100 */ u8 x100[0x16C - 0x100];
/* +16C */ int x16C_idx;
}* x0;
/* +4 */ void* ext_attr;
/* +8 */ struct ftData_x8 {
/* +0 */ u8 x0[0x10];
/* +10 */ u8 x10;
/* +11 */ u8 x11;
/* +12 */ u8 x12;
/* +13 */ u8 x13;
/* +14 */ u8 x14;
}* x8;
/* +C */ struct S_TEMP4* xC;
/* +10 */ u8* x10;
/* +14 */ struct S_TEMP4* x14;
/* +18 */ u8* x18;
/* +1C */ M2C_UNK x1C;
/* +20 */ struct {
/* +0 */ M2C_UNK x0;
/* +4 */ HSD_Joint* x8;
}* x20;
/* +24 */ M2C_UNK x24;
/* +28 */ M2C_UNK x28;
/* +2C */ struct ftDynamics* x2C;
/* +30 */ M2C_UNK x30;
/* +34 */ struct ftData_x34 {
/* +0 */ Fighter_Part x0;
/* +4 */ float scale;
}* x34;
/* +38 */ M2C_UNK x38;
/* +3C */ struct UnkFloat6_Camera* x3C;
/* +40 */ M2C_UNK _40;
/* +44 */ ftData_x44_t* x44;
/* +48 */ M2C_UNK* x48_items;
/* +4C */ FtSFX* x4C_sfx;
/* +50 */ u8 x50[0x58 - 0x50];
/* +58 */ void* x58;
};
typedef struct _ThrowFlags {
union {
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
u32 flags;
};
} ThrowFlags;
struct ftCo_DatAttrs_xBC_t {
float size;
Vec3 x4;
Vec3 x10;
float x1C;
};
typedef struct ftCo_DatAttrs {
/* +000 fp+110 */ float walk_init_vel;
/* +004 fp+114 */ float walk_accel;
/* +008 fp+118 */ float walk_max_vel;
/* +00C fp+11C */ float slow_walk_max;
/* +010 fp+120 */ float mid_walk_point;
/* +014 fp+124 */ float fast_walk_min;
/* +018 fp+128 */ float gr_friction;
/* +01C fp+12C */ float dash_initial_velocity;
/* +020 fp+130 */ float dash_run_acceleration_a;
/* +024 fp+134 */ float dash_run_acceleration_b;
/* +028 fp+138 */ float dash_run_terminal_velocity;
/* +02C fp+13C */ float run_animation_scaling;
/* +030 fp+140 */ float max_run_brake_frames;
/* +034 fp+144 */ float grounded_max_horizontal_velocity;
/* +038 fp+148 */ float jump_startup_time;
/* +03C fp+14C */ float jump_h_initial_velocity;
/* +040 fp+150 */ float jump_v_initial_velocity;
/* +044 fp+154 */ float ground_to_air_jump_momentum_multiplier;
/* +048 fp+158 */ float jump_h_max_velocity;
/* +04C fp+15C */ float hop_v_initial_velocity;
/* +050 fp+160 */ float air_jump_v_multiplier;
/* +054 fp+164 */ float air_jump_h_multiplier;
/* +058 fp+168 */ int max_jumps;
/* +05C fp+16C */ float grav;
/* +060 fp+170 */ float terminal_vel;
/* +064 fp+174 */ float air_drift_stick_mul;
/* +068 fp+178 */ float aerial_drift_base;
/* +06C fp+17C */ float air_drift_max;
/* +070 fp+180 */ float aerial_friction;
/* +074 fp+184 */ float fast_fall_velocity;
/* +078 fp+188 */ float horizontal_air_mobility_constant;
/* +07C fp+18C */ float jab_2_input_window;
/* +080 fp+190 */ float jab_3_input_window;
/* +084 fp+194 */ int frames_to_change_direction_on_standing_turn;
/* +088 fp+198 */ float weight;
/* +08C fp+19C */ float model_scaling;
/* +090 fp+1A0 */ float initial_shield_size;
/* +094 fp+1A4 */ float shield_break_initial_velocity;
/* +098 fp+1A8 */ int rapid_jab_window;
/* +09C fp+1AC */ float x9C;
/* +0A0 fp+1B0 */ int xA0;
/* +0A4 fp+1B4 */ int xA4;
/* +0A8 fp+1B8 */ float ledge_jump_horizontal_velocity;
/* +0AC fp+1BC */ float ledge_jump_vertical_velocity;
/* +0B0 fp+1C0 */ float item_throw_velocity_multiplier;
/* +0B4 fp+1C4 */ int xB4;
/* +0B8 fp+1C8 */ float xB8;
/* +0BC fp+1CC */ ftCo_DatAttrs_xBC_t xBC;
/* +0DC fp+1EC */ float xDC;
/* +0E0 fp+1F0 */ float kirby_b_star_damage;
/* +0E4 fp+1F4 */ float normal_landing_lag;
/* +0E8 fp+1F8 */ float landingairn_lag;
/* +0EC fp+1FC */ float landingairf_lag;
/* +0F0 fp+200 */ float landingairb_lag;
/* +0F4 fp+204 */ float landingairhi_lag;
/* +0F8 fp+208 */ float landingairlw_lag;
/* +0FC fp+20C */ float name_tag_height;
/* +100 fp+210 */ float passivewall_vel_x;
/* +104 fp+214 */ float wall_jump_horizontal_velocity;
/* +108 fp+218 */ float wall_jump_vertical_velocity;
/* +10C fp+21C */ float passiveceil_vel_x;
/* +110 fp+220 */ float trophy_scale;
/* +114 fp+224 */ Vec3 x114;
/* +118 fp+230 */ Vec3 x118;
/* +11C fp+23C */ float x11C;
/* +120 fp+240 */ Vec3 x120;
/* +124 fp+24C */ float x124;
/* +128 fp+250 */ int x128;
/* +12C fp+254 */ int x12C;
/* +130 fp+258 */ float x130;
/* +134 fp+25C */ float bubble_ratio;
/* +138 fp+260 */ int x138;
/* +13C fp+264 */ int x13C;
/* +140 fp+268 */ float x140;
/* +144 fp+26C */ int x144;
/* +148 fp+270 */ float respawn_platform_scale;
/* +14C fp+274 */ float x14C;
/* +150 fp+278 */ int x150;
/* +154 fp+27C */ int camera_zoom_target_bone;
/* +158 fp+280 */ Vec3 x158;
/* +15C fp+28C */ float x15C;
/* +160 fp+290 */ int weight_dependent_throw_speed_flags;
} ftCo_DatAttrs;
struct FighterBone {
/* +0 */ HSD_JObj* joint;
/* +4 */ HSD_JObj* x4_jobj2; // used for interpolation
/* +8:0 */ u8 flags_b0 : 1;
/* +8:1 */ u8 flags_b1 : 1;
/* +8:2 */ u8 flags_b2 : 1;
/* +8:3 */ u8 flags_b3 : 1;
/* +8:4 */ u8 flags_b4 : 1;
/* +8:5 */ u8 flags_b5 : 1;
/* +8:6 */ u8 flags_b6 : 1;
/* +8:7 */ u8 flags_b7 : 1;
/* +C */ M2C_UNK xC;
};
struct { int x[1 - 2 * !(sizeof(struct FighterBone) == 0x10)]; };;
/* fp+2114 */ typedef struct _SmashAttr {
/* fp+2114 */ SmashState state;
/// number of frames fp has charged for
/* fp+2118 */ float x2118_frames;
/// frame that charge begins/ends
/* fp+211C */ float x211C_holdFrame;
/// damage multiplier
/* fp+2120 */ float x2120_damageMul;
/// speed multiplier?
/* fp+2124 */ float x2124_frameSpeedMul;
/* fp+2128 */ s32 x2128;
/* fp+212C */ s8 x212C;
/* fp+212D */ s8 x212D;
/* fp+212E */ s8 x212E;
/* fp+212F */ s8 x212F;
/// bool for smash sfx?
/* fp+2130 */ s32 x2130_sfxBool;
/* fp+2134 */ s8 x2134_vibrateFrame;
/* fp+2135 */ s8 x2135;
/* fp+2136 */ s8 x2136;
/* fp+2137 */ s8 x2137;
/* fp+2138 */ float x2138_smashSinceHitbox;
} SmashAttr;
typedef struct itPickup {
/* +0 */ Vec4 gr_light_offset;
/* +10 */ Vec4 gr_heavy_offset;
/* +20 */ Vec4 air_light_offset;
} itPickup;
typedef struct {
HSD_Joint* joint;
u8 padding[0x10];
HSD_Archive* x14_archive;
} UnkCostumeStruct;
struct UnkCostumeList {
UnkCostumeStruct* costume_list;
u8 numCostumes;
};
struct S_TEMP1 {
FighterKind fighterKind;
u8 playerID;
u8 unk5;
/* +6:0 */ u8 flags_b0 : 1;
/* +6:1 */ u8 flags_b1 : 1;
};
struct MotionState {
enum_t anim_id;
enum_t x4_flags;
union {
/// @todo Try to match without this being a @c union.
u32 _;
struct {
u8 move_id : 8;
struct {
u8 x9_b0 : 1;
u8 x9_b1 : 1;
u8 x9_b2 : 1;
u8 x9_b3 : 1;
u8 x9_b4 : 1;
u8 x9_b5 : 1;
u8 x9_b6 : 1;
u8 x9_b7 : 1;
};
u8 xA;
u8 xB;
};
};
HSD_GObjEvent anim_cb;
HSD_GObjEvent input_cb;
HSD_GObjEvent phys_cb;
HSD_GObjEvent coll_cb;
HSD_GObjEvent cam_cb;
};
struct S_TEMP4 {
s32 x0;
s32 x4;
s32 x8;
ftSubactionList* xC;
s32 x10_animCurrFlags;
s32 x14;
};
struct Fighter_CostumeStrings {
char* dat_filename;
char* joint_name;
char* matanim_joint_name;
};
struct Fighter_DemoStrings {
char* result_filename;
char* intro_filename;
char* ending_filename;
char* vi_wait_filename;
};
/// @todo Rename this and its members; investigate using it elsewhere.
/* fp+2070 */ union Struct2070 {
/* fp+2070 */ struct {
/* fp+2070 */ s8 x2070;
/* fp+2070:0 */ u8 x2071_b0_3 : 4;
/* fp+2070:4 */ u8 x2071_b4 : 1;
/* fp+2070:5 */ u8 x2071_b5 : 1;
/* fp+2070:6 */ u8 x2071_b6 : 1;
/* fp+2070:7 */ u8 x2071_b7 : 1;
/* fp+2070:0 */ u8 x2072_b0_3 : 4;
/* fp+2070:4 */ u8 x2072_b4 : 1;
/* fp+2070:5 */ u8 x2072_b5 : 1;
/* fp+2070:6 */ u8 x2072_b6 : 1;
/* fp+2070:7 */ u8 x2072_b7 : 1;
/* fp+2073 */ u8 x2073;
};
/* fp+2070 */ s32 x2070_int;
};
/// @todo See if this should likewise be instituted for item->xD94 thru
/// xDA4_word/xDA8_short
/* fp+2074 */ struct Struct2074 {
/* fp+2074 */ Vec2 x2074_vec;
/* fp+207C */ Vec2 x207C;
/* fp+2084 */ u32 x2084;
/* fp+2088 */ u16 x2088;
};
struct ftSubactionList {
u8 x0_opcode;
};
struct ftCmdScript {
float x3E4_scriptEventTimer; // 0x3E4
float x3E8_scriptFrameTimer; // 0x3E8
ftSubactionList* x3EC_scriptCurrent; // 0x3EC
s32 x3F0_scriptLoopNum; // 0x3F0
void* x3F4_scriptReturn; // 0x3F4
};
struct ftDeviceUnk1 {
/* +0 */ u8 x0[0x7B - 0x00];
/* +7B */ u8 x7B;
};
struct ftDeviceUnk2 {
/* +0 */ M2C_UNK x0;
/* +4 */ M2C_UNK x4;
/* +8 */ M2C_UNK x8;
/* +C */ M2C_UNK xC;
/* +10 */ M2C_UNK x10;
/* +14 */ M2C_UNK x14;
/* +18 */ M2C_UNK x18;
/* +1C */ M2C_UNK x1C;
/* +20 */ M2C_UNK x20;
/* +24 */ M2C_UNK x24;
/* +28 */ ftDeviceUnk1* x28;
/* +2C */ M2C_UNK x2C;
/* +30 */ M2C_UNK x30;
/* +34 */ M2C_UNK x34;
/* +38 */ M2C_UNK x38;
/* +3C */ M2C_UNK x3C;
/* +40 */ M2C_UNK x40;
/* +44 */ M2C_UNK x44;
/* +48 */ M2C_UNK x48;
/* +4C */ M2C_UNK x4C;
/* +50 */ GXColor lobj_color;
/* +54 */ M2C_UNK x54;
/* +58 */ M2C_UNK x58;
/* +5C */ M2C_UNK x5C;
/* +60 */ M2C_UNK x60;
/* +64 */ M2C_UNK x64;
/* +68 */ M2C_UNK x68;
/* +6C */ M2C_UNK x6C;
/* +70 */ M2C_UNK x70;
/* +74 */ float lobj_rot_x;
/* +74 */ float lobj_rot_yz;
/* +7C:0 */ u8 x7C_b0 : 1;
/* +7C:1 */ u8 x7C_b1 : 1;
/* +7C:2 */ u8 x7C_b2 : 1;
/* +7C:3 */ u8 x7C_b3 : 1;
/* +7C:4 */ u8 x7C_b4 : 1;
/* +7C:5 */ u8 x7C_b5 : 1;
/* +7C:6 */ u8 x7C_b6 : 1;
/* +7C:7 */ u8 x7C_b7 : 1;
};
struct ftDeviceUnk3 {
M2C_UNK x0;
u32 x4;
ftDevice_Callback0 active_cb;
};
struct ftDeviceUnk4 {
int x0;
M2C_UNK x4;
};
struct { int x[1 - 2 * !(sizeof(struct ftDeviceUnk4) == 0x8)]; };;
struct ftDeviceUnk5 {
M2C_UNK x0;
ftCommon_BuryType x4;
bool (*cb)(M2C_UNK, Fighter_GObj*);
};
struct { int x[1 - 2 * !(sizeof(struct ftDeviceUnk5) == 0xC)]; };;
struct Fighter_x1A88_xFC_t {
/* +0 */ HSD_Pad x0;
/* +4 */ u8 x4;
/* +5 */ u8 x5;
/* +6 */ u8 x6;
/* +7 */ u8 x7;
/* +8 */ u8 x8;
/* +9 */ u8 x9;
/* +A */ u8 xA;
/* +B */ u8 xB;
/* +C */ Vec3 cur_pos;
/* +18 */ float facing_dir;
/* +1C */ struct Fighter_x1A88_xFC_t* x1C;
/* +20 */ u8 x20[0x348 - 0x20];
};
struct { int x[1 - 2 * !(sizeof(struct Fighter_x1A88_xFC_t) == 0x348)]; };;
struct Fighter_x1A88_t {
/* +0 */ HSD_Pad x0;
/* +4 */ u8 x4;
/* +5 */ u8 x5;
/* +6 */ u8 x6;
/* +7 */ u8 x7;
/* +8 */ u8 x8;
/* +9 */ u8 x9;
/* +A */ u8 xA;
/* +B */ u8 xB;
/* +C */ enum_t xC;
/* +10 */ int x10;
/* +14 */ int x14;
/* +18 */ int x18;
/* +1C */ int x1C;
/* +20 */ int x20;
/* +24 */ u8 x24[0x34 - 0x24];
/* +34 */ float x34;
/* +38 */ float x38;
/* +3C */ M2C_UNK x3C;
/* +40 */ M2C_UNK x40;
/* +44 */ Fighter* x44;
/* +48 */ M2C_UNK x48;
/* +4C */ void* x4C;
/* +50 */ int x50;
/* +54 */ Vec2 x54;
/* +5C */ float x5C;
/* +60 */ int x60;
/* +64 */ Vec2 x64;
/* +64 */ u8 x6C[0x7C - 0x6C];
/* +7C */ int x7C;
/* +80 */ u8 x80[0xF8 - 0x80];
/* +F8:0 */ u8 xF8_b0 : 1;
/* +F8:1 */ u8 xF8_b1 : 1;
/* +F8:2 */ u8 xF8_b2 : 1;
/* +F8:3 */ u8 xF8_b3 : 1;
/* +F8:4 */ u8 xF8_b4 : 1;
/* +F8:5 */ u8 xF8_b5 : 1;
/* +F8:6 */ u8 xF8_b6 : 1;
/* +F8:7 */ u8 xF8_b7 : 1;
/* +F9:0 */ u8 xF9_b0 : 1;
/* +F9:1 */ u8 xF9_b1 : 1;
/* +F9:2 */ u8 xF9_b2 : 1;
/* +F9:3 */ u8 xF9_b3 : 1;
/* +F9:4 */ u8 xF9_b4 : 1;
/* +F9:5 */ u8 xF9_b5 : 1;
/* +F9:6 */ u8 xF9_b6 : 1;
/* +F9:7 */ u8 xF9_b7 : 1;
/* +FA:0 */ u8 xFA_b0 : 1;
/* +FA:1 */ u8 xFA_b1 : 1;
/* +FA:2 */ u8 xFA_b2 : 1;
/* +FA:3 */ u8 xFA_b3 : 1;
/* +FA:4 */ u8 xFA_b4 : 1;
/* +FA:5 */ u8 xFA_b5 : 1;
/* +FA:6 */ u8 xFA_b6 : 1;
/* +FA:7 */ u8 xFA_b7 : 1;
/* +FB:0 */ u8 xFB_b0 : 1;
/* +FB:1 */ u8 xFB_b1 : 1;
/* +FB:2 */ u8 xFB_b2 : 1;
/* +FB:3 */ u8 xFB_b3 : 1;
/* +FB:4 */ u8 xFB_b4 : 1;
/* +FB:5 */ u8 xFB_b5 : 1;
/* +FB:6 */ u8 xFB_b6 : 1;
/* +FB:7 */ u8 xFB_b7 : 1;
/* +FC */ struct Fighter_x1A88_xFC_t xFC;
/* +444 */ struct Fighter_x1A88_xFC_t* x444;
/* +448 */ struct Fighter_x1A88_xFC_t* x448;
/* +44C */ M2C_UNK x44C;
/* +450 */ M2C_UNK x450;
/* +454 */ uint x454;
/* +458 */ u8 x458[0x554 - 0x458];
/* +554 */ union Fighter_x1A88_x544_t {
struct {
u8 x0_u8;
};
uint x0_u32;
void* x0_p;
} x554;
/* +558 */ float x558;
/* +558 */ u8 x55C[0x568 - 0x55C];
/* +568 */ float x568;
/* +56C */ float x56C;
/* +570 */ M2C_UNK x570;
/* +574 */ float half_width;
/* +578 */ float half_height;
};
struct { int x[1 - 2 * !(sizeof(struct Fighter_x1A88_t) == 0x57C)]; };;
struct Fighter {
/* fp+0 */ HSD_GObj* gobj;
/* fp+4 */ FighterKind kind;
/* fp+8 */ s32 x8_spawnNum;
/* fp+C */ u8 player_id;
/* fp+10 */ FtMotionId motion_id;
/* fp+14 */ enum_t anim_id;
/* fp+18 */ s32 x18;
/* fp+1C */ MotionState* x1C_actionStateList;
/* fp+20 */ MotionState* x20_actionStateList;
/* fp+24 */ struct S_TEMP4* x24;
/* fp+28 */ u8* x28;
/* fp+2C */ float facing_dir;
/* fp+30 */ float facing_dir1;
/* fp+34 */ Vec3 x34_scale;
/* fp+40 */ float x40;
/* fp+44 */ Mtx x44_mtx;
/* fp+74 */ Vec3 x74_anim_vel;
/* fp+80 */ Vec3 self_vel;
/* fp+8C */ Vec3 x8c_kb_vel;
/* fp+98 */ Vec3 x98_atk_shield_kb;
/* fp+A4 */ Vec3 xA4_unk_vel;
/* fp+B0 */ Vec3 cur_pos;
/* fp+BC */ Vec3 prev_pos;
/* fp+C8 */ Vec3 pos_delta;
/* fp+D4 */ Vec3 xD4_unk_vel;
/* fp+E0 */ GroundOrAir ground_or_air;
/* fp+E4 */ float xE4_ground_accel_1;
/* fp+E8 */ float xE8_ground_accel_2;
/* fp+EC */ float gr_vel;
/* fp+F0 */ float xF0_ground_kb_vel;
/* fp+F4 */ float xF4_ground_attacker_shield_kb_vel;
/* fp+F8 */ Vec2 xF8_playerNudgeVel;
/* fp+100 */ float x100;
/* fp+104 */ u8 x104;
/* fp+105 */ s8 x105;
/* fp+106 */ s8 x106;
/* fp+107 */ s8 x107;
/* fp+108 */ HSD_Joint* x108_costume_joint;
/* fp+10C */ ftData* ft_data;
/* fp+110 */ ftCo_DatAttrs co_attrs;
/* fp+294 */ itPickup x294_itPickup;
/* fp+2C4 */ Vec2 x2C4;
/* fp+2CC */ ftDonkeyAttributes* x2CC;
/* fp+2D0 */ void* x2D0;
/* fp+2D4 */ void* dat_attrs;
/* fp+2D8 */ void* x2D8_specialAttributes2;
/* fp+2DC */ float x2DC;
/* fp+2E0 */ float x2E0;
/* fp+2E4 */ float x2E4;
/* fp+2E8 */ float x2E8;
/* fp+2EC */ float x2EC;
/* fp+2F0 */ BoneDynamicsDesc dynamic_bone_sets[10];
/* fp+3E0 */ int dynamics_num;
/* fp+3E4 */ ftCmdScript x3E4_fighterCmdScript;
/* fp+3F8 */ M2C_UNK x3F8;
/* fp+3FC */ M2C_UNK x3FC;
/* fp+400 */ M2C_UNK x400;
/* fp+404 */ M2C_UNK x404;
/* fp+408 */ ftDeviceUnk2 x408;
/* fp+488 */ ftDeviceUnk2 x488;
/* fp+508 */ ftDeviceUnk2 x508;
/* fp+588 */ HSD_LObj* x588;
/* fp+58C */ s32 x58C;
/* fp+590 */ uint x590;
/* fp+594 */ union {
struct {
/* fp+594:0 */ u8 x594_b0 : 1;
/* fp+594:1 */ u8 x594_b1 : 1;
/* fp+594:2 */ u8 x594_b2 : 1;
/* fp+594:3 */ u8 x594_b3 : 1;
/* fp+594:4 */ u8 x594_b4 : 1;
/* fp+594:5 */ u8 x594_b5 : 1;
/* fp+594:6 */ u8 x594_b6 : 1;
/* fp+594:7 */ u8 x594_b7 : 1;
/* fp+596 */ struct {
/* fp+596:0 */ u8 x0 : 7;
/* fp+596:7 */ u16 x7 : 3;
} x596_bits;
};
/* fp+594 */ s32 x594_s32;
};
/* fp+598 */ s32 x598;
/* fp+59C */ M2C_UNK x59C;
/* fp+5A0 */ M2C_UNK x5A0;
/* fp+5A4 */ M2C_UNK x5A4;
/* fp+5A8 */ M2C_UNK x5A8;
/* fp+5AC */ u8 _5AC[0x5B8 - 0x5AC];
/* fp+5B8 */ s32 x5B8;
/* fp+5BC */ M2C_UNK x5BC;
/* fp+598 */ u8 filler_x598[0x5C8 - 0x5C0];
/* fp+5A0 */ void* x5C8;
/* fp+5CC */ u8 filler_x5CC[0x5E8 - 0x5CC];
/* fp+5E8 */ FighterBone* parts;
/* fp+5EC */ DObjList dobj_list;
/* fp+5F4 */ s8 x5F4;
/* fp+5F5 */ s8 x5F5;
/* fp+5F6 */ s8 x5F6;
/* fp+5F7 */ s8 x5F7;
/* fp+5F8 */ s8 x5F8;
/* fp+5FC */ u8 filler_x5FC[0x60C - 0x5F9];
/* fp+60C */ void* x60C;
/* fp+610 */ union {
/* fp+610 */ GXColor x610_color_rgba[2];
/* fp+610 */ struct {
/* fp+610 */ s32 x610;
/* fp+614 */ GXColor x614;
};
};
/* fp+618 */ u8 x618_player_id;
/* fp+619 */ u8 x619_costume_id;
/* fp+61A */ u8 x61A_controller_index;
/* fp+61B */ u8 team;
/* fp+61C */ u8 x61C;
/* fp+61D */ u8 x61D;
/* fp+61E */ u8 filler_x61E[0x620 - 0x61E];
/* fp+620 */ struct {
/* fp+620 */ Vec2 lstick;
/* fp+628 */ Vec2 lstick1;
/* fp+630 */ float x630;
/* fp+634 */ float x634;
/* fp+638 */ Vec2 cstick;
/* fp+640 */ Vec2 cstick1;
/* fp+648 */ float x648;
/* fp+64C */ float x64C;
/* fp+650 */ float x650;
/* fp+654 */ float x654;
/* fp+658 */ float x658;
/* fp+65C */ HSD_Pad held_inputs;
/* fp+660 */ s32 x660;
/* fp+664 */ s32 x664;
/* fp+668 */ HSD_Pad x668;
/* fp+66C */ s32 x66C;
} input;
/* fp+670 */ u8 x670_timer_lstick_tilt_x;
/* fp+671 */ u8 x671_timer_lstick_tilt_y;
/* fp+672 */ u8 x672_input_timer_counter;
/* fp+673 */ u8 x673;
/* fp+674 */ u8 x674;
/* fp+674 */ u8 x675;
/* fp+676 */ u8 x676_x;
/* fp+677 */ u8 x677_y;
/* fp+678 */ u8 x678;
/* fp+679 */ u8 x679_x;
/* fp+67A */ u8 x67A_y;
/* fp+67B */ u8 x67B;
/* fp+67C */ u8 x67C;
/* fp+67D */ u8 x67D;
/* fp+67E */ u8 x67E;
/* fp+67F */ u8 x67F;
/* fp+680 */ u8 x680;
/* fp+681 */ u8 x681;
/* fp+682 */ u8 x682;
/* fp+683 */ u8 x683;
/* fp+684 */ u8 x684;
/* fp+685 */ u8 x685;
/* fp+686 */ u8 x686;
/* fp+687 */ u8 x687;
/* fp+688 */ u8 x688;
/* fp+689 */ u8 x689;
/* fp+68A */ u8 x68A;
/* fp+68B */ u8 x68B;
/* fp+68C */ Vec3 x68C_transNPos;
/* fp+698 */ Vec3 x698;
/* fp+6A4 */ Vec3 x6A4_transNOffset;
/* fp+6B0 */ Vec3 x6B0;
/* fp+6BC */ float lstick_angle;
/* fp+6C0 */ Vec3 x6C0;
/* fp+6CC */ Vec3 x6CC;
/* fp+6D8 */ Vec3 x6D8;
/* fp+6E4 */ Vec3 x6E4;
/* fp+6F0 */ CollData coll_data;
/* fp+88C */ s32 ecb_lock;
/* fp+890 */ CameraBox* x890_cameraBox;
/* fp+894 */ float cur_anim_frame;
/* fp+898 */ float x898_unk;
/* fp+89C */ float frame_speed_mul;
/* fp+8A0 */ float x8A0_unk;
/* fp+8A4 */ float x8A4_animBlendFrames;
/* fp+8A8 */ float x8A8_unk;
/* fp+8AC */ HSD_JObj* x8AC_animSkeleton;
/* fp+8AC */ u8 filler_x8AC[0x914 - 0x8B0];
/* fp+914 */ HitCapsule x914[4];
/* fp+DF4 */ HitCapsule xDF4[2];
/* fp+1064 */ HitCapsule x1064_thrownHitbox;
/* fp+119C */ u8 x119C_teamUnk;
/* fp+119D */ u8 grabber_unk1;
/* fp+119E */ u8 hurt_capsules_len;
/* fp+119F */ u8 x119F;
/* fp+11A0 */ HurtCapsule hurt_capsules[15];
/* fp+1614 */ M2C_UNK x1614;
/* fp+1618 */ u8 filler_x1618[0x166C - 0x1618];
/* fp+166C */ u8 x166C;
/* fp+1670 */ M2C_UNK x1670;
/* fp+1674 */ u8 filler_x1674[0x1828 - 0x1674];
/* fp+1828 */ enum_t x1828;
/* fp+182C */ struct dmg {
/* fp+182C */ float x182c_behavior;
/* fp+1830 */ float x1830_percent;
/* fp+1834 */ float x1834;
/* fp+1838 */ float x1838_percentTemp;
/* fp+183C */ int x183C_applied;
/* fp+1840 */ int x1840;
/* fp+1844 */ float facing_dir_1;
/* fp+1848 */ int x1848_kb_angle;
/* fp+184C */ int x184c_damaged_hurtbox;
/* fp+1850 */ float kb_applied;
/* fp+1854 */ Vec3 x1854_collpos;
/* fp+1860 */ uint x1860_element;
/* fp+1864 */ int x1864;
/* fp+1868 */ HSD_GObj* x1868_source;
/* fp+186C */ int x186c;
/* fp+1870 */ int x1870;
/* fp+1874 */ int x1874;
/* fp+1878 */ int x1878;
/* fp+187C */ int x187c;
/* fp+1880 */ int x1880;
/* fp+1884 */ int x1884;
/* fp+1888 */ int x1888;
/* fp+188C */ int x188c;
/* fp+1890 */ int x1890;
/* fp+1894 */ int x1894;
/* fp+1898 */ int x1898;
/* fp+189C */ float x189C_unk_num_frames;
/* fp+18A0 */ float x18a0;
/// kb magnitude
/* fp+18A4 */ float x18A4_knockbackMagnitude;
/* fp+18A8 */ float x18A8;
/// in frames
/* fp+18AC */ int x18ac_time_since_hit;
/* fp+18B0 */ float armor0;
/* fp+18B4 */ float armor1;
/* fp+18B8 */ float x18B8;
/* fp+18BC */ float x18BC;
/* fp+18C0 */ int x18C0;
/// damage source ply number
/* fp+18C4 */ int x18c4_source_ply;
/* fp+18C8 */ int x18C8;
/* fp+18CC */ int x18CC;
/* fp+18D0 */ int x18D0;
/* fp+18D4 */ int x18d4;
/* fp+18D8 */ int x18d8;
/* fp+18DC */ int x18dc;
/* fp+18E0 */ float kb_applied1;
/* fp+18E4 */ int x18e4;
/* fp+18E8 */ int x18e8;
/// Last Move Instance This Player Was Hit by
/* fp+18EC */ u16 x18ec_instancehitby;
/* fp+18F0 */ int x18F0;
/* fp+18F4 */ int x18F4;
/* fp+18F8 */ u8 x18F8;
/* fp+18F9 */ u8 x18f9;
/* fp+18FA */ u16 x18fa_model_shift_frames;
/* fp+18FC */ u8 x18FC;
/* fp+18FD */ u8 x18FD;
/* fp+1900 */ float x1900;
/* fp+1904 */ float x1904;
/* fp+1908 */ enum_t x1908;
/* fp+190C */ M2C_UNK x190C;
/* fp+1910 */ int x1910;
/* fp+1914 */ int x1914;
/* fp+1918 */ int int_value;
/* fp+191C */ float x191C;
/* fp+1920 */ float facing_dir;
/* fp+1924 */ int x1924;
/* fp+1928 */ float x1928;
/* fp+192C */ float x192c;
/* fp+1930 */ Vec3 x1930;
/* fp+193C */ Vec3 x193c;
/* fp+1948 */ int x1948;
/* fp+194C */ int x194C;
/* fp+1950 */ bool x1950;
/* fp+1954 */ float x1954;
/* fp+1958 */ float x1958;
/* fp+195C */ float x195c_hitlag_frames;
} dmg;
/* fp+1960 */ float x1960_vibrateMult;
/* fp+1964 */ float x1964;
/* fp+1968 */ u8 x1968_jumpsUsed;
/* fp+1969 */ u8 x1969_walljumpUsed;
/* fp+196C */ float hitlag_mul;
/* fp+1970 */ enum_t unk_msid;
/* fp+1974 */ Item_GObj* item_gobj;
/* fp+1978 */ Item_GObj* x1978;
/* fp+197C */ HSD_GObj* x197C;
/* fp+1980 */ HSD_GObj* x1980;
/* fp+1984 */ Item_GObj* x1984_heldItemSpec;
/* fp+1988 */ enum_t x1988;
/* fp+198C */ s32 x198C;
/* fp+1990 */ s32 x1990;
/* fp+1994 */ bool x1994;
/* fp+1998 */ float shield_health;
/* fp+199C */ float lightshield_amount;
/* fp+19A0 */ s32 x19A0_shieldDamageTaken;
/* fp+19A4 */ int x19A4;
/* fp+19A8 */ HSD_GObj* x19A8;
/* fp+19AC */ float specialn_facing_dir;
/* fp+19B0 */ enum_t x19B0;
/* fp+19B4 */ float shield_unk0;
/* fp+19B8 */ float shield_unk1;
/* fp+19BC */ s32 x19BC_shieldDamageTaken3;
/* fp+19C0 */ HitResult shield_hit;
/* fp+19E4 */ HitResult reflect_hit;
/* fp+1A08 */ HitResult absorb_hit;
/* fp+1A2C */ struct {
/* fp+1A2C */ float x1A2C_reflectHitDirection;
/* fp+1A30 */ s32 x1A30_maxDamage;
/* fp+1A34 */ float x1A34_damageMul;
/* fp+1A38 */ float x1A38_speedMul;
/// % damage over the maximum reflectable damage threshold
/* fp+1A3C */ s32 x1A3C_damageOver;
} ReflectAttr;
/* fp+1A40 */ struct {
/* fp+1A40 */ float x1A40_absorbHitDirection;
/// unconfirmed?
/* fp+1A44 */ s32 x1A44_damageTaken;
/// unconfirmed?
/* fp+1A48 */ s32 x1A48_hitsTaken;
} AbsorbAttr;
/* fp+1A4C */ float x1A4C;
/* fp+1A50 */ s8 x1A50;
/* fp+1A51 */ s8 x1A51;
/* fp+1A52 */ u8 x1A52;
/* fp+1A53 */ u8 x1A53;
/* fp+1A54 */ s32 x1A54;
/* fp+1A58 */ Fighter_GObj* victim_gobj;
/* fp+1A5C */ Fighter_GObj* x1A5C;
/* fp+1A60 */ Item_GObj* x1A60;
/* fp+1A64 */ M2C_UNK x1A64;
/* fp+1A68 */ u16 x1A68;
/* fp+1A6A */ u16 x1A6A;
/* fp+1A6C */ float x1A6C;
/* fp+1A70 */ Vec3 x1A70;
/* fp+1A7C */ Vec3 x1A7C;
/* fp+x1A88 */ struct Fighter_x1A88_t x1A88;
/* fp+2004 */ int x2004;
/* fp+2008 */ s32 x2008;
/* fp+200C */ s32 x200C;
/* fp+2010 */ s32 x2010;
/* fp+2014 */ s32 x2014;
/* fp+2018 */ s32 x2018;
/* fp+201C */ s32 x201C;
/* fp+2020 */ s8 x2020;
/* fp+2021 */ s8 x2021;
/* fp+2022 */ s8 x2022;
/* fp+2024 */ s32 x2024;
/* fp+2028 */ s32 x2028;
/* fp+202C */ s32 x202C;
/* fp+2030 */ s32 x2030;
/* fp+2034 */ s32 x2034;
/* fp+2038 */ s32 x2038;
/* fp+203C */ s32 x203C;
/* fp+2040 */ void* x2040;
/* fp+203C */ u8 filler_x203C[0x2064 - 0x2044];
/* fp+2064 */ int x2064_ledgeCooldown;
/* fp+2068 */ s32 x2068_attackID;
/* fp+206C */ u16 x206C_attack_instance;
/* fp+206E */ short x206E;
/* fp+2070 */ union Struct2070 x2070;
/* fp+2074 */ struct Struct2074 x2074;
/* fp+208C */ s32 x208C;
/* fp+2090 */ u16 x2090;
/* fp+2092 */ u16 x2092;
/// GObj pointer of combo victim?
/* fp+2094 */ Fighter_GObj* x2094;
/* fp+2098 */ u16 x2098;
/* fp+209A */ u16 x209A;
/* fp+209C */ s16 x209C;
/* fp+20A0 */ HSD_JObj* x20A0_accessory;
/* fp+20A4 */ s32 x20A4;
/* fp+20A8 */ s32 x20A8;
/* fp+20AC */ HSD_GObj* unk_gobj;
/* fp+20B0 */ M2C_UNK x20B0;
/* fp+20B4 */ M2C_UNK x20B4;
/* fp+20B8 */ M2C_UNK x20B8;
/* fp+20BC */ M2C_UNK x20BC;
/* fp+20C0 */ M2C_UNK x20C0;
/* fp+20C4 */ M2C_UNK x20C4;
/* fp+20C8 */ M2C_UNK x20C8;
/* fp+20CC */ M2C_UNK x20CC;
/* fp+20D0 */ M2C_UNK x20D0;
/* fp+20D4 */ M2C_UNK x20D4;
/* fp+20D8 */ M2C_UNK x20D8;
/* fp+20DC */ M2C_UNK x20DC;
/* fp+20E0 */ M2C_UNK x20E0;
/* fp+20E4 */ M2C_UNK x20E4;
/* fp+20E8 */ M2C_UNK x20E8;
/* fp+20EC */ M2C_UNK x20EC;
/* fp+20F0 */ M2C_UNK x20F0;
/* fp+20F4 */ M2C_UNK x20F4;
/* fp+20F8 */ float x20F8;
/* fp+20FC */ float x20FC;
/* fp+2100 */ s8 x2100;
/* fp+2101 */ union {
/* fp+2101 */ u8 x2101;
/* fp+2101 */ struct {
/* fp+2101:0 */ u8 x2101_bits_0to6 : 7;
/* fp+2101:7 */ u8 x2101_bits_8 : 1;
};
};
/* fp+2102 */ s8 x2102;
/* fp+2103 */ s8 x2103;
/* fp+2104 */ s32 x2104;
/* fp+2108 */ int capture_timer;
/* fp+210C */ u8 wall_jump_input_timer;
/* fp+210C */ u8 filler_x210C[3];
/* fp+2110 */ float x2110_walljumpWallSide;
/* fp+2114 */ SmashAttr smash_attrs;
/* fp+213C */ s32 x213C;
/* fp+2140 */ float x2140;
/* fp+2144 */ int x2144;
/* fp+2148 */ s32 x2148;
/* fp+214C */ s32 x214C;
/* fp+2150 */ s32 x2150;
/* fp+2154 */ s32 x2154;
/* fp+2158 */ s32 x2158;
/* fp+215C */ s32 x215C;
/* fp+2160 */ s32 x2160;
/* fp+2164 */ int x2164;
/* fp+2168 */ int x2168;
/* fp+216C */ float unk_grab_val;
/* fp+2170 */ float x2170;
/* fp+2174 */ u8 filler_x2174[0x2180 - 0x2174];
/* fp+2180 */ s32 x2180;
/* fp+2184 */ HSD_JObj* x2184;
/* fp+2188 */ S32Vec2 x2188;
/// callback struct. Not all of them used by fighter.c.
/* fp+2190 */ HSD_GObjEvent grab_cb;
/* fp+2194 */ HSD_GObjEvent x2194;
/* fp+2198 */ HSD_GObjInteraction grabbed_cb;
/* fp+219C */ HSD_GObjEvent input_cb;
/* fp+21A0 */ HSD_GObjEvent anim_cb;
/* fp+21A4 */ HSD_GObjEvent phys_cb;
/* fp+21A8 */ HSD_GObjEvent coll_cb;
/* fp+21AC */ HSD_GObjEvent cam_cb;
/* fp+21B0 */ HSD_GObjEvent accessory1_cb;
/* fp+21B4 */ HSD_GObjEvent accessory2_cb;
/* fp+21B8 */ HSD_GObjEvent accessory3_cb;
/* fp+21BC */ HSD_GObjEvent accessory4_cb;
/* fp+21C0 */ HSD_GObjEvent deal_dmg_cb;
/* fp+21C4 */ HSD_GObjEvent shield_hit_cb;
/* fp+21C8 */ HSD_GObjEvent reflect_hit_cb;
/* fp+21CC */ HSD_GObjEvent x21CC;
/* fp+21D0 */ HSD_GObjEvent hitlag_cb;
/* fp+21D4 */ HSD_GObjEvent pre_hitlag_cb;
/* fp+21D8 */ HSD_GObjEvent post_hitlag_cb;
/* fp+21DC */ HSD_GObjEvent take_dmg_cb;
/* fp+21E0 */ HSD_GObjEvent death1_cb;
/// @remarks Used. Internally Dead_Proc as evidenced by 800F5430.
/* fp+21E4 */ HSD_GObjEvent death2_cb;
/* fp+21E8 */ HSD_GObjEvent death3_cb;
/* fp+21EC */ HSD_GObjEvent x21EC;
/* fp+21F0 */ HSD_GObjEvent x21F0;
/* fp+21F4 */ HSD_GObjEvent x21F4;
/* fp+21F8 */ HSD_GObjEvent x21F8;
/* fp+21FC */ UnkFlagStruct x21FC_flag;
/* fp+21FC */ u8 filler_x21FC[0x2200 - 0x21FD];
/* fp+2200 */ u32 cmd_vars[4];
/* fp+2210 */ union {
u32 throw_flags;
struct {
u8 throw_flags_b0 : 1;
u8 throw_flags_b1 : 1;
u8 throw_flags_b2 : 1;
u8 throw_flags_b3 : 1;
u8 throw_flags_b4 : 1;
u8 throw_flags_b5 : 1;
u8 throw_flags_b6 : 1;
u8 throw_flags_b7 : 1;
};
};
/* fp+2214 */ float x2214;
union {
/* fp+2218 */ u8 x2218;
/* fp+2218 */ struct {
/* fp+2218:0 */ u8 allow_interrupt : 1;
/* fp+2218:1 */ u8 x2218_b1 : 1;
/* fp+2218:2 */ u8 x2218_b2 : 1;
/* fp+2218:3 */ u8 x2218_b3 : 1;
/* fp+2218:4 */ u8 x2218_b4 : 1;
/* fp+2218:5 */ u8 x2218_b5 : 1;
/* fp+2218:6 */ u8 x2218_b6 : 1;
/* fp+2218:7 */ u8 x2218_b7 : 1;
};
};
union {
/* fp+2219 */ u8 x2219;
/* fp+2219 */ struct {
/* fp+2219:0 */ u8 x2219_b0 : 1;
/* fp+2219:1 */ u8 x2219_b1 : 1;
/* fp+2219:2 */ u8 x2219_b2 : 1;
/* fp+2219:3 */ u8 x2219_b3 : 1;
/* fp+2219:4 */ u8 x2219_b4 : 1;
/* fp+2219:5 */ u8 x2219_b5 : 1;
/* fp+2219:6 */ u8 x2219_b6 : 1;
/* fp+2219:7 */ u8 x2219_b7 : 1;
};
};
/* fp+221A:0 */ u8 x221A_b0 : 1;
/* fp+221A:1 */ u8 x221A_b1 : 1;
/* fp+221A:2 */ u8 x221A_b2 : 1;
/* fp+221A:3 */ u8 x221A_b3 : 1;
/* fp+221A:4 */ u8 x221A_b4 : 1;
/* fp+221A:5 */ u8 x221A_b5 : 1;
/* fp+221A:6 */ u8 x221A_b6 : 1;
/* fp+221A:7 */ u8 x221A_b7 : 1;
/* fp+221B */ union {
/* fp+221B */ u8 x221B;
/* fp+221B */ struct {
/* fp+221B:0 */ u8 x221B_b0 : 1;
/* fp+221B:1 */ u8 x221B_b1 : 1;
/* fp+221B:2 */ u8 x221B_b2 : 1;
/* fp+221B:3 */ u8 x221B_b3 : 1;
/* fp+221B:4 */ u8 x221B_b4 : 1;
/* fp+221B:5 */ u8 x221B_b5 : 1;
/* fp+221B:6 */ u8 x221B_b6 : 1;
/* fp+221B:7 */ u8 x221B_b7 : 1;
};
};
/* fp+221C */ union {
/* fp+221C */ struct {
/* fp+221C */ u8 x221C;
/* fp+221D */ u8 x221D;
};
/* fp+221C */ struct {
/* fp+221C:0 */ u8 x221C_b0 : 1;
/* fp+221C:1 */ u8 x221C_b1 : 1;
/* fp+221C:2 */ u8 x221C_b2 : 1;
/* fp+221C:3 */ u8 x221C_b3 : 1;
/* fp+221C:4 */ u8 x221C_b4 : 1;
/* fp+221C:5 */ u8 x221C_b5 : 1;
/* fp+221C:6 */ u8 x221C_b6 : 1;
/* fp+221C:7 */ u8 x221C_b7 : 1;
/* fp+221D:0 */ u8 x221D_b0 : 1;
/* fp+221D:1 */ u8 x221D_b1 : 1;
/* fp+221D:2 */ u8 x221D_b2 : 1;
/* fp+221D:3 */ u8 x221D_b3 : 1;
/* fp+221D:4 */ u8 x221D_b4 : 1;
/* fp+221D:5 */ u8 x221D_b5 : 1;
/* fp+221D:6 */ u8 x221D_b6 : 1;
/* fp+221D:7 */ u8 x221D_b7 : 1;
};
/* fp+221C */ struct {
/* fp+221C:0 */ u16 x221C_u16_x : 7;
/* fp+221C:7 */ u16 x221C_u16_y : 3;
/* fp+221D:2 */ u16 x221C_u16_z : 6;
};
};
/* fp+221E:0 */ u8 x221E_b0 : 1;
/* fp+221E:1 */ u8 x221E_b1 : 1;
/* fp+221E:2 */ u8 x221E_b2 : 1;
/* fp+221E:3 */ u8 x221E_b3 : 1;
/* fp+221E:4 */ u8 x221E_b4 : 1;
/* fp+221E:5 */ u8 x221E_b5 : 1;
/* fp+221E:6 */ u8 x221E_b6 : 1;
/* fp+221E:7 */ u8 x221E_b7 : 1;
/* fp+221F:0 */ u8 x221F_b0 : 1;
/* fp+221F:1 */ u8 x221F_b1 : 1;
/* fp+221F:2 */ u8 x221F_b2 : 1;
/* fp+221F:3 */ u8 x221F_b3 : 1;
/* fp+221F:4 */ u8 x221F_b4 : 1;
/* fp+221F:5 */ u8 x221F_b5 : 1;
/* fp+221F:6 */ u8 x221F_b6 : 1;
/* fp+221F:7 */ u8 x221F_b7 : 1;
/* fp+2220 */ union {
/* fp+2220 */ struct {
/* fp+2220:0 */ u8 b0 : 3;
/* fp+2220:3 */ u8 b3 : 1;
/* fp+2220:4 */ u8 b4 : 1;
/* fp+2220:5 */ u8 b5 : 1;
/* fp+2220:6 */ u8 b6 : 1;
/* fp+2220:7 */ u8 b7 : 1;
};
/* fp+2220 */ u8 flags;
} x2220_flag;
/* fp+2221 */ union {
/* fp+2221 */ u8 x2221;
/* fp+2221 */ struct {
/* fp+2221:0 */ u8 x2221_b0 : 1;
/* fp+2221:1 */ u8 x2221_b1 : 1;
/* fp+2221:2 */ u8 x2221_b2 : 1;
/* fp+2221:3 */ u8 x2221_b3 : 1;
/* fp+2221:4 */ u8 x2221_b4 : 1;
/* fp+2221:5 */ u8 x2221_b5 : 1;
/* fp+2221:6 */ u8 x2221_b6 : 1;
/* fp+2221:7 */ u8 x2221_b7 : 1;
};
};
/* fp+2222:0 */ u8 x2222_b0 : 1;
/* fp+2222:1 */ u8 x2222_b1 : 1;
/* fp+2222:2 */ u8 x2222_b2 : 1;
/* fp+2222:3 */ u8 x2222_b3 : 1;
/* fp+2222:4 */ u8 x2222_b4 : 1;
/* fp+2222:5 */ u8 x2222_b5 : 1;
/* fp+2222:6 */ u8 x2222_b6 : 1;
/* fp+2222:7 */ u8 x2222_b7 : 1;
/* fp+2223:0 */ u8 x2223_b0 : 1;
/* fp+2223:1 */ u8 x2223_b1 : 1;
/* fp+2223:2 */ u8 x2223_b2 : 1;
/* fp+2223:3 */ u8 x2223_b3 : 1;
/* fp+2223:4 */ u8 x2223_b4 : 1;
/* fp+2223:5 */ u8 x2223_b5 : 1;
/* fp+2223:6 */ u8 x2223_b6 : 1;
/* fp+2223:7 */ u8 x2223_b7 : 1;
/* fp+2224:0 */ u8 x2224_b0 : 1;
/* fp+2224:1 */ u8 x2224_b1 : 1;
/* fp+2224:2 */ u8 x2224_b2 : 1;
/* fp+2224:3 */ u8 x2224_b3 : 1;
/* fp+2224:4 */ u8 x2224_b4 : 1;
/* fp+2224:5 */ u8 x2224_b5 : 1;
/* fp+2224:6 */ u8 x2224_b6 : 1;
/* fp+2224:7 */ u8 x2224_b7 : 1;
/* fp+2225:0 */ u8 x2225_b0 : 1;
/* fp+2225:1 */ u8 x2225_b1 : 1;
/* fp+2225:2 */ u8 x2225_b2 : 1;
/* fp+2225:3 */ u8 x2225_b3 : 1;
/* fp+2225:4 */ u8 x2225_b4 : 1;
/* fp+2225:5 */ u8 x2225_b5 : 1;
/* fp+2225:6 */ u8 x2225_b6 : 1;
/* fp+2225:7 */ u8 x2225_b7 : 1;
/* fp+2226:0 */ u8 x2226_b0 : 1;
/* fp+2226:1 */ u8 x2226_b1 : 1;
/* fp+2226:2 */ u8 x2226_b2 : 1;
/* fp+2226:3 */ u8 x2226_b3 : 1;
/* fp+2226:4 */ u8 x2226_b4 : 1;
/* fp+2226:5 */ u8 x2226_b5 : 1;
/* fp+2226:6 */ u8 x2226_b6 : 1;
/* fp+2226:7 */ u8 x2226_b7 : 1;
/* fp+2227:0 */ u8 x2227_b0 : 1;
/* fp+2227:1 */ u8 x2227_b1 : 1;
/* fp+2227:2 */ u8 x2227_b2 : 1;
/* fp+2227:3 */ u8 x2227_b3 : 1;
/* fp+2227:4 */ u8 x2227_b4 : 1;
/* fp+2227:5 */ u8 x2227_b5 : 1;
/* fp+2227:6 */ u8 x2227_b6 : 1;
/* fp+2227:7 */ u8 x2227_b7 : 1;
/* fp+2228:0 */ u8 x2228_b0 : 1;
/* fp+2228:1 */ u8 x2228_b1 : 1;
/* fp+2228:2 */ u8 x2228_b2 : 1;
/* fp+2228:3 */ u8 x2228_b3 : 2;
/* fp+2228:5 */ u8 x2228_b5 : 1;
/* fp+2228:6 */ u8 x2228_b6 : 1;
/* fp+2228:7 */ u8 x2228_b7 : 1;
/* fp+2229:0 */ u8 x2229_b0 : 1;
/* fp+2229:1 */ u8 x2229_b1 : 1;
/* fp+2229:2 */ u8 x2229_b2 : 1;
/* fp+2229:3 */ u8 x2229_b3 : 1;
/* fp+2229:4 */ u8 x2229_b4 : 1;
/* fp+2229:5 */ u8 x2229_b5_no_normal_motion : 1;
/* fp+2229:6 */ u8 x2229_b6 : 1;
/* fp+2229:7 */ u8 x2229_b7 : 1;
/* fp+222A */ UnkFlagStruct x222A_flag;
/* fp+222B */ u8 filler_x222B;
/* fp+222C */ union Fighter_FighterVars {
/* fp+222C */ struct ftCaptain_FighterVars ca, gn;
/* fp+222C */ struct ftDonkey_FighterVars dk;
/* fp+222C */ struct ftFox_FighterVars fx, fc;
/* fp+222C */ struct ftGameWatch_FighterVars gw;
/* fp+222C */ struct ftKb_FighterVars kb;
/* fp+222C */ struct ftKoopa_FighterVars kp, gk;
/* fp+222C */ struct ftLk_FighterVars lk;
/* fp+222C */ struct ftLuigi_FighterVars lg;
/* fp+222C */ struct ftMario_FighterVars mr;
/* fp+222C */ struct ftMars_FighterVars ms;
/* fp+222C */ struct ftMasterhand_FighterVars mh, ch;
/* fp+222C */ struct ftMewtwo_FighterVars mt;
/* fp+222C */ struct ftNess_FighterVars ns;
/* fp+222C */ struct ftPeach_FighterVars pe;
/* fp+222C */ struct ftPikachu_FighterVars pk, pc;
/* fp+222C */ struct ftPopo_FighterVars pp, nn;
/* fp+222C */ struct ftPurin_FighterVars pr;
/* fp+222C */ struct ftSamus_FighterVars ss;
/* fp+222C */ struct ftSandbag_FighterVars sb;
/* fp+222C */ struct ftSeak_FighterVars sk;
/* fp+222C */ struct ftYoshi_FighterVars ys;
/* fp+222C */ struct ftZakoBoy_FighterVars bo, gl;
/* fp+222C */ struct ftZelda_FighterVars zd;
} fv;
/* fp+2324 */ InternalStageId bury_stage_kind;
/* fp+2328 */ uint bury_timer_1;
/* fp+232C */ uint bury_timer_2;
/* fp+2330 */ IntVec2 x2330;
/* fp+2338 */ IntVec2 x2338;
/// @at{2340} @sz{AC}
/* fp+2340 */ union Fighter_MotionVars {
/* fp+2340 */ u8 _[0x23EC - 0x2340];
/* fp+2340 */ union ftCaptain_MotionVars ca, gn;
/* fp+2340 */ union ftCommon_MotionVars co;
/* fp+2340 */ union ftDonkey_MotionVars dk;
/* fp+2340 */ union ftFox_MotionVars fx, fc;
/* fp+2340 */ union ftGameWatch_MotionVars gw;
/* fp+2340 */ union ftKb_MotionVars kb;
/* fp+2340 */ union ftKoopa_MotionVars kp;
/* fp+2340 */ union ftLk_MotionVars lk;
/* fp+2340 */ union ftLuigi_MotionVars lg;
/* fp+2340 */ union ftMario_MotionVars mr, dr;
/* fp+2340 */ union ftMars_MotionVars ms, fe;
/* fp+2340 */ union ftMasterHand_MotionVars mh, ch;
/* fp+2340 */ union ftMewtwo_MotionVars mt;
/* fp+2340 */ union ftNess_MotionVars ns;
/* fp+2340 */ union ftPe_MotionVars pe;
/* fp+2340 */ union ftPikachu_MotionVars pk, pc;
/* fp+2340 */ union ftPp_MotionVars pp;
/* fp+2340 */ union ftPurin_MotionVars pr;
/* fp+2340 */ union ftSamus_MotionVars ss;
/* fp+2340 */ union ftSeak_MotionVars sk;
/* fp+2340 */ union ftYoshi_MotionVars ys;
/* fp+2340 */ union ftZelda_MotionVars zd;
} mv;
};
struct { int x[1 - 2 * !(sizeof(Fighter) == 0x23EC)]; };;
struct gmScriptEventDefault {
u32 opcode : 6;
u32 value1 : 26;
};
struct ftData_UnkCountStruct {
void* data;
int count;
};
struct UnkFloat6_Camera {
Vec3 x0;
Vec3 xC;
};
struct FtCmdState {
float x0; // timer
float x4; // frame
union {
char* x8; // script
struct {
union {
s16 x0;
struct {
u8 x0_b0 : 1;
u8 x0_b1 : 1;
u8 x0_b2 : 1;
u8 x0_b3 : 1;
u8 x0_b4 : 1;
u8 x0_b5 : 1;
u8 x0_b6 : 1;
u8 x0_b7 : 1;
u8 x1_b0 : 1;
u8 x1_b1 : 1;
u8 x1_b2 : 1;
u8 x1_b3 : 1;
u8 x1_b4 : 1;
u8 x1_b5 : 1;
u8 x1_b6 : 1;
u8 x1_b7 : 1;
};
};
union {
s16 x2;
struct {
u8 x2_b0 : 1;
u8 x2_b1 : 1;
u8 x2_b2 : 1;
u8 x2_b3 : 1;
u8 x2_b4 : 1;
u8 x2_b5 : 1;
u8 x2_b6 : 1;
u8 x2_b7 : 1;
u8 x3_b0 : 1;
u8 x3_b1 : 1;
u8 x3_b2 : 1;
u8 x3_b3 : 1;
u8 x3_b4 : 1;
u8 x3_b5 : 1;
u8 x3_b6 : 1;
u8 x3_b7 : 1;
};
};
}* x8_bits;
};
int xC; // stack_depth
void*(x10[5]); // stack
};
typedef struct ftData_UnkModelStruct {
Fighter_ModelEvent model_events[FTKIND_MAX];
M2C_UNK (*getter[FTKIND_MAX])(HSD_GObj*);
} ftData_UnkModelStruct;
struct ftData_80085FD4_ret {
/* +0 */ M2C_UNK x0;
/* +4 */ M2C_UNK x4;
/* +8 */ M2C_UNK x8;
};
typedef struct ArticleDynamicBones {
BoneDynamicsDesc array[10];
} ArticleDynamicBones;
typedef struct ftDynamics {
/// @todo Very similar to #ItemDynamics.
struct {
/* +0 */ int dynamicsNum;
/* +4 */ ArticleDynamicBones* ftDynamicBones;
};
/* +8 */ int x4;
/* +C */ void* x8;
/* +10 */ Fighter_Part* x10;
} ftDynamics;
typedef struct KirbyHatStruct {
/* +0 */ HSD_Joint* hat_joint;
/* +4 */ s32 joint_num;
/* +8 */ void* hat_vis_table;
/* +C */ ftDynamics* hat_dynamics[5];
} KirbyHatStruct;
typedef struct Kirby_Unk {
/* +0 */ HSD_Joint* x0;
/* +4 */ HSD_Joint** x4;
/* +8 */ M2C_UNK x8;
/* +C */ M2C_UNK xC;
/* +10 */ ftDynamics* x10;
/* +14 */ M2C_UNK x14;
/* +18 */ ftDynamics* x18;
/* +1C */ ftDynamics* x1C;
} Kirby_Unk;
struct ft_80459B88_t {
/* +0 */ Kirby_Unk* x0;
/* +4 */ KirbyHatStruct* hats[FTKIND_MAX];
};
struct { int x[1 - 2 * !(sizeof(struct ft_80459B88_t) == 0x88)]; };;
struct Fighter_804D653C_t {
u32 unk;
u8 unk4;
u8 unk5;
};
/* 148C64 */ void ftCl_Init_OnDeath(ftLk_GObj* gobj);
/* 148CE4 */ void ftCl_Init_OnLoad(ftLk_GObj* gobj);
/* 148DC0 */ void ftCl_Init_OnItemPickup(ftLk_GObj* gobj, bool flag);
/* 148E34 */ void ftCl_Init_OnItemInvisible(ftLk_GObj* gobj);
/* 148E7C */ void ftCl_Init_OnItemVisible(ftLk_GObj* gobj);
/* 148EC4 */ void ftCl_Init_OnItemDrop(ftLk_GObj* gobj, bool flag);
/* 148F38 */ void ftCl_Init_OnItemPickupExt(ftLk_GObj* gobj, bool flag);
/* 149018 */ void ftCl_Init_OnItemDropExt(ftLk_GObj* gobj, bool flag);
/* 14906C */ void ftCl_Init_LoadSpecialAttrs(ftLk_GObj* gobj);
/* 14908C */ void ftCl_Init_OnKnockbackEnter(ftLk_GObj* gobj);
/* 1490D0 */ void ftCl_Init_OnKnockbackExit(ftLk_GObj* gobj);
/* 149114 */ void ftCl_Init_80149114(ftLk_GObj* gobj);
/* 14919C */ void ftCl_Init_8014919C(ftLk_GObj* gobj);
/* 14920C */ bool ftCl_Init_8014920C(ftLk_GObj* gobj);
/* 149268 */ void ftCl_Init_80149268(ftLk_GObj* gobj);
/* 1492C4 */ void ftCl_Init_801492C4(ftLk_GObj* gobj);
/* 1492F4 */ bool ftCl_Init_801492F4(ftLk_GObj* gobj);
/* 149318 */ void ftCl_Init_80149318(ftLk_GObj* gobj);
/* 3D0FA0 */ extern MotionState ftCl_Init_MotionStateTable[ftLk_MS_SelfCount];
/* 3D1240 */ extern char ftCl_Init_DatFilename[];
/* 3D124C */ extern char ftCl_Init_DataName[];
/* 3D13CC */ extern char ftCl_Init_AnimDatFilename[];
/* 3D1448 */ extern Fighter_DemoStrings ftCl_Init_DemoMotionFilenames;
/* 3D1458 */ extern Fighter_CostumeStrings ftCl_Init_CostumeStrings[];
#define MELEE_FT_CHARA_FTCLINK_INLINES_H
#define GALE01_2C8B28
#define MELEE_IT_ITEMS_TYPES_H
#define MELEE_IT_ITEMS_FORWARD_H
typedef struct ItemLogicTable ItemLogicTable;
typedef struct ItemStateTable ItemStateTable;
typedef struct itSword_UnkArticle1 itSword_UnkArticle1;
typedef struct itSword_UnkBytes itSword_UnkBytes;
/// @todo Size unknown.
struct ItemStateTable {
/// @at{0} @sz{4}
enum_t anim_id;
/// @at{4} @sz{4}
HSD_GObjPredicate animated;
/// @at{8} @sz{4}
HSD_GObjEvent physics_updated;
/// @at{C} @sz{4}
HSD_GObjPredicate collided;
};
struct ItemLogicTable {
/// @at{0} @sz{4}
ItemStateTable* states;
/// @at{4} @sz{4}
HSD_GObjEvent spawned;
/// @at{8} @sz{4}
HSD_GObjEvent destroyed;
/// @at{C} @sz{4}
HSD_GObjEvent picked_up;
/// @at{10} @sz{4}
HSD_GObjEvent dropped;
/// @at{14} @sz{4}
HSD_GObjEvent thrown;
/// @at{18} @sz{4}
HSD_GObjPredicate dmg_dealt;
/// @at{1C} @sz{4}
HSD_GObjPredicate dmg_received;
/// @at{20} @sz{4}
HSD_GObjEvent entered_air;
/// @at{24} @sz{4}
HSD_GObjPredicate reflected;
/// @at{28} @sz{4}
HSD_GObjPredicate clanked;
/// @at{2C} @sz{4}
HSD_GObjPredicate absorbed;
/// @at{30} @sz{4}
HSD_GObjPredicate shield_bounced;
/// @at{34} @sz{4}
HSD_GObjPredicate hit_shield;
/// @at{38} @sz{4}
HSD_GObjInteraction evt_unk;
};
struct itSword_UnkBytes {
/* +0 */ u8 x0;
/* +1 */ u8 x1;
/* +2 */ u8 x2;
/* +3 */ u8 x3;
/* +4 */ u8 x4;
/* +5 */ u8 x5;
/* +6 */ u8 x6;
/* +7 */ u8 x7;
/* +8 */ u8 x8;
/* +9 */ u8 x9;
/* +A */ u8 xA;
/* +B */ u8 xB;
/* +C */ u8 xC;
/* +D */ u8 xD;
/* +E */ u8 xE;
/* +F */ u8 xF;
/* +10 */ u8 x10;
};
struct itSword_UnkArticle1 {
/* +0 */ M2C_UNK x0;
/* +4 */ M2C_UNK x4;
/* +8 */ M2C_UNK x8;
/* +C */ float xC;
/* +10 */ float x10;
/* +14 */ float x14;
/* +18 */ int x18;
/* +1C */ itSword_UnkBytes x1C;
};
/* 2C8B28 */ HSD_GObj* it_802C8B28(Item_GObj*, Vec3*, u32, float);
/* 2C8C34 */ void it_802C8C34(Item_GObj*);
/* 2C8C74 */ void it_802C8C74(Item_GObj*);
/* 2C8CDC */ M2C_UNK it_802C8CDC();
/* 2C8F20 */ M2C_UNK it_802C8F20();
/* 2C8F24 */ M2C_UNK it_802C8F24();
/* 2C8F2C */ void it_802C8F2C(Item_GObj*, Item_GObj*);
/* 3F7A28 */ extern ItemStateTable it_803F7A28[];
static inline void checkFighter2244(HSD_GObj* gobj)
{
Fighter* fp;
if (gobj == ((void*) 0)) {
return;
}
fp = gobj->user_data;
if (fp != ((void*) 0) && fp->fv.lk.x18 != ((void*) 0)) {
it_802C8C34(fp->fv.lk.x18);
fp->fv.lk.x18 = ((void*) 0);
}
if (gobj == ((void*) 0)) {
gobj == ((void*) 0);
}
}
#define GALE01_0E2888
/* 0E2888 */ void ftCa_Init_OnDeath(HSD_GObj* gobj);
/* 0E28C8 */ void ftCa_Init_800E28C8(HSD_GObj* gobj);
/* 0E28E8 */ void ftCa_Init_OnItemPickup(HSD_GObj* gobj, bool);
/* 0E29C8 */ void ftCa_Init_OnItemInvisible(HSD_GObj* gobj);
/* 0E2A10 */ void ftCa_Init_OnItemVisible(HSD_GObj* gobj);
/* 0E2A58 */ void ftCa_Init_OnItemDrop(HSD_GObj* gobj, bool);
/* 0E2AAC */ void ftCa_Init_OnLoadForGanon(Fighter*);
/* 0E2AEC */ void ftCa_Init_OnLoad(HSD_GObj* gobj);
/* 0E2B40 */ void ftCa_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 3C72B8 */ extern MotionState ftCa_Init_MotionStateTable[ftCa_MS_SelfCount];
/* 3C7598 */ extern char ftCa_Init_DatFilename[];
/* 3C75A4 */ extern char ftCa_Init_DataName[];
/* 3C76A0 */ extern char ftCa_Init_AnimDatFilename[];
/* 3C772C */ extern Fighter_DemoStrings ftCa_Init_DemoMotionFilenames;
/* 3C773C */ extern Fighter_CostumeStrings ftCa_Init_CostumeStrings[];
#define GALE01_0E4040
/* 0E4354 */ void ftCa_SpecialHi_Anim(HSD_GObj* gobj);
/* 0E4838 */ void ftCa_SpecialLwEndAir_Coll(HSD_GObj* gobj);
/* 0E49DC */ void ftCa_SpecialHiThrow1_Coll(HSD_GObj* gobj);
/* 0E4A78 */ void ftCa_SpecialHi_Enter(HSD_GObj* gobj);
/* 0E4B60 */ void ftCa_SpecialHi_IASA(HSD_GObj* gobj);
/* 0E4BF8 */ void ftCa_SpecialHi_Phys(HSD_GObj* gobj);
/* 0E4CF4 */ void ftCa_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 0E4E1C */ void ftCa_SpecialHi_Coll(HSD_GObj* gobj);
/* 0E4EE8 */ void ftCa_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 0E4F48 */ void ftCa_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 0E4FDC */ void ftCa_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 0E50D8 */ void ftCa_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 0E51F8 */ void ftCa_SpecialHiCatch_Anim(HSD_GObj* gobj);
/* 0E5234 */ void ftCa_SpecialHiCatch_IASA(HSD_GObj* gobj);
/* 0E5238 */ void ftCa_SpecialHiCatch_Phys(HSD_GObj* gobj);
/* 0E523C */ void ftCa_SpecialHiCatch_Coll(HSD_GObj* gobj);
/* 0E5310 */ void ftCa_SpecialHiThrow0_Anim(HSD_GObj* gobj);
/* 0E5384 */ void ftCa_SpecialHiThrow0_IASA(HSD_GObj* gobj);
/* 0E5388 */ void ftCa_SpecialHiThrow0_Phys(HSD_GObj* gobj);
/* 0E54B8 */ void ftCa_SpecialHiThrow0_Coll(HSD_GObj* gobj);
#define GALE01_0E415C
/* 0E3EAC */ void ftCa_SpecialHi_800E3EAC(HSD_GObj* gobj);
/* 0E4040 */ void ftCa_SpecialLw_Enter(HSD_GObj* gobj);
/* 0E40D8 */ void ftCa_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 0E415C */ void ftCa_SpecialLw_Anim(HSD_GObj* gobj);
/* 0E4268 */ void ftCa_SpecialLwEnd_Anim(HSD_GObj* gobj);
/* 0E42A4 */ void ftCa_SpecialLwEndAir_Anim(HSD_GObj* gobj);
/* 0E42E0 */ void ftCa_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 0E4354 */ void ftCa_SpecialAirLwEnd_Anim(HSD_GObj* gobj);
/* 0E4390 */ void ftCa_SpecialAirLwEndAir_Anim(HSD_GObj* gobj);
/* 0E43CC */ void ftCa_SpecialHiThrow1_Anim(HSD_GObj* gobj);
/* 0E4408 */ void ftCa_SpecialLw_Phys(HSD_GObj* gobj);
/* 0E449C */ void ftCa_SpecialLwEnd_Phys(HSD_GObj* gobj);
/* 0E455C */ void ftCa_SpecialLwEndAir_Phys(HSD_GObj* gobj);
/* 0E45E4 */ void ftCa_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 0E4618 */ void ftCa_SpecialAirLwEnd_Phys(HSD_GObj* gobj);
/* 0E4678 */ void ftCa_SpecialAirLwEndAir_Phys(HSD_GObj* gobj);
/* 0E4698 */ void ftCa_SpecialHiThrow1_Phys(HSD_GObj* gobj);
/* 0E46B8 */ void ftCa_SpecialLw_Coll(HSD_GObj* gobj);
/* 0E47B0 */ void ftCa_SpecialLwEnd_Coll(HSD_GObj* gobj);
/* 0E4838 */ void ftCa_SpecialLwEndAir_Coll(HSD_GObj* gobj);
/* 0E48BC */ void ftCa_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 0E493C */ void ftCa_SpecialAirLwEnd_Coll(HSD_GObj* gobj);
/* 0E495C */ void ftCa_SpecialAirLwEndAir_Coll(HSD_GObj* gobj);
/* 0E4A78 */ void ftCa_SpecialHi_Enter(HSD_GObj* gobj);
/* 0E4CF4 */ void ftCa_SpecialAirHi_Enter(HSD_GObj* gobj);
/// @file
/// Neutral Special - Falcon/Warlock Punch (SpecialN)
#define GALE01_0E2B80
/* 0E2B80 */ void ftCa_SpecialN_Enter(HSD_GObj* gobj);
/* 0E2C00 */ void ftCa_SpecialAirN_Enter(HSD_GObj* gobj);
/* 0E2C80 */ void ftCa_SpecialN_Anim(HSD_GObj* gobj);
/* 0E2D5C */ void ftCa_SpecialAirN_Anim(HSD_GObj* gobj);
/* 0E2E38 */ void ftCa_SpecialN_IASA(HSD_GObj* gobj);
/* 0E2E3C */ void ftCa_SpecialAirN_IASA(HSD_GObj* gobj);
/* 0E2F2C */ void ftCa_SpecialN_Phys(HSD_GObj* gobj);
/* 0E3018 */ void ftCa_SpecialAirN_Phys(HSD_GObj* gobj);
/* 0E3168 */ void ftCa_SpecialN_Coll(HSD_GObj* gobj);
/* 0E31F4 */ void ftCa_SpecialAirN_Coll(HSD_GObj* gobj);
/// @file
/// Side Special - Raptor Boost / Gerudo Dragon (SpecialS)
#define GALE01_0E3278
/* 0E3278 */ void ftCa_SpecialS_RemoveGFX(HSD_GObj* gobj);
/* 0E32B0 */ void ftCa_SpecialS_Enter(HSD_GObj* gobj);
/* 0E33E0 */ void ftCa_SpecialAirS_Enter(HSD_GObj* gobj);
/* 0E350C */ void ftCa_SpecialS_OnDetect(HSD_GObj* gobj);
/* 0E384C */ void ftCa_SpecialSStart_Anim(HSD_GObj* gobj);
/* 0E3888 */ void ftCa_SpecialS_Anim(HSD_GObj* gobj);
/* 0E3964 */ void ftCa_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 0E39F0 */ void ftCa_SpecialAirS_Anim(HSD_GObj* gobj);
/* 0E3B0C */ void ftCa_SpecialSStart_IASA(HSD_GObj* gobj);
/* 0E3B10 */ void ftCa_SpecialS_IASA(HSD_GObj* gobj);
/* 0E3B14 */ void ftCa_SpecialAirSStart_IASA(HSD_GObj* gobj);
/* 0E3B18 */ void ftCa_SpecialAirS_IASA(HSD_GObj* gobj);
/* 0E3B1C */ void ftCa_SpecialSStart_Phys(HSD_GObj* gobj);
/* 0E3B3C */ void ftCa_SpecialS_Phys(HSD_GObj* gobj);
/* 0E3B5C */ void ftCa_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 0E3BD0 */ void ftCa_SpecialAirS_Phys(HSD_GObj* gobj);
/* 0E3C38 */ void ftCa_SpecialSStart_Coll(HSD_GObj* gobj);
/* 0E3D44 */ void ftCa_SpecialS_Coll(HSD_GObj* gobj);
/* 0E3DE4 */ void ftCa_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 0E3E40 */ void ftCa_SpecialAirS_Coll(HSD_GObj* gobj);
#define GALE01_09C4F8
/* 09C4F8 */ bool ftCo_8009C4F8(ftCo_GObj* gobj);
#define GALE01_09F480
/* 09F4A4 */ M2C_UNK ftCo_8009F4A4();
/* 09F578 */ void ftCo_8009F578(ftCo_Fighter* fp);
/* 09F5AC */ void ftCo_8009F5AC(Fighter*);
/* 09F75C */ void ftCo_8009F75C(Fighter* fp, bool set_alpha);
/* 09F7F8 */ void ftCo_8009F7F8(Fighter*);
#define GALE01_09F7F8
/* 09F834 */ void ftCo_8009F834(ftCo_GObj*, int, Fighter_Part, int, int, Vec3*,
Vec3*, float);
/* 0A0098 */ void ftCo_800A0098(ftCo_Fighter* fp);
#define GALE01_0A0148
#define MELEE_MP_FORWARD_H
typedef struct mp_UnkStruct0 mp_UnkStruct0;
typedef struct mp_UnkStruct1 mp_UnkStruct1;
typedef struct mp_UnkStruct2 mp_UnkStruct2;
typedef struct mp_UnkStruct3 mp_UnkStruct3;
typedef struct mp_UnkStruct4 mp_UnkStruct4;
typedef struct mp_UnkStruct5 mp_UnkStruct5;
typedef struct mp_UnkStruct6 mp_UnkStruct6;
typedef struct mp_UnkStruct7 mp_UnkStruct7;
typedef struct mpisland mpisland;
typedef void (*mpLib_Callback)(s32, s32, CollData*, s32, s32, f32);
typedef bool (*mpColl_Callback)(CollData*, u32);
struct _m2c_stack_ftCo_800A3554 {
/* 0x00 */ char pad_0[0x10];
/* 0x10 */ f32 f;
/* 0x14 */ Vec3 vec;
/* 0x20 */ char pad_20[0x18];
}; /* size = 0x38 */
/* 09D4F0 */ void ftCo_800A05F4(ftCo_Fighter* fp);
/* 09D694 */ void ftCo_800A0798(ftCo_Fighter* fp);
/* 09DB88 */ void ftCo_800A0C8C(ftCo_Fighter* fp);
/* 09DCA0 */ void ftCo_800A0DA4(Fighter* fp);
/* 09DEAC */ bool ftCo_800A0FB0(Vec3* arg0, int* arg1, int arg2, int arg3,
int arg4, int arg5, int arg6, float arg7,
float arg8, float arg9, float arg10,
float arg11);
/* 09DF18 */ void ftCo_800A101C(Fighter*, int, int, int);
/* 09E6E0 */ float ftCo_800A17E4(Fighter* fp);
/* 09E770 */ float ftCo_800A1874(Fighter* fp);
/* 09E800 */ float ftCo_800A1904(Fighter* fp);
/* 09E844 */ float ftCo_800A1948(Fighter* fp);
/* 09E888 */ HSD_Pad ftCo_800A198C(Fighter* fp);
/* 09E890 */ float ftCo_800A1994(Fighter* fp);
/* 09E920 */ float ftCo_800A1A24(Fighter* fp);
/* 09F06C */ bool ftCo_800A2170(ftCo_Fighter* fp0, ftCo_Fighter* fp1);
/* 09F7CC */ bool ftCo_800A28D0(ftCo_Fighter* fp, float arg1);
/* 09F894 */ bool ftCo_800A2998(ftCo_Fighter* fp, float arg1);
/* 09F96C */ float ftCo_800A2A70(ftCo_Fighter* fp, bool);
/* 09FAD0 */ bool ftCo_800A2BD4(ftCo_Fighter* fp);
/* 09FB04 */ bool ftCo_800A2C08(ftCo_Fighter* fp);
/* 0A0030 */ bool ftCo_800A3134(ftCo_Fighter* fp);
/* 0A007C */ bool ftCo_IsGrabbing(ftCo_Fighter* fp);
/* 0A00FC */ bool ftCo_800A3200(ftCo_Fighter* fp);
/* 0A0740 */ bool ftCo_IsAlly(ftCo_Fighter* fp0, ftCo_Fighter* fp1);
/* 0A193C */ ftCo_Fighter* ftCo_800A4A40(ftCo_Fighter* fp);
/* 0A1AB4 */ float ftCo_800A1AB4(ftCo_Fighter* fp0, ftCo_Fighter* fp1);
/* 0A1BA8 */ bool ftCo_800A1BA8(ftCo_Fighter* fp);
/* 0A1C44 */ bool ftCo_800A1C44(ftCo_Fighter* fp);
/* 0A1CA8 */ bool ftCo_800A1CA8(ftCo_Fighter* fp);
/* 0A1D88 */ M2C_UNK ftCo_800A4E8C();
/* 0A2040 */ bool ftCo_800A2040(Fighter* fp);
/* 0A2804 */ bool ftCo_800A5908(Fighter* fp);
/* 0A287C */ bool ftCo_800A5980(Fighter* fp);
/* 0A28BC */ bool ftCo_800A59C0(M2C_UNK);
/* 0A28E0 */ enum_t ftCo_800A59E4(ftCo_Fighter* fp);
/* 0A2924 */ bool ftCo_800A5A28(ftCo_Fighter* fp);
/* 0A41F4 */ bool ftCo_800B395C(ftCo_GObj* gobj, int);
/* 0A5A5C */ bool ftCo_800A5A5C(ftCo_Fighter*);
/* 0A5A90 */ bool ftCo_800A5A90(ftCo_Fighter* fp);
/* 0B07FC */ void ftCo_800B3900(Fighter_GObj* gobj);
/* 0B0858 */ M2C_UNK ftCo_800B3958();
/// @todo Static functions belong in #ftCo_0A01.c
/* 09D044 */ static M2C_UNK ftCo_800A0148();
/* 09D06C */ static M2C_UNK ftCo_800AC7D4();
/* 09D280 */ static void ftCo_800A0384(ftCo_Fighter* fp);
/* 09D3DC */ static M2C_UNK ftCo_800ACB44();
/* 09D404 */ static void ftCo_800A0508(ftCo_Fighter* fp);
/* 09D5F4 */ static M2C_UNK ftCo_800ACD5C();
/* 09D7EC */ static void ftCo_800A08F0(ftCo_Fighter* fp);
/* 09D9F0 */ static void ftCo_800A0AF4(ftCo_Fighter* fp);
/* 09DBAC */ static void ftCo_800A0CB0(ftCo_Fighter* fp);
/* 09DCC4 */ static void ftCo_800AD42C(ftCo_Fighter* fp);
/* 09DDE4 */ static M2C_UNK ftCo_800AD54C();
/* 09DDFC */ static bool ftCo_800A0F00(ftCo_GObj* gobj);
/* 09E094 */ static M2C_UNK ftCo_800AD7FC();
/* 09E4C0 */ static M2C_UNK ftCo_800ADC28();
/* 09E6E0 */ static void ftCo_800ADE48(ftCo_Fighter* fp);
/* 09EBC0 */ static void ftCo_800A1CC4(ftCo_Fighter* fp, StageBlastZone*);
/* 09EE38 */ static void ftCo_800A1F3C(ftCo_Fighter* fp, float arg1,
float arg2, float arg3);
/* 09EE94 */ static bool ftCo_800A1F98(int x, float y);
/* 09EF9C */ static void ftCo_800A20A0(ftCo_Fighter* fp);
/* 09F044 */ static M2C_UNK ftCo_800AE7AC();
/* 09F0F8 */ static bool ftCo_800A21FC(ftCo_Fighter* fp);
/* 09F198 */ static M2C_UNK ftCo_800A229C();
/* 09F324 */ static M2C_UNK ftCo_800AEA8C();
/* 09F588 */ static void ftCo_800AECF0(ftCo_Fighter* fp);
/* 09F614 */ static bool ftCo_800A2718(mp_UnkStruct0*);
/* 09F850 */ static M2C_UNK ftCo_800AEFB8();
/* 09FB28 */ static M2C_UNK ftCo_800AF290();
/* 09FB7C */ static M2C_UNK ftCo_800A2C80();
/* 0A0024 */ static M2C_UNK ftCo_800AF78C();
/* 0A0130 */ static M2C_UNK ftCo_800A3234();
/* 0A0394 */ static bool ftCo_800A3498(ftCo_Fighter* fp);
/* 0A0450 */ static bool ftCo_800A3554(ftCo_Fighter* fp, float);
/* 0A04D8 */ static void ftCo_800AFC40(ftCo_Fighter* fp);
/* 0A060C */ static bool ftCo_800A3710(ftCo_Fighter* fp);
/* 0A06D4 */ static M2C_UNK ftCo_800AFE3C();
/* 0A0804 */ static bool ftCo_800A3908(ftCo_Fighter* fp, bool);
/* 0A0990 */ static M2C_UNK ftCo_800B00F8();
/* 0A0D74 */ static M2C_UNK ftCo_800B04DC();
/* 0A0F34 */ static bool ftCo_800A4038(ftCo_Fighter* fp, bool);
/* 0A0FF8 */ static void ftCo_800B0760(ftCo_Fighter* fp);
/* 0A11B0 */ static void ftCo_800B0918(ftCo_Fighter* fp0, ftCo_Fighter* fp1);
/* 0A138C */ static void ftCo_800B0AF4(ftCo_Fighter* fp);
/* 0A1540 */ static bool ftCo_800B0CA8(ftCo_Fighter* fp0, ftCo_Fighter* fp1);
/* 0A1664 */ static M2C_UNK ftCo_800A4768();
/* 0A1730 */ static bool ftCo_800B0E98(ftCo_Fighter* fp0, ftCo_Fighter* fp1);
/* 0A18B0 */ static void ftCo_800A49B4(ftCo_Fighter* fp);
/* 0A18B4 */ static M2C_UNK ftCo_800B101C();
/* 0A1AE8 */ static ftCo_Fighter* ftCo_800A4BEC(ftCo_Fighter* fp);
/* 0A1B04 */ static M2C_UNK ftCo_800B126C();
/* 0A1B38 */ static bool ftCo_800A1B38(enum_t);
/* 0A1D10 */ static M2C_UNK ftCo_800B1478();
/* 0A1FD0 */ static ftCo_Fighter* ftCo_800A50D4(ftCo_Fighter* fp);
/* 0A2068 */ static M2C_UNK ftCo_800B17D0();
/* 0A2190 */ static ftCo_Fighter* ftCo_800A5294(ftCo_Fighter* fp,
int player_id);
/* 0A22D8 */ static M2C_UNK ftCo_800A53DC();
/* 0A2350 */ static M2C_UNK ftCo_800B1AB8();
// /* 0A2638 */ static void ftCo_800B1DA0(ftCo_Fighter* fp);
/* 0A2788 */ static M2C_UNK ftCo_800B1EF0();
/* 0A2798 */ static ftCo_Fighter* ftCo_800A589C(ftCo_Fighter* fp);
/* 0A2840 */ static bool ftCo_800A5944(Item* ip);
/* 0A2A60 */ static M2C_UNK ftCo_800B21C8();
/* 0A2D50 */ static M2C_UNK ftCo_800B24B8();
/* 0A3028 */ static void ftCo_800B2790(ftCo_Fighter* fp);
/* 0A3C48 */ static void ftCo_800B33B0(ftCo_Fighter* fp);
/* 0A5ACC */ static M2C_UNK ftCo_800A5ACC();
/* 0A5CE0 */ static M2C_UNK ftCo_800A5CE0(ftCo_Fighter* fp);
/* 0A5F4C */ static struct Fighter_x1A88_t* ftCo_800A5F4C(ftCo_Fighter* fp,
int);
/* 0A61D8 */ static M2C_UNK ftCo_800A61D8();
/* 0A648C */ static int ftCo_800A648C(ftCo_Fighter* fp);
/* 0A6700 */ static bool ftCo_800A6700(ftCo_Fighter* fp, Vec3*, Vec3*);
/* 0A6A98 */ static M2C_UNK ftCo_800A6A98();
/* 0A6D2C */ static M2C_UNK ftCo_800A6D2C();
/* 0A6FC4 */ static M2C_UNK ftCo_800A6FC4();
/* 0A75DC */ static void ftCo_800A75DC(ftCo_Fighter* fp0, ftCo_Fighter* fp1);
/* 0A7AAC */ static void ftCo_800A7AAC(ftCo_Fighter* fp);
/* 0A80E4 */ static void ftCo_800A80E4(ftCo_Fighter* fp);
/* 0A8210 */ static M2C_UNK ftCo_800A8210();
/* 0A866C */ static M2C_UNK ftCo_800A866C();
/* 0A8940 */ static void ftCo_800A8940(ftCo_Fighter* fp);
/* 0A8DE4 */ static void ftCo_800A8DE4(ftCo_Fighter* fp);
/* 0A8EB0 */ static M2C_UNK ftCo_800A8EB0();
/* 0A92CC */ static void ftCo_800A92CC(ftCo_Fighter* fp);
/* 0A949C */ static void ftCo_800A949C(ftCo_Fighter* fp);
/* 0A963C */ static void ftCo_800A963C(ftCo_Fighter* fp);
/* 0A96B8 */ static M2C_UNK ftCo_800A96B8();
/* 0A9904 */ static M2C_UNK ftCo_800A9904();
/* 0A9CB4 */ static void ftCo_800A9CB4(ftCo_Fighter* fp);
/* 0AA320 */ static void ftCo_800AA320(ftCo_Fighter* fp, int*, int*);
/* 0AA42C */ static M2C_UNK ftCo_800AA42C();
/* 0AA844 */ static M2C_UNK ftCo_800AA844();
/* 0AABC8 */ static void ftCo_800AABC8(ftCo_Fighter* fp);
/* 0AACD0 */ static M2C_UNK ftCo_800AACD0();
/* 0AAF48 */ static M2C_UNK ftCo_800AAF48();
/* 0AB224 */ static void ftCo_800AB224(ftCo_Fighter* fp);
/* 0ABA34 */ static void ftCo_800ABA34(ftCo_Fighter* fp);
/* 0ABBA8 */ static M2C_UNK ftCo_800ABBA8();
/* 0AC30C */ static void ftCo_800AC30C(ftCo_Fighter* fp);
/* 0AC434 */ static void ftCo_800AC434(ftCo_Fighter* fp);
/* 0AC5A0 */ static M2C_UNK ftCo_800AC5A0();
/* 0B2AFC */ static void ftCo_800B2AFC(ftCo_Fighter* fp);
#define GALE01_0B3E04
/* 0B3E04 */ void ftCo_800B3E04(ftCo_Fighter* fp);
/* 0B463C */ void ftCo_800B463C(ftCo_Fighter* fp, int);
/* 0B46B8 */ void ftCo_800B46B8(ftCo_Fighter* fp, int, int);
/// @todo Static declarations belong in #ftCo_0B3E.c
/* 0B462C */ static M2C_UNK ftCo_800B462C(ftCo_Fighter* fp);
/* 0B4778 */ static void ftCo_800B4778(ftCo_Fighter* fp, int, s8, s8);
/* 0B4880 */ static void ftCo_800B4880(ftCo_Fighter* fp, int);
/* 0B49F4 */ static M2C_UNK ftCo_800B49F4();
/* 0B4A78 */ static void ftCo_800B4A78(ftCo_Fighter* fp);
/* 0B4AB0 */ static M2C_UNK ftCo_800B4AB0();
/* 0B52AC */ static M2C_UNK ftCo_800B52AC();
/* 0B5AB0 */ static M2C_UNK ftCo_800B5AB0();
/* 0B6208 */ static M2C_UNK ftCo_800B6208();
/* 0B630C */ static M2C_UNK ftCo_800B630C();
/* 0B63D8 */ static M2C_UNK ftCo_800B63D8();
/* 0B658C */ static M2C_UNK ftCo_800B658C();
/* 0B683C */ static M2C_UNK ftCo_800B683C();
/* 0B7180 */ static M2C_UNK ftCo_800B7180();
/* 0B732C */ static M2C_UNK ftCo_800B732C();
/* 0B7638 */ static M2C_UNK ftCo_800B7638();
/* 0B77E8 */ static M2C_UNK ftCo_800B77E8();
/* 0B885C */ static M2C_UNK ftCo_800B885C();
/* 0B89CC */ static M2C_UNK ftCo_800B89CC();
/* 0B8A9C */ static M2C_UNK ftCo_800B8A9C();
/* 0B9020 */ static M2C_UNK ftCo_800B9020();
/* 0B920C */ static M2C_UNK ftCo_800B920C();
/* 0B92D4 */ static void ftCo_800B92D4(ftCo_Fighter* fp);
/* 0B9340 */ static M2C_UNK ftCo_800B9340();
/* 0B9504 */ static M2C_UNK ftCo_800B9504();
/* 0B9704 */ static M2C_UNK ftCo_800B9704();
/* 0B9790 */ static M2C_UNK ftCo_800B9790();
/* 0B98C8 */ static M2C_UNK ftCo_800B98C8();
/* 0B9A04 */ static M2C_UNK ftCo_800B9A04();
/* 0B9CBC */ static M2C_UNK ftCo_800B9CBC();
/* 0B9F6C */ static bool ftCo_800B9F6C(ftCo_Fighter* fp);
/* 0B9F90 */ static M2C_UNK ftCo_800B9F90();
/* 0BA080 */ static M2C_UNK ftCo_800BA080();
/* 0BA160 */ static M2C_UNK ftCo_800BA160();
/* 0BA224 */ static M2C_UNK ftCo_800BA224();
/* 0BA2E8 */ static M2C_UNK ftCo_800BA2E8();
/* 0BA674 */ static M2C_UNK ftCo_800BA674();
/* 0BA9A0 */ static M2C_UNK ftCo_800BA9A0();
/* 0BB104 */ static M2C_UNK ftCo_800BB104();
/* 0BB220 */ static M2C_UNK ftCo_800BB220();
/* 0BB768 */ static M2C_UNK ftCo_800BB768();
/* 0BB9B4 */ static M2C_UNK ftCo_800BB9B4();
#define GALE01_0C3598
/* 0C3598 */ void ftCo_800C3598(ftCo_GObj* gobj);
/* 0C36DC */ void ftCo_800C36DC(ftCo_GObj* gobj);
/* 0C37A0 */ void ftCo_800C37A0(ftCo_GObj* gobj);
#define GALE01_0C60C8
/* 0C60C8 */ bool ftCo_800C60C8(ftCo_GObj* gobj);
/* 0C6110 */ void ftCo_800C6110(ftCo_GObj* gobj);
#define GALE01_0C3A14
/* 0C3A14 */ bool ftCo_800C3A14(ftCo_GObj* gobj);
/* 0C3B10 */ bool ftCo_800C3B10(ftCo_GObj* gobj);
/* 0C3BE8 */ void ftCo_800C3BE8(ftCo_GObj* gobj);
/* 0C3CC0 */ void ftCo_800C3CC0(ftCo_GObj* gobj);
/* 0C3D6C */ void ftCo_AirCatch_Anim(ftCo_GObj* gobj);
/* 0C4380 */ void ftCo_AirCatchHit_Anim(ftCo_GObj* gobj);
/* 0C4384 */ void ftCo_AirCatch_IASA(ftCo_GObj* gobj);
/* 0C4388 */ void ftCo_AirCatchHit_IASA(ftCo_GObj* gobj);
/* 0C438C */ void ftCo_AirCatch_Phys(ftCo_GObj* gobj);
/* 0C4438 */ void ftCo_AirCatchHit_Phys(ftCo_GObj* gobj);
/* 0C447C */ void ftCo_AirCatch_Coll(ftCo_GObj* gobj);
#define GALE01_08A9F8
/* 08A9F8 */ bool ftCo_Attack1_CheckInput(ftCo_GObj* gobj);
/* 08AC9C */ void ftCo_Attack11_Anim(ftCo_GObj* gobj);
/* 08ACD8 */ void ftCo_Attack11_IASA(ftCo_GObj* gobj);
/* 08ADF0 */ void ftCo_Attack11_Phys(ftCo_GObj* gobj);
/* 08AE10 */ void ftCo_Attack11_Coll(ftCo_GObj* gobj);
/* 08B040 */ void ftCo_Attack12_Anim(ftCo_GObj* gobj);
/* 08B07C */ void ftCo_Attack12_IASA(ftCo_GObj* gobj);
/* 08B354 */ void ftCo_Attack13_Anim(ftCo_GObj* gobj);
/* 08B390 */ void ftCo_Attack13_IASA(ftCo_GObj* gobj);
#define GALE01_08CD68
/* 08CD68 */ bool ftCo_AttackAir_CheckItemThrowInput(ftCo_GObj* gobj);
/* 08CE68 */ FtMotionId ftCo_AttackAir_GetMsidFromCStick(ftCo_Fighter* fp);
/* 08CF70 */ void ftCo_AttackAir_EnterFromCStick(ftCo_GObj* gobj);
/* 08CFAC */ void ftCo_AttackAir_EnterFromMsid(ftCo_GObj* gobj, FtMotionId);
/* 08D010 */ void ftCo_AttackAir_Anim(ftCo_GObj* gobj);
/* 08D08C */ void ftCo_AttackAirN_IASA(ftCo_GObj* gobj);
/* 08D194 */ void ftCo_AttackAirF_IASA(ftCo_GObj* gobj);
/* 08D29C */ void ftCo_AttackAirB_IASA(ftCo_GObj* gobj);
/* 08D3A4 */ void ftCo_AttackAirHi_IASA(ftCo_GObj* gobj);
/* 08D4AC */ void ftCo_AttackAirLw_IASA(ftCo_GObj* gobj);
/* 08D5B4 */ void ftCo_AttackAir_Phys(ftCo_GObj* gobj);
/* 08D5D4 */ void ftCo_AttackAir_Coll(ftCo_GObj* gobj);
#define GALE01_08B3E4
/* 08B3E4 */ bool ftCo_AttackDash_CheckInput(ftCo_GObj* gobj);
/* 08B548 */ void ftCo_AttackDash_Anim(ftCo_GObj* gobj);
/* 08B584 */ void ftCo_AttackDash_SetMv0(ftCo_GObj* gobj);
/* 08B5AC */ void ftCo_AttackDash_IASA(ftCo_GObj* gobj);
/* 08B600 */ void ftCo_AttackDash_Phys(ftCo_GObj* gobj);
/* 08B638 */ void ftCo_AttackDash_Coll(ftCo_GObj* gobj);
#define GALE01_08B980
/* 08B980 */ bool ftCo_AttackHi3_CheckInput(ftCo_GObj* gobj);
/* 08BA98 */ void ftCo_AttackHi3_Anim(ftCo_GObj* gobj);
/* 08BAD4 */ void ftCo_AttackHi3_IASA(ftCo_GObj* gobj);
/* 08BB04 */ void ftCo_AttackHi3_Phys(ftCo_GObj* gobj);
/* 08BB24 */ void ftCo_AttackHi3_Coll(ftCo_GObj* gobj);
#define GALE01_08C830
/* 08C830 */ bool ftCo_AttackHi4_CheckInput(ftCo_GObj* gobj);
/* 08C948 */ bool ftCo_AttackHi4_CheckInputNoD0(ftCo_GObj* gobj);
/* 08CA98 */ void ftCo_AttackHi4_Anim(ftCo_GObj* gobj);
/* 08CAD4 */ void ftCo_AttackHi4_IASA(ftCo_GObj* gobj);
/* 08CB04 */ void ftCo_AttackHi4_Phys(ftCo_GObj* gobj);
/* 08CB24 */ void ftCo_AttackHi4_Coll(ftCo_GObj* gobj);
#define GALE01_08BB44
/* 08BB44 */ bool ftCo_AttackLw3_CheckInput(ftCo_GObj* gobj);
/* 08BCFC */ void ftCo_AttackLw3_Anim(ftCo_GObj* gobj);
/* 08BD80 */ void ftCo_AttackLw3_IASA(ftCo_GObj* gobj);
/* 08BF84 */ void ftCo_AttackLw3_Phys(ftCo_GObj* gobj);
/* 08BFA4 */ void ftCo_AttackLw3_Coll(ftCo_GObj* gobj);
#define GALE01_08CB44
/* 08CB44 */ bool ftCo_AttackLw4_CheckInput(ftCo_GObj* gobj);
/* 08CCBC */ void ftCo_AttackLw4_Anim(ftCo_GObj* gobj);
/* 08CCF8 */ void ftCo_AttackLw4_IASA(ftCo_GObj* gobj);
/* 08CD28 */ void ftCo_AttackLw4_Phys(ftCo_GObj* gobj);
/* 08CD48 */ void ftCo_AttackLw4_Coll(ftCo_GObj* gobj);
#define GALE01_08B8D4
/* 08B658 */ bool ftCo_AttackS3_CheckInput(ftCo_GObj* gobj);
/* 08B8D4 */ void ftCo_AttackS3_Anim(ftCo_GObj* gobj);
/* 08B910 */ void ftCo_AttackS3_IASA(ftCo_GObj* gobj);
/* 08B940 */ void ftCo_AttackS3_Phys(ftCo_GObj* gobj);
/* 08B960 */ void ftCo_AttackS3_Coll(ftCo_GObj* gobj);
#define GALE01_08BFC4
/* 08BFC4 */ bool ftCo_AttackS4_CheckInput(ftCo_GObj* gobj);
/* 08C114 */ bool ftCo_AttackS4_8008C114(ftCo_GObj* gobj);
/* 08C520 */ void ftCo_AttackS4_Anim(ftCo_GObj* gobj);
/* 08C55C */ void ftCo_AttackS4_IASA(ftCo_GObj* gobj);
/* 08C7F0 */ void ftCo_AttackS4_Phys(ftCo_GObj* gobj);
/* 08C810 */ void ftCo_AttackS4_Coll(ftCo_GObj* gobj);
#define GALE01_09EB18
/* 09EB18 */ void ftCo_8009EB18(ftCo_GObj* gobj);
/* 09EC08 */ void ftCo_BarrelWait_Anim(ftCo_GObj* gobj);
/* 09EC0C */ void ftCo_BarrelWait_IASA(ftCo_GObj* gobj);
/* 09EC3C */ void ftCo_BarrelWait_Phys(ftCo_GObj* gobj);
/* 09EC40 */ void ftCo_BarrelWait_Coll(ftCo_GObj* gobj);
#define GALE01_0C0874
/* 0C0874 */ void ftCo_800C0874(ftCo_GObj* gobj, M2C_UNK arg1,
ftCommon_BuryType arg2);
/* 0C08A0 */ void ftCo_800C08A0(ftCo_GObj* gobj, ftCo_GObj* arg1,
DynamicsDesc* arg2, ftCommon_BuryType arg3);
/* 0C09B4 */ void ftCo_800C09B4(ftCo_GObj* gobj);
/* 0C0A28 */ bool ftCo_800C0A28(ftCo_GObj* gobj, M2C_UNK arg1,
ftCommon_BuryType arg2);
/* 0C0A98 */ void ftCo_800C0A98(ftCo_GObj* gobj);
/* 0C0B20 */ void ftCo_800C0B20(ftCo_GObj* gobj);
/* 0C0C88 */ bool ftCo_800C0C88(ftCommon_BuryType);
/* 0C0CB8 */ bool ftCo_800C0CB8(ftCo_GObj* gobj);
/* 0C0D0C */ void ftCo_800C0D0C(ftCo_GObj* gobj);
/* 0C0F34 */ void ftCo_Bury_Anim(ftCo_GObj* gobj);
/* 0C0FC8 */ void ftCo_Bury_IASA(ftCo_GObj* gobj);
/* 0C0FCC */ void ftCo_800C0FCC(HSD_GObj* arg0, ftCo_GObj* arg1);
/* 0C1194 */ void ftCo_Bury_Phys(ftCo_GObj* gobj);
/* 0C11E4 */ void ftCo_Bury_Coll(ftCo_GObj* gobj);
/* 0C124C */ void ftCo_800C124C(ftCo_GObj* gobj);
/* 0C12D8 */ void ftCo_BuryWait_Anim(ftCo_GObj* gobj);
/* 0C134C */ void ftCo_BuryWait_IASA(ftCo_GObj* gobj);
/* 0C1350 */ void ftCo_BuryWait_Phys(ftCo_GObj* gobj);
/* 0C1354 */ void ftCo_BuryWait_Coll(ftCo_GObj* gobj);
/* 0C13BC */ void ftCo_800C13BC(ftCo_GObj* gobj);
/* 0C1460 */ void ftCo_BuryJump_Anim(ftCo_GObj* gobj);
/* 0C14B0 */ void ftCo_BuryJump_IASA(ftCo_GObj* gobj);
/* 0C1574 */ void ftCo_BuryJump_Phys(ftCo_GObj* gobj);
/* 0C15B4 */ void ftCo_BuryJump_Coll(ftCo_GObj* gobj);
#define GALE01_0C12D8
#define GALE01_09CA0C
/* 09CA0C */ void ftCo_8009CA0C(ftCo_GObj* gobj, ftCo_GObj* vic_gobj);
/* 09CB04 */ void ftCo_CaptureCaptain_Anim(ftCo_GObj* gobj);
/* 09CB08 */ void ftCo_CaptureCaptain_IASA(ftCo_GObj* gobj);
/* 09CB0C */ void ftCo_CaptureCaptain_Phys(ftCo_GObj* gobj);
/* 09CB10 */ void ftCo_CaptureCaptain_Coll(ftCo_GObj* gobj);
#define GALE01_0BC9C8
/* 0BC9C8 */ void ftCo_800BC9C8(ftCo_GObj* gobj);
/* 0BCA54 */ void ftCo_CaptureDamageKoopa_Anim(ftCo_GObj* gobj);
/* 0BCAE8 */ void ftCo_CaptureDamageKoopa_IASA(ftCo_GObj* gobj);
/* 0BCAEC */ void ftCo_CaptureDamageKoopa_Phys(ftCo_GObj* gobj);
/* 0BCAF0 */ void ftCo_CaptureDamageKoopa_Coll(ftCo_GObj* gobj);
/* 0BCAF4 */ void ftCo_800BCAF4(ftCo_GObj* gobj);
/* 0BCB80 */ void ftCo_CaptureDamageKoopaAir_Anim(ftCo_GObj* gobj);
/* 0BCC14 */ void ftCo_CaptureDamageKoopaAir_IASA(ftCo_GObj* gobj);
/* 0BCC18 */ void ftCo_CaptureDamageKoopaAir_Phys(ftCo_GObj* gobj);
/* 0BCC1C */ void ftCo_CaptureDamageKoopaAir_Coll(ftCo_GObj* gobj);
#define GALE01_0BD19C
/* 0BD19C */ float ftCo_800BD19C(Fighter_GObj* gobj, Vec3* pos);
/* 0BD1DC */ void ftCo_800BD1DC(Fighter_GObj* gobj, Fighter_GObj* victim_gobj);
/* 0BD38C */ void ftCo_CaptureKirby_Anim(Fighter_GObj*);
/* 0BD390 */ void ftCo_CaptureKirby_IASA(Fighter_GObj*);
/* 0BD394 */ void ftCo_CaptureKirby_Phys(Fighter_GObj*);
/* 0BD398 */ void ftCo_CaptureKirby_Coll(Fighter_GObj*);
/* 0BD39C */ void ftCo_800BD39C(Fighter_GObj* gobj);
#define GALE01_098660
/* 098680 */ void ftCo_800BC458(ftCo_GObj* gobj);
/* 0986D0 */ void ftCo_800BC4A8(ftCo_GObj* gobj);
/* 098A08 */ void ftCo_800BC7E0(ftCo_GObj* gobj, ftCo_GObj* arg1);
/* 098AEC */ void ftCo_CaptureKoopa_Anim(ftCo_GObj* gobj);
/* 098AF0 */ void ftCo_CaptureKoopa_IASA(ftCo_GObj* gobj);
/* 098AF4 */ void ftCo_CaptureKoopa_Phys(ftCo_GObj* gobj);
/* 098AF8 */ void ftCo_CaptureKoopa_Coll(ftCo_GObj* gobj);
/* 098AFC */ void ftCo_800BC8D4(ftCo_GObj* gobj, ftCo_GObj* arg1);
/* 098BE0 */ void ftCo_CaptureKoopaAir_Anim(ftCo_GObj* gobj);
/* 098BE4 */ void ftCo_CaptureKoopaAir_IASA(ftCo_GObj* gobj);
/* 098BE8 */ void ftCo_CaptureKoopaAir_Phys(ftCo_GObj* gobj);
/* 098BEC */ void ftCo_CaptureKoopaAir_Coll(ftCo_GObj* gobj);
/* 0BC438 */ void ftCo_800BC438(ftCo_GObj* gobj);
#define GALE01_0BCF18
/* 0BCF18 */ void ftCo_800BCF18(ftCo_GObj*, ftCo_GObj* gobj);
/* 0BCF18 */ void ftCo_800BCF18(ftCo_GObj* gobj, ftCo_GObj* victim_gobj);
/* 0BD000 */ void ftCo_800BD000(ftCo_GObj* gobj, ftCo_GObj* victim_gobj);
#define GALE01_0BD620
/* 0BD620 */ void ftCo_800BD620(ftCo_GObj* gobj);
/* 0BD6E8 */ void ftCo_CaptureWaitKirby_Anim(ftCo_GObj* gobj);
/* 0BD6EC */ void ftCo_800BD6EC(Fighter_GObj* gobj);
/* 0BD7BC */ void ftCo_CaptureWaitKirby_IASA(ftCo_GObj* gobj);
/* 0BD9D8 */ void ftCo_CaptureWaitKirby_Phys(ftCo_GObj* gobj);
/* 0BD9DC */ void ftCo_CaptureWaitKirby_Coll(ftCo_GObj* gobj);
#define GALE01_0BCC20
/* 099150 */ void ftCo_CaptureWaitKoopa_Anim(ftCo_GObj* gobj);
/* 0991C8 */ void ftCo_CaptureWaitKoopa_IASA(ftCo_GObj* gobj);
/* 0991CC */ void ftCo_CaptureWaitKoopa_Phys(ftCo_GObj* gobj);
/* 0991D0 */ void ftCo_CaptureWaitKoopa_Coll(ftCo_GObj* gobj);
/* 099230 */ void ftCo_CaptureWaitKoopaAir_Anim(ftCo_GObj* gobj);
/* 0992A8 */ void ftCo_CaptureWaitKoopaAir_IASA(ftCo_GObj* gobj);
/* 0992AC */ void ftCo_CaptureWaitKoopaAir_Phys(ftCo_GObj* gobj);
/* 0992B0 */ void ftCo_CaptureWaitKoopaAir_Coll(ftCo_GObj* gobj);
/* 0BCC20 */ void ftCo_800BCC20(ftCo_GObj* gobj);
/* 0BCD00 */ void ftCo_800BCD00(ftCo_GObj* gobj);
#define GALE01_09D6E8
/* 09D6E8 */ void ftCo_800BBB8C(ftCo_GObj* gobj, ftCo_GObj* attacker_gobj);
/* 09D7D4 */ void ftCo_CaptureYoshi_Anim(ftCo_GObj* gobj);
/* 09D7D8 */ void ftCo_CaptureYoshi_IASA(ftCo_GObj* gobj);
/* 09D7DC */ void ftCo_CaptureYoshi_Phys(ftCo_GObj* gobj);
/* 09D7E0 */ void ftCo_CaptureYoshi_Coll(ftCo_GObj* gobj);
#define GALE01_09BC58
/* 09BC58 */ void ftCo_8009BC58(ftCo_GObj* gobj);
/* 09BCDC */ void ftCo_CargoFall_Anim(ftCo_GObj* gobj);
/* 09BCE0 */ void ftCo_CargoFall_IASA(ftCo_GObj* gobj);
/* 09BD04 */ void ftCo_CargoFall_Phys(ftCo_GObj* gobj);
/* 09BD24 */ void ftCo_CargoFall_Coll(ftCo_GObj* gobj);
#define GALE01_09BB1C
/* 09BB1C */ bool ftCo_8009BB1C(ftCo_GObj* gobj);
/* 09BB64 */ void ftCo_8009BB64(ftCo_GObj* gobj);
/* 09BBF0 */ void ftCo_CargoJump_Anim(ftCo_GObj* gobj);
/* 09BBF4 */ void ftCo_CargoJump_IASA(ftCo_GObj* gobj);
/* 09BC18 */ void ftCo_CargoJump_Phys(ftCo_GObj* gobj);
/* 09BC38 */ void ftCo_CargoJump_Coll(ftCo_GObj* gobj);
#define GALE01_09B9C8
/* 09B9C8 */ void ftCo_8009B9C8(ftCo_GObj* gobj, int arg1);
/* 09BA50 */ void ftCo_CargoKneebend_Anim(ftCo_GObj* gobj);
/* 09BAA0 */ void ftCo_CargoKneebend_IASA(ftCo_GObj* gobj);
/* 09BADC */ void ftCo_CargoKneebend_Phys(ftCo_GObj* gobj);
/* 09BAFC */ void ftCo_CargoKneebend_Coll(ftCo_GObj* gobj);
#define GALE01_09BD4C
/* 09BD4C */ void ftCo_8009BD4C(ftCo_GObj* gobj);
/* 09BDC4 */ void ftCo_CargoLanding_Anim(ftCo_GObj* gobj);
/* 09BE14 */ void ftCo_CargoLanding_Phys(ftCo_GObj* gobj);
/* 09BE34 */ void ftCo_CargoLanding_Coll(ftCo_GObj* gobj);
#define GALE01_09BE54
/* 09BE54 */ void ftCo_CargoWait2_Anim(ftCo_GObj* gobj);
/* 09BEB8 */ void ftCo_CargoWait2_Phys(ftCo_GObj* gobj);
/* 09BED8 */ void ftCo_CargoWait2_Coll(ftCo_GObj* gobj);
/* 09BF3C */ bool ftCo_8009BF3C(ftCo_GObj* gobj);
/* 09C0EC */ void ftCo_CargoThrowF_Anim(ftCo_GObj* gobj);
/* 09C130 */ void ftCo_CargoThrowF_IASA(ftCo_GObj* gobj);
/* 09C150 */ void ftCo_CargoThrowF_Phys(ftCo_GObj* gobj);
/* 09C20C */ void ftCo_CargoThrowF_Coll(ftCo_GObj* gobj);
/* 09C234 */ void ftCo_CargoThrowB_Anim(ftCo_GObj* gobj);
/* 09C254 */ void ftCo_CargoThrowB_IASA(ftCo_GObj* gobj);
/* 09C274 */ void ftCo_CargoThrowB_Phys(ftCo_GObj* gobj);
/* 09C294 */ void ftCo_CargoThrowB_Coll(ftCo_GObj* gobj);
/* 09C2BC */ void ftCo_CargoThrowHi_Anim(ftCo_GObj* gobj);
/* 09C2DC */ void ftCo_CargoThrowHi_IASA(ftCo_GObj* gobj);
/* 09C2FC */ void ftCo_CargoThrowHi_Phys(ftCo_GObj* gobj);
/* 09C31C */ void ftCo_CargoThrowHi_Coll(ftCo_GObj* gobj);
/* 09C344 */ void ftCo_CargoThrowLw_Anim(ftCo_GObj* gobj);
/* 09C364 */ void ftCo_CargoThrowLw_IASA(ftCo_GObj* gobj);
/* 09C384 */ void ftCo_CargoThrowLw_Phys(ftCo_GObj* gobj);
/* 09C3A4 */ void ftCo_CargoThrowLw_Coll(ftCo_GObj* gobj);
/* 09C3CC */ void ftCo_CargoThrowAir_Anim(ftCo_GObj* gobj);
/* 09C410 */ void ftCo_CargoThrowAir_IASA(ftCo_GObj* gobj);
/* 09C414 */ void ftCo_CargoThrowAir_Phys(ftCo_GObj* gobj);
/* 09C434 */ void ftCo_CargoThrowAir_Coll(ftCo_GObj* gobj);
#define GALE01_09B818
/* 09B818 */ bool ftCo_8009B818(ftCo_GObj* gobj);
/* 09B8B4 */ void ftCo_CargoTurn_Anim(ftCo_GObj* gobj);
/* 09B948 */ void ftCo_CargoTurn_IASA(ftCo_GObj* gobj);
/* 09B988 */ void ftCo_CargoTurn_Phys(ftCo_GObj* gobj);
/* 09B9A8 */ void ftCo_CargoTurn_Coll(ftCo_GObj* gobj);
#define GALE01_09B4D0
/* 09B4D0 */ bool ftCo_8009B4D0(ftCo_GObj* gobj);
/* 09B518 */ void ftCo_8009B518(ftCo_GObj* gobj);
/* 09B56C */ void ftCo_8009B56C(ftCo_GObj* gobj);
/* 09B5C0 */ void ftCo_CargoWait_Anim(ftCo_GObj* gobj);
/* 09B5C4 */ void ftCo_CargoWait_IASA(ftCo_GObj* gobj);
/* 09B634 */ void ftCo_CargoWait_Phys(ftCo_GObj* gobj);
/* 09B654 */ void ftCo_CargoWait_Coll(ftCo_GObj* gobj);
/* 09B860 */ void ftCo_8009B860(ftCo_GObj* gobj);
#define GALE01_09B67C
/* 09B67C */ bool ftCo_8009B67C(ftCo_GObj* gobj);
/* 09B744 */ void ftCo_CargoWalk_Anim(ftCo_GObj* gobj);
/* 09B764 */ void ftCo_CargoWalk_IASA(ftCo_GObj* gobj);
/* 09B7D8 */ void ftCo_CargoWalk_Phys(ftCo_GObj* gobj);
/* 09B7F8 */ void ftCo_CargoWalk_Coll(ftCo_GObj* gobj);
#define GALE01_09AE14
/* 09AE14 */ void ftCo_8009AE14(ftCo_GObj* gobj);
/* 09AE38 */ bool ftCo_8009AE38(ftCo_GObj* gobj);
/* 09AF70 */ void ftCo_CliffAttack_Anim(ftCo_GObj* gobj);
/* 09AF90 */ void ftCo_CliffAttack_IASA(ftCo_GObj* gobj);
/* 09AF94 */ void ftCo_CliffAttack_Phys(ftCo_GObj* gobj);
/* 09AFB4 */ void ftCo_CliffAttack_Coll(ftCo_GObj* gobj);
/* 09AFD4 */ bool ftCo_8009AFD4(ftCo_GObj* gobj);
#define GALE01_09AA0C
/* 09AA0C */ bool ftCo_8009AA0C(ftCo_GObj* gobj);
/* 09AC68 */ void ftCo_CliffClimb_Anim(ftCo_GObj* gobj);
/* 09ACA4 */ void ftCo_CliffClimb_IASA(ftCo_GObj* gobj);
/* 09ACA8 */ void ftCo_CliffClimb_Phys(ftCo_GObj* gobj);
/* 09ADA4 */ void ftCo_CliffClimb_Coll(ftCo_GObj* gobj);
#define GALE01_09B040
/* 09B040 */ void ftCo_8009B040(ftCo_GObj* gobj);
/* 09B10C */ void ftCo_CliffEscape_Anim(ftCo_GObj* gobj);
/* 09B12C */ void ftCo_CliffEscape_IASA(ftCo_GObj* gobj);
/* 09B130 */ void ftCo_CliffEscape_Phys(ftCo_GObj* gobj);
/* 09B150 */ void ftCo_CliffEscape_Coll(ftCo_GObj* gobj);
#define GALE01_09B170
/* 09B170 */ bool ftCo_8009B170(ftCo_GObj* gobj);
/* 09B278 */ void ftCo_CliffJump1_Anim(ftCo_GObj* gobj);
/* 09B2B4 */ void ftCo_CliffJump1_IASA(ftCo_GObj* gobj);
/* 09B2B8 */ void ftCo_CliffJump1_Phys(ftCo_GObj* gobj);
/* 09B2D8 */ void ftCo_CliffJump1_Coll(ftCo_GObj* gobj);
/* 09B390 */ void ftCo_8009B390(ftCo_GObj* gobj, float force_mul);
/* 09B424 */ void ftCo_CliffJump2_Anim(ftCo_GObj* gobj);
/* 09B460 */ void ftCo_CliffJump2_IASA(ftCo_GObj* gobj);
/* 09B464 */ void ftCo_CliffJump2_Phys(ftCo_GObj* gobj);
/* 09B4A0 */ void ftCo_CliffJump2_Coll(ftCo_GObj* gobj);
#define GALE01_09A804
/* 09A804 */ void ftCo_8009A804(ftCo_GObj* gobj);
/* 09A8D8 */ void ftCo_CliffWait_Anim(ftCo_GObj* gobj);
/* 09A8FC */ void ftCo_CliffWait_IASA(ftCo_GObj* gobj);
/* 09A96C */ void ftCo_CliffWait_Phys(ftCo_GObj* gobj);
/* 09A98C */ void ftCo_CliffWait_Coll(ftCo_GObj* gobj);
#define GALE01_08D7F0
/* 08D7F0 */ float ftCo_Damage_CalcAngle(ftCo_Fighter* fp, float kb_applied);
/* 08D8D8 */ float ftCo_ScaleBy154(float);
/* 08D8E8 */ bool ftCo_8008D8E8(float);
/* 08D930 */ void ftCo_Damage_CalcKnockback(ftCo_Fighter* fp);
/* 08DB10 */ void ftCo_8008DB10(ftCo_GObj* gobj, enum_t, float);
/* 08DC0C */ void ftCo_Damage_CalcVel(ftCo_Fighter* fp, float x, float y);
/* 08DCE0 */ void ftCo_8008DCE0(ftCo_GObj* gobj, int, float facing_dir);
/* 08E498 */ bool ftCo_Damage_CheckAirMotion(ftCo_Fighter* fp);
/* 08E4F0 */ void ftCo_Damage_OnEveryHitlag(ftCo_GObj* gobj);
/* 08E714 */ void ftCo_Damage_OnExitHitlag(ftCo_GObj* gobj);
/* 08E908 */ void ftCo_8008E908(ftCo_GObj* gobj, float);
/* 08E984 */ bool ftCo_8008E984(ftCo_Fighter* fp);
/* 08E9D0 */ void ftCo_8008E9D0(ftCo_GObj* gobj);
/* 08EB58 */ void ftCo_8008EB58(ftCo_GObj* gobj);
/* 08EC90 */ void ftCo_8008EC90(ftCo_GObj* gobj);
/* 08F744 */ void ftCo_8008F744(ftCo_GObj* gobj);
/* 08F7F0 */ void ftCo_Damage_Anim(ftCo_GObj* gobj);
/* 08FA44 */ void ftCo_Damage_IASA(ftCo_GObj* gobj);
/* 08FB18 */ void ftCo_Damage_Phys(ftCo_GObj* gobj);
/* 08FB64 */ void ftCo_Damage_Coll(ftCo_GObj* gobj);
/* 08FC94 */ void ftCo_8008FC94(ftCo_GObj* gobj);
/* 08FCB8 */ void ftCo_Damage_SetMv8FromKbThreshold(ftCo_Fighter* fp);
/* 08FD98 */ void ftCo_DamageFly_Anim(ftCo_GObj* gobj);
/* 08FF48 */ void ftCo_DamageFly_IASA(ftCo_GObj* gobj);
/* 08FF84 */ void ftCo_DamageFly_Phys(ftCo_GObj* gobj);
/* 0900EC */ void ftCo_DamageFly_Coll(ftCo_GObj* gobj);
/* 090184 */ void ftCo_80090184(ftCo_GObj* gobj);
/* 0901D0 */ void ftCo_DamageFlyRoll_Anim(ftCo_GObj* gobj);
/* 090324 */ void ftCo_DamageFlyRoll_IASA(ftCo_GObj* gobj);
/* 09035C */ void ftCo_DamageFlyRoll_Phys(ftCo_GObj* gobj);
/* 0904C0 */ void ftCo_DamageFlyRoll_Coll(ftCo_GObj* gobj);
/* 3C5520 */ extern int ftCo_803C5520[2][12];
#define GALE01_0C44CC
/* 0C44CC */ bool ftCo_800C44CC(ftCo_GObj* gobj);
/* 0C4550 */ void ftCo_800C4550(ftCo_GObj* gobj);
/* 0C466C */ void ftCo_DamageBind_Anim(ftCo_GObj* gobj);
/* 0C46E0 */ void ftCo_DamageBind_IASA(ftCo_GObj* gobj);
/* 0C46E4 */ void ftCo_DamageBind_Phys(ftCo_GObj* gobj);
/* 0C4704 */ void ftCo_DamageBind_Coll(ftCo_GObj* gobj);
#define GALE01_090824
/* 090574 */ void ftCo_80090574(ftCo_GObj* gobj);
/* 090594 */ void ftCo_80090594(ftCo_Fighter* fp, enum_t element, int dmg,
FtMotionId msid, GroundOrAir ground_or_air,
float hitlag_mul);
/* 090690 */ Vec2* ftCo_80090690(ftCo_Fighter* fp, Vec2* shift);
/* 090718 */ void ftCo_80090718(ftCo_Fighter* fp);
/* 090780 */ void ftCo_80090780(ftCo_GObj* gobj);
/* 090824 */ void ftCo_DamageFall_Anim(ftCo_GObj* gobj);
/* 090828 */ void ftCo_DamageFall_IASA(ftCo_GObj* gobj);
/* 09093C */ void ftCo_DamageFall_Phys(ftCo_GObj* gobj);
/* 09095C */ void ftCo_DamageFall_Coll(ftCo_GObj* gobj);
#define GALE01_0912A8
/* 090984 */ void ftCo_80090984(ftCo_GObj* gobj);
/* 090B60 */ void ftCo_80090B60(ftCo_GObj* gobj);
/* 091030 */ void ftCo_80091030(ftCo_GObj* gobj);
/* 0912A8 */ void ftCo_DamageIce_Anim(ftCo_GObj* gobj);
/* 0913DC */ void ftCo_DamageIce_IASA(ftCo_GObj* gobj);
/* 0913E0 */ void ftCo_DamageIce_Phys(ftCo_GObj* gobj);
/* 09144C */ void ftCo_DamageIce_Coll(ftCo_GObj* gobj);
/* 0914A4 */ void ftCo_800914A4(ftCo_GObj* gobj);
/* 091854 */ void ftCo_80091854(ftCo_GObj* gobj);
/* 091988 */ void ftCo_DamageIceJump_Anim(ftCo_GObj* gobj);
/* 0919D8 */ void ftCo_DamageIceJump_IASA(ftCo_GObj* gobj);
/* 0919DC */ void ftCo_DamageIceJump_Phys(ftCo_GObj* gobj);
/* 0919FC */ void ftCo_DamageIceJump_Coll(ftCo_GObj* gobj);
#define GALE01_0C318C
/* 0C318C */ void ftCo_800C318C(ftCo_GObj* gobj, bool);
/* 0C32AC */ void ftCo_DamageSong_Anim(ftCo_GObj* gobj);
/* 0C334C */ void ftCo_DamageSong_IASA(ftCo_GObj* gobj);
/* 0C3350 */ void ftCo_DamageSong_Phys(ftCo_GObj* gobj);
/* 0C3370 */ void ftCo_DamageSong_Coll(ftCo_GObj* gobj);
/* 0C33C8 */ void ftCo_DamageSongWait_Anim(ftCo_GObj* gobj);
/* 0C343C */ void ftCo_DamageSongWait_IASA(ftCo_GObj* gobj);
/* 0C3440 */ void ftCo_DamageSongWait_Phys(ftCo_GObj* gobj);
/* 0C3460 */ void ftCo_DamageSongWait_Coll(ftCo_GObj* gobj);
/* 0C34B8 */ void ftCo_DamageSongRv_Anim(ftCo_GObj* gobj);
/* 0C34F4 */ void ftCo_DamageSongRv_IASA(ftCo_GObj* gobj);
/* 0C34F8 */ void ftCo_DamageSongRv_Phys(ftCo_GObj* gobj);
/* 0C3518 */ void ftCo_DamageSongRv_Coll(ftCo_GObj* gobj);
/* 0C3538 */ bool ftCo_800C3538(ftCo_GObj* gobj);
#define GALE01_0C6150
/* 0C6150 */ void ftCo_800C6150(ftCo_GObj* gobj);
#define GALE01_097D9C
/* 097D9C */ bool ftCo_Down_CheckInput(ftCo_GObj* gobj);
/* 097F08 */ void ftCo_Down_Anim(ftCo_GObj* gobj);
/* 097F44 */ void ftCo_Down_IASA(ftCo_GObj* gobj);
/* 097F48 */ void ftCo_Down_Phys(ftCo_GObj* gobj);
/* 097F68 */ void ftCo_Down_Coll(ftCo_GObj* gobj);
/* 098400 */ bool ftCo_80098400(ftCo_GObj* gobj);
#define GALE01_09805C
/* 097270 */ void ftCo_800978D4(ftCo_GObj* gobj);
/* 09813C */ void ftCo_DownAttack_Anim(ftCo_GObj* gobj);
/* 098178 */ void ftCo_DownAttack_IASA(ftCo_GObj* gobj);
/* 09817C */ void ftCo_DownAttack_Phys(ftCo_GObj* gobj);
/* 09819C */ void ftCo_DownAttack_Coll(ftCo_GObj* gobj);
/* 0981BC */ void ftCo_80098634(HSD_ObjAllocUnk2*);
/* 098238 */ bool ftCo_800986B0(ftCo_GObj* gobj);
/* 0984D4 */ bool ftCo_800984D4(ftCo_GObj* gobj);
/* 09856C */ void ftCo_8009856C(ftCo_GObj*, FtMotionId msid);
/* 09856C */ void ftCo_8009857C(ftCo_GObj*, FtMotionId msid);
/* 09872C */ bool ftCo_8009872C(ftCo_GObj* gobj);
#define GALE01_096F0C
/* 096FCC */ void ftCo_80097630(ftCo_Fighter* fp, enum_t* sfx_ids,
float threshold);
/* 097570 */ bool ftCo_80097570(ftCo_GObj* gobj);
/* 0976DC */ void ftCo_80097D40(ftCo_GObj* gobj);
/* 097724 */ void ftCo_80097D88(ftCo_GObj* gobj);
/* 09775C */ void ftCo_DownBound_Anim(ftCo_GObj* gobj);
/* 0977B8 */ void ftCo_DownBound_IASA(ftCo_GObj* gobj);
/* 0977BC */ void ftCo_DownBound_Phys(ftCo_GObj* gobj);
/* 0977DC */ void ftCo_DownBound_Coll(ftCo_GObj* gobj);
/* 097A18 */ void ftCo_80097E8C(ftCo_GObj* gobj);
/* 097B4C */ void ftCo_DownWait_Anim(ftCo_GObj* gobj);
/* 097BB8 */ void ftCo_DownWait_IASA(ftCo_GObj* gobj);
/* 097C08 */ void ftCo_DownWait_Phys(ftCo_GObj* gobj);
/* 097C28 */ void ftCo_DownWait_Coll(ftCo_GObj* gobj);
/* 097F38 */ void ftCo_80097F38(ftCo_GObj* gobj);
/* 3C5700 */ extern enum_t ftCo_DownBound_SfxIds[4];
#define GALE01_09F0F0
/* 09F0F0 */ bool ftCo_8009F0F0(ftCo_GObj* gobj);
/* 09CDB0 */ void ftCo_DownDamage_Anim(ftCo_GObj* gobj);
/* 09CE80 */ void ftCo_DownDamage_IASA(ftCo_GObj* gobj);
/* 09CE84 */ void ftCo_DownDamage_Phys(ftCo_GObj* gobj);
/* 09CEA4 */ void ftCo_DownDamage_Coll(ftCo_GObj* gobj);
#define GALE01_0980BC
/* 0980BC */ bool ftCo_800980BC(ftCo_GObj* gobj);
/* 098160 */ void ftCo_80098160(ftCo_GObj* gobj, FtMotionId msid);
/* 098194 */ void ftCo_DownStand_Anim(ftCo_GObj* gobj);
/* 0981D0 */ void ftCo_DownStand_IASA(ftCo_GObj* gobj);
/* 0981D4 */ void ftCo_DownStand_Phys(ftCo_GObj* gobj);
/* 0981F4 */ void ftCo_DownStand_Coll(ftCo_GObj* gobj);
#define GALE01_09917C
/* 09917C */ bool ftCo_8009917C(ftCo_GObj* gobj);
/* 099264 */ bool ftCo_80099264(ftCo_GObj* gobj);
/* 0994D8 */ void ftCo_Escape_Anim(ftCo_GObj* gobj);
/* 0996F0 */ void ftCo_Escape_IASA(ftCo_GObj* gobj);
/* 099714 */ void ftCo_Escape_Phys(ftCo_GObj* gobj);
/* 099734 */ void ftCo_Escape_Coll(ftCo_GObj* gobj);
/* 099794 */ bool ftCo_80099794(ftCo_GObj* gobj);
/* 09980C */ bool ftCo_8009980C(ftCo_GObj* gobj);
/* 0999D8 */ void ftCo_EscapeN_Anim(ftCo_GObj* gobj);
/* 099A14 */ void ftCo_EscapeN_IASA(ftCo_GObj* gobj);
/* 099A18 */ void ftCo_EscapeN_Phys(ftCo_GObj* gobj);
/* 099A38 */ void ftCo_EscapeN_Coll(ftCo_GObj* gobj);
#define GALE01_099A58
/* 099A58 */ bool ftCo_80099A58(ftCo_GObj* gobj);
/* 099A9C */ void ftCo_80099A9C(ftCo_GObj* gobj, int);
/* 099BD0 */ void ftCo_EscapeAir_Anim(ftCo_GObj* gobj);
/* 099C24 */ void ftCo_EscapeAir_IASA(ftCo_GObj* gobj);
/* 099CEC */ void ftCo_EscapeAir_Phys(ftCo_GObj* gobj);
/* 099D48 */ void ftCo_EscapeAir_Coll(ftCo_GObj* gobj);
#define GALE01_0968C8
/* 0968C8 */ void ftCo_800968C8(ftCo_GObj* gobj);
/* 096900 */ void ftCo_80096900(ftCo_GObj* gobj, int, int,
bool allow_interrupt, float, float);
/* 0969D8 */ void ftCo_800969D8(ftCo_GObj* gobj, int, int, int, float, float,
float);
/* 096AA0 */ void ftCo_FallSpecial_Anim(ftCo_GObj* gobj);
/* 096AF4 */ void ftCo_FallSpecial_IASA(ftCo_GObj* gobj);
/* 096B44 */ void ftCo_FallSpecial_Phys(ftCo_GObj* gobj);
/* 096C98 */ void ftCo_FallSpecial_Coll(ftCo_GObj* gobj);
/* 096CC8 */ bool ftCo_80096CC8(ftCo_GObj* gobj, enum_t);
/* 096D28 */ void ftCo_80096D28(ftCo_GObj* gobj);
#define GALE01_0C15F4
/* 0C15F4 */ bool ftCo_800C15F4(ftCo_GObj* gobj);
/* 0C1718 */ bool ftCo_800C1718(ftCo_GObj* gobj);
/* 0C17CC */ bool ftCo_800C17CC(ftCo_GObj* gobj);
/* 0C18A8 */ void ftCo_800C18A8(ftCo_GObj* gobj, ftCommon_MotionState msid,
Vec3* normal, Vec3*);
/* 0C1B2C */ void ftCo_FlyReflect_Anim(ftCo_GObj* gobj);
/* 0C1B64 */ void ftCo_FlyReflect_IASA(ftCo_GObj* gobj);
/* 0C1B84 */ void ftCo_FlyReflect_Phys(ftCo_GObj* gobj);
/* 0C1BA4 */ void ftCo_FlyReflect_Coll(ftCo_GObj* gobj);
#define GALE01_099010
/* 099010 */ void ftCo_80099010(ftCo_GObj* gobj);
/* 0990B8 */ void ftCo_Furafura_Anim(ftCo_GObj* gobj);
/* 099138 */ void ftCo_Furafura_IASA(ftCo_GObj* gobj);
/* 09913C */ void ftCo_Furafura_Phys(ftCo_GObj* gobj);
/* 09915C */ void ftCo_Furafura_Coll(ftCo_GObj* gobj);
#define GALE01_091A2C
/* 091A2C */ bool ftCo_80091A2C(ftCo_GObj* gobj);
/* 091A4C */ bool ftCo_80091A4C(ftCo_GObj* gobj);
/* 091AD8 */ bool ftCo_80091AD8(ftCo_GObj* gobj, int mv_x20);
/* 091B90 */ void ftCo_80091B90(ftCo_GObj* gobj, int);
/* 091B9C */ void ftCo_80091B9C(ftCo_GObj* gobj);
/* 091D58 */ void ftCo_80091D58(ftCo_Fighter* fp);
/* 092450 */ void ftCo_80092450(ftCo_GObj* gobj);
/* 0925A4 */ bool ftCo_800925A4(ftCo_GObj* gobj);
/* 0926DC */ void ftCo_GuardOn_Anim(ftCo_GObj* gobj);
/* 092758 */ void ftCo_GuardOn_IASA(ftCo_GObj* gobj);
/* 092870 */ void ftCo_GuardOn_Phys(ftCo_GObj* gobj);
/* 0928AC */ void ftCo_GuardOn_Coll(ftCo_GObj* gobj);
/* 0928CC */ void ftCo_800928CC(ftCo_GObj* gobj);
/* 092A24 */ void ftCo_Guard_Anim(ftCo_GObj* gobj);
/* 092A78 */ void ftCo_Guard_IASA(ftCo_GObj* gobj);
/* 092B70 */ void ftCo_Guard_Phys(ftCo_GObj* gobj);
/* 092BAC */ void ftCo_Guard_Coll(ftCo_GObj* gobj);
/* 092BCC */ void ftCo_80092BCC(ftCo_GObj* gobj);
/* 092BE8 */ void ftCo_80092BE8(ftCo_GObj* gobj);
/* 092CAC */ void ftCo_GuardOff_Anim(ftCo_GObj* gobj);
/* 092CFC */ void ftCo_GuardOff_IASA(ftCo_GObj* gobj);
/* 092E10 */ void ftCo_GuardOff_Phys(ftCo_GObj* gobj);
/* 092E30 */ void ftCo_GuardOff_Coll(ftCo_GObj* gobj);
/* 092ED8 */ float ftCo_80092ED8(int, float);
/* 093240 */ void ftCo_80093240(ftCo_GObj* gobj);
/* 0932DC */ void ftCo_800932DC(ftCo_GObj* gobj);
/* 093354 */ void ftCo_GuardSetOff_Anim(ftCo_GObj* gobj);
/* 093624 */ void ftCo_GuardSetOff_IASA(ftCo_GObj* gobj);
/* 093628 */ void ftCo_GuardSetOff_Phys(ftCo_GObj* gobj);
/* 09365C */ void ftCo_GuardSetOff_Coll(ftCo_GObj* gobj);
/* 093694 */ bool ftCo_80093694(ftCo_GObj* gobj);
/* 09370C */ void ftCo_8009370C(HSD_GObj*, HSD_GObjEvent);
/* 093BC0 */ void ftCo_80093BC0(ftCo_GObj* gobj);
/* 093C3C */ float ftCo_80094098(HSD_GObj*, float*);
/* 093CD0 */ void ftCo_GuardReflect_Anim(ftCo_GObj* gobj);
/* 093CDC */ void ftCo_80094138(ftCo_Fighter* fp);
/* 093EC0 */ void ftCo_GuardReflect_IASA(ftCo_GObj* gobj);
/* 09403C */ void ftCo_GuardReflect_Phys(ftCo_GObj* gobj);
/* 094078 */ void ftCo_GuardReflect_Coll(ftCo_GObj* gobj);
#define GALE01_0C5CD4
/* 0C5CD4 */ bool ftCo_800C5CD4(ftCo_GObj* gobj);
/* 0C5D34 */ void ftCo_800C5D34(ftCo_GObj* gobj);
/* 0C5DBC */ void ftCo_HammerFall_Anim(ftCo_GObj* gobj);
/* 0C5DDC */ bool ftCo_800C5DDC(ftCo_GObj* gobj);
/* 0C5E94 */ void ftCo_HammerFall_IASA(ftCo_GObj* gobj);
/* 0C5F40 */ void ftCo_HammerFall_Phys(ftCo_GObj* gobj);
/* 0C5F60 */ void ftCo_HammerFall_Coll(ftCo_GObj* gobj);
#define GALE01_0C5A50
/* 0C5A50 */ bool ftCo_800C5A50(ftCo_GObj* gobj);
/* 0C5A98 */ void ftCo_800C5A98(ftCo_GObj* gobj);
/* 0C5B24 */ void ftCo_HammerJump_Anim(ftCo_GObj* gobj);
/* 0C5B44 */ void ftCo_HammerJump_IASA(ftCo_GObj* gobj);
/* 0C5B48 */ void ftCo_HammerJump_Phys(ftCo_GObj* gobj);
/* 0C5B68 */ void ftCo_HammerJump_Coll(ftCo_GObj* gobj);
#define GALE01_0C5B88
/* 0C5B88 */ void ftCo_800C5B88(ftCo_GObj* gobj, enum_t);
/* 0C5C10 */ void ftCo_HammerKneeBend_Anim(ftCo_GObj* gobj);
/* 0C5C74 */ void ftCo_HammerKneeBend_IASA(ftCo_GObj* gobj);
/* 0C5C94 */ void ftCo_HammerKneeBend_Phys(ftCo_GObj* gobj);
/* 0C5CB4 */ void ftCo_HammerKneeBend_Coll(ftCo_GObj* gobj);
#define GALE01_0C5F88
/* 0C5F88 */ void ftCo_800C5F88(ftCo_GObj* gobj);
/* 0C6020 */ void ftCo_HammerLanding_Anim(ftCo_GObj* gobj);
/* 0C6084 */ void ftCo_HammerLanding_IASA(ftCo_GObj* gobj);
/* 0C6088 */ void ftCo_HammerLanding_Phys(ftCo_GObj* gobj);
/* 0C60A8 */ void ftCo_HammerLanding_Coll(ftCo_GObj* gobj);
#define GALE01_0C576C
/* 0C576C */ bool ftCo_800C576C(ftCo_GObj* gobj);
/* 0C5848 */ void ftCo_HammerTurn_Anim(ftCo_GObj* gobj);
/* 0C59EC */ void ftCo_HammerTurn_IASA(ftCo_GObj* gobj);
/* 0C5A10 */ void ftCo_HammerTurn_Phys(ftCo_GObj* gobj);
/* 0C5A30 */ void ftCo_HammerTurn_Coll(ftCo_GObj* gobj);
#define GALE01_0C4E4C
/* 0C4E4C */ bool ftCo_800C4E4C(ftCo_GObj* gobj);
/* 0C4E94 */ void ftCo_800C4E94(ftCo_Fighter* fp);
/* 0C4ED8 */ void ftCo_800C4ED8(ftCo_GObj* gobj);
/* 0C4F64 */ void ftCo_800C4F64(ftCo_GObj* gobj);
/* 0C4FEC */ void ftCo_HammerWait_Anim(ftCo_GObj* gobj);
/* 0C5074 */ void ftCo_HammerWait_IASA(ftCo_GObj* gobj);
/* 0C50D4 */ void ftCo_HammerWait_Phys(ftCo_GObj* gobj);
/* 0C50F4 */ void ftCo_HammerWait_Coll(ftCo_GObj* gobj);
/* 0C511C */ void ftCo_800C511C(ftCo_GObj* gobj);
/* 0C5240 */ bool ftCo_800C5240(ftCo_GObj* gobj);
/* 0C5284 */ void ftCo_800C5284(ftCo_GObj* gobj);
/* 0C52F4 */ void ftCo_800C52F4(ftCo_GObj* gobj);
/* 0C53E4 */ bool ftCo_800C53E4(ftCo_Fighter* fp);
/* 0C544C */ void ftCo_800C544C(ftCo_Fighter* fp);
/* 0C548C */ float ftCo_800C548C(ftCo_Fighter* fp);
/* 0C54C4 */ u32 ftCo_800C54C4(ftCo_Fighter* fp);
/* 0C5500 */ void ftCo_800C5500(ftCo_GObj* gobj);
/* 0C554C */ void ftCo_800C554C(ftCo_Fighter* fp);
/* 0C555C */ void ftCo_800C555C(ftCo_GObj* gobj);
#define GALE01_0C55CC
/* 0C55CC */ bool ftCo_800C55CC(ftCo_GObj* gobj);
/* 0C56BC */ void ftCo_HammerWalk_Anim(ftCo_GObj* gobj);
/* 0C56DC */ void ftCo_HammerWalk_IASA(ftCo_GObj* gobj);
/* 0C572C */ void ftCo_HammerWalk_Phys(ftCo_GObj* gobj);
/* 0C574C */ void ftCo_HammerWalk_Coll(ftCo_GObj* gobj);
#define GALE01_0949F4
/* 0949F4 */ bool ftCo_80094E54(ftCo_Fighter* fp);
/* 094CFC */ bool ftCo_8009515C(ftCo_GObj* gobj);
/* 094EA4 */ bool ftCo_80094EA4(ftCo_GObj* gobj);
/* 0951DC */ bool ftCo_8009563C(ftCo_GObj* gobj);
/* 0952E4 */ void ftCo_80095744(ftCo_GObj* gobj, int*);
/* 095328 */ bool ftCo_80095328(ftCo_GObj*, bool*);
/* 095394 */ void ftCo_800957F4(ftCo_GObj* gobj, FtMotionId msid);
/* 095A20 */ void ftCo_ItemThrow_Anim(ftCo_GObj* gobj);
/* 095CC0 */ void ftCo_ItemThrow_IASA(ftCo_GObj* gobj);
/* 095CC4 */ void ftCo_ItemThrow_Phys(ftCo_GObj* gobj);
/* 095CE4 */ void ftCo_LightThrowDash_Phys(ftCo_GObj* gobj);
/* 095D50 */ void ftCo_LightThrowAir_Phys(ftCo_GObj* gobj);
/* 095DA8 */ void ftCo_LightThrowDashDrop_Coll(ftCo_GObj* gobj);
/* 095DC8 */ void ftCo_LightThrow_Coll(ftCo_GObj* gobj);
/* 095EEC */ void ftCo_LightThrowAir_Coll(ftCo_GObj* gobj);
/* 096010 */ void ftCo_HeavyThrow_Coll(ftCo_GObj* gobj);
/* 0961D0 */ void ftCo_800961D0(ftCo_GObj* gobj);
/* 096250 */ void ftCo_80096250(ftCo_GObj* gobj);
/* 096374 */ void ftCo_80096374(ftCo_GObj* gobj);
/* 096498 */ void ftCo_80096498(ftCo_GObj* gobj);
#define GALE01_08D5FC
/* 08D5FC */ void ftCo_LandingAir_EnterWithLag(ftCo_GObj* gobj);
/* 08D708 */ void ftCo_LandingAir_EnterWithMsidLag(ftCo_GObj* gobj,
FtMotionId msid, float lag);
/* 08D78C */ void ftCo_LandingAir_Anim(ftCo_GObj* gobj);
/* 08D7AC */ void ftCo_LandingAir_IASA(ftCo_GObj* gobj);
/* 08D7B0 */ void ftCo_LandingAir_Phys(ftCo_GObj* gobj);
/* 08D7D0 */ void ftCo_LandingAir_Coll(ftCo_GObj* gobj);
#define GALE01_0968E0
/* 0968E0 */ void ftCo_LiftWait_Anim(ftCo_GObj* gobj);
/* 0968E4 */ void ftCo_LiftWait_IASA(ftCo_GObj* gobj);
/* 096934 */ void ftCo_LiftWait_Phys(ftCo_GObj* gobj);
/* 0969BC */ void ftCo_LiftWait_Coll(ftCo_GObj* gobj);
/* 096D9C */ void ftCo_80096D9C(ftCo_GObj* gobj);
/* 096E68 */ void ftCo_80096E68(ftCo_GObj* gobj);
/* 096EF8 */ bool ftCo_80096EF8(ftCo_GObj* gobj);
/* 096F48 */ void ftCo_80096F48(ftCo_GObj* gobj);
/* 096FD0 */ void ftCo_LiftWalk_Anim(ftCo_GObj* gobj);
/* 097074 */ void ftCo_LiftWalk_IASA(ftCo_GObj* gobj);
/* 097098 */ void ftCo_LiftWalk_Phys(ftCo_GObj* gobj);
/* 0970B8 */ void ftCo_LiftWalk_Coll(ftCo_GObj* gobj);
/* 0970E0 */ bool ftCo_800970E0(ftCo_GObj* gobj);
/* 097130 */ void ftCo_80097130(ftCo_GObj* gobj);
/* 0971B0 */ void ftCo_LiftTurn_Anim(ftCo_GObj* gobj);
/* 097458 */ void ftCo_LiftTurn_IASA(ftCo_GObj* gobj);
/* 09747C */ void ftCo_LiftTurn_Phys(ftCo_GObj* gobj);
/* 09749C */ void ftCo_LiftTurn_Coll(ftCo_GObj* gobj);
/* 0974C4 */ void ftCo_800974C4(ftCo_GObj* gobj);
/* 09750C */ void ftCo_8009750C(ftCo_GObj* gobj);
#define GALE01_09CD5C
/* 09CD5C */ void ftCo_8009F39C(ftCo_GObj* gobj);
/* 09CDC0 */ void ftCo_MissFoot_Anim(ftCo_GObj* gobj);
/* 09CDFC */ void ftCo_MissFoot_IASA(ftCo_GObj* gobj);
/* 09CE00 */ void ftCo_MissFoot_Phys(ftCo_GObj* gobj);
/* 09CE20 */ void ftCo_MissFoot_Coll(ftCo_GObj* gobj);
#define GALE01_09A3C8
/* 09A3C8 */ bool ftCo_8009A3C8(ftCo_GObj* gobj);
/* 09A468 */ void ftCo_Ottotto_Anim(ftCo_GObj* gobj);
/* 09A4A4 */ void ftCo_Ottotto_IASA(ftCo_GObj* gobj);
/* 09A5F4 */ void ftCo_Ottotto_Phys(ftCo_GObj* gobj);
/* 09A5F8 */ void ftCo_Ottotto_Coll(ftCo_GObj* gobj);
/* 09A728 */ void ftCo_OttottoWait_Anim(ftCo_GObj* gobj);
/* 09A72C */ void ftCo_OttottoWait_IASA(ftCo_GObj* gobj);
/* 09A74C */ void ftCo_OttottoWait_Phys(ftCo_GObj* gobj);
/* 09A750 */ void ftCo_OttottoWait_Coll(ftCo_GObj* gobj);
#define GALE01_099F1C
/* 099F1C */ bool ftCo_80099F1C(ftCo_GObj* gobj);
/* 099F9C */ bool ftCo_80099F9C(ftCo_GObj* gobj);
/* 09A080 */ bool ftCo_8009A080(ftCo_GObj* gobj);
/* 09A134 */ bool ftCo_8009A134(ftCo_GObj* gobj);
/* 09A184 */ void ftCo_8009A184(ftCo_GObj* gobj, FtMotionId msid,
MotionFlags mf, float anim_start);
/* 09A228 */ void ftCo_8009A228(ftCo_GObj* gobj);
/* 09A2A8 */ void ftCo_Pass_Anim(ftCo_GObj* gobj);
/* 09A2E4 */ void ftCo_Pass_IASA(ftCo_GObj* gobj);
/* 09A388 */ void ftCo_Pass_Phys(ftCo_GObj* gobj);
/* 09A3A8 */ void ftCo_Pass_Coll(ftCo_GObj* gobj);
#define GALE01_098430
/* 098358 */ void ftCo_800987D0(ftCo_GObj* gobj);
/* 098430 */ void ftCo_Passive_Anim(ftCo_GObj* gobj);
/* 09846C */ void ftCo_Passive_IASA(ftCo_GObj* gobj);
/* 098470 */ void ftCo_Passive_Phys(ftCo_GObj* gobj);
/* 098490 */ void ftCo_Passive_Coll(ftCo_GObj* gobj);
#define GALE01_0C23A0
/* 0C23A0 */ bool ftCo_800C23A0(ftCo_GObj* gobj);
/* 0C23FC */ void ftCo_800C23FC(ftCo_GObj* gobj);
/* 0C252C */ void ftCo_PassiveCeil_Anim(ftCo_GObj* gobj);
/* 0C25AC */ void ftCo_PassiveCeil_IASA(ftCo_GObj* gobj);
/* 0C25B0 */ void ftCo_PassiveCeil_Phys(ftCo_GObj* gobj);
/* 0C25D0 */ void ftCo_PassiveCeil_Coll(ftCo_GObj* gobj);
#define GALE01_0984B0
/* 0984B0 */ bool ftCo_80098928(ftCo_GObj* gobj);
/* 098628 */ void ftCo_PassiveStand_Anim(ftCo_GObj* gobj);
/* 098664 */ void ftCo_PassiveStand_IASA(ftCo_GObj* gobj);
/* 098668 */ void ftCo_PassiveStand_Phys(ftCo_GObj* gobj);
/* 098688 */ void ftCo_PassiveStand_Coll(ftCo_GObj* gobj);
#define GALE01_0C1D38
/* 0C1D38 */ bool ftCo_800C1D38(ftCo_GObj* gobj);
/* 0C1E0C */ bool ftCo_800C1E0C(Fighter* fp);
/* 0C1E64 */ void ftCo_800C1E64(ftCo_GObj* gobj, int msid, int timer,
int vel_y_exponent, float facing_dir);
/* 0C2028 */ void ftCo_PassiveWall_Anim(ftCo_GObj* gobj);
/* 0C2180 */ void ftCo_PassiveWall_IASA(ftCo_GObj* gobj);
/* 0C22C0 */ void ftCo_PassiveWall_Phys(ftCo_GObj* gobj);
/* 0C2348 */ void ftCo_PassiveWall_Coll(ftCo_GObj* gobj);
#define GALE01_099D9C
/* 099D9C */ void ftCo_80099D9C(ftCo_GObj* gobj);
/* 099E24 */ void ftCo_ReboundStop_Anim(ftCo_GObj* gobj);
/* 099E80 */ void ftCo_Rebound_Anim(ftCo_GObj* gobj);
/* 099EBC */ void ftCo_Rebound_IASA(ftCo_GObj* gobj);
/* 099EC0 */ void ftCo_Rebound_Phys(ftCo_GObj* gobj);
/* 099EFC */ void ftCo_Rebound_Coll(ftCo_GObj* gobj);
#define GALE01_098E3C
/* 098E3C */ void ftCo_80098E3C(ftCo_GObj* gobj);
/* 098A44 */ void ftCo_ShieldBreakDown_Anim(ftCo_GObj* gobj);
/* 098A80 */ void ftCo_ShieldBreakDown_IASA(ftCo_GObj* gobj);
/* 098A84 */ void ftCo_ShieldBreakDown_Phys(ftCo_GObj* gobj);
/* 098AA4 */ void ftCo_ShieldBreakDown_Coll(ftCo_GObj* gobj);
#define GALE01_0988E4
/* 0988E4 */ void ftCo_80098D90(ftCo_GObj* gobj);
/* 098940 */ void ftCo_ShieldBreakFall_Anim(ftCo_GObj* gobj);
/* 098944 */ void ftCo_ShieldBreakFall_IASA(ftCo_GObj* gobj);
/* 098948 */ void ftCo_ShieldBreakFall_Phys(ftCo_GObj* gobj);
/* 098968 */ void ftCo_ShieldBreakFall_Coll(ftCo_GObj* gobj);
#define GALE01_0986A0
/* 0986A0 */ void ftCo_80098B20(ftCo_GObj* gobj);
/* 098794 */ void ftCo_ShieldBreakFly_Anim(ftCo_GObj* gobj);
/* 0987D0 */ void ftCo_ShieldBreakFly_IASA(ftCo_GObj* gobj);
/* 0987D4 */ void ftCo_ShieldBreakFly_Phys(ftCo_GObj* gobj);
/* 0987F4 */ void ftCo_ShieldBreakFly_Coll(ftCo_GObj* gobj);
/* 098820 */ void ftCo_80098C9C(Fighter_GObj* gobj);
#define GALE01_098F3C
/* 098F3C */ void ftCo_80098F3C(ftCo_GObj* gobj);
/* 098F90 */ void ftCo_ShieldBreakStand_Anim(ftCo_GObj* gobj);
/* 098FCC */ void ftCo_ShieldBreakStand_IASA(ftCo_GObj* gobj);
/* 098FD0 */ void ftCo_ShieldBreakStand_Phys(ftCo_GObj* gobj);
/* 098FF0 */ void ftCo_ShieldBreakStand_Coll(ftCo_GObj* gobj);
#define GALE01_08A7A8
/* 09C5A4 */ void ftCo_8009C5A4(ftCo_GObj* gobj, int);
/* 09C640 */ void ftCo_8009C640(ftCo_GObj* gobj, int);
/* 09C830 */ void ftCo_Shouldered_Anim(ftCo_GObj* gobj);
/* 09CA00 */ void ftCo_Shouldered_IASA(ftCo_GObj* gobj);
/* 09CA04 */ void ftCo_Shouldered_Phys(ftCo_GObj* gobj);
/* 09CA08 */ void ftCo_Shouldered_Coll(ftCo_GObj* gobj);
#define GALE01_09614C
/* 09614C */ bool ftCo_SpecialAir_CheckInput(ftCo_GObj* gobj);
#define GALE01_095FEC
/* 0964FC */ bool ftCo_SpecialS_HasInput(Fighter* fp);
/* 096030 */ bool ftCo_SpecialS_CheckInput(ftCo_GObj* gobj);
#define GALE01_09CA98
/* 09CA98 */ bool ftCo_8009EF68(ftCo_GObj* gobj);
/* 09CB78 */ void ftCo_StopCeil_Anim(ftCo_GObj* gobj);
/* 09CBE8 */ void ftCo_StopCeil_IASA(ftCo_GObj* gobj);
/* 09CBEC */ void ftCo_StopCeil_Phys(ftCo_GObj* gobj);
/* 09CBF0 */ void ftCo_StopCeil_Coll(ftCo_GObj* gobj);
#define GALE01_09EDA4
/* 09EDA4 */ bool ftCo_8009EDA4(ftCo_GObj* gobj);
/* 09EF04 */ void ftCo_StopWall_Anim(ftCo_GObj* gobj);
/* 09EF40 */ void ftCo_StopWall_IASA(ftCo_GObj* gobj);
/* 09EF44 */ void ftCo_StopWall_Phys(ftCo_GObj* gobj);
/* 09EF48 */ void ftCo_StopWall_Coll(ftCo_GObj* gobj);
#define GALE01_0BD9E0
/* 0BD9E0 */ FighterKind ftCo_800BD9E0(ftKb_GObj* gobj,
Fighter_GObj* victim_gobj);
/* 0BDA50 */ void ftCo_800BDA50(ftCo_GObj* gobj);
/* 0BDA74 */ void ftCo_800BDA74(ftCo_GObj* gobj, Vec3* normal);
/* 0BDB58 */ void ftCo_800BDB58(ftCo_GObj* gobj, ftKb_GObj* thrower_gobj);
/* 0BDDC4 */ void ftCo_ThrownKirbyStar_Anim(ftCo_GObj* gobj);
/* 0BDDC8 */ void ftCo_ThrownKirbyStar_IASA(ftCo_GObj* gobj);
/* 0BDDCC */ void ftCo_ThrownKirbyStar_Phys(ftCo_GObj* gobj);
/* 0BDF10 */ void ftCo_ThrownKirbyStar_Coll(ftCo_GObj* gobj);
/* 0BE000 */ void ftCo_800BE000(ftCo_GObj* gobj, ftKb_GObj* thrower_gobj);
/* 0BE258 */ void ftCo_ThrownCopyStar_Anim(ftCo_GObj* gobj);
/* 0BE25C */ void ftCo_ThrownCopyStar_IASA(ftCo_GObj* gobj);
/* 0BE260 */ void ftCo_ThrownCopyStar_Phys(ftCo_GObj* gobj);
/* 0BE3A4 */ void ftCo_ThrownCopyStar_Coll(ftCo_GObj* gobj);
/* 0BE494 */ void ftCo_800BE494(ftCo_GObj* gobj);
/* 0BE618 */ void ftCo_ThrownKirby_Anim(ftCo_GObj* gobj);
/* 0BE61C */ void ftCo_ThrownKirby_IASA(ftCo_GObj* gobj);
/* 0BE620 */ void ftCo_ThrownKirby_Phys(ftCo_GObj* gobj);
/* 0BE6A8 */ void ftCo_ThrownKirby_Coll(ftCo_GObj* gobj);
/* 0BE6AC */ void ftCo_800BE6AC(ftCo_GObj* gobj);
/* 0BE7C0 */ void ftCo_800BE7C0(ftCo_GObj* gobj);
#define GALE01_0BCDE0
/* 0BCDE0 */ void ftCo_800BCDE0(ftCo_GObj* gobj, FtMotionId msid);
/* 0BCE64 */ void ftCo_800BCE64(ftCo_GObj* gobj, FtMotionId msid);
/* 0BCED8 */ void ftCo_ThrownKoopaF_Anim(ftCo_GObj* gobj);
/* 0BCEDC */ void ftCo_ThrownKoopaF_IASA(ftCo_GObj* gobj);
/* 0BCEE0 */ void ftCo_ThrownKoopaF_Phys(ftCo_GObj* gobj);
/* 0BCEE4 */ void ftCo_ThrownKoopaF_Coll(ftCo_GObj* gobj);
/* 0BCEE8 */ void ftCo_ThrownKoopaB_Anim(ftCo_GObj* gobj);
/* 0BCEEC */ void ftCo_ThrownKoopaB_IASA(ftCo_GObj* gobj);
/* 0BCEF0 */ void ftCo_ThrownKoopaB_Phys(ftCo_GObj* gobj);
/* 0BCEF4 */ void ftCo_ThrownKoopaB_Coll(ftCo_GObj* gobj);
/* 0BCEF8 */ void ftCo_ThrownKoopaAirF_Anim(ftCo_GObj* gobj);
/* 0BCEFC */ void ftCo_ThrownKoopaAirF_IASA(ftCo_GObj* gobj);
/* 0BCF00 */ void ftCo_ThrownKoopaAirF_Phys(ftCo_GObj* gobj);
/* 0BCF04 */ void ftCo_ThrownKoopaAirF_Coll(ftCo_GObj* gobj);
/* 0BCF08 */ void ftCo_ThrownKoopaAirB_Anim(ftCo_GObj* gobj);
/* 0BCF0C */ void ftCo_ThrownKoopaAirB_IASA(ftCo_GObj* gobj);
/* 0BCF10 */ void ftCo_ThrownKoopaAirB_Phys(ftCo_GObj* gobj);
/* 0BCF14 */ void ftCo_ThrownKoopaAirB_Coll(ftCo_GObj* gobj);
#define GALE01_0BD17C
/* 0BD0E8 */ void ftCo_800BD0E8(ftCo_GObj* gobj, FtMotionId msid);
/* 0BD17C */ void ftCo_ThrownMewtwo_Anim(ftCo_GObj* gobj);
/* 0BD180 */ void ftCo_ThrownMewtwo_IASA(ftCo_GObj* gobj);
/* 0BD184 */ void ftCo_ThrownMewtwo_Phys(ftCo_GObj* gobj);
/* 0BD188 */ void ftCo_ThrownMewtwo_Coll(ftCo_GObj* gobj);
/* 0BD18C */ void ftCo_ThrownMewtwoAir_Anim(ftCo_GObj* gobj);
/* 0BD190 */ void ftCo_ThrownMewtwoAir_IASA(ftCo_GObj* gobj);
/* 0BD194 */ void ftCo_ThrownMewtwoAir_Phys(ftCo_GObj* gobj);
/* 0BD198 */ void ftCo_ThrownMewtwoAir_Coll(ftCo_GObj* gobj);
#define GALE01_08A494
/* 08A494 */ void ftCo_Wait_Anim(ftCo_GObj* gobj);
/* 08A4D4 */ void ftCo_Wait_IASA(ftCo_GObj* gobj);
/* 08A644 */ void ftCo_Wait_Phys(ftCo_GObj* gobj);
/* 08A678 */ void ftCo_Wait_Coll(ftCo_GObj* gobj);
#define GALE01_0C4724
/* 0C4724 */ void ftCo_800C4724(ftCo_GObj* gobj);
/* 0C4900 */ void ftCo_WarpStarJump_Anim(ftCo_GObj* gobj);
/* 0C4964 */ void ftCo_WarpStarJump_IASA(ftCo_GObj* gobj);
/* 0C4968 */ void ftCo_WarpStarJump_Phys(ftCo_GObj* gobj);
/* 0C4A14 */ void ftCo_WarpStarJump_Coll(ftCo_GObj* gobj);
/* 0C4A18 */ void ftCo_WarpStarJump_Cam(ftCo_GObj* gobj);
/* 0C4BA4 */ void ftCo_WarpStarFall_Anim(ftCo_GObj* gobj);
/* 0C4BA8 */ void ftCo_WarpStarFall_IASA(ftCo_GObj* gobj);
/* 0C4BAC */ void ftCo_WarpStarFall_Phys(ftCo_GObj* gobj);
/* 0C4C30 */ void ftCo_WarpStarFall_Coll(ftCo_GObj* gobj);
/* 0C4E2C */ void ftCo_WarpStarFall_Cam(ftCo_GObj* gobj);
#define GALE01_09D7E4
/* 09DA30 */ void ftCo_800BBED4(ftCo_GObj* arg0, ftCo_GObj* arg1);
/* 09DD0C */ void ftCo_YoshiEgg_Anim(ftCo_GObj* gobj);
/* 09DE60 */ void ftCo_YoshiEgg_IASA(ftCo_GObj* gobj);
/* 09DE64 */ void ftCo_YoshiEgg_Phys(ftCo_GObj* gobj);
/* 09DE9C */ void ftCo_YoshiEgg_Coll(ftCo_GObj* gobj);
/* 0BC388 */ void ftCo_800BC388(ftCo_GObj* gobj);
/* 0BC3AC */ void ftCo_800BC3AC(ftCo_GObj* gobj);
/* 0BC3D0 */ void ftCo_800BC3D0(ftCo_GObj* gobj);
#define GALE01_093C3C
/* 093CF4 */ bool ftpickupitem_80094150(ftCo_GObj* arg0, Item_GObj* arg1);
/* 094334 */ bool ftpickupitem_80094790(HSD_GObj* gobj);
/* 0943BC */ void ftpickupitem_80094818(HSD_GObj* gobj, bool);
/* 0945B8 */ void ftpickupitem_Anim(ftCo_GObj* gobj);
/* 0946C4 */ void ftpickupitem_IASA(ftCo_GObj* gobj);
/* 0946C8 */ void ftpickupitem_Phys(ftCo_GObj* gobj);
/* 0946E8 */ void ftpickupitem_Coll(ftCo_GObj* gobj);
/* 094D90 */ void ftpickupitem_80094D90(ftCo_GObj* gobj);
/* 094DF8 */ void ftpickupitem_80094DF8(ftCo_GObj* gobj);
#define MELEE_FT_CHARA_FTCOMMON_INLINES_H
#define GALE01_0679B0
#define MELEE_FT_INLINES_H
#define GALE01_06DBF4
/* 06FE08 */ void ftAnim_8006FE08(Fighter* fp, bool);
/* 06DE00 */ void ftAnim_GetNextJointInTree(HSD_Joint** pjoint, s32* pdepth);
/* 06E9B4 */ void ftAnim_8006E9B4(Fighter_GObj*);
/* 06EBA4 */ void ftAnim_8006EBA4(Fighter_GObj*);
/* 06EBE8 */ void ftAnim_8006EBE8(HSD_GObj* gobj, float, float anim_rate,
float anim_blend_frames);
/* 06EED4 */ void ftAnim_8006EED4(Fighter*, Fighter_Part, Fighter_Part, float,
float);
/* 06F0FC */ void ftAnim_8006F0FC(Fighter_GObj* gobj, float);
/* 06F190 */ void ftAnim_SetAnimRate(Fighter_GObj*, float);
/* 06F238 */ bool ftAnim_IsFramesRemaining(Fighter_GObj*);
/* 06F484 */ float ftAnim_8006F484(void*);
/* 06F4C8 */ void ftAnim_8006F4C8(Fighter* fp, int, u32);
/* 06FA58 */ void ftAnim_8006FA58(Fighter* fp, bool, HSD_Joint* joint);
/* 06FB88 */ void ftAnim_8006FB88(Fighter* fp, bool, HSD_Joint* joint);
/* 06FE48 */ void ftAnim_8006FE48(Fighter_GObj*);
/* 06FE9C */ void ftAnim_8006FE9C(Fighter* fp, int, float, float);
/* 06FF74 */ void ftAnim_8006FF74(Fighter* fp, int);
/* 070010 */ void ftAnim_80070010(Fighter* fp, int, HSD_Joint* joint, float,
float);
/* 070108 */ void ftAnim_80070108(Fighter* fp, int, HSD_Joint* joint, float,
float);
/* 070308 */ void ftAnim_80070308(Fighter_GObj*);
/* 0704F0 */ void ftAnim_800704F0(Fighter_GObj*, s32, float);
/* 070654 */ void ftAnim_80070654(Fighter_GObj*);
/* 070710 */ void ftAnim_80070710(HSD_JObj* joint, float);
/* 070734 */ void ftAnim_80070734(HSD_JObj* jobj, float);
/* 070758 */ void ftAnim_80070758(HSD_JObj*);
/* 07077C */ void ftAnim_8007077C(Fighter_GObj*);
/* 070B88 */ void ftAnim_ApplyPartAnim(Fighter_GObj*, s32, s32, float);
/* 070C48 */ void ftAnim_80070C48(Fighter_GObj*, s32);
/* 070CC4 */ void ftAnim_80070CC4(Fighter_GObj*, s32);
/* 070E74 */ void ftAnim_80070E74(Fighter_GObj*);
/* 070F28 */ void ftAnim_80070F28(Fighter_GObj*);
/* 070FB4 */ void ftAnim_80070FB4(Fighter_GObj*, s32, s32);
/* 070FD0 */ bool ftAnim_80070FD0(Fighter*);
#define GALE01_26B1D4
/* 26B1D4 */ float it_8026B1D4(Item_GObj* gobj, HitCapsule* itemHitboxUnk);
/* 26B294 */ void it_8026B294(Item_GObj* gobj, Vec3* pos);
/* 26B2B4 */ enum_t it_8026B2B4(Item_GObj* gobj);
/* 26B2D8 */ bool it_8026B2D8(Item_GObj* gobj);
/* 26B300 */ s32 itGetKind(Item_GObj* gobj);
/* 26B30C */ enum_t it_8026B30C(Item_GObj* gobj);
/* 26B320 */ enum_t it_8026B320(Item_GObj* gobj);
/* 26B334 */ float it_8026B334(Item_GObj* gobj);
/* 26B344 */ void it_8026B344(Item_GObj* gobj, Vec3* pos);
/* 26B378 */ float it_8026B378(Item_GObj* gobj);
/* 26B384 */ float it_8026B384(Item_GObj* gobj);
/* 26B390 */ void it_8026B390(Item_GObj* gobj);
/* 26B3A8 */ void it_8026B3A8(Item_GObj* gobj);
/* 26B3C0 */ int it_8026B3C0(ItemKind kind);
/* 26B3F8 */ void it_8026B3F8(Article* article, s32 kind);
/* 26B40C */ void it_8026B40C(Article* article, s32 kind);
/* 26B424 */ float it_8026B424(s32 damage);
/* 26B47C */ s32 it_8026B47C(Item_GObj* gobj);
/* 26B4F0 */ bool it_8026B4F0(Item_GObj* gobj);
/* 26B54C */ float it_8026B54C(Item_GObj* gobj);
/* 26B560 */ float it_8026B560(Item_GObj* gobj);
/* 26B574 */ float it_8026B574(Item_GObj* gobj);
/* 26B588 */ s32 it_8026B588(void);
/* 26B594 */ bool it_8026B594(Item_GObj* gobj);
/* 26B5E4 */ HSD_GObj* it_8026B5E4(Vec3* vector, Vec3* vector2,
Item_GObj* gobj);
/* 26B634 */ HSD_GObj* it_8026B634(Vec3* vector, Vec3* vector2,
Item_GObj* gobj);
/* 26B684 */ float it_8026B684(Vec3* pos);
/* 26B6A8 */ float it_8026B6A8(Vec3* pos, HSD_GObj* arg);
/* 26B6C8 */ bool it_8026B6C8(Item_GObj* gobj);
/* 26B718 */ void it_8026B718(Item_GObj* gobj, float hitlagFrames);
/* 26B724 */ void it_8026B724(Item_GObj* gobj);
/* 26B73C */ void it_8026B73C(Item_GObj* gobj);
/* 26B774 */ bool it_8026B774(Item_GObj* gobj, u8 arg1);
/* 26B7A4 */ s32 it_8026B7A4(Item_GObj* gobj);
/* 26B7B0 */ u8 it_8026B7B0(Item_GObj* gobj);
/* 26B7BC */ s32 it_8026B7BC(Item_GObj* gobj);
/* 26B7CC */ s32 it_8026B7CC(Item_GObj* gobj);
/* 26B7D8 */ s32 it_8026B7D8(void);
/* 26B7E0 */ s32 it_8026B7E0(void);
/* 26B7E8 */ s32 it_8026B7E8(Item_GObj* gobj);
/* 26B7F8 */ void it_8026B7F8(Item_GObj* gobj);
/* 26B894 */ bool it_8026B894(Item_GObj* gobj, HSD_GObj* referenced_gobj);
/* 26B924 */ s32 it_8026B924(Item_GObj* gobj);
/* 26B960 */ float it_8026B960(Item_GObj* gobj);
/* 26B9A8 */ void it_8026B9A8(Item_GObj* gobj, HSD_GObj* arg1,
Fighter_Part arg2);
/* 26BAE8 */ void it_8026BAE8(Item_GObj* gobj, float scale_mul);
/* 26BB20 */ void it_8026BB20(Item_GObj* gobj);
/* 26BB44 */ void it_8026BB44(Item_GObj* gobj);
/* 26BB68 */ void it_8026BB68(Item_GObj* gobj, Vec3* pos);
/* 26BB88 */ void it_8026BB88(Item_GObj* gobj, Vec3* pos);
/* 26BBCC */ void it_8026BBCC(Item_GObj* gobj, Vec3* pos);
/* 26BC14 */ void it_8026BC14(Item_GObj* gobj);
/* 26BC68 */ bool it_8026BC68(Item_GObj* gobj);
/* 26BC78 */ HSD_GObj* it_8026BC78(Item_GObj* gobj);
/* 26BC84 */ bool it_8026BC84(Item_GObj* gobj);
/* 26BC90 */ void it_8026BC90(Item_GObj* gobj, Vec3* pos);
/* 26BCF4 */ void it_8026BCF4(Item_GObj* gobj);
/* 26BD0C */ void it_8026BD0C(Item_GObj* gobj);
/* 26BD24 */ void it_8026BD24(Item_GObj* gobj);
/* 26BD3C */ void it_8026BD3C(Item_GObj* gobj);
/* 26BD54 */ void it_8026BD54(Item_GObj* gobj);
/* 26BD6C */ void it_8026BD6C(Item_GObj* gobj);
/* 26BD84 */ void it_8026BD84(Item_GObj* gobj);
/* 26BD9C */ void it_8026BD9C(Item_GObj* gobj);
/* 26BDB4 */ void it_8026BDB4(Item_GObj* gobj);
/* 26BDCC */ void it_8026BDCC(Item_GObj* gobj);
/* 26BE28 */ void it_8026BE28(Item_GObj* gobj);
/* 26BE84 */ HSD_GObj* it_8026BE84(BobOmbRain* bobOmbRain);
/* 26C100 */ CollData* it_8026C100(Item_GObj* gobj);
/* 26C16C */ void it_8026C16C(Item_GObj* gobj, bool isHeadless);
/* 26C1B4 */ bool it_8026C1B4(Item_GObj* gobj);
/* 26C1D4 */ u32 it_8026C1D4(void);
/* 26C1E8 */ bool it_8026C1E8(Item_GObj* gobj);
/* 26C220 */ void it_8026C220(Item_GObj* gobj, HSD_GObj* arg1);
/* 26C258 */ HSD_GObj* it_8026C258(Vec3* vector, float facingDir);
/* 26C334 */ void it_8026C334(Item_GObj* gobj, Vec3* pos);
/* 26C368 */ void it_8026C368(Item_GObj* gobj);
/* 26C3FC */ void it_8026C3FC(void);
/* 26C42C */ void it_8026C42C(void);
#define _archive_h_
#define HSD_ARCHIVE_DONT_FREE 1
struct HSD_ArchiveHeader {
u32 file_size; /* 0x00 */
u32 data_size; /* 0x04 */
u32 nb_reloc; /* 0x08 */
u32 nb_public; /* 0x0C */
u32 nb_extern; /* 0x10 */
u8 version[4]; /* 0x14 */
u32 pad[2]; /* 0x18 */
};
struct HSD_ArchiveRelocationInfo {
u32 offset;
};
struct HSD_ArchivePublicInfo {
u32 offset; /* 0x00 */
u32 symbol; /* 0x04 */
};
struct HSD_ArchiveExternInfo {
u32 offset; /* 0x00 */
u32 symbol; /* 0x04 */
};
struct HSD_Archive {
HSD_ArchiveHeader header; /* 0x00 */
u8* data; /* 0x20 */
HSD_ArchiveRelocationInfo* reloc_info; /* 0x24 */
HSD_ArchivePublicInfo* public_info; /* 0x28 */
HSD_ArchiveExternInfo* extern_info; /* 0x2C */
char* symbols; /* 0x30 */
HSD_Archive* next; /* 0x34 */
char* name; /* 0x38 */
u32 flags; /* 0x3C */
void* top_ptr; /* 0x40 */
};
s32 HSD_ArchiveParse(HSD_Archive*, u8*, u32);
void* HSD_ArchiveGetPublicAddress(HSD_Archive*, char*);
char* HSD_ArchiveGetExtern(HSD_Archive*, int);
void HSD_ArchiveLocateExtern(HSD_Archive*, char*, void*);
#define _controller_h_
/// @todo Circular dependency
#define SYSDOLPHIN_BASELIB_RUMBLE_H
struct HSD_RumbleData {
u8 last_status;
u8 status;
u8 direct_status;
u16 nb_list;
HSD_PadRumbleListData* listdatap;
};
struct RumbleCommand {
u16 op;
u16 frame;
};
union HSD_Rumble {
u16 def;
RumbleCommand command;
};
struct RumbleInfo {
u16 max_list;
u8 unk2;
HSD_PadRumbleListData* listdatap;
};
struct HSD_PadRumbleListData {
/*0x00*/ HSD_PadRumbleListData* next;
/*0x04*/ u32 id;
/*0x08*/ u8 pause;
/*0x09*/ u8 pri;
/*0x0A*/ u8 status;
/*0x0C*/ u16 loop_count;
/*0x0E*/ u16 wait;
/*0x10*/ s32 frame;
/*0x14*/ /* HSD_Rumble* */ u16* stack;
/*0x18*/ /* HSD_Rumble* */ u16* listp;
/*0x1C*/ /* HSD_Rumble* */ u16* headp;
};
void HSD_PadRumbleRemoveId(u8, int);
void HSD_PadRumbleFree(HSD_RumbleData* a, HSD_PadRumbleListData* b);
void HSD_PadRumbleRemove(u8 no);
void HSD_PadRumbleRemoveAll(void);
void HSD_PadRumblePause(u8 no, int status);
void HSD_PadRumblePauseAll(void);
void HSD_PadRumbleUnpauseAll(void);
void func_80378430_inline(HSD_PadRumbleListData** r6,
HSD_PadRumbleListData* r7);
int HSD_PadRumbleAdd(u8 no, int id, int frame, int pri, void* listp);
void HSD_Rumble_80378524(int max);
int HSD_PadRumbleInterpret1(HSD_PadRumbleListData* a, u8* b);
void HSD_PadRumbleInterpret(void);
void HSD_PadRumbleInit(u16 a, void* b);
void HSD_PadRumbleOn(u8 no);
void HSD_PadRumbleOffN(u8 no);
#define PAD_ERR_NO_CONTROLLER -1
typedef enum _HSD_FlushType {
HSD_PAD_FLUSH_QUEUE_MERGE,
HSD_PAD_FLUSH_QUEUE_THROWAWAY,
HSD_PAD_FLUSH_QUEUE_LEAVE1,
HSD_PAD_FLUSH_QUEUE_TERMINATE,
} HSD_FlushType;
struct HSD_PadData {
PADStatus stat[4];
};
struct HSD_PadStatus {
u32 button;
u32 last_button;
u32 trigger;
u32 repeat;
u32 release;
s32 repeat_count;
s8 stickX;
s8 stickY;
s8 subStickX;
s8 subStickY;
u8 analogL;
u8 analogR;
u8 analogA;
u8 analogB;
f32 nml_stickX;
f32 nml_stickY;
f32 nml_subStickX;
f32 nml_subStickY;
f32 nml_analogL;
f32 nml_analogR;
f32 nml_analogA;
f32 nml_analogB;
u8 cross_dir;
s8 err;
};
struct PadLibData {
/*0x00*/ u8 qnum;
/*0x01*/ u8 qread;
/*0x02*/ u8 qwrite;
/*0x03*/ u8 qcount;
/*0x04*/ u8 qtype;
/*0x08*/ HSD_PadData* queue;
/*0x0C*/ s32 repeat_start;
/*0x10*/ s32 repeat_interval;
/*0x14*/ s8 adc_type;
/*0x15*/ s8 adc_th;
/*0x18*/ f32 adc_angle;
/*0x1C*/ u8 clamp_stickType;
/*0x1D*/ u8 clamp_stickShift;
/*0x1E*/ s8 clamp_stickMax;
/*0x1F*/ s8 clamp_stickMin;
/*0x20*/ u8 clamp_analogLRShift;
/*0x21*/ u8 clamp_analogLRMax;
/*0x22*/ u8 clamp_analogLRMin;
/*0x23*/ u8 clamp_analogABShift;
/*0x24*/ u8 clamp_analogABMax;
/*0x25*/ u8 clamp_analogABMin;
/*0x26*/ s8 scale_stick;
/*0x27*/ u8 scale_analogLR;
/*0x28*/ u8 scale_analogAB;
/*0x29*/ u8 cross_dir;
/*0x2A*/ u8 reset_switch_status;
/*0x2B*/ u8 reset_switch;
/*0x2C*/ RumbleInfo rumble_info;
};
extern HSD_PadStatus HSD_PadMasterStatus[4];
extern HSD_PadStatus HSD_PadGameStatus[4];
extern HSD_PadStatus HSD_PadCopyStatus[4];
void HSD_PadFlushQueue(HSD_FlushType);
u8 HSD_PadGetRawQueueCount(void);
s32 HSD_PadGetResetSwitch(void);
void HSD_PadRenewRawStatus(bool);
void HSD_PadRenewMasterStatus(void);
void HSD_PadRenewGameStatus(void);
void HSD_PadRenewStatus(void);
void HSD_PadReset(void);
void HSD_PadInit(u8, HSD_PadData*, u16, HSD_PadRumbleListData*);
#define SYSDOLPHIN_BASELIB_DOBJ_H
#define _fobj_h_
#define HSD_A_OP_NONE 0
#define HSD_A_OP_CON 1
#define HSD_A_OP_LIN 2
#define HSD_A_OP_SPL0 3
#define HSD_A_OP_SPL 4
#define HSD_A_OP_SLP 5
#define HSD_A_OP_KEY 6
#define HSD_A_FRAC_FLOAT (0 << 5)
#define HSD_A_FRAC_S16 (1 << 5)
#define HSD_A_FRAC_U16 (2 << 5)
#define HSD_A_FRAC_S8 (3 << 5)
#define HSD_A_FRAC_U8 (4 << 5)
#define FOBJ_LOAD_DATA0 1
#define FOBJ_LOAD_DATA 2
#define FOBJ_LOAD_WAIT 3
#define TYPE_ROBJ 1
#define TYPE_JOBJ 12
typedef struct _HSD_FObj {
struct _HSD_FObj* next;
u8* ad;
u8* ad_head;
u32 length;
u8 flags;
u8 op;
u8 op_intrp;
u8 obj_type;
u8 frac_value;
u8 frac_slope;
u16 nb_pack;
s16 startframe;
u16 fterm;
f32 time;
f32 p0;
f32 p1;
f32 d0;
f32 d1;
} HSD_FObj;
typedef struct _HSD_FObjDesc {
struct _HSD_FObjDesc* next;
u32 length;
f32 startframe;
u8 type;
u8 frac_value;
u8 frac_slope;
u8 dummy0;
u8* ad;
} HSD_FObjDesc;
union HSD_ObjData {
f32 fv;
s32 iv;
Vec3 p;
};
HSD_ObjAllocData* HSD_FObjGetAllocData(void);
void HSD_FObjInitAllocData(void);
void HSD_FObjRemove(HSD_FObj* fobj);
void HSD_FObjRemoveAll(HSD_FObj* fobj);
u32 HSD_FObjSetState(HSD_FObj* fobj, u32 state);
u32 HSD_FObjGetState(HSD_FObj* fobj);
void HSD_FObjReqAnimAll(HSD_FObj* fobj, f32 startframe);
void HSD_FObjStopAnim(HSD_FObj* fobj, void* obj, HSD_ObjUpdateFunc obj_update,
f32 rate);
void HSD_FObjStopAnimAll(HSD_FObj* fobj, void* obj,
HSD_ObjUpdateFunc obj_update, f32 rate);
void FObjUpdateAnim(HSD_FObj* fobj, void* obj, HSD_ObjUpdateFunc update_func);
void HSD_FObjInterpretAnim(HSD_FObj* fobj, void* obj,
HSD_ObjUpdateFunc obj_update, f32 rate);
void HSD_FObjInterpretAnimAll(void* fobj, void* obj,
HSD_ObjUpdateFunc obj_update, f32 rate);
HSD_FObj* HSD_FObjLoadDesc(HSD_FObjDesc* desc);
HSD_FObj* HSD_FObjAlloc(void);
void HSD_FObjFree(HSD_FObj* fobj);
#define _mobj_h_
#define _texp_h_
#define HSD_TEXP_RAS ((HSD_TExp*) -2)
#define HSD_TEXP_TEX ((HSD_TExp*) -1)
#define HSD_TEXP_ZERO ((HSD_TExp*) 0)
#define TEVCONF_MODE 1
typedef enum _HSD_TEInput {
HSD_TE_END = 0,
HSD_TE_RGB = 1,
HSD_TE_R = 2,
HSD_TE_G = 3,
HSD_TE_B = 4,
HSD_TE_A = 5,
HSD_TE_X = 6,
HSD_TE_0 = 7,
HSD_TE_1 = 8,
HSD_TE_1_8 = 9,
HSD_TE_2_8 = 10,
HSD_TE_3_8 = 11,
HSD_TE_4_8 = 12,
HSD_TE_5_8 = 13,
HSD_TE_6_8 = 14,
HSD_TE_7_8 = 15,
HSD_TE_INPUT_MAX = 16,
HSD_TE_UNDEF = 0xFF
} HSD_TEInput;
typedef enum _HSD_TEType {
HSD_TE_U8 = 0,
HSD_TE_U16 = 1,
HSD_TE_U32 = 2,
HSD_TE_F32 = 3,
HSD_TE_F64 = 4,
HSD_TE_COMP_TYPE_MAX = 5
} HSD_TEType;
typedef enum _HSD_TExpType {
HSD_TE_ZERO = 0,
HSD_TE_TEV = 1,
HSD_TE_TEX = 2,
HSD_TE_RAS = 3,
HSD_TE_CNST = 4,
HSD_TE_IMM = 5,
HSD_TE_KONST = 6,
HSD_TE_ALL = 7,
HSD_TE_TYPE_MAX = 8
} HSD_TExpType;
typedef struct _HSD_TevConf {
GXTevOp clr_op;
GXTevColorArg clr_a;
GXTevColorArg clr_b;
GXTevColorArg clr_c;
GXTevColorArg clr_d;
GXTevScale clr_scale;
GXTevBias clr_bias;
u8 clr_clamp;
GXTevRegID clr_out_reg;
GXTevOp alpha_op;
GXTevAlphaArg alpha_a;
GXTevAlphaArg alpha_b;
GXTevAlphaArg alpha_c;
GXTevAlphaArg alpha_d;
GXTevScale alpha_scale;
GXTevBias alpha_bias;
u8 alpha_clamp;
GXTevRegID alpha_out_reg;
GXTevClampMode mode;
GXTevSwapSel ras_swap;
GXTevSwapSel tex_swap;
GXTevKColorSel kcsel;
GXTevKAlphaSel kasel;
} HSD_TevConf;
typedef struct HSD_TExpRes {
int failed;
int texmap;
int cnst_remain;
struct {
u8 color;
u8 alpha;
} reg[8];
u8 c_ref[4];
u8 a_ref[4];
u8 c_use[4];
u8 a_use[4];
} HSD_TExpRes;
typedef struct _HSD_TevDesc {
struct _HSD_TevDesc* next;
u32 flags;
u32 stage;
u32 coord;
u32 map;
u32 color;
union {
HSD_TevConf tevconf;
struct {
u32 tevmode;
} tevop;
} u;
} HSD_TevDesc;
typedef struct _HSD_TExpTevDesc {
struct _HSD_TevDesc desc;
HSD_TObj* tobj;
} HSD_TExpTevDesc;
typedef struct _HSD_TECommon {
HSD_TExpType type;
HSD_TExp* next;
} HSD_TECommon;
typedef struct _HSD_TECnst {
HSD_TExpType type;
HSD_TExp* next;
void* val;
HSD_TEInput comp;
HSD_TEType ctype;
u8 reg;
u8 idx;
u8 ref;
u8 range;
} HSD_TECnst;
typedef struct _HSD_TEArg {
u8 type;
u8 sel;
u8 arg;
HSD_TExp* exp;
} HSD_TEArg;
typedef struct _HSD_TETev {
HSD_TExpType type;
HSD_TExp* next;
s32 c_ref;
u8 c_dst;
u8 c_op;
u8 c_clamp;
u8 c_bias;
u8 c_scale;
u8 c_range;
s32 a_ref;
u8 a_dst;
u8 a_op;
u8 a_clamp;
u8 a_bias;
u8 a_scale;
u8 tex_swap;
u8 ras_swap;
u8 kcsel;
u8 kasel;
HSD_TEArg c_in[4];
HSD_TEArg a_in[4];
HSD_TObj* tex;
u8 chan;
} HSD_TETev;
union HSD_TExp {
HSD_TExpType type;
struct _HSD_TECommon comm;
struct _HSD_TETev tev;
struct _HSD_TECnst cnst;
};
HSD_TExpType HSD_TExpGetType(HSD_TExp* texp);
HSD_TExp* HSD_TExpTev(HSD_TExp**);
HSD_TExp* HSD_TExpCnst(void*, HSD_TEInput, HSD_TEType, HSD_TExp**);
void HSD_TExpOrder(HSD_TExp*, HSD_TObj*, GXChannelID);
void HSD_TExpColorOp(HSD_TExp*, GXTevOp, GXTevBias, GXTevScale, u8);
void HSD_TExpColorIn(HSD_TExp*, HSD_TEInput, HSD_TExp*, HSD_TEInput, HSD_TExp*,
HSD_TEInput, HSD_TExp*, HSD_TEInput, HSD_TExp*);
void HSD_TExpAlphaOp(HSD_TExp*, GXTevOp, GXTevBias, GXTevScale, u8);
void HSD_TExpAlphaIn(HSD_TExp* texp, HSD_TEInput sel_a, HSD_TExp* exp_a,
HSD_TEInput sel_b, HSD_TExp* exp_b, HSD_TEInput sel_c,
HSD_TExp* exp_c, HSD_TEInput sel_d, HSD_TExp* exp_d);
void HSD_TExpFreeTevDesc(HSD_TExpTevDesc*);
HSD_TExp* HSD_TExpFreeList(HSD_TExp*, HSD_TExpType, s32);
int HSD_TExpCompile(HSD_TExp*, HSD_TExpTevDesc**, HSD_TExp**);
void HSD_TExpSetupTev(HSD_TExpTevDesc*, HSD_TExp*);
void HSD_TExpFree(HSD_TExp* texp);
void HSD_TExpRef(HSD_TExp* texp, u8 sel);
void HSD_TExpUnref(HSD_TExp* texp, u8 sel);
void HSD_TExpSetReg(HSD_TExp* texp);
#define _hsd_tobj_h_
struct HSD_TObj;
#define TOBJ_ANIM 0x10
#define HSD_A_T_TIMG 1
#define HSD_A_T_TRAU 2
#define HSD_A_T_TRAV 3
#define HSD_A_T_SCAU 4
#define HSD_A_T_SCAV 5
#define HSD_A_T_ROTX 6
#define HSD_A_T_ROTY 7
#define HSD_A_T_ROTZ 8
#define HSD_A_T_BLEND 9
#define HSD_A_T_TCLT 10
#define HSD_A_T_LOD_BIAS 11
#define HSD_A_T_KONST_R 12
#define HSD_A_T_KONST_G 13
#define HSD_A_T_KONST_B 14
#define HSD_A_T_KONST_A 15
#define HSD_A_T_TEV0_R 16
#define HSD_A_T_TEV0_G 17
#define HSD_A_T_TEV0_B 18
#define HSD_A_T_TEV0_A 19
#define HSD_A_T_TEV1_R 20
#define HSD_A_T_TEV1_G 21
#define HSD_A_T_TEV1_B 22
#define HSD_A_T_TEV1_A 23
#define HSD_A_T_TS_BLEND 24
#define TOBJ_TEV_CC_KONST_RGB (0x01 << 7 | 0)
#define TOBJ_TEV_CC_KONST_RRR (0x01 << 7 | 1)
#define TOBJ_TEV_CC_KONST_GGG (0x01 << 7 | 2)
#define TOBJ_TEV_CC_KONST_BBB (0x01 << 7 | 3)
#define TOBJ_TEV_CC_KONST_AAA (0x01 << 7 | 4)
#define TOBJ_TEV_CC_TEX0_RGB (0x01 << 7 | 5)
#define TOBJ_TEV_CC_TEX0_AAA (0x01 << 7 | 6)
#define TOBJ_TEV_CC_TEX1_RGB (0x01 << 7 | 7)
#define TOBJ_TEV_CC_TEX1_AAA (0x01 << 7 | 8)
#define TOBJ_TEV_CA_KONST_R (0x01 << 6 | 0)
#define TOBJ_TEV_CA_KONST_G (0x01 << 6 | 1)
#define TOBJ_TEV_CA_KONST_B (0x01 << 6 | 2)
#define TOBJ_TEV_CA_KONST_A (0x01 << 6 | 3)
#define TOBJ_TEV_CA_TEX0_A (0x01 << 6 | 4)
#define TOBJ_TEV_CA_TEX1_A (0x01 << 6 | 5)
#define TOBJ_TEVREG_ACTIVE_KONST_R (0x01 << 0)
#define TOBJ_TEVREG_ACTIVE_KONST_G (0x01 << 1)
#define TOBJ_TEVREG_ACTIVE_KONST_B (0x01 << 2)
#define TOBJ_TEVREG_ACTIVE_KONST_A (0x01 << 3)
#define TOBJ_TEVREG_ACTIVE_KONST (TOBJ_TEVREG_ACTIVE_KONST_R | TOBJ_TEVREG_ACTIVE_KONST_G | TOBJ_TEVREG_ACTIVE_KONST_B | TOBJ_TEVREG_ACTIVE_KONST_A)
#define TOBJ_TEVREG_ACTIVE_TEV0_R (0x01 << 4)
#define TOBJ_TEVREG_ACTIVE_TEV0_G (0x01 << 5)
#define TOBJ_TEVREG_ACTIVE_TEV0_B (0x01 << 6)
#define TOBJ_TEVREG_ACTIVE_TEV0_A (0x01 << 7)
#define TOBJ_TEVREG_ACTIVE_TEV0 (TOBJ_TEVREG_ACTIVE_TEV0_R | TOBJ_TEVREG_ACTIVE_TEV0_G | TOBJ_TEVREG_ACTIVE_TEV0_B | TOBJ_TEVREG_ACTIVE_TEV0_A)
#define TOBJ_TEVREG_ACTIVE_TEV1_R (0x01 << 8)
#define TOBJ_TEVREG_ACTIVE_TEV1_G (0x01 << 9)
#define TOBJ_TEVREG_ACTIVE_TEV1_B (0x01 << 10)
#define TOBJ_TEVREG_ACTIVE_TEV1_A (0x01 << 11)
#define TOBJ_TEVREG_ACTIVE_TEV1 (TOBJ_TEVREG_ACTIVE_TEV1_R | TOBJ_TEVREG_ACTIVE_TEV1_G | TOBJ_TEVREG_ACTIVE_TEV1_B | TOBJ_TEVREG_ACTIVE_TEV1_A)
#define TOBJ_TEVREG_ACTIVE_COLOR_TEV (0x01 << 30)
#define TOBJ_TEVREG_ACTIVE_ALPHA_TEV (0x01U << 31)
#define TEX_COORD_UV 0
#define TEX_COORD_REFLECTION 1
#define TEX_COORD_HILIGHT 2
#define TEX_COORD_SHADOW 3
#define TEX_COORD_TOON 4
#define TEX_COORD_GRADATION 5
#define TEX_COORD_BACKLIGHT 6
#define TEX_COORD_MASK (0x0f)
#define tobj_coord(T) ((T)->flags & TEX_COORD_MASK)
#define TEX_COLORMAP_NONE (0 << 16)
#define TEX_COLORMAP_ALPHA_MASK (1 << 16)
#define TEX_COLORMAP_RGB_MASK (2 << 16)
#define TEX_COLORMAP_BLEND (3 << 16)
#define TEX_COLORMAP_MODULATE (4 << 16)
#define TEX_COLORMAP_REPLACE (5 << 16)
#define TEX_COLORMAP_PASS (6 << 16)
#define TEX_COLORMAP_ADD (7 << 16)
#define TEX_COLORMAP_SUB (8 << 16)
#define TEX_COLORMAP_MASK (0x0f << 16)
#define tobj_colormap(T) ((T)->flags & TEX_COLORMAP_MASK)
#define TEX_ALPHAMAP_NONE (0 << 20)
#define TEX_ALPHAMAP_ALPHA_MASK (1 << 20)
#define TEX_ALPHAMAP_BLEND (2 << 20)
#define TEX_ALPHAMAP_MODULATE (3 << 20)
#define TEX_ALPHAMAP_REPLACE (4 << 20)
#define TEX_ALPHAMAP_PASS (5 << 20)
#define TEX_ALPHAMAP_ADD (6 << 20)
#define TEX_ALPHAMAP_SUB (7 << 20)
#define TEX_ALPHAMAP_MASK (0x0f << 20)
#define tobj_alphamap(T) ((T)->flags & TEX_ALPHAMAP_MASK)
#define TEX_LIGHTMAP_DIFFUSE (0x1 << 4)
#define TEX_LIGHTMAP_SPECULAR (0x1 << 5)
#define TEX_LIGHTMAP_AMBIENT (0x1 << 6)
#define TEX_LIGHTMAP_EXT (0x1 << 7)
#define TEX_LIGHTMAP_SHADOW (0x1 << 8)
#define TEX_LIGHTMAP_MASK (TEX_LIGHTMAP_DIFFUSE | TEX_LIGHTMAP_SPECULAR | TEX_LIGHTMAP_AMBIENT | TEX_LIGHTMAP_EXT | TEX_LIGHTMAP_SHADOW)
#define tobj_lightmap(T) ((T)->flags & TEX_LIGHTMAP_MASK)
#define TEX_BUMP (0x1 << 24)
#define tobj_bump(T) ((T)->flags & TEX_BUMP)
#define TEX_MTX_DIRTY (1U << 31)
// Texture Object
struct HSD_TObj {
HSD_Obj parent;
HSD_TObj* next;
GXTexMapID id;
GXTexGenSrc src;
u32 mtxid;
Quaternion rotate;
Vec3 scale;
Vec3 translate;
GXTexWrapMode wrap_s;
GXTexWrapMode wrap_t;
u8 repeat_s;
u8 repeat_t;
u32 flags;
f32 blending;
GXTexFilter magFilt;
struct HSD_ImageDesc* imagedesc;
struct _HSD_Tlut* tlut;
struct _HSD_TexLODDesc* lod;
HSD_AObj* aobj;
struct HSD_ImageDesc** imagetbl;
struct _HSD_Tlut** tluttbl;
u8 tlut_no;
Mtx mtx;
GXTexCoordID coord;
struct _HSD_TObjTev* tev;
};
typedef struct _HSD_TObjDesc {
char* class_name;
struct _HSD_TObjDesc* next;
GXTexMapID id;
GXTexGenSrc src;
Vec3 rotate;
Vec3 scale;
Vec3 translate;
GXTexWrapMode wrap_s;
GXTexWrapMode wrap_t;
u8 repeat_s;
u8 repeat_t;
u32 blend_flags;
f32 blending;
GXTexFilter magFilt;
struct HSD_ImageDesc* imagedesc;
struct _HSD_TlutDesc* tlutdesc;
struct _HSD_TexLODDesc* lod;
struct _HSD_TObjTevDesc* tev;
} HSD_TObjDesc;
typedef struct _HSD_Tlut {
void* lut;
GXTlutFmt fmt;
u32 tlut_name;
u16 n_entries;
} HSD_Tlut;
typedef struct _HSD_TlutDesc {
void* lut;
GXTlutFmt fmt;
u32 tlut_name;
u16 n_entries;
} HSD_TlutDesc;
typedef struct _HSD_TexLODDesc {
GXTexFilter minFilt;
f32 LODBias;
GXBool bias_clamp;
GXBool edgeLODEnable;
GXAnisotropy max_anisotropy;
} HSD_TexLODDesc;
struct HSD_ImageDesc {
void* image_ptr;
u16 width;
u16 height;
GXTexFmt format;
u32 mipmap;
f32 minLOD;
f32 maxLOD;
};
typedef struct _HSD_TObjTev {
u8 color_op;
u8 alpha_op;
u8 color_bias;
u8 alpha_bias;
u8 color_scale;
u8 alpha_scale;
u8 color_clamp;
u8 alpha_clamp;
u8 color_a, color_b, color_c, color_d;
u8 alpha_a, alpha_b, alpha_c, alpha_d;
GXColor konst, tev0, tev1;
u32 active;
} HSD_TObjTev;
typedef struct _HSD_TObjTevDesc {
u8 color_op;
u8 alpha_op;
u8 color_bias;
u8 alpha_bias;
u8 color_scale;
u8 alpha_scale;
u8 color_clamp;
u8 alpha_clamp;
u8 color_a, color_b, color_c, color_d;
u8 alpha_a, alpha_b, alpha_c, alpha_d;
GXColor konst, tev0, tev1;
u32 active;
} HSD_TObjTevDesc;
typedef struct _HSD_TObjInfo {
HSD_ClassInfo parent;
void (*make_mtx)(HSD_TObj* tobj);
int (*load)(HSD_TObj* tobj, HSD_TObjDesc* desc);
void (*make_texp)(HSD_TObj* tobj, u32 lightmap, u32 lightmap_done,
HSD_TExp** c, HSD_TExp** a, HSD_TExp** list);
} HSD_TObjInfo;
typedef struct _HSD_TexAnim {
struct _HSD_TexAnim* next;
GXTexMapID id;
HSD_AObjDesc* aobjdesc;
struct HSD_ImageDesc** imagetbl;
struct _HSD_TlutDesc** tluttbl;
u16 n_imagetbl;
u16 n_tluttbl;
} HSD_TexAnim;
extern HSD_TObjInfo hsdTObj;
#define HSD_TOBJ(o) ((HSD_TObj*) (o))
#define HSD_TOBJ_INFO(i) ((HSD_TObjInfo*) (i))
#define HSD_TOBJ_METHOD(o) HSD_TOBJ_INFO(HSD_OBJECT_METHOD(o))
void HSD_TObjRemoveAnimAll(HSD_TObj* tobj);
void HSD_TObjAddAnim(HSD_TObj* tobj, HSD_TexAnim* texanim);
void HSD_TObjAddAnimAll(HSD_TObj* tobj, HSD_TexAnim* texanim);
void HSD_TObjReqAnimAllByFlags(HSD_TObj* tobj, f32 startframe, u32 flags);
void HSD_TObjReqAnim(HSD_TObj* tobj, f32 startframe);
void HSD_TObjReqAnimAll(HSD_TObj* tobj, f32 startframe);
void HSD_TObjAnim(HSD_TObj* tobj);
void HSD_TObjAnimAll(HSD_TObj* tobj);
HSD_TObj* HSD_TObjLoadDesc(HSD_TObjDesc* td);
HSD_Tlut* HSD_TlutLoadDesc(HSD_TlutDesc* tlutdesc);
HSD_TObjTev* HSD_TObjTevLoadDesc(HSD_TObjTevDesc* tevdesc);
HSD_TObj* _HSD_TObjGetCurrentByType(HSD_TObj* from, u32 mapping);
void HSD_TObjRemove(HSD_TObj* tobj);
void HSD_TObjRemoveAll(HSD_TObj* tobj);
HSD_TObj* HSD_TObjGetNext(HSD_TObj* tobj);
HSD_TObj* HSD_TObjAlloc(void);
void HSD_TObjFree(HSD_TObj* tobj);
void HSD_TObjSetDefaultClass(HSD_TObjInfo* info);
HSD_TObjInfo* HSD_TObjGetDefaultClass(void);
HSD_Tlut* HSD_TlutAlloc(void);
void HSD_TlutFree(HSD_Tlut* tlut);
void HSD_TlutRemove(HSD_Tlut* tlut);
HSD_TObjTev* HSD_TObjTevAlloc(void);
void HSD_TObjTevFree(HSD_TObjTev* tev);
void HSD_TObjTevRemove(HSD_TObjTev* tev);
HSD_ImageDesc* HSD_ImageDescAlloc(void);
void HSD_ImageDescFree(HSD_ImageDesc* idesc);
void HSD_ImageDescCopyFromEFB(HSD_ImageDesc* idesc, u16 origx, u16 origy,
GXBool clear, int sync);
void HSD_TObjSetupTextureCoordGen(HSD_TObj* tobj);
void HSD_TObjSetupVolatileTev(HSD_TObj* tobj, u32 rendermode);
s32 HSD_TObjAssignResources(HSD_TObj* tobj_top);
void HSD_TObjSetup(HSD_TObj* tobj);
u32 HSD_TGTex2Index(GXTexGenSrc tgtex);
GXTexGenSrc HSD_TexCoordID2TexGenSrc(GXTexCoordID coord);
u32 HSD_TexCoord2Index(GXTexCoordID coord_id);
GXTexCoordID HSD_Index2TexCoord(u32 index);
u32 HSD_TexMtx2Index(GXTexMtx texmtx);
GXTexMtx HSD_Index2TexMtx(u32 index);
GXTexMapID HSD_Index2TexMap(u32 index);
u32 HSD_TexMap2Index(GXTexMapID mapid);
HSD_TObj* HSD_TObjAlloc(void);
void HSD_TObjRemoveAnim(HSD_TObj* tobj);
void HSD_TObjReqAnimByFlags(HSD_TObj* tobj, f32 startframe, u32 flags);
#define MOBJ_ANIM 0x4
#define TOBJ_ANIM 0x10
#define ALL_ANIM 0x7FF
#define HSD_A_M_AMBIENT_R 1
#define HSD_A_M_AMBIENT_G 2
#define HSD_A_M_AMBIENT_B 3
#define HSD_A_M_DIFFUSE_R 4
#define HSD_A_M_DIFFUSE_G 5
#define HSD_A_M_DIFFUSE_B 6
#define HSD_A_M_SPECULAR_R 7
#define HSD_A_M_SPECULAR_G 8
#define HSD_A_M_SPECULAR_B 9
#define HSD_A_M_ALPHA 10
#define HSD_A_M_PE_REF0 11
#define HSD_A_M_PE_REF1 12
#define HSD_A_M_PE_DSTALPHA 13
#define RENDER_DIFFUSE_SHIFT 0
#define RENDER_DIFFUSE_BITS (3 << RENDER_DIFFUSE_SHIFT)
#define RENDER_DIFFUSE_MAT0 (0 << RENDER_DIFFUSE_SHIFT)
#define RENDER_DIFFUSE_MAT (1 << RENDER_DIFFUSE_SHIFT)
#define RENDER_DIFFUSE_VTX (2 << RENDER_DIFFUSE_SHIFT)
#define RENDER_DIFFUSE_BOTH (3 << RENDER_DIFFUSE_SHIFT)
#define RENDER_CONSTANT (1 << 0)
#define RENDER_VERTEX (1 << 1)
#define RENDER_DIFFUSE (1 << 2)
#define RENDER_SPECULAR (1 << 3)
#define CHANNEL_FIELD (RENDER_CONSTANT | RENDER_VERTEX | RENDER_DIFFUSE | RENDER_SPECULAR)
#define RENDER_TEX0 (1 << 4)
#define RENDER_TEX1 (1 << 5)
#define RENDER_TEX2 (1 << 6)
#define RENDER_TEX3 (1 << 7)
#define RENDER_TEX4 (1 << 8)
#define RENDER_TEX5 (1 << 9)
#define RENDER_TEX6 (1 << 10)
#define RENDER_TEX7 (1 << 11)
#define RENDER_TEXTURES (RENDER_TEX0 | RENDER_TEX1 | RENDER_TEX2 | RENDER_TEX3 | RENDER_TEX4 | RENDER_TEX5 | RENDER_TEX6 | RENDER_TEX7)
#define RENDER_TOON (1 << 12)
#define RENDER_ALPHA_SHIFT 13
#define RENDER_ALPHA_BITS (3 << RENDER_ALPHA_SHIFT)
#define RENDER_ALPHA_COMPAT (0 << RENDER_ALPHA_SHIFT)
#define RENDER_ALPHA_MAT (1 << RENDER_ALPHA_SHIFT)
#define RENDER_ALPHA_VTX (2 << RENDER_ALPHA_SHIFT)
#define RENDER_ALPHA_BOTH (3 << RENDER_ALPHA_SHIFT)
#define RENDER_SHADOW (1 << 26)
#define RENDER_ZMODE_ALWAYS (1 << 27)
#define RENDER_NO_ZUPDATE (1 << 29)
#define RENDER_XLU (1 << 30)
struct HSD_MObj {
HSD_Class parent;
u32 rendermode;
HSD_TObj* tobj;
HSD_Material* mat;
HSD_PEDesc* pe;
HSD_AObj* aobj;
struct _HSD_TExpTevDesc* tevdesc;
HSD_TExp* texp;
};
struct HSD_Material {
GXColor ambient;
GXColor diffuse;
GXColor specular;
f32 alpha;
f32 shininess;
};
struct HSD_PEDesc {
u8 flags;
u8 ref0;
u8 ref1;
u8 dst_alpha;
u8 type;
u8 src_factor;
u8 dst_factor;
u8 logic_op;
u8 z_comp;
u8 alpha_comp0;
u8 alpha_op;
u8 alpha_comp1;
};
typedef struct _HSD_MObjDesc {
char* class_name;
u32 rendermode;
struct _HSD_TObjDesc* texdesc;
HSD_Material* mat;
void* renderdesc;
HSD_PEDesc* pedesc;
} HSD_MObjDesc;
typedef struct _HSD_ChanAnim {
struct _HSD_ChanAnim* next;
HSD_AObjDesc* aobjdesc;
} HSD_ChanAnim;
typedef struct _HSD_TevRegAnim {
struct _HSD_TevRegAnim* next;
HSD_AObjDesc* aobjdesc;
} HSD_TevRegAnim;
typedef struct _HSD_RenderAnim {
struct _HSD_ChanAnim* chananim;
struct _HSD_TevRegAnim* reganim;
} HSD_RenderAnim;
typedef struct _HSD_MatAnim {
struct _HSD_MatAnim* next;
HSD_AObjDesc* aobjdesc;
struct _HSD_TexAnim* texanim;
struct _HSD_RenderAnim* renderanim;
} HSD_MatAnim;
struct HSD_MatAnimJoint {
HSD_MatAnimJoint* child;
HSD_MatAnimJoint* next;
HSD_MatAnim* matanim;
};
struct HSD_MObjInfo {
/* +0 */ HSD_ClassInfo parent;
/* +3C */ HSD_MObjSetupFunc setup;
/* +40 */ int (*load)(HSD_MObj* mobj, HSD_MObjDesc* desc);
/* +44 */ HSD_TExp* (*make_texp)(HSD_MObj* mobj, HSD_TObj* tobj_top,
HSD_TExp** list);
/* +48 */ void (*setup_tev)(HSD_MObj* mobj, HSD_TObj* tobj,
u32 rendermode);
/* +4C */ void (*unset)(HSD_MObj* mobj, u32 rendermode);
};
#define HSD_MOBJ(o) ((HSD_MObj*) (o))
#define HSD_MOBJ_INFO(i) ((HSD_MObjInfo*) (i))
#define HSD_MOBJ_METHOD(o) HSD_MOBJ_INFO(HSD_CLASS_METHOD(o))
extern HSD_MObjInfo hsdMObj;
void HSD_MObjSetCurrent(HSD_MObj* mobj);
void HSD_MObjSetFlags(HSD_MObj* mobj, u32 flags);
void HSD_MObjClearFlags(HSD_MObj* mobj, u32 flags);
void HSD_MObjRemoveAnimByFlags(HSD_MObj* mobj, u32 flags);
void HSD_MObjAddAnim(HSD_MObj* mobj, HSD_MatAnim* matanim);
void HSD_MObjReqAnimByFlags(HSD_MObj* mobj, f32 startframe, u32 flags);
void HSD_MObjReqAnim(HSD_MObj* mobj, f32 startframe);
void HSD_MObjAnim(HSD_MObj* mobj);
HSD_MObj* HSD_MObjLoadDesc(HSD_MObjDesc* mobjdesc);
HSD_TObj* HSD_MObjGetTObj(HSD_MObj* mobj);
void HSD_MObjRemove(HSD_MObj* mobj);
HSD_MObj* HSD_MObjAlloc(void);
HSD_Material* HSD_MaterialAlloc(void);
void HSD_MObjCompileTev(HSD_MObj* mobj);
void HSD_MObjDeleteShadowTexture(HSD_TObj* tobj);
HSD_TExp* MObjMakeTExp(HSD_MObj* mobj, HSD_TObj* tobj_top, HSD_TExp** list);
void MObjSetupTev(HSD_MObj* mobj, HSD_TObj* tobj, u32 arg2);
void HSD_MObjSetup(HSD_MObj* mobj, u32 rendermode);
void HSD_MObjUnset(HSD_MObj* mobj, u32 rendermode);
void HSD_MObjSetToonTextureImage(HSD_ImageDesc* imagedesc);
void HSD_MObjSetDiffuseColor(HSD_MObj* mobj, u8 r, u8 g, u8 b);
void HSD_MObjSetAlpha(HSD_MObj* mobj, f32 alpha);
void HSD_MObjAddShadowTexture(HSD_TObj* tobj);
extern HSD_TObj* tobj_shadows;
extern HSD_TObj* tobj_toon;
#define DOBJ_HIDDEN 0x1
struct HSD_DObj {
HSD_Class parent;
HSD_DObj* next; // 0x04
HSD_MObj* mobj; // 0x08
HSD_PObj* pobj; // 0x0C
HSD_AObj* aobj; // 0x10
u32 flags; // 0x14
};
struct HSD_DObjDesc {
char* class_name;
HSD_DObjDesc* next;
HSD_MObjDesc* mobjdesc;
HSD_PObjDesc* pobjdesc;
};
struct HSD_DObjInfo {
HSD_ClassInfo parent;
void (*disp)(HSD_DObj* dobj, Mtx vmtx, Mtx pmtx, u32 rendermode); // 0x3C
int (*load)(HSD_DObj* dobj, HSD_DObjDesc* desc); // 0x40
};
struct HSD_ShapeAnimDObj {
HSD_ShapeAnimDObj* next;
HSD_ShapeAnim* shapeanim;
};
#define HSD_DOBJ(o) ((HSD_DObj*) (o))
#define HSD_DOBJ_INFO(i) ((HSD_DObjInfo*) (i))
#define HSD_DOBJ_METHOD(o) HSD_DOBJ_INFO(HSD_CLASS_METHOD(o))
void HSD_DObjSetCurrent(HSD_DObj* dobj);
u32 HSD_DObjGetFlags(HSD_DObj* dobj);
void HSD_DObjSetFlags(HSD_DObj* dobj, u32 flags);
void HSD_DObjClearFlags(HSD_DObj* dobj, u32 flags);
void HSD_DObjModifyFlags(HSD_DObj* dobj, u32 flags, u32 mask);
void HSD_DObjRemoveAnimByFlags(HSD_DObj* dobj, u32 flags);
void HSD_DObjRemoveAnimAllByFlags(HSD_DObj* dobj, u32 flags);
void HSD_DObjAddAnim(HSD_DObj* dobj, HSD_MatAnim* mat_anim,
HSD_ShapeAnimDObj* sh_anim);
void HSD_DObjAddAnimAll(HSD_DObj* dobj, HSD_MatAnim* matanim,
HSD_ShapeAnimDObj* shapeanimdobj);
void HSD_DObjReqAnimByFlags(HSD_DObj* dobj, f32 startframe, u32 flags);
void HSD_DObjReqAnimAllByFlags(HSD_DObj* dobj, f32 startframe, u32 flags);
void HSD_DObjReqAnimAll(HSD_DObj* dobj, f32 startframe);
void HSD_DObjAnim(HSD_DObj* dobj);
void HSD_DObjAnimAll(HSD_DObj* dobj);
HSD_DObj* HSD_DObjLoadDesc(HSD_DObjDesc* desc);
void HSD_DObjRemoveAll(HSD_DObj* dobj);
HSD_DObj* HSD_DObjAlloc(void);
void HSD_DObjResolveRefs(HSD_DObj* dobj, HSD_DObjDesc* desc);
void HSD_DObjResolveRefsAll(HSD_DObj* dobj, HSD_DObjDesc* desc);
void HSD_DObjDisp(HSD_DObj* dobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
void HSD_DObjRemove(HSD_DObj* dobj);
void HSD_DObjSetDefaultClass(HSD_ClassInfo* info);
void forceStringAllocation(HSD_DObj* dobj, HSD_MObj* mobj);
#define _gobjgxlink_h_
void GObj_GXReorder(HSD_GObj* gobj, HSD_GObj* hiprio_gobj);
void GObj_SetupGXLink(HSD_GObj* gobj, GObj_RenderFunc render_cb, u8 gx_link,
u32 priority);
void GObj_SetupGXLinkMax(HSD_GObj* gobj, GObj_RenderFunc render_cb,
u32 priority);
void GObj_SetupGXLinkMaxSorted(HSD_GObj* gobj, GObj_RenderFunc render_cb,
u32 priority);
void HSD_GObjGXLink_8039084C(HSD_GObj*);
void HSD_GObjGXLink_80390908(HSD_GObj*, u8 gx_link, u8 priority);
void HSD_GObjGXLink_803909D8(HSD_GObj*, HSD_GObj*);
#define _gobjuserdata_h_
#define HSD_GOBJ_USER_DATA_NONE (u8) - 1
void GObj_InitUserData(HSD_GObj* gobj, u8 kind, void (*remove_func)(void*),
void* data);
void GObj_RemoveUserData(HSD_GObj* gobj);
#define _jobj_h_
#define _aobj_h_
#define AOBJ_REWINDED (1 << 26)
#define AOBJ_FIRST_PLAY (1 << 27)
#define AOBJ_NO_UPDATE (1 << 28)
#define AOBJ_LOOP (1 << 29)
#define AOBJ_NO_ANIM (1 << 30)
typedef enum _AObj_Arg_Type {
AOBJ_ARG_A,
AOBJ_ARG_AF,
AOBJ_ARG_AV,
AOBJ_ARG_AU,
AOBJ_ARG_AO,
AOBJ_ARG_AOF,
AOBJ_ARG_AOV,
AOBJ_ARG_AOU,
AOBJ_ARG_AOT,
AOBJ_ARG_AOTF,
AOBJ_ARG_AOTV,
AOBJ_ARG_AOTU,
} AObj_Arg_Type;
typedef union _callbackArg {
f32 f;
u32 d;
void* v;
} callbackArg;
struct HSD_AObj {
u32 flags;
f32 curr_frame;
f32 rewind_frame;
f32 end_frame;
f32 framerate;
HSD_FObj* fobj;
struct HSD_Obj* hsd_obj;
};
struct HSD_AObjDesc {
u32 flags;
f32 end_frame;
HSD_FObjDesc* fobjdesc;
u32 obj_id;
};
struct HSD_AnimJoint {
HSD_AnimJoint* child;
HSD_AnimJoint* next;
HSD_AObjDesc* aobjdesc;
HSD_RObjAnimJoint* robj_anim;
u32 flags;
};
void HSD_AObjInitAllocData(void);
HSD_ObjAllocData* HSD_AObjGetAllocData(void);
u32 HSD_AObjGetFlags(HSD_AObj* aobj);
void HSD_AObjSetFlags(HSD_AObj* aobj, u32 flags);
void HSD_AObjClearFlags(HSD_AObj* aobj, u32 flags);
void HSD_AObjSetFObj(HSD_AObj* aobj, HSD_FObj* fobj);
void HSD_AObjInitEndCallBack(void);
void HSD_AObjInvokeCallBacks(void);
void HSD_AObjReqAnim(HSD_AObj* aobj, f32 frame);
void HSD_AObjStopAnim(HSD_AObj* aobj, void* obj, HSD_ObjUpdateFunc func);
void HSD_AObjInterpretAnim(HSD_AObj* aobj, void* obj,
HSD_ObjUpdateFunc update_func);
float fmod(float x, float y);
HSD_AObj* HSD_AObjLoadDesc(HSD_AObjDesc* aobjdesc);
void HSD_AObjRemove(HSD_AObj* aobj);
HSD_AObj* HSD_AObjAlloc(void);
void HSD_AObjFree(HSD_AObj* aobj);
void HSD_ForeachAnim(void* obj, HSD_Type type, HSD_TypeMask mask, void* func,
AObj_Arg_Type arg_type, ...);
void HSD_AObjSetRate(HSD_AObj* aobj, f32 rate);
void HSD_AObjSetRewindFrame(HSD_AObj* aobj, f32 frame);
void HSD_AObjSetEndFrame(HSD_AObj* aobj, f32 frame);
void HSD_AObjSetCurrentFrame(HSD_AObj* aobj, f32 frame);
void _HSD_AObjForgetMemory(void* low, void* high);
static inline f32 HSD_AObjGetEndFrame(HSD_AObj* aobj)
{
if (!aobj) {
__assert("aobj.h", 0xAAU, "aobj");
}
return aobj->end_frame;
}
#define _list_h_
typedef struct _HSD_SList {
struct _HSD_SList* next;
void* data;
} HSD_SList;
typedef struct _HSD_DList {
struct _HSD_DList* next;
struct _HSD_DList* prev;
void* data;
} HSD_DList;
void HSD_ListInitAllocData(void);
HSD_ObjAllocData* HSD_SListGetAllocData(void);
HSD_ObjAllocData* HSD_DListGetAllocData(void);
HSD_SList* HSD_SListAlloc(void);
HSD_SList* HSD_SListAllocAndAppend(HSD_SList* next, void* data);
HSD_SList* HSD_SListAllocAndPrepend(HSD_SList* prev, void* data);
HSD_SList* HSD_SListAppendList(HSD_SList* list, HSD_SList* next);
HSD_SList* HSD_SListPrependList(HSD_SList* list, HSD_SList* prev);
HSD_SList* HSD_SListRemove(HSD_SList* list);
#define _pobj_h_
#define HSD_MTX_RIGID 1
#define HSD_MTX_ENVELOPE 2
struct _unk_struct_pobj {
u32 data[8];
HSD_AObj* aobj;
};
struct HSD_PObj {
HSD_Class parent;
HSD_PObj* next;
HSD_VtxDescList* verts;
u16 flags;
u16 n_display;
/// #u8 primitive, #u16 vtxcnt, #u16* indices
u8* display;
union HSD_PObjUnion {
HSD_JObj* jobj;
HSD_ShapeSet* shape_set;
HSD_SList* envelope_list;
struct _unk_struct_pobj* unk;
} u;
};
struct HSD_PObjDesc {
char* class_name;
HSD_PObjDesc* next;
HSD_VtxDescList* verts;
u16 flags;
u16 n_display;
u8* display;
union {
HSD_Joint* joint;
HSD_ShapeSetDesc* shape_set;
HSD_EnvelopeDesc** envelope_p;
} u;
};
struct HSD_VtxDescList {
GXAttr attr;
GXAttrType attr_type;
GXCompCnt comp_cnt;
GXCompType comp_type;
u8 frac;
u16 stride;
void* vertex;
};
struct HSD_Envelope {
HSD_Envelope* next;
HSD_JObj* jobj;
f32 weight;
};
struct HSD_EnvelopeDesc {
HSD_Joint* joint;
f32 weight;
};
struct HSD_ShapeSet {
u16 flags;
u16 nb_shape;
int nb_vertex_index;
HSD_VtxDescList* vertex_desc;
u8** vertex_idx_list;
s32 nb_normal_index;
HSD_VtxDescList* normal_desc;
u8** normal_idx_list;
union {
f32* bp;
f32 bl;
} blend;
HSD_AObj* aobj;
};
struct HSD_ShapeSetDesc {
u16 flags;
u16 nb_shape;
s32 nb_vertex_index;
HSD_VtxDescList* vertex_desc;
u8** vertex_idx_list;
s32 nb_normal_index;
HSD_VtxDescList* normal_desc;
u8** normal_idx_list;
};
struct HSD_ShapeAnim {
HSD_ShapeAnim* next;
HSD_AObjDesc* aobjdesc;
};
struct HSD_ShapeAnimJoint {
HSD_ShapeAnimJoint* child;
HSD_ShapeAnimJoint* next;
HSD_ShapeAnimDObj* shapeanimdobj;
};
struct HSD_PObjInfo {
HSD_ClassInfo parent;
void (*disp)(HSD_PObj* pobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
void (*setup_mtx)(HSD_PObj* pobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
s32 (*load)(HSD_PObj* pobj, HSD_PObjDesc* desc);
};
extern HSD_PObjInfo hsdPObj;
#define HSD_POBJ(o) ((HSD_PObj*) (o))
#define HSD_POBJ_INFO(i) ((HSD_PObjInfo*) (i))
#define HSD_POBJ_METHOD(o) HSD_POBJ_INFO(HSD_CLASS_METHOD(o))
HSD_PObjInfo* HSD_PObjGetDefaultClass(void);
void HSD_PObjSetDefaultClass(HSD_PObjInfo* info);
HSD_PObj* HSD_PObjAlloc(void);
void HSD_PObjFree(HSD_PObj*);
u32 HSD_PObjGetFlags(HSD_PObj* pobj);
void HSD_PObjRemoveAnimAllByFlags(HSD_PObj* pobj, u32 flags);
void HSD_PObjReqAnimByFlags(HSD_PObj* pobj, f32 startframe, u32 flags);
void HSD_PObjReqAnimAllByFlags(HSD_PObj* pobj, f32 startframe, u32 flags);
void HSD_ClearVtxDesc(void);
HSD_PObj* HSD_PObjLoadDesc(HSD_PObjDesc*);
void HSD_PObjClearMtxMark(void* obj, u32 mark);
void HSD_PObjSetMtxMark(int idx, void* obj, u32 mark);
void HSD_PObjGetMtxMark(int idx, void** obj, u32* mark);
void HSD_PObjAddAnim(HSD_PObj*, HSD_ShapeAnim*);
void HSD_PObjAddAnimAll(HSD_PObj*, HSD_ShapeAnim*);
void HSD_PObjAnim(HSD_PObj* pobj);
void HSD_PObjAnimAll(HSD_PObj*);
void HSD_PObjResolveRefs(HSD_PObj*, HSD_PObjDesc*);
void HSD_PObjResolveRefsAll(HSD_PObj*, HSD_PObjDesc*);
void HSD_PObjRemove(HSD_PObj*);
void HSD_PObjRemoveAll(HSD_PObj*);
void HSD_PObjRemoveAnimByFlags(HSD_PObj* pobj, u32 flags);
void HSD_PObjDisp(HSD_PObj* pobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
struct HSD_JObj;
#define JOBJ_PTCL_ACTIVE 0x7FFFFFFF
#define JOBJ_PTCL_OFFSET_MASK 0xFFFFFF
#define JOBJ_PTCL_OFFSET_SHIFT 6
#define JOBJ_PTCL_BANK_MASK 0x3F
#define HSD_A_J_ROTX 1
#define HSD_A_J_ROTY 2
#define HSD_A_J_ROTZ 3
#define HSD_A_J_PATH 4
#define HSD_A_J_TRAX 5
#define HSD_A_J_TRAY 6
#define HSD_A_J_TRAZ 7
#define HSD_A_J_SCAX 8
#define HSD_A_J_SCAY 9
#define HSD_A_J_SCAZ 10
#define HSD_A_J_NODE 11
#define HSD_A_J_BRANCH 12
#define HSD_A_J_SETBYTE0 20
#define HSD_A_J_SETBYTE1 21
#define HSD_A_J_SETBYTE2 22
#define HSD_A_J_SETBYTE3 23
#define HSD_A_J_SETBYTE4 24
#define HSD_A_J_SETBYTE5 25
#define HSD_A_J_SETBYTE6 26
#define HSD_A_J_SETBYTE7 27
#define HSD_A_J_SETBYTE8 28
#define HSD_A_J_SETBYTE9 29
#define HSD_A_J_SETFLOAT0 30
#define HSD_A_J_SETFLOAT1 31
#define HSD_A_J_SETFLOAT2 32
#define HSD_A_J_SETFLOAT3 33
#define HSD_A_J_SETFLOAT4 34
#define HSD_A_J_SETFLOAT5 35
#define HSD_A_J_SETFLOAT6 36
#define HSD_A_J_SETFLOAT7 37
#define HSD_A_J_SETFLOAT8 38
#define HSD_A_J_SETFLOAT9 39
#define JOBJ_BILLBOARD_FIELD 0xE00
#define JOBJ_BILLBOARD 0x200
#define JOBJ_VBILLBOARD 0x400
#define JOBJ_HBILLBOARD 0x600
#define JOBJ_RBILLBOARD 0x800
#define JOBJ_PBILLBOARD 0x2000
#define JOBJ_SKELETON (1 << 0)
#define JOBJ_SKELETON_ROOT (1 << 1)
#define JOBJ_ENVELOPE_MODEL (1 << 2)
#define JOBJ_CLASSICAL_SCALE (1 << 3)
#define JOBJ_HIDDEN (1 << 4)
#define JOBJ_PTCL (1 << 5)
#define JOBJ_MTX_DIRTY (1 << 6)
#define JOBJ_LIGHTING (1 << 7)
#define JOBJ_TEXGEN (1 << 8)
#define JOBJ_INSTANCE (1 << 12)
#define JOBJ_SPLINE (1 << 14)
#define JOBJ_FLIP_IK (1 << 15)
#define JOBJ_SPECULAR (1 << 16)
#define JOBJ_USE_QUATERNION (1 << 17)
#define JOBJ_UNK_B18 (1 << 18)
#define JOBJ_UNK_B19 (1 << 19)
#define JOBJ_UNK_B20 (1 << 20)
#define JOBJ_NULL_OBJ (0 << 21)
#define JOBJ_JOINT1 (1 << 21)
#define JOBJ_JOINT2 (2 << 21)
#define JOBJ_JOINT (3 << 21)
#define JOBJ_EFFECTOR (3 << 21)
#define JOBJ_USER_DEF_MTX (1 << 23)
#define JOBJ_MTX_INDEP_PARENT (1 << 24)
#define JOBJ_MTX_INDEP_SRT (1 << 25)
#define JOBJ_UNK_B26 (1 << 26)
#define JOBJ_UNK_B27 (1 << 27)
#define JOBJ_ROOT_OPA (1 << 28)
#define JOBJ_ROOT_XLU (1 << 29)
#define JOBJ_ROOT_TEXEDGE (1 << 30)
#define JOBJ_ROOT_MASK (JOBJ_ROOT_OPA | JOBJ_ROOT_TEXEDGE | JOBJ_ROOT_XLU)
#define union_type_ptcl(o) ((o)->flags & JOBJ_PTCL ? true : false)
#define union_type_spline(o) ((o)->flags & JOBJ_SPLINE ? true : false)
#define union_type_dobj(o) ((o)->flags & (JOBJ_PTCL | JOBJ_SPLINE) ? false : true)
#define HSD_JOBJ_INFO(i) ((HSD_JObjInfo*) (i))
#define HSD_JOBJ_METHOD(o) HSD_JOBJ_INFO((o)->object.parent.class_info)
struct HSD_JObj {
/* +0 */ HSD_Obj object;
/* +8 */ HSD_JObj* next;
/* +C */ HSD_JObj* parent;
/* +10 */ HSD_JObj* child;
/* +14 */ u32 flags;
/* +18 */ union {
HSD_SList* ptcl;
struct HSD_DObj* dobj;
HSD_Spline* spline;
} u;
/* +1C */ Quaternion rotate;
/* +2C */ Vec3 scale;
/* +38 */ Vec3 translate;
/* +44 */ Mtx mtx;
/* +74 */ Vec3* scl;
/* +78 */ MtxPtr envelopemtx;
/* +7C */ HSD_AObj* aobj;
/* +80 */ HSD_RObj* robj;
/* +84 */ u32 id;
};
struct HSD_Joint {
char* class_name;
u32 flags;
HSD_Joint* child;
HSD_Joint* next;
union {
HSD_DObjDesc* dobjdesc;
HSD_Spline* spline;
HSD_SList* ptcl;
} u;
Vec3 rotation;
Vec3 scale;
Vec3 position;
MtxPtr mtx;
HSD_RObjDesc* robjdesc;
};
typedef struct _HSD_JObjInfo {
HSD_ObjInfo parent;
s32 (*load)(HSD_JObj* jobj, HSD_Joint* joint, HSD_JObj* jobj_2);
void (*make_mtx)(HSD_JObj* jobj);
void (*make_pmtx)(HSD_JObj* jobj, Mtx mtx, Mtx rmtx);
void (*disp)(HSD_JObj* jobj, Mtx vmtx, Mtx pmtx, HSD_TrspMask trsp_mask,
u32 rendermode);
void (*release_child)(HSD_JObj* jobj);
} HSD_JObjInfo;
extern HSD_JObjInfo hsdJObj;
typedef void (*HSD_JObjWalkTreeCallback)(HSD_JObj*, f32**, s32);
typedef void (*DPCtlCallback)(int, int lo, int hi, HSD_JObj* jobj);
void HSD_JObjSetDefaultClass(HSD_ClassInfo* info);
void HSD_JObjCheckDepend(HSD_JObj* jobj);
u32 HSD_JObjGetFlags(HSD_JObj* jobj);
void HSD_JObjReqAnimAll(HSD_JObj*, f32);
void HSD_JObjResetRST(HSD_JObj* jobj, HSD_Joint* joint);
void HSD_JObjSetupMatrixSub(HSD_JObj*);
void HSD_JObjSetMtxDirtySub(HSD_JObj*);
void HSD_JObjUnref(HSD_JObj* jobj);
HSD_JObj* HSD_JObjRemove(HSD_JObj* jobj);
void HSD_JObjRemoveAll(HSD_JObj*);
struct HSD_DObj* HSD_JObjGetDObj(HSD_JObj* jobj);
HSD_JObj* HSD_JObjLoadJoint(HSD_Joint*);
void HSD_JObjAddAnimAll(HSD_JObj*, HSD_AnimJoint*, HSD_MatAnimJoint*,
HSD_ShapeAnimJoint*);
void HSD_JObjAnimAll(HSD_JObj*);
void HSD_JObjSetFlags(HSD_JObj*, u32 flags);
void HSD_JObjSetFlagsAll(HSD_JObj*, u32 flags);
void HSD_JObjClearFlags(HSD_JObj*, u32 flags);
void HSD_JObjClearFlagsAll(HSD_JObj*, u32 flags);
HSD_JObj* HSD_JObjAlloc(void);
void HSD_JObjSetCurrent(HSD_JObj* jobj);
HSD_JObj* HSD_JObjGetCurrent(void);
void HSD_JObjResolveRefsAll(HSD_JObj*, HSD_Joint*);
void HSD_JObjDispAll(HSD_JObj* jobj, Mtx vmtx, u32 flags, u32 rendermode);
void HSD_JObjRemoveAnim(HSD_JObj* jobj);
void HSD_JObjAddNext(HSD_JObj* jobj, HSD_JObj* next);
void HSD_JObjRemoveAnimAll(HSD_JObj* jobj);
void HSD_JObjWalkTree(HSD_JObj* jobj, HSD_JObjWalkTreeCallback cb,
f32** cb_args);
void HSD_JObjPrependRObj(HSD_JObj* jobj, HSD_RObj* robj);
void HSD_JObjDeleteRObj(HSD_JObj* jobj, HSD_RObj* robj);
static inline HSD_JObj* HSD_JObjGetChild(HSD_JObj* jobj)
{
if (jobj == ((void*) 0)) {
return ((void*) 0);
} else {
return jobj->child;
}
}
static inline HSD_JObj* HSD_JObjGetNext(HSD_JObj* jobj)
{
if (jobj == ((void*) 0)) {
return ((void*) 0);
} else {
return jobj->next;
}
}
static inline HSD_JObj* HSD_JObjGetParent(HSD_JObj* jobj)
{
if (jobj == ((void*) 0)) {
return ((void*) 0);
} else {
return jobj->parent;
}
}
static inline HSD_RObj* HSD_JObjGetRObj(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 405, "jobj"));
return jobj->robj;
}
static inline bool HSD_JObjMtxIsDirty(HSD_JObj* jobj)
{
bool result;
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 564, "jobj"));
result = 0;
if (!(jobj->flags & (1 << 23)) && (jobj->flags & (1 << 6))) {
result = 1;
}
return result;
}
inline void HSD_JObjSetupMatrix(HSD_JObj* jobj)
{
if (!jobj || !HSD_JObjMtxIsDirty(jobj)) {
return;
}
HSD_JObjSetupMatrixSub(jobj);
}
// Why does this seem to be a define while the others are inline functions?
#define HSD_JObjSetMtxDirty(jobj) { if (jobj != NULL && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } }
static inline void HSD_JObjSetRotation(HSD_JObj* jobj, Quaternion* rotate)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 618, "jobj"));
((rotate) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 619, "rotate"));
jobj->rotate = *rotate;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetRotationX(HSD_JObj* jobj, f32 x)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 639, "jobj"));
((!(jobj->flags & (1 << 17))) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 640, "!(jobj->flags & JOBJ_USE_QUATERNION)"));
jobj->rotate.x = x;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetRotationY(HSD_JObj* jobj, f32 y)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 660, "jobj"));
((!(jobj->flags & (1 << 17))) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 661, "!(jobj->flags & JOBJ_USE_QUATERNION)"));
jobj->rotate.y = y;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetRotationZ(HSD_JObj* jobj, f32 z)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 681, "jobj"));
((!(jobj->flags & (1 << 17))) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 682, "!(jobj->flags & JOBJ_USE_QUATERNION)"));
jobj->rotate.z = z;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjGetRotation(HSD_JObj* jobj, Quaternion* quat)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 699, "jobj"));
*quat = jobj->rotate;
}
static inline f32 HSD_JObjGetRotationX(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 715, "jobj"));
return jobj->rotate.x;
}
static inline f32 HSD_JObjGetRotationY(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 730, "jobj"));
return jobj->rotate.y;
}
static inline f32 HSD_JObjGetRotationZ(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 745, "jobj"));
return jobj->rotate.z;
}
static inline void HSD_JObjSetScale(HSD_JObj* jobj, Vec3* scale)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 760, "jobj"));
((scale) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 761, "scale"));
jobj->scale = *scale;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetScaleX(HSD_JObj* jobj, f32 x)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 776, "jobj"));
jobj->scale.x = x;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetScaleY(HSD_JObj* jobj, f32 y)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 791, "jobj"));
jobj->scale.y = y;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetScaleZ(HSD_JObj* jobj, f32 z)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 806, "jobj"));
jobj->scale.z = z;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjGetScale(HSD_JObj* jobj, Vec3* scale)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 823, "jobj"));
((scale) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 824, "scale"));
*scale = jobj->scale;
}
static inline f32 HSD_JObjGetScaleX(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 875, "jobj"));
return jobj->scale.x;
}
static inline f32 HSD_JObjGetScaleY(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 888, "jobj"));
return jobj->scale.y;
}
static inline f32 HSD_JObjGetScaleZ(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 901, "jobj"));
return jobj->scale.z;
}
static inline void HSD_JObjSetTranslate(HSD_JObj* jobj, Vec3* translate)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 916, "jobj"));
((translate) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 917, "translate"));
jobj->translate = *translate;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetTranslateX(HSD_JObj* jobj, f32 x)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 932, "jobj"));
jobj->translate.x = x;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetTranslateY(HSD_JObj* jobj, f32 y)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 947, "jobj"));
jobj->translate.y = y;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjSetTranslateZ(HSD_JObj* jobj, f32 z)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 962, "jobj"));
jobj->translate.z = z;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjGetTranslation(HSD_JObj* jobj, Vec3* translate)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 979, "jobj"));
((translate) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 980, "translate"));
*translate = jobj->translate;
}
static inline f32 HSD_JObjGetTranslationX(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 993, "jobj"));
return jobj->translate.x;
}
static inline f32 HSD_JObjGetTranslationY(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1006, "jobj"));
return jobj->translate.y;
}
static inline float HSD_JObjGetTranslationZ(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1019, "jobj"));
return jobj->translate.z;
}
static inline void HSD_JObjAddRotationX(HSD_JObj* jobj, float x)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1029, "jobj"));
jobj->rotate.x += x;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjAddRotationY(HSD_JObj* jobj, float y)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1041, "jobj"));
jobj->rotate.y += y;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjAddRotationZ(HSD_JObj* jobj, float z)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1053, "jobj"));
jobj->rotate.z += z;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjAddScaleX(HSD_JObj* jobj, float x)
{
// ((jobj) ? ((void) 0) : __assert("jobj.h", 1065, "jobj"));
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1065, "jobj"));
jobj->scale.x += x;
// if (!(jobj->flags & (1 << 25))) {
if (!(jobj->flags & (1 << 25))) {
// { if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) {
// HSD_JObjSetMtxDirtySub(jobj); } };
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjAddScaleY(HSD_JObj* jobj, float y)
{
// ((jobj) ? ((void) 0) : __assert("jobj.h", 1077, "jobj"));
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1077, "jobj"));
jobj->scale.y += y;
// if (!(jobj->flags & (1 << 25))) {
if (!(jobj->flags & (1 << 25))) {
// { if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) {
// HSD_JObjSetMtxDirtySub(jobj); } };
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjAddScaleZ(HSD_JObj* jobj, float z)
{
// ((jobj) ? ((void) 0) : __assert("jobj.h", 1089, "jobj"));
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1089, "jobj"));
jobj->scale.z += z;
// if (!(jobj->flags & (1 << 25))) {
if (!(jobj->flags & (1 << 25))) {
// { if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) {
// HSD_JObjSetMtxDirtySub(jobj); } };
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjAddTranslationY(HSD_JObj* jobj, float y)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1114, "jobj"));
jobj->translate.y += y;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
static inline void HSD_JObjAddTranslationZ(HSD_JObj* jobj, float z)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1126, "jobj"));
jobj->translate.z += z;
if (!(jobj->flags & (1 << 25))) {
{ if (jobj != ((void*) 0) && !HSD_JObjMtxIsDirty(jobj)) { HSD_JObjSetMtxDirtySub(jobj); } };
}
}
/// @todo This is inlined into lbcoll, and linker deduplication
/// only kept that definition.
/// Rename it back to HSD_JObjSetupMatrix once lbcoll is matched.
void lbColl_JObjSetupMatrix(HSD_JObj*);
static inline MtxPtr HSD_JObjGetMtxPtr(HSD_JObj* jobj)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1144, "jobj"));
lbColl_JObjSetupMatrix(jobj);
return jobj->mtx;
}
static inline void HSD_JObjCopyMtx(HSD_JObj* jobj, Mtx mtx)
{
((jobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1170, "jobj"));
((mtx) ? ((void) 0) : __assert("src/sysdolphin/baselib/jobj.h", 1171, "mtx"));
PSMTXCopy(mtx, jobj->mtx);
}
static inline void HSD_JObjRef(HSD_JObj* jobj)
{
ref_INC(jobj);
}
static inline void HSD_JObjRefThis(HSD_JObj* jobj)
{
if (jobj != ((void*) 0)) {
iref_INC(jobj);
}
}
void HSD_JObjResolveRefs(HSD_JObj* jobj, HSD_Joint* joint);
void HSD_JObjUnrefThis(HSD_JObj* jobj);
void HSD_JObjRefThis(HSD_JObj* jobj);
void HSD_JObjMakeMatrix(HSD_JObj* jobj);
void RecalcParentTrspBits(HSD_JObj* jobj);
void HSD_JObjAddChild(HSD_JObj* jobj, HSD_JObj* child);
HSD_JObj* HSD_JObjReparent(HSD_JObj* jobj, HSD_JObj* parent);
void HSD_JObjAddDObj(HSD_JObj* jobj, HSD_DObj* dobj);
HSD_JObj* jobj_get_effector_checked(HSD_JObj* eff);
void resolveIKJoint1(HSD_JObj* jobj);
void resolveIKJoint2(HSD_JObj* jobj);
void HSD_JObjRemoveAnimByFlags(HSD_JObj* jobj, u32 flags);
void HSD_JObjSetDPtclCallback(DPCtlCallback cb);
int JObjInit(HSD_Class* o);
void JObjReleaseChild(HSD_JObj* jobj);
void JObjRelease(HSD_Class* o);
void HSD_JObjRemoveAnimAllByFlags(HSD_JObj* jobj, u32 flags);
void JObjAmnesia(HSD_ClassInfo* info);
void HSD_JObjReqAnimByFlags(HSD_JObj* jobj, u32 flags, f32 frame);
void HSD_JObjReqAnimAllByFlags(HSD_JObj* jobj, u32 flags, f32 frame);
void HSD_JObjReqAnim(HSD_JObj* jobj, f32 frame);
void JObjSortAnim(HSD_AObj* aobj);
void JObjResetRST(HSD_JObj* jobj, HSD_Joint* joint);
void JObjUpdateFunc(void* obj, enum_t type, HSD_ObjData* val);
void HSD_JObjAnim(HSD_JObj* jobj);
void JObjAnimAll(HSD_JObj* jobj);
s32 JObjLoad(HSD_JObj* jobj, HSD_Joint* joint, HSD_JObj* parent);
void HSD_JObjAddAnim(HSD_JObj*, HSD_AnimJoint* an_joint,
HSD_MatAnimJoint* mat_joint,
HSD_ShapeAnimJoint* sh_joint);
void HSD_JObjWalkTree0(HSD_JObj* jobj, HSD_JObjWalkTreeCallback cb,
f32** cb_args);
#define SYSDOLPHIN_BASELIB_LOBJ_H
struct HSD_LightPoint {
f32 cutoff;
u32 point_func;
f32 ref_br;
f32 ref_dist;
u32 dist_func;
};
struct HSD_LightPointDesc {
f32 ref_br;
f32 ref_dist;
u32 dist_func;
};
struct HSD_LightSpot {
f32 cutoff;
u32 spot_func;
f32 ref_br;
f32 ref_dist;
u32 dist_func;
};
struct HSD_LightSpotDesc {
f32 cutoff;
u32 spot_func;
f32 ref_br;
f32 ref_dist;
u32 dist_func;
};
struct HSD_LightAttn {
f32 a0;
f32 a1;
f32 a2;
f32 k0;
f32 k1;
f32 k2;
};
struct HSD_LObj {
/* 0x00 - 0x04 */ HSD_Obj parent;
/* 0x08 */ u16 flags;
/* 0x0A */ u16 priority;
/* 0x0C */ HSD_LObj* next;
/* 0x10 */ GXColor color;
/* 0x14 */ GXColor hw_color;
/* 0x18 */ HSD_WObj* position;
/* 0x1C */ HSD_WObj* interest;
/* 0x20 - 0x34 */ union {
HSD_LightPoint point;
HSD_LightSpot spot;
HSD_LightAttn attn;
} u;
/* 0x38 */ f32 shininess;
/* 0x3C - 0x44 */ Vec3 lvec;
/* 0x48 */ HSD_AObj* aobj;
/* 0x4C */ GXLightID id;
/* 0x50 */ GXLightObj lightobj;
/* 0x90 */ GXLightID spec_id;
/* 0x94 */ GXLightObj spec_lightobj;
};
struct HSD_LightDesc {
/* 0x00 */ char* class_name;
/* 0x04 */ HSD_LightDesc* next;
/* 0x08 */ u16 flags;
/* 0x0A */ u16 attnflags;
/* 0x0C */ GXColor color;
/* 0x10 */ HSD_WObjDesc* position;
/* 0x14 */ HSD_WObjDesc* interest;
union {
void* p;
f32* shininess;
HSD_LightPointDesc* point;
HSD_LightSpotDesc* spot;
HSD_LightAttn* attn;
} u;
};
struct HSD_LightAnim {
HSD_LightAnim* next;
HSD_AObjDesc* aobjdesc;
HSD_WObjAnim* position_anim;
HSD_WObjAnim* interest_anim;
};
struct HSD_LObjInfo {
HSD_ObjInfo parent;
int (*load)(HSD_LObj* lobj, HSD_LightDesc* ldesc);
};
#define HSD_LOBJ(o) ((HSD_LObj*) (o))
#define HSD_LOBJ_INFO(i) ((HSD_LObjInfo*) (i))
#define HSD_LOBJ_METHOD(o) HSD_LOBJ_INFO(HSD_OBJECT_METHOD((o)))
inline u8 HSD_LObjGetPriority(HSD_LObj* lobj)
{
((lobj) ? ((void) 0) : __assert("src/sysdolphin/baselib/lobj.h", 367, "lobj"));
return lobj->priority;
}
extern HSD_LObjInfo hsdLobj;
u32 HSD_LObjGetFlags(HSD_LObj* lobj);
void HSD_LObjSetFlags(HSD_LObj* lobj, u32 flags);
void HSD_LObjClearFlags(HSD_LObj* lobj, u32 flags);
GXLightID HSD_LObjGetLightMaskDiffuse(void);
s32 HSD_LObjGetLightMaskAttnFunc(void);
s32 HSD_LObjGetLightMaskAlpha(void);
s32 HSD_LObjGetLightMaskSpecular(void);
void HSD_LObjSetActive(HSD_LObj* lobj);
s32 HSD_LObjGetNbActive(void);
HSD_LObj* HSD_LObjGetActiveByID(GXLightID id);
HSD_LObj* HSD_LObjGetActiveByIndex(s32 idx);
void HSD_LObjClearActive(void);
void LObjUpdateFunc(void* obj, enum_t type, HSD_ObjData* val);
void HSD_LObjAddAnim(HSD_LObj* lobj, HSD_LightAnim* lanim);
void HSD_LObjAddAnimAll(HSD_LObj* lobj, HSD_LightAnim* lanim);
void HSD_LObjAnim(HSD_LObj* lobj);
void HSD_LObjAnimAll(HSD_LObj* lobj);
void HSD_LObjReqAnim(HSD_LObj* lobj, f32 startframe);
void HSD_LObjReqAnimAll(HSD_LObj* lobj, f32 startframe);
void HSD_LObjGetLightVector(HSD_LObj* lobj, Vec3* dir);
void HSD_LObjSetup(HSD_LObj* lobj, GXColor color, f32 shininess);
bool HSD_LObjGetPosition(HSD_LObj*, Vec3*);
bool HSD_LObjGetInterest(HSD_LObj*, Vec3*);
HSD_WObj* HSD_LObjGetPositionWObj(HSD_LObj* lobj);
HSD_WObj* HSD_LObjGetInterestWObj(HSD_LObj* lobj);
void HSD_LObjSetPositionWObj(HSD_LObj* lobj, HSD_WObj* wobj);
void HSD_LObjSetInterestWObj(HSD_LObj* lobj, HSD_WObj* wobj);
u32 HSD_LightID2Index(GXLightID);
void HSD_LObjDeleteCurrent(HSD_LObj* lobj);
s32 HSD_Index2LightID(u32);
void HSD_LObjRemoveAll(HSD_LObj* lobj);
void HSD_LObjSetPosition(HSD_LObj* lobj, Vec3* position);
void HSD_LObjSetInterest(HSD_LObj* lobj, Vec3* interest);
void HSD_LObj_803668EC(HSD_LObj* lobj);
void HSD_LObjSetupInit(HSD_CObj* arg0);
void HSD_LObjSetColor(HSD_LObj* lobj, GXColor color);
void HSD_LObjGetColor(HSD_LObj* lobj, GXColor* color);
void HSD_LObjSetSpot(HSD_LObj* lobj, f32 cutoff, s32 point_func);
void HSD_LObjSetDistAttn(HSD_LObj* lobj, f32 ref_dist, f32 ref_br,
s32 dist_func);
void HSD_LObjSetAttnA(HSD_LObj* lobj, f32 a0, f32 a1, f32 a2);
void HSD_LObjSetAttnK(HSD_LObj* lobj, f32 k0, f32 k1, f32 k2);
void HSD_LObjSetAttn(HSD_LObj* lobj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1,
f32 k2);
void HSD_LObjSetupSpecularInit(Mtx pmtx);
u32 HSD_LObjGetType(HSD_LObj* lobj);
void HSD_LObjAddCurrent(HSD_LObj* lobj);
void HSD_LObjUnrefThis(HSD_LObj* lobj);
void HSD_LObjDeleteCurrentAll(HSD_LObj* lobj);
void HSD_LObjSetCurrentAll(HSD_LObj* lobj);
HSD_LObj* HSD_LObjGetCurrentByType(u16 type);
void HSD_LObjSetDefaultClass(HSD_LObjInfo* info);
HSD_LObjInfo* HSD_LObjGetDefaultClass(void);
HSD_LObj* HSD_LObjAlloc(void);
HSD_LObj* HSD_LObjLoadDesc(HSD_LightDesc* ldesc);
static inline HSD_LObj* HSD_LObjGetNext(HSD_LObj* lobj)
{
if (lobj == ((void*) 0)) {
return ((void*) 0);
} else {
return lobj->next;
}
}
#define _random_h_
s32 HSD_Rand(void);
f32 HSD_Randf(void);
s32 HSD_Randi(s32 max_val);
void _HSD_RandForgetMemory(void* low, void* high);
#define PUSH_ATTRS(fp, attributeName) do { void* backup = (fp)->x2D8_specialAttributes2; attributeName* src = (attributeName*) (fp)->ft_data->ext_attr; void** da = &(fp)->dat_attrs; *(attributeName*) (fp)->x2D8_specialAttributes2 = *src; *da = backup; } while (0)
/// @todo Remove declarations. Doesn't really need to be a macro.
#define COPY_ATTRS(gobj, attributeName) Fighter* fp = GET_FIGHTER(gobj); attributeName* sA2 = (attributeName*) fp->dat_attrs; attributeName* ext_attr = (attributeName*) fp->ft_data->ext_attr; *sA2 = *ext_attr;
#define GET_FIGHTER(gobj) ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj))
/// @deprecated Use #GET_FIGHTER instead.
static inline Fighter* getFighter(Fighter_GObj* gobj)
{
return gobj->user_data;
}
/// @deprecated use #GET_FIGHTER instead.
static inline Fighter* getFighterPlus(Fighter_GObj* gobj)
{
Fighter* fp = gobj->user_data;
return fp;
}
static inline void* getFtSpecialAttrs(Fighter* fp)
{
void* fighter_attr = fp->dat_attrs;
return fighter_attr;
}
static inline void* getFtSpecialAttrsD(Fighter* fp) // Direct
{
return fp->dat_attrs;
}
static inline s32 ftGetKind(Fighter* fp)
{
return fp->kind;
}
static inline s32 ftGetAction(Fighter* fp)
{
return fp->motion_id;
}
static inline void* getFtSpecialAttrs2CC(Fighter* fp)
{
void* fighter_attr = fp->x2CC;
return fighter_attr;
}
static inline ftCo_DatAttrs* getFtAttrs(Fighter* fp)
{
return &fp->co_attrs;
}
static inline CollData* getFtColl(Fighter* fp)
{
return &fp->coll_data;
}
static inline bool ftGetGroundAir(Fighter* fp)
{
return fp->ground_or_air;
}
static inline float stickGetDir(float x1, float x2)
{
if (x1 < x2) {
return -x1;
} else {
return x1;
}
}
/// used for all fighters except Kirby and Purin
static inline void Fighter_OnItemPickup(Fighter_GObj* gobj, bool catchItemFlag,
bool bool2, bool bool3)
{
Fighter* fp = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj));
if (!it_8026B2B4(fp->item_gobj)) {
switch (it_8026B320(fp->item_gobj)) {
case 1:
ftAnim_80070FB4(gobj, bool2, 1);
break;
case 2:
ftAnim_80070FB4(gobj, bool2, 0);
break;
case 3:
ftAnim_80070FB4(gobj, bool2, 2);
break;
case 4:
ftAnim_80070FB4(gobj, bool2, 3);
break;
}
if (catchItemFlag) {
ftAnim_80070C48(gobj, bool3);
}
}
}
static inline void Fighter_OnItemInvisible(Fighter_GObj* gobj, bool flag)
{
Fighter* fp = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj));
if (!it_8026B2B4(fp->item_gobj)) {
ftAnim_80070CC4(gobj, flag);
}
}
static inline void Fighter_OnItemVisible(Fighter_GObj* gobj, bool flag)
{
Fighter* fp = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj));
if (!it_8026B2B4(fp->item_gobj)) {
ftAnim_80070C48(gobj, flag);
}
}
static inline void Fighter_OnItemDrop(Fighter_GObj* gobj, bool dropItemFlag,
bool bool2, bool bool3)
{
ftAnim_80070FB4(gobj, bool2, -1);
if (dropItemFlag) {
ftAnim_80070CC4(gobj, bool3);
}
}
static inline void Fighter_OnKnockbackEnter(Fighter_GObj* gobj, s32 arg1)
{
ftAnim_800704F0(gobj, arg1, 3.0f);
ftAnim_800704F0(gobj, 0, 3.0f);
}
static inline void Fighter_OnKnockbackExit(Fighter_GObj* gobj, s32 arg1)
{
ftAnim_800704F0(gobj, arg1, 0.0f);
ftAnim_800704F0(gobj, 0, 0.0f);
}
static inline void Fighter_UnsetCmdVar0(Fighter_GObj* gobj)
{
Fighter* fp = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj));
fp->cmd_vars[0] = 0;
}
static inline CollData* Fighter_GetCollData(Fighter* fp)
{
return &fp->coll_data;
}
/// @todo This and #ftCheckThrowB3, etc. are probably one macro or something.
static inline bool ftCheckThrowB0(Fighter* fp)
{
if (fp->throw_flags_b0) {
fp->throw_flags_b0 = 0;
return 1;
} else {
return 0;
}
}
static inline bool ftCheckThrowB3(Fighter* fp)
{
if (fp->throw_flags_b3) {
fp->throw_flags_b3 = 0;
return 1;
} else {
return 0;
}
}
static inline bool ftCheckThrowB4(Fighter* fp)
{
if (fp->throw_flags_b4) {
fp->throw_flags_b4 = 0;
return 1;
} else {
return 0;
}
}
/// Ternary macro for fcmpo-based facing direction check
#define CLIFFCATCH_O(fp) ((fp)->facing_dir < 0.0f) ? CLIFFCATCH_LEFT : CLIFFCATCH_RIGHT
/// Ternary macro for fcmpu-based facing direction check
#define CLIFFCATCH_U(fp) ((fp)->facing_dir != 1.0f) ? CLIFFCATCH_LEFT : CLIFFCATCH_RIGHT
/// @todo Fix naming.
#define gmScriptEventCast(p_event, type) ((type*) p_event)
#define gmScriptEventUpdatePtr(event, type) (event = (void*) ((uintptr_t) event + (sizeof(type))))
inline ftCmdScript* getCmdScript(Fighter* fp)
{
return &fp->x3E4_fighterCmdScript;
}
/* 0679B0 */ void Fighter_800679B0(void);
/* 067A84 */ void Fighter_FirstInitialize_80067A84(void);
/* 067ABC */ void Fighter_LoadCommonData(void);
/* 067BB4 */ void Fighter_UpdateModelScale(Fighter_GObj* gobj);
/* 067C98 */ void Fighter_UnkInitReset_80067C98(Fighter*);
/* 068354 */ void Fighter_UnkProcessDeath_80068354(Fighter_GObj* gobj);
/* 0686E4 */ void Fighter_UnkUpdateCostumeJoint_800686E4(Fighter_GObj* gobj);
/* 06876C */ void Fighter_UnkUpdateVecFromBones_8006876C(Fighter* fp);
/* 068854 */ void Fighter_ResetInputData_80068854(Fighter_GObj* gobj);
/* 068914 */ void Fighter_UnkInitLoad_80068914(Fighter_GObj* gobj,
struct S_TEMP1* argdata);
/* 068E40 */ u32 Fighter_NewSpawn_80068E40(void);
/* 068E64 */ void Fighter_80068E64(Fighter_GObj* gobj);
/* 068E98 */ Fighter_GObj* Fighter_Create(struct S_TEMP1* input);
/* 0693AC */ void Fighter_ChangeMotionState(Fighter_GObj* gobj,
FtMotionId msid, MotionFlags flags,
float anim_start, float anim_speed,
float anim_blend,
Fighter_GObj* arg3);
/* 06A1BC */ void Fighter_8006A1BC(Fighter_GObj* gobj);
/* 06A360 */ void Fighter_8006A360(Fighter_GObj* gobj);
/* 06ABA0 */ void Fighter_8006ABA0(Fighter_GObj* gobj);
/* 06ABEC */ void Fighter_UnkIncrementCounters_8006ABEC(Fighter_GObj* gobj);
/* 06AD10 */ void Fighter_Spaghetti_8006AD10(Fighter_GObj* gobj);
/* 06B82C */ void Fighter_procUpdate(Fighter_GObj* gobj);
/* 06C0F0 */ void Fighter_UnkApplyTransformation_8006C0F0(Fighter_GObj* gobj);
/* 06C27C */ void Fighter_8006C27C(Fighter_GObj* gobj);
/* 06C5F4 */ void Fighter_8006C5F4(Fighter_GObj* gobj);
/* 06C624 */ void Fighter_CallAcessoryCallbacks_8006C624(Fighter_GObj* gobj);
/* 06C80C */ void Fighter_8006C80C(Fighter_GObj* gobj);
/* 06CA5C */ void Fighter_UnkProcessGrab_8006CA5C(Fighter_GObj* gobj);
/* 06CB94 */ void Fighter_8006CB94(Fighter_GObj* gobj);
/* 06CC30 */ void Fighter_UnkTakeDamage_8006CC30(Fighter* fp,
float damage_amount);
/* 06CC7C */ void Fighter_TakeDamage_8006CC7C(Fighter*, float);
/* 06CDA4 */ void Fighter_8006CDA4(Fighter* fp, s32 arg1, s32 arg2);
/* 06CF5C */ void Fighter_8006CF5C(Fighter* fp, s32 arg1);
/* 06CFBC */ void Fighter_UnkSetFlag_8006CFBC(Fighter_GObj* gobj);
/* 06CFE0 */ void Fighter_8006CFE0(Fighter_GObj* gobj);
/* 06D044 */ void Fighter_UnkRecursiveFunc_8006D044(Fighter_GObj* gobj);
/* 06D10C */ void Fighter_8006D10C(Fighter_GObj* gobj);
/* 06D1EC */ void Fighter_UnkProcessShieldHit_8006D1EC(Fighter_GObj* gobj);
/* 06D9AC */ void Fighter_8006D9AC(Fighter_GObj* gobj);
/* 06D9EC */ void Fighter_UnkCallCameraCallback_8006D9EC(Fighter_GObj* gobj);
/* 06DA4C */ void Fighter_8006DA4C(Fighter_GObj* gobj);
/* 06DABC */ void Fighter_Unload_8006DABC(void* user_data);
/* 458FD0 */ extern HSD_ObjAllocData fighter_alloc_data;
/* 458FFC */ extern HSD_ObjAllocData Fighter_80458FFC;
/* 459028 */ extern HSD_ObjAllocData fighter_bones_alloc_data;
/* 459054 */ extern HSD_ObjAllocData Fighter_80459054;
/* 459080 */ extern HSD_ObjAllocData Fighter_80459080;
/* 4590AC */ extern HSD_ObjAllocData Fighter_804590AC;
/* 4D64FC */ extern M2C_UNK Fighter_804D64FC;
/* 4D6500 */ extern M2C_UNK Fighter_804D6500;
/* 4D6504 */ extern HSD_Joint* Fighter_804D6504;
/* 4D6508 */ extern M2C_UNK Fighter_804D6508;
/* 4D650C */ extern int* Fighter_804D650C;
/* 4D6510 */ extern M2C_UNK Fighter_804D6510;
/* 4D6514 */ extern M2C_UNK Fighter_804D6514;
/* 4D6518 */ extern M2C_UNK Fighter_804D6518;
/* 4D651C */ extern M2C_UNK Fighter_804D651C;
/* 4D6520 */ extern M2C_UNK Fighter_804D6520;
/* 4D6524 */ extern float* Fighter_804D6524;
/* 4D6528 */ extern M2C_UNK Fighter_804D6528;
/* 4D6530 */ extern Vec2** Fighter_804D6530;
/* 4D6534 */ extern M2C_UNK Fighter_804D6534;
/* 4D6538 */ extern struct Fighter_804D653C_t* Fighter_804D6538;
/* 4D653C */ extern struct Fighter_804D653C_t* Fighter_804D653C;
/* 4D6540 */ extern int** Fighter_804D6540;
/* 4D6544 */ extern FighterPartsTable** ftPartsTable;
/* 4D6548 */ extern M2C_UNK Fighter_804D6548;
/* 4D654C */ extern M2C_UNK Fighter_804D654C;
/* 4D6550 */ extern int** Fighter_804D6550;
/* 4D6554 */ extern ftCommonData* p_ftCommonData;
#define GALE01_0D14E4
/* 0D14E4 */ void ftCo_800D14E4(ftCo_GObj* gobj);
/* 0D15D0 */ M2C_UNK ftCo_800D15D0();
/* 0D170C */ M2C_UNK ftCo_800D170C();
/* 0D1868 */ void ftCo_KinokoGiantStart_Anim(ftCo_GObj* gobj);
/* 0D18A4 */ void ftCo_KinokoGiantStart_Coll(ftCo_GObj* gobj);
/* 0D18CC */ M2C_UNK ftCo_800D18CC();
/* 0D1A28 */ void ftCo_KinokoGiantStartAir_Anim(ftCo_GObj* gobj);
/* 0D1A64 */ void ftCo_KinokoGiantStartAir_Coll(ftCo_GObj* gobj);
/* 0D1A8C */ void ftCo_800D1A8C(ftCo_GObj* gobj);
/* 0D1B04 */ M2C_UNK ftCo_800D1B04();
/* 0D1BA0 */ M2C_UNK ftCo_800D1BA0();
/* 0D1CAC */ void ftCo_KinokoGiantEnd_Anim(ftCo_GObj* gobj);
/* 0D1CE8 */ void ftCo_KinokoGiantEnd_Coll(ftCo_GObj* gobj);
/* 0D1D10 */ M2C_UNK ftCo_800D1D10();
/* 0D1E1C */ void ftCo_KinokoGiantEndAir_Anim(ftCo_GObj* gobj);
/* 0D1E58 */ void ftCo_KinokoGiantEndAir_Coll(ftCo_GObj* gobj);
/* 0D1E80 */ void ftCo_800D1E80(ftCo_GObj* gobj);
/* 0D1F6C */ M2C_UNK ftCo_800D1F6C();
/* 0D1FFC */ M2C_UNK ftCo_800D1FFC();
/* 0D2158 */ void ftCo_KinokoSmallStart_Anim(ftCo_GObj* gobj);
/* 0D2194 */ void ftCo_KinokoSmallStart_Coll(ftCo_GObj* gobj);
/* 0D21BC */ M2C_UNK ftCo_800D21BC();
/* 0D2318 */ void ftCo_KinokoSmallStartAir_Anim(ftCo_GObj* gobj);
/* 0D2354 */ void ftCo_KinokoSmallStartAir_Coll(ftCo_GObj* gobj);
/* 0D237C */ void ftCo_800D237C(ftCo_GObj* gobj);
/* 0D23F4 */ M2C_UNK ftCo_800D23F4();
/* 0D2490 */ M2C_UNK ftCo_800D2490();
/* 0D259C */ void ftCo_KinokoSmallEnd_Anim(ftCo_GObj* gobj);
/* 0D25D8 */ void ftCo_KinokoSmallEnd_Coll(ftCo_GObj* gobj);
/* 0D2600 */ M2C_UNK ftCo_800D2600();
/* 0D270C */ void ftCo_KinokoSmallEndAir_Anim(ftCo_GObj* gobj);
/* 0D2748 */ void ftCo_KinokoSmallEndAir_Coll(ftCo_GObj* gobj);
/* 0D2770 */ M2C_UNK ftCo_800D2770();
/* 0D27C4 */ M2C_UNK ftCo_800D27C4();
/* 0D2D0C */ M2C_UNK ft_800D2D0C();
/* 0D2D50 */ M2C_UNK ft_800D2D50();
/* 0D2DD0 */ void ftCo_ItemScrew_Anim(ftCo_GObj* gobj);
/* 0D2E0C */ void ftCo_ItemScrew_IASA(ftCo_GObj* gobj);
/* 0D2E2C */ void ftCo_ItemScrew_Phys(ftCo_GObj* gobj);
/* 0D2E4C */ void ftCo_ItemScrew_Coll(ftCo_GObj* gobj);
/* 0D2E7C */ M2C_UNK ft_800D2E7C();
/* 0D2EF8 */ void ftCo_ItemScrewAir_Anim(ftCo_GObj* gobj);
/* 0D2F34 */ void ftCo_ItemScrewAir_IASA(ftCo_GObj* gobj);
/* 0D2F54 */ void ftCo_ItemScrewAir_Phys(ftCo_GObj* gobj);
/* 0D2F74 */ void ftCo_ItemScrewAir_Coll(ftCo_GObj* gobj);
/* 0D2FA4 */ bool ftCo_800D2FA4(ftCo_GObj* gobj);
/* 0D3004 */ M2C_UNK ftCo_800D3004();
/* 0D30C0 */ void ftCo_DamageScrew_Anim(ftCo_GObj* gobj);
/* 0D30FC */ void ftCo_DamageScrew_IASA(ftCo_GObj* gobj);
/* 0D3100 */ void ftCo_DamageScrew_Phys(ftCo_GObj* gobj);
/* 0D3120 */ void ftCo_DamageScrew_Coll(ftCo_GObj* gobj);
/* 0D3158 */ void ftCo_800D3158(ftCo_GObj* gobj);
/* 0D331C */ M2C_UNK ftCo_800D331C();
/* 0D34E0 */ M2C_UNK ftCo_800D34E0();
/* 0D35FC */ M2C_UNK ftCo_800D35FC();
/* 0D3680 */ M2C_UNK ftCo_800D3680();
/* 0D38B8 */ M2C_UNK ftCo_800D38B8();
/* 0D3910 */ void ftCo_DeadLeft_Anim(ftCo_GObj* gobj);
/* 0D394C */ void ftCo_DeadLeft_Cam(ftCo_GObj* gobj);
/* 0D3950 */ M2C_UNK ftCo_800D3950();
/* 0D3B88 */ void ftCo_DeadRight_Anim(ftCo_GObj* gobj);
/* 0D3BC4 */ void ftCo_DeadRight_Cam(ftCo_GObj* gobj);
/* 0D3BC8 */ M2C_UNK ftCo_800D3BC8();
/* 0D3E00 */ void ftCo_DeadDown_Anim(ftCo_GObj* gobj);
/* 0D3E3C */ void ftCo_DeadDown_Cam(ftCo_GObj* gobj);
/* 0D3E40 */ M2C_UNK ftCo_800D3E40();
/* 0D4078 */ void ftCo_DeadUp_Anim(ftCo_GObj* gobj);
/* 0D40B4 */ void ftCo_DeadUp_Cam(ftCo_GObj* gobj);
/* 0D40B8 */ M2C_UNK ftCo_800D40B8();
/* 0D41C4 */ M2C_UNK ftCo_800D41C4();
/* 0D42E4 */ void ftCo_DeadUpStar_Anim(ftCo_GObj* gobj);
/* 0D4560 */ void ftCo_DeadUpStar_Cam(ftCo_GObj* gobj);
/* 0D4580 */ M2C_UNK ftCo_800D4580();
/* 0D4780 */ M2C_UNK ftCo_800D4780();
/* 0D47B8 */ M2C_UNK ftCo_800D47B8();
/* 0D481C */ M2C_UNK ftCo_800D481C();
/* 0D4A08 */ void ftCo_DeadUpFall_Anim(ftCo_GObj* gobj);
/* 0D4CE8 */ void ftCo_DeadUpFall_Phys(ftCo_GObj* gobj);
/* 0D4E30 */ void ftCo_DeadUpFall_Cam(ftCo_GObj* gobj);
/* 0D4E50 */ M2C_UNK ftCo_800D4E50();
/* 0D4F24 */ void ftCo_800D4F24(ftCo_GObj* gobj, int index);
/* 0D4FF4 */ void ftCo_800D4FF4(ftCo_GObj* gobj);
/* 0D52F8 */ void ftCo_Rebirth_Anim(ftCo_GObj* gobj);
/* 0D5358 */ void ftCo_Rebirth_IASA(ftCo_GObj* gobj);
/* 0D535C */ void ftCo_Rebirth_Phys(ftCo_GObj* gobj);
/* 0D5470 */ void ftCo_Rebirth_Coll(ftCo_GObj* gobj);
/* 0D5600 */ M2C_UNK ftCo_800D5600();
/* 0D56EC */ void ftCo_RebirthWait_Anim(ftCo_GObj* gobj);
/* 0D575C */ void ftCo_RebirthWait_IASA(ftCo_GObj* gobj);
/* 0D58F4 */ void ftCo_RebirthWait_Phys(ftCo_GObj* gobj);
/* 0D5A08 */ void ftCo_RebirthWait_Coll(ftCo_GObj* gobj);
/* 0D5A6C */ void ftCo_Rebirth_Cam(ftCo_GObj* gobj);
/* 0D5AEC */ void ftCo_800D5AEC(ftCo_GObj* gobj, enum_t, int, int, float,
float);
/* 0D5BF8 */ void ftCo_800D5BF8(ftCo_GObj* gobj);
/* 0D5C54 */ M2C_UNK ft_800D5C54();
/* 0D5CB0 */ void ftCo_800D5CB0(ftCo_GObj*, bool, float landing_lag);
/* 0D5D3C */ void ftCo_Landing_Anim(ftCo_GObj* gobj);
/* 0D5D78 */ void ftCo_Landing_IASA(ftCo_GObj* gobj);
/* 0D5F18 */ void ftCo_Landing_Phys(ftCo_GObj* gobj);
/* 0D5F38 */ void ftCo_Landing_Coll(ftCo_GObj* gobj);
/* 0D5F58 */ bool ftCo_Squat_CheckInput(ftCo_GObj* gobj);
/* 0D5FB0 */ bool ftCo_800D5FB0(ftCo_GObj* gobj);
/* 0D607C */ void ftCo_Squat_Anim(ftCo_GObj* gobj);
/* 0D60B8 */ void ftCo_Squat_IASA(ftCo_GObj* gobj);
/* 0D623C */ void ftCo_Squat_Phys(ftCo_GObj* gobj);
/* 0D625C */ void ftCo_Squat_Coll(ftCo_GObj* gobj);
/* 0D638C */ void ftCo_800D638C(ftCo_GObj* gobj);
/* 0D6448 */ void ftCo_SquatWait_Anim(ftCo_GObj* gobj);
/* 0D6474 */ void ftCo_SquatWait_IASA(ftCo_GObj* gobj);
/* 0D6584 */ void ftCo_SquatWait_Phys(ftCo_GObj* gobj);
/* 0D65B8 */ void ftCo_SquatWait_Coll(ftCo_GObj* gobj);
/* 0D6658 */ void ftCo_SquatRv_Anim(ftCo_GObj* gobj);
/* 0D6694 */ void ftCo_SquatRv_IASA(ftCo_GObj* gobj);
/* 0D6784 */ void ftCo_SquatRv_Phys(ftCo_GObj* gobj);
/* 0D67A4 */ void ftCo_SquatRv_Coll(ftCo_GObj* gobj);
/* 0D67C4 */ s32 ftCo_800D67C4(Fighter*);
/* 0D6824 */ bool ftCo_800D6824(ftCo_GObj* gobj);
/* 0D688C */ s32 ftCo_800D688C(Fighter*);
/* 0D68C0 */ bool ftCo_800D68C0(ftCo_GObj* gobj);
/* 0D6928 */ s32 ftCo_800D6928(Fighter*);
/* 0D695C */ bool ftCo_Attack100_CheckInput(ftCo_GObj* gobj);
/* 0D69C4 */ bool ftCo_800D69C4(ftCo_GObj* gobj);
/* 0D6A50 */ bool ftCo_Attack_800D6A50(ftCo_GObj* gobj);
/* 0D6B00 */ void ftCo_800D6B00(ftCo_GObj*, s32);
/* 0D6C0C */ void ftCo_Attack100Start_Anim(ftCo_GObj* gobj);
/* 0D6C60 */ void ftCo_800D6C60(ftCo_GObj*, HSD_GObjEvent callback);
/* 0D6D48 */ void ftCo_Attack100Loop_Anim(ftCo_GObj* gobj);
/* 0D6E34 */ void ftCo_Attack100End_Anim(ftCo_GObj* gobj);
/* 0D6E70 */ void ftCo_Attack100Loop_IASA(ftCo_GObj* gobj);
/* 0D6E98 */ void ftCo_Attack100Start_Phys(ftCo_GObj* gobj);
/* 0D6EB8 */ void ftCo_Attack100Loop_Phys(ftCo_GObj* gobj);
/* 0D6ED8 */ void ftCo_Attack100End_Phys(ftCo_GObj* gobj);
/* 0D6EF8 */ void ftCo_Attack100Start_Coll(ftCo_GObj* gobj);
/* 0D6F18 */ void ftCo_Attack100Loop_Coll(ftCo_GObj* gobj);
/* 0D6F38 */ void ftCo_Attack100End_Coll(ftCo_GObj* gobj);
/* 0D705C */ bool ftCo_800D705C(ftCo_GObj* gobj);
/* 0D7100 */ bool ftCo_800D7100(ftCo_GObj* gobj);
/* 0D71D8 */ void ftCo_800D71D8(ftCo_GObj* gobj);
/* 0D7268 */ M2C_UNK ftCo_800D7268();
/* 0D72A0 */ M2C_UNK ftCo_800D72A0();
/* 0D730C */ M2C_UNK ftCo_800D730C();
/* 0D74A4 */ M2C_UNK ftCo_800D74A4();
/* 0D7590 */ void ftCo_JumpAerialF1_Anim(ftCo_GObj* gobj);
/* 0D7614 */ void ftCo_JumpAerialF1_IASA(ftCo_GObj* gobj);
/* 0D7634 */ void ftCo_JumpAerialF1_Phys(ftCo_GObj* gobj);
/* 0D767C */ void ftCo_JumpAerialF1_Coll(ftCo_GObj* gobj);
/* 0D76B8 */ M2C_UNK ft_800D76B8();
/* 0D7770 */ M2C_UNK ft_800D7770();
/* 0D79AC */ void ftCo_ItemScopeStart_Anim(ftCo_GObj* gobj);
/* 0D79B0 */ void ftCo_ItemScopeAirStart_Anim(ftCo_GObj* gobj);
/* 0D7AEC */ void ftCo_ItemScopeStart_IASA(ftCo_GObj* gobj);
/* 0D7B1C */ void ftCo_ItemScopeAirStart_IASA(ftCo_GObj* gobj);
/* 0D7B4C */ void ftCo_ItemScopeStart_Phys(ftCo_GObj* gobj);
/* 0D7B6C */ void ftCo_ItemScopeAirStart_Phys(ftCo_GObj* gobj);
/* 0D7B8C */ void ftCo_ItemScopeStart_Coll(ftCo_GObj* gobj);
/* 0D7BB4 */ void ftCo_ItemScopeAirStart_Coll(ftCo_GObj* gobj);
/* 0D7DFC */ void ftCo_ItemScopeRapid_Anim(ftCo_GObj* gobj);
/* 0D7F10 */ void ftCo_ItemScopeAirRapid_Anim(ftCo_GObj* gobj);
/* 0D8024 */ void ftCo_ItemScopeRapid_IASA(ftCo_GObj* gobj);
/* 0D8044 */ void ftCo_ItemScopeAirRapid_IASA(ftCo_GObj* gobj);
/* 0D8064 */ void ftCo_ItemScopeRapid_Phys(ftCo_GObj* gobj);
/* 0D8084 */ void ftCo_ItemScopeAirRapid_Phys(ftCo_GObj* gobj);
/* 0D80A4 */ void ftCo_ItemScopeRapid_Coll(ftCo_GObj* gobj);
/* 0D80CC */ void ftCo_ItemScopeAirRapid_Coll(ftCo_GObj* gobj);
/* 0D83AC */ void ftCo_ItemScopeFire_Anim(ftCo_GObj* gobj);
/* 0D83F4 */ void ftCo_ItemScopeAirFire_Anim(ftCo_GObj* gobj);
/* 0D843C */ void ftCo_ItemScopeFire_IASA(ftCo_GObj* gobj);
/* 0D8440 */ void ftCo_ItemScopeAirFire_IASA(ftCo_GObj* gobj);
/* 0D8444 */ void ftCo_ItemScopeFire_Phys(ftCo_GObj* gobj);
/* 0D8464 */ void ftCo_ItemScopeAirFire_Phys(ftCo_GObj* gobj);
/* 0D8484 */ void ftCo_ItemScopeFire_Coll(ftCo_GObj* gobj);
/* 0D84AC */ void ftCo_ItemScopeAirFire_Coll(ftCo_GObj* gobj);
/* 0D88B8 */ void ftCo_ItemScopeEnd_Anim(ftCo_GObj* gobj);
/* 0D88D8 */ void ftCo_ItemScopeAirEnd_Anim(ftCo_GObj* gobj);
/* 0D88F8 */ void ftCo_ItemScopeEnd_IASA(ftCo_GObj* gobj);
/* 0D88FC */ void ftCo_ItemScopeAirEnd_IASA(ftCo_GObj* gobj);
/* 0D8900 */ void ftCo_ItemScopeEnd_Phys(ftCo_GObj* gobj);
/* 0D8920 */ void ftCo_ItemScopeAirEnd_Phys(ftCo_GObj* gobj);
/* 0D8940 */ void ftCo_ItemScopeEnd_Coll(ftCo_GObj* gobj);
/* 0D8968 */ void ftCo_ItemScopeAirEnd_Coll(ftCo_GObj* gobj);
/* 0D8990 */ bool ftCo_Catch_CheckInput(ftCo_GObj* gobj);
/* 0D8A38 */ M2C_UNK ftCo_800D8A38();
/* 0D8AE0 */ bool ftCo_800D8AE0(ftCo_GObj* gobj);
/* 0D8B9C */ bool ftCo_800D8B9C(ftCo_GObj* gobj);
/* 0D8C54 */ M2C_UNK ftCo_800D8C54();
/* 0D8CC8 */ void ftCo_Catch_Anim(ftCo_GObj* gobj);
/* 0D8D24 */ void ftCo_CatchDash_Anim(ftCo_GObj* gobj);
/* 0D8D80 */ void ftCo_Catch_IASA(ftCo_GObj* gobj);
/* 0D8D84 */ void ftCo_CatchDash_IASA(ftCo_GObj* gobj);
/* 0D8D88 */ void ftCo_Catch_Phys(ftCo_GObj* gobj);
/* 0D8DD0 */ void ftCo_CatchDash_Phys(ftCo_GObj* gobj);
/* 0D8E08 */ void ftCo_Catch_Coll(ftCo_GObj* gobj);
/* 0D8E6C */ void ftCo_CatchDash_Coll(ftCo_GObj* gobj);
/* 0D94D8 */ void ftCo_800D94D8(ftCo_GObj* gobj);
/* 0D9C98 */ void ftCo_800D9C98(ftCo_GObj* gobj);
/* 0D9E80 */ void ftCo_CatchPull_Anim(ftCo_GObj* gobj);
/* 0D9F90 */ void ftCo_CatchPull_IASA(ftCo_GObj* gobj);
/* 0D9F94 */ void ftCo_CatchPull_Phys(ftCo_GObj* gobj);
/* 0D9FDC */ void ftCo_CatchPull_Coll(ftCo_GObj* gobj);
/* 0DA318 */ void ftCo_CatchWait_Anim(ftCo_GObj* gobj);
/* 0DA31C */ void ftCo_CatchWait_IASA(ftCo_GObj* gobj);
/* 0DA3D0 */ void ftCo_CatchWait_Phys(ftCo_GObj* gobj);
/* 0DA418 */ void ftCo_CatchWait_Coll(ftCo_GObj* gobj);
/* 0DA490 */ void fn_800DA490(Fighter_GObj* gobj);
/* 0DA568 */ void ftCo_CatchAttack_Anim(ftCo_GObj* gobj);
/* 0DA5A4 */ void ftCo_CatchAttack_IASA(ftCo_GObj* gobj);
/* 0DA5A8 */ void ftCo_CatchAttack_Phys(ftCo_GObj* gobj);
/* 0DA5F0 */ void ftCo_CatchAttack_Coll(ftCo_GObj* gobj);
/* 0DA668 */ void fn_800DA668(Fighter_GObj* gobj);
/* 0DA698 */ void ftCo_800DA698(ftCo_GObj* gobj, bool);
/* 0DA744 */ void ftCo_CatchCut_Anim(ftCo_GObj* gobj);
/* 0DA780 */ void ftCo_CatchCut_IASA(ftCo_GObj* gobj);
/* 0DA784 */ void ftCo_CatchCut_Phys(ftCo_GObj* gobj);
/* 0DA7E4 */ void ftCo_CatchCut_Coll(ftCo_GObj* gobj);
/* 0DA824 */ float ftCo_800DA824(Fighter*);
/* 0DAC70 */ void ftCo_CapturePulledHi_Anim(ftCo_GObj* gobj);
/* 0DAC74 */ void ftCo_CapturePulledHi_IASA(ftCo_GObj* gobj);
/* 0DADE8 */ void ftCo_CapturePulledHi_Phys(ftCo_GObj* gobj);
/* 0DAE94 */ void ftCo_CapturePulledHi_Coll(ftCo_GObj* gobj);
/* 0DB004 */ void ftCo_CapturePulledLw_Anim(ftCo_GObj* gobj);
/* 0DB008 */ void ftCo_CapturePulledLw_IASA(ftCo_GObj* gobj);
/* 0DB00C */ void ftCo_CapturePulledLw_Phys(ftCo_GObj* gobj);
/* 0DB1F8 */ void ftCo_CapturePulledLw_Coll(ftCo_GObj* gobj);
/* 0DB368 */ void ftCo_800DB368(Fighter*, Fighter*);
/* 0DB464 */ void ftCo_800DB464(ftCo_GObj* gobj);
/* 0DB500 */ M2C_UNK ftCo_800DB500();
/* 0DB908 */ void ftCo_CaptureWaitHi_Anim(ftCo_GObj* gobj);
/* 0DBA4C */ void ftCo_CaptureWaitHi_IASA(ftCo_GObj* gobj);
/* 0DBA6C */ void ftCo_CaptureWaitHi_Phys(ftCo_GObj* gobj);
/* 0DBA8C */ void ftCo_CaptureWaitHi_Coll(ftCo_GObj* gobj);
/* 0DBD10 */ void ftCo_CaptureWaitLw_Anim(ftCo_GObj* gobj);
/* 0DBD30 */ void ftCo_CaptureWaitLw_IASA(ftCo_GObj* gobj);
/* 0DBD50 */ void ftCo_CaptureWaitLw_Phys(ftCo_GObj* gobj);
/* 0DBE9C */ void ftCo_CaptureWaitLw_Coll(ftCo_GObj* gobj);
/* 0DC110 */ void ftCo_CaptureJump_Anim(ftCo_GObj* gobj);
/* 0DC160 */ void ftCo_CaptureJump_IASA(ftCo_GObj* gobj);
/* 0DC224 */ void ftCo_CaptureJump_Phys(ftCo_GObj* gobj);
/* 0DC264 */ void ftCo_CaptureJump_Coll(ftCo_GObj* gobj);
/* 0DC284 */ void ftCo_800DC284(ftCo_GObj* gobj);
/* 0DC2E4 */ void ftCo_CaptureDamageHi_Anim(ftCo_GObj* gobj);
/* 0DC328 */ void ftCo_CaptureDamageHi_IASA(ftCo_GObj* gobj);
/* 0DC32C */ void ftCo_CaptureDamageHi_Phys(ftCo_GObj* gobj);
/* 0DC34C */ void ftCo_CaptureDamageHi_Coll(ftCo_GObj* gobj);
/* 0DC3A4 */ void ftCo_800DC3A4(ftCo_GObj* gobj);
/* 0DC468 */ void ftCo_CaptureDamageLw_Anim(ftCo_GObj* gobj);
/* 0DC4AC */ void ftCo_CaptureDamageLw_IASA(ftCo_GObj* gobj);
/* 0DC4B0 */ void ftCo_CaptureDamageLw_Phys(ftCo_GObj* gobj);
/* 0DC5EC */ void ftCo_CaptureDamageLw_Coll(ftCo_GObj* gobj);
/* 0DC750 */ void ftCo_800DC750(ftCo_GObj* gobj);
/* 0DC7F0 */ void ftCo_CaptureCut_Anim(ftCo_GObj* gobj);
/* 0DC82C */ void ftCo_CaptureCut_IASA(ftCo_GObj* gobj);
/* 0DC830 */ void ftCo_CaptureCut_Phys(ftCo_GObj* gobj);
/* 0DC890 */ void ftCo_CaptureCut_Coll(ftCo_GObj* gobj);
/* 0DC920 */ void ftCo_800DC920(ftCo_GObj*, ftCo_GObj* gobj);
/* 0DCE34 */ void ftCo_800DCE34(ftCo_GObj* gobj0, ftCo_GObj* gobj1);
/* 0DCFD4 */ void ftCo_800DCFD4(ftCo_GObj* gobj);
/* 0DD100 */ M2C_UNK ftCo_800DD100();
/* 0DD168 */ void ftCo_800DD168(ftCo_GObj* gobj);
/* 0DD1E4 */ M2C_UNK ftCo_800DD1E4();
/* 0DD398 */ M2C_UNK ftCo_800DD398();
/* 0DD4B0 */ M2C_UNK ftCo_800DD4B0();
/* 0DD724 */ void ftCo_800DD724(ftCo_GObj* gobj);
/* 0DD8C4 */ void ftCo_ThrowF_Anim(ftCo_GObj* gobj);
/* 0DD92C */ void ftCo_ThrowF_IASA(ftCo_GObj* gobj);
/* 0DD930 */ void ftCo_ThrowF_Phys(ftCo_GObj* gobj);
/* 0DD990 */ void ftCo_ThrowF_Coll(ftCo_GObj* gobj);
/* 0DDA10 */ void ftCo_ThrowB_Anim(ftCo_GObj* gobj);
/* 0DDA5C */ void ftCo_ThrowB_IASA(ftCo_GObj* gobj);
/* 0DDA60 */ void ftCo_ThrowB_Phys(ftCo_GObj* gobj);
/* 0DDAC0 */ void ftCo_ThrowB_Coll(ftCo_GObj* gobj);
/* 0DDB40 */ void ftCo_ThrowHi_Anim(ftCo_GObj* gobj);
/* 0DDB8C */ void ftCo_ThrowHi_IASA(ftCo_GObj* gobj);
/* 0DDB90 */ void ftCo_ThrowHi_Phys(ftCo_GObj* gobj);
/* 0DDBF0 */ void ftCo_ThrowHi_Coll(ftCo_GObj* gobj);
/* 0DDC70 */ void ftCo_ThrowHi_Cam(ftCo_GObj* gobj);
/* 0DDCB4 */ void ftCo_ThrowLw_Anim(ftCo_GObj* gobj);
/* 0DDD00 */ void ftCo_ThrowLw_IASA(ftCo_GObj* gobj);
/* 0DDD04 */ void ftCo_ThrowLw_Phys(ftCo_GObj* gobj);
/* 0DDD64 */ void ftCo_ThrowLw_Coll(ftCo_GObj* gobj);
/* 0DDDE4 */ M2C_UNK ftCo_800DDDE4();
/* 0DE2A8 */ void ftCo_800DE2A8(ftCo_GObj*, ftCo_GObj* gobj);
/* 0DE2CC */ M2C_UNK ftCo_800DE2CC();
/* 0DE2F0 */ void ftCo_800DE2F0(ftCo_GObj* gobj);
/* 0DE3FC */ bool ftCo_800DE3FC(ftCo_GObj* gobj, FtMotionId msid, float arg2);
/* 0DE508 */ void ftCo_800DE508(ftCo_GObj* gobj);
/* 0DE5A4 */ M2C_UNK ftCo_800DE5A4();
/* 0DE69C */ void ftCo_ThrownF_Anim(ftCo_GObj* gobj);
/* 0DE6BC */ void ftCo_ThrownF_IASA(ftCo_GObj* gobj);
/* 0DE6C0 */ void ftCo_ThrownF_Phys(ftCo_GObj* gobj);
/* 0DE6C4 */ void ftCo_ThrownF_Coll(ftCo_GObj* gobj);
/* 0DE6C8 */ void ftCo_ThrownB_Anim(ftCo_GObj* gobj);
/* 0DE6E8 */ void ftCo_ThrownB_IASA(ftCo_GObj* gobj);
/* 0DE6EC */ void ftCo_ThrownB_Phys(ftCo_GObj* gobj);
/* 0DE6F0 */ void ftCo_ThrownB_Coll(ftCo_GObj* gobj);
/* 0DE6F4 */ void ftCo_ThrownHi_Anim(ftCo_GObj* gobj);
/* 0DE714 */ void ftCo_ThrownHi_IASA(ftCo_GObj* gobj);
/* 0DE718 */ void ftCo_ThrownHi_Phys(ftCo_GObj* gobj);
/* 0DE71C */ void ftCo_ThrownHi_Coll(ftCo_GObj* gobj);
/* 0DE720 */ void ftCo_ThrownHi_Cam(ftCo_GObj* gobj);
/* 0DE76C */ void ftCo_ThrownLw_Anim(ftCo_GObj* gobj);
/* 0DE78C */ void ftCo_ThrownLw_IASA(ftCo_GObj* gobj);
/* 0DE790 */ void ftCo_ThrownLw_Phys(ftCo_GObj* gobj);
/* 0DE794 */ void ftCo_ThrownLw_Coll(ftCo_GObj* gobj);
/* 0DE7C0 */ void ftCo_800DE7C0(ftCo_GObj*, s32, s32);
/* 0DE854 */ void ftCo_800DE854(ftCo_GObj* gobj);
/* 0DE920 */ M2C_UNK ftCo_800DE920();
/* 0DE974 */ M2C_UNK ftCo_800DE974();
/* 0DE9B8 */ M2C_UNK ftCo_800DE9B8();
/* 0DE9D8 */ bool ftCo_800DE9D8(ftCo_GObj* gobj);
/* 0DEA28 */ M2C_UNK ftCo_800DEA28();
/* 0DEAE8 */ void ftCo_800DEAE8(ftCo_GObj* gobj, enum_t asid0, enum_t asid1);
/* 0DEBD0 */ M2C_UNK ftCo_800DEBD0();
/* 0DECF4 */ void ftCo_AppealS_Anim(ftCo_GObj* gobj);
/* 0DED30 */ void ftCo_AppealS_IASA(ftCo_GObj* gobj);
/* 0DEE44 */ void ftCo_AppealS_Phys(ftCo_GObj* gobj);
/* 0DEE64 */ void ftCo_AppealS_Coll(ftCo_GObj* gobj);
/* 0DEE84 */ void ftCo_800DEE84(int, u8, char*, u32, float, float);
/* 0DEEA8 */ void ftCo_800DEEA8(ftCo_GObj* gobj);
/* 0DEEB8 */ void ftCo_800DEEB8(void);
/* 0DEEE8 */ M2C_UNK ftCo_800DEEE8(ftCo_Fighter* fp, Vec2* shift);
/* 0DEF38 */ void ftCo_800DEF38(ftCo_GObj* gobj);
/* 0DF0D0 */ void ftCo_800DF0D0(ftCo_GObj* gobj);
/* 0DF1C8 */ bool ftCo_800DF1C8(ftCo_Fighter* fp);
/* 0DF21C */ bool ftCo_800DF21C(ftCo_Fighter* fp);
/* 0DF2D8 */ bool ftCo_800DF2D8(ftCo_Fighter* fp);
/* 0DF30C */ bool ftCo_800DF30C(ftCo_Fighter* fp);
/* 0DF3A8 */ bool ftCo_800DF3A8(ftCo_Fighter* fp);
/* 0DF3DC */ bool ftCo_800DF3DC(ftCo_Fighter* fp);
/* 0DF478 */ bool ftCo_800DF478(Fighter*);
/* 0DF50C */ bool ftCo_800DF50C(ftCo_Fighter* fp);
/* 0DF608 */ bool ftCo_800DF608(ftCo_Fighter* fp);
/* 0DF644 */ bool ftCo_800DF644(ftCo_Fighter* fp);
/* 0DF678 */ bool ftCo_800DF678(Fighter* fp);
/* 0DF6F8 */ bool ftCo_800DF6F8(ftCo_Fighter* fp);
/* 0DF72C */ bool ftCo_800DF72C(ftCo_Fighter* fp);
/* 0DF79C */ bool ftCo_800DF79C(ftCo_Fighter* fp);
/* 0DF7F4 */ M2C_UNK ftCo_800DF7F4();
/* 0DF844 */ M2C_UNK ftCo_800DF844();
/* 0DF878 */ M2C_UNK ftCo_800DF878();
/* 0DF8B0 */ bool ftCo_800DF8B0(ftCo_Fighter* fp);
/* 0DF8E8 */ bool ftCo_800DF8E8(ftCo_Fighter* fp);
/* 0DF910 */ M2C_UNK ftCo_800DF910();
#define GALE01_07C930
/* 07C930 */ void ftCommon_8007C930(ftCo_Fighter*, float);
/* 07C98C */ void ftCommon_8007C98C(ftCo_Fighter*, float vel, float,
float gr_friction);
/* 07CA80 */ void ftCommon_8007CA80(ftCo_Fighter* fp, float result, float,
float);
/* 07CADC */ void ftCommon_8007CADC(ftCo_Fighter*, float, float, float);
/* 07CB74 */ void ftCommon_8007CB74(ftCo_GObj*);
/* 07CC1C */ ftCo_GObj* ftCommon_8007CC1C(ftCo_GObj*);
/* 07CC78 */ void ftCommon_8007CC78(ftCo_Fighter*, float);
/* 07CCA0 */ void ftCommon_8007CCA0(ftCo_Fighter*, float);
/* 07CCE8 */ void ftCommon_8007CCE8(ftCo_Fighter*);
/* 07CD6C */ float ftCommon_8007CD6C(float, float decrement);
/* 07CDA4 */ float ftCommon_8007CDA4(ftCo_Fighter*);
/* 07CDF8 */ float ftCommon_8007CDF8(ftCo_Fighter*);
/* 07CE4C */ void ftCommon_8007CE4C(ftCo_Fighter*, float);
/* 07CE94 */ void ftCommon_8007CE94(ftCo_Fighter*, float);
/* 07CEF4 */ void ftCommon_8007CEF4(ftCo_Fighter*);
/* 07CF58 */ bool ftCommon_8007CF58(ftCo_Fighter*);
/* 07D050 */ bool ftCommon_8007D050(ftCo_Fighter*, float);
/* 07D140 */ void ftCommon_8007D140(ftCo_Fighter*, float, float, float);
/* 07D174 */ void ftCommon_8007D174(ftCo_Fighter*, float, float, float, float);
/* 07D268 */ void ftCommon_8007D268(ftCo_Fighter*);
/* 07D28C */ void ftCommon_8007D28C(ftCo_Fighter*, float);
/* 07D2E8 */ void ftCommon_8007D2E8(ftCo_Fighter*, float, float);
/* 07D344 */ void ftCommon_8007D344(ftCo_Fighter*, float, float, float);
/* 07D3A8 */ void ftCommon_8007D3A8(ftCo_Fighter*, float, float, float);
/* 07D440 */ void ftCommon_8007D440(ftCo_Fighter*, float);
/* 07D468 */ void ftCommon_8007D468(ftCo_Fighter*);
/* 07D494 */ void ftCommon_8007D494(ftCo_Fighter*, float, float);
/* 07D4B8 */ void ftCommon_8007D4B8(ftCo_Fighter*);
/* 07D4E4 */ void ftCommon_8007D4E4(ftCo_Fighter*);
/* 07D4F4 */ void ftCommon_ClampFallSpeed(ftCo_Fighter*, float);
/* 07D508 */ void ftCommon_8007D508(ftCo_Fighter*, float, float);
/* 07D528 */ bool ftCommon_8007D528(ftCo_Fighter*);
/* 07D5BC */ void ftCommon_8007D5BC(ftCo_Fighter*);
/* 07D5D4 */ void ftCommon_8007D5D4(ftCo_Fighter*);
/* 07D60C */ void ftCommon_8007D60C(ftCo_Fighter*);
/* 07D698 */ void ftCommon_8007D698(ftCo_Fighter*);
/* 07D6A4 */ void ftCommon_8007D6A4(ftCo_Fighter*);
/* 07D780 */ void ftCommon_8007D780(ftCo_Fighter*);
/* 07D7FC */ void ftCommon_8007D7FC(ftCo_Fighter*);
/* 07D92C */ void ftCommon_8007D92C(ftCo_GObj*);
/* 07D964 */ float ftCo_GetLStickAngle(ftCo_Fighter* fp);
/* 07D99C */ float ftCo_GetCStickAngle(ftCo_Fighter* fp);
/* 07D9D4 */ float ftCommon_8007D9D4(ftCo_Fighter*);
/* 07D9FC */ void ftCommon_8007D9FC(ftCo_Fighter*);
/* 07DA24 */ void ftCommon_8007DA24(ftCo_Fighter*);
/* 07DA74 */ float ftCommon_CalcHitlag(int dmg, FtMotionId msid, float mul);
/* 07DB24 */ void ftCommon_8007DB24(ftCo_GObj*);
/* 07DB58 */ void ftCommon_8007DB58(ftCo_GObj*);
/* 07DBCC */ void ftCommon_8007DBCC(ftCo_Fighter*, bool, float);
/* 07DC08 */ bool ftCommon_8007DC08(ftCo_Fighter*, float);
/* 07DD7C */ void ftCommon_8007DD7C(ftCo_GObj*, Vec3*);
/* 07DFD0 */ void ftCommon_8007DFD0(ftCo_GObj* gobj, Vec3* arg1);
/* 07E0E4 */ void ftCommon_8007E0E4(ftCo_GObj*);
/* 07E2A4 */ ftCo_GObj* ftCommon_8007E2A4(ftCo_GObj*);
/* 07E2D0 */ void ftCommon_8007E2D0(ftCo_Fighter*, s16, HSD_GObjEvent,
HSD_GObjEvent,
void (*)(ftCo_GObj*, ftCo_GObj*));
/* 07E2F4 */ void ftCommon_8007E2F4(ftCo_Fighter*, s16 val);
/* 07E2FC */ void ftCommon_8007E2FC(ftCo_GObj*);
/* 07E358 */ void ftCommon_8007E358(ftCo_GObj*);
/* 07E3EC */ void ftCommon_8007E3EC(ftCo_GObj*);
/* 07E5AC */ void ftCommon_8007E5AC(ftCo_Fighter*);
/* 07E620 */ void ftCommon_SetAccessory(ftCo_Fighter*, HSD_Joint*);
/* 07E690 */ void ftCommon_8007E690(ftCo_Fighter*, HSD_AnimJoint*);
/* 07E6DC */ void ftCommon_8007E6DC(ftCo_GObj*, ftCo_GObj* gobj, s32);
/* 07E79C */ void ftCommon_8007E79C(ftCo_GObj*, s32);
/* 07E7E4 */ void ftCommon_8007E7E4(ftCo_GObj*, s32);
/* 07E82C */ void ftCommon_8007E82C(ftCo_GObj*);
/* 07E83C */ void ftCommon_8007E83C(ftCo_GObj*, s32, float div);
/* 07E994 */ s32 ftGetParasolStatus(ftCo_GObj*);
/* 07EA90 */ void ftCommon_8007EA90(ftCo_Fighter*, s32);
/* 07EBAC */ void ftCommon_8007EBAC(ftCo_Fighter*, u32, u32);
/* 07EC30 */ void ftCommon_8007EC30(u32, u32);
/* 07ECD4 */ void ftCommon_8007ECD4(ftCo_Fighter*, s32);
/* 07ED2C */ void ftCommon_8007ED2C(ftCo_Fighter*);
/* 07ED50 */ void ftCommon_8007ED50(ftCo_Fighter*, s32);
/* 07EE0C */ void ftCommon_8007EE0C(ftCo_Fighter*, s32);
/* 07EEC8 */ void ftCommon_8007EEC8(ftCo_Fighter*, s32, s32);
/* 07EF5C */ void ftCommon_8007EF5C(ftCo_Fighter*, s32);
/* 07EFC0 */ void ftCommon_8007EFC0(ftCo_Fighter*, u32 val);
/* 07EFC8 */ void ftCommon_8007EFC8(ftCo_GObj*, void (*)(ftCo_GObj*));
/* 07F578 */ void ftCommon_8007F578(ftCo_GObj*);
/* 07F5CC */ void ftCommon_8007F5CC(ftCo_GObj*, s32);
/* 07F694 */ float ftCommon_GetModelScale(ftCo_Fighter*);
/* 07F6A4 */ void ftCommon_8007F6A4(ftCo_Fighter*, HSD_JObj*);
/* 07F76C */ void ftCommon_8007F76C(ftCo_GObj*);
/* 07F7B4 */ void ftCommon_8007F7B4(ftCo_GObj*);
/* 07F804 */ MtxPtr ftCommon_8007F804(ftCo_Fighter*);
/* 07F824 */ void ftCommon_8007F824(ftCo_GObj*);
/* 07F86C */ void ftCommon_8007F86C(ftCo_GObj*);
/* 07F8B4 */ void ftCommon_8007F8B4(ftCo_Fighter*, Vec3* v);
/* 07F8E8 */ void ftCommon_8007F8E8(ftCo_GObj*);
/* 07F948 */ void ftCommon_8007F948(ftCo_GObj*, ftCo_GObj*, s32);
/* 07F9B4 */ void ftCommon_8007F9B4(ftCo_GObj*);
/* 07FA00 */ void ftCommon_8007FA00(ftCo_GObj*);
/* 07FA58 */ void ftCommon_8007FA58(ftCo_GObj*, Item_GObj*);
/* 07FC7C */ void ftCommon_8007FC7C(ftCo_GObj*, float);
/* 07FDA0 */ void ftCommon_8007FDA0(ftCo_GObj*);
/* 07FE84 */ void ftCommon_8007FE84(ftCo_GObj*, ftCo_GObj*, s32, float);
/* 07FF74 */ void ftCommon_8007FF74(ftCo_GObj*);
/* 07FFD8 */ bool ftCommon_8007FFD8(ftCo_Fighter*, float);
/* 080144 */ bool ftCommon_80080144(ftCo_Fighter*);
/* 080174 */ void ftCommon_80080174(ftCo_Fighter* fp);
/* 08021C */ void ftCommon_8008021C(ftCo_GObj*);
/* 08031C */ void ftCommon_8008031C(ftCo_GObj*);
/* 080460 */ void ftCommon_80080460(ftCo_Fighter*);
/* 080474 */ void ftCommon_80080474(ftCo_Fighter*);
/* 080484 */ void ftCommon_80080484(ftCo_Fighter*);
/* 0804A0 */ void ftCommon_800804A0(ftCo_Fighter*, float);
/* 0804EC */ float ftCommon_800804EC(ftCo_Fighter*);
/* 0804FC */ void ftCommon_800804FC(ftCo_Fighter*);
static inline void ftCo_SpawnEf(ftCo_GObj* gobj, HSD_JObj* joint, uint arg2,
enum_t arg3)
{
u8 _[8] = { 0 };
ftCo_Fighter* fp = gobj->user_data;
efAsync_Spawn((HSD_GObj*) gobj, &fp->x60C, arg2, arg3, joint);
}
static inline void ftCo_Thrown_Enter(ftCo_GObj* gobj, FtMotionId msid,
MotionFlags mf, float anim_start)
{
ftCo_Fighter* fp = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj));
fp->facing_dir = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) fp->victim_gobj))->facing_dir;
fp->mv.co.capturekoopa.x0 = 0;
Fighter_ChangeMotionState(gobj, msid, mf, anim_start, 1, 0,
fp->victim_gobj);
fp->accessory1_cb = (HSD_GObjEvent) ftCo_800DE508;
ftCommon_8007E2F4(fp, 0x1FF);
}
#define MELEE_FT_CHARA_FTCRAZYHAND_FORWARD_H
typedef enum ftCrazyhand_MotionState {
ftCh_MS_Count = ftMh_MS_Count - 1,
ftCh_MS_SelfCount = ftMh_MS_SelfCount - 1,
} ftCrazyhand_MotionState;
#define GALE01_155E18
/* 155E18 */ void ftCh_Init_OnDeath(HSD_GObj* gobj);
/* 155E1C */ void ftCh_Init_OnLoad(HSD_GObj* gobj);
/* 155F8C */ void ftCh_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 155FCC */ void ftCh_Init_80155FCC(HSD_GObj* gobj);
/* 156014 */ void ftCh_Init_80156014(HSD_GObj* gobj);
/* 156404 */ void ftCh_Wait1_0_Anim(HSD_GObj* gobj);
/* 156A70 */ void ftCh_Wait1_0_IASA(HSD_GObj* gobj);
/* 156AB4 */ void ftCh_Wait1_0_Phys(HSD_GObj* gobj);
/* 156AD4 */ void ftCh_Wait1_0_Coll(HSD_GObj* gobj);
/* 156FDC */ void ftCh_Entry_Anim(HSD_GObj* gobj);
/* 157018 */ void ftCh_Entry_IASA(HSD_GObj* gobj);
/* 15705C */ void ftCh_Entry_Phys(HSD_GObj* gobj);
/* 15707C */ void ftCh_Entry_Coll(HSD_GObj* gobj);
/* 1570CC */ void ftCh_Damage_Anim(HSD_GObj* gobj);
/* 157108 */ void ftCh_Damage_IASA(HSD_GObj* gobj);
/* 15714C */ void ftCh_Damage_Phys(HSD_GObj* gobj);
/* 15716C */ void ftCh_Damage_Coll(HSD_GObj* gobj);
/* 157204 */ void ftCh_Damage2_Anim(HSD_GObj* gobj);
/* 1572D4 */ void ftCh_Damage2_IASA(HSD_GObj* gobj);
/* 157318 */ void ftCh_Damage2_Phys(HSD_GObj* gobj);
/* 157378 */ void ftCh_Damage2_Coll(HSD_GObj* gobj);
/* 1573C8 */ void ftCh_WaitSweep_Anim(HSD_GObj* gobj);
/* 157404 */ void ftCh_WaitSweep_Phys(HSD_GObj* gobj);
/* 157424 */ void ftCh_WaitSweep_IASA(HSD_GObj* gobj);
/* 157468 */ void ftCh_WaitSweep_Coll(HSD_GObj* gobj);
/* 1574B8 */ void ftCh_SweepLoop_Anim(HSD_GObj* gobj);
/* 1574F4 */ void ftCh_SweepLoop_IASA(HSD_GObj* gobj);
/* 157538 */ void ftCh_SweepLoop_Phys(HSD_GObj* gobj);
/* 157558 */ void ftCh_SweepLoop_Coll(HSD_GObj* gobj);
/* 1575A8 */ void ftCh_SweepWait_Anim(HSD_GObj* gobj);
/* 1575E4 */ void ftCh_SweepWait_IASA(HSD_GObj* gobj);
/* 157628 */ void ftCh_SweepWait_Phys(HSD_GObj* gobj);
/* 157648 */ void ftCh_SweepWait_Coll(HSD_GObj* gobj);
/* 1576B0 */ void ftCh_Slap_Anim(HSD_GObj* gobj);
/* 157724 */ void ftCh_Slap_IASA(HSD_GObj* gobj);
/* 157768 */ void ftCh_Slap_Phys(HSD_GObj* gobj);
/* 157844 */ void ftCh_Walk2_Anim(HSD_GObj* gobj);
/* 157880 */ void ftCh_Walk2_IASA(HSD_GObj* gobj);
/* 1578C4 */ void ftCh_Walk2_Phys(HSD_GObj* gobj);
/* 1578E4 */ void ftCh_Slap_Coll(HSD_GObj* gobj);
/* 157934 */ void ftCh_WalkLoop_Anim(HSD_GObj* gobj);
/* 15798C */ void ftCh_WalkLoop_IASA(HSD_GObj* gobj);
/* 1579D0 */ void ftCh_WalkLoop_Phys(HSD_GObj* gobj);
/* 1579F0 */ void ftCh_WalkLoop_Coll(HSD_GObj* gobj);
/* 157A40 */ void ftCh_WalkWait_Anim(HSD_GObj* gobj);
/* 157ABC */ void ftCh_WalkWait_IASA(HSD_GObj* gobj);
/* 157B00 */ void ftCh_WalkWait_Phys(HSD_GObj* gobj);
/* 157B54 */ void ftCh_WalkWait_Coll(HSD_GObj* gobj);
/* 157BAC */ void ftCh_WalkShoot_Anim(HSD_GObj* gobj);
/* 157BE8 */ void ftCh_WalkShoot_IASA(HSD_GObj* gobj);
/* 157C2C */ void ftCh_WalkShoot_Phys(HSD_GObj* gobj);
/* 157C4C */ void ftCh_WalkShoot_Coll(HSD_GObj* gobj);
/* 157CB0 */ void ftCh_Drill_Anim(HSD_GObj* gobj);
/* 157CEC */ void ftCh_Drill_IASA(HSD_GObj* gobj);
/* 157D30 */ void ftCh_Drill_Phys(HSD_GObj* gobj);
/* 157DF4 */ void ftCh_Drill_Coll(HSD_GObj* gobj);
/* 157EA0 */ void ftCh_RockCrushUp_Anim(HSD_GObj* gobj);
/* 157F48 */ void ftCh_RockCrushWait_Anim(HSD_GObj* gobj);
/* 157F84 */ void ftCh_RockCrushUp_IASA(HSD_GObj* gobj);
/* 157FC8 */ void ftCh_RockCrushUp_Phys(HSD_GObj* gobj);
/* 158140 */ void ftCh_RockCrushUp_Coll(HSD_GObj* gobj);
/* 1581A4 */ void ftCh_RockCrushDown_Anim(HSD_GObj* gobj);
/* 1581E0 */ void ftCh_RockCrushDown_IASA(HSD_GObj* gobj);
/* 158224 */ void ftCh_RockCrushDown_Phys(HSD_GObj* gobj);
/* 1582D4 */ void ftCh_RockCrushDown_Coll(HSD_GObj* gobj);
/* 158340 */ void ftCh_PaperCrush_Anim(HSD_GObj* gobj);
/* 15837C */ void ftCh_PaperCrush_IASA(HSD_GObj* gobj);
/* 1583C0 */ void ftCh_PaperCrush_Phys(HSD_GObj* gobj);
/* 1583E0 */ void ftCh_PaperCrush_Coll(HSD_GObj* gobj);
/* 158450 */ void ftCh_Poke1_Anim(HSD_GObj* gobj);
/* 1584CC */ void ftCh_Poke1_IASA(HSD_GObj* gobj);
/* 158510 */ void ftCh_Poke1_Phys(HSD_GObj* gobj);
/* 158530 */ void ftCh_Poke1_Coll(HSD_GObj* gobj);
/* 15870C */ void ftCh_Poke2_Anim(HSD_GObj* gobj);
/* 158748 */ void ftCh_Poke2_IASA(HSD_GObj* gobj);
/* 15878C */ void ftCh_Poke2_Phys(HSD_GObj* gobj);
/* 1587AC */ void ftCh_Poke2_Coll(HSD_GObj* gobj);
/* 158814 */ void ftCh_FingerBeamStart_Anim(HSD_GObj* gobj);
/* 158850 */ void ftCh_FingerBeamStart_IASA(HSD_GObj* gobj);
/* 158894 */ void ftCh_FingerBeamStart_Phys(HSD_GObj* gobj);
/* 1588B4 */ void ftCh_FingerBeamStart_Coll(HSD_GObj* gobj);
/* 158BBC */ void ftCh_FingerBeamLoop_Anim(HSD_GObj* gobj);
/* 158C44 */ void ftCh_FingerBeamLoop_IASA(HSD_GObj* gobj);
/* 158C88 */ void ftCh_FingerBeamLoop_Phys(HSD_GObj* gobj);
/* 158DF8 */ void ftCh_FingerBeamLoop_Coll(HSD_GObj* gobj);
/* 158E7C */ void ftCh_FingerBeamEnd_Anim(HSD_GObj* gobj);
/* 158ECC */ void ftCh_FingerBeamEnd_IASA(HSD_GObj* gobj);
/* 158F10 */ void ftCh_FingerBeamEnd_Phys(HSD_GObj* gobj);
/* 158F30 */ void ftCh_FingerBeamEnd_Coll(HSD_GObj* gobj);
/* 158FB4 */ void ftCh_BackPunch_Anim(HSD_GObj* gobj);
/* 158FF0 */ void ftCh_BackPunch_IASA(HSD_GObj* gobj);
/* 159034 */ void ftCh_BackPunch_Phys(HSD_GObj* gobj);
/* 159094 */ void ftCh_BackPunch_Coll(HSD_GObj* gobj);
/* 159134 */ void ftCh_FingerGun1_Anim(HSD_GObj* gobj);
/* 1591C0 */ void ftCh_FingerGun1_IASA(HSD_GObj* gobj);
/* 159204 */ void ftCh_FingerGun1_Phys(HSD_GObj* gobj);
/* 159264 */ void ftCh_FingerGun1_Coll(HSD_GObj* gobj);
/* 159388 */ void ftCh_BackAirplane1_Anim(HSD_GObj* gobj);
/* 15940C */ void ftCh_BackAirplane1_IASA(HSD_GObj* gobj);
/* 159450 */ void ftCh_BackAirplane1_Phys(HSD_GObj* gobj);
/* 1594B0 */ void ftCh_BackAirplane1_Coll(HSD_GObj* gobj);
/* 159534 */ void ftCh_BackAirplane2_Anim(HSD_GObj* gobj);
/* 159608 */ void ftCh_BackAirplane2_IASA(HSD_GObj* gobj);
/* 15964C */ void ftCh_BackAirplane2_Phys(HSD_GObj* gobj);
/* 15966C */ void ftCh_BackAirplane2_Coll(HSD_GObj* gobj);
/* 1596D0 */ void ftCh_BackAirplane3_Anim(HSD_GObj* gobj);
/* 159788 */ void ftCh_BackAirplane3_IASA(HSD_GObj* gobj);
/* 1597CC */ void ftCh_BackAirplane3_Phys(HSD_GObj* gobj);
/* 1597EC */ void ftCh_BackAirplane3_Coll(HSD_GObj* gobj);
/* 159858 */ void ftCh_BackCrush_Anim(HSD_GObj* gobj);
/* 1598A0 */ void ftCh_BackCrush_IASA(HSD_GObj* gobj);
/* 1598E4 */ void ftCh_BackCrush_Phys(HSD_GObj* gobj);
/* 159904 */ void ftCh_BackCrush_Coll(HSD_GObj* gobj);
/* 1599C0 */ void ftCh_BackDisappear_Anim(HSD_GObj* gobj);
/* 159A08 */ void ftCh_BackDisappear_IASA(HSD_GObj* gobj);
/* 159A4C */ void ftCh_BackDisappear_Phys(HSD_GObj* gobj);
/* 159AA0 */ void ftCh_BackDisappear_Coll(HSD_GObj* gobj);
/* 159D04 */ void ftCh_Wait1_1_Anim(HSD_GObj* gobj);
/* 159E8C */ void ftCh_Wait1_1_IASA(HSD_GObj* gobj);
/* 159ED0 */ void ftCh_Wait1_1_Phys(HSD_GObj* gobj);
/* 159F3C */ void ftCh_Wait1_1_Coll(HSD_GObj* gobj);
/* 159F8C */ void ftCh_Grab_Anim(HSD_GObj* gobj);
/* 159FC8 */ void ftCh_Grab_IASA(HSD_GObj* gobj);
/* 15A00C */ void ftCh_Grab_Phys(HSD_GObj* gobj);
/* 15A02C */ void ftCh_Grab_Coll(HSD_GObj* gobj);
/* 15A0C4 */ void ftCh_Cancel_Anim(HSD_GObj* gobj);
/* 15A10C */ void ftCh_Cancel_IASA(HSD_GObj* gobj);
/* 15A150 */ void ftCh_Cancel_Phys(HSD_GObj* gobj);
/* 15A180 */ void ftCh_Cancel_Coll(HSD_GObj* gobj);
/* 15A20C */ void ftCh_Squeezing0_Anim(HSD_GObj* gobj);
/* 15A248 */ void ftCh_Squeezing0_IASA(HSD_GObj* gobj);
/* 15A28C */ void ftCh_Squeezing0_Phys(HSD_GObj* gobj);
/* 15A2AC */ void ftCh_Squeezing0_Coll(HSD_GObj* gobj);
/* 15A2B0 */ void ftCh_Init_8015A2B0(HSD_GObj* gobj);
/* 15A318 */ void ftCh_Squeezing1_Anim(HSD_GObj* gobj);
/* 15A38C */ void ftCh_Squeezing1_IASA(HSD_GObj* gobj);
/* 15A3D0 */ void ftCh_Squeezing1_Phys(HSD_GObj* gobj);
/* 15A3F0 */ void ftCh_Squeezing1_Coll(HSD_GObj* gobj);
/* 15A3F4 */ void ftCh_Init_8015A3F4(HSD_GObj* gobj);
/* 15A464 */ void ftCh_Squeeze_Anim(HSD_GObj* gobj);
/* 15A4F8 */ void ftCh_Squeeze_IASA(HSD_GObj* gobj);
/* 15A53C */ void ftCh_Squeeze_Phys(HSD_GObj* gobj);
/* 15A55C */ void ftCh_Squeeze_Coll(HSD_GObj* gobj);
/* 15A560 */ void ftCh_Init_8015A560(HSD_GObj* gobj);
/* 15A5D0 */ void ftCh_Throw_Anim(HSD_GObj* gobj);
/* 15A664 */ void ftCh_Throw_IASA(HSD_GObj* gobj);
/* 15A6A8 */ void ftCh_Throw_Phys(HSD_GObj* gobj);
/* 15A6C8 */ void ftCh_Throw_Coll(HSD_GObj* gobj);
/* 15A6CC */ void ftCh_Slam_Anim(HSD_GObj* gobj);
/* 15A750 */ void ftCh_Slam_IASA(HSD_GObj* gobj);
/* 15A794 */ void ftCh_Slam_Phys(HSD_GObj* gobj);
/* 15A7B4 */ void ftCh_Slam_Coll(HSD_GObj* gobj);
/* 15A7B8 */ void ftCh_Fail_Anim(HSD_GObj* gobj);
/* 15A820 */ void ftCh_Fail_IASA(HSD_GObj* gobj);
/* 15A864 */ void ftCh_Fail_Phys(HSD_GObj* gobj);
/* 15A884 */ void ftCh_Fail_Coll(HSD_GObj* gobj);
/* 15A8D4 */ void ftCh_TagCrush_Anim(HSD_GObj* gobj);
/* 15A910 */ void ftCh_TagCrush_IASA(HSD_GObj* gobj);
/* 15A954 */ void ftCh_TagCrush_Phys(HSD_GObj* gobj);
/* 15A974 */ void ftCh_TagCrush_Coll(HSD_GObj* gobj);
/* 15A978 */ void ftCh_TagApplaud_Anim(HSD_GObj* gobj);
/* 15AA00 */ void ftCh_TagApplaud_IASA(HSD_GObj* gobj);
/* 15AA44 */ void ftCh_TagApplaud_Phys(HSD_GObj* gobj);
/* 15AAA4 */ void ftCh_TagApplaud_Coll(HSD_GObj* gobj);
/* 15AB04 */ void ftCh_TagRockPaper_Anim(HSD_GObj* gobj);
/* 15AB84 */ void ftCh_TagRockPaper_IASA(HSD_GObj* gobj);
/* 15ABC8 */ void ftCh_TagRockPaper_Phys(HSD_GObj* gobj);
/* 15ABCC */ void ftCh_TagRockPaper_Coll(HSD_GObj* gobj);
/* 15ACD0 */ void ftCh_FingerGun2_Anim(HSD_GObj* gobj);
/* 15AD28 */ void ftCh_FingerGun2_IASA(HSD_GObj* gobj);
/* 15AD6C */ void ftCh_FingerGun2_Phys(HSD_GObj* gobj);
/* 15ADCC */ void ftCh_FingerGun2_Coll(HSD_GObj* gobj);
/* 15AF04 */ void ftCh_TagGrab_Anim(HSD_GObj* gobj);
/* 15B000 */ void ftCh_TagSqueeze_Anim(HSD_GObj* gobj);
/* 15B0FC */ void ftCh_TagGrab_IASA(HSD_GObj* gobj);
/* 15B140 */ void ftCh_TagGrab_Phys(HSD_GObj* gobj);
/* 15B170 */ void ftCh_TagGrab_Coll(HSD_GObj* gobj);
/* 15B22C */ void ftCh_TagFail_Anim(HSD_GObj* gobj);
/* 15B274 */ void ftCh_TagFail_IASA(HSD_GObj* gobj);
/* 15B2B8 */ void ftCh_TagFail_Phys(HSD_GObj* gobj);
/* 15B2BC */ void ftCh_TagFail_Coll(HSD_GObj* gobj);
/* 15B660 */ void ftCo_CaptureCrazyHand_Anim(HSD_GObj* gobj);
/* 15B664 */ void ftCo_CaptureCrazyHand_IASA(HSD_GObj* gobj);
/* 15B668 */ void ftCo_CaptureCrazyHand_Phys(HSD_GObj* gobj);
/* 15B66C */ void ftCo_CaptureCrazyHand_Coll(HSD_GObj* gobj);
/* 15B704 */ void ftCo_CaptureDamageCrazyHand_Anim(HSD_GObj* gobj);
/* 15B76C */ void ftCo_CaptureDamageCrazyHand_IASA(HSD_GObj* gobj);
/* 15B770 */ void ftCo_CaptureDamageCrazyHand_Phys(HSD_GObj* gobj);
/* 15B774 */ void ftCo_CaptureDamageCrazyHand_Coll(HSD_GObj* gobj);
/* 15B840 */ void ftCo_CaptureWaitCrazyHand_Anim(HSD_GObj* gobj);
/* 15B844 */ void ftCo_CaptureWaitCrazyHand_IASA(HSD_GObj* gobj);
/* 15B848 */ void ftCo_CaptureWaitCrazyHand_Phys(HSD_GObj* gobj);
/* 15B84C */ void ftCo_CaptureWaitCrazyHand_Coll(HSD_GObj* gobj);
/* 15B8EC */ void ftCo_ThrownCrazyHand_Anim(HSD_GObj* gobj);
/* 15B8F0 */ void ftCo_ThrownCrazyHand_IASA(HSD_GObj* gobj);
/* 15B8F4 */ void ftCo_ThrownCrazyHand_Phys(HSD_GObj* gobj);
/* 15B8F8 */ void ftCo_ThrownCrazyHand_Coll(HSD_GObj* gobj);
/* 15BB70 */ void ftCh_TagCancel_Anim(HSD_GObj* gobj);
/* 15BBD8 */ void ftCh_TagCancel_Phys(HSD_GObj* gobj);
/* 15BC38 */ void ftCh_TagCancel_Coll(HSD_GObj* gobj);
/* 15BC88 */ void ftCh_GrabUnk1_8015BC88(HSD_GObj* gobj);
/* 3D41F8 */ extern MotionState ftCh_Init_MotionStateTable[ftCh_MS_SelfCount];
/* 3D4818 */ extern char ftCh_Init_DatFilename[];
/* 3D4824 */ extern char ftCh_Init_DataName[];
/* 3D485C */ extern char ftCh_Init_AnimDatFilename[];
/* 3D4868 */ extern Fighter_CostumeStrings ftCh_Init_CostumeStrings[];
#define MELEE_FT_CHARA_FTCRAZYHAND_TYPES_H
typedef struct _ftCrazyHandAttributes {
s32 x0;
s32 x4;
s32 x8;
s32 xC;
s32 x10;
float x14;
float x18;
float x1C;
s32 x20;
s32 x24;
float x28;
float x2C;
Vec2 x30_pos2;
float x38;
float x3C;
Vec3 x40_pos;
float x4C;
Vec2 x50;
float x58;
float x5C;
float x60;
float x64;
float x68;
s32 x6C;
s32 x70;
s32 x74;
float x78;
s32 x7C;
float x80;
s32 x84;
Vec2 x88_pos;
s32 x90;
s32 x94;
float x98;
float x9C;
s32 xA0;
float xA4;
Vec2 xA8_pos;
s32 xB0;
s32 xB4;
float xB8;
Vec2 xBC_pos;
Vec2 xC4_pos;
Vec2 xCC_pos;
float xD4;
float xD8;
float xDC;
float xE0;
float xE4;
float xE8;
s32 xEC;
s32 xF0;
float xF4;
float xF8;
float xFC;
float x100;
float x104;
float x108;
float x10C;
Vec2 x110_pos;
Vec2 x118_pos;
float x120;
Vec2 x124_pos;
Vec2 x12C_pos;
Vec2 x134_pos;
Vec2 x13C_pos;
} ftCrazyHandAttributes;
#define MELEE_FT_CHARA_FTDONKEY_FORWARD_H
static MotionFlags const ftDk_MF_Special =
ftCo_MF_Special | Ft_MF_SkipModel | Ft_MF_KeepSfx | Ft_MF_SkipItemVis |
Ft_MF_UnkUpdatePhys | Ft_MF_FreezeState;
static MotionFlags const ftDk_MF_SpecialN =
ftDk_MF_Special | Ft_MF_KeepFastFall;
static MotionFlags const ftDk_MF_SpecialS = ftDk_MF_Special | Ft_MF_KeepGfx;
static MotionFlags const ftDk_MF_SpecialHi =
ftDk_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftDk_MF_SpecialLwStart =
ftDk_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftDk_MF_SpecialAirN =
ftDk_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipParasol;
static MotionFlags const ftDk_MF_SpecialAirS =
ftDk_MF_Special | Ft_MF_KeepGfx | Ft_MF_SkipParasol;
static MotionFlags const ftDk_MF_SpecialAirHi =
ftDk_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_SkipParasol;
static MotionFlags const ftDk_MF_MS_386 =
ftDk_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipParasol;
static MotionFlags const ftDk_MF_SpecialLw =
ftDk_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_Unk19;
static MotionFlags const ftDk_MF_MS_350 =
Ft_MF_KeepSwordTrail | Ft_MF_Unk19 | Ft_MF_SkipModelPartVis;
static MotionFlags const ftDk_MF_Cargo =
Ft_MF_SkipModel | Ft_MF_SkipAnimVel | Ft_MF_FreezeState | Ft_MF_SkipMetalB;
static MotionFlags const ftDk_MF_CargoThrow =
ftDk_MF_Cargo | Ft_MF_SkipHit | Ft_MF_SkipItemVis;
static MotionFlags const ftDk_MF_CargoThrowF =
ftDk_MF_CargoThrow | Ft_MF_KeepFastFall;
static MotionFlags const ftDk_MF_CargoThrowB =
ftDk_MF_CargoThrow | Ft_MF_KeepGfx;
static MotionFlags const ftDk_MF_CargoThrowHi =
ftDk_MF_CargoThrow | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftDk_MF_CargoThrowLw =
ftDk_MF_CargoThrow | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftDk_MF_CargoWait =
ftDk_MF_Cargo | Ft_MF_KeepFastFall | Ft_MF_KeepColAnimHitStatus |
Ft_MF_Unk19;
static MotionFlags const ftDk_MF_CargoTurn =
ftDk_MF_CargoWait | Ft_MF_KeepAccessory;
static MotionFlags const ftDk_MF_CargoWalk =
ftDk_MF_CargoWait | Ft_MF_UpdateCmd;
static MotionFlags const ftDk_MF_CargoJump =
ftDk_MF_CargoWait | Ft_MF_SkipNametagVis;
static MotionFlags const ftDk_MF_MS_360 =
ftDk_MF_CargoWait | Ft_MF_KeepSwordTrail;
static MotionFlags const ftDk_MF_MS_341 = Ft_MF_Unk19 | Ft_MF_SkipModelPartVis;
static MotionFlags const ftDk_MF_Move_53 =
ftDk_MF_MS_341 | Ft_MF_SkipAnimVel | Ft_MF_Unk06;
static MotionFlags const ftDk_MF_MS_342_Base =
ftDk_MF_Move_53 | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftDk_MF_MS_342 =
ftDk_MF_MS_342_Base | Ft_MF_KeepGfx | Ft_MF_UpdateCmd;
static MotionFlags const ftDk_MF_MS_345 =
ftDk_MF_MS_342_Base | Ft_MF_KeepAccessory;
static MotionFlags const ftDk_MF_MS_348 = ftDk_MF_Move_53 |
Ft_MF_KeepFastFall | Ft_MF_SkipHit |
Ft_MF_SkipNametagVis;
typedef enum ftDk_MotionState {
ftDk_MS_HeavyWait = ftCo_MS_Count,
ftDk_MS_HeavyWalkSlow,
ftDk_MS_HeavyWalkMiddle,
ftDk_MS_HeavyWalkFast,
ftDk_MS_HeavyTurn,
ftDk_MS_HeavyKneebend,
ftDk_MS_HeavyFall,
ftDk_MS_HeavyJump,
ftDk_MS_HeavyLanding,
ftDk_MS_HeavyWait2,
ftDk_MS_ThrowFWait0,
ftDk_MS_ThrowFWalkSlow,
ftDk_MS_ThrowFWalkMiddle,
ftDk_MS_ThrowFWalkFast,
ftDk_MS_ThrowFTurn,
ftDk_MS_ThrowFKneebend,
ftDk_MS_ThrowFFall,
ftDk_MS_ThrowFJump,
ftDk_MS_ThrowFLanding,
ftDk_MS_ThrowFWait2,
ftDk_MS_ThrowFF,
ftDk_MS_ThrowFB,
ftDk_MS_ThrowFHi,
ftDk_MS_ThrowFLw,
ftDk_MS_ThrowAirFF,
ftDk_MS_ThrowAirFB,
ftDk_MS_ThrowAirFHi,
ftDk_MS_ThrowAirFLw,
ftDk_MS_SpecialNStart,
ftDk_MS_SpecialNLoop,
ftDk_MS_SpecialNCancel,
ftDk_MS_SpecialN,
ftDk_MS_SpecialNFull,
ftDk_MS_SpecialAirNStart,
ftDk_MS_SpecialAirNLoop,
ftDk_MS_SpecialAirNCancel,
ftDk_MS_SpecialAirN,
ftDk_MS_SpecialAirNFull,
ftDk_MS_SpecialS,
ftDk_MS_SpecialAirS,
ftDk_MS_SpecialHi,
ftDk_MS_SpecialAirHi,
ftDk_MS_SpecialLwStart,
ftDk_MS_SpecialLwLoop,
ftDk_MS_SpecialLwEnd0,
ftDk_MS_SpecialLwEnd1,
ftDk_MS_Count,
ftDk_MS_SelfCount = ftDk_MS_Count - ftCo_MS_Count,
} ftDk_MotionState;
typedef enum ftDk_Submotion {
ftDk_SM_HeavyWait = ftCo_SM_Count,
ftDk_SM_HeavyWalkSlow,
ftDk_SM_HeavyWalkMiddle,
ftDk_SM_HeavyWalkFast,
ftDk_SM_HeavyTurn,
ftDk_SM_HeavyKneebend,
ftDk_SM_HeavyFall,
ftDk_SM_HeavyJump,
ftDk_SM_HeavyLanding,
ftDk_SM_HeavyWait2,
ftDk_SM_ThrowFWait0,
ftDk_SM_ThrowFWalkSlow,
ftDk_SM_ThrowFWalkMiddle,
ftDk_SM_ThrowFWalkFast,
ftDk_SM_ThrowFTurn,
ftDk_SM_ThrowFKneebend,
ftDk_SM_ThrowFFall,
ftDk_SM_ThrowFJump,
ftDk_SM_ThrowFLanding,
ftDk_SM_ThrowFWait2,
ftDk_SM_ThrowFF,
ftDk_SM_ThrowFB,
ftDk_SM_ThrowFHi,
ftDk_SM_ThrowFLw,
ftDk_SM_SpecialNStart,
ftDk_SM_SpecialNLoop,
ftDk_SM_SpecialNCancel,
ftDk_SM_SpecialN,
ftDk_SM_SpecialNFull,
ftDk_SM_SpecialAirNStart,
ftDk_SM_SpecialAirNLoop,
ftDk_SM_SpecialAirNCancel,
ftDk_SM_SpecialAirN,
ftDk_SM_SpecialAirNFull,
ftDk_SM_SpecialS,
ftDk_SM_SpecialAirS,
ftDk_SM_SpecialHi,
ftDk_SM_SpecialAirHi,
ftDk_SM_SpecialLwStart,
ftDk_SM_SpecialLwLoop,
ftDk_SM_SpecialLwEnd0,
ftDk_SM_SpecialLwEnd1,
ftDk_SM_Count,
ftDk_SM_SelfCount = ftDk_SM_Count - ftCo_SM_Count,
} ftDk_Submotion;
#define GALE01_0E030C
/* 0E030C */ void ftDk_HeavyFall_IASA(HSD_GObj* gobj);
/* 0E0330 */ void ftDk_HeavyFall_Phys(HSD_GObj* gobj);
/* 0E0350 */ void ftDk_HeavyFall_Coll(HSD_GObj* gobj);
/* 0E0378 */ bool ftDk_MS_347_800E0378(HSD_GObj* gobj);
/* 0E03C0 */ void ftDk_MS_347_800E03C0(HSD_GObj* gobj);
#define GALE01_0E0440
/* 0E0440 */ void ftDk_HeavyJump_IASA(HSD_GObj* gobj);
/* 0E0464 */ void ftDk_HeavyJump_Phys(HSD_GObj* gobj);
/* 0E0484 */ void ftDk_HeavyJump_Coll(HSD_GObj* gobj);
/* 0E04A4 */ void ftDk_MS_348_800E04A4(HSD_GObj* gobj, s32 arg1);
/* 0E0518 */ void ftDk_HeavyWait1_Anim(HSD_GObj* gobj);
#define GALE01_0E0698
/* 0E0698 */ void ftDk_HeavyLanding_Phys(HSD_GObj* gobj);
/* 0E06B8 */ void ftDk_HeavyLanding_Coll(HSD_GObj* gobj);
/* 0E06D8 */ void ftDk_MS_349_800E06D8(HSD_GObj* gobj);
/* 0E07E4 */ void ftDk_HeavyWait2_Anim(HSD_GObj* gobj);
/* 0E0848 */ void ftDk_HeavyWait2_Phys(HSD_GObj* gobj);
/* 0E0868 */ void ftDk_HeavyWait2_Coll(HSD_GObj* gobj);
#define GALE01_0E01BC
/* 0E01BC */ void ftDk_HeavyTurn_Anim(HSD_GObj* gobj);
/* 0E0200 */ void ftDk_HeavyTurn_IASA(HSD_GObj* gobj);
/* 0E0254 */ void ftDk_HeavyTurn_Phys(HSD_GObj* gobj);
/* 0E0274 */ void ftDk_HeavyTurn_Coll(HSD_GObj* gobj);
/* 0E0294 */ void ftDk_MS_345_800E0294(HSD_GObj* gobj);
#define GALE01_0DF938
/* 0DF938 */ bool ftDk_MS_341_800DF938(HSD_GObj* gobj);
/* 0DF980 */ void ftDk_MS_341_800DF980(HSD_GObj* gobj);
/* 0DF9F0 */ void ftDk_HeavyWait0_IASA(HSD_GObj* gobj);
/* 0DFA50 */ void ftDk_HeavyWait0_Phys(HSD_GObj* gobj);
/* 0DFA70 */ void ftDk_HeavyWait0_Coll(HSD_GObj* gobj);
/* 0DFA98 */ bool ftDk_MS_341_800DFA98(HSD_GObj* gobj);
/* 0DFAE4 */ void ftDk_MS_341_800DFAE4(HSD_GObj* gobj, float);
#define GALE01_0E0568
/* 0E0568 */ void ftDk_HeavyWait1_IASA(HSD_GObj* gobj);
/* 0E05A4 */ void ftDk_HeavyWait1_Phys(HSD_GObj* gobj);
/* 0E05C4 */ void ftDk_HeavyWait1_Coll(HSD_GObj* gobj);
/* 0E05E4 */ void ftDk_MS_346_800E05E4(HSD_GObj* gobj);
/* 0E0648 */ void ftDk_HeavyLanding_Anim(HSD_GObj* gobj);
#define GALE01_0DFB34
/* 0DFB34 */ void ftDk_HeavyWalk_Anim(HSD_GObj* gobj);
/* 0DFB54 */ void ftDk_HeavyWalk_IASA(HSD_GObj* gobj);
/* 0DFBB8 */ void ftDk_HeavyWalk_Phys(HSD_GObj* gobj);
/* 0DFBD8 */ void ftDk_HeavyWalk_Coll(HSD_GObj* gobj);
#define GALE01_10D740
/* 10D740 */ void ftDk_Init_OnDeath(HSD_GObj* gobj);
/* 10D774 */ void ftDk_Init_8010D774(HSD_GObj* gobj);
/* 10D7A8 */ void ftDk_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 10D888 */ void ftDk_Init_OnItemInvisible(HSD_GObj* gobj);
/* 10D8D0 */ void ftDk_Init_OnItemVisible(HSD_GObj* gobj);
/* 10D918 */ void ftDk_Init_OnItemDrop(HSD_GObj* gobj, bool bool1);
/* 10D96C */ void ftDk_Init_UnkMotionStates4(HSD_GObj* gobj);
/* 10D9AC */ void ftDk_Init_OnLoad(HSD_GObj* gobj);
/* 10DA74 */ void ftDk_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 10DAB4 */ void ftDk_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 10DAF8 */ void ftDk_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 10DB3C */ void ftDk_Init_8010DB3C(HSD_GObj* gobj);
/* 3CB838 */ extern MotionState ftDk_Init_MotionStateTable[ftDk_MS_SelfCount];
/* 3CBDF8 */ extern Fighter_CostumeStrings ftDk_Init_CostumeStrings[];
/* 3CBE04 */ extern char ftDk_Init_DatFilename[];
/* 3CBF88 */ extern char ftDk_Init_AnimDatFilename[];
/* 3CC010 */ extern Fighter_DemoStrings ftDk_Init_DemoMotionFilenames;
/* 3CC020 */ extern char ftDk_Init_DataName[];
#define GALE01_0E0134
/* 0E0134 */ bool ftDk_MS_345_800E0134(HSD_GObj* gobj);
#define GALE01_10FB1C
/* 10FB1C */ void ftDk_SpecialHi_Enter(HSD_GObj* gobj);
/* 10FBFC */ void ftDk_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 10FCD4 */ void ftDk_SpecialHi_Anim(HSD_GObj* gobj);
/* 10FD10 */ void ftDk_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 10FD9C */ void ftDk_SpecialHi_IASA(HSD_GObj* gobj);
/* 10FDA0 */ void ftDk_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 10FDA4 */ void ftDk_SpecialHi_Phys(HSD_GObj* gobj);
/* 10FDEC */ void ftDk_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 10FE60 */ void ftDk_SpecialHi_Coll(HSD_GObj* gobj);
/* 10FF14 */ void ftDk_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 110074 */ void ftDk_SpecialHi_DestroyAllEffects(HSD_GObj* gobj);
#define GALE01_10DC80
/* 10DC80 */ void ftDk_SpecialLw_Enter(HSD_GObj* gobj);
/* 10DCD8 */ void ftDk_SpecialLwStart_Anim(HSD_GObj* gobj);
/* 10DD14 */ void ftDk_SpecialLwStart_IASA(HSD_GObj* gobj);
/* 10DD18 */ void ftDk_SpecialLwStart_Phys(HSD_GObj* gobj);
/* 10DD38 */ void ftDk_SpecialLwStart_Coll(HSD_GObj* gobj);
/* 10DD74 */ void ftDk_SpecialLwLoop_Anim(HSD_GObj* gobj);
/* 10DDDC */ void ftDk_SpecialLwLoop_IASA(HSD_GObj* gobj);
/* 10DDF8 */ void ftDk_SpecialLwLoop_Phys(HSD_GObj* gobj);
/* 10DE18 */ void ftDk_SpecialLwLoop_Coll(HSD_GObj* gobj);
/* 10DF5C */ void ftDk_SpecialLwEnd0_Anim(HSD_GObj* gobj);
/* 10DF98 */ void ftDk_SpecialLwEnd0_IASA(HSD_GObj* gobj);
/* 10DF9C */ void ftDk_SpecialLwEnd0_Phys(HSD_GObj* gobj);
/* 10DFBC */ void ftDk_SpecialLwEnd0_Coll(HSD_GObj* gobj);
/* 10E030 */ void ftDk_SpecialLwEnd1_Anim(HSD_GObj* gobj);
/* 10E06C */ void ftDk_SpecialLwEnd1_IASA(HSD_GObj* gobj);
/* 10E070 */ void ftDk_SpecialLwEnd1_Phys(HSD_GObj* gobj);
/* 10E090 */ void ftDk_SpecialLwEnd1_Coll(HSD_GObj* gobj);
/* 10E0CC */ void ftDk_SpecialLw_8010E0CC(HSD_GObj* gobj);
/* 10E148 */ void ftDk_SpecialLw_8010E148(HSD_GObj* gobj);
#define GALE01_10E574
/* 10E574 */ void ftDk_SpecialN_Enter(HSD_GObj* gobj);
/* 10E69C */ void ftDk_SpecialAirN_Enter(HSD_GObj* gobj);
/* 10E7B4 */ void ftDk_SpecialNStart_Anim(HSD_GObj* gobj);
/* 10E840 */ void ftDk_SpecialNLoop_Anim(HSD_GObj* gobj);
/* 10E8E0 */ void ftDk_SpecialNCancel_Anim(HSD_GObj* gobj);
/* 10E930 */ void ftDk_SpecialN_Anim(HSD_GObj* gobj);
/* 10EB0C */ void ftDk_SpecialNFull_Anim(HSD_GObj* gobj);
/* 10EC5C */ void ftDk_SpecialAirNStart_Anim(HSD_GObj* gobj);
/* 10ECE8 */ void ftDk_SpecialAirNLoop_Anim(HSD_GObj* gobj);
/* 10ED88 */ void ftDk_SpecialAirNCancel_Anim(HSD_GObj* gobj);
/* 10EDD8 */ void ftDk_SpecialAirN_Anim(HSD_GObj* gobj);
/* 10EF7C */ void ftDk_SpecialAirNFull_Anim(HSD_GObj* gobj);
/* 10F094 */ void ftDk_SpecialNStart_IASA(HSD_GObj* gobj);
/* 10F098 */ void ftDk_SpecialNLoop_IASA(HSD_GObj* gobj);
/* 10F1D8 */ void ftDk_SpecialNCancel_IASA(HSD_GObj* gobj);
/* 10F1DC */ void ftDk_SpecialN_IASA(HSD_GObj* gobj);
/* 10F1E0 */ void ftDk_SpecialNFull_IASA(HSD_GObj* gobj);
/* 10F1E4 */ void ftDk_SpecialAirNStart_IASA(HSD_GObj* gobj);
/* 10F1E8 */ void ftDk_SpecialAirNLoop_IASA(HSD_GObj* gobj);
/* 10F31C */ void ftDk_SpecialAirNCancel_IASA(HSD_GObj* gobj);
/* 10F320 */ void ftDk_SpecialAirN_IASA(HSD_GObj* gobj);
/* 10F324 */ void ftDk_SpecialAirNFull_IASA(HSD_GObj* gobj);
/* 10F328 */ void ftDk_SpecialNStart_Phys(HSD_GObj* gobj);
/* 10F348 */ void ftDk_SpecialNLoop_Phys(HSD_GObj* gobj);
/* 10F368 */ void ftDk_SpecialNCancel_Phys(HSD_GObj* gobj);
/* 10F388 */ void ftDk_SpecialN_Phys(HSD_GObj* gobj);
/* 10F3A8 */ void ftDk_SpecialNFull_Phys(HSD_GObj* gobj);
/* 10F3C8 */ void ftDk_SpecialAirNStart_Phys(HSD_GObj* gobj);
/* 10F3E8 */ void ftDk_SpecialAirNLoop_Phys(HSD_GObj* gobj);
/* 10F408 */ void ftDk_SpecialAirNCancel_Phys(HSD_GObj* gobj);
/* 10F428 */ void ftDk_SpecialAirN_Phys(HSD_GObj* gobj);
/* 10F448 */ void ftDk_SpecialAirNFull_Phys(HSD_GObj* gobj);
/* 10F468 */ void ftDk_SpecialNStart_Coll(HSD_GObj* gobj);
/* 10F50C */ void ftDk_SpecialNLoop_Coll(HSD_GObj* gobj);
/* 10F5B0 */ void ftDk_SpecialNCancel_Coll(HSD_GObj* gobj);
/* 10F654 */ void ftDk_SpecialN_Coll(HSD_GObj* gobj);
/* 10F6F8 */ void ftDk_SpecialNFull_Coll(HSD_GObj* gobj);
/* 10F79C */ void ftDk_SpecialAirNStart_Coll(HSD_GObj* gobj);
/* 10F840 */ void ftDk_SpecialAirNLoop_Coll(HSD_GObj* gobj);
/* 10F8E4 */ void ftDk_SpecialAirNCancel_Coll(HSD_GObj* gobj);
/* 10F988 */ void ftDk_SpecialAirN_Coll(HSD_GObj* gobj);
/* 10FA2C */ void ftDk_SpecialAirNFull_Coll(HSD_GObj* gobj);
/* 10FAD0 */ void ftDk_SpecialN_DestroyAllEffects(HSD_GObj* gobj);
/* 10FAF0 */ void ftDk_SpecialN_DestroyAllEffectsPlus(HSD_GObj* gobj);
#define GALE01_10E1C4
/* 10E1C4 */ void ftDk_SpecialS_Enter(HSD_GObj* gobj);
/* 10E234 */ void ftDk_SpecialAirS_Enter(HSD_GObj* gobj);
/* 10E2BC */ void ftDk_SpecialS_Anim(HSD_GObj* gobj);
/* 10E2F8 */ void ftDk_SpecialAirS_Anim(HSD_GObj* gobj);
/* 10E334 */ void ftDk_SpecialS_IASA(HSD_GObj* gobj);
/* 10E338 */ void ftDk_SpecialAirS_IASA(HSD_GObj* gobj);
/* 10E33C */ void ftDk_SpecialS_Phys(HSD_GObj* gobj);
/* 10E35C */ void ftDk_SpecialAirS_Phys(HSD_GObj* gobj);
/* 10E3BC */ void ftDk_SpecialS_Coll(HSD_GObj* gobj);
/* 10E428 */ void ftDk_SpecialAirS_Coll(HSD_GObj* gobj);
#define MELEE_FT_CHARA_FTDRMARIO_FORWARD_H
static MotionFlags const ftDr_MF_Appeal =
Ft_MF_KeepFastFall | Ft_MF_SkipModel | Ft_MF_SkipAnimVel | Ft_MF_Unk06;
#define GALE01_149954
/* 149954 */ void ftDr_AppealS_Anim(HSD_GObj* gobj);
/* 149A6C */ void ftDr_AppealS_IASA(HSD_GObj* gobj);
/* 149A8C */ void ftDr_AppealS_Phys(HSD_GObj* gobj);
/* 149AAC */ void ftDr_AppealS_Coll(HSD_GObj* gobj);
#define GALE01_14949C
/* 14949C */ void ftDr_Init_OnDeath(HSD_GObj* gobj);
/* 1494E4 */ void ftDr_Init_OnLoad(HSD_GObj* gobj);
/* 149540 */ void ftDr_Init_80149540(HSD_GObj* gobj);
/* 149560 */ void ftDr_Init_OnItemPickup(HSD_GObj* gobj, bool);
/* 149640 */ void ftDr_Init_OnItemInvisible(HSD_GObj* gobj);
/* 149688 */ void ftDr_Init_OnItemVisible(HSD_GObj* gobj);
/* 1496D0 */ void ftDr_Init_OnItemDrop(HSD_GObj* gobj, bool);
/* 149724 */ void ftDr_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 149744 */ void ftDr_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 149788 */ void ftDr_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 1497CC */ void ftDr_Init_801497CC(HSD_GObj* gobj);
/* 149844 */ bool ftDr_Init_80149844(HSD_GObj* gobj);
/* 1498A0 */ void ftDr_Init_801498A0(HSD_GObj* gobj);
/* 1498EC */ u32 ftDr_Init_801498EC(HSD_GObj* gobj);
/* 149910 */ void ftDr_Init_80149910(HSD_GObj* gobj);
/* 3D1498 */ extern MotionState ftDr_Init_MotionStateTable[ftMr_MS_SelfCount];
/* 3D15D8 */ extern Fighter_CostumeStrings ftDr_Init_CostumeStrings[];
/* 3D15E4 */ extern char ftDr_Init_DatFilename[];
/* 3D1770 */ extern char ftDr_Init_AnimDatFilename[];
/* 3D17FC */ extern Fighter_DemoStrings ftDr_Init_DemoMotionFilenames;
/* 3D180C */ extern char ftDr_Init_DataName[];
#define MELEE_FT_CHARA_FTDRMARIO_TYPES_H
typedef struct _ftDrMarioAttributes {
u8 pad_x0[4];
u32 x4;
u8 pad_x8[4];
u32 xC;
u8 pad_x10[4];
u32 x14;
} ftDrMarioAttributes;
#define GALE01_14EEF8
#define MELEE_FT_CHARA_FTMARS_FORWARD_H
static MotionFlags const ftMs_MF_Special =
Ft_MF_SkipModel | Ft_MF_KeepSfx | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftMs_MF_SpecialN =
ftMs_MF_Special | Ft_MF_KeepFastFall;
static MotionFlags const ftMs_MF_SpecialS = ftMs_MF_Special | Ft_MF_KeepGfx;
static MotionFlags const ftMs_MF_SpecialHi =
ftMs_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftMs_MF_SpecialLw =
ftMs_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftMs_MF_SpecialAirN =
ftMs_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipParasol;
static MotionFlags const ftMs_MF_SpecialS1 =
ftMs_MF_Special | Ft_MF_KeepGfx | Ft_MF_SkipParasol;
static MotionFlags const ftMs_MF_SpecialAirHi =
ftMs_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftMs_MF_SpecialAirLw =
ftMs_MF_SpecialLw | Ft_MF_SkipParasol;
typedef enum ftMars_MotionState {
ftMs_MS_SpecialNStart = ftCo_MS_Count,
ftMs_MS_SpecialNLoop,
ftMs_MS_SpecialNEnd0,
ftMs_MS_SpecialNEnd1,
ftMs_MS_SpecialAirNStart,
ftMs_MS_SpecialAirNLoop,
ftMs_MS_SpecialAirNEnd0,
ftMs_MS_SpecialAirNEnd1,
ftMs_MS_SpecialS1,
ftMs_MS_SpecialS2Hi,
ftMs_MS_SpecialS2Lw,
ftMs_MS_SpecialS3Hi,
ftMs_MS_SpecialS3S,
ftMs_MS_SpecialS3Lw,
ftMs_MS_SpecialS4Hi,
ftMs_MS_SpecialS4S,
ftMs_MS_SpecialS4Lw,
ftMs_MS_SpecialAirS1,
ftMs_MS_SpecialAirS2Hi,
ftMs_MS_SpecialAirS2Lw,
ftMs_MS_SpecialAirS3Hi,
ftMs_MS_SpecialAirS3S,
ftMs_MS_SpecialAirS3Lw,
ftMs_MS_SpecialAirS4Hi,
ftMs_MS_SpecialAirS4S,
ftMs_MS_SpecialAirS4Lw,
ftMs_MS_SpecialHi,
ftMs_MS_SpecialAirHi,
ftMs_MS_SpecialLw,
ftMs_MS_SpecialLwHit,
ftMs_MS_SpecialAirLw,
ftMs_MS_SpecialAirLwHit,
ftMs_MS_Count,
ftMs_MS_SelfCount = ftMs_MS_Count - ftCo_MS_Count,
} ftMars_MotionState;
typedef enum ftMs_Submotion {
ftMs_SM_SpecialNStart = ftCo_SM_Count,
ftMs_SM_SpecialNLoop,
ftMs_SM_SpecialNEnd0,
ftMs_SM_SpecialNEnd1,
ftMs_SM_SpecialAirNStart,
ftMs_SM_SpecialAirNLoop,
ftMs_SM_SpecialAirNEnd0,
ftMs_SM_SpecialAirNEnd1,
ftMs_SM_SpecialS1,
ftMs_SM_SpecialS2Hi,
ftMs_SM_SpecialS2Lw,
ftMs_SM_SpecialS3Hi,
ftMs_SM_SpecialS3S,
ftMs_SM_SpecialS3Lw,
ftMs_SM_SpecialS4Hi,
ftMs_SM_SpecialS4S,
ftMs_SM_SpecialS4Lw,
ftMs_SM_SpecialAirS1,
ftMs_SM_SpecialAirS2Hi,
ftMs_SM_SpecialAirS2Lw,
ftMs_SM_SpecialAirS3Hi,
ftMs_SM_SpecialAirS3S,
ftMs_SM_SpecialAirS3Lw,
ftMs_SM_SpecialAirS4Hi,
ftMs_SM_SpecialAirS4S,
ftMs_SM_SpecialAirS4Lw,
ftMs_SM_SpecialHi,
ftMs_SM_SpecialAirHi,
ftMs_SM_SpecialLw,
ftMs_SM_SpecialLwHit,
ftMs_SM_SpecialAirLw,
ftMs_SM_SpecialAirLwHit,
ftMs_SM_Count,
ftMs_SM_SelfCount = ftMs_SM_Count - ftCo_SM_Count,
} ftMs_Submotion;
/* 14EEF8 */ void ftFe_Init_OnDeath(HSD_GObj*);
/* 14EF60 */ void ftFe_Init_OnItemPickup(HSD_GObj*, bool);
/* 14F040 */ void ftFe_Init_OnItemInvisible(HSD_GObj*);
/* 14F088 */ void ftFe_Init_OnItemVisible(HSD_GObj*);
/* 14F0D0 */ void ftFe_Init_OnItemDrop(HSD_GObj*, bool);
/* 14F124 */ void ftFe_Init_OnLoad(HSD_GObj*);
/* 14F148 */ void ftFe_Init_LoadSpecialAttrs(HSD_GObj*);
/* 14F168 */ void ftFe_Init_OnKnockbackEnter(HSD_GObj*);
/* 14F1AC */ void ftFe_Init_OnKnockbackExit(HSD_GObj*);
/* 3D2E80 */ extern MotionState ftFe_Init_MotionStateTable[ftMs_MS_SelfCount];
/* 3D3280 */ extern Fighter_CostumeStrings ftFe_Init_CostumeStrings[];
/* 3D328C */ extern char ftFe_Init_DatFilename[];
/* 3D3410 */ extern char ftFe_Init_AnimDatFilename[];
/* 3D3498 */ extern Fighter_DemoStrings ftFe_Init_DemoMotionFilenames;
/* 3D34A8 */ extern char ftFe_Init_DataName[];
#define GALE01_149ACC
/* 149ACC */ void ftFc_Init_OnDeath(HSD_GObj*);
/* 149B00 */ void ftFc_Init_OnItemPickup(HSD_GObj*, bool flag);
/* 149BE0 */ void ftFc_Init_OnItemInvisible(HSD_GObj*);
/* 149C28 */ void ftFc_Init_OnItemVisible(HSD_GObj*);
/* 149C70 */ void ftFc_Init_OnItemDrop(HSD_GObj*, bool flag);
/* 149CC4 */ void ftFc_Init_OnLoad(HSD_GObj*);
/* 149D3C */ void ftFc_Init_LoadSpecialAttrs(HSD_GObj*);
/* 149D5C */ void ftFc_Init_OnKnockbackEnter(HSD_GObj*);
/* 149DC8 */ void ftFc_Init_OnKnockbackExit(HSD_GObj*);
/* 3D1848 */ extern MotionState ftFc_Init_MotionStateTable[ftFx_MS_SelfCount];
/* 3D1CA8 */ extern Fighter_CostumeStrings ftFc_Init_CostumeStrings[];
/* 3D1CB4 */ extern char ftFc_Init_DatFilename[];
/* 3D1DE8 */ extern char ftFc_Init_AnimDatFilename[];
/* 3D1E64 */ extern Fighter_DemoStrings ftFc_Init_DemoMotionFilenames;
/* 3D1E74 */ extern char ftFc_Init_DataName[];
#define GALE01_0E5970
/* 0E5970 */ bool ftFx_AppealS_CheckIfUsed(Fighter* fp);
/* 0E59BC */ bool ftFx_AppealS_CheckInput(HSD_GObj* gobj);
/* 0E5A90 */ void ftFx_AppealS_Enter(HSD_GObj* gobj);
/* 0E5B18 */ void ftFx_AppealS_Anim(HSD_GObj* gobj);
/* 0E5C38 */ void ftFx_AppealS_IASA(HSD_GObj* gobj);
/* 0E5C3C */ void ftFx_AppealS_Phys(HSD_GObj* gobj);
/* 0E5C5C */ void ftFx_AppealS_Coll(HSD_GObj* gobj);
#define GALE01_0E5534
/* 0E5534 */ bool ftFx_Init_800E5534(HSD_GObj* gobj);
/* 0E5554 */ void ftFx_Init_OnDeath(HSD_GObj* gobj);
/* 0E5588 */ void ftFx_Init_800E5588(HSD_GObj* gobj);
/* 0E55A8 */ void ftFx_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 0E5688 */ void ftFx_Init_OnItemInvisible(HSD_GObj* gobj);
/* 0E56D0 */ void ftFx_Init_OnItemVisible(HSD_GObj* gobj);
/* 0E5718 */ void ftFx_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 0E576C */ void ftFx_Init_OnLoadForFalco(Fighter* fp);
/* 0E57AC */ void ftFx_Init_OnLoad(HSD_GObj* gobj);
/* 0E5858 */ void ftFx_Init_LoadSpecialAttrs(HSD_GObj*);
/* 0E5898 */ void ftFx_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 0E5904 */ void ftFx_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3C7788 */ extern MotionState ftFx_Init_MotionStateTable[ftFx_MS_SelfCount];
/* 3C7BE8 */ extern char ftFx_Init_DatFilename[];
/* 3C7BF4 */ extern char ftFx_Init_DataName[];
/* 3C7D10 */ extern char ftFx_Init_AnimDatFilename[];
/* 3C7D8C */ extern Fighter_DemoStrings ftFx_Init_DemoMotionFilenames;
/* 3C7D9C */ extern Fighter_CostumeStrings ftFx_Init_CostumeStrings[];
#define GALE01_0E7100
/* 0E7100 */ void ftFx_SpecialHi_CreateLaunchGFX(HSD_GObj* gobj);
/* 0E719C */ void ftFx_SpecialHi_CreateChargeGFX(HSD_GObj* gobj);
/* 0E7238 */ void ftFx_SpecialHi_Enter(HSD_GObj* gobj);
/* 0E72C4 */ void ftFx_SpecialAirHiStart_Enter(HSD_GObj* gobj);
/* 0E7354 */ void ftFx_SpecialHiHold_Anim(HSD_GObj* gobj);
/* 0E73B4 */ void ftFx_SpecialHiHoldAir_Anim(HSD_GObj* gobj);
/* 0E7414 */ void ftFx_SpecialHiHold_IASA(HSD_GObj* gobj);
/* 0E7418 */ void ftFx_SpecialHiHoldAir_IASA(HSD_GObj* gobj);
/* 0E741C */ void ftFx_SpecialHiHold_Phys(HSD_GObj* gobj);
/* 0E743C */ void ftFx_SpecialHiHoldAir_Phys(HSD_GObj* gobj);
/* 0E74A8 */ void ftFx_SpecialHiHold_Coll(HSD_GObj* gobj);
/* 0E74E4 */ void ftFx_SpecialHiHoldAir_Coll(HSD_GObj* gobj);
/* 0E7554 */ void ftFx_SpecialHiHold_GroundToAir(HSD_GObj* gobj);
/* 0E75C0 */ void ftFx_SpecialHiHoldAir_AirToGround(HSD_GObj* gobj);
/* 0E7634 */ void ftFx_SpecialHi_Anim(HSD_GObj* gobj);
/* 0E7684 */ void ftFx_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 0E76D4 */ void ftFx_SpecialHi_IASA(HSD_GObj* gobj);
/* 0E76D8 */ void ftFx_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 0E76DC */ void ftFx_SpecialHi_Phys(HSD_GObj* gobj);
/* 0E7758 */ void ftFx_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 0E7800 */ void ftFx_SpecialHi_Coll(HSD_GObj* gobj);
/* 0E78B4 */ void ftFx_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 0E7A78 */ void ftFx_SpecialHi_GroundToAir(HSD_GObj* gobj);
/* 0E7AF4 */ void ftFx_SpecialAirHi_AirToGround(HSD_GObj* gobj);
/* 0E7C98 */ void ftFx_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 0E7E3C */ void ftFx_SpecialHiLanding_Anim(HSD_GObj* gobj);
/* 0E7E78 */ void ftFx_SpecialHiFall_Anim(HSD_GObj* gobj);
/* 0E7ED8 */ void ftFx_SpecialHiLanding_IASA(HSD_GObj* gobj);
/* 0E7EDC */ void ftFx_SpecialHiFall_IASA(HSD_GObj* gobj);
/* 0E7EE0 */ void ftFx_SpecialHiLanding_Phys(HSD_GObj* gobj);
/* 0E7F20 */ void ftFx_SpecialHiFall_Phys(HSD_GObj* gobj);
/* 0E7F40 */ void ftFx_SpecialHiLanding_Coll(HSD_GObj* gobj);
/* 0E7FA0 */ void ftFx_SpecialHiFall_Coll(HSD_GObj* gobj);
/* 0E7FF0 */ void ftFx_SpecialHiFall_Enter(HSD_GObj* gobj);
/* 0E8048 */ void ftFx_SpecialHiFall_AirToGround(HSD_GObj* gobj);
/* 0E80C0 */ void ftFx_SpecialHiLanding_GroundToAir(HSD_GObj* gobj);
/* 0E8124 */ void ftFx_SpecialHiBound_Anim(HSD_GObj* gobj);
/* 0E81FC */ void ftFx_SpecialHiBound_IASA(HSD_GObj* gobj);
/* 0E8200 */ void ftFx_SpecialHiBound_Phys(HSD_GObj* gobj);
/* 0E824C */ void ftFx_SpecialHiBound_Coll(HSD_GObj* gobj);
/* 0E82E4 */ void ftFx_SpecialHiBound_Enter(HSD_GObj* gobj);
#define GALE01_0E83E0
/* 0E83E0 */ void ftFx_SpecialLw_CreateLoopGFX(HSD_GObj* gobj);
/* 0E845C */ void ftFx_SpecialLw_CreateStartGFX(HSD_GObj* gobj);
/* 0E84D8 */ void ftFx_SpecialLw_CreateReflectGFX(HSD_GObj* gobj);
/* 0E8560 */ void ftFx_SpecialLw_Enter(HSD_GObj* gobj);
/* 0E85EC */ void ftFx_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 0E8694 */ void ftFx_SpecialLwStart_Anim(HSD_GObj* gobj);
/* 0E8720 */ void ftFx_SpecialAirLwStart_Anim(HSD_GObj* gobj);
/* 0E87AC */ void ftFx_SpecialLwStart_IASA(HSD_GObj* gobj);
/* 0E87D0 */ void ftFx_SpecialAirLwStart_IASA(HSD_GObj* gobj);
/* 0E87D4 */ bool ftFx_SpecialLwStart_CheckPass(HSD_GObj* gobj);
/* 0E881C */ void ftFx_SpecialLwStart_Pass(HSD_GObj* gobj);
/* 0E8864 */ void ftFx_SpecialLwStart_Phys(HSD_GObj* gobj);
/* 0E8884 */ void ftFx_SpecialAirLwStart_Phys(HSD_GObj* gobj);
/* 0E88E4 */ void ftFx_SpecialLwStart_Coll(HSD_GObj* gobj);
/* 0E8920 */ void ftFx_SpecialAirLwStart_Coll(HSD_GObj* gobj);
/* 0E895C */ void ftFx_SpecialLwStart_GroundToAir(HSD_GObj* gobj);
/* 0E89BC */ void ftFx_SpecialAirLwStart_AirToGround(HSD_GObj* gobj);
/* 0E8A24 */ void ftFx_SpecialLwLoop_Anim(HSD_GObj* gobj);
/* 0E8A9C */ void ftFx_SpecialAirLwLoop_Anim(HSD_GObj* gobj);
/* 0E8B14 */ void ftFx_SpecialLwLoop_IASA(HSD_GObj* gobj);
/* 0E8B64 */ void ftFx_SpecialAirLwLoop_IASA(HSD_GObj* gobj);
/* 0E8C34 */ void ftFx_SpecialLwLoop_Phys(HSD_GObj* gobj);
/* 0E8C68 */ void ftFx_SpecialAirLwLoop_Phys(HSD_GObj* gobj);
/* 0E8CDC */ void ftFx_SpecialLwLoop_Coll(HSD_GObj* gobj);
/* 0E8D18 */ void ftFx_SpecialAirLwLoop_Coll(HSD_GObj* gobj);
/* 0E8FDC */ void ftFx_SpecialLwTurn_Anim(HSD_GObj* gobj);
/* 0E90EC */ void ftFx_SpecialAirLwTurn_Anim(HSD_GObj* gobj);
/* 0E91FC */ void ftFx_SpecialLwTurn_IASA(HSD_GObj* gobj);
/* 0E9200 */ void ftFx_SpecialAirLwTurn_IASA(HSD_GObj* gobj);
/* 0E9204 */ void ftFx_SpecialLwTurn_Phys(HSD_GObj* gobj);
/* 0E9238 */ void ftFx_SpecialAirLwTurn_Phys(HSD_GObj* gobj);
/* 0E92AC */ void ftFx_SpecialLwTurn_Coll(HSD_GObj* gobj);
/* 0E92E8 */ void ftFx_SpecialAirLwTurn_Coll(HSD_GObj* gobj);
/* 0E9324 */ void ftFx_SpecialLwTurn_GroundToAir(HSD_GObj* gobj);
/* 0E93A4 */ void ftFx_SpecialAirLwTurn_GroundToAir(HSD_GObj* gobj);
/* 0E942C */ bool ftFx_SpecialLwTurn_Check(HSD_GObj* gobj);
/* 0E9564 */ bool ftFx_SpecialLwHit_Check(HSD_GObj* gobj);
/* 0E965C */ void ftFx_SpecialLwHit_Anim(HSD_GObj* gobj);
/* 0E97B4 */ void ftFx_SpecialAirLwHit_Anim(HSD_GObj* gobj);
/* 0E9844 */ void ftFx_SpecialLwHit_IASA(HSD_GObj* gobj);
/* 0E9848 */ void ftFx_SpecialAirLwHit_IASA(HSD_GObj* gobj);
/* 0E984C */ void ftFx_SpecialLwHit_Phys(HSD_GObj* gobj);
/* 0E9880 */ void ftFx_SpecialAirLwHit_Phys(HSD_GObj* gobj);
/* 0E98F4 */ void ftFx_SpecialLwHit_Coll(HSD_GObj* gobj);
/* 0E9930 */ void ftFx_SpecialAirLwHit_Coll(HSD_GObj* gobj);
/* 0E996C */ void ftFx_SpecialLwHit_GroundToAir(HSD_GObj* gobj);
/* 0E99D4 */ void ftFx_SpecialAirLwHit_AirToGround(HSD_GObj* gobj);
/* 0E9A44 */ void ftFx_SpecialLwHit_SetCall(HSD_GObj* gobj);
/* 0E9A68 */ void ftFx_SpecialLwHit_Enter(HSD_GObj* gobj);
/* 0E9B40 */ void ftFx_SpecialLwEnd_Anim(HSD_GObj* gobj);
/* 0E9B84 */ void ftFx_SpecialAirLwEnd_Anim(HSD_GObj* gobj);
/* 0E9BC8 */ void ftFx_SpecialLwEnd_IASA(HSD_GObj* gobj);
/* 0E9BCC */ void ftFx_SpecialAirLwEnd_IASA(HSD_GObj* gobj);
/* 0E9BD0 */ void ftFx_SpecialLwEnd_Phys(HSD_GObj* gobj);
/* 0E9BF0 */ void ftFx_SpecialAirLwEnd_Phys(HSD_GObj* gobj);
/* 0E9C50 */ void ftFx_SpecialLwEnd_Coll(HSD_GObj* gobj);
/* 0E9C8C */ void ftFx_SpecialAirLwEnd_Coll(HSD_GObj* gobj);
/* 0E9CC8 */ void ftFx_SpecialLwEnd_GroundToAir(HSD_GObj* gobj);
/* 0E9D24 */ void ftFx_SpecialAirLwEnd_AirToGround(HSD_GObj* gobj);
/* 0E9D88 */ void ftFx_SpecialLwEnd_Enter(HSD_GObj* gobj);
/* 0E9DC0 */ void ftFx_SpecialAirLwEnd_Enter(HSD_GObj* gobj);
#define GALE01_0E5CB0
/* 0E5CB0 */ void ftFx_SpecialN_FtGetHoldJoint(HSD_GObj* gobj, Vec3* pos);
/* 0E5D20 */ void ftFx_SpecialN_ItGetHoldJoint(HSD_GObj* gobj, Vec3* pos);
/* 0E5D90 */ void ftFx_SpecialN_OnChangeAction(HSD_GObj* gobj);
/* 0E5DC4 */ bool ftFx_SpecialN_CheckRemoveBlaster(HSD_GObj* gobj);
/* 0E5DE4 */ s32 ftFx_SpecialN_GetBlasterAction(HSD_GObj* gobj);
/* 0E5E38 */ bool ftFx_SpecialN_CheckBlasterAction(HSD_GObj* gobj);
/* 0E5E90 */ void ftFx_SpecialN_ClearBlaster(HSD_GObj* gobj);
/* 0E5EBC */ void ftFx_SpecialN_RemoveBlaster(HSD_GObj* gobj);
/* 0E5F28 */ void ftFx_SpecialN_CreateBlasterShot(HSD_GObj* gobj);
/* 0E608C */ void ftFx_SpecialN_Enter(HSD_GObj* gobj);
/* 0E61A8 */ void ftFx_SpecialAirN_Enter(HSD_GObj* gobj);
/* 0E62A4 */ void ftFx_SpecialNStart_Anim(HSD_GObj* gobj);
/* 0E6368 */ void ftFx_SpecialNLoop_Anim(HSD_GObj* gobj);
/* 0E65BC */ void ftFx_SpecialNEnd_Anim(HSD_GObj* gobj);
/* 0E667C */ void ftFx_SpecialAirNStart_Anim(HSD_GObj* gobj);
/* 0E6740 */ void ftFx_SpecialAirNLoop_Anim(HSD_GObj* gobj);
/* 0E69BC */ void ftFx_SpecialAirNEnd_Anim(HSD_GObj* gobj);
/* 0E6AB4 */ void ftFx_SpecialNStart_IASA(HSD_GObj* gobj);
/* 0E6ADC */ void ftFx_SpecialNLoop_IASA(HSD_GObj* gobj);
/* 0E6B04 */ void ftFx_SpecialNEnd_IASA(HSD_GObj* gobj);
/* 0E6B08 */ void ftFx_SpecialAirNStart_IASA(HSD_GObj* gobj);
/* 0E6B30 */ void ftFx_SpecialAirNLoop_IASA(HSD_GObj* gobj);
/* 0E6B58 */ void ftFx_SpecialAirNEnd_IASA(HSD_GObj* gobj);
/* 0E6B5C */ void ftFx_SpecialNStart_Phys(HSD_GObj* gobj);
/* 0E6B7C */ void ftFx_SpecialNLoop_Phys(HSD_GObj* gobj);
/* 0E6B9C */ void ftFx_SpecialNEnd_Phys(HSD_GObj* gobj);
/* 0E6BBC */ void ftFx_SpecialAirNStart_Phys(HSD_GObj* gobj);
/* 0E6BDC */ void ftFx_SpecialAirNLoop_Phys(HSD_GObj* gobj);
/* 0E6BFC */ void ftFx_SpecialAirNEnd_Phys(HSD_GObj* gobj);
/* 0E6C1C */ void ftFx_SpecialNStart_Coll(HSD_GObj* gobj);
/* 0E6C3C */ void ftFx_SpecialNLoop_Coll(HSD_GObj* gobj);
/* 0E6C5C */ void ftFx_SpecialNEnd_Coll(HSD_GObj* gobj);
/* 0E6C7C */ void ftFx_SpecialAirNStart_Coll(HSD_GObj* gobj);
/* 0E6C9C */ void ftFx_SpecialAirNLoop_Coll(HSD_GObj* gobj);
/* 0E6CBC */ void ftFx_SpecialAirNEnd_Coll(HSD_GObj* gobj);
/* 0E6CDC */ void ftFx_Throw_Anim(HSD_GObj* gobj);
#define GALE01_0E9DF8
/* 0E9DF8 */ void ftFx_SpecialS_CreateGFX(HSD_GObj* gobj);
/* 0E9E78 */ bool ftFx_SpecialS_CheckGhostRemove(HSD_GObj* gobj);
/* 0E9EA0 */ s32 ftFx_SpecialS_GetCmdVar2(HSD_GObj* gobj);
/* 0E9EAC */ void ftFx_SpecialS_CopyGhostPosIndexed(HSD_GObj* gobj, s32 index,
Vec3* ghostPos);
/* 0E9ED4 */ float ftFx_SpecialS_ReturnFloatVarIndexed(HSD_GObj* gobj,
s32 index);
/* 0E9EE8 */ void ftFx_SpecialSStart_Enter(HSD_GObj* gobj);
/* 0E9F6C */ void ftFx_SpecialAirSStart_Enter(HSD_GObj* gobj);
/* 0EA004 */ void ftFx_SpecialSStart_Anim(HSD_GObj* gobj);
/* 0EA040 */ void ftFx_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 0EA07C */ void ftFx_SpecialSStart_IASA(HSD_GObj* gobj);
/* 0EA080 */ void ftFx_SpecialAirSStart_IASA(HSD_GObj* gobj);
/* 0EA084 */ void ftFx_SpecialSStart_Phys(HSD_GObj* gobj);
/* 0EA0BC */ void ftFx_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 0EA128 */ void ftFx_SpecialSStart_Coll(HSD_GObj* gobj);
/* 0EA164 */ void ftFx_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 0EA1D4 */ void ftFx_SpecialSStart_GroundToAir(HSD_GObj* gobj);
/* 0EA234 */ void ftFx_SpecialAirSStart_AirToGround(HSD_GObj* gobj);
/* 0EA294 */ void ftFx_SpecialS_Anim(HSD_GObj* gobj);
/* 0EA344 */ void ftFx_SpecialAirS_Anim(HSD_GObj* gobj);
/* 0EA3F4 */ void ftFx_SpecialS_IASA(HSD_GObj* gobj);
/* 0EA438 */ void ftFx_SpecialAirS_IASA(HSD_GObj* gobj);
/* 0EA47C */ void ftFx_SpecialS_Phys(HSD_GObj* gobj);
/* 0EA534 */ void ftFx_SpecialAirS_Phys(HSD_GObj* gobj);
/* 0EA5EC */ void ftFx_SpecialS_Coll(HSD_GObj* gobj);
/* 0EA628 */ void ftFx_SpecialAirS_Coll(HSD_GObj* gobj);
/* 0EA698 */ void ftFx_SpecialS_GroundToAir(HSD_GObj* gobj);
/* 0EA700 */ void ftFx_SpecialAirS_AirToGround(HSD_GObj* gobj);
/* 0EA768 */ void ftFx_SpecialS_Enter(HSD_GObj* gobj);
/* 0EA838 */ void ftFx_SpecialAirS_Enter(HSD_GObj* gobj);
/* 0EA908 */ void ftFx_SpecialSEnd_Anim(HSD_GObj* gobj);
/* 0EA944 */ void ftFx_SpecialAirSEnd_Anim(HSD_GObj* gobj);
/* 0EA9A4 */ void ftFx_SpecialSEnd_IASA(HSD_GObj* gobj);
/* 0EA9A8 */ void ftFx_SpecialAirSEnd_IASA(HSD_GObj* gobj);
/* 0EA9AC */ void ftFx_SpecialSEnd_Phys(HSD_GObj* gobj);
/* 0EAA8C */ void ftFx_SpecialAirSEnd_Phys(HSD_GObj* gobj);
/* 0EAB90 */ void ftFx_SpecialSEnd_Coll(HSD_GObj* gobj);
/* 0EABCC */ void ftFx_SpecialAirSEnd_Coll(HSD_GObj* gobj);
/* 0EAC50 */ void ftFx_SpecialSEnd_Enter(HSD_GObj* gobj);
/* 0EACD8 */ void ftFx_SpecialAirSEnd_Enter(HSD_GObj* gobj);
/// @file
/// Neutral Attack - Greenhouse (Attack100Start/Loop/End)
#define GALE01_14C1E8
/* 14C1E8 */ void ftGw_Attack100Start_Enter(HSD_GObj* gobj);
/* 14C224 */ void ftGw_Attack100Start_Anim(HSD_GObj* gobj);
/* 14C260 */ void ftGw_Attack100Start_IASA(HSD_GObj* gobj);
/* 14C264 */ void ftGw_Attack100Start_Phys(HSD_GObj* gobj);
/* 14C284 */ void ftGw_Attack100Start_Coll(HSD_GObj* gobj);
/* 14C2B8 */ void ftGw_Attack100Loop_Enter(HSD_GObj* gobj);
/* 14C308 */ void ftGw_Attack100Loop_Anim(HSD_GObj* gobj);
/* 14C330 */ void ftGw_Attack100Loop_IASA(HSD_GObj* gobj);
/* 14C350 */ void ftGw_Attack100Loop_Phys(HSD_GObj* gobj);
/* 14C370 */ void ftGw_Attack100Loop_Coll(HSD_GObj* gobj);
/* 14C3A4 */ void ftGw_Attack100End_Enter(HSD_GObj* gobj);
/* 14C3F4 */ void ftGw_Attack100End_Anim(HSD_GObj* gobj);
/* 14C414 */ void ftGw_Attack100End_IASA(HSD_GObj* gobj);
/* 14C418 */ void ftGw_Attack100End_Phys(HSD_GObj* gobj);
/* 14C438 */ void ftGw_Attack100End_Coll(HSD_GObj* gobj);
/// @file
/// Neutral Attack - Greenhouse (Attack11)
#define GALE01_14BDB0
/* 14BDB0 */ void ftGw_Attack11_ItemGreenhouseSetup(HSD_GObj* gobj);
/* 14BE84 */ void ftGw_Attack11_DecideAction(HSD_GObj* gobj);
/* 14BF48 */ void ftGw_Attack11_ItemGreenhouseSetFlag(HSD_GObj* gobj);
/* 14BF7C */ void ftGw_Attack11_ItemGreenhouseRemove(HSD_GObj* gobj);
/* 14BFD4 */ void ftGw_Attack11_ItemGreenhouseEnterHitlag(HSD_GObj* gobj);
/* 14C004 */ void ftGw_Attack11_ItemGreenhouseExitHitlag(HSD_GObj* gobj);
/* 14C034 */ bool ftGw_Attack11_ItemGreenhouse_CheckAll(HSD_GObj* gobj);
/* 14C05C */ bool ftGw_Attack11_ItemGreenhouse_CheckAttack11(HSD_GObj* gobj);
/* 14C07C */ void ftGw_Attack11_Enter(HSD_GObj* gobj);
/* 14C138 */ void ftGw_Attack11_Anim(HSD_GObj* gobj);
/* 14C174 */ void ftGw_Attack11_IASA(HSD_GObj* gobj);
/* 14C194 */ void ftGw_Attack11_Phys(HSD_GObj* gobj);
/* 14C1B4 */ void ftGw_Attack11_Coll(HSD_GObj* gobj);
/// @file
/// Aerial Attacks (AttackAir)
#define GALE01_14AFC0
/* 14AFC0 */ void ftGw_AttackAirN_ItemParachuteSetup(HSD_GObj* gobj);
/* 14B074 */ void ftGw_AttackAirN_ItemParachuteOnLand(HSD_GObj* gobj);
/* 14B0F0 */ void ftGw_AttackAirN_ItemParachuteSetFlag(HSD_GObj* gobj);
/* 14B12C */ void ftGw_AttackAirN_ItemParachuteRemove(HSD_GObj* gobj);
/* 14B18C */ bool ftGw_AttackAirN_ItemCheckParachuteRemove(HSD_GObj* gobj);
/* 14B1B4 */ void ftGw_AttackAirN_ItemTurtleSetup(HSD_GObj* gobj);
/* 14B2E4 */ void ftGw_AttackAirN_ItemTurtleSetFlag(HSD_GObj* gobj);
/* 14B320 */ void ftGw_AttackAirN_ItemTurtleRemove(HSD_GObj* gobj);
/* 14B380 */ bool ftGw_AttackAirN_ItemCheckTurtleRemove(HSD_GObj* gobj);
/* 14B3A8 */ void ftGw_AttackAirN_ItemSparkySetup(HSD_GObj* gobj);
/* 14B45C */ void ftGw_AttackAirN_ItemSparkyOnLand(HSD_GObj* gobj);
/* 14B4D8 */ void ftGw_AttackAirN_ItemSparkySetFlag(HSD_GObj* gobj);
/* 14B514 */ void ftGw_AttackAirN_ItemSparkyRemove(HSD_GObj* gobj);
/* 14B574 */ void ftGw_AttackAirN_EnterItemHitlag(HSD_GObj* gobj);
/* 14B624 */ bool ftGw_AttackAirN_ItemCheckSparkyRemove(HSD_GObj* gobj);
/* 14B64C */ void ftGw_AttackAirN_DecideAction(HSD_GObj* gobj);
/* 14B6E4 */ void ftGw_AttackAirN_Enter(HSD_GObj* gobj);
/* 14B720 */ void ftGw_AttackAirN_Anim(HSD_GObj* gobj);
/* 14B740 */ void ftGw_AttackAirN_IASA(HSD_GObj* gobj);
/* 14B760 */ void ftGw_AttackAirN_Phys(HSD_GObj* gobj);
/* 14B780 */ void ftGw_AttackAirN_Coll(HSD_GObj* gobj);
/* 14B7A8 */ void ftGw_LandingAirN_Enter(HSD_GObj* gobj);
/* 14B87C */ void ftGw_AttackAirB_Anim(HSD_GObj* gobj);
/* 14B89C */ void ftGw_AttackAirB_IASA(HSD_GObj* gobj);
/* 14B8BC */ void ftGw_AttackAirB_Phys(HSD_GObj* gobj);
/* 14B8DC */ void ftGw_AttackAirB_Coll(HSD_GObj* gobj);
/* 14B904 */ void ftGw_LandingAirB_Enter(HSD_GObj* gobj);
/* 14B9D8 */ void ftGw_AttackAirHi_Anim(HSD_GObj* gobj);
/* 14B9F8 */ void ftGw_AttackAirHi_IASA(HSD_GObj* gobj);
/* 14BA18 */ void ftGw_AttackAirHi_Phys(HSD_GObj* gobj);
/* 14BA38 */ void ftGw_AttackAirHi_Coll(HSD_GObj* gobj);
/* 14BA60 */ void ftGw_LandingAirHi_Enter(HSD_GObj* gobj);
/* 14BB24 */ void ftGw_LandingAirN_Anim(HSD_GObj* gobj);
/* 14BB70 */ void ftGw_LandingAirN_IASA(HSD_GObj* gobj);
/* 14BB74 */ void ftGw_LandingAirN_Phys(HSD_GObj* gobj);
/* 14BB94 */ void ftGw_LandingAirN_Coll(HSD_GObj* gobj);
/* 14BBE0 */ void ftGw_LandingAirB_Init(HSD_GObj* gobj);
/* 14BC0C */ void ftGw_LandingAirB_Anim(HSD_GObj* gobj);
/* 14BC58 */ void ftGw_LandingAirB_IASA(HSD_GObj* gobj);
/* 14BC5C */ void ftGw_LandingAirB_Phys(HSD_GObj* gobj);
/* 14BC7C */ void ftGw_LandingAirB_Coll(HSD_GObj* gobj);
/* 14BCC8 */ void ftGw_LandingAirHi_Init(HSD_GObj* gobj);
/* 14BCF4 */ void ftGw_LandingAirHi_Anim(HSD_GObj* gobj);
/* 14BD40 */ void ftGw_LandingAirHi_IASA(HSD_GObj* gobj);
/* 14BD44 */ void ftGw_LandingAirHi_Phys(HSD_GObj* gobj);
/* 14BD64 */ void ftGw_LandingAirHi_Coll(HSD_GObj* gobj);
/// @file
/// Down Tilt (AttackLw3)
#define GALE01_14AB48
/* 14AB48 */ void ftGw_AttackLw3_ItemManholeSetup(HSD_GObj* gobj);
/* 14AC40 */ void ftGw_AttackLw3_ItemManholeRemove(HSD_GObj* gobj);
/* 14ACB0 */ void ftGw_AttackLw3_ItemManholeOnDamage(HSD_GObj* gobj);
/* 14AD98 */ bool ftGw_AttackLw3_ItemCheckManholeRemove(HSD_GObj* gobj);
/* 14ADB8 */ void ftGw_AttackLw3_Enter(HSD_GObj* gobj);
/* 14AE3C */ void ftGw_AttackLw3_Anim(HSD_GObj* gobj);
/* 14AE78 */ void ftGw_AttackLw3_IASA(HSD_GObj* gobj);
/* 14AF6C */ void ftGw_AttackLw3_Phys(HSD_GObj* gobj);
/* 14AF8C */ void ftGw_AttackLw3_Coll(HSD_GObj* gobj);
/// @file
/// Forward Smash (AttackS4)
#define GALE01_14A848
/* 14A848 */ void ftGw_ItemTorchSetup(HSD_GObj* gobj);
/* 14A904 */ void ftGw_AttackS4_ItemTorchSetFlag(HSD_GObj* gobj);
/* 14A938 */ void ftGw_AttackS4_ItemTorchOnDamage(HSD_GObj* gobj);
/* 14A990 */ void ftGw_AttackS4_ItemTorchEnterHitlag(HSD_GObj* gobj);
/* 14A9C0 */ void ftGw_AttackS4_ItemTorchExitHitlag(HSD_GObj* gobj);
/* 14A9F0 */ bool ftGw_AttackS4_ItemCheckTorchRemove(HSD_GObj* gobj);
/* 14AA10 */ void ftGw_AttackS4_Enter(HSD_GObj* gobj);
/* 14AA88 */ void ftGw_AttackS4_Anim(HSD_GObj* gobj);
/* 14AAC4 */ void ftGw_AttackS4_IASA(HSD_GObj* gobj);
/* 14AAF4 */ void ftGw_AttackS4_Phys(HSD_GObj* gobj);
/* 14AB14 */ void ftGw_AttackS4_Coll(HSD_GObj* gobj);
#define GALE01_14A250
/* 14A250 */ void ftGw_Init_OnDeath(HSD_GObj* gobj);
/* 14A37C */ void ftGw_Init_OnLoad(HSD_GObj* gobj);
/* 14A4CC */ void ftGw_Init_OnDamage(HSD_GObj* gobj);
/* 14A538 */ void ftGw_Init_8014A538(HSD_GObj* gobj);
/* 14A5B8 */ void ftGw_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 14A698 */ void ftGw_Init_OnItemInvisible(HSD_GObj* gobj);
/* 14A6E0 */ void ftGw_Init_OnItemVisible(HSD_GObj* gobj);
/* 14A728 */ void ftGw_Init_OnItemDrop(HSD_GObj* gobj, bool dropItemFlag);
/* 14A77C */ void ftGw_Init_UnkMotionStates4(HSD_GObj* gobj);
/* 14A7B4 */ void ftGameWatch_CopySpecialAttrs(HSD_GObj* gobj);
/* 14A7F4 */ void ftGw_Init_8014A7F4(HSD_GObj* gobj, ItemModStruct* item_mod);
/* 14A814 */ void ftGw_Init_8014A814(HSD_GObj* gobj, ItemModStruct* item_mod);
/* 14A828 */ void ftGw_Init_OnAbsorb(HSD_GObj* gobj);
/* 3D23E8 */ extern MotionState ftGw_Init_MotionStateTable[ftGw_MS_SelfCount];
/* 3D28E8 */ extern char ftGw_Init_DatFilename[];
/* 3D28F4 */ extern char ftGw_Init_DataName[];
/* 3D292C */ extern char ftGw_Init_AnimDatFilename[];
/* 3D29B8 */ extern Fighter_DemoStrings ftGw_Init_DemoMotionFilenames;
/* 3D29C8 */ extern Fighter_CostumeStrings ftGw_Init_CostumeStrings[];
/// @file
/// Up Special - Fire Rescue (SpeciialHi)
#define GALE01_14DEF0
/* 14DEF0 */ void ftGw_SpecialHi_ItemRescueSetup(HSD_GObj* gobj);
/* 14DFB8 */ bool ftGw_SpecialHi_ItemCheckRescueRemove(HSD_GObj* gobj);
/* 14DFE4 */ void ftGw_SpecialHi_ItemRescueSetNULL(HSD_GObj* gobj);
/* 14DFFC */ void ftGw_SpecialHi_ItemRescueRemove(HSD_GObj* gobj);
/* 14E0AC */ void ftGw_SpecialHi_Enter(HSD_GObj* gobj);
/* 14E158 */ void ftGw_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 14E1F8 */ void ftGw_SpecialHi_Anim(HSD_GObj* gobj);
/* 14E218 */ void ftGw_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 14E290 */ void ftGw_SpecialHi_IASA(HSD_GObj* gobj);
/* 14E2B0 */ void ftGw_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 14E374 */ void ftGw_SpecialHi_Phys(HSD_GObj* gobj);
/* 14E394 */ void ftGw_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 14E3B4 */ void ftGw_SpecialHi_Coll(HSD_GObj* gobj);
/* 14E3D4 */ void ftGw_SpecialAirHi_Coll(HSD_GObj* gobj);
/// @file Down Special - Oil Panic (SpecialLw)
#define GALE01_14CBF4
/* 14CBF4 */ void ftGw_SpecialLw_ItemPanicSetup(HSD_GObj* gobj);
/* 14CC9C */ void ftGw_SpecialLw_ItemPanicSetFlag(HSD_GObj* gobj);
/* 14CCD8 */ void ftGw_SpecialLw_ItemPanicRemove(HSD_GObj* gobj);
/* 14CD38 */ void ftGw_SpecialLw_ItemPanicEnterHitlag(HSD_GObj* gobj);
/* 14CD68 */ void ftGw_SpecialLw_ItemPanicExitHitlag(HSD_GObj* gobj);
/* 14CD98 */ bool ftGw_SpecialLw_ItemCheckPanicRemove(HSD_GObj* gobj);
/* 14CDC0 */ void ftGw_SpecialLw_UpdateBucketModel(HSD_GObj* gobj);
/* 14CEF0 */ void ftGw_SpecialLw_Enter(HSD_GObj* gobj);
/* 14CF78 */ void ftGw_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 14D014 */ void ftGw_SpecialLw_Anim(HSD_GObj* gobj);
/* 14D0E0 */ void ftGw_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 14D1AC */ void ftGw_SpecialLw_IASA(HSD_GObj* gobj);
/* 14D264 */ void ftGw_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 14D31C */ void ftGw_SpecialLw_Phys(HSD_GObj* gobj);
/* 14D350 */ void ftGw_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 14D3B4 */ void ftGw_SpecialLw_Coll(HSD_GObj* gobj);
/* 14D3F0 */ void ftGw_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 14D42C */ void ftGw_SpecialLw_GroundToAir(HSD_GObj* gobj);
/* 14D4DC */ void ftGw_SpecialAirLw_AirToGround(HSD_GObj* gobj);
/* 14D58C */ void ftGw_SpecialLw_UpdateAction(HSD_GObj* gobj, float animFrame);
/* 14D620 */ void ftGw_SpecialAirLw_UpdateAction(HSD_GObj* gobj,
float animFrame);
/* 14D6B4 */ void ftGw_SpecialLwCatch_Anim(HSD_GObj* gobj);
/* 14D774 */ void ftGw_SpecialAirLwCatch_Anim(HSD_GObj* gobj);
/* 14D834 */ void ftGw_SpecialLwCatch_IASA(HSD_GObj* gobj);
/* 14D838 */ void ftGw_SpecialAirLwCatch_IASA(HSD_GObj* gobj);
/* 14D83C */ void ftGw_SpecialLwCatch_Phys(HSD_GObj* gobj);
/* 14D85C */ void ftGw_SpecialAirLwCatch_Phys(HSD_GObj* gobj);
/* 14D87C */ void ftGw_SpecialLwCatch_Coll(HSD_GObj* gobj);
/* 14D8B8 */ void ftGw_SpecialAirLwCatch_Coll(HSD_GObj* gobj);
/* 14D8F4 */ void ftGw_SpecialLwCatch_GroundToAir(HSD_GObj* gobj);
/* 14D954 */ void ftGw_SpecialAirLwCatch_AirToGround(HSD_GObj* gobj);
/* 14D9B4 */ void ftGw_SpecialLw_AbsorbThink_DecideAction(HSD_GObj* gobj);
/* 14DA60 */ void ftGw_SpecialLwShoot_Anim(HSD_GObj* gobj);
/* 14DAF0 */ void ftGw_SpecialAirLwShoot_Anim(HSD_GObj* gobj);
/* 14DB80 */ void ftGw_SpecialLwShoot_IASA(HSD_GObj* gobj);
/* 14DB84 */ void ftGw_SpecialAirLwShoot_IASA(HSD_GObj* gobj);
/* 14DB88 */ void ftGw_SpecialLwShoot_Phys(HSD_GObj* gobj);
/* 14DBA8 */ void ftGw_SpecialAirLwShoot_Phys(HSD_GObj* gobj);
/* 14DBC8 */ void ftGw_SpecialLwShoot_Coll(HSD_GObj* gobj);
/* 14DC04 */ void ftGw_SpecialAirLwShoot_Coll(HSD_GObj* gobj);
/* 14DC40 */ void ftGw_SpecialLwShoot_GroundToAir(HSD_GObj* gobj);
/* 14DCB4 */ void ftGw_SpecialAirLwShoot_AirToGround(HSD_GObj* gobj);
/* 14DD28 */ void ftGw_SpecialLwShoot_ReleaseOil(HSD_GObj* gobj);
/* 14DE0C */ void ftGw_SpecialAirLwShoot_ReleaseOil(HSD_GObj* gobj);
/// @file
/// Neutral Special - Chef (SpecialN/)
#define GALE01_14E4F0
/* 14E4F0 */ void ftGw_SpecialN_Coll(HSD_GObj* gobj);
/* 14E644 */ void ftGw_SpecialN_Enter(HSD_GObj* gobj);
/* 14E6C0 */ void ftGw_SpecialAirN_Coll(HSD_GObj* gobj);
/* 14E73C */ void ftGw_SpecialAirN_Phys(HSD_GObj* gobj);
/* 14E7DC */ void ftGw_SpecialAirN_AirToGround(HSD_GObj* gobj);
/* 14E87C */ void ftGw_SpecialN_IASA(HSD_GObj* gobj);
/* 14E900 */ void ftGw_SpecialAirN_Enter(HSD_GObj* gobj);
/* 14E984 */ void ftGw_SpecialN_Phys(HSD_GObj* gobj);
/* 14E9A4 */ void ftGw_SpecialAirN_Loop(HSD_GObj* gobj, float anim_frame);
/* 14E9C4 */ void ftGw_SpecialN_Anim(HSD_GObj* gobj);
/* 14EA00 */ void ftGw_SpecialAirN_Anim(HSD_GObj* gobj);
/* 14EA3C */ void ftGw_SpecialN_GroundToAir(HSD_GObj* gobj);
/* 14EAAC */ void ftGw_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 14EB1C */ void ftGw_SpecialN_Loop(HSD_GObj* gobj, float anim_frame);
/* 14EB8C */ void ftGw_SpecialAirN_IASA(HSD_GObj* gobj);
/// @file
/// Side Special - Judgement (SpecialS)
#define GALE01_14C46C
/* 14C46C */ void ftGw_SpecialS_ItemJudgementSetup(HSD_GObj* gobj);
/* 14C590 */ void ftGw_SpecialS_ItemJudgementSetFlag(HSD_GObj* gobj);
/* 14C5CC */ void ftGw_SpecialS_ItemJudgementRemove(HSD_GObj* gobj);
/* 14C68C */ bool ftGw_SpecialS_ItemCheckJudgementRemove(HSD_GObj* gobj);
/* 14C6B4 */ int ftGw_SpecialS_GetRandomInt(HSD_GObj* gobj);
/* 14C7A0 */ void ftGw_SpecialS_Enter(HSD_GObj* gobj);
/* 14C828 */ void ftGw_SpecialAirS_Enter(HSD_GObj* gobj);
/* 14C8BC */ void ftGw_SpecialS_Anim(HSD_GObj* gobj);
/* 14C8F8 */ void ftGw_SpecialAirS_Anim(HSD_GObj* gobj);
/* 14C934 */ void ftGw_SpecialS_IASA(HSD_GObj* gobj);
/* 14C938 */ void ftGw_SpecialAirS_IASA(HSD_GObj* gobj);
/* 14C93C */ void ftGw_SpecialS_Phys(HSD_GObj* gobj);
/* 14C974 */ void ftGw_SpecialAirS_Phys(HSD_GObj* gobj);
/* 14CA10 */ void ftGw_SpecialS_Coll(HSD_GObj* gobj);
/* 14CA4C */ void ftGw_SpecialAirS_Coll(HSD_GObj* gobj);
#define GALE01_14EE40
/* 14EBFC */ void ftGn_Init_OnDeath(HSD_GObj* gobj);
/* 14EC58 */ void ftGn_Init_OnItemPickup(HSD_GObj* gobj, bool);
/* 14ED38 */ void ftGn_Init_OnItemInvisible(HSD_GObj* gobj);
/* 14ED80 */ void ftGn_Init_OnItemVisible(HSD_GObj* gobj);
/* 14EDC8 */ void ftGn_Init_OnItemDrop(HSD_GObj* gobj, bool);
/* 14EE1C */ void ftGn_Init_OnLoad(HSD_GObj* gobj);
/* 14EE40 */ void ftGn_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 14EE60 */ void ftGn_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 14EEAC */ void ftGn_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3D29F8 */ extern MotionState ftGn_Init_MotionStateTable[ftCa_MS_SelfCount];
/* 3D2CD8 */ extern char ftGn_Init_DatFilename[];
/* 3D2CE4 */ extern char ftGn_Init_DataName[];
/* 3D2DB4 */ extern char ftGn_Init_AnimDatFilename[];
/* 3D2E30 */ extern Fighter_DemoStrings ftGn_Init_DemoMotionFilenames;
/* 3D2E40 */ extern Fighter_CostumeStrings ftGn_Init_CostumeStrings[];
#define GALE01_14F640
#define MELEE_FT_CHARA_FTKOOPA_FORWARD_H
static MotionFlags const ftKp_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftKp_MF_SpecialN =
ftKp_MF_Special | Ft_MF_KeepFastFall;
static MotionFlags const ftKp_MF_SpecialS = ftKp_MF_Special | Ft_MF_KeepGfx;
static MotionFlags const ftKp_MF_SpecialHi =
ftKp_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftKp_MF_SpecialLwStart =
ftKp_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_KeepSfx;
static MotionFlags const ftKp_MF_SpecialNStart =
ftKp_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftKp_MF_SpecialAirS =
ftKp_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftKp_MF_SpecialAirHi =
ftKp_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftKp_MF_SpecialAirLw =
ftKp_MF_SpecialLwStart | Ft_MF_SkipParasol;
static MotionFlags const ftKp_MF_SpecialNLoop = ftKp_MF_SpecialN | Ft_MF_Unk19;
static MotionFlags const ftKp_MF_SpecialAirNLoop =
ftKp_MF_SpecialNLoop | Ft_MF_SkipParasol;
typedef enum ftKoopa_MotionState {
ftKp_MS_SpecialNStart = ftCo_MS_Count,
ftKp_MS_SpecialN,
ftKp_MS_SpecialNEnd,
ftKp_MS_SpecialAirNStart,
ftKp_MS_SpecialAirN,
ftKp_MS_SpecialAirNEnd,
ftKp_MS_SpecialSStart,
ftKp_MS_SpecialSHit0_0,
ftKp_MS_SpecialSHit1,
ftKp_MS_SpecialSHit0_1,
ftKp_MS_SpecialSEndF,
ftKp_MS_SpecialSEndB,
ftKp_MS_SpecialAirSStart,
ftKp_MS_SpecialAirSHit0_0,
ftKp_MS_SpecialAirSHit1,
ftKp_MS_SpecialAirSHit0_1,
ftKp_MS_SpecialAirSEndF,
ftKp_MS_SpecialAirSEndB,
ftKp_MS_SpecialHi,
ftKp_MS_SpecialAirHi,
ftKp_MS_SpecialLw,
ftKp_MS_SpecialAirLw,
ftKp_MS_SpecialLwLanding,
ftKp_MS_Count,
ftKp_MS_SelfCount = ftKp_MS_Count - ftCo_MS_Count,
} ftKoopa_MotionState;
typedef enum ftKp_Submotion {
ftKp_SM_SpecialNStart = ftCo_SM_Count,
ftKp_SM_SpecialN,
ftKp_SM_SpecialNEnd,
ftKp_SM_SpecialAirNStart,
ftKp_SM_SpecialAirN,
ftKp_SM_SpecialAirNEnd,
ftKp_SM_SpecialSStart,
ftKp_SM_SpecialSHit0,
ftKp_SM_SpecialSHit1,
ftKp_SM_SpecialSEndF,
ftKp_SM_SpecialSEndB,
ftKp_SM_SpecialAirSStart,
ftKp_SM_SpecialAirSHit0,
ftKp_SM_SpecialAirSHit1,
ftKp_SM_SpecialAirSEndF,
ftKp_SM_SpecialAirSEndB,
ftKp_SM_SpecialHi,
ftKp_SM_SpecialAirHi,
ftKp_SM_SpecialLw,
ftKp_SM_SpecialAirLw,
ftKp_SM_SpecialLwLanding,
ftKp_SM_Count,
ftKp_SM_SelfCount = ftKp_SM_Count - ftCo_SM_Count,
} ftKp_Submotion;
/* 14F640 */ void ftGk_Init_OnDeath(HSD_GObj*);
/* 14F698 */ void ftGk_Init_UnkMotionStates3(HSD_GObj*);
/* 14F6B8 */ void ftGk_Init_OnLoad(HSD_GObj*);
/* 14F720 */ void ftGk_Init_OnItemPickup(HSD_GObj*, bool);
/* 14F800 */ void ftGk_Init_OnItemInvisible(HSD_GObj*);
/* 14F848 */ void ftGk_Init_OnItemVisible(HSD_GObj*);
/* 14F890 */ void ftGk_Init_OnItemDrop(HSD_GObj*, bool);
/* 14F8E4 */ void ftGk_Init_LoadSpecialAttrs(HSD_GObj*);
/* 14F904 */ void ftGk_Init_OnKnockbackEnter(HSD_GObj*);
/* 14F948 */ void ftGk_Init_OnKnockbackExit(HSD_GObj*);
/* 14F98C */ void ftGk_Init_UnkDemoCallbacks0(int, int*, int*);
/* 14F9A4 */ char* ftGk_Init_GetMotionFileString(enum_t);
/* 3D35E8 */ extern MotionState ftGk_Init_MotionStateTable[ftKp_MS_SelfCount];
/* 3D38C8 */ extern MotionState ftGk_Init_UnkMotionStates0[];
/* 3D38E8 */ extern char ftGk_Init_DatFilename[];
/* 3D38F4 */ extern char ftGk_Init_DataName[];
/* 3D3948 */ extern char ftGk_Init_AnimDatFilename[];
/* 3D3954 */ extern Fighter_DemoStrings ftGk_Init_DemoMotionFilenames;
/* 3D3988 */ extern Fighter_CostumeStrings ftGk_Init_CostumeStrings[];
#define GALE01_0EE528
/* 0EE528 */ void ftKb_Init_800EE528(void);
/* 0EE5C0 */ void ftKb_Init_OnDeath(ftKb_GObj* gobj);
/* 0EE680 */ void ftKb_Init_OnLoad(ftKb_GObj* gobj);
/* 0EE74C */ void ftKb_Init_800EE74C(ftKb_GObj* gobj);
/* 0EE7B8 */ void ftKb_Init_800EE7B8(ftKb_GObj* gobj);
/* 0EE818 */ void ftKb_Init_UnkMotionStates4(ftKb_GObj* gobj);
/* 0EE914 */ void ftKb_Init_OnItemPickup(ftKb_GObj* gobj, bool flag);
/* 0EE9DC */ void ftKb_Init_OnItemInvisible(ftKb_GObj* gobj);
/* 0EEA24 */ void ftKb_Init_OnItemVisible(ftKb_GObj* gobj);
/* 0EEA6C */ void ftKb_Init_OnItemDrop(ftKb_GObj* gobj, bool);
/* 0EEAC0 */ void ftKb_Init_LoadSpecialAttrs(ftKb_GObj* gobj);
/* 0EEB00 */ void ftKb_Init_800EEB00(ftKb_GObj* gobj, void*);
/* 0EEB1C */ void ftKb_Init_800EEB1C(ftKb_GObj* gobj, void*);
/* 0EEB38 */ void ftKb_Init_OnKnockbackEnter(ftKb_GObj* gobj);
/* 0EEB7C */ void ftKb_Init_OnKnockbackExit(ftKb_GObj* gobj);
/* 0EEBC0 */ void ftKb_Init_UnkDemoCallbacks0(int, int*, int*);
/* 0EEBF8 */ char* ftKb_Init_GetMotionFileString(enum_t);
/* 0EEC34 */ void ftKb_SpecialN_800EEC34(ftKb_GObj* gobj);
/* 0EED50 */ void ftKb_SpecialN_800EED50(s32, s32);
/* 0EEE9C */ void ftKb_Init_UnkMotionStates5(ftKb_GObj* gobj);
/* 0EEEC4 */ void ftKb_SpecialN_800EEEC4(ftKb_GObj* gobj,
FighterKind victim_kind);
/* 0EEF04 */ void ftKb_UnkMtxFunc0(ftKb_GObj* gobj, int, Mtx);
/* 0EF028 */ M2C_UNK ftKb_Init_UnkMotionStates6(ftKb_GObj* gobj);
/* 0EF040 */ M2C_UNK ftKb_SpecialN_800EF040();
/* 0EF0E4 */ M2C_UNK ftKb_SpecialN_800EF0E4();
/* 0EF35C */ M2C_UNK ftKb_SpecialN_800EF35C();
/* 0EF438 */ M2C_UNK ftKb_SpecialN_800EF438();
/* 0EF69C */ M2C_UNK ftKb_SpecialN_800EF69C();
/* 0EF87C */ void ftKb_UnkIntBoolFunc0(Fighter*, int, bool);
/* 0EF9BC */ void ftKb_Init_UnkCallbackPairs0_0(ftKb_GObj* gobj);
/* 0EF9FC */ void ftKb_Init_UnkCallbackPairs0_1(ftKb_GObj* gobj);
/* 0EFA40 */ void ftKb_SpecialN_800EFA40(ftKb_GObj* gobj);
/* 0EFAF0 */ void ftKb_SpecialN_800EFAF0(ftKb_GObj* gobj);
/* 0EFB4C */ void ftKb_SpecialN_800EFB4C(ftKb_GObj* gobj);
/* 0EFBFC */ void ftKb_SpecialN_800EFBFC(ftKb_GObj* gobj);
/* 0EFC58 */ void ftKb_SpecialN_800EFC58(ftKb_GObj* gobj);
/* 0EFD08 */ void ftKb_SpecialN_800EFD08(ftKb_GObj* gobj);
/* 0EFD64 */ void ftKb_SpecialN_800EFD64(ftKb_GObj* gobj);
/* 0EFE1C */ void ftKb_SpecialN_800EFE1C(ftKb_GObj* gobj);
/* 0EFE80 */ void ftKb_SpecialN_800EFE80(ftKb_GObj* gobj);
/* 0EFF38 */ void ftKb_SpecialN_800EFF38(ftKb_GObj* gobj);
/* 0EFF9C */ void ftKb_SpecialN_800EFF9C(ftKb_GObj* gobj);
/* 0F0054 */ void ftKb_SpecialN_800F0054(ftKb_GObj* gobj);
/* 0F00B8 */ void ftKb_SpecialN_800F00B8(ftKb_GObj* gobj);
/* 0F0168 */ void ftKb_SpecialN_800F0168(ftKb_GObj* gobj);
/* 0F01C4 */ void ftKb_SpecialN_800F01C4(ftKb_GObj* gobj);
/* 0F0274 */ void ftKb_SpecialN_800F0274(ftKb_GObj* gobj);
/* 0F02D0 */ void ftKb_SpecialN_800F02D0(ftKb_GObj* gobj);
/* 0F0380 */ void ftKb_SpecialN_800F0380(ftKb_GObj* gobj);
/* 0F03DC */ void ftKb_SpecialN_800F03DC(ftKb_GObj* gobj);
/* 0F0494 */ void ftKb_SpecialN_800F0494(ftKb_GObj* gobj);
/* 0F04F8 */ void ftKb_SpecialN_800F04F8(ftKb_GObj* gobj);
/* 0F05A8 */ void ftKb_SpecialN_800F05A8(ftKb_GObj* gobj);
/* 0F0604 */ void ftKb_SpecialN_800F0604(ftKb_GObj* gobj);
/* 0F06B4 */ void ftKb_SpecialN_800F06B4(ftKb_GObj* gobj);
/* 0F0710 */ void ftKb_SpecialN_800F0710(ftKb_GObj* gobj);
/* 0F07C0 */ void ftKb_SpecialN_800F07C0(ftKb_GObj* gobj);
/* 0F081C */ void ftKb_SpecialN_800F081C(ftKb_GObj* gobj);
/* 0F08D4 */ void ftKb_SpecialN_800F08D4(ftKb_GObj* gobj);
/* 0F0938 */ void ftKb_SpecialN_800F0938(ftKb_GObj* gobj);
/* 0F09F0 */ void ftKb_SpecialN_800F09F0(ftKb_GObj* gobj);
/* 0F0A54 */ void ftKb_SpecialN_800F0A54(ftKb_GObj* gobj);
/* 0F0B0C */ void ftKb_SpecialN_800F0B0C(ftKb_GObj* gobj);
/* 0F0B70 */ void ftKb_SpecialN_800F0B70(ftKb_GObj* gobj);
/* 0F0C20 */ void ftKb_SpecialN_800F0C20(ftKb_GObj* gobj);
/* 0F0C7C */ void ftKb_SpecialN_800F0C7C(ftKb_GObj* gobj);
/* 0F0D34 */ void ftKb_SpecialN_800F0D34(ftKb_GObj* gobj);
/* 0F0D98 */ void ftKb_SpecialN_800F0D98(ftKb_GObj* gobj);
/* 0F0E48 */ void ftKb_SpecialN_800F0E48(ftKb_GObj* gobj);
/* 0F0EA4 */ void ftKb_SpecialN_800F0EA4(ftKb_GObj* gobj);
/* 0F0F5C */ void ftKb_SpecialN_800F0F5C(ftKb_GObj* gobj);
/* 0F0FC0 */ void ftKb_SpecialN_800F0FC0(ftKb_GObj* gobj);
/* 0F10A4 */ void ftKb_SpecialN_800F10A4(ftKb_GObj* gobj);
/* 0F10D4 */ void ftKb_SpecialN_800F10D4(ftKb_GObj* gobj);
/* 0F11AC */ void ftKb_SpecialN_800F11AC(ftKb_GObj* gobj);
/* 0F11F0 */ void ftKb_SpecialN_800F11F0(ftKb_GObj* gobj);
/* 0F12C8 */ void ftKb_SpecialN_800F12C8(ftKb_GObj* gobj);
/* 0F130C */ void ftKb_SpecialN_800F130C(ftKb_GObj* gobj);
/* 0F13F0 */ void ftKb_SpecialN_800F13F0(ftKb_GObj* gobj);
/* 0F1420 */ void ftKb_SpecialN_800F1420(ftKb_GObj* gobj);
/* 0F14B4 */ void ftKb_SpecialN_800F14B4(ftKb_GObj* gobj);
/* 0F15D8 */ void ftKb_SpecialN_800F15D8(ftKb_GObj* gobj);
/* 0F1630 */ void ftKb_SpecialN_Enter(ftKb_GObj* gobj);
/* 0F1680 */ void ftKb_SpecialAirN_Enter(ftKb_GObj* gobj);
/* 0F16D0 */ M2C_UNK ftKb_SpecialN_800F16D0();
/* 0F190C */ void ftKb_SpecialN_800F190C(ftCo_GObj* gobj,
FighterKind victim_kind);
/* 0F19AC */ void ftKb_SpecialN_800F19AC(ftKb_GObj* gobj);
/* 0F1A8C */ void ftKb_SpecialN_800F1A8C(ftKb_GObj* gobj);
/* 0F1B6C */ void ftKb_Init_UnkMotionStates3(ftKb_GObj* gobj);
/* 0F1BAC */ void ftKb_SpecialN_800F1BAC(ftKb_GObj* gobj, s32, bool);
/* 0F1CD8 */ M2C_UNK ftKb_SpecialN_800F1CD8();
/* 0F1D24 */ void ftKb_SpecialN_800F1D24(ftKb_GObj* gobj);
/* 0F1DAC */ M2C_UNK ftKb_SpecialN_800F1DAC();
/* 0F1F1C */ void ftKb_SpecialN_800F1F1C(ftCo_GObj* gobj, Vec3*);
/* 0F1F68 */ void ftKb_SpecialN_800F1F68(ftKb_GObj* gobj);
/* 0F203C */ void ftKb_AttackDash_Anim(ftKb_GObj* gobj);
/* 0F205C */ void ftKb_AttackDash_IASA(ftKb_GObj* gobj);
/* 0F207C */ void ftKb_AttackDash_Phys(ftKb_GObj* gobj);
/* 0F209C */ void ftKb_AttackDash_Coll(ftKb_GObj* gobj);
/* 0F2124 */ void ftKb_AttackDashAir_Anim(ftKb_GObj* gobj);
/* 0F2160 */ void ftKb_AttackDashAir_IASA(ftKb_GObj* gobj);
/* 0F2164 */ void ftKb_AttackDashAir_Phys(ftKb_GObj* gobj);
/* 0F2198 */ void ftKb_AttackDashAir_Coll(ftKb_GObj* gobj);
/* 0F21C0 */ void ftKb_AttackDashAir_800F21C0(ftKb_GObj* gobj);
/* 0F22D4 */ void ftKb_AttackDashAir_800F22D4(ftKb_GObj* gobj);
/* 0F2300 */ void ftKb_SpecialHi_Enter(ftKb_GObj* gobj);
/* 0F23B8 */ void ftKb_SpecialAirHi_Enter(ftKb_GObj* gobj);
/* 0F2470 */ void ftKb_SpecialHi1_Anim(ftKb_GObj* gobj);
/* 0F24F8 */ void ftKb_SpecialHi2_Anim(ftKb_GObj* gobj);
/* 0F2578 */ void ftKb_SpecialHi3_Anim(ftKb_GObj* gobj);
/* 0F257C */ void ftKb_SpecialHi4_Anim(ftKb_GObj* gobj);
/* 0F25EC */ void ftKb_SpecialAirHi1_Anim(ftKb_GObj* gobj);
/* 0F266C */ void ftKb_SpecialAirHi2_Anim(ftKb_GObj* gobj);
/* 0F26E4 */ void ftKb_SpecialAirHi3_Anim(ftKb_GObj* gobj);
/* 0F26E8 */ void ftKb_SpecialAirHiEnd_Anim(ftKb_GObj* gobj);
/* 0F2758 */ void ftKb_SpecialHi1_IASA(ftKb_GObj* gobj);
/* 0F2828 */ void ftKb_SpecialHi2_IASA(ftKb_GObj* gobj);
/* 0F282C */ void ftKb_SpecialHi3_IASA(ftKb_GObj* gobj);
/* 0F2830 */ void ftKb_SpecialHi4_IASA(ftKb_GObj* gobj);
/* 0F2834 */ void ftKb_SpecialAirHi1_IASA(ftKb_GObj* gobj);
/* 0F2904 */ void ftKb_SpecialAirHi2_IASA(ftKb_GObj* gobj);
/* 0F2908 */ void ftKb_SpecialAirHi3_IASA(ftKb_GObj* gobj);
/* 0F290C */ void ftKb_SpecialAirHiEnd_IASA(ftKb_GObj* gobj);
/* 0F2910 */ void ftKb_SpecialHi1_Phys(ftKb_GObj* gobj);
/* 0F2984 */ void ftKb_SpecialHi2_Phys(ftKb_GObj* gobj);
/* 0F29F8 */ void ftKb_SpecialHi3_Phys(ftKb_GObj* gobj);
/* 0F2A48 */ void ftKb_SpecialHi4_Phys(ftKb_GObj* gobj);
/* 0F2A68 */ void ftKb_SpecialAirHi1_Phys(ftKb_GObj* gobj);
/* 0F2AE4 */ void ftKb_SpecialAirHi2_Phys(ftKb_GObj* gobj);
/* 0F2B60 */ void ftKb_SpecialAirHi3_Phys(ftKb_GObj* gobj);
/* 0F2B9C */ void ftKb_SpecialAirHiEnd_Phys(ftKb_GObj* gobj);
/* 0F2BBC */ void ftKb_SpecialHi1_Coll(ftKb_GObj* gobj);
/* 0F2C5C */ void ftKb_SpecialHi2_Coll(ftKb_GObj* gobj);
/* 0F2D98 */ void ftKb_SpecialHi3_Coll(ftKb_GObj* gobj);
/* 0F2EA0 */ void ftKb_SpecialHi4_Coll(ftKb_GObj* gobj);
/* 0F2F70 */ void ftKb_SpecialAirHi1_Coll(ftKb_GObj* gobj);
/* 0F3004 */ void ftKb_SpecialAirHi2_Coll(ftKb_GObj* gobj);
/* 0F3140 */ void ftKb_SpecialAirHi3_Coll(ftKb_GObj* gobj);
/* 0F3248 */ void ftKb_SpecialAirHiEnd_Coll(ftKb_GObj* gobj);
/* 0F331C */ M2C_UNK ftKb_SpecialHi_800F331C();
/* 0F346C */ M2C_UNK ftKb_SpecialHi_800F346C();
/* 0F3570 */ M2C_UNK ftKb_SpecialHi_800F3570();
/* 0F36DC */ M2C_UNK ftKb_SpecialHi_800F36DC();
/* 0F37EC */ M2C_UNK ftKb_SpecialHi_800F37EC();
/* 0F3B28 */ M2C_UNK ftKb_SpecialHi_800F3B28();
/* 0F3D50 */ void ftKb_SpecialLw_Enter(ftKb_GObj* gobj);
/* 0F3E68 */ void ftKb_SpecialAirLw_Enter(ftKb_GObj* gobj);
/* 0F3F80 */ void ftKb_SpecialLw1_Anim(ftKb_GObj* gobj);
/* 0F402C */ void ftKb_SpecialLw_Anim(ftKb_GObj* gobj);
/* 0F4074 */ void ftKb_SpecialLwEnd_Anim(ftKb_GObj* gobj);
/* 0F412C */ void ftKb_SpecialAirLwStart_Anim(ftKb_GObj* gobj);
/* 0F41D8 */ void ftKb_SpecialAirLw_Anim(ftKb_GObj* gobj);
/* 0F4220 */ void ftKb_SpecialAirLwEnd_Anim(ftKb_GObj* gobj);
/* 0F42D8 */ void ftKb_SpecialLw1_IASA(ftKb_GObj* gobj);
/* 0F42DC */ void ftKb_SpecialLw_IASA(ftKb_GObj* gobj);
/* 0F43FC */ void ftKb_SpecialLwEnd_IASA(ftKb_GObj* gobj);
/* 0F4400 */ void ftKb_SpecialAirLwStart_IASA(ftKb_GObj* gobj);
/* 0F4404 */ void ftKb_SpecialAirLw_IASA(ftKb_GObj* gobj);
/* 0F4518 */ void ftKb_SpecialAirLwEnd_IASA(ftKb_GObj* gobj);
/* 0F451C */ void ftKb_SpecialLw1_Phys(ftKb_GObj* gobj);
/* 0F453C */ void ftKb_SpecialLw_Phys(ftKb_GObj* gobj);
/* 0F4584 */ void ftKb_SpecialLwEnd_Phys(ftKb_GObj* gobj);
/* 0F45A4 */ void ftKb_SpecialAirLwStart_Phys(ftKb_GObj* gobj);
/* 0F45C4 */ void ftKb_SpecialAirLw_Phys(ftKb_GObj* gobj);
/* 0F4608 */ void ftKb_SpecialAirLwEnd_Phys(ftKb_GObj* gobj);
/* 0F4628 */ void ftKb_SpecialLw1_Coll(ftKb_GObj* gobj);
/* 0F4800 */ void ftKb_SpecialLw_Coll(ftKb_GObj* gobj);
/* 0F49E4 */ void ftKb_SpecialLwEnd_Coll(ftKb_GObj* gobj);
/* 0F4B3C */ void ftKb_SpecialAirLwStart_Coll(ftKb_GObj* gobj);
/* 0F4E78 */ void ftKb_SpecialAirLw_Coll(ftKb_GObj* gobj);
/* 0F51C0 */ void ftKb_SpecialAirLwEnd_Coll(ftKb_GObj* gobj);
/* 0F5318 */ void ftKb_SpecialAirLw_800F5318(ftKb_GObj* gobj);
/* 0F539C */ void ftKb_SpecialAirLw_800F539C(ftKb_GObj* gobj);
/* 0F5524 */ void ftKb_SpecialAirLw_800F5524(ftKb_GObj* gobj);
/* 0F5564 */ void ftKb_SpecialS_Enter(ftKb_GObj* gobj);
/* 0F55D0 */ void ftKb_SpecialAirS_Enter(ftKb_GObj* gobj);
/* 0F5660 */ void ftKb_SpecialS_Anim(ftKb_GObj* gobj);
/* 0F569C */ void ftKb_SpecialAirS_Anim(ftKb_GObj* gobj);
/* 0F56D8 */ void ftKb_SpecialS_Phys(ftKb_GObj* gobj);
/* 0F56F8 */ void ftKb_SpecialAirS_Phys(ftKb_GObj* gobj);
/* 0F5718 */ void ftKb_SpecialS_Coll(ftKb_GObj* gobj);
/* 0F5778 */ void ftKb_SpecialAirS_Coll(ftKb_GObj* gobj);
/* 0F5800 */ M2C_UNK ftKb_SpecialN_800F5800();
/* 0F5820 */ void ftKb_SpecialN_800F5820(ftKb_GObj* gobj,
ftCollisionBox* victim_coll_box,
float victim_scale_x);
/* 0F5874 */ void ftKb_SpecialN_800F5874(Vec2* arg0);
/* 0F5898 */ HSD_Joint* ftKb_SpecialN_800F5898(ftKb_GObj* gobj, int);
/* 0F58AC */ float ftKb_SpecialN_800F58AC(ftKb_GObj* gobj,
Vec3* victim_self_vel,
float victim_facing_dir);
/* 0F58D8 */ float ftKb_SpecialN_800F58D8(ftKb_GObj* gobj,
Vec3* victim_self_vel,
float victim_facing_dir);
/* 0F5954 */ void ftKb_SpecialN_800F5954(ftKb_GObj* gobj);
/* 0F597C */ bool ftKb_SpecialN_800F597C(ftKb_GObj* gobj);
/* 0F598C */ void ftKb_SpecialN_800F598C(ftKb_GObj* gobj, int arg1);
/* 0F5A04 */ void ftKb_SpecialN_800F5A04(ftKb_GObj* gobj);
/* 0F5A38 */ bool ftKb_SpecialN_800F5A38(ftKb_GObj* gobj,
ftCo_Fighter* victim_fp);
/* 0F5A60 */ float ftKb_SpecialN_800F5A60(ftKb_GObj* gobj);
/* 0F5A70 */ float ftKb_SpecialN_800F5A70(void);
/* 0F5A88 */ float ftKb_SpecialN_800F5A88(ftKb_GObj* gobj);
/* 0F5A98 */ float ftKb_SpecialN_800F5A98(void);
/* 0F5AB0 */ float ftKb_SpecialN_800F5AB0(ftKb_GObj* gobj);
/* 0F5AC0 */ float ftKb_SpecialN_800F5AC0(void);
/* 0F5AD8 */ float ftKb_SpecialN_800F5AD8(void);
/* 0F5AF0 */ float ftKb_SpecialN_800F5AF0(ftKb_GObj* gobj);
/* 0F5B00 */ float ftKb_SpecialN_800F5B00(ftKb_GObj* gobj);
/* 0F5B10 */ float ftKb_SpecialN_800F5B10(ftKb_GObj* gobj);
/* 0F5B20 */ M2C_UNK ftKb_SpecialN_800F5B20(ftKb_GObj* gobj);
/* 0F5B3C */ float ftKb_SpecialN_800F5B3C(ftKb_GObj* gobj);
/* 0F5B4C */ float ftKb_SpecialN_800F5B4C(ftKb_GObj* gobj);
/* 0F5B5C */ void ftKb_SpecialN_800F5B5C(ftKb_GObj* gobj);
/* 0F5BA4 */ void ftKb_SpecialN_800F5BA4(Fighter* fp);
/* 0F5C34 */ void ftKb_SpecialN_800F5C34(Fighter* fp);
/* 0F5D04 */ void ftKb_SpecialN_800F5D04(ftKb_GObj* gobj, bool);
/* 0F5DE8 */ void ftKb_SpecialN_800F5DE8(ftKb_GObj* gobj);
/* 0F5EA8 */ void ftKb_SpecialN_800F5EA8(ftKb_GObj* gobj);
/* 0F5F68 */ void ftKb_SpecialN_800F5F68(ftKb_GObj* gobj);
/* 0F6070 */ void ftKb_SpecialN_800F6070(ftKb_GObj* gobj);
/* 0F6388 */ void ftKb_SpecialN_800F6388(ftKb_GObj* gobj);
/* 0F63EC */ void ftKb_SpecialN_800F63EC(ftKb_GObj* gobj);
/* 0F6BB0 */ void ftKb_SpecialS_800F6BB0(ftKb_GObj* gobj);
/* 0F70A0 */ void ftKb_SpecialN_Anim(ftKb_GObj* gobj);
/* 0F71CC */ void ftKb_SpecialAirN_Anim(ftKb_GObj* gobj);
/* 0F72F8 */ void ftKb_SpecialNLoop_Anim(ftKb_GObj* gobj);
/* 0F72FC */ void ftKb_SpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 0F7300 */ void ftKb_SpecialNEnd_Anim(ftKb_GObj* gobj);
/* 0F733C */ void ftKb_SpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 0F7378 */ void ftKb_SpecialNCapture0_Anim(ftKb_GObj* gobj);
/* 0F7498 */ void ftKb_SpecialNCapture_Anim(ftKb_GObj* gobj);
/* 0F75B8 */ void ftKb_SpecialNCapture1_Anim(ftKb_GObj* gobj);
/* 0F75D8 */ void ftKb_SpecialAirNCapture_Anim(ftKb_GObj* gobj);
/* 0F75F8 */ void ftKb_Eat_Anim(ftKb_GObj* gobj);
/* 0F7674 */ void ftKb_SpecialAirNCaptured_Anim(ftKb_GObj* gobj);
/* 0F76F8 */ void ftKb_EatWait_Anim(ftKb_GObj* gobj);
/* 0F76FC */ void ftKb_SpecialAirNCaptureWait_Anim(ftKb_GObj* gobj);
/* 0F7700 */ void ftKb_SpecialNSpit0_Anim(ftKb_GObj* gobj);
/* 0F7808 */ void ftKb_SpecialNSpit_Anim(ftKb_GObj* gobj);
/* 0F78B8 */ void ftKb_SpecialNSpit1_Anim(ftKb_GObj* gobj);
/* 0F79C0 */ void ftKb_SpecialAirNSpit_Anim(ftKb_GObj* gobj);
/* 0F7A70 */ void ftKb_SpecialNDrink0_Anim(ftKb_GObj* gobj);
/* 0F7B20 */ void ftKb_SpecialNDrink_Anim(ftKb_GObj* gobj);
/* 0F7BE4 */ void ftKb_SpecialNDrink1_Anim(ftKb_GObj* gobj);
/* 0F7C94 */ void ftKb_SpecialAirNDrink_Anim(ftKb_GObj* gobj);
/* 0F7D58 */ void ftKb_EatTurn_Anim(ftKb_GObj* gobj);
/* 0F7DE4 */ void ftKb_SpecialAirNCaptureTurn_Anim(ftKb_GObj* gobj);
/* 0F7E78 */ void ftKb_EatWalk_Anim(ftKb_GObj* gobj);
/* 0F7E98 */ void ftKb_EatJump1_Anim(ftKb_GObj* gobj);
/* 0F7F20 */ void ftKb_EatJump2_Anim(ftKb_GObj* gobj);
/* 0F7F24 */ void ftKb_EatLanding_Anim(ftKb_GObj* gobj);
/* 0F7FA0 */ void ftKb_SpecialNLoop_IASA(ftKb_GObj* gobj);
/* 0F8000 */ void ftKb_SpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 0F8060 */ void ftKb_EatWait_IASA(ftKb_GObj* gobj);
/* 0F844C */ void ftKb_SpecialAirNCaptureWait_IASA(ftKb_GObj* gobj);
/* 0F8770 */ void ftKb_EatWalk_IASA(ftKb_GObj* gobj);
/* 0F8870 */ void ftKb_EatJump1_IASA(ftKb_GObj* gobj);
/* 0F8890 */ void ftKb_SpecialN_Phys(ftKb_GObj* gobj);
/* 0F88B0 */ void ftKb_SpecialAirN_Phys(ftKb_GObj* gobj);
/* 0F88D0 */ void ftKb_SpecialNLoop_Phys(ftKb_GObj* gobj);
/* 0F88F0 */ void ftKb_SpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 0F8910 */ void ftKb_SpecialNEnd_Phys(ftKb_GObj* gobj);
/* 0F8930 */ void ftKb_SpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 0F8950 */ void ftKb_SpecialNCapture0_Phys(ftKb_GObj* gobj);
/* 0F8970 */ void ftKb_SpecialNCapture_Phys(ftKb_GObj* gobj);
/* 0F8990 */ void ftKb_SpecialNCapture1_Phys(ftKb_GObj* gobj);
/* 0F89B0 */ void ftKb_SpecialAirNCapture_Phys(ftKb_GObj* gobj);
/* 0F89D0 */ void ftKb_Eat_Phys(ftKb_GObj* gobj);
/* 0F89F0 */ void ftKb_SpecialAirNCaptured_Phys(ftKb_GObj* gobj);
/* 0F8A10 */ void ftKb_EatWait_Phys(ftKb_GObj* gobj);
/* 0F8A30 */ void ftKb_SpecialAirNCaptureWait_Phys(ftKb_GObj* gobj);
/* 0F8A50 */ void ftKb_SpecialNSpit0_Phys(ftKb_GObj* gobj);
/* 0F8A70 */ void ftKb_SpecialNSpit_Phys(ftKb_GObj* gobj);
/* 0F8A90 */ void ftKb_SpecialNSpit1_Phys(ftKb_GObj* gobj);
/* 0F8AB0 */ void ftKb_SpecialAirNSpit_Phys(ftKb_GObj* gobj);
/* 0F8AD0 */ void ftKb_SpecialNDrink0_Phys(ftKb_GObj* gobj);
/* 0F8AF0 */ void ftKb_SpecialNDrink_Phys(ftKb_GObj* gobj);
/* 0F8B10 */ void ftKb_SpecialNDrink1_Phys(ftKb_GObj* gobj);
/* 0F8B30 */ void ftKb_SpecialAirNDrink_Phys(ftKb_GObj* gobj);
/* 0F8B50 */ void ftKb_EatTurn_Phys(ftKb_GObj* gobj);
/* 0F8B70 */ void ftKb_SpecialAirNCaptureTurn_Phys(ftKb_GObj* gobj);
/* 0F8B90 */ void ftKb_EatWalk_Phys(ftKb_GObj* gobj);
/* 0F8BB0 */ void ftKb_EatJump1_Phys(ftKb_GObj* gobj);
/* 0F8BD0 */ void ftKb_EatJump2_Phys(ftKb_GObj* gobj);
/* 0F8BF0 */ void ftKb_EatLanding_Phys(ftKb_GObj* gobj);
/* 0F8C10 */ void ftKb_SpecialN_Coll(ftKb_GObj* gobj);
/* 0F8C38 */ void ftKb_SpecialAirN_Coll(ftKb_GObj* gobj);
/* 0F8C60 */ void ftKb_SpecialNLoop_Coll(ftKb_GObj* gobj);
/* 0F8C88 */ void ftKb_SpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 0F8CB0 */ void ftKb_SpecialNEnd_Coll(ftKb_GObj* gobj);
/* 0F8CD8 */ void ftKb_SpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 0F8D00 */ void ftKb_SpecialNCapture0_Coll(ftKb_GObj* gobj);
/* 0F8D28 */ void ftKb_SpecialNCapture_Coll(ftKb_GObj* gobj);
/* 0F8D50 */ void ftKb_SpecialNCapture1_Coll(ftKb_GObj* gobj);
/* 0F8D78 */ void ftKb_SpecialAirNCapture_Coll(ftKb_GObj* gobj);
/* 0F8DA0 */ void ftKb_Eat_Coll(ftKb_GObj* gobj);
/* 0F8DC8 */ void ftKb_SpecialAirNCaptured_Coll(ftKb_GObj* gobj);
/* 0F8DF0 */ void ftKb_EatWait_Coll(ftKb_GObj* gobj);
/* 0F8E18 */ void ftKb_SpecialAirNCaptureWait_Coll(ftKb_GObj* gobj);
/* 0F8E40 */ void ftKb_SpecialNSpit0_Coll(ftKb_GObj* gobj);
/* 0F8E68 */ void ftKb_SpecialNSpit_Coll(ftKb_GObj* gobj);
/* 0F8E90 */ void ftKb_SpecialNSpit1_Coll(ftKb_GObj* gobj);
/* 0F8EB8 */ void ftKb_SpecialAirNSpit_Coll(ftKb_GObj* gobj);
/* 0F8EE0 */ void ftKb_SpecialNDrink0_Coll(ftKb_GObj* gobj);
/* 0F8F08 */ void ftKb_SpecialNDrink_Coll(ftKb_GObj* gobj);
/* 0F8F30 */ void ftKb_SpecialNDrink1_Coll(ftKb_GObj* gobj);
/* 0F8F58 */ void ftKb_SpecialAirNDrink_Coll(ftKb_GObj* gobj);
/* 0F8F80 */ void ftKb_EatTurn_Coll(ftKb_GObj* gobj);
/* 0F8FA8 */ void ftKb_SpecialAirNCaptureTurn_Coll(ftKb_GObj* gobj);
/* 0F8FD0 */ void ftKb_EatWalk_Coll(ftKb_GObj* gobj);
/* 0F8FF8 */ void ftKb_EatJump1_Coll(ftKb_GObj* gobj);
/* 0F9020 */ void ftKb_EatJump2_Coll(ftKb_GObj* gobj);
/* 0F9048 */ void ftKb_EatLanding_Coll(ftKb_GObj* gobj);
/* 0F9070 */ void ftKb_SpecialN_800F9070(ftKb_GObj* gobj);
/* 0F9090 */ void ftKb_SpecialN_800F9090(ftKb_GObj* gobj);
/* 0F9110 */ void ftKb_SpecialN_800F9110(ftKb_GObj* gobj);
/* 0F9198 */ void ftKb_MrSpecialN_Anim(ftKb_GObj* gobj);
/* 0F91D4 */ void ftKb_MrSpecialN_IASA(ftKb_GObj* gobj);
/* 0F9204 */ void ftKb_MrSpecialN_Phys(ftKb_GObj* gobj);
/* 0F9224 */ void ftKb_MrSpecialN_Coll(ftKb_GObj* gobj);
/* 0F93CC */ void ftKb_SpecialNMr_800F93CC(ftKb_GObj* gobj);
/* 0F9454 */ void ftKb_MrSpecialAirN_Anim(ftKb_GObj* gobj);
/* 0F9490 */ void ftKb_MrSpecialAirN_IASA(ftKb_GObj* gobj);
/* 0F94C0 */ void ftKb_MrSpecialAirN_Phys(ftKb_GObj* gobj);
/* 0F94E0 */ void ftKb_MrSpecialAirN_Coll(ftKb_GObj* gobj);
/* 0F951C */ void ftKb_SpecialNLg_800F951C(ftKb_GObj* gobj);
/* 0F9598 */ void ftKb_SpecialNLg_800F9598(ftKb_GObj* gobj);
/* 0F9614 */ void ftKb_SpecialNLg_800F9614(ftKb_GObj* gobj);
/* 0F9684 */ void ftKb_SpecialNLg_800F9684(ftKb_GObj* gobj);
/* 0F96F4 */ void ftKb_LgSpecialN_Anim(ftKb_GObj* gobj);
/* 0F9730 */ void ftKb_LgSpecialAirN_Anim(ftKb_GObj* gobj);
/* 0F976C */ void ftKb_LgSpecialN_IASA(ftKb_GObj* gobj);
/* 0F979C */ void ftKb_LgSpecialAirN_IASA(ftKb_GObj* gobj);
/* 0F97CC */ void ftKb_LgSpecialN_Phys(ftKb_GObj* gobj);
/* 0F97EC */ void ftKb_LgSpecialAirN_Phys(ftKb_GObj* gobj);
/* 0F980C */ void ftKb_LgSpecialN_Coll(ftKb_GObj* gobj);
/* 0F9880 */ void ftKb_LgSpecialAirN_Coll(ftKb_GObj* gobj);
/* 0F99BC */ void ftKb_SpecialNCa_800F99BC(ftKb_GObj* gobj);
/* 0F9A54 */ void ftKb_SpecialNCa_800F9A54(ftKb_GObj* gobj);
/* 0F9AEC */ void ftKb_CaSpecialN_Anim(ftKb_GObj* gobj);
/* 0F9B28 */ void ftKb_CaSpecialAirN_Anim(ftKb_GObj* gobj);
/* 0F9B64 */ void ftKb_CaSpecialN_IASA(ftKb_GObj* gobj);
/* 0F9B68 */ void ftKb_CaSpecialAirN_IASA(ftKb_GObj* gobj);
/* 0F9C58 */ void ftKb_CaSpecialN_Phys(ftKb_GObj* gobj);
/* 0F9D40 */ void ftKb_CaSpecialAirN_Phys(ftKb_GObj* gobj);
/* 0F9E8C */ void ftKb_CaSpecialN_Coll(ftKb_GObj* gobj);
/* 0F9F34 */ void ftKb_CaSpecialAirN_Coll(ftKb_GObj* gobj);
/* 0F9FD4 */ void ftKb_SpecialNPk_800F9FD4(ftKb_GObj* gobj);
/* 0FA064 */ void ftKb_SpecialNPk_800FA064(ftKb_GObj* gobj);
/* 0FA0F4 */ void ftKb_PkSpecialN_Anim(ftKb_GObj* gobj);
/* 0FA254 */ void ftKb_PkSpecialAirN_Anim(ftKb_GObj* gobj);
/* 0FA418 */ void ftKb_PkSpecialN_IASA(ftKb_GObj* gobj);
/* 0FA41C */ void ftKb_PkSpecialAirN_IASA(ftKb_GObj* gobj);
/* 0FA420 */ void ftKb_PkSpecialN_Phys(ftKb_GObj* gobj);
/* 0FA440 */ void ftKb_PkSpecialAirN_Phys(ftKb_GObj* gobj);
/* 0FA460 */ void ftKb_PkSpecialN_Coll(ftKb_GObj* gobj);
/* 0FA4F0 */ void ftKb_PkSpecialAirN_Coll(ftKb_GObj* gobj);
/* 0FA588 */ void ftKb_SpecialNKp_800FA588(ftKb_GObj* gobj);
/* 0FA7D4 */ void ftKb_SpecialNKp_800FA7D4(ftKb_GObj* gobj);
/* 0FA83C */ void ftKb_SpecialNKp_800FA83C(ftKb_GObj* gobj);
/* 0FA878 */ void ftKb_SpecialNKp_800FA878(ftKb_GObj* gobj);
/* 0FA8B4 */ void ftKb_SpecialNKp_800FA8B4(ftKb_GObj* gobj);
/* 0FA958 */ void ftKb_SpecialNKp_800FA958(ftKb_GObj* gobj);
/* 0FA9FC */ void ftKb_KpSpecialNStart_Anim(ftKb_GObj* gobj);
/* 0FAA74 */ void ftKb_KpSpecialN_Anim(ftKb_GObj* gobj);
/* 0FAB18 */ void ftKb_KpSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 0FAB54 */ void ftKb_KpSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 0FABCC */ void ftKb_KpSpecialAirN_Anim(ftKb_GObj* gobj);
/* 0FAC70 */ void ftKb_KpSpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 0FACAC */ void ftKb_KpSpecialNStart_IASA(ftKb_GObj* gobj);
/* 0FACB0 */ void ftKb_KpSpecialN_IASA(ftKb_GObj* gobj);
/* 0FAE0C */ void ftKb_KpSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 0FAE10 */ void ftKb_KpSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 0FAE14 */ void ftKb_KpSpecialAirN_IASA(ftKb_GObj* gobj);
/* 0FAF70 */ void ftKb_KpSpecialAirNEnd_IASA(ftKb_GObj* gobj);
/* 0FAF74 */ void ftKb_KpSpecialNStart_Phys(ftKb_GObj* gobj);
/* 0FAF94 */ void ftKb_KpSpecialN_Phys(ftKb_GObj* gobj);
/* 0FAFB4 */ void ftKb_KpSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 0FAFD4 */ void ftKb_KpSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 0FAFF4 */ void ftKb_KpSpecialAirN_Phys(ftKb_GObj* gobj);
/* 0FB014 */ void ftKb_KpSpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 0FB034 */ void ftKb_KpSpecialNStart_Coll(ftKb_GObj* gobj);
/* 0FB0C4 */ void ftKb_KpSpecialN_Coll(ftKb_GObj* gobj);
/* 0FB154 */ void ftKb_KpSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 0FB1E4 */ void ftKb_KpSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 0FB274 */ void ftKb_KpSpecialAirN_Coll(ftKb_GObj* gobj);
/* 0FB304 */ void ftKb_KpSpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 0FB394 */ ftLk_SpecialNIndex ftKb_SpecialNLk800FB394(ftKb_GObj* gobj);
/* 0FB418 */ void ftKb_SpecialNLk800FB418(ftKb_GObj* gobj);
/* 0FB444 */ void ftKb_SpecialNLk800FB444(ftKb_GObj* gobj);
/* 0FB470 */ bool ftKb_SpecialNLk800FB470(ftKb_GObj* gobj);
/* 0FB500 */ void ftKb_SpecialNLk800FB500(ftKb_GObj* gobj);
/* 0FB5F4 */ void ftKb_SpecialNLk800FB5F4(ftKb_GObj* gobj);
/* 0FB6DC */ void ftKb_SpecialNLk800FB6DC(ftKb_GObj* gobj);
/* 0FB800 */ void ftKb_SpecialNLk800FB800(ftKb_GObj* gobj);
/* 0FB840 */ void ftKb_SpecialNLk800FB840(ftKb_GObj* gobj);
/* 0FB880 */ void ftKb_SpecialNLk800FB880(ftKb_GObj* gobj);
/* 0FBA00 */ void ftKb_SpecialNLk800FBA00(ftKb_GObj* gobj);
/* 0FBBC4 */ void ftKb_LkSpecialNStart_Anim(ftKb_GObj* gobj);
/* 0FBDFC */ void ftKb_LkSpecialNLoop_Anim(ftKb_GObj* gobj);
/* 0FBED0 */ void ftKb_LkSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 0FBF34 */ void ftKb_LkSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 0FC1A0 */ void ftKb_LkSpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 0FC274 */ void ftKb_LkSpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 0FC374 */ void ftKb_LkSpecialNStart_IASA(ftKb_GObj* gobj);
/* 0FC46C */ void ftKb_LkSpecialNLoop_IASA(ftKb_GObj* gobj);
/* 0FC53C */ void ftKb_LkSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 0FC540 */ void ftKb_LkSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 0FC638 */ void ftKb_LkSpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 0FC708 */ void ftKb_LkSpecialAirNEnd_IASA(ftKb_GObj* gobj);
/* 0FC70C */ void ftKb_LkSpecialNStart_Phys(ftKb_GObj* gobj);
/* 0FC72C */ void ftKb_LkSpecialNLoop_Phys(ftKb_GObj* gobj);
/* 0FC74C */ void ftKb_LkSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 0FC76C */ void ftKb_LkSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 0FC78C */ void ftKb_LkSpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 0FC7AC */ void ftKb_LkSpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 0FC7CC */ void ftKb_LkSpecialNStart_Coll(ftKb_GObj* gobj);
/* 0FC880 */ void ftKb_LkSpecialNLoop_Coll(ftKb_GObj* gobj);
/* 0FC934 */ void ftKb_LkSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 0FC9F0 */ void ftKb_LkSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 0FCAA4 */ void ftKb_LkSpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 0FCB58 */ void ftKb_LkSpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 0FCC14 */ void ftKb_SpecialNSs_800FCC14(ftKb_GObj* gobj);
/* 0FCC6C */ void ftKb_SpecialNSs_800FCC6C(ftKb_GObj* gobj);
/* 0FCCBC */ void ftKb_SpecialNSs_800FCCBC(ftKb_GObj* gobj);
/* 0FCD04 */ void ftKb_SpecialNSs_800FCD04(ftKb_GObj* gobj);
/* 0FCD60 */ void ftKb_SpecialNSs_800FCD60(ftKb_GObj* gobj);
/* 0FCDE0 */ void ftKb_SpecialNSs_800FCDE0(ftKb_GObj* gobj);
/* 0FCF74 */ void ftKb_SpecialNSs_800FCF74(ftKb_GObj* gobj);
/* 0FD020 */ void ftKb_SpecialNSs_800FD020(ftKb_GObj* gobj);
/* 0FD0BC */ void ftKb_SsSpecialNStart_Anim(ftKb_GObj* gobj);
/* 0FD250 */ void ftKb_SsSpecialNHold_Anim(ftKb_GObj* gobj);
/* 0FD418 */ void ftKb_SsSpecialNCancel_Anim(ftKb_GObj* gobj);
/* 0FD49C */ void ftKb_SsSpecialN_Anim(ftKb_GObj* gobj);
/* 0FD4E0 */ void ftKb_SsSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 0FD608 */ void ftKb_SsSpecialAirN_Anim(ftKb_GObj* gobj);
/* 0FD688 */ void ftKb_SsSpecialNStart_IASA(ftKb_GObj* gobj);
/* 0FD68C */ void ftKb_SsSpecialNHold_IASA(ftKb_GObj* gobj);
/* 0FD7E0 */ void ftKb_SsSpecialNCancel_IASA(ftKb_GObj* gobj);
/* 0FD7E4 */ void ftKb_SsSpecialN_IASA(ftKb_GObj* gobj);
/* 0FD7E8 */ void ftKb_SsSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 0FD7EC */ void ftKb_SsSpecialAirN_IASA(ftKb_GObj* gobj);
/* 0FD7F0 */ void ftKb_SsSpecialNStart_Phys(ftKb_GObj* gobj);
/* 0FD810 */ void ftKb_SsSpecialNHold_Phys(ftKb_GObj* gobj);
/* 0FD830 */ void ftKb_SsSpecialNCancel_Phys(ftKb_GObj* gobj);
/* 0FD850 */ void ftKb_SsSpecialN_Phys(ftKb_GObj* gobj);
/* 0FD870 */ void ftKb_SsSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 0FD890 */ void ftKb_SsSpecialAirN_Phys(ftKb_GObj* gobj);
/* 0FD8B0 */ void ftKb_SsSpecialNStart_Coll(ftKb_GObj* gobj);
/* 0FD938 */ void ftKb_SsSpecialNHold_Coll(ftKb_GObj* gobj);
/* 0FD9E0 */ void ftKb_SsSpecialNCancel_Coll(ftKb_GObj* gobj);
/* 0FDA68 */ void ftKb_SsSpecialN_Coll(ftKb_GObj* gobj);
/* 0FDAF0 */ void ftKb_SsSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 0FDB78 */ void ftKb_SsSpecialAirN_Coll(ftKb_GObj* gobj);
/* 0FDC00 */ void ftKb_SpecialNFx_800FDC00(ftKb_GObj* gobj, Vec3* vec);
/* 0FDC70 */ void ftKb_SpecialNFx_800FDC70(ftKb_GObj* gobj, Vec3* vec);
/* 0FDD14 */ bool ftKb_SpecialNFx_800FDD14(ftKb_GObj* gobj);
/* 0FDD4C */ ftFx_SpecialNIndex ftKb_SpecialNFx_800FDD4C(ftKb_GObj* gobj);
/* 0FDDF4 */ bool ftKb_SpecialNFx_800FDDF4(ftKb_GObj* gobj);
/* 0FDEB4 */ void ftKb_SpecialNFx_800FDEB4(ftKb_GObj* gobj);
/* 0FDEE0 */ void ftKb_SpecialNFx_800FDEE0(ftKb_GObj* gobj);
/* 0FDF30 */ void ftKb_SpecialNFx_800FDF30(ftKb_GObj* gobj);
/* 0FE100 */ void ftKb_SpecialNFx_800FE100(ftKb_GObj* gobj);
/* 0FE240 */ void ftKb_SpecialNFx_800FE240(ftKb_GObj* gobj);
/* 0FE360 */ void ftKb_FxSpecialNStart_Anim(ftKb_GObj* gobj);
/* 0FE450 */ void ftKb_FxSpecialNLoop_Anim(ftKb_GObj* gobj);
/* 0FE5C8 */ void ftKb_FxSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 0FE688 */ void ftKb_FxSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 0FE778 */ void ftKb_FxSpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 0FE928 */ void ftKb_FxSpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 0FEA50 */ void ftKb_FxSpecialNStart_IASA(ftKb_GObj* gobj);
/* 0FEA78 */ void ftKb_FxSpecialNLoop_IASA(ftKb_GObj* gobj);
/* 0FEAA0 */ void ftKb_FxSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 0FEAA4 */ void ftKb_FxSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 0FEACC */ void ftKb_FxSpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 0FEAF4 */ void ftKb_FxSpecialAirNEnd_IASA(ftKb_GObj* gobj);
/* 0FEAF8 */ void ftKb_FxSpecialNStart_Phys(ftKb_GObj* gobj);
/* 0FEB18 */ void ftKb_FxSpecialNLoop_Phys(ftKb_GObj* gobj);
/* 0FEB38 */ void ftKb_FxSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 0FEB58 */ void ftKb_FxSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 0FEB78 */ void ftKb_FxSpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 0FEB98 */ void ftKb_FxSpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 0FEBB8 */ void ftKb_FxSpecialNStart_Coll(ftKb_GObj* gobj);
/* 0FEBD8 */ void ftKb_FxSpecialNLoop_Coll(ftKb_GObj* gobj);
/* 0FEBF8 */ void ftKb_FxSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 0FEC18 */ void ftKb_FxSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 0FEC38 */ void ftKb_FxSpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 0FEC58 */ void ftKb_FxSpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 0FEC78 */ bool ftKb_SpecialNNs_800FEC78(ftKb_GObj* gobj);
/* 0FECBC */ void ftKb_SpecialNNs_800FECBC(ftKb_GObj* gobj);
/* 0FECE8 */ void ftKb_SpecialNNs_800FECE8(ftKb_GObj* gobj);
/* 0FED38 */ void ftKb_SpecialNNs_800FED38(ftKb_GObj* gobj);
/* 0FEDD0 */ void ftKb_SpecialNNs_800FEDD0(ftKb_GObj* gobj);
/* 0FEE70 */ void ftKb_NsSpecialNStart_Anim(ftKb_GObj* gobj);
/* 0FEF58 */ void ftKb_NsSpecialNHold_Anim(ftKb_GObj* gobj);
/* 0FF08C */ void ftKb_NsSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 0FF10C */ void ftKb_NsSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 0FF1F4 */ void ftKb_NsSpecialAirNHold_Anim(ftKb_GObj* gobj);
/* 0FF328 */ void ftKb_NsSpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 0FF3DC */ void ftKb_NsSpecialNStart_IASA(ftKb_GObj* gobj);
/* 0FF3E0 */ void ftKb_NsSpecialNHold_IASA(ftKb_GObj* gobj);
/* 0FF450 */ void ftKb_NsSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 0FF454 */ void ftKb_NsSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 0FF458 */ void ftKb_NsSpecialAirNHold_IASA(ftKb_GObj* gobj);
/* 0FF4C8 */ void ftKb_NsSpecialAirNEnd_IASA(ftKb_GObj* gobj);
/* 0FF4CC */ void ftKb_NsSpecialNStart_Phys(ftKb_GObj* gobj);
/* 0FF504 */ void ftKb_NsSpecialNHold_Phys(ftKb_GObj* gobj);
/* 0FF524 */ void ftKb_NsSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 0FF544 */ void ftKb_NsSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 0FF5A4 */ void ftKb_NsSpecialAirNHold_Phys(ftKb_GObj* gobj);
/* 0FF604 */ void ftKb_NsSpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 0FF664 */ void ftKb_NsSpecialNStart_Coll(ftKb_GObj* gobj);
/* 0FF6D0 */ void ftKb_NsSpecialNHold_Coll(ftKb_GObj* gobj);
/* 0FF73C */ void ftKb_NsSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 0FF7A8 */ void ftKb_NsSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 0FF814 */ void ftKb_NsSpecialAirNHold_Coll(ftKb_GObj* gobj);
/* 0FF880 */ void ftKb_NsSpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 0FF8EC */ void ftKb_SpecialNDk_800FF8EC(ftKb_GObj* gobj);
/* 0FFA10 */ void ftKb_SpecialNDk_800FFA10(ftKb_GObj* gobj);
/* 0FFB24 */ void ftKb_DkSpecialNStart_Anim(ftKb_GObj* gobj);
/* 0FFBAC */ void ftKb_DkSpecialNLoop_Anim(ftKb_GObj* gobj);
/* 0FFC48 */ void ftKb_DkSpecialNCancel_Anim(ftKb_GObj* gobj);
/* 0FFC94 */ void ftKb_DkSpecialN_Anim(ftKb_GObj* gobj);
/* 0FFE6C */ void ftKb_DkSpecialNFull_Anim(ftKb_GObj* gobj);
/* 0FFFB8 */ void ftKb_DkSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 100040 */ void ftKb_DkSpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 1000DC */ void ftKb_DkSpecialAirNCancel_Anim(ftKb_GObj* gobj);
/* 100128 */ void ftKb_DkSpecialAirN_Anim(ftKb_GObj* gobj);
/* 1002C8 */ void ftKb_DkSpecialAirNFull_Anim(ftKb_GObj* gobj);
/* 1003DC */ void ftKb_DkSpecialNStart_IASA(ftKb_GObj* gobj);
/* 1003E0 */ void ftKb_DkSpecialNLoop_IASA(ftKb_GObj* gobj);
/* 100518 */ void ftKb_DkSpecialNCancel_IASA(ftKb_GObj* gobj);
/* 10051C */ void ftKb_DkSpecialN_IASA(ftKb_GObj* gobj);
/* 100520 */ void ftKb_DkSpecialNFull_IASA(ftKb_GObj* gobj);
/* 100524 */ void ftKb_DkSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 100528 */ void ftKb_DkSpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 100654 */ void ftKb_DkSpecialAirNCancel_IASA(ftKb_GObj* gobj);
/* 100658 */ void ftKb_DkSpecialAirN_IASA(ftKb_GObj* gobj);
/* 10065C */ void ftKb_DkSpecialAirNFull_IASA(ftKb_GObj* gobj);
/* 100660 */ void ftKb_DkSpecialNStart_Phys(ftKb_GObj* gobj);
/* 100680 */ void ftKb_DkSpecialNLoop_Phys(ftKb_GObj* gobj);
/* 1006A0 */ void ftKb_DkSpecialNCancel_Phys(ftKb_GObj* gobj);
/* 1006C0 */ void ftKb_DkSpecialN_Phys(ftKb_GObj* gobj);
/* 1006E0 */ void ftKb_DkSpecialNFull_Phys(ftKb_GObj* gobj);
/* 100700 */ void ftKb_DkSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 100720 */ void ftKb_DkSpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 100740 */ void ftKb_DkSpecialAirNCancel_Phys(ftKb_GObj* gobj);
/* 100760 */ void ftKb_DkSpecialAirN_Phys(ftKb_GObj* gobj);
/* 100780 */ void ftKb_DkSpecialAirNFull_Phys(ftKb_GObj* gobj);
/* 1007A0 */ void ftKb_DkSpecialNStart_Coll(ftKb_GObj* gobj);
/* 100840 */ void ftKb_DkSpecialNLoop_Coll(ftKb_GObj* gobj);
/* 1008E0 */ void ftKb_DkSpecialNCancel_Coll(ftKb_GObj* gobj);
/* 100980 */ void ftKb_DkSpecialN_Coll(ftKb_GObj* gobj);
/* 100A20 */ void ftKb_DkSpecialNFull_Coll(ftKb_GObj* gobj);
/* 100AC0 */ void ftKb_DkSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 100B60 */ void ftKb_DkSpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 100C00 */ void ftKb_DkSpecialAirNCancel_Coll(ftKb_GObj* gobj);
/* 100CA0 */ void ftKb_DkSpecialAirN_Coll(ftKb_GObj* gobj);
/* 100D40 */ void ftKb_DkSpecialAirNFull_Coll(ftKb_GObj* gobj);
/* 100DE0 */ void ftKb_SpecialNPr_80100DE0(ftKb_GObj* gobj);
/* 100F94 */ void ftKb_SpecialNPr_80100F94(ftKb_GObj* gobj);
/* 1010D4 */ void ftKb_SpecialNPr_801010D4(ftKb_GObj* gobj);
/* 10131C */ void ftKb_SpecialNPr_8010131C(ftKb_GObj* gobj);
/* 10140C */ void ftKb_SpecialNPr_8010140C(ftKb_GObj* gobj);
/* 101560 */ void ftKb_SpecialNPr_80101560(ftKb_GObj* gobj);
/* 101618 */ void ftKb_SpecialNPr_80101618(ftKb_GObj* gobj);
/* 1016CC */ void ftKb_PrSpecialNStart_Anim(ftKb_GObj* gobj);
/* 1017B0 */ void ftKb_PrSpecialNLoop_Anim(ftKb_GObj* gobj);
/* 101960 */ void ftKb_PrSpecialNFull_Anim(ftKb_GObj* gobj);
/* 101AD0 */ void ftKb_PrSpecialN1_Anim(ftKb_GObj* gobj);
/* 101EA0 */ void ftKb_PrSpecialNTurn_Anim(ftKb_GObj* gobj);
/* 102198 */ void ftKb_PrSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 102470 */ void ftKb_PrSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 10254C */ void ftKb_PrSpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 1026FC */ void ftKb_PrSpecialAirNFull_Anim(ftKb_GObj* gobj);
/* 10286C */ void ftKb_PrSpecialAirN_Anim(ftKb_GObj* gobj);
/* 102DD0 */ void ftKb_PrSpecialN_Anim(ftKb_GObj* gobj);
/* 103088 */ void ftKb_PrSpecialAirNEndR_Anim(ftKb_GObj* gobj);
/* 103374 */ void ftKb_PrSpecialNHit_Anim(ftKb_GObj* gobj);
/* 1035C8 */ void ftKb_PrSpecialNStart_IASA(ftKb_GObj* gobj);
/* 1035CC */ void ftKb_PrSpecialNLoop_IASA(ftKb_GObj* gobj);
/* 103734 */ void ftKb_PrSpecialNFull_IASA(ftKb_GObj* gobj);
/* 10389C */ void ftKb_PrSpecialN1_IASA(ftKb_GObj* gobj);
/* 103A24 */ void ftKb_PrSpecialNTurn_IASA(ftKb_GObj* gobj);
/* 103A28 */ void ftKb_PrSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 103A2C */ void ftKb_PrSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 103A30 */ void ftKb_PrSpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 103B98 */ void ftKb_PrSpecialAirNFull_IASA(ftKb_GObj* gobj);
/* 103D00 */ void ftKb_PrSpecialAirN_IASA(ftKb_GObj* gobj);
/* 103D04 */ void ftKb_PrSpecialN_IASA(ftKb_GObj* gobj);
/* 103D08 */ void ftKb_PrSpecialAirNEndR_IASA(ftKb_GObj* gobj);
/* 103D0C */ void ftKb_PrSpecialNHit_IASA(ftKb_GObj* gobj);
/* 103D10 */ void ftKb_PrSpecialNStart_Phys(ftKb_GObj* gobj);
/* 103D40 */ void ftKb_PrSpecialNLoop_Phys(ftKb_GObj* gobj);
/* 103D70 */ void ftKb_PrSpecialNFull_Phys(ftKb_GObj* gobj);
/* 103DA0 */ void ftKb_PrSpecialN1_Phys(ftKb_GObj* gobj);
/* 103FA8 */ void ftKb_PrSpecialNTurn_Phys(ftKb_GObj* gobj);
/* 1042AC */ void ftKb_PrSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 1042E8 */ void ftKb_PrSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 104318 */ void ftKb_PrSpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 104348 */ void ftKb_PrSpecialAirNFull_Phys(ftKb_GObj* gobj);
/* 104378 */ void ftKb_PrSpecialAirN_Phys(ftKb_GObj* gobj);
/* 1044F8 */ void ftKb_PrSpecialN_Phys(ftKb_GObj* gobj);
/* 104610 */ void ftKb_PrSpecialAirNEndR_Phys(ftKb_GObj* gobj);
/* 104640 */ void ftKb_PrSpecialNHit_Phys(ftKb_GObj* gobj);
/* 1046A4 */ void ftKb_PrSpecialNStart_Coll(ftKb_GObj* gobj);
/* 10475C */ void ftKb_PrSpecialNLoop_Coll(ftKb_GObj* gobj);
/* 104864 */ void ftKb_PrSpecialNFull_Coll(ftKb_GObj* gobj);
/* 10496C */ void ftKb_PrSpecialN1_Coll(ftKb_GObj* gobj);
/* 104D14 */ void ftKb_PrSpecialNTurn_Coll(ftKb_GObj* gobj);
/* 104DF8 */ void ftKb_PrSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 104E58 */ void ftKb_PrSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 104F10 */ void ftKb_PrSpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 105018 */ void ftKb_PrSpecialAirNFull_Coll(ftKb_GObj* gobj);
/* 105120 */ void ftKb_PrSpecialAirN_Coll(ftKb_GObj* gobj);
/* 1056FC */ void ftKb_PrSpecialN_Coll(ftKb_GObj* gobj);
/* 1057BC */ void ftKb_PrSpecialAirNEndR_Coll(ftKb_GObj* gobj);
/* 10581C */ void ftKb_PrSpecialNHit_Coll(ftKb_GObj* gobj);
/* 105B2C */ void ftKb_SpecialNZd_80105B2C(ftKb_GObj* gobj);
/* 105BA8 */ void ftKb_SpecialNZd_80105BA8(ftKb_GObj* gobj);
/* 105C3C */ void ftKb_ZdSpecialN_Anim(ftKb_GObj* gobj);
/* 105CD0 */ void ftKb_ZdSpecialAirN_Anim(ftKb_GObj* gobj);
/* 105D64 */ void ftKb_ZdSpecialN_IASA(ftKb_GObj* gobj);
/* 105D68 */ void ftKb_ZdSpecialAirN_IASA(ftKb_GObj* gobj);
/* 105D6C */ void ftKb_ZdSpecialN_Phys(ftKb_GObj* gobj);
/* 105DA0 */ void ftKb_ZdSpecialAirN_Phys(ftKb_GObj* gobj);
/* 105E14 */ void ftKb_ZdSpecialN_Coll(ftKb_GObj* gobj);
/* 105E50 */ void ftKb_ZdSpecialAirN_Coll(ftKb_GObj* gobj);
/* 105E8C */ void ftKb_SpecialNSk_80105E8C(ftKb_GObj* gobj);
/* 105F3C */ void ftKb_SpecialNSk_80105F3C(ftKb_GObj* gobj);
/* 105FF0 */ void ftKb_SpecialNSk_80105FF0(ftKb_GObj* gobj);
/* 106020 */ void ftKb_SpecialNSk_80106020(ftKb_GObj* gobj);
/* 10603C */ void ftKb_SpecialNSk_8010603C(ftKb_GObj* gobj);
/* 10612C */ void ftKb_SpecialNSk_8010612C(ftKb_GObj* gobj);
/* 1061E4 */ void ftKb_SpecialNSk_801061E4(ftKb_GObj* gobj);
/* 10629C */ void ftKb_SkSpecialNStart_Anim(ftKb_GObj* gobj);
/* 106334 */ void ftKb_SkSpecialNLoop_Anim(ftKb_GObj* gobj);
/* 1063E0 */ void ftKb_SkSpecialNCancel_Anim(ftKb_GObj* gobj);
/* 106428 */ void ftKb_SkSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 1064AC */ void ftKb_SkSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 106544 */ void ftKb_SkSpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 1065F0 */ void ftKb_SkSpecialAirNCancel_Anim(ftKb_GObj* gobj);
/* 106670 */ void ftKb_SkSpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 10672C */ void ftKb_SkSpecialNStart_IASA(ftKb_GObj* gobj);
/* 106730 */ void ftKb_SkSpecialNLoop_IASA(ftKb_GObj* gobj);
/* 10680C */ void ftKb_SkSpecialNCancel_IASA(ftKb_GObj* gobj);
/* 106810 */ void ftKb_SkSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 106814 */ void ftKb_SkSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 106818 */ void ftKb_SkSpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 1068F4 */ void ftKb_SkSpecialAirNCancel_IASA(ftKb_GObj* gobj);
/* 1068F8 */ void ftKb_SkSpecialAirNEnd_IASA(ftKb_GObj* gobj);
/* 1068FC */ void ftKb_SkSpecialNStart_Phys(ftKb_GObj* gobj);
/* 10691C */ void ftKb_SkSpecialNLoop_Phys(ftKb_GObj* gobj);
/* 10693C */ void ftKb_SkSpecialNCancel_Phys(ftKb_GObj* gobj);
/* 10695C */ void ftKb_SkSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 10697C */ void ftKb_SkSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 10699C */ void ftKb_SkSpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 1069BC */ void ftKb_SkSpecialAirNCancel_Phys(ftKb_GObj* gobj);
/* 1069DC */ void ftKb_SkSpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 1069FC */ void ftKb_SkSpecialNStart_Coll(ftKb_GObj* gobj);
/* 106A84 */ void ftKb_SkSpecialNLoop_Coll(ftKb_GObj* gobj);
/* 106B0C */ void ftKb_SkSpecialNCancel_Coll(ftKb_GObj* gobj);
/* 106B84 */ void ftKb_SkSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 106C10 */ void ftKb_SkSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 106C98 */ void ftKb_SkSpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 106D20 */ void ftKb_SkSpecialAirNCancel_Coll(ftKb_GObj* gobj);
/* 106D5C */ void ftKb_SkSpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 106F44 */ void ftKb_SpecialNMt_80106F44(ftKb_GObj* gobj);
/* 106F9C */ void ftKb_SpecialNMt_80106F9C(ftKb_GObj* gobj);
/* 106FEC */ void ftKb_SpecialNMt_80106FEC(ftKb_GObj* gobj);
/* 107040 */ void ftKb_SpecialNMt_80107040(ftKb_GObj* gobj);
/* 10709C */ void ftKb_SpecialNMt_8010709C(ftKb_GObj* gobj);
/* 107130 */ void ftKb_SpecialNMt_80107130(ftKb_GObj* gobj);
/* 1071FC */ void ftKb_SpecialNMt_801071FC(ftKb_GObj* gobj);
/* 107410 */ void ftKb_SpecialNMt_80107410(ftKb_GObj* gobj);
/* 107568 */ void ftKb_SpecialNMt_80107568(ftKb_GObj* gobj);
/* 107638 */ void ftKb_SpecialNMt_80107638(ftKb_GObj* gobj);
/* 107700 */ void ftKb_MtSpecialNStart_Anim(ftKb_GObj* gobj);
/* 107884 */ void ftKb_MtSpecialNLoop_Anim(ftKb_GObj* gobj);
/* 107A84 */ void ftKb_MtSpecialNLoopFull_Anim(ftKb_GObj* gobj);
/* 107AB4 */ void ftKb_MtSpecialNCancel_Anim(ftKb_GObj* gobj);
/* 107B38 */ void ftKb_MtSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 107B7C */ void ftKb_MtSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 107D0C */ void ftKb_MtSpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 107F0C */ void ftKb_MtSpecialAirNLoopFull_Anim(ftKb_GObj* gobj);
/* 107F3C */ void ftKb_MtSpecialAirNCancel_Anim(ftKb_GObj* gobj);
/* 107FC0 */ void ftKb_MtSpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 108040 */ void ftKb_MtSpecialNStart_IASA(ftKb_GObj* gobj);
/* 108044 */ void ftKb_MtSpecialNLoop_IASA(ftKb_GObj* gobj);
/* 1081F8 */ void ftKb_MtSpecialNLoopFull_IASA(ftKb_GObj* gobj);
/* 108394 */ void ftKb_MtSpecialNCancel_IASA(ftKb_GObj* gobj);
/* 108398 */ void ftKb_MtSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 10839C */ void ftKb_MtSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 1083A0 */ void ftKb_MtSpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 108504 */ void ftKb_MtSpecialAirNLoopFull_IASA(ftKb_GObj* gobj);
/* 108650 */ void ftKb_MtSpecialAirNCancel_IASA(ftKb_GObj* gobj);
/* 108654 */ void ftKb_MtSpecialAirNEnd_IASA(ftKb_GObj* gobj);
/* 108658 */ void ftKb_MtSpecialNStart_Phys(ftKb_GObj* gobj);
/* 108678 */ void ftKb_MtSpecialNLoop_Phys(ftKb_GObj* gobj);
/* 108698 */ void ftKb_MtSpecialNLoopFull_Phys(ftKb_GObj* gobj);
/* 1086B8 */ void ftKb_MtSpecialNCancel_Phys(ftKb_GObj* gobj);
/* 1086D8 */ void ftKb_MtSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 1086F8 */ void ftKb_MtSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 108718 */ void ftKb_MtSpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 108738 */ void ftKb_MtSpecialAirNLoopFull_Phys(ftKb_GObj* gobj);
/* 108758 */ void ftKb_MtSpecialAirNCancel_Phys(ftKb_GObj* gobj);
/* 108778 */ void ftKb_MtSpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 108798 */ void ftKb_MtSpecialNStart_Coll(ftKb_GObj* gobj);
/* 108820 */ void ftKb_MtSpecialNLoop_Coll(ftKb_GObj* gobj);
/* 1088A8 */ void ftKb_MtSpecialNLoopFull_Coll(ftKb_GObj* gobj);
/* 108930 */ void ftKb_MtSpecialNCancel_Coll(ftKb_GObj* gobj);
/* 1089B8 */ void ftKb_MtSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 108A40 */ void ftKb_MtSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 108AC8 */ void ftKb_MtSpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 108B50 */ void ftKb_MtSpecialAirNLoopFull_Coll(ftKb_GObj* gobj);
/* 108BD8 */ void ftKb_MtSpecialAirNCancel_Coll(ftKb_GObj* gobj);
/* 108C60 */ void ftKb_MtSpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 108CE8 */ void ftKb_SpecialNIc_80108CE8(ftKb_GObj* gobj);
/* 108D04 */ void ftKb_SpecialNIc_80108D04(ftKb_GObj* gobj);
/* 108D64 */ void ftKb_SpecialNIc_80108D64(ftKb_GObj* gobj);
/* 108E14 */ void ftKb_SpecialNIc_80108E14(ftKb_GObj* gobj);
/* 108EFC */ void ftKb_PpSpecialN_Anim(ftKb_GObj* gobj);
/* 108F38 */ void ftKb_PpSpecialAirN_Anim(ftKb_GObj* gobj);
/* 108F74 */ void ftKb_PpSpecialN_IASA(ftKb_GObj* gobj);
/* 108F78 */ void ftKb_PpSpecialAirN_IASA(ftKb_GObj* gobj);
/* 108F7C */ void ftKb_PpSpecialN_Phys(ftKb_GObj* gobj);
/* 108F9C */ void ftKb_PpSpecialAirN_Phys(ftKb_GObj* gobj);
/* 108FBC */ void ftKb_PpSpecialN_Coll(ftKb_GObj* gobj);
/* 109030 */ void ftKb_PpSpecialAirN_Coll(ftKb_GObj* gobj);
/* 109238 */ Fighter_Part ftKb_SpecialNYs_80109238(ftKb_GObj* gobj);
/* 109260 */ void ftKb_SpecialNYs_80109260(ftKb_GObj* gobj);
/* 109290 */ float ftKb_SpecialNYs_80109290(ftKb_GObj* gobj);
/* 10929C */ float ftKb_SpecialNYs_8010929C(ftKb_GObj* gobj);
/* 1092AC */ float ftKb_SpecialNYs_801092AC(ftKb_GObj* gobj);
/* 1092BC */ float ftKb_SpecialNYs_801092BC(ftKb_GObj* gobj);
/* 1092CC */ float ftKb_SpecialNYs_801092CC(ftKb_GObj* gobj);
/* 1092DC */ void ftKb_SpecialNYs_801092DC(ftKb_GObj* gobj);
/* 1092F4 */ void ftKb_SpecialNYs_801092F4(ftKb_GObj* gobj);
/* 10930C */ void ftKb_SpecialNYs_8010930C(ftKb_GObj* gobj);
/* 109324 */ void ftKb_SpecialNYs_80109324(ftKb_GObj* gobj);
/* 10933C */ void ftKb_SpecialNYs_8010933C(ftKb_GObj* gobj);
/* 109354 */ void ftKb_SpecialNYs_80109354(ftKb_GObj* gobj);
/* 109380 */ void ftKb_SpecialNYs_80109380(ftKb_GObj* gobj);
/* 1093A0 */ ftDynamics* ftKb_SpecialNYs_801093A0(ftKb_GObj* gobj);
/* 1093B4 */ void ftKb_SpecialNYs_801093B4(ftKb_GObj* gobj);
/* 10941C */ void ftKb_SpecialNYs_8010941C(ftKb_GObj* gobj);
/* 1094FC */ void ftKb_SpecialNYs_801094FC(ftKb_GObj* gobj);
/* 109D6C */ void ftKb_YsSpecialN1_Anim(ftKb_GObj* gobj);
/* 109DB8 */ void ftKb_YsSpecialAirNCapture2_Anim(ftKb_GObj* gobj);
/* 109E04 */ void ftKb_YsSpecialAirNCapture1_Anim(ftKb_GObj* gobj);
/* 109EE8 */ void ftKb_YsSpecialNCapture1_Anim(ftKb_GObj* gobj);
/* 109FD4 */ void ftKb_YsSpecialAirCapture2_Anim(ftKb_GObj* gobj);
/* 10A0B8 */ void ftKb_YsSpecialAirCapture1_Anim(ftKb_GObj* gobj);
/* 10A1A4 */ void ftKb_YsSpecialNCapture2_0_Anim(ftKb_GObj* gobj);
/* 10A304 */ void ftKb_YsSpecialNCapture2_1_Anim(ftKb_GObj* gobj);
/* 10A3C8 */ void ftKb_YsSpecialAirN2_1_Anim(ftKb_GObj* gobj);
/* 10A528 */ void ftKb_YsSpecialAirN2_0_Anim(ftKb_GObj* gobj);
/* 10A5EC */ void ftKb_YsSpecialN1_Phys(ftKb_GObj* gobj);
/* 10A60C */ void ftKb_YsSpecialAirNCapture2_Phys(ftKb_GObj* gobj);
/* 10A62C */ void ftKb_YsSpecialAirNCapture1_Phys(ftKb_GObj* gobj);
/* 10A64C */ void ftKb_YsSpecialNCapture1_Phys(ftKb_GObj* gobj);
/* 10A66C */ void ftKb_YsSpecialAirCapture1_Phys(ftKb_GObj* gobj);
/* 10A68C */ void ftKb_YsSpecialAirCapture2_Phys(ftKb_GObj* gobj);
/* 10A6AC */ void ftKb_YsSpecialNCapture2_0_Phys(ftKb_GObj* gobj);
/* 10A6CC */ void ftKb_YsSpecialNCapture2_1_Phys(ftKb_GObj* gobj);
/* 10A6EC */ void ftKb_YsSpecialAirN2_1_Phys(ftKb_GObj* gobj);
/* 10A70C */ void ftKb_YsSpecialAirN2_0_Phys(ftKb_GObj* gobj);
/* 10A72C */ void ftKb_YsSpecialN1_Coll(ftKb_GObj* gobj);
/* 10A754 */ void ftKb_YsSpecialAirNCapture2_Coll(ftKb_GObj* gobj);
/* 10A77C */ void ftKb_YsSpecialAirNCapture1_Coll(ftKb_GObj* gobj);
/* 10A7A4 */ void ftKb_YsSpecialNCapture1_Coll(ftKb_GObj* gobj);
/* 10A7CC */ void ftKb_YsSpecialAirCapture2_Coll(ftKb_GObj* gobj);
/* 10A7F4 */ void ftKb_YsSpecialAirCapture1_Coll(ftKb_GObj* gobj);
/* 10A81C */ void ftKb_YsSpecialNCapture2_0_Coll(ftKb_GObj* gobj);
/* 10A844 */ void ftKb_YsSpecialNCapture2_1_Coll(ftKb_GObj* gobj);
/* 10A86C */ void ftKb_YsSpecialAirN2_1_Coll(ftKb_GObj* gobj);
/* 10A894 */ void ftKb_YsSpecialAirN2_0_Coll(ftKb_GObj* gobj);
/* 10A8BC */ void ftKb_SpecialNYs_8010A8BC(ftKb_GObj* gobj);
/* 10AA1C */ void ftCo_CaptureKirbyYoshi_Anim(ftKb_GObj* gobj);
/* 10AA20 */ void ftCo_CaptureKirbyYoshi_IASA(ftKb_GObj* gobj);
/* 10AA24 */ void ftCo_CaptureKirbyYoshi_Phys(ftKb_GObj* gobj);
/* 10AA28 */ void ftCo_CaptureKirbyYoshi_Coll(ftKb_GObj* gobj);
/* 10AA2C */ void ftKb_SpecialNYs_8010AA2C(ftKb_GObj* gobj);
/* 10AC78 */ void ftKb_SpecialNYs_8010AC78(ftKb_GObj* gobj);
/* 10AF54 */ void ftCo_KirbyYoshiEgg_Anim(ftKb_GObj* gobj);
/* 10B0A0 */ void ftCo_KirbyYoshiEgg_IASA(ftKb_GObj* gobj);
/* 10B0A4 */ void ftCo_KirbyYoshiEgg_Phys(ftKb_GObj* gobj);
/* 10B0DC */ void ftCo_KirbyYoshiEgg_Coll(ftKb_GObj* gobj);
/* 10B2FC */ void ftKb_SpecialNMs_8010B2FC(ftKb_GObj* gobj);
/* 10B4A0 */ void ftKb_SpecialNMs_8010B4A0(ftKb_GObj* gobj);
/* 10B65C */ void ftKb_MsSpecialNStart_Anim(ftKb_GObj* gobj);
/* 10B6C4 */ void ftKb_MsSpecialAirNStart_Anim(ftKb_GObj* gobj);
/* 10B72C */ void ftKb_MsSpecialNStart_IASA(ftKb_GObj* gobj);
/* 10B730 */ void ftKb_MsSpecialAirNStart_IASA(ftKb_GObj* gobj);
/* 10B734 */ void ftKb_MsSpecialNStart_Phys(ftKb_GObj* gobj);
/* 10B78C */ void ftKb_MsSpecialAirNStart_Phys(ftKb_GObj* gobj);
/* 10B7F0 */ void ftKb_MsSpecialNStart_Coll(ftKb_GObj* gobj);
/* 10B82C */ void ftKb_MsSpecialAirNStart_Coll(ftKb_GObj* gobj);
/* 10B868 */ void ftKb_SpecialNMs_8010B868(ftKb_GObj* gobj);
/* 10B8E0 */ void ftKb_SpecialNMs_8010B8E0(ftKb_GObj* gobj);
/* 10B958 */ void ftKb_MsSpecialNLoop_Anim(ftKb_GObj* gobj);
/* 10B9C0 */ void ftKb_MsSpecialAirNLoop_Anim(ftKb_GObj* gobj);
/* 10BA28 */ void ftKb_MsSpecialNLoop_IASA(ftKb_GObj* gobj);
/* 10BA60 */ void ftKb_MsSpecialAirNLoop_IASA(ftKb_GObj* gobj);
/* 10BA98 */ void ftKb_MsSpecialNLoop_Phys(ftKb_GObj* gobj);
/* 10BAB8 */ void ftKb_MsSpecialAirNLoop_Phys(ftKb_GObj* gobj);
/* 10BAD8 */ void ftKb_MsSpecialNLoop_Coll(ftKb_GObj* gobj);
/* 10BB14 */ void ftKb_MsSpecialAirNLoop_Coll(ftKb_GObj* gobj);
/* 10BB50 */ void ftKb_SpecialNMs_8010BB50(ftKb_GObj* gobj);
/* 10BBC8 */ void ftKb_SpecialNMs_8010BBC8(ftKb_GObj* gobj);
/* 10BC40 */ void ftKb_SpecialNMs_8010BC40(ftKb_GObj* gobj);
/* 10BC90 */ void ftKb_SpecialNMs_8010BC90(ftKb_GObj* gobj);
/* 10BCE0 */ void ftKb_MsSpecialNEnd_Anim(ftKb_GObj* gobj);
/* 10BDD8 */ void ftKb_MsSpecialAirNEnd_Anim(ftKb_GObj* gobj);
/* 10BED0 */ void ftKb_MsSpecialNEnd_IASA(ftKb_GObj* gobj);
/* 10BED4 */ void ftKb_MsSpecialAirNEnd_IASA(ftKb_GObj* gobj);
/* 10BED8 */ void ftKb_MsSpecialNEnd_Phys(ftKb_GObj* gobj);
/* 10BEF8 */ void ftKb_MsSpecialAirNEnd_Phys(ftKb_GObj* gobj);
/* 10BF18 */ void ftKb_MsSpecialNEnd_Coll(ftKb_GObj* gobj);
/* 10BF54 */ void ftKb_MsSpecialAirNEnd_Coll(ftKb_GObj* gobj);
/* 10BF90 */ void ftKb_SpecialNPe_8010BF90(ftKb_GObj* gobj);
/* 10C06C */ void ftKb_SpecialNPe_8010C06C(ftKb_GObj* gobj);
/* 10C148 */ void ftKb_SpecialNPe_8010C148(ftKb_GObj* gobj);
/* 10C1E8 */ void ftKb_SpecialNPe_8010C1E8(ftKb_GObj* gobj);
/* 10C3C0 */ void ftKb_SpecialNPe_8010C3C0(ftKb_GObj* gobj);
/* 10C3F4 */ void ftKb_SpecialNPe_8010C3F4(ftKb_GObj* gobj);
/* 10C47C */ void ftKb_SpecialNPe_8010C47C(ftKb_GObj* gobj);
/* 10C4AC */ bool ftKb_SpecialNPe_8010C4AC(ftKb_GObj* gobj);
/* 10C4D4 */ void ftKb_SpecialNPe_8010C4D4(ftKb_GObj* gobj);
/* 10C560 */ void ftKb_SpecialNPe_8010C560(ftKb_GObj* gobj);
/* 10C5FC */ void ftKb_PeSpecialLw_Anim(ftKb_GObj* gobj);
/* 10C6B8 */ void ftKb_PeSpecialAirLw_Anim(ftKb_GObj* gobj);
/* 10C774 */ void ftKb_PeSpecialLw_IASA(ftKb_GObj* gobj);
/* 10C778 */ void ftKb_PeSpecialAirLw_IASA(ftKb_GObj* gobj);
/* 10C77C */ void ftKb_PeSpecialLw_Phys(ftKb_GObj* gobj);
/* 10C7B0 */ void ftKb_PeSpecialAirLw_Phys(ftKb_GObj* gobj);
/* 10C860 */ void ftKb_PeSpecialLw_Coll(ftKb_GObj* gobj);
/* 10C89C */ void ftKb_PeSpecialAirLw_Coll(ftKb_GObj* gobj);
/* 10C8D8 */ void ftKb_SpecialNPe_8010C8D8(ftKb_GObj* gobj);
/* 10C9CC */ void ftKb_SpecialNPe_8010C9CC(ftKb_GObj* gobj);
/* 10CAB4 */ void ftKb_PeSpecialLwHit_Anim(ftKb_GObj* gobj);
/* 10CB18 */ void ftKb_PeSpecialAirLwHit_Anim(ftKb_GObj* gobj);
/* 10CB7C */ void ftKb_PeSpecialLwHit_IASA(ftKb_GObj* gobj);
/* 10CB80 */ void ftKb_PeSpecialAirLwHit_IASA(ftKb_GObj* gobj);
/* 10CB84 */ void ftKb_PeSpecialLwHit_Phys(ftKb_GObj* gobj);
/* 10CBA4 */ void ftKb_PeSpecialAirLwHit_Phys(ftKb_GObj* gobj);
/* 10CBF4 */ void ftKb_PeSpecialLwHit_Coll(ftKb_GObj* gobj);
/* 10CC30 */ void ftKb_PeSpecialAirLwHit_Coll(ftKb_GObj* gobj);
/* 10CC6C */ void ftKb_SpecialNGw_8010CC6C(ftKb_GObj* gobj);
/* 10CCD4 */ void ftKb_SpecialNGw_8010CCD4(ftKb_GObj* gobj);
/* 10CD44 */ void ftKb_SpecialNGw_8010CD44(ftKb_GObj* gobj);
/* 10D074 */ void ftKb_SpecialNGw_8010D074(ftKb_GObj* gobj);
/* 10D0A8 */ void ftKb_SpecialNGw_8010D0A8(ftKb_GObj* gobj);
/* 10D130 */ void ftKb_SpecialNGw_8010D130(ftKb_GObj* gobj);
/* 10D160 */ void ftKb_SpecialNGw_8010D160(ftKb_GObj* gobj);
/* 10D188 */ void ftKb_SpecialNGw_8010D188(ftKb_GObj* gobj);
/* 10D204 */ void ftKb_SpecialNGw_8010D204(ftKb_GObj* gobj);
/* 10D280 */ void ftKb_GwSpecialN_Anim(ftKb_GObj* gobj);
/* 10D320 */ void ftKb_GwSpecialAirN_Anim(ftKb_GObj* gobj);
/* 10D3C0 */ void ftKb_GwSpecialN_IASA(ftKb_GObj* gobj);
/* 10D444 */ void ftKb_GwSpecialAirN_IASA(ftKb_GObj* gobj);
/* 10D4C8 */ void ftKb_GwSpecialN_Phys(ftKb_GObj* gobj);
/* 10D4E8 */ void ftKb_GwSpecialAirN_Phys(ftKb_GObj* gobj);
/* 10D508 */ void ftKb_GwSpecialN_Coll(ftKb_GObj* gobj);
/* 10D544 */ void ftKb_GwSpecialAirN_Coll(ftKb_GObj* gobj);
/* 10D580 */ void ftKb_SpecialNGw_8010D580(ftKb_GObj* gobj);
/* 10D5F0 */ void ftKb_SpecialNGw_8010D5F0(ftKb_GObj* gobj);
/* 10D660 */ void ftKb_SpecialNGw_8010D660(ftKb_GObj* gobj);
/* 10D6D0 */ void ftKb_SpecialNGw_8010D6D0(ftKb_GObj* gobj);
/* 3C8368 */ extern MotionState ftKb_Init_MotionStateTable[ftKb_MS_SelfCount];
/* 3CA04C */ extern MotionState ftKb_Init_UnkMotionStates0[];
/* 3CA308 */ extern char ftKb_Init_DatFilename[];
/* 3CA314 */ extern char ftKb_Init_DataName[];
/* 3CA4E0 */ extern char ftKb_Init_AnimDatFilename[];
/* 3CA55C */ extern Fighter_DemoStrings ftKb_Init_DemoMotionFilenames;
/* 3CA5B4 */ extern Fighter_CostumeStrings ftKb_Init_CostumeStrings[];
#define __GALE01_0EE528
/* 0F6178 */ static void fn_800F6178(ftKb_GObj*);
/* 0F6210 */ static void fn_800F6210(ftKb_GObj*);
/* 10B2E8 */ static void fn_8010B2E8(ftKb_GObj*);
/* 10C344 */ static void fn_8010C344(ftKb_GObj*);
/* 10C44C */ static void fn_8010C44C(ftKb_GObj*);
/* 10CD88 */ static void fn_8010CD88(ftKb_GObj*);
/* 10CFB0 */ static void fn_8010CFB0(ftKb_GObj*);
#define GALE01_132A0C
/* 132A0C */ void ftKp_Init_OnDeath(HSD_GObj* gobj);
/* 132A64 */ void ftKp_Init_UnkMotionStates3(HSD_GObj* gobj);
/* 132A84 */ void ftKp_Init_OnLoadForGKoopa(Fighter* fp);
/* 132ABC */ void ftKp_Init_OnLoad(HSD_GObj* gobj);
/* 132B38 */ void ftKp_Init_80132B38(void);
/* 132B3C */ void ftKp_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 132C1C */ void ftKp_Init_OnItemInvisible(HSD_GObj* gobj);
/* 132C64 */ void ftKp_Init_OnItemVisible(HSD_GObj* gobj);
/* 132CAC */ void ftKp_Init_OnItemDrop(HSD_GObj* gobj, bool bool1);
/* 132D00 */ void ftKp_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 132D38 */ void ftKp_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 132D7C */ void ftKp_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 132DC0 */ float ftKp_SpecialS_80132DC0(HSD_GObj* gobj);
/* 132DD0 */ float ftKp_SpecialS_80132DD0(HSD_GObj* gobj);
/* 132DE0 */ float ftKp_SpecialS_80132DE0(HSD_GObj* gobj);
/* 132DF0 */ float ftKp_SpecialS_80132DF0(HSD_GObj* gobj);
/* 132E00 */ float ftKp_SpecialS_80132E00(HSD_GObj* gobj);
/* 132E10 */ float ftKp_SpecialS_80132E10(HSD_GObj* gobj);
/* 132E20 */ float ftKp_SpecialS_80132E20(HSD_GObj* gobj);
/* 132E30 */ void ftKp_SpecialS_80132E30(HSD_GObj* gobj);
/* 132EFC */ void ftKp_SpecialS_Enter(HSD_GObj* gobj);
/* 132F94 */ void ftKp_SpecialAirS_Enter(HSD_GObj* gobj);
/* 13302C */ void ftKp_SpecialS_8013302C(HSD_GObj* gobj);
/* 1330E4 */ void ftKp_SpecialS_801330E4(HSD_GObj* gobj);
/* 13319C */ void ftKp_SpecialS_8013319C(HSD_GObj* gobj);
/* 13322C */ void ftKp_SpecialS_8013322C(HSD_GObj* gobj);
/* 1332C4 */ void ftKp_SpecialS_801332C4(HSD_GObj* gobj);
/* 133324 */ void ftKp_SpecialS_80133324(HSD_GObj* gobj);
/* 133398 */ void ftKp_SpecialS_80133398(HSD_GObj* gobj);
/* 1333F8 */ void ftKp_SpecialS_801333F8(HSD_GObj* gobj);
/* 133484 */ void ftKp_SpecialS_80133484(HSD_GObj* gobj);
/* 1334E4 */ void ftKp_SpecialS_801334E4(HSD_GObj* gobj);
/* 13359C */ void ftKp_SpecialS_8013359C(HSD_GObj* gobj);
/* 133654 */ void ftKp_SpecialSStart_Anim(HSD_GObj* gobj);
/* 133690 */ void ftKp_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 1336CC */ void ftKp_SpecialSHit_Anim(HSD_GObj* gobj);
/* 13383C */ void ftKp_SpecialAirSHit_Anim(HSD_GObj* gobj);
/* 1339AC */ void ftKp_SpecialSWait_Anim(HSD_GObj* gobj);
/* 1339B0 */ void ftKp_SpecialAirSWait_Anim(HSD_GObj* gobj);
/* 1339B4 */ void ftKp_SpecialSEndF_Anim(HSD_GObj* gobj);
/* 133A90 */ void ftKp_SpecialSEndB_Anim(HSD_GObj* gobj);
/* 133AD4 */ void ftKp_SpecialAirSEndF_Anim(HSD_GObj* gobj);
/* 133BB0 */ void ftKp_SpecialAirSEndB_Anim(HSD_GObj* gobj);
/* 133BF4 */ void ftKp_SpecialSHit_IASA(HSD_GObj* gobj);
/* 133D20 */ void ftKp_SpecialAirSHit_IASA(HSD_GObj* gobj);
/* 133E4C */ void ftKp_SpecialSWait_IASA(HSD_GObj* gobj);
/* 134038 */ void ftKp_SpecialAirSWait_IASA(HSD_GObj* gobj);
/* 134224 */ void ftKp_SpecialSStart_Phys(HSD_GObj* gobj);
/* 134244 */ void ftKp_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 134288 */ void ftKp_SpecialSHit_Phys(HSD_GObj* gobj);
/* 1342A8 */ void ftKp_SpecialAirSHit_Phys(HSD_GObj* gobj);
/* 1342C8 */ void ftKp_SpecialSWait_Phys(HSD_GObj* gobj);
/* 1342E8 */ void ftKp_SpecialAirSWait_Phys(HSD_GObj* gobj);
/* 134308 */ void ftKp_SpecialSEndF_Phys(HSD_GObj* gobj);
/* 134328 */ void ftKp_SpecialSEndB_Phys(HSD_GObj* gobj);
/* 134348 */ void ftKp_SpecialAirSEndF_Phys(HSD_GObj* gobj);
/* 134368 */ void ftKp_SpecialAirSEndB_Phys(HSD_GObj* gobj);
/* 134388 */ void ftKp_SpecialSStart_Coll(HSD_GObj* gobj);
/* 1343B0 */ void ftKp_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 1343D8 */ void ftKp_SpecialSHit_Coll(HSD_GObj* gobj);
/* 134400 */ void ftKp_SpecialAirSHit_Coll(HSD_GObj* gobj);
/* 134428 */ void ftKp_SpecialSWait_Coll(HSD_GObj* gobj);
/* 134450 */ void ftKp_SpecialAirSWait_Coll(HSD_GObj* gobj);
/* 134478 */ void ftKp_SpecialSEndF_Coll(HSD_GObj* gobj);
/* 1344A0 */ void ftKp_SpecialSEndB_Coll(HSD_GObj* gobj);
/* 1344C8 */ void ftKp_SpecialAirSEndF_Coll(HSD_GObj* gobj);
/* 1344F0 */ void ftKp_SpecialAirSEndB_Coll(HSD_GObj* gobj);
/* 13460C */ void ftKp_SpecialLw_Enter(HSD_GObj* gobj);
/* 1346A4 */ void ftKp_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 13474C */ void ftKp_SpecialLw_Anim(HSD_GObj* gobj);
/* 134788 */ void ftKp_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 1347C4 */ void ftKp_SpecialLw_Phys(HSD_GObj* gobj);
/* 134804 */ void ftKp_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 1348A0 */ void ftKp_SpecialLw_Coll(HSD_GObj* gobj);
/* 1348C0 */ void ftKp_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 134988 */ void ftKp_SpecialLw_80134988(HSD_GObj* gobj);
/* 1349C4 */ void ftKp_SpecialLwLanding_Anim(HSD_GObj* gobj);
/* 134A00 */ void ftKp_SpecialLwLanding_Phys(HSD_GObj* gobj);
/* 134A20 */ void ftKp_SpecialLwLanding_Coll(HSD_GObj* gobj);
/* 134A5C */ void ftKp_SpecialLw_80134A5C(HSD_GObj* gobj);
/* 134ACC */ void ftKp_SpecialLw_80134ACC(HSD_GObj* gobj);
/* 134D78 */ void ftKp_SpecialLw_80134D78(HSD_GObj* gobj);
/* 134DE0 */ void ftKp_SpecialLw_80134DE0(HSD_GObj* gobj);
/* 134E1C */ void ftKp_SpecialLw_80134E1C(HSD_GObj* gobj);
/* 134E58 */ void ftKp_SpecialN_Enter(HSD_GObj* gobj);
/* 134ED0 */ void ftKp_SpecialAirN_Enter(HSD_GObj* gobj);
/* 134F48 */ void ftKp_SpecialNStart_Anim(HSD_GObj* gobj);
/* 134F9C */ void ftKp_SpecialN_Anim(HSD_GObj* gobj);
/* 135040 */ void ftKp_SpecialNEnd_Anim(HSD_GObj* gobj);
/* 13507C */ void ftKp_SpecialAirNStart_Anim(HSD_GObj* gobj);
/* 1350D0 */ void ftKp_SpecialAirN_Anim(HSD_GObj* gobj);
/* 135174 */ void ftKp_SpecialAirNEnd_Anim(HSD_GObj* gobj);
/* 1351B0 */ void ftKp_SpecialNStart_IASA(HSD_GObj* gobj);
/* 1351B4 */ void ftKp_SpecialN_IASA(HSD_GObj* gobj);
/* 1352F0 */ void ftKp_SpecialNEnd_IASA(HSD_GObj* gobj);
/* 1352F4 */ void ftKp_SpecialAirNStart_IASA(HSD_GObj* gobj);
/* 1352F8 */ void ftKp_SpecialAirN_IASA(HSD_GObj* gobj);
/* 135434 */ void ftKp_SpecialAirNEnd_IASA(HSD_GObj* gobj);
/* 135438 */ void ftKp_SpecialNStart_Phys(HSD_GObj* gobj);
/* 135458 */ void ftKp_SpecialN_Phys(HSD_GObj* gobj);
/* 135478 */ void ftKp_SpecialNEnd_Phys(HSD_GObj* gobj);
/* 135498 */ void ftKp_SpecialAirNStart_Phys(HSD_GObj* gobj);
/* 1354B8 */ void ftKp_SpecialAirN_Phys(HSD_GObj* gobj);
/* 1354D8 */ void ftKp_SpecialAirNEnd_Phys(HSD_GObj* gobj);
/* 1354F8 */ void ftKp_SpecialNStart_Coll(HSD_GObj* gobj);
/* 135564 */ void ftKp_SpecialN_Coll(HSD_GObj* gobj);
/* 1355D0 */ void ftKp_SpecialNEnd_Coll(HSD_GObj* gobj);
/* 13563C */ void ftKp_SpecialAirNStart_Coll(HSD_GObj* gobj);
/* 1356A8 */ void ftKp_SpecialAirN_Coll(HSD_GObj* gobj);
/* 135714 */ void ftKp_SpecialAirNEnd_Coll(HSD_GObj* gobj);
/* 135780 */ void ftKp_SpecialN_80135780(HSD_GObj* gobj);
/* 135A2C */ void ftKp_SpecialHi_Enter(HSD_GObj* gobj);
/* 135B04 */ void ftKp_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 135C08 */ void ftKp_SpecialHi_Anim(HSD_GObj* gobj);
/* 135C60 */ void ftKp_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 135D78 */ void ftKp_SpecialHi_IASA(HSD_GObj* gobj);
/* 135D7C */ void ftKp_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 135D80 */ void ftKp_SpecialHi_Phys(HSD_GObj* gobj);
/* 135DE0 */ void ftKp_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 135E4C */ void ftKp_SpecialHi_Coll(HSD_GObj* gobj);
/* 135F6C */ void ftKp_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 3CEDC0 */ extern MotionState ftKp_Init_MotionStateTable[ftKp_MS_SelfCount];
/* 3CF0A0 */ extern char ftKp_Init_DatFilename[];
/* 3CF0AC */ extern char ftKp_Init_DataName[];
/* 3CF1E0 */ extern char ftKp_Init_AnimDatFilename[];
/* 3CF25C */ extern Fighter_DemoStrings ftKp_Init_DemoMotionFilenames;
/* 3CF26C */ extern Fighter_CostumeStrings ftKp_Init_CostumeStrings[];
#define GALE01_0EB3BC
/* 0EB3BC */ void ftLk_AttackAir_800EB3BC(HSD_GObj* gobj);
/* 0EB42C */ void ftLk_AttackAir_Enter(HSD_GObj* gobj);
/* 0EB618 */ void ftLk_AttackAir_SetupParts(HSD_GObj* gobj);
#define GALE01_0EAD64
/* 0EAD64 */ bool ftLk_Init_BoomerangExists(HSD_GObj* gobj);
/* 0EAD84 */ void ftLk_Init_OnDeath(HSD_GObj* gobj);
/* 0EAE04 */ void ftLk_Init_OnLoadForCLink(Fighter* fp);
/* 0EAE44 */ void ftLk_Init_OnLoad(HSD_GObj* gobj);
/* 0EAF38 */ void ftLk_800EAF38(HSD_GObj* gobj);
/* 0EAF58 */ void ftLk_800EAF58(HSD_GObj* gobj);
/* 0EAFA4 */ void ftLk_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 0EB018 */ void ftLk_Init_OnItemInvisible(HSD_GObj* gobj);
/* 0EB060 */ void ftLk_Init_OnItemVisible(HSD_GObj* gobj);
/* 0EB0A8 */ void ftLk_Init_OnItemDrop(HSD_GObj* gobj, bool arg1);
/* 0EB11C */ void ftLk_Init_OnItemPickupExt(HSD_GObj* gobj, int arg1);
/* 0EB1FC */ void ftLk_Init_OnItemDropExt(HSD_GObj* gobj, bool arg1);
/* 0EB250 */ void ftLk_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 0EB2AC */ void ftLk_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 0EB2F0 */ void ftLk_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 0EB334 */ void ftLk_800EB334(HSD_GObj* gobj);
/* 0EC354 */ void ftLk_SpecialS_Enter(HSD_GObj* gobj);
/* 0EC404 */ void ftLk_SpecialAirS_Enter(HSD_GObj* gobj);
/* 3B7520 */ extern ftLk_SpecialN_Vec3Group const ftLk_Init_Vec3Group;
/* 3C7E18 */ extern MotionState ftLk_Init_MotionStateTable[ftLk_MS_SelfCount];
/* 3C80B8 */ extern char ftLk_Init_DatFilename[];
/* 3C80C4 */ extern char ftLk_Init_DataName[];
/* 3C8224 */ extern char ftLk_Init_AnimDatFilename[];
/* 3C82A0 */ extern Fighter_DemoStrings ftLk_Init_DemoMotionFilenames;
/* 3C82B0 */ extern Fighter_CostumeStrings ftLk_Init_CostumeStrings[];
#define GALE01_0EBB1C
/* 0EBB1C */ void ftLk_SpecialHi_Enter(HSD_GObj* gobj);
/* 0EBB80 */ void ftLk_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 0EBC10 */ void ftLk_SpecialHi_Anim(HSD_GObj* gobj);
/* 0EBC4C */ void ftLk_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 0EBCAC */ void ftLk_SpecialHi_IASA(HSD_GObj* gobj);
/* 0EBCB0 */ void ftLk_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 0EBCB4 */ void ftLk_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 0EBD30 */ void ftLk_SpecialHi_Phys(HSD_GObj* gobj);
/* 0EBDC0 */ void ftLk_SpecialHi_Coll(HSD_GObj* gobj);
/* 0EBDFC */ void ftLk_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 0EBEC4 */ void ftLk_SpecialHi_ProcessPartLThumbNb(HSD_GObj* gobj);
/* 0EBEEC */ void ftLk_SpecialHi_GetPosWithAdjustedY(HSD_GObj* gobj,
Vec3* pos);
/* 0EBF20 */ int ftLk_SpecialHi_GetFv4(HSD_GObj* gobj);
#define GALE01_0EB65C
/* 0EB65C */ void ftLk_SpecialLw_Enter(HSD_GObj* gobj);
/* 0EB6DC */ void ftLk_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 0EB8A4 */ void ftLk_SpecialLw_Anim(HSD_GObj* gobj);
/* 0EB8E0 */ void ftLk_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 0EB91C */ void ftLk_SpecialLw_Phys(HSD_GObj* gobj);
/* 0EB93C */ void ftLk_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 0EB95C */ void ftLk_SpecialLw_Coll(HSD_GObj* gobj);
/* 0EB9D4 */ void ftLk_SpecialAirLw_Coll(HSD_GObj* gobj);
#define GALE01_0ECBC4
/* 0ECBC4 */ ftLk_SpecialNIndex ftLk_SpecialN_GetIndex(ftLk_GObj* gobj);
/* 0ECC0C */ void ftLk_SpecialN_UnsetArrow(ftLk_GObj* gobj);
/* 0ECC6C */ void ftLk_SpecialN_UnsetFv14(ftLk_GObj* gobj);
/* 0ECCCC */ bool ftLk_SpecialN_IsActiveAnd2071b6(ftLk_GObj* gobj);
/* 0ECD04 */ void ftLk_SpecialN_ProcessFv10(ftLk_GObj* gobj);
/* 0ECD58 */ void ftLk_SpecialN_ProcessFv14(ftLk_GObj* gobj);
/* 0ECDAC */ void ftLk_SpecialN_Enter(ftLk_GObj* gobj);
/* 0ECF78 */ void ftLk_SpecialAirN_Enter(ftLk_GObj* gobj);
/* 0ED15C */ void ftLk_SpecialNStart_Anim(ftLk_GObj* gobj);
/* 0ED480 */ void ftLk_SpecialNLoop_Anim(ftLk_GObj* gobj);
/* 0ED5B4 */ void ftLk_SpecialNEnd_Anim(ftLk_GObj* gobj);
/* 0ED72C */ void ftLk_SpecialAirNStart_Anim(ftLk_GObj* gobj);
/* 0EDA58 */ void ftLk_SpecialAirNLoop_Anim(ftLk_GObj* gobj);
/* 0EDB8C */ void ftLk_SpecialAirNEnd_Anim(ftLk_GObj* gobj);
/* 0EDD88 */ void ftLk_SpecialNStart_IASA(ftLk_GObj* gobj);
/* 0EDE30 */ void ftLk_SpecialNLoop_IASA(ftLk_GObj* gobj);
/* 0EDEAC */ void ftLk_SpecialNEnd_IASA(ftLk_GObj* gobj);
/* 0EDEB0 */ void ftLk_SpecialAirNStart_IASA(ftLk_GObj* gobj);
/* 0EDF58 */ void ftLk_SpecialAirNLoop_IASA(ftLk_GObj* gobj);
/* 0EDFD4 */ void ftLk_SpecialAirNEnd_IASA(ftLk_GObj* gobj);
/* 0EDFD8 */ void ftLk_SpecialNStart_Phys(ftLk_GObj* gobj);
/* 0EDFF8 */ void ftLk_SpecialNLoop_Phys(ftLk_GObj* gobj);
/* 0EE018 */ void ftLk_SpecialNEnd_Phys(ftLk_GObj* gobj);
/* 0EE038 */ void ftLk_SpecialAirNStart_Phys(ftLk_GObj* gobj);
/* 0EE058 */ void ftLk_SpecialAirNLoop_Phys(ftLk_GObj* gobj);
/* 0EE078 */ void ftLk_SpecialAirNEnd_Phys(ftLk_GObj* gobj);
/* 0EE098 */ void ftLk_SpecialNStart_Coll(ftLk_GObj* gobj);
/* 0EE120 */ void ftLk_SpecialNLoop_Coll(ftLk_GObj* gobj);
/* 0EE1A8 */ void ftLk_SpecialNEnd_Coll(ftLk_GObj* gobj);
/* 0EE2E0 */ void ftLk_SpecialAirNStart_Coll(ftLk_GObj* gobj);
/* 0EE368 */ void ftLk_SpecialAirNLoop_Coll(ftLk_GObj* gobj);
/* 0EE3F0 */ void ftLk_SpecialAirNEnd_Coll(ftLk_GObj* gobj);
#define GALE01_0EC354
/* 0EBFCC */ bool ftLk_SepcialS_Get2219b5(HSD_GObj* gobj);
/* 0EBFDC */ bool ftLk_SpecialS_Is2071b0_5to13(HSD_GObj* gobj);
/* 0EC00C */ bool ftLk_SpecialS_Is2071b0_1to13(HSD_GObj* gobj);
/* 0EC03C */ void ftLk_SpecialS_RemoveBoomerang0(HSD_GObj* gobj);
/* 0EC06C */ void ftLk_SpecialS_RemoveBoomerang1(HSD_GObj* gobj);
/* 0EC354 */ void ftLk_SpecialS_Enter(HSD_GObj* gobj);
/* 0EC404 */ void ftLk_SpecialAirS_Enter(HSD_GObj* gobj);
/* 0EC4B4 */ void ftLk_SpecialS2_Enter(HSD_GObj* gobj);
/* 0EC54C */ void ftLk_SpecialS1_Anim(HSD_GObj* gobj);
/* 0EC588 */ void ftLk_SpecialS2_Anim(HSD_GObj* gobj);
/* 0EC5F8 */ void ftLk_SpecialS1Empty_Anim(HSD_GObj* gobj);
/* 0EC634 */ void ftLk_SpecialAirS1_Anim(HSD_GObj* gobj);
/* 0EC670 */ void ftLk_SpecialAirS2_Anim(HSD_GObj* gobj);
/* 0EC6E0 */ void ftLk_SpecialAirS1Empty_Anim(HSD_GObj* gobj);
/* 0EC71C */ void ftLk_SpecialS2_IASA(HSD_GObj* gobj);
/* 0EC810 */ void ftLk_SpecialAirS2_IASA(HSD_GObj* gobj);
/* 0EC88C */ void ftLk_SpecialS1_Phys(HSD_GObj* gobj);
/* 0EC8AC */ void ftLk_SpecialS2_Phys(HSD_GObj* gobj);
/* 0EC8CC */ void ftLk_SpecialS1Empty_Phys(HSD_GObj* gobj);
/* 0EC8EC */ void ftLk_SpecialAirS1_Phys(HSD_GObj* gobj);
/* 0EC90C */ void ftLk_SpecialAirS2_Phys(HSD_GObj* gobj);
/* 0EC92C */ void ftLk_SpecialAirS1Empty_Phys(HSD_GObj* gobj);
/* 0EC94C */ void ftLk_SpecialS1_Coll(HSD_GObj* gobj);
/* 0EC9C4 */ void ftLk_SpecialS2_Coll(HSD_GObj* gobj);
/* 0ECA1C */ void ftLk_SpecialS1Empty_Coll(HSD_GObj* gobj);
/* 0ECA88 */ void ftLk_SpecialAirS1_Coll(HSD_GObj* gobj);
/* 0ECB00 */ void ftLk_SpecialAirS2_Coll(HSD_GObj* gobj);
/* 0ECB58 */ void ftLk_SpecialAirS1Empty_Coll(HSD_GObj* gobj);
#define MELEE_FT_CHARA_FTLUIGI_FORWARD_H
static MotionFlags const ftLg_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftLg_MF_SpecialN =
ftLg_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftLg_MF_SpecialS =
ftLg_MF_Special | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftLg_MF_SpecialHi =
ftLg_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftLg_MF_SpecialLw =
ftLg_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_KeepSfx;
static MotionFlags const ftLg_MF_SpecialAirN =
ftLg_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftLg_MF_SpecialAirS =
ftLg_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftLg_MF_SpecialAirHi =
ftLg_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftLg_MF_SpecialAirLw =
ftLg_MF_SpecialLw | Ft_MF_SkipParasol;
typedef enum ftLuigi_MotionState {
ftLg_MS_SpecialN = ftCo_MS_Count,
ftLg_MS_SpecialAirN,
ftLg_MS_SpecialSStart,
ftLg_MS_SpecialSHold,
ftLg_MS_SpecialS2,
ftLg_MS_SpecialSEnd,
ftLg_MS_SpecialS,
ftLg_MS_SpecialSMisfire,
ftLg_MS_SpecialAirSStart,
ftLg_MS_SpecialAirSHold,
ftLg_MS_SpecialAirS2,
ftLg_MS_SpecialAirSEnd,
ftLg_MS_SpecialAirS,
ftLg_MS_SpecialAirSMisfire,
ftLg_MS_SpecialHi,
ftLg_MS_SpecialAirHi,
ftLg_MS_SpecialLw,
ftLg_MS_SpecialAirLw,
ftLg_MS_Count,
ftLg_MS_SelfCount = ftLg_MS_Count - ftCo_MS_Count,
} ftLuigi_MotionState;
typedef enum ftLg_Submotion {
ftLg_SM_SpecialN = ftCo_SM_Count,
ftLg_SM_SpecialAirN,
ftLg_SM_SpecialSStart,
ftLg_SM_SpecialSHold,
ftLg_SM_SpecialS,
ftLg_SM_SpecialSMisfire,
ftLg_SM_SpecialS2,
ftLg_SM_SpecialSEnd,
ftLg_SM_SpecialAirSStart,
ftLg_SM_SpecialAirSHold,
ftLg_SM_SpecialAirS,
ftLg_SM_SpecialAirSMisfire,
ftLg_SM_SpecialAirSEnd,
ftLg_SM_SpecialHi,
ftLg_SM_SpecialAirHi,
ftLg_SM_SpecialLw,
ftLg_SM_SpecialAirLw,
ftLg_SM_Count,
ftLg_SM_SelfCount = ftLg_SM_Count - ftCo_SM_Count,
} ftLg_Submotion;
#define GALE01_1422E8
/* 1422E8 */ void ftLg_Init_OnDeath(HSD_GObj* gobj);
/* 142324 */ void ftLg_Init_OnLoad(HSD_GObj* gobj);
/* 142388 */ void ftLg_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 142468 */ void ftLg_Init_OnItemInvisible(HSD_GObj* gobj);
/* 1424B0 */ void ftLg_Init_OnItemVisible(HSD_GObj* gobj);
/* 1424F8 */ void ftLg_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 14254C */ void ftLg_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 142584 */ void ftLg_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 1425C8 */ void ftLg_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 14260C */ void ftLg_Init_UnkDemoCallbacks0(int arg0, int* arg1, int* arg2);
/* 142640 */ char* ftLg_Init_GetMotionFileString(enum_t demoMotionArg);
/* 3D0628 */ extern MotionState ftLg_Init_MotionStateTable[ftLg_MS_SelfCount];
/* 3D0868 */ extern MotionState ftLg_Init_UnkMotionStates0[];
/* 3D08A8 */ extern char ftLg_Init_DatFilename[];
/* 3D08B4 */ extern char ftLg_Init_DataName[];
/* 3D09E8 */ extern char ftLg_Init_AnimDatFilename[];
/* 3D0A64 */ extern Fighter_DemoStrings ftLg_Init_DemoMotionFilenames;
/* 3D0AB4 */ extern Fighter_CostumeStrings ftLg_Init_CostumeStrings[];
/// @file
/// Up Special - Super Jump Punch (SpecialHi)
#define GALE01_143FC8
/* 143FC8 */ void ftLg_SpecialHi_Enter(HSD_GObj* gobj);
/* 144024 */ void ftLg_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 144098 */ void ftLg_SpecialHi_Anim(HSD_GObj* gobj);
/* 1440F8 */ void ftLg_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 144158 */ void ftLg_SpecialHi_IASA(HSD_GObj* gobj);
/* 1442A0 */ void ftLg_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 1443E8 */ void ftLg_SpecialHi_Phys(HSD_GObj* gobj);
/* 144420 */ void ftLg_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 1444B4 */ void ftLg_SpecialHi_CheckLanding(HSD_GObj* gobj);
/* 1444E4 */ void ftLg_SpecialHi_Coll(HSD_GObj* gobj);
/* 144554 */ void ftLg_SpecialAirHi_Coll(HSD_GObj* gobj);
/// @file
/// Down Special - Luigi Cyclone (SpecialLw)
#define GALE01_1445C4
/* 1445C4 */ void ftLg_SpecialLw_UpdateRot(HSD_GObj* gobj);
/* 1445F0 */ void ftLg_SpecialLw_Enter(HSD_GObj* gobj);
/* 144708 */ void ftLg_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 144830 */ void ftLg_SpecialLw_Anim(HSD_GObj* gobj);
/* 14487C */ void ftLg_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 144950 */ void ftLg_SpecialLw_IASA(HSD_GObj* gobj);
/* 144954 */ void ftLg_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 144958 */ void ftLg_SpecialLw_Phys(HSD_GObj* gobj);
/* 144A7C */ void ftLg_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 144B38 */ void ftLg_SpecialLw_Coll(HSD_GObj* gobj);
/* 144CEC */ void ftLg_SpecialAirLw_Coll(HSD_GObj* gobj);
/// @file
/// Netural Special - Fireball (SpecialN)
#define GALE01_14267C
/* 14267C */ void ftLg_SpecialN_Enter(HSD_GObj* gobj);
/* 1426EC */ void ftLg_SpecialAirN_Enter(HSD_GObj* gobj);
/* 14275C */ void ftLg_SpecialN_Anim(HSD_GObj* gobj);
/* 142798 */ void ftLg_SpecialAirN_Anim(HSD_GObj* gobj);
/* 1427D4 */ void ftLg_SpecialN_IASA(HSD_GObj* gobj);
/* 142804 */ void ftLg_SpecialAirN_IASA(HSD_GObj* gobj);
/* 142834 */ void ftLg_SpecialN_Phys(HSD_GObj* gobj);
/* 142854 */ void ftLg_SpecialAirN_Phys(HSD_GObj* gobj);
/* 142874 */ void ftLg_SpecialN_Coll(HSD_GObj* gobj);
/* 1428E8 */ void ftLg_SpecialAirN_Coll(HSD_GObj* gobj);
/* 14295C */ void ftLg_SpecialN_FireSpawn(HSD_GObj* gobj);
/// @file
/// Side Special - Green Missile (SpecialS)
#define GALE01_142A24
/* 142A24 */ void ftLg_SpecialS_SetGFX(HSD_GObj* gobj);
/* 142A5C */ void ftLg_SpecialS_SetVars(HSD_GObj* gobj);
/* 142B14 */ void ftLg_SpecialS_Enter(HSD_GObj* gobj);
/* 142B88 */ void ftLg_SpecialAirS_Enter(HSD_GObj* gobj);
/* 142C00 */ void ftLg_SpecialS_OnGiveDamage(HSD_GObj* gobj);
/* 142C40 */ void ftLg_SpecialSStart_Anim(HSD_GObj* gobj);
/* 142C7C */ void ftLg_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 142CB8 */ void ftLg_SpecialSStart_IASA(HSD_GObj* gobj);
/* 142CBC */ void ftLg_SpecialAirSStart_IASA(HSD_GObj* gobj);
/* 142CC0 */ void ftLg_SpecialSStart_Phys(HSD_GObj* gobj);
/* 142D00 */ void ftLg_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 142D60 */ void ftLg_SpecialSStart_Coll(HSD_GObj* gobj);
/* 142D9C */ void ftLg_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 142DD8 */ void ftLg_SpecialSStart_GroundToAir(HSD_GObj* gobj);
/* 142E38 */ void ftLg_SpecialAirSStart_AirToGround(HSD_GObj* gobj);
/* 142E98 */ void ftLg_SpecialSHold_Anim(HSD_GObj* gobj);
/* 142F38 */ void ftLg_SpecialAirSHold_Anim(HSD_GObj* gobj);
/* 142FD8 */ void ftLg_SpecialSHold_IASA(HSD_GObj* gobj);
/* 143008 */ void ftLg_SpecialAirSHold_IASA(HSD_GObj* gobj);
/* 143038 */ void ftLg_SpecialSHold_Phys(HSD_GObj* gobj);
/* 143058 */ void ftLg_SpecialAirSHold_Phys(HSD_GObj* gobj);
/* 143078 */ void ftLg_SpecialSHold_Coll(HSD_GObj* gobj);
/* 1430B4 */ void ftLg_SpecialAirSHold_Coll(HSD_GObj* gobj);
/* 1430F0 */ void ftLg_SpecialSHold_GroundToAir(HSD_GObj* gobj);
/* 143150 */ void ftLg_SpecialAirSHold_AirToGround(HSD_GObj* gobj);
/* 1431B0 */ void ftLg_SpecialSHold_Enter(HSD_GObj* gobj);
/* 143204 */ void ftLg_SpecialAirSHold_Enter(HSD_GObj* gobj);
/* 143258 */ void ftLg_SpecialS_Anim(HSD_GObj* gobj);
/* 143304 */ void ftLg_SpecialAirS_Anim(HSD_GObj* gobj);
/* 1433A8 */ void ftLg_SpecialS_IASA(HSD_GObj* gobj);
/* 1433AC */ void ftLg_SpecialAirS_IASA(HSD_GObj* gobj);
/* 1433B0 */ void ftLg_SpecialS_Phys(HSD_GObj* gobj);
/* 1433D0 */ void ftLg_SpecialAirS_Phys(HSD_GObj* gobj);
/* 1433F0 */ void ftLg_SpecialS_Coll(HSD_GObj* gobj);
/* 14342C */ void ftLg_SpecialAirS_Coll(HSD_GObj* gobj);
/* 143468 */ void ftLg_SpecialSLaunch_GroundToAir(HSD_GObj* gobj);
/* 1434C8 */ void ftLg_SpecialAirSLaunch_AirToGround(HSD_GObj* gobj);
/* 143528 */ void ftLg_SpecialSLaunch_Enter(HSD_GObj* gobj);
/* 143600 */ void ftLg_SpecialAirSLaunch_Enter(HSD_GObj* gobj);
/* 1436D8 */ void ftLg_SpecialSMisfire_Anim(HSD_GObj* gobj);
/* 143784 */ void ftLg_SpecialAirSMisfire_Anim(HSD_GObj* gobj);
/* 143828 */ void ftLg_SpecialSMisfire_IASA(HSD_GObj* gobj);
/* 14382C */ void ftLg_SpecialAirSMisfire_IASA(HSD_GObj* gobj);
/* 143830 */ void ftLg_SpecialSMisfire_Phys(HSD_GObj* gobj);
/* 143850 */ void ftLg_SpecialAirSMisfire_Phys(HSD_GObj* gobj);
/* 143870 */ void ftLg_SpecialSMisfire_Coll(HSD_GObj* gobj);
/* 1438AC */ void ftLg_SpecialAirSMisfire_Coll(HSD_GObj* gobj);
/* 1438E8 */ void ftLg_SpecialSMisfire_GroundToAir(HSD_GObj* gobj);
/* 143948 */ void ftLg_SpecialAirSMisfire_AirToGround(HSD_GObj* gobj);
/* 1439A8 */ void ftLg_SpecialSMisfire_Enter(HSD_GObj* gobj);
/* 143A60 */ void ftLg_SpecialAirSMisfire_Enter(HSD_GObj* gobj);
/* 143B18 */ void ftLg_SpecialS2_Anim(HSD_GObj* gobj);
/* 143B1C */ void ftLg_SpecialAirS2_Anim(HSD_GObj* gobj);
/* 143B58 */ void ftLg_SpecialS2_IASA(HSD_GObj* gobj);
/* 143B5C */ void ftLg_SpecialAirS2_IASA(HSD_GObj* gobj);
/* 143B60 */ void ftLg_SpecialS2_Phys(HSD_GObj* gobj);
/* 143B64 */ void ftLg_SpecialAirS2_Phys(HSD_GObj* gobj);
/* 143BE0 */ void ftLg_SpecialS2_Coll(HSD_GObj* gobj);
/* 143BE4 */ void ftLg_SpecialAirS2_Coll(HSD_GObj* gobj);
/* 143C60 */ void ftLg_SpecialSFly_Enter(HSD_GObj* gobj);
/* 143D7C */ void ftLg_SpecialSEnd_Anim(HSD_GObj* gobj);
/* 143DB8 */ void ftLg_SpecialAirSEnd_Anim(HSD_GObj* gobj);
/* 143DF4 */ void ftLg_SpecialSEnd_IASA(HSD_GObj* gobj);
/* 143DF8 */ void ftLg_SpecialAirSEnd_IASA(HSD_GObj* gobj);
/* 143DFC */ void ftLg_SpecialSEnd_Phys(HSD_GObj* gobj);
/* 143E3C */ void ftLg_SpecialAirSEnd_Phys(HSD_GObj* gobj);
/* 143E8C */ void ftLg_SpecialSEnd_Coll(HSD_GObj* gobj);
/* 143EC8 */ void ftLg_SpecialAirSEnd_Coll(HSD_GObj* gobj);
/* 143F18 */ void ftLg_SpecialSEnd_Enter(HSD_GObj* gobj);
/* 143F70 */ void ftLg_SpecialAirSEnd_Enter(HSD_GObj* gobj);
#define GALE01_0E08CC
static usize_t const aux_states_count = 2;
/* 0E08CC */ void ftMr_Init_OnDeath(HSD_GObj* gobj);
/* 0E0920 */ void ftMr_Init_OnLoadForDrMario(Fighter*);
/* 0E0960 */ void ftMr_Init_OnLoad(HSD_GObj* gobj);
/* 0E0A00 */ void ftMr_Init_OnTakeDamage(HSD_GObj* gobj);
/* 0E0A20 */ void ftMr_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 0E0B00 */ void ftMr_Init_OnItemInvisible(HSD_GObj* gobj);
/* 0E0B48 */ void ftMr_Init_OnItemVisible(HSD_GObj* gobj);
/* 0E0B90 */ void ftMr_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 0E0BE4 */ void ftMr_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 0E0C24 */ void ftMr_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 0E0C68 */ void ftMr_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 0E0CAC */ void ftMr_Init_UnkDemoCallbacks0(int, int*, int*);
/* 0E0CE0 */ char* ftMr_Init_GetMotionFileString(enum_t);
/* 3C7120 */ extern MotionState ftMr_Init_MotionStateTable[ftMr_MS_SelfCount];
/* 3C7260 */ extern MotionState ftMr_Init_UnkMotionStates0[aux_states_count];
#define GALE01_0E1A54
/* 0E1A54 */ void ftMr_SpecialHi_Enter(HSD_GObj* gobj);
/* 0E1AB0 */ void ftMr_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 0E1B24 */ void ftMr_SpecialHi_Anim(HSD_GObj* gobj);
/* 0E1B84 */ void ftMr_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 0E1BE4 */ void ftMr_SpecialHi_IASA(HSD_GObj* gobj);
/* 0E1D2C */ void ftMr_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 0E1E74 */ void ftMr_SpecialHi_Phys(HSD_GObj* gobj);
/* 0E1EAC */ void ftMr_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 0E1F40 */ void ftMr_SpecialHi_CheckLanding(HSD_GObj* gobj);
/* 0E1F70 */ void ftMr_SpecialHi_Coll(HSD_GObj* gobj);
/* 0E1FE0 */ void ftMr_SpecialAirHi_Coll(HSD_GObj* gobj);
#define GALE01_0E207C
/* 0E207C */ void ftMr_SpecialLw_Enter(HSD_GObj* gobj);
/* 0E2194 */ void ftMr_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 0E22BC */ void ftMr_SpecialLw_Anim(HSD_GObj* gobj);
/* 0E2308 */ void ftMr_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 0E23DC */ void ftMr_SpecialLw_IASA(HSD_GObj* gobj);
/* 0E23E0 */ void ftMr_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 0E23E4 */ void ftMr_SpecialLw_Phys(HSD_GObj* gobj);
/* 0E2508 */ void ftMr_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 0E25C4 */ void ftMr_SpecialLw_Coll(HSD_GObj* gobj);
/* 0E2778 */ void ftMr_SpecialAirLw_Coll(HSD_GObj* gobj);
#define GALE01_0E0D1C
/* 0E0D1C */ int ftMr_SpecialN_VitaminRandom(HSD_GObj* gobj);
/* 0E0DA8 */ void ftMr_SpecialN_Enter(HSD_GObj* gobj);
/* 0E0E18 */ void ftMr_SpecialN_Anim(HSD_GObj* gobj);
/* 0E0E54 */ void ftMr_SpecialN_IASA(HSD_GObj* gobj);
/* 0E0E84 */ void ftMr_SpecialN_Phys(HSD_GObj* gobj);
/* 0E0EA4 */ void ftMr_SpecialN_Coll(HSD_GObj* gobj);
/* 0E0EE0 */ void ftMr_SpecialN_ItemFireSpawn(HSD_GObj* gobj);
/* 0E1040 */ void ftMr_SpecialAirN_Enter(HSD_GObj* gobj);
/* 0E10B0 */ void ftMr_SpecialAirN_Anim(HSD_GObj* gobj);
/* 0E10EC */ void ftMr_SpecialAirN_IASA(HSD_GObj* gobj);
/* 0E111C */ void ftMr_SpecialAirN_Phys(HSD_GObj* gobj);
/* 0E113C */ void ftMr_SpecialAirN_Coll(HSD_GObj* gobj);
/* 0E1178 */ void ftMr_SpecialN_GroundToAir(HSD_GObj* gobj);
/* 0E11E0 */ void ftMr_SpecialAirN_AirToGround(HSD_GObj* gobj);
#define GALE01_0E1248
/* 0E1248 */ void ftMr_SpecialS_CreateCape(HSD_GObj* gobj);
/* 0E132C */ void ftMr_SpecialS_Reset(HSD_GObj* gobj);
/* 0E1368 */ void ftMr_SpecialS_RemoveCape(HSD_GObj* gobj);
/* 0E13C8 */ void ftMr_SpecialS_EnterHitlag(HSD_GObj* gobj);
/* 0E13F8 */ void ftMr_SpecialS_ExitHitlag(HSD_GObj* gobj);
/* 0E1428 */ bool ftMr_SpecialS_CheckItemCapeRemove(HSD_GObj* gobj);
/* 0E1450 */ void ftMr_SpecialS_Enter(HSD_GObj* gobj);
/* 0E14C8 */ void ftMr_SpecialAirS_Enter(HSD_GObj* gobj);
/* 0E1550 */ void ftMr_SpecialS_Anim(HSD_GObj* gobj);
/* 0E158C */ void ftMr_SpecialAirS_Anim(HSD_GObj* gobj);
/* 0E15C8 */ void ftMr_SpecialS_IASA(HSD_GObj* gobj);
/* 0E15CC */ void ftMr_SpecialAirS_IASA(HSD_GObj* gobj);
/* 0E15D0 */ void ftMr_SpecialS_Phys(HSD_GObj* gobj);
/* 0E16E0 */ void ftMr_SpecialAirS_Phys(HSD_GObj* gobj);
/* 0E1840 */ void ftMr_SpecialS_Coll(HSD_GObj* gobj);
/* 0E187C */ void ftMr_SpecialAirS_Coll(HSD_GObj* gobj);
/* 0E18B8 */ void ftMr_SpecialS_GroundToAir(HSD_GObj* gobj);
/* 0E198C */ void ftMr_SpecialAirS_AirToGround(HSD_GObj* gobj);
#define GALE01_3C59D8
/* 3C59D8 */ extern Fighter_DemoStrings ftMr_Init_DemoMotionFilenames;
/* 3C5A20 */ extern char* ftMr_Init_DemoViMotionFilenames[];
#define MELEE_FT_CHARA_FTMARIO_INLINES_H
static inline ftMario_DatAttrs* GetMarioAttr(Fighter* fp)
{
ftMario_DatAttrs* mario_attr = fp->dat_attrs;
return mario_attr;
}
#define GALE01_136258
/* 136258 */ void ftMs_Init_OnDeath(HSD_GObj* gobj);
/* 1362B0 */ void ftMs_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 136390 */ void ftMs_Init_OnItemInvisible(HSD_GObj* gobj);
/* 1363D8 */ void ftMs_Init_OnItemVisible(HSD_GObj* gobj);
/* 136420 */ void ftMs_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 136474 */ void ftMs_Init_OnLoadForRoy(Fighter* fp);
/* 1364AC */ void ftMs_Init_OnLoad(HSD_GObj* gobj);
/* 1364E8 */ void ftMs_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 136520 */ void ftMs_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 136564 */ void ftMs_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 1365A8 */ void ftMs_SpecialN_801365A8(HSD_GObj* gobj);
/* 13666C */ void ftMs_SpecialN_8013666C(HSD_GObj* gobj);
/* 136730 */ void ftMs_SpecialN_80136730(HSD_GObj* gobj);
/* 3CF420 */ extern MotionState ftMs_Init_MotionStateTable[ftMs_MS_SelfCount];
/* 3CF820 */ extern char ftMs_Init_DatFilename[];
/* 3CF82C */ extern char ftMs_Init_DataName[];
/* 3CF98C */ extern char ftMs_Init_AnimDatFilename[];
/* 3CFA08 */ extern Fighter_DemoStrings ftMs_Init_DemoMotionFilenames;
/* 3CFA18 */ extern Fighter_CostumeStrings ftMs_Init_CostumeStrings[];
#define GALE01_138348
/* 138348 */ void ftMs_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 138940 */ void ftMs_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 13826C */ void ftMs_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 1384F0 */ void ftMs_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 13873C */ void ftMs_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 138884 */ void ftMs_SpecialHi_80138884(HSD_GObj* gobj);
/* 1382E8 */ void ftMs_SpecialHi_Anim(HSD_GObj* gobj);
/* 1388B4 */ void ftMs_SpecialHi_Coll(HSD_GObj* gobj);
/* 138208 */ void ftMs_SpecialHi_Enter(HSD_GObj* gobj);
/* 1383A8 */ void ftMs_SpecialHi_IASA(HSD_GObj* gobj);
/* 138638 */ void ftMs_SpecialHi_Phys(HSD_GObj* gobj);
#define GALE01_138B64
/* 138B64 */ void ftMs_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 138CFC */ void ftMs_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 138A30 */ void ftMs_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 138F14 */ void ftMs_SpecialAirLwHit_Anim(HSD_GObj* gobj);
/* 139044 */ void ftMs_SpecialAirLwHit_Coll(HSD_GObj* gobj);
/* 138FC4 */ void ftMs_SpecialAirLwHit_IASA(HSD_GObj* gobj);
/* 138FE8 */ void ftMs_SpecialAirLwHit_Phys(HSD_GObj* gobj);
/* 138C24 */ void ftMs_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 138C5C */ void ftMs_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 138D38 */ void ftMs_SpecialLw_80138D38(HSD_GObj* gobj);
/* 138DD0 */ void ftMs_SpecialLw_80138DD0(HSD_GObj* gobj);
/* 139080 */ void ftMs_SpecialLw_80139080(HSD_GObj* gobj);
/* 1390E0 */ void ftMs_SpecialLw_801390E0(HSD_GObj* gobj);
/* 139140 */ void ftMs_SpecialLw_80139140(HSD_GObj* gobj);
/* 138AA8 */ void ftMs_SpecialLw_Anim(HSD_GObj* gobj);
/* 138CC0 */ void ftMs_SpecialLw_Coll(HSD_GObj* gobj);
/* 1389CC */ void ftMs_SpecialLw_Enter(HSD_GObj* gobj);
/* 138E68 */ void ftMs_SpecialLwHit_Anim(HSD_GObj* gobj);
/* 139008 */ void ftMs_SpecialLwHit_Coll(HSD_GObj* gobj);
/* 138FC0 */ void ftMs_SpecialLwHit_IASA(HSD_GObj* gobj);
/* 138FC8 */ void ftMs_SpecialLwHit_Phys(HSD_GObj* gobj);
/* 138C20 */ void ftMs_SpecialLw_IASA(HSD_GObj* gobj);
/* 138C28 */ void ftMs_SpecialLw_Phys(HSD_GObj* gobj);
#define GALE01_137010
/* 136744 */ void ftMs_SpecialN_Enter(Fighter_GObj* gobj);
/* 1367B8 */ void ftMs_SpecialAirN_Enter(Fighter_GObj* gobj);
/* 136844 */ void ftMs_SpecialNStart_Anim(Fighter_GObj* gobj);
/* 1368AC */ void ftMs_SpecialAirNStart_Anim(Fighter_GObj* gobj);
/* 136914 */ void ftMs_SpecialNStart_IASA(Fighter_GObj* gobj);
/* 136918 */ void ftMs_SpecialAirNStart_IASA(Fighter_GObj* gobj);
/* 13691C */ void ftMs_SpecialNStart_Phys(Fighter_GObj* gobj);
/* 13695C */ void ftMs_SpecialAirNStart_Phys(Fighter_GObj* gobj);
/* 1369A4 */ void ftMs_SpecialNStart_Coll(Fighter_GObj* gobj);
/* 1369E0 */ void ftMs_SpecialAirNStart_Coll(Fighter_GObj* gobj);
/* 136A1C */ void ftMs_SpecialN_80136A1C(Fighter_GObj* gobj);
/* 136A7C */ void ftMs_SpecialN_80136A7C(Fighter_GObj* gobj);
/* 136ADC */ void ftMs_SpecialNLoop_Anim(Fighter_GObj* gobj);
/* 136BB4 */ void ftMs_SpecialAirNLoop_Anim(Fighter_GObj* gobj);
/* 136C8C */ void ftMs_SpecialNLoop_IASA(Fighter_GObj* gobj);
/* 136CC4 */ void ftMs_SpecialAirNLoop_IASA(Fighter_GObj* gobj);
/* 136CFC */ void ftMs_SpecialNLoop_Phys(Fighter_GObj* gobj);
/* 136D1C */ void ftMs_SpecialAirNLoop_Phys(Fighter_GObj* gobj);
/* 136D3C */ void ftMs_SpecialNLoop_Coll(Fighter_GObj* gobj);
/* 136D78 */ void ftMs_SpecialAirNLoop_Coll(Fighter_GObj* gobj);
/* 136DB4 */ void ftMs_SpecialN_80136DB4(Fighter_GObj* gobj);
/* 136E14 */ void ftMs_SpecialN_80136E14(Fighter_GObj* gobj);
/* 136E74 */ void ftMs_SpecialN_80136E74(Fighter_GObj* gobj);
/* 136EAC */ void ftMs_SpecialN_80136EAC(Fighter_GObj* gobj);
/* 136EE4 */ void ftMs_SpecialNEnd_Anim(Fighter_GObj* gobj);
/* 137010 */ void ftMs_SpecialAirNEnd_Anim(Fighter_GObj* gobj);
/* 13713C */ void ftMs_SpecialNEnd_IASA(Fighter_GObj* gobj);
/* 137140 */ void ftMs_SpecialAirNEnd_IASA(Fighter_GObj* gobj);
/* 137144 */ void ftMs_SpecialNEnd_Phys(Fighter_GObj* gobj);
/* 137164 */ void ftMs_SpecialAirNEnd_Phys(Fighter_GObj* gobj);
/* 137184 */ void ftMs_SpecialNEnd_Coll(Fighter_GObj* gobj);
/* 1371C0 */ void ftMs_SpecialAirNEnd_Coll(Fighter_GObj* gobj);
/* 1371FC */ void ftMs_SpecialN_801371FC(Fighter_GObj* gobj);
/* 1372A8 */ void ftMs_SpecialN_801372A8(Fighter_GObj* gobj);
/* 137354 */ void ftMs_SpecialN_80137354(Fighter_GObj* gobj);
/* 1373B8 */ void ftMs_SpecialN_801373B8(Fighter_GObj* gobj);
#define GALE01_1374A0
/* 1374A0 */ void ftMs_SpecialAirS_Enter(HSD_GObj* gobj);
/* 137558 */ void ftMs_SpecialAirS1_Anim(HSD_GObj* gobj);
/* 13767C */ void ftMs_SpecialAirS1_Coll(HSD_GObj* gobj);
/* 1375B8 */ void ftMs_SpecialAirS1_IASA(HSD_GObj* gobj);
/* 137618 */ void ftMs_SpecialAirS1_Phys(HSD_GObj* gobj);
/* 1377B0 */ void ftMs_SpecialS2_Anim(HSD_GObj* gobj);
/* 1378D4 */ void ftMs_SpecialS2_Coll(HSD_GObj* gobj);
/* 137810 */ void ftMs_SpecialS2_IASA(HSD_GObj* gobj);
/* 137870 */ void ftMs_SpecialS2_Phys(HSD_GObj* gobj);
/* 137B34 */ void ftMs_SpecialS3_Anim(HSD_GObj* gobj);
/* 137C50 */ void ftMs_SpecialS3_Coll(HSD_GObj* gobj);
/* 137B94 */ void ftMs_SpecialS3_IASA(HSD_GObj* gobj);
/* 137BF4 */ void ftMs_SpecialS3_Phys(HSD_GObj* gobj);
/* 137ECC */ void ftMs_SpecialS4_Anim(HSD_GObj* gobj);
/* 137F8C */ void ftMs_SpecialS4_Coll(HSD_GObj* gobj);
/* 137F2C */ void ftMs_SpecialS4_IASA(HSD_GObj* gobj);
/* 137F30 */ void ftMs_SpecialS4_Phys(HSD_GObj* gobj);
/* 1376E8 */ void ftMs_SpecialS_801376E8(HSD_GObj* gobj);
/* 137748 */ void ftMs_SpecialS_80137748(HSD_GObj* gobj);
/* 137940 */ void ftMs_SpecialS_80137940(HSD_GObj* gobj);
/* 1379D0 */ void ftMs_SpecialS_801379D0(HSD_GObj* gobj);
/* 137A68 */ void ftMs_SpecialS_80137A68(HSD_GObj* gobj);
/* 137A9C */ void ftMs_SpecialS_80137A9C(HSD_GObj* gobj);
/* 137CBC */ void ftMs_SpecialS_80137CBC(HSD_GObj* gobj);
/* 137D60 */ void ftMs_SpecialS_80137D60(HSD_GObj* gobj);
/* 137E0C */ void ftMs_SpecialS_80137E0C(HSD_GObj* gobj);
/* 137FF8 */ void ftMs_SpecialS_80137FF8(HSD_GObj* gobj);
/* 13809C */ void ftMs_SpecialS_8013809C(HSD_GObj* gobj);
/* 138148 */ void ftMs_SpecialS_80138148(HSD_GObj* gobj);
/* 13741C */ void ftMs_SpecialS_Enter(HSD_GObj* gobj);
#define GALE01_15386C
/* 15386C */ void ftMh_BackAirplane1_Anim(HSD_GObj* gobj);
/* 1538A8 */ void ftMh_BackAirplane1_IASA(HSD_GObj* gobj);
/* 1538EC */ void ftMh_BackAirplane1_Phys(HSD_GObj* gobj);
/* 15390C */ void ftMh_BackAirplane1_Coll(HSD_GObj* gobj);
/* 1539A4 */ void ftMh_BackAirplane2_Anim(HSD_GObj* gobj);
#define GALE01_1539EC
/* 1539EC */ void ftMh_BackAirplane2_IASA(HSD_GObj* gobj);
/* 153A30 */ void ftMh_BackAirplane2_Phys(HSD_GObj* gobj);
/* 153A60 */ void ftMh_BackAirplane2_Coll(HSD_GObj* gobj);
/* 153A64 */ void ftMh_MS_368_80153A64(HSD_GObj* gobj);
/// @file
/// 19 Ram
#define GALE01_153AEC
/* 153AEC */ void ftMh_BackAirplane3_Anim(HSD_GObj* gobj);
/* 153B28 */ void ftMh_BackAirplane3_IASA(HSD_GObj* gobj);
/* 153B6C */ void ftMh_BackAirplane3_Phys(HSD_GObj* gobj);
/* 153B8C */ void ftMh_BackAirplane3_Coll(HSD_GObj* gobj);
/* 153B90 */ void ftMh_MS_369_80153B90(HSD_GObj* gobj);
/* 153C48 */ void ftMh_BackPunch_Anim(HSD_GObj* gobj);
/* 153C90 */ void ftMh_BackPunch_IASA(HSD_GObj* gobj);
/* 153CD4 */ void ftMh_BackPunch_Phys(HSD_GObj* gobj);
/// @file
/// 20 Crush
#define GALE01_153D28
/* 153D28 */ void ftMh_BackPunch_Coll(HSD_GObj* gobj);
/* 153D2C */ void ftMh_MS_370_80153D2C(HSD_GObj* gobj);
/* 153F8C */ void ftMh_BackCrush_Anim(HSD_GObj* gobj);
/* 154114 */ void ftMh_BackCrush_IASA(HSD_GObj* gobj);
/* 154158 */ void ftMh_BackCrush_Phys(HSD_GObj* gobj);
#define GALE01_1541C4
/* 1541C4 */ void ftMh_BackCrush_Coll(HSD_GObj* gobj);
/* 1541C8 */ void ftMh_MS_371_801541C8(HSD_GObj* gobj, HSD_GObjEvent);
#define GALE01_154230
/* 154230 */ void ftMh_BackDisappear_Anim(HSD_GObj* gobj);
/* 154278 */ void ftMh_BackDisappear_IASA(HSD_GObj* gobj);
/* 1542BC */ void ftMh_BackDisappear_Phys(HSD_GObj* gobj);
/* 1542DC */ void ftMh_BackDisappear_Coll(HSD_GObj* gobj);
/* 1542E0 */ void ftMh_MS_372_801542E0(HSD_GObj* gobj);
/* 154360 */ void ftMh_Wait1_1_Anim(HSD_GObj* gobj);
/* 1543E8 */ void ftMh_Wait1_1_IASA(HSD_GObj* gobj);
/* 15442C */ void ftMh_Wait1_1_Phys(HSD_GObj* gobj);
/* 15459C */ void ftMh_Wait1_1_Coll(HSD_GObj* gobj);
/* 1545A0 */ void ftMh_MS_373_801545A0(HSD_GObj* gobj);
/* 154620 */ void ftMh_Grab_Anim(HSD_GObj* gobj);
/* 154670 */ void ftMh_Grab_IASA(HSD_GObj* gobj);
/* 1546B4 */ void ftMh_Grab_Phys(HSD_GObj* gobj);
/* 1546D4 */ void ftMh_Grab_Coll(HSD_GObj* gobj);
/* 1546D8 */ void ftMh_MS_374_801546D8(HSD_GObj* gobj);
/* 154758 */ void ftMh_Fail_Anim(HSD_GObj* gobj);
/* 154794 */ void ftMh_Fail_IASA(HSD_GObj* gobj);
/* 1547D8 */ void ftMh_Fail_Phys(HSD_GObj* gobj);
/* 154838 */ void ftMh_Fail_Coll(HSD_GObj* gobj);
/* 15483C */ void ftMh_MS_381_8015483C(HSD_GObj* gobj);
/* 1548D8 */ void ftMh_Cancel_Anim(HSD_GObj* gobj);
/* 154964 */ void ftMh_Cancel_IASA(HSD_GObj* gobj);
/* 1549A8 */ void ftMh_Cancel_Phys(HSD_GObj* gobj);
/* 154A08 */ void ftMh_Cancel_Coll(HSD_GObj* gobj);
/* 154A2C */ void ftMh_MS_375_80154A2C(HSD_GObj* gobj);
#define GALE01_155C94
/* 155C94 */ void ftMh_CaptureDamageMasterHand_80155C94(HSD_GObj* gobj);
/* 155C20 */ void ftMh_CaptureDamageMasterHand_Anim(HSD_GObj* gobj);
/* 155C90 */ void ftMh_CaptureDamageMasterHand_Coll(HSD_GObj* gobj);
/* 155C88 */ void ftMh_CaptureDamageMasterHand_IASA(HSD_GObj* gobj);
/* 155C8C */ void ftMh_CaptureDamageMasterHand_Phys(HSD_GObj* gobj);
#define GALE01_155C20
/* 155B70 */ void ftMh_CaptureMasterHand_Anim(HSD_GObj* gobj);
/* 155B74 */ void ftMh_CaptureMasterHand_IASA(HSD_GObj* gobj);
/* 155B78 */ void ftMh_CaptureMasterHand_Phys(HSD_GObj* gobj);
/* 155B7C */ void ftMh_CaptureMasterHand_Coll(HSD_GObj* gobj);
/* 155B80 */ void ftMh_CaptureMasterHand_80155B80(HSD_GObj* gobj);
/* 155C20 */ void ftMh_CaptureDamageMasterHand_Anim(HSD_GObj* gobj);
#define GALE01_151428
/* 151428 */ bool ftMh_MS_343_80151428(Vec3* vec);
/* 151484 */ void ftMh_MS_343_80151484(HSD_GObj* gobj);
/* 1515B8 */ void ftMh_Damage_Anim(HSD_GObj* gobj);
/* 1516B4 */ void ftMh_MS_345_Anim(HSD_GObj* gobj);
/// @file
/// 10 Drill
#define GALE01_152138
/* 152138 */ void ftMh_WalkWait_Anim(HSD_GObj* gobj);
/* 152174 */ void ftMh_WalkWait_IASA(HSD_GObj* gobj);
/* 1521B8 */ void ftMh_WalkWait_Phys(HSD_GObj* gobj);
/* 1521D8 */ void ftMh_WalkWait_Coll(HSD_GObj* gobj);
/* 1521DC */ void ftMh_MS_352_801521DC(HSD_GObj* gobj);
/* 15223C */ void ftMh_Drill_Anim(HSD_GObj* gobj);
/* 152278 */ void ftMh_Drill_IASA(HSD_GObj* gobj);
/* 1522BC */ void ftMh_Drill_Phys(HSD_GObj* gobj);
#define GALE01_1510B0
/* 1510B0 */ void ftMh_MS_343_801510B0(HSD_GObj* gobj);
/* 151168 */ void ftMh_Entry_Anim(HSD_GObj* gobj);
/* 1511B0 */ void ftMh_Entry_IASA(HSD_GObj* gobj);
/* 1511F4 */ void ftMh_Entry_Phys(HSD_GObj* gobj);
/* 1511F8 */ void ftMh_Entry_Coll(HSD_GObj* gobj);
/// @file
/// 14 Lasers
#define GALE01_152BC8
/* 152BC8 */ void ftMh_Poke1_Coll(HSD_GObj* gobj);
/* 152BCC */ void ftMh_MS_359_80152BCC(HSD_GObj* gobj);
/* 152C34 */ void ftMh_FingerBeamStart_Anim(HSD_GObj* gobj);
/* 152C70 */ void ftMh_FingerBeamStart_IASA(HSD_GObj* gobj);
/* 152CB4 */ void ftMh_FingerBeamStart_Phys(HSD_GObj* gobj);
/* 152CD4 */ void ftMh_FingerBeamStart_Coll(HSD_GObj* gobj);
/* 152CD8 */ void ftMh_MS_361_80152CD8(HSD_GObj* gobj);
/* 152D44 */ void ftMh_FingerBeamLoop_Anim(HSD_GObj* gobj);
/* 152DC0 */ void ftMh_FingerBeamLoop_IASA(HSD_GObj* gobj);
/* 152E04 */ void ftMh_FingerBeamLoop_Phys(HSD_GObj* gobj);
/* 152E24 */ void ftMh_FingerBeamLoop_Coll(HSD_GObj* gobj);
/* 152E28 */ void ftMh_MS_362_80152E28(HSD_GObj* gobj);
#define GALE01_153000
/* 153000 */ void ftMh_FingerBeamEnd_Anim(HSD_GObj* gobj);
/* 15303C */ void ftMh_FingerBeamEnd_IASA(HSD_GObj* gobj);
/* 153080 */ void ftMh_FingerBeamEnd_Phys(HSD_GObj* gobj);
/* 1530A0 */ void ftMh_FingerBeamEnd_Coll(HSD_GObj* gobj);
/* 1530A4 */ void ftMh_MS_363_801530A4(HSD_GObj* gobj);
/* 153160 */ void ftMh_FingerGun1_Anim(HSD_GObj* gobj);
/* 153210 */ void ftMh_FingerGun1_IASA(HSD_GObj* gobj);
/* 153254 */ void ftMh_FingerGun1_Phys(HSD_GObj* gobj);
/* 1533C8 */ void ftMh_FingerGun1_Coll(HSD_GObj* gobj);
/* 1533CC */ void ftMh_MS_364_801533CC(HSD_GObj* gobj);
/* 15346C */ void ftMh_FingerGun2_Anim(HSD_GObj* gobj);
/* 153548 */ void ftMh_FingerGun2_IASA(HSD_GObj* gobj);
/* 15358C */ void ftMh_FingerGun2_Phys(HSD_GObj* gobj);
/* 1535AC */ void ftMh_FingerGun2_Coll(HSD_GObj* gobj);
/* 1535B0 */ void ftMh_MS_365_801535B0(HSD_GObj* gobj);
/* 153730 */ void ftMh_MS_365_80153730(HSD_GObj* gobj);
#define GALE01_15377C
/* 15377C */ void ftMh_FingerGun3_Anim(HSD_GObj* gobj);
/* 1537B8 */ void ftMh_FingerGun3_IASA(HSD_GObj* gobj);
/* 1537FC */ void ftMh_FingerGun3_Phys(HSD_GObj* gobj);
/* 15381C */ void ftMh_FingerGun3_Coll(HSD_GObj* gobj);
/* 153820 */ void ftMh_MS_366_80153820(HSD_GObj* gobj);
#define GALE01_14FC68
/* 14FC68 */ void ftMh_Init_OnDeath(HSD_GObj* gobj);
/* 14FC6C */ void ftMh_Init_OnLoad(HSD_GObj* gobj);
/* 14FDD0 */ void ftMh_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 3D3A30 */ extern MotionState ftMh_Init_MotionStateTable[ftMh_MS_SelfCount];
/* 3D4070 */ extern char ftMh_Init_DatFilename[];
/* 3D407C */ extern char ftMh_Init_DataName[];
/* 3D40B8 */ extern char ftMh_Init_AnimDatFilename[];
/* 3D40C4 */ extern Fighter_CostumeStrings ftMh_Init_CostumeStrings[];
/// @file
/// 12 Ground Slap
#define GALE01_152634
/* 152634 */ void ftMh_RockCrushDown_Anim(HSD_GObj* gobj);
/* 152670 */ void ftMh_RockCrushDown_IASA(HSD_GObj* gobj);
/* 1526B4 */ void ftMh_RockCrushDown_Phys(HSD_GObj* gobj);
/* 1526D4 */ void ftMh_RockCrushDown_Coll(HSD_GObj* gobj);
/* 1526D8 */ void ftMh_MS_357_801526D8(HSD_GObj* gobj);
/* 152738 */ void ftMh_PaperCrush_Anim(HSD_GObj* gobj);
/* 152774 */ void ftMh_PaperCrush_IASA(HSD_GObj* gobj);
/* 1527B8 */ void ftMh_PaperCrush_Phys(HSD_GObj* gobj);
#define GALE01_15287C
/* 15287C */ void ftMh_PaperCrush_Coll(HSD_GObj* gobj);
/* 152880 */ void ftMh_MS_358_80152880(HSD_GObj* gobj);
/* 152928 */ void ftMh_Poke1_Anim(HSD_GObj* gobj);
/* 1529D0 */ void ftMh_Poke2_Anim(HSD_GObj* gobj);
/* 152A0C */ void ftMh_Poke1_IASA(HSD_GObj* gobj);
/* 152A50 */ void ftMh_Poke1_Phys(HSD_GObj* gobj);
/// @file
/// 11 Punch
#define GALE01_15236C
/* 15236C */ void ftMh_Drill_Coll(HSD_GObj* gobj);
/* 152370 */ void ftMh_MS_354_80152370(HSD_GObj* gobj);
/* 1523BC */ void ftMh_RockCrushUp_Anim(HSD_GObj* gobj);
/* 152414 */ void ftMh_RockCrushUp_IASA(HSD_GObj* gobj);
/* 152458 */ void ftMh_RockCrushUp_Phys(HSD_GObj* gobj);
/* 152478 */ void ftMh_RockCrushUp_Coll(HSD_GObj* gobj);
/* 15247C */ void ftMh_MS_355_8015247C(HSD_GObj* gobj);
/* 1524C8 */ void ftMh_RockCrushWait_Anim(HSD_GObj* gobj);
/* 152544 */ void ftMh_RockCrushWait_IASA(HSD_GObj* gobj);
/* 152588 */ void ftMh_RockCrushWait_Phys(HSD_GObj* gobj);
/* 1525DC */ void ftMh_RockCrushWait_Coll(HSD_GObj* gobj);
/* 1525E0 */ void ftMh_MS_356_801525E0(HSD_GObj* gobj);
/// @file
/// 27 Crazy Hand Combo Attack 1
#define GALE01_155074
/* 155074 */ void ftMh_Slam_Anim(HSD_GObj* gobj);
/* 15512C */ void ftMh_Slam_IASA(HSD_GObj* gobj);
/* 155170 */ void ftMh_Slam_Phys(HSD_GObj* gobj);
/* 155190 */ void ftMh_Slam_Coll(HSD_GObj* gobj);
/* 155194 */ void ftMh_MS_380_80155194(HSD_GObj* gobj);
#define GALE01_151C04
/* 151C04 */ void ftMh_Slap_Anim(HSD_GObj* gobj);
/* 151C40 */ void ftMh_Slap_IASA(HSD_GObj* gobj);
/* 151C84 */ void ftMh_Slap_Phys(HSD_GObj* gobj);
/* 151CA4 */ void ftMh_Slap_Coll(HSD_GObj* gobj);
/* 151CA8 */ void ftMh_MS_349_80151CA8(HSD_GObj* gobj);
#define GALE01_154A78
/* 154A78 */ void ftMh_MS_378_80154A78(HSD_GObj* gobj);
/* 154B2C */ void ftMh_Squeeze_Anim(HSD_GObj* gobj);
/* 154BB0 */ void ftMh_Squeeze_IASA(HSD_GObj* gobj);
/* 154BF4 */ void ftMh_Squeeze_Phys(HSD_GObj* gobj);
/* 154C54 */ void ftMh_Squeeze_Coll(HSD_GObj* gobj);
#define GALE01_154D78
/* 154D78 */ void ftMh_Squeezing_Anim(HSD_GObj* gobj);
/* 154DD0 */ void ftMh_Squeezing_IASA(HSD_GObj* gobj);
/* 154E14 */ void ftMh_Squeezing_Phys(HSD_GObj* gobj);
/* 154E74 */ void ftMh_Squeezing_Coll(HSD_GObj* gobj);
/* 154E78 */ void ftMh_MS_376_80154E78(HSD_GObj* gobj);
/* 154ED8 */ void ftMh_Throw_Anim(HSD_GObj* gobj);
#define GALE01_151828
/* 1517B0 */ void ftMh_Damage_IASA(HSD_GObj* gobj);
/* 1517F4 */ void ftMh_Damage_Phys(HSD_GObj* gobj);
/* 151824 */ void ftMh_Damage_Coll(HSD_GObj* gobj);
/* 151828 */ void ftMh_MS_344_80151828(HSD_GObj* gobj);
/* 151874 */ void ftMh_WaitSweep_Anim(HSD_GObj* gobj);
/* 1518B0 */ void ftMh_WaitSweep_IASA(HSD_GObj* gobj);
/* 1518F4 */ void ftMh_WaitSweep_Phys(HSD_GObj* gobj);
/* 151914 */ void ftMh_WaitSweep_Coll(HSD_GObj* gobj);
/* 151918 */ void ftMh_MS_346_80151918(HSD_GObj* gobj);
/* 15198C */ void ftMh_SweepLoop_Anim(HSD_GObj* gobj);
/* 151A44 */ void ftMh_SweepLoop_IASA(HSD_GObj* gobj);
/* 151A88 */ void ftMh_SweepLoop_Phys(HSD_GObj* gobj);
/* 151AC4 */ void ftMh_SweepLoop_Coll(HSD_GObj* gobj);
#define GALE01_151B14
/* 151B14 */ void ftMh_SweepWait_Anim(HSD_GObj* gobj);
/* 151B50 */ void ftMh_SweepWait_Phys(HSD_GObj* gobj);
/* 151B70 */ void ftMh_SweepWait_IASA(HSD_GObj* gobj);
/* 151BB4 */ void ftMh_SweepWait_Coll(HSD_GObj* gobj);
/* 151BB8 */ void ftMh_MS_348_80151BB8(HSD_GObj* gobj);
/// @file
/// 29 Crazy Hand Combo Attack 3
#define GALE01_155388
/* 155388 */ void ftMh_TagApplaud_Anim(HSD_GObj* gobj);
/* 15541C */ void ftMh_TagApplaud_IASA(HSD_GObj* gobj);
/* 155460 */ void ftMh_TagApplaud_Phys(HSD_GObj* gobj);
/* 155480 */ void ftMh_TagApplaud_Coll(HSD_GObj* gobj);
/* 155484 */ void ftMh_MS_383_80155484(HSD_GObj* gobj);
#define GALE01_155A58
/* 155A58 */ void ftMh_MS_388_80155A58(HSD_GObj* gobj, HSD_GObj* gobj2);
/// @file
/// 28 Crazy Hand Combo Attack 2
#define GALE01_15521C
/* 15521C */ void ftMh_TagCrush_Anim(HSD_GObj* gobj);
/* 155290 */ void ftMh_TagCrush_IASA(HSD_GObj* gobj);
/* 1552D4 */ void ftMh_TagCrush_Phys(HSD_GObj* gobj);
/* 1552F4 */ void ftMh_TagCrush_Coll(HSD_GObj* gobj);
/* 1552F8 */ void ftMh_MS_382_801552F8(HSD_GObj* gobj);
#define GALE01_15550C
/* 15550C */ void ftMh_TagRockPaper_Anim(HSD_GObj* gobj);
/* 155580 */ void ftMh_TagRockPaper_IASA(HSD_GObj* gobj);
/* 1555C4 */ void ftMh_TagRockPaper_Phys(HSD_GObj* gobj);
/* 1555E4 */ void ftMh_TagRockPaper_Coll(HSD_GObj* gobj);
/* 1555E8 */ void ftMh_TagGrab_Anim(HSD_GObj* gobj);
/* 15565C */ void ftMh_TagGrab_IASA(HSD_GObj* gobj);
/* 1556A0 */ void ftMh_TagGrab_Phys(HSD_GObj* gobj);
/* 1556C0 */ void ftMh_TagGrab_Coll(HSD_GObj* gobj);
/* 1556C4 */ void ftMh_TagSqueeze_Anim(HSD_GObj* gobj);
/* 1557B0 */ void ftMh_TagSqueeze_IASA(HSD_GObj* gobj);
/* 1557F4 */ void ftMh_TagSqueeze_Phys(HSD_GObj* gobj);
/* 155814 */ void ftMh_TagSqueeze_Coll(HSD_GObj* gobj);
/* 155864 */ void ftMh_TagFail_Anim(HSD_GObj* gobj);
/* 1558A0 */ void ftMh_TagFail_IASA(HSD_GObj* gobj);
/* 1558E4 */ void ftMh_TagFail_Phys(HSD_GObj* gobj);
/* 155904 */ void ftMh_TagFail_Coll(HSD_GObj* gobj);
/* 155908 */ void ftMh_TagCancel_Anim(HSD_GObj* gobj);
/* 155990 */ void ftMh_TagCancel_IASA(HSD_GObj* gobj);
/* 1559D4 */ void ftMh_TagCancel_Phys(HSD_GObj* gobj);
/* 155A34 */ void ftMh_TagCancel_Coll(HSD_GObj* gobj);
#define GALE01_154FAC
/* 154FAC */ void ftMh_Throw_IASA(HSD_GObj* gobj);
/* 154FF0 */ void ftMh_Throw_Phys(HSD_GObj* gobj);
/* 155010 */ void ftMh_Throw_Coll(HSD_GObj* gobj);
/* 155014 */ void ftMh_MS_379_80155014(HSD_GObj* gobj);
#define GALE01_155D1C
/* 155D1C */ void ftMh_CaptureWaitMasterHand_80155D1C(HSD_GObj* gobj);
/* 155D5C */ void ftMh_CaptureWaitMasterHand_Anim(HSD_GObj* gobj);
/* 155D60 */ void ftMh_CaptureWaitMasterHand_IASA(HSD_GObj* gobj);
/* 155D64 */ void ftMh_CaptureWaitMasterHand_Phys(HSD_GObj* gobj);
/* 155D68 */ void ftMh_CaptureWaitMasterHand_Coll(HSD_GObj* gobj);
/* 155D6C */ void ftMh_CaptureWaitMasterHand_80155D6C(HSD_GObj* gobj,
s32 arg1);
/* 155E08 */ void ftMh_ThrownMasterHand_Anim(HSD_GObj* gobj);
/* 155E0C */ void ftMh_ThrownMasterHand_IASA(HSD_GObj* gobj);
/* 155E10 */ void ftMh_ThrownMasterHand_Phys(HSD_GObj* gobj);
/* 155E14 */ void ftMh_ThrownMasterHand_Coll(HSD_GObj* gobj);
#define GALE01_14FE10
/* 14FE10 */ void ftMh_MS_341_8014FE10(HSD_GObj* gobj);
/* 14FE58 */ void ftMh_MS_341_8014FE58(HSD_GObj* gobj);
/* 14FF1C */ void ftMh_MS_341_8014FF1C(HSD_GObj* gobj);
/* 14FFDC */ void ftMh_MS_341_8014FFDC(HSD_GObj* gobj);
/* 150230 */ void ftMh_Wait1_0_Anim(HSD_GObj* gobj);
/* 15082C */ void ftMh_Wait1_0_IASA(HSD_GObj* gobj);
/* 150870 */ void ftMh_Wait1_0_Phys(HSD_GObj* gobj);
/* 150890 */ void ftMh_Wait1_0_Coll(HSD_GObj* gobj);
/* 150894 */ void ftMh_MS_341_80150894(HSD_GObj* gobj);
#define GALE01_154C78
/* 154C78 */ void ftMh_MS_375_80154C78(HSD_GObj* gobj);
/* 154CF8 */ void ftMh_MS_378_80154CF8(HSD_GObj* gobj);
#define GALE01_150C8C
/* 150C8C */ void ftMh_MS_389_80150C8C(HSD_GObj* gobj);
/* 150D28 */ void ftMh_MS_389_80150D28(HSD_GObj* gobj);
/* 150DC4 */ void ftMh_MS_389_80150DC4(HSD_GObj* gobj, HSD_GObjEvent, Vec3*);
/* 150F00 */ void ftMh_Wait1_2_Anim(HSD_GObj* gobj);
/* 150F68 */ void ftMh_Wait1_2_Phys(HSD_GObj* gobj);
/* 150FC8 */ void ftMh_Wait1_2_Coll(HSD_GObj* gobj);
/* 151018 */ void ftMh_MS_389_80151018(HSD_GObj* gobj);
/// @file
/// 9 Walk
#define GALE01_151D20
/* 151D20 */ void ftMh_WalkShoot_Anim(HSD_GObj* gobj);
/* 151D5C */ void ftMh_WalkShoot_IASA(HSD_GObj* gobj);
/* 151DA0 */ void ftMh_WalkShoot_Phys(HSD_GObj* gobj);
/* 151DC0 */ void ftMh_WalkShoot_Coll(HSD_GObj* gobj);
/* 151DC4 */ void ftMh_MS_353_80151DC4(HSD_GObj* gobj);
/* 151E10 */ void ftMh_Walk2_Anim(HSD_GObj* gobj);
/* 151E4C */ void ftMh_Walk2_IASA(HSD_GObj* gobj);
/* 151E90 */ void ftMh_Walk2_Phys(HSD_GObj* gobj);
/* 151EB0 */ void ftMh_Walk2_Coll(HSD_GObj* gobj);
/* 151EB4 */ void ftMh_MS_350_80151EB4(HSD_GObj* gobj);
/* 151F00 */ void ftMh_WalkLoop_Anim(HSD_GObj* gobj);
/* 15204C */ void ftMh_WalkLoop_IASA(HSD_GObj* gobj);
/* 152090 */ void ftMh_WalkLoop_Phys(HSD_GObj* gobj);
/* 1520D4 */ void ftMh_WalkLoop_Coll(HSD_GObj* gobj);
/* 1520D8 */ void ftMh_MS_351_801520D8(HSD_GObj* gobj);
#define MELEE_FT_CHARA_FTMEWTWO_FORWARD_H
static MotionFlags const ftMt_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftMt_MF_SpecialHiStart =
ftMt_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftMt_MF_SpecialNStart =
ftMt_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftMt_MF_SpecialLw =
ftMt_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipThrowException;
static MotionFlags const ftMt_MF_SpecialAirHiStart =
ftMt_MF_SpecialHiStart | Ft_MF_SkipParasol;
static MotionFlags const ftMt_MF_SpecialAirNStart =
ftMt_MF_SpecialNStart | Ft_MF_SkipParasol;
static MotionFlags const ftMt_MF_SpecialAirLw =
ftMt_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftMt_MF_SpecialS =
ftMt_MF_Special | Ft_MF_KeepGfx | Ft_MF_SkipColAnim;
static MotionFlags const ftMt_MF_SpecialAirS =
ftMt_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftMt_MF_SpecialN =
ftMt_MF_SpecialNStart | Ft_MF_Unk19;
static MotionFlags const ftMt_MF_SpecialAirN =
ftMt_MF_SpecialN | Ft_MF_SkipParasol;
typedef enum ftMewtwo_MotionState {
ftMt_MS_SpecialNStart = ftCo_MS_Count,
ftMt_MS_SpecialNLoop,
ftMt_MS_SpecialNLoopFull,
ftMt_MS_SpecialNCancel,
ftMt_MS_SpecialNEnd,
ftMt_MS_SpecialAirNStart,
ftMt_MS_SpecialAirNLoop,
ftMt_MS_SpecialAirNLoopFull,
ftMt_MS_SpecialAirNCancel,
ftMt_MS_SpecialAirNEnd,
ftMt_MS_SpecialS,
ftMt_MS_SpecialAirS,
ftMt_MS_SpecialHiStart,
ftMt_MS_SpecialHiLost,
ftMt_MS_SpecialHi,
ftMt_MS_SpecialAirHiStart,
ftMt_MS_SpecialAirHiLost,
ftMt_MS_SpecialAirHi,
ftMt_MS_SpecialLw,
ftMt_MS_SpecialAirLw,
ftMt_MS_Count,
ftMt_MS_SelfCount = ftMt_MS_Count - ftCo_MS_Count,
} ftMewtwo_MotionState;
typedef enum ftMt_Submotion {
ftMt_SM_SpecialNStart = ftCo_SM_Count,
ftMt_SM_SpecialNLoop,
ftMt_SM_SpecialNLoopFull,
ftMt_SM_SpecialNCancel,
ftMt_SM_SpecialNEnd,
ftMt_SM_SpecialAirNStart,
ftMt_SM_SpecialAirNLoop,
ftMt_SM_SpecialAirNLoopFull,
ftMt_SM_SpecialAirNCancel,
ftMt_SM_SpecialAirNEnd,
ftMt_SM_SpecialS,
ftMt_SM_SpecialAirS,
ftMt_SM_SpecialHiStart,
ftMt_SM_SpecialHi,
ftMt_SM_SpecialHiLost,
ftMt_SM_SpecialAirHiStart,
ftMt_SM_SpecialAirHi,
ftMt_SM_SpecialLw,
ftMt_SM_SpecialAirLw,
ftMt_SM_Count,
ftMt_SM_SelfCount = ftMt_SM_Count - ftCo_SM_Count,
} ftMt_Submotion;
#define GALE01_144DFC
/* 144DFC */ void ftMt_Init_OnDeath2(HSD_GObj* gobj);
/* 144E48 */ void ftMt_Init_OnLoad(HSD_GObj* gobj);
/* 144EE0 */ void ftMt_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 144EE4 */ void ftMt_Init_OnDeath(HSD_GObj* gobj);
/* 144F18 */ void ftMt_Init_OnTakeDamage(HSD_GObj* gobj);
/* 144F4C */ void ftMt_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 144F50 */ void ftMt_Init_OnItemInvisible(HSD_GObj* gobj);
/* 144F54 */ void ftMt_Init_OnItemVisible(HSD_GObj* gobj);
/* 144F58 */ void ftMt_Init_UnkMotionStates4(HSD_GObj* gobj);
/* 144FB4 */ void ftMt_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 145018 */ void ftMt_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 14505C */ void ftMt_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3D0B00 */ extern MotionState ftMt_Init_MotionStateTable[ftMt_MS_SelfCount];
/* 3D0D80 */ extern char ftMt_Init_DatFilename[];
/* 3D0D8C */ extern char ftMt_Init_DataName[];
/* 3D0EC4 */ extern char ftMt_Init_AnimDatFilename[];
/* 3D0F4C */ extern Fighter_DemoStrings ftMt_Init_DemoMotionFilenames;
/* 3D0F5C */ extern Fighter_CostumeStrings ftMt_Init_CostumeStrings[];
/// @file
/// Up Special - Teleport (SpecialHi/SpecialAirHi)
#define GALE01_1450A0
/* 1450A0 */ void ftMt_SpecialHi_CreateGFX(HSD_GObj* gobj);
/* 1450D4 */ void ftMt_SpecialHi_SetStartGFX(HSD_GObj* gobj);
/* 145164 */ void ftMt_SpecialHi_SetEndGFX(HSD_GObj* gobj);
/* 1451DC */ void ftMt_SpecialHiStart_Enter(HSD_GObj* gobj);
/* 145258 */ void ftMt_SpecialAirHiStart_Enter(HSD_GObj* gobj);
/* 1452EC */ void ftMt_SpecialHiStart_Anim(HSD_GObj* gobj);
/* 145328 */ void ftMt_SpecialAirHiStart_Anim(HSD_GObj* gobj);
/* 145364 */ void ftMt_SpecialHiStart_IASA(HSD_GObj* gobj);
/* 145368 */ void ftMt_SpecialAirHiStart_IASA(HSD_GObj* gobj);
/* 14536C */ void ftMt_SpecialHiStart_Phys(HSD_GObj* gobj);
/* 14538C */ void ftMt_SpecialAirHiStart_Phys(HSD_GObj* gobj);
/* 1453D0 */ void ftMt_SpecialHiStart_Coll(HSD_GObj* gobj);
/* 14540C */ void ftMt_SpecialAirHiStart_Coll(HSD_GObj* gobj);
/* 14547C */ void ftMt_SpecialHiStart_GroundToAir(HSD_GObj* gobj);
/* 1454E8 */ void ftMt_SpecialAirHiStart_AirToGround(HSD_GObj* gobj);
/* 145554 */ void ftMt_SpecialHiLost_Anim(HSD_GObj* gobj);
/* 145590 */ void ftMt_SpecialAirHiLost_Anim(HSD_GObj* gobj);
/* 1455CC */ void ftMt_SpecialHiLost_IASA(HSD_GObj* gobj);
/* 1455D0 */ void ftMt_SpecialAirHiLost_IASA(HSD_GObj* gobj);
/* 1455D4 */ void ftMt_SpecialHiLost_Phys(HSD_GObj* gobj);
/* 1455F4 */ void ftMt_SpecialAirHiLost_Phys(HSD_GObj* gobj);
/* 1455F8 */ void ftMt_SpecialHiLost_Coll(HSD_GObj* gobj);
/* 145698 */ void ftMt_SpecialAirHiLost_Coll(HSD_GObj* gobj);
/* 1458A4 */ void ftMt_SpecialHi_GroundToAir(HSD_GObj* gobj);
/* 145920 */ void ftMt_SpecialAirHi_AirToGround(HSD_GObj* gobj);
/* 145990 */ void ftMt_SpecialHi_Enter(HSD_GObj* gobj);
/* 145B94 */ void ftMt_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 145DB0 */ void ftMt_SpecialHi_Anim(HSD_GObj* gobj);
/* 145DEC */ void ftMt_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 145E4C */ void ftMt_SpecialHi_IASA(HSD_GObj* gobj);
/* 145E50 */ void ftMt_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 145E54 */ void ftMt_SpecialHi_Phys(HSD_GObj* gobj);
/* 145E74 */ void ftMt_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 145EF0 */ void ftMt_SpecialHi_Coll(HSD_GObj* gobj);
/* 145F2C */ void ftMt_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 145FB0 */ void ftMt_SpecialHiLost_GroundToAir(HSD_GObj* gobj);
/* 146010 */ void ftMt_SpecialHiLost_Enter(HSD_GObj* gobj);
/* 1460CC */ void ftMt_SpecialAirHiLost_Enter(HSD_GObj* gobj);
/// @file
/// Down Special - Disable (SpecialLw/SpecialAirLw)
#define GALE01_146198
/* 146198 */ void ftMt_SpecialLw_ClearDisableGObj(HSD_GObj* gobj);
/* 1461A8 */ void ftMt_SpecialLw_RemoveDisable(HSD_GObj* gobj);
/* 1461F0 */ void ftMt_SpecialLw_Enter(HSD_GObj* gobj);
/* 146264 */ void ftMt_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 1462DC */ void ftMt_SpecialLw_Anim(HSD_GObj* gobj);
/* 146338 */ void ftMt_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 146394 */ void ftMt_SpecialLw_IASA(HSD_GObj* gobj);
/* 146398 */ void ftMt_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 14639C */ void ftMt_SpecialLw_Phys(HSD_GObj* gobj);
/* 1463BC */ void ftMt_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 146410 */ void ftMt_SpecialLw_GroundToAir(HSD_GObj* gobj);
/* 1464B0 */ void ftMt_SpecialAirLw_AirToGround(HSD_GObj* gobj);
/* 146544 */ void ftMt_SpecialLw_Coll(HSD_GObj* gobj);
/* 14656C */ void ftMt_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 146594 */ void ftMt_SpecialLw_CreateDisable(HSD_GObj* gobj);
/// @file
/// Neutral Special - Shadow Ball (SpecialN/SpecialAirN)
#define GALE01_146CCC
/* 146CCC */ s32 ftMt_SpecialN_GetChargeLevel(HSD_GObj* gobj, s32* chargeLevel,
s32* chargeCycles);
/* 146D24 */ bool ftMt_SpecialN_CheckShadowBallRemove(HSD_GObj* gobj);
/* 146D74 */ bool ftMt_SpecialN_CheckShadowBallCancel(HSD_GObj* gobj);
/* 146DC8 */ void ftMt_SpecialN_SetNULL(HSD_GObj* gobj);
/* 146E30 */ void ftMt_SpecialN_OnTakeDamage(HSD_GObj* gobj);
/* 146ED0 */ void ftMt_SpecialN_OnDeath(HSD_GObj* gobj);
/* 146FA8 */ void ftMt_SpecialN_ReleaseShadowBall(HSD_GObj* gobj);
/* 1471C8 */ void ftMt_SpecialN_PlayChargeSFX(HSD_GObj* gobj);
/* 147320 */ void ftMt_SpecialN_Enter(HSD_GObj* gobj);
/* 1473F4 */ void ftMt_SpecialAirN_Enter(HSD_GObj* gobj);
/* 1474C0 */ void ftMt_SpecialNStart_Anim(HSD_GObj* gobj);
/* 14764C */ void ftMt_SpecialNLoop_Anim(HSD_GObj* gobj);
/* 147850 */ void ftMt_SpecialNLoopFull_Anim(HSD_GObj* gobj);
/* 147880 */ void ftMt_SpecialNCancel_Anim(HSD_GObj* gobj);
/* 147910 */ void ftMt_SpecialNEnd_Anim(HSD_GObj* gobj);
/* 147954 */ void ftMt_SpecialAirNStart_Anim(HSD_GObj* gobj);
/* 147AEC */ void ftMt_SpecialAirNLoop_Anim(HSD_GObj* gobj);
/* 147CF0 */ void ftMt_SpecialAirNLoopFull_Anim(HSD_GObj* gobj);
/* 147D20 */ void ftMt_SpecialAirNCancel_Anim(HSD_GObj* gobj);
/* 147DB0 */ void ftMt_SpecialAirNEnd_Anim(HSD_GObj* gobj);
/* 147E30 */ void ftMt_SpecialNStart_IASA(HSD_GObj* gobj);
/* 147E34 */ void ftMt_SpecialNLoop_IASA(HSD_GObj* gobj);
/* 14800C */ void ftMt_SpecialNLoopFull_IASA(HSD_GObj* gobj);
/* 1481CC */ void ftMt_SpecialNCancel_IASA(HSD_GObj* gobj);
/* 1481D0 */ void ftMt_SpecialNEnd_IASA(HSD_GObj* gobj);
/* 1481D4 */ void ftMt_SpecialAirNStart_IASA(HSD_GObj* gobj);
/* 1481D8 */ void ftMt_SpecialAirNLoop_IASA(HSD_GObj* gobj);
/* 148354 */ void ftMt_SpecialAirNLoopFull_IASA(HSD_GObj* gobj);
/* 1484B8 */ void ftMt_SpecialAirNCancel_IASA(HSD_GObj* gobj);
/* 1484BC */ void ftMt_SpecialAirNEnd_IASA(HSD_GObj* gobj);
/* 1484C0 */ void ftMt_SpecialNStart_Phys(HSD_GObj* gobj);
/* 1484E0 */ void ftMt_SpecialNLoop_Phys(HSD_GObj* gobj);
/* 148500 */ void ftMt_SpecialNLoopFull_Phys(HSD_GObj* gobj);
/* 148520 */ void ftMt_SpecialNCancel_Phys(HSD_GObj* gobj);
/* 148540 */ void ftMt_SpecialNEnd_Phys(HSD_GObj* gobj);
/* 148560 */ void ftMt_SpecialAirNStart_Phys(HSD_GObj* gobj);
/* 148580 */ void ftMt_SpecialAirNLoop_Phys(HSD_GObj* gobj);
/* 1485A0 */ void ftMt_SpecialAirNLoopFull_Phys(HSD_GObj* gobj);
/* 1485C0 */ void ftMt_SpecialAirNCancel_Phys(HSD_GObj* gobj);
/* 1485E0 */ void ftMt_SpecialAirNEnd_Phys(HSD_GObj* gobj);
/* 148600 */ void ftMt_SpecialNStart_Coll(HSD_GObj* gobj);
/* 14868C */ void ftMt_SpecialNLoop_Coll(HSD_GObj* gobj);
/* 148718 */ void ftMt_SpecialNLoopFull_Coll(HSD_GObj* gobj);
/* 1487A4 */ void ftMt_SpecialNCancel_Coll(HSD_GObj* gobj);
/* 148830 */ void ftMt_SpecialNEnd_Coll(HSD_GObj* gobj);
/* 1488BC */ void ftMt_SpecialAirNStart_Coll(HSD_GObj* gobj);
/* 148948 */ void ftMt_SpecialAirNLoop_Coll(HSD_GObj* gobj);
/* 1489D4 */ void ftMt_SpecialAirNLoopFull_Coll(HSD_GObj* gobj);
/* 148A60 */ void ftMt_SpecialAirNCancel_Coll(HSD_GObj* gobj);
/* 148AEC */ void ftMt_SpecialAirNEnd_Coll(HSD_GObj* gobj);
/* 148B78 */ void ftMt_SpecialN_Shoot(HSD_GObj* gobj);
/// @file
/// Side Special - Confusion (SpecialS/SpecialAirS)
#define GALE01_1466C4
/* 1466C4 */ void ftMt_SpecialS_Enter(HSD_GObj* gobj);
/* 14677C */ void ftMt_SpecialAirS_Enter(HSD_GObj* gobj);
/* 146858 */ void ftMt_SpecialS_Anim(HSD_GObj* gobj);
/* 1468EC */ void ftMt_SpecialAirS_Anim(HSD_GObj* gobj);
/* 146980 */ void ftMt_SpecialS_IASA(HSD_GObj* gobj);
/* 146984 */ void ftMt_SpecialAirS_IASA(HSD_GObj* gobj);
/* 146988 */ void ftMt_SpecialS_Phys(HSD_GObj* gobj);
/* 1469BC */ void ftMt_SpecialAirS_Phys(HSD_GObj* gobj);
/* 1469F0 */ void ftMt_SpecialS_GroundToAir(HSD_GObj* gobj);
/* 146AD4 */ void ftMt_SpecialAirS_AirToGround(HSD_GObj* gobj);
/* 146BB8 */ void ftMt_SpecialS_Coll(HSD_GObj* gobj);
/* 146BE0 */ void ftMt_SpecialAirS_Coll(HSD_GObj* gobj);
/* 146C08 */ void ftMt_SpecialS_ReflectThink(HSD_GObj* gobj);
/* 146CC8 */ void ftMt_SpecialS_OnReflect(HSD_GObj* gobj);
#define GALE01_122EDC
#define MELEE_FT_CHARA_FTPOPO_FORWARD_H
static MotionFlags const ftPp_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftPp_MF_SpecialLw =
ftPp_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftPp_MF_SpecialN =
ftPp_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftPp_MF_SpecialS =
ftPp_MF_Special | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftPp_MF_SpecialHi =
ftPp_MF_SpecialS | Ft_MF_KeepFastFall;
static MotionFlags const ftPp_MF_MS_358 =
ftPp_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftPp_MF_SpecialAirN =
ftPp_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftPp_MF_SpecialAirS =
ftPp_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftPp_MF_SpecialAirHi =
ftPp_MF_SpecialHi | Ft_MF_SkipParasol;
typedef enum ftPopo_MotionState {
ftPp_MS_SpecialN = ftCo_MS_Count,
ftPp_MS_SpecialAirN,
ftPp_MS_SpecialS1,
ftPp_MS_SpecialS2,
ftPp_MS_SpecialAirS1,
ftPp_MS_SpecialAirS2,
ftPp_MS_SpecialHiStart_0,
ftPp_MS_SpecialHiThrow_0,
ftPp_MS_SpecialHiThrow2,
ftPp_MS_SpecialHiStart_1,
ftPp_MS_SpecialHiThrow_1,
ftPp_MS_SpecialAirHiStart_0,
ftPp_MS_SpecialAirHiThrow_0,
ftPp_MS_SpecialAirHiThrow2,
ftPp_MS_SpecialAirHiStart_1,
ftPp_MS_SpecialAirHiThrow_1,
ftPp_MS_SpecialLw,
ftPp_MS_SpecialAirLw,
ftPp_MS_SpecialS_0,
ftPp_MS_SpecialS_1,
ftPp_MS_SpecialHi_0,
ftPp_MS_SpecialHi_1,
ftPp_MS_SpecialHi_2,
ftPp_MS_SpecialHi_3,
ftPp_MS_SpecialHi_4,
ftPp_MS_SpecialHi_5,
ftPp_MS_Count,
ftPp_MS_SelfCount = ftPp_MS_Count - ftCo_MS_Count,
} ftPopo_MotionState;
typedef enum ftPp_Submotion {
ftPp_SM_SpecialN = ftCo_SM_Count,
ftPp_SM_SpecialAirN,
ftPp_SM_SpecialS1,
ftPp_SM_SpecialS2,
ftPp_SM_SpecialAirS1,
ftPp_SM_SpecialAirS2,
ftPp_SM_SpecialHiStart_0,
ftPp_SM_SpecialHiThrow_0,
ftPp_SM_SpecialHiThrow2,
ftPp_SM_SpecialHiStart_1,
ftPp_SM_SpecialHiThrow_1,
ftPp_SM_SpecialAirHiStart_0,
ftPp_SM_SpecialAirHiThrow_0,
ftPp_SM_SpecialAirHiThrow2,
ftPp_SM_SpecialAirHiStart_1,
ftPp_SM_SpecialAirHiThrow_1,
ftPp_SM_SpecialLw,
ftPp_SM_SpecialAirLw,
ftPp_SM_SpecialS_0,
ftPp_SM_SpecialS_1,
ftPp_SM_SpecialHi_0,
ftPp_SM_SpecialHi_1,
ftPp_SM_SpecialHi_2,
ftPp_SM_SpecialHi_3,
ftPp_SM_SpecialHi_4,
ftPp_SM_SpecialHi_5,
ftPp_SM_Count,
ftPp_SM_SelfCount = ftPp_SM_Count - ftCo_SM_Count,
} ftPp_Submotion;
/* 122EDC */ void ftNn_Init_OnLoad(Fighter_GObj* gobj);
/* 122F28 */ void ftNn_Init_OnDeath(Fighter_GObj* gobj);
/* 122FAC */ void ftNn_Init_80122FAC(Fighter_GObj* gobj);
/* 122FCC */ void ftNn_Init_LoadSpecialAttrs(Fighter_GObj* gobj);
/* 123348 */ void ftPp_SpecialHi_0_Anim(Fighter_GObj* gobj);
/* 123384 */ void ftPp_SpecialHi_3_Anim(Fighter_GObj* gobj);
/* 123388 */ void ftPp_SpecialHi_0_IASA(Fighter_GObj* gobj);
/* 12338C */ void ftPp_SpecialHi_3_IASA(Fighter_GObj* gobj);
/* 123390 */ void ftPp_SpecialHi_0_Phys(Fighter_GObj* gobj);
/* 1233EC */ void ftPp_SpecialHi_3_Phys(Fighter_GObj* gobj);
/* 1233F0 */ void ftPp_SpecialHi_0_Coll(Fighter_GObj* gobj);
/* 1233F4 */ void ftPp_SpecialHi_3_Coll(Fighter_GObj* gobj);
/* 123448 */ void ftPp_SpecialHi_1_Anim(Fighter_GObj* gobj);
/* 123484 */ void ftPp_SpecialHi_4_Anim(Fighter_GObj* gobj);
/* 1234E4 */ void ftPp_SpecialHi_1_IASA(Fighter_GObj* gobj);
/* 1234E8 */ void ftPp_SpecialHi_4_IASA(Fighter_GObj* gobj);
/* 1234EC */ void ftPp_SpecialHi_1_Phys(Fighter_GObj* gobj);
/* 12350C */ void ftPp_SpecialHi_4_Phys(Fighter_GObj* gobj);
/* 1235BC */ void ftPp_SpecialHi_1_Coll(Fighter_GObj* gobj);
/* 1235F8 */ void ftPp_SpecialHi_4_Coll(Fighter_GObj* gobj);
/* 123954 */ bool ftNn_Init_80123954(Fighter_GObj* gobj, GroundOrAir pp_ga);
/* 123B10 */ bool ftNn_Init_80123B10(Fighter_GObj*);
/* 123CA4 */ void ftPp_SpecialS_0_Anim(Fighter_GObj* gobj);
/* 123D68 */ void ftPp_SpecialS_1_Anim(Fighter_GObj* gobj);
/* 123E58 */ void ftPp_SpecialS_0_IASA(Fighter_GObj* gobj);
/* 123E5C */ void ftPp_SpecialS_1_IASA(Fighter_GObj* gobj);
/* 123E60 */ void ftPp_SpecialS_0_Phys(Fighter_GObj* gobj);
/* 123EFC */ void ftPp_SpecialS_1_Phys(Fighter_GObj* gobj);
/* 123F98 */ void ftPp_SpecialS_0_Coll(Fighter_GObj* gobj);
/* 1241A0 */ void ftPp_SpecialS_1_Coll(Fighter_GObj* gobj);
/* 3CD838 */ extern MotionState ftNn_Init_MotionStateTable[ftPp_MS_SelfCount];
/* 3CDB78 */ extern char ftNn_Init_DatFilename[];
/* 3CDB84 */ extern char ftNn_Init_DataName[];
/* 3CDCA0 */ extern char ftNn_Init_AnimDatFilename[];
/* 3CDD1C */ extern Fighter_DemoStrings ftNn_Init_DemoMotionFilenames;
/* 3CDD2C */ extern Fighter_CostumeStrings ftNn_Init_CostumeStrings[];
#define GALE01_114EB8
/* 114EB8 */ void ftNs_AttackHi4_YoyoUpdateHitPos(HSD_GObj* gobj);
/* 114F0C */ void ftNs_AttackHi4_YoyoCheckTimedRehit(HSD_GObj* gobj);
/* 114FF8 */ s32 ftNs_AttackHi4_YoyoCheckEnvColl(HSD_GObj* gobj, Vec3* ECBUnk,
Vec3* ECBUnk2,
float float_unk);
/* 115114 */ void ftNs_AttackHi4_YoyoSetUnkPos(HSD_GObj* gobj, Vec3* arg1);
/* 1151EC */ void ftNs_AttackHi4_YoyoSetHitPos(HSD_GObj* gobj);
/* 1152D0 */ void ftNs_AttackHi4_YoyoSetHitPosUnk(HSD_GObj* gobj, float arg8);
/* 115404 */ bool ftNs_AttackHi4_YoyoCheckNoObstruct(HSD_GObj* gobj);
/* 115534 */ void ftNs_AttackHi4_YoyoSetVarAll(HSD_GObj* gobj);
/* 11556C */ void ftNs_AttackHi4_YoyoApplySmash(HSD_GObj* gobj);
/* 115680 */ void ftNs_AttackHi4_YoyoSetChargeDamage(HSD_GObj* gobj);
/* 115784 */ bool ftNs_AttackHi4_YoyoThink_IsRemove(HSD_GObj* gobj);
/* 11599C */ void ftNs_AttackHi4_YoyoSetUnkRate(HSD_GObj* gobj);
/* 115A08 */ void ftNs_AttackHi4_YoyoCreateItem(HSD_GObj* gobj);
/* 115AC4 */ void ftNs_AttackHi4_YoyoItemSetFlag(HSD_GObj* gobj);
/* 115AF8 */ void ftNs_AttackHi4_YoyoItemDespawn(HSD_GObj* gobj);
/* 115B50 */ void ftNs_AttackHi4_YoyoItemSetUnk2(HSD_GObj* gobj);
/* 115B80 */ void ftNs_AttackHi4_YoyoItemSetUnk(HSD_GObj* gobj);
/* 115BB0 */ void ftNs_AttackHi4_Enter(HSD_GObj* gobj);
/* 115C74 */ void ftNs_AttackHi4_YoyoStartTimedRehit(HSD_GObj* gobj);
/* 115C9C */ void ftNs_AttackHi4_Anim(HSD_GObj* gobj);
/* 115E74 */ void ftNs_AttackHi4_IASA(HSD_GObj* gobj);
/* 115EB8 */ void ftNs_AttackHi4_Phys(HSD_GObj* gobj);
/* 115F14 */ void ftNs_AttackHi4_Coll(HSD_GObj* gobj);
/* 115F88 */ void ftNs_AttackHi4Charge_Anim(HSD_GObj* gobj);
/* 1160B4 */ void ftNs_AttackHi4Charge_IASA(HSD_GObj* gobj);
/* 1160E4 */ void ftNs_AttackHi4Charge_Phys(HSD_GObj* gobj);
/* 116104 */ void ftNs_AttackHi4Charge_Coll(HSD_GObj* gobj);
/* 116178 */ void ftNs_AttackHi4Charge_Enter(HSD_GObj* gobj);
/* 11620C */ void ftNs_AttackHi4Release_Anim(HSD_GObj* gobj);
/* 1162B0 */ void ftNs_AttackHi4Release_IASA(HSD_GObj* gobj);
/* 1162E0 */ void ftNs_AttackHi4Release_Phys(HSD_GObj* gobj);
/* 116420 */ void ftNs_AttackHi4Release_Coll(HSD_GObj* gobj);
/* 116494 */ void ftNs_AttackHi4Release_Enter(HSD_GObj* gobj);
/// @file
/// Down Smash callbacks (AttackLw4)
#define GALE01_11659C
/* 11659C */ void ftNs_AttackLw4_Enter(HSD_GObj* gobj);
/* 116638 */ void ftNs_AttackLw4_Anim(HSD_GObj* gobj);
/* 1166D4 */ void ftNs_AttackLw4_IASA(HSD_GObj* gobj);
/* 116718 */ void ftNs_AttackLw4_Phys(HSD_GObj* gobj);
/* 11674C */ void ftNs_AttackLw4_Coll(HSD_GObj* gobj);
/* 116798 */ void ftNs_AttackLw4Charge_Anim(HSD_GObj* gobj);
/* 116828 */ void ftNs_AttackLw4Charge_IASA(HSD_GObj* gobj);
/* 116858 */ void ftNs_AttackLw4Charge_Phys(HSD_GObj* gobj);
/* 116878 */ void ftNs_AttackLw4Charge_Coll(HSD_GObj* gobj);
/* 1168C4 */ void ftNs_AttackLw4Charge_Enter(HSD_GObj* gobj);
/* 116958 */ void ftNs_AttackLw4Release_Anim(HSD_GObj* gobj);
/* 1169BC */ void ftNs_AttackLw4Release_IASA(HSD_GObj* gobj);
/* 1169EC */ void ftNs_AttackLw4Release_Phys(HSD_GObj* gobj);
/* 116A9C */ void ftNs_AttackLw4Release_Coll(HSD_GObj* gobj);
/* 116AE8 */ void ftNs_AttackLw4Release_Enter(HSD_GObj* gobj);
/// @file
/// Forward Smash (AttackS4)
#define GALE01_114BF4
/* 114BF4 */ void ftNs_AttackS4_OnReflect(HSD_GObj* gobj);
/* 114C24 */ void ftNs_AttackS4_Enter(HSD_GObj* gobj);
/* 114CC0 */ bool ftNs_AttackS4_CheckNessBatRemove(HSD_GObj* gobj);
/* 114CF4 */ void ftNs_AttackS4_ItemNessBatRemove(HSD_GObj* gobj);
/* 114D34 */ void ftNs_AttackS4_ItemNessBatSetNULL(HSD_GObj* gobj);
/* 114D50 */ void ftNs_AttackS4_Anim(HSD_GObj* gobj);
/* 114E04 */ void ftNs_AttackS4_IASA(HSD_GObj* gobj);
/* 114E64 */ void ftNs_AttackS4_Phys(HSD_GObj* gobj);
/* 114E98 */ void ftNs_AttackS4_Coll(HSD_GObj* gobj);
#define GALE01_1147C0
/* 1147C0 */ void ftNs_Init_OnDeath(HSD_GObj* gobj);
/* 11480C */ void ftNs_Init_OnLoad(HSD_GObj* gobj);
/* 1148F8 */ void ftNs_Init_OnDamage(HSD_GObj* gobj);
/* 11493C */ void ftNs_Init_OnAbsorb(HSD_GObj* gobj);
/* 11495C */ float ftNs_Init_GetAbsorbHeal(Fighter* fp);
/* 114968 */ void ftNs_Init_OnItemPickup(HSD_GObj* gobj, bool catchItemFlag);
/* 114A48 */ void ftNs_Init_OnItemInvisible(HSD_GObj* gobj);
/* 114A90 */ void ftNs_Init_OnItemVisible(HSD_GObj* gobj);
/* 114AD8 */ void ftNs_Init_OnItemDrop(HSD_GObj* gobj, bool dropItemFlag);
/* 114B2C */ void ftNs_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 114B6C */ void ftNs_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 114BB0 */ void ftNs_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3CC650 */ extern MotionState ftNs_Init_MotionStateTable[ftNs_MS_SelfCount];
/* 3CCAD0 */ extern char ftNs_Init_DatFilename[];
/* 3CCADC */ extern char ftNs_Init_DataName[];
/* 3CCBF8 */ extern char ftNs_Init_AnimDatFilename[];
/* 3CCC74 */ extern Fighter_DemoStrings ftNs_Init_DemoMotionFilenames;
/* 3CCC84 */ extern Fighter_CostumeStrings ftNs_Init_CostumeStrings[];
/// @file
/// PK Thunder callbacks (SpecialHi)
#define GALE01_116D04
/* 116D04 */ void ftNs_SpecialAirS_Enter(HSD_GObj* gobj);
/* 116DB0 */ void ftNs_SpecialAirS_Anim(HSD_GObj* gobj);
/* 116E0C */ void ftNs_SpecialAirS_Phys(HSD_GObj* gobj);
/* 116E68 */ void ftNs_SpecialAirS_Coll(HSD_GObj* gobj);
/* 117034 */ void ftNs_SpecialAirNStart_Enter(HSD_GObj* gobj);
/* 117378 */ void ftNs_SpecialAirNStart_Anim(HSD_GObj* gobj);
/* 117458 */ void ftNs_SpecialAirNRelease_Anim(HSD_GObj* gobj);
/* 11758C */ void ftNs_SpecialAirNEnd_Anim(HSD_GObj* gobj);
/* 1176CC */ void ftNs_SpecialAirNStart_IASA(HSD_GObj* gobj);
/* 1176D0 */ void ftNs_SpecialAirNRelease_IASA(HSD_GObj* gobj);
/* 11774C */ void ftNs_SpecialAirNEnd_IASA(HSD_GObj* gobj);
/* 1177C8 */ void ftNs_SpecialAirNStart_Phys(HSD_GObj* gobj);
/* 117828 */ void ftNs_SpecialAirNRelease_Phys(HSD_GObj* gobj);
/* 117888 */ void ftNs_SpecialAirNEnd_Phys(HSD_GObj* gobj);
/* 117A2C */ void ftNs_SpecialAirNStart_Coll(HSD_GObj* gobj);
/* 117A98 */ void ftNs_SpecialAirNRelease_Coll(HSD_GObj* gobj);
/* 117B04 */ void ftNs_SpecialAirNEnd_Coll(HSD_GObj* gobj);
/* 117B70 */ void ftNs_SpecialHiStopGFX(HSD_GObj* gobj);
/* 117BBC */ bool
ftNs_SpecialHi_ItemPKThunder_CheckNessCollide(HSD_GObj* gobj);
/* 117D9C */ bool ftNs_SpecialHi_CheckSpecialHiHold(HSD_GObj* gobj);
/* 117DD4 */ void ftNs_SpecialHi_ItemPKThunderRemove(HSD_GObj* gobj);
/* 117E60 */ void ftNs_SpecialHi_TakeDamage(HSD_GObj* gobj);
/* 117F00 */ void ftNs_SpecialHi_ItemPKThunderCheckOwn(HSD_GObj* gobj,
HSD_GObj* thunder_gobj);
/* 118120 */ void ftNs_SpecialHiStart_Enter(HSD_GObj* gobj);
/* 118250 */ void ftNs_SpecialAirHiStart_Enter(HSD_GObj* gobj);
/* 118384 */ void ftNs_SpecialHi_Enter(HSD_GObj* gobj);
/* 118570 */ void ftNs_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 1186B0 */ void ftNs_SpecialHiStart_Anim(HSD_GObj* gobj);
/* 1187A4 */ void ftNs_SpecialHiHold_Anim(HSD_GObj* gobj);
/* 118900 */ void ftNs_SpecialHiEnd_Anim(HSD_GObj* gobj);
/* 11893C */ void ftNs_SpecialHi_Anim(HSD_GObj* gobj);
/* 118A10 */ void ftNs_SpecialAirHiStart_Anim(HSD_GObj* gobj);
/* 118B04 */ void ftNs_SpecialAirHiHold_Anim(HSD_GObj* gobj);
/* 118D60 */ void ftNs_SpecialAirHiEnd_Anim(HSD_GObj* gobj);
/* 118DF8 */ void ftNs_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 118EF0 */ void ftNs_SpecialAirHiRebound_Anim(HSD_GObj* gobj);
/* 118F80 */ void ftNs_SpecialHiStart_IASA(HSD_GObj* gobj);
/* 118F84 */ void ftNs_SpecialHiHold_IASA(HSD_GObj* gobj);
/* 118F88 */ void ftNs_SpecialHiEnd_IASA(HSD_GObj* gobj);
/* 118F8C */ void ftNs_SpecialHi_IASA(HSD_GObj* gobj);
/* 118F90 */ void ftNs_SpecialAirHiStart_IASA(HSD_GObj* gobj);
/* 118F94 */ void ftNs_SpecialAirHiHold_IASA(HSD_GObj* gobj);
/* 118F98 */ void ftNs_SpecialAirHiEnd_IASA(HSD_GObj* gobj);
/* 118F9C */ void ftNs_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 118FA0 */ void ftNs_SpecialAirHiRebound_IASA(HSD_GObj* gobj);
/* 118FA4 */ void ftNs_SpecialHiStart_Phys(HSD_GObj* gobj);
/* 118FDC */ void ftNs_SpecialHiHold_Phys(HSD_GObj* gobj);
/* 118FFC */ void ftNs_SpecialHiEnd_Phys(HSD_GObj* gobj);
/* 11901C */ void ftNs_SpecialHi_Phys(HSD_GObj* gobj);
/* 119134 */ void ftNs_SpecialAirHiStart_Phys(HSD_GObj* gobj);
/* 119194 */ void ftNs_SpecialAirHiHold_Phys(HSD_GObj* gobj);
/* 1191F4 */ void ftNs_SpecialAirHiEnd_Phys(HSD_GObj* gobj);
/* 119254 */ void ftNs_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 119410 */ void ftNs_SpecialAirHiRebound_Phys(HSD_GObj* gobj);
/* 119460 */ void ftNs_SpecialHiStart_Coll(HSD_GObj* gobj);
/* 1194CC */ void ftNs_SpecialHiHold_Coll(HSD_GObj* gobj);
/* 119538 */ void ftNs_SpecialHiEnd_Coll(HSD_GObj* gobj);
/* 1195A4 */ void ftNs_SpecialHi_Coll(HSD_GObj* gobj);
/* 119798 */ void ftNs_SpecialAirHiStart_Coll(HSD_GObj* gobj);
/* 119804 */ void ftNs_SpecialAirHiHold_Coll(HSD_GObj* gobj);
/* 119870 */ void ftNs_SpecialAirHiEnd_Coll(HSD_GObj* gobj);
/* 1198DC */ void ftNs_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 119D58 */ void ftNs_SpecialAirHiRebound_Coll(HSD_GObj* gobj);
/// @file
/// PSI Magnet callbacks (SpecialLw)
#define GALE01_119E14
/* 119E14 */ void ftNs_SpecialLwStart_Enter(HSD_GObj* gobj);
/* 119E90 */ void ftNs_SpecialAirLwStart_Enter(HSD_GObj* gobj);
/* 119F20 */ void ftNs_SpecialLwStart_Anim(HSD_GObj* gobj);
/* 11A000 */ void ftNs_SpecialAirLwStart_Anim(HSD_GObj* gobj);
/* 11A0E0 */ void ftNs_SpecialLwStart_IASA(HSD_GObj* gobj);
/* 11A0E4 */ void ftNs_SpecialAirLwStart_IASA(HSD_GObj* gobj);
/* 11A0E8 */ void ftNs_SpecialLwStart_Phys(HSD_GObj* gobj);
/* 11A108 */ void ftNs_SpecialAirLwStart_Phys(HSD_GObj* gobj);
/* 11A168 */ void ftNs_SpecialLwStart_Coll(HSD_GObj* gobj);
/* 11A1A4 */ void ftNs_SpecialAirLwStart_Coll(HSD_GObj* gobj);
/* 11A1E0 */ void ftNs_SpecialLwStart_GroundToAir(HSD_GObj* gobj);
/* 11A240 */ void ftNs_SpecialAirLwStart_AirToGround(HSD_GObj* gobj);
/* 11A2A8 */ void ftNs_SpecialLwHold_Anim(HSD_GObj* gobj);
/* 11A370 */ void ftNs_SpecialAirLwHold_Anim(HSD_GObj* gobj);
/* 11A438 */ void ftNs_SpecialLwHold_IASA(HSD_GObj* gobj);
/* 11A43C */ void ftNs_SpecialAirLwHold_IASA(HSD_GObj* gobj);
/* 11A440 */ void ftNs_SpecialLwHold_Phys(HSD_GObj* gobj);
/* 11A474 */ void ftNs_SpecialAirLwHold_Phys(HSD_GObj* gobj);
/* 11A4E8 */ void ftNs_SpecialLwHold_Coll(HSD_GObj* gobj);
/* 11A524 */ void ftNs_SpecialAirLwHold_Coll(HSD_GObj* gobj);
/* 11A560 */ void ftNs_SpecialLwHold_GroundToAir(HSD_GObj* gobj);
/* 11A5D4 */ void ftNs_SpecialAirLwHold_AirToGround(HSD_GObj* gobj);
/* 11A650 */ void ftNs_SpecialLwHold_Enter(HSD_GObj* gobj);
/* 11A6A8 */ void ftNs_SpecialAirLwHold_Enter(HSD_GObj* gobj);
/* 11A700 */ void ftNs_SpecialLwTurn_Anim(HSD_GObj* gobj);
/* 11A810 */ void ftNs_SpecialAirLwTurn_Anim(HSD_GObj* gobj);
/* 11A920 */ void ftNs_SpecialLwTurn_IASA(HSD_GObj* gobj);
/* 11A924 */ void ftNs_SpecialAirLwTurn_IASA(HSD_GObj* gobj);
/* 11A928 */ void ftNs_SpecialLwTurn_Phys(HSD_GObj* gobj);
/* 11A95C */ void ftNs_SpecialAirLwTurn_Phys(HSD_GObj* gobj);
/* 11A9D0 */ void ftNs_SpecialLwTurn_Coll(HSD_GObj* gobj);
/* 11AA0C */ void ftNs_SpecialAirLwTurn_Coll(HSD_GObj* gobj);
/* 11AA48 */ void ftNs_SpecialLwTurn_GroundToAir(HSD_GObj* gobj);
/* 11AAA8 */ void ftNs_SpecialAirLwTurn_AirToGround(HSD_GObj* gobj);
/* 11AB10 */ bool ftNs_SpecialLwHold_GroundOrAir(HSD_GObj* gobj);
/* 11ABF8 */ void ftNs_SpecialLwHit_Anim(HSD_GObj* gobj);
/* 11ADC8 */ void ftNs_SpecialAirLwHit_Anim(HSD_GObj* gobj);
/* 11AEE0 */ void ftNs_SpecialLwHit_IASA(HSD_GObj* gobj);
/* 11AEE4 */ void ftNs_SpecialAirLwHit_IASA(HSD_GObj* gobj);
/* 11AEE8 */ void ftNs_SpecialLwHit_Phys(HSD_GObj* gobj);
/* 11AF1C */ void ftNs_SpecialAirLwHit_Phys(HSD_GObj* gobj);
/* 11AF90 */ void ftNs_SpecialLwHit_Coll(HSD_GObj* gobj);
/* 11AFCC */ void ftNs_SpecialAirLwHit_Coll(HSD_GObj* gobj);
/* 11B008 */ void ftNs_SpecialLwHit_GroundToAir(HSD_GObj* gobj);
/* 11B07C */ void ftNs_SpecialAirLwHit_AirToGround(HSD_GObj* gobj);
/* 11B0F8 */ void ftNs_AbsorbThink_DecideAction(HSD_GObj* gobj);
/* 11B25C */ void ftNs_SpecialLwEnd_Anim(HSD_GObj* gobj);
/* 11B2A0 */ void ftNs_SpecialAirLwEnd_Anim(HSD_GObj* gobj);
/* 11B2E4 */ void ftNs_SpecialLwEnd_IASA(HSD_GObj* gobj);
/* 11B2E8 */ void ftNs_SpecialAirLwEnd_IASA(HSD_GObj* gobj);
/* 11B2EC */ void ftNs_SpecialLwEnd_Phys(HSD_GObj* gobj);
/* 11B30C */ void ftNs_SpecialAirLwEnd_Phys(HSD_GObj* gobj);
/* 11B36C */ void ftNs_SpecialLwEnd_Coll(HSD_GObj* gobj);
/* 11B3A8 */ void ftNs_SpecialAirLwEnd_Coll(HSD_GObj* gobj);
/* 11B3E4 */ void ftNs_SpecialLwEnd_GroundToAir(HSD_GObj* gobj);
/* 11B444 */ void ftNs_SpecialAirLwEnd_AirToGround(HSD_GObj* gobj);
/* 11B4AC */ void ftNs_SpecialLwEnd_Enter(HSD_GObj* gobj);
/* 11B4E4 */ void ftNs_SpecialAirLwEnd_Enter(HSD_GObj* gobj);
/// @file
/// PK Flash callbacks (SpecialN)
#define GALE01_116EBC
/* 116EBC */ bool ftNs_SpecialN_CheckSpecialNHold(HSD_GObj* gobj);
/* 116F00 */ void ftNs_SpecialN_SetNULL(HSD_GObj* gobj);
/* 116F38 */ void ftNs_SpecialN_ItemPKFlushSetNULL(HSD_GObj* gobj);
/* 116F94 */ void ftNs_SpecialNStart_Enter(HSD_GObj* gobj);
/* 117034 */ void ftNs_SpecialAirNStart_Enter(HSD_GObj* gobj);
/* 1170DC */ void ftNs_SpecialNStart_Anim(HSD_GObj* gobj);
/* 1171BC */ void ftNs_SpecialNRelease_Anim(HSD_GObj* gobj);
/* 1172F0 */ void ftNs_SpecialNEnd_Anim(HSD_GObj* gobj);
/* 117378 */ void ftNs_SpecialAirNStart_Anim(HSD_GObj* gobj);
/* 117458 */ void ftNs_SpecialAirNRelease_Anim(HSD_GObj* gobj);
/* 11758C */ void ftNs_SpecialAirNEnd_Anim(HSD_GObj* gobj);
/* 117648 */ void ftNs_SpecialNStart_IASA(HSD_GObj* gobj);
/* 11764C */ void ftNs_SpecialNRelease_IASA(HSD_GObj* gobj);
/* 1176C8 */ void ftNs_SpecialNEnd_IASA(HSD_GObj* gobj);
/* 1176CC */ void ftNs_SpecialAirNStart_IASA(HSD_GObj* gobj);
/* 1176D0 */ void ftNs_SpecialAirNRelease_IASA(HSD_GObj* gobj);
/* 11774C */ void ftNs_SpecialAirNEnd_IASA(HSD_GObj* gobj);
/* 117750 */ void ftNs_SpecialNStart_Phys(HSD_GObj* gobj);
/* 117788 */ void ftNs_SpecialNRelease_Phys(HSD_GObj* gobj);
/* 1177A8 */ void ftNs_SpecialNEnd_Phys(HSD_GObj* gobj);
/* 1177C8 */ void ftNs_SpecialAirNStart_Phys(HSD_GObj* gobj);
/* 117828 */ void ftNs_SpecialAirNRelease_Phys(HSD_GObj* gobj);
/* 117888 */ void ftNs_SpecialAirNEnd_Phys(HSD_GObj* gobj);
/* 1178E8 */ void ftNs_SpecialNStart_Coll(HSD_GObj* gobj);
/* 117954 */ void ftNs_SpecialNRelease_Coll(HSD_GObj* gobj);
/* 1179C0 */ void ftNs_SpecialNEnd_Coll(HSD_GObj* gobj);
/* 117A2C */ void ftNs_SpecialAirNStart_Coll(HSD_GObj* gobj);
/* 117A98 */ void ftNs_SpecialAirNRelease_Coll(HSD_GObj* gobj);
/* 117B04 */ void ftNs_SpecialAirNEnd_Coll(HSD_GObj* gobj);
/// @file
/// PK Fire callbacks (SpecialS)
#define GALE01_116B70
/* 116B70 */ void ftNs_SpecialS_ItemPKFireSpawn(HSD_GObj* gobj);
/* 116C94 */ void ftNs_SpecialS_Enter(HSD_GObj* gobj);
/* 116D04 */ void ftNs_SpecialAirS_Enter(HSD_GObj* gobj);
/* 116D74 */ void ftNs_SpecialS_Anim(HSD_GObj* gobj);
/* 116DB0 */ void ftNs_SpecialAirS_Anim(HSD_GObj* gobj);
/* 116DEC */ void ftNs_SpecialS_Phys(HSD_GObj* gobj);
/* 116E0C */ void ftNs_SpecialAirS_Phys(HSD_GObj* gobj);
/* 116E2C */ void ftNs_SpecialS_Coll(HSD_GObj* gobj);
/* 116E68 */ void ftNs_SpecialAirS_Coll(HSD_GObj* gobj);
#define GALE01_11C1C0
/* 11C1C0 */ void ftPe_AttackS4_Enter(HSD_GObj* gobj);
/* 11C248 */ void ftPe_AttackS4_Anim(HSD_GObj* gobj);
/* 11C284 */ void ftPe_AttackS4_IASA(HSD_GObj* gobj);
/* 11C2B4 */ void ftPe_AttackS4_Phys(HSD_GObj* gobj);
/* 11C2D4 */ void ftPe_AttackS4_Coll(HSD_GObj* gobj);
#define GALE01_11BAD8
/* 11BA20 */ bool ftPe_Float_CheckContinueInput(Fighter* fp);
/* 11BA54 */ bool ftPe_8011BA54(HSD_GObj* gobj);
/* 11BAD8 */ bool ftPe_8011BAD8(HSD_GObj* gobj);
/* 11BB6C */ void ftPe_8011BB6C(HSD_GObj* gobj, bool arg1);
/* 11BC38 */ void ftPe_Float_Anim(HSD_GObj* gobj);
/* 11BC8C */ void ftPe_Float_IASA(HSD_GObj* gobj);
/* 11BD18 */ void ftPe_Float_Phys(HSD_GObj* gobj);
/* 11BD3C */ void ftPe_Float_Coll(HSD_GObj* gobj);
#define GALE01_11BF88
/* 11BE80 */ bool ftPe_8011BE80(HSD_GObj* gobj);
/* 11BF88 */ void ftPe_FloatAttackAir_Anim(HSD_GObj* gobj);
/* 11C044 */ void ftPe_FloatAttackAir_IASA(HSD_GObj* gobj);
/* 11C160 */ void ftPe_FloatAttackAir_Phys(HSD_GObj* gobj);
/* 11C198 */ void ftPe_FloatAttackAir_Coll(HSD_GObj* gobj);
#define GALE01_11BDF0
/* 11BD6C */ void ftPe_UpdateFloatDir(HSD_GObj* gobj);
/* 11BDF0 */ void ftPe_FloatFall_Anim(HSD_GObj* gobj);
/* 11BE2C */ void ftPe_FloatFall_IASA(HSD_GObj* gobj);
/* 11BE30 */ void ftPe_FloatFall_Phys(HSD_GObj* gobj);
/* 11BE50 */ void ftPe_FloatFall_Coll(HSD_GObj* gobj);
#define GALE01_11B51C
/* 11B51C */ void ftPe_Init_OnDeath(HSD_GObj* gobj);
/* 11B628 */ void ftPe_Init_OnLoad(HSD_GObj* gobj);
/* 11B704 */ void ftPe_Init_OnDeath2(HSD_GObj* gobj);
/* 11B740 */ void ftPe_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 11B820 */ void ftPe_Init_OnItemInvisible(HSD_GObj* gobj);
/* 11B868 */ void ftPe_Init_OnItemVisible(HSD_GObj* gobj);
/* 11B8B0 */ void ftPe_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 11B904 */ void ftPe_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 11B93C */ void ftPe_Init_8011B93C(HSD_GObj* gobj);
/* 11B998 */ void ftPe_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 11B9DC */ void ftPe_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3CCCB8 */ extern MotionState ftPe_Init_MotionStateTable[ftPe_MS_SelfCount];
/* 3CD078 */ extern char ftPe_Init_DatFilename[];
/* 3CD084 */ extern char ftPe_Init_DataName[];
/* 3CD204 */ extern char ftPe_Init_AnimDatFilename[];
/* 3CD280 */ extern Fighter_DemoStrings ftPe_Init_DemoMotionFilenames;
/* 3CD290 */ extern Fighter_CostumeStrings ftPe_Init_CostumeStrings[];
#define GALE01_11D72C
/* 11D518 */ bool ftPe_8011D518(HSD_GObj* gobj);
/* 11D598 */ void ftPe_8011D598(HSD_GObj* gobj);
/* 11D680 */ bool ftPe_SpecialHi_NotActive(HSD_GObj* gobj);
/* 11D72C */ void ftPe_SpecialHi_Enter(HSD_GObj* gobj);
/* 11D7F0 */ void ftPe_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 11D8D0 */ void ftPe_SpecialHiStart_Anim(HSD_GObj* gobj);
/* 11D980 */ void ftPe_SpecialAirHiStart_Anim(HSD_GObj* gobj);
/* 11DA30 */ void ftPe_SpecialHiStart_IASA(HSD_GObj* gobj);
/* 11DB78 */ void ftPe_SpecialAirHiStart_IASA(HSD_GObj* gobj);
/* 11DCC0 */ void ftPe_SpecialHiStart_Phys(HSD_GObj* gobj);
/* 11DCF8 */ void ftPe_SpecialAirHiStart_Phys(HSD_GObj* gobj);
/* 11DDBC */ void ftPe_SpecialHiStart_Coll(HSD_GObj* gobj);
/* 11DE2C */ void ftPe_SpecialAirHiStart_Coll(HSD_GObj* gobj);
/* 11DE9C */ void ftPe_SpecialHiEnd_Anim(HSD_GObj* gobj);
/* 11DEFC */ void ftPe_SpecialAirHiEnd_Anim(HSD_GObj* gobj);
/* 11DF5C */ void ftPe_SpecialHiEnd_IASA(HSD_GObj* gobj);
/* 11DF60 */ void ftPe_SpecialAirHiEnd_IASA(HSD_GObj* gobj);
/* 11DF64 */ void ftPe_SpecialHiEnd_Phys(HSD_GObj* gobj);
/* 11DFD0 */ void ftPe_SpecialAirHiEnd_Phys(HSD_GObj* gobj);
/* 11E094 */ void ftPe_SpecialHiEnd_Coll(HSD_GObj* gobj);
/* 11E104 */ void ftPe_SpecialAirHiEnd_Coll(HSD_GObj* gobj);
#define GALE01_11D11C
/* 11CF84 */ void ftPe_SpecialLw_UnsetVeg(HSD_GObj* gobj);
/* 11CFA0 */ void ftPe_SpecialLw_8011CFA0(HSD_GObj* gobj);
/* 11D11C */ void ftPe_SpecialLw_Enter(HSD_GObj* gobj);
/* 11D1C4 */ void ftPe_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 11D2EC */ void ftPe_SpecialLw_Anim(HSD_GObj* gobj);
/* 11D340 */ void ftPe_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 11D394 */ void ftPe_SpecialLw_Phys(HSD_GObj* gobj);
/* 11D3B4 */ void ftPe_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 11D3D4 */ void ftPe_SpecialLw_Coll(HSD_GObj* gobj);
/* 11D3FC */ void ftPe_SpecialAirLw_Coll(HSD_GObj* gobj);
#define GALE01_11E3D0
/* 11E2AC */ void ftPe_SpecialN_DoDeath2(HSD_GObj* gobj);
/* 11E2E8 */ void ftPe_SpecialN_OnDeath2(HSD_GObj* gobj);
/* 11E3A8 */ bool ftPe_SpecialN_IsActive(HSD_GObj* gobj);
/* 11E3D0 */ void ftPe_SpecialN_Enter(HSD_GObj* gobj);
/* 11E45C */ void ftPe_SpecialAirN_Enter(HSD_GObj* gobj);
/* 11E4F8 */ void ftPe_SpecialN_Anim(HSD_GObj* gobj);
/* 11E5B4 */ void ftPe_SpecialAirN_Anim(HSD_GObj* gobj);
/* 11E670 */ void ftPe_SpecialN_IASA(HSD_GObj* gobj);
/* 11E674 */ void ftPe_SpecialAirN_IASA(HSD_GObj* gobj);
/* 11E678 */ void ftPe_SpecialN_Phys(HSD_GObj* gobj);
/* 11E6AC */ void ftPe_SpecialAirN_Phys(HSD_GObj* gobj);
/* 11E75C */ void ftPe_SpecialN_Coll(HSD_GObj* gobj);
/* 11E798 */ void ftPe_SpecialAirN_Coll(HSD_GObj* gobj);
/* 11E9A0 */ void ftPe_SpecialNHit_Anim(HSD_GObj* gobj);
/* 11EA04 */ void ftPe_SpecialAirNHit_Anim(HSD_GObj* gobj);
/* 11EA68 */ void ftPe_SpecialNHit_IASA(HSD_GObj* gobj);
/* 11EA6C */ void ftPe_SpecialAirNHit_IASA(HSD_GObj* gobj);
/* 11EA70 */ void ftPe_SpecialNHit_Phys(HSD_GObj* gobj);
/* 11EA90 */ void ftPe_SpecialAirNHit_Phys(HSD_GObj* gobj);
/* 11EAE0 */ void ftPe_SpecialNHit_Coll(HSD_GObj* gobj);
/* 11EB1C */ void ftPe_SpecialAirNHit_Coll(HSD_GObj* gobj);
#define GALE01_11C2F4
/* 11C34C */ void ftPe_SpecialS_Enter(HSD_GObj* gobj);
/* 11C3C4 */ void ftPe_SpecialAirS_Enter(HSD_GObj* gobj);
/* 11C4F0 */ void ftPe_SpecialSStart_Anim(HSD_GObj* gobj);
/* 11C588 */ void ftPe_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 11C5E8 */ void ftPe_SpecialSStart_IASA(HSD_GObj* gobj);
/* 11C5EC */ void ftPe_SpecialAirSStart_IASA(HSD_GObj* gobj);
/* 11C5F0 */ void ftPe_SpecialSStart_Phys(HSD_GObj* gobj);
/* 11C644 */ void ftPe_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 11C664 */ void ftPe_SpecialSStart_Coll(HSD_GObj* gobj);
/* 11C6FC */ void ftPe_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 11C878 */ void ftPe_SpecialAirSJump_Anim(HSD_GObj* gobj);
/* 11C8C8 */ void ftPe_SpecialAirSJump_IASA(HSD_GObj* gobj);
/* 11C8CC */ void ftPe_SpecialAirSJump_Phys(HSD_GObj* gobj);
/* 11C93C */ void ftPe_SpecialAirSJump_Coll(HSD_GObj* gobj);
/* 11CA84 */ void ftPe_SpecialSEnd_Anim(HSD_GObj* gobj);
/* 11CAC0 */ void ftPe_SpecialAirSEnd_Anim(HSD_GObj* gobj);
/* 11CAFC */ void ftPe_SpecialSEnd_IASA(HSD_GObj* gobj);
/* 11CB00 */ void ftPe_SpecialAirSEnd_IASA(HSD_GObj* gobj);
/* 11CB04 */ void ftPe_SpecialSEnd_Phys(HSD_GObj* gobj);
/* 11CB24 */ void ftPe_SpecialAirSEnd_Phys(HSD_GObj* gobj);
/* 11CB44 */ void ftPe_SpecialSEnd_Coll(HSD_GObj* gobj);
/* 11CB80 */ void ftPe_SpecialAirSEnd_Coll(HSD_GObj* gobj);
#define GALE01_149E34
#define MELEE_FT_CHARA_FTPIKACHU_FORWARD_H
static MotionFlags const ftPk_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftPk_MF_SpecialLw =
ftPk_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftPk_MF_SpecialN =
ftPk_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftPk_MF_SpecialHi =
ftPk_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx |
Ft_MF_SkipThrowException;
static MotionFlags const ftPk_MF_SpecialS =
ftPk_MF_Special | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftPk_MF_SpecialAirLw =
ftPk_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftPk_MF_SpecialAirN =
ftPk_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftPk_MF_SpecialAirHi =
ftPk_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftPk_MF_SpecialAirS =
ftPk_MF_SpecialS | Ft_MF_SkipParasol;
typedef enum ftPikachu_MotionState {
ftPk_MS_SpecialN = ftCo_MS_Count,
ftPk_MS_SpecialAirN,
ftPk_MS_SpecialSStart,
ftPk_MS_SpecialSHold,
ftPk_MS_SpecialS1,
ftPk_MS_SpecialSEnd,
ftPk_MS_SpecialS0,
ftPk_MS_SpecialAirSStart,
ftPk_MS_SpecialAirSHold,
ftPk_MS_SpecialAirS1,
ftPk_MS_SpecialAirSEnd,
ftPk_MS_SpecialAirS0,
ftPk_MS_SpecialHiStart0,
ftPk_MS_SpecialHiStart1,
ftPk_MS_SpecialHiEnd,
ftPk_MS_SpecialAirHiStart0,
ftPk_MS_SpecialAirHiStart1,
ftPk_MS_SpecialAirHiEnd,
ftPk_MS_SpecialLwStart,
ftPk_MS_SpecialLwLoop0,
ftPk_MS_SpecialLwLoop1,
ftPk_MS_SpecialLwEnd,
ftPk_MS_SpecialAirLwStart,
ftPk_MS_SpecialAirLwLoop0,
ftPk_MS_SpecialAirLwLoop1,
ftPk_MS_SpecialAirLwEnd,
ftPk_MS_Count,
ftPk_MS_SelfCount = ftPk_MS_Count - ftCo_MS_Count,
} ftPikachu_MotionState;
typedef enum ftPk_Submotion {
ftPk_SM_SpecialN = ftCo_SM_Count,
ftPk_SM_SpecialAirN,
ftPk_SM_SpecialSStart,
ftPk_SM_SpecialSHold,
ftPk_SM_SpecialS0,
ftPk_SM_SpecialS1,
ftPk_SM_SpecialSEnd,
ftPk_SM_SpecialAirSStart,
ftPk_SM_SpecialAirSHold,
ftPk_SM_SpecialS,
ftPk_SM_SpecialAirSEnd,
ftPk_SM_SpecialHiStart0,
ftPk_SM_SpecialHiStart1,
ftPk_SM_SpecialHiEnd,
ftPk_SM_SpecialAirHiStart0,
ftPk_SM_SpecialAirHiStart1,
ftPk_SM_SpecialAirHiEnd,
ftPk_SM_SpecialLwStart,
ftPk_SM_SpecialLwLoop0,
ftPk_SM_SpecialLwLoop1,
ftPk_SM_SpecialLwEnd,
ftPk_SM_SpecialAirLwStart,
ftPk_SM_SpecialAirLwLoop0,
ftPk_SM_SpecialAirLwLoop1,
ftPk_SM_SpecialAirLwEnd,
ftPk_SM_Count,
ftPk_SM_SelfCount = ftPk_SM_Count - ftCo_SM_Count,
} ftPk_Submotion;
/* 149E34 */ void ftPc_Init_OnLoad(HSD_GObj* gobj);
/* 149EAC */ void ftPc_Init_OnDeath(HSD_GObj* gobj);
/* 149FE4 */ void ftPc_Init_OnItemPickup(HSD_GObj* gobj, bool);
/* 14A0C4 */ void ftPc_Init_OnItemInvisible(HSD_GObj* gobj);
/* 14A10C */ void ftPc_Init_OnItemVisible(HSD_GObj* gobj);
/* 14A154 */ void ftPc_Init_OnItemDrop(HSD_GObj* gobj, bool);
/* 14A1A8 */ void ftPc_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 14A1C8 */ void ftPc_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 14A20C */ void ftPc_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3D1EA8 */ extern MotionState ftPc_Init_MotionStateTable[ftPk_MS_SelfCount];
/* 3D21E8 */ extern char ftPc_Init_DatFilename[];
/* 3D21F4 */ extern char ftPc_Init_DataName[];
/* 3D2328 */ extern char ftPc_Init_AnimDatFilename[];
/* 3D23A4 */ extern Fighter_DemoStrings ftPc_Init_DemoMotionFilenames;
/* 3D23B4 */ extern Fighter_CostumeStrings ftPc_Init_CostumeStrings[];
#define MELEE_FT_CHARA_FTPICHU_TYPES_H
struct ftPichu_FighterVars {
char filler0[0x100];
};
typedef struct _ftPichuAttributes {
/* 0x00 */ u32 x0_padding[(0x14 - 0x0) / 4];
/* 0x14 */ u32 x14;
/* 0x14 */ u32 x18;
/* 0x18 */ u32 x18_padding[(0xDC - 0x1C) / 4];
/* 0xDC */ u32 xDC;
} ftPichuAttributes;
#define GALE01_1243AC
/* 1243AC */ void ftPk_Init_OnLoad(HSD_GObj* gobj);
/* 1243E4 */ void ftPk_Init_OnLoadForPichu(Fighter* fp);
/* 124474 */ void ftPk_Init_OnDeath(HSD_GObj* gobj);
/* 1244B8 */ void ftPk_Init_OnItemPickup(HSD_GObj* gobj, bool arg1);
/* 124598 */ void ftPk_Init_OnItemInvisible(HSD_GObj* gobj);
/* 1245E0 */ void ftPk_Init_OnItemVisible(HSD_GObj* gobj);
/* 124628 */ void ftPk_Init_OnItemDrop(HSD_GObj* gobj, bool arg1);
/* 12467C */ void ftPk_Init_UnkMotionStates1(HSD_GObj* gobj);
/* 1246C0 */ void ftPk_Init_UnkMotionStates2(HSD_GObj* gobj);
/* 124704 */ void ftPk_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 1247A8 */ void ftPk_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 1247EC */ void ftPk_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3CDD78 */ extern MotionState ftPk_Init_MotionStateTable[ftPk_MS_SelfCount];
/* 3CE0B8 */ extern char ftPk_Init_DatFilename[];
/* 3CE0C4 */ extern char ftPk_Init_DataName[];
/* 3CE204 */ extern char ftPk_Init_AnimDatFilename[];
/* 3CE290 */ extern Fighter_DemoStrings ftPk_Init_DemoMotionFilenames;
/* 3CE2A0 */ extern Fighter_CostumeStrings ftPk_Init_CostumeStrings[];
#define GALE01_125D80
/* 125D80 */ void ftPk_SpecialHi_UpdateVel(HSD_GObj* gobj);
/* 125DE8 */ void ftPk_SpecialHi_Enter(HSD_GObj* gobj);
/* 125E60 */ void ftPk_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 125ED8 */ void ftPk_SpecialHiStart0_Anim(HSD_GObj* gobj);
/* 125F14 */ void ftPk_SpecialAirHiStart0_Anim(HSD_GObj* gobj);
/* 125F50 */ void ftPk_SpecialHiStart0_IASA(HSD_GObj* gobj);
/* 125F54 */ void ftPk_SpecialAirHiStart0_IASA(HSD_GObj* gobj);
/* 125F58 */ void ftPk_SpecialHiStart0_Phys(HSD_GObj* gobj);
/* 125F78 */ void ftPk_SpecialAirHiStart0_Phys(HSD_GObj* gobj);
/* 125FD8 */ void ftPk_SpecialHiStart0_Coll(HSD_GObj* gobj);
/* 126014 */ void ftPk_SpecialAirHiStart0_Coll(HSD_GObj* gobj);
/* 126084 */ void ftPk_SpecialHi_ChangeMotion_Unk00(HSD_GObj* gobj);
/* 1260E4 */ void ftPk_SpecialHi_ChangeMotion_Unk01(HSD_GObj* gobj);
/* 126144 */ void ftPk_SpecialHiStart1_Anim(HSD_GObj* gobj);
/* 1262B4 */ void ftPk_SpecialAir_Anim(HSD_GObj* gobj);
/* 1262B4 */ void ftPk_SpecialAirHiStart1_Anim(HSD_GObj* gobj);
/* 126424 */ void ftPk_SpecialHiStart1_IASA(HSD_GObj* gobj);
/* 126428 */ void ftPk_SpecialAirHiStart1_IASA(HSD_GObj* gobj);
/* 126428 */ void ftPk_SpecialAir_IASA(HSD_GObj* gobj);
/* 12642C */ void ftPk_SpecialHi_8012642C(HSD_GObj* gobj);
/* 1265D4 */ void ftPk_SpecialHiStart1_Phys(HSD_GObj* gobj);
/* 1265F4 */ void ftPk_SpecialAirHiStart1_Phys(HSD_GObj* gobj);
/* 1265F4 */ void ftPk_SpecialAir_Phys(HSD_GObj* gobj);
/* 126614 */ void ftPk_SpecialHiStart1_Coll(HSD_GObj* gobj);
/* 1267C8 */ void ftPk_SpecialAir_Coll(HSD_GObj* gobj);
/* 1267C8 */ void ftPk_SpecialAirHiStart1_Coll(HSD_GObj* gobj);
/* 126A2C */ void ftPk_SpecialHi_ChangeMotion_Unk02(HSD_GObj* gobj);
/* 126AA4 */ void ftPk_SpecialHi_ChangeMotion_Unk03(HSD_GObj* gobj);
/* 126C0C */ void ftPk_SpecialHi_80126C0C(HSD_GObj* gobj);
/* 126E1C */ void ftPk_SpecialHi_80126E1C(HSD_GObj* gobj);
/* 127064 */ bool ftPk_SpecialHi_80127064(HSD_GObj* gobj);
/* 127198 */ void ftPk_SpecialHiEnd_Anim(HSD_GObj* gobj);
/* 127228 */ void ftPk_SpecialAirEnd_Anim(HSD_GObj* gobj);
/* 127228 */ void ftPk_SpecialAirHiEnd_Anim(HSD_GObj* gobj);
/* 1272D8 */ void ftPk_SpecialHiEnd_IASA(HSD_GObj* gobj);
/* 1272DC */ void ftPk_SpecialAirEnd_IASA(HSD_GObj* gobj);
/* 1272DC */ void ftPk_SpecialAirHiEnd_IASA(HSD_GObj* gobj);
/* 1272E0 */ void ftPk_SpecialHiEnd_Phys(HSD_GObj* gobj);
/* 127310 */ void ftPk_SpecialAirEnd_Phys(HSD_GObj* gobj);
/* 127310 */ void ftPk_SpecialAirHiEnd_Phys(HSD_GObj* gobj);
/* 12738C */ void ftPk_SpecialHiEnd_Coll(HSD_GObj* gobj);
/* 1273D4 */ void ftPk_SpecialAirEnd_Coll(HSD_GObj* gobj);
/* 1273D4 */ void ftPk_SpecialAirHiEnd_Coll(HSD_GObj* gobj);
/* 12744C */ void ftPk_SpecialHi_ChangeMotion_Unk04(HSD_GObj* gobj);
/* 1274AC */ void ftPk_SpecialHi_MotionChangeUpdateVel_Unk0(HSD_GObj* gobj);
/* 127534 */ void ftPk_SpecialHi_MotionChangeUpdateVel_Unk1(HSD_GObj* gobj);
#define GALE01_1275CC
/* 1275CC */ bool ftPk_SpecialLw_CheckProperty(HSD_GObj* gobj);
/* 127608 */ void ftPk_SpecialLw_80127608(HSD_GObj* gobj);
/* 12764C */ void ftPk_SpecialLw_SetState_Unk0(HSD_GObj* gobj);
/* 12765C */ bool ftPk_SpecialLw_8012765C(HSD_GObj* gobj);
/* 12779C */ void ftPk_SpecialLw_SetState_Unk1(HSD_GObj* gobj);
/* 1277AC */ void ftPk_SpecialLw_SpawnEffect(HSD_GObj* gobj);
/* 1278BC */ void ftPk_SpecialLw_Enter(HSD_GObj* gobj);
/* 127924 */ void ftPk_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 12798C */ void ftPk_SpecialLw_ChangeMotion_Unk00(HSD_GObj* gobj);
/* 1279EC */ void ftPk_SpecialLw_ChangeMotion_Unk01(HSD_GObj* gobj);
/* 127A54 */ void ftPk_SpecialLw_ChangeMotion_Unk02(HSD_GObj* gobj);
/* 127ACC */ void ftPk_SpecialLw_ChangeMotion_Unk03(HSD_GObj* gobj);
/* 127B4C */ void ftPk_SpecialLw_ChangeMotion_Unk04(HSD_GObj* gobj);
/* 127BAC */ void ftPk_SpecialLw_ChangeMotion_Unk05(HSD_GObj* gobj);
/* 127C14 */ void ftPk_SpecialLw_ChangeMotion_Unk06(HSD_GObj* gobj);
/* 127C74 */ void ftPk_SpecialLw_ChangeMotion_Unk07(HSD_GObj* gobj);
/* 127CDC */ void ftPk_SpecialLwStart_Anim(HSD_GObj* gobj);
/* 127D60 */ void ftPk_SpecialAirLwStart_Anim(HSD_GObj* gobj);
/* 127DE4 */ void ftPk_SpecialLwLoop0_Anim(HSD_GObj* gobj);
/* 127EC0 */ void ftPk_SpecialAirLwLoop0_Anim(HSD_GObj* gobj);
/* 127FB0 */ void ftPk_SpecialLwLoop1_Anim(HSD_GObj* gobj);
/* 128000 */ void ftPk_SpecialAirLwLoop1_Anim(HSD_GObj* gobj);
/* 128050 */ void ftPk_SpecialLwEnd_Anim(HSD_GObj* gobj);
/* 12808C */ void ftPk_SpecialAirLwEnd_Anim(HSD_GObj* gobj);
/* 1280C8 */ void ftPk_SpecialLwStart_Phys(HSD_GObj* gobj);
/* 1280E8 */ void ftPk_SpecialAirLwStart_Phys(HSD_GObj* gobj);
/* 128108 */ void ftPk_SpecialLwLoop0_Phys(HSD_GObj* gobj);
/* 128128 */ void ftPk_SpecialAirLwLoop0_Phys(HSD_GObj* gobj);
/* 128148 */ void ftPk_SpecialLwLoop1_Phys(HSD_GObj* gobj);
/* 128168 */ void ftPk_SpecialAirLwLoop1_Phys(HSD_GObj* gobj);
/* 1281AC */ void ftPk_SpecialLwEnd_Phys(HSD_GObj* gobj);
/* 1281CC */ void ftPk_SpecialAirLwEnd_Phys(HSD_GObj* gobj);
/* 1281EC */ void ftPk_SpecialLwStart_Coll(HSD_GObj* gobj);
/* 128214 */ void ftPk_SpecialAirLwStart_Coll(HSD_GObj* gobj);
/* 12823C */ void ftPk_SpecialLwLoop0_Coll(HSD_GObj* gobj);
/* 128264 */ void ftPk_SpecialAirLwLoop0_Coll(HSD_GObj* gobj);
/* 12828C */ void ftPk_SpecialLwLoop1_Coll(HSD_GObj* gobj);
/* 1282B4 */ void ftPk_SpecialAirLwLoop1_Coll(HSD_GObj* gobj);
/* 1282DC */ void ftPk_SpecialLwEnd_Coll(HSD_GObj* gobj);
/* 128304 */ void ftPk_SpecialAirLwEnd_Coll(HSD_GObj* gobj);
#define GALE01_124830
/* 124830 */ void ftPk_SpecialN_Enter(HSD_GObj* gobj);
/* 12489C */ void ftPk_SpecialAirN_Enter(HSD_GObj* gobj);
/* 124908 */ void ftPk_SpecialN_Anim(HSD_GObj* gobj);
/* 124A20 */ void ftPk_SpecialAirN_Anim(HSD_GObj* gobj);
/* 124B6C */ void ftPk_SpecialN_IASA(HSD_GObj* gobj);
/* 124B70 */ void ftPk_SpecialAirN_IASA(HSD_GObj* gobj);
/* 124B74 */ void ftPk_SpecialN_Phys(HSD_GObj* gobj);
/* 124B94 */ void ftPk_SpecialAirN_Phys(HSD_GObj* gobj);
/* 124BB4 */ void ftPk_SpecialN_Coll(HSD_GObj* gobj);
/* 124C20 */ void ftPk_SpecialAirN_Coll(HSD_GObj* gobj);
/* 124C90 */ void ftPk_SpecialN_SpawnEffect0(HSD_GObj* gobj);
/* 124D2C */ void ftPk_SpecialN_SpawnEffect1(HSD_GObj* gobj);
/* 124DC8 */ void ftPk_SpecialN_80124DC8(HSD_GObj* gobj);
#define GALE01_124EAC
/* 124EAC */ void ftPk_SpecialAirS_Enter(HSD_GObj* gobj);
/* 124FA0 */ void ftPk_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 124FE0 */ void ftPk_SpecialAirSStart_IASA(HSD_GObj* gobj);
/* 125024 */ void ftPk_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 1250C0 */ void ftPk_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 12525C */ void ftPk_SpecialAirSHold_Anim(HSD_GObj* gobj);
/* 12532C */ void ftPk_SpecialAirSHold_IASA(HSD_GObj* gobj);
/* 12537C */ void ftPk_SpecialAirSHold_Phys(HSD_GObj* gobj);
/* 1253D8 */ void ftPk_SpecialAirSHold_Coll(HSD_GObj* gobj);
/* 12561C */ void ftPk_SpecialAirS0_Anim(HSD_GObj* gobj);
/* 1256B8 */ void ftPk_SpecialAirS0_IASA(HSD_GObj* gobj);
/* 1256DC */ void ftPk_SpecialAirS0_Phys(HSD_GObj* gobj);
/* 125738 */ void ftPk_SpecialAirS0_Coll(HSD_GObj* gobj);
/* 125910 */ void ftPk_SpecialAirS1_Anim(HSD_GObj* gobj);
/* 125950 */ void ftPk_SpecialAirS1_IASA(HSD_GObj* gobj);
/* 125958 */ void ftPk_SpecialAirS1_Phys(HSD_GObj* gobj);
/* 1259D8 */ void ftPk_SpecialAirS1_Coll(HSD_GObj* gobj);
/* 125B70 */ void ftPk_SpecialAirSEnd_Anim(HSD_GObj* gobj);
/* 125BB0 */ void ftPk_SpecialAirSEnd_IASA(HSD_GObj* gobj);
/* 125BF4 */ void ftPk_SpecialAirSEnd_Phys(HSD_GObj* gobj);
/* 125C80 */ void ftPk_SpecialAirSEnd_Coll(HSD_GObj* gobj);
/* 124E38 */ void ftPk_SpecialS_Enter(HSD_GObj* gobj);
/* 124F24 */ void ftPk_SpecialS_ZeroVelocity(HSD_GObj* gobj);
/* 124F64 */ void ftPk_SpecialSStart_Anim(HSD_GObj* gobj);
/* 124FDC */ void ftPk_SpecialSStart_IASA(HSD_GObj* gobj);
/* 124FE4 */ void ftPk_SpecialSStart_Phys(HSD_GObj* gobj);
/* 125084 */ void ftPk_SpecialSStart_Coll(HSD_GObj* gobj);
/* 1250FC */ void ftPk_SpecialS_ChangeMotion_Unk00(HSD_GObj* gobj);
/* 12515C */ void ftPk_SpecialS_ChangeMotion_Unk01(HSD_GObj* gobj);
/* 1251BC */ void ftPk_SpecialSHold_Anim(HSD_GObj* gobj);
/* 1252FC */ void ftPk_SpecialSHold_IASA(HSD_GObj* gobj);
/* 12535C */ void ftPk_SpecialSHold_Phys(HSD_GObj* gobj);
/* 12539C */ void ftPk_SpecialSHold_Coll(HSD_GObj* gobj);
/* 125414 */ void ftPk_SpecialS_ChangeMotion_Unk02(HSD_GObj* gobj);
/* 125474 */ void ftPk_SpecialS_ChangeMotion_Unk03(HSD_GObj* gobj);
/* 1254D4 */ void ftPk_SpecialS_ChangeMotion_Unk04(HSD_GObj* gobj);
/* 125528 */ void ftPk_SpecialS_ChangeMotion_Unk05(HSD_GObj* gobj);
/* 12557C */ void ftPk_SpecialS0_Anim(HSD_GObj* gobj);
/* 1256B4 */ void ftPk_SpecialS0_IASA(HSD_GObj* gobj);
/* 1256BC */ void ftPk_SpecialS0_Phys(HSD_GObj* gobj);
/* 1256FC */ void ftPk_SpecialS0_Coll(HSD_GObj* gobj);
/* 125774 */ void ftPk_SpecialS_ChangeMotion_Unk06(HSD_GObj* gobj);
/* 1257D4 */ void ftPk_SpecialS_ChangeMotion_Unk07(HSD_GObj* gobj);
/* 125834 */ void ftPk_SpecialS_ChangeMotion_Unk08(HSD_GObj* gobj);
/* 1258A0 */ void ftPk_SpecialS_ChangeMotion_Unk09(HSD_GObj* gobj);
/* 12590C */ void ftPk_SpecialS1_Anim(HSD_GObj* gobj);
/* 12594C */ void ftPk_SpecialS1_IASA(HSD_GObj* gobj);
/* 125954 */ void ftPk_SpecialS1_Phys(HSD_GObj* gobj);
/* 1259D4 */ void ftPk_SpecialS1_Coll(HSD_GObj* gobj);
/* 125A54 */ void ftPk_SpecialS_ChangeMotion_Unk10(HSD_GObj* gobj);
/* 125B34 */ void ftPk_SpecialSEnd_Anim(HSD_GObj* gobj);
/* 125BAC */ void ftPk_SpecialSEnd_IASA(HSD_GObj* gobj);
/* 125BB4 */ void ftPk_SpecialSEnd_Phys(HSD_GObj* gobj);
/* 125C44 */ void ftPk_SpecialSEnd_Coll(HSD_GObj* gobj);
/* 125CD0 */ void ftPk_SpecialS_ChangeMotion_Unk11(HSD_GObj* gobj);
/* 125D28 */ void ftPk_SpecialS_ChangeMotion_Unk12(HSD_GObj* gobj);
#define GALE01_1211B4
/* 1211B4 */ void ftPp_SpecialHi_Enter(Fighter_GObj* gobj);
/* 12122C */ void ftPp_SpecialAirHi_Enter(Fighter_GObj* gobj);
/* 1212C4 */ void ftPp_SpecialHiStart_0_Anim(Fighter_GObj* gobj);
/* 1213CC */ void ftPp_SpecialAirHiStart_0_Anim(Fighter_GObj* gobj);
/* 1214D4 */ void ftPp_SpecialHiStart_0_IASA(Fighter_GObj* gobj);
/* 121558 */ void ftPp_SpecialAirHiStart_0_IASA(Fighter_GObj* gobj);
/* 1215DC */ void ftPp_SpecialHiStart_0_Phys(Fighter_GObj* gobj);
/* 121680 */ void ftPp_SpecialAirHiStart_0_Phys(Fighter_GObj* gobj);
/* 121740 */ void ftPp_SpecialHiStart_0_Coll(Fighter_GObj* gobj);
/* 12177C */ void ftPp_SpecialAirHiStart_0_Coll(Fighter_GObj* gobj);
/* 121944 */ void ftPp_SpecialHiThrow_0_Anim(Fighter_GObj* gobj);
/* 1219F4 */ void ftPp_SpecialAirHiThrow_0_Anim(Fighter_GObj* gobj);
/* 121AC8 */ void ftPp_SpecialHiThrow_0_IASA(Fighter_GObj* gobj);
/* 121ACC */ void ftPp_SpecialAirHiThrow_0_IASA(Fighter_GObj* gobj);
/* 121AD0 */ void ftPp_SpecialHiThrow_0_Phys(Fighter_GObj* gobj);
/* 121B74 */ void ftPp_SpecialAirHiThrow_0_Phys(Fighter_GObj* gobj);
/* 121C34 */ void ftPp_SpecialHiThrow_0_Coll(Fighter_GObj* gobj);
/* 121C70 */ void ftPp_SpecialAirHiThrow_0_Coll(Fighter_GObj* gobj);
/* 121E10 */ void ftPp_SpecialHiStart_1_Anim(Fighter_GObj* gobj);
/* 121E4C */ void ftPp_SpecialAirHiStart_1_Anim(Fighter_GObj* gobj);
/* 121EB0 */ void ftPp_SpecialHiStart_1_IASA(Fighter_GObj* gobj);
/* 121EB4 */ void ftPp_SpecialAirHiStart_1_IASA(Fighter_GObj* gobj);
/* 121EB8 */ void ftPp_SpecialHiStart_1_Phys(Fighter_GObj* gobj);
/* 121ED8 */ void ftPp_SpecialAirHiStart_1_Phys(Fighter_GObj* gobj);
/* 121F2C */ void ftPp_SpecialHiStart_1_Coll(Fighter_GObj* gobj);
/* 121F68 */ void ftPp_SpecialAirHiStart_1_Coll(Fighter_GObj* gobj);
/* 122110 */ void ftPp_SpecialHiThrow_1_Anim(Fighter_GObj* gobj);
/* 12214C */ void ftPp_SpecialAirHiThrow_1_Anim(Fighter_GObj* gobj);
/* 1221AC */ void ftPp_SpecialHiThrow_1_IASA(Fighter_GObj* gobj);
/* 1221B0 */ void ftPp_SpecialAirHiThrow_1_IASA(Fighter_GObj* gobj);
/* 1221B4 */ void ftPp_SpecialHiThrow_1_Phys(Fighter_GObj* gobj);
/* 1221D4 */ void ftPp_SpecialAirHiThrow_1_Phys(Fighter_GObj* gobj);
/* 122264 */ void ftPp_SpecialAirHiThrow_1_Coll(Fighter_GObj* gobj);
/* 1223B8 */ void ftPp_SpecialHiThrow2_Anim(Fighter_GObj* gobj);
/* 122410 */ void ftPp_SpecialAirHiThrow2_Anim(Fighter_GObj* gobj);
/* 12248C */ void ftPp_SpecialHiThrow2_IASA(Fighter_GObj* gobj);
/* 122490 */ void ftPp_SpecialAirHiThrow2_IASA(Fighter_GObj* gobj);
/* 122494 */ void ftPp_SpecialHiThrow2_Phys(Fighter_GObj* gobj);
/* 122538 */ void ftPp_SpecialAirHiThrow2_Phys(Fighter_GObj* gobj);
/* 122664 */ void ftPp_SpecialHiThrow2_Coll(Fighter_GObj* gobj);
/* 1226A0 */ void ftPp_SpecialAirHiThrow2_Coll(Fighter_GObj* gobj);
/* 122898 */ void ftPp_SpecialHi_80122898(Fighter_GObj* gobj);
/* 122904 */ void ftPp_SpecialLw_Enter(Fighter_GObj* gobj);
/* 122988 */ void ftPp_SpecialAirLw_Enter(Fighter_GObj* gobj);
/* 122A0C */ void ftPp_SpecialLw_Anim(Fighter_GObj* gobj);
/* 122A8C */ void ftPp_SpecialAirLw_Anim(Fighter_GObj* gobj);
/* 122B0C */ void ftPp_SpecialLw_IASA(Fighter_GObj* gobj);
/* 122B10 */ void ftPp_SpecialAirLw_IASA(Fighter_GObj* gobj);
/* 122B14 */ void ftPp_SpecialLw_Phys(Fighter_GObj* gobj);
/* 122B34 */ void ftPp_SpecialAirLw_Phys(Fighter_GObj* gobj);
/* 122C18 */ void ftPp_SpecialLw_Coll(Fighter_GObj* gobj);
/* 122D04 */ void ftPp_SpecialAirLw_Coll(Fighter_GObj* gobj);
#define GALE01_11ED38
/* 11ED38 */ void ftPp_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 11EE18 */ void ftPp_Init_OnItemInvisible(HSD_GObj* gobj);
/* 11EE60 */ void ftPp_Init_OnItemVisible(HSD_GObj* gobj);
/* 11EEA8 */ void ftPp_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 11EEFC */ void ftPp_Init_OnLoad(HSD_GObj* gobj);
/* 11EF3C */ void ftPp_Init_OnLoadForNana(Fighter* fp);
/* 11EFE8 */ void ftPp_Init_OnDeath(HSD_GObj* gobj);
/* 11F060 */ void ftPp_Init_8011F060(HSD_GObj* gobj);
/* 11F0A4 */ void ftPp_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 11F0E4 */ void ftPp_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 11F128 */ void ftPp_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 11F16C */ void ftPp_Init_8011F16C(HSD_GObj* gobj, Item_GObj* item_gobj);
/* 3CD2D0 */ extern MotionState ftPp_Init_MotionStateTable[ftPp_MS_SelfCount];
/* 3CD610 */ extern char ftPp_Init_DatFilename[];
/* 3CD61C */ extern char ftPp_Init_DataName[];
/* 3CD738 */ extern char ftPp_Init_AnimDatFilename[];
/* 3CD7B4 */ extern Fighter_DemoStrings ftPp_Init_DemoMotionFilenames;
/* 3CD7C4 */ extern Fighter_CostumeStrings ftPp_Init_CostumeStrings[];
#define GALE01_11F1F8
/* 11F1F8 */ void ftPp_SpecialN_Enter(HSD_GObj* gobj);
/* 11F26C */ void ftPp_SpecialAirN_Enter(HSD_GObj* gobj);
/* 11F318 */ void ftPp_SpecialN_Anim(HSD_GObj* gobj);
/* 11F354 */ void ftPp_SpecialAirN_Anim(HSD_GObj* gobj);
/* 11F390 */ void ftPp_SpecialN_IASA(HSD_GObj* gobj);
/* 11F394 */ void ftPp_SpecialAirN_IASA(HSD_GObj* gobj);
/* 11F398 */ void ftPp_SpecialN_Phys(HSD_GObj* gobj);
/* 11F3B8 */ void ftPp_SpecialAirN_Phys(HSD_GObj* gobj);
/* 11F3D8 */ void ftPp_SpecialN_Coll(HSD_GObj* gobj);
/* 11F454 */ void ftPp_SpecialAirN_Coll(HSD_GObj* gobj);
#define GALE01_11F99C
/* 11F68C */ void ftPp_SpecialS_8011F68C(Fighter_GObj* gobj);
/* 11F6FC */ bool ftPp_SpecialS_8011F6FC(Fighter_GObj* gobj);
/* 11F720 */ void ftPp_SpecialS_8011F720(Fighter_GObj* gobj);
/* 11F964 */ bool ftPp_SpecialS_8011F964(Fighter_GObj*);
/* 11F99C */ void ftPp_SpecialS_Enter(Fighter_GObj* gobj);
/* 11FB08 */ void ftPp_SpecialAirS_Enter(Fighter_GObj* gobj);
/* 11FC78 */ void ftPp_SpecialS1_Anim(Fighter_GObj* gobj);
/* 11FCD0 */ void ftPp_SpecialS2_Anim(Fighter_GObj* gobj);
/* 11FD9C */ void ftPp_SpecialAirS1_Anim(Fighter_GObj* gobj);
/* 11FE48 */ void ftPp_SpecialAirS2_Anim(Fighter_GObj* gobj);
/* 11FF40 */ void ftPp_SpecialS1_IASA(Fighter_GObj* gobj);
/* 11FF90 */ void ftPp_SpecialS2_IASA(Fighter_GObj* gobj);
/* 11FFE0 */ void ftPp_SpecialAirS1_IASA(Fighter_GObj* gobj);
/* 120030 */ void ftPp_SpecialAirS2_IASA(Fighter_GObj* gobj);
/* 120080 */ void ftPp_SpecialS1_Phys(Fighter_GObj* gobj);
/* 120230 */ void ftPp_SpecialS2_Phys(Fighter_GObj* gobj);
/* 1203E0 */ void ftPp_SpecialAirS1_Phys(Fighter_GObj* gobj);
/* 120520 */ void ftPp_SpecialAirS2_Phys(Fighter_GObj* gobj);
/* 120660 */ void ftPp_SpecialS1_Coll(Fighter_GObj* gobj);
/* 120854 */ void ftPp_SpecialS2_Coll(Fighter_GObj* gobj);
/* 120A48 */ void ftPp_SpecialAirS1_Coll(Fighter_GObj* gobj);
/* 120C58 */ void ftPp_SpecialAirS2_Coll(Fighter_GObj* gobj);
/* 121164 */ void ftPp_SpecialS_80121164(Fighter_GObj* gobj);
/* 1221AC */ void ftPp_SpecialHiThrow_1_IASA(Fighter_GObj* gobj);
/* 1221B4 */ void ftPp_SpecialHiThrow_1_Phys(Fighter_GObj* gobj);
/* 122228 */ void ftPp_SpecialHiThrow_1_Coll(Fighter_GObj* gobj);
#define MELEE_FT_CHARA_FTPURIN_FORWARD_H
static MotionFlags const ftPr_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftPr_MF_SpecialHi =
ftPr_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftPr_MF_SpecialLw =
ftPr_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftPr_MF_SpecialN =
ftPr_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepSfx;
static MotionFlags const ftPr_MF_SpecialS =
ftPr_MF_Special | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftPr_MF_SpecialAirHi =
ftPr_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftPr_MF_SpecialAirLw =
ftPr_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftPr_MF_SpecialAirN =
ftPr_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftPr_MF_SpecialAirS =
ftPr_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftPr_MF_SpecialNCharged =
ftPr_MF_SpecialN | Ft_MF_Unk19;
static MotionFlags const ftPr_SpecialAirNCharged =
ftPr_MF_SpecialNCharged | Ft_MF_SkipParasol;
typedef enum ftPurin_MotionState {
ftPr_MS_JumpAerialF1 = ftCo_MS_Count,
ftPr_MS_JumpAerialF2,
ftPr_MS_JumpAerialF3,
ftPr_MS_JumpAerialF4,
ftPr_MS_JumpAerialF5,
ftPr_MS_SpecialNStartR,
ftPr_MS_SpecialNStartL,
ftPr_MS_SpecialNLoop,
ftPr_MS_SpecialNFull,
ftPr_MS_SpecialNRelease,
ftPr_MS_SpecialNTurn,
ftPr_MS_SpecialNEndR,
ftPr_MS_SpecialNEndL,
ftPr_MS_SpecialAirNStartR,
ftPr_MS_SpecialAirNStartL,
ftPr_MS_SpecialAirNChargeLoop,
ftPr_MS_SpecialAirNChargeFull,
ftPr_MS_SpecialAirNChargeRelease,
ftPr_MS_SpecialAirNStartTurn,
ftPr_MS_SpecialAirNEndR,
ftPr_MS_SpecialAirNEndL,
ftPr_MS_SpecialNHit,
ftPr_MS_SpecialS,
ftPr_MS_SpecialAirS,
ftPr_MS_SpecialHiL,
ftPr_MS_SpecialAirHiL,
ftPr_MS_SpecialHiR,
ftPr_MS_SpecialAirHiR,
ftPr_MS_SpecialLwL,
ftPr_MS_SpecialAirLwL,
ftPr_MS_SpecialLwR,
ftPr_MS_SpecialAirLwR,
ftPr_MS_Count,
ftPr_MS_SelfCount = ftPr_MS_Count - ftCo_MS_Count,
} ftPurin_MotionState;
typedef enum ftPr_Submotion {
ftPr_SM_JumpAerialF1 = ftCo_SM_Count,
ftPr_SM_JumpAerialF2,
ftPr_SM_JumpAerialF3,
ftPr_SM_JumpAerialF4,
ftPr_SM_JumpAerialF5,
ftPr_SM_SpecialNStartR,
ftPr_SM_SpecialNStartL,
ftPr_SM_SpecialNChargeLoop,
ftPr_SM_SpecialNChargeFull,
ftPr_SM_SpecialNChargeRelease,
ftPr_SM_SpecialNStartTurn,
ftPr_SM_SpecialNEndR,
ftPr_SM_SpecialNEndL,
ftPr_SM_SpecialAirNStartR,
ftPr_SM_SpecialAirNStartL,
ftPr_SM_SpecialAirNChargeLoop,
ftPr_SM_SpecialAirNChargeFull,
ftPr_SM_SpecialAirNChargeRelease,
ftPr_SM_SpecialAirNStartTurn,
ftPr_SM_SpecialAirNEndR,
ftPr_SM_SpecialAirNEndL,
ftPr_SM_SpecialNHit,
ftPr_SM_SpecialS,
ftPr_SM_SpecialAirS,
ftPr_SM_SpecialHiL,
ftPr_SM_SpecialAirHiL,
ftPr_SM_SpecialHiR,
ftPr_SM_SpecialAirHiR,
ftPr_SM_SpecialLwL,
ftPr_SM_SpecialAirLwL,
ftPr_SM_SpecialLwR,
ftPr_SM_SpecialAirLwR,
ftPr_SM_Count,
ftPr_SM_SelfCount = ftPr_SM_Count - ftCo_SM_Count,
} ftPr_Submotion;
#define GALE01_13C2F8
/* 13C2F8 */ void ftPr_Init_8013C2F8(void);
/* 13C318 */ void ftPr_Init_OnDeath(HSD_GObj* gobj);
/* 13C340 */ void ftPr_Init_OnUserDataRemove(HSD_GObj* gobj);
/* 13C360 */ void ftPr_Init_8013C360(HSD_GObj* gobj);
/* 13C494 */ void ftPr_Init_8013C494(HSD_GObj* gobj);
/* 13C4F0 */ void ftPr_Init_UnkMtxFunc0(HSD_GObj* gobj, int arg1, Mtx vmtx);
/* 13C614 */ void ftPr_Init_UnkIntBoolFunc0(Fighter* fp, int arg1, bool arg2);
/* 13C664 */ void* ftPr_Init_UnkMotionStates6(HSD_GObj* gobj);
/* 13C67C */ void ftPr_Init_OnLoad(HSD_GObj* gobj);
/* 13C6EC */ void ftPr_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 13C798 */ void ftPr_Init_OnItemInvisible(HSD_GObj* gobj);
/* 13C7E8 */ void ftPr_Init_OnItemVisible(HSD_GObj* gobj);
/* 13C838 */ void ftPr_Init_OnItemDrop(HSD_GObj* gobj, bool bool1);
/* 13C88C */ void ftPr_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 13C8C4 */ void ftPr_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 13C908 */ void ftPr_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 13C94C */ void ftPr_Init_8013C94C(HSD_GObj* gobj);
/* 3CFEF0 */ extern MotionState ftPr_Init_MotionStateTable[ftPr_MS_SelfCount];
/* 3D02F0 */ extern char ftPr_Init_DatFilename[];
/* 3D02FC */ extern char ftPr_Init_DataName[];
/* 3D047C */ extern char ftPr_Init_AnimDatFilename[];
/* 3D04F8 */ extern Fighter_DemoStrings ftPr_Init_DemoMotionFilenames;
/* 3D0508 */ extern Fighter_CostumeStrings ftPr_Init_CostumeStrings[];
#define GALE01_13C9C8
/* 13C9C8 */ void ftPr_SpecialHi_Enter(HSD_GObj* gobj);
/* 13CA98 */ void ftPr_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 13CB68 */ void ftPr_SpecialHi_Anim(HSD_GObj* gobj);
/* 13CBE4 */ void ftPr_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 13CC60 */ void ftPr_SpecialHi_IASA(HSD_GObj* gobj);
/* 13CC64 */ void ftPr_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 13CC68 */ void ftPr_SpecialHi_Phys(HSD_GObj* gobj);
/* 13CC88 */ void ftPr_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 13CCA8 */ void ftPr_SpecialHi_Coll(HSD_GObj* gobj);
/* 13CCE4 */ void ftPr_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 13CD34 */ void ftPr_SpecialHi_8013CD34(HSD_GObj* gobj);
/* 13CDD8 */ void ftPr_SpecialHi_8013CDD8(HSD_GObj* gobj);
/* 13CE7C */ void ftPr_SpecialHi_8013CE7C(HSD_GObj* gobj);
#define GALE01_13CE8C
/* 13CE8C */ void ftPr_SpecialLw_Enter(HSD_GObj* gobj);
/* 13CF2C */ void ftPr_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 13CFCC */ void ftPr_SpecialLw_Anim(HSD_GObj* gobj);
/* 13D008 */ void ftPr_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 13D044 */ void ftPr_SpecialLw_IASA(HSD_GObj* gobj);
/* 13D048 */ void ftPr_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 13D04C */ void ftPr_SpecialLw_Phys(HSD_GObj* gobj);
/* 13D06C */ void ftPr_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 13D08C */ void ftPr_SpecialLw_Coll(HSD_GObj* gobj);
/* 13D0C8 */ void ftPr_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 13D104 */ void ftPr_SpecialLw_8013D104(HSD_GObj* gobj);
/* 13D19C */ void ftPr_SpecialLw_8013D19C(HSD_GObj* gobj);
#define GALE01_13D658
/* 13D658 */ void ftPr_SpecialS_8013D658(HSD_GObj* gobj);
/* 13D764 */ void ftPr_SpecialS_8013D764(HSD_GObj* gobj);
/* 13D8B0 */ void ftPr_SpecialS_8013D8B0(HSD_GObj* gobj);
/* 13D8E4 */ void ftPr_SpecialS_8013D8E4(HSD_GObj* gobj);
/* 13DA24 */ void ftPr_SpecialS_8013DA24(HSD_GObj* gobj, bool unk,
MotionFlags flags, float anim_start);
/* 13DC64 */ void ftPr_SpecialS_8013DC64(HSD_GObj* gobj);
/* 13DD54 */ void ftPr_SpecialS_8013DD54(HSD_GObj* gobj);
/* 13DEA8 */ void ftPr_SpecialN_Enter(HSD_GObj* gobj);
/* 13DF60 */ void ftPr_SpecialAirN_Enter(HSD_GObj* gobj);
/* 13E014 */ void ftPr_SpecialNStart_Anim(HSD_GObj* gobj);
/* 13E0F0 */ void ftPr_SpecialNLoop_Anim(HSD_GObj* gobj);
/* 13E2A0 */ void ftPr_SpecialNFull_Anim(HSD_GObj* gobj);
/* 13E410 */ void ftPr_SpecialNRelease_Anim(HSD_GObj* gobj);
/* 13E7E0 */ void ftPr_SpecialNTurn_Anim(HSD_GObj* gobj);
/* 13EAD8 */ void ftPr_SpecialNEnd_Anim(HSD_GObj* gobj);
/* 13EDB0 */ void ftPr_SpecialAirNStart_Anim(HSD_GObj* gobj);
/* 13EE84 */ void ftPr_SpecialAirNChargeLoop_Anim(HSD_GObj* gobj);
/* 13F034 */ void ftPr_SpecialAirNChargeFull_Anim(HSD_GObj* gobj);
/* 13F1A4 */ void ftPr_SpecialAirNChargeRelease_Anim(HSD_GObj* gobj);
/* 13F708 */ void ftPr_SpecialAirNStartTurn_Anim(HSD_GObj* gobj);
/* 13F9C0 */ void ftPr_SpecialAirNEnd_Anim(HSD_GObj* gobj);
/* 13FCAC */ void ftPr_SpecialNHit_Anim(HSD_GObj* gobj);
/* 13FF00 */ void ftPr_SpecialNStart_IASA(HSD_GObj* gobj);
/* 13FF04 */ void ftPr_SpecialNLoop_IASA(HSD_GObj* gobj);
/* 140064 */ void ftPr_SpecialNFull_IASA(HSD_GObj* gobj);
/* 1401C4 */ void ftPr_SpecialNRelease_IASA(HSD_GObj* gobj);
/* 140344 */ void ftPr_SpecialNTurn_IASA(HSD_GObj* gobj);
/* 140348 */ void ftPr_SpecialNEnd_IASA(HSD_GObj* gobj);
/* 14034C */ void ftPr_SpecialAirNStart_IASA(HSD_GObj* gobj);
/* 140350 */ void ftPr_SpecialAirNChargeLoop_IASA(HSD_GObj* gobj);
/* 1404B0 */ void ftPr_SpecialAirNChargeFull_IASA(HSD_GObj* gobj);
/* 140610 */ void ftPr_SpecialAirNChargeRelease_IASA(HSD_GObj* gobj);
/* 140614 */ void ftPr_SpecialAirNStartTurn_IASA(HSD_GObj* gobj);
/* 140618 */ void ftPr_SpecialAirNEnd_IASA(HSD_GObj* gobj);
/* 14061C */ void ftPr_SpecialNHit_IASA(HSD_GObj* gobj);
/* 140620 */ void ftPr_SpecialNStart_Phys(HSD_GObj* gobj);
/* 140650 */ void ftPr_SpecialNLoop_Phys(HSD_GObj* gobj);
/* 140680 */ void ftPr_SpecialNFull_Phys(HSD_GObj* gobj);
/* 1406B0 */ void ftPr_SpecialNRelease_Phys(HSD_GObj* gobj);
/* 1408B8 */ void ftPr_SpecialNTurn_Phys(HSD_GObj* gobj);
/* 140BAC */ void ftPr_SpecialNEnd_Phys(HSD_GObj* gobj);
/* 140BE8 */ void ftPr_SpecialAirNStart_Phys(HSD_GObj* gobj);
/* 140C18 */ void ftPr_SpecialAirNChargeLoop_Phys(HSD_GObj* gobj);
/* 140C48 */ void ftPr_SpecialAirNChargeFull_Phys(HSD_GObj* gobj);
/* 140C78 */ void ftPr_SpecialAirNChargeRelease_Phys(HSD_GObj* gobj);
/* 140DF8 */ void ftPr_SpecialAirNStartTurn_Phys(HSD_GObj* gobj);
/* 140F10 */ void ftPr_SpecialAirNEnd_Phys(HSD_GObj* gobj);
/* 140F40 */ void ftPr_SpecialNHit_Phys(HSD_GObj* gobj);
/* 140FA4 */ void ftPr_SpecialNStart_Coll(HSD_GObj* gobj);
/* 141054 */ void ftPr_SpecialNLoop_Coll(HSD_GObj* gobj);
/* 141154 */ void ftPr_SpecialNFull_Coll(HSD_GObj* gobj);
/* 141254 */ void ftPr_SpecialNRelease_Coll(HSD_GObj* gobj);
/* 1415F4 */ void ftPr_SpecialNTurn_Coll(HSD_GObj* gobj);
/* 1416D0 */ void ftPr_SpecialNEnd_Coll(HSD_GObj* gobj);
/* 141730 */ void ftPr_SpecialAirNStart_Coll(HSD_GObj* gobj);
/* 1417E0 */ void ftPr_SpecialAirNChargeLoop_Coll(HSD_GObj* gobj);
/* 1418E0 */ void ftPr_SpecialAirNChargeFull_Coll(HSD_GObj* gobj);
/* 1419E0 */ void ftPr_SpecialAirNChargeRelease_Coll(HSD_GObj* gobj);
/* 141FB8 */ void ftPr_SpecialAirNStartTurn_Coll(HSD_GObj* gobj);
/* 142070 */ void ftPr_SpecialAirNEnd_Coll(HSD_GObj* gobj);
/* 1420D0 */ void ftPr_SpecialNHit_Coll(HSD_GObj* gobj);
/* 14222C */ void ftPr_SpecialN_8014222C(HSD_GObj* gobj);
#define GALE01_13D234
/* 13D234 */ void ftPr_SpecialS_Enter(HSD_GObj* gobj);
/* 13D2A0 */ void ftPr_SpecialAirS_Enter(HSD_GObj* gobj);
/* 13D30C */ void ftPr_SpecialS_Anim(HSD_GObj* gobj);
/* 13D348 */ void ftPr_SpecialAirS_Anim(HSD_GObj* gobj);
/* 13D384 */ void ftPr_SpecialS_IASA(HSD_GObj* gobj);
/* 13D388 */ void ftPr_SpecialAirS_IASA(HSD_GObj* gobj);
/* 13D38C */ void ftPr_SpecialS_Phys(HSD_GObj* gobj);
/* 13D3AC */ void ftPr_SpecialAirS_Phys(HSD_GObj* gobj);
/* 13D518 */ void ftPr_SpecialS_Coll(HSD_GObj* gobj);
/* 13D554 */ void ftPr_SpecialAirS_Coll(HSD_GObj* gobj);
/* 13D590 */ void ftPr_SpecialS_8013D590(HSD_GObj* gobj);
/* 13D5F0 */ void ftPr_SpecialS_8013D5F0(HSD_GObj* gobj);
#define MELEE_FT_CHARA_FTSAMUS_FORWARD_H
typedef struct HSD_GObj ftSs_GObj;
typedef struct Fighter ftSs_Fighter;
static MotionFlags const ftSs_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftSs_MF_SpecialN =
ftSs_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftSs_MF_SpecialS =
ftSs_MF_Special | Ft_MF_KeepGfx | Ft_MF_SkipThrowException;
static MotionFlags const ftSs_MF_SpecialLw =
ftSs_MF_Special | Ft_MF_KeepColAnimHitStatus | Ft_MF_SkipThrowException;
static MotionFlags const ftSs_MF_SpecialHi =
ftSs_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_KeepSfx;
static MotionFlags const ftSs_MF_SpecialAirN =
ftSs_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftSs_MF_SpecialAirS =
ftSs_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftSs_MF_SpecialAirLw =
ftSs_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftSs_MF_SpecialAirHi =
ftSs_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftSs_MF_SpecialSSmash =
ftSs_MF_SpecialS | Ft_MF_SkipRumble;
static MotionFlags const ftSs_MF_SpecialAirSSmash =
ftSs_MF_SpecialSSmash | Ft_MF_SkipParasol;
static MotionFlags const ftSs_MF_ZairCatch =
Ft_MF_SkipModelPartVis | Ft_MF_SkipMetalB;
typedef enum ftSamus_MotionState {
ftSs_MS_SpecialLw = ftCo_MS_Count,
ftSs_MS_SpecialAirLw,
ftSs_MS_SpecialNStart,
ftSs_MS_SpecialNHold,
ftSs_MS_SpecialNCancel,
ftSs_MS_SpecialN,
ftSs_MS_SpecialAirNStart,
ftSs_MS_SpecialAirN,
ftSs_MS_SpecialS,
ftSs_MS_SpecialSSmash,
ftSs_MS_SpecialAirS,
ftSs_MS_SpecialAirSSmash,
ftSs_MS_SpecialHi,
ftSs_MS_SpecialAirHi,
ftSs_MS_SpecialLwBomb,
ftSs_MS_SpecialAirLwBomb,
ftSs_MS_AirCatch,
ftSs_MS_AirCatchHit,
ftSs_MS_Count,
ftSs_MS_SelfCount = ftSs_MS_Count - ftCo_MS_Count,
} ftSamus_MotionState;
typedef enum ftSs_Submotion {
ftSs_SM_SpecialLw = ftCo_SM_Count,
ftSs_SM_SpecialAirLw,
ftSs_SM_SpecialNStart,
ftSs_SM_SpecialNHold,
ftSs_SM_SpecialNCancel,
ftSs_SM_SpecialN,
ftSs_SM_SpecialAirNStart,
ftSs_SM_SpecialAirN,
ftSs_SM_SpecialS,
ftSs_SM_SpecialSSmash,
ftSs_SM_SpecialAirS,
ftSs_SM_SpecialAirSSmash,
ftSs_SM_SpecialHi,
ftSs_SM_SpecialAirHi,
ftSs_SM_SpecialLwBomb,
ftSs_SM_SpecialAirLwBomb,
ftSs_SM_AirCatch,
ftSs_SM_AirCatchHit,
ftSs_SM_Count,
ftSs_SM_SelfCount = ftSs_SM_Count - ftCo_SM_Count,
} ftSs_Submotion;
#define GALE01_12832C
/* 12832C */ void ftSs_Init_OnDeath(HSD_GObj* gobj);
/* 12837C */ void ftSs_Init_OnLoad(HSD_GObj* gobj);
/* 128428 */ void ftSs_Init_80128428(HSD_GObj* gobj);
/* 128464 */ void ftSs_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 128544 */ void ftSs_Init_OnItemInvisible(HSD_GObj* gobj);
/* 12858C */ void ftSs_Init_OnItemVisible(HSD_GObj* gobj);
/* 1285D4 */ void ftSs_Init_OnItemDrop(HSD_GObj* gobj, bool bool1);
/* 128628 */ void ftSs_Init_UnkMotionStates4(HSD_GObj* gobj);
/* 128684 */ void ftSs_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 128770 */ void ftSs_Init_80128770(HSD_AObj* gobj, float rate);
/* 1287C4 */ void ftSs_Init_CreateThrowGrappleBeam(HSD_GObj* gobj,
s32 motion_state,
float anim_speed);
/* 128944 */ void ftSs_Init_80128944(HSD_GObj* gobj, float farg1, float farg2);
/* 128A1C */ bool ftSs_Init_80128A1C(HSD_GObj* gobj, M2C_UNK arg1, float farg1);
/* 128AC8 */ float ftSs_Init_80128AC8(HSD_GObj* gobj, float farg1,
float farg2);
/* 128B1C */ void ftSs_Init_80128B1C(HSD_GObj* gobj, float, float, float);
/* 3CE2D0 */ extern MotionState ftSs_Init_MotionStateTable[ftSs_MS_SelfCount];
/* 3CE510 */ extern char ftSs_Init_DatFilename[];
/* 3CE51C */ extern char ftSs_Init_DataName[];
/* 3CE5EC */ extern char ftSs_Init_AnimDatFilename[];
/* 3CE668 */ extern Fighter_DemoStrings ftSs_Init_DemoMotionFilenames;
/* 3CE678 */ extern Fighter_CostumeStrings ftSs_Init_CostumeStrings[];
#define GALE01_12A674
/* 12A674 */ void ftSs_SpecialHi_Enter(HSD_GObj* gobj);
/* 12A738 */ void ftSs_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 12A81C */ void ftSs_SpecialHi_Anim(HSD_GObj* gobj);
/* 12A8C4 */ void ftSs_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 12A96C */ void ftSs_SpecialHi_IASA(HSD_GObj* gobj);
/* 12AA3C */ void ftSs_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 12AB0C */ void ftSs_SpecialHi_Phys(HSD_GObj* gobj);
/* 12ABB4 */ void ftSs_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 12AC00 */ void ftSs_SpecialHi_Coll(HSD_GObj* gobj);
/* 12ACF8 */ void ftSs_SpecialAirHi_Coll(HSD_GObj* gobj);
#define GALE01_128944
/* 128C04 */ void ftSs_SpecialLw_Anim(HSD_GObj* gobj);
/* 128CA0 */ void ftSs_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 128D3C */ void ftSs_SpecialLw_IASA(HSD_GObj* gobj);
/* 128E68 */ void ftSs_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 128E88 */ void ftSs_SpecialLw_Phys(HSD_GObj* gobj);
/* 128EF8 */ void ftSs_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 128F60 */ void ftSs_SpecialLw_Coll(HSD_GObj* gobj);
/* 128FD4 */ void ftSs_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 129048 */ void ftSs_SpecialLw_80129048(HSD_GObj* gobj);
/* 1290A4 */ void ftSs_SpecialLw_801290A4(HSD_GObj* gobj);
/* 129100 */ int ftSs_SpecialLw_80129100(HSD_GObj* gobj, s32* arg1, s32* arg2);
/* 129158 */ s32 ftSs_SpecialLw_80129158(HSD_GObj* gobj);
/* 1291A8 */ s32 ftSs_SpecialN_801291A8(HSD_GObj* gobj);
#define GALE01_11444C
/* 12ADF0 */ void ftSs_SpecialLw_8012ADF0(HSD_GObj* gobj);
/* 12AEBC */ void ftSs_SpecialLw_8012AEBC(HSD_GObj* gobj);
/* 12AF38 */ void ftSs_SpecialLw_8012AF38(HSD_GObj* gobj);
/* 12AF5C */ void ftSs_SpecialLw_Enter(HSD_GObj* gobj);
/* 12B09C */ void ftSs_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 12B150 */ void ftSs_SpecialLwBomb_Anim(HSD_GObj* gobj);
/* 12B264 */ void ftSs_SpecialAirLwBomb_Anim(HSD_GObj* gobj);
/* 12B358 */ void ftSs_SpecialLwBomb_IASA(HSD_GObj* gobj);
/* 12B3A4 */ void ftSs_SpecialAirLwBomb_IASA(HSD_GObj* gobj);
/* 12B3A8 */ void ftSs_SpecialLwBomb_Phys(HSD_GObj* gobj);
/* 12B41C */ void ftSs_SpecialAirLwBomb_Phys(HSD_GObj* gobj);
/* 12B488 */ void ftSs_SpecialLwBomb_Coll(HSD_GObj* gobj);
/* 12B4FC */ void ftSs_SpecialAirLwBomb_Coll(HSD_GObj* gobj);
/* 12B570 */ void ftSs_SpecialLw_8012B570(HSD_GObj* gobj);
/* 12B5F0 */ void ftSs_SpecialLw_8012B5F0(HSD_GObj* gobj);
/* 12B668 */ void ftSs_SpecialLw_8012B668(HSD_GObj* gobj);
#define GALE01_1122D8
/* 1291F0 */ void ftSs_SpecialN_801291F0(ftSs_GObj* gobj);
/* 129258 */ void ftSs_SpecialN_80129258(ftSs_GObj* gobj);
/* 12954C */ void ftSs_SpecialN_Enter(ftSs_GObj* gobj);
/* 1295F0 */ void ftSs_SpecialAirN_Enter(ftSs_GObj* gobj);
/* 129684 */ void ftSs_SpecialNStart_Anim(ftSs_GObj* gobj);
/* 129774 */ void ftSs_SpecialNHold_Anim(ftSs_GObj* gobj);
/* 129940 */ void ftSs_SpecialNCancel_Anim(ftSs_GObj* gobj);
/* 1299D0 */ void ftSs_SpecialN_Anim(ftSs_GObj* gobj);
/* 129A14 */ void ftSs_SpecialAirNStart_Anim(ftSs_GObj* gobj);
/* 129A98 */ void ftSs_SpecialAirN_Anim(ftSs_GObj* gobj);
/* 129B18 */ void ftSs_SpecialNStart_IASA(ftSs_GObj* gobj);
/* 129B1C */ void ftSs_SpecialNHold_IASA(ftSs_GObj* gobj);
/* 129C78 */ void ftSs_SpecialNCancel_IASA(ftSs_GObj* gobj);
/* 129C7C */ void ftSs_SpecialN_IASA(ftSs_GObj* gobj);
/* 129C80 */ void ftSs_SpecialAirNStart_IASA(ftSs_GObj* gobj);
/* 129C84 */ void ftSs_SpecialAirN_IASA(ftSs_GObj* gobj);
/* 129C88 */ void ftSs_SpecialNStart_Phys(ftSs_GObj* gobj);
/* 129CA8 */ void ftSs_SpecialNHold_Phys(ftSs_GObj* gobj);
/* 129CC8 */ void ftSs_SpecialNCancel_Phys(ftSs_GObj* gobj);
/* 129CE8 */ void ftSs_SpecialN_Phys(ftSs_GObj* gobj);
/* 129D08 */ void ftSs_SpecialAirNStart_Phys(ftSs_GObj* gobj);
/* 129D28 */ void ftSs_SpecialAirN_Phys(ftSs_GObj* gobj);
/* 129D48 */ void ftSs_SpecialNStart_Coll(ftSs_GObj* gobj);
/* 129DC8 */ void ftSs_SpecialNHold_Coll(ftSs_GObj* gobj);
/* 129E68 */ void ftSs_SpecialNCancel_Coll(ftSs_GObj* gobj);
/* 129EE8 */ void ftSs_SpecialN_Coll(ftSs_GObj* gobj);
/* 129F68 */ void ftSs_SpecialAirNStart_Coll(ftSs_GObj* gobj);
/* 129FE8 */ void ftSs_SpecialAirN_Coll(ftSs_GObj* gobj);
/* 12A068 */ int ftSs_SpecialS_8012A068(ftSs_GObj* gobj);
/* 12A074 */ void ftSs_SpecialS_8012A074(ftSs_GObj* gobj);
#define GALE01_110490
/* 110490 */ void ftSk_SpecialS_80110490(Fighter* fp);
/* 110610 */ void ftSk_SpecialS_80110610(HSD_GObj* gobj, s32 arg1, float arg8);
/* 110788 */ void ftSk_SpecialS_80110788(HSD_GObj* gobj);
/* 11097C */ void ftSk_SpecialS_8011097C(HSD_GObj* gobj);
/* 110A80 */ void ftSk_SpecialS_ZeroHitboxPositions(HSD_GObj* gobj);
/* 110AEC */ void ftSk_SpecialS_80110AEC(HSD_GObj* gobj);
/* 110BCC */ void ftSk_SpecialS_80110BCC(HSD_GObj* gobj);
/* 110E4C */ void ftSk_SpecialS_80110E4C(HSD_GObj* gobj);
/* 110E88 */ void ftSk_SpecialS_CheckAndDestroyChain(HSD_GObj* gobj);
/* 110EE8 */ void ftSk_SpecialS_80110EE8(HSD_GObj* gobj);
/* 110F18 */ void ftSk_SpecialS_ChainSomething(HSD_GObj* gobj);
/* 110F58 */ float ftSk_SpecialS_80110F58(HSD_GObj* gobj);
/* 110F64 */ float ftSk_SpecialS_80110F64(HSD_GObj* gobj);
/* 110F70 */ void ftSk_SpecialS_80110F70(HSD_GObj* gobj);
/* 111038 */ void ftSk_SpecialS_Enter(HSD_GObj* gobj);
/* 1110E8 */ bool ftSk_SpecialS_CheckInitChain(HSD_GObj* gobj);
/* 1112CC */ void ftSk_SpecialSStart_Anim(HSD_GObj* gobj);
/* 111344 */ void ftSk_SpecialSStart_IASA(HSD_GObj* gobj);
/* 11134C */ void ftSk_SpecialSStart_Phys(HSD_GObj* gobj);
/* 1113C8 */ void ftSk_SpecialSStart_Coll(HSD_GObj* gobj);
/* 111440 */ void ftSk_SpecialS_80111440(HSD_GObj* gobj);
/* 1114E4 */ void ftSk_SpecialS_801114E4(HSD_GObj* gobj);
/* 111588 */ void ftSk_SpecialS_Anim(HSD_GObj* gobj);
/* 111708 */ void ftSk_SpecialS_IASA(HSD_GObj* gobj);
/* 111778 */ void ftSk_SpecialS_Phys(HSD_GObj* gobj);
/* 1117B8 */ void ftSk_SpecialS_Coll(HSD_GObj* gobj);
/* 111830 */ void ftSk_SpecialS_80111830(HSD_GObj* gobj);
/* 111988 */ void ftSk_SpecialS_80111988(HSD_GObj* gobj);
/* 111A48 */ void ftSk_SpecialSEnd_Anim(HSD_GObj* gobj);
/* 111BF0 */ void ftSk_SpecialSEnd_IASA(HSD_GObj* gobj);
/* 111BF8 */ void ftSk_SpecialSEnd_Phys(HSD_GObj* gobj);
/* 111C38 */ void ftSk_SpecialSEnd_Coll(HSD_GObj* gobj);
/* 111CB0 */ void ftSk_SpecialS_80111CB0(HSD_GObj* gobj);
/* 111D54 */ void ftSk_SpecialS_80111D54(HSD_GObj* gobj);
/* 111DF8 */ void ftSk_SpecialS_80111DF8(HSD_GObj* gobj);
/* 111EB4 */ void ftSk_SpecialS_80111EB4(HSD_GObj* gobj);
/* 111F70 */ bool ftSk_SpecialS_80111F70(HSD_GObj* gobj);
/* 111FA0 */ int ftSk_SpecialS_80111FA0(HSD_GObj* gobj);
/* 12A1D8 */ void ftSs_SpecialS_Enter(HSD_GObj* gobj);
/* 12A2AC */ void ftSs_SpecialAirS_Enter(HSD_GObj* gobj);
/* 12A380 */ void ftSs_SpecialS_Anim(HSD_GObj* gobj);
/* 12A3BC */ void ftSs_SpecialAirS_Anim(HSD_GObj* gobj);
/* 12A3F8 */ void ftSs_SpecialS_IASA(HSD_GObj* gobj);
/* 12A3FC */ void ftSs_SpecialAirS_IASA(HSD_GObj* gobj);
/* 12A400 */ void ftSs_SpecialS_Phys(HSD_GObj* gobj);
/* 12A420 */ void ftSs_SpecialAirS_Phys(HSD_GObj* gobj);
/* 12A468 */ void ftSs_SpecialS_Coll(HSD_GObj* gobj);
/* 12A4A4 */ void ftSs_SpecialAirS_Coll(HSD_GObj* gobj);
/* 12A4E0 */ void ftSs_SpecialSSmash_Anim(HSD_GObj* gobj);
/* 12A51C */ void ftSs_SpecialAirSSmash_Anim(HSD_GObj* gobj);
/* 12A558 */ void ftSs_SpecialSSmash_IASA(HSD_GObj* gobj);
/* 12A55C */ void ftSs_SpecialAirSSmash_IASA(HSD_GObj* gobj);
/* 12A560 */ void ftSs_SpecialSSmash_Phys(HSD_GObj* gobj);
/* 12A580 */ void ftSs_SpecialAirSSmash_Phys(HSD_GObj* gobj);
/* 12A5C8 */ void ftSs_SpecialSSmash_Coll(HSD_GObj* gobj);
/* 12A604 */ void ftSs_SpecialAirSSmash_Coll(HSD_GObj* gobj);
/* 12A640 */ void ftSs_SpecialS_8012A640(HSD_GObj* gobj);
#define MELEE_FT_CHARA_FTSAMUS_INLINES_H
#define GALE01_2B5518
/* 2B5518 */ M2C_UNK it_802B5518();
/* 2B55C8 */ HSD_GObj* it_802B55C8(Item_GObj* owner, Vec3*, s32, s32,
float facing_dir);
/* 2B56E4 */ void it_802B56E4(Item_GObj*, Vec3*, float, float, float);
/* 2B58D8 */ void it_802B58D8(Item_GObj*);
/* 2B5974 */ void it_802B5974(Item_GObj*);
/* 2B59C4 */ void it_802B59C4(Item_GObj*);
/* 2B5A98 */ M2C_UNK it_802B5A98();
/* 2B5CB0 */ M2C_UNK it_802B5CB0();
/* 2B5CB4 */ M2C_UNK it_802B5CB4();
/* 2B5CBC */ M2C_UNK it_802B5CBC();
/* 2B5D54 */ M2C_UNK it_802B5D54();
/* 2B5E50 */ M2C_UNK it_802B5E50();
/* 2B5EA0 */ M2C_UNK it_802B5EA0();
/* 2B5EDC */ M2C_UNK it_802B5EDC();
/* 2B5FD8 */ bool it_802B5FD8(Item_GObj*);
/* 2B5FE0 */ bool it_802B5FE0(Item_GObj*);
/* 2B5FE8 */ bool it_802B5FE8(Item_GObj*);
/* 2B5FF0 */ bool it_802B5FF0(Item_GObj*);
/* 2B613C */ bool it_802B613C(Item_GObj*);
/* 2B6144 */ bool it_802B6144(Item_GObj*);
/* 2B62B0 */ void it_802B62B0(Item_GObj*, Item_GObj*);
/* 2B62D0 */ void it_802B62D0(Item_GObj*, Vec3* pos, bool, float facing_dir);
/* 3F7288 */ extern ItemStateTable it_803F7288[];
static inline void ftSamus_updateDamageDeathCBs(HSD_GObj* gobj)
{
Fighter* fp = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj));
fp->take_dmg_cb = ftSs_Init_80128428;
fp->death2_cb = ftSs_Init_80128428;
}
//// only used in ftsamus3 so far (maybe move to there)
static inline void ftSamus_SetAttrx2334(HSD_GObj* gobj)
{
Fighter* fp = gobj->user_data;
fp->fv.ss.x2234 = 0;
}
static inline void ftSamus_destroyAllEF(HSD_GObj* gobj)
{
if (gobj) {
Fighter* fp = ((Fighter*) HSD_GObjGetUserData((HSD_GObj*) gobj));
if (fp->fv.ss.x2234) {
efLib_DestroyAll(gobj);
fp->fv.ss.x2234 = 0;
}
}
}
static inline void ftSamus_UnkAndDestroyAllEF(HSD_GObj* gobj)
{
if (gobj != ((void*) 0)) {
Fighter* fp = gobj->user_data;
Item_GObj* x222C = fp->fv.ss.x222C;
if (x222C != ((void*) 0)) {
it_802B5974(x222C);
fp->fv.ss.x222C = ((void*) 0);
}
ftSamus_destroyAllEF(gobj);
}
}
#define MELEE_FT_CHARA_FTSANDBAG_FORWARD_H
typedef enum ftSb_MotionState {
ftSb_MS_WaitReverse = ftCo_MS_Count,
ftSb_MS_Count,
ftSb_MS_SelfCount = ftSb_MS_Count - ftCo_MS_Count,
} ftSb_MotionState;
typedef enum ftSb_Submotion {
ftSb_SM_WaitReverse = ftCo_SM_Count,
ftSb_SM_Count,
ftSb_SM_SelfCount = ftSb_SM_Count - ftCo_SM_Count,
} ftSb_Submotion;
#define GALE01_14F9CC
/* 14F9CC */ void ftSb_Init_OnDeath(HSD_GObj* gobj);
/* 14F9D0 */ void ftSb_Init_OnLoad(HSD_GObj* gobj);
/* 14FA30 */ void ftSb_Init_8014FA30(Fighter* fp);
/* 14FB78 */ void ftSb_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 14FB9C */ void ftSb_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 14FBA0 */ void ftSb_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 14FBA4 */ void ftSb_Init_8014FBA4(HSD_GObj* gobj);
/* 14FC20 */ void ftSb_WaitReverse_Anim(HSD_GObj* gobj);
/* 14FC24 */ void ftSb_WaitReverse_IASA(HSD_GObj* gobj);
/* 14FC28 */ void ftSb_WaitReverse_Phys(HSD_GObj* gobj);
/* 14FC48 */ void ftSb_WaitReverse_Coll(HSD_GObj* gobj);
/* 3D3998 */ extern MotionState ftSb_Init_MotionStateTable[ftSb_MS_SelfCount];
/* 3D39B8 */ extern char ftSb_Init_DatFilename[];
/* 3D39C4 */ extern char ftSb_Init_DataName[];
/* 3D3A18 */ extern char ftSb_Init_AnimDatFilename[];
/* 3D3A24 */ extern Fighter_CostumeStrings ftSb_Init_CostumeStrings[];
#define MELEE_FT_CHARA_FTSEAK_FORWARD_H
static MotionFlags const ftSk_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftSk_MF_SpecialS = ftSk_MF_Special | Ft_MF_KeepGfx;
static MotionFlags const ftSk_MF_SpecialLw =
ftSk_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftSk_MF_SpecialN =
ftSk_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipThrowException;
static MotionFlags const ftSk_MF_SpecialHi =
ftSk_MF_SpecialS | Ft_MF_KeepFastFall | Ft_MF_KeepSfx;
static MotionFlags const ftSk_MF_SpecialAirS =
ftSk_MF_SpecialS | Ft_MF_SkipParasol;
static MotionFlags const ftSk_MF_SpecialAirLw =
ftSk_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftSk_MF_SpecialAirN =
ftSk_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftSk_MF_SpecialAirHi =
ftSk_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftSk_MF_SpecialSLoop = ftSk_MF_SpecialS | Ft_MF_Unk19;
static MotionFlags const ftSk_MF_SpecialNLoop = ftSk_MF_SpecialN | Ft_MF_Unk19;
static MotionFlags const ftSk_MF_SpecialAirSLoop =
ftSk_MF_SpecialSLoop | Ft_MF_SkipParasol;
static MotionFlags const ftSk_MF_SpecialAirNLoop =
ftSk_MF_SpecialNLoop | Ft_MF_SkipParasol;
typedef enum ftSeak_MotionState {
ftSk_MS_SpecialNStart = ftCo_MS_Count,
ftSk_MS_SpecialNLoop,
ftSk_MS_SpecialNCancel,
ftSk_MS_SpecialNEnd,
ftSk_MS_SpecialAirNStart,
ftSk_MS_SpecialAirNLoop,
ftSk_MS_SpecialAirNCancel,
ftSk_MS_SpecialAirNEnd,
ftSk_MS_SpecialSStart,
ftSk_MS_SpecialS,
ftSk_MS_SpecialSEnd,
ftSk_MS_SpecialAirSStart,
ftSk_MS_SpecialAirS,
ftSk_MS_SpecialAirSEnd,
ftSk_MS_SpecialHiStart_0,
ftSk_MS_SpecialHiStart_1,
ftSk_MS_SpecialHi,
ftSk_MS_SpecialAirHiStart_0,
ftSk_MS_SpecialAirHiStart_1,
ftSk_MS_SpecialAirHi,
ftSk_MS_SpecialLw,
ftSk_MS_SpecialLw2,
ftSk_MS_SpecialAirLw,
ftSk_MS_SpecialAirLw2,
ftSk_MS_Count,
ftSk_MS_SelfCount = ftSk_MS_Count - ftCo_MS_Count,
} ftSeak_MotionState;
typedef enum ftSk_Submotion {
ftSk_SM_SpecialNStart = ftCo_SM_Count,
ftSk_SM_SpecialNLoop,
ftSk_SM_SpecialNCancel,
ftSk_SM_SpecialNEnd,
ftSk_SM_SpecialAirNStart,
ftSk_SM_SpecialAirNLoop,
ftSk_SM_SpecialAirNCancel,
ftSk_SM_SpecialAirNEnd,
ftSk_SM_SpecialSStart,
ftSk_SM_SpecialSEnd,
ftSk_SM_SpecialS,
ftSk_SM_SpecialAirSStart,
ftSk_SM_SpecialAirSEnd,
ftSk_SM_SpecialAirS,
ftSk_SM_SpecialHiStart,
ftSk_SM_SpecialHi,
ftSk_SM_SpecialAirHiStart,
ftSk_SM_SpecialAirHi,
ftSk_SM_SpecialLw,
ftSk_SM_SpecialLw2,
ftSk_SM_SpecialAirLw,
ftSk_SM_SpecialAirLw2,
ftSk_SM_Count,
ftSk_SM_SelfCount = ftSk_SM_Count - ftCo_SM_Count,
} ftSk_Submotion;
#define GALE01_110094
/* 110094 */ void ftSk_Init_OnDeath(HSD_GObj* gobj);
/* 1100EC */ void ftSk_Init_OnLoad(HSD_GObj* gobj);
/* 110198 */ void ftSk_Init_80110198(HSD_GObj* gobj);
/* 1101CC */ void ftSk_Init_UnkMotionStates4(HSD_GObj* gobj);
/* 110204 */ void ftSk_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 1102E4 */ void ftSk_Init_OnItemInvisible(HSD_GObj* gobj);
/* 11032C */ void ftSk_Init_OnItemVisible(HSD_GObj* gobj);
/* 110374 */ void ftSk_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 1103C8 */ void ftSk_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 110408 */ void ftSk_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 11044C */ void ftSk_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3CC060 */ extern MotionState ftSk_Init_MotionStateTable[ftSk_MS_SelfCount];
/* 3CC360 */ extern char ftSk_Init_DatFilename[];
/* 3CC36C */ extern char ftSk_Init_DataName[];
/* 3CC4CC */ extern char ftSk_Init_AnimDatFilename[];
/* 3CC548 */ extern Fighter_DemoStrings ftSk_Init_DemoMotionFilenames;
/* 3CC558 */ extern Fighter_CostumeStrings ftSk_Init_CostumeStrings[];
#define GALE01_1130D0
/* 1130D0 */ void ftSk_SpecialHi_Enter(HSD_GObj* gobj);
/* 11312C */ void ftSk_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 113194 */ void ftSk_SpecialHiStart_0_Anim(HSD_GObj* gobj);
/* 1131D0 */ void ftSk_SpecialAirHiStart_0_Anim(HSD_GObj* gobj);
/* 11320C */ void ftSk_SpecialHiStart_0_IASA(HSD_GObj* gobj);
/* 113210 */ void ftSk_SpecialAirHiStart_0_IASA(HSD_GObj* gobj);
/* 113214 */ void ftSk_SpecialHiStart_0_Phys(HSD_GObj* gobj);
/* 113234 */ void ftSk_SpecialAirHiStart_0_Phys(HSD_GObj* gobj);
/* 113278 */ void ftSk_SpecialHiStart_0_Coll(HSD_GObj* gobj);
/* 1132B4 */ void ftSk_SpecialAirHiStart_0_Coll(HSD_GObj* gobj);
/* 1133FC */ void ftSk_SpecialHiStart_1_Anim(HSD_GObj* gobj);
/* 113438 */ void ftSk_SpecialAirHiStart_1_Anim(HSD_GObj* gobj);
/* 113474 */ void ftSk_SpecialHiStart_1_IASA(HSD_GObj* gobj);
/* 113478 */ void ftSk_SpecialAirHiStart_1_IASA(HSD_GObj* gobj);
/* 11347C */ void ftSk_SpecialHiStart_1_Phys(HSD_GObj* gobj);
/* 11349C */ void ftSk_SpecialAirHiStart_1_Phys(HSD_GObj* gobj);
/* 1134A0 */ void ftSk_SpecialHiStart_1_Coll(HSD_GObj* gobj);
/* 113540 */ void ftSk_SpecialAirHiStart_1_Coll(HSD_GObj* gobj);
/* 113C40 */ void ftSk_SpecialHi_Anim(HSD_GObj* gobj);
/* 113C7C */ void ftSk_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 113CDC */ void ftSk_SpecialHi_IASA(HSD_GObj* gobj);
/* 113CE0 */ void ftSk_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 113CE4 */ void ftSk_SpecialHi_Phys(HSD_GObj* gobj);
/* 113D04 */ void ftSk_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 113D80 */ void ftSk_SpecialHi_Coll(HSD_GObj* gobj);
/* 113DBC */ void ftSk_SpecialAirHi_Coll(HSD_GObj* gobj);
#define GALE01_11108C
/* 1142E8 */ void ftSk_SpecialLw_Anim(HSD_GObj* gobj);
/* 1143D4 */ void ftSk_SpecialLw_Coll(HSD_GObj* gobj);
/* 114524 */ void ftSk_SpecialLw2_Anim(HSD_GObj* gobj);
/* 114608 */ void ftSk_SpecialLw2_Coll(HSD_GObj* gobj);
/* 11459C */ void ftSk_SpecialLw2_IASA(HSD_GObj* gobj);
/* 1145A4 */ void ftSk_SpecialLw2_Phys(HSD_GObj* gobj);
/* 114368 */ void ftSk_SpecialLw_IASA(HSD_GObj* gobj);
/* 114370 */ void ftSk_SpecialLw_Phys(HSD_GObj* gobj);
/* 11108C */ void ftSk_SpecialAirS_Enter(HSD_GObj* gobj);
/* 111308 */ void ftSk_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 111348 */ void ftSk_SpecialAirSStart_IASA(HSD_GObj* gobj);
/* 11136C */ void ftSk_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 111404 */ void ftSk_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 111648 */ void ftSk_SpecialAirS_Anim(HSD_GObj* gobj);
/* 111740 */ void ftSk_SpecialAirS_IASA(HSD_GObj* gobj);
/* 111798 */ void ftSk_SpecialAirS_Phys(HSD_GObj* gobj);
/* 1117F4 */ void ftSk_SpecialAirS_Coll(HSD_GObj* gobj);
/* 111B1C */ void ftSk_SpecialAirSEnd_Anim(HSD_GObj* gobj);
/* 111BF4 */ void ftSk_SpecialAirSEnd_IASA(HSD_GObj* gobj);
/* 111C18 */ void ftSk_SpecialAirSEnd_Phys(HSD_GObj* gobj);
/* 111C74 */ void ftSk_SpecialAirSEnd_Coll(HSD_GObj* gobj);
/* 114160 */ void ftSk_SpecialLw_Enter(HSD_GObj* gobj);
/* 114224 */ void ftSk_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 114328 */ void ftSk_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 11436C */ void ftSk_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 114390 */ void ftSk_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 114410 */ void ftSk_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 11444C */ void ftSk_SpecialLw_80114758(HSD_GObj* gobj);
/* 114560 */ void ftSk_SpecialAirLw2_Anim(HSD_GObj* gobj);
/* 1145A0 */ void ftSk_SpecialAirLw2_IASA(HSD_GObj* gobj);
/* 1145C4 */ void ftSk_SpecialAirLw2_Phys(HSD_GObj* gobj);
/* 114644 */ void ftSk_SpecialAirLw2_Coll(HSD_GObj* gobj);
#define GALE01_111FBC
/* 111FBC */ void ftSk_SpecialN_80111FBC(Fighter_GObj* gobj);
/* 1120E8 */ void ftSk_SpecialN_Enter(Fighter_GObj* gobj);
/* 112198 */ void ftSk_SpecialAirN_Enter(Fighter_GObj* gobj);
/* 112248 */ void ftSk_SpecialNStart_Anim(Fighter_GObj* gobj);
/* 1122D8 */ void ftSk_SpecialNLoop_Anim(Fighter_GObj* gobj);
/* 112384 */ void ftSk_SpecialNCancel_Anim(Fighter_GObj* gobj);
/* 1123CC */ void ftSk_SpecialNEnd_Anim(Fighter_GObj* gobj);
/* 112450 */ void ftSk_SpecialAirNStart_Anim(Fighter_GObj* gobj);
/* 1124E0 */ void ftSk_SpecialAirNLoop_Anim(Fighter_GObj* gobj);
/* 11258C */ void ftSk_SpecialAirNCancel_Anim(Fighter_GObj* gobj);
/* 11260C */ void ftSk_SpecialAirNEnd_Anim(Fighter_GObj* gobj);
/* 1126C8 */ void ftSk_SpecialNStart_IASA(Fighter_GObj* gobj);
/* 1126CC */ void ftSk_SpecialNLoop_IASA(Fighter_GObj* gobj);
/* 112798 */ void ftSk_SpecialNCancel_IASA(Fighter_GObj* gobj);
/* 11279C */ void ftSk_SpecialNEnd_IASA(Fighter_GObj* gobj);
/* 1127A0 */ void ftSk_SpecialAirNStart_IASA(Fighter_GObj* gobj);
/* 1127A4 */ void ftSk_SpecialAirNLoop_IASA(Fighter_GObj* gobj);
/* 112870 */ void ftSk_SpecialAirNCancel_IASA(Fighter_GObj* gobj);
/* 112874 */ void ftSk_SpecialAirNEnd_IASA(Fighter_GObj* gobj);
/* 112878 */ void ftSk_SpecialNStart_Phys(Fighter_GObj* gobj);
/* 112898 */ void ftSk_SpecialNLoop_Phys(Fighter_GObj* gobj);
/* 1128B8 */ void ftSk_SpecialNCancel_Phys(Fighter_GObj* gobj);
/* 1128D8 */ void ftSk_SpecialNEnd_Phys(Fighter_GObj* gobj);
/* 1128F8 */ void ftSk_SpecialAirNStart_Phys(Fighter_GObj* gobj);
/* 112918 */ void ftSk_SpecialAirNLoop_Phys(Fighter_GObj* gobj);
/* 112938 */ void ftSk_SpecialAirNCancel_Phys(Fighter_GObj* gobj);
/* 112958 */ void ftSk_SpecialAirNEnd_Phys(Fighter_GObj* gobj);
/* 112978 */ void ftSk_SpecialNStart_Coll(Fighter_GObj* gobj);
/* 1129F8 */ void ftSk_SpecialNLoop_Coll(Fighter_GObj* gobj);
/* 112A78 */ void ftSk_SpecialNCancel_Coll(Fighter_GObj* gobj);
/* 112B00 */ void ftSk_SpecialNEnd_Coll(Fighter_GObj* gobj);
/* 112B98 */ void ftSk_SpecialAirNStart_Coll(Fighter_GObj* gobj);
/* 112C18 */ void ftSk_SpecialAirNLoop_Coll(Fighter_GObj* gobj);
/* 112C98 */ void ftSk_SpecialAirNCancel_Coll(Fighter_GObj* gobj);
/* 112CE4 */ void ftSk_SpecialAirNEnd_Coll(Fighter_GObj* gobj);
#define MELEE_FT_CHARA_FTYOSHI_FORWARD_H
struct S_UNK_YOSHI1;
typedef struct HSD_GObj ftYs_GObj;
/// @todo Fix names
static MotionFlags const ftYs_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftYs_MF_MS_341 = Ft_MF_UnkUpdatePhys;
static MotionFlags const ftYs_MF_ShieldStart =
Ft_MF_KeepFastFall | Ft_MF_KeepGfx | Ft_MF_SkipModel | Ft_MF_SkipAnimVel |
Ft_MF_Unk06 | Ft_MF_SkipColAnim | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftYs_MF_ShieldHold =
Ft_MF_Unk19 | Ft_MF_UnkUpdatePhys;
static MotionFlags const ftYs_MF_SpecialN =
ftYs_MF_Special | Ft_MF_KeepFastFall;
static MotionFlags const ftYs_MF_SpecialAirHi =
ftYs_MF_SpecialN | Ft_MF_KeepGfx | Ft_MF_SkipThrowException;
static MotionFlags const ftYs_MF_UnkBase = ftYs_MF_Special | Ft_MF_KeepSfx;
static MotionFlags const ftYs_MF_SpecialAirS = ftYs_MF_UnkBase | Ft_MF_KeepGfx;
static MotionFlags const ftYs_MF_MS_366 =
ftYs_MF_UnkBase | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftYs_MF_SpecialS =
ftYs_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftYs_MF_MS_365 =
ftYs_MF_SpecialAirHi | Ft_MF_SkipParasol;
static MotionFlags const ftYs_MF_SpecialHi =
ftYs_MF_SpecialAirS | Ft_MF_SkipParasol;
static MotionFlags const ftYs_MF_MS_368 = ftYs_MF_MS_366 | Ft_MF_SkipParasol;
typedef enum ftYoshi_MotionState {
ftYs_MS_GuardOn_0 = ftCo_MS_Count,
ftYs_MS_GuardHold,
ftYs_MS_GuardOff,
ftYs_MS_GuardDamage,
ftYs_MS_GuardOn_1,
ftYs_MS_SpecialN1,
ftYs_MS_SpecialN1_0,
ftYs_MS_SpecialN1_1,
ftYs_MS_SpecialN2_0,
ftYs_MS_SpecialN2_1,
ftYs_MS_SpecialAirN1_0,
ftYs_MS_SpecialAirN1_1,
ftYs_MS_SpecialAirN1_2,
ftYs_MS_SpecialAirN2_0,
ftYs_MS_SpecialAirN2_1,
ftYs_MS_SpecialAirSStart_0,
ftYs_MS_SpecialAirSLoop_0,
ftYs_MS_SpecialAirSLoop_1,
ftYs_MS_SpecialAirSEnd,
ftYs_MS_SpecialAirSStart_1,
ftYs_MS_SpecialAirSLoop_2,
ftYs_MS_SpecialAirSLoop_3,
ftYs_MS_SpecialAirSLanding,
ftYs_MS_SpecialHi,
ftYs_MS_SpecialAirHi,
ftYs_MS_SpecialLw,
ftYs_MS_SpecialLwLanding,
ftYs_MS_SpecialAirLw,
ftYs_MS_Count,
ftYs_MS_SelfCount = ftYs_MS_Count - ftCo_MS_Count,
} ftYoshi_MotionState;
typedef enum ftYs_Submotion {
ftYs_SM_SpecialN1 = ftCo_SM_Count,
ftYs_SM_SpecialN1_0,
ftYs_SM_SpecialN2_1,
ftYs_SM_SpecialAirN1_0,
ftYs_SM_SpecialAirN1_1,
ftYs_SM_SpecialAirN2,
ftYs_SM_SpecialSStart,
ftYs_SM_SpecialSLoop_0,
ftYs_SM_SpecialSLoop_1,
ftYs_SM_SpecialSEnd,
ftYs_SM_SpecialAirSStart,
ftYs_SM_SpecialAirSLoop_0,
ftYs_SM_SpecialAirSLoop_1,
ftYs_SM_SpecialAirSEnd,
ftYs_SM_SpecialHi,
ftYs_SM_SpecialAirHi,
ftYs_SM_SpecialLw,
ftYs_SM_SpecialLwLanding,
ftYs_SM_SpecialAirLw,
ftYs_SM_Count,
ftYs_SM_SelfCount = ftYs_SM_Count - ftCo_SM_Count,
} ftYs_Submotion;
#define GALE01_12C030
/* 12C030 */ void ftYs_GuardOn_0_Anim(ftYs_GObj* gobj);
/* 12C114 */ void ftYs_GuardOn_0_IASA(ftYs_GObj* gobj);
/* 12C194 */ void ftYs_GuardOn_0_Phys(ftYs_GObj* gobj);
/* 12C1B4 */ void ftYs_GuardOn_0_Coll(ftYs_GObj* gobj);
/* 12C1D4 */ void ftYs_Shield_8012C1D4(ftYs_GObj* gobj);
/* 12C2F4 */ void ftYs_GuardHold_Anim(ftYs_GObj* gobj);
/* 12C3EC */ void ftYs_GuardHold_IASA(ftYs_GObj* gobj);
/* 12C45C */ void ftYs_GuardHold_Phys(ftYs_GObj* gobj);
/* 12C47C */ void ftYs_GuardHold_Coll(ftYs_GObj* gobj);
/* 12C49C */ void ftYs_Shield_8012C49C(ftYs_GObj* gobj);
/* 12C54C */ void ftYs_GuardOff_Anim(ftYs_GObj* gobj);
/* 12C59C */ void ftYs_GuardOff_IASA(ftYs_GObj* gobj);
/* 12C5C0 */ void ftYs_GuardOff_Phys(ftYs_GObj* gobj);
/* 12C5E0 */ void ftYs_GuardOff_Coll(ftYs_GObj* gobj);
/* 12C600 */ void ftYs_Shield_8012C600(ftYs_GObj* gobj, bool);
/* 12C7A4 */ void ftYs_GuardDamage_Anim(ftYs_GObj* gobj);
/* 12C80C */ void ftYs_GuardDamage_IASA(ftYs_GObj* gobj);
/* 12C810 */ void ftYs_GuardDamage_Phys(ftYs_GObj* gobj);
/* 12C830 */ void ftYs_GuardDamage_Coll(ftYs_GObj* gobj);
/* 12C850 */ void ftYs_Shield_8012C850(ftYs_GObj* gobj);
/* 12C914 */ void ftYs_Shield_8012C914(ftYs_GObj* gobj);
/* 12CACC */ void ftYs_Shield_8012CACC(ftYs_GObj* gobj);
/* 12CAD0 */ void ftYs_GuardOn_1_Anim(ftYs_GObj* gobj);
/* 12CBBC */ void ftYs_GuardOn_1_IASA(ftYs_GObj* gobj);
/* 12CBDC */ void ftYs_GuardOn_1_Phys(ftYs_GObj* gobj);
/* 12CBFC */ void ftYs_GuardOn_1_Coll(ftYs_GObj* gobj);
/* 12CC1C */ bool ftYs_Shield_8012CC1C(ftYs_GObj* gobj);
/* 12CC6C */ Fighter_Part ftYs_Shield_8012CC6C(ftYs_GObj* gobj);
/* 12CC94 */ void ftYs_Shield_8012CC94(ftYs_GObj* gobj, Vec3* out);
/* 12CCC4 */ float ftYs_Shield_8012CCC4(ftYs_GObj* gobj);
/* 12CCD0 */ float ftYs_Shield_8012CCD0(ftYs_GObj* gobj);
/* 12CCE0 */ float ftYs_Shield_8012CCE0(ftYs_GObj* gobj);
/* 12CCF0 */ float ftYs_Shield_8012CCF0(ftYs_GObj* gobj);
/* 12CD00 */ float ftYs_Shield_8012CD00(ftYs_GObj* gobj);
/* 3CEA98 */ extern char ftYs_Init_DatFilename[];
/* 3CEAA4 */ extern char ftYs_Init_DataName[];
/* 3CEC70 */ extern char ftYs_Init_AnimDatFilename[];
/* 3CECEC */ extern Fighter_DemoStrings ftYs_Init_DemoMotionFilenames;
/* 3CECFC */ extern Fighter_CostumeStrings ftYs_Init_CostumeStrings[];
#define MELEE_FT_CHARA_FTYOSHI_FTYOSHI1_H
/* 12B6E8 */ void ftYs_Init_8012B6E8(Fighter* fp,
struct S_UNK_YOSHI1* unk_struct_arg);
/* 12B804 */ void ftYs_Init_8012B804(Fighter* fp,
struct S_UNK_YOSHI1* unk_struct_arg,
float start_frame);
/* 12B8A4 */ void ftYs_Init_8012B8A4(HSD_GObj* gobj);
/* 12B918 */ void ftYs_Init_8012B918(HSD_GObj* gobj);
/* 12B960 */ void ftYs_Init_OnDeath(HSD_GObj* gobj);
/* 12B99C */ void ftYs_Init_OnLoad(HSD_GObj* gobj);
/* 12BA8C */ void ftYs_Init_8012BA8C(HSD_GObj* gobj);
/* 12BAC0 */ float ftYs_Init_8012BAC0(Fighter* fp);
/* 12BACC */ void ftYs_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 12BBAC */ void ftYs_Init_OnItemInvisible(HSD_GObj* gobj);
/* 12BBF4 */ void ftYs_Init_OnItemVisible(HSD_GObj* gobj);
/* 12BC3C */ void ftYs_Init_OnItemDrop(HSD_GObj* gobj, bool bool1);
/* 12BC90 */ void ftYs_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 12BCC8 */ void ftYs_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 12BD34 */ void ftYs_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 12BDA0 */ void ftYs_Init_8012BDA0(ftCo_GObj* gobj);
/* 12BE3C */ void ftYs_Init_8012BE3C(HSD_GObj* gobj);
/* 12BECC */ void ftYs_Init_8012BECC(ftCo_GObj* gobj);
/* 3CE6D0 */ extern MotionState ftYs_Init_MotionStateTable[ftYs_MS_SelfCount];
#define GALE01_12CDE8
/* 12CD10 */ float ftYs_SpecialN_8012CD10(ftYs_GObj* gobj);
/* 12CD28 */ float ftYs_SpecialN_8012CD28(void);
/* 12CD40 */ float ftYs_SpecialN_8012CD40(void);
/* 12CD58 */ float ftYs_SpecialN_8012CD58(void);
/* 12CD70 */ bool ftYs_SpecialN_8012CD70(void);
/* 12CD88 */ void ftYs_SpecialN_8012CD88(Vec3*);
/* 12CDB4 */ float ftYs_SpecialN_8012CDB4(ftYs_GObj* gobj);
/* 12CDD4 */ HSD_Joint* ftYs_SpecialN_8012CDD4(ftYs_GObj* gobj);
/* 12CDE8 */ void ftYs_SpecialN_Enter(ftYs_GObj* gobj);
/* 12CE64 */ void ftYs_SpecialAirN_Enter(ftYs_GObj* gobj);
/* 12D004 */ M2C_UNK fn_8012D004();
/* 12D0A0 */ M2C_UNK fn_8012D0A0();
/* 12D128 */ M2C_UNK fn_8012D128();
/* 12D1AC */ M2C_UNK fn_8012D1AC();
/* 12D230 */ M2C_UNK fn_8012D230();
/* 12D298 */ M2C_UNK fn_8012D298();
/* 12D2F8 */ M2C_UNK fn_8012D2F8();
/* 12D360 */ M2C_UNK fn_8012D360();
/* 12D3C0 */ M2C_UNK fn_8012D3C0();
/* 12D428 */ M2C_UNK fn_8012D428();
/* 12D488 */ M2C_UNK fn_8012D488();
/* 12D4F0 */ M2C_UNK fn_8012D4F0();
/* 12D550 */ void ftYs_SpecialN1_Anim(ftYs_GObj* gobj);
/* 12D58C */ void ftYs_SpecialAirN1_0_Anim(ftYs_GObj* gobj);
/* 12D5C8 */ void ftYs_SpecialN1_1_Anim(ftYs_GObj* gobj);
/* 12D658 */ void ftYs_SpecialN1_0_Anim(ftYs_GObj* gobj);
/* 12D6D0 */ void ftYs_SpecialAirN1_2_Anim(ftYs_GObj* gobj);
/* 12D760 */ void ftYs_SpecialAirN1_1_Anim(ftYs_GObj* gobj);
/* 12D7D8 */ void ftYs_SpecialN2_1_Anim(ftYs_GObj* gobj);
/* 12D948 */ void ftYs_SpecialN2_0_Anim(ftYs_GObj* gobj);
/* 12DA04 */ void ftYs_SpecialAirN2_1_Anim(ftYs_GObj* gobj);
/* 12DB74 */ void ftYs_SpecialAirN2_0_Anim(ftYs_GObj* gobj);
/* 12DC30 */ void ftYs_SpecialN1_Phys(ftYs_GObj* gobj);
/* 12DC50 */ void ftYs_SpecialAirN1_0_Phys(ftYs_GObj* gobj);
/* 12DC70 */ void ftYs_SpecialN1_1_Phys(ftYs_GObj* gobj);
/* 12DC90 */ void ftYs_SpecialN1_0_Phys(ftYs_GObj* gobj);
/* 12DCB0 */ void ftYs_SpecialAirN1_2_Phys(ftYs_GObj* gobj);
/* 12DCD0 */ void ftYs_SpecialAirN1_1_Phys(ftYs_GObj* gobj);
/* 12DCF0 */ void ftYs_SpecialN2_1_Phys(ftYs_GObj* gobj);
/* 12DD10 */ void ftYs_SpecialN2_0_Phys(ftYs_GObj* gobj);
/* 12DD30 */ void ftYs_SpecialAirN2_1_Phys(ftYs_GObj* gobj);
/* 12DD50 */ void ftYs_SpecialAirN2_0_Phys(ftYs_GObj* gobj);
/* 12DD70 */ void ftYs_SpecialN1_Coll(ftYs_GObj* gobj);
/* 12DD98 */ void ftYs_SpecialAirN1_0_Coll(ftYs_GObj* gobj);
/* 12DDC0 */ void ftYs_SpecialN1_1_Coll(ftYs_GObj* gobj);
/* 12DDE8 */ void ftYs_SpecialN1_0_Coll(ftYs_GObj* gobj);
/* 12DE10 */ void ftYs_SpecialAirN1_2_Coll(ftYs_GObj* gobj);
/* 12DE38 */ void ftYs_SpecialAirN1_1_Coll(ftYs_GObj* gobj);
/* 12DE60 */ void ftYs_SpecialN2_1_Coll(ftYs_GObj* gobj);
/* 12DE88 */ void ftYs_SpecialN2_0_Coll(ftYs_GObj* gobj);
/* 12DEB0 */ void ftYs_SpecialAirN2_1_Coll(ftYs_GObj* gobj);
/* 12DED8 */ void ftYs_SpecialAirN2_0_Coll(ftYs_GObj* gobj);
/* 12DF18 */ void ftYs_SpecialS_8012DF18(ftYs_GObj* gobj);
/* 12DF8C */ M2C_UNK ftYs_SpecialS_8012DF8C();
/* 12E110 */ M2C_UNK fn_8012E110();
/* 12E270 */ void ftYs_SpecialS_8012E270(ftYs_GObj* gobj);
/* 12E2C4 */ void ftYs_SpecialHi_Enter(ftYs_GObj* gobj);
/* 12E33C */ void ftYs_SpecialAirHi_Enter(ftYs_GObj* gobj);
/* 12E3B4 */ M2C_UNK fn_8012E3B4();
/* 12E44C */ M2C_UNK fn_8012E44C();
/* 12E4DC */ void ftYs_SpecialHi_Anim(ftYs_GObj* gobj);
/* 12E538 */ void ftYs_SpecialAirHi_Anim(ftYs_GObj* gobj);
/* 12E594 */ void ftYs_SpecialHi_Phys(ftYs_GObj* gobj);
/* 12E5B4 */ void ftYs_SpecialAirHi_Phys(ftYs_GObj* gobj);
/* 12E5D4 */ void ftYs_SpecialHi_Coll(ftYs_GObj* gobj);
/* 12E5FC */ void ftYs_SpecialAirHi_Coll(ftYs_GObj* gobj);
/* 12E6F8 */ void ftYs_SpecialLw_Enter(ftYs_GObj* gobj);
/* 12E78C */ void ftYs_SpecialAirLw_Enter(ftYs_GObj* gobj);
/* 12E814 */ void ftYs_SpecialLw_Anim(ftYs_GObj* gobj);
/* 12E850 */ void ftYs_SpecialAirLw_Anim(ftYs_GObj* gobj);
/* 12E88C */ void ftYs_SpecialLw_Phys(ftYs_GObj* gobj);
/* 12E8CC */ void ftYs_SpecialAirLw_Phys(ftYs_GObj* gobj);
/* 12E924 */ void ftYs_SpecialLw_Coll(ftYs_GObj* gobj);
/* 12E944 */ void ftYs_SpecialAirLw_Coll(ftYs_GObj* gobj);
/* 12EA04 */ M2C_UNK ftYs_SpecialS_8012EA04();
/* 12EA40 */ void ftYs_SpecialLwLanding_Anim(ftYs_GObj* gobj);
/* 12EA7C */ void ftYs_SpecialLwLanding_Phys(ftYs_GObj* gobj);
/* 12EA9C */ void ftYs_SpecialLwLanding_Coll(ftYs_GObj* gobj);
/* 12EB48 */ M2C_UNK ftYs_SpecialS_8012EB48();
/* 12EC7C */ M2C_UNK fn_8012EC7C();
/* 12EDE8 */ M2C_UNK fn_8012EDE8();
/* 12EFC0 */ M2C_UNK fn_8012EFC0();
/* 12EFF4 */ M2C_UNK fn_8012EFF4();
/* 12F0DC */ M2C_UNK ftYs_SpecialS_8012F0DC();
/* 12F35C */ M2C_UNK ftYs_SpecialS_8012F35C();
/* 12F4B4 */ void ftYs_SpecialS_Enter(ftYs_GObj* gobj);
/* 12F588 */ void ftYs_SpecialAirS_Enter(ftYs_GObj* gobj);
/* 12F654 */ void ftYs_SpecialAirSStart_0_Anim(ftYs_GObj* gobj);
/* 12F750 */ void ftYs_SpecialAirSLoop_0_Anim(ftYs_GObj* gobj);
/* 12FAC4 */ void ftYs_SpecialAirSLoop_1_Anim(ftYs_GObj* gobj);
/* 12FFF4 */ void ftYs_SpecialAirSEnd_Anim(ftYs_GObj* gobj);
/* 130368 */ void ftYs_SpecialAirSStart_1_Anim(ftYs_GObj* gobj);
/* 130428 */ void ftYs_SpecialAirSLoop_2_Anim(ftYs_GObj* gobj);
/* 1306A8 */ void ftYs_SpecialAirSLoop_3_Anim(ftYs_GObj* gobj);
/* 130A24 */ void ftYs_SpecialAirSLanding_Anim(ftYs_GObj* gobj);
/* 130DB8 */ void ftYs_SpecialAirSStart_0_IASA(ftYs_GObj* gobj);
/* 130DBC */ void ftYs_SpecialAirSLoop_0_IASA(ftYs_GObj* gobj);
/* 130F7C */ void ftYs_SpecialAirSLoop_1_IASA(ftYs_GObj* gobj);
/* 130FD8 */ void ftYs_SpecialAirSEnd_IASA(ftYs_GObj* gobj);
/* 130FDC */ void ftYs_SpecialAirSStart_1_IASA(ftYs_GObj* gobj);
/* 130FEC */ void ftYs_SpecialAirSLoop_2_IASA(ftYs_GObj* gobj);
/* 131050 */ void ftYs_SpecialAirSLoop_3_IASA(ftYs_GObj* gobj);
/* 1310B4 */ void ftYs_SpecialAirSLanding_IASA(ftYs_GObj* gobj);
/* 1310C4 */ void ftYs_SpecialAirSStart_0_Phys(ftYs_GObj* gobj);
/* 1310E8 */ void ftYs_SpecialAirSLoop_0_Phys(ftYs_GObj* gobj);
/* 1312EC */ void ftYs_SpecialAirSLoop_1_Phys(ftYs_GObj* gobj);
/* 131618 */ void ftYs_SpecialAirSEnd_Phys(ftYs_GObj* gobj);
/* 131654 */ void ftYs_SpecialAirSStart_1_Phys(ftYs_GObj* gobj);
/* 13168C */ void ftYs_SpecialAirSLoop_2_Phys(ftYs_GObj* gobj);
/* 131718 */ void ftYs_SpecialAirSLoop_3_Phys(ftYs_GObj* gobj);
/* 1317A4 */ void ftYs_SpecialAirSLanding_Phys(ftYs_GObj* gobj);
/* 1317DC */ void ftYs_SpecialAirSStart_0_Coll(ftYs_GObj* gobj);
/* 13187C */ void ftYs_SpecialAirSLoop_0_Coll(ftYs_GObj* gobj);
/* 131B60 */ void ftYs_SpecialAirSLoop_1_Coll(ftYs_GObj* gobj);
/* 131E74 */ void ftYs_SpecialAirSEnd_Coll(ftYs_GObj* gobj);
/* 131ED4 */ void ftYs_SpecialAirSStart_1_Coll(ftYs_GObj* gobj);
/* 131F80 */ void ftYs_SpecialAirSLoop_2_Coll(ftYs_GObj* gobj);
/* 13245C */ void ftYs_SpecialAirSLoop_3_Coll(ftYs_GObj* gobj);
/* 1328F0 */ void ftYs_SpecialAirSLanding_Coll(ftYs_GObj* gobj);
/* 3B75C0 */ extern Vec3 const ftYs_Unk1_803B75C0;
/// @todo Move to C file
/* 12CEE0 */ static void fn_8012CEE0(HSD_GObj*);
/* 12CF7C */ static void fn_8012CF7C(HSD_GObj*);
/* 12DF00 */ static void ftYs_SpecialS_8012DF00(HSD_GObj*);
/* 12E644 */ static void fn_8012E644(HSD_GObj*);
/* 12EAD8 */ static void ftYs_SpecialS_8012EAD8(HSD_GObj*);
#define __GALE01_12CDE8
/* 12CEE0 */ static void fn_8012CEE0(HSD_GObj*);
/* 12CF7C */ static void fn_8012CF7C(HSD_GObj*);
/* 12DF00 */ static void ftYs_SpecialS_8012DF00(HSD_GObj*);
/* 12E644 */ static void fn_8012E644(HSD_GObj*);
/* 12EAD8 */ static void ftYs_SpecialS_8012EAD8(HSD_GObj*);
/* 3CED48 */ static bool ftYs_Unk3_803CED48[] = {
0, 1, 0, 0, 0, 1, 1, 0,
0, 1, 1, 1, 0, 1, 1,
};
/* 3CED84 */ static Vec4 ftYs_Unk3_803CED84 = { 0.65, 0.7, 0.8, 1 };
/* 3CED94 */ static Vec4 ftYs_Unk3_803CED94 = { 1.1, 1.35, 1.3, 1.2 };
/* 3CEDA4 */ static Vec3 ftYs_Unk3_803CEDA4[] = {
{ 12, 0, -6 },
{ 6, 6, 6 },
};
#define GALE01_14F1F0
/* 14F1F0 */ void ftBo_Init_OnDeath(HSD_GObj* gobj);
/* 14F218 */ void ftBo_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 14F2F8 */ void ftBo_Init_OnItemInvisible(HSD_GObj* gobj);
/* 14F340 */ void ftBo_Init_OnItemVisible(HSD_GObj* gobj);
/* 14F388 */ void ftBo_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 14F3DC */ void ftBo_Init_OnLoad(HSD_GObj* gobj);
/* 14F3FC */ void ftBo_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 3D34E8 */ extern char ftBo_Init_DatFilename[];
/* 3D34F4 */ extern char ftBo_Init_DataName[];
/* 3D3520 */ extern char ftBo_Init_AnimDatFilename[];
/* 3D3558 */ extern Fighter_CostumeStrings ftBo_Init_CostumeStrings[];
#define GALE01_14F418
/* 14F418 */ void ftGl_Init_OnDeath(HSD_GObj* gobj);
/* 14F440 */ void ftGl_Init_OnLoad(HSD_GObj* gobj);
/* 14F460 */ void ftGl_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 14F540 */ void ftGl_Init_OnItemInvisible(HSD_GObj* gobj);
/* 14F588 */ void ftGl_Init_OnItemVisible(HSD_GObj* gobj);
/* 14F5D0 */ void ftGl_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 14F624 */ void ftGl_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 3D3568 */ extern char ftGl_Init_DatFilename[];
/* 3D3574 */ extern char ftGl_Init_DataName[];
/* 3D35A0 */ extern char ftGl_Init_AnimDatFilename[];
/* 3D35D8 */ extern Fighter_CostumeStrings ftGl_Init_CostumeStrings[];
#define MELEE_FT_CHARA_FTZELDA_FORWARD_H
static MotionFlags const ftZd_MF_Special =
Ft_MF_SkipModel | Ft_MF_SkipItemVis | Ft_MF_UnkUpdatePhys |
Ft_MF_FreezeState;
static MotionFlags const ftZd_MF_SpecialN =
ftZd_MF_Special | Ft_MF_KeepFastFall | Ft_MF_SkipColAnim;
static MotionFlags const ftZd_MF_SpecialHi =
ftZd_MF_Special | Ft_MF_KeepFastFall | Ft_MF_KeepGfx;
static MotionFlags const ftZd_MF_SpecialLw =
ftZd_MF_Special | Ft_MF_KeepColAnimHitStatus;
static MotionFlags const ftZd_MF_SpecialS =
ftZd_MF_Special | Ft_MF_KeepGfx | Ft_MF_SkipThrowException;
static MotionFlags const ftZd_MF_SpecialAirN =
ftZd_MF_SpecialN | Ft_MF_SkipParasol;
static MotionFlags const ftZd_MF_SpecialAirHi =
ftZd_MF_SpecialHi | Ft_MF_SkipParasol;
static MotionFlags const ftZd_MF_SpecialAirLw =
ftZd_MF_SpecialLw | Ft_MF_SkipParasol;
static MotionFlags const ftZd_MF_SpecialAirS =
ftZd_MF_SpecialS | Ft_MF_SkipParasol;
typedef enum ftZd_MotionState {
ftZd_MS_SpecialN = ftCo_MS_Count,
ftZd_MS_SpecialAirN,
ftZd_MS_SpecialSStart,
ftZd_MS_SpecialSLoop,
ftZd_MS_SpecialSEnd,
ftZd_MS_SpecialAirSStart,
ftZd_MS_SpecialAirSLoop,
ftZd_MS_SpecialAirSEnd,
ftZd_MS_SpecialHiStart_0,
ftZd_MS_SpecialHiStart_1,
ftZd_MS_SpecialHi,
ftZd_MS_SpecialAirHiStart_0,
ftZd_MS_SpecialAirHiStart_1,
ftZd_MS_SpecialAirHi,
ftZd_MS_SpecialLw,
ftZd_MS_SpecialLw2,
ftZd_MS_SpecialAirLw,
ftZd_MS_SpecialAirLw2,
ftZd_MS_Count,
ftZd_MS_SelfCount = ftZd_MS_Count - ftCo_MS_Count,
} ftZd_MotionState;
typedef enum ftZd_Submotion {
ftZd_SM_SpecialN = ftCo_SM_Count,
ftZd_SM_SpecialAirN,
ftZd_SM_SpecialSStart,
ftZd_SM_SpecialSLoop,
ftZd_SM_SpecialSEnd,
ftZd_SM_SpecialAirSStart,
ftZd_SM_SpecialAirSLoop,
ftZd_SM_SpecialAirSEnd,
ftZd_SM_SpecialHiStart,
ftZd_SM_SpecialHi,
ftZd_SM_SpecialAirHiStart,
ftZd_SM_SpecialAirHi,
ftZd_SM_SpecialLw,
ftZd_SM_SpecialLw2,
ftZd_SM_SpecialAirLw,
ftZd_SM_SpecialAirLw2,
ftZd_SM_Count,
ftZd_SM_SelfCount = ftZd_SM_Count - ftCo_SM_Count,
} ftZd_Submotion;
#define GALE01_1393AC
/* 1392DC */ void ftZd_Init_OnDeath(HSD_GObj* gobj);
/* 139334 */ void ftZd_Init_OnLoad(HSD_GObj* gobj);
/* 1393AC */ void ftZd_Init_801393AC(HSD_GObj* gobj);
/* 1393CC */ void ftZd_Init_OnItemPickup(HSD_GObj* gobj, bool flag);
/* 1394AC */ void ftZd_Init_OnItemInvisible(HSD_GObj* gobj);
/* 1394F4 */ void ftZd_Init_OnItemVisible(HSD_GObj* gobj);
/* 13953C */ void ftZd_Init_OnItemDrop(HSD_GObj* gobj, bool flag);
/* 139590 */ void ftZd_Init_LoadSpecialAttrs(HSD_GObj* gobj);
/* 1395C8 */ void ftZd_Init_801395C8(HSD_GObj* gobj);
/* 139624 */ void ftZd_Init_OnKnockbackEnter(HSD_GObj* gobj);
/* 139668 */ void ftZd_Init_OnKnockbackExit(HSD_GObj* gobj);
/* 3CFA58 */ extern MotionState ftZd_Init_MotionStateTable[ftZd_MS_SelfCount];
/* 3CFC98 */ extern char ftZd_Init_DatFilename[];
/* 3CFCA4 */ extern char ftZd_Init_DataName[];
/* 3CFE24 */ extern char ftZd_Init_AnimDatFilename[];
/* 3CFEA0 */ extern Fighter_DemoStrings ftZd_Init_DemoMotionFilenames;
/* 3CFEB0 */ extern Fighter_CostumeStrings ftZd_Init_CostumeStrings[];
#define GALE01_1396AC
/* 1396AC */ void ftZd_SpecialHi_801396AC(HSD_GObj* gobj);
/* 1396E0 */ void ftZd_SpecialHi_801396E0(HSD_GObj* gobj);
/* 13979C */ void ftZd_SpecialHi_8013979C(HSD_GObj* gobj);
/* 139834 */ void ftZd_SpecialHi_Enter(HSD_GObj* gobj);
/* 1398E8 */ void ftZd_SpecialAirHi_Enter(HSD_GObj* gobj);
/* 1399B4 */ void ftZd_SpecialHiStart_0_Anim(HSD_GObj* gobj);
/* 1399F0 */ void ftZd_SpecialAirHiStart_0_Anim(HSD_GObj* gobj);
/* 139A2C */ void ftZd_SpecialHiStart_0_IASA(HSD_GObj* gobj);
/* 139A30 */ void ftZd_SpecialAirHiStart_0_IASA(HSD_GObj* gobj);
/* 139A34 */ void ftZd_SpecialHiStart_0_Phys(HSD_GObj* gobj);
/* 139A54 */ void ftZd_SpecialAirHiStart_0_Phys(HSD_GObj* gobj);
/* 139A98 */ void ftZd_SpecialHiStart_0_Coll(HSD_GObj* gobj);
/* 139AD4 */ void ftZd_SpecialAirHiStart_0_Coll(HSD_GObj* gobj);
/* 139B44 */ void ftZd_SpecialHi_80139B44(HSD_GObj* gobj);
/* 139BB0 */ void ftZd_SpecialHi_80139BB0(HSD_GObj* gobj);
/* 139C1C */ void ftZd_SpecialHiStart_1_Anim(HSD_GObj* gobj);
/* 139C58 */ void ftZd_SpecialAirHiStart_1_Anim(HSD_GObj* gobj);
/* 139C94 */ void ftZd_SpecialHiStart_1_IASA(HSD_GObj* gobj);
/* 139C98 */ void ftZd_SpecialAirHiStart_1_IASA(HSD_GObj* gobj);
/* 139C9C */ void ftZd_SpecialHiStart_1_Phys(HSD_GObj* gobj);
/* 139CBC */ void ftZd_SpecialAirHiStart_1_Phys(HSD_GObj* gobj);
/* 139CC0 */ void ftZd_SpecialHiStart_1_Coll(HSD_GObj* gobj);
/* 139D60 */ void ftZd_SpecialAirHiStart_1_Coll(HSD_GObj* gobj);
/* 139F6C */ void ftZd_SpecialHi_80139F6C(HSD_GObj* gobj);
/* 139FE8 */ void ftZd_SpecialHi_80139FE8(HSD_GObj* gobj);
/* 13A058 */ void ftZd_SpecialHi_8013A058(HSD_GObj* gobj);
/* 13A244 */ void ftZd_SpecialHi_8013A244(HSD_GObj* gobj);
/* 13A448 */ void ftZd_SpecialHi_Anim(HSD_GObj* gobj);
/* 13A484 */ void ftZd_SpecialAirHi_Anim(HSD_GObj* gobj);
/* 13A4E4 */ void ftZd_SpecialHi_IASA(HSD_GObj* gobj);
/* 13A4E8 */ void ftZd_SpecialAirHi_IASA(HSD_GObj* gobj);
/* 13A4EC */ void ftZd_SpecialHi_Phys(HSD_GObj* gobj);
/* 13A50C */ void ftZd_SpecialAirHi_Phys(HSD_GObj* gobj);
/* 13A588 */ void ftZd_SpecialHi_Coll(HSD_GObj* gobj);
/* 13A5C4 */ void ftZd_SpecialAirHi_Coll(HSD_GObj* gobj);
/* 13A648 */ void ftZd_SpecialHi_8013A648(HSD_GObj* gobj);
/* 13A6A8 */ void ftZd_SpecialHi_8013A6A8(HSD_GObj* gobj);
/* 13A764 */ void ftZd_SpecialHi_8013A764(HSD_GObj* gobj);
#define GALE01_13ADB4
/* 13ADB4 */ void ftZd_SpecialLw_8013ADB4(HSD_GObj* gobj);
/* 13AE30 */ void ftZd_SpecialLw_8013AE30(HSD_GObj* gobj);
/* 13AEAC */ void ftZd_SpecialLw_8013AEAC(HSD_GObj* gobj);
/* 13AEE0 */ void ftZd_SpecialLw_Enter(HSD_GObj* gobj);
/* 13AFA4 */ void ftZd_SpecialAirLw_Enter(HSD_GObj* gobj);
/* 13B068 */ void ftZd_SpecialLw_Anim(HSD_GObj* gobj);
/* 13B0A8 */ void ftZd_SpecialAirLw_Anim(HSD_GObj* gobj);
/* 13B0E8 */ void ftZd_SpecialLw_IASA(HSD_GObj* gobj);
/* 13B0EC */ void ftZd_SpecialAirLw_IASA(HSD_GObj* gobj);
/* 13B0F0 */ void ftZd_SpecialLw_Phys(HSD_GObj* gobj);
/* 13B110 */ void ftZd_SpecialAirLw_Phys(HSD_GObj* gobj);
/* 13B154 */ void ftZd_SpecialLw_Coll(HSD_GObj* gobj);
/* 13B190 */ void ftZd_SpecialAirLw_Coll(HSD_GObj* gobj);
/* 13B1CC */ void ftZd_SpecialLw_8013B1CC(HSD_GObj* gobj);
/* 13B238 */ void ftZd_SpecialLw_8013B238(HSD_GObj* gobj);
/* 13B2A4 */ void ftZd_SpecialLw2_Anim(HSD_GObj* gobj);
/* 13B2E0 */ void ftZd_SpecialAirLw2_Anim(HSD_GObj* gobj);
/* 13B31C */ void ftZd_SpecialLw2_IASA(HSD_GObj* gobj);
/* 13B320 */ void ftZd_SpecialAirLw2_IASA(HSD_GObj* gobj);
/* 13B324 */ void ftZd_SpecialLw2_Phys(HSD_GObj* gobj);
/* 13B344 */ void ftZd_SpecialAirLw2_Phys(HSD_GObj* gobj);
/* 13B388 */ void ftZd_SpecialLw2_Coll(HSD_GObj* gobj);
/* 13B3C4 */ void ftZd_SpecialAirLw2_Coll(HSD_GObj* gobj);
/* 13B400 */ void ftZd_SpecialLw_8013B400(HSD_GObj* gobj);
/* 13B46C */ void ftZd_SpecialLw_8013B46C(HSD_GObj* gobj);
/* 13B4D8 */ void ftZd_SpecialLw_8013B4D8(HSD_GObj* gobj);
/* 13B540 */ s32 ftZd_SpecialLw_8013B540(HSD_GObj* gobj);
/* 13B574 */ bool ftZd_SpecialLw_8013B574(HSD_GObj* gobj);
/* 13B5C4 */ void ftZd_SpecialLw_8013B5C4(HSD_GObj* gobj);
/* 13B5EC */ void ftZd_SpecialLw_8013B5EC(HSD_GObj* gobj);
#define GALE01_13A830
/* 13A830 */ void ftZd_SpecialN_8013A830(HSD_GObj* gobj);
/* 13A8AC */ void ftZd_SpecialN_8013A8AC(HSD_GObj* gobj);
/* 13A928 */ void ftZd_SpecialN_Enter(HSD_GObj* gobj);
/* 13A9A4 */ void ftZd_SpecialAirN_Enter(HSD_GObj* gobj);
/* 13AA38 */ void ftZd_SpecialN_Anim(HSD_GObj* gobj);
/* 13AACC */ void ftZd_SpecialAirN_Anim(HSD_GObj* gobj);
/* 13AB60 */ void ftZd_SpecialN_IASA(HSD_GObj* gobj);
/* 13AB64 */ void ftZd_SpecialAirN_IASA(HSD_GObj* gobj);
/* 13AB68 */ void ftZd_SpecialN_Phys(HSD_GObj* gobj);
/* 13AB9C */ void ftZd_SpecialAirN_Phys(HSD_GObj* gobj);
/* 13AC10 */ void ftZd_SpecialN_Coll(HSD_GObj* gobj);
/* 13AC4C */ void ftZd_SpecialAirN_Coll(HSD_GObj* gobj);
/* 13AC88 */ void ftZd_SpecialN_8013AC88(HSD_GObj* gobj);
/* 13AD1C */ void ftZd_SpecialN_8013AD1C(HSD_GObj* gobj);
/* 13ADB0 */ void ftZd_SpecialN_8013ADB0(HSD_GObj* gobj);
#define GALE01_13B638
/* 13B638 */ void ftZd_SpecialS_Enter(HSD_GObj* gobj);
/* 13B6D8 */ void ftZd_SpecialAirS_Enter(HSD_GObj* gobj);
/* 13B780 */ void ftZd_SpecialSStart_Anim(HSD_GObj* gobj);
/* 13B89C */ void ftZd_SpecialSLoop_Anim(HSD_GObj* gobj);
/* 13BA04 */ void ftZd_SpecialSEnd_Anim(HSD_GObj* gobj);
/* 13BA8C */ void ftZd_SpecialAirSStart_Anim(HSD_GObj* gobj);
/* 13BBA8 */ void ftZd_SpecialAirSLoop_Anim(HSD_GObj* gobj);
/* 13BD10 */ void ftZd_SpecialAirSEnd_Anim(HSD_GObj* gobj);
/* 13BDD0 */ void ftZd_SpecialSStart_IASA(HSD_GObj* gobj);
/* 13BDD4 */ void ftZd_SpecialSLoop_IASA(HSD_GObj* gobj);
/* 13BE50 */ void ftZd_SpecialSEnd_IASA(HSD_GObj* gobj);
/* 13BE54 */ void ftZd_SpecialAirSStart_IASA(HSD_GObj* gobj);
/* 13BE58 */ void ftZd_SpecialAirSLoop_IASA(HSD_GObj* gobj);
/* 13BED4 */ void ftZd_SpecialAirSEnd_IASA(HSD_GObj* gobj);
/* 13BED8 */ void ftZd_SpecialSStart_Phys(HSD_GObj* gobj);
/* 13BF10 */ void ftZd_SpecialSLoop_Phys(HSD_GObj* gobj);
/* 13BF30 */ void ftZd_SpecialSEnd_Phys(HSD_GObj* gobj);
/* 13BF50 */ void ftZd_SpecialAirSStart_Phys(HSD_GObj* gobj);
/* 13BFB0 */ void ftZd_SpecialAirSLoop_Phys(HSD_GObj* gobj);
/* 13C010 */ void ftZd_SpecialAirSEnd_Phys(HSD_GObj* gobj);
/* 13C070 */ void ftZd_SpecialSStart_Coll(HSD_GObj* gobj);
/* 13C0DC */ void ftZd_SpecialSLoop_Coll(HSD_GObj* gobj);
/* 13C148 */ void ftZd_SpecialSEnd_Coll(HSD_GObj* gobj);
/* 13C1B4 */ void ftZd_SpecialAirSStart_Coll(HSD_GObj* gobj);
/* 13C220 */ void ftZd_SpecialAirSLoop_Coll(HSD_GObj* gobj);
/* 13C28C */ void ftZd_SpecialAirSEnd_Coll(HSD_GObj* gobj);
#define GALE01_07C114
/* 07C114 */ void ft_8007C114(Fighter_GObj* gobj);
/* 07C17C */ void ft_8007C17C(Fighter_GObj* gobj);
/* 07C224 */ void ft_8007C224(Fighter_GObj* gobj);
/* 07C2E0 */ void ft_8007C2E0(Fighter* fp0, HitCapsule* hit0, Fighter* fp1,
HitCapsule* hit1);
/* 07C4BC */ void ft_8007C4BC(Fighter_GObj* gobj);
#define GALE01_07C630
/* 07C630 */ void ft_8007C630(HSD_GObj* gobj);
/* 07C6DC */ void ft_8007C6DC(HSD_GObj* gobj);
/* 07C77C */ void ft_8007C77C(HSD_GObj* gobj);
#define GALE01_081938
/* 081938 */ void ft_80081938(HSD_GObj* gobj);
/* 0819A8 */ void ft_800819A8(HSD_GObj* gobj);
/* 081A00 */ bool ft_80081A00(Fighter_GObj* gobj);
#define GALE01_081B38
/* 081B38 */ void ft_80081B38(Fighter_GObj* gobj);
/* 081C88 */ void ft_80081C88(Fighter_GObj* dst_gobj, float scl_y);
/* 081D0C */ GroundOrAir ft_80081D0C(Fighter_GObj* gobj);
/* 081DD4 */ bool ft_80081DD4(Fighter_GObj* gobj);
/* 081F2C */ bool ft_80081F2C(Fighter_GObj* gobj);
/* 082084 */ bool ft_80082084(Fighter_GObj* gobj);
/* 0821DC */ bool ft_800821DC(Fighter_GObj* gobj);
/* 0822A4 */ bool ft_CheckGroundAndLedge(Fighter_GObj* gobj, s32 direction);
/* 08239C */ bool ft_8008239C(Fighter_GObj* gobj, s32 facing_direction,
float* height_attributes);
/* 0824A0 */ bool ft_800824A0(Fighter_GObj*, ftCollisionBox*);
/* 082578 */ M2C_UNK ft_80082578();
/* 082638 */ void ft_80082638(Fighter_GObj* gobj, ftCollisionBox*);
/* 082708 */ GroundOrAir ft_80082708(Fighter_GObj* gobj);
/* 0827A0 */ bool ft_800827A0(Fighter_GObj* gobj);
/* 082838 */ void ft_80082838(void);
/* 082888 */ bool ft_80082888(Fighter_GObj*, ftCollisionBox*);
/* 082978 */ M2C_UNK ft_80082978();
/* 082A68 */ bool ft_80082A68(Fighter_GObj* gobj);
/* 082B1C */ void ft_80082B1C(Fighter_GObj* gobj);
/* 082B78 */ void ftCo_AirCatchHit_Coll(Fighter_GObj*);
/* 082C74 */ void ft_80082C74(Fighter_GObj*, HSD_GObjEvent);
/* 082D40 */ void ft_80082D40(Fighter_GObj* gobj, float);
/* 082E3C */ Fighter_GObj* ft_80082E3C(Fighter_GObj* gobj);
/* 082F28 */ void ft_80082F28(Fighter_GObj* gobj);
/* 083090 */ void ft_80083090(Fighter_GObj* gobj,
bool (*)(Fighter_GObj*, enum_t), HSD_GObjEvent);
/* 0831CC */ void ft_800831CC(Fighter_GObj*, bool (*)(Fighter_GObj*, enum_t),
HSD_GObjEvent);
/* 083318 */ void ft_80083318(Fighter_GObj* gobj,
bool (*)(Fighter_GObj* gobj, enum_t),
HSD_GObjEvent);
/* 083464 */ void ft_80083464(Fighter_GObj* gobj,
bool (*)(Fighter_GObj* gobj, enum_t),
HSD_GObjEvent);
/* 0835B0 */ void ft_800835B0(Fighter_GObj* gobj,
bool (*)(Fighter_GObj* gobj, enum_t),
HSD_GObjEvent);
/* 08370C */ void ft_8008370C(Fighter_GObj* gobj, HSD_GObjEvent cb);
/* 083844 */ M2C_UNK ft_80083844();
/* 083910 */ M2C_UNK ft_80083910();
/* 083A48 */ M2C_UNK ft_80083A48();
/* 083B68 */ void ft_80083B68(Fighter_GObj* gobj);
/* 083C00 */ M2C_UNK ft_80083C00();
/* 083CE4 */ M2C_UNK ft_80083CE4();
/* 083DCC */ M2C_UNK ft_80083DCC();
/* 083E64 */ void ft_80083E64(Fighter_GObj* gobj, ftCollisionBox* ecb,
HSD_GObjEvent cb);
/* 083F88 */ void ft_80083F88(Fighter_GObj* gobj);
/* 08403C */ void ft_8008403C(Fighter_GObj*, HSD_GObjEvent);
/* 084104 */ void ft_80084104(Fighter_GObj* gobj);
/* 0841B8 */ void ft_800841B8(Fighter_GObj* gobj, HSD_GObjEvent cb);
/* 084280 */ void ft_80084280(Fighter_GObj*);
/* 0843FC */ void ft_800843FC(Fighter_GObj* gobj);
/* 0844EC */ M2C_UNK ft_800844EC();
/* 0845B4 */ void ft_800845B4(Fighter_GObj* gobj);
/* 0846B0 */ M2C_UNK ft_800846B0();
/* 0847D0 */ void ft_800847D0(Fighter_GObj* gobj, ftCollisionBox*);
/* 0848DC */ void ft_800848DC(Fighter_GObj* gobj, HSD_GObjEvent cb);
/* 0849EC */ void ft_800849EC(Fighter*, Fighter*);
/* 084A18 */ bool ft_80084A18(Fighter_GObj*);
/* 084A40 */ float ft_GetGroundFrictionMultiplier(Fighter* fp);
/* 084A80 */ M2C_UNK ft_80084A80();
/* 084BFC */ bool ft_80084BFC(Fighter_GObj* gobj, int*, int*);
/* 084C38 */ bool ft_80084C38(Fighter_GObj*, int*, int*, int*, char*);
/* 084C74 */ bool ft_80084C74(Fighter_GObj*, int*, int*, int*);
/* 084CB0 */ void ft_80084CB0(Fighter*, ftCollisionBox*);
/* 084CE4 */ bool ft_80084CE4(Fighter* attacker, Fighter* victim);
/* 084DB0 */ void ft_80084DB0(Fighter_GObj*);
/* 084E1C */ M2C_UNK ft_80084E1C();
/* 084EEC */ void ft_80084EEC(Fighter_GObj* gobj);
/* 084F3C */ void ft_80084F3C(Fighter_GObj* gobj);
/* 084FA8 */ void ft_80084FA8(Fighter_GObj* gobj);
/* 085004 */ void ft_80085004(Fighter_GObj* gobj);
/* 085030 */ void ft_80085030(Fighter_GObj*, float gr_friction,
float facing_dir);
/* 085088 */ void ft_80085088(Fighter_GObj*);
/* 0850B4 */ M2C_UNK ft_800850B4();
/* 085134 */ void ft_80085134(Fighter_GObj* gobj);
/* 085154 */ void ft_80085154(Fighter_GObj* gobj);
/* 0851C0 */ void ft_800851C0(Fighter_GObj*);
/* 0851D0 */ M2C_UNK ft_800851D0();
/* 085204 */ void ft_80085204(Fighter_GObj* gobj);
#define GALE01_08521C
/* 08521C */ void ft_8008521C(Fighter_GObj* gobj);
/* 0852B0 */ void ft_800852B0(void);
/* 08549C */ void ft_8008549C(void);
/* 3C0EC0 */ extern struct UnkCostumeList
CostumeListsForeachCharacter[FTKIND_MAX];
#define GALE01_0877F8
/* 0877F8 */ s32 ft_800877F8(Fighter_GObj*, s32);
/* 087818 */ s32 ft_80087818(Fighter_GObj*, s32);
/* 087838 */ s32 ft_80087838(Fighter_GObj* gobj);
/* 087858 */ s32 ft_80087858(Fighter_GObj* gobj);
/* 087878 */ s32 ft_80087878(Fighter_GObj*, s32);
/* 0878BC */ s32 ft_800878BC(Fighter_GObj* gobj);
/* 087900 */ s32 ft_80087900(Fighter_GObj* gobj);
/* 087944 */ s32 ft_80087944(Fighter_GObj* gobj);
/* 087988 */ s32 ft_80087988(Fighter_GObj* gobj);
/* 0879D8 */ s32 ft_800879D8(Fighter_GObj* gobj);
/* 0879F8 */ s32 ft_800879F8(Fighter_GObj* gobj);
/* 087A18 */ s32 ft_80087A18(Fighter_GObj* gobj);
/* 087A80 */ s8 ft_80087A80(Fighter_GObj* gobj);
/* 087A8C */ float ft_80087A8C(Fighter_GObj* gobj);
/* 087A98 */ s32 ft_80087A98(Fighter_GObj* gobj);
/* 087AA4 */ u8 ft_80087AA4(Fighter_GObj* gobj);
/* 087AB4 */ u8 ft_80087AB4(Fighter_GObj* gobj);
/* 087AC0 */ void ft_80087AC0(Fighter_GObj*, s32);
/* 087AEC */ s32 ft_80087AEC(Fighter_GObj* gobj);
/* 087B34 */ s32 ft_80087B34(Fighter_GObj* gobj);
/* 087BAC */ void ft_80087BAC(Fighter_GObj*, s32);
/* 087BC0 */ void ft_80087BC0(Fighter_GObj*, int);
/* 087BEC */ void ft_80087BEC(Fighter_GObj*, int);
/* 087C1C */ s32 ft_80087C1C(void);
/* 087C58 */ s32 ft_80087C58(Fighter_GObj* gobj);
/* 087C64 */ void ft_80087C64(Fighter_GObj*, s32);
/* 087C70 */ s32 ft_80087C70(Fighter*, s32);
/* 087D0C */ s32 ft_80087D0C(Fighter*, s32);
/* 08805C */ void ft_8008805C(Fighter*, s32);
/* 088080 */ void ft_80088080(Fighter*);
/* 0880AC */ void ft_800880AC(Fighter*);
/* 0880D8 */ void ft_800880D8(Fighter*);
/* 088110 */ void ft_80088110(Fighter*);
/* 088148 */ void ft_80088148(Fighter*, enum_t, int, int);
/* 3C57D0 */ extern char ftMr_Init_DatFilename[];
/* 3C57DC */ extern char ftMr_Init_DataName[];
/* 3C595C */ extern char ftMr_Init_AnimDatFilename[];
/* 3C5A28 */ extern Fighter_CostumeStrings ftMr_Init_CostumeStrings[];
/* 459B88 */ extern struct ft_80459B88_t ft_80459B88;
/* 45A1E0 */ extern HSD_Joint* ft_8045A1E0[6];
#define GALE01_0881D8
/* 0881D8 */ void ft_800881D8(Fighter* fp, int, int, int);
/* 088328 */ void ft_80088328(Fighter* fp, int, int, int);
/* 088478 */ void ft_80088478(Fighter*, int, int, int);
/* 088510 */ void ft_80088510(Fighter*, int, int, int);
/* 0885A8 */ void ft_800885A8(Fighter* fp, int, int, int);
/* 088640 */ void ft_80088640(Fighter*, int, int, int);
/* 0886D8 */ void ftCo_800886D8(Fighter* fp, int, int, int);
/* 088770 */ void ft_80088770(Fighter* fp);
/* 0887CC */ void ft_800887CC(Fighter* fp);
/* 088828 */ void ft_80088828(Fighter* fp);
/* 088884 */ void ft_80088884(Fighter* fp);
/* 0888E0 */ void ft_800888E0(Fighter* fp);
/* 08893C */ void ft_8008893C(Fighter* fp);
/* 088998 */ M2C_UNK ft_80088998();
/* 0889F4 */ void ft_800889F4(Fighter* fp, FtSFXArr* sfx);
/* 088A50 */ void ft_80088A50(Fighter* fp);
/* 088C5C */ void ft_80088C5C(Fighter_GObj* gobj);
/* 0890BC */ void ft_800890BC(Fighter* fp);
/* 0890D0 */ void ft_800890D0(Fighter* fp, u32 move_id);
/* 089228 */ float ft_80089228(Fighter*, s32, s32, f32);
/* 0892A0 */ void ft_800892A0(Fighter_GObj* gobj);
#define GALE01_0892D4
/* 0892D4 */ void ft_800892D4(Fighter*);
/* 089460 */ M2C_UNK ft_80089460();
/* 0895E0 */ void ft_800895E0(Fighter*, int);
/* 089768 */ void ft_80089768(Vec2*);
/* 089824 */ void ft_80089824(Fighter_GObj* gobj);
/* 089884 */ union Struct2070* ft_80089884(Fighter_GObj* gobj);
/* 089890 */ M2C_UNK ft_80089890(Fighter_GObj* gobj);
/* 08989C */ u16 ft_8008989C(Fighter_GObj* gobj);
/* 0898A8 */ struct Struct2074* ft_800898A8(Fighter_GObj* gobj);
/* 0898B4 */ int ft_800898B4(Fighter_GObj* gobj);
/* 0898C0 */ M2C_UNK ft_800898C0();
/* 089914 */ M2C_UNK ft_80089914();
/* 08998C */ M2C_UNK fn_8008998C();
/* 089B08 */ void ft_80089B08(Fighter_GObj* gobj);
/* 08A1B8 */ void ft_8008A1B8(Fighter_GObj* gobj, int);
/* 08A1FC */ bool ft_8008A1FC(Fighter_GObj* gobj);
/* 08A244 */ M2C_UNK ft_8008A244();
/* 08A2BC */ void ft_8008A2BC(Fighter_GObj* gobj);
/* 08A324 */ void ft_8008A324(Fighter_GObj* gobj);
/* 08A348 */ M2C_UNK ft_8008A348();
#define GALE01_0BECB0
/* 0BECB0 */ void ftCo_800BECB0(Fighter_GObj* gobj);
/* 0BED84 */ void ftCo_800BED84(Fighter_GObj* gobj);
/* 0BED88 */ void ftCo_800BED88(Fighter_GObj* gobj);
/* 0BEF00 */ void ftCo_800BEF00(Fighter_GObj* gobj);
/* 0BEF04 */ void ftCo_800BEF04(Fighter_GObj* gobj);
/* 0BEFD0 */ void ftCo_800BEFD0(Fighter_GObj* gobj);
#define GALE01_0BEFD4
/* 0BEFD4 */ void ftCo_800BEFD4(Fighter_GObj* gobj);
#define GALE01_0BF034
/* 0BF034 */ void ftCo_800BF034(Fighter_GObj* gobj);
/* 0BF108 */ void ftCo_800BF108(Fighter_GObj* gobj);
/* 0BF228 */ bool ftCo_800BF228(Fighter_GObj* gobj);
#define GALE01_0C31
/* 0C61B0 */ void ftCo_800C61B0(ftCo_GObj* gobj);
/* 0C6370 */ void ftCo_Entry_Anim(ftCo_GObj* gobj);
/* 0C63B4 */ void ftCo_Entry_IASA(ftCo_GObj* gobj);
/* 0C63B8 */ void ftCo_Entry_Phys(ftCo_GObj* gobj);
/* 0C6404 */ void ftCo_Entry_Coll(ftCo_GObj* gobj);
/* 0C6408 */ void ftCo_800C6408(ftCo_GObj* gobj);
/* 0C6700 */ void ftCo_EntryStart_Anim(ftCo_GObj* gobj);
/* 0C673C */ void ftCo_EntryStart_IASA(ftCo_GObj* gobj);
/* 0C6740 */ void ftCo_EntryStart_Phys(ftCo_GObj* gobj);
/* 0C6950 */ void ftCo_EntryStart_Coll(ftCo_GObj* gobj);
/* 0C6AFC */ void ftCo_800C6AFC(HSD_JObj* jobj);
/* 0C6B6C */ void ftCo_800C6B6C(ftCo_GObj* gobj);
/* 0C6CC8 */ void ftCo_EntryEnd_Anim(ftCo_GObj* gobj);
/* 0C6D34 */ void ftCo_EntryEnd_IASA(ftCo_GObj* gobj);
/* 0C6D38 */ void ftCo_EntryEnd_Phys(ftCo_GObj* gobj);
/* 0C6E90 */ void ftCo_EntryEnd_Coll(ftCo_GObj* gobj);
/* 0C703C */ void ftCo_800C703C(ftCo_GObj* gobj);
/* 0C7070 */ void ftCo_800C7070(ftCo_GObj* gobj);
/* 0C70D0 */ void ftCo_800C70D0(ftCo_GObj* gobj);
/* 0C7158 */ void ftCo_800C7158(ftCo_GObj* gobj);
/* 0C7178 */ void ftCo_800C7178(ftCo_GObj* gobj);
/* 0C7200 */ void ftCo_800C7200(ftCo_GObj* gobj);
/* 0C7220 */ void ftCo_800C7220(ftCo_GObj* gobj);
/* 0C7294 */ void ftCo_800C7294(ftCo_GObj* gobj);
/* 0C7308 */ void ftCo_800C7308(ftCo_GObj* gobj);
/* 0C737C */ void ftCo_800C737C(ftCo_GObj* gobj);
/* 0C739C */ void ftCo_800C739C(ftCo_GObj* gobj);
/* 0C7414 */ void ftCo_800C7414(ftCo_GObj* gobj);
/* 0C7434 */ void ftCo_800C7434(ftCo_GObj* gobj);
/* 0C74AC */ void ftCo_800C74AC(ftCo_GObj* gobj);
/* 0C74F4 */ bool ftCo_800C74F4(ftCo_GObj* gobj);
/* 0C7590 */ void ftCo_800C7590(ftCo_GObj* gobj);
/* 0C7734 */ void ftCo_CaptureLeadead_Anim(ftCo_GObj* gobj);
/* 0C77B0 */ void ftCo_CaptureLeadead_IASA(ftCo_GObj* gobj);
/* 0C77B4 */ void ftCo_CaptureLeadead_Phys(ftCo_GObj* gobj);
/* 0C77B8 */ void ftCo_CaptureLeadead_Coll(ftCo_GObj* gobj);
/* 0C7800 */ M2C_UNK ftCo_800C7800();
/* 0C78B0 */ M2C_UNK ftCo_800C78B0();
/* 0C7A30 */ void ftCo_800C7A30(ftCo_GObj* gobj);
/* 0C7A58 */ void ftCo_CaptureLikelike_Anim(ftCo_GObj* gobj);
/* 0C7AD4 */ void ftCo_CaptureLikelike_IASA(ftCo_GObj* gobj);
/* 0C7AD8 */ void ftCo_CaptureLikelike_Phys(ftCo_GObj* gobj);
/* 0C7ADC */ void ftCo_CaptureLikelike_Coll(ftCo_GObj* gobj);
/* 0C7AE0 */ void fn_800C7AE0(ftCo_GObj* gobj);
/* 0C7B0C */ M2C_UNK ftCo_800C7B0C();
/* 0C7C60 */ void ftCo_800C7C60(ftCo_GObj* gobj, int damage_amount);
/* 0C7CA0 */ bool ftCo_800C7CA0(ftCo_GObj* gobj);
/* 0C7FC8 */ void ftCo_DownReflect_Anim(ftCo_GObj* gobj);
/* 0C8004 */ void ftCo_DownReflect_IASA(ftCo_GObj* gobj);
/* 0C8008 */ void ftCo_DownReflect_Phys(ftCo_GObj* gobj);
/* 0C8028 */ void ftCo_DownReflect_Coll(ftCo_GObj* gobj);
/* 0C8064 */ void ftCo_800C8064(void);
/* 0C80A4 */ void ft_800C80A4(Fighter* fp);
/* 4D6580 */ extern HSD_MObj* ft_804D6580;
/* 4D6588 */ extern HSD_MObj* ft_804D6588;
#define GALE01_0928CC
/* 0C884C */ void ftCo_800C884C(ftCo_GObj* gobj);
/* 0C88A0 */ void ftCo_800C88A0(Fighter*);
/* 0C88D4 */ void ftCo_800C88D4(ftCo_GObj* gobj, int, bool);
/* 0C89A0 */ void ftCo_800C89A0(ftCo_GObj* gobj);
/* 0C8A64 */ void ftCo_800C8A64(ftCo_GObj* gobj);
/* 0C8AF0 */ void ftCo_800C8AF0(Fighter*);
/* 0C8B1C */ void fn_800C8B1C(Fighter_GObj* gobj);
/* 0C8B2C */ bool ftCo_800C8B2C(Fighter*, bool, bool);
/* 0C8B60 */ void ftCo_800C8B60(ftCo_Fighter* fp, int, s8);
/* 0C8B74 */ void ftCo_800C8B74(ftCo_GObj* gobj);
/* 0C8C04 */ void ftCo_DownSpot_Anim(ftCo_GObj* gobj);
/* 0C8C40 */ void ftCo_DownSpot_IASA(ftCo_GObj* gobj);
/* 0C8C44 */ void ftCo_DownSpot_Phys(ftCo_GObj* gobj);
/* 0C8C64 */ void ftCo_DownSpot_Coll(ftCo_GObj* gobj);
/* 0C8C84 */ void ftCo_800C8C84(ftCo_GObj* gobj);
/* 0C8D00 */ void ftCo_800C8D00(ftCo_GObj* gobj);
/* 0C8F6C */ void ftCo_800C8F6C(void);
/* 0C8FC4 */ void ftCo_800C8FC4(ftCo_GObj* gobj);
/* 0C9034 */ void ftCo_800C9034(ftCo_GObj* gobj);
/* 0C9078 */ M2C_UNK ftCo_800C9078();
/* 0C91C0 */ void ftCo_Barrel_Anim(ftCo_GObj* gobj);
/* 0C9208 */ void ftCo_Barrel_IASA(ftCo_GObj* gobj);
/* 0C925C */ void ftCo_Barrel_Phys(ftCo_GObj* gobj);
/* 0C9260 */ void ftCo_Barrel_Coll(ftCo_GObj* gobj);
/* 0C92E4 */ M2C_UNK ftCo_800C92E4();
/* 0C9468 */ bool ftCo_Walk_CheckInput(ftCo_GObj* gobj);
/* 0C94B4 */ bool ftCo_800C94B4(ftCo_GObj* gobj);
/* 0C95F4 */ void ftCo_Walk_Anim(ftCo_GObj* gobj);
/* 0C9614 */ void ftCo_Walk_IASA(ftCo_GObj* gobj);
/* 0C9768 */ void ftCo_Walk_Phys(ftCo_GObj* gobj);
/* 0C9788 */ void ftCo_Walk_Coll(ftCo_GObj* gobj);
/* 0C97A8 */ bool ftCo_800C97A8(ftCo_GObj* gobj);
/* 0C97DC */ bool ftCo_Turn_CheckInput(ftCo_GObj* gobj);
/* 0C9840 */ void ftCo_800C9840(ftCo_GObj*, s32, s32, float, float, float);
/* 0C9924 */ void ftCo_800C9924(ftCo_GObj* gobj);
/* 0C9970 */ void ftCo_Turn_Anim(ftCo_GObj* gobj);
/* 0C99F8 */ void ftCo_Turn_IASA(ftCo_GObj* gobj);
/* 0C9BEC */ void ftCo_Turn_Phys(ftCo_GObj* gobj);
/* 0C9C0C */ void ftCo_Turn_Coll(ftCo_GObj* gobj);
/* 0C9E10 */ void ftCo_TurnRun_Anim(ftCo_GObj* gobj);
/* 0C9ED8 */ void ftCo_TurnRun_IASA(ftCo_GObj* gobj);
/* 0C9EFC */ void ftCo_TurnRun_Phys(ftCo_GObj* gobj);
/* 0CA024 */ void ftCo_TurnRun_Coll(ftCo_GObj* gobj);
/* 0CA094 */ bool ftCo_Dash_CheckInput(ftCo_GObj* gobj);
/* 0CA1F4 */ void ftCo_Dash_Anim(ftCo_GObj* gobj);
/* 0CA230 */ void ftCo_Dash_IASA(ftCo_GObj* gobj);
/* 0CA53C */ void ftCo_Dash_Phys(ftCo_GObj* gobj);
/* 0CA5D0 */ void ftCo_Dash_Coll(ftCo_GObj* gobj);
/* 0CA77C */ void ftCo_Run_Anim(ftCo_GObj* gobj);
/* 0CA830 */ void ftCo_Run_IASA(ftCo_GObj* gobj);
/* 0CA95C */ void ftCo_Run_Phys(ftCo_GObj* gobj);
/* 0CAA2C */ void ftCo_Run_Coll(ftCo_GObj* gobj);
/* 0CAA4C */ void ftCo_RunDirect_Anim(ftCo_GObj* gobj);
/* 0CAA6C */ void ftCo_RunDirect_IASA(ftCo_GObj* gobj);
/* 0CAB84 */ void ftCo_RunDirect_Phys(ftCo_GObj* gobj);
/* 0CABA4 */ void ftCo_RunDirect_Coll(ftCo_GObj* gobj);
/* 0CAC9C */ void ftCo_RunBrake_Anim(ftCo_GObj* gobj);
/* 0CADB0 */ void ftCo_RunBrake_IASA(ftCo_GObj* gobj);
/* 0CAE18 */ void ftCo_RunBrake_Phys(ftCo_GObj* gobj);
/* 0CAE60 */ void ftCo_RunBrake_Coll(ftCo_GObj* gobj);
/* 0CAE80 */ enum_t ftCo_800CAE80(ftCo_GObj* gobj);
/* 0CAED0 */ bool ftCo_Jump_CheckInput(ftCo_GObj* gobj);
/* 0CB024 */ bool ftCo_800CB024(ftCo_GObj* gobj);
/* 0CB110 */ void ftCo_800CB110(ftCo_GObj*, s32, float);
/* 0CB2F8 */ void ftCo_Jump_Anim(ftCo_GObj* gobj);
/* 0CB334 */ void ftCo_Jump_IASA(ftCo_GObj* gobj);
/* 0CB438 */ void ftCo_800CB438(ftCo_GObj* gobj);
/* 0CB474 */ void ftCo_Jump_Phys(ftCo_GObj* gobj);
/* 0CB4B0 */ void ftCo_Jump_Coll(ftCo_GObj* gobj);
/* 0CB528 */ void ftCo_KneeBend_Anim(ftCo_GObj* gobj);
/* 0CB59C */ void ftCo_800CB59C(ftCo_GObj* gobj);
/* 0CB5FC */ void ftCo_KneeBend_IASA(ftCo_GObj* gobj);
/* 0CB6AC */ void ftCo_KneeBend_Phys(ftCo_GObj* gobj);
/* 0CB6CC */ void ftCo_KneeBend_Coll(ftCo_GObj* gobj);
/* 0CB6EC */ M2C_UNK ft_800CB6EC();
/* 0CB804 */ M2C_UNK ft_800CB804();
/* 0CB870 */ bool ftCo_800CB870(ftCo_GObj* gobj);
/* 0CB8E0 */ bool ftCo_800CB8E0(ftCo_GObj* gobj);
/* 0CB950 */ M2C_UNK ftCo_800CB950();
/* 0CBAC4 */ M2C_UNK ftCo_800CBAC4();
/* 0CBBC0 */ M2C_UNK ftCo_800CBBC0();
/* 0CBD18 */ M2C_UNK ftCo_800CBD18();
/* 0CBE98 */ M2C_UNK ftCo_800CBE98();
/* 0CC0E8 */ M2C_UNK ftCo_800CC0E8();
/* 0CC238 */ M2C_UNK ftCo_800CC238();
/* 0CC388 */ void ftCo_JumpAerial_Anim(ftCo_GObj* gobj);
/* 0CC4F8 */ void ftCo_JumpAerial_IASA(ftCo_GObj* gobj);
/* 0CC634 */ void ftCo_JumpAerial_Phys(ftCo_GObj* gobj);
/* 0CC6C8 */ void ftCo_800CC6C8(ftCo_GObj* gobj);
/* 0CC700 */ void ftCo_JumpAerial_Coll(ftCo_GObj* gobj);
/* 0CC730 */ void ftCo_800CC730(ftCo_GObj* gobj);
/* 0CC830 */ void ftCo_800CC830(ftCo_GObj* gobj);
/* 0CC8DC */ M2C_UNK ftCo_800CC8DC();
/* 0CC988 */ void ftCo_800CC988(ftCo_GObj* gobj, float);
/* 0CCA00 */ void ftCo_Fall_Anim(ftCo_GObj* gobj);
/* 0CCAAC */ void ftCo_800CCAAC(ftCo_GObj* gobj);
/* 0CCBE0 */ void ftCo_800CCBE0(ftCo_GObj* gobj, float*, FtMotionId,
FtMotionId, FtMotionId);
/* 0CCD34 */ void ftCo_Fall_IASA(ftCo_GObj* gobj);
/* 0CCD58 */ void ftCo_Fall_Phys(ftCo_GObj* gobj);
/* 0CCD78 */ void ftCo_Fall_Coll(ftCo_GObj* gobj);
/* 0CCDA8 */ void ftCo_800CCDA8(ftCo_GObj* gobj);
/* 0CCDFC */ void ftCo_FallAerial_Anim(ftCo_GObj* gobj);
/* 0CCE50 */ void ftCo_FallAerial_IASA(ftCo_GObj* gobj);
/* 0CCE74 */ void ftCo_FallAerial_Phys(ftCo_GObj* gobj);
#define GALE01_0CD140
/* 0CD140 */ M2C_UNK ftCo_800CD140();
/* 0CD1BC */ M2C_UNK ftCo_800CD1BC();
/* 0CD204 */ M2C_UNK ftCo_800CD204();
/* 0CD278 */ M2C_UNK ftCo_800CD278();
/* 0CD2C4 */ M2C_UNK ftCo_800CD2C4();
/* 0CD31C */ M2C_UNK ft_800CD31C();
/* 0CD350 */ M2C_UNK ftCo_800CD350();
/* 0CD390 */ void ftCo_SwordSwing_Anim(ftCo_GObj* gobj);
/* 0CD3B0 */ void ftCo_SwordSwing_IASA(ftCo_GObj* gobj);
/* 0CD3D0 */ void ftCo_SwordSwing_Phys(ftCo_GObj* gobj);
/* 0CD3F0 */ void ftCo_SwordSwing_Coll(ftCo_GObj* gobj);
/* 0CD418 */ M2C_UNK ftCo_800CD418();
/* 0CD458 */ void ftCo_BatSwing_Anim(ftCo_GObj* gobj);
/* 0CD478 */ void ftCo_BatSwing_IASA(ftCo_GObj* gobj);
/* 0CD498 */ void ftCo_BatSwing_Phys(ftCo_GObj* gobj);
/* 0CD4B8 */ void ftCo_BatSwing_Coll(ftCo_GObj* gobj);
/* 0CD4E0 */ M2C_UNK ftCo_800CD4E0();
/* 0CD520 */ void ftCo_ParasolSwing_Anim(ftCo_GObj* gobj);
/* 0CD540 */ void ftCo_ParasolSwing_IASA(ftCo_GObj* gobj);
/* 0CD560 */ void ftCo_ParasolSwing_Phys(ftCo_GObj* gobj);
/* 0CD580 */ void ftCo_ParasolSwing_Coll(ftCo_GObj* gobj);
/* 0CD5A8 */ M2C_UNK ftCo_800CD5A8();
/* 0CD604 */ M2C_UNK ft_800CD604();
/* 0CD65C */ M2C_UNK ft_800CD65C();
/* 0CD6A0 */ void ftCo_HarisenSwing_Anim(ftCo_GObj* gobj);
/* 0CD7C4 */ void ftCo_HarisenSwing_IASA(ftCo_GObj* gobj);
/* 0CD7E4 */ void ftCo_HarisenSwing_Phys(ftCo_GObj* gobj);
/* 0CD804 */ void ftCo_HarisenSwing_Coll(ftCo_GObj* gobj);
#define GALE01_0CDD14
/* 0CDD14 */ void ftCo_Attack_800CDD14(ftCo_GObj* gobj);
/* 0CDDA0 */ void ftCo_800CDDA0(Fighter_GObj*);
/* 0CDE18 */ void ftCo_800CDE18(Fighter_GObj*);
/* 0CDE54 */ void ftCo_800CDE54(Fighter_GObj*);
/* 0CDE74 */ void ftCo_800CDE74(Fighter_GObj*);
/* 0CDE94 */ void ftCo_800CDE94(Fighter* fighter, Vec3* arg1, Vec3* arg2);
/* 0CDF5C */ void ftCo_800CDF5C(Fighter_GObj*);
/* 0CE010 */ void ftCo_800CE010(Fighter_GObj*);
/* 0CE308 */ void ftCo_LGunShoot_Anim(ftCo_GObj* gobj);
/* 0CE328 */ void ftCo_LGunShootAir_Anim(ftCo_GObj* gobj);
/* 0CE348 */ void ftCo_LGunShoot_IASA(ftCo_GObj* gobj);
/* 0CE34C */ void ftCo_LGunShootAir_IASA(ftCo_GObj* gobj);
/* 0CE350 */ void ftCo_LGunShoot_Phys(ftCo_GObj* gobj);
/* 0CE370 */ void ftCo_LGunShootAir_Phys(ftCo_GObj* gobj);
/* 0CE390 */ void ftCo_LGunShoot_Coll(ftCo_GObj* gobj);
/* 0CE3B8 */ void ftCo_LGunShootAir_Coll(ftCo_GObj* gobj);
/* 0CE3E0 */ void ftCo_800CE3E0(Fighter_GObj*);
/* 0CE480 */ void ftCo_800CE480(Fighter_GObj*);
/* 0CE528 */ void ft_800CE528(Fighter_GObj*);
/* 0CE5A0 */ void ft_800CE5A0(Fighter_GObj*);
/* 0CEAF0 */ void ftCo_FireFlowerShoot_Anim(ftCo_GObj* gobj);
/* 0CEBA0 */ void ftCo_FireFlowerShootAir_Anim(ftCo_GObj* gobj);
/* 0CEC50 */ void ftCo_FireFlowerShoot_IASA(ftCo_GObj* gobj);
/* 0CEC54 */ void ftCo_FireFlowerShootAir_IASA(ftCo_GObj* gobj);
/* 0CEC58 */ void ftCo_FireFlowerShoot_Phys(ftCo_GObj* gobj);
/* 0CEC78 */ void ftCo_FireFlowerShootAir_Phys(ftCo_GObj* gobj);
/* 0CEC98 */ void ftCo_FireFlowerShoot_Coll(ftCo_GObj* gobj);
/* 0CECC0 */ void ftCo_FireFlowerShootAir_Coll(ftCo_GObj* gobj);
#define GALE01_0CEE70
/* 0CEE70 */ bool ftCo_800CEE70(ftCo_GObj* gobj);
/* 0CEF08 */ M2C_UNK ft_800CEF08();
/* 0CEFE0 */ void ftCo_800CEFE0(ftCo_GObj* gobj, int);
/* 0CF0B8 */ void ftCo_ItemParasolOpen_Anim(ftCo_GObj* gobj);
/* 0CF118 */ void ftCo_ItemParasolOpen_IASA(ftCo_GObj* gobj);
/* 0CF1A0 */ void ftCo_ItemParasolOpen_Phys(ftCo_GObj* gobj);
/* 0CF258 */ void ftCo_ItemParasolOpen_Coll(ftCo_GObj* gobj);
/* 0CF280 */ void ftCo_800CF280(Fighter_GObj* gobj);
/* 0CF2B8 */ void ftCo_ItemParasolFall_Anim(ftCo_GObj* gobj);
/* 0CF2BC */ void ftCo_ItemParasolFall_IASA(ftCo_GObj* gobj);
/* 0CF380 */ void ftCo_ItemParasolFall_Phys(ftCo_GObj* gobj);
/* 0CF3A0 */ void ftCo_ItemParasolFall_Coll(ftCo_GObj* gobj);
/* 0CF3C8 */ M2C_UNK ftCo_800CF3C8();
/* 0CF424 */ void ftCo_ItemParasolFallSpecial_Anim(ftCo_GObj* gobj);
/* 0CF428 */ void ftCo_ItemParasolFallSpecial_IASA(ftCo_GObj* gobj);
/* 0CF494 */ void ftCo_ItemParasolFallSpecial_Phys(ftCo_GObj* gobj);
/* 0CF4B4 */ void ftCo_ItemParasolFallSpecial_Coll(ftCo_GObj* gobj);
/* 0CF4DC */ void ftCo_800CF4DC(ftCo_GObj* gobj);
/* 0CF528 */ void ftCo_ItemParasolDamageFall_Anim(ftCo_GObj* gobj);
/* 0CF52C */ void ftCo_ItemParasolDamageFall_IASA(ftCo_GObj* gobj);
/* 0CF54C */ void ftCo_ItemParasolDamageFall_Phys(ftCo_GObj* gobj);
/* 0CF56C */ void ftCo_ItemParasolDamageFall_Coll(ftCo_GObj* gobj);
#define GALE01_071028
/* 071028 */ void ftAction_80071028(Fighter_GObj* gobj, FtCmdState* cmd);
/* 0711DC */ void ftAction_800711DC(Fighter_GObj* gobj, FtCmdState* cmd);
/* 071B50 */ void ftAction_80071B50(Fighter_GObj* gobj, FtCmdState* cmd);
/* 071CA4 */ void ftAction_80071CA4(Fighter_GObj* gobj, FtCmdState* cmd);
/* 0730B8 */ void ftAction_800730B8(Fighter_GObj* gobj, FtCmdState* cmd);
/* 073108 */ void ftAction_80073108(Fighter_GObj* gobj, FtCmdState* cmd);
/* 073240 */ void ftAction_80073240(Fighter_GObj* gobj);
/* 073354 */ void ftAction_80073354(Fighter_GObj* gobj);
/* 07349C */ void ftAction_8007349C(Fighter_GObj* gobj);
#define GALE01_0C2600
/* 0C2600 */ void ftCo_800C2600(Fighter_GObj* gobj, u32 arg1);
/* 0C2FD8 */ void ftCo_800C2FD8(Fighter_GObj* gobj);
#define GALE01_0CECE8
/* 0CECE8 */ bool ftCo_800CECE8(ftCo_GObj* gobj);
/* 0CED30 */ M2C_UNK ftCo_800CED30();
/* 0CEDE0 */ void ftCo_AttackS42_Anim(ftCo_GObj* gobj);
/* 0CEE00 */ void ftCo_AttackS42_IASA(ftCo_GObj* gobj);
/* 0CEE30 */ void ftCo_AttackS42_Phys(ftCo_GObj* gobj);
/* 0CEE50 */ void ftCo_AttackS42_Coll(ftCo_GObj* gobj);
#define GALE01_15BD20
/* 15BD20 */ void ftBossLib_8015BD20(HSD_GObj*);
/* 15BD24 */ void ftBossLib_8015BD24(s32, float*, float, s32, s32, s32);
/* 15BDB4 */ void ftBossLib_8015BDB4(HSD_GObj*);
/* 15BE40 */ void ftBossLib_8015BE40(HSD_GObj* gobj, Vec3*, float*, float,
float);
/* 15BF74 */ void ftBossLib_8015BF74(HSD_GObj* gobj, float x_diff_max);
/* 15C010 */ void ftBossLib_8015C010(HSD_GObj*, float);
/* 15C09C */ void ftBossLib_8015C09C(HSD_GObj* gobj, float facing_dir);
/* 15C190 */ void ftBossLib_8015C190(HSD_GObj*);
/* 15C208 */ void ftBossLib_8015C208(HSD_GObj*, Vec3*);
/* 15C244 */ HSD_GObj* ftBossLib_8015C244(HSD_GObj*, Vec3*);
/* 15C270 */ bool ftBossLib_8015C270(void);
/* 15C2A8 */ bool ftBossLib_8015C2A8(void);
/* 15C2E0 */ bool ftBossLib_8015C2E0(void);
/* 15C31C */ bool ftBossLib_8015C31C(void);
/* 15C358 */ bool ftBossLib_8015C358(void);
/* 15C3A0 */ bool ftBossLib_8015C3A0(void);
/* 15C3E8 */ HSD_GObj* ftBossLib_8015C3E8(FighterKind arg0);
/* 15C44C */ enum_t ftBossLib_8015C44C(FighterKind kind);
/* 15C4C4 */ enum_t ftBossLib_8015C4C4(void);
/* 15C530 */ s32 ftBossLib_8015C530(enum_t arg0);
/* 15C5F8 */ void ftBossLib_8015C5F8(HSD_GObj*);
/* 15C6BC */ ftMasterHand_SpecialAttrs* ftBossLib_8015C6BC(void);
/* 15C74C */ s32 ftBossLib_8015C74C(void);
/* 15C7EC */ s32 ftBossLib_8015C7EC(void);
/* 15C88C */ s32 ftBossLib_8015C88C(void);
/* 15C92C */ s32 ftBossLib_8015C92C(void);
/* 15C9CC */ s32 ftBossLib_8015C9CC(void);
/* 15CA6C */ void ftBossLib_8015CA6C(s32 arg0);
/* 15CB7C */ void ftBossLib_8015CB7C(void);
/* 15CB9C */ void ftBossLib_8015CB9C(s32 arg0);
/* 15CC14 */ void ftBossLib_8015CC14(void);
#define GALE01_076018
/* 076018 */ void ftCamera_80076018(UnkFloat6_Camera* in,
UnkFloat6_Camera* out, float mul);
/* 076064 */ void ftCamera_80076064(Fighter*);
/* 0761C8 */ void ftCamera_UpdateCameraBox(HSD_GObj* gobj);
/* 0762F4 */ void ftCamera_800762F4(HSD_GObj* gobj);
/* 076320 */ void ftCamera_80076320(HSD_GObj* gobj);
#define GALE01_0CF138
/* 0CF138 */ float ftCo_CalcYScaledKnockback(float*, float, float, float);
/* 0CF6E8 */ M2C_UNK ftCo_800CF6E8();
/* 0D0CBC */ M2C_UNK ftCo_800D0CBC();
/* 0D0EC8 */ float ftCo_800D0EC8(Fighter* fp);
/* 0D0FA0 */ void ftCo_800D0FA0(Fighter_GObj* gobj);
/* 0D105C */ void ftCo_800D105C(Fighter_GObj* gobj);
#define GALE01_081298
/* 081298 */ bool ftCliffCommon_80081298(ftCo_GObj* gobj);
/* 081370 */ void ftCliffCommon_80081370(ftCo_GObj* gobj);
/* 081504 */ void ftCo_CliffCatch_Anim(ftCo_GObj* gobj);
/* 081540 */ void ftCo_CliffCatch_IASA(ftCo_GObj* gobj);
/* 081544 */ void ftCo_CliffCatch_Phys(ftCo_GObj* gobj);
/* 0815E4 */ void ftCo_CliffCatch_Coll(ftCo_GObj* gobj);
/* 081644 */ void ftCo_Cliff_Cam(ftCo_GObj* gobj);
#define GALE01_0BFE6C
/* 0BFE6C */ void ftCo_Sleep_Anim(ftCo_GObj* gobj);
/* 0BFE70 */ void ftCo_Sleep_IASA(ftCo_GObj* gobj);
/* 0BFFAC */ void ftCo_800BFFAC(Fighter* fp);
/* 0BFFD0 */ bool ftCo_800BFFD0(Fighter*, enum_t, bool);
/* 0C0074 */ void ftCo_800C0074(Fighter* fp);
/* 0C0098 */ M2C_UNK ft_800C0098();
/* 0C0134 */ void ftCo_800C0134(Fighter* fp);
/* 0C0200 */ void ftCo_800C0200(Fighter* fp, int);
/* 0C0358 */ void ftCo_800C0358(Fighter* fp, Fighter*, s32);
/* 0C0408 */ void ftCo_800C0408(Fighter_GObj* gobj);
#define GALE01_0763C0
/* 0763C0 */ void ftColl_800763C0(Fighter_GObj* attacker, Fighter_GObj* victim,
enum_t attackID);
/* 076444 */ void ftColl_80076444(Fighter_GObj* attacker,
Fighter_GObj* victim);
/* 07646C */ void ftColl_8007646C(Fighter_GObj* attackItem,
Fighter_GObj* victim);
/* 0764DC */ void ftColl_800764DC(Fighter_GObj* gobj);
/* 076528 */ void ftColl_80076528(Fighter_GObj* gobj);
/* 0765AC */ void ftColl_800765AC(Fighter_GObj* victim);
/* 0765E0 */ void ftColl_800765E0(void);
/* 0765F0 */ float ftColl_800765F0(Fighter* fp, Fighter_GObj* victim,
float unk_floatvar);
/* 076640 */ bool ftColl_80076640(Fighter*, float*);
/* 076764 */ void ftColl_80076764(int, enum_t, Fighter_GObj*, DynamicsDesc*,
Fighter* fp, HurtCapsule*);
/* 0768A0 */ void ftColl_800768A0(Fighter* fp, HitCapsule* dst);
/* 07699C */ bool ftColl_8007699C(Fighter*, HitCapsule*, Fighter*,
HitCapsule*);
/* 076CBC */ void ftColl_80076CBC(Fighter*, HitCapsule*, Fighter*);
/* 076ED8 */ bool ftColl_80076ED8(Fighter* fp0, HitCapsule* hit0, Fighter* fp1,
HitCapsule* hit1);
/* 077464 */ M2C_UNK ftColl_80077464();
/* 077688 */ void ftColl_80077688(Item*, HitCapsule*, Fighter*, Vec3*, f32);
/* 077970 */ M2C_UNK ftColl_80077970();
/* 077C60 */ M2C_UNK ftColl_80077C60();
/* 078384 */ void ftColl_80078384(Fighter*, HurtCapsule*, HitCapsule*);
/* 078488 */ void ftColl_80078488(Fighter*);
/* 0784B4 */ M2C_UNK ftColl_800784B4(M2C_UNK, M2C_UNK, M2C_UNK);
/* 078538 */ M2C_UNK ftColl_80078538();
/* 07861C */ M2C_UNK ftColl_8007861C(bool, Fighter_GObj* gobj, int, int, int,
u32, int, M2C_UNK, int);
/* 078710 */ M2C_UNK ftColl_80078710();
/* 078754 */ void ftColl_80078754(Fighter_GObj*, Fighter_GObj*, bool);
/* 0787B4 */ M2C_UNK ftColl_800787B4();
/* 0788D4 */ void ftColl_800788D4(Fighter_GObj* gobj);
/* 07891C */ void ftColl_8007891C(Fighter_GObj*, Fighter_GObj*, float);
/* 078998 */ M2C_UNK ftColl_80078998();
/* 078A2C */ void ftColl_80078A2C(Fighter_GObj*);
/* 078C70 */ void ftColl_80078C70(Fighter_GObj*);
/* 07925C */ void ftColl_8007925C(Fighter_GObj*);
/* 079AB0 */ M2C_UNK ftColl_80079AB0();
/* 079C70 */ float ftColl_80079C70(Fighter*, Fighter*, void*, int);
/* 079EA8 */ float ftColl_80079EA8(Fighter*, HitCapsule*, int);
// /* 07A06C */ static void ftColl_8007A06C(float facing_dir, DmgLogEntry**
// log,
// int idx, bool);
/* 076808 */ static void ftColl_80076808(Fighter* fp, HitCapsule* hit, int,
void* victim, bool);
/* 07AB48 */ void ftColl_8007AB48(Fighter_GObj*);
/* 07AB80 */ void ftColl_8007AB80(Fighter_GObj*);
/* 07ABD0 */ void ftColl_8007ABD0(HitCapsule*, u32 damageAmount,
Fighter_GObj*);
/* 07AC68 */ bool ftColl_8007AC68(uint kb_angle);
/* 07AC9C */ void ftColl_8007AC9C(HitCapsule*, int, Fighter_GObj*);
/* 07AD18 */ void ftColl_8007AD18(ftCo_Fighter* fp, HitCapsule*);
/* 07AE80 */ void ftColl_8007AE80(Fighter_GObj*);
/* 07AEE0 */ void ftColl_8007AEE0(Fighter_GObj*);
/* 07AEF8 */ void ftColl_8007AEF8(Fighter_GObj*);
/* 07AF10 */ void ftColl_8007AF10(Fighter_GObj*);
/* 07AF28 */ void ftColl_8007AF28(Fighter_GObj* gobj);
/* 07AF60 */ void ftColl_8007AF60(Fighter_GObj*);
/* 07AFC8 */ void ftColl_8007AFC8(Fighter_GObj* gobj, int hit_idx);
/* 07AFF8 */ void ftColl_8007AFF8(Fighter_GObj*);
/* 07B064 */ void ftColl_8007B064(Fighter_GObj* gobj, enum_t);
/* 07B0C0 */ void ftColl_8007B0C0(Fighter_GObj*, HurtCapsuleState);
/* 07B128 */ void ftColl_8007B128(Fighter_GObj* gobj, int bone_id,
HurtCapsuleState state);
/* 07B1B8 */ void ftColl_8007B1B8(Fighter_GObj* gobj, ShieldDesc* shield,
HSD_GObjEvent cb);
/* 07B23C */ void ftColl_CreateReflectHit(Fighter_GObj*, ReflectDesc*,
HSD_GObjEvent on_reflect);
/* 07B2C4 */ void ftColl_CreateAbsorbHit(Fighter_GObj*, AbsorbDesc*);
/* 07B320 */ void ftColl_8007B320(Fighter_GObj*);
/* 07B4E0 */ void ftColl_8007B4E0(Fighter_GObj*);
/* 07B5AC */ void ftColl_8007B5AC(ftCo_Fighter* fp, HurtCapsule*,
struct UNK_SAMUS_S2*);
/* 07B62C */ void ftColl_8007B62C(Fighter_GObj*, bool);
/* 07B6A0 */ void ftColl_8007B6A0(Fighter_GObj* gobj);
/* 07B6EC */ void ftColl_8007B6EC(Fighter_GObj*);
/* 07B760 */ void ftColl_8007B760(Fighter_GObj*, int);
/* 07B7A4 */ void ftColl_8007B7A4(Fighter_GObj* gobj, int);
/* 07B7FC */ void ftColl_8007B7FC(Fighter*, int);
/* 07B868 */ s32 ftColl_8007B868(Fighter_GObj* gobj);
/* 07B8A8 */ void ftColl_8007B8A8(HitCapsule*, Vec3*);
/* 07B8CC */ void ftColl_8007B8CC(Fighter*, Fighter_GObj*);
/* 07B8E8 */ void ftColl_8007B8E8(Fighter_GObj*);
/* 07B924 */ void ftColl_GetWindOffsetVec(Fighter_GObj*, Vec3* out_wind);
/* 07BA0C */ void ftColl_8007BA0C(Fighter_GObj*);
/* 07BAC0 */ void ftColl_8007BAC0(Fighter_GObj*);
/* 07BBCC */ float ftColl_8007BBCC(Fighter_GObj* gobj);
/* 07BC90 */ void ftColl_8007BC90(Fighter_GObj*);
/* 07BE3C */ void ftColl_8007BE3C(Fighter_GObj*);
#define GALE01_085560
struct ftData_80086060_arg0 {
u32 unk0;
s32 unk4;
s32 unk8;
u8 unkC;
u8 pad[0x20];
s32 unk2C;
};
/* 085560 */ void ftData_80085560(int idx, int increment);
/* 0855C8 */ void ftData_800855C8(enum_t id, int slot);
/* 08572C */ void ftData_8008572C(s32);
/* 08578C */ void ftData_8008578C(enum_t id, int slot);
/* 0857E0 */ void ftData_800857E0(bool);
/* 085820 */ void ftData_80085820(FighterKind, int costume_id);
/* 0858E4 */ void ftData_800858E4(FighterKind, int costume_id);
/* 0859A8 */ void ftData_800859A8(Fighter*);
/* 085A14 */ void ftData_80085A14(bool);
/* 085B10 */ void ftData_80085B10(Fighter*);
/* 085B98 */ void ftData_80085B98(Fighter*, int, int);
/* 085CD8 */ void ftData_80085CD8(Fighter*, Fighter*, enum_t msid);
/* 085E50 */ u32 ftData_80085E50(Fighter*, enum_t msid);
/* 085FD4 */ struct ftData_80085FD4_ret* ftData_80085FD4(Fighter* fp,
FtMotionId msid);
/* 086060 */ Fighter* ftData_80086060(struct ftData_80086060_arg0* arg0);
/* 3C10D0 */ extern Event ftData_Table_Unk1[FTKIND_MAX];
/* 3C1154 */ extern HSD_GObjEvent ftData_OnLoad[FTKIND_MAX];
/* 3C11D8 */ extern HSD_GObjEvent ftData_OnDeath[FTKIND_MAX];
/* 3C125C */ extern HSD_GObjEvent ftData_OnUserDataRemove[FTKIND_MAX];
/* 3C13E8 */ extern HSD_GObjEvent ftData_SpecialS[FTKIND_MAX];
/* 3C146C */ extern HSD_GObjEvent ftData_SpecialAirHi[FTKIND_MAX];
/* 3C14F0 */ extern HSD_GObjEvent ftData_SpecialAirLw[FTKIND_MAX];
/* 3C1574 */ extern HSD_GObjEvent ftData_SpecialAirS[FTKIND_MAX];
/* 3C15F8 */ extern HSD_GObjEvent ftData_SpecialAirN[FTKIND_MAX];
/* 3C1808 */ extern HSD_GObjEvent ftData_OnAbsorb[FTKIND_MAX];
/* 3C188C */ extern Fighter_ItemEvent ftData_OnItemPickupExt[FTKIND_MAX];
/* 3C1DB4 */ extern HSD_GObjEvent ftData_UnkMotionStates3[FTKIND_MAX];
/* 3C1E38 */ extern HSD_GObjEvent ftData_UnkMotionStates4[FTKIND_MAX];
/* 3C20CC */ extern Fighter_UnkMtxEvent ftData_UnkMtxFunc0[FTKIND_MAX];
/* 3C2150 */ extern ftData_UnkModelStruct ftData_UnkIntBoolFunc0;
/* 3C2468 */ extern Fighter_DemoStrings* ftData_803C2468[FTKIND_MAX];
/* 3C24EC */ extern Fighter_MotionFileStringGetter ftData_803C24EC[FTKIND_MAX];
/* 3C2570 */ extern Fighter_UnkPtrEvent ftData_UnkDemoCallbacks0[FTKIND_MAX];
/* 3C25F4 */ extern ftData_UnkCountStruct ftData_UnkIntPairs[FTKIND_MAX];
/* 3C26FC */ extern s8 ftData_UnkBytePerCharacter[FTKIND_MAX];
/* 3C2800 */ extern MotionState ftData_MotionStateList[ftCo_MS_Count];
/* 3C52A0 */ extern MotionState ftData_803C52A0[14];
#define GALE01_0BE7E0
#define MELEE_PL_FORWARD_H
#define PL_SLOT_MAX 6
typedef struct pl_800386D8_t pl_800386D8_t;
typedef struct plAllocInfo2 plAllocInfo2;
/* 0BE7E0 */ Fighter_GObj* ftDemo_CreateFighter(plAllocInfo2* alloc_info);
/* 0BEB28 */ void ftDemo_ObjAllocInit(void);
/* 0BEB60 */ void ftDemo_SetArchiveData(int pairs_idx, HSD_Archive* arg1,
int arr_idx);
/* 0BEC08 */ char* ftDemo_GetMotionFileString(int arg0, int arg1);
/* 0BEC74 */ void ftDemo_SetFacingDirection(Fighter_GObj* gobj,
float facing_dir);
/* 3C1364 */ extern MotionState* ftData_UnkMotionStates0[FTKIND_MAX];
#define GALE01_0C0658
/* 0C0658 */ ftDeviceUnk2* ftCo_800C0658(Fighter* fp);
/* 0C0674 */ ftDeviceUnk2* ftCo_800C0674(Fighter_GObj* gobj);
/* 0C0694 */ enum_t ftCo_800C0694(Fighter* fp);
/* 0C06B4 */ int ftCo_800C06B4(Fighter* fp);
/* 0C06C0 */ void ftCo_800C06C0(void);
/* 0C06E8 */ M2C_UNK ftCo_800C06E8();
/* 0C0764 */ M2C_UNK ftCo_800C0764();
/* 0C07F8 */ void ftCo_800C07F8(M2C_UNK arg0, int arg1, int arg2);
/* 459A68 */ extern struct ftDeviceUnk3 ft_80459A68[4];
/* 459A74 */ extern struct ftDeviceUnk5 ftDevice_BuryThings[2];
/* 459A8C */ extern M2C_UNK ft_80459A8C;
/* 4D6570 */ extern int ft_804D6570;
/* 4D6574 */ extern int ftDevice_BuryThingCount;
/* 4D6578 */ extern struct ftDeviceUnk4 ft_804D6578;
#define GALE01_08051C
/* 08051C */ MtxPtr ftDrawCommon_8008051C(HSD_GObj*, MtxPtr);
/* 0805C8 */ void ftDrawCommon_800805C8(HSD_GObj* gobj, s32 arg1, s32 arg2);
/* 080C28 */ void ftDrawCommon_80080C28(HSD_GObj* gobj, int arg1);
/* 080E18 */ void ftDrawCommon_80080E18(HSD_GObj*, int);
/* 081118 */ void ftDrawCommon_80081118(void);
/* 081140 */ void ftDrawCommon_80081140(void);
/* 081168 */ void ftDrawCommon_80081168(void);
/* 081200 */ void ftDrawCommon_80081200(void);
#define GALE01_09CB40
/* 09CF84 */ void ftCo_8009CF84(Fighter* fp);
/* 09D074 */ void ftCo_8009D074(Fighter* fp);
/* 09DC54 */ void ftCo_8009DC54(Fighter* fp);
/* 09E0A8 */ void ftCo_8009E0A8(HSD_GObj* gobj);
/* 09E0D4 */ void ftCo_UnloadDynamicBones(Fighter* fp);
/* 09E140 */ void ftCo_8009E140(Fighter* fp, bool);
/* 09E318 */ enum_t ftCo_8009E318(Fighter_GObj*, Fighter_Part, float);
/* 09E714 */ bool ftCo_8009E714(Fighter_GObj* gobj, Fighter_Part part,
int arg2, float x, float y, float arg5,
float arg6, float arg7);
/* 09E7B4 */ void ftCo_8009E7B4(Fighter* fp, u8*);
/* 09EAF8 */ void ftCo_8009EAF8(HSD_GObj* gobj);
/// @todo
/* 09CB40 */ static void ftCo_8009CB40(Fighter* fp, ssize_t bone_idx, bool,
Fighter_Part);
/* 09D18C */ static void ftCo_8009D18C(Fighter* fp);
/* 09D2A4 */ static void ftCo_8009D2A4(Fighter* fp);
/* 09D3BC */ static void ftCo_8009D3BC(Fighter* fp);
/* 09D4D4 */ static void ftCo_8009D4D4(Fighter* fp);
/* 09D5EC */ static void ftCo_8009D5EC(Fighter* fp);
/* 09D704 */ static void ftCo_8009D704(Fighter* fp);
/* 09D81C */ static void ftCo_8009D81C(Fighter* fp);
/* 09D920 */ static void ftCo_8009D920(Fighter* fp);
/* 09DA38 */ static void ftCo_8009DA38(ftKb_Fighter* fp);
/* 09DB50 */ static void ftCo_8009DB50(Fighter* fp);
/* 09DD94 */ static void ftCo_8009DD94(Fighter_GObj*, bool);
/* 09E1D4 */ static HSD_JObj* ftCo_8009E1D4(HSD_JObj*, HSD_JObj*, HSD_JObj*);
/* 09E4A8 */ static void ftCo_8009E4A8(Fighter* fp);
/* 09E614 */ static void ftCo_8009E614(Fighter* fp);
#define GALE01_0860C4
/* 0860C4 */ s32 ftLib_800860C4(void);
/* 0860E8 */ bool ftLib_800860E8(void);
/* 086140 */ bool ftLib_80086140(void);
/* 086198 */ HSD_GObj* ftLib_80086198(HSD_GObj*);
/* 08627C */ HSD_GObj* ftLib_8008627C(Vec3* pos, HSD_GObj*);
/* 086368 */ HSD_GObj* ftLib_80086368(Vec3*, HSD_GObj*, float);
/* 0864A8 */ float ftLib_800864A8(Vec3*, HSD_GObj*);
/* 0865C0 */ float ftLib_800865C0(HSD_GObj*);
/* 0865CC */ s32 ftLib_800865CC(HSD_GObj*);
/* 0865D8 */ void ftLib_800865D8(HSD_GObj*, float*, float*);
/* 0865F0 */ void* ftLib_800865F0(HSD_GObj*);
/* 086630 */ void* ftLib_80086630(Fighter_GObj*, Fighter_Part part);
/* 086644 */ void ftLib_80086644(HSD_GObj*, Vec3*);
/* 086664 */ void ftLib_80086664(HSD_GObj*, Vec3*);
/* 086684 */ void ftLib_80086684(HSD_GObj*, Vec3*);
/* 0866A4 */ void ftLib_SetScale(HSD_GObj*, float);
/* 0866DC */ void ftLib_800866DC(HSD_GObj*, Vec3*);
/* 086724 */ void ftLib_80086724(HSD_GObj*, HSD_GObj*);
/* 086764 */ void ftLib_80086764(HSD_GObj*);
/* 086794 */ HSD_GObj* ftLib_80086794(HSD_GObj*);
/* 0867A0 */ bool ftLib_800867A0(HSD_GObj*, HSD_GObj*);
/* 0867CC */ HSD_GObj* ftLib_800867CC(HSD_GObj*);
/* 0867D8 */ bool ftLib_800867D8(HSD_GObj*);
/* 0867E8 */ void ftLib_800867E8(HSD_GObj*);
/* 086824 */ void ftLib_80086824(void);
/* 08688C */ void ftLib_8008688C(HSD_GObj*);
/* 0868A4 */ void ftLib_800868A4(void);
/* 0868D4 */ bool ftLib_800868D4(HSD_GObj*, HSD_GObj*);
/* 086960 */ bool ftLib_80086960(HSD_GObj* gobj);
/* 086984 */ CollData* ftLib_80086984(HSD_GObj*);
/* 086990 */ void ftLib_80086990(HSD_GObj*, Vec3*);
/* 0869D4 */ float ftLib_800869D4(HSD_GObj*);
/* 0869F8 */ float ftLib_800869F8(HSD_GObj*);
/* 086A0C */ float ftLib_80086A0C(HSD_GObj*);
/* 086A18 */ bool ftLib_80086A18(HSD_GObj*);
/* 086A4C */ void ftLib_80086A4C(HSD_GObj*, float);
/* 086A58 */ bool ftLib_80086A58(HSD_GObj*, S32Vec2*);
/* 086A8C */ bool ftLib_80086A8C(HSD_GObj*);
/* 086B64 */ bool ftLib_80086B64(HSD_GObj*);
/* 086B74 */ CameraBox* ftLib_80086B74(HSD_GObj*);
/* 086B80 */ float ftLib_80086B80(HSD_GObj*);
/* 086B90 */ void ftLib_80086B90(HSD_GObj*, Vec3* v);
/* 086BB4 */ void ftLib_80086BB4(HSD_GObj*);
/* 086BE0 */ u8 ftLib_80086BE0(HSD_GObj*);
/* 086BEC */ void ftLib_80086BEC(HSD_GObj*, Vec3*);
/* 086C0C */ enum_t ftLib_80086C0C(HSD_GObj*);
/* 086C18 */ void ftLib_80086C18(HSD_GObj*, s32, s32);
/* 086C9C */ void ftLib_80086C9C(s32, s32);
/* 086D40 */ void ftLib_80086D40(HSD_GObj*, s32, s32);
/* 086DC4 */ void ftLib_80086DC4(s32, s32);
/* 086E68 */ void ftLib_80086E68(HSD_GObj*);
/* 086EB4 */ s32 ftLib_80086EB4(HSD_GObj*);
/* 086EC0 */ bool ftLib_80086EC0(HSD_GObj*);
/* 086ED0 */ bool ftLib_80086ED0(HSD_GObj*);
/* 086F4C */ bool ftLib_80086F4C(HSD_GObj*);
/* 086F80 */ float ftLib_80086F80(HSD_GObj*);
/* 086FA8 */ bool ftLib_80086FA8(HSD_GObj*);
/* 086FD4 */ bool ftLib_80086FD4(HSD_GObj*, HSD_GObj*);
/* 08701C */ bool ftLib_8008701C(HSD_GObj*);
/* 08702C */ void ftLib_8008702C(s32);
/* 087050 */ void ftLib_80087050(s32);
/* 087074 */ bool ftLib_80087074(HSD_GObj*, Vec3*);
/* 0870BC */ bool ftLib_800870BC(HSD_GObj*, void**);
/* 0870F0 */ void ftLib_800870F0(HSD_GObj*, s32);
/* 087120 */ s32 ftLib_80087120(HSD_GObj*);
/* 087140 */ void ftLib_80087140(HSD_GObj*);
/* 0871A8 */ void ftLib_800871A8(Fighter_GObj*, Item_GObj*);
/* 087284 */ bool ftLib_80087284(HSD_GObj*);
/* 0872A4 */ FighterKind ftLib_800872A4(HSD_GObj*);
/* 0872B0 */ void* ftLib_800872B0(HSD_GObj*);
/* 0872BC */ bool ftLib_800872BC(HSD_GObj*);
/* 087300 */ s32 ftLib_80087300(HSD_GObj*);
/* 08730C */ s32 ftLib_8008730C(HSD_GObj*);
/* 08731C */ s32 ftLib_8008731C(HSD_GObj*);
/* 08732C */ bool ftLib_8008732C(HSD_GObj*);
/* 087354 */ bool ftLib_80087354(HSD_GObj*);
/* 08737C */ bool ftLib_8008737C(HSD_GObj*);
/* 0873A4 */ bool ftLib_800873A4(HSD_GObj*);
/* 0873CC */ bool ftLib_800873CC(HSD_GObj*);
/* 0873F4 */ bool ftLib_800873F4(HSD_GObj*);
/* 08741C */ HSD_GObj* ftLib_8008741C(u32);
/* 087454 */ float ftLib_80087454(HSD_GObj*);
/* 087460 */ u32 ftLib_80087460(HSD_GObj*);
/* 08746C */ s32 ftLib_8008746C(HSD_GObj*);
/* 0874BC */ s32 ftLib_800874BC(HSD_GObj*);
/* 0874CC */ void ftLib_800874CC(HSD_GObj*, void*, s32);
/* 087508 */ void ftLib_80087508(s8, u8);
/* 087574 */ void ftLib_80087574(s8);
/* 087610 */ void ftLib_80087610(u8);
/* 0876B4 */ void ftLib_800876B4(HSD_GObj*);
/* 0876D4 */ bool ftLib_800876D4(HSD_GObj*);
/* 0876F4 */ s32 ftLib_800876F4(HSD_GObj*);
/* 087700 */ s32 ftLib_80087700(HSD_GObj*);
/* 08770C */ void ftLib_8008770C(HSD_GObj*, void* dst);
/* 087744 */ void ftLib_80087744(HSD_GObj*, void* dst);
/* 08777C */ void ftLib_8008777C(HSD_GObj*);
/* 0877D4 */ bool ftLib_800877D4(HSD_GObj*);
#define GALE01_0CDAB4
/* 0CDAB4 */ M2C_UNK ftCo_800CDAB4();
/* 0CDB14 */ void ftCo_LipstickSwing_Anim(ftCo_GObj* gobj);
/* 0CDB34 */ void ftCo_LipstickSwing_IASA(ftCo_GObj* gobj);
/* 0CDB54 */ void ftCo_LipstickSwing_Phys(ftCo_GObj* gobj);
/* 0CDB74 */ void ftCo_LipstickSwing_Coll(ftCo_GObj* gobj);
/* 0CDB9C */ M2C_UNK ft_800CDB9C();
#define GALE01_0BF260
/* 0BF260 */ void ftMaterial_800BF260(void);
/* 0BF2B8 */ void ftMaterial_800BF2B8(HSD_MObj* mobj, u32 rendermode);
/* 0BF534 */ HSD_TExp* ftMaterial_800BF534(Fighter* fp, HSD_MObj* mobj,
HSD_TExp* texp, u32 rendermode);
/* 0BF6BC */ void ftMaterial_800BF6BC(Fighter* fp, HSD_MObj* mobj,
HSD_TExp* texp);
/* 0BFB4C */ void ftMaterial_800BFB4C(ftCo_GObj* gobj, GXColor* diffuse);
/* 0BFD04 */ void ftMaterial_800BFD04(ftCo_GObj* gobj);
/* 0BFD9C */ void ftMaterial_800BFD9C(ftCo_GObj* gobj);
/* 3C6980 */ extern HSD_MObjInfo ftMObj;
#define GALE01_0C8170
/* 0C8170 */ M2C_UNK ft_800C8170();
/* 0C8348 */ void ftCo_800C8348(ftCo_GObj*, s32, s32);
/* 0C8438 */ void ftCo_800C8438(ftCo_GObj* gobj);
/* 0C8540 */ void ftCo_800C8540(ftCo_GObj* gobj);
/* 0C85B8 */ M2C_UNK ft_800C85B8();
#define GALE01_0735BC
/* 0735BC */ void ftParts_JObjMakePositionMtx(HSD_JObj* jobj, Mtx mtx,
Mtx rmtx);
/* 073700 */ void ftParts_JObjInfoInit(void);
/* 073758 */ void ftParts_80073758(HSD_JObj*);
/* 073780 */ s32 ftParts_IntpJObjLoad(HSD_JObj* jobj, HSD_Joint* joint,
HSD_JObj* parent);
/* 0737D8 */ void ftParts_IntpJObjInfoInit(void);
/* 073830 */ void ftParts_80073830(void);
/* 0739B8 */ void ftParts_800739B8(void);
/* 073CA8 */ void ftParts_80073CA8(void);
/* 074048 */ void ftParts_PObjSetupMtx(HSD_PObj* pobj, Mtx vmtx, Mtx pmtx,
u32 rendermode);
/* 0740E4 */ void ftParts_PObjInfoInit(void);
/* 074148 */ void ftParts_80074148(void);
/* 074170 */ void ftParts_80074170(void);
/* 074194 */ void ftParts_80074194(Fighter* fighter, FighterBone* bone,
HSD_JObj* jobj, u32* dobj_index,
u32 tree_depth);
/* 0743E0 */ void ftParts_SetupParts(HSD_GObj* fighter_obj);
/* 0743E0 */ void func_800743E0(void);
/* 07462C */ void ftParts_8007462C(void);
/* 07482C */ void ftParts_8007482C(void);
/* 07487C */ void ftParts_8007487C(M2C_UNK item, M2C_UNK, u8 costume_id, M2C_UNK,
M2C_UNK);
/* 0749CC */ void ftParts_800749CC(HSD_GObj*);
/* 074A4C */ void ftParts_80074A4C(HSD_GObj*, enum_t, enum_t);
/* 074A74 */ s32 ftParts_80074A74(HSD_GObj*, s32);
/* 074A8C */ void ftParts_80074A8C(HSD_GObj*);
/* 074ACC */ void ftParts_80074ACC(ftCo_GObj* gobj);
/* 074B0C */ void ftParts_80074B0C(HSD_GObj*, int, int);
/* 074B6C */ void ftParts_80074B6C(void);
/* 074CA0 */ void ftParts_80074CA0(u32*, s32, u32*);
/* 074D7C */ void ftParts_80074D7C(u32*, s32, u32*);
/* 074E58 */ void ftParts_80074E58(Fighter*);
/* 07500C */ Fighter_Part ftParts_8007500C(Fighter*, Fighter_Part);
/* 075028 */ u8 ftParts_80075028(size_t to_table_idx, size_t from_table_idx,
size_t joint_idx);
/* 07506C */ u32 ftParts_8007506C(s32 ftkind, u32 part);
/* 0750C8 */ void ftParts_800750C8(Fighter*, enum_t, bool);
/* 075240 */ void ftParts_80075240(void);
/* 075304 */ void ftParts_80075304(void);
/* 0753D4 */ void ftParts_800753D4(Fighter*, s32, M2C_UNK);
/* 0755E8 */ void ftParts_800755E8(Fighter*, u8*);
/* 075650 */ void ftParts_80075650(HSD_GObj* gobj, HSD_JObj*, u32*);
/* 07584C */ void ftParts_JObjSetRotation(HSD_JObj*, Quaternion*);
/* 07592C */ void ftParts_8007592C(Fighter*, s32, float);
/* 075AF0 */ void ftParts_80075AF0(Fighter*, s32, float);
/* 075CB4 */ void ftParts_80075CB4(Fighter*, s32, float);
/* 075E78 */ float ftParts_80075E78(Fighter*, bool);
/* 075F48 */ float ftParts_80075F48(Fighter*, s32);
#define GALE01_0CD82C
/* 0CD82C */ M2C_UNK ftCo_800CD82C();
/* 0CD88C */ void ftCo_StarRodSwing_Anim(ftCo_GObj* gobj);
/* 0CD8AC */ void ftCo_StarRodSwing_IASA(ftCo_GObj* gobj);
/* 0CD8CC */ void ftCo_StarRodSwing_Phys(ftCo_GObj* gobj);
/* 0CD8EC */ void ftCo_StarRodSwing_Coll(ftCo_GObj* gobj);
/* 0CD914 */ M2C_UNK ft_800CD914();
#define GALE01_0CCE94
/* 0CCE94 */ void ftCo_FallAerial_Coll(ftCo_GObj* gobj);
/* 0CCF58 */ void ftCo_Attack_800CCF58(ftCo_GObj* gobj, enum_t);
#define GALE01_08A698
typedef struct WaitStruct {
union {
struct {
int* x;
int* y;
} p;
struct {
int x;
int y;
} i;
} u;
} WaitStruct;
/* 08A698 */ bool ftCo_8008A698(ftCo_Fighter* fp);
/* 08A6D8 */ void ftCo_8008A6D8(ftCo_GObj* gobj, s32 anim_id);
/* 08A7A8 */ void ftCo_8008A7A8(ftCo_GObj* gobj, WaitStruct* arg1);
/* 3C54A8 */ extern char ftWaitAnim_803C54A8[];
/* 3C54C4 */ extern char ftWaitAnim_803C54C4[];
#define GALE01_0DFBF8
/* 0DFBF8 */ FtWalkType ftWalkCommon_GetWalkType(ftCo_GObj* gobj);
/* 0DFC70 */ bool ftWalkCommon_800DFC70(ftCo_GObj* gobj);
/* 0DFCA4 */ void
ftWalkCommon_800DFCA4(ftCo_GObj* gobj, FtMotionId msid, MotionFlags ms_flags,
float anim_start, float slow_anim_frame,
float middle_anim_frame, float fast_anim_frame,
float slow_anim_rate, float middle_anim_rate,
float fast_anim_rate, float accel_mul);
/* 0DFDDC */ void ftWalkCommon_800DFDDC(ftCo_GObj* gobj);
/* 0DFEC8 */ void ftWalkCommon_800DFEC8(ftCo_GObj* gobj,
void (*arg_cb)(ftCo_GObj*, float));
/* 0E0060 */ void ftWalkCommon_800E0060(ftCo_GObj* gobj);
#define GALE01_08169C
/* 08169C */ bool ftWallJump_8008169C(HSD_GObj* gobj);
#define MELEE_GM_FORWARD_H
typedef struct datetime datetime;
typedef struct GameRules GameRules;
typedef struct gm_8017DB6C_arg0_t gm_8017DB6C_arg0_t;
typedef struct gmMainLib_8015ED8C_arg0_t gmMainLib_8015ED8C_arg0_t;
typedef struct Placeholder_8016AE38_flags Placeholder_8016AE38_flags;
typedef struct Placeholder_8016AE38_flags_2 Placeholder_8016AE38_flags_2;
typedef struct lbl_8046B6A0_t lbl_8046B6A0_t;
typedef struct Placeholder_8016AE50_ret_val Placeholder_8016AE50_ret_val;
#define GALE01_1601C4
/* 1601C4 */ M2C_UNK gm_801601C4();
/* 160244 */ M2C_UNK gm_80160244();
/* 1602C0 */ M2C_UNK gm_801602C0();
/* 1603B0 */ M2C_UNK gm_801603B0();
/* 160400 */ M2C_UNK fn_80160400();
/* 160438 */ M2C_UNK gm_80160438();
/* 160474 */ M2C_UNK gm_80160474();
/* 1604DC */ M2C_UNK gm_801604DC();
/* 160564 */ M2C_UNK gm_80160564();
/* 1605EC */ M2C_UNK fn_801605EC();
/* 160638 */ M2C_UNK gm_80160638();
/* 1606A8 */ M2C_UNK fn_801606A8();
/* 160710 */ M2C_UNK fn_80160710();
/* 16075C */ M2C_UNK gm_8016075C();
/* 1607A8 */ M2C_UNK fn_801607A8();
/* 1607F4 */ M2C_UNK fn_801607F4();
/* 160854 */ void gm_80160854(void);
/* 160968 */ bool gm_80160968(void);
/* 160980 */ M2C_UNK gm_80160980();
/* 1609E0 */ M2C_UNK fn_801609E0();
/* 160A60 */ M2C_UNK gm_80160A60();
/* 160B40 */ M2C_UNK gm_80160B40();
/* 160C90 */ M2C_UNK gm_80160C90();
/* 160DE8 */ M2C_UNK fn_80160DE8();
/* 160F58 */ M2C_UNK fn_80160F58();
/* 161004 */ M2C_UNK fn_80161004();
/* 161154 */ M2C_UNK fn_80161154();
/* 161C90 */ M2C_UNK fn_80161C90();
/* 162068 */ M2C_UNK fn_80162068();
/* 162170 */ M2C_UNK fn_80162170();
/* 1623A4 */ M2C_UNK gm_801623A4();
/* 1623D8 */ M2C_UNK gm_801623D8();
/* 1623FC */ M2C_UNK gm_801623FC();
/* 16247C */ M2C_UNK gm_8016247C();
/* 162574 */ M2C_UNK gm_80162574();
/* 16260C */ M2C_UNK gm_8016260C();
/* 16279C */ M2C_UNK gm_8016279C();
/* 162800 */ M2C_UNK gm_80162800();
/* 1628C4 */ M2C_UNK gm_801628C4();
/* 162968 */ M2C_UNK gm_80162968();
/* 1629B4 */ M2C_UNK gm_801629B4();
/* 162A00 */ M2C_UNK gm_80162A00();
/* 162A4C */ M2C_UNK gm_80162A4C();
/* 162A98 */ M2C_UNK gm_80162A98();
/* 162B4C */ M2C_UNK gm_80162B4C();
/* 162B98 */ M2C_UNK gm_80162B98();
/* 162BD8 */ M2C_UNK gm_80162BD8();
/* 162BFC */ M2C_UNK fn_80162BFC();
/* 162C48 */ M2C_UNK gm_80162C48();
/* 162CCC */ M2C_UNK fn_80162CCC();
/* 162D1C */ M2C_UNK gm_80162D1C();
/* 162D6C */ M2C_UNK gm_80162D6C();
/* 162DD4 */ M2C_UNK gm_80162DD4();
/* 162DF8 */ M2C_UNK fn_80162DF8();
/* 162E44 */ M2C_UNK gm_80162E44();
/* 162EC8 */ M2C_UNK gm_80162EC8();
/* 162F18 */ M2C_UNK gm_80162F18();
/* 162F68 */ M2C_UNK gm_80162F68();
/* 162FD0 */ M2C_UNK gm_80162FD0();
/* 162FF4 */ M2C_UNK fn_80162FF4();
/* 163040 */ M2C_UNK gm_80163040();
/* 1630C4 */ M2C_UNK fn_801630C4();
/* 163114 */ M2C_UNK gm_80163114();
/* 163164 */ M2C_UNK gm_80163164();
/* 1631CC */ M2C_UNK gm_801631CC();
/* 1631F0 */ M2C_UNK gm_801631F0();
/* 163274 */ M2C_UNK gm_80163274();
/* 163298 */ M2C_UNK gm_80163298();
/* 16332C */ M2C_UNK gm_8016332C();
/* 163374 */ M2C_UNK gm_80163374();
/* 1634D4 */ M2C_UNK gm_801634D4();
/* 16365C */ M2C_UNK gm_8016365C();
/* 163690 */ M2C_UNK gm_80163690();
/* 1636D8 */ M2C_UNK gm_801636D8();
/* 163838 */ M2C_UNK gm_80163838();
/* 1639C0 */ M2C_UNK gm_801639C0();
/* 1639F4 */ M2C_UNK gm_801639F4();
/* 163A3C */ M2C_UNK gm_80163A3C();
/* 163B9C */ M2C_UNK gm_80163B9C();
/* 163D24 */ M2C_UNK fn_80163D24();
/* 163D74 */ M2C_UNK fn_80163D74();
/* 163DC4 */ M2C_UNK gm_80163DC4();
/* 163DE8 */ M2C_UNK gm_80163DE8();
/* 163E3C */ M2C_UNK gm_80163E3C();
/* 163E60 */ M2C_UNK gm_80163E60();
/* 163EB4 */ M2C_UNK gm_80163EB4();
/* 163ED8 */ M2C_UNK gm_80163ED8();
/* 163F2C */ M2C_UNK gm_80163F2C();
/* 163F50 */ M2C_UNK gm_80163F50();
/* 163FA4 */ M2C_UNK fn_80163FA4();
/* 16400C */ M2C_UNK gm_8016400C();
/* 164024 */ M2C_UNK gm_80164024();
/* 16403C */ M2C_UNK gm_8016403C();
/* 1640B0 */ M2C_UNK fn_801640B0();
/* 16419C */ M2C_UNK fn_8016419C();
/* 1641B4 */ M2C_UNK fn_801641B4();
/* 1641CC */ M2C_UNK gm_801641CC();
/* 1641E4 */ M2C_UNK gm_801641E4();
/* 164250 */ M2C_UNK gm_80164250();
/* 1642A0 */ M2C_UNK fn_801642A0();
/* 164330 */ M2C_UNK gm_80164330();
/* 164430 */ M2C_UNK gm_80164430();
/* 164504 */ M2C_UNK gm_80164504();
/* 164600 */ bool gm_80164600(void);
/* 16468C */ M2C_UNK gm_8016468C();
/* 1647D0 */ M2C_UNK gm_801647D0();
/* 1647F8 */ M2C_UNK gm_801647F8();
/* 164840 */ bool gm_80164840(u8);
/* 164910 */ M2C_UNK gm_80164910();
/* 164A0C */ M2C_UNK gm_80164A0C();
/* 164ABC */ bool gm_80164ABC(struct gmMainLib_8015ED8C_arg0_t*);
/* 164B48 */ M2C_UNK fn_80164B48();
/* 164F18 */ M2C_UNK gm_80164F18();
/* 16505C */ M2C_UNK gm_8016505C();
/* 165084 */ bool gm_80165084(void);
/* 1650E8 */ M2C_UNK fn_801650E8();
/* 165108 */ M2C_UNK fn_80165108();
/* 165190 */ M2C_UNK fn_80165190();
/* 1651FC */ M2C_UNK fn_801651FC();
/* 165268 */ M2C_UNK gm_80165268();
/* 165290 */ M2C_UNK gm_80165290();
/* 1652B0 */ M2C_UNK fn_801652B0();
/* 1652D8 */ M2C_UNK fn_801652D8();
/* 165388 */ M2C_UNK gm_80165388();
/* 1653C8 */ M2C_UNK gm_801653C8();
/* 1653E8 */ M2C_UNK fn_801653E8();
/* 165418 */ M2C_UNK fn_80165418();
/* 1654A0 */ M2C_UNK fn_801654A0();
/* 165548 */ M2C_UNK fn_80165548();
/* 1656A8 */ M2C_UNK fn_801656A8();
/* 16588C */ M2C_UNK fn_8016588C();
/* 165AC0 */ M2C_UNK fn_80165AC0();
/* 165D60 */ M2C_UNK fn_80165D60();
/* 165E7C */ M2C_UNK fn_80165E7C();
/* 165FA4 */ M2C_UNK fn_80165FA4();
/* 1661E0 */ M2C_UNK fn_801661E0();
/* 166378 */ M2C_UNK gm_80166378();
/* 166A98 */ M2C_UNK gm_80166A98();
/* 166CBC */ s32 gmCamera_801A2640(void);
/* 166CCC */ M2C_UNK gm_80166CCC();
/* 167140 */ M2C_UNK gm_80167140();
/* 167194 */ u8 fn_80167194(M2C_UNK arg0);
/* 16719C */ M2C_UNK fn_8016719C();
/* 167320 */ void gm_80167320(int slot, bool);
/* 167470 */ M2C_UNK gm_80167470();
/* 1674C4 */ M2C_UNK gm_801674C4();
/* 16758C */ M2C_UNK fn_8016758C();
/* 167638 */ M2C_UNK fn_80167638();
/* 1677C0 */ M2C_UNK gm_801677C0();
/* 1677E8 */ void gm_801677E8(s8 arg0);
/* 1677F0 */ u8 gm_801677F0(void);
/* 1677F8 */ M2C_UNK gm_801677F8();
/* 167858 */ M2C_UNK gm_80167858();
/* 1678F8 */ M2C_UNK gm_801678F8();
/* 16795C */ M2C_UNK gm_8016795C();
/* 167A14 */ M2C_UNK gm_80167A14();
/* 167A64 */ M2C_UNK gm_80167A64();
/* 167B50 */ M2C_UNK gm_80167B50();
/* 167BC8 */ M2C_UNK gm_80167BC8();
/* 167FC4 */ M2C_UNK gm_80167FC4();
/* 1685D4 */ M2C_UNK gm_801685D4();
/* 168638 */ M2C_UNK gm_80168638();
/* 168710 */ M2C_UNK gm_80168710();
/* 1688AC */ M2C_UNK gm_801688AC();
/* 168940 */ M2C_UNK gm_80168940();
/* 16895C */ M2C_UNK gm_8016895C();
/* 1689E4 */ M2C_UNK fn_801689E4();
/* 168A6C */ M2C_UNK fn_80168A6C();
/* 168B34 */ void gm_80168B34(void);
/* 168BF8 */ M2C_UNK gm_80168BF8();
/* 168C5C */ M2C_UNK gm_80168C5C();
/* 168E54 */ M2C_UNK fn_80168E54();
/* 168F2C */ M2C_UNK fn_80168F2C();
/* 168F7C */ M2C_UNK fn_80168F7C();
/* 168F88 */ M2C_UNK gm_80168F88();
/* 168FC4 */ M2C_UNK gm_80168FC4();
/* 169000 */ M2C_UNK fn_80169000();
/* 169238 */ M2C_UNK gm_80169238();
/* 169264 */ M2C_UNK gm_80169264();
/* 169290 */ M2C_UNK gm_80169290();
/* 1692BC */ M2C_UNK gm_801692BC();
/* 1692E8 */ void gm_801692E8(uint ticks, struct datetime* datetime);
/* 169370 */ u8 gm_80169370(s32);
/* 169384 */ u8 gm_80169384(void);
/* 169394 */ s32 gm_80169394(void);
/* 1693BC */ M2C_UNK gm_801693BC();
/* 169434 */ void fn_80169434(s32 arg0);
/* 169444 */ M2C_UNK fn_80169444();
/* 1694A0 */ M2C_UNK gm_801694A0();
/* 169520 */ void* gm_80169520(void);
/* 169530 */ void* gm_80169530(void);
/* 169540 */ void* gm_80169540(void);
/* 169550 */ M2C_UNK fn_80169550();
/* 169574 */ M2C_UNK fn_80169574();
/* 1695BC */ M2C_UNK fn_801695BC();
/* 1697FC */ M2C_UNK fn_801697FC();
/* 16989C */ M2C_UNK fn_8016989C();
/* 169900 */ M2C_UNK fn_80169900();
/* 169A84 */ M2C_UNK fn_80169A84();
/* 169C54 */ M2C_UNK fn_80169C54();
/* 169F50 */ M2C_UNK fn_80169F50();
/* 16A09C */ M2C_UNK fn_8016A09C();
/* 16A164 */ M2C_UNK gm_8016A164();
/* 16A1F8 */ M2C_UNK gm_8016A1F8();
/* 16A21C */ void gm_8016A21C(M2C_UNK arg0);
/* 16A22C */ M2C_UNK gm_8016A22C();
/* 16A404 */ void gm_8016A404(s32 arg0);
/* 16A414 */ void gm_8016A414(f32 arg8);
/* 16A424 */ void gm_8016A424(s8 arg0);
/* 16A434 */ M2C_UNK gm_8016A434();
/* 16A450 */ M2C_UNK fn_8016A450();
/* 16A46C */ M2C_UNK fn_8016A46C();
/* 16A488 */ M2C_UNK fn_8016A488();
/* 16A4C8 */ M2C_UNK fn_8016A4C8();
/* 16A92C */ M2C_UNK gm_8016A92C();
/* 16A944 */ M2C_UNK gm_8016A944();
/* 16A97C */ void* gm_8016A97C(void);
/* 16A98C */ M2C_UNK gm_8016A98C(void);
/* 16A998 */ M2C_UNK gm_8016A998();
/* 16A9E8 */ M2C_UNK gm_8016A9E8();
/* 16AC44 */ M2C_UNK gm_8016AC44();
/* 16AE38 */ lbl_8046B6A0_t* gm_8016AE38(void);
/* 16AE44 */ lbl_8046B6A0_t* gm_8016AE44(void);
/* 16AE50 */ Placeholder_8016AE38_flags_2* gm_8016AE50(void);
/* 16AE60 */ M2C_UNK fn_8016AE60();
/* 16AE80 */ bool gm_8016AE80(void);
/* 16AE94 */ f32 gm_8016AE94(void);
/* 16AEA4 */ u64 gm_8016AEA4(void);
/* 16AEB8 */ s32 gm_8016AEB8(void);
/* 16AEC8 */ bool gm_8016AEC8(void);
/* 16AEDC */ bool gm_8016AEDC(void);
/* 16AEEC */ bool gm_8016AEEC(void);
/* 16AEFC */ u16 gm_8016AEFC(void);
/* 16AF0C */ M2C_UNK gm_8016AF0C();
/* 16AF88 */ M2C_UNK gm_8016AF88();
/* 16B004 */ u16 gm_8016B004(void);
/* 16B014 */ bool gm_8016B014(void);
/* 16B094 */ M2C_UNK gm_8016B094();
/* 16B0B4 */ bool gm_8016B0B4(void);
/* 16B0D4 */ bool gm_8016B0D4(void);
/* 16B0E8 */ bool gm_8016B0E8(void);
/* 16B0FC */ bool gm_8016B0FC(void);
/* 16B110 */ bool gm_8016B110(void);
/* 16B124 */ bool gm_8016B124(void);
/* 16B138 */ M2C_UNK fn_8016B138();
/* 16B14C */ bool gm_8016B14C(void);
/* 16B168 */ bool gm_8016B168(void);
/* 16B184 */ M2C_UNK gm_8016B184();
/* 16B1A8 */ M2C_UNK gm_8016B1A8();
/* 16B1C4 */ bool gm_8016B1C4(void);
/* 16B1D8 */ bool gm_8016B1D8(void);
/* 16B1EC */ M2C_UNK gm_8016B1EC();
/* 16B204 */ M2C_UNK gm_8016B204();
/* 16B238 */ bool gm_8016B238(void);
/* 16B248 */ float gm_8016B248(void);
/* 16B258 */ M2C_UNK gm_8016B258();
/* 16B274 */ M2C_UNK gm_8016B274();
/* 16B2C8 */ M2C_UNK gm_8016B2C8();
/* 16B328 */ M2C_UNK gm_8016B328();
/* 16B33C */ void gm_8016B33C(s32 arg0);
/* 16B350 */ void gm_8016B350(s32 arg0);
/* 16B364 */ void gm_8016B364(s32 arg0);
/* 16B378 */ void gm_8016B378(s8 arg0);
/* 16B388 */ M2C_UNK fn_8016B388();
/* 16B3A0 */ bool gm_8016B3A0(void);
/* 16B3D8 */ bool gm_8016B3D8(void);
/* 16B41C */ bool gm_8016B41C(void);
/* 16B498 */ bool gm_8016B498(void);
/* 16B4BC */ M2C_UNK fn_8016B4BC();
/* 16B510 */ M2C_UNK fn_8016B510();
/* 16B558 */ M2C_UNK gm_8016B558();
/* 16B5B0 */ M2C_UNK fn_8016B5B0();
/* 16B6E8 */ M2C_UNK gm_8016B6E8();
/* 16B728 */ u8 fn_8016B728(void);
/* 16B738 */ M2C_UNK fn_8016B738();
/* 16B774 */ M2C_UNK gm_8016B774(void);
/* 16B784 */ M2C_UNK fn_8016B784();
/* 16B7B4 */ M2C_UNK fn_8016B7B4();
/* 16B7F8 */ M2C_UNK fn_8016B7F8();
/* 16B88C */ M2C_UNK fn_8016B88C();
/* 16B8D4 */ void gm_8016B8D4(s32, s32);
/* 16B918 */ M2C_UNK fn_8016B918();
/* 16BAF4 */ M2C_UNK fn_8016BAF4();
/* 16BBB4 */ M2C_UNK fn_8016BBB4();
/* 16BC74 */ M2C_UNK fn_8016BC74();
/* 16BE80 */ M2C_UNK gm_8016BE80();
/* 16BF74 */ M2C_UNK fn_8016BF74();
/* 16C0C8 */ M2C_UNK fn_8016C0C8();
/* 16C35C */ M2C_UNK fn_8016C35C();
/* 16C46C */ M2C_UNK fn_8016C46C();
/* 16C4F4 */ M2C_UNK fn_8016C4F4();
/* 16C5C0 */ bool gm_8016C5C0(int pl_slot);
/* 16C658 */ M2C_UNK gm_8016C658();
/* 16C6C0 */ /* static */ s32 gm_8016C6C0(Item_GObj*);
/* 16C6C0 */ s32 gm_8016C6C0(Item_GObj*);
/* 16C75C */ /* static */ M2C_UNK gm_8016C75C();
/* 16C75C */ M2C_UNK gm_8016C75C();
/* 16C7D0 */ M2C_UNK fn_8016C7D0();
/* 16C7F0 */ M2C_UNK fn_8016C7F0();
/* 16CA68 */ M2C_UNK fn_8016CA68();
/* 16CBE8 */ M2C_UNK fn_8016CBE8();
/* 16CD98 */ M2C_UNK fn_8016CD98();
/* 16CF4C */ M2C_UNK fn_8016CF4C();
/* 16CFE0 */ M2C_UNK fn_8016CFE0();
/* 16D32C */ M2C_UNK gm_8016D32C();
/* 16D538 */ M2C_UNK fn_8016D538();
/* 16D634 */ M2C_UNK fn_8016D634();
/* 16D800 */ M2C_UNK gm_8016D800();
/* 16D8AC */ M2C_UNK fn_8016D8AC();
/* 16DCC0 */ M2C_UNK fn_8016DCC0();
/* 16DEEC */ M2C_UNK fn_8016DEEC();
/* 16E124 */ M2C_UNK fn_8016E124();
/* 16E2BC */ M2C_UNK fn_8016E2BC();
/* 16E5C0 */ M2C_UNK fn_8016E5C0();
/* 16E730 */ M2C_UNK fn_8016E730();
/* 16E934 */ M2C_UNK gm_8016E934();
/* 16E9C8 */ M2C_UNK gm_8016E9C8();
/* 16EBC0 */ M2C_UNK gm_8016EBC0();
/* 16EC28 */ M2C_UNK gm_8016EC28();
/* 16ECE8 */ M2C_UNK gm_8016ECE8();
/* 16EDDC */ M2C_UNK gm_8016EDDC();
/* 16EF98 */ M2C_UNK fn_8016EF98();
/* 16F00C */ M2C_UNK gm_8016F00C();
/* 16F030 */ M2C_UNK fn_8016F030();
/* 16F088 */ M2C_UNK gm_8016F088();
/* 16F120 */ M2C_UNK gm_8016F120();
/* 16F140 */ M2C_UNK fn_8016F140();
/* 16F160 */ M2C_UNK fn_8016F160();
/* 16F180 */ M2C_UNK fn_8016F180();
/* 16F1B8 */ M2C_UNK gm_8016F1B8();
/* 16F1F0 */ M2C_UNK fn_8016F1F0();
/* 16F208 */ M2C_UNK gm_8016F208();
/* 16F280 */ M2C_UNK fn_8016F280();
/* 16F2F8 */ M2C_UNK gm_8016F2F8();
/* 16F344 */ M2C_UNK fn_8016F344();
/* 16F39C */ M2C_UNK fn_8016F39C();
/* 16F548 */ M2C_UNK fn_8016F548();
/* 16F740 */ M2C_UNK fn_8016F740();
/* 16F870 */ M2C_UNK fn_8016F870();
/* 16F9A8 */ M2C_UNK fn_8016F9A8();
/* 16FAD4 */ M2C_UNK fn_8016FAD4();
/* 16FFD4 */ M2C_UNK fn_8016FFD4();
/* 170110 */ M2C_UNK fn_80170110();
/* 1701A0 */ M2C_UNK gm_801701A0();
/* 1701AC */ M2C_UNK fn_801701AC();
/* 1701B8 */ u8 fn_801701B8(void);
/* 1701C0 */ M2C_UNK fn_801701C0();
/* 171A88 */ M2C_UNK fn_80171A88();
/* 171AD4 */ M2C_UNK fn_80171AD4();
/* 171B00 */ M2C_UNK fn_80171B00();
/* 171B2C */ M2C_UNK fn_80171B2C();
/* 171B64 */ M2C_UNK fn_80171B64();
/* 171BA4 */ M2C_UNK fn_80171BA4();
/* 171DC4 */ M2C_UNK fn_80171DC4();
/* 1720B4 */ M2C_UNK gm_801720B4();
/* 1720F8 */ M2C_UNK gm_801720F8();
/* 172140 */ M2C_UNK gm_80172140();
/* 172174 */ M2C_UNK gm_80172174();
/* 17219C */ M2C_UNK gm_8017219C();
/* 1721EC */ M2C_UNK gm_801721EC();
/* 1722BC */ M2C_UNK fn_801722BC();
/* 1722F4 */ M2C_UNK fn_801722F4();
/* 17232C */ M2C_UNK fn_8017232C();
/* 172380 */ M2C_UNK fn_80172380();
/* 1723D4 */ M2C_UNK fn_801723D4();
/* 172428 */ M2C_UNK fn_80172428();
/* 172478 */ M2C_UNK fn_80172478();
/* 1724C8 */ bool fn_801724C8(void);
/* 1724D0 */ M2C_UNK fn_801724D0();
/* 172504 */ M2C_UNK fn_80172504();
/* 172538 */ M2C_UNK fn_80172538();
/* 17256C */ M2C_UNK fn_8017256C();
/* 1725A8 */ M2C_UNK fn_801725A8();
/* 1725E4 */ M2C_UNK fn_801725E4();
/* 172624 */ M2C_UNK fn_80172624();
/* 172664 */ M2C_UNK fn_80172664();
/* 172698 */ M2C_UNK fn_80172698();
/* 1726CC */ M2C_UNK fn_801726CC();
/* 172700 */ M2C_UNK fn_80172700();
/* 172734 */ M2C_UNK fn_80172734();
/* 172768 */ M2C_UNK fn_80172768();
/* 17279C */ M2C_UNK fn_8017279C();
/* 17280C */ M2C_UNK fn_8017280C();
/* 172898 */ M2C_UNK gm_80172898();
/* 17297C */ M2C_UNK gm_8017297C();
/* 1729EC */ M2C_UNK gm_801729EC();
/* 172BC4 */ M2C_UNK gm_80172BC4();
/* 172C04 */ M2C_UNK gm_80172C04();
/* 172C44 */ M2C_UNK gm_80172C44();
/* 172C78 */ M2C_UNK fn_80172C78();
/* 172CC0 */ M2C_UNK gm_80172CC0();
/* 172D78 */ M2C_UNK gm_80172D78();
/* 172DD4 */ M2C_UNK gm_80172DD4();
/* 172E74 */ M2C_UNK gm_80172E74();
/* 172F00 */ M2C_UNK gm_80172F00();
/* 172FAC */ M2C_UNK fn_80172FAC();
/* 173098 */ M2C_UNK fn_80173098();
/* 173224 */ M2C_UNK gm_80173224();
/* 1732D8 */ M2C_UNK gm_801732D8();
/* 17335C */ M2C_UNK gm_8017335C();
/* 1733D8 */ M2C_UNK gm_801733D8();
/* 17341C */ M2C_UNK gm_8017341C();
/* 173460 */ M2C_UNK gm_80173460();
/* 173498 */ M2C_UNK gm_80173498();
/* 1734D0 */ M2C_UNK gm_801734D0();
/* 173510 */ M2C_UNK fn_80173510();
/* 1735F0 */ M2C_UNK fn_801735F0();
/* 173644 */ M2C_UNK fn_80173644();
/* 17367C */ M2C_UNK fn_8017367C();
/* 1736E8 */ M2C_UNK gm_801736E8();
/* 173754 */ M2C_UNK gm_80173754();
/* 1737D8 */ u8 gm_801737D8(void);
/* 1737E8 */ M2C_UNK gm_801737E8();
/* 173834 */ M2C_UNK fn_80173834();
/* 17390C */ M2C_UNK gm_8017390C();
/* 173AA4 */ M2C_UNK gm_80173AA4();
/* 173B30 */ M2C_UNK gm_80173B30();
/* 173BC4 */ M2C_UNK gm_80173BC4();
/* 173C70 */ M2C_UNK gm_80173C70();
/* 173D3C */ M2C_UNK gm_80173D3C();
/* 173DE4 */ M2C_UNK gm_80173DE4();
/* 173EEC */ M2C_UNK gm_80173EEC();
/* 174180 */ M2C_UNK gm_80174180();
/* 1741FC */ M2C_UNK gm_801741FC();
/* 174238 */ M2C_UNK gm_80174238();
/* 174284 */ M2C_UNK fn_80174284();
/* 174338 */ M2C_UNK fn_80174338();
/* 17435C */ M2C_UNK fn_8017435C();
/* 174380 */ M2C_UNK fn_80174380();
/* 1743A4 */ M2C_UNK gm_801743A4();
/* 1743C4 */ M2C_UNK fn_801743C4();
/* 174468 */ M2C_UNK fn_80174468();
/* 1748EC */ M2C_UNK fn_801748EC();
/* 174920 */ M2C_UNK fn_80174920();
/* 1749B8 */ M2C_UNK fn_801749B8();
/* 174A60 */ M2C_UNK fn_80174A60();
/* 174B4C */ M2C_UNK fn_80174B4C();
/* 174FD0 */ M2C_UNK fn_80174FD0();
/* 175038 */ M2C_UNK fn_80175038();
/* 17507C */ M2C_UNK fn_8017507C();
/* 175240 */ M2C_UNK fn_80175240();
/* 17556C */ M2C_UNK fn_8017556C();
/* 1756E0 */ M2C_UNK fn_801756E0();
/* 175880 */ M2C_UNK fn_80175880();
/* 175A94 */ M2C_UNK fn_80175A94();
/* 175C5C */ M2C_UNK fn_80175C5C();
/* 175D34 */ M2C_UNK fn_80175D34();
/* 175DC8 */ M2C_UNK fn_80175DC8();
/* 176A6C */ M2C_UNK fn_80176A6C();
/* 176BCC */ M2C_UNK fn_80176BCC();
/* 176BF0 */ M2C_UNK fn_80176BF0();
/* 176D18 */ M2C_UNK fn_80176D18();
/* 176D3C */ M2C_UNK fn_80176D3C();
/* 176F60 */ M2C_UNK fn_80176F60();
/* 1771C0 */ M2C_UNK fn_801771C0();
/* 177368 */ M2C_UNK gm_80177368();
/* 177704 */ M2C_UNK gm_80177704();
/* 177724 */ M2C_UNK gm_80177724();
/* 177748 */ M2C_UNK fn_80177748();
/* 177920 */ M2C_UNK fn_80177920();
/* 177B7C */ M2C_UNK fn_80177B7C();
/* 177DD0 */ M2C_UNK fn_80177DD0();
/* 178050 */ M2C_UNK fn_80178050();
/* 1785B0 */ M2C_UNK fn_801785B0();
/* 178BB4 */ M2C_UNK fn_80178BB4();
/* 1791E4 */ M2C_UNK fn_801791E4();
/* 179350 */ M2C_UNK fn_80179350();
/* 1795D4 */ M2C_UNK fn_801795D4();
/* 1796F0 */ M2C_UNK fn_801796F0();
/* 179854 */ M2C_UNK fn_80179854();
/* 179990 */ M2C_UNK fn_80179990();
/* 179D3C */ M2C_UNK fn_80179D3C();
/* 179D60 */ M2C_UNK fn_80179D60();
/* 179D84 */ M2C_UNK fn_80179D84();
/* 179DA8 */ M2C_UNK fn_80179DA8();
/* 179DCC */ M2C_UNK fn_80179DCC();
/* 179E34 */ M2C_UNK fn_80179E34();
/* 179E9C */ M2C_UNK fn_80179E9C();
/* 179F04 */ M2C_UNK fn_80179F04();
/* 179F6C */ M2C_UNK fn_80179F6C();
/* 179F84 */ M2C_UNK fn_80179F84();
/* 17A004 */ M2C_UNK fn_8017A004();
/* 17A078 */ M2C_UNK fn_8017A078();
/* 17A318 */ M2C_UNK fn_8017A318();
/* 17A67C */ M2C_UNK fn_8017A67C();
/* 17A9B4 */ M2C_UNK fn_8017A9B4();
/* 17AA78 */ M2C_UNK fn_8017AA78();
/* 17AD04 */ M2C_UNK fn_8017AD04();
/* 17AD28 */ M2C_UNK fn_8017AD28();
/* 17AD48 */ M2C_UNK fn_8017AD48();
/* 17AD78 */ M2C_UNK fn_8017AD78();
/* 17ADA8 */ M2C_UNK fn_8017ADA8();
/* 17AE0C */ M2C_UNK fn_8017AE0C();
/* 17AE70 */ M2C_UNK fn_8017AE70();
/* 17AED8 */ M2C_UNK fn_8017AED8();
/* 17AF40 */ M2C_UNK fn_8017AF40();
/* 17AFA8 */ M2C_UNK fn_8017AFA8();
/* 17B010 */ M2C_UNK fn_8017B010();
/* 17B07C */ M2C_UNK fn_8017B07C();
/* 17B0E4 */ M2C_UNK fn_8017B0E4();
/* 17B14C */ M2C_UNK fn_8017B14C();
/* 17B1B4 */ M2C_UNK fn_8017B1B4();
/* 17B21C */ M2C_UNK fn_8017B21C();
/* 17B280 */ M2C_UNK fn_8017B280();
/* 17B2E4 */ M2C_UNK fn_8017B2E4();
/* 17B348 */ M2C_UNK fn_8017B348();
/* 17B3AC */ M2C_UNK fn_8017B3AC();
/* 17B410 */ M2C_UNK fn_8017B410();
/* 17B4D0 */ M2C_UNK fn_8017B4D0();
/* 17B534 */ M2C_UNK fn_8017B534();
/* 17B598 */ M2C_UNK fn_8017B598();
/* 17B5FC */ M2C_UNK fn_8017B5FC();
/* 17B660 */ M2C_UNK fn_8017B660();
/* 17B6C4 */ M2C_UNK fn_8017B6C4();
/* 17B728 */ M2C_UNK fn_8017B728();
/* 17B78C */ M2C_UNK fn_8017B78C();
/* 17B7F0 */ M2C_UNK fn_8017B7F0();
/* 17B854 */ M2C_UNK fn_8017B854();
/* 17B8B8 */ M2C_UNK fn_8017B8B8();
/* 17B91C */ M2C_UNK fn_8017B91C();
/* 17B9F4 */ M2C_UNK fn_8017B9F4();
/* 17BACC */ M2C_UNK fn_8017BACC();
/* 17BB30 */ M2C_UNK fn_8017BB30();
/* 17BB94 */ M2C_UNK fn_8017BB94();
/* 17BC50 */ M2C_UNK fn_8017BC50();
/* 17BD0C */ M2C_UNK fn_8017BD0C();
/* 17BDC8 */ M2C_UNK fn_8017BDC8();
/* 17BE84 */ s32 gm_8017BE84(u32 arg0);
/* 17BE8C */ M2C_UNK gm_8017BE8C();
/* 17BEC8 */ M2C_UNK gm_8017BEC8();
/* 17C0C8 */ M2C_UNK fn_8017C0C8();
/* 17C1A4 */ M2C_UNK fn_8017C1A4();
/* 17C71C */ M2C_UNK fn_8017C71C();
/* 17C7A0 */ M2C_UNK fn_8017C7A0();
/* 17C7EC */ M2C_UNK fn_8017C7EC();
/* 17C838 */ M2C_UNK gm_8017C838();
/* 17C984 */ M2C_UNK gm_8017C984();
/* 17C9A8 */ M2C_UNK gm_8017C9A8();
/* 17CA38 */ M2C_UNK gm_8017CA38();
/* 17CBAC */ M2C_UNK gm_8017CBAC();
/* 17CD94 */ M2C_UNK gm_8017CD94();
/* 17CE34 */ M2C_UNK gm_8017CE34();
/* 17D7AC */ M2C_UNK gm_8017D7AC();
/* 17D9C0 */ M2C_UNK fn_8017D9C0();
/* 17DB58 */ void gm_8017DB58(void* arg0);
/* 17DB6C */ u8 gm_8017DB6C(gm_8017DB6C_arg0_t* arg0, ssize_t index);
/* 17DB78 */ u8 gm_8017DB78(gm_8017DB6C_arg0_t* arg0, ssize_t index);
/* 17DB88 */ M2C_UNK gm_8017DB88();
/* 17DD7C */ M2C_UNK fn_8017DD7C();
/* 17DE54 */ M2C_UNK fn_8017DE54();
/* 17DEC8 */ M2C_UNK fn_8017DEC8();
/* 17DF28 */ M2C_UNK fn_8017DF28();
/* 17DF90 */ M2C_UNK fn_8017DF90();
/* 17DFF4 */ M2C_UNK gm_8017DFF4();
/* 17E068 */ bool gm_8017E068(void);
/* 17E0E4 */ M2C_UNK fn_8017E0E4();
/* 17E160 */ M2C_UNK fn_8017E160();
/* 17E21C */ M2C_UNK fn_8017E21C();
/* 17E280 */ M2C_UNK gm_8017E280(u16, bool);
/* 17E318 */ M2C_UNK fn_8017E318();
/* 17E3C8 */ M2C_UNK fn_8017E3C8();
/* 17E424 */ M2C_UNK gm_8017E424(void);
/* 17E430 */ u8 gm_8017E430(void);
/* 17E440 */ M2C_UNK gm_8017E440();
/* 17E48C */ M2C_UNK gm_8017E48C();
/* 17E4C4 */ M2C_UNK gm_8017E4C4();
/* 17E500 */ M2C_UNK gm_8017E500();
/* 17E528 */ M2C_UNK gm_8017E528();
/* 17E578 */ M2C_UNK gm_8017E578();
/* 17E5C8 */ M2C_UNK gm_8017E5C8();
/* 17E5FC */ M2C_UNK gm_8017E5FC();
/* 17E630 */ M2C_UNK gm_8017E630();
/* 17E664 */ M2C_UNK gm_8017E664();
/* 17E6B4 */ M2C_UNK gm_8017E6B4();
/* 17E704 */ M2C_UNK gm_8017E704();
/* 17E738 */ M2C_UNK gm_8017E738();
/* 17E76C */ M2C_UNK gm_8017E76C();
/* 17E7A0 */ M2C_UNK gm_8017E7A0();
/* 17E7E0 */ M2C_UNK gm_8017E7E0();
/* 17E7FC */ M2C_UNK gm_8017E7FC();
/* 17E8A4 */ M2C_UNK fn_8017E8A4();
/* 17EB30 */ M2C_UNK gm_8017EB30(void);
/* 17EB3C */ M2C_UNK gm_8017EB3C();
/* 17EB64 */ M2C_UNK gm_8017EB64();
/* 17EB98 */ M2C_UNK gm_8017EB98();
/* 17EBCC */ M2C_UNK gm_8017EBCC();
/* 17EC00 */ M2C_UNK gm_8017EC00();
/* 17EC50 */ M2C_UNK gm_8017EC50();
/* 17ECA0 */ M2C_UNK gm_8017ECA0();
/* 17ECD4 */ M2C_UNK gm_8017ECD4();
/* 17ED08 */ M2C_UNK gm_8017ED08();
/* 17ED3C */ M2C_UNK gm_8017ED3C();
/* 17ED8C */ M2C_UNK gm_8017ED8C();
/* 17EDDC */ M2C_UNK fn_8017EDDC();
/* 17EE40 */ M2C_UNK fn_8017EE40();
/* 17F008 */ M2C_UNK fn_8017F008();
/* 17F09C */ M2C_UNK fn_8017F09C();
/* 17F14C */ M2C_UNK fn_8017F14C();
/* 17F1B8 */ M2C_UNK fn_8017F1B8();
/* 17F2A4 */ M2C_UNK fn_8017F2A4();
/* 17F47C */ M2C_UNK fn_8017F47C();
/* 17F608 */ M2C_UNK fn_8017F608();
/* 17FA1C */ M2C_UNK fn_8017FA1C();
/* 17FBA4 */ M2C_UNK fn_8017FBA4();
/* 17FE54 */ M2C_UNK fn_8017FE54();
/* 17FF1C */ M2C_UNK fn_8017FF1C();
/* 1803FC */ M2C_UNK fn_801803FC();
/* 180630 */ M2C_UNK fn_80180630();
/* 180AC0 */ M2C_UNK fn_80180AC0();
/* 180AE4 */ s32 gm_80180AE4(void);
/* 180AF4 */ M2C_UNK gm_80180AF4();
/* 180B18 */ M2C_UNK gm_80180B18();
/* 180BA0 */ M2C_UNK gm_80180BA0();
/* 180C14 */ M2C_UNK fn_80180C14();
/* 180C60 */ M2C_UNK fn_80180C60();
/* 181598 */ M2C_UNK fn_80181598();
/* 181708 */ M2C_UNK fn_80181708();
/* 181998 */ M2C_UNK gm_80181998();
/* 181A00 */ void gm_80181A00(s32 arg0, s32 arg1);
/* 181A24 */ u16 gm_80181A24(void);
/* 181A34 */ s32 gm_80181A34(void);
/* 181A44 */ M2C_UNK gm_80181A44();
/* 181AC8 */ M2C_UNK gm_80181AC8();
/* 181B64 */ M2C_UNK gm_80181B64();
/* 181BFC */ M2C_UNK fn_80181BFC();
/* 181C80 */ M2C_UNK fn_80181C80();
/* 181E18 */ M2C_UNK fn_80181E18();
/* 182174 */ M2C_UNK gm_80182174();
/* 182510 */ M2C_UNK gm_80182510();
/* 182554 */ M2C_UNK gm_80182554();
/* 182578 */ M2C_UNK gm_80182578();
/* 182B5C */ M2C_UNK fn_80182B5C();
/* 182DF0 */ M2C_UNK gm_80182DF0();
/* 182F40 */ M2C_UNK fn_80182F40();
/* 183218 */ M2C_UNK gm_80183218();
/* 18325C */ M2C_UNK fn_8018325C();
/* 184138 */ M2C_UNK fn_80184138();
/* 1849E0 */ M2C_UNK fn_801849E0();
/* 184A04 */ M2C_UNK fn_80184A04();
/* 184A28 */ M2C_UNK fn_80184A28();
/* 184A4C */ M2C_UNK fn_80184A4C();
/* 184A70 */ M2C_UNK fn_80184A70();
/* 184A94 */ M2C_UNK fn_80184A94();
/* 184AB8 */ M2C_UNK fn_80184AB8();
/* 18504C */ M2C_UNK fn_8018504C();
/* 1851C0 */ M2C_UNK fn_801851C0();
/* 1852FC */ M2C_UNK fn_801852FC();
/* 185408 */ M2C_UNK fn_80185408();
/* 1855BC */ M2C_UNK fn_801855BC();
/* 18564C */ M2C_UNK fn_8018564C();
/* 18569C */ M2C_UNK fn_8018569C();
/* 18575C */ M2C_UNK fn_8018575C();
/* 1857C4 */ M2C_UNK fn_801857C4();
/* 1859C8 */ M2C_UNK fn_801859C8();
/* 185A0C */ M2C_UNK fn_80185A0C();
/* 185D64 */ M2C_UNK fn_80185D64();
/* 185E34 */ M2C_UNK fn_80185E34();
/* 185F5C */ M2C_UNK fn_80185F5C();
/* 186080 */ M2C_UNK fn_80186080();
/* 1861B8 */ M2C_UNK fn_801861B8();
/* 186400 */ M2C_UNK fn_80186400();
/* 186634 */ M2C_UNK fn_80186634();
/* 186DFC */ M2C_UNK gm_80186DFC();
/* 186E30 */ M2C_UNK gm_80186E30();
/* 186EFC */ M2C_UNK fn_80186EFC();
/* 186F6C */ M2C_UNK fn_80186F6C();
/* 1873F0 */ M2C_UNK fn_801873F0();
/* 187494 */ M2C_UNK fn_80187494();
/* 1874FC */ M2C_UNK fn_801874FC();
/* 187714 */ M2C_UNK fn_80187714();
/* 18776C */ M2C_UNK gm_8018776C();
/* 1877A8 */ M2C_UNK gm_801877A8();
/* 187910 */ M2C_UNK fn_80187910();
/* 187AB4 */ M2C_UNK fn_80187AB4();
/* 187C9C */ M2C_UNK fn_80187C9C();
/* 187CF4 */ M2C_UNK fn_80187CF4();
/* 187F48 */ M2C_UNK gm_80187F48();
/* 188364 */ M2C_UNK gm_80188364();
/* 18838C */ M2C_UNK gm_8018838C();
/* 1883C0 */ M2C_UNK gm_801883C0();
/* 18841C */ bool gm_8018841C(void);
/* 188454 */ M2C_UNK gm_80188454();
/* 18846C */ M2C_UNK fn_8018846C();
/* 1884F8 */ M2C_UNK fn_801884F8();
/* 188550 */ M2C_UNK fn_80188550();
/* 188644 */ M2C_UNK fn_80188644();
/* 188738 */ M2C_UNK fn_80188738();
/* 188910 */ M2C_UNK fn_80188910();
/* 188B3C */ M2C_UNK fn_80188B3C();
/* 188D3C */ M2C_UNK fn_80188D3C();
/* 188EE8 */ M2C_UNK fn_80188EE8();
/* 1891F4 */ M2C_UNK fn_801891F4();
/* 189B88 */ M2C_UNK fn_80189B88();
/* 189CDC */ M2C_UNK gm_80189CDC();
/* 18A000 */ M2C_UNK fn_8018A000();
/* 18A160 */ M2C_UNK gm_8018A160();
/* 18A188 */ M2C_UNK gm_8018A188();
/* 18A1D8 */ M2C_UNK gm_8018A1D8();
/* 18A228 */ M2C_UNK gm_8018A228();
/* 18A25C */ M2C_UNK gm_8018A25C();
/* 18A290 */ M2C_UNK gm_8018A290();
/* 18A2C4 */ M2C_UNK gm_8018A2C4();
/* 18A314 */ M2C_UNK gm_8018A314();
/* 18A364 */ M2C_UNK fn_8018A364();
/* 18A514 */ M2C_UNK fn_8018A514();
/* 18A970 */ M2C_UNK fn_8018A970();
/* 18AA74 */ M2C_UNK fn_8018AA74();
/* 18B090 */ M2C_UNK fn_8018B090();
/* 18C8D4 */ M2C_UNK fn_8018C8D4();
/* 18D50C */ M2C_UNK fn_8018D50C();
/* 18DC18 */ M2C_UNK fn_8018DC18();
/* 18DF68 */ M2C_UNK fn_8018DF68();
/* 18E46C */ M2C_UNK fn_8018E46C();
/* 18E618 */ M2C_UNK fn_8018E618();
/* 18E85C */ M2C_UNK fn_8018E85C();
/* 18EC48 */ M2C_UNK fn_8018EC48();
/* 18EC7C */ M2C_UNK fn_8018EC7C();
/* 18ECA8 */ M2C_UNK fn_8018ECA8();
/* 18F00C */ M2C_UNK fn_8018F00C();
/* 18F1B0 */ M2C_UNK gm_8018F1B0();
/* 18F310 */ M2C_UNK fn_8018F310();
// /* 18F3BC */ UNK_RET fn_8018F3BC(UNK_PARAMS);
/* 18F3D0 */ M2C_UNK fn_8018F3D0();
/* 18F410 */ M2C_UNK fn_8018F410();
/* 18F4A0 */ M2C_UNK fn_8018F4A0();
/* 18F508 */ M2C_UNK fn_8018F508();
/* 18F5F0 */ M2C_UNK fn_8018F5F0();
/* 18F62C */ s32 fn_8018F62C(M2C_UNK arg0);
/* 18F634 */ M2C_UNK gm_8018F634(void);
/* 18F640 */ M2C_UNK fn_8018F640();
/* 18F674 */ M2C_UNK fn_8018F674();
/* 18F6A8 */ M2C_UNK fn_8018F6A8();
/* 18F6DC */ M2C_UNK fn_8018F6DC();
/* 18F6FC */ M2C_UNK fn_8018F6FC();
/* 18F71C */ M2C_UNK fn_8018F71C();
/* 18F74C */ M2C_UNK fn_8018F74C();
/* 18F808 */ M2C_UNK fn_8018F808();
/* 18F888 */ M2C_UNK fn_8018F888();
/* 18FA24 */ M2C_UNK fn_8018FA24();
/* 18FBD8 */ void fn_8018FBD8(M2C_UNK arg0, s32 arg1);
/* 18FBE0 */ M2C_UNK fn_8018FBE0();
/* 18FDC4 */ M2C_UNK fn_8018FDC4();
/* 18FF9C */ M2C_UNK fn_8018FF9C();
/* 190174 */ M2C_UNK fn_80190174();
/* 1901F8 */ M2C_UNK fn_801901F8();
/* 19027C */ M2C_UNK fn_8019027C();
/* 1902F0 */ M2C_UNK fn_801902F0();
/* 19035C */ M2C_UNK fn_8019035C();
/* 19044C */ M2C_UNK fn_8019044C();
/* 190480 */ M2C_UNK fn_80190480();
/* 1904D0 */ M2C_UNK fn_801904D0();
/* 190520 */ M2C_UNK fn_80190520();
/* 1905F0 */ M2C_UNK gm_801905F0();
/* 190ABC */ M2C_UNK fn_80190ABC();
/* 190EA4 */ M2C_UNK gm_80190EA4();
/* 190FE4 */ M2C_UNK gm_80190FE4();
/* 1910E0 */ M2C_UNK fn_801910E0();
/* 191154 */ M2C_UNK fn_80191154();
/* 191240 */ M2C_UNK fn_80191240();
/* 1913BC */ M2C_UNK fn_801913BC();
/* 191678 */ M2C_UNK fn_80191678();
/* 19175C */ M2C_UNK fn_8019175C();
/* 1918F0 */ M2C_UNK fn_801918F0();
/* 191A54 */ M2C_UNK fn_80191A54();
/* 191B5C */ M2C_UNK fn_80191B5C();
/* 191CA4 */ M2C_UNK fn_80191CA4();
/* 191D38 */ M2C_UNK fn_80191D38();
/* 191E9C */ M2C_UNK fn_80191E9C();
/* 191FD4 */ M2C_UNK fn_80191FD4();
/* 19237C */ M2C_UNK fn_8019237C();
/* 19249C */ M2C_UNK fn_8019249C();
/* 192690 */ M2C_UNK fn_80192690();
/* 192758 */ M2C_UNK fn_80192758();
/* 192938 */ M2C_UNK fn_80192938();
/* 192BB0 */ M2C_UNK fn_80192BB0();
/* 192E6C */ M2C_UNK fn_80192E6C();
/* 193230 */ M2C_UNK fn_80193230();
/* 193308 */ M2C_UNK fn_80193308();
/* 1935B8 */ M2C_UNK fn_801935B8();
/* 1937C4 */ M2C_UNK fn_801937C4();
/* 193B58 */ M2C_UNK fn_80193B58();
/* 193FCC */ M2C_UNK fn_80193FCC();
/* 194658 */ M2C_UNK fn_80194658();
/* 1949B4 */ M2C_UNK fn_801949B4();
/* 194BC4 */ M2C_UNK fn_80194BC4();
/* 194D84 */ M2C_UNK fn_80194D84();
/* 194F30 */ M2C_UNK fn_80194F30();
/* 1953C8 */ M2C_UNK fn_801953C8();
/* 195AF0 */ M2C_UNK fn_80195AF0();
/* 195CCC */ M2C_UNK fn_80195CCC();
/* 19610C */ M2C_UNK fn_8019610C();
/* 19628C */ M2C_UNK gm_8019628C();
/* 1963B4 */ M2C_UNK gm_801963B4();
/* 1964A4 */ M2C_UNK gm_801964A4();
/* 196510 */ M2C_UNK fn_80196510();
/* 19655C */ s32 fn_8019655C(void);
/* 196564 */ M2C_UNK fn_80196564();
/* 196594 */ M2C_UNK fn_80196594();
/* 1965C4 */ M2C_UNK fn_801965C4();
/* 196684 */ M2C_UNK fn_80196684();
/* 1967E0 */ M2C_UNK fn_801967E0();
/* 196CF8 */ M2C_UNK fn_80196CF8();
/* 196DBC */ M2C_UNK fn_80196DBC();
/* 196E30 */ M2C_UNK fn_80196E30();
/* 196EEC */ M2C_UNK fn_80196EEC();
/* 196FFC */ M2C_UNK fn_80196FFC();
/* 1973F8 */ M2C_UNK fn_801973F8();
/* 1975C8 */ M2C_UNK fn_801975C8();
/* 1976D4 */ M2C_UNK fn_801976D4();
/* 1977AC */ M2C_UNK fn_801977AC();
/* 197AF0 */ M2C_UNK fn_80197AF0();
/* 197D4C */ M2C_UNK fn_80197D4C();
/* 197E18 */ M2C_UNK fn_80197E18();
/* 197FD8 */ M2C_UNK fn_80197FD8();
/* 1981A0 */ M2C_UNK fn_801981A0();
/* 1983E4 */ M2C_UNK fn_801983E4();
/* 198584 */ M2C_UNK fn_80198584();
/* 1985D4 */ M2C_UNK fn_801985D4();
/* 198824 */ M2C_UNK fn_80198824();
/* 198BA0 */ M2C_UNK fn_80198BA0();
/* 198C60 */ M2C_UNK fn_80198C60();
/* 198D18 */ M2C_UNK fn_80198D18();
/* 198EBC */ M2C_UNK fn_80198EBC();
/* 199AF0 */ M2C_UNK fn_80199AF0();
/* 19A158 */ M2C_UNK fn_8019A158();
/* 19A71C */ M2C_UNK fn_8019A71C();
/* 19A828 */ M2C_UNK gm_8019A828();
/* 19A86C */ M2C_UNK fn_8019A86C();
/* 19AF50 */ M2C_UNK fn_8019AF50();
/* 19B2DC */ M2C_UNK gm_8019B2DC();
/* 19B458 */ M2C_UNK fn_8019B458();
/* 19B81C */ M2C_UNK fn_8019B81C();
/* 19B860 */ M2C_UNK fn_8019B860();
/* 19B8C4 */ M2C_UNK gm_8019B8C4();
/* 19B9C8 */ M2C_UNK gm_8019B9C8();
/* 19BA04 */ M2C_UNK fn_8019BA04();
/* 19BA08 */ M2C_UNK fn_8019BA08();
/* 19BF18 */ M2C_UNK fn_8019BF18();
/* 19BF8C */ M2C_UNK fn_8019BF8C();
/* 19C048 */ M2C_UNK fn_8019C048();
/* 19C3EC */ M2C_UNK fn_8019C3EC();
/* 19C570 */ M2C_UNK fn_8019C570();
/* 19C6AC */ M2C_UNK fn_8019C6AC();
/* 19C744 */ M2C_UNK fn_8019C744();
/* 19CA38 */ M2C_UNK fn_8019CA38();
/* 19CBFC */ M2C_UNK fn_8019CBFC();
/* 19CC74 */ M2C_UNK fn_8019CC74();
/* 19CDBC */ M2C_UNK fn_8019CDBC();
/* 19CFA4 */ M2C_UNK fn_8019CFA4();
/* 19D074 */ M2C_UNK fn_8019D074();
/* 19D1BC */ M2C_UNK fn_8019D1BC();
/* 19DD60 */ M2C_UNK fn_8019DD60();
/* 19DF8C */ M2C_UNK gm_8019DF8C();
/* 19E634 */ M2C_UNK gm_8019E634();
/* 19ECAC */ M2C_UNK gm_8019ECAC();
/* 19EE54 */ M2C_UNK gm_8019EE54();
/* 19EE80 */ M2C_UNK fn_8019EE80();
/* 19EF08 */ M2C_UNK fn_8019EF08();
/* 19EFC4 */ M2C_UNK fn_8019EFC4();
/* 19F1D0 */ M2C_UNK fn_8019F1D0();
/* 19F2D4 */ M2C_UNK fn_8019F2D4();
/* 19F6EC */ M2C_UNK fn_8019F6EC();
/* 19F810 */ M2C_UNK fn_8019F810();
/* 19F9C4 */ M2C_UNK fn_8019F9C4();
/* 1A0A10 */ M2C_UNK gm_801A0A10();
/* 1A0B18 */ M2C_UNK gm_801A0B18();
/* 1A0B60 */ M2C_UNK fn_801A0B60();
/* 1A0C6C */ M2C_UNK gm_801A0C6C();
/* 1A0E0C */ M2C_UNK gm_801A0E0C();
/* 1A0E34 */ M2C_UNK fn_801A0E34();
/* 1A0FEC */ M2C_UNK gm_801A0FEC();
/* 1A10FC */ M2C_UNK gm_801A10FC();
/* 1A1134 */ M2C_UNK fn_801A1134();
/* 473A18 */ extern M2C_UNK gm_80473A18;
#define __GALE01_1601C4
#define MELEE_GM_TYPES_H
struct gmm_x1CB0 {
u8 padding_x0[0x10 - 0x0];
u8 x10[0x16 - 0x10];
/* 0x1CC6 0x16 */ u8 saved_language;
u8 padding_x16[0x20 - 0x16 - 1];
};
typedef union _UnkFlagStruct2 {
struct {
u16 b0 : 1;
u16 b1 : 1;
u16 b2 : 1;
u16 b3 : 1;
u16 b4 : 1;
u16 b5 : 1;
u16 b6 : 1;
u16 b789 : 3;
u16 b10_to_12 : 3;
u16 b13_to_15 : 3;
};
u16 flags;
} UnkFlagStruct2;
struct gmm_x1F2C {
u8 padding_x0[0x78];
s8 x78;
s8 x79;
UnkFlagStruct x7A;
s8 x7B;
UnkFlagStruct2 x7C;
s16 x7E;
s8 x80;
s8 x81;
s8 x82;
s8 x83;
s32 x84;
s32 x88;
s32 x8C;
s32 x90;
s32 x94;
s32 x98;
s32 x9C;
s16 xA0;
s16 xA2;
s32 xA4;
s32 xA8;
};
struct gmm_x2FF8_inner {
u8 padding[0x1A2];
s8 x1A2;
u8 padding_x1A2;
};
struct gmm_x2FF8 {
struct gmm_x2FF8_inner inner[19];
};
struct GameRules {
/* 0x00 */ u8 unk_x0;
/* 0x01 */ u8 unk_x1;
/* 0x02 */ u8 mode;
/* 0x03 */ u8 time_limit;
/* 0x04 */ u8 stock_count;
/* 0x05 */ u8 handicap;
/* 0x06 */ u8 damage_ratio;
/* 0x07 */ u8 unk_x7;
/* 0x08 */ u8 stock_time_limit;
/* 0x09 */ u8 friendly_fire;
/* 0x0A */ u8 pause;
/* 0x0B */ u8 score_display;
/* 0x0C */ u8 unk_xc;
/* 0x0D */ char pad_D[3]; /* maybe part of unk_xc[4]? */
/* 0x10 */ u8 unk_x10;
/* 0x11 */ char pad_11[3]; /* maybe part of unk_x10[4]? */
/* 0x14 */ s32 unk_14; /* inferred */
}; /* size = 0x18 */
struct { int x[1 - 2 * !(sizeof(struct GameRules) == 0x18)]; };;
struct gmm_retval_ED98 {
u8 padding[0xC];
s32 xC;
s32 x10;
s32 x14;
s32 x18;
s32 x1C;
};
struct gmm_retval_EDB0 {
s32 x0;
s32 x4;
};
struct gmm_retval_EDBC {
s32 x0;
s32 x4;
s32 x8;
u8 padding[0x4C - 0x8 - 4];
s32 x4C[4];
u8 padding_x4C[0xB0 - 0x4C - 4 * 4];
s32 xB0[4];
};
struct gmm_x1868 {
/* 0x0000 */ s32 x1868;
/* 0x0004 */ u8 unk_4;
/* 0x0005 */ char pad_5[3]; /* maybe part of unk_4[4]? */
/* 0x0008 */ struct gmm_retval_ED98 unk_8;
/* 0x0028 */ struct gmm_retval_EDB0 unk_28;
/* 0x0030 */ struct gmm_retval_EDBC unk_30;
/* 0x00F0 */ char pad_F0[0xB8];
/* 0x01A8 */ u8 unk_1A8; /* inferred */
/* 0x01A9 */ char pad_1A9[7]; /* maybe part of unk_1A8[8]? */
/* 0x01B0 */ s32 x1A18;
/* 0x01B4 */ s32 x1A1C;
/* 0x01B8 */ s32 x1A20;
/* 0x01BC */ s32 x1A24;
/* 0x01C0 */ s32 x1A28;
/* 0x01C4 */ s32 x1A2C;
/* 0x01C8 */ s32 x1A30;
/* 0x01CC */ s32 x1A34;
/* 0x01D0 */ s32 x1A38;
/* 0x01D4 */ s32 x1A3C;
/* 0x01D8 */ s32 x1A40;
/* 0x01DC */ s32 x1A44;
/* 0x01E0 */ s32 x1A48;
/* 0x01E4 */ s32 x1A4C;
/* 0x01E8 */ s32 x1A50;
/* 0x01EC */ s32 x1A54;
/* 0x01F0 */ s32 x1A58;
/* 0x01F4 */ s32 x1A5C;
/* 0x01F8 */ s32 x1A60;
/* 0x01FC */ s32 x1A64;
/* 0x0200 */ s64 x1A68;
/* 0x0208 */ s32 x1A70[4];
/* 0x0218 */ u8 padding_x1A70[0xBC];
/* 0x02D4 */ u8 x1B3C;
/* 0x02D5 */ char pad_2D5[3]; /* maybe part of x1B3C[4]? */
/* 0x02D8 */ u32 x1B40[3];
/* 0x02E4 */ u32 x1B4C[3];
/* 0x02F0 */ u32 x1B58[3];
/* 0x02FC */ u8 padding_x1B58[0x1C];
/* 0x0318 */ u32 x1B80[4];
/* 0x0328 */ u8 padding_x1B80[0xF8];
/* 0x0420 */ u32 x1C88[3];
/* 0x042C */ u8 padding_x1C88[0x1C];
/* 0x0448 */ struct gmm_x1CB0 x1CB0;
/* 0x0468 */ s16 x1CD0;
/* 0x046A */ s16 x1CD2;
/* 0x046C */ s32 x1CD4;
/* 0x0470 */ u8 padding_x1CD4[0x254];
/* 0x06C4 */ struct gmm_x1F2C x1F2C[0x19];
/* 0x1790 */ struct gmm_x2FF8 x2FF8[2];
}; /* size = 0x55E8 */
struct gmm_x0 {
/* 0x0000 */ u8 language;
/* 0x0001 */ u8 unk_1;
/* 0x0002 */ char pad_2[0x37]; /* maybe part of x1[0x38]? */
/* 0x0039 */ u8 x39[0xB];
/* 0x0044 */ s32 unk_44;
/* 0x0048 */ char pad_48[0x24]; /* maybe part of x44[0xA]? */
/* 0x006C */ u32 unk_6C[4];
/* 0x007C */ char pad_7C[0x4A0]; /* maybe part of x6C[0x4B]? */
/* 0x051C */ s32 unk_51C;
/* 0x0520 */ s16 unk_520;
/* 0x0522 */ s16 unk_522;
/* 0x0524 */ s16 unk_524;
/* 0x0526 */ s16 unk_526;
/* 0x0528 */ s32 unk_528;
/* 0x052C */ s32 unk_52C;
/* 0x0530 */ char pad_530[5]; /* maybe part of x52C[2]? */
/* 0x0535 */ u8 unk_535;
/* 0x0536 */ char pad_536[0x46]; /* maybe part of unk_535[0x47]? */
/* 0x057C */ s32 unk_57C;
/* 0x0580 */ char pad_580[4];
/* 0x0584 */ M2C_UNK unk_584; /* inferred */
/* 0x0588 */ s8 unk_588[4]; /* inferred */
/* 0x0590 */ char pad_58B[4]; /* inferred */
/* 0x0590 */ s8 unk_590; /* inferred */
/* 0x0591 */ char pad_591[3]; /* maybe part of unk_590[4]? */
/* 0x0594 */ char unk_594;
/* 0x0595 */ char pad_595[3]; /* maybe part of unk_594[4]? */
/* 0x0598 */ char unk_598;
/* 0x0599 */ char pad_599[1];
/* 0x059A */ s16 unk_59A;
/* 0x05A0 */ char pad_59C[0x12B4]; /* maybe part of x588[0x4B0]? */
/* 0x1850 */ GameRules x1850;
/* 0x1898 */ struct gmm_x1868 thing;
}; /* size = 0x6E80 */
struct Placeholder_8016AE38_flags_2 {
/* +0:0 */ u8 x0_b0_b2 : 3;
/* +0:3 */ u8 x0_b3 : 1;
/* +0:4 */ u8 x0_b4 : 1;
/* +0:5 */ u8 x0_b5 : 1;
/* +0:6 */ u8 x0_b6 : 1;
/* +0:7 */ u8 x0_b7 : 1;
/* +1:0 */ u8 x1_b0 : 1;
/* +1:1 */ u8 x1_b1 : 1;
/* +1:2 */ u8 x1_b2 : 1;
/* +1:3 */ u8 x1_b3 : 1;
/* +1:4 */ u8 x1_b4 : 1;
/* +1:5 */ u8 x1_b5 : 1;
/* +1:6 */ u8 x1_b6 : 1;
/* +1:7 */ u8 x1_b7 : 1;
/* +2:0 */ u8 x2_b0 : 1;
/* +2:1 */ u8 x2_b1 : 1;
/* +2:2 */ u8 x2_b2 : 1;
/* +2:3 */ u8 x2_b3 : 1;
/* +2:4 */ u8 x2_b4 : 1;
/* +2:5 */ u8 x2_b5 : 1;
/* +2:6 */ u8 x2_b6 : 1;
/* +2:7 */ u8 x2_b7 : 1;
};
struct lbl_8046B6A0_t {
/* 0x0000 */ u32 unk_0;
/* 0x0004 */ u32 unk_4;
/* 0x0008 */ u32 unk_8;
/* 0x000C */ u8 unk_C;
/* 0x000D */ u8 unk_D;
/* 0x000E */ u8 unk_E;
/* 0x000F */ u8 unk_F;
/* 0x0010 */ s32 unk_10;
/* 0x0014 */ s32 unk_14;
/* 0x0018 */ char pad_18[0xC]; /* maybe part of unk_14[4]? */
/* 0x0024 */ s32 unk_24;
/* 0x0028 */ s32 unk_28;
/* 0x002C */ u16 unk_2C;
/* 0x002E */ char pad_2E[6]; /* maybe part of unk_2C[4]? */
/* 0x0034 */ f32 unk_34;
/* 0x0038 */ char pad_38[0x2490]; /* maybe part of unk_34[0x925]? */
/* 0x24C8 */ Placeholder_8016AE38_flags_2 unk24C8;
/* 0x24CB */ char pad_24CB[1];
/* 0x24CC:0 */ u8 unk_24CC_b0 : 1;
/* 0x24CC:1 */ u8 unk_24CC_b1 : 1;
/* 0x24CC:2 */ u8 unk_24CC_b2 : 1;
/* 0x24CC:3 */ u8 unk_24CC_b3 : 1;
/* 0x24CC:4 */ u8 unk_24CC_b4 : 1;
/* 0x24CC:5 */ u8 unk_24CC_b5 : 1;
/* 0x24CC:6 */ u8 unk_24CC_b6 : 1;
/* 0x24CC:7 */ u8 unk_24CC_b7 : 1;
/* 0x24CD:0 */ u8 unk_24CD_b0 : 1;
/* 0x24CD:1 */ u8 unk_24CD_b1 : 1;
/* 0x24CD:2 */ u8 unk_24CD_b2 : 1;
/* 0x24CD:3 */ u8 unk_24CD_b3 : 1;
/* 0x24CD:4 */ u8 unk_24CD_b4 : 1;
/* 0x24CD:5 */ u8 unk_24CD_b5 : 1;
/* 0x24CD:6 */ u8 unk_24CD_b6 : 1;
/* 0x24CD:7 */ u8 unk_24CD_b7 : 1;
/* 0x24CE */ u8 unk_24CE;
/* 0x24CF */ char pad_24CF[1];
/* 0x24D0 */ s8 unk_24D0;
/* 0x24D1 */ char pad_24D1[2]; /* maybe part of unk_24D0[3]? */
/* 0x24D3 */ s8 unk_24D3;
/* 0x24D4 */ s8 unk_24D4;
/* 0x24D5 */ char pad_24D5[1];
/* 0x24D6 */ u16 unk_24D6;
/* 0x24D8 */ char pad_24D8[0x10]; /* maybe part of unk_24D6[9]? */
/* 0x24E8 */ u64 unk_24E8;
/* 0x24F0 */ s32 unk_24F0;
/* 0x24F4 */ char pad_24F4[4];
/* 0x24F8 */ f32 unk_24F8; /* inferred */
/* 0x24FC */ char pad_24FC[0x2C]; /* maybe part of unk_24F8[0xC]? */
}; /* size = 0x2528 */
struct { int x[1 - 2 * !(sizeof(struct lbl_8046B6A0_t) == 0x2528)]; };;
struct datetime {
u16 year;
u8 month, day, hour, minute, second;
};
struct gmMainLib_8015ED8C_arg0_t {
u8 pad[0x2ac];
u8 id[0x24];
struct {
u8 unk0, unk1;
u8 unkpad[4];
} thing[11];
};
struct gm_8017DB6C_arg0_t {
/* +0 */ u8 x0;
/* +1 */ u8 x1;
/* +2 */ u8 _1[0xC - 0x2];
};
struct { int x[1 - 2 * !(sizeof(struct gm_8017DB6C_arg0_t) == 0xC)]; };;
struct gmMainLib_8046B0F0_t {
bool x0;
int x4, x8, xC, x10, x14;
};
struct lbl_8046B488_t {
/* 0x000 */ char pad_0[0x10];
/* 0x010:0 */ u8 unk_10_b0 : 1;
/* 0x010:1 */ u8 unk_10_b1 : 1;
/* 0x010:2 */ u8 unk_10_b2 : 1;
/* 0x010:3 */ u8 unk_10_b3 : 1;
/* 0x010:4 */ u8 unk_10_b4 : 1;
/* 0x010:5 */ u8 unk_10_b5 : 1;
/* 0x010:6 */ u8 unk_10_b6 : 1;
/* 0x010:7 */ u8 unk_10_b7 : 1;
/* 0x011 */ char pad_11[0x1CF]; /* maybe part of unk_10[0x1D0]? */
}; /* size = 0x1E0 */
struct { int x[1 - 2 * !(sizeof(struct lbl_8046B488_t) == 0x1E0)]; };;
struct fn_80166CBC_arg0_t {
/* +0 */ char pad_0[0x5E];
/* +5E */ u8 x5E;
/* +5F */ char pad_5F[0xA8 - 0x5F];
};
struct { int x[1 - 2 * !(sizeof(struct fn_80166CBC_arg0_t) == 0xA8)]; };;
struct lbl_8046DBE8_t {
/* +0 */ char pad_0[0x94];
/* +94 */ int x94;
/* +98 */ char pad_98[0x5A8 - 0x98];
};
struct { int x[1 - 2 * !(sizeof(struct lbl_8046DBE8_t) == 0x5A8)]; };;
struct lbl_80472D28_t {
/* +0 */ char pad_0[0x104];
/* +104 */ int x104;
};
struct lbl_80472E48_t {
/* 0x00 */ char pad_0[4];
/* 0x04 */ s32 unk_4; /* inferred */
/* 0x08 */ s32 unk_8; /* inferred */
/* 0x0C */ char pad_C[0x74]; /* maybe part of unk_8[0x1E]? */
}; /* size = 0x80 */
struct { int x[1 - 2 * !(sizeof(struct lbl_80472E48_t) == 0x80)]; };;
struct lbl_803D9D20_t {
/* +0 */ char pad_0[0xB0];
/* +B0 */ HSD_CObj* cobj;
/* +B4 */ char pad_B4[0xD8 - 0xB4];
/* +D8 */ Vec3 eye_position;
/* +E4 */ char pad_E4[0xEC - 0xE4];
/* +EC */ Vec3 interest;
};
/* 160840 */ static u8 fn_80160840(u8 arg0);
/* 166A8C */ static f32 fn_80166A8C(Vec3*, Vec3*);
/* 166CBC */ static u8 fn_80166CBC(struct fn_80166CBC_arg0_t* arg0,
ssize_t index);
/* 169364 */ static M2C_UNK fn_80169364(void);
/* 1693A8 */ static s32 fn_801693A8(void);
/* 16A1E4 */ static s32 fn_8016A1E4(void);
/* 1736DC */ static M2C_UNK gm_801736DC(void);
/* 174274 */ static int fn_80174274(void);
/* 17F294 */ static int fn_8017F294(void);
/* 3B75F8 */ static struct gmMainLib_8015ED8C_arg0_t lbl_803B75F8 = { 0 };
/* 3D9D20 */ static struct lbl_803D9D20_t lbl_803D9D20;
/* 46B488 */ static struct lbl_8046B488_t lbl_8046B488;
/* 46B668 */ static M2C_UNK lbl_8046B668[14];
/* 46B6A0 */ static lbl_8046B6A0_t lbl_8046B6A0;
/* 46DBD8 */ static M2C_UNK lbl_8046DBD8[4];
/* 46DBE8 */ static struct lbl_8046DBE8_t lbl_8046DBE8;
/* 472C30 */ static M2C_UNK lbl_80472C30[32];
/* 472CB0 */ static M2C_UNK lbl_80472CB0[30];
/* 472D28 */ static struct lbl_80472D28_t lbl_80472D28;
/* 472E48 */ static struct lbl_80472E48_t lbl_80472E48;
/* 472EC8 */ static int lbl_80472EC8[4];
/* 473594 */ static u8 lbl_80473594[0x14];
/* 4771C4 */ static M2C_UNK gm_804771C4[349];
/* 4D4190 */ static s32 lbl_804D4190 = 0xFFFFFFFF;
/* 4D6598 */ static s8 lbl_804D6598;
/* 4D65A0 */ static s8 lbl_804D65A0;
#define NUM_UNLOCKABLE_CHARACTERS 11
#define GALE01_1A3680
/* 1A3680 */ u64 gm_801A3680(u8);
/* 1A36A0 */ u64 gm_801A36A0(u8);
/* 1A36C0 */ u64 gm_801A36C0(u8);
/* 1A36E0 */ void gm_801A36E0(s32, s32);
/* 1A3714 */ void gm_801A3714(s32, u64, u64);
/* 1A3820 */ void gm_801A3820(s32, u64, u64);
/* 1A396C */ M2C_UNK fn_801A396C();
/* 1A3A74 */ M2C_UNK gm_801A3A74();
/* 1A3E88 */ M2C_UNK gm_801A3E88();
/* 1A427C */ int gm_801A427C(void* arg0);
/* 1A428C */ M2C_UNK gm_801A428C();
/* 1A42A0 */ M2C_UNK gm_801A42A0();
/* 1A42D4 */ M2C_UNK gm_801A42D4();
/* 1A4310 */ u8 gm_801A4310(void);
/* 1A4340 */ M2C_UNK gm_801A4340();
/* 1A43A0 */ u8 gm_801A43A0(u8 arg0);
/* 1A4510 */ void gm_801A4510(void);
/* 1A45E8 */ bool gm_801A45E8(s32);
/* 1A4634 */ M2C_UNK gm_801A4634();
/* 1A4674 */ M2C_UNK gm_801A4674();
/* 1A46B8 */ M2C_UNK gm_801A46B8();
/* 1A46F4 */ M2C_UNK fn_801A46F4();
/* 1A47E4 */ M2C_UNK fn_801A47E4();
/* 1A48A4 */ M2C_UNK gm_801A48A4();
/* 1A4970 */ M2C_UNK gm_801A4970();
/* 1A4B08 */ M2C_UNK gm_801A4B08();
/* 1A4B1C */ M2C_UNK gm_801A4B1C();
/* 1A4B60 */ M2C_UNK gm_801A4B60();
/* 1A4B74 */ M2C_UNK gm_801A4B74();
/* 1A4B90 */ s32 gm_801A4B90(void);
/* 1A4B9C */ s8* gm_801A4B9C(void);
/* 1A4BA8 */ struct gm_80479D58_t* gm_801A4BA8(void);
/* 1A4BC8 */ s32 gm_801A4BC8(void);
/* 1A4BD0 */ M2C_UNK fn_801A4BD0();
/* 1A50B8 */ M2C_UNK gm_801A50B8();
/* 1A5130 */ M2C_UNK gm_801A5130();
/* 1A51A8 */ M2C_UNK gm_801A51A8();
/* 1A5220 */ M2C_UNK gm_801A5220();
/* 1A5258 */ M2C_UNK gm_801A5258();
/* 1A52D0 */ M2C_UNK gm_801A52D0();
/* 1A5360 */ M2C_UNK gm_801A5360();
/* 1A5598 */ M2C_UNK gm_801A5598();
/* 1A55C4 */ M2C_UNK gm_801A55C4();
/* 1A55EC */ M2C_UNK gm_801A55EC();
/* 1A5618 */ M2C_UNK gm_801A5618();
/* 1A5680 */ M2C_UNK gm_801A5680();
/* 1A5754 */ M2C_UNK gm_801A5754();
/* 1A57A8 */ M2C_UNK gm_801A57A8();
/* 1A583C */ M2C_UNK gm_801A583C();
/* 1A5AF0 */ M2C_UNK gm_801A5AF0();
/* 1A5C3C */ M2C_UNK gm_801A5C3C();
/* 1A5EC8 */ M2C_UNK gm_801A5EC8();
/* 1A5F00 */ M2C_UNK gm_801A5F00();
/* 1A5F64 */ M2C_UNK gm_801A5F64();
/* 1A6254 */ M2C_UNK gm_801A6254();
/* 1A6308 */ M2C_UNK gm_801A6308();
/* 1A632C */ M2C_UNK gm_801A632C();
/* 1A637C */ M2C_UNK gm_801A637C();
/* 1A64A8 */ M2C_UNK gm_801A64A8();
/* 1A659C */ M2C_UNK gm_801A659C();
/* 1A6630 */ M2C_UNK gm_801A6630();
/* 1A6664 */ M2C_UNK fn_801A6664();
/* 1A6844 */ M2C_UNK fn_801A6844();
/* 1A6868 */ M2C_UNK fn_801A6868();
/* 1A68D8 */ M2C_UNK gm_801A68D8();
/* 1A6A48 */ M2C_UNK fn_801A6A48();
/* 1A6ACC */ M2C_UNK fn_801A6ACC();
/* 1A6B6C */ M2C_UNK fn_801A6B6C();
/* 1A6C30 */ M2C_UNK fn_801A6C30();
/* 1A6C54 */ M2C_UNK gm_801A6C54();
/* 1A6D78 */ M2C_UNK fn_801A6D78();
/* 1A6DC0 */ M2C_UNK gm_801A6DC0();
/* 1A6EE4 */ M2C_UNK gm_801A6EE4();
/* 1A7070 */ M2C_UNK gm_801A7070();
/* 1A79D4 */ M2C_UNK gm_801A79D4();
/* 1A7A44 */ M2C_UNK fn_801A7A44();
/* 1A7A68 */ M2C_UNK fn_801A7A68();
/* 1A7A8C */ M2C_UNK fn_801A7A8C();
/* 1A7B00 */ M2C_UNK gm_801A7B00();
/* 1A7FB4 */ M2C_UNK fn_801A7FB4();
/* 1A80CC */ M2C_UNK fn_801A80CC();
/* 1A80F0 */ M2C_UNK fn_801A80F0();
/* 1A8114 */ M2C_UNK gm_801A8114();
/* 1A851C */ M2C_UNK fn_801A851C();
/* 1A85E4 */ M2C_UNK gm_801A85E4();
/* 1A8D54 */ M2C_UNK gm_801A8D54();
/* 1A9094 */ M2C_UNK gm_801A9094();
/* 1A9498 */ M2C_UNK fn_801A9498();
/* 1A94BC */ M2C_UNK fn_801A94BC();
/* 1A9630 */ M2C_UNK gm_801A9630();
/* 1A9B30 */ M2C_UNK gm_801A9B30();
/* 1A9D0C */ M2C_UNK gm_801A9D0C();
/* 1A9DD0 */ M2C_UNK gm_801A9DD0();
/* 1A9FCC */ M2C_UNK fn_801A9FCC();
/* 1AA0E8 */ M2C_UNK fn_801AA0E8();
/* 1AA110 */ M2C_UNK gm_801AA110();
/* 1AA28C */ M2C_UNK gm_801AA28C();
/* 1AA644 */ M2C_UNK gm_801AA644();
/* 1AA664 */ M2C_UNK gm_801AA664();
/* 1AA688 */ M2C_UNK gm_801AA688();
/* 1AA6D8 */ M2C_UNK gm_801AA6D8();
/* 1AA6FC */ M2C_UNK gm_801AA6FC();
/* 1AA774 */ M2C_UNK gm_801AA774();
/* 1AA7C4 */ M2C_UNK gm_801AA7C4();
/* 1AA7F8 */ M2C_UNK fn_801AA7F8();
/* 1AA854 */ M2C_UNK fn_801AA854();
/* 1AAA28 */ M2C_UNK fn_801AAA28();
/* 1AAABC */ M2C_UNK fn_801AAABC();
/* 1AAB18 */ M2C_UNK fn_801AAB18();
/* 1AAB74 */ M2C_UNK fn_801AAB74();
/* 1AB200 */ M2C_UNK fn_801AB200();
/* 1AC67C */ M2C_UNK fn_801AC67C();
/* 1AC6D8 */ M2C_UNK gm_801AC6D8();
/* 1ACC94 */ M2C_UNK gm_801ACC94(void);
/* 1ACCA0 */ M2C_UNK gm_801ACCA0();
/* 1ACD8C */ M2C_UNK gm_801ACD8C();
/* 1ACE94 */ M2C_UNK gm_801ACE94();
/* 1ACF8C */ M2C_UNK gm_801ACF8C();
/* 1AD088 */ M2C_UNK gm_801AD088();
/* 1AD254 */ M2C_UNK gm_801AD254();
/* 1AD620 */ M2C_UNK gm_801AD620();
/* 1AD874 */ M2C_UNK gm_801AD874();
/* 1AD8EC */ M2C_UNK gm_801AD8EC();
/* 1AD920 */ M2C_UNK fn_801AD920();
/* 1ADB04 */ M2C_UNK gm_801ADB04();
/* 1ADC88 */ M2C_UNK gm_801ADC88();
/* 1ADCE4 */ M2C_UNK gm_801ADCE4();
/* 1ADDA8 */ M2C_UNK gm_801ADDA8();
/* 1ADDD8 */ M2C_UNK gm_801ADDD8();
/* 1ADE1C */ M2C_UNK gm_801ADE1C();
/* 1AE050 */ M2C_UNK gm_801AE050();
/* 1AE44C */ M2C_UNK gm_801AE44C();
/* 1AE544 */ M2C_UNK gm_801AE544();
/* 1AE640 */ M2C_UNK gm_801AE640();
/* 1AE74C */ M2C_UNK gm_801AE74C();
/* 1AE848 */ M2C_UNK gm_801AE848();
/* 1AE948 */ M2C_UNK fn_801AE948();
/* 1AEBB0 */ M2C_UNK gm_801AEBB0();
/* 1AECC4 */ M2C_UNK gm_801AECC4();
/* 1AEDC8 */ M2C_UNK gm_801AEDC8();
/* 1AEE6C */ M2C_UNK gm_801AEE6C();
/* 1AF0D4 */ M2C_UNK gm_801AF0D4();
/* 1AF250 */ M2C_UNK gm_801AF250();
/* 1AF568 */ M2C_UNK gm_801AF568();
/* 1B0264 */ M2C_UNK gm_801B0264();
/* 1B0304 */ M2C_UNK gm_801B0304();
/* 1B0348 */ M2C_UNK gm_801B0348();
/* 1B0474 */ M2C_UNK gm_801B0474();
/* 1B05F4 */ M2C_UNK gm_801B05F4();
/* 1B0620 */ M2C_UNK gm_801B0620();
/* 1B0664 */ M2C_UNK gm_801B0664();
/* 1B06B0 */ M2C_UNK gm_801B06B0();
/* 1B0730 */ M2C_UNK gm_801B0730();
/* 1B07B4 */ M2C_UNK gm_801B07B4();
/* 1B07E8 */ M2C_UNK gm_801B07E8();
/* 1B087C */ M2C_UNK gm_801B087C();
/* 1B089C */ M2C_UNK gm_801B089C();
/* 1B099C */ M2C_UNK gm_801B099C();
/* 1B09C0 */ M2C_UNK gm_801B09C0();
/* 1B09F8 */ M2C_UNK fn_801B09F8();
/* 1B0A34 */ M2C_UNK gm_801B0A34();
/* 1B0A8C */ M2C_UNK fn_801B0A8C();
/* 1B0AC8 */ M2C_UNK gm_801B0AC8();
/* 1B0B00 */ M2C_UNK gm_801B0B00();
/* 1B0B24 */ M2C_UNK gm_801B0B24();
/* 1B0B48 */ M2C_UNK gm_801B0B48();
/* 1B0B8C */ M2C_UNK gm_801B0B8C();
/* 1B0BF0 */ M2C_UNK gm_801B0BF0();
/* 1B0C18 */ M2C_UNK gm_801B0C18();
/* 1B0C50 */ M2C_UNK gm_801B0C50();
/* 1B0C74 */ M2C_UNK gm_801B0C74();
/* 1B0CF0 */ M2C_UNK gm_801B0CF0();
/* 1B0DD0 */ M2C_UNK gm_801B0DD0();
/* 1B0F1C */ M2C_UNK gm_801B0F1C();
/* 1B0F60 */ M2C_UNK gm_801B0F60();
/* 1B0F90 */ M2C_UNK gm_801B0F90();
/* 1B0FB8 */ M2C_UNK gm_801B0FB8();
/* 1B0FF8 */ M2C_UNK gm_801B0FF8();
/* 1B138C */ M2C_UNK gm_801B138C();
/* 1B13B8 */ M2C_UNK gm_801B13B8();
/* 1B14A0 */ M2C_UNK gm_801B14A0();
/* 1B14DC */ M2C_UNK gm_801B14DC();
/* 1B1514 */ M2C_UNK gm_801B1514();
/* 1B154C */ M2C_UNK gm_801B154C();
/* 1B1588 */ M2C_UNK gm_801B1588();
/* 1B15C8 */ M2C_UNK gm_801B15C8();
/* 1B1648 */ M2C_UNK gm_801B1648();
/* 1B1688 */ M2C_UNK gm_801B1688();
/* 1B16A8 */ M2C_UNK gm_801B16A8();
/* 1B16C8 */ M2C_UNK gm_801B16C8();
/* 1B1724 */ M2C_UNK gm_801B1724();
/* 1B174C */ M2C_UNK gm_801B174C();
/* 1B1788 */ M2C_UNK gm_801B1788();
/* 1B1810 */ M2C_UNK gm_801B1810();
/* 1B1834 */ M2C_UNK gm_801B1834();
/* 1B18D4 */ M2C_UNK gm_801B18D4();
/* 1B1A2C */ M2C_UNK gm_801B1A2C();
/* 1B1A84 */ M2C_UNK gm_801B1A84();
/* 1B1AD4 */ M2C_UNK gm_801B1AD4();
/* 1B1B74 */ M2C_UNK gm_801B1B74();
/* 1B1C24 */ M2C_UNK gm_801B1C24();
/* 1B1EB8 */ M2C_UNK gm_801B1EB8();
/* 1B1EEC */ M2C_UNK gm_801B1EEC();
/* 1B1F6C */ M2C_UNK fn_801B1F6C();
/* 1B1F70 */ M2C_UNK gm_801B1F70();
/* 1B2204 */ M2C_UNK gm_801B2204();
/* 1B2298 */ M2C_UNK gm_801B2298();
/* 1B23C4 */ M2C_UNK gm_801B23C4();
/* 1B23F0 */ M2C_UNK gm_801B23F0();
/* 1B24B4 */ M2C_UNK gm_801B24B4();
/* 1B2510 */ M2C_UNK gm_801B2510();
/* 1B254C */ M2C_UNK gm_801B254C();
/* 1B25D4 */ M2C_UNK gm_801B25D4();
/* 1B26AC */ M2C_UNK gm_801B26AC();
/* 1B2704 */ M2C_UNK gm_801B2704();
/* 1B2790 */ M2C_UNK gm_801B2790();
/* 1B2AF8 */ M2C_UNK gm_801B2AF8();
/* 1B2B7C */ M2C_UNK gm_801B2B7C();
/* 1B2BA4 */ M2C_UNK gm_801B2BA4();
/* 1B2D54 */ M2C_UNK gm_801B2D54();
/* 1B2F78 */ M2C_UNK gm_801B2F78();
/* 1B34B8 */ M2C_UNK gm_801B34B8();
/* 1B3500 */ M2C_UNK gm_801B3500();
/* 1B3A34 */ M2C_UNK gm_801B3A34();
/* 1B3B40 */ M2C_UNK gm_801B3B40();
/* 1B3D44 */ M2C_UNK gm_801B3D44();
/* 1B3D84 */ M2C_UNK gm_801B3D84();
/* 1B3DD8 */ M2C_UNK gm_801B3DD8();
/* 1B3E44 */ M2C_UNK gm_801B3E44();
/* 1B3F18 */ M2C_UNK gm_801B3F18();
/* 1B3F40 */ M2C_UNK gm_801B3F40();
/* 1B4064 */ M2C_UNK gm_801B4064();
/* 1B4170 */ M2C_UNK gm_801B4170();
/* 1B4254 */ M2C_UNK gm_801B4254();
/* 1B4294 */ M2C_UNK gm_801B4294();
/* 1B42E8 */ M2C_UNK gm_801B42E8();
/* 1B4350 */ M2C_UNK gm_801B4350();
/* 1B4408 */ M2C_UNK gm_801B4408();
/* 1B4430 */ M2C_UNK gm_801B4430();
/* 1B44A0 */ M2C_UNK gm_801B44A0();
/* 1B45A4 */ M2C_UNK gm_801B45A4();
/* 1B461C */ M2C_UNK gm_801B461C();
/* 1B4684 */ M2C_UNK gm_801B4684();
/* 1B4768 */ M2C_UNK gm_801B4768();
/* 1B47FC */ M2C_UNK gm_801B47FC();
/* 1B4860 */ M2C_UNK gm_801B4860();
/* 1B4974 */ M2C_UNK gm_801B4974();
/* 1B4B28 */ M2C_UNK gm_801B4B28();
/* 1B4C5C */ M2C_UNK gm_801B4C5C();
/* 1B4D34 */ M2C_UNK gm_801B4D34();
/* 1B4DAC */ M2C_UNK gm_801B4DAC();
/* 1B4E58 */ M2C_UNK gm_801B4E58();
/* 1B4EB8 */ M2C_UNK gm_801B4EB8();
/* 1B4F44 */ M2C_UNK gm_801B4F44();
/* 1B4FCC */ M2C_UNK gm_801B4FCC();
/* 1B5078 */ M2C_UNK gm_801B5078();
/* 1B50C4 */ M2C_UNK gm_801B50C4();
/* 1B518C */ M2C_UNK gm_801B518C();
/* 1B51CC */ M2C_UNK gm_801B51CC();
/* 1B5214 */ M2C_UNK gm_801B5214();
/* 1B5324 */ M2C_UNK gm_801B5324();
/* 1B5624 */ M2C_UNK gm_801B5624();
/* 1B59AC */ M2C_UNK gm_801B59AC();
/* 1B5AA8 */ M2C_UNK fn_801B5AA8();
/* 1B5ACC */ M2C_UNK gm_801B5ACC();
/* 1B5E7C */ M2C_UNK gm_801B5E7C();
/* 1B5EB4 */ M2C_UNK gm_801B5EB4();
/* 1B5EE4 */ M2C_UNK gm_801B5EE4();
/* 1B5F50 */ M2C_UNK gm_801B5F50();
/* 1B5FB4 */ M2C_UNK gm_801B5FB4();
/* 1B607C */ M2C_UNK gm_801B607C();
/* 1B60A4 */ M2C_UNK gm_801B60A4();
/* 1B62D8 */ M2C_UNK gm_801B62D8();
/* 1B632C */ M2C_UNK gm_801B632C();
/* 1B63C4 */ M2C_UNK gm_801B63C4();
/* 1B6428 */ M2C_UNK gm_801B6428();
/* 1B65D4 */ M2C_UNK gm_801B65D4();
/* 1B67E8 */ M2C_UNK gm_801B67E8();
/* 1B6808 */ M2C_UNK gm_801B6808();
/* 1B6834 */ M2C_UNK gm_801B6834();
/* 1B685C */ M2C_UNK gm_801B685C();
/* 1B688C */ M2C_UNK gm_801B688C();
/* 1B69C0 */ M2C_UNK gm_801B69C0();
/* 1B6AD8 */ M2C_UNK gm_801B6AD8();
/* 1B6B70 */ M2C_UNK gm_801B6B70();
/* 1B6BE8 */ M2C_UNK gm_801B6BE8();
/* 1B6F44 */ M2C_UNK gm_801B6F44();
/* 1B7044 */ M2C_UNK gm_801B7044();
/* 1B70DC */ M2C_UNK gm_801B70DC();
/* 1B7154 */ M2C_UNK gm_801B7154();
/* 1B74F0 */ M2C_UNK gm_801B74F0();
/* 1B75F0 */ M2C_UNK gm_801B75F0();
/* 1B7688 */ M2C_UNK gm_801B7688();
/* 1B7700 */ M2C_UNK gm_801B7700();
/* 1B7AA0 */ M2C_UNK gm_801B7AA0();
/* 1B7B74 */ M2C_UNK gm_801B7B74();
/* 1B7C0C */ M2C_UNK gm_801B7C0C();
/* 1B7C84 */ M2C_UNK gm_801B7C84();
/* 1B8024 */ M2C_UNK gm_801B8024();
/* 1B8110 */ M2C_UNK gm_801B8110();
/* 1B81A8 */ M2C_UNK gm_801B81A8();
/* 1B8220 */ M2C_UNK gm_801B8220();
/* 1B8580 */ M2C_UNK gm_801B8580();
/* 1B863C */ M2C_UNK gm_801B863C();
/* 1B86D4 */ M2C_UNK gm_801B86D4();
/* 1B874C */ M2C_UNK gm_801B874C();
/* 1B8AF8 */ M2C_UNK gm_801B8AF8();
/* 1B8BB4 */ M2C_UNK gm_801B8BB4();
/* 1B8BE0 */ M2C_UNK gm_801B8BE0();
/* 1B8C08 */ M2C_UNK gm_801B8C08();
/* 1B8C30 */ M2C_UNK gm_801B8C30();
/* 1B8C68 */ M2C_UNK gm_801B8C68();
/* 1B8C9C */ M2C_UNK gm_801B8C9C();
/* 1B8CC4 */ M2C_UNK gm_801B8CC4();
/* 1B8CF4 */ M2C_UNK gm_801B8CF4();
/* 1B8D14 */ M2C_UNK gm_801B8D14();
/* 1B8D34 */ M2C_UNK gm_801B8D34();
/* 1B8D60 */ M2C_UNK gm_801B8D60();
/* 1B8D88 */ M2C_UNK gm_801B8D88();
/* 1B8DA8 */ M2C_UNK gm_801B8DA8();
/* 1B8DD4 */ M2C_UNK gm_801B8DD4();
/* 1B8DFC */ M2C_UNK gm_801B8DFC();
/* 1B8E24 */ M2C_UNK gm_801B8E24();
/* 1B8E50 */ M2C_UNK fn_801B8E50();
/* 1B8E74 */ M2C_UNK gm_801B8E74();
/* 1B8EA8 */ M2C_UNK gm_801B8EA8();
/* 1B8ED0 */ M2C_UNK gm_801B8ED0();
/* 1B8F04 */ M2C_UNK gm_801B8F04();
/* 1B8F24 */ M2C_UNK gm_801B8F24();
/* 1B8F44 */ M2C_UNK gm_801B8F44();
/* 1B8F70 */ M2C_UNK gm_801B8F70();
/* 1B8F98 */ M2C_UNK gm_801B8F98();
/* 1B8FB8 */ M2C_UNK gm_801B8FB8();
/* 1B8FE4 */ M2C_UNK gm_801B8FE4();
/* 1B900C */ M2C_UNK gm_801B900C();
/* 1B9034 */ M2C_UNK gm_801B9034();
/* 1B9060 */ M2C_UNK fn_801B9060();
/* 1B9084 */ M2C_UNK gm_801B9084();
/* 1B90B8 */ M2C_UNK gm_801B90B8();
/* 1B90E0 */ M2C_UNK gm_801B90E0();
/* 1B9114 */ M2C_UNK gm_801B9114();
/* 1B9134 */ M2C_UNK gm_801B9134();
/* 1B9154 */ M2C_UNK gm_801B9154();
/* 1B9180 */ M2C_UNK gm_801B9180();
/* 1B91A8 */ M2C_UNK gm_801B91A8();
/* 1B91C8 */ M2C_UNK gm_801B91C8();
/* 1B922C */ M2C_UNK gm_801B922C();
/* 1B9254 */ M2C_UNK gm_801B9254();
/* 1B927C */ M2C_UNK gm_801B927C();
/* 1B931C */ M2C_UNK gm_801B931C();
/* 1B9560 */ M2C_UNK gm_801B9560();
/* 1B95B0 */ M2C_UNK gm_801B95B0();
/* 1B95D8 */ M2C_UNK gm_801B95D8();
/* 1B9600 */ M2C_UNK gm_801B9600();
/* 1B96E8 */ M2C_UNK fn_801B96E8();
/* 1B97C4 */ M2C_UNK gm_801B97C4();
/* 1B9850 */ M2C_UNK fn_801B9850();
/* 1B98E8 */ M2C_UNK gm_801B98E8();
/* 1B999C */ M2C_UNK gm_801B999C();
/* 1B9A3C */ M2C_UNK gm_801B9A3C();
/* 1B9DD8 */ M2C_UNK gm_801B9DD8();
/* 1B9EB8 */ M2C_UNK gm_801B9EB8();
/* 1B9EE4 */ M2C_UNK gm_801B9EE4();
/* 1B9F10 */ M2C_UNK gm_801B9F10();
/* 1B9F3C */ M2C_UNK gm_801B9F3C();
/* 1B9F64 */ M2C_UNK gm_801B9F64();
/* 1B9F8C */ M2C_UNK gm_801B9F8C();
/* 1B9FC8 */ M2C_UNK gm_801B9FC8();
/* 1B9FFC */ M2C_UNK gm_801B9FFC();
/* 1BA024 */ M2C_UNK gm_801BA024();
/* 1BA058 */ M2C_UNK gm_801BA058();
/* 1BA078 */ M2C_UNK gm_801BA078();
/* 1BA098 */ M2C_UNK gm_801BA098();
/* 1BA0C4 */ M2C_UNK gm_801BA0C4();
/* 1BA0EC */ M2C_UNK gm_801BA0EC();
/* 1BA10C */ M2C_UNK gm_801BA10C();
/* 1BA138 */ M2C_UNK gm_801BA138();
/* 1BA160 */ M2C_UNK gm_801BA160();
/* 1BA188 */ M2C_UNK gm_801BA188();
/* 1BA1C8 */ M2C_UNK gm_801BA1C8();
/* 1BA1FC */ M2C_UNK gm_801BA1FC();
/* 1BA224 */ M2C_UNK gm_801BA224();
/* 1BA258 */ M2C_UNK gm_801BA258();
/* 1BA278 */ M2C_UNK gm_801BA278();
/* 1BA298 */ M2C_UNK gm_801BA298();
/* 1BA2C4 */ M2C_UNK gm_801BA2C4();
/* 1BA2EC */ M2C_UNK gm_801BA2EC();
/* 1BA30C */ M2C_UNK gm_801BA30C();
/* 1BA338 */ M2C_UNK gm_801BA338();
/* 1BA360 */ M2C_UNK gm_801BA360();
/* 1BA388 */ M2C_UNK gm_801BA388();
/* 1BA3C8 */ M2C_UNK gm_801BA3C8();
/* 1BA3FC */ M2C_UNK gm_801BA3FC();
/* 1BA424 */ M2C_UNK gm_801BA424();
/* 1BA458 */ M2C_UNK gm_801BA458();
/* 1BA478 */ M2C_UNK gm_801BA478();
/* 1BA498 */ M2C_UNK gm_801BA498();
/* 1BA4C4 */ M2C_UNK gm_801BA4C4();
/* 1BA4EC */ M2C_UNK gm_801BA4EC();
/* 1BA50C */ M2C_UNK gm_801BA50C();
/* 1BA538 */ M2C_UNK gm_801BA538();
/* 1BA560 */ M2C_UNK gm_801BA560();
/* 1BA588 */ M2C_UNK gm_801BA588();
/* 1BA5C0 */ M2C_UNK gm_801BA5C0();
/* 1BA5F4 */ M2C_UNK gm_801BA5F4();
/* 1BA61C */ M2C_UNK gm_801BA61C();
/* 1BA650 */ M2C_UNK gm_801BA650();
/* 1BA670 */ M2C_UNK gm_801BA670();
/* 1BA690 */ M2C_UNK gm_801BA690();
/* 1BA6BC */ M2C_UNK gm_801BA6BC();
/* 1BA6E4 */ M2C_UNK gm_801BA6E4();
/* 1BA704 */ M2C_UNK gm_801BA704();
/* 1BA730 */ M2C_UNK gm_801BA730();
/* 1BA758 */ M2C_UNK gm_801BA758();
/* 1BA780 */ M2C_UNK gm_801BA780();
/* 1BA7B8 */ M2C_UNK gm_801BA7B8();
/* 1BA7EC */ M2C_UNK gm_801BA7EC();
/* 1BA814 */ M2C_UNK gm_801BA814();
/* 1BA848 */ M2C_UNK gm_801BA848();
/* 1BA868 */ M2C_UNK gm_801BA868();
/* 1BA888 */ M2C_UNK gm_801BA888();
/* 1BA8B4 */ M2C_UNK gm_801BA8B4();
/* 1BA8DC */ M2C_UNK gm_801BA8DC();
/* 1BA8FC */ M2C_UNK gm_801BA8FC();
/* 1BA938 */ M2C_UNK gm_801BA938();
/* 1BAA60 */ M2C_UNK gm_801BAA60();
/* 1BAAD0 */ M2C_UNK gm_801BAAD0();
/* 1BAB40 */ M2C_UNK gm_801BAB40();
/* 1BAC9C */ M2C_UNK gm_801BAC9C();
/* 1BAD70 */ M2C_UNK gm_801BAD70();
/* 1BB758 */ M2C_UNK gm_801BB758();
/* 1BBA60 */ M2C_UNK gm_801BBA60();
/* 1BBB64 */ M2C_UNK gm_801BBB64();
/* 1BBEA8 */ M2C_UNK gm_801BBEA8();
/* 1BBFE8 */ M2C_UNK fn_801BBFE8();
/* 1BC00C */ M2C_UNK gm_801BC00C();
/* 1BC488 */ M2C_UNK gm_801BC488();
/* 1BC4F4 */ M2C_UNK gm_801BC4F4();
/* 1BC670 */ M2C_UNK gm_801BC670();
/* 1BC754 */ M2C_UNK gm_801BC754();
/* 1BC9E8 */ M2C_UNK gm_801BC9E8();
/* 1BCAF0 */ M2C_UNK gm_801BCAF0();
/* 1BCC9C */ M2C_UNK gm_801BCC9C();
/* 1BCF20 */ M2C_UNK gm_801BCF20();
/* 1BCF40 */ M2C_UNK gm_801BCF40();
/* 1BD028 */ M2C_UNK gm_801BD028();
/* 1BD164 */ M2C_UNK gm_801BD164();
/* 1BD30C */ M2C_UNK gm_801BD30C();
/* 1BD44C */ M2C_UNK gm_801BD44C();
/* 1BD46C */ M2C_UNK gm_801BD46C();
/* 1BD658 */ M2C_UNK gm_801BD658();
/* 1BD7FC */ M2C_UNK gm_801BD7FC();
/* 1BD93C */ M2C_UNK gm_801BD93C();
/* 1BDAD4 */ M2C_UNK gm_801BDAD4();
/* 1BDAF4 */ M2C_UNK gm_801BDAF4();
/* 1BDC08 */ M2C_UNK gm_801BDC08();
/* 1BDD44 */ M2C_UNK gm_801BDD44();
/* 1BDE94 */ M2C_UNK gm_801BDE94();
/* 1BE37C */ M2C_UNK gm_801BE37C();
/* 1BE39C */ M2C_UNK gm_801BE39C();
/* 1BE618 */ M2C_UNK gm_801BE618();
/* 1BE638 */ M2C_UNK gm_801BE638();
/* 1BEA10 */ M2C_UNK gm_801BEA10();
/* 1BEA4C */ M2C_UNK gm_801BEA4C();
/* 1BEA88 */ M2C_UNK gm_801BEA88();
/* 1BEAF0 */ M2C_UNK gm_801BEAF0();
/* 1BEB2C */ M2C_UNK gm_801BEB2C();
/* 1BEB68 */ void gm_801BEB68(s32);
/* 1BEB74 */ void gm_801BEB74(u8);
/* 1BEB80 */ u8 gm_801BEB80(void);
/* 1BEB8C */ M2C_UNK gm_801BEB8C();
/* 1BEBA8 */ M2C_UNK gm_801BEBA8();
/* 1BEBC0 */ M2C_UNK gm_801BEBC0();
/* 1BEBF8 */ M2C_UNK gm_801BEBF8();
/* 1BEC54 */ void* gm_801BEC54(void);
/* 1BEC80 */ M2C_UNK gm_801BEC80();
/* 1BECA8 */ M2C_UNK gm_801BECA8();
/* 1BECD0 */ M2C_UNK gm_801BECD0();
/* 1BED14 */ M2C_UNK gm_801BED14();
/* 1BED3C */ M2C_UNK gm_801BED3C();
/* 1BEDA8 */ M2C_UNK gm_801BEDA8();
/* 1BEE58 */ M2C_UNK gm_801BEE58();
/* 1BEE9C */ M2C_UNK gm_801BEE9C();
/* 1BEF84 */ M2C_UNK gm_801BEF84();
/* 1BEFA4 */ void gm_801BEFA4(s8);
/* 1BEFF0 */ M2C_UNK gm_801BEFF0();
/* 1BF000 */ M2C_UNK gm_801BF000();
/* 1BF010 */ M2C_UNK gm_801BF010();
/* 1BF020 */ M2C_UNK gm_801BF020();
/* 1BF030 */ M2C_UNK gm_801BF030();
/* 1BF040 */ M2C_UNK gm_801BF040();
/* 1BF050 */ M2C_UNK gm_801BF050();
/* 1BF060 */ M2C_UNK gm_801BF060();
/* 1BF128 */ M2C_UNK gm_801BF128();
/* 1BF3F8 */ M2C_UNK gm_801BF3F8();
/* 1BF4DC */ M2C_UNK gm_801BF4DC();
/* 1BF634 */ M2C_UNK gm_801BF634();
/* 1BF648 */ M2C_UNK gm_801BF648();
/* 1BF65C */ M2C_UNK gm_801BF65C();
/* 1BF670 */ M2C_UNK gm_801BF670();
/* 1BF6A8 */ M2C_UNK gm_801BF6A8();
/* 1BF6B8 */ M2C_UNK gm_801BF6B8();
/* 1BF6C8 */ M2C_UNK gm_801BF6C8();
/* 1BF6D8 */ M2C_UNK gm_801BF6D8();
/* 1BF6E8 */ M2C_UNK gm_801BF6E8();
/* 1BF6F8 */ M2C_UNK gm_801BF6F8();
/* 1BF708 */ M2C_UNK gm_801BF708();
/* 1BF718 */ M2C_UNK gm_801BF718();
/* 1BF728 */ M2C_UNK gm_801BF728();
/* 1BF834 */ M2C_UNK gm_801BF834();
/* 1BF85C */ M2C_UNK gm_801BF85C();
/* 1BF898 */ M2C_UNK gm_801BF898();
/* 1BF8B8 */ M2C_UNK gm_801BF8B8();
/* 1BF8D8 */ M2C_UNK gm_801BF8D8();
/* 1BF8F8 */ M2C_UNK gm_801BF8F8();
/* 1BF920 */ M2C_UNK gm_801BF920();
/* 1BF948 */ M2C_UNK gm_801BF948();
/* 1BF9A8 */ void gm_801BF9A8(M2C_UNK);
/* 1BFA3C */ M2C_UNK gm_801BFA3C();
/* 1BFA6C */ M2C_UNK gm_801BFA6C();
/* 1BFABC */ M2C_UNK gm_801BFABC();
/* 1BFBA8 */ M2C_UNK gm_801BFBA8();
/* 1BFC60 */ M2C_UNK gm_801BFC60();
/* 1BFCFC */ M2C_UNK gm_801BFCFC();
/* 1BFF7C */ M2C_UNK gm_801BFF7C();
/// @todo Move to C file
#define __GALE01_1A3680
typedef struct MajorScene MajorScene;
typedef struct MinorScene MinorScene;
typedef struct MinorSceneHandler MinorSceneHandler;
struct MinorScene {
u8 idx;
u8 preload;
u16 flags;
void (*Prep)(MinorScene*);
void (*Decide)(MinorScene*);
u8 class_id;
void* unk_struct_0;
void* unk_struct_1;
};
struct MajorScene {
u8 preload;
u8 idx;
void (*Load)(void);
void (*Unload)(void);
void (*Init)(void);
MinorScene* minor_scenes;
}; // 803DACA4
struct MinorSceneHandler {
u8 class_id;
void (*OnFrame)(void);
void (*OnLoad)(u32);
void (*OnLeave)(u32);
void (*unk_func)(void);
}; // 803DA920
typedef struct {
u8 curr_major;
u8 pending_major;
u8 prev_major;
u8 curr_minor;
u8 prev_minor;
u8 pending_minor;
} SceneNums;
typedef struct {
SceneNums nums;
SceneNums nums2;
u8 pending;
u8 x0D;
u8 x0E;
u8 x0F;
void* data;
} GameState;
struct { int x[1 - 2 * !(sizeof(GameState) == 0x14)]; };;
struct sceneData {
u32 a;
u8 scene_id;
};
struct gm_80479D58_t {
/* 0x00 */ struct gm_80479D58_t* unk_0;
/* 0x04 */ char pad_4[4];
/* 0x08 */ s32 unk_8;
/* 0x0C */ s32 unk_C; /* inferred */
/* 0x10 */ u8 unk_10;
/* 0x11 */ char pad_11[3]; /* maybe part of unk_10[4]? */
/* 0x14 */ s32 unk_14;
/* 0x18 */ s32 unk_18;
/* 0x1C */ char pad_1C[0x24]; /* maybe part of unk_18[0xA]? */
}; /* size = 0x40 */
struct { int x[1 - 2 * !(sizeof(struct gm_80479D58_t) == 0x40)]; };;
struct gm_8049E548_t {
/* 0x00 */ char pad_0[8];
/* 0x08 */ s8 unk_8;
/* 0x09 */ u8 unk_9;
/* 0x0A */ s8 unk_A;
/* 0x0B */ char pad_B[1];
/* 0x0C */ u16 unk_C;
/* 0x0E */ s8 unk_E; /* inferred */
/* 0x0F */ char pad_F[1];
}; /* size = 0x10 */
struct { int x[1 - 2 * !(sizeof(struct gm_8049E548_t) == 0x10)]; };;
struct fn_801BA1B4_arg0_t {
char pad_0[0x2];
/* +2:0 */ u8 x2_b0 : 1;
/* +2:1 */ u8 x2_b1 : 1;
/* +2:2 */ u8 x2_b2 : 1;
/* +2:3 */ u8 x2_b3 : 1;
/* +2:4 */ u8 x2_b4 : 1;
/* +2:5 */ u8 x2_b5 : 1;
/* +2:6 */ u8 x2_b6 : 1;
/* +2:7 */ u8 x2_b7 : 1;
};
struct fn_801BA3B4_arg0_t {
char pad_0[0xC];
/* +C:0 */ u8 xC_b0 : 1;
/* +C:1 */ u8 xC_b1 : 1;
/* +C:2 */ u8 xC_b2 : 1;
/* +C:3 */ u8 xC_b3 : 1;
/* +C:4 */ u8 xC_b4 : 1;
/* +C:5 */ u8 xC_b5 : 1;
/* +C:6 */ u8 xC_b6 : 1;
/* +C:7 */ u8 xC_b7 : 1;
};
typedef struct gm_controller_map gm_controller_map;
struct gm_controller_map {
u64 button;
u64 trigger;
u64 repeat;
u64 release;
u64 unk;
s32 x28;
s32 x2C;
};
/* 1A3F48 */ static void gm_801A3F48(MinorScene*);
/* 1A4014 */ static void gm_801A4014(MajorScene* scene);
/* 1A4284 */ static M2C_UNK gm_801A4284(M2C_UNK);
/* 1A42B4 */ static u8 gm_801A42B4(void);
/* 1A42C4 */ static u8 gm_801A42C4(void);
/* 1A42E8 */ static void gm_801A42E8(s8 arg0);
/* 1A42F8 */ static void gm_801A42F8(int);
/* 1A4310 */ static M2C_UNK gm_800A4310();
/* 1A4320 */ static u8 gm_801A4320(void);
/* 1A4330 */ static void gm_801A4330(void*);
/* 1A4624 */ static u8 gm_801A4624(void);
/* 1A4B40 */ static void gm_801A4B40(s32 arg0);
/* 1A4B50 */ static void gm_801A4B50(s32 arg0);
/* 1A4B88 */ static void gm_801A4B88(void*);
/* 1A4BB8 */ static s32 gm_801A4BB8(void);
/* 1A4BD4 */ static void gm_801A4BD4(void);
/* 1A4CE0 */ static MinorSceneHandler* gm_801A4CE0(u8);
/* 1A4D34 */ static void gm_801A4D34(void*);
/* 1A50A0 */ static MajorScene* gm_801A50A0(void);
/* 1A50AC */ static MajorScene* gm_801A50AC(void);
/* 1A5244 */ static s8* gm_801A5244(void);
/* 1A5614 */ static void gm_801A5614(void);
/* 1ACC90 */ static void gm_801ACC90(void);
/* 1B6320 */ static M2C_UNK gm_801B6320(void);
/* 1B8C5C */ static void fn_801B8C5C(M2C_UNK);
/* 1B9FB8 */ static void fn_801B9FB8(void* arg0);
/* 1BA1B4 */ static void fn_801BA1B4(struct fn_801BA1B4_arg0_t*);
/* 1BA3B4 */ void fn_801BA3B4(struct fn_801BA3B4_arg0_t* arg0);
/* 1BA5B4 */ static void fn_801BA5B4(M2C_UNK);
/* 1BA7AC */ static void fn_801BA7AC(M2C_UNK);
/* 1BBFE4 */ static void gm_801BBFE4(void);
/* 1BEFB0 */ static u8 gm_801BEFB0(void);
/* 1BEFC0 */ static void gm_801BEFC0(s8 arg0);
/* 1BEFD0 */ static u8 gm_801BEFD0(void);
/* 1BEFE0 */ static void gm_801BEFE0(s8 arg0);
/* 1BF684 */ static void gm_801BF684(s16 arg0);
/* 1BF694 */ static u8 gm_801BF694(void);
/* 2A3EF4 */ static void gm_801A3EF4(void);
static u64 gm_803DA788;
static gm_controller_map gm_80479C30[4];
static gm_controller_map controller_union;
void (*gm_80479D20)(s32);
s32 gm_80479D24;
/* 3DA920 */ static MajorScene gm_803DA920;
/* 3DACA4 */ static MajorScene gm_803DACA4;
/* 3DD2C0 */ static int gm_803DD2C0[74];
/* 479D30 */ static GameState gm_80479D30;
/* 479D58 */ static struct gm_80479D58_t gm_80479D58;
/* 49C178 */ static s8 gm_8049C178[16];
/* 49E548 */ static struct gm_8049E548_t gm_8049E548;
/* 4D6720 */ static M2C_UNK gm_804D6720;
/* 4D672C */ static s32 gm_804D672C;
/* 4D6730 */ static M2C_UNK gm_804D6730;
#define GALE01_1A2224
typedef struct _gmCameraUnkStruct3 {
/*0x00*/ u8 x0_padding[0x24 - 0x0];
/*0x24*/ float x24;
/*0x28*/ float x28;
/*0x2C*/ u8 x2C_padding[0x49 - 0x2C];
/*0x49*/ u8 x49;
} gmCameraUnkStruct3;
typedef struct _gmCameraUnkStruct2 {
/*0x00*/ u8 x0_padding[0x24 - 0x0];
/*0x24*/ u32 x24;
/*0x28*/ u32 x28;
/*0x2C*/ int x2C;
/*0x30*/ u32 x30;
} gmCameraUnkStruct2;
typedef struct _gmCameraUnkStruct {
/*0x00*/ u8 x0_padding[0x20 - 0x0];
/*0x20*/ u32 x20;
/*0x24*/ u32 x24;
/*0x28*/ u8 x28_padding[0x54 - 0x28];
/*0x54*/ u32 x54;
} gmCameraUnkStruct;
typedef struct _gmCameraUnkStructPtrs {
/*0x00*/ u8 x0_padding[0x58 - 0x0];
} gmCameraUnkStruct2Ptrs;
union _gmCameraUnkUnion {
gmCameraUnkStruct gcus;
// gmCameraUnkStruct2* gcus2_ptrs[0x58/4];
gmCameraUnkStruct2Ptrs gcus2_ptrs;
};
/* 479BC8 */ static union _gmCameraUnkUnion gmCamera_80479BC8;
/* 4DA9B8 */ static float gmCamera_804DA9B8;
/* 4DA9BC */ static float gmCamera_804DA9BC;
/* 4DA9C0 */ static float gmCamera_804DA9C0;
/* 1A2224 */ u8* gmCamera_801A2224(u8* arg0, u32 arg1);
/* 1A2334 */ void* gmCamera_801A2334(int arg0, float argA, float argB);
/* 1A253C */ M2C_UNK gmCamera_801A253C();
/* 1A25C8 */ M2C_UNK gmCamera_801A25C8();
/* 1A2640 */ s32 gmCamera_801A2640(void);
/* 1A2650 */ M2C_UNK gmCamera_801A2650();
/* 1A26C0 */ M2C_UNK gmCamera_801A26C0();
/* 1A2798 */ M2C_UNK gmCamera_801A2798();
/* 1A2800 */ M2C_UNK gmCamera_801A2800();
/* 1A28AC */ M2C_UNK gmCamera_801A28AC();
/* 1A292C */ M2C_UNK gmCamera_801A292C();
/* 1A2AAC */ M2C_UNK gmCamera_801A2AAC();
/* 1A2BB0 */ M2C_UNK gmCamera_801A2BB0();
/* 1A2BF0 */ M2C_UNK gmCamera_801A2BF0();
/* 1A2D44 */ M2C_UNK gmCamera_801A2D44();
/* 1A2FBC */ M2C_UNK gmCamera_801A2FBC();
/* 1A2FFC */ M2C_UNK gmCamera_801A2FFC();
/* 1A3048 */ M2C_UNK gmCamera_801A3048();
/* 1A3098 */ M2C_UNK gmCamera_801A3098();
/* 1A30E4 */ M2C_UNK gmCamera_801A30E4();
/* 1A31D8 */ M2C_UNK fn_801A31D8();
/* 1A31FC */ M2C_UNK gmCamera_801A31FC();
/* 1A33BC */ M2C_UNK gmCamera_801A33BC();
/* 1A34FC */ M2C_UNK gmCamera_801A34FC();
/* 1A3634 */ M2C_UNK gmCamera_801A3634();
/* 1A367C */ M2C_UNK gmCamera_801A367C();
#define GALE01_15CC34
/* 15CC34 */ GameRules* gmMainLib_8015CC34(void);
/* 15CC40 */ void* gmMainLib_8015CC40(void);
/* 15CC4C */ void* gmMainLib_8015CC4C(void);
/* 15CC58 */ struct gmm_x1CB0* gmMainLib_8015CC58(void);
/* 15CC64 */ void* gmMainLib_8015CC64(s32);
/* 15CC78 */ void* gmMainLib_8015CC78(void);
/* 15CC84 */ void* gmMainLib_8015CC84(void);
/* 15CC90 */ void* gmMainLib_8015CC90(void);
/* 15CC9C */ void* gmMainLib_8015CC9C(s32);
/* 15CCE4 */ void* gmMainLib_8015CCE4(void);
/* 15CCF0 */ void* gmMainLib_8015CCF0(void);
/* 15CCFC */ void* gmMainLib_8015CCFC(void);
/* 15CD08 */ void* gmMainLib_8015CD08(void);
/* 15CD14 */ void* gmMainLib_8015CD14(void);
/* 15CD20 */ void* gmMainLib_8015CD20(void);
/* 15CD2C */ void* gmMainLib_8015CD2C(void);
/* 15CD38 */ void* gmMainLib_8015CD38(void);
/* 15CD44 */ void* gmMainLib_8015CD44(void);
/* 15CD50 */ void* gmMainLib_8015CD50(void);
/* 15CD5C */ void* gmMainLib_8015CD5C(void);
/* 15CD68 */ void* gmMainLib_8015CD68(void);
/* 15CD74 */ void* gmMainLib_8015CD74(void);
/* 15CD80 */ void* gmMainLib_8015CD80(void);
/* 15CD8C */ void* gmMainLib_8015CD8C(void);
/* 15CD98 */ void* gmMainLib_8015CD98(void);
/* 15CDA4 */ void* gmMainLib_8015CDA4(void);
/* 15CDB0 */ void* gmMainLib_8015CDB0(void);
/* 15CDBC */ void* gmMainLib_8015CDBC(void);
/* 15CDC8 */ void* gmMainLib_8015CDC8(void);
/* 15CDD4 */ void* gmMainLib_8015CDD4(void);
/* 15CDE0 */ void* gmMainLib_8015CDE0(void);
/* 15CDEC */ void gmMainLib_8015CDEC(void);
/* 15CE44 */ s8* gmMainLib_8015CE44(s32, s32);
/* 15CEB4 */ void gmMainLib_8015CEB4(s32);
/* 15CEFC */ s32 gmMainLib_8015CEFC(s32);
/* 15CF5C */ s32 gmMainLib_8015CF5C(s32);
/* 15CF70 */ void gmMainLib_8015CF70(s32, s32);
/* 15CF84 */ void gmMainLib_8015CF84(void);
/* 15CF94 */ s32 gmMainLib_8015CF94(void);
/* 15CFAC */ s32 func_8015CFAC(void);
/* 15CFB4 */ s8* gmMainLib_8015CFB4(u8);
/* 15CFCC */ s32 gmMainLib_8015CFCC(u8);
/* 15D00C */ void gmMainLib_8015D00C(u8);
/* 15D06C */ s32* gmMainLib_8015D06C(u8);
/* 15D084 */ s32* gmMainLib_8015D084(s32);
/* 15D0C0 */ s32* gmMainLib_8015D0C0(u8);
/* 15D0D8 */ s32 gmMainLib_8015D0D8(u8);
/* 15D0F4 */ s32 gmMainLib_8015D0F4(u8);
/* 15D134 */ void gmMainLib_8015D134(u8);
/* 15D194 */ s8* gmMainLib_8015D194(u8);
/* 15D1AC */ s32 gmMainLib_8015D1AC(u8);
/* 15D1C8 */ void gmMainLib_8015D1C8(u8, s32);
/* 15D1E8 */ s32* gmMainLib_8015D1E8(u8);
/* 15D200 */ s32 gmMainLib_8015D200(u8);
/* 15D21C */ s32 gmMainLib_8015D21C(u8);
/* 15D25C */ void gmMainLib_8015D25C(u8);
/* 15D2BC */ s8* gmMainLib_8015D2BC(u8);
/* 15D2D4 */ s32 gmMainLib_8015D2D4(u8);
/* 15D2F0 */ void gmMainLib_8015D2F0(u8, s32);
/* 15D310 */ s32* gmMainLib_8015D310(u8);
/* 15D328 */ s32 gmMainLib_8015D328(u8);
/* 15D344 */ s32 gmMainLib_8015D344(u8);
/* 15D384 */ void gmMainLib_8015D384(u8);
/* 15D3E4 */ s8* gmMainLib_8015D3E4(u8);
/* 15D3FC */ s32 gmMainLib_8015D3FC(u8);
/* 15D418 */ void gmMainLib_8015D418(u8, s32);
/* 15D438 */ s32* gmMainLib_8015D438(u8);
/* 15D450 */ s32* gmMainLib_8015D450(s32);
/* 15D48C */ s32 gmMainLib_8015D48C(u8);
/* 15D4A8 */ s32 gmMainLib_8015D4A8(u8);
/* 15D4E8 */ void gmMainLib_8015D4E8(u8, s32);
/* 15D508 */ s32 gmMainLib_8015D508(void);
/* 15D5DC */ s32 gmMainLib_8015D5DC(void);
/* 15D640 */ s32 gmMainLib_8015D640(void);
/* 15D6A4 */ s32* gmMainLib_8015D6A4(u8);
/* 15D6BC */ s32 gmMainLib_8015D6BC(u8);
/* 15D6D8 */ void gmMainLib_8015D6D8(u8, s32);
/* 15D6F8 */ s32* gmMainLib_8015D6F8(u8);
/* 15D710 */ s32 gmMainLib_8015D710(u8);
/* 15D72C */ void gmMainLib_8015D72C(u8, s32);
/* 15D74C */ s16* gmMainLib_8015D74C(u8);
/* 15D764 */ s32 gmMainLib_8015D764(u8);
/* 15D780 */ void gmMainLib_8015D780(u8);
/* 15D7A4 */ s16* gmMainLib_8015D7A4(u8);
/* 15D7BC */ s32* gmMainLib_8015D7BC(u8);
/* 15D7D4 */ s32* gmMainLib_8015D7D4(u8);
/* 15D7EC */ s16* gmMainLib_8015D7EC(u8);
/* 15D804 */ void* gmMainLib_8015D804(s32);
/* 15D818 */ s32 gmMainLib_8015D818(u32);
/* 15D8B0 */ void gmMainLib_8015D8B0(u32);
/* 15D8D8 */ s32 gmMainLib_8015D8D8(u32);
/* 15D8FC */ void gmMainLib_8015D8FC(u32);
/* 15D924 */ void gmMainLib_8015D924(u32);
/* 15D94C */ u32 gmMainLib_8015D94C(u32);
/* 15D970 */ u32* gmMainLib_8015D970(ssize_t idx);
/* 15D984 */ bool gmMainLib_8015D984(u32);
/* 15D9F4 */ void gmMainLib_8015D9F4(u32);
/* 15DA1C */ s32 gmMainLib_8015DA1C(u32);
/* 15DA40 */ void gmMainLib_8015DA40(u32);
/* 15DA68 */ void gmMainLib_8015DA68(u32);
/* 15DA90 */ int gmMainLib_8015DA90(u32);
/* 15DAB4 */ void gmMainLib_8015DAB4(u32);
/* 15DADC */ s32 gmMainLib_8015DADC(u32);
/* 15DB00 */ u8 gmMainLib_8015DB00(void);
/* 15DB0C */ void gmMainLib_8015DB0C(u8);
/* 15DB18 */ void gmMainLib_8015DB18(void);
/* 15DB2C */ void gmMainLib_8015DB2C(u8, s32);
/* 15DB6C */ u8 gmMainLib_8015DB6C(u8);
/* 15DB80 */ void gmMainLib_8015DB80(void);
/* 15DBF4 */ M2C_UNK gmMainLib_8015DBF4();
/* 15EA80 */ M2C_UNK gmMainLib_8015EA80();
/* 15ECB0 */ u8 gmMainLib_8015ECB0(void);
/* 15ECBC */ M2C_UNK gmMainLib_8015ECBC();
/* 15ED30 */ u8 gmMainLib_8015ED30(void);
/* 15ED3C */ u8 gmMainLib_8015ED3C(s32 arg0);
/* 15ED4C */ void gmMainLib_8015ED4C(s32 arg0, s8 arg1);
/* 15ED5C */ s32 gmMainLib_8015ED5C(void);
/* 15ED68 */ void gmMainLib_8015ED68(s32 arg0);
/* 15ED74 */ u8 gmMainLib_8015ED74(void);
/* 15ED80 */ void gmMainLib_8015ED80(u8);
/* 15ED8C */ u16* gmMainLib_8015ED8C(struct gmMainLib_8015ED8C_arg0_t*);
/* 15ED98 */ struct gmm_retval_ED98* gmMainLib_8015ED98(void);
/* 15EDA4 */ M2C_UNK gmMainLib_8015EDA4(void);
/* 15EDB0 */ struct gmm_retval_EDB0* gmMainLib_8015EDB0(void);
/* 15EDBC */ struct gmm_retval_EDBC* gmMainLib_8015EDBC(void);
/* 15EDC8 */ u8* gmMainLib_8015EDC8(void);
/* 15EDD4 */ s32 gmMainLib_8015EDD4(void);
/* 15EDE4 */ M2C_UNK gmMainLib_8015EDE4();
/* 15EDF8 */ M2C_UNK gmMainLib_8015EDF8();
/* 15EE0C */ s32 gmMainLib_8015EE0C(void);
/* 15EE1C */ M2C_UNK gmMainLib_8015EE1C();
/* 15EE30 */ M2C_UNK gmMainLib_8015EE30();
/* 15EE44 */ s32 gmMainLib_8015EE44(void);
/* 15EE54 */ M2C_UNK gmMainLib_8015EE54();
/* 15EE68 */ M2C_UNK gmMainLib_8015EE68();
/* 15EE90 */ s32 gmMainLib_8015EE90(void);
/* 15EEA0 */ M2C_UNK gmMainLib_8015EEA0();
/* 15EEB4 */ M2C_UNK gmMainLib_8015EEB4();
/* 15EEC8 */ M2C_UNK gmMainLib_8015EEC8();
/* 15EF30 */ M2C_UNK gmMainLib_8015EF30();
/* 15EF84 */ M2C_UNK gmMainLib_8015EF84();
/* 15F150 */ M2C_UNK gmMainLib_8015F150();
/* 15F260 */ M2C_UNK gmMainLib_8015F260();
/* 15F464 */ M2C_UNK gmMainLib_8015F464();
/* 15F490 */ M2C_UNK gmMainLib_8015F490();
/* 15F4BC */ M2C_UNK gmMainLib_8015F4BC();
/* 15F4E8 */ u8* gmMainLib_8015EDC8(void);
/* 15F4F4 */ void gmMainLib_8015F4F4(u8 arg0);
/* 15F500 */ M2C_UNK gmMainLib_8015F500();
/* 15F588 */ M2C_UNK gmMainLib_8015F588();
/* 15F600 */ M2C_UNK gmMainLib_8015F600();
/* 15FA34 */ M2C_UNK gmMainLib_8015FA34();
/* 15FB68 */ M2C_UNK gmMainLib_8015FB68();
/* 15FBA4 */ void gmMainLib_8015FBA4(void);
/* 15FC74 */ M2C_UNK gmMainLib_8015FC74();
/* 15FCC0 */ void gmMainLib_8015FCC0(void);
/* 46B0F0 */ extern struct gmMainLib_8046B0F0_t gmMainLib_8046B0F0;
/* 4D3EE0 */ extern struct gmm_x0* gmMainLib_804D3EE0;
#define __GALE01_15CC34
/* 15D888 */ static void gmMainLib_8015D888(u32);
/* 45A6C0 */ static struct gmm_x0 gmMainLib_8045A6C0[2];
/* 46B0F0 */ struct gmMainLib_8046B0F0_t gmMainLib_8046B0F0;
/* 4D3EE0 */ struct gmm_x0* gmMainLib_804D3EE0 = gmMainLib_8045A6C0;
#define GALE01_1C65B0
/* 1C78FC */ void grAnime_801C78FC(HSD_GObj*, s32, s32);
/* 1C7A04 */ void grAnime_801C7A04(HSD_GObj*, s32, s32, f32);
/* 1C7FF8 */ void grAnime_801C7FF8(HSD_GObj*, s32, s32, s32, f32, f32);
/* 1C8138 */ void grAnime_801C8138(HSD_GObj*, enum_t, bool);
/* 1C83D0 */ bool grAnime_801C83D0(HSD_GObj*, bool, enum_t);
/* 1C84A4 */ bool grAnime_801C84A4(HSD_GObj*, s32, s32);
/* 1C8780 */ void grAnime_801C8780(HSD_GObj*, u32, u32, f32, f32);
#define GALE01_219C98
/* 21A10C */ bool grBattle_8021A10C(HSD_GObj*);
#define GALE01_1E57BC
/* 1E57BC */ M2C_UNK grBigBlue_801E57BC();
/* 1E57C0 */ M2C_UNK grBigBlue_801E57C0();
/* 1E59C8 */ M2C_UNK grBigBlue_801E59C8();
/* 1E59CC */ M2C_UNK grBigBlue_801E59CC();
/* 1E59F0 */ M2C_UNK grBigBlue_801E59F0();
/* 1E59F8 */ M2C_UNK grBigBlue_801E59F8();
/* 1E5AE4 */ M2C_UNK grBigBlue_801E5AE4();
/* 1E5B10 */ M2C_UNK grBigBlue_801E5B10();
/* 1E5B18 */ M2C_UNK grBigBlue_801E5B18();
/* 1E5B1C */ M2C_UNK grBigBlue_801E5B1C();
/* 1E5B20 */ M2C_UNK grBigBlue_801E5B20();
/* 1E6114 */ M2C_UNK grBigBlue_801E6114();
/* 1E611C */ M2C_UNK grBigBlue_801E611C();
/* 1E6120 */ M2C_UNK grBigBlue_801E6120();
/* 1E6124 */ M2C_UNK fn_801E6124();
/* 1E613C */ M2C_UNK grBigBlue_801E613C();
/* 1E61BC */ M2C_UNK grBigBlue_801E61BC();
/* 1E61C4 */ M2C_UNK grBigBlue_801E61C4();
/* 1E61FC */ M2C_UNK grBigBlue_801E61FC();
/* 1E6200 */ M2C_UNK grBigBlue_801E6200();
/* 1E6288 */ M2C_UNK grBigBlue_801E6288();
/* 1E6290 */ M2C_UNK grBigBlue_801E6290();
/* 1E6294 */ M2C_UNK grBigBlue_801E6294();
/* 1E6298 */ M2C_UNK grBigBlue_801E6298();
/* 1E6354 */ M2C_UNK grBigBlue_801E6354();
/* 1E635C */ M2C_UNK grBigBlue_801E635C();
/* 1E6360 */ M2C_UNK grBigBlue_801E6360();
/* 1E6364 */ M2C_UNK grBigBlue_801E6364();
/* 1E687C */ M2C_UNK grBigBlue_801E687C();
/* 1E6884 */ M2C_UNK grBigBlue_801E6884();
/* 1E68B8 */ M2C_UNK grBigBlue_801E68B8();
/* 1E6904 */ M2C_UNK grBigBlue_801E6904();
/* 1E6C58 */ M2C_UNK grBigBlue_801E6C58();
/* 1E6C60 */ M2C_UNK grBigBlue_801E6C60();
/* 1E855C */ M2C_UNK grBigBlue_801E855C();
/* 1E8560 */ M2C_UNK fn_801E8560();
/* 1E8794 */ M2C_UNK grBigBlue_801E8794();
/* 1E8978 */ M2C_UNK grBigBlue_801E8978();
/* 1E89DC */ M2C_UNK grBigBlue_801E89DC();
/* 1E8A1C */ M2C_UNK grBigBlue_801E8A1C();
/* 1E8B84 */ M2C_UNK grBigBlue_801E8B84();
/* 1E8D04 */ M2C_UNK grBigBlue_801E8D04();
/* 1E8D64 */ M2C_UNK grBigBlue_801E8D64();
/* 1E93D0 */ M2C_UNK grBigBlue_801E93D0();
/* 1E93D8 */ M2C_UNK grBigBlue_801E93D8();
/* 1E9F38 */ M2C_UNK grBigBlue_801E9F38();
/* 1E9F3C */ M2C_UNK grBigBlue_801E9F3C();
/* 1EA054 */ M2C_UNK grBigBlue_801EA054();
/* 1EA05C */ M2C_UNK grBigBlue_801EA05C();
/* 1EAB4C */ M2C_UNK grBigBlue_801EAB4C();
/* 1EAB50 */ M2C_UNK grBigBlue_801EAB50();
/* 1EACE8 */ M2C_UNK grBigBlue_801EACE8();
/* 1EB004 */ M2C_UNK grBigBlue_801EB004();
/* 1EB4AC */ M2C_UNK grBigBlue_801EB4AC();
/* 1EBAF8 */ M2C_UNK grBigBlue_801EBAF8();
/* 1EC58C */ M2C_UNK grBigBlue_801EC58C();
/* 1EC6C0 */ M2C_UNK grBigBlue_801EC6C0();
/* 1ECB50 */ M2C_UNK grBigBlue_801ECB50();
/* 1ED694 */ M2C_UNK grBigBlue_801ED694();
/* 1EDF44 */ M2C_UNK grBigBlue_801EDF44();
/* 1EE398 */ M2C_UNK grBigBlue_801EE398();
/* 1EEF00 */ M2C_UNK grBigBlue_801EEF00();
/* 1EF424 */ M2C_UNK grBigBlue_801EF424();
/* 1EF60C */ M2C_UNK fn_801EF60C();
/* 1EF7D8 */ void grBigBlue_801EF7D8(Vec3*);
/* 1EF844 */ bool grBigBlue_801EF844(enum_t);
/* 1EFB9C */ M2C_UNK fn_801EFB9C();
/* 1EFC0C */ M2C_UNK grBigBlue_801EFC0C();
/* 1EFC14 */ M2C_UNK grBigBlue_801EFC14();
#define GALE01_20B864
/* 20B864 */ M2C_UNK grBigBlueRoute_8020B864();
/* 20B89C */ M2C_UNK grBigBlueRoute_8020B89C();
/* 20B920 */ M2C_UNK grBigBlueRoute_8020B920();
/* 20B95C */ M2C_UNK grBigBlueRoute_8020B95C();
/* 20B9CC */ M2C_UNK grBigBlueRoute_8020B9CC();
/* 20B9D4 */ M2C_UNK grBigBlueRoute_8020B9D4();
/* 20BABC */ M2C_UNK grBigBlueRoute_8020BABC();
/* 20BB00 */ M2C_UNK grBigBlueRoute_8020BB00();
/* 20BB08 */ M2C_UNK grBigBlueRoute_8020BB08();
/* 20BB0C */ M2C_UNK grBigBlueRoute_8020BB0C();
/* 20BB10 */ M2C_UNK grBigBlueRoute_8020BB10();
/* 20BB58 */ M2C_UNK grBigBlueRoute_8020BB58();
/* 20BB60 */ M2C_UNK grBigBlueRoute_8020BB60();
/* 20BB64 */ M2C_UNK grBigBlueRoute_8020BB64();
/* 20BB68 */ M2C_UNK grBigBlueRoute_8020BB68();
/* 20BC24 */ M2C_UNK grBigBlueRoute_8020BC24();
/* 20BC2C */ M2C_UNK grBigBlueRoute_8020BC2C();
/* 20BC30 */ M2C_UNK grBigBlueRoute_8020BC30();
/* 20BC34 */ M2C_UNK fn_8020BC34();
/* 20BC68 */ M2C_UNK grBigBlueRoute_8020BC68();
/* 20BF30 */ M2C_UNK grBigBlueRoute_8020BF30();
/* 20BF38 */ M2C_UNK grBigBlueRoute_8020BF38();
/* 20C13C */ M2C_UNK grBigBlueRoute_8020C13C();
/* 20C140 */ M2C_UNK grBigBlueRoute_8020C140();
/* 20C1D4 */ M2C_UNK grBigBlueRoute_8020C1D4();
/* 20C1DC */ M2C_UNK grBigBlueRoute_8020C1DC();
/* 20C210 */ M2C_UNK grBigBlueRoute_8020C210();
/* 20C238 */ M2C_UNK grBigBlueRoute_8020C238();
/* 20C530 */ M2C_UNK grBigBlueRoute_8020C530();
/* 20C85C */ M2C_UNK grBigBlueRoute_8020C85C();
/* 20CD20 */ M2C_UNK grBigBlueRoute_8020CD20();
/* 20DA9C */ M2C_UNK grBigBlueRoute_8020DA9C();
/* 20DAB4 */ M2C_UNK grBigBlueRoute_8020DAB4();
/* 20DD64 */ M2C_UNK grBigBlueRoute_8020DD64();
/* 20DE48 */ M2C_UNK grBigBlueRoute_8020DE48();
/* 20DEAC */ M2C_UNK fn_8020DEAC();
/* 20DED4 */ M2C_UNK grBigBlueRoute_8020DED4();
/* 20DF78 */ M2C_UNK grBigBlueRoute_8020DF78();
/* 20DF80 */ M2C_UNK grBigBlueRoute_8020DF80();
#define GALE01_1CD338
/* 1CD338 */ M2C_UNK grCastle_801CD338();
/* 1CD37C */ M2C_UNK grCastle_801CD37C();
/* 1CD4A0 */ M2C_UNK grCastle_801CD4A0();
/* 1CD4A4 */ M2C_UNK grCastle_801CD4A4();
/* 1CD4C8 */ M2C_UNK grCastle_801CD4C8();
/* 1CD4D0 */ M2C_UNK grCastle_801CD4D0();
/* 1CD5BC */ M2C_UNK grCastle_801CD5BC();
/* 1CD600 */ M2C_UNK grCastle_801CD600();
/* 1CD608 */ M2C_UNK grCastle_801CD608();
/* 1CD60C */ M2C_UNK grCastle_801CD60C();
/* 1CD610 */ M2C_UNK fn_801CD610();
/* 1CD658 */ M2C_UNK grCastle_801CD658();
/* 1CD8A0 */ M2C_UNK grCastle_801CD8A0();
/* 1CD8A8 */ M2C_UNK grCastle_801CD8A8();
/* 1CD960 */ M2C_UNK grCastle_801CD960();
/* 1CD9B4 */ M2C_UNK fn_801CD9B4();
/* 1CDA0C */ M2C_UNK grCastle_801CDA0C();
/* 1CDC3C */ M2C_UNK grCastle_801CDC3C();
/* 1CDC44 */ M2C_UNK grCastle_801CDC44();
/* 1CDF50 */ M2C_UNK grCastle_801CDF50();
/* 1CDF54 */ M2C_UNK grCastle_801CDF54();
/* 1CDFD8 */ M2C_UNK grCastle_801CDFD8();
/* 1CE054 */ M2C_UNK grCastle_801CE054();
/* 1CE19C */ M2C_UNK grCastle_801CE19C();
/* 1CE260 */ M2C_UNK grCastle_801CE260();
/* 1CE3A0 */ M2C_UNK fn_801CE3A0();
/* 1CE3A4 */ M2C_UNK grCastle_801CE3A4();
/* 1CE3AC */ M2C_UNK grCastle_801CE3AC();
/* 1CE578 */ M2C_UNK grCastle_801CE578();
/* 1CE7E4 */ M2C_UNK grCastle_801CE7E4();
/* 1CE7E8 */ M2C_UNK grCastle_801CE7E8();
/* 1CE858 */ M2C_UNK grCastle_801CE858();
/* 1CE860 */ M2C_UNK grCastle_801CE860();
/* 1CE8E4 */ M2C_UNK grCastle_801CE8E4();
/* 1CE8E8 */ M2C_UNK grCastle_801CE8E8();
/* 1CE9DC */ M2C_UNK fn_801CE9DC();
/* 1CE9E0 */ M2C_UNK grCastle_801CE9E0();
/* 1CE9E8 */ M2C_UNK grCastle_801CE9E8();
/* 1CEAC8 */ M2C_UNK grCastle_801CEAC8();
/* 1CEACC */ M2C_UNK grCastle_801CEACC();
/* 1CEEFC */ M2C_UNK grCastle_801CEEFC();
/* 1CEF04 */ M2C_UNK grCastle_801CEF04();
/* 1CF0F0 */ M2C_UNK grCastle_801CF0F0();
/* 1CF0F4 */ M2C_UNK grCastle_801CF0F4();
/* 1CF300 */ M2C_UNK grCastle_801CF300();
/* 1CF308 */ M2C_UNK grCastle_801CF308();
/* 1CF74C */ M2C_UNK grCastle_801CF74C();
/* 1CF750 */ M2C_UNK fn_801CF750();
/* 1CF7B0 */ M2C_UNK grCastle_801CF7B0();
/* 1CF868 */ M2C_UNK grCastle_801CF868();
/* 1CFAFC */ M2C_UNK fn_801CFAFC();
/* 1CFB68 */ M2C_UNK fn_801CFB68();
/* 1CFBD4 */ M2C_UNK grCastle_801CFBD4();
/* 1D0298 */ M2C_UNK grCastle_801D0298();
/* 1D02B8 */ M2C_UNK grCastle_801D02B8();
/* 1D0520 */ M2C_UNK fn_801D0520();
/* 1D0550 */ M2C_UNK grCastle_801D0550();
/* 1D059C */ M2C_UNK grCastle_801D059C();
/* 1D05E8 */ M2C_UNK grCastle_801D05E8();
/* 1D0634 */ M2C_UNK grCastle_801D0634();
/* 1D0680 */ M2C_UNK grCastle_801D0680();
/* 1D06CC */ M2C_UNK grCastle_801D06CC();
/* 1D0744 */ M2C_UNK grCastle_801D0744();
/* 1D07BC */ M2C_UNK grCastle_801D07BC();
/* 1D0834 */ M2C_UNK grCastle_801D0834();
/* 1D08AC */ M2C_UNK grCastle_801D08AC();
/* 1D0924 */ M2C_UNK fn_801D0924();
/* 1D09B8 */ M2C_UNK fn_801D09B8();
/* 1D0A9C */ M2C_UNK grCastle_801D0A9C();
/* 1D0B04 */ M2C_UNK grCastle_801D0B04();
/* 1D0B0C */ bool grCastle_801D0B0C(Vec3* v, u32 arg1, HSD_JObj* jobj);
/* 1D0BBC */ M2C_UNK grCastle_801D0BBC();
/* 1D0D24 */ M2C_UNK grCastle_801D0D24();
/* 1D0D84 */ M2C_UNK grCastle_801D0D84();
/* 1D0FF0 */ M2C_UNK grCastle_801D0FF0();
#define GALE01_1DCCFC
/* 1DCCFC */ M2C_UNK grCorneria_801DCCFC();
/* 1DCE1C */ M2C_UNK grCorneria_801DCE1C();
/* 1DD2C0 */ M2C_UNK grCorneria_801DD2C0();
/* 1DD350 */ M2C_UNK grCorneria_801DD350();
/* 1DD478 */ M2C_UNK grCorneria_801DD478();
/* 1DD508 */ M2C_UNK grCorneria_801DD508();
/* 1DD52C */ M2C_UNK grCorneria_801DD52C();
/* 1DD534 */ M2C_UNK grCorneria_801DD534();
/* 1DD620 */ M2C_UNK grCorneria_801DD620();
/* 1DD64C */ M2C_UNK grCorneria_801DD64C();
/* 1DD654 */ M2C_UNK grCorneria_801DD654();
/* 1DD658 */ M2C_UNK grCorneria_801DD658();
/* 1DD65C */ M2C_UNK fn_801DD65C();
/* 1DD674 */ M2C_UNK grCorneria_801DD674();
/* 1DD9A0 */ M2C_UNK grCorneria_801DD9A0();
/* 1DD9A8 */ M2C_UNK grCorneria_801DD9A8();
/* 1DDAC0 */ M2C_UNK grCorneria_801DDAC0();
/* 1DDAC4 */ M2C_UNK grCorneria_801DDAC4();
/* 1DDCE8 */ M2C_UNK grCorneria_801DDCE8();
/* 1DDCF0 */ M2C_UNK grCorneria_801DDCF0();
/* 1DDD4C */ M2C_UNK grCorneria_801DDD4C();
/* 1DDDA8 */ M2C_UNK grCorneria_801DDDA8();
/* 1DDE88 */ M2C_UNK grCorneria_801DDE88();
/* 1DE024 */ M2C_UNK grCorneria_801DE024();
/* 1DE4BC */ M2C_UNK grCorneria_801DE4BC();
/* 1DE4C0 */ M2C_UNK grCorneria_801DE4C0();
/* 1DE560 */ M2C_UNK grCorneria_801DE560();
/* 1DE568 */ M2C_UNK grCorneria_801DE568();
/* 1DE8E0 */ M2C_UNK grCorneria_801DE8E0();
/* 1DE8E4 */ M2C_UNK grCorneria_801DE8E4();
/* 1DEC00 */ M2C_UNK grCorneria_801DEC00();
/* 1DEC08 */ M2C_UNK grCorneria_801DEC08();
/* 1DEC94 */ M2C_UNK grCorneria_801DEC94();
/* 1DED50 */ M2C_UNK grCorneria_801DED50();
/* 1DF8CC */ M2C_UNK grCorneria_801DF8CC();
/* 1DF8D0 */ M2C_UNK grCorneria_801DF8D0();
/* 1DFBC4 */ M2C_UNK grCorneria_801DFBC4();
/* 1DFBCC */ M2C_UNK grCorneria_801DFBCC();
/* 1DFBEC */ M2C_UNK grCorneria_801DFBEC();
/* 1DFBF0 */ M2C_UNK grCorneria_801DFBF0();
/* 1DFC1C */ M2C_UNK grCorneria_801DFC1C();
/* 1DFC24 */ M2C_UNK grCorneria_801DFC24();
/* 1DFC28 */ M2C_UNK grCorneria_801DFC28();
/* 1DFC2C */ M2C_UNK grCorneria_801DFC2C();
/* 1DFC90 */ M2C_UNK grCorneria_801DFC90();
/* 1DFC98 */ M2C_UNK grCorneria_801DFC98();
/* 1DFEB4 */ M2C_UNK grCorneria_801DFEB4();
/* 1DFEB8 */ M2C_UNK grCorneria_801DFEB8();
/* 1DFF18 */ M2C_UNK grCorneria_801DFF18();
/* 1DFF20 */ M2C_UNK grCorneria_801DFF20();
/* 1E013C */ M2C_UNK grCorneria_801E013C();
/* 1E0140 */ M2C_UNK grCorneria_801E0140();
/* 1E01A0 */ M2C_UNK grCorneria_801E01A0();
/* 1E01A8 */ M2C_UNK grCorneria_801E01A8();
/* 1E03C4 */ M2C_UNK grCorneria_801E03C4();
/* 1E03C8 */ M2C_UNK grCorneria_801E03C8();
/* 1E0678 */ M2C_UNK grCorneria_801E0678();
/* 1E08CC */ M2C_UNK grCorneria_801E08CC();
/* 1E0A74 */ M2C_UNK grCorneria_801E0A74();
/* 1E0C3C */ M2C_UNK grCorneria_801E0C3C();
/* 1E0D28 */ M2C_UNK grCorneria_801E0D28();
/* 1E0D30 */ M2C_UNK grCorneria_801E0D30();
/* 1E0DE0 */ M2C_UNK grCorneria_801E0DE0();
/* 1E0DE4 */ M2C_UNK grCorneria_801E0DE4();
/* 1E0E0C */ M2C_UNK grCorneria_801E0E0C();
/* 1E0E14 */ M2C_UNK grCorneria_801E0E14();
/* 1E0E3C */ M2C_UNK grCorneria_801E0E3C();
/* 1E0E40 */ M2C_UNK grCorneria_801E0E40();
/* 1E0F30 */ M2C_UNK grCorneria_801E0F30();
/* 1E0F34 */ M2C_UNK grCorneria_801E0F34();
/* 1E0F64 */ M2C_UNK grCorneria_801E0F64();
/* 1E0F6C */ M2C_UNK grCorneria_801E0F6C();
/* 1E1030 */ M2C_UNK grCorneria_801E1030();
/* 1E1054 */ M2C_UNK grCorneria_801E1054();
/* 1E1058 */ M2C_UNK grCorneria_801E1058();
/* 1E1060 */ M2C_UNK grCorneria_801E1060();
/* 1E12CC */ M2C_UNK grCorneria_801E12CC();
/* 1E12D0 */ M2C_UNK fn_801E12D0();
/* 1E12D4 */ M2C_UNK fn_801E12D4();
/* 1E1348 */ M2C_UNK grCorneria_801E1348();
/* 1E1878 */ M2C_UNK grCorneria_801E1878();
/* 1E1970 */ M2C_UNK grCorneria_801E1970();
/* 1E1BF0 */ M2C_UNK grCorneria_801E1BF0();
/* 1E2110 */ M2C_UNK grCorneria_801E2110();
/* 1E2228 */ M2C_UNK grCorneria_801E2228();
/* 1E2454 */ M2C_UNK fn_801E2454();
/* 1E2480 */ M2C_UNK fn_801E2480();
/* 1E24AC */ M2C_UNK fn_801E24AC();
/* 1E2550 */ M2C_UNK grCorneria_801E2550();
/* 1E2598 */ M2C_UNK grCorneria_801E2598();
/* 1E25C4 */ M2C_UNK grCorneria_801E25C4();
/* 1E2738 */ M2C_UNK grCorneria_801E2738();
/* 1E277C */ M2C_UNK grCorneria_801E277C();
/* 1E2A6C */ void grCorneria_801E2A6C(void);
/* 1E2AF4 */ void grCorneria_801E2AF4(void);
/* 1E2B80 */ s32 grCorneria_801E2B80(void);
/* 1E2C34 */ bool grCorneria_801E2C34(void);
/* 1E2CE8 */ bool grCorneria_801E2CE8(void);
/* 1E2D14 */ bool grCorneria_801E2D14(void);
/* 1E2D90 */ bool grCorneria_801E2D90(enum_t);
/* 1E2E50 */ M2C_UNK grCorneria_801E2E50();
/* 1E2EA0 */ M2C_UNK grCorneria_801E2EA0();
/* 1E2EE4 */ M2C_UNK grCorneria_801E2EE4();
/* 1E2EEC */ M2C_UNK grCorneria_801E2EEC();
/* 1E2FCC */ M2C_UNK grCorneria_801E2FCC();
#define GALE01_1C5FC0
/* 1C5FC0 */ void grDatFiles_801C5FC0(HSD_Archive*, void* data, u32 length);
/* 1C6038 */ void grDatFiles_801C6038(void*, s32, s32);
/* 1C6228 */ static void grDatFiles_801C6228(UnkStageDat*);
/* 1C6288 */ void grDatFiles_801C6288(void);
/* 1C62B4 */ static UnkArchiveStruct* grDatFiles_801C62B4(void);
/* 1C6324 */ UnkArchiveStruct* grDatFiles_801C6324(void);
/* 1C6330 */ UnkArchiveStruct* grDatFiles_801C6330(s32);
/* 1C6478 */ UnkArchiveStruct* grDatFiles_801C6478(void* data, s32 length);
#define GALE01_1C5B90
/* 1C5DB0 */ void grDisplay_801C5DB0(HSD_GObj*, int);
/* 1C5F60 */ void grDisplay_801C5F60(HSD_GObj* gobj, int code);
#define GALE01_1CA0B4
/* 1CA0B4 */ void grDynamicAttr_801CA0B4(void);
/* 1CA0F8 */ grDynamicAttr_UnkStruct*
grDynamicAttr_801CA0F8(s32 arg0, Vec3* v, enum_t floor_id, f32 f, s32 arg3);
/* 1CA1C0 */ void grDynamicAttr_801CA1C0(grDynamicAttr_UnkStruct* arg);
/* 1CA224 */ void grDynamicAttr_801CA224(void);
/* 1CA284 */ int grDynamicAttr_801CA284(Vec3* v, int arg1);
#define GALE01_20DFDC
void grFigure1_8020E270(int);
#define GALE01_20E274
#define GALE01_20E504
#define GALE01_219530
/* 219530 */ M2C_UNK grFigureGet_80219530();
/* 219534 */ M2C_UNK grFigureGet_80219534();
/* 21959C */ M2C_UNK grFigureGet_8021959C();
/* 2195A0 */ M2C_UNK grFigureGet_802195A0();
/* 2195C4 */ M2C_UNK grFigureGet_802195C4();
/* 2195CC */ M2C_UNK grFigureGet_802195CC();
/* 2196B4 */ M2C_UNK grFigureGet_802196B4();
/* 2196E0 */ M2C_UNK grFigureGet_802196E0();
/* 2196E8 */ M2C_UNK grFigureGet_802196E8();
/* 2196EC */ M2C_UNK grFigureGet_802196EC();
/* 2196F0 */ M2C_UNK grFigureGet_802196F0();
/* 219898 */ M2C_UNK grFigureGet_80219898();
/* 219B10 */ M2C_UNK fn_80219B10();
/* 219C34 */ M2C_UNK grFigureGet_80219C34(s32);
/* 219C50 */ int grFigureGet_80219C50(s32);
/* 219C90 */ M2C_UNK grFigureGet_80219C90();
#define MELEE_IT_INLINES_H
#define MELEE_IT_TYPES_H
/// @file
/// @todo Restructure this, possibly items/chara/types.h
#define MELEE_IT_ITCHARITEMS_H
typedef struct {
/* x0 */ s32 xDD4; // gets iterated from 0 to 14 in function (it_802AE200)
// that transforms the item model (possibly frame number
// of animation?)
/* x4 */ s32 xDD8; // {0-4} Used to index into array (it_803F6E28) that has
// floats to translate item model by
// 1->4 when blaster shooting starting (at cmd_var3 = 1)
// 3->0 when blaster getting put away (at cmd_var3 = 2)
/* x8 */ s32 xDDC; // {-1, 0, 1} Value gets added to xDD8 to iterate it
// during blaster collision callback
// -1: when cmd_var3 = 2 (when gun is getting put away,
// ____but not yet invisible)
// 0: when xDD8 <= 0 or xDD8 >= 5
// 1: when cmd_var3 = 1 (when gun shooting sfx starts)
/* xC */ s32 xDE0; // 0 when never shot yet; 1 when has been shot (in this
// spawn instance of the blaster - not put away)
/* x10 */ s32 xDE4; // group 1; gets set to 0 in func (it_802ADF10) that
// sets item joint locations from corresponding fighter
// joint locations
/* x14 */ s32 xDE8; // group 1
/* x18 */ s32 xDEC; // group 1
/* x1C */ s32 xDF0; // group 1
/* x20 */ s32 xDF4; // group 1
/* x24 */ s32 xDF8; // group 1
/* x28 */ s32 xDFC; // group 2; gets set to 0 in func (it_802ADF10) that
// sets item joint locations from corresponding fighter
// joint locations
/* x2C */ s32 xE00; // group 2
/* x30 */ s32 xE04; // group 2
/* x34 */ s32 xE08; // group 2
/* x38 */ s32 xE0C; // group 2
/* x3C */ s32 xE10; // group 2
/* x40 */ Vec3 xE14; // group 3; gets set as the vector from fighter's
// current position to the joint holding the blaster
// on the frame blaster its shot
/* x4C */ Vec3 xE20; // group 3
/* x58 */ Vec3 xE2C; // group 3
/* x64 */ Vec3 xE38; // group 3
/* x70 */ Vec3 xE44; // group 3
/* x7C */ Vec3 xE50; // group 3
/* x88 */ f32 angle; // xE5C group 4; gets set to an angle value in func
// (it_802ADF10) that sets item joint locations from
// corresponding fighter joint locations
/* x8C */ f32 xE60; // group 4
/* x90 */ f32 xE64; // group 4
/* x94 */ f32 xE68; // group 4
/* x98 */ f32 xE6C; // group 4
/* x9C */ f32 xE70; // group 4
/* x100 */ s32 gfx_spawn_var; // xE74 Signals to spawn shoot gfx from
// blaster when set to '1', which is done
// from subaction funcs on frame of shot
/* x104 */ s32 set_sfx_var2; // xE78 Sets blaster destroy sfx func when
// Flag 1 = 2
// ---------------
// Blaster/Throw Subaction cmd Flags
// .
// Flag 0 is ??? (multipurpose?)
// 0: ?
// 1: ?
// .
// Flag 1 is for if blaster is present?
// 0: Default (invisible)
// ___Initial value for blaster actions and
// ___set on 1st frame of throw actions
// 1: Present (visible)
// ___Set 1st frame of SpecialAirNStart
// ___action and upon blaster spawn in
// ___throw actions
// 2: Put away (invisible again)
// ___Set frame of putting away blaster in
// ___all blaster and throw actions
// .
// Flag 2 is for spawning laser shots
// 0: Default (don't spawn)
// 1: Spawn
// ___Set on shoot frame, then immediately
// ___reset to 0 after triggering those
// ___functions
// .
// Flag 3 is for blaster action
// 0: Default
// 1: Starting to shoot
// 2: Being put away
/* x108 */ HSD_GObj* owner; // xE7C
} itFoxBlaster_ItemVars;
typedef struct FoxBlasterAttr {
/* +0 */ float x0;
/* +4 */ float x4;
/* +8 */ float x8;
/* +C */ float xC;
/* +10 */ float x10;
/* +14 */ float x14;
/* +18 */ float x18; // [1]
/* +1C */ float x1C;
/* +20 */ float x20; // [2]
/* +24 */ float x24;
} FoxBlasterAttr;
typedef struct {
/* +0 ip+DD4 */ float scale;
/* +4 ip+DD8 */ float angle;
/* +8 ip+DDC */ float speed;
/* +C ip+DE0 */ Vec3 pos;
} itFoxLaser_ItemVars;
typedef struct FoxLaserAttr {
/* +0 */ float lifetime; // [35]
/* +4 */ float scale; // [3]
/* +8 */ float x8;
/* +C */ float xC;
/* +10 */ float x10;
/* +14 */ float x14;
/* +18 */ float x18;
/* +1C */ float x1C;
/* +20 */ float x20;
/* +24 */ float x24; // [1]
} FoxLaserAttr;
typedef struct {
/* +0 ip+DD4 */ HSD_Joint* xDD4;
/* +4 ip+DD8 */ float xDD8;
/* +8 ip+DDC */ HSD_JObj* xDDC;
} itFoxIllusion_ItemVars;
typedef struct FoxIllusionAttr {
float x0; // [5]
float x4; // [2]
} FoxIllusionAttr;
typedef struct {
u32 x0;
} itKirbyHammer_ItemVars;
typedef struct ItemLink // user_data struct of GObj class 7
{
struct ItemLink* prev;
struct ItemLink* next;
Vec3 x8_vel;
Vec3 pos;
Vec3 x20_vec; // Previous position?
u8 flag0 : 1;
u8 flag1 : 1;
u8 flag2 : 1;
u8 flag3 : 1;
u8 flag4 : 1;
u8 flag5 : 1;
u8 flag6 : 1;
u8 flag7 : 1;
CollData x30_collData;
s32 unk;
HSD_GObj* x1D0_GObj;
HSD_JObj* x1D4_JObj;
} ItemLink;
typedef struct {
ItemLink* x0;
ItemLink* x4;
HSD_GObj* x8;
HSD_JObj* xC;
void (*x10)(Item_GObj*);
u8 x14;
f32 x18;
f32 x1C;
f32 x20;
f32 x24;
f32 x28;
f32 x2C;
f32 x30;
f32 x34;
f32 x38;
f32 x3C;
f32 x40;
f32 x44;
f32 x48;
f32 x4C;
f32 x50;
f32 x54;
f32 x58;
f32 x5C;
f32 x60;
} itLinkHookshot_ItemVars;
typedef struct {
f32 x0;
f32 x4;
f32 x8;
s32 xC;
f32 x10;
f32 x14;
f32 x18;
f32 x1C;
f32 x20;
f32 x24;
f32 x28;
s32 x2C;
f32 x30;
f32 x34;
f32 x38;
f32 x3C;
f32 x40;
f32 x44;
f32 x48;
f32 x4C;
f32 x50;
HSD_Joint* x54;
HSD_Joint* x58;
HSD_Joint* x5C;
} itLinkHookshotAttributes;
typedef struct {
UnkFlagStruct x0;
u8 x1;
u8 x2;
u8 x3;
f32 x4;
f32 x8;
f32 xC;
Item_GObj* x10;
} itLinkBomb_ItemVars;
typedef struct itLinkBombAttributes {
/* x0 */ u32 lifetime;
/* x4 */ f32 x4;
/* x8 */ f32 x8;
/* xC */ u32 xC;
/* x10 */ s32 x10;
/* x14 */ f32 x14;
/* x18 */ f32 x18;
/* x1C */ f32 x1C;
/* x20 */ f32 x20;
/* x24 */ f32 x24;
/* x28 */ f32 x28;
/* x2C */ f32 x2C;
/* x30 */ f32 x30;
/* x28 */ f32 vel[3];
} itLinkBombAttributes;
typedef struct {
f32 x0;
f32 x4;
f32 x8;
f32 xC;
f32 x10;
f32 x14;
Vec3 x18;
Vec3 x24;
Vec3 x30;
Vec3 x3C;
Vec3 x48;
Quaternion x54;
Quaternion x64;
Quaternion x74;
Quaternion x84;
f32 x94;
f32 x98;
u32 x9C;
s32 xA0;
u32 xA4;
f32 xA8;
f32 xAC;
s32 xB0;
HSD_JObj* xB4[3];
f32 xC0;
HSD_GObj* xC4;
f32 xC8;
f32 xCC;
void* xD0;
f32 xD4;
f32 xD8;
f32 xDC;
HSD_GObj* xE0;
s32 xE4;
f32 xE8;
f32 xEC;
s32 xF0;
} itLinkArrow_ItemVars;
typedef struct {
f32 x0;
f32 x4;
f32 x8;
f32 xC;
f32 x10;
f32 x14;
f32 x18;
f32 x1C;
f32 x20;
HSD_Joint* x24;
HSD_Joint* x28;
f32 x2C;
} itLinkArrowAttributes;
typedef struct {
f32 x0;
HSD_GObj* x4;
} itLinkBow_ItemVars;
/// @file
/// @todo Restructure this, possibly items/common/types.h
#define MELEE_IT_ITCOMMONITEMS_H
struct ECB {
f32 top;
f32 bottom;
f32 right;
f32 left;
};
typedef struct {
bool x0;
bool x4;
} itCapsule_ItemVars;
typedef struct {
bool x0; // [true]
s32 x4; // [8]
} ItCapsuleAttr;
typedef struct {
/* ip+DD4 */ float dir;
/* ip+DD8 */ float x4;
/* ip+DDC */ float x8;
/* ip+DE0 */ float xC;
/* ip+DE4 */ float xvel;
/* ip+DE8 */ float yvel;
} itStar_ItemVars;
struct itSword_ItemVars {
/* ip+DD4 */ int x0;
/* ip+DD8 */ int x4;
/* ip+DDC */ int x8;
/* ip+DE0 */ int xC;
/* ip+DE4 */ float x10;
/* ip+DE8 */ float x14;
/* ip+DEC */ float x18;
/* ip+DF0 */ int x1C;
/* ip+DF4 */ int x20;
/* ip+DF8 */ int x24;
/* ip+DFC */ float x28;
/* ip+E00 */ float x2C;
/* ip+E04 */ float x30;
/* ip+E08 */ int x34;
/* ip+E0C */ int x38;
/* ip+E10 */ int x3C;
/* ip+E14 */ float x40;
/* ip+E18 */ float x44;
/* ip+E1C */ float x48;
/* ip+E20 */ float x4C;
/* ip+E24 */ float x50;
/* ip+E28 */ int x54;
/* ip+E2C */ float x58;
};
typedef struct itBatAttributes {
int x0;
int x4;
int x8;
f32 xC_vel;
} itBatAttributes;
typedef struct itBombHei_ItemVars {
s32 xDD4;
s32 xDD8;
s32 xDDC;
s32 xDE0;
s32 xDE4;
s32 xDE8;
float xDEC;
} itBombHei_ItemVars;
typedef struct itHeart_ItemVars {
s32 xDD4_heal;
union {
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
u32 flags;
} xDD8;
s32 xDDC;
u8 xDE0_filler[8];
f32 xDE8_float;
f32 xDEC;
} itHeart_ItemVars;
typedef struct HeartContainerAttr {
s32 x0_heal; // [100]
union {
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
} bits;
u32 flags;
} x4; // [999]
s32 x8; // [1200]
s32 xC; // [1140]
s32 x10; // [120]
f32 x14; // y velocity? [1.5]
f32 x18; // y rotation? [0.0349066]
} HeartContainerAttr;
typedef struct itTomato_ItemVars {
s32 heal_amount;
union {
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
u32 flags;
} x4;
s32 x8;
} itTomato_ItemVars;
typedef struct {
int x0;
int x4;
int x8;
int xC;
int x10;
f32 x14;
} MaximTomatoSpecialAttr;
typedef struct itLGun_ItemVars {
/* +0 ip+DD4 */ int timer;
} itLGun_ItemVars;
typedef struct ItLGunAttr {
int max_ammo; // [16]
Vec3 pos; // [0, 2.128, 6.668]
} ItLGunAttr;
typedef struct itLGunRay_ItemVars {
/* +0 ip+DD4 */ float scale;
/* +4 ip+DD8 */ float angle;
/* +8 ip+DDC */ float speed;
/* +C ip+DE0 */ Vec3 pos;
} itLGunRay_ItemVars;
typedef struct ItLGunRayAttr {
/* +0 */ float speed; // [5]
/* +4 */ float lifetime; // [80]
/* +8 */ float max_scale; // [3]
} ItLGunRayAttr;
typedef struct itLGunBeam_ItemVars {
/* +0 ip+DD4 */ Vec3 position0;
/* +C ip+DE0 */ Vec3 position1;
/* +18 ip+DEC */ Vec3 velocity;
/* +24 ip+DF8 */ f32 angle0;
/* +28 ip+DFC */ f32 angle1;
/* +2C ip+E00 */ f32 lifetime;
/* +30 ip+E04 */ int xE04;
} itLGunBeam_ItemVars;
typedef struct ItLGunBeamAttr {
float lifetime; // lifetime - [18]
float x4; // related to position calcs for var angle1 - [1]
float x8; // related to position calcs for var angle1 - [2]
float xC; // related to position calcs for var angle0 - [1.22173]
float x10; // related to position calcs for var angle0 - [2/3 * pi]
} ItLGunBeamAttr;
/// Eggs spawned on Yoshi stages / by Chansey
typedef struct itEgg_ItemVars {
/* +0 */ bool x0;
/* +4 */ int rand_max;
/* +8 */ u8 _8[0x60 - 0x8];
/* +60 */ int heal_amount;
} itEgg_ItemVars;
typedef struct itHeiho_ItemVars {
f32 x0;
f32 x4;
UnkFlagStruct x8;
f32 xC;
f32 x10;
f32 x14;
f32 x18;
f32 x1C;
s8 x20;
s8 x21;
s8 x22;
s8 x23;
s32 x24;
f32 x28;
s32 x2C;
f32 x30;
f32 x34;
f32 x38;
Vec3 x3C;
f32 x48;
f32 x4C;
f32 x50;
HSD_GObj* x54;
f32 x58;
f32 x5C;
f32 x6C;
f32 x60;
f32 x64;
f32 x68;
f32 x7C;
f32 x70;
f32 x74;
f32 x78;
} itHeiho_ItemVars;
typedef struct itFoods_ItemVars {
/* +0 ip+DD4 */ s32 x0;
/* +4 ip+DD8 */ s32 heal_amount;
} itFoods_ItemVars;
typedef struct itFoodsAttributes {
s32 x0;
HSD_Joint* x4;
s32 x8;
s32 xC;
} itFoodsAttributes;
typedef struct itWhispyApple_ItemVars {
s32 xDD4_heal;
} itWhispyApple_ItemVars;
typedef struct itFreeze_ItemVars {
/* +0 */ char pad_0[0x1C];
/* +1C */ int unk_1C;
} itFreeze_ItemVars;
typedef struct itPikachutJoltGround_ItemVars {
/* +0 +DD4 */ char pad_0[0x8];
/* +8 +DDC */ M2C_UNK unk_8;
} itPikachutJoltGround_ItemVars;
typedef struct itSamusGrapple_ItemVars {
/* +0 +DD4 */ char pad_0[0x10];
/* +10 +DE4 */ M2C_UNK (*unk_10)();
} itSamusGrapple_ItemVars;
/// @remarks Might be shared?
typedef struct itUnkAttributes {
float x0_float;
float x4_float;
float x8;
float xC;
float x10;
} itUnkAttributes;
typedef struct {
HSD_JObj* x0;
HSD_JObj* x4;
} itMato_ItemVars;
typedef struct {
int x0;
int x4;
} itTomatoVars;
typedef struct itTincle_ItemVars {
/* +0 ip+DD4 */ u8 x0[0x54 - 0x0];
/* +54 ip+E28 */ float x54;
} itTincle_ItemVars;
typedef struct {
u8 padding[0xE10 - 0xDD4];
int xE10;
} itGShell_ItemVars;
typedef struct itPokemonAttributes {
f32 x0;
s32 timer;
s32 max;
s32 xC;
s32 x10;
s32 x14;
s32 x18;
} itPokemonAttributes;
typedef struct {
s16 x0;
u8 padding[0xE34 - 0xDD8];
s32 timer;
int x64;
} itPokemon_ItemVars;
typedef struct {
int x0;
HSD_JObj* jobj;
} itTargetVars;
typedef struct MewVars {
f32 x0;
f32 x4;
f32 x8;
f32 xC;
} MewVars;
typedef struct itCoinAttributes {
f32 x0;
f32 x4;
f32 x8;
f32 xC;
f32 x10;
f32 x14;
f32 x18;
f32 x1C;
f32 x20;
f32 x24;
f32 x28;
f32 x2C;
f32 x30;
f32 x34;
f32 x38;
f32 x3C;
f32 x40;
f32 x44;
f32 x48;
} itCoinAttributes;
typedef struct itCoin_ItemVars {
int x0;
int x4;
f32 x8;
f32 xC;
int x10;
int x14;
} itCoin_ItemVars;
typedef struct itFFlower_ItemVars {
int x0;
uint x4;
} itFFlower_ItemVars;
typedef struct FFlowerAttr {
int x0; // [120]
int x4; // [1200]
int x8; // [1140]
int xC; // [120]
float x10; // [1.5]
float x14;
} FFlowerAttr;
typedef struct itFFlowerFlame_ItemVars {
/* +0 */ Vec3 pos;
/* +C */ f32 unk;
} itFFlowerFlame_ItemVars;
typedef struct itHassam_ItemVars {
f32 x0;
f32 x4;
f32 x8;
f32 xC;
f32 x10;
f32 x14;
s32 x18;
s32 x1C;
s32 x20;
u8 padding[0x5C - 0x20];
Vec3 x5C;
f32 x68;
} itHassam_ItemVars;
typedef struct itKinoko_ItemVars {
f32 x0;
Vec3 x4;
// f32 x8;
// f32 xC;
} itKinoko_ItemVars;
typedef struct itNokoNoko_ItemVars {
f32 x0;
s32 x4;
f32 x8;
f32 xC;
f32 x10;
s32 x14;
s32 x18;
s32 x1C;
s32 x20;
s32 x24;
s32 x28;
s32 x2C;
s32 x30;
f32 x34;
f32 x38;
s32 x3C;
s32 x40;
s32 x44;
f32 x48;
f32 x4C;
f32 x50;
f32 x54;
f32 x58;
f32 x5C;
f32 x60;
f32 x64;
f32 x68;
f32 x6C;
f32 x70;
ECB x74;
f32 x84;
f32 x88;
f32 x8C;
f32 x90;
f32 x94;
f32 x98;
f32 x9C;
} itNokoNoko_ItemVars;
typedef struct itNokoNoko_DatAttrs2 {
s32 x0;
f32 x4;
} itNokoNoko_DatAttrs2;
typedef struct itNokoNoko_DatAttrs {
itNokoNoko_DatAttrs2* x0;
f32 x4;
f32 x8;
} itNokoNoko_DatAttrs;
typedef struct itTaruCann_DatAttrs {
/* +0 */ char pad_0[0x28];
/* +28 */ int x28;
/* +2C */ int x2C;
} itTaruCann_DatAttrs;
typedef struct itKlap_ItemVars {
/* +0 ip+DD4 */ f32 x0;
/* +4 ip+DD8 */ f32 x4;
/* +8 ip+DDC */ f32 x8;
/* +C ip+DE0 */ f32 xC;
/* +10 ip+DE4 */ f32 x10;
/* +14 ip+DE8 */ f32 x14;
/* +18 ip+DEC */ f32 x18;
/* +1C ip+DF0 */ f32 x1C;
/* +20 ip+DF4 */ f32 x20;
/* +24 ip+DF8 */ f32 x24;
/* +28 ip+DFC */ f32 x28;
} itKlap_ItemVars;
typedef struct itChicorita_ItemVars {
/* ip+DD4 */ u8 _0[0x60 - 0x0];
/* ip+E34 */ s32 x60; // timer?
/* ip+E38 */ f32 x64; // y vel
} itChicorita_ItemVars;
typedef struct itChicoritaAttr {
f32 scale;
s32 x4; // x60 in item vars gets set to this if -1; max timer/lifetime?
} itChicoritaAttr;
typedef struct itChicoritaLeafAttr {
f32 timer;
f32 x4;
f32 x8; // x pos
f32 xC; // y pos
f32 x10; // x vel
} itChicoritaLeafAttr;
typedef struct it_2728_DatAttrs {
Fighter* fighter;
} it_2728_DatAttrs;
typedef struct it_279D_ItemVars {
/* ip+DD4 */ s32 x0;
/* ip+DD8 */ Vec3 x4;
/* ip+DE4 */ Vec3 x10;
/* ip+DF0 */ f32 x1C;
/* ip+DF4 */ f32 x20;
/* ip+DF8 */ f32 x24;
/* ip+DFC */ f32 x28;
/* ip+E00 */ f32 x2C[6];
// /* ip+E04 */ s32 x30; // scale?
// /* ip+E08 */ s32 x34;
// /* ip+E0C */ s32 x38;
// /* ip+E10 */ s32 x3C;
// /* ip+E14 */ s32 x40;
/* ip+E18 */ f32 x44;
/* ip+E1C */ f32 x48;
/* ip+E20 */ f32 x4C; // scale
/* ip+E24 */ f32 x50;
/* ip+E28 */ s32 x54;
/* ip+E2C */ s32 x58; // used as an index back into this struct?
/* ip+E30 */ s32 x5C;
} it_279D_ItemVars;
typedef struct it_279D_DatAttrs {
f32 x0;
f32 x4;
f32 x8;
f32 xC;
f32 x10;
f32 x14;
f32 x18;
f32 x1C[6];
// f32 x20;
// f32 x24;
// f32 x28;
// f32 x2C;
// f32 x30;
f32 x34;
s32 x38;
s32 x3C[160];
// f32 x3C;
// f32 x40;
// f32 x44;
// f32 x48;
// f32 x4C;
// f32 x50;
// f32 x54;
// f32 x58;
// f32 x5C;
// s32 x60[160];
// f32 padding[0x248 - 0x4C];
// f32 x248;
} it_279D_DatAttrs;
typedef struct it_27B5_ItemVars {
/* ip+DD4 */ HSD_JObj* x0;
/* ip+DD8 */ s32 x4;
/* ip+DDC */ Vec3 x8;
/* ip+DE8 */ S32Vec3 x14;
/* ip+DF4 */ s32 x20;
/* ip+DF8 */ s32 x24;
/* ip+DFC */ s32 x28;
/* ip+E00 */ f32 x2C;
/* ip+E04 */ s32 x30; // scale?
/* ip+E08 */ s32 x34;
/* ip+E0C */ s32 x38;
/* ip+E10 */ s32 x3C;
/* ip+E14 */ s32 x40;
/* ip+E18 */ f32 x44;
/* ip+E1C */ s32 x48;
/* ip+E20 */ f32 x4C; // scale
/* ip+E24 */ f32 x50;
/* ip+E28 */ s32 x54;
/* ip+E2C */ s32 x58;
/* ip+E30 */ s32 x5C;
} it_27B5_ItemVars;
typedef struct it_27B5_DatAttrs {
f32 scale;
} it_27B5_DatAttrs;
typedef struct it_27CE_ItemVars {
/* ip+DD4 */ void* attr;
} it_27CE_ItemVars;
// Should it_2F28 and it_27CF use the same structs?
typedef struct it_27CF_ItemVars {
f32 x0;
} it_27CF_ItemVars;
typedef struct it_27CF_DatAttrs {
Vec3 pos;
Vec3 vel;
f32 float1; // lifetime
f32 float2;
f32 float3; // item var x0
f32 x24; // item->xC98
int x28; // ItemKind
} it_27CF_DatAttrs;
typedef struct it_2F28_ItemVars {
f32 x0;
} it_2F28_ItemVars;
struct it_2F28_DatAttrs {
Vec3 pos;
Vec3 vel;
f32 float1; // lifetime
f32 float2; // item var x0
};
typedef struct it_2E5A_ItemVars_struct {
f32 x0; // set to float calc result/item->x3C
HSD_JObj* x4; // set to item_gobj->hsd_obj
Vec3 x8; // called in lb_8000B1CC
Vec3 x14; // set equal to x8
} it_2E5A_ItemVars_struct;
typedef struct it_2E5A_ItemVars {
// /* ip+DD4 */ HSD_GObj* x0;
/* ip+DD4 */ s32 x0;
/* ip+DD8 */ s32 x4; // uses regular registers (#? gets multiplied by 2C,
// then indexed into attr)
/* ip+DDC */ s32 x8; // uses regular registers
/* ip+DE0 */ s32 xC; // uses regular registers
/* ip+DE4 */ f32 x10; // uses float registers; timer?
/* ip+DE8 */ f32 x14;
/* ip+DEC */ UnkFlagStruct x18; // has bit assignments
/* ip+DF0 */ it_2E5A_ItemVars_struct* x1C;
// /* ip+DF4 */ s32 x20;
// /* ip+DF8 */ s32 x24;
// /* ip+DFC */ s32 x28;
// /* ip+E00 */ s32 x2C;
// /* ip+E04 */ s32 x30;
// /* ip+E08 */ s32 x34;
// /* ip+E0C */ s32 x38;
// /* ip+E10 */ s32 x3C;
// /* ip+E14 */ s32 x40;
// /* ip+E18 */ s32 x44;
// /* ip+E1C */ s32 x48;
// /* ip+E20 */ s32 x4C;
// /* ip+E24 */ s32 x50;
// /* ip+E28 */ s32 x54;
// /* ip+E2C */ s32 x58;
} it_2E5A_ItemVars;
typedef struct it_2E5A_DatAttrs_1 {
f32 x0; // lifetime?
f32 x4; // float assignment
f32 x8;
f32 xC;
f32 x10;
f32 x14; // item->x40_vel.x
f32 x18;
f32 x1C;
f32 x20;
f32 x24; // float assignment
f32 x28;
f32 x2C; // float assignment
f32 x30;
f32 x34;
f32 x38;
HSD_Joint* x3C; // called in it_80273318
f32 x40;
f32 x44;
f32 x48;
s32 x4C; // item->xD84
s32 x50;
f32 x54; // item->scl
ECB* x58; // called in it_80275D5C
s32 x5C;
} it_2E5A_DatAttrs_1;
typedef struct it_2E5A_DatAttrs_2 {
f32 x0; // lifetime?
f32 x4; // float assignment
f32 x8;
f32 xC;
HSD_Joint* x10; // called in it_80273318
ItemStateDesc* x14; // item2->xD0_itemStateDesc
f32 x18;
f32 x1C;
s32 x20; // item->xD84
f32 x24; // float assignment
f32 x28; // item->scl
// ECB* x2C; // called in it_80275D5C
} it_2E5A_DatAttrs_2;
typedef struct it_802E5FXX_struct { // used for it_802E5F00 and it_802E5F8C
HSD_GObj* x0; // Item GObj assignment/passed to db_80225DD8
f32 x4; // float assignment (angle?)
f32 x8; // float assignment (used in x40_vel.y calc)
s32 xC; // non-float assignment (arg3/arg2/while condition)
s32 x10; // non-float assignment
s32 x14; // non-float assignment
s32 x18; // non-float assignment (gm_8016C6C0)
} it_802E5FXX_struct;
// Not sure if there is a way to combine these two structs?
typedef struct it_2E6A_ItemVars_1 {
/* +0 ip+DD4 */ s16 x0;
/* +2 ip+DD6 */ s16 x2;
/* +4 ip+DD8 */ HSD_JObj* x4;
/* +8 ip+DDC */ f32 x8; // unused?
/* +C ip+DE0 */ f32 xC; // unused?
/* +10 ip+DE4 */ void* x10;
/* +14 ip+DE8 */ void* x14;
/* +18 ip+DEC */ void* x18;
/* +1C ip+DF0 */ void* x1C;
} it_2E6A_ItemVars_1;
typedef struct it_2E6A_ItemVars_2 {
/* +0 ip+DD4 */ s16 x0;
/* +2 ip+DD6 */ u16 x2;
/* +4 ip+DD8 */ Vec3 x4;
/* +10 ip+DE4 */ void* x10;
/* +14 ip+DE8 */ void* x14;
/* +18 ip+DEC */ void* x18;
/* +1C ip+DF0 */ void* x1C;
} it_2E6A_ItemVars_2;
#define MELEE_IT_ITPKFLASH_H
typedef struct itPKFlush_ItemVars {
s32 xDD4_PKFlash;
float xDD8_PKFlash;
s32 xDDC_PKFlash;
HSD_GObj* xDE0_PKFlash_Owner;
s32 xDE4_PKFlash;
} itPKFlush_ItemVars;
typedef struct itPKFlushExplode_ItemVars {
float xDD4;
s32 xDD8;
HSD_GObj* xDDC;
} itPKFlushExplode_ItemVars;
typedef struct itFlashAttributes {
float x0_FLASH_LIFETIMER;
float x4_FLASH_HITBOX_SIZE_MUL;
float x8_FLASH_GRAPHIC_SIZE_INIT_MUL;
float xC_FLASH_GRAPHIC_SIZE_GROWTH_MUL;
float x10_FLASH_UNK1;
float x14_FLASH_PEAK_RISE_HEIGHT;
float x18_FLASH_CONTROL;
float x1C_FLASH_GRAVITY;
float x20_FLASH_UNK2;
float x24_FLASH_UNK3;
float x28_FLASH_EXPLOSION_DELAY;
} itFlashAttributes;
typedef struct itFlashExplAttributes {
float x0_FLASH_EXPL_HITBOX_SIZE_MUL;
float x4_FLASH_EXPL_GRAPHIC_SIZE_INIT;
float x8_FLASH_EXPL_GRAPHIC_SIZE_GROWTH;
float xC_FLASH_EXPL_BASE_DAMAGE;
float x10_FLASH_EXPL_DAMAGE_MUL;
} itFlashExplAttributes;
#define MELEE_IT_ITPKTHUNDER_H
typedef struct itPKThunderAttributes {
float x0_PKTHUNDER_LIFETIME;
float x4_PKTHUNDER_SPEED;
float x8_PKTHUNDER_SPAWN_ANGLE;
float xC_PKTHUNDER_STICK_THRESHOLD;
float x10_PKTHUNDER_TURN_RADIUS;
} itPKThunderAttributes;
typedef struct itPKThunder_ItemVars {
HSD_GObj* xDD4[6];
Vec3 xDEC;
Vec3 xDFC;
Vec3 xE08;
Vec3 xE14;
Vec3 xE20;
Vec3 xE2C;
Vec3 xE38;
Vec3 xE44;
Vec3 xE50;
Vec3 xE5C;
Vec3 xE68;
Vec3 xE74;
Vec3 xE80;
Vec3 xE8C;
Vec3 xE98;
Vec3 xEA0;
float xEAC; // PK Thunder release angles?
float xEB0;
float xEB4;
float xEB8;
float xEBC;
float xEC0;
float xEC4;
float xEC8;
float xECC;
float xED0;
float xED4;
float xED8;
float xEDC;
float xEE0;
float xEE4;
float xEE8;
s32 xEEC;
s32 xEF0;
HSD_GObj* xEF4;
HSD_GObj* xEF8;
HSD_GObj* xEFC;
HSD_GObj* xF00;
HSD_GObj* xF04;
HSD_GObj* xF08;
} itPKThunder_ItemVars;
struct CameraBoxFlags {
struct {
u8 b01 : 2;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
};
struct flag32 {
union {
struct {
u32 x0 : 1;
u32 x1 : 1;
u32 x2 : 1;
u32 x3 : 1;
u32 x4 : 1;
u32 x5 : 1;
u32 x6 : 1;
u32 x7 : 1;
u32 x8 : 1;
u32 x9 : 1;
u32 xA : 1;
u32 xB : 1;
u32 xC : 1;
u32 xD : 1;
u32 xE : 1;
u32 xF : 4;
u32 x13 : 1;
u32 x14 : 1;
u32 x15 : 1;
u32 x16 : 1;
u32 x17 : 2;
u32 x19 : 1;
u32 x1A : 1;
u32 x1B : 1;
u32 x1C : 1;
u32 x1D : 1;
u32 x1E : 1;
u32 x1F : 1;
} flags;
u32 word;
};
};
struct DynamicBoneTable {
/// @at{0} @sz{190}
HSD_JObj* bones[100];
};
struct Item_DynamicBones {
int flags;
HSD_JObj* skeleton;
DynamicsDesc dyn_desc;
};
struct { int x[1 - 2 * !(sizeof(struct Item_DynamicBones) == 0x1C)]; };;
struct ItemAttr {
u8 x0_is_heavy : 1; // 0x0, bit 0x80, is heavy item (crate)
u8 x0_78 : 4; // unk, might be lock-on behavior? (Samus Missile)
u8 x0_hold_kind : 3; // defines hand hold behavior
u8 x1_1 : 2; // 0x1 0xB0
u8 x1_3 : 1; // 0x1 0x20
u8 x1_4 : 1; // 0x1 0x10
u8 x1_5 : 1; // 0x1 0x08
u8 x1_67_cam_kind : 2; // 0x1 0x06, is stored to 0xdcd
u8 x1_8 : 1; // 0x1 0x01 char flags3; //0x2
u8 x3; // 0x3
f32 x4_throw_speed_mul; // 0x4, speed multiplier at which this item is
// thrown at
s32 x8;
f32 xC_spin_speed;
f32 x10_fall_speed; // 0x10
f32 x14_fall_speed_max; // 0x14
f32 x18;
f32 x1C_damage_mul; // collision related? referenced on taking damage @
// 80270f90
ECB x20;
Vec2 x30_unk; // 0x34
Vec2 x38_grab_range; // 0x38
ECB x40;
f32 x50; // 0x50
f32 x54; // 0x54
f32 x58; // 0x58
f32 x5c; // 0x5c
f32 x60_scale; // 0x60, does not affect hitboxes
/// @at{64} @sz{4}
/// @brief GFX to play on destroy.
enum_t destroy_gfx;
s32 x68; // 0x68
s32 x6C; // 0x6c
s32 x70; // 0x70
s32 x74; // 0x74
/// @at{78} @sz{4}
/// @brief SFX that plays when this item is destroyed
enum_t destroy_sfx;
s32 x7C; // 0x7c
s32 x80; // 0x80
s32 x84; // 0x84
s32 x88; // 0x88
s32 x8C; // 0x8c
s32 x90; // 0x90
s32 x94; // 0x94
s32 x98; // 0x98
s32 x9C; // 0x9c
};
/// @sz{8}
struct ItemDynamics {
/// @todo Combine with ftDynamics? Can see in it_8027163C that this struct
/// does not work perfectly
/// @at{0} @sz{4}
int count;
/// @at{4} @sz{4}
BoneDynamicsDesc* dyn_descs;
};
/// @sz{10}
struct ItemStateDesc {
/// @at{0} @sz{4}
HSD_AnimJoint* x0_anim_joint;
/// @at{0} @sz{4}
HSD_MatAnimJoint* x4_matanim_joint;
/// @at{0} @sz{4}
M2C_UNK x8_parameters;
/// @at{0} @sz{4}
M2C_UNK xC_script;
};
struct ItemStateArray {
struct ItemStateDesc x0_itemStateDesc[8];
};
/// @sz{10}
struct ItemModelDesc {
/// @at{0} @sz{4}
HSD_Joint* x0_joint;
/// @at{4} @sz{4}
u32 x4_bone_count;
/// @at{8} @sz{4}
s32 x8_bone_attach_id;
/// @at{C} @sz{4}
u8 xC_bit_field;
};
struct Article {
ItemAttr* x0_common_attr;
void* x4_specialAttributes;
M2C_UNK x8_hurtbox;
ItemStateArray* xC_itemStates;
ItemModelDesc* x10_modelDesc;
ItemDynamics* x14_dynamics;
};
typedef struct it_266F_ItemVars {
u16 x0;
u8* x4;
u16 x8;
u8* xC;
s32 x10;
s32 x14;
UnkFlagStruct x18;
Vec3 x1C[2];
} it_266F_ItemVars;
struct Item {
void* x0;
/// @at{4} @sz{4}
HSD_GObj* entity;
s32 x8;
/// @at{C} @sz{4}
enum_t spawn_kind;
/// @at{10} @sz{4}
ItemKind kind;
/// @at{14} @sz{4}
enum_t hold_kind;
s32 x18;
s32 x1C;
/// @at{20} @sz1
u8 x20_team_id;
u8 x21;
u8 x22;
u8 x23;
/// @at{24} @sz{4}
enum_t msid;
/// @at{28} @sz{4}
enum_t anim_id;
/// @at{2C} @sz{4}
f32 facing_dir;
/// @at{30} @sz{4}
f32 init_facing_dir;
/// @at{34} @sz{4}
f32 spin_spd;
/// @at{38} @sz{4}
f32 scl;
/// @at{3C} @sz{4}
f32 x3C;
/// @at{40} @sz{C}
Vec3 x40_vel;
/// @at{4C} @sz{C}
Vec3 pos;
/// @at{58} @sz{C}
Vec3 x58_vec_unk;
/// @at{64} @sz{C}
Vec3 x64_vec_unk2;
/// @at{70} @sz{C}
Vec3 x70_nudge;
Vec3 x7C;
Vec3 x88; // From it_80277040
Vec3 x94; // From it_80277040
Vec3 xA0; // From it_802734B4
Vec3 xAC_unk; // From it_80276CEC
ItemLogicTable* xB8_itemLogicTable; // Global item callbacks
ItemStateTable* xBC_itemStateContainer;
GroundOrAir ground_or_air;
Article* xC4_article_data;
HSD_Joint* xC8_joint;
ItemAttr* xCC_item_attr;
ItemStateDesc* xD0_itemStateDesc;
Item_DynamicBones xD4_dynamicBones[24];
s32 x374_dynamicBonesNum;
/* ip+378 */ CollData x378_itemColl;
s32 ecb_lock;
/// @at{518} @sz{4}
/// @brief Item's current owner
HSD_GObj* owner;
HSD_GObj* x51C; // Related to the owner gobj
CameraBox* x520_cameraBox; // CameraBox
FtCmdState x524_cmd; // should this be CommandInfo* instead?
// f32 x528;
// void* x52C_item_script; // Script parse?
// u32 x530;
// u32 x534;
// u32 x538;
// u32 x53C;
// u32 x540;
// u32 x544;
ColorOverlay x548_colorOverlay;
u8 x5C8;
u8 x5C9; // used heavily in it_80278108
u8 x5CA;
u8 x5CB;
f32 x5CC_currentAnimFrame;
f32 x5D0_animFrameSpeed;
struct {
HitCapsule hit;
s32 x138;
} x5D4_hitboxes[4];
u32 xAC4_ignoreItemID; // Cannot hit items with this index?
u8 xAC8_hurtboxNum; // Number of hurtboxes this item has
HurtCapsule
xACC_itemHurtbox[2]; // Are these really size 0x4C? Code in itcoll.c
// and it_266F.c adds 0x44 to iterate through.
// (Conversely can see adding 0x4C to iterate in
// ftcoll.c) Can see how vars don't line up in
// it_80274D6C and it_80274DAC
f32 xB64;
u8 xB68; // int for ItemDynamics->count?
u8 xB69;
u8 xB6A;
u8 xB6B;
struct {
Vec3 xB6C;
// u32 xB6C; // struct DynamicsData* for DynamicsDesc->data?
// u32 xB70; // int for DynamicsDesc->count?
// u32 xB74; // pos.x?
f32 xB78; // pos.y? scale?
HSD_JObj* xB7C; // HSD_JObj* for bone?
u32 xB80;
Vec3 xB84;
// u32 xB88;
// u32 xB8C;
u32 xB90; // enum_t for BoneDynamicsDesc->bone_id?
} xB6C_vars[2];
// u32 xB94;
// u32 xB98;
// u32 xB9C;
// u32 xBA0;
// u32 xBA4;
// u32 xBA8;
// u32 xBAC;
// u32 xBB0;
// u32 xBB4;
// u32 xBB8;
DynamicBoneTable* xBBC_dynamicBoneTable;
M2C_UNK xBC0;
u8 xBC4;
u8 xBC5;
u8 xBC6;
u8 xBC7;
u32 xBC8;
Vec2 xBCC_unk;
Vec2 xBD4_grabRange;
ECB xBDC;
ECB xBEC;
ECB xBFC;
ECB xC0C;
ECB xC1C;
s32 xC2C;
s32 xC30;
s32 xC34_damageDealt; // Rounded down
s32 xC38; // 0xc38 - ItemKind?
f32 xC3C; // 0xc3c
f32 xC40; // 0xc40
f32 xC44; // 0xc44
s32 xC48; // 0xc48
s32 xC4C; // Something to do with damage. 0x80077464 checks this against
// reflectors' maximum damage threshold
s32 xC50; // 0xc50
f32 xC54; // 0xc54
Vec3 xC58; // 0xc58
HSD_GObj* xC64_reflectGObj; // GObj that reflected this item?
f32 xC68; // 0xc68
f32 xC6C; // 0xc6c
f32 xC70; // 0xc70
s32 xC74;
Vec2 xC78; // 0xc74
Vec2 xC80; // 0xc7c
s32 xC88; // 0xc88
u16 xC8C; // 0xc8c
HSD_GObj* xC90_absorbGObj; // 0xc90
s32 xC94; // 0xc94
f32 xC98; // 0xc98
s32 xC9C; // Total damage taken?
s32 xCA0; // Last amount of damage taken?
s32 xCA4; // 0xca4
s32 xCA8; // 0xca8, hitlag related
s32 xCAC_angle; // 0xcac
s32 xCB0_source_ply; // 0xcb0, damage source ply number
s32 xCB4; // 0xcb4
f32 xCB8_outDamageDirection; // 0xcb8, updated @ 80078184
f32 xCBC_hitlagFrames; // 0xcbc, hitlag frames remaining
f32 xCC0; // 0xcc0
s32 xCC4; // 0xcc4, switch statement for this in it_8027CBFC
f32 xCC8_knockback; // 0xcc8
f32 xCCC_incDamageDirection; // Direction from which damage was applied?
f32 xCD0; // 0xcd0
Vec3 xCD4; // 0xcd4
Vec3 xCE0; // 0xce0
HSD_GObj* xCEC_fighterGObj; // 0xcec
HSD_GObj* xCF0_itemGObj; // 0xcf0, is a fp GObj, but is the owner of the
HSD_GObj* xCF4_fighterGObjUnk;
/// @at{CF8} @sz{4}
/// @brief The entity that was detected by this item's inert hitbox.
HSD_GObj* toucher;
HSD_GObj* xCFC;
/// @at{D00} @sz{4}
/// @brief The entity that got grabbed by this item.
HSD_GObj* grab_victim;
/// @at{D04} @sz{4}
/// @brief The entity that collided with this item's hitbox?
HSD_GObj* atk_victim;
u8 xD08;
u8 xD09;
u8 xD0A;
u8 xD0B;
/// @at{D0C} @sz{4}
enum_t xD0C;
f32 xD10;
/// @at{D14} @sz{4}
HSD_GObjPredicate animated;
/// @at{D18} @sz{4}
HSD_GObjEvent physics_updated;
/// @at{D1C} @sz{4}
HSD_GObjPredicate collided;
/// @at{D20} @sz{4}
/// @todo What does this mean?
HSD_GObjEvent on_accessory;
/// @at{D24} @sz{4}
/// @brief Runs when an entity is detected by this item's inert hibox.
HSD_GObjPredicate touched;
/// @at{D28} @sz{4}
/// @brief Runs after applying hitlag in damage.
/// @todo What function is @c 8026a62c?
HSD_GObjEvent entered_hitlag;
// 0xd2c, runs after exiting hitlag in hitlag, update proc 8026a200
HSD_GObjEvent exited_hitlag;
/// @at{D28} @sz{4}
/// @brief Runs when the item is jumped on.
/// @todo What function is @c 80269bac?
HSD_GObjPredicate jumped_on;
/// @at{D34} @sz{4}
/// @brief When grabbing a fighter, run this function on self.
HSD_GObjEvent grab_dealt;
/** @at{D38} @sz{4}
* @brief When grabbing a fighter, run this function on them.
*
* @p gobj0 - The victim of the grab. \n
* @p gobj1 - This item's entity.
*/
HSD_GObjInteraction grabbed_for_victim;
f32 xD3C_spinSpeed;
f32 xD40;
f32 xD44_lifeTimer;
f32 xD48_halfLifeTimer; // Not radioactive, just the item's original
// lifetime halved
int xD4C;
u32 xD50_landNum; // Number of times this item has landed
s32 xD54_throwNum; // Number of times this item has been thrown
u32 xD58;
s32 xD5C;
/// @at{D60} @sz{4}
enum_t destroy_type;
/// @at{D64} @sz{4}
enum_t sfx_unk1;
/// @at{D68} @sz{4}
enum_t sfx_unk2;
s32 xD6C;
s32 xD70;
s32 xD74;
s32 xD78;
/// @at{D7C} @sz{4}
/// @brief SFX that plays when this item is destroyed
enum_t destroy_sfx;
s32 xD80;
s32 xD84;
s32 xD88_attackID;
u16 xD8C_attack_instance;
s16 xD8E;
union Struct2070 xD90; // some bit struct/union
Vec2 xD94;
Vec2 xD9C;
union {
UnkFlagStruct xDA4_flag;
u32 xDA4_word;
};
union {
UnkFlagStruct xDA8_flag;
u16 xDA8_short;
};
union {
UnkFlagStruct xDAA_flag; // Develop mode stuff?
u8 xDAA_byte;
};
u32 xDAC_itcmd_var0;
u32 xDB0_itcmd_var1;
u32 xDB4_itcmd_var2;
u32 xDB8_itcmd_var3;
u32 xDBC_itcmd_var4;
flag32 xDC0;
u32 xDC4;
flag32 xDC8_word;
struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4567 : 4;
} xDCC_flag;
CameraBoxFlags xDCD_flag;
UnkFlagStruct xDCE_flag;
UnkFlagStruct xDCF_flag;
UnkFlagStruct xDD0_flag;
UnkFlagStruct xDD1_flag;
UnkFlagStruct xDD2_flag;
UnkFlagStruct xDD3_flag;
union {
it_266F_ItemVars it_266F;
it_279D_ItemVars it_279D;
it_27B5_ItemVars it_27B5;
it_27CE_ItemVars it_27CE;
it_27CF_ItemVars it_27CF;
it_2E5A_ItemVars it_2E5A;
it_2E6A_ItemVars_1 it_2E6A_1;
it_2E6A_ItemVars_2 it_2E6A_2;
it_2F28_ItemVars it_2F28;
itBombHei_ItemVars bombhei;
itCapsule_ItemVars capsule;
itChicorita_ItemVars chicorita;
itCoin_ItemVars coin;
itEgg_ItemVars egg;
itFFlower_ItemVars fflower;
itFFlowerFlame_ItemVars fflowerflame;
itFoods_ItemVars foods;
itFoxBlaster_ItemVars foxblaster;
itFoxIllusion_ItemVars foxillusion;
itFoxLaser_ItemVars foxlaser;
itFreeze_ItemVars freeze;
itGShell_ItemVars gshell, rshell, zgshell, zrshell;
itHassam_ItemVars hassam;
itHeart_ItemVars heart;
itHeiho_ItemVars heiho;
itKinoko_ItemVars kinoko;
itKirbyHammer_ItemVars kirbyhammer;
itKlap_ItemVars klap;
itLGun_ItemVars lgun;
itLGunBeam_ItemVars lgunbeam;
itLGunRay_ItemVars lgunray;
itLinkArrow_ItemVars linkarrow;
itLinkBomb_ItemVars linkbomb;
itLinkBow_ItemVars linkbow;
itLinkHookshot_ItemVars linkhookshot;
itMato_ItemVars mato;
itNokoNoko_ItemVars nokonoko;
itPikachutJoltGround_ItemVars pikachujoltground;
itPKFlush_ItemVars pkflush;
itPKFlushExplode_ItemVars pkflushexplode;
itPKThunder_ItemVars pkthunder;
itPokemon_ItemVars pokemon;
itSamusGrapple_ItemVars samusgrapple;
itStar_ItemVars star;
itSword_ItemVars sword;
itTincle_ItemVars tincle;
itTomato_ItemVars tomato;
itWhispyApple_ItemVars whispyapple;
u8 _[0xFCC - 0xDD4];
} xDD4_itemVar;
};
struct sdata_ItemGXLink {
GObj_RenderFunc x0_renderFunc;
};
struct r13_ItemTable {
s32 filler;
Article* x0_article[0x9F];
};
struct BobOmbRain {
HSD_GObj* x0;
HSD_JObj* x4;
Vec3 x8_vec;
enum_t x14;
s32 x18;
UnkFlagStruct x1C;
};
struct SpawnItem {
/* +0 */ HSD_GObj* x0_parent_gobj;
/* +4 */ HSD_GObj* x4_parent_gobj2;
/* +8 */ ItemKind kind;
/* +C */ enum_t hold_kind;
/* +10 */ s32 x10;
/* +14 */ Vec3 pos;
/* +20 */ Vec3 prev_pos;
/* +2C */ Vec3 vel;
/* +38 */ f32 facing_dir;
/* +3C */ s16 x3C_damage;
/* +3E */ s16 x3E;
/* +40 */ s32 x40;
/* +44 */ UnkFlagStruct x44_flag;
/* +45 */ UnkFlagStruct x45_flag;
/* +46 */ UnkFlagStruct x46_flag;
/* +47 */ UnkFlagStruct x47_flag;
/* +48 */ GroundOrAir x48_ground_or_air;
};
struct ItemModStruct {
GXColor x0_unk;
};
struct ItemCommonData {
u32 x0;
u32 x4;
u32 x8;
u32 xC;
u32 x10;
u32 x14;
u32 x18;
u32 x1C;
u32 x20;
u32 x24;
u32 x28;
u32 x2C;
u32 x30; // lifetime?
u32 x34;
u32 x38_float;
s32 x3C_float;
s32 x40_float;
s32 x44_float;
u32 x48_float;
f32 x4C_float;
s32 x50_float;
f32 x54_float;
f32 x58_float;
f32 x5C_float;
f32 x60_float;
s32 x64_float;
f32 x68_float;
f32 x6C_float;
f32 x70_float;
f32 x74_float;
f32 x78_float;
f32 x7C_float;
f32 x80_float[13];
s32 xB4;
f32 xB8;
f32 xBC;
f32 xC0;
f32 xC4;
f32 xC8;
f32 xCC;
f32 xD0;
f32 xD4;
uint xD8;
s32 xDC;
f32 unk_degrees; ///< @at{E0}
u8 filler_1a[0xE8 - 0xE4];
u8 xE8; // struct that has a float (scale?) as the first member? See
// it_80275BC8
u8 filler_1a_2[0xF0 - 0xEC];
f32 xF0;
f32 xF4;
f32 xF8;
u8 filler_1b[0x124 - 0xFC];
s32 x124; // max value for a random integer generation in it_8026F6BC
s32 x128; // used in it_8026CF04
s32 x12C; // used in it_8026CF04
s32 x130; // used in it_8026CF04
s32 x134; // used in it_8026CF04
// u8 filler_2[0x148 - 0x138]; - replaced with vars that are used for
// calc's in it_8026F8B4
s32 x138;
s32 x13C;
s32 x140;
f32 x144;
s32 x148;
f32 x14C;
f32 x150;
f32 x154;
f32 x158;
f32 x15C;
};
struct Item_r13_Data {
ItemCommonData* item_common;
void** common_items;
void** adventure_items;
void** pokeball_items;
s32 x10;
s32 x14;
};
struct HSD_ObjAllocUnk2 {
// float x0;
// float x4;
// float x8;
// float xC;
// u8 pad_10[0xB0 - 0x10];
ECB ecb_arr[11];
int xB0;
int xB4;
int xB8;
M2C_UNK xBC;
// Vec3 xC0;
// u8 pad_CC[0x148 - 0xCC];
Vec3 xC0_vec3_arr[11];
u32 x144;
u32 x148;
u32 x14C;
u32 x150; // num of ECB/Vec3's with data?
UnkFlagStruct x154;
};
struct x1C_struct {
s32 x1C;
};
struct HSD_ObjAllocUnk {
s32 x0;
s32 x4;
s32 x8;
s32 xC;
s32 x10;
s32 x14;
u32 x18;
s32 x1C;
s32 x20;
s32 x24;
s32 x28;
s32 x2C; // u32 or s32?
s32 x30; // u32 or s32?
s32 x34;
s32 x38;
s32 x3C;
s32 x40;
s32 x44;
s32 x48;
s32 x4C;
s32 x50;
s32 x54;
s32 x58;
s32 x5C;
s32 x60; // u32 or s32?
s32 x64; // u32 or s32?
};
struct HSD_ObjAllocUnk6 {
u8 x0; // Gets incremented and decremented by 1 for various checks. Gets
// indexed into x4's struct
u8* x4; // Points to struct of ItemKinds (or array?)
u16 x8; // Max value for random integers
u16 xA;
u16* xC; // Points to struct of ???
};
struct HSD_ObjAllocUnk4 {
u32 x0;
HSD_ObjAllocUnk6 x4;
s32 x14;
u64 x18; // Gets set equal to gm_8016AEA4(), aka lbl_8046B6A0.unk_24D3
// (which is an s8?)
};
struct HSD_ObjAllocUnk5 {
u8 x0;
u32 x4;
u16 x8;
u16 xA;
u16 xC;
};
typedef struct HSD_ObjAllocUnk7 {
s32 x0;
void* x4;
HitCapsule* x8;
void* xC;
} HSD_ObjAllocUnk7;
struct it_8026C47C_arg0_t {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
};
struct it_8026F3D4_arg1_t {
bool x0;
ItemKind x4;
Item_GObj* x8;
};
struct it_8026F3D4_body_t {
u8 x0[32]; // This array length was a guess
};
#define GET_ITEM(gobj) ((Item*) HSD_GObjGetUserData(gobj))
static inline Item* GetItemData(HSD_GObj* gobj)
{
Item* item_data = gobj->user_data;
return item_data;
}
/* 216E74 */ void grFlatzone_80216E74(int);
/* 216E78 */ void grFlatzone_80216E78(void);
/* 216F38 */ void grFlatzone_80216F38(void);
/* 216F3C */ void grFlatzone_80216F3C(void);
/* 216F40 */ int grFlatzone_80216F40(void);
/* 216F48 */ HSD_GObj* grFlatzone_80216F48(s32);
/* 217030 */ void grFlatzone_80217030(Ground_GObj*);
/* 21705C */ int grFlatzone_8021705C(HSD_GObj*);
/* 217064 */ void grFlatzone_80217064(HSD_GObj*);
/* 217068 */ void grFlatzone_80217068(HSD_GObj*);
/* 21707C */ void grFlatzone_8021707C(Ground_GObj*);
/* 2171CC */ int grFlatzone_802171CC(HSD_GObj*);
/* 2171D4 */ void grFlatzone_802171D4(Ground_GObj*);
/* 2173D0 */ void grFlatzone_802173D0(HSD_GObj*);
/* 2173D4 */ void grFlatzone_802173D4(Ground_GObj*);
/* 217430 */ int grFlatzone_80217430(HSD_GObj*);
/* 217438 */ void grFlatzone_80217438(HSD_GObj*);
/* 21743C */ void grFlatzone_8021743C(HSD_GObj*);
/* 217450 */ void grFlatzone_80217450(Ground_GObj*);
/* 2174E4 */ int grFlatzone_802174E4(HSD_GObj*);
/* 2174EC */ void grFlatzone_802174EC(Ground_GObj*);
/* 217644 */ void grFlatzone_80217644(HSD_GObj*);
/* 217648 */ void grFlatzone_80217648(Ground_GObj*);
/* 2176B4 */ int grFlatzone_802176B4(HSD_GObj*);
/* 2176BC */ void grFlatzone_802176BC(Ground_GObj*);
/* 217CD0 */ void grFlatzone_80217CD0(HSD_GObj*);
/* 217CD4 */ void grFlatzone_80217CD4(Ground_GObj*);
/* 217D28 */ int grFlatzone_80217D28(HSD_GObj*);
/* 217D30 */ void grFlatzone_80217D30(Ground_GObj*);
/* 217DA4 */ void grFlatzone_80217DA4(HSD_GObj*);
/* 217DA8 */ void grFlatzone_80217DA8(Ground_GObj*);
/* 217DFC */ int grFlatzone_80217DFC(HSD_GObj*);
/* 217E04 */ void grFlatzone_80217E04(Ground_GObj*);
/* 217E78 */ void grFlatzone_80217E78(HSD_GObj*);
/* 217E7C */ void grFlatzone_80217E7C(HSD_GObj*);
/* 217E80 */ int grFlatzone_80217E80(HSD_GObj*);
/* 217E88 */ void grFlatzone_80217E88(HSD_GObj*);
/* 217E8C */ void grFlatzone_80217E8C(HSD_GObj*);
/* 217E90 */ void grFlatzone_80217E90(Ground_GObj*);
/* 217EE8 */ int grFlatzone_80217EE8(HSD_GObj*);
/* 217EF0 */ void grFlatzone_80217EF0(Ground_GObj*);
/* 21805C */ void grFlatzone_8021805C(HSD_GObj*);
/* 218060 */ void grFlatzone_80218060(s32);
/* 2181B4 */ void grFlatzone_802181B4(void);
/* 218260 */ void grFlatzone_80218260(void);
/* 2182B4 */ DynamicsDesc* grFlatzone_802182B4(int);
/* 2182BC */ int grFlatzone_802182BC(Vec3*, int, HSD_JObj*);
#define GALE01_1F2D0C
/* 1F2D0C */ M2C_UNK grFourside_801F2D0C();
/* 1F2D10 */ M2C_UNK grFourside_801F2D10();
/* 1F2DA0 */ M2C_UNK grFourside_801F2DA0();
/* 1F2DA4 */ M2C_UNK grFourside_801F2DA4();
/* 1F2DC8 */ M2C_UNK grFourside_801F2DC8();
/* 1F2DD0 */ M2C_UNK grFourside_801F2DD0();
/* 1F2EBC */ M2C_UNK grFourside_801F2EBC();
/* 1F2EE8 */ M2C_UNK grFourside_801F2EE8();
/* 1F2EF0 */ M2C_UNK grFourside_801F2EF0();
/* 1F2EF4 */ M2C_UNK grFourside_801F2EF4();
/* 1F2EF8 */ M2C_UNK grFourside_801F2EF8();
/* 1F2F24 */ M2C_UNK grFourside_801F2F24();
/* 1F2F2C */ M2C_UNK grFourside_801F2F2C();
/* 1F2F30 */ M2C_UNK grFourside_801F2F30();
/* 1F2F34 */ M2C_UNK grFourside_801F2F34();
/* 1F3070 */ M2C_UNK grFourside_801F3070();
/* 1F3078 */ M2C_UNK grFourside_801F3078();
/* 1F309C */ M2C_UNK grFourside_801F309C();
/* 1F30A0 */ M2C_UNK fn_801F30A0();
/* 1F30F0 */ M2C_UNK grFourside_801F30F0();
/* 1F3144 */ M2C_UNK grFourside_801F3144();
/* 1F314C */ M2C_UNK grFourside_801F314C();
/* 1F3150 */ M2C_UNK grFourside_801F3150();
/* 1F3154 */ M2C_UNK grFourside_801F3154();
/* 1F326C */ M2C_UNK grFourside_801F326C();
/* 1F3274 */ M2C_UNK grFourside_801F3274();
/* 1F37F8 */ M2C_UNK grFourside_801F37F8();
/* 1F37FC */ M2C_UNK grFourside_801F37FC();
/* 1F388C */ M2C_UNK grFourside_801F388C();
/* 1F3894 */ M2C_UNK grFourside_801F3894();
/* 1F3B6C */ M2C_UNK grFourside_801F3B6C();
/* 1F3B70 */ M2C_UNK grFourside_801F3B70();
/* 1F3C40 */ M2C_UNK grFourside_801F3C40();
/* 1F3CC0 */ M2C_UNK grFourside_801F3CC0();
/* 1F3CC8 */ M2C_UNK grFourside_801F3CC8();
/* 1F3F0C */ M2C_UNK grFourside_801F3F0C();
/* 1F3F10 */ M2C_UNK grFourside_801F3F10();
/* 1F3F74 */ M2C_UNK fn_801F3F74();
/* 1F41E0 */ M2C_UNK grFourside_801F41E0();
/* 1F41E8 */ M2C_UNK grFourside_801F41E8();
#define GALE01_202B6C
/* 202B6C */ M2C_UNK grGarden_80202B6C();
/* 202B70 */ M2C_UNK grGarden_80202B70();
/* 202C24 */ M2C_UNK grGarden_80202C24();
/* 202C4C */ M2C_UNK grGarden_80202C4C();
/* 202C70 */ M2C_UNK grGarden_80202C70();
/* 202C78 */ M2C_UNK grGarden_80202C78();
/* 202D60 */ M2C_UNK grGarden_80202D60();
/* 202D8C */ M2C_UNK grGarden_80202D8C();
/* 202D94 */ M2C_UNK grGarden_80202D94();
/* 202D98 */ M2C_UNK grGarden_80202D98();
/* 202D9C */ M2C_UNK fn_80202D9C();
/* 202DC8 */ M2C_UNK grGarden_80202DC8();
/* 202E40 */ M2C_UNK grGarden_80202E40();
/* 202E48 */ M2C_UNK grGarden_80202E48();
/* 202E68 */ M2C_UNK grGarden_80202E68();
/* 202E6C */ M2C_UNK grGarden_80202E6C();
/* 202F34 */ M2C_UNK grGarden_80202F34();
/* 202F3C */ M2C_UNK grGarden_80202F3C();
/* 202F40 */ M2C_UNK grGarden_80202F40();
/* 202F44 */ M2C_UNK grGarden_80202F44();
/* 202F94 */ M2C_UNK grGarden_80202F94();
/* 202F9C */ M2C_UNK grGarden_80202F9C();
/* 202FA0 */ M2C_UNK grGarden_80202FA0();
/* 202FA4 */ M2C_UNK grGarden_80202FA4();
/* 202FF4 */ M2C_UNK grGarden_80202FF4();
/* 202FFC */ M2C_UNK grGarden_80202FFC();
/* 203000 */ M2C_UNK grGarden_80203000();
/* 203004 */ M2C_UNK grGarden_80203004();
/* 203090 */ M2C_UNK grGarden_80203090();
/* 203098 */ M2C_UNK grGarden_80203098();
/* 2031A0 */ M2C_UNK grGarden_802031A0();
/* 2031A4 */ M2C_UNK grGarden_802031A4();
/* 203248 */ M2C_UNK grGarden_80203248();
/* 203250 */ M2C_UNK grGarden_80203250();
/* 203494 */ M2C_UNK grGarden_80203494();
/* 203498 */ M2C_UNK fn_80203498();
/* 20349C */ M2C_UNK fn_8020349C();
/* 203560 */ M2C_UNK grGarden_80203560();
/* 2035C8 */ M2C_UNK grGarden_802035C8();
/* 2035D0 */ M2C_UNK grGarden_802035D0();
/* 203624 */ M2C_UNK grGarden_80203624();
#define GALE01_1F423C
/* 1F423C */ M2C_UNK grGreatBay_801F423C();
/* 1F4240 */ M2C_UNK grGreatBay_801F4240();
/* 1F42D0 */ M2C_UNK grGreatBay_801F42D0();
/* 1F42D4 */ M2C_UNK grGreatBay_801F42D4();
/* 1F42F8 */ M2C_UNK grGreatBay_801F42F8();
/* 1F4300 */ M2C_UNK grGreatBay_801F4300();
/* 1F4404 */ M2C_UNK grGreatBay_801F4404();
/* 1F4430 */ M2C_UNK grGreatBay_801F4430();
/* 1F4438 */ M2C_UNK grGreatBay_801F4438();
/* 1F443C */ M2C_UNK grGreatBay_801F443C();
/* 1F4440 */ M2C_UNK grGreatBay_801F4440();
/* 1F44A0 */ M2C_UNK grGreatBay_801F44A0();
/* 1F44A8 */ M2C_UNK grGreatBay_801F44A8();
/* 1F44AC */ M2C_UNK grGreatBay_801F44AC();
/* 1F44B0 */ M2C_UNK grGreatBay_801F44B0();
/* 1F4510 */ M2C_UNK grGreatBay_801F4510();
/* 1F4518 */ M2C_UNK grGreatBay_801F4518();
/* 1F451C */ M2C_UNK grGreatBay_801F451C();
/* 1F4520 */ M2C_UNK fn_801F4520();
/* 1F454C */ M2C_UNK grGreatBay_801F454C();
/* 1F4650 */ M2C_UNK grGreatBay_801F4650();
/* 1F4658 */ M2C_UNK grGreatBay_801F4658();
/* 1F4690 */ M2C_UNK grGreatBay_801F4690();
/* 1F4694 */ M2C_UNK grGreatBay_801F4694();
/* 1F4994 */ M2C_UNK grGreatBay_801F4994();
/* 1F499C */ M2C_UNK grGreatBay_801F499C();
/* 1F545C */ M2C_UNK grGreatBay_801F545C();
/* 1F5460 */ M2C_UNK grGreatBay_801F5460();
/* 1F55F8 */ M2C_UNK grGreatBay_801F55F8();
/* 1F5600 */ M2C_UNK grGreatBay_801F5600();
/* 1F5914 */ M2C_UNK fn_801F5914();
/* 1F5988 */ M2C_UNK grGreatBay_801F5988();
/* 1F598C */ M2C_UNK grGreatBay_801F598C();
/* 1F59F0 */ M2C_UNK grGreatBay_801F59F0();
/* 1F59F8 */ M2C_UNK grGreatBay_801F59F8();
/* 1F59FC */ M2C_UNK grGreatBay_801F59FC();
/* 1F5A00 */ M2C_UNK grGreatBay_801F5A00();
/* 1F5AF0 */ M2C_UNK grGreatBay_801F5AF0();
/* 1F5AF8 */ M2C_UNK grGreatBay_801F5AF8();
/* 1F5D48 */ M2C_UNK grGreatBay_801F5D48();
/* 1F5D4C */ M2C_UNK grGreatBay_801F5D4C();
/* 1F5E28 */ M2C_UNK grGreatBay_801F5E28();
/* 1F60C4 */ M2C_UNK fn_801F60C4();
/* 1F62F8 */ M2C_UNK grGreatBay_801F62F8();
/* 1F63F4 */ M2C_UNK grGreatBay_801F63F4();
/* 1F660C */ M2C_UNK grGreatBay_801F660C();
/* 1F66A4 */ M2C_UNK grGreatBay_801F66A4();
/* 1F6708 */ M2C_UNK fn_801F6708();
/* 1F67A4 */ M2C_UNK grGreatBay_801F67A4();
/* 1F680C */ M2C_UNK grGreatBay_801F680C();
/* 1F6814 */ M2C_UNK grGreatBay_801F6814();
#define GALE01_213458
/* 213458 */ M2C_UNK grGreens_80213458();
/* 213464 */ M2C_UNK grGreens_80213464();
/* 2134F4 */ M2C_UNK grGreens_802134F4();
/* 2134F8 */ M2C_UNK grGreens_802134F8();
/* 21351C */ M2C_UNK grGreens_8021351C();
/* 213524 */ M2C_UNK grGreens_80213524();
/* 21360C */ M2C_UNK grGreens_8021360C();
/* 2138AC */ M2C_UNK grGreens_802138AC();
/* 2138B4 */ M2C_UNK grGreens_802138B4();
/* 2138B8 */ M2C_UNK grGreens_802138B8();
/* 2138BC */ M2C_UNK grGreens_802138BC();
/* 213900 */ M2C_UNK grGreens_80213900();
/* 213908 */ M2C_UNK grGreens_80213908();
/* 21390C */ M2C_UNK grGreens_8021390C();
/* 213910 */ M2C_UNK grGreens_80213910();
/* 21393C */ M2C_UNK grGreens_8021393C();
/* 213944 */ M2C_UNK grGreens_80213944();
/* 213948 */ M2C_UNK grGreens_80213948();
/* 21394C */ M2C_UNK grGreens_8021394C();
/* 213978 */ M2C_UNK grGreens_80213978();
/* 213980 */ M2C_UNK grGreens_80213980();
/* 213984 */ M2C_UNK grGreens_80213984();
/* 213988 */ M2C_UNK grGreens_80213988();
/* 2139B4 */ M2C_UNK grGreens_802139B4();
/* 2139BC */ M2C_UNK grGreens_802139BC();
/* 2139C0 */ M2C_UNK grGreens_802139C0();
/* 2139C4 */ M2C_UNK grGreens_802139C4();
/* 213AAC */ M2C_UNK grGreens_80213AAC();
/* 213AB4 */ M2C_UNK grGreens_80213AB4();
/* 213B1C */ M2C_UNK fn_80213B1C();
/* 213C10 */ M2C_UNK grGreens_80213C10();
/* 214654 */ M2C_UNK grGreens_80214654();
/* 214658 */ M2C_UNK fn_80214658();
/* 214674 */ M2C_UNK grGreens_80214674();
/* 214794 */ M2C_UNK grGreens_80214794();
/* 21479C */ M2C_UNK grGreens_8021479C();
/* 214804 */ M2C_UNK grGreens_80214804();
/* 21483C */ M2C_UNK grGreens_8021483C();
/* 214B58 */ M2C_UNK grGreens_80214B58();
/* 214FA8 */ M2C_UNK grGreens_80214FA8();
/* 2150C4 */ M2C_UNK grGreens_802150C4();
/* 215358 */ M2C_UNK grGreens_80215358();
/* 2159B4 */ M2C_UNK fn_802159B4();
/* 2159B8 */ M2C_UNK grGreens_802159B8();
/* 215B84 */ M2C_UNK fn_80215B84();
/* 215D50 */ M2C_UNK fn_80215D50();
/* 215D54 */ M2C_UNK grGreens_80215D54();
/* 215ED8 */ M2C_UNK grGreens_80215ED8();
/* 2166C4 */ M2C_UNK grGreens_802166C4();
/* 216C20 */ M2C_UNK grGreens_80216C20();
/* 216DE4 */ M2C_UNK fn_80216DE4();
/* 216E64 */ M2C_UNK grGreens_80216E64();
/* 216E6C */ M2C_UNK grGreens_80216E6C();
#define GALE01_21EF38
/* 21EF38 */ M2C_UNK grHeal_8021EF38();
/* 21EF3C */ M2C_UNK grHeal_8021EF3C();
/* 21EFBC */ M2C_UNK grHeal_8021EFBC();
/* 21EFC0 */ M2C_UNK grHeal_8021EFC0();
/* 21EFE4 */ M2C_UNK grHeal_8021EFE4();
/* 21EFEC */ M2C_UNK grHeal_8021EFEC();
/* 21F0D8 */ M2C_UNK grHeal_8021F0D8();
/* 21F170 */ M2C_UNK grHeal_8021F170();
/* 21F178 */ M2C_UNK grHeal_8021F178();
/* 21F17C */ M2C_UNK grHeal_8021F17C();
/* 21F180 */ M2C_UNK grHeal_8021F180();
/* 21F41C */ M2C_UNK grHeal_8021F41C();
/* 21F424 */ M2C_UNK fn_8021F424();
/* 21F474 */ M2C_UNK grHeal_8021F474();
/* 21F4BC */ M2C_UNK grHeal_8021F4BC();
/* 21F4C0 */ M2C_UNK fn_8021F4C0();
/* 21F4E8 */ M2C_UNK grHeal_8021F4E8();
/* 21F5C8 */ M2C_UNK grHeal_8021F5C8();
/* 21F5CC */ M2C_UNK grHeal_8021F5CC();
/* 21F5D4 */ M2C_UNK grHeal_8021F5D4();
/* 21F5D8 */ M2C_UNK grHeal_8021F5D8();
/* 21F5DC */ M2C_UNK grHeal_8021F5DC();
/* 21F618 */ M2C_UNK grHeal_8021F618();
/* 21F620 */ M2C_UNK grHeal_8021F620();
/* 21F624 */ M2C_UNK grHeal_8021F624();
/* 21F628 */ M2C_UNK grHeal_8021F628();
/* 21F6F8 */ M2C_UNK grHeal_8021F6F8();
/* 21F6FC */ M2C_UNK grHeal_8021F6FC();
/* 21F704 */ M2C_UNK grHeal_8021F704();
/* 21F708 */ M2C_UNK grHeal_8021F708();
/* 21F70C */ M2C_UNK grHeal_8021F70C();
/* 21F79C */ M2C_UNK grHeal_8021F79C();
/* 21F830 */ M2C_UNK grHeal_8021F830();
/* 21F838 */ M2C_UNK grHeal_8021F838();
#define GALE01_21C750
/* 21C750 */ M2C_UNK grHomeRun_8021C750();
/* 21C754 */ M2C_UNK grHomeRun_8021C754();
/* 21C7FC */ M2C_UNK grHomeRun_8021C7FC();
/* 21C800 */ M2C_UNK grHomeRun_8021C800();
/* 21C824 */ M2C_UNK grHomeRun_8021C824();
/* 21C82C */ M2C_UNK grHomeRun_8021C82C();
/* 21C914 */ M2C_UNK grHomeRun_8021C914();
/* 21CB10 */ M2C_UNK grHomeRun_8021CB10();
/* 21CB18 */ M2C_UNK grHomeRun_8021CB18();
/* 21CB1C */ M2C_UNK grHomeRun_8021CB1C();
/* 21CB20 */ M2C_UNK grHomeRun_8021CB20();
/* 21D678 */ M2C_UNK grHomeRun_8021D678();
/* 21D680 */ M2C_UNK grHomeRun_8021D680();
/* 21DEB0 */ M2C_UNK grHomeRun_8021DEB0();
/* 21DEB4 */ M2C_UNK grHomeRun_8021DEB4();
/* 21DEE0 */ M2C_UNK grHomeRun_8021DEE0();
/* 21DEE8 */ M2C_UNK grHomeRun_8021DEE8();
/* 21DEEC */ M2C_UNK grHomeRun_8021DEEC();
/* 21DEF0 */ M2C_UNK grHomeRun_8021DEF0();
/* 21DF48 */ M2C_UNK grHomeRun_8021DF48();
/* 21DF50 */ M2C_UNK grHomeRun_8021DF50();
/* 21E008 */ M2C_UNK grHomeRun_8021E008();
/* 21E038 */ M2C_UNK grHomeRun_8021E038();
/* 21E064 */ M2C_UNK grHomeRun_8021E064();
/* 21E06C */ M2C_UNK grHomeRun_8021E06C();
/* 21E070 */ M2C_UNK grHomeRun_8021E070();
/* 21E074 */ M2C_UNK grHomeRun_8021E074();
/* 21E0CC */ M2C_UNK grHomeRun_8021E0CC();
/* 21E0D4 */ M2C_UNK grHomeRun_8021E0D4();
/* 21E18C */ M2C_UNK grHomeRun_8021E18C();
/* 21E1BC */ M2C_UNK grHomeRun_8021E1BC();
/* 21E1E8 */ M2C_UNK grHomeRun_8021E1E8();
/* 21E1F0 */ M2C_UNK grHomeRun_8021E1F0();
/* 21E1F4 */ M2C_UNK grHomeRun_8021E1F4();
/* 21E1F8 */ M2C_UNK grHomeRun_8021E1F8();
/* 21E250 */ M2C_UNK grHomeRun_8021E250();
/* 21E258 */ M2C_UNK grHomeRun_8021E258();
/* 21E310 */ M2C_UNK grHomeRun_8021E310();
/* 21E340 */ M2C_UNK grHomeRun_8021E340();
/* 21E36C */ M2C_UNK grHomeRun_8021E36C();
/* 21E374 */ M2C_UNK grHomeRun_8021E374();
/* 21E378 */ M2C_UNK grHomeRun_8021E378();
/* 21E37C */ M2C_UNK grHomeRun_8021E37C();
/* 21E3D4 */ M2C_UNK grHomeRun_8021E3D4();
/* 21E3DC */ M2C_UNK grHomeRun_8021E3DC();
/* 21E494 */ M2C_UNK grHomeRun_8021E494();
/* 21E4C4 */ M2C_UNK grHomeRun_8021E4C4();
/* 21E4F0 */ M2C_UNK grHomeRun_8021E4F0();
/* 21E4F8 */ M2C_UNK grHomeRun_8021E4F8();
/* 21E4FC */ M2C_UNK grHomeRun_8021E4FC();
/* 21E500 */ M2C_UNK grHomeRun_8021E500();
/* 21E994 */ M2C_UNK fn_8021E994();
/* 21EA30 */ M2C_UNK grHomeRun_8021EA30();
/* 21EAF8 */ M2C_UNK grHomeRun_8021EAF8();
/* 21EB10 */ M2C_UNK fn_8021EB10();
/* 21EC58 */ M2C_UNK grHomeRun_8021EC58();
/* 21ED74 */ M2C_UNK grHomeRun_8021ED74();
/* 21EDD4 */ M2C_UNK grHomeRun_8021EDD4();
/* 21EEB4 */ M2C_UNK grHomeRun_8021EEB4();
/* 21EEBC */ M2C_UNK grHomeRun_8021EEBC();
/* 21EF10 */ M2C_UNK grHomeRun_8021EF10();
#define GALE01_1F6868
/* 1F6868 */ M2C_UNK grIceMt_801F6868();
/* 1F686C */ M2C_UNK grIceMt_801F686C();
/* 1F7080 */ M2C_UNK grIceMt_801F7080();
/* 1F71DC */ M2C_UNK grIceMt_801F71DC();
/* 1F71E0 */ M2C_UNK grIceMt_801F71E0();
/* 1F71E8 */ M2C_UNK grIceMt_801F71E8();
/* 1F72D4 */ M2C_UNK grIceMt_801F72D4();
/* 1F75DC */ M2C_UNK grIceMt_801F75DC();
/* 1F75E4 */ M2C_UNK grIceMt_801F75E4();
/* 1F75E8 */ M2C_UNK grIceMt_801F75E8();
/* 1F75EC */ void fn_801F75EC(Ground_GObj*);
/* 1F75FC */ M2C_UNK grIceMt_801F75FC();
/* 1F7720 */ M2C_UNK grIceMt_801F7720();
/* 1F7728 */ M2C_UNK grIceMt_801F7728();
/* 1F77AC */ M2C_UNK grIceMt_801F77AC();
/* 1F77B0 */ M2C_UNK fn_801F77B0();
/* 1F785C */ M2C_UNK grIceMt_801F785C();
/* 1F796C */ M2C_UNK grIceMt_801F796C();
/* 1F7A2C */ M2C_UNK grIceMt_801F7A2C();
/* 1F7D90 */ M2C_UNK grIceMt_801F7D90();
/* 1F7D94 */ M2C_UNK grIceMt_801F7D94();
/* 1F7EE0 */ M2C_UNK grIceMt_801F7EE0();
/* 1F7EE8 */ M2C_UNK grIceMt_801F7EE8();
/* 1F7F1C */ M2C_UNK grIceMt_801F7F1C();
/* 1F7F70 */ M2C_UNK grIceMt_801F7F70();
/* 1F8154 */ M2C_UNK grIceMt_801F8154();
/* 1F815C */ M2C_UNK grIceMt_801F815C();
/* 1F81B4 */ M2C_UNK grIceMt_801F81B4();
/* 1F8208 */ M2C_UNK grIceMt_801F8208();
/* 1F835C */ M2C_UNK grIceMt_801F835C();
/* 1F8364 */ M2C_UNK grIceMt_801F8364();
/* 1F8398 */ M2C_UNK grIceMt_801F8398();
/* 1F83EC */ M2C_UNK grIceMt_801F83EC();
/* 1F85BC */ M2C_UNK grIceMt_801F85BC();
/* 1F85C4 */ M2C_UNK grIceMt_801F85C4();
/* 1F8608 */ M2C_UNK grIceMt_801F8608();
/* 1F865C */ M2C_UNK grIceMt_801F865C();
/* 1F87C0 */ M2C_UNK grIceMt_801F87C0();
/* 1F87C8 */ M2C_UNK grIceMt_801F87C8();
/* 1F87FC */ M2C_UNK grIceMt_801F87FC();
/* 1F8850 */ M2C_UNK grIceMt_801F8850();
/* 1F89A4 */ M2C_UNK grIceMt_801F89A4();
/* 1F89AC */ M2C_UNK grIceMt_801F89AC();
/* 1F89E0 */ M2C_UNK grIceMt_801F89E0();
/* 1F8A34 */ M2C_UNK grIceMt_801F8A34();
/* 1F8B08 */ M2C_UNK grIceMt_801F8B08();
/* 1F8B10 */ M2C_UNK grIceMt_801F8B10();
/* 1F8C60 */ M2C_UNK grIceMt_801F8C60();
/* 1F8C64 */ M2C_UNK fn_801F8C64();
/* 1F8CDC */ M2C_UNK grIceMt_801F8CDC();
/* 1F8E58 */ M2C_UNK fn_801F8E58();
/* 1F9038 */ M2C_UNK fn_801F9038();
/* 1F9150 */ M2C_UNK fn_801F9150();
/* 1F91A4 */ M2C_UNK fn_801F91A4();
/* 1F91A8 */ M2C_UNK fn_801F91A8();
/* 1F91EC */ M2C_UNK grIceMt_801F91EC();
/* 1F929C */ M2C_UNK grIceMt_801F929C();
/* 1F9338 */ M2C_UNK fn_801F9338();
/* 1F9448 */ M2C_UNK fn_801F9448();
/* 1F9558 */ M2C_UNK fn_801F9558();
/* 1F9668 */ M2C_UNK grIceMt_801F9668();
/* 1F96E0 */ M2C_UNK grIceMt_801F96E0();
/* 1F98A8 */ M2C_UNK grIceMt_801F98A8();
/* 1F993C */ M2C_UNK grIceMt_801F993C();
/* 1F9ACC */ M2C_UNK grIceMt_801F9ACC();
/* 1FA0BC */ M2C_UNK grIceMt_801FA0BC();
/* 1FA364 */ M2C_UNK grIceMt_801FA364();
/* 1FA4CC */ M2C_UNK fn_801FA4CC();
/* 1FA500 */ M2C_UNK grIceMt_801FA500();
/* 1FA6D8 */ M2C_UNK grIceMt_801FA6D8();
/* 1FA728 */ void grIceMt_801FA728(Vec3*);
/* 1FA7F0 */ M2C_UNK grIceMt_801FA7F0();
/* 1FA854 */ M2C_UNK grIceMt_801FA854();
/* 1FA8F8 */ M2C_UNK grIceMt_801FA8F8();
/* 1FA900 */ M2C_UNK grIceMt_801FA900();
#define GALE01_1FA908
/* 1FA908 */ M2C_UNK grInishie1_801FA908();
/* 1FA90C */ M2C_UNK grInishie1_801FA90C();
/* 1FA984 */ M2C_UNK grInishie1_801FA984();
/* 1FA988 */ M2C_UNK grInishie1_801FA988();
/* 1FA9AC */ M2C_UNK grInishie1_801FA9AC();
/* 1FA9B4 */ M2C_UNK grInishie1_801FA9B4();
/* 1FAAA0 */ M2C_UNK grInishie1_801FAAA0();
/* 1FAACC */ M2C_UNK grInishie1_801FAACC();
/* 1FAAD4 */ M2C_UNK grInishie1_801FAAD4();
/* 1FAAD8 */ M2C_UNK grInishie1_801FAAD8();
/* 1FAADC */ M2C_UNK grInishie1_801FAADC();
/* 1FAB60 */ M2C_UNK grInishie1_801FAB60();
/* 1FAB68 */ M2C_UNK grInishie1_801FAB68();
/* 1FABB0 */ M2C_UNK grInishie1_801FABB0();
/* 1FABB4 */ M2C_UNK grInishie1_801FABB4();
/* 1FABF4 */ M2C_UNK grInishie1_801FABF4();
/* 1FABFC */ M2C_UNK grInishie1_801FABFC();
/* 1FAC00 */ M2C_UNK grInishie1_801FAC00();
/* 1FAC04 */ M2C_UNK grInishie1_801FAC04();
/* 1FAC50 */ M2C_UNK grInishie1_801FAC50();
/* 1FAC58 */ M2C_UNK grInishie1_801FAC58();
/* 1FAD80 */ M2C_UNK grInishie1_801FAD80();
/* 1FAD84 */ M2C_UNK grInishie1_801FAD84();
/* 1FB0AC */ M2C_UNK grInishie1_801FB0AC();
/* 1FB3F0 */ M2C_UNK grInishie1_801FB3F0();
/* 1FBA34 */ M2C_UNK grInishie1_801FBA34();
/* 1FBAA0 */ M2C_UNK grInishie1_801FBAA0();
/* 1FBC4C */ M2C_UNK grInishie1_801FBC4C();
/* 1FBCEC */ M2C_UNK grInishie1_801FBCEC();
/* 1FBEB8 */ M2C_UNK fn_801FBEB8();
/* 1FBF6C */ M2C_UNK fn_801FBF6C();
/* 1FC018 */ M2C_UNK grInishie1_801FC018();
/* 1FC110 */ M2C_UNK grInishie1_801FC110();
/* 1FC4A0 */ M2C_UNK grInishie1_801FC4A0();
/* 1FC664 */ M2C_UNK grInishie1_801FC664();
/* 1FC9AC */ M2C_UNK fn_801FC9AC();
/* 1FCAAC */ bool grInishie1_801FCAAC(enum_t);
/* 1FCB10 */ M2C_UNK grInishie1_801FCB10();
/* 1FCBB0 */ M2C_UNK grInishie1_801FCBB0();
/* 1FCBB8 */ M2C_UNK grInishie1_801FCBB8();
#define GALE01_1FCBC0
/* 1FCBC0 */ M2C_UNK grInishie2_801FCBC0();
/* 1FCBC4 */ M2C_UNK grInishie2_801FCBC4();
/* 1FCCAC */ M2C_UNK grInishie2_801FCCAC();
/* 1FCCB0 */ M2C_UNK grInishie2_801FCCB0();
/* 1FCCD4 */ M2C_UNK grInishie2_801FCCD4();
/* 1FCCDC */ M2C_UNK grInishie2_801FCCDC();
/* 1FCDC8 */ M2C_UNK grInishie2_801FCDC8();
/* 1FCDF4 */ M2C_UNK grInishie2_801FCDF4();
/* 1FCDFC */ M2C_UNK grInishie2_801FCDFC();
/* 1FCE00 */ M2C_UNK grInishie2_801FCE00();
/* 1FCE04 */ M2C_UNK grInishie2_801FCE04();
/* 1FCF24 */ M2C_UNK grInishie2_801FCF24();
/* 1FCF2C */ M2C_UNK grInishie2_801FCF2C();
/* 1FCFCC */ M2C_UNK grInishie2_801FCFCC();
/* 1FD014 */ M2C_UNK grInishie2_801FD014();
/* 1FD018 */ M2C_UNK grInishie2_801FD018();
/* 1FD0B4 */ M2C_UNK grInishie2_801FD0B4();
/* 1FD198 */ M2C_UNK grInishie2_801FD198();
/* 1FD21C */ M2C_UNK grInishie2_801FD21C();
/* 1FD224 */ M2C_UNK grInishie2_801FD224();
/* 1FD364 */ M2C_UNK grInishie2_801FD364();
/* 1FD368 */ M2C_UNK grInishie2_801FD368();
/* 1FD3CC */ M2C_UNK grInishie2_801FD3CC();
/* 1FD448 */ M2C_UNK grInishie2_801FD448();
/* 1FD4CC */ M2C_UNK grInishie2_801FD4CC();
/* 1FD4F0 */ M2C_UNK grInishie2_801FD4F0();
/* 1FD64C */ M2C_UNK grInishie2_801FD64C();
/* 1FD654 */ M2C_UNK grInishie2_801FD654();
/* 1FD740 */ M2C_UNK grInishie2_801FD740();
/* 1FD744 */ M2C_UNK grInishie2_801FD744();
/* 1FD7A8 */ M2C_UNK grInishie2_801FD7A8();
/* 1FD824 */ M2C_UNK grInishie2_801FD824();
/* 1FD9EC */ M2C_UNK grInishie2_801FD9EC();
/* 1FDE8C */ M2C_UNK grInishie2_801FDE8C();
/* 1FDED0 */ M2C_UNK grInishie2_801FDED0();
/* 1FDED8 */ M2C_UNK grInishie2_801FDED8();
/* 1FDFB4 */ M2C_UNK grInishie2_801FDFB4();
/* 1FDFE4 */ M2C_UNK grInishie2_801FDFE4();
/* 1FDFE8 */ M2C_UNK grInishie2_801FDFE8();
/* 1FDFF0 */ M2C_UNK grInishie2_801FDFF0();
#define GALE01_1CBB84
/* 1CBB84 */ void grIzumi_801CBB84(int);
/* 1CBB88 */ void grIzumi_801CBB88(void);
/* 1CBC0C */ void grIzumi_801CBC0C(void);
/* 1CBCBC */ void grIzumi_801CBCBC(void);
/* 1CBCE0 */ bool grIzumi_801CBCE0(void);
/* 1CBCE8 */ HSD_GObj* grIzumi_801CBCE8(int gobj_id);
/* 1CBDD4 */ void grIzumi_801CBDD4(HSD_GObj* gobj);
/* 1CBE00 */ bool grIzumi_801CBE00(HSD_GObj* gobj);
/* 1CBE08 */ void grIzumi_801CBE08(HSD_GObj* gobj);
/* 1CBE0C */ void grIzumi_801CBE0C(HSD_GObj* gobj);
/* 1CBE10 */ void grIzumi_801CBE10(HSD_GObj* gobj);
/* 1CBE54 */ bool grIzumi_801CBE54(HSD_GObj* gobj);
/* 1CBE5C */ void grIzumi_801CBE5C(HSD_GObj* gobj);
/* 1CBE60 */ void grIzumi_801CBE60(HSD_GObj* gobj);
/* 1CBE64 */ void grIzumi_801CBE64(HSD_GObj* gobj);
/* 1CC0CC */ bool grIzumi_801CC0CC(HSD_GObj* gobj);
/* 1CC0D4 */ void grIzumi_801CC0D4(HSD_GObj* gobj);
/* 1CC338 */ void grIzumi_801CC338(HSD_GObj* gobj);
/* 1CC33C */ void grIzumi_801CC33C(HSD_GObj* gobj);
/* 1CC350 */ bool grIzumi_801CC350(HSD_GObj* gobj);
/* 1CC358 */ void grIzumi_801CC358(HSD_GObj* gobj);
/* 1CCA10 */ void grIzumi_801CCA10(HSD_GObj* gobj);
/* 1CCA14 */ void grIzumi_801CCA14(HSD_GObj* gobj);
/* 1CCA54 */ bool grIzumi_801CCA54(HSD_GObj* gobj);
/* 1CCA5C */ void grIzumi_801CCA5C(HSD_GObj* gobj);
/* 1CCA60 */ void grIzumi_801CCA60(HSD_GObj* gobj);
/* 1CCA64 */ void grIzumi_801CCA64(HSD_GObj* gobj);
/* 1CCB08 */ bool grIzumi_801CCB08(HSD_GObj* gobj);
/* 1CCB10 */ void grIzumi_801CCB10(HSD_GObj* gobj);
/* 1CCB14 */ void grIzumi_801CCB14(HSD_GObj* gobj);
/* 1CCB18 */ void grIzumi_801CCB18(HSD_GObj* gobj);
/* 1CCB90 */ void grIzumi_801CCB90(HSD_GObj* gobj, int renderpass);
/* 1CCBDC */ HSD_GObj* grIzumi_801CCBDC(float height, Vec3* a, int b,
HSD_JObj* jobj);
/* 1CCD98 */ HSD_GObj* grIzumi_801CCD98(void);
/* 1CCEA0 */ void grIzumi_801CCEA0(HSD_GObj* gobj, int renderpass);
/* 1CD090 */ HSD_TObj* grIzumi_801CD090(HSD_GObj* gobj, HSD_ImageDesc* image);
/* 1CD220 */ void grIzumi_801CD220(HSD_GObj* gobj, int);
/* 1CD278 */ DynamicsDesc* grIzumi_801CD278(enum_t);
/* 1CD280 */ bool grIzumi_801CD280(Vec3*, int, HSD_JObj*);
/* 1CD2D4 */ void grIzumi_801CD2D4(void);
#define GALE01_20741C
/* 20741C */ M2C_UNK grKinokoRoute_8020741C();
/* 207420 */ M2C_UNK grKinokoRoute_80207420();
/* 207490 */ M2C_UNK grKinokoRoute_80207490();
/* 2074D8 */ M2C_UNK grKinokoRoute_802074D8();
/* 207544 */ M2C_UNK grKinokoRoute_80207544();
/* 20754C */ M2C_UNK grKinokoRoute_8020754C();
/* 207634 */ M2C_UNK grKinokoRoute_80207634();
/* 2078E8 */ M2C_UNK grKinokoRoute_802078E8();
/* 2078F0 */ M2C_UNK grKinokoRoute_802078F0();
/* 207A94 */ M2C_UNK grKinokoRoute_80207A94();
/* 207A98 */ M2C_UNK grKinokoRoute_80207A98();
/* 207ACC */ M2C_UNK grKinokoRoute_80207ACC();
/* 207AD4 */ M2C_UNK grKinokoRoute_80207AD4();
/* 207AD8 */ M2C_UNK grKinokoRoute_80207AD8();
/* 207ADC */ M2C_UNK grKinokoRoute_80207ADC();
/* 207B20 */ M2C_UNK grKinokoRoute_80207B20();
/* 207B28 */ M2C_UNK grKinokoRoute_80207B28();
/* 207B2C */ M2C_UNK grKinokoRoute_80207B2C();
/* 207B30 */ M2C_UNK fn_80207B30();
/* 207B5C */ M2C_UNK grKinokoRoute_80207B5C();
/* 207C80 */ M2C_UNK grKinokoRoute_80207C80();
/* 207C88 */ M2C_UNK grKinokoRoute_80207C88();
/* 208368 */ M2C_UNK grKinokoRoute_80208368();
/* 20836C */ M2C_UNK grKinokoRoute_8020836C();
/* 208480 */ M2C_UNK fn_80208480();
/* 2084B4 */ M2C_UNK fn_802084B4();
/* 208564 */ M2C_UNK grKinokoRoute_80208564();
/* 208660 */ M2C_UNK fn_80208660();
/* 2086EC */ M2C_UNK grKinokoRoute_802086EC();
/* 208754 */ M2C_UNK grKinokoRoute_80208754();
/* 20875C */ M2C_UNK grKinokoRoute_8020875C();
#define GALE01_1D5238
/* 1D5238 */ void grKongo_801D5238(void);
/* 1D523C */ void grKongo_801D523C(void);
/* 1D52F8 */ void grKongo_801D52F8(void);
/* 1D52FC */ void grKongo_801D52FC(void);
/* 1D5338 */ s32 grKongo_801D5338(void);
/* 1D5340 */ HSD_GObj* grKongo_801D5340(s32);
/* 1D542C */ void fn_801D542C(HSD_GObj*);
/* 1D5490 */ void grKongo_801D5490(HSD_GObj*);
/* 1D5574 */ s32 grKongo_801D5574(void);
/* 1D557C */ void grKongo_801D557C(HSD_GObj*);
/* 1D55D4 */ void grKongo_801D55D4(void);
/* 1D55D8 */ void grKongo_801D55D8(HSD_GObj*);
/* 1D5774 */ s32 grKongo_801D5774(void);
/* 1D577C */ void grKongo_801D577C(HSD_GObj*);
/* 1D5FA4 */ void grKongo_801D5FA4(void);
/* 1D5FA8 */ void grKongo_801D5FA8(HSD_GObj*);
/* 1D5FD4 */ s32 grKongo_801D5FD4(void);
/* 1D5FDC */ void grKongo_801D5FDC(void);
/* 1D5FE0 */ void grKongo_801D5FE0(void);
/* 1D5FE4 */ void grKongo_801D5FE4(HSD_GObj*);
/* 1D6028 */ s32 grKongo_801D6028(void);
/* 1D6030 */ void grKongo_801D6030(void);
/* 1D6034 */ void grKongo_801D6034(void);
/* 1D6038 */ void grKongo_801D6038(HSD_GObj*);
/* 1D6064 */ s32 grKongo_801D6064(void);
/* 1D606C */ void grKongo_801D606C(void);
/* 1D6070 */ void grKongo_801D6070(void);
/* 1D6074 */ void grKongo_801D6074(HSD_GObj*);
/* 1D6190 */ s32 grKongo_801D6190(void);
/* 1D6198 */ void grKongo_801D6198(HSD_GObj*);
/* 1D6378 */ void grKongo_801D6378(void);
/* 1D637C */ void grKongo_801D637C(HSD_GObj*);
/* 1D64B4 */ s32 grKongo_801D64B4(void);
/* 1D64BC */ void grKongo_801D64BC(HSD_GObj*);
/* 1D6518 */ void grKongo_801D6518(void);
/* 1D651C */ void grKongo_801D651C(HSD_GObj*);
/* 1D6660 */ s32 grKongo_801D6660(void);
/* 1D6668 */ void grKongo_801D6668(HSD_GObj*);
/* 1D69AC */ void grKongo_801D69AC(void);
/* 1D69B0 */ void grKongo_801D69B0(HSD_GObj*);
/* 1D6AFC */ void grKongo_801D6AFC(void);
/* 1D7134 */ void grKongo_801D7134(HSD_GObj*, s32);
/* 1D77E0 */ void grKongo_801D77E0(HSD_GObj*, s32);
/* 1D7BBC */ void grKongo_801D7BBC(HSD_GObj*);
/* 1D7E78 */ M2C_UNK grKongo_801D7E78();
/* 1D7F78 */ bool grKongo_801D7F78(HSD_GObj*);
/* 1D8058 */ M2C_UNK grKongo_801D8058();
/* 1D8078 */ HSD_GObj* grKongo_801D8078(HSD_GObj*);
/* 1D8270 */ void grKongo_801D8270(HSD_GObj*);
/* 1D828C */ void grKongo_801D828C(HSD_GObj*);
/* 1D8314 */ f32 grKongo_801D8314(void);
/* 1D844C */ M2C_UNK grKongo_801D844C();
#define GALE01_1FDFF8
/* 1FDFF8 */ M2C_UNK grKraid_801FDFF8();
/* 1FDFFC */ M2C_UNK grKraid_801FDFFC();
/* 1FE094 */ M2C_UNK grKraid_801FE094();
/* 1FE098 */ M2C_UNK grKraid_801FE098();
/* 1FE0BC */ M2C_UNK grKraid_801FE0BC();
/* 1FE0C4 */ M2C_UNK grKraid_801FE0C4();
/* 1FE1B0 */ M2C_UNK grKraid_801FE1B0();
/* 1FE1DC */ M2C_UNK grKraid_801FE1DC();
/* 1FE1E4 */ M2C_UNK grKraid_801FE1E4();
/* 1FE1E8 */ M2C_UNK grKraid_801FE1E8();
/* 1FE1EC */ M2C_UNK grKraid_801FE1EC();
/* 1FE2C8 */ M2C_UNK grKraid_801FE2C8();
/* 1FE2D0 */ M2C_UNK grKraid_801FE2D0();
/* 1FE35C */ M2C_UNK grKraid_801FE35C();
/* 1FE360 */ M2C_UNK grKraid_801FE360();
/* 1FE3A4 */ M2C_UNK grKraid_801FE3A4();
/* 1FE3AC */ M2C_UNK grKraid_801FE3AC();
/* 1FE3B0 */ M2C_UNK grKraid_801FE3B0();
/* 1FE3B4 */ M2C_UNK grKraid_801FE3B4();
/* 1FE438 */ M2C_UNK grKraid_801FE438();
/* 1FE440 */ M2C_UNK grKraid_801FE440();
/* 1FE6D4 */ M2C_UNK grKraid_801FE6D4();
/* 1FE6D8 */ M2C_UNK grKraid_801FE6D8();
/* 1FE818 */ M2C_UNK grKraid_801FE818();
/* 1FE9F8 */ M2C_UNK grKraid_801FE9F8();
/* 1FEA00 */ M2C_UNK grKraid_801FEA00();
/* 1FEE54 */ M2C_UNK grKraid_801FEE54();
/* 1FF068 */ M2C_UNK grKraid_801FF068();
/* 1FF0E0 */ M2C_UNK grKraid_801FF0E0();
/* 1FF14C */ M2C_UNK grKraid_801FF14C();
/* 1FF150 */ M2C_UNK grKraid_801FF150();
/* 1FF154 */ M2C_UNK grKraid_801FF154();
/* 1FF15C */ M2C_UNK grKraid_801FF15C();
#define GALE01_21A620
/* 21A620 */ M2C_UNK grLast_8021A620();
/* 21A740 */ M2C_UNK grLast_8021A740();
/* 21A7C4 */ M2C_UNK grLast_8021A7C4();
/* 21A7C8 */ M2C_UNK grLast_8021A7C8();
/* 21A7EC */ M2C_UNK grLast_8021A7EC();
/* 21A7F4 */ M2C_UNK grLast_8021A7F4();
/* 21A8E0 */ M2C_UNK grLast_8021A8E0();
/* 21A90C */ M2C_UNK grLast_8021A90C();
/* 21A914 */ M2C_UNK grLast_8021A914();
/* 21A918 */ M2C_UNK grLast_8021A918();
/* 21A91C */ M2C_UNK grLast_8021A91C();
/* 21A960 */ M2C_UNK grLast_8021A960();
/* 21A968 */ M2C_UNK grLast_8021A968();
/* 21A96C */ M2C_UNK grLast_8021A96C();
/* 21A970 */ M2C_UNK grLast_8021A970();
/* 21A99C */ M2C_UNK grLast_8021A99C();
/* 21A9A4 */ M2C_UNK grLast_8021A9A4();
/* 21A9A8 */ M2C_UNK grLast_8021A9A8();
/* 21A9AC */ M2C_UNK fn_8021A9AC();
/* 21A9C4 */ M2C_UNK grLast_8021A9C4();
/* 21AAA8 */ M2C_UNK grLast_8021AAA8();
/* 21AAB0 */ M2C_UNK grLast_8021AAB0();
/* 21AB30 */ M2C_UNK grLast_8021AB30();
/* 21AB34 */ M2C_UNK grLast_8021AB34();
/* 21AB78 */ M2C_UNK grLast_8021AB78();
/* 21AB80 */ M2C_UNK grLast_8021AB80();
/* 21AB84 */ M2C_UNK grLast_8021AB84();
/* 21AB88 */ M2C_UNK grLast_8021AB88();
/* 21ABCC */ M2C_UNK grLast_8021ABCC();
/* 21ABD4 */ M2C_UNK grLast_8021ABD4();
/* 21ABD8 */ M2C_UNK grLast_8021ABD8();
/* 21ABDC */ M2C_UNK grLast_8021ABDC();
/* 21AC20 */ M2C_UNK grLast_8021AC20();
/* 21AC28 */ M2C_UNK grLast_8021AC28();
/* 21AC2C */ M2C_UNK grLast_8021AC2C();
/* 21AC30 */ M2C_UNK grLast_8021AC30();
/* 21ADC8 */ M2C_UNK grLast_8021ADC8();
/* 21ADD0 */ M2C_UNK grLast_8021ADD0();
/* 21B23C */ M2C_UNK grLast_8021B23C();
/* 21B240 */ M2C_UNK grLast_8021B240();
/* 21B284 */ M2C_UNK grLast_8021B284();
/* 21B28C */ M2C_UNK grLast_8021B28C();
/* 21B290 */ M2C_UNK grLast_8021B290();
/* 21B294 */ M2C_UNK grLast_8021B294();
/* 21B2D8 */ M2C_UNK grLast_8021B2D8();
/* 21B2E0 */ M2C_UNK grLast_8021B2E0();
/* 21B2E4 */ M2C_UNK grLast_8021B2E4();
/* 21B2E8 */ M2C_UNK grLast_8021B2E8();
/* 21B5C4 */ M2C_UNK grLast_8021B5C4();
/* 21B920 */ M2C_UNK grLast_8021B920();
/* 21C40C */ M2C_UNK grLast_8021C40C();
/* 21C500 */ M2C_UNK grLast_8021C500();
/* 21C640 */ M2C_UNK grLast_8021C640();
/* 21C6AC */ M2C_UNK grLast_8021C6AC();
/* 21C740 */ M2C_UNK grLast_8021C740();
/* 21C748 */ M2C_UNK grLast_8021C748();
#define GALE01_1C96E8
/* 1C96E8 */ bool grLib_801C96E8(HSD_GObj*);
/* 1C96F8 */ UnkGeneratorStruct* grLib_801C96F8(s32, s8, S32Vec3*);
/* 1C97DC */ void grLib_801C97DC(s32, s32, HSD_JObj*);
/* 1C9808 */ void grLib_801C9808(s32, s32, HSD_JObj*);
/* 1C9834 */ void grLib_801C9834(UnkGeneratorStruct*);
/* 1C9854 */ void grLib_801C9854(s32);
/* 1C9874 */ void grLib_801C9874(UnkGeneratorStruct*);
/* 1C98A0 */ void grLib_801C98A0(HSD_JObj*);
/* 1C9908 */ void grLib_801C9908(HSD_JObj*);
/* 1C99C0 */ void grLib_801C99C0(s32, s32, HSD_JObj*, s32);
/* 1C9A10 */ Vec3* grLib_801C9A10(void);
/* 1C9A70 */ void grLib_801C9A70(enum_t, Vec3*);
/* 1C9B20 */ void grLib_801C9B20(HSD_JObj*, DynamicsDesc*, DynamicsDesc*);
/* 1C9B6C */ void grLib_801C9B6C(void*);
/* 1C9B8C */ void grLib_801C9B8C(void*);
/* 1C9CEC */ HSD_GObj* grLib_801C9CEC(s32);
/* 1C9E40 */ s16 grLib_801C9E40(void);
/* 1C9E50 */ void grLib_801C9E50(s16);
/* 1C9E60 */ bool grLib_801C9E60(Vec3*);
/* 1C9EE8 */ int grLib_801C9EE8(Vec3*, float);
#define GALE01_1C87D0
/* 1C8858 */ void grMaterial_801C8858(HSD_JObj*, u32 flags);
/* 1C8A04 */ void grMaterial_801C8A04(HSD_JObj*, u32 flags);
/* 1C8CDC */ M2C_UNK grMaterial_801C8CDC(HSD_GObj*);
/* 1C8CFC */ int grMaterial_801C8CFC(int, int, Ground*, HSD_JObj*, int,
HSD_GObjEvent, int);
/* 1C8E08 */ void grMaterial_801C8E08(int);
/* 1C8E28 */ void grMaterial_801C8E28(HSD_GObj*);
/* 1C94D8 */ void grMaterial_801C94D8(M2C_UNK hsd_obj);
/* 1C95C4 */ void grMaterial_801C95C4(HSD_GObj*);
/* 1C9604 */ void grMaterial_801C9604(HSD_GObj* bg, int, bool);
/* 1C9698 */ void grMaterial_801C9698(HSD_GObj*);
#define GALE01_1EFC68
/* 1EFC68 */ M2C_UNK grMuteCity_801EFC68();
/* 1EFC6C */ M2C_UNK grMuteCity_801EFC6C();
/* 1EFCDC */ M2C_UNK grMuteCity_801EFCDC();
/* 1EFCE0 */ M2C_UNK grMuteCity_801EFCE0();
/* 1EFD04 */ M2C_UNK grMuteCity_801EFD04();
/* 1EFD0C */ M2C_UNK grMuteCity_801EFD0C();
/* 1EFDF8 */ M2C_UNK grMuteCity_801EFDF8();
/* 1F0118 */ M2C_UNK grMuteCity_801F0118();
/* 1F0120 */ M2C_UNK grMuteCity_801F0120();
/* 1F01B0 */ M2C_UNK grMuteCity_801F01B0();
/* 1F01B4 */ M2C_UNK grMuteCity_801F01B4();
/* 1F0288 */ M2C_UNK grMuteCity_801F0288();
/* 1F0290 */ M2C_UNK grMuteCity_801F0290();
/* 1F040C */ M2C_UNK grMuteCity_801F040C();
/* 1F0410 */ M2C_UNK grMuteCity_801F0410();
/* 1F043C */ M2C_UNK grMuteCity_801F043C();
/* 1F0444 */ M2C_UNK grMuteCity_801F0444();
/* 1F0448 */ M2C_UNK grMuteCity_801F0448();
/* 1F044C */ M2C_UNK grMuteCity_801F044C();
/* 1F04A8 */ M2C_UNK grMuteCity_801F04A8();
/* 1F04B0 */ M2C_UNK grMuteCity_801F04B0();
/* 1F04B4 */ M2C_UNK grMuteCity_801F04B4();
/* 1F04B8 */ M2C_UNK grMuteCity_801F04B8();
/* 1F0948 */ M2C_UNK grMuteCity_801F0948();
/* 1F094C */ M2C_UNK grMuteCity_801F094C();
/* 1F0D20 */ M2C_UNK grMuteCity_801F0D20();
/* 1F0F4C */ M2C_UNK grMuteCity_801F0F4C();
/* 1F106C */ M2C_UNK grMuteCity_801F106C();
/* 1F1328 */ M2C_UNK grMuteCity_801F1328();
/* 1F173C */ M2C_UNK grMuteCity_801F173C();
/* 1F1754 */ M2C_UNK grMuteCity_801F1754();
/* 1F176C */ M2C_UNK grMuteCity_801F176C();
/* 1F1784 */ M2C_UNK grMuteCity_801F1784();
/* 1F179C */ M2C_UNK grMuteCity_801F179C();
/* 1F17B4 */ M2C_UNK grMuteCity_801F17B4();
/* 1F17CC */ M2C_UNK grMuteCity_801F17CC();
/* 1F17E4 */ M2C_UNK grMuteCity_801F17E4();
/* 1F17FC */ M2C_UNK grMuteCity_801F17FC();
/* 1F1814 */ M2C_UNK grMuteCity_801F1814();
/* 1F182C */ M2C_UNK grMuteCity_801F182C();
/* 1F1844 */ M2C_UNK grMuteCity_801F1844();
/* 1F185C */ M2C_UNK grMuteCity_801F185C();
/* 1F1874 */ M2C_UNK grMuteCity_801F1874();
/* 1F188C */ M2C_UNK grMuteCity_801F188C();
/* 1F18A4 */ M2C_UNK grMuteCity_801F18A4();
/* 1F18BC */ M2C_UNK grMuteCity_801F18BC();
/* 1F18D4 */ M2C_UNK grMuteCity_801F18D4();
/* 1F18EC */ M2C_UNK grMuteCity_801F18EC();
/* 1F1904 */ M2C_UNK grMuteCity_801F1904();
/* 1F191C */ M2C_UNK grMuteCity_801F191C();
/* 1F1934 */ M2C_UNK grMuteCity_801F1934();
/* 1F194C */ M2C_UNK grMuteCity_801F194C();
/* 1F1964 */ M2C_UNK grMuteCity_801F1964();
/* 1F197C */ M2C_UNK grMuteCity_801F197C();
/* 1F1994 */ M2C_UNK grMuteCity_801F1994();
/* 1F19AC */ M2C_UNK grMuteCity_801F19AC();
/* 1F19C4 */ M2C_UNK grMuteCity_801F19C4();
/* 1F19DC */ M2C_UNK grMuteCity_801F19DC();
/* 1F19F4 */ M2C_UNK grMuteCity_801F19F4();
/* 1F1A0C */ M2C_UNK fn_801F1A0C();
/* 1F1A34 */ M2C_UNK grMuteCity_801F1A34();
/* 1F28A8 */ M2C_UNK grMuteCity_801F28A8();
/* 1F290C */ M2C_UNK grMuteCity_801F290C();
/* 1F2AB0 */ M2C_UNK grMuteCity_801F2AB0();
/* 1F2B58 */ M2C_UNK fn_801F2B58();
/* 1F2BBC */ M2C_UNK grMuteCity_801F2BBC();
/* 1F2C10 */ M2C_UNK grMuteCity_801F2C10();
#define GALE01_20F468
/* 20F468 */ M2C_UNK grOldKongo_8020F468();
/* 20F46C */ M2C_UNK grOldKongo_8020F46C();
/* 20F4E4 */ M2C_UNK grOldKongo_8020F4E4();
/* 20F4E8 */ M2C_UNK grOldKongo_8020F4E8();
/* 20F524 */ M2C_UNK grOldKongo_8020F524();
/* 20F52C */ M2C_UNK grOldKongo_8020F52C();
/* 20F618 */ M2C_UNK grOldKongo_8020F618();
/* 20F644 */ M2C_UNK grOldKongo_8020F644();
/* 20F64C */ M2C_UNK grOldKongo_8020F64C();
/* 20F650 */ M2C_UNK grOldKongo_8020F650();
/* 20F654 */ M2C_UNK grOldKongo_8020F654();
/* 20F6B4 */ M2C_UNK grOldKongo_8020F6B4();
/* 20F6BC */ M2C_UNK grOldKongo_8020F6BC();
/* 20F6E0 */ M2C_UNK grOldKongo_8020F6E0();
/* 20F6E4 */ M2C_UNK grOldKongo_8020F6E4();
/* 20F880 */ M2C_UNK grOldKongo_8020F880();
/* 20F888 */ M2C_UNK grOldKongo_8020F888();
/* 210058 */ M2C_UNK grOldKongo_80210058();
/* 21005C */ M2C_UNK grOldKongo_8021005C();
/* 2100F4 */ M2C_UNK grOldKongo_802100F4();
/* 2100FC */ M2C_UNK grOldKongo_802100FC();
/* 210450 */ M2C_UNK grOldKongo_80210450();
/* 210454 */ M2C_UNK fn_80210454();
/* 2105AC */ void grOldKongo_802105AC(HSD_GObj*);
/* 2105C8 */ void grOldKongo_802105C8(HSD_GObj*);
/* 210650 */ M2C_UNK grOldKongo_80210650();
/* 210780 */ M2C_UNK grOldKongo_80210780();
/* 210788 */ M2C_UNK grOldKongo_80210788();
#define GALE01_2107DC
/* 2107DC */ M2C_UNK grOldPupupu_802107DC();
/* 2107E0 */ M2C_UNK grOldPupupu_802107E0();
/* 210884 */ M2C_UNK grOldPupupu_80210884();
/* 210888 */ M2C_UNK grOldPupupu_80210888();
/* 2108AC */ M2C_UNK grOldPupupu_802108AC();
/* 2108B4 */ M2C_UNK grOldPupupu_802108B4();
/* 21099C */ M2C_UNK grOldPupupu_8021099C();
/* 2109C8 */ M2C_UNK grOldPupupu_802109C8();
/* 2109D0 */ M2C_UNK grOldPupupu_802109D0();
/* 2109D4 */ M2C_UNK grOldPupupu_802109D4();
/* 2109D8 */ M2C_UNK grOldPupupu_802109D8();
/* 210A1C */ M2C_UNK grOldPupupu_80210A1C();
/* 210A24 */ M2C_UNK grOldPupupu_80210A24();
/* 210B00 */ M2C_UNK grOldPupupu_80210B00();
/* 210B04 */ M2C_UNK grOldPupupu_80210B04();
/* 210B48 */ M2C_UNK grOldPupupu_80210B48();
/* 210B50 */ M2C_UNK grOldPupupu_80210B50();
/* 210B54 */ M2C_UNK grOldPupupu_80210B54();
/* 210B58 */ M2C_UNK grOldPupupu_80210B58();
/* 210BB8 */ M2C_UNK grOldPupupu_80210BB8();
/* 210BC0 */ M2C_UNK grOldPupupu_80210BC0();
/* 210BE0 */ M2C_UNK grOldPupupu_80210BE0();
/* 210BE4 */ M2C_UNK grOldPupupu_80210BE4();
/* 210C2C */ M2C_UNK grOldPupupu_80210C2C();
/* 210C34 */ M2C_UNK grOldPupupu_80210C34();
/* 210C78 */ M2C_UNK grOldPupupu_80210C78();
/* 210C7C */ M2C_UNK grOldPupupu_80210C7C();
/* 210D08 */ M2C_UNK grOldPupupu_80210D08();
/* 210D10 */ M2C_UNK grOldPupupu_80210D10();
/* 21110C */ M2C_UNK grOldPupupu_8021110C();
/* 211110 */ M2C_UNK grOldPupupu_80211110();
/* 21118C */ M2C_UNK grOldPupupu_8021118C();
/* 211194 */ M2C_UNK grOldPupupu_80211194();
/* 211198 */ M2C_UNK grOldPupupu_80211198();
/* 21119C */ M2C_UNK grOldPupupu_8021119C();
/* 211284 */ M2C_UNK grOldPupupu_80211284();
/* 21128C */ M2C_UNK grOldPupupu_8021128C();
/* 2112F4 */ M2C_UNK fn_802112F4();
/* 2113E0 */ M2C_UNK grOldPupupu_802113E0();
/* 211C0C */ M2C_UNK grOldPupupu_80211C0C();
/* 211C10 */ M2C_UNK grOldPupupu_80211C10();
/* 211C14 */ M2C_UNK grOldPupupu_80211C14();
/* 211C1C */ M2C_UNK grOldPupupu_80211C1C();
/* 211C9C */ M2C_UNK grOldPupupu_80211C9C();
/* 211CA0 */ M2C_UNK grOldPupupu_80211CA0();
/* 211CA8 */ M2C_UNK grOldPupupu_80211CA8();
#define GALE01_20E798
/* 20E798 */ M2C_UNK grOldYoshi_8020E798();
/* 20E79C */ M2C_UNK grOldYoshi_8020E79C();
/* 20E824 */ M2C_UNK grOldYoshi_8020E824();
/* 20E828 */ M2C_UNK grOldYoshi_8020E828();
/* 20E84C */ M2C_UNK grOldYoshi_8020E84C();
/* 20E854 */ M2C_UNK grOldYoshi_8020E854();
/* 20E93C */ M2C_UNK grOldYoshi_8020E93C();
/* 20E968 */ M2C_UNK grOldYoshi_8020E968();
/* 20E970 */ M2C_UNK grOldYoshi_8020E970();
/* 20E974 */ M2C_UNK grOldYoshi_8020E974();
/* 20E978 */ M2C_UNK grOldYoshi_8020E978();
/* 20E9E0 */ M2C_UNK grOldYoshi_8020E9E0();
/* 20E9E8 */ M2C_UNK grOldYoshi_8020E9E8();
/* 20E9EC */ M2C_UNK grOldYoshi_8020E9EC();
/* 20E9F0 */ M2C_UNK grOldYoshi_8020E9F0();
/* 20EA5C */ M2C_UNK grOldYoshi_8020EA5C();
/* 20EA64 */ M2C_UNK grOldYoshi_8020EA64();
/* 20EA88 */ M2C_UNK grOldYoshi_8020EA88();
/* 20EA8C */ M2C_UNK grOldYoshi_8020EA8C();
/* 20EAEC */ M2C_UNK grOldYoshi_8020EAEC();
/* 20EAF4 */ M2C_UNK grOldYoshi_8020EAF4();
/* 20EAF8 */ M2C_UNK grOldYoshi_8020EAF8();
/* 20EAFC */ M2C_UNK grOldYoshi_8020EAFC();
/* 20EC08 */ M2C_UNK grOldYoshi_8020EC08();
/* 20EC10 */ M2C_UNK grOldYoshi_8020EC10();
/* 20EFC8 */ M2C_UNK grOldYoshi_8020EFC8();
/* 20EFCC */ M2C_UNK grOldYoshi_8020EFCC();
/* 20F080 */ M2C_UNK grOldYoshi_8020F080();
/* 20F088 */ M2C_UNK grOldYoshi_8020F088();
/* 20F2A4 */ M2C_UNK grOldYoshi_8020F2A4();
/* 20F2A8 */ M2C_UNK fn_8020F2A8();
/* 20F31C */ M2C_UNK grOldYoshi_8020F31C();
/* 20F404 */ M2C_UNK grOldYoshi_8020F404();
/* 20F40C */ M2C_UNK grOldYoshi_8020F40C();
#define GALE01_1E3734
/* 1E3734 */ M2C_UNK grOnett_801E3734();
/* 1E3738 */ M2C_UNK grOnett_801E3738();
/* 1E37C4 */ M2C_UNK grOnett_801E37C4();
/* 1E37C8 */ M2C_UNK grOnett_801E37C8();
/* 1E37EC */ M2C_UNK grOnett_801E37EC();
/* 1E37F4 */ M2C_UNK grOnett_801E37F4();
/* 1E38DC */ M2C_UNK grOnett_801E38DC();
/* 1E3920 */ M2C_UNK grOnett_801E3920();
/* 1E3928 */ M2C_UNK grOnett_801E3928();
/* 1E392C */ M2C_UNK grOnett_801E392C();
/* 1E3930 */ M2C_UNK fn_801E3930();
/* 1E3A34 */ M2C_UNK grOnett_801E3A34();
/* 1E3C58 */ M2C_UNK grOnett_801E3C58();
/* 1E3C60 */ M2C_UNK grOnett_801E3C60();
/* 1E3CE0 */ M2C_UNK grOnett_801E3CE0();
/* 1E3CE4 */ M2C_UNK grOnett_801E3CE4();
/* 1E3D98 */ M2C_UNK grOnett_801E3D98();
/* 1E3DA0 */ M2C_UNK grOnett_801E3DA0();
/* 1E40E0 */ M2C_UNK grOnett_801E40E0();
/* 1E40E4 */ M2C_UNK fn_801E40E4();
/* 1E41B0 */ M2C_UNK fn_801E41B0();
/* 1E41C8 */ M2C_UNK grOnett_801E41C8();
/* 1E43D8 */ M2C_UNK grOnett_801E43D8();
/* 1E43E0 */ M2C_UNK grOnett_801E43E0();
/* 1E502C */ M2C_UNK grOnett_801E502C();
/* 1E5030 */ M2C_UNK fn_801E5030();
/* 1E5140 */ M2C_UNK grOnett_801E5140();
/* 1E5194 */ M2C_UNK grOnett_801E5194();
/* 1E5214 */ M2C_UNK grOnett_801E5214();
/* 1E54B4 */ M2C_UNK fn_801E54B4();
/* 1E5538 */ M2C_UNK grOnett_801E5538();
/* 1E56FC */ M2C_UNK grOnett_801E56FC();
/* 1E5760 */ M2C_UNK grOnett_801E5760();
/* 1E5768 */ M2C_UNK grOnett_801E5768();
#define GALE01_1BFFA8
/* 1BFFB0 */ void Ground_801BFFB0(void);
/* 1C0378 */ void Ground_801C0378(int);
/* 1C0478 */ void Ground_801C0478(void* ptr);
/* 1C0498 */ f32 Ground_801C0498(void);
/* 1C04BC */ void Ground_801C04BC(f32);
/* 1C0508 */ s32 Ground_801C0508(void);
/* 1C052C */ void Ground_801C052C(s32*);
/* 1C0544 */ void Ground_801C0544(s32*);
/* 1C055C */ void Ground_801C055C(s32*);
/* 1C0574 */ void Ground_801C0574(s32*);
/* 1C058C */ void Ground_801C058C(s32*);
/* 1C05A4 */ void Ground_801C05A4(s32*);
/* 1C05BC */ void Ground_801C05BC(s32*);
/* 1C05D4 */ void Ground_801C05D4(s32*);
/* 1C05EC */ void Ground_801C05EC(s32*);
/* 1C0604 */ s32* Ground_801C0604(void);
/* 1C0618 */ s32* Ground_801C0618(void);
/* 1C062C */ s32* Ground_801C062C(void);
/* 1C0640 */ s32* Ground_801C0640(void);
/* 1C0654 */ s32* Ground_801C0654(void);
/* 1C0668 */ s32* Ground_801C0668(void);
/* 1C067C */ s32* Ground_801C067C(void);
/* 1C0690 */ s32* Ground_801C0690(void);
/* 1C06A4 */ s32* Ground_801C06A4(void);
/* 1C06B8 */ void Ground_801C06B8(InternalStageId);
/* 1C0754 */ void Ground_801C0754(StructPairWithStageID* pair);
/* 1C0800 */ void Ground_801C0800(StructPairWithStageID* pair);
/* 1C0F78 */ void Ground_801C0F78(StructPairWithStageID* pair);
/* 1C0FB8 */ void Ground_801C0FB8(StructPairWithStageID* pair);
/* 1C1074 */ void Ground_801C1074(StructPairWithStageID* pair, s32);
/* 1C10B8 */ void Ground_801C10B8(HSD_GObj*, HSD_GObjEvent);
/* 1C1154 */ void Ground_801C1154(void);
/* 1C1158 */ void Ground_801C1158(void);
/* 1C11AC */ void Ground_801C11AC(HSD_GObj* gobj);
/* 1C13D0 */ HSD_JObj* Ground_801C13D0(s32, s32 depth);
/* 1C14D0 */ HSD_GObj* Ground_801C14D0(int);
/* 1C1A20 */ HSD_GObj* Ground_801C1A20(HSD_Joint*, s32);
/* 1C1D6C */ void Ground_801C1D6C(u32);
/* 1C1D84 */ u32 Ground_801C1D84(void);
/* 1C1D98 */ u32 Ground_801C1D98(void);
/* 1C1DAC */ u32 Ground_801C1DAC(void);
/* 1C1DC0 */ u32 Ground_801C1DC0(void);
/* 1C1DD4 */ s16 Ground_801C1DD4(void);
/* 1C1DE4 */ void Ground_801C1DE4(s32*, s32*);
/* 1C1E00 */ void Ground_801C1E00(s32);
/* 1C1E18 */ s32 Ground_801C1E18(void);
/* 1C1E84 */ void* Ground_801C1E84(void);
/* 1C1FFC */ void Ground_801C1FFC(void);
/* 1C205C */ void Ground_801C205C(GXColor* color);
/* 1C2090 */ bool Ground_801C2090(GXColor* color);
/* 1C20D0 */ f32 Ground_801C20D0(void);
/* 1C2374 */ void Ground_801C2374(HSD_LObj* lobj);
/* 1C247C */ HSD_Spline* Ground_801C247C(s32, s32);
/* 1C28AC */ bool Ground_801C28AC(s32, u32, s32*);
/* 1C2AD8 */ u8* Ground_801C2AD8(void);
/* 1C2AE8 */ f32 Ground_801C2AE8(s32);
/* 1C2BA4 */ HSD_GObj* Ground_801C2BA4(s32);
/* 1C2C8C */ bool Ground_801C2C8C(void*);
/* 1C2CF4 */ HSD_JObj* Ground_801C2CF4(s32);
/* 1C2D0C */ void Ground_801C2D0C(s32 i, HSD_JObj* jobj);
/* 1C2D24 */ bool Ground_801C2D24(enum_t, Vec3*);
/* 1C2ED0 */ bool Ground_801C2ED0(HSD_JObj*, s32);
/* 1C2FE0 */ void Ground_801C2FE0(HSD_GObj*);
/* 1C3128 */ bool Ground_801C3128(s32, void (*)(s32));
/* 1C3214 */ bool Ground_801C3214(int);
/* 1C3260 */ bool Ground_801C3260(s32);
/* 1C32AC */ void Ground_801C32AC(s32);
/* 1C32D4 */ s32 Ground_801C32D4(s32, s32);
/* 1C33C0 */ s32 Ground_801C33C0(s32, s32);
/* 1C36F4 */ void Ground_801C36F4(int map_id, HSD_JObj* jobj, M2C_UNK joint);
/* 1C3880 */ void Ground_801C3880(f32);
/* 1C3890 */ void Ground_801C3890(f32);
/* 1C38A0 */ void Ground_801C38A0(f32);
/* 1C38AC */ void Ground_801C38AC(f32);
/* 1C38BC */ void Ground_801C38BC(f32 x, f32 y);
/* 1C38D0 */ void Ground_801C38D0(f32 tilt, f32 pan, f32, f32);
/* 1C38EC */ void Ground_801C38EC(f32 depth, f32 zoom);
/* 1C3900 */ void Ground_801C3900(f32, f32, f32, f32, f32 up, f32 down,
f32 left, f32 right);
/* 1C392C */ void Ground_801C392C(f32 x, f32 y, f32 z, f32 fov, f32 vert,
f32 horz);
/* 1C3950 */ void Ground_801C3950(f32 zoom);
/* 1C3960 */ void Ground_801C3960(f32 ratio);
/* 1C3970 */ void Ground_801C3970(f32 smooth);
/* 1C3980 */ void Ground_801C3980(f32 top);
/* 1C3990 */ void Ground_801C3990(f32 bottom);
/* 1C39A0 */ void Ground_801C39A0(f32 left);
/* 1C39B0 */ void Ground_801C39B0(f32 right);
/* 1C39C0 */ void Ground_801C39C0(void);
/* 1C3BB4 */ void Ground_801C3BB4(void);
/* 1C3D44 */ s32 Ground_801C3D44(s32, f32, f32);
/* 1C3DB4 */ s32 Ground_801C3DB4(s32, f32, f32);
/* 1C3F20 */ f32 Ground_801C3F20(HSD_JObj*);
/* 1C3FA4 */ HSD_JObj* Ground_801C3FA4(HSD_GObj* gobj, int depth);
/* 1C4100 */ HSD_JObj* Ground_801C4100(HSD_JObj* jobj);
/* 1C4210 */ s32 Ground_801C4210(void);
/* 1C42AC */ void Ground_801C42AC(void);
/* 1C4338 */ void Ground_801C4338(void);
/* 1C4368 */ void Ground_801C4368(float* slope, float* intercept);
/* 1C438C */ void Ground_801C438C(f32 val);
/* 1C43A4 */ void Ground_801C43A4(M2C_UNK);
/* 1C43C4 */ bool Ground_801C43C4(void*);
/* 1C445C */ void Ground_801C445C(HSD_LObj* lobj);
/* 1C498C */ HSD_GObj* Ground_801C498C(void);
/* 1C49B4 */ M2C_UNK Ground_801C49B4(void);
/* 1C49F8 */ void* Ground_801C49F8(void);
/* 1C4A08 */ void Ground_801C4A08(HSD_GObj* gobj);
/* 1C4B50 */ void Ground_801C4B50(s32, s32, Vec3* result, f32);
/* 1C4D70 */ bool Ground_801C4D70(HSD_GObj*, Vec3*, f32);
/* 1C4DA0 */ bool Ground_801C4DA0(Vec3*, f32*);
/* 1C4DD0 */ bool Ground_801C4DD0(void);
/* 1C4E20 */ bool Ground_801C4E20(void);
/* 1C4E70 */ void Ground_801C4E70(HSD_JObj*, HSD_JObj*, HSD_JObj*, HSD_JObj*,
HSD_JObj*, HSD_JObj*);
/* 1C4FAC */ void Ground_801C4FAC(HSD_CObj* cobj);
/* 1C53EC */ void Ground_801C53EC(u32);
/* 1C5414 */ void Ground_801C5414(int, int);
/* 1C5440 */ void Ground_801C5440(Ground* gp, s32 i, u32);
/* 1C54DC */ bool Ground_801C54DC(Ground* gp, s32 i);
/* 1C5544 */ void Ground_801C5544(Ground*, s32);
/* 1C5630 */ void Ground_801C5630(Ground* gp, s32 i, f32 val);
/* 1C5694 */ void Ground_801C5694(Ground* gp, s32 i, f32 val);
/* 1C5700 */ DynamicsDesc* Ground_801C5700(int i);
/* 1C5740 */ void Ground_801C5740(s32);
/* 1C5750 */ void Ground_801C5750(void);
/* 1C5764 */ s32 Ground_801C5764(void);
/* 1C5774 */ s16 Ground_801C5774(void);
/* 1C5784 */ void Ground_801C5784(s32);
/* 1C5794 */ s32 Ground_801C5794(void);
/* 1C57A4 */ HSD_GObj* Ground_801C57A4(void);
/* 1C57C8 */ HSD_GObj* Ground_801C57C8(void);
/* 1C57F0 */ f32 Ground_801C57F0(void);
/* 1C5800 */ void Ground_801C5800(void);
/* 1C5840 */ s32 Ground_801C5840(void);
/* 1C58E0 */ Item_GObj* Ground_801C58E0(s32, s32);
/* 1C5940 */ int Ground_801C5940(void);
/* 1C5A28 */ void Ground_801C5A28(void);
/* 1C5A60 */ void Ground_801C5A60(void);
/* 1C5A84 */ void Ground_801C5A84(s32);
/* 1C5A94 */ s32 Ground_801C5A94(void);
/* 1C5AA4 */ void Ground_801C5AA4(bool);
/* 1C5ABC */ bool Ground_801C5ABC(void);
/* 1C5AD0 */ u32 Ground_801C5AD0(s32 i);
/* 1C5AEC */ void Ground_801C5AEC(Vec3* v, Vec3*, Vec3*, Vec3*);
/* 49E6C8 */ extern StageInfo stage_info;
#define GALE01_211CFC
/* 211CFC */ M2C_UNK grPura_80211CFC();
/* 211D00 */ M2C_UNK grPura_80211D00();
/* 211DD8 */ M2C_UNK grPura_80211DD8();
/* 211DDC */ M2C_UNK grPura_80211DDC();
/* 211E00 */ M2C_UNK grPura_80211E00();
/* 211E08 */ M2C_UNK grPura_80211E08();
/* 211EF0 */ M2C_UNK grPura_80211EF0();
/* 211F1C */ M2C_UNK grPura_80211F1C();
/* 211F24 */ M2C_UNK grPura_80211F24();
/* 211F28 */ M2C_UNK grPura_80211F28();
/* 211F2C */ M2C_UNK grPura_80211F2C();
/* 211F58 */ M2C_UNK grPura_80211F58();
/* 211F60 */ M2C_UNK grPura_80211F60();
/* 211F64 */ M2C_UNK grPura_80211F64();
/* 211F68 */ M2C_UNK grPura_80211F68();
/* 211FD0 */ M2C_UNK grPura_80211FD0();
/* 211FD8 */ M2C_UNK grPura_80211FD8();
/* 212020 */ M2C_UNK grPura_80212020();
/* 212024 */ M2C_UNK grPura_80212024();
/* 2120D8 */ M2C_UNK grPura_802120D8();
/* 2120E0 */ M2C_UNK grPura_802120E0();
/* 21228C */ M2C_UNK grPura_8021228C();
/* 212290 */ M2C_UNK grPura_80212290();
/* 212314 */ M2C_UNK grPura_80212314();
/* 21231C */ M2C_UNK grPura_8021231C();
/* 2125EC */ M2C_UNK grPura_802125EC();
/* 2125F0 */ M2C_UNK grPura_802125F0();
/* 212CD4 */ M2C_UNK grPura_80212CD4();
/* 212EF4 */ M2C_UNK grPura_80212EF4();
/* 212FC0 */ M2C_UNK grPura_80212FC0();
/* 213030 */ M2C_UNK grPura_80213030();
/* 2130C0 */ M2C_UNK grPura_802130C0();
/* 2130C8 */ M2C_UNK grPura_802130C8();
/* 2130D0 */ M2C_UNK fn_802130D0();
/* 213128 */ M2C_UNK grPura_80213128();
/* 213224 */ M2C_UNK grPura_80213224();
/* 213250 */ M2C_UNK grPura_80213250();
#define GALE01_2182C4
/* 2182C4 */ M2C_UNK grPushOn_802182C4();
/* 2182C8 */ M2C_UNK grPushOn_802182C8();
/* 218330 */ M2C_UNK grPushOn_80218330();
/* 218378 */ M2C_UNK grPushOn_80218378();
/* 2183DC */ M2C_UNK grPushOn_802183DC();
/* 2183E4 */ M2C_UNK grPushOn_802183E4();
/* 2184CC */ M2C_UNK grPushOn_802184CC();
/* 218590 */ M2C_UNK grPushOn_80218590();
/* 218598 */ M2C_UNK grPushOn_80218598();
/* 21859C */ M2C_UNK grPushOn_8021859C();
/* 2185A0 */ M2C_UNK grPushOn_802185A0();
/* 218670 */ M2C_UNK grPushOn_80218670();
/* 218678 */ M2C_UNK fn_80218678();
/* 2186C8 */ M2C_UNK grPushOn_802186C8();
/* 2187A4 */ M2C_UNK grPushOn_802187A4();
/* 2187A8 */ M2C_UNK grPushOn_802187A8();
/* 218880 */ M2C_UNK grPushOn_80218880();
/* 218888 */ M2C_UNK grPushOn_80218888();
/* 218ED0 */ M2C_UNK grPushOn_80218ED0();
/* 218ED4 */ M2C_UNK grPushOn_80218ED4();
/* 218FC0 */ M2C_UNK grPushOn_80218FC0();
/* 2190A0 */ M2C_UNK fn_802190A0();
/* 2190D0 */ M2C_UNK grPushOn_802190D0();
/* 219204 */ M2C_UNK grPushOn_80219204();
/* 219230 */ M2C_UNK grPushOn_80219230();
/* 2192A4 */ M2C_UNK fn_802192A4();
/* 219458 */ M2C_UNK grPushOn_80219458();
/* 219528 */ M2C_UNK grPushOn_80219528();
#define GALE01_1FF164
/* 1FF164 */ M2C_UNK grRCruise_801FF164();
/* 1FF168 */ M2C_UNK grRCruise_801FF168();
/* 1FF298 */ M2C_UNK grRCruise_801FF298();
/* 1FF29C */ M2C_UNK grRCruise_801FF29C();
/* 1FF2C0 */ M2C_UNK grRCruise_801FF2C0();
/* 1FF2C8 */ M2C_UNK grRCruise_801FF2C8();
/* 1FF3B4 */ M2C_UNK grRCruise_801FF3B4();
/* 1FF3E0 */ M2C_UNK grRCruise_801FF3E0();
/* 1FF3E8 */ M2C_UNK grRCruise_801FF3E8();
/* 1FF3EC */ M2C_UNK grRCruise_801FF3EC();
/* 1FF3F0 */ M2C_UNK grRCruise_801FF3F0();
/* 1FF434 */ M2C_UNK grRCruise_801FF434();
/* 1FF43C */ M2C_UNK grRCruise_801FF43C();
/* 1FF440 */ M2C_UNK grRCruise_801FF440();
/* 1FF444 */ M2C_UNK fn_801FF444();
/* 1FF5B4 */ M2C_UNK grRCruise_801FF5B4();
/* 1FF6CC */ M2C_UNK grRCruise_801FF6CC();
/* 1FF6D4 */ M2C_UNK grRCruise_801FF6D4();
/* 1FF738 */ M2C_UNK grRCruise_801FF738();
/* 1FF73C */ M2C_UNK grRCruise_801FF73C();
/* 1FF794 */ M2C_UNK grRCruise_801FF794();
/* 1FF79C */ M2C_UNK grRCruise_801FF79C();
/* 1FF7A0 */ M2C_UNK grRCruise_801FF7A0();
/* 1FF7A4 */ M2C_UNK grRCruise_801FF7A4();
/* 1FF8DC */ M2C_UNK grRCruise_801FF8DC();
/* 1FF8E4 */ M2C_UNK grRCruise_801FF8E4();
/* 1FF920 */ M2C_UNK grRCruise_801FF920();
/* 1FF924 */ M2C_UNK grRCruise_801FF924();
/* 1FFAD4 */ M2C_UNK grRCruise_801FFAD4();
/* 1FFADC */ M2C_UNK grRCruise_801FFADC();
/* 200070 */ M2C_UNK grRCruise_80200070();
/* 200074 */ M2C_UNK grRCruise_80200074();
/* 20014C */ M2C_UNK grRCruise_8020014C();
/* 200154 */ M2C_UNK grRCruise_80200154();
/* 20045C */ M2C_UNK grRCruise_8020045C();
/* 200460 */ M2C_UNK fn_80200460();
/* 200540 */ M2C_UNK grRCruise_80200540();
/* 200578 */ M2C_UNK fn_80200578();
/* 20071C */ M2C_UNK grRCruise_8020071C();
/* 200B48 */ M2C_UNK grRCruise_80200B48();
/* 200C04 */ M2C_UNK grRCruise_80200C04();
/* 2010A4 */ M2C_UNK fn_802010A4();
/* 201110 */ M2C_UNK grRCruise_80201110();
/* 201288 */ M2C_UNK grRCruise_80201288();
/* 201410 */ M2C_UNK grRCruise_80201410();
/* 201588 */ M2C_UNK grRCruise_80201588();
/* 201918 */ void grRCruise_80201918(Vec3*);
/* 201988 */ M2C_UNK grRCruise_80201988();
/* 201B60 */ M2C_UNK grRCruise_80201B60();
/* 201BE0 */ M2C_UNK fn_80201BE0();
/* 201C50 */ M2C_UNK grRCruise_80201C50();
/* 201C58 */ M2C_UNK grRCruise_80201C58();
#define GALE01_201C60
#define GALE01_2087B0
/* 2087B0 */ M2C_UNK grShrineRoute_802087B0();
/* 2087B8 */ M2C_UNK grShrineRoute_802087B8();
/* 2087BC */ M2C_UNK grShrineRoute_802087BC();
/* 20882C */ M2C_UNK grShrineRoute_8020882C();
/* 208850 */ M2C_UNK grShrineRoute_80208850();
/* 2088B8 */ M2C_UNK grShrineRoute_802088B8();
/* 2088C0 */ M2C_UNK grShrineRoute_802088C0();
/* 2089AC */ M2C_UNK grShrineRoute_802089AC();
/* 2089D8 */ M2C_UNK grShrineRoute_802089D8();
/* 2089E0 */ M2C_UNK grShrineRoute_802089E0();
/* 2089E4 */ M2C_UNK grShrineRoute_802089E4();
/* 2089E8 */ M2C_UNK grShrineRoute_802089E8();
/* 208A28 */ M2C_UNK grShrineRoute_80208A28();
/* 208A30 */ M2C_UNK grShrineRoute_80208A30();
/* 208A34 */ M2C_UNK grShrineRoute_80208A34();
/* 208A38 */ M2C_UNK fn_80208A38();
/* 208D14 */ M2C_UNK grShrineRoute_80208D14();
/* 208F0C */ M2C_UNK grShrineRoute_80208F0C();
/* 208F14 */ M2C_UNK fn_80208F14();
/* 208F70 */ M2C_UNK grShrineRoute_80208F70();
/* 209AEC */ M2C_UNK grShrineRoute_80209AEC();
/* 209AF0 */ M2C_UNK grShrineRoute_80209AF0();
/* 209BE4 */ M2C_UNK grShrineRoute_80209BE4();
/* 209BEC */ M2C_UNK grShrineRoute_80209BEC();
/* 20A100 */ M2C_UNK grShrineRoute_8020A100();
/* 20A104 */ M2C_UNK grShrineRoute_8020A104();
/* 20A214 */ M2C_UNK grShrineRoute_8020A214();
/* 20A21C */ M2C_UNK grShrineRoute_8020A21C();
/* 20A864 */ M2C_UNK grShrineRoute_8020A864();
/* 20A868 */ M2C_UNK grShrineRoute_8020A868();
/* 20A894 */ M2C_UNK grShrineRoute_8020A894();
/* 20A89C */ M2C_UNK grShrineRoute_8020A89C();
/* 20A8A0 */ M2C_UNK grShrineRoute_8020A8A0();
/* 20A8A4 */ M2C_UNK grShrineRoute_8020A8A4();
/* 20AA40 */ M2C_UNK grShrineRoute_8020AA40();
/* 20AB58 */ M2C_UNK grShrineRoute_8020AB58();
/* 20AC44 */ M2C_UNK grShrineRoute_8020AC44();
/* 20AD24 */ M2C_UNK fn_8020AD24();
/* 20AD58 */ M2C_UNK fn_8020AD58();
/* 20AE08 */ M2C_UNK fn_8020AE08();
/* 20AF38 */ M2C_UNK grShrineRoute_8020AF38();
/* 20B020 */ M2C_UNK grShrineRoute_8020B020();
/* 20B0AC */ M2C_UNK grShrineRoute_8020B0AC();
/* 20B104 */ M2C_UNK grShrineRoute_8020B104();
/* 20B10C */ M2C_UNK grShrineRoute_8020B10C();
#define GALE01_1D1018
/* 1D1018 */ M2C_UNK grStadium_801D1018();
/* 1D101C */ M2C_UNK grStadium_801D101C();
/* 1D10C8 */ M2C_UNK grStadium_801D10C8();
/* 1D10CC */ M2C_UNK grStadium_801D10CC();
/* 1D10F0 */ M2C_UNK grStadium_801D10F0();
/* 1D10F8 */ M2C_UNK grStadium_801D10F8();
/* 1D11E4 */ M2C_UNK fn_801D11E4();
/* 1D1290 */ M2C_UNK grStadium_801D1290();
/* 1D1388 */ M2C_UNK grStadium_801D1388();
/* 1D1390 */ M2C_UNK grStadium_801D1390();
/* 1D13C4 */ M2C_UNK grStadium_801D13C4();
/* 1D13C8 */ M2C_UNK fn_801D13C8();
/* 1D13E0 */ M2C_UNK grStadium_801D13E0();
/* 1D1518 */ M2C_UNK grStadium_801D1518();
/* 1D1520 */ M2C_UNK grStadium_801D1520();
/* 1D156C */ M2C_UNK grStadium_801D156C();
/* 1D1570 */ M2C_UNK grStadium_801D1570();
/* 1D15FC */ M2C_UNK grStadium_801D15FC();
/* 1D1604 */ M2C_UNK grStadium_801D1604();
/* 1D1624 */ M2C_UNK grStadium_801D1624();
/* 1D1648 */ M2C_UNK grStadium_801D1648();
/* 1D16D4 */ M2C_UNK grStadium_801D16D4();
/* 1D16DC */ M2C_UNK grStadium_801D16DC();
/* 1D16FC */ M2C_UNK grStadium_801D16FC();
/* 1D1720 */ M2C_UNK grStadium_801D1720();
/* 1D17E0 */ M2C_UNK grStadium_801D17E0();
/* 1D17E8 */ M2C_UNK grStadium_801D17E8();
/* 1D1808 */ M2C_UNK grStadium_801D1808();
/* 1D1840 */ M2C_UNK grStadium_801D1840();
/* 1D19D0 */ M2C_UNK grStadium_801D19D0();
/* 1D19D8 */ M2C_UNK grStadium_801D19D8();
/* 1D19F8 */ M2C_UNK grStadium_801D19F8();
/* 1D1A38 */ M2C_UNK grStadium_801D1A38();
/* 1D1B40 */ M2C_UNK grStadium_801D1B40();
/* 1D1B48 */ M2C_UNK grStadium_801D1B48();
/* 1D1D84 */ M2C_UNK grStadium_801D1D84();
/* 1D1DE4 */ M2C_UNK grStadium_801D1DE4();
/* 1D1E10 */ M2C_UNK grStadium_801D1E10();
/* 1D1E18 */ M2C_UNK grStadium_801D1E18();
/* 1D1E1C */ M2C_UNK grStadium_801D1E1C();
/* 1D1E20 */ M2C_UNK grStadium_801D1E20();
/* 1D1EF8 */ M2C_UNK grStadium_801D1EF8();
/* 1D21E4 */ M2C_UNK grStadium_801D21E4();
/* 1D2278 */ M2C_UNK grStadium_801D2278();
/* 1D2344 */ M2C_UNK grStadium_801D2344();
/* 1D2528 */ M2C_UNK grStadium_801D2528();
/* 1D2A60 */ M2C_UNK grStadium_801D2A60();
/* 1D2BEC */ M2C_UNK grStadium_801D2BEC();
/* 1D2D78 */ M2C_UNK grStadium_801D2D78();
/* 1D2E24 */ M2C_UNK grStadium_801D2E24();
/* 1D2ED0 */ M2C_UNK fn_801D2ED0();
/* 1D2FD0 */ M2C_UNK fn_801D2FD0();
/* 1D3084 */ M2C_UNK fn_801D3084();
/* 1D3138 */ M2C_UNK grStadium_801D3138();
/* 1D32D0 */ M2C_UNK grStadium_801D32D0();
/* 1D3460 */ M2C_UNK grStadium_801D3460();
/* 1D384C */ M2C_UNK grStadium_801D384C();
/* 1D39A0 */ void grStadium_801D39A0(HSD_GObj*);
/* 1D3A0C */ M2C_UNK grStadium_801D3A0C();
/* 1D3B4C */ M2C_UNK grStadium_801D3B4C();
/* 1D3BBC */ M2C_UNK grStadium_801D3BBC();
/* 1D3F40 */ M2C_UNK grStadium_801D3F40();
/* 1D4040 */ M2C_UNK grStadium_801D4040();
/* 1D4084 */ M2C_UNK grStadium_801D4084();
/* 1D40C8 */ M2C_UNK grStadium_801D40C8();
/* 1D410C */ M2C_UNK grStadium_801D410C();
/* 1D4150 */ M2C_UNK grStadium_801D4150();
/* 1D4194 */ M2C_UNK grStadium_801D4194();
/* 1D4220 */ M2C_UNK fn_801D4220();
/* 1D42B8 */ M2C_UNK grStadium_801D42B8();
/* 1D4354 */ M2C_UNK grStadium_801D4354();
/* 1D435C */ M2C_UNK grStadium_801D435C();
/* 1D4548 */ M2C_UNK grStadium_801D4548();
/* 1D4FF8 */ bool grStadium_801D4FF8(int pl_slot);
/* 1D5074 */ M2C_UNK fn_801D5074();
/* 1D50B8 */ M2C_UNK grStadium_801D50B8();
/* 1D50C0 */ M2C_UNK grStadium_801D50C0();
/* 1D511C */ void grStadium_801D511C(void);
#define GALE01_1E302C
/* 1E3030 */ void grStory_801E3030(void);
/* 1E30A8 */ void grStory_801E30A8(void);
/* 1E30AC */ void grStory_801E30AC(void);
/* 1E30D0 */ bool grStory_801E30D0(void);
/* 1E30D8 */ HSD_GObj* grStory_801E30D8(int);
/* 1E31C0 */ void grStory_801E31C0(HSD_GObj*);
/* 1E3224 */ bool grStory_801E3224(HSD_GObj*);
/* 1E322C */ void grStory_801E322C(HSD_GObj*);
/* 1E3230 */ void grStory_801E3230(HSD_GObj*);
/* 1E3234 */ void grStory_801E3234(HSD_GObj*);
/* 1E332C */ bool grStory_801E332C(HSD_GObj*);
/* 1E3334 */ void grStory_801E3334(HSD_GObj*);
/* 1E336C */ void grStory_801E336C(HSD_GObj*);
/* 1E3370 */ void grStory_801E3370(HSD_GObj*);
/* 1E33D8 */ bool grStory_801E33D8(HSD_GObj*);
/* 1E33E0 */ void grStory_801E33E0(HSD_GObj*);
/* 1E3414 */ void grStory_801E3414(HSD_GObj*);
/* 1E3418 */ void grStory_801E3418(HSD_GObj*);
/* 1E366C */ void grStory_801E366C(HSD_GObj*);
/* 1E36D8 */ bool grStory_801E36D8(Vec3*, int, HSD_JObj*);
#define GALE01_21FC60
#define _grtclink_h_
void grTCLink_8021FF44(bool);
void grTCLink_8021FF48(void);
void grTCLink_8021FFB8(void);
void grTCLink_8021FFBC(void);
bool grTCLink_8021FFE0(void);
HSD_GObj* grTCLink_8021FFE8(int);
void grTCLink_802200D0(HSD_GObj*);
bool grTCLink_802200FC(HSD_GObj*);
void grTCLink_80220104(HSD_GObj*);
void grTCLink_80220108(HSD_GObj*);
void grTCLink_8022010C(HSD_GObj*);
bool grTCLink_8022015C(HSD_GObj*);
void grTCLink_80220164(HSD_GObj*);
void grTCLink_80220198(HSD_GObj*);
void grTCLink_8022019C(HSD_GObj*);
bool grTCLink_802201EC(HSD_GObj*);
void grTCLink_802201F4(HSD_GObj*);
void grTCLink_80220214(HSD_GObj*);
DynamicsDesc* grTCLink_80220218(int unused);
bool grTCLink_80220220(Vec3*, int, HSD_JObj*);
#define GALE01_220228
#define GALE01_221EF4
#define GALE01_2243F4
#define GALE01_206E2C
/* 206E2C */ M2C_UNK grTest_80206E2C();
/* 206E30 */ M2C_UNK grTest_80206E30();
/* 207014 */ M2C_UNK grTest_80207014();
/* 207018 */ M2C_UNK grTest_80207018();
/* 20703C */ M2C_UNK grTest_8020703C();
/* 207044 */ M2C_UNK grTest_80207044();
/* 207130 */ M2C_UNK grTest_80207130();
/* 20715C */ M2C_UNK grTest_8020715C();
/* 207164 */ M2C_UNK grTest_80207164();
/* 207168 */ M2C_UNK grTest_80207168();
/* 20716C */ M2C_UNK grTest_8020716C();
/* 2071BC */ M2C_UNK grTest_802071BC();
/* 2071C4 */ M2C_UNK grTest_802071C4();
/* 2073AC */ M2C_UNK grTest_802073AC();
/* 2073B0 */ M2C_UNK fn_802073B0();
/* 2073D0 */ M2C_UNK grTest_802073D0();
/* 2073FC */ M2C_UNK grTest_802073FC();
/* 207404 */ M2C_UNK grTest_80207404();
/* 207408 */ M2C_UNK grTest_80207408();
/* 20740C */ M2C_UNK grTest_8020740C();
/* 207414 */ M2C_UNK grTest_80207414();
#define GALE01_2207F0
/* 2207F0 */ void grTFalco_802207F0(int);
/* 2207F4 */ void grTFalco_802207F4(void);
/* 22086C */ void grTFalco_8022086C(void);
/* 220870 */ void grTFalco_80220870(void);
/* 220894 */ bool grTFalco_80220894(void);
/* 22089C */ HSD_GObj* grTFalco_8022089C(int);
/* 220984 */ void grTFalco_80220984(HSD_GObj*);
/* 2209B0 */ bool grTFalco_802209B0(HSD_GObj*);
/* 2209B8 */ void grTFalco_802209B8(HSD_GObj*);
/* 2209BC */ void grTFalco_802209BC(HSD_GObj*);
/* 2209C0 */ void grTFalco_802209C0(HSD_GObj*);
/* 220A10 */ bool grTFalco_80220A10(HSD_GObj*);
/* 220A18 */ void grTFalco_80220A18(HSD_GObj*);
/* 220A4C */ void grTFalco_80220A4C(HSD_GObj*);
/* 220A50 */ void grTFalco_80220A50(HSD_GObj*);
/* 220AA0 */ bool grTFalco_80220AA0(HSD_GObj*);
/* 220AA8 */ void grTFalco_80220AA8(HSD_GObj*);
/* 220AC8 */ void grTFalco_80220AC8(HSD_GObj*);
/* 220ACC */ DynamicsDesc* grTFalco_80220ACC(enum_t);
/* 220B78 */ bool grTFalco_80220B78(Vec3*, int, HSD_JObj*);
#define GALE01_220B80
#define _grtgamewatch_h_
void grTGameWatch_80224110(bool);
void grTGameWatch_80224114(void);
void grTGameWatch_80224184(void);
void grTGameWatch_80224188(void);
bool grTGameWatch_802241AC(void);
HSD_GObj* grTGameWatch_802241B4(int);
void grTGameWatch_8022429C(HSD_GObj*);
bool grTGameWatch_802242C8(HSD_GObj*);
void grTGameWatch_802242D0(HSD_GObj*);
void grTGameWatch_802242D4(HSD_GObj*);
void grTGameWatch_802242D8(HSD_GObj*);
bool grTGameWatch_80224328(HSD_GObj*);
void grTGameWatch_80224330(HSD_GObj*);
void grTGameWatch_80224364(HSD_GObj*);
void grTGameWatch_80224368(HSD_GObj*);
bool grTGameWatch_802243B8(HSD_GObj*);
void grTGameWatch_802243C0(HSD_GObj*);
void grTGameWatch_802243E0(HSD_GObj*);
DynamicsDesc* grTGameWatch_802243E4(int);
bool grTGameWatch_802243EC(Vec3*, int, HSD_JObj*);
#define _grtganon_h_
void grTGanon_802246D8(bool);
void grTGanon_802246DC(void);
void grTGanon_80224754(void);
void grTGanon_80224758(void);
bool grTGanon_8022477C(void);
HSD_GObj* grTGanon_80224784(int);
void grTGanon_8022486C(HSD_GObj*);
bool grTGanon_80224898(HSD_GObj*);
void grTGanon_802248A0(HSD_GObj*);
void grTGanon_802248A4(HSD_GObj*);
void grTGanon_802248A8(HSD_GObj*);
void grTGanon_802248A8(HSD_GObj*);
bool grTGanon_802248F8(HSD_GObj*);
void grTGanon_80224900(HSD_GObj*);
void grTGanon_80224934(HSD_GObj*);
void grTGanon_80224938(HSD_GObj*);
bool grTGanon_80224988(HSD_GObj*);
void grTGanon_80224990(HSD_GObj*);
void grTGanon_802249B0(HSD_GObj*);
DynamicsDesc* grTGanon_802249B4(int);
bool grTGanon_80224A4C(Vec3*, int, HSD_JObj*);
#define GALE01_220F10
/* 1C8DE0 */ void grMaterial_801C8DE0(s32, f32, f32, f32, f32, f32, f32, f32);
/* 220F10 */ void grTIceClimber_80220F10(bool);
/* 220F14 */ void grTIceClimber_80220F14(void);
/* 220F84 */ void grTIceClimber_80220F84(void);
/* 220F88 */ void grTIceClimber_80220F88(void);
/* 220FAC */ bool grTIceClimber_80220FAC(void);
/* 220FB4 */ HSD_GObj* grTIceClimber_80220FB4(int);
/* 22109C */ void grTIceClimber_8022109C(HSD_GObj*);
/* 2210C8 */ bool grTIceClimber_802210C8(HSD_GObj*);
/* 2210D0 */ void grTIceClimber_802210D0(HSD_GObj*);
/* 2210D4 */ void grTIceClimber_802210D4(HSD_GObj*);
/* 2210D8 */ void grTIceClimber_802210D8(HSD_GObj*);
/* 22114C */ bool grTIceClimber_8022114C(HSD_GObj*);
/* 221154 */ void grTIceClimber_80221154(HSD_GObj*);
/* 221188 */ void grTIceClimber_80221188(HSD_GObj*);
/* 22118C */ void grTIceClimber_8022118C(HSD_GObj*);
/* 2211DC */ bool grTIceClimber_802211DC(HSD_GObj*);
/* 2211E4 */ void grTIceClimber_802211E4(HSD_GObj*);
/* 221204 */ void grTIceClimber_80221204(HSD_GObj*);
/* 221208 */ void grTIceClimber_80221208(HSD_GObj*);
/* 221288 */ void grTIceClimber_80221288(HSD_GObj*);
/* 221354 */ DynamicsDesc* grTIceClimber_80221354(enum_t);
/* 22135C */ bool grTIceClimber_8022135C(Vec3*, int, HSD_JObj*);
/* 3E8B5C */ extern s16 grTIc_803E8B5C[];
#define GALE01_221364
#define GALE01_221648
#define GALE01_22192C
#define GALE01_221C10
/* 221C10 */ void grTLuigi_80221C10(int);
/* 221C14 */ void grTLuigi_80221C14(void);
/* 221C84 */ void grTLuigi_80221C84(void);
/* 221C88 */ void grTLuigi_80221C88(void);
/* 221CAC */ bool grTLuigi_80221CAC(void);
/* 221CB4 */ HSD_GObj* grTLuigi_80221CB4(int);
/* 221D9C */ void grTLuigi_80221D9C(HSD_GObj*);
/* 221DC8 */ bool grTLuigi_80221DC8(HSD_GObj*);
/* 221DD0 */ void grTLuigi_80221DD0(HSD_GObj*);
/* 221DD4 */ void grTLuigi_80221DD4(HSD_GObj*);
/* 221DD8 */ void grTLuigi_80221DD8(HSD_GObj*);
/* 221E28 */ bool grTLuigi_80221E28(HSD_GObj*);
/* 221E30 */ void grTLuigi_80221E30(HSD_GObj*);
/* 221E64 */ void grTLuigi_80221E64(HSD_GObj*);
/* 221E68 */ void grTLuigi_80221E68(HSD_GObj*);
/* 221EB8 */ bool grTLuigi_80221EB8(HSD_GObj*);
/* 221EC0 */ void grTLuigi_80221EC0(HSD_GObj*);
/* 221EE0 */ void grTLuigi_80221EE0(HSD_GObj*);
/* 221EE4 */ DynamicsDesc* grTLuigi_80221EE4(enum_t);
/* 221EEC */ bool grTLuigi_80221EEC(Vec3*, int, HSD_JObj*);
#define GALE01_21F840
#define GALE01_2221D8
/* 3E8FCC */ extern StageData grTMewtwo_803E8FCC;
#define GALE01_2225D0
#define GALE01_2228B4
/* 3E914C */ extern StageData grTPe_803E914C;
#define GALE01_222B98
#define _grtpikachu_h_
void grTPikachu_80222E7C(bool);
void grTPikachu_80222E80(void);
void grTPikachu_80222EF0(void);
void grTPikachu_80222EF4(void);
bool grTPikachu_80222F18(void);
HSD_GObj* grTPikachu_80222F20(int);
void grTPikachu_80223008(HSD_GObj*);
bool grTPikachu_80223034(HSD_GObj*);
void grTPikachu_8022303C(HSD_GObj*);
void grTPikachu_80223040(HSD_GObj*);
void grTPikachu_80223044(HSD_GObj*);
bool grTPikachu_80223094(HSD_GObj*);
void grTPikachu_8022309C(HSD_GObj*);
void grTPikachu_802230D0(HSD_GObj*);
void grTPikachu_802230D4(HSD_GObj*);
bool grTPikachu_80223124(HSD_GObj*);
void grTPikachu_8022312C(HSD_GObj*);
void grTPikachu_8022314C(HSD_GObj*);
DynamicsDesc* grTPikachu_80223150(int);
bool grTPikachu_80223158(Vec3*, int, HSD_JObj*);
#define _grtpurin_h_
void grTPurin_80223160(bool);
void grTPurin_80223164(void);
void grTPurin_802231DC(void);
void grTPurin_802231E0(void);
bool grTPurin_80223204(void);
HSD_GObj* grTPurin_8022320C(int);
void grTPurin_802232F4(HSD_GObj*);
bool grTPurin_80223320(HSD_GObj*);
void grTPurin_80223328(HSD_GObj*);
void grTPurin_8022332C(HSD_GObj*);
void grTPurin_80223330(HSD_GObj*);
bool grTPurin_80223380(HSD_GObj*);
void grTPurin_80223388(HSD_GObj*);
void grTPurin_80223478(HSD_GObj*);
void grTPurin_8022347C(HSD_GObj*);
bool grTPurin_802234CC(HSD_GObj*);
void grTPurin_802234D4(HSD_GObj*);
void grTPurin_802234F4(HSD_GObj*);
DynamicsDesc* grTPurin_802234F8(int);
bool grTPurin_80223578(Vec3*, int, HSD_JObj*);
#define GALE01_223580
#define GALE01_223864
#define GALE01_223B48
#define GALE01_223E2C
#define GALE01_20362C
/* 20362C */ M2C_UNK grVenom_8020362C();
/* 203B14 */ M2C_UNK grVenom_80203B14();
/* 203B18 */ M2C_UNK grVenom_80203B18();
/* 203DD0 */ M2C_UNK grVenom_80203DD0();
/* 203E80 */ M2C_UNK grVenom_80203E80();
/* 203EA4 */ M2C_UNK grVenom_80203EA4();
/* 203EAC */ M2C_UNK grVenom_80203EAC();
/* 203F98 */ M2C_UNK grVenom_80203F98();
/* 203FC4 */ M2C_UNK grVenom_80203FC4();
/* 203FCC */ M2C_UNK grVenom_80203FCC();
/* 203FD0 */ M2C_UNK grVenom_80203FD0();
/* 203FD4 */ M2C_UNK grVenom_80203FD4();
/* 2040A4 */ M2C_UNK grVenom_802040A4();
/* 2040AC */ M2C_UNK grVenom_802040AC();
/* 2040B0 */ M2C_UNK grVenom_802040B0();
/* 2040B4 */ M2C_UNK fn_802040B4();
/* 2040F0 */ M2C_UNK grVenom_802040F0();
/* 20427C */ M2C_UNK grVenom_8020427C();
/* 204284 */ M2C_UNK grVenom_80204284();
/* 204424 */ M2C_UNK grVenom_80204424();
/* 204428 */ M2C_UNK grVenom_80204428();
/* 204544 */ M2C_UNK grVenom_80204544();
/* 20454C */ M2C_UNK grVenom_8020454C();
/* 204B84 */ M2C_UNK grVenom_80204B84();
/* 204B88 */ M2C_UNK grVenom_80204B88();
/* 204CE0 */ M2C_UNK grVenom_80204CE0();
/* 204CE4 */ M2C_UNK grVenom_80204CE4();
/* 204CEC */ M2C_UNK grVenom_80204CEC();
/* 204DB0 */ M2C_UNK grVenom_80204DB0();
/* 204DD4 */ M2C_UNK grVenom_80204DD4();
/* 204EF4 */ M2C_UNK grVenom_80204EF4();
/* 204EFC */ M2C_UNK grVenom_80204EFC();
/* 204F1C */ M2C_UNK grVenom_80204F1C();
/* 204F20 */ M2C_UNK grVenom_80204F20();
/* 2052D8 */ M2C_UNK grVenom_802052D8();
/* 2052E0 */ M2C_UNK grVenom_802052E0();
/* 2053B0 */ M2C_UNK grVenom_802053B0();
/* 2056AC */ M2C_UNK grVenom_802056AC();
/* 2056B0 */ M2C_UNK grVenom_802056B0();
/* 205750 */ M2C_UNK grVenom_80205750();
/* 205758 */ M2C_UNK grVenom_80205758();
/* 205AD0 */ M2C_UNK grVenom_80205AD0();
/* 205AD4 */ M2C_UNK grVenom_80205AD4();
/* 205DF0 */ M2C_UNK grVenom_80205DF0();
/* 205DF8 */ M2C_UNK grVenom_80205DF8();
/* 205E84 */ M2C_UNK grVenom_80205E84();
/* 205F30 */ M2C_UNK grVenom_80205F30();
/* 206870 */ M2C_UNK grVenom_80206870();
/* 206874 */ M2C_UNK grVenom_80206874();
/* 206B68 */ M2C_UNK grVenom_80206B68();
/* 206B70 */ M2C_UNK grVenom_80206B70();
/* 206B90 */ M2C_UNK grVenom_80206B90();
/* 206B94 */ M2C_UNK grVenom_80206B94();
/* 206BBC */ M2C_UNK grVenom_80206BBC();
/* 206BC4 */ M2C_UNK grVenom_80206BC4();
/* 206BEC */ M2C_UNK grVenom_80206BEC();
/* 206BF0 */ M2C_UNK grVenom_80206BF0();
/* 206CB0 */ M2C_UNK grVenom_80206CB0();
/* 206D10 */ bool grVenom_80206D10(enum_t);
/* 206D74 */ M2C_UNK grVenom_80206D74();
/* 206D7C */ M2C_UNK grVenom_80206D7C();
#define GALE01_201FA0
/* 201FA0 */ M2C_UNK grYorster_80201FA0();
/* 201FA4 */ M2C_UNK grYorster_80201FA4();
/* 20200C */ M2C_UNK grYorster_8020200C();
/* 202010 */ M2C_UNK grYorster_80202010();
/* 202034 */ M2C_UNK grYorster_80202034();
/* 20203C */ M2C_UNK grYorster_8020203C();
/* 202124 */ M2C_UNK grYorster_80202124();
/* 202150 */ M2C_UNK grYorster_80202150();
/* 202158 */ M2C_UNK grYorster_80202158();
/* 20215C */ M2C_UNK grYorster_8020215C();
/* 202160 */ M2C_UNK fn_80202160();
/* 2021AC */ M2C_UNK grYorster_802021AC();
/* 20224C */ M2C_UNK grYorster_8020224C();
/* 202254 */ M2C_UNK grYorster_80202254();
/* 2022A0 */ M2C_UNK grYorster_802022A0();
/* 2022A4 */ M2C_UNK grYorster_802022A4();
/* 202428 */ M2C_UNK fn_80202428();
/* 2024F0 */ M2C_UNK fn_802024F0();
/* 20266C */ M2C_UNK grYorster_8020266C();
/* 202B5C */ M2C_UNK grYorster_80202B5C();
/* 202B64 */ M2C_UNK grYorster_80202B64();
#define GALE01_1CA394
/* 1CAC14 */ void grZakoGenerator_801CAC14(void);
/* 1CACB8 */ void grZakoGenerator_801CACB8(Ground_GObj* gobj);
/* 1CAE04 */ void grZakoGenerator_801CAE04(bool);
#define GALE01_1D84A0
/* 1D84A0 */ M2C_UNK grZebes_801D84A0();
/* 1D84A4 */ M2C_UNK grZebes_801D84A4();
/* 1D8528 */ M2C_UNK grZebes_801D8528();
/* 1D852C */ M2C_UNK grZebes_801D852C();
/* 1D8550 */ M2C_UNK grZebes_801D8550();
/* 1D8558 */ M2C_UNK grZebes_801D8558();
/* 1D8644 */ M2C_UNK grZebes_801D8644();
/* 1D8814 */ M2C_UNK grZebes_801D8814();
/* 1D881C */ M2C_UNK grZebes_801D881C();
/* 1D90FC */ M2C_UNK grZebes_801D90FC();
/* 1D9100 */ M2C_UNK grZebes_801D9100();
/* 1D9254 */ M2C_UNK grZebes_801D9254();
/* 1D925C */ M2C_UNK grZebes_801D925C();
/* 1D93D8 */ M2C_UNK grZebes_801D93D8();
/* 1D93DC */ M2C_UNK grZebes_801D93DC();
/* 1D9408 */ M2C_UNK grZebes_801D9408();
/* 1D9410 */ M2C_UNK grZebes_801D9410();
/* 1D94EC */ M2C_UNK grZebes_801D94EC();
/* 1D94F0 */ M2C_UNK fn_801D94F0();
/* 1D9508 */ M2C_UNK grZebes_801D9508();
/* 1D95B0 */ M2C_UNK grZebes_801D95B0();
/* 1D95B8 */ M2C_UNK grZebes_801D95B8();
/* 1D9754 */ M2C_UNK grZebes_801D9754();
/* 1D9758 */ M2C_UNK fn_801D9758();
/* 1D9798 */ M2C_UNK grZebes_801D9798();
/* 1D99D8 */ M2C_UNK grZebes_801D99D8();
/* 1D99E0 */ M2C_UNK grZebes_801D99E0();
/* 1D9F2C */ M2C_UNK grZebes_801D9F2C();
/* 1D9F30 */ M2C_UNK grZebes_801D9F30();
/* 1D9F7C */ M2C_UNK grZebes_801D9F7C();
/* 1D9F84 */ M2C_UNK grZebes_801D9F84();
/* 1DA0C0 */ M2C_UNK grZebes_801DA0C0();
/* 1DA0C4 */ M2C_UNK grZebes_801DA0C4();
/* 1DA254 */ M2C_UNK grZebes_801DA254();
/* 1DA3E8 */ M2C_UNK grZebes_801DA3E8();
/* 1DA3F4 */ void grZebes_801DA3F4(M2C_UNK);
/* 1DA4FC */ M2C_UNK grZebes_801DA4FC();
/* 1DA528 */ M2C_UNK grZebes_801DA528();
/* 1DA9D8 */ M2C_UNK fn_801DA9D8();
/* 1DA9F0 */ M2C_UNK fn_801DA9F0();
/* 1DAA08 */ M2C_UNK grZebes_801DAA08();
/* 1DAC90 */ M2C_UNK fn_801DAC90();
/* 1DAE70 */ M2C_UNK grZebes_801DAE70();
/* 1DB088 */ M2C_UNK grZebes_801DB088();
/* 1DB3CC */ M2C_UNK grZebes_801DB3CC();
/* 1DBB60 */ M2C_UNK grZebes_801DBB60();
/* 1DC260 */ M2C_UNK grZebes_801DC260();
/* 1DC408 */ M2C_UNK grZebes_801DC408();
/* 1DC744 */ M2C_UNK grZebes_801DC744();
/* 1DC9DC */ M2C_UNK grZebes_801DC9DC();
/* 1DCB64 */ M2C_UNK fn_801DCB64();
/* 1DCBB0 */ M2C_UNK fn_801DCBB0();
/* 1DCBFC */ M2C_UNK fn_801DCBFC();
/* 1DCCB8 */ M2C_UNK grZebes_801DCCB8();
/* 1DCCC0 */ M2C_UNK grZebes_801DCCC0();
/* 1DCCC8 */ M2C_UNK grZebes_801DCCC8();
#define GALE01_20B160
/* 20B160 */ M2C_UNK grZebesRoute_8020B160();
/* 20B164 */ M2C_UNK grZebesRoute_8020B164();
/* 20B1D4 */ M2C_UNK grZebesRoute_8020B1D4();
/* 20B1F4 */ M2C_UNK grZebesRoute_8020B1F4();
/* 20B258 */ M2C_UNK grZebesRoute_8020B258();
/* 20B260 */ M2C_UNK grZebesRoute_8020B260();
/* 20B348 */ M2C_UNK grZebesRoute_8020B348();
/* 20B374 */ M2C_UNK grZebesRoute_8020B374();
/* 20B37C */ M2C_UNK grZebesRoute_8020B37C();
/* 20B380 */ M2C_UNK grZebesRoute_8020B380();
/* 20B384 */ M2C_UNK grZebesRoute_8020B384();
/* 20B3B0 */ M2C_UNK grZebesRoute_8020B3B0();
/* 20B3B8 */ M2C_UNK grZebesRoute_8020B3B8();
/* 20B3BC */ M2C_UNK grZebesRoute_8020B3BC();
/* 20B3C0 */ M2C_UNK grZebesRoute_8020B3C0();
/* 20B424 */ M2C_UNK grZebesRoute_8020B424();
/* 20B42C */ M2C_UNK grZebesRoute_8020B42C();
/* 20B4D4 */ M2C_UNK grZebesRoute_8020B4D4();
/* 20B4D8 */ M2C_UNK fn_8020B4D8();
/* 20B548 */ M2C_UNK grZebesRoute_8020B548();
/* 20B854 */ M2C_UNK grZebesRoute_8020B854();
/* 20B85C */ M2C_UNK grZebesRoute_8020B85C();
#define MELEE_GR_INLINES_H
#define GET_GROUND(gobj) ((Ground*) HSD_GObjGetUserData(gobj))
static inline void Ground_JObjInline1(HSD_GObj* gobj)
{
Ground* gp = ((Ground*) HSD_GObjGetUserData(gobj));
HSD_JObj* jobj = ((HSD_JObj*) HSD_GObjGetHSDObj(gobj));
Ground_801C2ED0(jobj, gp->map_id);
grAnime_801C8138(gobj, gp->map_id, 0);
}
#define GALE01_224A54
/* 224A54 */ float Stage_GetCamBoundsLeftOffset(void);
/* 224A68 */ float Stage_GetCamBoundsRightOffset(void);
/* 224A80 */ float Stage_GetCamBoundsTopOffset(void);
/* 224A98 */ float Stage_GetCamBoundsBottomOffset(void);
/* 224AB0 */ float Stage_GetCamPanAngleRadians(void);
/* 224AC8 */ float Stage_GetCamMaxDepth(void);
/* 224AD8 */ float Stage_GetCamZoomRate(void);
/* 224AE8 */ float Stage_GetCamInfoX20(void);
/* 224AF8 */ float Stage_GetCamInfoX24(void);
/* 224B08 */ float Stage_GetCamFixedZoom(void);
/* 224B18 */ float Stage_GetCamTrackRatio(void);
/* 224B28 */ float Stage_GetCamTrackSmooth(void);
/* 224B38 */ float Stage_GetBlastZoneRightOffset(void);
/* 224B50 */ float Stage_GetBlastZoneLeftOffset(void);
/* 224B68 */ float Stage_GetBlastZoneTopOffset(void);
/* 224B80 */ float Stage_GetBlastZoneBottomOffset(void);
/* 224B98 */ float Stage_CalcUnkCamY(void);
/* 224BC4 */ float Stage_CalcUnkCamYBounds(void);
/* 224BF8 */ void Stage_UnkSetVec3TCam_Offset(Vec3*);
/* 224C1C */ float Stage_GetPauseCamZPosMin(void);
/* 224C2C */ float Stage_GetPauseCamZPosInit(void);
/* 224C3C */ float Stage_GetPauseCamZPosMax(void);
/* 224C4C */ float Stage_GetCamAngleRadiansUp(void);
/* 224C64 */ float Stage_GetCamAngleRadiansDown(void);
/* 224C7C */ float Stage_GetCamAngleRadiansLeft(void);
/* 224C94 */ float Stage_GetCamAngleRadiansRight(void);
/* 224CAC */ void Stage_80224CAC(Vec3*);
/* 224D94 */ void Stage_SetVecToFixedCamPos(Vec3*);
/* 224DB8 */ float Stage_GetCamFixedFov(void);
/* 224DC8 */ bool Stage_80224DC8(s32);
/* 224E38 */ void Stage_80224E38(Vec3*, s32);
/* 224E64 */ void Stage_80224E64(enum_t, Vec3*);
/* 224FDC */ bool Stage_80224FDC(Vec3*);
/* 225074 */ s32 Stage_80225074(s32);
/* 225194 */ enum_t Stage_80225194(void);
/* 22519C */ s32 Stage_8022519C(InternalStageId idx);
/* 2251B4 */ void Stage_802251B4(InternalStageId idx, s32);
/* 2251E8 */ void Stage_802251E8(InternalStageId idx, s32*);
/* 22524C */ void Stage_8022524C(void);
/* 225298 */ void Stage_80225298(void);
/* 2252E4 */ void Stage_802252E4(InternalStageId idx, HSD_GObj*);
/* 22532C */ void Stage_8022532C(InternalStageId idx, s32);
#define MELEE_IF_FORWARD_H
typedef struct Element_803F9628 Element_803F9628;
typedef struct Element_803F9628_Obj_14 Element_803F9628_Obj_14;
typedef struct IfDamageFlags IfDamageFlags;
typedef struct HudIndex HudIndex;
typedef struct IfDamageState IfDamageState;
typedef struct ifMagnify ifMagnify;
typedef struct Placeholder_8016AE50_flags Placeholder_8016AE50_flags;
typedef struct Thing_803F9628 Thing_803F9628;
typedef struct UnknownClassTypeE UnknownClassTypeE;
typedef enum IfDamagePlace {
Hundreds,
Tens,
Ones,
Percent,
HUD_PLACE_MAX
} IfDamagePlace;
#define GALE01_2F7288
/* 2F7AF8 */ void if_802F7AF8(s32);
/* 2F7BB4 */ void if_802F7BB4(s32);
/* 2F7C30 */ void if_802F7C30(s32);
/* 2F7D08 */ void if_802F7D08(s32);
#define GALE01_2F3394
/* 2F3394 */ M2C_UNK ifAll_802F3394();
/* 2F33CC */ M2C_UNK ifAll_802F33CC();
/* 2F3404 */ s32 ifAll_802F3404(void);
/* 2F3414 */ M2C_UNK ifAll_802F3414(void);
/* 2F3424 */ void ifAll_802F3424(void);
/* 2F343C */ void ifAll_802F343C(void);
/* 2F3690 */ M2C_UNK ifAll_802F3690(void);
/* 2F3698 */ M2C_UNK ifAll_802F3698();
/* 2F36A4 */ M2C_UNK ifAll_802F36A4();
/* 2F36B0 */ u8 ifAll_802F36B0(void);
/* 2F36B8 */ M2C_UNK fn_802F36B8();
/* 2F370C */ M2C_UNK ifAll_802F370C();
/* 2F390C */ M2C_UNK ifAll_802F390C();
/* 2F3A64 */ M2C_UNK ifAll_802F3A64();
#define __GALE01_2F3394
struct ifAll_804A0FD8_t {
/* 0x00 */ s32 unk_0;
/* 0x04 */ char pad_4[8]; /* maybe part of unk_0[3]? */
/* 0x0C */ M2C_UNK unk_C; /* inferred */
/* 0x0C */ char pad_C[0x18];
}; /* size = 0x28 */
struct { int x[1 - 2 * !(sizeof(struct ifAll_804A0FD8_t) == 0x28)]; };;
/* 4D6D58 */ static u8 ifAll_804D6D58;
/* 4D6D5C */ static M2C_UNK ifAll_804D6D5C;
/* 4A0FD8 */ static struct ifAll_804A0FD8_t ifAll_804A0FD8;
#define GALE01_2FB6E8
#define MELEE_IF_TYPES_H
struct IfDamageFlags {
u8 explode_animation : 1;
u8 randomize_velocity : 1;
u8 force_digit_shake : 1;
u8 unk10 : 1;
u8 hide_all_digits : 1;
u8 animation_status_id : 2;
u8 unk1 : 1;
};
struct UnknownClassTypeE {
s32 padding[0x24];
HSD_JObj* unk28;
};
struct IfDamageState {
/* +00 */ HSD_GObj* HUD_parent_entity;
/* +04 */ HSD_GObj* next;
/* +08 */ u8 player_slot;
/* +09 */ u8 unk9;
/* +0A */ u16 damage_percent;
/* +0C */ u16 old_damage;
/* +0E */ u8 damage_from_last_attack;
/* +0F */ u8 frames_of_shake_remaining;
/* +10 */ IfDamageFlags flags;
/* +14 */ float translation_x[HUD_PLACE_MAX];
/* +24 */ float translation_y[HUD_PLACE_MAX];
/* +34 */ float velocity_x[HUD_PLACE_MAX];
/* +44 */ float velocity_y[HUD_PLACE_MAX];
/* +54 */ HSD_JObj* jobjs[HUD_PLACE_MAX];
};
struct HudIndex {
IfDamageState players[6];
/* +258 */ HSD_Joint* unk258;
/* +25C */ void* jobj_desc_parent;
/* +260 */ HSD_AnimJoint* janim_selection_joints;
/* +264 */ void* janim_selection_textures;
/* +268 */ void* unk268;
/* +26C */ void* unk26C;
/* +270 */ void* unk270;
/* +274 */ void* unk274;
// 8 elements of size 0x28, what is this?
};
struct Element_803F9628_Obj_14 {
s32 padding[6];
s32 unk1C;
};
struct Element_803F9628 {
/* +00 */ HSD_GObj* x0;
/* +04 */ u32 x4;
/* +08 */ M2C_UNK x8;
/* +0C */ u32 xC; // flags?
/* +10 */ u32 x10; // flags?
/* +14 */ s32 x14;
/* +18 */ u32 x18;
/* +1C */ u32 x1C;
/* +20 */ u32 x20;
/* +24 */ u32 x24;
/* +28 */ u32 x28;
};
struct Thing_803F9628 {
Element_803F9628 things[8];
u32 extra[6];
};
struct Placeholder_8016AE50_flags {
u8 unk80 : 1;
u8 unk40 : 1;
u8 unk20 : 1;
u8 unk10 : 1;
u8 unk8 : 1;
u8 unk4 : 1;
u8 unk2 : 1;
u8 unk1 : 1;
};
struct Placeholder_8016AE50_ret_val {
u8 unk0;
u8 unk1;
Placeholder_8016AE50_flags flags;
};
struct ifMagnify {
HSD_Joint* joint; // // ifMagnify_802fc3c0 accesses 0x804A1DE0 for a Joint
int x4;
int x8;
int xC;
int x10;
struct {
HSD_GObj* gobj; // ifMagnify_802fc750 accesses 0x804A1DF4 + slot * 0x10
// for a GObj
HSD_TObj* tobj; // ifMagnify_802fc3c0 accesses 0x804A1DF8 + slot * 0x10
// for a TObj
HSD_ImageDesc*
idesc; // ifMagnify_802FBBDC access 0x804A1DFC for an ImageDesc
struct {
u8 is_offscreen : 1;
u8 ignore_offscreen : 1;
u8 unk : 6;
} state;
} player[6];
u8 unk[0xF0 - 0x74];
};
/* 2FB6E8 */ s32 ifMagnify_802FB6E8(s32);
/* 2FB73C */ M2C_UNK ifMagnify_802FB73C();
/* 2FB8C0 */ M2C_UNK ifMagnify_802FB8C0();
/* 2FBBDC */ M2C_UNK ifMagnify_802FBBDC();
/* 2FC3BC */ M2C_UNK ifMagnify_802FC3BC();
/* 2FC3C0 */ M2C_UNK ifMagnify_802FC3C0();
/* 2FC618 */ M2C_UNK ifMagnify_802FC618();
/* 2FC750 */ M2C_UNK ifMagnify_802FC750();
/* 2FC7C0 */ M2C_UNK ifMagnify_802FC7C0();
/* 2FC870 */ M2C_UNK ifMagnify_802FC870();
/* 2FC8E8 */ M2C_UNK ifMagnify_802FC8E8();
/* 2FC940 */ M2C_UNK ifMagnify_802FC940();
/* 2FC998 */ bool ifMagnify_802FC998(s32 ply_slot);
/* 4A1DE0 */ extern ifMagnify ifMagnify_804A1DE0;
#define GALE01_2F4910
/* 2F4910 */ HudIndex* ifStatus_802F4910(void);
/* 2F4B84 */ void ifStatus_802F4B84(void);
/* 2F4EDC */ void ifStatus_802F4EDC(void);
/* 2F5B48 */ void ifStatus_802F5B48(void);
/* 2F5DE0 */ void ifStatus_802F5DE0(HSD_GObj* player, s32 arg1);
/* 2F5E50 */ void ifStatus_802F5E50(void);
/* 2F5EC0 */ void ifStatus_802F5EC0(void);
/* 2F6194 */ HSD_GObj* ifStatus_802F6194(HSD_GObj*, s32);
/* 2F61FC */ void ifStatus_802F61FC(void);
/* 2F6508 */ void ifStatus_802F6508(s32);
/* 2F665C */ void ifStatus_802F665C(s8);
/* 2F66A4 */ void ifStatus_802F66A4(void);
/* 2F6788 */ void ifStatus_802F6788(s32);
/* 2F6804 */ void ifStatus_802F6804(void);
/* 2F6898 */ void ifStatus_802F6898(void);
/* 2F68F0 */ void ifStatus_802F68F0(void);
/* 2F6948 */ void ifStatus_802F6948(s32);
/* 2F69C0 */ void ifStatus_802F69C0(s32, s32);
/* 2F6AF8 */ void ifStatus_802F6AF8(s32);
/* 2F6C04 */ void ifStatus_802F6C04(s32);
/* 2F6D10 */ void ifStatus_802F6D10(s32);
/* 2F6E1C */ void ifStatus_802F6E1C(int slot);
/* 2F6E3C */ void ifStatus_802F6E3C(s32);
/* 2F6EA4 */ void ifStatus_802F6EA4(void);
/* 2F7034 */ void ifStatus_802F7034(void);
/* 2F7134 */ void ifStatus_802F7134(void);
/* 2F7220 */ void ifStatus_802F7220(void);
/* 4A10C8 */ extern HudIndex ifStatus_HudInfo;
#define GALE01_2F7EFC
/* 2F98E8 */ void ifStock_802F98E8(void);
/* 2FB650 */ void ifStock_802FB650(s32);
/* 2FB6AC */ void ifStock_802FB6AC(s32);
#define MELEE_IT_ITYOYO_H
typedef struct itYoyoAttributes {
s32 x0_CHARGE_SPAWN_POS;
s32 x4_UPSMASH_CHARGE_STRING_LENGTH;
s32 x8_DOWNSMASH_CHARGE_STRING_LENGTH;
float xC_SIZE;
float x10_UNK1;
float x14_UNK2_RAD;
float x18_SPIN_TEXANIM_SPEED;
float x1C_UNK_TEXANIM_SPEED;
float x20_UNK_TEXANIM_MOD;
float x24_YOYO_RELEASE_VEL_X;
float x28_YOYO_PULL_STRENGTH;
float x2C_UNK3_MOD; // Resistance multiplier?
float x30_YOYO_RELEASE_VEL_Y;
float x34_GRAVITY;
float x38_GRAVITY_MOD;
float x3C_YOYO_PULL_STRENGTH_2;
s32 x40_UPSMASH_YOYO_ROT_FRAME;
s32 x44_UPSMASH_YOYO_NUDGE_FRAME;
s32 x48_DOWNSMASH_YOYO_ROT_FRAME;
s32 x4C_DOWNSMASH_YOYO_NUDGE_FRAME;
s32 x50_UNK4;
s32 x54_UNK5;
s32 x58_UNK6;
s32 x5C_UNK7;
} itYoyoAttributes;
#define GALE01_26C47C
/* 26C47C */ void it_8026C47C(struct it_8026C47C_arg0_t*);
/* 26C530 */ s32 it_8026C530(s32, HSD_ObjAllocUnk6*, s32, s32);
/* 26C65C */ u8 it_8026C65C(HSD_ObjAllocUnk6*);
/* 26C704 */ bool it_8026C704(void);
/* 26C75C */ ItemKind it_8026C75C(HSD_ObjAllocUnk6*);
/* 26C88C */ void fn_8026C88C(HSD_GObj*);
/* 26CA4C */ void it_8026CA4C(u16*, s32*, u64, s32, f32);
/* 26CB3C */ bool it_8026CB3C(Vec3*);
/* 26CB9C */ void it_8026CB9C(s32*, u64, f32);
/* 26CD50 */ void it_8026CD50(s32*, u64, f32);
/* 26CF04 */ void it_8026CF04(void);
/* 26D018 */ void it_8026D018(void);
/* 26D258 */ bool it_8026D258(Vec3*, ItemKind);
/* 26D324 */ bool it_8026D324(ItemKind);
/* 26D3CC */ bool it_8026D3CC(void);
/* 26D564 */ void it_8026D564(Item_GObj*);
/* 26D5CC */ void it_8026D5CC(Item_GObj*);
/* 26D604 */ bool it_8026D604(Item_GObj*);
/* 26D62C */ void it_8026D62C(Item_GObj*, HSD_GObjEvent);
/* 26D6F4 */ void it_8026D6F4(Item_GObj*, HSD_GObjEvent);
/* 26D78C */ void it_8026D78C(Item_GObj*, HSD_GObjEvent);
/* 26D82C */ void it_8026D82C(Item_GObj*);
/* 26D8A4 */ bool it_8026D8A4(Item_GObj*, HSD_GObjEvent);
/* 26D938 */ void it_8026D938(Item_GObj*, HSD_GObjEvent);
/* 26D9A0 */ bool it_8026D9A0(Item_GObj*);
/* 26DA08 */ bool it_8026DA08(Item_GObj*);
/* 26DA70 */ bool it_8026DA70(Item_GObj*);
/* 26DAA8 */ bool it_8026DAA8(Item_GObj*);
/* 26DB40 */ bool it_8026DB40(Item_GObj*);
/* 26DBC8 */ bool it_8026DBC8(Item_GObj*);
/* 26DC24 */ bool it_8026DC24(Item_GObj*);
/* 26DD5C */ bool it_8026DD5C(Item_GObj*);
/* 26DDFC */ bool it_8026DDFC(Item_GObj*);
/* 26DE98 */ bool it_8026DE98(Item_GObj*);
/* 26DF34 */ bool it_8026DF34(Item_GObj*);
/* 26DFB0 */ bool it_8026DFB0(Item_GObj*);
/* 26E058 */ bool it_8026E058(Item_GObj*);
/* 26E0F4 */ void it_8026E0F4(Item_GObj*);
/* 26E15C */ void it_8026E15C(Item_GObj*, HSD_GObjEvent);
/* 26E248 */ void it_8026E248(Item_GObj*, HSD_GObjEvent);
/* 26E248 */ void it_8026E248(Item_GObj*, HSD_GObjEvent);
/* 26E32C */ bool it_8026E32C(Item_GObj*, HSD_GObjEvent);
/* 26E414 */ void it_8026E414(Item_GObj*, HSD_GObjEvent);
/* 26E4D0 */ void it_8026E4D0(Item_GObj*, HSD_GObjEvent);
/* 26E5A0 */ void it_8026E5A0(Item_GObj*, HSD_GObjEvent);
/* 26E664 */ void it_8026E664(Item_GObj*, HSD_GObjEvent);
/* 26E71C */ void it_8026E71C(Item_GObj*, HSD_GObjEvent);
/* 26E7E0 */ void it_8026E7E0(Item_GObj*, HSD_GObjEvent);
/* 26E8C4 */ void it_8026E8C4(Item_GObj*, HSD_GObjEvent, HSD_GObjEvent);
/* 26E9A4 */ bool it_8026E9A4(HSD_GObj*, Vec3*, Vec3*, Vec3*);
/* 26EA20 */ bool it_8026EA20(HSD_GObj*, Vec3*, Vec3*, Vec3*, s32*, Vec3*);
/* 26EA9C */ bool it_8026EA9C(HSD_GObj*, Vec3*, Vec3*, Vec3*, s32, Vec3*, s32);
/* 26EB18 */ void it_8026EB18(HSD_GObj*, s32, Vec3*);
/* 26EBC8 */ void it_8026EBC8(HSD_GObj*, u16, u8*);
/* 26EC54 */ void it_8026EC54(HSD_GObj*, u16, u8*);
/* 26ECE0 */ bool it_8026ECE0(Item_GObj*, u32);
/* 26EECC */ void it_8026EECC(HSD_GObj*, int);
/* 26F3AC */ void it_8026F3AC(void);
/* 26F3D4 */ void it_8026F3D4(Item_GObj*, struct it_8026F3D4_arg1_t*, s32,
s32);
/* 26F53C */ void it_8026F53C(Item_GObj*, Vec3*, bool);
/* 26F5C8 */ Item_GObj* it_8026F5C8(Item_GObj*, ItemKind, Vec3*);
/* 26F6BC */ Item_GObj* it_8026F6BC(Item_GObj*, Vec3*, Vec3*, bool);
/* 26F7C8 */ Item_GObj* it_8026F7C8(Vec3*, Vec3*, bool);
/* 26F8B4 */ bool it_8026F8B4(Item_GObj*, Vec3*, Vec3*, bool);
/* 26F9A0 */ void it_8026F9A0(void);
#define GALE01_272560
/* 272560 */ void it_80272560(Item_GObj*, s32);
/* 2725D4 */ void it_802725D4(Item_GObj*);
/* 272674 */ void it_80272674(Item_GObj*, s32);
/* 272784 */ void it_80272784(Item_GObj*);
/* 272818 */ Fighter* it_80272818(Item*);
/* 272828 */ Item_GObj* it_80272828(ItemKind);
/* 272860 */ void it_80272860(Item_GObj*, f32, f32);
/* 2728C8 */ void it_802728C8(Item_GObj*);
/* 272940 */ void it_80272940(Item_GObj*);
// /* 272980 */ void it_80272980(Item_GObj*, f32);
/* 272980 */ void it_80272980(Item_GObj*);
/* 272A18 */ void it_80272A18(HSD_JObj* item_jobj);
/* 272A3C */ void it_80272A3C(HSD_JObj* item_jobj);
/* 272A60 */ void it_80272A60(Item_GObj*);
/* 272AC4 */ void it_80272AC4(Item_GObj*, Vec3*);
/* 272B40 */ void it_80272B40(Item_GObj*);
/* 272BA4 */ void it_80272BA4(Item_GObj*);
/* 272C08 */ void it_80272C08(Item_GObj*);
/* 272C6C */ bool it_80272C6C(Item_GObj*);
/* 272C90 */ HSD_JObj* it_80272C90(Item_GObj*);
/* 272CC0 */ HSD_JObj* it_80272CC0(Item_GObj*, enum_t);
/* 272D1C */ bool it_80272D1C(Item_GObj*);
/* 272D40 */ s32 it_80272D40(Item_GObj*);
/* 272DB0 */ bool itColl_BounceOffVictim(Item_GObj*);
/* 272DE4 */ void it_80272DE4(HSD_JObj*, f32);
/* 272F7C */ void it_80272F7C(HSD_JObj*, f32);
/* 273030 */ bool it_80273030(Item_GObj*);
/* 273078 */ bool itColl_BounceOffShield(Item_GObj*);
/* 273130 */ bool it_80273130(Item_GObj*);
/* 273168 */ void it_80273168(Item_GObj*);
/* 2731A4 */ void it_802731A4(Item_GObj*);
/* 2731E0 */ void it_802731E0(Item_GObj*);
/* 27321C */ void it_8027321C(Item_GObj*);
/* 27327C */ void it_8027327C(Item_GObj*, enum_t ID1, enum_t ID2);
/* 2732E4 */ void it_802732E4(Item*, s32);
/* 273318 */ void it_80273318(Item_GObj*, HSD_Joint*, s32);
// /* 273318 */ void it_80273318(Item_GObj*, HSD_Joint*);
/* 273408 */ void it_80273408(Item_GObj*);
/* 273454 */ void it_80273454(Item_GObj*);
/* 27346C */ void it_8027346C(Item_GObj*);
/* 273484 */ void it_80273484(Item_GObj*);
/* 27349C */ void it_8027349C(Item_GObj*);
/* 2734B4 */ void it_802734B4(Item_GObj*);
/* 273500 */ void it_80273500(Item_GObj*, Vec3*);
/* 273598 */ void it_80273598(Item_GObj*, s32, s32);
/* 273600 */ void it_80273600(Item_GObj*);
/* 273648 */ void it_80273648(Item_GObj*, s32, s32);
/* 273670 */ void it_80273670(Item_GObj*, int, float);
/* 273748 */ void it_80273748(Item_GObj*, Vec3*, Vec3*);
/* 273B50 */ void it_80273B50(Item_GObj*, Vec3*);
/* 273F34 */ void it_80273F34(Item_GObj*, HSD_GObj*, Item*);
/* 274198 */ void it_80274198(Item_GObj*, bool);
/* 2741F4 */ void it_802741F4(Item_GObj*, bool);
/* 274250 */ void it_80274250(Item_GObj*, Vec3*);
/* 27429C */ void it_8027429C(Item_GObj*, Vec3*);
/* 2742F4 */ void it_802742F4(Item_GObj*, HSD_GObj*, Fighter_Part);
/* 274484 */ void it_80274484(Item_GObj*, HSD_JObj*, f32);
/* 274574 */ void it_80274574(Item_GObj*);
/* 274594 */ void it_80274594(Item_GObj*);
/* 274658 */ void it_80274658(Item_GObj*, f32);
/* 2746F8 */ HSD_JObj* it_802746F8(Item_GObj*);
/* 274740 */ void it_80274740(Item_GObj*);
/* 274990 */ f32 it_80274990(Item_GObj*);
/* 274A64 */ void it_80274A64(Item_GObj*);
/* 274C60 */ void it_80274C60(Item_GObj*);
/* 274C78 */ bool it_80274C78(Item_GObj*);
/* 274C88 */ void it_80274C88(Item_GObj*);
/* 274CAC */ void it_80274CAC(Item_GObj*);
/* 274D04 */ void it_80274D04(Item_GObj*, Vec3*);
/* 274D6C */ void it_80274D6C(Item_GObj*);
/* 274DAC */ void it_80274DAC(Item_GObj*);
/* 274DFC */ void it_80274DFC(Item_GObj*);
/* 274E44 */ void it_80274E44(Item_GObj*);
/* 274ECC */ void it_80274ECC(Item_GObj*, bool);
/* 274ED8 */ void it_80274ED8(void);
/* 274EE8 */ void it_80274EE8(u32);
/* 274EF8 */ void it_80274EF8(Item_GObj*);
/* 274F10 */ void it_80274F10(Item_GObj*);
/* 274F28 */ void it_80274F28(Item*, s8, HSD_GObjEvent, HSD_GObjInteraction);
/* 274F48 */ void it_80274F48(Item_GObj*, s32, HSD_GObj*, Fighter_Part);
/* 274FDC */ void it_80274FDC(Item_GObj*, s32, Fighter_GObj*, Fighter_Part);
/* 275070 */ void it_80275070(Item_GObj*, s32);
/* 2750E8 */ bool it_802750E8(Item_GObj*, s32);
/* 2750F8 */ void it_802750F8(Item_GObj*);
/* 275158 */ void it_80275158(Item_GObj*, f32);
/* 275174 */ void it_80275174(Item_GObj*, f32);
/* 27518C */ void it_8027518C(Item_GObj*);
/* 2751D8 */ bool it_802751D8(Item_GObj*);
/* 275210 */ void it_80275210(Item_GObj*);
/* 275228 */ void it_80275228(Item_GObj*);
/* 275240 */ void it_80275240(Item_GObj*);
/* 275258 */ void it_80275258(Item_GObj*);
/* 275270 */ void it_80275270(Item_GObj*);
/* 275288 */ void it_80275288(Item_GObj*, s32, s32);
/* 2752D8 */ void it_802752D8(Item_GObj*, s32, s32);
/* 275328 */ void it_80275328(HSD_GObj*, ItemLink*);
/* 275390 */ void it_80275390(Item_GObj*);
/* 2753BC */ void it_802753BC(Item_GObj*, s16);
/* 2753DC */ void it_802753DC(Item_GObj*);
/* 275414 */ void it_80275414(Item_GObj*);
/* 27542C */ void it_8027542C(Item_GObj*);
/* 275444 */ void it_80275444(Item_GObj*);
/* 275474 */ void it_80275474(Item_GObj*);
/* 2754A4 */ void it_802754A4(Item_GObj*);
/* 2754BC */ void it_802754BC(Item_GObj*);
/* 2754D4 */ void it_802754D4(Item_GObj*);
/* 275504 */ void it_80275504(Item_GObj*);
/* 275534 */ void it_80275534(Item_GObj*, f32);
/* 275594 */ void it_80275594(Item_GObj*, s32, f32);
/* 2755C0 */ void it_802755C0(Item_GObj*, f32);
/* 275640 */ void it_80275640(Item_GObj*, f32);
/* 2756D0 */ void it_802756D0(Item_GObj*);
/* 2756E0 */ void it_802756E0(Item_GObj*);
/* 27570C */ void it_8027570C(Item_GObj*, s32);
/* 27572C */ void it_8027572C(Item_GObj*, s32);
/* 27574C */ void it_8027574C(Item_GObj*);
/* 275788 */ void it_80275788(Item_GObj*);
/* 275820 */ void it_80275820(Item_GObj*, Vec3*, Vec3*, s32);
/* 275870 */ bool it_80275870(Item_GObj*);
/* 2758D4 */ float it_802758D4(Item_GObj*);
/* 2759DC */ void it_802759DC(Item_GObj*, Item_GObj*);
/* 275BC8 */ void it_80275BC8(Item_GObj*, HSD_GObj*);
/* 275D5C */ void it_80275D5C(Item_GObj*, ECB*);
/* 275DFC */ void it_80275DFC(Item_GObj*);
/* 275E98 */ void it_80275E98(Item_GObj*, SpawnItem*);
/* 276100 */ void it_80276100(Item_GObj*, Vec3*);
/* 276174 */ void it_80276174(Item_GObj*, Vec3*);
/* 276214 */ void it_80276214(Item_GObj*);
/* 276278 */ void it_80276278(Item_GObj*);
/* 2762B0 */ void it_802762B0(Item*);
/* 2762BC */ void it_802762BC(Item*);
/* 2762D8 */ bool it_802762D8(Item_GObj*);
/* 276308 */ s32 it_80276308(Item_GObj*);
/* 276348 */ s32 it_80276348(Item_GObj*, Vec3*);
/* 2763B8 */ bool it_802763B8(Item_GObj*);
/* 2763E0 */ s32 it_802763E0(Item_GObj*);
/* 276408 */ void it_80276408(Item_GObj*, CollData*, Vec3*);
/* 27649C */ f32 it_8027649C(Item_GObj*);
/* 2765BC */ void it_802765BC(Item_GObj*, enum_t);
/* 276934 */ void it_80276934(Item_GObj*, enum_t);
/* 276CB8 */ void it_80276CB8(Item_GObj*);
/* 276CEC */ void it_80276CEC(Item_GObj*);
/* 276D9C */ bool it_80276D9C(Item_GObj*, enum_t);
/* 276FC4 */ void it_80276FC4(Item_GObj*, s32);
/* 277040 */ bool it_80277040(Item_GObj*);
/* 27737C */ void it_8027737C(Item_GObj*, Vec3*);
/* 277544 */ bool it_80277544(Item_GObj*);
/* 2775F0 */ void it_802775F0(Item_GObj*, Vec3*);
/* 27770C */ bool it_8027770C(Item_GObj*);
/* 27781C */ bool it_8027781C(Item_GObj*);
/* 277C40 */ void it_80277C40(Item_GObj*, s32);
/* 277D08 */ void it_80277D08(void);
/* 277D8C */ void fn_80277D8C(HSD_MObj*, u32);
/* 277F90 */ HSD_TExp* it_80277F90(Item*, HSD_MObj*, HSD_TExp*);
/* 278108 */ void it_80278108(Item*, HSD_MObj*, HSD_TExp*);
/* 278574 */ void it_80278574(HSD_GObj*, GXColor*);
/* 27870C */ void it_8027870C(s32);
/* 2787B4 */ void it_802787B4(Item_GObj*, s32);
/* 278800 */ void it_80278800(Item_GObj*, s32, s32, Vec3*, Vec3*, s32, f32);
/* 278F2C */ void it_80278F2C(Item_GObj*, FtCmdState*);
/* 2790C0 */ void it_802790C0(Item_GObj*, FtCmdState*);
/* 279544 */ void it_80279544(Item_GObj*, FtCmdState*);
/* 2795EC */ void it_802795EC(Item_GObj*, FtCmdState*);
/* 279680 */ void it_80279680(Item_GObj*, FtCmdState*);
/* 2796C4 */ void it_802796C4(Item_GObj*, FtCmdState*);
/* 2796FC */ void it_802796FC(Item_GObj*, FtCmdState*);
/* 279720 */ void it_80279720(Item_GObj*, FtCmdState*);
/* 279744 */ void it_80279744(Item_GObj*, FtCmdState*);
/* 279768 */ void it_80279768(Item_GObj*, FtCmdState*);
/* 27978C */ void it_8027978C(Item_GObj*, FtCmdState*);
/* 279888 */ void it_80279888(Item_GObj*, FtCmdState*);
/* 2798D4 */ void it_802798D4(Item_GObj*, FtCmdState*);
/* 27990C */ void it_8027990C(Item_GObj*, FtCmdState*);
/* 279958 */ void it_80279958(Item_GObj*, FtCmdState*);
/* 2799A8 */ void it_802799A8(Item_GObj*, FtCmdState*);
/* 2799E4 */ void it_802799E4(Item_GObj*);
/* 279AF0 */ void it_80279AF0(Item_GObj*, FtCmdState*);
/* 279B10 */ void it_80279B10(Item_GObj*, FtCmdState*);
/* 279B30 */ void fn_80279B30(Item_GObj*, FtCmdState*);
// /* 279B30 */ void fn_80279B30(Item_GObj*, FtCmdState*, u32);
/* 279B64 */ void it_80279B64(Item*);
/* 279B88 */ void it_80279B88(Item*, s32, s32);
/* 279BBC */ void it_80279BBC(Item*);
/* 279BE0 */ void it_80279BE0(Item_GObj*);
/* 279C48 */ void it_80279C48(Item_GObj*, Article*);
/* 279CDC */ void it_80279CDC(Item_GObj*, f32);
/* 279D38 */ void it_80279D38(Item_GObj*);
/* 279D5C */ void it_80279D5C(Item_GObj*, f32);
/* 279E24 */ void it_80279E24(Item_GObj*);
/* 279FF8 */ void it_80279FF8(Item_GObj*);
/* 27A09C */ bool it_8027A09C(Item_GObj*);
/* 27A118 */ bool it_8027A118(Item_GObj*, HSD_GObjEvent);
/* 27A13C */ void it_8027A13C(Item_GObj*);
/* 27A160 */ void it_8027A160(HSD_JObj*, Item*);
/* 27A344 */ void it_8027A344(Item_GObj*);
/* 27A364 */ s32 it_8027A364(Item*);
/* 27A4D4 */ s32 it_8027A4D4(Item*);
/* 27A780 */ s32 it_8027A780(Item*, void*);
/* 27A9B8 */ s32 it_8027A9B8(Item*);
/* 27AAA0 */ void it_8027AAA0(Item_GObj*, Item*, s32);
/* 27AB64 */ bool it_8027AB64(Item_GObj*);
/* 27ADEC */ void it_8027ADEC(int, Item_GObj*, HSD_JObj*, f32);
/* 27AE34 */ bool it_8027AE34(Item_GObj*);
/* 27AF50 */ bool it_8027AF50(Item_GObj*);
/* 27B070 */ void it_8027B070(Item_GObj*, Fighter_GObj*);
/* 27B0C4 */ void it_8027B0C4(Item_GObj*, SpawnItem*);
/* 27B1F4 */ void it_8027B1F4(Item_GObj*);
// /* 27B1F4 */ void it_8027B1F4(Item_GObj*, int);
/* 27B288 */ void it_8027B288(Item_GObj*, u32);
/* 27B330 */ void it_8027B330(Item_GObj*, u32);
/* 27B378 */ void it_8027B378(Fighter_GObj*, Item_GObj*, f32);
/* 27B408 */ void it_8027B408(Item_GObj*, Item_GObj*, f32);
/* 27B4A4 */ void it_8027B4A4(Fighter_GObj*, Item_GObj*);
/* 27B508 */ void it_8027B508(Item_GObj*, Item_GObj*);
/* 27B564 */ void it_8027B564(Item_GObj*);
/* 27B5B0 */ Item_GObj* it_8027B5B0(ItemKind, Vec3*, HSD_JObj*, Vec3*, bool);
/* 27B730 */ void it_8027B730(Item_GObj*);
/* 27B798 */ bool it_8027B798(Item_GObj*, Vec3*);
/* 27B964 */ void it_8027B964(Item_GObj*, bool);
/* 27BA54 */ void it_8027BA54(HSD_GObj*, Vec3*);
/* 27BB1C */ void it_8027BB1C(Vec3*, Vec3*);
/* 27BBF4 */ void it_8027BBF4(Item_GObj*, bool, f64, f32);
/* 27C0A8 */ void it_8027C0A8(Item_GObj*, f32, f32);
/* 27C0CC */ void it_8027C0CC(Item_GObj*, f32, f32);
/* 27C0F0 */ void it_8027C0F0(Item_GObj*, Vec3*, f64, f32);
/* 27C56C */ void it_8027C56C(Item_GObj*, f32);
/* 27C794 */ bool it_8027C794(Item_GObj*);
/* 27C79C */ bool it_8027C79C(Item_GObj*);
/* 27C824 */ bool it_8027C824(Item_GObj*, s32 (*arg1)(Item_GObj*));
/* 27C8B0 */ void it_8027C8B0(Item_GObj*);
/* 27C8D0 */ void it_8027C8D0(Vec3*, Vec3*, f32);
/* 27C9D8 */ void it_8027C9D8(Item*);
/* 27CA7C */ bool it_8027CA7C(HSD_GObj*);
/* 27CAD8 */ void it_8027CAD8(Item_GObj*);
/* 27CB3C */ void it_8027CB3C(Item_GObj*);
/* 27CBA4 */ void it_8027CBA4(Item_GObj*);
/* 27CBFC */ f32 it_8027CBFC(Item_GObj*);
/* 27CC88 */ Item_GObj* it_8027CC88(Item_GObj*);
/* 27CE18 */ void it_8027CE18(Item_GObj*);
/* 27CE44 */ void it_8027CE44(Item_GObj*);
/* 27CE64 */ void it_8027CE64(Item_GObj*, HSD_GObj*, int);
/* 3F14C4 */ extern struct ItemLogicTable it_803F14C4[43];
/* 3F23CC */ extern struct ItemLogicTable it_803F23CC[];
/* 3F3100 */ extern struct ItemLogicTable it_803F3100[118];
/* 3F4D20 */ extern struct ItemLogicTable it_803F4D20[];
/* 4A0E30 */ extern HSD_ObjAllocUnk4 it_804A0E30;
/* 4A0E50 */ extern HSD_ObjAllocUnk6 it_804A0E50;
/* 4A0E60 */ extern HSD_ObjAllocUnk6 it_804A0E60;
/* 4A0F60 */ extern Article* it_804A0F60[];
/* 4D6D00 */ extern s8 it_804D6D00;
/* 4D6D08 */ extern s32 it_804D6D08;
/* 4D6D0C */ extern s32 it_804D6D0C;
/* 4D6D10 */ extern u32 it_804D6D10;
/* 4D6D14 */ extern uint it_804D6D14;
/* 4D6D18 */ extern u32 it_804D6D18;
/* 4D6D24 */ extern Article** it_804D6D24;
/* 4D6D28 */ extern ItemCommonData* it_804D6D28;
/* 4D6D30 */ extern Article** it_804D6D30;
/* 4D6D38 */ extern Article** it_804D6D38;
#define _itcoll_h_
/* 26F9AC */ void it_8026F9AC(s32, void*, HitCapsule*, HurtCapsule*);
/* 26FA2C */ void it_8026FA2C(Item*, HitCapsule*, s32, Item*, bool);
/* 26FAC4 */ void it_8026FAC4(Item*, HitCapsule*, s32, void*, bool);
/* 26FC00 */ void it_8026FC00(Item*, HitCapsule*, s32, Fighter*);
/* 26FCF8 */ void it_8026FCF8(Item*, HitCapsule*);
/* 26FE68 */ void it_8026FE68(Item*, HitCapsule*, Item*, HitCapsule*);
/* 2701BC */ void it_802701BC(Item_GObj*);
/* 2703E8 */ void it_802703E8(Item_GObj*);
/* 2706D0 */ void it_802706D0(Item_GObj*);
/* 270CD8 */ f32 it_80270CD8(Item*, HitCapsule*);
/* 270E30 */ void it_80270E30(Item_GObj*);
/* 27129C */ void it_8027129C(Item_GObj*, s32);
/* 27137C */ void it_8027137C(Item_GObj*);
/* 27146C */ void it_8027146C(Item_GObj*);
/* 2714C0 */ void it_802714C0(Item_GObj*);
/* 271508 */ void it_80271508(Item_GObj*, HurtCapsuleState);
/* 271534 */ void it_80271534(Item_GObj*, s32, HurtCapsule*);
/* 271590 */ void it_80271590(Item_GObj*, s32, HurtCapsule*);
/* 27163C */ void it_8027163C(Item_GObj*);
/* 271A58 */ void it_80271A58(Item_GObj*);
/* 2721B8 */ void it_802721B8(Item_GObj*);
/* 272280 */ void it_80272280(Item_GObj*);
/* 272298 */ void it_80272298(Item_GObj*);
/* 2722B0 */ void it_802722B0(Item_GObj*);
/* 272304 */ void it_80272304(Item_GObj*);
/* 27236C */ HSD_GObj* it_8027236C(Item_GObj*);
/* 2723FC */ HSD_GObj* it_802723FC(Item_GObj*);
/* 272460 */ void it_80272460(HitCapsule*, u32, Item_GObj*);
#define GALE01_266F3C
struct ItemStateDesc;
/* 266F3C */ bool Item_80266F3C(void);
/* 266F70 */ void Item_80266F70(void);
/* 266FA8 */ void Item_80266FA8(void);
/* 266FCC */ void Item_80266FCC(void);
/* 267454 */ void Item_80267454(HSD_GObj* gobj);
/* 267978 */ void Item_80267978(HSD_GObj* gobj);
/* 2680CC */ void Item_802680CC(HSD_GObj* gobj);
/* 26849C */ void Item_8026849C(HSD_GObj* gobj);
/* 268B18 */ Item_GObj* Item_80268B18(SpawnItem* spawnItem);
/* 268B5C */ Item_GObj* Item_80268B5C(SpawnItem* spawnItem);
/* 268B9C */ void Item_80268B9C(SpawnItem* spawnItem);
/* 268D34 */ void Item_80268D34(HSD_GObj* gobj,
struct ItemStateDesc* itemStateDesc);
/* 268DD4 */ void Item_80268DD4(HSD_GObj* gobj, float);
/* 268E40 */ void Item_80268E40(Item* item_data,
struct ItemStateDesc* itemStateDesc);
/* 268E5C */ void Item_80268E5C(HSD_GObj* gobj, enum_t msid,
Item_StateChangeFlags flags);
/* 2693E4 */ void Item_802693E4(HSD_GObj* gobj);
/* 2694CC */ void Item_802694CC(HSD_GObj* gobj);
/* 2697D4 */ void Item_802697D4(HSD_GObj* gobj);
/* 269978 */ void Item_80269978(HSD_GObj* gobj);
/* 269CA0 */ void Item_80269CA0(Item* item_data, s32 damage);
/* 26A848 */ void Item_8026A848(HSD_GObj* gobj, HSD_GObj* fgobj);
/* 26A8EC */ void Item_8026A8EC(Item_GObj* gobj);
/* 26AB54 */ void Item_8026AB54(HSD_GObj* gobj, HSD_GObj* owner_gobj,
Fighter_Part part);
/* 26ABD8 */ void Item_8026ABD8(Item_GObj* gobj, Vec3* pos, float);
/* 26AC74 */ void Item_8026AC74(HSD_GObj* gobj, Vec3*, Vec3*, float);
/* 26AD20 */ void Item_8026AD20(HSD_GObj* gobj, Vec3*, Vec3*, float);
/* 26ADC0 */ void Item_8026ADC0(HSD_GObj* gobj);
/* 26AE10 */ void Item_OnUserDataRemove(void* user_data);
/* 26AE10 */ void lbl_8026AE10(void* user_data);
/* 26AE60 */ uint Item_8026AE60(void);
/* 26AE84 */ void Item_8026AE84(Item* item_data, enum_t sfx, int pan,
int volume);
/* 26AF0C */ void Item_8026AF0C(Item* item_data, enum_t sfx, int pan,
int volume);
/* 26AFA0 */ void Item_8026AFA0(Item* item_data, enum_t sfx, int pan,
int volume);
/* 26B034 */ void Item_8026B034(Item* item_data);
/* 26B074 */ void Item_8026B074(Item* item_data);
/* 26B1A4 */ bool Item_IsGrabbable(Item_GObj* gobj);
/* 4A0C38 */ extern HSD_ObjAllocData Item_804A0C38;
/* 4A0C64 */ extern HSD_ObjAllocUnk Item_804A0C64;
/* 4A0CCC */ extern HSD_ObjAllocUnk2 Item_804A0CCC;
/* 4A0E24 */ extern S32Vec3 Item_804A0E24;
#define GALE01_27CF30
/* 283AE4 */ Item_GObj* it_80283AE4(Item_GObj*, Vec3*, s32);
/* 283BD4 */ void it_80283BD4(Item_GObj*);
/* 2841B4 */ HSD_GObj* it_802841B4(HSD_GObj*, Vec3*, s32);
/* 28428C */ void it_8028428C(Item_GObj*);
/* 29D968 */ void it_8029D968(Item_GObj*);
/* 29DD58 */ HSD_GObj* it_8029DD58(Item_GObj* fighter_gobj, Vec3*, u8, int,
float);
/* 2A850C */ void it_802A850C(Item_GObj*, Vec3*, Vec3*, float, float, float);
/* 2A8A7C */ void it_802A8A7C(Item_GObj* gobj);
/* 2ADDD0 */ void it_802ADDD0(Item_GObj*, s32);
/* 2AE1D0 */ void it_802AE1D0(Item_GObj*);
/* 2AE538 */ void it_802AE538(Item_GObj*);
/* 2AE608 */ void it_802AE608(Item_GObj*);
/* 2AE8A8 */ Item_GObj* it_802AE8A8(float, Fighter_GObj*, Vec3*, Fighter_Part,
ItemKind);
/* 2AEAB4 */ void it_802AEAB4(Item_GObj*);
/* 2B2560 */ HSD_GObj* it_802B2560(Item_GObj*, float, Vec3*, long, u32);
/* 2B2674 */ void it_802B2674(Item_GObj*);
/* 2B26C0 */ void it_802B26C0(Item_GObj*);
/* 2B26E0 */ void it_802B26E0(Item_GObj*);
/* 2BAEEC */ void it_802BAEEC(Item_GObj*);
/* 2BAF0C */ void it_802BAF0C(Item_GObj*);
/* 2BB20C */ void it_802BB20C(Item_GObj*);
/* 2BB290 */ HSD_GObj* it_802BB290(Item_GObj* gobj, Vec3* arg1,
float facing_dir);
/* 2BCF84 */ void it_802BCF84(Item_GObj*);
/* 2BCFC4 */ void it_802BCFC4(Item_GObj* gobj, float* arg1,
itChainSegment* chainSegment, Item* item_data,
float arg4);
/* 2BDBF8 */ void it_802BDBF8(Item_GObj* gobj);
/* 2BDC18 */ void it_802BDC18(Item_GObj* gobj);
/* 2BDC38 */ bool it_802BDC38(Item_GObj* gobj);
/* 2C0510 */ void it_802C0510(Item_GObj*, Vec3*, s32, s32, float facing_dir);
/* 2C0850 */ u32 it_802C0850(Item_GObj*, Vec3*, u32, s32,
float facing_direction);
/* 2C0DBC */ void it_802C0DBC(u32 arg0);
/* 2C61F4 */ HSD_GObj* it_802C61F4(Item_GObj*, Vec3*, s32, float);
/* 2C6328 */ void it_802C6328(Item_GObj*);
/* 2C6374 */ void it_802C6374(Item_GObj*);
/* 2C6394 */ void it_802C6394(Item_GObj*);
/* 2C6430 */ void it_802C6430(Item_GObj*);
/* 2C6458 */ void it_802C6458(Item_GObj*);
/* 2C6480 */ void it_802C6480(Item_GObj*);
/* 2C64A8 */ void it_802C64A8(Item_GObj*);
/* 2C65E4 */ HSD_GObj* it_802C65E4(Item_GObj*, Vec3*, s32, float);
/* 2C6718 */ void it_802C6718(Item_GObj*);
/* 2C6764 */ void it_802C6764(Item_GObj*);
/* 2C6784 */ void it_802C6784(Item_GObj*);
/* 2C68F8 */ HSD_GObj* it_802C68F8(Item_GObj*, Vec3*, s32, float);
/* 2C6A2C */ void it_802C6A2C(Item_GObj*);
/* 2C6A78 */ void it_802C6A78(Item_GObj*);
/* 2C6A98 */ void it_802C6A98(Item_GObj*);
/* 2C6C38 */ HSD_GObj* it_802C6C38(Item_GObj*, Vec3*, enum_t part, float);
/* 2C6D6C */ void it_802C6D6C(Item_GObj*);
/* 2C6DB8 */ void it_802C6DB8(Item_GObj*);
/* 2C6DD8 */ void it_802C6DD8(Item_GObj*);
/* 2C6E50 */ void it_802C6E50(Item_GObj*);
/* 2C720C */ HSD_GObj* it_802C720C(Item_GObj*, Vec3*, s32, float);
/* 2C7340 */ void it_802C7340(Item_GObj*);
/* 2C738C */ void it_802C738C(Item_GObj*);
/* 2C73AC */ void it_802C73AC(Item_GObj*);
/* 2C7424 */ void it_802C7424(Item_GObj*);
/* 2C7774 */ HSD_GObj* it_802C7774(float, HSD_GObj*, Vec3*, s32, u32);
/* 2C7A84 */ void it_802C7A84(Item_GObj*);
/* 2C7AD0 */ void it_802C7AD0(Item_GObj*);
/* 2C7AF0 */ void it_802C7AF0(Item_GObj*);
/* 2F2094 */ Item_GObj* it_802F2094(int, Vec3*, int, int);
/* 2F2F34 */ void it_802F2F34(HSD_GObj*, it_27CF_DatAttrs*);
/* 2F3020 */ void it_802F3020(HSD_GObj*);
/* 2F3078 */ bool it_802F3078(HSD_GObj*);
/* 2F3120 */ void it_802F3120(HSD_GObj*);
/* 2F3150 */ bool it_802F3150(HSD_GObj*);
/* 2F317C */ void it_802F317C(HSD_GObj*);
/* 2F31B8 */ bool it_802F31B8(HSD_GObj*);
/* 2F3260 */ void it_802F3260(HSD_GObj*);
/* 2F3264 */ bool it_802F3264(HSD_GObj*);
/* 2F3290 */ void it_802F3290(Item_GObj*);
/* 2F32F8 */ bool it_802F32F8(HSD_GObj*);
/* 2F3330 */ bool it_802F3330(Item_GObj*);
/* 2F3374 */ void it_802F3374(Item_GObj*, HSD_GObj*);
/* 3F94A0 */ extern ItemStateTable it_803F94A0[];
#define GALE01_2ADA1C
/* 2ADA1C */ void it_802ADA1C(Vec3* pos, Vec3* vel, float facing_dir);
/* 2ADBE4 */ void it_802ADBE4(Item_GObj*, Item_GObj*);
/* 3F6C88 */ extern ItemStateTable it_803F6C88[];
#define GALE01_2E5AC4
/* 2E5AC4 */ bool it_802E5AC4(Item_GObj*, bool);
/* 2E5EF4 */ s32 it_802E5EF4(Item_GObj*);
/* 2E5F00 */ void it_802E5F00(Item_GObj*, Vec3*, Vec3*, s32);
/* 2E5F8C */ s32 it_802E5F8C(Item_GObj*, Vec3*, s32, s32, f32, f32);
/* 2E609C */ s32 it_802E609C(it_802E5FXX_struct*, SpawnItem*);
/* 2E614C */ void it_802E614C(Item_GObj*, Item_GObj*, SpawnItem*, Vec3*,
Vec3*);
/* 2E61C4 */ s32 it_802E61C4(Item_GObj*, s32, s32);
/* 2E628C */ void it_802E628C(Item_GObj*, f32, f32);
/* 2E6380 */ s32 it_802E6380(Item_GObj*, it_802E5FXX_struct*);
/* 2E657C */ bool it_802E657C(Item_GObj*);
/* 2E6658 */ void it_802E6658(void);
/* 2E66A0 */ void it_802E66A0(HSD_GObj*);
/* 2E67A8 */ bool it_802E67A8(HSD_GObj*);
/* 2E67F4 */ void it_802E67F4(HSD_GObj*);
/* 2E6824 */ bool it_802E6824(HSD_GObj*);
/* 2E6888 */ void it_802E6888(HSD_GObj*);
/* 2E68EC */ bool it_802E68EC(HSD_GObj*);
/* 2E690C */ void it_802E690C(HSD_GObj*);
/* 2E6910 */ bool it_802E6910(HSD_GObj*);
/* 2E6A40 */ bool it_802E6A40(Item_GObj*);
/* 2E6A74 */ void it_802E6A74(HSD_GObj*);
/* 2E6ACC */ void it_802E6ACC(Item_GObj*, HSD_GObj*);
/* 3F8BD8 */ extern ItemStateTable it_803F8BD8[];
#define GALE01_2E6AEC
/* 2E6AEC */ Item_GObj* it_802E6AEC(Ground*, int, int, HSD_JObj*, Vec3*, int,
int, HSD_GObjEvent, int);
/* 2E6F7C */ bool it_802E6F7C(Item_GObj*);
/* 2E6FC0 */ bool it_802E6FC0(Item_GObj*);
/* 2E709C */ void it_802E709C(Item_GObj*, HSD_GObj*);
/* 3F8C8C */ extern ItemStateTable it_803F8C8C[];
#define GALE01_2F28C8
/* 2F28C8 */ void it_802F28C8(Item_GObj*, int, float);
/* 2F295C */ float it_802F295C(HSD_GObj* owner_gobj, it_2F28_DatAttrs* attr);
/* 2F2BDC */ void it_802F2BDC(Item_GObj*, HSD_GObj*);
/* 3F9470 */ extern ItemStateTable it_803F9470[];
#define GALE01_2F2BFC
/* 2F2BFC */ void it_802F2BFC(Item_GObj* gobj, ftYs_GObj* owner_gobj);
/* 2F2CE0 */ void it_802F2CE0(Item_GObj* gobj, bool clear_destroy_type);
/* 3F9480 */ extern ItemStateTable it_803F9480[];
extern ItemStateTable it_803F8DE8[];
void it_802E79C8(Item_GObj*);
bool it_802E838C(Item_GObj*);
bool it_802E8420(Item_GObj*);
bool it_802E838C(Item_GObj*);
bool it_802E8418(Item_GObj*);
bool it_802E85F4(Item_GObj*);
bool it_802E8784(Item_GObj*);
#define GALE01_284854
Item_GObj* it_80284854(Vec3*);
void it_80284910(Item_GObj*);
void it_80284974(Item_GObj*);
bool it_802849B8(Item_GObj*);
void it_802849C0(Item_GObj*);
bool it_802849C4(Item_GObj*);
void it_802849F0(Item_GObj*);
bool it_80284A2C(Item_GObj*);
void it_80284A34(Item_GObj*);
bool it_80284A80(Item_GObj*);
void it_80284AAC(Item_GObj*);
bool it_80284B1C(Item_GObj*);
void it_80284B24(Item_GObj*);
bool it_80284B28(Item_GObj*);
void it_80284B30(Item_GObj*);
void it_80284BA0(Item_GObj*);
void it_80284C10(Item_GObj*);
bool it_80284C38(Item_GObj*);
void it_80284C40(Item_GObj*);
bool it_80284C44(Item_GObj*);
bool it_80284C78(Item_GObj*);
bool it_80284CAC(Item_GObj*);
bool it_80284CCC(Item_GObj*);
bool it_80284CF0(Item_GObj*);
bool it_80284D14(Item_GObj*);
void it_80284D34(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F57B0[];
#define GALE01_27D670
/* 27D670 */ void it_8027D670(Vec3* const);
/* 27D730 */ void it_8027D730(Item_GObj*);
/* 27D76C */ void it_8027D76C(Item_GObj*);
/* 27D820 */ M2C_UNK it_8027D820();
/* 27DAC8 */ M2C_UNK fn_8027DAC8();
/* 27DC74 */ M2C_UNK it_8027DC74();
/* 27DDE8 */ M2C_UNK it_8027DDE8();
/* 27DDEC */ M2C_UNK it_8027DDEC();
/* 27DE18 */ M2C_UNK it_8027DE18();
/* 27E018 */ M2C_UNK it_8027E018();
/* 27E020 */ M2C_UNK it_8027E020();
/* 27E050 */ M2C_UNK it_8027E050();
/* 27E0B4 */ void it_8027E0B4(Item_GObj*);
/* 27E3E4 */ M2C_UNK it_8027E3E4();
/* 27E644 */ M2C_UNK it_8027E644();
/* 27E648 */ void it_8027E648(Item_GObj*);
/* 27E978 */ M2C_UNK it_8027E978();
/* 27EB7C */ M2C_UNK it_8027EB7C();
/* 27EDC0 */ M2C_UNK it_8027EDC0();
/* 27EDC4 */ M2C_UNK it_8027EDC4();
/* 27EE04 */ M2C_UNK it_8027EE04();
/* 27EFD0 */ M2C_UNK it_8027EFD0();
/* 27F26C */ M2C_UNK it_8027F26C();
/* 27F270 */ M2C_UNK it_8027F270();
/* 27F42C */ M2C_UNK it_8027F42C();
/* 27F5E8 */ M2C_UNK it_8027F5E8();
/* 27F89C */ M2C_UNK it_8027F89C();
/* 27F8A0 */ M2C_UNK it_8027F8A0();
/* 27F8E0 */ M2C_UNK it_8027F8E0();
/* 27FC44 */ M2C_UNK it_8027FC44();
/* 27FC78 */ M2C_UNK it_8027FC78();
/* 27FC7C */ M2C_UNK it_8027FC7C();
/* 27FCA8 */ M2C_UNK fn_8027FCA8();
/* 28000C */ M2C_UNK it_8028000C();
/* 280030 */ M2C_UNK it_80280030();
/* 28007C */ M2C_UNK fn_8028007C();
/* 280338 */ M2C_UNK it_80280338();
/* 280380 */ void it_80280380(Item_GObj*);
/* 2806CC */ M2C_UNK it_802806CC();
/* 280928 */ M2C_UNK it_80280928();
/* 280974 */ M2C_UNK fn_80280974();
/* 280B18 */ M2C_UNK it_80280B18();
/* 280B60 */ M2C_UNK it_80280B60();
/* 280DC0 */ M2C_UNK it_80280DC0();
/* 280DF0 */ int it_80280DF0(Item_GObj*);
/* 280E30 */ int it_80280E30(Item_GObj*);
/* 280E70 */ M2C_UNK it_80280E70();
/* 280E90 */ M2C_UNK it_80280E90();
/* 280E94 */ M2C_UNK it_80280E94();
/* 280E9C */ void it_80280E9C(Item_GObj*);
/* 281030 */ M2C_UNK it_80281030();
/* 281038 */ M2C_UNK it_80281038();
/* 28103C */ M2C_UNK it_8028103C();
/* 281070 */ int it_80281070(Item_GObj*);
/* 2810A4 */ int it_802810A4(Item_GObj*);
/* 2810C4 */ int it_802810C4(Item_GObj*);
/* 281104 */ int it_80281104(Item_GObj*);
/* 281144 */ void it_80281144(Item_GObj*, Item_GObj*);
/* 3F54D8 */ extern ItemStateTable it_803F54D8[];
#define GALE01_286088
/* 286088 */ HSD_GObj* it_80286088(HSD_GObj*);
/* 2861CC */ void it_802861CC(Item_GObj*);
/* 286208 */ void it_80286208(Item_GObj*);
/* 286248 */ M2C_UNK it_80286248();
/* 286340 */ M2C_UNK it_80286340();
/* 2863BC */ M2C_UNK it_802863BC();
/* 286480 */ M2C_UNK fn_80286480();
/* 2864D8 */ M2C_UNK it_802864D8();
/* 286518 */ M2C_UNK it_80286518();
/* 28651C */ M2C_UNK it_8028651C();
/* 28655C */ M2C_UNK it_8028655C();
/* 286598 */ M2C_UNK it_80286598();
/* 2865A0 */ M2C_UNK it_802865A0();
/* 286754 */ M2C_UNK it_80286754();
/* 286780 */ void it_80286780(Item_GObj*);
/* 2867A8 */ M2C_UNK it_802867A8();
/* 2867B0 */ M2C_UNK it_802867B0();
/* 2867B4 */ void it_802867B4(Item_GObj*);
/* 2867F0 */ M2C_UNK it_802867F0();
/* 28683C */ M2C_UNK it_8028683C();
/* 286964 */ void it_80286964(Item_GObj*);
/* 2869A0 */ M2C_UNK it_802869A0();
/* 286AA4 */ M2C_UNK it_80286AA4();
/* 286B74 */ M2C_UNK it_80286B74();
/* 286B94 */ M2C_UNK it_80286B94();
/* 286B98 */ M2C_UNK it_80286B98();
/* 286BA0 */ M2C_UNK it_80286BA0();
/* 286C7C */ M2C_UNK it_80286C7C();
/* 286CA8 */ M2C_UNK it_80286CA8();
/* 286CAC */ M2C_UNK it_80286CAC();
/* 286CB4 */ int it_80286CB4(Item_GObj*);
/* 286D48 */ int it_80286D48(Item_GObj*);
/* 286DDC */ int it_80286DDC(Item_GObj*);
/* 286E70 */ int it_80286E70(Item_GObj*);
/* 286F04 */ int it_80286F04(Item_GObj*);
/* 286FC8 */ void it_80286FC8(Item_GObj*);
/* 287044 */ M2C_UNK it_80287044();
/* 28704C */ M2C_UNK it_8028704C();
/* 287050 */ M2C_UNK it_80287050();
/* 287084 */ void it_80287084(Item_GObj*, Item_GObj*);
/* 2870A4 */ M2C_UNK it_802870A4();
/* 287104 */ M2C_UNK it_80287104();
/* 28710C */ M2C_UNK it_8028710C();
/* 287334 */ M2C_UNK it_80287334();
/* 28733C */ M2C_UNK it_8028733C();
/* 3F5850 */ extern ItemStateTable it_803F5850[];
#define GALE01_27CF00
/* 27CF00 */ void it_8027CF00(Item_GObj*);
/* 27CF30 */ void it_8027CF30(Item_GObj*);
/* 27CFE8 */ void it_8027CFE8(Item_GObj*);
/* 27D0B8 */ void it_8027D0B8(Item_GObj*);
/* 27D110 */ bool it_8027D110(Item_GObj*);
/* 27D118 */ void it_8027D118(Item_GObj*);
/* 27D11C */ bool it_8027D11C(Item_GObj*);
/* 27D148 */ void it_8027D148(Item_GObj*);
/* 27D170 */ bool it_8027D170(Item_GObj*);
/* 27D178 */ void it_8027D178(Item_GObj*);
/* 27D1A8 */ bool it_8027D1A8(Item_GObj*);
/* 27D1D4 */ void it_8027D1D4(Item_GObj*);
/* 27D1FC */ bool it_8027D1FC(Item_GObj*);
/* 27D204 */ void it_8027D204(Item_GObj*);
/* 27D208 */ void it_8027D208(Item_GObj*);
/* 27D230 */ void it_8027D230(Item_GObj*);
/* 27D258 */ void it_8027D258(Item_GObj*);
/* 27D2A4 */ bool it_8027D2A4(Item_GObj*);
/* 27D2DC */ void it_8027D2DC(Item_GObj*);
/* 27D30C */ bool it_8027D30C(Item_GObj*);
/* 27D32C */ void it_8027D32C(Item_GObj*);
/* 27D330 */ bool it_8027D330(Item_GObj*);
/* 27D338 */ bool it_8027D338(Item_GObj*);
/* 27D414 */ bool it_8027D414(Item_GObj*);
/* 27D450 */ void it_8027D450(Item_GObj*);
/* 27D478 */ bool it_8027D478(Item_GObj*);
/* 27D480 */ void it_8027D480(Item_GObj*);
/* 27D484 */ bool it_8027D484(Item_GObj*);
/* 27D4B8 */ bool it_8027D4B8(Item_GObj*);
/* 27D4F4 */ bool it_8027D4F4(Item_GObj*);
/* 27D530 */ bool it_8027D530(Item_GObj*);
/* 27D614 */ bool it_8027D614(Item_GObj*);
/* 27D650 */ void it_8027D650(Item_GObj*, HSD_GObj*);
/* 3F5468 */ extern ItemStateTable it_803F5468[];
#define GALE01_2D3EF8
/* 2D3EF8 */ void it_802D3EF8(Item_GObj*);
/* 2D3F4C */ void it_802D3F4C(Item_GObj*, Item_GObj*);
/* 3F80F8 */ extern ItemStateTable it_803F80F8[];
#define GALE01_2C9588
/* 2C9588 */ void it_802C9588(Item_GObj*);
/* 2C9618 */ void it_802C9618(HSD_GObj*);
/* 2C961C */ void it_802C961C(Item_GObj*, HSD_GObj*);
/* 2C963C */ void it_802C963C(HSD_GObj*);
/* 2C9670 */ void it_802C9670(Item_GObj*);
/* 2C96CC */ bool it_802C96CC(HSD_GObj*);
/* 2C9798 */ void it_802C9798(HSD_GObj*);
/* 2C9850 */ bool it_802C9850(HSD_GObj*);
/* 2C989C */ void it_802C989C(HSD_GObj*);
/* 2C98E4 */ void it_802C98E4(Item_GObj*);
/* 2C990C */ bool it_802C990C(HSD_GObj*);
/* 2C9970 */ void it_802C9970(HSD_GObj*);
/* 2C9A28 */ bool it_802C9A28(HSD_GObj*);
/* 2C9A74 */ void it_802C9A74(Item_GObj*);
/* 2C9AB4 */ bool it_802C9AB4(HSD_GObj*);
/* 2C9AD8 */ void it_802C9AD8(HSD_GObj*);
/* 2C9AF8 */ bool it_802C9AF8(HSD_GObj*);
/* 3F7A98 */ extern ItemStateTable it_803F7A98[];
#define GALE01_2C9B20
/* 2C9B20 */ void it_802C9B20(Item_GObj*);
/* 2C9C20 */ void it_802C9C20(Item_GObj*);
/* 2C9C78 */ bool it_802C9C78(Item_GObj*);
/* 2C9C80 */ void it_802C9C80(Item_GObj*, HSD_GObj*);
/* 2C9CA0 */ bool it_802C9CA0(Item_GObj*);
/* 2C9CC0 */ void it_802C9CC0(Item_GObj*);
/* 2C9CE8 */ bool it_802C9CE8(HSD_GObj*);
/* 2C9D1C */ void it_802C9D1C(HSD_GObj*);
/* 2C9D20 */ bool it_802C9D20(HSD_GObj*);
/* 3F7AC8 */ extern ItemStateTable it_803F7AC8[];
#define GALE01_2C2144
/* 2C2424 */ bool it_802C2424(Item_GObj*);
/* 2C242C */ bool it_802C242C(Item_GObj*);
/* 2C244C */ bool it_802C244C(Item_GObj*);
/* 2C2454 */ bool it_802C2454(Item_GObj*);
/* 2C245C */ bool it_802C245C(Item_GObj*);
/* 2C2464 */ bool it_802C2464(Item_GObj*);
/* 2C246C */ void it_802C246C(Item_GObj*, Item_GObj*);
/* 3F76A8 */ extern ItemStateTable it_803F76A8[];
#define GALE01_2C1590
/* 2C1590 */ Item_GObj* it_802C1590(Item_GObj*, Vec3*, enum_t,
float facing_dir);
/* 2C16F8 */ void it_802C16F8(Item_GObj*);
/* 2C17DC */ void it_802C17DC(Item_GObj*);
/* 2C17FC */ void it_802C17FC(Item_GObj*);
/* 2C1854 */ M2C_UNK it_802C1854();
/* 2C1950 */ M2C_UNK it_802C1950();
/* 2C198C */ M2C_UNK it_802C198C();
/* 2C1A14 */ M2C_UNK it_802C1A14();
/* 2C1A18 */ M2C_UNK it_802C1A18();
/* 2C1A58 */ M2C_UNK it_802C1A58();
/* 2C1A80 */ M2C_UNK it_802C1A80();
/* 2C1A88 */ M2C_UNK it_802C1A88();
/* 2C1AB8 */ M2C_UNK it_802C1AB8();
/* 2C1AE4 */ M2C_UNK it_802C1AE4();
/* 2C1B80 */ M2C_UNK it_802C1B80();
/* 2C1BB4 */ M2C_UNK it_802C1BB4();
/* 2C1C7C */ M2C_UNK it_802C1C7C();
/* 2C1D44 */ M2C_UNK fn_802C1D44();
/* 2C1D80 */ M2C_UNK it_802C1D80();
/* 2C1DB4 */ M2C_UNK it_802C1DB4();
/* 2C1E94 */ M2C_UNK it_802C1E94();
/* 2C1FC8 */ bool it_802C1FC8(Item_GObj*);
/* 2C1FD0 */ bool it_802C1FD0(Item_GObj*);
/* 2C1FF0 */ bool it_802C1FF0(Item_GObj*);
/* 2C1FF8 */ bool it_802C1FF8(Item_GObj*);
/* 2C20E4 */ bool it_802C20E4(Item_GObj*);
/* 2C20EC */ bool it_802C20EC(Item_GObj*);
/* 2C210C */ void it_802C210C(Item_GObj*, Item_GObj*);
/* 3F7668 */ extern ItemStateTable it_803F7668[];
#define GALE01_2C248C
/* 2C37BC */ void it_802C37BC(Item_GObj*);
/* 2C3AA4 */ void it_802C3AA4(Item_GObj*, Item_GObj*);
/* 3F76B8 */ extern ItemStateTable it_803F76B8[];
#define GALE01_2F13B4
/* 2F13B4 */ void it_802F13B4(HSD_GObj*, int);
/* 2F14E4 */ void it_802F14E4(Item_GObj*);
/* 2F1518 */ void it_802F1518(Item_GObj*);
/* 2F1888 */ void it_802F1888(Item_GObj*);
/* 2F18F0 */ void it_802F18F0(Item_GObj*, Item_GObj*);
/* 2F1910 */ bool it_802F1910(Item_GObj*);
/* 2F1CE0 */ void it_802F1CE0(Item_GObj*);
/* 2F1F48 */ void it_802F1F48(Item_GObj*);
/* 2F2014 */ void it_802F2014(Item_GObj*, int);
/* 2F2020 */ int it_802F2020(Item_GObj*);
/* 2F202C */ void it_802F202C(Item_GObj*);
/* 2F2094 */ Item_GObj* it_802F2094(int, Vec3*, int, int);
/* 3F93C8 */ extern ItemStateTable it_803F93C8[];
#define GALE01_2F0F6C
/* 2F0F6C */ M2C_UNK it_802F0F6C();
/* 2F1030 */ M2C_UNK it_802F1030();
/* 2F1094 */ void it_802F1094(Item_GObj*, Item_GObj*);
/* 2F10B4 */ bool it_802F10B4(Item_GObj*);
/* 2F10D8 */ bool it_802F10D8(Item_GObj*);
/* 2F10F8 */ M2C_UNK it_802F10F8();
/* 2F1168 */ M2C_UNK it_802F1168();
/* 2F1170 */ M2C_UNK it_802F1170();
/* 2F1304 */ M2C_UNK it_802F1304();
/* 2F1340 */ M2C_UNK it_802F1340();
/* 2F1344 */ M2C_UNK it_802F1344();
/* 2F1384 */ M2C_UNK it_802F1384();
/* 2F13A4 */ M2C_UNK it_802F13A4();
/* 2F13A8 */ M2C_UNK it_802F13A8();
/* 2F13B0 */ M2C_UNK it_802F13B0();
/* 3F93A8 */ extern ItemStateTable it_803F93A8[];
#define GALE01_293A08
void it_80293A08(Item_GObj*);
void it_80293A70(Item_GObj*);
bool it_80293AE0(Item_GObj*);
void it_80293AE8(Item_GObj*);
bool it_80293B24(Item_GObj*);
void it_80293BE8(Item_GObj*);
void it_80293C10(Item_GObj*);
bool it_80293C38(Item_GObj*);
void it_80293C40(Item_GObj*);
bool it_80293CF0(Item_GObj*);
bool it_80293D6C(Item_GObj*);
void it_80293D74(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F6130[];
#define GALE01_281164
/* 281164 */ void it_80281164(Item_GObj*);
/* 281390 */ M2C_UNK fn_80281390();
/* 2813F8 */ M2C_UNK it_802813F8();
/* 2816F0 */ M2C_UNK it_802816F0();
/* 2816F4 */ M2C_UNK it_802816F4();
/* 281734 */ M2C_UNK fn_80281734();
/* 2817A0 */ M2C_UNK it_802817A0();
/* 281AB4 */ M2C_UNK it_80281AB4();
/* 281B44 */ M2C_UNK it_80281B44();
/* 281B7C */ M2C_UNK it_80281B7C();
/* 281C6C */ M2C_UNK it_80281C6C();
/* 281D00 */ M2C_UNK it_80281D00();
/* 281E30 */ M2C_UNK it_80281E30();
/* 281E34 */ M2C_UNK it_80281E34();
/* 282074 */ M2C_UNK it_80282074();
/* 2820CC */ M2C_UNK it_802820CC();
/* 282130 */ M2C_UNK it_80282130();
/* 282160 */ M2C_UNK it_80282160();
/* 28218C */ void it_8028218C(Item_GObj*);
/* 2824B8 */ M2C_UNK it_802824B8();
/* 2826F4 */ M2C_UNK it_802826F4();
/* 2826F8 */ void it_802826F8(Item_GObj*);
/* 2829FC */ void it_802829FC(Item_GObj*);
/* 282AC0 */ M2C_UNK it_80282AC0();
/* 282AC8 */ M2C_UNK it_80282AC8();
/* 282B14 */ void it_80282B14(Item_GObj*);
/* 282B84 */ M2C_UNK it_80282B84();
/* 282BA8 */ M2C_UNK it_80282BA8();
/* 282BAC */ M2C_UNK it_80282BAC();
/* 282BFC */ M2C_UNK it_80282BFC();
/* 282C54 */ M2C_UNK it_80282C54();
/* 282C78 */ M2C_UNK it_80282C78();
/* 282CA8 */ M2C_UNK it_80282CA8();
/* 282CD4 */ M2C_UNK fn_80282CD4();
/* 282D48 */ M2C_UNK it_80282D48();
/* 282DA0 */ M2C_UNK it_80282DA0();
/* 282DA4 */ M2C_UNK it_80282DA4();
/* 282DE4 */ M2C_UNK it_80282DE4();
/* 2830F4 */ M2C_UNK it_802830F4();
/* 2832A8 */ M2C_UNK it_802832A8();
/* 2832AC */ M2C_UNK it_802832AC();
/* 283504 */ M2C_UNK it_80283504();
/* 283550 */ M2C_UNK it_80283550();
/* 283554 */ M2C_UNK it_80283554();
/* 283588 */ int it_80283588(Item_GObj*);
/* 2838FC */ M2C_UNK it_802838FC();
/* 283960 */ M2C_UNK it_80283960();
/* 283990 */ M2C_UNK it_80283990();
/* 2839BC */ int it_802839BC(Item_GObj*);
/* 283A3C */ int it_80283A3C(Item_GObj*);
/* 283A5C */ int it_80283A5C(Item_GObj*);
/* 283A80 */ int it_80283A80(Item_GObj*);
/* 283AA4 */ int it_80283AA4(Item_GObj*);
/* 283AC4 */ void it_80283AC4(Item_GObj*, Item_GObj*);
/* 3F55D0 */ extern ItemStateTable it_803F55D0[];
#define GALE01_2C0510
/* 2C09C4 */ Item_GObj* it_802C09C4(Fighter_GObj* owner, Vec3* pos, int,
enum_t, bool, bool, float facing_dir);
/* 2C11E0 */ void it_802C11E0(Item_GObj*);
/* 2C1384 */ bool it_802C1384(Item_GObj*);
/* 2C13CC */ bool it_802C13CC(Item_GObj*);
/* 2C1400 */ bool it_802C1400(Item_GObj*);
/* 2C145C */ bool it_802C145C(Item_GObj*);
/* 2C14B8 */ bool it_802C14B8(Item_GObj*);
/* 2C1514 */ bool it_802C1514(Item_GObj*);
/* 2C1570 */ void it_802C1570(Item_GObj*, Item_GObj*);
/* 3F75D0 */ extern ItemStateTable it_803F75D0[];
#define GALE01_288C88
/* 288C88 */ Item_GObj* it_80288C88(HSD_GObj* arg_gobj, Vec3* pos, Vec3* vel,
float dir);
/* 288D98 */ void it_80288D98(Item_GObj*);
/* 288F88 */ void it_80288F88(Item_GObj*);
/* 288FBC */ void it_80288FBC(Item_GObj*);
/* 288FDC */ void it_80288FDC(Item_GObj*);
/* 289218 */ bool it_80289218(Item_GObj*);
/* 2893D4 */ bool it_802893D4(Item_GObj*);
/* 289470 */ bool it_80289470(Item_GObj*);
/* 28950C */ bool it_8028950C(Item_GObj*);
/* 2895A8 */ bool it_802895A8(Item_GObj*);
/* 289644 */ void it_80289644(Item_GObj*);
/* 2896AC */ void it_802896AC(Item_GObj*, Item_GObj*);
/* 3F5988 */ extern ItemStateTable it_803F5988[];
#define GALE01_2CF3E0
void it_802CF3E0(Item_GObj*);
void it_802CF44C(Item_GObj*);
void it_802CF450(Item_GObj*, Item_GObj*);
void it_802CF470(Item_GObj*);
void it_802CF4D4(Item_GObj*);
bool it_802CF544(Item_GObj*);
void it_802CF640(Item_GObj*);
bool it_802CF67C(Item_GObj*);
void it_802CF6C8(Item_GObj*);
void it_802CF744(Item_GObj*);
bool it_802CF7A8(Item_GObj*);
void it_802CF7CC(Item_GObj*);
bool it_802CF7EC(Item_GObj*);
extern ItemStateTable it_803F7DC8[];
#define GALE01_29B0C8
/* 29B0C8 */ M2C_UNK it_8029B0C8();
/* 29B188 */ void it_8029B188(Item_GObj*);
/* 29B1AC */ void it_8029B1AC(Item_GObj*);
/* 29B1D8 */ M2C_UNK it_8029B1D8();
/* 29B230 */ M2C_UNK it_8029B230();
/* 29B238 */ M2C_UNK it_8029B238();
/* 29B23C */ M2C_UNK it_8029B23C();
/* 29B268 */ M2C_UNK it_8029B268();
/* 29B290 */ M2C_UNK it_8029B290();
/* 29B298 */ M2C_UNK it_8029B298();
/* 29B2C8 */ M2C_UNK it_8029B2C8();
/* 29B2F4 */ void it_8029B2F4(Item_GObj*);
/* 29B31C */ M2C_UNK it_8029B31C();
/* 29B324 */ M2C_UNK it_8029B324();
/* 29B328 */ void it_8029B328(Item_GObj*);
/* 29B348 */ void it_8029B348(Item_GObj*);
/* 29B370 */ M2C_UNK it_8029B370();
/* 29B3BC */ M2C_UNK it_8029B3BC();
/* 29B400 */ M2C_UNK it_8029B400();
/* 29B460 */ M2C_UNK it_8029B460();
/* 29B464 */ M2C_UNK it_8029B464();
/* 29B46C */ bool it_8029B46C(Item_GObj*);
/* 29B4AC */ bool it_8029B4AC(Item_GObj*);
/* 29B4EC */ bool it_8029B4EC(Item_GObj*);
/* 29B52C */ bool it_8029B52C(Item_GObj*);
/* 29B56C */ bool it_8029B56C(Item_GObj*);
/* 29B670 */ void it_8029B670(Item_GObj*);
/* 29B698 */ M2C_UNK it_8029B698();
/* 29B6A0 */ M2C_UNK it_8029B6A0();
/* 29B6A4 */ M2C_UNK it_8029B6A4();
/* 29B6D8 */ void it_8029B6D8(Item_GObj*, Item_GObj*);
/* 3F6728 */ extern ItemStateTable it_803F6728[];
#define GALE01_292D48
/* 292D48 */ Item_GObj* it_80292D48(Vec3*);
/* 292E04 */ void it_80292E04(Item_GObj*);
/* 292E64 */ void it_80292E64(Item_GObj*);
/* 292EAC */ void it_80292EAC(Item_GObj*);
/* 292EF8 */ void it_80292EF8(Item_GObj*, Vec3*);
/* 292F14 */ void it_80292F14(Item_GObj*, Vec3*, f32);
/* 293284 */ void it_80293284(Item_GObj*);
/* 2933C4 */ void it_802933C4(Item_GObj*);
/* 2933EC */ void it_802933EC(Item_GObj*);
/* 293488 */ bool it_80293488(Item_GObj*);
/* 2934AC */ bool it_802934AC(Item_GObj*);
/* 2934D0 */ bool it_802934D0(Item_GObj*);
/* 2934F4 */ bool it_802934F4(Item_GObj*);
/* 293514 */ bool it_80293514(Item_GObj*);
/* 293534 */ void it_80293534(Item_GObj*);
/* 293640 */ void it_80293640(Item_GObj*, Item_GObj*);
/* 3F6090 */ extern ItemStateTable it_803F6090[];
#define GALE01_29A748
/* 29A748 */ HSD_GObj* it_8029A748(Item_GObj*, Vec3*, Fighter_Part, f32);
/* 29A89C */ void it_8029A89C(Item_GObj*, f32);
/* 29A8F4 */ void it_8029A8F4(Item_GObj*, Vec3*);
/* 29A9FC */ void it_8029A9FC(Item_GObj*);
/* 29AD1C */ void it_8029AD1C(Item_GObj*);
/* 29AD94 */ void it_8029AD94(Item_GObj*);
/* 29AF34 */ void it_8029AF34(Item_GObj*);
/* 29B0A8 */ void it_8029B0A8(Item_GObj*, Item_GObj*);
/* 3F66C8 */ extern ItemStateTable it_803F66C8[];
#define GALE01_2CC6E4
/* 2CC6E4 */ void it_802CC6E4(Item_GObj*);
/* 2CC740 */ M2C_UNK it_802CC740();
/* 2CC744 */ void it_802CC744(Item_GObj*, Item_GObj*);
/* 2CC764 */ M2C_UNK it_802CC764();
/* 2CC7A4 */ M2C_UNK it_802CC7A4();
/* 2CC7A8 */ M2C_UNK it_802CC7A8();
/* 2CC7D4 */ M2C_UNK it_802CC7D4();
/* 2CC7D8 */ M2C_UNK it_802CC7D8();
/* 2CC860 */ M2C_UNK it_802CC860();
/* 2CC91C */ M2C_UNK it_802CC91C();
/* 2CC93C */ M2C_UNK it_802CC93C();
/* 2CC944 */ M2C_UNK it_802CC944();
/* 2CC9B8 */ M2C_UNK it_802CC9B8();
/* 2CC9DC */ M2C_UNK it_802CC9DC();
/* 2CCA8C */ M2C_UNK it_802CCA8C();
/* 3F7C10 */ extern ItemStateTable it_803F7C10[];
#define GALE01_290938
/* 290938 */ HSD_GObj* it_80290938(HSD_JObj*);
/* 290A20 */ void it_80290A20(Item_GObj*);
/* 290A7C */ M2C_UNK it_80290A7C();
/* 290C38 */ M2C_UNK it_80290C38();
/* 290CE8 */ M2C_UNK it_80290CE8();
/* 290DD4 */ M2C_UNK it_80290DD4();
/* 290E78 */ M2C_UNK it_80290E78();
/* 290EC8 */ M2C_UNK it_80290EC8();
/* 290ED0 */ M2C_UNK it_80290ED0();
/* 290ED4 */ M2C_UNK it_80290ED4();
/* 290F00 */ M2C_UNK it_80290F00();
/* 290F28 */ M2C_UNK it_80290F28();
/* 290F30 */ M2C_UNK it_80290F30();
/* 290F60 */ M2C_UNK it_80290F60();
/* 290F8C */ void it_80290F8C(Item_GObj*);
/* 290FB4 */ M2C_UNK it_80290FB4();
/* 290FBC */ M2C_UNK it_80290FBC();
/* 290FC0 */ void it_80290FC0(Item_GObj*);
/* 290FE0 */ void it_80290FE0(Item_GObj*);
/* 291068 */ M2C_UNK it_80291068();
/* 2910A8 */ M2C_UNK it_802910A8();
/* 291188 */ M2C_UNK it_80291188();
/* 291254 */ M2C_UNK it_80291254();
/* 29131C */ M2C_UNK it_8029131C();
/* 291344 */ M2C_UNK it_80291344();
/* 2914C8 */ M2C_UNK it_802914C8();
/* 29151C */ M2C_UNK it_8029151C();
/* 291570 */ M2C_UNK it_80291570();
/* 2915B4 */ M2C_UNK it_802915B4();
/* 2915E8 */ bool it_802915E8(Item_GObj*);
/* 2917C8 */ bool it_802917C8(Item_GObj*);
/* 2918A0 */ bool it_802918A0(Item_GObj*);
/* 291978 */ bool it_80291978(Item_GObj*);
/* 291998 */ bool it_80291998(Item_GObj*);
/* 2919B8 */ bool it_802919B8(Item_GObj*);
/* 291B58 */ void it_80291B58(Item_GObj*);
/* 291B80 */ M2C_UNK it_80291B80();
/* 291B88 */ M2C_UNK it_80291B88();
/* 291B8C */ M2C_UNK it_80291B8C();
/* 291BC0 */ void it_80291BC0(Item_GObj*, Item_GObj*);
/* 3F5EA8 */ extern ItemStateTable it_803F5EA8[];
#define GALE01_28F9D8
/* 28F9D8 */ void it_8028F9D8(Item_GObj* arg0, Vec3* arg1, f32 arg8);
/* 28FAF4 */ HSD_GObj* it_8028FAF4(Item_GObj* arg0, Vec3* arg1);
/* 28FBE4 */ void it_8028FBE4(Item_GObj* arg0);
/* 28FC5C */ void it_8028FC5C(HSD_GObj* arg0);
/* 28FD7C */ void it_8028FD7C(Item_GObj* arg0);
/* 28FDE4 */ void it_8028FDE4(Item_GObj* arg0);
/* 28FE70 */ void it_8028FE70(Item_GObj* arg0, Item_GObj* arg1);
/* 3F5DB0 */ extern ItemStateTable it_803F5DB0[];
#define GALE01_2ADDD0
/* 2AE994 */ Item_GObj* it_802AE994(Fighter_GObj*, Fighter_Part, ItemKind);
/* 2AEB00 */ void it_802AEB00(Item_GObj*);
/* 2AF184 */ void it_802AF184(Item_GObj*, HSD_GObj*);
/* 3F6CA8 */ extern ItemStateTable it_803F6CA8[];
#define GALE01_29CD18
/* 29CD18 */ void it_8029CD18(HSD_GObj*, int);
/* 29CD78 */ HSD_JObj* it_8029CD78(Item_GObj*);
/* 29CEB4 */ Item_GObj* it_8029CEB4(HSD_GObj*, Vec3*, ItemKind, f32);
/* 29CF8C */ bool it_8029CF8C(Item_GObj*);
/* 29CFA0 */ void it_8029CFA0(Item_GObj*);
/* 29CFF0 */ void it_8029CFF0(Item_GObj*);
/* 29D094 */ bool it_8029D094(Item_GObj*);
/* 29D24C */ void it_8029D24C(Item_GObj*);
/* 29D488 */ bool it_8029D488(Item_GObj*);
/* 29D490 */ bool it_8029D490(Item_GObj*);
/* 29D554 */ void it_8029D554(Item_GObj*);
/* 29D790 */ bool it_8029D790(Item_GObj*);
/* 29D798 */ void it_8029D798(Item_GObj*);
/* 29D7EC */ bool it_8029D7EC(Item_GObj*);
/* 29D870 */ void it_8029D870(Item_GObj*);
/* 29D940 */ bool it_8029D940(Item_GObj*);
/* 29D948 */ void it_8029D948(Item_GObj*, HSD_GObj*);
/* 3F6818 */ extern ItemStateTable it_803F6818[];
#define GALE01_29C4D4
/* 29C4D4 */ bool it_8029C4D4(Item_GObj*, CollData*);
/* 29C504 */ void it_8029C504(HSD_GObj* parent, Vec3* pos, enum_t msid,
int kind, f32 angle, f32 speed);
/* 29C6A4 */ void it_8029C6A4(f32 angle, f32 vel, HSD_GObj* parent, Vec3* vec,
int kind);
/* 29C6CC */ void it_8029C6CC(f32 angle, f32 vel, HSD_GObj* parent, Vec3* vec,
int kind);
/* 29C6F4 */ bool it_8029C6F4(Item_GObj*);
/* 29C9CC */ void it_8029C9CC(Item_GObj*);
/* 29C9EC */ bool it_8029C9EC(Item_GObj*);
/* 29CA78 */ bool it_8029CA78(Item_GObj*);
/* 29CA80 */ bool it_8029CA80(Item_GObj*);
/* 29CC4C */ bool it_8029CC4C(Item_GObj*);
/* 29CC54 */ bool it_8029CC54(Item_GObj*);
/* 29CCF0 */ bool it_8029CCF0(Item_GObj*);
/* 29CCF8 */ void it_8029CCF8(Item_GObj*, HSD_GObj*);
/* 3F67D0 */ extern ItemStateTable it_803F67D0[];
#define GALE01_28EB88
/* 28EB88 */ M2C_UNK it_8028EB88();
/* 28EC98 */ M2C_UNK it_8028EC98();
/* 28ECE0 */ void it_8028ECE0(Item_GObj* gobj);
/* 28ECF0 */ M2C_UNK it_8028ECF0();
/* 28ED10 */ void it_8028ED10(Item_GObj*);
/* 28ED50 */ void it_8028ED50(Item_GObj*);
/* 28EDBC */ M2C_UNK it_8028EDBC();
/* 28EF34 */ M2C_UNK it_8028EF34();
/* 28EF88 */ bool it_8028EF88(void);
/* 28EF90 */ M2C_UNK it_8028EF90();
/* 28EFB0 */ M2C_UNK it_8028EFB0();
/* 28F1D8 */ M2C_UNK it_8028F1D8();
/* 28F200 */ bool it_8028F200(void);
/* 28F208 */ M2C_UNK it_8028F208();
/* 28F238 */ M2C_UNK it_8028F238();
/* 28F2B4 */ void it_8028F2B4(Item_GObj*);
/* 28F310 */ bool it_8028F310(void);
/* 28F318 */ void it_8028F318(Item_GObj*);
/* 28F340 */ void it_8028F340(Item_GObj*);
/* 28F368 */ M2C_UNK it_8028F368();
/* 28F398 */ M2C_UNK it_8028F398();
/* 28F3CC */ bool it_8028F3CC(Item_GObj*);
/* 28F3D4 */ bool it_8028F3D4(Item_GObj*);
/* 28F3DC */ bool it_8028F3DC(Item_GObj*);
/* 28F3E4 */ bool it_8028F3E4(Item_GObj*);
/* 28F3EC */ bool it_8028F3EC(Item_GObj*);
/* 28F40C */ bool it_8028F40C(Item_GObj*);
/* 28F42C */ bool it_8028F42C(Item_GObj*);
/* 28F434 */ M2C_UNK it_8028F434();
/* 28F4AC */ bool it_8028F4AC(void);
/* 28F4B4 */ M2C_UNK it_8028F4B4();
/* 28F560 */ M2C_UNK it_8028F560();
/* 28F7C8 */ M2C_UNK it_8028F7C8();
/* 28F828 */ bool it_8028F828(void);
/* 28F830 */ M2C_UNK it_8028F830();
/* 28F834 */ M2C_UNK it_8028F834();
/* 28F8C4 */ void it_8028F8C4(Item_GObj*, Item_GObj*);
/* 28F8E4 */ void it_8028F8E4(Item_GObj*);
/* 28F968 */ void it_8028F968(Item_GObj*);
/* 28F9B8 */ void it_8028F9B8(Item_GObj*);
/* 3F5D28 */ extern ItemStateTable it_803F5D28[];
#define GALE01_2CCF9C
/* 2CCF9C */ void it_802CCF9C(Item_GObj*);
/* 2CCFFC */ M2C_UNK it_802CCFFC();
/* 2CD000 */ void it_802CD000(Item_GObj*, Item_GObj*);
/* 2CD020 */ M2C_UNK it_802CD020();
/* 2CD060 */ M2C_UNK it_802CD060();
/* 2CD064 */ M2C_UNK it_802CD064();
/* 2CD090 */ M2C_UNK it_802CD090();
/* 2CD12C */ M2C_UNK it_802CD12C();
/* 2CD18C */ M2C_UNK it_802CD18C();
/* 2CD230 */ M2C_UNK it_802CD230();
/* 2CD288 */ M2C_UNK it_802CD288();
/* 2CD290 */ M2C_UNK it_802CD290();
/* 2CD2EC */ M2C_UNK it_802CD2EC();
/* 2CD360 */ M2C_UNK it_802CD360();
/* 2CD384 */ M2C_UNK it_802CD384();
/* 2CD424 */ M2C_UNK it_802CD424();
/* 3F7C70 */ extern ItemStateTable it_803F7C70[];
#define GALE01_2D6FD0
/* 2D6FD0 */ void it_802D6FD0(Item_GObj*);
/* 2D705C */ M2C_UNK it_802D705C();
/* 2D70A4 */ M2C_UNK it_802D70A4();
/* 2D7120 */ M2C_UNK it_802D7120();
/* 2D7144 */ M2C_UNK it_802D7144();
/* 2D7164 */ M2C_UNK it_802D7164();
/* 2D718C */ M2C_UNK it_802D718C();
/* 2D71E8 */ M2C_UNK it_802D71E8();
/* 2D72E4 */ M2C_UNK it_802D72E4();
/* 2D72E8 */ M2C_UNK it_802D72E8();
/* 2D7328 */ M2C_UNK it_802D7328();
/* 2D736C */ M2C_UNK it_802D736C();
/* 2D7374 */ M2C_UNK it_802D7374();
/* 2D73A4 */ M2C_UNK it_802D73A4();
/* 3F82F0 */ extern ItemStateTable it_803F82F0[];
#define GALE01_2C720C
/* 2C7310 */ void it_802C7310(Item_GObj*);
/* 2C73CC */ void it_802C73CC(Item_GObj*);
/* 2C74B8 */ void it_802C74B8(Item_GObj*, Item_GObj*);
/* 3F7938 */ extern ItemStateTable it_803F7938[];
#define GALE01_2C837C
/* 2C837C */ HSD_GObj* it_802C837C(Item_GObj*, Vec3*, enum_t, u32, float);
/* 2C847C */ bool it_802C847C(Item_GObj*);
/* 2C84A0 */ M2C_UNK it_802C84A0();
/* 2C8540 */ M2C_UNK it_802C8540();
/* 2C8690 */ M2C_UNK it_802C8690();
/* 2C86D0 */ M2C_UNK it_802C86D0();
/* 2C875C */ M2C_UNK it_802C875C();
/* 2C87B4 */ M2C_UNK it_802C87B4();
/* 2C8828 */ M2C_UNK it_802C8828();
/* 2C882C */ M2C_UNK it_802C882C();
/* 2C88E4 */ bool it_802C88E4(Item_GObj*);
/* 2C8940 */ bool it_802C8940(Item_GObj*);
/* 2C899C */ bool it_802C899C(Item_GObj*);
/* 2C8A08 */ bool it_802C8A08(Item_GObj*);
/* 2C8A28 */ bool it_802C8A28(Item_GObj*);
/* 2C8B08 */ void it_802C8B08(Item_GObj*, Item_GObj*);
/* 3F79E0 */ extern ItemStateTable it_803F79E0[];
#define GALE01_2C68F8
/* 2C69FC */ void it_802C69FC(Item_GObj*);
/* 2C6AB8 */ void it_802C6AB8(Item_GObj*);
/* 2C6C18 */ void it_802C6C18(Item_GObj*, Item_GObj*);
/* 3F78E8 */ extern ItemStateTable it_803F78E8[];
#define GALE01_2C61F4
/* 2C62F8 */ void it_802C62F8(Item_GObj*);
/* 2C63B4 */ void it_802C63B4(Item_GObj*);
/* 2C65C4 */ void it_802C65C4(Item_GObj*, Item_GObj*);
/* 3F7898 */ extern ItemStateTable it_803F7898[];
#define GALE01_2C7774
/* 2C7A54 */ void it_802C7A54(Item_GObj*);
/* 2C7B10 */ void it_802C7B10(Item_GObj*);
/* 2C7D40 */ void it_802C7D40(Item_GObj*, Item_GObj*);
/* 3F7968 */ extern ItemStateTable it_803F7968[];
#define GALE01_2C65E4
/* 2C66E8 */ void it_802C66E8(Item_GObj*);
/* 2C67A4 */ void it_802C67A4(Item_GObj*);
/* 2C68D8 */ void it_802C68D8(Item_GObj*, Item_GObj*);
/* 3F78D8 */ extern ItemStateTable it_803F78D8[];
#define GALE01_2C7D60
/* 2C7D60 */ HSD_GObj* it_802C7D60(Item_GObj*, Vec3*, Fighter_Part, f32);
/* 2C7E64 */ void it_802C7E64(Item_GObj*);
/* 2C7E94 */ void it_802C7E94(Item_GObj*);
/* 2C7EE0 */ void it_802C7EE0(Item_GObj*);
/* 2C7F00 */ void it_802C7F00(Item_GObj*);
/* 2C7F20 */ void it_802C7F20(Item_GObj*);
/* 2C8018 */ void it_802C8018(Item_GObj*, Item_GObj*);
/* 3F79A0 */ extern ItemStateTable it_803F79A0[];
#define GALE01_2C6C38
/* 2C6D3C */ void it_802C6D3C(Item_GObj*);
/* 2C6DF8 */ void it_802C6DF8(Item_GObj*);
/* 2C6F20 */ void it_802C6F20(Item_GObj*, Item_GObj*);
/* 3F78F8 */ extern ItemStateTable it_803F78F8[];
#define GALE01_2C8038
/* 2C8038 */ HSD_GObj* it_802C8038(Item_GObj*, Vec3*, s32, s32, float, float);
/* 2C8158 */ void it_802C8158(Item_GObj*);
/* 2C81C8 */ void it_802C81C8(Item_GObj*);
/* 2C81E8 */ void it_802C81E8(Item_GObj*);
/* 2C8208 */ M2C_UNK it_802C8208();
/* 2C8240 */ M2C_UNK it_802C8240();
/* 2C8350 */ M2C_UNK it_802C8350();
/* 2C8354 */ M2C_UNK it_802C8354();
/* 2C835C */ void it_802C835C(Item_GObj*, Item_GObj*);
/* 3F79C0 */ extern ItemStateTable it_803F79C0[];
#define GALE01_2C6F40
extern ItemStateTable it_803F7918[];
Item_GObj* it_802C6F40(HSD_GObj* parent, Vec3* pos, Fighter_Part arg2,
f32 dir);
void it_802C7044(Item_GObj* item_gobj);
void it_802C7074(Item_GObj* item_gobj);
void it_802C70C0(Item_GObj*);
void it_802C70E0(Item_GObj*);
void it_802C7100(Item_GObj* item_gobj);
void it_802C7158(HSD_GObj* arg0);
bool it_802C7180(Item_GObj* item_gobj);
void it_802C71EC(HSD_GObj*, HSD_GObj*);
#define GALE01_2EAF28
/* 2EAF28 */ M2C_UNK it_802EAF28(Item_GObj* gobj);
/* 2EAF34 */ M2C_UNK it_802EAF34();
/* 2EB1EC */ void it_802EB1EC(Item_GObj*);
/* 2EB268 */ M2C_UNK it_802EB268();
/* 2EB2C0 */ M2C_UNK it_802EB2C0();
/* 2EB3C0 */ M2C_UNK it_802EB3C0();
/* 2EB444 */ bool it_802EB444(Item_GObj*);
/* 2EB44C */ bool it_802EB44C(Item_GObj*);
/* 2EB454 */ bool it_802EB454(Item_GObj*);
/* 2EB45C */ bool it_802EB45C(Item_GObj*);
/* 2EB5A8 */ void it_802EB5A8(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F8FD0[];
#define GALE01_28B8D8
/* 28B8D8 */ M2C_UNK it_8028B8D8();
/* 28B988 */ M2C_UNK it_8028B988();
/* 28BA2C */ M2C_UNK it_8028BA2C();
/* 28BAD8 */ M2C_UNK it_8028BAD8();
/* 28BC2C */ M2C_UNK it_8028BC2C();
/* 28BDAC */ void it_8028BDAC(Item_GObj*);
/* 28BE54 */ M2C_UNK it_8028BE54();
/* 28BEE8 */ M2C_UNK it_8028BEE8();
/* 28BEF0 */ M2C_UNK it_8028BEF0();
/* 28BEF4 */ M2C_UNK it_8028BEF4();
/* 28C018 */ M2C_UNK it_8028C018();
/* 28C054 */ M2C_UNK it_8028C054();
/* 28C0D0 */ M2C_UNK it_8028C0D0();
/* 28C100 */ M2C_UNK it_8028C100();
/* 28C148 */ void it_8028C148(Item_GObj*);
/* 28C1A0 */ M2C_UNK it_8028C1A0();
/* 28C1A8 */ M2C_UNK it_8028C1A8();
/* 28C1AC */ void it_8028C1AC(Item_GObj*);
/* 28C1FC */ M2C_UNK it_8028C1FC();
/* 28C2A4 */ M2C_UNK it_8028C2A4();
/* 28C2D4 */ M2C_UNK it_8028C2D4();
/* 28C300 */ void it_8028C300(Item_GObj*);
/* 28C328 */ M2C_UNK it_8028C328();
/* 28C34C */ M2C_UNK it_8028C34C();
/* 28C37C */ M2C_UNK it_8028C37C();
/* 28C3A8 */ M2C_UNK it_8028C3A8();
/* 28C52C */ M2C_UNK it_8028C52C();
/* 28C6E4 */ M2C_UNK it_8028C6E4();
/* 28C75C */ M2C_UNK it_8028C75C();
/* 28C898 */ M2C_UNK it_8028C898();
/* 28CA14 */ M2C_UNK it_8028CA14();
/* 28CAC8 */ M2C_UNK it_8028CAC8();
/* 28CAF8 */ M2C_UNK it_8028CAF8();
/* 28CB24 */ void it_8028CB24(Item_GObj*);
/* 28CB70 */ M2C_UNK it_8028CB70();
/* 28CB78 */ M2C_UNK it_8028CB78();
/* 28CB7C */ M2C_UNK it_8028CB7C();
/* 28CCA8 */ bool it_8028CCA8(Item_GObj*);
/* 28CCCC */ bool it_8028CCCC(Item_GObj*);
/* 28CD04 */ bool it_8028CD04(Item_GObj*);
/* 28CD3C */ bool it_8028CD3C(Item_GObj*);
/* 28CE1C */ bool it_8028CE1C(Item_GObj*);
/* 28CF2C */ bool it_8028CF2C(Item_GObj*);
/* 28CF68 */ M2C_UNK it_8028CF68();
/* 28CFC0 */ void it_8028CFC0(Item_GObj*, Item_GObj*);
/* 3F5BA8 */ extern ItemStateTable it_803F5BA8[];
#define GALE01_293D94
/* 293D94 */ void it_80293D94(Item_GObj* gobj);
/* 293DCC */ int it_80293DCC(Item_GObj* gobj);
/* 293E34 */ void it_80293E34(Item_GObj* gobj);
/* 293F58 */ void it_80293F58(HSD_GObj* gobj);
/* 293F84 */ void it_80293F84(Item_GObj* gobj);
/* 2940FC */ void it_802940FC(HSD_GObj* gobj);
/* 2941F8 */ void it_802941F8(HSD_GObj* gobj);
/* 2942B0 */ void it_802942B0(HSD_GObj* gobj);
/* 294344 */ void it_80294344(Item_GObj* gobj, HSD_GObj* gobj2);
/* 3F6150 */ extern ItemStateTable it_803F6150[];
#define GALE01_299C48
/* 299C48 */ void it_80299C48(HSD_GObj*, Vec3*, Vec3*, f32);
/* 299D4C */ void it_80299D4C(Item_GObj*);
/* 299D7C */ M2C_UNK it_80299D7C();
/* 299DD0 */ void it_80299DD0(Item_GObj*);
/* 299E1C */ M2C_UNK it_80299E1C();
/* 299E24 */ M2C_UNK it_80299E24();
/* 299E28 */ void it_80299E28(Item_GObj*);
/* 299E48 */ void it_80299E48(Item_GObj*);
/* 299E9C */ M2C_UNK it_80299E9C();
/* 299F1C */ M2C_UNK it_80299F1C();
/* 299F68 */ M2C_UNK it_80299F68();
/* 299F94 */ M2C_UNK it_80299F94();
/* 299FB4 */ M2C_UNK it_80299FB4();
/* 29A000 */ M2C_UNK it_8029A000();
/* 29A080 */ M2C_UNK it_8029A080();
/* 29A084 */ M2C_UNK it_8029A084();
/* 29A0B0 */ bool it_8029A0B0(Item_GObj*);
/* 29A0B8 */ bool it_8029A0B8(Item_GObj*);
/* 29A0C0 */ bool it_8029A0C0(Item_GObj*);
/* 29A0C8 */ bool it_8029A0C8(Item_GObj*);
/* 29A0EC */ bool it_8029A0EC(Item_GObj*);
/* 29A0F4 */ void it_8029A0F4(Item_GObj*, Item_GObj*);
/* 3F6640 */ extern ItemStateTable it_803F6640[];
#define GALE01_2927E8
/* 2927E8 */ M2C_UNK it_802927E8();
/* 29282C */ M2C_UNK it_8029282C();
/* 29285C */ void it_8029285C(Item_GObj*);
/* 29287C */ M2C_UNK it_8029287C();
/* 2928D4 */ M2C_UNK it_802928D4();
/* 2928DC */ M2C_UNK it_802928DC();
/* 2928E0 */ M2C_UNK it_802928E0();
/* 29290C */ M2C_UNK it_8029290C();
/* 292934 */ M2C_UNK it_80292934();
/* 29293C */ M2C_UNK it_8029293C();
/* 29296C */ M2C_UNK it_8029296C();
/* 292998 */ M2C_UNK it_80292998();
/* 2929C8 */ M2C_UNK it_802929C8();
/* 2929F8 */ M2C_UNK it_802929F8();
/* 292A28 */ M2C_UNK it_80292A28();
/* 292A5C */ void it_80292A5C(Item_GObj*);
/* 292A84 */ M2C_UNK it_80292A84();
/* 292A8C */ M2C_UNK it_80292A8C();
/* 292A90 */ void it_80292A90(Item_GObj*);
/* 292AE8 */ M2C_UNK it_80292AE8();
/* 292B2C */ void it_80292B2C(Item_GObj*);
/* 292B54 */ M2C_UNK it_80292B54();
/* 292BA0 */ M2C_UNK it_80292BA0();
/* 292BCC */ bool it_80292BCC(Item_GObj*);
/* 292C08 */ void it_80292C08(Item_GObj*);
/* 292C30 */ M2C_UNK it_80292C30();
/* 292C38 */ M2C_UNK it_80292C38();
/* 292C3C */ M2C_UNK it_80292C3C();
/* 292C70 */ bool it_80292C70(Item_GObj*);
/* 292CAC */ bool it_80292CAC(Item_GObj*);
/* 292CCC */ bool it_80292CCC(Item_GObj*);
/* 292D08 */ bool it_80292D08(Item_GObj*);
/* 292D28 */ void it_80292D28(Item_GObj*, Item_GObj*);
/* 3F5FF0 */ extern ItemStateTable it_803F5FF0[];
#define GALE01_2CDBE0
/* 2CDBE0 */ void it_802CDBE0(Item_GObj*);
/* 2CDC60 */ void it_802CDC60(Item_GObj*, Item_GObj*);
/* 3F7CF8 */ extern ItemStateTable it_803F7CF8[];
#define GALE01_283AE4
/* 283AE4 */ Item_GObj* it_80283AE4(Item_GObj* gobj, Vec3* pos, s32 arg2);
/* 283BD4 */ void it_80283BD4(Item_GObj*);
/* 283BEC */ void it_80283BEC(Item_GObj*);
/* 283C48 */ void it_80283C48(Item_GObj*);
/* 283F28 */ void it_80283F28(Item_GObj*);
/* 28402C */ void it_8028402C(Item_GObj*);
/* 28412C */ void it_8028412C(Item_GObj*);
/* 284194 */ void it_80284194(Item_GObj*, Item_GObj*);
/* 3F56C8 */ extern ItemStateTable it_803F56C8[];
/* 2D8618 */ void it_802D8618(s32, Vec3*, s32, s32);
/* 2D8688 */ void it_802D8688(Item_GObj*);
/* 2D8EC8 */ int it_802D8EC8(Item_GObj*);
/* 2D9A0C */ void it_802D9A0C(Item_GObj*, HSD_GObj*);
/* 3F83F0 */ extern ItemStateTable it_803F83F0[];
#define GALE01_2D5CF8
/* 2D5CF8 */ void it_802D5CF8(Item_GObj*);
/* 2D6100 */ bool it_802D6100(Item_GObj*);
/* 2D61A8 */ void it_802D61A8(Item_GObj*, Item_GObj*);
/* 3F8270 */ extern ItemStateTable it_803F8270[];
/* 3F82A0 */ extern ItemStateTable it_803F82A0[];
#define GALE01_2D42C4
/* 2D42C4 */ void it_802D42C4(Item_GObj*);
/* 2D43AC */ M2C_UNK it_802D43AC();
/* 2D43B0 */ void it_802D43B0(Item_GObj*, Item_GObj*);
/* 2D43EC */ M2C_UNK it_802D43EC();
/* 2D4494 */ M2C_UNK it_802D4494();
/* 2D4510 */ M2C_UNK it_802D4510();
/* 2D4564 */ M2C_UNK it_802D4564();
/* 2D472C */ M2C_UNK it_802D472C();
/* 2D48A8 */ M2C_UNK it_802D48A8();
/* 2D48B0 */ M2C_UNK it_802D48B0();
/* 2D4990 */ M2C_UNK it_802D4990();
/* 2D49E8 */ M2C_UNK it_802D49E8();
/* 2D4B14 */ M2C_UNK it_802D4B14();
/* 2D4B48 */ M2C_UNK it_802D4B48();
/* 2D4B50 */ M2C_UNK it_802D4B50();
/* 2D4B54 */ M2C_UNK it_802D4B54();
/* 2D4BB8 */ M2C_UNK it_802D4BB8();
/* 2D4BDC */ M2C_UNK it_802D4BDC();
/* 2D4C4C */ M2C_UNK it_802D4C4C();
/* 2D4C74 */ M2C_UNK it_802D4C74();
/* 2D4DE0 */ void it_802D4DE0(Item_GObj*);
/* 2D4EF4 */ bool it_802D4EF4(Item_GObj*);
/* 2D4F08 */ bool it_802D4F08(Item_GObj*);
/* 2D4F28 */ bool it_802D4F28(Item_GObj*);
/* 2D4F48 */ bool it_802D4F48(Item_GObj*);
/* 2D4F50 */ bool it_802D4F50(Item_GObj*);
/* 2D4F58 */ void it_802D4F58(Item_GObj*, Item_GObj*);
/* 2D4F78 */ M2C_UNK it_802D4F78();
/* 2D4FFC */ M2C_UNK it_802D4FFC();
/* 2D5044 */ M2C_UNK it_802D5044();
/* 2D5048 */ M2C_UNK it_802D5048();
/* 3F8128 */ extern ItemStateTable it_803F8128[];
/* 3F8180 */ extern ItemStateTable it_803F8180[];
#define GALE01_2D251C
/* 2D251C */ void it_802D251C(Item_GObj*);
/* 2D25B8 */ M2C_UNK it_802D25B8();
/* 2D25BC */ void it_802D25BC(Item_GObj*, Item_GObj*);
/* 2D25DC */ M2C_UNK it_802D25DC();
/* 2D2640 */ M2C_UNK it_802D2640();
/* 2D2660 */ M2C_UNK it_802D2660();
/* 2D2668 */ M2C_UNK it_802D2668();
/* 2D26BC */ M2C_UNK it_802D26BC();
/* 2D26FC */ M2C_UNK it_802D26FC();
/* 2D27A8 */ M2C_UNK it_802D27A8();
/* 2D27B0 */ M2C_UNK it_802D27B0();
/* 2D27FC */ M2C_UNK it_802D27FC();
/* 2D288C */ M2C_UNK it_802D288C();
/* 2D2904 */ M2C_UNK it_802D2904();
/* 2D290C */ M2C_UNK it_802D290C();
/* 2D2970 */ M2C_UNK it_802D2970();
/* 2D29D4 */ M2C_UNK it_802D29D4();
/* 2D2A50 */ M2C_UNK it_802D2A50();
/* 2D2A58 */ M2C_UNK it_802D2A58();
/* 2D2AC0 */ M2C_UNK it_802D2AC0();
/* 2D2B24 */ M2C_UNK it_802D2B24();
/* 2D2B44 */ M2C_UNK it_802D2B44();
/* 2D2B4C */ M2C_UNK it_802D2B4C();
/* 2D2BE0 */ M2C_UNK it_802D2BE0();
/* 2D2C54 */ M2C_UNK it_802D2C54();
/* 2D2C78 */ M2C_UNK it_802D2C78();
/* 2D2D04 */ M2C_UNK it_802D2D04();
/* 2D2D2C */ M2C_UNK it_802D2D2C();
/* 2D2E80 */ void it_802D2E80(Item_GObj*);
/* 2D2ED0 */ void it_802D2ED0(Item_GObj*, Item_GObj*);
/* 2D2EF0 */ M2C_UNK it_802D2EF0();
/* 2D2F3C */ M2C_UNK it_802D2F3C();
/* 2D2F70 */ M2C_UNK it_802D2F70();
/* 2D2FE8 */ M2C_UNK it_802D2FE8();
/* 3F7F58 */ extern ItemStateTable it_803F7F58[];
/* 3F7FB8 */ extern ItemStateTable it_803F7FB8[];
#define GALE01_2C9D40
/* 2C9D40 */ void it_802C9D40(Item_GObj*);
/* 2C9DFC */ M2C_UNK it_802C9DFC();
/* 2C9E00 */ void it_802C9E00(Item_GObj*);
/* 2C9E24 */ void it_802C9E24(Item_GObj*, Item_GObj*);
/* 2C9E44 */ M2C_UNK it_802C9E44();
/* 2C9E8C */ M2C_UNK it_802C9E8C();
/* 2C9EF0 */ M2C_UNK it_802C9EF0();
/* 2C9F74 */ M2C_UNK it_802C9F74();
/* 2C9FBC */ M2C_UNK it_802C9FBC();
/* 2CA014 */ M2C_UNK it_802CA014();
/* 2CA074 */ M2C_UNK it_802CA074();
/* 2CA198 */ M2C_UNK it_802CA198();
/* 2CA318 */ M2C_UNK it_802CA318();
/* 2CA31C */ M2C_UNK it_802CA31C();
/* 2CA324 */ M2C_UNK it_802CA324();
/* 2CA388 */ M2C_UNK it_802CA388();
/* 2CA3AC */ M2C_UNK it_802CA3AC();
/* 2CA3CC */ M2C_UNK it_802CA3CC();
/* 2CA3F4 */ M2C_UNK it_802CA3F4();
/* 3F7AD8 */ extern ItemStateTable it_803F7AD8[];
#define GALE01_2CA49C
/* 2CA49C */ void it_802CA49C(Item_GObj*);
/* 2CA534 */ M2C_UNK it_802CA534();
/* 2CA538 */ void it_802CA538(Item_GObj*, Item_GObj*);
/* 2CA558 */ M2C_UNK it_802CA558();
/* 2CA58C */ M2C_UNK it_802CA58C();
/* 2CA5D8 */ M2C_UNK it_802CA5D8();
/* 2CA618 */ M2C_UNK it_802CA618();
/* 2CA654 */ M2C_UNK it_802CA654();
/* 2CA6A0 */ M2C_UNK it_802CA6A0();
/* 2CA724 */ M2C_UNK it_802CA724();
/* 2CA7FC */ M2C_UNK it_802CA7FC();
/* 2CA890 */ M2C_UNK it_802CA890();
/* 2CA8DC */ M2C_UNK it_802CA8DC();
/* 2CA938 */ M2C_UNK it_802CA938();
/* 2CA984 */ M2C_UNK it_802CA984();
/* 2CA9B8 */ M2C_UNK it_802CA9B8();
/* 2CA9F4 */ M2C_UNK it_802CA9F4();
/* 2CAA40 */ M2C_UNK it_802CAA40();
/* 2CAAA4 */ M2C_UNK it_802CAAA4();
/* 2CAAC8 */ M2C_UNK it_802CAAC8();
/* 2CAAE8 */ M2C_UNK it_802CAAE8();
/* 2CAB10 */ M2C_UNK it_802CAB10();
/* 2CACD0 */ void it_802CACD0(Item_GObj*);
/* 2CADC0 */ bool it_802CADC0(Item_GObj*);
/* 2CADC8 */ bool it_802CADC8(Item_GObj*);
/* 2CADD0 */ void it_802CADD0(Item_GObj*, Item_GObj*);
/* 2CADF0 */ M2C_UNK it_802CADF0();
/* 2CAE60 */ M2C_UNK it_802CAE60();
/* 2CAE94 */ M2C_UNK it_802CAE94();
/* 2CAFB4 */ M2C_UNK it_802CAFB4();
/* 3F7B08 */ extern ItemStateTable it_803F7B08[];
/* 3F7B48 */ extern ItemStateTable it_803F7B48[];
#define GALE01_293660
typedef struct KinokoAnim {
HSD_AnimJoint* joint;
} KinokoAnim;
typedef struct KinokoAttrs {
f32 x0;
f32 x4;
s32 x8;
} KinokoAttrs;
HSD_AnimJoint* it_80293660(int idx);
void it_8029367C(Item_GObj*);
void it_802936E4(Item_GObj*);
bool it_80293754(Item_GObj*);
void it_8029375C(Item_GObj*);
bool it_80293798(Item_GObj*);
void it_8029385C(Item_GObj*);
void it_80293884(Item_GObj*);
bool it_802938AC(Item_GObj*);
void it_802938B4(Item_GObj*);
bool it_80293964(Item_GObj*);
bool it_802939E0(Item_GObj*);
void it_802939E8(Item_GObj*, HSD_GObj*);
extern ItemStateTable it_803F6110[];
#define GALE01_2F23AC
/* 2F23AC */ M2C_UNK it_802F23AC();
/* 2F23EC */ void it_802F23EC(Item_GObj* gobj, Fighter_GObj* owner_gobj,
float facing_dir);
/* 2F2578 */ M2C_UNK it_802F2578();
/* 2F2580 */ M2C_UNK it_802F2580();
/* 2F2584 */ M2C_UNK it_802F2584();
/* 2F258C */ M2C_UNK it_802F258C();
/* 2F2810 */ M2C_UNK it_802F2810();
/* 2F2888 */ M2C_UNK it_802F2888();
/* 2F2890 */ M2C_UNK it_802F2890();
/* 2F2894 */ M2C_UNK it_802F2894();
/* 2F289C */ M2C_UNK it_802F289C();
#define GALE01_29BAB8
/* 29BAB8 */ M2C_UNK it_8029BAB8();
/* 29BB90 */ M2C_UNK it_8029BB90();
/* 29BC88 */ M2C_UNK it_8029BC88();
/* 29BCA8 */ M2C_UNK it_8029BCA8();
/* 29BDD4 */ M2C_UNK it_8029BDD4();
/* 29BFB4 */ bool it_8029BFB4(Item_GObj*);
/* 29BFBC */ bool it_8029BFBC(Item_GObj*);
/* 29BFC4 */ bool it_8029BFC4(Item_GObj*);
/* 29BFCC */ bool it_8029BFCC(Item_GObj*);
/* 29C208 */ bool it_8029C208(Item_GObj*);
/* 29C4AC */ bool it_8029C4AC(Item_GObj*);
/* 29C4B4 */ void it_8029C4B4(Item_GObj*, Item_GObj*);
/* 3F6798 */ extern ItemStateTable it_803F6798[];
#define GALE01_2C74D8
/* 2C75DC */ void it_802C75DC(Item_GObj*);
/* 2C7698 */ void it_802C7698(Item_GObj*);
/* 2C7754 */ void it_802C7754(Item_GObj*, Item_GObj*);
/* 3F7958 */ extern ItemStateTable it_803F7958[];
#define GALE01_2ADC04
/* 2ADC04 */ void it_802ADC04(Item_GObj* gobj);
/* 2ADC34 */ void it_802ADC34(Item_GObj* gobj);
/* 2ADC54 */ Item_GObj* it_802ADC54(HSD_GObj* parent, Vec3* pos,
Fighter_Part sfx, u32 vars, float dir);
/* 2ADD88 */ void it_802ADD88(Item_GObj* gobj);
/* 2ADDB0 */ void it_802ADDB0(Item_GObj* gobj, HSD_GObj* ref_gobj);
/* 3F6C98 */ extern ItemStateTable it_803F6C98[];
#define GALE01_2F2D98
/* 2F2D98 */ void it_802F2D98(Item_GObj* gobj, ftKb_GObj* owner_gobj);
/* 2F2E7C */ void it_802F2E7C(Item_GObj* gobj, bool has_destroy_type);
/* 3F9490 */ extern ItemStateTable it_803F9490[];
#define GALE01_2D007C
/* 2D007C */ void it_802D007C(Item_GObj*);
/* 2D0118 */ void it_802D0118(Item_GObj*, Item_GObj*);
/* 3F7E28 */ extern ItemStateTable it_803F7E28[];
#define GALE01_2E1820
/* 2E1820 */ void it_802E1820(Item_GObj*);
/* 2E1874 */ void it_802E1874(Item_GObj*);
/* 2E18B4 */ M2C_UNK it_802E18B4();
/* 2E1930 */ M2C_UNK it_802E1930();
/* 2E1968 */ M2C_UNK it_802E1968();
/* 2E1970 */ M2C_UNK it_802E1970();
/* 2E19FC */ M2C_UNK it_802E19FC();
/* 2E1C4C */ M2C_UNK it_802E1C4C();
/* 2E1C84 */ M2C_UNK it_802E1C84();
/* 2E1D24 */ M2C_UNK it_802E1D24();
/* 2E1D2C */ M2C_UNK it_802E1D2C();
/* 2E1E54 */ M2C_UNK it_802E1E54();
/* 2E1E5C */ bool it_802E1E5C(Item_GObj*);
/* 2E1E94 */ M2C_UNK it_802E1E94();
/* 2E1F2C */ M2C_UNK it_802E1F2C();
/* 2E1F34 */ M2C_UNK it_802E1F34();
/* 2E20D0 */ M2C_UNK it_802E20D0();
/* 2E20D8 */ void it_802E20D8(Item_GObj*);
/* 2E2148 */ M2C_UNK it_802E2148();
/* 2E2150 */ M2C_UNK it_802E2150();
/* 2E2154 */ M2C_UNK it_802E2154();
/* 2E215C */ M2C_UNK it_802E215C();
/* 2E2330 */ void it_802E2330(Item_GObj*, Vec3*, s32, f32);
/* 2E2450 */ void it_802E2450(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F8940[];
#define GALE01_2AC8A8
/* 2AD2E8 */ bool it_802AD2E8(Item_GObj*);
/* 2AD2F0 */ bool it_802AD2F0(Item_GObj*);
/* 2AD384 */ bool it_802AD384(Item_GObj*);
/* 2AD38C */ bool it_802AD38C(Item_GObj*);
/* 2AD3B0 */ bool it_802AD3B0(Item_GObj*);
/* 2AD450 */ bool it_802AD450(Item_GObj*);
/* 2AD458 */ void it_802AD458(Item_GObj*, Item_GObj*);
/* 3F6C58 */ extern ItemStateTable it_803F6C58[];
#define GALE01_2896CC
/* 2896CC */ HSD_GObj* it_802896CC(Vec3*);
/* 289784 */ void it_80289784(Item_GObj*);
/* 2897C8 */ M2C_UNK it_802897C8();
/* 289910 */ M2C_UNK it_80289910();
/* 289A00 */ M2C_UNK it_80289A00();
/* 289B50 */ M2C_UNK it_80289B50();
/* 289BE8 */ M2C_UNK it_80289BE8();
/* 28A114 */ M2C_UNK it_8028A114();
/* 28A190 */ M2C_UNK it_8028A190();
/* 28A298 */ M2C_UNK it_8028A298();
/* 28A2C0 */ M2C_UNK it_8028A2C0();
/* 28A2C4 */ M2C_UNK it_8028A2C4();
/* 28A2F0 */ M2C_UNK it_8028A2F0();
/* 28A3A4 */ M2C_UNK it_8028A3A4();
/* 28A3A8 */ M2C_UNK it_8028A3A8();
/* 28A3CC */ M2C_UNK it_8028A3CC();
/* 28A4C0 */ M2C_UNK it_8028A4C0();
/* 28A4E8 */ M2C_UNK it_8028A4E8();
/* 28A518 */ M2C_UNK it_8028A518();
/* 28A544 */ M2C_UNK it_8028A544();
/* 28A690 */ M2C_UNK it_8028A690();
/* 28A7F0 */ M2C_UNK it_8028A7F0();
/* 28A7F4 */ M2C_UNK it_8028A7F4();
/* 28A93C */ void it_8028A93C(Item_GObj*);
/* 28A964 */ M2C_UNK it_8028A964();
/* 28A96C */ M2C_UNK it_8028A96C();
/* 28A970 */ void it_8028A970(Item_GObj*);
/* 28A9AC */ M2C_UNK it_8028A9AC();
/* 28A9B4 */ M2C_UNK it_8028A9B4();
/* 28AA00 */ M2C_UNK it_8028AA00();
/* 28AB28 */ void it_8028AB28(Item_GObj*);
/* 28AB64 */ M2C_UNK it_8028AB64();
/* 28AC74 */ M2C_UNK it_8028AC74();
/* 28AD18 */ M2C_UNK it_8028AD18();
/* 28AD38 */ M2C_UNK it_8028AD38();
/* 28AD3C */ M2C_UNK it_8028AD3C();
/* 28AD44 */ M2C_UNK it_8028AD44();
/* 28ADD4 */ M2C_UNK it_8028ADD4();
/* 28AE98 */ M2C_UNK it_8028AE98();
/* 28AE9C */ M2C_UNK it_8028AE9C();
/* 28AEA4 */ int it_8028AEA4(Item_GObj*);
/* 28AF1C */ int it_8028AF1C(Item_GObj*);
/* 28AF54 */ int it_8028AF54(Item_GObj*);
/* 28AF8C */ int it_8028AF8C(Item_GObj*);
/* 28AFC4 */ int it_8028AFC4(Item_GObj*);
/* 28B06C */ void it_8028B06C(Item_GObj*, Item_GObj*);
/* 3F59F8 */ extern ItemStateTable it_803F59F8[];
#define GALE01_2ECCDC
/* 2ECCDC */ void it_802ECCDC(Item_GObj*);
/* 2ECD1C */ M2C_UNK it_802ECD1C();
/* 2ECD3C */ M2C_UNK it_802ECD3C();
/* 2ECE90 */ void it_802ECE90(Item_GObj*);
/* 2ECEB0 */ M2C_UNK it_802ECEB0();
/* 2ECF00 */ M2C_UNK it_802ECF00();
/* 2ECF70 */ M2C_UNK it_802ECF70();
/* 2ECFE0 */ M2C_UNK it_802ECFE0();
/* 2ED040 */ M2C_UNK it_802ED040();
/* 2ED088 */ M2C_UNK it_802ED088();
/* 2ED0D0 */ M2C_UNK it_802ED0D0();
/* 2ED124 */ M2C_UNK it_802ED124();
/* 2ED198 */ M2C_UNK it_802ED198();
/* 2ED25C */ M2C_UNK it_802ED25C();
/* 2ED2AC */ M2C_UNK it_802ED2AC();
/* 2ED31C */ M2C_UNK it_802ED31C();
/* 2ED4F8 */ M2C_UNK it_802ED4F8();
/* 2ED520 */ M2C_UNK it_802ED520();
/* 2ED774 */ M2C_UNK it_802ED774();
/* 2ED79C */ M2C_UNK it_802ED79C();
/* 2ED8BC */ M2C_UNK it_802ED8BC();
/* 2ED8E4 */ M2C_UNK it_802ED8E4();
/* 2ED92C */ M2C_UNK it_802ED92C();
/* 2EDCD0 */ M2C_UNK it_802EDCD0();
/* 2EDD18 */ M2C_UNK it_802EDD18();
/* 2EDD34 */ M2C_UNK it_802EDD34();
/* 2EDD54 */ M2C_UNK it_802EDD54();
/* 2EDD9C */ M2C_UNK it_802EDD9C();
/* 2EDDA0 */ M2C_UNK it_802EDDA0();
/* 2EDDC0 */ bool it_802EDDC0(Item_GObj*);
/* 2EE1E0 */ void it_802EE1E0(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F90D0[];
extern ItemStateTable it_803F9328[];
void it_802EFBC0(Item_GObj*);
M2C_UNK it_802EFBE8(Item_GObj*);
M2C_UNK it_802EFC08(Item_GObj*);
bool it_802EFE28(Item_GObj*);
bool it_802F022C(Item_GObj*);
bool it_802F0104(Item_GObj*);
bool it_802EFF1C(Item_GObj*);
bool it_802F01F8(Item_GObj*);
bool it_802F0010(Item_GObj*);
void it_802F0320(Item_GObj*, Item_GObj*);
#define GALE01_2E8BCC
/* 2E8BCC */ void it_802E8BCC(Item_GObj*);
/* 2E8CD8 */ bool it_802E8CD8(Item_GObj*);
/* 2E8F24 */ M2C_UNK it_802E8F24();
/* 2E8F7C */ M2C_UNK it_802E8F7C();
/* 2E8F84 */ M2C_UNK it_802E8F84();
/* 2E8FFC */ M2C_UNK it_802E8FFC();
/* 2E9038 */ M2C_UNK it_802E9038();
/* 2E90E8 */ M2C_UNK it_802E90E8();
/* 2E91AC */ M2C_UNK it_802E91AC();
/* 2E92A0 */ M2C_UNK it_802E92A0();
/* 2E9308 */ M2C_UNK it_802E9308();
/* 2E9354 */ M2C_UNK it_802E9354();
/* 2E935C */ M2C_UNK it_802E935C();
/* 2E938C */ M2C_UNK it_802E938C();
/* 2E93C8 */ M2C_UNK it_802E93C8();
/* 2E9494 */ M2C_UNK it_802E9494();
/* 2E959C */ M2C_UNK it_802E959C();
/* 2E9624 */ M2C_UNK it_802E9624();
/* 2E9674 */ M2C_UNK it_802E9674();
/* 2E969C */ M2C_UNK it_802E969C();
/* 2E9738 */ M2C_UNK it_802E9738();
/* 2E9780 */ M2C_UNK it_802E9780();
/* 2E9850 */ M2C_UNK it_802E9850();
/* 2E98A4 */ M2C_UNK it_802E98A4();
/* 2E98E0 */ M2C_UNK it_802E98E0();
/* 2E9948 */ M2C_UNK it_802E9948();
/* 2E9950 */ M2C_UNK it_802E9950();
/* 2E99C4 */ M2C_UNK it_802E99C4();
/* 2E9A00 */ M2C_UNK it_802E9A00();
/* 2E9A38 */ M2C_UNK it_802E9A38();
/* 2E9B60 */ M2C_UNK it_802E9B60();
/* 2E9B64 */ M2C_UNK it_802E9B64();
/* 2E9BA0 */ M2C_UNK it_802E9BA0();
/* 2E9BE4 */ M2C_UNK it_802E9BE4();
/* 2E9D10 */ M2C_UNK it_802E9D10();
/* 2E9D14 */ M2C_UNK it_802E9D14();
/* 2E9D50 */ M2C_UNK it_802E9D50();
/* 2E9D94 */ M2C_UNK it_802E9D94();
/* 2E9D9C */ M2C_UNK it_802E9D9C();
/* 2E9DE8 */ M2C_UNK it_802E9DE8();
/* 2E9F28 */ M2C_UNK it_802E9F28();
/* 2EA004 */ M2C_UNK it_802EA004();
/* 2EA008 */ M2C_UNK it_802EA008();
/* 2EA010 */ M2C_UNK it_802EA010();
/* 2EA0A0 */ M2C_UNK it_802EA0A0();
/* 2EA0A4 */ M2C_UNK it_802EA0A4();
/* 2EA0E0 */ void it_802EA0E0(Item_GObj*);
/* 2EA108 */ M2C_UNK it_802EA108();
/* 2EA150 */ M2C_UNK it_802EA150();
/* 2EA154 */ void it_802EA154(Item_GObj*);
/* 2EA1B4 */ void it_802EA1B4(Item_GObj*);
/* 2EA204 */ M2C_UNK it_802EA204();
/* 2EA24C */ M2C_UNK it_802EA24C();
/* 2EA27C */ M2C_UNK it_802EA27C();
/* 2EA2A0 */ M2C_UNK it_802EA2A0();
/* 2EA308 */ M2C_UNK it_802EA308();
/* 2EA310 */ M2C_UNK it_802EA310();
/* 2EA314 */ M2C_UNK it_802EA314();
/* 2EA334 */ M2C_UNK it_802EA334();
/* 2EA394 */ M2C_UNK it_802EA394();
/* 2EA39C */ M2C_UNK it_802EA39C();
/* 2EA3B8 */ M2C_UNK it_802EA3B8();
/* 2EA3D8 */ M2C_UNK it_802EA3D8();
/* 2EA3E0 */ M2C_UNK it_802EA3E0();
/* 2EA3FC */ M2C_UNK it_802EA3FC();
/* 2EA41C */ void it_802EA41C(Item_GObj*);
/* 2EA478 */ M2C_UNK it_802EA478();
/* 2EA674 */ M2C_UNK it_802EA674();
/* 2EA6F4 */ M2C_UNK it_802EA6F4();
/* 2EA804 */ M2C_UNK it_802EA804();
/* 2EA988 */ M2C_UNK it_802EA988();
/* 2EA9FC */ M2C_UNK it_802EA9FC();
/* 2EAAEC */ M2C_UNK it_802EAAEC();
/* 2EAC8C */ M2C_UNK it_802EAC8C();
/* 2EADD8 */ void it_802EADD8(Item_GObj*);
/* 2EAE80 */ M2C_UNK it_802EAE80();
/* 3F8EB0 */ extern ItemStateTable it_803F8EB0[];
#define GALE01_28E738
/* 28E738 */ void it_8028E738(Item_GObj*);
/* 28E904 */ void it_8028E904(Item_GObj*);
/* 28E9B8 */ void it_8028E9B8(Item_GObj*);
/* 28E9E0 */ void it_8028E9E0(Item_GObj*);
/* 28EA54 */ bool it_8028EA54(Item_GObj*);
/* 28EA78 */ bool it_8028EA78(Item_GObj*);
/* 28EA9C */ bool it_8028EA9C(Item_GObj*);
/* 28EAC0 */ bool it_8028EAC0(Item_GObj*);
/* 28EAE0 */ bool it_8028EAE0(Item_GObj*);
/* 28EB00 */ void it_8028EB00(Item_GObj*);
/* 28EB68 */ void it_8028EB68(Item_GObj*, Item_GObj*);
/* 3F5CC8 */ extern ItemStateTable it_803F5CC8[];
void it_8028E938(Item_GObj*);
void it_8028E774(Item_GObj*, Vec3*);
void it_8028E79C(Item_GObj* gobj, Vec3* pos, f32 facing_dir);
#define GALE01_2993E0
/* 2996D0 */ void it_802996D0(HSD_GObj*, Vec3*, u32, f32);
/* 299B6C */ bool it_80299B6C(Item_GObj*);
/* 299B74 */ bool it_80299B74(Item_GObj*);
/* 299C08 */ bool it_80299C08(Item_GObj*);
/* 299C10 */ bool it_80299C10(Item_GObj*);
/* 299C18 */ bool it_80299C18(Item_GObj*);
/* 299C20 */ bool it_80299C20(Item_GObj*);
/* 299C28 */ void it_80299C28(Item_GObj*, HSD_GObj*);
/* 3F6630 */ extern ItemStateTable it_803F6630[];
#define GALE01_298168
/* 298168 */ void it_80298168(HSD_GObj* owner_gobj, Vec3* pos, f32 facing_dir);
/* 298634 */ bool it_80298634(Item_GObj*);
/* 29863C */ bool it_8029863C(Item_GObj*);
/* 298644 */ bool it_80298644(Item_GObj*);
/* 29864C */ bool it_8029864C(Item_GObj*);
/* 298654 */ bool it_80298654(Item_GObj*);
/* 298828 */ bool it_80298828(Item_GObj*);
/* 2988C4 */ void it_802988C4(Item_GObj*, HSD_GObj*);
/* 3F64F8 */ extern ItemStateTable it_803F64F8[];
#define GALE01_2D9A2C
/* 2D9A2C */ M2C_UNK it_802D9A2C();
/* 2D9B78 */ M2C_UNK it_802D9B78();
/* 2D9BA8 */ void it_802D9BA8(Item_GObj*);
/* 2D9CC4 */ bool it_802D9CC4(Item_GObj*);
/* 2D9DDC */ M2C_UNK it_802D9DDC();
/* 2D9E38 */ M2C_UNK it_802D9E38();
/* 2D9E80 */ M2C_UNK it_802D9E80();
/* 2D9EF4 */ M2C_UNK it_802D9EF4();
/* 2D9F9C */ M2C_UNK it_802D9F9C();
/* 2D9FDC */ M2C_UNK it_802D9FDC();
/* 2DA05C */ M2C_UNK it_802DA05C();
/* 2DA104 */ M2C_UNK it_802DA104();
/* 2DA194 */ M2C_UNK it_802DA194();
/* 2DA1DC */ M2C_UNK it_802DA1DC();
/* 2DA348 */ M2C_UNK it_802DA348();
/* 2DA4C0 */ M2C_UNK it_802DA4C0();
/* 2DA550 */ M2C_UNK it_802DA550();
/* 2DA598 */ M2C_UNK it_802DA598();
/* 2DA730 */ M2C_UNK it_802DA730();
/* 2DA8D8 */ M2C_UNK it_802DA8D8();
/* 2DA960 */ M2C_UNK it_802DA960();
/* 2DAA10 */ M2C_UNK it_802DAA10();
/* 2DAAD0 */ M2C_UNK it_802DAAD0();
/* 2DAAD8 */ M2C_UNK it_802DAAD8();
/* 2DAB48 */ M2C_UNK it_802DAB48();
/* 2DAB84 */ M2C_UNK it_802DAB84();
/* 2DABC0 */ M2C_UNK it_802DABC0();
/* 2DAC20 */ M2C_UNK it_802DAC20();
/* 2DAC98 */ M2C_UNK it_802DAC98();
/* 2DACE4 */ M2C_UNK it_802DACE4();
/* 2DAD18 */ M2C_UNK it_802DAD18();
/* 2DAE0C */ M2C_UNK it_802DAE0C();
/* 2DAE14 */ M2C_UNK it_802DAE14();
/* 2DAE30 */ M2C_UNK it_802DAE30();
/* 2DAE6C */ M2C_UNK it_802DAE6C();
/* 2DAEA8 */ M2C_UNK it_802DAEA8();
/* 2DAFC8 */ M2C_UNK it_802DAFC8();
/* 2DAFCC */ M2C_UNK it_802DAFCC();
/* 2DB074 */ M2C_UNK it_802DB074();
/* 2DB0F0 */ M2C_UNK it_802DB0F0();
/* 2DB138 */ M2C_UNK it_802DB138();
/* 2DB2B0 */ M2C_UNK it_802DB2B0();
/* 2DB358 */ M2C_UNK it_802DB358();
/* 2DB398 */ M2C_UNK it_802DB398();
/* 2DB464 */ M2C_UNK it_802DB464();
/* 2DB500 */ M2C_UNK it_802DB500();
/* 2DB570 */ M2C_UNK it_802DB570();
/* 2DB5F0 */ M2C_UNK it_802DB5F0();
/* 2DB670 */ M2C_UNK it_802DB670();
/* 2DB70C */ M2C_UNK it_802DB70C();
/* 2DB710 */ M2C_UNK it_802DB710();
/* 2DB74C */ M2C_UNK it_802DB74C();
/* 2DB7CC */ M2C_UNK it_802DB7CC();
/* 2DB868 */ M2C_UNK it_802DB868();
/* 2DB86C */ M2C_UNK it_802DB86C();
/* 2DB8A8 */ M2C_UNK it_802DB8A8();
/* 2DB914 */ M2C_UNK it_802DB914();
/* 2DB95C */ M2C_UNK it_802DB95C();
/* 2DB9B8 */ M2C_UNK it_802DB9B8();
/* 2DB9F4 */ M2C_UNK it_802DB9F4();
/* 2DBA68 */ void it_802DBA68(Item_GObj*);
/* 2DBAF0 */ M2C_UNK it_802DBAF0();
/* 2DBC68 */ M2C_UNK it_802DBC68();
/* 2DBD3C */ M2C_UNK it_802DBD3C();
/* 2DBD40 */ M2C_UNK it_802DBD40();
/* 2DBD7C */ M2C_UNK it_802DBD7C();
/* 2DBE50 */ M2C_UNK it_802DBE50();
/* 2DBE54 */ M2C_UNK it_802DBE54();
/* 2DBE90 */ void it_802DBE90(Item_GObj*);
/* 2DBED4 */ M2C_UNK it_802DBED4();
/* 2DBF2C */ M2C_UNK it_802DBF2C();
/* 2DBF30 */ void it_802DBF30(Item_GObj*);
/* 2DC000 */ void it_802DC000(Item_GObj*);
/* 2DC050 */ M2C_UNK it_802DC050();
/* 2DC058 */ M2C_UNK it_802DC058();
/* 2DC088 */ M2C_UNK it_802DC088();
/* 2DC0AC */ M2C_UNK it_802DC0AC();
/* 2DC114 */ M2C_UNK it_802DC114();
/* 2DC11C */ M2C_UNK it_802DC11C();
/* 2DC268 */ M2C_UNK it_802DC268();
/* 2DC310 */ M2C_UNK it_802DC310();
/* 2DC370 */ M2C_UNK it_802DC370();
/* 2DC3B8 */ M2C_UNK it_802DC3B8();
/* 2DC3BC */ M2C_UNK it_802DC3BC();
/* 2DC3DC */ M2C_UNK it_802DC3DC();
/* 2DC43C */ M2C_UNK it_802DC43C();
/* 2DC444 */ M2C_UNK it_802DC444();
/* 2DC460 */ M2C_UNK it_802DC460();
/* 2DC480 */ void it_802DC480(Item_GObj*);
/* 2DC4BC */ M2C_UNK it_802DC4BC();
extern ItemStateTable it_803F8468[];
#define GALE01_2A7D8C
/* 2A7D8C */ void it_802A7D8C(HSD_GObj*, int);
/* 2A7E40 */ void it_802A7E40(Item_GObj*);
/* 2A81C4 */ void fn_802A81C4(HSD_GObj*);
/* 2A8330 */ void it_802A8330(HSD_GObj*);
/* 2A8398 */ void it_802A8398(Item_GObj*, Vec3*, Vec3*);
/* 2A83E0 */ HSD_GObj* it_802A83E0(f32, Fighter_GObj*, Vec3*, Fighter_Part,
s32);
/* 2A850C */ void it_802A850C(Item_GObj*, Vec3*, Vec3*, f32, f32, f32);
/* 2A8984 */ void it_802A8984(Item_GObj*);
/* 2A8A7C */ void it_802A8A7C(Item_GObj*);
/* 2A8AF8 */ void it_802A8AF8(Item_GObj*);
/* 2A8B20 */ int it_802A8B20(HSD_GObj*);
/* 2A8C70 */ void it_802A8C70(HSD_GObj*);
/* 2A8C74 */ int it_802A8C74(HSD_GObj*);
/* 2A8C7C */ void it_802A8C7C(HSD_GObj*);
/* 2A8CC8 */ int it_802A8CC8(HSD_GObj*);
/* 2A90F0 */ void it_802A90F0(HSD_GObj*);
/* 2A9138 */ int it_802A9138(Item_GObj*);
/* 2A934C */ int it_802A934C(Item_GObj*);
/* 2A93B4 */ void it_802A93B4(HSD_GObj*);
/* 2A943C */ int it_802A943C(HSD_GObj*);
/* 2A9444 */ int it_802A9444(HSD_GObj*);
/* 2A944C */ void it_802A944C(HSD_GObj*);
/* 2A9450 */ int it_802A9450(HSD_GObj*);
/* 2A9458 */ void it_802A9458(HSD_GObj*);
/* 2A96E4 */ int it_802A96E4(Item_GObj*);
/* 2A98E4 */ void it_802A98E4(HSD_GObj*);
/* 2A98E8 */ int it_802A98E8(HSD_GObj*);
/* 2A9A80 */ int it_802A9A80(Item_GObj*);
/* 2A9B08 */ int it_802A9B08(Item_GObj*);
/* 2A9CE0 */ int it_802A9CE0(Item_GObj*);
/* 2A9D4C */ int it_802A9D4C(Item_GObj*);
/* 2AA034 */ void it_802AA034(Item_GObj*, Item_GObj*);
/* 3F6A28 */ extern ItemStateTable it_803F6A28[];
#define GALE01_29D968
/* 29D968 */ void it_8029D968(Item_GObj*);
/* 29D9A4 */ void it_8029D9A4(HSD_GObj*, enum_t, Item_StateChangeFlags);
/* 29DB5C */ void it_8029DB5C(HSD_GObj*);
/* 29DD58 */ HSD_GObj* it_8029DD58(Item_GObj* fighter_gobj, Vec3*, u8, int,
f32);
/* 29DEB0 */ void it_8029DEB0(HSD_GObj*);
/* 29E074 */ int it_8029E074(HSD_GObj*);
/* 29E218 */ void it_8029E218(HSD_GObj*);
/* 29E21C */ void fn_8029E21C(HSD_GObj*);
/* 29E3D8 */ int it_8029E3D8(HSD_GObj*);
/* 29E574 */ void it_8029E574(HSD_GObj*);
/* 29E5A4 */ int it_8029E5A4(Item_GObj*);
/* 29E5D0 */ void it_8029E5D0(HSD_GObj*);
/* 29E920 */ int it_8029E920(HSD_GObj*);
/* 29EAF0 */ void it_8029EAF0(Item_GObj*);
/* 29EB3C */ int it_8029EB3C(HSD_GObj*);
/* 29EC34 */ void it_8029EC34(HSD_GObj*);
/* 29EF84 */ int it_8029EF84(HSD_GObj*);
/* 29F04C */ void it_8029F04C(Item_GObj*);
/* 29F098 */ int it_8029F098(HSD_GObj*);
/* 29F18C */ void it_8029F18C(HSD_GObj*);
/* 29F3DC */ int it_8029F3DC(HSD_GObj*);
/* 29F60C */ void it_8029F60C(HSD_GObj*);
/* 29F670 */ int it_8029F670(Item_GObj*);
/* 29F69C */ void it_8029F69C(HSD_GObj*);
/* 29F934 */ int it_8029F934(Item_GObj*);
/* 29F954 */ void it_8029F954(HSD_GObj*);
/* 29F958 */ int it_8029F958(HSD_GObj*);
/* 29F960 */ int it_8029F960(HSD_GObj*);
/* 29FA30 */ int it_8029FA30(Item_GObj*);
/* 29FB24 */ void it_8029FB24(Item_GObj*);
/* 29FB4C */ int it_8029FB4C(HSD_GObj*);
/* 29FCE8 */ void it_8029FCE8(HSD_GObj*);
/* 29FCEC */ int it_8029FCEC(Item_GObj*);
/* 29FD20 */ int it_8029FD20(Item_GObj*);
/* 29FD40 */ int it_8029FD40(Item_GObj*);
/* 29FD64 */ int it_8029FD64(Item_GObj*);
/* 29FD84 */ void it_8029FD84(Item_GObj*, Item_GObj*);
/* 3F6888 */ extern ItemStateTable it_803F6888[];
#define GALE01_29FDBC
/* 29FDBC */ bool it_8029FDBC(Item_GObj* gobj);
/* 29FDDC */ void it_8029FDDC(HSD_GObj*, int);
/* 29FE64 */ M2C_UNK it_8029FE64();
/* 2A013C */ HSD_GObj* it_802A013C(float facing_dir, Fighter_GObj* owner_gobj,
Vec3* pos, Fighter_Part, int);
/* 2A0534 */ void it_802A0534(Item_GObj* gobj, Vec3*);
/* 2A07B4 */ void it_802A07B4(Item_GObj* gobj);
/* 2A0810 */ M2C_UNK it_802A0810();
/* 2A087C */ void it_802A087C(Item_GObj*);
/* 2A0930 */ M2C_UNK it_802A0930();
/* 2A0C34 */ M2C_UNK it_802A0C34();
/* 2A0E70 */ void it_802A0E70(Item_GObj*);
/* 2A0F08 */ M2C_UNK it_802A0F08();
/* 2A0F84 */ void it_802A0F84(Item_GObj*);
/* 2A0F88 */ void it_802A0F88(Item_GObj*);
/* 2A0FB0 */ M2C_UNK it_802A0FB0();
/* 2A0FD0 */ M2C_UNK it_802A0FD0();
/* 2A10C0 */ M2C_UNK it_802A10C0();
/* 2A10E4 */ M2C_UNK it_802A10E4();
/* 2A12DC */ M2C_UNK it_802A12DC();
/* 2A12FC */ M2C_UNK it_802A12FC();
/* 2A13EC */ M2C_UNK it_802A13EC();
/* 2A15EC */ M2C_UNK it_802A15EC();
/* 2A16E4 */ M2C_UNK it_802A16E4();
/* 2A1948 */ M2C_UNK it_802A1948();
/* 2A19E0 */ M2C_UNK it_802A19E0();
/* 2A1C30 */ M2C_UNK it_802A1C30();
/* 2A1D60 */ M2C_UNK it_802A1D60();
/* 2A1F08 */ bool it_802A1F08(Item_GObj*);
/* 2A1FA8 */ bool it_802A1FA8(Item_GObj*);
/* 2A2048 */ bool it_802A2048(Item_GObj*);
/* 2A20E8 */ bool it_802A20E8(Item_GObj*);
/* 2A2288 */ bool it_802A2288(Item_GObj*);
/* 2A2320 */ bool it_802A2320(Item_GObj*);
/* 2A23CC */ void it_802A23CC(Item_GObj*, Item_GObj*);
/* 3F6920 */ extern ItemStateTable it_803F6920[];
#define GALE01_2AF1A4
/* 2AF1A4 */ HSD_GObj* it_802AF1A4(f32, Fighter_GObj*, Vec3*, Fighter_Part,
int);
/* 2AF298 */ void it_802AF298(Item_GObj*);
/* 2AF304 */ void it_802AF304(Item_GObj*);
/* 2AF434 */ void it_802AF434(Item_GObj*);
/* 2AF920 */ void it_802AF920(Item_GObj*, Item_GObj*);
/* 3F6E98 */ extern ItemStateTable it_803F6E98[];
#define GALE01_2A2418
// /* 2A2418 */ void it_802A2418(Item_GObj*);
// /* 2A2B10 */ void it_802A2B10(Item_GObj* gobj);
// /* 2A2BA4 */ Item_GObj* it_802A2BA4(Fighter_GObj*, Vec3*, float, int);
// /* 2A7688 */ void it_802A7688(Item_GObj*);
// /* 2A78B8 */ void it_802A78B8(HSD_GObj*, Vec3*, float);
// /* 2A7AAC */ void it_802A7AAC(HSD_GObj*);
// /* 2A7AF0 */ void it_802A7AF0(HSD_GObj*);
// /* 2A7B34 */ void it_802A7B34(HSD_GObj*);
// /* 2A7D40 */ void it_802A7D40(Item_GObj*, Item_GObj*);
/* 3F6998 */ extern ItemStateTable it_803F6998[];
/* 802A2418 */ void it_802A2418(Item_GObj* arg0);
/* 802A2428 */ void it_802A2428(Item_GObj* arg0);
/* 802A2474 */ void it_802A2474(void* arg0);
/* 802A24A0 */ void it_802A24A0(HSD_GObj* gobj, int arg1);
/* 802A24D0 */ void it_802A24D0(ItemLink* arg0, f32 arg8);
/* 802A2568 */ HSD_JObj* it_802A2568(Item* arg0, HSD_JObj* arg1, s32 arg2,
f32 arg8);
/* 802A2B10 */ void it_802A2B10(Item_GObj* gobj);
/* 802A2BA4 */ Item_GObj* it_802A2BA4(Fighter_GObj* arg0, Vec3* arg1, f32 arg2,
s32 arg3);
/* 802A2D88 */ int it_802A2D88(Item_GObj* arg0);
/* 802A2ED0 */ void it_802A2ED0(Item_GObj* arg0);
/* 802A2EE4 */ void it_802A2EE4(Item_GObj* arg0);
/* 802A30FC */ void it_802A30FC(Item_GObj* arg0);
/* 802A3240 */ void it_802A3240(Item_GObj* arg0);
/* 802A3254 */ void it_802A3254(Item_GObj* arg0);
/* 802A338C */ void it_802A338C(Item_GObj* arg0);
/* 802A34EC */ void it_802A34EC(Item_GObj* arg0);
/* 802A3500 */ void it_802A3500(Item_GObj* arg0);
/* 802A361C */ void it_802A361C(Item_GObj* arg0);
/* 802A3630 */ void it_802A3630(Item_GObj* arg0);
/* 802A3814 */ void it_802A3814(Item_GObj* arg0);
/* 802A3828 */ void it_802A3828(Item_GObj* arg0);
/* 802A39E8 */ void it_802A39E8(Item_GObj* arg0);
/* 802A39FC */ void it_802A39FC(Item_GObj* arg0);
/* 802A3C84 */ void it_802A3C84(Item_GObj* arg0);
/* 802A3C98 */ float it_802A3C98(Vec3* arg0, Vec3* arg1, Vec3* arg2);
/* 802A3D90 */ s32 it_802A3D90(ItemLink* arg0);
/* 802A3E50 */ s32 it_802A3E50(ItemLink* arg0, enum FighterKind arg1,
f32 arg8);
/* 802A40D0 */ s32 it_802A40D0(ItemLink* arg0, f32 arg8);
/* 802A42F4 */ s32 it_802A42F4(ItemLink* arg0, f32 arg8);
/* 802A43B8 */ void it_802A43B8(ItemLink* arg0);
/* 802A43EC */ void it_802A43EC(ItemLink* arg0);
/* 802A4420 */ void it_802A4420(ItemLink* arg0);
/* 802A4454 */ void it_802A4454(ItemLink* arg0);
/* 802A44CC */ void it_802A44CC(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, f32 arg8);
/* 802A4758 */ void it_802A4758(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, f32 arg8);
/* 802A49B0 */ void it_802A49B0(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, f32 arg8);
/* 802A4BFC */ s32 it_802A4BFC(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, Fighter* arg3);
/* 802A5320 */ s32 it_802A5320(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, Fighter* arg3);
/* 802A5770 */ void it_802A5770(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, Fighter* arg3);
/* 802A5AE0 */ s32 it_802A5AE0(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2);
/* 802A5E28 */ s32 it_802A5E28(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, f32 arg8);
/* 802A5FE0 */ s32 it_802A5FE0(ItemLink* arg0, ItemLink* arg1, Vec3* arg2,
itLinkHookshotAttributes* arg3, f32 arg8);
/* 802A6474 */ void it_802A6474(ItemLink* arg0, ItemLink* arg1, Vec3* arg2,
itLinkHookshotAttributes* arg3);
/* 802A678C */ s32 it_802A678C(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, f32 arg8);
/* 802A6944 */ void it_802A6944(Item*, f32);
/* 802A6A78 */ s32 it_802A6A78(ItemLink* arg0, Vec3* arg1,
itLinkHookshotAttributes* arg2, Fighter* arg3);
/* 802A6DC8 */ void it_802A6DC8(HSD_JObj* arg0, Vec3* arg1, Vec3* arg2);
/* 802A6F80 */ void it_802A6F80(HSD_JObj* arg0, Vec3* arg1, Vec3* arg2,
f32 val);
/* 802A7168 */ void it_802A7168(Item* arg0, Vec3* arg1, f32 arg8);
/* 802A7384 */ void it_802A7384(Item* arg0, Vec3* arg1, f32 arg8);
/* 802A7688 */ void it_802A7688(Item_GObj* arg0);
/* 802A76EC */ void it_802A76EC(HSD_GObj* arg0);
/* 802A7764 */ void it_802A7764(HSD_GObj* arg0);
/* 802A77DC */ void it_802A77DC(Item_GObj* gobj);
/* 802A7840 */ void it_802A7840(HSD_GObj* arg0);
/* 802A78B8 */ void it_802A78B8(HSD_GObj* arg0, Vec3* arg1, f32 arg2);
/* 802A793C */ void it_802A793C(HSD_GObj* arg0);
/* 802A79A0 */ void it_802A79A0(HSD_GObj* arg0);
/* 802A7A04 */ void it_802A7A04(HSD_GObj* arg0);
/* 802A7AAC */ void it_802A7AAC(HSD_GObj* arg0);
/* 802A7AF0 */ void it_802A7AF0(HSD_GObj* arg0);
/* 802A7B34 */ void it_802A7B34(HSD_GObj* arg0);
/* 802A7D40 */ void it_802A7D40(Item_GObj* arg0, Item_GObj* arg1);
extern Vec3 it_803B8650;
#define GALE01_29570C
/* 29570C */ void it_8029570C(Item_GObj*);
/* 295748 */ M2C_UNK it_80295748();
/* 295770 */ M2C_UNK it_80295770();
/* 2957AC */ M2C_UNK it_802957AC();
/* 295804 */ bool it_80295804(void);
/* 29580C */ M2C_UNK it_8029580C();
/* 295810 */ M2C_UNK it_80295810();
/* 29583C */ M2C_UNK it_8029583C();
/* 295864 */ bool it_80295864(void);
/* 29586C */ M2C_UNK it_8029586C();
/* 29589C */ M2C_UNK it_8029589C();
/* 2958C8 */ void it_802958C8(Item_GObj*);
/* 2958F0 */ bool it_802958F0(Item_GObj* gobj);
/* 295904 */ M2C_UNK it_80295904();
/* 295908 */ void it_80295908(Item_GObj*);
/* 295930 */ M2C_UNK it_80295930();
/* 295974 */ void it_80295974(Item_GObj*);
/* 29599C */ M2C_UNK it_8029599C();
/* 2959E8 */ M2C_UNK it_802959E8();
/* 295ACC */ bool it_80295ACC(Item_GObj*);
/* 295B08 */ void it_80295B08(Item_GObj*);
/* 295B30 */ bool it_80295B30(void);
/* 295B38 */ M2C_UNK it_80295B38();
/* 295B3C */ M2C_UNK it_80295B3C();
/* 295B70 */ bool it_80295B70(Item_GObj*);
/* 295BAC */ bool it_80295BAC(Item_GObj*);
/* 295BCC */ bool it_80295BCC(Item_GObj*);
/* 295C08 */ bool it_80295C08(Item_GObj*);
/* 295C28 */ void it_80295C28(Item_GObj*, Item_GObj*);
/* 3F6310 */ extern ItemStateTable it_803F6310[];
#define GALE01_29A114
/* 29A114 */ M2C_UNK it_8029A114();
/* 29A218 */ M2C_UNK it_8029A218();
/* 29A31C */ M2C_UNK it_8029A31C();
/* 29A498 */ M2C_UNK it_8029A498();
/* 29A504 */ M2C_UNK it_8029A504();
/* 29A524 */ M2C_UNK it_8029A524();
/* 29A58C */ M2C_UNK it_8029A58C();
/* 29A5C0 */ M2C_UNK it_8029A5C0();
/* 29A5E0 */ M2C_UNK it_8029A5E0();
/* 29A5F8 */ M2C_UNK it_8029A5F8();
/* 29A600 */ bool it_8029A600(Item_GObj*);
/* 29A608 */ bool it_8029A608(Item_GObj*);
/* 29A610 */ bool it_8029A610(Item_GObj*);
/* 29A618 */ bool it_8029A618(Item_GObj*);
/* 29A620 */ bool it_8029A620(Item_GObj*);
/* 29A704 */ bool it_8029A704(Item_GObj*);
/* 29A728 */ void it_8029A728(Item_GObj*, Item_GObj*);
/* 3F6680 */ extern ItemStateTable it_803F6680[];
#define GALE01_2CB8AC
/* 2CB8AC */ void it_802CB8AC(Item_GObj*);
/* 2CB93C */ M2C_UNK it_802CB93C();
/* 2CB940 */ void it_802CB940(Item_GObj*, Item_GObj*);
/* 2CB960 */ M2C_UNK it_802CB960();
/* 2CB994 */ M2C_UNK it_802CB994();
/* 2CB9E0 */ M2C_UNK it_802CB9E0();
/* 2CBA20 */ M2C_UNK it_802CBA20();
/* 2CBA5C */ M2C_UNK it_802CBA5C();
/* 2CBAA8 */ M2C_UNK it_802CBAA8();
/* 2CBB84 */ M2C_UNK it_802CBB84();
/* 2CBC9C */ M2C_UNK it_802CBC9C();
/* 2CBCD8 */ M2C_UNK it_802CBCD8();
/* 2CBD24 */ M2C_UNK it_802CBD24();
/* 2CBFE4 */ M2C_UNK it_802CBFE4();
/* 2CC030 */ M2C_UNK it_802CC030();
/* 2CC064 */ M2C_UNK it_802CC064();
/* 2CC0A0 */ M2C_UNK it_802CC0A0();
/* 2CC0EC */ M2C_UNK it_802CC0EC();
/* 2CC160 */ M2C_UNK it_802CC160();
/* 2CC184 */ M2C_UNK it_802CC184();
/* 2CC1A4 */ M2C_UNK it_802CC1A4();
/* 2CC1CC */ M2C_UNK it_802CC1CC();
/* 2CC3D4 */ void it_802CC3D4(Item_GObj*);
/* 2CC440 */ void it_802CC440(Item_GObj*);
/* 2CC4AC */ void it_802CC4AC(Item_GObj*);
/* 2CC518 */ void it_802CC518(Item_GObj*);
/* 2CC584 */ void it_802CC584(Item_GObj*, Item_GObj*);
/* 2CC5A4 */ bool it_802CC5A4(Item_GObj*);
/* 2CC5C4 */ bool it_802CC5C4(Item_GObj*);
/* 2CC5CC */ bool it_802CC5CC(Item_GObj*);
/* 2CC5D4 */ M2C_UNK it_802CC5D4();
/* 2CC650 */ M2C_UNK it_802CC650();
/* 2CC684 */ M2C_UNK it_802CC684();
/* 2CC6C4 */ M2C_UNK it_802CC6C4();
/* 3F7BC0 */ extern ItemStateTable it_803F7BC0[];
/* 3F7C00 */ extern ItemStateTable it_803F7C00[];
#define GALE01_2D5050
/* 2D5050 */ void it_802D5050(Item_GObj*);
/* 2D50F0 */ M2C_UNK it_802D50F0();
/* 2D5124 */ M2C_UNK it_802D5124();
/* 2D51C8 */ M2C_UNK it_802D51C8();
/* 2D52E4 */ M2C_UNK it_802D52E4();
/* 2D533C */ M2C_UNK it_802D533C();
/* 2D53AC */ M2C_UNK it_802D53AC();
/* 2D53F0 */ M2C_UNK it_802D53F0();
/* 2D53F4 */ M2C_UNK it_802D53F4();
/* 2D5420 */ M2C_UNK it_802D5420();
/* 2D546C */ M2C_UNK it_802D546C();
/* 2D54C4 */ M2C_UNK it_802D54C4();
/* 2D54CC */ M2C_UNK it_802D54CC();
/* 2D54FC */ M2C_UNK it_802D54FC();
/* 2D5528 */ M2C_UNK it_802D5528();
/* 2D5530 */ M2C_UNK it_802D5530();
/* 2D5560 */ M2C_UNK it_802D5560();
/* 2D55DC */ M2C_UNK it_802D55DC();
/* 2D5600 */ M2C_UNK it_802D5600();
/* 2D5620 */ M2C_UNK it_802D5620();
/* 2D5648 */ bool it_802D5648(Item_GObj*);
/* 2D56F0 */ void it_802D56F0(Item_GObj*, Item_GObj*);
/* 2D5710 */ M2C_UNK it_802D5710();
/* 2D57D0 */ void it_802D57D0(Item_GObj*);
/* 2D582C */ M2C_UNK it_802D582C();
/* 2D5884 */ M2C_UNK it_802D5884();
/* 2D58BC */ M2C_UNK it_802D58BC();
/* 2D58C0 */ M2C_UNK it_802D58C0();
/* 2D58EC */ M2C_UNK it_802D58EC();
/* 2D5914 */ M2C_UNK it_802D5914();
/* 2D594C */ M2C_UNK it_802D594C();
/* 2D597C */ M2C_UNK it_802D597C();
/* 2D59A8 */ void it_802D59A8(Item_GObj*);
/* 2D59D0 */ M2C_UNK it_802D59D0();
/* 2D59D8 */ M2C_UNK it_802D59D8();
/* 2D59DC */ void it_802D59DC(Item_GObj*);
/* 2D5A04 */ void it_802D5A04(Item_GObj*);
/* 2D5A2C */ M2C_UNK it_802D5A2C();
/* 2D5A64 */ M2C_UNK it_802D5A64();
/* 2D5A68 */ M2C_UNK it_802D5A68();
/* 2D5A9C */ void it_802D5A9C(Item_GObj*, Item_GObj*);
/* 3F8190 */ extern ItemStateTable it_803F8190[];
/* 3F8200 */ extern ItemStateTable it_803F8200[];
#define GALE01_2D1438
/* 2D1438 */ void it_802D1438(Item_GObj*);
/* 2D14D0 */ M2C_UNK it_802D14D0();
/* 2D14D4 */ void it_802D14D4(Item_GObj*, Item_GObj*);
/* 2D14F4 */ M2C_UNK it_802D14F4();
/* 2D1558 */ M2C_UNK it_802D1558();
/* 2D1578 */ M2C_UNK it_802D1578();
/* 2D1580 */ M2C_UNK it_802D1580();
/* 2D15E0 */ M2C_UNK it_802D15E0();
/* 2D1620 */ M2C_UNK it_802D1620();
/* 2D16CC */ M2C_UNK it_802D16CC();
/* 2D16D4 */ M2C_UNK it_802D16D4();
/* 2D1720 */ M2C_UNK it_802D1720();
/* 2D17B0 */ M2C_UNK it_802D17B0();
/* 2D1828 */ M2C_UNK it_802D1828();
/* 2D1830 */ M2C_UNK it_802D1830();
/* 2D1930 */ M2C_UNK it_802D1930();
/* 2D19C0 */ M2C_UNK it_802D19C0();
/* 2D1A3C */ M2C_UNK it_802D1A3C();
/* 2D1A44 */ M2C_UNK it_802D1A44();
/* 2D1B30 */ M2C_UNK it_802D1B30();
/* 2D1B94 */ M2C_UNK it_802D1B94();
/* 2D1BB4 */ M2C_UNK it_802D1BB4();
/* 2D1BBC */ M2C_UNK it_802D1BBC();
/* 2D1D40 */ M2C_UNK it_802D1D40();
/* 2D1DB4 */ M2C_UNK it_802D1DB4();
/* 2D1DD8 */ M2C_UNK it_802D1DD8();
/* 2D1E64 */ M2C_UNK it_802D1E64();
/* 2D1E8C */ M2C_UNK it_802D1E8C();
/* 2D1F64 */ M2C_UNK it_802D1F64();
/* 2D208C */ M2C_UNK it_802D208C();
/* 2D2308 */ void it_802D2308(Item_GObj*);
/* 2D234C */ void it_802D234C(Item_GObj*);
/* 2D2390 */ void it_802D2390(Item_GObj*);
/* 2D23D4 */ void it_802D23D4(Item_GObj*, Item_GObj*);
/* 2D23F4 */ M2C_UNK it_802D23F4();
/* 2D246C */ M2C_UNK it_802D246C();
/* 2D24A0 */ M2C_UNK it_802D24A0();
/* 2D24FC */ M2C_UNK it_802D24FC();
/* 3F7EE8 */ extern ItemStateTable it_803F7EE8[];
/* 3F7F48 */ extern ItemStateTable it_803F7F48[];
#define GALE01_2C01AC
/* 2C01AC */ void it_802C01AC(Item_GObj* gobj, Vec3* pos, ItemKind kind,
float facing_dir);
/* 2C0490 */ bool it_802C0490(Item_GObj*);
/* 2C0498 */ bool it_802C0498(Item_GObj*);
/* 2C04B8 */ bool it_802C04B8(Item_GObj*);
/* 2C04C0 */ bool it_802C04C0(Item_GObj*);
/* 2C04C8 */ bool it_802C04C8(Item_GObj*);
/* 2C04D0 */ bool it_802C04D0(Item_GObj*);
/* 2C04F0 */ void it_802C04F0(Item_GObj*, HSD_GObj*);
/* 3F75C0 */ extern ItemStateTable it_803F75C0[];
#define GALE01_2D66F8
/* 2D66F8 */ M2C_UNK it_802D66F8();
/* 2D6740 */ M2C_UNK it_802D6740();
/* 2D6798 */ M2C_UNK it_802D6798();
/* 2D6808 */ bool it_802D6808(Item_GObj*);
/* 2D6810 */ bool it_802D6810(Item_GObj*);
/* 2D6830 */ bool it_802D6830(Item_GObj*);
/* 2D6838 */ bool it_802D6838(Item_GObj*);
/* 2D6840 */ bool it_802D6840(Item_GObj*);
/* 2D6848 */ bool it_802D6848(Item_GObj*);
/* 2D6850 */ void it_802D6850(Item_GObj*, Item_GObj*);
/* 2D6870 */ void it_802D6870(Item_GObj*);
/* 2D68FC */ M2C_UNK it_802D68FC();
/* 2D6978 */ M2C_UNK it_802D6978();
/* 2D699C */ M2C_UNK it_802D699C();
/* 2D69BC */ M2C_UNK it_802D69BC();
/* 2D69E4 */ M2C_UNK it_802D69E4();
/* 2D6A54 */ M2C_UNK it_802D6A54();
/* 2D6AD4 */ M2C_UNK it_802D6AD4();
/* 2D6C2C */ M2C_UNK it_802D6C2C();
/* 2D6C60 */ M2C_UNK it_802D6C60();
/* 2D6DDC */ M2C_UNK it_802D6DDC();
/* 2D6E04 */ M2C_UNK it_802D6E04();
/* 2D6E3C */ M2C_UNK it_802D6E3C();
/* 2D6E6C */ M2C_UNK it_802D6E6C();
/* 2D6E98 */ M2C_UNK it_802D6E98();
/* 2D6ED0 */ M2C_UNK it_802D6ED0();
/* 2D6F00 */ bool it_802D6F00(Item_GObj*);
/* 2D6FB0 */ void it_802D6FB0(Item_GObj*, Item_GObj*);
/* 3F82B0 */ extern ItemStateTable it_803F82B0[];
#define GALE01_2B2560
/* 2B2644 */ void it_802B2644(Item_GObj*);
/* 2B2700 */ void it_802B2700(Item_GObj*);
/* 2B2870 */ void it_802B2870(Item_GObj*, Item_GObj*);
/* 3F70F8 */ extern ItemStateTable it_803F70F8[];
#define GALE01_29B6F8
void it_8029B6F8(Item_GObj*, Vec3*, ItemKind, f32);
void it_8029B7C0(Item_GObj*);
bool it_8029B868(Item_GObj*);
void it_8029B8A0(Item_GObj*);
bool it_8029B8EC(Item_GObj*);
bool it_8029BA38(Item_GObj*);
bool it_8029BA40(Item_GObj*);
bool it_8029BA60(Item_GObj*);
bool it_8029BA68(Item_GObj*);
bool it_8029BA70(Item_GObj*);
bool it_8029BA78(Item_GObj*);
void it_8029BA98(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F6788[];
#define GALE01_2D09D0
/* 2D09D0 */ void it_802D09D0(Item_GObj*);
/* 2D0A0C */ void it_802D0A0C(Item_GObj*);
/* 2D0AB0 */ void it_802D0AB0(Item_GObj*, Item_GObj*);
/* 2D0AD0 */ bool it_802D0AD0(Item_GObj*);
/* 2D0D18 */ void it_802D0D18(Item_GObj*);
/* 2D0E30 */ void it_802D0E30(Item_GObj*);
/* 2D0E90 */ void it_802D0E90(Item_GObj*);
/* 3F7E78 */ extern ItemStateTable it_803F7E78[];
#define GALE01_2F0AE0
/* 2F0AE0 */ void it_802F0AE0(Item_GObj* fighter_gobj, Vec3*, Vec3*, enum_t,
bool, float facing_dir, float, float);
/* 2F0BC8 */ void it_802F0BC8(Item_GObj*, Item_GObj*);
/* 2F0BE8 */ M2C_UNK it_802F0BE8();
/* 2F0D2C */ M2C_UNK it_802F0D2C();
/* 2F0E70 */ M2C_UNK it_802F0E70();
/* 2F0ED4 */ M2C_UNK it_802F0ED4();
/* 2F0ED8 */ M2C_UNK it_802F0ED8();
/* 2F0F04 */ M2C_UNK it_802F0F04();
/* 2F0F08 */ M2C_UNK it_802F0F08();
/* 2F0F0C */ bool it_802F0F0C(Item_GObj*);
/* 2F0F14 */ bool it_802F0F14(Item_GObj*);
/* 2F0F34 */ bool it_802F0F34(Item_GObj*);
/* 2F0F3C */ bool it_802F0F3C(Item_GObj*);
/* 2F0F44 */ bool it_802F0F44(Item_GObj*);
/* 2F0F64 */ bool it_802F0F64(Item_GObj*);
/* 3F9388 */ extern ItemStateTable it_803F9388[];
#define GALE01_2F0340
/* 2F0340 */ u32 it_802F0340(Item_GObj*, Vec3*, Vec3*, u32, u32, float);
/* 2F044C */ void it_802F044C(Item_GObj*, Item_GObj*);
/* 2F046C */ void it_802F046C(s32);
/* 2F0484 */ M2C_UNK it_802F0484();
/* 2F04F0 */ M2C_UNK it_802F04F0();
/* 2F059C */ M2C_UNK it_802F059C();
/* 2F05A0 */ M2C_UNK it_802F05A0();
/* 2F05A8 */ M2C_UNK it_802F05A8();
/* 2F063C */ M2C_UNK it_802F063C();
/* 3F9378 */ extern ItemStateTable it_803F9378[];
#define GALE01_2CAFD4
/* 2CAFD4 */ void it_802CAFD4(Item_GObj*);
/* 2CB0F4 */ M2C_UNK it_802CB0F4();
/* 2CB0F8 */ void it_802CB0F8(Item_GObj*, Item_GObj*);
/* 2CB118 */ M2C_UNK it_802CB118();
/* 2CB14C */ M2C_UNK it_802CB14C();
/* 2CB150 */ M2C_UNK it_802CB150();
/* 2CB17C */ M2C_UNK it_802CB17C();
/* 2CB280 */ M2C_UNK it_802CB280();
/* 2CB284 */ M2C_UNK it_802CB284();
/* 2CB2B0 */ M2C_UNK it_802CB2B0();
/* 2CB350 */ M2C_UNK it_802CB350();
/* 2CB3B4 */ M2C_UNK it_802CB3B4();
/* 2CB3D8 */ M2C_UNK it_802CB3D8();
/* 2CB4C8 */ M2C_UNK it_802CB4C8();
/* 2CB4F0 */ M2C_UNK it_802CB4F0();
/* 2CB690 */ void it_802CB690(Item_GObj*);
/* 2CB704 */ void it_802CB704(Item_GObj*);
/* 2CB778 */ void it_802CB778(Item_GObj*, Item_GObj*);
/* 2CB798 */ M2C_UNK it_802CB798();
/* 2CB810 */ M2C_UNK it_802CB810();
/* 2CB844 */ M2C_UNK it_802CB844();
/* 2CB8A4 */ M2C_UNK it_802CB8A4();
/* 3F7B58 */ extern ItemStateTable it_803F7B58[];
/* 3F7BB0 */ extern ItemStateTable it_803F7BB0[];
#define GALE01_2D84F8
/* 2D84F8 */ void it_802D84F8(Item_GObj*);
/* 2D8554 */ void it_802D8554(Item_GObj*);
/* 2D858C */ bool it_802D858C(Item_GObj*);
/* 2D8594 */ void it_802D8594(Item_GObj*);
/* 2D85EC */ bool it_802D85EC(Item_GObj*);
/* 2D85F4 */ bool it_802D85F4(Item_GObj*);
/* 3F83E0 */ extern ItemStateTable it_803F83E0[];
#define GALE01_2978DC
/* 2978DC */ void it_802978DC(Item_GObj*);
/* 297904 */ void it_80297904(Item_GObj*);
/* 297944 */ M2C_UNK it_80297944();
/* 29799C */ M2C_UNK it_8029799C();
/* 2979A4 */ M2C_UNK it_802979A4();
/* 2979A8 */ M2C_UNK it_802979A8();
/* 2979D4 */ M2C_UNK it_802979D4();
/* 297A1C */ M2C_UNK it_80297A1C();
/* 297A24 */ M2C_UNK it_80297A24();
/* 297A54 */ M2C_UNK it_80297A54();
/* 297ABC */ void it_80297ABC(Item_GObj*);
/* 297AE4 */ M2C_UNK it_80297AE4();
/* 297AEC */ M2C_UNK it_80297AEC();
/* 297AF0 */ void it_80297AF0(Item_GObj*);
/* 297B18 */ void it_80297B18(Item_GObj*);
/* 297B40 */ M2C_UNK it_80297B40();
/* 297B8C */ M2C_UNK it_80297B8C();
/* 297BB8 */ bool it_80297BB8(Item_GObj*);
/* 297BF8 */ void it_80297BF8(Item_GObj*);
/* 297C84 */ M2C_UNK it_80297C84();
/* 297C8C */ M2C_UNK it_80297C8C();
/* 297C90 */ M2C_UNK it_80297C90();
/* 297CC4 */ M2C_UNK it_80297CC4();
/* 297DD8 */ M2C_UNK it_80297DD8();
/* 297E28 */ M2C_UNK it_80297E28();
/* 297E5C */ M2C_UNK it_80297E5C();
/* 297E60 */ M2C_UNK it_80297E60();
/* 297E8C */ M2C_UNK it_80297E8C();
/* 297F94 */ M2C_UNK it_80297F94();
/* 297FC8 */ M2C_UNK it_80297FC8();
/* 297FF8 */ M2C_UNK it_80297FF8();
/* 298060 */ bool it_80298060(Item_GObj*);
/* 2980A0 */ bool it_802980A0(Item_GObj*);
/* 2980D4 */ bool it_802980D4(Item_GObj*);
/* 298114 */ bool it_80298114(Item_GObj*);
/* 298148 */ void it_80298148(Item_GObj*, Item_GObj*);
/* 3F6488 */ extern ItemStateTable it_803F6488[];
#define GALE01_2953C8
void it_802953C8(Item_GObj*);
void it_802953FC(Item_GObj*);
bool it_8029544C(Item_GObj*);
void it_80295454(Item_GObj*);
bool it_80295458(Item_GObj*);
void it_80295498(Item_GObj*);
bool it_802954C0(Item_GObj*);
void it_802954C8(Item_GObj*);
bool it_802954F8(Item_GObj*);
void it_80295524(Item_GObj*);
bool it_8029554C(Item_GObj*);
void it_80295554(Item_GObj*);
void it_8029557C(Item_GObj*);
bool it_802955AC(Item_GObj*);
bool it_802955E0(Item_GObj*);
void it_80295684(Item_GObj*);
bool it_802956AC(Item_GObj*);
void it_802956B4(Item_GObj*);
bool it_802956B8(Item_GObj*);
void it_802956EC(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F62C0[];
#define GALE01_2D3008
/* 2D3008 */ void it_802D3008(Item_GObj*);
/* 2D306C */ void it_802D306C(Item_GObj*);
/* 2D3070 */ void it_802D3070(Item_GObj*, Item_GObj*);
/* 2D3090 */ void it_802D3090(Item_GObj*);
/* 2D30C4 */ void it_802D30C4(Item_GObj*);
/* 2D30EC */ bool it_802D30EC(Item_GObj*);
/* 2D3120 */ void it_802D3120(Item_GObj*);
/* 2D3124 */ bool it_802D3124(Item_GObj*);
/* 2D3150 */ bool it_802D3150(Item_GObj*);
/* 2D3184 */ void it_802D3184(Item_GObj*);
/* 2D3188 */ bool it_802D3188(Item_GObj*);
/* 2D31B4 */ void it_802D31B4(Item_GObj*);
/* 2D31F4 */ bool it_802D31F4(Item_GObj*);
/* 2D3218 */ void it_802D3218(Item_GObj*);
/* 2D3238 */ bool it_802D3238(Item_GObj*);
/* 3F7FC8 */ extern ItemStateTable it_803F7FC8[];
#define GALE01_2D3B18
/* 2D3B18 */ void it_802D3B18(Item_GObj*);
/* 2D3B6C */ void it_802D3B6C(Item_GObj*, Item_GObj*);
/* 3F80C8 */ extern ItemStateTable it_803F80C8[];
#define GALE01_2C49E0
/* 2C49E0 */ void it_802C49E0(Item_GObj*);
/* 2C4A00 */ void it_802C4A00(Item_GObj*);
/* 2C4A40 */ HSD_GObj* it_802C4A40(Item_GObj*, Vec3*, float);
/* 2C4B38 */ M2C_UNK it_802C4B38();
/* 2C4BB8 */ M2C_UNK it_802C4BB8();
/* 2C4C08 */ M2C_UNK it_802C4C08();
/* 2C4C3C */ M2C_UNK it_802C4C3C();
/* 2C4C40 */ M2C_UNK it_802C4C40();
/* 2C4C90 */ bool it_802C4C90(Item_GObj*);
/* 2C4C98 */ bool it_802C4C98(Item_GObj*);
/* 2C4CB8 */ bool it_802C4CB8(Item_GObj*);
/* 2C4CC0 */ bool it_802C4CC0(Item_GObj*);
/* 2C4CC8 */ bool it_802C4CC8(Item_GObj*);
/* 2C4CD0 */ bool it_802C4CD0(Item_GObj*);
/* 2C4CD8 */ void it_802C4CD8(Item_GObj*, Item_GObj*);
/* 3F7750 */ extern ItemStateTable it_803F7750[];
#define GALE01_2C4D10
/* 2C4D10 */ M2C_UNK it_802C4D10();
/* 2C4F50 */ M2C_UNK it_802C4F50();
/* 2C5000 */ HSD_GObj* it_802C5000(Item_GObj*, Vec3*, s32, s32, float);
/* 2C519C */ void it_802C519C(Item_GObj*, Vec3*, s32, s32, float, float);
/* 2C53F0 */ void it_802C53F0(Item_GObj*, Vec3*, float, float, float);
/* 2C56A0 */ void it_802C56A0(Item_GObj*);
/* 2C573C */ void it_802C573C(Item_GObj*);
/* 2C578C */ void it_802C578C(Item_GObj*);
/* 2C57C8 */ M2C_UNK it_802C57C8();
/* 2C5B0C */ M2C_UNK it_802C5B0C();
/* 2C5B10 */ bool it_802C5B10(void);
/* 2C5B18 */ M2C_UNK it_802C5B18();
/* 2C5BF8 */ M2C_UNK it_802C5BF8();
/* 2C5CF4 */ M2C_UNK it_802C5CF4();
/* 2C5D64 */ M2C_UNK it_802C5D64();
/* 2C5DAC */ M2C_UNK it_802C5DAC();
/* 2C5DCC */ M2C_UNK it_802C5DCC();
/* 2C5DD0 */ M2C_UNK it_802C5DD0();
/* 2C5E18 */ M2C_UNK fn_802C5E18();
/* 2C5E5C */ M2C_UNK it_802C5E5C();
/* 2C5F7C */ M2C_UNK it_802C5F7C();
/* 2C6094 */ M2C_UNK it_802C6094();
/* 2C60AC */ bool it_802C60AC(void);
/* 2C60B4 */ bool it_802C60B4(Item_GObj*);
/* 2C60BC */ bool it_802C60BC(Item_GObj*);
/* 2C60C4 */ bool it_802C60C4(Item_GObj*);
/* 2C60CC */ bool it_802C60CC(Item_GObj*);
/* 2C6138 */ bool it_802C6138(Item_GObj*);
/* 2C6140 */ bool it_802C6140(Item_GObj*);
/* 2C61D4 */ void it_802C61D4(Item_GObj*, Item_GObj*);
/* 3F7760 */ extern ItemStateTable it_803F7760[];
#define GALE01_28FE90
/* 28FE90 */ void it_8028FE90(Item_GObj*);
/* 28FED4 */ void it_8028FED4(Item_GObj*);
/* 28FF1C */ M2C_UNK it_8028FF1C();
/* 28FF60 */ M2C_UNK it_8028FF60();
/* 28FF8C */ M2C_UNK it_8028FF8C();
/* 290070 */ M2C_UNK it_80290070();
/* 2900A0 */ M2C_UNK it_802900A0();
/* 2900CC */ void it_802900CC(Item_GObj*);
/* 2900F4 */ void it_802900F4(Item_GObj*);
/* 290114 */ void it_80290114(Item_GObj*);
/* 2901C0 */ M2C_UNK it_802901C0();
/* 29020C */ M2C_UNK it_8029020C();
/* 290238 */ M2C_UNK it_80290238();
/* 290314 */ M2C_UNK it_80290314();
/* 290404 */ M2C_UNK it_80290404();
/* 29047C */ M2C_UNK it_8029047C();
/* 290560 */ M2C_UNK it_80290560();
/* 2905AC */ M2C_UNK it_802905AC();
/* 2905D8 */ M2C_UNK it_802905D8();
/* 290614 */ M2C_UNK it_80290614();
/* 2906C4 */ M2C_UNK it_802906C4();
/* 2906E4 */ bool it_802906E4(Item_GObj*);
/* 290738 */ bool it_80290738(Item_GObj*);
/* 290794 */ void it_80290794(Item_GObj*);
/* 2907BC */ M2C_UNK it_802907BC();
/* 2907F0 */ bool it_802907F0(Item_GObj*);
/* 290830 */ bool it_80290830(Item_GObj*);
/* 290850 */ bool it_80290850(Item_GObj*);
/* 2908A4 */ bool it_802908A4(Item_GObj*);
/* 2908D8 */ M2C_UNK it_802908D8();
/* 290918 */ void it_80290918(Item_GObj*, Item_GObj*);
/* 3F5E00 */ extern ItemStateTable it_803F5E00[];
#define GALE01_2AD478
/* 2AD478 */ HSD_GObj* it_802AD478(Item_GObj*, Vec3*, s32, float);
/* 2AD590 */ Item_GObj* it_802AD590(Fighter_GObj*, Fighter_Part);
/* 2AD6B8 */ void it_802AD6B8(Item_GObj*);
/* 2AD6F0 */ void it_802AD6F0(Item_GObj*);
/* 2AD768 */ M2C_UNK it_802AD768();
/* 2AD8D0 */ M2C_UNK it_802AD8D0();
/* 2AD8D4 */ M2C_UNK it_802AD8D4();
/* 2AD8DC */ M2C_UNK it_802AD8DC();
/* 2AD9F0 */ M2C_UNK it_802AD9F0();
/* 2AD9F4 */ M2C_UNK it_802AD9F4();
/* 2AD9FC */ void it_802AD9FC(Item_GObj*, Item_GObj*);
/* 3F6C68 */ extern ItemStateTable it_803F6C68[];
#define GALE01_2AA494
/* 2AA75C */ bool it_802AA75C(Item_GObj*);
/* 2AA7C4 */ void it_802AA7C4(Item_GObj*, Item_GObj*);
/* 3F6B60 */ extern ItemStateTable it_803F6B60[];
#define GALE01_2AA054
/* 2AA054 */ void it_802AA054(Item_GObj*, Vec3*, Vec3*, float, float);
/* 2AA1D8 */ M2C_UNK it_802AA1D8();
/* 2AA22C */ M2C_UNK it_802AA22C();
/* 2AA264 */ M2C_UNK it_802AA264();
/* 2AA284 */ bool it_802AA284(Item_GObj*);
/* 2AA2E8 */ bool it_802AA2E8(Item_GObj*);
/* 2AA34C */ bool it_802AA34C(Item_GObj*);
/* 2AA354 */ bool it_802AA354(Item_GObj*);
/* 2AA35C */ bool it_802AA35C(Item_GObj*);
/* 2AA37C */ bool it_802AA37C(Item_GObj*);
/* 2AA474 */ void it_802AA474(Item_GObj*, Item_GObj*);
/* 3F6B28 */ extern ItemStateTable it_803F6B28[];
#define GALE01_2AA7E4
/* 2AA7E4 */ Fighter_GObj* it_802AA7E4(Item_GObj*);
/* 2AA7F0 */ enum_t it_802AA7F0(Item_GObj*);
/* 2AA810 */ M2C_UNK it_802AA810();
/* 2AA8C0 */ HSD_GObj* it_802AA8C0(Item_GObj*, Vec3*, enum_t, float);
/* 2AA9CC */ void it_802AA9CC(Item_GObj*);
/* 2AAA50 */ void it_802AAA50(Item_GObj*);
/* 2AAA80 */ M2C_UNK it_802AAA80();
/* 2AAB70 */ M2C_UNK it_802AAB70();
/* 2AAD48 */ M2C_UNK it_802AAD48();
/* 2AAEE4 */ M2C_UNK it_802AAEE4();
/* 2AAFDC */ M2C_UNK it_802AAFDC();
/* 2AB128 */ M2C_UNK it_802AB128();
/* 2AB140 */ M2C_UNK it_802AB140();
/* 2AB158 */ M2C_UNK it_802AB158();
/* 2AB2AC */ bool it_802AB2AC(Item_GObj*);
/* 2AB3C0 */ bool it_802AB3C0(Item_GObj*);
/* 2AB3C8 */ bool it_802AB3C8(Item_GObj*);
/* 2AB3D0 */ void it_802AB3D0(Item_GObj*, Item_GObj*);
/* 3F6B70 */ extern ItemStateTable it_803F6B70[];
#define GALE01_2AF940
/* 2AF940 */ M2C_UNK it_802AF940();
/* 2AFA2C */ void it_802AFA2C(Item_GObj*);
/* 2AFA70 */ M2C_UNK it_802AFA70();
/* 2AFBA4 */ M2C_UNK it_802AFBA4();
/* 2AFD2C */ M2C_UNK it_802AFD2C();
/* 2AFD44 */ M2C_UNK it_802AFD44();
/* 2AFD4C */ bool it_802AFD4C(Item_GObj*);
/* 2AFD54 */ bool it_802AFD54(Item_GObj*);
/* 2AFD5C */ bool it_802AFD5C(Item_GObj*);
/* 2AFD64 */ bool it_802AFD64(Item_GObj*);
/* 2AFD6C */ void it_802AFD6C(Item_GObj*, Item_GObj*);
/* 3F6F40 */ extern ItemStateTable it_803F6F40[];
#define GALE01_2AB3F0
/* 2AB3F0 */ void it_802AB3F0(Item_GObj*, void*, s32);
/* 2AB468 */ M2C_UNK it_802AB468();
/* 2AB4B8 */ M2C_UNK it_802AB4B8();
/* 2AB568 */ HSD_GObj* it_802AB568(Item_GObj*);
/* 2AB58C */ HSD_GObj* it_802AB58C(Item_GObj* owner, Vec3* pos,
float facing_dir);
/* 2AB90C */ void it_802AB90C(Item_GObj*);
/* 2AB9C0 */ void it_802AB9C0(Item_GObj*);
/* 2ABA4C */ M2C_UNK it_802ABA4C();
/* 2ABBB0 */ M2C_UNK it_802ABBB0();
/* 2ABCDC */ M2C_UNK it_802ABCDC();
/* 2AC050 */ bool it_802AC050(Item_GObj*);
/* 2AC074 */ bool it_802AC074(Item_GObj*);
/* 2AC098 */ bool it_802AC098(Item_GObj*);
/* 2AC338 */ bool it_802AC338(Item_GObj*);
/* 2AC35C */ bool it_802AC35C(Item_GObj*);
/* 2AC3F8 */ bool it_802AC3F8(Item_GObj*);
/* 2AC41C */ void it_802AC41C(Item_GObj*, Item_GObj*);
/* 3F6BC8 */ extern ItemStateTable it_803F6BC8[];
#define GALE01_2AC43C
/* 2AC43C */ M2C_UNK it_802AC43C();
/* 2AC58C */ M2C_UNK it_802AC58C();
/* 2AC5D8 */ M2C_UNK it_802AC5D8();
/* 2AC604 */ M2C_UNK it_802AC604();
/* 2AC62C */ M2C_UNK it_802AC62C();
/* 2AC6B0 */ M2C_UNK it_802AC6B0();
/* 2AC8A0 */ M2C_UNK it_802AC8A0();
/* 3F6C08 */ extern ItemStateTable it_803F6C08[];
#define GALE01_2BE598
/* 2BE598 */ void it_802BE598(Item_GObj*);
/* 2BE5B8 */ void it_802BE5B8(Item_GObj*);
/* 2BE5D8 */ void it_802BE5D8(void*, float);
/* 2BE65C */ M2C_UNK it_802BE65C();
/* 2BE958 */ void it_802BE958(void*);
/* 2BE9D8 */ HSD_GObj* it_802BE9D8(float, HSD_GObj*, Vec3*, s32);
/* 2BEB38 */ M2C_UNK it_802BEB38();
/* 2BEB5C */ M2C_UNK it_802BEB5C();
/* 2BEC58 */ M2C_UNK it_802BEC58();
/* 2BED54 */ M2C_UNK it_802BED54();
/* 2BEE88 */ M2C_UNK it_802BEE88();
/* 2BF030 */ M2C_UNK it_802BF030();
/* 2BF180 */ M2C_UNK it_802BF180();
/* 2BF28C */ M2C_UNK it_802BF28C();
/* 2BF4A0 */ M2C_UNK it_802BF4A0();
/* 2BF800 */ M2C_UNK it_802BF800();
/* 2BF900 */ M2C_UNK it_802BF900();
/* 2BFAFC */ M2C_UNK it_802BFAFC();
/* 2BFE34 */ void it_802BFE34(Item_GObj*);
/* 2BFE5C */ void it_802BFE5C(Item_GObj*, Vec3*, float);
/* 2BFEC4 */ void it_802BFEC4(void*);
/* 2C0010 */ void it_802C0010(Item_GObj*, void*);
/* 2C016C */ void it_802C016C(Item_GObj*, Item_GObj*);
/* 3F7558 */ extern ItemStateTable it_803F7558[];
#define GALE01_2DC69C
/* 2DC69C */ void it_802DC69C(Item_GObj*);
/* 2DC774 */ bool it_802DC774(Item_GObj*);
/* 2DC83C */ bool it_802DC83C(Item_GObj*);
/* 2DC8B8 */ void fn_802DC8B8(Item_GObj*);
/* 2DC910 */ bool it_802DC910(Item_GObj*);
/* 2DC918 */ void it_802DC918(Item_GObj*);
/* 2DC954 */ int it_802DC954(Item_GObj*);
/* 2DC990 */ void it_802DC990(Item_GObj*);
/* 2DCA5C */ int it_802DCA5C(Item_GObj*);
/* 2DCAA4 */ void it_802DCAA4(Item_GObj*);
/* 2DCB34 */ int it_802DCB34(Item_GObj*);
/* 2DCB9C */ void it_802DCB9C(Item_GObj*);
/* 2DCC58 */ bool it_802DCC58(Item_GObj*);
/* 2DCC60 */ void it_802DCC60(Item_GObj*);
/* 2DCC90 */ int it_802DCC90(Item_GObj*);
/* 2DCCCC */ void it_802DCCCC(Item_GObj*);
/* 2DCD54 */ bool it_802DCD54(Item_GObj*);
/* 2DCD9C */ void it_802DCD9C(Item_GObj*);
/* 2DCDC4 */ int it_802DCDC4(Item_GObj*);
/* 2DCE00 */ void it_802DCE00(Item_GObj*);
/* 2DCE74 */ void it_802DCE74(Item_GObj*);
/* 2DCEC4 */ void it_802DCEC4(Item_GObj*);
/* 2DCFBC */ void it_802DCFBC(Item_GObj*);
/* 2DD0A0 */ bool it_802DD0A0(Item_GObj*);
/* 2DD1B4 */ void it_802DD1B4(Item_GObj*);
/* 2DD1DC */ int it_802DD1DC(Item_GObj*);
/* 2DD25C */ bool it_802DD25C(Item_GObj*);
/* 2DD264 */ void it_802DD264(Item_GObj*);
/* 2DD290 */ void it_802DD290(Item_GObj*);
/* 2DD2DC */ void it_802DD2DC(Item_GObj*);
/* 2DD328 */ bool it_802DD328(Item_GObj*);
/* 2DD468 */ void it_802DD468(Item_GObj*);
/* 2DD46C */ int it_802DD46C(Item_GObj*);
/* 2DD4A8 */ void it_802DD4A8(Item_GObj*, s32, Item_StateChangeFlags);
/* 2DD4F4 */ void it_802DD4F4(Item_GObj*);
/* 2DD53C */ bool it_802DD53C(Item_GObj*);
/* 2DD598 */ void it_802DD598(Item_GObj*);
/* 2DD59C */ void it_802DD59C(Item_GObj*);
/* 2DD67C */ void it_802DD67C(Item_GObj*);
/* 2DD6D4 */ bool it_802DD6D4(Item_GObj*);
/* 2DD71C */ void it_802DD71C(Item_GObj*);
/* 2DD74C */ int it_802DD74C(Item_GObj*);
/* 2DD78C */ void it_802DD78C(Item_GObj*);
/* 2DD7D0 */ void it_802DD7D0(Item_GObj*, Item_GObj*);
/* 2DD7F0 */ Item_GObj* it_802DD7F0(s32, Vec3*, Vec3*, s32);
/* 2DDA84 */ bool it_802DDA84(Item_GObj*);
extern ItemStateTable it_803F85F0[];
#define GALE01_2E4A44
/* 2E4A44 */ void it_802E4A44(Item_GObj*);
/* 2E4B00 */ bool it_802E4B00(Item_GObj*);
/* 2E4C08 */ M2C_UNK it_802E4C08();
/* 2E4C68 */ M2C_UNK it_802E4C68();
/* 2E4CB0 */ M2C_UNK it_802E4CB0();
/* 2E4D78 */ M2C_UNK it_802E4D78();
/* 2E4DB4 */ M2C_UNK it_802E4DB4();
/* 2E4DF8 */ M2C_UNK it_802E4DF8();
/* 2E4E00 */ M2C_UNK it_802E4E00();
/* 2E4E30 */ M2C_UNK it_802E4E30();
/* 2E4E6C */ M2C_UNK it_802E4E6C();
/* 2E4F18 */ M2C_UNK it_802E4F18();
/* 2E4FB0 */ M2C_UNK it_802E4FB0();
/* 2E4FD8 */ M2C_UNK it_802E4FD8();
/* 2E503C */ M2C_UNK it_802E503C();
/* 2E50B0 */ M2C_UNK it_802E50B0();
/* 2E51C4 */ M2C_UNK it_802E51C4();
/* 2E521C */ M2C_UNK it_802E521C();
/* 2E52E0 */ M2C_UNK it_802E52E0();
/* 2E53C8 */ M2C_UNK it_802E53C8();
/* 2E5428 */ M2C_UNK it_802E5428();
/* 2E5514 */ M2C_UNK it_802E5514();
/* 2E5554 */ M2C_UNK it_802E5554();
/* 2E561C */ void it_802E561C(Item_GObj*);
/* 2E5644 */ M2C_UNK it_802E5644();
/* 2E568C */ M2C_UNK it_802E568C();
/* 2E5690 */ void it_802E5690(Item_GObj*);
/* 2E56E8 */ void it_802E56E8(Item_GObj*);
/* 2E5738 */ M2C_UNK it_802E5738();
/* 2E5780 */ M2C_UNK it_802E5780();
/* 2E57B0 */ M2C_UNK it_802E57B0();
/* 2E57D4 */ M2C_UNK it_802E57D4();
/* 2E5834 */ M2C_UNK it_802E5834();
/* 2E587C */ M2C_UNK it_802E587C();
/* 2E5880 */ M2C_UNK it_802E5880();
/* 2E58A0 */ M2C_UNK it_802E58A0();
/* 2E5900 */ M2C_UNK it_802E5900();
/* 2E5908 */ M2C_UNK it_802E5908();
/* 2E5924 */ M2C_UNK it_802E5924();
/* 2E5944 */ M2C_UNK it_802E5944();
/* 2E595C */ M2C_UNK it_802E595C();
/* 2E5AA4 */ void it_802E5AA4(Item_GObj*, Item_GObj*);
/* 3F8B48 */ extern ItemStateTable it_803F8B48[];
#define GALE01_2E878C
/* 2E878C */ void it_802E878C(Item_GObj*);
/* 2E87D8 */ bool it_802E87D8(Item_GObj*);
/* 2E87E0 */ bool it_802E87E0(Item_GObj*);
/* 2E87E8 */ bool it_802E87E8(Item_GObj*);
/* 2E87F0 */ bool it_802E87F0(Item_GObj*);
/* 2E87F8 */ bool it_802E87F8(Item_GObj*);
/* 2E881C */ bool it_802E881C(Item_GObj*);
/* 2E883C */ M2C_UNK it_802E883C();
/* 2E8864 */ M2C_UNK it_802E8864();
/* 2E8898 */ M2C_UNK it_802E8898();
/* 2E889C */ M2C_UNK it_802E889C();
/* 2E890C */ M2C_UNK it_802E890C();
/* 2E896C */ M2C_UNK it_802E896C();
/* 2E8974 */ M2C_UNK it_802E8974();
/* 2E8990 */ M2C_UNK it_802E8990();
/* 2E89B0 */ void it_802E89B0(Item_GObj*, Item_GObj*);
/* 2E89D0 */ M2C_UNK it_802E89D0();
/* 2E8ADC */ M2C_UNK it_802E8ADC();
/* 3F8E90 */ extern ItemStateTable it_803F8E90[];
#define GALE01_2D73D0
/* 2D73D0 */ void it_802D73D0(Item_GObj*, Item_GObj*);
/* 2D73F0 */ void it_802D73F0(Item_GObj*);
/* 2D747C */ M2C_UNK it_802D747C();
/* 2D74D0 */ M2C_UNK it_802D74D0();
/* 2D74D8 */ M2C_UNK it_802D74D8();
/* 2D7550 */ M2C_UNK it_802D7550();
/* 2D758C */ M2C_UNK it_802D758C();
/* 2D75F8 */ M2C_UNK it_802D75F8();
/* 2D7670 */ M2C_UNK it_802D7670();
/* 2D76EC */ M2C_UNK it_802D76EC();
/* 2D775C */ M2C_UNK it_802D775C();
/* 2D77C8 */ M2C_UNK it_802D77C8();
/* 2D788C */ M2C_UNK it_802D788C();
/* 2D795C */ M2C_UNK it_802D795C();
/* 2D7A18 */ M2C_UNK it_802D7A18();
/* 2D7A60 */ M2C_UNK it_802D7A60();
/* 2D7A90 */ M2C_UNK it_802D7A90();
/* 2D7AF0 */ M2C_UNK it_802D7AF0();
/* 2D7B3C */ M2C_UNK it_802D7B3C();
/* 2D7B84 */ M2C_UNK it_802D7B84();
/* 2D7BB4 */ M2C_UNK it_802D7BB4();
/* 2D7C14 */ void it_802D7C14(Item_GObj*);
/* 2D7C58 */ M2C_UNK it_802D7C58();
/* 2D7CB0 */ M2C_UNK it_802D7CB0();
/* 2D7CB4 */ void it_802D7CB4(Item_GObj*);
/* 2D7D18 */ void it_802D7D18(Item_GObj*);
/* 2D7D7C */ M2C_UNK it_802D7D7C();
/* 2D7DC4 */ M2C_UNK it_802D7DC4();
/* 2D7DF4 */ M2C_UNK it_802D7DF4();
/* 2D7E18 */ M2C_UNK it_802D7E18();
/* 2D7EAC */ M2C_UNK it_802D7EAC();
/* 2D7ED4 */ M2C_UNK it_802D7ED4();
/* 2D7F38 */ bool it_802D7F38(Item_GObj*);
/* 2D8098 */ M2C_UNK it_802D8098();
/* 2D813C */ M2C_UNK it_802D813C();
/* 2D8190 */ M2C_UNK it_802D8190();
/* 2D81D8 */ M2C_UNK it_802D81D8();
/* 2D81DC */ M2C_UNK it_802D81DC();
/* 2D81FC */ M2C_UNK it_802D81FC();
/* 2D8240 */ M2C_UNK it_802D8240();
/* 2D8274 */ M2C_UNK it_802D8274();
/* 2D82A4 */ M2C_UNK it_802D82A4();
/* 2D82C4 */ M2C_UNK it_802D82C4();
/* 2D8330 */ M2C_UNK it_802D8330();
/* 2D8378 */ M2C_UNK it_802D8378();
/* 2D837C */ M2C_UNK it_802D837C();
/* 2D839C */ M2C_UNK it_802D839C();
/* 2D8408 */ M2C_UNK it_802D8408();
/* 2D8450 */ M2C_UNK it_802D8450();
/* 2D846C */ M2C_UNK it_802D846C();
/* 2D848C */ M2C_UNK it_802D848C();
/* 2D84D8 */ M2C_UNK it_802D84D8(Item_GObj*, Item_GObj*);
/* 3F8320 */ extern ItemStateTable it_803F8320[];
#define GALE01_2E2470
/* 2E2470 */ void it_802E2470(Item_GObj*);
/* 2E257C */ bool it_802E257C(Item_GObj*);
/* 2E269C */ M2C_UNK it_802E269C();
/* 2E26F4 */ M2C_UNK it_802E26F4();
/* 2E273C */ M2C_UNK it_802E273C();
/* 2E2778 */ M2C_UNK it_802E2778();
/* 2E27B4 */ M2C_UNK it_802E27B4();
/* 2E28E0 */ M2C_UNK it_802E28E0();
/* 2E2A58 */ M2C_UNK it_802E2A58();
/* 2E2B38 */ M2C_UNK it_802E2B38();
/* 2E2BC0 */ M2C_UNK it_802E2BC0();
/* 2E2C0C */ M2C_UNK it_802E2C0C();
/* 2E2C14 */ M2C_UNK it_802E2C14();
/* 2E2C44 */ M2C_UNK it_802E2C44();
/* 2E2C80 */ M2C_UNK it_802E2C80();
/* 2E2CFC */ M2C_UNK it_802E2CFC();
/* 2E2D68 */ M2C_UNK it_802E2D68();
/* 2E2D90 */ M2C_UNK it_802E2D90();
/* 2E2DF4 */ M2C_UNK it_802E2DF4();
/* 2E2E30 */ M2C_UNK it_802E2E30();
/* 2E2E90 */ M2C_UNK it_802E2E90();
/* 2E2F08 */ M2C_UNK it_802E2F08();
/* 2E3024 */ M2C_UNK it_802E3024();
/* 2E3098 */ M2C_UNK it_802E3098();
/* 2E3110 */ M2C_UNK it_802E3110();
/* 2E31B8 */ M2C_UNK it_802E31B8();
/* 2E31BC */ M2C_UNK it_802E31BC();
/* 3F89C8 */ extern ItemStateTable it_803F89C8[];
#define GALE01_28B08C
/* 28B08C */ int it_8028B08C(Item_GObj* item_gobj, int statenum);
/* 28B0B8 */ void it_8028B0B8(Item_GObj* item_gobj);
/* 28B0EC */ void it_8028B0EC(Item_GObj* item_gobj);
/* 28B144 */ bool it_8028B144(Item_GObj* item_gobj);
/* 28B14C */ void it_8028B14C(Item_GObj* item_gobj);
/* 28B150 */ bool it_8028B150(Item_GObj* item_gobj);
/* 28B17C */ void it_8028B17C(Item_GObj* item_gobj);
/* 28B1A4 */ bool it_8028B1A4(Item_GObj* item_gobj);
/* 28B2EC */ void it_8028B2EC(Item_GObj* item_gobj);
/* 28B394 */ bool it_8028B394(Item_GObj* item_gobj);
/* 28B3C0 */ void it_8028B3C0(Item_GObj* item_gobj);
/* 28B3E0 */ void it_8028B3E0(Item_GObj* item_gobj);
/* 28B42C */ void it_8028B42C(Item_GObj* item_gobj);
/* 28B4D4 */ bool it_8028B4D4(Item_GObj* item_gobj);
/* 28B4F8 */ bool it_8028B4F8(Item_GObj* item_gobj);
/* 28B51C */ bool it_8028B51C(Item_GObj* item_gobj);
/* 28B540 */ bool it_8028B540(Item_GObj* item_gobj);
/* 28B560 */ bool it_8028B560(Item_GObj* item_gobj);
/* 28B580 */ void it_8028B580(Item_GObj* item_gobj);
/* 28B5A8 */ bool it_8028B5A8(Item_GObj* item_gobj);
/* 28B5B0 */ void it_8028B5B0(Item_GObj* item_gobj);
/* 28B5B4 */ bool it_8028B5B4(Item_GObj* item_gobj);
/* 28B5E8 */ void it_8028B5E8(Item_GObj* item_gobj);
/* 28B60C */ bool it_8028B60C(Item_GObj* item_gobj);
/* 28B614 */ void it_8028B614(Item_GObj* item_gobj);
/* 28B618 */ void it_8028B618(Item_GObj* item_gobj, f32 speed);
/* 28B648 */ void it_8028B648(Item_GObj* item_gobj, f32 speed);
/* 28B6B0 */ void it_8028B6B0(Item_GObj* item_gobj, f32 speed);
/* 28B718 */ void it_8028B718(Item_GObj* item_gobj, f32 speed);
/* 28B780 */ void it_8028B780(Item_GObj* item_gobj, f32 speed);
/* 28B7E8 */ void it_8028B7E8(Item_GObj* item_gobj, f32 speed);
/* 28B850 */ void it_8028B850(Item_GObj* item_gobj, f32 speed);
/* 28B8B8 */ void it_8028B8B8(Item_GObj* item_gobj, HSD_GObj*);
/* 3F5AB0 */ extern ItemStateTable it_803F5AB0[];
/* 3F70B8 */ extern ItemStateTable it_803F70B8[];
#define GALE01_2E05A0
/* 2E05A0 */ void it_802E05A0(Item_GObj*);
/* 2E0678 */ M2C_UNK it_802E0678();
/* 2E06B4 */ M2C_UNK it_802E06B4();
/* 2E06BC */ M2C_UNK it_802E06BC();
/* 2E06F8 */ M2C_UNK it_802E06F8();
/* 2E0734 */ M2C_UNK it_802E0734();
/* 2E0974 */ M2C_UNK it_802E0974();
/* 2E09BC */ M2C_UNK it_802E09BC();
/* 2E0B78 */ M2C_UNK it_802E0B78();
/* 2E0D9C */ M2C_UNK it_802E0D9C();
/* 2E0E10 */ M2C_UNK it_802E0E10();
/* 2E0EE0 */ bool it_802E0EE0(Item_GObj*);
/* 2E0F1C */ M2C_UNK it_802E0F1C();
/* 2E0F70 */ void it_802E0F70(Item_GObj*);
/* 2E0F98 */ M2C_UNK it_802E0F98();
/* 2E0FE0 */ M2C_UNK it_802E0FE0();
/* 2E0FE4 */ void it_802E0FE4(Item_GObj*);
/* 2E1040 */ M2C_UNK it_802E1040();
/* 2E10A0 */ M2C_UNK it_802E10A0();
/* 2E10A4 */ M2C_UNK it_802E10A4();
/* 2E10C8 */ void it_802E10C8(Item_GObj*);
/* 2E1128 */ M2C_UNK it_802E1128();
/* 2E1170 */ M2C_UNK it_802E1170();
/* 2E11A0 */ M2C_UNK it_802E11A0();
/* 2E11E0 */ M2C_UNK it_802E11E0();
/* 2E13EC */ M2C_UNK it_802E13EC();
/* 2E1498 */ M2C_UNK it_802E1498();
/* 2E1578 */ M2C_UNK it_802E1578();
/* 2E15B0 */ M2C_UNK it_802E15B0();
/* 2E1648 */ M2C_UNK it_802E1648();
/* 2E1694 */ M2C_UNK it_802E1694();
/* 2E16D8 */ M2C_UNK it_802E16D8(Item_GObj*, Item_GObj*);
/* 2E16F8 */ M2C_UNK it_802E16F8();
extern ItemStateTable it_803F88C0[];
#define GALE01_2BD158
/* 2BD158 */ void it_802BD158(Item_GObj* gobj, Vec3*, int, float);
/* 2BD240 */ bool it_802BD240(Item_GObj*);
/* 2BD248 */ M2C_UNK it_802BD248();
/* 2BD2EC */ M2C_UNK it_802BD2EC();
/* 2BD30C */ void it_802BD30C(Item_GObj*, Item_GObj*);
/* 3F7488 */ extern ItemStateTable it_803F7488[];
#define GALE01_2BDA40
/* 2BDA40 */ int it_802BDA40(Item_GObj*, int);
/* 2BDA64 */ Item_GObj* it_802BDA64(HSD_GObj* parent, Vec3* pos,
Fighter_Part arg2, f32 dir);
/* 2BDB4C */ void it_802BDB4C(Item_GObj*);
/* 2BDB94 */ void it_802BDB94(Item_GObj*);
/* 2BDBF8 */ void it_802BDBF8(Item_GObj*);
/* 2BDC18 */ void it_802BDC18(Item_GObj*);
/* 2BDC38 */ bool it_802BDC38(Item_GObj*);
/* 2BDC74 */ void it_802BDC74(Item_GObj*);
/* 2BDCC0 */ bool it_802BDCC0(Item_GObj*);
/* 2BDD3C */ void it_802BDD3C(Item_GObj*);
/* 2BDD40 */ void it_802BDD40(Item_GObj*, f32 arg1);
/* 2BDDB4 */ void it_802BDDB4(Item_GObj*, f32 arg1);
/* 2BDDF8 */ void it_802BDDF8(Item_GObj*, HSD_GObj*);
/* 3F74F8 */ extern ItemStateTable it_803F74F8[];
#define GALE01_2BDE18
/* 2BDE18 */ HSD_GObj* it_802BDE18(Item_GObj*, Vec3*, Fighter_Part, enum_t,
float);
/* 2BDEFC */ void it_802BDEFC(Item_GObj*);
/* 2BDF40 */ void it_802BDF40(Item_GObj* gobj);
/* 2BDFA0 */ void it_802BDFA0(Item_GObj* gobj);
/* 2BDFC0 */ void it_802BDFC0(Item_GObj* gobj);
/* 2BDFE0 */ void it_802BDFE0(Item_GObj*);
/* 2BE02C */ M2C_UNK it_802BE02C();
/* 2BE100 */ void it_802BE100(Item_GObj* gobj);
/* 2BE168 */ M2C_UNK it_802BE168();
/* 2BE1F4 */ void it_802BE1F4(Item_GObj*, Item_GObj*);
/* 3F7528 */ extern ItemStateTable it_803F7528[];
#define GALE01_2BE214
/* 2BE214 */ void it_802BE214(Item_GObj* gobj, Vec3* pos, enum_t,
float facing_dir);
/* 2BE2E8 */ M2C_UNK it_802BE2E8();
/* 2BE408 */ M2C_UNK it_802BE408();
/* 2BE458 */ M2C_UNK it_802BE458();
/* 2BE488 */ bool it_802BE488(Item_GObj*);
/* 2BE4AC */ bool it_802BE4AC(Item_GObj*);
/* 2BE4D0 */ bool it_802BE4D0(Item_GObj*);
/* 2BE4F4 */ bool it_802BE4F4(Item_GObj*);
/* 2BE518 */ bool it_802BE518(Item_GObj*);
/* 2BE538 */ bool it_802BE538(Item_GObj*);
/* 2BE578 */ void it_802BE578(Item_GObj*, Item_GObj*);
/* 3F7548 */ extern ItemStateTable it_803F7548[];
#define GALE01_2BD32C
/* 2BD32C */ M2C_UNK it_802BD32C();
/* 2BD45C */ void it_802BD45C(Item_GObj* gobj);
/* 2BD47C */ void it_802BD47C(Item_GObj*);
/* 2BD4AC */ HSD_GObj* it_802BD4AC(Item_GObj*, Vec3*, u8, s32, float);
/* 2BD628 */ void it_802BD628(Item_GObj*);
/* 2BD6D4 */ M2C_UNK it_802BD6D4();
/* 2BD6DC */ M2C_UNK it_802BD6DC();
/* 2BD6E0 */ M2C_UNK it_802BD6E0();
/* 2BD718 */ M2C_UNK it_802BD718();
/* 2BD748 */ void it_802BD748(Item_GObj*);
/* 2BD7E0 */ M2C_UNK it_802BD7E0();
/* 2BD818 */ M2C_UNK it_802BD818();
/* 2BD864 */ M2C_UNK it_802BD864();
/* 2BD8CC */ void it_802BD8CC(Item_GObj*);
/* 2BD938 */ bool it_802BD938(Item_GObj*);
/* 2BD978 */ bool it_802BD978(Item_GObj*);
/* 2BD99C */ bool it_802BD99C(Item_GObj*);
/* 2BD9C0 */ bool it_802BD9C0(Item_GObj*);
/* 2BD9E4 */ bool it_802BD9E4(Item_GObj*);
/* 2BDA08 */ void it_802BDA08(Item_GObj*, Item_GObj*);
/* 2BDB94 */ void it_802BDB94(Item_GObj* gobj);
/* 3F74A8 */ extern ItemStateTable it_803F74A8[];
#define GALE01_2B1DEC
/* 2B1DEC */ int it_802B1DEC(Item_GObj*);
/* 2B1DF8 */ Item_GObj* it_802B1DF8(Item_GObj*, Vec3*, Vec3*, s32, s32, s32);
/* 2B1FC8 */ s32 it_802B1FC8(Item_GObj*);
/* 2B1FE8 */ void it_802B1FE8(Item_GObj*, Vec3*);
/* 2B202C */ void it_802B202C(Item_GObj*);
/* 2B2080 */ M2C_UNK it_802B2080();
/* 2B20DC */ M2C_UNK it_802B20DC();
/* 2B211C */ M2C_UNK it_802B211C();
/* 2B21A8 */ M2C_UNK it_802B21A8();
/* 2B21E0 */ M2C_UNK it_802B21E0();
/* 2B22B8 */ M2C_UNK it_802B22B8();
/* 2B2340 */ M2C_UNK it_802B2340();
/* 2B2508 */ bool it_802B2508(Item_GObj*);
/* 2B2510 */ bool it_802B2510(Item_GObj*);
/* 2B2518 */ bool it_802B2518(Item_GObj*);
/* 2B2520 */ bool it_802B2520(Item_GObj*);
/* 2B2528 */ void it_802B2528(Item_GObj*, Item_GObj*);
/* 3F70C8 */ extern ItemStateTable it_803F70C8[];
#define GALE01_2B3EFC
/* 2B3EFC */ M2C_UNK it_802B3EFC();
/* 2B3F20 */ M2C_UNK it_802B3F20();
/* 2B3F88 */ M2C_UNK it_802B3F88();
/* 2B4224 */ M2C_UNK it_802B4224();
/* 2B43B0 */ M2C_UNK it_802B43B0();
/* 2B43D0 */ M2C_UNK it_802B43D0();
/* 2B4450 */ M2C_UNK it_802B4450();
/* 2B45D0 */ M2C_UNK it_802B45D0();
/* 2B45E8 */ M2C_UNK it_802B45E8();
/* 2B45F0 */ bool it_802B45F0(Item_GObj*);
/* 2B4638 */ bool it_802B4638(Item_GObj*);
/* 2B4680 */ bool it_802B4680(Item_GObj*);
/* 2B46C8 */ bool it_802B46C8(Item_GObj*);
/* 2B4A18 */ bool it_802B4A18(Item_GObj*);
/* 2B4A60 */ bool it_802B4A60(Item_GObj*);
/* 2B4AA8 */ void it_802B4AA8(Item_GObj*, Item_GObj*);
/* 3F71D8 */ extern ItemStateTable it_803F71D8[];
#define GALE01_2B3368
/* 2B3368 */ M2C_UNK it_802B3368();
/* 2B338C */ void it_802B338C(Item_GObj*, Vec3*, float facing_dir, u32);
/* 2B34E4 */ void it_802B34E4(Item_GObj*);
/* 2B3544 */ void it_802B3544(Item_GObj* gobj);
/* 2B3554 */ M2C_UNK it_802B3554();
/* 2B3680 */ M2C_UNK it_802B3680();
/* 2B36BC */ M2C_UNK it_802B36BC();
/* 2B3790 */ M2C_UNK it_802B3790();
/* 2B37F0 */ M2C_UNK it_802B37F0();
/* 2B3808 */ M2C_UNK it_802B3808();
/* 2B397C */ M2C_UNK it_802B397C();
/* 2B3A94 */ bool it_802B3A94(Item_GObj*);
/* 2B3AF8 */ bool it_802B3AF8(Item_GObj*);
/* 2B3C44 */ bool it_802B3C44(Item_GObj*);
/* 2B3CA8 */ bool it_802B3CA8(Item_GObj*);
/* 2B3D0C */ bool it_802B3D0C(Item_GObj*);
/* 2B3D70 */ bool it_802B3D70(Item_GObj*);
/* 2B3EDC */ void it_802B3EDC(Item_GObj*, Item_GObj*);
/* 3F7190 */ extern ItemStateTable it_803F7190[];
#define GALE01_2D3260
void it_802D3260(Item_GObj*);
void it_802D32D8(Item_GObj*);
void it_802D32DC(Item_GObj*, Item_GObj*);
bool it_802D32FC(Item_GObj*);
void it_802D3370(Item_GObj*);
bool it_802D33AC(Item_GObj*);
void it_802D33F8(Item_GObj*);
bool it_802D34A4(Item_GObj*);
void it_802D3508(Item_GObj*);
bool it_802D3544(Item_GObj*);
void it_802D3590(Item_GObj*);
bool it_802D3600(Item_GObj*);
void it_802D3624(Item_GObj*);
bool it_802D3688(Item_GObj*);
extern ItemStateTable it_803F7FF8[];
#define GALE01_2D5ABC
/* 2D5ABC */ void it_802D5ABC(Item_GObj*);
/* 2D5B14 */ void it_802D5B14(Item_GObj*);
/* 2D5B60 */ bool it_802D5B60(Item_GObj*);
/* 2D5BBC */ void it_802D5BBC(Item_GObj*);
/* 2D5BDC */ bool it_802D5BDC(Item_GObj*);
/* 2D5C00 */ void it_802D5C00(Item_GObj*);
/* 2D5C60 */ bool it_802D5C60(Item_GObj*);
/* 2D5CB0 */ void it_802D5CB0(Item_GObj*);
/* 2D5CD0 */ bool it_802D5CD0(Item_GObj*);
/* 2D5CD8 */ void it_802D5CD8(Item_GObj*, HSD_GObj*);
/* 3F8250 */ extern ItemStateTable it_803F8250[];
#define GALE01_294DA0
/* 294DA0 */ bool it_80294DA0(Item_GObj*);
/* 294DC0 */ HSD_GObj* it_80294DC0(Vec3*);
/* 294E78 */ void it_80294E78(Item_GObj*, float);
/* 294EB0 */ void it_80294EB0(Item_GObj*, Vec3*, Vec3*);
/* 2950D4 */ void it_802950D4(Item_GObj*, bool);
/* 295118 */ void it_80295118(Item_GObj*);
/* 29524C */ void it_8029524C(Item_GObj*);
/* 295298 */ void it_80295298(Item_GObj*);
/* 295340 */ void it_80295340(Item_GObj*);
/* 2953A8 */ void it_802953A8(Item_GObj*, HSD_GObj*);
/* 3F6270 */ extern ItemStateTable it_803F6270[];
#define GALE01_2CF814
/* 2CF814 */ void it_802CF814(Item_GObj*);
/* 2CF880 */ void it_802CF880(Item_GObj*);
/* 2CF884 */ void it_802CF884(Item_GObj*, Item_GObj*);
/* 2CF8A4 */ void it_802CF8A4(Item_GObj*);
/* 2CF908 */ void it_802CF908(Item_GObj*);
/* 2CF978 */ bool it_802CF978(Item_GObj*);
/* 2CFA74 */ void it_802CFA74(Item_GObj*);
/* 2CFAB0 */ bool it_802CFAB0(Item_GObj*);
/* 2CFAFC */ void it_802CFAFC(Item_GObj*);
/* 2CFB78 */ void it_802CFB78(Item_GObj*);
/* 2CFBDC */ bool it_802CFBDC(Item_GObj*);
/* 2CFC00 */ void it_802CFC00(Item_GObj*);
/* 2CFC20 */ bool it_802CFC20(Item_GObj*);
/* 3F7DE8 */ extern ItemStateTable it_803F7DE8[];
#define GALE01_28CFE0
/* 28CFE0 */ M2C_UNK it_8028CFE0();
/* 28D090 */ M2C_UNK it_8028D090();
/* 28D100 */ M2C_UNK it_8028D100();
/* 28D26C */ M2C_UNK it_8028D26C();
/* 28D390 */ M2C_UNK it_8028D390();
/* 28D3B8 */ M2C_UNK it_8028D3B8();
/* 28D4A8 */ M2C_UNK fn_8028D4A8();
/* 28D4E4 */ M2C_UNK it_8028D4E4();
/* 28D56C */ M2C_UNK it_8028D56C();
/* 28D59C */ void it_8028D59C(Item_GObj*);
/* 28D62C */ M2C_UNK it_8028D62C();
/* 28D6C0 */ M2C_UNK it_8028D6C0();
/* 28D6C8 */ M2C_UNK it_8028D6C8();
/* 28D6CC */ M2C_UNK it_8028D6CC();
/* 28D7F0 */ M2C_UNK it_8028D7F0();
/* 28D818 */ M2C_UNK it_8028D818();
/* 28D820 */ M2C_UNK it_8028D820();
/* 28D850 */ M2C_UNK it_8028D850();
/* 28D898 */ void it_8028D898(Item_GObj*);
/* 28D8D4 */ M2C_UNK it_8028D8D4();
/* 28D8DC */ M2C_UNK it_8028D8DC();
/* 28D8E0 */ void it_8028D8E0(Item_GObj*);
/* 28D940 */ M2C_UNK it_8028D940();
/* 28D998 */ M2C_UNK it_8028D998();
/* 28D9C8 */ M2C_UNK it_8028D9C8();
/* 28D9F4 */ void it_8028D9F4(Item_GObj*);
/* 28DA30 */ M2C_UNK it_8028DA30();
/* 28DA88 */ M2C_UNK it_8028DA88();
/* 28DAB8 */ M2C_UNK it_8028DAB8();
/* 28DAE4 */ M2C_UNK it_8028DAE4();
/* 28DC5C */ M2C_UNK it_8028DC5C();
/* 28DD88 */ M2C_UNK it_8028DD88();
/* 28DFE8 */ M2C_UNK it_8028DFE8();
/* 28E170 */ M2C_UNK it_8028E170();
/* 28E2D4 */ M2C_UNK it_8028E2D4();
/* 28E370 */ M2C_UNK it_8028E370();
/* 28E3A0 */ M2C_UNK it_8028E3A0();
/* 28E3CC */ void it_8028E3CC(Item_GObj*);
/* 28E408 */ M2C_UNK it_8028E408();
/* 28E410 */ M2C_UNK it_8028E410();
/* 28E414 */ M2C_UNK it_8028E414();
/* 28E540 */ bool it_8028E540(Item_GObj*);
/* 28E584 */ bool it_8028E584(Item_GObj*);
/* 28E5C8 */ bool it_8028E5C8(Item_GObj*);
/* 28E600 */ bool it_8028E600(Item_GObj*);
/* 28E624 */ bool it_8028E624(Item_GObj*);
/* 28E684 */ bool it_8028E684(Item_GObj*);
/* 28E6C0 */ M2C_UNK it_8028E6C0();
/* 28E718 */ void it_8028E718(Item_GObj*, Item_GObj*);
/* 3F5C48 */ extern ItemStateTable it_803F5C48[];
#define GALE01_2B4AC8
/* 2B4AC8 */ void it_802B4AC8(Item_GObj* gobj, Vec3*, float facing_dir,
float x);
/* 2B4BA0 */ M2C_UNK it_802B4BA0();
/* 2B4C10 */ M2C_UNK it_802B4C10();
/* 2B4C38 */ M2C_UNK it_802B4C38();
/* 2B4CC4 */ M2C_UNK it_802B4CC4();
/* 2B4CC8 */ M2C_UNK it_802B4CC8();
/* 2B4CF4 */ M2C_UNK it_802B4CF4();
/* 2B4D1C */ M2C_UNK it_802B4D1C();
/* 2B4F1C */ M2C_UNK it_802B4F1C();
/* 2B4F4C */ M2C_UNK it_802B4F4C();
/* 2B4F78 */ void it_802B4F78(Item_GObj*);
/* 2B4FA0 */ M2C_UNK it_802B4FA0();
/* 2B51A0 */ M2C_UNK it_802B51A0();
/* 2B5284 */ M2C_UNK it_802B5284();
/* 2B52B8 */ bool it_802B52B8(Item_GObj*);
/* 2B52EC */ bool it_802B52EC(Item_GObj*);
/* 2B5320 */ bool it_802B5320(Item_GObj*);
/* 2B5354 */ bool it_802B5354(Item_GObj*);
/* 2B5374 */ bool it_802B5374(Item_GObj*);
/* 2B53CC */ M2C_UNK it_802B53CC();
/* 2B5458 */ M2C_UNK it_802B5458();
/* 2B5478 */ M2C_UNK it_802B5478();
/* 2B54E4 */ void it_802B54E4(Item_GObj*, Item_GObj*);
/* 3F7220 */ extern ItemStateTable it_803F7220[];
#define GALE01_2B7150
/* 2A77DC */ void it_802A77DC(Item_GObj* gobj);
/* 2B7150 */ void it_802B7150(Item_GObj*);
/* 2B7160 */ M2C_UNK it_802B7160();
/* 2B743C */ M2C_UNK it_802B743C();
/* 2B75FC */ M2C_UNK it_802B75FC();
/* 2B7B84 */ void it_802B7B84(Item_GObj* gobj);
/* 2B7C18 */ Item_GObj* it_802B7C18(Fighter_GObj*, Vec3*, float facing_dir);
/* 2B7E34 */ M2C_UNK fn_802B7E34();
/* 2B8048 */ void it_802B8048(Item_GObj* gobj);
/* 2B805C */ M2C_UNK fn_802B805C();
/* 2B8370 */ void it_802B8370(Item_GObj* gobj);
/* 2B8384 */ M2C_UNK fn_802B8384();
/* 2B8510 */ void it_802B8510(Item_GObj* gobj);
/* 2B8524 */ M2C_UNK fn_802B8524();
/* 2B8670 */ void it_802B8670(Item_GObj* gobj);
/* 2B8684 */ M2C_UNK fn_802B8684();
/* 2B8800 */ void it_802B8800(Item_GObj* gobj);
/* 2B8814 */ M2C_UNK fn_802B8814();
/* 2B8948 */ void it_802B8948(Item_GObj* gobj);
/* 2B895C */ M2C_UNK fn_802B895C();
/* 2B8B40 */ void it_802B8B40(Item_GObj* gobj);
/* 2B8B54 */ M2C_UNK fn_802B8B54();
/* 2B8D24 */ void it_802B8D24(Item_GObj* gobj);
/* 2B8D38 */ M2C_UNK fn_802B8D38();
/* 2B8FF8 */ void it_802B8FF8(Item_GObj* gobj);
/* 2B900C */ M2C_UNK it_802B900C();
/* 2B91C4 */ M2C_UNK it_802B91C4();
/* 2B9328 */ M2C_UNK it_802B9328();
/* 2B99A0 */ M2C_UNK it_802B99A0();
/* 2B9CE8 */ M2C_UNK it_802B9CE8();
/* 2B9FD4 */ M2C_UNK it_802B9FD4();
/* 2BA194 */ M2C_UNK it_802BA194();
/* 2BA2D8 */ M2C_UNK it_802BA2D8();
/* 2BA3BC */ M2C_UNK it_802BA3BC();
/* 2BA5DC */ M2C_UNK it_802BA5DC();
/* 2BA760 */ M2C_UNK it_802BA760();
/* 2BA97C */ void it_802BA97C(Item_GObj*);
/* 2BA9B8 */ M2C_UNK it_802BA9B8();
/* 2BAA08 */ M2C_UNK it_802BAA08();
/* 2BAA58 */ void it_802BAA58(Item_GObj* gobj);
/* 2BAA94 */ M2C_UNK it_802BAA94();
/* 2BAAE4 */ void it_802BAAE4(HSD_GObj*, Vec3*, float facing_dir);
/* 2BAB40 */ M2C_UNK it_802BAB40();
/* 2BAB7C */ M2C_UNK it_802BAB7C();
/* 2BABB8 */ M2C_UNK it_802BABB8();
/* 2BAC3C */ void it_802BAC3C(Fighter_GObj* gobj);
/* 2BAC80 */ void it_802BAC80(Fighter_GObj* gobj);
/* 2BACC4 */ void it_802BACC4(Fighter_GObj* gobj);
/* 2BAEA0 */ void it_802BAEA0(Item_GObj*, Item_GObj*);
/* 3F73A8 */ extern ItemStateTable it_803F73A8[];
#define GALE01_2B62D0
/* 2B6C28 */ bool it_802B6C28(Item_GObj*);
/* 2B6C7C */ bool it_802B6C7C(Item_GObj*);
/* 2B6CD0 */ bool it_802B6CD0(Item_GObj*);
/* 2B6D24 */ bool it_802B6D24(Item_GObj*);
/* 2B6E4C */ bool it_802B6E4C(Item_GObj*);
/* 2B7104 */ void it_802B7104(Item_GObj*, Item_GObj*);
/* 3F7340 */ extern ItemStateTable it_803F7340[];
#define GALE01_294AB0
/* 294AB0 */ void it_80294AB0(Item_GObj*);
/* 294BE4 */ void it_80294BE4(Item_GObj*);
/* 294C14 */ void it_80294C14(Item_GObj*);
/* 294C3C */ void it_80294C3C(Item_GObj*);
/* 294CE4 */ void it_80294CE4(Item_GObj*);
/* 294D4C */ bool it_80294D4C(Item_GObj*);
/* 294D54 */ bool it_80294D54(Item_GObj*);
/* 294D5C */ bool it_80294D5C(Item_GObj*);
/* 294D7C */ bool it_80294D7C(Item_GObj*);
/* 3F6220 */ extern ItemStateTable it_803F6220[];
#define GALE01_2BAEEC
/* 2BCE94 */ void it_802BCE94(Item_GObj*);
/* 2BD10C */ void it_802BD10C(Item_GObj*, Item_GObj*);
/* 3F7438 */ extern ItemStateTable it_803F7438[];
#define GALE01_2B18B0
/* 2B18B0 */ M2C_UNK it_802B18B0();
/* 2B19AC */ Item_GObj* it_802B19AC(Item_GObj*, Vec3* cur_pos, u32, u32,
float facing_dir);
/* 2B1AAC */ void it_802B1AAC(Item_GObj*);
/* 2B1AD4 */ M2C_UNK it_802B1AD4();
/* 2B1C34 */ M2C_UNK it_802B1C34();
/* 2B1C38 */ bool it_802B1C38(void);
/* 2B1C40 */ void it_802B1C40(Item_GObj*, Item_GObj*);
/* 3F70A8 */ extern ItemStateTable it_803F70A8[];
#define GALE01_2AFD8C
/* 2AFD8C */ Item_GObj* it_802AFD8C(Item_GObj*, Vec3*, u32, float);
/* 2AFEA8 */ Item_GObj* it_802AFEA8(Item_GObj* gobj, Fighter_GObj* owner_gobj,
u32);
/* 2AFEF8 */ void it_802AFEF8(Item_GObj*);
/* 2AFF08 */ M2C_UNK it_802AFF08();
/* 2B00F4 */ M2C_UNK it_802B00F4();
/* 2B0210 */ M2C_UNK it_802B0210();
/* 2B024C */ M2C_UNK it_802B024C();
/* 2B033C */ M2C_UNK it_802B033C();
/* 2B0444 */ M2C_UNK it_802B0444();
/* 2B0464 */ M2C_UNK it_802B0464();
/* 2B0544 */ M2C_UNK it_802B0544();
/* 2B0548 */ M2C_UNK it_802B0548();
/* 2B057C */ M2C_UNK it_802B057C();
/* 2B0580 */ M2C_UNK it_802B0580();
/* 2B0598 */ M2C_UNK it_802B0598();
/* 2B05CC */ M2C_UNK it_802B05CC();
/* 2B0900 */ M2C_UNK it_802B0900();
/* 2B0AB8 */ M2C_UNK it_802B0AB8();
/* 2B0C5C */ bool it_802B0C5C(void);
/* 2B0C64 */ M2C_UNK it_802B0C64();
/* 2B0D84 */ bool it_802B0D84(Item_GObj*);
/* 2B0F34 */ bool it_802B0F34(Item_GObj*);
/* 2B10E4 */ bool it_802B10E4(Item_GObj*);
/* 2B1294 */ bool it_802B1294(Item_GObj*);
/* 2B14DC */ bool it_802B14DC(Item_GObj*);
/* 2B16E4 */ bool it_802B16E4(Item_GObj*);
/* 2B1890 */ void it_802B1890(Item_GObj*, Item_GObj*);
/* 3F6F50 */ extern ItemStateTable it_803F6F50[];
#define GALE01_2B1C60
/* 2B1C60 */ Item_GObj* it_802B1C60(HSD_GObj* parent, Vec3* pos, f32 dir);
/* 2B1D38 */ bool it_802B1D38(Item_GObj*);
/* 2B1D40 */ void it_802B1D40(Item_GObj*, HSD_GObj*);
/* 2B1DAC */ bool it_802B1DAC(Item_GObj*);
/* 2B1DCC */ void it_802B1DCC(Item_GObj*, HSD_GObj*);
/* 3F70B8 */ extern ItemStateTable it_803F70B8[];
#define GALE01_2CD44C
/* 2CD44C */ void it_802CD44C(Item_GObj*);
/* 2CD4D8 */ M2C_UNK it_802CD4D8();
/* 2CD4DC */ void it_802CD4DC(Item_GObj*, Item_GObj*);
/* 2CD4FC */ M2C_UNK it_802CD4FC();
/* 2CD7B8 */ bool it_802CD7B8(Item_GObj*);
/* 2CD7D4 */ bool it_802CD7D4(Item_GObj*);
/* 2CD8E4 */ M2C_UNK it_802CD8E4();
/* 2CD954 */ M2C_UNK it_802CD954();
/* 2CD974 */ M2C_UNK it_802CD974();
/* 2CD9C0 */ M2C_UNK it_802CD9C0();
/* 2CDA0C */ M2C_UNK it_802CDA0C();
/* 2CDA3C */ M2C_UNK it_802CDA3C();
/* 2CDA5C */ M2C_UNK it_802CDA5C();
/* 2CDAA8 */ M2C_UNK it_802CDAA8();
/* 2CDB0C */ M2C_UNK it_802CDB0C();
/* 2CDB30 */ M2C_UNK it_802CDB30();
/* 2CDBB8 */ M2C_UNK it_802CDBB8();
/* 3F7CA0 */ extern ItemStateTable it_803F7CA0[];
#define GALE01_295C48
/* 295C48 */ void it_80295C48(Item_GObj*);
/* 295D90 */ void it_80295D90(Item_GObj*);
/* 295DC0 */ void it_80295DC0(Item_GObj*);
/* 295E4C */ void it_80295E4C(Item_GObj*);
/* 295EB4 */ void it_80295EB4(Item_GObj*, Item_GObj*);
/* 3F6370 */ extern ItemStateTable it_803F6370[];
#define GALE01_291BE0
/* 291BE0 */ HSD_GObj* it_80291BE0(Vec3*);
/* 291C98 */ void it_80291C98(Item_GObj*);
/* 291CCC */ M2C_UNK it_80291CCC();
/* 291CF4 */ M2C_UNK it_80291CF4();
/* 291D38 */ M2C_UNK it_80291D38();
/* 291DAC */ M2C_UNK it_80291DAC();
/* 291F14 */ M2C_UNK it_80291F14();
/* 291FA8 */ M2C_UNK it_80291FA8();
/* 292030 */ M2C_UNK it_80292030();
/* 292080 */ M2C_UNK it_80292080();
/* 292088 */ M2C_UNK it_80292088();
/* 29208C */ M2C_UNK it_8029208C();
/* 2920B8 */ M2C_UNK it_802920B8();
/* 2920E0 */ M2C_UNK it_802920E0();
/* 2920E8 */ M2C_UNK it_802920E8();
/* 292118 */ M2C_UNK it_80292118();
/* 29215C */ void it_8029215C(Item_GObj*);
/* 292184 */ M2C_UNK it_80292184();
/* 29218C */ M2C_UNK it_8029218C();
/* 292190 */ void it_80292190(Item_GObj*);
/* 2921B8 */ void it_802921B8(Item_GObj*);
/* 2921E0 */ M2C_UNK it_802921E0();
/* 29222C */ bool it_8029222C(Item_GObj*);
/* 292250 */ bool it_80292250(Item_GObj*);
/* 292274 */ bool it_80292274(Item_GObj*);
/* 292298 */ bool it_80292298(Item_GObj*);
/* 2922B8 */ bool it_802922B8(Item_GObj*);
/* 2922D8 */ void it_802922D8(Item_GObj*);
/* 292300 */ M2C_UNK it_80292300();
/* 292308 */ M2C_UNK it_80292308();
/* 29230C */ M2C_UNK it_8029230C();
/* 292340 */ void it_80292340(Item_GObj*, Item_GObj*);
/* 3F5F40 */ extern ItemStateTable it_803F5F40[];
#define GALE01_298DEC
/* 298DEC */ M2C_UNK it_80298DEC();
/* 298ED0 */ M2C_UNK it_80298ED0();
/* 2990CC */ M2C_UNK it_802990CC();
/* 299148 */ M2C_UNK it_80299148();
/* 29914C */ M2C_UNK it_8029914C();
/* 299360 */ bool it_80299360(Item_GObj*);
/* 299368 */ bool it_80299368(Item_GObj*);
/* 299370 */ bool it_80299370(Item_GObj*);
/* 299378 */ bool it_80299378(Item_GObj*);
/* 299380 */ bool it_80299380(Item_GObj*);
/* 2993A0 */ bool it_802993A0(Item_GObj*);
/* 2993C0 */ void it_802993C0(Item_GObj*, Item_GObj*);
/* 3F6568 */ extern ItemStateTable it_803F6568[];
#define GALE01_284644
/* 284644 */ void it_80284644(Item_GObj*);
/* 2846D4 */ void it_802846D4(Item_GObj*);
/* 2846FC */ bool it_802846FC(Item_GObj*);
/* 284704 */ void it_80284704(Item_GObj*);
/* 284734 */ bool it_80284734(Item_GObj*);
/* 28482C */ bool it_8028482C(Item_GObj*);
/* 284834 */ void it_80284834(Item_GObj*, HSD_GObj* ref);
/* 3F57A0 */ extern ItemStateTable it_803F57A0[];
#define GALE01_292360
/* 292360 */ void it_80292360(Item_GObj*);
/* 292394 */ M2C_UNK it_80292394();
/* 2923BC */ M2C_UNK it_802923BC();
/* 2923F8 */ M2C_UNK it_802923F8();
/* 292450 */ M2C_UNK it_80292450();
/* 292458 */ M2C_UNK it_80292458();
/* 29245C */ M2C_UNK it_8029245C();
/* 292488 */ M2C_UNK it_80292488();
/* 2924B0 */ M2C_UNK it_802924B0();
/* 2924B8 */ M2C_UNK it_802924B8();
/* 2924E8 */ M2C_UNK it_802924E8();
/* 292514 */ void it_80292514(Item_GObj*);
/* 29253C */ M2C_UNK it_8029253C();
/* 292544 */ M2C_UNK it_80292544();
/* 292548 */ void it_80292548(Item_GObj*);
/* 292570 */ M2C_UNK it_80292570();
/* 2925B4 */ void it_802925B4(Item_GObj*);
/* 2925DC */ M2C_UNK it_802925DC();
/* 292628 */ M2C_UNK it_80292628();
/* 29266C */ bool it_8029266C(Item_GObj*);
/* 2926A8 */ void it_802926A8(Item_GObj*);
/* 2926D0 */ M2C_UNK it_802926D0();
/* 2926D8 */ M2C_UNK it_802926D8();
/* 2926DC */ M2C_UNK it_802926DC();
/* 292710 */ bool it_80292710(Item_GObj*);
/* 29274C */ bool it_8029274C(Item_GObj*);
/* 29276C */ bool it_8029276C(Item_GObj*);
/* 2927A8 */ bool it_802927A8(Item_GObj*);
/* 2927C8 */ void it_802927C8(Item_GObj*, Item_GObj*);
/* 3F5F90 */ extern ItemStateTable it_803F5F90[];
#define GALE01_2988E4
/* 2988E4 */ M2C_UNK it_802988E4();
/* 2989C8 */ M2C_UNK it_802989C8();
/* 298ACC */ M2C_UNK it_80298ACC();
/* 298BAC */ M2C_UNK it_80298BAC();
/* 298BB0 */ M2C_UNK it_80298BB0();
/* 298BE4 */ bool it_80298BE4(Item_GObj*);
/* 298BEC */ bool it_80298BEC(Item_GObj*);
/* 298BF4 */ bool it_80298BF4(Item_GObj*);
/* 298BFC */ bool it_80298BFC(Item_GObj*);
/* 298C04 */ bool it_80298C04(Item_GObj*);
/* 298CE8 */ bool it_80298CE8(Item_GObj*);
/* 298DCC */ void it_80298DCC(Item_GObj*, Item_GObj*);
/* 3F6530 */ extern ItemStateTable it_803F6530[];
#define GALE01_2CFC48
void it_802CFC48(Item_GObj*);
void it_802CFCB4(Item_GObj*);
void it_802CFCB8(Item_GObj*, Item_GObj*);
void it_802CFCD8(Item_GObj*);
void it_802CFD3C(Item_GObj*);
bool it_802CFDAC(Item_GObj*);
void it_802CFEA8(Item_GObj*);
bool it_802CFEE4(Item_GObj*);
void it_802CFF30(Item_GObj*);
void it_802CFFAC(Item_GObj*);
bool it_802D0010(Item_GObj*);
void it_802D0034(Item_GObj*);
bool it_802D0054(Item_GObj*);
extern ItemStateTable it_803F7E08[];
#define GALE01_284D54
/* 284D54 */ Item_GObj* itSword_Spawn(Vec3* pos);
/* 284E10 */ void it_80284E10(HSD_GObj*, int);
/* 284FC4 */ void it_80284FC4(Item_GObj* gobj, int, float);
/* 285024 */ void it_80285024(Item_GObj* gobj, int);
/* 2852B8 */ void it_802852B8(Item_GObj* gobj, float*, float*);
/* 285300 */ itSword_UnkBytes* it_80285300(Item_GObj* gobj);
/* 285314 */ void it_80285314(Item_GObj* gobj);
/* 285338 */ void it_80285338(Item_GObj* gobj);
/* 285804 */ void it_80285804(Item_GObj* gobj);
/* 285B00 */ void it_80285B00(Item_GObj* gobj);
/* 285C78 */ void it_80285C78(Item_GObj* gobj);
/* 285DF0 */ void it_80285DF0(Item_GObj* gobj);
/* 285FAC */ bool it_80285FAC(Item_GObj* gobj);
/* 285FE0 */ bool it_80285FE0(Item_GObj* gobj);
/* 286000 */ bool it_80286000(Item_GObj* gobj);
/* 286024 */ bool it_80286024(Item_GObj* gobj);
/* 286048 */ bool itSword_BounceOffShield(Item_GObj* gobj);
/* 286068 */ void it_80286068(Item_GObj* gobj, HSD_GObj* ref_gobj);
/* 3F5800 */ extern ItemStateTable it_803F5800[];
#define GALE01_287458
/* 287458 */ void it_80287458(Item_GObj*);
/* 2874F0 */ M2C_UNK it_802874F0();
/* 287690 */ M2C_UNK it_80287690();
/* 287B28 */ M2C_UNK it_80287B28();
/* 287B68 */ M2C_UNK it_80287B68();
/* 287B6C */ M2C_UNK it_80287B6C();
/* 287D0C */ M2C_UNK it_80287D0C();
/* 287D48 */ M2C_UNK it_80287D48();
/* 287D50 */ M2C_UNK it_80287D50();
/* 287D80 */ M2C_UNK it_80287D80();
/* 287E68 */ void it_80287E68(Item_GObj*);
/* 287E9C */ M2C_UNK it_80287E9C();
/* 287EA4 */ M2C_UNK it_80287EA4();
/* 287EA8 */ void it_80287EA8(Item_GObj*);
/* 287EC8 */ void it_80287EC8(Item_GObj*);
/* 287F20 */ M2C_UNK it_80287F20();
/* 287F5C */ M2C_UNK it_80287F5C();
/* 287FE4 */ M2C_UNK it_80287FE4();
/* 288030 */ M2C_UNK it_80288030();
/* 288194 */ M2C_UNK it_80288194();
/* 2881B4 */ M2C_UNK it_802881B4();
/* 2881FC */ M2C_UNK it_802881FC();
/* 28824C */ M2C_UNK it_8028824C();
/* 288308 */ M2C_UNK it_80288308();
/* 28833C */ M2C_UNK it_8028833C();
/* 288454 */ M2C_UNK it_80288454();
/* 2884DC */ M2C_UNK it_802884DC();
/* 2885A8 */ M2C_UNK it_802885A8();
/* 2885C8 */ M2C_UNK it_802885C8();
/* 288698 */ M2C_UNK it_80288698();
/* 2886B8 */ M2C_UNK it_802886B8();
/* 2886BC */ M2C_UNK it_802886BC();
/* 2886C4 */ M2C_UNK it_802886C4();
/* 2887E0 */ M2C_UNK it_802887E0();
/* 28880C */ M2C_UNK it_8028880C();
/* 288810 */ M2C_UNK it_80288810();
/* 288818 */ int it_80288818(Item_GObj*);
/* 2888B8 */ int it_802888B8(Item_GObj*);
/* 288958 */ int it_80288958(Item_GObj*);
/* 2889F8 */ int it_802889F8(Item_GObj*);
/* 288A98 */ int it_80288A98(Item_GObj*);
/* 288C68 */ void it_80288C68(Item_GObj*, Item_GObj*);
/* 3F58E0 */ extern ItemStateTable it_803F58E0[];
#define GALE01_295ED4
/* 295ED4 */ M2C_UNK it_80295ED4();
/* 295F38 */ M2C_UNK it_80295F38();
/* 2960B8 */ int it_802960B8(Item_GObj* gobj);
/* 2960CC */ int it_802960CC(Item_GObj* gobj);
/* 2960E0 */ void it_802960E0(Item_GObj*);
/* 296120 */ void it_80296120(Item_GObj*);
/* 2961E8 */ M2C_UNK it_802961E8();
/* 2962E0 */ M2C_UNK it_802962E0();
/* 2964A4 */ M2C_UNK it_802964A4();
/* 2964F8 */ M2C_UNK it_802964F8();
/* 2964FC */ M2C_UNK it_802964FC();
/* 296694 */ M2C_UNK it_80296694();
/* 2966D0 */ M2C_UNK it_802966D0();
/* 296724 */ M2C_UNK it_80296724();
/* 296754 */ M2C_UNK it_80296754();
/* 29683C */ void it_8029683C(Item_GObj*);
/* 296898 */ M2C_UNK it_80296898();
/* 2968D4 */ M2C_UNK it_802968D4();
/* 2968D8 */ void it_802968D8(Item_GObj*);
/* 296930 */ void it_80296930(Item_GObj*);
/* 2969D8 */ M2C_UNK it_802969D8();
/* 296A70 */ M2C_UNK it_80296A70();
/* 296AC4 */ M2C_UNK it_80296AC4();
/* 296C48 */ M2C_UNK it_80296C48();
/* 296E88 */ M2C_UNK it_80296E88();
/* 296EA8 */ M2C_UNK it_80296EA8();
/* 296EF0 */ M2C_UNK it_80296EF0();
/* 296F94 */ M2C_UNK it_80296F94();
/* 296FE8 */ M2C_UNK it_80296FE8();
/* 297154 */ M2C_UNK it_80297154();
/* 297368 */ M2C_UNK it_80297368();
/* 2973BC */ M2C_UNK it_802973BC();
/* 2975D4 */ M2C_UNK it_802975D4();
/* 2975F4 */ M2C_UNK it_802975F4();
/* 297674 */ M2C_UNK it_80297674();
/* 297784 */ M2C_UNK it_80297784();
/* 297788 */ bool it_80297788(void);
/* 297790 */ M2C_UNK it_80297790();
/* 29789C */ int it_8029789C(Item_GObj*);
/* 2978A4 */ int it_802978A4(Item_GObj*);
/* 2978AC */ int it_802978AC(Item_GObj*);
/* 2978B4 */ int it_802978B4(Item_GObj*);
/* 2978BC */ void it_802978BC(Item_GObj*, Item_GObj*);
/* 3F63C0 */ extern ItemStateTable it_803F63C0[];
#define GALE01_2CCAB4
/* 2CCAB4 */ void it_802CCAB4(Item_GObj*);
/* 2CCB10 */ M2C_UNK it_802CCB10();
/* 2CCB14 */ void it_802CCB14(Item_GObj*, Item_GObj*);
/* 2CCB34 */ M2C_UNK it_802CCB34();
/* 2CCBAC */ M2C_UNK it_802CCBAC();
/* 2CCBCC */ M2C_UNK it_802CCBCC();
/* 2CCBF8 */ M2C_UNK it_802CCBF8();
/* 2CCC68 */ M2C_UNK it_802CCC68();
/* 2CCCC4 */ M2C_UNK it_802CCCC4();
/* 2CCD9C */ M2C_UNK it_802CCD9C();
/* 2CCE20 */ M2C_UNK it_802CCE20();
/* 2CCE28 */ M2C_UNK it_802CCE28();
/* 2CCE9C */ M2C_UNK it_802CCE9C();
/* 2CCEC0 */ M2C_UNK it_802CCEC0();
/* 2CCF74 */ M2C_UNK it_802CCF74();
/* 3F7C40 */ extern ItemStateTable it_803F7C40[];
#define GALE01_2EB5C8
/* 2EB5C8 */ void it_802EB5C8(Item_GObj*);
/* 2EB684 */ bool it_802EB684(Item_GObj*);
/* 2EB6A8 */ bool it_802EB6A8(Item_GObj*);
/* 2EB6DC */ M2C_UNK it_802EB6DC();
/* 2EB808 */ bool it_802EB808(void);
/* 2EB810 */ M2C_UNK it_802EB810();
/* 2EB84C */ M2C_UNK it_802EB84C();
/* 2EB870 */ M2C_UNK it_802EB870();
/* 2EB994 */ bool it_802EB994(void);
/* 2EB99C */ M2C_UNK it_802EB99C();
/* 2EB9D4 */ M2C_UNK it_802EB9D4();
/* 2EBA00 */ M2C_UNK it_802EBA00();
/* 2EBAF0 */ M2C_UNK it_802EBAF0();
/* 2EBB38 */ M2C_UNK it_802EBB38();
/* 2EBCD0 */ M2C_UNK it_802EBCD0();
/* 2EBD14 */ M2C_UNK it_802EBD14();
/* 2EBDC8 */ bool it_802EBDC8(void);
/* 2EBDD0 */ M2C_UNK it_802EBDD0();
/* 2EBE30 */ M2C_UNK it_802EBE30();
/* 2EBE5C */ M2C_UNK it_802EBE5C();
/* 2EBF00 */ bool it_802EBF00(void);
/* 2EBF08 */ M2C_UNK it_802EBF08();
/* 2EBF80 */ M2C_UNK it_802EBF80();
/* 2EBFAC */ M2C_UNK it_802EBFAC();
/* 2EC0FC */ bool it_802EC0FC(void);
/* 2EC104 */ M2C_UNK it_802EC104();
/* 2EC168 */ M2C_UNK it_802EC168();
/* 2EC18C */ M2C_UNK it_802EC18C();
/* 2EC1F4 */ M2C_UNK it_802EC1F4();
/* 2EC25C */ M2C_UNK it_802EC25C();
/* 2EC2E4 */ M2C_UNK it_802EC2E4();
/* 2EC2E8 */ M2C_UNK it_802EC2E8();
/* 2EC35C */ M2C_UNK it_802EC35C();
/* 2EC390 */ bool it_802EC390(void);
/* 2EC398 */ M2C_UNK it_802EC398();
/* 2EC3C8 */ M2C_UNK it_802EC3C8();
/* 2EC3F4 */ M2C_UNK it_802EC3F4();
/* 2EC460 */ M2C_UNK it_802EC460();
/* 2EC4A0 */ M2C_UNK it_802EC4A0();
/* 2EC4A4 */ M2C_UNK it_802EC4A4();
/* 2EC4D0 */ M2C_UNK it_802EC4D0();
/* 2EC55C */ M2C_UNK it_802EC55C();
/* 2EC5D4 */ M2C_UNK it_802EC5D4();
/* 2EC5D8 */ M2C_UNK it_802EC5D8();
/* 2EC604 */ M2C_UNK it_802EC604();
/* 2EC62C */ M2C_UNK it_802EC62C();
/* 2EC66C */ M2C_UNK it_802EC66C();
/* 2EC670 */ M2C_UNK it_802EC670();
/* 2EC69C */ M2C_UNK it_802EC69C();
/* 2EC7A0 */ bool it_802EC7A0(void);
/* 2EC7A8 */ M2C_UNK it_802EC7A8();
/* 2EC80C */ M2C_UNK it_802EC80C();
/* 2EC830 */ M2C_UNK it_802EC830();
/* 2EC850 */ void it_802EC850(Item_GObj*, Item_GObj*);
/* 2EC870 */ M2C_UNK it_802EC870();
/* 2EC9E8 */ M2C_UNK it_802EC9E8();
/* 2ECA70 */ M2C_UNK it_802ECA70();
/* 2ECC8C */ int it_802ECC8C(Item_GObj*);
/* 2ECC98 */ void it_802ECC98(Item_GObj*, float);
/* 2ECCA4 */ M2C_UNK it_802ECCA4();
extern ItemStateTable it_803F9000[];
#define GALE01_2D36B0
void it_802D36B0(Item_GObj*);
void it_802D3728(Item_GObj*);
void it_802D372C(Item_GObj*, Item_GObj*);
bool it_802D374C(Item_GObj*);
void it_802D37C0(Item_GObj*);
bool it_802D37FC(Item_GObj*);
void it_802D3848(Item_GObj*);
bool it_802D390C(Item_GObj*);
void it_802D3970(Item_GObj*);
bool it_802D39AC(Item_GObj*);
void it_802D39F8(Item_GObj*);
bool it_802D3A68(Item_GObj*);
void it_802D3A8C(Item_GObj*);
bool it_802D3AF0(Item_GObj*);
extern ItemStateTable it_803F8058[];
#define GALE01_2841B4
/* 2842A4 */ void it_802842A4(Item_GObj*);
/* 284324 */ void it_80284324(Item_GObj*);
/* 2844E4 */ void it_802844E4(Item_GObj*);
/* 28454C */ void it_8028454C(Item_GObj*);
/* 2845BC */ void it_802845BC(Item_GObj*);
/* 284624 */ void it_80284624(Item_GObj*, Item_GObj*);
/* 3F5740 */ extern ItemStateTable it_803F5740[];
#define GALE01_2EEFA8
/* 2EEFA8 */ M2C_UNK it_802EEFA8();
/* 2EF074 */ bool it_802EF074(Item_GObj*);
/* 2EF098 */ M2C_UNK it_802EF098();
/* 2EF128 */ M2C_UNK it_802EF128();
/* 2EF27C */ M2C_UNK it_802EF27C();
/* 2EF2BC */ M2C_UNK it_802EF2BC();
/* 2EF320 */ M2C_UNK it_802EF320();
/* 2EF3C4 */ M2C_UNK it_802EF3C4();
/* 2EF468 */ M2C_UNK it_802EF468();
/* 2EF46C */ M2C_UNK it_802EF46C();
/* 2EF548 */ M2C_UNK it_802EF548();
/* 2EF700 */ bool it_802EF700(Item_GObj*);
/* 2EF724 */ bool it_802EF724(Item_GObj*);
/* 2EF7CC */ bool it_802EF7CC(Item_GObj*);
/* 2EF874 */ bool it_802EF874(Item_GObj*);
/* 2EF924 */ bool it_802EF924(Item_GObj*);
/* 2EF944 */ bool it_802EF944(Item_GObj*);
/* 2EFA24 */ void it_802EFA24(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F9260[];
#define GALE01_2C8F4C
/* 2C8F4C */ void it_802C8F4C(Item_GObj*);
/* 2C8FC4 */ void it_802C8FC4(Item_GObj*, Item_GObj*);
/* 2C9504 */ void it_802C9504(Item_GObj*);
/* 3F7A48 */ extern ItemStateTable it_803F7A48[];
/// @file
/// Unown, the Pokémon.
#define GALE01_2CE710
/* 2CE710 */ void it_802CE710(Item_GObj*);
/* 2CE7CC */ M2C_UNK it_802CE7CC();
/* 2CE7D0 */ void it_802CE7D0(Item_GObj*, Item_GObj*);
/* 2CE7F0 */ M2C_UNK it_802CE7F0();
/* 2CE870 */ M2C_UNK it_802CE870();
/* 2CE8C8 */ bool it_802CE8C8(void);
/* 2CE8D0 */ M2C_UNK it_802CE8D0();
/* 2CEB9C */ M2C_UNK it_802CEB9C();
/* 2CEC18 */ M2C_UNK it_802CEC18();
/* 2CEC1C */ bool it_802CEC1C(void);
/* 2CEC24 */ M2C_UNK it_802CEC24();
/* 2CEC88 */ M2C_UNK it_802CEC88();
/* 2CECAC */ M2C_UNK it_802CECAC();
/* 2CED2C */ M2C_UNK it_802CED2C();
/* 2CED54 */ M2C_UNK it_802CED54();
/* 2CEEC8 */ void it_802CEEC8(Item_GObj*);
/* 2CF0B4 */ void it_802CF0B4(Item_GObj*, Item_GObj*);
/* 2CF0D4 */ M2C_UNK it_802CF0D4();
/* 2CF120 */ M2C_UNK it_802CF120();
/* 2CF154 */ M2C_UNK it_802CF154();
/* 2CF3D8 */ bool it_802CF3D8(void);
/* 3F7D60 */ extern ItemStateTable it_803F7D60[];
/* 3F7D90 */ extern ItemStateTable it_803F7D90[];
#define GALE01_2EE200
/* 2EE200 */ M2C_UNK it_802EE200();
/* 2EE374 */ M2C_UNK it_802EE374();
/* 2EE434 */ M2C_UNK it_802EE434();
/* 2EE544 */ M2C_UNK it_802EE544();
/* 2EE5A0 */ M2C_UNK it_802EE5A0();
/* 2EE6A0 */ M2C_UNK it_802EE6A0();
/* 2EE6DC */ M2C_UNK it_802EE6DC();
/* 2EE7CC */ M2C_UNK it_802EE7CC();
/* 2EE7D0 */ M2C_UNK it_802EE7D0();
/* 2EE7FC */ M2C_UNK fn_802EE7FC();
/* 2EE824 */ M2C_UNK it_802EE824();
/* 2EE914 */ M2C_UNK it_802EE914();
/* 2EE944 */ M2C_UNK it_802EE944();
/* 2EEA08 */ void it_802EEA08(Item_GObj*);
/* 2EEA64 */ bool it_802EEA64(void);
/* 2EEA6C */ M2C_UNK it_802EEA6C();
/* 2EEA70 */ void it_802EEA70(Item_GObj*);
/* 2EEB28 */ void it_802EEB28(Item_GObj*);
/* 2EEBB0 */ void it_802EEBB0(Item_GObj*);
/* 2EEBD8 */ M2C_UNK it_802EEBD8();
/* 2EECC8 */ M2C_UNK it_802EECC8();
/* 2EECCC */ M2C_UNK it_802EECCC();
/* 2EED00 */ M2C_UNK it_802EED00();
/* 2EEDD4 */ M2C_UNK it_802EEDD4();
/* 2EEEC4 */ M2C_UNK it_802EEEC4();
/* 2EEEC8 */ bool it_802EEEC8(Item_GObj*);
/* 2EEED0 */ bool it_802EEED0(Item_GObj*);
/* 2EEED8 */ bool it_802EEED8(Item_GObj*);
/* 2EEF10 */ bool it_802EEF10(Item_GObj*);
/* 2EEF30 */ bool it_802EEF30(Item_GObj*);
/* 2EEF68 */ bool it_802EEF68(Item_GObj*);
/* 2EEF88 */ void it_802EEF88(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F91D0[];
#define GALE01_2E31F8
/* 2E31F8 */ void it_802E31F8(Item_GObj*);
/* 2E324C */ M2C_UNK it_802E324C();
/* 2E32B0 */ M2C_UNK it_802E32B0();
/* 2E32B4 */ void it_802E32B4(Item_GObj*);
/* 2E3314 */ void it_802E3314(Item_GObj*);
/* 2E3364 */ M2C_UNK it_802E3364();
/* 2E33AC */ M2C_UNK it_802E33AC();
/* 2E33DC */ M2C_UNK it_802E33DC();
/* 2E3400 */ M2C_UNK it_802E3400();
/* 2E3470 */ M2C_UNK it_802E3470();
/* 2E34B8 */ M2C_UNK it_802E34B8();
/* 2E34BC */ M2C_UNK it_802E34BC();
/* 2E34DC */ void it_802E34DC(Item_GObj*);
/* 2E3528 */ M2C_UNK it_802E3528();
/* 2E3588 */ bool it_802E3588(void);
/* 2E3590 */ M2C_UNK it_802E3590();
/* 2E35AC */ M2C_UNK it_802E35AC();
/* 2E35CC */ M2C_UNK it_802E35CC();
/* 2E3784 */ void it_802E3784(Item_GObj*, Item_GObj*);
/* 2E37A4 */ M2C_UNK it_802E37A4();
/* 2E37BC */ void it_802E37BC(Item_GObj*);
/* 2E3884 */ bool it_802E3884(Item_GObj*);
/* 2E398C */ M2C_UNK fn_802E398C();
/* 2E39C8 */ M2C_UNK it_802E39C8();
/* 2E3A10 */ M2C_UNK it_802E3A10();
/* 2E3A8C */ M2C_UNK it_802E3A8C();
/* 2E3AC8 */ M2C_UNK it_802E3AC8();
/* 2E3BB8 */ M2C_UNK it_802E3BB8();
/* 2E3C70 */ M2C_UNK it_802E3C70();
/* 2E3D38 */ M2C_UNK it_802E3D38();
/* 2E3DA0 */ M2C_UNK it_802E3DA0();
/* 2E3E5C */ bool it_802E3E5C(void);
/* 2E3E64 */ M2C_UNK it_802E3E64();
/* 2E3E94 */ M2C_UNK it_802E3E94();
/* 2E3ED0 */ M2C_UNK it_802E3ED0();
/* 2E3FAC */ M2C_UNK it_802E3FAC();
/* 2E4018 */ M2C_UNK it_802E4018();
/* 2E4040 */ M2C_UNK it_802E4040();
/* 2E40A4 */ M2C_UNK it_802E40A4();
/* 2E4190 */ M2C_UNK it_802E4190();
/* 2E41D4 */ M2C_UNK it_802E41D4();
/* 2E432C */ M2C_UNK it_802E432C();
/* 2E4330 */ M2C_UNK it_802E4330();
/* 2E436C */ M2C_UNK it_802E436C();
/* 2E43C0 */ M2C_UNK it_802E43C0();
/* 2E4424 */ M2C_UNK it_802E4424();
/* 2E4428 */ M2C_UNK it_802E4428();
/* 2E4464 */ M2C_UNK it_802E4464();
/* 2E44E4 */ bool it_802E44E4(void);
/* 2E44EC */ M2C_UNK it_802E44EC();
/* 2E451C */ M2C_UNK it_802E451C();
/* 2E4558 */ M2C_UNK it_802E4558();
/* 2E45D0 */ M2C_UNK it_802E45D0();
/* 2E464C */ M2C_UNK it_802E464C();
/* 2E4650 */ M2C_UNK it_802E4650();
/* 2E468C */ void it_802E468C(Item_GObj*);
/* 2E46B4 */ M2C_UNK it_802E46B4();
/* 2E46FC */ M2C_UNK it_802E46FC();
/* 2E4700 */ void it_802E4700(Item_GObj*);
/* 2E47C0 */ void it_802E47C0(Item_GObj*);
/* 2E4818 */ M2C_UNK it_802E4818();
/* 2E4860 */ M2C_UNK it_802E4860();
/* 2E4890 */ M2C_UNK it_802E4890();
/* 2E48B4 */ M2C_UNK it_802E48B4();
/* 2E4914 */ M2C_UNK it_802E4914();
/* 2E495C */ M2C_UNK it_802E495C();
/* 2E4960 */ M2C_UNK it_802E4960();
/* 2E4980 */ M2C_UNK it_802E4980();
/* 2E49E0 */ bool it_802E49E0(void);
/* 2E49E8 */ M2C_UNK it_802E49E8();
/* 2E4A04 */ M2C_UNK it_802E4A04();
/* 2E4A24 */ void it_802E4A24(Item_GObj*, Item_GObj*);
extern ItemStateTable it_803F8A88[];
#define GALE01_294364
/* 294364 */ HSD_AnimJoint* it_80294364(Item_GObj*);
/* 294430 */ void it_80294430(Item_GObj*, float, float);
/* 2944AC */ void it_802944AC(Item_GObj*, ftCollisionBox*);
/* 29451C */ void it_8029451C(Item_GObj*);
/* 29455C */ M2C_UNK it_8029455C();
/* 2945AC */ bool it_802945AC(void);
/* 2945B4 */ M2C_UNK it_802945B4();
/* 2945F8 */ M2C_UNK it_802945F8();
/* 294624 */ M2C_UNK it_80294624();
/* 29464C */ bool it_8029464C(void);
/* 294654 */ M2C_UNK it_80294654();
/* 294684 */ M2C_UNK it_80294684();
/* 2946B0 */ void it_802946B0(Item_GObj*);
/* 294728 */ void it_80294728(Item_GObj*);
/* 294788 */ bool it_80294788(void);
/* 294790 */ void it_80294790(Item_GObj*);
/* 2947CC */ void it_802947CC(Item_GObj* gobj, Vec3* pos);
/* 2949C0 */ M2C_UNK it_802949C0();
/* 294A1C */ M2C_UNK it_80294A1C();
/* 294A20 */ bool it_80294A20(void);
/* 294A28 */ void it_80294A28(Item_GObj*);
/* 294A50 */ bool it_80294A50(void);
/* 294A58 */ M2C_UNK it_80294A58();
/* 294A5C */ M2C_UNK it_80294A5C();
/* 294A90 */ void it_80294A90(Item_GObj*, Item_GObj*);
/* 3F61B0 */ extern ItemStateTable it_803F61B0[];
#define GALE01_2B2890
/* 2B2AE0 */ void it_802B2AE0(Item_GObj*);
/* 2B2C04 */ bool it_802B2C04(Item_GObj*);
/* 2B2D50 */ bool it_802B2D50(Item_GObj*);
/* 2B2E5C */ bool it_802B2E5C(Item_GObj*);
/* 2B2E7C */ bool it_802B2E7C(Item_GObj*);
/* 2B2F88 */ bool it_802B2F88(Item_GObj*);
/* 2B2FA8 */ void it_802B2FA8(Item_GObj*, Item_GObj*);
/* 3F7118 */ extern ItemStateTable it_803F7118[];
#define GALE01_2B2FC8
/* 2B2FC8 */ Item_GObj* it_802B2FC8(HSD_GObj* parent, Vec3* pos, f32 dir);
/* 2B309C */ bool it_802B309C(Item_GObj*);
/* 2B30C0 */ bool it_802B30C0(Item_GObj*);
/* 2B30E4 */ bool it_802B30E4(Item_GObj*);
/* 2B3108 */ bool it_802B3108(Item_GObj*);
/* 2B312C */ bool it_802B312C(Item_GObj*);
/* 2B314C */ bool it_802B314C(Item_GObj*);
/* 2B322C */ void it_802B322C(Item_GObj*, HSD_GObj*);
/* 2B3294 */ bool it_802B3294(Item_GObj*);
/* 2B32C8 */ void it_802B32C8(Item_GObj*);
/* 2B3324 */ bool it_802B3324(Item_GObj*);
/* 2B3348 */ void it_802B3348(Item_GObj*, HSD_GObj*);
/* 3F7158 */ extern ItemStateTable it_803F7158[];
#define GALE01_2C3AF0
/* 2C3AF0 */ Fighter_GObj* it_802C3AF0(Item_GObj*);
/* 2C3AFC */ M2C_UNK it_802C3AFC();
/* 2C3BAC */ HSD_GObj* it_802C3BAC(Item_GObj*, Vec3*, float facing_dir, float);
/* 2C3CBC */ void it_802C3CBC(Item_GObj*);
/* 2C3D44 */ void it_802C3D44(Item_GObj*);
/* 2C3D74 */ M2C_UNK it_802C3D74();
/* 2C3E94 */ M2C_UNK it_802C3E94();
/* 2C40A4 */ M2C_UNK it_802C40A4();
/* 2C4208 */ M2C_UNK it_802C4208();
/* 2C4364 */ M2C_UNK it_802C4364();
/* 2C437C */ M2C_UNK it_802C437C();
/* 2C443C */ bool it_802C443C(Item_GObj*);
/* 2C4550 */ bool it_802C4550(Item_GObj*);
/* 2C4558 */ bool it_802C4558(Item_GObj*);
/* 2C4560 */ void it_802C4560(Item_GObj*, Item_GObj*);
/* 3F76F8 */ extern ItemStateTable it_803F76F8[];
#define GALE01_2C4580
/* 2C4580 */ M2C_UNK it_802C4580();
/* 2C4670 */ void it_802C4670(Item_GObj*);
/* 2C46C4 */ M2C_UNK it_802C46C4();
/* 2C4820 */ M2C_UNK it_802C4820();
/* 2C4980 */ M2C_UNK it_802C4980();
/* 2C49A0 */ bool it_802C49A0(Item_GObj*);
/* 2C49A8 */ bool it_802C49A8(Item_GObj*);
/* 2C49B0 */ bool it_802C49B0(Item_GObj*);
/* 2C49B8 */ bool it_802C49B8(Item_GObj*);
/* 2C49C0 */ void it_802C49C0(Item_GObj*, Item_GObj*);
/* 3F7740 */ extern ItemStateTable it_803F7740[];
#define GALE01_2DDB38
/* 2DDB38 */ M2C_UNK it_802DDB38();
/* 2DDBE8 */ M2C_UNK it_802DDBE8();
/* 2DDC8C */ M2C_UNK fn_802DDC8C();
/* 2DDD38 */ M2C_UNK it_802DDD38();
/* 2DDEB4 */ M2C_UNK it_802DDEB4();
/* 2DE040 */ void it_802DE040(Item_GObj*);
/* 2DE0F0 */ void it_802DE0F0(Item_GObj*);
/* 2DE190 */ bool it_802DE190(Item_GObj*);
/* 2DE198 */ void it_802DE198(Item_GObj*);
/* 2DE1FC */ bool it_802DE1FC(Item_GObj*);
/* 2DE320 */ void it_802DE320(Item_GObj*);
/* 2DE35C */ bool it_802DE35C(Item_GObj*);
/* 2DE3D8 */ void it_802DE3D8(Item_GObj*);
/* 2DE408 */ bool it_802DE408(Item_GObj*);
/* 2DE434 */ void it_802DE434(Item_GObj*);
/* 2DE490 */ bool it_802DE490(Item_GObj*);
/* 2DE498 */ void it_802DE498(Item_GObj*);
/* 2DE4FC */ void it_802DE4FC(Item_GObj*);
/* 2DE544 */ bool it_802DE544(Item_GObj*);
/* 2DE5EC */ void it_802DE5EC(Item_GObj*);
/* 2DE61C */ bool it_802DE61C(Item_GObj*);
/* 2DE648 */ void it_802DE648(Item_GObj*);
/* 2DE670 */ bool it_802DE670(Item_GObj*);
/* 2DE694 */ void it_802DE694(Item_GObj*);
/* 2DE6C4 */ bool it_802DE6C4(Item_GObj*);
/* 2DE6F0 */ M2C_UNK it_802DE6F0();
/* 2DE884 */ bool it_802DE884(Item_GObj*);
/* 2DEA0C */ void it_802DEA0C(Item_GObj*);
/* 2DEB44 */ bool it_802DEB44(Item_GObj*);
/* 2DEC80 */ M2C_UNK it_802DEC80();
/* 2DEE04 */ bool it_802DEE04(Item_GObj*);
/* 2DEE98 */ void it_802DEE98(Item_GObj*);
/* 2DEEC8 */ bool it_802DEEC8(Item_GObj*);
/* 2DEEF4 */ void it_802DEEF4(Item_GObj*);
/* 2DEF78 */ bool it_802DEF78(Item_GObj*);
/* 2DEF80 */ void it_802DEF80(Item_GObj*);
/* 2DF104 */ bool it_802DF104(Item_GObj*);
/* 2DF230 */ M2C_UNK it_802DF230();
/* 2DF724 */ bool it_802DF724(Item_GObj*);
/* 2DF93C */ void it_802DF93C(Item_GObj*);
/* 2DF970 */ bool it_802DF970(Item_GObj*);
/* 2DF9F8 */ M2C_UNK it_802DF9F8();
/* 2DFA68 */ bool it_802DFA68(Item_GObj*);
/* 2DFB90 */ void it_802DFB90(Item_GObj*);
/* 2DFBAC */ bool it_802DFBAC(Item_GObj*);
/* 2DFC34 */ bool it_802DFC34(Item_GObj*);
/* 2DFC58 */ bool it_802DFC58(Item_GObj*);
/* 2DFC90 */ bool it_802DFC90(Item_GObj*);
/* 2DFCB0 */ bool it_802DFCB0(Item_GObj*);
/* 2DFD60 */ bool it_802DFD60(Item_GObj*);
/* 2DFE40 */ bool it_802DFE40(Item_GObj*);
/* 2DFE7C */ M2C_UNK fn_802DFE7C();
/* 2DFED4 */ void it_802DFED4(Item_GObj*, Item_GObj*);
/* 2DFEF4 */ void it_802DFEF4(Item_GObj*);
/* 2DFF14 */ M2C_UNK it_802DFF14();
/* 2DFFA0 */ M2C_UNK it_802DFFA0();
/* 2DFFB8 */ M2C_UNK it_802DFFB8();
/* 2E0100 */ Item_GObj* it_802E0100(s32, Vec3*, s32);
/* 2E0408 */ bool it_802E0408(Item_GObj*);
extern ItemStateTable it_803F86C8[];
#define _itzrshell_h_
void it_802E02E8(Item_GObj*);
void it_802E0308(Item_GObj*);
void it_802E0328(Item_GObj*);
void it_802E0348(Item_GObj*);
void it_802E0368(Item_GObj*);
void it_802E0388(Item_GObj*);
bool it_802E03A8(Item_GObj*);
bool it_802E03C8(Item_GObj*);
bool it_802E03E8(Item_GObj*);
bool it_802E0428(Item_GObj*);
bool it_802E0448(Item_GObj*);
void it_802E0468(Item_GObj*, HSD_GObj*);
Item_GObj* it_802E0488(s32, Vec3*, s32);
extern ItemStateTable it_803F87F0[];
#define GALE01_00B074
/* 00B074 */ bool lb_8000B074(HSD_JObj*);
/* 00B09C */ bool lb_8000B09C(HSD_JObj*);
/* 00B134 */ bool lb_8000B134(HSD_JObj*);
/* 00B1CC */ void lb_8000B1CC(HSD_JObj*, Vec3*, Vec3*);
/* 00B4FC */ void lb_8000B4FC(HSD_JObj*, HSD_Joint*);
/* 00B5DC */ void lb_8000B5DC(HSD_JObj*, HSD_Joint*);
/* 00B6A4 */ void lb_8000B6A4(HSD_JObj*, HSD_Joint*);
/* 00B760 */ void lb_8000B760(HSD_JObj*, HSD_Joint*);
/* 00B804 */ void lb_8000B804(HSD_JObj*, HSD_Joint*);
/* 00BA0C */ void lb_8000BA0C(HSD_JObj*, float);
/* 00BA44 */ void lbDObjSetRateAll(HSD_DObj*, float);
/* 00BB24 */ void lbDObjReqAnimAll(HSD_DObj*, float);
/* 00BD28 */ float lbGetJObjFramerate(HSD_JObj*);
/* 00BDB4 */ float lbGetJObjCurrFrame(HSD_JObj*);
/* 00BE40 */ float lbGetJObjEndFrame(HSD_JObj*);
/* 00BFF0 */ float lb_8000BFF0(HSD_AnimJoint* animjoint);
/* 00C07C */ void lb_8000C07C(HSD_JObj*, s32 i, HSD_AnimJoint**,
HSD_MatAnimJoint**, HSD_ShapeAnimJoint**);
/* 00C0E8 */ void lb_8000C0E8(HSD_JObj* jobj, s32 i, DynamicModelDesc*);
/* 00C160 */ void lb_8000C160(void* mem, ssize_t size);
/* 00C1C0 */ void lb_8000C1C0(HSD_JObj*, HSD_JObj* constraint);
/* 00C228 */ void lb_8000C228(HSD_JObj*, HSD_JObj* constraint);
/* 00C290 */ void lb_8000C290(HSD_JObj*, HSD_JObj* constraint);
/* 00C2F8 */ void lb_8000C2F8(HSD_JObj*, HSD_JObj* constraint);
/* 00C390 */ void lb_8000C390(HSD_JObj*);
/* 00C420 */ void lb_8000C420(HSD_JObj*, u32 flags, float limit);
/* 00C490 */ void lb_8000C490(HSD_JObj* jobj1, HSD_JObj* jobj2, HSD_JObj*,
float, float);
/* 00C7BC */ void lb_8000C7BC(HSD_JObj* src, HSD_JObj* dst);
/* 00C868 */ void lb_8000C868(HSD_Joint*, HSD_JObj*, HSD_JObj*, float, float);
/* 00CC5C */ s32 lbGetFreeColorRegister(s32 i0, HSD_MObj*, HSD_TExp*);
/* 00CC8C */ s32 lb_8000CC8C(s32 i); // return type GXTevColorArg?
/* 00CCA4 */ s32 lb_8000CCA4(s32 i);
/* 00CD60 */ s32 lbGetFreeAlphaRegister(s32 i0, HSD_MObj*, HSD_TExp*);
/* 00CD90 */ s32 lb_8000CD90(s32 i);
/* 00CDA8 */ s32 lb_8000CDA8(s32 i);
/* 00CDC0 */ HSD_LObj* lb_8000CDC0(HSD_LObj*);
/* 00CE30 */ void lb_8000CE30(HSD_DObj*, HSD_DObj*);
/* 00CE40 */ void lb_8000CE40(HSD_JObj*, HSD_DObj*);
#define GALE01_00CE50
/* 00CE50 */ float expf(float);
/* 00CEE0 */ float powf(float, float);
/* 00CF74 */ s32 powi(s32, s32);
/* 00D008 */ float lb_8000D008(float, float);
/* 00D148 */ s32 lb_8000D148(float, float, float, float, float, float, float);
#define GALE01_00F9F8
/* 00F9F8 */ void lb_8000F9F8(HSD_JObj* jobj);
/* 00FA94 */ M2C_UNK lb_8000FA94();
/* 00FCDC */ void lb_8000FCDC(void);
/* 00FD18 */ void lb_8000FD18(M2C_UNK);
/* 00FD48 */ void lb_8000FD48(HSD_JObj*, DynamicsDesc*, size_t);
/* 0100B0 */ M2C_UNK lb_800100B0();
/* 0101C8 */ M2C_UNK lb_800101C8();
/* 0103B8 */ M2C_UNK lb_800103B8();
/* 0103D8 */ M2C_UNK lb_800103D8();
/* 01044C */ void lb_8001044C(DynamicsDesc*, M2C_UNK, int, float pos_y, bool,
Fighter_Part part, int, bool);
/* 0115F4 */ void lb_800115F4(void);
/* 011710 */ void lb_80011710(DynamicsDesc*, DynamicsDesc*);
/* 0117F4 */ bool lb_800117F4(M2C_UNK, float*, float*, u32, int);
/* 0119DC */ void lb_800119DC(Vec3*, int, float, float, float);
/* 011A50 */ void lb_80011A50(Vec3*, int, float, float, float, float, float,
float, float);
/* 011ABC */ enum_t lb_80011ABC(void);
/* 011AC4 */ HSD_LObj* lb_80011AC4(M2C_UNK);
/* 011C18 */ void lb_80011C18(HSD_JObj* jobj, u32 flags);
/* 011E24 */ int lb_80011E24(HSD_JObj*, HSD_JObj**, ...);
/* 01204C */ M2C_UNK lb_8001204C();
/* 0121FC */ void lb_800121FC(HSD_ImageDesc*, int, int, int, int);
/* 0122C8 */ void lb_800122C8(HSD_ImageDesc*, int, int, int);
/* 0122F0 */ M2C_UNK lb_800122F0();
/* 01271C */ M2C_UNK lb_8001271C();
/* 01285C */ M2C_UNK lb_8001285C();
/* 012994 */ M2C_UNK lb_80012994();
/* 013614 */ M2C_UNK fn_80013614();
/* 0138AC */ M2C_UNK fn_800138AC();
/* 0138CC */ void lb_800138CC(HSD_GObj* gobj, int arg1);
/* 0138D8 */ void lb_800138D8(HSD_GObj* gobj, s8 arg1);
/* 0138EC */ M2C_UNK lb_800138EC();
/* 013B14 */ HSD_CObj* lb_80013B14(HSD_CameraDescPerspective*);
/* 013BB8 */ M2C_UNK lb_80013BB8();
/* 013BE4 */ M2C_UNK lb_80013BE4();
/* 013C18 */ M2C_UNK lb_80013C18();
/* 013D68 */ M2C_UNK lb_80013D68();
/* 013E3C */ M2C_UNK lb_80013E3C();
/* 013F78 */ M2C_UNK lb_80013F78();
/* 013FF0 */ M2C_UNK lb_80013FF0();
/* 014014 */ M2C_UNK lb_80014014();
/* 0140F8 */ M2C_UNK lb_800140F8();
/* 014234 */ M2C_UNK lb_80014234();
/* 014258 */ bool lb_80014258(HSD_GObj* gobj, void* arg1, FtCmd cmd);
/* 014498 */ void lb_80014498(void* arg0);
/* 0144C8 */ bool lb_800144C8(void*, void*, s32, s32);
/* 014534 */ M2C_UNK lb_80014534();
/* 014574 */ void lb_80014574(u8, int, int, int);
/* 0145C0 */ void lb_800145C0(u8);
/* 0145F4 */ M2C_UNK lb_800145F4();
/* 014638 */ bool lb_80014638(Vec3*, M2C_UNK);
/* 014770 */ bool lb_80014770(Vec3*, int);
/* 0149E0 */ bool lb_800149E0(f32*, u32);
#define __GALE01_00F9F8
/* 011B74 */ static void lb_80011B74(HSD_DObj* dobj, u32 flags);
/* 013BB0 */ static bool lb_80013BB0(void);
/* 4D63B4 */ static enum_t lb_804D63B4;
#define GALE01_019230
/* 0192A8 */ void lb_800192A8(M2C_UNK cb);
/* 01955C */ M2C_UNK lb_8001955C();
/* 0195D0 */ void lb_800195D0(void);
#define GALE01_01E560
/* 01E60C */ M2C_UNK lbAnim_8001E60C(M2C_UNK, s8);
/* 01E7E8 */ void lbAnim_8001E7E8(M2C_UNK, M2C_UNK, s32, s8);
#define _lbarchive_h_
void lbArchive_InitializeDAT(HSD_Archive* archive, u8* data, u32 length);
void lbArchive_80016EFC(HSD_Archive* archive);
HSD_Archive* lbArchive_LoadArchive(char* filename);
void* lbArchive_80016C64(char*, void**, ...);
void* lbArchive_80016DBC(char*, void**, ...);
s32 lbArchive_800171CC(void*, ...);
void lbArchive_LoadSections(HSD_Archive* archive, void** file, ...);
#define GALE01_014ABC
/* 014ABC */ M2C_UNK lbArq_80014ABC();
/* 014AC4 */ M2C_UNK lbArq_80014AC4();
/* 014BD0 */ M2C_UNK lbArq_80014BD0();
/* 014D2C */ void lbArq_80014D2C(void);
#define MELEE_LB_LBAUDIO_AX_H
/// @todo Create an @c enum for SFX IDs.
#define SFX_NONE -1
/* 02305C */ s32 lbAudioAx_8002305C(s32, s32);
/* 023090 */ M2C_UNK lbAudioAx_80023090();
/* 0230C8 */ s32 lbAudioAx_800230C8(s32, int*, int*);
/* 023130 */ s32 lbAudioAx_80023130(void);
/* 023220 */ s32 lbAudioAx_80023220(s32);
/* 023254 */ M2C_UNK fn_80023254();
/* 0233EC */ s32 lbAudioAx_800233EC(s32);
/* 023694 */ s32 lbAudioAx_80023694(void);
/* 0236B8 */ void lbAudioAx_800236B8(s32);
/* 0236DC */ void lbAudioAx_800236DC(HSD_GObj*);
/* 023710 */ bool lbAudioAx_80023710(s32);
/* 023730 */ M2C_UNK lbAudioAx_80023730();
/* 023750 */ M2C_UNK fn_80023750();
/* 0237A8 */ u32 lbAudioAx_800237A8(enum_t sfx_id, u8 sfx_vol, u8 sfx_pan);
/* 023870 */ int lbAudioAx_80023870(int, int, int, int);
/* 02392C */ M2C_UNK lbAudioAx_8002392C();
/* 023968 */ s32 lbAudioAx_80023968(s32);
/* 023A44 */ s32 lbAudioAx_80023A44(u8, u16);
/* 023B24 */ f32 lbAudioAx_80023B24(s32);
/* 023ED4 */ M2C_UNK fn_80023ED4();
/* 023F28 */ void lbAudioAx_80023F28(s32);
/* 024030 */ void lbAudioAx_80024030(s32);
/* 0240B4 */ M2C_UNK lbAudioAx_800240B4();
/* 02411C */ M2C_UNK lbAudioAx_8002411C();
/* 024184 */ int lbAudioAx_80024184(int, int, int, int);
/* 024304 */ M2C_UNK lbAudioAx_80024304();
/* 02438C */ void lbAudioAx_8002438C(s32);
/* 0243F4 */ M2C_UNK lbAudioAx_800243F4();
/* 0244F4 */ M2C_UNK fn_800244F4();
/* 0245D4 */ M2C_UNK lbAudioAx_800245D4();
/* 0245F4 */ s32 lbAudioAx_800245F4(s32);
/* 024614 */ void lbAudioAx_80024614(s32);
/* 024634 */ M2C_UNK lbAudioAx_80024634();
/* 024654 */ M2C_UNK fn_80024654();
/* 024B1C */ void lbAudioAx_80024B1C(s32, s32);
/* 024B58 */ void lbAudioAx_80024B58(s32, s32);
/* 024B94 */ void lbAudioAx_80024B94(int, int);
/* 024BD0 */ u8 lbAudioAx_80024BD0(void);
/* 024C08 */ void lbAudioAx_80024C08(u8);
/* 024C84 */ M2C_UNK lbAudioAx_80024C84();
/* 024D50 */ M2C_UNK lbAudioAx_80024D50();
/* 024D78 */ M2C_UNK lbAudioAx_80024D78();
/* 024DC4 */ void lbAudioAx_80024DC4(s32);
/* 024E50 */ M2C_UNK lbAudioAx_80024E50();
/* 024E84 */ M2C_UNK lbAudioAx_80024E84();
/* 024F08 */ M2C_UNK lbAudioAx_80024F08();
/* 024F6C */ M2C_UNK lbAudioAx_80024F6C();
/* 024FDC */ void lbAudioAx_80024FDC(void);
/* 024FF4 */ void lbAudioAx_80024FF4(void);
/* 02500C */ void lbAudioAx_8002500C(s32);
/* 025038 */ void lbAudioAx_80025038(s32);
/* 025064 */ M2C_UNK lbAudioAx_80025064();
/* 025098 */ M2C_UNK lbAudioAx_80025098();
/* 0250A0 */ M2C_UNK fn_800250A0();
/* 0251EC */ M2C_UNK fn_800251EC();
/* 0253D8 */ M2C_UNK fn_800253D8();
/* 0256BC */ M2C_UNK fn_800256BC();
/* 0259A0 */ M2C_UNK fn_800259A0();
/* 0259EC */ M2C_UNK fn_800259EC();
/* 025A98 */ M2C_UNK fn_80025A98();
/* 025B44 */ M2C_UNK fn_80025B44();
/* 025CBC */ M2C_UNK fn_80025CBC();
/* 025E38 */ M2C_UNK fn_80025E38();
/* 025FAC */ M2C_UNK fn_80025FAC();
/* 0262A0 */ M2C_UNK fn_800262A0();
/* 0263B4 */ M2C_UNK fn_800263B4();
/* 0263E8 */ void lbAudioAx_800263E8(HSD_GObj*, int, int, int, float);
/* 0264E4 */ bool lbAudioAx_800264E4(void);
/* 026510 */ void lbAudioAx_80026510(HSD_GObj*);
/* 0265C4 */ enum_t lbAudioAx_800265C4(HSD_GObj*, enum_t sfx);
/* 026650 */ M2C_UNK fn_80026650();
/* 0267B0 */ M2C_UNK fn_800267B0();
/* 0268B4 */ M2C_UNK fn_800268B4();
/* 0269AC */ M2C_UNK fn_800269AC();
/* 026C04 */ M2C_UNK fn_80026C04();
/* 026E58 */ M2C_UNK fn_80026E58();
/* 026E84 */ M2C_UNK lbAudioAx_80026E84();
/* 026EBC */ M2C_UNK lbAudioAx_80026EBC();
/* 026F2C */ void lbAudioAx_80026F2C(s32);
/* 02702C */ void lbAudioAx_8002702C(s32, u64);
/* 027168 */ void lbAudioAx_80027168(void);
/* 027488 */ M2C_UNK fn_80027488();
/* 027648 */ f32 lbAudioAx_80027648(void);
/* 02785C */ M2C_UNK lbAudioAx_8002785C();
/* 027AB0 */ M2C_UNK lbAudioAx_80027AB0();
/* 027DBC */ void lbAudioAx_80027DBC(void);
/* 027DF8 */ M2C_UNK lbAudioAx_80027DF8();
/* 02835C */ M2C_UNK lbAudioAx_8002835C();
/* 02838C */ void lbAudioAx_8002838C(void);
/* 028690 */ M2C_UNK lbAudioAx_80028690();
/* 028B2C */ M2C_UNK lbAudioAx_80028B2C();
/* 028B4C */ M2C_UNK lbAudioAx_80028B4C();
/* 028B6C */ M2C_UNK lbAudioAx_80028B6C();
/* 028B90 */ M2C_UNK lbAudioAx_80028B90();
#define GALE01_01FC08
/* 01FC08 */ M2C_UNK fn_8001FC08();
/* 01FEC4 */ M2C_UNK fn_8001FEC4();
/* 0204C8 */ M2C_UNK fn_800204C8();
/* 0205F0 */ M2C_UNK lbBgFlash_800205F0();
/* 02063C */ M2C_UNK lbBgFlash_8002063C();
/* 020688 */ M2C_UNK lbBgFlash_80020688();
/* 0206D4 */ M2C_UNK lbBgFlash_800206D4();
/* 02087C */ M2C_UNK fn_8002087C();
/* 0208B0 */ M2C_UNK fn_800208B0();
/* 0208EC */ M2C_UNK lbBgFlash_800208EC();
/* 0209F4 */ M2C_UNK lbBgFlash_800209F4();
/* 020AEC */ M2C_UNK fn_80020AEC();
/* 020E38 */ M2C_UNK lbBgFlash_80020E38();
/* 02113C */ M2C_UNK fn_8002113C();
/* 021410 */ M2C_UNK lbBgFlash_80021410();
/* 0219E4 */ M2C_UNK fn_800219E4();
/* 021A10 */ M2C_UNK lbBgFlash_80021A10();
/* 021A18 */ M2C_UNK lbBgFlash_80021A18();
/* 021B04 */ M2C_UNK fn_80021B04();
/* 021C1C */ M2C_UNK fn_80021C1C();
/* 021C48 */ void lbBgFlash_80021C48(u32, u32);
/* 021C80 */ M2C_UNK fn_80021C80();
#define GALE01_019880
/* 019880 */ void lb_80019880(s32 arg0, s32 arg1);
/* 019894 */ M2C_UNK lb_80019894();
/* 0198E0 */ M2C_UNK lb_800198E0();
/* 019900 */ M2C_UNK lb_80019900();
/* 019A30 */ s32 lb_80019A30(s32 arg0);
/* 019A48 */ M2C_UNK lb_80019A48();
/* 019AAC */ void lb_80019AAC(Event);
/* 019BB8 */ M2C_UNK lb_80019BB8();
/* 019C38 */ M2C_UNK lb_80019C38();
/* 019CB0 */ M2C_UNK lb_80019CB0();
/* 019EF0 */ M2C_UNK lb_80019EF0();
/* 01A008 */ M2C_UNK fn_8001A008();
/* 01A0B0 */ M2C_UNK fn_8001A0B0();
/* 01A184 */ M2C_UNK lb_8001A184();
/* 01A3A4 */ M2C_UNK lb_8001A3A4();
/* 01A4CC */ M2C_UNK lb_8001A4CC();
/* 01A594 */ M2C_UNK lb_8001A594();
/* 01A860 */ M2C_UNK lb_8001A860();
/* 01A8A4 */ M2C_UNK lb_8001A8A4();
/* 01A9CC */ M2C_UNK lb_8001A9CC();
/* 01AAE4 */ M2C_UNK lb_8001AAE4();
/* 01AC04 */ M2C_UNK lb_8001AC04();
/* 01ACEC */ M2C_UNK lb_8001ACEC();
/* 01AE38 */ M2C_UNK lb_8001AE38();
/* 01AF84 */ M2C_UNK lb_8001AF84();
/* 01B068 */ M2C_UNK lb_8001B068();
/* 01B14C */ M2C_UNK lb_8001B14C();
/* 01B614 */ M2C_UNK lb_8001B614();
/* 01B6E0 */ s32 lb_8001B6E0(s32 arg0);
/* 01B6F8 */ enum_t lb_8001B6F8(void);
/* 01B760 */ void lb_8001B760(int);
/* 01B7E0 */ M2C_UNK lb_8001B7E0();
/* 01B8C8 */ M2C_UNK lb_8001B8C8();
/* 01B99C */ M2C_UNK lb_8001B99C();
/* 01BA44 */ M2C_UNK lb_8001BA44();
/* 01BB48 */ M2C_UNK lb_8001BB48();
/* 01BC18 */ M2C_UNK lb_8001BC18();
/* 01BD34 */ M2C_UNK lb_8001BD34();
/* 01BE30 */ M2C_UNK lb_8001BE30();
/* 01BF04 */ M2C_UNK lb_8001BF04();
/* 01BFD8 */ M2C_UNK lb_8001BFD8();
/* 01C0F4 */ M2C_UNK lb_8001C0F4();
/* 01C2D8 */ int lb_8001C2D8(int, char*, char*, char*);
/* 01C404 */ M2C_UNK lb_8001C404();
/* 01C4A8 */ M2C_UNK lb_8001C4A8();
/* 01C550 */ M2C_UNK lb_8001C550();
/* 01C5A4 */ M2C_UNK lb_8001C5A4();
/* 01C5BC */ void lb_8001C5BC(void);
/* 01C600 */ M2C_UNK lb_8001C600();
/* 01C658 */ M2C_UNK lb_8001C658();
/* 01C820 */ M2C_UNK lb_8001C820();
/* 01C87C */ M2C_UNK lb_8001C87C();
/* 01C8BC */ M2C_UNK lb_8001C8BC();
/* 01CAF4 */ M2C_UNK lb_8001CAF4();
/* 01CBAC */ void lb_8001CBAC(s32 arg0);
/* 01CBBC */ M2C_UNK lb_8001CBBC();
/* 01CC30 */ M2C_UNK fn_8001CC30();
/* 01CC4C */ M2C_UNK lb_8001CC4C();
/* 01CC84 */ void lb_8001CC84(void);
/* 01CDB4 */ void lb_8001CDB4(void);
/* 01CE00 */ M2C_UNK lb_8001CE00();
/* 01CE78 */ void lb_8001CE78(void);
/* 01CEC0 */ M2C_UNK fn_8001CEC0();
/* 01CEE4 */ M2C_UNK fn_8001CEE4();
/* 01CF18 */ M2C_UNK lb_8001CF18();
/* 01D164 */ M2C_UNK lb_8001D164();
/* 01D1F4 */ M2C_UNK lb_8001D1F4();
/* 01D21C */ void lb_8001D21C(void);
#define __GALE01_019880
struct lb_80433318_t {
/* +0 */ M2C_UNK x0;
/* +4 */ M2C_UNK x4;
/* +8 */ int x8;
/* +C */ u8 _C[0x5C];
};
struct { int x[1 - 2 * !(sizeof(struct lb_80433318_t) == 0x68)]; };;
struct lb_804329F0_t {
/* 0x00 */ char pad_0[8];
/* 0x08 */ s32 unk_8; /* inferred */
/* 0x0C */ s32 unk_C; /* inferred */
/* 0x10 */ s32 unk_10;
/* 0x14 */ char pad_14[4];
}; /* size = 0x18 */
struct lb_80432A68_38_t {
/* 0x0 */ s32 unk_0;
/* 0x4 */ s32 unk_4;
};
struct { int x[1 - 2 * !(sizeof(struct lb_80432A68_38_t) == 0x8)]; };;
struct lb_80432A68_t {
/* 0x000 */ s32 unk_0; /* inferred */
/* 0x004 */ s32 unk_4; /* inferred */
/* 0x008 */ s32 unk_8;
/* 0x00C */ s32 unk_C;
/* 0x010 */ s32 unk_10;
/* 0x014 */ s32 unk_14;
/* 0x018 */ s32 unk_18;
/* 0x01C */ s32 unk_1C;
/* 0x020 */ s32 unk_20;
/* 0x024 */ s32 unk_24;
/* 0x028 */ s32 unk_28;
/* 0x02C */ char pad_2C[8]; /* maybe part of unk_28[3]? */
/* 0x034 */ s32 unk_34;
/* 0x038 */ struct lb_80432A68_38_t unk_38[8];
/* 0x078 */ char pad_78[8];
/* 0x080 */ s32 unk_80;
/* 0x084 */ char pad_84[0x488]; /* maybe part of unk_80[0x123]? */
/* 0x50C */ s32 unk_50C;
/* 0x510 */ s32 unk_510;
/* 0x514 */ char pad_514[0x50]; /* maybe part of unk_510[0x15]? */
/* 0x564 */ s32 unk_564;
/* 0x568 */ char pad_568[0x50]; /* maybe part of unk_564[0x15]? */
/* 0x5B8 */ s32 unk_5B8;
/* 0x5BC */ char pad_5BC[0x50]; /* maybe part of unk_5B8[0x15]? */
/* 0x60C */ s32 unk_60C;
/* 0x610 */ char pad_610[0x50]; /* maybe part of unk_60C[0x15]? */
/* 0x660 */ s32 unk_660;
/* 0x664 */ char pad_664[0x50]; /* maybe part of unk_660[0x15]? */
/* 0x6B4 */ s32 unk_6B4;
/* 0x6B8 */ char pad_6B8[0x50]; /* maybe part of unk_6B4[0x15]? */
/* 0x708 */ s32 unk_708;
/* 0x70C */ char pad_70C[0x50]; /* maybe part of unk_708[0x15]? */
/* 0x75C */ s32 unk_75C;
/* 0x760 */ char pad_760[0x150]; /* maybe part of unk_75C[0x55]? */
}; /* size = 0x8B0 */
struct { int x[1 - 2 * !(sizeof(struct lb_80432A68_t) == 0x8B0)]; };;
/* 4329F0 */ static struct lb_804329F0_t lb_804329F0[5];
/* 432A68 */ static struct lb_80432A68_t lb_80432A68;
/* 433318 */ static struct lb_80433318_t lb_80433318;
#define GALE01_005BB0
typedef struct {
Vec3 v1;
float v2;
HSD_JObj* jobj;
} Foo;
/* 005BB0 */ int lbColl_80005BB0(HitCapsule*, int);
/* 005C44 */ bool lbColl_80005C44(Vec3*, Vec3*, Vec3*, Vec3*, float, float);
/* 005EBC */ float lbColl_80005EBC(Vec3*, Vec3*, Vec3*, float*);
/* 005FC0 */ float lbColl_80005FC0(Vec3*, Vec3*, Vec3*, float*);
/* 006094 */ bool lbColl_80006094(Vec3*, Vec3*, Vec3*, Vec3*, Vec3*, Vec3*,
float, float);
/* 0067F8 */ bool lbColl_800067F8(Vec3*, Vec3*, Vec3*, Vec3*, Vec3*, Vec3*,
float, float, float);
/* 0077A0 */ void lbColl_800077A0(Vec3*, Mtx, Vec3*, Vec3*, Vec3*, Vec3*,
float* angle, float, float);
/* 007AFC */ bool lbColl_80007AFC(HitCapsule*, HitCapsule*, float, float);
/* 007B78 */ M2C_UNK lbColl_80007B78(Mtx, Mtx, float, float);
/* 007BCC */ bool lbColl_80007BCC(HitCapsule*, HitResult* shield_hit, M2C_UNK,
s32, float, float, float);
/* 007D68 */ void lbColl_JObjSetupMatrix(HSD_JObj*);
/* 007DD8 */ void lbColl_80007DD8(HitCapsule*, HitResult*, Mtx, Vec3*, float*,
float);
/* 007ECC */ bool lbColl_80007ECC(HitCapsule*, HurtCapsule*, Mtx,
float hit_scl_y, float hurt_scl_y,
float hurt_pos_z);
/* 00805C */ bool lbColl_8000805C(HitCapsule* arg0, HurtCapsule* arg1,
Mtx arg2, s32 arg3, float arg4, float arg5,
float arg6);
/* 008248 */ bool lbColl_80008248(HitCapsule*, HurtCapsule*, Mtx, float, float,
float);
/* 0083C4 */ void lbColl_800083C4(HurtCapsule*);
/* 008428 */ void lbColl_80008428(HitCapsule*);
/* 008434 */ void lbColl_80008434(HitCapsule*);
/* 008440 */ void lbColl_80008440(HitCapsule*);
/* 0084FC */ void lbColl_CopyHitCapsule(HitCapsule* src, HitCapsule* dst);
/* 008688 */ bool lbColl_80008688(HitCapsule*, int, void*);
/* 008820 */ bool lbColl_80008820(HitCapsule*, int, void*);
/* 0089B8 */ void lbColl_800089B8(HitCapsule* hit, M2C_UNK arg1);
/* 008A5C */ void lbColl_80008A5C(HitCapsule* hit);
/* 008D30 */ void lbColl_80008D30(HitCapsule*, M2C_UNK);
/* 008DA4 */ M2C_UNK lbColl_80008DA4();
/* 008FC8 */ void lbColl_80008FC8(Vec3, Vec3, u8*, u8*, float);
/* 0096B4 */ void lbColl_800096B4(MtxPtr, Vec3, Vec3, u8*, u8*, float);
/* 009DD4 */ M2C_UNK lbColl_80009DD4();
/* 009F54 */ bool lbColl_80009F54(HitCapsule* hit, u32 arg1, float arg8);
/* 00A044 */ bool lbColl_8000A044(HitCapsule* hit, u32 arg1, float arg8);
/* 00A10C */ bool lbColl_8000A10C(Vec3 (*)[2], u32, f32);
/* 00A1A8 */ bool lbColl_8000A1A8(M2C_UNK, int, float scale_y);
/* 00A244 */ bool lbColl_8000A244(HurtCapsule* hurt, u32 arg1, Mtx arg2,
float arg3);
/* 00A460 */ bool lbColl_8000A460(Foo* hurt, u32 arg1);
/* 00A584 */ bool lbColl_8000A584(HurtCapsule* hurt, u32 arg1, u32 arg2,
MtxPtr arg3, float arg8);
/* 00A78C */ bool lbColl_8000A78C(HitResult* hit, u32 arg1, Mtx arg2,
float pos_z);
/* 00A95C */ bool lbColl_8000A95C(HitResult* hit, u32 arg1, Mtx arg2,
float pos_z);
/* 00AB2C */ bool lbColl_8000AB2C(HitResult* hit, u32 arg1, Mtx arg2,
float pos_z);
/* 00ACFC */ bool lbColl_8000ACFC(void*, HitCapsule*);
static inline bool approximatelyZero(float x)
{
bool result;
if ((x < 0.00001f) && (x > -0.00001f)) {
result = 1;
} else {
result = 0;
}
return result;
}
static inline bool testPlusX(Vec3* a, Vec3* b, Vec3* c, float offset)
{
float x = a->x + offset;
if (x < b->x && x < c->x) {
return 0;
}
return 1;
}
static inline bool testPlus(float a, float b, float c, float offset)
{
float x = a + offset;
if (x < b && x < c) {
return 0;
}
return 1;
}
static inline bool testMinusX(Vec3* a, Vec3* b, Vec3* c, float offset)
{
float x = a->x - offset;
if (x > b->x && x > c->x) {
return 0;
}
return 1;
}
#define _lbcommands_h_
typedef struct _Command_04_Struct {
u32* ptr[1];
} Command_04_Struct;
typedef struct _Command_09_Struct {
u32 id : 6;
u32 param_1 : 8;
u32 param_2 : 18;
} Command_09_Struct;
/// @todo Unify with #ftCmdScript
typedef struct _CommandInfo {
f32 timer; // 0x00
f32 frame_count; // 0x04
union {
u32* data_position; // 0x08
struct _Command_04_Struct Command_04;
struct _Command_09_Struct* Command_09;
} u;
u32 loop_count; // 0x0C
u32* event_return[4]; // 0x10 - Array Size is purely made-up for now
u32 loop_count_dup; // 0x14
u32 unk_x18; // 0x18
} CommandInfo;
void Command_00(CommandInfo* info);
void Command_01(CommandInfo* info);
void Command_02(CommandInfo* info);
void Command_03(CommandInfo* info);
void Command_04(CommandInfo* info);
void Command_05(CommandInfo* info);
void Command_14(CommandInfo* info);
void Command_06(CommandInfo* info);
void Command_07(CommandInfo* info);
void Command_08(CommandInfo* info);
void Command_09(CommandInfo* info);
bool Command_Execute(CommandInfo* info, u32 command);
#define GALE01_0174BC
typedef void (*lbDvd_Callback)(int, int index, int, int);
/* 015BD0 */ void* lbDvd_80015BD0(s8, s32);
/* 01634C */ u32 lbDvd_8001634C(s16);
/* 0174BC */ M2C_UNK lbDvd_800174BC();
/* 0174E8 */ void lbDvd_800174E8(s32 index);
/* 017598 */ bool lbDvd_80017598(bool cached);
/* 017644 */ M2C_UNK lbDvd_80017644();
/* 017700 */ void lbDvd_80017700(int);
/* 017740 */ void* lbDvd_80017740(int type, s16 entry_num, s32 transient_heap,
s32 heap, u32 size, s8 load_state,
s16 load_score, s8, s32 effect_index);
/* 0178E8 */ void lbDvd_800178E8(s32, char*, s32, s32, s32, s32, s32, s32,
s32);
/* 017960 */ M2C_UNK lbDvd_80017960();
/* 017A80 */ M2C_UNK lbDvd_80017A80();
/* 017AB0 */ void lbDvd_CachePreloadedFile(s32 index);
/* 017CC4 */ M2C_UNK lbDvd_80017CC4();
/* 017E64 */ void lbDvd_80017E64(void*, int, void*, bool);
/* 017EBC */ HSD_Archive* lbDvd_GetPreloadedArchive(s32);
/* 01819C */ HSD_Archive* lbDvd_8001819C(const char* basename);
/* 01822C */ PreloadCacheScene* lbDvd_8001822C(void);
/* 01823C */ M2C_UNK lbDvd_8001823C();
/* 018254 */ void lbDvd_80018254(void);
/* 0187F4 */ M2C_UNK lbDvd_800187F4();
/* 018A2C */ M2C_UNK lbDvd_80018A2C();
/* 018C2C */ M2C_UNK lbDvd_80018C2C();
/* 018C6C */ void lbDvd_80018C6C(void);
/* 018CF4 */ M2C_UNK lbDvd_80018CF4();
/* 018F58 */ void lbDvd_80018F58(bool value);
/* 018F68 */ void lbDvd_80018F68(void);
/* 019100 */ M2C_UNK lbDvd_80019100();
#define __GALE01_0174BC
/* 0189EC */ static void lbDvd_800189EC(int);
/* 0189EC */ static void lbDvd_800189EC(int);
/* 3BA638 */ static PreloadCache lbDvd_803BA638 = { 0 };
/* 3BA68C */ static PreloadEntry lbDvd_803BA68C = { 0 };
/* 3BA6A8 */ static char* lbDvd_803BA6A8;
/* 432078 */ static PreloadCache preloadCache;
/* 4D37D0 */ static char* lbDvd_804D37D0;
/* 4D37D8 */ static char* lbDvd_804D37D8;
/* 4D37E0 */ static char* lbDvd_804D37E0;
#define GALE01_01615C
/* 01615C */ void lbFile_8001615C(void*, int, void*, bool);
/* 0161A0 */ bool lbFile_800161A0(void);
/* 0161C4 */ void lbFile_800161C4(int file, u32 src, u32 dest, u32 size,
int type, int pri);
/* 016204 */ char* lbFile_80016204(const char* basename);
/* 01634C */ size_t lbFile_8001634C(s32 fileno);
/* 0163D8 */ s32 lbFile_800163D8(const char* basename);
/* 0164A4 */ void lbFile_800164A4(s32 file, u32 src, u32* dest, s32 size,
HSD_DevComCallback callback, void* args);
/* 016580 */ void lbFile_80016580(const char* basename, u32 src, u32* dest,
HSD_DevComCallback callback, void* args);
/* 01668C */ void lbFile_8001668C(const char* basename, u32* src, u32* dest);
/* 016760 */ void lbFile_80016760(const char* basename, u32* src, u32* dest);
/* 0168A0 */ bool lbFile_800168A0(s32 arg0, const char* basename, u32* src,
u32* dest);
#define GALE01_01E2F8
bool lbGx_8001E2F8(Vec4*, Vec3*, U8Vec4*, uint, float);
#define GALE01_0158D0
/* 0158D0 */ void lbHeap_800158D0(int, int);
/* 015BB8 */ bool lbHeap_80015BB8(int);
/* 015BD0 */ HSD_Archive* lbHeap_80015BD0(int arg0, int arg1);
/* 015CA8 */ void lbHeap_80015CA8(int, void*);
/* 015D6C */ int lbHeap_80015D6C(int heap0, M2C_UNK cb, int heap1);
/* 015F3C */ void lbHeap_80015F3C(void);
#define __GALE01_0158D0
struct lbHeap_80431FA0_x10_t {
s32 unk_10;
s32 unk_14;
s32 unk_18;
s32 unk_1C;
s32 unk_20;
s32 unk_24;
s32 unk_28;
};
struct { int x[1 - 2 * !(sizeof(struct lbHeap_80431FA0_x10_t) == 0x1C)]; };;
struct lbHeap_80431FA0_t {
/* 0x00 */ void* unk_0; /* inferred */
/* 0x04 */ void* unk_4; /* inferred */
/* 0x08 */ u32 unk_8; /* inferred */
/* 0x0C */ u32 unk_C; /* inferred */
/* 0x10 */ struct lbHeap_80431FA0_x10_t unk_10[6];
}; /* size = 0xB8 */
struct { int x[1 - 2 * !(sizeof(struct lbHeap_80431FA0_t) == 0xB8)]; };;
/* 431FA0 */ static struct lbHeap_80431FA0_t lbHeap_80431FA0;
#define _lblanguage_h_
enum_t lbLang_GetLanguageSetting(void);
enum_t lbLang_SetLanguageSetting(enum_t language);
enum_t lbLang_IsSettingJP(void);
enum_t lbLang_IsSettingUS(void);
enum_t lbLang_GetSavedLanguage(void);
void lbLang_SetSavedLanguage(enum_t language);
enum_t lbLang_IsSavedLanguageJP(void);
enum_t lbLang_IsSavedLanguageUS(void);
#define GALE01_014E24
/* 014FC8 */ HSD_Archive* lbMemory_80014FC8(s32, s32);
/* 0154BC */ void lbMemory_800154BC(uintptr_t*, uintptr_t*);
/* 01564C */ void lbMemory_8001564C(void);
#define GALE01_01E8F8
/* 01E8F8 */ float lbMthp_8001E8F8(u32);
/* 01E910 */ M2C_UNK fn_8001E910();
/* 01EB14 */ M2C_UNK fn_8001EB14();
/* 01EBF0 */ M2C_UNK fn_8001EBF0();
/* 01ECF4 */ M2C_UNK fn_8001ECF4();
/* 01EF5C */ M2C_UNK fn_8001EF5C();
/* 01F06C */ M2C_UNK fn_8001F06C();
/* 01F13C */ M2C_UNK fn_8001F13C();
/* 01F294 */ s32 fn_8001F294(void);
/* 01F2A4 */ M2C_UNK fn_8001F2A4();
/* 01F410 */ M2C_UNK lbMthp_8001F410();
/* 01F578 */ M2C_UNK lbMthp_8001F578();
/* 01F5C4 */ s32 lbMthp_8001F5C4(void);
/* 01F5D4 */ s32 lbMthp_8001F5D4(void);
/* 01F5E4 */ s32 lbMthp_8001F5E4(void);
/* 01F5F4 */ s32 lbMthp_8001F5F4(void);
/* 01F604 */ s32 lbMthp_8001F604(void);
/* 01F614 */ void lbMthp_8001F614(s32 arg0);
/* 01F624 */ M2C_UNK lbMthp_8001F624();
/* 01F67C */ M2C_UNK lbMthp_8001F67C();
/* 01F800 */ void lbMthp_8001F800(void);
/* 01F87C */ void lbMthp_8001F87C(void);
/* 01F890 */ M2C_UNK lbMthp8001F890();
/* 01F928 */ M2C_UNK lbMthp8001F928();
/* 01FAA0 */ M2C_UNK lbMthp8001FAA0();
#define __GALE01_01E8F8
struct lbl_804333E0_t {
/* 0x000 */ char pad_0[0x84];
/* 0x084 */ s32 unk_84; /* inferred */
/* 0x088 */ char pad_88[0x80]; /* maybe part of unk_84[0x21]? */
/* 0x108 */ s32 unk_108;
/* 0x10C */ s32 unk_10C;
/* 0x110 */ s32 unk_110;
/* 0x114 */ char pad_114[0x20]; /* maybe part of unk_110[9]? */
/* 0x134 */ s32 unk_134;
/* 0x138 */ char pad_138[0xC]; /* maybe part of unk_134[4]? */
/* 0x144 */ s32 unk_144;
/* 0x148 */ s32 unk_148;
/* 0x14C */ s32 unk_14C;
/* 0x150 */ char pad_150[0x88]; /* maybe part of unk_14C[0x23]? */
}; /* size = 0x1D8 */
struct { int x[1 - 2 * !(sizeof(struct lbl_804333E0_t) == 0x1D8)]; };;
/* 4333E0 */ static struct lbl_804333E0_t lbl_804333E0;
#define GALE01_021CE8
void lbRefract_800222A4(void);
void lbRefract_8002247C(HSD_CObj*);
void lbRefract_80022560(void);
void lbRefract_800225D4(void);
s32 lbRefract_PObjLoad(HSD_PObj* pobj, HSD_PObjDesc* desc);
void lbRefract_80022998(HSD_MObj*, u32 rendermode, s8);
void lbRefract_80022BB8(void);
void lbRefract_80022BD0(void);
float atan2f(float y, float x);
float acosf(float);
float asinf(float);
float atanf(float);
void lbRefract_80021CE8(void*, s32);
#define GALE01_00E9F0
/* 00E9F0 */ void lbShadow_8000E9F0(Vec3*, s32, f32);
/* 00ED54 */ void lbShadow_8000ED54(s32*, HSD_JObj*);
/* 00EE8C */ void lbShadow_8000EE8C(s32*);
/* 00EFEC */ void lbShadow_8000EFEC(void);
#define GALE01_01D2BC
/* 01D2BC */ M2C_UNK lbSnap_8001D2BC();
/* 01D338 */ M2C_UNK lbSnap_8001D338();
/* 01D350 */ int lbSnap_8001D350(int i);
/* 01D394 */ M2C_UNK lbSnap_8001D394();
/* 01D3B0 */ M2C_UNK lbSnap_8001D3B0();
/* 01D3CC */ M2C_UNK lbSnap_8001D3CC();
/* 01D3E8 */ M2C_UNK lbSnap_8001D3E8();
/* 01D40C */ M2C_UNK lbSnap_8001D40C();
/* 01D4A4 */ M2C_UNK lbSnap_8001D4A4();
/* 01D5FC */ M2C_UNK lbSnap_8001D5FC();
/* 01D7B0 */ M2C_UNK lbSnap_8001D7B0();
/* 01DA5C */ M2C_UNK lbSnap_8001DA5C();
/* 01DC0C */ M2C_UNK lbSnap_8001DC0C();
/* 01DE8C */ M2C_UNK lbSnap_8001DE8C();
/* 01DF20 */ M2C_UNK lbSnap_8001DF20();
/* 01DF6C */ M2C_UNK lbSnap_8001DF6C();
/* 01E058 */ M2C_UNK lbSnap_8001E058();
/* 01E204 */ s32 lbSnap_8001E204(void);
/* 01E210 */ s32 lbSnap_8001E210(void);
/* 01E218 */ M2C_UNK lbSnap_8001E218();
/* 01E27C */ M2C_UNK lbSnap_8001E27C();
/* 01E290 */ void lbSnap_8001E290(void);
#define __GALE01_01D2BC
struct Unk80433380_48 {
s32 unk0;
char pad_4[0x408 - 0x4];
};
struct Unk80433380 {
/* 0x00 */ s32 unk_0; /* inferred */
/* 0x04 */ char pad_4[0x44]; /* maybe part of unk_0[0x12]? */
/* 0x48 */ struct Unk80433380_48* x48;
/* 0x4C */ s32 x4C_cardState[2];
/* 0x54 */ s32 x54_stateChanged[3];
}; /* size = 0x60 */
struct { int x[1 - 2 * !(sizeof(struct Unk80433380) == 0x60)]; };;
struct Unk80433380 lb_80433380;
#define MELEE_LB_LBTIME_H
extern s64 __div2i(s64, s64);
u32 lbTime_8000AEC8(u32 a, u32 b);
u32 lbTime_8000AEE4(u32 a, int b);
u32 lbTime_8000AF24(u32 a, int b, int c);
u32 lbTime_8000AF74(u32 a, int b);
u32 lbTime_8000AFBC(void);
void lbTime_8000B028(OSCalendarTime* td, unsigned int ticks);
#define GALE01_00D2EC
static float lbVector_Len(Vec3* vec);
static float lbVector_Len_xy(Vec3* vec);
float lbVector_Normalize(Vec3* vec);
float lbVector_NormalizeXY(Vec3* a);
Vec3* lbVector_Add(Vec3* a, Vec3* b);
Vec3* lbVector_Add_xy(Vec3* a, Vec3* b);
Vec3* lbVector_Sub(Vec3* a, Vec3* b);
Vec3* lbVector_Diff(Vec3* a, Vec3* b, Vec3* result);
Vec3* lbVector_CrossprodNormalized(Vec3* a, Vec3* b, Vec3* result);
float lbVector_Angle(Vec3* a, Vec3* b);
float lbVector_AngleXY(Vec3* a, Vec3* b);
static float sin(float angle);
static float cos(float angle);
void lbVector_RotateAboutUnitAxis(Vec3* v, Vec3* axis, float angle);
void lbVector_Rotate(Vec3* v, int axis, float angle);
float dummy(void);
void lbVector_Mirror(Vec3* a, Vec3* b);
float lbVector_CosAngle(Vec3* a, Vec3* b);
Vec3* lbVector_Lerp(Vec3* a, Vec3* b, Vec3* result, float f);
Vec3* lbVector_8000DE38(Mtx m, Vec3* v, float c);
Vec3* lbVector_EulerAnglesFromONB(Vec3* result_angles, Vec3* a, Vec3* b,
Vec3* c);
Vec3* lbVector_EulerAnglesFromPartialONB(Vec3* result_angles, Vec3* a,
Vec3* c);
Vec3* lbVector_ApplyEulerRotation(Vec3* v, Vec3* angles);
float lbVector_sqrtf_accurate(float x);
Vec3* lbVector_WorldToScreen(HSD_CObj* cobj, const Vec3* pos3d,
Vec3* screenCoords, int d);
void lbVector_CreateEulerMatrix(Mtx m, Vec3* angles);
float lbVector_8000E838(Vec3* a, Vec3* b, Vec3* c, Vec3* d);
#define MELEE_MN_FORWARD_H
typedef struct CSSData CSSData;
typedef struct PlayerInitData PlayerInitData;
typedef struct StartMeleeData StartMeleeData;
typedef struct StartMeleeRules StartMeleeRules;
typedef struct VsModeData VsModeData;
typedef struct CSSModeInfo CSSModeInfo;
typedef struct CSSIcon CSSIcon;
typedef struct CSSIconsData CSSIconsData;
typedef struct CSSDoor CSSDoor;
typedef struct CSSTagData CSSTagData;
typedef struct CSSTag CSSTag;
typedef struct CSSKOStar CSSKOStar;
typedef struct CSSDoorsData CSSDoorsData;
typedef enum _Mode {
Mode_Time,
Mode_Stock,
Mode_Coin,
Mode_Bonus
} Mode;
typedef enum _StageSelectMode {
StageSelectMode_On,
StageSelectMode_Random,
StageSelectMode_Ordered,
StageSelectMode_Turns,
StageSelectMode_Loser
} StageSelectMode;
#define GALE01_2295AC
u8 mn_802295AC(void); //< Test for some sort of analogue movement and return
// the port that inputted it.
u32 mn_80229624(u32); //< Return a MenuEvent bitfield of controller input.
void mn_8022EA08(char*,
u32); //< Fill arg0 with the string representation of arg1.
s32 mn_8022EB24(s32, s32); //< Shift arg0 left in base 10 by arg1 digits and
// return the ones digit>
void mn_8022F3D8(void*, u8, HSD_TypeMask);
void mn_8022ED6C(HSD_JObj*, Vec3*);
void mn_80229894(s32, s32, s32);
s32 mn_8022EB78(s32); //< Return how many digits are in a number.
float mn_8022EC18(HSD_JObj*, float*, int);
void mn_80229860(s8);
f32 mn_8022F298(HSD_JObj*);
typedef struct _mn_unk1 {
u8 x0;
u8 x1;
s16 x2;
s32 x4;
u64 x8;
u8 x10;
u8 x11;
} mn_unk1;
typedef struct _mn_unk2 {
u16 x0;
u16 x2;
s32 x4;
} mn_unk2;
extern HSD_Archive* mn_804D6BB8;
extern mn_unk1 mn_804A04F0;
extern mn_unk2 mn_804D6BC8;
#define MELEE_MN_TYPES_H
#define SYSDOLPHIN_BASELIB_SISLIB_H
typedef struct sislib_UnkAllocData sislib_UnkAllocData;
typedef struct HSD_Text HSD_Text;
typedef struct sislib_UnkAlloc3 sislib_UnkAlloc3;
typedef struct {
M2C_UNK x0;
M2C_UNK x4;
M2C_UNK x8;
f32 xC;
M2C_UNK x10;
} sislib_UnknownType001;
typedef struct _TextGlyphTexture {
/*0x00*/ u8 data[512];
} TextGlyphTexture;
struct TextKerning {
/*0x00*/ u8 left;
/*0x01*/ u8 right;
};
typedef struct SIS {
/*0x00*/ TextKerning* kerning;
/*0x04*/ TextGlyphTexture* textures;
} SIS;
// @todo: give actual names?
struct sislib_UnkAllocData {
sislib_UnkAllocData* data_0;
HSD_Text* data_1;
u32 size;
};
struct HSD_Text {
// these get passed to the text initializer HSD_SisLib_803A5ACC
f32 x0; // global x position, 0,0 at center
f32 x4; // global y position
f32 x8; // scale that happens from the origin after the translation of x0,
// x4
f32 xC; // scale that happens on the X axis from the left side of the text
f32 x10; // unknown, no effect observed so far
Vec4 x14;
Vec2 x24; // font size, 1.0 being 100% of the screen?
U8Vec4 x2C;
U8Vec4 x30;
Vec2 x34;
Vec2 x3C;
u16 x44;
u16 x46;
u8 x48;
u8 x49;
u8 x4A;
u8 x4B;
u8 x4C; // whether to test for Z depth?
u8 x4D;
u8 x4E;
u8 x4F; // which font to select from the array HSD_SisLib_804D1124
HSD_Text* x50;
HSD_GObj* x54;
void (*x58)(void*); // callback in the text renderer (HSD_SisLib_803A84BC)
SIS* x5C; // could just be a byte pointer?
M2C_UNK x60;
sislib_UnkAllocData* x64;
void* x68;
u16 x6C;
u16 x6E;
f32 x70;
f32 x74;
Vec2 x78;
Vec2 x80;
f32 x88;
U8Vec4 x8C;
u16 x90;
u16 x92;
u32 x94;
u32 x98;
u8 x9C;
u8 x9D;
u8 x9E;
u8 x9F;
};
struct sislib_UnkAlloc3 {
sislib_UnkAlloc3* x0;
HSD_GObj* x4;
u16 x8;
u16 xA;
u8 xC;
u8 xD;
u8 xE;
u8 xF;
};
extern s8 HSD_SisLib_804D6390[4];
extern SIS* HSD_SisLib_804D1124[5];
extern HSD_Archive* HSD_SisLib_804D1110[5];
extern u32 lbl_8040C8C0[144];
extern u32 HSD_SisLib_8040C680[144];
extern HSD_CObjDesc HSD_SisLib_8040C4B8;
extern u32 HSD_SisLib_804D7968;
extern sislib_UnkAllocData* HSD_SisLib_804D796C;
extern sislib_UnkAllocData* HSD_SisLib_804D7970;
extern sislib_UnkAllocData* HSD_SisLib_804D7974;
extern HSD_Text* HSD_SisLib_804D7978;
extern sislib_UnkAlloc3* HSD_SisLib_804D797C;
extern sislib_UnknownType001 HSD_SisLib_8040C4A4;
extern sislib_UnknownType001 HSD_SisLib_8040C490;
void HSD_SisLib_803A6048(size_t);
M2C_UNK func_804A70A0(M2C_UNK, s32, u32, s32, s32, s32, s32, s32, f64, f64, f64,
f64, f64, f64, f64, f64);
void HSD_SisLib_803A947C(HSD_Archive*);
void HSD_SisLib_803A945C(void);
void HSD_SisLib_803A84BC(HSD_GObj*, HSD_Text*);
s32 HSD_SisLib_803A7F0C(HSD_Text*, s32);
void HSD_SisLib_803A8134(void*, HSD_Text*, f32*, f32*);
void HSD_SisLib_803A7684(M2C_UNK, u8, u8);
void HSD_SisLib_803A7664(M2C_UNK);
void HSD_SisLib_803A75E0(M2C_UNK, s32);
void HSD_SisLib_803A7548(M2C_UNK, f32, f32);
void HSD_SisLib_803A74F0(HSD_Text*, s32 arg1, u8* arg2);
void HSD_SisLib_803A746C(HSD_Text*, s32, f32, f32);
s32 HSD_SisLib_803A70A0(s32, M2C_UNK, M2C_UNK);
u32 lbl_803A6FEC(s32, s32, bool);
void HSD_SisLib_803A6B98(HSD_Text* arg0, void* arg1, ...);
s32 HSD_SisLib_803A67EC(u8*, u8*);
HSD_Text* HSD_SisLib_803A6754(s8 arg0, s32 arg1);
void HSD_SisLib_803A660C(s32, s32, s32);
void HSD_SisLib_803A6530(s32, s32, s32);
void HSD_SisLib_803A6478(u8*, u8*);
void HSD_SisLib_803A6368(HSD_Text*, s32);
void HSD_SisLib_803A62A0(s32, HSD_Archive*, char*);
s32 HSD_SisLib_803A611C(u16, u32, u16, u8, u8, u8, u8, u32);
void lbl_803A60EC(void);
HSD_Text* HSD_SisLib_803A5ACC(s8, s32, f32, f32, f32, f32, f32);
void* HSD_SisLib_803A5798(s32);
void HSD_SisLib_803A594C(void*);
void HSD_SisLib_803A5CC4(HSD_Text*);
void HSD_SisLib_803A5A2C(HSD_Text*);
void HSD_SisLib_803A5D30(void);
void HSD_SisLib_803A5DA0(s32);
void HSD_SisLib_803A5E70(void);
void HSD_SisLib_803A5F50(s32);
void HSD_SisLib_803A5FBC(void);
void fn_803A60EC(void*);
u8* fn_803A6FEC(u8*, s32, s32*);
// void *HSD_SisLib_803A84BC(HSD_GObj *, s32);
typedef struct {
u8 cursor; // @todo are these arbitrary variables the menus can use in any
// way?
u8 unk1;
u8 unk2;
u8 unk3;
HSD_Text* text;
} Menu;
// size 0x8
typedef struct Menu_GObj Menu_GObj;
struct Menu_GObj {
/* +0 */ u16 classifier;
/* +2 */ u8 p_link;
/* +3 */ u8 gx_link;
/* +4 */ u8 p_priority;
/* +5 */ u8 render_priority;
/* +6 */ u8 obj_kind;
/* +7 */ u8 user_data_kind;
/* +8 */ Menu_GObj* next;
/* +C */ Menu_GObj* prev;
/* +10 */ Menu_GObj* next_gx;
/* +14 */ Menu_GObj* prev_gx;
/* +18 */ HSD_GObjProc* proc;
/* +1C */ void (*rendered)(Menu_GObj* gobj, s32 code);
/* +20 */ u64 gxlink_prios;
/* +28 */ HSD_JObj* hsd_obj;
/* +2C */ Menu* user_data;
/* +30 */ void (*user_data_remove_func)(Fighter* data);
/* +34 */ void* x34_unk;
};
struct PlayerInitData {
/*0x00*/ u8 character_kind;
/*0x01*/ u8 slot_type;
/*0x02*/ u8 stocks;
/*0x03*/ u8 color;
/*0x04*/ u8 port;
/*0x05*/ s8 spawnpos32;
/*0x06*/ u8 spawn_direction;
/*0x07*/ u8 subcolor;
/*0x08*/ u8 handicap;
/*0x09*/ u8 team;
/*0x0A*/ u8 nametag;
/*0x0B*/ u8 unk_0xb;
/*0x0C*/ u8 unk_0xc;
/*0x0D*/ u8 unk_0xd;
/*0x0E*/ u8 unk_0xe;
/*0x0F*/ u8 cpu_level;
/*0x10*/ u8 unk_0x10;
/*0x11*/ u8 unk_0x11;
/*0x12*/ u16 unk_0x12;
/*0x14*/ u8 unk_0x14;
/*0x15*/ u8 unk_0x15;
/*0x16*/ u8 unk_0x16;
/*0x17*/ u8 unk_0x17;
/*0x18*/ f32 offense_ratio;
/*0x1C*/ f32 defense_ratio;
/*0x20*/ u8 unk_0x20;
/*0x21*/ u8 unk_0x21;
/*0x22*/ u8 unk_0x22;
/*0x23*/ u8 unk_0x23;
};
struct StartMeleeRules {
u8 flags1;
u8 flags2;
u8 flags3;
u8 flags4;
u8 flags5;
u8 flags6;
u8 unk_0x6;
u8 unk_0x7;
u8 is_teams;
u8 unk_0x9;
u8 unk_0xa;
s8 item_frequency;
s8 sd_penalty;
u8 unk_0xd;
u32 stage_id;
s32 time_limit;
u8 unk_0x14;
u8 unk_0x15;
u8 unk_0x16;
u8 unk_0x17;
u8 unk_0x18;
u8 unk_0x19;
u8 unk_0x1a;
u8 unk_0x1b;
u8 unk_0x1c;
u8 unk_0x1d;
u8 unk_0x1e;
u8 unk_0x1f;
u64 item_mask;
u8 unk_0x28;
u8 unk_0x29;
u8 unk_0x2a;
u8 unk_0x2b;
u8 unk_0x2c;
u8 unk_0x2d;
u8 unk_0x2e;
u8 unk_0x2f;
f32 damage_ratio;
f32 game_speed;
u8 unk_0x38;
u8 unk_0x39;
u8 unk_0x3a;
u8 unk_0x3b;
u8 unk_0x3c;
u8 unk_0x3d;
u8 unk_0x3e;
u8 unk_0x3f;
void* pause_check_callback;
u8 unk_0x44;
u8 unk_0x45;
u8 unk_0x46;
u8 unk_0x47;
u8 unk_0x48;
u8 unk_0x49;
u8 unk_0x4a;
u8 unk_0x4b;
u8 unk_0x4c;
u8 unk_0x4d;
u8 unk_0x4e;
u8 unk_0x4f;
void* match_end_callback;
s32 unk_0x54;
u8 unk_0x58;
u8 unk_0x59;
u8 unk_0x5a;
u8 unk_0x5b;
u8 unk_0x5c;
u8 unk_0x5d;
u8 unk_0x5e;
u8 unk_0x5f;
};
struct StartMeleeData {
StartMeleeRules rules;
PlayerInitData players[6];
};
struct VsModeData {
s8 loser;
u32 ordered_stage_index;
s8 winner;
u8 unk_0x3;
u8 unk_0x4;
u8 unk_0x5;
u8 unk_0x6;
u8 unk_0x7;
StartMeleeData data;
};
struct CSSData {
u8 unk_0x0;
u8 unk_0x1;
u8 match_type;
u8 pending_scene_change;
u8* ko_star_counts;
VsModeData data;
};
struct CSSModeInfo {
u16 mode_ffa_frame; // 0x00 - Anim frame used for top-left mode texture
u16 mode_teams_frame; // 0x02 - Anim frame used for top-left mode texture
int enter_sfx; // 0x04 - Announcer sfx when entering CSS
};
// Not same as CharacterKind bc not as many characters as icons (missing Sheik,
// Master Hand, etc)
typedef enum CSSIconHud {
ICONHUD_CAPTAIN = 0x00,
ICONHUD_DONKEY = 0x01,
ICONHUD_FOX = 0x02,
ICONHUD_GAMEWATCH = 0x03,
ICONHUD_KIRBY = 0x04,
ICONHUD_KOOPA = 0x05,
ICONHUD_LINK = 0x06,
ICONHUD_LUIGI = 0x07,
ICONHUD_MARIO = 0x08,
ICONHUD_MARS = 0x09,
ICONHUD_MEWTWO = 0x0A,
ICONHUD_NESS = 0x0B,
ICONHUD_PEACH = 0x0C,
ICONHUD_PIKACHU = 0x0D,
ICONHUD_POPONANA = 0x0E,
ICONHUD_PURIN = 0x0F,
ICONHUD_SAMUS = 0x10,
ICONHUD_YOSHI = 0x11,
ICONHUD_ZELDA = 0x12,
ICONHUD_FALCO = 0x13,
ICONHUD_CLINK = 0x14,
ICONHUD_DRMARIO = 0x15,
ICONHUD_EMBLEM = 0x16,
ICONHUD_PICHU = 0x17,
ICONHUD_GANON = 0x18
} CSSIconHud;
typedef enum CSSIconState {
ICONSTATE_LOCKED,
ICONSTATE_TEMP,
ICONSTATE_UNLOCKED
} CSSIconState;
typedef enum CSSIconJointId {
ICONJOINT_DRMARIO = 0x04,
ICONJOINT_FALCO = 0x08,
ICONJOINT_GANON = 0x06,
ICONJOINT_CLINK = 0x0A,
ICONJOINT_PICHU = 0x0C,
ICONJOINT_EMBLEM = 0x0E,
ICONJOINT_MARIO = 0x10,
ICONJOINT_LUIGI = 0x11,
ICONJOINT_KOOPA = 0x12,
ICONJOINT_PEACH = 0x13,
ICONJOINT_YOSHI = 0x14,
ICONJOINT_DONKEY = 0x15,
ICONJOINT_CAPTAIN = 0x16,
ICONJOINT_FOX = 0x17,
ICONJOINT_NESS = 0x18,
ICONJOINT_POPONANA = 0x19,
ICONJOINT_KIRBY = 0x1A,
ICONJOINT_SAMUS = 0x1B,
ICONJOINT_ZELDA = 0x1C,
ICONJOINT_LINK = 0x1D,
ICONJOINT_PIKACHU = 0x1E,
ICONJOINT_PURIN = 0x1F,
ICONJOINT_MEWTWO = 0x20,
ICONJOINT_GAMEWATCH = 0x21,
ICONJOINT_MARS = 0x22
} CSSIconJointId;
struct CSSIcon {
u8 ft_hudindex; // 0x00 - used for getting combo count @ 8025C0C4
u8 char_kind; // 0x01 - icons external ID
u8 state; // 0x02 - 0x0 Not Unlocked, 0x01 Unlocked, 0x02 Unlocked and disp
u8 anim_timer; // 0x03 - 0xC when char is chosen
u8 joint_id_vs; // 0x04 - Vs Icon Bg Jobj ID
u8 joint_id_1p; // 0x05 - Vs Icon Bg Jobj ID
int sfx; // 0x08
float bound_l; // 0x0C
float bound_r; // 0x10
float bound_u; // 0x14
float bound_d; // 0x18
};
struct CSSIconsData {
u8 gnw_name[0x1C]; // 0x0
CSSModeInfo mode_info[24]; // 0x1c
CSSIcon icons[25 + 1]; // 0xDC
};
struct CSSDoor {
u8 emblem_joint; // 0x00
u8 costume_joint; // 0x01
u8 team_joint; // 0x02
u8 door_joint; // 0x03
u8 bg_joint; // 0x04
u8 player_indicator_joint; // 0x05 - Nametag window joint id (to scroll and
// choose a name)
u8 slidername_joint; // 0x06 - Slider name joint
u8 cpuslider_joint; // 0x07 - Used when only CPU is showing
u8 cpuslider2_joint; // 0x08 - Used when handicap is also showing
u8 selected_since_load; // 0x09 - Determines when player selected since the
// CSS loaded
u8 team; // 0x0A
u8 p_kind; // 0x0B - PlayerKind, 0x0 = HMN, 0x1 = CPU, 0x3 = Closed
u8 p_kind_prev; // 0x0C
u8 costume; // 0x0D
u8 sel_icon; // 0x0E - Icon this player has selected
u8 sel_icon_prev; // 0x0F
u8 dooranim_timer; // 0x10
u8 slideranim_timer; // 0x11
u8 is_hold_cpu_slider; // 0x12
u8 is_hold_handicap_slider; // 0x13
float togglebtn_left; // 0x14 - HMN button bound
float togglebtn_right; // 0x18 - HMN button bound
float teambtn_left; // 0x1C - Team button bound
float teambtn_right; // 0x20 - Team button bound
};
struct CSSTagData {
TextGlyphTexture* text; // 0x00
TextGlyphTexture* name_ls; // 0x04
float x8; // 0x08
float scroll_amt; // 0x0C
float scroll_force; // 0x10
int timer; // 0x14
u8 next_tag; // 0x18
u8 port; // 0x19
u8 state; // 0x1A
u8 use_tag; // 0x1B
};
struct CSSTag {
CSSTagData* data; // 0x00
u8 x4; // 0x04
u8 list_joint; // 0x05
u8 name_jointl; // 0x06
u8 x7; // 0x07
u8 kostar_text_joint; // 0x08
u8 x9; // 0x09
u8 xa; // 0x0A
u8 xb; // 0x0B
};
struct CSSKOStar {
TextGlyphTexture* text; // 0x00
float x4; // 0x04
u8 joint; // 0x08
int xc; // 0x0C
int x10; // 0x10
int x14; // 0x14
int x18; // 0x18
int x1c; // 0x1C
};
struct CSSDoorsData {
CSSDoor doors[4]; // 0x00
CSSTag tags[4]; // 0x90
u8 xc0;
u8 xc1;
u8 xc2;
u8 xc3;
u8 xc4;
u8 name_list_joint;
u8 tag_box_joint;
u8 xc7;
u8 xc8;
u8 xc9;
u8 xca;
u8 xcb;
u8 xcc;
u8 xcd;
u8 xce;
int xcf;
int xd3;
float xd7;
float xdb;
float xdf;
float xe3;
float xe7;
float xeb;
u8 xf1[5];
float xf8;
float xfc;
float x100;
float x104;
float x108;
float x10c;
CSSKOStar ko_stars[4]; // 0x110
u8 x190[64]; // 0x190
};
#define _memory_h_
void HSD_Free(void* ptr);
void* HSD_MemAlloc(ssize_t size);
typedef enum _MenuEvent {
MenuEvent_Up = 1 << 0,
MenuEvent_Down = 1 << 1,
MenuEvent_Left = 1 << 2,
MenuEvent_Right = 1 << 3,
MenuEvent_Forward = 1 << 4,
MenuEvent_Back = 1 << 5,
MenuEvent_unk = 1 << 6,
MenuEvent_unk2 = 1 << 7,
MenuEvent_unk3 = 1 << 8,
MenuEvent_unk4 = 1 << 9,
MenuEvent_unk5 = 1 << 10,
MenuEvent_unk6 = 1 << 11,
} MenuEvent;
#define GET_MENU(gobj) ((Menu*) HSD_GObjGetUserData(gobj))
static inline void Menu_DecrementAnimTimer(void)
{
mn_804D6BC8.x0--;
mn_804D6BC8.x2 = 0;
mn_804D6BC8.x4 = 0;
}
static inline u64 Menu_GetEvents(void)
{
return mn_804A04F0.x8 = mn_80229624(4);
}
// @todo: The functions `fn_8017435C`, `fn_80174338`, and `fn_80174380` are
// probably deduplicated clones of these.
static inline void sfxBack(void)
{
lbAudioAx_80024030(0);
}
static inline void sfxForward(void)
{
lbAudioAx_80024030(1);
}
static inline void sfxMove(void)
{
lbAudioAx_80024030(2);
}
static inline void Menu_InitCenterText(Menu* menu, u8 val)
{
HSD_Text* text =
HSD_SisLib_803A5ACC(0, 1, -9.5F, 9.1F, 17.0F, 364.68332F, 38.38772F);
menu->text = text;
text->x24.x = 0.0521F;
text->x24.y = 0.0521F;
HSD_SisLib_803A6368(text, val);
}
// @todo: One of these inlines is probably correct
static inline void inline_test_3(HSD_JObj* jobj, f32 val, u8 loops,
HSD_TypeMask type)
{
HSD_JObjReqAnimAll(jobj, val);
mn_8022F3D8(jobj, loops, type);
HSD_JObjAnimAll(jobj);
}
static inline void inline_test_4(HSD_GObj* gobj, f32 val, u8 loops,
HSD_TypeMask type)
{
HSD_JObj* jobj;
lb_80011E24(((HSD_JObj*) HSD_GObjGetHSDObj(gobj)), &jobj, 5, -1);
HSD_JObjReqAnimAll(jobj, val);
mn_8022F3D8(jobj, loops, type);
HSD_JObjAnimAll(jobj);
}
#define GALE01_25BC20
/* 25BC20 */ TextKerning* mnCharSel_8025BC20(TextKerning* arg0, u32 arg1);
/* 25BD30 */ void mnCharSel_8025BD30(void);
/* 25C020 */ M2C_UNK mnCharSel_8025C020();
/* 25D1C4 */ M2C_UNK mnCharSel_8025D1C4();
/* 25D5AC */ M2C_UNK mnCharSel_8025D5AC();
/* 25DAA0 */ M2C_UNK mnCharSel_8025DAA0();
/* 25DB34 */ M2C_UNK mnCharSel_8025DB34();
/* 25EE8C */ M2C_UNK mnCharSel_8025EE8C();
/* 25F0E0 */ M2C_UNK fn_8025F0E0();
/* 25FAC0 */ M2C_UNK fn_8025FAC0();
/* 25FB2C */ M2C_UNK fn_8025FB2C();
/* 25FB50 */ M2C_UNK mnCharSel_8025FB50();
/* 25FDEC */ M2C_UNK mnCharSel_8025FDEC();
/* 260094 */ M2C_UNK mnCharSel_CostumeChange();
/* 2602A0 */ M2C_UNK mnCharSel_CursorThink();
/* 262648 */ M2C_UNK fn_80262648();
/* 262F44 */ M2C_UNK fn_80262F44();
/* 263354 */ M2C_UNK fn_80263354();
/* 2633B0 */ M2C_UNK fn_802633B0();
/* 264070 */ M2C_UNK mnCharSel_80264070();
/* 26407C */ M2C_UNK fn_8026407C();
/* 2640A0 */ M2C_UNK mnCharSel_802640A0();
/* 26688C */ M2C_UNK mnCharSel_8026688C();
/* 2669F4 */ M2C_UNK mnCharSel_802669F4();
/* 266D70 */ M2C_UNK mnCharSel_80266D70();
#define GALE01_24A168
#define GALE01_23EA2C
/* 23EA2C */ u8 mnDiagram_8023EA2C(s32 arg0);
/* 23EA40 */ u8 mnDiagram_8023EA40(s32 arg0);
/* 23EA54 */ M2C_UNK mnDiagram_8023EA54();
/* 23EAC4 */ M2C_UNK mnDiagram_8023EAC4();
/* 23EB84 */ M2C_UNK mnDiagram_8023EB84();
/* 23ECC4 */ M2C_UNK mnDiagram_8023ECC4();
/* 23EE38 */ M2C_UNK mnDiagram_8023EE38();
/* 23EF70 */ M2C_UNK mnDiagram_8023EF70();
/* 23EFE4 */ M2C_UNK mnDiagram_8023EFE4();
/* 23F068 */ M2C_UNK mnDiagram_8023F068();
/* 23F0DC */ M2C_UNK mnDiagram_8023F0DC();
/* 23F14C */ M2C_UNK mnDiagram_8023F14C();
/* 23F238 */ M2C_UNK mnDiagram_8023F238();
/* 23F334 */ M2C_UNK mnDiagram_8023F334();
/* 23F3A8 */ M2C_UNK mnDiagram_8023F3A8();
/* 23F400 */ M2C_UNK mnDiagram_8023F400();
/* 23F45C */ M2C_UNK mnDiagram_8023F45C();
/* 23F4CC */ M2C_UNK mnDiagram_8023F4CC();
/* 23F540 */ M2C_UNK mnDiagram_8023F540();
/* 23F578 */ M2C_UNK mnDiagram_8023F578();
/* 23F8CC */ M2C_UNK mnDiagram_8023F8CC();
/* 23FA6C */ M2C_UNK mnDiagram_8023FA6C();
/* 23FC28 */ M2C_UNK mnDiagram_8023FC28();
/* 23FDD8 */ M2C_UNK mnDiagram_8023FDD8();
/* 23FE30 */ M2C_UNK fn_8023FE30();
/* 23FED4 */ M2C_UNK fn_8023FED4();
/* 240B18 */ M2C_UNK fn_80240B18();
/* 240B98 */ M2C_UNK fn_80240B98();
/* 240D94 */ M2C_UNK mnDiagram_80240D94();
/* 241310 */ M2C_UNK mnDiagram_80241310();
/* 241668 */ M2C_UNK mnDiagram_80241668();
/* 241730 */ M2C_UNK mnDiagram_80241730();
/* 2417D0 */ M2C_UNK mnDiagram_802417D0();
/* 241AE8 */ M2C_UNK fn_80241AE8();
/* 241B4C */ M2C_UNK mnDiagram_80241B4C();
/* 241BF8 */ M2C_UNK fn_80241BF8();
/* 241E78 */ M2C_UNK mnDiagram_80241E78();
/* 24227C */ M2C_UNK mnDiagram_8024227C();
/* 2427B4 */ M2C_UNK mnDiagram_802427B4();
/* 242B38 */ M2C_UNK mnDiagram_80242B38();
/* 242C0C */ M2C_UNK mnDiagram_80242C0C();
/* 243038 */ M2C_UNK fn_80243038();
/* 2433AC */ M2C_UNK mnDiagram_802433AC();
/* 243434 */ M2C_UNK mnDiagram_80243434();
/* 2437E8 */ M2C_UNK mnDiagram_802437E8();
#define __GALE01_23EA2C
struct mnDiagram_804A0750_t {
char pad_0[0x1C];
};
struct { int x[1 - 2 * !(sizeof(struct mnDiagram_804A0750_t) == 0x1C)]; };;
struct mnDiagram_804A076C_t {
char pad_0[0x78];
};
struct { int x[1 - 2 * !(sizeof(struct mnDiagram_804A076C_t) == 0x78)]; };;
/* 4A0750 */ struct mnDiagram_804A0750_t mnDiagram_804A0750;
/* 4A076C */ struct mnDiagram_804A076C_t mnDiagram_804A076C;
#define _mngallery_h_
void mnGallery_80258940(void);
#define _MN_HYAKU_
#define SYSDOLPHIN_BASELIB_GOBJOBJECT_H
M2C_UNK HSD_GObjObject_80390ADC(HSD_GObj* gobj);
void HSD_GObjObject_80390A70(HSD_GObj* gobj, u8 kind, void* obj);
void HSD_GObjObject_80390B0C(HSD_GObj* gobj);
HSD_GObj* HSD_GObjObject_80390A3C(u16 id, u8 arg1);
#define SYSDOLPHIN_BASELIB_GOBJPLINK_H
void HSD_GObjPLink_80390228(HSD_GObj*);
void HSD_GObjPLink_8039032C(u32 arg0, HSD_GObj* gobj, u8 p_link, u8 priority,
HSD_GObj* position);
void GObj_PReorder(HSD_GObj* gobj, HSD_GObj* hiprio_gobj);
HSD_GObj* CreateGObj(s32 where, u16 classifier, u8 p_link, u8 priority,
HSD_GObj* position);
#define SYSDOLPHIN_BASELIB_GOBJPROC_H
struct HSD_GObjProc {
/* 0x00 */ HSD_GObjProc* child;
/* 0x04 */ HSD_GObjProc* next;
/* 0x08 */ HSD_GObjProc* prev;
/* 0x0C */ u8 s_link;
/* 0x0D */ u8 flags_1 : 1;
/* 0x0D */ u8 flags_2 : 1;
/* 0x0D */ u8 flags_3 : 2;
/* 0x10 */ HSD_GObj* gobj; // owner
/* 0x14 */ HSD_GObjEvent on_invoke;
};
/* 38FAA8 */ void HSD_GObjProc_8038FAA8(HSD_GObjProc* gproc);
/* 38FC18 */ void HSD_GObjProc_8038FC18(HSD_GObjProc* gproc);
/* 38FCE4 */ void HSD_GObjProc_8038FCE4(HSD_GObjProc* gproc);
/* 38FD54 */ HSD_GObjProc* HSD_GObjProc_8038FD54(HSD_GObj*, HSD_GObjEvent, u8);
/* 38FE24 */ void HSD_GObjProc_8038FE24(HSD_GObjProc* gproc);
/* 38FED4 */ void HSD_GObjProc_8038FED4(HSD_GObj* gobj);
void mnHyaku_8024C68C(HSD_GObj*);
void mnHyaku_8024CB94(u8);
void mnHyaku_8024CD64(u8);
void mnHyaku_8024C9F0(HSD_GObj*);
void mnHyaku_8024CA50(HSD_GObj*);
void mnHyaku_8024CAC8(HSD_GObj*);
#define GALE01_23749C
/* 23749C */ M2C_UNK mnName_8023749C();
/* 23754C */ M2C_UNK mnName_8023754C();
/* 237594 */ M2C_UNK mnName_80237594();
/* 2375EC */ M2C_UNK mnName_802375EC();
/* 237654 */ M2C_UNK mnName_80237654();
/* 2377A4 */ M2C_UNK fn_802377A4();
/* 2377A8 */ M2C_UNK mnName_802377A8();
/* 237834 */ M2C_UNK mnName_80237834();
/* 2379BC */ M2C_UNK mnName_802379BC();
/* 237A04 */ M2C_UNK mnName_80237A04();
/* 237A68 */ M2C_UNK mnName_80237A68();
/* 237D94 */ M2C_UNK mnName_80237D94();
/* 237F78 */ M2C_UNK mnName_80237F78();
/* 23817C */ M2C_UNK mnName_8023817C();
/* 238540 */ M2C_UNK fn_80238540();
/* 2385A0 */ M2C_UNK mnName_802385A0();
/* 2385D4 */ M2C_UNK mnName_802385D4();
/* 238698 */ M2C_UNK mnName_80238698();
/* 238754 */ M2C_UNK mnName_80238754();
/* 2388D4 */ M2C_UNK mnName_802388D4();
/* 238964 */ M2C_UNK mnName_80238964();
/* 238A04 */ M2C_UNK mnName_80238A04();
/* 238AE0 */ M2C_UNK mnName_80238AE0();
/* 238C34 */ M2C_UNK mnName_80238C34();
/* 239574 */ M2C_UNK fn_80239574();
/* 239878 */ M2C_UNK mnName_80239878();
/* 239A24 */ M2C_UNK mnName_80239A24();
/* 239EBC */ M2C_UNK mnName_80239EBC();
/* 239F5C */ M2C_UNK mnName_80239F5C();
/* 239FFC */ M2C_UNK mnName_80239FFC();
/* 23A058 */ M2C_UNK mnName_8023A058();
/* 23A0BC */ M2C_UNK fn_8023A0BC();
/* 23A290 */ M2C_UNK mnName_8023A290();
/* 23A59C */ M2C_UNK mnName_8023A59C();
/* 23A9B4 */ M2C_UNK mnName_8023A9B4();
/* 23AC40 */ M2C_UNK mnName_8023AC40();
/* 23B084 */ M2C_UNK mnName_8023B084();
extern HSD_PadStatus HSD_PadCopyStatus[4];
typedef struct {
u8 unk0;
u8 unk1;
u8 unk2;
u8 unk3;
u16 unk4;
f32 unk8;
f32 unkC;
M2C_UNK unk10;
HSD_Text* unk14;
HSD_Text* unk18;
HSD_Text* unk1C;
} soundtest_user_data;
typedef struct {
/* +0 */ u16 classifier;
/* +2 */ u8 p_link;
/* +3 */ u8 gx_link;
/* +4 */ u8 p_priority;
/* +5 */ u8 render_priority;
/* +6 */ u8 obj_kind;
/* +7 */ u8 user_data_kind;
/* +8 */ HSD_GObj* next;
/* +C */ HSD_GObj* prev;
/* +10 */ HSD_GObj* next_gx;
/* +14 */ HSD_GObj* prev_gx;
/* +18 */ HSD_GObjProc* proc;
/* +1C */ GObj_RenderFunc render_cb;
/* +20 */ u64 gxlink_prios;
/* +28 */ void* hsd_obj;
/* +2C */ soundtest_user_data* user_data;
/* +30 */ void (*user_data_remove_func)(void* data);
/* +34 */ void* x34_unk;
} Soundtest_GObj;
void mnSoundTest_8024A790(HSD_GObj*);
void mnSoundTest_8024A958(Soundtest_GObj*);
void mnSoundTest_8024AA70(HSD_GObj* arg0, u8 arg1);
void mnSoundTest_8024ABF8(HSD_GObj* arg0, u8 arg1);
void mnSoundTest_8024AD58(HSD_GObj* arg0, s8 arg1);
void fn_8024AED0(HSD_GObj* arg0);
#define GALE01_041C78
/* 041C78 */ void mpColl_80041C78(void);
/* 041C8C */ void mpColl_80041C8C(CollData* cd);
/* 041DD0 */ void mpColl_80041DD0(CollData* cd, u32 flags);
/* 041EE4 */ void mpColl_80041EE4(CollData*);
/* 042078 */ void mpColl_80042078(CollData* cd, HSD_GObj* gobj, HSD_JObj*,
HSD_JObj*, HSD_JObj*, HSD_JObj*, HSD_JObj*,
HSD_JObj*, HSD_JObj*, float);
/* 04220C */ void mpColl_8004220C(CollData* cd, HSD_GObj* gobj, float, float,
float, float);
/* 042374 */ void mpColl_80042374(CollData*, float, float, float);
/* 042384 */ void mpColl_80042384(CollData* cd);
/* 0424DC */ void mpColl_800424DC(CollData* cd, u32 flags);
/* 04293C */ void mpColl_8004293C(CollData* cd);
/* 042C58 */ void mpColl_80042C58(CollData*, ftCollisionBox*);
/* 042D24 */ void mpColl_80042D24(CollData* cd);
/* 042DB0 */ void mpColl_80042DB0(CollData* ecb, float time);
/* 043268 */ void mpColl_80043268(CollData*, s32, s32, float);
/* 043324 */ void mpColl_80043324(CollData*, s32, s32);
/* 043558 */ void mpColl_80043558(CollData*, s32);
/* 043670 */ void mpColl_80043670(CollData*);
/* 043680 */ void mpColl_80043680(CollData*, Vec3*);
/* 0436D8 */ void mpColl_800436D8(CollData*, int facing_dir);
/* 0436E4 */ void mpColl_800436E4(CollData*, float);
/* 043754 */ bool mpColl_80043754(mpColl_Callback, CollData*, u32);
/* 0439FC */ void mpColl_800439FC(CollData*);
/* 043ADC */ void mpColl_80043ADC(CollData*);
/* 043BBC */ bool mpColl_80043BBC(CollData*, s32*);
/* 043C6C */ void mpColl_80043C6C(CollData*, s32, s32);
/* 043E90 */ s32 mpColl_80043E90(CollData*, s32*);
/* 043F40 */ void mpColl_80043F40(CollData*, s32, s32);
/* 044164 */ bool mpColl_80044164(CollData* cd, int* p_ledge_id);
/* 0443C4 */ bool mpColl_800443C4(CollData* cd, int* p_ledge_id);
/* 044628 */ s32 mpColl_80044628(CollData*, Event, void*, s32);
/* 044838 */ s32 mpColl_80044838(CollData*, s32);
/* 044948 */ s32 mpColl_80044948(CollData*);
/* 044AD8 */ s32 mpColl_80044AD8(CollData*, s32);
/* 044C74 */ s32 mpColl_80044C74(CollData*);
/* 044E10 */ s32 mpColl_80044E10(CollData*);
/* 0454A4 */ s32 mpColl_800454A4(CollData*);
/* 045B74 */ s32 mpColl_80045B74(CollData*);
/* 046224 */ s32 mpColl_80046224(CollData*);
/* 046904 */ bool mpColl_80046904(CollData* cd, u32 flags);
/* 046F78 */ M2C_UNK fn_80046F78();
/* 0471F8 */ bool mpColl_800471F8(CollData*);
/* 04730C */ bool mpColl_8004730C(CollData* cdata, ftCollisionBox* arg1);
/* 0473CC */ void mpColl_800473CC(CollData*);
/* 0474E0 */ void mpColl_800474E0(CollData*);
/* 0475F4 */ void mpColl_800475F4(CollData*);
/* 0476B4 */ void mpColl_800476B4(CollData*);
/* 0477E0 */ bool mpColl_800477E0(CollData*);
/* 0478F4 */ void mpColl_800478F4(CollData*);
/* 047A08 */ void mpColl_80047A08(CollData*);
/* 047AC8 */ void mpColl_80047AC8(CollData*);
/* 047BF4 */ void mpColl_80047BF4(CollData*);
/* 047D20 */ void mpColl_80047D20(CollData*);
/* 047E14 */ void mpColl_80047E14(CollData*);
/* 047F40 */ void mpColl_80047F40(CollData*);
/* 04806C */ void mpColl_8004806C(CollData*);
/* 048160 */ void mpColl_80048160(CollData*);
/* 048274 */ void mpColl_80048274(CollData*);
/* 048388 */ void mpColl_80048388(CollData*);
/* 048464 */ void mpColl_80048464(CollData*);
/* 048578 */ void mpColl_80048578(CollData*);
/* 048654 */ void mpColl_80048654(CollData*);
/* 048768 */ void mpColl_80048768(CollData*);
/* 048844 */ bool mpColl_80048844(CollData*, f32);
/* 0488F4 */ M2C_UNK mpColl_800488F4();
/* 048AB0 */ M2C_UNK mpColl_80048AB0();
/* 0491C8 */ M2C_UNK mpColl_800491C8();
/* 049778 */ M2C_UNK mpColl_80049778();
/* 049EAC */ M2C_UNK mpColl_80049EAC();
/* 04A45C */ M2C_UNK mpColl_8004A45C();
/* 04A678 */ M2C_UNK mpColl_8004A678();
/* 04A908 */ M2C_UNK mpColl_8004A908();
/* 04AB80 */ M2C_UNK mpColl_8004AB80();
/* 04ACE4 */ M2C_UNK fn_8004ACE4();
/* 04B108 */ bool mpColl_8004B108(CollData*);
/* 04B21C */ void mpColl_8004B21C(CollData*);
/* 04B2DC */ bool mpColl_8004B2DC(CollData*);
/* 04B3F0 */ void mpColl_8004B3F0(CollData*);
/* 04B4B0 */ M2C_UNK mpColl_8004B4B0();
/* 04B5C4 */ void mpColl_8004B5C4(CollData*);
/* 04B6D8 */ M2C_UNK mpColl_8004B6D8();
/* 04B894 */ M2C_UNK mpColl_8004B894();
/* 04BDD4 */ M2C_UNK mpColl_8004BDD4();
/* 04C328 */ M2C_UNK mpColl_8004C328();
/* 04C534 */ M2C_UNK fn_8004C534();
/* 04C750 */ M2C_UNK mpColl_8004C750();
/* 04C864 */ void mpColl_8004C864(CollData*, s32, float, float);
/* 04C91C */ void mpColl_8004C91C(CollData*, s32, float, float);
/* 04CA6C */ void mpColl_8004CA6C(CollData*);
/* 04CAA0 */ bool mpColl_8004CAA0(CollData*, Vec3*);
/* 04CAE8 */ bool mpColl_8004CAE8(CollData*, Vec3*);
/* 04CB30 */ bool mpColl_8004CB30(CollData*, Vec3*);
/* 04CB78 */ bool mpColl_8004CB78(CollData*, Vec3*);
/* 04CBC0 */ bool mpColl_8004CBC0(CollData*);
/* 04CBE8 */ void mpColl_8004CBE8(CollData*);
/* 04CBF4 */ void mpColl_8004CBF4(CollData*);
/* 04CC00 */ void mpColl_8004CC00(CollData*);
/* 04D024 */ M2C_UNK mpColl_8004D024(Vec3*);
/* 0528CC */ s32 mpColl_800528CC(s32);
/* 052A98 */ s32 mpColl_80052A98(s32);
/* 4D64AC */ extern u32 mpColl_804D64AC;
#define GALE01_05A6F8
/* 05AC14 */ mp_UnkStruct0* mpIsland_8005AC14(Vec3*, float);
/* 05AB54 */ mp_UnkStruct0* mpIsland_8005AB54(int surface_idx);
/* 05AC8C */ bool mpIsland_8005AC8C(mp_UnkStruct0* arg0);
/* 05ACE8 */ void mpIsland_8005ACE8(mp_UnkStruct5*, Vec3*, Vec3*);
/* 458E88 */ extern mp_UnkStruct0 mpIsland_80458E88;
#define GALE01_04D164
/* 04D164 */ int mpLib_8004D164(void);
/* 04D16C */ int mpLib_8004D16C(void);
/* 04D174 */ mp_UnkStruct2* mpLib_8004D174(void);
/* 04D17C */ int mpLib_8004D17C(void);
/* 04D184 */ M2C_UNK mpLib_8004D184();
/* 04D288 */ void mpLib_8004D288(M2C_UNK);
/* 04DB78 */ s32 mpLib_8004DB78(s32 gr_idx);
/* 04DC04 */ s32 mpLib_8004DC04(s32 gr_idx);
/* 04DD90 */ bool mpLib_8004DD90(int idx, float*, float*, M2C_UNK, Vec3* normal);
/* 04E090 */ enum_t mpLib_8004E090(int idx, Vec3*, float*, u32*, Vec3* normal);
/* 04E398 */ bool mpLib_8004E398(int, float*, int, int, int, float);
/* 04E684 */ M2C_UNK mpLib_8004E684();
/* 04EBF8 */ M2C_UNK mpLib_8004EBF8();
/* 04ED5C */ M2C_UNK mpLib_8004ED5C();
/* 04F008 */ bool mpLib_8004F008(Vec3*, int*, int, int, int, int, int, int,
float, float, float, float, float);
/* 04F400 */ M2C_UNK mpLib_8004F400();
/* 04F8A4 */ M2C_UNK mpLib_8004F8A4();
/* 04FC2C */ M2C_UNK mpLib_8004FC2C();
/* 050068 */ M2C_UNK mpLib_80050068();
/* 0501CC */ bool mpLib_800501CC(float surface_normal_y,
float surface_normal_x, float right_x,
float right_y, Vec3* coll_vec, M2C_UNK, M2C_UNK,
M2C_UNK, u32, u32);
/* 05057C */ M2C_UNK mpLib_8005057C();
/* 0509B8 */ bool mpLib_800509B8(float surface_normal_y,
float surface_normal_x, float left_x,
float left_y, Vec3* coll_vec, M2C_UNK, M2C_UNK,
M2C_UNK, u32, u32);
/* 050D68 */ M2C_UNK mpLib_80050D68();
/* 0511A4 */ M2C_UNK mpLib_800511A4();
/* 0515A0 */ M2C_UNK mpLib_800515A0();
/* 05199C */ s32 mpLib_8005199C(Vec3*, s32, s32);
/* 051BA8 */ M2C_UNK mpLib_80051BA8();
/* 051EC8 */ s32 mpLib_80051EC8(Vec3*, s32*, s32*, Vec3*, s32, s32, s32, float,
float, float, float);
/* 0524DC */ bool mpLib_800524DC(Vec3*, int, Vec3*, Vec3*, int, int, float x,
float y, float z, float);
/* 052508 */ M2C_UNK mpLib_80052508();
/* 052534 */ M2C_UNK mpLib_80052534();
/* 052700 */ s32 mpLib_80052700(int idx);
/* 0528CC */ M2C_UNK mpLib_800528CC();
/* 052A98 */ M2C_UNK mpLib_80052A98();
/* 052C64 */ M2C_UNK mpLib_80052C64();
/* 052E30 */ M2C_UNK mpLib_80052E30();
/* 052FFC */ M2C_UNK mpLib_80052FFC();
/* 0531C8 */ M2C_UNK mpLib_800531C8();
/* 053394 */ M2C_UNK mpLib_80053394();
/* 053448 */ M2C_UNK mpLib_80053448();
/* 0534FC */ M2C_UNK mpLib_800534FC();
/* 0536CC */ M2C_UNK mpLib_800536CC();
/* 05389C */ M2C_UNK mpLib_8005389C();
/* 053950 */ M2C_UNK mpLib_80053950();
/* 053A04 */ M2C_UNK mpLib_80053A04();
/* 053BD4 */ M2C_UNK mpLib_80053BD4();
/* 053DA4 */ void mpLib_80053DA4(int ledge_id, Vec3*);
/* 053ECC */ void mpLib_80053ECC(int ledge_id, Vec3*);
/* 053FF4 */ void mpLib_80053FF4(s32, Vec3*);
/* 054158 */ void mpLib_80054158(s32, Vec3*);
/* 0542BC */ M2C_UNK mpLib_800542BC();
/* 054420 */ M2C_UNK mpLib_80054420();
/* 054584 */ s32 mpLib_80054584(int, float*);
/* 0546E8 */ M2C_UNK mpLib_800546E8();
/* 05484C */ M2C_UNK mpLib_8005484C();
/* 0549B0 */ M2C_UNK mpLib_800549B0();
/* 054B14 */ M2C_UNK mpLib_80054B14();
/* 054BC0 */ M2C_UNK mpLib_80054BC0();
/* 054C6C */ enum_t mpLib_80054C6C(int);
/* 054CEC */ u32 mpLib_80054CEC(enum_t);
/* 054D68 */ M2C_UNK mpLib_80054D68();
/* 054DFC */ void mpLib_80054DFC(enum_t, Vec3*);
/* 054ED8 */ bool mpLib_80054ED8(int);
/* 054F68 */ bool mpLib_80054F68(s32, s32);
/* 0552B0 */ void mpLib_800552B0(s16 x, HSD_JObj*, s16 z);
/* 05541C */ M2C_UNK mpLib_8005541C();
/* 0557D0 */ M2C_UNK mpLib_800557D0();
/* 055C5C */ M2C_UNK mpLib_80055C5C();
/* 055E24 */ M2C_UNK mpLib_80055E24();
/* 055E9C */ void mpLib_80055E9C(s16 x);
/* 0565DC */ M2C_UNK mpLib_800565DC();
/* 05667C */ void mpLib_8005667C(s16);
/* 0566D8 */ M2C_UNK mpLib_800566D8();
/* 0566F8 */ M2C_UNK mpLib_800566F8();
/* 056710 */ M2C_UNK mpLib_80056710();
/* 056758 */ M2C_UNK mpLib_80056758();
/* 0567C0 */ bool mpLib_800567C0(s32 wall_id, Vec3* ecb_side_vtx,
Vec3* result);
/* 0569EC */ void mpLib_800569EC(void);
/* 056A1C */ M2C_UNK mpLib_80056A1C(void);
/* 056A54 */ M2C_UNK mpLib_80056A54(void);
/* 056A8C */ M2C_UNK mpLib_80056A8C(void);
/* 056AC4 */ M2C_UNK mpLib_80056AC4(void);
/* 056AFC */ M2C_UNK mpLib_80056AFC(void);
/* 056B34 */ M2C_UNK mpLib_80056B34(void);
/* 056B6C */ enum_t mpLib_80056B6C(enum_t);
/* 056C54 */ bool mpLib_80056C54(s32 idx, Vec3* pos, bool, Vec3*, bool, bool,
float, float, float, float);
/* 057424 */ void mpLib_80057424(s32);
/* 057528 */ M2C_UNK mpLib_80057528();
/* 0575B0 */ M2C_UNK mpLib_800575B0();
/* 057638 */ void mpLib_80057638(s32);
/* 057B4C */ M2C_UNK mpLib_80057B4C();
/* 057BC0 */ void mpLib_80057BC0(s32);
/* 057FDC */ M2C_UNK mpLib_80057FDC();
/* 058044 */ M2C_UNK mpLib_80058044();
/* 0580AC */ void mpLib_800580AC(s32);
/* 0580C8 */ void mpLib_800580C8(s32, Ground*, void (*)(void*, s32));
/* 0580E0 */ void mpLib_800580E0(s32);
/* 0580FC */ void mpLib_800580FC(int, mpLib_Callback*, M2C_UNK);
/* 05811C */ void mpLib_8005811C(CollData*, s32 ledge_id);
/* 0581A4 */ M2C_UNK mpLib_800581A4();
/* 0581BC */ void mpLib_800581BC(int, mpLib_Callback*, M2C_UNK);
/* 0581DC */ M2C_UNK mpLib_800581DC();
/* 058560 */ M2C_UNK mpLib_80058560();
/* 058614 */ M2C_UNK mpLib_80058614();
/* 0587FC */ M2C_UNK fn_800587FC();
/* 058820 */ void mpLib_80058820(void);
/* 0588C8 */ int mpLib_800588C8(void);
/* 0588D0 */ void mpLib_800588D0(float left, float bottom, float right,
float top);
/* 058970 */ void mpLib_80058970(f32 arg8, f32 arg9, f32 argA, f32 argB);
/* 0589D0 */ void mpLib_800589D0(f32 arg8, f32 arg9, f32 argA, f32 argB,
f32 argC, f32 argD, f32 argE, f32 argF);
/* 058AA0 */ void mpLib_80058AA0(void);
/* 058ACC */ M2C_UNK mpLib_80058ACC();
/* 058B5C */ M2C_UNK mpLib_80058B5C();
/* 0590F4 */ M2C_UNK mpLib_800590F4();
/* 059404 */ M2C_UNK mpLib_80059404();
/* 059554 */ M2C_UNK mpLib_80059554();
/* 059E60 */ float mpLib_80059E60();
/* 059FE0 */ M2C_UNK mpLib_80059FE0();
/* 05A220 */ M2C_UNK mpLib_8005A220();
/* 05A2DC */ M2C_UNK mpLib_8005A2DC();
/* 05A340 */ M2C_UNK mpLib_8005A340();
#define MELEE_MP_TYPES_H
struct mp_UnkStruct0 {
/* +0 */ mp_UnkStruct0* next;
/* +4 */ int x4;
/* +8 */ float x8;
/* +C */ float xC;
/* +10 */ int x10;
/* +14 */ float x14;
/* +18 */ float x18;
/* +1C */ int x1C;
/* +20 */ int x20;
/* +24 */ short x24;
/* +26 */ short x26;
/* +28 */ short x28;
/* +2A */ short x2A;
/* +2C */ mp_UnkStruct3* ptr;
};
struct mp_UnkStruct1 {
/* +0 */ int x0;
/* +4 */ short x4;
/* +6 */ short x6;
};
struct mp_UnkStruct2 {
/* +0 */ mp_UnkStruct1* x0;
/* +4 */ int x4;
};
struct mpisland {
/* +0 */ int x0[8];
/* +20 */ int x20[8];
};
struct mp_UnkStruct3 {
int x0;
int x4;
int xC;
};
struct mp_UnkStruct5 {
/* +0 */ u8 x0[0x4];
/* +4 */ ushort x4;
/* +6 */ ushort x6;
/* +8 */ int x8;
/* +C */ int xC;
/* +10 */ int x10;
/* +14 */ int x14;
/* +18 */ int x18;
/* +1C */ int x1C;
/* +20 */ u8 x20[0x28 - 0x20];
/* +28 */ short x28;
/* +2A */ short x2A;
/* +2C */ ushort x2C;
/* +30 */ int x30;
/* +34 */ int x34;
/* +38 */ int x38;
/* +3C */ int x3C;
};
struct mp_UnkStruct6 {
/* +0 */ short x0;
/* +2 */ short x2;
/* +4 */ short* x4;
};
struct mp_UnkStruct7 {
/* +0 */ struct mp_UnkStruct7* next;
/* +4 */ s32 x4;
/* +8 */ s32 x8;
/* +C */ u8 xC[0x10 - 0xC];
/* +10 */ float x10;
/* +14 */ float x14;
/* +18 */ float x18;
/* +1C */ float x1C;
};
#define GALE01_03715C
/* 037C60 */ void pl_80037C60(HSD_GObj*, s32);
/* 037ECC */ void pl_80037ECC(void);
/* 038144 */ void pl_80038144(void);
/* 03D60C */ void pl_8003D60C(void);
/* 03E058 */ void pl_8003E058(s32, s32, s32, s32);
/* 03E0E8 */ void pl_8003E0E8(u8, int);
/* 03E114 */ void pl_8003E114(u8, int, float);
/* 03E150 */ void pl_8003E150(int slot, bool);
/* 03E17C */ void pl_8003E17C(u8, int, Item_GObj*);
/* 03E4A4 */ void pl_8003E4A4(u8 slot, bool, void*, s32);
/* 03E854 */ void pl_8003E854(u8, int, Item_GObj*);
/* 03E978 */ void pl_8003E978(u8 slot, bool fp_x221F_b4, Item_GObj* item_gobj,
float y0, float, float, float, float x1,
float y1, float frame_speed_mul);
/* 03EA08 */ void pl_8003EA08(u8 slot, bool);
/* 03EB30 */ void pl_8003EB30(f32, u16, s32, s32, s32, u8);
/* 03EC9C */ void pl_8003EC9C(s32, s32, f32, f32);
/* 03FAA8 */ void pl_8003FAA8(s32 slot, s32 index, Vec3* pos, Vec3* prevPos);
/* 03FC44 */ void pl_8003FC44(u8 slot, bool);
/* 03FE1C */ void pl_8003FE1C(u8 slot, bool);
/* 03FFDC */ void pl_8003FFDC(u8, s32, u8, s32, s32);
/* 040048 */ void pl_80040048(u8, s32);
/* 040120 */ void pl_80040120(u8, s32);
/* 0401F0 */ void pl_800401F0(u8, int, float, float);
/* 040270 */ void pl_80040270(u8, u8, float);
/* 040330 */ void pl_80040330(u8 slot, bool, f32);
/* 040460 */ void pl_80040460(u8 slot, bool);
/* 040B8C */ void pl_80040B8C(u8 slot, bool, s32);
/* 0411C4 */ void pl_800411C4(u8 slot, bool);
/* 041280 */ void pl_80041280(u8 slot, bool);
/* 041B08 */ void pl_80041B08(void);
#define _plattack_h_
void plAttack_80037590(void);
u16 plAttack_80037B08(void);
#define _player_h_
#define MELEE_PL_TYPES_H
/// @todo Probably the same struct as #plAllocInfo, figure out how to make them
/// work as one.
struct plAllocInfo2 {
s32 internal_id;
u8 slot;
enum_t unk8;
struct {
u8 b0 : 1;
u8 has_transformation : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
};
};
struct pl_800386D8_t {
/* +0 */ u8 _0[0x3E8];
/* +3E8 */ M2C_UNK x3E8 [0];
};
typedef struct StaleMoveTable {
/* +0 */ int current_index;
/* +4 */ struct {
u16 move_id;
u16 attack_instance;
} StaleMoves[10];
/// @todo #pl_800386D8_t starts at +2C
/* +2C */ int total_attack_count;
/* +30 */ u8 x30[0x5EC - 0x30];
/* +5EC */ int x5EC;
/* +5F0 */ u8 x5F0[0xCEC - 0x5F0];
/* +CEC */ int xCEC;
/* +CF0 */ int xCF0;
} StaleMoveTable;
typedef struct _StaticPlayer {
/// @at{0} @sz{4}
/// @todo 0x02 In-Game (includes dead). 0x00 Otherwise.
enum_t player_state;
/// @at{4} @sz{4}
/// @todo External ID.
CharacterKind player_character;
/// @at{8} @sz{4}
/// @todo 0 is HMN, 1 is CPU, 2 is Demo, 3 n/a
enum_t slot_type;
/*0x0C*/ u8 transformed[2]; // 0x0001 for normal, 0x0100 for transformed
// (Probably Zelda/Sheik only)
/*0x0E*/ s16 unk0E;
union {
struct {
/*0x10-0x1B*/ Vec3
nametag_pos; /// Horizontal, Vertical, Depth (floats)
/*0x1C-0x27*/ Vec3 transformed_player_pos;
/*0x28-0x33*/ Vec3 spawn_platform_final_pos;
/*0x34-0x3f*/ Vec3 some_other_player_pos;
} byVecName;
Vec3 byIndex[4];
} player_poses;
/*0x40*/ f32 facing_direction;
/*0x44*/ u8 costume_id; // 00 = normal, 01 = red, 02 = blue, 03 = green
// (reflected in icon immediately)
/*0x45*/ s8 unk45;
/*0x46*/ s8 controller_index;
/*0x47*/ u8 team; /// 00 = red, 01 = blue, 02 = green
/*0x48*/ s8 player_id;
/*0x49*/ u8 cpu_level;
/*0x4A*/ u8 cpu_type;
/*0x4B*/ s8 handicap;
/*0x4C*/ s8 unk4C;
/*0x4D*/ s8 unk4D;
/*0x4E*/ s8 unk4E;
/*0x4F*/ s8 unk4F;
/*0x50*/ f32 unk50;
/*0x54*/ f32 attack_ratio;
/*0x58*/ f32 defense_ratio;
/*0x5C*/ f32 model_scale;
union {
struct {
/*0x60*/ s16 damage_percent;
/*0x62*/ s16 damage_percent_alt_or_start_hp;
/*0x64*/ s16 stamina;
/*0x66*/ s16 unk66;
} byName;
s16 byIndex[4];
} staminas;
/*0x68 - 0x6C*/ s32 falls[2]; /// other index for nana falls
/*0x70-0x84*/ uint kos_by_player[6];
/// @at{88} @sz{4}
/// @remarks If -1 in zz_0035184, then it's set to MatchInfo->frame_count
uint match_frame_count;
/*0x8C*/ u16 suicide_count;
/*0x8E*/ s8 stocks;
/*0x8F*/ s8 unk8F;
/*0x90*/ int current_coins;
/*0x94*/ s32 total_coins;
/*0x98*/ s32 unk98;
/*0x9C*/ s32 unk9C;
/*0xA0-A4*/ s32
joystick_direction_input_count[2]; // Incremented every time you move
// the joystick a different
// direction from neutral.
/*0xA8*/ int nametag_slot_id;
/*0xAC*/ struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
} flags;
/*0xAD*/ struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 2;
} more_flags;
/*0xAE*/ struct {
u8 b0 : 1;
u8 b1 : 1;
u8 b2 : 1;
u8 b3 : 1;
u8 b4 : 1;
u8 b5 : 1;
u8 b6 : 1;
u8 b7 : 1;
} flagsAE;
/*0xAF*/ s8 unkAF;
/*0xB0*/ HSD_GObj* player_entity[2];
/*0xB4*/ /*void* sub_character_entity;*/ // Used for followers, such as
// Nana
/*0xB8*/ void (*struct_func)(s32 slot);
/*0xBC*/ StaleMoveTable stale_moves;
/*0xDB0*/ u8 xDB0[0xE90 - 0xDB0];
} StaticPlayer;
StaticPlayer* Player_GetPtrForSlot(int slot);
void Player_80031790(int slot);
void Player_80031848(int slot);
void Player_80031900(void);
bool Player_800319C4(int slot, bool arg1);
void Player_80031AD0(int slot);
void Player_80031CB0(enum_t id, int slot);
void Player_80031D2C(enum_t id, int slot);
void Player_80031DA8(s32 param_1, s32 param_2);
void Player_80031DC8(void func_arg(s32, s32));
void Player_80031EBC(int slot);
void Player_80031FB0(int slot, s32 entity_index);
void Player_80032070(int slot, bool bool_arg);
void Player_8003219C(int slot);
bool Player_8003221C(int slot);
s32 Player_GetPlayerState(s32 slot);
CharacterKind Player_GetPlayerCharacter(int slot);
void Player_SetPlayerCharacter(s32 slot, s32 value);
enum_t Player_GetPlayerSlotType(s32 slot);
enum_t Player_8003248C(s32 slot, bool arg1);
void Player_SetSlottype(s32 slot, enum_t value);
s8 Player_800325C8(s32 slot, bool b);
s8 Player_80032610(s32 slot, bool arg1);
void Player_LoadPlayerCoords(s32 slot, Vec3* out_vec);
void Player_80032768(s32 slot, Vec3* arg_vec);
void Player_80032828(s32 slot, s32 index, Vec3* arg_vec);
void Player_800328D4(int slot, Vec3* arg_vec);
void Player_80032A04(int slot, Vec3* arg_vec);
void Player_SetPlayerAndEntityFacingDirection(s32 slot, f32 direction);
f32 Player_80032BB0(s32 slot);
void Player_SetScale(s32 slot, f32 scale);
void Player_GetSpawnPlatformPos(s32 slot, Vec3* arg_vec);
void Player_SetSpawnPlatformPos(s32 slot, Vec3* arg_vec);
void Player_GetSomePos(s32 slot, Vec3* arg_vec);
void Player_SetSomePos(s32 slot, Vec3* arg_vec);
s32 Player_80032F30(s32 slot);
void Player_80032FA4(s32 slot, s32 arg);
f32 Player_GetFacingDirection(s32 slot);
void Player_SetFacingDirection(s32 slot, f32 direction);
void Player_SetFacingDirectionConditional(s32 slot, bool b, f32 direction);
u32 Player_GetCostumeId(int slot);
void Player_SetCostumeId(int slot, s8 costume_id);
u8 Player_GetControllerIndex(int slot);
void Player_SetControllerIndex(int slot, s8 controller_index);
s8 Player_GetTeam(int slot);
void Player_SetTeam(int slot, s8 unk_color);
s8 Player_GetPlayerId(int slot);
void Player_SetPlayerId(int slot, s8 player_id);
int Player_GetCpuLevel(int slot);
void Player_SetPlayerAndEntityCpuLevel(int slot, int cpu_level);
int Player_GetCpuType(int slot);
void Player_SetPlayerAndEntityCpuType(int slot, int cpu_type);
int Player_GetHandicap(int slot);
void Player_SetHandicap(int slot, s8 handicap);
f32 Player_GetUnk50(int slot);
f32 Player_GetAttackRatio(int slot);
void Player_SetAttackRatio(int slot, f32 attack_ratio);
f32 Player_GetDefenseRatio(int slot);
void Player_SetDefenseRatio(int slot, f32 defense_ratio);
f32 Player_GetModelScale(int slot);
void Player_SetModelScale(int slot, f32 model_scale);
s32 Player_GetStocks(int slot);
int Player_GetP1Stock(void);
void Player_SetStocks(int slot, int stocks);
void Player_LoseStock(int slot);
int Player_GetCoins(int slot);
void Player_SetCoins(int slot, int current_coins);
int Player_GetTotalCoins(int slot);
void Player_SetTotalCoins(int slot, int coins);
s32 Player_GetUnk98(s32 slot);
void Player_SetUnk98(s32 slot, s32 unk98);
s32 Player_GetUnk9C(s32 slot);
void Player_SetUnk9C(s32 slot, s32 unk9C);
HSD_GObj* Player_GetEntity(s32 slot);
HSD_GObj* Player_GetEntityAtIndex(int slot, int index);
void Player_SwapTransformedStates(s32 slot, s32 arg1, s32 arg2);
s32 Player_GetDamage(s32 slot);
void Player_SetHUDDamage(s32 slot, s32 arg1);
void Player_SetHPByIndex(s32 slot, s32 arg1, s32 arg2);
s16 Player_GetOtherStamina(s32 slot);
u32 Player_GetRemainingHP(s32 slot);
u8 Player_GetMoreFlagsBit2(s32 slot);
void Player_SetMoreFlagsBit2(s32 slot, u8 bit2);
s32 Player_GetMoreFlagsBit3(s32 slot);
void Player_SetMoreFlagsBit3(s32 slot, u8 bit3);
void Player_SetMoreFlagsBit4(s32 slot, u8 bit4);
s32 Player_GetMoreFlagsBit4(s32 slot);
u8 Player_GetMoreFlagsBit5(s32 slot);
void Player_SetMoreFlagsBit5(s32 slot, u8 bit5);
u8 Player_GetMoreFlagsBit6(s32 slot);
void Player_SetMoreFlagsBit6(s32 slot, u8 bit6);
u8 Player_GetFlagsAEBit0(s32 slot);
u32 Player_GetRemainingHPByIndex(s32 slot, s32 index);
s32 Player_GetFalls(s32 slot);
s32 Player_GetFallsByIndex(s32 slot, s32 index);
void Player_SetFalls(int slot, s32 falls);
void Player_SetFallsByIndex(int slot, enum_t index, s32 falls);
s32 Player_GetKOsByPlayerIndex(int slot, int idx);
void Player_UpdateKOsBySlot(int slot, bool bool_arg, int other_slot);
uint Player_GetMatchFrameCount(int slot);
void Player_UpdateMatchFrameCount(int slot, bool condition);
uint Player_GetSuicideCount(int slot);
void Player_SetSuicideCount(s32 slot, u32 suicide_count);
void Player_IncSuicideCount(s32 slot, s32 condition);
bool Player_800353BC(s32 slot);
bool Player_8003544C(s32 slot, bool condition);
void Player_SetFlagsBit0(int slot, bool bit0);
u8 Player_GetNametagSlotID(int slot);
void Player_SetNametagSlotID(int slot, int nametag_slot_id);
s32 Player_GetFlagsBit1(s32 slot);
void Player_SetFlagsBit1(s32 slot);
void Player_UnsetFlagsBit1(int slot);
s32 Player_GetFlagsBit3(s32 slot);
void Player_SetFlagsBit3(s32 slot, u8 bit3);
int Player_GetFlagsBit4(int slot);
u8 Player_GetFlagsBit5(s32 slot);
void Player_SetFlagsBit5(s32 slot, u8 bit5);
u8 Player_GetFlagsBit6(s32 slot);
void Player_SetFlagsBit6(s32 slot, u8 bit6);
u8 Player_GetFlagsBit7(s32 slot);
void Player_SetFlagsBit7(s32 slot, u8 bit7);
u8 Player_GetMoreFlagsBit0(s32 slot);
u8 Player_GetMoreFlagsBit1(s32 slot);
void Player_SetMoreFlagsBit1(s32 slot, u8 bit1);
s32 Player_GetUnk4D(s32 slot);
void Player_SetUnk4D(s32 slot, s8 unk4D);
u8 Player_GetFlagsAEBit1(s32 slot);
u8 Player_SetFlagsAEBit1(int slot, u8 bit1);
u8 Player_GetUnk4C(s32 slot);
void Player_SetUnk4C(s32 slot, u8 unk4C);
void Player_80036058(s32 slot);
void Player_800360D8(s32 slot);
void Player_SetStructFunc(s32 slot, void* arg_func);
pl_800386D8_t* Player_GetTotalAttackCountPtr(int slot);
StaleMoveTable* Player_GetStaleMoveTableIndexPtr(s32 slot);
int* Player_GetUnk6A8Ptr(int slot);
StaleMoveTable* Player_GetStaleMoveTableIndexPtr2(s32 slot);
s32 Player_80036394(s32 slot);
s32 Player_80036428(s32 slot);
void Player_SetUnk45(s32 slot, s8 unk45);
u8 Player_GetUnk45(s32 slot);
void Player_UpdateJoystickCountByIndex(s32 slot, s32 index);
s32 Player_GetJoystickCountByIndex(s32 slot, s32 index);
void Player_800366DC(s32 slot, s32 arg1);
void Player_80036790(s32 slot, f32 arg1);
void Player_80036844(s32 slot, s32 arg1);
void Player_800368F8(s32 slot);
void Player_80036978(s32 slot, s32 arg1);
void Player_InitOrResetPlayer(s32 slot);
void Player_80036CF0(s32 slot);
void Player_80036D24(s32 slot);
void Player_InitAllPlayers(void);
void Player_80036DA4(void);
void Player_80036DD8(void);
void Player_80036E20(s32 arg0, HSD_Archive* archive, s32 arg2);
s32 Player_80036EA0(s32 slot);
void Player_80036F34(s32 slot, s32 arg1);
void Player_80037054(s32 slot, s32 arg1);
void Player_SetOtherStamina(s32 slot, s32 stamina);
void Player_SetFlagsAEBit0(s32 slot, u8 bit0);
s32 Player_80033BB8(int slot);
/* 4D6470 */ extern void* pl_804D6470;
#define GALE01_0386D8
/* 0386D8 */ M2C_UNK pl_800386D8(pl_800386D8_t*, ssize_t);
/* 0386E8 */ M2C_UNK pl_800386E8();
/* 038700 */ M2C_UNK fn_80038700();
/* 038788 */ M2C_UNK pl_80038788();
/* 038824 */ M2C_UNK pl_80038824();
/* 038898 */ M2C_UNK pl_80038898();
/* 038914 */ M2C_UNK pl_80038914();
/* 03891C */ void pl_8003891C(int slot);
/* 038F10 */ void pl_80038F10(int slot);
/* 038FB8 */ M2C_UNK fn_80038FB8();
/* 03906C */ M2C_UNK pl_8003906C();
/* 039238 */ M2C_UNK pl_80039238();
/* 039418 */ M2C_UNK pl_80039418();
/* 039450 */ M2C_UNK pl_80039450();
/* 039618 */ M2C_UNK fn_80039618();
/* 03B044 */ M2C_UNK fn_8003B044();
/* 03B9A4 */ M2C_UNK fn_8003B9A4();
/* 03BD60 */ M2C_UNK fn_8003BD60();
/* 03C340 */ M2C_UNK fn_8003C340();
/* 03CC84 */ M2C_UNK fn_8003CC84();
/* 03D2EC */ M2C_UNK fn_8003D2EC();
#define GALE01_03D514
/* 03E70C */ void pl_8003E70C(Item_GObj*);
/* 03EC30 */ void pl_8003EC30(u8, int, int, float);
/* 03FDF4 */ void pl_8003FDF4(u8, int);
/* 0402D0 */ void pl_800402D0(int slot, bool, bool);
/* 0403C0 */ void pl_800403C0(u8, int);
/* 04049C */ void pl_8004049C(s32, ItemKind);
#define _plstale_h_
void plStale_InitAttackInstance(void);
void plStale_ResetStaleMoveTableForPlayer(s32 slot);
u16 plStale_IncrementAttackInstance(void);
void plStale_UpdateStaleMovesFromFighter(HSD_GObj* gobj, HSD_GObj* gobj_2);
void plStale_UpdateStaleMovesFromItem(HSD_GObj* gobj, HSD_GObj* gobj_2);
/* 037DF4 */ void pl_80037DF4(HSD_GObj*, union Struct2070*);
/* 0384DC */ void pl_800384DC(HSD_GObj*, u8, void*);
#define MELEE_SC_TYPES_H
/// Model with a single animation or no animation
struct StaticModelDesc {
HSD_Joint* joint;
HSD_AnimJoint* animjoint;
HSD_MatAnimJoint* matanim_joint;
HSD_ShapeAnimJoint* shapeanim_joint;
};
/// Model with multiple animations
struct DynamicModelDesc {
HSD_Joint* joint;
HSD_AnimJoint** anims;
HSD_MatAnimJoint** matanims;
HSD_ShapeAnimJoint** shapeanims;
};
// The basis of a rendered scene, like a stage, menu, or HUD overlay
struct SceneDesc {
DynamicModelDesc** models;
HSD_CObjDesc** cameras;
HSD_LightDesc** lights;
HSD_FogDesc** fogs;
};
#define GALE01_305058
/* 305058 */ M2C_UNK un_80305058();
/* 3053C4 */ M2C_UNK un_803053C4();
/* 30562C */ void Trophy_SetUnlockState(enum_t, bool);
/* 305918 */ void un_80305918(s32, s32, s32);
/* 305B88 */ M2C_UNK un_80305B88();
/* 305C44 */ M2C_UNK un_80305C44();
/* 305D00 */ M2C_UNK un_80305D00();
/* 305DB0 */ M2C_UNK un_80305DB0();
/* 305EB4 */ M2C_UNK un_80305EB4();
/* 305FB8 */ M2C_UNK un_80305FB8();
/* 3060BC */ M2C_UNK un_803060BC();
/* 3062BC */ M2C_UNK un_803062BC();
/* 3062EC */ M2C_UNK un_803062EC();
/* 3063D4 */ M2C_UNK un_803063D4();
/* 3064B8 */ M2C_UNK un_803064B8();
/* 30663C */ M2C_UNK un_8030663C();
/* 3067BC */ M2C_UNK un_803067BC();
/* 3068E0 */ M2C_UNK un_803068E0();
/* 306930 */ M2C_UNK un_80306930();
/* 306954 */ M2C_UNK un_80306954();
/* 306A0C */ M2C_UNK un_80306A0C();
/* 306A48 */ M2C_UNK un_80306A48();
/* 306B18 */ M2C_UNK un_80306B18();
/* 306BB8 */ M2C_UNK un_80306BB8();
/* 306C5C */ M2C_UNK un_80306C5C();
/* 306CF4 */ M2C_UNK un_80306CF4();
/* 306D14 */ M2C_UNK un_80306D14();
/* 306D70 */ M2C_UNK un_80306D70();
/* 306EEC */ M2C_UNK un_80306EEC();
/* 307018 */ M2C_UNK un_80307018();
/* 30715C */ M2C_UNK un_8030715C();
/* 307470 */ M2C_UNK un_80307470();
/* 3075E8 */ M2C_UNK un_803075E8();
/* 307828 */ M2C_UNK un_80307828();
/* 3078E4 */ M2C_UNK un_803078E4();
/* 307BA0 */ M2C_UNK un_80307BA0();
/* 307E84 */ M2C_UNK fn_80307E84();
/* 307F64 */ M2C_UNK un_80307F64();
/* 30813C */ M2C_UNK un_8030813C();
/* 308250 */ M2C_UNK un_80308250();
/* 3082F8 */ M2C_UNK un_803082F8();
/* 308328 */ M2C_UNK un_80308328();
/* 308354 */ M2C_UNK un_80308354();
/* 3083D8 */ M2C_UNK un_803083D8();
/* 3084A0 */ M2C_UNK un_803084A0();
/* 3087F4 */ M2C_UNK un_803087F4();
/* 308DC8 */ M2C_UNK un_80308DC8();
/* 308F04 */ M2C_UNK un_80308F04();
/* 309338 */ M2C_UNK un_80309338();
/* 309404 */ M2C_UNK fn_80309404();
/* 30B530 */ M2C_UNK fn_8030B530();
/* 30E110 */ M2C_UNK fn_8030E110();
/* 30FA50 */ M2C_UNK un_8030FA50();
/* 30FE48 */ M2C_UNK un_8030FE48();
/* 3102C4 */ void un_803102C4(s8 arg0);
/* 3102D0 */ M2C_UNK un_803102D0();
/* 310324 */ M2C_UNK un_80310324();
/* 310660 */ M2C_UNK un_80310660();
/* 3109A0 */ M2C_UNK un_803109A0();
/* 310B48 */ M2C_UNK un_80310B48();
/* 3114E8 */ M2C_UNK un_803114E8();
/* 311680 */ M2C_UNK un_80311680();
/* 311788 */ M2C_UNK un_80311788();
/* 311960 */ M2C_UNK un_80311960();
/* 311AB0 */ M2C_UNK un_80311AB0();
/* 311F5C */ M2C_UNK un_80311F5C();
/* 312018 */ M2C_UNK un_80312018();
/* 312050 */ M2C_UNK un_80312050();
/* 3122D0 */ M2C_UNK un_803122D0();
/* 31234C */ void un_8031234C(s32);
#define __TYDISPLAY_H
s32 un_8031C354(s32, s32 (*)[], s32, s32);
void* un_8031C5E4(s32);
#define MELEE_UN_FORWARD_H
typedef struct un_80302AB0_t un_80302AB0_t;
typedef struct un_80302B10_t un_80302B10_t;
typedef struct un_80302DF8_t un_80302DF8_t;
typedef struct un_80304334_t un_80304334_t;
#define MELEE_UN_TYPES_H
struct un_80302AB0_t {
/* +0 */ char pad_0[0x26];
/* +26 */ u8 x26;
};
struct un_80302B10_t {
/* +0 */ char pad_0[0x8];
/* +8 */ float x8;
/* +C */ float xC;
};
struct un_80302DF8_t {
/* +0 */ char pad_0[0xC];
/* +C */ int xC;
};
struct un_80304334_t {
/* +0 */ char pad_0[1];
/* +1 */ u8 x1;
};
#define GALE01_2FC9B4
/* 2FC9B4 */ M2C_UNK un_802FC9B4();
/* 2FCAA4 */ M2C_UNK fn_802FCAA4();
/* 2FCAC4 */ M2C_UNK fn_802FCAC4();
/* 2FCBA0 */ M2C_UNK un_802FCBA0();
/* 2FCC44 */ M2C_UNK fn_802FCC44();
/* 2FCF38 */ M2C_UNK un_802FCF38();
/* 2FD28C */ M2C_UNK un_802FD28C();
/* 2FD404 */ M2C_UNK un_802FD404();
/* 2FD428 */ M2C_UNK un_802FD428();
/* 2FD450 */ M2C_UNK un_802FD450();
/* 2FD45C */ M2C_UNK un_802FD45C();
/* 2FD468 */ M2C_UNK un_802FD468();
/* 2FD4C8 */ M2C_UNK un_802FD4C8();
/* 2FD604 */ M2C_UNK un_802FD604();
/* 2FD65C */ M2C_UNK un_802FD65C();
/* 2FD668 */ M2C_UNK un_802FD668();
/* 2FD674 */ M2C_UNK un_802FD674();
/* 2FD680 */ M2C_UNK fn_802FD680();
/* 2FD6CC */ M2C_UNK fn_802FD6CC();
/* 2FD704 */ M2C_UNK un_802FD704();
/* 2FD708 */ M2C_UNK un_802FD708();
/* 2FD8A0 */ M2C_UNK un_802FD8A0();
/* 2FD8C4 */ M2C_UNK un_802FD8C4();
/* 2FD8E8 */ M2C_UNK un_802FD8E8();
/* 2FD90C */ M2C_UNK un_802FD90C();
/* 2FD910 */ M2C_UNK un_802FD910();
/* 2FD91C */ M2C_UNK un_802FD91C();
/* 2FD928 */ M2C_UNK un_802FD928();
/* 2FD9D8 */ M2C_UNK un_802FD9D8();
/* 2FDA4C */ M2C_UNK fn_802FDA4C();
/* 2FDA78 */ M2C_UNK fn_802FDA78();
/* 2FE260 */ M2C_UNK un_802FE260();
/* 2FE390 */ M2C_UNK un_802FE390();
/* 2FE3F8 */ M2C_UNK un_802FE3F8();
/* 2FE470 */ M2C_UNK fn_802FE470();
/* 2FE6A8 */ M2C_UNK un_802FE6A8();
/* 2FE8CC */ M2C_UNK un_802FE8CC();
/* 2FE918 */ M2C_UNK un_802FE918();
/* 2FEBE0 */ M2C_UNK un_802FEBE0();
/* 2FED10 */ M2C_UNK un_802FED10();
/* 2FED14 */ M2C_UNK fn_802FED14();
/* 2FEFAC */ M2C_UNK un_802FEFAC();
/* 2FF128 */ M2C_UNK un_802FF128();
/* 2FF190 */ M2C_UNK un_802FF190();
/* 2FF1B4 */ M2C_UNK un_802FF1B4();
/* 2FF218 */ M2C_UNK fn_802FF218();
/* 2FF360 */ M2C_UNK fn_802FF360();
/* 2FF364 */ void un_802FF364(void);
/* 2FF498 */ M2C_UNK un_802FF498();
/* 2FF4FC */ M2C_UNK un_802FF4FC();
/* 2FF570 */ M2C_UNK un_802FF570();
/* 2FF620 */ M2C_UNK un_802FF620();
/* 2FF6A0 */ M2C_UNK un_802FF6A0();
/* 2FF710 */ M2C_UNK un_802FF710();
/* 2FF78C */ M2C_UNK un_802FF78C();
/* 2FF7DC */ M2C_UNK un_802FF7DC();
/* 2FF884 */ bool un_802FF884(void);
/* 2FF88C */ M2C_UNK un_802FF88C();
/* 2FF934 */ M2C_UNK un_802FF934();
/* 2FF958 */ M2C_UNK un_802FF958();
/* 2FF99C */ M2C_UNK un_802FF99C();
/* 2FF9DC */ M2C_UNK un_802FF9DC();
/* 2FFB58 */ M2C_UNK un_802FFB58();
/* 2FFBAC */ M2C_UNK un_802FFBAC();
/* 2FFC30 */ M2C_UNK un_802FFC30();
/* 2FFC6C */ M2C_UNK un_802FFC6C();
/* 2FFCC8 */ bool fn_802FFCC8(void);
/* 2FFCD0 */ M2C_UNK un_802FFCD0();
/* 2FFD94 */ M2C_UNK un_802FFD94();
/* 2FFE0C */ M2C_UNK fn_802FFE0C();
/* 2FFE6C */ M2C_UNK fn_802FFE6C();
/* 2FFEA4 */ M2C_UNK un_802FFEA4();
/* 2FFEE0 */ M2C_UNK un_802FFEE0();
/* 2FFF2C */ M2C_UNK un_802FFF2C();
/* 3001DC */ M2C_UNK un_803001DC();
/* 300218 */ M2C_UNK un_80300218();
/* 300248 */ M2C_UNK un_80300248();
/* 300290 */ M2C_UNK un_80300290();
/* 3002FC */ M2C_UNK un_803002FC();
/* 300338 */ M2C_UNK un_80300338();
/* 300378 */ M2C_UNK un_80300378();
/* 3003C4 */ M2C_UNK un_803003C4();
/* 300410 */ M2C_UNK un_80300410();
/* 300480 */ M2C_UNK un_80300480();
/* 3004B4 */ M2C_UNK un_803004B4();
/* 3004E8 */ M2C_UNK un_803004E8();
/* 30051C */ M2C_UNK un_8030051C();
/* 300550 */ M2C_UNK un_80300550();
/* 300584 */ M2C_UNK un_80300584();
/* 3005B8 */ M2C_UNK un_803005B8();
/* 3005EC */ M2C_UNK un_803005EC();
/* 300620 */ M2C_UNK un_80300620();
/* 300654 */ M2C_UNK un_80300654();
/* 300688 */ M2C_UNK un_80300688();
/* 3006BC */ M2C_UNK un_803006BC();
/* 3006F0 */ M2C_UNK un_803006F0();
/* 300724 */ M2C_UNK un_80300724();
/* 300758 */ M2C_UNK un_80300758();
/* 300790 */ M2C_UNK un_80300790();
/* 3007C8 */ M2C_UNK un_803007C8();
/* 3007FC */ M2C_UNK un_803007FC();
/* 300830 */ M2C_UNK un_80300830();
/* 300864 */ M2C_UNK un_80300864();
/* 300898 */ M2C_UNK un_80300898();
/* 3008CC */ M2C_UNK un_803008CC();
/* 300900 */ M2C_UNK un_80300900();
/* 300934 */ M2C_UNK un_80300934();
/* 300968 */ M2C_UNK un_80300968();
/* 3009A4 */ M2C_UNK un_803009A4();
/* 3009E0 */ M2C_UNK un_803009E0();
/* 300A88 */ M2C_UNK un_80300A88();
/* 300AB8 */ M2C_UNK un_80300AB8();
/* 300AF4 */ M2C_UNK un_80300AF4();
/* 300B58 */ M2C_UNK un_80300B58();
/* 300BBC */ M2C_UNK un_80300BBC();
/* 300BF8 */ M2C_UNK un_80300BF8();
/* 300C3C */ M2C_UNK un_80300C3C();
/* 300C80 */ M2C_UNK un_80300C80();
/* 300CC8 */ M2C_UNK fn_80300CC8();
/* 300D78 */ M2C_UNK un_80300D78();
/* 300DE0 */ M2C_UNK fn_80300DE0();
/* 300E74 */ M2C_UNK un_80300E74();
/* 300ED0 */ M2C_UNK fn_80300ED0();
/* 300F3C */ M2C_UNK un_80300F3C();
/* 300F98 */ M2C_UNK un_80300F98();
/* 300FEC */ M2C_UNK un_80300FEC();
/* 301028 */ M2C_UNK un_80301028();
/* 301074 */ M2C_UNK un_80301074();
/* 3010C0 */ M2C_UNK un_803010C0();
/* 30110C */ M2C_UNK fn_8030110C();
/* 3011EC */ M2C_UNK fn_803011EC();
/* 301280 */ M2C_UNK un_80301280();
/* 3012D4 */ M2C_UNK un_803012D4();
/* 301328 */ M2C_UNK un_80301328();
/* 30136C */ M2C_UNK un_8030136C();
/* 3013B0 */ M2C_UNK un_803013B0();
/* 3013EC */ M2C_UNK un_803013EC();
/* 301420 */ M2C_UNK un_80301420();
/* 301454 */ M2C_UNK un_80301454();
/* 301490 */ M2C_UNK un_80301490();
/* 3014CC */ M2C_UNK un_803014CC();
/* 301508 */ M2C_UNK un_80301508();
/* 301544 */ M2C_UNK un_80301544();
/* 301580 */ M2C_UNK un_80301580();
/* 3015BC */ M2C_UNK un_803015BC();
/* 3015F8 */ M2C_UNK un_803015F8();
/* 301634 */ M2C_UNK un_80301634();
/* 3016D8 */ M2C_UNK un_803016D8();
/* 301734 */ M2C_UNK un_80301734();
/* 30178C */ M2C_UNK un_8030178C();
/* 301800 */ M2C_UNK un_80301800();
/* 301840 */ M2C_UNK un_80301840();
/* 3018BC */ M2C_UNK un_803018BC();
/* 30191C */ M2C_UNK un_8030191C();
/* 301964 */ M2C_UNK un_80301964();
/* 301A64 */ M2C_UNK un_80301A64();
/* 301AD4 */ M2C_UNK un_80301AD4();
/* 301B48 */ M2C_UNK un_80301B48();
/* 301BA8 */ M2C_UNK un_80301BA8();
/* 301C64 */ M2C_UNK un_80301C64();
/* 301C80 */ M2C_UNK un_80301C80();
/* 301CE0 */ M2C_UNK un_80301CE0();
/* 301D40 */ M2C_UNK un_80301D40();
/* 301D7C */ M2C_UNK un_80301D7C();
/* 301DCC */ M2C_UNK un_80301DCC();
/* 301E08 */ M2C_UNK un_80301E08();
/* 301E44 */ M2C_UNK un_80301E44();
/* 301E78 */ M2C_UNK un_80301E78();
/* 301FB4 */ M2C_UNK un_80301FB4(void);
/* 301FBC */ M2C_UNK un_80301FBC();
/* 3020F8 */ M2C_UNK fn_803020F8();
/* 3020FC */ M2C_UNK un_803020FC();
/* 302164 */ M2C_UNK un_80302164();
/* 3022BC */ M2C_UNK un_803022BC();
/* 302608 */ M2C_UNK fn_80302608();
/* 30265C */ M2C_UNK un_8030265C();
/* 302708 */ M2C_UNK un_80302708();
/* 3027A0 */ M2C_UNK un_803027A0();
/* 302810 */ M2C_UNK un_80302810();
/* 302834 */ M2C_UNK un_80302834();
/* 3029B4 */ M2C_UNK un_803029B4();
/* 302A3C */ M2C_UNK un_80302A3C();
/* 302A88 */ M2C_UNK un_80302A88();
/* 302AB0 */ void un_80302AB0(un_80302AB0_t*);
/* 302AC0 */ void un_80302AC0(un_80302AB0_t*);
/* 302AD0 */ void un_80302AD0(un_80302AB0_t*);
/* 302AE0 */ void un_80302AE0(un_80302AB0_t*);
/* 302AF0 */ void un_80302AF0(un_80302AB0_t* arg0);
/* 302B00 */ void un_80302B00(un_80302AB0_t* arg0);
/* 302B10 */ void un_80302B10(un_80302B10_t* arg0, float, float);
/* 302B1C */ M2C_UNK un_80302B1C();
/* 302B48 */ M2C_UNK un_80302B48();
/* 302B64 */ M2C_UNK un_80302B64();
/* 302B90 */ M2C_UNK un_80302B90();
/* 302BB0 */ M2C_UNK un_80302BB0();
/* 302BE4 */ M2C_UNK un_80302BE4();
/* 302D0C */ M2C_UNK un_80302D0C();
/* 302D4C */ M2C_UNK un_80302D4C();
/* 302DF0 */ M2C_UNK un_80302DF0(void);
/* 302DF8 */ void un_80302DF8(un_80302DF8_t* arg0, int arg1);
/* 302E00 */ M2C_UNK un_80302E00();
/* 302EA4 */ M2C_UNK un_80302EA4();
/* 302FFC */ M2C_UNK un_80302FFC();
/* 303444 */ M2C_UNK un_80303444();
/* 303720 */ M2C_UNK un_80303720();
/* 3039A4 */ M2C_UNK un_803039A4();
/* 303AC4 */ M2C_UNK un_80303AC4();
/* 303EF4 */ M2C_UNK fn_80303EF4();
/* 303FD4 */ M2C_UNK un_80303FD4();
/* 304138 */ M2C_UNK un_80304138();
/* 304168 */ M2C_UNK un_80304168();
/* 304210 */ M2C_UNK un_80304210();
/* 304334 */ void un_80304334(un_80304334_t* arg0);
/* 304344 */ M2C_UNK un_80304344();
/* 304470 */ M2C_UNK un_80304470();
/* 304510 */ M2C_UNK un_80304510();
/* 3045A0 */ M2C_UNK un_803045A0();
/* 304690 */ M2C_UNK un_80304690();
/* 304780 */ M2C_UNK un_80304780();
/* 304870 */ M2C_UNK un_80304870();
/* 3048C0 */ bool un_803048C0(s32);
/* 304924 */ M2C_UNK un_80304924();
/* 304988 */ M2C_UNK un_80304988();
/* 3049F4 */ M2C_UNK un_803049F4();
/* 304A58 */ void un_80304A58(s32);
/* 304B0C */ M2C_UNK un_80304B0C();
/* 304B94 */ M2C_UNK un_80304B94();
/* 304CC8 */ M2C_UNK un_80304CC8();
/* 304D30 */ M2C_UNK un_80304D30();
/* 3124BC */ M2C_UNK un_803124BC();
/* 31C2CC */ M2C_UNK un_8031C2CC();
/* 31C2EC */ int un_8031C2EC(StageInfo*);
/* 31C454 */ M2C_UNK un_8031C454();
/* 322258 */ bool un_80322258(f32 x);
/* 3222EC */ float un_803222EC(float mag, float angle);
/* 322314 */ void un_80322314(void);
/* 32233C */ void un_8032233C(int, int);
/* 3224DC */ bool un_803224DC(s32 spawn_id, f32 pos_x, f32 kb_mag);
/* 322598 */ void un_80322598(int, float);
/* 4D6E6C */ extern void* un_804D6E6C;
#define __GALE01_2FC9B4
//
/* 4D6D6C */ static s8 un_804D6D6C;
/* 4D6D88 */ static s32 un_804D6D88;
/* 4D6D8C */ static s32 un_804D6D8C;
/* 4D6D90 */ static IntVec2 un_804D6D90;
/* 4D6E1C */ static M2C_UNK un_804D6E1C;
/* 4D6E44 */ static M2C_UNK un_804D6E44;
#define MELEE_VI_FORWARD_H
/// @todo When accessing, neither struct with s8 fields, nor s8 array,
/// seem to match. Also tried volatile struct and volatile fields.
/// Size is 0xC.
typedef M2C_UNK un_804D7004_t;
#define MELEE_VI_TYPES_H
struct un_804D7004_t {
char pad_0[0xC];
}; /* size = 0xC */
struct { int x[1 - 2 * !(sizeof(struct un_804D7004_t) == 0xC)]; };;
#define GALE01_31C99C
/* 31CAAC */ void un_8031CAAC(void);
#define GALE01_31CB00
/* 31CB00 */ M2C_UNK un_8031CB00();
/* 31CC68 */ M2C_UNK fn_8031CC68();
/* 31CC8C */ M2C_UNK fn_8031CC8C();
/* 31CD20 */ M2C_UNK fn_8031CD20();
/* 31CD94 */ M2C_UNK un_8031CD94();
/* 31D000 */ M2C_UNK un_8031D000();
/* 31D020 */ void un_8031D020(s8 arg0, s8 arg1);
#define __GALE01_31CB00
struct un_804D6F60_t {
/* 0x0 */ s8 unk_0; /* inferred */
/* 0x1 */ s8 unk_1; /* inferred */
/* 0x2 */ char pad_2[6]; /* maybe part of unk_1[7]? */
}; /* size = 0x8 */
struct { int x[1 - 2 * !(sizeof(struct un_804D6F60_t) == 0x8)]; };;
/* 4D6F60 */ static struct un_804D6F60_t un_804D6F60;
#define GALE01_31D6E4
/* 31D708 */ M2C_UNK un_8031D708();
/* 31D80C */ M2C_UNK fn_8031D80C();
/* 31D858 */ M2C_UNK un_8031D858();
/* 31D9C4 */ M2C_UNK un_8031D9C4();
/* 31D9E4 */ void un_8031D9E4(s8 arg0, s8 arg1, s8 arg2);
/* 4D6F84 */ extern un_804D7004_t un_804D6F84;
#define __GALE01_31D6E4
/* 31D6E4 */ void un_8031D6E4(HSD_GObj*);
#define GALE01_31D9F8
/* 31D9F8 */ M2C_UNK un_8031D9F8();
/* 31DC80 */ M2C_UNK fn_8031DC80();
/* 31DD14 */ M2C_UNK fn_8031DD14();
/* 31DE58 */ M2C_UNK un_8031DE58();
/* 31E0F0 */ M2C_UNK un_8031E0F0();
/* 31E110 */ void un_8031E110(s8 arg0, s8 arg1, s8 arg2);
/* 4D7004 */ extern un_804D7004_t un_804D6FA8;
#define __GALE01_31D9F8
#define GALE01_31E6CC
/* 31E6CC */ void un_8031E6CC(void);
/* 31E6EC */ void un_8031E6EC(HSD_GObj*);
#define GALE01_31F294
/* 31F294 */ M2C_UNK un_8031F294();
/* 31F548 */ M2C_UNK fn_8031F548();
/* 31F56C */ M2C_UNK fn_8031F56C();
/* 31F600 */ M2C_UNK fn_8031F600();
/* 31F714 */ M2C_UNK un_8031F714();
/* 31F960 */ M2C_UNK un_8031F960();
/* 31F980 */ void un_8031F980(s8 arg0, s8 arg1);
#define __GALE01_31F294
/* 4D7004 */ static un_804D7004_t un_804D7004;
#define GALE01_31F990
/* 31F990 */ void un_8031F990(HSD_GObj*);
/* 31F9B4 */ void un_8031F9B4(HSD_GObj*);
/* 31F9D8 */ M2C_UNK un_8031F9D8();
/* 31FAA8 */ M2C_UNK fn_8031FAA8();
/* 31FB90 */ M2C_UNK fn_8031FB90();
/* 31FC30 */ M2C_UNK fn_8031FC30();
/* 31FCBC */ M2C_UNK fn_8031FCBC();
/* 31FD18 */ M2C_UNK un_8031FD18();
/* 320490 */ M2C_UNK un_80320490();
/* 3204B0 */ void un_803204B0(s8 arg0, s8 arg1);
#define __GALE01_31F990
/* 4D7038 */ static un_804D7004_t un_804D7038;
#define GALE01_3204C0
/* 3204C0 */ void un_803204C0(HSD_GObj*);
/* 3204E4 */ void un_803204E4(HSD_GObj*);
#define GALE01_32110C
/* 32110C */ void un_8032110C(HSD_GObj*);
/* 321130 */ void un_80321130(HSD_GObj*);
/* 321154 */ void un_80321154(HSD_GObj*);
#define _AXDRIVER_H_
#define SMSTATE_MASK 0xC0000000
#define SMSTATE_ACTIVE 0x40000000
#define SMSTATE_SLEEP 0x80000000
struct HSD_SM {
HSD_SM* prev;
HSD_SM* next;
u32 flags;
int vid;
int pid;
int fid;
u8 track;
u8 pri;
u8 pri0[2];
u8 volumeType[2];
s16 volume[2];
u16 fadetime;
u8 pan[2];
s16 round;
u8 dp12flag;
u8 itdflag;
u8 span[2];
u8 maxfid;
s16 pitch[2];
u8 mix[2];
u8 mixscale[2];
u8 filter;
u8 group;
u16 loopcount;
u32* curScore;
long clock;
};
u8* AXDriverAlloc(s32 size);
void AXDriverFree(void* ptr);
void AXDriverUnlink(HSD_SM* v, HSD_SM** head);
void AXDriverKeyOff(HSD_SM* v);
void HSD_AudioSFXKeyOffAll(void);
void HSD_AudioSFXKeyOffTrack(int track);
s32 AXDriver_8038D4E4(int, s16);
#define ___AXDRIVER_H_
/* 408140 */ extern char AXDriver_80408140[];
/* 40814C */ extern char AXDriver_8040814C[];
/* 408168 */ extern char AXDriver_80408168[];
/* 4D77D4 */ extern u8* AXDriver_804D77D4;
/* 4D77D8 */ extern u32 axfxallocsize;
/* 4D77DC */ extern u32 axfxmaxsize;
/* 4D77EC */ static s32 AXDriver_804D77EC;
#define SYSDOLPHIN_BASELIB_DEVCOM_H
typedef struct HSD_DevCom HSD_DevCom;
struct HSD_DevCom {
HSD_DevCom* next;
int dcReq;
int file;
u32 src;
u32 dest;
u32 size;
u16 type;
u16 cancelflag;
HSD_DevComCallback callback;
void* args;
};
s32 HSD_DevComIsBusy(s32 idx);
void HSD_DevComUnlink(HSD_DevCom* dc, int link, HSD_DevCom* adc);
void HSD_DevComRequest(int file, unsigned long src, unsigned long dest,
unsigned long size, int type, int pri,
HSD_DevComCallback callback, void* args);
#define INCLUDE_SYSDOLPHIN_BASELIB_DISPLAYFUNC_H
#define DOBJ_TRSP_SHIFT 1
#define JOBJ_TRSP_SHIFT 18
#define JOBJ_OPA 0x40000
#define JOBJ_XLU 0x80000
#define JOBJ_TEXEDGE 0x100000
void _HSD_DispForgetMemory(void* lo, void* hi);
void HSD_ZListInitAllocData(void);
void HSD_EraseRect(f32 top_res, f32 bottom_res, f32 left_res, f32 right_res,
f32 neg_z_val, int enable_color, int enable_alpha,
int enable_depth);
void HSD_JObjMakePositionMtx(HSD_JObj* jobj, Mtx vmtx, Mtx pmtx);
MtxPtr _HSD_mkEnvelopeModelNodeMtx(HSD_JObj* m, MtxPtr mtx);
void HSD_JObjDisp(HSD_JObj* jobj, MtxPtr, HSD_TrspMask flags, u32 rendermode);
void HSD_JObjDispSub(HSD_JObj* jobj, MtxPtr vmtx, MtxPtr pmtx,
HSD_TrspMask trsp_mask, u32 rendermode);
void HSD_JObjDispDObj(HSD_JObj* jobj, MtxPtr vmtx, HSD_TrspMask trsp_mask,
u32 rendermode);
HSD_JObj* HSD_JObjFindSkeleton(HSD_JObj* jobj);
void HSD_StateInitDirect(int vtxfmt, u32 rendermode);
void _HSD_ZListSort(void);
void _HSD_ZListDisp(void);
void _HSD_ZListClear(void);
void HSD_JObjSetSPtclCallback(void (*func)(s32, s32, s32, HSD_JObj*));
void HSD_SetEraseColor(u8 r, u8 g, u8 b, u8 a);
#define SYSDOLPHIN_BASELIB_FOG_H
struct HSD_FogAdj {
/* 0x00 */ HSD_Obj parent;
/* 0x08 */ s16 center;
/* 0x0A */ u16 width;
/* 0x0C */ Mtx44 mtx;
/* 0x3C */ HSD_AObj* aobj;
};
struct HSD_Fog {
/* 0x00 */ HSD_Obj parent;
/* 0x08 */ u32 type;
/* 0x0C */ HSD_FogAdj* fog_adj;
/* 0x10 */ f32 start;
/* 0x14 */ f32 end;
/* 0x18 */ GXColor color;
/* 0x1C */ HSD_AObj* aobj;
};
struct HSD_FogAdjDesc {
/* 0x00 */ u16 center;
/* 0x02 */ u16 width;
/* 0x04 */ Mtx44 mtx;
};
struct HSD_FogInfo {
HSD_ObjInfo parent;
};
struct HSD_FogAdjInfo {
HSD_ObjInfo parent;
};
struct HSD_FogDesc {
/* 0x00 */ u32 type;
/* 0x04 */ HSD_FogAdjDesc* fogadjdesc;
/* 0x08 */ f32 start;
/* 0x0C */ f32 end;
/* 0x10 */ GXColor color;
};
void HSD_FogSet(HSD_Fog*);
HSD_FogAdj* HSD_FogAdjLoadDesc(HSD_FogAdjDesc*);
void HSD_FogInit(HSD_Fog*, HSD_FogDesc*);
void HSD_FogAdjInit(HSD_FogAdj*, HSD_FogAdjDesc*);
void HSD_FogReqAnimByFlags(HSD_Fog*, u32 flags, f32 frame);
void FogUpdateFunc(void* obj, enum_t type, HSD_ObjData* fval);
HSD_Fog* HSD_FogLoadDesc(HSD_FogDesc* desc);
HSD_Fog* HSD_FogAlloc(void);
HSD_FogAdj* HSD_FogAdjAlloc(void);
void HSD_Fog_8037DE7C(HSD_Fog* fog, HSD_AObjDesc* desc);
void HSD_FogReqAnim(HSD_Fog* fog, f32 frame);
void HSD_FogInterpretAnim(HSD_Fog* fog);
#define _hash_h_
#define hash(s) (s % 0x65)
struct HSD_HashEntry {
HSD_HashEntry* next;
void* key;
void* value;
};
typedef struct _HSD_HashClass {
struct _HSD_HashClassInfo* class_info;
} HSD_HashClass;
typedef struct _HSD_HashClassInfo {
HSD_ClassInfo parent;
int (*getidx)(HSD_Hash* hash);
bool (*keycheck)(HSD_Hash* hash, void* table_key, void* key);
} HSD_HashClassInfo;
struct HSD_Hash {
HSD_HashClass parent;
HSD_HashEntry** table;
u32 table_size;
};
HSD_HashEntry* HashSearchEntry(HSD_Hash*, int, void*, HSD_HashEntry**);
HSD_HashClassInfo* HSD_HashSearch(HSD_Hash*, void*, int*);
#define GALE01_3A949C
typedef struct {
u8 x0[0x80 * 0x24];
} __baselib_UnkType002;
typedef struct {
u8 x0[0x300];
} __baselib_UnkType003;
/* 4D0B50 */ extern u8 hsd_804D0B50[0x104];
/* 4D0C54 */ extern u8 hsd_804D0C54[0x104];
/* 4D1138 */ extern u8 hsd_804D1138[0x10];
/* 4D1148 */ extern u32 hsd_804D1148[0x80][0x9];
/* 4D2348 */ extern __baselib_UnkType003 hsd_804D2348;
/* 4D2648 */ extern __jmp_buf hsd_804D2648;
/* 4D2E70 */ extern u8 hsd_804D2E70[2084];
/* 4D79A0 */ extern M2C_UNK hsd_804D79A0;
/* 4D79A4 */ extern M2C_UNK hsd_804D79A4;
/* 4D79A8 */ extern M2C_UNK hsd_804D79A8;
#define GALE01_3AA790
/* 3AA790 */ M2C_UNK fn_803AA790();
/* 3AAA48 */ M2C_UNK hsd_803AAA48();
/* 3AC168 */ M2C_UNK fn_803AC168();
/* 3AC258 */ M2C_UNK fn_803AC258();
/* 3AC2A4 */ M2C_UNK fn_803AC2A4();
/* 3AC2D4 */ M2C_UNK fn_803AC2D4();
/* 3AC2E0 */ M2C_UNK fn_803AC2E0();
/* 3AC334 */ M2C_UNK fn_803AC334();
/* 3AC340 */ M2C_UNK hsd_803AC340();
/* 3AC3E0 */ M2C_UNK hsd_803AC3E0();
/* 3AC3F8 */ M2C_UNK fn_803AC3F8();
/* 3AC558 */ M2C_UNK hsd_803AC558();
/* 3AC634 */ M2C_UNK fn_803AC634();
/* 3AC6B8 */ M2C_UNK fn_803AC6B8();
/* 3AC7DC */ M2C_UNK fn_803AC7DC();
/* 3ACB74 */ M2C_UNK fn_803ACB74();
/* 3ACBE8 */ M2C_UNK fn_803ACBE8();
/* 3ACC0C */ M2C_UNK fn_803ACC0C();
/* 3ACD58 */ M2C_UNK fn_803ACD58();
/* 3ACF30 */ M2C_UNK fn_803ACF30();
/* 3ACFC0 */ M2C_UNK fn_803ACFC0();
/* 3AD16C */ M2C_UNK fn_803AD16C();
/* 3ADE4C */ M2C_UNK fn_803ADE4C();
/* 3ADF90 */ M2C_UNK fn_803ADF90();
/* 3AE7F8 */ M2C_UNK fn_803AE7F8();
/* 3AF3F0 */ M2C_UNK fn_803AF3F0();
/* 3B0120 */ M2C_UNK fn_803B0120();
/* 3B0E9C */ M2C_UNK fn_803B0E9C();
/* 3B1338 */ M2C_UNK fn_803B1338();
/* 3B1F78 */ M2C_UNK fn_803B1F78();
/* 3B21E8 */ M2C_UNK fn_803B21E8();
/* 3B2374 */ M2C_UNK hsd_803B2374();
/* 3B24E4 */ M2C_UNK hsd_803B24E4();
/* 3B2550 */ M2C_UNK hsd_803B2550();
/* 3B2674 */ M2C_UNK hsd_803B2674();
/* 3B26CC */ M2C_UNK fn_803B26CC();
#define SYSDOLPHIN_BASELIB_BASELIB_UNKNOWN_008_H
void hsd_803B3344(u8 byte);
void hsd_803B3398(void* src, size_t size);
#define GALE01_3B3408
#define _id_h_
typedef struct _IDEntry {
struct _IDEntry* next;
u32 id;
void* data;
} IDEntry;
typedef struct _HSD_IDTable {
struct _IDEntry* table[101];
} HSD_IDTable;
HSD_ObjAllocData* HSD_IDGetAllocData(void);
void HSD_IDInitAllocData(void);
void HSD_IDSetup(void);
void HSD_IDInsertToTable(HSD_IDTable* table, u32 id, void* data);
void HSD_IDRemoveByIDFromTable(HSD_IDTable* table, u32 id);
void* HSD_IDGetDataFromTable(HSD_IDTable* table, u32 id, s32* success);
void _HSD_IDForgetMemory(void* low, void* high);
static inline void* HSD_IDGetData(u32 id, s32* success)
{
return HSD_IDGetDataFromTable(((void*) 0), id, success);
}
#define _initialize_h_
#define _video_h_
#define HSD_VI_XFB_MAX 3
#define HSD_ANTIALIAS_OVERLAP 4
#define VI_DISPLAY_PIX_SZ 2
#define HSD_ANTIALIAS_GARBAGE_SIZE (640 * HSD_ANTIALIAS_OVERLAP * VI_DISPLAY_PIX_SZ)
typedef void (*HSD_VIGXDrawDoneCallback)(int);
typedef void (*HSD_VIRetraceCallback)(u32);
typedef enum _HSD_VIXFBDrawDispStatus {
HSD_VI_XFB_NONE,
HSD_VI_XFB_NOUSE,
HSD_VI_XFB_FREE,
HSD_VI_XFB_DRAWING,
HSD_VI_XFB_WAITDONE,
HSD_VI_XFB_DRAWDONE,
HSD_VI_XFB_NEXT,
HSD_VI_XFB_DISPLAY,
HSD_VI_XFB_COPYEFB,
HSD_VI_XFB_TERMINATE
} HSD_VIXFBDrawDispStatus;
typedef enum _HSD_VIEFBDrawDispStatus {
HSD_VI_EFB_FREE,
HSD_VI_EFB_DRAWDONE,
HSD_VI_EFB_TERMINATE
} HSD_VIEFBDrawDispStatus;
typedef enum _HSD_RenderPass {
HSD_RP_SCREEN,
HSD_RP_TOPHALF,
HSD_RP_BOTTOMHALF,
HSD_RP_OFFSCREEN,
HSD_RP_NUM
} HSD_RenderPass;
typedef struct _HSD_VIStatus {
GXRenderModeObj rmode;
s32 black;
u8 vf;
GXGamma gamma;
GXColor clear_clr;
u32 clear_z;
u8 update_clr;
u8 update_alpha;
u8 update_z;
} HSD_VIStatus;
typedef struct _current {
struct _HSD_VIStatus vi;
u8 chg_flag;
} Current;
typedef struct _XFB {
void* buffer;
HSD_VIXFBDrawDispStatus status;
Current vi_all;
} XFB;
typedef struct _HSD_VIInfo {
Current current;
XFB xfb[3];
struct _EFB {
HSD_VIEFBDrawDispStatus status;
Current vi_all;
} efb;
s32 nb_xfb;
HSD_VIRetraceCallback pre_cb;
HSD_VIRetraceCallback post_cb;
struct drawdone {
s32 waiting;
s32 arg;
HSD_VIGXDrawDoneCallback cb;
} drawdone;
struct perf {
s32 frame_period;
s32 frame_renew;
} perf;
} HSD_VIInfo;
extern HSD_VIInfo HSD_VIData;
void HSD_VIInit(struct _HSD_VIStatus* vi_status, void* xfb0, void* xfb1,
void* xfb2);
void HSD_VISetConfigure(GXRenderModeObj* rmode);
void HSD_VISetBlack(bool);
HSD_VIRetraceCallback
HSD_VISetUserPreRetraceCallback(HSD_VIRetraceCallback cb);
HSD_VIRetraceCallback
HSD_VISetUserPostRetraceCallback(HSD_VIRetraceCallback cb);
HSD_VIGXDrawDoneCallback
HSD_VISetUserGXDrawDoneCallback(HSD_VIGXDrawDoneCallback cb);
int HSD_VIGetXFBDrawEnable(void);
int HSD_VIWaitXFBDrawEnable(void);
void HSD_VICopyEFB2XFBPtr(HSD_VIStatus* vi, void* buffer,
HSD_RenderPass rpass);
void HSD_VIGXDrawDone(int arg);
void HSD_VIGXSetDrawDone(int arg);
void HSD_VISetXFBWaitDone(int idx);
void HSD_VICopyXFBAsync(HSD_RenderPass rpass);
void HSD_VIDrawDoneXFB(int idx);
void HSD_VIWaitXFBFlush(void);
void HSD_VIWaitXFBFlushNoYield(void);
int HSD_VIGetXFBLastDrawDone(void);
static inline int HSD_VIGetNbXFB(void)
{
return HSD_VIData.nb_xfb;
}
static inline void* HSD_VIGetXFBPtr(int idx)
{
return HSD_VIData.xfb[idx].buffer;
}
static inline HSD_VIStatus* HSD_VIGetVIStatus(void)
{
return &HSD_VIData.current.vi;
}
static inline GXRenderModeObj* HSD_VIGetRenderMode(void)
{
return &HSD_VIData.current.vi.rmode;
}
#define HSD_DEFAULT_FIFO_SIZE (256 * 1024)
#define HSD_DEFAULT_XFB_MAX_NUM 2
#define HSD_DEFAULT_AUDIO_SIZE (512 * 1024)
typedef struct _HSD_MemReport {
u32 total;
u32 system;
u32 xfb;
u32 gxfifo;
u32 heap;
u8 x14_pad[0x2C - 0x14];
} HSD_MemReport;
typedef enum _HSD_InitParam {
HSD_INIT_FIFO_SIZE,
HSD_INIT_XFB_MAX_NUM,
HSD_INIT_HEAP_MAX_NUM,
HSD_INIT_AUDIO_HEAP_SIZE,
HSD_INIT_RENDER_MODE_OBJ
} HSD_InitParam;
void HSD_InitComponent(void);
void HSD_GXSetFifoObj(GXFifoObj* fifo);
static void HSD_DVDInit(void);
void** HSD_AllocateXFB(s32 nbuffer, GXRenderModeObj* rm);
GXFifoObj* HSD_AllocateFifo(u32 size);
static void HSD_GXInit(void);
static void HSD_OSInit(void);
OSHeapHandle HSD_GetHeap(void);
void HSD_SetHeap(OSHeapHandle handle);
void HSD_GetNextArena(void** lo, void** hi);
OSHeapHandle HSD_CreateMainHeap(void* lo, void* hi);
HSD_RenderPass HSD_GetCurrentRenderPass(void);
void HSD_StartRender(HSD_RenderPass pass);
void HSD_Init_803755A8(void);
static void HSD_ObjInit(void);
void HSD_ObjDumpStat(void);
bool HSD_SetInitParameter(HSD_InitParam param, ...);
#define _leak_h_
#define _mtx_h_
void HSD_MtxInverse(Mtx src, Mtx dest);
void HSD_MtxInverseConcat(Mtx inv, Mtx src, Mtx dest);
void HSD_MtxInverseTranspose(Mtx src, Mtx dest);
void HSD_MtxGetRotation(Mtx m, Vec3* vec);
void HSD_MtxGetTranslate(Mtx mat, Vec3* vec);
void HSD_MtxGetScale(Mtx arg0, Vec3* arg1);
void HSD_MkRotationMtx(Mtx arg0, Vec3* arg1);
void HSD_Mtx_8037A230(Mtx arg0, Quaternion* arg1);
void HSD_MtxSRT(Mtx m, Vec3* vec1, Vec3* vec2, Vec3* vec3, Vec3* vec4);
void HSD_MtxSRTQuat(Mtx arg0, Vec3* arg1, Quaternion* arg2, Vec3* arg3,
Vec3* arg4);
void HSD_MtxScaledAdd(Mtx arg0, Mtx arg1, Mtx arg2, f32 arg3);
void* HSD_VecAlloc(void);
void HSD_VecFree(void* arg0);
void* HSD_MtxAlloc(void);
void HSD_MtxFree(void* arg0);
HSD_ObjAllocData* HSD_VecGetAllocData(void);
void HSD_VecInitAllocData(void);
HSD_ObjAllocData* HSD_MtxGetAllocData(void);
void HSD_MtxInitAllocData(void);
static inline f32 fabsf_bitwise(f32 v)
{
*(u32*) &v &= ~0x80000000;
return v;
}
static inline void HSD_MtxColVec(MtxPtr mtx, int col, Vec3* vec)
{
vec->x = mtx[0][col];
vec->y = mtx[1][col];
vec->z = mtx[2][col];
}
static inline void HSD_MtxSetColVec(MtxPtr mtx, int col, Vec3* vec)
{
mtx[0][col] = vec->x;
mtx[1][col] = vec->y;
mtx[2][col] = vec->z;
}
static inline f32 HSD_MtxColMag(MtxPtr mtx, int col)
{
return sqrtf__Ff((mtx[0][col] * mtx[0][col]) +
(mtx[1][col] * mtx[1][col]) +
(mtx[2][col] * mtx[2][col]));
}
static inline f32 HSD_MtxColMagFloat(MtxPtr mtx, int col)
{
return sqrtf((mtx[0][col] * mtx[0][col]) + (mtx[1][col] * mtx[1][col]) +
(mtx[2][col] * mtx[2][col]));
}
#define GALE01_391580
/* 391580 */ M2C_UNK hsd_80391580();
/* 391664 */ M2C_UNK hsd_80391664();
/* 391A04 */ M2C_UNK hsd_80391A04();
/* 391AC8 */ M2C_UNK hsd_80391AC8();
/* 391E18 */ M2C_UNK hsd_80391E18();
/* 391F28 */ M2C_UNK hsd_80391F28();
/* 392194 */ M2C_UNK hsd_80392194();
/* 3921B8 */ M2C_UNK hsd_803921B8();
/* 3922FC */ M2C_UNK hsd_803922FC();
/* 392474 */ M2C_UNK hsd_80392474();
/* 392480 */ M2C_UNK fn_80392480();
/* 392528 */ M2C_UNK hsd_80392528();
/* 39254C */ M2C_UNK hsd_8039254C();
/* 392934 */ M2C_UNK fn_80392934();
/* 392A08 */ M2C_UNK fn_80392A08();
/* 392A3C */ M2C_UNK fn_80392A3C();
/* 392CCC */ s32 fn_80392CCC(s32);
/* 392CD8 */ M2C_UNK fn_80392CD8();
/* 392E2C */ M2C_UNK fn_80392E2C();
/* 392E80 */ void hsd_80392E80(void);
/* 3931A4 */ bool hsd_803931A4(s32);
/* 3932D0 */ M2C_UNK fn_803932D0();
/* 393328 */ M2C_UNK hsd_80393328();
/* 393440 */ M2C_UNK hsd_80393440();
/* 393840 */ M2C_UNK hsd_80393840();
/* 393844 */ M2C_UNK hsd_80393844();
/* 393A04 */ bool hsd_80393A04(void);
/* 393A54 */ void hsd_80393A54(int);
/* 393A5C */ M2C_UNK hsd_80393A5C();
/* 393C14 */ M2C_UNK fn_80393C14();
/* 393D2C */ M2C_UNK hsd_80393D2C();
/* 393DA0 */ M2C_UNK hsd_80393DA0();
/* 393E34 */ M2C_UNK hsd_80393E34();
/* 393E68 */ M2C_UNK hsd_80393E68();
/* 393EF4 */ M2C_UNK hsd_80393EF4();
/* 394068 */ M2C_UNK hsd_80394068();
/* 394128 */ M2C_UNK hsd_80394128();
/* 3941E8 */ M2C_UNK hsd_803941E8();
/* 394314 */ M2C_UNK hsd_80394314();
/* 394434 */ M2C_UNK hsd_80394434();
/* 394544 */ M2C_UNK hsd_80394544();
/* 394668 */ M2C_UNK hsd_80394668();
/* 394950 */ M2C_UNK hsd_80394950();
/* 394A48 */ M2C_UNK Exception_ReportStackTrace();
/* 394B18 */ M2C_UNK Exception_ReportCodeline();
/* 394DF4 */ M2C_UNK fn_80394DF4();
/* 394E8C */ M2C_UNK hsd_80394E8C();
/* 394F48 */ M2C_UNK hsd_80394F48();
/* 395550 */ M2C_UNK hsd_80395550();
/* 395644 */ M2C_UNK hsd_80395644();
/* 3956D8 */ M2C_UNK hsd_803956D8();
/* 3957C0 */ M2C_UNK hsd_803957C0();
/* 395970 */ M2C_UNK hsd_80395970();
/* 395A78 */ M2C_UNK hsd_80395A78();
/* 395D88 */ M2C_UNK hsd_80395D88();
/* 396130 */ M2C_UNK hsd_80396130();
/* 396188 */ M2C_UNK hsd_80396188();
/* 3962A8 */ M2C_UNK hsd_803962A8();
/* 3966A0 */ M2C_UNK hsd_803966A0();
/* 396868 */ M2C_UNK hsd_80396868();
/* 396884 */ M2C_UNK hsd_80396884();
/* 396A20 */ M2C_UNK hsd_80396A20();
/* 396C78 */ M2C_UNK hsd_80396C78();
/* 396E40 */ M2C_UNK hsd_80396E40();
/* 3970D8 */ M2C_UNK fn_803970D8();
/* 3970DC */ M2C_UNK fn_803970DC();
/* 3970E0 */ M2C_UNK fn_803970E0();
/* 3970E4 */ M2C_UNK fn_803970E4();
/* 3970E8 */ M2C_UNK fn_803970E8();
/* 3970EC */ M2C_UNK fn_803970EC();
/* 3970F0 */ M2C_UNK fn_803970F0();
/* 3970F4 */ M2C_UNK fn_803970F4();
/* 3970F8 */ M2C_UNK fn_803970F8();
/* 3970FC */ M2C_UNK fn_803970FC();
/* 397100 */ M2C_UNK fn_80397100();
/* 397104 */ M2C_UNK fn_80397104();
/* 397108 */ M2C_UNK fn_80397108();
/* 39710C */ M2C_UNK fn_8039710C();
/* 397110 */ M2C_UNK hsd_80397110();
/* 397374 */ M2C_UNK fn_80397374();
/* 397520 */ M2C_UNK hsd_80397520();
/* 3975D4 */ M2C_UNK hsd_803975D4();
/* 397814 */ M2C_UNK fn_80397814();
/* 397DA4 */ M2C_UNK hsd_80397DA4();
/* 397DF4 */ void Exception_StoreDebugLevel(int);
/* 397DFC */ void hsd_80397DFC(u32 arg0);
/* 397E0C */ M2C_UNK baselib_mfspr();
/* 3982E4 */ M2C_UNK fn_803982E4();
/* 398310 */ M2C_UNK hsd_80398310();
/* 3983A4 */ M2C_UNK hsd_803983A4();
/* 3984F4 */ void psInitDataBankLoad(int bank, int* cmdBank, int* texBank,
u32* ref, int* formBank);
/* 398614 */ void psInitDataBankLocate(HSD_Archive* cmdBank,
HSD_Archive* texBank, int* formBank);
/* 3989A0 */ void psInitDataBankRelocate(int* cmdBank, int* texBank,
int* formBank, int* newCmdBank,
int* newTexBank, int* newFormBank);
/* 398A08 */ M2C_UNK hsd_80398A08();
/* 398C04 */ M2C_UNK hsd_80398C04();
/* 398F0C */ M2C_UNK hsd_80398F0C();
/* 398F8C */ M2C_UNK hsd_80398F8C();
/* 3991D8 */ M2C_UNK hsd_803991D8();
/* 39930C */ M2C_UNK hsd_8039930C();
/* 39CEAC */ M2C_UNK hsd_8039CEAC();
/* 39CF4C */ M2C_UNK hsd_8039CF4C();
/* 39D048 */ M2C_UNK hsd_8039D048();
/* 39D0A0 */ M2C_UNK hsd_8039D0A0();
/* 39D1E4 */ void hsd_8039D1E4(M2C_UNK arg0, int arg1);
/* 39D1EC */ M2C_UNK hsd_8039D1EC();
/* 39D214 */ M2C_UNK hsd_8039D214();
/* 39D354 */ M2C_UNK hsd_8039D354();
/* 39D3AC */ M2C_UNK hsd_8039D3AC();
/* 39D4DC */ void hsd_8039D4DC(UnkGeneratorStruct*);
/* 39D580 */ M2C_UNK hsd_8039D580();
/* 39D5DC */ void hsd_8039D5DC(s32);
/* 39D688 */ M2C_UNK hsd_8039D688();
/* 39D71C */ M2C_UNK hsd_8039D71C();
/* 39D9C8 */ M2C_UNK hsd_8039D9C8();
/* 39DAD4 */ M2C_UNK hsd_8039DAD4();
/* 39EE24 */ M2C_UNK hsd_8039EE24();
/* 39EFAC */ UnkGeneratorStruct* hsd_8039EFAC(s32, s32, s32, HSD_JObj*);
/* 39F05C */ UnkGeneratorStruct* hsd_8039F05C(s8, s8, s32);
/* 39F6CC */ void hsd_8039F6CC(s32, s32, s32, HSD_JObj*);
/* 4D78D0 */ extern u32 hsd_804D78D0;
/* 4D78D4 */ extern u32 hsd_804D78D4;
/* 4D78D8 */ extern u16 hsd_804D78D8;
/* 4D78DE */ extern u16 hsd_804D78DE;
/* 4D78E0 */ extern u16 hsd_804D78E0;
/* 4D78E8 */ extern u32 hsd_804D78E8;
/* 4D78F0 */ extern u32 hsd_804D78F0;
#define __GALE01_391580
/* 4D7850 */ static int hsd_804D7850;
/* 4D7894 */ static int hsd_804D7894;
/* 4D78C0 */ static int hsd_804D78C0;
/* 4D78C8 */ static int hsd_804D78C8;
/* 4D78CC */ static u32 hsd_804D78CC;
#define _hsd_perf_h_
typedef struct _HSD_PerfStat {
f32 cpu_time;
f32 draw_time;
f32 total_time;
u32 nb_mtx_load;
u32 env_blend[32];
} HSD_PerfStat;
extern HSD_PerfStat HSD_PerfCurrentStat;
void HSD_PerfInitStat(void);
void HSD_PerfSetStartTime(void);
void HSD_PerfSetCPUTime(void);
void HSD_PerfSetDrawTime(void);
void HSD_PerfSetTotalTime(void);
void HSD_PerfCountEnvelopeBlending(s32 n);
static inline void HSD_PerfCountMtxLoad(void)
{
HSD_PerfCurrentStat.nb_mtx_load += 1;
}
#define SYSDOLPHIN_BASELIB_PSAPPSRT_H
#define PSAPPSRT_UNK_B09 (1 << 9)
#define PSAPPSRT_UNK_B10 (1 << 10)
#define PSAPPSRT_UNK_B11 (1 << 11)
/// MexTK: GeneratorAppSRT
struct UnkGeneratorMember {
M2C_UNK x0;
UnkGeneratorStruct* x4;
S32Vec3 x8;
u8 x14_fill[0x10];
f32 x24;
f32 x28;
f32 x2C;
u8 x30_fill[0x72];
s8 xA2;
};
/// @remarks MexTK: Particle
struct UnkGeneratorStruct {
UnkGeneratorStruct* next;
u8 x4_fill[0xC];
HSD_JObj* x10_jobj;
u16 x14_fill;
u16 x16_flags;
u8 x18_fill[0x24 - 0x18];
f32 x24, x28, x2C;
u8 x30_fill[0x54 - 0x30];
UnkGeneratorMember* x54;
};
/* 003A0D18 */ bool psInitAppSRT(int, int);
/* 003A0D58 */ s32 psAddGeneratorAppSRT(s32, u16);
/* 003A0E3C */ void HSD_PSAppSrt_803A425C(M2C_UNK, s32);
u16 psRemoveGeneratorSRT(M2C_UNK);
u16 psRemoveParticleAppSRT(M2C_UNK);
UnkGeneratorMember* psAddGeneratorAppSRT_begin(UnkGeneratorStruct*, s32);
u16 psAttachParticleAppSRT(M2C_UNK, M2C_UNK);
#define SYSDOLPHIN_BASELIB_PSDISP_H
#define SYSDOLPHIN_BASELIB_PSSTRUCTS_H
struct _psAppSRT;
struct HSD_Fog;
typedef struct _psAppSRT HSD_psAppSRT;
struct _particle;
typedef struct _particle HSD_Particle;
struct _generator;
typedef struct _generator HSD_Generator;
enum HSD_ParticleKind {
Tornado = 1 << 2,
TexEdge = 1 << 3,
ComTLUT = 1 << 4,
MirrorS = 1 << 5,
MirrorT = 1 << 6,
PrimEnv = 1 << 7,
TexInterpNear = 1 << 9,
DispTexture = 1 << 10,
TexFlipS = 1 << 18,
TexFlipT = 1 << 19,
Trail = 1 << 20,
DirVec = 1 << 21,
DispFog = 1 << 24,
NoZComp = 1 << 28,
DispPoint = 1 << 30,
DispLighting = 1 << 31
};
/* size: 0x1C */
typedef struct _HSD_PSTexGroup {
u32 num; /* 0x0 */
u32 fmt; /* 0x4 */
u32 tlutfmt; /* 0x8 */
u32 width; /* 0xC */
u32 height; /* 0x10 */
u16 palnum; /* 0x14 */
u16 palflag; /* 0x16 */
u8* texTable[1]; /* 0x18 */
} HSD_PSTexGroup;
/* size: 0x8 */
typedef struct _HSD_PSFormGroup {
u32 num; /* 0x0 */
u8* formTable[1]; /* 0x4 */
} HSD_PSFormGroup;
/* size: 0x40 */
typedef struct _HSD_PSCmdList {
u16 type; /* 0x0 */
u16 texGroup; /* 0x2 */
u16 genLife; /* 0x4 */
u16 life; /* 0x6 */
u32 kind; /* 0x8 */
float grav; /* 0xC */
float fric; /* 0x10 */
float vx; /* 0x14 */
float vy; /* 0x18 */
float vz; /* 0x1C */
float radius; /* 0x20 */
float angle; /* 0x24 */
float random; /* 0x28 */
float size; /* 0x2C */
float param1; /* 0x30 */
float param2; /* 0x34 */
float param3; /* 0x38 */
u8 cmdList[1]; /* 0x3C */
} HSD_PSCmdList;
struct _particle;
struct _psAppSRT {
struct _psAppSRT* next; /* 0x0 */
struct _generator* gp; /* 0x4 */
Vec3 tra; /* 0x8 */
Quaternion rot; /* 0x14 */
Vec3 sca; /* 0x24 */
u8 status; /* 0x30 */
u8 frameNum; /* 0x31 */
u16 usedCount; /* 0x32 */
Mtx mmtx; /* 0x34 */
float ssx; /* 0x64 */
float ssy; /* 0x68 */
void (*freefunc)(struct _psAppSRT* appSrt); /* 0x6C */
u16 idnum; /* 0x70 */
u8 billboard; /* 0x72 */
u8 dummy; /* 0x73 */
};
/* size: 0x94 */
struct _particle {
HSD_Particle* next; /* 0x0 */
u32 kind; /* 0x4 */
u8 bank; /* 0x8 */
u8 texGroup; /* 0x9 */
u8 poseNum; /* 0xA */
u8 palNum; /* 0xB */
u16 sizeCount;
u16 primColCount; /* 0xE */
u16 envColCount; /* 0x10 */
GXColor primCol; /* 0x12 */
GXColor envCol; /* 0x16 */
u16 cmdWait;
u8 loopCount;
u8 linkNo; /* 0x1D */
u16 idnum;
u8* cmdList;
u16 cmdPtr;
u16 cmdMarkPtr;
u16 cmdLoopPtr;
u16 life;
float vx; /* 0x2C */
float vy; /* 0x30 */
float vz; /* 0x34 */
float grav; /* 0x38 */
float fric; /* 0x3C */
float x; /* 0x40 */
float y; /* 0x44 */
float z; /* 0x48 */
float size; /* 0x4C */
float rotate; /* 0x50 */
u16 aCmpCount; /* 0x54 */
u8 aCmpMode; /* 0x56 */
u8 aCmpParam1; /* 0x57 */
u8 aCmpParam2; /* 0x58 */
u8 pJObjOfs; /* 0x59 */
u16 matColCount; /* 0x5A */
u16 ambColCount; /* 0x5C */
u16 rotateCount;
float sizeTarget;
float rotateTarget;
u16 primColRemain; /* 0x68 */
u16 envColRemain; /* 0x6A */
GXColor primColTarget; /* 0x6C */
GXColor envColTarget; /* 0x70 */
u16 matColRemain; /* 0x74 */
u16 ambColRemain; /* 0x76 */
u16 aCmpRemain; /* 0x78 */
u8 aCmpParam1Target; /* 0x7A */
u8 aCmpParam2Target; /* 0x7B */
u8 matRGB; /* 0x7C */
u8 matA; /* 0x7D */
u8 ambRGB; /* 0x7E */
u8 ambA; /* 0x7F */
u8 matRGBTarget; /* 0x80 */
u8 matATarget; /* 0x81 */
u8 ambRGBTarget; /* 0x82 */
u8 ambATarget; /* 0x83 */
float trail; /* 0x84 */
struct _generator* gen; /* 0x88 */
struct _psAppSRT* appsrt;
float* userdata;
int (*callback)(HSD_Particle* part);
};
/* size: 0xC */
typedef struct _PSUserFunc {
int (*hookCreate)(HSD_Particle* part); /* 0x0 */
int (*hookDelete)(HSD_Particle* part); /* 0x4 */
int (*setUserData)(HSD_Particle* part, u8 unknown1,
float unknown2); /* 0x8 */
} HSD_PSUserFunc;
typedef struct _auxDisc {
f32 minAngle;
f32 maxAngle;
} auxDisc;
typedef struct _auxLine {
f32 x2;
f32 y2;
f32 z2;
} auxLine;
typedef struct _auxTornado {
f32 vel;
} auxTornado;
typedef struct _auxRect {
f32 x;
f32 y;
f32 z;
f32 xx;
f32 xy;
f32 xz;
f32 yx;
f32 yy;
f32 yz;
f32 zx;
f32 zy;
f32 zz;
u16 flag;
} auxRect;
typedef struct _auxCone {
f32 minAngle;
f32 maxAngle;
f32 height;
} auxCone;
typedef struct _auxSphere {
f32 speed;
f32 latMid;
f32 latRange;
f32 lonMid;
f32 lonRange;
} auxSphere;
typedef struct _generator {
HSD_Generator* next; // 0x0
u32 kind; // 0x4
f32 random; // 0x8
f32 count; // 0xC
HSD_JObj* jobj; // 0x10
u16 genLife; // 0x14
u16 type; // 0x16
u8 bank; // 0x18
u8 linkNo; // 0x19
u8 texGroup; // x1A
u8 dummy; // 0x1B
u16 idnum; // 0x1C
u16 life; // 0x1E
u8* cmdList; // 0x20
f32 x; // 0x24
f32 y; // 0x28
f32 z; // 0x2C
f32 vx; // 0x30
f32 vy; // 0x34
f32 vz; // 0x38
f32 grav; // 0x3C
f32 fric; // 0x40
f32 size; // 0x44
f32 radius; // 0x48
f32 angle; // 0x4C
u32 numChild; // 0x50
HSD_psAppSRT* appsrt; // 0x54
HSD_PSUserFunc* userfunc; // 0x58
int (*callback)(HSD_Generator* part); // 0x5C
union {
auxDisc disc;
auxLine line;
auxTornado tornado;
auxRect rect;
auxCone cone;
auxSphere sphere;
} aux; // 0z60
} _generator;
extern u32* ptclref[64];
extern int psNumTexGroup[64];
extern HSD_PSTexGroup** psTexGroupArray[64];
extern HSD_PSFormGroup** psFormGroupArray[64];
extern int psNumCmdList[64];
extern HSD_PSCmdList** psCmdListArray[64];
extern u16 numActiveParticles;
extern u16 numPeakParticles;
extern int (**psCallback)(HSD_Particle* part);
#define PS_TEXDIRECTION
extern int texc[4][4];
extern int td;
void psSetFog(struct HSD_Fog* fog);
void psRemoveFog(void);
static inline void setBlendMode(int blendmode);
static inline void setupChanCtrl(struct _particle* pp);
static inline void setupChanReg(struct _particle* pp);
static inline void getClrTrail(struct _particle* pp, GXColor* col);
static inline void setupTevReg(struct _particle* pp);
static inline void psSetCurrentMtx(GXPosNrmMtx idx);
static inline struct _particle* psDispSubPoint(struct _particle* pp);
static inline struct _particle* psDispSubPointTrail(struct _particle* pp);
static inline void psDispSubMakePolygon(struct _particle* pp, u8* texform,
float x, float y, float z, float ppvx,
float ppvy, float ppvz, float x0,
float y0, float z0, float x1, float y1,
float z1);
static inline void psDispSub(struct _particle* pp, u8* texform);
void psInitDataBank(int bank, int* cmdBank, int* texBank, u32* ref,
int* formBank);
void psInitParticle(int num);
void psRemoveParticle(void);
HSD_Particle* psGenerateParticle0(HSD_Particle* p, int linkNo, int bank,
u32 kind, u16 texGroup, u8* list, int life,
float x, float y, float z, float vx,
float vy, float vz, float size, float grav,
float fric, int palflag,
struct _generator* gp, int flgInterpret);
HSD_Particle* psGenerateParticleID0(HSD_Particle* p, int linkNo, int bank,
int id, int flgInterpret);
HSD_Particle* psGenerateParticle(int linkNo, int bank, u32 kind, u16 texGroup,
u8* list, int life, float x, float y, float z,
float vx, float vy, float vz, float size,
float grav, float fric, int palflag,
struct _generator* gp);
HSD_Particle* psGenerateParticleIDPV(int linkNo, int bank, int id, float px,
float py, float pz, float vx, float vy,
float vz);
HSD_Particle* psGenerateParticleID(int linkNo, int bank, int id);
HSD_Particle* psGenerateParticleIDN(int linkNo, int bank, int id);
void psKillParticle(HSD_Particle* pp);
void psKillAllParticle(void);
void psSetPointJObj(int no, HSD_JObj* jobj);
void psSetPointJObjNodup(HSD_JObj* jobj, int no);
void psClearPointJObj(void);
void psDeletePntJObjwithParticle(HSD_Particle* pp);
void psKillFamily(u16 idnum, int linkNo);
void psKillGeneratorChild(struct _generator* gp);
void psAddOffsetAll(float xofs, float yofs, float zofs);
void psPauseFamily(u16 idnum, int linkNo);
void psRestartFamily(u16 idnum, int linkNo);
void psSetCallback(int (**callback)(HSD_Particle* part));
void psSetUserFunc(struct _generator* gp, HSD_PSUserFunc* userfunc);
static inline void psRemoveBillboardCamera(void);
void psDispParticles(s32, u32);
M2C_UNK particleSort(s32, u8, M2C_UNK*, M2C_UNK*);
void setVtxDesc(s32);
#define GALE01_3A3920
/* 3A3920 */ void psSetupTevCommon(void);
/* 3A3A50 */ void psSetupTevInvalidState(void);
/* 3A3A5C */ void psSetupTev(M2C_UNK);
#define INCLUDE_SYSDOLPHIN_BASELIB_QUATLIB_H
void EulerToQuat(Vec3*, Quaternion*);
void HSD_QuatLib_8037EF28(Quaternion*, Quaternion*, Quaternion*, f32);
#define _robj_h_
#define ROBJ_TYPE_MASK 0x70000000
#define REFTYPE_EXP 0x00000000
#define REFTYPE_JOBJ 0x10000000
#define REFTYPE_LIMIT 0x20000000
#define REFTYPE_BYTECODE 0x30000000
#define REFTYPE_IKHINT 0x40000000
struct HSD_Rvalue {
HSD_Rvalue* next;
u32 flags;
HSD_JObj* jobj;
};
struct HSD_RvalueList {
u32 flags;
HSD_Joint* joint;
};
struct HSD_IKHint {
f32 bone_length;
f32 rotate_x;
};
struct HSD_IKHintDesc {
f32 bone_length;
f32 rotate_x;
};
struct HSD_Exp {
union {
f32 (*func)(void);
u8* bytecode;
} expr;
HSD_Rvalue* rvalue;
u32 nb_args;
u8 is_bytecode;
};
struct HSD_ExpDesc {
f32 (*func)(void);
HSD_RvalueList* rvalue;
};
struct HSD_ByteCodeExpDesc {
u8* bytecode;
HSD_RvalueList* rvalue;
};
struct HSD_RObj {
HSD_RObj* next;
u32 flags;
union {
HSD_JObj* jobj;
HSD_Exp exp;
f32 limit;
HSD_IKHint ik_hint;
} u;
HSD_AObj* aobj;
};
struct HSD_RObjDesc {
HSD_RObjDesc* next;
u32 flags; // 0x04
union {
u32 i;
HSD_ExpDesc* exp;
HSD_ByteCodeExpDesc* bcexp;
HSD_IKHintDesc* ik_hint;
HSD_Joint* joint;
f32 limit;
} u;
};
struct HSD_RObjAnimJoint {
HSD_RObjAnimJoint* next;
HSD_AObjDesc* aobjdesc;
};
void _HSD_RObjForgetMemory(void* low, void* high);
void HSD_RObjInitAllocData(void);
HSD_ObjAllocData* HSD_RObjGetAllocData(void);
HSD_ObjAllocData* HSD_RvalueObjGetAllocData(void);
HSD_RObj* HSD_RObjAlloc(void);
void HSD_RObjFree(HSD_RObj* robj);
void HSD_RObjSetFlags(HSD_RObj* robj, u32 flags);
HSD_RObj* HSD_RObjGetByType(HSD_RObj* robj, u32 type, u32 subtype);
void HSD_RObjAnimAll(HSD_RObj* robj);
void HSD_RObjRemoveAnimAllByFlags(HSD_RObj* robj, u32 flags);
void HSD_RObjRemoveAnimAll(HSD_RObj* robj);
void HSD_RObjReqAnimAllByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
void HSD_RObjReqAnimAll(HSD_RObj* robj, f32 startframe);
void HSD_RObjAddAnimAll(HSD_RObj* robj, HSD_RObjAnimJoint* anim);
void HSD_RObjRemove(HSD_RObj*);
void HSD_RObjRemoveAll(HSD_RObj*);
void HSD_RObjResolveRefs(HSD_RObj*, HSD_RObjDesc*);
void HSD_RObjResolveRefsAll(HSD_RObj*, HSD_RObjDesc*);
HSD_RObj* HSD_RObjLoadDesc(HSD_RObjDesc*);
void HSD_RObjSetConstraintObj(HSD_RObj* robj, void* obj);
void HSD_RObjUpdateAll(HSD_RObj* robj, void* obj, HSD_ObjUpdateFunc);
int HSD_RObjGetGlobalPosition(HSD_RObj* robj, int, Vec3* translate);
void HSD_RObjRemoveAnimByFlags(HSD_RObj* robj, u32 flags);
void HSD_RObjReqAnimByFlags(HSD_RObj* robj, f32 startframe, u32 flags);
void HSD_RObjAddAnim(HSD_RObj* robj, HSD_RObjAnimJoint* anim);
void HSD_RObjAnim(HSD_RObj* robj);
HSD_Rvalue* HSD_RvalueAlloc(void);
void HSD_RvalueRemove(HSD_Rvalue* rvalue);
void HSD_RvalueRemoveAll(HSD_Rvalue* rvalue);
void HSD_RvalueResolveRefs(HSD_Rvalue* rvalue, HSD_RvalueList* list);
void HSD_RvalueResolveRefsAll(HSD_Rvalue* rvalue, HSD_RvalueList* list);
static inline bool RObjHasFlags(HSD_RObj* robj)
{
if ((robj->flags & 0x70000000) == 0) {
return 1;
}
return 0;
}
static inline bool RObjHasFlags2(HSD_RObj* robj)
{
if ((robj->flags & 0x80000000) != 0) {
return 1;
}
return 0;
}
static inline bool RObjHasLimitReftype(HSD_RObj* robj)
{
bool has_flags;
u32 flags = (robj->flags & 0x70000000);
if (flags == 0x20000000) {
has_flags = 1;
} else {
has_flags = 0;
}
return has_flags;
}
#define _shadow_h_
struct HSD_Shadow {
HSD_SList* objects; // 0x0
HSD_CObj* camera; // 0x4
HSD_TObj* texture; // 0x8
f32 scaleS; // 0xC
f32 scaleT; // 0x10
f32 transS; // 0x14
f32 transT; // 0x18
bool active; // 0x1C
u8 intensity; // 0x20
void* user_data; // 0x24
};
struct HSD_ViewingRect {
Vec3 origin;
Vec3 up_v;
Vec3 right_v;
Vec3 eye_v;
Vec3 eye_vn;
f32 distance;
f32 top;
f32 bottom;
f32 left;
f32 right;
int perspective;
};
HSD_ObjAllocData* HSD_ShadowGetAllocData(void);
void HSD_ShadowInitAllocData(void);
HSD_Shadow* HSD_ShadowAlloc(void);
void HSD_ShadowAddObject(HSD_Shadow* shadow, HSD_JObj* jobj);
void HSD_ShadowDeleteObject(HSD_Shadow* shadow, HSD_JObj* jobj);
void HSD_ShadowStartRender(HSD_Shadow* shadow);
void HSD_ShadowEndRender(HSD_Shadow* shadow);
void HSD_ShadowSetActive(HSD_Shadow* shadow, int active);
HSD_TObj* makeShadowTObj(void);
void HSD_ShadowRemove(HSD_Shadow* shadow);
void HSD_ShadowInit(HSD_Shadow* shadow);
void HSD_ShadowSetSize(HSD_Shadow* shadow, u16 width, u16 height);
void HSD_ShadowSetViewingRect(HSD_Shadow* shadow, float top, float bottom,
float left, float right);
void HSD_ViewingRectInit(HSD_ViewingRect* rect, Vec3* position, Vec3* interest,
Vec3* upvector, int perspective);
int HSD_ViewingRectCheck(HSD_ViewingRect* rect);
void HSD_ViewingRectAddRect(HSD_ViewingRect* rect, Vec3* position, float top,
float bottom, float left, float right);
#define SYSDOLPHIN_BASELIB_SOBJLIB_H
#define SYSDOLPHIN_BASELIB_SPLINE_H
struct HSD_Spline {
u8 x0 [0];
};
f32 splGetHelmite(f32, f32, f32, f32, f32, f32);
void splArcLengthPoint(Vec3*, HSD_Spline*, f32);
void splGetSplinePoint(s32, s32);
#define SYSDOLPHIN_BASELIB_S
#define HSD_STATE_ALL -1
#define HSD_STATE_NONE 0
#define HSD_STATE_PRIMITIVE 0x1
#define HSD_STATE_VTX_ATTR 0x2
#define HSD_STATE_COLOR_CHANNEL 0x4
#define HSD_STATE_TEV_STAGE 0x8
#define HSD_STATE_TEV_REGISTER 0x10
#define HSD_STATE_TEX_COORD_GEN 0x20
#define HSD_STATE_RENDER_MODE 0x40
typedef struct HSD_Chan {
struct HSD_Chan* next;
GXChannelID chan;
u32 flags;
GXColor amb_color;
GXColor mat_color;
u8 enable;
GXColorSrc amb_src;
GXColorSrc mat_src;
GXLightID light_mask;
GXDiffuseFn diff_fn;
GXAttnFn attn_fn;
HSD_AObj* aobj;
} HSD_Chan;
void HSD_SetupChannelMode(u32 arg0);
void HSD_SetupPEMode(u32 flags, HSD_PEDesc* pe);
void HSD_SetupRenderModeWithCustomPE(u32 rendermode, HSD_PEDesc* pe);
void HSD_SetupRenderMode(u32);
void HSD_SetMaterialColor(GXColor ambient, GXColor diffuse, GXColor specular,
f32 alpha);
void HSD_SetMaterialShininess(f32 shininess);
void HSD_StateSetLineWidth(u8 width, int tex_offsets);
void HSD_StateSetCullMode(int mode);
void HSD_StateSetBlendMode(int type, int src_factor, int dst_factor, int op);
void HSD_StateSetZMode(int, int, int);
void HSD_StateSetPointSize(u8, int);
void HSD_StateSetAlphaCompare(int, u8, int, int, u8);
void HSD_StateSetColorUpdate(int);
void HSD_StateSetAlphaUpdate(int);
void HSD_StateSetDstAlpha(int, u8);
void HSD_StateSetZCompLoc(int);
void HSD_StateSetDither(int);
void _HSD_StateInvalidatePrimitive(void);
void _HSD_StateInvalidateVtxAttr(void);
void _HSD_StateInvalidateRenderMode(void);
void HSD_StateInvalidate(int mask);
#define GALE01_388330
/* 388330 */ M2C_UNK HSD_AudioMalloc();
/* 38838C */ M2C_UNK HSD_AudioFree();
/* 3883B4 */ M2C_UNK HSD_SynthSFXSampleLoadCallback();
/* 3887DC */ M2C_UNK HSD_SynthSFXHeaderLoadCallback();
/* 38893C */ M2C_UNK HSD_SynthSFXLoadNewProc();
/* 3889B8 */ M2C_UNK HSD_SynthSFXLoad();
/* 388B0C */ M2C_UNK HSD_Synth_80388B0C();
/* 388B50 */ s32 HSD_Synth_80388B50(void);
/* 388B60 */ M2C_UNK HSD_Synth_80388B60();
/* 388CB0 */ M2C_UNK HSD_Synth_80388CB0();
/* 388D30 */ M2C_UNK HSD_Synth_80388D30();
/* 388DC8 */ M2C_UNK HSD_Synth_80388DC8();
/* 388E08 */ M2C_UNK HSD_Synth_80388E08();
/* 388EB4 */ M2C_UNK HSD_SynthSFXGroupDataReaddressCallback();
/* 388EFC */ M2C_UNK HSD_SynthSFXGroupDataReaddress();
/* 388FF0 */ M2C_UNK HSD_SynthSFXBankDeflag();
/* 389084 */ M2C_UNK HSD_SynthSFXBankDeflagSync();
/* 389094 */ M2C_UNK HSD_Synth_80389094();
/* 3890B4 */ M2C_UNK HSD_Synth_803890B4();
/* 38912C */ M2C_UNK HSD_Synth_8038912C();
/* 3891D0 */ M2C_UNK dropcallback();
/* 389334 */ M2C_UNK HSD_Synth_80389334();
/* 3896F0 */ M2C_UNK HSD_Synth_803896F0();
/* 38987C */ M2C_UNK HSD_SynthSFXKeyOff();
/* 3899B0 */ M2C_UNK HSD_SynthSFXStopRange();
/* 389A50 */ M2C_UNK HSD_SynthSFXPause();
/* 389AD0 */ M2C_UNK HSD_SynthSFXResume();
/* 389B50 */ M2C_UNK HSD_SynthSFXCheck();
/* 389BD8 */ M2C_UNK HSD_SynthSFXSetVolumeFade();
/* 389CC4 */ M2C_UNK HSD_Synth_80389CC4();
/* 389D24 */ M2C_UNK HSD_SynthSFXSetMix();
/* 389D8C */ M2C_UNK HSD_SynthSFXUpdatePitch();
/* 389E2C */ M2C_UNK HSD_Synth_80389E2C();
/* 389F4C */ M2C_UNK HSD_Synth_80389F4C();
/* 38A000 */ M2C_UNK HSD_Synth_8038A000();
/* 38A5A4 */ M2C_UNK HSD_SynthSFXUpdateVolume();
/* 38A600 */ M2C_UNK HSD_SynthSFXUpdateMix();
/* 38AAB0 */ M2C_UNK HSD_SynthSFXUpdateAllVolume();
/* 38ABBC */ void HSD_SynthSFXSetDriverInactivatedCallback(M2C_UNK arg0);
/* 38ABC4 */ void HSD_SynthSFXSetDriverMasterClockCallback(M2C_UNK arg0);
/* 38ABCC */ void HSD_SynthSFXSetDriverPauseCallback(M2C_UNK arg0);
/* 38ABD4 */ M2C_UNK HSD_SynthCallback();
/* 38AD60 */ M2C_UNK fn_8038AD60();
/* 38AD74 */ M2C_UNK HSD_Synth_8038AD74();
/* 38ADD0 */ M2C_UNK HSD_Synth_8038ADD0();
/* 38B120 */ M2C_UNK HSD_Synth_8038B120();
/* 38B380 */ M2C_UNK HSD_SynthPStreamFirstHakoHeaderCallback();
/* 38B3E0 */ M2C_UNK HSD_SynthPStreamHeaderCallback();
/* 38B5AC */ M2C_UNK HSD_Synth_8038B5AC();
/* 38B81C */ M2C_UNK HSD_SynthStreamSetVolume();
/* 38B938 */ M2C_UNK HSD_SynthInit();
#define __GALE01_388330
/* 4D772C */ static s32 HSD_Synth_804D772C;
/* 4D7738 */ static s32 HSD_Synth_804D7738;
/* 4D773C */ static volatile int HSD_Synth_804D773C;
/* 4D7740 */ static M2C_UNK driverInactivatedCallback;
/* 4D7744 */ static M2C_UNK driverMasterClockCallback;
/* 4D7748 */ static M2C_UNK driverPauseCallback;
/* 4D7768 */ static s32 HSD_Synth_804D7768;
/* 4D776C */ static s32 HSD_Synth_804D776C;
/* 4D7778 */ static s8 HSD_Synth_804D7778;
#define _tev_h_
void HSD_RenderInitAllocData(void);
HSD_ObjAllocData* HSD_RenderGetAllocData(void);
HSD_ObjAllocData* HSD_TevRegGetAllocData(void);
HSD_ObjAllocData* HSD_ChanGetAllocData(void);
void HSD_SetupChannel(HSD_Chan*);
void HSD_StateSetNumChans(int num);
void HSD_SetupChannelAll(HSD_Chan*);
void HSD_StateRegisterTexGen(int);
void HSD_StateSetNumTexGens(void);
void HSD_StateInitTev(void);
int HSD_StateGetNumTevStages(void);
int HSD_StateAssignTev(void);
void HSD_StateSetNumTevStages(void);
void HSD_SetupTevStage(HSD_TevDesc*);
void HSD_SetupTevStageAll(HSD_TevDesc*);
int HSD_Channel2Num(int chan);
int HSD_Index2TevStage(int idx);
int HSD_TevStage2Index(int stage);
int HSD_TevStage2Num(int stage);
void HSD_SetTevRegAll(void);
void ChanUpdateFunc(HSD_Chan*, int, f32*);
void _HSD_StateInvalidateColorChannel(void);
void _HSD_StateInvalidateTevStage(void);
void _HSD_StateInvalidateTevRegister(void);
void _HSD_StateInvalidateTexCoordGen(void);
#define SYSDOLPHIN_BASELIB_TEXPDAG_H
typedef struct HSD_TExpDag {
struct _HSD_TETev* tev;
u8 idx;
u8 nb_dep;
u8 nb_ref;
u8 dist;
HSD_TExpDag* depend[8];
} HSD_TExpDag;
/* 385798 */ M2C_UNK assign_reg();
/* 385944 */ M2C_UNK order_dag();
/* 385B8C */ M2C_UNK CalcDistance();
/* 385C60 */ int HSD_TExpMakeDag(HSD_TExp* root, HSD_TExpDag* list);
/* 386100 */ M2C_UNK make_full_dependancy_mtx();
/* 386230 */ M2C_UNK fn_80386230();
/* 386234 */ void HSD_TExpSchedule(int num, HSD_TExpDag* list,
HSD_TExp** result, HSD_TExpRes* resource);
/* 386470 */ M2C_UNK SimplifySrc();
/* 38687C */ M2C_UNK SimplifyThis();
/* 3870E4 */ M2C_UNK SimplifyByMerge();
/* 387B1C */ int HSD_TExpSimplify(HSD_TExp* texp);
/* 387BA4 */ int HSD_TExpSimplify2(HSD_TExp* texp);
#define _UTIL_H_
// functions
void HSD_MulColor(GXColor* arg0, GXColor* arg1, GXColor* dest);
u32 HSD_GetNbBits(u32 arg0);
s32 HSD_Index2PosNrmMtx(u32 arg0);
// variables
extern float HSD_identityMtx[];
#define FLT_MIN 1.17549435e-38f
static inline int vec_normalize_check(Vec3* src, Vec3* dst)
{
if (!src || !dst) {
return -1;
}
if (fabsf_bitwise(src->x) <= 1.17549435e-38f && fabsf_bitwise(src->y) <= 1.17549435e-38f &&
fabsf_bitwise(src->z) <= 1.17549435e-38f)
{
return -1;
}
PSVECNormalize(src, dst);
return 0;
}
static inline f32 atan2f_check(s8 y, s8 x)
{
if (fabs(x) == 0.0) {
return y >= 0 ? 1.5707963267948966 : -1.5707963267948966;
} else {
return atan2f(y, x);
}
}
#define SYSDOLPHIN_BASELIB_WOBJ_H
struct HSD_WObj {
HSD_Obj parent;
u32 flags;
Vec3 pos;
HSD_AObj* aobj;
HSD_RObj* robj;
};
struct HSD_WObjDesc {
char* class_name;
Vec3 pos;
HSD_RObjDesc* robjdesc;
};
struct HSD_WObjInfo {
HSD_ObjInfo parent;
int (*load)(HSD_WObj* wobj, HSD_WObjDesc* desc);
};
struct HSD_WObjAnim {
HSD_AObjDesc* aobjdesc;
HSD_RObjAnimJoint* robjanim;
};
extern HSD_WObjInfo hsdWObj;
#define HSD_WOBJ_INFO(i) ((HSD_WObjInfo*) (i))
#define HSD_WOBJ_METHOD(o) HSD_WOBJ_INFO(HSD_OBJECT_METHOD(o))
static inline void HSD_WObjUnref(HSD_WObj* wobj)
{
if (wobj == ((void*) 0)) {
return;
}
if (ref_DEC(wobj) != 0) {
if (wobj != ((void*) 0)) {
(wobj->parent.parent.class_info)->release((HSD_Class*) wobj);
(wobj->parent.parent.class_info)->destroy((HSD_Class*) wobj);
}
}
}
static inline void HSD_WObjClearFlags(HSD_WObj* wobj, u32 flags)
{
wobj->flags &= ~flags;
}
void HSD_WObjRemoveAnim(HSD_WObj* wobj);
void HSD_WObjReqAnim(HSD_WObj* wobj, f32 frame);
void HSD_WObjAddAnim(HSD_WObj* wobj, HSD_WObjAnim* anim);
void HSD_WObjInterpretAnim(HSD_WObj* wobj);
void HSD_WObjInit(HSD_WObj* wobj, HSD_WObjDesc* desc);
HSD_WObj* HSD_WObjLoadDesc(HSD_WObjDesc* desc);
void WObjSetupPosition(HSD_WObj* wobj);
void HSD_WObjSetPosition(HSD_WObj*, Vec3*);
void HSD_WObjSetPositionX(HSD_WObj*, f32);
void HSD_WObjSetPositionY(HSD_WObj*, f32);
void HSD_WObjSetPositionZ(HSD_WObj*, f32);
void HSD_WObjGetPosition(HSD_WObj*, Vec3*);
HSD_WObj* HSD_WObjAlloc(void);
void HSD_WObjSetDefaultClass(HSD_ClassInfo* info);