summaryrefslogtreecommitdiff
path: root/docs/tutorial/documenting.md
diff options
context:
space:
mode:
authorTom Overton <tom-overton@users.noreply.github.com>2022-06-26 08:57:37 -0700
committerGitHub <noreply@github.com>2022-06-26 11:57:37 -0400
commit158d1b26b0455c2214741ebc4406130a559b8f8f (patch)
tree21fdb81df213038f1f7f7cd9e2f096594ad7695e /docs/tutorial/documenting.md
parentf77c4770f7ae50b522d9183b79abe60070f6895b (diff)
PlayState rename (#835)
* PlayState rename * Make this work with the latest master and run format * Respond to hensldm's review * Respond to Elliptic's review * Add Effect_GetPlayState to namefixer.py * Add missed comma
Diffstat (limited to 'docs/tutorial/documenting.md')
-rw-r--r--docs/tutorial/documenting.md90
1 files changed, 45 insertions, 45 deletions
diff --git a/docs/tutorial/documenting.md b/docs/tutorial/documenting.md
index e31a31969..ad990af4e 100644
--- a/docs/tutorial/documenting.md
+++ b/docs/tutorial/documenting.md
@@ -40,15 +40,15 @@ Large code block, click to show
#define THIS ((EnRecepgirl*)thisx)
-void EnRecepgirl_Init(Actor* thisx, GlobalContext* globalCtx);
-void EnRecepgirl_Destroy(Actor* thisx, GlobalContext* globalCtx);
-void EnRecepgirl_Update(Actor* thisx, GlobalContext* globalCtx);
-void EnRecepgirl_Draw(Actor* thisx, GlobalContext* globalCtx);
+void EnRecepgirl_Init(Actor* thisx, PlayState* play);
+void EnRecepgirl_Destroy(Actor* thisx, PlayState* play);
+void EnRecepgirl_Update(Actor* thisx, PlayState* play);
+void EnRecepgirl_Draw(Actor* thisx, PlayState* play);
void func_80C10148(EnRecepgirl* this);
-void func_80C1019C(EnRecepgirl* this, GlobalContext* globalCtx);
+void func_80C1019C(EnRecepgirl* this, PlayState* play);
void func_80C10290(EnRecepgirl* this);
-void func_80C102D4(EnRecepgirl * this, GlobalContext * globalCtx);
+void func_80C102D4(EnRecepgirl* this, PlayState* play);
const ActorInit En_Recepgirl_InitVars = {
ACTOR_EN_RECEPGIRL,
@@ -73,13 +73,13 @@ static InitChainEntry D_80C106C0[] = {
static s32 D_80C106C8 = 0;
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/EnRecepgirl_Init.s")
-void EnRecepgirl_Init(Actor* thisx, GlobalContext* globalCtx) {
+void EnRecepgirl_Init(Actor* thisx, PlayState* play) {
EnRecepgirl* this = THIS;
s32 i;
Actor_ProcessInitChain(&this->actor, D_80C106C0);
ActorShape_Init(&this->actor.shape, -60.0f, NULL, 0.0f);
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_bg_Skel_011B60, &object_bg_Anim_009890, this->jointTable, this->morphTable, 24);
+ SkelAnime_InitFlex(play, &this->skelAnime, &object_bg_Skel_011B60, &object_bg_Anim_009890, this->jointTable, this->morphTable, 24);
if (D_80C106C8 == 0) {
for (i = 0; i < 4; i++) {
@@ -90,7 +90,7 @@ void EnRecepgirl_Init(Actor* thisx, GlobalContext* globalCtx) {
this->unk_2AC = 2;
- if (Flags_GetSwitch(globalCtx, this->actor.params)) {
+ if (Flags_GetSwitch(play, this->actor.params)) {
this->actor.textId = 0x2ADC;
} else {
this->actor.textId = 0x2AD9;
@@ -100,7 +100,7 @@ void EnRecepgirl_Init(Actor* thisx, GlobalContext* globalCtx) {
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/EnRecepgirl_Destroy.s")
-void EnRecepgirl_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+void EnRecepgirl_Destroy(Actor* thisx, PlayState* play) {
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/func_80C100DC.s")
@@ -127,7 +127,7 @@ void func_80C10148(EnRecepgirl *this) {
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/func_80C1019C.s")
-void func_80C1019C(EnRecepgirl* this, GlobalContext* globalCtx) {
+void func_80C1019C(EnRecepgirl* this, PlayState* play) {
if (SkelAnime_Update(&this->skelAnime) != 0) {
if (this->skelAnime.animation == &object_bg_Anim_00A280) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 5.0f);
@@ -136,13 +136,13 @@ void func_80C1019C(EnRecepgirl* this, GlobalContext* globalCtx) {
}
}
- if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state) != 0) {
+ if (Actor_ProcessTalkRequest(&this->actor, &play->state) != 0) {
func_80C10290(this);
} else if (Actor_IsFacingPlayer(&this->actor, 0x2000)) {
- func_800B8614(&this->actor, globalCtx, 60.0f);
- if (Player_GetMask(globalCtx) == 2) {
+ func_800B8614(&this->actor, play, 60.0f);
+ if (Player_GetMask(play) == 2) {
this->actor.textId = 0x2367;
- } else if (Flags_GetSwitch(globalCtx, this->actor.params)) {
+ } else if (Flags_GetSwitch(play, this->actor.params)) {
this->actor.textId = 0x2ADC;
} else {
this->actor.textId = 0x2AD9;
@@ -157,7 +157,7 @@ void func_80C10290(EnRecepgirl *this) {
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/func_80C102D4.s")
-void func_80C102D4(EnRecepgirl *this, GlobalContext *globalCtx) {
+void func_80C102D4(EnRecepgirl* this, PlayState* play) {
u8 temp_v0_2;
if (SkelAnime_Update(&this->skelAnime) != 0) {
@@ -176,16 +176,16 @@ void func_80C102D4(EnRecepgirl *this, GlobalContext *globalCtx) {
}
}
- temp_v0_2 = Message_GetState(&globalCtx->msgCtx);
+ temp_v0_2 = Message_GetState(&play->msgCtx);
if (temp_v0_2 == 2) {
this->actor.textId = 0x2ADC;
func_80C10148(this);
return;
}
- if ((temp_v0_2 == 5) && (Message_ShouldAdvance(globalCtx) != 0)) {
+ if ((temp_v0_2 == 5) && (Message_ShouldAdvance(play) != 0)) {
if (this->actor.textId == 0x2AD9) {
- Flags_SetSwitch(globalCtx, this->actor.params);
+ Flags_SetSwitch(play, this->actor.params);
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f);
if ((gSaveContext.save.weekEventReg[63] & 0x80)) {
this->actor.textId = 0x2ADF;
@@ -205,23 +205,23 @@ void func_80C102D4(EnRecepgirl *this, GlobalContext *globalCtx) {
this->actor.textId = 0x2AE0;
}
}
- func_80151938(globalCtx, this->actor.textId);
+ func_80151938(play, this->actor.textId);
}
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/EnRecepgirl_Update.s")
-void EnRecepgirl_Update(Actor *thisx, GlobalContext *globalCtx) {
+void EnRecepgirl_Update(Actor* thisx, PlayState* play) {
s32 pad;
EnRecepgirl* this = THIS;
Vec3s sp30;
- this->actionFunc(this, globalCtx);
- Actor_TrackPlayer(globalCtx, &this->actor, &this->unk_2AE, &sp30, this->actor.focus.pos);
+ this->actionFunc(this, play);
+ Actor_TrackPlayer(play, &this->actor, &this->unk_2AE, &sp30, this->actor.focus.pos);
func_80C100DC(this);
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/func_80C10558.s")
-s32 func_80C10558(GlobalContext *globalCtx, s32 limbIndex, Gfx **dList, Vec3f *pos, Vec3s *rot, Actor *thisx) {
+s32 func_80C10558(PlayState* play, s32 limbIndex, Gfx **dList, Vec3f *pos, Vec3s *rot, Actor *thisx) {
EnRecepgirl* this = THIS;
if (limbIndex == 5) {
@@ -231,7 +231,7 @@ s32 func_80C10558(GlobalContext *globalCtx, s32 limbIndex, Gfx **dList, Vec3f *p
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/func_80C10590.s")
-void func_80C10590(GlobalContext *globalCtx, s32 limbIndex, Actor *thisx) {
+void func_80C10590(PlayState* play, s32 limbIndex, Actor *thisx) {
EnRecepgirl* this = THIS;
if (limbIndex == 5) {
@@ -241,18 +241,18 @@ void func_80C10590(GlobalContext *globalCtx, s32 limbIndex, Actor *thisx) {
}
// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Recepgirl/EnRecepgirl_Draw.s")
-void EnRecepgirl_Draw(Actor *thisx, GlobalContext *globalCtx) {
+void EnRecepgirl_Draw(Actor* thisx, PlayState* play) {
EnRecepgirl* this = THIS;
- OPEN_DISPS(globalCtx->state.gfxCtx);
+ OPEN_DISPS(play->state.gfxCtx);
- func_8012C28C(globalCtx->state.gfxCtx);
+ func_8012C28C(play->state.gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x08, D_80C106B0[this->unk_2AC]);
- SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, &this->actor);
+ SkelAnime_DrawTransformFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, &this->actor);
- CLOSE_DISPS(globalCtx->state.gfxCtx);
+ CLOSE_DISPS(play->state.gfxCtx);
}
```
@@ -412,7 +412,7 @@ Finally, clearly `4` is linked to the data over which we're iterating: namely it
We've got one struct variable left. To find out what it does, we can look at a function that uses it, for example
```C
-s32 EnRecepgirl_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
+s32 EnRecepgirl_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
Actor* thisx) {
EnRecepgirl* this = THIS;
@@ -422,7 +422,7 @@ s32 EnRecepgirl_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx**
return false;
}
-void EnRecepgirl_UnkLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
+void EnRecepgirl_UnkLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) {
EnRecepgirl* this = THIS;
if (limbIndex == 5) {
@@ -449,7 +449,7 @@ void func_80C10148(EnRecepgirl* this) {
this->actionFunc = func_80C1019C;
}
-void func_80C1019C(EnRecepgirl* this, GlobalContext* globalCtx) {
+void func_80C1019C(EnRecepgirl* this, PlayState* play) {
if (SkelAnime_Update(&this->skelAnime) != 0) {
if (this->skelAnime.animation == &object_bg_Anim_00A280) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 5.0f);
@@ -458,13 +458,13 @@ void func_80C1019C(EnRecepgirl* this, GlobalContext* globalCtx) {
}
}
- if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state) != 0) {
+ if (Actor_ProcessTalkRequest(&this->actor, &play->state) != 0) {
func_80C10290(this);
} else if (Actor_IsFacingPlayer(&this->actor, 0x2000)) {
- func_800B8614(&this->actor, globalCtx, 60.0f);
- if (Player_GetMask(globalCtx) == PLAYER_MASK_KAFEIS_MASK) {
+ func_800B8614(&this->actor, play, 60.0f);
+ if (Player_GetMask(play) == PLAYER_MASK_KAFEIS_MASK) {
this->actor.textId = 0x2367; // "... doesn't Kafei want to break off his engagement ... ?"
- } else if (Flags_GetSwitch(globalCtx, this->actor.params)) {
+ } else if (Flags_GetSwitch(play, this->actor.params)) {
this->actor.textId = 0x2ADC; // hear directions again?
} else {
this->actor.textId = 0x2AD9; // "Welcome..."
@@ -477,7 +477,7 @@ void func_80C10290(EnRecepgirl* this) {
this->actionFunc = func_80C102D4;
}
-void func_80C102D4(EnRecepgirl* this, GlobalContext* globalCtx) {
+void func_80C102D4(EnRecepgirl* this, PlayState* play) {
u8 temp_v0_2;
if (SkelAnime_Update(&this->skelAnime)) {
@@ -496,13 +496,13 @@ void func_80C102D4(EnRecepgirl* this, GlobalContext* globalCtx) {
}
}
- temp_v0_2 = Message_GetState(&globalCtx->msgCtx);
+ temp_v0_2 = Message_GetState(&play->msgCtx);
if (temp_v0_2 == 2) {
this->actor.textId = 0x2ADC; // hear directions again?
func_80C10148(this);
- } else if ((temp_v0_2 == 5) && (Message_ShouldAdvance(globalCtx) != 0)) {
+ } else if ((temp_v0_2 == 5) && (Message_ShouldAdvance(play) != 0)) {
if (this->actor.textId == 0x2AD9) { // "Welcome..."
- Flags_SetSwitch(globalCtx, this->actor.params);
+ Flags_SetSwitch(play, this->actor.params);
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f);
if (gSaveContext.save.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting
this->actor.textId = 0x2ADF; // Mayor's office is on the left (meeting ended)
@@ -524,11 +524,11 @@ void func_80C102D4(EnRecepgirl* this, GlobalContext* globalCtx) {
this->actor.textId = 0x2AE0; // drawing room on the right, don't go in without an appointment
}
}
- func_80151938(globalCtx, this->actor.textId);
+ func_80151938(play, this->actor.textId);
}
}
```
-All this branching is to make the conversation look more diverse and interesting. Notably, though, `func_80C1019C` is set to start with, and is only changed when `Actor_ProcessTalkRequest(&this->actor, &globalCtx->state) != 0`. This is something to do with talking. The other function handles the rest of the conversation, and hands back to the first if `Message_GetState(&globalCtx->msgCtx) == 2`. This function is *something* to do with the text state, which will require `z_message` to be decomped. However, observation in-game will reveal this is something to do with ending dialogue. So we can conclude that the action functions are `EnRecepgirl_Wait` and `EnRecepgirl_Talk`. The setup functions are thus `EnRecepgirl_SetupWait` and `EnRecepgirl_SetupTalk`.
+All this branching is to make the conversation look more diverse and interesting. Notably, though, `func_80C1019C` is set to start with, and is only changed when `Actor_ProcessTalkRequest(&this->actor, &play->state) != 0`. This is something to do with talking. The other function handles the rest of the conversation, and hands back to the first if `Message_GetState(&play->msgCtx) == 2`. This function is *something* to do with the text state, which will require `z_message` to be decomped. However, observation in-game will reveal this is something to do with ending dialogue. So we can conclude that the action functions are `EnRecepgirl_Wait` and `EnRecepgirl_Talk`. The setup functions are thus `EnRecepgirl_SetupWait` and `EnRecepgirl_SetupTalk`.
For more complex actors, we have a tool called `graphovl.py` that can produce function flow graphs for actors: running
```
@@ -551,7 +551,7 @@ We like to make macros for reading an actor's `params` (indeed, this is required
Actor_SetScale(&this->dyna.actor, 0.1f);
DynaPolyActor_Init(&this->dyna, 1);
CollisionHeader_GetVirtual(&object_tree_Colheader_001B2C, &colHeader);
- this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
+ this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
}
```
@@ -571,7 +571,7 @@ Notice that we use `thisx`: this makes the form of every one of these macros the
Actor_SetScale(&this->dyna.actor, 0.1f);
DynaPolyActor_Init(&this->dyna, 1);
CollisionHeader_GetVirtual(&object_tree_Colheader_001B2C, &colHeader);
- this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
+ this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
}
```