mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Merge remote-tracking branch 'upstream/master' into Mine
This commit is contained in:
@@ -90,7 +90,7 @@ OBJCOPY := $(MIPS_BINUTILS_PREFIX)objcopy
|
||||
OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump
|
||||
ASM_PROC := python3 tools/asm-processor/build.py
|
||||
|
||||
ASM_PROC_FLAGS := --input-enc=utf-8 --output-enc=euc-jp
|
||||
ASM_PROC_FLAGS := --input-enc=utf-8 --output-enc=euc-jp --convert-statics=global-with-filename
|
||||
|
||||
IINC := -Iinclude -Isrc -Iassets -Ibuild -I.
|
||||
|
||||
|
||||
@@ -787,7 +787,7 @@
|
||||
<PlayerAnimation Name="gPlayerAnim_Link_muku" Offset="0xE4E0" />
|
||||
<PlayerAnimation Name="gPlayerAnim_Link_otituku_w" Offset="0xE4E8" />
|
||||
<PlayerAnimation Name="gPlayerAnim_Link_ue_wait" Offset="0xE4F0" />
|
||||
|
||||
|
||||
<DList Name="gameplay_keep_DL_00E5C0" Offset="0xE5C0" />
|
||||
|
||||
<!-- Deku Flower -->
|
||||
@@ -1145,8 +1145,8 @@
|
||||
<Texture Name="gElegyShellGoronNecklaceTex" OutName="elegy_shell_goron_necklace" Format="i8" Width="32" Height="32" Offset="0x4DDA0" />
|
||||
<Texture Name="gElegyShellGoronPlatformTex" OutName="elegy_shell_goron_platform" Format="ci8" Width="8" Height="16" Offset="0x4E1A0" />
|
||||
|
||||
<Texture Name="gameplay_keep_Tex_04E220" OutName="tex_04E220" Format="i8" Width="64" Height="64" Offset="0x4E220" />
|
||||
<DList Name="gameplay_keep_DL_04F250" Offset="0x4F250" />
|
||||
<Texture Name="gHookshotReticleTex" OutName="tex_04E220" Format="i8" Width="64" Height="64" Offset="0x4E220" />
|
||||
<DList Name="gHookshotReticleDL" Offset="0x4F250" />
|
||||
<Texture Name="gameplay_keep_Tex_04F2C0" OutName="tex_04F2C0" Format="ia16" Width="32" Height="64" Offset="0x4F2C0" />
|
||||
<DList Name="gEffIceFragment1DL" Offset="0x50550" />
|
||||
<DList Name="gEffIceFragment2MaterialDL" Offset="0x50648" />
|
||||
@@ -1223,7 +1223,9 @@
|
||||
<DList Name="gameplay_keep_DL_054C90" Offset="0x54C90" />
|
||||
<Texture Name="gameplay_keep_Tex_054D90" OutName="tex_054D90" Format="i4" Width="16" Height="16" Offset="0x54D90" />
|
||||
<Texture Name="gameplay_keep_Tex_054E10" OutName="tex_054E10" Format="i8" Width="16" Height="16" Offset="0x54E10" />
|
||||
|
||||
<TextureAnimation Name="gameplay_keep_Matanimheader_054F18" Offset="0x54F18" />
|
||||
|
||||
<Texture Name="gameplay_keep_Tex_054F20" OutName="tex_054F20" Format="i8" Width="32" Height="32" Offset="0x54F20" />
|
||||
<DList Name="gameplay_keep_DL_055360" Offset="0x55360" />
|
||||
<DList Name="gameplay_keep_DL_055620" Offset="0x55620" />
|
||||
@@ -1477,7 +1479,7 @@
|
||||
<Texture Name="gElegyShellZoraPlatformTex" OutName="elegy_shell_zora_platform" Format="rgba16" Width="8" Height="16" Offset="0x8D2E0" />
|
||||
|
||||
<Texture Name="gameplay_keep_Tex_08D3E0" OutName="tex_08D3E0" Format="i8" Width="64" Height="32" Offset="0x8D3E0" />
|
||||
|
||||
|
||||
<!-- Dust Textures -->
|
||||
<Texture Name="gEffDust1Tex" OutName="eff_dust_1" Format="i8" Width="32" Height="32" Offset="0x8DBE0" />
|
||||
<Texture Name="gEffDust2Tex" OutName="eff_dust_2" Format="i8" Width="32" Height="32" Offset="0x8DFE0" />
|
||||
@@ -1487,7 +1489,7 @@
|
||||
<Texture Name="gEffDust6Tex" OutName="eff_dust_6" Format="i8" Width="32" Height="32" Offset="0x8EFE0" />
|
||||
<Texture Name="gEffDust7Tex" OutName="eff_dust_7" Format="i8" Width="32" Height="32" Offset="0x8F3E0" />
|
||||
<Texture Name="gEffDust8Tex" OutName="eff_dust_8" Format="i8" Width="32" Height="32" Offset="0x8F7E0" />
|
||||
|
||||
|
||||
<Texture Name="gameplay_keep_Tex_08FBE0" OutName="tex_08FBE0" Format="i8" Width="32" Height="64" Offset="0x8FBE0" />
|
||||
<Texture Name="gameplay_keep_Tex_0903E0" OutName="tex_0903E0" Format="i8" Width="32" Height="64" Offset="0x903E0" />
|
||||
<Texture Name="gameplay_keep_Tex_090BE0" OutName="tex_090BE0" Format="i8" Width="32" Height="64" Offset="0x90BE0" />
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
<DList Name="object_link_child_DL_017270" Offset="0x17270" />
|
||||
<DList Name="gLinkHumanGildedSwordBladeDL" Offset="0x17310" />
|
||||
<DList Name="gLinkHumanRazorSwordSheathDL" Offset="0x17338" />
|
||||
<DList Name="gLinkHumanHylianShieldDL" Offset="0x17458" />
|
||||
<DList Name="gLinkHumanHerosShieldDL" Offset="0x17458" />
|
||||
<DList Name="gLinkHumanKokiriSwordSheathDL" Offset="0x17700" />
|
||||
<DList Name="object_link_child_DL_017818" Offset="0x17818" />
|
||||
<DList Name="gLinkHumanHookshotDL" Offset="0x17858" />
|
||||
@@ -110,17 +110,17 @@
|
||||
<DList Name="object_link_child_DL_018490" Offset="0x18490" />
|
||||
|
||||
<Texture Name="object_link_child_TLUT_018A40" OutName="tlut_018A40" Format="rgba16" Width="16" Height="16" Offset="0x18A40" />
|
||||
<Texture Name="gLinkHumanHylianShieldFrontTLUT" OutName="hylian_shield_front_tlut" Format="rgba16" Width="16" Height="16" Offset="0x18C40" />
|
||||
<Texture Name="gLinkHumanHylianShieldBackTLUT" OutName="hylian_shield_back_tlut" Format="rgba16" Width="16" Height="16" Offset="0x18E40" />
|
||||
<Texture Name="gLinkHumanHerosShieldFrontTLUT" OutName="hylian_shield_front_tlut" Format="rgba16" Width="16" Height="16" Offset="0x18C40" />
|
||||
<Texture Name="gLinkHumanHerosShieldBackTLUT" OutName="hylian_shield_back_tlut" Format="rgba16" Width="16" Height="16" Offset="0x18E40" />
|
||||
<Texture Name="gLinkHumanShieldHandleTLUT" OutName="shield_handle_tlut" Format="rgba16" Width="16" Height="16" Offset="0x19040" />
|
||||
<Texture Name="object_link_child_Tex_019240" OutName="tex_019240" Format="ci8" Width="8" Height="8" Offset="0x19240" />
|
||||
<Texture Name="gLinkHumanHylianShieldFrontUpperTex" OutName="hylian_shield_front_upper" Format="ci8" Width="64" Height="32" Offset="0x19280" TlutOffset="0x18C40" />
|
||||
<Texture Name="gLinkHumanHerosShieldFrontUpperTex" OutName="hylian_shield_front_upper" Format="ci8" Width="64" Height="32" Offset="0x19280" TlutOffset="0x18C40" />
|
||||
<Texture Name="object_link_child_Tex_019A80" OutName="tex_019A80" Format="ci8" Width="32" Height="64" Offset="0x19A80" />
|
||||
<Texture Name="object_link_child_Tex_01A280" OutName="tex_01A280" Format="ci8" Width="16" Height="16" Offset="0x1A280" />
|
||||
<Texture Name="object_link_child_Tex_01A380" OutName="tex_01A380" Format="rgba16" Width="64" Height="32" Offset="0x1A380" />
|
||||
<Texture Name="object_link_child_Tex_01B380" OutName="tex_01B380" Format="ci8" Width="16" Height="16" Offset="0x1B380" />
|
||||
<Texture Name="gLinkHumanHylianShieldFrontLowerTex" OutName="hylian_shield_front_lower" Format="ci8" Width="64" Height="32" Offset="0x1B480" TlutOffset="0x18C40" />
|
||||
<Texture Name="gLinkHumanHylianShieldBackTex" OutName="hylian_shield_back" Format="ci8" Width="16" Height="32" Offset="0x1BC80" TlutOffset="0x18E40" />
|
||||
<Texture Name="gLinkHumanHerosShieldFrontLowerTex" OutName="hylian_shield_front_lower" Format="ci8" Width="64" Height="32" Offset="0x1B480" TlutOffset="0x18C40" />
|
||||
<Texture Name="gLinkHumanHerosShieldBackTex" OutName="hylian_shield_back" Format="ci8" Width="16" Height="32" Offset="0x1BC80" TlutOffset="0x18E40" />
|
||||
<Texture Name="gLinkHumanShieldHandleTex" OutName="shield_handle" Format="ci8" Width="8" Height="16" Offset="0x1BE80" TlutOffset="0x19040" />
|
||||
<Texture Name="object_link_child_Tex_01BF00" OutName="tex_01BF00" Format="rgba16" Width="8" Height="8" Offset="0x1BF00" />
|
||||
<Texture Name="object_link_child_Tex_01BF80" OutName="tex_01BF80" Format="rgba16" Width="16" Height="16" Offset="0x1BF80" />
|
||||
@@ -143,12 +143,12 @@
|
||||
<Mtx Name="gLinkHumanSheathedRazorSwordMtx" Offset="0x1DB00" />
|
||||
<DList Name="gLinkHumanSheathedRazorSwordDL" Offset="0x1DB40" />
|
||||
<DList Name="gLinkHumanSheathedGildedSwordDL" Offset="0x1DB60" />
|
||||
<Mtx Name="gLinkHumanHylianShieldMtx" Offset="0x1DB88" />
|
||||
<DList Name="gLinkHumanHylianShieldWithMtxDL" Offset="0x1DBC8" />
|
||||
<Mtx Name="gLinkHumanHerosShieldMtx" Offset="0x1DB88" />
|
||||
<DList Name="gLinkHumanHerosShieldWithMtxDL" Offset="0x1DBC8" />
|
||||
<Mtx Name="gLinkHumanMirrorShieldMtx" Offset="0x1DBD8" />
|
||||
<DList Name="gLinkHumanMirrorShieldWithMtxDL" Offset="0x1DC18" />
|
||||
|
||||
<DList Name="gLinkHumanRightHandHoldingHylianShieldDL" Offset="0x1DC28" />
|
||||
<DList Name="gLinkHumanRightHandHoldingHerosShieldDL" Offset="0x1DC28" />
|
||||
<DList Name="object_link_child_DL_01DC38" Offset="0x1DC38" />
|
||||
<DList Name="gLinkHumanRightHandHoldingMirrorShieldDL" Offset="0x1DC48" />
|
||||
<DList Name="object_link_child_DL_01DC58" Offset="0x1DC58" />
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
<Limb Name="gLinkGoronShieldingArmsAndLegsLimb" Type="Standard" EnumName="LINK_GORON_SHIELDING_LIMB_ARMS_AND_LEGS" Offset="0x1779C" />
|
||||
<Skeleton Name="gLinkGoronShieldingSkel" Type="Flex" LimbType="Standard" LimbNone="LINK_GORON_SHIELDING_LIMB_NONE" LimbMax="LINK_GORON_SHIELDING_LIMB_MAX" EnumName="LinkGoronShieldingLimb" Offset="0x177B8" />
|
||||
|
||||
<!-- <Blob Name="object_link_goron_Blob_0178D0" Size="0x10" Offset="0x178D0" /> -->
|
||||
<Animation Name="gLinkGoronShieldingAnim" Offset="0x178D0" />
|
||||
|
||||
<Limb Name="gLinkGoronRootLimb" Type="LOD" EnumName="LINK_GORON_LIMB_ROOT" Offset="0x178E0" />
|
||||
<Limb Name="gLinkGoronWaistLimb" Type="LOD" EnumName="LINK_GORON_LIMB_WAIST" Offset="0x178F0" />
|
||||
|
||||
@@ -40,10 +40,10 @@
|
||||
<DList Name="object_link_nuts_DL_008860" Offset="0x8860" />
|
||||
<DList Name="object_link_nuts_DL_008908" Offset="0x8908" />
|
||||
<DList Name="object_link_nuts_DL_0089F0" Offset="0x89F0" />
|
||||
<DList Name="object_link_nuts_DL_008AA0" Offset="0x8AA0" />
|
||||
<DList Name="gLinkDekuClosedFlowerDL" Offset="0x8AA0" />
|
||||
<DList Name="object_link_nuts_DL_008AB8" Offset="0x8AB8" />
|
||||
<DList Name="object_link_nuts_DL_008BA0" Offset="0x8BA0" />
|
||||
<DList Name="object_link_nuts_DL_008C50" Offset="0x8C50" />
|
||||
<DList Name="gLinkDekuOpenFlowerDL" Offset="0x8C50" />
|
||||
<Texture Name="object_link_nuts_Tex_008C68" OutName="tex_008C68" Format="rgba16" Width="16" Height="16" Offset="0x8C68" />
|
||||
<Texture Name="object_link_nuts_Tex_008E68" OutName="tex_008E68" Format="rgba16" Width="16" Height="16" Offset="0x8E68" />
|
||||
<Texture Name="object_link_nuts_Tex_009068" OutName="tex_009068" Format="rgba16" Width="8" Height="8" Offset="0x9068" />
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
<Root>
|
||||
<!-- Object file for Chuchus -->
|
||||
<File Name="object_slime" Segment="6">
|
||||
<DList Name="object_slime_DL_0004C0" Offset="0x4C0" />
|
||||
<DList Name="object_slime_DL_000650" Offset="0x650" />
|
||||
<TextureAnimation Name="object_slime_Matanimheader_000828" Offset="0x828" />
|
||||
<DList Name="object_slime_DL_000A10" Offset="0xA10" />
|
||||
<DList Name="object_slime_DL_000B68" Offset="0xB68" />
|
||||
<Texture Name="object_slime_Tex_000B70" OutName="tex_000B70" Format="rgba16" Width="16" Height="16" Offset="0xB70" />
|
||||
<Texture Name="object_slime_Tex_000D70" OutName="tex_000D70" Format="rgba16" Width="16" Height="16" Offset="0xD70" />
|
||||
<!-- <Blob Name="object_slime_Blob_000F70" Size="0x300" Offset="0xF70" /> -->
|
||||
<Texture Name="object_slime_Tex_001270" OutName="tex_001270" Format="i4" Width="32" Height="32" Offset="0x1270" />
|
||||
<Texture Name="object_slime_Tex_001470" OutName="tex_001470" Format="i4" Width="64" Height="64" Offset="0x1470" />
|
||||
<DList Name="gChuchuBodyDL" Offset="0x4C0" />
|
||||
<DList Name="gChuchuEyesDL" Offset="0x650" />
|
||||
<TextureAnimation Name="gChuchuSlimeFlowTexAnim" Offset="0x828" />
|
||||
<DList Name="gChuchuPuddleDL" Offset="0xA10" />
|
||||
<DList Name="gChuchuEmptyDL" Offset="0xB68" />
|
||||
<Texture Name="gChuchuMouthTex" OutName="chuchu_mouth" Format="rgba16" Width="16" Height="16" Offset="0xB70" />
|
||||
<Texture Name="gChuchuEyeSocketTex" OutName="chuchu_eye_socket" Format="rgba16" Width="16" Height="16" Offset="0xD70" />
|
||||
<Texture Name="gChuchuEyeOpenTex" OutName="chuchu_eye_open" Format="rgba16" Width="16" Height="8" Offset="0xF70" />
|
||||
<Texture Name="gChuchuEyeHalfTex" OutName="chuchu_eye_half" Format="rgba16" Width="16" Height="8" Offset="0x1070" />
|
||||
<Texture Name="gChuchuEyeClosedTex" OutName="chuchu_eye_closed" Format="rgba16" Width="16" Height="8" Offset="0x1170" />
|
||||
<Texture Name="gChuchuSlimeFlowTex" OutName="chuchu_slime_flow" Format="i4" Width="32" Height="32" Offset="0x1270" />
|
||||
<Texture Name="gChuchuSlimeBaseTex" OutName="chuchu_slime_base" Format="i4" Width="64" Height="64" Offset="0x1470" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -81,7 +81,7 @@ void EnMs_Destroy(Actor* thisx, PlayState* play) {
|
||||
void func_80952734(EnMs* this, PlayState* play) {
|
||||
s16 temp_v1 = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
|
||||
|
||||
if (gSaveContext.save.inventory.items[10] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[10] == ITEM_NONE) {
|
||||
this->actor.textId = 0x92E;
|
||||
} else {
|
||||
this->actor.textId = 0x932;
|
||||
@@ -187,12 +187,12 @@ void func_809527F8(EnMs* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
Message_CloseTextbox(play);
|
||||
if ((s32) gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if ((s32) gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if ((s32) gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if ((s32) gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -274,14 +274,14 @@ block_7:
|
||||
goto block_16;
|
||||
block_11:
|
||||
Message_CloseTextbox(play);
|
||||
if ((s32) gSaveContext.save.playerData.rupees >= 0xA) {
|
||||
if ((s32) gSaveContext.save.saveInfo.playerData.rupees >= 0xA) {
|
||||
goto block_13;
|
||||
}
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
block_13:
|
||||
if ((s32) gSaveContext.save.inventory.ammo[gItemSlots[0xA]] < 0x14) {
|
||||
if ((s32) gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] < 0x14) {
|
||||
goto block_15;
|
||||
}
|
||||
play_sound(0x4806U);
|
||||
@@ -312,7 +312,7 @@ which in many ways looks worse: you can see why the use of gotos in code is stro
|
||||
The simplest sort of block label to eliminate is one that is only used once, and where the corresponding goto jumps over a simple block of code with no extra internal control flow structure. There are two obvious examples of this here, the first being
|
||||
|
||||
```C
|
||||
if ((s32) gSaveContext.save.playerData.rupees >= 0xA) {
|
||||
if ((s32) gSaveContext.save.saveInfo.playerData.rupees >= 0xA) {
|
||||
goto block_13;
|
||||
}
|
||||
play_sound(0x4806U);
|
||||
@@ -324,7 +324,7 @@ block_13:
|
||||
Currently, this says to jump over the code block `play_sound...` if the condition in the if is satisfied. In non-goto terms, this means that the block should be run if the condition is *not* satisfied. This also illustrates a general property of goto-only mode: you have to reverse the senses of all of the ifs. Therefore the appropriate approach is to swap the if round, put the code block inside, and remove the goto and the label:
|
||||
|
||||
```C
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
@@ -378,12 +378,12 @@ block_7:
|
||||
block_11:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -447,12 +447,12 @@ block_7:
|
||||
block_11:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -497,12 +497,12 @@ So let us rewrite the entire second half as a switch:
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -533,10 +533,10 @@ There's a couple of other obvious things here:
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
@@ -598,10 +598,10 @@ block_7:
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
@@ -663,10 +663,10 @@ void func_809527F8(EnMs* this, PlayState* play) {
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
@@ -715,10 +715,10 @@ void func_809527F8(EnMs* this, PlayState* play) {
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
|
||||
@@ -185,7 +185,7 @@ void func_80C102D4(EnRecepgirl* this, PlayState* play) {
|
||||
if (this->actor.textId == 0x2AD9) {
|
||||
Flags_SetSwitch(play, this->actor.params);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f);
|
||||
if ((gSaveContext.save.weekEventReg[63] & 0x80)) {
|
||||
if ((gSaveContext.save.saveInfo.weekEventReg[63] & 0x80)) {
|
||||
this->actor.textId = 0x2ADF;
|
||||
} else {
|
||||
this->actor.textId = 0x2ADA;
|
||||
@@ -516,7 +516,7 @@ void func_80C102D4(EnRecepgirl* this, PlayState* play) {
|
||||
if (this->actor.textId == 0x2AD9) { // "Welcome..."
|
||||
Flags_SetSwitch(play, this->actor.params);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f);
|
||||
if (gSaveContext.save.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting
|
||||
if (gSaveContext.save.saveInfo.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting
|
||||
this->actor.textId = 0x2ADF; // Mayor's office is on the left (meeting ended)
|
||||
} else {
|
||||
this->actor.textId = 0x2ADA; // Mayor's office is on the left (meeting ongoing)
|
||||
|
||||
@@ -404,7 +404,7 @@ There remains one thing we need to fix before trying to compile it, namely `*(&g
|
||||
/* 0x0F5C */ u32 regionsVisited; // "area_arrival"
|
||||
```
|
||||
|
||||
so it's somewhere in `weekEventReg`. `0xF37 - 0xEF8 = 0x3F = 63`, and it's a byte array, so the access is actually `gSaveContext.save.weekEventReg[63] & 0x80`. Now it will compile. We also don't use `!= 0` for flag comparisons: just `if (gSaveContext.save.weekEventReg[63] & 0x80)` will do.
|
||||
so it's somewhere in `weekEventReg`. `0xF37 - 0xEF8 = 0x3F = 63`, and it's a byte array, so the access is actually `gSaveContext.save.saveInfo.weekEventReg[63] & 0x80`. Now it will compile. We also don't use `!= 0` for flag comparisons: just `if (gSaveContext.save.saveInfo.weekEventReg[63] & 0x80)` will do.
|
||||
|
||||
Running `./diff.py -mwo3 func_80C102D4` and scrolling down, we discover that this doesn't match!
|
||||
|
||||
|
||||
+42
-291
@@ -122,11 +122,6 @@ s8 PadUtils_GetRelYImpl(Input* input);
|
||||
s8 PadUtils_GetRelX(Input* input);
|
||||
s8 PadUtils_GetRelY(Input* input);
|
||||
void PadUtils_UpdateRelXY(Input* input);
|
||||
void StackCheck_Init(StackEntry* entry, void* stackTop, void* stackBottom, u32 initValue, s32 minSpace, const char* name);
|
||||
void StackCheck_Cleanup(StackEntry* entry);
|
||||
StackStatus StackCheck_GetState(StackEntry* entry);
|
||||
u32 StackCheck_CheckAll(void);
|
||||
u32 StackCheck_Check(StackEntry* entry);
|
||||
|
||||
void MtxConv_F2L(Mtx* mtx, MtxF* mf);
|
||||
void MtxConv_L2F(MtxF* mtx, Mtx* mf);
|
||||
@@ -667,7 +662,7 @@ s32 Actor_IsFacingAndNearPlayer(Actor* actor, f32 range, s16 maxAngleDiff);
|
||||
s32 Actor_ActorAIsFacingAndNearActorB(Actor* actorA, Actor* actorB, f32 range, s16 maxAngleDiff);
|
||||
|
||||
void Actor_GetSlopeDirection(CollisionPoly* floorPoly, Vec3f* slopeNormal, s16* downwardSlopeYaw);
|
||||
void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, f32 wallCheckRadius, f32 ceilingCheckHeight, u32 flags);
|
||||
void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, f32 wallCheckRadius, f32 ceilingCheckHeight, u32 updBgCheckInfoFlags);
|
||||
Hilite* Hilite_DrawOpa(Vec3f* object, Vec3f* eye, Vec3f* lightDir, GraphicsContext* gfxCtx);
|
||||
void func_800B8050(Actor* actor, PlayState* play, s32 flag);
|
||||
void func_800B8118(Actor* actor, PlayState* play, s32 flag);
|
||||
@@ -781,183 +776,25 @@ void* ActorOverlayTable_FaultAddrConv(void* address, void* param);
|
||||
void ActorOverlayTable_Init(void);
|
||||
void ActorOverlayTable_Cleanup(void);
|
||||
|
||||
void SSNode_SetValue(SSNode* node, s16* polyIndex, u16 next);
|
||||
void SSList_SetNull(SSList* ssList);
|
||||
void SSNodeList_SetSSListHead(SSNodeList* list, SSList* ssList, s16* polyIndex);
|
||||
void DynaSSNodeList_SetSSListHead(DynaSSNodeList* list, SSList* ssList, s16* polyIndex);
|
||||
void DynaSSNodeList_Init(PlayState* play, DynaSSNodeList* list);
|
||||
void DynaSSNodeList_Alloc(PlayState* play, DynaSSNodeList* list, u32 numNodes);
|
||||
void DynaSSNodeList_ResetCount(DynaSSNodeList* list);
|
||||
u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList* list);
|
||||
void BgCheck_Vec3sToVec3f(Vec3s* src, Vec3f* dest);
|
||||
void BgCheck_Vec3fToVec3s(Vec3s* dest, Vec3f* src);
|
||||
f32 func_800BFD84(CollisionPoly *poly, f32 arg1, f32 arg2);
|
||||
s32 func_800BFDEC(CollisionPoly* polyA, CollisionPoly* polyB, u32* outVtxId0, u32* outVtxId1);
|
||||
s16 CollisionPoly_GetMinY(CollisionPoly* poly, Vec3s* vertices);
|
||||
void CollisionPoly_GetNormalF(CollisionPoly* poly, f32* nx, f32* ny, f32* nz);
|
||||
void func_800C0094(CollisionPoly* poly, f32 tx, f32 ty, f32 tz, MtxF* dest);
|
||||
f32 CollisionPoly_GetPointDistanceFromPlane(CollisionPoly* poly, Vec3f* point);
|
||||
void CollisionPoly_GetVerticesByBgId(CollisionPoly* poly, s32 bgId, CollisionContext* colCtx, Vec3f* dest);
|
||||
s32 CollisionPoly_SphVsPoly(CollisionPoly* poly, Vec3s* vtxList, Vec3f* center, f32 radius);
|
||||
void StaticLookup_AddPolyToSSList(CollisionContext* colCtx, SSList* ssList, CollisionPoly* polyList, Vec3s* vtxList, s16 polyId);
|
||||
void StaticLookup_AddPoly(StaticLookup* lookup, CollisionContext* colCtx, CollisionPoly* polyList, Vec3s* vtxList, s16 index);
|
||||
void BgCheck_GetSubdivisionMinBounds(CollisionContext* colCtx, Vec3f* pos, s32* sx, s32* sy, s32* sz);
|
||||
void BgCheck_GetSubdivisionMaxBounds(CollisionContext* colCtx, Vec3f* pos, s32* sx, s32* sy, s32* sz);
|
||||
void BgCheck_GetPolySubdivisionBounds(CollisionContext* colCtx, Vec3s* vtxList, CollisionPoly* polyList, s32* subdivMinX, s32* subdivMinY, s32* subdivMinZ, s32* subdivMaxX, s32* subdivMaxY, s32* subdivMaxZ, s16 polyId);
|
||||
s32 BgCheck_PolyIntersectsSubdivision(Vec3f* min, Vec3f* max, CollisionPoly* polyList, Vec3s* vtxList, s16 polyId);
|
||||
u32 BgCheck_InitStaticLookup(CollisionContext* colCtx, PlayState* play, StaticLookup* lookupTbl);
|
||||
s32 BgCheck_IsSmallMemScene(PlayState* play);
|
||||
s32 BgCheck_TryGetCustomMemsize(s32 sceneId, u32* memSize);
|
||||
void BgCheck_SetSubdivisionDimension(f32 min, s32 subdivAmount, f32* max, f32* subdivLength, f32* subdivLengthInv);
|
||||
s32 BgCheck_GetSpecialSceneMaxObjects(PlayState* play, s32* maxNodes, s32* maxPolygons, s32* maxVertices);
|
||||
void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader* colHeader);
|
||||
void BgCheck_SetContextFlags(CollisionContext* colCtx, u32 flags);
|
||||
void BgCheck_UnsetContextFlags(CollisionContext* colCtx, u32 flags);
|
||||
CollisionHeader* BgCheck_GetCollisionHeader(CollisionContext* colCtx, s32 bgId);
|
||||
f32 BgCheck_RaycastFloorImpl(PlayState* play, CollisionContext* colCtx, u16 xpFlags, CollisionPoly** outPoly, s32* outBgId, Vec3f* pos, Actor* actor, u32 arg7, f32 checkDist, s32 arg9);
|
||||
f32 BgCheck_CameraRaycastFloor1(CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor1(CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor2(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor2_1(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor3(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5(CollisionContext* colCtx, CollisionPoly** outPoly, s32* outBgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5_2(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5_3(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor6(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos, f32 checkDist);
|
||||
f32 BgCheck_EntityRaycastFloor7(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_AnyRaycastFloor1(CollisionContext* colCtx, CollisionPoly* outPoly, Vec3f* pos);
|
||||
f32 BgCheck_AnyRaycastFloor2(CollisionContext* colCtx, CollisionPoly* outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_CameraRaycastFloor2(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor8(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor9(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
s32 BgCheck_CheckWallImpl(CollisionContext* colCtx, u16 xpFlags, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight, u8 argA);
|
||||
s32 BgCheck_EntitySphVsWall1(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall2(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall3(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall4(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight);
|
||||
s32 BgCheck_CheckCeilingImpl(CollisionContext* colCtx, u16 xpFlags, f32* outY, Vec3f* pos, f32 checkHeight, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
|
||||
s32 BgCheck_AnyCheckCeiling(CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight);
|
||||
s32 BgCheck_EntityCheckCeiling(CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
|
||||
s32 BgCheck_CameraLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_CameraLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_EntityLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_EntityLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId, Actor* actor);
|
||||
s32 BgCheck_EntityLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId, Actor* actor, f32 checkDist);
|
||||
s32 BgCheck_ProjectileLineTest(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_AnyLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkOneFace);
|
||||
s32 BgCheck_AnyLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace);
|
||||
s32 BgCheck_AnyLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_SphVsFirstPolyImpl(CollisionContext* colCtx, u16 xpFlags, CollisionPoly** outPoly, s32* outBgId, Vec3f* center, f32 radius, Actor* actor, u16 bciFlags);
|
||||
s32 BgCheck_SphVsFirstPoly(CollisionContext* colCtx, Vec3f* center, f32 radius);
|
||||
s32 BgCheck_SphVsFirstWall(CollisionContext* colCtx, Vec3f* center, f32 radius);
|
||||
void SSNodeList_Init(SSNodeList* this);
|
||||
void SSNodeList_Alloc(PlayState* play, SSNodeList* this, s32 tblMax, s32 numPolys);
|
||||
SSNode* SSNodeList_GetNextNode(SSNodeList* this);
|
||||
u16 SSNodeList_GetNextNodeIdx(SSNodeList* this);
|
||||
void ScaleRotPos_Init(ScaleRotPos* srp);
|
||||
void ScaleRotPos_SetValue(ScaleRotPos* srp, Vec3f* scale, Vec3s* rot, Vec3f* pos);
|
||||
s32 ScaleRotPos_IsEqual(ScaleRotPos* a, ScaleRotPos* b);
|
||||
void DynaLookup_ResetLists(DynaLookup* dynaLookup);
|
||||
void DynaLookup_Reset(DynaLookup* dynaLookup);
|
||||
void DynaLookup_ResetVtxStartIndex(u16* vtxStartIndex);
|
||||
void DynaLookup_ResetWaterBoxStartIndex(u16* waterBoxStartIndex);
|
||||
void BgActor_Init(PlayState* play, BgActor* bgActor);
|
||||
void BgActor_SetActor(BgActor* bgActor, Actor* actor, CollisionHeader* colHeader);
|
||||
s32 BgActor_IsTransformUnchanged(BgActor* bgActor);
|
||||
void DynaPoly_NullPolyList(CollisionPoly** polyList);
|
||||
void DynaPoly_AllocPolyList(PlayState* play, CollisionPoly** polyList, s32 numPolys);
|
||||
void DynaPoly_NullVtxList(Vec3s** vtxList);
|
||||
void DynaPoly_AllocVtxList(PlayState* play, Vec3s** vtxList, s32 numVtx);
|
||||
void DynaPoly_InitWaterBoxList(DynaWaterBoxList* waterBoxList);
|
||||
void DynaPoly_AllocWaterBoxList(PlayState* play, DynaWaterBoxList* waterBoxList, s32 numWaterBoxes);
|
||||
void DynaPoly_SetBgActorPrevTransform(PlayState* play, BgActor* bgActor);
|
||||
s32 DynaPoly_IsBgIdBgActor(s32 bgId);
|
||||
void DynaPoly_Init(PlayState* play, DynaCollisionContext* dyna);
|
||||
void DynaPoly_Alloc(PlayState* play, DynaCollisionContext* dyna);
|
||||
s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* actor, CollisionHeader* colHeader);
|
||||
DynaPolyActor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId);
|
||||
void func_800C62BC(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6314(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C636C(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C63C4(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C641C(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6474(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6554(PlayState* play, DynaCollisionContext* dyna);
|
||||
void DynaPoly_DeleteBgActor(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void BgCheck_CalcWaterboxDimensions(Vec3f* minPos, Vec3f* maxXPos, Vec3f* maxZPos, Vec3s* minPosOut, s16* xLength, s16* zLength);
|
||||
void DynaPoly_ExpandSRT(PlayState* play, DynaCollisionContext* dyna, s32 bgId, s32* vtxStartIndex, s32* polyStartIndex, s32* waterBoxStartIndex);
|
||||
void BgCheck_ResetFlagsIfLoadedActor(PlayState* play, DynaCollisionContext* dyna, Actor* actor);
|
||||
void DynaPoly_Setup(PlayState* play, DynaCollisionContext* dyna);
|
||||
void func_800C756C(DynaCollisionContext* dyna, s32* numPolygons, s32* numVertices, s32* numWaterBoxes);
|
||||
void DynaPoly_UpdateBgActorTransforms(PlayState* play, DynaCollisionContext* dyna);
|
||||
void CollisionHeader_SegmentedToVirtual(CollisionHeader* colHeader);
|
||||
void CollisionHeader_GetVirtual(CollisionHeader* colHeader, CollisionHeader** dest);
|
||||
void BgCheck_InitCollisionHeaders(CollisionContext* colCtx, PlayState* play);
|
||||
|
||||
u32 SurfaceType_GetBgCamIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 BgCheck_GetBgCamSettingImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId);
|
||||
u16 BgCheck_GetBgCamSetting(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 BgCheck_GetBgCamCountImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId);
|
||||
u16 BgCheck_GetBgCamCount(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
Vec3s* BgCheck_GetBgCamFuncDataImpl(CollisionContext* colCtx, s32 bgCamIndex, s32 bgId);
|
||||
Vec3s* BgCheck_GetBgCamFuncData(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
|
||||
u32 SurfaceType_GetSceneExitIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C99D4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C99FC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9A24(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9A4C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9A7C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9AB0(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9AE4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9B18(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9B40(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9B68(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9BB8(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 SurfaceType_GetSfx(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9C24(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId, s32 arg3);
|
||||
u32 SurfaceType_GetSlope(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetLightSettingIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetEcho(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsHookshotSurface(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsIgnoredByEntities(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsIgnoredByProjectiles(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsFloorConveyor(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9DDC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetConveyorSpeed(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetConveyorDirection(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsWallDamage(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 WaterBox_GetSurfaceImpl(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox, s32* bgId);
|
||||
s32 WaterBox_GetSurface1(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 WaterBox_GetSurface1_2(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 WaterBox_GetSurface2(PlayState* play, CollisionContext* colCtx, Vec3f* pos, f32 surfaceCheckDist, WaterBox** outWaterBox, s32* bgId);
|
||||
f32 func_800CA568(CollisionContext* colCtx, s32 waterBoxId, s32 bgId);
|
||||
u16 WaterBox_GetBgCamSetting(CollisionContext* colCtx, WaterBox* waterBox, s32 bgId);
|
||||
void WaterBox_GetSceneBgCamSetting(CollisionContext* colCtx, WaterBox* waterBox);
|
||||
u32 WaterBox_GetLightSettingIndex(CollisionContext* colCtx, WaterBox* waterBox);
|
||||
s32 func_800CA6F0(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox, s32* bgId);
|
||||
s32 func_800CA9D0(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 func_800CAA14(CollisionPoly* polyA, CollisionPoly* polyB, Vec3f* pointA, Vec3f* pointB, Vec3f* closestPoint);
|
||||
void BgCheck2_UpdateActorPosition(CollisionContext* colCtx, s32 bgId, Actor* actor);
|
||||
void BgCheck2_UpdateActorYRotation(CollisionContext* colCtx, s32 bgId, Actor* actor);
|
||||
void BgCheck2_AttachToMesh(CollisionContext* colCtx, Actor* actor, s32 bgId);
|
||||
u32 BgCheck2_UpdateActorAttachedToMesh(CollisionContext* colCtx, s32 bgId, Actor* actor);
|
||||
void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 flags);
|
||||
void DynaPolyActor_UpdateCarriedActorPos(CollisionContext* colCtx, s32 bgId, Actor* carriedActor);
|
||||
void DynaPolyActor_UpdateCarriedActorRotY(CollisionContext* colCtx, s32 bgId, Actor* carriedActor);
|
||||
void DynaPolyActor_AttachCarriedActor(CollisionContext* colCtx, Actor* carriedActor, s32 bgId);
|
||||
u32 DynaPolyActor_TransformCarriedActor(CollisionContext* colCtx, s32 bgId, Actor* carriedActor);
|
||||
void DynaPolyActor_Init(DynaPolyActor* dynaActor, s32 transformFlags);
|
||||
void DynaPolyActor_LoadMesh(PlayState* play, DynaPolyActor* dynaActor, CollisionHeader* meshHeader);
|
||||
void DynaPolyActor_ResetState(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetRidingFallingState(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetRidingMovingState(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetRidingMovingStateByIndex(CollisionContext* colCtx, s32 bgId);
|
||||
void DynaPolyActor_SetRidingRotatingState(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetRidingRotatingStateByIndex(CollisionContext* colCtx, s32 bgId);
|
||||
void DynaPolyActor_SetSwitchPressedState(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetHeavySwitchPressedState(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsInRidingFallingState(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsInRidingMovingState(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsInRidingRotatingState(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsInSwitchPressedState(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsInHeavySwitchPressedState(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_UnsetAllInteractFlags(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetActorOnTop(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetPlayerOnTop(DynaPolyActor* dynaActor);
|
||||
void DynaPoly_SetPlayerOnTop(CollisionContext* colCtx, s32 bgId);
|
||||
void DynaPolyActor_SetPlayerAbove(DynaPolyActor* dynaActor);
|
||||
void DynaPoly_SetPlayerAbove(CollisionContext* colCtx, s32 bgId);
|
||||
void DynaPolyActor_SetActorOnSwitch(DynaPolyActor* dynaActor);
|
||||
void DynaPolyActor_SetActorOnHeavySwitch(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsActorOnTop(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsPlayerOnTop(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsPlayerAbove(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsSwitchPressed(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_IsHeavySwitchPressed(DynaPolyActor* dynaActor);
|
||||
s32 DynaPolyActor_ValidateMove(PlayState* play, DynaPolyActor* dynaActor, s16 startRadius, s16 endRadius, s16 startHeight);
|
||||
|
||||
Camera* Camera_Alloc(View* view, CollisionContext* bg, PlayState* play);
|
||||
@@ -1779,34 +1616,34 @@ s32 Player_HasMirrorShieldEquipped(PlayState* play);
|
||||
s32 Player_IsHoldingMirrorShield(PlayState* play);
|
||||
s32 Player_IsHoldingHookshot(Player* player);
|
||||
s32 func_801240DC(Player* player);
|
||||
s32 func_80124110(Player* player, PlayerItemAction itemAction);
|
||||
s32 func_80124148(Player* player);
|
||||
s32 Player_ActionToMeleeWeapon(PlayerItemAction itemAction);
|
||||
s32 Player_GetMeleeWeaponHeld(Player* player);
|
||||
PlayerBButtonSword Player_BButtonSwordFromIA(Player* player, PlayerItemAction itemAction);
|
||||
PlayerBButtonSword Player_GetHeldBButtonSword(Player* player);
|
||||
PlayerMeleeWeapon Player_MeleeWeaponFromIA(PlayerItemAction itemAction);
|
||||
PlayerMeleeWeapon Player_GetMeleeWeaponHeld(Player* player);
|
||||
s32 Player_IsHoldingTwoHandedWeapon(Player* player);
|
||||
s32 Player_ActionToBottle(Player* player, PlayerItemAction itemAction);
|
||||
s32 Player_GetBottleHeld(Player* Player);
|
||||
s32 Player_ActionToExplosive(Player* player, PlayerItemAction itemAction);
|
||||
s32 Player_GetExplosiveHeld(Player* player);
|
||||
s32 Player_ActionToSword(Actor* actor, PlayerItemAction itemAction);
|
||||
PlayerBottle Player_BottleFromIA(Player* player, PlayerItemAction itemAction);
|
||||
PlayerBottle Player_GetBottleHeld(Player* Player);
|
||||
PlayerExplosive Player_ExplosiveFromIA(Player* player, PlayerItemAction itemAction);
|
||||
PlayerExplosive Player_GetExplosiveHeld(Player* player);
|
||||
PlayerSword Player_SwordFromIA(Player* player, PlayerItemAction itemAction);
|
||||
s32 func_801242B4(Player* player);
|
||||
s32 Player_GetEnvironmentalHazard(PlayState* play);
|
||||
void func_80124420(Player* player);
|
||||
void Player_UpdateBunnyEars(Player* player);
|
||||
void func_80124618(struct_80124618 arg0[], f32 curFrame, Vec3f* arg2);
|
||||
void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, PlayerTransformation playerForm, s32 boots, s32 face, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor);
|
||||
void func_80125318(Vec3f* arg0, Vec3s* arg1);
|
||||
void Player_DrawZoraShield(PlayState* play, Player* player);
|
||||
void func_80125500(PlayState* play, Player* player, s32 limbIndex, Vec3f* pos, Vec3s* rot);
|
||||
s32 func_80125D4C(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
|
||||
s32 func_801262C8(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
|
||||
s32 func_801263FC(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
s32 func_80126440(PlayState* play, ColliderQuad* collider, WeaponInfo* weaponInfo, Vec3f* arg3, Vec3f* arg4);
|
||||
s32 Player_OverrideLimbDrawGameplayDefault(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
|
||||
s32 Player_OverrideLimbDrawGameplayFirstPerson(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
|
||||
s32 Player_OverrideLimbDrawGameplayCrawling(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
s32 func_80126440(PlayState* play, ColliderQuad* collider, WeaponInfo* weaponInfo, Vec3f* newTip, Vec3f* newBase);
|
||||
void Player_DrawGetItem(PlayState* play, Player* player);
|
||||
void func_80126B8C(PlayState* play, Player* player);
|
||||
s32 func_80127438(PlayState* play, Player* player, s32 currentMask);
|
||||
s32 func_80128640(PlayState* play, Player* player, Gfx* dlist);
|
||||
void func_80128B74(PlayState* play, Player* player, s32 limbIndex);
|
||||
void func_80128BD0(PlayState* play, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot, Actor* actor);
|
||||
void Player_SetFeetPos(PlayState* play, Player* player, s32 limbIndex);
|
||||
void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot, Actor* actor);
|
||||
|
||||
Gfx* Gfx_SetFog(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f);
|
||||
Gfx* Gfx_SetFogWithSync(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f);
|
||||
@@ -1991,96 +1828,9 @@ s32 Entrance_GetSceneId(u16 entrance);
|
||||
s32 Entrance_GetSceneIdAbsolute(u16 entrance);
|
||||
s32 Entrance_GetSpawnNum(u16 entrance);
|
||||
s32 Entrance_GetTransitionFlags(u16 entrance);
|
||||
|
||||
s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output);
|
||||
void SkelAnime_DrawLimbLod(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawLod(PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawFlexLimbLod(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, s32 lod, Mtx** mtx);
|
||||
void SkelAnime_DrawFlexLod(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawLimbOpa(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
|
||||
void SkelAnime_DrawOpa(PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
|
||||
void SkelAnime_DrawFlexLimbOpa(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, Mtx** limbMatricies);
|
||||
void SkelAnime_DrawFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor);
|
||||
void SkelAnime_DrawTransformFlexLimbOpa(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, Actor* actor, Mtx** mtx);
|
||||
void SkelAnime_DrawTransformFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, Actor* actor);
|
||||
void SkelAnime_GetFrameData(AnimationHeader* animation, s32 frame, s32 limbCount, Vec3s* frameTable);
|
||||
s16 Animation_GetLength(void* animation);
|
||||
s16 Animation_GetLastFrame(void* animation);
|
||||
Gfx* SkelAnime_DrawLimb(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
Gfx* SkelAnime_Draw(PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
Gfx* SkelAnime_DrawFlexLimb(PlayState* play, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Mtx** mtx, Gfx* gfx);
|
||||
Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx);
|
||||
s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable);
|
||||
s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLength2(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation);
|
||||
void SkelAnime_InterpFrameTable(s32 limbCount, Vec3s* dst, Vec3s* start, Vec3s* target, f32 weight);
|
||||
void AnimationContext_Reset(AnimationContext* animationCtx);
|
||||
void AnimationContext_SetNextQueue(PlayState* play);
|
||||
void AnimationContext_DisableQueue(PlayState* play);
|
||||
AnimationEntry* AnimationContext_AddEntry(AnimationContext* animationCtx, AnimationType type);
|
||||
void AnimationContext_SetLoadFrame(PlayState* play, LinkAnimationHeader* animation, s32 frame, s32 limbCount, Vec3s* frameTable);
|
||||
void AnimationContext_SetCopyAll(PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src);
|
||||
void AnimationContext_SetInterp(PlayState* play, s32 vecCount, Vec3s* base, Vec3s* mod, f32 weight);
|
||||
void AnimationContext_SetCopyTrue(PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetCopyFalse(PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetMoveActor(PlayState* play, Actor* actor, SkelAnime* skelAnime, f32 arg3);
|
||||
void AnimationContext_LoadFrame(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyAll(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_Interp(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyTrue(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_CopyFalse(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_MoveActor(PlayState* play, AnimationEntryData* data);
|
||||
void AnimationContext_Update(PlayState* play, AnimationContext* animationCtx);
|
||||
void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, LinkAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer, s32 limbBufCount);
|
||||
void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Update(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Morph(PlayState* play, SkelAnime* skelAnime);
|
||||
void LinkAnimation_AnimateFrame(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Loop(PlayState* play, SkelAnime* skelAnime);
|
||||
s32 LinkAnimation_Once(PlayState* play, SkelAnime* skelAnime);
|
||||
void Animation_SetMorph(PlayState* play, SkelAnime* skelAnime, f32 morphFrames);
|
||||
void LinkAnimation_Change(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void LinkAnimation_PlayOnce(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation);
|
||||
void LinkAnimation_PlayOnceSetSpeed(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed);
|
||||
void LinkAnimation_PlayLoop(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation);
|
||||
void LinkAnimation_PlayLoopSetSpeed(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed);
|
||||
void LinkAnimation_CopyJointToMorph(PlayState* play, SkelAnime* skelAnime);
|
||||
void LinkAnimation_CopyMorphToJoint(PlayState* play, SkelAnime* skelAnime);
|
||||
void LinkAnimation_LoadToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame);
|
||||
void LinkAnimation_LoadToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame);
|
||||
void LinkAnimation_InterpJointMorph(PlayState* play, SkelAnime* skelAnime, f32 weight);
|
||||
void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void LinkAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void LinkAnimation_EndLoop(SkelAnime* skelAnime);
|
||||
s32 Animation_OnFrameImpl(SkelAnime* skelAnime, f32 frame, f32 updateRate);
|
||||
s32 LinkAnimation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
void SkelAnime_Init(PlayState* play, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitFlex(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitSkin(GameState* gameState, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation);
|
||||
void SkelAnime_SetUpdate(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_Update(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_Morph(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_MorphTaper(SkelAnime* skelAnime);
|
||||
void SkelAnime_AnimateFrame(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_LoopFull(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_LoopPartial(SkelAnime* skelAnime);
|
||||
s32 SkelAnime_Once(SkelAnime* skelAnime);
|
||||
void Animation_ChangeImpl(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames, s8 taper);
|
||||
void Animation_Change(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void Animation_PlayOnce(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToPlayOnce(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayOnceSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToLoop(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayLoopSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_EndLoop(SkelAnime* skelAnime);
|
||||
void Animation_Reverse(SkelAnime* skelAnime);
|
||||
void SkelAnime_CopyFrameTableTrue(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_CopyFrameTableFalse(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle);
|
||||
s32 Animation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
void SkelAnime_Free(SkelAnime* skelAnime, PlayState* play);
|
||||
void SkelAnime_CopyFrameTable(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src);
|
||||
|
||||
void SkinMatrix_Vec3fMtxFMultXYZW(MtxF* mf, Vec3f* src, Vec3f* xyzDest, f32* wDest);
|
||||
void SkinMatrix_Vec3fMtxFMultXYZ(MtxF* mf, Vec3f* src, Vec3f* dest);
|
||||
void SkinMatrix_MtxFMtxFMult(MtxF* mfB, MtxF* mfA, MtxF* dest);
|
||||
@@ -2133,9 +1883,10 @@ void VisMono_Destroy(VisMono* this);
|
||||
// void VisMono_DesaturateDList(Gfx* gfx);
|
||||
void VisMono_Draw(VisMono* this, Gfx** gfxp);
|
||||
// void VisMono_DrawOld(VisMono* this);
|
||||
void func_801420C0(void* arg0);
|
||||
void func_801420F4(void* arg0);
|
||||
void func_80142100(void* arg0, Gfx** gfx, u32 arg2);
|
||||
|
||||
void VisZbuf_Init(VisZbuf* this);
|
||||
void VisZbuf_Destroy(VisZbuf* this);
|
||||
void VisZbuf_Draw(VisZbuf* this, Gfx** gfxP, void* zbuffer);
|
||||
|
||||
// void func_80147520(void);
|
||||
void func_80147564(PlayState* play);
|
||||
@@ -2374,7 +2125,7 @@ void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedCon
|
||||
|
||||
void Game_UpdateFramerateVariables(s32 divisor);
|
||||
void Game_SetFramerateDivisor(GameState* gameState, s32 divisor);
|
||||
void GameState_SetFBFilter(Gfx** gfx, u32 arg1);
|
||||
void GameState_SetFBFilter(Gfx** gfx, void* zbuffer);
|
||||
void Game_Nop80173534(GameState* gameState);
|
||||
void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx);
|
||||
void GameState_SetFrameBuffer(GraphicsContext* gfxCtx);
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
|
||||
// To be used with `Magic_Add`, but ensures enough magic is added to fill the magic bar to capacity
|
||||
#define MAGIC_FILL_TO_CAPACITY (((void)0, gSaveContext.magicFillTarget) + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER)
|
||||
#define MAGIC_FILL_TO_CAPACITY (((void)0, gSaveContext.magicFillTarget) + (gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER)
|
||||
|
||||
#define CONTROLLER1(gameState) (&(gameState)->input[0])
|
||||
#define CONTROLLER2(gameState) (&(gameState)->input[1])
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#define SFX_FLAG_MASK 0xC00
|
||||
#define SFX_FLAG 0x800
|
||||
|
||||
#define NA_SE_NONE 0
|
||||
|
||||
// ------------ PLAYER ------------
|
||||
|
||||
#define NA_SE_PL_WALK_GROUND 0x800
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef STACKCHECK_H
|
||||
#define STACKCHECK_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
typedef enum StackStatus {
|
||||
/* 0 */ STACK_STATUS_OK,
|
||||
/* 1 */ STACK_STATUS_WARNING,
|
||||
/* 2 */ STACK_STATUS_OVERFLOW
|
||||
} StackStatus;
|
||||
|
||||
typedef struct StackEntry {
|
||||
/* 0x00 */ struct StackEntry* next;
|
||||
/* 0x04 */ struct StackEntry* prev;
|
||||
/* 0x08 */ void* head;
|
||||
/* 0x0C */ void* tail;
|
||||
/* 0x10 */ u32 initValue;
|
||||
/* 0x14 */ s32 minSpace;
|
||||
/* 0x18 */ const char* name;
|
||||
} StackEntry; // size = 0x1C
|
||||
|
||||
void StackCheck_Init(StackEntry* entry, void* stackBottom, void* stackTop, u32 initValue, s32 minSpace, const char* name);
|
||||
void StackCheck_Cleanup(StackEntry* entry);
|
||||
u32 StackCheck_Check(StackEntry* entry);
|
||||
|
||||
#endif
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef _ULTRA64_MESSAGE_H_
|
||||
#define _ULTRA64_MESSAGE_H_
|
||||
#ifndef ULTRA64_MESSAGE_H
|
||||
#define ULTRA64_MESSAGE_H
|
||||
|
||||
#include "ultra64/thread.h"
|
||||
|
||||
|
||||
+10
-10
@@ -54,16 +54,16 @@ typedef struct {
|
||||
} __OSThreadprofile; // size = 0x10
|
||||
|
||||
typedef struct OSThread {
|
||||
/*0x00*/ struct OSThread* next;
|
||||
/*0x04*/ OSPri priority;
|
||||
/*0x08*/ struct OSThread** queue;
|
||||
/*0x0C*/ struct OSThread* tlnext;
|
||||
/*0x10*/ u16 state;
|
||||
/*0x12*/ u16 flags;
|
||||
/*0x14*/ OSId id;
|
||||
/*0x18*/ s32 fp;
|
||||
/*0x1C*/ __OSThreadprofile* thprof;
|
||||
/*0x20*/ __OSThreadContext context;
|
||||
/* 0x00 */ struct OSThread* next;
|
||||
/* 0x04 */ OSPri priority;
|
||||
/* 0x08 */ struct OSThread** queue;
|
||||
/* 0x0C */ struct OSThread* tlnext;
|
||||
/* 0x10 */ u16 state;
|
||||
/* 0x12 */ u16 flags;
|
||||
/* 0x14 */ OSId id;
|
||||
/* 0x18 */ s32 fp;
|
||||
/* 0x1C */ __OSThreadprofile* thprof;
|
||||
/* 0x20 */ __OSThreadContext context;
|
||||
} OSThread; // size = 0x1B0
|
||||
|
||||
#endif
|
||||
|
||||
+4
-4
@@ -37,8 +37,7 @@ extern FaultDrawer* sFaultDrawContext;
|
||||
extern FaultDrawer sFaultDrawerDefault;
|
||||
extern s32 gLoadLogSeverity;
|
||||
extern s32 gLoad2LogSeverity;
|
||||
extern StackEntry* sStackInfoListStart;
|
||||
extern StackEntry* sStackInfoListEnd;
|
||||
|
||||
// extern UNK_TYPE1 sGfxPrintFontTLUT;
|
||||
// extern UNK_TYPE1 sGfxPrintRainbowTLUT;
|
||||
// extern UNK_TYPE1 sGfxPrintRainbowData;
|
||||
@@ -2259,7 +2258,7 @@ extern char D_801ED950[80];
|
||||
extern char D_801ED9A0[80];
|
||||
extern Vec3f D_801ED9F0[3];
|
||||
extern Vec3f D_801EDA18[3];
|
||||
extern MtxF D_801EDA40;
|
||||
extern MtxF sModelToWorldMtxF;
|
||||
extern Vec3f D_801EDA80[3];
|
||||
extern char D_801EDAA8[80];
|
||||
extern char D_801EDAF8[80];
|
||||
@@ -2440,7 +2439,7 @@ extern u8 sMotionBlurStatus;
|
||||
|
||||
extern UNK_TYPE1 D_801F7FF0;
|
||||
extern struct_801F8010 D_801F8010;
|
||||
extern struct_801F8020 D_801F8020;
|
||||
extern VisZbuf sVisZbuf;
|
||||
extern VisMono sMonoColors;
|
||||
extern UNK_TYPE1 D_801F8048;
|
||||
extern FaultAddrConvClient sGraphFaultAddrConvClient;
|
||||
@@ -2451,6 +2450,7 @@ extern OSTime sGraphTaskStartTime;
|
||||
|
||||
extern u32 gSegments[NUM_SEGMENTS];
|
||||
extern SchedContext gSchedContext;
|
||||
|
||||
extern OSThread gGraphThread;
|
||||
extern PadMgr gPadMgr;
|
||||
|
||||
|
||||
+6
-21
@@ -30,6 +30,7 @@
|
||||
#include "thga.h"
|
||||
#include "z64actor.h"
|
||||
#include "z64animation.h"
|
||||
#include "z64animation_legacy.h"
|
||||
#include "z64audio.h"
|
||||
#include "z64bgcheck.h"
|
||||
#include "z64camera.h"
|
||||
@@ -576,22 +577,6 @@ typedef struct {
|
||||
/* 0x47F */ UNK_TYPE1 pad47F[0x1];
|
||||
} PadMgr; // size = 0x480
|
||||
|
||||
typedef struct StackEntry {
|
||||
/* 0x00 */ struct StackEntry* next;
|
||||
/* 0x04 */ struct StackEntry* prev;
|
||||
/* 0x08 */ u32 head;
|
||||
/* 0x0C */ u32 tail;
|
||||
/* 0x10 */ u32 initValue;
|
||||
/* 0x14 */ s32 minSpace;
|
||||
/* 0x18 */ const char* name;
|
||||
} StackEntry; // size = 0x1C
|
||||
|
||||
typedef enum {
|
||||
STACK_STATUS_OK = 0,
|
||||
STACK_STATUS_WARNING = 1,
|
||||
STACK_STATUS_OVERFLOW = 2
|
||||
} StackStatus;
|
||||
|
||||
#define OS_SC_RETRACE_MSG 1
|
||||
#define OS_SC_DONE_MSG 2
|
||||
#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c
|
||||
@@ -661,14 +646,14 @@ typedef struct PlayState {
|
||||
/* 0x1878C */ void (*unk_1878C)(struct PlayState* play);
|
||||
/* 0x18790 */ void (*unk_18790)(struct PlayState* play, s16 arg1);
|
||||
/* 0x18794 */ PlayerItemAction (*unk_18794)(struct PlayState* play, Player* player, ItemId itemId);
|
||||
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, LinkAnimationHeader* talkAnim, s32 animMode);
|
||||
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, PlayerAnimationHeader* talkAnim, AnimationMode animMode);
|
||||
/* 0x1879C */ s16 playerActorCsIds[10];
|
||||
/* 0x187B0 */ MtxF viewProjectionMtxF;
|
||||
/* 0x187F0 */ Vec3f projectionMtxFDiagonal;
|
||||
/* 0x187FC */ MtxF billboardMtxF;
|
||||
/* 0x1883C */ Mtx* billboardMtx;
|
||||
/* 0x18840 */ u32 gameplayFrames;
|
||||
/* 0x18844 */ u8 unk_18844;
|
||||
/* 0x18844 */ u8 unk_18844; // bool
|
||||
/* 0x18845 */ u8 haltAllActors;
|
||||
/* 0x18846 */ s16 numSetupActors;
|
||||
/* 0x18848 */ u8 numRooms;
|
||||
@@ -755,9 +740,9 @@ typedef struct {
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 useRgba;
|
||||
/* 0x4 */ u32 setScissor;
|
||||
/* 0x8 */ Color_RGBA8 primColor;
|
||||
/* 0xC */ Color_RGBA8 envColor;
|
||||
} struct_801F8020; // size = 0x10
|
||||
/* 0x8 */ Color_RGBA8_u32 primColor;
|
||||
/* 0xC */ Color_RGBA8_u32 envColor;
|
||||
} VisZbuf; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 unk_00;
|
||||
|
||||
+30
-7
@@ -134,6 +134,7 @@ typedef struct {
|
||||
/* 0x18 */ Vec3f feetPos[2]; // Update by using `Actor_SetFeetPos` in PostLimbDrawOpa
|
||||
} ActorShape; // size = 0x30
|
||||
|
||||
// Flags for bgCheckFlags
|
||||
#define BGCHECKFLAG_GROUND (1 << 0) // Standing on the ground
|
||||
#define BGCHECKFLAG_GROUND_TOUCH (1 << 1) // Has touched the ground (only active for 1 frame)
|
||||
#define BGCHECKFLAG_GROUND_LEAVE (1 << 2) // Has left the ground (only active for 1 frame)
|
||||
@@ -148,6 +149,20 @@ typedef struct {
|
||||
#define BGCHECKFLAG_PLAYER_800 (1 << 11) //
|
||||
#define BGCHECKFLAG_PLAYER_1000 (1 << 12) //
|
||||
|
||||
// Flags for Actor_UpdateBgCheckInfo
|
||||
#define UPDBGCHECKINFO_FLAG_1 (1 << 0) // check wall
|
||||
#define UPDBGCHECKINFO_FLAG_2 (1 << 1) // check ceiling
|
||||
#define UPDBGCHECKINFO_FLAG_4 (1 << 2) // check floor and water
|
||||
#define UPDBGCHECKINFO_FLAG_8 (1 << 3)
|
||||
#define UPDBGCHECKINFO_FLAG_10 (1 << 4)
|
||||
#define UPDBGCHECKINFO_FLAG_20 (1 << 5) // unused
|
||||
#define UPDBGCHECKINFO_FLAG_40 (1 << 6) // disable water ripples
|
||||
#define UPDBGCHECKINFO_FLAG_80 (1 << 7)
|
||||
#define UPDBGCHECKINFO_FLAG_100 (1 << 8)
|
||||
#define UPDBGCHECKINFO_FLAG_200 (1 << 9)
|
||||
#define UPDBGCHECKINFO_FLAG_400 (1 << 10) // check water
|
||||
#define UPDBGCHECKINFO_FLAG_800 (1 << 11)
|
||||
|
||||
typedef struct Actor {
|
||||
/* 0x000 */ s16 id; // Actor ID
|
||||
/* 0x002 */ u8 category; // Actor category. Refer to the corresponding enum for values
|
||||
@@ -214,15 +229,23 @@ typedef enum {
|
||||
/* 1 */ FOOT_RIGHT
|
||||
} ActorFootIndex;
|
||||
|
||||
#define DYNA_TRANSFORM_POS (1 << 0) // Position of the actors on top follows the dynapoly actor's movement.
|
||||
#define DYNA_TRANSFORM_ROT_Y (1 << 1) // The Y rotation of the actors on top follows the dynapoly actor's Y rotation.
|
||||
|
||||
#define DYNA_INTERACT_ACTOR_ON_TOP (1 << 0) // There is an actor standing on the collision of the dynapoly actor
|
||||
#define DYNA_INTERACT_PLAYER_ON_TOP (1 << 1) // The player actor is standing on the collision of the dynapoly actor
|
||||
#define DYNA_INTERACT_PLAYER_ABOVE (1 << 2) // The player is directly above the collision of the dynapoly actor (any distance above)
|
||||
#define DYNA_INTERACT_ACTOR_ON_SWITCH (1 << 3) // Like the ACTOR_ON_TOP flag but only actors with ACTOR_FLAG_CAN_PRESS_SWITCH
|
||||
#define DYNA_INTERACT_ACTOR_ON_HEAVY_SWITCH (1 << 4) // Like the ACTOR_ON_TOP flag but only actors with ACTOR_FLAG_CAN_PRESS_HEAVY_SWITCH
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ s32 bgId;
|
||||
/* 0x148 */ f32 pushForce;
|
||||
/* 0x14C */ f32 unk14C;
|
||||
/* 0x150 */ s16 yRotation;
|
||||
/* 0x154 */ u32 flags;
|
||||
/* 0x158 */ u8 stateFlags;
|
||||
/* 0x15A */ s16 pad15A;
|
||||
/* 0x154 */ u32 transformFlags;
|
||||
/* 0x158 */ u8 interactFlags;
|
||||
} DynaPolyActor; // size = 0x15C
|
||||
|
||||
|
||||
@@ -513,8 +536,8 @@ typedef enum {
|
||||
#define ACTOR_FLAG_8000 (1 << 15)
|
||||
//
|
||||
#define ACTOR_FLAG_10000 (1 << 16)
|
||||
//
|
||||
#define ACTOR_FLAG_20000 (1 << 17)
|
||||
// actor can press and hold down heavy switches
|
||||
#define ACTOR_FLAG_CAN_PRESS_HEAVY_SWITCH (1 << 17)
|
||||
//
|
||||
#define ACTOR_FLAG_40000 (1 << 18)
|
||||
//
|
||||
@@ -531,8 +554,8 @@ typedef enum {
|
||||
#define ACTOR_FLAG_1000000 (1 << 24)
|
||||
//
|
||||
#define ACTOR_FLAG_2000000 (1 << 25)
|
||||
//
|
||||
#define ACTOR_FLAG_4000000 (1 << 26)
|
||||
// actor can press and hold down switches
|
||||
#define ACTOR_FLAG_CAN_PRESS_SWITCH (1 << 26)
|
||||
// Prevents locking on with Z targeting an actor even if Tatl is floating over it
|
||||
#define ACTOR_FLAG_CANT_LOCK_ON (1 << 27)
|
||||
//
|
||||
|
||||
+80
-37
@@ -11,10 +11,7 @@ struct Actor;
|
||||
struct SkelAnime;
|
||||
struct PlayerAnimationFrame;
|
||||
|
||||
#define LINK_ANIMETION_OFFSET(addr, offset) \
|
||||
(SEGMENT_ROM_START(link_animetion) + ((uintptr_t)addr & 0xFFFFFF) + ((u32)offset))
|
||||
#define LIMB_DONE 0xFF
|
||||
#define ANIMATION_ENTRY_MAX 50
|
||||
|
||||
#define ANIM_FLAG_1 (1 << 0)
|
||||
#define ANIM_FLAG_UPDATEY (1 << 1)
|
||||
@@ -30,9 +27,9 @@ typedef enum AnimationMode {
|
||||
/* 5 */ ANIMMODE_LOOP_PARTIAL_INTERP
|
||||
} AnimationMode;
|
||||
|
||||
typedef enum {
|
||||
typedef enum {
|
||||
/* -1 */ ANIMTAPER_DECEL = -1,
|
||||
/* 0 */ ANIMTAPER_NONE,
|
||||
/* 0 */ ANIMTAPER_NONE,
|
||||
/* 1 */ ANIMTAPER_ACCEL
|
||||
} AnimationTapers;
|
||||
|
||||
@@ -82,35 +79,19 @@ typedef struct {
|
||||
/* 0xC */ u16 staticIndexMax;
|
||||
} AnimationHeader; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMax;
|
||||
/* 0x02 */ s16 x;
|
||||
/* 0x04 */ s16 yMax;
|
||||
/* 0x06 */ s16 y;
|
||||
/* 0x08 */ s16 zMax;
|
||||
/* 0x10 */ s16 z;
|
||||
} JointKey; // size = 0x12
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 frameCount;
|
||||
/* 0x2 */ s16 limbCount;
|
||||
/* 0x4 */ s16* frameData;
|
||||
/* 0x8 */ JointKey* jointKey;
|
||||
} LegacyAnimationHeader; // size = 0xC
|
||||
|
||||
typedef enum {
|
||||
ANIMATION_LINKANIMETION,
|
||||
ANIMENTRY_COPYALL,
|
||||
ANIMENTRY_INTERP,
|
||||
ANIMENTRY_COPYTRUE,
|
||||
ANIMENTRY_COPYFALSE,
|
||||
ANIMENTRY_MOVEACTOR
|
||||
/* 0 */ ANIMATION_LINKANIMETION,
|
||||
/* 1 */ ANIMENTRY_COPYALL,
|
||||
/* 2 */ ANIMENTRY_INTERP,
|
||||
/* 3 */ ANIMENTRY_COPYTRUE,
|
||||
/* 4 */ ANIMENTRY_COPYFALSE,
|
||||
/* 5 */ ANIMENTRY_MOVEACTOR
|
||||
} AnimationType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ DmaRequest req;
|
||||
/* 0x20 */ OSMesgQueue msgQueue;
|
||||
/* 0x38 */ OSMesg msg;
|
||||
/* 0x38 */ OSMesg msg[1];
|
||||
} AnimEntryLoadFrame; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
@@ -166,16 +147,16 @@ typedef struct {
|
||||
|
||||
typedef struct AnimationContext {
|
||||
/* 0x000 */ s16 animationCount;
|
||||
/* 0x004 */ AnimationEntry entries[ANIMATION_ENTRY_MAX];
|
||||
/* 0x004 */ AnimationEntry entries[50];
|
||||
} AnimationContext; // size = 0xC84
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ AnimationHeaderCommon common;
|
||||
/* 0x4 */ union {
|
||||
void* segmentVoid;
|
||||
struct PlayerAnimationFrame* segment;
|
||||
struct PlayerAnimationFrame* linkAnimSegment;
|
||||
};
|
||||
} LinkAnimationHeader; // size = 0x8
|
||||
} PlayerAnimationHeader; // size = 0x8
|
||||
|
||||
typedef struct SkelAnime {
|
||||
/* 0x00 */ u8 limbCount; // Number of limbs in the skeleton
|
||||
@@ -183,7 +164,7 @@ typedef struct SkelAnime {
|
||||
/* 0x02 */ u8 dListCount; // Number of display lists in a flexible skeleton
|
||||
/* 0x03 */ s8 taper; // Tapering to use when morphing between animations. Only used by Door_Warp1.
|
||||
/* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb, or SkinLimb.
|
||||
/* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader.
|
||||
/* 0x08 */ void* animation; // Can be an AnimationHeader or PlayerAnimationHeader.
|
||||
/* 0x0C */ f32 startFrame; // In mode 4, start of partial loop.
|
||||
/* 0x10 */ f32 endFrame; // In mode 2, Update returns true when curFrame is equal to this. In mode 4, end of partial loop.
|
||||
/* 0x14 */ f32 animLength; // Total number of frames in the current animation's file.
|
||||
@@ -195,10 +176,10 @@ typedef struct SkelAnime {
|
||||
/* 0x2C */ f32 morphRate; // Reciprocal of the number of frames in the morph
|
||||
/* 0x30 */ union {
|
||||
s32 (*normal)(struct SkelAnime*);// Can be Loop, Partial loop, Play once, Morph, or Tapered morph
|
||||
s32 (*link)(struct PlayState*, struct SkelAnime*); // Loop, Play once, and Morph
|
||||
s32 (*player)(struct PlayState*, struct SkelAnime*); // Loop, Play once, and Morph
|
||||
} update;
|
||||
/* 0x34 */ s8 initFlags; // Flags used when initializing Link's skeleton
|
||||
/* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace.
|
||||
/* 0x34 */ s8 initFlags; // Flags used when initializing Player's skeleton
|
||||
/* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace.
|
||||
/* 0x36 */ s16 prevRot; // Previous rotation in worldspace.
|
||||
/* 0x38 */ Vec3s prevTransl; // Previous modelspace translation.
|
||||
/* 0x3E */ Vec3s baseTransl; // Base modelspace translation.
|
||||
@@ -228,8 +209,6 @@ typedef void (*TransformLimbDraw)(struct PlayState* play, s32 limbIndex, struct
|
||||
|
||||
typedef void (*AnimationEntryCallback)(struct PlayState*, AnimationEntryData*);
|
||||
|
||||
extern u32 link_animetion_segment;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AnimationHeader* animation;
|
||||
/* 0x04 */ f32 playSpeed;
|
||||
@@ -324,4 +303,68 @@ typedef s32 (*OverrideKeyframeDrawScaled)(struct PlayState* play, SkeletonInfo*
|
||||
typedef void (*PostKeyframeDrawScaled)(struct PlayState* play, SkeletonInfo* skeleton, s32 limbIndex, Gfx** dList,
|
||||
u8* flags, struct Actor* actor, Vec3f* scale, Vec3s* rot, Vec3f* pos);
|
||||
|
||||
void SkelAnime_DrawLod(struct PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, struct Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawFlexLod(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, struct Actor* actor, s32 lod);
|
||||
void SkelAnime_DrawOpa(struct PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, struct Actor* actor);
|
||||
void SkelAnime_DrawFlexOpa(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, struct Actor* actor);
|
||||
void SkelAnime_DrawTransformFlexOpa(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, TransformLimbDrawOpa transformLimbDraw, struct Actor* actor);
|
||||
s16 Animation_GetLastFrame(void* animation);
|
||||
Gfx* SkelAnime_Draw(struct PlayState* play, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, struct Actor* actor, Gfx* gfx);
|
||||
Gfx* SkelAnime_DrawFlex(struct PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, struct Actor* actor, Gfx* gfx);
|
||||
|
||||
void AnimationContext_Reset(AnimationContext* animationCtx);
|
||||
void AnimationContext_SetNextQueue(struct PlayState* play);
|
||||
void AnimationContext_DisableQueue(struct PlayState* play);
|
||||
void AnimationContext_SetLoadFrame(struct PlayState* play, PlayerAnimationHeader* animation, s32 frame, s32 limbCount, Vec3s* frameTable);
|
||||
void AnimationContext_SetCopyAll(struct PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src);
|
||||
void AnimationContext_SetInterp(struct PlayState* play, s32 vecCount, Vec3s* base, Vec3s* mod, f32 weight);
|
||||
void AnimationContext_SetCopyTrue(struct PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetCopyFalse(struct PlayState* play, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void AnimationContext_SetMoveActor(struct PlayState* play, struct Actor* actor, SkelAnime* skelAnime, f32 arg3);
|
||||
|
||||
void AnimationContext_Update(struct PlayState* play, AnimationContext* animationCtx);
|
||||
void SkelAnime_InitPlayer(struct PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, PlayerAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer, s32 limbBufCount);
|
||||
void PlayerAnimation_SetUpdateFunction(SkelAnime* skelAnime);
|
||||
s32 PlayerAnimation_Update(struct PlayState* play, SkelAnime* skelAnime);
|
||||
void Animation_SetMorph(struct PlayState* play, SkelAnime* skelAnime, f32 morphFrames);
|
||||
void PlayerAnimation_Change(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void PlayerAnimation_PlayOnce(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation);
|
||||
void PlayerAnimation_PlayOnceSetSpeed(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed);
|
||||
void PlayerAnimation_PlayLoop(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation);
|
||||
void PlayerAnimation_PlayLoopSetSpeed(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 playSpeed);
|
||||
void PlayerAnimation_CopyJointToMorph(struct PlayState* play, SkelAnime* skelAnime);
|
||||
void PlayerAnimation_CopyMorphToJoint(struct PlayState* play, SkelAnime* skelAnime);
|
||||
void PlayerAnimation_LoadToMorph(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 frame);
|
||||
void PlayerAnimation_LoadToJoint(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation, f32 frame);
|
||||
void PlayerAnimation_InterpJointMorph(struct PlayState* play, SkelAnime* skelAnime, f32 weight);
|
||||
void PlayerAnimation_BlendToJoint(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation1, f32 frame1, PlayerAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void PlayerAnimation_BlendToMorph(struct PlayState* play, SkelAnime* skelAnime, PlayerAnimationHeader* animation1, f32 frame1, PlayerAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer);
|
||||
void PlayerAnimation_EndLoop(SkelAnime* skelAnime);
|
||||
s32 PlayerAnimation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
|
||||
void SkelAnime_Init(struct PlayState* play, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitFlex(struct PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount);
|
||||
void SkelAnime_InitSkin(struct GameState* gameState, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animation);
|
||||
|
||||
s32 SkelAnime_Update(SkelAnime* skelAnime);
|
||||
void Animation_ChangeImpl(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames, s8 taper);
|
||||
void Animation_Change(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames);
|
||||
void Animation_PlayOnce(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToPlayOnce(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayOnceSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animation);
|
||||
void Animation_MorphToLoop(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames);
|
||||
void Animation_PlayLoopSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed);
|
||||
void Animation_EndLoop(SkelAnime* skelAnime);
|
||||
void Animation_Reverse(SkelAnime* skelAnime);
|
||||
void SkelAnime_CopyFrameTableTrue(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_CopyFrameTableFalse(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag);
|
||||
void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle);
|
||||
s32 Animation_OnFrame(SkelAnime* skelAnime, f32 frame);
|
||||
void SkelAnime_Free(SkelAnime* skelAnime, struct PlayState* play);
|
||||
|
||||
// ZAPD compatibility typedefs
|
||||
// TODO: Remove when ZAPD adds support for them
|
||||
typedef PlayerAnimationHeader LinkAnimationHeader;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef Z64_ANIMATION_LEGACY_H
|
||||
#define Z64_ANIMATION_LEGACY_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64math.h"
|
||||
|
||||
typedef struct LegacyLimb {
|
||||
/* 0x00 */ Gfx* dList;
|
||||
/* 0x04 */ Vec3f trans;
|
||||
/* 0x10 */ Vec3s rot;
|
||||
/* 0x18 */ struct LegacyLimb* sibling;
|
||||
/* 0x1C */ struct LegacyLimb* child;
|
||||
} LegacyLimb; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMax;
|
||||
/* 0x02 */ s16 x;
|
||||
/* 0x04 */ s16 yMax;
|
||||
/* 0x06 */ s16 y;
|
||||
/* 0x08 */ s16 zMax;
|
||||
/* 0x10 */ s16 z;
|
||||
} LegacyJointKey; // size = 0x12
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 frameCount;
|
||||
/* 0x2 */ s16 limbCount;
|
||||
/* 0x4 */ s16* frameData;
|
||||
/* 0x8 */ LegacyJointKey* jointKey;
|
||||
} LegacyAnimationHeader; // size = 0xC
|
||||
|
||||
s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable);
|
||||
s16 Animation_GetLimbCountLegacy(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLengthLegacy(LegacyAnimationHeader* animation);
|
||||
s16 Animation_GetLastFrameLegacy(LegacyAnimationHeader* animation);
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user