mirror of https://github.com/zeldaret/mm.git
				
				
				
			SubS Skelanime functions (#572)
* Bring code over * Change ActorDraw typedefs from actor to thisx * Rename functions * Format * Rename and clean up limb draws * Some more limb draw cleanup * Some more cleanup * Function comments * Last bit of cleanup * update tutorial * More tutorial and format * Remove extra newlines form actorfixer * Missed one * Remove some unnecessary casts * Fix SkelAnime transform functions in functions.h * Remove bug comments, and add note * Remove some more unneeded casts and rename one variable * format * Fix merge * Format
This commit is contained in:
		
							parent
							
								
									a9c2449c11
								
							
						
					
					
						commit
						aa90d1ee2b
					
				| 
						 | 
				
			
			@ -262,7 +262,7 @@ void EnRecepgirl_Draw(Actor *thisx, GlobalContext *globalCtx) {
 | 
			
		|||
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x08, D_80C106B0[this->unk_2AC]);
 | 
			
		||||
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -273,7 +273,7 @@ void EnRecepgirl_Draw(Actor *thisx, GlobalContext *globalCtx) {
 | 
			
		|||
 | 
			
		||||
(We can delete the `GLOBAL_ASM` lines now.)
 | 
			
		||||
 | 
			
		||||
The worst part of documentation is finding somewhere to start. We have a decent place to start here, though, in that we already know the function (or rather, the use) of a couple of the functions, namely the LimbDraws. So we can rename `func_80C10558` to `EnRecepgirl_OverrideLimbDraw` and `func_80C10590` to `EnRecepgirl_UnkLimbDraw`. Remember to do a global rename so that the functions in the assembly are renamed, use `rename_global_asm`,
 | 
			
		||||
The worst part of documentation is finding somewhere to start. We have a decent place to start here, though, in that we already know the function (or rather, the use) of a couple of the functions, namely the LimbDraws. So we can rename `func_80C10558` to `EnRecepgirl_OverrideLimbDraw` and `func_80C10590` to `EnRecepgirl_TransformLimbDraw`. Remember to do a global rename so that the functions in the assembly are renamed, use `rename_global_asm`,
 | 
			
		||||
```
 | 
			
		||||
$ ./tools/rename_global_asm.py
 | 
			
		||||
asm/non_matchings/overlays/ovl_En_Recepgirl/func_80C10558.s --> asm/non_matchings/overlays/ovl_En_Recepgirl/EnRecepgirl_OverrideLimbDraw.s
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ void EnRecepgirl_Draw(Actor *thisx, GlobalContext *globalCtx) {
 | 
			
		|||
    sp30->polyOpa.p = temp_v1 + 8;
 | 
			
		||||
    temp_v1->words.w0 = 0xDB060020;
 | 
			
		||||
    temp_v1->words.w1 = (u32) D_80C106B0[this->unk_2AC];
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, (s32) this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, (Actor *) this);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, (s32) this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, (Actor *) this);
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ void EnRecepgirl_Draw(Actor *thisx, GlobalContext *globalCtx) {
 | 
			
		|||
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x08, D_80C106B0[this->unk_2AC]);
 | 
			
		||||
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80C10558, NULL, func_80C10590, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -115,28 +115,28 @@ void EnRecepgirl_Draw(Actor *thisx, GlobalContext *globalCtx) {
 | 
			
		|||
 | 
			
		||||
And this matches.
 | 
			
		||||
 | 
			
		||||
The last two functions in the actor are used as arguments in `func_801343C0`. This is a `SkelAnime` function, except unlike the OoT ones, it has three function callback arguments instead of two: in `functions.h` or `z_skelanime.c`, we find
 | 
			
		||||
The last two functions in the actor are used as arguments in `SkelAnime_DrawTransformFlexOpa`. This is a `SkelAnime` function, except unlike the OoT ones, it has three function callback arguments instead of two: in `functions.h` or `z_skelanime.c`, we find
 | 
			
		||||
```C
 | 
			
		||||
void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount,
 | 
			
		||||
                   OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor)
 | 
			
		||||
void SkelAnime_DrawTransformFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount,
 | 
			
		||||
                   OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, Actor* actor)
 | 
			
		||||
```
 | 
			
		||||
The typedefs of the callbacks it uses are in `z64animation.h`:
 | 
			
		||||
```C
 | 
			
		||||
typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                struct Actor* actor);
 | 
			
		||||
