mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-21 05:43:42 -07:00
git subrepo clone https://github.com/HarbourMasters/soh.git
subrepo: subdir: "soh" merged: "ba904bbd0" upstream: origin: "https://github.com/HarbourMasters/soh.git" branch: "master" commit: "ba904bbd0" git-subrepo: version: "0.4.1" origin: "???" commit: "???"
This commit is contained in:
parent
0bb0e7b53b
commit
39cc86c260
2466 changed files with 451557 additions and 0 deletions
8
soh/include/alloca.h
Normal file
8
soh/include/alloca.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
#ifndef ALLOCA_H
|
||||
#define ALLOCA_H
|
||||
|
||||
void* alloca(u32);
|
||||
//#define alloca __builtin_alloca
|
||||
#define alloca malloc
|
||||
|
||||
#endif
|
34
soh/include/color.h
Normal file
34
soh/include/color.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef COLOR_H
|
||||
#define COLOR_H
|
||||
|
||||
typedef struct {
|
||||
u8 r, g, b;
|
||||
} Color_RGB8;
|
||||
|
||||
typedef struct {
|
||||
u8 r, g, b, a;
|
||||
} Color_RGBA8;
|
||||
|
||||
// only use when necessary for alignment purposes
|
||||
typedef union {
|
||||
struct {
|
||||
u8 a, b, g, r;
|
||||
};
|
||||
u32 rgba;
|
||||
} Color_RGBA8_u32;
|
||||
|
||||
typedef struct {
|
||||
f32 r, g, b, a;
|
||||
} Color_RGBAf;
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
u16 r : 5;
|
||||
u16 g : 5;
|
||||
u16 b : 5;
|
||||
u16 a : 1;
|
||||
};
|
||||
u16 rgba;
|
||||
} Color_RGBA16;
|
||||
|
||||
#endif
|
27
soh/include/command_macros_base.h
Normal file
27
soh/include/command_macros_base.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
#ifndef COMMAND_MACROS_BASE_H
|
||||
#define COMMAND_MACROS_BASE_H
|
||||
|
||||
/**
|
||||
* Command Base macros intended for use in designing of more specific command macros
|
||||
* Each macro packs bytes (B), halfwords (H) and words (W, for consistency) into a single word
|
||||
*/
|
||||
|
||||
#define CMD_BBBB(a, b, c, d) (_SHIFTL(a, 0, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(c, 16, 8) | _SHIFTL(d, 24, 8))
|
||||
|
||||
#define CMD_BBH(a, b, c) (_SHIFTL(a, 0, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(c, 16, 16))
|
||||
|
||||
#define CMD_HBB(a, b, c) (_SHIFTL(a, 0, 16) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 24, 8))
|
||||
|
||||
#define CMD_HH(a, b) (_SHIFTL(a, 0, 16) | _SHIFTL(b, 16, 16))
|
||||
|
||||
#define CMD_W(a) (a)
|
||||
|
||||
#if defined(__GNUC__) || defined(_MSC_VER)
|
||||
#define CMD_F(a) {.f = (a)}
|
||||
#else
|
||||
#define CMD_F(a) {(a)}
|
||||
#endif
|
||||
|
||||
#define CMD_PTR(a) (uintptr_t)(a)
|
||||
|
||||
#endif
|
34
soh/include/fp.h
Normal file
34
soh/include/fp.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef FP_H
|
||||
#define FP_H
|
||||
#include "ultra64.h"
|
||||
|
||||
extern f32 qNaN0x3FFFFF;
|
||||
extern f32 qNaN0x10000;
|
||||
extern f32 sNaN0x3FFFFF;
|
||||
|
||||
f32 floorf(f32 x);
|
||||
f64 floor(f64 x);
|
||||
s32 lfloorf(f32 x);
|
||||
s32 lfloor(f64 x);
|
||||
|
||||
f32 ceilf(f32 x);
|
||||
f64 ceil(f64 x);
|
||||
s32 lceilf(f32 x);
|
||||
s32 lceil(f64 x);
|
||||
|
||||
f32 truncf(f32 x);
|
||||
f64 trunc(f64 x);
|
||||
s32 ltruncf(f32 x);
|
||||
s32 ltrunc(f64 x);
|
||||
|
||||
f32 nearbyintf(f32 x);
|
||||
f64 nearbyint(f64 x);
|
||||
s32 lnearbyintf(f32 x);
|
||||
s32 lnearbyint(f64 x);
|
||||
|
||||
f32 roundf(f32 x);
|
||||
f64 round(f64 x);
|
||||
s32 lroundf(f32 x);
|
||||
s32 lround(f64 x);
|
||||
|
||||
#endif
|
2404
soh/include/functions.h
Normal file
2404
soh/include/functions.h
Normal file
File diff suppressed because it is too large
Load diff
49
soh/include/global.h
Normal file
49
soh/include/global.h
Normal file
|
@ -0,0 +1,49 @@
|
|||
#ifndef GLOBAL_H
|
||||
#define GLOBAL_H
|
||||
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "macros.h"
|
||||
#include "soh\OTRGlobals.h"
|
||||
#include "soh\Enhancements\gameconsole.h"
|
||||
#include "Cvar.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define _AudioseqSegmentRomStart "Audioseq"
|
||||
#define _AudiobankSegmentRomStart "Audiobank"
|
||||
#define _AudiotableSegmentRomStart "Audiotable"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define _icon_item_gameover_staticSegmentRomStart 0
|
||||
#define _icon_item_gameover_staticSegmentRomEnd 0
|
||||
#define _icon_item_staticSegmentRomStart 0
|
||||
#define _icon_item_staticSegmentRomEnd 0
|
||||
#define _map_i_staticSegmentRomStart 0
|
||||
#define _map_i_staticSegmentRomEnd 0
|
||||
#define _message_staticSegmentRomStart 0
|
||||
#define _message_staticSegmentRomEnd 0
|
||||
#define _do_action_staticSegmentRomStart 0
|
||||
#define _do_action_staticSegmentRomEnd 0
|
||||
#define _nes_font_staticSegmentRomStart 0
|
||||
#define _nes_font_staticSegmentRomEnd 0
|
||||
#define _nintendo_rogo_staticSegmentRomStart 0
|
||||
#define _nintendo_rogo_staticSegmentRomEnd 0
|
||||
#define _dmadataSegmentStart 0
|
||||
#define _dmadataSegmentEnd 0
|
||||
#define _parameter_staticSegmentRomStart 0
|
||||
#define _parameter_staticSegmentRomEnd 0
|
||||
#define _map_name_staticSegmentRomStart 0
|
||||
#define _map_name_staticSegmentRomEnd 0
|
||||
#define _title_staticSegmentRomStart 0
|
||||
#define _title_staticSegmentRomEnd 0
|
||||
#define _z_select_staticSegmentRomStart 0
|
||||
#define _z_select_staticSegmentRomEnd 0
|
||||
|
||||
#endif
|
56
soh/include/ichain.h
Normal file
56
soh/include/ichain.h
Normal file
|
@ -0,0 +1,56 @@
|
|||
#ifndef ICHAIN_H
|
||||
#define ICHAIN_H
|
||||
|
||||
typedef struct {
|
||||
u32 cont: 1;
|
||||
u32 type: 4;
|
||||
u32 offset: 11;
|
||||
s32 value: 16;
|
||||
} InitChainEntry;
|
||||
|
||||
typedef enum {
|
||||
/* 0x0 */ ICHAINTYPE_U8, // sets byte
|
||||
/* 0x1 */ ICHAINTYPE_S8,
|
||||
/* 0x2 */ ICHAINTYPE_U16, // sets short
|
||||
/* 0x3 */ ICHAINTYPE_S16,
|
||||
/* 0x4 */ ICHAINTYPE_U32, // sets word
|
||||
/* 0x5 */ ICHAINTYPE_S32,
|
||||
/* 0x6 */ ICHAINTYPE_F32, // sets float
|
||||
/* 0x7 */ ICHAINTYPE_F32_DIV1000, // sets float divided by 1000
|
||||
/* 0x8 */ ICHAINTYPE_VEC3F, // sets Vec3f members
|
||||
/* 0x9 */ ICHAINTYPE_VEC3F_DIV1000, // sets Vec3f members divided by 1000
|
||||
/* 0xA */ ICHAINTYPE_VEC3S // sets Vec3s members
|
||||
} InitChainType;
|
||||
|
||||
/**
|
||||
* ICHAIN macros generate an init chain entry of the following form:
|
||||
* * (e >> 31) & 0x0001 == Continue Parsing after this entry
|
||||
* * (e >> 27) & 0x000F == Type
|
||||
* * (e >> 16) & 0x07FF == Offset from start of instance to write initial value
|
||||
* * e & 0xFFFF == Initial Value
|
||||
*
|
||||
* Arguments:
|
||||
* * type ----- value from enum `InitChainType`
|
||||
* * member --- name of member inside `Actor` structure to use as the offset
|
||||
* * value ---- s16 value to use
|
||||
* * cont ----- ICHAIN_CONTINUE (or ICHAIN_STOP) to continue (or stop) parsing
|
||||
*/
|
||||
#define ICHAIN(type, member, value, cont) \
|
||||
{ cont, type, OFFSETOF(Actor, member), value }
|
||||
|
||||
#define ICHAIN_U8(member, val, cont) ICHAIN(ICHAINTYPE_U8, member, val, cont)
|
||||
#define ICHAIN_S8(member, val, cont) ICHAIN(ICHAINTYPE_S8, member, val, cont)
|
||||
#define ICHAIN_U16(member, val, cont) ICHAIN(ICHAINTYPE_U16, member, val, cont)
|
||||
#define ICHAIN_S16(member, val, cont) ICHAIN(ICHAINTYPE_S16, member, val, cont)
|
||||
#define ICHAIN_U32(member, val, cont) ICHAIN(ICHAINTYPE_U32, member, val, cont)
|
||||
#define ICHAIN_S32(member, val, cont) ICHAIN(ICHAINTYPE_S32, member, val, cont)
|
||||
#define ICHAIN_F32(member, val, cont) ICHAIN(ICHAINTYPE_F32, member, val, cont)
|
||||
#define ICHAIN_F32_DIV1000(member, val, cont) ICHAIN(ICHAINTYPE_F32_DIV1000, member, val, cont)
|
||||
#define ICHAIN_VEC3F(member, val, cont) ICHAIN(ICHAINTYPE_VEC3F, member, val, cont)
|
||||
#define ICHAIN_VEC3F_DIV1000(member, val, cont) ICHAIN(ICHAINTYPE_VEC3F_DIV1000, member, val, cont)
|
||||
#define ICHAIN_VEC3S(member, val, cont) ICHAIN(ICHAINTYPE_VEC3S, member, val, cont)
|
||||
|
||||
#define ICHAIN_CONTINUE 1
|
||||
#define ICHAIN_STOP 0
|
||||
|
||||
#endif
|
29
soh/include/libc/math.h
Normal file
29
soh/include/libc/math.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
#ifndef MATH_H
|
||||
#define MATH_H
|
||||
|
||||
#include "ultra64/types.h"
|
||||
|
||||
#define M_PI 3.14159265358979323846f
|
||||
#define M_SQRT2 1.41421356237309504880f
|
||||
#define FLT_MAX 340282346638528859811704183484516925440.0f
|
||||
#define SHT_MAX 32767.0f
|
||||
#define SHT_MINV (1.0f / SHT_MAX)
|
||||
#define DEGTORAD(x) (x * M_PI / 180.0f)
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
u32 hi;
|
||||
u32 lo;
|
||||
} word;
|
||||
|
||||
f64 d;
|
||||
} du;
|
||||
|
||||
typedef union {
|
||||
u32 i;
|
||||
f32 f;
|
||||
} fu;
|
||||
|
||||
extern f32 __libm_qnan_f;
|
||||
|
||||
#endif
|
43
soh/include/libc/stdarg.h
Normal file
43
soh/include/libc/stdarg.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
#ifndef STDARG_H
|
||||
#define STDARG_H
|
||||
|
||||
// When building with GCC, use the official vaarg macros to avoid warnings
|
||||
// and possibly bad codegen.
|
||||
#ifdef __GNUC__
|
||||
#define va_list __builtin_va_list
|
||||
#define va_start __builtin_va_start
|
||||
#define va_arg __builtin_va_arg
|
||||
#define va_end __builtin_va_end
|
||||
#else
|
||||
|
||||
typedef char* va_list;
|
||||
#define _FP 1
|
||||
#define _INT 0
|
||||
#define _STRUCT 2
|
||||
|
||||
#define _VA_FP_SAVE_AREA 0x10
|
||||
#define _VA_ALIGN(p, a) (((uintptr_t)(((char*)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
|
||||
#define va_start(vp, parmN) (vp = ((va_list)&parmN + sizeof(parmN)))
|
||||
|
||||
#define __va_stack_arg(list, mode) \
|
||||
( \
|
||||
((list) = (char*)_VA_ALIGN(list, __builtin_alignof(mode)) + \
|
||||
_VA_ALIGN(sizeof(mode), 4)), \
|
||||
(((char*)list) - (_VA_ALIGN(sizeof(mode), 4) - sizeof(mode))))
|
||||
|
||||
#define __va_double_arg(list, mode) \
|
||||
( \
|
||||
(((s32)list & 0x1) /* 1 byte aligned? */ \
|
||||
? (list = (char*)((s32)list + 7), (char*)((s32)list - 6 - _VA_FP_SAVE_AREA)) \
|
||||
: (((s32)list & 0x2) /* 2 byte aligned? */ \
|
||||
? (list = (char*)((s32)list + 10), (char*)((s32)list - 24 - _VA_FP_SAVE_AREA)) \
|
||||
: __va_stack_arg(list, mode))))
|
||||
|
||||
#define va_arg(list, mode) ((mode*)(((__builtin_classof(mode) == _FP && \
|
||||
__builtin_alignof(mode) == sizeof(f64)) \
|
||||
? __va_double_arg(list, mode) \
|
||||
: __va_stack_arg(list, mode))))[-1]
|
||||
#define va_end(__list)
|
||||
|
||||
#endif
|
||||
#endif
|
14
soh/include/libc/stdbool.h
Normal file
14
soh/include/libc/stdbool.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef STDBOOL_H
|
||||
#define STDBOOL_H
|
||||
|
||||
#define __bool_true_false_are_defined 1
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
#define bool u32
|
||||
#define false 0
|
||||
#define true 1
|
||||
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* STDBOOL */
|
14
soh/include/libc/stddef.h
Normal file
14
soh/include/libc/stddef.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef STDDEF_H
|
||||
#define STDDEF_H
|
||||
|
||||
#define NULL ((void*)0)
|
||||
#if 0
|
||||
#define size_t unsigned long
|
||||
#define ssize_t long
|
||||
|
||||
#endif
|
||||
|
||||
//typedef unsigned long size_t;
|
||||
//typedef long ssize_t;
|
||||
|
||||
#endif
|
21
soh/include/libc/stdlib.h
Normal file
21
soh/include/libc/stdlib.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#ifndef STDLIB_H
|
||||
#define STDLIB_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
#if 0
|
||||
|
||||
#ifndef __cplusplus
|
||||
typedef struct lldiv_t {
|
||||
s64 quot;
|
||||
s64 rem;
|
||||
} lldiv_t;
|
||||
|
||||
typedef struct ldiv_t {
|
||||
s32 quot;
|
||||
s32 rem;
|
||||
} ldiv_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
4
soh/include/macro.inc
Normal file
4
soh/include/macro.inc
Normal file
|
@ -0,0 +1,4 @@
|
|||
.macro glabel label
|
||||
.global \label
|
||||
\label:
|
||||
.endm
|
209
soh/include/macros.h
Normal file
209
soh/include/macros.h
Normal file
|
@ -0,0 +1,209 @@
|
|||
#ifndef MACROS_H
|
||||
#define MACROS_H
|
||||
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
#define PHYSICAL_TO_VIRTUAL(addr) (void*)((uintptr_t)(addr) + 0x80000000)
|
||||
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr) - 0x80000000)
|
||||
//#define SEGMENTED_TO_VIRTUAL(addr) PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)] + SEGMENT_OFFSET(addr))
|
||||
|
||||
#define SEGMENTED_TO_VIRTUAL(addr) addr
|
||||
|
||||
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
||||
#define ALIGN32(val) (((val) + 0x1F) & ~0x1F)
|
||||
#define ALIGN64(val) (((val) + 0x3F) & ~0x3F)
|
||||
#define ALIGN256(val) (((val) + 0xFF) & ~0xFF)
|
||||
|
||||
#define OFFSETOF(structure, member) ((size_t)&(((structure*)0)->member))
|
||||
|
||||
#define SQ(x) ((x)*(x))
|
||||
#define ABS(x) ((x) >= 0 ? (x) : -(x))
|
||||
#define DECR(x) ((x) == 0 ? 0 : --(x))
|
||||
#define CLAMP(x, min, max) ((x) < (min) ? (min) : (x) > (max) ? (max) : (x))
|
||||
#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x))
|
||||
#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x))
|
||||
#define MEDIAN3(a1, a2, a3) \
|
||||
(((a2) >= (a1)) ? (((a3) >= (a2)) ? (a2) : (((a1) >= (a3)) ? (a1) : (a3))) \
|
||||
: (((a2) >= (a3)) ? (a2) : (((a3) >= (a1)) ? (a1) : (a3))))
|
||||
|
||||
#define RGBA8(r, g, b, a) ((((r) & 0xFF) << 24) | (((g) & 0xFF) << 16) | (((b) & 0xFF) << 8) | (((a) & 0xFF) << 0))
|
||||
|
||||
#define GET_PLAYER(globalCtx) ((Player*)(globalCtx)->actorCtx.actorLists[ACTORCAT_PLAYER].head)
|
||||
|
||||
#define GET_ACTIVE_CAM(globalCtx) ((globalCtx)->cameraPtrs[(globalCtx)->activeCamera])
|
||||
|
||||
#define LINK_IS_ADULT (gSaveContext.linkAge == 0)
|
||||
#define LINK_IS_CHILD (gSaveContext.linkAge == 1)
|
||||
|
||||
#define YEARS_CHILD 5
|
||||
#define YEARS_ADULT 17
|
||||
#define LINK_AGE_IN_YEARS (!LINK_IS_ADULT ? YEARS_CHILD : YEARS_ADULT)
|
||||
|
||||
#define IS_DAY (gSaveContext.nightFlag == 0)
|
||||
#define IS_NIGHT (gSaveContext.nightFlag == 1)
|
||||
|
||||
#define SLOT(item) gItemSlots[item]
|
||||
#define INV_CONTENT(item) gSaveContext.inventory.items[SLOT(item)]
|
||||
#define AMMO(item) gSaveContext.inventory.ammo[SLOT(item)]
|
||||
#define BEANS_BOUGHT AMMO(ITEM_BEAN + 1)
|
||||
|
||||
#define ALL_EQUIP_VALUE(equip) ((s32)(gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_EQUIP_VALUE(equip) ((s32)(gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CHECK_OWNED_EQUIP(equip, value) ((gBitFlags[value] << gEquipShifts[equip]) & gSaveContext.inventory.equipment)
|
||||
|
||||
#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
|
||||
#define CHECK_QUEST_ITEM(item) (gBitFlags[item] & gSaveContext.inventory.questItems)
|
||||
#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.inventory.dungeonItems[dungeonIndex] & gBitFlags[item])
|
||||
|
||||
#define GET_GS_FLAGS(index) \
|
||||
((gSaveContext.gsFlags[(index) >> 2] & gGsFlagsMasks[(index) & 3]) >> gGsFlagsShifts[(index) & 3])
|
||||
#define SET_GS_FLAGS(index, value) \
|
||||
(gSaveContext.gsFlags[(index) >> 2] |= (value) << gGsFlagsShifts[(index) & 3])
|
||||
|
||||
#define HIGH_SCORE(score) (gSaveContext.highScores[score])
|
||||
|
||||
#define B_BTN_ITEM ((gSaveContext.buttonStatus[0] == ITEM_NONE) \
|
||||
? ITEM_NONE \
|
||||
: (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) \
|
||||
? ITEM_SWORD_BGS \
|
||||
: gSaveContext.equips.buttonItems[0])
|
||||
|
||||
#define C_BTN_ITEM(button) ((gSaveContext.buttonStatus[(button) + 1] != BTN_DISABLED) \
|
||||
? gSaveContext.equips.buttonItems[(button) + 1] \
|
||||
: ITEM_NONE)
|
||||
|
||||
#define CHECK_BTN_ALL(state, combo) (~((state) | ~(combo)) == 0)
|
||||
#define CHECK_BTN_ANY(state, combo) (((state) & (combo)) != 0)
|
||||
|
||||
#define CHECK_FLAG_ALL(flags, mask) (((flags) & (mask)) == (mask))
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define LOG(exp, value, format, file, line) \
|
||||
do { \
|
||||
LogUtils_LogThreadId(file, line); \
|
||||
osSyncPrintf(exp " = " format "\n", value); \
|
||||
} while (0)
|
||||
#else
|
||||
#define LOG(exp, value, format, file, line) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define LOG_STRING(string, file, line) LOG(#string, string, "%s", file, line)
|
||||
#define LOG_ADDRESS(exp, value, file, line) LOG(exp, value, "%08x", file, line)
|
||||
#define LOG_TIME(exp, value, file, line) LOG(exp, value, "%lld", file, line)
|
||||
#define LOG_NUM(exp, value, file, line) LOG(exp, value, "%d", file, line)
|
||||
#define LOG_HEX(exp, value, file, line) LOG(exp, value, "%x", file, line)
|
||||
#define LOG_FLOAT(exp, value, file, line) LOG(exp, value, "%f", file, line)
|
||||
#else
|
||||
#define LOG_STRING(string, file, line) ((void)0)
|
||||
#define LOG_ADDRESS(exp, value, file, line) ((void)0)
|
||||
#define LOG_TIME(exp, value, file, line) ((void)0)
|
||||
#define LOG_NUM(exp, value, file, line) ((void)0)
|
||||
#define LOG_HEX(exp, value, file, line) ((void)0)
|
||||
#define LOG_FLOAT(exp, value, file, line) ((void)0)
|
||||
#endif
|
||||
|
||||
#define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \
|
||||
do { \
|
||||
(curState)->init = newInit; \
|
||||
(curState)->size = sizeof(newStruct); \
|
||||
} while (0)
|
||||
|
||||
#define SET_FULLSCREEN_VIEWPORT(view) \
|
||||
{ \
|
||||
Viewport viewport; \
|
||||
viewport.bottomY = SCREEN_HEIGHT; \
|
||||
viewport.rightX = SCREEN_WIDTH; \
|
||||
viewport.topY = 0; \
|
||||
viewport.leftX = 0; \
|
||||
View_SetViewport(view, &viewport); \
|
||||
} \
|
||||
(void)0
|
||||
|
||||
extern GraphicsContext* __gfxCtx;
|
||||
|
||||
#define WORK_DISP __gfxCtx->work.p
|
||||
#define POLY_OPA_DISP __gfxCtx->polyOpa.p
|
||||
#define POLY_XLU_DISP __gfxCtx->polyXlu.p
|
||||
#define POLY_KAL_DISP __gfxCtx->polyKal.p
|
||||
#define OVERLAY_DISP __gfxCtx->overlay.p
|
||||
|
||||
// __gfxCtx shouldn't be used directly.
|
||||
// Use the DISP macros defined above when writing to display buffers.
|
||||
#ifndef NDEBUG
|
||||
#define OPEN_DISPS(gfxCtx, file, line) \
|
||||
{ \
|
||||
GraphicsContext* __gfxCtx; \
|
||||
Gfx* dispRefs[4]; \
|
||||
__gfxCtx = gfxCtx; \
|
||||
(void)__gfxCtx; \
|
||||
Graph_OpenDisps(dispRefs, gfxCtx, file, line)
|
||||
#else
|
||||
#define OPEN_DISPS(gfxCtx, file, line) \
|
||||
{ \
|
||||
GraphicsContext* __gfxCtx; \
|
||||
__gfxCtx = gfxCtx; \
|
||||
(void)__gfxCtx;
|
||||
#endif
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define CLOSE_DISPS(gfxCtx, file, line) \
|
||||
Graph_CloseDisps(dispRefs, gfxCtx, file, line); \
|
||||
} \
|
||||
(void)0
|
||||
#else
|
||||
#define CLOSE_DISPS(gfxCtx, file, line) \
|
||||
(void)0; \
|
||||
} \
|
||||
(void)0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* `x` vertex x
|
||||
* `y` vertex y
|
||||
* `z` vertex z
|
||||
* `s` texture s coordinate
|
||||
* `t` texture t coordinate
|
||||
* `crnx` red component of color vertex, or x component of normal vertex
|
||||
* `cgny` green component of color vertex, or y component of normal vertex
|
||||
* `cbnz` blue component of color vertex, or z component of normal vertex
|
||||
* `a` alpha
|
||||
*/
|
||||
#define VTX(x,y,z,s,t,crnx,cgny,cbnz,a) { { { x, y, z }, 0, { s, t }, { crnx, cgny, cbnz, a } } }
|
||||
|
||||
#define VTX_T(x,y,z,s,t,cr,cg,cb,a) { { x, y, z }, 0, { s, t }, { cr, cg, cb, a } }
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define ASSERT(cond, msg, file, line) ((void)0)
|
||||
#elif defined(REAL_ASSERT_MACRO)
|
||||
#define ASSERT(cond, msg, file, line) ((cond) ? ((void)0) : __assert(#cond, __FILE__, __LINE__))
|
||||
#else
|
||||
#define ASSERT(cond, msg, file, line) ((cond) ? ((void)0) : __assert(msg, file, line))
|
||||
#endif
|
||||
|
||||
#define gDPSetTileCustom(pkt, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \
|
||||
do { \
|
||||
gDPPipeSync(pkt); \
|
||||
gDPTileSync(pkt); \
|
||||
gDPSetTile(pkt, fmt, siz, (((width)*siz##_TILE_BYTES) + 7) >> 3, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, \
|
||||
masks, shifts); \
|
||||
gDPTileSync(pkt); \
|
||||
gDPSetTile(pkt, fmt, siz, (((width)*siz##_TILE_BYTES) + 7) >> 3, 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, \
|
||||
cms, masks, shifts); \
|
||||
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, \
|
||||
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
|
||||
} while (0)
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define ALIGNED8 __attribute__ ((aligned (8)))
|
||||
#else
|
||||
#define ALIGNED8
|
||||
#endif
|
||||
|
||||
#define SEG_ADDR(seg, addr) (addr | (seg << 24) | 0xF0000000)
|
||||
|
||||
#endif
|
178
soh/include/message_data_fmt.h
Normal file
178
soh/include/message_data_fmt.h
Normal file
|
@ -0,0 +1,178 @@
|
|||
#ifndef MESSAGE_DATA_FMT_H
|
||||
#define MESSAGE_DATA_FMT_H
|
||||
|
||||
/*
|
||||
* Macros to create both a constant and a string literal from a magic value
|
||||
* The constants are used in code files when parsing text for various purposes
|
||||
* The strings are used in the message_data_static files themselves, as you can only concat strings with other strings
|
||||
*/
|
||||
|
||||
#define GLUE(a, b) a##b
|
||||
|
||||
#define STRINGIFY(s) #s
|
||||
#define EXPAND_AND_STRINGIFY(s) STRINGIFY(s)
|
||||
|
||||
#define HEX(N) GLUE(0x, N)
|
||||
#define STR(N) EXPAND_AND_STRINGIFY(GLUE(\x, N))
|
||||
|
||||
/*
|
||||
* Text control characters
|
||||
*/
|
||||
|
||||
// Control character magic values, in 2-digit hex without prefix
|
||||
|
||||
#define CTRL_NEWLINE 01
|
||||
#define CTRL_END 02
|
||||
#define CTRL_BOX_BREAK 04
|
||||
#define CTRL_COLOR 05
|
||||
#define CTRL_SHIFT 06
|
||||
#define CTRL_TEXTID 07
|
||||
#define CTRL_QUICKTEXT_ENABLE 08
|
||||
#define CTRL_QUICKTEXT_DISABLE 09
|
||||
#define CTRL_PERSISTENT 0A
|
||||
#define CTRL_EVENT 0B
|
||||
#define CTRL_BOX_BREAK_DELAYED 0C
|
||||
#define CTRL_AWAIT_BUTTON_PRESS 0D
|
||||
#define CTRL_FADE 0E
|
||||
#define CTRL_NAME 0F
|
||||
#define CTRL_OCARINA 10
|
||||
#define CTRL_FADE2 11
|
||||
#define CTRL_SFX 12
|
||||
#define CTRL_ITEM_ICON 13
|
||||
#define CTRL_TEXT_SPEED 14
|
||||
#define CTRL_BACKGROUND 15
|
||||
#define CTRL_MARATHON_TIME 16
|
||||
#define CTRL_RACE_TIME 17
|
||||
#define CTRL_POINTS 18
|
||||
#define CTRL_TOKENS 19
|
||||
#define CTRL_UNSKIPPABLE 1A
|
||||
#define CTRL_TWO_CHOICE 1B
|
||||
#define CTRL_THREE_CHOICE 1C
|
||||
#define CTRL_FISH_INFO 1D
|
||||
#define CTRL_HIGHSCORE 1E
|
||||
#define CTRL_TIME 1F
|
||||
|
||||
/*
|
||||
* Colors
|
||||
*/
|
||||
|
||||
#define COLOR_STR(N) EXPAND_AND_STRINGIFY(GLUE(\x4, N))
|
||||
|
||||
// Color magic values, in single-digit hex without prefix
|
||||
|
||||
#define CTRL_DEFAULT 0
|
||||
#define CTRL_RED 1
|
||||
#define CTRL_ADJUSTABLE 2
|
||||
#define CTRL_BLUE 3
|
||||
#define CTRL_LIGHTBLUE 4
|
||||
#define CTRL_PURPLE 5
|
||||
#define CTRL_YELLOW 6
|
||||
#define CTRL_BLACK 7
|
||||
|
||||
#ifdef MESSAGE_DATA_STATIC
|
||||
// For use in message_data_static files
|
||||
|
||||
#define ARG(x) x
|
||||
|
||||
// while a control character, newlines are handled in the charmap conversion
|
||||
// stage to allow normal newline \n usage in message_data_static files
|
||||
#define NEWLINE STR(CTRL_NEWLINE)
|
||||
#define END STR(CTRL_END)
|
||||
#define BOX_BREAK STR(CTRL_BOX_BREAK)
|
||||
#define COLOR(x) STR(CTRL_COLOR) ARG(x) // 1
|
||||
#define SHIFT(x) STR(CTRL_SHIFT) ARG(x) // 1
|
||||
#define TEXTID(x) STR(CTRL_TEXTID) ARG(x) // 2
|
||||
#define QUICKTEXT_ENABLE STR(CTRL_QUICKTEXT_ENABLE)
|
||||
#define QUICKTEXT_DISABLE STR(CTRL_QUICKTEXT_DISABLE)
|
||||
#define PERSISTENT STR(CTRL_PERSISTENT)
|
||||
#define EVENT STR(CTRL_EVENT)
|
||||
#define BOX_BREAK_DELAYED(x) STR(CTRL_BOX_BREAK_DELAYED) ARG(x) // 1
|
||||
#define AWAIT_BUTTON_PRESS STR(CTRL_AWAIT_BUTTON_PRESS)
|
||||
#define FADE(x) STR(CTRL_FADE) ARG(x) // 1
|
||||
#define NAME STR(CTRL_NAME)
|
||||
#define OCARINA STR(CTRL_OCARINA)
|
||||
#define FADE2(x) STR(CTRL_FADE2) ARG(x) // 2
|
||||
#define SFX(x) STR(CTRL_SFX) ARG(x) // 2
|
||||
#define ITEM_ICON(x) STR(CTRL_ITEM_ICON) ARG(x) // 1
|
||||
#define TEXT_SPEED(x) STR(CTRL_TEXT_SPEED) ARG(x) // 1
|
||||
#define BACKGROUND(x,y,z) STR(CTRL_BACKGROUND) ARG(x) ARG(y) ARG(z)
|
||||
#define MARATHON_TIME STR(CTRL_MARATHON_TIME)
|
||||
#define RACE_TIME STR(CTRL_RACE_TIME)
|
||||
#define POINTS STR(CTRL_POINTS)
|
||||
#define TOKENS STR(CTRL_TOKENS)
|
||||
#define UNSKIPPABLE STR(CTRL_UNSKIPPABLE)
|
||||
#define TWO_CHOICE STR(CTRL_TWO_CHOICE)
|
||||
#define THREE_CHOICE STR(CTRL_THREE_CHOICE)
|
||||
#define FISH_INFO STR(CTRL_FISH_INFO)
|
||||
#define HIGHSCORE(x) STR(CTRL_HIGHSCORE) ARG(x) // 1
|
||||
#define TIME STR(CTRL_TIME)
|
||||
|
||||
/*
|
||||
* Highscore values as strings, for code references the HighScores
|
||||
* enum should be used.
|
||||
*/
|
||||
|
||||
#define HS_HORSE_ARCHERY "\x00"
|
||||
#define HS_POE_POINTS "\x01"
|
||||
#define HS_LARGEST_FISH "\x02"
|
||||
#define HS_HORSE_RACE "\x03"
|
||||
#define HS_MARATHON "\x04"
|
||||
#define HS_DAMPE_RACE "\x06"
|
||||
|
||||
/*
|
||||
* Color values as strings
|
||||
*/
|
||||
|
||||
#define DEFAULT COLOR_STR(CTRL_DEFAULT)
|
||||
#define RED COLOR_STR(CTRL_RED)
|
||||
#define ADJUSTABLE COLOR_STR(CTRL_ADJUSTABLE)
|
||||
#define BLUE COLOR_STR(CTRL_BLUE)
|
||||
#define LIGHTBLUE COLOR_STR(CTRL_LIGHTBLUE)
|
||||
#define PURPLE COLOR_STR(CTRL_PURPLE)
|
||||
#define YELLOW COLOR_STR(CTRL_YELLOW)
|
||||
#define BLACK COLOR_STR(CTRL_BLACK)
|
||||
|
||||
#else
|
||||
// For use in code files
|
||||
#define MSGCOL_DEFAULT HEX(CTRL_DEFAULT)
|
||||
#define MSGCOL_RED HEX(CTRL_RED)
|
||||
#define MSGCOL_ADJUSTABLE HEX(CTRL_ADJUSTABLE)
|
||||
#define MSGCOL_BLUE HEX(CTRL_BLUE)
|
||||
#define MSGCOL_LIGHTBLUE HEX(CTRL_LIGHTBLUE)
|
||||
#define MSGCOL_PURPLE HEX(CTRL_PURPLE)
|
||||
#define MSGCOL_YELLOW HEX(CTRL_YELLOW)
|
||||
#define MSGCOL_BLACK HEX(CTRL_BLACK)
|
||||
|
||||
#define MESSAGE_NEWLINE HEX(CTRL_NEWLINE)
|
||||
#define MESSAGE_END HEX(CTRL_END)
|
||||
#define MESSAGE_BOX_BREAK HEX(CTRL_BOX_BREAK)
|
||||
#define MESSAGE_COLOR HEX(CTRL_COLOR)
|
||||
#define MESSAGE_SHIFT HEX(CTRL_SHIFT)
|
||||
#define MESSAGE_TEXTID HEX(CTRL_TEXTID)
|
||||
#define MESSAGE_QUICKTEXT_ENABLE HEX(CTRL_QUICKTEXT_ENABLE)
|
||||
#define MESSAGE_QUICKTEXT_DISABLE HEX(CTRL_QUICKTEXT_DISABLE)
|
||||
#define MESSAGE_PERSISTENT HEX(CTRL_PERSISTENT)
|
||||
#define MESSAGE_EVENT HEX(CTRL_EVENT)
|
||||
#define MESSAGE_BOX_BREAK_DELAYED HEX(CTRL_BOX_BREAK_DELAYED)
|
||||
#define MESSAGE_AWAIT_BUTTON_PRESS HEX(CTRL_AWAIT_BUTTON_PRESS)
|
||||
#define MESSAGE_FADE HEX(CTRL_FADE)
|
||||
#define MESSAGE_NAME HEX(CTRL_NAME)
|
||||
#define MESSAGE_OCARINA HEX(CTRL_OCARINA)
|
||||
#define MESSAGE_FADE2 HEX(CTRL_FADE2)
|
||||
#define MESSAGE_SFX HEX(CTRL_SFX)
|
||||
#define MESSAGE_ITEM_ICON HEX(CTRL_ITEM_ICON)
|
||||
#define MESSAGE_TEXT_SPEED HEX(CTRL_TEXT_SPEED)
|
||||
#define MESSAGE_BACKGROUND HEX(CTRL_BACKGROUND)
|
||||
#define MESSAGE_MARATHON_TIME HEX(CTRL_MARATHON_TIME)
|
||||
#define MESSAGE_RACE_TIME HEX(CTRL_RACE_TIME)
|
||||
#define MESSAGE_POINTS HEX(CTRL_POINTS)
|
||||
#define MESSAGE_TOKENS HEX(CTRL_TOKENS)
|
||||
#define MESSAGE_UNSKIPPABLE HEX(CTRL_UNSKIPPABLE)
|
||||
#define MESSAGE_TWO_CHOICE HEX(CTRL_TWO_CHOICE)
|
||||
#define MESSAGE_THREE_CHOICE HEX(CTRL_THREE_CHOICE)
|
||||
#define MESSAGE_FISH_INFO HEX(CTRL_FISH_INFO)
|
||||
#define MESSAGE_HIGHSCORE HEX(CTRL_HIGHSCORE)
|
||||
#define MESSAGE_TIME HEX(CTRL_TIME)
|
||||
#endif
|
||||
|
||||
#endif
|
64
soh/include/message_data_static.h
Normal file
64
soh/include/message_data_static.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
#ifndef MESSAGE_DATA_STATIC_H
|
||||
#define MESSAGE_DATA_STATIC_H
|
||||
|
||||
#include "global.h"
|
||||
#include "message_data_fmt.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ TEXTBOX_TYPE_BLACK,
|
||||
/* 1 */ TEXTBOX_TYPE_WOODEN,
|
||||
/* 2 */ TEXTBOX_TYPE_BLUE,
|
||||
/* 3 */ TEXTBOX_TYPE_OCARINA,
|
||||
/* 4 */ TEXTBOX_TYPE_NONE_BOTTOM,
|
||||
/* 5 */ TEXTBOX_TYPE_NONE_NO_SHADOW,
|
||||
/* 11 */ TEXTBOX_TYPE_CREDITS = 11
|
||||
} TextBoxType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ TEXTBOX_BG_CROSS
|
||||
} TextBoxBackground;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ TEXTBOX_POS_VARIABLE,
|
||||
/* 1 */ TEXTBOX_POS_TOP,
|
||||
/* 2 */ TEXTBOX_POS_BOTTOM,
|
||||
/* 3 */ TEXTBOX_POS_MIDDLE
|
||||
} TextBoxPosition;
|
||||
|
||||
typedef struct {
|
||||
u16 textId;
|
||||
u8 typePos;
|
||||
const char* segment;
|
||||
u32 msgSize;
|
||||
} MessageTableEntry;
|
||||
|
||||
/*
|
||||
* Message Symbol Declarations
|
||||
*/
|
||||
|
||||
#define DEFINE_MESSAGE(textId, type, yPos, staffMessage) \
|
||||
extern const char _message_##textId##_staff[];
|
||||
|
||||
//#include "text/message_data_staff.h"
|
||||
|
||||
#undef DEFINE_MESSAGE
|
||||
|
||||
#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \
|
||||
extern const char _message_##textId##_nes[]; \
|
||||
extern const char _message_##textId##_ger[]; \
|
||||
extern const char _message_##textId##_fra[];
|
||||
|
||||
//#include "text/message_data.h"
|
||||
extern char* _message_0xFFFC_nes;
|
||||
|
||||
#undef DEFINE_MESSAGE
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
165
soh/include/regs.h
Normal file
165
soh/include/regs.h
Normal file
|
@ -0,0 +1,165 @@
|
|||
#ifndef REGS_H
|
||||
#define REGS_H
|
||||
|
||||
#define REG_GROUPS 29 // number of REG groups, i.e. REG, SREG, OREG, etc.
|
||||
#define REG_PAGES 6
|
||||
#define REG_PER_PAGE 16
|
||||
#define REG_PER_GROUP REG_PAGES * REG_PER_PAGE
|
||||
|
||||
#define BASE_REG(n, r) gGameInfo->data[n * REG_PER_GROUP + r]
|
||||
|
||||
#define REG(r) BASE_REG(0, r)
|
||||
#define SREG(r) BASE_REG(1, r)
|
||||
#define OREG(r) BASE_REG(2, r)
|
||||
#define PREG(r) BASE_REG(3, r)
|
||||
#define QREG(r) BASE_REG(4, r)
|
||||
#define MREG(r) BASE_REG(5, r)
|
||||
#define YREG(r) BASE_REG(6, r)
|
||||
#define DREG(r) BASE_REG(7, r)
|
||||
#define UREG(r) BASE_REG(8, r)
|
||||
#define IREG(r) BASE_REG(9, r)
|
||||
#define ZREG(r) BASE_REG(10, r)
|
||||
#define CREG(r) BASE_REG(11, r)
|
||||
#define NREG(r) BASE_REG(12, r)
|
||||
#define KREG(r) BASE_REG(13, r)
|
||||
#define XREG(r) BASE_REG(14, r)
|
||||
#define cREG(r) BASE_REG(15, r)
|
||||
#define sREG(r) BASE_REG(16, r)
|
||||
#define iREG(r) BASE_REG(17, r)
|
||||
#define WREG(r) BASE_REG(18, r)
|
||||
#define AREG(r) BASE_REG(19, r)
|
||||
#define VREG(r) BASE_REG(20, r)
|
||||
#define HREG(r) BASE_REG(21, r)
|
||||
#define GREG(r) BASE_REG(22, r)
|
||||
#define mREG(r) BASE_REG(23, r)
|
||||
#define nREG(r) BASE_REG(24, r)
|
||||
#define BREG(r) BASE_REG(25, r)
|
||||
#define dREG(r) BASE_REG(26, r)
|
||||
#define kREG(r) BASE_REG(27, r)
|
||||
#define bREG(r) BASE_REG(28, r)
|
||||
|
||||
#define R_ENV_AMBIENT_COLOR(i) REG(0 + i)
|
||||
#define R_ENV_LIGHT1_COLOR(i) REG(3 + i)
|
||||
#define R_ENV_LIGHT2_COLOR(i) REG(6 + i)
|
||||
#define R_ENV_DISABLE_DBG REG(9)
|
||||
#define R_ENV_FOG_COLOR(i) REG(10 + i)
|
||||
#define R_ENV_FOG_FAR REG(13)
|
||||
#define R_ENV_FOG_NEAR REG(14)
|
||||
#define R_ENV_TIME_INCREMENT REG(15)
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
#define R_ENABLE_ARENA_DBG SREG(0)
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#define R_ENABLE_AUDIO_DBG SREG(36)
|
||||
#define R_FB_FILTER_TYPE SREG(80)
|
||||
#define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c)
|
||||
#define R_FB_FILTER_A SREG(84)
|
||||
#define R_FB_FILTER_ENV_COLOR(c) SREG(85 + c)
|
||||
#define R_ENABLE_FB_FILTER SREG(88)
|
||||
#define R_PAUSE_MENU_MODE SREG(94)
|
||||
#define R_CAM_MAX_PHI OREG(5)
|
||||
#define R_CAM_DEFA_PHI_UPDRATE OREG(7)
|
||||
#define R_DEFA_CAM_ANIM_TIME OREG(23)
|
||||
#define R_CAM_MIN_PHI OREG(34)
|
||||
#define R_CAM_MIN_PHI2 OREG(35)
|
||||
#define R_AT_LERP_MIN OREG(41)
|
||||
#define R_AT_LERP_SCALE OREG(42)
|
||||
#define R_CAM_YOFFSET_NORM OREG(46)
|
||||
#define R_CAM_DATA(type) PREG(type)
|
||||
#define R_DBG_CAM_UPDATE PREG(80)
|
||||
#define R_DBG_REG_UPDATE PREG(82)
|
||||
#define R_RELOAD_CAM_PARAMS QREG(0)
|
||||
#define R_C_UP_ICON_X YREG(88)
|
||||
#define R_C_UP_ICON_Y YREG(89)
|
||||
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
|
||||
#define R_C_BTN_COLOR(i) ZREG(39 + i)
|
||||
#define R_B_BTN_COLOR(i) ZREG(43 + i)
|
||||
#define R_START_LABEL_DD(i) ZREG(48 + i)
|
||||
#define R_START_LABEL_Y(i) ZREG(51 + i)
|
||||
#define R_START_LABEL_X(i) ZREG(54 + i)
|
||||
#define R_C_UP_BTN_X ZREG(62)
|
||||
#define R_C_UP_BTN_Y ZREG(63)
|
||||
#define R_START_BTN_X ZREG(68)
|
||||
#define R_START_BTN_Y ZREG(69)
|
||||
#define R_ITEM_BTN_X(i) ZREG(70 + i)
|
||||
#define R_ITEM_BTN_Y(i) ZREG(74 + i)
|
||||
#define R_ITEM_BTN_DD(i) ZREG(78 + i)
|
||||
#define R_ITEM_ICON_X(i) ZREG(82 + i)
|
||||
#define R_ITEM_ICON_Y(i) ZREG(86 + i)
|
||||
#define R_ITEM_ICON_DD(i) ZREG(90 + i)
|
||||
#define R_ENV_WIND_DIR(i) CREG(16 + i)
|
||||
#define R_ENV_WIND_SPEED CREG(19)
|
||||
#define R_A_BTN_Y XREG(16)
|
||||
#define R_A_BTN_X XREG(17)
|
||||
#define R_A_ICON_Y XREG(19)
|
||||
#define R_A_ICON_X XREG(20)
|
||||
#define R_A_BTN_COLOR(i) XREG(22 + i)
|
||||
#define R_MAGIC_BAR_SMALL_Y XREG(48)
|
||||
#define R_MAGIC_BAR_X XREG(49)
|
||||
#define R_MAGIC_BAR_LARGE_Y XREG(50)
|
||||
#define R_MAGIC_FILL_X XREG(51)
|
||||
#define R_ENV_LIGHT1_DIR(i) cREG(3 + i)
|
||||
#define R_ENV_LIGHT2_DIR(i) cREG(6 + i)
|
||||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
#define R_MINIMAP_DISABLED WREG(31)
|
||||
#define R_B_LABEL_X(i) WREG(40 + i)
|
||||
#define R_B_LABEL_Y(i) WREG(43 + i)
|
||||
#define R_DGN_MINIMAP_X WREG(68)
|
||||
#define R_DGN_MINIMAP_Y WREG(69)
|
||||
#define R_MAP_INDEX VREG(11)
|
||||
#define R_MAP_TEX_INDEX_BASE VREG(12)
|
||||
#define R_MAP_TEX_INDEX VREG(13)
|
||||
#define R_COMPASS_SCALE_X VREG(14)
|
||||
#define R_COMPASS_SCALE_Y VREG(15)
|
||||
#define R_COMPASS_OFFSET_X VREG(16)
|
||||
#define R_COMPASS_OFFSET_Y VREG(17)
|
||||
#define R_MINIMAP_COLOR(i) VREG(18 + i)
|
||||
#define R_ITEM_AMMO_X(i) VREG(64 + i)
|
||||
#define R_ITEM_AMMO_Y(i) VREG(68 + i)
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
#define R_DISABLE_INPUT_DISPLAY HREG(47)
|
||||
#define R_EN_GOROIWA_SPEED mREG(12)
|
||||
#define R_NAVI_MSG_REGION_ALPHA nREG(87)
|
||||
#define R_TEXT_DROP_SHADOW_OFFSET XREG(60)
|
||||
#define R_TEXTBOX_X_TARGET XREG(72)
|
||||
#define R_TEXTBOX_Y_TARGET XREG(73)
|
||||
#define R_TEXTBOX_TEXWIDTH YREG(16)
|
||||
#define R_TEXTBOX_TEXHEIGHT YREG(17)
|
||||
#define R_TEXTBOX_WIDTH YREG(22)
|
||||
#define R_TEXTBOX_HEIGHT YREG(23)
|
||||
#define R_MESSAGE_DEBUGGER_SELECT YREG(78)
|
||||
#define R_MESSAGE_DEBUGGER_TEXTID YREG(79)
|
||||
#define R_TEXT_LINE_SPACING XREG(56)
|
||||
#define R_TEXT_CHAR_SCALE XREG(57)
|
||||
#define R_TEXTBOX_ICON_XPOS YREG(71)
|
||||
#define R_TEXTBOX_ICON_YPOS YREG(72)
|
||||
#define R_TEXTBOX_ICON_SIZE YREG(75)
|
||||
#define R_TEXTBOX_X VREG(0)
|
||||
#define R_TEXTBOX_Y VREG(1)
|
||||
#define R_TEXTBOX_END_XPOS XREG(64)
|
||||
#define R_TEXTBOX_END_YPOS XREG(65)
|
||||
#define R_TEXTBOX_WIDTH_TARGET XREG(74)
|
||||
#define R_TEXTBOX_HEIGHT_TARGET XREG(75)
|
||||
#define R_TEXTBOX_TEXWIDTH_TARGET XREG(76)
|
||||
#define R_TEXTBOX_TEXHEIGHT_TARGET XREG(77)
|
||||
#define R_TEXT_ADJUST_COLOR_1_R VREG(33)
|
||||
#define R_TEXT_ADJUST_COLOR_1_G VREG(34)
|
||||
#define R_TEXT_ADJUST_COLOR_1_B VREG(35)
|
||||
#define R_TEXT_ADJUST_COLOR_2_R VREG(36)
|
||||
#define R_TEXT_ADJUST_COLOR_2_G VREG(37)
|
||||
#define R_TEXT_ADJUST_COLOR_2_B VREG(38)
|
||||
#define R_TEXT_CHOICE_XPOS XREG(66)
|
||||
#define R_TEXT_CHOICE_YPOS(choice) XREG(67 + (choice))
|
||||
#define R_TEXT_INIT_XPOS XREG(54)
|
||||
#define R_TEXT_INIT_YPOS XREG(55)
|
||||
#define R_TEXTBOX_BG_YPOS XREG(61)
|
||||
#define R_TEXTBOX_CLEF_XPOS VREG(7)
|
||||
#define R_TEXTBOX_CLEF_YPOS VREG(8)
|
||||
#define R_OCARINA_NOTES_XPOS VREG(28)
|
||||
#define R_OCARINA_NOTES_YPOS(note) VREG(45 + (note))
|
||||
#define R_OCARINA_NOTES_XPOS_OFFSET VREG(29)
|
||||
#define R_OCARINA_NOTES_YPOS_OFFSET VREG(51)
|
||||
|
||||
#endif
|
827
soh/include/segment_symbols.h
Normal file
827
soh/include/segment_symbols.h
Normal file
|
@ -0,0 +1,827 @@
|
|||
#ifndef SEGMENT_SYMBOLS_H
|
||||
#define SEGMENT_SYMBOLS_H
|
||||
|
||||
#include "z64.h"
|
||||
|
||||
#define DECLARE_SEGMENT(name) \
|
||||
//extern u8 _##name##SegmentStart[]; \
|
||||
//extern u8 _##name##SegmentEnd[];
|
||||
|
||||
#define DECLARE_ROM_SEGMENT(name) \
|
||||
//extern u8 _##name##SegmentRomStart[]; \
|
||||
//extern u8 _##name##SegmentRomEnd[];
|
||||
|
||||
#define DECLARE_BSS_SEGMENT(name) \
|
||||
extern u8 _##name##SegmentBssStart[]; \
|
||||
extern u8 _##name##SegmentBssEnd[];
|
||||
|
||||
#define DECLARE_OVERLAY_SEGMENT(name) \
|
||||
//DECLARE_SEGMENT(ovl_##name) \
|
||||
//DECLARE_ROM_SEGMENT(ovl_##name)
|
||||
|
||||
DECLARE_SEGMENT(boot)
|
||||
DECLARE_ROM_SEGMENT(boot)
|
||||
|
||||
DECLARE_SEGMENT(dmadata)
|
||||
DECLARE_ROM_SEGMENT(dmadata)
|
||||
|
||||
DECLARE_ROM_SEGMENT(Audiobank)
|
||||
DECLARE_ROM_SEGMENT(Audioseq)
|
||||
DECLARE_ROM_SEGMENT(Audiotable)
|
||||
|
||||
DECLARE_SEGMENT(link_animetion)
|
||||
DECLARE_ROM_SEGMENT(link_animetion)
|
||||
|
||||
DECLARE_ROM_SEGMENT(icon_item_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_24_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_field_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_dungeon_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_gameover_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_nes_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_ger_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_fra_static)
|
||||
DECLARE_ROM_SEGMENT(item_name_static)
|
||||
DECLARE_ROM_SEGMENT(map_name_static)
|
||||
DECLARE_ROM_SEGMENT(do_action_static)
|
||||
DECLARE_ROM_SEGMENT(message_static)
|
||||
DECLARE_ROM_SEGMENT(message_texture_static)
|
||||
DECLARE_ROM_SEGMENT(nes_font_static)
|
||||
|
||||
DECLARE_SEGMENT(nes_message_data_static)
|
||||
DECLARE_ROM_SEGMENT(nes_message_data_static)
|
||||
DECLARE_SEGMENT(ger_message_data_static)
|
||||
DECLARE_ROM_SEGMENT(ger_message_data_static)
|
||||
DECLARE_SEGMENT(fra_message_data_static)
|
||||
DECLARE_ROM_SEGMENT(fra_message_data_static)
|
||||
DECLARE_SEGMENT(staff_message_data_static)
|
||||
DECLARE_ROM_SEGMENT(staff_message_data_static)
|
||||
|
||||
DECLARE_ROM_SEGMENT(map_grand_static)
|
||||
DECLARE_ROM_SEGMENT(map_i_static)
|
||||
DECLARE_ROM_SEGMENT(map_48x85_static)
|
||||
|
||||
DECLARE_SEGMENT(code)
|
||||
DECLARE_ROM_SEGMENT(code)
|
||||
DECLARE_BSS_SEGMENT(code)
|
||||
|
||||
DECLARE_OVERLAY_SEGMENT(title)
|
||||
DECLARE_OVERLAY_SEGMENT(select)
|
||||
DECLARE_OVERLAY_SEGMENT(opening)
|
||||
DECLARE_OVERLAY_SEGMENT(file_choose)
|
||||
DECLARE_OVERLAY_SEGMENT(kaleido_scope)
|
||||
DECLARE_OVERLAY_SEGMENT(player_actor)
|
||||
DECLARE_OVERLAY_SEGMENT(map_mark_data)
|
||||
|
||||
DECLARE_ROM_SEGMENT(g_pn_01)
|
||||
DECLARE_ROM_SEGMENT(g_pn_02)
|
||||
DECLARE_ROM_SEGMENT(g_pn_03)
|
||||
DECLARE_ROM_SEGMENT(g_pn_04)
|
||||
DECLARE_ROM_SEGMENT(g_pn_05)
|
||||
DECLARE_ROM_SEGMENT(g_pn_06)
|
||||
DECLARE_ROM_SEGMENT(g_pn_07)
|
||||
DECLARE_ROM_SEGMENT(g_pn_08)
|
||||
DECLARE_ROM_SEGMENT(g_pn_09)
|
||||
DECLARE_ROM_SEGMENT(g_pn_10)
|
||||
DECLARE_ROM_SEGMENT(g_pn_11)
|
||||
DECLARE_ROM_SEGMENT(g_pn_12)
|
||||
DECLARE_ROM_SEGMENT(g_pn_13)
|
||||
DECLARE_ROM_SEGMENT(g_pn_14)
|
||||
DECLARE_ROM_SEGMENT(g_pn_15)
|
||||
DECLARE_ROM_SEGMENT(g_pn_16)
|
||||
DECLARE_ROM_SEGMENT(g_pn_17)
|
||||
DECLARE_ROM_SEGMENT(g_pn_18)
|
||||
DECLARE_ROM_SEGMENT(g_pn_19)
|
||||
DECLARE_ROM_SEGMENT(g_pn_20)
|
||||
DECLARE_ROM_SEGMENT(g_pn_21)
|
||||
DECLARE_ROM_SEGMENT(g_pn_22)
|
||||
DECLARE_ROM_SEGMENT(g_pn_23)
|
||||
DECLARE_ROM_SEGMENT(g_pn_24)
|
||||
DECLARE_ROM_SEGMENT(g_pn_25)
|
||||
DECLARE_ROM_SEGMENT(g_pn_26)
|
||||
DECLARE_ROM_SEGMENT(g_pn_27)
|
||||
DECLARE_ROM_SEGMENT(g_pn_28)
|
||||
DECLARE_ROM_SEGMENT(g_pn_29)
|
||||
DECLARE_ROM_SEGMENT(g_pn_30)
|
||||
DECLARE_ROM_SEGMENT(g_pn_31)
|
||||
DECLARE_ROM_SEGMENT(g_pn_32)
|
||||
DECLARE_ROM_SEGMENT(g_pn_33)
|
||||
DECLARE_ROM_SEGMENT(g_pn_34)
|
||||
DECLARE_ROM_SEGMENT(g_pn_35)
|
||||
DECLARE_ROM_SEGMENT(g_pn_36)
|
||||
DECLARE_ROM_SEGMENT(g_pn_37)
|
||||
DECLARE_ROM_SEGMENT(g_pn_38)
|
||||
DECLARE_ROM_SEGMENT(g_pn_39)
|
||||
DECLARE_ROM_SEGMENT(g_pn_40)
|
||||
DECLARE_ROM_SEGMENT(g_pn_41)
|
||||
DECLARE_ROM_SEGMENT(g_pn_42)
|
||||
DECLARE_ROM_SEGMENT(g_pn_43)
|
||||
DECLARE_ROM_SEGMENT(g_pn_44)
|
||||
DECLARE_ROM_SEGMENT(g_pn_45)
|
||||
DECLARE_ROM_SEGMENT(g_pn_46)
|
||||
DECLARE_ROM_SEGMENT(g_pn_47)
|
||||
DECLARE_ROM_SEGMENT(g_pn_48)
|
||||
DECLARE_ROM_SEGMENT(g_pn_49)
|
||||
DECLARE_ROM_SEGMENT(g_pn_50)
|
||||
DECLARE_ROM_SEGMENT(g_pn_51)
|
||||
DECLARE_ROM_SEGMENT(g_pn_52)
|
||||
DECLARE_ROM_SEGMENT(g_pn_53)
|
||||
DECLARE_ROM_SEGMENT(g_pn_54)
|
||||
DECLARE_ROM_SEGMENT(g_pn_55)
|
||||
DECLARE_ROM_SEGMENT(g_pn_56)
|
||||
DECLARE_ROM_SEGMENT(g_pn_57)
|
||||
|
||||
DECLARE_ROM_SEGMENT(z_select_static)
|
||||
DECLARE_ROM_SEGMENT(nintendo_rogo_static)
|
||||
DECLARE_ROM_SEGMENT(title_static)
|
||||
DECLARE_ROM_SEGMENT(parameter_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine0_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine0_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine1_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine1_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine2_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine2_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine3_static)
|
||||
DECLARE_ROM_SEGMENT(vr_fine3_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud0_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud0_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud1_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud1_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud2_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud2_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud3_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud3_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_holy0_static)
|
||||
DECLARE_ROM_SEGMENT(vr_holy0_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_holy1_static)
|
||||
DECLARE_ROM_SEGMENT(vr_holy1_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_MDVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_MDVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_MNVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_MNVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_RUVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_RUVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_LHVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_LHVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KHVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KHVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_K3VR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_K3VR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_K4VR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_K4VR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_K5VR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_K5VR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_SP1a_static)
|
||||
DECLARE_ROM_SEGMENT(vr_SP1a_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_MLVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_MLVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KKRVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KKRVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KR3VR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KR3VR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_IPVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_IPVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KSVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_KSVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_GLVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_GLVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_ZRVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_ZRVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_DGVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_DGVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_ALVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_ALVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_NSVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_NSVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_LBVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_LBVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_TTVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_TTVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(vr_FCVR_static)
|
||||
DECLARE_ROM_SEGMENT(vr_FCVR_pal_static)
|
||||
DECLARE_ROM_SEGMENT(elf_message_field)
|
||||
DECLARE_ROM_SEGMENT(elf_message_ydan)
|
||||
|
||||
// SCENES AND ROOMS
|
||||
DECLARE_ROM_SEGMENT(ydan_scene)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_0)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_1)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_2)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_3)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_4)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_5)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_6)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_7)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_8)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_9)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_10)
|
||||
DECLARE_ROM_SEGMENT(ydan_room_11)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ddan_scene)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_0)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_1)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_2)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_3)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_4)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_5)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_6)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_7)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_8)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_9)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_10)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_11)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_12)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_13)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_14)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_15)
|
||||
DECLARE_ROM_SEGMENT(ddan_room_16)
|
||||
|
||||
DECLARE_ROM_SEGMENT(bdan_scene)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_0)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_1)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_2)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_3)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_4)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_5)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_6)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_7)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_8)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_9)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_10)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_11)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_12)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_13)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_14)
|
||||
DECLARE_ROM_SEGMENT(bdan_room_15)
|
||||
|
||||
DECLARE_ROM_SEGMENT(Bmori1_scene)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_0)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_1)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_2)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_3)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_4)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_5)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_6)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_7)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_8)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_9)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_10)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_11)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_12)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_13)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_14)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_15)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_16)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_17)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_18)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_19)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_20)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_21)
|
||||
DECLARE_ROM_SEGMENT(Bmori1_room_22)
|
||||
|
||||
DECLARE_ROM_SEGMENT(HIDAN_scene)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_0)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_1)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_2)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_3)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_4)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_5)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_6)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_7)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_8)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_9)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_10)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_11)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_12)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_13)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_14)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_15)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_16)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_17)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_18)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_19)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_20)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_21)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_22)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_23)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_24)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_25)
|
||||
DECLARE_ROM_SEGMENT(HIDAN_room_26)
|
||||
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_scene)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_0)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_1)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_2)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_3)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_4)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_5)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_6)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_7)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_8)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_9)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_10)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_11)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_12)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_13)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_14)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_15)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_16)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_17)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_18)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_19)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_20)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_21)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_room_22)
|
||||
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_scene)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_0)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_1)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_2)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_3)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_4)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_5)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_6)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_7)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_8)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_9)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_10)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_11)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_12)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_13)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_14)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_15)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_16)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_17)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_18)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_19)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_20)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_21)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_22)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_23)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_24)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_25)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_26)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_27)
|
||||
DECLARE_ROM_SEGMENT(jyasinzou_room_28)
|
||||
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_scene)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_0)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_1)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_2)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_3)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_4)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_5)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_6)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_7)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_8)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_9)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_10)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_11)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_12)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_13)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_14)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_15)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_16)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_17)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_18)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_19)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_20)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_21)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_room_22)
|
||||
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_scene)
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_room_0)
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_room_1)
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_room_2)
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_room_3)
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_room_4)
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_room_5)
|
||||
DECLARE_ROM_SEGMENT(HAKAdanCH_room_6)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_scene)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_0)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_1)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_2)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_3)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_4)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_5)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_6)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_7)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_8)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_9)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_10)
|
||||
DECLARE_ROM_SEGMENT(ice_doukutu_room_11)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganon_scene)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_0)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_1)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_2)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_3)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_4)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_5)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_6)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_7)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_8)
|
||||
DECLARE_ROM_SEGMENT(ganon_room_9)
|
||||
|
||||
DECLARE_ROM_SEGMENT(men_scene)
|
||||
DECLARE_ROM_SEGMENT(men_room_0)
|
||||
DECLARE_ROM_SEGMENT(men_room_1)
|
||||
DECLARE_ROM_SEGMENT(men_room_2)
|
||||
DECLARE_ROM_SEGMENT(men_room_3)
|
||||
DECLARE_ROM_SEGMENT(men_room_4)
|
||||
DECLARE_ROM_SEGMENT(men_room_5)
|
||||
DECLARE_ROM_SEGMENT(men_room_6)
|
||||
DECLARE_ROM_SEGMENT(men_room_7)
|
||||
DECLARE_ROM_SEGMENT(men_room_8)
|
||||
DECLARE_ROM_SEGMENT(men_room_9)
|
||||
DECLARE_ROM_SEGMENT(men_room_10)
|
||||
|
||||
DECLARE_ROM_SEGMENT(gerudoway_scene)
|
||||
DECLARE_ROM_SEGMENT(gerudoway_room_0)
|
||||
DECLARE_ROM_SEGMENT(gerudoway_room_1)
|
||||
DECLARE_ROM_SEGMENT(gerudoway_room_2)
|
||||
DECLARE_ROM_SEGMENT(gerudoway_room_3)
|
||||
DECLARE_ROM_SEGMENT(gerudoway_room_4)
|
||||
DECLARE_ROM_SEGMENT(gerudoway_room_5)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganontika_scene)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_0)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_1)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_2)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_3)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_4)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_5)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_6)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_7)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_8)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_9)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_10)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_11)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_12)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_13)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_14)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_15)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_16)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_17)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_18)
|
||||
DECLARE_ROM_SEGMENT(ganontika_room_19)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganon_sonogo_scene)
|
||||
DECLARE_ROM_SEGMENT(ganon_sonogo_room_0)
|
||||
DECLARE_ROM_SEGMENT(ganon_sonogo_room_1)
|
||||
DECLARE_ROM_SEGMENT(ganon_sonogo_room_2)
|
||||
DECLARE_ROM_SEGMENT(ganon_sonogo_room_3)
|
||||
DECLARE_ROM_SEGMENT(ganon_sonogo_room_4)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganontikasonogo_scene)
|
||||
DECLARE_ROM_SEGMENT(ganontikasonogo_room_0)
|
||||
DECLARE_ROM_SEGMENT(ganontikasonogo_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(takaraya_scene)
|
||||
DECLARE_ROM_SEGMENT(takaraya_room_0)
|
||||
DECLARE_ROM_SEGMENT(takaraya_room_1)
|
||||
DECLARE_ROM_SEGMENT(takaraya_room_2)
|
||||
DECLARE_ROM_SEGMENT(takaraya_room_3)
|
||||
DECLARE_ROM_SEGMENT(takaraya_room_4)
|
||||
DECLARE_ROM_SEGMENT(takaraya_room_5)
|
||||
DECLARE_ROM_SEGMENT(takaraya_room_6)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ydan_boss_scene)
|
||||
DECLARE_ROM_SEGMENT(ydan_boss_room_0)
|
||||
DECLARE_ROM_SEGMENT(ydan_boss_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ddan_boss_scene)
|
||||
DECLARE_ROM_SEGMENT(ddan_boss_room_0)
|
||||
DECLARE_ROM_SEGMENT(ddan_boss_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(bdan_boss_scene)
|
||||
DECLARE_ROM_SEGMENT(bdan_boss_room_0)
|
||||
DECLARE_ROM_SEGMENT(bdan_boss_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(moribossroom_scene)
|
||||
DECLARE_ROM_SEGMENT(moribossroom_room_0)
|
||||
DECLARE_ROM_SEGMENT(moribossroom_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(FIRE_bs_scene)
|
||||
DECLARE_ROM_SEGMENT(FIRE_bs_room_0)
|
||||
DECLARE_ROM_SEGMENT(FIRE_bs_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_bs_scene)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_bs_room_0)
|
||||
DECLARE_ROM_SEGMENT(MIZUsin_bs_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(jyasinboss_scene)
|
||||
DECLARE_ROM_SEGMENT(jyasinboss_room_0)
|
||||
DECLARE_ROM_SEGMENT(jyasinboss_room_1)
|
||||
DECLARE_ROM_SEGMENT(jyasinboss_room_2)
|
||||
DECLARE_ROM_SEGMENT(jyasinboss_room_3)
|
||||
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_bs_scene)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_bs_room_0)
|
||||
DECLARE_ROM_SEGMENT(HAKAdan_bs_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganon_boss_scene)
|
||||
DECLARE_ROM_SEGMENT(ganon_boss_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganon_final_scene)
|
||||
DECLARE_ROM_SEGMENT(ganon_final_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(entra_scene)
|
||||
DECLARE_ROM_SEGMENT(entra_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(entra_n_scene)
|
||||
DECLARE_ROM_SEGMENT(entra_n_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(enrui_scene)
|
||||
DECLARE_ROM_SEGMENT(enrui_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(market_alley_scene)
|
||||
DECLARE_ROM_SEGMENT(market_alley_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(market_alley_n_scene)
|
||||
DECLARE_ROM_SEGMENT(market_alley_n_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(market_day_scene)
|
||||
DECLARE_ROM_SEGMENT(market_day_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(market_night_scene)
|
||||
DECLARE_ROM_SEGMENT(market_night_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(market_ruins_scene)
|
||||
DECLARE_ROM_SEGMENT(market_ruins_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(shrine_scene)
|
||||
DECLARE_ROM_SEGMENT(shrine_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(shrine_n_scene)
|
||||
DECLARE_ROM_SEGMENT(shrine_n_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(shrine_r_scene)
|
||||
DECLARE_ROM_SEGMENT(shrine_r_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kokiri_home_scene)
|
||||
DECLARE_ROM_SEGMENT(kokiri_home_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kokiri_home3_scene)
|
||||
DECLARE_ROM_SEGMENT(kokiri_home3_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kokiri_home4_scene)
|
||||
DECLARE_ROM_SEGMENT(kokiri_home4_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kokiri_home5_scene)
|
||||
DECLARE_ROM_SEGMENT(kokiri_home5_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kakariko_scene)
|
||||
DECLARE_ROM_SEGMENT(kakariko_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kakariko3_scene)
|
||||
DECLARE_ROM_SEGMENT(kakariko3_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(shop1_scene)
|
||||
DECLARE_ROM_SEGMENT(shop1_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kokiri_shop_scene)
|
||||
DECLARE_ROM_SEGMENT(kokiri_shop_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(golon_scene)
|
||||
DECLARE_ROM_SEGMENT(golon_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(zoora_scene)
|
||||
DECLARE_ROM_SEGMENT(zoora_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(drag_scene)
|
||||
DECLARE_ROM_SEGMENT(drag_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(alley_shop_scene)
|
||||
DECLARE_ROM_SEGMENT(alley_shop_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(night_shop_scene)
|
||||
DECLARE_ROM_SEGMENT(night_shop_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(face_shop_scene)
|
||||
DECLARE_ROM_SEGMENT(face_shop_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(link_home_scene)
|
||||
DECLARE_ROM_SEGMENT(link_home_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(impa_scene)
|
||||
DECLARE_ROM_SEGMENT(impa_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(malon_stable_scene)
|
||||
DECLARE_ROM_SEGMENT(malon_stable_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(labo_scene)
|
||||
DECLARE_ROM_SEGMENT(labo_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hylia_labo_scene)
|
||||
DECLARE_ROM_SEGMENT(hylia_labo_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(tent_scene)
|
||||
DECLARE_ROM_SEGMENT(tent_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hut_scene)
|
||||
DECLARE_ROM_SEGMENT(hut_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(daiyousei_izumi_scene)
|
||||
DECLARE_ROM_SEGMENT(daiyousei_izumi_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(yousei_izumi_tate_scene)
|
||||
DECLARE_ROM_SEGMENT(yousei_izumi_tate_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(yousei_izumi_yoko_scene)
|
||||
DECLARE_ROM_SEGMENT(yousei_izumi_yoko_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kakusiana_scene)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_0)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_1)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_2)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_3)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_4)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_5)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_6)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_7)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_8)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_9)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_10)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_11)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_12)
|
||||
DECLARE_ROM_SEGMENT(kakusiana_room_13)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hakaana_scene)
|
||||
DECLARE_ROM_SEGMENT(hakaana_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hakaana2_scene)
|
||||
DECLARE_ROM_SEGMENT(hakaana2_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hakaana_ouke_scene)
|
||||
DECLARE_ROM_SEGMENT(hakaana_ouke_room_0)
|
||||
DECLARE_ROM_SEGMENT(hakaana_ouke_room_1)
|
||||
DECLARE_ROM_SEGMENT(hakaana_ouke_room_2)
|
||||
|
||||
DECLARE_ROM_SEGMENT(syatekijyou_scene)
|
||||
DECLARE_ROM_SEGMENT(syatekijyou_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(tokinoma_scene)
|
||||
DECLARE_ROM_SEGMENT(tokinoma_room_0)
|
||||
DECLARE_ROM_SEGMENT(tokinoma_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kenjyanoma_scene)
|
||||
DECLARE_ROM_SEGMENT(kenjyanoma_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hairal_niwa_scene)
|
||||
DECLARE_ROM_SEGMENT(hairal_niwa_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hairal_niwa_n_scene)
|
||||
DECLARE_ROM_SEGMENT(hairal_niwa_n_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hiral_demo_scene)
|
||||
DECLARE_ROM_SEGMENT(hiral_demo_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_scene)
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_room_0)
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_room_1)
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_room_2)
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_room_3)
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_room_4)
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_room_5)
|
||||
DECLARE_ROM_SEGMENT(hakasitarelay_room_6)
|
||||
|
||||
DECLARE_ROM_SEGMENT(turibori_scene)
|
||||
DECLARE_ROM_SEGMENT(turibori_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(nakaniwa_scene)
|
||||
DECLARE_ROM_SEGMENT(nakaniwa_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(bowling_scene)
|
||||
DECLARE_ROM_SEGMENT(bowling_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(souko_scene)
|
||||
DECLARE_ROM_SEGMENT(souko_room_0)
|
||||
DECLARE_ROM_SEGMENT(souko_room_1)
|
||||
DECLARE_ROM_SEGMENT(souko_room_2)
|
||||
|
||||
DECLARE_ROM_SEGMENT(miharigoya_scene)
|
||||
DECLARE_ROM_SEGMENT(miharigoya_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(mahouya_scene)
|
||||
DECLARE_ROM_SEGMENT(mahouya_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganon_demo_scene)
|
||||
DECLARE_ROM_SEGMENT(ganon_demo_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(kinsuta_scene)
|
||||
DECLARE_ROM_SEGMENT(kinsuta_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot00_scene)
|
||||
DECLARE_ROM_SEGMENT(spot00_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot01_scene)
|
||||
DECLARE_ROM_SEGMENT(spot01_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot02_scene)
|
||||
DECLARE_ROM_SEGMENT(spot02_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot02_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot03_scene)
|
||||
DECLARE_ROM_SEGMENT(spot03_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot03_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot04_scene)
|
||||
DECLARE_ROM_SEGMENT(spot04_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot04_room_1)
|
||||
DECLARE_ROM_SEGMENT(spot04_room_2)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot05_scene)
|
||||
DECLARE_ROM_SEGMENT(spot05_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot06_scene)
|
||||
DECLARE_ROM_SEGMENT(spot06_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot07_scene)
|
||||
DECLARE_ROM_SEGMENT(spot07_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot07_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot08_scene)
|
||||
DECLARE_ROM_SEGMENT(spot08_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot09_scene)
|
||||
DECLARE_ROM_SEGMENT(spot09_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot10_scene)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_1)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_2)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_3)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_4)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_5)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_6)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_7)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_8)
|
||||
DECLARE_ROM_SEGMENT(spot10_room_9)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot11_scene)
|
||||
DECLARE_ROM_SEGMENT(spot11_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot12_scene)
|
||||
DECLARE_ROM_SEGMENT(spot12_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot12_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot13_scene)
|
||||
DECLARE_ROM_SEGMENT(spot13_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot13_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot15_scene)
|
||||
DECLARE_ROM_SEGMENT(spot15_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot16_scene)
|
||||
DECLARE_ROM_SEGMENT(spot16_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot17_scene)
|
||||
DECLARE_ROM_SEGMENT(spot17_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot17_room_1)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot18_scene)
|
||||
DECLARE_ROM_SEGMENT(spot18_room_0)
|
||||
DECLARE_ROM_SEGMENT(spot18_room_1)
|
||||
DECLARE_ROM_SEGMENT(spot18_room_2)
|
||||
DECLARE_ROM_SEGMENT(spot18_room_3)
|
||||
|
||||
DECLARE_ROM_SEGMENT(spot20_scene)
|
||||
DECLARE_ROM_SEGMENT(spot20_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(ganon_tou_scene)
|
||||
DECLARE_ROM_SEGMENT(ganon_tou_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(test01_scene)
|
||||
DECLARE_ROM_SEGMENT(test01_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(besitu_scene)
|
||||
DECLARE_ROM_SEGMENT(besitu_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(depth_test_scene)
|
||||
DECLARE_ROM_SEGMENT(depth_test_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(syotes_scene)
|
||||
DECLARE_ROM_SEGMENT(syotes_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(syotes2_scene)
|
||||
DECLARE_ROM_SEGMENT(syotes2_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(sutaru_scene)
|
||||
DECLARE_ROM_SEGMENT(sutaru_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(hairal_niwa2_scene)
|
||||
DECLARE_ROM_SEGMENT(hairal_niwa2_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(sasatest_scene)
|
||||
DECLARE_ROM_SEGMENT(sasatest_room_0)
|
||||
|
||||
DECLARE_ROM_SEGMENT(testroom_scene)
|
||||
DECLARE_ROM_SEGMENT(testroom_room_0)
|
||||
DECLARE_ROM_SEGMENT(testroom_room_1)
|
||||
DECLARE_ROM_SEGMENT(testroom_room_2)
|
||||
DECLARE_ROM_SEGMENT(testroom_room_3)
|
||||
DECLARE_ROM_SEGMENT(testroom_room_4)
|
||||
|
||||
|
||||
#endif
|
260
soh/include/sequence.h
Normal file
260
soh/include/sequence.h
Normal file
|
@ -0,0 +1,260 @@
|
|||
#ifndef SEQUENCE_H
|
||||
#define SEQUENCE_H
|
||||
|
||||
#define NA_BGM_STOP 0x100000FF
|
||||
|
||||
#define NA_BGM_GENERAL_SFX 0x0 // General Sound Effects
|
||||
#define NA_BGM_NATURE_AMBIENCE 0x1 // Environmental nature background sounds
|
||||
#define NA_BGM_FIELD_LOGIC 0x2 // Hyrule Field
|
||||
#define NA_BGM_FIELD_INIT 0x3 // Hyrule Field Initial Segment From Loading Area
|
||||
#define NA_BGM_FIELD_DEFAULT_1 0x4 // Hyrule Field Moving Segment 1
|
||||
#define NA_BGM_FIELD_DEFAULT_2 0x5 // Hyrule Field Moving Segment 2
|
||||
#define NA_BGM_FIELD_DEFAULT_3 0x6 // Hyrule Field Moving Segment 3
|
||||
#define NA_BGM_FIELD_DEFAULT_4 0x7 // Hyrule Field Moving Segment 4
|
||||
#define NA_BGM_FIELD_DEFAULT_5 0x8 // Hyrule Field Moving Segment 5
|
||||
#define NA_BGM_FIELD_DEFAULT_6 0x9 // Hyrule Field Moving Segment 6
|
||||
#define NA_BGM_FIELD_DEFAULT_7 0x0A // Hyrule Field Moving Segment 7
|
||||
#define NA_BGM_FIELD_DEFAULT_8 0x0B // Hyrule Field Moving Segment 8
|
||||
#define NA_BGM_FIELD_DEFAULT_9 0x0C // Hyrule Field Moving Segment 9
|
||||
#define NA_BGM_FIELD_DEFAULT_A 0x0D // Hyrule Field Moving Segment 10
|
||||
#define NA_BGM_FIELD_DEFAULT_B 0x0E // Hyrule Field Moving Segment 11
|
||||
#define NA_BGM_FIELD_ENEMY_INIT 0x0F // Hyrule Field Enemy Approaches
|
||||
#define NA_BGM_FIELD_ENEMY_1 0x10 // Hyrule Field Enemy Near Segment 1
|
||||
#define NA_BGM_FIELD_ENEMY_2 0x11 // Hyrule Field Enemy Near Segment 2
|
||||
#define NA_BGM_FIELD_ENEMY_3 0x12 // Hyrule Field Enemy Near Segment 3
|
||||
#define NA_BGM_FIELD_ENEMY_4 0x13 // Hyrule Field Enemy Near Segment 4
|
||||
#define NA_BGM_FIELD_STILL_1 0x14 // Hyrule Field Standing Still Segment 1
|
||||
#define NA_BGM_FIELD_STILL_2 0x15 // Hyrule Field Standing Still Segment 2
|
||||
#define NA_BGM_FIELD_STILL_3 0x16 // Hyrule Field Standing Still Segment 3
|
||||
#define NA_BGM_FIELD_STILL_4 0x17 // Hyrule Field Standing Still Segment 4
|
||||
#define NA_BGM_DUNGEON 0x18 // Dodongo's Cavern
|
||||
#define NA_BGM_KAKARIKO_ADULT 0x19 // Kakariko Village (Adult)
|
||||
#define NA_BGM_ENEMY 0x1A // Battle
|
||||
#define NA_BGM_BOSS 0x1B // Boss Battle "NA_BGM_BOSS00"
|
||||
#define NA_BGM_INSIDE_DEKU_TREE 0x1C // Inside the Deku Tree "NA_BGM_FAIRY_DUNGEON"
|
||||
#define NA_BGM_MARKET 0x1D // Market
|
||||
#define NA_BGM_TITLE 0x1E // Title Theme
|
||||
#define NA_BGM_LINK_HOUSE 0x1F // House
|
||||
#define NA_BGM_GAME_OVER 0x20 // Game Over
|
||||
#define NA_BGM_BOSS_CLEAR 0x21 // Boss Clear
|
||||
#define NA_BGM_ITEM_GET 0x22 // Obtain Item
|
||||
#define NA_BGM_OPENING_GANON 0x23 // Enter Ganondorf
|
||||
#define NA_BGM_HEART_GET 0x24 // Obtain Heart Container
|
||||
#define NA_BGM_OCA_LIGHT 0x25 // Prelude of Light
|
||||
#define NA_BGM_JABU_JABU 0x26 // Inside Jabu-Jabu's Belly "NA_BGM_BUYO_DUNGEON"
|
||||
#define NA_BGM_KAKARIKO_KID 0x27 // Kakariko Village (Child)
|
||||
#define NA_BGM_GREAT_FAIRY 0x28 // Great Fairy's Fountain "NA_BGM_GODESS"
|
||||
#define NA_BGM_ZELDA_THEME 0x29 // Zelda's Theme "NA_BGM_HIME"
|
||||
#define NA_BGM_FIRE_TEMPLE 0x2A // Fire Temple "NA_BGM_FIRE_DUNGEON"
|
||||
#define NA_BGM_OPEN_TRE_BOX 0x2B // Open Treasure Chest
|
||||
#define NA_BGM_FOREST_TEMPLE 0x2C // Forest Temple "NA_BGM_FORST_DUNGEON"
|
||||
#define NA_BGM_COURTYARD 0x2D // Hyrule Castle Courtyard "NA_BGM_HIRAL_GARDEN"
|
||||
#define NA_BGM_GANON_TOWER 0x2E // Ganondorf's Theme
|
||||
#define NA_BGM_LONLON 0x2F // Lon Lon Ranch "NA_BGM_RONRON"
|
||||
#define NA_BGM_GORON_CITY 0x30 // Goron City "NA_BGM_GORON"
|
||||
#define NA_BGM_FIELD_MORNING 0x31 // Hyrule Field Morning Theme
|
||||
#define NA_BGM_SPIRITUAL_STONE 0x32 // Spiritual Stone Get "NA_BGM_SPIRIT_STONE"
|
||||
#define NA_BGM_OCA_BOLERO 0x33 // Bolero of Fire "NA_BGM_OCA_FLAME"
|
||||
#define NA_BGM_OCA_MINUET 0x34 // Minuet of Forest "NA_BGM_OCA_WIND"
|
||||
#define NA_BGM_OCA_SERENADE 0x35 // Serenade of Water "NA_BGM_OCA_WATER"
|
||||
#define NA_BGM_OCA_REQUIEM 0x36 // Requiem of Spirit "NA_BGM_OCA_SOUL"
|
||||
#define NA_BGM_OCA_NOCTURNE 0x37 // Nocturne of Shadow "NA_BGM_OCA_DARKNESS"
|
||||
#define NA_BGM_MINI_BOSS 0x38 // Mini-Boss Battle "NA_BGM_MIDDLE_BOSS"
|
||||
#define NA_BGM_SMALL_ITEM_GET 0x39 // Obtain Small Item "NA_BGM_S_ITEM_GET"
|
||||
#define NA_BGM_TEMPLE_OF_TIME 0x3A // Temple of Time "NA_BGM_SHRINE_OF_TIME"
|
||||
#define NA_BGM_EVENT_CLEAR 0x3B // Escape from Lon Lon Ranch
|
||||
#define NA_BGM_KOKIRI 0x3C // Kokiri Forest
|
||||
#define NA_BGM_OCA_FAIRY_GET 0x3D // Obtain Fairy Ocarina "NA_BGM_OCA_YOUSEI"
|
||||
#define NA_BGM_SARIA_THEME 0x3E // Lost Woods "NA_BGM_MAYOIMORI"
|
||||
#define NA_BGM_SPIRIT_TEMPLE 0x3F // Spirit Temple "NA_BGM_SOUL_DUNGEON"
|
||||
#define NA_BGM_HORSE 0x40 // Horse Race
|
||||
#define NA_BGM_HORSE_GOAL 0x41 // Horse Race Goal
|
||||
#define NA_BGM_INGO 0x42 // Ingo's Theme
|
||||
#define NA_BGM_MEDALLION_GET 0x43 // Obtain Medallion "NA_BGM_MEDAL_GET"
|
||||
#define NA_BGM_OCA_SARIA 0x44 // Ocarina Saria's Song
|
||||
#define NA_BGM_OCA_EPONA 0x45 // Ocarina Epona's Song
|
||||
#define NA_BGM_OCA_ZELDA 0x46 // Ocarina Zelda's Lullaby
|
||||
#define NA_BGM_OCA_SUNS 0x47 // Ocarina Sun's Song "NA_BGM_OCA_SUNMOON"
|
||||
#define NA_BGM_OCA_TIME 0x48 // Ocarina Song of Time
|
||||
#define NA_BGM_OCA_STORM 0x49 // Ocarina Song of Storms
|
||||
#define NA_BGM_NAVI_OPENING 0x4A // Fairy Flying "NA_BGM_NAVI"
|
||||
#define NA_BGM_DEKU_TREE_CS 0x4B // Deku Tree "NA_BGM_DEKUNOKI"
|
||||
#define NA_BGM_WINDMILL 0x4C // Windmill Hut "NA_BGM_FUSHA"
|
||||
#define NA_BGM_HYRULE_CS 0x4D // Legend of Hyrule "NA_BGM_HIRAL_DEMO"
|
||||
#define NA_BGM_MINI_GAME 0x4E // Shooting Gallery
|
||||
#define NA_BGM_SHEIK 0x4F // Sheik's Theme "NA_BGM_SEAK"
|
||||
#define NA_BGM_ZORA_DOMAIN 0x50 // Zora's Domain "NA_BGM_ZORA"
|
||||
#define NA_BGM_APPEAR 0x51 // Enter Zelda
|
||||
#define NA_BGM_ADULT_LINK 0x52 // Goodbye to Zelda
|
||||
#define NA_BGM_MASTER_SWORD 0x53 // Master Sword
|
||||
#define NA_BGM_INTRO_GANON 0x54
|
||||
#define NA_BGM_SHOP 0x55 // Shop
|
||||
#define NA_BGM_CHAMBER_OF_SAGES 0x56 // Chamber of the Sages "NA_BGM_KENJA"
|
||||
#define NA_BGM_FILE_SELECT 0x57 // File Select
|
||||
#define NA_BGM_ICE_CAVERN 0x58 // Ice Cavern "NA_BGM_ICE_DUNGEON"
|
||||
#define NA_BGM_DOOR_OF_TIME 0x59 // Open Door of Temple of Time "NA_BGM_GATE_OPEN"
|
||||
#define NA_BGM_OWL 0x5A // Kaepora Gaebora's Theme
|
||||
#define NA_BGM_SHADOW_TEMPLE 0x5B // Shadow Temple "NA_BGM_DARKNESS_DUNGEON"
|
||||
#define NA_BGM_WATER_TEMPLE 0x5C // Water Temple "NA_BGM_AQUA_DUNGEON"
|
||||
#define NA_BGM_BRIDGE_TO_GANONS 0x5D // Ganon's Castle Bridge "NA_BGM_BRIDGE"
|
||||
#define NA_BGM_OCARINA_OF_TIME 0x5E // Ocarina of Time "NA_BGM_SARIA"
|
||||
#define NA_BGM_GERUDO_VALLEY 0x5F // Gerudo Valley "NA_BGM_GERUDO"
|
||||
#define NA_BGM_POTION_SHOP 0x60 // Potion Shop "NA_BGM_DRUGSTORE"
|
||||
#define NA_BGM_KOTAKE_KOUME 0x61 // Kotake & Koume's Theme
|
||||
#define NA_BGM_ESCAPE 0x62 // Escape from Ganon's Castle
|
||||
#define NA_BGM_UNDERGROUND 0x63 // Ganon's Castle Under Ground
|
||||
#define NA_BGM_GANONDORF_BOSS 0x64 // Ganondorf Battle
|
||||
#define NA_BGM_GANON_BOSS 0x65 // Ganon Battle
|
||||
#define NA_BGM_END_DEMO 0x66 // Seal of Six Sages
|
||||
#define NA_BGM_STAFF_1 0x67 // End Credits I
|
||||
#define NA_BGM_STAFF_2 0x68 // End Credits II
|
||||
#define NA_BGM_STAFF_3 0x69 // End Credits III
|
||||
#define NA_BGM_STAFF_4 0x6A // End Credits IV
|
||||
#define NA_BGM_FIRE_BOSS 0x6B // King Dodongo & Volvagia Boss Battle "NA_BGM_BOSS01"
|
||||
#define NA_BGM_TIMED_MINI_GAME 0x6C // Mini-Game
|
||||
#define NA_BGM_VARIOUS_SFX 0x6D // A small collection of various sound effects
|
||||
#define NA_BGM_NO_MUSIC 0x7F // No bgm music is played
|
||||
#define NA_BGM_NATURE_SFX_RAIN 0x80 // Related to rain
|
||||
#define NA_BGM_DISABLED 0xFFFF
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SEQ_PLAYER_BGM_MAIN,
|
||||
/* 1 */ SEQ_PLAYER_FANFARE,
|
||||
/* 2 */ SEQ_PLAYER_SFX,
|
||||
/* 3 */ SEQ_PLAYER_BGM_SUB
|
||||
} SequencePlayerId;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SEQ_MODE_DEFAULT,
|
||||
/* 1 */ SEQ_MODE_ENEMY,
|
||||
/* 2 */ SEQ_MODE_STILL, // Not moving or first-person view
|
||||
/* 3 */ SEQ_MODE_IGNORE
|
||||
} SequenceMode;
|
||||
|
||||
typedef enum {
|
||||
/* 0x0 */ CHANNEL_IO_PORT_0,
|
||||
/* 0x1 */ CHANNEL_IO_PORT_1,
|
||||
/* 0x2 */ CHANNEL_IO_PORT_2,
|
||||
/* 0x3 */ CHANNEL_IO_PORT_3,
|
||||
/* 0x4 */ CHANNEL_IO_PORT_4,
|
||||
/* 0x5 */ CHANNEL_IO_PORT_5,
|
||||
/* 0x6 */ CHANNEL_IO_PORT_6,
|
||||
/* 0x7 */ CHANNEL_IO_PORT_7
|
||||
} ChannelIOPort;
|
||||
|
||||
typedef enum {
|
||||
/* 0x0 */ NATURE_CHANNEL_STREAM_0,
|
||||
/* 0x1 */ NATURE_CHANNEL_CRITTER_0,
|
||||
/* 0x2 */ NATURE_CHANNEL_CRITTER_1,
|
||||
/* 0x3 */ NATURE_CHANNEL_CRITTER_2,
|
||||
/* 0x4 */ NATURE_CHANNEL_CRITTER_3,
|
||||
/* 0x5 */ NATURE_CHANNEL_CRITTER_4,
|
||||
/* 0x6 */ NATURE_CHANNEL_CRITTER_5,
|
||||
/* 0x7 */ NATURE_CHANNEL_CRITTER_6,
|
||||
/* 0x8 */ NATURE_CHANNEL_CRITTER_7,
|
||||
/* 0xC */ NATURE_CHANNEL_STREAM_1 = 12,
|
||||
/* 0xD */ NATURE_CHANNEL_UNK,
|
||||
/* 0xE */ NATURE_CHANNEL_RAIN,
|
||||
/* 0xF */ NATURE_CHANNEL_LIGHTNING
|
||||
} NatureChannelIdx; // playerIdx = 0 (Overlaps with main bgm)
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ NATURE_ID_GENERAL_NIGHT,
|
||||
/* 0x01 */ NATURE_ID_MARKET_ENTRANCE,
|
||||
/* 0x02 */ NATURE_ID_KAKARIKO_REGION,
|
||||
/* 0x03 */ NATURE_ID_MARKET_RUINS,
|
||||
/* 0x04 */ NATURE_ID_KOKIRI_REGION,
|
||||
/* 0x05 */ NATURE_ID_MARKET_NIGHT,
|
||||
/* 0x06 */ NATURE_ID_06,
|
||||
/* 0x07 */ NATURE_ID_GANONS_LAIR,
|
||||
/* 0x08 */ NATURE_ID_08,
|
||||
/* 0x09 */ NATURE_ID_09,
|
||||
/* 0x0A */ NATURE_ID_WASTELAND,
|
||||
/* 0x0B */ NATURE_ID_COLOSSUS,
|
||||
/* 0x0C */ NATURE_ID_DEATH_MOUNTAIN_TRAIL,
|
||||
/* 0x0D */ NATURE_ID_0D,
|
||||
/* 0x0E */ NATURE_ID_0E,
|
||||
/* 0x0F */ NATURE_ID_0F,
|
||||
/* 0x10 */ NATURE_ID_10,
|
||||
/* 0x11 */ NATURE_ID_11,
|
||||
/* 0x12 */ NATURE_ID_12,
|
||||
/* 0x13 */ NATURE_ID_NONE,
|
||||
/* 0xFF */ NATURE_ID_DISABLED = 0xFF
|
||||
} NatureAmbienceId;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ NATURE_STREAM_RUSHING_WATER,
|
||||
/* 0x01 */ NATURE_STREAM_HOWLING_WIND,
|
||||
/* 0x02 */ NATURE_STREAM_SCREECHING_WIND,
|
||||
/* 0x03 */ NATURE_STREAM_SCREECHING_WIND_ALT1
|
||||
} NatureStreamId;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ NATURE_CRITTER_BIRD_CHIRP_1,
|
||||
/* 0x01 */ NATURE_CRITTER_TAP,
|
||||
/* 0x02 */ NATURE_CRITTER_BIRD_CHIRP_2,
|
||||
/* 0x03 */ NATURE_CRITTER_BIRD_CHIRP_1_ALT1,
|
||||
/* 0x04 */ NATURE_CRITTER_CRICKETS,
|
||||
/* 0x05 */ NATURE_CRITTER_BIRD_CHIRP_1_ALT2,
|
||||
/* 0x06 */ NATURE_CRITTER_LOUD_CHIRPING,
|
||||
/* 0x07 */ NATURE_CRITTER_BIRD_CHIRP_1_ALT3,
|
||||
/* 0x08 */ NATURE_CRITTER_BIRD_CHIRP_1_ALT4,
|
||||
/* 0x09 */ NATURE_CRITTER_CROWS_CAWS,
|
||||
/* 0x0A */ NATURE_CRITTER_SMALL_BIRD_CHIRPS,
|
||||
/* 0x0B */ NATURE_CRITTER_BIRD_SCREECH,
|
||||
/* 0x0C */ NATURE_CRITTER_BIRD_SONG,
|
||||
/* 0x0D */ NATURE_CRITTER_OWL_HOOT,
|
||||
/* 0x0E */ NATURE_CRITTER_HAWK_SCREECH,
|
||||
/* 0x0F */ NATURE_CRITTER_BIRD_CALL,
|
||||
/* 0x10 */ NATURE_CRITTER_CAWING_BIRD,
|
||||
/* 0x11 */ NATURE_CRITTER_CUCCO_CROWS,
|
||||
/* 0x12 */ NATURE_CRITTER_BIRD_CHIRP_2_ALT1,
|
||||
/* 0x13 */ NATURE_CRITTER_BIRD_CHIRP_1_ALT5
|
||||
} NatureAmimalId;
|
||||
|
||||
#define NATURE_IO_CRITTER_0_TYPE(type) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_0_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_0_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_0_PORT5(reverb) NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_1_TYPE(type) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_1_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_1_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_1_PORT5(reverb) NATURE_CHANNEL_CRITTER_1, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_2_TYPE(type) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_2_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_2_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_2_PORT5(reverb) NATURE_CHANNEL_CRITTER_2, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_3_TYPE(type) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_3_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_3_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_3_PORT5(reverb) NATURE_CHANNEL_CRITTER_3, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_4_TYPE(type) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_4_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_4_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_4_PORT5(reverb) NATURE_CHANNEL_CRITTER_4, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_5_TYPE(type) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_5_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_5_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_5_PORT5(reverb) NATURE_CHANNEL_CRITTER_5, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_CRITTER_6_TYPE(type) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_CRITTER_6_BEND_PITCH(bend) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_3, bend
|
||||
#define NATURE_IO_CRITTER_6_NUM_LAYERS(num) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_4, num
|
||||
#define NATURE_IO_CRITTER_6_PORT5(reverb) NATURE_CHANNEL_CRITTER_6, CHANNEL_IO_PORT_5, reverb
|
||||
|
||||
#define NATURE_IO_STREAM_0_TYPE(type) NATURE_CHANNEL_STREAM_0, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_STREAM_0_PORT3(data) NATURE_CHANNEL_STREAM_0, CHANNEL_IO_PORT_3, data
|
||||
#define NATURE_IO_STREAM_0_PORT4(data) NATURE_CHANNEL_STREAM_0, CHANNEL_IO_PORT_4, data
|
||||
|
||||
#define NATURE_IO_STREAM_1_TYPE(type) NATURE_CHANNEL_STREAM_1, CHANNEL_IO_PORT_2, type
|
||||
#define NATURE_IO_STREAM_1_PORT3(data) NATURE_CHANNEL_STREAM_1, CHANNEL_IO_PORT_3, data
|
||||
#define NATURE_IO_STREAM_1_PORT4(data) NATURE_CHANNEL_STREAM_1, CHANNEL_IO_PORT_4, data
|
||||
|
||||
#define NATURE_IO_ENTRIES_END 0xFF
|
||||
|
||||
#endif
|
1423
soh/include/sfx.h
Normal file
1423
soh/include/sfx.h
Normal file
File diff suppressed because it is too large
Load diff
483
soh/include/tables/actor_table.h
Normal file
483
soh/include/tables/actor_table.h
Normal file
|
@ -0,0 +1,483 @@
|
|||
/**
|
||||
* Actor Table
|
||||
*
|
||||
* DEFINE_ACTOR should be used for normal actors
|
||||
* - Argument 1: Name of the actor (without the ovl_ part)
|
||||
* - Argument 2: Enum value for this actor
|
||||
* - Argument 3: Allocation type (normal, permanent or absolute)
|
||||
*
|
||||
* DEFINE_ACTOR_INTERNAL should be used for actors that aren't an overlay, with the same arguments as DEFINE_ACTOR
|
||||
*
|
||||
* DEFINE_ACTOR_UNSET is needed to define empty entries from the original game
|
||||
*/
|
||||
/* 0x0000 */ DEFINE_ACTOR_INTERNAL(Player, ACTOR_PLAYER, ALLOCTYPE_NORMAL)
|
||||
/* 0x0001 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_1)
|
||||
/* 0x0002 */ DEFINE_ACTOR(En_Test, ACTOR_EN_TEST, ALLOCTYPE_NORMAL)
|
||||
/* 0x0003 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_3)
|
||||
/* 0x0004 */ DEFINE_ACTOR(En_GirlA, ACTOR_EN_GIRLA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0005 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_5)
|
||||
/* 0x0006 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_6)
|
||||
/* 0x0007 */ DEFINE_ACTOR(En_Part, ACTOR_EN_PART, ALLOCTYPE_NORMAL)
|
||||
/* 0x0008 */ DEFINE_ACTOR(En_Light, ACTOR_EN_LIGHT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0009 */ DEFINE_ACTOR(En_Door, ACTOR_EN_DOOR, ALLOCTYPE_PERMANENT)
|
||||
/* 0x000A */ DEFINE_ACTOR(En_Box, ACTOR_EN_BOX, ALLOCTYPE_NORMAL)
|
||||
/* 0x000B */ DEFINE_ACTOR(Bg_Dy_Yoseizo, ACTOR_BG_DY_YOSEIZO, ALLOCTYPE_NORMAL)
|
||||
/* 0x000C */ DEFINE_ACTOR(Bg_Hidan_Firewall, ACTOR_BG_HIDAN_FIREWALL, ALLOCTYPE_NORMAL)
|
||||
/* 0x000D */ DEFINE_ACTOR(En_Poh, ACTOR_EN_POH, ALLOCTYPE_NORMAL)
|
||||
/* 0x000E */ DEFINE_ACTOR(En_Okuta, ACTOR_EN_OKUTA, ALLOCTYPE_NORMAL)
|
||||
/* 0x000F */ DEFINE_ACTOR(Bg_Ydan_Sp, ACTOR_BG_YDAN_SP, ALLOCTYPE_NORMAL)
|
||||
/* 0x0010 */ DEFINE_ACTOR(En_Bom, ACTOR_EN_BOM, ALLOCTYPE_PERMANENT)
|
||||
/* 0x0011 */ DEFINE_ACTOR(En_Wallmas, ACTOR_EN_WALLMAS, ALLOCTYPE_NORMAL)
|
||||
/* 0x0012 */ DEFINE_ACTOR(En_Dodongo, ACTOR_EN_DODONGO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0013 */ DEFINE_ACTOR(En_Firefly, ACTOR_EN_FIREFLY, ALLOCTYPE_NORMAL)
|
||||
/* 0x0014 */ DEFINE_ACTOR(En_Horse, ACTOR_EN_HORSE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0015 */ DEFINE_ACTOR_INTERNAL(En_Item00, ACTOR_EN_ITEM00, ALLOCTYPE_NORMAL)
|
||||
/* 0x0016 */ DEFINE_ACTOR(En_Arrow, ACTOR_EN_ARROW, ALLOCTYPE_PERMANENT)
|
||||
/* 0x0017 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_17)
|
||||
/* 0x0018 */ DEFINE_ACTOR(En_Elf, ACTOR_EN_ELF, ALLOCTYPE_NORMAL)
|
||||
/* 0x0019 */ DEFINE_ACTOR(En_Niw, ACTOR_EN_NIW, ALLOCTYPE_NORMAL)
|
||||
/* 0x001A */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_1A)
|
||||
/* 0x001B */ DEFINE_ACTOR(En_Tite, ACTOR_EN_TITE, ALLOCTYPE_NORMAL)
|
||||
/* 0x001C */ DEFINE_ACTOR(En_Reeba, ACTOR_EN_REEBA, ALLOCTYPE_NORMAL)
|
||||
/* 0x001D */ DEFINE_ACTOR(En_Peehat, ACTOR_EN_PEEHAT, ALLOCTYPE_NORMAL)
|
||||
/* 0x001E */ DEFINE_ACTOR(En_Butte, ACTOR_EN_BUTTE, ALLOCTYPE_NORMAL)
|
||||
/* 0x001F */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_1F)
|
||||
/* 0x0020 */ DEFINE_ACTOR(En_Insect, ACTOR_EN_INSECT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0021 */ DEFINE_ACTOR(En_Fish, ACTOR_EN_FISH, ALLOCTYPE_NORMAL)
|
||||
/* 0x0022 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_22)
|
||||
/* 0x0023 */ DEFINE_ACTOR(En_Holl, ACTOR_EN_HOLL, ALLOCTYPE_PERMANENT)
|
||||
/* 0x0024 */ DEFINE_ACTOR(En_Scene_Change, ACTOR_EN_SCENE_CHANGE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0025 */ DEFINE_ACTOR(En_Zf, ACTOR_EN_ZF, ALLOCTYPE_NORMAL)
|
||||
/* 0x0026 */ DEFINE_ACTOR(En_Hata, ACTOR_EN_HATA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0027 */ DEFINE_ACTOR(Boss_Dodongo, ACTOR_BOSS_DODONGO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0028 */ DEFINE_ACTOR(Boss_Goma, ACTOR_BOSS_GOMA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0029 */ DEFINE_ACTOR(En_Zl1, ACTOR_EN_ZL1, ALLOCTYPE_NORMAL)
|
||||
/* 0x002A */ DEFINE_ACTOR(En_Viewer, ACTOR_EN_VIEWER, ALLOCTYPE_NORMAL)
|
||||
/* 0x002B */ DEFINE_ACTOR(En_Goma, ACTOR_EN_GOMA, ALLOCTYPE_NORMAL)
|
||||
/* 0x002C */ DEFINE_ACTOR(Bg_Pushbox, ACTOR_BG_PUSHBOX, ALLOCTYPE_NORMAL)
|
||||
/* 0x002D */ DEFINE_ACTOR(En_Bubble, ACTOR_EN_BUBBLE, ALLOCTYPE_NORMAL)
|
||||
/* 0x002E */ DEFINE_ACTOR(Door_Shutter, ACTOR_DOOR_SHUTTER, ALLOCTYPE_PERMANENT)
|
||||
/* 0x002F */ DEFINE_ACTOR(En_Dodojr, ACTOR_EN_DODOJR, ALLOCTYPE_NORMAL)
|
||||
/* 0x0030 */ DEFINE_ACTOR(En_Bdfire, ACTOR_EN_BDFIRE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0031 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_31)
|
||||
/* 0x0032 */ DEFINE_ACTOR(En_Boom, ACTOR_EN_BOOM, ALLOCTYPE_PERMANENT)
|
||||
/* 0x0033 */ DEFINE_ACTOR(En_Torch2, ACTOR_EN_TORCH2, ALLOCTYPE_NORMAL)
|
||||
/* 0x0034 */ DEFINE_ACTOR(En_Bili, ACTOR_EN_BILI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0035 */ DEFINE_ACTOR(En_Tp, ACTOR_EN_TP, ALLOCTYPE_NORMAL)
|
||||
/* 0x0036 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_36)
|
||||
/* 0x0037 */ DEFINE_ACTOR(En_St, ACTOR_EN_ST, ALLOCTYPE_NORMAL)
|
||||
/* 0x0038 */ DEFINE_ACTOR(En_Bw, ACTOR_EN_BW, ALLOCTYPE_NORMAL)
|
||||
/* 0x0039 */ DEFINE_ACTOR_INTERNAL(En_A_Obj, ACTOR_EN_A_OBJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x003A */ DEFINE_ACTOR(En_Eiyer, ACTOR_EN_EIYER, ALLOCTYPE_NORMAL)
|
||||
/* 0x003B */ DEFINE_ACTOR(En_River_Sound, ACTOR_EN_RIVER_SOUND, ALLOCTYPE_NORMAL)
|
||||
/* 0x003C */ DEFINE_ACTOR(En_Horse_Normal, ACTOR_EN_HORSE_NORMAL, ALLOCTYPE_NORMAL)
|
||||
/* 0x003D */ DEFINE_ACTOR(En_Ossan, ACTOR_EN_OSSAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x003E */ DEFINE_ACTOR(Bg_Treemouth, ACTOR_BG_TREEMOUTH, ALLOCTYPE_NORMAL)
|
||||
/* 0x003F */ DEFINE_ACTOR(Bg_Dodoago, ACTOR_BG_DODOAGO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0040 */ DEFINE_ACTOR(Bg_Hidan_Dalm, ACTOR_BG_HIDAN_DALM, ALLOCTYPE_NORMAL)
|
||||
/* 0x0041 */ DEFINE_ACTOR(Bg_Hidan_Hrock, ACTOR_BG_HIDAN_HROCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0042 */ DEFINE_ACTOR(En_Horse_Ganon, ACTOR_EN_HORSE_GANON, ALLOCTYPE_NORMAL)
|
||||
/* 0x0043 */ DEFINE_ACTOR(Bg_Hidan_Rock, ACTOR_BG_HIDAN_ROCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0044 */ DEFINE_ACTOR(Bg_Hidan_Rsekizou, ACTOR_BG_HIDAN_RSEKIZOU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0045 */ DEFINE_ACTOR(Bg_Hidan_Sekizou, ACTOR_BG_HIDAN_SEKIZOU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0046 */ DEFINE_ACTOR(Bg_Hidan_Sima, ACTOR_BG_HIDAN_SIMA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0047 */ DEFINE_ACTOR(Bg_Hidan_Syoku, ACTOR_BG_HIDAN_SYOKU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0048 */ DEFINE_ACTOR(En_Xc, ACTOR_EN_XC, ALLOCTYPE_NORMAL)
|
||||
/* 0x0049 */ DEFINE_ACTOR(Bg_Hidan_Curtain, ACTOR_BG_HIDAN_CURTAIN, ALLOCTYPE_NORMAL)
|
||||
/* 0x004A */ DEFINE_ACTOR(Bg_Spot00_Hanebasi, ACTOR_BG_SPOT00_HANEBASI, ALLOCTYPE_NORMAL)
|
||||
/* 0x004B */ DEFINE_ACTOR(En_Mb, ACTOR_EN_MB, ALLOCTYPE_NORMAL)
|
||||
/* 0x004C */ DEFINE_ACTOR(En_Bombf, ACTOR_EN_BOMBF, ALLOCTYPE_NORMAL)
|
||||
/* 0x004D */ DEFINE_ACTOR(En_Zl2, ACTOR_EN_ZL2, ALLOCTYPE_NORMAL)
|
||||
/* 0x004E */ DEFINE_ACTOR(Bg_Hidan_Fslift, ACTOR_BG_HIDAN_FSLIFT, ALLOCTYPE_NORMAL)
|
||||
/* 0x004F */ DEFINE_ACTOR(En_OE2, ACTOR_EN_OE2, ALLOCTYPE_NORMAL)
|
||||
/* 0x0050 */ DEFINE_ACTOR(Bg_Ydan_Hasi, ACTOR_BG_YDAN_HASI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0051 */ DEFINE_ACTOR(Bg_Ydan_Maruta, ACTOR_BG_YDAN_MARUTA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0052 */ DEFINE_ACTOR(Boss_Ganondrof, ACTOR_BOSS_GANONDROF, ALLOCTYPE_NORMAL)
|
||||
/* 0x0053 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_53)
|
||||
/* 0x0054 */ DEFINE_ACTOR(En_Am, ACTOR_EN_AM, ALLOCTYPE_NORMAL)
|
||||
/* 0x0055 */ DEFINE_ACTOR(En_Dekubaba, ACTOR_EN_DEKUBABA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0056 */ DEFINE_ACTOR(En_M_Fire1, ACTOR_EN_M_FIRE1, ALLOCTYPE_PERMANENT)
|
||||
/* 0x0057 */ DEFINE_ACTOR(En_M_Thunder, ACTOR_EN_M_THUNDER, ALLOCTYPE_PERMANENT)
|
||||
/* 0x0058 */ DEFINE_ACTOR(Bg_Ddan_Jd, ACTOR_BG_DDAN_JD, ALLOCTYPE_NORMAL)
|
||||
/* 0x0059 */ DEFINE_ACTOR(Bg_Breakwall, ACTOR_BG_BREAKWALL, ALLOCTYPE_NORMAL)
|
||||
/* 0x005A */ DEFINE_ACTOR(En_Jj, ACTOR_EN_JJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x005B */ DEFINE_ACTOR(En_Horse_Zelda, ACTOR_EN_HORSE_ZELDA, ALLOCTYPE_NORMAL)
|
||||
/* 0x005C */ DEFINE_ACTOR(Bg_Ddan_Kd, ACTOR_BG_DDAN_KD, ALLOCTYPE_NORMAL)
|
||||
/* 0x005D */ DEFINE_ACTOR(Door_Warp1, ACTOR_DOOR_WARP1, ALLOCTYPE_NORMAL)
|
||||
/* 0x005E */ DEFINE_ACTOR(Obj_Syokudai, ACTOR_OBJ_SYOKUDAI, ALLOCTYPE_NORMAL)
|
||||
/* 0x005F */ DEFINE_ACTOR(Item_B_Heart, ACTOR_ITEM_B_HEART, ALLOCTYPE_NORMAL)
|
||||
/* 0x0060 */ DEFINE_ACTOR(En_Dekunuts, ACTOR_EN_DEKUNUTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x0061 */ DEFINE_ACTOR(Bg_Menkuri_Kaiten, ACTOR_BG_MENKURI_KAITEN, ALLOCTYPE_NORMAL)
|
||||
/* 0x0062 */ DEFINE_ACTOR(Bg_Menkuri_Eye, ACTOR_BG_MENKURI_EYE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0063 */ DEFINE_ACTOR(En_Vali, ACTOR_EN_VALI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0064 */ DEFINE_ACTOR(Bg_Mizu_Movebg, ACTOR_BG_MIZU_MOVEBG, ALLOCTYPE_NORMAL)
|
||||
/* 0x0065 */ DEFINE_ACTOR(Bg_Mizu_Water, ACTOR_BG_MIZU_WATER, ALLOCTYPE_NORMAL)
|
||||
/* 0x0066 */ DEFINE_ACTOR(Arms_Hook, ACTOR_ARMS_HOOK, ALLOCTYPE_PERMANENT)
|
||||
/* 0x0067 */ DEFINE_ACTOR(En_fHG, ACTOR_EN_FHG, ALLOCTYPE_NORMAL)
|
||||
/* 0x0068 */ DEFINE_ACTOR(Bg_Mori_Hineri, ACTOR_BG_MORI_HINERI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0069 */ DEFINE_ACTOR(En_Bb, ACTOR_EN_BB, ALLOCTYPE_NORMAL)
|
||||
/* 0x006A */ DEFINE_ACTOR(Bg_Toki_Hikari, ACTOR_BG_TOKI_HIKARI, ALLOCTYPE_NORMAL)
|
||||
/* 0x006B */ DEFINE_ACTOR(En_Yukabyun, ACTOR_EN_YUKABYUN, ALLOCTYPE_NORMAL)
|
||||
/* 0x006C */ DEFINE_ACTOR(Bg_Toki_Swd, ACTOR_BG_TOKI_SWD, ALLOCTYPE_NORMAL)
|
||||
/* 0x006D */ DEFINE_ACTOR(En_Fhg_Fire, ACTOR_EN_FHG_FIRE, ALLOCTYPE_NORMAL)
|
||||
/* 0x006E */ DEFINE_ACTOR(Bg_Mjin, ACTOR_BG_MJIN, ALLOCTYPE_NORMAL)
|
||||
/* 0x006F */ DEFINE_ACTOR(Bg_Hidan_Kousi, ACTOR_BG_HIDAN_KOUSI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0070 */ DEFINE_ACTOR(Door_Toki, ACTOR_DOOR_TOKI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0071 */ DEFINE_ACTOR(Bg_Hidan_Hamstep, ACTOR_BG_HIDAN_HAMSTEP, ALLOCTYPE_NORMAL)
|
||||
/* 0x0072 */ DEFINE_ACTOR(En_Bird, ACTOR_EN_BIRD, ALLOCTYPE_NORMAL)
|
||||
/* 0x0073 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_73)
|
||||
/* 0x0074 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_74)
|
||||
/* 0x0075 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_75)
|
||||
/* 0x0076 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_76)
|
||||
/* 0x0077 */ DEFINE_ACTOR(En_Wood02, ACTOR_EN_WOOD02, ALLOCTYPE_NORMAL)
|
||||
/* 0x0078 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_78)
|
||||
/* 0x0079 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_79)
|
||||
/* 0x007A */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_7A)
|
||||
/* 0x007B */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_7B)
|
||||
/* 0x007C */ DEFINE_ACTOR(En_Lightbox, ACTOR_EN_LIGHTBOX, ALLOCTYPE_NORMAL)
|
||||
/* 0x007D */ DEFINE_ACTOR(En_Pu_box, ACTOR_EN_PU_BOX, ALLOCTYPE_NORMAL)
|
||||
/* 0x007E */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_7E)
|
||||
/* 0x007F */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_7F)
|
||||
/* 0x0080 */ DEFINE_ACTOR(En_Trap, ACTOR_EN_TRAP, ALLOCTYPE_NORMAL)
|
||||
/* 0x0081 */ DEFINE_ACTOR(En_Arow_Trap, ACTOR_EN_AROW_TRAP, ALLOCTYPE_NORMAL)
|
||||
/* 0x0082 */ DEFINE_ACTOR(En_Vase, ACTOR_EN_VASE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0083 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_83)
|
||||
/* 0x0084 */ DEFINE_ACTOR(En_Ta, ACTOR_EN_TA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0085 */ DEFINE_ACTOR(En_Tk, ACTOR_EN_TK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0086 */ DEFINE_ACTOR(Bg_Mori_Bigst, ACTOR_BG_MORI_BIGST, ALLOCTYPE_NORMAL)
|
||||
/* 0x0087 */ DEFINE_ACTOR(Bg_Mori_Elevator, ACTOR_BG_MORI_ELEVATOR, ALLOCTYPE_NORMAL)
|
||||
/* 0x0088 */ DEFINE_ACTOR(Bg_Mori_Kaitenkabe, ACTOR_BG_MORI_KAITENKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0089 */ DEFINE_ACTOR(Bg_Mori_Rakkatenjo, ACTOR_BG_MORI_RAKKATENJO, ALLOCTYPE_NORMAL)
|
||||
/* 0x008A */ DEFINE_ACTOR(En_Vm, ACTOR_EN_VM, ALLOCTYPE_NORMAL)
|
||||
/* 0x008B */ DEFINE_ACTOR(Demo_Effect, ACTOR_DEMO_EFFECT, ALLOCTYPE_NORMAL)
|
||||
/* 0x008C */ DEFINE_ACTOR(Demo_Kankyo, ACTOR_DEMO_KANKYO, ALLOCTYPE_NORMAL)
|
||||
/* 0x008D */ DEFINE_ACTOR(Bg_Hidan_Fwbig, ACTOR_BG_HIDAN_FWBIG, ALLOCTYPE_NORMAL)
|
||||
/* 0x008E */ DEFINE_ACTOR(En_Floormas, ACTOR_EN_FLOORMAS, ALLOCTYPE_NORMAL)
|
||||
/* 0x008F */ DEFINE_ACTOR(En_Heishi1, ACTOR_EN_HEISHI1, ALLOCTYPE_NORMAL)
|
||||
/* 0x0090 */ DEFINE_ACTOR(En_Rd, ACTOR_EN_RD, ALLOCTYPE_NORMAL)
|
||||
/* 0x0091 */ DEFINE_ACTOR(En_Po_Sisters, ACTOR_EN_PO_SISTERS, ALLOCTYPE_NORMAL)
|
||||
/* 0x0092 */ DEFINE_ACTOR(Bg_Heavy_Block, ACTOR_BG_HEAVY_BLOCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0093 */ DEFINE_ACTOR(Bg_Po_Event, ACTOR_BG_PO_EVENT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0094 */ DEFINE_ACTOR(Obj_Mure, ACTOR_OBJ_MURE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0095 */ DEFINE_ACTOR(En_Sw, ACTOR_EN_SW, ALLOCTYPE_NORMAL)
|
||||
/* 0x0096 */ DEFINE_ACTOR(Boss_Fd, ACTOR_BOSS_FD, ALLOCTYPE_NORMAL)
|
||||
/* 0x0097 */ DEFINE_ACTOR(Object_Kankyo, ACTOR_OBJECT_KANKYO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0098 */ DEFINE_ACTOR(En_Du, ACTOR_EN_DU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0099 */ DEFINE_ACTOR(En_Fd, ACTOR_EN_FD, ALLOCTYPE_NORMAL)
|
||||
/* 0x009A */ DEFINE_ACTOR(En_Horse_Link_Child, ACTOR_EN_HORSE_LINK_CHILD, ALLOCTYPE_NORMAL)
|
||||
/* 0x009B */ DEFINE_ACTOR(Door_Ana, ACTOR_DOOR_ANA, ALLOCTYPE_NORMAL)
|
||||
/* 0x009C */ DEFINE_ACTOR(Bg_Spot02_Objects, ACTOR_BG_SPOT02_OBJECTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x009D */ DEFINE_ACTOR(Bg_Haka, ACTOR_BG_HAKA, ALLOCTYPE_NORMAL)
|
||||
/* 0x009E */ DEFINE_ACTOR(Magic_Wind, ACTOR_MAGIC_WIND, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x009F */ DEFINE_ACTOR(Magic_Fire, ACTOR_MAGIC_FIRE, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x00A0 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_A0)
|
||||
/* 0x00A1 */ DEFINE_ACTOR(En_Ru1, ACTOR_EN_RU1, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A2 */ DEFINE_ACTOR(Boss_Fd2, ACTOR_BOSS_FD2, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A3 */ DEFINE_ACTOR(En_Fd_Fire, ACTOR_EN_FD_FIRE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A4 */ DEFINE_ACTOR(En_Dh, ACTOR_EN_DH, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A5 */ DEFINE_ACTOR(En_Dha, ACTOR_EN_DHA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A6 */ DEFINE_ACTOR(En_Rl, ACTOR_EN_RL, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A7 */ DEFINE_ACTOR(En_Encount1, ACTOR_EN_ENCOUNT1, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A8 */ DEFINE_ACTOR(Demo_Du, ACTOR_DEMO_DU, ALLOCTYPE_NORMAL)
|
||||
/* 0x00A9 */ DEFINE_ACTOR(Demo_Im, ACTOR_DEMO_IM, ALLOCTYPE_NORMAL)
|
||||
/* 0x00AA */ DEFINE_ACTOR(Demo_Tre_Lgt, ACTOR_DEMO_TRE_LGT, ALLOCTYPE_NORMAL)
|
||||
/* 0x00AB */ DEFINE_ACTOR(En_Fw, ACTOR_EN_FW, ALLOCTYPE_NORMAL)
|
||||
/* 0x00AC */ DEFINE_ACTOR(Bg_Vb_Sima, ACTOR_BG_VB_SIMA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00AD */ DEFINE_ACTOR(En_Vb_Ball, ACTOR_EN_VB_BALL, ALLOCTYPE_NORMAL)
|
||||
/* 0x00AE */ DEFINE_ACTOR(Bg_Haka_Megane, ACTOR_BG_HAKA_MEGANE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00AF */ DEFINE_ACTOR(Bg_Haka_MeganeBG, ACTOR_BG_HAKA_MEGANEBG, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B0 */ DEFINE_ACTOR(Bg_Haka_Ship, ACTOR_BG_HAKA_SHIP, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B1 */ DEFINE_ACTOR(Bg_Haka_Sgami, ACTOR_BG_HAKA_SGAMI, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B2 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_B2)
|
||||
/* 0x00B3 */ DEFINE_ACTOR(En_Heishi2, ACTOR_EN_HEISHI2, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B4 */ DEFINE_ACTOR(En_Encount2, ACTOR_EN_ENCOUNT2, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B5 */ DEFINE_ACTOR(En_Fire_Rock, ACTOR_EN_FIRE_ROCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B6 */ DEFINE_ACTOR(En_Brob, ACTOR_EN_BROB, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B7 */ DEFINE_ACTOR(Mir_Ray, ACTOR_MIR_RAY, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B8 */ DEFINE_ACTOR(Bg_Spot09_Obj, ACTOR_BG_SPOT09_OBJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x00B9 */ DEFINE_ACTOR(Bg_Spot18_Obj, ACTOR_BG_SPOT18_OBJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x00BA */ DEFINE_ACTOR(Boss_Va, ACTOR_BOSS_VA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00BB */ DEFINE_ACTOR(Bg_Haka_Tubo, ACTOR_BG_HAKA_TUBO, ALLOCTYPE_NORMAL)
|
||||
/* 0x00BC */ DEFINE_ACTOR(Bg_Haka_Trap, ACTOR_BG_HAKA_TRAP, ALLOCTYPE_NORMAL)
|
||||
/* 0x00BD */ DEFINE_ACTOR(Bg_Haka_Huta, ACTOR_BG_HAKA_HUTA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00BE */ DEFINE_ACTOR(Bg_Haka_Zou, ACTOR_BG_HAKA_ZOU, ALLOCTYPE_NORMAL)
|
||||
/* 0x00BF */ DEFINE_ACTOR(Bg_Spot17_Funen, ACTOR_BG_SPOT17_FUNEN, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C0 */ DEFINE_ACTOR(En_Syateki_Itm, ACTOR_EN_SYATEKI_ITM, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C1 */ DEFINE_ACTOR(En_Syateki_Man, ACTOR_EN_SYATEKI_MAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C2 */ DEFINE_ACTOR(En_Tana, ACTOR_EN_TANA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C3 */ DEFINE_ACTOR(En_Nb, ACTOR_EN_NB, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C4 */ DEFINE_ACTOR(Boss_Mo, ACTOR_BOSS_MO, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C5 */ DEFINE_ACTOR(En_Sb, ACTOR_EN_SB, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C6 */ DEFINE_ACTOR(En_Bigokuta, ACTOR_EN_BIGOKUTA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C7 */ DEFINE_ACTOR(En_Karebaba, ACTOR_EN_KAREBABA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C8 */ DEFINE_ACTOR(Bg_Bdan_Objects, ACTOR_BG_BDAN_OBJECTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x00C9 */ DEFINE_ACTOR(Demo_Sa, ACTOR_DEMO_SA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00CA */ DEFINE_ACTOR(Demo_Go, ACTOR_DEMO_GO, ALLOCTYPE_NORMAL)
|
||||
/* 0x00CB */ DEFINE_ACTOR(En_In, ACTOR_EN_IN, ALLOCTYPE_NORMAL)
|
||||
/* 0x00CC */ DEFINE_ACTOR(En_Tr, ACTOR_EN_TR, ALLOCTYPE_NORMAL)
|
||||
/* 0x00CD */ DEFINE_ACTOR(Bg_Spot16_Bombstone, ACTOR_BG_SPOT16_BOMBSTONE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00CE */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_CE)
|
||||
/* 0x00CF */ DEFINE_ACTOR(Bg_Hidan_Kowarerukabe, ACTOR_BG_HIDAN_KOWARERUKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D0 */ DEFINE_ACTOR(Bg_Bombwall, ACTOR_BG_BOMBWALL, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D1 */ DEFINE_ACTOR(Bg_Spot08_Iceblock, ACTOR_BG_SPOT08_ICEBLOCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D2 */ DEFINE_ACTOR(En_Ru2, ACTOR_EN_RU2, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D3 */ DEFINE_ACTOR(Obj_Dekujr, ACTOR_OBJ_DEKUJR, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D4 */ DEFINE_ACTOR(Bg_Mizu_Uzu, ACTOR_BG_MIZU_UZU, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D5 */ DEFINE_ACTOR(Bg_Spot06_Objects, ACTOR_BG_SPOT06_OBJECTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D6 */ DEFINE_ACTOR(Bg_Ice_Objects, ACTOR_BG_ICE_OBJECTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D7 */ DEFINE_ACTOR(Bg_Haka_Water, ACTOR_BG_HAKA_WATER, ALLOCTYPE_NORMAL)
|
||||
/* 0x00D8 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_D8)
|
||||
/* 0x00D9 */ DEFINE_ACTOR(En_Ma2, ACTOR_EN_MA2, ALLOCTYPE_NORMAL)
|
||||
/* 0x00DA */ DEFINE_ACTOR(En_Bom_Chu, ACTOR_EN_BOM_CHU, ALLOCTYPE_NORMAL)
|
||||
/* 0x00DB */ DEFINE_ACTOR(En_Horse_Game_Check, ACTOR_EN_HORSE_GAME_CHECK, ALLOCTYPE_NORMAL)
|
||||
/* 0x00DC */ DEFINE_ACTOR(Boss_Tw, ACTOR_BOSS_TW, ALLOCTYPE_NORMAL)
|
||||
/* 0x00DD */ DEFINE_ACTOR(En_Rr, ACTOR_EN_RR, ALLOCTYPE_NORMAL)
|
||||
/* 0x00DE */ DEFINE_ACTOR(En_Ba, ACTOR_EN_BA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00DF */ DEFINE_ACTOR(En_Bx, ACTOR_EN_BX, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E0 */ DEFINE_ACTOR(En_Anubice, ACTOR_EN_ANUBICE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E1 */ DEFINE_ACTOR(En_Anubice_Fire, ACTOR_EN_ANUBICE_FIRE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E2 */ DEFINE_ACTOR(Bg_Mori_Hashigo, ACTOR_BG_MORI_HASHIGO, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E3 */ DEFINE_ACTOR(Bg_Mori_Hashira4, ACTOR_BG_MORI_HASHIRA4, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E4 */ DEFINE_ACTOR(Bg_Mori_Idomizu, ACTOR_BG_MORI_IDOMIZU, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E5 */ DEFINE_ACTOR(Bg_Spot16_Doughnut, ACTOR_BG_SPOT16_DOUGHNUT, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E6 */ DEFINE_ACTOR(Bg_Bdan_Switch, ACTOR_BG_BDAN_SWITCH, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E7 */ DEFINE_ACTOR(En_Ma1, ACTOR_EN_MA1, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E8 */ DEFINE_ACTOR(Boss_Ganon, ACTOR_BOSS_GANON, ALLOCTYPE_NORMAL)
|
||||
/* 0x00E9 */ DEFINE_ACTOR(Boss_Sst, ACTOR_BOSS_SST, ALLOCTYPE_NORMAL)
|
||||
/* 0x00EA */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_EA)
|
||||
/* 0x00EB */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_EB)
|
||||
/* 0x00EC */ DEFINE_ACTOR(En_Ny, ACTOR_EN_NY, ALLOCTYPE_NORMAL)
|
||||
/* 0x00ED */ DEFINE_ACTOR(En_Fr, ACTOR_EN_FR, ALLOCTYPE_NORMAL)
|
||||
/* 0x00EE */ DEFINE_ACTOR(Item_Shield, ACTOR_ITEM_SHIELD, ALLOCTYPE_NORMAL)
|
||||
/* 0x00EF */ DEFINE_ACTOR(Bg_Ice_Shelter, ACTOR_BG_ICE_SHELTER, ALLOCTYPE_NORMAL)
|
||||
/* 0x00F0 */ DEFINE_ACTOR(En_Ice_Hono, ACTOR_EN_ICE_HONO, ALLOCTYPE_NORMAL)
|
||||
/* 0x00F1 */ DEFINE_ACTOR(Item_Ocarina, ACTOR_ITEM_OCARINA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00F2 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_F2)
|
||||
/* 0x00F3 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_F3)
|
||||
/* 0x00F4 */ DEFINE_ACTOR(Magic_Dark, ACTOR_MAGIC_DARK, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x00F5 */ DEFINE_ACTOR(Demo_6K, ACTOR_DEMO_6K, ALLOCTYPE_NORMAL)
|
||||
/* 0x00F6 */ DEFINE_ACTOR(En_Anubice_Tag, ACTOR_EN_ANUBICE_TAG, ALLOCTYPE_NORMAL)
|
||||
/* 0x00F7 */ DEFINE_ACTOR(Bg_Haka_Gate, ACTOR_BG_HAKA_GATE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00F8 */ DEFINE_ACTOR(Bg_Spot15_Saku, ACTOR_BG_SPOT15_SAKU, ALLOCTYPE_NORMAL)
|
||||
/* 0x00F9 */ DEFINE_ACTOR(Bg_Jya_Goroiwa, ACTOR_BG_JYA_GOROIWA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00FA */ DEFINE_ACTOR(Bg_Jya_Zurerukabe, ACTOR_BG_JYA_ZURERUKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x00FB */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_FB)
|
||||
/* 0x00FC */ DEFINE_ACTOR(Bg_Jya_Cobra, ACTOR_BG_JYA_COBRA, ALLOCTYPE_NORMAL)
|
||||
/* 0x00FD */ DEFINE_ACTOR(Bg_Jya_Kanaami, ACTOR_BG_JYA_KANAAMI, ALLOCTYPE_NORMAL)
|
||||
/* 0x00FE */ DEFINE_ACTOR(Fishing, ACTOR_FISHING, ALLOCTYPE_NORMAL)
|
||||
/* 0x00FF */ DEFINE_ACTOR(Obj_Oshihiki, ACTOR_OBJ_OSHIHIKI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0100 */ DEFINE_ACTOR(Bg_Gate_Shutter, ACTOR_BG_GATE_SHUTTER, ALLOCTYPE_NORMAL)
|
||||
/* 0x0101 */ DEFINE_ACTOR(Eff_Dust, ACTOR_EFF_DUST, ALLOCTYPE_NORMAL)
|
||||
/* 0x0102 */ DEFINE_ACTOR(Bg_Spot01_Fusya, ACTOR_BG_SPOT01_FUSYA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0103 */ DEFINE_ACTOR(Bg_Spot01_Idohashira, ACTOR_BG_SPOT01_IDOHASHIRA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0104 */ DEFINE_ACTOR(Bg_Spot01_Idomizu, ACTOR_BG_SPOT01_IDOMIZU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0105 */ DEFINE_ACTOR(Bg_Po_Syokudai, ACTOR_BG_PO_SYOKUDAI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0106 */ DEFINE_ACTOR(Bg_Ganon_Otyuka, ACTOR_BG_GANON_OTYUKA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0107 */ DEFINE_ACTOR(Bg_Spot15_Rrbox, ACTOR_BG_SPOT15_RRBOX, ALLOCTYPE_NORMAL)
|
||||
/* 0x0108 */ DEFINE_ACTOR(Bg_Umajump, ACTOR_BG_UMAJUMP, ALLOCTYPE_NORMAL)
|
||||
/* 0x0109 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_109)
|
||||
/* 0x010A */ DEFINE_ACTOR(Arrow_Fire, ACTOR_ARROW_FIRE, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x010B */ DEFINE_ACTOR(Arrow_Ice, ACTOR_ARROW_ICE, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x010C */ DEFINE_ACTOR(Arrow_Light, ACTOR_ARROW_LIGHT, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x010D */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_10D)
|
||||
/* 0x010E */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_10E)
|
||||
/* 0x010F */ DEFINE_ACTOR(Item_Etcetera, ACTOR_ITEM_ETCETERA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0110 */ DEFINE_ACTOR(Obj_Kibako, ACTOR_OBJ_KIBAKO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0111 */ DEFINE_ACTOR(Obj_Tsubo, ACTOR_OBJ_TSUBO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0112 */ DEFINE_ACTOR(En_Wonder_Item, ACTOR_EN_WONDER_ITEM, ALLOCTYPE_NORMAL)
|
||||
/* 0x0113 */ DEFINE_ACTOR(En_Ik, ACTOR_EN_IK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0114 */ DEFINE_ACTOR(Demo_Ik, ACTOR_DEMO_IK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0115 */ DEFINE_ACTOR(En_Skj, ACTOR_EN_SKJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x0116 */ DEFINE_ACTOR(En_Skjneedle, ACTOR_EN_SKJNEEDLE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0117 */ DEFINE_ACTOR(En_G_Switch, ACTOR_EN_G_SWITCH, ALLOCTYPE_NORMAL)
|
||||
/* 0x0118 */ DEFINE_ACTOR(Demo_Ext, ACTOR_DEMO_EXT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0119 */ DEFINE_ACTOR(Demo_Shd, ACTOR_DEMO_SHD, ALLOCTYPE_NORMAL)
|
||||
/* 0x011A */ DEFINE_ACTOR(En_Dns, ACTOR_EN_DNS, ALLOCTYPE_NORMAL)
|
||||
/* 0x011B */ DEFINE_ACTOR(Elf_Msg, ACTOR_ELF_MSG, ALLOCTYPE_NORMAL)
|
||||
/* 0x011C */ DEFINE_ACTOR(En_Honotrap, ACTOR_EN_HONOTRAP, ALLOCTYPE_NORMAL)
|
||||
/* 0x011D */ DEFINE_ACTOR(En_Tubo_Trap, ACTOR_EN_TUBO_TRAP, ALLOCTYPE_NORMAL)
|
||||
/* 0x011E */ DEFINE_ACTOR(Obj_Ice_Poly, ACTOR_OBJ_ICE_POLY, ALLOCTYPE_NORMAL)
|
||||
/* 0x011F */ DEFINE_ACTOR(Bg_Spot03_Taki, ACTOR_BG_SPOT03_TAKI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0120 */ DEFINE_ACTOR(Bg_Spot07_Taki, ACTOR_BG_SPOT07_TAKI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0121 */ DEFINE_ACTOR(En_Fz, ACTOR_EN_FZ, ALLOCTYPE_NORMAL)
|
||||
/* 0x0122 */ DEFINE_ACTOR(En_Po_Relay, ACTOR_EN_PO_RELAY, ALLOCTYPE_NORMAL)
|
||||
/* 0x0123 */ DEFINE_ACTOR(Bg_Relay_Objects, ACTOR_BG_RELAY_OBJECTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x0124 */ DEFINE_ACTOR(En_Diving_Game, ACTOR_EN_DIVING_GAME, ALLOCTYPE_NORMAL)
|
||||
/* 0x0125 */ DEFINE_ACTOR(En_Kusa, ACTOR_EN_KUSA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0126 */ DEFINE_ACTOR(Obj_Bean, ACTOR_OBJ_BEAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x0127 */ DEFINE_ACTOR(Obj_Bombiwa, ACTOR_OBJ_BOMBIWA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0128 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_128)
|
||||
/* 0x0129 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_129)
|
||||
/* 0x012A */ DEFINE_ACTOR(Obj_Switch, ACTOR_OBJ_SWITCH, ALLOCTYPE_NORMAL)
|
||||
/* 0x012B */ DEFINE_ACTOR(Obj_Elevator, ACTOR_OBJ_ELEVATOR, ALLOCTYPE_NORMAL)
|
||||
/* 0x012C */ DEFINE_ACTOR(Obj_Lift, ACTOR_OBJ_LIFT, ALLOCTYPE_NORMAL)
|
||||
/* 0x012D */ DEFINE_ACTOR(Obj_Hsblock, ACTOR_OBJ_HSBLOCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x012E */ DEFINE_ACTOR(En_Okarina_Tag, ACTOR_EN_OKARINA_TAG, ALLOCTYPE_NORMAL)
|
||||
/* 0x012F */ DEFINE_ACTOR(En_Yabusame_Mark, ACTOR_EN_YABUSAME_MARK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0130 */ DEFINE_ACTOR(En_Goroiwa, ACTOR_EN_GOROIWA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0131 */ DEFINE_ACTOR(En_Ex_Ruppy, ACTOR_EN_EX_RUPPY, ALLOCTYPE_NORMAL)
|
||||
/* 0x0132 */ DEFINE_ACTOR(En_Toryo, ACTOR_EN_TORYO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0133 */ DEFINE_ACTOR(En_Daiku, ACTOR_EN_DAIKU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0134 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_134)
|
||||
/* 0x0135 */ DEFINE_ACTOR(En_Nwc, ACTOR_EN_NWC, ALLOCTYPE_NORMAL)
|
||||
/* 0x0136 */ DEFINE_ACTOR(En_Blkobj, ACTOR_EN_BLKOBJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x0137 */ DEFINE_ACTOR(Item_Inbox, ACTOR_ITEM_INBOX, ALLOCTYPE_NORMAL)
|
||||
/* 0x0138 */ DEFINE_ACTOR(En_Ge1, ACTOR_EN_GE1, ALLOCTYPE_NORMAL)
|
||||
/* 0x0139 */ DEFINE_ACTOR(Obj_Blockstop, ACTOR_OBJ_BLOCKSTOP, ALLOCTYPE_NORMAL)
|
||||
/* 0x013A */ DEFINE_ACTOR(En_Sda, ACTOR_EN_SDA, ALLOCTYPE_NORMAL)
|
||||
/* 0x013B */ DEFINE_ACTOR(En_Clear_Tag, ACTOR_EN_CLEAR_TAG, ALLOCTYPE_NORMAL)
|
||||
/* 0x013C */ DEFINE_ACTOR(En_Niw_Lady, ACTOR_EN_NIW_LADY, ALLOCTYPE_NORMAL)
|
||||
/* 0x013D */ DEFINE_ACTOR(En_Gm, ACTOR_EN_GM, ALLOCTYPE_NORMAL)
|
||||
/* 0x013E */ DEFINE_ACTOR(En_Ms, ACTOR_EN_MS, ALLOCTYPE_NORMAL)
|
||||
/* 0x013F */ DEFINE_ACTOR(En_Hs, ACTOR_EN_HS, ALLOCTYPE_NORMAL)
|
||||
/* 0x0140 */ DEFINE_ACTOR(Bg_Ingate, ACTOR_BG_INGATE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0141 */ DEFINE_ACTOR(En_Kanban, ACTOR_EN_KANBAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x0142 */ DEFINE_ACTOR(En_Heishi3, ACTOR_EN_HEISHI3, ALLOCTYPE_NORMAL)
|
||||
/* 0x0143 */ DEFINE_ACTOR(En_Syateki_Niw, ACTOR_EN_SYATEKI_NIW, ALLOCTYPE_NORMAL)
|
||||
/* 0x0144 */ DEFINE_ACTOR(En_Attack_Niw, ACTOR_EN_ATTACK_NIW, ALLOCTYPE_NORMAL)
|
||||
/* 0x0145 */ DEFINE_ACTOR(Bg_Spot01_Idosoko, ACTOR_BG_SPOT01_IDOSOKO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0146 */ DEFINE_ACTOR(En_Sa, ACTOR_EN_SA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0147 */ DEFINE_ACTOR(En_Wonder_Talk, ACTOR_EN_WONDER_TALK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0148 */ DEFINE_ACTOR(Bg_Gjyo_Bridge, ACTOR_BG_GJYO_BRIDGE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0149 */ DEFINE_ACTOR(En_Ds, ACTOR_EN_DS, ALLOCTYPE_NORMAL)
|
||||
/* 0x014A */ DEFINE_ACTOR(En_Mk, ACTOR_EN_MK, ALLOCTYPE_NORMAL)
|
||||
/* 0x014B */ DEFINE_ACTOR(En_Bom_Bowl_Man, ACTOR_EN_BOM_BOWL_MAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x014C */ DEFINE_ACTOR(En_Bom_Bowl_Pit, ACTOR_EN_BOM_BOWL_PIT, ALLOCTYPE_NORMAL)
|
||||
/* 0x014D */ DEFINE_ACTOR(En_Owl, ACTOR_EN_OWL, ALLOCTYPE_NORMAL)
|
||||
/* 0x014E */ DEFINE_ACTOR(En_Ishi, ACTOR_EN_ISHI, ALLOCTYPE_NORMAL)
|
||||
/* 0x014F */ DEFINE_ACTOR(Obj_Hana, ACTOR_OBJ_HANA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0150 */ DEFINE_ACTOR(Obj_Lightswitch, ACTOR_OBJ_LIGHTSWITCH, ALLOCTYPE_NORMAL)
|
||||
/* 0x0151 */ DEFINE_ACTOR(Obj_Mure2, ACTOR_OBJ_MURE2, ALLOCTYPE_NORMAL)
|
||||
/* 0x0152 */ DEFINE_ACTOR(En_Go, ACTOR_EN_GO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0153 */ DEFINE_ACTOR(En_Fu, ACTOR_EN_FU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0154 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_154)
|
||||
/* 0x0155 */ DEFINE_ACTOR(En_Changer, ACTOR_EN_CHANGER, ALLOCTYPE_NORMAL)
|
||||
/* 0x0156 */ DEFINE_ACTOR(Bg_Jya_Megami, ACTOR_BG_JYA_MEGAMI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0157 */ DEFINE_ACTOR(Bg_Jya_Lift, ACTOR_BG_JYA_LIFT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0158 */ DEFINE_ACTOR(Bg_Jya_Bigmirror, ACTOR_BG_JYA_BIGMIRROR, ALLOCTYPE_NORMAL)
|
||||
/* 0x0159 */ DEFINE_ACTOR(Bg_Jya_Bombchuiwa, ACTOR_BG_JYA_BOMBCHUIWA, ALLOCTYPE_NORMAL)
|
||||
/* 0x015A */ DEFINE_ACTOR(Bg_Jya_Amishutter, ACTOR_BG_JYA_AMISHUTTER, ALLOCTYPE_NORMAL)
|
||||
/* 0x015B */ DEFINE_ACTOR(Bg_Jya_Bombiwa, ACTOR_BG_JYA_BOMBIWA, ALLOCTYPE_NORMAL)
|
||||
/* 0x015C */ DEFINE_ACTOR(Bg_Spot18_Basket, ACTOR_BG_SPOT18_BASKET, ALLOCTYPE_NORMAL)
|
||||
/* 0x015D */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_15D)
|
||||
/* 0x015E */ DEFINE_ACTOR(En_Ganon_Organ, ACTOR_EN_GANON_ORGAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x015F */ DEFINE_ACTOR(En_Siofuki, ACTOR_EN_SIOFUKI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0160 */ DEFINE_ACTOR(En_Stream, ACTOR_EN_STREAM, ALLOCTYPE_NORMAL)
|
||||
/* 0x0161 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_161)
|
||||
/* 0x0162 */ DEFINE_ACTOR(En_Mm, ACTOR_EN_MM, ALLOCTYPE_NORMAL)
|
||||
/* 0x0163 */ DEFINE_ACTOR(En_Ko, ACTOR_EN_KO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0164 */ DEFINE_ACTOR(En_Kz, ACTOR_EN_KZ, ALLOCTYPE_NORMAL)
|
||||
/* 0x0165 */ DEFINE_ACTOR(En_Weather_Tag, ACTOR_EN_WEATHER_TAG, ALLOCTYPE_NORMAL)
|
||||
/* 0x0166 */ DEFINE_ACTOR(Bg_Sst_Floor, ACTOR_BG_SST_FLOOR, ALLOCTYPE_NORMAL)
|
||||
/* 0x0167 */ DEFINE_ACTOR(En_Ani, ACTOR_EN_ANI, ALLOCTYPE_NORMAL)
|
||||
/* 0x0168 */ DEFINE_ACTOR(En_Ex_Item, ACTOR_EN_EX_ITEM, ALLOCTYPE_NORMAL)
|
||||
/* 0x0169 */ DEFINE_ACTOR(Bg_Jya_Ironobj, ACTOR_BG_JYA_IRONOBJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x016A */ DEFINE_ACTOR(En_Js, ACTOR_EN_JS, ALLOCTYPE_NORMAL)
|
||||
/* 0x016B */ DEFINE_ACTOR(En_Jsjutan, ACTOR_EN_JSJUTAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x016C */ DEFINE_ACTOR(En_Cs, ACTOR_EN_CS, ALLOCTYPE_NORMAL)
|
||||
/* 0x016D */ DEFINE_ACTOR(En_Md, ACTOR_EN_MD, ALLOCTYPE_NORMAL)
|
||||
/* 0x016E */ DEFINE_ACTOR(En_Hy, ACTOR_EN_HY, ALLOCTYPE_NORMAL)
|
||||
/* 0x016F */ DEFINE_ACTOR(En_Ganon_Mant, ACTOR_EN_GANON_MANT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0170 */ DEFINE_ACTOR(En_Okarina_Effect, ACTOR_EN_OKARINA_EFFECT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0171 */ DEFINE_ACTOR(En_Mag, ACTOR_EN_MAG, ALLOCTYPE_NORMAL)
|
||||
/* 0x0172 */ DEFINE_ACTOR(Door_Gerudo, ACTOR_DOOR_GERUDO, ALLOCTYPE_NORMAL)
|
||||
/* 0x0173 */ DEFINE_ACTOR(Elf_Msg2, ACTOR_ELF_MSG2, ALLOCTYPE_NORMAL)
|
||||
/* 0x0174 */ DEFINE_ACTOR(Demo_Gt, ACTOR_DEMO_GT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0175 */ DEFINE_ACTOR(En_Po_Field, ACTOR_EN_PO_FIELD, ALLOCTYPE_NORMAL)
|
||||
/* 0x0176 */ DEFINE_ACTOR(Efc_Erupc, ACTOR_EFC_ERUPC, ALLOCTYPE_NORMAL)
|
||||
/* 0x0177 */ DEFINE_ACTOR(Bg_Zg, ACTOR_BG_ZG, ALLOCTYPE_NORMAL)
|
||||
/* 0x0178 */ DEFINE_ACTOR(En_Heishi4, ACTOR_EN_HEISHI4, ALLOCTYPE_NORMAL)
|
||||
/* 0x0179 */ DEFINE_ACTOR(En_Zl3, ACTOR_EN_ZL3, ALLOCTYPE_NORMAL)
|
||||
/* 0x017A */ DEFINE_ACTOR(Boss_Ganon2, ACTOR_BOSS_GANON2, ALLOCTYPE_NORMAL)
|
||||
/* 0x017B */ DEFINE_ACTOR(En_Kakasi, ACTOR_EN_KAKASI, ALLOCTYPE_NORMAL)
|
||||
/* 0x017C */ DEFINE_ACTOR(En_Takara_Man, ACTOR_EN_TAKARA_MAN, ALLOCTYPE_NORMAL)
|
||||
/* 0x017D */ DEFINE_ACTOR(Obj_Makeoshihiki, ACTOR_OBJ_MAKEOSHIHIKI, ALLOCTYPE_NORMAL)
|
||||
/* 0x017E */ DEFINE_ACTOR(Oceff_Spot, ACTOR_OCEFF_SPOT, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x017F */ DEFINE_ACTOR(End_Title, ACTOR_END_TITLE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0180 */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_180)
|
||||
/* 0x0181 */ DEFINE_ACTOR(En_Torch, ACTOR_EN_TORCH, ALLOCTYPE_NORMAL)
|
||||
/* 0x0182 */ DEFINE_ACTOR(Demo_Ec, ACTOR_DEMO_EC, ALLOCTYPE_NORMAL)
|
||||
/* 0x0183 */ DEFINE_ACTOR(Shot_Sun, ACTOR_SHOT_SUN, ALLOCTYPE_NORMAL)
|
||||
/* 0x0184 */ DEFINE_ACTOR(En_Dy_Extra, ACTOR_EN_DY_EXTRA, ALLOCTYPE_NORMAL)
|
||||
/* 0x0185 */ DEFINE_ACTOR(En_Wonder_Talk2, ACTOR_EN_WONDER_TALK2, ALLOCTYPE_NORMAL)
|
||||
/* 0x0186 */ DEFINE_ACTOR(En_Ge2, ACTOR_EN_GE2, ALLOCTYPE_NORMAL)
|
||||
/* 0x0187 */ DEFINE_ACTOR(Obj_Roomtimer, ACTOR_OBJ_ROOMTIMER, ALLOCTYPE_NORMAL)
|
||||
/* 0x0188 */ DEFINE_ACTOR(En_Ssh, ACTOR_EN_SSH, ALLOCTYPE_NORMAL)
|
||||
/* 0x0189 */ DEFINE_ACTOR(En_Sth, ACTOR_EN_STH, ALLOCTYPE_NORMAL)
|
||||
/* 0x018A */ DEFINE_ACTOR(Oceff_Wipe, ACTOR_OCEFF_WIPE, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x018B */ DEFINE_ACTOR(Oceff_Storm, ACTOR_OCEFF_STORM, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x018C */ DEFINE_ACTOR(En_Weiyer, ACTOR_EN_WEIYER, ALLOCTYPE_NORMAL)
|
||||
/* 0x018D */ DEFINE_ACTOR(Bg_Spot05_Soko, ACTOR_BG_SPOT05_SOKO, ALLOCTYPE_NORMAL)
|
||||
/* 0x018E */ DEFINE_ACTOR(Bg_Jya_1flift, ACTOR_BG_JYA_1FLIFT, ALLOCTYPE_NORMAL)
|
||||
/* 0x018F */ DEFINE_ACTOR(Bg_Jya_Haheniron, ACTOR_BG_JYA_HAHENIRON, ALLOCTYPE_NORMAL)
|
||||
/* 0x0190 */ DEFINE_ACTOR(Bg_Spot12_Gate, ACTOR_BG_SPOT12_GATE, ALLOCTYPE_NORMAL)
|
||||
/* 0x0191 */ DEFINE_ACTOR(Bg_Spot12_Saku, ACTOR_BG_SPOT12_SAKU, ALLOCTYPE_NORMAL)
|
||||
/* 0x0192 */ DEFINE_ACTOR(En_Hintnuts, ACTOR_EN_HINTNUTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x0193 */ DEFINE_ACTOR(En_Nutsball, ACTOR_EN_NUTSBALL, ALLOCTYPE_NORMAL)
|
||||
/* 0x0194 */ DEFINE_ACTOR(Bg_Spot00_Break, ACTOR_BG_SPOT00_BREAK, ALLOCTYPE_NORMAL)
|
||||
/* 0x0195 */ DEFINE_ACTOR(En_Shopnuts, ACTOR_EN_SHOPNUTS, ALLOCTYPE_NORMAL)
|
||||
/* 0x0196 */ DEFINE_ACTOR(En_It, ACTOR_EN_IT, ALLOCTYPE_NORMAL)
|
||||
/* 0x0197 */ DEFINE_ACTOR(En_GeldB, ACTOR_EN_GELDB, ALLOCTYPE_NORMAL)
|
||||
/* 0x0198 */ DEFINE_ACTOR(Oceff_Wipe2, ACTOR_OCEFF_WIPE2, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x0199 */ DEFINE_ACTOR(Oceff_Wipe3, ACTOR_OCEFF_WIPE3, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x019A */ DEFINE_ACTOR(En_Niw_Girl, ACTOR_EN_NIW_GIRL, ALLOCTYPE_NORMAL)
|
||||
/* 0x019B */ DEFINE_ACTOR(En_Dog, ACTOR_EN_DOG, ALLOCTYPE_NORMAL)
|
||||
/* 0x019C */ DEFINE_ACTOR(En_Si, ACTOR_EN_SI, ALLOCTYPE_NORMAL)
|
||||
/* 0x019D */ DEFINE_ACTOR(Bg_Spot01_Objects2, ACTOR_BG_SPOT01_OBJECTS2, ALLOCTYPE_NORMAL)
|
||||
/* 0x019E */ DEFINE_ACTOR(Obj_Comb, ACTOR_OBJ_COMB, ALLOCTYPE_NORMAL)
|
||||
/* 0x019F */ DEFINE_ACTOR(Bg_Spot11_Bakudankabe, ACTOR_BG_SPOT11_BAKUDANKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A0 */ DEFINE_ACTOR(Obj_Kibako2, ACTOR_OBJ_KIBAKO2, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A1 */ DEFINE_ACTOR(En_Dnt_Demo, ACTOR_EN_DNT_DEMO, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A2 */ DEFINE_ACTOR(En_Dnt_Jiji, ACTOR_EN_DNT_JIJI, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A3 */ DEFINE_ACTOR(En_Dnt_Nomal, ACTOR_EN_DNT_NOMAL, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A4 */ DEFINE_ACTOR(En_Guest, ACTOR_EN_GUEST, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A5 */ DEFINE_ACTOR(Bg_Bom_Guard, ACTOR_BG_BOM_GUARD, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A6 */ DEFINE_ACTOR(En_Hs2, ACTOR_EN_HS2, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A7 */ DEFINE_ACTOR(Demo_Kekkai, ACTOR_DEMO_KEKKAI, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A8 */ DEFINE_ACTOR(Bg_Spot08_Bakudankabe, ACTOR_BG_SPOT08_BAKUDANKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x01A9 */ DEFINE_ACTOR(Bg_Spot17_Bakudankabe, ACTOR_BG_SPOT17_BAKUDANKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x01AA */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_1AA)
|
||||
/* 0x01AB */ DEFINE_ACTOR(Obj_Mure3, ACTOR_OBJ_MURE3, ALLOCTYPE_NORMAL)
|
||||
/* 0x01AC */ DEFINE_ACTOR(En_Tg, ACTOR_EN_TG, ALLOCTYPE_NORMAL)
|
||||
/* 0x01AD */ DEFINE_ACTOR(En_Mu, ACTOR_EN_MU, ALLOCTYPE_NORMAL)
|
||||
/* 0x01AE */ DEFINE_ACTOR(En_Go2, ACTOR_EN_GO2, ALLOCTYPE_NORMAL)
|
||||
/* 0x01AF */ DEFINE_ACTOR(En_Wf, ACTOR_EN_WF, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B0 */ DEFINE_ACTOR(En_Skb, ACTOR_EN_SKB, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B1 */ DEFINE_ACTOR(Demo_Gj, ACTOR_DEMO_GJ, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B2 */ DEFINE_ACTOR(Demo_Geff, ACTOR_DEMO_GEFF, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B3 */ DEFINE_ACTOR(Bg_Gnd_Firemeiro, ACTOR_BG_GND_FIREMEIRO, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B4 */ DEFINE_ACTOR(Bg_Gnd_Darkmeiro, ACTOR_BG_GND_DARKMEIRO, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B5 */ DEFINE_ACTOR(Bg_Gnd_Soulmeiro, ACTOR_BG_GND_SOULMEIRO, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B6 */ DEFINE_ACTOR(Bg_Gnd_Nisekabe, ACTOR_BG_GND_NISEKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B7 */ DEFINE_ACTOR(Bg_Gnd_Iceblock, ACTOR_BG_GND_ICEBLOCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B8 */ DEFINE_ACTOR(En_Gb, ACTOR_EN_GB, ALLOCTYPE_NORMAL)
|
||||
/* 0x01B9 */ DEFINE_ACTOR(En_Gs, ACTOR_EN_GS, ALLOCTYPE_NORMAL)
|
||||
/* 0x01BA */ DEFINE_ACTOR(Bg_Mizu_Bwall, ACTOR_BG_MIZU_BWALL, ALLOCTYPE_NORMAL)
|
||||
/* 0x01BB */ DEFINE_ACTOR(Bg_Mizu_Shutter, ACTOR_BG_MIZU_SHUTTER, ALLOCTYPE_NORMAL)
|
||||
/* 0x01BC */ DEFINE_ACTOR(En_Daiku_Kakariko, ACTOR_EN_DAIKU_KAKARIKO, ALLOCTYPE_NORMAL)
|
||||
/* 0x01BD */ DEFINE_ACTOR(Bg_Bowl_Wall, ACTOR_BG_BOWL_WALL, ALLOCTYPE_NORMAL)
|
||||
/* 0x01BE */ DEFINE_ACTOR(En_Wall_Tubo, ACTOR_EN_WALL_TUBO, ALLOCTYPE_NORMAL)
|
||||
/* 0x01BF */ DEFINE_ACTOR(En_Po_Desert, ACTOR_EN_PO_DESERT, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C0 */ DEFINE_ACTOR(En_Crow, ACTOR_EN_CROW, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C1 */ DEFINE_ACTOR(Door_Killer, ACTOR_DOOR_KILLER, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C2 */ DEFINE_ACTOR(Bg_Spot11_Oasis, ACTOR_BG_SPOT11_OASIS, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C3 */ DEFINE_ACTOR(Bg_Spot18_Futa, ACTOR_BG_SPOT18_FUTA, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C4 */ DEFINE_ACTOR(Bg_Spot18_Shutter, ACTOR_BG_SPOT18_SHUTTER, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C5 */ DEFINE_ACTOR(En_Ma3, ACTOR_EN_MA3, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C6 */ DEFINE_ACTOR(En_Cow, ACTOR_EN_COW, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C7 */ DEFINE_ACTOR(Bg_Ice_Turara, ACTOR_BG_ICE_TURARA, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C8 */ DEFINE_ACTOR(Bg_Ice_Shutter, ACTOR_BG_ICE_SHUTTER, ALLOCTYPE_NORMAL)
|
||||
/* 0x01C9 */ DEFINE_ACTOR(En_Kakasi2, ACTOR_EN_KAKASI2, ALLOCTYPE_NORMAL)
|
||||
/* 0x01CA */ DEFINE_ACTOR(En_Kakasi3, ACTOR_EN_KAKASI3, ALLOCTYPE_NORMAL)
|
||||
/* 0x01CB */ DEFINE_ACTOR(Oceff_Wipe4, ACTOR_OCEFF_WIPE4, ALLOCTYPE_ABSOLUTE)
|
||||
/* 0x01CC */ DEFINE_ACTOR(En_Eg, ACTOR_EN_EG, ALLOCTYPE_NORMAL)
|
||||
/* 0x01CD */ DEFINE_ACTOR(Bg_Menkuri_Nisekabe, ACTOR_BG_MENKURI_NISEKABE, ALLOCTYPE_NORMAL)
|
||||
/* 0x01CE */ DEFINE_ACTOR(En_Zo, ACTOR_EN_ZO, ALLOCTYPE_NORMAL)
|
||||
/* 0x01CF */ DEFINE_ACTOR(Obj_Makekinsuta, ACTOR_OBJ_MAKEKINSUTA, ALLOCTYPE_NORMAL)
|
||||
/* 0x01D0 */ DEFINE_ACTOR(En_Ge3, ACTOR_EN_GE3, ALLOCTYPE_NORMAL)
|
||||
/* 0x01D1 */ DEFINE_ACTOR(Obj_Timeblock, ACTOR_OBJ_TIMEBLOCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x01D2 */ DEFINE_ACTOR(Obj_Hamishi, ACTOR_OBJ_HAMISHI, ALLOCTYPE_NORMAL)
|
||||
/* 0x01D3 */ DEFINE_ACTOR(En_Zl4, ACTOR_EN_ZL4, ALLOCTYPE_NORMAL)
|
||||
/* 0x01D4 */ DEFINE_ACTOR(En_Mm2, ACTOR_EN_MM2, ALLOCTYPE_NORMAL)
|
||||
/* 0x01D5 */ DEFINE_ACTOR(Bg_Jya_Block, ACTOR_BG_JYA_BLOCK, ALLOCTYPE_NORMAL)
|
||||
/* 0x01D6 */ DEFINE_ACTOR(Obj_Warp2block, ACTOR_OBJ_WARP2BLOCK, ALLOCTYPE_NORMAL)
|
9
soh/include/tables/dmadata_table.h
Normal file
9
soh/include/tables/dmadata_table.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
/**
|
||||
* Select dmadata table for version
|
||||
*/
|
||||
#ifdef NON_MATCHING
|
||||
// For non-matching builds, dmadata is generated from the specfile segments
|
||||
#include "dmadata_table_spec.h"
|
||||
#else
|
||||
#include "tables/dmadata_table_mqdbg.h"
|
||||
#endif
|
1535
soh/include/tables/dmadata_table_mqdbg.h
Normal file
1535
soh/include/tables/dmadata_table_mqdbg.h
Normal file
File diff suppressed because it is too large
Load diff
46
soh/include/tables/effect_ss_table.h
Normal file
46
soh/include/tables/effect_ss_table.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
/**
|
||||
* Effect Soft Sprite Table
|
||||
*
|
||||
* DEFINE_EFFECT_SS should be used for normal effects soft sprites
|
||||
* - Argument 1: Name of the effect (without the ovl_ part)
|
||||
* - Argument 2: Enum value for this effect
|
||||
*
|
||||
* DEFINE_EFFECT_SS_UNSET is needed to define empty entries from the original game
|
||||
*/
|
||||
/* 0x00 */ DEFINE_EFFECT_SS(Effect_Ss_Dust, EFFECT_SS_DUST)
|
||||
/* 0x01 */ DEFINE_EFFECT_SS(Effect_Ss_KiraKira, EFFECT_SS_KIRAKIRA)
|
||||
/* 0x02 */ DEFINE_EFFECT_SS(Effect_Ss_Bomb, EFFECT_SS_BOMB)
|
||||
/* 0x03 */ DEFINE_EFFECT_SS(Effect_Ss_Bomb2, EFFECT_SS_BOMB2)
|
||||
/* 0x04 */ DEFINE_EFFECT_SS(Effect_Ss_Blast, EFFECT_SS_BLAST)
|
||||
/* 0x05 */ DEFINE_EFFECT_SS(Effect_Ss_G_Spk, EFFECT_SS_G_SPK)
|
||||
/* 0x06 */ DEFINE_EFFECT_SS(Effect_Ss_D_Fire, EFFECT_SS_D_FIRE)
|
||||
/* 0x07 */ DEFINE_EFFECT_SS(Effect_Ss_Bubble, EFFECT_SS_BUBBLE)
|
||||
/* 0x08 */ DEFINE_EFFECT_SS_UNSET(EFFECT_SS_UNSET)
|
||||
/* 0x09 */ DEFINE_EFFECT_SS(Effect_Ss_G_Ripple, EFFECT_SS_G_RIPPLE)
|
||||
/* 0x0A */ DEFINE_EFFECT_SS(Effect_Ss_G_Splash, EFFECT_SS_G_SPLASH)
|
||||
/* 0x0B */ DEFINE_EFFECT_SS(Effect_Ss_G_Magma, EFFECT_SS_G_MAGMA)
|
||||
/* 0x0C */ DEFINE_EFFECT_SS(Effect_Ss_G_Fire, EFFECT_SS_G_FIRE)
|
||||
/* 0x0D */ DEFINE_EFFECT_SS(Effect_Ss_Lightning, EFFECT_SS_LIGHTNING)
|
||||
/* 0x0E */ DEFINE_EFFECT_SS(Effect_Ss_Dt_Bubble, EFFECT_SS_DT_BUBBLE)
|
||||
/* 0x0F */ DEFINE_EFFECT_SS(Effect_Ss_Hahen, EFFECT_SS_HAHEN)
|
||||
/* 0x10 */ DEFINE_EFFECT_SS(Effect_Ss_Stick, EFFECT_SS_STICK)
|
||||
/* 0x11 */ DEFINE_EFFECT_SS(Effect_Ss_Sibuki, EFFECT_SS_SIBUKI)
|
||||
/* 0x12 */ DEFINE_EFFECT_SS(Effect_Ss_Sibuki2, EFFECT_SS_SIBUKI2)
|
||||
/* 0x13 */ DEFINE_EFFECT_SS(Effect_Ss_G_Magma2, EFFECT_SS_G_MAGMA2)
|
||||
/* 0x14 */ DEFINE_EFFECT_SS(Effect_Ss_Stone1, EFFECT_SS_STONE1)
|
||||
/* 0x15 */ DEFINE_EFFECT_SS(Effect_Ss_HitMark, EFFECT_SS_HITMARK)
|
||||
/* 0x16 */ DEFINE_EFFECT_SS(Effect_Ss_Fhg_Flash, EFFECT_SS_FHG_FLASH)
|
||||
/* 0x17 */ DEFINE_EFFECT_SS(Effect_Ss_K_Fire, EFFECT_SS_K_FIRE)
|
||||
/* 0x18 */ DEFINE_EFFECT_SS(Effect_Ss_Solder_Srch_Ball, EFFECT_SS_SOLDER_SRCH_BALL)
|
||||
/* 0x19 */ DEFINE_EFFECT_SS(Effect_Ss_Kakera, EFFECT_SS_KAKERA)
|
||||
/* 0x1A */ DEFINE_EFFECT_SS(Effect_Ss_Ice_Piece, EFFECT_SS_ICE_PIECE)
|
||||
/* 0x1B */ DEFINE_EFFECT_SS(Effect_Ss_En_Ice, EFFECT_SS_EN_ICE)
|
||||
/* 0x1C */ DEFINE_EFFECT_SS(Effect_Ss_Fire_Tail, EFFECT_SS_FIRE_TAIL)
|
||||
/* 0x1D */ DEFINE_EFFECT_SS(Effect_Ss_En_Fire, EFFECT_SS_EN_FIRE)
|
||||
/* 0x1E */ DEFINE_EFFECT_SS(Effect_Ss_Extra, EFFECT_SS_EXTRA)
|
||||
/* 0x1F */ DEFINE_EFFECT_SS(Effect_Ss_Fcircle, EFFECT_SS_FCIRCLE)
|
||||
/* 0x20 */ DEFINE_EFFECT_SS(Effect_Ss_Dead_Db, EFFECT_SS_DEAD_DB)
|
||||
/* 0x21 */ DEFINE_EFFECT_SS(Effect_Ss_Dead_Dd, EFFECT_SS_DEAD_DD)
|
||||
/* 0x22 */ DEFINE_EFFECT_SS(Effect_Ss_Dead_Ds, EFFECT_SS_DEAD_DS)
|
||||
/* 0x23 */ DEFINE_EFFECT_SS(Effect_Ss_Dead_Sound, EFFECT_SS_DEAD_SOUND)
|
||||
/* 0x24 */ DEFINE_EFFECT_SS(Effect_Ss_Ice_Smoke, EFFECT_SS_ICE_SMOKE)
|
411
soh/include/tables/object_table.h
Normal file
411
soh/include/tables/object_table.h
Normal file
|
@ -0,0 +1,411 @@
|
|||
/**
|
||||
* Object Table
|
||||
*
|
||||
* DEFINE_OBJECT should be used for normal objects
|
||||
* - Argument 1: Name of the object segment in spec
|
||||
* - Argument 2: Enum value for this object
|
||||
*
|
||||
* DEFINE_OBJECT_UNSET and DEFINE_OBJECT_NULL are needed to define empty entries from the original game
|
||||
*/
|
||||
/* 0x0000 */ DEFINE_OBJECT_UNSET(OBJECT_INVALID) // Object ID 0 isn't usable and should remain unset
|
||||
/* 0x0001 */ DEFINE_OBJECT(gameplay_keep, OBJECT_GAMEPLAY_KEEP)
|
||||
/* 0x0002 */ DEFINE_OBJECT(gameplay_field_keep, OBJECT_GAMEPLAY_FIELD_KEEP)
|
||||
/* 0x0003 */ DEFINE_OBJECT(gameplay_dangeon_keep, OBJECT_GAMEPLAY_DANGEON_KEEP)
|
||||
/* 0x0004 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_4)
|
||||
/* 0x0005 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_5)
|
||||
/* 0x0006 */ DEFINE_OBJECT(object_human, OBJECT_HUMAN)
|
||||
/* 0x0007 */ DEFINE_OBJECT(object_okuta, OBJECT_OKUTA)
|
||||
/* 0x0008 */ DEFINE_OBJECT(object_crow, OBJECT_CROW)
|
||||
/* 0x0009 */ DEFINE_OBJECT(object_poh, OBJECT_POH)
|
||||
/* 0x000A */ DEFINE_OBJECT(object_dy_obj, OBJECT_DY_OBJ)
|
||||
/* 0x000B */ DEFINE_OBJECT(object_wallmaster, OBJECT_WALLMASTER)
|
||||
/* 0x000C */ DEFINE_OBJECT(object_dodongo, OBJECT_DODONGO)
|
||||
/* 0x000D */ DEFINE_OBJECT(object_firefly, OBJECT_FIREFLY)
|
||||
/* 0x000E */ DEFINE_OBJECT(object_box, OBJECT_BOX)
|
||||
/* 0x000F */ DEFINE_OBJECT(object_fire, OBJECT_FIRE)
|
||||
/* 0x0010 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_10)
|
||||
/* 0x0011 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_11)
|
||||
/* 0x0012 */ DEFINE_OBJECT(object_bubble, OBJECT_BUBBLE)
|
||||
/* 0x0013 */ DEFINE_OBJECT(object_niw, OBJECT_NIW)
|
||||
/* 0x0014 */ DEFINE_OBJECT(object_link_boy, OBJECT_LINK_BOY)
|
||||
/* 0x0015 */ DEFINE_OBJECT(object_link_child, OBJECT_LINK_CHILD)
|
||||
/* 0x0016 */ DEFINE_OBJECT(object_tite, OBJECT_TITE)
|
||||
/* 0x0017 */ DEFINE_OBJECT(object_reeba, OBJECT_REEBA)
|
||||
/* 0x0018 */ DEFINE_OBJECT(object_peehat, OBJECT_PEEHAT)
|
||||
/* 0x0019 */ DEFINE_OBJECT(object_kingdodongo, OBJECT_KINGDODONGO)
|
||||
/* 0x001A */ DEFINE_OBJECT(object_horse, OBJECT_HORSE)
|
||||
/* 0x001B */ DEFINE_OBJECT(object_zf, OBJECT_ZF)
|
||||
/* 0x001C */ DEFINE_OBJECT(object_goma, OBJECT_GOMA)
|
||||
/* 0x001D */ DEFINE_OBJECT(object_zl1, OBJECT_ZL1)
|
||||
/* 0x001E */ DEFINE_OBJECT(object_gol, OBJECT_GOL)
|
||||
/* 0x001F */ DEFINE_OBJECT(object_dodojr, OBJECT_DODOJR)
|
||||
/* 0x0020 */ DEFINE_OBJECT(object_torch2, OBJECT_TORCH2)
|
||||
/* 0x0021 */ DEFINE_OBJECT(object_bl, OBJECT_BL)
|
||||
/* 0x0022 */ DEFINE_OBJECT(object_tp, OBJECT_TP)
|
||||
/* 0x0023 */ DEFINE_OBJECT(object_oA1, OBJECT_OA1)
|
||||
/* 0x0024 */ DEFINE_OBJECT(object_st, OBJECT_ST)
|
||||
/* 0x0025 */ DEFINE_OBJECT(object_bw, OBJECT_BW)
|
||||
/* 0x0026 */ DEFINE_OBJECT(object_ei, OBJECT_EI)
|
||||
/* 0x0027 */ DEFINE_OBJECT(object_horse_normal, OBJECT_HORSE_NORMAL)
|
||||
/* 0x0028 */ DEFINE_OBJECT(object_oB1, OBJECT_OB1)
|
||||
/* 0x0029 */ DEFINE_OBJECT(object_o_anime, OBJECT_O_ANIME)
|
||||
/* 0x002A */ DEFINE_OBJECT(object_spot04_objects, OBJECT_SPOT04_OBJECTS)
|
||||
/* 0x002B */ DEFINE_OBJECT(object_ddan_objects, OBJECT_DDAN_OBJECTS)
|
||||
/* 0x002C */ DEFINE_OBJECT(object_hidan_objects, OBJECT_HIDAN_OBJECTS)
|
||||
/* 0x002D */ DEFINE_OBJECT(object_horse_ganon, OBJECT_HORSE_GANON)
|
||||
/* 0x002E */ DEFINE_OBJECT(object_oA2, OBJECT_OA2)
|
||||
/* 0x002F */ DEFINE_OBJECT(object_spot00_objects, OBJECT_SPOT00_OBJECTS)
|
||||
/* 0x0030 */ DEFINE_OBJECT(object_mb, OBJECT_MB)
|
||||
/* 0x0031 */ DEFINE_OBJECT(object_bombf, OBJECT_BOMBF)
|
||||
/* 0x0032 */ DEFINE_OBJECT(object_sk2, OBJECT_SK2)
|
||||
/* 0x0033 */ DEFINE_OBJECT(object_oE1, OBJECT_OE1)
|
||||
/* 0x0034 */ DEFINE_OBJECT(object_oE_anime, OBJECT_OE_ANIME)
|
||||
/* 0x0035 */ DEFINE_OBJECT(object_oE2, OBJECT_OE2)
|
||||
/* 0x0036 */ DEFINE_OBJECT(object_ydan_objects, OBJECT_YDAN_OBJECTS)
|
||||
/* 0x0037 */ DEFINE_OBJECT(object_gnd, OBJECT_GND)
|
||||
/* 0x0038 */ DEFINE_OBJECT(object_am, OBJECT_AM)
|
||||
/* 0x0039 */ DEFINE_OBJECT(object_dekubaba, OBJECT_DEKUBABA)
|
||||
/* 0x003A */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_3A)
|
||||
/* 0x003B */ DEFINE_OBJECT(object_oA3, OBJECT_OA3)
|
||||
/* 0x003C */ DEFINE_OBJECT(object_oA4, OBJECT_OA4)
|
||||
/* 0x003D */ DEFINE_OBJECT(object_oA5, OBJECT_OA5)
|
||||
/* 0x003E */ DEFINE_OBJECT(object_oA6, OBJECT_OA6)
|
||||
/* 0x003F */ DEFINE_OBJECT(object_oA7, OBJECT_OA7)
|
||||
/* 0x0040 */ DEFINE_OBJECT(object_jj, OBJECT_JJ)
|
||||
/* 0x0041 */ DEFINE_OBJECT(object_oA8, OBJECT_OA8)
|
||||
/* 0x0042 */ DEFINE_OBJECT(object_oA9, OBJECT_OA9)
|
||||
/* 0x0043 */ DEFINE_OBJECT(object_oB2, OBJECT_OB2)
|
||||
/* 0x0044 */ DEFINE_OBJECT(object_oB3, OBJECT_OB3)
|
||||
/* 0x0045 */ DEFINE_OBJECT(object_oB4, OBJECT_OB4)
|
||||
/* 0x0046 */ DEFINE_OBJECT(object_horse_zelda, OBJECT_HORSE_ZELDA)
|
||||
/* 0x0047 */ DEFINE_OBJECT(object_opening_demo1, OBJECT_OPENING_DEMO1)
|
||||
/* 0x0048 */ DEFINE_OBJECT(object_warp1, OBJECT_WARP1)
|
||||
/* 0x0049 */ DEFINE_OBJECT(object_b_heart, OBJECT_B_HEART)
|
||||
/* 0x004A */ DEFINE_OBJECT(object_dekunuts, OBJECT_DEKUNUTS)
|
||||
/* 0x004B */ DEFINE_OBJECT(object_oE3, OBJECT_OE3)
|
||||
/* 0x004C */ DEFINE_OBJECT(object_oE4, OBJECT_OE4)
|
||||
/* 0x004D */ DEFINE_OBJECT(object_menkuri_objects, OBJECT_MENKURI_OBJECTS)
|
||||
/* 0x004E */ DEFINE_OBJECT(object_oE5, OBJECT_OE5)
|
||||
/* 0x004F */ DEFINE_OBJECT(object_oE6, OBJECT_OE6)
|
||||
/* 0x0050 */ DEFINE_OBJECT(object_oE7, OBJECT_OE7)
|
||||
/* 0x0051 */ DEFINE_OBJECT(object_oE8, OBJECT_OE8)
|
||||
/* 0x0052 */ DEFINE_OBJECT(object_oE9, OBJECT_OE9)
|
||||
/* 0x0053 */ DEFINE_OBJECT(object_oE10, OBJECT_OE10)
|
||||
/* 0x0054 */ DEFINE_OBJECT(object_oE11, OBJECT_OE11)
|
||||
/* 0x0055 */ DEFINE_OBJECT(object_oE12, OBJECT_OE12)
|
||||
/* 0x0056 */ DEFINE_OBJECT(object_vali, OBJECT_VALI)
|
||||
/* 0x0057 */ DEFINE_OBJECT(object_oA10, OBJECT_OA10)
|
||||
/* 0x0058 */ DEFINE_OBJECT(object_oA11, OBJECT_OA11)
|
||||
/* 0x0059 */ DEFINE_OBJECT(object_mizu_objects, OBJECT_MIZU_OBJECTS)
|
||||
/* 0x005A */ DEFINE_OBJECT(object_fhg, OBJECT_FHG)
|
||||
/* 0x005B */ DEFINE_OBJECT(object_ossan, OBJECT_OSSAN)
|
||||
/* 0x005C */ DEFINE_OBJECT(object_mori_hineri1, OBJECT_MORI_HINERI1)
|
||||
/* 0x005D */ DEFINE_OBJECT(object_Bb, OBJECT_BB)
|
||||
/* 0x005E */ DEFINE_OBJECT(object_toki_objects, OBJECT_TOKI_OBJECTS)
|
||||
/* 0x005F */ DEFINE_OBJECT(object_yukabyun, OBJECT_YUKABYUN)
|
||||
/* 0x0060 */ DEFINE_OBJECT(object_zl2, OBJECT_ZL2)
|
||||
/* 0x0061 */ DEFINE_OBJECT(object_mjin, OBJECT_MJIN)
|
||||
/* 0x0062 */ DEFINE_OBJECT(object_mjin_flash, OBJECT_MJIN_FLASH)
|
||||
/* 0x0063 */ DEFINE_OBJECT(object_mjin_dark, OBJECT_MJIN_DARK)
|
||||
/* 0x0064 */ DEFINE_OBJECT(object_mjin_flame, OBJECT_MJIN_FLAME)
|
||||
/* 0x0065 */ DEFINE_OBJECT(object_mjin_ice, OBJECT_MJIN_ICE)
|
||||
/* 0x0066 */ DEFINE_OBJECT(object_mjin_soul, OBJECT_MJIN_SOUL)
|
||||
/* 0x0067 */ DEFINE_OBJECT(object_mjin_wind, OBJECT_MJIN_WIND)
|
||||
/* 0x0068 */ DEFINE_OBJECT(object_mjin_oka, OBJECT_MJIN_OKA)
|
||||
/* 0x0069 */ DEFINE_OBJECT(object_haka_objects, OBJECT_HAKA_OBJECTS)
|
||||
/* 0x006A */ DEFINE_OBJECT(object_spot06_objects, OBJECT_SPOT06_OBJECTS)
|
||||
/* 0x006B */ DEFINE_OBJECT(object_ice_objects, OBJECT_ICE_OBJECTS)
|
||||
/* 0x006C */ DEFINE_OBJECT(object_relay_objects, OBJECT_RELAY_OBJECTS)
|
||||
/* 0x006D */ DEFINE_OBJECT(object_po_field, OBJECT_PO_FIELD)
|
||||
/* 0x006E */ DEFINE_OBJECT(object_po_composer, OBJECT_PO_COMPOSER)
|
||||
/* 0x006F */ DEFINE_OBJECT(object_mori_hineri1a, OBJECT_MORI_HINERI1A)
|
||||
/* 0x0070 */ DEFINE_OBJECT(object_mori_hineri2, OBJECT_MORI_HINERI2)
|
||||
/* 0x0071 */ DEFINE_OBJECT(object_mori_hineri2a, OBJECT_MORI_HINERI2A)
|
||||
/* 0x0072 */ DEFINE_OBJECT(object_mori_objects, OBJECT_MORI_OBJECTS)
|
||||
/* 0x0073 */ DEFINE_OBJECT(object_mori_tex, OBJECT_MORI_TEX)
|
||||
/* 0x0074 */ DEFINE_OBJECT(object_spot08_obj, OBJECT_SPOT08_OBJ)
|
||||
/* 0x0075 */ DEFINE_OBJECT(object_warp2, OBJECT_WARP2)
|
||||
/* 0x0076 */ DEFINE_OBJECT(object_hata, OBJECT_HATA)
|
||||
/* 0x0077 */ DEFINE_OBJECT(object_bird, OBJECT_BIRD)
|
||||
/* 0x0078 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_78)
|
||||
/* 0x0079 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_79)
|
||||
/* 0x007A */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_7A)
|
||||
/* 0x007B */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_7B)
|
||||
/* 0x007C */ DEFINE_OBJECT(object_wood02, OBJECT_WOOD02)
|
||||
/* 0x007D */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_7D)
|
||||
/* 0x007E */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_7E)
|
||||
/* 0x007F */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_7F)
|
||||
/* 0x0080 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_80)
|
||||
/* 0x0081 */ DEFINE_OBJECT(object_lightbox, OBJECT_LIGHTBOX)
|
||||
/* 0x0082 */ DEFINE_OBJECT(object_pu_box, OBJECT_PU_BOX)
|
||||
/* 0x0083 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_83)
|
||||
/* 0x0084 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_84)
|
||||
/* 0x0085 */ DEFINE_OBJECT(object_trap, OBJECT_TRAP)
|
||||
/* 0x0086 */ DEFINE_OBJECT(object_vase, OBJECT_VASE)
|
||||
/* 0x0087 */ DEFINE_OBJECT(object_im, OBJECT_IM)
|
||||
/* 0x0088 */ DEFINE_OBJECT(object_ta, OBJECT_TA)
|
||||
/* 0x0089 */ DEFINE_OBJECT(object_tk, OBJECT_TK)
|
||||
/* 0x008A */ DEFINE_OBJECT(object_xc, OBJECT_XC)
|
||||
/* 0x008B */ DEFINE_OBJECT(object_vm, OBJECT_VM)
|
||||
/* 0x008C */ DEFINE_OBJECT(object_bv, OBJECT_BV)
|
||||
/* 0x008D */ DEFINE_OBJECT(object_hakach_objects, OBJECT_HAKACH_OBJECTS)
|
||||
/* 0x008E */ DEFINE_OBJECT(object_efc_crystal_light, OBJECT_EFC_CRYSTAL_LIGHT)
|
||||
/* 0x008F */ DEFINE_OBJECT(object_efc_fire_ball, OBJECT_EFC_FIRE_BALL)
|
||||
/* 0x0090 */ DEFINE_OBJECT(object_efc_flash, OBJECT_EFC_FLASH)
|
||||
/* 0x0091 */ DEFINE_OBJECT(object_efc_lgt_shower, OBJECT_EFC_LGT_SHOWER)
|
||||
/* 0x0092 */ DEFINE_OBJECT(object_efc_star_field, OBJECT_EFC_STAR_FIELD)
|
||||
/* 0x0093 */ DEFINE_OBJECT(object_god_lgt, OBJECT_GOD_LGT)
|
||||
/* 0x0094 */ DEFINE_OBJECT(object_light_ring, OBJECT_LIGHT_RING)
|
||||
/* 0x0095 */ DEFINE_OBJECT(object_triforce_spot, OBJECT_TRIFORCE_SPOT)
|
||||
/* 0x0096 */ DEFINE_OBJECT(object_bdan_objects, OBJECT_BDAN_OBJECTS)
|
||||
/* 0x0097 */ DEFINE_OBJECT(object_sd, OBJECT_SD)
|
||||
/* 0x0098 */ DEFINE_OBJECT(object_rd, OBJECT_RD)
|
||||
/* 0x0099 */ DEFINE_OBJECT(object_po_sisters, OBJECT_PO_SISTERS)
|
||||
/* 0x009A */ DEFINE_OBJECT(object_heavy_object, OBJECT_HEAVY_OBJECT)
|
||||
/* 0x009B */ DEFINE_OBJECT(object_gndd, OBJECT_GNDD)
|
||||
/* 0x009C */ DEFINE_OBJECT(object_fd, OBJECT_FD)
|
||||
/* 0x009D */ DEFINE_OBJECT(object_du, OBJECT_DU)
|
||||
/* 0x009E */ DEFINE_OBJECT(object_fw, OBJECT_FW)
|
||||
/* 0x009F */ DEFINE_OBJECT(object_medal, OBJECT_MEDAL)
|
||||
/* 0x00A0 */ DEFINE_OBJECT(object_horse_link_child, OBJECT_HORSE_LINK_CHILD)
|
||||
/* 0x00A1 */ DEFINE_OBJECT(object_spot02_objects, OBJECT_SPOT02_OBJECTS)
|
||||
/* 0x00A2 */ DEFINE_OBJECT(object_haka, OBJECT_HAKA)
|
||||
/* 0x00A3 */ DEFINE_OBJECT(object_ru1, OBJECT_RU1)
|
||||
/* 0x00A4 */ DEFINE_OBJECT(object_syokudai, OBJECT_SYOKUDAI)
|
||||
/* 0x00A5 */ DEFINE_OBJECT(object_fd2, OBJECT_FD2)
|
||||
/* 0x00A6 */ DEFINE_OBJECT(object_dh, OBJECT_DH)
|
||||
/* 0x00A7 */ DEFINE_OBJECT(object_rl, OBJECT_RL)
|
||||
/* 0x00A8 */ DEFINE_OBJECT(object_efc_tw, OBJECT_EFC_TW)
|
||||
/* 0x00A9 */ DEFINE_OBJECT(object_demo_tre_lgt, OBJECT_DEMO_TRE_LGT)
|
||||
/* 0x00AA */ DEFINE_OBJECT(object_gi_key, OBJECT_GI_KEY)
|
||||
/* 0x00AB */ DEFINE_OBJECT(object_mir_ray, OBJECT_MIR_RAY)
|
||||
/* 0x00AC */ DEFINE_OBJECT(object_brob, OBJECT_BROB)
|
||||
/* 0x00AD */ DEFINE_OBJECT(object_gi_jewel, OBJECT_GI_JEWEL)
|
||||
/* 0x00AE */ DEFINE_OBJECT(object_spot09_obj, OBJECT_SPOT09_OBJ)
|
||||
/* 0x00AF */ DEFINE_OBJECT(object_spot18_obj, OBJECT_SPOT18_OBJ)
|
||||
/* 0x00B0 */ DEFINE_OBJECT(object_bdoor, OBJECT_BDOOR)
|
||||
/* 0x00B1 */ DEFINE_OBJECT(object_spot17_obj, OBJECT_SPOT17_OBJ)
|
||||
/* 0x00B2 */ DEFINE_OBJECT(object_shop_dungen, OBJECT_SHOP_DUNGEN)
|
||||
/* 0x00B3 */ DEFINE_OBJECT(object_nb, OBJECT_NB)
|
||||
/* 0x00B4 */ DEFINE_OBJECT(object_mo, OBJECT_MO)
|
||||
/* 0x00B5 */ DEFINE_OBJECT(object_sb, OBJECT_SB)
|
||||
/* 0x00B6 */ DEFINE_OBJECT(object_gi_melody, OBJECT_GI_MELODY)
|
||||
/* 0x00B7 */ DEFINE_OBJECT(object_gi_heart, OBJECT_GI_HEART)
|
||||
/* 0x00B8 */ DEFINE_OBJECT(object_gi_compass, OBJECT_GI_COMPASS)
|
||||
/* 0x00B9 */ DEFINE_OBJECT(object_gi_bosskey, OBJECT_GI_BOSSKEY)
|
||||
/* 0x00BA */ DEFINE_OBJECT(object_gi_medal, OBJECT_GI_MEDAL)
|
||||
/* 0x00BB */ DEFINE_OBJECT(object_gi_nuts, OBJECT_GI_NUTS)
|
||||
/* 0x00BC */ DEFINE_OBJECT(object_sa, OBJECT_SA)
|
||||
/* 0x00BD */ DEFINE_OBJECT(object_gi_hearts, OBJECT_GI_HEARTS)
|
||||
/* 0x00BE */ DEFINE_OBJECT(object_gi_arrowcase, OBJECT_GI_ARROWCASE)
|
||||
/* 0x00BF */ DEFINE_OBJECT(object_gi_bombpouch, OBJECT_GI_BOMBPOUCH)
|
||||
/* 0x00C0 */ DEFINE_OBJECT(object_in, OBJECT_IN)
|
||||
/* 0x00C1 */ DEFINE_OBJECT(object_tr, OBJECT_TR)
|
||||
/* 0x00C2 */ DEFINE_OBJECT(object_spot16_obj, OBJECT_SPOT16_OBJ)
|
||||
/* 0x00C3 */ DEFINE_OBJECT(object_oE1s, OBJECT_OE1S)
|
||||
/* 0x00C4 */ DEFINE_OBJECT(object_oE4s, OBJECT_OE4S)
|
||||
/* 0x00C5 */ DEFINE_OBJECT(object_os_anime, OBJECT_OS_ANIME)
|
||||
/* 0x00C6 */ DEFINE_OBJECT(object_gi_bottle, OBJECT_GI_BOTTLE)
|
||||
/* 0x00C7 */ DEFINE_OBJECT(object_gi_stick, OBJECT_GI_STICK)
|
||||
/* 0x00C8 */ DEFINE_OBJECT(object_gi_map, OBJECT_GI_MAP)
|
||||
/* 0x00C9 */ DEFINE_OBJECT(object_oF1d_map, OBJECT_OF1D_MAP)
|
||||
/* 0x00CA */ DEFINE_OBJECT(object_ru2, OBJECT_RU2)
|
||||
/* 0x00CB */ DEFINE_OBJECT(object_gi_shield_1, OBJECT_GI_SHIELD_1)
|
||||
/* 0x00CC */ DEFINE_OBJECT(object_dekujr, OBJECT_DEKUJR)
|
||||
/* 0x00CD */ DEFINE_OBJECT(object_gi_magicpot, OBJECT_GI_MAGICPOT)
|
||||
/* 0x00CE */ DEFINE_OBJECT(object_gi_bomb_1, OBJECT_GI_BOMB_1)
|
||||
/* 0x00CF */ DEFINE_OBJECT(object_oF1s, OBJECT_OF1S)
|
||||
/* 0x00D0 */ DEFINE_OBJECT(object_ma2, OBJECT_MA2)
|
||||
/* 0x00D1 */ DEFINE_OBJECT(object_gi_purse, OBJECT_GI_PURSE)
|
||||
/* 0x00D2 */ DEFINE_OBJECT(object_hni, OBJECT_HNI)
|
||||
/* 0x00D3 */ DEFINE_OBJECT(object_tw, OBJECT_TW)
|
||||
/* 0x00D4 */ DEFINE_OBJECT(object_rr, OBJECT_RR)
|
||||
/* 0x00D5 */ DEFINE_OBJECT(object_bxa, OBJECT_BXA)
|
||||
/* 0x00D6 */ DEFINE_OBJECT(object_anubice, OBJECT_ANUBICE)
|
||||
/* 0x00D7 */ DEFINE_OBJECT(object_gi_gerudo, OBJECT_GI_GERUDO)
|
||||
/* 0x00D8 */ DEFINE_OBJECT(object_gi_arrow, OBJECT_GI_ARROW)
|
||||
/* 0x00D9 */ DEFINE_OBJECT(object_gi_bomb_2, OBJECT_GI_BOMB_2)
|
||||
/* 0x00DA */ DEFINE_OBJECT(object_gi_egg, OBJECT_GI_EGG)
|
||||
/* 0x00DB */ DEFINE_OBJECT(object_gi_scale, OBJECT_GI_SCALE)
|
||||
/* 0x00DC */ DEFINE_OBJECT(object_gi_shield_2, OBJECT_GI_SHIELD_2)
|
||||
/* 0x00DD */ DEFINE_OBJECT(object_gi_hookshot, OBJECT_GI_HOOKSHOT)
|
||||
/* 0x00DE */ DEFINE_OBJECT(object_gi_ocarina, OBJECT_GI_OCARINA)
|
||||
/* 0x00DF */ DEFINE_OBJECT(object_gi_milk, OBJECT_GI_MILK)
|
||||
/* 0x00E0 */ DEFINE_OBJECT(object_ma1, OBJECT_MA1)
|
||||
/* 0x00E1 */ DEFINE_OBJECT(object_ganon, OBJECT_GANON)
|
||||
/* 0x00E2 */ DEFINE_OBJECT(object_sst, OBJECT_SST)
|
||||
/* 0x00E3 */ DEFINE_OBJECT_NULL(object_ny, OBJECT_NY_UNUSED) // unused duplicate with size 0
|
||||
/* 0x00E4 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_E4)
|
||||
/* 0x00E5 */ DEFINE_OBJECT(object_ny, OBJECT_NY)
|
||||
/* 0x00E6 */ DEFINE_OBJECT(object_fr, OBJECT_FR)
|
||||
/* 0x00E7 */ DEFINE_OBJECT(object_gi_pachinko, OBJECT_GI_PACHINKO)
|
||||
/* 0x00E8 */ DEFINE_OBJECT(object_gi_boomerang, OBJECT_GI_BOOMERANG)
|
||||
/* 0x00E9 */ DEFINE_OBJECT(object_gi_bow, OBJECT_GI_BOW)
|
||||
/* 0x00EA */ DEFINE_OBJECT(object_gi_glasses, OBJECT_GI_GLASSES)
|
||||
/* 0x00EB */ DEFINE_OBJECT(object_gi_liquid, OBJECT_GI_LIQUID)
|
||||
/* 0x00EC */ DEFINE_OBJECT(object_ani, OBJECT_ANI)
|
||||
/* 0x00ED */ DEFINE_OBJECT(object_demo_6k, OBJECT_DEMO_6K)
|
||||
/* 0x00EE */ DEFINE_OBJECT(object_gi_shield_3, OBJECT_GI_SHIELD_3)
|
||||
/* 0x00EF */ DEFINE_OBJECT(object_gi_letter, OBJECT_GI_LETTER)
|
||||
/* 0x00F0 */ DEFINE_OBJECT(object_spot15_obj, OBJECT_SPOT15_OBJ)
|
||||
/* 0x00F1 */ DEFINE_OBJECT(object_jya_obj, OBJECT_JYA_OBJ)
|
||||
/* 0x00F2 */ DEFINE_OBJECT(object_gi_clothes, OBJECT_GI_CLOTHES)
|
||||
/* 0x00F3 */ DEFINE_OBJECT(object_gi_bean, OBJECT_GI_BEAN)
|
||||
/* 0x00F4 */ DEFINE_OBJECT(object_gi_fish, OBJECT_GI_FISH)
|
||||
/* 0x00F5 */ DEFINE_OBJECT(object_gi_saw, OBJECT_GI_SAW)
|
||||
/* 0x00F6 */ DEFINE_OBJECT(object_gi_hammer, OBJECT_GI_HAMMER)
|
||||
/* 0x00F7 */ DEFINE_OBJECT(object_gi_grass, OBJECT_GI_GRASS)
|
||||
/* 0x00F8 */ DEFINE_OBJECT(object_gi_longsword, OBJECT_GI_LONGSWORD)
|
||||
/* 0x00F9 */ DEFINE_OBJECT(object_spot01_objects, OBJECT_SPOT01_OBJECTS)
|
||||
/* 0x00FA */ DEFINE_OBJECT_NULL(object_md, OBJECT_MD_UNUSED) // unused duplicate with size 0
|
||||
/* 0x00FB */ DEFINE_OBJECT(object_md, OBJECT_MD)
|
||||
/* 0x00FC */ DEFINE_OBJECT(object_km1, OBJECT_KM1)
|
||||
/* 0x00FD */ DEFINE_OBJECT(object_kw1, OBJECT_KW1)
|
||||
/* 0x00FE */ DEFINE_OBJECT(object_zo, OBJECT_ZO)
|
||||
/* 0x00FF */ DEFINE_OBJECT(object_kz, OBJECT_KZ)
|
||||
/* 0x0100 */ DEFINE_OBJECT(object_umajump, OBJECT_UMAJUMP)
|
||||
/* 0x0101 */ DEFINE_OBJECT(object_masterkokiri, OBJECT_MASTERKOKIRI)
|
||||
/* 0x0102 */ DEFINE_OBJECT(object_masterkokirihead, OBJECT_MASTERKOKIRIHEAD)
|
||||
/* 0x0103 */ DEFINE_OBJECT(object_mastergolon, OBJECT_MASTERGOLON)
|
||||
/* 0x0104 */ DEFINE_OBJECT(object_masterzoora, OBJECT_MASTERZOORA)
|
||||
/* 0x0105 */ DEFINE_OBJECT(object_aob, OBJECT_AOB)
|
||||
/* 0x0106 */ DEFINE_OBJECT(object_ik, OBJECT_IK)
|
||||
/* 0x0107 */ DEFINE_OBJECT(object_ahg, OBJECT_AHG)
|
||||
/* 0x0108 */ DEFINE_OBJECT(object_cne, OBJECT_CNE)
|
||||
/* 0x0109 */ DEFINE_OBJECT(object_gi_niwatori, OBJECT_GI_NIWATORI)
|
||||
/* 0x010A */ DEFINE_OBJECT(object_skj, OBJECT_SKJ)
|
||||
/* 0x010B */ DEFINE_OBJECT(object_gi_bottle_letter, OBJECT_GI_BOTTLE_LETTER)
|
||||
/* 0x010C */ DEFINE_OBJECT(object_bji, OBJECT_BJI)
|
||||
/* 0x010D */ DEFINE_OBJECT(object_bba, OBJECT_BBA)
|
||||
/* 0x010E */ DEFINE_OBJECT(object_gi_ocarina_0, OBJECT_GI_OCARINA_0)
|
||||
/* 0x010F */ DEFINE_OBJECT(object_ds, OBJECT_DS)
|
||||
/* 0x0110 */ DEFINE_OBJECT(object_ane, OBJECT_ANE)
|
||||
/* 0x0111 */ DEFINE_OBJECT(object_boj, OBJECT_BOJ)
|
||||
/* 0x0112 */ DEFINE_OBJECT(object_spot03_object, OBJECT_SPOT03_OBJECT)
|
||||
/* 0x0113 */ DEFINE_OBJECT(object_spot07_object, OBJECT_SPOT07_OBJECT)
|
||||
/* 0x0114 */ DEFINE_OBJECT(object_fz, OBJECT_FZ)
|
||||
/* 0x0115 */ DEFINE_OBJECT(object_bob, OBJECT_BOB)
|
||||
/* 0x0116 */ DEFINE_OBJECT(object_ge1, OBJECT_GE1)
|
||||
/* 0x0117 */ DEFINE_OBJECT(object_yabusame_point, OBJECT_YABUSAME_POINT)
|
||||
/* 0x0118 */ DEFINE_OBJECT(object_gi_boots_2, OBJECT_GI_BOOTS_2)
|
||||
/* 0x0119 */ DEFINE_OBJECT(object_gi_seed, OBJECT_GI_SEED)
|
||||
/* 0x011A */ DEFINE_OBJECT(object_gnd_magic, OBJECT_GND_MAGIC)
|
||||
/* 0x011B */ DEFINE_OBJECT(object_d_elevator, OBJECT_D_ELEVATOR)
|
||||
/* 0x011C */ DEFINE_OBJECT(object_d_hsblock, OBJECT_D_HSBLOCK)
|
||||
/* 0x011D */ DEFINE_OBJECT(object_d_lift, OBJECT_D_LIFT)
|
||||
/* 0x011E */ DEFINE_OBJECT(object_mamenoki, OBJECT_MAMENOKI)
|
||||
/* 0x011F */ DEFINE_OBJECT(object_goroiwa, OBJECT_GOROIWA)
|
||||
/* 0x0120 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_120)
|
||||
/* 0x0121 */ DEFINE_OBJECT(object_toryo, OBJECT_TORYO)
|
||||
/* 0x0122 */ DEFINE_OBJECT(object_daiku, OBJECT_DAIKU)
|
||||
/* 0x0123 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_123)
|
||||
/* 0x0124 */ DEFINE_OBJECT(object_nwc, OBJECT_NWC)
|
||||
/* 0x0125 */ DEFINE_OBJECT(object_blkobj, OBJECT_BLKOBJ)
|
||||
/* 0x0126 */ DEFINE_OBJECT(object_gm, OBJECT_GM)
|
||||
/* 0x0127 */ DEFINE_OBJECT(object_ms, OBJECT_MS)
|
||||
/* 0x0128 */ DEFINE_OBJECT(object_hs, OBJECT_HS)
|
||||
/* 0x0129 */ DEFINE_OBJECT(object_ingate, OBJECT_INGATE)
|
||||
/* 0x012A */ DEFINE_OBJECT(object_lightswitch, OBJECT_LIGHTSWITCH)
|
||||
/* 0x012B */ DEFINE_OBJECT(object_kusa, OBJECT_KUSA)
|
||||
/* 0x012C */ DEFINE_OBJECT(object_tsubo, OBJECT_TSUBO)
|
||||
/* 0x012D */ DEFINE_OBJECT(object_gi_gloves, OBJECT_GI_GLOVES)
|
||||
/* 0x012E */ DEFINE_OBJECT(object_gi_coin, OBJECT_GI_COIN)
|
||||
/* 0x012F */ DEFINE_OBJECT(object_kanban, OBJECT_KANBAN)
|
||||
/* 0x0130 */ DEFINE_OBJECT(object_gjyo_objects, OBJECT_GJYO_OBJECTS)
|
||||
/* 0x0131 */ DEFINE_OBJECT(object_owl, OBJECT_OWL)
|
||||
/* 0x0132 */ DEFINE_OBJECT(object_mk, OBJECT_MK)
|
||||
/* 0x0133 */ DEFINE_OBJECT(object_fu, OBJECT_FU)
|
||||
/* 0x0134 */ DEFINE_OBJECT(object_gi_ki_tan_mask, OBJECT_GI_KI_TAN_MASK)
|
||||
/* 0x0135 */ DEFINE_OBJECT(object_gi_redead_mask, OBJECT_GI_REDEAD_MASK)
|
||||
/* 0x0136 */ DEFINE_OBJECT(object_gi_skj_mask, OBJECT_GI_SKJ_MASK)
|
||||
/* 0x0137 */ DEFINE_OBJECT(object_gi_rabit_mask, OBJECT_GI_RABIT_MASK)
|
||||
/* 0x0138 */ DEFINE_OBJECT(object_gi_truth_mask, OBJECT_GI_TRUTH_MASK)
|
||||
/* 0x0139 */ DEFINE_OBJECT(object_ganon_objects, OBJECT_GANON_OBJECTS)
|
||||
/* 0x013A */ DEFINE_OBJECT(object_siofuki, OBJECT_SIOFUKI)
|
||||
/* 0x013B */ DEFINE_OBJECT(object_stream, OBJECT_STREAM)
|
||||
/* 0x013C */ DEFINE_OBJECT(object_mm, OBJECT_MM)
|
||||
/* 0x013D */ DEFINE_OBJECT(object_fa, OBJECT_FA)
|
||||
/* 0x013E */ DEFINE_OBJECT(object_os, OBJECT_OS)
|
||||
/* 0x013F */ DEFINE_OBJECT(object_gi_eye_lotion, OBJECT_GI_EYE_LOTION)
|
||||
/* 0x0140 */ DEFINE_OBJECT(object_gi_powder, OBJECT_GI_POWDER)
|
||||
/* 0x0141 */ DEFINE_OBJECT(object_gi_mushroom, OBJECT_GI_MUSHROOM)
|
||||
/* 0x0142 */ DEFINE_OBJECT(object_gi_ticketstone, OBJECT_GI_TICKETSTONE)
|
||||
/* 0x0143 */ DEFINE_OBJECT(object_gi_brokensword, OBJECT_GI_BROKENSWORD)
|
||||
/* 0x0144 */ DEFINE_OBJECT(object_js, OBJECT_JS)
|
||||
/* 0x0145 */ DEFINE_OBJECT(object_cs, OBJECT_CS)
|
||||
/* 0x0146 */ DEFINE_OBJECT(object_gi_prescription, OBJECT_GI_PRESCRIPTION)
|
||||
/* 0x0147 */ DEFINE_OBJECT(object_gi_bracelet, OBJECT_GI_BRACELET)
|
||||
/* 0x0148 */ DEFINE_OBJECT(object_gi_soldout, OBJECT_GI_SOLDOUT)
|
||||
/* 0x0149 */ DEFINE_OBJECT(object_gi_frog, OBJECT_GI_FROG)
|
||||
/* 0x014A */ DEFINE_OBJECT(object_mag, OBJECT_MAG)
|
||||
/* 0x014B */ DEFINE_OBJECT(object_door_gerudo, OBJECT_DOOR_GERUDO)
|
||||
/* 0x014C */ DEFINE_OBJECT(object_gt, OBJECT_GT)
|
||||
/* 0x014D */ DEFINE_OBJECT(object_efc_erupc, OBJECT_EFC_ERUPC)
|
||||
/* 0x014E */ DEFINE_OBJECT(object_zl2_anime1, OBJECT_ZL2_ANIME1)
|
||||
/* 0x014F */ DEFINE_OBJECT(object_zl2_anime2, OBJECT_ZL2_ANIME2)
|
||||
/* 0x0150 */ DEFINE_OBJECT(object_gi_golonmask, OBJECT_GI_GOLONMASK)
|
||||
/* 0x0151 */ DEFINE_OBJECT(object_gi_zoramask, OBJECT_GI_ZORAMASK)
|
||||
/* 0x0152 */ DEFINE_OBJECT(object_gi_gerudomask, OBJECT_GI_GERUDOMASK)
|
||||
/* 0x0153 */ DEFINE_OBJECT(object_ganon2, OBJECT_GANON2)
|
||||
/* 0x0154 */ DEFINE_OBJECT(object_ka, OBJECT_KA)
|
||||
/* 0x0155 */ DEFINE_OBJECT(object_ts, OBJECT_TS)
|
||||
/* 0x0156 */ DEFINE_OBJECT(object_zg, OBJECT_ZG)
|
||||
/* 0x0157 */ DEFINE_OBJECT(object_gi_hoverboots, OBJECT_GI_HOVERBOOTS)
|
||||
/* 0x0158 */ DEFINE_OBJECT(object_gi_m_arrow, OBJECT_GI_M_ARROW)
|
||||
/* 0x0159 */ DEFINE_OBJECT(object_ds2, OBJECT_DS2)
|
||||
/* 0x015A */ DEFINE_OBJECT(object_ec, OBJECT_EC)
|
||||
/* 0x015B */ DEFINE_OBJECT(object_fish, OBJECT_FISH)
|
||||
/* 0x015C */ DEFINE_OBJECT(object_gi_sutaru, OBJECT_GI_SUTARU)
|
||||
/* 0x015D */ DEFINE_OBJECT(object_gi_goddess, OBJECT_GI_GODDESS)
|
||||
/* 0x015E */ DEFINE_OBJECT(object_ssh, OBJECT_SSH)
|
||||
/* 0x015F */ DEFINE_OBJECT(object_bigokuta, OBJECT_BIGOKUTA)
|
||||
/* 0x0160 */ DEFINE_OBJECT(object_bg, OBJECT_BG)
|
||||
/* 0x0161 */ DEFINE_OBJECT(object_spot05_objects, OBJECT_SPOT05_OBJECTS)
|
||||
/* 0x0162 */ DEFINE_OBJECT(object_spot12_obj, OBJECT_SPOT12_OBJ)
|
||||
/* 0x0163 */ DEFINE_OBJECT(object_bombiwa, OBJECT_BOMBIWA)
|
||||
/* 0x0164 */ DEFINE_OBJECT(object_hintnuts, OBJECT_HINTNUTS)
|
||||
/* 0x0165 */ DEFINE_OBJECT(object_rs, OBJECT_RS)
|
||||
/* 0x0166 */ DEFINE_OBJECT(object_spot00_break, OBJECT_SPOT00_BREAK)
|
||||
/* 0x0167 */ DEFINE_OBJECT(object_gla, OBJECT_GLA)
|
||||
/* 0x0168 */ DEFINE_OBJECT(object_shopnuts, OBJECT_SHOPNUTS)
|
||||
/* 0x0169 */ DEFINE_OBJECT(object_geldb, OBJECT_GELDB)
|
||||
/* 0x016A */ DEFINE_OBJECT(object_gr, OBJECT_GR)
|
||||
/* 0x016B */ DEFINE_OBJECT(object_dog, OBJECT_DOG)
|
||||
/* 0x016C */ DEFINE_OBJECT(object_jya_iron, OBJECT_JYA_IRON)
|
||||
/* 0x016D */ DEFINE_OBJECT(object_jya_door, OBJECT_JYA_DOOR)
|
||||
/* 0x016E */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_16E)
|
||||
/* 0x016F */ DEFINE_OBJECT(object_spot11_obj, OBJECT_SPOT11_OBJ)
|
||||
/* 0x0170 */ DEFINE_OBJECT(object_kibako2, OBJECT_KIBAKO2)
|
||||
/* 0x0171 */ DEFINE_OBJECT(object_dns, OBJECT_DNS)
|
||||
/* 0x0172 */ DEFINE_OBJECT(object_dnk, OBJECT_DNK)
|
||||
/* 0x0173 */ DEFINE_OBJECT(object_gi_fire, OBJECT_GI_FIRE)
|
||||
/* 0x0174 */ DEFINE_OBJECT(object_gi_insect, OBJECT_GI_INSECT)
|
||||
/* 0x0175 */ DEFINE_OBJECT(object_gi_butterfly, OBJECT_GI_BUTTERFLY)
|
||||
/* 0x0176 */ DEFINE_OBJECT(object_gi_ghost, OBJECT_GI_GHOST)
|
||||
/* 0x0177 */ DEFINE_OBJECT(object_gi_soul, OBJECT_GI_SOUL)
|
||||
/* 0x0178 */ DEFINE_OBJECT(object_bowl, OBJECT_BOWL)
|
||||
/* 0x0179 */ DEFINE_OBJECT(object_demo_kekkai, OBJECT_DEMO_KEKKAI)
|
||||
/* 0x017A */ DEFINE_OBJECT(object_efc_doughnut, OBJECT_EFC_DOUGHNUT)
|
||||
/* 0x017B */ DEFINE_OBJECT(object_gi_dekupouch, OBJECT_GI_DEKUPOUCH)
|
||||
/* 0x017C */ DEFINE_OBJECT(object_ganon_anime1, OBJECT_GANON_ANIME1)
|
||||
/* 0x017D */ DEFINE_OBJECT(object_ganon_anime2, OBJECT_GANON_ANIME2)
|
||||
/* 0x017E */ DEFINE_OBJECT(object_ganon_anime3, OBJECT_GANON_ANIME3)
|
||||
/* 0x017F */ DEFINE_OBJECT(object_gi_rupy, OBJECT_GI_RUPY)
|
||||
/* 0x0180 */ DEFINE_OBJECT(object_spot01_matoya, OBJECT_SPOT01_MATOYA)
|
||||
/* 0x0181 */ DEFINE_OBJECT(object_spot01_matoyab, OBJECT_SPOT01_MATOYAB)
|
||||
/* 0x0182 */ DEFINE_OBJECT(object_mu, OBJECT_MU)
|
||||
/* 0x0183 */ DEFINE_OBJECT(object_wf, OBJECT_WF)
|
||||
/* 0x0184 */ DEFINE_OBJECT(object_skb, OBJECT_SKB)
|
||||
/* 0x0185 */ DEFINE_OBJECT(object_gj, OBJECT_GJ)
|
||||
/* 0x0186 */ DEFINE_OBJECT(object_geff, OBJECT_GEFF)
|
||||
/* 0x0187 */ DEFINE_OBJECT(object_haka_door, OBJECT_HAKA_DOOR)
|
||||
/* 0x0188 */ DEFINE_OBJECT(object_gs, OBJECT_GS)
|
||||
/* 0x0189 */ DEFINE_OBJECT(object_ps, OBJECT_PS)
|
||||
/* 0x018A */ DEFINE_OBJECT(object_bwall, OBJECT_BWALL)
|
||||
/* 0x018B */ DEFINE_OBJECT(object_cow, OBJECT_COW)
|
||||
/* 0x018C */ DEFINE_OBJECT(object_cob, OBJECT_COB)
|
||||
/* 0x018D */ DEFINE_OBJECT(object_gi_sword_1, OBJECT_GI_SWORD_1)
|
||||
/* 0x018E */ DEFINE_OBJECT(object_door_killer, OBJECT_DOOR_KILLER)
|
||||
/* 0x018F */ DEFINE_OBJECT(object_ouke_haka, OBJECT_OUKE_HAKA)
|
||||
/* 0x0190 */ DEFINE_OBJECT(object_timeblock, OBJECT_TIMEBLOCK)
|
||||
/* 0x0191 */ DEFINE_OBJECT(object_zl4, OBJECT_ZL4)
|
32
soh/include/ultra64.h
Normal file
32
soh/include/ultra64.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
#ifndef ULTRA64_H
|
||||
#define ULTRA64_H
|
||||
|
||||
#include "ultra64/types.h"
|
||||
#include "unk.h"
|
||||
|
||||
#include "libc/stdarg.h"
|
||||
#include "libc/stdbool.h"
|
||||
#include "libc/stddef.h"
|
||||
#include "libc/stdlib.h"
|
||||
#include "libc/math.h"
|
||||
|
||||
#include "ultra64/exception.h"
|
||||
#include "ultra64/rcp.h"
|
||||
#include "ultra64/rdp.h"
|
||||
#include "ultra64/rsp.h"
|
||||
#include "ultra64/thread.h"
|
||||
#include "ultra64/convert.h"
|
||||
#include "ultra64/time.h"
|
||||
#include "ultra64/message.h"
|
||||
#include "ultra64/sptask.h"
|
||||
#include "ultra64/gu.h"
|
||||
#include "ultra64/vi.h"
|
||||
#include "ultra64/pi.h"
|
||||
#include "ultra64/controller.h"
|
||||
#include "ultra64/printf.h"
|
||||
#include "ultra64/mbi.h"
|
||||
#include "ultra64/pfs.h"
|
||||
#include "ultra64/motor.h"
|
||||
#include "ultra64/r4300.h"
|
||||
|
||||
#endif
|
16
soh/include/unk.h
Normal file
16
soh/include/unk.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef UNK_H
|
||||
#define UNK_H
|
||||
|
||||
#define UNK_TYPE s32
|
||||
#define UNK_TYPE1 s8
|
||||
#define UNK_TYPE2 s16
|
||||
#define UNK_TYPE4 s32
|
||||
#define UNK_PTR void*
|
||||
#define UNK_RET void
|
||||
#define UNK_FUN_ARG void(*)(void)
|
||||
#define UNK_FUN_PTR(name) void(*name)(void)
|
||||
#define UNK_ARGS
|
||||
#define UNK_SIZE 1
|
||||
#define UNK_LINE 1
|
||||
|
||||
#endif
|
247
soh/include/variables.h
Normal file
247
soh/include/variables.h
Normal file
|
@ -0,0 +1,247 @@
|
|||
#ifndef VARIABLES_H
|
||||
#define VARIABLES_H
|
||||
|
||||
#include "z64.h"
|
||||
#include "segment_symbols.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
extern u32 osTvType;
|
||||
extern u32 osRomBase;
|
||||
extern u32 osResetType;
|
||||
extern u32 osMemSize;
|
||||
extern u8 osAppNmiBuffer[0x40];
|
||||
|
||||
extern u8 D_80009320[];
|
||||
extern u8 D_800093F0[];
|
||||
extern s8 D_80009430;
|
||||
extern u32 D_80009460;
|
||||
extern u32 gDmaMgrDmaBuffSize;
|
||||
extern vu8 gViConfigUseDefault;
|
||||
extern u8 gViConfigAdditionalScanLines;
|
||||
extern u32 gViConfigFeatures;
|
||||
extern f32 gViConfigXScale;
|
||||
extern f32 gViConfigYScale;
|
||||
extern OSPiHandle* gCartHandle;
|
||||
extern u32 __osPiAccessQueueEnabled;
|
||||
extern OSViMode osViModePalLan1;
|
||||
extern s32 osViClock;
|
||||
extern u32 __osShutdown;
|
||||
extern OSHWIntr __OSGlobalIntMask;
|
||||
extern OSThread* __osThreadTail[];
|
||||
extern OSThread* __osRunQueue;
|
||||
extern OSThread* __osActiveQueue;
|
||||
extern OSThread* __osRunningThread;
|
||||
extern OSThread* __osFaultedThread;
|
||||
extern OSPiHandle* __osPiTable;
|
||||
extern OSPiHandle* __osCurrentHandle[];
|
||||
extern OSTimer* __osTimerList;
|
||||
extern OSViMode osViModeNtscLan1;
|
||||
extern OSViMode osViModeMpalLan1;
|
||||
extern OSViContext* __osViCurr;
|
||||
extern OSViContext* __osViNext;
|
||||
extern OSViMode osViModeFpalLan1;
|
||||
extern u32 __additional_scanline;
|
||||
extern u8 gBuildVersion[];
|
||||
extern u8 gBuildTeam[];
|
||||
extern u8 gBuildDate[];
|
||||
extern u8 gBuildMakeOption[];
|
||||
extern OSMesgQueue gPiMgrCmdQ;
|
||||
extern OSViMode gViConfigMode;
|
||||
extern u8 D_80013960;
|
||||
extern OSMesgQueue __osPiAccessQueue;
|
||||
extern OSPiHandle __Dom1SpeedParam;
|
||||
extern OSPiHandle __Dom2SpeedParam;
|
||||
extern OSTime __osCurrentTime;
|
||||
extern u32 __osBaseCounter;
|
||||
extern u32 __osViIntrCount;
|
||||
extern u32 __osTimerCounter;
|
||||
extern DmaEntry gDmaDataTable[0x60C];
|
||||
extern u64 D_801120C0[];
|
||||
extern u8 D_80113070[];
|
||||
extern u64 gJpegUCode[];
|
||||
extern EffectSsOverlay gEffectSsOverlayTable[EFFECT_SS_TYPE_MAX];
|
||||
extern Gfx D_80116280[];
|
||||
extern ActorOverlay gActorOverlayTable[ACTOR_ID_MAX]; // original name: "actor_dlftbls" 801162A0
|
||||
extern s32 gMaxActorId; // original name: "MaxProfile"
|
||||
extern s32 gDbgCamEnabled;
|
||||
extern GameStateOverlay gGameStateOverlayTable[6];
|
||||
extern u8 gWeatherMode;
|
||||
extern u8 D_8011FB34;
|
||||
extern u8 D_8011FB38;
|
||||
extern u8 gSkyboxBlendingEnabled;
|
||||
extern u16 gTimeIncrement;
|
||||
extern struct_8011FC1C D_8011FC1C[][9];
|
||||
extern SkyboxFile gSkyboxFiles[];
|
||||
extern s32 gZeldaArenaLogSeverity;
|
||||
extern MapData gMapDataTable;
|
||||
extern s16 gSpoilingItems[3];
|
||||
extern s16 gSpoilingItemReverts[3];
|
||||
extern FlexSkeletonHeader* gPlayerSkelHeaders[2];
|
||||
extern u8 gPlayerModelTypes[][5];
|
||||
extern Gfx* D_80125DE8[];
|
||||
extern Gfx* D_80125E08[];
|
||||
extern Gfx* D_80125E18[];
|
||||
extern Gfx* D_80125EF8[];
|
||||
extern Gfx gCullBackDList[];
|
||||
extern Gfx gCullFrontDList[];
|
||||
extern Gfx gEmptyDL[];
|
||||
extern u32 gBitFlags[32];
|
||||
extern u16 gEquipMasks[4];
|
||||
extern u16 gEquipNegMasks[4];
|
||||
extern u32 gUpgradeMasks[8];
|
||||
extern u8 gEquipShifts[4];
|
||||
extern u8 gUpgradeShifts[8];
|
||||
extern u16 gUpgradeCapacities[8][4];
|
||||
extern u32 gGsFlagsMasks[4];
|
||||
extern u32 gGsFlagsShifts[4];
|
||||
extern void* gItemIcons[0x82];
|
||||
extern u8 gItemSlots[56];
|
||||
extern void (*gSceneCmdHandlers[26])(GlobalContext*, SceneCmd*);
|
||||
extern s16 gLinkObjectIds[2];
|
||||
extern u32 gObjectTableSize;
|
||||
extern RomFile gObjectTable[OBJECT_ID_MAX];
|
||||
extern EntranceInfo gEntranceTable[1556];
|
||||
extern SceneTableEntry gSceneTable[SCENE_ID_MAX];
|
||||
extern u16 gSramSlotOffsets[];
|
||||
// 4 16-colors palettes
|
||||
extern u64 gMojiFontTLUTs[4][4]; // original name: "moji_tlut"
|
||||
extern u64 gMojiFontTex[]; // original name: "font_ff"
|
||||
extern KaleidoMgrOverlay gKaleidoMgrOverlayTable[KALEIDO_OVL_MAX];
|
||||
extern KaleidoMgrOverlay* gKaleidoMgrCurOvl;
|
||||
extern u8 gBossMarkState;
|
||||
extern void* D_8012D1F0;
|
||||
extern s32 gScreenWidth;
|
||||
extern s32 gScreenHeight;
|
||||
extern Mtx gMtxClear;
|
||||
extern MtxF gMtxFClear;
|
||||
extern u32 gIsCtrlr2Valid;
|
||||
extern vu32 gIrqMgrResetStatus;
|
||||
extern volatile OSTime gIrqMgrRetraceTime;
|
||||
extern s16* gWaveSamples[9];
|
||||
extern f32 gBendPitchOneOctaveFrequencies[256];
|
||||
extern f32 gBendPitchTwoSemitonesFrequencies[256];
|
||||
extern f32 gNoteFrequencies[];
|
||||
extern u8 gDefaultShortNoteVelocityTable[16];
|
||||
extern u8 gDefaultShortNoteGateTimeTable[16];
|
||||
extern AdsrEnvelope gDefaultEnvelope[4];
|
||||
extern NoteSubEu gZeroNoteSub;
|
||||
extern NoteSubEu gDefaultNoteSub;
|
||||
extern u16 gHeadsetPanQuantization[64];
|
||||
extern s16 D_8012FBA8[];
|
||||
extern f32 gHeadsetPanVolume[128];
|
||||
extern f32 gStereoPanVolume[128];
|
||||
extern f32 gDefaultPanVolume[128];
|
||||
extern s16 sLowPassFilterData[16 * 8];
|
||||
extern s16 sHighPassFilterData[15 * 8];
|
||||
extern s32 gAudioContextInitalized;
|
||||
extern u8 gIsLargeSoundBank[7];
|
||||
extern u8 gChannelsPerBank[4][7];
|
||||
extern u8 gUsedChannelsPerBank[4][7];
|
||||
extern u8 gMorphaTransposeTable[16];
|
||||
extern u8* gFrogsSongPtr;
|
||||
extern OcarinaNote* gScarecrowCustomSongPtr;
|
||||
extern u8* gScarecrowSpawnSongPtr;
|
||||
extern OcarinaSongInfo gOcarinaSongNotes[];
|
||||
extern SoundParams* gSoundParams[7];
|
||||
extern char D_80133390[];
|
||||
extern char D_80133398[];
|
||||
extern SoundBankEntry* gSoundBanks[7];
|
||||
extern u8 gSfxChannelLayout;
|
||||
extern Vec3f D_801333D4;
|
||||
extern f32 D_801333E0;
|
||||
extern s8 D_801333E8;
|
||||
extern u8 D_801333F0;
|
||||
extern u8 gAudioSfxSwapOff;
|
||||
extern u8 D_80133408;
|
||||
extern u8 D_8013340C;
|
||||
extern u8 gAudioSpecId;
|
||||
extern u8 D_80133418;
|
||||
extern AudioSpec gAudioSpecs[18];
|
||||
extern s32 gOverlayLogSeverity;
|
||||
extern s32 gSystemArenaLogSeverity;
|
||||
extern u8 __osPfsInodeCacheBank;
|
||||
extern s32 __osPfsLastChannel;
|
||||
|
||||
extern const s16 D_8014A6C0[];
|
||||
#define gTatumsPerBeat (D_8014A6C0[1])
|
||||
extern const AudioContextInitSizes D_8014A6C4;
|
||||
extern s16 gOcarinaSongItemMap[];
|
||||
extern u8 gSoundFontTable[];
|
||||
extern u8 gSequenceFontTable[];
|
||||
extern u8 gSequenceTable[];
|
||||
extern u8 gSampleBankTable[];
|
||||
extern u8 D_80155F50[];
|
||||
extern u8 D_80157580[];
|
||||
extern u8 D_801579A0[];
|
||||
extern u64 gJpegUCodeData[];
|
||||
|
||||
extern SaveContext gSaveContext;
|
||||
extern GameInfo* gGameInfo;
|
||||
extern u16 D_8015FCC0;
|
||||
extern u16 D_8015FCC2;
|
||||
extern u16 D_8015FCC4;
|
||||
extern u8 D_8015FCC8;
|
||||
extern u8 gCustomLensFlareOn;
|
||||
extern Vec3f gCustomLensFlarePos;
|
||||
extern s16 gLensFlareScale;
|
||||
extern f32 gLensFlareColorIntensity;
|
||||
extern s16 gLensFlareScreenFillAlpha;
|
||||
extern LightningStrike gLightningStrike;
|
||||
extern MapData* gMapData;
|
||||
extern f32 gBossMarkScale;
|
||||
extern PauseMapMarksData* gLoadedPauseMarkDataTable;
|
||||
extern s32 gTrnsnUnkState;
|
||||
extern Color_RGBA8_u32 D_801614B0;
|
||||
extern PreNmiBuff* gAppNmiBufferPtr;
|
||||
extern SchedContext gSchedContext;
|
||||
extern PadMgr gPadMgr;
|
||||
extern uintptr_t gSegments[NUM_SEGMENTS];
|
||||
extern volatile OSTime D_8016A520;
|
||||
extern volatile OSTime D_8016A528;
|
||||
extern volatile OSTime D_8016A530;
|
||||
extern volatile OSTime D_8016A538;
|
||||
extern volatile OSTime D_8016A540;
|
||||
extern volatile OSTime D_8016A548;
|
||||
extern volatile OSTime D_8016A550;
|
||||
extern volatile OSTime D_8016A558;
|
||||
extern volatile OSTime gRSPAudioTotalTime;
|
||||
extern volatile OSTime gRSPGFXTotalTime;
|
||||
extern volatile OSTime gRSPOtherTotalTime;
|
||||
extern volatile OSTime gRDPTotalTime;
|
||||
extern FaultThreadStruct gFaultStruct;
|
||||
|
||||
extern ActiveSound gActiveSounds[7][MAX_CHANNELS_PER_BANK]; // total size = 0xA8
|
||||
extern u8 gSoundBankMuted[];
|
||||
extern u8 D_801333F0;
|
||||
extern u8 gAudioSfxSwapOff;
|
||||
extern u16 gAudioSfxSwapSource[10];
|
||||
extern u16 gAudioSfxSwapTarget[10];
|
||||
extern u8 gAudioSfxSwapMode[10];
|
||||
extern unk_D_8016E750 D_8016E750[4];
|
||||
extern AudioContext gAudioContext;
|
||||
extern void(*D_801755D0)(void);
|
||||
|
||||
extern u32 __osMalloc_FreeBlockTest_Enable;
|
||||
extern Arena gSystemArena;
|
||||
extern OSPifRam __osPifInternalBuff;
|
||||
extern u8 __osContLastPoll;
|
||||
extern u8 __osMaxControllers;
|
||||
extern __OSInode __osPfsInodeCache;
|
||||
extern OSPifRam gPifMempakBuf;
|
||||
extern u16 gZBuffer[SCREEN_HEIGHT][SCREEN_WIDTH]; // 0x25800 bytes
|
||||
extern u64 gGfxSPTaskOutputBuffer[0x3000]; // 0x18000 bytes
|
||||
extern u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE]; // 0xC00 bytes
|
||||
extern u8 gGfxSPTaskStack[0x400]; // 0x400 bytes
|
||||
extern GfxPool gGfxPools[2]; // 0x24820 bytes
|
||||
extern u8 gAudioHeap[0x38000]; // 0x38000 bytes
|
||||
extern u8 gSystemHeap[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
35
soh/include/vt.h
Normal file
35
soh/include/vt.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
#ifndef VT_H
|
||||
#define VT_H
|
||||
|
||||
#define VT_COLOR_BLACK 0
|
||||
#define VT_COLOR_RED 1
|
||||
#define VT_COLOR_GREEN 2
|
||||
#define VT_COLOR_YELLOW 3
|
||||
#define VT_COLOR_BLUE 4
|
||||
#define VT_COLOR_PURPLE 5
|
||||
#define VT_COLOR_CYAN 6
|
||||
#define VT_COLOR_WHITE 7
|
||||
#define VT_COLOR_LIGHTGRAY 8
|
||||
#define VT_COLOR_DARKGRAY 9
|
||||
|
||||
#define VT_COLOR_FOREGROUND 3
|
||||
#define VT_COLOR_BACKGROUND 4
|
||||
|
||||
#define VT_COLOR_EXPAND0(type, color) #type #color
|
||||
#define VT_COLOR_EXPAND1(type, color) VT_COLOR_EXPAND0(type, color)
|
||||
#define VT_COLOR(type, color) VT_COLOR_EXPAND1(VT_COLOR_##type, VT_COLOR_##color)
|
||||
|
||||
#define VT_ESC "\x1b"
|
||||
#define VT_CSI "["
|
||||
#define VT_CUP(x, y) VT_ESC VT_CSI y ";" x "H"
|
||||
#define VT_ED(n) VT_ESC VT_CSI #n "J"
|
||||
#define VT_SGR(n) VT_ESC VT_CSI n "m"
|
||||
|
||||
// Add more macros if necessary
|
||||
#define VT_COL(back, fore) VT_SGR(VT_COLOR(BACKGROUND, back) ";" VT_COLOR(FOREGROUND, fore))
|
||||
#define VT_FGCOL(color) VT_SGR(VT_COLOR(FOREGROUND, color))
|
||||
#define VT_BGCOL(color) VT_SGR(VT_COLOR(BACKGROUND, color))
|
||||
#define VT_RST VT_SGR("")
|
||||
#define VT_CLS VT_ED(2)
|
||||
|
||||
#endif
|
2096
soh/include/z64.h
Normal file
2096
soh/include/z64.h
Normal file
File diff suppressed because it is too large
Load diff
363
soh/include/z64actor.h
Normal file
363
soh/include/z64actor.h
Normal file
|
@ -0,0 +1,363 @@
|
|||
#ifndef Z64ACTOR_H
|
||||
#define Z64ACTOR_H
|
||||
|
||||
#include "z64dma.h"
|
||||
#include "z64animation.h"
|
||||
#include "z64math.h"
|
||||
#include "z64collision_check.h"
|
||||
|
||||
#define ACTOR_NUMBER_MAX 200
|
||||
#define INVISIBLE_ACTOR_MAX 20
|
||||
#define AM_FIELD_SIZE 0x27A0
|
||||
#define MASS_IMMOVABLE 0xFF // Cannot be pushed by OC collisions
|
||||
#define MASS_HEAVY 0xFE // Can only be pushed by OC collisions with IMMOVABLE and HEAVY objects.
|
||||
|
||||
struct Actor;
|
||||
struct GlobalContext;
|
||||
struct Lights;
|
||||
|
||||
typedef void (*ActorFunc)(struct Actor*, struct GlobalContext*);
|
||||
typedef void (*ActorResetFunc)(void);
|
||||
typedef void (*ActorShadowFunc)(struct Actor*, struct Lights*, struct GlobalContext*);
|
||||
typedef u16 (*callback1_800343CC)(struct GlobalContext*, struct Actor*);
|
||||
typedef s16 (*callback2_800343CC)(struct GlobalContext*, struct Actor*);
|
||||
|
||||
typedef struct {
|
||||
Vec3f pos;
|
||||
Vec3s rot;
|
||||
} PosRot; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 id;
|
||||
/* 0x02 */ u8 category; // Classifies actor and determines when it will update or draw
|
||||
/* 0x04 */ u32 flags;
|
||||
/* 0x08 */ s16 objectId;
|
||||
/* 0x0C */ u32 instanceSize;
|
||||
/* 0x10 */ ActorFunc init; // Constructor
|
||||
/* 0x14 */ ActorFunc destroy; // Destructor
|
||||
/* 0x18 */ ActorFunc update; // Update Function
|
||||
/* 0x1C */ ActorFunc draw; // Draw function
|
||||
/* 0x20 */ ActorResetFunc reset;
|
||||
} ActorInit; // size = 0x20
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ ALLOCTYPE_NORMAL,
|
||||
/* 1 */ ALLOCTYPE_ABSOLUTE,
|
||||
/* 2 */ ALLOCTYPE_PERMANENT
|
||||
} AllocType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uintptr_t vromStart;
|
||||
/* 0x04 */ uintptr_t vromEnd;
|
||||
/* 0x08 */ void* vramStart;
|
||||
/* 0x0C */ void* vramEnd;
|
||||
/* 0x10 */ void* loadedRamAddr; // original name: "allocp"
|
||||
/* 0x14 */ ActorInit* initInfo;
|
||||
/* 0x18 */ char* name;
|
||||
/* 0x1C */ u16 allocType;
|
||||
/* 0x1E */ s8 numLoaded; // original name: "clients"
|
||||
} ActorOverlay; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
u8 table[32];
|
||||
} DamageTable;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 health;
|
||||
/* 0x02 */ s16 cylRadius;
|
||||
/* 0x04 */ s16 cylHeight;
|
||||
/* 0x06 */ u8 mass;
|
||||
} CollisionCheckInfoInit;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 health;
|
||||
/* 0x02 */ s16 cylRadius;
|
||||
/* 0x04 */ s16 cylHeight;
|
||||
/* 0x06 */ s16 cylYShift;
|
||||
/* 0x08 */ u8 mass;
|
||||
} CollisionCheckInfoInit2;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ DamageTable* damageTable;
|
||||
/* 0x04 */ Vec3f displacement; // Amount to correct velocity (0x5C) by when colliding into a body
|
||||
/* 0x10 */ s16 cylRadius; // Used for various purposes
|
||||
/* 0x12 */ s16 cylHeight; // Used for various purposes
|
||||
/* 0x14 */ s16 cylYShift; // Unused. Purpose inferred from Cylinder16 and CollisionCheck_CylSideVsLineSeg
|
||||
/* 0x16 */ u8 mass; // Used to compute displacement for OC collisions
|
||||
/* 0x17 */ u8 health; // Note: some actors may use their own health variable instead of this one
|
||||
/* 0x18 */ u8 damage; // Amount to decrement health by
|
||||
/* 0x19 */ u8 damageEffect; // Stores what effect should occur when hit by a weapon
|
||||
/* 0x1A */ u8 atHitEffect; // Stores what effect should occur when AT connects with an AC
|
||||
/* 0x1B */ u8 acHitEffect; // Stores what effect should occur when AC is touched by an AT
|
||||
} CollisionCheckInfo; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s rot; // Current actor shape rotation
|
||||
/* 0x06 */ s16 face; // Used to index eyebrow/eye/mouth textures. Only used by player
|
||||
/* 0x08 */ f32 yOffset; // Model y axis offset. Represents model space units
|
||||
/* 0x0C */ ActorShadowFunc shadowDraw; // Shadow draw function
|
||||
/* 0x10 */ f32 shadowScale; // Changes the size of the shadow
|
||||
/* 0x14 */ u8 shadowAlpha; // Default is 255
|
||||
/* 0x15 */ u8 feetFloorFlags; // Set if the actor's foot is clipped under the floor. & 1 is right foot, & 2 is left
|
||||
/* 0x18 */ Vec3f feetPos[2]; // Update by using `Actor_SetFeetPos` in PostLimbDraw
|
||||
} ActorShape; // size = 0x30
|
||||
|
||||
#define ACTOR_FLAG_0 (1 << 0)
|
||||
#define ACTOR_FLAG_2 (1 << 2)
|
||||
#define ACTOR_FLAG_3 (1 << 3)
|
||||
#define ACTOR_FLAG_4 (1 << 4)
|
||||
#define ACTOR_FLAG_5 (1 << 5)
|
||||
#define ACTOR_FLAG_6 (1 << 6)
|
||||
#define ACTOR_FLAG_7 (1 << 7)
|
||||
#define ACTOR_FLAG_8 (1 << 8)
|
||||
#define ACTOR_FLAG_9 (1 << 9)
|
||||
#define ACTOR_FLAG_10 (1 << 10)
|
||||
#define ACTOR_FLAG_ENKUSA_CUT (1 << 11)
|
||||
#define ACTOR_FLAG_12 (1 << 12)
|
||||
#define ACTOR_FLAG_13 (1 << 13)
|
||||
#define ACTOR_FLAG_14 (1 << 14)
|
||||
#define ACTOR_FLAG_15 (1 << 15)
|
||||
#define ACTOR_FLAG_16 (1 << 16)
|
||||
#define ACTOR_FLAG_17 (1 << 17)
|
||||
#define ACTOR_FLAG_18 (1 << 18)
|
||||
#define ACTOR_FLAG_19 (1 << 19)
|
||||
#define ACTOR_FLAG_20 (1 << 20)
|
||||
#define ACTOR_FLAG_21 (1 << 21)
|
||||
#define ACTOR_FLAG_22 (1 << 22)
|
||||
#define ACTOR_FLAG_23 (1 << 23)
|
||||
#define ACTOR_FLAG_24 (1 << 24)
|
||||
#define ACTOR_FLAG_25 (1 << 25)
|
||||
#define ACTOR_FLAG_26 (1 << 26)
|
||||
#define ACTOR_FLAG_27 (1 << 27)
|
||||
#define ACTOR_FLAG_28 (1 << 28)
|
||||
|
||||
typedef struct Actor {
|
||||
/* 0x000 */ s16 id; // Actor ID
|
||||
/* 0x002 */ u8 category; // Actor category. Refer to the corresponding enum for values
|
||||
/* 0x003 */ s8 room; // Room number the actor is in. -1 denotes that the actor won't despawn on a room change
|
||||
/* 0x004 */ u32 flags; // Flags used for various purposes
|
||||
/* 0x008 */ PosRot home; // Initial position/rotation when spawned. Can be used for other purposes
|
||||
/* 0x01C */ s16 params; // Configurable variable set by the actor's spawn data; original name: "args_data"
|
||||
/* 0x01E */ s8 objBankIndex; // Object bank index of the actor's object dependency; original name: "bank"
|
||||
/* 0x01F */ s8 targetMode; // Controls how far the actor can be targeted from and how far it can stay locked on
|
||||
/* 0x020 */ u16 sfx; // SFX ID to play. Sound plays when value is set, then is cleared the following update cycle
|
||||
/* 0x024 */ PosRot world; // Position/rotation in the world
|
||||
/* 0x038 */ PosRot focus; // Target reticle focuses on this position. For player this represents head pos and rot
|
||||
/* 0x04C */ f32 targetArrowOffset; // Height offset of the target arrow relative to `focus` position
|
||||
/* 0x050 */ Vec3f scale; // Scale of the actor in each axis
|
||||
/* 0x05C */ Vec3f velocity; // Velocity of the actor in each axis
|
||||
/* 0x068 */ f32 speedXZ; // How fast the actor is traveling along the XZ plane
|
||||
/* 0x06C */ f32 gravity; // Acceleration due to gravity. Value is added to Y velocity every frame
|
||||
/* 0x070 */ f32 minVelocityY; // Sets the lower bounds cap on velocity along the Y axis
|
||||
/* 0x074 */ CollisionPoly* wallPoly; // Wall polygon the actor is touching
|
||||
/* 0x078 */ CollisionPoly* floorPoly; // Floor polygon directly below the actor
|
||||
/* 0x07C */ u8 wallBgId; // Bg ID of the wall polygon the actor is touching
|
||||
/* 0x07D */ u8 floorBgId; // Bg ID of the floor polygon directly below the actor
|
||||
/* 0x07E */ s16 wallYaw; // Y rotation of the wall polygon the actor is touching
|
||||
/* 0x080 */ f32 floorHeight; // Y position of the floor polygon directly below the actor
|
||||
/* 0x084 */ f32 yDistToWater; // Distance to the surface of active waterbox. Negative value means above water
|
||||
/* 0x088 */ u16 bgCheckFlags; // See comments below actor struct for wip docs. TODO: macros for these flags
|
||||
/* 0x08A */ s16 yawTowardsPlayer; // Y rotation difference between the actor and the player
|
||||
/* 0x08C */ f32 xyzDistToPlayerSq; // Squared distance between the actor and the player in the x,y,z axis
|
||||
/* 0x090 */ f32 xzDistToPlayer; // Distance between the actor and the player in the XZ plane
|
||||
/* 0x094 */ f32 yDistToPlayer; // Dist is negative if the actor is above the player
|
||||
/* 0x098 */ CollisionCheckInfo colChkInfo; // Variables related to the Collision Check system
|
||||
/* 0x0B4 */ ActorShape shape; // Variables related to the physical shape of the actor
|
||||
/* 0x0E4 */ Vec3f projectedPos; // Position of the actor in projected space
|
||||
/* 0x0F0 */ f32 projectedW; // w component of the projected actor position
|
||||
/* 0x0F4 */ f32 uncullZoneForward; // Amount to increase the uncull zone forward by (in projected space)
|
||||
/* 0x0F8 */ f32 uncullZoneScale; // Amount to increase the uncull zone scale by (in projected space)
|
||||
/* 0x0FC */ f32 uncullZoneDownward; // Amount to increase uncull zone downward by (in projected space)
|
||||
/* 0x100 */ Vec3f prevPos; // World position from the previous update cycle
|
||||
/* 0x10C */ u8 isTargeted; // Set to true if the actor is currently being targeted by the player
|
||||
/* 0x10D */ u8 targetPriority; // Lower values have higher priority. Resets to 0 when player stops targeting
|
||||
/* 0x10E */ u16 textId; // Text ID to pass to link/display when interacting with the actor
|
||||
/* 0x110 */ u16 freezeTimer; // Actor does not update when set. Timer decrements automatically
|
||||
/* 0x112 */ u16 colorFilterParams; // Set color filter to red, blue, or white. Toggle opa or xlu
|
||||
/* 0x114 */ u8 colorFilterTimer; // A non-zero value enables the color filter. Decrements automatically
|
||||
/* 0x115 */ u8 isDrawn; // Set to true if the actor is currently being drawn. Always stays false for lens actors
|
||||
/* 0x116 */ u8 dropFlag; // Configures what item is dropped by the actor from `Item_DropCollectibleRandom`
|
||||
/* 0x117 */ u8 naviEnemyId; // Sets what 0600 dialog to display when talking to navi. Default 0xFF
|
||||
/* 0x118 */ struct Actor* parent; // Usage is actor specific. Set if actor is spawned via `Actor_SpawnAsChild`
|
||||
/* 0x11C */ struct Actor* child; // Usage is actor specific. Set if actor is spawned via `Actor_SpawnAsChild`
|
||||
/* 0x120 */ struct Actor* prev; // Previous actor of this category
|
||||
/* 0x124 */ struct Actor* next; // Next actor of this category
|
||||
/* 0x128 */ ActorFunc init; // Initialization Routine. Called by `Actor_Init` or `Actor_UpdateAll`
|
||||
/* 0x12C */ ActorFunc destroy; // Destruction Routine. Called by `Actor_Destroy`
|
||||
/* 0x130 */ ActorFunc update; // Update Routine. Called by `Actor_UpdateAll`
|
||||
/* 0x134 */ ActorFunc draw; // Draw Routine. Called by `Actor_Draw`
|
||||
/* 0x138 */ ActorResetFunc reset;
|
||||
/* 0x138 */ ActorOverlay* overlayEntry; // Pointer to the overlay table entry for this actor
|
||||
/* 0x13C */ char dbgPad[0x10]; // Padding that only exists in the debug rom
|
||||
} Actor; // size = 0x14C
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ FOOT_LEFT,
|
||||
/* 1 */ FOOT_RIGHT
|
||||
} ActorFootIndex;
|
||||
|
||||
/*
|
||||
BgCheckFlags WIP documentation:
|
||||
& 0x001 : Standing on the ground
|
||||
& 0x002 : Has touched the ground (only active for 1 frame)
|
||||
& 0x004 : Has left the ground (only active for 1 frame)
|
||||
& 0x008 : Touching a wall
|
||||
& 0x010 : Touching a ceiling
|
||||
& 0x020 : On or below water surface
|
||||
& 0x040 : Has touched water (actor is responsible for unsetting this the frame it touches the water)
|
||||
& 0x080 : Similar to & 0x1 but with no velocity check and is cleared every frame
|
||||
& 0x100 : Crushed between a floor and ceiling (triggers a void for player)
|
||||
& 0x200 : Unknown (only set/used by player so far)
|
||||
*/
|
||||
|
||||
/*
|
||||
colorFilterParams WIP documentation
|
||||
& 0x8000 : white
|
||||
& 0x4000 : red
|
||||
if neither of the above are set : blue
|
||||
|
||||
(& 0x1F00 >> 5) | 7 : color intensity
|
||||
0x2000 : translucent, else opaque
|
||||
*/
|
||||
|
||||
typedef struct DynaPolyActor {
|
||||
/* 0x000 */ struct Actor actor;
|
||||
/* 0x14C */ s32 bgId;
|
||||
/* 0x150 */ f32 unk_150;
|
||||
/* 0x154 */ f32 unk_154;
|
||||
/* 0x158 */ s16 unk_158; // y rotation?
|
||||
/* 0x15A */ u16 unk_15A;
|
||||
/* 0x15C */ u32 unk_15C;
|
||||
/* 0x160 */ u8 unk_160;
|
||||
/* 0x162 */ s16 unk_162;
|
||||
} DynaPolyActor; // size = 0x164
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ MtxF* matrices;
|
||||
/* 0x04 */ s16* objectIds;
|
||||
/* 0x08 */ s16 count;
|
||||
/* 0x0C */ Gfx** dLists;
|
||||
/* 0x10 */ s32 val; // used for various purposes: both a status indicator and counter
|
||||
/* 0x14 */ s32 prevLimbIndex;
|
||||
} BodyBreak;
|
||||
|
||||
#define BODYBREAK_OBJECT_DEFAULT -1 // use the same object as the actor
|
||||
#define BODYBREAK_STATUS_READY -1
|
||||
#define BODYBREAK_STATUS_FINISHED 0
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ ITEM00_RUPEE_GREEN,
|
||||
/* 0x01 */ ITEM00_RUPEE_BLUE,
|
||||
/* 0x02 */ ITEM00_RUPEE_RED,
|
||||
/* 0x03 */ ITEM00_HEART,
|
||||
/* 0x04 */ ITEM00_BOMBS_A,
|
||||
/* 0x05 */ ITEM00_ARROWS_SINGLE,
|
||||
/* 0x06 */ ITEM00_HEART_PIECE,
|
||||
/* 0x07 */ ITEM00_HEART_CONTAINER,
|
||||
/* 0x08 */ ITEM00_ARROWS_SMALL,
|
||||
/* 0x09 */ ITEM00_ARROWS_MEDIUM,
|
||||
/* 0x0A */ ITEM00_ARROWS_LARGE,
|
||||
/* 0x0B */ ITEM00_BOMBS_B,
|
||||
/* 0x0C */ ITEM00_NUTS,
|
||||
/* 0x0D */ ITEM00_STICK,
|
||||
/* 0x0E */ ITEM00_MAGIC_LARGE,
|
||||
/* 0x0F */ ITEM00_MAGIC_SMALL,
|
||||
/* 0x10 */ ITEM00_SEEDS,
|
||||
/* 0x11 */ ITEM00_SMALL_KEY,
|
||||
/* 0x12 */ ITEM00_FLEXIBLE,
|
||||
/* 0x13 */ ITEM00_RUPEE_ORANGE,
|
||||
/* 0x14 */ ITEM00_RUPEE_PURPLE,
|
||||
/* 0x15 */ ITEM00_SHIELD_DEKU,
|
||||
/* 0x16 */ ITEM00_SHIELD_HYLIAN,
|
||||
/* 0x17 */ ITEM00_TUNIC_ZORA,
|
||||
/* 0x18 */ ITEM00_TUNIC_GORON,
|
||||
/* 0x19 */ ITEM00_BOMBS_SPECIAL
|
||||
} Item00Type;
|
||||
|
||||
struct EnItem00;
|
||||
|
||||
typedef void (*EnItem00ActionFunc)(struct EnItem00*, struct GlobalContext*);
|
||||
|
||||
typedef struct EnItem00 {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x14C */ EnItem00ActionFunc actionFunc;
|
||||
/* 0x150 */ s16 collectibleFlag;
|
||||
/* 0x152 */ s16 getItemId;
|
||||
/* 0x154 */ s16 unk_154;
|
||||
/* 0x156 */ s16 unk_156;
|
||||
/* 0x158 */ s16 unk_158;
|
||||
/* 0x15A */ s16 unk_15A;
|
||||
/* 0x15C */ f32 scale;
|
||||
/* 0x160 */ ColliderCylinder collider;
|
||||
} EnItem00; // size = 0x1AC
|
||||
|
||||
// Only A_OBJ_SIGNPOST_OBLONG and A_OBJ_SIGNPOST_ARROW are used in room files.
|
||||
typedef enum {
|
||||
/* 0x00 */ A_OBJ_BLOCK_SMALL,
|
||||
/* 0x01 */ A_OBJ_BLOCK_LARGE,
|
||||
/* 0x02 */ A_OBJ_BLOCK_HUGE,
|
||||
/* 0x03 */ A_OBJ_BLOCK_SMALL_ROT,
|
||||
/* 0x04 */ A_OBJ_BLOCK_LARGE_ROT,
|
||||
/* 0x05 */ A_OBJ_CUBE_SMALL,
|
||||
/* 0x06 */ A_OBJ_UNKNOWN_6,
|
||||
/* 0x07 */ A_OBJ_GRASS_CLUMP,
|
||||
/* 0x08 */ A_OBJ_TREE_STUMP,
|
||||
/* 0x09 */ A_OBJ_SIGNPOST_OBLONG,
|
||||
/* 0x0A */ A_OBJ_SIGNPOST_ARROW,
|
||||
/* 0x0B */ A_OBJ_BOULDER_FRAGMENT,
|
||||
/* 0x0C */ A_OBJ_MAX
|
||||
} AObjType;
|
||||
|
||||
struct EnAObj;
|
||||
|
||||
typedef void (*EnAObjActionFunc)(struct EnAObj*, struct GlobalContext*);
|
||||
|
||||
typedef struct EnAObj {
|
||||
/* 0x000 */ DynaPolyActor dyna;
|
||||
/* 0x164 */ EnAObjActionFunc actionFunc;
|
||||
/* 0x168 */ s32 rotateWaitTimer;
|
||||
/* 0x16C */ s16 textId;
|
||||
/* 0x16E */ s16 rotateState;
|
||||
/* 0x170 */ s16 rotateForTimer;
|
||||
/* 0x172 */ s16 rotSpeedY;
|
||||
/* 0x174 */ s16 rotSpeedX;
|
||||
/* 0x178 */ f32 focusYoffset;
|
||||
/* 0x17C */ ColliderCylinder collider;
|
||||
} EnAObj; // size = 0x1C8
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ ACTORCAT_SWITCH,
|
||||
/* 0x01 */ ACTORCAT_BG,
|
||||
/* 0x02 */ ACTORCAT_PLAYER,
|
||||
/* 0x03 */ ACTORCAT_EXPLOSIVE,
|
||||
/* 0x04 */ ACTORCAT_NPC,
|
||||
/* 0x05 */ ACTORCAT_ENEMY,
|
||||
/* 0x06 */ ACTORCAT_PROP,
|
||||
/* 0x07 */ ACTORCAT_ITEMACTION,
|
||||
/* 0x08 */ ACTORCAT_MISC,
|
||||
/* 0x09 */ ACTORCAT_BOSS,
|
||||
/* 0x0A */ ACTORCAT_DOOR,
|
||||
/* 0x0B */ ACTORCAT_CHEST
|
||||
} ActorCategory;
|
||||
|
||||
//#define DEFINE_ACTOR(_0, enum, _2) enum,
|
||||
#define DEFINE_ACTOR_INTERNAL(_0, enum, _2) enum,
|
||||
#define DEFINE_ACTOR_UNSET(enum) enum,
|
||||
#define DEFINE_ACTOR(_0, enum, _2) DEFINE_ACTOR_INTERNAL(_0, enum, _2)
|
||||
|
||||
typedef enum {
|
||||
#include "tables/actor_table.h"
|
||||
/* 0x0192 */ ACTOR_ID_MAX // originally "ACTOR_DLF_MAX"
|
||||
} ActorID;
|
||||
|
||||
#undef DEFINE_ACTOR
|
||||
#undef DEFINE_ACTOR_INTERNAL
|
||||
#undef DEFINE_ACTOR_UNSET
|
||||
|
||||
typedef enum {
|
||||
DOORLOCK_NORMAL,
|
||||
DOORLOCK_BOSS,
|
||||
DOORLOCK_NORMAL_SPIRIT
|
||||
} DoorLockType;
|
||||
|
||||
#endif
|
266
soh/include/z64animation.h
Executable file
266
soh/include/z64animation.h
Executable file
|
@ -0,0 +1,266 @@
|
|||
#ifndef Z64_ANIMATION_H
|
||||
#define Z64_ANIMATION_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64dma.h"
|
||||
#include "z64math.h"
|
||||
|
||||
struct GlobalContext;
|
||||
struct Actor;
|
||||
struct SkelAnime;
|
||||
|
||||
#define LINK_ANIMATION_OFFSET(addr, offset) \
|
||||
(((uintptr_t)_link_animetionSegmentRomStart) + ((uintptr_t)addr) - ((uintptr_t)_link_animetionSegmentStart) + ((uintptr_t)offset))
|
||||
#define LIMB_DONE 0xFF
|
||||
#define ANIMATION_ENTRY_MAX 50
|
||||
#define ANIM_FLAG_UPDATEY (1 << 1)
|
||||
#define ANIM_FLAG_NOMOVE (1 << 4)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ ANIMMODE_LOOP,
|
||||
/* 1 */ ANIMMODE_LOOP_INTERP,
|
||||
/* 2 */ ANIMMODE_ONCE,
|
||||
/* 3 */ ANIMMODE_ONCE_INTERP,
|
||||
/* 4 */ ANIMMODE_LOOP_PARTIAL,
|
||||
/* 5 */ ANIMMODE_LOOP_PARTIAL_INTERP
|
||||
} AnimationModes;
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ ANIMTAPER_DECEL = -1,
|
||||
/* 0 */ ANIMTAPER_NONE,
|
||||
/* 1 */ ANIMTAPER_ACCEL
|
||||
} AnimationTapers;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
|
||||
/* 0x06 */ u8 child;
|
||||
/* 0x07 */ u8 sibling;
|
||||
/* 0x08 */ Gfx* dList;
|
||||
} StandardLimb; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
|
||||
/* 0x06 */ u8 child;
|
||||
/* 0x07 */ u8 sibling;
|
||||
/* 0x08 */ Gfx* dLists[2]; // Near and far
|
||||
} LodLimb; // size = 0x10
|
||||
|
||||
typedef struct LegacyLimb {
|
||||
/* 0x000 */ Gfx* dList;
|
||||
/* 0x004 */ Vec3f trans;
|
||||
/* 0x010 */ Vec3s rot;
|
||||
/* 0x018 */ struct LegacyLimb* sibling;
|
||||
/* 0x01C */ struct LegacyLimb* child;
|
||||
} LegacyLimb; // size = 0x20
|
||||
|
||||
// Model has limbs with only rigid meshes
|
||||
typedef struct {
|
||||
/* 0x00 */ void** segment;
|
||||
/* 0x04 */ u8 limbCount;
|
||||
} SkeletonHeader; // size = 0x8
|
||||
|
||||
// Model has limbs with flexible meshes
|
||||
typedef struct {
|
||||
/* 0x00 */ SkeletonHeader sh;
|
||||
/* 0x08 */ u8 dListCount;
|
||||
} FlexSkeletonHeader; // size = 0xC
|
||||
|
||||
// Index into the frame data table.
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 x;
|
||||
/* 0x02 */ u16 y;
|
||||
/* 0x04 */ u16 z;
|
||||
} JointIndex; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 frameCount;
|
||||
} AnimationHeaderCommon;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AnimationHeaderCommon common;
|
||||
/* 0x04 */ void* segment;
|
||||
} LinkAnimationHeader; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AnimationHeaderCommon common;
|
||||
/* 0x04 */ s16* frameData; // "tbl"
|
||||
/* 0x08 */ JointIndex* jointIndices; // "ref_tbl"
|
||||
/* 0x0C */ u16 staticIndexMax;
|
||||
} AnimationHeader; // size = 0x10
|
||||
|
||||
// Unused
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMax;
|
||||
/* 0x02 */ s16 x;
|
||||
/* 0x04 */ s16 yMax;
|
||||
/* 0x06 */ s16 y;
|
||||
/* 0x08 */ s16 zMax;
|
||||
/* 0x0A */ s16 z;
|
||||
} JointKey; // size = 0x0C
|
||||
|
||||
// Unused
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 frameCount;
|
||||
/* 0x02 */ s16 limbCount;
|
||||
/* 0x04 */ s16* frameData;
|
||||
/* 0x08 */ JointKey* jointKey;
|
||||
} LegacyAnimationHeader; // size = 0xC
|
||||
|
||||
typedef s32 (*OverrideLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
void*);
|
||||
|
||||
typedef void (*PostLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void*);
|
||||
|
||||
typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
void*, Gfx** gfx);
|
||||
|
||||
typedef void (*PostLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void*, Gfx** gfx);
|
||||
|
||||
typedef enum {
|
||||
ANIMENTRY_LOADFRAME,
|
||||
ANIMENTRY_COPYALL,
|
||||
ANIMENTRY_INTERP,
|
||||
ANIMENTRY_COPYTRUE,
|
||||
ANIMENTRY_COPYFALSE,
|
||||
ANIMENTRY_MOVEACTOR
|
||||
} AnimationType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ DmaRequest req;
|
||||
/* 0x020 */ OSMesgQueue msgQueue;
|
||||
/* 0x038 */ OSMesg msg;
|
||||
} AnimEntryLoadFrame; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x004 */ Vec3s* dst;
|
||||
/* 0x008 */ Vec3s* src;
|
||||
} AnimEntryCopyAll; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x004 */ Vec3s* base;
|
||||
/* 0x008 */ Vec3s* mod;
|
||||
/* 0x00C */ f32 weight;
|
||||
} AnimEntryInterp; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x004 */ Vec3s* dst;
|
||||
/* 0x008 */ Vec3s* src;
|
||||
/* 0x00C */ u8* copyFlag;
|
||||
} AnimEntryCopyTrue; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x004 */ Vec3s* dst;
|
||||
/* 0x008 */ Vec3s* src;
|
||||
/* 0x00C */ u8* copyFlag;
|
||||
} AnimEntryCopyFalse; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ struct Actor* actor;
|
||||
/* 0x004 */ struct SkelAnime* skelAnime;
|
||||
/* 0x008 */ f32 unk_08;
|
||||
} AnimEntryMoveActor; // size = 0xC
|
||||
|
||||
typedef union {
|
||||
AnimEntryLoadFrame load;
|
||||
AnimEntryCopyAll copy;
|
||||
AnimEntryInterp interp;
|
||||
AnimEntryCopyTrue copy1;
|
||||
AnimEntryCopyFalse copy0;
|
||||
AnimEntryMoveActor move;
|
||||
} AnimationEntryData; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 type;
|
||||
/* 0x04 */ AnimationEntryData data;
|
||||
} AnimationEntry; // size = 0x40
|
||||
|
||||
typedef struct AnimationContext {
|
||||
s16 animationCount;
|
||||
AnimationEntry entries[ANIMATION_ENTRY_MAX];
|
||||
} AnimationContext; // size = 0xC84
|
||||
|
||||
typedef void (*AnimationEntryCallback)(struct GlobalContext* globalCtx, AnimationEntryData* data);
|
||||
|
||||
// fcurve_skelanime structs
|
||||
typedef struct {
|
||||
/* 0x0000 */ u16 unk_00; // appears to be flags
|
||||
/* 0x0002 */ s16 unk_02;
|
||||
/* 0x0004 */ s16 unk_04;
|
||||
/* 0x0006 */ s16 unk_06;
|
||||
/* 0x0008 */ f32 unk_08;
|
||||
} TransformData; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8* refIndex;
|
||||
/* 0x0004 */ TransformData* transformData;
|
||||
/* 0x0008 */ s16* copyValues;
|
||||
/* 0x000C */ s16 unk_0C;
|
||||
/* 0x000E */ s16 unk_0E;
|
||||
} TransformUpdateIndex; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 firstChildIdx;
|
||||
/* 0x0001 */ u8 nextLimbIdx;
|
||||
/* 0x0004 */ Gfx* dList[2];
|
||||
} SkelCurveLimb; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ SkelCurveLimb** limbs;
|
||||
/* 0x0004 */ u8 limbCount;
|
||||
} SkelCurveLimbList; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Vec3s scale;
|
||||
/* 0x0006 */ Vec3s rot;
|
||||
/* 0x000C */ Vec3s pos;
|
||||
} LimbTransform; // size = 0x12
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 limbCount;
|
||||
/* 0x0004 */ SkelCurveLimb** limbList;
|
||||
/* 0x0008 */ TransformUpdateIndex* transUpdIdx;
|
||||
/* 0x000C */ f32 unk_0C; // seems to be unused
|
||||
/* 0x0010 */ f32 animFinalFrame;
|
||||
/* 0x0014 */ f32 animSpeed;
|
||||
/* 0x0018 */ f32 animCurFrame;
|
||||
/* 0x001C */ LimbTransform* transforms;
|
||||
} SkelAnimeCurve; // size = 0x20
|
||||
|
||||
typedef s32 (*OverrideCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, s32 limbIndex, void*);
|
||||
typedef void (*PostCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, s32 limbIndex, void*);
|
||||
|
||||
typedef s32 (*AnimUpdateFunc)();
|
||||
|
||||
typedef struct SkelAnime {
|
||||
/* 0x00 */ u8 limbCount; // Number of limbs in the skeleton
|
||||
/* 0x01 */ u8 mode; // 0: loop, 2: play once, 4: partial loop. +1 to interpolate between frames.
|
||||
/* 0x02 */ u8 dListCount; // Number of display lists in a flexible skeleton
|
||||
/* 0x03 */ s8 taper; // Tapering to use when morphing between animations. Only used by Door_Warp1.
|
||||
/* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb, or SkinLimb.
|
||||
/* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader.
|
||||
/* 0x0C */ f32 startFrame; // In mode 4, start of partial loop.
|
||||
/* 0x10 */ f32 endFrame; // In mode 2, Update returns true when curFrame is equal to this. In mode 4, end of partial loop.
|
||||
/* 0x14 */ f32 animLength; // Total number of frames in the current animation's file.
|
||||
/* 0x18 */ f32 curFrame; // Current frame in the animation
|
||||
/* 0x1C */ f32 playSpeed; // Multiplied by R_UPDATE_RATE / 3 to get the animation's frame rate.
|
||||
/* 0x20 */ Vec3s* jointTable; // Current translation of model and rotations of all limbs
|
||||
/* 0x24 */ Vec3s* morphTable; // Table of values used to morph between animations
|
||||
/* 0x28 */ f32 morphWeight; // Weight of the current animation morph as a fraction in [0,1]
|
||||
/* 0x2C */ f32 morphRate; // Reciprocal of the number of frames in the morph
|
||||
/* 0x30 */ s32 (*update)(); // Can be Loop, Partial loop, Play once, Morph, or Tapered morph. Link only has Loop, Play once, and Morph
|
||||
/* 0x34 */ s8 initFlags; // Flags used when initializing Link's skeleton
|
||||
/* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace.
|
||||
/* 0x36 */ s16 prevRot; // Previous rotation in worldspace.
|
||||
/* 0x38 */ Vec3s prevTransl; // Previous modelspace translation.
|
||||
/* 0x3E */ Vec3s baseTransl; // Base modelspace translation.
|
||||
} SkelAnime; // size = 0x44
|
||||
|
||||
#endif
|
1074
soh/include/z64audio.h
Normal file
1074
soh/include/z64audio.h
Normal file
File diff suppressed because it is too large
Load diff
196
soh/include/z64bgcheck.h
Normal file
196
soh/include/z64bgcheck.h
Normal file
|
@ -0,0 +1,196 @@
|
|||
#ifndef Z_BGCHECK_H
|
||||
#define Z_BGCHECK_H
|
||||
|
||||
struct GlobalContext;
|
||||
struct Actor;
|
||||
struct DynaPolyActor;
|
||||
|
||||
#define COLPOLY_NORMAL_FRAC (1.0f / SHT_MAX)
|
||||
#define COLPOLY_SNORMAL(x) ((s16)((x) * SHT_MAX))
|
||||
#define COLPOLY_GET_NORMAL(n) ((n)*COLPOLY_NORMAL_FRAC)
|
||||
#define COLPOLY_VIA_FLAG_TEST(vIA, flags) ((vIA) & (((flags)&7) << 13))
|
||||
#define COLPOLY_VTX_INDEX(vI) ((vI)&0x1FFF)
|
||||
|
||||
#define DYNAPOLY_INVALIDATE_LOOKUP (1 << 0)
|
||||
|
||||
#define BGACTOR_NEG_ONE -1
|
||||
#define BG_ACTOR_MAX 50
|
||||
#define BGCHECK_SCENE BG_ACTOR_MAX
|
||||
#define BGCHECK_Y_MIN -32000.0f
|
||||
#define BGCHECK_XYZ_ABSMAX 32760.0f
|
||||
#define BGCHECK_SUBDIV_OVERLAP 50
|
||||
#define BGCHECK_SUBDIV_MIN 150.0f
|
||||
|
||||
#define FUNC_80041EA4_RESPAWN 5
|
||||
#define FUNC_80041EA4_MOUNT_WALL 6
|
||||
#define FUNC_80041EA4_STOP 8
|
||||
#define FUNC_80041EA4_VOID_OUT 12
|
||||
|
||||
#define WATERBOX_ROOM(p) ((p >> 13) & 0x3F)
|
||||
|
||||
typedef struct {
|
||||
Vec3f scale;
|
||||
Vec3s rot;
|
||||
Vec3f pos;
|
||||
} ScaleRotPos;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 type;
|
||||
union {
|
||||
u16 vtxData[3];
|
||||
struct {
|
||||
/* 0x02 */ u16 flags_vIA; // 0xE000 is poly exclusion flags (xpFlags), 0x1FFF is vtxId
|
||||
/* 0x04 */ u16 flags_vIB; // 0xE000 is flags, 0x1FFF is vtxId
|
||||
// 0x2000 = poly IsConveyor surface
|
||||
/* 0x06 */ u16 vIC;
|
||||
};
|
||||
};
|
||||
/* 0x08 */ Vec3s normal; // Unit normal vector
|
||||
// Value ranges from -0x7FFF to 0x7FFF, representing -1.0 to 1.0; 0x8000 is invalid
|
||||
|
||||
/* 0x0E */ s16 dist; // Plane distance from origin along the normal
|
||||
} CollisionPoly; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 cameraSType;
|
||||
/* 0x02 */ s16 numCameras;
|
||||
/* 0x04 */ Vec3s* camPosData;
|
||||
} CamData;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMin;
|
||||
/* 0x02 */ s16 ySurface;
|
||||
/* 0x04 */ s16 zMin;
|
||||
/* 0x06 */ s16 xLength;
|
||||
/* 0x08 */ s16 zLength;
|
||||
/* 0x0C */ u32 properties;
|
||||
|
||||
// 0x0008_0000 = ?
|
||||
// 0x0007_E000 = Room Index, 0x3F = all rooms
|
||||
// 0x0000_1F00 = Lighting Settings Index
|
||||
// 0x0000_00FF = CamData index
|
||||
} WaterBox; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
u32 data[2];
|
||||
|
||||
// Type 1
|
||||
// 0x0800_0000 = wall damage
|
||||
} SurfaceType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s minBounds; // minimum coordinates of poly bounding box
|
||||
/* 0x06 */ Vec3s maxBounds; // maximum coordinates of poly bounding box
|
||||
/* 0x0C */ u16 numVertices;
|
||||
/* 0x10 */ Vec3s* vtxList;
|
||||
/* 0x14 */ u16 numPolygons;
|
||||
/* 0x18 */ CollisionPoly* polyList;
|
||||
/* 0x1C */ SurfaceType* surfaceTypeList;
|
||||
/* 0x20 */ CamData* cameraDataList;
|
||||
/* 0x24 */ u16 numWaterBoxes;
|
||||
/* 0x28 */ WaterBox* waterBoxes;
|
||||
} CollisionHeader; // original name: BGDataInfo
|
||||
|
||||
typedef struct {
|
||||
s16 polyId;
|
||||
u16 next; // next SSNode index
|
||||
} SSNode;
|
||||
|
||||
typedef struct {
|
||||
u16 head; // first SSNode index
|
||||
} SSList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 max; // original name: short_slist_node_size
|
||||
/* 0x02 */ u16 count; // original name: short_slist_node_last_index
|
||||
/* 0x04 */ SSNode* tbl; // original name: short_slist_node_tbl
|
||||
/* 0x08 */ u8* polyCheckTbl; // points to an array of bytes, one per static poly. Zero initialized when starting a
|
||||
// bg check, and set to 1 if that poly has already been tested.
|
||||
} SSNodeList;
|
||||
|
||||
typedef struct {
|
||||
SSNode* tbl;
|
||||
s32 count;
|
||||
s32 max;
|
||||
} DynaSSNodeList;
|
||||
|
||||
typedef struct {
|
||||
SSList floor;
|
||||
SSList wall;
|
||||
SSList ceiling;
|
||||
} StaticLookup;
|
||||
|
||||
typedef struct {
|
||||
u16 polyStartIndex;
|
||||
SSList ceiling;
|
||||
SSList wall;
|
||||
SSList floor;
|
||||
} DynaLookup;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct Actor* actor;
|
||||
/* 0x04 */ CollisionHeader* colHeader;
|
||||
/* 0x08 */ DynaLookup dynaLookup;
|
||||
/* 0x10 */ u16 vtxStartIndex;
|
||||
/* 0x14 */ ScaleRotPos prevTransform;
|
||||
/* 0x34 */ ScaleRotPos curTransform;
|
||||
/* 0x54 */ Sphere16 boundingSphere;
|
||||
/* 0x5C */ f32 minY;
|
||||
/* 0x60 */ f32 maxY;
|
||||
} BgActor; // size = 0x64
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 bitFlag;
|
||||
/* 0x0004 */ BgActor bgActors[BG_ACTOR_MAX];
|
||||
/* 0x138C */ u16 bgActorFlags[BG_ACTOR_MAX]; // & 0x0008 = no dyna ceiling
|
||||
/* 0x13F0 */ CollisionPoly* polyList;
|
||||
/* 0x13F4 */ Vec3s* vtxList;
|
||||
/* 0x13F8 */ DynaSSNodeList polyNodes;
|
||||
/* 0x1404 */ s32 polyNodesMax;
|
||||
/* 0x1408 */ s32 polyListMax;
|
||||
/* 0x140C */ s32 vtxListMax;
|
||||
} DynaCollisionContext; // size = 0x1410
|
||||
|
||||
typedef struct CollisionContext {
|
||||
/* 0x00 */ CollisionHeader* colHeader; // scene's static collision
|
||||
/* 0x04 */ Vec3f minBounds; // minimum coordinates of collision bounding box
|
||||
/* 0x10 */ Vec3f maxBounds; // maximum coordinates of collision bounding box
|
||||
/* 0x1C */ Vec3i subdivAmount; // x, y, z subdivisions of the scene's static collision
|
||||
/* 0x28 */ Vec3f subdivLength; // x, y, z subdivision worldspace lengths
|
||||
/* 0x34 */ Vec3f subdivLengthInv; // inverse of subdivision length
|
||||
/* 0x40 */ StaticLookup* lookupTbl; // 3d array of length subdivAmount
|
||||
/* 0x44 */ SSNodeList polyNodes;
|
||||
/* 0x50 */ DynaCollisionContext dyna;
|
||||
/* 0x1460 */ u32 memSize; // Size of all allocated memory plus CollisionContext
|
||||
} CollisionContext; // size = 0x1464
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct GlobalContext* globalCtx;
|
||||
/* 0x04 */ struct CollisionContext* colCtx;
|
||||
/* 0x08 */ u16 xpFlags;
|
||||
/* 0x0C */ CollisionPoly** resultPoly;
|
||||
/* 0x10 */ f32 yIntersect;
|
||||
/* 0x14 */ Vec3f* pos;
|
||||
/* 0x18 */ s32* bgId;
|
||||
/* 0x1C */ struct Actor* actor;
|
||||
/* 0x20 */ u32 unk_20;
|
||||
/* 0x24 */ f32 chkDist;
|
||||
/* 0x28 */ DynaCollisionContext* dyna;
|
||||
/* 0x2C */ SSList* ssList;
|
||||
} DynaRaycast;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct CollisionContext* colCtx;
|
||||
/* 0x04 */ u16 xpFlags;
|
||||
/* 0x08 */ DynaCollisionContext* dyna;
|
||||
/* 0x0C */ SSList* ssList;
|
||||
/* 0x10 */ Vec3f* posA;
|
||||
/* 0x14 */ Vec3f* posB;
|
||||
/* 0x18 */ Vec3f* posResult;
|
||||
/* 0x1C */ CollisionPoly** resultPoly;
|
||||
/* 0x20 */ s32 chkOneFace; // bccFlags & 0x8
|
||||
/* 0x24 */ f32* distSq; // distance from posA to poly squared
|
||||
/* 0x28 */ f32 chkDist; // distance from poly
|
||||
} DynaLineTest;
|
||||
|
||||
#endif
|
1288
soh/include/z64camera.h
Normal file
1288
soh/include/z64camera.h
Normal file
File diff suppressed because it is too large
Load diff
390
soh/include/z64collision_check.h
Normal file
390
soh/include/z64collision_check.h
Normal file
|
@ -0,0 +1,390 @@
|
|||
#ifndef Z_COLLISION_CHECK_H
|
||||
#define Z_COLLISION_CHECK_H
|
||||
|
||||
#define COLLISION_CHECK_AT_MAX 50
|
||||
#define COLLISION_CHECK_AC_MAX 60
|
||||
#define COLLISION_CHECK_OC_MAX 50
|
||||
#define COLLISION_CHECK_OC_LINE_MAX 3
|
||||
|
||||
// From z64.h
|
||||
struct Actor;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct Actor* actor; // Attached actor
|
||||
/* 0x04 */ struct Actor* at; // Actor attached to what it collided with as an AT collider.
|
||||
/* 0x08 */ struct Actor* ac; // Actor attached to what it collided with as an AC collider.
|
||||
/* 0x0C */ struct Actor* oc; // Actor attached to what it collided with as an OC collider.
|
||||
/* 0x10 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x11 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x12 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x13 */ u8 ocFlags2; // Flags related to which colliders it can OC collide with.
|
||||
/* 0x14 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
|
||||
/* 0x15 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} Collider; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
|
||||
/* 0x01 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x02 */ u8 acFlags; // Information flags for OC collisions.
|
||||
/* 0x03 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x04 */ u8 ocFlags2; // Flags related to which colliders it can OC collide with.
|
||||
/* 0x05 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} ColliderInit; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
|
||||
/* 0x01 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x02 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x03 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x04 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} ColliderInitType1; // size = 0x05
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct Actor* actor;
|
||||
/* 0x04 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x05 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x06 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x07 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
|
||||
} ColliderInitToActor; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 dmgFlags; // Toucher damage type flags.
|
||||
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x05 */ u8 damage; // Damage or Stun Timer
|
||||
} ColliderTouch; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 dmgFlags; // Bumper damage type flags.
|
||||
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x05 */ u8 defense; // Damage Resistance
|
||||
/* 0x06 */ Vec3s hitPos; // Point of contact
|
||||
} ColliderBump; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 dmgFlags; // Bumper exclusion mask
|
||||
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x05 */ u8 defense; // Damage Resistance
|
||||
} ColliderBumpInit; // size = 0x08
|
||||
|
||||
typedef struct ColliderInfo {
|
||||
/* 0x00 */ ColliderTouch toucher; // Damage properties when acting as an AT collider
|
||||
/* 0x08 */ ColliderBump bumper; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
|
||||
/* 0x15 */ u8 toucherFlags; // Information flags for AT collisions
|
||||
/* 0x16 */ u8 bumperFlags; // Information flags for AC collisions
|
||||
/* 0x17 */ u8 ocElemFlags; // Information flags for OC collisions
|
||||
/* 0x18 */ Collider* atHit; // object touching this element's AT collider
|
||||
/* 0x1C */ Collider* acHit; // object touching this element's AC collider
|
||||
/* 0x20 */ struct ColliderInfo* atHitInfo; // element that hit the AT collider
|
||||
/* 0x24 */ struct ColliderInfo* acHitInfo; // element that hit the AC collider
|
||||
} ColliderInfo; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
|
||||
/* 0x04 */ ColliderTouch toucher; // Damage properties when acting as an AT collider
|
||||
/* 0x0C */ ColliderBumpInit bumper; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 toucherFlags; // Information flags for AT collisions
|
||||
/* 0x15 */ u8 bumperFlags; // Information flags for AC collisions
|
||||
/* 0x16 */ u8 ocElemFlags; // Information flags for OC collisions
|
||||
} ColliderInfoInit; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Sphere16 modelSphere; // model space sphere
|
||||
/* 0x08 */ Sphere16 worldSphere; // world space sphere
|
||||
/* 0x10 */ f32 scale; // world space sphere = model * scale * 0.01
|
||||
/* 0x14 */ u8 limb; // attached limb
|
||||
} ColliderJntSphElementDim; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 limb; // attached limb
|
||||
/* 0x02 */ Sphere16 modelSphere; // model space sphere
|
||||
/* 0x0A */ s16 scale; // world space sphere = model * scale * 0.01
|
||||
} ColliderJntSphElementDimInit; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInfo info;
|
||||
/* 0x28 */ ColliderJntSphElementDim dim;
|
||||
} ColliderJntSphElement; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInfoInit info;
|
||||
/* 0x18 */ ColliderJntSphElementDimInit dim;
|
||||
} ColliderJntSphElementInit; // size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ s32 count;
|
||||
/* 0x1C */ ColliderJntSphElement* elements;
|
||||
} ColliderJntSph; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInit base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderJntSphElementInit* elements;
|
||||
} ColliderJntSphInit; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderJntSphElementInit* elements;
|
||||
} ColliderJntSphInitType1; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitToActor base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderJntSphElementInit* elements;
|
||||
} ColliderJntSphInitToActor; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ ColliderInfo info;
|
||||
/* 0x40 */ Cylinder16 dim;
|
||||
} ColliderCylinder; // size = 0x4C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInit base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ Cylinder16 dim;
|
||||
} ColliderCylinderInit; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ Cylinder16 dim;
|
||||
} ColliderCylinderInitType1; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitToActor base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ Cylinder16 dim;
|
||||
} ColliderCylinderInitToActor; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f vtx[3];
|
||||
} ColliderTrisElementDimInit; // size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInfo info;
|
||||
/* 0x28 */ TriNorm dim;
|
||||
} ColliderTrisElement; // size = 0x5C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInfoInit info;
|
||||
/* 0x18 */ ColliderTrisElementDimInit dim;
|
||||
} ColliderTrisElementInit; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ s32 count;
|
||||
/* 0x1C */ ColliderTrisElement* elements;
|
||||
} ColliderTris; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInit base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderTrisElementInit* elements;
|
||||
} ColliderTrisInit; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderTrisElementInit* elements;
|
||||
} ColliderTrisInitType1; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f quad[4];
|
||||
/* 0x30 */ Vec3s dcMid; // midpoint of vectors d, c
|
||||
/* 0x36 */ Vec3s baMid; // midpoint of vectors b, a
|
||||
/* 0x3C */ f32 acDist; // distance to nearest AC collision this frame.
|
||||
} ColliderQuadDim; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f quad[4];
|
||||
} ColliderQuadDimInit; // size = 0x30
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInfo info;
|
||||
/* 0x24 */ ColliderQuadDim dim;
|
||||
} ColliderQuadElement; // size = 0x68
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Collider base;
|
||||
/* 0x18 */ ColliderInfo info;
|
||||
/* 0x40 */ ColliderQuadDim dim;
|
||||
} ColliderQuad; // size = 0x80
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInit base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ ColliderQuadDimInit dim;
|
||||
} ColliderQuadInit; // size = 0x50
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderInitType1 base;
|
||||
/* 0x08 */ ColliderInfoInit info;
|
||||
/* 0x20 */ ColliderQuadDimInit dim;
|
||||
} ColliderQuadInitType1; // size = 0x50
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Linef line;
|
||||
/* 0x18 */ u16 ocFlags;
|
||||
} OcLine; // size = 0x1C
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ COLTYPE_HIT0, // Blue blood, white hitmark
|
||||
/* 1 */ COLTYPE_HIT1, // No blood, dust hitmark
|
||||
/* 2 */ COLTYPE_HIT2, // Green blood, dust hitmark
|
||||
/* 3 */ COLTYPE_HIT3, // No blood, white hitmark
|
||||
/* 4 */ COLTYPE_HIT4, // Water burst, no hitmark
|
||||
/* 5 */ COLTYPE_HIT5, // No blood, red hitmark
|
||||
/* 6 */ COLTYPE_HIT6, // Green blood, white hitmark
|
||||
/* 7 */ COLTYPE_HIT7, // Red blood, white hitmark
|
||||
/* 8 */ COLTYPE_HIT8, // Blue blood, red hitmark
|
||||
/* 9 */ COLTYPE_METAL,
|
||||
/* 10 */ COLTYPE_NONE,
|
||||
/* 11 */ COLTYPE_WOOD,
|
||||
/* 12 */ COLTYPE_HARD,
|
||||
/* 13 */ COLTYPE_TREE
|
||||
} ColliderType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ COLSHAPE_JNTSPH,
|
||||
/* 1 */ COLSHAPE_CYLINDER,
|
||||
/* 2 */ COLSHAPE_TRIS,
|
||||
/* 3 */ COLSHAPE_QUAD,
|
||||
/* 4 */ COLSHAPE_INVALID
|
||||
} ColliderShape;
|
||||
|
||||
/**
|
||||
* Affects the sound Link's sword makes when hitting it, hookability,
|
||||
* and possibly other things. It's definitely not flags, as all checks
|
||||
* are == or !=. Will probably need more actors decomped to truly
|
||||
* understand what this is.
|
||||
*/
|
||||
typedef enum {
|
||||
/* 0 */ ELEMTYPE_UNK0,
|
||||
/* 1 */ ELEMTYPE_UNK1,
|
||||
/* 2 */ ELEMTYPE_UNK2,
|
||||
/* 3 */ ELEMTYPE_UNK3,
|
||||
/* 4 */ ELEMTYPE_UNK4,
|
||||
/* 5 */ ELEMTYPE_UNK5,
|
||||
/* 6 */ ELEMTYPE_UNK6,
|
||||
/* 7 */ ELEMTYPE_UNK7
|
||||
} ElementType;
|
||||
|
||||
#define AT_NONE 0 // No flags set. Cannot have AT collisions when set as AT
|
||||
#define AT_ON (1 << 0) // Can have AT collisions when set as AT
|
||||
#define AT_HIT (1 << 1) // Had an AT collision
|
||||
#define AT_BOUNCED (1 << 2) // Had an AT collision with an AC_HARD collider
|
||||
#define AT_TYPE_PLAYER (1 << 3) // Has player-aligned damage
|
||||
#define AT_TYPE_ENEMY (1 << 4) // Has enemy-aligned damage
|
||||
#define AT_TYPE_OTHER (1 << 5) // Has non-aligned damage
|
||||
#define AT_SELF (1 << 6) // Can have AT collisions with colliders attached to the same actor
|
||||
#define AT_TYPE_ALL (AT_TYPE_PLAYER | AT_TYPE_ENEMY | AT_TYPE_OTHER) // Has all three damage alignments
|
||||
|
||||
#define AC_NONE 0 // No flags set. Cannot have AC collisions when set as AC
|
||||
#define AC_ON (1 << 0) // Can have AC collisions when set as AC
|
||||
#define AC_HIT (1 << 1) // Had an AC collision
|
||||
#define AC_HARD (1 << 2) // Causes AT colliders to bounce off it
|
||||
#define AC_TYPE_PLAYER AT_TYPE_PLAYER // Takes player-aligned damage
|
||||
#define AC_TYPE_ENEMY AT_TYPE_ENEMY // Takes enemy-aligned damage
|
||||
#define AC_TYPE_OTHER AT_TYPE_OTHER // Takes non-aligned damage
|
||||
#define AC_NO_DAMAGE (1 << 6) // Collider does not take damage
|
||||
#define AC_BOUNCED (1 << 7) // Caused an AT collider to bounce off it
|
||||
#define AC_TYPE_ALL (AC_TYPE_PLAYER | AC_TYPE_ENEMY | AC_TYPE_OTHER) // Takes damage from all three alignments
|
||||
|
||||
#define OC1_NONE 0 // No flags set. Cannot have OC collisions when set as OC
|
||||
#define OC1_ON (1 << 0) // Can have OC collisions when set as OC
|
||||
#define OC1_HIT (1 << 1) // Had an OC collision
|
||||
#define OC1_NO_PUSH (1 << 2) // Does not push other colliders away during OC collisions
|
||||
#define OC1_TYPE_PLAYER (1 << 3) // Can have OC collisions with OC type player
|
||||
#define OC1_TYPE_1 (1 << 4) // Can have OC collisions with OC type 1
|
||||
#define OC1_TYPE_2 (1 << 5) // Can have OC collisions with OC type 2
|
||||
#define OC1_TYPE_ALL (OC1_TYPE_PLAYER | OC1_TYPE_1 | OC1_TYPE_2) // Can have collisions with all three OC types
|
||||
|
||||
#define OC2_NONE 0 // No flags set. Has no OC type
|
||||
#define OC2_HIT_PLAYER (1 << 0) // Had an OC collision with OC type player
|
||||
#define OC2_UNK1 (1 << 1) // Prevents OC collisions with OC2_UNK2. Some horses and toki_sword have it.
|
||||
#define OC2_UNK2 (1 << 2) // Prevents OC collisions with OC2_UNK1. Nothing has it.
|
||||
#define OC2_TYPE_PLAYER OC1_TYPE_PLAYER // Has OC type player
|
||||
#define OC2_TYPE_1 OC1_TYPE_1 // Has OC type 1
|
||||
#define OC2_TYPE_2 OC1_TYPE_2 // Has OC type 2
|
||||
#define OC2_FIRST_ONLY (1 << 6) // Skips AC checks on elements after the first collision. Only used by Ganon
|
||||
|
||||
#define TOUCH_NONE 0 // No flags set. Cannot have AT collisions
|
||||
#define TOUCH_ON (1 << 0) // Can have AT collisions
|
||||
#define TOUCH_HIT (1 << 1) // Had an AT collision
|
||||
#define TOUCH_NEAREST (1 << 2) // If a Quad, only collides with the closest bumper
|
||||
#define TOUCH_SFX_NORMAL (0 << 3) // Hit sound effect based on AC collider's type
|
||||
#define TOUCH_SFX_HARD (1 << 3) // Always uses hard deflection sound
|
||||
#define TOUCH_SFX_WOOD (2 << 3) // Always uses wood deflection sound
|
||||
#define TOUCH_SFX_NONE (3 << 3) // No hit sound effect
|
||||
#define TOUCH_AT_HITMARK (1 << 5) // Draw hitmarks for every AT collision
|
||||
#define TOUCH_DREW_HITMARK (1 << 6) // Already drew hitmark for this frame
|
||||
#define TOUCH_UNK7 (1 << 7) // Unknown purpose. Used by some enemy quads
|
||||
|
||||
#define BUMP_NONE 0 // No flags set. Cannot have AC collisions
|
||||
#define BUMP_ON (1 << 0) // Can have AC collisions
|
||||
#define BUMP_HIT (1 << 1) // Had an AC collision
|
||||
#define BUMP_HOOKABLE (1 << 2) // Can be hooked if actor has hookability flags set.
|
||||
#define BUMP_NO_AT_INFO (1 << 3) // Does not give its info to the AT collider that hit it.
|
||||
#define BUMP_NO_DAMAGE (1 << 4) // Does not take damage.
|
||||
#define BUMP_NO_SWORD_SFX (1 << 5) // Does not have a sound when hit by player-attached AT colliders.
|
||||
#define BUMP_NO_HITMARK (1 << 6) // Skips hit effects.
|
||||
#define BUMP_DRAW_HITMARK (1 << 7) // Draw hitmark for AC collision this frame.
|
||||
|
||||
#define OCELEM_NONE 0 // No flags set. Cannot have OC collisions
|
||||
#define OCELEM_ON (1 << 0) // Can have OC collisions
|
||||
#define OCELEM_HIT (1 << 1) // Had an OC collision
|
||||
#define OCELEM_UNK3 (1 << 3) // Unknown purpose. Used by Dead Hand element 0 and Dodongo element 5
|
||||
|
||||
#define OCLINE_NONE 0 // Did not have an OcLine collision
|
||||
#define OCLINE_HIT (1 << 0) // Had an OcLine collision
|
||||
|
||||
#define DMG_ENTRY(damage, effect) ((damage) | ((effect) << 4))
|
||||
|
||||
// These flags are not to be used in code until we figure out how we want to format them. They are only here for reference
|
||||
#define DMG_DEKU_NUT (1 << 0x00)
|
||||
#define DMG_DEKU_STICK (1 << 0x01)
|
||||
#define DMG_SLINGSHOT (1 << 0x02)
|
||||
#define DMG_EXPLOSIVE (1 << 0x03)
|
||||
#define DMG_BOOMERANG (1 << 0x04)
|
||||
#define DMG_ARROW_NORMAL (1 << 0x05)
|
||||
#define DMG_HAMMER_SWING (1 << 0x06)
|
||||
#define DMG_HOOKSHOT (1 << 0x07)
|
||||
#define DMG_SLASH_KOKIRI (1 << 0x08)
|
||||
#define DMG_SLASH_MASTER (1 << 0x09)
|
||||
#define DMG_SLASH_GIANT (1 << 0x0A)
|
||||
#define DMG_ARROW_FIRE (1 << 0x0B)
|
||||
#define DMG_ARROW_ICE (1 << 0x0C)
|
||||
#define DMG_ARROW_LIGHT (1 << 0x0D)
|
||||
#define DMG_ARROW_UNK1 (1 << 0x0E)
|
||||
#define DMG_ARROW_UNK2 (1 << 0x0F)
|
||||
#define DMG_ARROW_UNK3 (1 << 0x10)
|
||||
#define DMG_MAGIC_FIRE (1 << 0x11)
|
||||
#define DMG_MAGIC_ICE (1 << 0x12)
|
||||
#define DMG_MAGIC_LIGHT (1 << 0x13)
|
||||
#define DMG_SHIELD (1 << 0x14)
|
||||
#define DMG_MIR_RAY (1 << 0x15)
|
||||
#define DMG_SPIN_KOKIRI (1 << 0x16)
|
||||
#define DMG_SPIN_GIANT (1 << 0x17)
|
||||
#define DMG_SPIN_MASTER (1 << 0x18)
|
||||
#define DMG_JUMP_KOKIRI (1 << 0x19)
|
||||
#define DMG_JUMP_GIANT (1 << 0x1A)
|
||||
#define DMG_JUMP_MASTER (1 << 0x1B)
|
||||
#define DMG_UNKNOWN_1 (1 << 0x1C)
|
||||
#define DMG_UNBLOCKABLE (1 << 0x1D)
|
||||
#define DMG_HAMMER_JUMP (1 << 0x1E)
|
||||
#define DMG_UNKNOWN_2 (1 << 0x1F)
|
||||
|
||||
#define DMG_SLASH (DMG_SLASH_KOKIRI | DMG_SLASH_MASTER | DMG_SLASH_GIANT)
|
||||
#define DMG_SPIN_ATTACK (DMG_SPIN_KOKIRI | DMG_SPIN_MASTER | DMG_SPIN_GIANT)
|
||||
#define DMG_JUMP_SLASH (DMG_JUMP_KOKIRI | DMG_JUMP_MASTER | DMG_JUMP_GIANT)
|
||||
#define DMG_SWORD (DMG_SLASH | DMG_SPIN_ATTACK | DMG_JUMP_SLASH)
|
||||
#define DMG_HAMMER (DMG_HAMMER_SWING | DMG_HAMMER_JUMP)
|
||||
#define DMG_FIRE (DMG_ARROW_FIRE | DMG_MAGIC_FIRE)
|
||||
#define DMG_ARROW (DMG_ARROW_NORMAL | DMG_ARROW_FIRE | DMG_ARROW_ICE | DMG_ARROW_LIGHT | DMG_ARROW_UNK1 | DMG_ARROW_UNK2 | DMG_ARROW_UNK3)
|
||||
#define DMG_RANGED (DMG_ARROW | DMG_HOOKSHOT | DMG_SLINGSHOT)
|
||||
#define DMG_DEFAULT ~(DMG_SHIELD | DMG_MIR_RAY)
|
||||
|
||||
#endif
|
285
soh/include/z64cutscene.h
Normal file
285
soh/include/z64cutscene.h
Normal file
|
@ -0,0 +1,285 @@
|
|||
#ifndef Z64CUTSCENE_H
|
||||
#define Z64CUTSCENE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 entrance; // entrance index upon which the cutscene should trigger
|
||||
/* 0x02 */ u8 ageRestriction; // 0 for adult only, 1 for child only, 2 for both ages
|
||||
/* 0x03 */ u8 flag; // eventChkInf flag bound to the entrance cutscene
|
||||
/* 0x04 */ void* segAddr; // segment offset location of the cutscene
|
||||
} EntranceCutscene; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 continueFlag;
|
||||
/* 0x01 */ s8 cameraRoll;
|
||||
/* 0x02 */ u16 nextPointFrame;
|
||||
/* 0x04 */ f32 viewAngle; // in degrees
|
||||
/* 0x08 */ Vec3s pos;
|
||||
} CutsceneCameraPoint; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f at;
|
||||
/* 0x0C */ Vec3f eye;
|
||||
/* 0x18 */ s16 roll;
|
||||
/* 0x1A */ s16 fov;
|
||||
} CutsceneCameraAngle; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ CutsceneCameraPoint* atPoints;
|
||||
/* 0x4 */ CutsceneCameraPoint* eyePoints;
|
||||
/* 0x8 */ s16 relativeToPlayer;
|
||||
} CutsceneCameraMove; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 base;
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
} CsCmdBase; // size = 0x6
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 unk_00;
|
||||
/* 0x01 */ u8 setting;
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
} CsCmdEnvLighting; // size = 0x6
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 sequence;
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
} CsCmdMusicChange; // size = 0x6
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 type;
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
} CsCmdMusicFade; // size = 0x6
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 unk_00;
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
/* 0x06 */ u8 unk_06;
|
||||
/* 0x07 */ u8 unk_07;
|
||||
/* 0x08 */ u8 unk_08;
|
||||
} CsCmdUnknown9; // size = 0xA
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 unk_00;
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
/* 0x06 */ u8 hour;
|
||||
/* 0x07 */ u8 minute;
|
||||
} CsCmdDayTime; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 base;
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
/* 0x06 */ u16 type;
|
||||
/* 0x08 */ u16 textId1;
|
||||
/* 0x0A */ u16 textId2;
|
||||
} CsCmdTextbox; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 action; // "dousa"
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
union {
|
||||
/* 0x06 */ Vec3s rot;
|
||||
/* 0x06 */ Vec3us urot;
|
||||
};
|
||||
/* 0x0C */ Vec3i startPos;
|
||||
/* 0x18 */ Vec3i endPos;
|
||||
/* 0x24 */ Vec3i normal;
|
||||
} CsCmdActorAction; // size = 0x30
|
||||
|
||||
typedef enum {
|
||||
CS_STATE_IDLE,
|
||||
CS_STATE_SKIPPABLE_INIT,
|
||||
CS_STATE_SKIPPABLE_EXEC,
|
||||
CS_STATE_UNSKIPPABLE_INIT,
|
||||
CS_STATE_UNSKIPPABLE_EXEC
|
||||
} CutsceneState;
|
||||
|
||||
typedef enum {
|
||||
CS_CMD_00 = 0x0000,
|
||||
CS_CMD_CAM_EYE = 0x0001,
|
||||
CS_CMD_CAM_AT = 0x0002,
|
||||
CS_CMD_MISC = 0x0003,
|
||||
CS_CMD_SET_LIGHTING = 0x0004,
|
||||
CS_CMD_CAM_EYE_REL_TO_PLAYER = 0x0005,
|
||||
CS_CMD_CAM_AT_REL_TO_PLAYER = 0x0006,
|
||||
CS_CMD_07 = 0x0007,
|
||||
CS_CMD_08 = 0x0008,
|
||||
CS_CMD_09 = 0x0009,
|
||||
CS_CMD_TEXTBOX = 0x0013,
|
||||
CS_CMD_SET_PLAYER_ACTION = 0x000A,
|
||||
CS_CMD_SET_ACTOR_ACTION_1 = 0x000F,
|
||||
CS_CMD_SET_ACTOR_ACTION_2 = 0x000E,
|
||||
CS_CMD_SET_ACTOR_ACTION_3 = 0x0019,
|
||||
CS_CMD_SET_ACTOR_ACTION_4 = 0x001D,
|
||||
CS_CMD_SET_ACTOR_ACTION_5 = 0x001E,
|
||||
CS_CMD_SET_ACTOR_ACTION_6 = 0x002C,
|
||||
CS_CMD_SET_ACTOR_ACTION_7 = 0x001F,
|
||||
CS_CMD_SET_ACTOR_ACTION_8 = 0x0031,
|
||||
CS_CMD_SET_ACTOR_ACTION_9 = 0x003E,
|
||||
CS_CMD_SET_ACTOR_ACTION_10 = 0x008F,
|
||||
CS_CMD_SCENE_TRANS_FX = 0x002D,
|
||||
CS_CMD_NOP = 0x000B,
|
||||
CS_CMD_PLAYBGM = 0x0056,
|
||||
CS_CMD_STOPBGM = 0x0057,
|
||||
CS_CMD_FADEBGM = 0x007C,
|
||||
CS_CMD_SETTIME = 0x008C,
|
||||
CS_CMD_TERMINATOR = 0x03E8,
|
||||
CS_CMD_END = 0xFFFF
|
||||
} CutsceneCmd;
|
||||
|
||||
/**
|
||||
* Special type for blocks of cutscene data, asm-processor checks
|
||||
* arrays for CutsceneData type and converts floats within the array
|
||||
* to their IEEE-754 representation. The array must close with };
|
||||
* on its own line.
|
||||
*
|
||||
* Files that contain this type that are included in other C files
|
||||
* must include an 'EARLY' qualifier to inform asm-processor that it
|
||||
* must recursively process that include.
|
||||
*
|
||||
* Example: #include "file.c" EARLY
|
||||
*/
|
||||
typedef union CutsceneData {
|
||||
s32 i;
|
||||
f32 f;
|
||||
s16 s[2];
|
||||
s8 b[4];
|
||||
} CutsceneData;
|
||||
|
||||
#define CS_CMD_CONTINUE 0
|
||||
#define CS_CMD_STOP -1
|
||||
|
||||
// TODO confirm correctness, clarify names
|
||||
typedef enum {
|
||||
/* 0x00 */ INVALID_DESTINATION_0,
|
||||
/* 0x01 */ CUTSCENE_MAP_GANON_HORSE,
|
||||
/* 0x02 */ CUTSCENE_MAP_THREE_GODESSES_POST_DEKU_TREE,
|
||||
/* 0x03 */ GERUDO_VALLEY_DIN,
|
||||
/* 0x04 */ DEATH_MOUNTAIN_TRAIL_NAYRU,
|
||||
/* 0x05 */ KOKIRI_FOREST_FARORE,
|
||||
/* 0x06 */ CUTSCENE_MAP_TRIFORCE_CREATION,
|
||||
/* 0x07 */ KOKIRI_FOREST_RECEIVE_KOKIRI_EMERALD,
|
||||
/* 0x08 */ TEMPLE_OF_TIME_AFTER_USE_MS,
|
||||
/* 0x09 */ GERUDO_VALLEY_DIN_2,
|
||||
/* 0x0A */ LINKS_HOUSE_INTRO,
|
||||
/* 0x0B */ KOKIRI_FOREST_INTRO,
|
||||
/* 0x0C */ DEATH_MOUNTAIN_TRAIL_AFTER_GORON_RUBY,
|
||||
/* 0x0D */ ZORAS_FOUNTAIN_AFTER_ZORAS_SAPPHIRE,
|
||||
/* 0x0E */ KOKIRI_FOREST_AFTER_KOKIRI_EMERALD,
|
||||
/* 0x0F */ TEMPLE_OF_TIME_KOKIRI_EMERALD, //unused
|
||||
/* 0x10 */ TEMPLE_OF_TIME_GORON_RUBY, //unused
|
||||
/* 0x11 */ TEMPLE_OF_TIME_ZORAS_SAPPHIRE, //unused
|
||||
/* 0x12 */ TEMPLE_OF_TIME_AFTER_USE_MS_FIRST,
|
||||
/* 0x13 */ DEATH_MOUNTAIN_TRAIL_AFTER_INTRO,
|
||||
/* 0x14 */ INVALID_DESTINATION_14,
|
||||
/* 0x15 */ LAKE_HYLIA_WATER_RISES,
|
||||
/* 0x16 */ DESERT_COLOSSUS_REQUIEM,
|
||||
/* 0x17 */ CUTSCENE_MAP_CURSE_YOU,
|
||||
/* 0x18 */ JABU_JABU_INTRO,
|
||||
/* 0x19 */ CHAMBER_OF_SAGES_LIGHT_MEDALLION,
|
||||
/* 0x1A */ TEMPLE_OF_TIME_KOKIRI_EMERALD_2, //duplicate of 0x000F
|
||||
/* 0x1B */ TEMPLE_OF_TIME_GORON_RUBY_2, //duplicate of 0x0010
|
||||
/* 0x1C */ TEMPLE_OF_TIME_ZORAS_SAPPHIRE_2, //duplicate of 0x0011
|
||||
/* 0x1D */ CHAMBER_OF_SAGES_FOREST_MEDALLION,
|
||||
/* 0x1E */ CHAMBER_OF_SAGES_FIRE_MEDALLION,
|
||||
/* 0x1F */ CHAMBER_OF_SAGES_WATER_MEDALLION,
|
||||
/* 0x20 */ HYRULE_FIELD_FLASHBACK, //lacs part 4
|
||||
/* 0x21 */ HYRULE_FIELD_AFTER_LAKE_HYLIA_OWL,
|
||||
/* 0x22 */ CUTSCENE_MAP_GANON_AFTER_USE_MS,
|
||||
/* 0x23 */ HYRULE_FIELD_INTRO_ZELDA_ESCAPE,
|
||||
/* 0x24 */ INVALID_DESTINATION_24,
|
||||
/* 0x25 */ INVALID_DESTINATION_25,
|
||||
/* 0x26 */ CUTSCENE_MAP_SHEIKAH_LEGEND, //lacs part 2
|
||||
/* 0x27 */ TEMPLE_OF_TIME_ZELDA_REVEAL, //lacs part 3
|
||||
/* 0x28 */ TEMPLE_OF_TIME_GET_LIGHT_ARROWS, //lacs part 5
|
||||
/* 0x29 */ LAKE_HYLIA_AFTER_BLUE_WARP,
|
||||
/* 0x2A */ KAKARIKO_VILLAGE_DRAIN_WELL,
|
||||
/* 0x2B */ WINDMILL_AFTER_DRAIN_WELL,
|
||||
/* 0x2C */ TEMPLE_OF_TIME_AFTER_DOOR_OF_TIME_OPENS,
|
||||
/* 0x2D */ INVALID_DESTINATION_2D,
|
||||
/* 0x2E */ TEMPLE_OF_TIME_AFTER_USE_MS_FIRST_2, // duplicate of 0x0012
|
||||
/* 0x2F */ KAKARIKO_VILLAGE_NOCTURNE_PART_2,
|
||||
/* 0x30 */ DESERT_COLOSSUS_AFTER_REQUIEM,
|
||||
/* 0x31 */ TEMPLE_OF_TIME_AFTER_LIGHT_ARROWS,
|
||||
/* 0x32 */ KAKARIKO_VILLAGE_AFTER_NOCTURNE,
|
||||
/* 0x33 */ HYRULE_FIELD_IMPA_ESCORT_CS,
|
||||
/* 0x34 */ TEMPLE_OF_TIME_SONG_OF_TIME,
|
||||
/* 0x35 */ HYRULE_FIELD_AFTER_SONG_OF_TIME,
|
||||
/* 0x36 */ GERUDO_VALLEY_CREDITS,
|
||||
/* 0x37 */ GERUDO_FORTRESS_CREDITS,
|
||||
/* 0x38 */ KAKARIKO_VILLAGE_CREDITS,
|
||||
/* 0x39 */ DEATH_MOUNTAIN_TRAIL_CREDITS_1,
|
||||
/* 0x3A */ GORON_CITY_CREDITS, // unused?
|
||||
/* 0x3B */ LAKE_HYLIA_CREDITS,
|
||||
/* 0x3C */ ZORAS_FOUNTAIN_CREDITS, // unused
|
||||
/* 0x3D */ ZORAS_DOMAIN_CREDITS,
|
||||
/* 0x3E */ KOKIRI_FOREST_CREDITS_1,
|
||||
/* 0x3F */ KOKIRI_FOREST_CREDITS_2,
|
||||
/* 0x40 */ HYRULE_FIELD_CREDITS,
|
||||
/* 0x41 */ LON_LON_RANCH_CREDITS_1,
|
||||
/* 0x42 */ KAKARIKO_VILLAGE_AFTER_TRAIL_OWL,
|
||||
/* 0x43 */ HTRULE_FIELD_UNUSED_ENTRANCE,
|
||||
/* 0x44 */ CUTSCENE_MAP_FIRE,
|
||||
/* 0x45 */ KOKIRI_FOREST_POST_FOREST_MEDALLION,
|
||||
/* 0x46 */ DEATH_MOUNTAIN_TRAIL_CREDITS_2,
|
||||
/* 0x47 */ TEMPLE_OF_TIME_CREDITS,
|
||||
/* 0x48 */ ZELDAS_COURTYARD_CREDITS,
|
||||
/* 0x49 */ LON_LON_RANCH_CREDITS_1_2, // duplicate of 0x0041
|
||||
/* 0x4A */ LON_LON_RANCH_CREDITS_2,
|
||||
/* 0x4B */ LON_LON_RANCH_CREDITS_3,
|
||||
/* 0x4C */ LON_LON_RANCH_CREDITS_4,
|
||||
/* 0x4D */ LON_LON_RANCH_CREDITS_5,
|
||||
/* 0x4E */ LON_LON_RANCH_CREDITS_6,
|
||||
/* 0x4F */ LON_LON_RANCH_NO_CS_1,
|
||||
/* 0x50 */ LON_LON_RANCH_NO_CS_2,
|
||||
/* 0x51 */ LON_LON_RANCH_NO_CS_3,
|
||||
/* 0x52 */ LON_LON_RANCH_NO_CS_4,
|
||||
/* 0x53 */ LON_LON_RANCH_NO_CS_5,
|
||||
/* 0x54 */ LON_LON_RANCH_NO_CS_6,
|
||||
/* 0x55 */ LON_LON_RANCH_NO_CS_7,
|
||||
/* 0x56 */ LON_LON_RANCH_NO_CS_8,
|
||||
/* 0x57 */ LON_LON_RANCH_NO_CS_9,
|
||||
/* 0x58 */ LON_LON_RANCH_NO_CS_10,
|
||||
/* 0x59 */ LON_LON_RANCH_NO_CS_11,
|
||||
/* 0x5A */ LON_LON_RANCH_NO_CS_12,
|
||||
/* 0x5B */ LON_LON_RANCH_NO_CS_13,
|
||||
/* 0x5C */ LON_LON_RANCH_NO_CS_14,
|
||||
/* 0x5D */ LON_LON_RANCH_NO_CS_15,
|
||||
/* 0x5E */ LON_LON_RANCH_NO_CS_EPONAS_SONG,
|
||||
/* 0x5F */ CONDITIONAL_DESTINATION, // TODO more descriptive name?
|
||||
/* 0x60 */ DESERT_COLOSSUS_SPIRIT_BLUE_WARP,
|
||||
/* 0x61 */ GRAVEYARD_AFTER_SHADOW_BLUE_WARP,
|
||||
/* 0x62 */ DEATH_MOUNTAIN_CRATER_AFTER_FIRE_BLUE_WARP,
|
||||
/* 0x63 */ SACRED_FOREST_MEADOW_AFTER_FOREST_BLUE_WARP,
|
||||
/* 0x64 */ KOKIRI_FOREST_AFTER_FOREST_BLUE_WARP,
|
||||
/* 0x65 */ DESERT_COLOSSUS_AFTER_SILVER_GAUNTLETS,
|
||||
/* 0x66 */ TEMPLE_OF_TIME_FRONT_OF_PEDESTAL,
|
||||
/* 0x67 */ HYRULE_FIELD_TITLE_SCREEN,
|
||||
/* 0x68 */ SPIRIT_TEMPLE_BOSS_TITLE_SCREEN,
|
||||
/* 0x69 */ GRAVEYARD_SUNS_SONG,
|
||||
/* 0x6A */ ROYAL_FAMILYS_TOMB_SUNS_SONG,
|
||||
/* 0x6B */ GANONS_CASTLE_AFTER_FOREST_TRIAL,
|
||||
/* 0x6C */ GANONS_CASTLE_AFTER_WATER_TRIAL,
|
||||
/* 0x6D */ GANONS_CASTLE_AFTER_SHADOW_TRIAL,
|
||||
/* 0x6E */ GANONS_CASTLE_AFTER_FIRE_TRIAL,
|
||||
/* 0x6F */ GANONS_CASTLE_AFTER_LIGHT_TRIAL,
|
||||
/* 0x70 */ GANONS_CASTLE_AFTER_SPIRIT_TRIAL,
|
||||
/* 0x71 */ GANONS_CASTLE_DISPEL_BARRIER_IF_CONDITIONS,
|
||||
/* 0x72 */ HYRULE_FIELD_INTRO,
|
||||
/* 0x73 */ HYRULE_FIELD_AFTER_IMPA_ESCORT,
|
||||
/* 0x74 */ DESERT_COLOSSUS_SPIRIT_BLUE_WARP_2,
|
||||
/* 0x75 */ HYRULE_FIELD_SKY,
|
||||
/* 0x76 */ GANON_BATTLE_TOWER_COLLAPSE,
|
||||
/* 0x77 */ ZELDAS_COURTYARD_RECEIVE_LETTER
|
||||
} CutsceneTerminatorDestination;
|
||||
|
||||
#endif
|
448
soh/include/z64cutscene_commands.h
Normal file
448
soh/include/z64cutscene_commands.h
Normal file
|
@ -0,0 +1,448 @@
|
|||
#ifndef Z64CUTSCENE_COMMANDS_H
|
||||
#define Z64CUTSCENE_COMMANDS_H
|
||||
|
||||
#include "command_macros_base.h"
|
||||
#include "z64cutscene.h"
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 totalEntries (e), s32 endFrame (n)
|
||||
* FORMAT
|
||||
* eeeeeeee nnnnnnnn
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_BEGIN_CUTSCENE(totalEntries, endFrame) CMD_W(totalEntries), CMD_W(endFrame)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* 00000001 0001ssss eeee0000
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_CAM_POS_LIST CS_CAM_EYE_LIST
|
||||
#define CS_CAM_EYE_LIST(startFrame, endFrame) \
|
||||
CS_CMD_CAM_EYE, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
|
||||
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_CAM_POS CS_CAM_EYE
|
||||
#define CS_CAM_EYE(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
|
||||
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* 00000002 0001ssss eeee0000
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_CAM_FOCUS_POINT_LIST CS_CAM_AT_LIST
|
||||
#define CS_CAM_AT_LIST(startFrame, endFrame) \
|
||||
CS_CMD_CAM_AT, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
|
||||
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_CAM_FOCUS_POINT CS_CAM_AT
|
||||
#define CS_CAM_AT(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
|
||||
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 00000003 eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_MISC_LIST(entries) CS_CMD_MISC, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* uuuussss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_MISC(unk, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8, unused9, unused10) \
|
||||
CMD_HH(unk, startFrame), CMD_HH(endFrame, unused0), \
|
||||
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
|
||||
CMD_W(unused6), CMD_W(unused7), CMD_W(unused8), CMD_W(unused9), CMD_W(unused10)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 00000004 eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_LIGHTING_LIST(entries) CS_CMD_SET_LIGHTING, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 setting (m), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* mmmmssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_LIGHTING(setting, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
|
||||
CMD_HH(setting, startFrame), CMD_HH(endFrame, unused0), \
|
||||
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
|
||||
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused , may be consistently zero
|
||||
* 00000005 0001ssss eeee0000
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_CAM_POS_PLAYER_LIST CS_CAM_EYE_REL_TO_PLAYER_LIST
|
||||
#define CS_CAM_EYE_REL_TO_PLAYER_LIST(startFrame, endFrame) \
|
||||
CS_CMD_CAM_EYE_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
|
||||
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_CAM_POS_PLAYER CS_CAM_EYE_REL_TO_PLAYER
|
||||
#define CS_CAM_EYE_REL_TO_PLAYER(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
|
||||
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused , may be consistently zero
|
||||
* 00000006 0001ssss eeee0000
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_CAM_FOCUS_POINT_PLAYER_LIST CS_CAM_AT_REL_TO_PLAYER_LIST
|
||||
#define CS_CAM_AT_REL_TO_PLAYER_LIST(startFrame, endFrame) \
|
||||
CS_CMD_CAM_AT_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
|
||||
/**
|
||||
* ARGS
|
||||
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
|
||||
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_CAM_FOCUS_POINT_PLAYER CS_CAM_AT_REL_TO_PLAYER
|
||||
#define CS_CAM_AT_REL_TO_PLAYER(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
|
||||
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* 00000007 uuuussss eeeeUUUU
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_CMD_07_LIST(unk, startFrame, endFrame, unused) \
|
||||
CS_CMD_07, CMD_HH(unk, startFrame), CMD_HH(endFrame, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
|
||||
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_CMD_07(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
|
||||
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* 00000008 uuuussss eeeeUUUU
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_CMD_08_LIST(unk, startFrame, endFrame, unused) \
|
||||
CS_CMD_08, CMD_HH(unk, startFrame), CMD_HH(endFrame, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
|
||||
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_CMD_08(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
|
||||
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 00000009 eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_CMD_09_LIST(entries) CS_CMD_09, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 unk (u), s16 startFrame (s), s16 endFrame (e), s16 unk2 (v), s16 unk3 (w), s16 unk4 (x)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* uuuussss eeeevvww xxUUUUUU
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_CMD_09(unk, startFrame, endFrame, unk2, unk3, unk4, unused0, unused1) \
|
||||
CMD_HH(unk, startFrame), CMD_HBB(endFrame, unk2, unk3), CMD_BBH(unk4, unused0, unused1)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 cmdType (c), s32 entries (e)
|
||||
* FORMAT
|
||||
* cccccccc eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_UNK_DATA_LIST(cmdType, entries) CMD_W(cmdType), CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 unk1 (a), s32 unk2 (b), s32 unk3 (c), s32 unk4 (d), s32 unk5 (e), s32 unk6 (f),
|
||||
* s32 unk7 (g), s32 unk8 (h), s32 unk9 (i), s32 unk10 (j), s32 unk11 (k), s32 unk12 (l)
|
||||
* FORMAT
|
||||
* aaaaaaaa bbbbbbbb cccccccc dddddddd eeeeeeee ffffffff gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_UNK_DATA(unk1, unk2, unk3, unk4, unk5, unk6, unk7, unk8, unk9, unk10, unk11, unk12) \
|
||||
CMD_W(unk1), CMD_W(unk2), CMD_W(unk3), CMD_W(unk4), CMD_W(unk5), CMD_W(unk6), \
|
||||
CMD_W(unk7), CMD_W(unk8), CMD_W(unk9), CMD_W(unk10), CMD_W(unk11), CMD_W(unk12)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 cmdType (c), s32 entries (e)
|
||||
* FORMAT
|
||||
* cccccccc eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_NPC_ACTION_LIST(cmdType, entries) CMD_W(cmdType), CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 npcAction (a), s16 startFrame (s), s16 endFrame (e),
|
||||
* s16 rotX (u), s16 rotY (v), s16 rotZ (w),
|
||||
* s32 startX (i), s32 startY (j), s32 startZ (k),
|
||||
* s32 endX (l), s32 endY (m), s32 endZ (n),
|
||||
* f32 normX (x), f32 normY (y), f32 normZ (z),
|
||||
* FORMAT
|
||||
* aaaassss eeeeuuuu vvvvwwww iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmm nnnnnnnn xxxxxxxx yyyyyyyy zzzzzzzz
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_NPC_ACTION(npcAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ) \
|
||||
CMD_HH(npcAction, startFrame), CMD_HH(endFrame, rotX), CMD_HH(rotY, rotZ), \
|
||||
CMD_W(startX), CMD_W(startY), CMD_W(startZ), \
|
||||
CMD_W(endX), CMD_W(endY), CMD_W(endZ), \
|
||||
CMD_F(normX), CMD_F(normY), CMD_F(normZ)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 cmdType (c), s32 entries (e)
|
||||
* FORMAT
|
||||
* cccccccc eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_PLAYER_ACTION_LIST(entries) CS_CMD_SET_PLAYER_ACTION, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 linkAction (a), s16 startFrame (s), s16 endFrame (e),
|
||||
* s16 rotX (u), s16 rotY (v), s16 rotZ (w),
|
||||
* s32 startX (i), s32 startY (j), s32 startZ (k),
|
||||
* s32 endX (l), s32 endY (m), s32 endZ (n),
|
||||
* f32 normX (x), f32 normY (y), f32 normZ (z),
|
||||
* FORMAT
|
||||
* aaaassss eeeeuuuu vvvvwwww iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmm nnnnnnnn xxxxxxxx yyyyyyyy zzzzzzzz
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_PLAYER_ACTION(linkAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ) \
|
||||
CS_NPC_ACTION(linkAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 00000013 eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_TEXT_LIST(entries) CS_CMD_TEXTBOX, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 messageId (i), s16 startFrame (s), s16 endFrame (e), s16 type (o),
|
||||
* s16 topOptionBranch (y), s16 bottomOptionBranch (n)
|
||||
* FORMAT
|
||||
* iiiissss eeeeoooo yyyynnnn
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_TEXT_DISPLAY_TEXTBOX(messageId, startFrame, endFrame, type, topOptionBranch, bottomOptionBranch) \
|
||||
CMD_HH(messageId, startFrame), CMD_HH(endFrame, type), CMD_HH(topOptionBranch, bottomOptionBranch)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* FFFFssss eeeeFFFF FFFFFFFF
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_TEXT_NONE(startFrame, endFrame) \
|
||||
CS_TEXT_DISPLAY_TEXTBOX(0xFFFF, startFrame, endFrame, 0xFFFF, 0xFFFF, 0xFFFF)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 ocarinaSongAction (o), s16 startFrame (s), s16 endFrame (e), s16 topOptionBranch (i)
|
||||
* FORMAT
|
||||
* oooossss eeee0002 iiiiFFFF
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_TEXT_LEARN_SONG(ocarinaSongAction, startFrame, endFrame, messageId) \
|
||||
CS_TEXT_DISPLAY_TEXTBOX(ocarinaSongAction, startFrame, endFrame, 0x0002, messageId, 0xFFFF)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 transitionType (t), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused , endFrame duplicate
|
||||
* 0000002D 00000001 ttttssss eeeeUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_SCENE_TRANS_FX(transitionType, startFrame, endFrame) \
|
||||
CS_CMD_SCENE_TRANS_FX, 0x00000001, CMD_HH(transitionType, startFrame), CMD_HH(endFrame, endFrame)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 00000056 eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_PLAY_BGM_LIST(entries) CS_CMD_PLAYBGM, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 sequence (q), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* qqqqssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_PLAY_BGM(sequence, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
|
||||
CMD_HH(sequence, startFrame), CMD_HH(endFrame, unused0), \
|
||||
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
|
||||
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 00000057 eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_STOP_BGM_LIST(entries) CS_CMD_STOPBGM, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 sequence (q), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* uuqqssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_STOP_BGM(sequence, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
|
||||
CMD_HH(sequence, startFrame), CMD_HH(endFrame, unused0), \
|
||||
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
|
||||
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 0000007C eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_FADE_BGM_LIST(entries) CS_CMD_FADEBGM, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 fadeType (t), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* ttttssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
|
||||
* size = 0x30
|
||||
*/
|
||||
#define CS_FADE_BGM(fadeType, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
|
||||
CMD_HH(fadeType, startFrame), CMD_HH(endFrame, unused0), \
|
||||
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
|
||||
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 entries (e)
|
||||
* FORMAT
|
||||
* 0000008C eeeeeeee
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_TIME_LIST(entries) CS_CMD_SETTIME, CMD_W(entries)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s16 unk (u), s16 startFrame (s), s16 endFrame (e), s8 hour (h), s8 min (m)
|
||||
* FORMAT
|
||||
* Capital U is Unused
|
||||
* uuuussss eeeehhmm UUUUUUUU
|
||||
* size = 0xC
|
||||
*/
|
||||
#define CS_TIME(unk, startFrame, endFrame, hour, min, unused) \
|
||||
CMD_HH(unk, startFrame), \
|
||||
CMD_HBB(endFrame, hour, min), \
|
||||
CMD_W(unused)
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* CutsceneTerminatorDestination dest (d), s16 startFrame (s), s16 endFrame (e)
|
||||
* FORMAT
|
||||
* Capital U is Unused , endFrame duplicate
|
||||
* 000003E8 00000001 ddddssss eeeeUUUU
|
||||
* size = 0x10
|
||||
*/
|
||||
#define CS_TERMINATOR(dest, startFrame, endFrame) \
|
||||
CS_CMD_TERMINATOR, 0x00000001, CMD_HH(dest, startFrame), CMD_HH(endFrame, endFrame)
|
||||
|
||||
/**
|
||||
* Marks the end of a cutscene
|
||||
*/
|
||||
#define CS_END() 0xFFFFFFFF, 0x00000000
|
||||
|
||||
#endif
|
24
soh/include/z64dma.h
Executable file
24
soh/include/z64dma.h
Executable file
|
@ -0,0 +1,24 @@
|
|||
#ifndef Z64_DMA_H
|
||||
#define Z64_DMA_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uintptr_t vromAddr; // VROM address (source)
|
||||
/* 0x04 */ void* dramAddr; // DRAM address (destination)
|
||||
/* 0x08 */ u32 size; // File Transfer size
|
||||
/* 0x0C */ const char* filename; // Filename for debugging
|
||||
/* 0x10 */ s32 line; // Line for debugging
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x18 */ OSMesgQueue* notifyQueue; // Message queue for the notification message
|
||||
/* 0x1C */ OSMesg notifyMsg; // Completion notification message
|
||||
} DmaRequest; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uintptr_t vromStart;
|
||||
/* 0x04 */ uintptr_t vromEnd;
|
||||
/* 0x08 */ uintptr_t romStart;
|
||||
/* 0x0C */ uintptr_t romEnd;
|
||||
} DmaEntry;
|
||||
|
||||
#endif
|
262
soh/include/z64effect.h
Normal file
262
soh/include/z64effect.h
Normal file
|
@ -0,0 +1,262 @@
|
|||
#ifndef Z64EFFECT_H
|
||||
#define Z64EFFECT_H
|
||||
|
||||
#include "color.h"
|
||||
|
||||
struct GraphicsContext;
|
||||
struct GlobalContext;
|
||||
|
||||
/* Effects */
|
||||
|
||||
#define SPARK_COUNT 3
|
||||
#define BLURE_COUNT 25
|
||||
#define SHIELD_PARTICLE_COUNT 3
|
||||
|
||||
#define TOTAL_EFFECT_COUNT SPARK_COUNT + BLURE_COUNT + SHIELD_PARTICLE_COUNT
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 active;
|
||||
/* 0x01 */ u8 unk_01;
|
||||
/* 0x02 */ u8 unk_02;
|
||||
} EffectStatus; // size = 0x03
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f velocity;
|
||||
/* 0x0C */ Vec3f position;
|
||||
/* 0x18 */ Vec3s unkVelocity;
|
||||
/* 0x1E */ Vec3s unkPosition;
|
||||
} EffectSparkElement; // size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Vec3s position;
|
||||
/* 0x008 */ s32 numElements; // "table_size"; calculated as uDiv * vDiv + 2
|
||||
/* 0x00C */ EffectSparkElement elements[32];
|
||||
/* 0x48C */ f32 speed;
|
||||
/* 0x490 */ f32 gravity;
|
||||
/* 0x494 */ u32 uDiv; // "u_div"
|
||||
/* 0x498 */ u32 vDiv; // "v_div"
|
||||
/* 0x49C */ Color_RGBA8 colorStart[4];
|
||||
/* 0x4AC */ Color_RGBA8 colorEnd[4];
|
||||
/* 0x4BC */ s32 timer;
|
||||
/* 0x4C0 */ s32 duration;
|
||||
} EffectSparkInit; // size = 0x4C4
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Vec3s position;
|
||||
/* 0x008 */ s32 numElements; // "table_size"; calculated as uDiv * vDiv + 2
|
||||
/* 0x00C */ EffectSparkElement elements[32];
|
||||
/* 0x48C */ f32 speed;
|
||||
/* 0x490 */ f32 gravity;
|
||||
/* 0x494 */ u32 uDiv; // "u_div"
|
||||
/* 0x498 */ u32 vDiv; // "v_div"
|
||||
/* 0x49C */ Color_RGBA8 colorStart[4];
|
||||
/* 0x4AC */ Color_RGBA8 colorEnd[4];
|
||||
/* 0x4BC */ s32 timer;
|
||||
/* 0x4C0 */ s32 duration;
|
||||
} EffectSpark; // size = 0x4C4
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 state;
|
||||
/* 0x04 */ s32 timer;
|
||||
/* 0x08 */ Vec3s p1;
|
||||
/* 0x0E */ Vec3s p2;
|
||||
/* 0x14 */ u16 flags;
|
||||
} EffectBlureElement; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ char unk_00[0x184];
|
||||
/* 0x184 */ u8 p1StartColor[4];
|
||||
/* 0x188 */ u8 p2StartColor[4];
|
||||
/* 0x18C */ u8 p1EndColor[4];
|
||||
/* 0x190 */ u8 p2EndColor[4];
|
||||
/* 0x194 */ s32 elemDuration;
|
||||
/* 0x198 */ s32 unkFlag;
|
||||
/* 0x19C */ s32 calcMode;
|
||||
} EffectBlureInit1; // size = 0x1A0
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 calcMode;
|
||||
/* 0x04 */ u16 flags;
|
||||
/* 0x06 */ s16 addAngleChange;
|
||||
/* 0x08 */ u8 p1StartColor[4];
|
||||
/* 0x0C */ u8 p2StartColor[4];
|
||||
/* 0x10 */ u8 p1EndColor[4];
|
||||
/* 0x14 */ u8 p2EndColor[4];
|
||||
/* 0x18 */ u8 elemDuration;
|
||||
/* 0x19 */ u8 unkFlag;
|
||||
/* 0x1A */ u8 drawMode; // 0: simple; 1: simple with alt colors; 2+: smooth
|
||||
/* 0x1B */ u8 mode4Param;
|
||||
/* 0x1C */ Color_RGBA8 altPrimColor; // used with drawMode 1
|
||||
/* 0x20 */ Color_RGBA8 altEnvColor; // used with drawMode 1
|
||||
} EffectBlureInit2; // size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ EffectBlureElement elements[16];
|
||||
/* 0x180 */ s32 calcMode;
|
||||
/* 0x184 */ f32 mode4Param;
|
||||
/* 0x188 */ u16 flags;
|
||||
/* 0x18A */ s16 addAngleChange;
|
||||
/* 0x18C */ s16 addAngle;
|
||||
/* 0x18E */ Color_RGBA8 p1StartColor;
|
||||
/* 0x192 */ Color_RGBA8 p2StartColor;
|
||||
/* 0x196 */ Color_RGBA8 p1EndColor;
|
||||
/* 0x19A */ Color_RGBA8 p2EndColor;
|
||||
/* 0x19E */ u8 numElements; // "now_edge_num"
|
||||
/* 0x19F */ u8 elemDuration;
|
||||
/* 0x1A0 */ u8 unkFlag;
|
||||
/* 0x1A1 */ u8 drawMode; // 0: simple; 1: simple with alt colors; 2+: smooth
|
||||
/* 0x1A2 */ Color_RGBA8 altPrimColor; // used with drawMode 1
|
||||
/* 0x1A6 */ Color_RGBA8 altEnvColor; // used with drawMode 1
|
||||
} EffectBlure; // size = 0x1AC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 initialSpeed;
|
||||
/* 0x04 */ f32 endXChange;
|
||||
/* 0x08 */ f32 endX;
|
||||
/* 0x0C */ f32 startXChange;
|
||||
/* 0x10 */ f32 startX;
|
||||
/* 0x14 */ s16 yaw;
|
||||
/* 0x16 */ s16 pitch;
|
||||
} EffectShieldParticleElement; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 numElements;
|
||||
/* 0x02 */ Vec3s position;
|
||||
/* 0x08 */ Color_RGBA8 primColorStart;
|
||||
/* 0x0C */ Color_RGBA8 envColorStart;
|
||||
/* 0x10 */ Color_RGBA8 primColorMid;
|
||||
/* 0x14 */ Color_RGBA8 envColorMid;
|
||||
/* 0x18 */ Color_RGBA8 primColorEnd;
|
||||
/* 0x1C */ Color_RGBA8 envColorEnd;
|
||||
/* 0x20 */ f32 deceleration;
|
||||
/* 0x24 */ f32 maxInitialSpeed;
|
||||
/* 0x28 */ f32 lengthCutoff;
|
||||
/* 0x2C */ u8 duration;
|
||||
/* 0x2E */ LightPoint lightPoint;
|
||||
/* 0x3C */ s32 lightDecay; // halves light radius every frame when set to 1
|
||||
} EffectShieldParticleInit; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ EffectShieldParticleElement elements[16];
|
||||
/* 0x180 */ u8 numElements;
|
||||
/* 0x182 */ Vec3s position;
|
||||
/* 0x188 */ Color_RGBA8 primColorStart;
|
||||
/* 0x18C */ Color_RGBA8 envColorStart;
|
||||
/* 0x190 */ Color_RGBA8 primColorMid;
|
||||
/* 0x194 */ Color_RGBA8 envColorMid;
|
||||
/* 0x198 */ Color_RGBA8 primColorEnd;
|
||||
/* 0x19C */ Color_RGBA8 envColorEnd;
|
||||
/* 0x1A0 */ f32 deceleration;
|
||||
/* 0x1A4 */ char unk_1A4[0x04];
|
||||
/* 0x1A8 */ f32 maxInitialSpeed;
|
||||
/* 0x1AC */ f32 lengthCutoff;
|
||||
/* 0x1B0 */ u8 duration;
|
||||
/* 0x1B1 */ u8 timer;
|
||||
/* 0x1B2 */ LightInfo lightInfo;
|
||||
/* 0x1C0 */ LightNode* lightNode;
|
||||
/* 0x1C4 */ s32 lightDecay; // halves light radius every frame when set to 1
|
||||
} EffectShieldParticle; // size = 0x1C8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ struct GlobalContext* globalCtx;
|
||||
struct {
|
||||
EffectStatus status;
|
||||
EffectSpark effect;
|
||||
} /* 0x0004 */ sparks[SPARK_COUNT];
|
||||
struct {
|
||||
EffectStatus status;
|
||||
EffectBlure effect;
|
||||
} /* 0x0E5C */ blures[BLURE_COUNT];
|
||||
struct {
|
||||
EffectStatus status;
|
||||
EffectShieldParticle effect;
|
||||
} /* 0x388C */ shieldParticles[SHIELD_PARTICLE_COUNT];
|
||||
} EffectContext; // size = 0x3DF0
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ size_t size;
|
||||
/* 0x04 */ void (*init)(void* effect, void* initParams);
|
||||
/* 0x08 */ void (*destroy)(void* effect);
|
||||
/* 0x0C */ s32 (*update)(void* effect);
|
||||
/* 0x10 */ void (*draw)(void* effect, struct GraphicsContext* gfxCtx);
|
||||
} EffectInfo; // size = 0x14
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ EFFECT_SPARK,
|
||||
/* 0x01 */ EFFECT_BLURE1,
|
||||
/* 0x02 */ EFFECT_BLURE2,
|
||||
/* 0x03 */ EFFECT_SHIELD_PARTICLE
|
||||
} EffectType;
|
||||
|
||||
/* Effect Soft Sprites */
|
||||
|
||||
struct EffectSs;
|
||||
|
||||
typedef u32 (*EffectSsInitFunc)(struct GlobalContext* globalCtx, u32 index, struct EffectSs* effectSs, void* initParams);
|
||||
typedef void (*EffectSsUpdateFunc)(struct GlobalContext* globalCtx, u32 index, struct EffectSs* effectSs);
|
||||
typedef void (*EffectSsDrawFunc)(struct GlobalContext* globalCtx, u32 index, struct EffectSs* effectSs);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 type;
|
||||
/* 0x04 */ EffectSsInitFunc init;
|
||||
} EffectSsInit; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uintptr_t vromStart;
|
||||
/* 0x04 */ uintptr_t vromEnd;
|
||||
/* 0x08 */ void* vramStart;
|
||||
/* 0x0C */ void* vramEnd;
|
||||
/* 0x10 */ void* loadedRamAddr;
|
||||
/* 0x14 */ EffectSsInit* initInfo;
|
||||
/* 0x18 */ u8 unk_18;
|
||||
} EffectSsOverlay; // size = 0x1C
|
||||
|
||||
typedef struct EffectSs {
|
||||
/* 0x00 */ Vec3f pos;
|
||||
/* 0x0C */ Vec3f velocity;
|
||||
/* 0x18 */ Vec3f accel;
|
||||
/* 0x24 */ EffectSsUpdateFunc update;
|
||||
/* 0x28 */ EffectSsDrawFunc draw;
|
||||
/* 0x2C */ Vec3f vec; // usage specific per effect
|
||||
/* 0x38 */ void* gfx; // mostly used for display lists, sometimes textures
|
||||
/* 0x3C */ Actor* actor; // interfacing actor, usually the actor that spawned the effect
|
||||
/* 0x40 */ s16 regs[13]; // specific per effect
|
||||
/* 0x5A */ u16 flags;
|
||||
/* 0x5C */ s16 life; // -1 means this entry is free
|
||||
/* 0x5E */ u8 priority; // Lower value means higher priority
|
||||
/* 0x5F */ u8 type;
|
||||
} EffectSs; // size = 0x60
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ EffectSs* table; // "data_table"
|
||||
/* 0x04 */ s32 searchStartIndex;
|
||||
/* 0x08 */ s32 tableSize;
|
||||
} EffectSsInfo; // size = 0x0C
|
||||
|
||||
/* G Effect Regs */
|
||||
|
||||
#define rgTexIdx regs[0]
|
||||
#define rgScale regs[1]
|
||||
#define rgTexIdxStep regs[2]
|
||||
#define rgPrimColorR regs[3]
|
||||
#define rgPrimColorG regs[4]
|
||||
#define rgPrimColorB regs[5]
|
||||
#define rgPrimColorA regs[6]
|
||||
#define rgEnvColorR regs[7]
|
||||
#define rgEnvColorG regs[8]
|
||||
#define rgEnvColorB regs[9]
|
||||
#define rgEnvColorA regs[10]
|
||||
#define rgObjBankIdx regs[11]
|
||||
|
||||
#define DEFINE_EFFECT_SS(_0, enum) enum,
|
||||
#define DEFINE_EFFECT_SS_UNSET(enum) enum,
|
||||
|
||||
typedef enum {
|
||||
#include "tables/effect_ss_table.h"
|
||||
/* 0x25 */ EFFECT_SS_TYPE_MAX // originally "EFFECT_SS2_TYPE_LAST_LABEL"
|
||||
} EffectSsType;
|
||||
|
||||
#undef DEFINE_EFFECT_SS
|
||||
#undef DEFINE_EFFECT_SS_UNSET
|
||||
|
||||
#endif
|
129
soh/include/z64elf_message.h
Normal file
129
soh/include/z64elf_message.h
Normal file
|
@ -0,0 +1,129 @@
|
|||
#ifndef Z64ELF_MESSAGE_H
|
||||
#define Z64ELF_MESSAGE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
// Checks the condition and exits the script if the check passes
|
||||
#define ELF_MSG_TYPE_CHECK 0
|
||||
// ? (unused)
|
||||
#define ELF_MSG_TYPE_UNK_1 1
|
||||
// ? (unused)
|
||||
#define ELF_MSG_TYPE_UNK_2 2
|
||||
// Checks the condition and skips forward by some number of commands if the check passes
|
||||
#define ELF_MSG_TYPE_SKIP 3
|
||||
// Always ends the script, returning the text id for this command
|
||||
#define ELF_MSG_TYPE_END 7
|
||||
|
||||
// Check an eventChkInf flag
|
||||
#define ELF_MSG_CONDITION_FLAG 0
|
||||
// Check a dungeon item (map, compass, boss key)
|
||||
#define ELF_MSG_CONDITION_DUNGEON_ITEM 1
|
||||
// Check if an item is in an item slot
|
||||
#define ELF_MSG_CONDITION_ITEM 2
|
||||
// "Other" conditions described below
|
||||
#define ELF_MSG_CONDITION_OTHER 3
|
||||
|
||||
// Check what strength upgrade has been obtained so far
|
||||
#define ELF_MSG_CONDITION_STRENGTH_UPG 0
|
||||
// Check if specific boots have been obtained so far
|
||||
#define ELF_MSG_CONDITION_BOOTS 1
|
||||
// Check if a particular song has been obtained
|
||||
#define ELF_MSG_CONDITION_SONG 2
|
||||
// Check if a particular medallion has been obtained
|
||||
#define ELF_MSG_CONDITION_MEDALLION 3
|
||||
// Check if the magic meter has been obtained
|
||||
#define ELF_MSG_CONDITION_MAGIC 4
|
||||
|
||||
/*
|
||||
* Bitpack byte 0
|
||||
*/
|
||||
#define ELF_MSG_B0(type, cond_type, tf) \
|
||||
_SHIFTL(ELF_MSG_TYPE_##type, 5, 3) | \
|
||||
_SHIFTL(ELF_MSG_CONDITION_##cond_type, 1, 4) | \
|
||||
_SHIFTL(tf, 0, 1)
|
||||
|
||||
/*
|
||||
* Bitpack byte 1
|
||||
*/
|
||||
#define ELF_MSG_B1(cond_type, data) \
|
||||
_SHIFTL(ELF_MSG_CONDITION_##cond_type, 4, 4) | \
|
||||
_SHIFTL(data, 0, 4)
|
||||
|
||||
/*
|
||||
* Other bytes
|
||||
*/
|
||||
#define ELF_MSG_B(data) \
|
||||
_SHIFTL(data, 0, 8)
|
||||
|
||||
/*
|
||||
* Command macros
|
||||
*/
|
||||
|
||||
#define ELF_MSG_FLAG(type, textId, tf, flag) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, FLAG, tf), \
|
||||
ELF_MSG_B(flag), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(0), \
|
||||
}
|
||||
|
||||
#define ELF_MSG_END(textId) \
|
||||
ELF_MSG_FLAG(END, textId, false, 0)
|
||||
|
||||
#define ELF_MSG_DUNGEON_ITEM(type, textId, tf, itemId) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, DUNGEON_ITEM, tf), \
|
||||
ELF_MSG_B(itemId), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(0), \
|
||||
}
|
||||
|
||||
#define ELF_MSG_ITEM(type, textId, tf, slotItemId, itemId) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, ITEM, tf), \
|
||||
ELF_MSG_B(slotItemId), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(itemId), \
|
||||
}
|
||||
|
||||
#define ELF_MSG_STRENGTH_UPG(type, textId, tf, strUpg) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, OTHER, tf), \
|
||||
ELF_MSG_B1(STRENGTH_UPG, strUpg), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(0), \
|
||||
}
|
||||
|
||||
#define ELF_MSG_BOOTS(type, textId, tf, itemId) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, OTHER, tf), \
|
||||
ELF_MSG_B1(BOOTS, 0), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(itemId), \
|
||||
}
|
||||
|
||||
#define ELF_MSG_SONG(type, textId, tf, itemId) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, OTHER, tf), \
|
||||
ELF_MSG_B1(SONG, 0), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(itemId), \
|
||||
}
|
||||
|
||||
#define ELF_MSG_MEDALLION(type, textId, tf, itemId) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, OTHER, tf), \
|
||||
ELF_MSG_B1(MEDALLION, 0), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(itemId), \
|
||||
}
|
||||
|
||||
#define ELF_MSG_MAGIC(type, textId, tf) \
|
||||
{ \
|
||||
ELF_MSG_B0(type, OTHER, tf), \
|
||||
ELF_MSG_B1(MAGIC, 0), \
|
||||
ELF_MSG_B(textId), \
|
||||
ELF_MSG_B(0), \
|
||||
}
|
||||
|
||||
#endif
|
129
soh/include/z64environment.h
Normal file
129
soh/include/z64environment.h
Normal file
|
@ -0,0 +1,129 @@
|
|||
#ifndef _Z64ENVIRONMENT_H_
|
||||
#define _Z64ENVIRONMENT_H_
|
||||
|
||||
#include "z64math.h"
|
||||
#include "z64light.h"
|
||||
#include "z64dma.h"
|
||||
|
||||
#define FILL_SCREEN_OPA (1 << 0)
|
||||
#define FILL_SCREEN_XLU (1 << 1)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ LIGHTNING_MODE_OFF, // no lightning
|
||||
/* 1 */ LIGHTNING_MODE_ON, // request ligtning strikes at random intervals
|
||||
/* 2 */ LIGHTNING_MODE_LAST // request one lightning strike before turning off
|
||||
} LightningMode;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ LIGHTNING_STRIKE_WAIT, // wait between lightning strikes. request bolts when timer hits 0
|
||||
/* 1 */ LIGHTNING_STRIKE_START, // fade in the flash. note: bolts are requested in the previous state
|
||||
/* 2 */ LIGHTNING_STRIKE_END // fade out the flash and go back to wait
|
||||
} LightningStrikeState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SKYBOX_DMA_INACTIVE,
|
||||
/* 1 */ SKYBOX_DMA_FILE1_START,
|
||||
/* 2 */ SKYBOX_DMA_FILE1_DONE,
|
||||
/* 3 */ SKYBOX_DMA_PAL1_START,
|
||||
/* 11 */ SKYBOX_DMA_FILE2_START = 11,
|
||||
/* 12 */ SKYBOX_DMA_FILE2_DONE,
|
||||
/* 13 */ SKYBOX_DMA_PAL2_START
|
||||
} SkyboxDmaState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 state;
|
||||
/* 0x01 */ u8 flashRed;
|
||||
/* 0x02 */ u8 flashGreen;
|
||||
/* 0x03 */ u8 flashBlue;
|
||||
/* 0x04 */ u8 flashAlphaTarget;
|
||||
/* 0x08 */ f32 delayTimer;
|
||||
} LightningStrike; // size = 0xC
|
||||
|
||||
// describes what skybox files and blending modes to use depending on time of day
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 startTime;
|
||||
/* 0x02 */ u16 endTime;
|
||||
/* 0x04 */ u8 blend; // if true, blend between.. skyboxes? palettes?
|
||||
/* 0x05 */ u8 skybox1Index; // whats the difference between _pal and non _pal files?
|
||||
/* 0x06 */ u8 skybox2Index;
|
||||
} struct_8011FC1C; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 ambientColor[3];
|
||||
/* 0x03 */ s8 light1Dir[3];
|
||||
/* 0x06 */ u8 light1Color[3];
|
||||
/* 0x09 */ s8 light2Dir[3];
|
||||
/* 0x0C */ u8 light2Color[3];
|
||||
/* 0x0F */ u8 fogColor[3];
|
||||
/* 0x12 */ s16 fogNear;
|
||||
/* 0x14 */ s16 fogFar;
|
||||
} EnvLightSettings; // size = 0x16
|
||||
|
||||
// 1.0: 801D8EC4
|
||||
// dbg: 80222A44
|
||||
typedef struct {
|
||||
/* 0x00 */ char unk_00[0x02];
|
||||
/* 0x02 */ u16 timeIncrement; // how many units of time that pass every update
|
||||
/* 0x04 */ Vec3f sunPos; // moon position can be found by negating the sun position
|
||||
/* 0x10 */ u8 skybox1Index;
|
||||
/* 0x11 */ u8 skybox2Index;
|
||||
/* 0x12 */ char unk_12[0x01];
|
||||
/* 0x13 */ u8 skyboxBlend;
|
||||
/* 0x14 */ char unk_14[0x01];
|
||||
/* 0x15 */ u8 skyboxDisabled;
|
||||
/* 0x16 */ u8 sunMoonDisabled;
|
||||
/* 0x17 */ u8 unk_17; // currentWeatherMode for skybox? (prev called gloomySky)
|
||||
/* 0x18 */ u8 unk_18; // nextWeatherMode for skybox?
|
||||
/* 0x19 */ u8 unk_19;
|
||||
/* 0x1A */ u16 unk_1A;
|
||||
/* 0x1C */ char unk_1C[0x02];
|
||||
/* 0x1E */ u8 indoors; // when set, day time has no effect on lighting
|
||||
/* 0x1F */ u8 unk_1F; // outdoor light index
|
||||
/* 0x20 */ u8 unk_20; // prev outdoor light index?
|
||||
/* 0x21 */ u8 unk_21;
|
||||
/* 0x22 */ u16 unk_22;
|
||||
/* 0x24 */ u16 unk_24;
|
||||
/* 0x26 */ char unk_26[0x02];
|
||||
/* 0x28 */ LightInfo dirLight1; // used for sunlight outdoors
|
||||
/* 0x36 */ LightInfo dirLight2; // used for moonlight outdoors
|
||||
/* 0x44 */ s8 skyboxDmaState;
|
||||
/* 0x48 */ DmaRequest dmaRequest;
|
||||
/* 0x68 */ OSMesgQueue loadQueue;
|
||||
/* 0x80 */ OSMesg loadMsg;
|
||||
/* 0x84 */ f32 unk_84;
|
||||
/* 0x88 */ f32 unk_88;
|
||||
/* 0x8C */ s16 adjAmbientColor[3];
|
||||
/* 0x92 */ s16 adjLight1Color[3];
|
||||
/* 0x98 */ s16 adjFogColor[3];
|
||||
/* 0x9E */ s16 adjFogNear;
|
||||
/* 0xA0 */ s16 adjFogFar;
|
||||
/* 0xA2 */ char unk_A2[0x06];
|
||||
/* 0xA8 */ Vec3s windDirection;
|
||||
/* 0xB0 */ f32 windSpeed;
|
||||
/* 0xB4 */ u8 numLightSettings;
|
||||
/* 0xB8 */ EnvLightSettings* lightSettingsList; // list of light settings from the scene file
|
||||
/* 0xBC */ u8 blendIndoorLights; // when true, blend between indoor light settings when switching
|
||||
/* 0xBD */ u8 unk_BD; // indoor light index
|
||||
/* 0xBE */ u8 unk_BE; // prev indoor light index?
|
||||
/* 0xBF */ u8 unk_BF;
|
||||
/* 0xC0 */ EnvLightSettings lightSettings;
|
||||
/* 0xD6 */ u16 unk_D6;
|
||||
/* 0xD8 */ f32 unk_D8; // indoor light blend weight?
|
||||
/* 0xDC */ u8 unk_DC;
|
||||
/* 0xDD */ u8 gloomySkyMode;
|
||||
/* 0xDE */ u8 unk_DE; // gloomy sky state
|
||||
/* 0xDF */ u8 lightningMode;
|
||||
/* 0xE0 */ u8 unk_E0; // env sounds state
|
||||
/* 0xE1 */ u8 fillScreen;
|
||||
/* 0xE2 */ u8 screenFillColor[4];
|
||||
/* 0xE6 */ u8 sandstormState;
|
||||
/* 0xE7 */ u8 sandstormPrimA;
|
||||
/* 0xE8 */ u8 sandstormEnvA;
|
||||
/* 0xE9 */ u8 customSkyboxFilter;
|
||||
/* 0xEA */ u8 skyboxFilterColor[4];
|
||||
/* 0xEE */ u8 unk_EE[4];
|
||||
/* 0xF2 */ u8 unk_F2[4];
|
||||
/* 0xF6 */ char unk_F6[0x06];
|
||||
} EnvironmentContext; // size = 0xFC
|
||||
|
||||
#endif
|
71
soh/include/z64interface.h
Normal file
71
soh/include/z64interface.h
Normal file
|
@ -0,0 +1,71 @@
|
|||
#ifndef Z64INTERFACE_H
|
||||
#define Z64INTERFACE_H
|
||||
|
||||
/**
|
||||
* Button HUD Positions (Upper Left)
|
||||
*/
|
||||
#define A_BUTTON_X 186
|
||||
#define A_BUTTON_Y 9
|
||||
|
||||
#define B_BUTTON_X 160
|
||||
#define B_BUTTON_Y 17
|
||||
|
||||
#define C_LEFT_BUTTON_X 227
|
||||
#define C_LEFT_BUTTON_Y 18
|
||||
|
||||
#define C_DOWN_BUTTON_X 249
|
||||
#define C_DOWN_BUTTON_Y 34
|
||||
|
||||
#define C_RIGHT_BUTTON_X 271
|
||||
#define C_RIGHT_BUTTON_Y 18
|
||||
|
||||
#define C_UP_BUTTON_X 254
|
||||
#define C_UP_BUTTON_Y 16
|
||||
|
||||
/**
|
||||
* These are the colors for the hearts in the interface. The prim color is the red color of the heart
|
||||
* for the base hearts, while the prim color for the double defense hearts is the white outline. The
|
||||
* env color for the base hearts is the purple-ish outline, while the env color for the double defense
|
||||
* hearts is the red color of the hearts.
|
||||
*/
|
||||
|
||||
#define HEARTS_PRIM_R 255
|
||||
#define HEARTS_PRIM_G 70
|
||||
#define HEARTS_PRIM_B 50
|
||||
|
||||
#define HEARTS_ENV_R 50
|
||||
#define HEARTS_ENV_G 40
|
||||
#define HEARTS_ENV_B 60
|
||||
|
||||
#define HEARTS_DD_PRIM_R 255
|
||||
#define HEARTS_DD_PRIM_G 255
|
||||
#define HEARTS_DD_PRIM_B 255
|
||||
|
||||
#define HEARTS_DD_ENV_R 200
|
||||
#define HEARTS_DD_ENV_G 0
|
||||
#define HEARTS_DD_ENV_B 0
|
||||
|
||||
/**
|
||||
* The burn and drown colors listed here are unused. Prerelease footage of the game confirms that at one
|
||||
* point in development the orange color was to be used while taking damage from hot environments.
|
||||
* Based on this, we can assume that the blue heart color was to be used while drowning.
|
||||
* In the final game these environments only have a timer and do not damage you continuously.
|
||||
*/
|
||||
|
||||
#define HEARTS_BURN_PRIM_R 255
|
||||
#define HEARTS_BURN_PRIM_G 190
|
||||
#define HEARTS_BURN_PRIM_B 0
|
||||
|
||||
#define HEARTS_BURN_ENV_R 255
|
||||
#define HEARTS_BURN_ENV_G 0
|
||||
#define HEARTS_BURN_ENV_B 0
|
||||
|
||||
#define HEARTS_DROWN_PRIM_R 100
|
||||
#define HEARTS_DROWN_PRIM_G 100
|
||||
#define HEARTS_DROWN_PRIM_B 255
|
||||
|
||||
#define HEARTS_DROWN_ENV_R 0
|
||||
#define HEARTS_DROWN_ENV_G 0
|
||||
#define HEARTS_DROWN_ENV_B 255
|
||||
|
||||
#endif
|
535
soh/include/z64item.h
Normal file
535
soh/include/z64item.h
Normal file
|
@ -0,0 +1,535 @@
|
|||
#ifndef Z64ITEM_H
|
||||
#define Z64ITEM_H
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ EQUIP_SWORD,
|
||||
/* 0x01 */ EQUIP_SHIELD,
|
||||
/* 0x02 */ EQUIP_TUNIC,
|
||||
/* 0x03 */ EQUIP_BOOTS
|
||||
} EquipmentType;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ UPG_QUIVER,
|
||||
/* 0x01 */ UPG_BOMB_BAG,
|
||||
/* 0x02 */ UPG_STRENGTH,
|
||||
/* 0x03 */ UPG_SCALE,
|
||||
/* 0x04 */ UPG_WALLET,
|
||||
/* 0x05 */ UPG_BULLET_BAG,
|
||||
/* 0x06 */ UPG_STICKS,
|
||||
/* 0x07 */ UPG_NUTS
|
||||
} UpgradeType;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ QUEST_MEDALLION_FOREST,
|
||||
/* 0x01 */ QUEST_MEDALLION_FIRE,
|
||||
/* 0x02 */ QUEST_MEDALLION_WATER,
|
||||
/* 0x03 */ QUEST_MEDALLION_SPIRIT,
|
||||
/* 0x04 */ QUEST_MEDALLION_SHADOW,
|
||||
/* 0x05 */ QUEST_MEDALLION_LIGHT,
|
||||
/* 0x06 */ QUEST_SONG_MINUET,
|
||||
/* 0x07 */ QUEST_SONG_BOLERO,
|
||||
/* 0x08 */ QUEST_SONG_SERENADE,
|
||||
/* 0x09 */ QUEST_SONG_REQUIEM,
|
||||
/* 0x0A */ QUEST_SONG_NOCTURNE,
|
||||
/* 0x0B */ QUEST_SONG_PRELUDE,
|
||||
/* 0x0C */ QUEST_SONG_LULLABY,
|
||||
/* 0x0D */ QUEST_SONG_EPONA,
|
||||
/* 0x0E */ QUEST_SONG_SARIA,
|
||||
/* 0x0F */ QUEST_SONG_SUN,
|
||||
/* 0x10 */ QUEST_SONG_TIME,
|
||||
/* 0x11 */ QUEST_SONG_STORMS,
|
||||
/* 0x12 */ QUEST_KOKIRI_EMERALD,
|
||||
/* 0x13 */ QUEST_GORON_RUBY,
|
||||
/* 0x14 */ QUEST_ZORA_SAPPHIRE,
|
||||
/* 0x15 */ QUEST_STONE_OF_AGONY,
|
||||
/* 0x16 */ QUEST_GERUDO_CARD,
|
||||
/* 0x17 */ QUEST_SKULL_TOKEN,
|
||||
/* 0x18 */ QUEST_HEART_PIECE
|
||||
} QuestItem;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ DUNGEON_KEY_BOSS,
|
||||
/* 0x01 */ DUNGEON_COMPASS,
|
||||
/* 0x02 */ DUNGEON_MAP
|
||||
} DungeonItem;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ SLOT_STICK,
|
||||
/* 0x01 */ SLOT_NUT,
|
||||
/* 0x02 */ SLOT_BOMB,
|
||||
/* 0x03 */ SLOT_BOW,
|
||||
/* 0x04 */ SLOT_ARROW_FIRE,
|
||||
/* 0x05 */ SLOT_DINS_FIRE,
|
||||
/* 0x06 */ SLOT_SLINGSHOT,
|
||||
/* 0x07 */ SLOT_OCARINA,
|
||||
/* 0x08 */ SLOT_BOMBCHU,
|
||||
/* 0x09 */ SLOT_HOOKSHOT,
|
||||
/* 0x0A */ SLOT_ARROW_ICE,
|
||||
/* 0x0B */ SLOT_FARORES_WIND,
|
||||
/* 0x0C */ SLOT_BOOMERANG,
|
||||
/* 0x0D */ SLOT_LENS,
|
||||
/* 0x0E */ SLOT_BEAN,
|
||||
/* 0x0F */ SLOT_HAMMER,
|
||||
/* 0x10 */ SLOT_ARROW_LIGHT,
|
||||
/* 0x11 */ SLOT_NAYRUS_LOVE,
|
||||
/* 0x12 */ SLOT_BOTTLE_1,
|
||||
/* 0x13 */ SLOT_BOTTLE_2,
|
||||
/* 0x14 */ SLOT_BOTTLE_3,
|
||||
/* 0x15 */ SLOT_BOTTLE_4,
|
||||
/* 0x16 */ SLOT_TRADE_ADULT,
|
||||
/* 0x17 */ SLOT_TRADE_CHILD,
|
||||
/* 0xFF */ SLOT_NONE = 0xFF
|
||||
} InventorySlot;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ ITEM_STICK,
|
||||
/* 0x01 */ ITEM_NUT,
|
||||
/* 0x02 */ ITEM_BOMB,
|
||||
/* 0x03 */ ITEM_BOW,
|
||||
/* 0x04 */ ITEM_ARROW_FIRE,
|
||||
/* 0x05 */ ITEM_DINS_FIRE,
|
||||
/* 0x06 */ ITEM_SLINGSHOT,
|
||||
/* 0x07 */ ITEM_OCARINA_FAIRY,
|
||||
/* 0x08 */ ITEM_OCARINA_TIME,
|
||||
/* 0x09 */ ITEM_BOMBCHU,
|
||||
/* 0x0A */ ITEM_HOOKSHOT,
|
||||
/* 0x0B */ ITEM_LONGSHOT,
|
||||
/* 0x0C */ ITEM_ARROW_ICE,
|
||||
/* 0x0D */ ITEM_FARORES_WIND,
|
||||
/* 0x0E */ ITEM_BOOMERANG,
|
||||
/* 0x0F */ ITEM_LENS,
|
||||
/* 0x10 */ ITEM_BEAN,
|
||||
/* 0x11 */ ITEM_HAMMER,
|
||||
/* 0x12 */ ITEM_ARROW_LIGHT,
|
||||
/* 0x13 */ ITEM_NAYRUS_LOVE,
|
||||
/* 0x14 */ ITEM_BOTTLE,
|
||||
/* 0x15 */ ITEM_POTION_RED,
|
||||
/* 0x16 */ ITEM_POTION_GREEN,
|
||||
/* 0x17 */ ITEM_POTION_BLUE,
|
||||
/* 0x18 */ ITEM_FAIRY,
|
||||
/* 0x19 */ ITEM_FISH,
|
||||
/* 0x1A */ ITEM_MILK_BOTTLE,
|
||||
/* 0x1B */ ITEM_LETTER_RUTO,
|
||||
/* 0x1C */ ITEM_BLUE_FIRE,
|
||||
/* 0x1D */ ITEM_BUG,
|
||||
/* 0x1E */ ITEM_BIG_POE,
|
||||
/* 0x1F */ ITEM_MILK_HALF,
|
||||
/* 0x20 */ ITEM_POE,
|
||||
/* 0x21 */ ITEM_WEIRD_EGG,
|
||||
/* 0x22 */ ITEM_CHICKEN,
|
||||
/* 0x23 */ ITEM_LETTER_ZELDA,
|
||||
/* 0x24 */ ITEM_MASK_KEATON,
|
||||
/* 0x25 */ ITEM_MASK_SKULL,
|
||||
/* 0x26 */ ITEM_MASK_SPOOKY,
|
||||
/* 0x27 */ ITEM_MASK_BUNNY,
|
||||
/* 0x28 */ ITEM_MASK_GORON,
|
||||
/* 0x29 */ ITEM_MASK_ZORA,
|
||||
/* 0x2A */ ITEM_MASK_GERUDO,
|
||||
/* 0x2B */ ITEM_MASK_TRUTH,
|
||||
/* 0x2C */ ITEM_SOLD_OUT,
|
||||
/* 0x2D */ ITEM_POCKET_EGG,
|
||||
/* 0x2E */ ITEM_POCKET_CUCCO,
|
||||
/* 0x2F */ ITEM_COJIRO,
|
||||
/* 0x30 */ ITEM_ODD_MUSHROOM,
|
||||
/* 0x31 */ ITEM_ODD_POTION,
|
||||
/* 0x32 */ ITEM_SAW,
|
||||
/* 0x33 */ ITEM_SWORD_BROKEN,
|
||||
/* 0x34 */ ITEM_PRESCRIPTION,
|
||||
/* 0x35 */ ITEM_FROG,
|
||||
/* 0x36 */ ITEM_EYEDROPS,
|
||||
/* 0x37 */ ITEM_CLAIM_CHECK,
|
||||
/* 0x38 */ ITEM_BOW_ARROW_FIRE,
|
||||
/* 0x39 */ ITEM_BOW_ARROW_ICE,
|
||||
/* 0x3A */ ITEM_BOW_ARROW_LIGHT,
|
||||
/* 0x3B */ ITEM_SWORD_KOKIRI,
|
||||
/* 0x3C */ ITEM_SWORD_MASTER,
|
||||
/* 0x3D */ ITEM_SWORD_BGS,
|
||||
/* 0x3E */ ITEM_SHIELD_DEKU,
|
||||
/* 0x3F */ ITEM_SHIELD_HYLIAN,
|
||||
/* 0x40 */ ITEM_SHIELD_MIRROR,
|
||||
/* 0x41 */ ITEM_TUNIC_KOKIRI,
|
||||
/* 0x42 */ ITEM_TUNIC_GORON,
|
||||
/* 0x43 */ ITEM_TUNIC_ZORA,
|
||||
/* 0x44 */ ITEM_BOOTS_KOKIRI,
|
||||
/* 0x45 */ ITEM_BOOTS_IRON,
|
||||
/* 0x46 */ ITEM_BOOTS_HOVER,
|
||||
/* 0x47 */ ITEM_BULLET_BAG_30,
|
||||
/* 0x48 */ ITEM_BULLET_BAG_40,
|
||||
/* 0x49 */ ITEM_BULLET_BAG_50,
|
||||
/* 0x4A */ ITEM_QUIVER_30,
|
||||
/* 0x4B */ ITEM_QUIVER_40,
|
||||
/* 0x4C */ ITEM_QUIVER_50,
|
||||
/* 0x4D */ ITEM_BOMB_BAG_20,
|
||||
/* 0x4E */ ITEM_BOMB_BAG_30,
|
||||
/* 0x4F */ ITEM_BOMB_BAG_40,
|
||||
/* 0x50 */ ITEM_BRACELET,
|
||||
/* 0x51 */ ITEM_GAUNTLETS_SILVER,
|
||||
/* 0x52 */ ITEM_GAUNTLETS_GOLD,
|
||||
/* 0x53 */ ITEM_SCALE_SILVER,
|
||||
/* 0x54 */ ITEM_SCALE_GOLDEN,
|
||||
/* 0x55 */ ITEM_SWORD_KNIFE,
|
||||
/* 0x56 */ ITEM_WALLET_ADULT,
|
||||
/* 0x57 */ ITEM_WALLET_GIANT,
|
||||
/* 0x58 */ ITEM_SEEDS,
|
||||
/* 0x59 */ ITEM_FISHING_POLE,
|
||||
/* 0x5A */ ITEM_SONG_MINUET,
|
||||
/* 0x5B */ ITEM_SONG_BOLERO,
|
||||
/* 0x5C */ ITEM_SONG_SERENADE,
|
||||
/* 0x5D */ ITEM_SONG_REQUIEM,
|
||||
/* 0x5E */ ITEM_SONG_NOCTURNE,
|
||||
/* 0x5F */ ITEM_SONG_PRELUDE,
|
||||
/* 0x60 */ ITEM_SONG_LULLABY,
|
||||
/* 0x61 */ ITEM_SONG_EPONA,
|
||||
/* 0x62 */ ITEM_SONG_SARIA,
|
||||
/* 0x63 */ ITEM_SONG_SUN,
|
||||
/* 0x64 */ ITEM_SONG_TIME,
|
||||
/* 0x65 */ ITEM_SONG_STORMS,
|
||||
/* 0x66 */ ITEM_MEDALLION_FOREST,
|
||||
/* 0x67 */ ITEM_MEDALLION_FIRE,
|
||||
/* 0x68 */ ITEM_MEDALLION_WATER,
|
||||
/* 0x69 */ ITEM_MEDALLION_SPIRIT,
|
||||
/* 0x6A */ ITEM_MEDALLION_SHADOW,
|
||||
/* 0x6B */ ITEM_MEDALLION_LIGHT,
|
||||
/* 0x6C */ ITEM_KOKIRI_EMERALD,
|
||||
/* 0x6D */ ITEM_GORON_RUBY,
|
||||
/* 0x6E */ ITEM_ZORA_SAPPHIRE,
|
||||
/* 0x6F */ ITEM_STONE_OF_AGONY,
|
||||
/* 0x70 */ ITEM_GERUDO_CARD,
|
||||
/* 0x71 */ ITEM_SKULL_TOKEN,
|
||||
/* 0x72 */ ITEM_HEART_CONTAINER,
|
||||
/* 0x73 */ ITEM_HEART_PIECE,
|
||||
/* 0x74 */ ITEM_KEY_BOSS,
|
||||
/* 0x75 */ ITEM_COMPASS,
|
||||
/* 0x76 */ ITEM_DUNGEON_MAP,
|
||||
/* 0x77 */ ITEM_KEY_SMALL,
|
||||
/* 0x78 */ ITEM_MAGIC_SMALL,
|
||||
/* 0x79 */ ITEM_MAGIC_LARGE,
|
||||
/* 0x7A */ ITEM_HEART_PIECE_2,
|
||||
/* 0x7B */ ITEM_INVALID_1,
|
||||
/* 0x7C */ ITEM_INVALID_2,
|
||||
/* 0x7D */ ITEM_INVALID_3,
|
||||
/* 0x7E */ ITEM_INVALID_4,
|
||||
/* 0x7F */ ITEM_INVALID_5,
|
||||
/* 0x80 */ ITEM_INVALID_6,
|
||||
/* 0x81 */ ITEM_INVALID_7,
|
||||
/* 0x82 */ ITEM_MILK,
|
||||
/* 0x83 */ ITEM_HEART,
|
||||
/* 0x84 */ ITEM_RUPEE_GREEN,
|
||||
/* 0x85 */ ITEM_RUPEE_BLUE,
|
||||
/* 0x86 */ ITEM_RUPEE_RED,
|
||||
/* 0x87 */ ITEM_RUPEE_PURPLE,
|
||||
/* 0x88 */ ITEM_RUPEE_GOLD,
|
||||
/* 0x89 */ ITEM_INVALID_8,
|
||||
/* 0x8A */ ITEM_STICKS_5,
|
||||
/* 0x8B */ ITEM_STICKS_10,
|
||||
/* 0x8C */ ITEM_NUTS_5,
|
||||
/* 0x8D */ ITEM_NUTS_10,
|
||||
/* 0x8E */ ITEM_BOMBS_5,
|
||||
/* 0x8F */ ITEM_BOMBS_10,
|
||||
/* 0x90 */ ITEM_BOMBS_20,
|
||||
/* 0x91 */ ITEM_BOMBS_30,
|
||||
/* 0x92 */ ITEM_ARROWS_SMALL,
|
||||
/* 0x93 */ ITEM_ARROWS_MEDIUM,
|
||||
/* 0x94 */ ITEM_ARROWS_LARGE,
|
||||
/* 0x95 */ ITEM_SEEDS_30,
|
||||
/* 0x96 */ ITEM_BOMBCHUS_5,
|
||||
/* 0x97 */ ITEM_BOMBCHUS_20,
|
||||
/* 0x98 */ ITEM_STICK_UPGRADE_20,
|
||||
/* 0x99 */ ITEM_STICK_UPGRADE_30,
|
||||
/* 0x9A */ ITEM_NUT_UPGRADE_30,
|
||||
/* 0x9B */ ITEM_NUT_UPGRADE_40,
|
||||
/* 0xFC */ ITEM_LAST_USED = 0xFC,
|
||||
/* 0xFE */ ITEM_NONE_FE = 0xFE,
|
||||
/* 0xFF */ ITEM_NONE = 0xFF
|
||||
} ItemID;
|
||||
|
||||
#define ITEM_TRADE_CHILD ITEM_WEIRD_EGG
|
||||
#define ITEM_TRADE_ADULT ITEM_POCKET_EGG
|
||||
|
||||
// Get Item result may vary depending on context (chest/shop/scrub/drop)
|
||||
typedef enum {
|
||||
/* 0x00 */ GI_NONE,
|
||||
/* 0x01 */ GI_BOMBS_5,
|
||||
/* 0x02 */ GI_NUTS_5,
|
||||
/* 0x03 */ GI_BOMBCHUS_10,
|
||||
/* 0x04 */ GI_BOW,
|
||||
/* 0x05 */ GI_SLINGSHOT,
|
||||
/* 0x06 */ GI_BOOMERANG,
|
||||
/* 0x07 */ GI_STICKS_1,
|
||||
/* 0x08 */ GI_HOOKSHOT,
|
||||
/* 0x09 */ GI_LONGSHOT,
|
||||
/* 0x0A */ GI_LENS,
|
||||
/* 0x0B */ GI_LETTER_ZELDA,
|
||||
/* 0x0C */ GI_OCARINA_OOT,
|
||||
/* 0x0D */ GI_HAMMER,
|
||||
/* 0x0E */ GI_COJIRO,
|
||||
/* 0x0F */ GI_BOTTLE,
|
||||
/* 0x10 */ GI_POTION_RED,
|
||||
/* 0x11 */ GI_POTION_GREEN,
|
||||
/* 0x12 */ GI_POTION_BLUE,
|
||||
/* 0x13 */ GI_FAIRY,
|
||||
/* 0x14 */ GI_MILK_BOTTLE,
|
||||
/* 0x15 */ GI_LETTER_RUTO,
|
||||
/* 0x16 */ GI_BEAN,
|
||||
/* 0x17 */ GI_MASK_SKULL,
|
||||
/* 0x18 */ GI_MASK_SPOOKY,
|
||||
/* 0x19 */ GI_CHICKEN, // uses bean message ID
|
||||
/* 0x1A */ GI_MASK_KEATON,
|
||||
/* 0x1B */ GI_MASK_BUNNY,
|
||||
/* 0x1C */ GI_MASK_TRUTH,
|
||||
/* 0x1D */ GI_POCKET_EGG,
|
||||
/* 0x1E */ GI_POCKET_CUCCO, // uses bean message ID
|
||||
/* 0x1F */ GI_ODD_MUSHROOM,
|
||||
/* 0x20 */ GI_ODD_POTION,
|
||||
/* 0x21 */ GI_SAW,
|
||||
/* 0x22 */ GI_SWORD_BROKEN,
|
||||
/* 0x23 */ GI_PRESCRIPTION,
|
||||
/* 0x24 */ GI_FROG,
|
||||
/* 0x25 */ GI_EYEDROPS,
|
||||
/* 0x26 */ GI_CLAIM_CHECK,
|
||||
/* 0x27 */ GI_SWORD_KOKIRI,
|
||||
/* 0x28 */ GI_SWORD_KNIFE,
|
||||
/* 0x29 */ GI_SHIELD_DEKU, // or blue rupee if you have the shield
|
||||
/* 0x2A */ GI_SHIELD_HYLIAN, // or blue rupee if you have the shield
|
||||
/* 0x2B */ GI_SHIELD_MIRROR,
|
||||
/* 0x2C */ GI_TUNIC_GORON, // or blue rupee if you have the tunic
|
||||
/* 0x2D */ GI_TUNIC_ZORA, // or blue rupee if you have the tunic
|
||||
/* 0x2E */ GI_BOOTS_IRON,
|
||||
/* 0x2F */ GI_BOOTS_HOVER,
|
||||
/* 0x30 */ GI_QUIVER_40,
|
||||
/* 0x31 */ GI_QUIVER_50,
|
||||
/* 0x32 */ GI_BOMB_BAG_20,
|
||||
/* 0x33 */ GI_BOMB_BAG_30,
|
||||
/* 0x34 */ GI_BOMB_BAG_40,
|
||||
/* 0x35 */ GI_GAUNTLETS_SILVER,
|
||||
/* 0x36 */ GI_GAUNTLETS_GOLD,
|
||||
/* 0x37 */ GI_SCALE_SILVER,
|
||||
/* 0x38 */ GI_SCALE_GOLD,
|
||||
/* 0x39 */ GI_STONE_OF_AGONY,
|
||||
/* 0x3A */ GI_GERUDO_CARD,
|
||||
/* 0x3B */ GI_OCARINA_FAIRY, // uses Ocarina of Time message ID
|
||||
/* 0x3C */ GI_SEEDS_5,
|
||||
/* 0x3D */ GI_HEART_CONTAINER,
|
||||
/* 0x3E */ GI_HEART_PIECE,
|
||||
/* 0x3F */ GI_KEY_BOSS,
|
||||
/* 0x40 */ GI_COMPASS,
|
||||
/* 0x41 */ GI_MAP,
|
||||
/* 0x42 */ GI_KEY_SMALL,
|
||||
/* 0x43 */ GI_MAGIC_SMALL, // or blue rupee if not from a drop
|
||||
/* 0x44 */ GI_MAGIC_LARGE, // or blue rupee if not from a drop
|
||||
/* 0x45 */ GI_WALLET_ADULT,
|
||||
/* 0x46 */ GI_WALLET_GIANT,
|
||||
/* 0x47 */ GI_WEIRD_EGG,
|
||||
/* 0x48 */ GI_HEART,
|
||||
/* 0x49 */ GI_ARROWS_SMALL, // amount changes depending on context
|
||||
/* 0x4A */ GI_ARROWS_MEDIUM, // amount changes depending on context
|
||||
/* 0x4B */ GI_ARROWS_LARGE, // amount changes depending on context
|
||||
/* 0x4C */ GI_RUPEE_GREEN,
|
||||
/* 0x4D */ GI_RUPEE_BLUE,
|
||||
/* 0x4E */ GI_RUPEE_RED,
|
||||
/* 0x4F */ GI_HEART_CONTAINER_2,
|
||||
/* 0x50 */ GI_MILK,
|
||||
/* 0x51 */ GI_MASK_GORON,
|
||||
/* 0x52 */ GI_MASK_ZORA,
|
||||
/* 0x53 */ GI_MASK_GERUDO,
|
||||
/* 0x54 */ GI_BRACELET,
|
||||
/* 0x55 */ GI_RUPEE_PURPLE,
|
||||
/* 0x56 */ GI_RUPEE_GOLD,
|
||||
/* 0x57 */ GI_SWORD_BGS,
|
||||
/* 0x58 */ GI_ARROW_FIRE,
|
||||
/* 0x59 */ GI_ARROW_ICE,
|
||||
/* 0x5A */ GI_ARROW_LIGHT,
|
||||
/* 0x5B */ GI_SKULL_TOKEN,
|
||||
/* 0x5C */ GI_DINS_FIRE,
|
||||
/* 0x5D */ GI_FARORES_WIND,
|
||||
/* 0x5E */ GI_NAYRUS_LOVE,
|
||||
/* 0x5F */ GI_BULLET_BAG_30,
|
||||
/* 0x60 */ GI_BULLET_BAG_40,
|
||||
/* 0x61 */ GI_STICKS_5,
|
||||
/* 0x62 */ GI_STICKS_10,
|
||||
/* 0x63 */ GI_NUTS_5_2,
|
||||
/* 0x64 */ GI_NUTS_10,
|
||||
/* 0x65 */ GI_BOMBS_1,
|
||||
/* 0x66 */ GI_BOMBS_10,
|
||||
/* 0x67 */ GI_BOMBS_20,
|
||||
/* 0x68 */ GI_BOMBS_30,
|
||||
/* 0x69 */ GI_SEEDS_30,
|
||||
/* 0x6A */ GI_BOMBCHUS_5,
|
||||
/* 0x6B */ GI_BOMBCHUS_20,
|
||||
/* 0x6C */ GI_FISH,
|
||||
/* 0x6D */ GI_BUGS,
|
||||
/* 0x6E */ GI_BLUE_FIRE,
|
||||
/* 0x6F */ GI_POE,
|
||||
/* 0x70 */ GI_BIG_POE,
|
||||
/* 0x71 */ GI_DOOR_KEY, // specific to chest minigame
|
||||
/* 0x72 */ GI_RUPEE_GREEN_LOSE, // specific to chest minigame
|
||||
/* 0x73 */ GI_RUPEE_BLUE_LOSE, // specific to chest minigame
|
||||
/* 0x74 */ GI_RUPEE_RED_LOSE, // specific to chest minigame
|
||||
/* 0x75 */ GI_RUPEE_PURPLE_LOSE, // specific to chest minigame
|
||||
/* 0x76 */ GI_HEART_PIECE_WIN, // specific to chest minigame
|
||||
/* 0x77 */ GI_STICK_UPGRADE_20,
|
||||
/* 0x78 */ GI_STICK_UPGRADE_30,
|
||||
/* 0x79 */ GI_NUT_UPGRADE_30,
|
||||
/* 0x7A */ GI_NUT_UPGRADE_40,
|
||||
/* 0x7B */ GI_BULLET_BAG_50,
|
||||
/* 0x7C */ GI_ICE_TRAP, // freezes link when opened from a chest
|
||||
/* 0x7D */ GI_TEXT_0, // no model appears over Link, shows text id 0 (pocket egg)
|
||||
/* 0x7E */ GI_MAX
|
||||
} GetItemID;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ GID_BOTTLE,
|
||||
/* 0x01 */ GID_KEY_SMALL,
|
||||
/* 0x02 */ GID_SONG_MINUET,
|
||||
/* 0x03 */ GID_SONG_BOLERO,
|
||||
/* 0x04 */ GID_SONG_SERENADE,
|
||||
/* 0x05 */ GID_SONG_REQUIEM,
|
||||
/* 0x06 */ GID_SONG_NOCTURNE,
|
||||
/* 0x07 */ GID_SONG_PRELUDE,
|
||||
/* 0x08 */ GID_HEART,
|
||||
/* 0x09 */ GID_KEY_BOSS,
|
||||
/* 0x0A */ GID_COMPASS,
|
||||
/* 0x0B */ GID_MEDALLION_FOREST,
|
||||
/* 0x0C */ GID_MEDALLION_FIRE,
|
||||
/* 0x0D */ GID_MEDALLION_WATER,
|
||||
/* 0x0E */ GID_MEDALLION_SPIRIT,
|
||||
/* 0x0F */ GID_MEDALLION_SHADOW,
|
||||
/* 0x10 */ GID_MEDALLION_LIGHT,
|
||||
/* 0x11 */ GID_NUTS,
|
||||
/* 0x12 */ GID_HEART_CONTAINER,
|
||||
/* 0x13 */ GID_HEART_PIECE,
|
||||
/* 0x14 */ GID_QUIVER_30,
|
||||
/* 0x15 */ GID_QUIVER_40,
|
||||
/* 0x16 */ GID_QUIVER_50,
|
||||
/* 0x17 */ GID_BOMB_BAG_20,
|
||||
/* 0x18 */ GID_BOMB_BAG_30,
|
||||
/* 0x19 */ GID_BOMB_BAG_40,
|
||||
/* 0x1A */ GID_STICK,
|
||||
/* 0x1B */ GID_DUNGEON_MAP,
|
||||
/* 0x1C */ GID_SHIELD_DEKU,
|
||||
/* 0x1D */ GID_MAGIC_SMALL,
|
||||
/* 0x1E */ GID_MAGIC_LARGE,
|
||||
/* 0x1F */ GID_BOMB,
|
||||
/* 0x20 */ GID_STONE_OF_AGONY,
|
||||
/* 0x21 */ GID_WALLET_ADULT,
|
||||
/* 0x22 */ GID_WALLET_GIANT,
|
||||
/* 0x23 */ GID_GERUDO_CARD,
|
||||
/* 0x24 */ GID_ARROWS_SMALL,
|
||||
/* 0x25 */ GID_ARROWS_MEDIUM,
|
||||
/* 0x26 */ GID_ARROWS_LARGE,
|
||||
/* 0x27 */ GID_BOMBCHU,
|
||||
/* 0x28 */ GID_EGG,
|
||||
/* 0x29 */ GID_SCALE_SILVER,
|
||||
/* 0x2A */ GID_SCALE_GOLDEN,
|
||||
/* 0x2B */ GID_SHIELD_HYLIAN,
|
||||
/* 0x2C */ GID_HOOKSHOT,
|
||||
/* 0x2D */ GID_LONGSHOT,
|
||||
/* 0x2E */ GID_OCARINA_TIME,
|
||||
/* 0x2F */ GID_MILK,
|
||||
/* 0x30 */ GID_MASK_KEATON,
|
||||
/* 0x31 */ GID_MASK_SPOOKY,
|
||||
/* 0x32 */ GID_SLINGSHOT,
|
||||
/* 0x33 */ GID_BOOMERANG,
|
||||
/* 0x34 */ GID_BOW,
|
||||
/* 0x35 */ GID_LENS,
|
||||
/* 0x36 */ GID_POTION_GREEN,
|
||||
/* 0x37 */ GID_POTION_RED,
|
||||
/* 0x38 */ GID_POTION_BLUE,
|
||||
/* 0x39 */ GID_SHIELD_MIRROR,
|
||||
/* 0x3A */ GID_LETTER_ZELDA,
|
||||
/* 0x3B */ GID_TUNIC_GORON,
|
||||
/* 0x3C */ GID_TUNIC_ZORA,
|
||||
/* 0x3D */ GID_BEAN,
|
||||
/* 0x3E */ GID_FISH,
|
||||
/* 0x3F */ GID_SAW,
|
||||
/* 0x40 */ GID_HAMMER,
|
||||
/* 0x41 */ GID_GRASS,
|
||||
/* 0x42 */ GID_SWORD_BGS,
|
||||
/* 0x43 */ GID_CHICKEN,
|
||||
/* 0x44 */ GID_LETTER_RUTO,
|
||||
/* 0x45 */ GID_OCARINA_FAIRY,
|
||||
/* 0x46 */ GID_BOOTS_IRON,
|
||||
/* 0x47 */ GID_SEEDS,
|
||||
/* 0x48 */ GID_GAUNTLETS_SILVER,
|
||||
/* 0x49 */ GID_GAUNTLETS_GOLD,
|
||||
/* 0x4A */ GID_NCOIN_YELLOW,
|
||||
/* 0x4B */ GID_NCOIN_RED,
|
||||
/* 0x4C */ GID_NCOIN_GREEN,
|
||||
/* 0x4D */ GID_NCOIN_BLUE,
|
||||
/* 0x4E */ GID_MASK_SKULL,
|
||||
/* 0x4F */ GID_MASK_BUNNY,
|
||||
/* 0x50 */ GID_MASK_TRUTH,
|
||||
/* 0x51 */ GID_EYEDROPS,
|
||||
/* 0x52 */ GID_ODD_POTION,
|
||||
/* 0x53 */ GID_ODD_MUSHROOM,
|
||||
/* 0x54 */ GID_CLAIM_CHECK,
|
||||
/* 0x55 */ GID_SWORD_BROKEN,
|
||||
/* 0x56 */ GID_PRESCRIPTION,
|
||||
/* 0x57 */ GID_BRACELET,
|
||||
/* 0x58 */ GID_SOLDOUT,
|
||||
/* 0x59 */ GID_FROG,
|
||||
/* 0x5A */ GID_MASK_GORON,
|
||||
/* 0x5B */ GID_MASK_ZORA,
|
||||
/* 0x5C */ GID_MASK_GERUDO,
|
||||
/* 0x5D */ GID_COJIRO,
|
||||
/* 0x5E */ GID_BOOTS_HOVER,
|
||||
/* 0x5F */ GID_ARROW_FIRE,
|
||||
/* 0x60 */ GID_ARROW_ICE,
|
||||
/* 0x61 */ GID_ARROW_LIGHT,
|
||||
/* 0x62 */ GID_SKULL_TOKEN,
|
||||
/* 0x63 */ GID_DINS_FIRE,
|
||||
/* 0x64 */ GID_FARORES_WIND,
|
||||
/* 0x65 */ GID_NAYRUS_LOVE,
|
||||
/* 0x66 */ GID_BLUE_FIRE,
|
||||
/* 0x67 */ GID_BUG,
|
||||
/* 0x68 */ GID_BUTTERFLY,
|
||||
/* 0x69 */ GID_POE,
|
||||
/* 0x6A */ GID_FAIRY,
|
||||
/* 0x6B */ GID_BULLET_BAG,
|
||||
/* 0x6C */ GID_RUPEE_GREEN,
|
||||
/* 0x6D */ GID_RUPEE_BLUE,
|
||||
/* 0x6E */ GID_RUPEE_RED,
|
||||
/* 0x6F */ GID_BIG_POE,
|
||||
/* 0x70 */ GID_RUPEE_PURPLE,
|
||||
/* 0x71 */ GID_RUPEE_GOLD,
|
||||
/* 0x72 */ GID_BULLET_BAG_50,
|
||||
/* 0x73 */ GID_SWORD_KOKIRI,
|
||||
/* 0x74 */ GID_SKULL_TOKEN_2,
|
||||
/* 0x75 */ GID_MAX
|
||||
} GetItemDrawID;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ EXCH_ITEM_NONE,
|
||||
/* 0x01 */ EXCH_ITEM_LETTER_ZELDA,
|
||||
/* 0x02 */ EXCH_ITEM_WEIRD_EGG,
|
||||
/* 0x03 */ EXCH_ITEM_CHICKEN,
|
||||
/* 0x04 */ EXCH_ITEM_BEAN,
|
||||
/* 0x05 */ EXCH_ITEM_POCKET_EGG,
|
||||
/* 0x06 */ EXCH_ITEM_POCKET_CUCCO,
|
||||
/* 0x07 */ EXCH_ITEM_COJIRO,
|
||||
/* 0x08 */ EXCH_ITEM_ODD_MUSHROOM,
|
||||
/* 0x09 */ EXCH_ITEM_ODD_POTION,
|
||||
/* 0x0A */ EXCH_ITEM_SAW,
|
||||
/* 0x0B */ EXCH_ITEM_SWORD_BROKEN,
|
||||
/* 0x0C */ EXCH_ITEM_PRESCRIPTION,
|
||||
/* 0x0D */ EXCH_ITEM_FROG,
|
||||
/* 0x0E */ EXCH_ITEM_EYEDROPS,
|
||||
/* 0x0F */ EXCH_ITEM_CLAIM_CHECK,
|
||||
/* 0x10 */ EXCH_ITEM_MASK_SKULL,
|
||||
/* 0x11 */ EXCH_ITEM_MASK_SPOOKY,
|
||||
/* 0x12 */ EXCH_ITEM_MASK_KEATON,
|
||||
/* 0x13 */ EXCH_ITEM_MASK_BUNNY,
|
||||
/* 0x14 */ EXCH_ITEM_MASK_TRUTH,
|
||||
/* 0x15 */ EXCH_ITEM_MASK_GORON,
|
||||
/* 0x16 */ EXCH_ITEM_MASK_ZORA,
|
||||
/* 0x17 */ EXCH_ITEM_MASK_GERUDO,
|
||||
/* 0x18 */ EXCH_ITEM_FISH,
|
||||
/* 0x19 */ EXCH_ITEM_BLUE_FIRE,
|
||||
/* 0x1A */ EXCH_ITEM_BUG,
|
||||
/* 0x1B */ EXCH_ITEM_POE,
|
||||
/* 0x1C */ EXCH_ITEM_BIG_POE,
|
||||
/* 0x1D */ EXCH_ITEM_LETTER_RUTO,
|
||||
/* 0x1E */ EXCH_ITEM_MAX
|
||||
} ExchangeItemID;
|
||||
|
||||
#endif
|
62
soh/include/z64light.h
Normal file
62
soh/include/z64light.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
#ifndef Z64LIGHT_H
|
||||
#define Z64LIGHT_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "ultra64/gbi.h"
|
||||
#include "z64math.h"
|
||||
#include "color.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 x;
|
||||
/* 0x2 */ s16 y;
|
||||
/* 0x4 */ s16 z;
|
||||
/* 0x6 */ u8 color[3];
|
||||
/* 0x9 */ u8 drawGlow;
|
||||
/* 0xA */ s16 radius;
|
||||
} LightPoint; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s8 x;
|
||||
/* 0x1 */ s8 y;
|
||||
/* 0x2 */ s8 z;
|
||||
/* 0x3 */ u8 color[3];
|
||||
} LightDirectional; // size = 0x6
|
||||
|
||||
typedef union {
|
||||
LightPoint point;
|
||||
LightDirectional dir;
|
||||
} LightParams; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 type;
|
||||
/* 0x2 */ LightParams params;
|
||||
} LightInfo; // size = 0xE
|
||||
|
||||
typedef struct Lights {
|
||||
/* 0x00 */ u8 numLights;
|
||||
/* 0x08 */ Lightsn l;
|
||||
} Lights; // size = 0x80
|
||||
|
||||
typedef struct LightNode {
|
||||
/* 0x0 */ LightInfo* info;
|
||||
/* 0x4 */ struct LightNode* prev;
|
||||
/* 0x8 */ struct LightNode* next;
|
||||
} LightNode; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ LightNode* listHead;
|
||||
/* 0x4 */ u8 ambientColor[3];
|
||||
/* 0x7 */ u8 fogColor[3];
|
||||
/* 0xA */ s16 fogNear; // how close until fog starts taking effect. range 0 - 1000
|
||||
/* 0xC */ s16 fogFar; // how far until fog starts to saturate. range 0 - 1000
|
||||
} LightContext; // size = 0x10
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ LIGHT_POINT_NOGLOW,
|
||||
/* 0x01 */ LIGHT_DIRECTIONAL,
|
||||
/* 0x02 */ LIGHT_POINT_GLOW
|
||||
} LightType;
|
||||
|
||||
typedef void (*LightsBindFunc)(Lights* lights, LightParams* params, Vec3f* vec);
|
||||
|
||||
#endif
|
25
soh/include/z64map_mark.h
Normal file
25
soh/include/z64map_mark.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
#ifndef Z64MAP_MARK_H
|
||||
#define Z64MAP_MARK_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
#define MAP_MARK_NONE -1
|
||||
#define MAP_MARK_CHEST 0
|
||||
#define MAP_MARK_BOSS 1
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 chestFlag; // chest icon is only displayed if this flag is not set for the current room
|
||||
/* 0x01 */ u8 x, y; // coordinates to place the icon (top-left corner), relative to the minimap texture
|
||||
} MapMarkPoint; // size = 0x3
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 markType; // 0 for the chest icon, 1 for the boss skull icon, -1 for none
|
||||
/* 0x01 */ u8 count; // number of icons to display
|
||||
/* 0x02 */ MapMarkPoint points[12];
|
||||
} MapMarkIconData; // size = 0x26
|
||||
|
||||
typedef MapMarkIconData MapMarkData[3]; // size = 0x72
|
||||
|
||||
extern MapMarkData* gMapMarkDataTable[];
|
||||
|
||||
#endif
|
119
soh/include/z64math.h
Normal file
119
soh/include/z64math.h
Normal file
|
@ -0,0 +1,119 @@
|
|||
#ifndef Z64MATH_H
|
||||
#define Z64MATH_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
#define VEC_SET(V,X,Y,Z) (V).x=(X);(V).y=(Y);(V).z=(Z)
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define Vec2f _Vec2f
|
||||
#define Vec3f _Vec3f
|
||||
#define Vec3s _Vec3s
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
f32 x, y;
|
||||
} Vec2f; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
f32 x, y, z;
|
||||
} Vec3f; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
u16 x, y, z;
|
||||
} Vec3us; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
s16 x, y, z;
|
||||
} Vec3s; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
s32 x, y, z;
|
||||
} Vec3i; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
Vec3s center;
|
||||
s16 radius;
|
||||
} Sphere16; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
Vec3f center;
|
||||
f32 radius;
|
||||
} Spheref; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
Vec3f normal;
|
||||
f32 originDist;
|
||||
} Plane; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
Vec3f vtx[3];
|
||||
Plane plane;
|
||||
} TriNorm; // size = 0x34
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ s16 radius;
|
||||
/* 0x0002 */ s16 height;
|
||||
/* 0x0004 */ s16 yShift;
|
||||
/* 0x0006 */ Vec3s pos;
|
||||
} Cylinder16; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 radius;
|
||||
/* 0x04 */ f32 height;
|
||||
/* 0x08 */ f32 yShift;
|
||||
/* 0x0C */ Vec3f pos;
|
||||
} Cylinderf; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Vec3f point;
|
||||
/* 0x000C */ Vec3f dir;
|
||||
} InfiniteLine; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Vec3f a;
|
||||
/* 0x000C */ Vec3f b;
|
||||
} Linef; // size = 0x18
|
||||
|
||||
// Defines a point in the spherical coordinate system
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 r; // radius
|
||||
/* 0x04 */ s16 pitch; // polar (zenith) angle
|
||||
/* 0x06 */ s16 yaw; // azimuthal angle
|
||||
} VecSph; // size = 0x08
|
||||
|
||||
#define LERP(x, y, scale) (((y) - (x)) * (scale) + (x))
|
||||
#define LERP32(x, y, scale) ((s32)(((y) - (x)) * (scale)) + (x))
|
||||
#define LERP16(x, y, scale) ((s16)(((y) - (x)) * (scale)) + (x))
|
||||
#define F32_LERP(v0,v1,t) ((v0) * (1.0f - (t)) + (v1) * (t))
|
||||
#define F32_LERPIMP(v0, v1, t) (v0 + ((v1 - v0) * t))
|
||||
#define F32_LERPIMPINV(v0, v1, t) ((v0) + (((v1) - (v0)) / (t)))
|
||||
#define BINANG_LERPIMP(v0, v1, t) ((v0) + (s16)(BINANG_SUB((v1), (v0)) * (t)))
|
||||
#define BINANG_LERPIMPINV(v0, v1, t) ((v0) + BINANG_SUB((v1), (v0)) / (t))
|
||||
|
||||
#define VEC3F_LERPIMPDST(dst, v0, v1, t){ \
|
||||
(dst)->x = (v0)->x + (((v1)->x - (v0)->x) * t); \
|
||||
(dst)->y = (v0)->y + (((v1)->y - (v0)->y) * t); \
|
||||
(dst)->z = (v0)->z + (((v1)->z - (v0)->z) * t); \
|
||||
}
|
||||
|
||||
#define IS_ZERO(f) (fabsf(f) < 0.008f)
|
||||
|
||||
// Trig macros
|
||||
#define DEGF_TO_BINANG(degreesf) (s16)(degreesf * 182.04167f + .5f)
|
||||
#define RADF_TO_BINANG(radf) (s16)(radf * (32768.0f / M_PI))
|
||||
#define RADF_TO_DEGF(radf) (radf * (180.0f / M_PI))
|
||||
#define DEGF_TO_RADF(degf) (degf * (M_PI / 180.0f))
|
||||
#define BINANG_ROT180(angle) ((s16)(angle - 0x7FFF))
|
||||
#define BINANG_SUB(a, b) ((s16)(a - b))
|
||||
#define DEG_TO_RAD(degrees) ((degrees) * (M_PI / 180.0f))
|
||||
#define BINANG_TO_DEGF(binang) ((f32)binang * (360.0001525f / 65535.0f))
|
||||
#define BINANG_TO_RAD(binang) (((f32)binang / 32768.0f) * M_PI)
|
||||
|
||||
// Vector macros
|
||||
#define SQXZ(vec) ((vec.x) * (vec.x) + (vec.z) * (vec.z))
|
||||
#define DOTXZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.z) * (vec2.z))
|
||||
#define SQXYZ(vec) ((vec.x) * (vec.x) + (vec.y) * (vec.y) + (vec.z) * (vec.z))
|
||||
#define DOTXYZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.y) * (vec2.y) + (vec1.z) * (vec2.z))
|
||||
|
||||
#endif
|
20
soh/include/z64object.h
Normal file
20
soh/include/z64object.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
#ifndef Z64OBJECT_H
|
||||
#define Z64OBJECT_H
|
||||
|
||||
//#define OBJECT_EXCHANGE_BANK_MAX 19
|
||||
#define OBJECT_EXCHANGE_BANK_MAX 128
|
||||
|
||||
#define DEFINE_OBJECT(_0, enum) enum,
|
||||
#define DEFINE_OBJECT_NULL(_0, enum) enum,
|
||||
#define DEFINE_OBJECT_UNSET(enum) enum,
|
||||
|
||||
typedef enum {
|
||||
#include "tables/object_table.h"
|
||||
/* 0x0192 */ OBJECT_ID_MAX
|
||||
} ObjectID;
|
||||
|
||||
#undef DEFINE_OBJECT
|
||||
#undef DEFINE_OBJECT_NULL
|
||||
#undef DEFINE_OBJECT_UNSET
|
||||
|
||||
#endif
|
608
soh/include/z64player.h
Normal file
608
soh/include/z64player.h
Normal file
|
@ -0,0 +1,608 @@
|
|||
#ifndef Z64PLAYER_H
|
||||
#define Z64PLAYER_H
|
||||
|
||||
#include "z64actor.h"
|
||||
|
||||
struct Player;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_SWORD_NONE,
|
||||
/* 1 */ PLAYER_SWORD_KOKIRI,
|
||||
/* 2 */ PLAYER_SWORD_MASTER,
|
||||
/* 3 */ PLAYER_SWORD_BGS,
|
||||
/* 4 */ PLAYER_SWORD_MAX
|
||||
} PlayerSword;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_SHIELD_NONE,
|
||||
/* 0x01 */ PLAYER_SHIELD_DEKU,
|
||||
/* 0x02 */ PLAYER_SHIELD_HYLIAN,
|
||||
/* 0x03 */ PLAYER_SHIELD_MIRROR,
|
||||
/* 0x04 */ PLAYER_SHIELD_MAX
|
||||
} PlayerShield;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_TUNIC_KOKIRI,
|
||||
/* 0x01 */ PLAYER_TUNIC_GORON,
|
||||
/* 0x02 */ PLAYER_TUNIC_ZORA,
|
||||
/* 0x03 */ PLAYER_TUNIC_MAX
|
||||
} PlayerTunic;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_BOOTS_KOKIRI,
|
||||
/* 0x01 */ PLAYER_BOOTS_IRON,
|
||||
/* 0x02 */ PLAYER_BOOTS_HOVER,
|
||||
/* Values below are only relevant when setting regs in Player_SetBootData */
|
||||
/* 0x03 */ PLAYER_BOOTS_INDOOR,
|
||||
/* 0x04 */ PLAYER_BOOTS_IRON_UNDERWATER,
|
||||
/* 0x05 */ PLAYER_BOOTS_KOKIRI_CHILD,
|
||||
/* 0x06 */ PLAYER_BOOTS_MAX
|
||||
} PlayerBoots;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_STR_NONE,
|
||||
/* 0x01 */ PLAYER_STR_BRACELET,
|
||||
/* 0x02 */ PLAYER_STR_SILVER_G,
|
||||
/* 0x03 */ PLAYER_STR_GOLD_G,
|
||||
/* 0x04 */ PLAYER_STR_MAX
|
||||
} PlayerStrength;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_MASK_NONE,
|
||||
/* 0x01 */ PLAYER_MASK_KEATON,
|
||||
/* 0x02 */ PLAYER_MASK_SKULL,
|
||||
/* 0x03 */ PLAYER_MASK_SPOOKY,
|
||||
/* 0x04 */ PLAYER_MASK_BUNNY,
|
||||
/* 0x05 */ PLAYER_MASK_GORON,
|
||||
/* 0x06 */ PLAYER_MASK_ZORA,
|
||||
/* 0x07 */ PLAYER_MASK_GERUDO,
|
||||
/* 0x08 */ PLAYER_MASK_TRUTH,
|
||||
/* 0x09 */ PLAYER_MASK_MAX
|
||||
} PlayerMask;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_AP_NONE,
|
||||
/* 0x01 */ PLAYER_AP_LAST_USED,
|
||||
/* 0x02 */ PLAYER_AP_FISHING_POLE,
|
||||
/* 0x03 */ PLAYER_AP_SWORD_MASTER,
|
||||
/* 0x04 */ PLAYER_AP_SWORD_KOKIRI,
|
||||
/* 0x05 */ PLAYER_AP_SWORD_BGS,
|
||||
/* 0x06 */ PLAYER_AP_STICK,
|
||||
/* 0x07 */ PLAYER_AP_HAMMER,
|
||||
/* 0x08 */ PLAYER_AP_BOW,
|
||||
/* 0x09 */ PLAYER_AP_BOW_FIRE,
|
||||
/* 0x0A */ PLAYER_AP_BOW_ICE,
|
||||
/* 0x0B */ PLAYER_AP_BOW_LIGHT,
|
||||
/* 0x0C */ PLAYER_AP_BOW_0C,
|
||||
/* 0x0D */ PLAYER_AP_BOW_0D,
|
||||
/* 0x0E */ PLAYER_AP_BOW_0E,
|
||||
/* 0x0F */ PLAYER_AP_SLINGSHOT,
|
||||
/* 0x10 */ PLAYER_AP_HOOKSHOT,
|
||||
/* 0x11 */ PLAYER_AP_LONGSHOT,
|
||||
/* 0x12 */ PLAYER_AP_BOMB,
|
||||
/* 0x13 */ PLAYER_AP_BOMBCHU,
|
||||
/* 0x14 */ PLAYER_AP_BOOMERANG,
|
||||
/* 0x15 */ PLAYER_AP_MAGIC_SPELL_15,
|
||||
/* 0x16 */ PLAYER_AP_MAGIC_SPELL_16,
|
||||
/* 0x17 */ PLAYER_AP_MAGIC_SPELL_17,
|
||||
/* 0x18 */ PLAYER_AP_FARORES_WIND,
|
||||
/* 0x19 */ PLAYER_AP_NAYRUS_LOVE,
|
||||
/* 0x1A */ PLAYER_AP_DINS_FIRE,
|
||||
/* 0x1B */ PLAYER_AP_NUT,
|
||||
/* 0x1C */ PLAYER_AP_OCARINA_FAIRY,
|
||||
/* 0x1D */ PLAYER_AP_OCARINA_TIME,
|
||||
/* 0x1E */ PLAYER_AP_BOTTLE,
|
||||
/* 0x1F */ PLAYER_AP_BOTTLE_FISH,
|
||||
/* 0x20 */ PLAYER_AP_BOTTLE_FIRE,
|
||||
/* 0x21 */ PLAYER_AP_BOTTLE_BUG,
|
||||
/* 0x22 */ PLAYER_AP_BOTTLE_POE,
|
||||
/* 0x23 */ PLAYER_AP_BOTTLE_BIG_POE,
|
||||
/* 0x24 */ PLAYER_AP_BOTTLE_LETTER,
|
||||
/* 0x25 */ PLAYER_AP_BOTTLE_POTION_RED,
|
||||
/* 0x26 */ PLAYER_AP_BOTTLE_POTION_BLUE,
|
||||
/* 0x27 */ PLAYER_AP_BOTTLE_POTION_GREEN,
|
||||
/* 0x28 */ PLAYER_AP_BOTTLE_MILK,
|
||||
/* 0x29 */ PLAYER_AP_BOTTLE_MILK_HALF,
|
||||
/* 0x2A */ PLAYER_AP_BOTTLE_FAIRY,
|
||||
/* 0x2B */ PLAYER_AP_LETTER_ZELDA,
|
||||
/* 0x2C */ PLAYER_AP_WEIRD_EGG,
|
||||
/* 0x2D */ PLAYER_AP_CHICKEN,
|
||||
/* 0x2E */ PLAYER_AP_BEAN,
|
||||
/* 0x2F */ PLAYER_AP_POCKET_EGG,
|
||||
/* 0x30 */ PLAYER_AP_POCKET_CUCCO,
|
||||
/* 0x31 */ PLAYER_AP_COJIRO,
|
||||
/* 0x32 */ PLAYER_AP_ODD_MUSHROOM,
|
||||
/* 0x33 */ PLAYER_AP_ODD_POTION,
|
||||
/* 0x34 */ PLAYER_AP_SAW,
|
||||
/* 0x35 */ PLAYER_AP_SWORD_BROKEN,
|
||||
/* 0x36 */ PLAYER_AP_PRESCRIPTION,
|
||||
/* 0x37 */ PLAYER_AP_FROG,
|
||||
/* 0x38 */ PLAYER_AP_EYEDROPS,
|
||||
/* 0x39 */ PLAYER_AP_CLAIM_CHECK,
|
||||
/* 0x3A */ PLAYER_AP_MASK_KEATON,
|
||||
/* 0x3B */ PLAYER_AP_MASK_SKULL,
|
||||
/* 0x3C */ PLAYER_AP_MASK_SPOOKY,
|
||||
/* 0x3D */ PLAYER_AP_MASK_BUNNY,
|
||||
/* 0x3E */ PLAYER_AP_MASK_GORON,
|
||||
/* 0x3F */ PLAYER_AP_MASK_ZORA,
|
||||
/* 0x40 */ PLAYER_AP_MASK_GERUDO,
|
||||
/* 0x41 */ PLAYER_AP_MASK_TRUTH,
|
||||
/* 0x42 */ PLAYER_AP_LENS,
|
||||
/* 0x43 */ PLAYER_AP_MAX
|
||||
} PlayerActionParam;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_LIMB_NONE,
|
||||
/* 0x01 */ PLAYER_LIMB_ROOT,
|
||||
/* 0x02 */ PLAYER_LIMB_WAIST,
|
||||
/* 0x03 */ PLAYER_LIMB_LOWER,
|
||||
/* 0x04 */ PLAYER_LIMB_R_THIGH,
|
||||
/* 0x05 */ PLAYER_LIMB_R_SHIN,
|
||||
/* 0x06 */ PLAYER_LIMB_R_FOOT,
|
||||
/* 0x07 */ PLAYER_LIMB_L_THIGH,
|
||||
/* 0x08 */ PLAYER_LIMB_L_SHIN,
|
||||
/* 0x09 */ PLAYER_LIMB_L_FOOT,
|
||||
/* 0x0A */ PLAYER_LIMB_UPPER,
|
||||
/* 0x0B */ PLAYER_LIMB_HEAD,
|
||||
/* 0x0C */ PLAYER_LIMB_HAT,
|
||||
/* 0x0D */ PLAYER_LIMB_COLLAR,
|
||||
/* 0x0E */ PLAYER_LIMB_L_SHOULDER,
|
||||
/* 0x0F */ PLAYER_LIMB_L_FOREARM,
|
||||
/* 0x10 */ PLAYER_LIMB_L_HAND,
|
||||
/* 0x11 */ PLAYER_LIMB_R_SHOULDER,
|
||||
/* 0x12 */ PLAYER_LIMB_R_FOREARM,
|
||||
/* 0x13 */ PLAYER_LIMB_R_HAND,
|
||||
/* 0x14 */ PLAYER_LIMB_SHEATH,
|
||||
/* 0x15 */ PLAYER_LIMB_TORSO,
|
||||
/* 0x16 */ PLAYER_LIMB_MAX
|
||||
} PlayerLimb;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_BODYPART_WAIST, // PLAYER_LIMB_WAIST
|
||||
/* 1 */ PLAYER_BODYPART_R_THIGH, // PLAYER_LIMB_R_THIGH
|
||||
/* 2 */ PLAYER_BODYPART_R_SHIN, // PLAYER_LIMB_R_SHIN
|
||||
/* 3 */ PLAYER_BODYPART_R_FOOT, // PLAYER_LIMB_R_FOOT
|
||||
/* 4 */ PLAYER_BODYPART_L_THIGH, // PLAYER_LIMB_L_THIGH
|
||||
/* 5 */ PLAYER_BODYPART_L_SHIN, // PLAYER_LIMB_L_SHIN
|
||||
/* 6 */ PLAYER_BODYPART_L_FOOT, // PLAYER_LIMB_L_FOOT
|
||||
/* 7 */ PLAYER_BODYPART_HEAD, // PLAYER_LIMB_HEAD
|
||||
/* 8 */ PLAYER_BODYPART_HAT, // PLAYER_LIMB_HAT
|
||||
/* 9 */ PLAYER_BODYPART_COLLAR, // PLAYER_LIMB_COLLAR
|
||||
/* 10 */ PLAYER_BODYPART_L_SHOULDER, // PLAYER_LIMB_L_SHOULDER
|
||||
/* 11 */ PLAYER_BODYPART_L_FOREARM, // PLAYER_LIMB_L_FOREARM
|
||||
/* 12 */ PLAYER_BODYPART_L_HAND, // PLAYER_LIMB_L_HAND
|
||||
/* 13 */ PLAYER_BODYPART_R_SHOULDER, // PLAYER_LIMB_R_SHOULDER
|
||||
/* 14 */ PLAYER_BODYPART_R_FOREARM, // PLAYER_LIMB_R_FOREARM
|
||||
/* 15 */ PLAYER_BODYPART_R_HAND, // PLAYER_LIMB_R_HAND
|
||||
/* 16 */ PLAYER_BODYPART_SHEATH, // PLAYER_LIMB_SHEATH
|
||||
/* 17 */ PLAYER_BODYPART_TORSO, // PLAYER_LIMB_TORSO
|
||||
/* 18 */ PLAYER_BODYPART_MAX
|
||||
} PlayerBodyPart;
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ PLAYER_DOORTYPE_AJAR = -1,
|
||||
/* 0 */ PLAYER_DOORTYPE_NONE,
|
||||
/* 1 */ PLAYER_DOORTYPE_HANDLE,
|
||||
/* 2 */ PLAYER_DOORTYPE_SLIDING,
|
||||
/* 3 */ PLAYER_DOORTYPE_FAKE
|
||||
} PlayerDoorType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_MODELGROUP_0, // unused (except with the `Player_OverrideLimbDrawPause` bug)
|
||||
/* 1 */ PLAYER_MODELGROUP_CHILD_HYLIAN_SHIELD, // kokiri/master sword, shield not in hand
|
||||
/* 2 */ PLAYER_MODELGROUP_SWORD, // kokiri/master sword and possibly shield
|
||||
/* 3 */ PLAYER_MODELGROUP_DEFAULT, // non-specific models, for items that don't have particular link models
|
||||
/* 4 */ PLAYER_MODELGROUP_4, // unused, same as PLAYER_MODELGROUP_DEFAULT
|
||||
/* 5 */ PLAYER_MODELGROUP_BGS, // biggoron sword
|
||||
/* 6 */ PLAYER_MODELGROUP_BOW_SLINGSHOT, // bow/slingshot
|
||||
/* 7 */ PLAYER_MODELGROUP_EXPLOSIVES, // bombs, bombchus, same as PLAYER_MODELGROUP_DEFAULT
|
||||
/* 8 */ PLAYER_MODELGROUP_BOOMERANG,
|
||||
/* 9 */ PLAYER_MODELGROUP_HOOKSHOT,
|
||||
/* 10 */ PLAYER_MODELGROUP_10, // stick/fishing pole (which are drawn separately)
|
||||
/* 11 */ PLAYER_MODELGROUP_HAMMER,
|
||||
/* 12 */ PLAYER_MODELGROUP_OCARINA, // ocarina
|
||||
/* 13 */ PLAYER_MODELGROUP_OOT, // ocarina of time
|
||||
/* 14 */ PLAYER_MODELGROUP_BOTTLE, // bottles (drawn separately)
|
||||
/* 15 */ PLAYER_MODELGROUP_15, // "last used"
|
||||
/* 16 */ PLAYER_MODELGROUP_MAX
|
||||
} PlayerModelGroup;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_MODELGROUPENTRY_ANIM,
|
||||
/* 1 */ PLAYER_MODELGROUPENTRY_LEFT_HAND,
|
||||
/* 2 */ PLAYER_MODELGROUPENTRY_RIGHT_HAND,
|
||||
/* 3 */ PLAYER_MODELGROUPENTRY_SHEATH,
|
||||
/* 4 */ PLAYER_MODELGROUPENTRY_WAIST,
|
||||
/* 5 */ PLAYER_MODELGROUPENTRY_MAX
|
||||
} PlayerModelGroupEntry;
|
||||
|
||||
typedef enum {
|
||||
// left hand
|
||||
/* 0 */ PLAYER_MODELTYPE_LH_OPEN, // empty open hand
|
||||
/* 1 */ PLAYER_MODELTYPE_LH_CLOSED, // empty closed hand
|
||||
/* 2 */ PLAYER_MODELTYPE_LH_SWORD, // holding kokiri/master sword
|
||||
/* 3 */ PLAYER_MODELTYPE_3, // unused, same as PLAYER_MODELTYPE_LH_SWORD
|
||||
/* 4 */ PLAYER_MODELTYPE_LH_BGS, // holding bgs/broken giant knife (child: master sword)
|
||||
/* 5 */ PLAYER_MODELTYPE_LH_HAMMER, // holding hammer (child: empty hand)
|
||||
/* 6 */ PLAYER_MODELTYPE_LH_BOOMERANG, // holding boomerang (adult: empty hand)
|
||||
/* 7 */ PLAYER_MODELTYPE_LH_BOTTLE, // holding bottle (bottle drawn separately)
|
||||
// right hand
|
||||
/* 8 */ PLAYER_MODELTYPE_RH_OPEN, // empty open hand
|
||||
/* 9 */ PLAYER_MODELTYPE_RH_CLOSED, // empty closed hand
|
||||
/* 10 */ PLAYER_MODELTYPE_RH_SHIELD, // holding a shield (including no shield)
|
||||
/* 11 */ PLAYER_MODELTYPE_RH_BOW_SLINGSHOT, // holding bow/slingshot
|
||||
/* 12 */ PLAYER_MODELTYPE_12, // unused, same as PLAYER_MODELTYPE_RH_BOW_SLINGSHOT
|
||||
/* 13 */ PLAYER_MODELTYPE_RH_OCARINA, // holding ocarina (child: fairy ocarina, adult: OoT)
|
||||
/* 14 */ PLAYER_MODELTYPE_RH_OOT, // holding OoT
|
||||
/* 15 */ PLAYER_MODELTYPE_RH_HOOKSHOT, // holding hookshot (child: empty hand)
|
||||
// sheath
|
||||
/* 16 */ PLAYER_MODELTYPE_SHEATH_16, // sheathed kokiri/master sword?
|
||||
/* 17 */ PLAYER_MODELTYPE_SHEATH_17, // empty sheath?
|
||||
/* 18 */ PLAYER_MODELTYPE_SHEATH_18, // sword sheathed and shield on back?
|
||||
/* 19 */ PLAYER_MODELTYPE_SHEATH_19, // empty sheath and shield on back?
|
||||
// waist
|
||||
/* 20 */ PLAYER_MODELTYPE_WAIST,
|
||||
/* 21 */ PLAYER_MODELTYPE_MAX,
|
||||
/* 0xFF */ PLAYER_MODELTYPE_RH_FF = 0xFF // disable shield collider, cutscene-specific
|
||||
} PlayerModelType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_ANIMTYPE_0,
|
||||
/* 1 */ PLAYER_ANIMTYPE_1,
|
||||
/* 2 */ PLAYER_ANIMTYPE_2,
|
||||
/* 3 */ PLAYER_ANIMTYPE_3,
|
||||
/* 4 */ PLAYER_ANIMTYPE_4,
|
||||
/* 5 */ PLAYER_ANIMTYPE_5,
|
||||
/* 6 */ PLAYER_ANIMTYPE_MAX
|
||||
} PlayerAnimType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_ANIMGROUP_0,
|
||||
/* 1 */ PLAYER_ANIMGROUP_1,
|
||||
/* 2 */ PLAYER_ANIMGROUP_2,
|
||||
/* 3 */ PLAYER_ANIMGROUP_3,
|
||||
/* 4 */ PLAYER_ANIMGROUP_4,
|
||||
/* 5 */ PLAYER_ANIMGROUP_5,
|
||||
/* 6 */ PLAYER_ANIMGROUP_6,
|
||||
/* 7 */ PLAYER_ANIMGROUP_7,
|
||||
/* 8 */ PLAYER_ANIMGROUP_8,
|
||||
/* 9 */ PLAYER_ANIMGROUP_9,
|
||||
/* 10 */ PLAYER_ANIMGROUP_10,
|
||||
/* 11 */ PLAYER_ANIMGROUP_11,
|
||||
/* 12 */ PLAYER_ANIMGROUP_12,
|
||||
/* 13 */ PLAYER_ANIMGROUP_13,
|
||||
/* 14 */ PLAYER_ANIMGROUP_14,
|
||||
/* 15 */ PLAYER_ANIMGROUP_15,
|
||||
/* 16 */ PLAYER_ANIMGROUP_16,
|
||||
/* 17 */ PLAYER_ANIMGROUP_17,
|
||||
/* 18 */ PLAYER_ANIMGROUP_18,
|
||||
/* 19 */ PLAYER_ANIMGROUP_19,
|
||||
/* 20 */ PLAYER_ANIMGROUP_20,
|
||||
/* 21 */ PLAYER_ANIMGROUP_21,
|
||||
/* 22 */ PLAYER_ANIMGROUP_22,
|
||||
/* 23 */ PLAYER_ANIMGROUP_23,
|
||||
/* 24 */ PLAYER_ANIMGROUP_24,
|
||||
/* 25 */ PLAYER_ANIMGROUP_25,
|
||||
/* 26 */ PLAYER_ANIMGROUP_26,
|
||||
/* 27 */ PLAYER_ANIMGROUP_27,
|
||||
/* 28 */ PLAYER_ANIMGROUP_28,
|
||||
/* 29 */ PLAYER_ANIMGROUP_29,
|
||||
/* 30 */ PLAYER_ANIMGROUP_30,
|
||||
/* 31 */ PLAYER_ANIMGROUP_31,
|
||||
/* 32 */ PLAYER_ANIMGROUP_32,
|
||||
/* 33 */ PLAYER_ANIMGROUP_33,
|
||||
/* 34 */ PLAYER_ANIMGROUP_34,
|
||||
/* 35 */ PLAYER_ANIMGROUP_35,
|
||||
/* 36 */ PLAYER_ANIMGROUP_36,
|
||||
/* 37 */ PLAYER_ANIMGROUP_37,
|
||||
/* 38 */ PLAYER_ANIMGROUP_38,
|
||||
/* 39 */ PLAYER_ANIMGROUP_39,
|
||||
/* 40 */ PLAYER_ANIMGROUP_40,
|
||||
/* 41 */ PLAYER_ANIMGROUP_41,
|
||||
/* 42 */ PLAYER_ANIMGROUP_42,
|
||||
/* 43 */ PLAYER_ANIMGROUP_43,
|
||||
/* 44 */ PLAYER_ANIMGROUP_44,
|
||||
/* 45 */ PLAYER_ANIMGROUP_MAX
|
||||
} PlayerAnimGroup;
|
||||
|
||||
#define PLAYER_LIMB_BUF_COUNT PLAYER_LIMB_MAX + 2 // 2 extra entries in limb buffers?
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 unk_00;
|
||||
/* 0x04 */ f32 unk_04;
|
||||
/* 0x08 */ f32 unk_08;
|
||||
/* 0x0C */ f32 unk_0C;
|
||||
/* 0x10 */ f32 unk_10;
|
||||
/* 0x14 */ f32 unk_14;
|
||||
/* 0x18 */ f32 unk_18;
|
||||
/* 0x1C */ f32 unk_1C;
|
||||
/* 0x20 */ f32 unk_20;
|
||||
/* 0x24 */ f32 unk_24;
|
||||
/* 0x28 */ f32 unk_28;
|
||||
/* 0x2C */ f32 unk_2C;
|
||||
/* 0x30 */ f32 unk_30;
|
||||
/* 0x34 */ f32 unk_34;
|
||||
/* 0x38 */ f32 unk_38;
|
||||
/* 0x3C */ f32 unk_3C;
|
||||
/* 0x40 */ f32 unk_40;
|
||||
/* 0x44 */ Vec3s unk_44;
|
||||
/* 0x4A */ Vec3s unk_4A[4];
|
||||
/* 0x62 */ Vec3s unk_62[4];
|
||||
/* 0x7A */ Vec3s unk_7A[2];
|
||||
/* 0x86 */ Vec3s unk_86[2];
|
||||
/* 0x92 */ u16 unk_92;
|
||||
/* 0x94 */ u16 unk_94;
|
||||
/* 0x98 */ LinkAnimationHeader* unk_98;
|
||||
/* 0x9C */ LinkAnimationHeader* unk_9C;
|
||||
/* 0xA0 */ LinkAnimationHeader* unk_A0;
|
||||
/* 0xA4 */ LinkAnimationHeader* unk_A4;
|
||||
/* 0xA8 */ LinkAnimationHeader* unk_A8;
|
||||
/* 0xAC */ LinkAnimationHeader* unk_AC[4];
|
||||
/* 0xBC */ LinkAnimationHeader* unk_BC[2];
|
||||
/* 0xC4 */ LinkAnimationHeader* unk_C4[2];
|
||||
/* 0xCC */ LinkAnimationHeader* unk_CC[2];
|
||||
} PlayerAgeProperties; // size = 0xD4
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 active;
|
||||
/* 0x04 */ Vec3f tip;
|
||||
/* 0x10 */ Vec3f base;
|
||||
} WeaponInfo; // size = 0x1C
|
||||
|
||||
#define PLAYER_STATE1_0 (1 << 0)
|
||||
#define PLAYER_STATE1_1 (1 << 1)
|
||||
#define PLAYER_STATE1_2 (1 << 2)
|
||||
#define PLAYER_STATE1_3 (1 << 3)
|
||||
#define PLAYER_STATE1_4 (1 << 4)
|
||||
#define PLAYER_STATE1_5 (1 << 5)
|
||||
#define PLAYER_STATE1_6 (1 << 6)
|
||||
#define PLAYER_STATE1_7 (1 << 7)
|
||||
#define PLAYER_STATE1_8 (1 << 8)
|
||||
#define PLAYER_STATE1_9 (1 << 9)
|
||||
#define PLAYER_STATE1_10 (1 << 10)
|
||||
#define PLAYER_STATE1_11 (1 << 11)
|
||||
#define PLAYER_STATE1_12 (1 << 12)
|
||||
#define PLAYER_STATE1_13 (1 << 13)
|
||||
#define PLAYER_STATE1_14 (1 << 14)
|
||||
#define PLAYER_STATE1_15 (1 << 15)
|
||||
#define PLAYER_STATE1_16 (1 << 16)
|
||||
#define PLAYER_STATE1_17 (1 << 17)
|
||||
#define PLAYER_STATE1_18 (1 << 18)
|
||||
#define PLAYER_STATE1_19 (1 << 19)
|
||||
#define PLAYER_STATE1_20 (1 << 20)
|
||||
#define PLAYER_STATE1_21 (1 << 21)
|
||||
#define PLAYER_STATE1_22 (1 << 22)
|
||||
#define PLAYER_STATE1_23 (1 << 23)
|
||||
#define PLAYER_STATE1_24 (1 << 24)
|
||||
#define PLAYER_STATE1_25 (1 << 25)
|
||||
#define PLAYER_STATE1_26 (1 << 26)
|
||||
#define PLAYER_STATE1_27 (1 << 27)
|
||||
#define PLAYER_STATE1_28 (1 << 28)
|
||||
#define PLAYER_STATE1_29 (1 << 29)
|
||||
#define PLAYER_STATE1_30 (1 << 30)
|
||||
#define PLAYER_STATE1_31 (1 << 31)
|
||||
|
||||
#define PLAYER_STATE2_0 (1 << 0)
|
||||
#define PLAYER_STATE2_1 (1 << 1)
|
||||
#define PLAYER_STATE2_2 (1 << 2)
|
||||
#define PLAYER_STATE2_3 (1 << 3)
|
||||
#define PLAYER_STATE2_4 (1 << 4)
|
||||
#define PLAYER_STATE2_5 (1 << 5)
|
||||
#define PLAYER_STATE2_6 (1 << 6)
|
||||
#define PLAYER_STATE2_7 (1 << 7)
|
||||
#define PLAYER_STATE2_8 (1 << 8)
|
||||
#define PLAYER_STATE2_9 (1 << 9)
|
||||
#define PLAYER_STATE2_10 (1 << 10)
|
||||
#define PLAYER_STATE2_11 (1 << 11)
|
||||
#define PLAYER_STATE2_12 (1 << 12)
|
||||
#define PLAYER_STATE2_13 (1 << 13)
|
||||
#define PLAYER_STATE2_14 (1 << 14)
|
||||
#define PLAYER_STATE2_15 (1 << 15)
|
||||
#define PLAYER_STATE2_16 (1 << 16)
|
||||
#define PLAYER_STATE2_17 (1 << 17)
|
||||
#define PLAYER_STATE2_18 (1 << 18)
|
||||
#define PLAYER_STATE2_19 (1 << 19)
|
||||
#define PLAYER_STATE2_20 (1 << 20)
|
||||
#define PLAYER_STATE2_21 (1 << 21)
|
||||
#define PLAYER_STATE2_22 (1 << 22)
|
||||
#define PLAYER_STATE2_23 (1 << 23)
|
||||
#define PLAYER_STATE2_24 (1 << 24)
|
||||
#define PLAYER_STATE2_25 (1 << 25)
|
||||
#define PLAYER_STATE2_26 (1 << 26)
|
||||
#define PLAYER_STATE2_27 (1 << 27)
|
||||
#define PLAYER_STATE2_28 (1 << 28)
|
||||
#define PLAYER_STATE2_29 (1 << 29)
|
||||
#define PLAYER_STATE2_30 (1 << 30)
|
||||
#define PLAYER_STATE2_31 (1 << 31)
|
||||
|
||||
#define PLAYER_STATE3_0 (1 << 0)
|
||||
#define PLAYER_STATE3_1 (1 << 1)
|
||||
#define PLAYER_STATE3_2 (1 << 2)
|
||||
#define PLAYER_STATE3_3 (1 << 3)
|
||||
#define PLAYER_STATE3_4 (1 << 4)
|
||||
#define PLAYER_STATE3_5 (1 << 5)
|
||||
#define PLAYER_STATE3_6 (1 << 6)
|
||||
#define PLAYER_STATE3_7 (1 << 7)
|
||||
|
||||
typedef void (*PlayerFunc674)(struct Player*, struct GlobalContext*);
|
||||
typedef s32(*PlayerFunc82C)(struct Player*, struct GlobalContext*);
|
||||
typedef void (*PlayerFuncA74)(struct GlobalContext*, struct Player*);
|
||||
|
||||
typedef struct Player {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ s8 currentTunic; // current tunic from `PlayerTunic`
|
||||
/* 0x014D */ s8 currentSwordItem; // current sword Item ID
|
||||
/* 0x014E */ s8 currentShield; // current shield from `PlayerShield`
|
||||
/* 0x014F */ s8 currentBoots; // current boots from `PlayerBoots`
|
||||
/* 0x0150 */ s8 heldItemButton; // Button index for the item currently used
|
||||
/* 0x0151 */ s8 heldItemActionParam; // Action param for the item currently used
|
||||
/* 0x0152 */ u8 heldItemId; // Item id for the item currently used
|
||||
/* 0x0153 */ s8 prevBoots; // previous boots from `PlayerBoots`
|
||||
/* 0x0154 */ s8 itemActionParam; // the difference between this and heldItemActionParam is unclear
|
||||
/* 0x0155 */ char unk_155[0x003];
|
||||
/* 0x0158 */ u8 modelGroup;
|
||||
/* 0x0159 */ u8 nextModelGroup;
|
||||
/* 0x015A */ s8 unk_15A;
|
||||
/* 0x015B */ u8 modelAnimType;
|
||||
/* 0x015C */ u8 leftHandType;
|
||||
/* 0x015D */ u8 rightHandType;
|
||||
/* 0x015E */ u8 sheathType;
|
||||
/* 0x015F */ u8 currentMask; // current mask equipped from `PlayerMask`
|
||||
/* 0x0160 */ Gfx** rightHandDLists;
|
||||
/* 0x0164 */ Gfx** leftHandDLists;
|
||||
/* 0x0168 */ Gfx** sheathDLists;
|
||||
/* 0x016C */ Gfx** waistDLists;
|
||||
/* 0x0170 */ u8 giObjectLoading;
|
||||
/* 0x0174 */ DmaRequest giObjectDmaRequest;
|
||||
/* 0x0194 */ OSMesgQueue giObjectLoadQueue;
|
||||
/* 0x01AC */ OSMesg giObjectLoadMsg;
|
||||
/* 0x01B0 */ void* giObjectSegment; // also used for title card textures
|
||||
/* 0x01B4 */ SkelAnime skelAnime;
|
||||
/* 0x01F8 */ Vec3s jointTable[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x0288 */ Vec3s morphTable[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x0318 */ Vec3s blendTable[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x03A8 */ s16 unk_3A8[2];
|
||||
/* 0x03AC */ Actor* heldActor;
|
||||
/* 0x03B0 */ Vec3f leftHandPos;
|
||||
/* 0x03BC */ Vec3s unk_3BC;
|
||||
/* 0x03C4 */ Actor* unk_3C4;
|
||||
/* 0x03C8 */ Vec3f unk_3C8;
|
||||
/* 0x03D4 */ char unk_3D4[0x058];
|
||||
/* 0x042C */ s8 doorType;
|
||||
/* 0x042D */ s8 doorDirection;
|
||||
/* 0x042E */ s16 doorTimer;
|
||||
/* 0x0430 */ Actor* doorActor;
|
||||
/* 0x0434 */ s8 getItemId;
|
||||
/* 0x0436 */ u16 getItemDirection;
|
||||
/* 0x0438 */ Actor* interactRangeActor;
|
||||
/* 0x043C */ s8 mountSide;
|
||||
/* 0x043D */ char unk_43D[0x003];
|
||||
/* 0x0440 */ Actor* rideActor;
|
||||
/* 0x0444 */ u8 csMode;
|
||||
/* 0x0445 */ u8 prevCsMode;
|
||||
/* 0x0446 */ u8 unk_446;
|
||||
/* 0x0447 */ u8 unk_447;
|
||||
/* 0x0448 */ Actor* unk_448;
|
||||
/* 0x044C */ char unk_44C[0x004];
|
||||
/* 0x0450 */ Vec3f unk_450;
|
||||
/* 0x045C */ Vec3f unk_45C;
|
||||
/* 0x0468 */ char unk_468[0x002];
|
||||
/* 0x046A */ s16 unk_46A;
|
||||
/* 0x046C */ s16 unk_46C;
|
||||
/* 0x046E */ char unk_46E[0x02A];
|
||||
/* 0x0498 */ ColliderCylinder cylinder;
|
||||
/* 0x04E4 */ ColliderQuad swordQuads[2];
|
||||
/* 0x05E4 */ ColliderQuad shieldQuad;
|
||||
/* 0x0664 */ Actor* unk_664;
|
||||
/* 0x0668 */ char unk_668[0x004];
|
||||
/* 0x066C */ s32 unk_66C;
|
||||
/* 0x0670 */ s32 swordEffectIndex;
|
||||
/* 0x0674 */ PlayerFunc674 func_674;
|
||||
/* 0x0678 */ PlayerAgeProperties* ageProperties;
|
||||
/* 0x067C */ u32 stateFlags1;
|
||||
/* 0x0680 */ u32 stateFlags2;
|
||||
/* 0x0684 */ Actor* unk_684;
|
||||
/* 0x0688 */ Actor* boomerangActor;
|
||||
/* 0x068C */ Actor* naviActor;
|
||||
/* 0x0690 */ s16 naviTextId;
|
||||
/* 0x0692 */ u8 stateFlags3;
|
||||
/* 0x0693 */ s8 exchangeItemId;
|
||||
/* 0x0694 */ Actor* targetActor;
|
||||
/* 0x0698 */ f32 targetActorDistance;
|
||||
/* 0x069C */ char unk_69C[0x004];
|
||||
/* 0x06A0 */ f32 unk_6A0;
|
||||
/* 0x06A4 */ f32 unk_6A4;
|
||||
/* 0x06A8 */ Actor* unk_6A8;
|
||||
/* 0x06AC */ s8 unk_6AC;
|
||||
/* 0x06AD */ u8 unk_6AD;
|
||||
/* 0x06AE */ u16 unk_6AE;
|
||||
/* 0x06B0 */ s16 unk_6B0;
|
||||
/* 0x06B2 */ char unk_6B4[0x004];
|
||||
/* 0x06B6 */ s16 unk_6B6;
|
||||
/* 0x06B8 */ s16 unk_6B8;
|
||||
/* 0x06BA */ s16 unk_6BA;
|
||||
/* 0x06BC */ s16 unk_6BC;
|
||||
/* 0x06BE */ s16 unk_6BE;
|
||||
/* 0x06C0 */ s16 unk_6C0;
|
||||
/* 0x06C2 */ s16 unk_6C2;
|
||||
/* 0x06C4 */ f32 unk_6C4;
|
||||
/* 0x06C8 */ SkelAnime skelAnime2;
|
||||
/* 0x070C */ Vec3s jointTable2[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x079C */ Vec3s morphTable2[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x082C */ PlayerFunc82C func_82C;
|
||||
/* 0x0830 */ f32 unk_830;
|
||||
/* 0x0834 */ s16 unk_834;
|
||||
/* 0x0836 */ s8 unk_836;
|
||||
/* 0x0837 */ u8 unk_837;
|
||||
/* 0x0838 */ f32 linearVelocity;
|
||||
/* 0x083C */ s16 currentYaw;
|
||||
/* 0x083E */ s16 targetYaw;
|
||||
/* 0x0840 */ u16 unk_840;
|
||||
/* 0x0842 */ s8 swordAnimation;
|
||||
/* 0x0843 */ s8 swordState;
|
||||
/* 0x0844 */ s8 unk_844;
|
||||
/* 0x0845 */ u8 unk_845;
|
||||
/* 0x0846 */ u8 unk_846;
|
||||
/* 0x0847 */ s8 unk_847[4];
|
||||
/* 0x084B */ s8 unk_84B[4];
|
||||
/* 0x084F */ s8 unk_84F;
|
||||
/* 0x0850 */ s16 unk_850; // multipurpose timer
|
||||
/* 0x0854 */ f32 unk_854;
|
||||
/* 0x0858 */ f32 unk_858;
|
||||
/* 0x085C */ f32 unk_85C; // stick length among other things
|
||||
/* 0x0860 */ s16 unk_860; // stick flame timer among other things
|
||||
/* 0x0862 */ s8 unk_862; // get item draw ID + 1
|
||||
/* 0x0864 */ f32 unk_864;
|
||||
/* 0x0868 */ f32 unk_868;
|
||||
/* 0x086C */ f32 unk_86C;
|
||||
/* 0x0870 */ f32 unk_870;
|
||||
/* 0x0874 */ f32 unk_874;
|
||||
/* 0x0878 */ f32 unk_878;
|
||||
/* 0x087C */ s16 unk_87C;
|
||||
/* 0x087E */ s16 unk_87E;
|
||||
/* 0x0880 */ f32 unk_880;
|
||||
/* 0x0884 */ f32 wallHeight; // height used to determine whether link can climb or grab a ledge at the top
|
||||
/* 0x0888 */ f32 wallDistance; // distance to the colliding wall plane
|
||||
/* 0x088C */ u8 unk_88C;
|
||||
/* 0x088D */ u8 unk_88D;
|
||||
/* 0x088E */ u8 unk_88E;
|
||||
/* 0x088F */ u8 unk_88F;
|
||||
/* 0x0890 */ u8 unk_890;
|
||||
/* 0x0891 */ u8 shockTimer;
|
||||
/* 0x0892 */ u8 unk_892;
|
||||
/* 0x0893 */ u8 hoverBootsTimer;
|
||||
/* 0x0894 */ s16 fallStartHeight; // last truncated Y position before falling
|
||||
/* 0x0896 */ s16 fallDistance; // truncated Y distance the player has fallen so far (positive is down)
|
||||
/* 0x0898 */ s16 unk_898;
|
||||
/* 0x089A */ s16 unk_89A;
|
||||
/* 0x089C */ s16 unk_89C;
|
||||
/* 0x089E */ u16 unk_89E;
|
||||
/* 0x08A0 */ u8 unk_8A0;
|
||||
/* 0x08A1 */ u8 unk_8A1;
|
||||
/* 0x08A2 */ s16 unk_8A2;
|
||||
/* 0x08A4 */ f32 unk_8A4;
|
||||
/* 0x08A8 */ f32 unk_8A8;
|
||||
/* 0x08AC */ f32 windSpeed;
|
||||
/* 0x08B0 */ s16 windDirection;
|
||||
/* 0x08B4 */ WeaponInfo swordInfo[3];
|
||||
/* 0x0908 */ Vec3f bodyPartsPos[18];
|
||||
/* 0x09E0 */ MtxF mf_9E0;
|
||||
/* 0x0A20 */ MtxF shieldMf;
|
||||
/* 0x0A60 */ u8 isBurning;
|
||||
/* 0x0A61 */ u8 flameTimers[18]; // one flame per body part
|
||||
/* 0x0A73 */ u8 unk_A73;
|
||||
/* 0x0A74 */ PlayerFuncA74 func_A74;
|
||||
/* 0x0A78 */ s8 invincibilityTimer; // prevents damage when nonzero (positive = visible, counts towards zero each frame)
|
||||
/* 0x0A79 */ u8 unk_A79;
|
||||
/* 0x0A7A */ u8 unk_A7A;
|
||||
/* 0x0A7B */ u8 unk_A7B;
|
||||
/* 0x0A7C */ f32 unk_A7C;
|
||||
/* 0x0A80 */ s16 unk_A80;
|
||||
/* 0x0A82 */ u16 unk_A82;
|
||||
/* 0x0A84 */ s16 unk_A84;
|
||||
/* 0x0A86 */ s8 unk_A86;
|
||||
/* 0x0A87 */ u8 unk_A87;
|
||||
/* 0x0A88 */ Vec3f unk_A88; // previous body part 0 position
|
||||
} Player; // size = 0xA94
|
||||
|
||||
#endif
|
215
soh/include/z64save.h
Normal file
215
soh/include/z64save.h
Normal file
|
@ -0,0 +1,215 @@
|
|||
#ifndef Z64SAVE_H
|
||||
#define Z64SAVE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64math.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 buttonItems[4];
|
||||
/* 0x04 */ u8 cButtonSlots[3];
|
||||
/* 0x08 */ u16 equipment;
|
||||
} ItemEquips; // size = 0x0A
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 items[24];
|
||||
/* 0x18 */ s8 ammo[16];
|
||||
/* 0x28 */ u16 equipment;
|
||||
/* 0x2C */ u32 upgrades;
|
||||
/* 0x30 */ u32 questItems;
|
||||
/* 0x34 */ u8 dungeonItems[20];
|
||||
/* 0x48 */ s8 dungeonKeys[19];
|
||||
/* 0x5B */ s8 defenseHearts;
|
||||
/* 0x5C */ s16 gsTokens;
|
||||
} Inventory; // size = 0x5E
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 chest;
|
||||
/* 0x04 */ u32 swch;
|
||||
/* 0x08 */ u32 clear;
|
||||
/* 0x0C */ u32 collect;
|
||||
/* 0x10 */ u32 unk;
|
||||
/* 0x14 */ u32 rooms;
|
||||
/* 0x18 */ u32 floors;
|
||||
} SavedSceneFlags; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 scene;
|
||||
/* 0x02 */ Vec3s pos;
|
||||
/* 0x08 */ s16 angle;
|
||||
} HorseData; // size = 0x0A
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f pos;
|
||||
/* 0x0C */ s16 yaw;
|
||||
/* 0x0E */ s16 playerParams;
|
||||
/* 0x10 */ s16 entranceIndex;
|
||||
/* 0x12 */ u8 roomIndex;
|
||||
/* 0x13 */ s8 data;
|
||||
/* 0x14 */ u32 tempSwchFlags;
|
||||
/* 0x18 */ u32 tempCollectFlags;
|
||||
} RespawnData; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3i pos;
|
||||
/* 0x0C */ s32 yaw;
|
||||
/* 0x10 */ s32 playerParams;
|
||||
/* 0x14 */ s32 entranceIndex;
|
||||
/* 0x18 */ s32 roomIndex;
|
||||
/* 0x1C */ s32 set;
|
||||
/* 0x20 */ s32 tempSwchFlags;
|
||||
/* 0x24 */ s32 tempCollectFlags;
|
||||
} FaroresWindData; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ s32 entranceIndex; // start of `save` substruct, originally called "memory"
|
||||
/* 0x0004 */ s32 linkAge; // 0: Adult; 1: Child
|
||||
/* 0x0008 */ s32 cutsceneIndex;
|
||||
/* 0x000C */ u16 dayTime; // "zelda_time"
|
||||
/* 0x0010 */ s32 nightFlag;
|
||||
/* 0x0014 */ s32 totalDays;
|
||||
/* 0x0018 */ s32 bgsDayCount; // increments with totalDays, can be cleared with `Environment_ClearBgsDayCount`
|
||||
/* 0x001C */ char newf[6]; // string "ZELDAZ". start of `info` substruct, originally called "information"
|
||||
/* 0x0022 */ u16 deaths;
|
||||
/* 0x0024 */ char playerName[8];
|
||||
/* 0x002C */ s16 n64ddFlag;
|
||||
/* 0x002E */ s16 healthCapacity; // "max_life"
|
||||
/* 0x0030 */ s16 health; // "now_life"
|
||||
/* 0x0032 */ s8 magicLevel;
|
||||
/* 0x0033 */ s8 magic;
|
||||
/* 0x0034 */ s16 rupees;
|
||||
/* 0x0036 */ u16 swordHealth;
|
||||
/* 0x0038 */ u16 naviTimer;
|
||||
/* 0x003A */ u8 magicAcquired;
|
||||
/* 0x003B */ char unk_3B[0x01];
|
||||
/* 0x003C */ u8 doubleMagic;
|
||||
/* 0x003D */ u8 doubleDefense;
|
||||
/* 0x003E */ u8 bgsFlag;
|
||||
/* 0x003F */ u8 ocarinaGameRoundNum;
|
||||
/* 0x0040 */ ItemEquips childEquips;
|
||||
/* 0x004A */ ItemEquips adultEquips;
|
||||
/* 0x0054 */ u32 unk_54; // this may be incorrect, currently used for alignement
|
||||
/* 0x0058 */ char unk_58[0x0E];
|
||||
/* 0x0066 */ s16 savedSceneNum;
|
||||
/* 0x0068 */ ItemEquips equips;
|
||||
/* 0x0074 */ Inventory inventory;
|
||||
/* 0x00D4 */ SavedSceneFlags sceneFlags[124];
|
||||
/* 0x0E64 */ FaroresWindData fw;
|
||||
/* 0x0E8C */ char unk_E8C[0x10];
|
||||
/* 0x0E9C */ s32 gsFlags[6];
|
||||
/* 0x0EB4 */ char unk_EB4[0x4];
|
||||
/* 0x0EB8 */ s32 highScores[7];
|
||||
/* 0x0ED4 */ u16 eventChkInf[14]; // "event_chk_inf"
|
||||
/* 0x0EF0 */ u16 itemGetInf[4]; // "item_get_inf"
|
||||
/* 0x0EF8 */ u16 infTable[30]; // "inf_table"
|
||||
/* 0x0F34 */ char unk_F34[0x04];
|
||||
/* 0x0F38 */ u32 worldMapAreaData; // "area_arrival"
|
||||
/* 0x0F3C */ char unk_F3C[0x4];
|
||||
/* 0x0F40 */ u8 scarecrowCustomSongSet;
|
||||
/* 0x0F41 */ u8 scarecrowCustomSong[0x360];
|
||||
/* 0x12A1 */ char unk_12A1[0x24];
|
||||
/* 0x12C5 */ u8 scarecrowSpawnSongSet;
|
||||
/* 0x12C6 */ u8 scarecrowSpawnSong[0x80];
|
||||
/* 0x1346 */ char unk_1346[0x02];
|
||||
/* 0x1348 */ HorseData horseData;
|
||||
/* 0x1352 */ u16 checksum; // "check_sum"
|
||||
/* 0x1354 */ s32 fileNum; // "file_no"
|
||||
/* 0x1358 */ char unk_1358[0x0004];
|
||||
/* 0x135C */ s32 gameMode;
|
||||
/* 0x1360 */ s32 sceneSetupIndex;
|
||||
/* 0x1364 */ s32 respawnFlag; // "restart_flag"
|
||||
/* 0x1368 */ RespawnData respawn[3]; // "restart_data"
|
||||
/* 0x13BC */ f32 entranceSpeed;
|
||||
/* 0x13C0 */ u16 entranceSound;
|
||||
/* 0x13C2 */ char unk_13C2[0x0001];
|
||||
/* 0x13C3 */ u8 unk_13C3;
|
||||
/* 0x13C4 */ s16 dogParams;
|
||||
/* 0x13C6 */ u8 textTriggerFlags;
|
||||
/* 0x13C7 */ u8 showTitleCard;
|
||||
/* 0x13C8 */ s16 nayrusLoveTimer;
|
||||
/* 0x13CA */ char unk_13CA[0x0002];
|
||||
/* 0x13CC */ s16 rupeeAccumulator;
|
||||
/* 0x13CE */ s16 timer1State;
|
||||
/* 0x13D0 */ s16 timer1Value;
|
||||
/* 0x13D2 */ s16 timer2State;
|
||||
/* 0x13D4 */ s16 timer2Value;
|
||||
/* 0x13D6 */ s16 timerX[2];
|
||||
/* 0x13DA */ s16 timerY[2];
|
||||
/* 0x13DE */ char unk_13DE[0x0002];
|
||||
/* 0x13E0 */ u8 seqId;
|
||||
/* 0x13E1 */ u8 natureAmbienceId;
|
||||
/* 0x13E2 */ u8 buttonStatus[5];
|
||||
/* 0x13E7 */ u8 unk_13E7; // alpha related
|
||||
/* 0x13E8 */ u16 unk_13E8; // alpha type?
|
||||
/* 0x13EA */ u16 unk_13EA; // also alpha type?
|
||||
/* 0x13EC */ u16 unk_13EC; // alpha type counter?
|
||||
/* 0x13EE */ u16 unk_13EE; // previous alpha type?
|
||||
/* 0x13F0 */ s16 unk_13F0; // magic related
|
||||
/* 0x13F2 */ s16 unk_13F2; // magic related
|
||||
/* 0x13F4 */ s16 unk_13F4; // magic related
|
||||
/* 0x13F6 */ s16 unk_13F6; // magic related
|
||||
/* 0x13F8 */ s16 unk_13F8; // magic related
|
||||
/* 0x13FA */ u16 eventInf[4]; // "event_inf"
|
||||
/* 0x1402 */ u16 mapIndex; // intended for maps/minimaps but commonly used as the dungeon index
|
||||
/* 0x1404 */ u16 minigameState;
|
||||
/* 0x1406 */ u16 minigameScore; // "yabusame_total"
|
||||
/* 0x1408 */ char unk_1408[0x0001];
|
||||
/* 0x1409 */ u8 language; // NTSC 0: Japanese; 1: English | PAL 0: English; 1: German; 2: French
|
||||
/* 0x140A */ u8 audioSetting;
|
||||
/* 0x140B */ char unk_140B[0x0001];
|
||||
/* 0x140C */ u8 zTargetSetting; // 0: Switch; 1: Hold
|
||||
/* 0x140E */ u16 forcedSeqId; // immediately start playing the sequence if set
|
||||
/* 0x1410 */ u8 unk_1410; // transition related
|
||||
/* 0x1411 */ char unk_1411[0x0001];
|
||||
/* 0x1412 */ u16 nextCutsceneIndex;
|
||||
/* 0x1414 */ u8 cutsceneTrigger;
|
||||
/* 0x1415 */ u8 chamberCutsceneNum;
|
||||
/* 0x1416 */ u16 nextDayTime; // "next_zelda_time"
|
||||
/* 0x1418 */ u8 fadeDuration;
|
||||
/* 0x1419 */ u8 unk_1419; // transition related
|
||||
/* 0x141A */ u16 skyboxTime;
|
||||
/* 0x141C */ u8 dogIsLost;
|
||||
/* 0x141D */ u8 nextTransition;
|
||||
/* 0x141E */ char unk_141E[0x0002];
|
||||
/* 0x1420 */ s16 worldMapArea;
|
||||
/* 0x1422 */ s16 sunsSongState; // controls the effects of suns song
|
||||
/* 0x1424 */ s16 healthAccumulator;
|
||||
} SaveContext; // size = 0x1428
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ RESPAWN_MODE_DOWN, /* Normal Void Outs */
|
||||
/* 0x01 */ RESPAWN_MODE_RETURN, /* Grotto Returnpoints */
|
||||
/* 0x02 */ RESPAWN_MODE_TOP /* Farore's Wind */
|
||||
} RespawnMode;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ BTN_ENABLED,
|
||||
/* 0xFF */ BTN_DISABLED = 0xFF
|
||||
} ButtonStatus;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ CHAMBER_CS_FOREST,
|
||||
/* 0x01 */ CHAMBER_CS_FIRE,
|
||||
/* 0x02 */ CHAMBER_CS_WATER,
|
||||
/* 0x03 */ CHAMBER_CS_SPIRIT,
|
||||
/* 0x04 */ CHAMBER_CS_SHADOW,
|
||||
/* 0x05 */ CHAMBER_CS_LIGHT
|
||||
} ChamberCutsceneNum;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ HS_HBA, // horseback archery
|
||||
/* 0x01 */ HS_POE_POINTS,
|
||||
/* 0x02 */ HS_FISHING,
|
||||
/* 0x03 */ HS_HORSE_RACE,
|
||||
/* 0x04 */ HS_MARATHON,
|
||||
/* 0x05 */ HS_UNK_05,
|
||||
/* 0x06 */ HS_DAMPE_RACE
|
||||
} HighScores;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SUNSSONG_INACTIVE,
|
||||
/* 1 */ SUNSSONG_START, // the suns ocarina effect signals that the song has finished playing
|
||||
/* 2 */ SUNSSONG_SPEED_TIME, // suns was played where time passes, speed up the advancement of time
|
||||
/* 3 */ SUNSSONG_SPECIAL // time does not advance, but signals the song was played. used for freezing redeads
|
||||
} SunsSongState;
|
||||
|
||||
#endif
|
532
soh/include/z64scene.h
Normal file
532
soh/include/z64scene.h
Normal file
|
@ -0,0 +1,532 @@
|
|||
#ifndef Z64SCENE_H
|
||||
#define Z64SCENE_H
|
||||
|
||||
#include "command_macros_base.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uintptr_t vromStart;
|
||||
/* 0x04 */ uintptr_t vromEnd;
|
||||
char* fileName;
|
||||
} RomFile; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ RomFile sceneFile;
|
||||
/* 0x08 */ RomFile titleFile;
|
||||
/* 0x10 */ u8 unk_10;
|
||||
/* 0x11 */ u8 config;
|
||||
/* 0x12 */ u8 unk_12;
|
||||
/* 0x13 */ u8 unk_13;
|
||||
} SceneTableEntry; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ u32 data2;
|
||||
} SCmdBase;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdSpawnList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 num;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdActorList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdUnused02;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdColHeader;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 num;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdRoomList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x02 */ char pad[2];
|
||||
/* 0x04 */ u8 x;
|
||||
/* 0x05 */ u8 y;
|
||||
/* 0x06 */ u8 z;
|
||||
/* 0x07 */ u8 unk_07;
|
||||
} SCmdWindSettings;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdEntranceList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 cUpElfMsgNum;
|
||||
/* 0x04 */ u32 keepObjectId;
|
||||
} SCmdSpecialFiles;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 gpFlag1;
|
||||
/* 0x04 */ u32 gpFlag2;
|
||||
} SCmdRoomBehavior;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdMesh;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 num;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdObjectList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 num;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdLightList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdPathList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 num;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdTransiActorList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 num;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdLightSettingList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x02 */ char pad[2];
|
||||
/* 0x04 */ u8 hour;
|
||||
/* 0x05 */ u8 min;
|
||||
/* 0x06 */ u8 unk_06;
|
||||
} SCmdTimeSettings;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x02 */ char pad[2];
|
||||
/* 0x04 */ u8 skyboxId;
|
||||
/* 0x05 */ u8 unk_05;
|
||||
/* 0x06 */ u8 unk_06;
|
||||
} SCmdSkyboxSettings;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x02 */ char pad[2];
|
||||
/* 0x04 */ u8 unk_04;
|
||||
/* 0x05 */ u8 unk_05;
|
||||
} SCmdSkyboxDisables;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ u32 data2;
|
||||
} SCmdEndMarker;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdExitList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 specId;
|
||||
/* 0x02 */ char pad[4];
|
||||
/* 0x06 */ u8 natureAmbienceId;
|
||||
/* 0x07 */ u8 seqId;
|
||||
} SCmdSoundSettings;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x02 */ char pad[5];
|
||||
/* 0x07 */ u8 echo;
|
||||
} SCmdEchoSettings;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdCutsceneData;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdAltHeaders;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 cameraMovement;
|
||||
/* 0x04 */ u32 area;
|
||||
} SCmdMiscSettings;
|
||||
|
||||
typedef struct {
|
||||
u8 headerType;
|
||||
} MeshHeaderBase;
|
||||
|
||||
typedef struct {
|
||||
MeshHeaderBase base;
|
||||
u8 numEntries;
|
||||
Gfx* dListStart;
|
||||
Gfx* dListEnd;
|
||||
} MeshHeader0;
|
||||
|
||||
typedef struct {
|
||||
Gfx* opaqueDList;
|
||||
Gfx* translucentDList;
|
||||
} MeshEntry0;
|
||||
|
||||
typedef struct {
|
||||
MeshHeaderBase base;
|
||||
u8 format;
|
||||
u32 entryRecord;
|
||||
} MeshHeader1Base;
|
||||
|
||||
typedef struct {
|
||||
MeshHeader1Base base;
|
||||
void* imagePtr; // 0x08
|
||||
u32 unknown; // 0x0C
|
||||
u32 unknown2; // 0x10
|
||||
u16 bgWidth; // 0x14
|
||||
u16 bgHeight; // 0x16
|
||||
u8 imageFormat; // 0x18
|
||||
u8 imageSize; // 0x19
|
||||
u16 imagePal; // 0x1A
|
||||
u16 imageFlip; // 0x1C
|
||||
} MeshHeader1Single;
|
||||
|
||||
typedef struct {
|
||||
MeshHeader1Base base;
|
||||
u8 bgCnt;
|
||||
void* bgRecordPtr;
|
||||
} MeshHeader1Multi;
|
||||
|
||||
typedef struct {
|
||||
u16 unknown; // 0x00
|
||||
s8 bgID; // 0x02
|
||||
void* imagePtr; // 0x04
|
||||
u32 unknown2; // 0x08
|
||||
u32 unknown3; // 0x0C
|
||||
u16 bgWidth; // 0x10
|
||||
u16 bgHeight; // 0x12
|
||||
u8 imageFmt; // 0x14
|
||||
u8 imageSize; // 0x15
|
||||
u16 imagePal; // 0x16
|
||||
u16 imageFlip; // 0x18
|
||||
} BackgroundRecord;
|
||||
|
||||
typedef struct {
|
||||
s16 playerXMax, playerZMax;
|
||||
s16 playerXMin, playerZMin;
|
||||
Gfx* opaqueDList;
|
||||
Gfx* translucentDList;
|
||||
} MeshEntry2;
|
||||
|
||||
typedef struct {
|
||||
MeshHeaderBase base;
|
||||
u8 numEntries;
|
||||
Gfx* dListStart;
|
||||
Gfx* dListEnd;
|
||||
} MeshHeader2;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 ambientColor[3];
|
||||
/* 0x03 */ s8 diffuseDir1[3];
|
||||
/* 0x06 */ u8 diffuseColor1[3];
|
||||
/* 0x09 */ s8 diffuseDir2[3];
|
||||
/* 0x0C */ u8 diffuseColor2[3];
|
||||
/* 0x0F */ u8 fogColor[3];
|
||||
/* 0x12 */ u16 fogNear;
|
||||
/* 0x14 */ u16 fogFar;
|
||||
} LightSettings; // size = 0x16
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 count; // number of points in the path
|
||||
/* 0x04 */ Vec3s* points; // Segment Address to the array of points
|
||||
} Path; // size = 0x8
|
||||
|
||||
typedef union {
|
||||
SCmdBase base;
|
||||
SCmdSpawnList spawnList;
|
||||
SCmdActorList actorList;
|
||||
SCmdUnused02 unused02;
|
||||
SCmdRoomList roomList;
|
||||
SCmdEntranceList entranceList;
|
||||
SCmdObjectList objectList;
|
||||
SCmdLightList lightList;
|
||||
SCmdPathList pathList;
|
||||
SCmdTransiActorList transiActorList;
|
||||
SCmdLightSettingList lightSettingList;
|
||||
SCmdExitList exitList;
|
||||
SCmdColHeader colHeader;
|
||||
SCmdMesh mesh;
|
||||
SCmdSpecialFiles specialFiles;
|
||||
SCmdCutsceneData cutsceneData;
|
||||
SCmdRoomBehavior roomBehavior;
|
||||
SCmdWindSettings windSettings;
|
||||
SCmdTimeSettings timeSettings;
|
||||
SCmdSkyboxSettings skyboxSettings;
|
||||
SCmdSkyboxDisables skyboxDisables;
|
||||
SCmdEndMarker endMarker;
|
||||
SCmdSoundSettings soundSettings;
|
||||
SCmdEchoSettings echoSettings;
|
||||
SCmdMiscSettings miscSettings;
|
||||
SCmdAltHeaders altHeaders;
|
||||
} SceneCmd; // size = 0x8
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ SCENE_YDAN,
|
||||
/* 0x01 */ SCENE_DDAN,
|
||||
/* 0x02 */ SCENE_BDAN,
|
||||
/* 0x03 */ SCENE_BMORI1,
|
||||
/* 0x04 */ SCENE_HIDAN,
|
||||
/* 0x05 */ SCENE_MIZUSIN,
|
||||
/* 0x06 */ SCENE_JYASINZOU,
|
||||
/* 0x07 */ SCENE_HAKADAN,
|
||||
/* 0x08 */ SCENE_HAKADANCH,
|
||||
/* 0x09 */ SCENE_ICE_DOUKUTO,
|
||||
/* 0x0A */ SCENE_GANON,
|
||||
/* 0x0B */ SCENE_MEN,
|
||||
/* 0x0C */ SCENE_GERUDOWAY,
|
||||
/* 0x0D */ SCENE_GANONTIKA,
|
||||
/* 0x0E */ SCENE_GANON_SONOGO,
|
||||
/* 0x0F */ SCENE_GANONTIKA_SONOGO,
|
||||
/* 0x10 */ SCENE_TAKARAYA,
|
||||
/* 0x11 */ SCENE_YDAN_BOSS,
|
||||
/* 0x12 */ SCENE_DDAN_BOSS,
|
||||
/* 0x13 */ SCENE_BDAN_BOSS,
|
||||
/* 0x14 */ SCENE_MORIBOSSROOM,
|
||||
/* 0x15 */ SCENE_FIRE_BS,
|
||||
/* 0x16 */ SCENE_MIZUSIN_BS,
|
||||
/* 0x17 */ SCENE_JYASINBOSS,
|
||||
/* 0x18 */ SCENE_HAKADAN_BS,
|
||||
/* 0x19 */ SCENE_GANON_BOSS,
|
||||
/* 0x1A */ SCENE_GANON_FINAL,
|
||||
/* 0x1B */ SCENE_ENTRA,
|
||||
/* 0x1C */ SCENE_ENTRA_N,
|
||||
/* 0x1D */ SCENE_ENRUI,
|
||||
/* 0x1E */ SCENE_MARKET_ALLEY,
|
||||
/* 0x1F */ SCENE_MARKET_ALLEY_N,
|
||||
/* 0x20 */ SCENE_MARKET_DAY,
|
||||
/* 0x21 */ SCENE_MARKET_NIGHT,
|
||||
/* 0x22 */ SCENE_MARKET_RUINS,
|
||||
/* 0x23 */ SCENE_SHRINE,
|
||||
/* 0x24 */ SCENE_SHRINE_N,
|
||||
/* 0x25 */ SCENE_SHRINE_R,
|
||||
/* 0x26 */ SCENE_KOKIRI_HOME,
|
||||
/* 0x27 */ SCENE_KOKIRI_HOME3,
|
||||
/* 0x28 */ SCENE_KOKIRI_HOME4,
|
||||
/* 0x29 */ SCENE_KOKIRI_HOME5,
|
||||
/* 0x2A */ SCENE_KAKARIKO,
|
||||
/* 0x2B */ SCENE_KAKARIKO3,
|
||||
/* 0x2C */ SCENE_SHOP1,
|
||||
/* 0x2D */ SCENE_KOKIRI_SHOP,
|
||||
/* 0x2E */ SCENE_GOLON,
|
||||
/* 0x2F */ SCENE_ZOORA,
|
||||
/* 0x30 */ SCENE_DRAG,
|
||||
/* 0x31 */ SCENE_ALLEY_SHOP,
|
||||
/* 0x32 */ SCENE_NIGHT_SHOP,
|
||||
/* 0x33 */ SCENE_FACE_SHOP,
|
||||
/* 0x34 */ SCENE_LINK_HOME,
|
||||
/* 0x35 */ SCENE_IMPA,
|
||||
/* 0x36 */ SCENE_MALON_STABLE,
|
||||
/* 0x37 */ SCENE_LABO,
|
||||
/* 0x38 */ SCENE_HYLIA_LABO,
|
||||
/* 0x39 */ SCENE_TENT,
|
||||
/* 0x3A */ SCENE_HUT,
|
||||
/* 0x3B */ SCENE_DAIYOUSEI_IZUMI,
|
||||
/* 0x3C */ SCENE_YOUSEI_IZUMI_TATE,
|
||||
/* 0x3D */ SCENE_YOUSEI_IZUMI_YOKO,
|
||||
/* 0x3E */ SCENE_KAKUSIANA,
|
||||
/* 0x3F */ SCENE_HAKAANA,
|
||||
/* 0x40 */ SCENE_HAKAANA2,
|
||||
/* 0x41 */ SCENE_HAKAANA_OUKE,
|
||||
/* 0x42 */ SCENE_SYATEKIJYOU,
|
||||
/* 0x43 */ SCENE_TOKINOMA,
|
||||
/* 0x44 */ SCENE_KENJYANOMA,
|
||||
/* 0x45 */ SCENE_HAIRAL_NIWA,
|
||||
/* 0x46 */ SCENE_HAIRAL_NIWA_N,
|
||||
/* 0x47 */ SCENE_HIRAL_DEMO,
|
||||
/* 0x48 */ SCENE_HAKASITARELAY,
|
||||
/* 0x49 */ SCENE_TURIBORI,
|
||||
/* 0x4A */ SCENE_NAKANIWA,
|
||||
/* 0x4B */ SCENE_BOWLING,
|
||||
/* 0x4C */ SCENE_SOUKO,
|
||||
/* 0x4D */ SCENE_MIHARIGOYA,
|
||||
/* 0x4E */ SCENE_MAHOUYA,
|
||||
/* 0x4F */ SCENE_GANON_DEMO,
|
||||
/* 0x50 */ SCENE_KINSUTA,
|
||||
/* 0x51 */ SCENE_SPOT00,
|
||||
/* 0x52 */ SCENE_SPOT01,
|
||||
/* 0x53 */ SCENE_SPOT02,
|
||||
/* 0x54 */ SCENE_SPOT03,
|
||||
/* 0x55 */ SCENE_SPOT04,
|
||||
/* 0x56 */ SCENE_SPOT05,
|
||||
/* 0x57 */ SCENE_SPOT06,
|
||||
/* 0x58 */ SCENE_SPOT07,
|
||||
/* 0x59 */ SCENE_SPOT08,
|
||||
/* 0x5A */ SCENE_SPOT09,
|
||||
/* 0x5B */ SCENE_SPOT10,
|
||||
/* 0x5C */ SCENE_SPOT11,
|
||||
/* 0x5D */ SCENE_SPOT12,
|
||||
/* 0x5E */ SCENE_SPOT13,
|
||||
/* 0x5F */ SCENE_SPOT15,
|
||||
/* 0x60 */ SCENE_SPOT16,
|
||||
/* 0x61 */ SCENE_SPOT17,
|
||||
/* 0x62 */ SCENE_SPOT18,
|
||||
/* 0x63 */ SCENE_SPOT20,
|
||||
/* 0x64 */ SCENE_GANON_TOU,
|
||||
// Debug only scenes
|
||||
/* 0x65 */ SCENE_TEST01,
|
||||
/* 0x66 */ SCENE_BESITU,
|
||||
/* 0x67 */ SCENE_DEPTH_TEST,
|
||||
/* 0x68 */ SCENE_SYOTES,
|
||||
/* 0x69 */ SCENE_SYOTES2,
|
||||
/* 0x6A */ SCENE_SUTARU,
|
||||
/* 0x6B */ SCENE_HAIRAL_NIWA2,
|
||||
/* 0x6C */ SCENE_SASATEST,
|
||||
/* 0x6D */ SCENE_TESTROOM,
|
||||
/* 0x6E */ SCENE_ID_MAX
|
||||
} SceneID;
|
||||
|
||||
// Scene commands
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ SCENE_CMD_ID_SPAWN_LIST,
|
||||
/* 0x01 */ SCENE_CMD_ID_ACTOR_LIST,
|
||||
/* 0x02 */ SCENE_CMD_ID_UNUSED_02,
|
||||
/* 0x03 */ SCENE_CMD_ID_COL_HEADER,
|
||||
/* 0x04 */ SCENE_CMD_ID_ROOM_LIST,
|
||||
/* 0x05 */ SCENE_CMD_ID_WIND_SETTINGS,
|
||||
/* 0x06 */ SCENE_CMD_ID_ENTRANCE_LIST,
|
||||
/* 0x07 */ SCENE_CMD_ID_SPECIAL_FILES,
|
||||
/* 0x08 */ SCENE_CMD_ID_ROOM_BEHAVIOR,
|
||||
/* 0x09 */ SCENE_CMD_ID_UNK_09,
|
||||
/* 0x0A */ SCENE_CMD_ID_MESH,
|
||||
/* 0x0B */ SCENE_CMD_ID_OBJECT_LIST,
|
||||
/* 0x0C */ SCENE_CMD_ID_LIGHT_LIST,
|
||||
/* 0x0D */ SCENE_CMD_ID_PATH_LIST,
|
||||
/* 0x0E */ SCENE_CMD_ID_TRANSI_ACTOR_LIST,
|
||||
/* 0x0F */ SCENE_CMD_ID_ENV_LIGHT_SETTINGS,
|
||||
/* 0x10 */ SCENE_CMD_ID_TIME_SETTINGS,
|
||||
/* 0x11 */ SCENE_CMD_ID_SKYBOX_SETTINGS,
|
||||
/* 0x12 */ SCENE_CMD_ID_SKYBOX_DISABLES,
|
||||
/* 0x13 */ SCENE_CMD_ID_EXIT_LIST,
|
||||
/* 0x14 */ SCENE_CMD_ID_END,
|
||||
/* 0x15 */ SCENE_CMD_ID_SOUND_SETTINGS,
|
||||
/* 0x16 */ SCENE_CMD_ID_ECHO_SETTINGS,
|
||||
/* 0x17 */ SCENE_CMD_ID_CUTSCENE_DATA,
|
||||
/* 0x18 */ SCENE_CMD_ID_ALTERNATE_HEADER_LIST,
|
||||
/* 0x19 */ SCENE_CMD_ID_MISC_SETTINGS
|
||||
} SceneCommandTypeID;
|
||||
|
||||
#define SCENE_CMD_SPAWN_LIST(numSpawns, spawnList) \
|
||||
{ SCENE_CMD_ID_SPAWN_LIST, numSpawns, CMD_PTR(spawnList) }
|
||||
|
||||
#define SCENE_CMD_ACTOR_LIST(numActors, actorList) \
|
||||
{ SCENE_CMD_ID_ACTOR_LIST, numActors, CMD_PTR(actorList) }
|
||||
|
||||
#define SCENE_CMD_UNUSED_02(unk, data) \
|
||||
{ SCENE_CMD_ID_UNUSED_02, unk, CMD_PTR(data) }
|
||||
|
||||
#define SCENE_CMD_COL_HEADER(colHeader) \
|
||||
{ SCENE_CMD_ID_COL_HEADER, 0, CMD_PTR(colHeader) }
|
||||
|
||||
#define SCENE_CMD_ROOM_LIST(numRooms, roomList) \
|
||||
{ SCENE_CMD_ID_ROOM_LIST, numRooms, CMD_PTR(roomList) }
|
||||
|
||||
#define SCENE_CMD_WIND_SETTINGS(xDir, yDir, zDir, strength) \
|
||||
{ SCENE_CMD_ID_WIND_SETTINGS, 0, CMD_BBBB(xDir, yDir, zDir, strength) }
|
||||
|
||||
#define SCENE_CMD_ENTRANCE_LIST(entranceList) \
|
||||
{ SCENE_CMD_ID_ENTRANCE_LIST, 0, CMD_PTR(entranceList) }
|
||||
|
||||
#define SCENE_CMD_SPECIAL_FILES(elfMessageFile, keepObjectId) \
|
||||
{ SCENE_CMD_ID_SPECIAL_FILES, elfMessageFile, CMD_W(keepObjectId) }
|
||||
|
||||
#define SCENE_CMD_ROOM_BEHAVIOR(curRoomUnk3, curRoomUnk2, showInvisActors, disableWarpSongs) \
|
||||
{ SCENE_CMD_ID_ROOM_BEHAVIOR, curRoomUnk3, \
|
||||
curRoomUnk2 | _SHIFTL(showInvisActors, 8, 1) | _SHIFTL(disableWarpSongs, 10, 1) }
|
||||
|
||||
#define SCENE_CMD_UNK_09() \
|
||||
{ SCENE_CMD_ID_UNK_09, 0, CMD_W(0) }
|
||||
|
||||
#define SCENE_CMD_MESH(meshHeader) \
|
||||
{ SCENE_CMD_ID_MESH, 0, CMD_PTR(meshHeader) }
|
||||
|
||||
#define SCENE_CMD_OBJECT_LIST(numObjects, objectList) \
|
||||
{ SCENE_CMD_ID_OBJECT_LIST, numObjects, CMD_PTR(objectList) }
|
||||
|
||||
#define SCENE_CMD_LIGHT_LIST(numLights, lightList) \
|
||||
{ SCENE_CMD_ID_POS_LIGHT_LIST, numLights, CMD_PTR(lightList) }
|
||||
|
||||
#define SCENE_CMD_PATH_LIST(pathList) \
|
||||
{ SCENE_CMD_ID_PATH_LIST, 0, CMD_PTR(pathList) }
|
||||
|
||||
#define SCENE_CMD_TRANSITION_ACTOR_LIST(numActors, list) \
|
||||
{ SCENE_CMD_ID_TRANSI_ACTOR_LIST, numActors, CMD_PTR(list) }
|
||||
|
||||
#define SCENE_CMD_ENV_LIGHT_SETTINGS(numLightSettings, lightSettingsList) \
|
||||
{ SCENE_CMD_ID_ENV_LIGHT_SETTINGS, numLightSettings, CMD_PTR(lightSettingsList) }
|
||||
|
||||
#define SCENE_CMD_TIME_SETTINGS(hour, min, speed) \
|
||||
{ SCENE_CMD_ID_TIME_SETTINGS, 0, CMD_BBBB(hour, min, speed, 0) }
|
||||
|
||||
#define SCENE_CMD_SKYBOX_SETTINGS(skyboxId, weather, isIndoors) \
|
||||
{ SCENE_CMD_ID_SKYBOX_SETTINGS, 0, CMD_BBBB(skyboxId, weather, isIndoors, 0) }
|
||||
|
||||
#define SCENE_CMD_SKYBOX_DISABLES(disableSky, disableSunMoon) \
|
||||
{ SCENE_CMD_ID_SKYBOX_DISABLES, 0, CMD_BBBB(disableSky, disableSunMoon, 0, 0) }
|
||||
|
||||
#define SCENE_CMD_EXIT_LIST(exitList) \
|
||||
{ SCENE_CMD_ID_EXIT_LIST, 0, CMD_PTR(exitList) }
|
||||
|
||||
#define SCENE_CMD_END() \
|
||||
{ SCENE_CMD_ID_END, 0, CMD_W(0) }
|
||||
|
||||
#define SCENE_CMD_SOUND_SETTINGS(specId, natureAmbienceId, seqId) \
|
||||
{ SCENE_CMD_ID_SOUND_SETTINGS, specId, CMD_BBBB(0, 0, natureAmbienceId, seqId) }
|
||||
|
||||
#define SCENE_CMD_ECHO_SETTINGS(echo) \
|
||||
{ SCENE_CMD_ID_ECHO_SETTINGS, 0, CMD_BBBB(0, 0, 0, echo) }
|
||||
|
||||
#define SCENE_CMD_CUTSCENE_DATA(cutsceneData) \
|
||||
{ SCENE_CMD_ID_CUTSCENE_DATA, 0, CMD_PTR(cutsceneData) }
|
||||
|
||||
#define SCENE_CMD_ALTERNATE_HEADER_LIST(alternateHeaderList) \
|
||||
{ SCENE_CMD_ID_ALTERNATE_HEADER_LIST, 0, CMD_PTR(alternateHeaderList) }
|
||||
|
||||
#define SCENE_CMD_MISC_SETTINGS(camMode, worldMapLocation) \
|
||||
{ SCENE_CMD_ID_MISC_SETTINGS, camMode, CMD_W(worldMapLocation) }
|
||||
|
||||
|
||||
#endif
|
94
soh/include/z64skin.h
Normal file
94
soh/include/z64skin.h
Normal file
|
@ -0,0 +1,94 @@
|
|||
#ifndef Z64_SKIN_H
|
||||
#define Z64_SKIN_H
|
||||
|
||||
#include "z64animation.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Holds a compact version of a vertex used in the Skin system
|
||||
* It is used to initialise the Vtx used by an animated limb
|
||||
*/
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 index;
|
||||
/* 0x02 */ s16 s; // s and t are texture coordinates (also known as u and v)
|
||||
/* 0x04 */ s16 t;
|
||||
/* 0x06 */ s8 normX;
|
||||
/* 0x07 */ s8 normY;
|
||||
/* 0x08 */ s8 normZ;
|
||||
/* 0x09 */ u8 alpha;
|
||||
} SkinVertex; // size = 0xA
|
||||
|
||||
/**
|
||||
* Describes a position displacement and a scale to be applied to a limb at index `limbIndex`
|
||||
*/
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 limbIndex;
|
||||
/* 0x02 */ s16 x;
|
||||
/* 0x04 */ s16 y;
|
||||
/* 0x06 */ s16 z;
|
||||
/* 0x08 */ u8 scale;
|
||||
} SkinTransformation; // size = 0xA
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 vtxCount; // number of vertices in this modif entry
|
||||
/* 0x02 */ u16 transformCount;
|
||||
/* 0x04 */ u16 unk_4; // index of limbTransformations?
|
||||
/* 0x08 */ SkinVertex* skinVertices;
|
||||
/* 0x0C */ SkinTransformation* limbTransformations;
|
||||
} SkinLimbModif; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 totalVtxCount; // total vertex count for all modif entries
|
||||
/* 0x02 */ u16 limbModifCount;
|
||||
/* 0x04 */ SkinLimbModif* limbModifications;
|
||||
/* 0x08 */ Gfx* dlist;
|
||||
} SkinAnimatedLimbData; // size = 0xC
|
||||
|
||||
// ZAPD compatibility typedefs
|
||||
// TODO: Remove when ZAPD adds support for them
|
||||
typedef SkinVertex Struct_800A57C0;
|
||||
typedef SkinTransformation Struct_800A598C_2;
|
||||
typedef SkinAnimatedLimbData Struct_800A5E28;
|
||||
typedef SkinLimbModif Struct_800A598C;
|
||||
|
||||
#define SKIN_LIMB_TYPE_ANIMATED 4
|
||||
#define SKIN_LIMB_TYPE_NORMAL 11
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
|
||||
/* 0x06 */ u8 child;
|
||||
/* 0x07 */ u8 sibling;
|
||||
/* 0x08 */ s32 segmentType; // Type of data contained in segment
|
||||
/* 0x0C */ void* segment; // Gfx* if segmentType is SKIN_LIMB_TYPE_NORMAL, SkinAnimatedLimbData* if segmentType is SKIN_LIMB_TYPE_ANIMATED, NULL otherwise
|
||||
} SkinLimb; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 index; // alternates every draw cycle
|
||||
/* 0x004 */ Vtx* buf[2]; // number of vertices in buffer determined by `totalVtxCount`
|
||||
} SkinLimbVtx; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ SkeletonHeader* skeletonHeader;
|
||||
/* 0x004 */ MtxF mtx;
|
||||
/* 0x044 */ s32 limbCount;
|
||||
/* 0x048 */ SkinLimbVtx* vtxTable; // double buffered list of vertices for each limb
|
||||
/* 0x04C */ SkelAnime skelAnime;
|
||||
} Skin; // size = 0x90
|
||||
|
||||
typedef void (*SkinPostDraw)(struct Actor*, struct GlobalContext*, Skin*);
|
||||
typedef s32 (*SkinOverrideLimbDraw)(struct Actor*, struct GlobalContext*, s32, Skin*);
|
||||
|
||||
#define SKIN_DRAW_FLAG_CUSTOM_TRANSFORMS (1 << 0)
|
||||
#define SKIN_DRAW_FLAG_CUSTOM_MATRIX (1 << 1)
|
||||
|
||||
#define SKIN_TRANSFORM_IS_FHG 0x23
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
78
soh/include/z64transition.h
Normal file
78
soh/include/z64transition.h
Normal file
|
@ -0,0 +1,78 @@
|
|||
#ifndef Z64TRANSITION_H
|
||||
#define Z64TRANSITION_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "color.h"
|
||||
|
||||
typedef struct {
|
||||
f32 unk_0;
|
||||
f32 unk_4;
|
||||
} TransitionUnkData;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 row;
|
||||
/* 0x04 */ s32 col;
|
||||
/* 0x08 */ s32 frame;
|
||||
/* 0x0C */ TransitionUnkData* unk_0C;
|
||||
/* 0x10 */ Vtx* vtxFrame1;
|
||||
/* 0x14 */ Vtx* vtxFrame2;
|
||||
/* 0x18 */ Mtx projection;
|
||||
/* 0x58 */ Mtx modelView;
|
||||
/* 0x98 */ Mtx unk_98;
|
||||
/* 0xD8 */ Gfx* gfx; // "gfxtbl"
|
||||
/* 0xDC */ u16* zBuffer;
|
||||
} TransitionUnk; // size = 0xE0
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Color_RGBA8_u32 color;
|
||||
/* 0x004 */ Color_RGBA8_u32 envColor;
|
||||
/* 0x008 */ u8 direction;
|
||||
/* 0x009 */ u8 frame;
|
||||
/* 0x00A */ u8 isDone;
|
||||
/* 0x00C */ u16 texX;
|
||||
/* 0x00E */ u16 texY;
|
||||
/* 0x010 */ u16 normal;
|
||||
/* 0x018 */ Mtx projection;
|
||||
/* 0x058 */ Mtx lookAt;
|
||||
/* 0x098 */ Mtx modelView[2][3];
|
||||
} TransitionWipe; // size = 0x218
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 fadeType;
|
||||
/* 0x001 */ u8 isDone;
|
||||
/* 0x002 */ u8 fadeDirection;
|
||||
/* 0x004 */ Color_RGBA8_u32 fadeColor;
|
||||
/* 0x008 */ u16 fadeTimer;
|
||||
} TransitionFade; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Color_RGBA8_u32 color;
|
||||
/* 0x004 */ Color_RGBA8_u32 envColor;
|
||||
/* 0x008 */ s32 texX;
|
||||
/* 0x00C */ s32 texY;
|
||||
/* 0x010 */ s32 step;
|
||||
/* 0x014 */ u8 unk_14;
|
||||
/* 0x015 */ u8 typeColor;
|
||||
/* 0x016 */ u8 speed;
|
||||
/* 0x017 */ u8 effect;
|
||||
/* 0x018 */ u8 isDone;
|
||||
/* 0x019 */ u8 frame;
|
||||
/* 0x01A */ u16 normal;
|
||||
/* 0x020 */ Mtx projection;
|
||||
/* 0x060 */ Mtx lookAt;
|
||||
/* 0x0A0 */ void* texture;
|
||||
/* 0x0A8 */ Mtx modelView[2][3];
|
||||
} TransitionCircle; // size = 0x228;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Color_RGBA8_u32 color;
|
||||
/* 0x004 */ f32 transPos;
|
||||
/* 0x008 */ f32 step;
|
||||
/* 0x00C */ s32 state;
|
||||
/* 0x010 */ s32 fadeDirection;
|
||||
/* 0x018 */ Mtx projection;
|
||||
/* 0x058 */ s32 frame;
|
||||
/* 0x060 */ Mtx modelView[2][3];
|
||||
} TransitionTriforce; // size = 0x1E0;
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue