mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
z_parameter: Time (1 non-matching) (#1144)
* import time docs * cleanup * fix display list * missed one * three-day events * PR Suggestions and cleanup * adjust comment * more macros * PR Suggestions * move InterfaceContext
This commit is contained in:
+4
-4
@@ -1383,9 +1383,9 @@ void func_800FD928(s32 param_1);
|
||||
// void func_800FDC94(void);
|
||||
// void func_800FE390(void);
|
||||
// void func_800FE3E0(void);
|
||||
void func_800FE484(void);
|
||||
s32 func_800FE498(void);
|
||||
// void func_800FE4A8(void);
|
||||
void Environment_StopTime(void);
|
||||
void Environment_StartTime(void);
|
||||
u8 Environment_IsTimeStopped(void);
|
||||
u32 func_800FE4B8(PlayState* play);
|
||||
// void func_800FE590(void);
|
||||
// void func_800FE5D0(void);
|
||||
@@ -1707,7 +1707,7 @@ Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth,
|
||||
|
||||
void Interface_StartTimer(s16 timerId, s16 seconds);
|
||||
void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState);
|
||||
void func_8010EE74(PlayState* play, s32 day);
|
||||
void Interface_NewDay(PlayState* play, s32 day);
|
||||
void Interface_SetHudVisibility(u16 hudVisibility);
|
||||
void func_80110038(PlayState* play);
|
||||
// void func_80111CB4(void);
|
||||
|
||||
+5
-2
@@ -48,10 +48,13 @@
|
||||
#define DAY_LENGTH (CLOCK_TIME(24, 0))
|
||||
|
||||
#define TIME_TO_MINUTES_F(time) ((time) * ((24.0f * 60.0f) / 0x10000)) // 0.021972656f
|
||||
#define CLOCK_TIME_F(hr, min) (((hr) * 60.0f + (min)) * (0x10000 / (24.0f * 60.0f)))
|
||||
|
||||
#define TIME_TO_MINUTES_ALT_F(time) ((time) / (0x10000 / (24.0f * 60.0f)))
|
||||
|
||||
#define TIME_TO_SECONDS_F(time) ((time) * ((24.0f * 60.0f * 60.0f) / 0x10000))
|
||||
|
||||
#define CLOCK_TIME_F(hr, min) (((hr) * 60.0f + (min)) * (0x10000 / (24.0f * 60.0f)))
|
||||
#define CLOCK_TIME_ALT_F(hr, min) (((hr) * 60.0f + (min)) / (24.0f * 60.0f / 0x10000))
|
||||
#define CLOCK_TIME_ALT2_F(hr, min) ((((hr) + (min) / 60.0f) * 60.0f) / (24.0f * 60.0f / 0x10000))
|
||||
|
||||
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
|
||||
+31
-21
@@ -43,15 +43,23 @@
|
||||
#define bREG(r) BASE_REG(28, r)
|
||||
|
||||
/* TODO: Actually confirm these, in case of miss-match it's at least a simple list to `sed` */
|
||||
#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT
|
||||
#define R_TIME_SPEED REG(15)
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
|
||||
#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#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_PAUSE_BG_PRERENDER_STATE SREG(94)
|
||||
|
||||
#define R_PLAY_FILL_SCREEN_ON MREG(64)
|
||||
#define R_PLAY_FILL_SCREEN_R MREG(65)
|
||||
#define R_PLAY_FILL_SCREEN_G MREG(66)
|
||||
#define R_PLAY_FILL_SCREEN_B MREG(67)
|
||||
#define R_PLAY_FILL_SCREEN_ALPHA MREG(68)
|
||||
|
||||
#define R_PAUSE_WORLD_MAP_YAW YREG(24)
|
||||
#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25)
|
||||
#define R_PAUSE_WORLD_MAP_DEPTH YREG(26)
|
||||
@@ -60,6 +68,7 @@
|
||||
#define R_PAUSE_DBG_QUEST_CURSOR_Y YREG(71)
|
||||
#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)
|
||||
@@ -76,21 +85,26 @@
|
||||
#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_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_CONSUME_TIMER_GIANTS_MASK XREG(41)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_ON XREG(50)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_X XREG(52)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_Y XREG(53)
|
||||
#define R_MOON_CRASH_TIMER_Y XREG(80)
|
||||
#define R_MOON_CRASH_TIMER_X XREG(81)
|
||||
#define R_PAUSE_OWLWARP_ALPHA XREG(87)
|
||||
#define R_STORY_FILL_SCREEN_ALPHA XREG(91)
|
||||
#define R_REVERSE_FLOOR_INDEX XREG(94)
|
||||
#define R_MINIMAP_DISABLED XREG(95)
|
||||
|
||||
#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_CONSUME_TIMER_GIANTS_MASK XREG(41)
|
||||
#define R_THREE_DAY_CLOCK_Y_POS XREG(43)
|
||||
#define R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF XREG(44)
|
||||
#define R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF XREG(45)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_ON XREG(50)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_X XREG(52)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_Y XREG(53)
|
||||
#define R_MOON_CRASH_TIMER_Y XREG(80)
|
||||
#define R_MOON_CRASH_TIMER_X XREG(81)
|
||||
#define R_PAUSE_OWLWARP_ALPHA XREG(87)
|
||||
#define R_STORY_FILL_SCREEN_ALPHA XREG(91)
|
||||
#define R_REVERSE_FLOOR_INDEX XREG(94)
|
||||
#define R_MINIMAP_DISABLED XREG(95)
|
||||
|
||||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
@@ -98,6 +112,7 @@
|
||||
#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)
|
||||
@@ -111,9 +126,4 @@
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
|
||||
#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)
|
||||
|
||||
#endif
|
||||
|
||||
+4
-4
@@ -705,11 +705,11 @@ extern UNK_PTR D_801BF5C0;
|
||||
// extern UNK_TYPE1 D_801BFB14;
|
||||
// extern UNK_TYPE1 D_801BFB1C;
|
||||
// extern UNK_TYPE1 D_801BFB24;
|
||||
// extern UNK_TYPE2 D_801BFB2C;
|
||||
// extern UNK_TYPE2 sThreeDayClockAlpha;
|
||||
// extern UNK_TYPE2 D_801BFB30;
|
||||
// extern UNK_TYPE2 D_801BFB34;
|
||||
// extern UNK_TYPE1 D_801BFB38;
|
||||
// extern UNK_TYPE1 D_801BFB6C;
|
||||
// extern UNK_TYPE1 sThreeDayClockHours;
|
||||
// extern UNK_TYPE1 sThreeDayClockHourTextures;
|
||||
// extern UNK_TYPE2 D_801BFBCC;
|
||||
// extern UNK_TYPE2 D_801BFBD0;
|
||||
// extern UNK_TYPE2 D_801BFBD4;
|
||||
@@ -728,7 +728,7 @@ extern UNK_PTR D_801BF5C0;
|
||||
// extern UNK_TYPE1 D_801BFC08;
|
||||
// extern UNK_TYPE1 D_801BFC0C;
|
||||
// extern UNK_TYPE1 D_801BFC10;
|
||||
// extern UNK_TYPE1 D_801BFC14;
|
||||
// extern UNK_TYPE1 sFinalHoursDigitTextures;
|
||||
// extern UNK_TYPE1 D_801BFC40;
|
||||
// extern UNK_TYPE2 sTimerStateTimer;
|
||||
// extern UNK_TYPE2 sTimerDigits;
|
||||
|
||||
+2
-104
@@ -466,106 +466,6 @@ typedef struct {
|
||||
/* 0x2CA */ s16 unk_2CA; // Uses OwlWarpId enum for Owl Warp. Never set.
|
||||
} PauseContext; // size = 0x2D0
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ View view;
|
||||
/* 0x168 */ Vtx* actionVtx;
|
||||
/* 0x16C */ Vtx* beatingHeartVtx;
|
||||
/* 0x170 */ u8* parameterSegment;
|
||||
/* 0x174 */ u8* doActionSegment;
|
||||
/* 0x178 */ u8* iconItemSegment;
|
||||
/* 0x17C */ u8* mapSegment;
|
||||
/* 0x180 */ u8* unk_180;
|
||||
/* 0x184 */ DmaRequest dmaRequest_184;
|
||||
/* 0x1A4 */ DmaRequest dmaRequest_1A4;
|
||||
/* 0x1C4 */ DmaRequest dmaRequest_1C4;
|
||||
/* 0x1E4 */ OSMesgQueue loadQueue;
|
||||
/* 0x1FC */ OSMesg loadMsg;
|
||||
/* 0x200 */ Viewport viewport;
|
||||
/* 0x210 */ s16 unk_210;
|
||||
/* 0x212 */ u16 unk_212;
|
||||
/* 0x214 */ u16 unk_214;
|
||||
/* 0x218 */ f32 unk_218;
|
||||
/* 0x21C */ s16 unk_21C;
|
||||
/* 0x21E */ s16 bButtonDoAction;
|
||||
/* 0x220 */ s16 unk_220;
|
||||
/* 0x222 */ s16 unk_222;
|
||||
/* 0x224 */ s16 unk_224;
|
||||
/* 0x226 */ s16 lifeColorChange;
|
||||
/* 0x228 */ s16 lifeColorChangeDirection;
|
||||
/* 0x22A */ s16 beatingHeartPrim[3];
|
||||
/* 0x230 */ s16 beatingHeartEnv[3];
|
||||
/* 0x236 */ s16 heartsPrimR[2];
|
||||
/* 0x23A */ s16 heartsPrimG[2];
|
||||
/* 0x23E */ s16 heartsPrimB[2];
|
||||
/* 0x242 */ s16 heartsEnvR[2];
|
||||
/* 0x246 */ s16 heartsEnvG[2];
|
||||
/* 0x24A */ s16 heartsEnvB[2];
|
||||
/* 0x24E */ s16 health;
|
||||
/* 0x250 */ s16 unkTimer;
|
||||
/* 0x252 */ s16 lifeSizeChange;
|
||||
/* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing
|
||||
/* 0x256 */ s16 unk_256;
|
||||
/* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0
|
||||
/* 0x25A */ u8 numHorseBoosts;
|
||||
/* 0x25C */ u16 minigamePoints; // Points to add to the minigame score. Reset to 0 every frame.
|
||||
/* 0x25E */ u16 minigameHiddenPoints; // Points to add to the secondary set of minigame points not displayed. Reset to 0 every frame.
|
||||
/* 0x260 */ u16 minigameAmmo;
|
||||
/* 0x262 */ u16 minigameUnusedPoints; // Associated with other minigame points, unused
|
||||
/* 0x264 */ s16 unk_264;
|
||||
/* 0x266 */ s16 aAlpha;
|
||||
/* 0x268 */ s16 bAlpha;
|
||||
/* 0x26A */ s16 cLeftAlpha;
|
||||
/* 0x26C */ s16 cDownAlpha;
|
||||
/* 0x26E */ s16 cRightAlpha;
|
||||
/* 0x270 */ s16 healthAlpha;
|
||||
/* 0x272 */ s16 magicAlpha;
|
||||
/* 0x274 */ s16 minimapAlpha;
|
||||
/* 0x276 */ s16 startAlpha;
|
||||
/* 0x278 */ s16 unk_278;
|
||||
/* 0x27A */ s16 dungeonOrBossAreaMapIndex;
|
||||
/* 0x27C */ s16 mapRoomNum;
|
||||
/* 0x27E */ u8 unk_27E;
|
||||
/* 0x27F */ u8 unk_27F;
|
||||
/* 0x280 */ u8 minigameState;
|
||||
/* 0x282 */ s16 minigameCountdownAlpha;
|
||||
/* 0x284 */ s16 minigameCountdownScale;
|
||||
/* 0x286 */ s16 perfectLettersOn;
|
||||
/* 0x288 */ s16 perfectLettersType;
|
||||
/* 0x28A */ s16 perfectLettersState[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x29A */ u16 perfectLettersAngles[PERFECT_LETTERS_NUM_LETTERS]; // Angle that follows the projectory of an ellipse
|
||||
/* 0x2AA */ s16 perfectLettersOffsetX[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2BC */ f32 perfectLettersSemiAxisX[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2DC */ f32 perfectLettersSemiAxisY[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2FC */ s16 perfectLettersPrimColor[4];
|
||||
/* 0x304 */ s16 perfectLettersCount;
|
||||
/* 0x306 */ s16 perfectLettersUnused;
|
||||
/* 0x308 */ s16 perfectLettersColorIndex;
|
||||
/* 0x30A */ s16 perfectLettersColorTimer;
|
||||
/* 0x30C */ s16 perfectLettersTimer;
|
||||
struct {
|
||||
/* 0x30E */ u8 unk_30E; // "h_gauge"
|
||||
/* 0x30F */ u8 bButton;
|
||||
/* 0x310 */ u8 aButton;
|
||||
/* 0x311 */ u8 tradeItems;
|
||||
/* 0x312 */ u8 unk_312;
|
||||
/* 0x313 */ u8 unk_313;
|
||||
/* 0x314 */ u8 unk_314;
|
||||
/* 0x315 */ u8 songOfSoaring;
|
||||
/* 0x316 */ u8 songOfStorms;
|
||||
/* 0x317 */ u8 unk_317;
|
||||
/* 0x318 */ u8 pictographBox;
|
||||
/* 0x319 */ u8 all; // "another"; enables all item restrictions
|
||||
} restrictions; // size = 0xC
|
||||
/* 0x31A */ u8 storyState;
|
||||
/* 0x31B */ u8 storyType;
|
||||
/* 0x31C */ u8 unk_31C;
|
||||
/* 0x320 */ OSMesgQueue unk_320;
|
||||
/* 0x338 */ OSMesg unk_338;
|
||||
/* 0x33C */ void* unk_33C;
|
||||
/* 0x340 */ u32 unk_340;
|
||||
/* 0x344 */ u32 unk_344;
|
||||
} InterfaceContext; // size = 0x348
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ void* loadedRamAddr;
|
||||
/* 0x04 */ uintptr_t vromStart;
|
||||
@@ -584,10 +484,8 @@ typedef enum {
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 unk_0;
|
||||
/* 0x02 */ u16 timeIncrement;
|
||||
/* 0x04 */ f32 unk_4;
|
||||
/* 0x08 */ f32 unk_8;
|
||||
/* 0x0C */ f32 unk_C;
|
||||
/* 0x02 */ u16 sceneTimeSpeed;
|
||||
/* 0x04 */ Vec3f sunPos;
|
||||
/* 0x10 */ u8 unk_10;
|
||||
/* 0x11 */ u8 unk_11;
|
||||
/* 0x12 */ u8 unk_12;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define Z64INTERFACE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64view.h"
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ MINIGAME_STATE_NONE,
|
||||
@@ -38,4 +39,104 @@ typedef enum {
|
||||
#define PERFECT_LETTERS_NUM_LETTERS 8
|
||||
#define PERFECT_LETTERS_ANGLE_PER_LETTER (0x10000 / PERFECT_LETTERS_NUM_LETTERS)
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ View view;
|
||||
/* 0x168 */ Vtx* actionVtx;
|
||||
/* 0x16C */ Vtx* beatingHeartVtx;
|
||||
/* 0x170 */ u8* parameterSegment;
|
||||
/* 0x174 */ u8* doActionSegment;
|
||||
/* 0x178 */ u8* iconItemSegment;
|
||||
/* 0x17C */ u8* mapSegment;
|
||||
/* 0x180 */ u8* unk_180;
|
||||
/* 0x184 */ DmaRequest dmaRequest_184;
|
||||
/* 0x1A4 */ DmaRequest dmaRequest_1A4;
|
||||
/* 0x1C4 */ DmaRequest dmaRequest_1C4;
|
||||
/* 0x1E4 */ OSMesgQueue loadQueue;
|
||||
/* 0x1FC */ OSMesg loadMsg;
|
||||
/* 0x200 */ Viewport viewport;
|
||||
/* 0x210 */ s16 unk_210;
|
||||
/* 0x212 */ u16 unk_212;
|
||||
/* 0x214 */ u16 unk_214;
|
||||
/* 0x218 */ f32 unk_218;
|
||||
/* 0x21C */ s16 unk_21C;
|
||||
/* 0x21E */ s16 bButtonDoAction;
|
||||
/* 0x220 */ s16 unk_220;
|
||||
/* 0x222 */ s16 unk_222;
|
||||
/* 0x224 */ s16 unk_224;
|
||||
/* 0x226 */ s16 lifeColorChange;
|
||||
/* 0x228 */ s16 lifeColorChangeDirection;
|
||||
/* 0x22A */ s16 beatingHeartPrim[3];
|
||||
/* 0x230 */ s16 beatingHeartEnv[3];
|
||||
/* 0x236 */ s16 heartsPrimR[2];
|
||||
/* 0x23A */ s16 heartsPrimG[2];
|
||||
/* 0x23E */ s16 heartsPrimB[2];
|
||||
/* 0x242 */ s16 heartsEnvR[2];
|
||||
/* 0x246 */ s16 heartsEnvG[2];
|
||||
/* 0x24A */ s16 heartsEnvB[2];
|
||||
/* 0x24E */ s16 health;
|
||||
/* 0x250 */ s16 unkTimer;
|
||||
/* 0x252 */ s16 lifeSizeChange;
|
||||
/* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing
|
||||
/* 0x256 */ s16 unk_256;
|
||||
/* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0
|
||||
/* 0x25A */ u8 numHorseBoosts;
|
||||
/* 0x25C */ u16 minigamePoints; // Points to add to the minigame score. Reset to 0 every frame.
|
||||
/* 0x25E */ u16 minigameHiddenPoints; // Points to add to the secondary set of minigame points not displayed. Reset to 0 every frame.
|
||||
/* 0x260 */ u16 minigameAmmo;
|
||||
/* 0x262 */ u16 minigameUnusedPoints; // Associated with other minigame points, unused
|
||||
/* 0x264 */ s16 unk_264;
|
||||
/* 0x266 */ s16 aAlpha;
|
||||
/* 0x268 */ s16 bAlpha;
|
||||
/* 0x26A */ s16 cLeftAlpha;
|
||||
/* 0x26C */ s16 cDownAlpha;
|
||||
/* 0x26E */ s16 cRightAlpha;
|
||||
/* 0x270 */ s16 healthAlpha;
|
||||
/* 0x272 */ s16 magicAlpha;
|
||||
/* 0x274 */ s16 minimapAlpha;
|
||||
/* 0x276 */ s16 startAlpha;
|
||||
/* 0x278 */ s16 unk_278;
|
||||
/* 0x27A */ s16 dungeonOrBossAreaMapIndex;
|
||||
/* 0x27C */ s16 mapRoomNum;
|
||||
/* 0x27E */ u8 unk_27E;
|
||||
/* 0x27F */ u8 unk_27F;
|
||||
/* 0x280 */ u8 minigameState;
|
||||
/* 0x282 */ s16 minigameCountdownAlpha;
|
||||
/* 0x284 */ s16 minigameCountdownScale;
|
||||
/* 0x286 */ s16 perfectLettersOn;
|
||||
/* 0x288 */ s16 perfectLettersType;
|
||||
/* 0x28A */ s16 perfectLettersState[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x29A */ u16 perfectLettersAngles[PERFECT_LETTERS_NUM_LETTERS]; // Angle that follows the projectory of an ellipse
|
||||
/* 0x2AA */ s16 perfectLettersOffsetX[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2BC */ f32 perfectLettersSemiAxisX[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2DC */ f32 perfectLettersSemiAxisY[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2FC */ s16 perfectLettersPrimColor[4];
|
||||
/* 0x304 */ s16 perfectLettersCount;
|
||||
/* 0x306 */ s16 perfectLettersUnused;
|
||||
/* 0x308 */ s16 perfectLettersColorIndex;
|
||||
/* 0x30A */ s16 perfectLettersColorTimer;
|
||||
/* 0x30C */ s16 perfectLettersTimer;
|
||||
struct {
|
||||
/* 0x30E */ u8 unk_30E; // "h_gauge"
|
||||
/* 0x30F */ u8 bButton;
|
||||
/* 0x310 */ u8 aButton;
|
||||
/* 0x311 */ u8 tradeItems;
|
||||
/* 0x312 */ u8 unk_312;
|
||||
/* 0x313 */ u8 unk_313;
|
||||
/* 0x314 */ u8 unk_314;
|
||||
/* 0x315 */ u8 songOfSoaring;
|
||||
/* 0x316 */ u8 songOfStorms;
|
||||
/* 0x317 */ u8 unk_317;
|
||||
/* 0x318 */ u8 pictographBox;
|
||||
/* 0x319 */ u8 all; // "another"; enables all item restrictions
|
||||
} restrictions; // size = 0xC
|
||||
/* 0x31A */ u8 storyState;
|
||||
/* 0x31B */ u8 storyType;
|
||||
/* 0x31C */ u8 unk_31C;
|
||||
/* 0x320 */ OSMesgQueue unk_320;
|
||||
/* 0x338 */ OSMesg unk_338;
|
||||
/* 0x33C */ void* unk_33C;
|
||||
/* 0x340 */ u32 unk_340;
|
||||
/* 0x344 */ u32 unk_344;
|
||||
} InterfaceContext; // size = 0x348
|
||||
|
||||
#endif
|
||||
|
||||
+6
-1
@@ -245,7 +245,7 @@ typedef struct Save {
|
||||
/* 0x000C */ u16 time; // "zelda_time"
|
||||
/* 0x000E */ u16 owlSaveLocation;
|
||||
/* 0x0010 */ s32 isNight; // "asahiru_fg"
|
||||
/* 0x0014 */ s32 daySpeed; // "change_zelda_time"
|
||||
/* 0x0014 */ s32 timeSpeedOffset; // "change_zelda_time"
|
||||
/* 0x0018 */ s32 day; // "totalday"
|
||||
/* 0x001C */ s32 daysElapsed; // "eventday"
|
||||
/* 0x0020 */ u8 playerForm; // "player_character"
|
||||
@@ -396,6 +396,11 @@ typedef enum SunsSongState {
|
||||
|
||||
#define CURRENT_DAY (((void)0, gSaveContext.save.day) % 5)
|
||||
|
||||
// The day begins at CLOCK_TIME(6, 0) so it must be offset.
|
||||
#define TIME_UNTIL_MOON_CRASH \
|
||||
((4 - CURRENT_DAY) * DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)));
|
||||
#define TIME_UNTIL_NEW_DAY (DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)));
|
||||
|
||||
#define GET_PLAYER_FORM ((void)0, gSaveContext.save.playerForm)
|
||||
|
||||
#define SLOT(item) gItemSlots[item]
|
||||
|
||||
+1
-1
@@ -119,7 +119,7 @@ typedef struct {
|
||||
/* 0x2 */ UNK_TYPE1 pad2[2];
|
||||
/* 0x4 */ u8 hour;
|
||||
/* 0x5 */ u8 min;
|
||||
/* 0x6 */ u8 unk6;
|
||||
/* 0x6 */ u8 timeSpeed;
|
||||
} SCmdTimeSettings; // size = 0x7
|
||||
|
||||
typedef struct {
|
||||
|
||||
+5
-5
@@ -252,9 +252,9 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
break;
|
||||
case 0x12:
|
||||
if (!gSaveContext.save.isNight) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)REG(15);
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)R_TIME_SPEED;
|
||||
} else {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)(2 * REG(15));
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)(2 * R_TIME_SPEED);
|
||||
}
|
||||
break;
|
||||
case 0x13:
|
||||
@@ -326,10 +326,10 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
if (csCtx->frames != D_801BB15C) {
|
||||
D_801BB15C = csCtx->frames;
|
||||
|
||||
if (REG(15) != 0) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15);
|
||||
if (R_TIME_SPEED != 0) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED;
|
||||
gSaveContext.save.time =
|
||||
((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed);
|
||||
((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
+3
-3
@@ -124,11 +124,11 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE3E0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE484.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_StopTime.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE498.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_StartTime.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE4A8.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_IsTimeStopped.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE4B8.s")
|
||||
|
||||
|
||||
@@ -212,13 +212,9 @@ void Message_LoadTimeNES(PlayState* play, u8 arg1, s32* offset, f32* arg3, s16*
|
||||
s16 i;
|
||||
|
||||
if (arg1 == 0xCF) {
|
||||
// Calculates the time left before the moon crashes.
|
||||
// The day begins at CLOCK_TIME(6, 0) so it must be offset.
|
||||
timeLeft = (4 - CURRENT_DAY) * DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0));
|
||||
timeLeft = TIME_UNTIL_MOON_CRASH;
|
||||
} else {
|
||||
// Calculates the time left before a new day.
|
||||
// The day begins at CLOCK_TIME(6, 0) so it must be offset.
|
||||
timeLeft = DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0));
|
||||
timeLeft = TIME_UNTIL_NEW_DAY;
|
||||
}
|
||||
|
||||
timeLeftInMinutes = TIME_TO_MINUTES_F(timeLeft);
|
||||
|
||||
+562
-7
File diff suppressed because it is too large
Load Diff
+13
-12
@@ -378,30 +378,31 @@ void Scene_HeaderCmdSkyboxDisables(PlayState* play, SceneCmd* cmd) {
|
||||
|
||||
// SceneTableEntry Header Command 0x10: Time Settings
|
||||
void Scene_HeaderCmdTimeSettings(PlayState* play, SceneCmd* cmd) {
|
||||
if (cmd->timeSettings.hour != 0xFF && cmd->timeSettings.min != 0xFF) {
|
||||
if ((cmd->timeSettings.hour != 0xFF) && (cmd->timeSettings.min != 0xFF)) {
|
||||
gSaveContext.skyboxTime = gSaveContext.save.time =
|
||||
(u16)(((cmd->timeSettings.hour + (cmd->timeSettings.min / 60.0f)) * 60.0f) / 0.021972656f);
|
||||
CLOCK_TIME_ALT2_F(cmd->timeSettings.hour, cmd->timeSettings.min);
|
||||
}
|
||||
|
||||
if (cmd->timeSettings.unk6 != 0xFF) {
|
||||
play->envCtx.timeIncrement = cmd->timeSettings.unk6;
|
||||
if (cmd->timeSettings.timeSpeed != 0xFF) {
|
||||
play->envCtx.sceneTimeSpeed = cmd->timeSettings.timeSpeed;
|
||||
} else {
|
||||
play->envCtx.timeIncrement = 0;
|
||||
play->envCtx.sceneTimeSpeed = 0;
|
||||
}
|
||||
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.timeIncrement != 0)) {
|
||||
play->envCtx.timeIncrement = 5;
|
||||
// Increase time speed during first cycle
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.sceneTimeSpeed != 0)) {
|
||||
play->envCtx.sceneTimeSpeed = 5;
|
||||
}
|
||||
|
||||
if (gSaveContext.sunsSongState == SUNSSONG_INACTIVE) {
|
||||
REG(15) = play->envCtx.timeIncrement;
|
||||
R_TIME_SPEED = play->envCtx.sceneTimeSpeed;
|
||||
}
|
||||
|
||||
play->envCtx.unk_4 = -(Math_SinS(((void)0, gSaveContext.save.time) - 0x8000) * 120.0f) * 25.0f;
|
||||
play->envCtx.unk_8 = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 120.0f) * 25.0f;
|
||||
play->envCtx.unk_C = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 20.0f) * 25.0f;
|
||||
play->envCtx.sunPos.x = -(Math_SinS(((void)0, gSaveContext.save.time) - CLOCK_TIME(12, 0)) * 120.0f) * 25.0f;
|
||||
play->envCtx.sunPos.y = (Math_CosS(((void)0, gSaveContext.save.time) - CLOCK_TIME(12, 0)) * 120.0f) * 25.0f;
|
||||
play->envCtx.sunPos.z = (Math_CosS(((void)0, gSaveContext.save.time) - CLOCK_TIME(12, 0)) * 20.0f) * 25.0f;
|
||||
|
||||
if ((play->envCtx.timeIncrement == 0) && (gSaveContext.save.cutscene < 0xFFF0)) {
|
||||
if ((play->envCtx.sceneTimeSpeed == 0) && (gSaveContext.save.cutscene < 0xFFF0)) {
|
||||
gSaveContext.skyboxTime = gSaveContext.save.time;
|
||||
|
||||
if ((gSaveContext.skyboxTime >= CLOCK_TIME(4, 0)) && (gSaveContext.skyboxTime < CLOCK_TIME(6, 30))) {
|
||||
|
||||
@@ -342,7 +342,7 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
u8 slot;
|
||||
u8 item;
|
||||
|
||||
gSaveContext.save.daySpeed = 0;
|
||||
gSaveContext.save.timeSpeedOffset = 0;
|
||||
gSaveContext.save.daysElapsed = 0;
|
||||
gSaveContext.save.day = 0;
|
||||
gSaveContext.save.time = CLOCK_TIME(6, 0) - 1;
|
||||
@@ -593,7 +593,7 @@ void Sram_ResetSave(void) {
|
||||
gSaveContext.save.unk_06 = 0;
|
||||
gSaveContext.save.linkAge = 0;
|
||||
gSaveContext.save.isNight = false;
|
||||
gSaveContext.save.daySpeed = 0;
|
||||
gSaveContext.save.timeSpeedOffset = 0;
|
||||
gSaveContext.save.snowheadCleared = 0;
|
||||
gSaveContext.save.hasTatl = false;
|
||||
gSaveContext.save.isOwlSave = false;
|
||||
|
||||
@@ -255,7 +255,7 @@ void func_809542A0(BgIngate* this, PlayState* play) {
|
||||
gSaveContext.nextTransitionType = TRANS_TYPE_03;
|
||||
this->actionFunc = func_80953F8C;
|
||||
CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40);
|
||||
func_800FE498();
|
||||
Environment_StartTime();
|
||||
}
|
||||
|
||||
void func_80954340(BgIngate* this, PlayState* play) {
|
||||
@@ -264,7 +264,7 @@ void func_80954340(BgIngate* this, PlayState* play) {
|
||||
func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6);
|
||||
this->timePath = &play->setupPathList[this->timePath->unk1];
|
||||
func_80953F14(this, play);
|
||||
func_800FE484();
|
||||
Environment_StopTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -283,7 +283,7 @@ void func_809543D4(BgIngate* this, PlayState* play) {
|
||||
func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6);
|
||||
this->unk160 &= ~0x4;
|
||||
this->actionFunc = func_809541B8;
|
||||
func_800FE498();
|
||||
Environment_StartTime();
|
||||
func_8019F208();
|
||||
} else {
|
||||
if (this->timePath != NULL) {
|
||||
@@ -304,7 +304,7 @@ void func_809543D4(BgIngate* this, PlayState* play) {
|
||||
func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6);
|
||||
this->unk160 &= ~0x4;
|
||||
this->actionFunc = func_809541B8;
|
||||
func_800FE498();
|
||||
Environment_StartTime();
|
||||
func_8019F230();
|
||||
}
|
||||
func_801477B4(play);
|
||||
|
||||
@@ -1154,7 +1154,7 @@ void DmStk_WaitForTelescope(DmStk* this, PlayState* play) {
|
||||
if (play->view.fovy < 25.0f) {
|
||||
if ((screenPos.x >= 70.0f) && (screenPos.x < (SCREEN_WIDTH - 70.0f)) && (screenPos.y >= 30.0f) &&
|
||||
(screenPos.y < (SCREEN_HEIGHT - 30.0f))) {
|
||||
func_800FE484();
|
||||
Environment_StopTime();
|
||||
this->actionFunc = DmStk_StartTelescopeCutscene;
|
||||
}
|
||||
}
|
||||
@@ -1181,7 +1181,7 @@ void DmStk_StartTelescopeCutscene(DmStk* this, PlayState* play) {
|
||||
|
||||
if (ActorCutscene_GetCanPlayNext(cutscene)) {
|
||||
ActorCutscene_Start(cutscene, &this->actor);
|
||||
func_800FE498();
|
||||
Environment_StartTime();
|
||||
this->actionFunc = DmStk_DoNothing;
|
||||
} else {
|
||||
ActorCutscene_SetIntentToPlay(cutscene);
|
||||
@@ -1816,9 +1816,10 @@ void DmStk_Update(Actor* thisx, PlayState* play) {
|
||||
(play->msgCtx.currentTextId == 0x5E6) && !FrameAdvance_IsEnabled(&play->state) &&
|
||||
(play->transitionTrigger == TRANS_TRIGGER_OFF) && (ActorCutscene_GetCurrentIndex() == -1) &&
|
||||
(play->csCtx.state == 0)) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15);
|
||||
if (REG(15) != 0) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed);
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED;
|
||||
if (R_TIME_SPEED != 0) {
|
||||
gSaveContext.save.time =
|
||||
((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,7 +163,7 @@ void DoorWarp1_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
if ((play->sceneId == SCENE_MITURIN_BS) || (play->sceneId == SCENE_HAKUGIN_BS) ||
|
||||
(play->sceneId == SCENE_INISIE_BS) || (play->sceneId == SCENE_SEA_BS)) {
|
||||
func_800FE484();
|
||||
Environment_StopTime();
|
||||
play->interfaceCtx.restrictions.unk_312 = 1;
|
||||
play->interfaceCtx.restrictions.songOfSoaring = 1;
|
||||
}
|
||||
|
||||
@@ -748,7 +748,7 @@ void func_80BDF578(EnAl* this, PlayState* play) {
|
||||
void func_80BDF5E8(EnAl* this, PlayState* play) {
|
||||
ScheduleOutput sp20;
|
||||
|
||||
this->unk_4E0 = REG(15) + ((void)0, gSaveContext.save.daySpeed);
|
||||
this->unk_4E0 = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset);
|
||||
if (!Schedule_RunScript(play, D_80BDFC70, &sp20) ||
|
||||
((this->unk_35C != sp20.result) && !func_80BDF390(this, play, &sp20))) {
|
||||
this->actor.shape.shadowDraw = NULL;
|
||||
|
||||
@@ -102,8 +102,8 @@ void func_809C10B0(EnAob01* this, s32 arg1) {
|
||||
}
|
||||
|
||||
void func_809C1124(void) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15);
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed);
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED;
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset);
|
||||
}
|
||||
|
||||
void func_809C1158(EnAob01* this, PlayState* play) {
|
||||
|
||||
@@ -654,7 +654,7 @@ void EnBaba_GaveBlastMask(EnBaba* this, PlayState* play) {
|
||||
void EnBaba_FollowSchedule(EnBaba* this, PlayState* play) {
|
||||
ScheduleOutput scheduleOutput;
|
||||
|
||||
this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed);
|
||||
this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset);
|
||||
|
||||
if (!Schedule_RunScript(play, sSchedule, &scheduleOutput) ||
|
||||
((this->scheduleResult != scheduleOutput.result) &&
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user