mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-09 21:51:32 -04:00
Merge remote-tracking branch 'upstream/master' into skelanimecleanup
This commit is contained in:
@@ -119,13 +119,13 @@
|
||||
<Texture Name="gMinigameCountdown3Tex" OutName="minigame_countdown_3" Format="ia8" Width="24" Height="32" Offset="0x7828"/>
|
||||
|
||||
<!-- The letters of "PERFECT!" -->
|
||||
<Texture Name="gMinigameLetterPTex" OutName="minigame_letter_p" Format="i4" Width="32" Height="33" Offset="0x7B28"/>
|
||||
<Texture Name="gMinigameLetterETex" OutName="minigame_letter_e" Format="i4" Width="32" Height="33" Offset="0x7D38"/>
|
||||
<Texture Name="gMinigameLetterRTex" OutName="minigame_letter_r" Format="i4" Width="32" Height="33" Offset="0x7F48"/>
|
||||
<Texture Name="gMinigameLetterFTex" OutName="minigame_letter_f" Format="i4" Width="32" Height="33" Offset="0x8158"/>
|
||||
<Texture Name="gMinigameLetterCTex" OutName="minigame_letter_c" Format="i4" Width="32" Height="33" Offset="0x8368"/>
|
||||
<Texture Name="gMinigameLetterTTex" OutName="minigame_letter_t" Format="i4" Width="32" Height="33" Offset="0x8578"/>
|
||||
<Texture Name="gMinigameExclamationTex" OutName="minigame_exclamation" Format="i4" Width="32" Height="33" Offset="0x8788"/>
|
||||
<Texture Name="gPerfectLetterPTex" OutName="letter_perfect_p" Format="i4" Width="32" Height="33" Offset="0x7B28"/>
|
||||
<Texture Name="gPerfectLetterETex" OutName="letter_perfect_e" Format="i4" Width="32" Height="33" Offset="0x7D38"/>
|
||||
<Texture Name="gPerfectLetterRTex" OutName="letter_perfect_r" Format="i4" Width="32" Height="33" Offset="0x7F48"/>
|
||||
<Texture Name="gPerfectLetterFTex" OutName="letter_perfect_f" Format="i4" Width="32" Height="33" Offset="0x8158"/>
|
||||
<Texture Name="gPerfectLetterCTex" OutName="letter_perfect_c" Format="i4" Width="32" Height="33" Offset="0x8368"/>
|
||||
<Texture Name="gPerfectLetterTTex" OutName="letter_perfect_t" Format="i4" Width="32" Height="33" Offset="0x8578"/>
|
||||
<Texture Name="gPerfectLetterExclamationTex" OutName="letter_perfect_exclamation" Format="i4" Width="32" Height="33" Offset="0x8788"/>
|
||||
|
||||
<!-- Similar to stray fairy icons in icon_item_dungeon_static, except with a turned head -->
|
||||
<Texture Name="gStrayFairyWoodfallIconTex" OutName="stray_fairy_woodfall_icon" Format="rgba32" Width="32" Height="24" Offset="0x8998"/>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Root>
|
||||
<File Name="object_ah" Segment="6">
|
||||
<Animation Name="object_ah_Anim_000968" Offset="0x968" />
|
||||
<Animation Name="object_ah_Anim_000DDC" Offset="0xDDC" />
|
||||
<Animation Name="object_ah_Anim_001860" Offset="0x1860" />
|
||||
<Animation Name="object_ah_Anim_002280" Offset="0x2280" />
|
||||
<Animation Name="object_ah_Anim_000968" Offset="0x968" /> <!-- Original name is "ah_deteike" (probably based on her Japanese dialogue, where she tells Kafei to "get out") -->
|
||||
<Animation Name="object_ah_Anim_000DDC" Offset="0xDDC" /> <!-- Original name is "ah_suwari" ("sitting") -->
|
||||
<Animation Name="object_ah_Anim_001860" Offset="0x1860" /> <!-- Original name is "ah_wait" -->
|
||||
<Animation Name="object_ah_Anim_002280" Offset="0x2280" /> <!-- Original name is "ah_wait2deteike" -->
|
||||
<DList Name="object_ah_DL_004A60" Offset="0x4A60" />
|
||||
<DList Name="object_ah_DL_004B70" Offset="0x4B70" />
|
||||
<DList Name="object_ah_DL_004C80" Offset="0x4C80" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Root>
|
||||
<File Name="object_al" Segment="6">
|
||||
<Animation Name="object_al_Anim_000C54" Offset="0xC54" />
|
||||
<Animation Name="object_al_Anim_000C54" Offset="0xC54" /> <!-- Original name is "al_suwaruA" ("suwaru" = "to sit") -->
|
||||
<DList Name="gMadameAromaRightFootDL" Offset="0x45F0" />
|
||||
<DList Name="gMadameAromaLeftFootDL" Offset="0x4738" />
|
||||
<DList Name="gMadameAromaLegsDL" Offset="0x4880" />
|
||||
@@ -66,10 +66,10 @@
|
||||
<Limb Name="gMadameAromaLeftFootLimb" Type="Standard" EnumName="MADAME_AROMA_LIMB_LEFT_FOOT" Offset="0xA058" />
|
||||
<Limb Name="gMadameAromaRightFootLimb" Type="Standard" EnumName="MADAME_AROMA_LIMB_RIGHT_FOOT" Offset="0xA064" />
|
||||
<Skeleton Name="gMadameAromaSkel" Type="Flex" LimbType="Standard" LimbNone="MADAME_AROMA_LIMB_NONE" LimbMax="MADAME_AROMA_LIMB_MAX" EnumName="MadameAromaLimb" Offset="0xA0D8" />
|
||||
<Animation Name="object_al_Anim_00A764" Offset="0xA764" />
|
||||
<Animation Name="object_al_Anim_00ACA0" Offset="0xACA0" />
|
||||
<Animation Name="object_al_Anim_00BCA4" Offset="0xBCA4" />
|
||||
<Animation Name="object_al_Anim_00CA28" Offset="0xCA28" />
|
||||
<Animation Name="object_al_Anim_00DBE0" Offset="0xDBE0" />
|
||||
<Animation Name="object_al_Anim_00A764" Offset="0xA764" /> <!-- Original name is "al_suwaruAtalk" -->
|
||||
<Animation Name="object_al_Anim_00ACA0" Offset="0xACA0" /> <!-- Original name is "al_suwaruB2talk" -->
|
||||
<Animation Name="object_al_Anim_00BCA4" Offset="0xBCA4" /> <!-- Original name is "al_suwaruBarayada" ("arayada" = "Oh no; Oh dear") -->
|
||||
<Animation Name="object_al_Anim_00CA28" Offset="0xCA28" /> <!-- Original name is "al_suwaruBtalk" -->
|
||||
<Animation Name="object_al_Anim_00DBE0" Offset="0xDBE0" /> <!-- Original name is "al_suwaruBwait" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<Root>
|
||||
<File Name="object_am" Segment="6">
|
||||
<Collision Name="object_am_Colheader_000118" Offset="0x118" />
|
||||
<Animation Name="gArmosHopAnim" Offset="0x238" />
|
||||
<Animation Name="gArmosPushedBackAnim" Offset="0x33C" />
|
||||
<Animation Name="gArmosHopAnim" Offset="0x238" /> <!-- Original name is "am_jump" -->
|
||||
<Animation Name="gArmosPushedBackAnim" Offset="0x33C" /> <!-- Original name is "am_mamori" ("protection; defense") -->
|
||||
<DList Name="object_am_DL_0005D0" Offset="0x5D0" />
|
||||
<DList Name="object_am_DL_0007A8" Offset="0x7A8" />
|
||||
<DList Name="object_am_DL_0016C8" Offset="0x16C8" />
|
||||
@@ -35,7 +35,7 @@
|
||||
<Limb Name="object_am_Standardlimb_0058FC" Type="Standard" EnumName="OBJECT_AM_LIMB_BASE" Offset="0x58FC" />
|
||||
<Limb Name="object_am_Standardlimb_005908" Type="Standard" EnumName="OBJECT_AM_LIMB_0D" Offset="0x5908" />
|
||||
<Skeleton Name="object_am_Skel_005948" Type="Normal" LimbType="Standard" LimbNone="OBJECT_AM_LIMB_NONE" LimbMax="OBJECT_AM_LIMB_MAX" EnumName="ObjectAmLimb" Offset="0x5948" />
|
||||
<Animation Name="gArmosTakeDamageAnim" Offset="0x5B3C" />
|
||||
<Animation Name="gArmosTakeDamageAnim" Offset="0x5B3C" /> <!-- Original name is "am_yarare" ("to suffer damage") -->
|
||||
<Collision Name="object_am_Colheader_005CF8" Offset="0x5CF8" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<Root>
|
||||
<File Name="object_an1" Segment="6">
|
||||
<Animation Name="object_an1_Anim_001090" Offset="0x1090" />
|
||||
<Animation Name="object_an1_Anim_00144C" Offset="0x144C" />
|
||||
<Animation Name="object_an1_Anim_001E74" Offset="0x1E74" />
|
||||
<Animation Name="object_an1_Anim_0026B4" Offset="0x26B4" />
|
||||
<Animation Name="object_an1_Anim_00341C" Offset="0x341C" />
|
||||
<Animation Name="object_an1_Anim_003EA8" Offset="0x3EA8" />
|
||||
<Animation Name="object_an1_Anim_00544C" Offset="0x544C" />
|
||||
<Animation Name="object_an1_Anim_0065C8" Offset="0x65C8" />
|
||||
<Animation Name="object_an1_Anim_0071E8" Offset="0x71E8" />
|
||||
<Animation Name="object_an1_Anim_007E08" Offset="0x7E08" />
|
||||
<Animation Name="object_an1_Anim_008B6C" Offset="0x8B6C" />
|
||||
<Animation Name="object_an1_Anim_001090" Offset="0x1090" /> <!-- Original name is "an_ajimi" ("tasting; sampling") -->
|
||||
<Animation Name="object_an1_Anim_00144C" Offset="0x144C" /> <!-- Original name is "an_ajimiend" -->
|
||||
<Animation Name="object_an1_Anim_001E74" Offset="0x1E74" /> <!-- Original name is "an_aogu" ("to look up") -->
|
||||
<Animation Name="object_an1_Anim_0026B4" Offset="0x26B4" /> <!-- Original name is "an_bikkuri" ("to be surprised") -->
|
||||
<Animation Name="object_an1_Anim_00341C" Offset="0x341C" /> <!-- Original name is "an_obonwait" ("obon" = "tray") -->
|
||||
<Animation Name="object_an1_Anim_003EA8" Offset="0x3EA8" /> <!-- Original name is "an_obonwalk" -->
|
||||
<Animation Name="object_an1_Anim_00544C" Offset="0x544C" /> <!-- Original name is "an_ojigit" ("bow; bowing") -->
|
||||
<Animation Name="object_an1_Anim_0065C8" Offset="0x65C8" /> <!-- Original name is "an_ryouri" ("cooking") -->
|
||||
<Animation Name="object_an1_Anim_0071E8" Offset="0x71E8" /> <!-- Original name is "an_suwaru" ("to sit") -->
|
||||
<Animation Name="object_an1_Anim_007E08" Offset="0x7E08" /> <!-- Original name is "an_suzetsubou" ("su" = short for "suwaru", "zetsubou" = "despair; hopelessness") -->
|
||||
<Animation Name="object_an1_Anim_008B6C" Offset="0x8B6C" /> <!-- Original name is "an_wait" -->
|
||||
<DList Name="object_an1_DL_00BC20" Offset="0xBC20" />
|
||||
<DList Name="object_an1_DL_00BD20" Offset="0xBD20" />
|
||||
<DList Name="object_an1_DL_00BE60" Offset="0xBE60" />
|
||||
@@ -52,7 +52,7 @@
|
||||
<Texture Name="object_an1_Tex_0103A0" OutName="tex_0103A0" Format="ci8" Width="32" Height="32" Offset="0x103A0" />
|
||||
<!-- <Blob Name="object_an1_Blob_0107A0" Size="0xA40" Offset="0x107A0" /> -->
|
||||
<DList Name="object_an1_DL_0111E0" Offset="0x111E0" />
|
||||
<DList Name="object_an1_DL_0111E8" Offset="0x111E8" />
|
||||
<DList Name="object_an1_DL_0111E8" Offset="0x111E8" /> <!-- Original name is "an_obon_model" -->
|
||||
<Texture Name="object_an1_Tex_011928" OutName="tex_011928" Format="i8" Width="32" Height="32" Offset="0x11928" />
|
||||
<Texture Name="object_an1_Tex_011D28" OutName="tex_011D28" Format="rgba16" Width="16" Height="16" Offset="0x11D28" />
|
||||
<Texture Name="object_an1_Tex_011F28" OutName="tex_011F28" Format="rgba16" Width="16" Height="16" Offset="0x11F28" />
|
||||
@@ -60,7 +60,7 @@
|
||||
<Texture Name="object_an1_Tex_012228" OutName="tex_012228" Format="i4" Width="16" Height="16" Offset="0x12228" />
|
||||
<Texture Name="object_an1_Tex_0122A8" OutName="tex_0122A8" Format="i8" Width="16" Height="16" Offset="0x122A8" />
|
||||
<!-- <Blob Name="object_an1_Blob_0123A8" Size="0x10" Offset="0x123A8" /> -->
|
||||
<DList Name="object_an1_DL_012478" Offset="0x12478" />
|
||||
<DList Name="object_an1_DL_012478" Offset="0x12478" /> <!-- Original name is "an_hashi_model" ("chopsticks") -->
|
||||
<Limb Name="object_an1_Standardlimb_0124D8" Type="Standard" EnumName="OBJECT_AN1_LIMB_01" Offset="0x124D8" />
|
||||
<Limb Name="object_an1_Standardlimb_0124E4" Type="Standard" EnumName="OBJECT_AN1_LIMB_02" Offset="0x124E4" />
|
||||
<Limb Name="object_an1_Standardlimb_0124F0" Type="Standard" EnumName="OBJECT_AN1_LIMB_03" Offset="0x124F0" />
|
||||
@@ -82,7 +82,7 @@
|
||||
<Limb Name="object_an1_Standardlimb_0125B0" Type="Standard" EnumName="OBJECT_AN1_LIMB_13" Offset="0x125B0" />
|
||||
<Limb Name="object_an1_Standardlimb_0125BC" Type="Standard" EnumName="OBJECT_AN1_LIMB_14" Offset="0x125BC" />
|
||||
<Skeleton Name="object_an1_Skel_012618" Type="Flex" LimbType="Standard" LimbNone="OBJECT_AN1_LIMB_NONE" LimbMax="OBJECT_AN1_LIMB_MAX" EnumName="ObjectAn1Limb" Offset="0x12618" />
|
||||
<Animation Name="object_an1_Anim_013048" Offset="0x13048" />
|
||||
<Animation Name="object_an1_Anim_013E1C" Offset="0x13E1C" />
|
||||
<Animation Name="object_an1_Anim_013048" Offset="0x13048" /> <!-- Original name is "an_walk" -->
|
||||
<Animation Name="object_an1_Anim_013E1C" Offset="0x13E1C" /> <!-- Original name is "anj_tetunagu_loop" ("joined hands") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<Root>
|
||||
<File Name="object_an2" Segment="6">
|
||||
<DList Name="object_an2_DL_000370" Offset="0x370" />
|
||||
<DList Name="object_an2_DL_000378" Offset="0x378" />
|
||||
<DList Name="object_an2_DL_000378" Offset="0x378" /> <!-- Original name is "an_kasa_model" ("umbrella; parasol") -->
|
||||
<Texture Name="object_an2_Tex_000578" OutName="tex_000578" Format="i8" Width="16" Height="16" Offset="0x578" />
|
||||
<Texture Name="object_an2_Tex_000678" OutName="tex_000678" Format="i8" Width="32" Height="32" Offset="0x678" />
|
||||
<Animation Name="object_an2_Anim_001B80" Offset="0x1B80" />
|
||||
<Animation Name="object_an2_Anim_0028DC" Offset="0x28DC" />
|
||||
<Animation Name="object_an2_Anim_0038A0" Offset="0x38A0" />
|
||||
<Animation Name="object_an2_Anim_0042CC" Offset="0x42CC" />
|
||||
<Animation Name="object_an2_Anim_001B80" Offset="0x1B80" /> <!-- Original name is "an_kasasuwarinaku" ("suwari" = "sitting", "naku" = "to cry; to weep; to sob") -->
|
||||
<Animation Name="object_an2_Anim_0028DC" Offset="0x28DC" /> <!-- Original name is "an_kasawait" -->
|
||||
<Animation Name="object_an2_Anim_0038A0" Offset="0x38A0" /> <!-- Original name is "an_kasawait2suwaru" ("suwaru" = "to sit") -->
|
||||
<Animation Name="object_an2_Anim_0042CC" Offset="0x42CC" /> <!-- Original name is "an_kasawalk" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<Root>
|
||||
<File Name="object_an3" Segment="6">
|
||||
<DList Name="object_an3_DL_000300" Offset="0x300" />
|
||||
<DList Name="object_an3_DL_000308" Offset="0x308" />
|
||||
<DList Name="object_an3_DL_000308" Offset="0x308" /> <!-- Original name is "an_hoki_model" ("broom") -->
|
||||
<Texture Name="object_an3_Tex_0004C8" OutName="tex_0004C8" Format="i8" Width="16" Height="16" Offset="0x4C8" />
|
||||
<Texture Name="object_an3_Tex_0005C8" OutName="tex_0005C8" Format="rgba16" Width="8" Height="32" Offset="0x5C8" />
|
||||
<Texture Name="object_an3_Tex_0007C8" OutName="tex_0007C8" Format="rgba16" Width="8" Height="8" Offset="0x7C8" />
|
||||
<Animation Name="object_an3_Anim_0012C0" Offset="0x12C0" />
|
||||
<Animation Name="object_an3_Anim_00201C" Offset="0x201C" />
|
||||
<Animation Name="object_an3_Anim_002A4C" Offset="0x2A4C" />
|
||||
<Animation Name="object_an3_Anim_0012C0" Offset="0x12C0" /> <!-- Original name is "an_hokihaku" ("haku" = "to sweep; to brush; to clean") -->
|
||||
<Animation Name="object_an3_Anim_00201C" Offset="0x201C" /> <!-- Original name is "an_hokiwait" -->
|
||||
<Animation Name="object_an3_Anim_002A4C" Offset="0x2A4C" /> <!-- Original name is "an_hokiwalk" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<Root>
|
||||
<File Name="object_an4" Segment="6">
|
||||
<Animation Name="object_an4_Anim_00041C" Offset="0x41C" />
|
||||
<Animation Name="object_an4_Anim_0013C8" Offset="0x13C8" />
|
||||
<Animation Name="object_an4_Anim_002550" Offset="0x2550" />
|
||||
<Animation Name="object_an4_Anim_00353C" Offset="0x353C" />
|
||||
<Animation Name="object_an4_Anim_004498" Offset="0x4498" />
|
||||
<Animation Name="object_an4_Anim_004A78" Offset="0x4A78" />
|
||||
<Animation Name="object_an4_Anim_00506C" Offset="0x506C" />
|
||||
<Animation Name="object_an4_Anim_0060B4" Offset="0x60B4" />
|
||||
<Animation Name="object_an4_Anim_006CC0" Offset="0x6CC0" />
|
||||
<Animation Name="object_an4_Anim_007E3C" Offset="0x7E3C" />
|
||||
<Animation Name="object_an4_Anim_0088C0" Offset="0x88C0" />
|
||||
<Animation Name="object_an4_Anim_00041C" Offset="0x41C" /> <!-- Original name is "anj_awase" ("to face; to be opposite (someone)") -->
|
||||
<Animation Name="object_an4_Anim_0013C8" Offset="0x13C8" /> <!-- Original name is "anj_dakiau" ("to embrace each other") -->
|
||||
<Animation Name="object_an4_Anim_002550" Offset="0x2550" /> <!-- Original name is "anj_dakiau_loop" -->
|
||||
<Animation Name="object_an4_Anim_00353C" Offset="0x353C" /> <!-- Original name is "anj_hanare" ("to be separated; to be apart") -->
|
||||
<Animation Name="object_an4_Anim_004498" Offset="0x4498" /> <!-- Original name is "anj_hanare_loop" -->
|
||||
<Animation Name="object_an4_Anim_004A78" Offset="0x4A78" /> <!-- Original name is "anj_kaoage" ("raising face") -->
|
||||
<Animation Name="object_an4_Anim_00506C" Offset="0x506C" /> <!-- Original name is "anj_kaoage_loop" -->
|
||||
<Animation Name="object_an4_Anim_0060B4" Offset="0x60B4" /> <!-- Original name is "anj_miseau" ("to show each other") -->
|
||||
<Animation Name="object_an4_Anim_006CC0" Offset="0x6CC0" /> <!-- Original name is "anj_mitume_loop" ("to stare (at); to gaze (at)") -->
|
||||
<Animation Name="object_an4_Anim_007E3C" Offset="0x7E3C" /> <!-- Original name is "anj_omen" ("mask") -->
|
||||
<Animation Name="object_an4_Anim_0088C0" Offset="0x88C0" /> <!-- Original name is "anj_omen_loop" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Root>
|
||||
<File Name="object_and" Segment="6">
|
||||
<Animation Name="object_and_Anim_0000C8" Offset="0xC8" />
|
||||
<Animation Name="object_and_Anim_0000C8" Offset="0xC8" /> <!-- Original name is "and_test" -->
|
||||
<DList Name="object_and_DL_004670" Offset="0x4670" />
|
||||
<DList Name="object_and_DL_004708" Offset="0x4708" />
|
||||
<DList Name="object_and_DL_0047F0" Offset="0x47F0" />
|
||||
@@ -68,12 +68,12 @@
|
||||
<Limb Name="object_and_Standardlimb_00B304" Type="Standard" EnumName="OBJECT_AND_LIMB_18" Offset="0xB304" />
|
||||
<Limb Name="object_and_Standardlimb_00B310" Type="Standard" EnumName="OBJECT_AND_LIMB_19" Offset="0xB310" />
|
||||
<Skeleton Name="object_and_Skel_00B380" Type="Flex" LimbType="Standard" LimbNone="OBJECT_AND_LIMB_NONE" LimbMax="OBJECT_AND_LIMB_MAX" EnumName="ObjectAndLimb" Offset="0xB380" />
|
||||
<Animation Name="object_and_Anim_00DA58" Offset="0xDA58" />
|
||||
<Animation Name="object_and_Anim_00EE00" Offset="0xEE00" />
|
||||
<Animation Name="object_and_Anim_00F6C4" Offset="0xF6C4" />
|
||||
<Animation Name="object_and_Anim_00FE64" Offset="0xFE64" />
|
||||
<Animation Name="object_and_Anim_01067C" Offset="0x1067C" />
|
||||
<Animation Name="object_and_Anim_011AFC" Offset="0x11AFC" />
|
||||
<Animation Name="object_and_Anim_0122D0" Offset="0x122D0" />
|
||||
<Animation Name="object_and_Anim_00DA58" Offset="0xDA58" /> <!-- Original name is "wa_aruku" ("walk") -->
|
||||
<Animation Name="object_and_Anim_00EE00" Offset="0xEE00" /> <!-- Original name is "wa_hidari" ("left; left hand side") -->
|
||||
<Animation Name="object_and_Anim_00F6C4" Offset="0xF6C4" /> <!-- Original name is "wa_hidari_loop" -->
|
||||
<Animation Name="object_and_Anim_00FE64" Offset="0xFE64" /> <!-- Original name is "wa_kaoage" ("raising face") -->
|
||||
<Animation Name="object_and_Anim_01067C" Offset="0x1067C" /> <!-- Original name is "wa_kaoage_loop" -->
|
||||
<Animation Name="object_and_Anim_011AFC" Offset="0x11AFC" /> <!-- Original name is "wa_kaoaruki" (probably a combination of "kaoage" and "aruki") -->
|
||||
<Animation Name="object_and_Anim_0122D0" Offset="0x122D0" /> <!-- Original name is "wa_utumuki_loop" ("looking down") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<Root>
|
||||
<File Name="object_ani" Segment="6">
|
||||
<Animation Name="gAniTreeHangLosingBalanceAnim" Offset="0x7FC" />
|
||||
<Animation Name="gAniFallOverHoldingFootAnim" Offset="0xC14" />
|
||||
<Animation Name="gAniHoldingFootWrithingInPainAnim" Offset="0x11CC" />
|
||||
<Animation Name="gAniUnusedSidesteppingAnim" Offset="0x1584" />
|
||||
<Animation Name="gAniTreeHangingAnim" Offset="0x1D48" />
|
||||
<Animation Name="gAniTreeHangingReachAnim" Offset="0x27A0" />
|
||||
<Animation Name="gAniTreeHangLosingBalanceAnim" Offset="0x7FC" /> <!-- Original name is "Ani_guratsuku" ("to be unsteady; to reel; to shake") -->
|
||||
<Animation Name="gAniFallOverHoldingFootAnim" Offset="0xC14" /> <!-- Original name is "Ani_itameru" ("to hurt; to injure; to cause pain") -->
|
||||
<Animation Name="gAniHoldingFootWrithingInPainAnim" Offset="0x11CC" /> <!-- Original name is "Ani_itameru2" -->
|
||||
<Animation Name="gAniUnusedSidesteppingAnim" Offset="0x1584" /> <!-- Original name is "Ani_kaniark" ("kami" = "crab", "ark" = probably short for "aruki", which is "to walk") -->
|
||||
<Animation Name="gAniTreeHangingAnim" Offset="0x1D48" /> <!-- Original name is "Ani_ki01" ("tree") -->
|
||||
<Animation Name="gAniTreeHangingReachAnim" Offset="0x27A0" /> <!-- Original name is "Ani_ki02" -->
|
||||
<Limb Name="gAniPelvisLimb" Type="Standard" EnumName="ANI_LIMB_PELVIS" Offset="0x27B0" />
|
||||
<Limb Name="gAniLeftThighLimb" Type="Standard" EnumName="ANI_LIMB_LEFT_THIGH" Offset="0x27BC" />
|
||||
<Limb Name="gAniLeftCalfLimb" Type="Standard" EnumName="ANI_LIMB_LEFT_CALF" Offset="0x27C8" />
|
||||
@@ -53,15 +53,15 @@
|
||||
<DList Name="gAniHeadDL" Offset="0x7B58" />
|
||||
|
||||
<!-- Only the first half of the animation is used by EnAni when knocked out of tree -->
|
||||
<Animation Name="gAniLandingThenStandingUpAnim" Offset="0x9220" />
|
||||
<Animation Name="gAniLandingThenStandingUpAnim" Offset="0x9220" /> <!-- Original name is "Ani_oriru" ("to go down; to come down") -->
|
||||
<!-- used by EnOssan -->
|
||||
<Animation Name="gAniHoldUpHandAnim" Offset="0x9734" />
|
||||
<Animation Name="gAniStandingNormalAnim" Offset="0x9D34" />
|
||||
<Animation Name="gAniHandBehindHeadApologyAnim" Offset="0xA460" />
|
||||
<Animation Name="gAniHoldUpHandAnim" Offset="0x9734" /> <!-- Original name is "Ani_talk" -->
|
||||
<Animation Name="gAniStandingNormalAnim" Offset="0x9D34" /> <!-- Original name is "Ani_wait" -->
|
||||
<Animation Name="gAniHandBehindHeadApologyAnim" Offset="0xA460" /> <!-- Original name is "Ani_zorawait" -->
|
||||
<!-- left over from OOT firetemple deathmountain cutscene, unused in MM -->
|
||||
<Animation Name="gAniKnockBackAnim" Offset="0xA978" />
|
||||
<Animation Name="gAniKnockBackGettingUpAnim" Offset="0xB2B0" />
|
||||
<Animation Name="gAniKnockBackAnim" Offset="0xA978" /> <!-- Original name is "ani_bikkuri" ("to be amazed; to be frightened") -->
|
||||
<Animation Name="gAniKnockBackGettingUpAnim" Offset="0xB2B0" /> <!-- Original name is "ani_nanyarona" -->
|
||||
<!-- left over from OOT sitting on roof, unused in MM -->
|
||||
<Animation Name="gAniSittingBackAnim" Offset="0xB8AC" />
|
||||
<Animation Name="gAniSittingBackAnim" Offset="0xB8AC" /> <!-- Original name is "ani_suwari_wait" ("sitting") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<Texture Name="object_astr_obj_Tex_000820" OutName="tex_000820" Format="ci4" Width="64" Height="64" Offset="0x820" />
|
||||
<Texture Name="object_astr_obj_Tex_001020" OutName="tex_001020" Format="ia8" Width="64" Height="64" Offset="0x1020" />
|
||||
<DList Name="object_astr_obj_DL_002170" Offset="0x2170" />
|
||||
<DList Name="object_astr_obj_DL_002178" Offset="0x2178" />
|
||||
<DList Name="object_astr_obj_DL_002178" Offset="0x2178" /> <!-- Original name is "z2_tennmondai_hahen_model" ("tennmondai" = "astronomical observatory", "hahen" = "fragment") -->
|
||||
<DList Name="object_astr_obj_DL_0022E0" Offset="0x22E0" />
|
||||
<DList Name="object_astr_obj_DL_002380" Offset="0x2380" />
|
||||
<DList Name="object_astr_obj_DL_002380" Offset="0x2380" /> <!-- Original name is "z2_tennmondai_kabe_model" ("tennmondai" = "astronomical observatory", "kabe" = "wall") -->
|
||||
<Collision Name="object_astr_obj_Colheader_002498" Offset="0x2498" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<Root>
|
||||
<File Name="object_bai" Segment="6">
|
||||
<Animation Name="object_bai_Anim_0008B4" Offset="0x8B4" />
|
||||
<Animation Name="object_bai_Anim_0011C0" Offset="0x11C0" />
|
||||
<Animation Name="object_bai_Anim_0008B4" Offset="0x8B4" /> <!-- Original name is "bai_talk01" -->
|
||||
<Animation Name="object_bai_Anim_0011C0" Offset="0x11C0" /> <!-- Original name is "bai_wait01" -->
|
||||
<DList Name="object_bai_DL_0049C0" Offset="0x49C0" />
|
||||
<DList Name="object_bai_DL_004BA8" Offset="0x4BA8" />
|
||||
<DList Name="object_bai_DL_004EC0" Offset="0x4EC0" />
|
||||
@@ -48,6 +48,6 @@
|
||||
<Limb Name="object_bai_Standardlimb_0078A4" Type="Standard" EnumName="OBJECT_BAI_LIMB_12" Offset="0x78A4" />
|
||||
<Limb Name="object_bai_Standardlimb_0078B0" Type="Standard" EnumName="OBJECT_BAI_LIMB_13" Offset="0x78B0" />
|
||||
<Skeleton Name="object_bai_Skel_007908" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BAI_LIMB_NONE" LimbMax="OBJECT_BAI_LIMB_MAX" EnumName="ObjectBaiLimb" Offset="0x7908" />
|
||||
<Animation Name="object_bai_Anim_008198" Offset="0x8198" />
|
||||
<Animation Name="object_bai_Anim_008198" Offset="0x8198" /> <!-- Original name is "bai_wait02" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Root>
|
||||
<File Name="object_bal" Segment="6">
|
||||
<Animation Name="object_bal_Anim_0005FC" Offset="0x5FC" />
|
||||
<Animation Name="object_bal_Anim_000840" Offset="0x840" />
|
||||
<Animation Name="object_bal_Anim_000C78" Offset="0xC78" />
|
||||
<Animation Name="object_bal_Anim_001804" Offset="0x1804" />
|
||||
<Animation Name="object_bal_Anim_0005FC" Offset="0x5FC" /> <!-- Original name is "bal_fly" -->
|
||||
<Animation Name="object_bal_Anim_000840" Offset="0x840" /> <!-- Original name is "bal_fly2" -->
|
||||
<Animation Name="object_bal_Anim_000C78" Offset="0xC78" /> <!-- Original name is "bal_kaiten" ("rotation; revolution; turn; spin") -->
|
||||
<Animation Name="object_bal_Anim_001804" Offset="0x1804" /> <!-- Original name is "bal_kami" ("paper") -->
|
||||
<DList Name="object_bal_DL_004000" Offset="0x4000" />
|
||||
<DList Name="object_bal_DL_004108" Offset="0x4108" />
|
||||
<DList Name="object_bal_DL_0041E8" Offset="0x41E8" />
|
||||
@@ -69,13 +69,13 @@
|
||||
<Limb Name="object_bal_Standardlimb_00A638" Type="Standard" EnumName="OBJECT_BAL_LIMB_1F" Offset="0xA638" />
|
||||
<Limb Name="object_bal_Standardlimb_00A644" Type="Standard" EnumName="OBJECT_BAL_LIMB_20" Offset="0xA644" />
|
||||
<Skeleton Name="object_bal_Skel_00A6D0" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BAL_LIMB_NONE" LimbMax="OBJECT_BAL_LIMB_MAX" EnumName="ObjectBalLimb" Offset="0xA6D0" />
|
||||
<Animation Name="object_bal_Anim_00A7DC" Offset="0xA7DC" />
|
||||
<Animation Name="object_bal_Anim_00B1E8" Offset="0xB1E8" />
|
||||
<Animation Name="object_bal_Anim_00B604" Offset="0xB604" />
|
||||
<Animation Name="object_bal_Anim_00C498" Offset="0xC498" />
|
||||
<Animation Name="object_bal_Anim_00C8D8" Offset="0xC8D8" />
|
||||
<Animation Name="object_bal_Anim_00CB78" Offset="0xCB78" />
|
||||
<Animation Name="object_bal_Anim_00D530" Offset="0xD530" />
|
||||
<DList Name="object_bal_DL_00D5A0" Offset="0xD5A0" />
|
||||
<Animation Name="object_bal_Anim_00A7DC" Offset="0xA7DC" /> <!-- Original name is "bal_put" -->
|
||||
<Animation Name="object_bal_Anim_00B1E8" Offset="0xB1E8" /> <!-- Original name is "bal_talk" -->
|
||||
<Animation Name="object_bal_Anim_00B604" Offset="0xB604" /> <!-- Original name is "bal_talk2" -->
|
||||
<Animation Name="object_bal_Anim_00C498" Offset="0xC498" /> <!-- Original name is "bal_talk3" -->
|
||||
<Animation Name="object_bal_Anim_00C8D8" Offset="0xC8D8" /> <!-- Original name is "bal_talk4" -->
|
||||
<Animation Name="object_bal_Anim_00CB78" Offset="0xCB78" /> <!-- Original name is "bal_tereru" ("to be shy; to be bashful") -->
|
||||
<Animation Name="object_bal_Anim_00D530" Offset="0xD530" /> <!-- Original name is "bal_wait" -->
|
||||
<DList Name="gTingleConfettiDL" Offset="0xD5A0" /> <!-- Original name is "bal_cube32_model" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
<DList Name="gBbaFeetDL" Offset="0x4180" />
|
||||
|
||||
<!-- Animations -->
|
||||
<Animation Name="gBbaSwayAnim" Offset="0x4910" />
|
||||
<Animation Name="gBbaKnockedOverAnim" Offset="0x5154" />
|
||||
<Animation Name="gBbaLyingDownAnim" Offset="0x58B8" />
|
||||
<Animation Name="gBbaIdleHoldingBagAnim" Offset="0x5DC4" />
|
||||
<Animation Name="gBbaSwayAnim" Offset="0x4910" /> <!-- Original name is "sb_ending" -->
|
||||
<Animation Name="gBbaKnockedOverAnim" Offset="0x5154" /> <!-- Original name is "sb_taore" ("to fall (over, down); to collapse; to take a fall") -->
|
||||
<Animation Name="gBbaLyingDownAnim" Offset="0x58B8" /> <!-- Original name is "sb_taorewait" -->
|
||||
<Animation Name="gBbaIdleHoldingBagAnim" Offset="0x5DC4" /> <!-- Original name is "sb_wait01" -->
|
||||
|
||||
<!-- Skeleton -->
|
||||
<Limb Name="gBbaUpperLegsLimb" Type="Standard" EnumName="BBA_LIMB_UPPER_LEGS" Offset="0x5DE0" />
|
||||
@@ -44,8 +44,8 @@
|
||||
<Skeleton Name="gBbaSkel" Type="Flex" LimbType="Standard" LimbNone="BBA_LIMB_NONE" LimbMax="BBA_LIMB_MAX" EnumName="BbaLimb" Offset="0x5EF0" />
|
||||
|
||||
<!-- Animations -->
|
||||
<Animation Name="gBbaIdleAnim" Offset="0x6550" />
|
||||
<Animation Name="gBbaWalkingHoldingBagAnim" Offset="0x6B10" />
|
||||
<Animation Name="gBbaIdleAnim" Offset="0x6550" /> <!-- Original name is "sb_wait02" -->
|
||||
<Animation Name="gBbaWalkingHoldingBagAnim" Offset="0x6B10" /> <!-- Original name is "sb_walk01" -->
|
||||
|
||||
<!-- TLUT -->
|
||||
<Texture Name="gBbaTLUT" OutName="bba_tlut" Format="rgba16" Width="16" Height="16" Offset="0x6B20" />
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- Object for Bee -->
|
||||
<File Name="object_bee" Segment="6">
|
||||
<!-- Bee Animations -->
|
||||
<Animation Name="gBeeFlyingAnim" Offset="0x5C" />
|
||||
<Animation Name="gBeeFlyingAnim" Offset="0x5C" /> <!-- Original name is "bee_fyl" [sic] -->
|
||||
|
||||
<!-- Bee Limb DisplayLists -->
|
||||
<DList Name="gBeeBodyDL" Offset="0x550" />
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<Root>
|
||||
<File Name="object_bg" Segment="6">
|
||||
<Animation Name="object_bg_Anim_000968" Offset="0x968" />
|
||||
<Animation Name="object_bg_Anim_000A00" Offset="0xA00" />
|
||||
<Animation Name="object_bg_Anim_001384" Offset="0x1384" />
|
||||
<Animation Name="object_bg_Anim_000968" Offset="0x968" /> <!-- Original name is "bg_asking" -->
|
||||
<Animation Name="object_bg_Anim_000A00" Offset="0xA00" /> <!-- Original name is "bg_getup" -->
|
||||
<Animation Name="object_bg_Anim_001384" Offset="0x1384" /> <!-- Original name is "bg_kunekune" ("wiggling; waving; swaying; twisting and turning") -->
|
||||
<DList Name="object_bg_DL_003F50" Offset="0x3F50" />
|
||||
<DList Name="object_bg_DL_004558" Offset="0x4558" />
|
||||
<DList Name="object_bg_DL_004768" Offset="0x4768" />
|
||||
@@ -52,11 +52,11 @@
|
||||
<Limb Name="object_bg_Standardlimb_008F54" Type="Standard" EnumName="OBJECT_BG_1_LIMB_16" Offset="0x8F54" />
|
||||
<Limb Name="object_bg_Standardlimb_008F60" Type="Standard" EnumName="OBJECT_BG_1_LIMB_17" Offset="0x8F60" />
|
||||
<Skeleton Name="object_bg_Skel_008FC8" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BG_1_LIMB_NONE" LimbMax="OBJECT_BG_1_LIMB_MAX" EnumName="ObjectBg1Limb" Offset="0x8FC8" />
|
||||
<Animation Name="object_bg_Anim_009890" Offset="0x9890" />
|
||||
<Animation Name="object_bg_Anim_009F20" Offset="0x9F20" />
|
||||
<Animation Name="object_bg_Anim_00A280" Offset="0xA280" />
|
||||
<Animation Name="object_bg_Anim_00AD98" Offset="0xAD98" />
|
||||
<Animation Name="object_bg_Anim_00B19C" Offset="0xB19C" />
|
||||
<Animation Name="object_bg_Anim_009890" Offset="0x9890" /> <!-- Original name is "bg_newwait" -->
|
||||
<Animation Name="object_bg_Anim_009F20" Offset="0x9F20" /> <!-- Original name is "bg_sleeping" -->
|
||||
<Animation Name="object_bg_Anim_00A280" Offset="0xA280" /> <!-- Original name is "bg_tokune" (probably the English word "to" and "kunekune") -->
|
||||
<Animation Name="object_bg_Anim_00AD98" Offset="0xAD98" /> <!-- Original name is "bg_up" -->
|
||||
<Animation Name="object_bg_Anim_00B19C" Offset="0xB19C" /> <!-- Original name is "bg_wait" -->
|
||||
<DList Name="object_bg_DL_00D5E0" Offset="0xD5E0" />
|
||||
<DList Name="object_bg_DL_00D780" Offset="0xD780" />
|
||||
<DList Name="object_bg_DL_00DB38" Offset="0xDB38" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Root>
|
||||
<File Name="object_bh" Segment="6">
|
||||
<Animation Name="gBhFlyingAnim" Offset="0x74" />
|
||||
<Animation Name="gBhFlyingAnim" Offset="0x74" /> <!-- Original name is "bh_fly" -->
|
||||
<DList Name="gBhBodyDL" Offset="0x2B0" />
|
||||
<DList Name="gBhRightWingToEdgeDL" Offset="0x3A0" />
|
||||
<DList Name="gBhRightWingToBodyDL" Offset="0x450" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Root>
|
||||
<File Name="object_big_fwall" Segment="6">
|
||||
<Texture Name="object_big_fwall_Tex_000000" OutName="tex_000000" Format="i8" Width="32" Height="64" Offset="0x0" />
|
||||
<DList Name="object_big_fwall_DL_0009A0" Offset="0x9A0" />
|
||||
<DList Name="object_big_fwall_DL_0009A0" Offset="0x9A0" /> <!-- Original name is "big_firewall_modelT" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
<File Name="object_bigicicle" Segment="6">
|
||||
<Texture Name="object_bigicicle_Tex_000000" OutName="tex_000000" Format="i4" Width="64" Height="64" Offset="0x0" />
|
||||
<Texture Name="object_bigicicle_Tex_000800" OutName="tex_000800" Format="i4" Width="16" Height="16" Offset="0x800" />
|
||||
<DList Name="object_bigicicle_DL_0009B0" Offset="0x9B0" />
|
||||
<DList Name="object_bigicicle_DL_000B20" Offset="0xB20" />
|
||||
<DList Name="object_bigicicle_DL_000D60" Offset="0xD60" />
|
||||
<DList Name="object_bigicicle_DL_000F40" Offset="0xF40" />
|
||||
<DList Name="object_bigicicle_DL_0014F0" Offset="0x14F0" />
|
||||
<DList Name="object_bigicicle_DL_0009B0" Offset="0x9B0" /> <!-- Original name is "trr_hahen_modelT" -->
|
||||
<DList Name="object_bigicicle_DL_000B20" Offset="0xB20" /> <!-- Original name is "trr_hibi01_modelT" ("crack; fissure") -->
|
||||
<DList Name="object_bigicicle_DL_000D60" Offset="0xD60" /> <!-- Original name is "trr_hibi02_modelT" -->
|
||||
<DList Name="object_bigicicle_DL_000F40" Offset="0xF40" /> <!-- Original name is "trr_hibi03_modelT" -->
|
||||
<DList Name="object_bigicicle_DL_0014F0" Offset="0x14F0" /> <!-- Original name is "trr_inside_modelT" -->
|
||||
<TextureAnimation Name="object_bigicicle_Matanimheader_001678" Offset="0x1678" />
|
||||
<DList Name="object_bigicicle_DL_001D10" Offset="0x1D10" />
|
||||
<DList Name="object_bigicicle_DL_002530" Offset="0x2530" />
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<Root>
|
||||
<File Name="object_bigokuta" Segment="6">
|
||||
<Animation Name="gBigOctoRiseOutOfWaterAnim" Offset="0x444" />
|
||||
<Animation Name="gBigOctoDeathAnim" Offset="0xA74" />
|
||||
<Animation Name="gBigOctoHitAnim" Offset="0xD1C" />
|
||||
<Animation Name="gBigOctoIdleAnim" Offset="0x14B8" />
|
||||
<Animation Name="gBigOctoWalkAnim" Offset="0x1CA4" />
|
||||
<Animation Name="gBigOctoRiseOutOfWaterAnim" Offset="0x444" /> <!-- Original name is "ocd_damagejump" -->
|
||||
<Animation Name="gBigOctoDeathAnim" Offset="0xA74" /> <!-- Original name is "ocd_dead" -->
|
||||
<Animation Name="gBigOctoHitAnim" Offset="0xD1C" /> <!-- Original name is "ocd_stop" -->
|
||||
<Animation Name="gBigOctoIdleAnim" Offset="0x14B8" /> <!-- Original name is "ocd_wait" -->
|
||||
<Animation Name="gBigOctoWalkAnim" Offset="0x1CA4" /> <!-- Original name is "ocd_walk" -->
|
||||
<DList Name="gBigOctoBodyDL" Offset="0x4090" />
|
||||
<DList Name="gBigOctoCenterSnoutDL" Offset="0x4158" />
|
||||
<DList Name="gBigOctoLeftSnoutDL" Offset="0x42A8" />
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<Root>
|
||||
<!-- Assets for Big Poes -->
|
||||
<File Name="object_bigpo" Segment="6">
|
||||
<Animation Name="gBigpoSwingLampAttackAnim" Offset="0x158" />
|
||||
<Animation Name="gBigpoShockAnim" Offset="0x454" />
|
||||
<Animation Name="gBigpoBackpeddleAnim" Offset="0x608" />
|
||||
<Animation Name="gBigpoFloatAnim" Offset="0x924" />
|
||||
<Animation Name="gBigpoAwakenSpawnAnim" Offset="0xF9C" />
|
||||
<Animation Name="gBigpoAwakenStretchAnim" Offset="0x1360" />
|
||||
<Animation Name="gBigpoSwingLampAttackAnim" Offset="0x158" /> <!-- Original name is "pog_atack" -->
|
||||
<Animation Name="gBigpoShockAnim" Offset="0x454" /> <!-- Original name is "pog_damage" -->
|
||||
<Animation Name="gBigpoBackpeddleAnim" Offset="0x608" /> <!-- Original name is "pog_escape" -->
|
||||
<Animation Name="gBigpoFloatAnim" Offset="0x924" /> <!-- Original name is "pog_fly" -->
|
||||
<Animation Name="gBigpoAwakenSpawnAnim" Offset="0xF9C" /> <!-- Original name is "pog_start" -->
|
||||
<Animation Name="gBigpoAwakenStretchAnim" Offset="0x1360" /> <!-- Original name is "pog_wait" -->
|
||||
<Texture Name="gBigpoSoulFace" OutName="bigpo_soul_face" Format="i8" Width="32" Height="64" Offset="0x1370" />
|
||||
<DList Name="gBigpoDrawSoulDL" Offset="0x1BB0" />
|
||||
<DList Name="gBigpoDrawSoulDL" Offset="0x1BB0" /> <!-- Original name is "bigpo_soul_modelT" -->
|
||||
<Texture Name="gBigpoNecklaceSkullHalfTex" OutName="bigpo_skull_necklace" Format="rgba16" Width="16" Height="16" Offset="0x1C70" />
|
||||
<Texture Name="gBigpoLanternGlassTex" OutName="bigpo_lantern_glass" Format="rgba16" Width="16" Height="16" Offset="0x1E70" />
|
||||
<Texture Name="gBigpoTornRobeTex" OutName="bigpo_torn_robe" Format="rgba16" Width="32" Height="32" Offset="0x2070" />
|
||||
@@ -19,8 +19,8 @@
|
||||
<Texture Name="gBigpoGlowingEyeTex" OutName="bigpo_glowing_eye" Format="rgba16" Width="16" Height="16" Offset="0x2DF0" />
|
||||
<!-- <Blob Name="object_bigpo_Blob_003200" Size="0x350" Offset="0x3200" /> -->
|
||||
<!-- <Blob Name="object_bigpo_Blob_003790" Size="0x370" Offset="0x3790" /> -->
|
||||
<DList Name="gBigpoDrawLanternFallingDL" Offset="0x41A0" />
|
||||
<DList Name="gBigpoDrawLanternMainDL" Offset="0x42C8" />
|
||||
<DList Name="gBigpoDrawLanternFallingDL" Offset="0x41A0" /> <!-- Original name is "pog_kantera_hahen_model" ("kantera" = "lantern", "hahen" = "fragment") -->
|
||||
<DList Name="gBigpoDrawLanternMainDL" Offset="0x42C8" /> <!-- Original name is "poh_big_cantera" -->
|
||||
<DList Name="gBigpoDrawLanternPurpleTopDL" Offset="0x43F8" />
|
||||
<DList Name="gBigpoDrawHandDL" Offset="0x4488" />
|
||||
<DList Name="gBigpoDrawSmallArmDL" Offset="0x4538" />
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
<Root>
|
||||
<!-- Assets for the Gekko, Minislime, and Bigslime -->
|
||||
<File Name="object_bigslime" Segment="6">
|
||||
<Animation Name="gGekkoFullFistPumpAnim" Offset="0x994" />
|
||||
<Animation Name="gGekkoSurpriseJumpAnim" Offset="0x10F4" />
|
||||
<Animation Name="gGekkoCallAnim" Offset="0x1B08" />
|
||||
<Animation Name="gGekkoCrawlAnim" Offset="0x1E14" />
|
||||
<Animation Name="gGekkoFallInAirAnim" Offset="0x1F20" />
|
||||
<Animation Name="gGekkoFloorIdleAnim" Offset="0x225C" />
|
||||
<Animation Name="gGekkoDamagedAnim" Offset="0x276C" />
|
||||
<Animation Name="gGekkoJumpUpAnim" Offset="0x2E0C" />
|
||||
<Animation Name="gGekkoRecoverAnim" Offset="0x30E4" />
|
||||
<Animation Name="gGekkoJabPunchAnim" Offset="0x347C" />
|
||||
<Animation Name="gGekkoJumpForwardAnim" Offset="0x39C4" />
|
||||
<Animation Name="gGekkoKickAnim" Offset="0x3F28" />
|
||||
<Animation Name="gGekkoFallOnGroundAnim" Offset="0x4298" />
|
||||
<Animation Name="gGekkoStandingIdleAnim" Offset="0x4680" />
|
||||
<Animation Name="gGekkoJumpOnSnapperAnim" Offset="0x4894" />
|
||||
<Animation Name="gGekkoQuickFistPumpAnim" Offset="0x4D50" />
|
||||
<Animation Name="gGekkoSqueezeAnim" Offset="0x50B8" />
|
||||
<Animation Name="gGekkoLandOnSnapperAnim" Offset="0x52EC" />
|
||||
<Animation Name="gGekkoWiggleAnim" Offset="0x5694" />
|
||||
<Animation Name="gGekkoKnockbackAnim" Offset="0x5D54" />
|
||||
<Animation Name="gGekkoLookAroundAnim" Offset="0x66B4" />
|
||||
<Animation Name="gGekkoNervousIdleAnim" Offset="0x69FC" />
|
||||
<Animation Name="gGekkoHookPunchAnim" Offset="0x70C4" />
|
||||
<Animation Name="gGekkoSwimForwardAnim" Offset="0x7790" />
|
||||
<Animation Name="gGekkoFullFistPumpAnim" Offset="0x994" /> <!-- Original name is "bsl_aisatsuDEMO" ("greeting") -->
|
||||
<Animation Name="gGekkoSurpriseJumpAnim" Offset="0x10F4" /> <!-- Original name is "bsl_bikkuri" ("to be surprised; to be frightened") -->
|
||||
<Animation Name="gGekkoCallAnim" Offset="0x1B08" /> <!-- Original name is "bsl_callDEMO" -->
|
||||
<Animation Name="gGekkoCrawlAnim" Offset="0x1E14" /> <!-- Original name is "bsl_clim" -->
|
||||
<Animation Name="gGekkoFallInAirAnim" Offset="0x1F20" /> <!-- Original name is "bsl_climdamage" -->
|
||||
<Animation Name="gGekkoFloorIdleAnim" Offset="0x225C" /> <!-- Original name is "bsl_climwait" -->
|
||||
<Animation Name="gGekkoDamagedAnim" Offset="0x276C" /> <!-- Original name is "bsl_damage" -->
|
||||
<Animation Name="gGekkoJumpUpAnim" Offset="0x2E0C" /> <!-- Original name is "bsl_flyjump" -->
|
||||
<Animation Name="gGekkoRecoverAnim" Offset="0x30E4" /> <!-- Original name is "bsl_hukki" ("return; comeback") -->
|
||||
<Animation Name="gGekkoJabPunchAnim" Offset="0x347C" /> <!-- Original name is "bsl_jabA" -->
|
||||
<Animation Name="gGekkoJumpForwardAnim" Offset="0x39C4" /> <!-- Original name is "bsl_jump" -->
|
||||
<Animation Name="gGekkoKickAnim" Offset="0x3F28" /> <!-- Original name is "bsl_kickA" -->
|
||||
<Animation Name="gGekkoFallOnGroundAnim" Offset="0x4298" /> <!-- Original name is "bsl_rakka" ("fall; drop; descent") -->
|
||||
<Animation Name="gGekkoStandingIdleAnim" Offset="0x4680" /> <!-- Original name is "bsl_ride" -->
|
||||
<Animation Name="gGekkoJumpOnSnapperAnim" Offset="0x4894" /> <!-- Orignal name is "bsl_ridefuse" -->
|
||||
<Animation Name="gGekkoQuickFistPumpAnim" Offset="0x4D50" /> <!-- Original name is "bsl_ridegogo" -->
|
||||
<Animation Name="gGekkoSqueezeAnim" Offset="0x50B8" /> <!-- Original name is "bsl_ridejump" -->
|
||||
<Animation Name="gGekkoLandOnSnapperAnim" Offset="0x52EC" /> <!-- Original name is "bsl_rideokiru" ("okiru" = "to get up; to rise") -->
|
||||
<Animation Name="gGekkoWiggleAnim" Offset="0x5694" /> <!-- Original name is "bsl_riderakka" -->
|
||||
<Animation Name="gGekkoKnockbackAnim" Offset="0x5D54" /> <!-- Original name is "bsl_standdamage" -->
|
||||
<Animation Name="gGekkoLookAroundAnim" Offset="0x66B4" /> <!-- Original name is "bsl_standview" -->
|
||||
<Animation Name="gGekkoNervousIdleAnim" Offset="0x69FC" /> <!-- Original name is "bsl_standwalk" -->
|
||||
<Animation Name="gGekkoHookPunchAnim" Offset="0x70C4" /> <!-- Original name is "bsl_strertA" (maybe a severe mispelling of "straight", as in "straight punch"?) -->
|
||||
<Animation Name="gGekkoSwimForwardAnim" Offset="0x7790" /> <!-- Original name is "bsl_swim" -->
|
||||
|
||||
<DList Name="gGekkoRightEyeDL" Offset="0x9D90" />
|
||||
<DList Name="gGekkoLeftEyeDL" Offset="0x9FF0" />
|
||||
@@ -90,12 +90,12 @@
|
||||
<Limb Name="gGekkoRightEyeLimb" Type="Standard" EnumName="GEKKO_LIMB_RIGHT_EYE" Offset="0xDF30" />
|
||||
<Skeleton Name="gGekkoSkel" Type="Flex" LimbType="Standard" LimbNone="GEKKO_LIMB_NONE" LimbMax="GEKKO_LIMB_MAX" EnumName="GekkoLimb" Offset="0xDF98" />
|
||||
|
||||
<Animation Name="gGekkoWindupPunchAnim" Offset="0xF048" />
|
||||
<Animation Name="gGekkoSwimUpAnim" Offset="0xF3F0" />
|
||||
<Animation Name="gGekkoBoxingStanceAnim" Offset="0xF990" />
|
||||
<Animation Name="gGekkoWindupPunchAnim" Offset="0xF048" /> <!-- Original name is "bsl_upperA" -->
|
||||
<Animation Name="gGekkoSwimUpAnim" Offset="0xF3F0" /> <!-- Original name is "bsl_upswim" -->
|
||||
<Animation Name="gGekkoBoxingStanceAnim" Offset="0xF990" /> <!-- Original name is "bsl_waitA" -->
|
||||
|
||||
<DList Name="gBigslimeBubbleDL" Offset="0xF9D0" />
|
||||
<DList Name="gBigslimeShockwaveDL" Offset="0xFB40" />
|
||||
<DList Name="gBigslimeBubbleDL" Offset="0xF9D0" /> <!-- Original name is "bsl_bable_model" -->
|
||||
<DList Name="gBigslimeShockwaveDL" Offset="0xFB40" /> <!-- Original name is "bsl_coolwave_modelT" -->
|
||||
<Texture Name="gBigslimeShockwave1Tex" OutName="bigslime_shockwave_1" Format="i4" Width="32" Height="64" Offset="0xFC28" />
|
||||
<Blob Name="object_bigslime_zeroes_Blob_010028" Size="0x400" Offset="0x10028" />
|
||||
<Texture Name="gBigslimeShockwave2Tex" OutName="bigslime_shockwave_2" Format="i4" Width="16" Height="16" Offset="0x10428" />
|
||||
@@ -109,15 +109,15 @@
|
||||
<DList Name="gBigslimeFrozenMaterialDL" Offset="0x10B80" />
|
||||
|
||||
<TextureAnimation Name="gBigslimeFrozenTexAnim" Offset="0x10C48" />
|
||||
<DList Name="gMinislimeFrozenDL" Offset="0x10DB0" />
|
||||
<DList Name="gMinislimeFrozenDL" Offset="0x10DB0" /> <!-- Original name is "bsl_icepart_model" (the original asset exists in MM3D, along with an updated asset named "muddjelly_icepart") -->
|
||||
<TextureAnimation Name="gMinislimeFrozenTexAnim" Offset="0x10EC8" />
|
||||
|
||||
<DList Name="gBigslimeIceShardDL" Offset="0x10F20" />
|
||||
<DList Name="gBigslimeIceShardVtxDL" Offset="0x10FE0" />
|
||||
<DList Name="gBigslimeIceShardVtxDL" Offset="0x10FE0" /> <!-- Original name is probably "bsl_icepeace_model" (called "muddjelly_icepeace" in MM3D) -->
|
||||
<TextureAnimation Name="gBigslimeIceShardTexAnim" Offset="0x11008" />
|
||||
|
||||
<DList Name="gBigslimeShadowDL" Offset="0x11050" />
|
||||
<DList Name="gMinislimeNormalDL" Offset="0x113B0" />
|
||||
<DList Name="gBigslimeShadowDL" Offset="0x11050" /> <!-- Original name is "bsl_kage_model" ("shadow; silhouette") -->
|
||||
<DList Name="gMinislimeNormalDL" Offset="0x113B0" /> <!-- Original name is probably "bsl_smallgel_model" (called "muddjelly_smallgel" in MM3D) -->
|
||||
|
||||
<Texture Name="gBigslimeBubbleTex" OutName="bigslime_bubble" Format="i4" Width="16" Height="16" Offset="0x11580" />
|
||||
<Texture Name="gBigslimeShadowTex" OutName="bigslime_shadow" Format="i8" Width="32" Height="32" Offset="0x11600" />
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<Root>
|
||||
<File Name="object_bji" Segment="6">
|
||||
<Animation Name="object_bji_Anim_00066C" Offset="0x66C" />
|
||||
<Animation Name="object_bji_Anim_000AB0" Offset="0xAB0" />
|
||||
<Animation Name="object_bji_Anim_000FDC" Offset="0xFDC" />
|
||||
<Animation Name="object_bji_Anim_00066C" Offset="0x66C" /> <!-- Original name is "Bji_fushigigaru" ("to be curious; to wonder; to marvel") -->
|
||||
<Animation Name="object_bji_Anim_000AB0" Offset="0xAB0" /> <!-- Original name is "Bji_talk" -->
|
||||
<Animation Name="object_bji_Anim_000FDC" Offset="0xFDC" /> <!-- Original name is "Bji_wait01" -->
|
||||
|
||||
<DList Name="gShikashiHeadDL" Offset="0x23A0" />
|
||||
<DList Name="gShikashiRightHandDL" Offset="0x28D8" />
|
||||
@@ -59,6 +59,6 @@
|
||||
<Limb Name="gShikashiHeadLimb" Type="Standard" EnumName="SHIKASHI_LIMB_HEAD" Offset="0x5744" />
|
||||
<Skeleton Name="gShikashiSkel" Type="Flex" LimbType="Standard" LimbNone="SHIKASHI_LIMB_NONE" LimbMax="SHIKASHI_LIMB_MAX" EnumName="ShikashiLimb" Offset="0x578C" />
|
||||
|
||||
<Animation Name="object_bji_Anim_005B58" Offset="0x5B58" />
|
||||
<Animation Name="object_bji_Anim_005B58" Offset="0x5B58" /> <!-- Original name is "Bji_wait02" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
<Root>
|
||||
<!-- ??? (Hand in Toilet) assets -->
|
||||
<File Name="object_bjt" Segment="6">
|
||||
<!-- ??? (Hand in Toilet) assets -->
|
||||
|
||||
<!-- ??? animations -->
|
||||
<Animation Name="gToiletHandWaggingFingerAnim" Offset="0xFC" /><!-- Original name: bjt_chigau ("different/wrong") -->
|
||||
<Animation Name="gToiletHandFistAnim" Offset="0x218" /><!-- Original name: bjt_guu ("fist") -->
|
||||
<Animation Name="gToiletHandThumbsUpAnim" Offset="0x3A8" /><!-- Original name: bjt_ok (thumbs up, correct) -->
|
||||
<Animation Name="gToiletHandOpenHandAnim" Offset="0x564" /><!-- Original name: bjt_par ("paper"? Open hand, palm up) -->
|
||||
<Animation Name="gToiletHandWaitingAnim" Offset="0x7B8" /><!-- Original name: bjt_wait (flopping around grasping at air) -->
|
||||
<Animation Name="gToiletHandWaggingFingerAnim" Offset="0xFC" /><!-- Original name is "bjt_chigau" ("different/wrong") -->
|
||||
<Animation Name="gToiletHandFistAnim" Offset="0x218" /><!-- Original name is "bjt_guu" ("fist") -->
|
||||
<Animation Name="gToiletHandThumbsUpAnim" Offset="0x3A8" /><!-- Original name is "bjt_ok" (thumbs up, correct) -->
|
||||
<Animation Name="gToiletHandOpenHandAnim" Offset="0x564" /><!-- Original name is "bjt_par" ("paper"? Open hand, palm up) -->
|
||||
<Animation Name="gToiletHandWaitingAnim" Offset="0x7B8" /><!-- Original name is "bjt_wait" (flopping around grasping at air) -->
|
||||
|
||||
<!-- ??? model -->
|
||||
<DList Name="gToiletHandIndexFingerDL" Offset="0x1570" />
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<Root>
|
||||
<File Name="object_boj" Segment="6">
|
||||
<Animation Name="object_boj_Anim_00041C" Offset="0x41C" />
|
||||
<Animation Name="object_boj_Anim_0004D0" Offset="0x4D0" />
|
||||
<Animation Name="object_boj_Anim_00071C" Offset="0x71C" />
|
||||
<Animation Name="object_boj_Anim_0008C0" Offset="0x8C0" /> <!-- object_ginko_floorsmacking_anim -->
|
||||
<Animation Name="object_boj_Anim_000AC4" Offset="0xAC4" /> <!-- object_ginko_advertising_anim -->
|
||||
<Animation Name="object_boj_Anim_001494" Offset="0x1494" />
|
||||
<Animation Name="object_boj_Anim_001908" Offset="0x1908" />
|
||||
<Animation Name="object_boj_Anim_002734" Offset="0x2734" />
|
||||
<Animation Name="object_boj_Anim_0033B0" Offset="0x33B0" />
|
||||
<Animation Name="object_boj_Anim_004078" Offset="0x4078" />
|
||||
<Animation Name="object_boj_Anim_0043F0" Offset="0x43F0" /> <!-- object_ginko_sitting_anim -->
|
||||
<Animation Name="object_boj_Anim_004A7C" Offset="0x4A7C" /> <!-- object_ginko_amazed_anim -->
|
||||
<Animation Name="object_boj_Anim_004F40" Offset="0x4F40" /> <!-- object_ginko_stamp_reach_anim -->
|
||||
<Animation Name="object_boj_Anim_005CE4" Offset="0x5CE4" />
|
||||
<Animation Name="object_boj_Anim_005D9C" Offset="0x5D9C" />
|
||||
<Animation Name="object_boj_Anim_00041C" Offset="0x41C" /> <!-- Original name is "Boj2_17" -->
|
||||
<Animation Name="object_boj_Anim_0004D0" Offset="0x4D0" /> <!-- Original name is "Boj2_19" -->
|
||||
<Animation Name="object_boj_Anim_00071C" Offset="0x71C" /> <!-- Original name is "Boj2_5" -->
|
||||
<Animation Name="object_boj_Anim_0008C0" Offset="0x8C0" /> <!-- Original name is "Boj2_9" -->
|
||||
<Animation Name="object_boj_Anim_000AC4" Offset="0xAC4" /> <!-- Original name is "Boj2_9_2" -->
|
||||
<Animation Name="object_boj_Anim_001494" Offset="0x1494" /> <!-- Original name is "Boj_13" -->
|
||||
<Animation Name="object_boj_Anim_001908" Offset="0x1908" /> <!-- Original name is "Boj_14" -->
|
||||
<Animation Name="object_boj_Anim_002734" Offset="0x2734" /> <!-- Original name is "Boj_card_aka_talk" ("aka" = "red") -->
|
||||
<Animation Name="object_boj_Anim_0033B0" Offset="0x33B0" /> <!-- Original name is "Boj_card_aka_wait" -->
|
||||
<Animation Name="object_boj_Anim_004078" Offset="0x4078" /> <!-- Original name is "Boj_card_ao_wait" ("ao" = "blue") -->
|
||||
<Animation Name="object_boj_Anim_0043F0" Offset="0x43F0" /> <!-- Original name is "Boj_ginkowait" ("ginko" = "bank") -->
|
||||
<Animation Name="object_boj_Anim_004A7C" Offset="0x4A7C" /> <!-- Original name is "Boj_ginkoyobi" ("yobi" = "call; invitation") -->
|
||||
<Animation Name="object_boj_Anim_004F40" Offset="0x4F40" /> <!-- Original name is "Boj_hanko" ("seal; stamp") -->
|
||||
<Animation Name="object_boj_Anim_005CE4" Offset="0x5CE4" /> <!-- Original name is "Boj_juggling" -->
|
||||
<Animation Name="object_boj_Anim_005D9C" Offset="0x5D9C" /> <!-- Original name is "Boj_matsu" ("to wait") -->
|
||||
<Texture Name="object_boj_TLUT_005DB0" OutName="tlut_005DB0" Format="rgba16" Width="16" Height="16" Offset="0x5DB0" />
|
||||
<Texture Name="object_boj_Tex_005FB0" OutName="tex_005FB0" Format="ci8" Width="8" Height="16" Offset="0x5FB0" />
|
||||
<Texture Name="object_boj_Tex_006030" OutName="tex_006030" Format="ci8" Width="8" Height="8" Offset="0x6030" />
|
||||
@@ -58,7 +58,7 @@
|
||||
<DList Name="object_boj_DL_00BA28" Offset="0xBA28" />
|
||||
<DList Name="object_boj_DL_00BA30" Offset="0xBA30" />
|
||||
<Texture Name="object_boj_Tex_00BB88" OutName="tex_00BB88" Format="i8" Width="16" Height="16" Offset="0xBB88" />
|
||||
<DList Name="object_boj_DL_00BCC8" Offset="0xBCC8" />
|
||||
<DList Name="object_boj_DL_00BCC8" Offset="0xBCC8" /> <!-- Original name is "jug_ball_model" -->
|
||||
<Texture Name="object_boj_Tex_00BD50" OutName="tex_00BD50" Format="i8" Width="32" Height="32" Offset="0xBD50" />
|
||||
<Limb Name="object_boj_Standardlimb_00C150" Type="Standard" EnumName="OBJECT_BOJ_LIMB_01" Offset="0xC150" />
|
||||
<Limb Name="object_boj_Standardlimb_00C15C" Type="Standard" EnumName="OBJECT_BOJ_LIMB_02" Offset="0xC15C" />
|
||||
@@ -76,18 +76,18 @@
|
||||
<Limb Name="object_boj_Standardlimb_00C1EC" Type="Standard" EnumName="OBJECT_BOJ_LIMB_0E" Offset="0xC1EC" />
|
||||
<Limb Name="object_boj_Standardlimb_00C1F8" Type="Standard" EnumName="OBJECT_BOJ_LIMB_0F" Offset="0xC1F8" />
|
||||
<Skeleton Name="object_boj_Skel_00C240" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BOJ_LIMB_NONE" LimbMax="OBJECT_BOJ_LIMB_MAX" EnumName="ObjectBojLimb" Offset="0xC240" /> <!-- object_ginko_skeleton -->
|
||||
<Animation Name="object_boj_Anim_00DED8" Offset="0xDED8" />
|
||||
<Animation Name="object_boj_Anim_00F920" Offset="0xF920" />
|
||||
<Animation Name="object_boj_Anim_00FC1C" Offset="0xFC1C" />
|
||||
<Animation Name="object_boj_Anim_00FEE4" Offset="0xFEE4" />
|
||||
<Animation Name="object_boj_Anim_010330" Offset="0x10330" />
|
||||
<Animation Name="object_boj_Anim_010BDC" Offset="0x10BDC" />
|
||||
<Animation Name="object_boj_Anim_01139C" Offset="0x1139C" />
|
||||
<Animation Name="object_boj_Anim_011C38" Offset="0x11C38" />
|
||||
<Animation Name="object_boj_Anim_011F84" Offset="0x11F84" />
|
||||
<Animation Name="object_boj_Anim_0128F4" Offset="0x128F4" />
|
||||
<Animation Name="object_boj_Anim_012E84" Offset="0x12E84" />
|
||||
<DList Name="gBombShopBagDL" Offset="0x13380" />
|
||||
<Animation Name="object_boj_Anim_00DED8" Offset="0xDED8" /> <!-- Original name is "boj_door1" -->
|
||||
<Animation Name="object_boj_Anim_00F920" Offset="0xF920" /> <!-- Original name is "boj_door2" -->
|
||||
<Animation Name="object_boj_Anim_00FC1C" Offset="0xFC1C" /> <!-- Original name is "boj_walk1" -->
|
||||
<Animation Name="object_boj_Anim_00FEE4" Offset="0xFEE4" /> <!-- Original name is "boj_walk2" -->
|
||||
<Animation Name="object_boj_Anim_010330" Offset="0x10330" /> <!-- Original name is "boj_walk3" -->
|
||||
<Animation Name="object_boj_Anim_010BDC" Offset="0x10BDC" /> <!-- Original name is "scm_harau" ("to drive away") -->
|
||||
<Animation Name="object_boj_Anim_01139C" Offset="0x1139C" /> <!-- Original name is "scm_niwait" -->
|
||||
<Animation Name="object_boj_Anim_011C38" Offset="0x11C38" /> <!-- Original name is "scm_odoroku" ("surprise") -->
|
||||
<Animation Name="object_boj_Anim_011F84" Offset="0x11F84" /> <!-- Original name is "scm_teburarun" ("tebura" = "empty-handed") -->
|
||||
<Animation Name="object_boj_Anim_0128F4" Offset="0x128F4" /> <!-- Original name is "scm_teburawait" -->
|
||||
<Animation Name="object_boj_Anim_012E84" Offset="0x12E84" /> <!-- Original name is "scm_yarare" ("to suffer damage") -->
|
||||
<DList Name="gBombShopBagDL" Offset="0x13380" /> <!-- Original name is "seb_model" -->
|
||||
<Texture Name="gBombShopBagTLUT" OutName="bomb_shop_bag_tlut" Format="rgba16" Width="16" Height="16" Offset="0x134C0" />
|
||||
<Texture Name="gBombShopBagTex" OutName="bomb_shop_bag" Format="ci8" Width="16" Height="16" Offset="0x136C0" />
|
||||
</File>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<Root>
|
||||
<File Name="object_bombf" Segment="6">
|
||||
<DList Name="object_bombf_DL_000340" Offset="0x340" />
|
||||
<DList Name="object_bombf_DL_000408" Offset="0x408" />
|
||||
<DList Name="object_bombf_DL_000530" Offset="0x530" />
|
||||
<DList Name="object_bombf_DL_000340" Offset="0x340" /> <!-- Original name is "bm_leaf_model" -->
|
||||
<DList Name="object_bombf_DL_000408" Offset="0x408" /> <!-- Original name is "bm_flower_model" -->
|
||||
<DList Name="object_bombf_DL_000530" Offset="0x530" /> <!-- Original name is "bm_leaf2_model" -->
|
||||
<Texture Name="object_bombf_Tex_0005D8" OutName="tex_0005D8" Format="rgba16" Width="32" Height="32" Offset="0x5D8" />
|
||||
<Texture Name="object_bombf_Tex_000DD8" OutName="tex_000DD8" Format="rgba16" Width="16" Height="32" Offset="0xDD8" />
|
||||
<Texture Name="object_bombf_Tex_0011D8" OutName="tex_0011D8" Format="ia16" Width="32" Height="32" Offset="0x11D8" />
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
<File Name="object_bombiwa" Segment="6">
|
||||
<Texture Name="object_bombiwa_TLUT_000000" OutName="tlut_000000" Format="rgba16" Width="4" Height="4" Offset="0x0" />
|
||||
<Texture Name="object_bombiwa_Tex_000020" OutName="tex_000020" Format="ci4" Width="64" Height="64" Offset="0x20" />
|
||||
<DList Name="object_bombiwa_DL_0009E0" Offset="0x9E0" />
|
||||
<DList Name="object_bombiwa_DL_0009E0" Offset="0x9E0" /> <!-- Original name is "obj_18b_stone_model" -->
|
||||
<DList Name="object_bombiwa_DL_000AF0" Offset="0xAF0" />
|
||||
<Texture Name="object_bombiwa_Tex_000C00" OutName="tex_000C00" Format="i4" Width="64" Height="64" Offset="0xC00" />
|
||||
<DList Name="object_bombiwa_DL_001700" Offset="0x1700" />
|
||||
<DList Name="object_bombiwa_DL_001700" Offset="0x1700" /> <!-- Original name is "obj_bombstone_model" -->
|
||||
<DList Name="object_bombiwa_DL_001800" Offset="0x1800" />
|
||||
<DList Name="object_bombiwa_DL_001820" Offset="0x1820" />
|
||||
<DList Name="object_bombiwa_DL_001990" Offset="0x1990" />
|
||||
<DList Name="object_bombiwa_DL_001990" Offset="0x1990" /> <!-- Original name is "g5_model" -->
|
||||
<Texture Name="object_bombiwa_Tex_001A70" OutName="tex_001A70" Format="rgba16" Width="32" Height="32" Offset="0x1A70" />
|
||||
<Texture Name="object_bombiwa_Tex_002270" OutName="tex_002270" Format="i4" Width="64" Height="64" Offset="0x2270" />
|
||||
<DList Name="object_bombiwa_DL_002F60" Offset="0x2F60" />
|
||||
<DList Name="object_bombiwa_DL_002F60" Offset="0x2F60" /> <!-- Original name is "g2_model" -->
|
||||
<DList Name="object_bombiwa_DL_003110" Offset="0x3110" />
|
||||
<Texture Name="object_bombiwa_Tex_0031C0" OutName="tex_0031C0" Format="ia8" Width="16" Height="16" Offset="0x31C0" />
|
||||
<Texture Name="object_bombiwa_Tex_0032C0" OutName="tex_0032C0" Format="rgba16" Width="32" Height="32" Offset="0x32C0" />
|
||||
<Texture Name="object_bombiwa_Tex_003AC0" OutName="tex_003AC0" Format="i4" Width="64" Height="64" Offset="0x3AC0" />
|
||||
<DList Name="object_bombiwa_DL_004560" Offset="0x4560" />
|
||||
<DList Name="object_bombiwa_DL_004560" Offset="0x4560" /> <!-- Original name is "g4_model" -->
|
||||
<DList Name="object_bombiwa_DL_004688" Offset="0x4688" />
|
||||
<Texture Name="object_bombiwa_Tex_004730" OutName="tex_004730" Format="ia8" Width="16" Height="16" Offset="0x4730" />
|
||||
<Texture Name="object_bombiwa_Tex_004830" OutName="tex_004830" Format="rgba16" Width="32" Height="32" Offset="0x4830" />
|
||||
<Texture Name="object_bombiwa_Tex_005030" OutName="tex_005030" Format="i4" Width="64" Height="64" Offset="0x5030" />
|
||||
<DList Name="object_bombiwa_DL_005990" Offset="0x5990" />
|
||||
<DList Name="object_bombiwa_DL_005990" Offset="0x5990" /> <!-- Original name is "hahen_model" -->
|
||||
<Texture Name="object_bombiwa_Tex_005A70" OutName="tex_005A70" Format="rgba16" Width="32" Height="32" Offset="0x5A70" />
|
||||
<Texture Name="object_bombiwa_Tex_006270" OutName="tex_006270" Format="i4" Width="64" Height="64" Offset="0x6270" />
|
||||
</File>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<Root>
|
||||
<File Name="object_boss05" Segment="6">
|
||||
<Animation Name="object_boss05_Anim_0006A4" Offset="0x6A4" />
|
||||
<Animation Name="object_boss05_Anim_000A5C" Offset="0xA5C" />
|
||||
<Animation Name="object_boss05_Anim_0006A4" Offset="0x6A4" /> <!-- Original name is "wdb_atackH" -->
|
||||
<Animation Name="object_boss05_Anim_000A5C" Offset="0xA5C" /> <!-- Original name is "wdb_atackwalkH" -->
|
||||
<Animation Name="object_boss05_Anim_000ABC" Offset="0xABC" />
|
||||
<DList Name="object_boss05_DL_0011C0" Offset="0x11C0" />
|
||||
<DList Name="object_boss05_DL_001288" Offset="0x1288" />
|
||||
@@ -25,9 +25,9 @@
|
||||
<Limb Name="object_boss05_Standardlimb_0024A4" Type="Standard" EnumName="OBJECT_BOSS05_1_LIMB_08" Offset="0x24A4" />
|
||||
<Limb Name="object_boss05_Standardlimb_0024B0" Type="Standard" EnumName="OBJECT_BOSS05_1_LIMB_09" Offset="0x24B0" />
|
||||
<Skeleton Name="object_boss05_Skel_0024E0" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BOSS05_1_LIMB_NONE" LimbMax="OBJECT_BOSS05_1_LIMB_MAX" EnumName="ObjectBoss051Limb" Offset="0x24E0" />
|
||||
<Animation Name="object_boss05_Anim_002F0C" Offset="0x2F0C" />
|
||||
<Animation Name="object_boss05_Anim_003448" Offset="0x3448" />
|
||||
<Animation Name="object_boss05_Anim_003500" Offset="0x3500" />
|
||||
<Animation Name="object_boss05_Anim_002F0C" Offset="0x2F0C" /> <!-- Original name is "wdb_damageH" -->
|
||||
<Animation Name="object_boss05_Anim_003448" Offset="0x3448" /> <!-- Original name is "wdb_hakkenH" ("detection") -->
|
||||
<Animation Name="object_boss05_Anim_003500" Offset="0x3500" /> <!-- Original name is "wdb_head" -->
|
||||
<DList Name="object_boss05_DL_004620" Offset="0x4620" />
|
||||
<DList Name="object_boss05_DL_0046C8" Offset="0x46C8" />
|
||||
<DList Name="object_boss05_DL_004788" Offset="0x4788" />
|
||||
@@ -73,9 +73,9 @@
|
||||
<Limb Name="object_boss05_Standardlimb_006314" Type="Standard" EnumName="OBJECT_BOSS05_2_LIMB_12" Offset="0x6314" />
|
||||
<Limb Name="object_boss05_Standardlimb_006320" Type="Standard" EnumName="OBJECT_BOSS05_2_LIMB_13" Offset="0x6320" />
|
||||
<Skeleton Name="object_boss05_Skel_006378" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BOSS05_2_LIMB_NONE" LimbMax="OBJECT_BOSS05_2_LIMB_MAX" EnumName="ObjectBoss052Limb" Offset="0x6378" />
|
||||
<Animation Name="object_boss05_Anim_006484" Offset="0x6484" />
|
||||
<Animation Name="object_boss05_Anim_006E50" Offset="0x6E50" />
|
||||
<Animation Name="object_boss05_Anim_007488" Offset="0x7488" />
|
||||
<Animation Name="object_boss05_Anim_007908" Offset="0x7908" />
|
||||
<Animation Name="object_boss05_Anim_006484" Offset="0x6484" /> <!-- Original name is "wdb_pakupaku" ("repeatedly opening and closing (one's mouth)") -->
|
||||
<Animation Name="object_boss05_Anim_006E50" Offset="0x6E50" /> <!-- Original name is "wdb_startH" -->
|
||||
<Animation Name="object_boss05_Anim_007488" Offset="0x7488" /> <!-- Original name is "wdb_waitH" -->
|
||||
<Animation Name="object_boss05_Anim_007908" Offset="0x7908" /> <!-- Original name is "wdb_walkH" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,216 +1,270 @@
|
||||
<Root>
|
||||
<!-- Assets for the Majora fight -->
|
||||
<File Name="object_boss07" Segment="6">
|
||||
<Animation Name="object_boss07_Anim_000194" Offset="0x194" />
|
||||
<Animation Name="object_boss07_Anim_000428" Offset="0x428" />
|
||||
<Animation Name="object_boss07_Anim_000D0C" Offset="0xD0C" />
|
||||
<Animation Name="object_boss07_Anim_002C40" Offset="0x2C40" />
|
||||
<Animation Name="object_boss07_Anim_002D84" Offset="0x2D84" />
|
||||
<Animation Name="object_boss07_Anim_0031E4" Offset="0x31E4" />
|
||||
<Animation Name="object_boss07_Anim_003854" Offset="0x3854" />
|
||||
<Animation Name="object_boss07_Anim_003A64" Offset="0x3A64" />
|
||||
<Animation Name="object_boss07_Anim_003B3C" Offset="0x3B3C" />
|
||||
<DList Name="object_boss07_DL_007930" Offset="0x7930" />
|
||||
<DList Name="object_boss07_DL_007B58" Offset="0x7B58" />
|
||||
<DList Name="object_boss07_DL_007CC0" Offset="0x7CC0" />
|
||||
<DList Name="object_boss07_DL_007F48" Offset="0x7F48" />
|
||||
<DList Name="object_boss07_DL_0080E0" Offset="0x80E0" />
|
||||
<DList Name="object_boss07_DL_0082D8" Offset="0x82D8" />
|
||||
<DList Name="object_boss07_DL_008580" Offset="0x8580" />
|
||||
<DList Name="object_boss07_DL_0087B8" Offset="0x87B8" />
|
||||
<DList Name="object_boss07_DL_0089B0" Offset="0x89B0" />
|
||||
<DList Name="object_boss07_DL_008C58" Offset="0x8C58" />
|
||||
<DList Name="object_boss07_DL_008E90" Offset="0x8E90" />
|
||||
<DList Name="object_boss07_DL_008FF8" Offset="0x8FF8" />
|
||||
<DList Name="object_boss07_DL_009280" Offset="0x9280" />
|
||||
<DList Name="object_boss07_DL_009418" Offset="0x9418" />
|
||||
<Limb Name="object_boss07_Standardlimb_009820" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_01" Offset="0x9820" />
|
||||
<Limb Name="object_boss07_Standardlimb_00982C" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_02" Offset="0x982C" />
|
||||
<Limb Name="object_boss07_Standardlimb_009838" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_03" Offset="0x9838" />
|
||||
<Limb Name="object_boss07_Standardlimb_009844" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_04" Offset="0x9844" />
|
||||
<Limb Name="object_boss07_Standardlimb_009850" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_05" Offset="0x9850" />
|
||||
<Limb Name="object_boss07_Standardlimb_00985C" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_06" Offset="0x985C" />
|
||||
<Limb Name="object_boss07_Standardlimb_009868" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_07" Offset="0x9868" />
|
||||
<Limb Name="object_boss07_Standardlimb_009874" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_08" Offset="0x9874" />
|
||||
<Limb Name="object_boss07_Standardlimb_009880" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_09" Offset="0x9880" />
|
||||
<Limb Name="object_boss07_Standardlimb_00988C" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_0A" Offset="0x988C" />
|
||||
<Limb Name="object_boss07_Standardlimb_009898" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_0B" Offset="0x9898" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098A4" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_0C" Offset="0x98A4" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098B0" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_0D" Offset="0x98B0" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098BC" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_0E" Offset="0x98BC" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098C8" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_0F" Offset="0x98C8" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098D4" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_10" Offset="0x98D4" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098E0" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_11" Offset="0x98E0" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098EC" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_12" Offset="0x98EC" />
|
||||
<Limb Name="object_boss07_Standardlimb_0098F8" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_13" Offset="0x98F8" />
|
||||
<Limb Name="object_boss07_Standardlimb_009904" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_14" Offset="0x9904" />
|
||||
<Limb Name="object_boss07_Standardlimb_009910" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_15" Offset="0x9910" />
|
||||
<Limb Name="object_boss07_Standardlimb_00991C" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_16" Offset="0x991C" />
|
||||
<Limb Name="object_boss07_Standardlimb_009928" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_17" Offset="0x9928" />
|
||||
<Limb Name="object_boss07_Standardlimb_009934" Type="Standard" EnumName="OBJECT_BOSS07_1_LIMB_18" Offset="0x9934" />
|
||||
<Skeleton Name="object_boss07_Skel_0099A0" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BOSS07_1_LIMB_NONE" LimbMax="OBJECT_BOSS07_1_LIMB_MAX" EnumName="ObjectBoss071Limb" Offset="0x99A0" />
|
||||
<Animation Name="object_boss07_Anim_009C7C" Offset="0x9C7C" />
|
||||
<Animation Name="object_boss07_Anim_009EA8" Offset="0x9EA8" />
|
||||
<Animation Name="object_boss07_Anim_00A194" Offset="0xA194" />
|
||||
<Animation Name="object_boss07_Anim_00A400" Offset="0xA400" />
|
||||
<Animation Name="object_boss07_Anim_00A6AC" Offset="0xA6AC" />
|
||||
<Animation Name="object_boss07_Anim_00AB04" Offset="0xAB04" />
|
||||
<Animation Name="object_boss07_Anim_00AD84" Offset="0xAD84" />
|
||||
<Animation Name="object_boss07_Anim_00AE40" Offset="0xAE40" />
|
||||
<Animation Name="object_boss07_Anim_00AEDC" Offset="0xAEDC" />
|
||||
<Texture Name="object_boss07_Tex_00AEF0" OutName="tex_00AEF0" Format="rgba16" Width="8" Height="8" Offset="0xAEF0" />
|
||||
<DList Name="object_boss07_DL_00AFB0" Offset="0xAFB0" />
|
||||
<DList Name="object_boss07_DL_00B020" Offset="0xB020" />
|
||||
<DList Name="object_boss07_DL_00BB30" Offset="0xBB30" />
|
||||
<DList Name="object_boss07_DL_00BBC0" Offset="0xBBC0" />
|
||||
<DList Name="object_boss07_DL_00BC50" Offset="0xBC50" />
|
||||
<DList Name="object_boss07_DL_00BCE0" Offset="0xBCE0" />
|
||||
<DList Name="object_boss07_DL_00BD70" Offset="0xBD70" />
|
||||
<DList Name="object_boss07_DL_00BE00" Offset="0xBE00" />
|
||||
<DList Name="object_boss07_DL_00BE90" Offset="0xBE90" />
|
||||
<DList Name="object_boss07_DL_00BF20" Offset="0xBF20" />
|
||||
<DList Name="object_boss07_DL_00BFB0" Offset="0xBFB0" />
|
||||
<Texture Name="object_boss07_Tex_00C298" OutName="tex_00C298" Format="i4" Width="32" Height="64" Offset="0xC298" />
|
||||
<DList Name="object_boss07_DL_00C7D8" Offset="0xC7D8" />
|
||||
<Texture Name="object_boss07_Tex_00C8B8" OutName="tex_00C8B8" Format="i4" Width="32" Height="64" Offset="0xC8B8" />
|
||||
<Texture Name="object_boss07_Tex_00CCB8" OutName="tex_00CCB8" Format="i4" Width="32" Height="32" Offset="0xCCB8" />
|
||||
<DList Name="object_boss07_DL_00CEE8" Offset="0xCEE8" />
|
||||
<Texture Name="object_boss07_TLUT_00CFB0" OutName="tlut_00CFB0" Format="rgba16" Width="4" Height="4" Offset="0xCFB0" />
|
||||
<Texture Name="object_boss07_TLUT_00CFD0" OutName="tlut_00CFD0" Format="rgba16" Width="4" Height="4" Offset="0xCFD0" />
|
||||
<Texture Name="object_boss07_Tex_00CFF0" OutName="tex_00CFF0" Format="rgba16" Width="16" Height="16" Offset="0xCFF0" />
|
||||
<Texture Name="object_boss07_Tex_00D1F0" OutName="tex_00D1F0" Format="ci4" Width="64" Height="64" Offset="0xD1F0" />
|
||||
<Texture Name="object_boss07_Tex_00D9F0" OutName="tex_00D9F0" Format="ci4" Width="64" Height="64" Offset="0xD9F0" />
|
||||
<Texture Name="object_boss07_TLUT_00E1F0" OutName="tlut_00E1F0" Format="rgba16" Width="4" Height="4" Offset="0xE1F0" />
|
||||
<Texture Name="object_boss07_TLUT_00E210" OutName="tlut_00E210" Format="rgba16" Width="4" Height="4" Offset="0xE210" />
|
||||
<Texture Name="object_boss07_TLUT_00E230" OutName="tlut_00E230" Format="rgba16" Width="4" Height="4" Offset="0xE230" />
|
||||
<Texture Name="object_boss07_Tex_00E250" OutName="tex_00E250" Format="rgba16" Width="32" Height="32" Offset="0xE250" />
|
||||
<Texture Name="object_boss07_Tex_00EA50" OutName="tex_00EA50" Format="ci4" Width="64" Height="64" Offset="0xEA50" />
|
||||
<Texture Name="object_boss07_Tex_00F250" OutName="tex_00F250" Format="ci4" Width="64" Height="64" Offset="0xF250" />
|
||||
<Texture Name="object_boss07_Tex_00FA50" OutName="tex_00FA50" Format="ci4" Width="16" Height="16" Offset="0xFA50" />
|
||||
<Texture Name="object_boss07_Tex_00FAD0" OutName="tex_00FAD0" Format="rgba16" Width="32" Height="64" Offset="0xFAD0" />
|
||||
<Texture Name="object_boss07_Tex_010AD0" OutName="tex_010AD0" Format="rgba16" Width="32" Height="64" Offset="0x10AD0" />
|
||||
<Texture Name="object_boss07_Tex_011AD0" OutName="tex_011AD0" Format="rgba16" Width="32" Height="64" Offset="0x11AD0" />
|
||||
<Texture Name="object_boss07_Tex_012AD0" OutName="tex_012AD0" Format="rgba16" Width="32" Height="32" Offset="0x12AD0" />
|
||||
<Texture Name="object_boss07_TLUT_0132D0" OutName="tlut_0132D0" Format="rgba16" Width="4" Height="4" Offset="0x132D0" />
|
||||
<Texture Name="object_boss07_TLUT_0132F0" OutName="tlut_0132F0" Format="rgba16" Width="4" Height="4" Offset="0x132F0" />
|
||||
<Texture Name="object_boss07_Tex_013310" OutName="tex_013310" Format="ci4" Width="64" Height="64" Offset="0x13310" />
|
||||
<Texture Name="object_boss07_Tex_013B10" OutName="tex_013B10" Format="ci4" Width="64" Height="64" Offset="0x13B10" />
|
||||
<DList Name="object_boss07_DL_0149A0" Offset="0x149A0" />
|
||||
<DList Name="object_boss07_DL_016090" Offset="0x16090" />
|
||||
<DList Name="object_boss07_DL_017DE0" Offset="0x17DE0" />
|
||||
<DList Name="object_boss07_DL_019328" Offset="0x19328" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B38" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_01" Offset="0x19B38" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B44" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_02" Offset="0x19B44" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B50" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_03" Offset="0x19B50" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B5C" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_04" Offset="0x19B5C" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B68" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_05" Offset="0x19B68" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B74" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_06" Offset="0x19B74" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B80" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_07" Offset="0x19B80" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B8C" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_08" Offset="0x19B8C" />
|
||||
<Limb Name="object_boss07_Standardlimb_019B98" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_09" Offset="0x19B98" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BA4" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_0A" Offset="0x19BA4" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BB0" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_0B" Offset="0x19BB0" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BBC" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_0C" Offset="0x19BBC" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BC8" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_0D" Offset="0x19BC8" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BD4" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_0E" Offset="0x19BD4" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BE0" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_0F" Offset="0x19BE0" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BEC" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_10" Offset="0x19BEC" />
|
||||
<Limb Name="object_boss07_Standardlimb_019BF8" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_11" Offset="0x19BF8" />
|
||||
<Limb Name="object_boss07_Standardlimb_019C04" Type="Standard" EnumName="OBJECT_BOSS07_2_LIMB_12" Offset="0x19C04" />
|
||||
<Skeleton Name="object_boss07_Skel_019C58" Type="Normal" LimbType="Standard" LimbNone="OBJECT_BOSS07_2_LIMB_NONE" LimbMax="OBJECT_BOSS07_2_LIMB_MAX" EnumName="ObjectBoss072Limb" Offset="0x19C58" />
|
||||
<Animation Name="object_boss07_Anim_019E48" Offset="0x19E48" />
|
||||
<Animation Name="object_boss07_Anim_01AE1C" Offset="0x1AE1C" />
|
||||
<Animation Name="object_boss07_Anim_01C430" Offset="0x1C430" />
|
||||
<Animation Name="object_boss07_Anim_01CFF0" Offset="0x1CFF0" />
|
||||
<Animation Name="object_boss07_Anim_01D974" Offset="0x1D974" />
|
||||
<Animation Name="object_boss07_Anim_01DEB4" Offset="0x1DEB4" />
|
||||
<Animation Name="object_boss07_Anim_022BB4" Offset="0x22BB4" />
|
||||
<Animation Name="object_boss07_Anim_023A44" Offset="0x23A44" />
|
||||
<Animation Name="object_boss07_Anim_023DAC" Offset="0x23DAC" />
|
||||
<Animation Name="object_boss07_Anim_025018" Offset="0x25018" />
|
||||
<Animation Name="object_boss07_Anim_025878" Offset="0x25878" />
|
||||
<Animation Name="object_boss07_Anim_026204" Offset="0x26204" />
|
||||
<Animation Name="object_boss07_Anim_0269EC" Offset="0x269EC" />
|
||||
<Animation Name="object_boss07_Anim_026EA0" Offset="0x26EA0" />
|
||||
<Animation Name="object_boss07_Anim_027270" Offset="0x27270" />
|
||||
<DList Name="object_boss07_DL_02C350" Offset="0x2C350" />
|
||||
<DList Name="object_boss07_DL_02C4D0" Offset="0x2C4D0" />
|
||||
<DList Name="object_boss07_DL_02CB48" Offset="0x2CB48" />
|
||||
<DList Name="object_boss07_DL_02CD40" Offset="0x2CD40" />
|
||||
<DList Name="object_boss07_DL_02D1D0" Offset="0x2D1D0" />
|
||||
<DList Name="object_boss07_DL_02D3C8" Offset="0x2D3C8" />
|
||||
<DList Name="object_boss07_DL_02D670" Offset="0x2D670" />
|
||||
<DList Name="object_boss07_DL_02D940" Offset="0x2D940" />
|
||||
<DList Name="object_boss07_DL_02DB38" Offset="0x2DB38" />
|
||||
<DList Name="object_boss07_DL_02DDE0" Offset="0x2DDE0" />
|
||||
<DList Name="object_boss07_DL_02E0B8" Offset="0x2E0B8" />
|
||||
<DList Name="object_boss07_DL_02E220" Offset="0x2E220" />
|
||||
<DList Name="object_boss07_DL_02E4A8" Offset="0x2E4A8" />
|
||||
<DList Name="object_boss07_DL_02E6D0" Offset="0x2E6D0" />
|
||||
<DList Name="object_boss07_DL_02E838" Offset="0x2E838" />
|
||||
<DList Name="object_boss07_DL_02EAC0" Offset="0x2EAC0" />
|
||||
<Texture Name="object_boss07_Tex_02ECF0" OutName="tex_02ECF0" Format="rgba16" Width="8" Height="16" Offset="0x2ECF0" />
|
||||
<DList Name="object_boss07_DL_02EE50" Offset="0x2EE50" />
|
||||
<DList Name="object_boss07_DL_02EEC8" Offset="0x2EEC8" />
|
||||
<DList Name="object_boss07_DL_02EEF8" Offset="0x2EEF8" />
|
||||
<DList Name="object_boss07_DL_02EF68" Offset="0x2EF68" />
|
||||
<DList Name="object_boss07_DL_02EF88" Offset="0x2EF88" />
|
||||
<DList Name="object_boss07_DL_02EFE8" Offset="0x2EFE8" />
|
||||
<DList Name="object_boss07_DL_02F640" Offset="0x2F640" />
|
||||
<!-- <Blob Name="object_boss07_Blob_02F840" Size="0x3C00" Offset="0x2F840" /> -->
|
||||
<Limb Name="object_boss07_Standardlimb_033440" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_01" Offset="0x33440" />
|
||||
<Limb Name="object_boss07_Standardlimb_03344C" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_02" Offset="0x3344C" />
|
||||
<Limb Name="object_boss07_Standardlimb_033458" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_03" Offset="0x33458" />
|
||||
<Limb Name="object_boss07_Standardlimb_033464" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_04" Offset="0x33464" />
|
||||
<Limb Name="object_boss07_Standardlimb_033470" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_05" Offset="0x33470" />
|
||||
<Limb Name="object_boss07_Standardlimb_03347C" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_06" Offset="0x3347C" />
|
||||
<Limb Name="object_boss07_Standardlimb_033488" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_07" Offset="0x33488" />
|
||||
<Limb Name="object_boss07_Standardlimb_033494" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_08" Offset="0x33494" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334A0" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_09" Offset="0x334A0" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334AC" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_0A" Offset="0x334AC" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334B8" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_0B" Offset="0x334B8" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334C4" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_0C" Offset="0x334C4" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334D0" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_0D" Offset="0x334D0" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334DC" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_0E" Offset="0x334DC" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334E8" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_0F" Offset="0x334E8" />
|
||||
<Limb Name="object_boss07_Standardlimb_0334F4" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_10" Offset="0x334F4" />
|
||||
<Limb Name="object_boss07_Standardlimb_033500" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_11" Offset="0x33500" />
|
||||
<Limb Name="object_boss07_Standardlimb_03350C" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_12" Offset="0x3350C" />
|
||||
<Limb Name="object_boss07_Standardlimb_033518" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_13" Offset="0x33518" />
|
||||
<Limb Name="object_boss07_Standardlimb_033524" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_14" Offset="0x33524" />
|
||||
<Limb Name="object_boss07_Standardlimb_033530" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_15" Offset="0x33530" />
|
||||
<Limb Name="object_boss07_Standardlimb_03353C" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_16" Offset="0x3353C" />
|
||||
<Limb Name="object_boss07_Standardlimb_033548" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_17" Offset="0x33548" />
|
||||
<Limb Name="object_boss07_Standardlimb_033554" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_18" Offset="0x33554" />
|
||||
<Limb Name="object_boss07_Standardlimb_033560" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_19" Offset="0x33560" />
|
||||
<Limb Name="object_boss07_Standardlimb_03356C" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_1A" Offset="0x3356C" />
|
||||
<Limb Name="object_boss07_Standardlimb_033578" Type="Standard" EnumName="OBJECT_BOSS07_3_LIMB_1B" Offset="0x33578" />
|
||||
<Skeleton Name="object_boss07_Skel_0335F0" Type="Flex" LimbType="Standard" LimbNone="OBJECT_BOSS07_3_LIMB_NONE" LimbMax="OBJECT_BOSS07_3_LIMB_MAX" EnumName="ObjectBoss073Limb" Offset="0x335F0" />
|
||||
<Animation Name="object_boss07_Anim_033F80" Offset="0x33F80" />
|
||||
<Animation Name="object_boss07_Anim_034E64" Offset="0x34E64" />
|
||||
<Animation Name="object_boss07_Anim_0358C4" Offset="0x358C4" />
|
||||
<Animation Name="object_boss07_Anim_036A7C" Offset="0x36A7C" />
|
||||
<Animation Name="object_boss07_Anim_037ADC" Offset="0x37ADC" />
|
||||
<Animation Name="object_boss07_Anim_03918C" Offset="0x3918C" />
|
||||
<Animation Name="object_boss07_Anim_03B330" Offset="0x3B330" />
|
||||
<Animation Name="object_boss07_Anim_03C4E0" Offset="0x3C4E0" />
|
||||
<Animation Name="object_boss07_Anim_03CBD0" Offset="0x3CBD0" />
|
||||
<Animation Name="object_boss07_Anim_03D224" Offset="0x3D224" />
|
||||
<Animation Name="object_boss07_Anim_03D7F0" Offset="0x3D7F0" />
|
||||
<Animation Name="object_boss07_Anim_03DD1C" Offset="0x3DD1C" />
|
||||
<Texture Name="object_boss07_Tex_03DD30" OutName="tex_03DD30" Format="rgba16" Width="32" Height="64" Offset="0x3DD30" />
|
||||
<Texture Name="object_boss07_Tex_03ED30" OutName="tex_03ED30" Format="rgba16" Width="32" Height="16" Offset="0x3ED30" />
|
||||
<Texture Name="object_boss07_Tex_03F130" OutName="tex_03F130" Format="rgba16" Width="64" Height="32" Offset="0x3F130" />
|
||||
<Texture Name="object_boss07_Tex_040130" OutName="tex_040130" Format="rgba16" Width="32" Height="32" Offset="0x40130" />
|
||||
<Texture Name="object_boss07_Tex_040930" OutName="tex_040930" Format="rgba16" Width="16" Height="16" Offset="0x40930" />
|
||||
<Texture Name="object_boss07_Tex_040B30" OutName="tex_040B30" Format="rgba16" Width="32" Height="64" Offset="0x40B30" />
|
||||
<Texture Name="object_boss07_Tex_041B30" OutName="tex_041B30" Format="rgba16" Width="32" Height="32" Offset="0x41B30" />
|
||||
<Texture Name="object_boss07_Tex_042330" OutName="tex_042330" Format="rgba16" Width="32" Height="64" Offset="0x42330" />
|
||||
<Texture Name="object_boss07_Tex_043330" OutName="tex_043330" Format="rgba16" Width="32" Height="64" Offset="0x43330" />
|
||||
<Texture Name="object_boss07_Tex_044330" OutName="tex_044330" Format="rgba16" Width="32" Height="64" Offset="0x44330" />
|
||||
<Texture Name="object_boss07_Tex_045330" OutName="tex_045330" Format="rgba16" Width="16" Height="16" Offset="0x45330" />
|
||||
<Texture Name="object_boss07_Tex_045530" OutName="tex_045530" Format="rgba16" Width="16" Height="16" Offset="0x45530" />
|
||||
<Texture Name="object_boss07_Tex_045730" OutName="tex_045730" Format="rgba16" Width="16" Height="16" Offset="0x45730" />
|
||||
<Texture Name="object_boss07_Tex_045930" OutName="tex_045930" Format="rgba16" Width="16" Height="16" Offset="0x45930" />
|
||||
<!-- <Blob Name="object_boss07_Blob_045B30" Size="0x1000" Offset="0x45B30" /> -->
|
||||
<!-- Majora's Incarnation Animations -->
|
||||
<Animation Name="gMajorasIncarnationPirouetteAnim" Offset="0x194" /> <!-- Original name is "last2_bd" (probably short for "ballet dance") -->
|
||||
<Animation Name="gMajorasIncarnationEnergyBallAttackAnim" Offset="0x428" /> <!-- Original name is "last2_beam02" -->
|
||||
<Animation Name="gMajorasIncarnationDamageAnim" Offset="0xD0C" /> <!-- Original name is "last2_dam" -->
|
||||
<Animation Name="gMajorasIncarnationIntroDanceAnim" Offset="0x2C40" /> <!-- Original name is "last2_hensin" ("metamorphosis/transformation") -->
|
||||
<Animation Name="gMajorasIncarnationJerkingAnim" Offset="0x2D84" /> <!-- Original name is "last2_hensin2" -->
|
||||
<Animation Name="gMajorasIncarnationPumpingUpAnim" Offset="0x31E4" /> <!-- Original name is "last2_hensin3" -->
|
||||
<Animation Name="gMajorasIncarnationFinalHitAnim" Offset="0x3854" /> <!-- Original name is "last2_hensin4" -->
|
||||
<Animation Name="gMajorasIncarnationSquattingDanceAnim" Offset="0x3A64" /> <!-- Original name is "last2_kd" (probably short for "kosakku (Cossack) dance") -->
|
||||
<Animation Name="gMajorasIncarnationStationaryAnim" Offset="0x3B3C" /> <!-- Original name is "last2_kihon" ("basic"). Unused -->
|
||||
|
||||
<!-- Majora's Incarnation Limb DisplayLists -->
|
||||
<DList Name="gMajorasIncarnationEyestalkDL" Offset="0x7930" />
|
||||
<DList Name="gMajorasIncarnationLeftFootDL" Offset="0x7B58" />
|
||||
<DList Name="gMajorasIncarnationLeftShinDL" Offset="0x7CC0" />
|
||||
<DList Name="gMajorasIncarnationLeftThighDL" Offset="0x7F48" />
|
||||
<DList Name="gMajorasIncarnationLeftHandDL" Offset="0x80E0" />
|
||||
<DList Name="gMajorasIncarnationLeftForearmDL" Offset="0x82D8" />
|
||||
<DList Name="gMajorasIncarnationLeftUpperArmDL" Offset="0x8580" />
|
||||
<DList Name="gMajorasIncarnationRightHandDL" Offset="0x87B8" />
|
||||
<DList Name="gMajorasIncarnationRightForearmDL" Offset="0x89B0" />
|
||||
<DList Name="gMajorasIncarnationRightUpperArmDL" Offset="0x8C58" />
|
||||
<DList Name="gMajorasIncarnationRightFootDL" Offset="0x8E90" />
|
||||
<DList Name="gMajorasIncarnationRightShinDL" Offset="0x8FF8" />
|
||||
<DList Name="gMajorasIncarnationRightThighDL" Offset="0x9280" />
|
||||
<DList Name="gMajorasIncarnationMaskDL" Offset="0x9418" />
|
||||
|
||||
<!-- Majora's Incarnation Limbs -->
|
||||
<Limb Name="gMajorasIncarnationRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_ROOT" Offset="0x9820" />
|
||||
<Limb Name="gMajorasIncarnationWrapperLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_WRAPPER" Offset="0x982C" />
|
||||
<Limb Name="gMajorasIncarnationMaskLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_MASK" Offset="0x9838" />
|
||||
<Limb Name="gMajorasIncarnationRightLegRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_LEG_ROOT" Offset="0x9844" />
|
||||
<Limb Name="gMajorasIncarnationRightThighLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_THIGH" Offset="0x9850" />
|
||||
<Limb Name="gMajorasIncarnationRightLowerLegRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_LOWER_LEG_ROOT" Offset="0x985C" />
|
||||
<Limb Name="gMajorasIncarnationRightShinLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_SHIN" Offset="0x9868" />
|
||||
<Limb Name="gMajorasIncarnationRightFootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_FOOT" Offset="0x9874" />
|
||||
<Limb Name="gMajorasIncarnationRightArmRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_ARM_ROOT" Offset="0x9880" />
|
||||
<Limb Name="gMajorasIncarnationRightUpperArmLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_UPPER_ARM" Offset="0x988C" />
|
||||
<Limb Name="gMajorasIncarnationRightLowerArmRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_LOWER_ARM_ROOT" Offset="0x9898" />
|
||||
<Limb Name="gMajorasIncarnationRightForearmLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_FOREARM" Offset="0x98A4" />
|
||||
<Limb Name="gMajorasIncarnationRightHandLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_RIGHT_HAND" Offset="0x98B0" />
|
||||
<Limb Name="gMajorasIncarnationLeftArmRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_ARM_ROOT" Offset="0x98BC" />
|
||||
<Limb Name="gMajorasIncarnationLeftUpperArmLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_UPPER_ARM" Offset="0x98C8" />
|
||||
<Limb Name="gMajorasIncarnationLeftLowerArmRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_LOWER_ARM_ROOT" Offset="0x98D4" />
|
||||
<Limb Name="gMajorasIncarnationLeftForearmLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_FOREARM" Offset="0x98E0" />
|
||||
<Limb Name="gMajorasIncarnationLeftHandLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_HAND" Offset="0x98EC" />
|
||||
<Limb Name="gMajorasIncarnationLeftLegRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_LEG_ROOT" Offset="0x98F8" />
|
||||
<Limb Name="gMajorasIncarnationLeftThighLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_THIGH" Offset="0x9904" />
|
||||
<Limb Name="gMajorasIncarnationLeftLowerLegRootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_LOWER_LEG_ROOT" Offset="0x9910" />
|
||||
<Limb Name="gMajorasIncarnationLeftShinLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_SHIN" Offset="0x991C" />
|
||||
<Limb Name="gMajorasIncarnationLeftFootLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_LEFT_FOOT" Offset="0x9928" />
|
||||
<Limb Name="gMajorasIncarnationEyestalkLimb" Type="Standard" EnumName="MAJORAS_INCARNATION_LIMB_EYESTALK" Offset="0x9934" />
|
||||
|
||||
<!-- Majora's Incarnation Skeleton -->
|
||||
<Skeleton Name="gMajorasIncarnationSkel" Type="Flex" LimbType="Standard" LimbNone="MAJORAS_INCARNATION_LIMB_NONE" LimbMax="MAJORAS_INCARNATION_LIMB_MAX" EnumName="MajorasIncarnationLimb" Offset="0x99A0" />
|
||||
|
||||
<!-- Majora's Incarnation Animations -->
|
||||
<Animation Name="gMajorasIncarnationFallOverStartAnim" Offset="0x9C7C" /> <!-- Original name is "last2_koke" ("stupidity; a fool") -->
|
||||
<Animation Name="gMajorasIncarnationFallOverLoopAnim" Offset="0x9EA8" /> <!-- Original name is "last2_koke2" -->
|
||||
<Animation Name="gMajorasIncarnationMoonwalkAnim" Offset="0xA194" /> <!-- Original name is "last2_mw" (almost certainly short for "moonwalk") -->
|
||||
<Animation Name="gMajorasIncarnationRunAnim" Offset="0xA400" /> <!-- Original name is "last2_run" -->
|
||||
<Animation Name="gMajorasIncarnationTauntDance1Anim" Offset="0xA6AC" /> <!-- Original name is "last2_stop01" -->
|
||||
<Animation Name="gMajorasIncarnationTauntDance2Anim" Offset="0xAB04" /> <!-- Original name is "last2_stop02" -->
|
||||
<Animation Name="gMajorasIncarnationTauntJumpAnim" Offset="0xAD84" /> <!-- Original name is "last2_stop03" -->
|
||||
|
||||
<!-- Majora's Mask Animations -->
|
||||
<Animation Name="gMajorasMaskJerkingAnim" Offset="0xAE40" /> <!-- Original name is "last3_dam" -->
|
||||
<Animation Name="gMajorasMaskStationaryAnim" Offset="0xAEDC" /> <!-- Original name is "last3_kihon" ("basic"). Unused -->
|
||||
|
||||
<!-- Majora's Mask Tentacle Texture and DisplayLists -->
|
||||
<Texture Name="gMajorasMaskTentacleTex" OutName="majoras_mask_tentacle" Format="rgba16" Width="8" Height="8" Offset="0xAEF0" />
|
||||
<DList Name="gMajorasMaskTentacleMaterialDL" Offset="0xAFB0" />
|
||||
<DList Name="gMajorasMaskTentacleModelDL" Offset="0xB020" />
|
||||
|
||||
<!-- Majora's Mask Limb DisplayLists -->
|
||||
<DList Name="gMajorasMaskLeftSpike3DL" Offset="0xBB30" />
|
||||
<DList Name="gMajorasMaskLeftSpike4DL" Offset="0xBBC0" />
|
||||
<DList Name="gMajorasMaskRightSpike4DL" Offset="0xBC50" />
|
||||
<DList Name="gMajorasMaskRightSpike3DL" Offset="0xBCE0" />
|
||||
<DList Name="gMajorasMaskRightSpike2DL" Offset="0xBD70" />
|
||||
<DList Name="gMajorasMaskRightSpike1DL" Offset="0xBE00" />
|
||||
<DList Name="gMajorasMaskLeftSpike1DL" Offset="0xBE90" />
|
||||
<DList Name="gMajorasMaskLeftSpike2DL" Offset="0xBF20" />
|
||||
<DList Name="gMajorasMaskFaceDL" Offset="0xBFB0" />
|
||||
|
||||
<!-- Majora's Mask Beam Texture and DisplayList -->
|
||||
<Texture Name="gMajorasMaskBeamTex" OutName="majoras_mask_beam" Format="i4" Width="32" Height="64" Offset="0xC298" />
|
||||
<DList Name="gMajorasMaskBeamDL" Offset="0xC7D8" />
|
||||
|
||||
<!-- Majora's Mask Fire Textures and DisplayList -->
|
||||
<Texture Name="gMajorasMaskFireTex" OutName="majoras_mask_fire" Format="i4" Width="32" Height="64" Offset="0xC8B8" />
|
||||
<Texture Name="gMajorasMaskFireMaskTex" OutName="majoras_mask_fire_mask" Format="i4" Width="32" Height="32" Offset="0xCCB8" />
|
||||
<DList Name="gMajorasMaskFireDL" Offset="0xCEE8" />
|
||||
|
||||
<!-- Boss Mask Textures -->
|
||||
<Texture Name="gBossMaskOdolwaFaceTLUT" OutName="boss_mask_odolwa_face_tlut" Format="rgba16" Width="4" Height="4" Offset="0xCFB0" />
|
||||
<Texture Name="gBossMaskOdolwaEarTLUT" OutName="boss_mask_odolwa_ear_tlut" Format="rgba16" Width="4" Height="4" Offset="0xCFD0" />
|
||||
<Texture Name="gBossMaskOdolwaPlumeTex" OutName="boss_mask_odolwa_plume" Format="rgba16" Width="16" Height="16" Offset="0xCFF0" />
|
||||
<Texture Name="gBossMaskOdolwaFaceTex" OutName="boss_mask_odolwa_face" Format="ci4" Width="64" Height="64" Offset="0xD1F0" />
|
||||
<Texture Name="gBossMaskOdolwaEarTex" OutName="boss_mask_odolwa_ear" Format="ci4" Width="64" Height="64" Offset="0xD9F0" />
|
||||
<Texture Name="gBossMaskGyorgSkinTLUT" OutName="boss_mask_gyorg_skin_tlut" Format="rgba16" Width="4" Height="4" Offset="0xE1F0" />
|
||||
<Texture Name="gBossMaskGyorgMouthTLUT" OutName="boss_mask_gyorg_mouth_tlut" Format="rgba16" Width="4" Height="4" Offset="0xE210" />
|
||||
<Texture Name="gBossMaskGyorgToothHornTLUT" OutName="boss_mask_gyorg_tooth_horn_tlut" Format="rgba16" Width="4" Height="4" Offset="0xE230" />
|
||||
<Texture Name="gBossMaskGyorgTwinmoldEyeTex" OutName="boss_mask_gyorg_twinmold_eye" Format="rgba16" Width="32" Height="32" Offset="0xE250" />
|
||||
<Texture Name="gBossMaskGyorgSkinTex" OutName="boss_mask_gyorg_skin" Format="ci4" Width="64" Height="64" Offset="0xEA50" />
|
||||
<Texture Name="gBossMaskGyorgMouthTex" OutName="boss_mask_gyorg_mouth" Format="ci4" Width="64" Height="64" Offset="0xF250" />
|
||||
<Texture Name="gBossMaskGyorgToothHornTex" OutName="boss_mask_gyorg_tooth_horn" Format="ci4" Width="16" Height="16" Offset="0xFA50" />
|
||||
<Texture Name="gBossMaskGohtEyeTex" OutName="boss_mask_goht_eye" Format="rgba16" Width="32" Height="64" Offset="0xFAD0" />
|
||||
<Texture Name="gBossMaskGohtTopPatternTex" OutName="boss_mask_goht_top_pattern" Format="rgba16" Width="32" Height="64" Offset="0x10AD0" />
|
||||
<Texture Name="gBossMaskGohtTwinmoldPatternTex" OutName="boss_mask_goht_twinmold_pattern" Format="rgba16" Width="32" Height="64" Offset="0x11AD0" /> <!-- Used for the lower part of Goht's mask and for the mouth of Twinmold's mask -->
|
||||
<Texture Name="gBossMaskGohtSpikeTwinmoldMandibleTex" OutName="boss_mask_goht_spike_twinmold_mandible" Format="rgba16" Width="32" Height="32" Offset="0x12AD0" />
|
||||
<Texture Name="gBossMaskTwinmoldSkinTLUT" OutName="boss_mask_twinmold_skin_tlut" Format="rgba16" Width="4" Height="4" Offset="0x132D0" />
|
||||
<Texture Name="gBossMaskTwinmoldSnoutTLUT" OutName="boss_mask_twinmold_snout_tlut" Format="rgba16" Width="4" Height="4" Offset="0x132F0" />
|
||||
<Texture Name="gBossMaskTwinmoldSkinTex" OutName="boss_mask_twinmold_skin" Format="ci4" Width="64" Height="64" Offset="0x13310" />
|
||||
<Texture Name="gBossMaskTwinmoldSnoutTex" OutName="boss_mask_twinmold_snout" Format="ci4" Width="64" Height="64" Offset="0x13B10" />
|
||||
|
||||
<!-- Boss Mask DisplayLists -->
|
||||
<DList Name="gBossMaskOdolwaDL" Offset="0x149A0" />
|
||||
<DList Name="gBossMaskGyorgDL" Offset="0x16090" />
|
||||
<DList Name="gBossMaskGohtDL" Offset="0x17DE0" />
|
||||
<DList Name="gBossMaskTwinmoldDL" Offset="0x19328" />
|
||||
|
||||
<!-- Majora's Mask Limbs. Spikes are numbered from top to bottom. -->
|
||||
<Limb Name="gMajorasMaskRootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_ROOT" Offset="0x19B38" />
|
||||
<Limb Name="gMajorasMaskFaceLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_FACE" Offset="0x19B44" />
|
||||
<Limb Name="gMajorasMaskLeftSpike2RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE2_ROOT" Offset="0x19B50" />
|
||||
<Limb Name="gMajorasMaskLeftSpike2Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE2" Offset="0x19B5C" />
|
||||
<Limb Name="gMajorasMaskLeftSpike1RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE1_ROOT" Offset="0x19B68" />
|
||||
<Limb Name="gMajorasMaskLeftSpike1Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE1" Offset="0x19B74" />
|
||||
<Limb Name="gMajorasMaskRightSpike1RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE1_ROOT" Offset="0x19B80" />
|
||||
<Limb Name="gMajorasMaskRightSpike1Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE1" Offset="0x19B8C" />
|
||||
<Limb Name="gMajorasMaskRightSpike2RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE2_ROOT" Offset="0x19B98" />
|
||||
<Limb Name="gMajorasMaskRightSpike2Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE2" Offset="0x19BA4" />
|
||||
<Limb Name="gMajorasMaskRightSpike3RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE3_ROOT" Offset="0x19BB0" />
|
||||
<Limb Name="gMajorasMaskRightSpike3Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE3" Offset="0x19BBC" />
|
||||
<Limb Name="gMajorasMaskRightSpike4RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE4_ROOT" Offset="0x19BC8" />
|
||||
<Limb Name="gMajorasMaskRightSpike4Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_RIGHT_SPIKE4" Offset="0x19BD4" />
|
||||
<Limb Name="gMajorasMaskLeftSpike4RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE4_ROOT" Offset="0x19BE0" />
|
||||
<Limb Name="gMajorasMaskLeftSpike4Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE4" Offset="0x19BEC" />
|
||||
<Limb Name="gMajorasMaskLeftSpike3RootLimb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE3_ROOT" Offset="0x19BF8" />
|
||||
<Limb Name="gMajorasMaskLeftSpike3Limb" Type="Standard" EnumName="MAJORAS_MASK_LIMB_LEFT_SPIKE3" Offset="0x19C04" />
|
||||
|
||||
<!-- Majora's Mask Skeleton -->
|
||||
<Skeleton Name="gMajorasMaskSkel" Type="Normal" LimbType="Standard" LimbNone="MAJORAS_MASK_LIMB_NONE" LimbMax="MAJORAS_MASK_LIMB_MAX" EnumName="MajorasMaskLimb" Offset="0x19C58" />
|
||||
|
||||
<!-- Majora's Mask Animation -->
|
||||
<Animation Name="gMajorasMaskFloatingAnim" Offset="0x19E48" /> <!-- Original name is "last3_stop" -->
|
||||
|
||||
<!-- Majora's Wrath Animations. For unused animations, we don't know what the whips are supposed to do, since their physics are controlled by the Boss07 actor. -->
|
||||
<Animation Name="gMajorasWrathFlipLeftAndSpin" Offset="0x1AE1C" /> <!-- Original name is "last_ac01". Unused -->
|
||||
<Animation Name="gMajorasWrathDoubleKickAndJumpBackAnim" Offset="0x1C430" /> <!-- Original name is "last_ac02". Unused -->
|
||||
<Animation Name="gMajorasWrathBackflipUppercutAttackAnim" Offset="0x1CFF0" /> <!-- Original name is "last_ac03". Unused -->
|
||||
<Animation Name="gMajorasWrathHighKickAnim" Offset="0x1D974" /> <!-- Original name is "last_ac04". Unused and almost identical to gMajorasWrathKickAnim -->
|
||||
<Animation Name="gMajorasWrathDamageAnim" Offset="0x1DEB4" /> <!-- Original name is "last_dam" -->
|
||||
<Animation Name="gMajorasWrathDeathAnim" Offset="0x22BB4" /> <!-- Original name is "last_dead" -->
|
||||
<Animation Name="gMajorasWrathTiptoeWhipAttackAnim" Offset="0x23A44" /> <!-- Original name is "last_def". Unused -->
|
||||
<Animation Name="gMajorasWrathHeavyBreathingAnim" Offset="0x23DAC" /> <!-- Original name is "last_hen" (short for "metamorphosis/transformation") -->
|
||||
<Animation Name="gMajorasWrathIntroAnim" Offset="0x25018" /> <!-- Original name is "last_hen2" -->
|
||||
<Animation Name="gMajorasWrathBackflipAnim" Offset="0x25878" /> <!-- Original name is "last_jump" -->
|
||||
<Animation Name="gMajorasWrathKickAnim" Offset="0x26204" /> <!-- Original name is "last_kick" -->
|
||||
<Animation Name="gMajorasWrathReleaseTopAnim" Offset="0x269EC" /> <!-- Original name is "last_koma" ("spinning top") -->
|
||||
<Animation Name="gMajorasWrathGrabAnim" Offset="0x26EA0" /> <!-- Original name is "last_link" -->
|
||||
<Animation Name="gMajorasWrathThrowAnim" Offset="0x27270" /> <!-- Original name is "last_link2" -->
|
||||
|
||||
<!-- Majora's Wrath Limb DisplayLists -->
|
||||
<DList Name="gMajorasWrathPelvisDL" Offset="0x2C350" />
|
||||
<DList Name="gMajorasWrathHeadDL" Offset="0x2C4D0" />
|
||||
<DList Name="gMajorasWrathThirdEyeDL" Offset="0x2CB48" />
|
||||
<DList Name="gMajorasWrathTorsoDL" Offset="0x2CD40" />
|
||||
<DList Name="gMajorasWrathLeftHandDL" Offset="0x2D1D0" />
|
||||
<DList Name="gMajorasWrathLeftForearmDL" Offset="0x2D3C8" />
|
||||
<DList Name="gMajorasWrathLeftUpperArmDL" Offset="0x2D670" />
|
||||
<DList Name="gMajorasWrathRightHandDL" Offset="0x2D940" />
|
||||
<DList Name="gMajorasWrathRightForearmDL" Offset="0x2DB38" />
|
||||
<DList Name="gMajorasWrathRightUpperArmDL" Offset="0x2DDE0" />
|
||||
<DList Name="gMajorasWrathRightFootDL" Offset="0x2E0B8" />
|
||||
<DList Name="gMajorasWrathRightShinDL" Offset="0x2E220" />
|
||||
<DList Name="gMajorasWrathRightThighDL" Offset="0x2E4A8" />
|
||||
<DList Name="gMajorasWrathLeftFootDL" Offset="0x2E6D0" />
|
||||
<DList Name="gMajorasWrathLeftShinDL" Offset="0x2E838" />
|
||||
<DList Name="gMajorasWrathLeftThighDL" Offset="0x2EAC0" />
|
||||
|
||||
<!-- Majora's Wrath Whip Texture and DisplayLists -->
|
||||
<Texture Name="gMajorasWrathWhipTex" OutName="majoras_wrath_whip" Format="rgba16" Width="8" Height="16" Offset="0x2ECF0" />
|
||||
<DList Name="gMajorasWrathWhipMaterialDL" Offset="0x2EE50" />
|
||||
<DList Name="gMajorasMaskWhipShadowMaterialDL" Offset="0x2EEC8" />
|
||||
<DList Name="gMajorasWrathWhipModelDL" Offset="0x2EEF8" />
|
||||
|
||||
<!-- Majora's Wrath Shadow DisplayLists -->
|
||||
<DList Name="gMajorasWrathShadowMaterialDL" Offset="0x2EF68" />
|
||||
<DList Name="gMajorasWrathShadowModelDL" Offset="0x2EF88" />
|
||||
|
||||
<!-- DisplayList for the rays of light that emanate from Wrath's body when defeated -->
|
||||
<DList Name="gMajorasWrathDeathLightModelDL" Offset="0x2EFE8" />
|
||||
|
||||
<!-- Majora's Wrath Top DisplayList-->
|
||||
<DList Name="gMajorasWrathSpinningTopDL" Offset="0x2F640" />
|
||||
|
||||
<!-- Majora Title Cards -->
|
||||
<Texture Name="gMajorasMaskTitleCardTex" OutName="majoras_mask_title_card" Format="i8" Width="128" Height="40" Offset="0x2F840" />
|
||||
<Texture Name="gMajorasIncarnationTitleCardTex" OutName="majoras_incarnation_title_card" Format="i8" Width="128" Height="40" Offset="0x30C40" />
|
||||
<Texture Name="gMajorasWrathTitleCardTex" OutName="majoras_wrath_title_card" Format="i8" Width="128" Height="40" Offset="0x32040" />
|
||||
|
||||
<!-- Majora's Wrath Limbs -->
|
||||
<Limb Name="gMajorasWrathRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_ROOT" Offset="0x33440" />
|
||||
<Limb Name="gMajorasWrathPelvisLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_PELVIS" Offset="0x3344C" />
|
||||
<Limb Name="gMajorasWrathLeftLegRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_LEG_ROOT" Offset="0x33458" />
|
||||
<Limb Name="gMajorasWrathLeftThighLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_THIGH" Offset="0x33464" />
|
||||
<Limb Name="gMajorasWrathLeftLowerLegRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_LOWER_LEG_ROOT" Offset="0x33470" />
|
||||
<Limb Name="gMajorasWrathLeftShinLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_SHIN" Offset="0x3347C" />
|
||||
<Limb Name="gMajorasWrathLeftFootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_FOOT" Offset="0x33488" />
|
||||
<Limb Name="gMajorasWrathRightLegRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_LEG_ROOT" Offset="0x33494" />
|
||||
<Limb Name="gMajorasWrathRightThighLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_THIGH" Offset="0x334A0" />
|
||||
<Limb Name="gMajorasWrathRightLowerLegRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_LOWER_LEG_ROOT" Offset="0x334AC" />
|
||||
<Limb Name="gMajorasWrathRightShinLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_SHIN" Offset="0x334B8" />
|
||||
<Limb Name="gMajorasWrathRightFootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_FOOT" Offset="0x334C4" />
|
||||
<Limb Name="gMajorasWrathTorsoRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_TORSO_ROOT" Offset="0x334D0" />
|
||||
<Limb Name="gMajorasWrathTorsoLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_TORSO" Offset="0x334DC" />
|
||||
<Limb Name="gMajorasWrathRightArmRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_ARM_ROOT" Offset="0x334E8" />
|
||||
<Limb Name="gMajorasWrathRightUpperArmLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_UPPER_ARM" Offset="0x334F4" />
|
||||
<Limb Name="gMajorasWrathRightLowerArmRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_LOWER_ARM_ROOT" Offset="0x33500" />
|
||||
<Limb Name="gMajorasWrathRightForearmLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_FOREARM" Offset="0x3350C" />
|
||||
<Limb Name="gMajorasWrathRightHandLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_RIGHT_HAND" Offset="0x33518" />
|
||||
<Limb Name="gMajorasWrathLeftArmRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_ARM_ROOT" Offset="0x33524" />
|
||||
<Limb Name="gMajorasWrathLeftUpperArmLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_UPPER_ARM" Offset="0x33530" />
|
||||
<Limb Name="gMajorasWrathLeftLowerArmRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_LOWER_ARM_ROOT" Offset="0x3353C" />
|
||||
<Limb Name="gMajorasWrathLeftForearmLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_FOREARM" Offset="0x33548" />
|
||||
<Limb Name="gMajorasWrathLeftHandLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_LEFT_HAND" Offset="0x33554" />
|
||||
<Limb Name="gMajorasWrathHeadRootLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_HEAD_ROOT" Offset="0x33560" />
|
||||
<Limb Name="gMajorasWrathHeadLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_HEAD" Offset="0x3356C" />
|
||||
<Limb Name="gMajorasWrathThirdEyeLimb" Type="Standard" EnumName="MAJORAS_WRATH_LIMB_THIRD_EYE" Offset="0x33578" />
|
||||
|
||||
<!-- Majora's Wrath Skeleton -->
|
||||
<Skeleton Name="gMajorasWrathSkel" Type="Flex" LimbType="Standard" LimbNone="MAJORAS_WRATH_LIMB_NONE" LimbMax="MAJORAS_WRATH_LIMB_MAX" EnumName="MajorasWrathLimb" Offset="0x335F0" />
|
||||
|
||||
<!-- Majora's Wrath Animations -->
|
||||
<Animation Name="gMajorasWrathShortSingleWhipAttackAnim" Offset="0x33F80" /> <!-- Original name is "last_muti" ("whip") -->
|
||||
<Animation Name="gMajorasWrathWhipFlurryAttackAnim" Offset="0x34E64" /> <!-- Original name is "last_muti2" -->
|
||||
<Animation Name="gMajorasWrathDoubleWhipAttackAnim" Offset="0x358C4" /> <!-- Original name is "last_muti3" -->
|
||||
<Animation Name="gMajorasWrathLongSingleWhipAttackAnim" Offset="0x36A7C" /> <!-- Original name is "last_muti4" -->
|
||||
<Animation Name="gMajorasWrathTauntAnim" Offset="0x37ADC" /> <!-- Original name is "last_muti5" -->
|
||||
<Animation Name="gMajorasWrathThreeAttackComboAnim" Offset="0x3918C" /> <!-- Original name is "last_muticombo" -->
|
||||
<Animation Name="gMajorasWrathStunAnim" Offset="0x3B330" /> <!-- Original name is "last_piyo" ("weakly moving") -->
|
||||
<Animation Name="gMajorasWrathSpinAttackAnim" Offset="0x3C4E0" /> <!-- Original name is "last_rolling" -->
|
||||
<Animation Name="gMajorasWrathIdleAnim" Offset="0x3CBD0" /> <!-- Original name is "last_stop" -->
|
||||
<Animation Name="gMajorasWrathFlipLeftAnim" Offset="0x3D224" /> <!-- Original name is "last_tombo1" ("somersault") -->
|
||||
<Animation Name="gMajorasWrathFlipRightAnim" Offset="0x3D7F0" /> <!-- Original name is "last_tombo2" -->
|
||||
<Animation Name="gMajorasWrathSidestepAnim" Offset="0x3DD1C" /> <!-- Original name is "last_walk" -->
|
||||
|
||||
<!-- Majora Textures -->
|
||||
<Texture Name="gMajoraBodyTex" OutName="majora_body" Format="rgba16" Width="32" Height="64" Offset="0x3DD30" />
|
||||
<Texture Name="gMajoraStripesTex" OutName="majora_stripes" Format="rgba16" Width="32" Height="16" Offset="0x3ED30" />
|
||||
<Texture Name="gMajorasWrathEyeTex" OutName="majoras_wrath_eye" Format="rgba16" Width="64" Height="32" Offset="0x3F130" />
|
||||
<Texture Name="gMajorasWrathMouthTex" OutName="majoras_wrath_mouth" Format="rgba16" Width="32" Height="32" Offset="0x40130" />
|
||||
<Texture Name="gMajorasWrathEarTex" OutName="majoras_wrath_ear" Format="rgba16" Width="16" Height="16" Offset="0x40930" />
|
||||
<Texture Name="gMajoraVeinsTex" OutName="majora_veins" Format="rgba16" Width="32" Height="64" Offset="0x40B30" />
|
||||
<Texture Name="gMajoraBloodshotEyeTex" OutName="majora_bloodshot_eye" Format="rgba16" Width="32" Height="32" Offset="0x41B30" />
|
||||
<Texture Name="gMajorasMaskWithNormalEyesTex" OutName="majoras_mask_with_normal_eyes" Format="rgba16" Width="32" Height="64" Offset="0x42330" />
|
||||
<Texture Name="gMajoraHandTex" OutName="majora_hand" Format="rgba16" Width="32" Height="64" Offset="0x43330" />
|
||||
<Texture Name="gMajorasIncarnationMaskTex" OutName="majoras_incarnation_mask" Format="rgba16" Width="32" Height="64" Offset="0x44330" />
|
||||
<Texture Name="gMajorasMaskSpikes1Tex" OutName="majoras_mask_spikes_1" Format="rgba16" Width="16" Height="16" Offset="0x45330" />
|
||||
<Texture Name="gMajorasMaskSpikes2Tex" OutName="majoras_mask_spikes_2" Format="rgba16" Width="16" Height="16" Offset="0x45530" />
|
||||
<Texture Name="gMajorasMaskSpikes3Tex" OutName="majoras_mask_spikes_3" Format="rgba16" Width="16" Height="16" Offset="0x45730" />
|
||||
<Texture Name="gMajorasMaskSpikes4Tex" OutName="majoras_mask_spikes_4" Format="rgba16" Width="16" Height="16" Offset="0x45930" />
|
||||
<Texture Name="gMajorasMaskWithDullEyesTex" OutName="majoras_mask_with_dull_eyes" Format="rgba16" Width="32" Height="64" Offset="0x45B30" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Root>
|
||||
<File Name="object_botihasira" Segment="6">
|
||||
<DList Name="object_botihasira_DL_0004A0" Offset="0x4A0" />
|
||||
<DList Name="object_botihasira_DL_0004A0" Offset="0x4A0" /> <!-- Original name is "z2_botihasira_model" ("boti" = "graveyard", "hasira" = "post") -->
|
||||
<DList Name="object_botihasira_DL_000628" Offset="0x628" />
|
||||
<DList Name="object_botihasira_DL_000638" Offset="0x638" />
|
||||
<Texture Name="object_botihasira_Tex_000648" OutName="tex_000648" Format="rgba16" Width="32" Height="64" Offset="0x648" />
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Root>
|
||||
<File Name="object_box" Segment="6">
|
||||
<Animation Name="gBoxBigChestOpenChildAnim" Offset="0x128" />
|
||||
<Animation Name="gBoxBigChestOpenAdultAnim" Offset="0x24C" />
|
||||
<Animation Name="gBoxBigChestOpenChildAnim" Offset="0x128" /> <!-- Original name is "cdemo_box_boxA" -->
|
||||
<Animation Name="gBoxBigChestOpenAdultAnim" Offset="0x24C" /> <!-- Original name is "demo_box_boxA" -->
|
||||
<Blob Name="object_box_zeroes_unk_0000025C" Size="0xF4" Offset="0x25C" />
|
||||
<Animation Name="gBoxChestOpenAnim" Offset="0x43C" />
|
||||
<Animation Name="gBoxChestOpenAnim" Offset="0x43C" /> <!-- Original name is "demo_box_boxB" -->
|
||||
<Blob Name="object_box_zeroes_unk_0000044C" Size="0x64" Offset="0x44C" />
|
||||
<DList Name="gBoxChestBaseDL" Offset="0x6F0" />
|
||||
<DList Name="gBoxChestBaseGildedDL" Offset="0xA50" />
|
||||
@@ -22,8 +22,8 @@
|
||||
<Limb Name="object_box_Standardlimb_006678" Type="Standard" EnumName="OBJECT_BOX_CHEST_LIMB_03" Offset="0x6678" />
|
||||
<Limb Name="object_box_Standardlimb_006684" Type="Standard" EnumName="OBJECT_BOX_CHEST_LIMB_04" Offset="0x6684" />
|
||||
<Skeleton Name="gBoxChestSkel" Type="Normal" LimbType="Standard" LimbNone="OBJECT_BOX_CHEST_LIMB_NONE" LimbMax="OBJECT_BOX_CHEST_LIMB_MAX" EnumName="ObjectBoxChestLimb" Offset="0x66A0" />
|
||||
<CurveAnimation Name="gBoxLightAdultCurveAnim" SkelOffset="0x7D78" Offset="0x6A20"/>
|
||||
<CurveAnimation Name="gBoxLightChildCurveAnim" SkelOffset="0x7D78" Offset="0x6E30"/>
|
||||
<CurveAnimation Name="gBoxLightAdultCurveAnim" SkelOffset="0x7D78" Offset="0x6A20"/> <!-- Original name is "demo_tre_lgt_c_fcurve_data" -->
|
||||
<CurveAnimation Name="gBoxLightChildCurveAnim" SkelOffset="0x7D78" Offset="0x6E30"/> <!-- Original name is "demo_tre_lgt_fcurve_data" -->
|
||||
<Texture Name="gBoxLightTex" OutName="box_light_tex" Format="i8" Width="64" Height="32" Offset="0x6E40" />
|
||||
<DList Name="object_box_DL_007890" Offset="0x7890" />
|
||||
<DList Name="object_box_DL_007978" Offset="0x7978" />
|
||||
@@ -45,8 +45,8 @@
|
||||
<Limb Name="object_box_Curvelimb_007D28" Type="Curve" EnumName="OBJECT_BOX_LIGHT_LIMB_13" Offset="0x7D28" />
|
||||
<Limb Name="object_box_Curvelimb_007D34" Type="Curve" EnumName="OBJECT_BOX_LIGHT_LIMB_14" Offset="0x7D34" />
|
||||
<Skeleton Name="gBoxLightCurveSkel" Type="Curve" LimbType="Curve" LimbNone="OBJECT_BOX_LIGHT_LIMB_NONE" LimbMax="OBJECT_BOX_LIGHT_LIMB_MAX" EnumName="ObjectBoxLightLimb" Offset="0x7D78" />
|
||||
<Animation Name="gBoxBigChestOpenGoronAnim" Offset="0x7E54" />
|
||||
<Animation Name="gBoxBigChestOpenDekuAnim" Offset="0x7F30" />
|
||||
<Animation Name="gBoxBigChestOpenGoronAnim" Offset="0x7E54" /> <!-- Original name is "pg_Tbox" -->
|
||||
<Animation Name="gBoxBigChestOpenDekuAnim" Offset="0x7F30" /> <!-- Original name is "pn_Tbox" -->
|
||||
<Blob Name="object_box_zeroes_unk_00007F40" Size="0xA0" Offset="0x7F40" />
|
||||
<Collision Name="gBoxChestCol" Offset="0x80E8" />
|
||||
</File>
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
<Root>
|
||||
<File Name="object_bsb" Segment="6">
|
||||
<Animation Name="object_bsb_Anim_000400" Offset="0x400" />
|
||||
<Animation Name="object_bsb_Anim_000C50" Offset="0xC50" />
|
||||
<Animation Name="object_bsb_Anim_000FF0" Offset="0xFF0" />
|
||||
<Animation Name="object_bsb_Anim_001390" Offset="0x1390" />
|
||||
<Animation Name="object_bsb_Anim_001CD8" Offset="0x1CD8" />
|
||||
<Animation Name="object_bsb_Anim_001F90" Offset="0x1F90" />
|
||||
<Animation Name="object_bsb_Anim_002590" Offset="0x2590" />
|
||||
<Animation Name="object_bsb_Anim_002AF4" Offset="0x2AF4" />
|
||||
<Animation Name="object_bsb_Anim_003238" Offset="0x3238" />
|
||||
<Animation Name="object_bsb_Anim_003E1C" Offset="0x3E1C" />
|
||||
<Animation Name="object_bsb_Anim_004208" Offset="0x4208" />
|
||||
<Animation Name="object_bsb_Anim_0043A4" Offset="0x43A4" />
|
||||
<Animation Name="object_bsb_Anim_004510" Offset="0x4510" />
|
||||
<Animation Name="object_bsb_Anim_004894" Offset="0x4894" />
|
||||
<Animation Name="object_bsb_Anim_004E2C" Offset="0x4E2C" />
|
||||
<Animation Name="object_bsb_Anim_005440" Offset="0x5440" />
|
||||
<Animation Name="object_bsb_Anim_00606C" Offset="0x606C" />
|
||||
<Animation Name="object_bsb_Anim_0065D8" Offset="0x65D8" />
|
||||
<Animation Name="object_bsb_Anim_006C48" Offset="0x6C48" />
|
||||
<Animation Name="object_bsb_Anim_007120" Offset="0x7120" />
|
||||
<Animation Name="object_bsb_Anim_007B18" Offset="0x7B18" />
|
||||
<Animation Name="object_bsb_Anim_0086BC" Offset="0x86BC" />
|
||||
<Animation Name="object_bsb_Anim_000400" Offset="0x400" /> <!-- Original name is "bsb_aita" ("Ouch!") -->
|
||||
<Animation Name="object_bsb_Anim_000C50" Offset="0xC50" /> <!-- Original name is "bsb_atack" -->
|
||||
<Animation Name="object_bsb_Anim_000FF0" Offset="0xFF0" /> <!-- Original name is "bsb_battlewalk" -->
|
||||
<Animation Name="object_bsb_Anim_001390" Offset="0x1390" /> <!-- Original name is "bsb_damage" -->
|
||||
<Animation Name="object_bsb_Anim_001CD8" Offset="0x1CD8" /> <!-- Original name is "bsb_demo_wait" -->
|
||||
<Animation Name="object_bsb_Anim_001F90" Offset="0x1F90" /> <!-- Original name is "bsb_don" (onomatopoeic for "bang; bam; boom; thud") -->
|
||||
<Animation Name="object_bsb_Anim_002590" Offset="0x2590" /> <!-- Original name is "bsb_dosuni" -->
|
||||
<Animation Name="object_bsb_Anim_002AF4" Offset="0x2AF4" /> <!-- Original name is "bsb_down" -->
|
||||
<Animation Name="object_bsb_Anim_003238" Offset="0x3238" /> <!-- Original name is "bsb_furi_wait" -->
|
||||
<Animation Name="object_bsb_Anim_003E1C" Offset="0x3E1C" /> <!-- Original name is "bsb_furimuki" ("to turn around") -->
|
||||
<Animation Name="object_bsb_Anim_004208" Offset="0x4208" /> <!-- Original name is "bsb_jidanda" ("to stamp one's feet (in frustration, impatience, etc.)") -->
|
||||
<Animation Name="object_bsb_Anim_0043A4" Offset="0x43A4" /> <!-- Original name is "bsb_jump" -->
|
||||
<Animation Name="object_bsb_Anim_004510" Offset="0x4510" /> <!-- Original name is "bsb_jumpTOdon" -->
|
||||
<Animation Name="object_bsb_Anim_004894" Offset="0x4894" /> <!-- Original name is "bsb_kei_wait" -->
|
||||
<Animation Name="object_bsb_Anim_004E2C" Offset="0x4E2C" /> <!-- Original name is "bsb_keirei" ("salute") -->
|
||||
<Animation Name="object_bsb_Anim_005440" Offset="0x5440" /> <!-- Original name is "bsb_kiwo_wait" -->
|
||||
<Animation Name="object_bsb_Anim_00606C" Offset="0x606C" /> <!-- Original name is "bsb_kiwotuke" ("standing at attention") -->
|
||||
<Animation Name="object_bsb_Anim_0065D8" Offset="0x65D8" /> <!-- Original name is "bsb_kyorokyoro" (onomatopoeic for "looking around restlessly") -->
|
||||
<Animation Name="object_bsb_Anim_006C48" Offset="0x6C48" /> <!-- Original name is "bsb_laugh" -->
|
||||
<Animation Name="object_bsb_Anim_007120" Offset="0x7120" /> <!-- Original name is "bsb_matarei" -->
|
||||
<Animation Name="object_bsb_Anim_007B18" Offset="0x7B18" /> <!-- Original name is "bsb_rajio" -->
|
||||
<Animation Name="object_bsb_Anim_0086BC" Offset="0x86BC" /> <!-- Original name is "bsb_start" -->
|
||||
<DList Name="object_bsb_DL_00A010" Offset="0xA010" />
|
||||
<DList Name="object_bsb_DL_00A0D8" Offset="0xA0D8" />
|
||||
<DList Name="object_bsb_DL_00A188" Offset="0xA188" />
|
||||
@@ -73,8 +73,8 @@
|
||||
<Limb Name="object_bsb_Standardlimb_00C378" Type="Standard" EnumName="OBJECT_BSB_LIMB_13" Offset="0xC378" />
|
||||
<Limb Name="object_bsb_Standardlimb_00C384" Type="Standard" EnumName="OBJECT_BSB_LIMB_14" Offset="0xC384" />
|
||||
<Skeleton Name="object_bsb_Skel_00C3E0" Type="Normal" LimbType="Standard" LimbNone="OBJECT_BSB_LIMB_NONE" LimbMax="OBJECT_BSB_LIMB_MAX" EnumName="ObjectBsbLimb" Offset="0xC3E0" />
|
||||
<Animation Name="object_bsb_Anim_00C790" Offset="0xC790" />
|
||||
<Animation Name="object_bsb_Anim_00CD88" Offset="0xCD88" />
|
||||
<Animation Name="object_bsb_Anim_00D3CC" Offset="0xD3CC" />
|
||||
<Animation Name="object_bsb_Anim_00C790" Offset="0xC790" /> <!-- Original name is "bsb_tatsu" ("to stand; to rise; to stand up") -->
|
||||
<Animation Name="object_bsb_Anim_00CD88" Offset="0xCD88" /> <!-- Original name is "bsb_walk" -->
|
||||
<Animation Name="object_bsb_Anim_00D3CC" Offset="0xD3CC" /> <!-- Original name is "bsb_yareyare" ("oh!; ah!; oh dear!; good grief!; dear me!") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
<File Name="object_bsmask" Segment="6">
|
||||
|
||||
<!-- Boss Remains Display Lists -->
|
||||
<DList Name="gRemainsOdolwaDL" Offset="0x690" />
|
||||
<DList Name="gRemainsGyorgDL" Offset="0x1D80" />
|
||||
<DList Name="gRemainsGohtDL" Offset="0x3AD0" />
|
||||
<DList Name="gRemainsTwinmoldDL" Offset="0x5020" />
|
||||
<DList Name="gRemainsOdolwaDL" Offset="0x690" /> <!-- Original name is "face01_get_model" -->
|
||||
<DList Name="gRemainsGyorgDL" Offset="0x1D80" /> <!-- Original name is "face02_get_model" -->
|
||||
<DList Name="gRemainsGohtDL" Offset="0x3AD0" /> <!-- Original name is "face03_get_model" -->
|
||||
<DList Name="gRemainsTwinmoldDL" Offset="0x5020" /> <!-- Original name is "face04_get_model" -->
|
||||
|
||||
<!-- Boss Remains TLUTs -->
|
||||
<Texture Name="gRemainsOdolwaFaceTLUT" OutName="remains_odolwa_face_tlut" Format="rgba16" Width="4" Height="4" Offset="0x5830" />
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<Root>
|
||||
<File Name="object_cha" Segment="6">
|
||||
<DList Name="object_cha_DL_000710" Offset="0x710" />
|
||||
<DList Name="object_cha_DL_000958" Offset="0x958" />
|
||||
<DList Name="object_cha_DL_000710" Offset="0x710" /> <!-- Original name is "cha_ki_model" -->
|
||||
<DList Name="object_cha_DL_000958" Offset="0x958" /> <!-- Original name is "cha_kane_model" -->
|
||||
<Texture Name="object_cha_TLUT_000B08" OutName="tlut_000B08" Format="rgba16" Width="16" Height="16" Offset="0xB08" />
|
||||
<Texture Name="object_cha_Tex_000D08" OutName="tex_000D08" Format="ci8" Width="32" Height="32" Offset="0xD08" />
|
||||
<Texture Name="object_cha_Tex_001108" OutName="tex_001108" Format="ci8" Width="32" Height="32" Offset="0x1108" />
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<Root>
|
||||
<File Name="object_comb" Segment="6">
|
||||
<Texture Name="object_comb_Tex_000000" OutName="tex_000000" Format="rgba16" Width="32" Height="32" Offset="0x0" />
|
||||
<DList Name="object_comb_DL_000CB0" Offset="0xCB0" />
|
||||
<DList Name="object_comb_DL_000CB0" Offset="0xCB0" /> <!-- Original name is "hatisu_model" ("hive; beehive") -->
|
||||
<Texture Name="object_comb_Tex_000E10" OutName="tex_000E10" Format="rgba16" Width="16" Height="16" Offset="0xE10" />
|
||||
<DList Name="object_comb_DL_001040" Offset="0x1040" />
|
||||
<DList Name="object_comb_DL_001040" Offset="0x1040" /> <!-- Original name is "hatisu_hahen_model" ("hahen" = "fragment; broken piece") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Root>
|
||||
<File Name="object_crow" Segment="6">
|
||||
<Animation Name="gGuayFlyAnim" Offset="0xF0" />
|
||||
<Animation Name="gGuayFlyAnim" Offset="0xF0" /> <!-- Original name is "df_flygue" -->
|
||||
<DList Name="gGuayBodyDL" Offset="0x490" />
|
||||
<DList Name="gGuayRightWingTipDL" Offset="0x5E0" />
|
||||
<DList Name="gGuayRightWingBodyDL" Offset="0x6B0" />
|
||||
|
||||
@@ -2,25 +2,25 @@
|
||||
<File Name="object_cs" Segment="6">
|
||||
<DList Name="object_cs_DL_000040" Offset="0x40" />
|
||||
<Texture Name="object_cs_Tex_0000C0" OutName="tex_0000C0" Format="ia8" Width="64" Height="64" Offset="0xC0" />
|
||||
<Animation Name="object_cs_Anim_001708" Offset="0x1708" />
|
||||
<Animation Name="object_cs_Anim_001A1C" Offset="0x1A1C" />
|
||||
<Animation Name="object_cs_Anim_002044" Offset="0x2044" />
|
||||
<Animation Name="object_cs_Anim_0026B0" Offset="0x26B0" />
|
||||
<Animation Name="object_cs_Anim_002930" Offset="0x2930" />
|
||||
<Animation Name="object_cs_Anim_0031C4" Offset="0x31C4" />
|
||||
<Animation Name="object_cs_Anim_00349C" Offset="0x349C" />
|
||||
<Animation Name="object_cs_Anim_0036B0" Offset="0x36B0" />
|
||||
<Animation Name="object_cs_Anim_003EE4" Offset="0x3EE4" />
|
||||
<Animation Name="object_cs_Anim_00433C" Offset="0x433C" />
|
||||
<Animation Name="object_cs_Anim_00478C" Offset="0x478C" />
|
||||
<Animation Name="object_cs_Anim_004960" Offset="0x4960" />
|
||||
<Animation Name="object_cs_Anim_004C1C" Offset="0x4C1C" />
|
||||
<Animation Name="object_cs_Anim_005128" Offset="0x5128" />
|
||||
<Animation Name="object_cs_Anim_0053F4" Offset="0x53F4" />
|
||||
<Animation Name="object_cs_Anim_0057C8" Offset="0x57C8" />
|
||||
<Animation Name="object_cs_Anim_005DC4" Offset="0x5DC4" />
|
||||
<Animation Name="object_cs_Anim_0060E8" Offset="0x60E8" />
|
||||
<Animation Name="gBomberIdleAnim" Offset="0x64B8" />
|
||||
<Animation Name="object_cs_Anim_001708" Offset="0x1708" /> <!-- Original name is "csn_atsume" ("to collect; to assemble; to gather") -->
|
||||
<Animation Name="object_cs_Anim_001A1C" Offset="0x1A1C" /> <!-- Original name is "csn_fly" -->
|
||||
<Animation Name="object_cs_Anim_002044" Offset="0x2044" /> <!-- Original name is "csn_fukiya" ("blowgun; blowpipe; dart") -->
|
||||
<Animation Name="object_cs_Anim_0026B0" Offset="0x26B0" /> <!-- Original name is "csn_keirei" ("salute") -->
|
||||
<Animation Name="object_cs_Anim_002930" Offset="0x2930" /> <!-- Original name is "csn_kinobori" ("tree climbing") -->
|
||||
<Animation Name="object_cs_Anim_0031C4" Offset="0x31C4" /> <!-- Original name is "csn_kyoro" (onomatopoeic for "looking around restlessly") -->
|
||||
<Animation Name="object_cs_Anim_00349C" Offset="0x349C" /> <!-- Original name is "csn_odoroku" ("surprise") -->
|
||||
<Animation Name="object_cs_Anim_0036B0" Offset="0x36B0" /> <!-- Original name is "csn_run03" -->
|
||||
<Animation Name="object_cs_Anim_003EE4" Offset="0x3EE4" /> <!-- Original name is "csn_senakamise" ("senaka" = "back (of the body)", "mise" = "to show; to display") -->
|
||||
<Animation Name="object_cs_Anim_00433C" Offset="0x433C" /> <!-- Original name is "csn_senakatalk" -->
|
||||
<Animation Name="object_cs_Anim_00478C" Offset="0x478C" /> <!-- Original name is "csn_senakawait" -->
|
||||
<Animation Name="object_cs_Anim_004960" Offset="0x4960" /> <!-- Original name is "csn_shagamu" ("to squat; to crouch") -->
|
||||
<Animation Name="object_cs_Anim_004C1C" Offset="0x4C1C" /> <!-- Original name is "csn_suwari" ("sitting") -->
|
||||
<Animation Name="object_cs_Anim_005128" Offset="0x5128" /> <!-- Original name is "csn_suwaripiyo" ("piyo" = "weakly moving") -->
|
||||
<Animation Name="object_cs_Anim_0053F4" Offset="0x53F4" /> <!-- Original name is "csn_talk01" -->
|
||||
<Animation Name="object_cs_Anim_0057C8" Offset="0x57C8" /> <!-- Original name is "csn_talk02" -->
|
||||
<Animation Name="object_cs_Anim_005DC4" Offset="0x5DC4" /> <!-- Original name is "csn_talk03" -->
|
||||
<Animation Name="object_cs_Anim_0060E8" Offset="0x60E8" /> <!-- Original name is "csn_tome" -->
|
||||
<Animation Name="gBomberIdleAnim" Offset="0x64B8" /> <!-- Original name is "csn_wait01" -->
|
||||
<DList Name="object_cs_DL_009130" Offset="0x9130" />
|
||||
<DList Name="object_cs_DL_009478" Offset="0x9478" />
|
||||
<DList Name="object_cs_DL_009578" Offset="0x9578" />
|
||||
@@ -90,8 +90,8 @@
|
||||
<Limb Name="object_cs_Standardlimb_00F7C4" Type="Standard" EnumName="OBJECT_CS_LIMB_13" Offset="0xF7C4" />
|
||||
<Limb Name="object_cs_Standardlimb_00F7D0" Type="Standard" EnumName="OBJECT_CS_LIMB_14" Offset="0xF7D0" />
|
||||
<Skeleton Name="object_cs_Skel_00F82C" Type="Flex" LimbType="Standard" LimbNone="OBJECT_CS_LIMB_NONE" LimbMax="OBJECT_CS_LIMB_MAX" EnumName="ObjectCsLimb" Offset="0xF82C" />
|
||||
<Animation Name="object_cs_Anim_00FAF4" Offset="0xFAF4" />
|
||||
<Animation Name="object_cs_Anim_01007C" Offset="0x1007C" />
|
||||
<Animation Name="object_cs_Anim_010B68" Offset="0x10B68" />
|
||||
<Animation Name="object_cs_Anim_00FAF4" Offset="0xFAF4" /> <!-- Original name is "csn_wait02" -->
|
||||
<Animation Name="object_cs_Anim_01007C" Offset="0x1007C" /> <!-- Original name is "csn_walk" -->
|
||||
<Animation Name="object_cs_Anim_010B68" Offset="0x10B68" /> <!-- Original name is "csn_yarare" ("to suffer damage") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -67,34 +67,34 @@
|
||||
<!-- DLists and Collision -->
|
||||
|
||||
<!-- CeilingCog -->
|
||||
<DList Name="gClockTowerEmpty1DL" Offset="0x10820" />
|
||||
<DList Name="gClockTowerCeilingCogDL" Offset="0x10828" />
|
||||
<DList Name="gClockTowerEmpty1DL" Offset="0x10820" /> <!-- Original name is "w2_gia_modelT" (probably a mispelling of "gear") -->
|
||||
<DList Name="gClockTowerCeilingCogDL" Offset="0x10828" /> <!-- Original name is "w2_gia_model" -->
|
||||
|
||||
<!-- Corridor -->
|
||||
<DList Name="gClockTowerCorridorFoliageDL" Offset="0x129D0" />
|
||||
<DList Name="gClockTowerCorridorDL" Offset="0x12DA0" />
|
||||
<DList Name="gClockTowerCorridorDL" Offset="0x12DA0" /> <!-- Original name is "w2_hineri_model" ("twist; spin") -->
|
||||
<Collision Name="gClockTowerCorridorCol" Offset="0x142E8" />
|
||||
|
||||
<!-- Organ -->
|
||||
<DList Name="gClockTowerOrganPipesDL" Offset="0x15F30" />
|
||||
<DList Name="gClockTowerOrganDL" Offset="0x160A0" />
|
||||
<DList Name="gClockTowerOrganPipesDL" Offset="0x15F30" /> <!-- Original name is "w2_piano_modelT" -->
|
||||
<DList Name="gClockTowerOrganDL" Offset="0x160A0" /> <!-- Original name is "w2_piano_model" -->
|
||||
<Collision Name="gClockTowerOrganCol" Offset="0x16E70" />
|
||||
|
||||
<!-- CenterCog -->
|
||||
<DList Name="gClockTowerEmpty2DL" Offset="0x17010" />
|
||||
<DList Name="gClockTowerCenterCogDL" Offset="0x17018" />
|
||||
<DList Name="gClockTowerEmpty2DL" Offset="0x17010" /> <!-- Original name is "w2_shaft_modelT" -->
|
||||
<DList Name="gClockTowerCenterCogDL" Offset="0x17018" /> <!-- Original name is "w2_shaft_model" -->
|
||||
|
||||
<!-- StoneDoorMain -->
|
||||
<DList Name="gClockTowerStoneDoorMainDL" Offset="0x17220" />
|
||||
<DList Name="gClockTowerStoneDoorMainDL" Offset="0x17220" /> <!-- Original name is "w2_shatter_higashi_model" ("higashi" = "east") -->
|
||||
<Collision Name="gClockTowerStoneDoorMainCol" Offset="0x17410" />
|
||||
|
||||
<!-- StoneDoor -->
|
||||
<DList Name="gClockTowerStoneDoorDL" Offset="0x174E0" />
|
||||
<DList Name="gClockTowerStoneDoorDL" Offset="0x174E0" /> <!-- Original name is "w2_shatter_nishi_model" ("nishi" = "west") -->
|
||||
<Collision Name="gClockTowerStoneDoorCol" Offset="0x17650" />
|
||||
|
||||
<!-- WaterWheel -->
|
||||
<DList Name="gClockTowerEmpty3DL" Offset="0x18110" />
|
||||
<DList Name="gClockTowerWaterWheelDL" Offset="0x18118" />
|
||||
<DList Name="gClockTowerEmpty3DL" Offset="0x18110" /> <!-- Original name is "w2_suisha_modelT" ("water wheel") -->
|
||||
<DList Name="gClockTowerWaterWheelDL" Offset="0x18118" /> <!-- Original name is "w2_suisha_model" -->
|
||||
<Collision Name="gClockTowerWaterWheelCol" Offset="0x18588" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
<Animation Name="object_os_anime_Anim_00107C" Offset="0x107C" />
|
||||
<Animation Name="object_os_anime_Anim_001270" Offset="0x1270" />
|
||||
<Animation Name="object_os_anime_Anim_0012FC" Offset="0x12FC" />
|
||||
<Animation Name="object_os_anime_Anim_001458" Offset="0x1458" />
|
||||
<Animation Name="object_os_anime_Anim_0017D8" Offset="0x17D8" />
|
||||
<Animation Name="object_os_anime_Anim_001C9C" Offset="0x1C9C" />
|
||||
<Animation Name="object_os_anime_Anim_001D44" Offset="0x1D44" />
|
||||
<Animation Name="object_os_anime_Anim_001EE0" Offset="0x1EE0" />
|
||||
<Animation Name="object_os_anime_Anim_001458" Offset="0x1458" /> <!-- Original name is "Cne2_15" -->
|
||||
<Animation Name="object_os_anime_Anim_0017D8" Offset="0x17D8" /> <!-- Original name is "Cne_aruku" ("walk") -->
|
||||
<Animation Name="object_os_anime_Anim_001C9C" Offset="0x1C9C" /> <!-- Original name is "Cne_hiso_wait" ("hiso" = onomatopoeic for "whisper") -->
|
||||
<Animation Name="object_os_anime_Anim_001D44" Offset="0x1D44" /> <!-- Original name is "Cne_matsu" -->
|
||||
<Animation Name="object_os_anime_Anim_001EE0" Offset="0x1EE0" /> <!-- Original name is "Cne_n_wait" ("to wait") -->
|
||||
<Animation Name="object_os_anime_Anim_001F78" Offset="0x1F78" />
|
||||
<Animation Name="object_os_anime_Anim_0020F8" Offset="0x20F8" />
|
||||
<Animation Name="object_os_anime_Anim_0021B8" Offset="0x21B8" />
|
||||
|
||||
@@ -1,50 +1,72 @@
|
||||
<Root>
|
||||
<!-- Assets for Tijo, the drummer of The Indigo-Go's. -->
|
||||
<File Name="object_zod" Segment="6">
|
||||
<Animation Name="object_zod_Anim_0002E8" Offset="0x2E8" />
|
||||
<Animation Name="object_zod_Anim_000894" Offset="0x894" />
|
||||
<Animation Name="object_zod_Anim_000A9C" Offset="0xA9C" />
|
||||
<Animation Name="object_zod_Anim_000D94" Offset="0xD94" />
|
||||
<DList Name="object_zod_DL_0039A0" Offset="0x39A0" />
|
||||
<DList Name="object_zod_DL_003DA0" Offset="0x3DA0" />
|
||||
<DList Name="object_zod_DL_004018" Offset="0x4018" />
|
||||
<DList Name="object_zod_DL_004130" Offset="0x4130" />
|
||||
<DList Name="object_zod_DL_004258" Offset="0x4258" />
|
||||
<DList Name="object_zod_DL_0043E8" Offset="0x43E8" />
|
||||
<DList Name="object_zod_DL_004500" Offset="0x4500" />
|
||||
<DList Name="object_zod_DL_004628" Offset="0x4628" />
|
||||
<DList Name="object_zod_DL_0047B8" Offset="0x47B8" />
|
||||
<Texture Name="object_zod_Tex_004B50" OutName="tex_004B50" Format="rgba16" Width="8" Height="8" Offset="0x4B50" />
|
||||
<Texture Name="object_zod_Tex_004BD0" OutName="tex_004BD0" Format="rgba16" Width="32" Height="32" Offset="0x4BD0" />
|
||||
<Texture Name="object_zod_Tex_0053D0" OutName="tex_0053D0" Format="rgba16" Width="16" Height="16" Offset="0x53D0" />
|
||||
<Texture Name="object_zod_Tex_0055D0" OutName="tex_0055D0" Format="rgba16" Width="8" Height="8" Offset="0x55D0" />
|
||||
<Texture Name="object_zod_Tex_005650" OutName="tex_005650" Format="rgba16" Width="32" Height="32" Offset="0x5650" />
|
||||
<!-- <Blob Name="object_zod_Blob_005E50" Size="0x2800" Offset="0x5E50" /> -->
|
||||
<DList Name="object_zod_DL_00A460" Offset="0xA460" />
|
||||
<DList Name="object_zod_DL_00A550" Offset="0xA550" />
|
||||
<DList Name="object_zod_DL_00A5E0" Offset="0xA5E0" />
|
||||
<DList Name="object_zod_DL_00A670" Offset="0xA670" />
|
||||
<DList Name="object_zod_DL_00A700" Offset="0xA700" />
|
||||
<DList Name="object_zod_DL_00A8F8" Offset="0xA8F8" />
|
||||
<DList Name="object_zod_DL_00AAF0" Offset="0xAAF0" />
|
||||
<DList Name="object_zod_DL_00ACE8" Offset="0xACE8" />
|
||||
<DList Name="object_zod_DL_00AEE0" Offset="0xAEE0" />
|
||||
<DList Name="object_zod_DL_00B0D8" Offset="0xB0D8" />
|
||||
<Texture Name="object_zod_Tex_00B348" OutName="tex_00B348" Format="rgba16" Width="32" Height="32" Offset="0xB348" />
|
||||
<Texture Name="object_zod_Tex_00BB48" OutName="tex_00BB48" Format="rgba16" Width="32" Height="32" Offset="0xBB48" />
|
||||
<Texture Name="object_zod_Tex_00C348" OutName="tex_00C348" Format="rgba16" Width="8" Height="8" Offset="0xC348" />
|
||||
<Texture Name="object_zod_Tex_00C3C8" OutName="tex_00C3C8" Format="rgba16" Width="32" Height="32" Offset="0xC3C8" />
|
||||
<Texture Name="object_zod_Tex_00CBC8" OutName="tex_00CBC8" Format="rgba16" Width="16" Height="16" Offset="0xCBC8" />
|
||||
<Texture Name="object_zod_Tex_00CDC8" OutName="tex_00CDC8" Format="rgba16" Width="32" Height="32" Offset="0xCDC8" />
|
||||
<Limb Name="object_zod_Standardlimb_00D5C8" Type="Standard" EnumName="OBJECT_ZOD_LIMB_01" Offset="0xD5C8" />
|
||||
<Limb Name="object_zod_Standardlimb_00D5D4" Type="Standard" EnumName="OBJECT_ZOD_LIMB_02" Offset="0xD5D4" />
|
||||
<Limb Name="object_zod_Standardlimb_00D5E0" Type="Standard" EnumName="OBJECT_ZOD_LIMB_03" Offset="0xD5E0" />
|
||||
<Limb Name="object_zod_Standardlimb_00D5EC" Type="Standard" EnumName="OBJECT_ZOD_LIMB_04" Offset="0xD5EC" />
|
||||
<Limb Name="object_zod_Standardlimb_00D5F8" Type="Standard" EnumName="OBJECT_ZOD_LIMB_05" Offset="0xD5F8" />
|
||||
<Limb Name="object_zod_Standardlimb_00D604" Type="Standard" EnumName="OBJECT_ZOD_LIMB_06" Offset="0xD604" />
|
||||
<Limb Name="object_zod_Standardlimb_00D610" Type="Standard" EnumName="OBJECT_ZOD_LIMB_07" Offset="0xD610" />
|
||||
<Limb Name="object_zod_Standardlimb_00D61C" Type="Standard" EnumName="OBJECT_ZOD_LIMB_08" Offset="0xD61C" />
|
||||
<Limb Name="object_zod_Standardlimb_00D628" Type="Standard" EnumName="OBJECT_ZOD_LIMB_09" Offset="0xD628" />
|
||||
<Skeleton Name="object_zod_Skel_00D658" Type="Flex" LimbType="Standard" LimbNone="OBJECT_ZOD_LIMB_NONE" LimbMax="OBJECT_ZOD_LIMB_MAX" EnumName="ObjectZodLimb" Offset="0xD658" />
|
||||
<Animation Name="object_zod_Anim_00D9B0" Offset="0xD9B0" />
|
||||
<!-- Tijo Animations -->
|
||||
<Animation Name="gTijoPlayingVivaceAnim" Offset="0x2E8" />
|
||||
<Animation Name="gTijoReadyToPlayAnim" Offset="0x894" />
|
||||
<Animation Name="gTijoArmsFoldedAnim" Offset="0xA9C" />
|
||||
<Animation Name="gTijoPlayingLentoAnim" Offset="0xD94" />
|
||||
|
||||
<!-- Tijo DisplayLists -->
|
||||
<DList Name="gTijoLowerBodyChairDL" Offset="0x39A0" />
|
||||
<DList Name="gTijoUpperBodyDL" Offset="0x3DA0" />
|
||||
<DList Name="gTijoRightArmDL" Offset="0x4018" />
|
||||
<DList Name="gTijoRightForearmDL" Offset="0x4130" />
|
||||
<DList Name="gTijoRightHandDL" Offset="0x4258" />
|
||||
<DList Name="gTijoLeftArmDL" Offset="0x43E8" />
|
||||
<DList Name="gTijoLeftForearmDL" Offset="0x4500" />
|
||||
<DList Name="gTijoLeftHandDL" Offset="0x4628" />
|
||||
<DList Name="gTijoHeadDL" Offset="0x47B8" />
|
||||
|
||||
<!-- Tijo Textures /> -->
|
||||
<Texture Name="gTijoSkinTex" OutName="tijo_skin" Format="rgba16" Width="8" Height="8" Offset="0x4B50" />
|
||||
<Texture Name="gTijoChairTex" OutName="tijo_chair" Format="rgba16" Width="32" Height="32" Offset="0x4BD0" />
|
||||
<Texture Name="gTijoHandTex" OutName="tijo_hand" Format="rgba16" Width="16" Height="16" Offset="0x53D0" />
|
||||
<Texture Name="gTijoNoseTex" OutName="tijo_nose" Format="rgba16" Width="8" Height="8" Offset="0x55D0" />
|
||||
<Texture Name="gTijoSkinSpotsTex" OutName="tijo_skin_spots" Format="rgba16" Width="32" Height="32" Offset="0x5650" />
|
||||
<Texture Name="gTijoEyesOpen" OutName="tijo_eyes_open" Format="rgba16" Width="32" Height="32" Offset="0x5E50" />
|
||||
<Texture Name="gTijoEyesHalfOpen" OutName="tijo_eyes_half_open" Format="rgba16" Width="32" Height="32" Offset="0x6650" />
|
||||
<Texture Name="gTijoEyesClosed" OutName="tijo_eyes_closed" Format="rgba16" Width="32" Height="32" Offset="0x6E50" />
|
||||
<Texture Name="gTijoMouthClosedTex" OutName="tijo_mouth_closed" Format="rgba16" Width="32" Height="32" Offset="0x7650" />
|
||||
<Texture Name="gTijoMouthOpenTex" OutName="tijo_mouth_open" Format="rgba16" Width="32" Height="32" Offset="0x7E50" />
|
||||
|
||||
<!-- <Blob Name="object_zod_Blob_008650" Size="0x1E10" Offset="0x8650" /> -->
|
||||
|
||||
<!-- Tijo Drums DisplayLists /> -->
|
||||
<DList Name="gTijoDrumFrameDL" Offset="0xA460" />
|
||||
<DList Name="gTijoRideCymbalDL" Offset="0xA550" />
|
||||
<DList Name="gTijoCrashCymbalDL" Offset="0xA5E0" />
|
||||
<DList Name="gTijoHiHatDL" Offset="0xA670" />
|
||||
<DList Name="gTijoDrum1DL" Offset="0xA700" />
|
||||
<DList Name="gTijoDrum2DL" Offset="0xA8F8" />
|
||||
<DList Name="gTijoDrum3DL" Offset="0xAAF0" />
|
||||
<DList Name="gTijoDrum4DL" Offset="0xACE8" />
|
||||
<DList Name="gTijoDrum5DL" Offset="0xAEE0" />
|
||||
<DList Name="gTijoBassDrumDL" Offset="0xB0D8" />
|
||||
|
||||
<!-- Tijo Drums Textures -->
|
||||
<Texture Name="gTijoDrumFrameTex" OutName="tijo_drum_stands" Format="rgba16" Width="32" Height="32" Offset="0xB348" />
|
||||
<Texture Name="gTijoCymbalHiHatTex" OutName="tijo_cymbal_hihat" Format="rgba16" Width="32" Height="32" Offset="0xBB48" />
|
||||
<Texture Name="gTijoDrumsSkinTex" OutName="tijo_drums_skin" Format="rgba16" Width="8" Height="8" Offset="0xC348" />
|
||||
<Texture Name="gTijoDrumsEyesTex" OutName="tijo_eyes" Format="rgba16" Width="32" Height="32" Offset="0xC3C8" />
|
||||
<Texture Name="gTijoDrumsMouthTex" OutName="tijo_drums_mouth" Format="rgba16" Width="16" Height="16" Offset="0xCBC8" />
|
||||
<Texture Name="gTijoDrumsHairTex" OutName="tijo_drums_hair" Format="rgba16" Width="32" Height="32" Offset="0xCDC8" />
|
||||
|
||||
<!-- Tijo Limbs -->
|
||||
<Limb Name="gTijoLowerBodyChairLimb" Type="Standard" EnumName="TIJO_LIMB_BODY_CHAIR" Offset="0xD5C8" />
|
||||
<Limb Name="gTijoUpperBodyLimb" Type="Standard" EnumName="TIJO_LIMB_UPPER_BODY" Offset="0xD5D4" />
|
||||
<Limb Name="gTijoHeadLimb" Type="Standard" EnumName="TIJO_LIMB_HEAD" Offset="0xD5E0" />
|
||||
<Limb Name="gTijoLeftArmLimb" Type="Standard" EnumName="TIJO_LIMB_LEFT_ARM" Offset="0xD5EC" />
|
||||
<Limb Name="gTijoLeftForearmLimb" Type="Standard" EnumName="TIJO_LIMB_LEFT_FOREARM" Offset="0xD5F8" />
|
||||
<Limb Name="gTijoLeftHandLimb" Type="Standard" EnumName="TIJO_LIMB_LEFT_HAND" Offset="0xD604" />
|
||||
<Limb Name="gTijoRightArmLimb" Type="Standard" EnumName="TIJO_LIMB_RIGHT_ARM" Offset="0xD610" />
|
||||
<Limb Name="gTijoRightForearmLimb" Type="Standard" EnumName="TIJO_LIMB_RIGHT_FOREARM" Offset="0xD61C" />
|
||||
<Limb Name="gTijoRightHandLimb" Type="Standard" EnumName="TIJO_LIMB_RIGHT_HAND" Offset="0xD628" />
|
||||
|
||||
<!-- Tijo Skeleton -->
|
||||
<Skeleton Name="gTijoSkel" Type="Flex" LimbType="Standard" LimbNone="TIJO_LIMB_NONE" LimbMax="TIJO_LIMB_MAX" EnumName="TijoLimb" Offset="0xD658" />
|
||||
|
||||
<!-- Tijo Andantino Animation -->
|
||||
<Animation Name="gTijoPlayingAndantinoAnim" Offset="0xD9B0" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
<File Name="ovl_En_Sth" BaseAddress="0x80B66D30" RangeStart="0x1890" RangeEnd="0x646C">
|
||||
<DList Name="ovl_En_Sth_DL_0034A0" Offset="0x34A0"/>
|
||||
<DList Name="ovl_En_Sth_DL_0037C0" Offset="0x37C0"/>
|
||||
<Animation Name="ovl_En_Sth_Anim_003F50" Offset="0x3F50" />
|
||||
<Animation Name="ovl_En_Sth_Anim_0045B4" Offset="0x45B4" />
|
||||
<Animation Name="ovl_En_Sth_Anim_004CC0" Offset="0x4CC0" />
|
||||
<Animation Name="ovl_En_Sth_Anim_00533C" Offset="0x533C" />
|
||||
<Animation Name="ovl_En_Sth_Anim_0059B8" Offset="0x59B8" />
|
||||
<Animation Name="ovl_En_Sth_Anim_005E40" Offset="0x5E40" />
|
||||
<Animation Name="ovl_En_Sth_Anim_006354" Offset="0x6354" />
|
||||
<Animation Name="ovl_En_Sth_Anim_00645C" Offset="0x645C" />
|
||||
<Animation Name="ovl_En_Sth_Anim_003F50" Offset="0x3F50" /> <!-- Original name is "sth_ko_matsu" ("matsu" = "to wait") -->
|
||||
<Animation Name="ovl_En_Sth_Anim_0045B4" Offset="0x45B4" /> <!-- Original name is "sth_kibunwaru" ("bad mood") -->
|
||||
<Animation Name="ovl_En_Sth_Anim_004CC0" Offset="0x4CC0" /> <!-- Original name is "sth_talk2000" -->
|
||||
<Animation Name="ovl_En_Sth_Anim_00533C" Offset="0x533C" /> <!-- Original name is "sth_wait2000" -->
|
||||
<Animation Name="ovl_En_Sth_Anim_0059B8" Offset="0x59B8" /> <!-- Original name is "sth_miageru" ("look up") -->
|
||||
<Animation Name="ovl_En_Sth_Anim_005E40" Offset="0x5E40" /> <!-- Original name is "sth_kyorokyoro" (onomatopoeic for "looking around restlessly") -->
|
||||
<Animation Name="ovl_En_Sth_Anim_006354" Offset="0x6354" /> <!-- Original name is "sth_onegai" ("request; favor (to ask); wish") -->
|
||||
<Animation Name="ovl_En_Sth_Anim_00645C" Offset="0x645C" /> <!-- Original name is "sth_tasukete" ("help!") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
<Texture Name="gEnSth2HairTex" OutName="en_sth2_hair" Format="rgba16" Width="8" Height="16" Offset="0x12E0"/>
|
||||
<DList Name="gEnSth2HeadDL" Offset="0x2070"/>
|
||||
<DList Name="gEnSth2HairDL" Offset="0x2390"/>
|
||||
<Animation Name="gEnSth2WavingHandAnim" Offset="0x2B20"/>
|
||||
<Animation Name="gEnSth2WavingHandAnim" Offset="0x2B20"/> <!-- Original name is "sth_ko_matsu" ("matsu" = "to wait") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -0,0 +1,644 @@
|
||||
#ifndef AUDIOTHREAD_CMD_H
|
||||
#define AUDIOTHREAD_CMD_H
|
||||
|
||||
/**
|
||||
* Audio thread commands to safely transfer information/requests/data
|
||||
* from the external graph thread to the internal audio thread
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
// Channel Commands
|
||||
/* 0x00 */ AUDIOCMD_OP_NOOP,
|
||||
/* 0x01 */ AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE,
|
||||
/* 0x02 */ AUDIOCMD_OP_CHANNEL_SET_VOL,
|
||||
/* 0x03 */ AUDIOCMD_OP_CHANNEL_SET_PAN,
|
||||
/* 0x04 */ AUDIOCMD_OP_CHANNEL_SET_FREQ_SCALE,
|
||||
/* 0x05 */ AUDIOCMD_OP_CHANNEL_SET_REVERB_VOLUME,
|
||||
/* 0x06 */ AUDIOCMD_OP_CHANNEL_SET_IO,
|
||||
/* 0x07 */ AUDIOCMD_OP_CHANNEL_SET_PAN_WEIGHT,
|
||||
/* 0x08 */ AUDIOCMD_OP_CHANNEL_SET_MUTE,
|
||||
/* 0x09 */ AUDIOCMD_OP_CHANNEL_SET_MUTE_FLAGS,
|
||||
/* 0x0A */ AUDIOCMD_OP_CHANNEL_SET_VIBRATO_DEPTH,
|
||||
/* 0x0B */ AUDIOCMD_OP_CHANNEL_SET_VIBRATO_RATE,
|
||||
/* 0x0C */ AUDIOCMD_OP_CHANNEL_SET_COMB_FILTER_SIZE,
|
||||
/* 0x0D */ AUDIOCMD_OP_CHANNEL_SET_COMB_FILTER_GAIN,
|
||||
/* 0x0E */ AUDIOCMD_OP_CHANNEL_SET_STEREO,
|
||||
/* 0x0F */ AUDIOCMD_OP_CHANNEL_SET_SET_START_POS,
|
||||
/* 0x10 */ AUDIOCMD_OP_CHANNEL_SET_SFX_STATE,
|
||||
/* 0x11 */ AUDIOCMD_OP_CHANNEL_SET_REVERB_INDEX,
|
||||
/* 0x12 */ AUDIOCMD_OP_CHANNEL_SET_SURROUND_EFFECT_INDEX,
|
||||
/* 0x13 */ AUDIOCMD_OP_CHANNEL_SET_FILTER,
|
||||
/* 0x14 */ AUDIOCMD_OP_CHANNEL_SET_GAIN,
|
||||
// SeqPlayer Commands
|
||||
/* 0x41 */ AUDIOCMD_OP_SEQPLAYER_FADE_VOLUME_SCALE = 0x41,
|
||||
/* 0x46 */ AUDIOCMD_OP_SEQPLAYER_SET_IO = 0x46,
|
||||
/* 0x47 */ AUDIOCMD_OP_SEQPLAYER_SET_TEMPO,
|
||||
/* 0x48 */ AUDIOCMD_OP_SEQPLAYER_SET_TRANSPOSITION,
|
||||
/* 0x49 */ AUDIOCMD_OP_SEQPLAYER_CHANGE_TEMPO,
|
||||
/* 0x4A */ AUDIOCMD_OP_SEQPLAYER_FADE_TO_SET_VOLUME,
|
||||
/* 0x4B */ AUDIOCMD_OP_SEQPLAYER_FADE_TO_SCALED_VOLUME,
|
||||
/* 0x4C */ AUDIOCMD_OP_SEQPLAYER_RESET_VOLUME,
|
||||
/* 0x4D */ AUDIOCMD_OP_SEQPLAYER_SET_BEND,
|
||||
/* 0x4E */ AUDIOCMD_OP_SEQPLAYER_CHANGE_TEMPO_TICKS,
|
||||
// Global Commands
|
||||
/* 0x81 */ AUDIOCMD_OP_GLOBAL_SYNC_LOAD_SEQ_PARTS = 0x81,
|
||||
/* 0x82 */ AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER,
|
||||
/* 0x83 */ AUDIOCMD_OP_GLOBAL_DISABLE_SEQPLAYER,
|
||||
/* 0x85 */ AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER_SKIP_TICKS = 0x85,
|
||||
/* 0x90 */ AUDIOCMD_OP_GLOBAL_SET_CHANNEL_MASK = 0x90,
|
||||
/* 0xE0 */ AUDIOCMD_OP_GLOBAL_SET_DRUM_FONT = 0xE0,
|
||||
/* 0xE1 */ AUDIOCMD_OP_GLOBAL_SET_SFX_FONT,
|
||||
/* 0xE2 */ AUDIOCMD_OP_GLOBAL_SET_INSTRUMENT_FONT,
|
||||
/* 0xE3 */ AUDIOCMD_OP_GLOBAL_POP_PERSISTENT_CACHE,
|
||||
/* 0xE4 */ AUDIOCMD_OP_GLOBAL_SET_CUSTOM_FUNCTION, // TODO: check
|
||||
/* 0xE5 */ AUDIOCMD_OP_GLOBAL_E5, // TODO: check
|
||||
/* 0xE6 */ AUDIOCMD_OP_GLOBAL_SET_REVERB_DATA,
|
||||
/* 0xF0 */ AUDIOCMD_OP_GLOBAL_SET_SOUND_MODE = 0xF0,
|
||||
/* 0xF1 */ AUDIOCMD_OP_GLOBAL_MUTE,
|
||||
/* 0xF2 */ AUDIOCMD_OP_GLOBAL_UNMUTE,
|
||||
/* 0xF3 */ AUDIOCMD_OP_GLOBAL_SYNC_LOAD_INSTRUMENT,
|
||||
/* 0xF4 */ AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_SAMPLE_BANK,
|
||||
/* 0xF5 */ AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_FONT,
|
||||
/* 0xF6 */ AUDIOCMD_OP_GLOBAL_DISCARD_SEQ_FONTS,
|
||||
/* 0xF8 */ AUDIOCMD_OP_GLOBAL_STOP_AUDIOCMDS = 0xF8,
|
||||
/* 0xF9 */ AUDIOCMD_OP_GLOBAL_RESET_AUDIO_HEAP,
|
||||
/* 0xFA */ AUDIOCMD_OP_GLOBAL_NOOP_1, // used but no code exists for it
|
||||
/* 0xFB */ AUDIOCMD_OP_GLOBAL_SET_CUSTOM_UPDATE_FUNCTION,
|
||||
/* 0xFC */ AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_SEQ,
|
||||
/* 0xFD */ AUDIOCMD_OP_GLOBAL_NOOP_2, // used but no code exists for it
|
||||
/* 0xFE */ AUDIOCMD_OP_GLOBAL_DISABLE_ALL_SEQPLAYERS
|
||||
} AudioThreadCmdOp;
|
||||
|
||||
#define AUDIO_MK_CMD(b0, b1, b2, b3) (_SHIFTL(b0, 24, 8) | _SHIFTL(b1, 16, 8) | _SHIFTL(b2, 8, 8) | _SHIFTL(b3, 0, 8))
|
||||
|
||||
#define AUDIOCMD_ALL_SEQPLAYERS 0xFF
|
||||
// Pass to a AUDIOCMD_CHANNEL_ command in place of a channelIndex to try and apply to all channels.
|
||||
// Then uses `threadCmdChannelMask` to determine which channels to apply the command to.
|
||||
#define AUDIOCMD_ALL_CHANNELS 0xFF
|
||||
|
||||
// ==== Audio Thread Channel Commands ====
|
||||
|
||||
/**
|
||||
* Set the volumeScale on a given channel
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param volumeScale (f32) the volume scale for the sequence. No change in volume is 1.0f
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_VOL_SCALE(seqPlayerIndex, channelIndex, volumeScale) \
|
||||
AudioThread_QueueCmdF32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE, seqPlayerIndex, channelIndex, 0), \
|
||||
volumeScale)
|
||||
|
||||
/**
|
||||
* Set the volume on a given channel
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param volume (f32) the target volume for the sequence. Default volume is 1.0f
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_VOL(seqPlayerIndex, channelIndex, volume) \
|
||||
AudioThread_QueueCmdF32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_VOL, seqPlayerIndex, channelIndex, 0), volume)
|
||||
|
||||
/**
|
||||
* Set the pan
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param pan (s8) the pan applied to the channel
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_PAN(seqPlayerIndex, channelIndex, pan) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_PAN, seqPlayerIndex, channelIndex, 0), pan)
|
||||
|
||||
/**
|
||||
* Set frequency scale
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param freqScale (f32) the scaling factor to shift the pitch.
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_FREQ_SCALE(seqPlayerIndex, channelIndex, freqScale) \
|
||||
AudioThread_QueueCmdF32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_FREQ_SCALE, seqPlayerIndex, channelIndex, 0), \
|
||||
freqScale)
|
||||
|
||||
/**
|
||||
* Set reverb volume
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param reverbVolume (s8) volume to set the reverb to (dry/wet mix)
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_REVERB_VOLUME(seqPlayerIndex, channelIndex, reverbVolume) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_REVERB_VOLUME, seqPlayerIndex, channelIndex, 0), \
|
||||
reverbVolume)
|
||||
|
||||
/**
|
||||
* Write a value that can be read as input directly by the sequence itself. This will be set to the channel
|
||||
* ioPort, which will only affect a single channel
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to write the input to
|
||||
* @param channelIndex the index of the channel to write the input to
|
||||
* @param ioPort the index of the array to store the input-output value
|
||||
* @param ioData (s8) the value that's written to the input-output array
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_IO(seqPlayerIndex, channelIndex, ioPort, ioData) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_IO, seqPlayerIndex, channelIndex, ioPort), ioData)
|
||||
|
||||
/**
|
||||
* Set the proportion of pan that comes from the channel
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param panChannelWeight (u8) proportion of pan that comes from the channel.
|
||||
* Set to 0 for layer-only, and 128 for channel-only.
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_PAN_WEIGHT(seqPlayerIndex, channelIndex, panChannelWeight) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_PAN_WEIGHT, seqPlayerIndex, channelIndex, 0), \
|
||||
panChannelWeight)
|
||||
|
||||
/**
|
||||
* Mute a specified channel. How a muted channel behaves will depend on channel mute flags
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param muted (s8) set true to mute
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_MUTE(seqPlayerIndex, channelIndex, muted) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_MUTE, seqPlayerIndex, channelIndex, 0), muted)
|
||||
|
||||
/**
|
||||
* Set the muteFlags for a specified channel
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param muteFlags (s8) Affected how a muted channel behaves. See `MUTE_BEHAVIOR_` macros
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_MUTE_FLAGS(seqPlayerIndex, channelIndex, muteFlags) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_MUTE_FLAGS, seqPlayerIndex, channelIndex, 0), muteFlags)
|
||||
|
||||
/**
|
||||
* Set the vibrato depth (magnitude/amplitude/extent)
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param vibratoDepthTarget (s8) the vibrato depth scaled down by 1/8th
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_VIBRATO_DEPTH(seqPlayerIndex, channelIndex, vibratoDepthTarget) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_VIBRATO_DEPTH, seqPlayerIndex, channelIndex, 0), \
|
||||
vibratoDepthTarget)
|
||||
|
||||
/**
|
||||
* Set the vibrato rate (freq/pitch)
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param vibratoRateTarget (s8) the vibrato rate scaled down by 1/32nd
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_VIBRATO_RATE(seqPlayerIndex, channelIndex, vibratoRateTarget) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_VIBRATO_RATE, seqPlayerIndex, channelIndex, 0), \
|
||||
vibratoRateTarget)
|
||||
|
||||
/**
|
||||
* Set the comb filter size
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param combFilterSize (s8) delay number of sample bytes to offset and add back to itself
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_COMB_FILTER_SIZE(seqPlayerIndex, channelIndex, combFilterSize) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_COMB_FILTER_SIZE, seqPlayerIndex, channelIndex, 0), \
|
||||
combFilterSize)
|
||||
|
||||
/**
|
||||
* Set the comb filter gain
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param combFilterGain (u16) strength of the signal added back to itself
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_COMB_FILTER_GAIN(seqPlayerIndex, channelIndex, combFilterGain) \
|
||||
AudioThread_QueueCmdU16(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_COMB_FILTER_GAIN, seqPlayerIndex, channelIndex, 0), \
|
||||
combFilterGain)
|
||||
|
||||
/**
|
||||
* Set the stereo bits
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the channel to modify
|
||||
* @param stereoData (s8) bit-packed stereo information. See `StereoData`
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_STEREO(seqPlayerIndex, channelIndex, stereoData) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_STEREO, seqPlayerIndex, channelIndex, 0), stereoData)
|
||||
|
||||
/**
|
||||
* Set the start position of a sample.
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the seqPlayer to modify
|
||||
* @param startSamplePos
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_SET_START_POS(seqPlayerIndex, channelIndex, startSamplePos) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_SET_START_POS, seqPlayerIndex, channelIndex, 0), \
|
||||
startSamplePos)
|
||||
|
||||
/**
|
||||
* Set the address of the sfxState to read from.
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the seqPlayer to modify
|
||||
* @param sfxState
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_SFX_STATE(seqPlayerIndex, channelIndex, sfxState) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_SFX_STATE, seqPlayerIndex, channelIndex, 0), sfxState)
|
||||
|
||||
/**
|
||||
* Set the reverb index.
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the seqPlayer to modify
|
||||
* @param reverbIndex
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_REVERB_INDEX(seqPlayerIndex, channelIndex, reverbIndex) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_REVERB_INDEX, seqPlayerIndex, channelIndex, 0), \
|
||||
reverbIndex)
|
||||
|
||||
/**
|
||||
* Set the surround effect index.
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the seqPlayer to modify
|
||||
* @param surroundEffectIndex
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_SURROUND_EFFECT_INDEX(seqPlayerIndex, channelIndex, surroundEffectIndex) \
|
||||
AudioThread_QueueCmdS8( \
|
||||
AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_SURROUND_EFFECT_INDEX, seqPlayerIndex, channelIndex, 0), \
|
||||
surroundEffectIndex)
|
||||
|
||||
/**
|
||||
* Set a filter.
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the seqPlayer to modify
|
||||
* @param filterCutoff
|
||||
* @param filter
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_FILTER(seqPlayerIndex, channelIndex, filterCutoff, filter) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_FILTER, seqPlayerIndex, channelIndex, filterCutoff), \
|
||||
filter)
|
||||
|
||||
/**
|
||||
* Set the gain.
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param channelIndex the index of the seqPlayer to modify
|
||||
* @param gain
|
||||
*/
|
||||
#define AUDIOCMD_CHANNEL_SET_GAIN(seqPlayerIndex, channelIndex, gain) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_GAIN, seqPlayerIndex, channelIndex, 0), gain)
|
||||
|
||||
// ==== Audio Thread SeqPlayer Commands ====
|
||||
|
||||
/**
|
||||
* Set the fade volume scale
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param fadeVolumeScale (f32) multiplicative scaling factor to apply to volume
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_FADE_VOLUME_SCALE(seqPlayerIndex, fadeVolumeScale) \
|
||||
AudioThread_QueueCmdF32(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_FADE_VOLUME_SCALE, seqPlayerIndex, 0, 0), \
|
||||
fadeVolumeScale)
|
||||
|
||||
/**
|
||||
* Write a value that can be read as input directly by the sequence itself. This will be set to the global
|
||||
* ioPort, which can affect the entire sequence
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to write the input to
|
||||
* @param ioPort the index of the array to store the input-output value
|
||||
* @param ioData (s8) the value that's written to the input-output array
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_SET_IO(seqPlayerIndex, ioPort, ioData) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_SET_IO, seqPlayerIndex, 0, ioPort), ioData)
|
||||
|
||||
/**
|
||||
* Set the tempo (bpm) of a sequence on a given seqPlayer
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param tempo (s32) the tempo for the sequence, in bpm
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_SET_TEMPO(seqPlayerIndex, tempo) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_SET_TEMPO, seqPlayerIndex, 0, 0), tempo)
|
||||
|
||||
/**
|
||||
* Set the transposition
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param transposition (s8) the number of semitones to increase or decrease by for all notes on the seqPlayer
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_SET_TRANSPOSITION(seqPlayerIndex, transposition) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_SET_TRANSPOSITION, seqPlayerIndex, 0, 0), transposition)
|
||||
|
||||
/**
|
||||
* Set tempoChange in bpm
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param tempoChange (s32) difference in tempo to change, in bpm
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_CHANGE_TEMPO(seqPlayerIndex, tempoChange) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_CHANGE_TEMPO, seqPlayerIndex, 0, 0), tempoChange)
|
||||
|
||||
/**
|
||||
* Set tempoChange in ticks per minute
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param tempoChange (s32) difference in tempo to change, in ticks per minute
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_CHANGE_TEMPO_TICKS(seqPlayerIndex, tempoChange) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_CHANGE_TEMPO_TICKS, seqPlayerIndex, 0, 0), tempoChange)
|
||||
|
||||
/**
|
||||
* Fade the volume to the target volume requested in the command
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param fadeVolume target volume to fade to
|
||||
* @param fadeTimer (s32) number of ticks to fade to `fadeVolume`
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_FADE_TO_SET_VOLUME(seqPlayerIndex, fadeVolume, fadeTimer) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_FADE_TO_SET_VOLUME, seqPlayerIndex, fadeVolume, 0), \
|
||||
fadeTimer)
|
||||
|
||||
/**
|
||||
* Fade the volume to the current volume scaled by a scale factor
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param fadeVolumeScale scaling factor to apply to volume to get the targetVolume
|
||||
* @param fadeTimer (s32) number of ticks to fade to `targetVolume`
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_FADE_TO_SCALED_VOLUME(seqPlayerIndex, fadeVolumeScale, fadeTimer) \
|
||||
AudioThread_QueueCmdS32( \
|
||||
AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_FADE_TO_SCALED_VOLUME, seqPlayerIndex, fadeVolumeScale, 0), fadeTimer)
|
||||
|
||||
/**
|
||||
* Reset to the default volume of the seqPlayer
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param fadeTimer (s32) number of ticks to fade the sequence back to its default volume
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_RESET_VOLUME(seqPlayerIndex, fadeTimer) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_RESET_VOLUME, seqPlayerIndex, 0, 0), fadeTimer)
|
||||
|
||||
/**
|
||||
* Set the bend
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param bend (f32) ratio relative to 1.0f to scale channel frequencies by
|
||||
*/
|
||||
#define AUDIOCMD_SEQPLAYER_SET_BEND(seqPlayerIndex, bend) \
|
||||
AudioThread_QueueCmdF32(AUDIO_MK_CMD(AUDIOCMD_OP_SEQPLAYER_SET_BEND, seqPlayerIndex, 0, 0), bend)
|
||||
|
||||
// ==== Audio Thread Global Commands ====
|
||||
|
||||
/**
|
||||
* Synchronously load a sequence in parts
|
||||
*
|
||||
* @param seqId the id of the sequence to load, see `SeqId`
|
||||
* @param flags set `& 1` to load the sequence, set `& 2` to load the soundfonts
|
||||
* @param data
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SYNC_LOAD_SEQ_PARTS(seqId, flags, data) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SYNC_LOAD_SEQ_PARTS, 0, seqId, flags), data)
|
||||
|
||||
/**
|
||||
* Synchronously initialize a sequence player
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param seqId the id of the sequence to play, see `SeqId`
|
||||
* @param fadeInTimer (s32) number of ticks to fade in the sequence to the requested volume
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_INIT_SEQPLAYER(seqPlayerIndex, seqId, fadeInTimer) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER, seqPlayerIndex, seqId, 0), fadeInTimer)
|
||||
|
||||
/**
|
||||
* Disable a sequence player
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param fadeOutTimer (s32) number of ticks to fade out the sequence
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_DISABLE_SEQPLAYER(seqPlayerIndex, fadeOutTimer) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_DISABLE_SEQPLAYER, seqPlayerIndex, 0, 0), fadeOutTimer)
|
||||
|
||||
/**
|
||||
* Synchronously initialize a sequence player and skip ticks,
|
||||
* allowing the sequence to start somewhere other than the beginning of the sequences
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param seqId the id of the sequence to play, see `SeqId`
|
||||
* @param skipTicks (s32) number of ticks to skip before starting the sequence
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_INIT_SEQPLAYER_SKIP_TICKS(seqPlayerIndex, seqId, skipTicks) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER_SKIP_TICKS, seqPlayerIndex, seqId, 0), \
|
||||
skipTicks)
|
||||
|
||||
/**
|
||||
* When processing an audio thread channel command on all channels, set which channels to process
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param threadCmdChannelMask (u16) bitfield for 16 channels. Turn bit on to allow audio thread commands of type
|
||||
* "Channel" to process that channel with `AUDIOCMD_ALL_CHANNELS` set.
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_CHANNEL_MASK(seqPlayerIndex, threadCmdChannelMask) \
|
||||
AudioThread_QueueCmdU16(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_CHANNEL_MASK, seqPlayerIndex, 0, 0), \
|
||||
threadCmdChannelMask)
|
||||
|
||||
/**
|
||||
* Set a drum ptr within a soundfont
|
||||
*
|
||||
* @param fontId the id of the soundfont to set the drum in
|
||||
* @param drumId the id of the drum to set
|
||||
* @param drumPtr (s32) the ptr to the `Drum` struct
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_DRUM_FONT(fontId, drumId, drumPtr) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_DRUM_FONT, 0, fontId, drumId), drumPtr)
|
||||
|
||||
/**
|
||||
* Set a soundeffect ptr within a soundfont
|
||||
*
|
||||
* @param fontId the id of the soundfont to set the sound effect in
|
||||
* @param soundEffectId the id of the sound effect to set
|
||||
* @param soundEffectPtr (s32) the ptr to the `SoundEffect` struct
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_SFX_FONT(fontId, soundEffectId, soundEffectPtr) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_SFX_FONT, 0, fontId, soundEffectId), soundEffectPtr)
|
||||
|
||||
/**
|
||||
* Set an instrument ptr within a soundfont
|
||||
*
|
||||
* @param fontId the id of the soundfont to set the instrument in
|
||||
* @param instId the id of the instrument to set
|
||||
* @param instPtr (s32) the ptr to the `Instrument` struct
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_INSTRUMENT_FONT(fontId, instId, instPtr) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_INSTRUMENT_FONT, 0, fontId, instId), instPtr)
|
||||
|
||||
/**
|
||||
* Pop the persistent cache of the specified table
|
||||
*
|
||||
* @param tableType (s32) see the `SampleBankTableType` enum
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_POP_PERSISTENT_CACHE(tableType) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_POP_PERSISTENT_CACHE, 0, 0, 0), tableType)
|
||||
|
||||
/**
|
||||
* Set a custom function.
|
||||
*
|
||||
* @param functionType
|
||||
* @param functionPtr
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_CUSTOM_FUNCTION(functionType, functionPtr) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_CUSTOM_FUNCTION, 0, 0, functionType), functionPtr)
|
||||
|
||||
/**
|
||||
* Do something related to the unloaded-type audio data in the heap.
|
||||
*
|
||||
* @param tableType
|
||||
* @param id
|
||||
* @param type
|
||||
* @param data
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_E5(tableType, id, type, data) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_E5, tableType, id, type), data)
|
||||
|
||||
/**
|
||||
* Set reverb data.
|
||||
*
|
||||
* @param reverbIndex
|
||||
* @param dataType
|
||||
* @param data
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_REVERB_DATA(reverbIndex, dataType, data) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_REVERB_DATA, dataType, reverbIndex, 0), data)
|
||||
|
||||
/**
|
||||
* Change the sound mode of audio
|
||||
*
|
||||
* @param soundMode (s32) see the `SoundMode` enum
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_SOUND_MODE(soundMode) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_SOUND_MODE, 0, 0, 0), soundMode)
|
||||
|
||||
/**
|
||||
* Mute a sequence player
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_MUTE(seqPlayerIndex) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_MUTE, seqPlayerIndex, 0, 0), 0)
|
||||
|
||||
/**
|
||||
* Unmute a sequence player
|
||||
*
|
||||
* @param seqPlayerIndex the index of the seqPlayer to modify
|
||||
* @param restart (s32) if set to 1, then notes with the `MUTE_FLAGS_STOP_SAMPLES` flag set are marked as finished
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_UNMUTE(seqPlayerIndex, restart) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_UNMUTE, seqPlayerIndex, 0, 0), restart)
|
||||
|
||||
/**
|
||||
* Synchronously load an instrument
|
||||
*
|
||||
* @param fontId the id of the soundfont to load
|
||||
* @param instId If below 0x7F, the id of the instrument to use. If equal to 0x7F, load the drum using the drumId
|
||||
* @param drumId the id of the drum to use
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SYNC_LOAD_INSTRUMENT(fontId, instId, drumId) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SYNC_LOAD_INSTRUMENT, fontId, instId, drumId), 0)
|
||||
|
||||
/**
|
||||
* Asynchronously load a sample bank
|
||||
*
|
||||
* @param sampleBankId the id of the samplebank to load
|
||||
* @param retData return data from `externalLoadQueue`
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_ASYNC_LOAD_SAMPLE_BANK(sampleBankId, retData) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_SAMPLE_BANK, sampleBankId, 0, retData), 0)
|
||||
|
||||
/**
|
||||
* Asynchronously load a font
|
||||
*
|
||||
* @param fontId the id of the soundfont to load
|
||||
* @param retData return data from `externalLoadQueue`
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_ASYNC_LOAD_FONT(fontId, retData) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_FONT, fontId, 20, retData), 0)
|
||||
|
||||
/**
|
||||
* Discard sequence fonts
|
||||
*
|
||||
* @param seqId the id of the sequence to discard, see `SeqId`
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_DISCARD_SEQ_FONTS(seqId) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_DISCARD_SEQ_FONTS, 0, seqId, 0), 0)
|
||||
|
||||
/**
|
||||
* Stop processing all audio thread commands
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_STOP_AUDIOCMDS() \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_STOP_AUDIOCMDS, 0, 0, 0), 0)
|
||||
|
||||
/**
|
||||
* Reset Audio Heap
|
||||
*
|
||||
* @param specId (s32) index for the audio specifications to set high-level audio parameters
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_RESET_AUDIO_HEAP(specId) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_RESET_AUDIO_HEAP, 0, 0, 0), specId)
|
||||
|
||||
/**
|
||||
* No Operation. No code exists for this OP
|
||||
*
|
||||
* @param arg0 No info
|
||||
* @param arg1 No info
|
||||
* @param arg2 No info
|
||||
* @param data (s32) No info
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_NOOP_1(arg0, arg1, arg2, data) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_NOOP_1, arg0, arg1, arg2), data)
|
||||
|
||||
/**
|
||||
* Set a custom function that runs every audio thread update, see `AudioCustomUpdateFunction`
|
||||
*
|
||||
* @param functionPtr (s32) address of the function to run once every audio frame
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_CUSTOM_UPDATE_FUNCTION(functionPtr) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_CUSTOM_UPDATE_FUNCTION, 0, 0, 0), functionPtr)
|
||||
|
||||
/**
|
||||
* Asynchronously load a sequence
|
||||
*
|
||||
* @param seqId the id of the sequence to load, see `SeqId`
|
||||
* @param retData return data from `externalLoadQueue`
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_ASYNC_LOAD_SEQ(seqId, retData) \
|
||||
AudioThread_QueueCmdS8(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_SEQ, seqId, 0, retData), 0)
|
||||
|
||||
/**
|
||||
* No Operation. No code exists for this OP
|
||||
*
|
||||
* @param arg0 No info
|
||||
* @param arg1 No info
|
||||
* @param arg2 No info
|
||||
* @param data (s32) No info
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_NOOP_2(arg0, arg1, arg2, data) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_NOOP_2, arg0, arg1, arg2), data)
|
||||
|
||||
/**
|
||||
* Disable all sequence players
|
||||
*
|
||||
* @param flags (s32) Set `AUDIO_NOTE_RELEASE` to discard all sequences.
|
||||
*
|
||||
* @note Also set `AUDIO_NOTE_SAMPLE_NOTES` will also only discard sampled notes, but the sequences are disabled anyway.
|
||||
* Not setting `AUDIO_NOTE_RELEASE` should make this command useless
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_DISABLE_ALL_SEQPLAYERS(flags) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_DISABLE_ALL_SEQPLAYERS, 0, 0, 0), flags)
|
||||
|
||||
#endif
|
||||
@@ -51,6 +51,26 @@ typedef union {
|
||||
u16 rgba;
|
||||
} Color_RGBA16;
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
u32 r : 5;
|
||||
u32 g : 5;
|
||||
u32 b : 5;
|
||||
u32 a : 1;
|
||||
};
|
||||
u16 rgba;
|
||||
} Color_RGBA16_2;
|
||||
|
||||
typedef union{
|
||||
struct {
|
||||
u32 r : 3;
|
||||
u32 g : 3;
|
||||
u32 b : 3;
|
||||
u32 a : 5;
|
||||
};
|
||||
u16 rgba;
|
||||
} Color_RGBA14;
|
||||
|
||||
#define RGBA8(r, g, b, a) ((((r) & 0xFF) << 24) | (((g) & 0xFF) << 16) | (((b) & 0xFF) << 8) | (((a) & 0xFF) << 0))
|
||||
|
||||
#endif
|
||||
|
||||
+108
-161
@@ -978,7 +978,7 @@ s32 Camera_ChangeMode(Camera* camera, s16 mode);
|
||||
s32 func_800DF86C(Camera* camera, s16 arg1);
|
||||
// void func_800DF8EC(void);
|
||||
s32 Camera_ChangeSetting(Camera* camera, s16 setting);
|
||||
u32 Camera_ChangeDataIdx(Camera* camera, u32 camDataIdx);
|
||||
s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx);
|
||||
// void func_800DFC1C(void);
|
||||
// void func_800DFC40(void);
|
||||
s32 Camera_GetInputDirYaw(Camera* camera);
|
||||
@@ -988,7 +988,7 @@ s16 Camera_GetCamDirYaw(Camera* camera);
|
||||
void Camera_AddQuake(Camera* camera, s32 arg1, s16 y, s32 countdown);
|
||||
s32 Camera_SetViewParam(Camera* camera, s32 viewFlag, void* param);
|
||||
// UNK_TYPE4 func_800DFEF0(s32 param_1, u16 param_2);
|
||||
// UNK_TYPE4 func_800DFF18(Camera* iParm1, UNK_TYPE2 uParm2);
|
||||
void func_800DFF18(Camera* camera, s32 arg1);
|
||||
// UNK_TYPE4 func_800DFF34(s32 param_1);
|
||||
// UNK_TYPE4 func_800DFF44(void);
|
||||
s16 Camera_SetFlags(Camera* iParm1, s16 flags);
|
||||
@@ -1227,7 +1227,8 @@ s32 Actor_TrackPlayerSetFocusHeight(PlayState* play, Actor* actor, Vec3s* headRo
|
||||
s32 Actor_TrackPlayer(PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* torsoRot, Vec3f focusPos);
|
||||
void SaveContext_Init(void);
|
||||
void GameInfo_Init(void);
|
||||
// void DebugDisplay_Init(void);
|
||||
DebugDispObject* DebugDisplay_Init(void);
|
||||
void DebugDisplay_DrawObjects(PlayState* play);
|
||||
DebugDispObject* DebugDisplay_AddObject(f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, f32 scaleX, f32 scaleY, f32 scaleZ, u8 red, u8 green, u8 blue, u8 alpha, s16 type, GraphicsContext* gfxCtx);
|
||||
// void func_800E9C90(void);
|
||||
// void func_800E9CA0(s32 param_1, UNK_TYPE1 param_2, s8* param_3);
|
||||
@@ -1274,11 +1275,11 @@ s16 func_800F1460(s16 param_1);
|
||||
ActorCutscene* ActorCutscene_GetCutsceneImpl(s16 index);
|
||||
void ActorCutscene_Init(PlayState* play, ActorCutscene* cutscenes, s32 num);
|
||||
void func_800F15D8(Camera* camera);
|
||||
// void ActorCutscene_ClearWaiting(void);
|
||||
void ActorCutscene_ClearWaiting(void);
|
||||
// void ActorCutscene_ClearNextCutscenes(void);
|
||||
// void ActorCutscene_MarkNextCutscenes(void);
|
||||
// void ActorCutscene_End(void);
|
||||
// void ActorCutscene_Update(void);
|
||||
s16 ActorCutscene_Update(void);
|
||||
void ActorCutscene_SetIntentToPlay(s16 index);
|
||||
s16 ActorCutscene_GetCanPlayNext(s16 index);
|
||||
s16 ActorCutscene_StartAndSetUnkLinkFields(s16 index, Actor* actor);
|
||||
@@ -1323,13 +1324,13 @@ void Font_LoadMessageBoxEndIcon(Font* font, u16 icon);
|
||||
void Font_LoadOrderedFont(Font* font);
|
||||
// void func_800F5090(void);
|
||||
// void func_800F50D4(void);
|
||||
void Kankyo_Init(PlayState* play, EnvironmentContext* envCtx);
|
||||
void Environment_Init(PlayState* play, EnvironmentContext* envCtx, s32 arg2);
|
||||
u32 func_800F5954(u8* param_1, u32 param_2, u32 param_3, u8 param_4, u8 param_5);
|
||||
f32 Environment_LerpWeight(u16 max, u16 min, u16 val);
|
||||
// void func_800F5B10(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5);
|
||||
// void func_800F5CD0(void);
|
||||
void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxContext* skyboxCtx);
|
||||
void func_800F6834(PlayState* play, s32 waterLightsIndex);
|
||||
// void func_800F694C(void);
|
||||
void func_800F694C(PlayState* play);
|
||||
// void func_800F6A04(void);
|
||||
// void func_800F6A40(void);
|
||||
// void func_800F6AB8(void);
|
||||
@@ -1342,13 +1343,15 @@ void func_800F6FF8(PlayState* play, EnvironmentContext* envCtx, LightContext* li
|
||||
// void func_800F88C4(void);
|
||||
// void func_800F8970(void);
|
||||
// void func_800F8A9C(void);
|
||||
// void func_800F8CD4(PlayState* play, EnvironmentContext* envCtx, LightContext* lightCtx, s32 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContext* lightCtx,
|
||||
PauseContext* pauseCtx, MessageContext* msgCtx, GameOverContext* gameOverCtx,
|
||||
GraphicsContext* gfxCtx);
|
||||
// void func_800F8D84(void);
|
||||
// void func_800F9728(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
|
||||
void Environment_DrawSunLensFlare(PlayState* play, EnvironmentContext* envCtx, View* view, GraphicsContext* gfxCtx, Vec3f pos);
|
||||
void func_800F9824(PlayState* play, EnvironmentContext* envCtx, View* view, GraphicsContext* gfxCtx, Vec3f vec, f32 arg5, f32 arg6, s8 arg7, s8 arg8);
|
||||
// void func_800FA39C(void);
|
||||
// void func_800FA3C4(void);
|
||||
// void func_800FA9FC(void);
|
||||
void Environment_DrawRain(PlayState* play, View* view, GraphicsContext* gfxCtx);
|
||||
void func_800FAAB4(PlayState* play, u8 arg1);
|
||||
// void func_800FAC20(void);
|
||||
// void func_800FAF74(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5);
|
||||
@@ -1357,13 +1360,13 @@ void Environment_AddLightningBolts(PlayState* play, u8 num);
|
||||
// void func_800FB388(void);
|
||||
void func_800FB758(PlayState* play);
|
||||
// void func_800FB9B4(void);
|
||||
// void func_800FBCBC(void);
|
||||
void Environment_DrawCustomLensFlare(PlayState* play);
|
||||
void Kankyo_InitGameOverLights(PlayState* play);
|
||||
void Kankyo_FadeInGameOverLights(PlayState* play);
|
||||
void Kankyo_FadeOutGameOverLights(PlayState* play);
|
||||
// void func_800FC3DC(void);
|
||||
void func_800FC444(GraphicsContext* gfxCtx, u8 arg1, u8 arg2, u8 arg3, u8 arg4, UNK_TYPE arg5);
|
||||
// void func_800FC64C(void);
|
||||
void Environment_FillScreen(GraphicsContext* gfxCtx, u8 red, u8 green, u8 blue, u8 alpha, u8 drawFlags);
|
||||
void Environment_DrawSandstorm(PlayState* play, u8 sandstormState);
|
||||
s32 func_800FD2B4(PlayState* play, f32 arg1, f32 arg2, f32 arg3, f32 arg4);
|
||||
void func_800FD538(Color_RGB8* param_1, Color_RGB8* param_2, f32 param_3, Vec3s* param_4);
|
||||
void func_800FD59C(PlayState* play, Color_RGB8* pzParm2, f32 fParm3);
|
||||
@@ -1374,20 +1377,20 @@ void func_800FD698(PlayState* play, s16 arg1, s16 arg2, f32 arg3);
|
||||
// void reset_days_elapsed(void);
|
||||
// u32 get_current_day(void);
|
||||
void func_800FD750(u16 seqId);
|
||||
// void func_800FD768(void);
|
||||
s32 func_800FD768(void);
|
||||
void func_800FD78C(PlayState* play);
|
||||
void func_800FD858(PlayState* play);
|
||||
void func_800FD928(s32 param_1);
|
||||
// void func_800FD980(void);
|
||||
// void func_800FDAF8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_800FDC94(void);
|
||||
// void func_800FE390(void);
|
||||
// void func_800FE3E0(void);
|
||||
void func_800FE484(void);
|
||||
s32 func_800FE498(void);
|
||||
// void func_800FE4A8(void);
|
||||
void func_800FE390(PlayState* play);
|
||||
void func_800FE3E0(PlayState* play);
|
||||
void Environment_StopTime(void);
|
||||
void Environment_StartTime(void);
|
||||
u8 Environment_IsTimeStopped(void);
|
||||
u32 func_800FE4B8(PlayState* play);
|
||||
// void func_800FE590(void);
|
||||
s32 func_800FE590(PlayState* play);
|
||||
// void func_800FE5D0(void);
|
||||
// UNK_TYPE4 func_800FE610(void);
|
||||
u32 func_800FE620(PlayState* play);
|
||||
@@ -1496,7 +1499,7 @@ LightNode* Lights_FindBufSlot();
|
||||
void Lights_FreeNode(LightNode* light);
|
||||
void LightContext_Init(PlayState* play, LightContext* lightCtx);
|
||||
void LightContext_SetAmbientColor(LightContext* lightCtx, u8 r, u8 g, u8 b);
|
||||
void func_80102544(LightContext* lightCtx, u8 a1, u8 a2, u8 a3, s16 numLights, s16 sp16);
|
||||
void LightContext_SetFog(LightContext* lightCtx, u8 r, u8 g, u8 b, s16 near, s16 far);
|
||||
Lights* LightContext_NewLights(LightContext* lightCtx, GraphicsContext* gfxCtx);
|
||||
void LightContext_InitList(PlayState* play, LightContext* lightCtx);
|
||||
void LightContext_DestroyList(PlayState* play, LightContext* lightCtx);
|
||||
@@ -1514,7 +1517,7 @@ void* ZeldaArena_Calloc(u32 num, size_t size);
|
||||
void ZeldaArena_GetSizes(size_t* outMaxFree, size_t* outFree, size_t* outAlloc);
|
||||
s32 ZeldaArena_Check();
|
||||
void ZeldaArena_Init(void* start, size_t size);
|
||||
void ZeldaArena_Cleanup();
|
||||
void ZeldaArena_Cleanup(void);
|
||||
u8 ZeldaArena_IsInitialized();
|
||||
// void func_80102E40(void);
|
||||
// void func_80102E90(void);
|
||||
@@ -1621,9 +1624,9 @@ s32 func_8010A0A4(PlayState* play);
|
||||
void Minimap_SavePlayerRoomInitInfo(PlayState* play);
|
||||
void Map_InitRoomData(PlayState* play, s16 room);
|
||||
void Map_Destroy(PlayState* play);
|
||||
// void Map_Init(PlayState* play);
|
||||
// void Minimap_Draw(PlayState* play);
|
||||
// void Map_Update(PlayState* play);
|
||||
void Map_Init(PlayState* play);
|
||||
void Minimap_Draw(PlayState* play);
|
||||
void Map_Update(PlayState* play);
|
||||
// void func_8010A760(void);
|
||||
// void func_8010A7CC(void);
|
||||
// void func_8010A814(void);
|
||||
@@ -1705,15 +1708,13 @@ Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textu
|
||||
Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point);
|
||||
Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point);
|
||||
|
||||
// void func_8010E028(void);
|
||||
void Interface_StartTimer(s16 timerId, s16 seconds);
|
||||
void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState);
|
||||
void func_8010EE74(PlayState* play, s32 day);
|
||||
void Interface_NewDay(PlayState* play, s32 day);
|
||||
void Interface_SetHudVisibility(u16 hudVisibility);
|
||||
void func_80110038(PlayState* play);
|
||||
// void func_80111CB4(void);
|
||||
// void func_801129E4(void);
|
||||
void func_80112AFC(PlayState* play);
|
||||
void Interface_SetSceneRestrictions(PlayState* play);
|
||||
void Interface_InitMinigame(PlayState* play);
|
||||
void Interface_LoadItemIconImpl(PlayState* play, u8 btn);
|
||||
void Interface_LoadItemIcon(PlayState* play, u8 btn);
|
||||
void func_80112C0C(PlayState* play, u16 flag);
|
||||
@@ -1728,12 +1729,10 @@ s32 Inventory_HasItemInBottle(u8 item);
|
||||
void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn);
|
||||
s32 Inventory_ConsumeFairy(PlayState* play);
|
||||
void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item);
|
||||
// void func_801153C8(void);
|
||||
// void func_80115428(void);
|
||||
void func_8011552C(PlayState* play, u16 arg1);
|
||||
void func_801155B4(PlayState* play, s16 arg1);
|
||||
void func_80115764(PlayState* play, UNK_TYPE arg1);
|
||||
void func_80115844(PlayState* play, s16 param_2);
|
||||
void func_80115844(PlayState* play, s16 doAction);
|
||||
s32 Health_ChangeBy(PlayState* play, s16 healthChange);
|
||||
void Health_GiveHearts(s16 hearts);
|
||||
void Rupees_ChangeBy(s16 rupeeChange);
|
||||
@@ -1741,30 +1740,13 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
|
||||
void Magic_Add(PlayState* play, s16 magicToAdd);
|
||||
void Magic_Reset(PlayState* play);
|
||||
s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type);
|
||||
// void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_801170B8(void);
|
||||
// void func_80117100(void);
|
||||
// void func_80117A20(void);
|
||||
// void func_80117BD0(void);
|
||||
// void func_80118084(void);
|
||||
// void func_80118890(void);
|
||||
// void func_80118BA4(void);
|
||||
// void func_80119030(void);
|
||||
// void func_80119610(void);
|
||||
void func_8011B4E0(PlayState* play, s32 arg1);
|
||||
// void func_8011B5C0(void);
|
||||
// void func_8011B9E0(void);
|
||||
// void func_8011BF70(void);
|
||||
// void func_8011C4C4(void);
|
||||
void Interface_SetPerfectLetters(PlayState* play, s16 perfectLettersType);
|
||||
void Interface_StartMoonCrash(PlayState* play);
|
||||
// void func_8011E730(void);
|
||||
// void func_8011F0E0(UNK_TYPE4 ctxt);
|
||||
// void func_80120F90(void);
|
||||
// void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14);
|
||||
// void func_80121064(void);
|
||||
// void func_801210E0(void);
|
||||
void Interface_Draw(PlayState* play);
|
||||
void Interface_Update(PlayState* play);
|
||||
void Interface_Destroy(PlayState* play);
|
||||
void func_80121FC4(PlayState* play);
|
||||
void Interface_Init(PlayState* play);
|
||||
|
||||
Path* Path_GetByIndex(PlayState* play, s16 index, s16 max);
|
||||
f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw);
|
||||
void Path_CopyLastPoint(Path* path, Vec3f* dest);
|
||||
@@ -1830,7 +1812,7 @@ s32 Player_ActionToExplosive(Player* player, PlayerItemAction itemAction);
|
||||
s32 Player_GetExplosiveHeld(Player* player);
|
||||
s32 Player_ActionToSword(Actor* actor, PlayerItemAction itemAction);
|
||||
s32 func_801242B4(Player* player);
|
||||
s32 Player_GetEnvTimerType(PlayState* play);
|
||||
s32 Player_GetEnvironmentalHazard(PlayState* play);
|
||||
void func_80124420(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);
|
||||
@@ -1995,7 +1977,7 @@ void Scene_SetExitFade(PlayState* play);
|
||||
s32 Scene_ProcessHeader(PlayState* play, SceneCmd* header);
|
||||
u16 Entrance_Create(s32 scene, s32 spawn, s32 layer);
|
||||
u16 Entrance_CreateFromSpawn(s32 spawn);
|
||||
void Scene_ExecuteDrawConfig(PlayState* play);
|
||||
void Scene_Draw(PlayState* play);
|
||||
void Scene_DrawConfigDefault(PlayState* play);
|
||||
Gfx* AnimatedMat_TexScroll(PlayState* play, AnimatedMatTexScrollParams* params);
|
||||
void AnimatedMat_DrawTexScroll(PlayState* play, s32 segment, void* params);
|
||||
@@ -2075,8 +2057,8 @@ void func_80140900(void* arg0);
|
||||
void func_80140CE0(void* arg0);
|
||||
void func_80140D04(void* arg0);
|
||||
void func_80140D10(void* arg0, Gfx** gfx, u32 arg2);
|
||||
void func_80140E80(void* param_1);
|
||||
// void func_80140EA0(void);
|
||||
void func_80140E80(Struct_80140E80* arg0);
|
||||
void func_80140EA0(Struct_80140E80* arg0);
|
||||
// void func_80140EAC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_80141008(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
|
||||
void func_8014116C(Gfx** gfxP, u16* arg1, u16* arg2, s32 width, s32 height, s32 arg5);
|
||||
@@ -2084,7 +2066,7 @@ void func_8014116C(Gfx** gfxP, u16* arg1, u16* arg2, s32 width, s32 height, s32
|
||||
// void func_80141200(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_8014151C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_80141678(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_80141778(void);
|
||||
void func_80141778(Struct_80140E80* arg0, Gfx** gfxp, void* unk_18E60, GraphicsContext* gfxCtx);
|
||||
void VisMono_Init(VisMono* this);
|
||||
void VisMono_Destroy(VisMono* this);
|
||||
// void VisMono_DesaturateTLUT(u16* tlut);
|
||||
@@ -2103,7 +2085,7 @@ void Skybox_Init(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId);
|
||||
Mtx* SkyboxDraw_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z);
|
||||
void SkyboxDraw_SetColors(SkyboxContext* skyboxCtx, u8 primR, u8 primG, u8 primB, u8 envR, u8 envG, u8 envB);
|
||||
void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, f32 z);
|
||||
void SkyboxDraw_Noop(SkyboxContext* skyboxCtx);
|
||||
void SkyboxDraw_Update(SkyboxContext* skyboxCtx);
|
||||
|
||||
// void func_80147520(void);
|
||||
void func_80147564(PlayState* play);
|
||||
@@ -2155,8 +2137,8 @@ u8 Message_GetState(MessageContext* msgCtx);
|
||||
// void func_80153E7C(void);
|
||||
// void func_80153EF0(void);
|
||||
void func_801541D4(PlayState* play, Gfx** gfxp);
|
||||
// void func_80156758(void);
|
||||
void func_8015680C(PlayState* play);
|
||||
void Message_Draw(PlayState* play);
|
||||
void Message_Update(PlayState* play);
|
||||
void func_801586A4(PlayState* play);
|
||||
void Message_Init(PlayState* play);
|
||||
void Message_FindMessageNES(PlayState* play, u16 textId);
|
||||
@@ -2199,7 +2181,7 @@ void* KaleidoManager_FaultAddrConvFunc(void* address, void* param);
|
||||
void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl);
|
||||
void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl);
|
||||
void KaleidoManager_Init(PlayState* play);
|
||||
void KaleidoManager_Destroy();
|
||||
void KaleidoManager_Destroy(void);
|
||||
void* KaleidoManager_GetRamAddr(void* vram);
|
||||
void KaleidoScopeCall_LoadPlayer(void);
|
||||
void KaleidoScopeCall_Init(PlayState* play);
|
||||
@@ -2210,21 +2192,22 @@ void Transition_Init(TransitionContext* transitionCtx);
|
||||
void Transition_Destroy(TransitionContext* transitionCtx);
|
||||
// void func_80163DC0(void);
|
||||
// void func_8016418C(void);
|
||||
// void func_8016424C(void);
|
||||
// void func_801642D8(void);
|
||||
void TransitionUnk_Destroy(FbDemoStruct* this);
|
||||
FbDemoStruct* TransitionUnk_Init(FbDemoStruct* this, s32 row, s32 col);
|
||||
// void func_80164438(void);
|
||||
// void func_8016454C(void);
|
||||
void TransitionUnk_Draw(FbDemoStruct* this, Gfx**);
|
||||
// void func_80164678(void);
|
||||
// void func_801647AC(void);
|
||||
void func_801647AC(FbDemoStruct* this);
|
||||
// UNK_TYPE4 func_801647B8(void);
|
||||
// void TransitionFade_Start(void);
|
||||
void* TransitionFade_Init(void* param_1);
|
||||
// void TransitionFade_Destroy(void);
|
||||
// void TransitionFade_Update(void);
|
||||
// void TransitionFade_Draw(void);
|
||||
void* TransitionFade_Init(TransitionFade* arg0);
|
||||
void TransitionFade_Destroy(TransitionFade* arg0);
|
||||
void TransitionFade_Update(TransitionFade* thisx, s32 updateRate);
|
||||
void TransitionFade_Draw(void* thisx, Gfx** gfxP);
|
||||
// void TransitionFade_IsDone(void);
|
||||
// void TransitionFade_SetColor(void);
|
||||
// void TransitionFade_SetType(void);
|
||||
void TransitionFade_SetColor(TransitionFade* arg0, u32 color);
|
||||
void TransitionFade_SetType(TransitionFade* arg0, s32 arg1);
|
||||
void TransitionFade_Start(TransitionFade* arg0);
|
||||
void TransitionOverlay_ClearLoadInfo(TransitionOverlay *overlayEntry);
|
||||
void TransitionOverlay_SetSegment(TransitionOverlay *overlayEntry, void* vramStart, void* vramEnd, uintptr_t vromStart, uintptr_t vromEnd);
|
||||
void TransitionCircle_Start(void* thisx);
|
||||
@@ -2233,8 +2216,7 @@ void TransitionCircle_Destroy(void* thisx);
|
||||
void TransitionCircle_Update(void* thisx);
|
||||
void TransitionCircle_SetColor(void* thisx, u32 color);
|
||||
void TransitionCircle_SetType(void* thisx, s32 type);
|
||||
void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, TexturePtr texture, s32 fmt, s32 arg3, s32 masks, s32 maskt,
|
||||
f32 arg6);
|
||||
void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, TexturePtr texture, s32 fmt, s32 arg3, s32 masks, s32 maskt, f32 arg6);
|
||||
void TransitionCircle_Draw(void* thisx, Gfx** gfxp);
|
||||
s32 TransitionCircle_IsDone(void* thisx);
|
||||
void* TransitionOverlay_VramToRam(TransitionOverlay *overlayEntry, void* vramAddr);
|
||||
@@ -2243,39 +2225,26 @@ s32 TransitionOverlay_Load(TransitionOverlay *overlayEntry);
|
||||
s32 TransitionOverlay_Free(TransitionOverlay *overlayEntry);
|
||||
void func_80165438(UNK_PTR param_1);
|
||||
// void func_80165444(s32 param_1, UNK_TYPE4 param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5);
|
||||
// void func_80165460(void);
|
||||
// void func_80165608(void);
|
||||
// void func_80165630(void);
|
||||
void func_80165658(u32 arg0);
|
||||
void func_8016566C(u32 arg0);
|
||||
void func_80165690(void);
|
||||
// void func_801656A4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8);
|
||||
void func_80165DCC(s32 arg0);
|
||||
void func_80165DF0(void);
|
||||
// void func_80165E1C(void);
|
||||
// void func_80165E7C(void);
|
||||
// void func_80165EC0(void);
|
||||
// void func_80166060(void);
|
||||
Gfx* func_801660B8(PlayState* play, Gfx* gfx);
|
||||
|
||||
void Play_SetMotionBlurAlpha(u32 alpha);
|
||||
void Play_EnableMotionBlur(u32 alpha);
|
||||
void Play_DisableMotionBlur(void);
|
||||
void Play_SetMotionBlurPriorityAlpha(u32 alpha);
|
||||
void Play_EnableMotionBlurPriority(u32 alpha);
|
||||
void Play_DisableMotionBlurPriority(void);
|
||||
void Play_TriggerPictoPhoto(void);
|
||||
Gfx* Play_SetFog(PlayState* this, Gfx* gfx);
|
||||
void Play_Destroy(GameState* thisx);
|
||||
// void func_801663C4(void);
|
||||
// void func_80166644(void);
|
||||
// void func_801668B4(void);
|
||||
void func_80166968(PlayState* play, Camera* camera);
|
||||
void func_80166B30(PlayState* play);
|
||||
void Play_Update(PlayState* play);
|
||||
void func_80167DE4(PlayState* play);
|
||||
// void func_80167F0C(void);
|
||||
void Play_Draw(PlayState* play);
|
||||
void func_80168DAC(PlayState* play);
|
||||
void Play_Main(PlayState* play);
|
||||
void Play_CompressI8ToI5(void* srcI8, void* destI5, size_t size);
|
||||
void Play_DecompressI5ToI8(void* srcI5, void* destI8, size_t size);
|
||||
void Play_Update(PlayState* this);
|
||||
void Play_Draw(PlayState* this);
|
||||
void Play_Main(GameState* thisx);
|
||||
s32 Play_InCsMode(PlayState* this);
|
||||
f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** arg2, s32* arg3, Vec3f* feetPosPtr);
|
||||
void func_801691F0(PlayState* play, MtxF* mtx, Vec3f* arg2);
|
||||
void* Play_LoadScene(PlayState* play, RomFile* entry);
|
||||
void func_8016927C(PlayState* play, s16 sParm2);
|
||||
// void func_801692C4(PlayState* play, UNK_TYPE1 uParm2);
|
||||
// void Play_SceneInit(PlayState* play, s32 sceneIndex, UNK_TYPE1 param_3);
|
||||
f32 Play_GetFloorSurfaceImpl(PlayState* this, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* pos);
|
||||
void Play_GetFloorSurface(PlayState* this, MtxF* mtx, Vec3f* pos);
|
||||
void* Play_LoadFile(PlayState* this, RomFile* entry);
|
||||
void Play_InitEnvironment(PlayState* this, s16 skyboxId);
|
||||
void Play_GetScreenPos(PlayState* this, Vec3f* worldPos, Vec3f* screenPos);
|
||||
s16 Play_CreateSubCamera(PlayState* this);
|
||||
s16 Play_GetActiveCamId(PlayState* this);
|
||||
@@ -2305,8 +2274,9 @@ s32 func_8016A02C(GameState* thisx, Actor* actor, s16* yaw);
|
||||
s32 Play_IsUnderwater(PlayState* this, Vec3f* pos);
|
||||
s32 Play_IsDebugCamEnabled(void);
|
||||
void Play_AssignPlayerActorCsIdsFromScene(GameState* thisx, s32 startActorCsId);
|
||||
void Play_FillScreen(GameState* gameState, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha);
|
||||
void Play_Init(GameState* gameState);
|
||||
void Play_FillScreen(GameState* thisx, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha);
|
||||
void Play_Init(GameState* thisx);
|
||||
|
||||
// void func_8016AC10(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
|
||||
// void func_8016AE1C(void);
|
||||
// void func_8016B278(void);
|
||||
@@ -2315,11 +2285,11 @@ void Play_Init(GameState* gameState);
|
||||
// void func_8016CD4C(void);
|
||||
// void func_8016E40C(void);
|
||||
// void func_8016EA90(void);
|
||||
// void func_8016F1A8(void);
|
||||
void BombersNotebook_Draw(BombersNotebook* this, GraphicsContext* gfxCtx);
|
||||
// void func_8016F4EC(void);
|
||||
void func_8016F5A8(PlayState* play, s8* pcParm2, Input* iParm3);
|
||||
// void func_8016FC78(void);
|
||||
// void func_8016FC98(void);
|
||||
void BombersNotebook_Update(PlayState* play, BombersNotebook* this, Input* input);
|
||||
void BombersNotebook_Init(BombersNotebook* this);
|
||||
void BombersNotebook_Destroy(BombersNotebook* this);
|
||||
void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg);
|
||||
void PreRender_Init(PreRender* this);
|
||||
void PreRender_SetValues(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf);
|
||||
@@ -2485,24 +2455,22 @@ void SpeedMeter_DrawTimeEntries(void* displayList, GraphicsContext* gfxCtx);
|
||||
// void func_80177A84(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9);
|
||||
//void func_80177AC8(void);
|
||||
void SpeedMeter_DrawAllocEntries(void* displayList, GraphicsContext* gfxCtx, GameState* gameState);
|
||||
void func_801780F0(Mtx* param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7);
|
||||
// void func_801781EC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
void func_8017842C(MtxF* arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, f32 arg10);
|
||||
// void func_80178750(void);
|
||||
// void func_80178818(void);
|
||||
|
||||
void Mtx_SetTranslateScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32 translateX, f32 translateY, f32 translateZ);
|
||||
void Mtx_SetRotationMtx(Mtx* mtx, s32 angle, f32 axisX, f32 axisY, f32 axisZ);
|
||||
void Mtx_SetTranslationRotationScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s32 angle, f32 axisX, f32 axisY, f32 axisZ,f32 translateX, f32 translateY, f32 translateZ);
|
||||
|
||||
void func_80178750(void);
|
||||
void func_80178818(void);
|
||||
void func_80178978(void);
|
||||
// void func_801789D4(void);
|
||||
u32 SysCfb_GetFbPtr(s32 index);
|
||||
u32 SysCfb_GetZBuffer(void);
|
||||
void* SysCfb_GetFbPtr(s32 index);
|
||||
void* SysCfb_GetZBuffer(void);
|
||||
// UNK_TYPE4 func_80178A24(void);
|
||||
// void func_80178A34(void);
|
||||
s32 func_80178A94(s32 param_1, s32 param_2);
|
||||
// void func_80178AC0(void);
|
||||
// void func_80178C80(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_80178D7C(void);
|
||||
// void func_80178DAC(void);
|
||||
void func_80178E3C(u8*, s32, s32, s32);
|
||||
void func_80178E7C(uintptr_t arg0, void* arg1, size_t size);
|
||||
void CmpDma_LoadFile(uintptr_t segmentVrom, s32 id, void* dst, size_t size);
|
||||
void CmpDma_LoadAllFiles(uintptr_t segmentVrom, void* dst, size_t size);
|
||||
// void Check_WriteRGBA16Pixel(u16* buffer, u32 x, u32 y, u32 value);
|
||||
// void Check_WriteI4Pixel(u16* buffer, u32 x, u32 y, u32 value);
|
||||
// void Check_DrawI4Texture(u16* buffer, u32 x, u32 y, u32 width, u32 height, u8* texture);
|
||||
@@ -2752,39 +2720,18 @@ void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* isDone);
|
||||
void AudioLoad_ProcessScriptLoads(void);
|
||||
void AudioLoad_InitScriptLoads(void);
|
||||
|
||||
AudioTask* func_80192BE0(void);
|
||||
// void func_80192C00(void);
|
||||
// void func_8019319C(void);
|
||||
// void func_801936D8(void);
|
||||
// void func_8019372C(void);
|
||||
// void func_80193774(void);
|
||||
// void func_8019380C(void);
|
||||
// void func_80193858(void);
|
||||
AudioTask* AudioThread_Update(void);
|
||||
void AudioThread_QueueCmdF32(u32 opArgs, f32 data);
|
||||
void AudioThread_QueueCmdS32(u32 opArgs, s32 data);
|
||||
void AudioThread_QueueCmdS8(u32 opArgs, s8 data);
|
||||
// void func_801938D0(void);
|
||||
void AudioThread_QueueCmdU16(u32 opArgs, u16 data);
|
||||
s32 AudioThread_ScheduleProcessCmds(void);
|
||||
// void func_80193990(void);
|
||||
// void func_801939A8(void);
|
||||
// void func_80193AEC(void);
|
||||
// void func_80193BA0(void);
|
||||
// void func_80193C04(void);
|
||||
// void func_80193C5C(void);
|
||||
// void func_80193CB4(void);
|
||||
// void func_80193D08(void);
|
||||
// void func_80193DA4(void);
|
||||
// void func_80193E6C(void);
|
||||
// void func_80193EA8(void);
|
||||
// void func_80194080(void);
|
||||
// void func_80194304(void);
|
||||
// void func_80194328(void);
|
||||
// void func_8019435C(void);
|
||||
// void func_8019439C(void);
|
||||
// void func_801943D0(void);
|
||||
// void func_8019440C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_80194528(void);
|
||||
// void func_80194548(void);
|
||||
// void func_80194568(void);
|
||||
u32 AudioThread_GetExternalLoadQueueMsg(u32* retMsg);
|
||||
u8* AudioThread_GetFontsForSequence(s32 seqId, u32* outNumFonts);
|
||||
s32 func_80193C5C(void);
|
||||
s32 AudioThread_ResetAudioHeap(s32 specId);
|
||||
void AudioThread_PreNMIInternal(void);
|
||||
s32 AudioThread_GetEnabledNotesCount(void);
|
||||
u32 AudioThread_NextRandom(void);
|
||||
void AudioThread_InitMesgQueues(void);
|
||||
|
||||
@@ -2826,7 +2773,7 @@ void* AudioSeq_AudioListPopBack(AudioListItem* list);
|
||||
void AudioSeq_ProcessSequences(s32 arg0);
|
||||
void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_InitSequencePlayerChannels(s32 playerIndex);
|
||||
void AudioSeq_InitSequencePlayerChannels(s32 seqPlayerIndex);
|
||||
void AudioSeq_InitSequencePlayers(void);
|
||||
|
||||
void func_8019AE40(s32 param_1, s32 param_2, u32 param_3, s32 param_4);
|
||||
@@ -2947,14 +2894,14 @@ void func_801A3CD8(s8 param_1);
|
||||
void func_801A3CF4(s8 arg0);
|
||||
void func_801A3D98(s8 audioSetting);
|
||||
void func_801A3E38(u8 arg0);
|
||||
// void func_801A3EC0(void);
|
||||
void func_801A3EC0(u8 arg0);
|
||||
void Audio_SetCutsceneFlag(s8 flag);
|
||||
// void func_801A3F6C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_801A3FB4(void);
|
||||
// void func_801A3FFC(UNK_TYPE1 param_1);
|
||||
void Audio_SetSpec(u32 specId);
|
||||
void func_801A4058(UNK_TYPE arg0);
|
||||
// void func_801A41C8(void);
|
||||
void func_801A41C8(s32 arg0);
|
||||
void func_801A41F8(UNK_TYPE arg0);
|
||||
// void func_801A429C(void);
|
||||
// void func_801A42C8(void);
|
||||
@@ -3030,6 +2977,6 @@ u8 func_801A982C(void);
|
||||
void GameOver_Init(PlayState* play);
|
||||
void GameOver_FadeLights(PlayState* play);
|
||||
void GameOver_Update(PlayState* play);
|
||||
void func_801AAAA0(PlayState* play);
|
||||
void Regs_InitData(PlayState* play);
|
||||
|
||||
#endif
|
||||
|
||||
+9
-2
@@ -48,10 +48,13 @@
|
||||
#define DAY_LENGTH (CLOCK_TIME(24, 0))
|
||||
|
||||
#define TIME_TO_MINUTES_F(time) ((time) * ((24.0f * 60.0f) / 0x10000)) // 0.021972656f
|
||||
#define CLOCK_TIME_F(hr, min) (((hr) * 60.0f + (min)) * (0x10000 / (24.0f * 60.0f)))
|
||||
|
||||
#define TIME_TO_MINUTES_ALT_F(time) ((time) / (0x10000 / (24.0f * 60.0f)))
|
||||
|
||||
#define TIME_TO_SECONDS_F(time) ((time) * ((24.0f * 60.0f * 60.0f) / 0x10000))
|
||||
|
||||
#define CLOCK_TIME_F(hr, min) (((hr) * 60.0f + (min)) * (0x10000 / (24.0f * 60.0f)))
|
||||
#define CLOCK_TIME_ALT_F(hr, min) (((hr) * 60.0f + (min)) / (24.0f * 60.0f / 0x10000))
|
||||
#define CLOCK_TIME_ALT2_F(hr, min) ((((hr) + (min) / 60.0f) * 60.0f) / (24.0f * 60.0f / 0x10000))
|
||||
|
||||
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
@@ -137,6 +140,10 @@ extern GraphicsContext* __gfxCtx;
|
||||
#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x))
|
||||
#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x))
|
||||
|
||||
#define RGBA16_GET_R(pixel) (((pixel) >> 11) & 0x1F)
|
||||
#define RGBA16_GET_G(pixel) (((pixel) >> 6) & 0x1F)
|
||||
#define RGBA16_GET_B(pixel) (((pixel) >> 1) & 0x1F)
|
||||
|
||||
#define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x) - 0.5))
|
||||
|
||||
#define SWAP(type, a, b) \
|
||||
|
||||
+56
-29
@@ -43,23 +43,47 @@
|
||||
#define bREG(r) BASE_REG(28, r)
|
||||
|
||||
/* TODO: Actually confirm these, in case of miss-match it's at least a simple list to `sed` */
|
||||
#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT
|
||||
#define R_TIME_SPEED REG(15)
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
|
||||
#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#define R_FB_FILTER_TYPE SREG(80)
|
||||
#define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c)
|
||||
#define R_FB_FILTER_A SREG(84)
|
||||
#define R_FB_FILTER_ENV_COLOR(c) SREG(85 + c)
|
||||
#define R_PICTO_PHOTO_STATE SREG(89)
|
||||
#define R_MOTION_BLUR_ALPHA SREG(90)
|
||||
#define R_MOTION_BLUR_ENABLED SREG(91)
|
||||
#define R_MOTION_BLUR_PRIORITY_ALPHA SREG(92)
|
||||
#define R_MOTION_BLUR_PRIORITY_ENABLED SREG(93)
|
||||
#define R_PAUSE_BG_PRERENDER_STATE SREG(94)
|
||||
|
||||
#define R_PLAY_FILL_SCREEN_ON MREG(64)
|
||||
#define R_PLAY_FILL_SCREEN_R MREG(65)
|
||||
#define R_PLAY_FILL_SCREEN_G MREG(66)
|
||||
#define R_PLAY_FILL_SCREEN_B MREG(67)
|
||||
#define R_PLAY_FILL_SCREEN_ALPHA MREG(68)
|
||||
#define R_PAUSE_WORLD_MAP_YAW YREG(24)
|
||||
#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25)
|
||||
#define R_PAUSE_WORLD_MAP_DEPTH YREG(26)
|
||||
#define R_PAUSE_DBG_QUEST_CURSOR_ON YREG(69)
|
||||
#define R_PAUSE_DBG_QUEST_CURSOR_X YREG(70)
|
||||
#define R_PAUSE_DBG_QUEST_CURSOR_Y YREG(71)
|
||||
#define R_C_UP_ICON_X YREG(88)
|
||||
#define R_C_UP_ICON_Y YREG(89)
|
||||
|
||||
#define R_PAUSE_WORLD_MAP_YAW YREG(24)
|
||||
#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25)
|
||||
#define R_PAUSE_WORLD_MAP_DEPTH YREG(26)
|
||||
#define R_PICTO_FOCUS_BORDER_TOPLEFT_X YREG(32)
|
||||
#define R_PICTO_FOCUS_BORDER_TOPLEFT_Y YREG(33)
|
||||
#define R_PICTO_FOCUS_BORDER_TOPRIGHT_X YREG(34)
|
||||
#define R_PICTO_FOCUS_BORDER_TOPRIGHT_Y YREG(35)
|
||||
#define R_PICTO_FOCUS_BORDER_BOTTOMLEFT_X YREG(36)
|
||||
#define R_PICTO_FOCUS_BORDER_BOTTOMLEFT_Y YREG(37)
|
||||
#define R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_X YREG(38)
|
||||
#define R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_Y YREG(39)
|
||||
#define R_PICTO_FOCUS_ICON_X YREG(40)
|
||||
#define R_PICTO_FOCUS_ICON_Y YREG(41)
|
||||
#define R_PICTO_FOCUS_TEXT_X YREG(42)
|
||||
#define R_PICTO_FOCUS_TEXT_Y YREG(43)
|
||||
#define R_PAUSE_DBG_QUEST_CURSOR_ON YREG(69)
|
||||
#define R_PAUSE_DBG_QUEST_CURSOR_X YREG(70)
|
||||
#define R_PAUSE_DBG_QUEST_CURSOR_Y YREG(71)
|
||||
|
||||
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
|
||||
#define R_C_BTN_COLOR(i) ZREG(39 + i)
|
||||
#define R_B_BTN_COLOR(i) ZREG(43 + i)
|
||||
@@ -76,21 +100,28 @@
|
||||
#define R_ITEM_ICON_X(i) ZREG(82 + i)
|
||||
#define R_ITEM_ICON_Y(i) ZREG(86 + i)
|
||||
#define R_ITEM_ICON_DD(i) ZREG(90 + i)
|
||||
#define R_A_BTN_Y XREG(16)
|
||||
#define R_A_BTN_X XREG(17)
|
||||
#define R_A_ICON_Y XREG(19)
|
||||
#define R_A_ICON_X XREG(20)
|
||||
#define R_A_BTN_COLOR(i) XREG(22 + i)
|
||||
#define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_ON XREG(50)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_X XREG(52)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_Y XREG(53)
|
||||
#define R_MOON_CRASH_TIMER_Y XREG(80)
|
||||
#define R_MOON_CRASH_TIMER_X XREG(81)
|
||||
#define R_PAUSE_OWLWARP_ALPHA XREG(87)
|
||||
#define R_STORY_FILL_SCREEN_ALPHA XREG(91)
|
||||
#define R_REVERSE_FLOOR_INDEX XREG(94)
|
||||
#define R_MINIMAP_DISABLED XREG(95)
|
||||
|
||||
#define R_MAGIC_DBG_SET_UPGRADE XREG(4)
|
||||
#define R_A_BTN_Y XREG(16)
|
||||
#define R_A_BTN_X XREG(17)
|
||||
#define R_A_ICON_Y XREG(19)
|
||||
#define R_A_ICON_X XREG(20)
|
||||
#define R_A_BTN_COLOR(i) XREG(22 + i)
|
||||
#define R_A_BTN_Y_OFFSET XREG(31)
|
||||
#define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41)
|
||||
#define R_THREE_DAY_CLOCK_Y_POS XREG(43)
|
||||
#define R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF XREG(44)
|
||||
#define R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF XREG(45)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_ON XREG(50)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_X XREG(52)
|
||||
#define R_PAUSE_DBG_MAP_CLOUD_Y XREG(53)
|
||||
#define R_MOON_CRASH_TIMER_Y XREG(80)
|
||||
#define R_MOON_CRASH_TIMER_X XREG(81)
|
||||
#define R_PAUSE_OWLWARP_ALPHA XREG(87)
|
||||
#define R_STORY_FILL_SCREEN_ALPHA XREG(91)
|
||||
#define R_REVERSE_FLOOR_INDEX XREG(94)
|
||||
#define R_MINIMAP_DISABLED XREG(95)
|
||||
|
||||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
@@ -98,6 +129,7 @@
|
||||
#define R_B_LABEL_Y(i) WREG(43 + i)
|
||||
#define R_DGN_MINIMAP_X WREG(68)
|
||||
#define R_DGN_MINIMAP_Y WREG(69)
|
||||
|
||||
#define R_MAP_INDEX VREG(11)
|
||||
#define R_MAP_TEX_INDEX_BASE VREG(12)
|
||||
#define R_MAP_TEX_INDEX VREG(13)
|
||||
@@ -111,9 +143,4 @@
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
|
||||
#define R_FB_FILTER_TYPE SREG(80)
|
||||
#define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c)
|
||||
#define R_FB_FILTER_A SREG(84)
|
||||
#define R_FB_FILTER_ENV_COLOR(c) SREG(85 + c)
|
||||
|
||||
#endif
|
||||
|
||||
+33
-190
@@ -308,7 +308,7 @@ extern u8* sYaz0CurDataEnd;
|
||||
extern u32 sYaz0CurRomStart;
|
||||
extern u32 sYaz0CurSize;
|
||||
extern u8* sYaz0MaxPtr;
|
||||
extern u8* D_8009BE20;
|
||||
extern void* gYaz0DecompressDstEnd;
|
||||
// extern UNK_TYPE4 D_8009BE30;
|
||||
// extern UNK_TYPE4 D_8009BE34;
|
||||
// extern FaultClient romInfoFaultClient;
|
||||
@@ -358,9 +358,7 @@ extern u16 viRetrace;
|
||||
extern DmaEntry dmadata[1568];
|
||||
// extern UNK_TYPE1 D_80186028;
|
||||
extern u64 aspMainTextStart[];
|
||||
extern ColliderCylinderInit enAObjCylinderInit;
|
||||
extern InitChainEntry enAObjInitVar;
|
||||
extern Gfx* enAObjDisplayLists[2];
|
||||
|
||||
extern u8 sDropTable[DROP_TABLE_SIZE * DROP_TABLE_NUMBER];
|
||||
extern u8 sDropTableAmounts[DROP_TABLE_SIZE * DROP_TABLE_NUMBER];
|
||||
extern s32 D_801AE194[32];
|
||||
@@ -631,145 +629,6 @@ extern UNK_PTR D_801BEC14;
|
||||
// extern UNK_TYPE2 D_801BF5B0;
|
||||
extern UNK_PTR D_801BF5C0;
|
||||
// extern UNK_TYPE1 D_801BF68C;
|
||||
// extern UNK_TYPE1 D_801BF6C0;
|
||||
// extern UNK_TYPE1 D_801BF79E;
|
||||
// extern UNK_TYPE2 D_801BF884;
|
||||
// extern UNK_TYPE2 D_801BF888;
|
||||
// extern UNK_TYPE2 D_801BF88C;
|
||||
// extern UNK_TYPE2 D_801BF890;
|
||||
// extern UNK_TYPE2 D_801BF898;
|
||||
// extern UNK_TYPE2 D_801BF89C;
|
||||
// extern UNK_TYPE2 sMagicMeterOutlinePrimRed;
|
||||
// extern UNK_TYPE2 sMagicMeterOutlinePrimGreen;
|
||||
// extern UNK_TYPE2 sMagicMeterOutlinePrimBlue;
|
||||
// extern UNK_TYPE2 sMagicBorderRatio;
|
||||
// extern UNK_TYPE2 sMagicBorderStep;
|
||||
// extern UNK_TYPE2 sEnvTimerType;
|
||||
// extern UNK_TYPE2 sEnvTimerActive;
|
||||
// extern UNK_TYPE2 sPostmanBunnyHoodState;
|
||||
// extern UNK_TYPE4 sTimerPausedOsTime;
|
||||
// extern UNK_TYPE4 sBottleTimerPausedOsTime;
|
||||
// extern UNK_TYPE4 D_801BF8F4;
|
||||
// extern UNK_TYPE4 D_801BF8F8;
|
||||
// extern UNK_TYPE4 D_801BF8FC;
|
||||
// extern UNK_TYPE4 D_801BF930;
|
||||
// extern UNK_TYPE4 D_801BF934;
|
||||
// extern UNK_TYPE1 sIsTimerPaused;
|
||||
// extern UNK_TYPE1 D_801BF96A;
|
||||
// extern UNK_TYPE1 sIsBottleTimerPaused;
|
||||
// extern UNK_TYPE1 D_801BF96E;
|
||||
// extern UNK_TYPE2 sTimerId;
|
||||
// extern UNK_TYPE1 D_801BF972;
|
||||
// extern UNK_TYPE2 D_801BF974;
|
||||
// extern UNK_TYPE2 D_801BF978;
|
||||
// extern UNK_TYPE2 D_801BF97C;
|
||||
// extern UNK_TYPE4 D_801BF980;
|
||||
// extern UNK_TYPE1 D_801BF988;
|
||||
// extern UNK_TYPE1 D_801BF998;
|
||||
// extern UNK_TYPE2 D_801BF9B0;
|
||||
// extern UNK_TYPE1 D_801BF9B4;
|
||||
// extern UNK_TYPE1 D_801BF9BC;
|
||||
// extern UNK_TYPE1 D_801BF9C4;
|
||||
// extern UNK_TYPE1 D_801BF9C8;
|
||||
// extern UNK_TYPE1 D_801BF9CC;
|
||||
// extern UNK_TYPE2 D_801BF9D4;
|
||||
// extern UNK_TYPE2 D_801BF9D6;
|
||||
// extern UNK_TYPE2 D_801BF9D8;
|
||||
// extern UNK_TYPE2 D_801BF9DA;
|
||||
// extern UNK_TYPE2 D_801BF9DC;
|
||||
// extern UNK_TYPE2 D_801BF9DE;
|
||||
// extern UNK_TYPE2 D_801BF9E0;
|
||||
// extern UNK_TYPE2 D_801BF9E2;
|
||||
// extern UNK_TYPE2 D_801BF9E4;
|
||||
// extern UNK_TYPE2 D_801BF9E6;
|
||||
// extern UNK_TYPE2 D_801BF9E8;
|
||||
// extern UNK_TYPE2 D_801BF9EA;
|
||||
// extern UNK_TYPE2 D_801BF9EC;
|
||||
// extern UNK_TYPE2 D_801BF9F0;
|
||||
// extern UNK_TYPE2 D_801BF9F4;
|
||||
// extern UNK_TYPE2 D_801BF9F8;
|
||||
// extern UNK_TYPE2 D_801BF9FC;
|
||||
// extern UNK_TYPE2 D_801BFA00;
|
||||
// extern UNK_TYPE2 D_801BFA04;
|
||||
// extern UNK_TYPE2 D_801BFA1C;
|
||||
// extern UNK_TYPE2 D_801BFA34;
|
||||
// extern UNK_TYPE2 D_801BFA4C;
|
||||
// extern UNK_TYPE2 D_801BFA64;
|
||||
// extern UNK_TYPE2 D_801BFA74;
|
||||
// extern UNK_TYPE4 sPostmanTimerInputBtnAPressed;
|
||||
// extern UNK_TYPE1 D_801BFAB0;
|
||||
// extern UNK_TYPE1 D_801BFAB8;
|
||||
// extern UNK_TYPE1 D_801BFAC4;
|
||||
// extern UNK_TYPE1 D_801BFACC;
|
||||
// extern UNK_TYPE1 D_801BFAD4;
|
||||
// extern UNK_TYPE2 D_801BFAF4;
|
||||
// extern UNK_TYPE2 D_801BFAF6;
|
||||
// extern UNK_TYPE2 D_801BFAF8;
|
||||
// extern UNK_TYPE2 D_801BFAFA;
|
||||
// extern UNK_TYPE1 D_801BFAFC;
|
||||
// extern UNK_TYPE1 D_801BFB04;
|
||||
// extern UNK_TYPE1 D_801BFB0C;
|
||||
// extern UNK_TYPE1 D_801BFB14;
|
||||
// extern UNK_TYPE1 D_801BFB1C;
|
||||
// extern UNK_TYPE1 D_801BFB24;
|
||||
// extern UNK_TYPE2 D_801BFB2C;
|
||||
// extern UNK_TYPE2 D_801BFB30;
|
||||
// extern UNK_TYPE2 D_801BFB34;
|
||||
// extern UNK_TYPE1 D_801BFB38;
|
||||
// extern UNK_TYPE1 D_801BFB6C;
|
||||
// extern UNK_TYPE2 D_801BFBCC;
|
||||
// extern UNK_TYPE2 D_801BFBD0;
|
||||
// extern UNK_TYPE2 D_801BFBD4;
|
||||
// extern UNK_TYPE2 D_801BFBD8;
|
||||
// extern UNK_TYPE2 D_801BFBDC;
|
||||
// extern UNK_TYPE2 D_801BFBE0;
|
||||
// extern UNK_TYPE2 D_801BFBE4;
|
||||
// extern UNK_TYPE2 D_801BFBE8;
|
||||
// extern UNK_TYPE1 D_801BFBEC;
|
||||
// extern UNK_TYPE1 D_801BFBF0;
|
||||
// extern UNK_TYPE1 D_801BFBF4;
|
||||
// extern UNK_TYPE1 D_801BFBF8;
|
||||
// extern UNK_TYPE1 D_801BFBFC;
|
||||
// extern UNK_TYPE1 D_801BFC00;
|
||||
// extern UNK_TYPE1 D_801BFC04;
|
||||
// extern UNK_TYPE1 D_801BFC08;
|
||||
// extern UNK_TYPE1 D_801BFC0C;
|
||||
// extern UNK_TYPE1 D_801BFC10;
|
||||
// extern UNK_TYPE1 D_801BFC14;
|
||||
// extern UNK_TYPE1 D_801BFC40;
|
||||
// extern UNK_TYPE2 D_801BFC50;
|
||||
// extern UNK_TYPE2 D_801BFC60;
|
||||
// extern UNK_TYPE2 D_801BFC62;
|
||||
// extern UNK_TYPE2 D_801BFC64;
|
||||
// extern UNK_TYPE2 D_801BFC6C;
|
||||
// extern UNK_TYPE2 D_801BFC7C;
|
||||
// extern UNK_TYPE1 D_801BFC8C;
|
||||
// extern UNK_TYPE2 D_801BFC98;
|
||||
// extern UNK_TYPE2 D_801BFCA8;
|
||||
// extern UNK_TYPE1 D_801BFCB8;
|
||||
// extern UNK_TYPE4 D_801BFCC4;
|
||||
// extern UNK_TYPE2 sTimerStateTimer;
|
||||
// extern UNK_TYPE2 sTimerDigits;
|
||||
// extern UNK_TYPE2 D_801BFCEA;
|
||||
// extern UNK_TYPE2 D_801BFCEC;
|
||||
// extern UNK_TYPE2 D_801BFCEE;
|
||||
// extern UNK_TYPE2 D_801BFCF0;
|
||||
// extern UNK_TYPE2 D_801BFCF2;
|
||||
// extern UNK_TYPE2 D_801BFCF4;
|
||||
// extern UNK_TYPE2 sTimerBeepSfxSeconds;
|
||||
// extern UNK_TYPE2 D_801BFCFC;
|
||||
// extern UNK_TYPE2 D_801BFD0C;
|
||||
// extern UNK_TYPE1 D_801BFD1C;
|
||||
// extern UNK_TYPE1 D_801BFD24;
|
||||
// extern UNK_TYPE1 D_801BFD2C;
|
||||
// extern UNK_TYPE1 D_801BFD40;
|
||||
// extern UNK_TYPE1 D_801BFD54;
|
||||
// extern UNK_TYPE1 D_801BFD64;
|
||||
// extern UNK_TYPE2 D_801BFD6C;
|
||||
// extern UNK_TYPE1 D_801BFD84;
|
||||
// extern UNK_TYPE1 D_801BFD8C;
|
||||
// extern UNK_TYPE1 D_801BFD94;
|
||||
// extern UNK_TYPE2 D_801BFD98;
|
||||
|
||||
extern FlexSkeletonHeader* gPlayerSkeletons[PLAYER_FORM_MAX];
|
||||
extern PlayerModelIndices gPlayerModelTypes[];
|
||||
@@ -951,8 +810,8 @@ extern KaleidoMgrOverlay* gKaleidoMgrCurOvl;
|
||||
extern Gfx D_801D0D00[];
|
||||
extern s32 gDbgCamEnabled;
|
||||
// extern UNK_TYPE1 D_801D0D54;
|
||||
// extern UNK_TYPE2 D_801D0D58;
|
||||
// extern UNK_TYPE2 D_801D0D5C;
|
||||
// extern UNK_TYPE2 sQuakeIndex;
|
||||
// extern UNK_TYPE2 sIsCameraUnderwater;
|
||||
extern Input* D_801D0D60;
|
||||
// extern UNK_TYPE2 D_801D0D64;
|
||||
// extern UNK_TYPE1 D_801D0D7A;
|
||||
@@ -1050,14 +909,9 @@ extern UNK_PTR D_801D5FE0;
|
||||
// extern UNK_TYPE1 D_801D5FE4;
|
||||
extern s32 gAudioCtxInitalized;
|
||||
// extern UNK_TYPE4 D_801D5FEC;
|
||||
// extern UNK_TYPE4 D_801D5FF0;
|
||||
// extern UNK_TYPE4 D_801D5FF4;
|
||||
// extern UNK_TYPE1 D_801D5FF8;
|
||||
// extern UNK_TYPE4 D_801D5FFC;
|
||||
extern UNK_PTR D_801D6000;
|
||||
// extern UNK_TYPE4 D_801D6190;
|
||||
// extern UNK_TYPE4 D_801D6194;
|
||||
// extern UNK_TYPE1 D_801D6200;
|
||||
extern u8 D_801D6200[0x400];
|
||||
extern u8 gIsLargeSfxBank[7];
|
||||
extern u8 D_801D6608[7];
|
||||
extern u8 gChannelsPerBank[4][7];
|
||||
@@ -2434,7 +2288,6 @@ extern u8 gSoundFontTable[];
|
||||
extern u8 gSequenceFontTable[];
|
||||
extern u8 gSequenceTable[];
|
||||
extern u8 gSampleBankTable[];
|
||||
extern u64 aspMainDataStart[];
|
||||
|
||||
// bss
|
||||
// extern UNK_TYPE1 D_801ED890;
|
||||
@@ -2472,26 +2325,17 @@ extern TriNorm D_801EDBB0;
|
||||
// extern UNK_TYPE1 D_801EDBD8;
|
||||
// extern UNK_TYPE1 D_801EDBDC;
|
||||
// extern UNK_TYPE1 D_801EDBE0;
|
||||
// extern UNK_TYPE1 D_801EDBF4;
|
||||
// extern UNK_TYPE1 D_801EDBF8;
|
||||
// extern UNK_TYPE1 D_801EDC00;
|
||||
// extern UNK_TYPE1 D_801EDC04;
|
||||
// extern UNK_TYPE1 D_801EDC08;
|
||||
// extern UNK_TYPE1 D_801EDC0C;
|
||||
// extern UNK_TYPE1 D_801EDC10;
|
||||
// extern UNK_TYPE1 D_801EDC14;
|
||||
// extern UNK_TYPE1 D_801EDC28;
|
||||
// extern UNK_TYPE1 D_801EDC30;
|
||||
// extern UNK_TYPE1 D_801EDC8C;
|
||||
// extern UNK_TYPE1 D_801EDC90;
|
||||
// extern UNK_TYPE1 D_801EDC92;
|
||||
// extern UNK_TYPE1 D_801EDC94;
|
||||
// extern UNK_TYPE1 D_801EDC96;
|
||||
// extern UNK_TYPE1 D_801EDDD0;
|
||||
// extern UNK_TYPE1 D_801EDDD4;
|
||||
// extern UNK_TYPE1 D_801EDDD8;
|
||||
// extern UNK_TYPE1 D_801EDDE0;
|
||||
// extern UNK_TYPE1 D_801EDDF0;
|
||||
|
||||
// extern s16 D_801EDBF0;
|
||||
// extern f32 D_801EDBF4;
|
||||
// extern f32 D_801EDBF8;
|
||||
// extern CameraCollision D_801EDC00;
|
||||
// extern PlayState* sCamPlayState;
|
||||
// extern SwingAnimation D_801EDC30[4];
|
||||
// extern Vec3f D_801EDDD0;
|
||||
// extern Vec3f D_801EDDE0;
|
||||
// extern Vec3f D_801EDDF0;
|
||||
|
||||
extern Vec3f D_801EDE00;
|
||||
extern Vec3f D_801EDE10;
|
||||
extern Vec3f D_801EDE20;
|
||||
@@ -2635,18 +2479,18 @@ extern s16 D_801F4E7A;
|
||||
extern void (*sKaleidoScopeUpdateFunc)(PlayState* play);
|
||||
extern void (*sKaleidoScopeDrawFunc)(PlayState* play);
|
||||
extern FaultAddrConvClient sKaleidoAreaFaultClient;
|
||||
// extern UNK_TYPE1 D_801F6C10;
|
||||
extern s16 sTransitionFillTimer;
|
||||
extern Input D_801F6C18;
|
||||
// extern UNK_TYPE1 D_801F6C30;
|
||||
// extern UNK_TYPE1 D_801F6D0C;
|
||||
extern UNK_TYPE4 D_801F6D10;
|
||||
// extern UNK_TYPE1 D_801F6D18;
|
||||
extern Color_RGBA8 D_801F6D30;
|
||||
// extern UNK_TYPE1 D_801F6D38;
|
||||
// extern UNK_TYPE4 D_801F6D4C;
|
||||
// extern UNK_TYPE1 D_801F6D50;
|
||||
extern u8 D_801F6DFC;
|
||||
// extern UNK_TYPE1 D_801F6DFD;
|
||||
extern FbDemoStruct sTrnsnUnk;
|
||||
extern u16* D_801F6D0C;
|
||||
extern s32 gTrnsnUnkState;
|
||||
extern VisMono sVisMono;
|
||||
extern Color_RGBA8_u32 gVisMonoColor;
|
||||
extern Struct_80140E80 D_801F6D38;
|
||||
extern Struct_80140E80* D_801F6D4C;
|
||||
extern BombersNotebook sBombersNotebook;
|
||||
extern u8 sBombersNotebookOpen;
|
||||
extern u8 sMotionBlurStatus;
|
||||
extern SlowlyTask D_801F6E00;
|
||||
extern s32 D_801F6FC0;
|
||||
extern StackEntry slowlyStackEntry;
|
||||
@@ -2720,8 +2564,7 @@ extern UNK_TYPE2 D_801FBBCC;
|
||||
extern UNK_TYPE2 D_801FBBCE;
|
||||
// extern UNK_TYPE1 D_801FBBD0;
|
||||
// extern UNK_TYPE1 D_801FBBD2;
|
||||
// extern UNK_TYPE1 D_801FBBD4;
|
||||
// extern UNK_TYPE1 D_801FBBE0;
|
||||
extern u8 D_801FBBD4;
|
||||
extern Vec3f D_801FBBF0;
|
||||
extern LineSegment Math3D_ColSphereTri_line;
|
||||
extern Vec3f Math3D_ColSphereTri_point;
|
||||
@@ -2932,10 +2775,10 @@ extern ActiveSequence gActiveSeqs[];
|
||||
// extern UNK_TYPE1 D_80200BCE;
|
||||
// extern UNK_TYPE1 D_80200BD0;
|
||||
extern AudioContext gAudioCtx; // at 0x80200C70
|
||||
extern void (*gCustomAudioUpdateFunction)(void);
|
||||
extern u32 (*gCustomAudioSeqFunction)(s8 value, SequenceChannel* channel);
|
||||
extern s32 (*gCustomAudioReverbFunction)(Sample*, s32, s8, s32);
|
||||
extern Acmd* (*gCustomAudioSynthFunction)(Acmd*, s32, s32);
|
||||
extern AudioCustomUpdateFunction gAudioCustomUpdateFunction;
|
||||
extern AudioCustomSeqFunction gAudioCustomSeqFunction;
|
||||
extern AudioCustomReverbFunction gAudioCustomReverbFunction;
|
||||
extern AudioCustomSynthFunction gAudioCustomSynthFunction;
|
||||
|
||||
// post-code buffers
|
||||
extern u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];
|
||||
@@ -2944,7 +2787,7 @@ extern GfxPool gGfxPools[2];
|
||||
extern u8 gAudioHeap[0x138000];
|
||||
extern u8 gSystemHeap[UNK_SIZE];
|
||||
|
||||
extern u8 D_80780000[0x4600];
|
||||
extern u8 gPictoPhotoI8[PICTO_PHOTO_SIZE];
|
||||
extern u8 D_80784600[0x56200];
|
||||
extern u16 gFramebuffer0[SCREEN_HEIGHT][SCREEN_WIDTH];
|
||||
|
||||
|
||||
+69
-188
@@ -36,6 +36,7 @@
|
||||
#include "z64cutscene.h"
|
||||
#include "z64dma.h"
|
||||
#include "z64effect.h"
|
||||
#include "z64interface.h"
|
||||
#include "z64item.h"
|
||||
#include "z64light.h"
|
||||
#include "z64map.h"
|
||||
@@ -245,9 +246,9 @@ typedef struct GraphicsContext {
|
||||
/* 0x2E4 */ u32 viConfigFeatures;
|
||||
/* 0x2E8 */ char unk_2E8[0x2];
|
||||
/* 0x2EA */ u8 updateViMode;
|
||||
/* 0x2EB */ u8 framebufferIdx;
|
||||
/* 0x2EB */ u8 framebufferIndex;
|
||||
/* 0x2EC */ void (*callback)(struct GraphicsContext*, u32);
|
||||
/* 0x2F0 */ u32 callbackParam;
|
||||
/* 0x2F0 */ u32 callbackArg;
|
||||
/* 0x2F4 */ f32 xScale;
|
||||
/* 0x2F8 */ f32 yScale;
|
||||
/* 0x2FC */ GfxMasterList* masterList;
|
||||
@@ -466,106 +467,6 @@ typedef struct {
|
||||
/* 0x2CA */ s16 unk_2CA; // Uses OwlWarpId enum for Owl Warp. Never set.
|
||||
} PauseContext; // size = 0x2D0
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ View view;
|
||||
/* 0x168 */ Vtx* actionVtx;
|
||||
/* 0x16C */ Vtx* beatingHeartVtx;
|
||||
/* 0x170 */ u8* parameterSegment;
|
||||
/* 0x174 */ u8* doActionSegment;
|
||||
/* 0x178 */ u8* iconItemSegment;
|
||||
/* 0x17C */ u8* mapSegment;
|
||||
/* 0x180 */ u8* unk_180;
|
||||
/* 0x184 */ DmaRequest dmaRequest_184;
|
||||
/* 0x1A4 */ DmaRequest dmaRequest_1A4;
|
||||
/* 0x1C4 */ DmaRequest dmaRequest_1C4;
|
||||
/* 0x1E4 */ OSMesgQueue loadQueue;
|
||||
/* 0x1FC */ OSMesg loadMsg;
|
||||
/* 0x200 */ Viewport viewport;
|
||||
/* 0x210 */ s16 unk_210;
|
||||
/* 0x212 */ u16 unk_212;
|
||||
/* 0x214 */ u16 unk_214;
|
||||
/* 0x218 */ f32 unk_218;
|
||||
/* 0x21C */ s16 unk_21C;
|
||||
/* 0x21E */ s16 bButtonDoAction;
|
||||
/* 0x220 */ s16 unk_220;
|
||||
/* 0x222 */ s16 unk_222;
|
||||
/* 0x224 */ s16 unk_224;
|
||||
/* 0x226 */ s16 lifeColorChange;
|
||||
/* 0x228 */ s16 lifeColorChangeDirection;
|
||||
/* 0x22A */ s16 beatingHeartPrim[3];
|
||||
/* 0x230 */ s16 beatingHeartEnv[3];
|
||||
/* 0x236 */ s16 heartsPrimR[2];
|
||||
/* 0x23A */ s16 heartsPrimG[2];
|
||||
/* 0x23E */ s16 heartsPrimB[2];
|
||||
/* 0x242 */ s16 heartsEnvR[2];
|
||||
/* 0x246 */ s16 heartsEnvG[2];
|
||||
/* 0x24A */ s16 heartsEnvB[2];
|
||||
/* 0x24E */ s16 health;
|
||||
/* 0x250 */ s16 unkTimer;
|
||||
/* 0x252 */ s16 lifeSizeChange;
|
||||
/* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing
|
||||
/* 0x256 */ s16 unk_256;
|
||||
/* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0
|
||||
/* 0x25A */ u8 numHorseBoosts;
|
||||
/* 0x25C */ u16 unk_25C;
|
||||
/* 0x25E */ u16 unk_25E;
|
||||
/* 0x260 */ u16 hbaAmmo;
|
||||
/* 0x262 */ u16 unk_262;
|
||||
/* 0x264 */ s16 unk_264;
|
||||
/* 0x266 */ s16 aAlpha;
|
||||
/* 0x268 */ s16 bAlpha;
|
||||
/* 0x26A */ s16 cLeftAlpha;
|
||||
/* 0x26C */ s16 cDownAlpha;
|
||||
/* 0x26E */ s16 cRightAlpha;
|
||||
/* 0x270 */ s16 healthAlpha;
|
||||
/* 0x272 */ s16 magicAlpha;
|
||||
/* 0x274 */ s16 minimapAlpha;
|
||||
/* 0x276 */ s16 startAlpha;
|
||||
/* 0x278 */ s16 unk_278;
|
||||
/* 0x27A */ s16 dungeonOrBossAreaMapIndex;
|
||||
/* 0x27C */ s16 mapRoomNum;
|
||||
/* 0x27E */ u8 unk_27E;
|
||||
/* 0x27F */ u8 unk_27F;
|
||||
/* 0x280 */ u8 unk_280;
|
||||
/* 0x282 */ s16 unk_282;
|
||||
/* 0x284 */ s16 unk_284;
|
||||
/* 0x286 */ s16 unk_286;
|
||||
/* 0x288 */ s16 unk_288;
|
||||
/* 0x28A */ s16 unk_28A[8];
|
||||
/* 0x29A */ u16 unk_29A[8];
|
||||
/* 0x2AA */ s16 unk_2AA[8];
|
||||
/* 0x2BC */ f32 unk_2BC[8];
|
||||
/* 0x2DC */ f32 unk_2DC[8];
|
||||
/* 0x2FC */ s16 unk_2FC[4];
|
||||
/* 0x304 */ s16 unk_304;
|
||||
/* 0x306 */ s16 unk_306;
|
||||
/* 0x308 */ s16 unk_308;
|
||||
/* 0x30A */ s16 unk_30A;
|
||||
/* 0x30C */ s16 unk_30C;
|
||||
struct {
|
||||
/* 0x30E */ u8 unk_30E; // "h_gauge"
|
||||
/* 0x30F */ u8 bButton;
|
||||
/* 0x310 */ u8 aButton;
|
||||
/* 0x311 */ u8 tradeItems;
|
||||
/* 0x312 */ u8 unk_312;
|
||||
/* 0x313 */ u8 unk_313;
|
||||
/* 0x314 */ u8 unk_314;
|
||||
/* 0x315 */ u8 songOfSoaring;
|
||||
/* 0x316 */ u8 songOfStorms;
|
||||
/* 0x317 */ u8 unk_317;
|
||||
/* 0x318 */ u8 pictographBox;
|
||||
/* 0x319 */ u8 all; // "another"; enables all item restrictions
|
||||
} restrictions; // size = 0xC
|
||||
/* 0x31A */ u8 storyState;
|
||||
/* 0x31B */ u8 storyType;
|
||||
/* 0x31C */ u8 unk_31C;
|
||||
/* 0x320 */ OSMesgQueue unk_320;
|
||||
/* 0x338 */ OSMesg unk_338;
|
||||
/* 0x33C */ void* unk_33C;
|
||||
/* 0x340 */ u32 unk_340;
|
||||
/* 0x344 */ u32 unk_344;
|
||||
} InterfaceContext; // size = 0x348
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ void* loadedRamAddr;
|
||||
/* 0x04 */ uintptr_t vromStart;
|
||||
@@ -584,10 +485,8 @@ typedef enum {
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 unk_0;
|
||||
/* 0x02 */ u16 timeIncrement;
|
||||
/* 0x04 */ f32 unk_4;
|
||||
/* 0x08 */ f32 unk_8;
|
||||
/* 0x0C */ f32 unk_C;
|
||||
/* 0x02 */ u16 sceneTimeSpeed;
|
||||
/* 0x04 */ Vec3f sunPos;
|
||||
/* 0x10 */ u8 unk_10;
|
||||
/* 0x11 */ u8 unk_11;
|
||||
/* 0x12 */ u8 unk_12;
|
||||
@@ -636,8 +535,8 @@ typedef struct {
|
||||
/* 0xE5 */ u8 fillScreen;
|
||||
/* 0xE6 */ u8 screenFillColor[4];
|
||||
/* 0xEA */ u8 sandstormState;
|
||||
/* 0xEB */ u8 unk_EB;
|
||||
/* 0xEC */ u8 unk_EC;
|
||||
/* 0xEB */ u8 sandstormPrimA;
|
||||
/* 0xEC */ u8 sandstormEnvA;
|
||||
/* 0xED */ u8 unk_ED;
|
||||
/* 0xEE */ u8 unk_EE[4];
|
||||
/* 0xF2 */ u8 unk_F2[8]; // [3] is used by both DemoKankyo and ObjectKankyo effect count
|
||||
@@ -721,64 +620,6 @@ typedef struct {
|
||||
/* 0x24 */ u32 flags;
|
||||
} PreRenderParams; // size = 0x28
|
||||
|
||||
#define TRANS_TRIGGER_OFF 0 // transition is not active
|
||||
#define TRANS_TRIGGER_START 20 // start transition (exiting an area)
|
||||
#define TRANS_TRIGGER_END -20 // transition is ending (arriving in a new area)
|
||||
|
||||
typedef enum TransitionMode {
|
||||
/* 0 */ TRANS_MODE_OFF,
|
||||
/* 1 */ TRANS_MODE_01,
|
||||
/* 2 */ TRANS_MODE_02,
|
||||
/* 3 */ TRANS_MODE_03,
|
||||
/* 4 */ TRANS_MODE_04,
|
||||
/* 5 */ TRANS_MODE_05,
|
||||
/* 6 */ TRANS_MODE_06,
|
||||
/* 7 */ TRANS_MODE_07,
|
||||
/* 8 */ TRANS_MODE_08,
|
||||
/* 9 */ TRANS_MODE_09,
|
||||
/* 10 */ TRANS_MODE_10,
|
||||
/* 11 */ TRANS_MODE_11,
|
||||
/* 12 */ TRANS_MODE_12,
|
||||
/* 13 */ TRANS_MODE_13,
|
||||
/* 14 */ TRANS_MODE_14,
|
||||
/* 15 */ TRANS_MODE_15,
|
||||
/* 16 */ TRANS_MODE_16,
|
||||
/* 17 */ TRANS_MODE_17
|
||||
} TransitionMode;
|
||||
|
||||
typedef enum TransitionType {
|
||||
/* 0 */ TRANS_TYPE_00,
|
||||
/* 1 */ TRANS_TYPE_01,
|
||||
/* 2 */ TRANS_TYPE_02,
|
||||
/* 3 */ TRANS_TYPE_03,
|
||||
/* 4 */ TRANS_TYPE_04,
|
||||
/* 5 */ TRANS_TYPE_05,
|
||||
/* 6 */ TRANS_TYPE_06,
|
||||
/* 7 */ TRANS_TYPE_07,
|
||||
/* 8 */ TRANS_TYPE_08,
|
||||
/* 9 */ TRANS_TYPE_09,
|
||||
/* 10 */ TRANS_TYPE_10,
|
||||
/* 11 */ TRANS_TYPE_11,
|
||||
/* 12 */ TRANS_TYPE_12,
|
||||
/* 13 */ TRANS_TYPE_13,
|
||||
/* 14 */ TRANS_TYPE_14,
|
||||
/* 15 */ TRANS_TYPE_15,
|
||||
/* 16 */ TRANS_TYPE_16,
|
||||
/* 17 */ TRANS_TYPE_17,
|
||||
/* 18 */ TRANS_TYPE_18,
|
||||
/* 19 */ TRANS_TYPE_19,
|
||||
/* 20 */ TRANS_TYPE_20,
|
||||
/* 21 */ TRANS_TYPE_21,
|
||||
/* 64 */ TRANS_TYPE_64 = 64,
|
||||
/* 70 */ TRANS_TYPE_70 = 70,
|
||||
/* 72 */ TRANS_TYPE_72 = 72,
|
||||
/* 73 */ TRANS_TYPE_73,
|
||||
/* 80 */ TRANS_TYPE_80 = 80,
|
||||
/* 86 */ TRANS_TYPE_86 = 86
|
||||
} TransitionType;
|
||||
|
||||
#define TRANS_NEXT_TYPE_DEFAULT 0xFF
|
||||
|
||||
typedef struct FaultAddrConvClient {
|
||||
/* 0x0 */ struct FaultAddrConvClient* next;
|
||||
/* 0x4 */ void* (*callback)(void*, void*);
|
||||
@@ -810,10 +651,6 @@ typedef struct {
|
||||
/* 0x844 */ void* fb;
|
||||
} FaultThreadStruct; // size = 0x848
|
||||
|
||||
typedef struct FireObj FireObj;
|
||||
|
||||
typedef struct FireObjLight FireObjLight;
|
||||
|
||||
struct GameState;
|
||||
|
||||
typedef void (*GameStateFunc)(struct GameState* gameState);
|
||||
@@ -869,15 +706,14 @@ typedef struct {
|
||||
/* 0x10 */ OSTime resetTime;
|
||||
} PreNmiBuff; // size = 0x18 (actually osAppNmiBuffer is 0x40 bytes large but the rest is unused)
|
||||
|
||||
typedef struct PlayState PlayState;
|
||||
|
||||
typedef s32 (*ColChkResetFunc)(PlayState*, Collider*);
|
||||
typedef void (*ColChkBloodFunc)(PlayState*, Collider*, Vec3f*);
|
||||
typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*);
|
||||
typedef void (*ColChkVsFunc)(PlayState*, CollisionCheckContext*, Collider*, Collider*);
|
||||
typedef s32 (*ColChkLineFunc)(PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
|
||||
typedef s32 (*ColChkResetFunc)(struct PlayState*, Collider*);
|
||||
typedef void (*ColChkBloodFunc)(struct PlayState*, Collider*, Vec3f*);
|
||||
typedef void (*ColChkApplyFunc)(struct PlayState*, CollisionCheckContext*, Collider*);
|
||||
typedef void (*ColChkVsFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Collider*);
|
||||
typedef s32 (*ColChkLineFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
|
||||
|
||||
typedef void(*room_draw_func)(PlayState* play, Room* room, u32 flags);
|
||||
typedef void(*room_draw_func)(struct PlayState* play, Room* room, u32 flags);
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 controllers; // bit 0 is set if controller 1 is plugged in, etc.
|
||||
@@ -918,11 +754,11 @@ typedef enum {
|
||||
STACK_STATUS_OVERFLOW = 2
|
||||
} StackStatus;
|
||||
|
||||
struct FireObjLight {
|
||||
typedef struct FireObjLight {
|
||||
/* 0x00 */ LightNode* light;
|
||||
/* 0x04 */ LightInfo lightInfo;
|
||||
/* 0x12 */ u8 lightParamsIndex;
|
||||
}; // size = 0x14
|
||||
} FireObjLight; // size = 0x14
|
||||
|
||||
#define OS_SC_RETRACE_MSG 1
|
||||
#define OS_SC_DONE_MSG 2
|
||||
@@ -961,7 +797,7 @@ typedef struct {
|
||||
/* 0x5E */ u16 age;
|
||||
} EffFootmark; // size = 0x60
|
||||
|
||||
struct FireObj {
|
||||
typedef struct FireObj {
|
||||
/* 0x00 */ Vec3f position;
|
||||
/* 0x0C */ f32 size;
|
||||
/* 0x10 */ f32 sizeInv;
|
||||
@@ -978,7 +814,7 @@ struct FireObj {
|
||||
/* 0x2A */ s16 ignitionDelay;
|
||||
/* 0x2C */ ColliderCylinder collision;
|
||||
/* 0x78 */ FireObjLight light;
|
||||
}; // size = 0x8B
|
||||
} FireObj; // size = 0x8B
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 seqId;
|
||||
@@ -1006,7 +842,7 @@ typedef struct {
|
||||
/* 0x0 */ u16 state;
|
||||
} GameOverContext; // size = 0x2
|
||||
|
||||
struct PlayState {
|
||||
typedef struct PlayState {
|
||||
/* 0x00000 */ GameState state;
|
||||
/* 0x000A4 */ s16 sceneId;
|
||||
/* 0x000A6 */ u8 sceneConfig;
|
||||
@@ -1053,12 +889,12 @@ struct PlayState {
|
||||
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, PlayerAnimationHeader* talkAnim, s32 animMode);
|
||||
/* 0x1879C */ s16 playerActorCsIds[10];
|
||||
/* 0x187B0 */ MtxF viewProjectionMtxF;
|
||||
/* 0x187F0 */ Vec3f unk_187F0;
|
||||
/* 0x187F0 */ Vec3f projectionMtxFDiagonal;
|
||||
/* 0x187FC */ MtxF billboardMtxF;
|
||||
/* 0x1883C */ Mtx* billboardMtx;
|
||||
/* 0x18840 */ u32 gameplayFrames;
|
||||
/* 0x18844 */ u8 unk_18844;
|
||||
/* 0x18845 */ u8 unk_18845;
|
||||
/* 0x18845 */ u8 haltAllActors;
|
||||
/* 0x18846 */ s16 numSetupActors;
|
||||
/* 0x18848 */ u8 numRooms;
|
||||
/* 0x1884C */ RomFile* roomList;
|
||||
@@ -1073,7 +909,7 @@ struct PlayState {
|
||||
/* 0x18870 */ void* specialEffects;
|
||||
/* 0x18874 */ u8 skyboxId;
|
||||
/* 0x18875 */ s8 transitionTrigger; // "fade_direction"
|
||||
/* 0x18876 */ s16 unk_18876;
|
||||
/* 0x18876 */ s16 worldCoverAlpha;
|
||||
/* 0x18878 */ s16 bgCoverAlpha;
|
||||
/* 0x1887A */ u16 nextEntrance;
|
||||
/* 0x1887C */ s8 unk_1887C; // shootingGalleryStatus?
|
||||
@@ -1087,12 +923,57 @@ struct PlayState {
|
||||
/* 0x18B49 */ u8 unk_18B49;
|
||||
/* 0x18B4A */ u8 transitionMode;
|
||||
/* 0x18B4C */ PreRender pauseBgPreRender;
|
||||
/* 0x18B9C */ char unk_18B9C[0x2B8];
|
||||
/* 0x18B9C */ char unk_18B9C[0x54];
|
||||
/* 0x18BF0 */ TransitionContext transitionCtx;
|
||||
/* 0x18E48 */ TransitionFade unk_18E48;
|
||||
/* 0x18E54 */ SceneTableEntry* loadedScene;
|
||||
/* 0x18E58 */ char unk_18E58[0x10];
|
||||
/* 0x18E58 */ void* unk_18E58;
|
||||
/* 0x18E5C */ TexturePtr pictoPhotoI8;
|
||||
/* 0x18E60 */ void* unk_18E60;
|
||||
/* 0x18E64 */ void* unk_18E64;
|
||||
/* 0x18E68 */ void* unk_18E68;
|
||||
/* 0x18E6C */ char unk_18E6C[0x3EC];
|
||||
}; // size = 0x19258
|
||||
} PlayState; // size = 0x19258
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 unk_00;
|
||||
/* 0x01 */ char unk_01[0x3F];
|
||||
/* 0x40 */ void* unk_40;
|
||||
/* 0x44 */ u32 unk_44;
|
||||
/* 0x48 */ u32 unk_48;
|
||||
/* 0x4C */ DmaRequest unk_4C;
|
||||
/* 0x6C */ OSMesgQueue unk_6C;
|
||||
/* 0x84 */ OSMesg unk_84[1];
|
||||
/* 0x88 */ void* unk_88;
|
||||
/* 0x8C */ uintptr_t unk_8C;
|
||||
/* 0x90 */ size_t unk_90;
|
||||
/* 0x94 */ s32 unk_94;
|
||||
/* 0x98 */ s32 unk_98;
|
||||
/* 0x9C */ s32 unk_9C;
|
||||
/* 0xA0 */ char unk_A0[0x4];
|
||||
/* 0xA4 */ s32 unk_A4;
|
||||
/* 0xA8 */ s32 unk_A8;
|
||||
} BombersNotebook; // size = 0xAC
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PICTO_PHOTO_STATE_OFF,
|
||||
/* 1 */ PICTO_PHOTO_STATE_SETUP,
|
||||
/* 2 */ PICTO_PHOTO_STATE_PROCESS,
|
||||
/* 3 */ PICTO_PHOTO_STATE_READY
|
||||
} PictoPhotoState;
|
||||
|
||||
// OoT's TransitionUnk
|
||||
typedef struct {
|
||||
/* 0x00 */ char unk_00[0xDC];
|
||||
} FbDemoStruct; // size = 0xDC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 mode;
|
||||
/* 0x04 */ f32 scale;
|
||||
/* 0x08 */ f32 lodProportion; // expected to be between 0.0f and 1.0f
|
||||
/* 0x0C */ Color_RGBA8_u32 primColor;
|
||||
/* 0x10 */ Color_RGBA8_u32 envColor;
|
||||
} Struct_80140E80; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk0;
|
||||
|
||||
+12
-3
@@ -289,8 +289,17 @@ typedef struct EnAObj {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ EnAObjActionFunc actionFunc;
|
||||
/* 0x148 */ ColliderCylinder collision;
|
||||
/* 0x194 */ UNK_TYPE1 pad194[0x14];
|
||||
} EnAObj; // size = 0x1A8
|
||||
} EnAObj; // size = 0x194
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ AOBJ_SIGNPOST_OBLONG,
|
||||
/* 1 */ AOBJ_SIGNPOST_ARROW,
|
||||
} AObjType;
|
||||
|
||||
#define AOBJ_GET_TEXTID(thisx) ((((thisx)->params >> 8) & 0xFF) | 0x300)
|
||||
#define AOBJ_GET_TYPE(thisx) (((thisx)->params & 0xFF) - 9)
|
||||
|
||||
#define AOBJ_PARAMS(textId, type) ((((textId - 0x300) & 0xFF) << 8) | (type + 9))
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ ACTORCAT_SWITCH,
|
||||
@@ -310,7 +319,7 @@ typedef enum {
|
||||
|
||||
#define ACTORCTX_FLAG_0 (1 << 0)
|
||||
#define ACTORCTX_FLAG_1 (1 << 1)
|
||||
#define ACTORCTX_FLAG_2 (1 << 2)
|
||||
#define ACTORCTX_FLAG_PICTO_BOX_ON (1 << 2)
|
||||
#define ACTORCTX_FLAG_3 (1 << 3)
|
||||
#define ACTORCTX_FLAG_4 (1 << 4)
|
||||
#define ACTORCTX_FLAG_5 (1 << 5)
|
||||
|
||||
+52
-34
@@ -1,7 +1,7 @@
|
||||
#ifndef Z64_AUDIO_H
|
||||
#define Z64_AUDIO_H
|
||||
|
||||
#define AUDIO_MK_CMD(b0,b1,b2,b3) ((((b0) & 0xFF) << 0x18) | (((b1) & 0xFF) << 0x10) | (((b2) & 0xFF) << 0x8) | (((b3) & 0xFF) << 0))
|
||||
#include "audiothread_cmd.h"
|
||||
|
||||
#define NO_LAYER ((SequenceLayer*)(-1))
|
||||
|
||||
@@ -11,16 +11,25 @@
|
||||
#define SEQ_NUM_CHANNELS 16
|
||||
#define SEQ_IO_VAL_NONE -1
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ AUDIO_CUSTOM_FUNCTION_SEQ_0,
|
||||
/* 0x01 */ AUDIO_CUSTOM_FUNCTION_SEQ_1,
|
||||
/* 0x02 */ AUDIO_CUSTOM_FUNCTION_SEQ_2,
|
||||
/* 0x03 */ AUDIO_CUSTOM_FUNCTION_SEQ_3,
|
||||
/* 0xFE */ AUDIO_CUSTOM_FUNCTION_SYNTH = 0xFE,
|
||||
/* 0xFF */ AUDIO_CUSTOM_FUNCTION_REVERB
|
||||
} AudioCustomFunctions;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SEQPLAYER_STATE_0,
|
||||
/* 1 */ SEQPLAYER_STATE_1, // Fading in
|
||||
/* 2 */ SEQPLAYER_STATE_2 // Fading out
|
||||
/* 1 */ SEQPLAYER_STATE_FADE_IN,
|
||||
/* 2 */ SEQPLAYER_STATE_FADE_OUT
|
||||
} SeqPlayerState;
|
||||
|
||||
#define MAX_CHANNELS_PER_BANK 3
|
||||
|
||||
#define MUTE_FLAGS_3 (1 << 3) // prevent further noteSubEus from playing
|
||||
#define MUTE_FLAGS_4 (1 << 4) // stop something in seqLayer scripts
|
||||
#define MUTE_FLAGS_STOP_SAMPLES (1 << 3) // prevent further noteSubEus from playing
|
||||
#define MUTE_FLAGS_STOP_LAYER (1 << 4) // stop something in seqLayer scripts
|
||||
#define MUTE_FLAGS_SOFTEN (1 << 5) // lower volume, by default to half
|
||||
#define MUTE_FLAGS_STOP_NOTES (1 << 6) // prevent further notes from playing
|
||||
#define MUTE_FLAGS_STOP_SCRIPT (1 << 7) // stop processing sequence/channel scripts
|
||||
@@ -58,6 +67,10 @@ typedef enum {
|
||||
|
||||
#define REVERB_INDEX_NONE -1
|
||||
|
||||
// To be used with AudioThread_CountAndReleaseNotes()
|
||||
#define AUDIO_NOTE_RELEASE (1 << 0)
|
||||
#define AUDIO_NOTE_SAMPLE_NOTES (1 << 1)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ REVERB_DATA_TYPE_SETTINGS, // Reverb Settings (Init)
|
||||
/* 1 */ REVERB_DATA_TYPE_DELAY, // Reverb Delay (numSamples)
|
||||
@@ -353,11 +366,11 @@ typedef struct {
|
||||
/* 0x007 */ s8 playerIndex;
|
||||
/* 0x008 */ u16 tempo; // tatums per minute
|
||||
/* 0x00A */ u16 tempoAcc;
|
||||
/* 0x00C */ s16 unk_0C;
|
||||
/* 0x00C */ s16 tempoChange;
|
||||
/* 0x00E */ s16 transposition;
|
||||
/* 0x010 */ u16 delay;
|
||||
/* 0x012 */ u16 fadeTimer;
|
||||
/* 0x014 */ u16 fadeTimerUnkEu;
|
||||
/* 0x014 */ u16 storedFadeTimer;
|
||||
/* 0x016 */ u16 unk_16;
|
||||
/* 0x018 */ u8* seqData;
|
||||
/* 0x01C */ f32 fadeVolume;
|
||||
@@ -374,8 +387,8 @@ typedef struct {
|
||||
/* 0x09C */ NotePool notePool;
|
||||
/* 0x0DC */ s32 skipTicks;
|
||||
/* 0x0E0 */ u32 scriptCounter;
|
||||
/* 0x0E4 */ char unk_E4[0x74]; // unused struct members for sequence/sound font dma management, according to sm64 decomp
|
||||
/* 0x158 */ s8 soundScriptIO[8];
|
||||
/* 0x0E4 */ UNK_TYPE1 unk_E4[0x74]; // unused struct members for sequence/sound font dma management, according to sm64 decomp
|
||||
/* 0x158 */ s8 seqScriptIO[8];
|
||||
} SequencePlayer; // size = 0x160
|
||||
|
||||
typedef struct {
|
||||
@@ -387,7 +400,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
union {
|
||||
struct {
|
||||
/* 0x00 */ u8 unk_0b80 : 1;
|
||||
/* 0x00 */ u8 unused : 1;
|
||||
/* 0x00 */ u8 hang : 1;
|
||||
/* 0x00 */ u8 decay : 1;
|
||||
/* 0x00 */ u8 release : 1;
|
||||
@@ -402,7 +415,7 @@ typedef struct {
|
||||
/* 0x0C */ f32 fadeOutVel;
|
||||
/* 0x10 */ f32 current;
|
||||
/* 0x14 */ f32 target;
|
||||
/* 0x18 */ char unk_18[4];
|
||||
/* 0x18 */ UNK_TYPE1 unk_18[4];
|
||||
/* 0x1C */ EnvelopePoint* envelope;
|
||||
} AdsrState; // size = 0x20
|
||||
|
||||
@@ -434,11 +447,11 @@ typedef struct {
|
||||
|
||||
typedef struct VibratoSubStruct {
|
||||
/* 0x0 */ u16 vibratoRateStart;
|
||||
/* 0x2 */ u16 vibratoExtentStart;
|
||||
/* 0x2 */ u16 vibratoDepthStart;
|
||||
/* 0x4 */ u16 vibratoRateTarget;
|
||||
/* 0x6 */ u16 vibratoExtentTarget;
|
||||
/* 0x6 */ u16 vibratoDepthTarget;
|
||||
/* 0x8 */ u16 vibratoRateChangeDelay;
|
||||
/* 0xA */ u16 vibratoExtentChangeDelay;
|
||||
/* 0xA */ u16 vibratoDepthChangeDelay;
|
||||
/* 0xC */ u16 vibratoDelay;
|
||||
} VibratoSubStruct; // size = 0xE
|
||||
|
||||
@@ -447,7 +460,7 @@ typedef struct SequenceChannel {
|
||||
/* 0x00 */ u8 enabled : 1;
|
||||
/* 0x00 */ u8 finished : 1;
|
||||
/* 0x00 */ u8 stopScript : 1;
|
||||
/* 0x00 */ u8 stopSomething2 : 1; // sets SequenceLayer.stopSomething
|
||||
/* 0x00 */ u8 muted : 1; // sets SequenceLayer.muted
|
||||
/* 0x00 */ u8 hasInstrument : 1;
|
||||
/* 0x00 */ u8 stereoHeadsetEffects : 1;
|
||||
/* 0x00 */ u8 largeNotes : 1; // notes specify duration and velocity
|
||||
@@ -475,7 +488,7 @@ typedef struct SequenceChannel {
|
||||
/* 0x0E */ u8 gateTimeRandomVariance;
|
||||
/* 0x0F */ u8 combFilterSize;
|
||||
/* 0x10 */ u8 surroundEffectIndex;
|
||||
/* 0x11 */ u8 unk_11;
|
||||
/* 0x11 */ u8 channelIndex;
|
||||
/* 0x12 */ VibratoSubStruct vibrato;
|
||||
/* 0x20 */ u16 delay;
|
||||
/* 0x22 */ u16 combFilterGain;
|
||||
@@ -497,7 +510,7 @@ typedef struct SequenceChannel {
|
||||
/* 0x64 */ SeqScriptState scriptState;
|
||||
/* 0x80 */ AdsrSettings adsr;
|
||||
/* 0x88 */ NotePool notePool;
|
||||
/* 0xC8 */ s8 soundScriptIO[8]; // bridge between sound script and audio lib, "io ports"
|
||||
/* 0xC8 */ s8 seqScriptIO[8]; // bridge between sound script and audio lib, "io ports"
|
||||
/* 0xD0 */ u8* sfxState; // SfxChannelState
|
||||
/* 0xD4 */ s16* filter;
|
||||
/* 0xD8 */ StereoData stereoData;
|
||||
@@ -509,7 +522,7 @@ typedef struct SequenceChannel {
|
||||
typedef struct SequenceLayer {
|
||||
/* 0x00 */ u8 enabled : 1;
|
||||
/* 0x00 */ u8 finished : 1;
|
||||
/* 0x00 */ u8 stopSomething : 1;
|
||||
/* 0x00 */ u8 muted : 1;
|
||||
/* 0x00 */ u8 continuousNotes : 1; // keep the same note for consecutive notes with the same sound
|
||||
/* 0x00 */ u8 bit3 : 1; // "loaded"?
|
||||
/* 0x00 */ u8 ignoreDrumPan : 1;
|
||||
@@ -605,11 +618,11 @@ typedef struct {
|
||||
/* 0x00 */ struct VibratoSubStruct* vibSubStruct; // Something else?
|
||||
/* 0x04 */ u32 time;
|
||||
/* 0x08 */ s16* curve;
|
||||
/* 0x0C */ f32 extent;
|
||||
/* 0x0C */ f32 depth;
|
||||
/* 0x10 */ f32 rate;
|
||||
/* 0x14 */ u8 active;
|
||||
/* 0x16 */ u16 rateChangeTimer;
|
||||
/* 0x18 */ u16 extentChangeTimer;
|
||||
/* 0x18 */ u16 depthChangeTimer;
|
||||
/* 0x1A */ u16 delay;
|
||||
} VibratoState; // size = 0x1C
|
||||
|
||||
@@ -984,7 +997,7 @@ typedef struct {
|
||||
/* 0x28B0 */ s32 sampleDmaBufSize;
|
||||
/* 0x28B4 */ s32 maxAudioCmds;
|
||||
/* 0x28B8 */ s32 numNotes;
|
||||
/* 0x2898 */ s16 tempoInternalToExternal;
|
||||
/* 0x2898 */ s16 maxTempo;
|
||||
/* 0x28BE */ s8 soundMode;
|
||||
/* 0x28C0 */ s32 totalTaskCount; // The total number of times the top-level function on the audio thread is run since the last audio reset
|
||||
/* 0x28C4 */ s32 curAudioFrameDmaCount;
|
||||
@@ -997,13 +1010,13 @@ typedef struct {
|
||||
/* 0x2980 */ f32 unk_2960;
|
||||
/* 0x2984*/ s32 refreshRate;
|
||||
/* 0x2988 */ s16* aiBuffers[3]; // Pointers to the audio buffer allocated on the initPool contained in the audio heap. Stores fully processed digital audio before transferring to the audio interface (AI)
|
||||
/* 0x2994 */ s16 aiBufNumSamples[3]; // Number of samples to transfer to the audio interface buffer
|
||||
/* 0x2994 */ s16 numSamplesPerFrame[3]; // Number of samples to transfer to the audio interface buffer
|
||||
/* 0x299C */ u32 audioRandom;
|
||||
/* 0x29A0 */ s32 audioErrorFlags;
|
||||
/* 0x29A4 */ volatile u32 resetTimer;
|
||||
/* 0x29A8 */ u32 (*unk_29A8[4])(s8 value, SequenceChannel* channel);
|
||||
/* 0x29A8 */ u32 (*customSeqFunctions[4])(s8 value, SequenceChannel* channel);
|
||||
/* 0x29B8 */ s8 unk_29B8;
|
||||
/* 0x29BC */ s32 unk_29BC; // sMaxAbiCmdCnt
|
||||
/* 0x29BC */ s32 numAbiCmdsMax; // sMaxAbiCmdCnt
|
||||
/* 0x29C0 */ AudioAllocPool sessionPool; // A sub-pool to main pool, contains all sub-pools and data that changes every audio reset
|
||||
/* 0x29D0 */ AudioAllocPool externalPool; // pool allocated on an external device. Never used in game
|
||||
/* 0x29E0 */ AudioAllocPool initPool; // A sub-pool to the main pool, contains all sub-pools and data that persists every audio reset
|
||||
@@ -1027,7 +1040,7 @@ typedef struct {
|
||||
/* 0x4398 */ u8 fontLoadStatus[0x30];
|
||||
/* 0x43C8 */ u8 seqLoadStatus[0x80];
|
||||
/* 0x4448 */ volatile u8 resetStatus;
|
||||
/* 0x4449 */ u8 audioResetSpecIdToLoad;
|
||||
/* 0x4449 */ u8 specId;
|
||||
/* 0x444C */ s32 audioResetFadeOutFramesLeft;
|
||||
/* 0x4450 */ f32* adsrDecayTable; // A table on the audio heap that stores decay rates used for ADSR
|
||||
/* 0x4454 */ u8* audioHeap;
|
||||
@@ -1039,21 +1052,21 @@ typedef struct {
|
||||
/* 0x7924 */ s32 sampleStateOffset; // Start of the list of sample states for this update. Resets after each audio frame.
|
||||
/* 0x7928 */ AudioListItem layerFreeList;
|
||||
/* 0x7938 */ NotePool noteFreeLists;
|
||||
/* 0x7978 */ u8 cmdWritePos;
|
||||
/* 0x7979 */ u8 cmdReadPos;
|
||||
/* 0x797A */ u8 cmdQueueFinished;
|
||||
/* 0x797C */ u16 activeChannelsFlags[5]; // bit-packed for 16 channels. Only channels with bit turned on will be processed
|
||||
/* 0x7978 */ u8 threadCmdWritePos;
|
||||
/* 0x7979 */ u8 threadCmdReadPos;
|
||||
/* 0x797A */ u8 threadCmdQueueFinished;
|
||||
/* 0x797C */ u16 threadCmdChannelMask[5]; // bit-packed for 16 channels. When processing an audio thread channel command on all channels, only process channels with their bit set.
|
||||
/* 0x7988 */ OSMesgQueue* audioResetQueueP;
|
||||
/* 0x798C */ OSMesgQueue* taskStartQueueP;
|
||||
/* 0x7990 */ OSMesgQueue* cmdProcQueueP;
|
||||
/* 0x7990 */ OSMesgQueue* threadCmdProcQueueP;
|
||||
/* 0x7994 */ OSMesgQueue taskStartQueue;
|
||||
/* 0x79AC */ OSMesgQueue cmdProcQueue;
|
||||
/* 0x79AC */ OSMesgQueue threadCmdProcQueue;
|
||||
/* 0x79C4 */ OSMesgQueue audioResetQueue;
|
||||
/* 0x79DC */ OSMesg taskStartMsgs[1];
|
||||
/* 0x79E0 */ OSMesg audioResetMesgs[1];
|
||||
/* 0x79E4 */ OSMesg cmdProcMsgs[4];
|
||||
/* 0x79F4 */ AudioCmd cmdBuf[0x100]; // Audio commands used to transfer audio requests from the graph thread to the audio thread
|
||||
/* 0x81F4 */ char unk_81F4[4];
|
||||
/* 0x79E4 */ OSMesg threadCmdProcMsgBuf[4];
|
||||
/* 0x79F4 */ AudioCmd threadCmdBuf[0x100]; // Audio commands used to transfer audio requests from the graph thread to the audio thread
|
||||
/* 0x81F4 */ UNK_TYPE1 unk_81F4[4];
|
||||
} AudioContext; // size = 0x81F8
|
||||
|
||||
typedef struct {
|
||||
@@ -1255,4 +1268,9 @@ typedef struct {
|
||||
/* 0x2 */ u16 params;
|
||||
} SfxParams; // size = 0x4
|
||||
|
||||
typedef void (*AudioCustomUpdateFunction)(void);
|
||||
typedef u32 (*AudioCustomSeqFunction)(s8 value, SequenceChannel* channel);
|
||||
typedef s32 (*AudioCustomReverbFunction)(Sample*, s32, s8, s32);
|
||||
typedef Acmd* (*AudioCustomSynthFunction)(Acmd*, s32, s32);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,216 @@
|
||||
#ifndef Z64INTERFACE_H
|
||||
#define Z64INTERFACE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64view.h"
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ A_BTN_STATE_0,
|
||||
/* 1 */ A_BTN_STATE_1,
|
||||
/* 2 */ A_BTN_STATE_2,
|
||||
/* 3 */ A_BTN_STATE_3,
|
||||
/* 4 */ A_BTN_STATE_4
|
||||
} AButtonState;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ DO_ACTION_ATTACK,
|
||||
/* 0x01 */ DO_ACTION_CHECK,
|
||||
/* 0x02 */ DO_ACTION_ENTER,
|
||||
/* 0x03 */ DO_ACTION_RETURN,
|
||||
/* 0x04 */ DO_ACTION_OPEN,
|
||||
/* 0x05 */ DO_ACTION_JUMP,
|
||||
/* 0x06 */ DO_ACTION_DECIDE,
|
||||
/* 0x07 */ DO_ACTION_DIVE,
|
||||
/* 0x08 */ DO_ACTION_FASTER,
|
||||
/* 0x09 */ DO_ACTION_THROW,
|
||||
/* 0x0A */ DO_ACTION_NONE, // in do_action_static, the texture at this position is NAVI, however this value is in practice the "No Action" value
|
||||
/* 0x0B */ DO_ACTION_CLIMB,
|
||||
/* 0x0C */ DO_ACTION_DROP,
|
||||
/* 0x0D */ DO_ACTION_DOWN,
|
||||
/* 0x0E */ DO_ACTION_QUIT,
|
||||
/* 0x0F */ DO_ACTION_SPEAK,
|
||||
/* 0x10 */ DO_ACTION_NEXT,
|
||||
/* 0x11 */ DO_ACTION_GRAB,
|
||||
/* 0x12 */ DO_ACTION_STOP,
|
||||
/* 0x13 */ DO_ACTION_PUTAWAY,
|
||||
/* 0x14 */ DO_ACTION_REEL,
|
||||
/* 0x15 */ DO_ACTION_INFO,
|
||||
/* 0x16 */ DO_ACTION_WARP,
|
||||
/* 0x17 */ DO_ACTION_SNAP,
|
||||
/* 0x18 */ DO_ACTION_EXPLODE,
|
||||
/* 0x19 */ DO_ACTION_DANCE,
|
||||
/* 0x1A */ DO_ACTION_MARCH,
|
||||
/* 0x1B */ DO_ACTION_1,
|
||||
/* 0x1C */ DO_ACTION_2,
|
||||
/* 0x1D */ DO_ACTION_3,
|
||||
/* 0x1E */ DO_ACTION_4,
|
||||
/* 0x1F */ DO_ACTION_5,
|
||||
/* 0x20 */ DO_ACTION_6,
|
||||
/* 0x21 */ DO_ACTION_7,
|
||||
/* 0x22 */ DO_ACTION_8,
|
||||
/* 0x23 */ DO_ACTION_CURL,
|
||||
/* 0x24 */ DO_ACTION_SURFACE,
|
||||
/* 0x25 */ DO_ACTION_SWIM,
|
||||
/* 0x26 */ DO_ACTION_PUNCH,
|
||||
/* 0x27 */ DO_ACTION_POUND,
|
||||
/* 0x28 */ DO_ACTION_HOOK,
|
||||
/* 0x29 */ DO_ACTION_SHOOT,
|
||||
/* 0x2A */ DO_ACTION_MAX
|
||||
} DoAction;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ MINIGAME_STATE_NONE,
|
||||
/* 1 */ MINIGAME_STATE_COUNTDOWN_SETUP_3,
|
||||
/* 2 */ MINIGAME_STATE_COUNTDOWN_3,
|
||||
/* 3 */ MINIGAME_STATE_COUNTDOWN_SETUP_2,
|
||||
/* 4 */ MINIGAME_STATE_COUNTDOWN_2,
|
||||
/* 5 */ MINIGAME_STATE_COUNTDOWN_SETUP_1,
|
||||
/* 6 */ MINIGAME_STATE_COUNTDOWN_1,
|
||||
/* 7 */ MINIGAME_STATE_COUNTDOWN_SETUP_GO,
|
||||
/* 8 */ MINIGAME_STATE_COUNTDOWN_GO,
|
||||
/* 20 */ MINIGAME_STATE_NO_COUNTDOWN_SETUP = 20,
|
||||
/* 21 */ MINIGAME_STATE_NO_COUNTDOWN,
|
||||
/* 30 */ MINIGAME_STATE_PLAYING = 30
|
||||
} MinigameState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PERFECT_LETTERS_TYPE_OFF,
|
||||
/* 1 */ PERFECT_LETTERS_TYPE_1,
|
||||
/* 2 */ PERFECT_LETTERS_TYPE_2,
|
||||
/* 3 */ PERFECT_LETTERS_TYPE_3
|
||||
} PerfectLettersType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PERFECT_LETTERS_STATE_OFF,
|
||||
/* 1 */ PERFECT_LETTERS_STATE_INIT,
|
||||
/* 2 */ PERFECT_LETTERS_STATE_ENTER,
|
||||
/* 3 */ PERFECT_LETTERS_STATE_STATIONARY, // Display for type 1
|
||||
/* 4 */ PERFECT_LETTERS_STATE_SPREAD, // Exit for type 1
|
||||
/* 5 */ PERFECT_LETTERS_STATE_DISPLAY,
|
||||
/* 6 */ PERFECT_LETTERS_STATE_EXIT
|
||||
} PerfectLettersState;
|
||||
|
||||
#define PERFECT_LETTERS_NUM_LETTERS 8
|
||||
#define PERFECT_LETTERS_ANGLE_PER_LETTER (0x10000 / PERFECT_LETTERS_NUM_LETTERS)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ STORY_DMA_IDLE,
|
||||
/* 1 */ STORY_DMA_LOADING,
|
||||
/* 2 */ STORY_DMA_DONE
|
||||
} StoryLoadStatus;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ STORY_STATE_OFF,
|
||||
/* 1 */ STORY_STATE_INIT,
|
||||
/* 2 */ STORY_STATE_IDLE,
|
||||
/* 3 */ STORY_STATE_DESTROY,
|
||||
/* 4 */ STORY_STATE_SETUP_IDLE,
|
||||
/* 5 */ STORY_STATE_FADE_OUT,
|
||||
/* 6 */ STORY_STATE_FADE_IN
|
||||
} StoryState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ STORY_TYPE_MASK_FESTIVAL,
|
||||
/* 1 */ STORY_TYPE_GIANTS_LEAVING
|
||||
} StoryType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ View view;
|
||||
/* 0x168 */ Vtx* actionVtx;
|
||||
/* 0x16C */ Vtx* beatingHeartVtx;
|
||||
/* 0x170 */ u8* parameterSegment;
|
||||
/* 0x174 */ u8* doActionSegment;
|
||||
/* 0x178 */ u8* iconItemSegment;
|
||||
/* 0x17C */ u8* mapSegment;
|
||||
/* 0x180 */ u8* unk_180; // unused segment?
|
||||
/* 0x184 */ DmaRequest dmaRequest;
|
||||
/* 0x1A4 */ UNK_TYPE1 unk_1A4[0x40]; // likely 2 DmaRequest
|
||||
/* 0x1E4 */ OSMesgQueue loadQueue;
|
||||
/* 0x1FC */ OSMesg loadMsg;
|
||||
/* 0x200 */ Viewport viewport;
|
||||
/* 0x210 */ s16 aButtonState;
|
||||
/* 0x212 */ u16 unk_212;
|
||||
/* 0x214 */ u16 aButtonDoAction;
|
||||
/* 0x218 */ f32 aButtonRoll;
|
||||
/* 0x21C */ s16 unk_21C;
|
||||
/* 0x21E */ s16 bButtonDoAction;
|
||||
/* 0x220 */ s16 unk_220;
|
||||
/* 0x222 */ s16 unk_222;
|
||||
/* 0x224 */ s16 unk_224;
|
||||
/* 0x226 */ s16 lifeColorChange;
|
||||
/* 0x228 */ s16 lifeColorChangeDirection;
|
||||
/* 0x22A */ s16 beatingHeartPrim[3];
|
||||
/* 0x230 */ s16 beatingHeartEnv[3];
|
||||
/* 0x236 */ s16 heartsPrimR[2];
|
||||
/* 0x23A */ s16 heartsPrimG[2];
|
||||
/* 0x23E */ s16 heartsPrimB[2];
|
||||
/* 0x242 */ s16 heartsEnvR[2];
|
||||
/* 0x246 */ s16 heartsEnvG[2];
|
||||
/* 0x24A */ s16 heartsEnvB[2];
|
||||
/* 0x24E */ s16 health;
|
||||
/* 0x250 */ s16 healthTimer;
|
||||
/* 0x252 */ s16 lifeSizeChange;
|
||||
/* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing
|
||||
/* 0x256 */ s16 unk_256;
|
||||
/* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0
|
||||
/* 0x25A */ u8 numHorseBoosts;
|
||||
/* 0x25C */ u16 minigamePoints; // Points to add to the minigame score. Reset to 0 every frame.
|
||||
/* 0x25E */ u16 minigameHiddenPoints; // Points to add to the secondary set of minigame points not displayed. Reset to 0 every frame.
|
||||
/* 0x260 */ u16 minigameAmmo;
|
||||
/* 0x262 */ u16 minigameUnusedPoints; // Associated with other minigame points, unused
|
||||
/* 0x264 */ s16 screenFillAlpha;
|
||||
/* 0x266 */ s16 aAlpha;
|
||||
/* 0x268 */ s16 bAlpha;
|
||||
/* 0x26A */ s16 cLeftAlpha;
|
||||
/* 0x26C */ s16 cDownAlpha;
|
||||
/* 0x26E */ s16 cRightAlpha;
|
||||
/* 0x270 */ s16 healthAlpha;
|
||||
/* 0x272 */ s16 magicAlpha;
|
||||
/* 0x274 */ s16 minimapAlpha;
|
||||
/* 0x276 */ s16 startAlpha;
|
||||
/* 0x278 */ s16 unk_278;
|
||||
/* 0x27A */ s16 dungeonOrBossAreaMapIndex;
|
||||
/* 0x27C */ s16 mapRoomNum;
|
||||
/* 0x27E */ u8 unk_27E;
|
||||
/* 0x27F */ u8 unk_27F;
|
||||
/* 0x280 */ u8 minigameState;
|
||||
/* 0x282 */ s16 minigameCountdownAlpha;
|
||||
/* 0x284 */ s16 minigameCountdownScale;
|
||||
/* 0x286 */ s16 perfectLettersOn;
|
||||
/* 0x288 */ s16 perfectLettersType;
|
||||
/* 0x28A */ s16 perfectLettersState[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x29A */ u16 perfectLettersAngles[PERFECT_LETTERS_NUM_LETTERS]; // Angle that follows the projectory of an ellipse
|
||||
/* 0x2AA */ s16 perfectLettersOffsetX[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2BC */ f32 perfectLettersSemiAxisX[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2DC */ f32 perfectLettersSemiAxisY[PERFECT_LETTERS_NUM_LETTERS];
|
||||
/* 0x2FC */ s16 perfectLettersPrimColor[4];
|
||||
/* 0x304 */ s16 perfectLettersCount;
|
||||
/* 0x306 */ s16 perfectLettersUnused;
|
||||
/* 0x308 */ s16 perfectLettersColorIndex;
|
||||
/* 0x30A */ s16 perfectLettersColorTimer;
|
||||
/* 0x30C */ s16 perfectLettersTimer;
|
||||
struct {
|
||||
/* 0x30E */ u8 hGauge;
|
||||
/* 0x30F */ u8 bButton;
|
||||
/* 0x310 */ u8 aButton;
|
||||
/* 0x311 */ u8 tradeItems; // Includes deed trade quest, anju/kafei trade quest, bottles, and ocarina
|
||||
/* 0x312 */ u8 songOfTime;
|
||||
/* 0x313 */ u8 songOfDoubleTime;
|
||||
/* 0x314 */ u8 invSongOfTime;
|
||||
/* 0x315 */ u8 songOfSoaring;
|
||||
/* 0x316 */ u8 songOfStorms;
|
||||
/* 0x317 */ u8 masks;
|
||||
/* 0x318 */ u8 pictoBox;
|
||||
/* 0x319 */ u8 all; // "another"; enables all item restrictions
|
||||
} restrictions; // size = 0xC
|
||||
/* 0x31A */ u8 storyState;
|
||||
/* 0x31B */ u8 storyType;
|
||||
/* 0x31C */ u8 storyDmaStatus;
|
||||
/* 0x320 */ OSMesgQueue storyMsgQueue;
|
||||
/* 0x338 */ OSMesg storyMsgBuf;
|
||||
/* 0x33C */ u8* storySegment;
|
||||
/* 0x340 */ uintptr_t storyAddr;
|
||||
/* 0x344 */ size_t storySize;
|
||||
} InterfaceContext; // size = 0x348
|
||||
|
||||
#endif
|
||||
+10
-1
@@ -9,7 +9,8 @@
|
||||
typedef enum {
|
||||
/* 0 */ EQUIP_TYPE_SWORD,
|
||||
/* 1 */ EQUIP_TYPE_SHIELD,
|
||||
/* 2 */ EQUIP_TYPE_MAX
|
||||
/* 2 */ EQUIP_TYPE_TUNIC, // Remnant of OoT
|
||||
/* 3 */ EQUIP_TYPE_MAX
|
||||
} EquipmentType;
|
||||
|
||||
typedef enum {
|
||||
@@ -28,6 +29,14 @@ typedef enum {
|
||||
/* 3 */ EQUIP_VALUE_SHIELD_MAX
|
||||
} EquipValueShield;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EQUIP_VALUE_TUNIC_NONE,
|
||||
/* 1 */ EQUIP_VALUE_TUNIC_KOKIRI,
|
||||
/* 2 */ EQUIP_VALUE_TUNIC_GORON,
|
||||
/* 3 */ EQUIP_VALUE_TUNIC_ZORA,
|
||||
/* 4 */ EQUIP_VALUE_TUNIC_MAX
|
||||
} EquipValueTunic; // Remnant of OoT
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ UPG_QUIVER,
|
||||
/* 1 */ UPG_BOMB_BAG,
|
||||
|
||||
+5
-7
@@ -13,7 +13,7 @@ typedef struct {
|
||||
/* 0x0C */ u8 diffuseColor[3];
|
||||
/* 0x0F */ u8 fogColor[3];
|
||||
/* 0x12 */ s16 fogNear;
|
||||
/* 0x14 */ s16 fogFar;
|
||||
/* 0x14 */ s16 zFar;
|
||||
} LightSettings; // size = 0x16
|
||||
|
||||
typedef struct {
|
||||
@@ -22,7 +22,7 @@ typedef struct {
|
||||
/* 0x0C */ s16 diffuseColor2[3];
|
||||
/* 0x12 */ s16 fogColor[3];
|
||||
/* 0x18 */ s16 fogNear;
|
||||
/* 0x1A */ s16 fogFar;
|
||||
/* 0x1A */ s16 zFar;
|
||||
} EnvLightSettings; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
@@ -74,11 +74,9 @@ typedef struct LightsBuffer {
|
||||
typedef struct LightContext {
|
||||
/* 0x0 */ LightNode* listHead;
|
||||
/* 0x4 */ Color_RGB8 ambient;
|
||||
/* 0x7 */ u8 unk7;
|
||||
/* 0x8 */ u8 unk8;
|
||||
/* 0x9 */ u8 unk9;
|
||||
/* 0xA */ s16 unkA;
|
||||
/* 0xC */ s16 unkC;
|
||||
/* 0x7 */ Color_RGB8 fogColor;
|
||||
/* 0xA */ s16 fogNear; // how close until fog starts taking effect. range 0 - 996
|
||||
/* 0xC */ s16 zFar; // draw distance. range 0 - 12800
|
||||
} LightContext; // size = 0x10
|
||||
|
||||
typedef enum LightType {
|
||||
|
||||
+2
-1
@@ -117,7 +117,8 @@ typedef struct {
|
||||
#define RADF_TO_BINANG(radf) (s16)((radf) * (0x8000 / M_PI))
|
||||
#define RADF_TO_DEGF(radf) ((radf) * (180.0f / M_PI))
|
||||
#define DEGF_TO_RADF(degf) ((degf) * (M_PI / 180.0f))
|
||||
#define BINANG_TO_RAD(binang) (((f32)binang / 0x8000) * M_PI)
|
||||
#define BINANG_TO_RAD(binang) ((f32)binang * (M_PI / 0x8000))
|
||||
#define BINANG_TO_RAD_ALT(binang) (((f32)binang / 0x8000) * M_PI)
|
||||
|
||||
// Angle arithmetic macros
|
||||
#define BINANG_ROT180(angle) ((s16)(angle + 0x8000))
|
||||
|
||||
+7
-7
@@ -72,12 +72,12 @@ typedef enum PlayerMask {
|
||||
} PlayerMask;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_ENV_TIMER_NONE,
|
||||
/* 1 */ PLAYER_ENV_TIMER_HOTROOM,
|
||||
/* 2 */ PLAYER_ENV_TIMER_UNDERWATER_FLOOR,
|
||||
/* 3 */ PLAYER_ENV_TIMER_SWIMMING,
|
||||
/* 4 */ PLAYER_ENV_TIMER_UNDERWATER_FREE
|
||||
} PlayerEnvTimerType;
|
||||
/* 0 */ PLAYER_ENV_HAZARD_NONE,
|
||||
/* 1 */ PLAYER_ENV_HAZARD_HOTROOM,
|
||||
/* 2 */ PLAYER_ENV_HAZARD_UNDERWATER_FLOOR,
|
||||
/* 3 */ PLAYER_ENV_HAZARD_SWIMMING,
|
||||
/* 4 */ PLAYER_ENV_HAZARD_UNDERWATER_FREE
|
||||
} PlayerEnvHazard;
|
||||
|
||||
typedef enum PlayerItemAction {
|
||||
/* -1 */ PLAYER_IA_MINUS1 = -1,
|
||||
@@ -745,7 +745,7 @@ typedef enum PlayerCsMode {
|
||||
#define PLAYER_STATE3_2000 (1 << 13)
|
||||
//
|
||||
#define PLAYER_STATE3_4000 (1 << 14)
|
||||
//
|
||||
// Swimming Zora
|
||||
#define PLAYER_STATE3_8000 (1 << 15)
|
||||
//
|
||||
#define PLAYER_STATE3_10000 (1 << 16)
|
||||
|
||||
+3
-3
@@ -47,9 +47,9 @@ s32 Quake_NumActiveQuakes(void);
|
||||
void Quake_Init(void);
|
||||
|
||||
#define DISTORTION_TYPE_0 (1 << 0)
|
||||
#define DISTORTION_TYPE_2 (1 << 2)
|
||||
#define DISTORTION_TYPE_3 (1 << 3)
|
||||
#define DISTORTION_TYPE_4 (1 << 4)
|
||||
#define DISTORTION_TYPE_NON_ZORA_SWIMMING (1 << 2)
|
||||
#define DISTORTION_TYPE_ZORA_SWIMMING (1 << 3)
|
||||
#define DISTORTION_TYPE_UNDERWATER_ENTRY (1 << 4)
|
||||
#define DISTORTION_TYPE_5 (1 << 5)
|
||||
#define DISTORTION_TYPE_6 (1 << 6)
|
||||
#define DISTORTION_TYPE_7 (1 << 7)
|
||||
|
||||
+37
-11
@@ -55,6 +55,14 @@ typedef enum {
|
||||
#define MAGIC_NORMAL_METER 0x30
|
||||
#define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER)
|
||||
|
||||
// See `R_MAGIC_DBG_SET_UPGRADE`
|
||||
#define MAGIC_DBG_SET_UPGRADE_NO_ACTION 0
|
||||
#define MAGIC_DBG_SET_UPGRADE_NORMAL_METER -1
|
||||
#define MAGIC_DBG_SET_UPGRADE_DOUBLE_METER 1
|
||||
|
||||
#define ENV_HAZARD_TEXT_TRIGGER_HOTROOM (1 << 0)
|
||||
#define ENV_HAZARD_TEXT_TRIGGER_UNDERWATER (1 << 1)
|
||||
|
||||
#define SECONDS_TO_TIMER(seconds) ((seconds) * 100)
|
||||
|
||||
#define OSTIME_TO_TIMER(osTime) ((osTime) * 64 / 3000 / 10000)
|
||||
@@ -69,7 +77,7 @@ typedef enum {
|
||||
/* 2 */ TIMER_ID_2,
|
||||
/* 3 */ TIMER_ID_MOON_CRASH, // timer used for mooncrash on the clocktower roof
|
||||
/* 4 */ TIMER_ID_MINIGAME_2, // minigame timer
|
||||
/* 5 */ TIMER_ID_ENV, // environmental timer (underwater or hot room)
|
||||
/* 5 */ TIMER_ID_ENV_HAZARD, // environmental hazard timer (underwater or hot room)
|
||||
/* 6 */ TIMER_ID_GORON_RACE_UNUSED,
|
||||
/* 7 */ TIMER_ID_MAX,
|
||||
/* 99 */ TIMER_ID_NONE = 99,
|
||||
@@ -89,7 +97,7 @@ typedef enum {
|
||||
/* 5 */ TIMER_STATE_STOP,
|
||||
/* 6 */ TIMER_STATE_6, // like `TIMER_STATE_STOP` but with extra minigame checks
|
||||
/* 7 */ TIMER_STATE_7, // stopped but still update `timerCurTimes`
|
||||
/* 8 */ TIMER_STATE_ENV_START,
|
||||
/* 8 */ TIMER_STATE_ENV_HAZARD_START,
|
||||
/* 9 */ TIMER_STATE_ALT_START,
|
||||
/* 10 */ TIMER_STATE_10, // precursor to `TIMER_STATE_ALT_COUNTING`
|
||||
/* 11 */ TIMER_STATE_ALT_COUNTING,
|
||||
@@ -105,6 +113,12 @@ typedef enum {
|
||||
/* 1 */ BOTTLE_TIMER_STATE_COUNTING
|
||||
} BottleTimerState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ MINIGAME_STATUS_INACTIVE,
|
||||
/* 1 */ MINIGAME_STATUS_ACTIVE,
|
||||
/* 3 */ MINIGAME_STATUS_END = 3
|
||||
} MinigameStatus;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ HUD_VISIBILITY_IDLE,
|
||||
/* 1 */ HUD_VISIBILITY_NONE,
|
||||
@@ -133,6 +147,15 @@ typedef enum {
|
||||
/* 52 */ HUD_VISIBILITY_NONE_INSTANT = 52
|
||||
} HudVisibility;
|
||||
|
||||
#define PICTO_PHOTO_WIDTH 160
|
||||
#define PICTO_PHOTO_HEIGHT 112
|
||||
|
||||
#define PICTO_PHOTO_TOPLEFT_X ((SCREEN_WIDTH - PICTO_PHOTO_WIDTH) / 2)
|
||||
#define PICTO_PHOTO_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_PHOTO_HEIGHT) / 2)
|
||||
|
||||
#define PICTO_PHOTO_SIZE (PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT)
|
||||
#define PICTO_PHOTO_COMPRESSED_SIZE (PICTO_PHOTO_SIZE * 5 / 8)
|
||||
|
||||
typedef struct SramContext {
|
||||
/* 0x00 */ u8* readBuff;
|
||||
/* 0x04 */ u8 *saveBuf;
|
||||
@@ -230,7 +253,7 @@ typedef struct SavePlayerData {
|
||||
} SavePlayerData; // size = 0x28
|
||||
|
||||
typedef struct Save {
|
||||
/* 0x0000 */ u32 entrance; // "scene_no"
|
||||
/* 0x0000 */ s32 entrance; // "scene_no"
|
||||
/* 0x0004 */ u8 equippedMask; // "player_mask"
|
||||
/* 0x0005 */ u8 isFirstCycle; // "opening_flag"
|
||||
/* 0x0006 */ u8 unk_06;
|
||||
@@ -239,7 +262,7 @@ typedef struct Save {
|
||||
/* 0x000C */ u16 time; // "zelda_time"
|
||||
/* 0x000E */ u16 owlSaveLocation;
|
||||
/* 0x0010 */ s32 isNight; // "asahiru_fg"
|
||||
/* 0x0014 */ s32 daySpeed; // "change_zelda_time"
|
||||
/* 0x0014 */ s32 timeSpeedOffset; // "change_zelda_time"
|
||||
/* 0x0018 */ s32 day; // "totalday"
|
||||
/* 0x001C */ s32 daysElapsed; // "eventday"
|
||||
/* 0x0020 */ u8 playerForm; // "player_character"
|
||||
@@ -298,7 +321,7 @@ typedef struct SaveContext {
|
||||
/* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // The original total time given before the timer expires, in centiseconds (1/100th sec). "bottle_sub"
|
||||
/* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time"
|
||||
/* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // The cumulative osTime spent with the timer paused. "bottle_stop_time"
|
||||
/* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo
|
||||
/* 0x10E0 */ u8 pictoPhotoI5[PICTO_PHOTO_COMPRESSED_SIZE]; // buffer containing the pictograph photo, compressed to I5 from I8
|
||||
/* 0x3CA0 */ s32 fileNum; // "file_no"
|
||||
/* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer"
|
||||
/* 0x3CA6 */ u8 unk_3CA6;
|
||||
@@ -312,7 +335,7 @@ typedef struct SaveContext {
|
||||
/* 0x3DBA */ u8 unk_3DBA; // "player_wipe_item"
|
||||
/* 0x3DBB */ u8 unk_3DBB; // "next_walk"
|
||||
/* 0x3DBC */ s16 dogParams; // "dog_flag"
|
||||
/* 0x3DBE */ u8 textTriggerFlags; // "guide_status"
|
||||
/* 0x3DBE */ u8 envHazardTextTriggerFlags; // "guide_status"
|
||||
/* 0x3DBF */ u8 showTitleCard; // "name_display"
|
||||
/* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer"
|
||||
/* 0x3DC2 */ u8 unk_3DC2; // "pad1"
|
||||
@@ -343,9 +366,9 @@ typedef struct SaveContext {
|
||||
/* 0x3F32 */ s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used"
|
||||
/* 0x3F34 */ s16 magicToAdd; // accumulated magic that is requested to be added "magic_recovery"
|
||||
/* 0x3F36 */ u16 mapIndex; // "scene_ID"
|
||||
/* 0x3F38 */ u16 minigameState; // "yabusame_mode"
|
||||
/* 0x3F38 */ u16 minigameStatus; // "yabusame_mode"
|
||||
/* 0x3F3A */ u16 minigameScore; // "yabusame_total"
|
||||
/* 0x3F3C */ u16 unk_3F3C; // "yabusame_out_ct"
|
||||
/* 0x3F3C */ u16 minigameHiddenScore; // "yabusame_out_ct"
|
||||
/* 0x3F3E */ u8 unk_3F3E; // "no_save"
|
||||
/* 0x3F3F */ u8 unk_3F3F; // "flash_flag"
|
||||
/* 0x3F40 */ SaveOptions options;
|
||||
@@ -390,6 +413,11 @@ typedef enum SunsSongState {
|
||||
|
||||
#define CURRENT_DAY (((void)0, gSaveContext.save.day) % 5)
|
||||
|
||||
// The day begins at CLOCK_TIME(6, 0) so it must be offset.
|
||||
#define TIME_UNTIL_MOON_CRASH \
|
||||
((4 - CURRENT_DAY) * DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)));
|
||||
#define TIME_UNTIL_NEW_DAY (DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)));
|
||||
|
||||
#define GET_PLAYER_FORM ((void)0, gSaveContext.save.playerForm)
|
||||
|
||||
#define SLOT(item) gItemSlots[item]
|
||||
@@ -596,7 +624,7 @@ typedef enum SunsSongState {
|
||||
|
||||
#define WEEKEVENTREG_14_02 PACK_WEEKEVENTREG_FLAG(14, 0x02)
|
||||
#define WEEKEVENTREG_14_04 PACK_WEEKEVENTREG_FLAG(14, 0x04)
|
||||
#define WEEKEVENTREG_14_08 PACK_WEEKEVENTREG_FLAG(14, 0x08)
|
||||
#define WEEKEVENTREG_DRANK_CHATEAU_ROMANI PACK_WEEKEVENTREG_FLAG(14, 0x08)
|
||||
#define WEEKEVENTREG_14_10 PACK_WEEKEVENTREG_FLAG(14, 0x10)
|
||||
#define WEEKEVENTREG_14_20 PACK_WEEKEVENTREG_FLAG(14, 0x20)
|
||||
#define WEEKEVENTREG_14_40 PACK_WEEKEVENTREG_FLAG(14, 0x40)
|
||||
@@ -1511,10 +1539,8 @@ void func_80147198(SramContext* sramCtx);
|
||||
extern s32 D_801C6798[];
|
||||
extern u8 gAmmoItems[];
|
||||
extern s32 D_801C67C8[];
|
||||
extern s32 D_801C67E8[];
|
||||
extern s32 D_801C67F0[];
|
||||
extern s32 D_801C6818[];
|
||||
extern s32 D_801C6838[];
|
||||
extern s32 D_801C6840[];
|
||||
extern s32 D_801C6850[];
|
||||
|
||||
|
||||
+3
-2
@@ -119,7 +119,7 @@ typedef struct {
|
||||
/* 0x2 */ UNK_TYPE1 pad2[2];
|
||||
/* 0x4 */ u8 hour;
|
||||
/* 0x5 */ u8 min;
|
||||
/* 0x6 */ u8 unk6;
|
||||
/* 0x6 */ u8 timeSpeed;
|
||||
} SCmdTimeSettings; // size = 0x7
|
||||
|
||||
typedef struct {
|
||||
@@ -341,6 +341,7 @@ typedef struct {
|
||||
/* 0xA */ u8 unk_A;
|
||||
/* 0xB */ u8 drawConfig;
|
||||
/* 0xC */ u8 unk_C;
|
||||
/* 0xD */ u8 unk_D;
|
||||
} SceneTableEntry; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
@@ -477,7 +478,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ MinimapEntry* entry;
|
||||
/* 0x4 */ UNK_TYPE unk4;
|
||||
/* 0x4 */ s16 unk4;
|
||||
} MinimapList; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
|
||||
+24
-24
@@ -11,36 +11,36 @@ typedef struct {
|
||||
/* 0x144 */ PictoValidationFunc validationFunc;
|
||||
} PictoActor;
|
||||
|
||||
// Picto box flags
|
||||
// Picto validation flags
|
||||
|
||||
typedef enum {
|
||||
// Used externally, set and read by actors
|
||||
/* 0x00 */ PICTOGRAPH_0,
|
||||
/* 0x01 */ PICTOGRAPH_IN_SWAMP,
|
||||
/* 0x02 */ PICTOGRAPH_MONKEY,
|
||||
/* 0x03 */ PICTOGRAPH_BIG_OCTO,
|
||||
/* 0x04 */ PICTOGRAPH_LULU_HEAD,
|
||||
/* 0x05 */ PICTOGRAPH_LULU_RIGHT_ARM,
|
||||
/* 0x06 */ PICTOGRAPH_LULU_LEFT_ARM, // Need all three of these to qualify as a good picture
|
||||
/* 0x07 */ PICTOGRAPH_SCARECROW,
|
||||
/* 0x08 */ PICTOGRAPH_TINGLE,
|
||||
/* 0x09 */ PICTOGRAPH_PIRATE_GOOD,
|
||||
/* 0x0A */ PICTOGRAPH_DEKU_KING,
|
||||
/* 0x0B */ PICTOGRAPH_PIRATE_TOO_FAR, // overlaps with PICTOGRAPH_PIRATE_GOOD, but that is checked first
|
||||
/* 0x00 */ PICTO_VALID_0,
|
||||
/* 0x01 */ PICTO_VALID_IN_SWAMP,
|
||||
/* 0x02 */ PICTO_VALID_MONKEY,
|
||||
/* 0x03 */ PICTO_VALID_BIG_OCTO,
|
||||
/* 0x04 */ PICTO_VALID_LULU_HEAD,
|
||||
/* 0x05 */ PICTO_VALID_LULU_RIGHT_ARM,
|
||||
/* 0x06 */ PICTO_VALID_LULU_LEFT_ARM, // Need all three of these to qualify as a good picture
|
||||
/* 0x07 */ PICTO_VALID_SCARECROW,
|
||||
/* 0x08 */ PICTO_VALID_TINGLE,
|
||||
/* 0x09 */ PICTO_VALID_PIRATE_GOOD,
|
||||
/* 0x0A */ PICTO_VALID_DEKU_KING,
|
||||
/* 0x0B */ PICTO_VALID_PIRATE_TOO_FAR, // overlaps with PICTO_VALID_PIRATE_GOOD, but that is checked first
|
||||
|
||||
// Used internally, test for failures of position, angle etc.
|
||||
/* 0x3B */ PICTOGRAPH_BEHIND_COLLISION = 0x3B,
|
||||
/* 0x3C */ PICTOGRAPH_BEHIND_BG,
|
||||
/* 0x3D */ PICTOGRAPH_NOT_IN_VIEW,
|
||||
/* 0x3E */ PICTOGRAPH_BAD_ANGLE,
|
||||
/* 0x3F */ PICTOGRAPH_BAD_DISTANCE
|
||||
} PictographFlag;
|
||||
/* 0x3B */ PICTO_VALID_BEHIND_COLLISION = 0x3B,
|
||||
/* 0x3C */ PICTO_VALID_BEHIND_BG,
|
||||
/* 0x3D */ PICTO_VALID_NOT_IN_VIEW,
|
||||
/* 0x3E */ PICTO_VALID_BAD_ANGLE,
|
||||
/* 0x3F */ PICTO_VALID_BAD_DISTANCE
|
||||
} PictoValidFlag;
|
||||
|
||||
// The following macros are subject to renaming once the capture system is better understood
|
||||
#define PICTO_RESOLUTION_HORIZONTAL 150
|
||||
#define PICTO_RESOLUTION_VERTICAL 105
|
||||
#define PICTO_CAPTURE_REGION_TOPLEFT_X ((SCREEN_WIDTH - PICTO_RESOLUTION_HORIZONTAL) / 2)
|
||||
#define PICTO_CAPTURE_REGION_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_RESOLUTION_VERTICAL) / 2)
|
||||
// The subregion of the picto photo that will set the flag for an actor being in the photo
|
||||
#define PICTO_VALID_WIDTH 150
|
||||
#define PICTO_VALID_HEIGHT 105
|
||||
#define PICTO_VALID_TOPLEFT_X ((SCREEN_WIDTH - PICTO_VALID_WIDTH) / 2)
|
||||
#define PICTO_VALID_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_VALID_HEIGHT) / 2)
|
||||
|
||||
s32 Snap_RecordPictographedActors(PlayState* play);
|
||||
void Snap_SetFlag(s32 flag);
|
||||
|
||||
+111
-18
@@ -1,8 +1,14 @@
|
||||
#ifndef _Z64_TRANSITION_H_
|
||||
#define _Z64_TRANSITION_H_
|
||||
#ifndef Z64_TRANSITION_H
|
||||
#define Z64_TRANSITION_H
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
#include "overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h"
|
||||
#include "overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h"
|
||||
#include "overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h"
|
||||
#include "overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h"
|
||||
#include "overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h"
|
||||
|
||||
#define TC_SET_PARAMS (1 << 7)
|
||||
|
||||
typedef struct {
|
||||
@@ -32,22 +38,6 @@ typedef struct {
|
||||
/* 0x14 */ TransitionInit* initInfo;
|
||||
/* 0x18 */ size_t size;
|
||||
} TransitionOverlay;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ s16 transitionType;
|
||||
/* 0x002 */ s8 fbdemoType;
|
||||
/* 0x003 */ char unk_003[0x22B];
|
||||
/* 0x230 */ void* (*init)(void* transition);
|
||||
/* 0x234 */ void (*destroy)(void* transition);
|
||||
/* 0x238 */ void (*update)(void* transition, s32 updateRate);
|
||||
/* 0x23C */ void (*draw)(void* transition, Gfx** gfxP);
|
||||
/* 0x240 */ void (*start)(void* transition);
|
||||
/* 0x244 */ void (*setType)(void* transition, s32 type);
|
||||
/* 0x248 */ void (*setColor)(void* transition, u32 color);
|
||||
/* 0x24C */ void (*setEnvColor)(void* transition, u32 color);
|
||||
/* 0x250 */ s32 (*isDone)(void* transition);
|
||||
/* 0x254 */ char unk_254[0x4];
|
||||
} TransitionContext; // size = 0x258
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ char unk_0[0xC];
|
||||
@@ -76,4 +66,107 @@ typedef struct {
|
||||
/* 0x1F */ s8 unk_1F; // Set to 0 and never used
|
||||
} TransitionCircle; // size = 0x20
|
||||
|
||||
#define TRANS_TRIGGER_OFF 0 // transition is not active
|
||||
#define TRANS_TRIGGER_START 20 // start transition (exiting an area)
|
||||
#define TRANS_TRIGGER_END -20 // transition is ending (arriving in a new area)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ TRANS_MODE_OFF,
|
||||
/* 1 */ TRANS_MODE_SETUP,
|
||||
/* 2 */ TRANS_MODE_INSTANCE_INIT,
|
||||
/* 3 */ TRANS_MODE_INSTANCE_RUNNING,
|
||||
/* 4 */ TRANS_MODE_FILL_WHITE_INIT,
|
||||
/* 5 */ TRANS_MODE_FILL_IN,
|
||||
/* 6 */ TRANS_MODE_FILL_OUT,
|
||||
/* 7 */ TRANS_MODE_FILL_BROWN_INIT,
|
||||
/* 8 */ TRANS_MODE_08, // unused
|
||||
/* 9 */ TRANS_MODE_09, // unused
|
||||
/* 10 */ TRANS_MODE_INSTANT,
|
||||
/* 11 */ TRANS_MODE_INSTANCE_WAIT,
|
||||
/* 12 */ TRANS_MODE_SANDSTORM_INIT,
|
||||
/* 13 */ TRANS_MODE_SANDSTORM,
|
||||
/* 14 */ TRANS_MODE_SANDSTORM_END_INIT,
|
||||
/* 15 */ TRANS_MODE_SANDSTORM_END,
|
||||
/* 16 */ TRANS_MODE_CS_BLACK_FILL_INIT,
|
||||
/* 17 */ TRANS_MODE_CS_BLACK_FILL
|
||||
} TransitionMode;
|
||||
|
||||
#define TRANS_TYPE_WIPE4 (1 << 5)
|
||||
#define TRANS_TYPE_WIPE3 (1 << 6)
|
||||
#define TRANS_TYPE_SET_PARAMS (1 << 7)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ TRANS_TYPE_WIPE,
|
||||
/* 1 */ TRANS_TYPE_TRIFORCE,
|
||||
/* 2 */ TRANS_TYPE_FADE_BLACK,
|
||||
/* 3 */ TRANS_TYPE_FADE_WHITE,
|
||||
/* 4 */ TRANS_TYPE_FADE_BLACK_FAST,
|
||||
/* 5 */ TRANS_TYPE_FADE_WHITE_FAST,
|
||||
/* 6 */ TRANS_TYPE_FADE_BLACK_SLOW,
|
||||
/* 7 */ TRANS_TYPE_FADE_WHITE_SLOW,
|
||||
/* 8 */ TRANS_TYPE_WIPE_FAST,
|
||||
/* 9 */ TRANS_TYPE_FILL_WHITE_FAST, // Not actually fast due to bug in Play_UpdateTransition
|
||||
/* 10 */ TRANS_TYPE_FILL_WHITE,
|
||||
/* 11 */ TRANS_TYPE_INSTANT,
|
||||
/* 12 */ TRANS_TYPE_FILL_BROWN,
|
||||
/* 13 */ TRANS_TYPE_FADE_WHITE_CS_DELAYED,
|
||||
/* 14 */ TRANS_TYPE_SANDSTORM_PERSIST,
|
||||
/* 15 */ TRANS_TYPE_SANDSTORM_END,
|
||||
/* 16 */ TRANS_TYPE_CS_BLACK_FILL,
|
||||
/* 17 */ TRANS_TYPE_FADE_WHITE_INSTANT,
|
||||
/* 18 */ TRANS_TYPE_FADE_GREEN,
|
||||
/* 19 */ TRANS_TYPE_FADE_BLUE,
|
||||
/* 20 */ TRANS_TYPE_FADE_DYNAMIC, // Chooses Black or White based on time of day
|
||||
/* 21 */ TRANS_TYPE_CIRCLE,
|
||||
/* 22 */ TRANS_TYPE_WIPE5,
|
||||
// transition types 23 - 31 are unused
|
||||
// transition types 32 - 39 are Wipe4 TODO needs macro
|
||||
// transition types 40 - 63 are unused
|
||||
// transition types 64 - 127 are Wipe3 TODO needs macro
|
||||
/* 64 */ TRANS_TYPE_64 = 64,
|
||||
/* 70 */ TRANS_TYPE_70 = 70,
|
||||
/* 72 */ TRANS_TYPE_72 = 72,
|
||||
/* 73 */ TRANS_TYPE_73,
|
||||
/* 80 */ TRANS_TYPE_80 = 80,
|
||||
/* 86 */ TRANS_TYPE_86 = 86
|
||||
} TransitionType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ FBDEMO_FADE,
|
||||
/* 1 */ FBDEMO_TRIFORCE,
|
||||
/* 2 */ FBDEMO_WIPE1,
|
||||
/* 3 */ FBDEMO_WIPE3,
|
||||
/* 4 */ FBDEMO_WIPE4,
|
||||
/* 5 */ FBDEMO_CIRCLE,
|
||||
/* 6 */ FBDEMO_WIPE5
|
||||
} FbDemoType;
|
||||
|
||||
#define TRANS_NEXT_TYPE_DEFAULT 0xFF
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ s16 transitionType;
|
||||
/* 0x002 */ s8 fbdemoType;
|
||||
/* 0x003 */ char unk_003[0x5];
|
||||
/* 0x008 */ union {
|
||||
TransitionFade fade;
|
||||
TransitionCircle circle;
|
||||
TransitionTriforce triforce;
|
||||
TransitionWipe1 wipe1;
|
||||
TransitionWipe3 wipe3;
|
||||
TransitionWipe4 wipe4;
|
||||
TransitionWipe5 wipe5;
|
||||
} instanceData;
|
||||
/* 0x220 */ char unk_220[0x10];
|
||||
/* 0x230 */ void* (*init)(void* transition);
|
||||
/* 0x234 */ void (*destroy)(void* transition);
|
||||
/* 0x238 */ void (*update)(void* transition, s32 updateRate);
|
||||
/* 0x23C */ void (*draw)(void* transition, Gfx** gfxP);
|
||||
/* 0x240 */ void (*start)(void* transition);
|
||||
/* 0x244 */ void (*setType)(void* transition, s32 type);
|
||||
/* 0x248 */ void (*setColor)(void* transition, u32 color);
|
||||
/* 0x24C */ void (*setEnvColor)(void* transition, u32 color);
|
||||
/* 0x250 */ s32 (*isDone)(void* transition);
|
||||
/* 0x254 */ char unk_254[0x4];
|
||||
} TransitionContext; // size = 0x258
|
||||
|
||||
#endif
|
||||
|
||||
@@ -424,11 +424,10 @@ beginseg
|
||||
name "code"
|
||||
compress
|
||||
after "dmadata"
|
||||
include "build/src/code/z_en_a_keep.o"
|
||||
include "build/data/code/aspMain.data.o"
|
||||
include "build/data/code/gspS2DEX2.fifo.data.o"
|
||||
include "build/data/code/njpgdspMain.data.o"
|
||||
include "build/data/code/code_801ADE60.data.o"
|
||||
include "build/src/code/z_en_a_keep.o"
|
||||
include "build/data/code/code_801E3FA0.bss.o"
|
||||
include "build/src/code/z_en_item00.o"
|
||||
include "build/src/code/z_eff_blure.o"
|
||||
@@ -528,7 +527,8 @@ beginseg
|
||||
include "build/src/code/z_rumble.o"
|
||||
include "build/src/code/z_view.o"
|
||||
include "build/src/code/z_vimode.o"
|
||||
include "build/data/code/z_vimode.data.o"
|
||||
include "build/src/code/code_80140CE0.o"
|
||||
include "build/data/code/code_80140CE0.data.o"
|
||||
include "build/src/code/code_80140E80.o"
|
||||
include "build/src/code/z_vismono.o"
|
||||
include "build/src/code/code_801420C0.o"
|
||||
@@ -554,8 +554,6 @@ beginseg
|
||||
include "build/src/code/z_fbdemo_circle.o"
|
||||
include "build/src/code/z_overlay.o"
|
||||
include "build/src/code/z_play.o"
|
||||
include "build/data/code/z_play.data.o"
|
||||
include "build/data/code/z_play.bss.o"
|
||||
include "build/src/code/z_play_hireso.o"
|
||||
include "build/data/code/z_play_hireso.data.o"
|
||||
include "build/src/code/PreRender.o"
|
||||
@@ -580,9 +578,10 @@ beginseg
|
||||
include "build/src/code/speed_meter.o"
|
||||
include "build/data/code/speed_meter.data.o"
|
||||
include "build/data/code/speed_meter.bss.o"
|
||||
include "build/src/code/su_mtx.o"
|
||||
include "build/src/code/sys_cfb.o"
|
||||
include "build/data/code/sys_cfb.bss.o"
|
||||
include "build/src/code/sys_cmpdma.o"
|
||||
include "build/data/code/sys_cmpdma.bss.o"
|
||||
include "build/src/code/sys_initial_check.o"
|
||||
include "build/src/code/sys_math.o"
|
||||
include "build/src/code/sys_math3d.o"
|
||||
@@ -608,8 +607,7 @@ beginseg
|
||||
include "build/src/code/audio/audio_heap.o"
|
||||
include "build/data/code/audio_heap.bss.o"
|
||||
include "build/src/code/audio/audio_load.o"
|
||||
include "build/src/code/audio/code_80192BE0.o"
|
||||
include "build/data/code/code_80192BE0.data.o"
|
||||
include "build/src/code/audio/audio_thread.o"
|
||||
include "build/src/code/audio/audio_dcache.o"
|
||||
include "build/src/code/audio/aisetnextbuf.o"
|
||||
include "build/src/code/audio/audio_playback.o"
|
||||
@@ -4210,8 +4208,7 @@ beginseg
|
||||
name "ovl_En_Zod"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_En_Zod/z_en_zod.o"
|
||||
include "build/data/ovl_En_Zod/ovl_En_Zod.data.o"
|
||||
include "build/data/ovl_En_Zod/ovl_En_Zod.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_En_Zod/ovl_En_Zod_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
|
||||
StackEntry sBootThreadInfo;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
|
||||
u8 D_80096B20 = 1;
|
||||
|
||||
@@ -6,7 +6,7 @@ u8* sYaz0CurDataEnd;
|
||||
uintptr_t sYaz0CurRomStart;
|
||||
u32 sYaz0CurSize;
|
||||
u8* sYaz0MaxPtr;
|
||||
u8* D_8009BE20;
|
||||
void* gYaz0DecompressDstEnd;
|
||||
|
||||
void* Yaz0_FirstDMA() {
|
||||
u32 pad0;
|
||||
@@ -118,7 +118,7 @@ s32 Yaz0_DecompressImpl(u8* src, u8* dst) {
|
||||
bitIdx--;
|
||||
} while (dst != dstEnd);
|
||||
|
||||
D_8009BE20 = dstEnd;
|
||||
gYaz0DecompressDstEnd = dstEnd;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ void AudioEffects_SequencePlayerProcessSound(SequencePlayer* seqPlayer) {
|
||||
}
|
||||
|
||||
seqPlayer->fadeTimer--;
|
||||
if ((seqPlayer->fadeTimer == 0) && (seqPlayer->state == SEQPLAYER_STATE_2)) {
|
||||
if ((seqPlayer->fadeTimer == 0) && (seqPlayer->state == SEQPLAYER_STATE_FADE_OUT)) {
|
||||
AudioSeq_SequencePlayerDisable(seqPlayer);
|
||||
return;
|
||||
}
|
||||
@@ -112,10 +112,10 @@ f32 AudioEffects_GetVibratoFreqScale(VibratoState* vib) {
|
||||
static f32 activeVibratoFreqScaleSum = 0.0f;
|
||||
static s32 activeVibratoCount = 0;
|
||||
f32 pitchChange;
|
||||
f32 extent;
|
||||
f32 invExtent;
|
||||
f32 depth;
|
||||
f32 invDepth;
|
||||
f32 result;
|
||||
f32 scaledExtent;
|
||||
f32 scaledDepth;
|
||||
VibratoSubStruct* subVib = vib->vibSubStruct;
|
||||
|
||||
if (vib->delay != 0) {
|
||||
@@ -124,17 +124,17 @@ f32 AudioEffects_GetVibratoFreqScale(VibratoState* vib) {
|
||||
}
|
||||
|
||||
if (subVib != NULL) {
|
||||
if (vib->extentChangeTimer) {
|
||||
if (vib->extentChangeTimer == 1) {
|
||||
vib->extent = (s32)subVib->vibratoExtentTarget;
|
||||
if (vib->depthChangeTimer) {
|
||||
if (vib->depthChangeTimer == 1) {
|
||||
vib->depth = (s32)subVib->vibratoDepthTarget;
|
||||
} else {
|
||||
vib->extent += ((s32)subVib->vibratoExtentTarget - vib->extent) / (s32)vib->extentChangeTimer;
|
||||
vib->depth += ((s32)subVib->vibratoDepthTarget - vib->depth) / (s32)vib->depthChangeTimer;
|
||||
}
|
||||
|
||||
vib->extentChangeTimer--;
|
||||
} else if (subVib->vibratoExtentTarget != (s32)vib->extent) {
|
||||
if ((vib->extentChangeTimer = subVib->vibratoExtentChangeDelay) == 0) {
|
||||
vib->extent = (s32)subVib->vibratoExtentTarget;
|
||||
vib->depthChangeTimer--;
|
||||
} else if (subVib->vibratoDepthTarget != (s32)vib->depth) {
|
||||
if ((vib->depthChangeTimer = subVib->vibratoDepthChangeDelay) == 0) {
|
||||
vib->depth = (s32)subVib->vibratoDepthTarget;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,17 +153,17 @@ f32 AudioEffects_GetVibratoFreqScale(VibratoState* vib) {
|
||||
}
|
||||
}
|
||||
|
||||
if (vib->extent == 0.0f) {
|
||||
if (vib->depth == 0.0f) {
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
pitchChange = AudioEffects_GetVibratoPitchChange(vib) + 32768.0f;
|
||||
scaledExtent = vib->extent / 4096.0f;
|
||||
extent = scaledExtent + 1.0f;
|
||||
invExtent = 1.0f / extent;
|
||||
scaledDepth = vib->depth / 4096.0f;
|
||||
depth = scaledDepth + 1.0f;
|
||||
invDepth = 1.0f / depth;
|
||||
|
||||
// inverse linear interpolation
|
||||
result = 1.0f / ((extent - invExtent) * pitchChange / 65536.0f + invExtent);
|
||||
result = 1.0f / ((depth - invDepth) * pitchChange / 65536.0f + invDepth);
|
||||
|
||||
activeVibratoFreqScaleSum += result;
|
||||
activeVibratoCount++;
|
||||
@@ -196,10 +196,10 @@ void AudioEffects_NoteVibratoInit(Note* note) {
|
||||
|
||||
subVib = vib->vibSubStruct;
|
||||
|
||||
if ((vib->extentChangeTimer = subVib->vibratoExtentChangeDelay) == 0) {
|
||||
vib->extent = (s32)subVib->vibratoExtentTarget;
|
||||
if ((vib->depthChangeTimer = subVib->vibratoDepthChangeDelay) == 0) {
|
||||
vib->depth = (s32)subVib->vibratoDepthTarget;
|
||||
} else {
|
||||
vib->extent = (s32)subVib->vibratoExtentStart;
|
||||
vib->depth = (s32)subVib->vibratoDepthStart;
|
||||
}
|
||||
|
||||
if ((vib->rateChangeTimer = subVib->vibratoRateChangeDelay) == 0) {
|
||||
|
||||
@@ -836,7 +836,7 @@ void AudioHeap_ClearAiBuffers(void) {
|
||||
s32 curAiBufferIndex = gAudioCtx.curAiBufferIndex;
|
||||
s32 i;
|
||||
|
||||
gAudioCtx.aiBufNumSamples[curAiBufferIndex] = gAudioCtx.audioBufferParameters.numSamplesPerFrameMin;
|
||||
gAudioCtx.numSamplesPerFrame[curAiBufferIndex] = gAudioCtx.audioBufferParameters.numSamplesPerFrameMin;
|
||||
|
||||
for (i = 0; i < AIBUF_LEN; i++) {
|
||||
gAudioCtx.aiBuffers[curAiBufferIndex][i] = 0;
|
||||
@@ -905,8 +905,8 @@ s32 AudioHeap_ResetStep(void) {
|
||||
case 1:
|
||||
AudioHeap_Init();
|
||||
gAudioCtx.resetStatus = 0;
|
||||
for (i = 0; i < ARRAY_COUNT(gAudioCtx.aiBufNumSamples); i++) {
|
||||
gAudioCtx.aiBufNumSamples[i] = gAudioCtx.audioBufferParameters.numSamplesPerFrameMax;
|
||||
for (i = 0; i < ARRAY_COUNT(gAudioCtx.numSamplesPerFrame); i++) {
|
||||
gAudioCtx.numSamplesPerFrame[i] = gAudioCtx.audioBufferParameters.numSamplesPerFrameMax;
|
||||
for (j = 0; j < AIBUF_LEN; j++) {
|
||||
gAudioCtx.aiBuffers[i][j] = 0;
|
||||
}
|
||||
@@ -932,7 +932,7 @@ void AudioHeap_Init(void) {
|
||||
s32 reverbIndex;
|
||||
s32 i;
|
||||
s32 pad2;
|
||||
AudioSpec* spec = &gAudioSpecs[gAudioCtx.audioResetSpecIdToLoad]; // Audio Specifications
|
||||
AudioSpec* spec = &gAudioSpecs[gAudioCtx.specId]; // Audio Specifications
|
||||
|
||||
gAudioCtx.sampleDmaCount = 0;
|
||||
|
||||
@@ -970,15 +970,15 @@ void AudioHeap_Init(void) {
|
||||
gAudioCtx.audioBufferParameters.numSequencePlayers = 5;
|
||||
}
|
||||
|
||||
gAudioCtx.unk_29BC = 8;
|
||||
gAudioCtx.numAbiCmdsMax = 8;
|
||||
gAudioCtx.unk_2 = spec->unk_14;
|
||||
gAudioCtx.tempoInternalToExternal =
|
||||
gAudioCtx.maxTempo =
|
||||
(u32)(gAudioCtx.audioBufferParameters.updatesPerFrame * 2880000.0f / gTatumsPerBeat / gAudioCtx.unk_2960);
|
||||
|
||||
gAudioCtx.unk_2870 = gAudioCtx.refreshRate;
|
||||
gAudioCtx.unk_2870 *= gAudioCtx.audioBufferParameters.updatesPerFrame;
|
||||
gAudioCtx.unk_2870 /= gAudioCtx.audioBufferParameters.aiSamplingFreq;
|
||||
gAudioCtx.unk_2870 /= gAudioCtx.tempoInternalToExternal;
|
||||
gAudioCtx.unk_2870 /= gAudioCtx.maxTempo;
|
||||
|
||||
gAudioCtx.audioBufferParameters.specUnk4 = spec->unk_04;
|
||||
gAudioCtx.audioBufferParameters.numSamplesPerFrameTarget *= gAudioCtx.audioBufferParameters.specUnk4;
|
||||
|
||||
@@ -1212,12 +1212,12 @@ void AudioLoad_Init(void* heap, size_t heapSize) {
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
gCustomAudioUpdateFunction = NULL;
|
||||
gCustomAudioReverbFunction = NULL;
|
||||
gCustomAudioSynthFunction = NULL;
|
||||
gAudioCustomUpdateFunction = NULL;
|
||||
gAudioCustomReverbFunction = NULL;
|
||||
gAudioCustomSynthFunction = NULL;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gAudioCtx.unk_29A8); i++) {
|
||||
gAudioCtx.unk_29A8[i] = NULL;
|
||||
for (i = 0; i < ARRAY_COUNT(gAudioCtx.customSeqFunctions); i++) {
|
||||
gAudioCtx.customSeqFunctions[i] = NULL;
|
||||
}
|
||||
|
||||
gAudioCtx.resetTimer = 0;
|
||||
@@ -1248,8 +1248,8 @@ void AudioLoad_Init(void* heap, size_t heapSize) {
|
||||
|
||||
AudioThread_InitMesgQueues();
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gAudioCtx.aiBufNumSamples); i++) {
|
||||
gAudioCtx.aiBufNumSamples[i] = 0xA0;
|
||||
for (i = 0; i < ARRAY_COUNT(gAudioCtx.numSamplesPerFrame); i++) {
|
||||
gAudioCtx.numSamplesPerFrame[i] = 0xA0;
|
||||
}
|
||||
|
||||
gAudioCtx.totalTaskCount = 0;
|
||||
@@ -1301,7 +1301,7 @@ void AudioLoad_Init(void* heap, size_t heapSize) {
|
||||
|
||||
gAudioCtx.numSequences = gAudioCtx.sequenceTable->numEntries;
|
||||
|
||||
gAudioCtx.audioResetSpecIdToLoad = 0;
|
||||
gAudioCtx.specId = 0;
|
||||
gAudioCtx.resetStatus = 1; // Set reset to immediately initialize the audio heap
|
||||
AudioHeap_ResetStep();
|
||||
|
||||
|
||||
@@ -309,7 +309,7 @@ void AudioPlayback_ProcessNotes(void) {
|
||||
subAttrs.combFilterGain = channel->combFilterGain;
|
||||
bookOffset = channel->bookOffset & 0x7;
|
||||
|
||||
if (channel->seqPlayer->muted && (channel->muteFlags & MUTE_FLAGS_3)) {
|
||||
if (channel->seqPlayer->muted && (channel->muteFlags & MUTE_FLAGS_STOP_SAMPLES)) {
|
||||
subAttrs.frequency = 0.0f;
|
||||
subAttrs.velocity = 0.0f;
|
||||
}
|
||||
@@ -531,7 +531,7 @@ void AudioPlayback_SeqLayerDecayRelease(SequenceLayer* layer, s32 target) {
|
||||
|
||||
attrs->combFilterGain = channel->combFilterGain;
|
||||
attrs->combFilterSize = channel->combFilterSize;
|
||||
if (channel->seqPlayer->muted && (channel->muteFlags & MUTE_FLAGS_3)) {
|
||||
if (channel->seqPlayer->muted && (channel->muteFlags & MUTE_FLAGS_STOP_SAMPLES)) {
|
||||
note->sampleState.bitField0.finished = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ u8 sSeqInstructionArgsTable[] = {
|
||||
CMD_ARGS_1(u8), // 0xD5 ()
|
||||
CMD_ARGS_1(u8), // 0xD6 ()
|
||||
CMD_ARGS_1(u8), // 0xD7 (channel: set vibrato rate)
|
||||
CMD_ARGS_1(u8), // 0xD8 (channel: set vibrato extent)
|
||||
CMD_ARGS_1(u8), // 0xD8 (channel: set vibrato depth)
|
||||
CMD_ARGS_1(u8), // 0xD9 (channel: set decay index)
|
||||
CMD_ARGS_1(s16), // 0xDA (channel: set envelope)
|
||||
CMD_ARGS_1(u8), // 0xDB (channel: transpose)
|
||||
@@ -133,7 +133,7 @@ u8 sSeqInstructionArgsTable[] = {
|
||||
CMD_ARGS_1(u8), // 0xDF (channel: set volume)
|
||||
CMD_ARGS_1(u8), // 0xE0 (channel: set volume scale)
|
||||
CMD_ARGS_3(u8, u8, u8), // 0xE1 (channel: set vibratorate linear)
|
||||
CMD_ARGS_3(u8, u8, u8), // 0xE2 (channel: set vibrato extent linear)
|
||||
CMD_ARGS_3(u8, u8, u8), // 0xE2 (channel: set vibrato depth linear)
|
||||
CMD_ARGS_1(u8), // 0xE3 (channel: set vibrato delay)
|
||||
CMD_ARGS_0(), // 0xE4 (channel: dyncall)
|
||||
CMD_ARGS_1(u8), // 0xE5 (channel: set reverb index)
|
||||
@@ -276,7 +276,7 @@ void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
|
||||
channel->enabled = false;
|
||||
channel->finished = false;
|
||||
channel->stopScript = false;
|
||||
channel->stopSomething2 = false;
|
||||
channel->muted = false;
|
||||
channel->hasInstrument = false;
|
||||
channel->stereoHeadsetEffects = false;
|
||||
channel->transposition = 0;
|
||||
@@ -302,10 +302,10 @@ void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
|
||||
channel->adsr.sustain = 0;
|
||||
channel->vibrato.vibratoRateTarget = 0x800;
|
||||
channel->vibrato.vibratoRateStart = 0x800;
|
||||
channel->vibrato.vibratoExtentTarget = 0;
|
||||
channel->vibrato.vibratoExtentStart = 0;
|
||||
channel->vibrato.vibratoDepthTarget = 0;
|
||||
channel->vibrato.vibratoDepthStart = 0;
|
||||
channel->vibrato.vibratoRateChangeDelay = 0;
|
||||
channel->vibrato.vibratoExtentChangeDelay = 0;
|
||||
channel->vibrato.vibratoDepthChangeDelay = 0;
|
||||
channel->vibrato.vibratoDelay = 0;
|
||||
channel->filter = NULL;
|
||||
channel->combFilterGain = 0;
|
||||
@@ -314,8 +314,8 @@ void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
|
||||
channel->volumeScale = 1.0f;
|
||||
channel->freqScale = 1.0f;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(channel->soundScriptIO); i++) {
|
||||
channel->soundScriptIO[i] = SEQ_IO_VAL_NONE;
|
||||
for (i = 0; i < ARRAY_COUNT(channel->seqScriptIO); i++) {
|
||||
channel->seqScriptIO[i] = SEQ_IO_VAL_NONE;
|
||||
}
|
||||
|
||||
channel->unused = false;
|
||||
@@ -348,7 +348,7 @@ s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
|
||||
layer->targetReverbVol = channel->targetReverbVol;
|
||||
layer->enabled = true;
|
||||
layer->finished = false;
|
||||
layer->stopSomething = false;
|
||||
layer->muted = false;
|
||||
layer->continuousNotes = false;
|
||||
layer->bit3 = false;
|
||||
layer->ignoreDrumPan = false;
|
||||
@@ -370,10 +370,10 @@ s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
|
||||
layer->unk_0A.asByte = 0xFFFF;
|
||||
layer->vibrato.vibratoRateTarget = 0x800;
|
||||
layer->vibrato.vibratoRateStart = 0x800;
|
||||
layer->vibrato.vibratoExtentTarget = 0;
|
||||
layer->vibrato.vibratoExtentStart = 0;
|
||||
layer->vibrato.vibratoDepthTarget = 0;
|
||||
layer->vibrato.vibratoDepthStart = 0;
|
||||
layer->vibrato.vibratoRateChangeDelay = 0;
|
||||
layer->vibrato.vibratoExtentChangeDelay = 0;
|
||||
layer->vibrato.vibratoDepthChangeDelay = 0;
|
||||
layer->vibrato.vibratoDelay = 0;
|
||||
layer->freqScale = 1.0f;
|
||||
layer->bend = 1.0f;
|
||||
@@ -562,9 +562,9 @@ void AudioSeq_SeqLayerProcessScript(SequenceLayer* layer) {
|
||||
|
||||
if (layer->delay > 1) {
|
||||
layer->delay--;
|
||||
if (!layer->stopSomething && (layer->delay <= layer->gateDelay)) {
|
||||
if (!layer->muted && (layer->delay <= layer->gateDelay)) {
|
||||
AudioPlayback_SeqLayerNoteDecay(layer);
|
||||
layer->stopSomething = true;
|
||||
layer->muted = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -590,7 +590,7 @@ void AudioSeq_SeqLayerProcessScript(SequenceLayer* layer) {
|
||||
AudioSeq_SeqLayerProcessScriptStep5(layer, cmd);
|
||||
}
|
||||
|
||||
if (layer->stopSomething == true) {
|
||||
if (layer->muted == true) {
|
||||
if ((layer->note != NULL) || layer->continuousNotes) {
|
||||
AudioPlayback_SeqLayerNoteDecay(layer);
|
||||
}
|
||||
@@ -856,7 +856,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
|
||||
|
||||
drum = AudioPlayback_GetDrum(channel->fontId, semitone);
|
||||
if (drum == NULL) {
|
||||
layer->stopSomething = true;
|
||||
layer->muted = true;
|
||||
layer->delay2 = layer->delay;
|
||||
return PROCESS_SCRIPT_END;
|
||||
}
|
||||
@@ -879,7 +879,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
|
||||
|
||||
soundEffect = AudioPlayback_GetSoundEffect(channel->fontId, sfxId);
|
||||
if (soundEffect == NULL) {
|
||||
layer->stopSomething = true;
|
||||
layer->muted = true;
|
||||
layer->delay2 = layer->delay + 1;
|
||||
return PROCESS_SCRIPT_END;
|
||||
}
|
||||
@@ -895,7 +895,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
|
||||
|
||||
layer->semitone = semitone;
|
||||
if (semitone >= 0x80) {
|
||||
layer->stopSomething = true;
|
||||
layer->muted = true;
|
||||
return PROCESS_SCRIPT_END;
|
||||
}
|
||||
|
||||
@@ -948,7 +948,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
|
||||
portamento->extent = (freqScale2 / freqScale) - 1.0f;
|
||||
|
||||
if (PORTAMENTO_IS_SPECIAL(*portamento)) {
|
||||
speed = seqPlayer->tempo * 0x8000 / gAudioCtx.tempoInternalToExternal;
|
||||
speed = seqPlayer->tempo * 0x8000 / gAudioCtx.maxTempo;
|
||||
if (layer->delay != 0) {
|
||||
speed = speed * 0x100 / (layer->delay * layer->portamentoTime);
|
||||
}
|
||||
@@ -1011,7 +1011,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
|
||||
// (It's a bit unclear if 'portamento' has actually always been
|
||||
// set when this is reached...)
|
||||
if (PORTAMENTO_IS_SPECIAL(*portamento)) {
|
||||
speed2 = seqPlayer->tempo * 0x8000 / gAudioCtx.tempoInternalToExternal;
|
||||
speed2 = seqPlayer->tempo * 0x8000 / gAudioCtx.maxTempo;
|
||||
speed2 = speed2 * 0x100 / (layer->delay * layer->portamentoTime);
|
||||
if (speed2 >= 0x7FFF) {
|
||||
speed2 = 0x7FFF;
|
||||
@@ -1036,12 +1036,12 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
|
||||
|
||||
if (cmd == 0xC0) { // layer: delay
|
||||
layer->delay = AudioSeq_ScriptReadCompressedU16(state);
|
||||
layer->stopSomething = true;
|
||||
layer->muted = true;
|
||||
layer->bit1 = false;
|
||||
return PROCESS_SCRIPT_END;
|
||||
}
|
||||
|
||||
layer->stopSomething = false;
|
||||
layer->muted = false;
|
||||
|
||||
if (channel->largeNotes == true) {
|
||||
switch (cmd & 0xC0) {
|
||||
@@ -1124,14 +1124,14 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((seqPlayer->muted && (channel->muteFlags & (MUTE_FLAGS_STOP_NOTES | MUTE_FLAGS_4))) ||
|
||||
channel->stopSomething2) {
|
||||
layer->stopSomething = true;
|
||||
if ((seqPlayer->muted && (channel->muteFlags & (MUTE_FLAGS_STOP_NOTES | MUTE_FLAGS_STOP_LAYER))) ||
|
||||
channel->muted) {
|
||||
layer->muted = true;
|
||||
return PROCESS_SCRIPT_END;
|
||||
}
|
||||
|
||||
if (seqPlayer->skipTicks != 0) {
|
||||
layer->stopSomething = true;
|
||||
layer->muted = true;
|
||||
return PROCESS_SCRIPT_END;
|
||||
}
|
||||
|
||||
@@ -1380,11 +1380,11 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
channel->adsr.decayIndex = cmd;
|
||||
break;
|
||||
|
||||
case 0xD8: // channel: set vibrato extent
|
||||
case 0xD8: // channel: set vibrato depth
|
||||
cmd = (u8)cmdArgs[0];
|
||||
channel->vibrato.vibratoExtentTarget = cmd * 8;
|
||||
channel->vibrato.vibratoExtentStart = 0;
|
||||
channel->vibrato.vibratoExtentChangeDelay = 0;
|
||||
channel->vibrato.vibratoDepthTarget = cmd * 8;
|
||||
channel->vibrato.vibratoDepthStart = 0;
|
||||
channel->vibrato.vibratoDepthChangeDelay = 0;
|
||||
break;
|
||||
|
||||
case 0xD7: // channel: set vibrato rate
|
||||
@@ -1394,13 +1394,13 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
channel->vibrato.vibratoRateStart = cmd * 32;
|
||||
break;
|
||||
|
||||
case 0xE2: // channel: set vibrato extent linear
|
||||
case 0xE2: // channel: set vibrato depth linear
|
||||
cmd = (u8)cmdArgs[0];
|
||||
channel->vibrato.vibratoExtentStart = cmd * 8;
|
||||
channel->vibrato.vibratoDepthStart = cmd * 8;
|
||||
cmd = (u8)cmdArgs[1];
|
||||
channel->vibrato.vibratoExtentTarget = cmd * 8;
|
||||
channel->vibrato.vibratoDepthTarget = cmd * 8;
|
||||
cmd = (u8)cmdArgs[2];
|
||||
channel->vibrato.vibratoExtentChangeDelay = cmd * 16;
|
||||
channel->vibrato.vibratoDepthChangeDelay = cmd * 16;
|
||||
break;
|
||||
|
||||
case 0xE1: // channel: set vibratorate linear
|
||||
@@ -1559,9 +1559,9 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
break;
|
||||
|
||||
case 0xEC: // channel: reset vibrato
|
||||
channel->vibrato.vibratoExtentTarget = 0;
|
||||
channel->vibrato.vibratoExtentStart = 0;
|
||||
channel->vibrato.vibratoExtentChangeDelay = 0;
|
||||
channel->vibrato.vibratoDepthTarget = 0;
|
||||
channel->vibrato.vibratoDepthStart = 0;
|
||||
channel->vibrato.vibratoDepthChangeDelay = 0;
|
||||
channel->vibrato.vibratoRateTarget = 0;
|
||||
channel->vibrato.vibratoRateStart = 0;
|
||||
channel->vibrato.vibratoRateChangeDelay = 0;
|
||||
@@ -1667,9 +1667,9 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
case 0xBE: // channel:
|
||||
if (cmdArgs[0] < 5) {
|
||||
if (1) {}
|
||||
if (gAudioCtx.unk_29A8[cmdArgs[0]] != NULL) {
|
||||
gCustomAudioSeqFunction = gAudioCtx.unk_29A8[cmdArgs[0]];
|
||||
scriptState->value = gCustomAudioSeqFunction(scriptState->value, channel);
|
||||
if (gAudioCtx.customSeqFunctions[cmdArgs[0]] != NULL) {
|
||||
gAudioCustomSeqFunction = gAudioCtx.customSeqFunctions[cmdArgs[0]];
|
||||
scriptState->value = gAudioCustomSeqFunction(scriptState->value, channel);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1698,13 +1698,13 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
break;
|
||||
|
||||
case 0xA5: // channel:
|
||||
scriptState->value += channel->unk_11;
|
||||
scriptState->value += channel->channelIndex;
|
||||
break;
|
||||
|
||||
case 0xA6: // channel:
|
||||
cmd = (u8)cmdArgs[0];
|
||||
cmdArgU16 = (u16)cmdArgs[1];
|
||||
seqData = seqPlayer->seqData + (u32)(cmdArgU16 + channel->unk_11);
|
||||
seqData = seqPlayer->seqData + (u32)(cmdArgU16 + channel->channelIndex);
|
||||
seqData[0] = (u8)scriptState->value + cmd;
|
||||
break;
|
||||
|
||||
@@ -1766,7 +1766,7 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
break;
|
||||
|
||||
case 0x70: // channel: io write value
|
||||
channel->soundScriptIO[lowBits] = scriptState->value;
|
||||
channel->seqScriptIO[lowBits] = scriptState->value;
|
||||
break;
|
||||
|
||||
case 0x78: // channel: set layer relative
|
||||
@@ -1792,26 +1792,26 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
|
||||
case 0x10: // channel: load sample
|
||||
if (lowBits < 8) {
|
||||
channel->soundScriptIO[lowBits] = SEQ_IO_VAL_NONE;
|
||||
if (AudioLoad_SlowLoadSample(channel->fontId, scriptState->value,
|
||||
&channel->soundScriptIO[lowBits]) == -1) {}
|
||||
channel->seqScriptIO[lowBits] = SEQ_IO_VAL_NONE;
|
||||
if (AudioLoad_SlowLoadSample(channel->fontId, scriptState->value, &channel->seqScriptIO[lowBits]) ==
|
||||
-1) {}
|
||||
} else {
|
||||
lowBits -= 8;
|
||||
channel->soundScriptIO[lowBits] = SEQ_IO_VAL_NONE;
|
||||
channel->seqScriptIO[lowBits] = SEQ_IO_VAL_NONE;
|
||||
if (AudioLoad_SlowLoadSample(channel->fontId, channel->unk_22 + 0x100,
|
||||
&channel->soundScriptIO[lowBits]) == -1) {}
|
||||
&channel->seqScriptIO[lowBits]) == -1) {}
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x60: // channel: io read value
|
||||
scriptState->value = channel->soundScriptIO[lowBits];
|
||||
scriptState->value = channel->seqScriptIO[lowBits];
|
||||
if (lowBits < 2) {
|
||||
channel->soundScriptIO[lowBits] = SEQ_IO_VAL_NONE;
|
||||
channel->seqScriptIO[lowBits] = SEQ_IO_VAL_NONE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x50: // channel: io read value subtract
|
||||
scriptState->value -= channel->soundScriptIO[lowBits];
|
||||
scriptState->value -= channel->seqScriptIO[lowBits];
|
||||
break;
|
||||
|
||||
case 0x20: // channel: start channel
|
||||
@@ -1821,12 +1821,12 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
||||
|
||||
case 0x30: // channel: io write value 2
|
||||
cmd = AudioSeq_ScriptReadU8(scriptState);
|
||||
seqPlayer->channels[lowBits]->soundScriptIO[cmd] = scriptState->value;
|
||||
seqPlayer->channels[lowBits]->seqScriptIO[cmd] = scriptState->value;
|
||||
break;
|
||||
|
||||
case 0x40: // channel: io read value 2
|
||||
cmd = AudioSeq_ScriptReadU8(scriptState);
|
||||
scriptState->value = seqPlayer->channels[lowBits]->soundScriptIO[cmd];
|
||||
scriptState->value = seqPlayer->channels[lowBits]->seqScriptIO[cmd];
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1879,18 +1879,18 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
|
||||
seqPlayer->scriptCounter++;
|
||||
|
||||
tempoChange = seqPlayer->tempo + seqPlayer->unk_0C;
|
||||
if (tempoChange > gAudioCtx.tempoInternalToExternal) {
|
||||
tempoChange = gAudioCtx.tempoInternalToExternal;
|
||||
tempoChange = seqPlayer->tempo + seqPlayer->tempoChange;
|
||||
if (tempoChange > gAudioCtx.maxTempo) {
|
||||
tempoChange = gAudioCtx.maxTempo;
|
||||
}
|
||||
|
||||
seqPlayer->tempoAcc += tempoChange;
|
||||
|
||||
if (seqPlayer->tempoAcc < gAudioCtx.tempoInternalToExternal) {
|
||||
if (seqPlayer->tempoAcc < gAudioCtx.maxTempo) {
|
||||
return;
|
||||
}
|
||||
|
||||
seqPlayer->tempoAcc -= (u16)gAudioCtx.tempoInternalToExternal;
|
||||
seqPlayer->tempoAcc -= (u16)gAudioCtx.maxTempo;
|
||||
seqPlayer->unk_16++;
|
||||
|
||||
if (seqPlayer->stopScript == true) {
|
||||
@@ -1943,8 +1943,8 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
|
||||
case 0xDD: // seqPlayer: set tempo
|
||||
seqPlayer->tempo = AudioSeq_ScriptReadU8(seqScript) * TATUMS_PER_BEAT;
|
||||
if (seqPlayer->tempo > gAudioCtx.tempoInternalToExternal) {
|
||||
seqPlayer->tempo = gAudioCtx.tempoInternalToExternal;
|
||||
if (seqPlayer->tempo > gAudioCtx.maxTempo) {
|
||||
seqPlayer->tempo = gAudioCtx.maxTempo;
|
||||
}
|
||||
|
||||
if ((s16)seqPlayer->tempo <= 0) {
|
||||
@@ -1953,7 +1953,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
break;
|
||||
|
||||
case 0xDC: // seqPlayer: add tempo
|
||||
seqPlayer->unk_0C = (s8)AudioSeq_ScriptReadU8(seqScript) * TATUMS_PER_BEAT;
|
||||
seqPlayer->tempoChange = (s8)AudioSeq_ScriptReadU8(seqScript) * TATUMS_PER_BEAT;
|
||||
break;
|
||||
|
||||
case 0xDA: // seqPlayer: change volume
|
||||
@@ -1961,14 +1961,14 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
temp = AudioSeq_ScriptReadS16(seqScript);
|
||||
switch (cmd) {
|
||||
case SEQPLAYER_STATE_0:
|
||||
case SEQPLAYER_STATE_1:
|
||||
if (seqPlayer->state != SEQPLAYER_STATE_2) {
|
||||
seqPlayer->fadeTimerUnkEu = temp;
|
||||
case SEQPLAYER_STATE_FADE_IN:
|
||||
if (seqPlayer->state != SEQPLAYER_STATE_FADE_OUT) {
|
||||
seqPlayer->storedFadeTimer = temp;
|
||||
seqPlayer->state = cmd;
|
||||
}
|
||||
break;
|
||||
|
||||
case SEQPLAYER_STATE_2:
|
||||
case SEQPLAYER_STATE_FADE_OUT:
|
||||
seqPlayer->fadeTimer = temp;
|
||||
seqPlayer->state = cmd;
|
||||
seqPlayer->fadeVelocity = (0.0f - seqPlayer->fadeVolume) / (s32)seqPlayer->fadeTimer;
|
||||
@@ -1979,13 +1979,13 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
case 0xDB: // seqPlayer: set volume
|
||||
value = AudioSeq_ScriptReadU8(seqScript);
|
||||
switch (seqPlayer->state) {
|
||||
case SEQPLAYER_STATE_1:
|
||||
case SEQPLAYER_STATE_FADE_IN:
|
||||
seqPlayer->state = SEQPLAYER_STATE_0;
|
||||
seqPlayer->fadeVolume = 0.0f;
|
||||
// fallthrough
|
||||
case SEQPLAYER_STATE_0:
|
||||
seqPlayer->fadeTimer = seqPlayer->fadeTimerUnkEu;
|
||||
if (seqPlayer->fadeTimerUnkEu != 0) {
|
||||
seqPlayer->fadeTimer = seqPlayer->storedFadeTimer;
|
||||
if (seqPlayer->storedFadeTimer != 0) {
|
||||
seqPlayer->fadeVelocity =
|
||||
((value / 127.0f) - seqPlayer->fadeVolume) / (s32)seqPlayer->fadeTimer;
|
||||
} else {
|
||||
@@ -1993,7 +1993,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
}
|
||||
break;
|
||||
|
||||
case SEQPLAYER_STATE_2:
|
||||
case SEQPLAYER_STATE_FADE_OUT:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -2104,7 +2104,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
cmd = AudioSeq_ScriptReadU8(seqScript);
|
||||
if (cmd == 0xFF) {
|
||||
cmd = seqPlayer->playerIndex;
|
||||
if (seqPlayer->state == SEQPLAYER_STATE_2) {
|
||||
if (seqPlayer->state == SEQPLAYER_STATE_FADE_OUT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2123,7 +2123,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
temp = *new_var;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(seqPlayer->channels); i++) {
|
||||
seqPlayer->channels[i]->stopSomething2 = temp & 1;
|
||||
seqPlayer->channels[i]->muted = temp & 1;
|
||||
temp = temp >> 1;
|
||||
}
|
||||
}
|
||||
@@ -2141,17 +2141,17 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
break;
|
||||
|
||||
case 0x50: // seqPlayer: io read value subtract
|
||||
seqScript->value -= seqPlayer->soundScriptIO[cmdLowBits];
|
||||
seqScript->value -= seqPlayer->seqScriptIO[cmdLowBits];
|
||||
break;
|
||||
|
||||
case 0x70: // seqPlayer: io write value
|
||||
seqPlayer->soundScriptIO[cmdLowBits] = seqScript->value;
|
||||
seqPlayer->seqScriptIO[cmdLowBits] = seqScript->value;
|
||||
break;
|
||||
|
||||
case 0x80: // seqPlayer: io read value
|
||||
seqScript->value = seqPlayer->soundScriptIO[cmdLowBits];
|
||||
seqScript->value = seqPlayer->seqScriptIO[cmdLowBits];
|
||||
if (cmdLowBits < 2) {
|
||||
seqPlayer->soundScriptIO[cmdLowBits] = SEQ_IO_VAL_NONE;
|
||||
seqPlayer->seqScriptIO[cmdLowBits] = SEQ_IO_VAL_NONE;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2173,14 +2173,14 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
||||
cmd = AudioSeq_ScriptReadU8(seqScript);
|
||||
temp = AudioSeq_ScriptReadS16(seqScript);
|
||||
data2 = &seqPlayer->seqData[temp];
|
||||
AudioLoad_SlowLoadSeq(cmd, data2, &seqPlayer->soundScriptIO[cmdLowBits]);
|
||||
AudioLoad_SlowLoadSeq(cmd, data2, &seqPlayer->seqScriptIO[cmdLowBits]);
|
||||
break;
|
||||
|
||||
case 0x60: // seqPlayer: async load
|
||||
cmd = AudioSeq_ScriptReadU8(seqScript);
|
||||
value = cmd;
|
||||
temp = AudioSeq_ScriptReadU8(seqScript);
|
||||
AudioLoad_ScriptLoad(value, temp, &seqPlayer->soundScriptIO[cmdLowBits]);
|
||||
AudioLoad_ScriptLoad(value, temp, &seqPlayer->seqScriptIO[cmdLowBits]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2220,17 +2220,17 @@ void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer) {
|
||||
}
|
||||
|
||||
void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) {
|
||||
s32 i;
|
||||
s32 channelIndex;
|
||||
|
||||
AudioSeq_SequencePlayerDisable(seqPlayer);
|
||||
seqPlayer->stopScript = false;
|
||||
seqPlayer->delay = 0;
|
||||
seqPlayer->state = SEQPLAYER_STATE_1;
|
||||
seqPlayer->state = SEQPLAYER_STATE_FADE_IN;
|
||||
seqPlayer->fadeTimer = 0;
|
||||
seqPlayer->fadeTimerUnkEu = 0;
|
||||
seqPlayer->storedFadeTimer = 0;
|
||||
seqPlayer->tempoAcc = 0;
|
||||
seqPlayer->tempo = 120 * TATUMS_PER_BEAT; // 120 BPM
|
||||
seqPlayer->unk_0C = 0;
|
||||
seqPlayer->tempoChange = 0;
|
||||
seqPlayer->transposition = 0;
|
||||
seqPlayer->noteAllocPolicy = 0;
|
||||
seqPlayer->shortNoteVelocityTable = gDefaultShortNoteVelocityTable;
|
||||
@@ -2242,32 +2242,32 @@ void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) {
|
||||
seqPlayer->volume = 0.0f;
|
||||
seqPlayer->muteVolumeScale = 0.5f;
|
||||
|
||||
for (i = 0; i < SEQ_NUM_CHANNELS; i++) {
|
||||
AudioSeq_InitSequenceChannel(seqPlayer->channels[i]);
|
||||
for (channelIndex = 0; channelIndex < SEQ_NUM_CHANNELS; channelIndex++) {
|
||||
AudioSeq_InitSequenceChannel(seqPlayer->channels[channelIndex]);
|
||||
}
|
||||
}
|
||||
|
||||
void AudioSeq_InitSequencePlayerChannels(s32 playerIndex) {
|
||||
void AudioSeq_InitSequencePlayerChannels(s32 seqPlayerIndex) {
|
||||
SequenceChannel* channel;
|
||||
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIndex];
|
||||
s32 i;
|
||||
s32 j;
|
||||
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
|
||||
s32 channelIndex;
|
||||
s32 layerIndex;
|
||||
|
||||
for (i = 0; i < SEQ_NUM_CHANNELS; i++) {
|
||||
seqPlayer->channels[i] = AudioHeap_AllocZeroed(&gAudioCtx.miscPool, sizeof(SequenceChannel));
|
||||
if (seqPlayer->channels[i] == NULL) {
|
||||
seqPlayer->channels[i] = &gAudioCtx.sequenceChannelNone;
|
||||
for (channelIndex = 0; channelIndex < SEQ_NUM_CHANNELS; channelIndex++) {
|
||||
seqPlayer->channels[channelIndex] = AudioHeap_AllocZeroed(&gAudioCtx.miscPool, sizeof(SequenceChannel));
|
||||
if (seqPlayer->channels[channelIndex] == NULL) {
|
||||
seqPlayer->channels[channelIndex] = &gAudioCtx.sequenceChannelNone;
|
||||
} else {
|
||||
channel = seqPlayer->channels[i];
|
||||
channel = seqPlayer->channels[channelIndex];
|
||||
channel->seqPlayer = seqPlayer;
|
||||
channel->enabled = false;
|
||||
channel->unk_11 = i;
|
||||
for (j = 0; j < ARRAY_COUNT(channel->layers); j++) {
|
||||
channel->layers[j] = NULL;
|
||||
channel->channelIndex = channelIndex;
|
||||
for (layerIndex = 0; layerIndex < ARRAY_COUNT(channel->layers); layerIndex++) {
|
||||
channel->layers[layerIndex] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
AudioSeq_InitSequenceChannel(seqPlayer->channels[i]);
|
||||
AudioSeq_InitSequenceChannel(seqPlayer->channels[channelIndex]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2285,8 +2285,8 @@ void AudioSeq_InitSequencePlayer(SequencePlayer* seqPlayer) {
|
||||
seqPlayer->seqDmaInProgress = false;
|
||||
seqPlayer->applyBend = false;
|
||||
|
||||
for (j = 0; j < ARRAY_COUNT(seqPlayer->soundScriptIO); j++) {
|
||||
seqPlayer->soundScriptIO[j] = SEQ_IO_VAL_NONE;
|
||||
for (j = 0; j < ARRAY_COUNT(seqPlayer->seqScriptIO); j++) {
|
||||
seqPlayer->seqScriptIO[j] = SEQ_IO_VAL_NONE;
|
||||
}
|
||||
|
||||
seqPlayer->muteFlags = MUTE_FLAGS_SOFTEN | MUTE_FLAGS_STOP_NOTES;
|
||||
|
||||
@@ -866,8 +866,8 @@ Acmd* AudioSynth_ProcessSamples(s16* aiBuf, s32 numSamplesPerUpdate, Acmd* cmd,
|
||||
size = numSamplesPerUpdate * SAMPLE_SIZE;
|
||||
aInterleave(cmd++, DMEM_TEMP, DMEM_LEFT_CH, DMEM_RIGHT_CH, size);
|
||||
|
||||
if (gCustomAudioSynthFunction != NULL) {
|
||||
cmd = gCustomAudioSynthFunction(cmd, 2 * size, updateIndex);
|
||||
if (gAudioCustomSynthFunction != NULL) {
|
||||
cmd = gAudioCustomSynthFunction(cmd, 2 * size, updateIndex);
|
||||
}
|
||||
aSaveBuffer(cmd++, DMEM_TEMP, aiBuf, 2 * size);
|
||||
|
||||
@@ -1109,8 +1109,8 @@ Acmd* AudioSynth_ProcessSample(s32 noteIndex, NoteSampleState* sampleState, Note
|
||||
|
||||
case CODEC_REVERB:
|
||||
reverbAddrSrc = (void*)0xFFFFFFFF;
|
||||
if (gCustomAudioReverbFunction != NULL) {
|
||||
reverbAddrSrc = gCustomAudioReverbFunction(sample, numSamplesToLoadAdj, flags, noteIndex);
|
||||
if (gAudioCustomReverbFunction != NULL) {
|
||||
reverbAddrSrc = gAudioCustomReverbFunction(sample, numSamplesToLoadAdj, flags, noteIndex);
|
||||
}
|
||||
|
||||
if (reverbAddrSrc == (void*)0xFFFFFFFF) {
|
||||
|
||||
@@ -0,0 +1,977 @@
|
||||
/**
|
||||
* @file audio_thread.c
|
||||
*
|
||||
* Top-level file that coordinates all audio code on the audio thread.
|
||||
*/
|
||||
#include "global.h"
|
||||
|
||||
AudioTask* AudioThread_UpdateImpl(void);
|
||||
void AudioThread_SetFadeOutTimer(s32 seqPlayerIndex, s32 fadeTimer);
|
||||
void AudioThread_SetFadeInTimer(s32 seqPlayerIndex, s32 fadeTimer);
|
||||
void AudioThread_ProcessCmds(u32 msg);
|
||||
void AudioThread_ProcessSeqPlayerCmd(SequencePlayer* seqPlayer, AudioCmd* cmd);
|
||||
void AudioThread_ProcessChannelCmd(SequenceChannel* channel, AudioCmd* cmd);
|
||||
s32 AudioThread_GetSamplePos(s32 seqPlayerIndex, s32 channelIndex, s32 layerIndex, s32* loopEnd, s32* samplePosInt);
|
||||
s32 AudioThread_CountAndReleaseNotes(s32 flags);
|
||||
|
||||
AudioTask* AudioThread_Update(void) {
|
||||
return AudioThread_UpdateImpl();
|
||||
}
|
||||
|
||||
AudioTask* AudioThread_UpdateImpl(void) {
|
||||
static AudioTask* sWaitingAudioTask = NULL;
|
||||
u32 numSamplesRemainingInAi;
|
||||
s32 numAbiCmds;
|
||||
s32 pad;
|
||||
s32 j;
|
||||
s32 dmaCount;
|
||||
s16* curAiBuffer;
|
||||
OSTask_t* task;
|
||||
s32 index;
|
||||
u32 msg;
|
||||
s32 validCount;
|
||||
s32 i;
|
||||
|
||||
gAudioCtx.totalTaskCount++;
|
||||
if ((gAudioCtx.totalTaskCount % gAudioCtx.audioBufferParameters.specUnk4) != 0) {
|
||||
if (gAudioCustomUpdateFunction != NULL) {
|
||||
gAudioCustomUpdateFunction();
|
||||
}
|
||||
|
||||
if (((gAudioCtx.totalTaskCount % gAudioCtx.audioBufferParameters.specUnk4) + 1) ==
|
||||
gAudioCtx.audioBufferParameters.specUnk4) {
|
||||
return sWaitingAudioTask;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
osSendMesg(gAudioCtx.taskStartQueueP, gAudioCtx.totalTaskCount, OS_MESG_NOBLOCK);
|
||||
gAudioCtx.rspTaskIndex ^= 1;
|
||||
gAudioCtx.curAiBufferIndex++;
|
||||
gAudioCtx.curAiBufferIndex %= 3;
|
||||
index = (gAudioCtx.curAiBufferIndex + 1) % 3;
|
||||
|
||||
// Division converts size to numSamples: 2 channels (left/right) * 2 bytes per sample
|
||||
numSamplesRemainingInAi = osAiGetLength() / (2 * SAMPLE_SIZE);
|
||||
|
||||
if (gAudioCtx.resetTimer < 16) {
|
||||
if (gAudioCtx.numSamplesPerFrame[index] != 0) {
|
||||
osAiSetNextBuffer(gAudioCtx.aiBuffers[index], 2 * gAudioCtx.numSamplesPerFrame[index] * (s32)SAMPLE_SIZE);
|
||||
if (gAudioCtx.aiBuffers[index]) {}
|
||||
if (gAudioCtx.numSamplesPerFrame[index]) {}
|
||||
}
|
||||
}
|
||||
|
||||
if (gAudioCustomUpdateFunction != NULL) {
|
||||
gAudioCustomUpdateFunction();
|
||||
}
|
||||
|
||||
dmaCount = gAudioCtx.curAudioFrameDmaCount;
|
||||
for (i = 0; i < gAudioCtx.curAudioFrameDmaCount; i++) {
|
||||
if (osRecvMesg(&gAudioCtx.curAudioFrameDmaQueue, NULL, OS_MESG_NOBLOCK) == 0) {
|
||||
dmaCount--;
|
||||
}
|
||||
}
|
||||
|
||||
if (dmaCount != 0) {
|
||||
for (i = 0; i < dmaCount; i++) {
|
||||
osRecvMesg(&gAudioCtx.curAudioFrameDmaQueue, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
validCount = gAudioCtx.curAudioFrameDmaQueue.validCount;
|
||||
if (validCount != 0) {
|
||||
for (i = 0; i < validCount; i++) {
|
||||
osRecvMesg(&gAudioCtx.curAudioFrameDmaQueue, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
gAudioCtx.curAudioFrameDmaCount = 0;
|
||||
AudioLoad_DecreaseSampleDmaTtls();
|
||||
AudioLoad_ProcessLoads(gAudioCtx.resetStatus);
|
||||
AudioLoad_ProcessScriptLoads();
|
||||
|
||||
if (gAudioCtx.resetStatus != 0) {
|
||||
if (AudioHeap_ResetStep() == 0) {
|
||||
if (gAudioCtx.resetStatus == 0) {
|
||||
osSendMesg(gAudioCtx.audioResetQueueP, gAudioCtx.specId, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
sWaitingAudioTask = NULL;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (gAudioCtx.resetTimer > 16) {
|
||||
return NULL;
|
||||
}
|
||||
if (gAudioCtx.resetTimer != 0) {
|
||||
gAudioCtx.resetTimer++;
|
||||
}
|
||||
|
||||
gAudioCtx.curTask = &gAudioCtx.rspTask[gAudioCtx.rspTaskIndex];
|
||||
gAudioCtx.curAbiCmdBuf = gAudioCtx.abiCmdBufs[gAudioCtx.rspTaskIndex];
|
||||
|
||||
index = gAudioCtx.curAiBufferIndex;
|
||||
curAiBuffer = gAudioCtx.aiBuffers[index];
|
||||
|
||||
gAudioCtx.numSamplesPerFrame[index] =
|
||||
(s16)((((gAudioCtx.audioBufferParameters.numSamplesPerFrameTarget - numSamplesRemainingInAi) +
|
||||
(8 * SAMPLES_PER_FRAME)) &
|
||||
~0xF) +
|
||||
(1 * SAMPLES_PER_FRAME));
|
||||
|
||||
// Clamp numSamplesPerFrame between numSamplesPerFrameMin and numSamplesPerFrameMax
|
||||
if (gAudioCtx.numSamplesPerFrame[index] < gAudioCtx.audioBufferParameters.numSamplesPerFrameMin) {
|
||||
gAudioCtx.numSamplesPerFrame[index] = gAudioCtx.audioBufferParameters.numSamplesPerFrameMin;
|
||||
}
|
||||
if (gAudioCtx.numSamplesPerFrame[index] > gAudioCtx.audioBufferParameters.numSamplesPerFrameMax) {
|
||||
gAudioCtx.numSamplesPerFrame[index] = gAudioCtx.audioBufferParameters.numSamplesPerFrameMax;
|
||||
}
|
||||
|
||||
j = 0;
|
||||
if (gAudioCtx.resetStatus == 0) {
|
||||
// msg = 0000RREE R = read pos, E = End Pos
|
||||
while (osRecvMesg(gAudioCtx.threadCmdProcQueueP, (OSMesg*)&msg, OS_MESG_NOBLOCK) != -1) {
|
||||
//! FAKE:
|
||||
if (1) {}
|
||||
AudioThread_ProcessCmds(msg);
|
||||
j++;
|
||||
}
|
||||
if ((j == 0) && gAudioCtx.threadCmdQueueFinished) {
|
||||
AudioThread_ScheduleProcessCmds();
|
||||
}
|
||||
}
|
||||
|
||||
if (gAudioSPDataPtr == (u64*)gAudioCtx.curAbiCmdBuf) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gAudioCtx.curAbiCmdBuf =
|
||||
AudioSynth_Update(gAudioCtx.curAbiCmdBuf, &numAbiCmds, curAiBuffer, gAudioCtx.numSamplesPerFrame[index]);
|
||||
|
||||
// Update audioRandom to the next random number
|
||||
gAudioCtx.audioRandom = (gAudioCtx.audioRandom + gAudioCtx.totalTaskCount) * osGetCount();
|
||||
gAudioCtx.audioRandom = gAudioCtx.audioRandom + gAudioCtx.aiBuffers[index][gAudioCtx.totalTaskCount & 0xFF];
|
||||
|
||||
// gWaveSamples[8] interprets compiled assembly code as s16 samples as a way to generate sound with noise.
|
||||
// Start with the address of AudioThread_Update(), and offset it by a random number between 0 - 0xFFF0
|
||||
// Use the resulting address as the starting address to interpret an array of samples i.e. `s16 samples[]`
|
||||
gWaveSamples[8] = (s16*)((u8*)AudioThread_Update + (gAudioCtx.audioRandom & 0xFFF0));
|
||||
|
||||
index = gAudioCtx.rspTaskIndex;
|
||||
gAudioCtx.curTask->taskQueue = NULL;
|
||||
gAudioCtx.curTask->unk_44 = NULL;
|
||||
|
||||
task = &gAudioCtx.curTask->task.t;
|
||||
task->type = M_AUDTASK;
|
||||
task->flags = 0;
|
||||
task->ucodeBoot = aspMainTextStart;
|
||||
task->ucodeBootSize = SP_UCODE_SIZE;
|
||||
task->ucodeDataSize = ((aspMainDataEnd - aspMainDataStart) * sizeof(u64)) - 1;
|
||||
task->ucode = aspMainTextStart;
|
||||
task->ucodeData = aspMainDataStart;
|
||||
task->ucodeSize = SP_UCODE_SIZE;
|
||||
task->dramStack = (u64*)D_801D6200;
|
||||
task->dramStackSize = 0;
|
||||
task->outputBuff = NULL;
|
||||
task->outputBuffSize = NULL;
|
||||
if (1) {}
|
||||
task->dataPtr = (u64*)gAudioCtx.abiCmdBufs[index];
|
||||
task->dataSize = numAbiCmds * sizeof(Acmd);
|
||||
task->yieldDataPtr = NULL;
|
||||
task->yieldDataSize = 0;
|
||||
|
||||
if (gAudioCtx.numAbiCmdsMax < numAbiCmds) {
|
||||
gAudioCtx.numAbiCmdsMax = numAbiCmds;
|
||||
}
|
||||
|
||||
if (gAudioCtx.audioBufferParameters.specUnk4 == 1) {
|
||||
return gAudioCtx.curTask;
|
||||
} else {
|
||||
sWaitingAudioTask = gAudioCtx.curTask;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
|
||||
s32 i;
|
||||
s32 pad;
|
||||
|
||||
switch (cmd->op) {
|
||||
case AUDIOCMD_OP_GLOBAL_SYNC_LOAD_SEQ_PARTS:
|
||||
AudioLoad_SyncLoadSeqParts(cmd->arg1, cmd->arg2, cmd->asInt, &gAudioCtx.externalLoadQueue);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER:
|
||||
AudioLoad_SyncInitSeqPlayer(cmd->arg0, cmd->arg1, cmd->arg2);
|
||||
AudioThread_SetFadeInTimer(cmd->arg0, cmd->asInt);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER_SKIP_TICKS:
|
||||
AudioLoad_SyncInitSeqPlayerSkipTicks(cmd->arg0, cmd->arg1, cmd->asInt);
|
||||
AudioThread_SetFadeInTimer(cmd->arg0, 500);
|
||||
AudioSeq_SkipForwardSequence(&gAudioCtx.seqPlayers[cmd->arg0]);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_DISABLE_SEQPLAYER:
|
||||
if (gAudioCtx.seqPlayers[cmd->arg0].enabled) {
|
||||
if (cmd->asInt == 0) {
|
||||
AudioSeq_SequencePlayerDisableAsFinished(&gAudioCtx.seqPlayers[cmd->arg0]);
|
||||
} else {
|
||||
AudioThread_SetFadeOutTimer(cmd->arg0, cmd->asInt);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SET_SOUND_MODE:
|
||||
gAudioCtx.soundMode = cmd->asInt;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_MUTE:
|
||||
if (cmd->arg0 == AUDIOCMD_ALL_SEQPLAYERS) {
|
||||
for (i = 0; i < gAudioCtx.audioBufferParameters.numSequencePlayers; i++) {
|
||||
gAudioCtx.seqPlayers[i].muted = true;
|
||||
gAudioCtx.seqPlayers[i].recalculateVolume = true;
|
||||
}
|
||||
} else {
|
||||
gAudioCtx.seqPlayers[cmd->arg0].muted = true;
|
||||
gAudioCtx.seqPlayers[cmd->arg0].recalculateVolume = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_UNMUTE:
|
||||
if (cmd->asInt == true) {
|
||||
for (i = 0; i < gAudioCtx.numNotes; i++) {
|
||||
Note* note = &gAudioCtx.notes[i];
|
||||
NoteSampleState* noteSampleState = ¬e->sampleState;
|
||||
|
||||
if (noteSampleState->bitField0.enabled && (note->playbackState.status == PLAYBACK_STATUS_0) &&
|
||||
(note->playbackState.parentLayer->channel->muteFlags & MUTE_FLAGS_STOP_SAMPLES)) {
|
||||
noteSampleState->bitField0.finished = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cmd->arg0 == AUDIOCMD_ALL_SEQPLAYERS) {
|
||||
for (i = 0; i < gAudioCtx.audioBufferParameters.numSequencePlayers; i++) {
|
||||
gAudioCtx.seqPlayers[i].muted = false;
|
||||
gAudioCtx.seqPlayers[i].recalculateVolume = true;
|
||||
}
|
||||
} else {
|
||||
gAudioCtx.seqPlayers[cmd->arg0].muted = false;
|
||||
gAudioCtx.seqPlayers[cmd->arg0].recalculateVolume = true;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SYNC_LOAD_INSTRUMENT:
|
||||
AudioLoad_SyncLoadInstrument(cmd->arg0, cmd->arg1, cmd->arg2);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_SAMPLE_BANK:
|
||||
AudioLoad_AsyncLoadSampleBank(cmd->arg0, cmd->arg1, cmd->arg2, &gAudioCtx.externalLoadQueue);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_FONT:
|
||||
AudioLoad_AsyncLoadFont(cmd->arg0, cmd->arg1, cmd->arg2, &gAudioCtx.externalLoadQueue);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_ASYNC_LOAD_SEQ:
|
||||
AudioLoad_AsyncLoadSeq(cmd->arg0, cmd->arg1, cmd->arg2, &gAudioCtx.externalLoadQueue);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_DISCARD_SEQ_FONTS:
|
||||
AudioLoad_DiscardSeqFonts(cmd->arg1);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SET_CHANNEL_MASK:
|
||||
gAudioCtx.threadCmdChannelMask[cmd->arg0] = cmd->asUShort;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_RESET_AUDIO_HEAP:
|
||||
gAudioCtx.resetStatus = 5;
|
||||
gAudioCtx.specId = cmd->asUInt;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SET_CUSTOM_UPDATE_FUNCTION:
|
||||
gAudioCustomUpdateFunction = cmd->asUInt;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SET_CUSTOM_FUNCTION:
|
||||
if (cmd->arg2 == AUDIO_CUSTOM_FUNCTION_REVERB) {
|
||||
gAudioCustomReverbFunction = cmd->asUInt;
|
||||
} else if (cmd->arg2 == AUDIO_CUSTOM_FUNCTION_SYNTH) {
|
||||
gAudioCustomSynthFunction = cmd->asUInt;
|
||||
} else {
|
||||
gAudioCtx.customSeqFunctions[cmd->arg2] = cmd->asUInt;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SET_DRUM_FONT:
|
||||
case AUDIOCMD_OP_GLOBAL_SET_SFX_FONT:
|
||||
case AUDIOCMD_OP_GLOBAL_SET_INSTRUMENT_FONT:
|
||||
if (AudioPlayback_SetFontInstrument(cmd->op - AUDIOCMD_OP_GLOBAL_SET_DRUM_FONT, cmd->arg1, cmd->arg2,
|
||||
cmd->asInt)) {}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_DISABLE_ALL_SEQPLAYERS: {
|
||||
u32 flags = cmd->asUInt;
|
||||
|
||||
if (flags == AUDIO_NOTE_RELEASE) {
|
||||
for (i = 0; i < gAudioCtx.audioBufferParameters.numSequencePlayers; i++) {
|
||||
if (gAudioCtx.seqPlayers[i].enabled) {
|
||||
AudioSeq_SequencePlayerDisableAsFinished(&gAudioCtx.seqPlayers[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
AudioThread_CountAndReleaseNotes(flags);
|
||||
break;
|
||||
}
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_POP_PERSISTENT_CACHE:
|
||||
AudioHeap_PopPersistentCache(cmd->asInt);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_E5:
|
||||
func_8018FA60(cmd->arg0, cmd->arg1, cmd->arg2, cmd->asInt);
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SET_REVERB_DATA:
|
||||
AudioHeap_SetReverbData(cmd->arg1, cmd->arg0, cmd->asInt, false);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void AudioThread_SetFadeOutTimer(s32 seqPlayerIndex, s32 fadeTimer) {
|
||||
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
|
||||
|
||||
if (fadeTimer == 0) {
|
||||
fadeTimer = 1;
|
||||
}
|
||||
|
||||
seqPlayer->fadeVelocity = -(seqPlayer->fadeVolume / fadeTimer);
|
||||
seqPlayer->state = SEQPLAYER_STATE_FADE_OUT;
|
||||
seqPlayer->fadeTimer = fadeTimer;
|
||||
}
|
||||
|
||||
void AudioThread_SetFadeInTimer(s32 seqPlayerIndex, s32 fadeTimer) {
|
||||
SequencePlayer* seqPlayer;
|
||||
|
||||
if (fadeTimer != 0) {
|
||||
seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
|
||||
seqPlayer->state = SEQPLAYER_STATE_FADE_IN;
|
||||
seqPlayer->storedFadeTimer = fadeTimer;
|
||||
seqPlayer->fadeTimer = fadeTimer;
|
||||
seqPlayer->fadeVolume = 0.0f;
|
||||
seqPlayer->fadeVelocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void AudioThread_InitMesgQueuesInternal(void) {
|
||||
gAudioCtx.threadCmdWritePos = 0;
|
||||
gAudioCtx.threadCmdReadPos = 0;
|
||||
gAudioCtx.threadCmdQueueFinished = false;
|
||||
|
||||
gAudioCtx.taskStartQueueP = &gAudioCtx.taskStartQueue;
|
||||
gAudioCtx.threadCmdProcQueueP = &gAudioCtx.threadCmdProcQueue;
|
||||
gAudioCtx.audioResetQueueP = &gAudioCtx.audioResetQueue;
|
||||
|
||||
osCreateMesgQueue(gAudioCtx.taskStartQueueP, gAudioCtx.taskStartMsgs, ARRAY_COUNT(gAudioCtx.taskStartMsgs));
|
||||
osCreateMesgQueue(gAudioCtx.threadCmdProcQueueP, gAudioCtx.threadCmdProcMsgBuf,
|
||||
ARRAY_COUNT(gAudioCtx.threadCmdProcMsgBuf));
|
||||
osCreateMesgQueue(gAudioCtx.audioResetQueueP, gAudioCtx.audioResetMesgs, ARRAY_COUNT(gAudioCtx.audioResetMesgs));
|
||||
}
|
||||
|
||||
void AudioThread_QueueCmd(u32 opArgs, void** data) {
|
||||
AudioCmd* cmd = &gAudioCtx.threadCmdBuf[gAudioCtx.threadCmdWritePos & 0xFF];
|
||||
|
||||
cmd->opArgs = opArgs;
|
||||
cmd->data = *data;
|
||||
|
||||
gAudioCtx.threadCmdWritePos++;
|
||||
|
||||
if (gAudioCtx.threadCmdWritePos == gAudioCtx.threadCmdReadPos) {
|
||||
gAudioCtx.threadCmdWritePos--;
|
||||
}
|
||||
}
|
||||
|
||||
void AudioThread_QueueCmdF32(u32 opArgs, f32 data) {
|
||||
AudioThread_QueueCmd(opArgs, (void**)&data);
|
||||
}
|
||||
|
||||
void AudioThread_QueueCmdS32(u32 opArgs, s32 data) {
|
||||
AudioThread_QueueCmd(opArgs, (void**)&data);
|
||||
}
|
||||
|
||||
void AudioThread_QueueCmdS8(u32 opArgs, s8 data) {
|
||||
u32 uData = data << 0x18;
|
||||
|
||||
AudioThread_QueueCmd(opArgs, (void**)&uData);
|
||||
}
|
||||
|
||||
void AudioThread_QueueCmdU16(u32 opArgs, u16 data) {
|
||||
u32 uData = data << 0x10;
|
||||
|
||||
AudioThread_QueueCmd(opArgs, (void**)&uData);
|
||||
}
|
||||
|
||||
s32 AudioThread_ScheduleProcessCmds(void) {
|
||||
static s32 sMaxWriteReadDiff = 0;
|
||||
s32 ret;
|
||||
|
||||
if (sMaxWriteReadDiff < (u8)((gAudioCtx.threadCmdWritePos - gAudioCtx.threadCmdReadPos) + 0x100)) {
|
||||
sMaxWriteReadDiff = (u8)((gAudioCtx.threadCmdWritePos - gAudioCtx.threadCmdReadPos) + 0x100);
|
||||
}
|
||||
|
||||
ret = osSendMesg(gAudioCtx.threadCmdProcQueueP,
|
||||
(void*)(((gAudioCtx.threadCmdReadPos & 0xFF) << 8) | (gAudioCtx.threadCmdWritePos & 0xFF)),
|
||||
OS_MESG_NOBLOCK);
|
||||
if (ret != -1) {
|
||||
gAudioCtx.threadCmdReadPos = gAudioCtx.threadCmdWritePos;
|
||||
ret = 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void AudioThread_ResetCmdQueue(void) {
|
||||
gAudioCtx.threadCmdQueueFinished = false;
|
||||
gAudioCtx.threadCmdReadPos = gAudioCtx.threadCmdWritePos;
|
||||
}
|
||||
|
||||
void AudioThread_ProcessCmd(AudioCmd* cmd) {
|
||||
SequencePlayer* seqPlayer;
|
||||
u16 threadCmdChannelMask;
|
||||
s32 channelIndex;
|
||||
|
||||
if ((cmd->op & 0xF0) >= 0xE0) {
|
||||
AudioThread_ProcessGlobalCmd(cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd->arg0 < gAudioCtx.audioBufferParameters.numSequencePlayers) {
|
||||
seqPlayer = &gAudioCtx.seqPlayers[cmd->arg0];
|
||||
if (cmd->op & 0x80) {
|
||||
AudioThread_ProcessGlobalCmd(cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd->op & 0x40) {
|
||||
AudioThread_ProcessSeqPlayerCmd(seqPlayer, cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd->arg1 < SEQ_NUM_CHANNELS) {
|
||||
AudioThread_ProcessChannelCmd(seqPlayer->channels[cmd->arg1], cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd->arg1 == AUDIOCMD_ALL_CHANNELS) {
|
||||
threadCmdChannelMask = gAudioCtx.threadCmdChannelMask[cmd->arg0];
|
||||
for (channelIndex = 0; channelIndex < SEQ_NUM_CHANNELS; channelIndex++) {
|
||||
if (threadCmdChannelMask & 1) {
|
||||
AudioThread_ProcessChannelCmd(seqPlayer->channels[channelIndex], cmd);
|
||||
}
|
||||
threadCmdChannelMask = threadCmdChannelMask >> 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AudioThread_ProcessCmds(u32 msg) {
|
||||
static u8 sCurCmdRdPos = 0;
|
||||
AudioCmd* cmd;
|
||||
u8 endPos;
|
||||
|
||||
if (!gAudioCtx.threadCmdQueueFinished) {
|
||||
sCurCmdRdPos = msg >> 8;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
endPos = msg & 0xFF;
|
||||
if (sCurCmdRdPos == endPos) {
|
||||
gAudioCtx.threadCmdQueueFinished = false;
|
||||
break;
|
||||
}
|
||||
|
||||
cmd = &gAudioCtx.threadCmdBuf[sCurCmdRdPos++ & 0xFF];
|
||||
if (cmd->op == AUDIOCMD_OP_GLOBAL_STOP_AUDIOCMDS) {
|
||||
gAudioCtx.threadCmdQueueFinished = true;
|
||||
break;
|
||||
}
|
||||
|
||||
AudioThread_ProcessCmd(cmd);
|
||||
cmd->op = AUDIOCMD_OP_NOOP;
|
||||
}
|
||||
}
|
||||
|
||||
u32 AudioThread_GetExternalLoadQueueMsg(u32* retMsg) {
|
||||
u32 msg;
|
||||
|
||||
if (osRecvMesg(&gAudioCtx.externalLoadQueue, (OSMesg*)&msg, OS_MESG_NOBLOCK) == -1) {
|
||||
*retMsg = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
*retMsg = msg & 0xFFFFFF;
|
||||
return msg >> 0x18;
|
||||
}
|
||||
|
||||
u8* AudioThread_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
|
||||
return AudioLoad_GetFontsForSequence(seqId, outNumFonts);
|
||||
}
|
||||
|
||||
void AudioThread_GetSampleBankIdsOfFont(s32 fontId, u32* sampleBankId1, u32* sampleBankId2) {
|
||||
*sampleBankId1 = gAudioCtx.soundFontList[fontId].sampleBankId1;
|
||||
*sampleBankId2 = gAudioCtx.soundFontList[fontId].sampleBankId2;
|
||||
}
|
||||
|
||||
s32 func_80193C5C(void) {
|
||||
s32 pad;
|
||||
s32 specId;
|
||||
|
||||
if (osRecvMesg(gAudioCtx.audioResetQueueP, (OSMesg*)&specId, OS_MESG_NOBLOCK) == -1) {
|
||||
return 0;
|
||||
} else if (gAudioCtx.specId != specId) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
void AudioThread_WaitForAudioResetQueueP(void) {
|
||||
// macro?
|
||||
// clang-format off
|
||||
s32 chk = -1; s32 msg; do {} while (osRecvMesg(gAudioCtx.audioResetQueueP, (OSMesg*)&msg, OS_MESG_NOBLOCK) != chk);
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
s32 AudioThread_ResetAudioHeap(s32 specId) {
|
||||
s32 resetStatus;
|
||||
OSMesg msg;
|
||||
s32 pad;
|
||||
|
||||
AudioThread_WaitForAudioResetQueueP();
|
||||
resetStatus = gAudioCtx.resetStatus;
|
||||
if (resetStatus != 0) {
|
||||
AudioThread_ResetCmdQueue();
|
||||
if (gAudioCtx.specId == specId) {
|
||||
return -2;
|
||||
} else if (resetStatus > 2) {
|
||||
gAudioCtx.specId = specId;
|
||||
return -3;
|
||||
} else {
|
||||
osRecvMesg(gAudioCtx.audioResetQueueP, &msg, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
AudioThread_WaitForAudioResetQueueP();
|
||||
AUDIOCMD_GLOBAL_RESET_AUDIO_HEAP(specId);
|
||||
|
||||
return AudioThread_ScheduleProcessCmds();
|
||||
}
|
||||
|
||||
void AudioThread_PreNMIInternal(void) {
|
||||
gAudioCtx.resetTimer = 1;
|
||||
if (gAudioCtxInitalized) {
|
||||
AudioThread_ResetAudioHeap(0);
|
||||
gAudioCtx.resetStatus = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Unused
|
||||
s8 AudioThread_GetChannelIO(s32 seqPlayerIndex, s32 channelIndex, s32 ioPort) {
|
||||
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
|
||||
SequenceChannel* channel;
|
||||
|
||||
if (seqPlayer->enabled) {
|
||||
channel = seqPlayer->channels[channelIndex];
|
||||
return channel->seqScriptIO[ioPort];
|
||||
} else {
|
||||
return SEQ_IO_VAL_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
// Unused
|
||||
s8 AudioThread_GetSeqPlayerIO(s32 seqPlayerIndex, s32 ioPort) {
|
||||
return gAudioCtx.seqPlayers[seqPlayerIndex].seqScriptIO[ioPort];
|
||||
}
|
||||
|
||||
// Unused
|
||||
void AudioThread_InitExternalPool(void* addr, size_t size) {
|
||||
AudioHeap_InitPool(&gAudioCtx.externalPool, addr, size);
|
||||
}
|
||||
|
||||
// Unused
|
||||
void AudioThread_ResetExternalPool(void) {
|
||||
gAudioCtx.externalPool.startAddr = NULL;
|
||||
}
|
||||
|
||||
void AudioThread_ProcessSeqPlayerCmd(SequencePlayer* seqPlayer, AudioCmd* cmd) {
|
||||
f32 fadeVolume;
|
||||
|
||||
switch (cmd->op) {
|
||||
case AUDIOCMD_OP_SEQPLAYER_FADE_VOLUME_SCALE:
|
||||
if (seqPlayer->fadeVolumeScale != cmd->asFloat) {
|
||||
seqPlayer->fadeVolumeScale = cmd->asFloat;
|
||||
seqPlayer->recalculateVolume = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_TEMPO:
|
||||
seqPlayer->tempo = cmd->asInt * TATUMS_PER_BEAT;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_CHANGE_TEMPO:
|
||||
seqPlayer->tempoChange = cmd->asInt * TATUMS_PER_BEAT;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_CHANGE_TEMPO_TICKS:
|
||||
seqPlayer->tempoChange = cmd->asInt;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_TRANSPOSITION:
|
||||
seqPlayer->transposition = cmd->asSbyte;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_IO:
|
||||
seqPlayer->seqScriptIO[cmd->arg2] = cmd->asSbyte;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_FADE_TO_SET_VOLUME:
|
||||
fadeVolume = (s32)cmd->arg1 / 127.0f;
|
||||
goto apply_fade;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_FADE_TO_SCALED_VOLUME:
|
||||
fadeVolume = ((s32)cmd->arg1 / 100.0f) * seqPlayer->fadeVolume;
|
||||
apply_fade:
|
||||
if (seqPlayer->state != SEQPLAYER_STATE_FADE_OUT) {
|
||||
seqPlayer->volume = seqPlayer->fadeVolume;
|
||||
if (cmd->asInt == 0) {
|
||||
seqPlayer->fadeVolume = fadeVolume;
|
||||
} else {
|
||||
s32 fadeTimer = cmd->asInt;
|
||||
|
||||
seqPlayer->state = SEQPLAYER_STATE_0;
|
||||
seqPlayer->fadeTimer = fadeTimer;
|
||||
seqPlayer->fadeVelocity = (fadeVolume - seqPlayer->fadeVolume) / fadeTimer;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_RESET_VOLUME:
|
||||
if (seqPlayer->state != SEQPLAYER_STATE_FADE_OUT) {
|
||||
if (cmd->asInt == 0) {
|
||||
seqPlayer->fadeVolume = seqPlayer->volume;
|
||||
} else {
|
||||
s32 fadeTimer = cmd->asInt;
|
||||
|
||||
seqPlayer->state = SEQPLAYER_STATE_0;
|
||||
seqPlayer->fadeTimer = fadeTimer;
|
||||
seqPlayer->fadeVelocity = (seqPlayer->volume - seqPlayer->fadeVolume) / fadeTimer;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_BEND:
|
||||
seqPlayer->bend = cmd->asFloat;
|
||||
if (seqPlayer->bend == 1.0f) {
|
||||
seqPlayer->applyBend = false;
|
||||
} else {
|
||||
seqPlayer->applyBend = true;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void AudioThread_ProcessChannelCmd(SequenceChannel* channel, AudioCmd* cmd) {
|
||||
u8 filterCutoff;
|
||||
|
||||
switch (cmd->op) {
|
||||
case AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE:
|
||||
if (channel->volumeScale != cmd->asFloat) {
|
||||
channel->volumeScale = cmd->asFloat;
|
||||
channel->changes.s.volume = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_VOL:
|
||||
if (channel->volume != cmd->asFloat) {
|
||||
channel->volume = cmd->asFloat;
|
||||
channel->changes.s.volume = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_PAN:
|
||||
if (channel->newPan != cmd->asSbyte) {
|
||||
channel->newPan = cmd->asSbyte;
|
||||
channel->changes.s.pan = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_PAN_WEIGHT:
|
||||
if (channel->newPan != cmd->asSbyte) {
|
||||
channel->panChannelWeight = cmd->asSbyte;
|
||||
channel->changes.s.pan = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_FREQ_SCALE:
|
||||
if (channel->freqScale != cmd->asFloat) {
|
||||
channel->freqScale = cmd->asFloat;
|
||||
channel->changes.s.freqScale = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_REVERB_VOLUME:
|
||||
if (channel->targetReverbVol != cmd->asSbyte) {
|
||||
channel->targetReverbVol = cmd->asSbyte;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_REVERB_INDEX:
|
||||
if (channel->reverbIndex != cmd->asSbyte) {
|
||||
channel->reverbIndex = cmd->asSbyte;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_SURROUND_EFFECT_INDEX:
|
||||
channel->surroundEffectIndex = cmd->asSbyte;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_IO:
|
||||
if (cmd->arg2 < ARRAY_COUNT(channel->seqScriptIO)) {
|
||||
channel->seqScriptIO[cmd->arg2] = cmd->asSbyte;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_MUTE:
|
||||
channel->muted = cmd->asSbyte;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_MUTE_FLAGS:
|
||||
channel->muteFlags = cmd->asSbyte;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_VIBRATO_DEPTH:
|
||||
channel->vibrato.vibratoDepthTarget = cmd->asUbyte * 8;
|
||||
channel->vibrato.vibratoDepthChangeDelay = 1;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_VIBRATO_RATE:
|
||||
channel->vibrato.vibratoRateTarget = cmd->asUbyte * 32;
|
||||
channel->vibrato.vibratoRateChangeDelay = 1;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_COMB_FILTER_SIZE:
|
||||
channel->combFilterSize = cmd->asUbyte;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_COMB_FILTER_GAIN:
|
||||
channel->combFilterGain = cmd->asUShort;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_STEREO:
|
||||
channel->stereoData.asByte = cmd->asUbyte;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_SET_START_POS:
|
||||
channel->startSamplePos = cmd->asInt;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_SFX_STATE:
|
||||
channel->sfxState = cmd->asUInt;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_FILTER:
|
||||
filterCutoff = cmd->arg2;
|
||||
if (cmd->asUInt != 0) {
|
||||
channel->filter = cmd->asUInt;
|
||||
}
|
||||
if (channel->filter != NULL) {
|
||||
AudioHeap_LoadFilter(channel->filter, filterCutoff >> 4, filterCutoff & 0xF);
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_CHANNEL_SET_GAIN:
|
||||
channel->gain = cmd->asUbyte;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Call an audio-thread command that has no code to process it. Unused.
|
||||
*/
|
||||
void AudioThread_Noop1Cmd(s32 arg0, s32 arg1, s32 arg2) {
|
||||
AUDIOCMD_GLOBAL_NOOP_1(arg0, arg1, arg2, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call an audio-thread command that has no code to process it. Unused.
|
||||
*/
|
||||
void AudioThread_Noop1CmdZeroed(void) {
|
||||
AUDIOCMD_GLOBAL_NOOP_1(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call an audio-thread command that has no code to process it. Unused.
|
||||
*/
|
||||
void AudioThread_Noop2Cmd(u32 arg0, s32 arg1) {
|
||||
AUDIOCMD_GLOBAL_NOOP_2(0, 0, arg1, arg0);
|
||||
}
|
||||
|
||||
// Unused
|
||||
void AudioThread_WaitForAudioTask(void) {
|
||||
osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_NOBLOCK);
|
||||
osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of s16-samples from the start of the sample to the current sample position.
|
||||
* Unused
|
||||
*/
|
||||
s32 AudioThread_GetSamplePosFromStart(s32 seqPlayerIndex, s32 channelIndex, s32 layerIndex) {
|
||||
s32 pad;
|
||||
s32 loopEnd;
|
||||
s32 samplePosInt;
|
||||
|
||||
if (!AudioThread_GetSamplePos(seqPlayerIndex, channelIndex, layerIndex, &loopEnd, &samplePosInt)) {
|
||||
return 0;
|
||||
}
|
||||
return samplePosInt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of s16-samples from the current sample position to the end of the sample.
|
||||
* Unused
|
||||
*/
|
||||
s32 AudioThread_GetSamplePosUntilEnd(s32 seqPlayerIndex, s32 channelIndex, s32 layerIndex) {
|
||||
s32 pad;
|
||||
s32 loopEnd;
|
||||
s32 samplePosInt;
|
||||
|
||||
if (!AudioThread_GetSamplePos(seqPlayerIndex, channelIndex, layerIndex, &loopEnd, &samplePosInt)) {
|
||||
return 0;
|
||||
}
|
||||
return loopEnd - samplePosInt;
|
||||
}
|
||||
|
||||
// Only used in unused functions
|
||||
s32 AudioThread_GetSamplePos(s32 seqPlayerIndex, s32 channelIndex, s32 layerIndex, s32* loopEnd, s32* samplePosInt) {
|
||||
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
|
||||
SequenceLayer* layer;
|
||||
Note* note;
|
||||
TunedSample* tunedSample;
|
||||
|
||||
if (seqPlayer->enabled && seqPlayer->channels[channelIndex]->enabled) {
|
||||
layer = seqPlayer->channels[channelIndex]->layers[layerIndex];
|
||||
if (layer == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (layer->enabled) {
|
||||
if (layer->note == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!layer->bit3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
note = layer->note;
|
||||
if (layer == note->playbackState.parentLayer) {
|
||||
|
||||
if (note->sampleState.bitField1.isSyntheticWave == true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
tunedSample = note->sampleState.tunedSample;
|
||||
if (tunedSample == NULL) {
|
||||
return false;
|
||||
}
|
||||
*loopEnd = tunedSample->sample->loop->loopEnd;
|
||||
*samplePosInt = note->synthesisState.samplePosInt;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
s32 AudioThread_GetEnabledNotesCount(void) {
|
||||
return AudioThread_CountAndReleaseNotes(0);
|
||||
}
|
||||
|
||||
s32 AudioThread_GetEnabledSampledNotesCount(void) {
|
||||
return AudioThread_CountAndReleaseNotes(AUDIO_NOTE_SAMPLE_NOTES);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param flags 0: count notes. 1: release all notes. 2: count sample notes 3: release sample notes
|
||||
* @return s32 number of notes
|
||||
*/
|
||||
s32 AudioThread_CountAndReleaseNotes(s32 flags) {
|
||||
s32 noteCount;
|
||||
NotePlaybackState* playbackState;
|
||||
NoteSampleState* noteSampleState;
|
||||
s32 i;
|
||||
Note* note;
|
||||
TunedSample* tunedSample;
|
||||
|
||||
noteCount = 0;
|
||||
for (i = 0; i < gAudioCtx.numNotes; i++) {
|
||||
note = &gAudioCtx.notes[i];
|
||||
playbackState = ¬e->playbackState;
|
||||
if (note->sampleState.bitField0.enabled) {
|
||||
noteSampleState = ¬e->sampleState;
|
||||
if (playbackState->adsr.action.s.state != ADSR_STATE_DISABLED) {
|
||||
if (flags >= AUDIO_NOTE_SAMPLE_NOTES) {
|
||||
tunedSample = noteSampleState->tunedSample;
|
||||
if ((tunedSample == NULL) || noteSampleState->bitField1.isSyntheticWave) {
|
||||
continue;
|
||||
}
|
||||
if (tunedSample->sample->medium == MEDIUM_RAM) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
noteCount++;
|
||||
if ((flags & AUDIO_NOTE_RELEASE) == AUDIO_NOTE_RELEASE) {
|
||||
playbackState->adsr.fadeOutVel = gAudioCtx.audioBufferParameters.updatesPerFrameInv;
|
||||
playbackState->adsr.action.s.release = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return noteCount;
|
||||
}
|
||||
|
||||
u32 AudioThread_NextRandom(void) {
|
||||
static u32 sAudioRandom = 0x12345678;
|
||||
static u32 sAudioOsCount = 0x11111111;
|
||||
u32 count = osGetCount();
|
||||
|
||||
sAudioRandom = (gAudioCtx.totalTaskCount + sAudioRandom + count) * (gAudioCtx.audioRandom + 0x1234567);
|
||||
sAudioRandom = (sAudioRandom & 1) + (sAudioRandom * 2) + sAudioOsCount;
|
||||
sAudioOsCount = count;
|
||||
|
||||
return sAudioRandom;
|
||||
}
|
||||
|
||||
void AudioThread_InitMesgQueues(void) {
|
||||
AudioThread_InitMesgQueuesInternal();
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80192BE0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80192C00.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_8019319C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_801936D8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_8019372C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193774.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_8019380C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193858.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/AudioThread_QueueCmdS32.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/AudioThread_QueueCmdS8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_801938D0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/AudioThread_ScheduleProcessCmds.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193990.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_801939A8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193AEC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193BA0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193C04.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193C24.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193C5C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193CB4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193D08.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193DA4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193DF0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193E44.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193E6C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193E9C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80193EA8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80194080.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_801942BC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80194304.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80194328.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_8019435C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_8019439C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_801943D0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_8019440C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80194528.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80194548.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/func_80194568.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/AudioThread_NextRandom.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80192BE0/AudioThread_InitMesgQueues.s")
|
||||
@@ -2640,7 +2640,7 @@ void AudioOcarina_PlayControllerInput(u8 isOcarinaSfxSuppressedWhenCancelled) {
|
||||
// Add vibrato of the ocarina note based on the x control stick
|
||||
sCurOcarinaVibrato = ABS_ALT(sOcarinaInputStickRel.x) >> 2;
|
||||
// Sets vibrato to io port 6
|
||||
AudioThread_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | SFX_CHANNEL_OCARINA << 8 | 6, sCurOcarinaVibrato);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, SFX_CHANNEL_OCARINA, 6, sCurOcarinaVibrato);
|
||||
} else {
|
||||
// no bending or vibrato for recording state OCARINA_RECORD_SCARECROW_SPAWN
|
||||
sCurOcarinaBendIndex = 0;
|
||||
@@ -2652,10 +2652,9 @@ void AudioOcarina_PlayControllerInput(u8 isOcarinaSfxSuppressedWhenCancelled) {
|
||||
if ((sCurOcarinaPitch != OCARINA_PITCH_NONE) && (sPrevOcarinaPitch != sCurOcarinaPitch)) {
|
||||
// Sets ocarina instrument Id to io port 7, which is used
|
||||
// as an index in seq 0 to get the true instrument Id
|
||||
AudioThread_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | SFX_CHANNEL_OCARINA << 8 | 7,
|
||||
sOcarinaInstrumentId - 1);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, SFX_CHANNEL_OCARINA, 7, sOcarinaInstrumentId - 1);
|
||||
// Sets pitch to io port 5
|
||||
AudioThread_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | SFX_CHANNEL_OCARINA << 8 | 5, sCurOcarinaPitch);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, SFX_CHANNEL_OCARINA, 5, sCurOcarinaPitch);
|
||||
AudioSfx_PlaySfx(NA_SE_OC_OCARINA, &gSfxDefaultPos, 4, &sCurOcarinaBendFreq, &sDefaultOcarinaVolume,
|
||||
&gSfxDefaultReverb);
|
||||
} else if ((sPrevOcarinaPitch != OCARINA_PITCH_NONE) && (sCurOcarinaPitch == OCARINA_PITCH_NONE) &&
|
||||
@@ -2862,7 +2861,7 @@ void AudioOcarina_PlaybackSong(void) {
|
||||
// Update vibrato
|
||||
sNotePlaybackVibrato = sPlaybackSong[sPlaybackNotePos].vibrato;
|
||||
// Sets vibrato to io port 6
|
||||
AudioThread_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | SFX_CHANNEL_OCARINA << 8 | 6, sNotePlaybackVibrato);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, SFX_CHANNEL_OCARINA, 6, sNotePlaybackVibrato);
|
||||
|
||||
// Update bend
|
||||
if (sNotePlaybackBend != sPlaybackSong[sPlaybackNotePos].bend) {
|
||||
@@ -2892,10 +2891,9 @@ void AudioOcarina_PlaybackSong(void) {
|
||||
sPlaybackStaffPos++;
|
||||
// Sets ocarina instrument Id to io port 7, which is used
|
||||
// as an index in seq 0 to get the true instrument Id
|
||||
AudioThread_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | SFX_CHANNEL_OCARINA << 8 | 7,
|
||||
sOcarinaInstrumentId - 1);
|
||||
AudioThread_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | SFX_CHANNEL_OCARINA << 8 | 5,
|
||||
sPlaybackPitch & OCARINA_BUTTON_MASK_PITCH);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, SFX_CHANNEL_OCARINA, 7, sOcarinaInstrumentId - 1);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, SFX_CHANNEL_OCARINA, 5,
|
||||
sPlaybackPitch & OCARINA_BUTTON_MASK_PITCH);
|
||||
AudioSfx_PlaySfx(NA_SE_OC_OCARINA, &gSfxDefaultPos, 4, &sRelativeNotePlaybackBend,
|
||||
&sRelativeNotePlaybackVolume, &gSfxDefaultReverb);
|
||||
} else {
|
||||
@@ -3400,7 +3398,7 @@ u8 sRequestCustomSequence = false;
|
||||
void AudioOcarina_SetCustomSequence(void) {
|
||||
// Never passes true as sRequestCustomSequence is never set true
|
||||
if (sRequestCustomSequence && gAudioCtx.seqPlayers[SEQ_PLAYER_FANFARE].enabled &&
|
||||
((u8)gAudioCtx.seqPlayers[SEQ_PLAYER_FANFARE].soundScriptIO[0] == (u8)SEQ_IO_VAL_NONE)) {
|
||||
((u8)gAudioCtx.seqPlayers[SEQ_PLAYER_FANFARE].seqScriptIO[0] == (u8)SEQ_IO_VAL_NONE)) {
|
||||
gAudioCtx.seqPlayers[SEQ_PLAYER_FANFARE].seqData = sCustomSequenceScript;
|
||||
sRequestCustomSequence = false;
|
||||
}
|
||||
@@ -3754,8 +3752,8 @@ s8 AudioSfx_ComputeReverb(u8 bankId, u8 entryIndex, u8 channelIndex) {
|
||||
}
|
||||
|
||||
if (IS_SEQUENCE_CHANNEL_VALID(gAudioCtx.seqPlayers[SEQ_PLAYER_SFX].channels[channelIndex])) {
|
||||
scriptAdd = gAudioCtx.seqPlayers[SEQ_PLAYER_SFX].channels[channelIndex]->soundScriptIO[1];
|
||||
if (gAudioCtx.seqPlayers[SEQ_PLAYER_SFX].channels[channelIndex]->soundScriptIO[1] <= SEQ_IO_VAL_NONE) {
|
||||
scriptAdd = gAudioCtx.seqPlayers[SEQ_PLAYER_SFX].channels[channelIndex]->seqScriptIO[1];
|
||||
if (gAudioCtx.seqPlayers[SEQ_PLAYER_SFX].channels[channelIndex]->seqScriptIO[1] <= SEQ_IO_VAL_NONE) {
|
||||
scriptAdd = 0;
|
||||
}
|
||||
}
|
||||
@@ -4051,8 +4049,8 @@ void AudioSfx_SetProperties(u8 bankId, u8 entryIndex, u8 channelIndex) {
|
||||
//! FAKE:
|
||||
if (1) {}
|
||||
|
||||
// CHAN_UPD_SCRIPT_IO (slot 2, sets volume)
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | (channelIndex << 8) | 2, volumeS8);
|
||||
// ioPort 2, sets volume
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, channelIndex, 2, volumeS8);
|
||||
|
||||
if (sSfxChannelState[channelIndex].reverb != reverb) {
|
||||
sSfxChannelState[channelIndex].reverb = reverb;
|
||||
@@ -4307,16 +4305,16 @@ f32 sBigBellsVolume[8] = {
|
||||
*/
|
||||
void Audio_SetGanonsTowerBgmVolumeLevel(u8 ganonsTowerLevel) {
|
||||
u8 channelIndex;
|
||||
s8 pan = 0;
|
||||
s8 panChannelWeight = 0;
|
||||
|
||||
// Ganondorfs's Lair
|
||||
if (ganonsTowerLevel == 0) {
|
||||
pan = 0x7F;
|
||||
// Pan comes entirely from the SequenceChannel
|
||||
panChannelWeight = 0x7F;
|
||||
}
|
||||
|
||||
for (channelIndex = 0; channelIndex < 16; channelIndex++) {
|
||||
// CHAN_UPD_PAN_UNSIGNED
|
||||
AudioThread_QueueCmdS8(((u8)(u32)channelIndex << 8) | 0x7000000, pan);
|
||||
for (channelIndex = 0; channelIndex < SEQ_NUM_CHANNELS; channelIndex++) {
|
||||
AUDIOCMD_CHANNEL_SET_PAN_WEIGHT(SEQ_PLAYER_BGM_MAIN, channelIndex, panChannelWeight);
|
||||
}
|
||||
|
||||
// Lowest room in Ganon's Tower (Entrance Room)
|
||||
@@ -4359,11 +4357,12 @@ s32 Audio_SetGanonsTowerBgmVolume(u8 targetVolume) {
|
||||
for (channelIndex = 0; channelIndex < ARRAY_COUNT(gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].channels);
|
||||
channelIndex++) {
|
||||
if (&gAudioCtx.sequenceChannelNone != gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].channels[channelIndex]) {
|
||||
// soundScriptIO[5] was set to 0x40 in channels 0, 1, and 4 (BGM no longer in OoT)
|
||||
if ((u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].channels[channelIndex]->soundScriptIO[5] !=
|
||||
// seqScriptIO[5] was originally set to 0x40 in channels 0, 1, and 4 by OoT's Ganon's Tower BGM,
|
||||
// which was removed in MM
|
||||
if ((u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].channels[channelIndex]->seqScriptIO[5] !=
|
||||
(u8)SEQ_IO_VAL_NONE) {
|
||||
// Higher volume leads to lower reverb
|
||||
reverb = (((u16)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].channels[channelIndex]->soundScriptIO[5] -
|
||||
reverb = (((u16)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].channels[channelIndex]->seqScriptIO[5] -
|
||||
targetVolume) +
|
||||
0x7F);
|
||||
|
||||
@@ -4371,10 +4370,7 @@ s32 Audio_SetGanonsTowerBgmVolume(u8 targetVolume) {
|
||||
reverb = 0x7F;
|
||||
}
|
||||
|
||||
// CHAN_UPD_REVERB
|
||||
AudioThread_QueueCmdS8(_SHIFTL(5, 24, 8) | _SHIFTL(SEQ_PLAYER_BGM_MAIN, 16, 8) |
|
||||
_SHIFTL(channelIndex, 8, 8),
|
||||
(u8)reverb);
|
||||
AUDIOCMD_CHANNEL_SET_REVERB_VOLUME(SEQ_PLAYER_BGM_MAIN, channelIndex, (u8)reverb);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4445,9 +4441,7 @@ void AudioSfx_SetChannelIO(Vec3f* pos, u16 sfxId, u8 ioData) {
|
||||
|
||||
if (entryIndex != 0xFF) {
|
||||
if ((sfxId == gSfxBanks[bankId][entryIndex].sfxId) && (&pos->x == gSfxBanks[bankId][entryIndex].posX)) {
|
||||
AudioThread_QueueCmdS8(_SHIFTL(6, 24, 8) | _SHIFTL(SEQ_PLAYER_SFX, 16, 8) |
|
||||
_SHIFTL(channelIndex, 8, 8) | _SHIFTL(6, 0, 8),
|
||||
ioData);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, channelIndex, 6, ioData);
|
||||
}
|
||||
}
|
||||
channelIndex++;
|
||||
@@ -4498,7 +4492,7 @@ void func_801A09D4(Vec3f* pos, f32 xzDistToPlayer) {
|
||||
if (channelIndex != 9) {
|
||||
Audio_QueueSeqCmd(((u32)(6) << 28) | ((u32)(SEQ_PLAYER_BGM_MAIN) << 24) | ((u32)(2) << 16) |
|
||||
((u32)(channelIndex) << 8) | ((u8)(127.0f * volumeRel)));
|
||||
AudioThread_QueueCmdS8(0x03000000 | ((u8)((u32)channelIndex) << 8), pan);
|
||||
AUDIOCMD_CHANNEL_SET_PAN(SEQ_PLAYER_BGM_MAIN, channelIndex, pan);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4721,7 +4715,7 @@ void Audio_UpdateSceneSequenceResumePoint(void) {
|
||||
if ((seqId != NA_BGM_DISABLED) && (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_RESUME)) {
|
||||
if (sSeqResumePoint != SEQ_RESUME_POINT_NONE) {
|
||||
// Get the current point to resume from
|
||||
sSeqResumePoint = gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].soundScriptIO[3];
|
||||
sSeqResumePoint = gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[3];
|
||||
} else {
|
||||
// Initialize the point to resume from to the start of the sequence
|
||||
sSeqResumePoint = 0;
|
||||
@@ -5089,7 +5083,7 @@ void Audio_StartAmbience(u16 initChannelMask, u16 initMuteChannelMask) {
|
||||
if ((Audio_GetActiveSequence(SEQ_PLAYER_AMBIENCE) != NA_BGM_DISABLED) &&
|
||||
(Audio_GetActiveSequence(SEQ_PLAYER_AMBIENCE) != NA_BGM_AMBIENCE)) {
|
||||
Audio_StopSequence(SEQ_PLAYER_AMBIENCE, 0);
|
||||
AudioThread_QueueCmdS32(0xF8 << 24, 0);
|
||||
AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
|
||||
}
|
||||
|
||||
if (Audio_GetActiveSequence(SEQ_PLAYER_BGM_SUB) == (NA_BGM_ENEMY | 0x800)) {
|
||||
@@ -5164,12 +5158,11 @@ void AudioSfx_Init(u16 fadeTimer) {
|
||||
Audio_StartSequence(SEQ_PLAYER_SFX, NA_BGM_GENERAL_SFX, 0x70, fadeTimer);
|
||||
|
||||
for (channelIndex = 0; channelIndex < ARRAY_COUNT(sSfxChannelState); channelIndex++) {
|
||||
AudioThread_QueueCmdS32(0x10 << 24 | SEQ_PLAYER_SFX << 16 | ((u8)(u32)channelIndex << 8),
|
||||
&sSfxChannelState[channelIndex]);
|
||||
AUDIOCMD_CHANNEL_SET_SFX_STATE(SEQ_PLAYER_SFX, channelIndex, &sSfxChannelState[channelIndex]);
|
||||
}
|
||||
|
||||
AudioThread_QueueCmdS32(0xE4000000, AudioSfx_SetFreqAndStereoBits);
|
||||
AudioThread_QueueCmdS32(0xE4000001, Audio_SetAmbienceRandomBend);
|
||||
AUDIOCMD_GLOBAL_SET_CUSTOM_FUNCTION(AUDIO_CUSTOM_FUNCTION_SEQ_0, AudioSfx_SetFreqAndStereoBits);
|
||||
AUDIOCMD_GLOBAL_SET_CUSTOM_FUNCTION(AUDIO_CUSTOM_FUNCTION_SEQ_1, Audio_SetAmbienceRandomBend);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8019AF00/func_801A4D00.s")
|
||||
|
||||
@@ -410,9 +410,8 @@ void AudioSfx_ChooseActiveSfx(u8 bankId) {
|
||||
// If a "one-frame" sfx is still in "SFX_STATE_PLAYING_ONE_FRAME", then remove the sfx
|
||||
} else if (!(gSfxBanks[bankId][entryIndex].sfxId & SFX_FLAG_MASK) &&
|
||||
(gSfxBanks[bankId][entryIndex].state == SFX_STATE_PLAYING_ONE_FRAME)) {
|
||||
// CHAN_UPD_SCRIPT_IO (ioPort 0, force stop sfx in seq 0)
|
||||
AudioThread_QueueCmdS8(
|
||||
(0x6 << 24) | (SEQ_PLAYER_SFX << 16) | (gSfxBanks[bankId][entryIndex].channelIndex << 8), 0);
|
||||
// ioPort 0, force stop sfx in seq 0
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, gSfxBanks[bankId][entryIndex].channelIndex, 0, 0);
|
||||
AudioSfx_RemoveBankEntry(bankId, entryIndex);
|
||||
}
|
||||
|
||||
@@ -459,8 +458,8 @@ void AudioSfx_ChooseActiveSfx(u8 bankId) {
|
||||
|
||||
// If too far away and also playing, stop playing
|
||||
if (entry->state == SFX_STATE_PLAYING) {
|
||||
// CHAN_UPD_SCRIPT_IO (ioPort 0, force stop sfx in seq 0)
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | (entry->channelIndex << 8), 0);
|
||||
// ioPort 0, force stop sfx in seq 0
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, entry->channelIndex, 0, 0);
|
||||
if (entry->sfxId & SFX_FLAG_MASK) {
|
||||
AudioSfx_RemoveBankEntry(bankId, entryIndex);
|
||||
entryIndex = k;
|
||||
@@ -632,15 +631,11 @@ void AudioSfx_PlayActiveSfx(u8 bankId) {
|
||||
// Calculate all the properties of sfx
|
||||
AudioSfx_SetProperties(bankId, entryIndex, sCurSfxPlayerChannelIndex);
|
||||
|
||||
// CHAN_UPD_SCRIPT_IO (ioPort 0, enable the sfx to play in seq 0)
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | ((sCurSfxPlayerChannelIndex & 0xFF) << 8),
|
||||
1);
|
||||
// ioPort 0, enable the sfx to play in `NA_BGM_GENERAL_SFX`
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sCurSfxPlayerChannelIndex, 0, 1);
|
||||
|
||||
// CHAN_UPD_SCRIPT_IO (ioPort 4, write the lower bits sfx index to seq 0 so it can find the right code
|
||||
// to execute)
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) |
|
||||
((sCurSfxPlayerChannelIndex & 0xFF) << 8) | 4,
|
||||
entry->sfxId & 0xFF);
|
||||
// ioPort 4, write the lower bits sfx index for `NA_BGM_GENERAL_SFX` to find the right code to execute
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sCurSfxPlayerChannelIndex, 4, entry->sfxId & 0xFF);
|
||||
|
||||
// If the sfx bank has more than 255 entries (greater than a u8 can store),
|
||||
// then store the Id in upper and lower bits
|
||||
@@ -656,11 +651,9 @@ void AudioSfx_PlayActiveSfx(u8 bankId) {
|
||||
}
|
||||
|
||||
if (D_801D6608[bankId]) {
|
||||
// CHAN_UPD_SCRIPT_IO (ioPort 5, write the upper bits sfx index and a flag to seq 0, for banks with
|
||||
// > 0xFF entries)
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) |
|
||||
((sCurSfxPlayerChannelIndex & 0xFF) << 8) | 5,
|
||||
ioPort5Data);
|
||||
// ioPort 5, write the upper bits sfx index and a flag for `NA_BGM_GENERAL_SFX`,
|
||||
// for banks with > 0xFF entries
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, sCurSfxPlayerChannelIndex, 5, ioPort5Data);
|
||||
}
|
||||
|
||||
// Update playing state
|
||||
@@ -671,7 +664,7 @@ void AudioSfx_PlayActiveSfx(u8 bankId) {
|
||||
// "one-frame" sfx
|
||||
entry->state = SFX_STATE_PLAYING_ONE_FRAME;
|
||||
}
|
||||
} else if ((u8)channel->soundScriptIO[1] == (u8)SEQ_IO_VAL_NONE) {
|
||||
} else if ((u8)channel->seqScriptIO[1] == (u8)SEQ_IO_VAL_NONE) {
|
||||
// Signal from seq 0 that the sfx is finished playing. Remove entry
|
||||
AudioSfx_RemoveBankEntry(bankId, entryIndex);
|
||||
} else if (entry->state == SFX_STATE_PLAYING_REFRESH) {
|
||||
@@ -702,7 +695,7 @@ void AudioSfx_StopByBank(u8 bankId) {
|
||||
while (entryIndex != 0xFF) {
|
||||
entry = &gSfxBanks[bankId][entryIndex];
|
||||
if (entry->state >= SFX_STATE_PLAYING_REFRESH) {
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | ((entry->channelIndex & 0xFF) << 8), 0);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, entry->channelIndex, 0, 0);
|
||||
}
|
||||
|
||||
if (entry->state != SFX_STATE_EMPTY) {
|
||||
@@ -724,7 +717,7 @@ void AudioSfx_StopByPosAndBankImpl(u8 bankId, Vec3f* pos) {
|
||||
entry = &gSfxBanks[bankId][entryIndex];
|
||||
if (entry->posX == &pos->x) {
|
||||
if (entry->state >= SFX_STATE_PLAYING_REFRESH) {
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | ((entry->channelIndex & 0xFF) << 8), 0);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, entry->channelIndex, 0, 0);
|
||||
}
|
||||
|
||||
if (entry->state != SFX_STATE_EMPTY) {
|
||||
@@ -769,7 +762,7 @@ void AudioSfx_StopByPosAndId(Vec3f* pos, u16 sfxId) {
|
||||
entry = &gSfxBanks[SFX_BANK(sfxId)][entryIndex];
|
||||
if ((entry->posX == &pos->x) && (entry->sfxId == sfxId)) {
|
||||
if (entry->state >= SFX_STATE_PLAYING_REFRESH) {
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | ((entry->channelIndex & 0xFF) << 8), 0);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, entry->channelIndex, 0, 0);
|
||||
}
|
||||
|
||||
if (entry->state != SFX_STATE_EMPTY) {
|
||||
@@ -800,7 +793,7 @@ void AudioSfx_StopByTokenAndId(u8 token, u16 sfxId) {
|
||||
entry = &gSfxBanks[SFX_BANK(sfxId)][entryIndex];
|
||||
if ((entry->token == token) && (entry->sfxId == sfxId)) {
|
||||
if (entry->state >= SFX_STATE_PLAYING_REFRESH) {
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | ((entry->channelIndex & 0xFF) << 8), 0);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, entry->channelIndex, 0, 0);
|
||||
}
|
||||
|
||||
if (entry->state != SFX_STATE_EMPTY) {
|
||||
@@ -830,7 +823,7 @@ void AudioSfx_StopById(u32 sfxId) {
|
||||
entry = &gSfxBanks[SFX_BANK(sfxId)][entryIndex];
|
||||
if (entry->sfxId == sfxId) {
|
||||
if (entry->state >= SFX_STATE_PLAYING_REFRESH) {
|
||||
AudioThread_QueueCmdS8((0x6 << 24) | (SEQ_PLAYER_SFX << 16) | ((entry->channelIndex & 0xFF) << 8), 0);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, entry->channelIndex, 0, 0);
|
||||
}
|
||||
if (entry->state != SFX_STATE_EMPTY) {
|
||||
AudioSfx_RemoveBankEntry(SFX_BANK(sfxId), entryIndex);
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ void AudioMgr_HandleRetrace(AudioMgr* audioMgr) {
|
||||
if (SREG(20) >= 2) {
|
||||
rspTask = NULL;
|
||||
} else {
|
||||
rspTask = func_80192BE0();
|
||||
rspTask = AudioThread_Update();
|
||||
}
|
||||
|
||||
if (audioMgr->rspTask != NULL) {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80140CE0/func_80140CE0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80140CE0/func_80140D04.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80140CE0/func_80140D10.s")
|
||||
+5
-5
@@ -50,7 +50,7 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) {
|
||||
gfxCtx->workBuffer = pool->workBuffer;
|
||||
gfxCtx->debugBuffer = pool->debugBuffer;
|
||||
|
||||
gfxCtx->curFrameBuffer = (u16*)SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2);
|
||||
gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIndex % 2);
|
||||
gSegments[0x0F] = gfxCtx->curFrameBuffer;
|
||||
|
||||
gfxCtx->zbuffer = SysCfb_GetZBuffer();
|
||||
@@ -116,7 +116,7 @@ void* Graph_FaultAddrConvFunc(void* address, void* param) {
|
||||
void Graph_Init(GraphicsContext* gfxCtx) {
|
||||
bzero(gfxCtx, sizeof(GraphicsContext));
|
||||
gfxCtx->gfxPoolIdx = 0;
|
||||
gfxCtx->framebufferIdx = 0;
|
||||
gfxCtx->framebufferIndex = 0;
|
||||
gfxCtx->viMode = NULL;
|
||||
gfxCtx->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx->xScale = gViConfigXScale;
|
||||
@@ -165,7 +165,7 @@ retry:
|
||||
|
||||
gfxCtx->masterList = gGfxMasterDL;
|
||||
if (gfxCtx->callback != NULL) {
|
||||
gfxCtx->callback(gfxCtx, gfxCtx->callbackParam);
|
||||
gfxCtx->callback(gfxCtx, gfxCtx->callbackArg);
|
||||
}
|
||||
|
||||
task->type = M_GFXTASK;
|
||||
@@ -191,7 +191,7 @@ retry:
|
||||
if (SREG(33) & 1) {
|
||||
SREG(33) &= ~1;
|
||||
scTask->flags &= ~OS_SC_SWAPBUFFER;
|
||||
gfxCtx->framebufferIdx--;
|
||||
gfxCtx->framebufferIndex--;
|
||||
}
|
||||
|
||||
scTask->msgQ = &gfxCtx->queue;
|
||||
@@ -305,7 +305,7 @@ void Graph_ExecuteAndDraw(GraphicsContext* gfxCtx, GameState* gameState) {
|
||||
if (!problem) {
|
||||
Graph_TaskSet00(gfxCtx, gameState);
|
||||
gfxCtx->gfxPoolIdx++;
|
||||
gfxCtx->framebufferIdx++;
|
||||
gfxCtx->framebufferIndex++;
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -15,9 +15,3 @@
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/speed_meter/func_80177AC8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/speed_meter/SpeedMeter_DrawAllocEntries.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/speed_meter/func_801780F0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/speed_meter/func_801781EC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/speed_meter/func_8017842C.s")
|
||||
|
||||
@@ -0,0 +1,361 @@
|
||||
/**
|
||||
* @file su_mtx.c
|
||||
* @brief "Fast" functions for constructing RSP-compatible matrices directly
|
||||
*
|
||||
* The three functions in this file construct scaling, rotation, and translation matrices, and combinations thereof. The
|
||||
* intention appears to be to exploit the peculiar structure of the RSP's fixed-point matrix format, which we recall is
|
||||
*
|
||||
* typedef long int Mtx_t[4][4];
|
||||
* typedef union {
|
||||
* Mtx_t m;
|
||||
* struct {
|
||||
* u16 intPart[4][4];
|
||||
* u16 fracPart[4][4];
|
||||
* };
|
||||
* long long int forc_structure_alignment;
|
||||
* } Mtx; // size = 0x40
|
||||
*
|
||||
* This means it can be written to as either words or two sets of shorts; the latter is the correct format for
|
||||
* interpreting it the way the RSP does, but the first is likely faster to access and write to. The functions save
|
||||
* writing halves by
|
||||
*
|
||||
* - writing a word 0 if two adjacent elements are 0 in a convenient place, or 1 if they are 0 and 1,
|
||||
* - writing a word using a shift and overwriting the dirty half afterwards.
|
||||
*
|
||||
* Examples of both of these are seen in Mtx_SetTranslateScaleMtx(); we explain there in full detail due to the
|
||||
* function's relative simplicity. The other two functions we merely point out the interesting parts rather than
|
||||
* explaining the whole process.
|
||||
*
|
||||
* We use the following notation throughout: round brackets denote the word-sized elements, square the pairs they cover.
|
||||
* The integer and fractional parts of a fixed-point number are denoted by i and f respectively, and these letters are
|
||||
* also used to represent which half each of the pairs belongs to.
|
||||
*
|
||||
* (00) [i00,i01], (01) [i02,i03]
|
||||
* (02) [i10,i11], (03) [i12,i13]
|
||||
* (10) [i20,i21], (11) [i22,i23]
|
||||
* (12) [i30,i31], (13) [i32,i33]
|
||||
* (20) [f00,f01], (21) [f02,f03]
|
||||
* (22) [f10,f11], (23) [f12,f13]
|
||||
* (30) [f20,f21], (31) [f22,f23]
|
||||
* (32) [f30,f31], (33) [f32,f33]
|
||||
*
|
||||
* We keep the RSP's column-major convention; this file is confusing enough without attempting to transpose everything.
|
||||
* Bear in mind therefore that we are acting on *row vectors* on the *right*.
|
||||
*
|
||||
* @warning The behaviour of the output of the functions in this file is undefined in C89, since both members of the
|
||||
* union are used to set the mtxs. (C99+ allow type-punning, but the behaviour is still implementation-defined because
|
||||
* it relies on the storage being big-endian.)
|
||||
*
|
||||
* @remark Name inferred from shared Animal Forest functions, meaning of "su" is unclear.
|
||||
*/
|
||||
|
||||
#include "global.h"
|
||||
|
||||
/**
|
||||
* Constructs a matrix \$f ST \$f, i.e. a scaling \$f S \$f followed by a translation \$f T \$f.
|
||||
*
|
||||
* The final result is
|
||||
*
|
||||
* \f[
|
||||
* \begin{bmatrix}
|
||||
* s_x & 0 & 0 & 0 \\
|
||||
* 0 & s_y & 0 & 0 \\
|
||||
* 0 & 0 & s_z & 0 \\
|
||||
* t_x & t_y & t_z & 1
|
||||
* \end{bmatrix}
|
||||
* \f]
|
||||
*
|
||||
* @param[out] mtx Fixed-point matrix pointer to output to
|
||||
* @param[in] scaleX Scale in the X direction
|
||||
* @param[in] scaleY Scale in the Y direction
|
||||
* @param[in] scaleZ Scale in the Z direction
|
||||
* @param[in] translateX X component of translation
|
||||
* @param[in] translateY Y component of translation
|
||||
* @param[in] translateZ Z component of translation
|
||||
*
|
||||
* @remark Original name: "suMtxMakeTS"
|
||||
*/
|
||||
void Mtx_SetTranslateScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32 translateX, f32 translateY,
|
||||
f32 translateZ) {
|
||||
Mtx* m = mtx;
|
||||
s32 fixedPoint;
|
||||
|
||||
m->m[0][1] = 0; // [i02, i03] == [0, 0]
|
||||
m->m[2][1] = 0; // [f02, f03] == [0, 0]
|
||||
m->m[0][3] = 0; // [i12, i13] == [0, 0]
|
||||
m->m[2][3] = 0; // [f22, f23] == [0, 0]
|
||||
m->m[1][0] = 0; // [i20, i21] == [0, 0]
|
||||
//
|
||||
fixedPoint = scaleX * 0x10000; //
|
||||
m->m[0][0] = fixedPoint; // [i00, i01] == [scaleX.i, scaleX.f]; i01 is now "dirty"
|
||||
m->intPart[0][1] = 0; // Clean i01 by zeroing it: [i00, i01] == [scaleX.i, 0]
|
||||
m->m[2][0] = (u32)fixedPoint << 16; // [f00, f01] == [scaleX.f, 0]
|
||||
//
|
||||
fixedPoint = scaleY * 0x10000; //
|
||||
m->m[0][2] = (u32)fixedPoint >> 16; // [i10, i11] == [0, scaleY.i]
|
||||
m->m[2][2] = fixedPoint & 0xFFFF; // [f10, f11] == [0, scaleY.f]
|
||||
//
|
||||
fixedPoint = scaleZ * 0x10000; //
|
||||
m->m[1][1] = fixedPoint; // [i22, i23] == [scaleZ.i, scaleZ.f]
|
||||
m->intPart[2][3] = 0; // [i22, i23] == [scaleZ.i, 0]
|
||||
m->m[3][1] = (u32)fixedPoint << 16; // [f22, f23] == [scaleZ.f, 0]
|
||||
//
|
||||
m->m[3][0] = 0; // [f20, f21] == [0, 0]
|
||||
//
|
||||
fixedPoint = translateX * 0x10000; //
|
||||
m->intPart[3][0] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateX.i, ?]
|
||||
m->fracPart[3][0] = fixedPoint & 0xFFFF; // [f30, f31] == [translateX.f, ?]
|
||||
//
|
||||
fixedPoint = translateY * 0x10000; //
|
||||
m->intPart[3][1] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateX.i, translateY.i]
|
||||
m->fracPart[3][1] = fixedPoint & 0xFFFF; // [f30, f31] == [translateX.f, translateY.f]
|
||||
//
|
||||
fixedPoint = translateZ * 0x10000; //
|
||||
m->intPart[3][2] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateZ.i, ?]
|
||||
m->intPart[3][3] = 1; // [i32, i33] == [translateZ.i, 1]
|
||||
m->m[3][3] = (u32)fixedPoint << 16; // [f32, f33] == [translateZ.f, 0]
|
||||
|
||||
// So we end up with
|
||||
// [scaleX.i, 0], [0, 0],
|
||||
// [0, scaleY.i], [0, 0],
|
||||
// [0, 0], [scaleZ.i, 0],
|
||||
// [translateX.i, translateY.i], [translateZ.i, 1]
|
||||
//
|
||||
// [scaleX.f, 0], [0, 0],
|
||||
// [0, scaleY.f], [0, 0],
|
||||
// [0, 0], [scaleZ.f, 0]
|
||||
// [translateX.f, translateY.f], [translateZ.f, 0]
|
||||
}
|
||||
|
||||
// Unused
|
||||
/**
|
||||
* Should create an axis-angle rotation matrix.
|
||||
*
|
||||
* @note The axis vector is expected to be normalised.
|
||||
*
|
||||
* The result should be:
|
||||
*
|
||||
* \f[
|
||||
* \begin{bmatrix}
|
||||
* (1-a_x^2) \cos \theta + a_x^2 & a_x a_y (1 - \cos \theta) + a_z \sin \theta & a_z a_x (1 - \cos \theta) - a_y
|
||||
* \sin \theta & 0 \\
|
||||
* a_x a_y (1 - \cos \theta) - a_z \sin \theta & (1-a_y^2) \cos \theta + a_y^2 & a_y a_z (1 - \cos \theta) + a_x
|
||||
* \sin \theta & 0 \\
|
||||
* a_z a_x (1 - \cos \theta) + a_y \sin \theta & a_y a_z (1 - \cos \theta) - a_x \sin \theta & (1-a_z^2) \cos
|
||||
* \theta
|
||||
* + a_z^2 & 0 \\
|
||||
* t_x & t_y & t_z & 1
|
||||
* \end{bmatrix}
|
||||
* \f]
|
||||
*
|
||||
* @warning There is a significant bug in this function, which means it does not actually produce this correct rotation
|
||||
* matrix; see inline for details.
|
||||
*
|
||||
* @param[out] mtx Fixed-point matrix pointer to output to
|
||||
* @param[in] angle angle to rotate about axis
|
||||
* @param[in] axisX X component of axis to rotate about
|
||||
* @param[in] axisY Y component of axis to rotate about
|
||||
* @param[in] axisZ Z component of axis to rotate about
|
||||
*
|
||||
* @remark Original name: probably something like "suMtxMakeR" or "suMtxMakeRotateVector"
|
||||
*/
|
||||
void Mtx_SetRotationMtx(Mtx* mtx, s32 angle, f32 axisX, f32 axisY, f32 axisZ) {
|
||||
//! FAKE? The somewhat peculiar distribution of temps in this function seems necessary to match?
|
||||
f32 tempX;
|
||||
f32 tempZ;
|
||||
f32 tempY;
|
||||
f32 sin = Math_SinS(angle);
|
||||
f32 cos = Math_CosS(angle);
|
||||
f32 tempXX;
|
||||
f32 tempYY;
|
||||
f32 tempZZ;
|
||||
|
||||
s32 fixedPoint;
|
||||
|
||||
mtx->m[1][2] = 0; // [i30, i31] == [0, 0]
|
||||
mtx->m[1][3] = 1; // [i32, i33] == [0, 1]
|
||||
mtx->m[3][2] = 0; // [f30, f31] == [0, 0]
|
||||
mtx->m[3][3] = 0; // [f31, f32] == [0, 0]
|
||||
|
||||
tempXX = axisX * axisX;
|
||||
tempX = (axisY * axisZ) * (1.0f - cos);
|
||||
|
||||
// i00 and f00
|
||||
fixedPoint = (((1.0f - tempXX) * cos) + tempXX) * 0x10000;
|
||||
mtx->intPart[0][0] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[0][0] = fixedPoint & 0xFFFF;
|
||||
|
||||
tempZ = ((axisX * axisY) * (1.0f - cos));
|
||||
tempZZ = axisZ * axisZ;
|
||||
|
||||
// i21 and f21
|
||||
fixedPoint = (tempX - (axisX * sin)) * 0x10000;
|
||||
mtx->intPart[2][1] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[2][1] = fixedPoint & 0xFFFF;
|
||||
|
||||
tempY = (axisZ * axisX) * (1.0f - cos);
|
||||
tempYY = axisY * axisY;
|
||||
|
||||
// [i12, i13] and [f12, f13]
|
||||
fixedPoint = (tempX + (axisX * sin)) * 0x10000;
|
||||
mtx->m[0][3] = fixedPoint; // i13 dirty
|
||||
mtx->intPart[1][3] = 0; // clean i13
|
||||
mtx->m[2][3] = fixedPoint << 0x10;
|
||||
|
||||
// i11 and f11
|
||||
fixedPoint = ((((1.0f - tempYY) * cos) + tempYY) * 0x10000);
|
||||
mtx->intPart[1][1] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[1][1] = fixedPoint & 0xFFFF;
|
||||
|
||||
//! @bug The sign of the `axisY * sin` term is wrong on the next two elements (i/f20 and i/f02), which causes the
|
||||
//! matrix to not be a rotation matrix (and indeed not even necessarily invertible).
|
||||
// i20 and f20
|
||||
fixedPoint = (tempY - (axisY * sin)) * 0x10000;
|
||||
mtx->intPart[2][0] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[2][0] = fixedPoint & 0xFFFF;
|
||||
|
||||
// [i02, i03] and [f02, f03]
|
||||
fixedPoint = (tempY + (axisY * sin)) * 0x10000;
|
||||
mtx->m[0][1] = fixedPoint; // i03 dirty
|
||||
mtx->intPart[0][3] = 0; // clean i03
|
||||
mtx->m[2][1] = fixedPoint << 0x10;
|
||||
|
||||
// [i22, i23] and [f22, f23]
|
||||
fixedPoint = ((((1.0f - tempZZ) * cos) + tempZZ) * 0x10000);
|
||||
mtx->m[1][1] = fixedPoint; // i23 dirty
|
||||
mtx->intPart[2][3] = 0; // clean i23
|
||||
mtx->m[3][1] = fixedPoint << 0x10;
|
||||
|
||||
// i10 and f10
|
||||
fixedPoint = (tempZ - axisZ * sin) * 0x10000;
|
||||
mtx->intPart[1][0] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[1][0] = fixedPoint & 0xFFFF;
|
||||
|
||||
// i01 and f01
|
||||
fixedPoint = (tempZ + axisZ * sin) * 0x10000;
|
||||
mtx->intPart[0][1] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[0][1] = fixedPoint & 0xFFFF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a general scale, rotation, translation matrix.
|
||||
*
|
||||
* @note The axis vector is expected to be normalised.
|
||||
*
|
||||
* The transformations are applied in the order scale, rotate, translate: \$f SRT \$f
|
||||
*
|
||||
* The result should be
|
||||
* \f[
|
||||
* \begin{bmatrix}
|
||||
* s_x((1-a_x^2) \cos \theta + a_x^2) & s_x(a_x a_y (1 - \cos \theta) + a_z \sin \theta) & s_x(a_z a_x (1 - \cos
|
||||
* \theta) - a_y \sin \theta & 0) \\
|
||||
* s_y(a_x a_y (1 - \cos \theta) - a_z \sin \theta) & s_y((1-a_y^2) \cos \theta + a_y^2) & s_z(a_y a_z (1 - \cos
|
||||
* \theta) + a_x \sin \theta) & 0 \\
|
||||
* s_z(a_z a_x (1 - \cos \theta) + a_y \sin \theta) & s_z(a_y a_z (1 - \cos \theta) - a_x \sin \theta) &
|
||||
* s_z((1-a_z^2) \cos \theta + a_z^2) & 0 \\
|
||||
* 0 & 0 & 0 & 1
|
||||
* \end{bmatrix} .
|
||||
* \f]
|
||||
*
|
||||
* @warning There is a significant bug in this function, which means it does not actually produce a proper rotation
|
||||
* matrix; see inline for details.
|
||||
*
|
||||
* @param[out] mtx Fixed-point matrix pointer to output to
|
||||
* @param[in] scaleX Scale in the X direction
|
||||
* @param[in] scaleY Scale in the Y direction
|
||||
* @param[in] scaleZ Scale in the Z direction
|
||||
* @param[in] angle angle to rotate about axis
|
||||
* @param[in] axisX X component of axis to rotate about
|
||||
* @param[in] axisY Y component of axis to rotate about
|
||||
* @param[in] axisZ Z component of axis to rotate about
|
||||
* @param[in] translateX X component of translation
|
||||
* @param[in] translateY Y component of translation
|
||||
* @param[in] translateZ Z component of translation
|
||||
*
|
||||
* @remark Original name: probably something like "suMtxMakeSRT", although Animal Forest function is a Tait-Bryan
|
||||
* rotation rather than axis-angle.
|
||||
*/
|
||||
void Mtx_SetTranslationRotationScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s32 angle, f32 axisX, f32 axisY,
|
||||
f32 axisZ, f32 translateX, f32 translateY, f32 translateZ) {
|
||||
f32 tempX;
|
||||
f32 tempY;
|
||||
f32 tempZ;
|
||||
f32 sin = Math_SinS(angle);
|
||||
f32 cos = Math_CosS(angle);
|
||||
f32 tempXX = axisX * axisX;
|
||||
f32 tempYY = axisY * axisY;
|
||||
f32 tempZZ = axisZ * axisZ;
|
||||
s32 fixedPoint;
|
||||
|
||||
tempX = axisY * axisZ * (1.0f - cos);
|
||||
|
||||
// i00 and f00
|
||||
fixedPoint = (tempXX + (1.0f - tempXX) * cos) * scaleX * 0x10000;
|
||||
mtx->intPart[0][0] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[0][0] = fixedPoint & 0xFFFF;
|
||||
|
||||
tempY = axisZ * axisX * (1.0f - cos);
|
||||
|
||||
// i21 and f21
|
||||
fixedPoint = (tempX - axisX * sin) * scaleZ * 0x10000;
|
||||
mtx->intPart[2][1] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[2][1] = fixedPoint & 0xFFFF;
|
||||
|
||||
tempZ = axisX * axisY * (1.0f - cos);
|
||||
|
||||
// [i12, i13] and [f12, f13]
|
||||
fixedPoint = (tempX + axisX * sin) * scaleY * 0x10000;
|
||||
mtx->m[0][3] = fixedPoint; // i13 dirty
|
||||
mtx->intPart[1][3] = 0; // clean i13
|
||||
mtx->m[2][3] = fixedPoint << 0x10;
|
||||
|
||||
// i11 and f11
|
||||
fixedPoint = (tempYY + (1.0f - tempYY) * cos) * scaleY * 0x10000;
|
||||
mtx->intPart[1][1] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[1][1] = fixedPoint & 0xFFFF;
|
||||
|
||||
//! @bug The sign of the `axisY * sin` term is wrong on the next two elements (i/f20 and i/f02), which causes the
|
||||
//! matrix to not be a rotation matrix (and indeed not even necessarily invertible).
|
||||
// i20, f20
|
||||
fixedPoint = (tempY - axisY * sin) * scaleZ * 0x10000;
|
||||
mtx->intPart[2][0] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[2][0] = fixedPoint & 0xFFFF;
|
||||
|
||||
// [i02, i03] and [f02, f03]
|
||||
fixedPoint = (tempY + axisY * sin) * scaleX * 0x10000;
|
||||
mtx->m[0][1] = fixedPoint; // [i03, i03], i03 dirty
|
||||
mtx->intPart[0][3] = 0; // clean i03
|
||||
mtx->m[2][1] = fixedPoint << 0x10; // [f02, f03]
|
||||
|
||||
// [i22, i23] and [f22, f23]
|
||||
fixedPoint = (tempZZ + (1.0f - tempZZ) * cos) * scaleZ * 0x10000;
|
||||
mtx->m[1][1] = fixedPoint;
|
||||
mtx->intPart[2][3] = 0;
|
||||
mtx->m[3][1] = fixedPoint << 0x10;
|
||||
|
||||
// i10 and f10
|
||||
fixedPoint = (tempZ - axisZ * sin) * scaleY * 0x10000;
|
||||
mtx->intPart[1][0] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[1][0] = fixedPoint & 0xFFFF;
|
||||
|
||||
// i01 and f01
|
||||
fixedPoint = (tempZ + axisZ * sin) * scaleX * 0x10000;
|
||||
mtx->intPart[0][1] = ((u32)fixedPoint >> 0x10) & 0xFFFF;
|
||||
mtx->fracPart[0][1] = fixedPoint & 0xFFFF;
|
||||
|
||||
// [i30, i31] and f30
|
||||
fixedPoint = translateX * 0x10000;
|
||||
mtx->m[1][2] = fixedPoint; // [i30, i31], i31 dirty
|
||||
mtx->fracPart[3][0] = fixedPoint & 0xFFFF; // f30
|
||||
|
||||
// i31 and f31
|
||||
fixedPoint = translateY * 0x10000;
|
||||
mtx->intPart[3][1] = ((u32)fixedPoint >> 0x10) & 0xFFFF; // overwrite i31
|
||||
mtx->fracPart[3][1] = fixedPoint & 0xFFFF; // overwrite f31
|
||||
|
||||
// [i32, i33] and [f32, f33]
|
||||
fixedPoint = translateZ * 0x10000;
|
||||
mtx->m[1][3] = fixedPoint; // [i32, i33]
|
||||
mtx->intPart[3][3] = 1; // clean i33
|
||||
mtx->m[3][3] = (fixedPoint << 0x10); // [f32, f33]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#include "global.h"
|
||||
#include "system_malloc.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178750.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178818.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178978.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_801789D4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/SysCfb_GetFbPtr.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/SysCfb_GetZBuffer.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178A24.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178A34.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178A94.s")
|
||||
+100
-15
@@ -1,32 +1,117 @@
|
||||
#include "global.h"
|
||||
#include "system_malloc.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178750.s")
|
||||
typedef struct {
|
||||
union {
|
||||
u32 dmaWord[2];
|
||||
u32 dataStart;
|
||||
u32 dataSize;
|
||||
struct {
|
||||
u32 start;
|
||||
u32 end;
|
||||
} offset;
|
||||
};
|
||||
} CmpDmaBuffer;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178818.s")
|
||||
CmpDmaBuffer sDmaBuffer;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178978.s")
|
||||
void func_80178AC0(u16* src, void* dst, size_t size) {
|
||||
Color_RGBA8_u32 spC;
|
||||
Color_RGBA16_2 tc;
|
||||
Color_RGBA14 tc2;
|
||||
u32* dstCur = dst;
|
||||
u16* src16 = src;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_801789D4.s")
|
||||
while (((uintptr_t)dstCur) - size < ((uintptr_t)dst)) {
|
||||
tc.rgba = *(src16++);
|
||||
if (tc.a == 1) {
|
||||
spC.r = (tc.r * 255) / 31;
|
||||
spC.g = (tc.g * 255) / 31;
|
||||
spC.b = (tc.b * 255) / 31;
|
||||
spC.a = 255;
|
||||
} else if (tc.rgba == 0) {
|
||||
spC.rgba = 0;
|
||||
} else {
|
||||
tc2.rgba = tc.rgba;
|
||||
tc.rgba = *(src16++);
|
||||
spC.r = (tc.r << 3) | tc2.r;
|
||||
spC.g = (tc.g << 3) | tc2.g;
|
||||
spC.b = (tc.b << 3) | tc2.b;
|
||||
spC.a = ((tc.rgba & 1) << 7) | ((tc2.a * 127) / 63);
|
||||
}
|
||||
*(dstCur++) = spC.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/SysCfb_GetFbPtr.s")
|
||||
void CmpDma_GetFileInfo(u8* segmentRom, s32 id, uintptr_t* outFileRom, size_t* size, s32* flag) {
|
||||
u32 dataStart;
|
||||
u32 refOff;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/SysCfb_GetZBuffer.s")
|
||||
DmaMgr_DmaRomToRam(segmentRom, &sDmaBuffer.dataStart, sizeof(sDmaBuffer.dataStart));
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178A24.s")
|
||||
dataStart = sDmaBuffer.dataStart;
|
||||
refOff = id * sizeof(u32);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178A34.s")
|
||||
// if id is >= idMax
|
||||
if (refOff > (dataStart - 4)) {
|
||||
*outFileRom = segmentRom;
|
||||
*size = 0;
|
||||
} else if (refOff == 0) {
|
||||
// get offset start of next file, i.e. size of first file
|
||||
DmaMgr_DmaRomToRam(segmentRom + 4, &sDmaBuffer.dataSize, sizeof(sDmaBuffer.dataSize));
|
||||
*outFileRom = segmentRom + dataStart;
|
||||
*size = sDmaBuffer.dataSize;
|
||||
} else {
|
||||
// get offset start, end from dataStart
|
||||
DmaMgr_DmaRomToRam(refOff + segmentRom, &sDmaBuffer.offset, sizeof(sDmaBuffer.offset));
|
||||
*outFileRom = sDmaBuffer.offset.start + segmentRom + dataStart;
|
||||
*size = sDmaBuffer.offset.end - sDmaBuffer.offset.start;
|
||||
}
|
||||
*flag = 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178A94.s")
|
||||
void CmpDma_Decompress(uintptr_t romStart, size_t size, void* dst) {
|
||||
if (size != 0) {
|
||||
Yaz0_Decompress(romStart, dst, size);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178AC0.s")
|
||||
void CmpDma_LoadFileImpl(uintptr_t segmentRom, s32 id, void* dst, size_t size) {
|
||||
uintptr_t romStart;
|
||||
size_t compressedSize;
|
||||
s32 flag;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178C80.s")
|
||||
CmpDma_GetFileInfo(segmentRom, id, &romStart, &compressedSize, &flag);
|
||||
if (flag & 1) {
|
||||
void* tempBuf = SystemArena_Malloc(0x1000);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178D7C.s")
|
||||
CmpDma_Decompress(romStart, compressedSize, tempBuf);
|
||||
func_80178AC0(tempBuf, dst, size);
|
||||
SystemArena_Free(tempBuf);
|
||||
} else {
|
||||
CmpDma_Decompress(romStart, compressedSize, dst);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178DAC.s")
|
||||
void CmpDma_LoadFile(uintptr_t segmentVrom, s32 id, void* dst, size_t size) {
|
||||
CmpDma_LoadFileImpl(DmaMgr_TranslateVromToRom(segmentVrom), id, dst, size);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178E3C.s")
|
||||
void CmpDma_LoadAllFiles(uintptr_t segmentVrom, void* dst, size_t size) {
|
||||
uintptr_t rom = DmaMgr_TranslateVromToRom(segmentVrom);
|
||||
u32 i;
|
||||
u32 end;
|
||||
void* nextDst;
|
||||
u32 dataStart;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cmpdma/func_80178E7C.s")
|
||||
DmaMgr_DmaRomToRam(rom, &sDmaBuffer.dataStart, sizeof(sDmaBuffer.dataStart));
|
||||
|
||||
dataStart = sDmaBuffer.dataStart;
|
||||
nextDst = dst;
|
||||
end = (dataStart / sizeof(u32)) - 1;
|
||||
|
||||
for (i = 0; i < end; i++) {
|
||||
CmpDma_LoadFileImpl(rom, i, nextDst, 0);
|
||||
nextDst = gYaz0DecompressDstEnd;
|
||||
}
|
||||
}
|
||||
|
||||
+18
-16
@@ -7,12 +7,13 @@ void Setup_SetRegs(void) {
|
||||
XREG(11) = 0x14;
|
||||
XREG(12) = 0xE;
|
||||
XREG(13) = 0;
|
||||
XREG(31) = 0;
|
||||
R_A_BTN_Y_OFFSET = 0;
|
||||
R_MAGIC_CONSUME_TIMER_GIANTS_MASK = 80;
|
||||
XREG(43) = 0xFC54;
|
||||
|
||||
XREG(44) = 0xD7;
|
||||
XREG(45) = 0xDA;
|
||||
R_THREE_DAY_CLOCK_Y_POS = 64596;
|
||||
R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF = 215;
|
||||
R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF = 218;
|
||||
|
||||
XREG(68) = 0x61;
|
||||
XREG(69) = 0x93;
|
||||
XREG(70) = 0x28;
|
||||
@@ -27,22 +28,23 @@ void Setup_SetRegs(void) {
|
||||
XREG(88) = 0x56;
|
||||
XREG(89) = 0x258;
|
||||
XREG(90) = 0x1C2;
|
||||
|
||||
R_STORY_FILL_SCREEN_ALPHA = 0;
|
||||
R_REVERSE_FLOOR_INDEX = 0;
|
||||
R_MINIMAP_DISABLED = false;
|
||||
|
||||
YREG(32) = 0x50;
|
||||
YREG(33) = 0x3C;
|
||||
YREG(34) = 0xDC;
|
||||
YREG(35) = 0x3C;
|
||||
YREG(36) = 0x50;
|
||||
YREG(37) = 0xA0;
|
||||
YREG(38) = 0xDC;
|
||||
YREG(39) = 0xA0;
|
||||
YREG(40) = 0x8E;
|
||||
YREG(41) = 0x6C;
|
||||
YREG(42) = 0xCC;
|
||||
YREG(43) = 0xB1;
|
||||
R_PICTO_FOCUS_BORDER_TOPLEFT_X = 80;
|
||||
R_PICTO_FOCUS_BORDER_TOPLEFT_Y = 60;
|
||||
R_PICTO_FOCUS_BORDER_TOPRIGHT_X = 220;
|
||||
R_PICTO_FOCUS_BORDER_TOPRIGHT_Y = 60;
|
||||
R_PICTO_FOCUS_BORDER_BOTTOMLEFT_X = 80;
|
||||
R_PICTO_FOCUS_BORDER_BOTTOMLEFT_Y = 160;
|
||||
R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_X = 220;
|
||||
R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_Y = 160;
|
||||
R_PICTO_FOCUS_ICON_X = 142;
|
||||
R_PICTO_FOCUS_ICON_Y = 108;
|
||||
R_PICTO_FOCUS_TEXT_X = 204;
|
||||
R_PICTO_FOCUS_TEXT_Y = 177;
|
||||
}
|
||||
|
||||
void Setup_InitImpl(SetupState* this) {
|
||||
|
||||
+8
-10
@@ -224,7 +224,7 @@ void ActorShadow_DrawFeet(Actor* actor, Lights* mapper, PlayState* play) {
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(floorHeight); i++, spB8 >>= 1) {
|
||||
feetPosPtr->y += 50.0f;
|
||||
*floorHeightPtr = func_80169100(play, &sp13C, &spF8, &bgId, feetPosPtr);
|
||||
*floorHeightPtr = Play_GetFloorSurfaceImpl(play, &sp13C, &spF8, &bgId, feetPosPtr);
|
||||
feetPosPtr->y -= 50.0f;
|
||||
|
||||
distToFloor = feetPosPtr->y - *floorHeightPtr;
|
||||
@@ -2353,10 +2353,8 @@ Actor* Actor_UpdateActor(UpdateActor_Params* params) {
|
||||
if (!Object_IsLoaded(&play->objectCtx, actor->objBankIndex)) {
|
||||
Actor_Kill(actor);
|
||||
} else {
|
||||
s32 tmp = (params->unk_08 == 0);
|
||||
|
||||
if (((params->unk_08) && !(actor->flags & params->unk_08)) ||
|
||||
((tmp = (params->unk_08 == 0)) &&
|
||||
((((!params->unk_08) != 0)) &&
|
||||
(!(actor->flags & ACTOR_FLAG_100000) ||
|
||||
((actor->category == ACTORCAT_EXPLOSIVES) && (params->player->stateFlags1 & PLAYER_STATE1_200))) &&
|
||||
(params->unkC != 0) && (actor != params->unk10) && ((actor != params->player->heldActor)) &&
|
||||
@@ -2444,7 +2442,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) {
|
||||
params.player = player;
|
||||
params.play = play;
|
||||
|
||||
if (play->unk_18844 != 0) {
|
||||
if (play->unk_18844) {
|
||||
params.unk_18 = ACTOR_FLAG_200000;
|
||||
} else {
|
||||
params.unk_18 = ACTOR_FLAG_200000 | ACTOR_FLAG_40 | ACTOR_FLAG_10;
|
||||
@@ -2700,7 +2698,7 @@ void Actor_DrawLensActors(PlayState* play, s32 numInvisibleActors, Actor** invis
|
||||
|
||||
spAC = tmp;
|
||||
Actor_DrawLensOverlay(&spAC, play->actorCtx.lensMaskSize);
|
||||
tmp = func_801660B8(play, spAC);
|
||||
tmp = Play_SetFog(play, spAC);
|
||||
|
||||
for (spB4 = 0, invisibleActor = invisibleActors; spB4 < numInvisibleActors; spB4++, invisibleActor++) {
|
||||
POLY_XLU_DISP = tmp;
|
||||
@@ -2781,9 +2779,9 @@ s32 func_800BA2FC(PlayState* play, Actor* actor, Vec3f* projectedPos, f32 projec
|
||||
f32 phi_f16;
|
||||
|
||||
if (play->view.fovy != 60.0f) {
|
||||
phi_f12 = actor->uncullZoneScale * play->unk_187F0.x * 0.76980036f; // sqrt(16/27)
|
||||
phi_f12 = actor->uncullZoneScale * play->projectionMtxFDiagonal.x * 0.76980036f; // sqrt(16/27)
|
||||
|
||||
phi_f14 = play->unk_187F0.y * 0.57735026f; // 1 / sqrt(3)
|
||||
phi_f14 = play->projectionMtxFDiagonal.y * 0.57735026f; // 1 / sqrt(3)
|
||||
phi_f16 = actor->uncullZoneScale * phi_f14;
|
||||
phi_f14 *= actor->uncullZoneDownward;
|
||||
} else {
|
||||
@@ -2811,7 +2809,7 @@ void Actor_DrawAll(PlayState* play, ActorContext* actorCtx) {
|
||||
s32 actorFlags;
|
||||
s32 i;
|
||||
|
||||
if (play->unk_18844 != 0) {
|
||||
if (play->unk_18844) {
|
||||
actorFlags = ACTOR_FLAG_200000;
|
||||
} else {
|
||||
actorFlags = ACTOR_FLAG_200000 | ACTOR_FLAG_40 | ACTOR_FLAG_20;
|
||||
@@ -2882,7 +2880,7 @@ void Actor_DrawAll(PlayState* play, ActorContext* actorCtx) {
|
||||
gSPBranchList(ref2, &tmp2[1]);
|
||||
POLY_XLU_DISP = &tmp2[1];
|
||||
|
||||
if (play->unk_18844 == 0) {
|
||||
if (!play->unk_18844) {
|
||||
Lights_DrawGlow(play);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "z64quake.h"
|
||||
#include "z64shrink_window.h"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
|
||||
void func_801AAAA0(PlayState* play) {
|
||||
// Remnant from OoT
|
||||
void Regs_InitData(PlayState* play) {
|
||||
}
|
||||
|
||||
+30
-30
@@ -161,8 +161,8 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
}
|
||||
break;
|
||||
case 0x3:
|
||||
if (play->envCtx.lightSettings.fogFar < 12800) {
|
||||
play->envCtx.lightSettings.fogFar += 35;
|
||||
if (play->envCtx.lightSettings.zFar < 12800) {
|
||||
play->envCtx.lightSettings.zFar += 35;
|
||||
}
|
||||
break;
|
||||
case 0x4:
|
||||
@@ -206,16 +206,16 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
}
|
||||
break;
|
||||
case 0xA:
|
||||
D_801F6D30.r = 255;
|
||||
D_801F6D30.g = 255;
|
||||
D_801F6D30.b = 255;
|
||||
D_801F6D30.a = 255 * progress;
|
||||
gVisMonoColor.r = 255;
|
||||
gVisMonoColor.g = 255;
|
||||
gVisMonoColor.b = 255;
|
||||
gVisMonoColor.a = 255 * progress;
|
||||
break;
|
||||
case 0xB:
|
||||
D_801F6D30.r = 255;
|
||||
D_801F6D30.g = 180;
|
||||
D_801F6D30.b = 100;
|
||||
D_801F6D30.a = 255 * progress;
|
||||
gVisMonoColor.r = 255;
|
||||
gVisMonoColor.g = 180;
|
||||
gVisMonoColor.b = 100;
|
||||
gVisMonoColor.a = 255 * progress;
|
||||
break;
|
||||
case 0xC:
|
||||
play->roomCtx.curRoom.segment = NULL;
|
||||
@@ -236,10 +236,10 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
}
|
||||
break;
|
||||
case 0xE:
|
||||
play->unk_18845 = 1;
|
||||
play->haltAllActors = true;
|
||||
break;
|
||||
case 0xF:
|
||||
play->unk_18845 = 0;
|
||||
play->haltAllActors = false;
|
||||
break;
|
||||
case 0x10:
|
||||
if (isStartFrame) {
|
||||
@@ -252,9 +252,9 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
break;
|
||||
case 0x12:
|
||||
if (!gSaveContext.save.isNight) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)REG(15);
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)R_TIME_SPEED;
|
||||
} else {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)(2 * REG(15));
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)(2 * R_TIME_SPEED);
|
||||
}
|
||||
break;
|
||||
case 0x13:
|
||||
@@ -295,7 +295,7 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
play->nextEntrance = ENTRANCE(CUTSCENE, 0);
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF8;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_03;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
}
|
||||
break;
|
||||
case 0x1C:
|
||||
@@ -326,10 +326,10 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c
|
||||
if (csCtx->frames != D_801BB15C) {
|
||||
D_801BB15C = csCtx->frames;
|
||||
|
||||
if (REG(15) != 0) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15);
|
||||
if (R_TIME_SPEED != 0) {
|
||||
gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED;
|
||||
gSaveContext.save.time =
|
||||
((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed);
|
||||
((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -555,7 +555,7 @@ void Cutscene_Command_SetTime(PlayState* play, CutsceneContext* csCtx, CsCmdDayT
|
||||
|
||||
void Cutscene_TerminatorImpl(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) {
|
||||
csCtx->state = CS_STATE_4;
|
||||
func_80165690();
|
||||
Play_DisableMotionBlur();
|
||||
Audio_SetCutsceneFlag(false);
|
||||
gSaveContext.cutsceneTransitionControl = 1;
|
||||
|
||||
@@ -575,7 +575,7 @@ void Cutscene_TerminatorImpl(PlayState* play, CutsceneContext* csCtx, CsCmdBase*
|
||||
if (D_801BB12C >= 2) {
|
||||
D_801BB12C = 0;
|
||||
}
|
||||
play->transitionType = TRANS_TYPE_04;
|
||||
play->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
|
||||
}
|
||||
|
||||
if ((play->nextEntrance & 0xF) > 0) {
|
||||
@@ -594,19 +594,19 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
}
|
||||
} else if (cmd->base == 2) {
|
||||
if (csCtx->frames == cmd->startFrame) {
|
||||
func_80165690();
|
||||
Play_DisableMotionBlur();
|
||||
|
||||
switch (D_801F4DE2) {
|
||||
case 0x1F:
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) {
|
||||
play->nextEntrance = ENTRANCE(WOODFALL_TEMPLE, 1);
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_03;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
} else {
|
||||
play->nextEntrance = ENTRANCE(WOODFALL, 0);
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF0;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_03;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -614,12 +614,12 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) {
|
||||
play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 7);
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_03;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
} else {
|
||||
play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 0);
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF0;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_03;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -628,7 +628,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntrance = ENTRANCE(ZORA_CAPE, 8);
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF0;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_03;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
break;
|
||||
|
||||
case 0x36:
|
||||
@@ -636,7 +636,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntrance = ENTRANCE(IKANA_CANYON, 0);
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF1;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_03;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -764,16 +764,16 @@ void Cutscene_Command_ChooseCreditsScenes(PlayState* play, CutsceneContext* csCt
|
||||
void Cutscene_Command_MotionBlur(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) {
|
||||
if ((csCtx->frames >= cmd->startFrame) && (cmd->endFrame >= csCtx->frames)) {
|
||||
if ((csCtx->frames == cmd->startFrame) && (cmd->base == 1)) {
|
||||
func_8016566C(180);
|
||||
Play_EnableMotionBlur(180);
|
||||
}
|
||||
|
||||
if (cmd->base == 2) {
|
||||
f32 progress = Environment_LerpWeight(cmd->endFrame, cmd->startFrame, csCtx->frames);
|
||||
|
||||
if (progress >= 0.9f) {
|
||||
func_80165690();
|
||||
Play_DisableMotionBlur();
|
||||
} else {
|
||||
func_80165658((1.0f - progress) * 180.0f);
|
||||
Play_SetMotionBlurAlpha((1.0f - progress) * 180.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -837,7 +837,7 @@ void GetItem_DrawRemains(PlayState* play, s16 drawId) {
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
|
||||
|
||||
POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP);
|
||||
POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ void func_800AE5A0(PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP);
|
||||
POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
@@ -105,7 +105,7 @@ void func_800AE8EC(PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
POLY_XLU_DISP = func_801660B8(play, POLY_XLU_DISP);
|
||||
POLY_XLU_DISP = Play_SetFog(play, POLY_XLU_DISP);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
+62
-13
@@ -1,21 +1,65 @@
|
||||
#include "global.h"
|
||||
#include "assets/objects/gameplay_keep/gameplay_keep.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8)
|
||||
|
||||
#define THIS ((EnAObj*)thisx)
|
||||
|
||||
void EnAObj_Update1(EnAObj* this, PlayState* play);
|
||||
void EnAObj_Update2(EnAObj* this, PlayState* play);
|
||||
void EnAObj_Init(Actor* thisx, PlayState* play);
|
||||
void EnAObj_Destroy(Actor* thisx, PlayState* play);
|
||||
void EnAObj_Update(Actor* thisx, PlayState* play);
|
||||
void EnAObj_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void EnAObj_Idle(EnAObj* this, PlayState* play);
|
||||
void EnAObj_Talk(EnAObj* this, PlayState* play);
|
||||
|
||||
ActorInit En_A_Obj_InitVars = {
|
||||
ACTOR_EN_A_OBJ,
|
||||
ACTORCAT_PROP,
|
||||
FLAGS,
|
||||
GAMEPLAY_KEEP,
|
||||
sizeof(EnAObj),
|
||||
(ActorFunc)EnAObj_Init,
|
||||
(ActorFunc)EnAObj_Destroy,
|
||||
(ActorFunc)EnAObj_Update,
|
||||
(ActorFunc)EnAObj_Draw,
|
||||
};
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
OC2_TYPE_2,
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 25, 60, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_U8(targetMode, 0, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
void EnAObj_Init(Actor* thisx, PlayState* play) {
|
||||
EnAObj* this = THIS;
|
||||
|
||||
this->actor.textId = ((this->actor.params >> 8) & 0xFF) | 0x300;
|
||||
this->actor.params = (this->actor.params & 0xFF) - 9;
|
||||
Actor_ProcessInitChain(&this->actor, &enAObjInitVar);
|
||||
this->actor.textId = AOBJ_GET_TEXTID(&this->actor);
|
||||
this->actor.params = AOBJ_GET_TYPE(&this->actor);
|
||||
Actor_ProcessInitChain(&this->actor, sInitChain);
|
||||
ActorShape_Init(&this->actor.shape, 0, ActorShadow_DrawCircle, 12);
|
||||
Collider_InitAndSetCylinder(play, &this->collision, &this->actor, &enAObjCylinderInit);
|
||||
Collider_InitAndSetCylinder(play, &this->collision, &this->actor, &sCylinderInit);
|
||||
Collider_UpdateCylinder(&this->actor, &this->collision);
|
||||
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
this->actionFunc = EnAObj_Update1;
|
||||
this->actionFunc = EnAObj_Idle;
|
||||
}
|
||||
|
||||
void EnAObj_Destroy(Actor* thisx, PlayState* play) {
|
||||
@@ -24,23 +68,23 @@ void EnAObj_Destroy(Actor* thisx, PlayState* play) {
|
||||
Collider_DestroyCylinder(play, &this->collision);
|
||||
}
|
||||
|
||||
void EnAObj_Update1(EnAObj* this, PlayState* play) {
|
||||
void EnAObj_Idle(EnAObj* this, PlayState* play) {
|
||||
s32 yawDiff;
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
this->actionFunc = EnAObj_Update2;
|
||||
this->actionFunc = EnAObj_Talk;
|
||||
} else {
|
||||
yawDiff = ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y));
|
||||
|
||||
if ((yawDiff < 0x2800) || ((this->actor.params == 1) && (yawDiff > 0x5800))) {
|
||||
if ((yawDiff < 0x2800) || ((this->actor.params == AOBJ_SIGNPOST_ARROW) && (yawDiff > 0x5800))) {
|
||||
func_800B863C(&this->actor, play);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EnAObj_Update2(EnAObj* this, PlayState* play) {
|
||||
void EnAObj_Talk(EnAObj* this, PlayState* play) {
|
||||
if (Actor_TextboxIsClosing(&this->actor, play)) {
|
||||
this->actionFunc = EnAObj_Update1;
|
||||
this->actionFunc = EnAObj_Idle;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,6 +96,11 @@ void EnAObj_Update(Actor* thisx, PlayState* play) {
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collision.base);
|
||||
}
|
||||
|
||||
static Gfx* sDLists[] = {
|
||||
gSignRectangularDL, // AOBJ_SIGNPOST_OBLONG
|
||||
gSignDirectionalDL, // AOBJ_SIGNPOST_ARROW
|
||||
};
|
||||
|
||||
void EnAObj_Draw(Actor* thisx, PlayState* play) {
|
||||
Gfx_DrawDListOpa(play, enAObjDisplayLists[thisx->params]);
|
||||
Gfx_DrawDListOpa(play, sDLists[thisx->params]);
|
||||
}
|
||||
|
||||
@@ -819,7 +819,7 @@ void EnItem00_DrawSprite(EnItem00* this, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP);
|
||||
POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP);
|
||||
|
||||
if (this->actor.params == ITEM00_NUTS_10) {
|
||||
texIndex = 6;
|
||||
|
||||
+3
-3
@@ -5,13 +5,13 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_8016418C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_8016424C.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_Destroy.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_801642D8.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_80164438.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_8016454C.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_Draw.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_80164678.s")
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ void GameOver_Update(PlayState* play) {
|
||||
if (gSaveContext.respawnFlag != -7) {
|
||||
gSaveContext.respawnFlag = -6;
|
||||
}
|
||||
gSaveContext.nextTransitionType = TRANS_TYPE_02;
|
||||
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
|
||||
gSaveContext.save.playerData.health = 0x30;
|
||||
gameOverCtx->state++;
|
||||
if (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU) {
|
||||
|
||||
@@ -50,7 +50,7 @@ void KaleidoScopeCall_Update(PlayState* play) {
|
||||
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1;
|
||||
} else if ((pauseCtx->state == PAUSE_STATE_OPENING_1) || (pauseCtx->state == PAUSE_STATE_GAMEOVER_1) ||
|
||||
(pauseCtx->state == PAUSE_STATE_OWLWARP_1)) {
|
||||
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) {
|
||||
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) {
|
||||
pauseCtx->state++;
|
||||
}
|
||||
} else if (pauseCtx->state != PAUSE_STATE_OFF) {
|
||||
@@ -77,7 +77,7 @@ void KaleidoScopeCall_Update(PlayState* play) {
|
||||
void KaleidoScopeCall_Draw(PlayState* play) {
|
||||
KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE];
|
||||
|
||||
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) {
|
||||
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) {
|
||||
if (((play->pauseCtx.state >= PAUSE_STATE_OPENING_3) && (play->pauseCtx.state <= PAUSE_STATE_SAVEPROMPT)) ||
|
||||
((play->pauseCtx.state >= PAUSE_STATE_GAMEOVER_3) && (play->pauseCtx.state <= PAUSE_STATE_UNPAUSE_SETUP))) {
|
||||
if (gKaleidoMgrCurOvl == kaleidoScopeOvl) {
|
||||
|
||||
@@ -98,7 +98,7 @@ void KaleidoSetup_Update(PlayState* play) {
|
||||
(gSaveContext.magicState != MAGIC_STATE_FILL)) {
|
||||
if (!CHECK_EVENTINF(EVENTINF_17) && !(player->stateFlags1 & PLAYER_STATE1_20)) {
|
||||
if (!(play->actorCtx.flags & ACTORCTX_FLAG_1) &&
|
||||
!(play->actorCtx.flags & ACTORCTX_FLAG_2)) {
|
||||
!(play->actorCtx.flags & ACTORCTX_FLAG_PICTO_BOX_ON)) {
|
||||
if ((play->actorCtx.unk268 == 0) && CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
||||
gSaveContext.prevHudVisibility = gSaveContext.hudVisibility;
|
||||
pauseCtx->itemDescriptionOn = false;
|
||||
|
||||
+11
-11
@@ -4,7 +4,7 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F50D4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Kankyo_Init.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F5954.s")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F5B10.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F5CD0.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_UpdateSkybox.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F6834.s")
|
||||
|
||||
@@ -42,11 +42,11 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F8A9C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F8CD4.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_Update.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F8D84.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F9728.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawSunLensFlare.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F9824.s")
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FA3C4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FA9FC.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawRain.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FAAB4.s")
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FB9B4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FBCBC.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawCustomLensFlare.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Kankyo_InitGameOverLights.s")
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FC3DC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FC444.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_FillScreen.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FC64C.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawSandstorm.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FD2B4.s")
|
||||
|
||||
@@ -124,11 +124,11 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE3E0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE484.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_StopTime.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE498.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_StartTime.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE4A8.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_IsTimeStopped.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE4B8.s")
|
||||
|
||||
|
||||
+19
-14
@@ -36,7 +36,7 @@ TexturePtr HeartDDTextures[] = {
|
||||
void LifeMeter_Init(PlayState* play) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
|
||||
interfaceCtx->unkTimer = 320;
|
||||
interfaceCtx->healthTimer = 320;
|
||||
|
||||
interfaceCtx->health = gSaveContext.save.playerData.health;
|
||||
|
||||
@@ -167,39 +167,44 @@ void LifeMeter_UpdateColors(PlayState* play) {
|
||||
sBeatingHeartsDDEnv[2] = (u8)(bFactor + 0) & 0xFF;
|
||||
}
|
||||
|
||||
// Unused
|
||||
s32 LifeMeter_SaveInterfaceHealth(PlayState* play) {
|
||||
gSaveContext.save.playerData.health = play->interfaceCtx.health;
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
|
||||
gSaveContext.save.playerData.health = interfaceCtx->health;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Unused
|
||||
s32 LifeMeter_IncreaseInterfaceHealth(PlayState* play) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
|
||||
interfaceCtx->unkTimer = 320;
|
||||
interfaceCtx->healthTimer = 320;
|
||||
interfaceCtx->health += 0x10;
|
||||
if (play->interfaceCtx.health >= gSaveContext.save.playerData.health) {
|
||||
play->interfaceCtx.health = gSaveContext.save.playerData.health;
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Unused
|
||||
s32 LifeMeter_DecreaseInterfaceHealth(PlayState* play) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
|
||||
if (interfaceCtx->unkTimer != 0) {
|
||||
interfaceCtx->unkTimer--;
|
||||
if (interfaceCtx->healthTimer != 0) {
|
||||
interfaceCtx->healthTimer--;
|
||||
} else {
|
||||
interfaceCtx->unkTimer = 320;
|
||||
interfaceCtx->healthTimer = 320;
|
||||
interfaceCtx->health -= 0x10;
|
||||
if (interfaceCtx->health <= 0) {
|
||||
interfaceCtx->health = 0;
|
||||
play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 1));
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
void LifeMeter_Draw(PlayState* play) {
|
||||
@@ -230,6 +235,7 @@ void LifeMeter_Draw(PlayState* play) {
|
||||
if ((gSaveContext.save.playerData.health % 0x10) == 0) {
|
||||
fullHeartCount--;
|
||||
}
|
||||
|
||||
offsetY = 0.0f;
|
||||
offsetX = 0.0f;
|
||||
curColorSet = -1;
|
||||
@@ -376,12 +382,13 @@ void LifeMeter_Draw(PlayState* play) {
|
||||
}
|
||||
}
|
||||
mtx = GRAPH_ALLOC(gfxCtx, sizeof(Mtx));
|
||||
func_801780F0(mtx, 1.0f - (0.32f * lifesize), 1.0f - (0.32f * lifesize), 1.0f - (0.32f * lifesize),
|
||||
-130.0f + offsetX, 94.5f - offsetY, 0.0f);
|
||||
Mtx_SetTranslateScaleMtx(mtx, 1.0f - (0.32f * lifesize), 1.0f - (0.32f * lifesize),
|
||||
1.0f - (0.32f * lifesize), -130.0f + offsetX, 94.5f - offsetY, 0.0f);
|
||||
gSPMatrix(OVERLAY_DISP++, mtx, G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPVertex(OVERLAY_DISP++, beatingHeartVtx, 4, 0);
|
||||
gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0);
|
||||
}
|
||||
|
||||
offsetX += 10.0f;
|
||||
if (i == 9) {
|
||||
offsetY += 10.0f;
|
||||
@@ -418,10 +425,8 @@ u32 LifeMeter_IsCritical(void) {
|
||||
|
||||
if (gSaveContext.save.playerData.healthCapacity <= 0x50) {
|
||||
criticalThreshold = 0x10;
|
||||
|
||||
} else if (gSaveContext.save.playerData.healthCapacity <= 0xA0) {
|
||||
criticalThreshold = 0x18;
|
||||
|
||||
} else if (gSaveContext.save.playerData.healthCapacity <= 0xF0) {
|
||||
criticalThreshold = 0x20;
|
||||
} else {
|
||||
|
||||
+7
-7
@@ -251,7 +251,7 @@ void Lights_FreeNode(LightNode* light) {
|
||||
void LightContext_Init(PlayState* play, LightContext* lightCtx) {
|
||||
LightContext_InitList(play, lightCtx);
|
||||
LightContext_SetAmbientColor(lightCtx, 80, 80, 80);
|
||||
func_80102544(lightCtx, 0, 0, 0, 0x3E4, 0x3200);
|
||||
LightContext_SetFog(lightCtx, 0, 0, 0, 996, 12800);
|
||||
bzero(&sLightsBuffer, sizeof(LightsBuffer));
|
||||
}
|
||||
|
||||
@@ -261,12 +261,12 @@ void LightContext_SetAmbientColor(LightContext* lightCtx, u8 r, u8 g, u8 b) {
|
||||
lightCtx->ambient.b = b;
|
||||
}
|
||||
|
||||
void func_80102544(LightContext* lightCtx, u8 a1, u8 a2, u8 a3, s16 numLights, s16 sp16) {
|
||||
lightCtx->unk7 = a1;
|
||||
lightCtx->unk8 = a2;
|
||||
lightCtx->unk9 = a3;
|
||||
lightCtx->unkA = numLights;
|
||||
lightCtx->unkC = sp16;
|
||||
void LightContext_SetFog(LightContext* lightCtx, u8 r, u8 g, u8 b, s16 near, s16 far) {
|
||||
lightCtx->fogColor.r = r;
|
||||
lightCtx->fogColor.g = g;
|
||||
lightCtx->fogColor.b = b;
|
||||
lightCtx->fogNear = near;
|
||||
lightCtx->zFar = far;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -322,9 +322,9 @@ void func_80151938(PlayState* play, u16 textId) {
|
||||
|
||||
if (interfaceCtx->unk_222 == 0) {
|
||||
if (textId != 0x1B93) {
|
||||
func_8011552C(play, 0x10);
|
||||
func_8011552C(play, DO_ACTION_NEXT);
|
||||
} else if (textId != 0xF8) {
|
||||
func_8011552C(play, 6);
|
||||
func_8011552C(play, DO_ACTION_DECIDE);
|
||||
}
|
||||
}
|
||||
msgCtx->unk1203C = msgCtx->unk1203A;
|
||||
@@ -531,7 +531,7 @@ void func_80153E7C(PlayState* play, void* arg1) {
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/func_801541D4.s")
|
||||
|
||||
void func_80156758(PlayState* play) {
|
||||
void Message_Draw(PlayState* play) {
|
||||
Gfx* nextDisplayList;
|
||||
Gfx* polyOpa;
|
||||
GraphicsContext* gfxCtx = play->state.gfxCtx;
|
||||
@@ -551,7 +551,7 @@ void func_80156758(PlayState* play) {
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/func_8015680C.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/Message_Update.s")
|
||||
|
||||
void func_801586A4(PlayState* play) {
|
||||
play->msgCtx.messageEntryTableNes = D_801C6B98;
|
||||
|
||||
@@ -212,13 +212,9 @@ void Message_LoadTimeNES(PlayState* play, u8 arg1, s32* offset, f32* arg3, s16*
|
||||
s16 i;
|
||||
|
||||
if (arg1 == 0xCF) {
|
||||
// Calculates the time left before the moon crashes.
|
||||
// The day begins at CLOCK_TIME(6, 0) so it must be offset.
|
||||
timeLeft = (4 - CURRENT_DAY) * DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0));
|
||||
timeLeft = TIME_UNTIL_MOON_CRASH;
|
||||
} else {
|
||||
// Calculates the time left before a new day.
|
||||
// The day begins at CLOCK_TIME(6, 0) so it must be offset.
|
||||
timeLeft = DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0));
|
||||
timeLeft = TIME_UNTIL_NEW_DAY;
|
||||
}
|
||||
|
||||
timeLeftInMinutes = TIME_TO_MINUTES_F(timeLeft);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user