mirror of https://github.com/zeldaret/mm.git
Introducing z64camera.h (#797)
* Introduce z64camera.h * format * Oops * Change paramData to u8 * BINANG_TO_DEGF and DEGF_TO_BINANG to z64camera.h * Fix bss, thanks Anon * Update with docs from OoT * Cleanup * Fix activeCamId * underwater * remove interface alpha stuff * Oops * To Hex * Cleanup cam settings comments * PR Suggestions * More PR Suggestions * trackActor -> focalActor * Fix merge * Fix bss, thanks Anon
This commit is contained in:
parent
628482f3c4
commit
fda5da2500
|
|
@ -1114,15 +1114,15 @@ u32 Camera_SetMode(Camera* camera, s16 mode, s8 param_3);
|
|||
s32 Camera_ChangeMode(Camera* camera, s16 mode);
|
||||
// void func_800DF86C(void);
|
||||
// void func_800DF8EC(void);
|
||||
s32 func_800DFAC8(Camera* camera, s16 param_2);
|
||||
s32 Camera_ChangeSetting(Camera* camera, s16 setting);
|
||||
u32 Camera_ChangeDataIdx(Camera* camera, u32 camDataIdx);
|
||||
// void func_800DFC1C(void);
|
||||
// void func_800DFC40(void);
|
||||
s32 Camera_GetInputDirYaw(Camera* camera);
|
||||
void func_800DFC90(Vec3s* arg0, Camera* camera);
|
||||
void Camera_GetCamDir(Vec3s* dst, Camera* camera);
|
||||
s16 Camera_GetCamDirPitch(Camera* camera);
|
||||
s16 Camera_GetCamDirYaw(Camera* camera);
|
||||
void func_800DFD04(Camera* camera, s32 arg1, s32 arg2, s32 arg3);
|
||||
void Camera_AddQuake(Camera* camera, s32 arg1, s16 y, s32 countdown);
|
||||
void func_800DFD78(Camera* camera, s32 paramFlag, void* value);
|
||||
// UNK_TYPE4 func_800DFEF0(s32 param_1, u16 param_2);
|
||||
// UNK_TYPE4 func_800DFF18(Camera* iParm1, UNK_TYPE2 uParm2);
|
||||
|
|
@ -1130,7 +1130,7 @@ void func_800DFD78(Camera* camera, s32 paramFlag, void* value);
|
|||
// UNK_TYPE4 func_800DFF44(void);
|
||||
s16 Camera_SetFlags(Camera* iParm1, s16 flags);
|
||||
s16 Camera_ClearFlags(Camera* camera, s16 flags);
|
||||
s32 func_800DFFAC(Camera* camera, Actor* doorActor, s16 bgCamDataId, f32 arg3, s16 timer1, s16 timer2, s16 timer3);
|
||||
s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 bgCamDataId, f32 arg3, s16 timer1, s16 timer2, s16 timer3);
|
||||
// UNK_TYPE4 func_800E007C(Camera* param_1, Camera* param_2);
|
||||
// UNK_TYPE4 func_800E01AC(void);
|
||||
Vec3f* Camera_GetQuakeOffset(Vec3f* dst, Camera* camera);
|
||||
|
|
@ -2734,9 +2734,9 @@ void Game_UpdateFramerateVariables(s32 divisor);
|
|||
void Game_SetFramerateDivisor(GameState* gameState, s32 divisor);
|
||||
void GameState_SetFBFilter(Gfx** gfx, u32 arg1);
|
||||
void Game_Nop80173534(GameState* gameState);
|
||||
void GameState_Draw(GameState* gameState, GraphicsContext* gCtxt);
|
||||
void GameState_SetFrameBuffer(GraphicsContext* gCtxt);
|
||||
void func_801736DC(GraphicsContext* gCtxt);
|
||||
void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx);
|
||||
void GameState_SetFrameBuffer(GraphicsContext* gfxCtx);
|
||||
void func_801736DC(GraphicsContext* gfxCtx);
|
||||
void Game_UpdateInput(GameState* gameState);
|
||||
void Game_Update(GameState* gameState);
|
||||
void Game_IncrementFrameCount(GameState* gameState);
|
||||
|
|
|
|||
|
|
@ -19,8 +19,7 @@
|
|||
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr) - RDRAM_CACHED)
|
||||
#define SEGMENTED_TO_VIRTUAL(addr) (void*)(PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)]) + SEGMENT_OFFSET(addr))
|
||||
|
||||
#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamera])
|
||||
#define CAM_ID_MAIN 0
|
||||
#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamId])
|
||||
|
||||
#define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \
|
||||
(curState)->nextGameStateInit = (GameStateFunc)newInit; \
|
||||
|
|
|
|||
|
|
@ -815,10 +815,10 @@ extern BgSpecialSceneMaxObjects sCustomDynapolyMem[];
|
|||
// extern UNK_TYPE1 D_801B969C;
|
||||
// extern UNK_TYPE1 D_801B976C;
|
||||
// extern UNK_TYPE1 D_801B979C;
|
||||
extern CameraStateParams cameraStates[91];
|
||||
// extern CameraStateParams cameraStates[91];
|
||||
// extern UNK_TYPE1 D_801B9CE2;
|
||||
extern UNK_PTR D_801B9CE4;
|
||||
extern camera_update_func cameraUpdateFuncs[71];
|
||||
// extern UNK_PTR D_801B9CE4;
|
||||
// extern camera_update_func cameraUpdateFuncs[71];
|
||||
// extern UNK_TYPE2 D_801B9E04;
|
||||
// extern UNK_TYPE4 D_801B9E08;
|
||||
// extern UNK_TYPE4 D_801B9E0C;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "z64animation.h"
|
||||
#include "z64audio.h"
|
||||
#include "z64bgcheck.h"
|
||||
#include "z64camera.h"
|
||||
#include "z64collision_check.h"
|
||||
#include "z64curve.h"
|
||||
#include "z64cutscene.h"
|
||||
|
|
@ -443,7 +444,7 @@ typedef struct {
|
|||
/* 0x150 */ Vec3f curDistortionScale;
|
||||
/* 0x15C */ u16 normal;
|
||||
/* 0x160 */ u32 flags; // bit 3: Render to an orthographic perspective
|
||||
/* 0x164 */ UNK_TYPE4 unk164;
|
||||
/* 0x164 */ s32 unk164;
|
||||
} View; // size = 0x168
|
||||
|
||||
typedef void(*fault_update_input_func)(Input* input);
|
||||
|
|
@ -1004,73 +1005,6 @@ typedef struct {
|
|||
/* 0x20 */ u32 unk20;
|
||||
} s801BB170; // size = 0x24
|
||||
|
||||
typedef struct Camera {
|
||||
/* 0x000 */ char paramData[0x50];
|
||||
/* 0x050 */ Vec3f at;
|
||||
/* 0x05C */ Vec3f eye;
|
||||
/* 0x068 */ Vec3f up;
|
||||
/* 0x074 */ Vec3f eyeNext;
|
||||
/* 0x080 */ Vec3f skyboxOffset;
|
||||
/* 0x08C */ struct PlayState* play;
|
||||
/* 0x090 */ struct Player* player;
|
||||
/* 0x094 */ PosRot playerPosRot;
|
||||
/* 0x0A8 */ struct Actor* target;
|
||||
/* 0x0AC */ PosRot targetPosRot;
|
||||
/* 0x0C0 */ f32 rUpdateRateInv;
|
||||
/* 0x0C4 */ f32 pitchUpdateRateInv;
|
||||
/* 0x0C8 */ f32 yawUpdateRateInv;
|
||||
/* 0x0CC */ f32 yOffsetUpdateRate;
|
||||
/* 0x0D0 */ f32 xzOffsetUpdateRate;
|
||||
/* 0x0D4 */ f32 fovUpdateRate;
|
||||
/* 0x0D8 */ f32 xzSpeed;
|
||||
/* 0x0DC */ f32 dist;
|
||||
/* 0x0E0 */ f32 speedRatio;
|
||||
/* 0x0E4 */ Vec3f posOffset;
|
||||
/* 0x0F0 */ Vec3f playerPosDelta;
|
||||
/* 0x0FC */ f32 fov;
|
||||
/* 0x100 */ f32 atLERPStepScale;
|
||||
/* 0x104 */ f32 playerGroundY;
|
||||
/* 0x108 */ Vec3f floorNorm;
|
||||
/* 0x114 */ f32 waterYPos;
|
||||
/* 0x118 */ s32 waterPrevCamIdx;
|
||||
/* 0x11C */ s32 waterPrevCamSetting;
|
||||
/* 0x120 */ s16 waterQuakeId;
|
||||
/* 0x122 */ s16 unk122;
|
||||
/* 0x124 */ void* data0;
|
||||
/* 0x128 */ void* data1;
|
||||
/* 0x12C */ s16 data2;
|
||||
/* 0x12E */ s16 data3;
|
||||
/* 0x130 */ s16 uid;
|
||||
/* 0x132 */ UNK_TYPE1 pad132[2];
|
||||
/* 0x134 */ Vec3s inputDir;
|
||||
/* 0x13A */ Vec3s camDir;
|
||||
/* 0x140 */ s16 status;
|
||||
/* 0x142 */ s16 setting;
|
||||
/* 0x144 */ s16 mode;
|
||||
/* 0x146 */ s16 bgCheckId;
|
||||
/* 0x148 */ s16 camDataIdx;
|
||||
/* 0x14A */ s16 flags1;
|
||||
/* 0x14C */ s16 flags2;
|
||||
/* 0x14E */ s16 childCamIdx;
|
||||
/* 0x150 */ s16 unk150;
|
||||
/* 0x152 */ s16 unk152;
|
||||
/* 0x154 */ s16 prevSetting;
|
||||
/* 0x156 */ s16 nextCamDataIdx;
|
||||
/* 0x158 */ s16 nextBGCheckId;
|
||||
/* 0x15A */ s16 roll;
|
||||
/* 0x15C */ s16 paramFlags;
|
||||
/* 0x15E */ s16 animState;
|
||||
/* 0x160 */ s16 unk160;
|
||||
/* 0x162 */ s16 timer;
|
||||
/* 0x164 */ s16 camId;
|
||||
/* 0x166 */ s16 prevCamDataIdx;
|
||||
/* 0x168 */ s16 unk168;
|
||||
/* 0x16A */ s16 unk16A;
|
||||
/* 0x16C */ Vec3f meshActorPos;
|
||||
} Camera; // size = 0x178
|
||||
|
||||
typedef s32(*camera_update_func)(Camera* camera);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f atOffset;
|
||||
/* 0x0C */ Vec3f eyeOffset;
|
||||
|
|
@ -1266,9 +1200,9 @@ struct PlayState {
|
|||
/* 0x000B4 */ char unk_B4[0x4];
|
||||
/* 0x000B8 */ View view;
|
||||
/* 0x00220 */ Camera mainCamera;
|
||||
/* 0x00398 */ Camera subCameras[3];
|
||||
/* 0x00800 */ Camera* cameraPtrs[4];
|
||||
/* 0x00810 */ s16 activeCamera;
|
||||
/* 0x00398 */ Camera subCameras[NUM_CAMS - CAM_ID_SUB_FIRST];
|
||||
/* 0x00800 */ Camera* cameraPtrs[NUM_CAMS];
|
||||
/* 0x00810 */ s16 activeCamId;
|
||||
/* 0x00812 */ s16 nextCamera;
|
||||
/* 0x00814 */ SoundContext soundCtx;
|
||||
/* 0x00818 */ LightContext lightCtx;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,387 @@
|
|||
#ifndef Z64CAMERA_H
|
||||
#define Z64CAMERA_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
// these two angle conversion macros are slightly inaccurate
|
||||
#define CAM_DEG_TO_BINANG(degrees) (s16)((degrees) * ((f32)0xFFFF / 360) + .5f)
|
||||
#define CAM_BINANG_TO_DEG(binang) ((f32)(binang) * (360.0001525f / 0xFFFF))
|
||||
|
||||
#define NUM_CAMS 4
|
||||
|
||||
// Camera IDs are indices into `cameraPtrs`
|
||||
#define CAM_ID_MAIN 0 // The index of the main camera
|
||||
#define CAM_ID_SUB_FIRST 1 // The index sub cameras start at
|
||||
#define CAM_ID_NONE -1 // Used to indicate no camera. Can be used to default to the active camera in some scenarios
|
||||
|
||||
#define SUB_CAM_ID_DONE 0 // Used in some actors for variables holding sub camera IDs to indicate "subcam is finished"
|
||||
|
||||
// Camera behaviorFlags. Flags specifically for settings, modes, and bgCam
|
||||
// Used to store current state, only CAM_BEHAVIOR_SETTING_1 and CAM_BEHAVIOR_BG_2 are read from and used in logic
|
||||
// Setting (0x1, 0x10)
|
||||
#define CAM_BEHAVIOR_SETTING_USE_PRIORITY (1 << 0) // Use settings priority system
|
||||
#define CAM_BEHAVIOR_SETTING_2 (1 << 4)
|
||||
// Mode (0x2, 0x20)
|
||||
#define CAM_BEHAVIOR_MODE_1 (1 << 1)
|
||||
#define CAM_BEHAVIOR_MODE_2 (1 << 5)
|
||||
// bgCam (0x4, 0x40)
|
||||
#define CAM_BEHAVIOR_BGCAM_1 (1 << 2)
|
||||
#define CAM_BEHAVIOR_BGCAM_2 (1 << 6)
|
||||
|
||||
// Camera stateFlags. Variety of generic flags
|
||||
#define CAM_STATE_0 (1 << 0) // Must be set for the camera from changing settings based on the bg surface
|
||||
#define CAM_STATE_1 (1 << 1)
|
||||
#define CAM_STATE_2 (1 << 2)
|
||||
#define CAM_STATE_3 (1 << 3)
|
||||
#define CAM_STATE_4 (1 << 4)
|
||||
#define CAM_STATE_5 (1 << 5)
|
||||
#define CAM_STATE_6 (1 << 6)
|
||||
#define CAM_STATE_7 (1 << 7)
|
||||
#define CAM_STATE_UNDERWATER (1 << 8)
|
||||
#define CAM_STATE_9 (1 << 9)
|
||||
#define CAM_STATE_10 (1 << 10) // Surpresses the camera from changing settings based on the bg surface
|
||||
#define CAM_STATE_11 (1 << 11)
|
||||
#define CAM_STATE_12 (1 << 12)
|
||||
#define CAM_STATE_13 (1 << 13)
|
||||
#define CAM_STATE_14 (1 << 14)
|
||||
#define CAM_STATE_15 ((s16)(1 << 15))
|
||||
|
||||
// Camera viewFlags. Set params related to view
|
||||
#define CAM_VIEW_AT (1 << 0) // camera->at
|
||||
#define CAM_VIEW_EYE (1 << 1) // camera->eye and camera->eyeNext
|
||||
#define CAM_VIEW_UP (1 << 2) // camera->up
|
||||
#define CAM_VIEW_TARGET (1 << 3) // camera->target
|
||||
#define CAM_VIEW_TARGET_POS (1 << 4) // camera->targetPosRot.pos
|
||||
#define CAM_VIEW_FOV (1 << 5) // camera->fov
|
||||
#define CAM_VIEW_ROLL (1 << 6) // camera->roll
|
||||
|
||||
/**
|
||||
* Camera Status type
|
||||
* Determines how much the camera is updated each frame
|
||||
* Higher values represents higher levels of activity
|
||||
*/
|
||||
// Camera is on
|
||||
#define CAM_STATUS_CUT 0 // The camera is not updated at all
|
||||
#define CAM_STATUS_WAIT 1 // There is minimally/partially updated, action function is not run
|
||||
#define CAM_STATUS_UNK3 3 // The camera is mostly updated including running its action function, but data is not set to view
|
||||
#define CAM_STATUS_ACTIVE 7 // The camera is fully updated, info is sent to view
|
||||
// Camera is off
|
||||
#define CAM_STATUS_INACTIVE 0x100
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ CAM_SET_NONE,
|
||||
/* 0x01 */ CAM_SET_NORMAL0, // Generic camera 0, used in various places "NORMAL0"
|
||||
/* 0x02 */ CAM_SET_NORMAL3, // Generic camera 3, used in various places "NORMAL3"
|
||||
/* 0x03 */ CAM_SET_PIVOT_DIVING, // Player diving from the surface of the water to underwater not as zora "CIRCLE5"
|
||||
/* 0x04 */ CAM_SET_HORSE, // Reiding a horse "HORSE0"
|
||||
/* 0x05 */ CAM_SET_ZORA_DIVING, // Parallel's Pivot Diving, but as Zora. However, Zora does not dive like a human. So this setting appears to not be used "ZORA0"
|
||||
/* 0x06 */ CAM_SET_PREREND_FIXED, // Unused remnant of OoT: camera is fixed in position and rotation "PREREND0"
|
||||
/* 0x07 */ CAM_SET_PREREND_PIVOT, // Unused remnant of OoT: Camera is fixed in position with fixed pitch, but is free to rotate in the yaw direction 360 degrees "PREREND1"
|
||||
/* 0x08 */ CAM_SET_DOORC, // Generic room door transitions, camera moves and follows player as the door is open and closed "DOORC"
|
||||
/* 0x09 */ CAM_SET_DEMO0, // Unknown, possibly related to treasure chest game as goron? "DEMO0"
|
||||
/* 0x0A */ CAM_SET_FREE0, // Free Camera, manual control is given, no auto-updating eye or at "FREE0"
|
||||
/* 0x0B */ CAM_SET_BIRDS_EYE_VIEW_0, // Appears unused. Camera is a top-down view "FUKAN0"
|
||||
/* 0x0C */ CAM_SET_NORMAL1, // Generic camera 1, used in various places "NORMAL1"
|
||||
/* 0x0D */ CAM_SET_NANAME, // Unknown, slanted or tilted. Behaves identical to Normal0 except with added roll "NANAME"
|
||||
/* 0x0E */ CAM_SET_CIRCLE0, // Used in Curiosity Shop, Pirates Fortress, Mayor's Residence "CIRCLE0"
|
||||
/* 0x0F */ CAM_SET_FIXED0, // Used in Sakon's Hideout puzzle rooms, milk bar stage "FIXED0"
|
||||
/* 0x10 */ CAM_SET_SPIRAL_DOOR, // Exiting a Spiral Staircase "SPIRAL"
|
||||
/* 0x11 */ CAM_SET_DUNGEON0, // Generic dungeon camera 0, used in various places "DUNGEON0"
|
||||
/* 0x12 */ CAM_SET_ITEM0, // Getting an item and holding it above Player's head (from small chest, freestanding, npc, ...) "ITEM0"
|
||||
/* 0x13 */ CAM_SET_ITEM1, // Looking at player while playing the ocarina "ITEM1"
|
||||
/* 0x14 */ CAM_SET_ITEM2, // Bottles: drinking, releasing fairy, dropping fish "ITEM2"
|
||||
/* 0x15 */ CAM_SET_ITEM3, // Bottles: catching fish or bugs, showing an item "ITEM3"
|
||||
/* 0x16 */ CAM_SET_NAVI, // Song of Soaring, variations of playing Song of Time "NAVI"
|
||||
/* 0x17 */ CAM_SET_WARP_PAD_MOON, // Warp circles from Goron Trial on the moon "WARP0"
|
||||
/* 0x18 */ CAM_SET_DEATH, // Player death animation when health goes to 0 "DEATH"
|
||||
/* 0x19 */ CAM_SET_REBIRTH, // Unknown set with camDataId = -9 (it's not being revived by a fairy) "REBIRTH"
|
||||
/* 0x1A */ CAM_SET_LONG_CHEST_OPENING, // Long cutscene when opening a big chest with a major item "TREASURE"
|
||||
/* 0x1B */ CAM_SET_MASK_TRANSFORMATION, // Putting on a transformation mask "TRANSFORM"
|
||||
/* 0x1C */ CAM_SET_ATTENTION, // Unknown, set with camDataId = -15 "ATTENTION"
|
||||
/* 0x1D */ CAM_SET_WARP_PAD_ENTRANCE, // Warp pad from start of a dungeon to the boss-room "WARP1"
|
||||
/* 0x1E */ CAM_SET_DUNGEON1, // Generic dungeon camera 1, used in various places "DUNGEON1"
|
||||
/* 0x1F */ CAM_SET_FIXED1, // Fixes camera in place, used in various places eg. entering Stock Pot Inn, hiting a switch, giving witch a red potion, shop browsing "FIXED1"
|
||||
/* 0x20 */ CAM_SET_FIXED2, // Used in Pinnacle Rock after defeating Sea Monsters, and by Tatl in Fortress "FIXED2"
|
||||
/* 0x21 */ CAM_SET_MAZE, // Unused. Set to use Camera_Parallel2(), which is only Camera_Noop() "MAZE"
|
||||
/* 0x22 */ CAM_SET_REMOTEBOMB, // Unused. Set to use Camera_Parallel2(), which is only Camera_Noop(). But also related to Play_ChangeCameraSetting? "REMOTEBOMB"
|
||||
/* 0x23 */ CAM_SET_CIRCLE1, // Unknown "CIRCLE1"
|
||||
/* 0x24 */ CAM_SET_CIRCLE2, // Looking at far-away NPCs eg. Garo in Road to Ikana, Hungry Goron, Tingle "CIRCLE2"
|
||||
/* 0x25 */ CAM_SET_CIRCLE3, // Used in curiosity shop, goron racetrack, final room in Sakon's hideout, other places "CIRCLE3"
|
||||
/* 0x26 */ CAM_SET_CIRCLE4, // Used during the races on the doggy racetrack "CIRCLE4"
|
||||
/* 0x27 */ CAM_SET_FIXED3, // Used in Stock Pot Inn Toilet and Tatl cutscene after woodfall "FIXED3"
|
||||
/* 0x28 */ CAM_SET_TOWER_ASCENT, // Various climbing structures (Snowhead climb to the temple entrance) "TOWER0"
|
||||
/* 0x29 */ CAM_SET_PARALLEL0, // Unknown "PARALLEL0"
|
||||
/* 0x2A */ CAM_SET_NORMALD, // Unknown, set with camDataId = -20 "NORMALD"
|
||||
/* 0x2B */ CAM_SET_SUBJECTD, // Unknown, set with camDataId = -21 "SUBJECTD"
|
||||
/* 0x2C */ CAM_SET_START0, // Entering a room, either Dawn of a New Day reload, or entering a door where the camera is fixed on the other end "START0"
|
||||
/* 0x2D */ CAM_SET_START2, // Entering a scene, camera is put at a low angle eg. Grottos, Deku Palace, Stock Pot Inn "START2"
|
||||
/* 0x2E */ CAM_SET_STOP0, // Called in z_play "STOP0"
|
||||
/* 0x2F */ CAM_SET_BOAT_CRUISE, // Koume's boat cruise "JCRUISING"
|
||||
/* 0x30 */ CAM_SET_VERTICAL_CLIMB, // Large vertical climbs, such as Mountain Village wall or Pirates Fortress ladder. "CLIMBMAZE"
|
||||
/* 0x31 */ CAM_SET_SIDED, // Unknown, set with camDataId = -24 "SIDED"
|
||||
/* 0x32 */ CAM_SET_DUNGEON2, // Generic dungeon camera 2, used in various places "DUNGEON2"
|
||||
/* 0x33 */ CAM_SET_BOSS_ODOLWA, // Odolwa's Lair, also used in GBT entrance: "BOSS_SHIGE"
|
||||
/* 0x34 */ CAM_SET_KEEPBACK, // Unknown. Possibly related to climbing something? "KEEPBACK"
|
||||
/* 0x35 */ CAM_SET_CIRCLE6, // Used in select regions from Ikana "CIRCLE6"
|
||||
/* 0x36 */ CAM_SET_CIRCLE7, // Unknown "CIRCLE7"
|
||||
/* 0x37 */ CAM_SET_MINI_BOSS, // Used during the various minibosses of the "CHUBOSS"
|
||||
/* 0x38 */ CAM_SET_RFIXED1, // Talking to Koume stuck on the floor in woods of mystery "RFIXED1"
|
||||
/* 0x39 */ CAM_SET_TREASURE_CHEST_MINIGAME, // Treasure Chest Shop in East Clock Town, minigame location "TRESURE1"
|
||||
/* 0x3A */ CAM_SET_HONEY_AND_DARLING_1, // Honey and Darling Minigames "BOMBBASKET"
|
||||
/* 0x3B */ CAM_SET_CIRCLE8, // Used by Stone Tower moving platforms, Falling eggs in Marine Lab, Bugs into soilpatch cutscene "CIRCLE8"
|
||||
/* 0x3C */ CAM_SET_BIRDS_EYE_VIEW_1, // Camera is a top-down view. Used in Fisherman's minigame and Deku Palace "FUKAN1"
|
||||
/* 0x3D */ CAM_SET_DUNGEON3, // Generic dungeon camera 3, used in various places "DUNGEON3"
|
||||
/* 0x3E */ CAM_SET_TELESCOPE, // Observatory telescope and Curiosity Shop Peep-Hole "TELESCOPE"
|
||||
/* 0x3F */ CAM_SET_ROOM0, // Certain rooms eg. inside the clock tower "ROOM0"
|
||||
/* 0x40 */ CAM_SET_RCIRC0, // Used by a few NPC cutscenes, focus close on the NPC "RCIRC0"
|
||||
/* 0x41 */ CAM_SET_CIRCLE9, // Used by Sakon Hideout entrance and Deku Palace Maze "CIRCLE9"
|
||||
/* 0x42 */ CAM_SET_ONTHEPOLE, // Somewhere in Snowhead Temple and Woodfall Temple "ONTHEPOLE"
|
||||
/* 0x43 */ CAM_SET_INBUSH, // Various bush environments eg. grottos, Swamp Spider House, Termina Field grass bushes, Deku Palace near bean "INBUSH"
|
||||
/* 0x44 */ CAM_SET_BOSS_MAJORA, // Majora's Lair: "BOSS_LAST"
|
||||
/* 0x45 */ CAM_SET_BOSS_TWINMOLD, // Twinmold's Lair: "BOSS_INI"
|
||||
/* 0x46 */ CAM_SET_BOSS_GOHT, // Goht's Lair: "BOSS_HAK"
|
||||
/* 0x47 */ CAM_SET_BOSS_GYORG, // Gyorg's Lair: "BOSS_KON"
|
||||
/* 0x48 */ CAM_SET_CONNECT0, // Smoothly and gradually return camera to Player after a cutscene "CONNECT0"
|
||||
/* 0x49 */ CAM_SET_PINNACLE_ROCK, // Pinnacle Rock pit "MORAY"
|
||||
/* 0x4A */ CAM_SET_NORMAL2, // Generic camera 2, used in various places "NORMAL2"
|
||||
/* 0x4B */ CAM_SET_HONEY_AND_DARLING_2, // "BOMBBOWL"
|
||||
/* 0x4C */ CAM_SET_CIRCLEA, // Unknown, Circle 10 "CIRCLEA"
|
||||
/* 0x4D */ CAM_SET_WHIRLPOOL, // Great Bay Temple Central Room Whirlpool "WHIRLPOOL"
|
||||
/* 0x4E */ CAM_SET_CUCCO_SHACK, // "KOKKOGAME"
|
||||
/* 0x4F */ CAM_SET_GIANT, // Giants Mask in Twinmold's Lair "GIANT"
|
||||
/* 0x50 */ CAM_SET_SCENE0, // Entering doors to a new scene "SCENE0"
|
||||
/* 0x51 */ CAM_SET_ROOM1, // Certain rooms eg. some rooms in Stock Pot Inn "ROOM1"
|
||||
/* 0x52 */ CAM_SET_WATER2, // Swimming as Zora in Great Bay Temple "WATER2"
|
||||
/* 0x53 */ CAM_SET_WOODFALL_SWAMP, // Woodfall inside the swamp, but not on the platforms, "SOKONASI"
|
||||
/* 0x54 */ CAM_SET_FORCEKEEP, // Unknown "FORCEKEEP"
|
||||
/* 0x55 */ CAM_SET_PARALLEL1, // Unknown "PARALLEL1"
|
||||
/* 0x56 */ CAM_SET_START1, // Used when entering the lens cave "START1"
|
||||
/* 0x57 */ CAM_SET_ROOM2, // Certain rooms eg. Deku King's Chamber, Ocean Spider House "ROOM2"
|
||||
/* 0x58 */ CAM_SET_NORMAL4, // Generic camera 4, used in Ikana Graveyard "NORMAL4"
|
||||
/* 0x59 */ CAM_SET_ELEGY_SHELL, // cutscene after playing elegy of emptyness and spawning a shell "SHELL"
|
||||
/* 0x5A */ CAM_SET_DUNGEON4, // Used in Pirates Fortress Interior, hidden room near hookshot "DUNGEON4"
|
||||
/* 0x5B */ CAM_SET_MAX
|
||||
} CameraSettingType;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ CAM_MODE_NORMAL, // "NORMAL"
|
||||
/* 0x01 */ CAM_MODE_JUMP, // "JUMP"
|
||||
/* 0x02 */ CAM_MODE_GORONDASH, // "GORONDASH"
|
||||
/* 0x03 */ CAM_MODE_DEKUSHOOT, // "NUTSSHOT"
|
||||
/* 0x04 */ CAM_MODE_BOWARROWZ, // "BOWARROWZ"
|
||||
/* 0x05 */ CAM_MODE_DEKUFLY, // "NUTSFLY"
|
||||
/* 0x06 */ CAM_MODE_FIRSTPERSON, // "SUBJECT"
|
||||
/* 0x07 */ CAM_MODE_FOLLOWBOOMERANG, // "BOOKEEPON"
|
||||
/* 0x08 */ CAM_MODE_ZORAFIN, // "ZORAFIN"
|
||||
/* 0x09 */ CAM_MODE_FOLLOWTARGET, // "KEEPON"
|
||||
/* 0x0A */ CAM_MODE_TARGET, // "PARALLEL"
|
||||
/* 0x0B */ CAM_MODE_TALK, // "TALK"
|
||||
/* 0x0C */ CAM_MODE_SLINGSHOT, // "PACHINCO"
|
||||
/* 0x0D */ CAM_MODE_BOWARROW, // "BOWARROW"
|
||||
/* 0x0E */ CAM_MODE_BATTLE, // "BATTLE"
|
||||
/* 0x0F */ CAM_MODE_DEKUHIDE, // "NUTSHIDE"
|
||||
/* 0x10 */ CAM_MODE_STILL, // "STILL"
|
||||
/* 0x11 */ CAM_MODE_CHARGE, // "CHARGE"
|
||||
/* 0x12 */ CAM_MODE_CLIMB, // "CLIMB"
|
||||
/* 0x13 */ CAM_MODE_CLIMBZ, // "CLIMBZ"
|
||||
/* 0x14 */ CAM_MODE_HOOKSHOT, // "FOOKSHOT"
|
||||
/* 0x15 */ CAM_MODE_FREEFALL, // "FREEFALL"
|
||||
/* 0x16 */ CAM_MODE_HANG, // "HANG"
|
||||
/* 0x17 */ CAM_MODE_HANGZ, // "HANGZ
|
||||
/* 0x18 */ CAM_MODE_PUSHPULL, // "PUSHPULL"
|
||||
/* 0x19 */ CAM_MODE_DEKUFLYZ, // "CNUTSFLYZ"
|
||||
/* 0x1A */ CAM_MODE_GORONJUMP, // "GORONJUMP"
|
||||
/* 0x1B */ CAM_MODE_BOOMERANG, // "BOOMERANG"
|
||||
/* 0x1C */ CAM_MODE_CHARGEZ, // "CHARGEZ"
|
||||
/* 0x1D */ CAM_MODE_ZORAFINZ, // "ZORAFINZ"
|
||||
/* 0x1E */ CAM_MODE_MAX
|
||||
} CameraModeType;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ CAM_FUNC_NONE,
|
||||
/* 0x01 */ CAM_FUNC_NORMAL0,
|
||||
/* 0x02 */ CAM_FUNC_NORMAL1,
|
||||
/* 0x03 */ CAM_FUNC_NORMAL2,
|
||||
/* 0x04 */ CAM_FUNC_NORMAL3,
|
||||
/* 0x05 */ CAM_FUNC_NORMAL4,
|
||||
/* 0x06 */ CAM_FUNC_PARALLEL0,
|
||||
/* 0x07 */ CAM_FUNC_PARALLEL1,
|
||||
/* 0x08 */ CAM_FUNC_PARALLEL2,
|
||||
/* 0x09 */ CAM_FUNC_PARALLEL3,
|
||||
/* 0x0A */ CAM_FUNC_PARALLEL4,
|
||||
/* 0x0B */ CAM_FUNC_KEEPON0,
|
||||
/* 0x0C */ CAM_FUNC_KEEPON1,
|
||||
/* 0x0D */ CAM_FUNC_KEEPON2,
|
||||
/* 0x0E */ CAM_FUNC_KEEPON3,
|
||||
/* 0x0F */ CAM_FUNC_KEEPON4,
|
||||
/* 0x10 */ CAM_FUNC_SUBJECT0,
|
||||
/* 0x11 */ CAM_FUNC_SUBJECT1,
|
||||
/* 0x12 */ CAM_FUNC_SUBJECT2,
|
||||
/* 0x13 */ CAM_FUNC_SUBJECT3,
|
||||
/* 0x14 */ CAM_FUNC_SUBJECT4,
|
||||
/* 0x15 */ CAM_FUNC_JUMP0,
|
||||
/* 0x16 */ CAM_FUNC_JUMP1,
|
||||
/* 0x17 */ CAM_FUNC_JUMP2,
|
||||
/* 0x18 */ CAM_FUNC_JUMP3,
|
||||
/* 0x19 */ CAM_FUNC_JUMP4,
|
||||
/* 0x1A */ CAM_FUNC_BATTLE0,
|
||||
/* 0x1B */ CAM_FUNC_BATTLE1,
|
||||
/* 0x1C */ CAM_FUNC_BATTLE2,
|
||||
/* 0x1D */ CAM_FUNC_BATTLE3,
|
||||
/* 0x1E */ CAM_FUNC_BATTLE4,
|
||||
/* 0x1F */ CAM_FUNC_FIXED0,
|
||||
/* 0x20 */ CAM_FUNC_FIXED1,
|
||||
/* 0x21 */ CAM_FUNC_FIXED2,
|
||||
/* 0x22 */ CAM_FUNC_FIXED3,
|
||||
/* 0x23 */ CAM_FUNC_FIXED4,
|
||||
/* 0x24 */ CAM_FUNC_DATA0,
|
||||
/* 0x25 */ CAM_FUNC_DATA1,
|
||||
/* 0x26 */ CAM_FUNC_DATA2,
|
||||
/* 0x27 */ CAM_FUNC_DATA3,
|
||||
/* 0x28 */ CAM_FUNC_DATA4,
|
||||
/* 0x29 */ CAM_FUNC_UNIQUE0,
|
||||
/* 0x2A */ CAM_FUNC_UNIQUE1,
|
||||
/* 0x2B */ CAM_FUNC_UNIQUE2,
|
||||
/* 0x2C */ CAM_FUNC_UNIQUE3,
|
||||
/* 0x2D */ CAM_FUNC_UNIQUE4,
|
||||
/* 0x2E */ CAM_FUNC_UNIQUE5,
|
||||
/* 0x2F */ CAM_FUNC_UNIQUE6,
|
||||
/* 0x30 */ CAM_FUNC_UNIQUE7,
|
||||
/* 0x31 */ CAM_FUNC_UNIQUE8,
|
||||
/* 0x32 */ CAM_FUNC_UNIQUE9,
|
||||
/* 0x33 */ CAM_FUNC_DEMO0,
|
||||
/* 0x34 */ CAM_FUNC_DEMO1,
|
||||
/* 0x35 */ CAM_FUNC_DEMO2,
|
||||
/* 0x36 */ CAM_FUNC_DEMO3,
|
||||
/* 0x37 */ CAM_FUNC_DEMO4,
|
||||
/* 0x38 */ CAM_FUNC_DEMO5,
|
||||
/* 0x39 */ CAM_FUNC_DEMO6,
|
||||
/* 0x3A */ CAM_FUNC_DEMO7,
|
||||
/* 0x3B */ CAM_FUNC_DEMO8,
|
||||
/* 0x3C */ CAM_FUNC_DEMO9,
|
||||
/* 0x3D */ CAM_FUNC_SPECIAL0,
|
||||
/* 0x3E */ CAM_FUNC_SPECIAL1,
|
||||
/* 0x3F */ CAM_FUNC_SPECIAL2,
|
||||
/* 0x40 */ CAM_FUNC_SPECIAL3,
|
||||
/* 0x41 */ CAM_FUNC_SPECIAL4,
|
||||
/* 0x42 */ CAM_FUNC_SPECIAL5,
|
||||
/* 0x43 */ CAM_FUNC_SPECIAL6,
|
||||
/* 0x44 */ CAM_FUNC_SPECIAL7,
|
||||
/* 0x45 */ CAM_FUNC_SPECIAL8,
|
||||
/* 0x46 */ CAM_FUNC_SPECIAL9,
|
||||
/* 0x47 */ CAM_FUNC_MAX
|
||||
} CameraFuncType;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ CAM_DATA_00,
|
||||
/* 0x01 */ CAM_DATA_01,
|
||||
/* 0x02 */ CAM_DATA_02,
|
||||
/* 0x03 */ CAM_DATA_03,
|
||||
/* 0x04 */ CAM_DATA_04,
|
||||
/* 0x05 */ CAM_DATA_05,
|
||||
/* 0x06 */ CAM_DATA_06,
|
||||
/* 0x07 */ CAM_DATA_07,
|
||||
/* 0x08 */ CAM_DATA_08,
|
||||
/* 0x09 */ CAM_DATA_09,
|
||||
/* 0x0A */ CAM_DATA_10,
|
||||
/* 0x0B */ CAM_DATA_11,
|
||||
/* 0x0C */ CAM_DATA_12,
|
||||
/* 0x0D */ CAM_DATA_13,
|
||||
/* 0x0E */ CAM_DATA_14,
|
||||
/* 0x0F */ CAM_DATA_15,
|
||||
/* 0x10 */ CAM_DATA_16,
|
||||
/* 0x11 */ CAM_DATA_17,
|
||||
/* 0x12 */ CAM_DATA_18,
|
||||
/* 0x13 */ CAM_DATA_19,
|
||||
/* 0x14 */ CAM_DATA_20,
|
||||
/* 0x15 */ CAM_DATA_21,
|
||||
} CameraDataType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 val;
|
||||
/* 0x2 */ s16 param;
|
||||
} CameraModeValue; // size = 0x4
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 funcId;
|
||||
/* 0x2 */ s16 numValues;
|
||||
/* 0x4 */ CameraModeValue* values;
|
||||
} CameraMode; // size = 0x8
|
||||
|
||||
/**
|
||||
* Flags:
|
||||
* (flags & 0xF): Priority (lower value has higher priority)
|
||||
* (flags & 0x40000000): Store previous setting and bgCamData, also ignores water checks
|
||||
* (flags & 0x80000000): Set camera setting based on bg/scene data and reset action function state
|
||||
*/
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 validModes;
|
||||
/* 0x4 */ u32 flags;
|
||||
/* 0x8 */ CameraMode* cameraModes;
|
||||
} CameraSetting; // size = 0xC
|
||||
|
||||
typedef struct Camera {
|
||||
/* 0x000 */ u8 paramData[0x50]; // function Data, acts like a heap that's reset every time a new action function is switched to
|
||||
/* 0x050 */ Vec3f at;
|
||||
/* 0x05C */ Vec3f eye;
|
||||
/* 0x068 */ Vec3f up;
|
||||
/* 0x074 */ Vec3f eyeNext;
|
||||
/* 0x080 */ Vec3f quakeOffset;
|
||||
/* 0x08C */ struct PlayState* play;
|
||||
/* 0x090 */ Actor* focalActor; // the actor the camera is focused on. Most often Player, but can be any actor
|
||||
/* 0x094 */ PosRot focalActorPosRot;
|
||||
/* 0x0A8 */ Actor* target; // the actor that is being z-targeted
|
||||
/* 0x0AC */ PosRot targetPosRot;
|
||||
/* 0x0C0 */ f32 rUpdateRateInv;
|
||||
/* 0x0C4 */ f32 pitchUpdateRateInv;
|
||||
/* 0x0C8 */ f32 yawUpdateRateInv;
|
||||
/* 0x0CC */ f32 yOffsetUpdateRate;
|
||||
/* 0x0D0 */ f32 xzOffsetUpdateRate;
|
||||
/* 0x0D4 */ f32 fovUpdateRate;
|
||||
/* 0x0D8 */ f32 xzSpeed;
|
||||
/* 0x0DC */ f32 dist;
|
||||
/* 0x0E0 */ f32 speedRatio;
|
||||
/* 0x0E4 */ Vec3f atActorOffset;
|
||||
/* 0x0F0 */ Vec3f focalActorOffset;
|
||||
/* 0x0FC */ f32 fov;
|
||||
/* 0x100 */ f32 atLerpStepScale;
|
||||
/* 0x104 */ f32 playerFloorHeight;
|
||||
/* 0x108 */ Vec3f floorNorm;
|
||||
/* 0x114 */ f32 waterYPos;
|
||||
/* 0x118 */ s32 waterPrevBgCamDataId;
|
||||
/* 0x11C */ s32 waterPrevCamSetting;
|
||||
/* 0x120 */ s16 waterQuakeId;
|
||||
/* 0x122 */ s16 unk122;
|
||||
/* 0x124 */ void* data0;
|
||||
/* 0x128 */ void* data1;
|
||||
/* 0x12C */ s16 data2;
|
||||
/* 0x12E */ s16 data3;
|
||||
/* 0x130 */ s16 uid;
|
||||
/* 0x132 */ UNK_TYPE1 unk_132[2];
|
||||
/* 0x134 */ Vec3s inputDir;
|
||||
/* 0x13A */ Vec3s camDir;
|
||||
/* 0x140 */ s16 status;
|
||||
/* 0x142 */ s16 setting;
|
||||
/* 0x144 */ s16 mode;
|
||||
/* 0x146 */ s16 bgId;
|
||||
/* 0x148 */ s16 bgCamDataId;
|
||||
/* 0x14A */ s16 behaviorFlags;
|
||||
/* 0x14C */ s16 stateFlags;
|
||||
/* 0x14E */ s16 childCamId;
|
||||
/* 0x150 */ s16 doorTimer1; // a door timer used when door cam is indexed from bgCamDataId
|
||||
/* 0x152 */ s16 unk152;
|
||||
/* 0x154 */ s16 prevSetting;
|
||||
/* 0x156 */ s16 nextCamSceneDataId;
|
||||
/* 0x158 */ s16 nextBgId;
|
||||
/* 0x15A */ s16 roll;
|
||||
/* 0x15C */ s16 viewFlags;
|
||||
/* 0x15E */ s16 animState; // Determines the current state of the current camera behavior function
|
||||
/* 0x160 */ s16 unk160;
|
||||
/* 0x162 */ s16 doorTimer2; // a door timer used when door cam is indexed from bgCamDataId
|
||||
/* 0x164 */ s16 camId;
|
||||
/* 0x166 */ s16 prevBgCamDataId;
|
||||
/* 0x168 */ s16 unk168;
|
||||
/* 0x16C */ Vec3f meshActorPos;
|
||||
} Camera; // size = 0x178
|
||||
|
||||
#endif
|
||||
|
|
@ -111,11 +111,9 @@ typedef struct {
|
|||
|
||||
// Angle conversion macros
|
||||
#define DEG_TO_BINANG(degrees) (s16)((degrees) * (0x8000 / 180.0f))
|
||||
#define DEGF_TO_BINANG(degreesf) (s16)((degreesf) * 182.04167f + .5f)
|
||||
#define RADF_TO_BINANG(radf) (s16)((radf) * (0x8000 / M_PI))
|
||||
#define RADF_TO_DEGF(radf) ((radf) * (180.0f / M_PI))
|
||||
#define DEGF_TO_RADF(degf) ((degf) * (M_PI / 180.0f))
|
||||
#define BINANG_TO_DEGF(binang) ((f32)binang * (360.0001525f / 65535.0f))
|
||||
#define BINANG_TO_RAD(binang) (((f32)binang / 0x8000) * M_PI)
|
||||
|
||||
// Angle arithmetic macros
|
||||
|
|
|
|||
|
|
@ -1343,7 +1343,7 @@ void Actor_SetCameraHorseSetting(PlayState* play, Player* player) {
|
|||
EnHorse* rideActor = (EnHorse*)player->rideActor;
|
||||
|
||||
if ((rideActor != NULL) && !(rideActor->unk_1EC & 0x10)) {
|
||||
func_800DFAC8(Play_GetCamera(play, CAM_ID_MAIN), 4);
|
||||
Camera_ChangeSetting(Play_GetCamera(play, CAM_ID_MAIN), CAM_SET_HORSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2508,10 +2508,10 @@ void Actor_Draw(PlayState* play, Actor* actor) {
|
|||
Lights_Draw(light, play->state.gfxCtx);
|
||||
|
||||
if (actor->flags & ACTOR_FLAG_1000) {
|
||||
Matrix_SetTranslateRotateYXZ(actor->world.pos.x + play->mainCamera.skyboxOffset.x,
|
||||
Matrix_SetTranslateRotateYXZ(actor->world.pos.x + play->mainCamera.quakeOffset.x,
|
||||
actor->world.pos.y +
|
||||
((actor->shape.yOffset * actor->scale.y) + play->mainCamera.skyboxOffset.y),
|
||||
actor->world.pos.z + play->mainCamera.skyboxOffset.z, &actor->shape.rot);
|
||||
((actor->shape.yOffset * actor->scale.y) + play->mainCamera.quakeOffset.y),
|
||||
actor->world.pos.z + play->mainCamera.quakeOffset.z, &actor->shape.rot);
|
||||
} else {
|
||||
Matrix_SetTranslateRotateYXZ(actor->world.pos.x, actor->world.pos.y + (actor->shape.yOffset * actor->scale.y),
|
||||
actor->world.pos.z, &actor->shape.rot);
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@
|
|||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/func_800DF8EC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/func_800DFAC8.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_ChangeSetting.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_ChangeDataIdx.s")
|
||||
|
||||
|
|
@ -328,13 +328,13 @@
|
|||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_GetInputDirYaw.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/func_800DFC90.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_GetCamDir.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_GetCamDirPitch.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_GetCamDirYaw.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/func_800DFD04.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_AddQuake.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/func_800DFD78.s")
|
||||
|
||||
|
|
@ -350,7 +350,7 @@
|
|||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_ClearFlags.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/func_800DFFAC.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/Camera_ChangeDoorCam.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_camera/func_800E007C.s")
|
||||
|
||||
|
|
|
|||
|
|
@ -123,14 +123,14 @@ VecSph* OLib_Vec3fToVecSph(VecSph* dest, Vec3f* vec) {
|
|||
if ((dist == 0.0f) && (vec->y == 0.0f)) {
|
||||
sph.pitch = 0;
|
||||
} else {
|
||||
sph.pitch = DEGF_TO_BINANG(RADF_TO_DEGF(func_80086B30(dist, vec->y)));
|
||||
sph.pitch = CAM_DEG_TO_BINANG(RADF_TO_DEGF(func_80086B30(dist, vec->y)));
|
||||
}
|
||||
|
||||
sph.r = sqrtf(SQ(vec->y) + distSquared);
|
||||
if ((vec->x == 0.0f) && (vec->z == 0.0f)) {
|
||||
sph.yaw = 0;
|
||||
} else {
|
||||
sph.yaw = DEGF_TO_BINANG(RADF_TO_DEGF(func_80086B30(vec->x, vec->z)));
|
||||
sph.yaw = CAM_DEG_TO_BINANG(RADF_TO_DEGF(func_80086B30(vec->x, vec->z)));
|
||||
}
|
||||
|
||||
*dest = sph;
|
||||
|
|
@ -238,8 +238,8 @@ Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b) {
|
|||
|
||||
OLib_Vec3fDiffRad(&anglesRad, a, b);
|
||||
|
||||
anglesBinAng.x = DEGF_TO_BINANG(RADF_TO_DEGF(anglesRad.x));
|
||||
anglesBinAng.y = DEGF_TO_BINANG(RADF_TO_DEGF(anglesRad.y));
|
||||
anglesBinAng.x = CAM_DEG_TO_BINANG(RADF_TO_DEGF(anglesRad.x));
|
||||
anglesBinAng.y = CAM_DEG_TO_BINANG(RADF_TO_DEGF(anglesRad.y));
|
||||
anglesBinAng.z = 0.0f;
|
||||
|
||||
*dest = anglesBinAng;
|
||||
|
|
|
|||
|
|
@ -756,8 +756,8 @@ void Distortion_Update(void) {
|
|||
return;
|
||||
}
|
||||
|
||||
depthPhase += DEGF_TO_BINANG(depthPhaseStep);
|
||||
screenPlanePhase += DEGF_TO_BINANG(screenPlanePhaseStep);
|
||||
depthPhase += CAM_DEG_TO_BINANG(depthPhaseStep);
|
||||
screenPlanePhase += CAM_DEG_TO_BINANG(screenPlanePhaseStep);
|
||||
|
||||
View_SetDistortionDirRot(&sDistortionContext.play->view,
|
||||
Math_CosS(depthPhase) * (DEGF_TO_RADF(rotX) * xyScaleFactor),
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ void BgCtowerRot_CorridorRotate(BgCtowerRot* this, PlayState* play) {
|
|||
|
||||
Actor_OffsetOfPointInActorCoords(&this->dyna.actor, &offset, &player->actor.world.pos);
|
||||
rotZ = CLAMP(1100.0f - offset.z, 0.0f, 1000.0f);
|
||||
func_800DFAC8(play->cameraPtrs[CAM_ID_MAIN], 17);
|
||||
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0);
|
||||
this->dyna.actor.shape.rot.z = rotZ * 16.384f;
|
||||
|
||||
if (play->csCtx.frames == 132) {
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ void BgIkanaDharma_Update(Actor* thisx, PlayState* play) {
|
|||
Actor_MoveWithGravity(&this->dyna.actor);
|
||||
Actor_UpdateBgCheckInfo(play, &this->dyna.actor, 0.0f, 0.0f, 0.0f, 4);
|
||||
if (this->dyna.actor.bgCheckFlags & 2) {
|
||||
s16 quake = Quake_Add(play->cameraPtrs[play->activeCamera], 3);
|
||||
s16 quake = Quake_Add(GET_ACTIVE_CAM(play), 3);
|
||||
|
||||
Quake_SetSpeed(quake, 21536);
|
||||
Quake_SetQuakeValues(quake, 4, 0, 0, 0);
|
||||
|
|
|
|||
|
|
@ -130,14 +130,14 @@ s32 func_80953DA8(BgIngate* this, PlayState* play) {
|
|||
} else {
|
||||
gSaveContext.eventInf[4] |= 2;
|
||||
}
|
||||
func_800DFAC8(camera, 47);
|
||||
Camera_ChangeSetting(camera, CAM_SET_BOAT_CRUISE);
|
||||
play->unk_1887C = 0x63;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void func_80953E38(PlayState* play) {
|
||||
func_800DFAC8(Play_GetCamera(play, CAM_ID_MAIN), 1);
|
||||
Camera_ChangeSetting(Play_GetCamera(play, CAM_ID_MAIN), CAM_SET_NORMAL0);
|
||||
|
||||
if (!(gSaveContext.eventInf[3] & 0x20)) {
|
||||
gSaveContext.eventInf[4] &= (u8)~2;
|
||||
|
|
@ -214,11 +214,11 @@ void func_80953F9C(BgIngate* this, PlayState* play) {
|
|||
}
|
||||
if (ActorCutscene_GetCurrentIndex() != this->unk16E) {
|
||||
if (ActorCutscene_GetCurrentIndex() != -1) {
|
||||
func_800DFAC8(camera, 1);
|
||||
Camera_ChangeSetting(camera, CAM_SET_NORMAL0);
|
||||
player->stateFlags1 |= 0x20;
|
||||
play->actorCtx.unk5 &= ~0x4;
|
||||
} else {
|
||||
func_800DFAC8(camera, 47);
|
||||
Camera_ChangeSetting(camera, CAM_SET_BOAT_CRUISE);
|
||||
player->stateFlags1 &= ~0x20;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ void func_80ACAD88(BgOpenShutter* this, PlayState* play) {
|
|||
Player* player = GET_PLAYER(play);
|
||||
|
||||
Actor_PlaySfxAtPos(&this->dyna.actor, NA_SE_EV_SLIDE_DOOR_OPEN);
|
||||
func_800DFFAC(play->cameraPtrs[0], &this->dyna.actor, player->unk_3BA, 0.0f, 12, 15, 10);
|
||||
Camera_ChangeDoorCam(play->cameraPtrs[CAM_ID_MAIN], &this->dyna.actor, player->unk_3BA, 0.0f, 12, 15, 10);
|
||||
this->unk_164 = 0;
|
||||
this->actionFunc = func_80ACAE5C;
|
||||
this->dyna.actor.velocity.y = 0.0f;
|
||||
|
|
|
|||
|
|
@ -1633,8 +1633,8 @@ void func_809DD934(Boss02* this, PlayState* play) {
|
|||
if (player->stateFlags1 & 0x100) {
|
||||
Cutscene_Start(play, &play->csCtx);
|
||||
this->unk_1D22 = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->unk_1D22, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->unk_1D22, CAM_STATUS_ACTIVE);
|
||||
func_8016566C(150);
|
||||
this->unk_1D14 = 0;
|
||||
this->unk_1D5C = 0.0f;
|
||||
|
|
@ -2059,8 +2059,8 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
|
|||
}
|
||||
Cutscene_Start(play, &play->csCtx);
|
||||
this->unk_1D22 = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->unk_1D22, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->unk_1D22, CAM_STATUS_ACTIVE);
|
||||
this->unk_1D20 = 2;
|
||||
this->unk_1D1C = 0;
|
||||
|
||||
|
|
@ -2156,8 +2156,8 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
|
|||
if (ActorCutscene_GetCurrentIndex() == -1) {
|
||||
Cutscene_Start(play, &play->csCtx);
|
||||
this->unk_1D22 = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->unk_1D22, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->unk_1D22, CAM_STATUS_ACTIVE);
|
||||
this->unk_1D20 = 101;
|
||||
this->unk_1D1C = 0;
|
||||
this->unk_1D5C = 1.0f;
|
||||
|
|
|
|||
|
|
@ -1151,8 +1151,8 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) {
|
|||
Cutscene_Start(play, &play->csCtx);
|
||||
func_800B7298(play, &this->actor, 7);
|
||||
this->csCamId = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->csCamId, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->csCamId, CAM_STATUS_ACTIVE);
|
||||
|
||||
this->actor.world.rot.y = -0x7B30;
|
||||
this->prevPlayerPos.y = 1850.0f;
|
||||
|
|
@ -1451,8 +1451,8 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) {
|
|||
Cutscene_Start(play, &play->csCtx);
|
||||
func_800B7298(play, &this->actor, 1);
|
||||
this->csCamId = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->csCamId, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->csCamId, CAM_STATUS_ACTIVE);
|
||||
this->unk_2BE = Math_FAtan2F(this->actor.world.pos.z, this->actor.world.pos.x);
|
||||
|
||||
// Player is above water && Player is standing on ground
|
||||
|
|
@ -1665,8 +1665,8 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) {
|
|||
Cutscene_Start(play, &play->csCtx);
|
||||
func_800B7298(play, &this->actor, 1);
|
||||
this->csCamId = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->csCamId, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->csCamId, CAM_STATUS_ACTIVE);
|
||||
this->csState = 1;
|
||||
this->unk_2BE = 0xBB8;
|
||||
|
||||
|
|
@ -2441,8 +2441,7 @@ void Boss03_DrawEffects(PlayState* play) {
|
|||
Matrix_Translate(eff->pos.x, eff->pos.y, eff->pos.z, MTXMODE_NEW);
|
||||
|
||||
if (eff->type == GYORG_EFFECT_DROPLET) {
|
||||
Matrix_RotateYF(Camera_GetInputDirYaw(play->cameraPtrs[play->activeCamera]) * (M_PI / 0x8000),
|
||||
MTXMODE_APPLY);
|
||||
Matrix_RotateYF(Camera_GetInputDirYaw(GET_ACTIVE_CAM(play)) * (M_PI / 0x8000), MTXMODE_APPLY);
|
||||
} else { // GYORG_EFFECT_SPLASH
|
||||
Matrix_ReplaceRotation(&play->billboardMtxF);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -260,8 +260,8 @@ void func_809EC568(Boss04* this, PlayState* play) {
|
|||
this->unk_704 = 0;
|
||||
Cutscene_Start(play, &play->csCtx);
|
||||
this->unk_70A = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->unk_70A, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->unk_70A, CAM_STATUS_ACTIVE);
|
||||
func_800B7298(play, &this->actor, 7);
|
||||
player->actor.world.pos.x = this->unk_6E8;
|
||||
player->actor.world.pos.z = this->unk_6F0 + 410.0f;
|
||||
|
|
|
|||
|
|
@ -201,8 +201,8 @@ void func_809F24C8(Boss06* this, PlayState* play) {
|
|||
Cutscene_Start(play, &play->csCtx);
|
||||
func_800B7298(play, &this->actor, 7);
|
||||
this->unk_A00 = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->unk_A00, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->unk_A00, CAM_STATUS_ACTIVE);
|
||||
D_809F4970->unk_151 = 1;
|
||||
this->unk_1C9 = 1;
|
||||
this->unk_1C8 = 1;
|
||||
|
|
|
|||
|
|
@ -502,7 +502,7 @@ void DemoKakyo_DrawLostWoodsSparkle(Actor* thisx, PlayState* play2) {
|
|||
Vec3f screenPos;
|
||||
|
||||
// if not underwater
|
||||
if (!(play->cameraPtrs[CAM_ID_MAIN]->flags2 & 0x100)) {
|
||||
if (!(play->cameraPtrs[CAM_ID_MAIN]->stateFlags & CAM_STATE_UNDERWATER)) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 20);
|
||||
|
|
|
|||
|
|
@ -405,7 +405,7 @@ void func_808A1288(DoorShutter* this, PlayState* play) {
|
|||
this->unk_164 = sp38;
|
||||
this->unk_168 = 0.0f;
|
||||
|
||||
func_800DFFAC(play->cameraPtrs[CAM_ID_MAIN], &this->actor, player->unk_3BA, this->unk_168, 12, sp34, 10);
|
||||
Camera_ChangeDoorCam(play->cameraPtrs[CAM_ID_MAIN], &this->actor, player->unk_3BA, this->unk_168, 12, sp34, 10);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ void EffZoraband_Draw(Actor* thisx, PlayState* play2) {
|
|||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_8012C2DC(play->state.gfxCtx);
|
||||
Matrix_RotateYS((Camera_GetCamDirYaw(play->cameraPtrs[play->activeCamera]) + 0x8000), MTXMODE_APPLY);
|
||||
Matrix_RotateYS((Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x8000), MTXMODE_APPLY);
|
||||
AnimatedMat_DrawXlu(play, Lib_SegmentedToVirtual(object_zoraband_Matanimheader_000F38));
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
if (this->actor.home.rot.z != 0) {
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ void func_8092E284(ElfMsg* this, PlayState* play) {
|
|||
} else if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) {
|
||||
this->actor.home.rot.x = 0;
|
||||
ActorCutscene_Start(this->actor.cutscene, &this->actor);
|
||||
func_800E0348(play->cameraPtrs[0]);
|
||||
func_800E0348(play->cameraPtrs[CAM_ID_MAIN]);
|
||||
} else {
|
||||
ActorCutscene_SetIntentToPlay(this->actor.cutscene);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ void func_80A2CF7C(ElfMsg3* this, PlayState* play) {
|
|||
ActorCutscene_SetIntentToPlay(this->actor.cutscene);
|
||||
} else if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) {
|
||||
ActorCutscene_Start(this->actor.cutscene, &this->actor);
|
||||
func_800E0348(play->cameraPtrs[0]);
|
||||
func_800E0348(play->cameraPtrs[CAM_ID_MAIN]);
|
||||
} else {
|
||||
ActorCutscene_SetIntentToPlay(this->actor.cutscene);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ void func_80AFD668(ElfMsg4* this, PlayState* play) {
|
|||
ActorCutscene_SetIntentToPlay((s16)this->actor.cutscene);
|
||||
} else if (ActorCutscene_GetCanPlayNext((s16)this->actor.cutscene)) {
|
||||
ActorCutscene_Start(this->actor.cutscene, &this->actor);
|
||||
func_800E0348(play->cameraPtrs[0]);
|
||||
func_800E0348(play->cameraPtrs[CAM_ID_MAIN]);
|
||||
} else {
|
||||
ActorCutscene_SetIntentToPlay((s16)this->actor.cutscene);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ void EnAni_FallToGround(EnAni* this, PlayState* play) {
|
|||
// the animation gets cut short, (first 16 frames only) only the landing part is seen
|
||||
Animation_Change(&this->skelAnime, &gAniLandingThenStandingUpAnim, 1.0f, 0.0f, 16.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->stateFlags |= ANI_STATE_WRITHING;
|
||||
quakeValue = Quake_Add(play->cameraPtrs[0], 3);
|
||||
quakeValue = Quake_Add(play->cameraPtrs[CAM_ID_MAIN], 3);
|
||||
Quake_SetSpeed(quakeValue, 0x6978);
|
||||
Quake_SetQuakeValues(quakeValue, 7, 0, 0, 0);
|
||||
Quake_SetCountdown(quakeValue, 0x14);
|
||||
|
|
|
|||
|
|
@ -689,9 +689,8 @@ void EnBb_Draw(Actor* thisx, PlayState* play) {
|
|||
if (this->flameScaleX > 0.0f) {
|
||||
currentMatrixState = Matrix_GetCurrent();
|
||||
func_8012C2DC(play->state.gfxCtx);
|
||||
Matrix_RotateYS(
|
||||
((Camera_GetCamDirYaw(play->cameraPtrs[play->activeCamera]) - this->actor.shape.rot.y) + 0x8000),
|
||||
MTXMODE_APPLY);
|
||||
Matrix_RotateYS(((Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - this->actor.shape.rot.y) + 0x8000),
|
||||
MTXMODE_APPLY);
|
||||
Matrix_Scale(this->flameScaleX, this->flameScaleY, 1.0f, MTXMODE_APPLY);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 255, 255);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 255, 0);
|
||||
|
|
|
|||
|
|
@ -723,9 +723,8 @@ void EnBbfall_Draw(Actor* thisx, PlayState* play2) {
|
|||
|
||||
if (this->flameOpacity > 0) {
|
||||
func_8012C2DC(play->state.gfxCtx);
|
||||
Matrix_RotateYS(
|
||||
((Camera_GetCamDirYaw(play->cameraPtrs[play->activeCamera]) - this->actor.shape.rot.y) + 0x8000),
|
||||
MTXMODE_APPLY);
|
||||
Matrix_RotateYS(((Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - this->actor.shape.rot.y) + 0x8000),
|
||||
MTXMODE_APPLY);
|
||||
Matrix_Scale(this->flameScaleX, this->flameScaleY, 1.0f, MTXMODE_APPLY);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 0);
|
||||
currentMatrixState = Matrix_GetCurrent();
|
||||
|
|
|
|||
|
|
@ -538,7 +538,7 @@ void EnBom_Update(Actor* thisx, PlayState* play) {
|
|||
play->envCtx.lightSettings.diffuseColor1[2] = 250;
|
||||
play->envCtx.lightSettings.ambientColor[0] = play->envCtx.lightSettings.ambientColor[1] =
|
||||
play->envCtx.lightSettings.ambientColor[2] = 250;
|
||||
func_800DFD04(&play->mainCamera, 2, 11, 8);
|
||||
Camera_AddQuake(&play->mainCamera, 2, 11, 8);
|
||||
thisx->params = ENBOM_1;
|
||||
this->timer = 10;
|
||||
thisx->flags |= (0x100000 | 0x20);
|
||||
|
|
|
|||
|
|
@ -414,7 +414,7 @@ void EnBombf_Update(Actor* thisx, PlayState* play) {
|
|||
play->envCtx.lightSettings.ambientColor[0] = play->envCtx.lightSettings.ambientColor[1] =
|
||||
play->envCtx.lightSettings.ambientColor[2] = 250;
|
||||
|
||||
func_800DFD04(&play->mainCamera, 2, 11, 8);
|
||||
Camera_AddQuake(&play->mainCamera, 2, 11, 8);
|
||||
|
||||
this->actor.params = ENBOMBF_1;
|
||||
this->timer = 10;
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ void func_8091C178(EnButte* this, PlayState* play) {
|
|||
sp48 = Math_SinS(D_8091D3A0) * 250.0f;
|
||||
sp48 = CLAMP(sp48, 0, 255);
|
||||
|
||||
func_800DFC90(&sp40, GET_ACTIVE_CAM(play));
|
||||
Camera_GetCamDir(&sp40, GET_ACTIVE_CAM(play));
|
||||
Matrix_RotateYS(sp40.y, MTXMODE_NEW);
|
||||
Matrix_RotateXS(sp40.x, MTXMODE_APPLY);
|
||||
Matrix_RotateZS(sp40.z, MTXMODE_APPLY);
|
||||
|
|
|
|||
|
|
@ -558,8 +558,8 @@ void EnClearTag_UpdateCamera(EnClearTag* this, PlayState* play) {
|
|||
case 1:
|
||||
Cutscene_Start(play, &play->csCtx);
|
||||
this->subCamId = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, this->subCamId, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
|
||||
func_800B7298(play, &this->actor, 4);
|
||||
mainCam = Play_GetCamera(play, CAM_ID_MAIN);
|
||||
this->subCamEye.x = mainCam->eye.x;
|
||||
|
|
|
|||
|
|
@ -549,7 +549,7 @@ void EnFamos_Attack(EnFamos* this, PlayState* play) {
|
|||
this->collider1.base.atFlags &= ~AT_ON;
|
||||
this->collider2.base.atFlags |= AT_ON;
|
||||
if (hitFloor) {
|
||||
func_800DFD04(play->cameraPtrs[play->activeCamera], 2, 15, 10); // camera shake?
|
||||
Camera_AddQuake(GET_ACTIVE_CAM(play), 2, 15, 10);
|
||||
Rumble_Request(this->actor.xyzDistToPlayerSq, 180, 20, 100);
|
||||
EnFamos_SetupAttackDebris(this);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
* Description: Fishing Pond Elements (Owner, Fish, Props, Effects...)
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "z_en_fishing.h"
|
||||
#include "z64rumble.h"
|
||||
#include "objects/object_fish/object_fish.h"
|
||||
|
|
@ -5154,8 +5153,8 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) {
|
|||
|
||||
case 1:
|
||||
sCameraId = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, sCameraId, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, sCameraId, CAM_STATUS_ACTIVE);
|
||||
camera = Play_GetCamera(play, CAM_ID_MAIN);
|
||||
sCameraEye.x = camera->eye.x;
|
||||
sCameraEye.y = camera->eye.y;
|
||||
|
|
@ -5282,8 +5281,8 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) {
|
|||
case 10:
|
||||
Cutscene_Start(play, &play->csCtx);
|
||||
sCameraId = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, sCameraId, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, sCameraId, CAM_STATUS_ACTIVE);
|
||||
func_800B7298(play, &this->actor, 4);
|
||||
camera = Play_GetCamera(play, CAM_ID_MAIN);
|
||||
sCameraEye.x = camera->eye.x;
|
||||
|
|
@ -5321,8 +5320,8 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) {
|
|||
case 20:
|
||||
Cutscene_Start(play, &play->csCtx);
|
||||
sCameraId = Play_CreateSubCamera(play);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, 1);
|
||||
Play_CameraChangeStatus(play, sCameraId, 7);
|
||||
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
|
||||
Play_CameraChangeStatus(play, sCameraId, CAM_STATUS_ACTIVE);
|
||||
func_800B7298(play, &this->actor, 4);
|
||||
camera = Play_GetCamera(play, CAM_ID_MAIN);
|
||||
sCameraEye.x = camera->eye.x;
|
||||
|
|
|
|||
|
|
@ -1162,11 +1162,11 @@ void func_80963F44(EnFu* this, PlayState* play) {
|
|||
|
||||
void func_80963F88(EnFu* this, PlayState* play) {
|
||||
if (this->unk_542 == 1) {
|
||||
func_800DFAC8(play->cameraPtrs[CAM_ID_MAIN], 75);
|
||||
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_HONEY_AND_DARLING_2);
|
||||
play->unk_1887E = 0;
|
||||
} else if (this->unk_542 == 2) {
|
||||
play->unk_1887D = 0;
|
||||
func_800DFAC8(play->cameraPtrs[CAM_ID_MAIN], 75);
|
||||
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_HONEY_AND_DARLING_2);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) {
|
|||
}
|
||||
|
||||
this->unk_17C = -1;
|
||||
func_800DFAC8(play->cameraPtrs[CAM_ID_MAIN], 10);
|
||||
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FREE0);
|
||||
Play_CameraSetAtEye(play, 0, &sp40, &sp4C);
|
||||
Play_CameraSetFov(play, 0, 45.0f);
|
||||
func_800FE484();
|
||||
|
|
@ -228,7 +228,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) {
|
|||
|
||||
if ((this->unk_17C != -1) && ((this->unk_168 - this->unk_17C) > 10)) {
|
||||
this->unk_17C = -1;
|
||||
func_800DFAC8(play->cameraPtrs[CAM_ID_MAIN], 4);
|
||||
Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_HORSE);
|
||||
}
|
||||
|
||||
this->unk_168++;
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@ void func_80AF2030(EnTest7* this, PlayState* play) {
|
|||
this->actor.world.pos.y += 100.0f;
|
||||
|
||||
camera = Play_GetCamera(play, ActorCutscene_GetCurrentCamera(play->playerActorCsIds[8]));
|
||||
camera->player = NULL;
|
||||
camera->focalActor = NULL;
|
||||
|
||||
camera->eye.x = ((camera->eye.x - this->unk_1E60.x) * sp1C) + this->unk_1E60.x;
|
||||
camera->eye.y = ((camera->eye.y - this->unk_1E60.y) * sp1C) + this->unk_1E60.y;
|
||||
|
|
@ -682,7 +682,7 @@ void func_80AF24D8(EnTest7* this, PlayState* play, f32 arg2) {
|
|||
Camera* camera = Play_GetCamera(play, ActorCutscene_GetCurrentCamera(play->playerActorCsIds[8]));
|
||||
|
||||
pos = &player->actor.world.pos;
|
||||
camera->player = NULL;
|
||||
camera->focalActor = NULL;
|
||||
|
||||
sp3C.x = ((180.0f * Math_SinS(this->unk_1E8E)) * Math_CosS(0xFA0)) + pos->x;
|
||||
sp3C.y = (Math_SinS(0xFA0) * 180.0f) + pos->y;
|
||||
|
|
@ -703,7 +703,7 @@ void func_80AF2654(EnTest7* this, PlayState* play, f32 arg2) {
|
|||
Vec3f sp30;
|
||||
|
||||
camera = Play_GetCamera(play, ActorCutscene_GetCurrentCamera(play->playerActorCsIds[8]));
|
||||
camera->player = NULL;
|
||||
camera->focalActor = NULL;
|
||||
|
||||
pos = &player->actor.world.pos;
|
||||
|
||||
|
|
@ -806,7 +806,7 @@ void func_80AF2BAC(EnTest7* this, PlayState* play, Vec3f* arg2, f32 arg3) {
|
|||
f32 z;
|
||||
Camera* camera = Play_GetCamera(play, ActorCutscene_GetCurrentCamera(play->playerActorCsIds[8]));
|
||||
|
||||
camera->player = NULL;
|
||||
camera->focalActor = NULL;
|
||||
x = ((camera->at.x - arg2->x) * arg3) + arg2->x;
|
||||
y = ((camera->at.y - arg2->y) * arg3) + arg2->y;
|
||||
z = ((camera->at.z - arg2->z) * arg3) + arg2->z;
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ void ObjAqua_Draw(Actor* thisx, PlayState* play) {
|
|||
ObjAqua* this = THIS;
|
||||
s32 framesTemp;
|
||||
s32 pad;
|
||||
s16 yaw = Camera_GetCamDirYaw(play->cameraPtrs[play->activeCamera]) + 0x8000;
|
||||
s16 yaw = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x8000;
|
||||
s32 actionFuncTemp = this->actionFunc == func_80ACBDFC;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ void func_80983704(ObjDemo* this, PlayState* play) {
|
|||
if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) {
|
||||
if (this->unk_148 == 1) {
|
||||
ActorCutscene_Start(this->actor.cutscene, &this->actor);
|
||||
func_800E0348(play->cameraPtrs[0]);
|
||||
func_800E0348(play->cameraPtrs[CAM_ID_MAIN]);
|
||||
} else {
|
||||
ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -200,9 +200,8 @@ void ObjJgameLight_Draw(Actor* thisx, PlayState* play) {
|
|||
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 0, 255);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 0);
|
||||
Matrix_Translate(0.0f, 52.0f, 0.0f, MTXMODE_APPLY);
|
||||
Matrix_RotateYS(
|
||||
((Camera_GetCamDirYaw(play->cameraPtrs[play->activeCamera]) - this->actor.shape.rot.y) + 0x8000),
|
||||
MTXMODE_APPLY);
|
||||
Matrix_RotateYS(((Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - this->actor.shape.rot.y) + 0x8000),
|
||||
MTXMODE_APPLY);
|
||||
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gGameplayKeepDrawFlameDL);
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ void ObjKinoko_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
thisx->scale.y = thisx->scale.x;
|
||||
thisx->scale.z = thisx->scale.x;
|
||||
thisx->shape.rot.y = Camera_GetCamDirYaw(play->cameraPtrs[play->activeCamera]) + 0x8000;
|
||||
thisx->shape.rot.y = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x8000;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -507,7 +507,7 @@ void func_809289E4(ObjTsubo* this, PlayState* play) {
|
|||
s16 yawDiff = this->actor.yawTowardsPlayer - GET_PLAYER(play)->actor.world.rot.y;
|
||||
s32 absYawDiff = ABS_ALT(yawDiff);
|
||||
|
||||
if (absYawDiff > DEGF_TO_BINANG(120.0f)) {
|
||||
if (absYawDiff > (0x10000 / 3)) {
|
||||
Actor_PickUp(&this->actor, play, 0, 36.0f, 30.0f);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -512,7 +512,7 @@ void func_808DD3C8(Actor* thisx, PlayState* play2) {
|
|||
f32 temp_f2;
|
||||
f32 tempf;
|
||||
|
||||
if ((play->cameraPtrs[CAM_ID_MAIN]->flags2 & 0x100) || ((u8)play->envCtx.unk_E2 == 0)) {
|
||||
if ((play->cameraPtrs[CAM_ID_MAIN]->stateFlags & CAM_STATE_UNDERWATER) || ((u8)play->envCtx.unk_E2 == 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -599,7 +599,7 @@ void func_808DD970(Actor* thisx, PlayState* play2) {
|
|||
|
||||
phi_f26 = CLAMP_MAX(phi_f26, 1.0f);
|
||||
|
||||
if (!(play->cameraPtrs[CAM_ID_MAIN]->flags2 & 0x100) || (phi_f26 == 0.0f)) {
|
||||
if (!(play->cameraPtrs[CAM_ID_MAIN]->stateFlags & CAM_STATE_UNDERWATER) || (phi_f26 == 0.0f)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1271,15 +1271,15 @@
|
|||
0x800DF840:("Camera_ChangeMode",),
|
||||
0x800DF86C:("func_800DF86C",),
|
||||
0x800DF8EC:("func_800DF8EC",),
|
||||
0x800DFAC8:("func_800DFAC8",),
|
||||
0x800DFAC8:("Camera_ChangeSetting",),
|
||||
0x800DFB14:("Camera_ChangeDataIdx",),
|
||||
0x800DFC1C:("func_800DFC1C",),
|
||||
0x800DFC40:("func_800DFC40",),
|
||||
0x800DFC68:("Camera_GetInputDirYaw",),
|
||||
0x800DFC90:("func_800DFC90",),
|
||||
0x800DFC90:("Camera_GetCamDir",),
|
||||
0x800DFCB4:("Camera_GetCamDirPitch",),
|
||||
0x800DFCDC:("Camera_GetCamDirYaw",),
|
||||
0x800DFD04:("func_800DFD04",),
|
||||
0x800DFD04:("Camera_AddQuake",),
|
||||
0x800DFD78:("func_800DFD78",),
|
||||
0x800DFEF0:("func_800DFEF0",),
|
||||
0x800DFF18:("func_800DFF18",),
|
||||
|
|
@ -1287,7 +1287,7 @@
|
|||
0x800DFF44:("func_800DFF44",),
|
||||
0x800DFF60:("Camera_SetFlags",),
|
||||
0x800DFF84:("Camera_ClearFlags",),
|
||||
0x800DFFAC:("func_800DFFAC",),
|
||||
0x800DFFAC:("Camera_ChangeDoorCam",),
|
||||
0x800E007C:("func_800E007C",),
|
||||
0x800E01AC:("func_800E01AC",),
|
||||
0x800E01B8:("Camera_GetQuakeOffset",),
|
||||
|
|
|
|||
|
|
@ -445,6 +445,10 @@ wordReplace = {
|
|||
"func_800E0308": "Camera_SetTargetActor",
|
||||
"func_800E031C": "Camera_GetWaterYPos",
|
||||
"func_800E02AC": "Camera_SetToTrackActor",
|
||||
"func_800DFAC8": "Camera_ChangeSetting",
|
||||
"func_800DFC90": "Camera_GetCamDir",
|
||||
"func_800DFD04": "Camera_AddQuake",
|
||||
"func_800DFFAC": "Camera_ChangeDoorCam",
|
||||
"func_801694DC": "Play_CreateSubCamera",
|
||||
"Play_GetActiveCameraIndex": "Play_GetActiveCamId",
|
||||
"func_80169590": "Play_CameraChangeStatus",
|
||||
|
|
|
|||
|
|
@ -785,15 +785,15 @@ asm/non_matchings/code/z_camera/Camera_SetMode.s,Camera_SetMode,0x800DF4D0,0xDC
|
|||
asm/non_matchings/code/z_camera/Camera_ChangeMode.s,Camera_ChangeMode,0x800DF840,0xB
|
||||
asm/non_matchings/code/z_camera/func_800DF86C.s,func_800DF86C,0x800DF86C,0x20
|
||||
asm/non_matchings/code/z_camera/func_800DF8EC.s,func_800DF8EC,0x800DF8EC,0x77
|
||||
asm/non_matchings/code/z_camera/func_800DFAC8.s,func_800DFAC8,0x800DFAC8,0x13
|
||||
asm/non_matchings/code/z_camera/Camera_ChangeSetting.s,Camera_ChangeSetting,0x800DFAC8,0x13
|
||||
asm/non_matchings/code/z_camera/Camera_ChangeDataIdx.s,Camera_ChangeDataIdx,0x800DFB14,0x42
|
||||
asm/non_matchings/code/z_camera/func_800DFC1C.s,func_800DFC1C,0x800DFC1C,0x9
|
||||
asm/non_matchings/code/z_camera/func_800DFC40.s,func_800DFC40,0x800DFC40,0xA
|
||||
asm/non_matchings/code/z_camera/Camera_GetInputDirYaw.s,Camera_GetInputDirYaw,0x800DFC68,0xA
|
||||
asm/non_matchings/code/z_camera/func_800DFC90.s,func_800DFC90,0x800DFC90,0x9
|
||||
asm/non_matchings/code/z_camera/Camera_GetCamDir.s,Camera_GetCamDir,0x800DFC90,0x9
|
||||
asm/non_matchings/code/z_camera/Camera_GetCamDirPitch.s,Camera_GetCamDirPitch,0x800DFCB4,0xA
|
||||
asm/non_matchings/code/z_camera/Camera_GetCamDirYaw.s,Camera_GetCamDirYaw,0x800DFCDC,0xA
|
||||
asm/non_matchings/code/z_camera/func_800DFD04.s,func_800DFD04,0x800DFD04,0x1D
|
||||
asm/non_matchings/code/z_camera/Camera_AddQuake.s,Camera_AddQuake,0x800DFD04,0x1D
|
||||
asm/non_matchings/code/z_camera/func_800DFD78.s,func_800DFD78,0x800DFD78,0x5E
|
||||
asm/non_matchings/code/z_camera/func_800DFEF0.s,func_800DFEF0,0x800DFEF0,0xA
|
||||
asm/non_matchings/code/z_camera/func_800DFF18.s,func_800DFF18,0x800DFF18,0x7
|
||||
|
|
@ -801,7 +801,7 @@ asm/non_matchings/code/z_camera/func_800DFF34.s,func_800DFF34,0x800DFF34,0x4
|
|||
asm/non_matchings/code/z_camera/func_800DFF44.s,func_800DFF44,0x800DFF44,0x7
|
||||
asm/non_matchings/code/z_camera/Camera_SetFlags.s,Camera_SetFlags,0x800DFF60,0x9
|
||||
asm/non_matchings/code/z_camera/Camera_ClearFlags.s,Camera_ClearFlags,0x800DFF84,0xA
|
||||
asm/non_matchings/code/z_camera/func_800DFFAC.s,func_800DFFAC,0x800DFFAC,0x34
|
||||
asm/non_matchings/code/z_camera/Camera_ChangeDoorCam.s,Camera_ChangeDoorCam,0x800DFFAC,0x34
|
||||
asm/non_matchings/code/z_camera/func_800E007C.s,func_800E007C,0x800E007C,0x4C
|
||||
asm/non_matchings/code/z_camera/func_800E01AC.s,func_800E01AC,0x800E01AC,0x3
|
||||
asm/non_matchings/code/z_camera/Camera_GetQuakeOffset.s,Camera_GetQuakeOffset,0x800E01B8,0x9
|
||||
|
|
|
|||
|
Loading…
Reference in New Issue