1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
|
#ifndef Z64_H
#define Z64_H
#include "libc/math.h"
#include "libc/stdarg.h"
#include "libc/stdbool.h"
#include "libc/stddef.h"
#include "libc/stdint.h"
#include "libc/stdlib.h"
#include "ultra64.h"
#include "irqmgr.h"
#include "padmgr.h"
#include "scheduler.h"
#include "color.h"
#include "ichain.h"
#include "sequence.h"
#include "seqcmd.h"
#include "sfx.h"
#include "message_data_static.h"
#include "gfx.h"
#include "gfxprint.h"
#include "padutils.h"
#include "sys_matrix.h"
#include "tha.h"
#include "thga.h"
#include "z64actor.h"
#include "z64animation.h"
#include "z64animation_legacy.h"
#include "z64audio.h"
#include "z64bgcheck.h"
#include "z64bombers_notebook.h"
#include "z64camera.h"
#include "z64collision_check.h"
#include "z64curve.h"
#include "z64cutscene.h"
#include "z64dma.h"
#include "z64eff_footmark.h"
#include "z64effect.h"
#include "z64environment.h"
#include "z64frameadvance.h"
#include "z64game_over.h"
#include "z64game.h"
#include "z64interface.h"
#include "z64item.h"
#include "z64light.h"
#include "z64map.h"
#include "z64math.h"
#include "z64message.h"
#include "z64object.h"
#include "z64ocarina.h"
#include "z64player.h"
#include "z64prerender.h"
#include "z64save.h"
#include "z64scene.h"
#include "z64schedule.h"
#include "z64skin.h"
#include "z64skybox.h"
#include "z64sound_source.h"
#include "z64subs.h"
#include "z64rumble.h"
#include "z64transition.h"
#include "z64view.h"
#include "regs.h"
typedef struct PauseContext {
/* 0x000 */ View view;
/* 0x168 */ u8* iconItemSegment;
/* 0x16C */ u8* iconItem24Segment;
/* 0x170 */ u8* iconItemAltSegment;
/* 0x174 */ u8* iconItemLangSegment;
/* 0x178 */ u8* nameSegment;
/* 0x17C */ u8* iconItemVtxSegment;
/* 0x180 */ Vtx* itemPageVtx;
/* 0x184 */ Vtx* mapPageVtx;
/* 0x188 */ Vtx* questPageVtx;
/* 0x18C */ Vtx* maskPageVtx;
/* 0x190 */ Vtx* itemVtx;
/* 0x194 */ Vtx* mapVtx; // inferred
/* 0x198 */ Vtx* questVtx;
/* 0x19C */ Vtx* maskVtx;
/* 0x1A0 */ Vtx* promptPageVtx;
/* 0x1A4 */ Vtx* infoPanelVtx;
/* 0x1A8 */ Vtx* cursorVtx;
/* 0x1AC */ OcarinaStaff* ocarinaStaff;
/* 0x1B0 */ UNK_TYPE1 unk_1B0[0x20];
/* 0x1D0 */ OSMesgQueue loadQueue;
/* 0x1E8 */ OSMesg loadMsg;
/* 0x1EC */ u16 state;
/* 0x1EE */ u16 debugEditor;
/* 0x1F0 */ u8 bombersNotebookOpen;
/* 0x1F4 */ Vec3f eye;
/* 0x200 */ u16 mainState;
/* 0x202 */ u16 nextPageMode; // (2 * prev pageIndex) + (scroll left ? 1 : 0)
/* 0x204 */ u16 pageIndex;
/* 0x206 */ u16 switchPageTimer;
/* 0x208 */ u16 savePromptState;
/* 0x20C */ f32 unk_20C; // set to 936.0f, unused remnant from OoT
/* 0x210 */ f32 itemPageRoll; // rotation (-z) of the item page into the screen
/* 0x214 */ f32 mapPageRoll; // rotation (+x) of the map page into the screen
/* 0x218 */ f32 questPageRoll; // rotation (+z) of the quest page into the screen
/* 0x21C */ f32 maskPageRoll; // rotation (-z) of the mask page into the screen
/* 0x220 */ f32 roll;
/* 0x224 */ u16 alpha;
/* 0x226 */ s16 offsetY;
/* 0x228 */ UNK_TYPE1 unk_228[0x8];
/* 0x230 */ s32 stickAdjX;
/* 0x234 */ s32 stickAdjY;
/* 0x238 */ s16 cursorPoint[5];
/* 0x242 */ s16 cursorXIndex[5];
/* 0x24C */ s16 cursorYIndex[5];
/* 0x256 */ s16 unk_256; // Uses DungeonItem enum
/* 0x258 */ s16 cursorSpecialPos;
/* 0x25A */ s16 pageSwitchInputTimer; // Used to introduce a delay before switching page when arriving on the "scroll left/right" positions while holding stick left/right.
/* 0x25C */ u16 namedItem;
/* 0x25E */ u16 cursorItem[5];
/* 0x268 */ u16 cursorSlot[5];
/* 0x272 */ u16 equipTargetItem;
/* 0x274 */ u16 equipTargetSlot;
/* 0x276 */ u16 equipTargetCBtn;
/* 0x278 */ s16 equipAnimX;
/* 0x27A */ s16 equipAnimY;
/* 0x27C */ s16 equipAnimAlpha;
/* 0x27E */ s16 infoPanelOffsetY;
/* 0x280 */ u16 nameDisplayTimer;
/* 0x282 */ u16 nameColorSet;
/* 0x284 */ s16 cursorColorSet;
/* 0x286 */ s16 cursorSpinPhase;
/* 0x288 */ f32 cursorX;
/* 0x28C */ f32 cursorY;
/* 0x290 */ f32 cursorWidth;
/* 0x294 */ f32 cursorHeight;
/* 0x298 */ f32 cursorShrinkRate;
/* 0x29C */ s16 promptChoice; // save/continue choice: 0 = yes; 4 = no
/* 0x29E */ s16 promptAlpha;
/* 0x2A0 */ s16 ocarinaSongIndex;
/* 0x2A2 */ u8 worldMapPoints[20];
/* 0x2B6 */ u8 unk_2B6; // unused red?
/* 0x2B7 */ u8 unk_2B7; // unused green?
/* 0x2B8 */ u8 unk_2B8; // unused blue?
/* 0x2B9 */ u8 itemDescriptionOn; // helpful description of item given through a message box
/* 0x2BA */ s16 equipAnimScale; // scale of item icon while moving being equipped to c-button
/* 0x2BC */ s16 equipAnimShrinkRate; // rate the scale is shrinking for the item icon while moving being equipped to c-button
/* 0x2BE */ s16 ocarinaButtonsY[5];
/* 0x2C8 */ u16 unk_2C8; // Uses PauseMenuPage enum for Owl Warp. Never set.
/* 0x2CA */ s16 unk_2CA; // Uses OwlWarpId enum for Owl Warp. Never set.
} PauseContext; // size = 0x2D0
typedef struct {
/* 0x00 */ void* loadedRamAddr;
/* 0x04 */ uintptr_t vromStart;
/* 0x08 */ uintptr_t vromEnd;
/* 0x0C */ void* vramStart;
/* 0x10 */ void* vramEnd;
/* 0x14 */ uintptr_t offset; // loadedRamAddr - vramStart
/* 0x18 */ const char* name;
} KaleidoMgrOverlay; // size = 0x1C
typedef enum {
/* 0x00 */ KALEIDO_OVL_KALEIDO_SCOPE,
/* 0x01 */ KALEIDO_OVL_PLAYER_ACTOR,
/* 0x02 */ KALEID_OVL_MAX
} KaleidoMgrOverlayType;
typedef struct {
/* 0x0 */ u8 seqId;
/* 0x1 */ u8 ambienceId;
} SequenceContext; // size = 0x2
typedef struct PlayState {
/* 0x00000 */ GameState state;
/* 0x000A4 */ s16 sceneId;
/* 0x000A6 */ u8 sceneConfig;
/* 0x000A7 */ char unk_A7[0x9];
/* 0x000B0 */ void* sceneSegment;
/* 0x000B4 */ char unk_B4[0x4];
/* 0x000B8 */ View view;
/* 0x00220 */ Camera mainCamera;
/* 0x00398 */ Camera subCameras[NUM_CAMS - CAM_ID_SUB_FIRST];
/* 0x00800 */ Camera* cameraPtrs[NUM_CAMS];
/* 0x00810 */ s16 activeCamId;
/* 0x00812 */ s16 nextCamera;
/* 0x00814 */ SequenceContext sequenceCtx;
/* 0x00818 */ LightContext lightCtx;
/* 0x00828 */ FrameAdvanceContext frameAdvCtx;
/* 0x00830 */ CollisionContext colCtx;
/* 0x01CA0 */ ActorContext actorCtx;
/* 0x01F24 */ CutsceneContext csCtx;
/* 0x01F78 */ SoundSource soundSources[SOUND_SOURCE_COUNT];
/* 0x02138 */ EffFootmark footprintInfo[100];
/* 0x046B8 */ SramContext sramCtx;
/* 0x046E0 */ SkyboxContext skyboxCtx;
/* 0x04908 */ MessageContext msgCtx;
/* 0x169E8 */ InterfaceContext interfaceCtx;
/* 0x16D30 */ PauseContext pauseCtx;
/* 0x17000 */ GameOverContext gameOverCtx;
/* 0x17004 */ EnvironmentContext envCtx;
/* 0x17104 */ AnimationContext animationCtx;
/* 0x17D88 */ ObjectContext objectCtx;
/* 0x186E0 */ RoomContext roomCtx;
/* 0x18760 */ DoorContext doorCtx;
/* 0x18768 */ void (*playerInit)(Player* player, struct PlayState* play, FlexSkeletonHeader* skelHeader);
/* 0x1876C */ void (*playerUpdate)(Player* player, struct PlayState* play, Input* input);
/* 0x18770 */ void (*unk_18770)(struct PlayState* play, Player* player);
/* 0x18774 */ s32 (*startPlayerFishing)(struct PlayState* play);
/* 0x18778 */ s32 (*grabPlayer)(struct PlayState* play, Player* player);
/* 0x1877C */ s32 (*tryPlayerCsAction)(struct PlayState* play, Player* player, PlayerCsAction csAction);
/* 0x18780 */ void (*func_18780)(Player* player, struct PlayState* play);
/* 0x18784 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage);
/* 0x18788 */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor);
/* 0x1878C */ void (*unk_1878C)(struct PlayState* play);
/* 0x18790 */ void (*unk_18790)(struct PlayState* play, s16 arg1);
/* 0x18794 */ PlayerItemAction (*unk_18794)(struct PlayState* play, Player* player, ItemId itemId);
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, PlayerAnimationHeader* talkAnim, AnimationMode animMode);
/* 0x1879C */ s16 playerCsIds[PLAYER_CS_ID_MAX];
/* 0x187B0 */ MtxF viewProjectionMtxF;
/* 0x187F0 */ Vec3f projectionMtxFDiagonal;
/* 0x187FC */ MtxF billboardMtxF;
/* 0x1883C */ Mtx* billboardMtx;
/* 0x18840 */ u32 gameplayFrames;
/* 0x18844 */ u8 unk_18844; // bool
/* 0x18845 */ u8 haltAllActors;
/* 0x18846 */ s16 numSetupActors;
/* 0x18848 */ u8 numRooms;
/* 0x1884C */ RomFile* roomList;
/* 0x18850 */ ActorEntry* linkActorEntry;
/* 0x18854 */ ActorEntry* setupActorList;
/* 0x18858 */ ActorCsCamInfo* actorCsCamList;
/* 0x1885C */ EntranceEntry* setupEntranceList;
/* 0x18860 */ u16* setupExitList;
/* 0x18864 */ Path* setupPathList;
/* 0x18868 */ void* naviQuestHints; // leftover from OoT, system which processes this is removed
/* 0x1886C */ AnimatedMaterial* sceneMaterialAnims;
/* 0x18870 */ void* specialEffects;
/* 0x18874 */ u8 skyboxId; // @see SkyboxId enum
/* 0x18875 */ s8 transitionTrigger; // "fade_direction"
/* 0x18876 */ s16 worldCoverAlpha;
/* 0x18878 */ s16 bgCoverAlpha;
/* 0x1887A */ u16 nextEntrance;
/* 0x1887C */ s8 unk_1887C; // shootingGalleryStatus?
/* 0x1887D */ s8 unk_1887D;
/* 0x1887E */ s8 unk_1887E;
/* 0x1887F */ u8 transitionType; // fadeTransition
/* 0x18880 */ u8 unk_18880;
/* 0x18884 */ CollisionCheckContext colChkCtx;
/* 0x18B20 */ u16 cutsceneFlags[20];
/* 0x18B48 */ u8 curSpawn;
/* 0x18B49 */ u8 unk_18B49;
/* 0x18B4A */ u8 transitionMode;
/* 0x18B4C */ PreRender pauseBgPreRender;
/* 0x18B9C */ char unk_18B9C[0x54];
/* 0x18BF0 */ TransitionContext transitionCtx;
/* 0x18E48 */ TransitionFade unk_18E48;
/* 0x18E54 */ SceneTableEntry* loadedScene;
/* 0x18E58 */ void* unk_18E58;
/* 0x18E5C */ TexturePtr pictoPhotoI8;
/* 0x18E60 */ void* unk_18E60;
/* 0x18E64 */ void* unk_18E64;
/* 0x18E68 */ void* unk_18E68; // framebuffer related to Lens of Truth
/* 0x18E6C */ char unk_18E6C[0x3EC];
} PlayState; // size = 0x19258
typedef enum {
/* 0 */ PICTO_PHOTO_STATE_OFF,
/* 1 */ PICTO_PHOTO_STATE_SETUP,
/* 2 */ PICTO_PHOTO_STATE_PROCESS,
/* 3 */ PICTO_PHOTO_STATE_READY
} PictoPhotoState;
#endif
|