mirror of
https://github.com/zeldaret/oot
synced 2026-06-05 11:18:12 -04:00
z_demo documentation (#1327)
* commit old stuff * progress * progress * progress * progress * more progress, renaming cues next * small changes * enum values added for all actions * hardcoded values removed when possible * commands renamed * first pass of action -> cue * fix some matches * some more cleanup * scriptPtr * forgot one * remove cue rot union * more changes * some more stuff * more stuff * fix matching issues * some more things * progress, starting to rename destinations * small changes * name some destinations * more names * need to switch branch * progress * first pass of destination names * usages fixed * use destination enum * fix csdis * format * command descriptions * revert accidental zap changes * forgot some things * use a single macro for CutsceneCameraPoint (idk why i didnt think of this sooner) * typo * review1 * clarify ruby/sapphire comment * remove endframe for commands that dont use it * some more review * most review, but not all * scriptPtr -> script, and another small change * ocarina action * remove +1 from light settings command, change comment * actionIndex -> cueIdTemp (i guess) * _SetCueX -> _SetXFromCue * format * tweak fade out seq arg names * use spline terminology * more dragorn and engineer review * misc start/end frame note * cleanup StartPosRotFromCue vs PosRotFromCue * cleanup spline terminology * sPrevCamId -> sReturnToCamId * comment on debug cs data address * Cutscene_Init -> Cutscene_InitContext * single point types are not a list * remove todo comment * some more review * rumble struct names * some review * more review * missed one * reword pointer comment * even more review * match transition terminology with z_play * change condition and format * frame count * command specific structs with alignment * anon review * remove unneeded arg from time macro * yeet `CsCmdGeneric` * remove unused from single point types * typo * compromise attempt -- name endFrame everywhere * fixes * fix again * copied the wrong note * cutscene data note * review, format * compat defines * idk whats going on man Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
This commit is contained in:
@@ -377,7 +377,7 @@ void func_80A87CEC(EnJj *this, PlayState *play) {
|
||||
sp1C = temp_v1;
|
||||
play = play;
|
||||
func_80A87800(this, &func_80A87EF0);
|
||||
play->csCtx.segment = &D_80A88164;
|
||||
play->csCtx.script = &D_80A88164;
|
||||
gSaveContext.cutsceneTrigger = (u8)1U;
|
||||
func_8003EBF8(play, &play->colCtx.dyna, (s32) temp_v1->bgId);
|
||||
func_8005B1A4(play->cameraPtrs[play->activeCamId]);
|
||||
@@ -415,7 +415,7 @@ void func_80A87CEC(EnJj *this, PlayState *play) {
|
||||
return;
|
||||
}
|
||||
func_80A87800(this, func_80A87EF0);
|
||||
play->csCtx.segment = &D_80A88164;
|
||||
play->csCtx.script = &D_80A88164;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
func_8003EBF8(play, &play->colCtx.dyna, child->bgId);
|
||||
func_8005B1A4(GET_ACTIVE_CAM(play));
|
||||
@@ -434,7 +434,7 @@ void func_80A87CEC(EnJj* this, PlayState* play) {
|
||||
this->unk_30C--;
|
||||
} else {
|
||||
func_80A87800(this, func_80A87EF0);
|
||||
play->csCtx.segment = &D_80A88164;
|
||||
play->csCtx.script = &D_80A88164;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
func_8003EBF8(play, &play->colCtx.dyna, child->bgId);
|
||||
func_8005B1A4(GET_ACTIVE_CAM(play));
|
||||
@@ -516,12 +516,12 @@ This has several problems: firstly, the action function is called with the wrong
|
||||
|
||||
`unk40` of an array of `Vec3s`s is `0x40 = 0x6 * 0xA + 0x4`, so is actually `this->skelAnime.jointTable[10].z`
|
||||
|
||||
Lastly, what is `play->unk1D94`? It is at `play->csCtx + 0x30`, or `play->csCtx.npcActions + 0x8`, which is `play->csCtx.npcActions[2]` since this is an array of pointers. Hence it is a pointer, and so should be compared to `NULL`. Looking up the sfx Id again, we end up with
|
||||
Lastly, what is `play->unk1D94`? It is at `play->csCtx + 0x30`, or `play->csCtx.actorCues + 0x8`, which is `play->csCtx.actorCues[2]` since this is an array of pointers. Hence it is a pointer, and so should be compared to `NULL`. Looking up the sfx Id again, we end up with
|
||||
```C
|
||||
void EnJj_Update(Actor *thisx, PlayState *play) {
|
||||
EnJj* this = THIS;
|
||||
|
||||
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[2] != NULL)) {
|
||||
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[2] != NULL)) {
|
||||
func_80A87D94(this, play);
|
||||
} else {
|
||||
this->actionFunc(this, play);
|
||||
@@ -703,7 +703,7 @@ At the top we have
|
||||
if (temp_v0 != 2) {
|
||||
if (temp_v0 != 3) {
|
||||
```
|
||||
Firstly, we are now comparing with the value of `play->unk1D94`, not just using a pointer, so we need the first thing in `play->csCtx.npcActions[2]`. This turns out to be `play->csCtx.npcActions[2]->action`.
|
||||
Firstly, we are now comparing with the value of `play->unk1D94`, not just using a pointer, so we need the first thing in `play->csCtx.actorCues[2]`. This turns out to be `play->csCtx.actorCues[2]->id`.
|
||||
|
||||
The if structure here is another classic indicator of a switch: nested, with the same variable compared multiple times. If you were to diff this as-is, you would find that the code is in completely the wrong order. Reading how the ifs work, we see that if `temp_v0` is `1`, it executes the outermost else block, if it is `2`, the middle, if `3`, the innermost, and if it is anything else, the contents of the innermost if. Hence this becomes
|
||||
```C
|
||||
@@ -719,7 +719,7 @@ void func_80A87D94(EnJj *this, PlayState *play) {
|
||||
u16 temp_v1_3;
|
||||
u16 phi_v1;
|
||||
|
||||
switch (play->csCtx.npcActions[2]->action) {
|
||||
switch (play->csCtx.actorCues[2]->id) {
|
||||
case 1:
|
||||
temp_v1_3 = this->unk_30A;
|
||||
phi_v1 = temp_v1_3;
|
||||
@@ -785,7 +785,7 @@ As usual, most of the remaining temps look fake. The only one that does not is p
|
||||
|
||||
```C
|
||||
void func_80A87D94(EnJj* this, PlayState* play) {
|
||||
switch (play->csCtx.npcActions[2]->action) {
|
||||
switch (play->csCtx.actorCues[2]->id) {
|
||||
case 1:
|
||||
if ((this->unk_30A & 2) != 0) {
|
||||
this->unk_30E = 0;
|
||||
|
||||
Reference in New Issue
Block a user