typedef s32 (*OverrideLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
typedef void (*PostLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
 | 
			
		||||
                             struct Actor* actor);
 | 
			
		||||
typedef void (*PostLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
 | 
			
		||||
                             struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
[...]
 | 
			
		||||
 | 
			
		||||
typedef void (*UnkActorDraw)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* actor);
 | 
			
		||||
typedef void (*TransformLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* thisx);
 | 
			
		||||
```
 | 
			
		||||
which is where mips2c got them from.
 | 
			
		||||
 | 
			
		||||
In this case, only two of them are used, and it is these that are the last functions standing between us and a decompiled actor.
 | 
			
		||||
 | 
			
		||||
## OverrideLimbDraw, PostLimbDraw, UnkActorDraw
 | 
			
		||||
## OverrideLimbDraw, PostLimbDraw, TransformLimbDraw
 | 
			
		||||
 | 
			
		||||
Well, we don't have a PostLimbDraw here, but as we see from the prototype, it's much the same as the OverrideLimbDraw but without the `pos` argument and no return value.
 | 
			
		||||
```C
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +159,7 @@ s32 func_80C10558(GlobalContext *globalCtx, s32 limbIndex, Gfx **dList, Vec3f *p
 | 
			
		|||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
As for the UnkActorDraw, it has a much simpler prototype. mips2c gives
 | 
			
		||||
As for the TransformLimbDraw, it has a much simpler prototype. mips2c gives
 | 
			
		||||
```C
 | 
			
		||||
void func_80C10590(GlobalContext *globalCtx, s32 limbIndex, Actor *actor) {
 | 
			
		||||
    if (limbIndex == 5) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2375,8 +2375,8 @@ void SkelAnime_DrawLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skele
 | 
			
		|||
void SkelAnime_DrawOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
 | 
			
		||||
void SkelAnime_DrawFlexLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, Mtx** limbMatricies);
 | 
			
		||||
void SkelAnime_DrawFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
 | 
			
		||||
void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDrawOpa unkDraw, Actor* actor, Mtx** mtx);
 | 
			
		||||
void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDrawOpa unkDraw, Actor* actor);
 | 
			
		||||
void SkelAnime_DrawTransformFlexLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, Actor* actor, Mtx** mtx);
 | 
			
		||||
void SkelAnime_DrawTransformFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, Actor* actor);
 | 
			
		||||
void SkelAnime_GetFrameData(AnimationHeader* animationSeg, s32 currentFrame, s32 limbCount, Vec3s* dst);
 | 
			
		||||
s16 Animation_GetLength(void* animation);
 | 
			
		||||
s16 Animation_GetLastFrame(void* animation);
 | 
			
		||||
| 
						 | 
				
			
			@ -2504,8 +2504,8 @@ u32 func_8013A4C4(s32 flag);
 | 
			
		|||
s16 func_8013A504(s16 val);
 | 
			
		||||
s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos, Vec3s* rot, f32 distanceMin, f32 distanceMax, s16 angleError);
 | 
			
		||||
struct EnDoor* SubS_FindDoor(GlobalContext* globalCtx, s32 unk_1A5);
 | 
			
		||||
Gfx* func_8013A860(GlobalContext* globalCtx, s32 idx, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkActorDraw, Actor* actor, Mtx** mtx, Gfx* gfx);
 | 
			
		||||
Gfx* func_8013AB00(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkActorDraw, Actor* actor, Gfx* gfx);
 | 
			
		||||
Gfx* SubS_DrawTransformFlexLimb(GlobalContext* globalCtx, s32 idx, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, TransformLimbDraw transformLimbDraw, Actor* actor, Mtx** mtx, Gfx* gfx);
 | 
			
		||||
Gfx* SubS_DrawTransformFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, TransformLimbDraw transformLimbDraw, Actor* actor, Gfx* gfx);
 | 
			
		||||
s32 func_8013AD6C(GlobalContext* globalCtx);
 | 
			
		||||
s32 func_8013AD9C(s16 arg0, s16 arg1, Vec3f* arg2, Vec3s* arg3, s32 arg4, s32 arg5);
 | 
			
		||||
void func_8013AED4(u16* arg0, u16 arg1, u16 arg2);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,6 @@ struct Lights;
 | 
			
		|||
struct CollisionPoly;
 | 
			
		||||
 | 
			
		||||
struct EnBox;
 | 
			
		||||
struct EnDoor;
 | 
			
		||||
 | 
			
		||||
typedef void(*ActorFunc)(struct Actor* this, struct GlobalContext* globalCtx);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -204,26 +204,26 @@ typedef struct SkelAnime {
 | 
			
		|||
} SkelAnime; // size = 0x44
 | 
			
		||||
 | 
			
		||||
typedef s32 (*OverrideLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                   struct Actor* actor);
 | 
			
		||||
                                   struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
typedef void (*PostLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
 | 
			
		||||
                                struct Actor* actor);
 | 
			
		||||
                                struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                struct Actor* actor, Gfx** gfx);
 | 
			
		||||
                                struct Actor* thisx, Gfx** gfx);
 | 
			
		||||
 | 
			
		||||
typedef void (*PostLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
 | 
			
		||||
                             struct Actor* actor, Gfx** gfx);
 | 
			
		||||
                             struct Actor* thisx, Gfx** gfx);
 | 
			
		||||
 | 
			
		||||
typedef s32 (*OverrideLimbDrawFlex)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                    struct Actor* actor);
 | 
			
		||||
                                    struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
typedef void (*PostLimbDrawFlex)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot,
 | 
			
		||||
                                 struct Actor* actor);
 | 
			
		||||
                                 struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
typedef void (*UnkActorDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* actor);
 | 
			
		||||
typedef void (*TransformLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
typedef void (*UnkActorDraw)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* actor, Gfx** gfx);
 | 
			
		||||
typedef void (*TransformLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* thisx, Gfx** gfx);
 | 
			
		||||
 | 
			
		||||
typedef void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryData*);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ void SkelAnime_DrawLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** skele
 | 
			
		|||
    OPEN_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
    limb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limb = Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limbIndex++;
 | 
			
		||||
    rot = jointTable[limbIndex];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +94,7 @@ void SkelAnime_DrawLod(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTa
 | 
			
		|||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    rootLimb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
    rootLimb = Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
    pos.x = jointTable[0].x;
 | 
			
		||||
    pos.y = jointTable[0].y;
 | 
			
		||||
    pos.z = jointTable[0].z;
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +146,7 @@ void SkelAnime_DrawFlexLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** s
 | 
			
		|||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    limb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limb = Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limbIndex++;
 | 
			
		||||
 | 
			
		||||
    rot = jointTable[limbIndex];
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +203,7 @@ void SkelAnime_DrawFlexLod(GlobalContext* globalCtx, void** skeleton, Vec3s* joi
 | 
			
		|||
    Gfx* limbDList;
 | 
			
		||||
    Vec3f pos;
 | 
			
		||||
    Vec3s rot;
 | 
			
		||||
    Mtx* mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
    Mtx* mtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
 | 
			
		||||
    if (skeleton == NULL) {
 | 
			
		||||
        return;
 | 
			
		||||
| 
						 | 
				
			
			@ -214,7 +214,7 @@ void SkelAnime_DrawFlexLod(GlobalContext* globalCtx, void** skeleton, Vec3s* joi
 | 
			
		|||
    gSPSegment(POLY_OPA_DISP++, 0x0D, mtx);
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    rootLimb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
    rootLimb = Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
    pos.x = jointTable[0].x;
 | 
			
		||||
    pos.y = jointTable[0].y;
 | 
			
		||||
    pos.z = jointTable[0].z;
 | 
			
		||||
| 
						 | 
				
			
			@ -266,7 +266,7 @@ void SkelAnime_DrawLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skele
 | 
			
		|||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limb = Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limbIndex++;
 | 
			
		||||
    rot = jointTable[limbIndex];
 | 
			
		||||
    pos.x = limb->jointPos.x;
 | 
			
		||||
| 
						 | 
				
			
			@ -421,7 +421,7 @@ void SkelAnime_DrawFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* joi
 | 
			
		|||
    Gfx* limbDList;
 | 
			
		||||
    Vec3f pos;
 | 
			
		||||
    Vec3s rot;
 | 
			
		||||
    Mtx* mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
    Mtx* mtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
 | 
			
		||||
    if (skeleton == NULL) {
 | 
			
		||||
        return;
 | 
			
		||||
| 
						 | 
				
			
			@ -473,9 +473,9 @@ void SkelAnime_DrawFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* joi
 | 
			
		|||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable,
 | 
			
		||||
                   OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDrawOpa unkDraw,
 | 
			
		||||
                   Actor* actor, Mtx** mtx) {
 | 
			
		||||
void SkelAnime_DrawTransformFlexLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable,
 | 
			
		||||
                                        OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw,
 | 
			
		||||
                                        TransformLimbDrawOpa transformLimbDraw, Actor* actor, Mtx** mtx) {
 | 
			
		||||
    StandardLimb* limb;
 | 
			
		||||
    Gfx* newDList;
 | 
			
		||||
    Gfx* limbDList;
 | 
			
		||||
| 
						 | 
				
			
			@ -486,7 +486,7 @@ void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec
 | 
			
		|||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limb = Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limbIndex++;
 | 
			
		||||
 | 
			
		||||
    rot = jointTable[limbIndex];
 | 
			
		||||
| 
						 | 
				
			
			@ -500,8 +500,8 @@ void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec
 | 
			
		|||
        Matrix_JointPosition(&pos, &rot);
 | 
			
		||||
        Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
        //! @bug Does not check unkDraw is not NULL before calling it.
 | 
			
		||||
        unkDraw(globalCtx, limbIndex, actor);
 | 
			
		||||
        transformLimbDraw(globalCtx, limbIndex, actor);
 | 
			
		||||
 | 
			
		||||
        if (newDList != NULL) {
 | 
			
		||||
            Gfx* polyTemp = POLY_OPA_DISP;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -523,23 +523,32 @@ void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (limb->child != LIMB_DONE) {
 | 
			
		||||
        func_80134148(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, unkDraw, actor,
 | 
			
		||||
                      mtx);
 | 
			
		||||
        SkelAnime_DrawTransformFlexLimbOpa(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw,
 | 
			
		||||
                                           transformLimbDraw, actor, mtx);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Matrix_StatePop();
 | 
			
		||||
 | 
			
		||||
    if (limb->sibling != LIMB_DONE) {
 | 
			
		||||
        func_80134148(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, unkDraw, actor,
 | 
			
		||||
                      mtx);
 | 
			
		||||
        SkelAnime_DrawTransformFlexLimbOpa(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw,
 | 
			
		||||
                                           postLimbDraw, transformLimbDraw, actor, mtx);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount,
 | 
			
		||||
                   OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDrawOpa unkDraw,
 | 
			
		||||
                   Actor* actor) {
 | 
			
		||||
/**
 | 
			
		||||
 * Draw all limbs of type `StandardLimb` in a given flexible skeleton to the polyOpa buffer
 | 
			
		||||
 * Limbs in a flexible skeleton have meshes that can stretch to line up with other limbs.
 | 
			
		||||
 * An array of matrices is dynamically allocated so each limb can access any transform to ensure its meshes line up.
 | 
			
		||||
 *
 | 
			
		||||
 * Also makes use of a `TransformLimbDraw`, which transforms limbs based on world coordinates, as opposed to local limb
 | 
			
		||||
 * coordinates.
 | 
			
		||||
 * Note that the `TransformLimbDraw` does not have a NULL check, so must be provided even if empty.
 | 
			
		||||
 */
 | 
			
		||||
void SkelAnime_DrawTransformFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount,
 | 
			
		||||
                                    OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw,
 | 
			
		||||
                                    TransformLimbDrawOpa transformLimbDraw, Actor* actor) {
 | 
			
		||||
    StandardLimb* rootLimb;
 | 
			
		||||
    s32 pad;
 | 
			
		||||
    Gfx* newDList;
 | 
			
		||||
| 
						 | 
				
			
			@ -554,13 +563,13 @@ void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable,
 | 
			
		|||
 | 
			
		||||
    OPEN_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
 | 
			
		||||
    mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
    mtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x0D, mtx);
 | 
			
		||||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    rootLimb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
    rootLimb = Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
 | 
			
		||||
    pos.x = jointTable[0].x;
 | 
			
		||||
    pos.y = jointTable[0].y;
 | 
			
		||||
| 
						 | 
				
			
			@ -573,8 +582,7 @@ void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable,
 | 
			
		|||
        Matrix_JointPosition(&pos, &rot);
 | 
			
		||||
        Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
        //! @bug Does not check unkDraw is not NULL before calling it.
 | 
			
		||||
        unkDraw(globalCtx, 1, actor);
 | 
			
		||||
        transformLimbDraw(globalCtx, 1, actor);
 | 
			
		||||
 | 
			
		||||
        if (newDList != NULL) {
 | 
			
		||||
            Gfx* polyTemp = POLY_OPA_DISP;
 | 
			
		||||
| 
						 | 
				
			
			@ -596,8 +604,8 @@ void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable,
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (rootLimb->child != LIMB_DONE) {
 | 
			
		||||
        func_80134148(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, unkDraw, actor,
 | 
			
		||||
                      &mtx);
 | 
			
		||||
        SkelAnime_DrawTransformFlexLimbOpa(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw,
 | 
			
		||||
                                           postLimbDraw, transformLimbDraw, actor, &mtx);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Matrix_StatePop();
 | 
			
		||||
| 
						 | 
				
			
			@ -655,7 +663,7 @@ Gfx* SkelAnime_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton
 | 
			
		|||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limb = Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limbIndex++;
 | 
			
		||||
 | 
			
		||||
    rot = jointTable[limbIndex];
 | 
			
		||||
| 
						 | 
				
			
			@ -711,7 +719,7 @@ Gfx* SkelAnime_Draw(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable
 | 
			
		|||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    rootLimb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
    rootLimb = Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
 | 
			
		||||
    pos.x = jointTable[0].x;
 | 
			
		||||
    pos.y = jointTable[0].y;
 | 
			
		||||
| 
						 | 
				
			
			@ -758,7 +766,7 @@ Gfx* SkelAnime_DrawFlexLimb(GlobalContext* globalCtx, s32 limbIndex, void** skel
 | 
			
		|||
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
    limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limb = Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limbIndex++;
 | 
			
		||||
    rot = jointTable[limbIndex];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -821,7 +829,7 @@ Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointT
 | 
			
		|||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
    mtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount));
 | 
			
		||||
 | 
			
		||||
    gSPSegment(gfx++, 0x0D, mtx);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -994,7 +1002,7 @@ void AnimationContext_SetLoadFrame(GlobalContext* globalCtx, LinkAnimationHeader
 | 
			
		|||
    AnimationEntry* entry = AnimationContext_AddEntry(&globalCtx->animationCtx, ANIMATION_LINKANIMETION);
 | 
			
		||||
 | 
			
		||||
    if (entry != NULL) {
 | 
			
		||||
        LinkAnimationHeader* linkAnimHeader = (LinkAnimationHeader*)Lib_SegmentedToVirtual(animation);
 | 
			
		||||
        LinkAnimationHeader* linkAnimHeader = Lib_SegmentedToVirtual(animation);
 | 
			
		||||
        u32 ram = frameTable;
 | 
			
		||||
 | 
			
		||||
        osCreateMesgQueue(&entry->data.load.msgQueue, &entry->data.load.msg, 1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,9 +36,119 @@ EnDoor* SubS_FindDoor(GlobalContext* globalCtx, s32 unk_1A5) {
 | 
			
		|||
    return door;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sub_s/func_8013A860.s")
 | 
			
		||||
Gfx* SubS_DrawTransformFlexLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable,
 | 
			
		||||
                                OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw,
 | 
			
		||||
                                TransformLimbDraw transformLimbDraw, Actor* actor, Mtx** mtx, Gfx* gfx) {
 | 
			
		||||
    StandardLimb* limb;
 | 
			
		||||
    Gfx* newDList;
 | 
			
		||||
    Gfx* limbDList;
 | 
			
		||||
    Vec3f pos;
 | 
			
		||||
    Vec3s rot;
 | 
			
		||||
 | 
			
		||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sub_s/func_8013AB00.s")
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
    limb = Lib_SegmentedToVirtual(skeleton[limbIndex]);
 | 
			
		||||
    limbIndex++;
 | 
			
		||||
    rot = jointTable[limbIndex];
 | 
			
		||||
    pos.x = limb->jointPos.x;
 | 
			
		||||
    pos.y = limb->jointPos.y;
 | 
			
		||||
    pos.z = limb->jointPos.z;
 | 
			
		||||
    newDList = limbDList = limb->dList;
 | 
			
		||||
 | 
			
		||||
    if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, limbIndex, &newDList, &pos, &rot, actor, &gfx)) {
 | 
			
		||||
        Matrix_JointPosition(&pos, &rot);
 | 
			
		||||
        Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
        transformLimbDraw(globalCtx, limbIndex, actor, &gfx);
 | 
			
		||||
 | 
			
		||||
        if (newDList != NULL) {
 | 
			
		||||
            Matrix_ToMtx(*mtx);
 | 
			
		||||
            gSPMatrix(gfx++, *mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
 | 
			
		||||
            gSPDisplayList(gfx++, newDList);
 | 
			
		||||
            (*mtx)++;
 | 
			
		||||
        } else if (limbDList != NULL) {
 | 
			
		||||
            Matrix_ToMtx(*mtx);
 | 
			
		||||
            (*mtx)++;
 | 
			
		||||
        }
 | 
			
		||||
        Matrix_StatePop();
 | 
			
		||||
    }
 | 
			
		||||
    if (postLimbDraw != NULL) {
 | 
			
		||||
        postLimbDraw(globalCtx, limbIndex, &limbDList, &rot, actor, &gfx);
 | 
			
		||||
    }
 | 
			
		||||
    if (limb->child != LIMB_DONE) {
 | 
			
		||||
        gfx = SubS_DrawTransformFlexLimb(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw,
 | 
			
		||||
                                         transformLimbDraw, actor, mtx, gfx);
 | 
			
		||||
    }
 | 
			
		||||
    Matrix_StatePop();
 | 
			
		||||
    if (limb->sibling != LIMB_DONE) {
 | 
			
		||||
        gfx = SubS_DrawTransformFlexLimb(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw,
 | 
			
		||||
                                         transformLimbDraw, actor, mtx, gfx);
 | 
			
		||||
    }
 | 
			
		||||
    return gfx;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Draw all limbs of type `StandardLimb` in a given flexible skeleton
 | 
			
		||||
 * Limbs in a flexible skeleton have meshes that can stretch to line up with other limbs.
 | 
			
		||||
 * An array of matrices is dynamically allocated so each limb can access any transform to ensure its meshes line up.
 | 
			
		||||
 *
 | 
			
		||||
 * Also makes use of a `TransformLimbDraw`, which transforms limbs based on world coordinates, as opposed to local limb
 | 
			
		||||
 * coordinates.
 | 
			
		||||
 * Note that the `TransformLimbDraw` does not have a NULL check, so must be provided even if empty.
 | 
			
		||||
 */
 | 
			
		||||
Gfx* SubS_DrawTransformFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount,
 | 
			
		||||
                            OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw,
 | 
			
		||||
                            TransformLimbDraw transformLimbDraw, Actor* actor, Gfx* gfx) {
 | 
			
		||||
    StandardLimb* rootLimb;
 | 
			
		||||
    s32 pad;
 | 
			
		||||
    Gfx* newDlist;
 | 
			
		||||
    Gfx* limbDList;
 | 
			
		||||
    Vec3f pos;
 | 
			
		||||
    Vec3s rot;
 | 
			
		||||
    Mtx* mtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(dListCount * sizeof(Mtx)));
 | 
			
		||||
 | 
			
		||||
    if (skeleton == NULL) {
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gSPSegment(gfx++, 0x0D, mtx);
 | 
			
		||||
    Matrix_StatePush();
 | 
			
		||||
    rootLimb = Lib_SegmentedToVirtual(skeleton[0]);
 | 
			
		||||
    pos.x = jointTable->x;
 | 
			
		||||
    pos.y = jointTable->y;
 | 
			
		||||
    pos.z = jointTable->z;
 | 
			
		||||
    rot = jointTable[1];
 | 
			
		||||
    newDlist = rootLimb->dList;
 | 
			
		||||
    limbDList = rootLimb->dList;
 | 
			
		||||
 | 
			
		||||
    if (overrideLimbDraw == NULL || !overrideLimbDraw(globalCtx, 1, &newDlist, &pos, &rot, actor, &gfx)) {
 | 
			
		||||
        Matrix_JointPosition(&pos, &rot);
 | 
			
		||||
        Matrix_StatePush();
 | 
			
		||||
 | 
			
		||||
        transformLimbDraw(globalCtx, 1, actor, &gfx);
 | 
			
		||||
 | 
			
		||||
        if (newDlist != NULL) {
 | 
			
		||||
            Matrix_ToMtx(mtx);
 | 
			
		||||
            gSPMatrix(gfx++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
 | 
			
		||||
            gSPDisplayList(gfx++, newDlist);
 | 
			
		||||
            mtx++;
 | 
			
		||||
        } else if (limbDList != NULL) {
 | 
			
		||||
            Matrix_ToMtx(mtx);
 | 
			
		||||
            mtx++;
 | 
			
		||||
        }
 | 
			
		||||
        Matrix_StatePop();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (postLimbDraw != NULL) {
 | 
			
		||||
        postLimbDraw(globalCtx, 1, &limbDList, &rot, actor, &gfx);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (rootLimb->child != LIMB_DONE) {
 | 
			
		||||
        gfx = SubS_DrawTransformFlexLimb(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw,
 | 
			
		||||
                                         postLimbDraw, transformLimbDraw, actor, &mtx, gfx);
 | 
			
		||||
    }
 | 
			
		||||
    Matrix_StatePop();
 | 
			
		||||
    return gfx;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sub_s/func_8013AD6C.s")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,13 +91,13 @@ void DmNb_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DmNb_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void DmNb_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DmNb_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
    DmNb* this = THIS;
 | 
			
		||||
 | 
			
		||||
    func_8012C5B0(globalCtx->state.gfxCtx);
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL,
 | 
			
		||||
                  NULL, DmNb_UnkActorDraw, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, NULL, NULL, DmNb_TransformLimbDraw, &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,14 +74,14 @@ void DmSa_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    this->actionFunc(this, globalCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_80A2EB10(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor) {
 | 
			
		||||
    return 0;
 | 
			
		||||
s32 DmSa_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80A2EB2C(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor) {
 | 
			
		||||
void DmSa_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80A2EB44(GlobalContext* globalCtx, s32 limbIndex, Actor* actor) {
 | 
			
		||||
void DmSa_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Gfx* func_80A2EB58(GraphicsContext* gfxCtx, u32 alpha) {
 | 
			
		||||
| 
						 | 
				
			
			@ -120,8 +120,9 @@ void DmSa_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
        gSPSegment(POLY_OPA_DISP++, 0x0C, func_80A2EBB0(globalCtx->state.gfxCtx, this->alpha));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  func_80A2EB10, func_80A2EB2C, func_80A2EB44, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, DmSa_OverrideLimbDraw, DmSa_PostLimbDraw,
 | 
			
		||||
                                   DmSa_TransformLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1670,13 +1670,13 @@ s32 EnAkindonuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx**
 | 
			
		|||
            *dList = object_dnt_DL_008290;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnAkindonuts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnAkindonuts_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnAkindonuts_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnAkindonuts* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (((this->unk_33E == 1) || (this->unk_33E == 2)) && ((limbIndex == 23) || (limbIndex == 24))) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1696,6 +1696,7 @@ void EnAkindonuts_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    EnAkindonuts* this = THIS;
 | 
			
		||||
 | 
			
		||||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  EnAkindonuts_OverrideLimbDraw, EnAkindonuts_PostLimbDraw, EnAkindonuts_UnkActorDraw, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, EnAkindonuts_OverrideLimbDraw, EnAkindonuts_PostLimbDraw,
 | 
			
		||||
                                   EnAkindonuts_TransformLimbDraw, &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -979,7 +979,7 @@ void EnAob01_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
s32 EnAob01_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                             Actor* thisx) {
 | 
			
		||||
    EnAob01* this = THIS;
 | 
			
		||||
    UNK_TYPE sp38[] = {
 | 
			
		||||
    TexturePtr sp38[] = {
 | 
			
		||||
        &object_aob_Tex_000658,
 | 
			
		||||
        &object_aob_Tex_000E58,
 | 
			
		||||
        &object_aob_Tex_001658,
 | 
			
		||||
| 
						 | 
				
			
			@ -1023,7 +1023,7 @@ void EnAob01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnAob01_UnkDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnAob01_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnAob01_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1040,8 +1040,9 @@ void EnAob01_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_EnvColor(globalCtx->state.gfxCtx, 50, 80, 0, 0));
 | 
			
		||||
    gDPPipeSync(POLY_OPA_DISP++);
 | 
			
		||||
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  EnAob01_OverrideLimbDraw, EnAob01_PostLimbDraw, EnAob01_UnkDraw, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, EnAob01_OverrideLimbDraw, EnAob01_PostLimbDraw,
 | 
			
		||||
                                   EnAob01_TransformLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    if (this->actor.draw != NULL) {
 | 
			
		||||
        func_8012C2DC(globalCtx->state.gfxCtx);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1223,19 +1223,19 @@ void EnBigpo_UpdateFire(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    this->actionFunc(this, globalCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 EnBigpo_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor,
 | 
			
		||||
s32 EnBigpo_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
 | 
			
		||||
                             Gfx** gfx) {
 | 
			
		||||
    EnBigpo* this = (EnBigpo*)actor;
 | 
			
		||||
    EnBigpo* this = THIS;
 | 
			
		||||
    // not fully invisible
 | 
			
		||||
    if (!(this->mainColor.a != 0 && limbIndex != 7) ||
 | 
			
		||||
        (this->actionFunc == EnBigpo_BurnAwayDeath && this->idleTimer >= 2)) {
 | 
			
		||||
        *dList = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnBigpo_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor, Gfx** gfx) {
 | 
			
		||||
    EnBigpo* this = (EnBigpo*)actor;
 | 
			
		||||
void EnBigpo_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
    EnBigpo* this = THIS;
 | 
			
		||||
    s8 limbByte;
 | 
			
		||||
    Vec3f* v1ptr; // todo: figure out better names
 | 
			
		||||
    Vec3f* v2ptr;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,8 +26,9 @@ void func_809CD6C0(EnBji01* this, GlobalContext* globalCtx);
 | 
			
		|||
void func_809CD70C(EnBji01* this, GlobalContext* globalCtx);
 | 
			
		||||
void func_809CD77C(EnBji01* this, GlobalContext* globalCtx);
 | 
			
		||||
 | 
			
		||||
s32 EnBji01_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg);
 | 
			
		||||
void EnBji01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg);
 | 
			
		||||
s32 EnBji01_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                             Actor* thisx);
 | 
			
		||||
void EnBji01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
 | 
			
		||||
 | 
			
		||||
extern AnimationHeader D_06000FDC;
 | 
			
		||||
extern AnimationHeader D_06005B58;
 | 
			
		||||
| 
						 | 
				
			
			@ -441,7 +442,7 @@ void EnBji01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void EnBji01_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
    static void* sEyeTextures[] = { D_060049F0, D_06004E70, D_06005270 };
 | 
			
		||||
    static TexturePtr sEyeTextures[] = { D_060049F0, D_06004E70, D_06005270 };
 | 
			
		||||
    EnBji01* this = THIS;
 | 
			
		||||
 | 
			
		||||
    OPEN_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -582,8 +582,8 @@ void EnDai_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_80B3F598(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
 | 
			
		||||
                  Gfx** gfx) {
 | 
			
		||||
s32 EnDai_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
 | 
			
		||||
                           Gfx** gfx) {
 | 
			
		||||
    EnDai* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (!(this->unk_1CE & 0x40)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -598,10 +598,10 @@ s32 func_80B3F598(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
 | 
			
		|||
        *dList = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80B3F614(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
void EnDai_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
    static Vec3f D_80B3FE4C = { 0.0f, 0.0f, 0.0f };
 | 
			
		||||
 | 
			
		||||
    EnDai* this = THIS;
 | 
			
		||||
| 
						 | 
				
			
			@ -626,10 +626,10 @@ void func_80B3F614(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s*
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80B3F6EC(GlobalContext* globalCtx, s32 arg1, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
void EnDai_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
    EnDai* this = THIS;
 | 
			
		||||
 | 
			
		||||
    switch (arg1) {
 | 
			
		||||
    switch (limbIndex) {
 | 
			
		||||
        case 9:
 | 
			
		||||
            if (this->unk_1CE & 0x100) {
 | 
			
		||||
                func_80B3EC84(this);
 | 
			
		||||
| 
						 | 
				
			
			@ -669,9 +669,9 @@ void func_80B3F78C(EnDai* this, GlobalContext* globalCtx) {
 | 
			
		|||
    gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, 255);
 | 
			
		||||
    gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3FE58[this->unk_1D6]));
 | 
			
		||||
 | 
			
		||||
    POLY_XLU_DISP =
 | 
			
		||||
        func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                      func_80B3F598, func_80B3F614, func_80B3F6EC, &this->actor, POLY_XLU_DISP);
 | 
			
		||||
    POLY_XLU_DISP = SubS_DrawTransformFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                           this->skelAnime.dListCount, EnDai_OverrideLimbDraw, EnDai_PostLimbDraw,
 | 
			
		||||
                                           EnDai_TransformLimbDraw, &this->actor, POLY_XLU_DISP);
 | 
			
		||||
    if (this->unk_1CE & 0x40) {
 | 
			
		||||
        Matrix_SetCurrentState(&this->unk_18C);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -701,9 +701,9 @@ void func_80B3F920(EnDai* this, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
        gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3FE70[this->unk_1D6]));
 | 
			
		||||
 | 
			
		||||
        POLY_OPA_DISP =
 | 
			
		||||
            func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          func_80B3F598, func_80B3F614, func_80B3F6EC, &this->actor, POLY_OPA_DISP);
 | 
			
		||||
        POLY_OPA_DISP = SubS_DrawTransformFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                               this->skelAnime.dListCount, EnDai_OverrideLimbDraw, EnDai_PostLimbDraw,
 | 
			
		||||
                                               EnDai_TransformLimbDraw, &this->actor, POLY_OPA_DISP);
 | 
			
		||||
        Matrix_SetCurrentState(&this->unk_18C);
 | 
			
		||||
 | 
			
		||||
        gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
 | 
			
		||||
| 
						 | 
				
			
			@ -720,9 +720,9 @@ void func_80B3F920(EnDai* this, GlobalContext* globalCtx) {
 | 
			
		|||
        gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, this->unk_1CD);
 | 
			
		||||
        gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3FE70[this->unk_1D6]));
 | 
			
		||||
 | 
			
		||||
        POLY_XLU_DISP =
 | 
			
		||||
            func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          func_80B3F598, func_80B3F614, func_80B3F6EC, &this->actor, POLY_XLU_DISP);
 | 
			
		||||
        POLY_XLU_DISP = SubS_DrawTransformFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                               this->skelAnime.dListCount, EnDai_OverrideLimbDraw, EnDai_PostLimbDraw,
 | 
			
		||||
                                               EnDai_TransformLimbDraw, &this->actor, POLY_XLU_DISP);
 | 
			
		||||
        Matrix_SetCurrentState(&this->unk_18C);
 | 
			
		||||
 | 
			
		||||
        gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -296,7 +296,8 @@ void EnDaiku_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_80943E18(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
s32 EnDaiku_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                             Actor* thisx) {
 | 
			
		||||
    EnDaiku* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 15) {
 | 
			
		||||
| 
						 | 
				
			
			@ -304,10 +305,10 @@ s32 func_80943E18(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
 | 
			
		|||
        rot->z += this->unk_25E;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80943E60(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnDaiku_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    static Gfx* D_809440D4[] = { D_060070C0, D_06006FB0, D_06006E80, D_06006D70 };
 | 
			
		||||
    EnDaiku* this = THIS;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -354,7 +355,7 @@ void EnDaiku_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          func_80943E18, func_80943E60, &this->actor);
 | 
			
		||||
                          EnDaiku_OverrideLimbDraw, EnDaiku_PostLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -671,7 +671,8 @@ void EnDekunuts_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_808BEBD0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
s32 EnDekunuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                Actor* thisx) {
 | 
			
		||||
    EnDekunuts* this = THIS;
 | 
			
		||||
    f32 arg1, arg2, arg3;
 | 
			
		||||
    f32 currentFrame;
 | 
			
		||||
| 
						 | 
				
			
			@ -700,10 +701,10 @@ s32 func_808BEBD0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
 | 
			
		|||
            rot->z = this->actor.world.rot.x;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_808BED30(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnDekunuts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    static s8 D_808BEF98[] = {
 | 
			
		||||
        -1, -1, -1, 3, -1, 0, -1, 1, -1, 2, 0, 0,
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			@ -739,8 +740,8 @@ void func_808BED30(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s*
 | 
			
		|||
void EnDekunuts_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
    EnDekunuts* this = THIS;
 | 
			
		||||
 | 
			
		||||
    SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, func_808BEBD0, func_808BED30,
 | 
			
		||||
                      &this->actor);
 | 
			
		||||
    SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnDekunuts_OverrideLimbDraw,
 | 
			
		||||
                      EnDekunuts_PostLimbDraw, &this->actor);
 | 
			
		||||
    Matrix_SetStateRotationAndTranslation(this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z,
 | 
			
		||||
                                          &this->actor.home.rot);
 | 
			
		||||
    Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1174,11 +1174,11 @@ void EnDg_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_8098BFB8(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    return 0;
 | 
			
		||||
s32 EnDg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_8098BFD4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnDg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnDg* this = THIS;
 | 
			
		||||
    Vec3f sp20 = { 0.0f, 20.0f, 0.0f };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1231,7 +1231,7 @@ void EnDg_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    Matrix_RotateY(this->actor.shape.rot.y, MTXMODE_APPLY);
 | 
			
		||||
    Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY);
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          func_8098BFB8, func_8098BFD4, &this->actor);
 | 
			
		||||
                          EnDg_OverrideLimbDraw, EnDg_PostLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -456,10 +456,10 @@ s32 func_80B3D974(s16 arg0, s16 arg1, Vec3f* arg2, Vec3s* arg3, s32 arg4, s32 ar
 | 
			
		|||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80B3DA88(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnDnp_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80B3DAA0(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnDnp_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnDnp* this = THIS;
 | 
			
		||||
    s32 phi_v1 = 1;
 | 
			
		||||
    s32 phi_v0;
 | 
			
		||||
| 
						 | 
				
			
			@ -504,8 +504,9 @@ void EnDnp_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
        gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3DEAC[this->unk_336]));
 | 
			
		||||
 | 
			
		||||
        func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL,
 | 
			
		||||
                      func_80B3DA88, func_80B3DAA0, &this->actor);
 | 
			
		||||
        SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                       this->skelAnime.dListCount, NULL, EnDnp_PostLimbDraw, EnDnp_TransformLimbDraw,
 | 
			
		||||
                                       &this->actor);
 | 
			
		||||
 | 
			
		||||
        CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ void EnEndingHero_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_80C1E984[index]));
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          0, 0, &this->actor);
 | 
			
		||||
                          NULL, NULL, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,5 +71,5 @@ void EnEndingHero2_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    func_8012C2DC(globalCtx->state.gfxCtx);
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          0, 0, &this->actor);
 | 
			
		||||
                          NULL, NULL, &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,5 +71,5 @@ void EnEndingHero3_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    func_8012C2DC(globalCtx->state.gfxCtx);
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          0, 0, &this->actor);
 | 
			
		||||
                          NULL, NULL, &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,5 +71,5 @@ void EnEndingHero4_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    func_8012C2DC(globalCtx->state.gfxCtx);
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          0, 0, &this->actor);
 | 
			
		||||
                          NULL, NULL, &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ void EnEndingHero5_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
Gfx* D_80C23BF0[] = { D_060070C0, D_06006FB0, D_06006E80, D_06006D70, D_0600A390 };
 | 
			
		||||
 | 
			
		||||
void func_80C23A30(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnEndingHero5_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnEndingHero5* this = THIS;
 | 
			
		||||
 | 
			
		||||
    OPEN_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ void EnEndingHero5_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          NULL, func_80C23A30, &this->actor);
 | 
			
		||||
                          NULL, EnEndingHero5_PostLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -360,8 +360,8 @@ void EnFg_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_80A2D348(this, globalCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 EnFg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnFg* this = (EnFg*)arg;
 | 
			
		||||
s32 EnFg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnFg* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if ((limbIndex == 7) || (limbIndex == 8)) {
 | 
			
		||||
        *dList = NULL;
 | 
			
		||||
| 
						 | 
				
			
			@ -372,11 +372,11 @@ s32 EnFg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
 | 
			
		|||
            *dList = NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnFg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnFg* this = (EnFg*)arg;
 | 
			
		||||
void EnFg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnFg* this = THIS;
 | 
			
		||||
    s16 pad;
 | 
			
		||||
    Vec3f vec1 = { 0.0f, 0.0f, 0.0f };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4228,7 +4228,7 @@ s32 EnFishing_LoachOverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx
 | 
			
		|||
        rot->y += this->unk_1C4[2];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnFishing_LoachPostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1585,7 +1585,7 @@ s32 EnFsn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
 | 
			
		|||
    if (limbIndex == 17) {
 | 
			
		||||
        *dList = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnFsn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1604,7 +1604,7 @@ void EnFsn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void EnFsn_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
    static void* sEyeTextures[] = { &D_06005BC0, &D_06006D40, &D_06007140 };
 | 
			
		||||
    static TexturePtr sEyeTextures[] = { &D_06005BC0, &D_06006D40, &D_06007140 };
 | 
			
		||||
    EnFsn* this = THIS;
 | 
			
		||||
    s32 pad;
 | 
			
		||||
    s16 i;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -966,7 +966,7 @@ void EnGeg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnGeg_UnkDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnGeg_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnGeg* this = THIS;
 | 
			
		||||
    s32 phi_v0;
 | 
			
		||||
    s32 phi_v1;
 | 
			
		||||
| 
						 | 
				
			
			@ -1039,8 +1039,9 @@ void func_80BB3BE0(EnGeg* this, GlobalContext* globalCtx) {
 | 
			
		|||
    gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80BB4088[this->unk_23E]));
 | 
			
		||||
    gDPPipeSync(POLY_OPA_DISP++);
 | 
			
		||||
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  EnGeg_OverrideLimbDraw, EnGeg_PostLimbDraw, EnGeg_UnkDraw, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, EnGeg_OverrideLimbDraw, EnGeg_PostLimbDraw,
 | 
			
		||||
                                   EnGeg_TransformLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -633,8 +633,8 @@ void EnGinkoMan_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
s32 EnGinkoMan_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                Actor* arg) {
 | 
			
		||||
    EnGinkoMan* this = (EnGinkoMan*)arg;
 | 
			
		||||
                                Actor* thisx) {
 | 
			
		||||
    EnGinkoMan* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 15) {
 | 
			
		||||
        *dList = D_0600B1D8;
 | 
			
		||||
| 
						 | 
				
			
			@ -650,10 +650,10 @@ s32 EnGinkoMan_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d
 | 
			
		|||
        Matrix_InsertZRotation_s(-this->limb8Rot.x, MTXMODE_APPLY);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnGinkoMan_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
void EnGinkoMan_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnGinkoMan_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1649,7 +1649,7 @@ void EnGm_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_809513AC(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
s32 EnGm_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    s32 pad;
 | 
			
		||||
    EnGm* this = THIS;
 | 
			
		||||
    s32 phi_v0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1684,7 +1684,7 @@ s32 func_809513AC(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
 | 
			
		|||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_809514BC(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnGm_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    static Vec3f D_80951E24 = { 1400.0f, 0.0f, 0.0f };
 | 
			
		||||
    EnGm* this = THIS;
 | 
			
		||||
    s32 pad[4];
 | 
			
		||||
| 
						 | 
				
			
			@ -1710,7 +1710,7 @@ void func_809514BC(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s*
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80951594(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnGm_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnGm* this = THIS;
 | 
			
		||||
    s32 phi_v0 = 1;
 | 
			
		||||
    s32 phi_v1 = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1762,8 +1762,9 @@ void EnGm_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
        gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80951E30[this->unk_3CE]));
 | 
			
		||||
 | 
			
		||||
        func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                      func_809513AC, func_809514BC, func_80951594, &this->actor);
 | 
			
		||||
        SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                       this->skelAnime.dListCount, EnGm_OverrideLimbDraw, EnGm_PostLimbDraw,
 | 
			
		||||
                                       EnGm_TransformLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
        CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1993,7 +1993,7 @@ s32 EnGo_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
 | 
			
		|||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnGo_UnkDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnGo_TransfromLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnGo* this = THIS;
 | 
			
		||||
    u16 temp_v0;
 | 
			
		||||
    s32 phi_v1;
 | 
			
		||||
| 
						 | 
				
			
			@ -2044,7 +2044,7 @@ void EnGo_UnkDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void func_80A15FEC(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
    static UNK_TYPE D_80A1670C[] = {
 | 
			
		||||
    static TexturePtr D_80A1670C[] = {
 | 
			
		||||
        &object_oF1d_map_Tex_010438, &object_oF1d_map_Tex_010C38, &object_oF1d_map_Tex_011038,
 | 
			
		||||
        &object_oF1d_map_Tex_010C38, &object_oF1d_map_Tex_010838,
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			@ -2060,8 +2060,9 @@ void func_80A15FEC(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
        if (this->unk_3DC == 14) {
 | 
			
		||||
            Matrix_InsertTranslation(0.0f, 0.0f, -4000.0f, MTXMODE_APPLY);
 | 
			
		||||
        }
 | 
			
		||||
        func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                      EnGo_OverrideLimbDraw, NULL, EnGo_UnkDraw, &this->actor);
 | 
			
		||||
        SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                       this->skelAnime.dListCount, EnGo_OverrideLimbDraw, NULL, EnGo_TransfromLimbDraw,
 | 
			
		||||
                                       &this->actor);
 | 
			
		||||
 | 
			
		||||
        CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,8 +27,8 @@ void func_80BCF6D0(EnHg* this, GlobalContext* globalCtx);
 | 
			
		|||
void func_80BCF8A0(EnHg* this, GlobalContext* globalCtx);
 | 
			
		||||
void func_80BCF93C(EnHg* this);
 | 
			
		||||
void func_80BCF95C(EnHg* this, GlobalContext* globalCtx);
 | 
			
		||||
s32 EnHg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg);
 | 
			
		||||
void EnHg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg);
 | 
			
		||||
s32 EnHg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
 | 
			
		||||
void EnHg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
 | 
			
		||||
 | 
			
		||||
extern AnimationHeader D_06000370;
 | 
			
		||||
extern AnimationHeader D_06001138;
 | 
			
		||||
| 
						 | 
				
			
			@ -401,7 +401,7 @@ void EnHg_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
s32 EnHg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnHg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -165,7 +165,7 @@ EnDoor* func_80BF1200(GlobalContext* globalCtx, s32 arg1) {
 | 
			
		|||
            phi_a1 = -1;
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
    return (EnDoor*)SubS_FindDoor(globalCtx, phi_a1);
 | 
			
		||||
    return SubS_FindDoor(globalCtx, phi_a1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80BF1258(EnIg* this) {
 | 
			
		||||
| 
						 | 
				
			
			@ -960,7 +960,7 @@ void EnIg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnIg_UnkDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
void EnIg_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
    EnIg* this = THIS;
 | 
			
		||||
    s32 phi_v0;
 | 
			
		||||
    s32 phi_v1;
 | 
			
		||||
| 
						 | 
				
			
			@ -1007,9 +1007,9 @@ void EnIg_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
        gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80BF3534[this->unk_3F2]));
 | 
			
		||||
 | 
			
		||||
        POLY_OPA_DISP =
 | 
			
		||||
            func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          EnIg_OverrideLimbDraw, EnIg_PostLimbDraw, EnIg_UnkDraw, &this->actor, POLY_OPA_DISP);
 | 
			
		||||
        POLY_OPA_DISP = SubS_DrawTransformFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                               this->skelAnime.dListCount, EnIg_OverrideLimbDraw, EnIg_PostLimbDraw,
 | 
			
		||||
                                               EnIg_TransformLimbDraw, &this->actor, POLY_OPA_DISP);
 | 
			
		||||
        Matrix_SetCurrentState(&this->unk_190);
 | 
			
		||||
 | 
			
		||||
        gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1525,7 +1525,7 @@ void func_808F6334(EnIn* this, GlobalContext* globalCtx) {
 | 
			
		|||
    this->unk4C4 = CLAMP(this->unk4C4, 0.0f, 80.0f);
 | 
			
		||||
 | 
			
		||||
    Matrix_InsertTranslation(this->unk4C4, 0.0f, 0.0f, MTXMODE_APPLY);
 | 
			
		||||
    if (this == (EnIn*)player->targetActor &&
 | 
			
		||||
    if (&this->actor == player->targetActor &&
 | 
			
		||||
        !(globalCtx->msgCtx.unk11F04 >= 0xFF && globalCtx->msgCtx.unk11F04 <= 0x200) && newUnk4C8 == 3 &&
 | 
			
		||||
        this->unk4C8 == 3) {
 | 
			
		||||
        if (!(globalCtx->state.frames & 1)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1537,8 +1537,8 @@ void func_808F6334(EnIn* this, GlobalContext* globalCtx) {
 | 
			
		|||
    this->unk4C8 = newUnk4C8;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 EnIn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnIn* this = (EnIn*)arg;
 | 
			
		||||
s32 EnIn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnIn* this = THIS;
 | 
			
		||||
    s32 pad;
 | 
			
		||||
    Gfx* sp50[] = {
 | 
			
		||||
        NULL,       NULL,       D_060149A8, D_06014AE0, D_06014C30, D_060145D8, D_06014710,
 | 
			
		||||
| 
						 | 
				
			
			@ -1598,8 +1598,8 @@ s32 EnIn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
 | 
			
		|||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnIn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnIn* this = (EnIn*)arg;
 | 
			
		||||
void EnIn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnIn* this = THIS;
 | 
			
		||||
    Vec3f sp50 = { 1600.0f, 0.0f, 0.0f };
 | 
			
		||||
    Vec3f sp44 = { 0.0f, 0.0f, 0.0f };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,8 @@ void EnKakasi_SetupSongTeach(EnKakasi* this, GlobalContext* globalCtx);
 | 
			
		|||
 | 
			
		||||
void EnKakasi_SetupDialogue(EnKakasi* this);
 | 
			
		||||
 | 
			
		||||
void EnKakasi_LimbDraw(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, struct Actor* actor);
 | 
			
		||||
void EnKakasi_PostLimbDraw(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
 | 
			
		||||
                           struct Actor* thisx);
 | 
			
		||||
 | 
			
		||||
static ColliderCylinderInit D_80971D80 = {
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			@ -1153,8 +1154,8 @@ void EnKakasi_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnKakasi_LimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor) {
 | 
			
		||||
    EnKakasi* this = (EnKakasi*)actor;
 | 
			
		||||
void EnKakasi_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnKakasi* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 4) {
 | 
			
		||||
        Matrix_MultiplyVector3fByState(&gZeroVec3f, &this->unk1BC);
 | 
			
		||||
| 
						 | 
				
			
			@ -1165,5 +1166,5 @@ void EnKakasi_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    EnKakasi* this = THIS;
 | 
			
		||||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelanime.skeleton, this->skelanime.jointTable, this->skelanime.dListCount,
 | 
			
		||||
                          NULL, EnKakasi_LimbDraw, &this->actor);
 | 
			
		||||
                          NULL, EnKakasi_PostLimbDraw, &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -523,8 +523,9 @@ void EnMaYts_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_80B8D12C(this, globalCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 EnMaYts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnMaYts* this = (EnMaYts*)arg;
 | 
			
		||||
s32 EnMaYts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                             Actor* thisx) {
 | 
			
		||||
    EnMaYts* this = THIS;
 | 
			
		||||
    Vec3s sp4;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == MA1_LIMB_HEAD) {
 | 
			
		||||
| 
						 | 
				
			
			@ -539,11 +540,11 @@ s32 EnMaYts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLis
 | 
			
		|||
        rot->z += sp4.x;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnMaYts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnMaYts* this = (EnMaYts*)arg;
 | 
			
		||||
void EnMaYts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnMaYts* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == MA1_LIMB_HEAD) {
 | 
			
		||||
        Matrix_GetStateTranslation(&this->actor.focus.pos);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -604,7 +604,7 @@ void EnMinifrog_UpdateMissingFrog(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
s32 EnMinifrog_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                                Actor* arg) {
 | 
			
		||||
                                Actor* thisx) {
 | 
			
		||||
    if (limbIndex == 1) {
 | 
			
		||||
        pos->z -= 500.0f;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -613,11 +613,11 @@ s32 EnMinifrog_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d
 | 
			
		|||
        *dList = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnMinifrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnMinifrog* this = (EnMinifrog*)arg;
 | 
			
		||||
void EnMinifrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnMinifrog* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if ((limbIndex == 7) || (limbIndex == 8)) {
 | 
			
		||||
        OPEN_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -906,7 +906,7 @@ void EnNiw_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 EnNiw_LimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
s32 EnNiw_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnNiw* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 13) {
 | 
			
		||||
| 
						 | 
				
			
			@ -925,7 +925,7 @@ s32 EnNiw_LimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f*
 | 
			
		|||
        rot->y += (s16)this->limb7Roty;
 | 
			
		||||
        rot->z += (s16)this->limb7Rotz;
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnNiw_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
| 
						 | 
				
			
			@ -933,7 +933,7 @@ void EnNiw_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelanime.skeleton, this->skelanime.jointTable, this->skelanime.dListCount,
 | 
			
		||||
                          EnNiw_LimbDraw, NULL, &this->actor);
 | 
			
		||||
                          EnNiw_OverrideLimbDraw, NULL, &this->actor);
 | 
			
		||||
    EnNiw_DrawFeathers(this, globalCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -553,7 +553,7 @@ s32 EnPamera_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi
 | 
			
		|||
        rot->x += this->limb9Rot.y;
 | 
			
		||||
        rot->z += this->limb9Rot.x;
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnPamera_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1387,8 +1387,8 @@ static s8 limbPosIndex[] = {
 | 
			
		|||
    -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, -1, 5, 6, -1, 7, 8, 9, -1, 10, -1, 11, -1, -1,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void EnPametfrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnPametfrog* this = (EnPametfrog*)arg;
 | 
			
		||||
void EnPametfrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnPametfrog* this = THIS;
 | 
			
		||||
    Vec3f vec;
 | 
			
		||||
    Vec3s* center;
 | 
			
		||||
    s8 index;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1809,8 +1809,8 @@ void EnPm_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_80AFAA04(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
 | 
			
		||||
                  Gfx** gfx) {
 | 
			
		||||
s32 EnPm_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
 | 
			
		||||
                          Gfx** gfx) {
 | 
			
		||||
    EnPm* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 15) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1819,7 +1819,7 @@ s32 func_80AFAA04(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
 | 
			
		|||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80AFAA44(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
void EnPm_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
    EnPm* this = THIS;
 | 
			
		||||
    s32 pad;
 | 
			
		||||
    Vec3f sp2C;
 | 
			
		||||
| 
						 | 
				
			
			@ -1854,7 +1854,7 @@ void func_80AFAA44(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s*
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80AFABAC(GlobalContext* globalCtx, s32 arg1, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
void EnPm_TransformLimbDraw(GlobalContext* globalCtx, s32 arg1, Actor* thisx, Gfx** gfx) {
 | 
			
		||||
    EnPm* this = THIS;
 | 
			
		||||
    s32 phi_v0;
 | 
			
		||||
    s32 phi_v1;
 | 
			
		||||
| 
						 | 
				
			
			@ -1901,9 +1901,9 @@ void EnPm_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
        gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80AFB914[0]));
 | 
			
		||||
 | 
			
		||||
        POLY_OPA_DISP =
 | 
			
		||||
            func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          func_80AFAA04, func_80AFAA44, func_80AFABAC, &this->actor, POLY_OPA_DISP);
 | 
			
		||||
        POLY_OPA_DISP = SubS_DrawTransformFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                               this->skelAnime.dListCount, EnPm_OverrideLimbDraw, EnPm_PostLimbDraw,
 | 
			
		||||
                                               EnPm_TransformLimbDraw, &this->actor, POLY_OPA_DISP);
 | 
			
		||||
 | 
			
		||||
        CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ void EnPoFusen_Pop(EnPoFusen* this, GlobalContext* globalCtx);
 | 
			
		|||
void EnPoFusen_Idle(EnPoFusen* this, GlobalContext* globalCtx);
 | 
			
		||||
void EnPoFusen_IdleFuse(EnPoFusen* this, GlobalContext* globalCtx);
 | 
			
		||||
s32 EnPoFusen_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                               Actor* arg);
 | 
			
		||||
                               Actor* thisx);
 | 
			
		||||
 | 
			
		||||
extern AnimationHeader D_06000040;
 | 
			
		||||
extern FlexSkeletonHeader D_060024F0;
 | 
			
		||||
| 
						 | 
				
			
			@ -271,8 +271,8 @@ void EnPoFusen_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
s32 EnPoFusen_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
 | 
			
		||||
                               Actor* arg) {
 | 
			
		||||
    EnPoFusen* this = (EnPoFusen*)arg;
 | 
			
		||||
                               Actor* thisx) {
 | 
			
		||||
    EnPoFusen* this = THIS;
 | 
			
		||||
    f32 zScale;
 | 
			
		||||
    f32 yScale;
 | 
			
		||||
    f32 xScale;
 | 
			
		||||
| 
						 | 
				
			
			@ -307,18 +307,19 @@ s32 EnPoFusen_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dL
 | 
			
		|||
        rot->y += (s16)(this->limb9Rot * Math_SinS(this->randBaseRotChange));
 | 
			
		||||
        rot->z += (s16)(this->limb9Rot * Math_CosS(this->randBaseRotChange));
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnPoFusen_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
void EnPoFusen_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnPoFusen_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnPoFusen_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnPoFusen_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
    EnPoFusen* this = THIS;
 | 
			
		||||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    func_801343C0(globalCtx, this->anime.skeleton, this->anime.jointTable, this->anime.dListCount,
 | 
			
		||||
                  EnPoFusen_OverrideLimbDraw, EnPoFusen_PostLimbDraw, EnPoFusen_UnkActorDraw, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->anime.skeleton, this->anime.jointTable, this->anime.dListCount,
 | 
			
		||||
                                   EnPoFusen_OverrideLimbDraw, EnPoFusen_PostLimbDraw, EnPoFusen_TransformLimbDraw,
 | 
			
		||||
                                   &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -200,7 +200,7 @@ s32 EnRecepgirl_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx**
 | 
			
		|||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnRecepgirl_UnkLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnRecepgirl_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnRecepgirl* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 5) {
 | 
			
		||||
| 
						 | 
				
			
			@ -217,8 +217,9 @@ void EnRecepgirl_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x08, sEyeTextures[this->eyeTexIndex]);
 | 
			
		||||
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  EnRecepgirl_OverrideLimbDraw, NULL, EnRecepgirl_UnkLimbDraw, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, EnRecepgirl_OverrideLimbDraw, NULL,
 | 
			
		||||
                                   EnRecepgirl_TransformLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,19 +68,19 @@ void EnRsn_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_800E9250(globalCtx, &this->actor, &this->unk1D8, &this->unk1DE, this->actor.focus.pos);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 EnRsn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnRsn* this = (EnRsn*)arg;
 | 
			
		||||
s32 EnRsn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnRsn* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 14) {
 | 
			
		||||
        Matrix_InsertXRotation_s(this->unk1D8.y, MTXMODE_APPLY);
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static Vec3f D_80C26028 = { 0.0f, 0.0f, 0.0f };
 | 
			
		||||
 | 
			
		||||
void EnRsn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) {
 | 
			
		||||
    EnRsn* this = (EnRsn*)arg;
 | 
			
		||||
void EnRsn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnRsn* this = THIS;
 | 
			
		||||
    Vec3f sp18 = D_80C26028;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 14) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1127,7 +1127,7 @@ s32 EnSellnuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d
 | 
			
		|||
void EnSellnuts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80ADD7CC(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnSellnuts_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnSellnuts* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (((this->unk_350 == 1) || (this->unk_350 == 3)) && ((limbIndex == 23) || (limbIndex == 24))) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1148,6 +1148,7 @@ void EnSellnuts_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    EnSellnuts* this = THIS;
 | 
			
		||||
 | 
			
		||||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  EnSellnuts_OverrideLimbDraw, EnSellnuts_PostLimbDraw, func_80ADD7CC, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, EnSellnuts_OverrideLimbDraw, EnSellnuts_PostLimbDraw,
 | 
			
		||||
                                   EnSellnuts_TransformLimbDraw, &this->actor);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1525,7 +1525,7 @@ void EnSuttari_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnSuttari_UnkDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnSuttari_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnSuttari_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1540,8 +1540,9 @@ void EnSuttari_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
        gSPSegment(POLY_OPA_DISP++, 0x08, Gfx_EnvColor(globalCtx->state.gfxCtx, 255, 255, 255, 0));
 | 
			
		||||
        gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_EnvColor(globalCtx->state.gfxCtx, 55, 55, 255, 0));
 | 
			
		||||
        gDPPipeSync(POLY_OPA_DISP++);
 | 
			
		||||
        func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                      EnSuttari_OverrideLimbDraw, EnSuttari_PostLimbDraw, EnSuttari_UnkDraw, &this->actor);
 | 
			
		||||
        SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                       this->skelAnime.dListCount, EnSuttari_OverrideLimbDraw, EnSuttari_PostLimbDraw,
 | 
			
		||||
                                       EnSuttari_TransformLimbDraw, &this->actor);
 | 
			
		||||
        if (this->flags1 & 0x80) {
 | 
			
		||||
            func_8012C2DC(globalCtx->state.gfxCtx);
 | 
			
		||||
            sp5C = this->actor.world.pos;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1344,7 +1344,7 @@ void func_80AEF5F4(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    this->actionFunc(this, globalCtx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_80AEF65C(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
s32 EnTk_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnTk* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 16) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1354,7 +1354,7 @@ s32 func_80AEF65C(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
 | 
			
		|||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80AEF6A4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnTk_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    static Vec3f D_80AEFA84 = { 0.0f, 0.0f, 4600.0f };
 | 
			
		||||
    EnTk* this = THIS;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1394,7 +1394,7 @@ void EnTk_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
    Matrix_RotateY(this->unk_318, MTXMODE_APPLY);
 | 
			
		||||
    SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                          func_80AEF65C, func_80AEF6A4, &this->actor);
 | 
			
		||||
                          EnTk_OverrideLimbDraw, EnTk_PostLimbDraw, &this->actor);
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1746,7 +1746,7 @@ s32 EnTrt_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
 | 
			
		|||
    if (limbIndex == 14) {
 | 
			
		||||
        *dList = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnTrt_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1767,7 +1767,7 @@ void EnTrt_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EnTrt_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnTrt_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnTrt* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if (limbIndex == 21) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1789,8 +1789,9 @@ void EnTrt_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    func_8012C28C(globalCtx->state.gfxCtx);
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIdx]));
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIdx]));
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  EnTrt_OverrideLimbDraw, EnTrt_PostLimbDraw, EnTrt_UnkActorDraw, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, EnTrt_OverrideLimbDraw, EnTrt_PostLimbDraw,
 | 
			
		||||
                                   EnTrt_TransformLimbDraw, &this->actor);
 | 
			
		||||
    EnTrt_DrawCursor(globalCtx, this, this->cursorPos.x, this->cursorPos.y, this->cursorPos.z, this->drawCursor);
 | 
			
		||||
    EnTrt_DrawStickDirectionPrompt(globalCtx, this);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1192,7 +1192,7 @@ void EnTru_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80A886D4(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
void EnTru_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
 | 
			
		||||
    EnTru* this = THIS;
 | 
			
		||||
    s32 pad[3];
 | 
			
		||||
    s32 sp2C;
 | 
			
		||||
| 
						 | 
				
			
			@ -1250,8 +1250,9 @@ void EnTru_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80A8B408[this->unk_36E]));
 | 
			
		||||
    gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_80A8B408[this->unk_36E]));
 | 
			
		||||
 | 
			
		||||
    func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
 | 
			
		||||
                  EnTru_OverrideLimbDraw, EnTru_PostLimbDraw, func_80A886D4, &this->actor);
 | 
			
		||||
    SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                                   this->skelAnime.dListCount, EnTru_OverrideLimbDraw, EnTru_PostLimbDraw,
 | 
			
		||||
                                   EnTru_TransformLimbDraw, &this->actor);
 | 
			
		||||
    func_80A85788(this->unk_394, globalCtx);
 | 
			
		||||
    func_80A85BCC(this->unk_394, globalCtx);
 | 
			
		||||
    func_80A85F84(this->unk_394, globalCtx);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1546,7 +1546,7 @@ void EnWf_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
s32 func_80993E50(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
s32 EnWf_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    EnWf* this = THIS;
 | 
			
		||||
 | 
			
		||||
    if ((limbIndex == 17) || (limbIndex == 18)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1555,7 +1555,7 @@ s32 func_80993E50(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
 | 
			
		|||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80993E94(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnWf_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    static s8 D_809942FC[] = {
 | 
			
		||||
        -1, -1, -1, -1, -1, 0, 1, -1, -1, -1, -1, 2, -1, 3, 4, 5, 6, -1, -1, 7, 8, 9,
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			@ -1593,7 +1593,7 @@ void EnWf_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
        CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
 | 
			
		||||
        SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                              this->skelAnime.dListCount, func_80993E50, func_80993E94, &this->actor);
 | 
			
		||||
                              this->skelAnime.dListCount, EnWf_OverrideLimbDraw, EnWf_PostLimbDraw, &this->actor);
 | 
			
		||||
        func_800BE680(globalCtx, &this->actor, this->unk_2B8, 10, this->unk_2B0, this->unk_2B4, this->unk_2AC,
 | 
			
		||||
                      this->unk_296);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -997,7 +997,7 @@ void EnZog_Update(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void func_80B954C4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
void EnZog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
 | 
			
		||||
    static Vec3f D_80B959B8 = { 0.0f, 0.0f, 0.0f };
 | 
			
		||||
    EnZog* this = THIS;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1078,7 +1078,7 @@ void EnZog_Draw(Actor* thisx, GlobalContext* globalCtx) {
 | 
			
		|||
 | 
			
		||||
        POLY_OPA_DISP = &gfx[3];
 | 
			
		||||
        SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
 | 
			
		||||
                              this->skelAnime.dListCount, NULL, func_80B954C4, &this->actor);
 | 
			
		||||
                              this->skelAnime.dListCount, NULL, EnZog_PostLimbDraw, &this->actor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    CLOSE_DISPS(globalCtx->state.gfxCtx);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -385,6 +385,11 @@ animdict = {
 | 
			
		|||
    "func_800A81F0": "EffectBlure_AddVertex",
 | 
			
		||||
    "func_800A8514": "EffectBlure_AddSpace",
 | 
			
		||||
    "Effect_GetParams": "Effect_GetByIndex",
 | 
			
		||||
    "func_801343C0": "SkelAnime_DrawTransformFlexOpa",
 | 
			
		||||
    "func_80134148": "SkelAnime_DrawTransformFlexLimbOpa",
 | 
			
		||||
    "func_8013AB00": "SubS_DrawTransformFlex",
 | 
			
		||||
    "func_8013A860": "SubS_DrawTransformFlexLimb",
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    # Structs members
 | 
			
		||||
    "skelAnime.unk03": "skelAnime.taper",
 | 
			
		||||
| 
						 | 
				
			
			@ -404,10 +409,10 @@ animdict = {
 | 
			
		|||
    "skelAnime.prevFramePos": "skelAnime.prevTransl",
 | 
			
		||||
    "skelAnime.unk3E": "skelAnime.baseTransl",
 | 
			
		||||
    "actor.minVelocityY": "actor.terminalVelocity",
 | 
			
		||||
    "actor.yDistToWater" : "actor.depthInWater",
 | 
			
		||||
    "actor.yDistToWater": "actor.depthInWater",
 | 
			
		||||
    "actor.yDistToPlayer": "actor.playerHeightRel",
 | 
			
		||||
    "globalCtx->mf_187FC" : "globalCtx->billboardMtxF",
 | 
			
		||||
    "globalCtx->projectionMatrix" : "globalCtx->viewProjectionMtxF",
 | 
			
		||||
    "globalCtx->mf_187FC": "globalCtx->billboardMtxF",
 | 
			
		||||
    "globalCtx->projectionMatrix": "globalCtx->viewProjectionMtxF",
 | 
			
		||||
    "player->unk_A87": "player->exchangeItemId",
 | 
			
		||||
    "player->leftHandActor": "player->heldActor",
 | 
			
		||||
    "player->unk_384": "player->getItemId",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2527,8 +2527,8 @@
 | 
			
		|||
    0x80133B3C:("SkelAnime_DrawOpa",),
 | 
			
		||||
    0x80133CDC:("SkelAnime_DrawFlexLimbOpa",),
 | 
			
		||||
    0x80133F28:("SkelAnime_DrawFlexOpa",),
 | 
			
		||||
    0x80134148:("func_80134148",),
 | 
			
		||||
    0x801343C0:("func_801343C0",),
 | 
			
		||||
    0x80134148:("SkelAnime_DrawTransformFlexLimbOpa",),
 | 
			
		||||
    0x801343C0:("SkelAnime_DrawTransformFlexOpa",),
 | 
			
		||||
    0x80134600:("SkelAnime_GetFrameData",),
 | 
			
		||||
    0x80134724:("Animation_GetLength",),
 | 
			
		||||
    0x80134748:("Animation_GetLastFrame",),
 | 
			
		||||
| 
						 | 
				
			
			@ -2656,8 +2656,8 @@
 | 
			
		|||
    0x8013A504:("func_8013A504",),
 | 
			
		||||
    0x8013A530:("func_8013A530",),
 | 
			
		||||
    0x8013A7C0:("SubS_FindDoor",),
 | 
			
		||||
    0x8013A860:("func_8013A860",),
 | 
			
		||||
    0x8013AB00:("func_8013AB00",),
 | 
			
		||||
    0x8013A860:("SubS_DrawTransformFlexLimb",),
 | 
			
		||||
    0x8013AB00:("SubS_DrawTransformFlex",),
 | 
			
		||||
    0x8013AD6C:("func_8013AD6C",),
 | 
			
		||||
    0x8013AD9C:("func_8013AD9C",),
 | 
			
		||||
    0x8013AED4:("func_8013AED4",),
 | 
			
		||||
| 
						 | 
				
			
			@ -5441,7 +5441,7 @@
 | 
			
		|||
    0x808925F8:("EnNiw_LandBeforeIdle",),
 | 
			
		||||
    0x8089262C:("EnNiw_CheckRage",),
 | 
			
		||||
    0x808927CC:("EnNiw_Update",),
 | 
			
		||||
    0x80892E70:("EnNiw_LimbDraw",),
 | 
			
		||||
    0x80892E70:("EnNiw_OverrideLimbDraw",),
 | 
			
		||||
    0x80892FA0:("EnNiw_Draw",),
 | 
			
		||||
    0x80893008:("EnNiw_SpawnFeather",),
 | 
			
		||||
    0x808930FC:("EnNiw_UpdateFeather",),
 | 
			
		||||
| 
						 | 
				
			
			@ -6066,8 +6066,8 @@
 | 
			
		|||
    0x808BE6C4:("func_808BE6C4",),
 | 
			
		||||
    0x808BE73C:("func_808BE73C",),
 | 
			
		||||
    0x808BEA48:("EnDekunuts_Update",),
 | 
			
		||||
    0x808BEBD0:("func_808BEBD0",),
 | 
			
		||||
    0x808BED30:("func_808BED30",),
 | 
			
		||||
    0x808BEBD0:("EnDekunuts_OverrideLimbDraw",),
 | 
			
		||||
    0x808BED30:("EnDekunuts_PostLimbDraw",),
 | 
			
		||||
    0x808BEE38:("EnDekunuts_Draw",),
 | 
			
		||||
    0x808BF220:("EnBbfall_Init",),
 | 
			
		||||
    0x808BF318:("EnBbfall_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			@ -7509,8 +7509,8 @@
 | 
			
		|||
    0x80943BC0:("func_80943BC0",),
 | 
			
		||||
    0x80943BDC:("func_80943BDC",),
 | 
			
		||||
    0x80943CA4:("EnDaiku_Update",),
 | 
			
		||||
    0x80943E18:("func_80943E18",),
 | 
			
		||||
    0x80943E60:("func_80943E60",),
 | 
			
		||||
    0x80943E18:("EnDaiku_OverrideLimbDraw",),
 | 
			
		||||
    0x80943E60:("EnDaiku_PostLimbDraw",),
 | 
			
		||||
    0x80943EE4:("EnDaiku_Draw",),
 | 
			
		||||
    0x809441E0:("EnNwc_Init",),
 | 
			
		||||
    0x80944310:("EnNwc_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			@ -7625,9 +7625,9 @@
 | 
			
		|||
    0x809510E4:("EnGm_Init",),
 | 
			
		||||
    0x80951224:("EnGm_Destroy",),
 | 
			
		||||
    0x80951264:("EnGm_Update",),
 | 
			
		||||
    0x809513AC:("func_809513AC",),
 | 
			
		||||
    0x809514BC:("func_809514BC",),
 | 
			
		||||
    0x80951594:("func_80951594",),
 | 
			
		||||
    0x809513AC:("EnGm_OverrideLimbDraw",),
 | 
			
		||||
    0x809514BC:("EnGm_PostLimbDraw",),
 | 
			
		||||
    0x80951594:("EnGm_TransformLimbDraw",),
 | 
			
		||||
    0x80951748:("EnGm_Draw",),
 | 
			
		||||
    0x80952620:("EnMs_Init",),
 | 
			
		||||
    0x80952708:("EnMs_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			@ -8351,8 +8351,8 @@
 | 
			
		|||
    0x8098BCA8:("EnDg_Init",),
 | 
			
		||||
    0x8098BE18:("EnDg_Destroy",),
 | 
			
		||||
    0x8098BE44:("EnDg_Update",),
 | 
			
		||||
    0x8098BFB8:("func_8098BFB8",),
 | 
			
		||||
    0x8098BFD4:("func_8098BFD4",),
 | 
			
		||||
    0x8098BFB8:("EnDg_OverrideLimbDraw",),
 | 
			
		||||
    0x8098BFD4:("EnDg_PostLimbDraw",),
 | 
			
		||||
    0x8098C06C:("EnDg_Draw",),
 | 
			
		||||
    0x8098CA20:("func_8098CA20",),
 | 
			
		||||
    0x8098CAD0:("func_8098CAD0",),
 | 
			
		||||
| 
						 | 
				
			
			@ -8478,8 +8478,8 @@
 | 
			
		|||
    0x80993738:("func_80993738",),
 | 
			
		||||
    0x8099386C:("func_8099386C",),
 | 
			
		||||
    0x80993BC0:("EnWf_Update",),
 | 
			
		||||
    0x80993E50:("func_80993E50",),
 | 
			
		||||
    0x80993E94:("func_80993E94",),
 | 
			
		||||
    0x80993E50:("EnWf_OverrideLimbDraw",),
 | 
			
		||||
    0x80993E94:("EnWf_PostLimbDraw",),
 | 
			
		||||
    0x80993F68:("EnWf_Draw",),
 | 
			
		||||
    0x8099408C:("func_8099408C",),
 | 
			
		||||
    0x809947B0:("func_809947B0",),
 | 
			
		||||
| 
						 | 
				
			
			@ -9033,7 +9033,7 @@
 | 
			
		|||
    0x809C339C:("EnAob01_Update",),
 | 
			
		||||
    0x809C33D8:("EnAob01_OverrideLimbDraw",),
 | 
			
		||||
    0x809C35B4:("EnAob01_PostLimbDraw",),
 | 
			
		||||
    0x809C35F4:("EnAob01_UnkDraw",),
 | 
			
		||||
    0x809C35F4:("EnAob01_TransformLimbDraw",),
 | 
			
		||||
    0x809C3608:("EnAob01_Draw",),
 | 
			
		||||
    0x809C3D80:("EnBoj01_Init",),
 | 
			
		||||
    0x809C3D90:("EnBoj01_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			@ -9743,7 +9743,7 @@
 | 
			
		|||
    0x80A159B0:("EnGo_Update",),
 | 
			
		||||
    0x80A15B80:("func_80A15B80",),
 | 
			
		||||
    0x80A15D04:("EnGo_OverrideLimbDraw",),
 | 
			
		||||
    0x80A15E38:("EnGo_UnkDraw",),
 | 
			
		||||
    0x80A15E38:("EnGo_TransfromLimbDraw",),
 | 
			
		||||
    0x80A15FEC:("func_80A15FEC",),
 | 
			
		||||
    0x80A16D40:("func_80A16D40",),
 | 
			
		||||
    0x80A16D6C:("func_80A16D6C",),
 | 
			
		||||
| 
						 | 
				
			
			@ -10118,9 +10118,9 @@
 | 
			
		|||
    0x80A2EAAC:("DmSa_Destroy",),
 | 
			
		||||
    0x80A2EABC:("DmSa_DoNothing",),
 | 
			
		||||
    0x80A2EACC:("DmSa_Update",),
 | 
			
		||||
    0x80A2EB10:("func_80A2EB10",),
 | 
			
		||||
    0x80A2EB2C:("func_80A2EB2C",),
 | 
			
		||||
    0x80A2EB44:("func_80A2EB44",),
 | 
			
		||||
    0x80A2EB10:("DmSa_OverrideLimbDraw",),
 | 
			
		||||
    0x80A2EB2C:("DmSa_PostLimbDraw",),
 | 
			
		||||
    0x80A2EB44:("DmSa_TransformLimbDraw",),
 | 
			
		||||
    0x80A2EB58:("func_80A2EB58",),
 | 
			
		||||
    0x80A2EBB0:("func_80A2EBB0",),
 | 
			
		||||
    0x80A2EBE8:("DmSa_Draw",),
 | 
			
		||||
| 
						 | 
				
			
			@ -11249,7 +11249,7 @@
 | 
			
		|||
    0x80A884E8:("EnTru_Update",),
 | 
			
		||||
    0x80A885B8:("EnTru_OverrideLimbDraw",),
 | 
			
		||||
    0x80A88698:("EnTru_PostLimbDraw",),
 | 
			
		||||
    0x80A886D4:("func_80A886D4",),
 | 
			
		||||
    0x80A886D4:("EnTru_TransformLimbDraw",),
 | 
			
		||||
    0x80A887E4:("EnTru_Draw",),
 | 
			
		||||
    0x80A8B770:("EnTrt_ChangeAnim",),
 | 
			
		||||
    0x80A8B80C:("EnTrt_TestItemSelected",),
 | 
			
		||||
| 
						 | 
				
			
			@ -11331,7 +11331,7 @@
 | 
			
		|||
    0x80A8FA00:("EnTrt_UpdateHeadPosAndRot",),
 | 
			
		||||
    0x80A8FB34:("EnTrt_OverrideLimbDraw",),
 | 
			
		||||
    0x80A8FBB4:("EnTrt_PostLimbDraw",),
 | 
			
		||||
    0x80A8FC64:("EnTrt_UnkActorDraw",),
 | 
			
		||||
    0x80A8FC64:("EnTrt_TransformLimbDraw",),
 | 
			
		||||
    0x80A8FCE0:("EnTrt_Draw",),
 | 
			
		||||
    0x80A903B0:("EnTest5_SetupAction",),
 | 
			
		||||
    0x80A903BC:("EnTest5_Init",),
 | 
			
		||||
| 
						 | 
				
			
			@ -12328,7 +12328,7 @@
 | 
			
		|||
    0x80ADD400:("EnSellnuts_Update",),
 | 
			
		||||
    0x80ADD4E0:("func_80ADD4E0",),
 | 
			
		||||
    0x80ADD7B4:("func_80ADD7B4",),
 | 
			
		||||
    0x80ADD7CC:("func_80ADD7CC",),
 | 
			
		||||
    0x80ADD7CC:("EnSellnuts_TransformLimbDraw",),
 | 
			
		||||
    0x80ADD8A4:("EnSellnuts_Draw",),
 | 
			
		||||
    0x80ADE230:("func_80ADE230",),
 | 
			
		||||
    0x80ADE5A4:("BgDkjailIvy_Init",),
 | 
			
		||||
| 
						 | 
				
			
			@ -12604,8 +12604,8 @@
 | 
			
		|||
    0x80AEF2D8:("func_80AEF2D8",),
 | 
			
		||||
    0x80AEF3E8:("EnTk_Update",),
 | 
			
		||||
    0x80AEF5F4:("func_80AEF5F4",),
 | 
			
		||||
    0x80AEF65C:("func_80AEF65C",),
 | 
			
		||||
    0x80AEF6A4:("func_80AEF6A4",),
 | 
			
		||||
    0x80AEF65C:("EnTk_OverrideLimbDraw",),
 | 
			
		||||
    0x80AEF6A4:("EnTk_PostLimbDraw",),
 | 
			
		||||
    0x80AEF734:("EnTk_Draw",),
 | 
			
		||||
    0x80AF0060:("BgMarketStep_Init",),
 | 
			
		||||
    0x80AF0088:("BgMarketStep_Draw",),
 | 
			
		||||
| 
						 | 
				
			
			@ -12772,9 +12772,9 @@
 | 
			
		|||
    0x80AFA7A8:("EnPm_Init",),
 | 
			
		||||
    0x80AFA8B0:("EnPm_Destroy",),
 | 
			
		||||
    0x80AFA8F0:("EnPm_Update",),
 | 
			
		||||
    0x80AFAA04:("func_80AFAA04",),
 | 
			
		||||
    0x80AFAA44:("func_80AFAA44",),
 | 
			
		||||
    0x80AFABAC:("func_80AFABAC",),
 | 
			
		||||
    0x80AFAA04:("EnPm_OverrideLimbDraw",),
 | 
			
		||||
    0x80AFAA44:("EnPm_PostLimbDraw",),
 | 
			
		||||
    0x80AFABAC:("EnPm_TransformLimbDraw",),
 | 
			
		||||
    0x80AFACAC:("EnPm_Draw",),
 | 
			
		||||
    0x80AFC960:("func_80AFC960",),
 | 
			
		||||
    0x80AFCA94:("EnGakufu_Init",),
 | 
			
		||||
| 
						 | 
				
			
			@ -13633,8 +13633,8 @@
 | 
			
		|||
    0x80B3D7B8:("EnDnp_Destroy",),
 | 
			
		||||
    0x80B3D7E4:("EnDnp_Update",),
 | 
			
		||||
    0x80B3D974:("func_80B3D974",),
 | 
			
		||||
    0x80B3DA88:("func_80B3DA88",),
 | 
			
		||||
    0x80B3DAA0:("func_80B3DAA0",),
 | 
			
		||||
    0x80B3DA88:("EnDnp_PostLimbDraw",),
 | 
			
		||||
    0x80B3DAA0:("EnDnp_TransformLimbDraw",),
 | 
			
		||||
    0x80B3DB98:("EnDnp_Draw",),
 | 
			
		||||
    0x80B3DFF0:("func_80B3DFF0",),
 | 
			
		||||
    0x80B3E168:("func_80B3E168",),
 | 
			
		||||
| 
						 | 
				
			
			@ -13657,9 +13657,9 @@
 | 
			
		|||
    0x80B3F318:("EnDai_Init",),
 | 
			
		||||
    0x80B3F494:("EnDai_Destroy",),
 | 
			
		||||
    0x80B3F4A4:("EnDai_Update",),
 | 
			
		||||
    0x80B3F598:("func_80B3F598",),
 | 
			
		||||
    0x80B3F614:("func_80B3F614",),
 | 
			
		||||
    0x80B3F6EC:("func_80B3F6EC",),
 | 
			
		||||
    0x80B3F598:("EnDai_OverrideLimbDraw",),
 | 
			
		||||
    0x80B3F614:("EnDai_PostLimbDraw",),
 | 
			
		||||
    0x80B3F6EC:("EnDai_TransformLimbDraw",),
 | 
			
		||||
    0x80B3F78C:("func_80B3F78C",),
 | 
			
		||||
    0x80B3F920:("func_80B3F920",),
 | 
			
		||||
    0x80B3FB84:("EnDai_Draw",),
 | 
			
		||||
| 
						 | 
				
			
			@ -14870,7 +14870,7 @@
 | 
			
		|||
    0x80B95128:("func_80B95128",),
 | 
			
		||||
    0x80B95240:("func_80B95240",),
 | 
			
		||||
    0x80B95260:("EnZog_Update",),
 | 
			
		||||
    0x80B954C4:("func_80B954C4",),
 | 
			
		||||
    0x80B954C4:("EnZog_PostLimbDraw",),
 | 
			
		||||
    0x80B95598:("func_80B95598",),
 | 
			
		||||
    0x80B95668:("EnZog_Draw",),
 | 
			
		||||
    0x80B95E20:("func_80B95E20",),
 | 
			
		||||
| 
						 | 
				
			
			@ -15247,7 +15247,7 @@
 | 
			
		|||
    0x80BAE108:("EnSuttari_Update",),
 | 
			
		||||
    0x80BAE250:("EnSuttari_OverrideLimbDraw",),
 | 
			
		||||
    0x80BAE3C4:("EnSuttari_PostLimbDraw",),
 | 
			
		||||
    0x80BAE524:("EnSuttari_UnkDraw",),
 | 
			
		||||
    0x80BAE524:("EnSuttari_TransformLimbDraw",),
 | 
			
		||||
    0x80BAE538:("EnSuttari_Draw",),
 | 
			
		||||
    0x80BAEF70:("EnZod_Init",),
 | 
			
		||||
    0x80BAF1C0:("EnZod_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			@ -15326,7 +15326,7 @@
 | 
			
		|||
    0x80BB3728:("func_80BB3728",),
 | 
			
		||||
    0x80BB3860:("EnGeg_OverrideLimbDraw",),
 | 
			
		||||
    0x80BB387C:("EnGeg_PostLimbDraw",),
 | 
			
		||||
    0x80BB39F8:("EnGeg_UnkDraw",),
 | 
			
		||||
    0x80BB39F8:("EnGeg_TransformLimbDraw",),
 | 
			
		||||
    0x80BB3BE0:("func_80BB3BE0",),
 | 
			
		||||
    0x80BB3CB4:("func_80BB3CB4",),
 | 
			
		||||
    0x80BB3E0C:("EnGeg_Draw",),
 | 
			
		||||
| 
						 | 
				
			
			@ -16274,7 +16274,7 @@
 | 
			
		|||
    0x80BEFF34:("EnAkindonuts_Update",),
 | 
			
		||||
    0x80BEFFB4:("EnAkindonuts_OverrideLimbDraw",),
 | 
			
		||||
    0x80BF0178:("EnAkindonuts_PostLimbDraw",),
 | 
			
		||||
    0x80BF0190:("EnAkindonuts_UnkActorDraw",),
 | 
			
		||||
    0x80BF0190:("EnAkindonuts_TransformLimbDraw",),
 | 
			
		||||
    0x80BF0258:("EnAkindonuts_Draw",),
 | 
			
		||||
    0x80BF0D90:("EffStk_Init",),
 | 
			
		||||
    0x80BF0DD0:("EffStk_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			@ -16745,7 +16745,7 @@
 | 
			
		|||
    0x80C102D4:("EnRecepgirl_Talk",),
 | 
			
		||||
    0x80C104E8:("EnRecepgirl_Update",),
 | 
			
		||||
    0x80C10558:("EnRecepgirl_OverrideLimbDraw",),
 | 
			
		||||
    0x80C10590:("EnRecepgirl_UnkLimbDraw",),
 | 
			
		||||
    0x80C10590:("EnRecepgirl_TransformLimbDraw",),
 | 
			
		||||
    0x80C105EC:("EnRecepgirl_Draw",),
 | 
			
		||||
    0x80C10770:("EnThiefbird_Init",),
 | 
			
		||||
    0x80C10958:("EnThiefbird_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			@ -16972,7 +16972,7 @@
 | 
			
		|||
    0x80C1E048:("DmNb_Init",),
 | 
			
		||||
    0x80C1E0F8:("DmNb_Destroy",),
 | 
			
		||||
    0x80C1E108:("DmNb_Update",),
 | 
			
		||||
    0x80C1E168:("DmNb_UnkActorDraw",),
 | 
			
		||||
    0x80C1E168:("DmNb_TransformLimbDraw",),
 | 
			
		||||
    0x80C1E17C:("DmNb_Draw",),
 | 
			
		||||
    0x80C1E290:("func_80C1E290",),
 | 
			
		||||
    0x80C1E2D4:("func_80C1E2D4",),
 | 
			
		||||
| 
						 | 
				
			
			@ -17090,7 +17090,7 @@
 | 
			
		|||
    0x80C23980:("func_80C23980",),
 | 
			
		||||
    0x80C2399C:("func_80C2399C",),
 | 
			
		||||
    0x80C239C8:("EnEndingHero5_Update",),
 | 
			
		||||
    0x80C23A30:("func_80C23A30",),
 | 
			
		||||
    0x80C23A30:("EnEndingHero5_PostLimbDraw",),
 | 
			
		||||
    0x80C23A7C:("EnEndingHero5_Draw",),
 | 
			
		||||
    0x80C23C90:("EnEndingHero6_Init",),
 | 
			
		||||
    0x80C23D50:("EnEndingHero6_Destroy",),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2041,8 +2041,8 @@ asm/non_matchings/code/z_skelanime/SkelAnime_DrawLimb.s,SkelAnime_DrawLimb,0x801
 | 
			
		|||
asm/non_matchings/code/z_skelanime/SkelAnime_Draw.s,SkelAnime_Draw,0x80133B3C,0x68
 | 
			
		||||
asm/non_matchings/code/z_skelanime/SkelAnime_DrawLimbSV.s,SkelAnime_DrawLimbSV,0x80133CDC,0x93
 | 
			
		||||
asm/non_matchings/code/z_skelanime/SkelAnime_DrawFlexOpa.s,SkelAnime_DrawFlexOpa,0x80133F28,0x88
 | 
			
		||||
asm/non_matchings/code/z_skelanime/func_80134148.s,func_80134148,0x80134148,0x9E
 | 
			
		||||
asm/non_matchings/code/z_skelanime/func_801343C0.s,func_801343C0,0x801343C0,0x90
 | 
			
		||||
asm/non_matchings/code/z_skelanime/SkelAnime_DrawTransformFlexLimbOpa.s,SkelAnime_DrawTransformFlexLimbOpa,0x80134148,0x9E
 | 
			
		||||
asm/non_matchings/code/z_skelanime/SkelAnime_DrawTransformFlexOpa.s,SkelAnime_DrawTransformFlexOpa,0x801343C0,0x90
 | 
			
		||||
asm/non_matchings/code/z_skelanime/SkelAnime_AnimateFrame.s,SkelAnime_AnimateFrame,0x80134600,0x49
 | 
			
		||||
asm/non_matchings/code/z_skelanime/SkelAnime_GetTotalFrames.s,SkelAnime_GetTotalFrames,0x80134724,0x9
 | 
			
		||||
asm/non_matchings/code/z_skelanime/Animation_GetLastFrame.s,Animation_GetLastFrame,0x80134748,0xB
 | 
			
		||||
| 
						 | 
				
			
			@ -2170,8 +2170,8 @@ asm/non_matchings/code/z_snap/func_8013A4C4.s,func_8013A4C4,0x8013A4C4,0x10
 | 
			
		|||
asm/non_matchings/code/z_snap/func_8013A504.s,func_8013A504,0x8013A504,0xB
 | 
			
		||||
asm/non_matchings/code/z_snap/func_8013A530.s,func_8013A530,0x8013A530,0xA4
 | 
			
		||||
asm/non_matchings/code/z_sub_s/SubS_FindDoor.s,SubS_FindDoor,0x8013A7C0,0x28
 | 
			
		||||
asm/non_matchings/code/z_sub_s/func_8013A860.s,func_8013A860,0x8013A860,0xA8
 | 
			
		||||
asm/non_matchings/code/z_sub_s/func_8013AB00.s,func_8013AB00,0x8013AB00,0x9B
 | 
			
		||||
asm/non_matchings/code/z_sub_s/SubS_DrawTransformFlexLimb.s,SubS_DrawTransformFlexLimb,0x8013A860,0xA8
 | 
			
		||||
asm/non_matchings/code/z_sub_s/SubS_DrawTransformFlex.s,SubS_DrawTransformFlex,0x8013AB00,0x9B
 | 
			
		||||
asm/non_matchings/code/z_sub_s/func_8013AD6C.s,func_8013AD6C,0x8013AD6C,0xC
 | 
			
		||||
asm/non_matchings/code/z_sub_s/func_8013AD9C.s,func_8013AD9C,0x8013AD9C,0x4E
 | 
			
		||||
asm/non_matchings/code/z_sub_s/func_8013AED4.s,func_8013AED4,0x8013AED4,0xB
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		
		
			
  | 
		Loading…
	
		Reference in New Issue