mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-12 09:50:50 +00:00
Merge branch 'main' into bottle_info
This commit is contained in:
commit
c1b2f3867e
115 changed files with 6584 additions and 631 deletions
|
@ -52,6 +52,8 @@
|
|||
#ifndef ASEQ_H
|
||||
#define ASEQ_H
|
||||
|
||||
#include "versions.h"
|
||||
|
||||
/**
|
||||
* IO Ports
|
||||
*/
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
|
||||
#define ARRAY_COUNT_2D(arr) (s32)(sizeof(arr) / sizeof(arr[0][0]))
|
||||
|
||||
#define PHYSICAL_TO_VIRTUAL(addr) (void*)((uintptr_t)(addr) + 0x80000000)
|
||||
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr) - 0x80000000)
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#define R_ENV_Z_FAR REG(13)
|
||||
#define R_ENV_FOG_NEAR REG(14)
|
||||
#define R_ENV_TIME_SPEED_OLD REG(15) // Most likely used during development. Unused in the final game.
|
||||
#define R_DECELERATE_RATE REG(43)
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
#define R_ENABLE_ARENA_DBG SREG(0)
|
||||
#define R_AUDIOMGR_DEBUG_LEVEL SREG(20)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define SEQUENCE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "versions.h"
|
||||
|
||||
#define DEFINE_SEQUENCE(_0, seqId, _2, _3, _4) seqId,
|
||||
#define DEFINE_SEQUENCE_PTR(_0, seqId, _2, _3, _4) seqId,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define SFX_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "versions.h"
|
||||
#include "z64math.h"
|
||||
|
||||
typedef enum SfxBankType {
|
||||
|
|
|
@ -15,10 +15,10 @@
|
|||
* - Argument 3: Cache load policy for the sequence (AudioCacheLoadType)
|
||||
* - Argument 4: Sequence flags
|
||||
*/
|
||||
#if PLATFORM_N64
|
||||
#define SEQ_0_FLAGS SEQ_FLAG_FANFARE | SEQ_FLAG_ENEMY
|
||||
#else
|
||||
#if OOT_VERSION < PAL_1_0 || PLATFORM_GC
|
||||
#define SEQ_0_FLAGS SEQ_FLAG_FANFARE
|
||||
#else
|
||||
#define SEQ_0_FLAGS SEQ_FLAG_FANFARE | SEQ_FLAG_ENEMY
|
||||
#endif
|
||||
DEFINE_SEQUENCE (Sequence_0, NA_BGM_GENERAL_SFX, MEDIUM_CART, CACHE_LOAD_PERMANENT, SEQ_0_FLAGS ) // general_sfx
|
||||
DEFINE_SEQUENCE (Sequence_1, NA_BGM_NATURE_AMBIENCE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // nature_ambience
|
||||
|
|
|
@ -334,10 +334,10 @@
|
|||
/* 0x3942 */ DEFINE_SFX(CHAN_4EA8, NA_SE_EN_BALINADE_THUNDER, 0x34, 3, 0, 0)
|
||||
/* 0x3943 */ DEFINE_SFX(CHAN_415D, NA_SE_EN_BALINADE_BL_SPARK, 0x20, 2, 0, 0)
|
||||
/* 0x3944 */ DEFINE_SFX(CHAN_4184, NA_SE_EN_BALINADE_BL_DEAD, 0x34, 3, 0, 0)
|
||||
#if PLATFORM_N64
|
||||
/* 0x3945 */ DEFINE_SFX(CHAN_4E86, NA_SE_EN_BALINADE_BREAK2, 0x34, 3, 0, 0)
|
||||
#else
|
||||
#if OOT_VERSION < PAL_1_0 || PLATFORM_GC
|
||||
/* 0x3945 */ DEFINE_SFX(CHAN_4E86, NA_SE_EN_BALINADE_BREAK2, 0x30, 3, 0, 0)
|
||||
#else
|
||||
/* 0x3945 */ DEFINE_SFX(CHAN_4E86, NA_SE_EN_BALINADE_BREAK2, 0x34, 3, 0, 0)
|
||||
#endif
|
||||
/* 0x3946 */ DEFINE_SFX(CHAN_425D, NA_SE_EN_BALINADE_HIT_RINK, 0x38, 3, 0, 0)
|
||||
/* 0x3947 */ DEFINE_SFX(CHAN_3AF4, NA_SE_EN_GANON_WAVE_GND, 0x20, 3, 0, 0)
|
||||
|
|
|
@ -43,10 +43,10 @@
|
|||
/* 0x281F */ DEFINE_SFX(CHAN_1B61, NA_SE_EV_TBOX_UNLOCK, 0x30, 0, 0, 0)
|
||||
/* 0x2820 */ DEFINE_SFX(CHAN_1B7D, NA_SE_EV_TBOX_OPEN, 0x30, 0, 0, 0)
|
||||
/* 0x2821 */ DEFINE_SFX(CHAN_1B93, NA_SE_SY_TIMER, 0xA0, 0, 0, SFX_FLAG_13 | SFX_FLAG_3)
|
||||
#if PLATFORM_N64
|
||||
/* 0x2822 */ DEFINE_SFX(CHAN_1BE9, NA_SE_EV_FLAME_IGNITION, 0x2D, 2, 0, 0)
|
||||
#else
|
||||
#if OOT_VERSION < PAL_1_0 || PLATFORM_GC
|
||||
/* 0x2822 */ DEFINE_SFX(CHAN_1BE9, NA_SE_EV_FLAME_IGNITION, 0x20, 2, 0, 0)
|
||||
#else
|
||||
/* 0x2822 */ DEFINE_SFX(CHAN_1BE9, NA_SE_EV_FLAME_IGNITION, 0x2D, 2, 0, 0)
|
||||
#endif
|
||||
/* 0x2823 */ DEFINE_SFX(CHAN_1BF9, NA_SE_EV_SPEAR_HIT, 0x30, 0, 0, 0)
|
||||
/* 0x2824 */ DEFINE_SFX(CHAN_1C14, NA_SE_EV_ELEVATOR_MOVE, 0x30, 0, 0, SFX_FLAG_11)
|
||||
|
@ -108,10 +108,10 @@
|
|||
/* 0x285C */ DEFINE_SFX(CHAN_2374, NA_SE_EV_BLOCKSINK, 0x30, 2, 0, 0)
|
||||
/* 0x285D */ DEFINE_SFX(CHAN_2389, NA_SE_EV_CROWD, 0x30, 0, 0, SFX_FLAG_13 | SFX_FLAG_12 | SFX_FLAG_11)
|
||||
/* 0x285E */ DEFINE_SFX(CHAN_23A6, NA_SE_EV_WATER_LEVEL_DOWN, 0x30, 0, 0, 0)
|
||||
#if PLATFORM_N64
|
||||
/* 0x285F */ DEFINE_SFX(CHAN_23D5, NA_SE_EV_NAVY_VANISH, 0x2C, 0, 0, 0)
|
||||
#else
|
||||
#if OOT_VERSION < PAL_1_0 || PLATFORM_GC
|
||||
/* 0x285F */ DEFINE_SFX(CHAN_23D5, NA_SE_EV_NAVY_VANISH, 0x30, 0, 0, 0)
|
||||
#else
|
||||
/* 0x285F */ DEFINE_SFX(CHAN_23D5, NA_SE_EV_NAVY_VANISH, 0x2C, 0, 0, 0)
|
||||
#endif
|
||||
/* 0x2860 */ DEFINE_SFX(CHAN_23EB, NA_SE_EV_LADDER_DOUND, 0x30, 3, 0, 0)
|
||||
/* 0x2861 */ DEFINE_SFX(CHAN_2401, NA_SE_EV_WEB_VIBRATION, 0x30, 0, 0, 0)
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
/* 0x1810 */ DEFINE_SFX(CHAN_10A2, NA_SE_IT_BOOMERANG_FLY, 0x30, 0, 0, SFX_FLAG_10)
|
||||
/* 0x1811 */ DEFINE_SFX(CHAN_10D2, NA_SE_IT_SWORD_STRIKE, 0x40, 2, 0, 0)
|
||||
/* 0x1812 */ DEFINE_SFX(CHAN_10E6, NA_SE_IT_HAMMER_SWING, 0x30, 0, 1, 0)
|
||||
#if PLATFORM_N64
|
||||
/* 0x1813 */ DEFINE_SFX(CHAN_10F4, NA_SE_IT_HOOKSHOT_REFLECT, 0x20, 0, 0, 0)
|
||||
#else
|
||||
#if OOT_VERSION < PAL_1_0 || PLATFORM_GC
|
||||
/* 0x1813 */ DEFINE_SFX(CHAN_10F4, NA_SE_IT_HOOKSHOT_REFLECT, 0x30, 0, 0, 0)
|
||||
#else
|
||||
/* 0x1813 */ DEFINE_SFX(CHAN_10F4, NA_SE_IT_HOOKSHOT_REFLECT, 0x20, 0, 0, 0)
|
||||
#endif
|
||||
/* 0x1814 */ DEFINE_SFX(CHAN_110B, NA_SE_IT_ARROW_STICK_CRE, 0x30, 0, 0, 0)
|
||||
/* 0x1815 */ DEFINE_SFX(CHAN_1120, NA_SE_IT_ARROW_STICK_OBJ, 0x34, 0, 0, 0)
|
||||
|
|
|
@ -389,10 +389,12 @@ ALIGNED(4) typedef struct PreNmiBuff {
|
|||
} PreNmiBuff; // size = 0x18 (actually osAppNMIBuffer is 0x40 bytes large but the rest is unused)
|
||||
|
||||
typedef enum ViModeEditState {
|
||||
/* 0 */ VI_MODE_EDIT_STATE_INACTIVE,
|
||||
/* 1 */ VI_MODE_EDIT_STATE_ACTIVE,
|
||||
/* 2 */ VI_MODE_EDIT_STATE_2, // active, more adjustments
|
||||
/* 3 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode
|
||||
/* -2 */ VI_MODE_EDIT_STATE_NEGATIVE_2 = -2,
|
||||
/* -1 */ VI_MODE_EDIT_STATE_NEGATIVE_1,
|
||||
/* 0 */ VI_MODE_EDIT_STATE_INACTIVE,
|
||||
/* 1 */ VI_MODE_EDIT_STATE_ACTIVE,
|
||||
/* 2 */ VI_MODE_EDIT_STATE_2, // active, more adjustments
|
||||
/* 3 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode
|
||||
} ViModeEditState;
|
||||
|
||||
typedef struct ViMode {
|
||||
|
|
|
@ -70,6 +70,12 @@ typedef enum PlayerEnvHazard {
|
|||
/* 0x4 */ PLAYER_ENV_HAZARD_UNDERWATER_FREE
|
||||
} PlayerEnvHazard;
|
||||
|
||||
typedef enum PlayerIdleType {
|
||||
/* -0x1 */ PLAYER_IDLE_CRIT_HEALTH = -1,
|
||||
/* 0x0 */ PLAYER_IDLE_DEFAULT,
|
||||
/* 0x1 */ PLAYER_IDLE_FIDGET
|
||||
} PlayerIdleType;
|
||||
|
||||
typedef enum PlayerItemAction {
|
||||
/* 0x00 */ PLAYER_IA_NONE,
|
||||
/* 0x01 */ PLAYER_IA_SWORD_CS, // Hold sword without shield in hand. The sword is not usable.
|
||||
|
@ -669,7 +675,7 @@ typedef struct WeaponInfo {
|
|||
#define PLAYER_STATE1_3 (1 << 3)
|
||||
#define PLAYER_STATE1_HOSTILE_LOCK_ON (1 << 4) // Currently locked onto a hostile actor. Triggers a "battle" variant of many actions.
|
||||
#define PLAYER_STATE1_5 (1 << 5)
|
||||
#define PLAYER_STATE1_6 (1 << 6)
|
||||
#define PLAYER_STATE1_TALKING (1 << 6) // Currently talking to an actor. This includes item exchanges.
|
||||
#define PLAYER_STATE1_DEAD (1 << 7) // Player has died. Note that this gets set when the death cutscene has started, after landing from the air.
|
||||
#define PLAYER_STATE1_START_CHANGING_HELD_ITEM (1 << 8) // Item change process has begun
|
||||
#define PLAYER_STATE1_9 (1 << 9)
|
||||
|
@ -724,7 +730,7 @@ typedef struct WeaponInfo {
|
|||
#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_IDLE_FIDGET (1 << 28) // Playing a fidget idle animation (under typical circumstances, see `Player_ChooseNextIdleAnim` for more info)
|
||||
#define PLAYER_STATE2_29 (1 << 29)
|
||||
#define PLAYER_STATE2_30 (1 << 30)
|
||||
#define PLAYER_STATE2_31 (1 << 31)
|
||||
|
@ -742,6 +748,16 @@ typedef void (*PlayerActionFunc)(struct Player*, struct PlayState*);
|
|||
typedef s32 (*UpperActionFunc)(struct Player*, struct PlayState*);
|
||||
typedef void (*AfterPutAwayFunc)(struct PlayState*, struct Player*);
|
||||
|
||||
#define UNK6AE_ROT_FOCUS_X (1 << 0)
|
||||
#define UNK6AE_ROT_FOCUS_Y (1 << 1)
|
||||
#define UNK6AE_ROT_FOCUS_Z (1 << 2)
|
||||
#define UNK6AE_ROT_HEAD_X (1 << 3)
|
||||
#define UNK6AE_ROT_HEAD_Y (1 << 4)
|
||||
#define UNK6AE_ROT_HEAD_Z (1 << 5)
|
||||
#define UNK6AE_ROT_UPPER_X (1 << 6)
|
||||
#define UNK6AE_ROT_UPPER_Y (1 << 7)
|
||||
#define UNK6AE_ROT_UPPER_Z (1 << 8)
|
||||
|
||||
typedef struct Player {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ s8 currentTunic; // current tunic from `PlayerTunic`
|
||||
|
@ -830,17 +846,13 @@ typedef struct Player {
|
|||
/* 0x06A0 */ f32 unk_6A0;
|
||||
/* 0x06A4 */ f32 closestSecretDistSq;
|
||||
/* 0x06A8 */ Actor* unk_6A8;
|
||||
/* 0x06AC */ s8 unk_6AC;
|
||||
/* 0x06AC */ s8 idleType;
|
||||
/* 0x06AD */ u8 unk_6AD;
|
||||
/* 0x06AE */ u16 unk_6AE;
|
||||
/* 0x06B0 */ s16 unk_6B0;
|
||||
/* 0x06AE */ u16 unk_6AE_rotFlags; // See `UNK6AE_ROT_` macros. If its flag isn't set, a rot steps to 0.
|
||||
/* 0x06B0 */ s16 upperLimbYawSecondary;
|
||||
/* 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;
|
||||
/* 0x06B6 */ Vec3s headLimbRot;
|
||||
/* 0x06BC */ Vec3s upperLimbRot;
|
||||
/* 0x06C2 */ s16 unk_6C2;
|
||||
/* 0x06C4 */ f32 unk_6C4;
|
||||
/* 0x06C8 */ SkelAnime upperSkelAnime;
|
||||
|
@ -870,6 +882,7 @@ typedef struct Player {
|
|||
|
||||
/* 0x0850 */ union {
|
||||
s16 actionVar2;
|
||||
s16 fallDamageStunTimer; // Player_Action_Idle: Prevents any movement and shakes model up and down quickly to indicate fall damage stun
|
||||
s16 bonked; // Player_Action_Roll: set to true after bonking into a wall or an actor
|
||||
s16 startedTextbox; // Player_Action_SwingBottle: set to true when the textbox is started
|
||||
s16 useWaterBottleSwingAnimations; // Player_Action_SwingBottle: used to determine which bottle swing animation to use
|
||||
|
@ -893,7 +906,7 @@ typedef struct Player {
|
|||
/* 0x0888 */ f32 distToInteractWall; // xyz distance to the interact wall
|
||||
/* 0x088C */ u8 ledgeClimbType;
|
||||
/* 0x088D */ u8 ledgeClimbDelayTimer;
|
||||
/* 0x088E */ u8 unk_88E;
|
||||
/* 0x088E */ u8 textboxBtnCooldownTimer; // Prevents usage of A/B/C-up when counting down
|
||||
/* 0x088F */ u8 damageFlickerAnimCounter; // Used to flicker Link after taking damage
|
||||
/* 0x0890 */ u8 unk_890;
|
||||
/* 0x0891 */ u8 bodyShockTimer;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue