diff --git a/.vscode/settings.json b/.vscode/settings.json index da4e8b6a..da500595 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -149,7 +149,8 @@ "sf64dma.h": "c", "string": "c", "prevent_bss_reordering3.h": "c", - "ast_a_ti.h": "c" + "ast_a_ti.h": "c", + "fox_co.h": "c" }, "C_Cpp_Runner.msvcBatchPath": "" } \ No newline at end of file diff --git a/Makefile b/Makefile index cf1eab79..81ce5d49 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,7 @@ else # we support Microsoft extensions such as anonymous structs, which the compiler does support but warns for their usage. Surpress the warnings with -woff. CFLAGS += -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(IINC) -nostdinc -Wab,-r4300_mul -woff 649,838,712,516 MIPS_VERSION := -mips2 - WARNINGS := -fullwarn -verbose -woff 624,649,838,712,516,513,596,564,594,709 + WARNINGS := -fullwarn -verbose -woff 624,649,838,712,516,513,596,564,594,709,807 endif ifeq ($(COMPILER),ido) diff --git a/assets/yaml/jp/rev0/ast_7_ti_1.yaml b/assets/yaml/jp/rev0/ast_7_ti_1.yaml index e1f11466..3d70040b 100644 --- a/assets/yaml/jp/rev0/ast_7_ti_1.yaml +++ b/assets/yaml/jp/rev0/ast_7_ti_1.yaml @@ -89,8 +89,8 @@ D_TI1_7005420: D_TI1_70067C4: { type: SF64:ANIM, offset: 0x70067C4, symbol: D_TI1_70067C4 } -D_TI1_7006990: - { type: SF64:SKELETON, offset: 0x7006990, symbol: D_TI1_7006990} +aTi1DesertCrawlerSkel: + { type: SF64:SKELETON, offset: 0x7006990, symbol: aTi1DesertCrawlerSkel} D_TI1_7006F74: { type: SF64:ANIM, offset: 0x7006F74, symbol: D_TI1_7006F74 } @@ -146,8 +146,8 @@ D_TI1_7009510: D_TI1_70096D8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x070096D8, symbol: D_TI1_70096D8 } -D_TI1_70098E0: - { type: GFX, offset: 0x70098E0, symbol: D_TI1_70098E0 } +aTiDelphorDL: + { type: GFX, offset: 0x70098E0, symbol: aTiDelphorDL } D_TI1_7009B58: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07009B58, symbol: D_TI1_7009B58 } @@ -158,8 +158,8 @@ D_TI1_7009D60: D_TI1_700A190: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0700A190, symbol: D_TI1_700A190 } -D_TI1_700A990: - { type: GFX, offset: 0x700A990, symbol: D_TI1_700A990 } +aTi1BombDL: + { type: GFX, offset: 0x700A990, symbol: aTi1BombDL } D_TI1_700AAD8: { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x700AAD8, symbol: D_TI1_700AAD8, tlut: 0x700AB58 } @@ -167,8 +167,8 @@ D_TI1_700AAD8: D_TI1_700AB58: { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x700AB58, symbol: D_TI1_700AB58 } -D_TI1_700AB70: - { type: GFX, offset: 0x700AB70, symbol: D_TI1_700AB70 } +aTi1LandmineDL: + { type: GFX, offset: 0x700AB70, symbol: aTi1LandmineDL } D_TI1_700AEA8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0700AEA8, symbol: D_TI1_700AEA8 } @@ -188,8 +188,8 @@ D_TI1_700B9C0: D_TI1_700BB10: { type: GFX, offset: 0x700BB10, symbol: D_TI1_700BB10 } -D_TI1_700BE00: - { type: GFX, offset: 0x700BE00, symbol: D_TI1_700BE00 } +aTiBridgeDL: + { type: GFX, offset: 0x700BE00, symbol: aTiBridgeDL } D_TI1_700BFB0: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x0700BFB0, symbol: D_TI1_700BFB0, tlut: 0x0700C3B0 } @@ -200,11 +200,11 @@ D_TI1_700C3B0: D_TI1_700C4B0: { type: GFX, offset: 0x700C4B0, symbol: D_TI1_700C4B0 } -D_TI1_700C8D8: - { type: SF64:ANIM, offset: 0x700C8D8, symbol: D_TI1_700C8D8 } +aTi1DesertRoverAnim: + { type: SF64:ANIM, offset: 0x700C8D8, symbol: aTi1DesertRoverAnim } -D_TI1_700C964: - { type: SF64:SKELETON, offset: 0x700C964, symbol: D_TI1_700C964 } +aTi1DesertRoverSkel: + { type: SF64:SKELETON, offset: 0x700C964, symbol: aTi1DesertRoverSkel } D_TI1_700C980: { type: GFX, offset: 0x700C980, symbol: D_TI1_700C980 } @@ -218,8 +218,8 @@ D_TI1_700CB60: D_TI1_700D534: { type: SF64:ANIM, offset: 0x700D534, symbol: D_TI1_700D534 } -D_TI1_700D700: - {type: SF64:SKELETON, offset: 0x700D700, symbol: D_TI1_700D700} +aTiRascoSkel: + {type: SF64:SKELETON, offset: 0x700D700, symbol: aTiRascoSkel} D_TI1_700D740: { type: GFX, offset: 0x700D740, symbol: D_TI1_700D740 } diff --git a/assets/yaml/jp/rev0/ast_allies.yaml b/assets/yaml/jp/rev0/ast_allies.yaml index 0574dedf..57a24582 100644 --- a/assets/yaml/jp/rev0/ast_allies.yaml +++ b/assets/yaml/jp/rev0/ast_allies.yaml @@ -8,8 +8,8 @@ - '#include "gfx.h"' - '#include "sf64object.h"' -D_D000000: - { type: GFX, offset: 0xD000000, symbol: D_D000000 } +aKattMarkDL: + { type: GFX, offset: 0xD000000, symbol: aKattMarkDL } ast_allies_seg13_vtx_00000098: { type: VTX, count: 3, offset: 0x0D000098, symbol: ast_allies_seg13_vtx_00000098 } @@ -17,11 +17,11 @@ ast_allies_seg13_vtx_00000098: D_D0000C8: { type: BLOB, size: 0x18, offset: 0x0D0000C8, symbol: D_D0000C8 } -D_D0000E0: - { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D0000E0, symbol: D_D0000E0, tlut: 0x0D000160 } +aKattMarkTex: + { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D0000E0, symbol: aKattMarkTex, tlut: 0x0D000160 } -D_D000160: - { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD000160, symbol: D_D000160 } +aKattMarkTLUT: + { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD000160, symbol: aKattMarkTLUT } D_D000170: { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD000170, symbol: D_D000170 } @@ -77,25 +77,25 @@ D_D00AFB8: D_D00B3B8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0D00B3B8, symbol: D_D00B3B8 } -D_D00B5C0: - { type: GFX, offset: 0xD00B5C0, symbol: D_D00B5C0 } +aBillMarkDL: + { type: GFX, offset: 0xD00B5C0, symbol: aBillMarkDL } # Letter B -D_D00B688: - { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B688, symbol: D_D00B688, tlut: 0xD00B708 } +aBillMarkTex: + { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B688, symbol: aBillMarkTex, tlut: 0xD00B708 } -D_D00B708: - { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B708, symbol: D_D00B708 } +aBillMarkTLUT: + { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B708, symbol: aBillMarkTLUT } -D_D00B720: - { type: GFX, offset: 0xD00B720, symbol: D_D00B720 } +aJamesMarkDL: + { type: GFX, offset: 0xD00B720, symbol: aJamesMarkDL } # Letter J ? -D_D00B7F0: - { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B7F0, symbol: D_D00B7F0, tlut: 0xD00B870 } +aJamesMarkTex: + { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B7F0, symbol: aJamesMarkTex, tlut: 0xD00B870 } -D_D00B870: - { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B870, symbol: D_D00B870 } +aJamesMarkTLUT: + { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B870, symbol: aJamesMarkTLUT } D_D00B880: { type: GFX, offset: 0xD00B880, symbol: D_D00B880 } diff --git a/assets/yaml/jp/rev0/ast_andross.yaml b/assets/yaml/jp/rev0/ast_andross.yaml index 00111e67..c296a5a1 100644 --- a/assets/yaml/jp/rev0/ast_andross.yaml +++ b/assets/yaml/jp/rev0/ast_andross.yaml @@ -232,8 +232,8 @@ D_ANDROSS_C038860: D_ANDROSS_C038954: {type: SF64:HITBOX, offset: 0xC038954, symbol: D_ANDROSS_C038954} -D_ANDROSS_C038A48: - {type: SF64:HITBOX, offset: 0xC038A48, symbol: D_ANDROSS_C038A48} +aAndDoorHitbox: + {type: SF64:HITBOX, offset: 0xC038A48, symbol: aAndDoorHitbox} D_ANDROSS_C038AC4: {type: SF64:HITBOX, offset: 0xC038AC4, symbol: D_ANDROSS_C038AC4} @@ -241,20 +241,20 @@ D_ANDROSS_C038AC4: D_ANDROSS_C038B40: {type: SF64:HITBOX, offset: 0xC038B40, symbol: D_ANDROSS_C038B40} -D_ANDROSS_C038BA4: - {type: SF64:HITBOX, offset: 0xC038BA4, symbol: D_ANDROSS_C038BA4} +aAndPathIntersectionHitbox: + {type: SF64:HITBOX, offset: 0xC038BA4, symbol: aAndPathIntersectionHitbox} -D_ANDROSS_C038BD8: - {type: SF64:HITBOX, offset: 0xC038BD8, symbol: D_ANDROSS_C038BD8} +aAndPassageHitbox: + {type: SF64:HITBOX, offset: 0xC038BD8, symbol: aAndPassageHitbox} D_ANDROSS_C038CCC: {type: SF64:HITBOX, offset: 0xC038CCC, symbol: D_ANDROSS_C038CCC} -D_ANDROSS_C038DC0: - {type: SF64:HITBOX, offset: 0xC038DC0, symbol: D_ANDROSS_C038DC0} +aAndAndrossHitbox: + {type: SF64:HITBOX, offset: 0xC038DC0, symbol: aAndAndrossHitbox} -D_ANDROSS_C038F24: - {type: SF64:HITBOX, offset: 0xC038F24, symbol: D_ANDROSS_C038F24} +aAndBrainHitbox: + {type: SF64:HITBOX, offset: 0xC038F24, symbol: aAndBrainHitbox} D_ANDROSS_C038FE8: {type: VTX, count: 34, offset: 0xC038FE8, symbol: D_ANDROSS_C038FE8} diff --git a/assets/yaml/jp/rev0/ast_aquas.yaml b/assets/yaml/jp/rev0/ast_aquas.yaml index b83eba47..d56b32e7 100644 --- a/assets/yaml/jp/rev0/ast_aquas.yaml +++ b/assets/yaml/jp/rev0/ast_aquas.yaml @@ -35,8 +35,8 @@ D_AQ_6002874: { type: SF64:SKELETON, offset: 0x6002874, symbol: D_AQ_6002874 } # -D_AQ_6002C10: - { type: GFX, offset: 0x6002C10, symbol: D_AQ_6002C10 } +aAqOysterDL: + { type: GFX, offset: 0x6002C10, symbol: aAqOysterDL } D_AQ_6002D58: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6002D58, symbol: D_AQ_6002D58, tlut: 0x6003158 } @@ -152,8 +152,8 @@ D_AQ_600BD20: D_AQ_600B518: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600B518, symbol: D_AQ_600B518 } -D_AQ_600BF80: - { type: GFX, offset: 0x600BF80, symbol: D_AQ_600BF80 } +aAqTunnel2DL: + { type: GFX, offset: 0x600BF80, symbol: aAqTunnel2DL } D_AQ_600C530: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x600C530, symbol: D_AQ_600C530, tlut: 0x600C930 } @@ -197,11 +197,11 @@ D_AQ_600E150: D_AQ_600E368: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600E368, symbol: D_AQ_600E368 } -D_AQ_600EE10: - { type: GFX, offset: 0x600EE10, symbol: D_AQ_600EE10 } +aAqWall1DL: + { type: GFX, offset: 0x600EE10, symbol: aAqWall1DL } -D_AQ_600EEF0: - { type: GFX, offset: 0x600EEF0, symbol: D_AQ_600EEF0 } +aAqBump2DL: + { type: GFX, offset: 0x600EEF0, symbol: aAqBump2DL } D_AQ_600F030: { type: GFX, offset: 0x600F030, symbol: D_AQ_600F030 } @@ -230,11 +230,11 @@ D_AQ_6011A78: D_AQ_6011CD8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6011CD8, symbol: D_AQ_6011CD8 } -D_AQ_6011EE0: - { type: GFX, offset: 0x6011EE0, symbol: D_AQ_6011EE0 } +aAqTunnel1DL: + { type: GFX, offset: 0x6011EE0, symbol: aAqTunnel1DL } -D_AQ_60120F0: - { type: GFX, offset: 0x60120F0, symbol: D_AQ_60120F0 } +aAqRoofDL: + { type: GFX, offset: 0x60120F0, symbol: aAqRoofDL } D_AQ_60126A8: { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 64, offset: 0x60126A8, symbol: D_AQ_60126A8, tlut: 0x6012AA8 } @@ -254,14 +254,14 @@ D_AQ_6012EA8: D_AQ_60132A8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 240, offset: 0x60132A8, symbol: D_AQ_60132A8 } -D_AQ_60135E0: - { type: SF64:ANIM, offset: 0x60135E0, symbol: D_AQ_60135E0 } +aAqFishGroupAnim: + { type: SF64:ANIM, offset: 0x60135E0, symbol: aAqFishGroupAnim } -D_AQ_60136CC: - { type: SF64:SKELETON, offset: 0x60136CC, symbol: D_AQ_60136CC } +aAqFishGroupSkel1: + { type: SF64:SKELETON, offset: 0x60136CC, symbol: aAqFishGroupSkel1 } -D_AQ_60137CC: - { type: SF64:SKELETON, offset: 0x60137CC, symbol: D_AQ_60137CC } +aAqFishGroupSkel2: + { type: SF64:SKELETON, offset: 0x60137CC, symbol: aAqFishGroupSkel2 } D_AQ_60137F0: { type: GFX, offset: 0x60137F0, symbol: D_AQ_60137F0 } @@ -275,11 +275,11 @@ D_AQ_6013EC0: D_AQ_6014030: { type: GFX, offset: 0x6014030, symbol: D_AQ_6014030 } -D_AQ_6014438: - { type: SF64:ANIM, offset: 0x6014438, symbol: D_AQ_6014438 } +aAqStoneColumnAnim: + { type: SF64:ANIM, offset: 0x6014438, symbol: aAqStoneColumnAnim } -D_AQ_6014504: - { type: SF64:SKELETON, offset: 0x6014504, symbol: D_AQ_6014504 } +aAqStoneColumnSkel: + { type: SF64:SKELETON, offset: 0x6014504, symbol: aAqStoneColumnSkel } D_AQ_6014520: { type: GFX, offset: 0x6014520, symbol: D_AQ_6014520 } @@ -293,8 +293,8 @@ D_AQ_6014CD0: D_AQ_6014E50: { type: GFX, offset: 0x6014E50, symbol: D_AQ_6014E50 } -D_AQ_6014FD0: - { type: GFX, offset: 0x6014FD0, symbol: D_AQ_6014FD0 } +aAqBoulderDL: + { type: GFX, offset: 0x6014FD0, symbol: aAqBoulderDL } D_AQ_6015430: { type: GFX, offset: 0x6015430, symbol: D_AQ_6015430 } @@ -305,8 +305,8 @@ D_AQ_60154F8: D_AQ_60155F8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 152, offset: 0x60155F8, symbol: D_AQ_60155F8 } -D_AQ_6015730: - { type: GFX, offset: 0x6015730, symbol: D_AQ_6015730 } +aAqArchDL: + { type: GFX, offset: 0x6015730, symbol: aAqArchDL } D_AQ_6015DD0: { type: GFX, offset: 0x6015DD0, symbol: D_AQ_6015DD0 } @@ -383,8 +383,8 @@ D_AQ_601D110: D_AQ_601DE50: { type: SF64:ANIM, offset: 0x601DE50, symbol: D_AQ_601DE50 } -D_AQ_601DE60: - { type: GFX, offset: 0x601DE60, symbol: D_AQ_601DE60 } +aAqCoralReef2DL: + { type: GFX, offset: 0x601DE60, symbol: aAqCoralReef2DL } D_AQ_601E1F0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601E1F0, symbol: D_AQ_601E1F0 } @@ -392,11 +392,11 @@ D_AQ_601E1F0: D_AQ_601E9F0: { type: GFX, offset: 0x601E9F0, symbol: D_AQ_601E9F0 } -D_AQ_601EC68: - { type: SF64:ANIM, offset: 0x601EC68, symbol: D_AQ_601EC68 } +aAqCoralAnim: + { type: SF64:ANIM, offset: 0x601EC68, symbol: aAqCoralAnim } -D_AQ_601EDB4: - { type: SF64:SKELETON, offset: 0x601EDB4, symbol: D_AQ_601EDB4 } +aAqCoralSkel: + { type: SF64:SKELETON, offset: 0x601EDB4, symbol: aAqCoralSkel } D_AQ_601EDE0: { type: GFX, offset: 0x601EDE0, symbol: D_AQ_601EDE0 } @@ -425,11 +425,11 @@ D_AQ_6021858: D_AQ_6021C58: { type: TEXTURE, ctype: u16, format: TLUT, colors: 232, offset: 0x6021C58, symbol: D_AQ_6021C58 } -D_AQ_602201C: - { type: SF64:ANIM, offset: 0x602201C, symbol: D_AQ_602201C } +aAqOysterAnim: + { type: SF64:ANIM, offset: 0x602201C, symbol: aAqOysterAnim } -D_AQ_60220E8: - { type: SF64:SKELETON, offset: 0x60220E8, symbol: D_AQ_60220E8 } +aAqOysterSkel: + { type: SF64:SKELETON, offset: 0x60220E8, symbol: aAqOysterSkel } D_AQ_6022110: { type: GFX, offset: 0x6022110, symbol: D_AQ_6022110 } @@ -449,14 +449,14 @@ D_AQ_6022888: D_AQ_60229B8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60229B8, symbol: D_AQ_60229B8 } -D_AQ_60231C0: - { type: GFX, offset: 0x60231C0, symbol: D_AQ_60231C0 } +aAqCoralReef1DL: + { type: GFX, offset: 0x60231C0, symbol: aAqCoralReef1DL } -D_AQ_6023780: - { type: SF64:ANIM, offset: 0x6023780, symbol: D_AQ_6023780 } +aAqJellyfishAnim: + { type: SF64:ANIM, offset: 0x6023780, symbol: aAqJellyfishAnim } -D_AQ_602390C: - { type: SF64:SKELETON, offset: 0x602390C, symbol: D_AQ_602390C } +aAqJellyfishSkel: + { type: SF64:SKELETON, offset: 0x602390C, symbol: aAqJellyfishSkel } D_AQ_6023940: { type: GFX, offset: 0x6023940, symbol: D_AQ_6023940 } @@ -482,8 +482,8 @@ D_AQ_6024938: D_AQ_60249C0: { type: GFX, offset: 0x60249C0, symbol: D_AQ_60249C0 } -D_AQ_6024A50: - { type: GFX, offset: 0x6024A50, symbol: D_AQ_6024A50 } +aAqPearlDL: + { type: GFX, offset: 0x6024A50, symbol: aAqPearlDL } D_AQ_6024F80: { type: SF64:ANIM, offset: 0x6024F80, symbol: D_AQ_6024F80 } @@ -605,8 +605,8 @@ D_AQ_602AC40: D_AQ_602ACC0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602ACC0, symbol: D_AQ_602ACC0 } -D_AQ_602B4C0: - { type: GFX, offset: 0x602B4C0, symbol: D_AQ_602B4C0 } +aAqRockDL: + { type: GFX, offset: 0x602B4C0, symbol: aAqRockDL } D_AQ_602B9D4: # unused and possibly broken { type: SF64:ANIM, offset: 0x602B9D4, symbol: D_AQ_602B9D4 } @@ -656,8 +656,8 @@ D_AQ_602E5C8: D_AQ_60308B8: { type: SF64:SCRIPT, offset: 0x60308B8, symbol: D_AQ_60308B8 } -D_AQ_6030B10: - { type: SF64:HITBOX, offset: 0x6030B10, symbol: D_AQ_6030B10 } +aBoss301Hitbox: + { type: SF64:HITBOX, offset: 0x6030B10, symbol: aBoss301Hitbox } D_AQ_6030B14_f32: { type: SF64:HITBOX, offset: 0x6030B14, symbol: D_AQ_6030B14_f32 } @@ -674,8 +674,8 @@ D_AQ_6030B68: D_AQ_6030BAC: { type: SF64:HITBOX, offset: 0x6030BAC, symbol: D_AQ_6030BAC } -D_AQ_6030BE0: - { type: SF64:HITBOX, offset: 0x6030BE0, symbol: D_AQ_6030BE0 } +aAqActor188Hitbox: + { type: SF64:HITBOX, offset: 0x6030BE0, symbol: aAqActor188Hitbox } D_AQ_6030BFC: { type: SF64:HITBOX, offset: 0x6030BFC, symbol: D_AQ_6030BFC } @@ -686,14 +686,14 @@ D_AQ_6030C18: D_AQ_6030C44: { type: SF64:HITBOX, offset: 0x6030C44, symbol: D_AQ_6030C44 } -D_AQ_6030C60: - { type: SF64:HITBOX, offset: 0x6030C60, symbol: D_AQ_6030C60 } +aAqCoralReef1Hitbox: + { type: SF64:HITBOX, offset: 0x6030C60, symbol: aAqCoralReef1Hitbox } -D_AQ_6030C7C: - { type: SF64:HITBOX, offset: 0x6030C7C, symbol: D_AQ_6030C7C } +aAqTunnel1Hitbox: + { type: SF64:HITBOX, offset: 0x6030C7C, symbol: aAqTunnel1Hitbox } -D_AQ_6030D20: - { type: SF64:HITBOX, offset: 0x6030D20, symbol: D_AQ_6030D20 } +aAqStoneColumnHitbox: + { type: SF64:HITBOX, offset: 0x6030D20, symbol: aAqStoneColumnHitbox } D_AQ_6030D3C: { type: SF64:HITBOX, offset: 0x6030D3C, symbol: D_AQ_6030D3C } @@ -701,65 +701,65 @@ D_AQ_6030D3C: D_AQ_6030D58: { type: SF64:HITBOX, offset: 0x6030D58, symbol: D_AQ_6030D58 } -D_AQ_6030D74: - { type: SF64:HITBOX, offset: 0x6030D74, symbol: D_AQ_6030D74 } +aAqArchHitbox: + { type: SF64:HITBOX, offset: 0x6030D74, symbol: aAqArchHitbox } -D_AQ_6030DF8: - { type: SF64:HITBOX, offset: 0x6030DF8, symbol: D_AQ_6030DF8 } +aAqCoralReef2Hitbox: + { type: SF64:HITBOX, offset: 0x6030DF8, symbol: aAqCoralReef2Hitbox } -D_AQ_6030E14: - { type: SF64:HITBOX, offset: 0x6030E14, symbol: D_AQ_6030E14 } +aAqRockHitbox: + { type: SF64:HITBOX, offset: 0x6030E14, symbol: aAqRockHitbox } -D_AQ_6030E30_Hitbox: - { type: SF64:HITBOX, offset: 0x6030E30, symbol: D_AQ_6030E30_Hitbox } +aAqWall1Hitbox: + { type: SF64:HITBOX, offset: 0x6030E30, symbol: aAqWall1Hitbox } -D_AQ_6030E4C: - { type: SF64:HITBOX, offset: 0x6030E4C, symbol: D_AQ_6030E4C } +aAqRoofHitbox: + { type: SF64:HITBOX, offset: 0x6030E4C, symbol: aAqRoofHitbox } -D_AQ_6030E68: - { type: SF64:HITBOX, offset: 0x6030E68, symbol: D_AQ_6030E68 } +aAqTunnel2Hitbox: + { type: SF64:HITBOX, offset: 0x6030E68, symbol: aAqTunnel2Hitbox } -D_AQ_6030F74: - { type: SF64:HITBOX, offset: 0x6030F74, symbol: D_AQ_6030F74 } +aAqBacoonHitbox: + { type: SF64:HITBOX, offset: 0x6030F74, symbol: aAqBacoonHitbox } -D_AQ_6031398: - { type: SF64:HITBOX, offset: 0x6031398, symbol: D_AQ_6031398 } +aAqAnglerFishHitbox: + { type: SF64:HITBOX, offset: 0x6031398, symbol: aAqAnglerFishHitbox } -D_AQ_60313CC: - { type: SF64:HITBOX, offset: 0x60313CC, symbol: D_AQ_60313CC } +aAqGaroaHitbox: + { type: SF64:HITBOX, offset: 0x60313CC, symbol: aAqGaroaHitbox } -D_AQ_6031400: - { type: SF64:HITBOX, offset: 0x6031400, symbol: D_AQ_6031400 } +aAqSculpinHitbox: + { type: SF64:HITBOX, offset: 0x6031400, symbol: aAqSculpinHitbox } -D_AQ_603144C: - { type: SF64:HITBOX, offset: 0x603144C, symbol: D_AQ_603144C } +aAqSpindlyFishHitbox: + { type: SF64:HITBOX, offset: 0x603144C, symbol: aAqSpindlyFishHitbox } -D_AQ_6031480: - { type: SF64:HITBOX, offset: 0x6031480, symbol: D_AQ_6031480 } +aAqSquidHitbox: + { type: SF64:HITBOX, offset: 0x6031480, symbol: aAqSquidHitbox } D_AQ_60314AC: { type: SF64:HITBOX, offset: 0x60314AC, symbol: D_AQ_60314AC } -D_AQ_60314C8: - { type: SF64:HITBOX, offset: 0x60314C8, symbol: D_AQ_60314C8 } +aAqOysterHitbox: + { type: SF64:HITBOX, offset: 0x60314C8, symbol: aAqOysterHitbox } D_AQ_60314E4: { type: SF64:HITBOX, offset: 0x60314E4, symbol: D_AQ_60314E4 } -D_AQ_6031500: - { type: SF64:HITBOX, offset: 0x6031500, symbol: D_AQ_6031500 } +aAqBoulderHitbox: + { type: SF64:HITBOX, offset: 0x6031500, symbol: aAqBoulderHitbox } D_AQ_603151C: { type: SF64:HITBOX, offset: 0x603151C, symbol: D_AQ_603151C } -D_AQ_6031538: - { type: SF64:HITBOX, offset: 0x6031538, symbol: D_AQ_6031538 } +aAqCoralHitbox: + { type: SF64:HITBOX, offset: 0x6031538, symbol: aAqCoralHitbox } -D_AQ_6031554: - { type: SF64:HITBOX, offset: 0x6031554, symbol: D_AQ_6031554 } +aAqJellyfishHitbox: + { type: SF64:HITBOX, offset: 0x6031554, symbol: aAqJellyfishHitbox } -D_AQ_6031570: - { type: SF64:HITBOX, offset: 0x6031570, symbol: D_AQ_6031570 } +aAqFishGroupHitbox: + { type: SF64:HITBOX, offset: 0x6031570, symbol: aAqFishGroupHitbox } D_AQ_603158C: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x603158C, symbol: D_AQ_603158C } diff --git a/assets/yaml/jp/rev0/ast_area_6.yaml b/assets/yaml/jp/rev0/ast_area_6.yaml index 6584145f..fe99d8e0 100644 --- a/assets/yaml/jp/rev0/ast_area_6.yaml +++ b/assets/yaml/jp/rev0/ast_area_6.yaml @@ -237,8 +237,8 @@ D_A6_6028254: D_A6_60282A0: { type: SF64:HITBOX, offset: 0x60282A0, symbol: D_A6_60282A0 } -D_A6_6028454: - { type: SF64:HITBOX, offset: 0x6028454, symbol: D_A6_6028454 } +aA6GorgonHitbox: + { type: SF64:HITBOX, offset: 0x6028454, symbol: aA6GorgonHitbox } D_A6_6028578: { type: SF64:HITBOX, offset: 0x6028578, symbol: D_A6_6028578 } diff --git a/assets/yaml/jp/rev0/ast_arwing.yaml b/assets/yaml/jp/rev0/ast_arwing.yaml index 89515c40..7354410b 100644 --- a/assets/yaml/jp/rev0/ast_arwing.yaml +++ b/assets/yaml/jp/rev0/ast_arwing.yaml @@ -179,8 +179,8 @@ D_arwing_3018348: D_arwing_30183D0: { type: GFX, offset: 0x30183D0, symbol: D_arwing_30183D0 } -D_arwing_30184D8: - { type: TEXTURE, format: RGBA16, offset: 0x30184D8, width: 32, height: 32, ctype: u16, symbol: D_arwing_30184D8 } +aWindshieldClouldReflextionTex: + { type: TEXTURE, format: RGBA16, offset: 0x30184D8, width: 32, height: 32, ctype: u16, symbol: aWindshieldClouldReflextionTex } D_arwing_3018CD8: { type: TEXTURE, format: RGBA16, offset: 0x3018CD8, width: 64, height: 16, ctype: u16, symbol: D_arwing_3018CD8 } diff --git a/assets/yaml/jp/rev0/ast_bolse.yaml b/assets/yaml/jp/rev0/ast_bolse.yaml index 64f49f89..8f033e51 100644 --- a/assets/yaml/jp/rev0/ast_bolse.yaml +++ b/assets/yaml/jp/rev0/ast_bolse.yaml @@ -115,8 +115,8 @@ D_BO_600AB90: D_BO_600AD80: { type: TEXTURE, format: RGBA16, offset: 0x0600AD80, width: 32, height: 32, ctype: u16, symbol: D_BO_600AD80 } -D_BO_600B8B0: - { type: GFX, offset: 0x600B8B0, symbol: D_BO_600B8B0 } +aBoBuildingDL: + { type: GFX, offset: 0x600B8B0, symbol: aBoBuildingDL } D_BO_600BAA0: { type: GFX, offset: 0x600BAA0, symbol: D_BO_600BAA0 } @@ -133,11 +133,11 @@ D_BO_600C0B8: D_BO_600C2D8: { type: TEXTURE, format: IA8, offset: 0x0600C2D8, width: 32, height: 16, ctype: u8, symbol: D_BO_600C2D8 } -D_BO_600C4E0: - { type: GFX, offset: 0x600C4E0, symbol: D_BO_600C4E0 } +aBoBaseShieldDL: + { type: GFX, offset: 0x600C4E0, symbol: aBoBaseShieldDL } -D_BO_600CF88: - { type: TEXTURE, format: RGBA16, offset: 0x0600CF88, width: 16, height: 16, ctype: u16, symbol: D_BO_600CF88 } +aBoBaseShieldTex: + { type: TEXTURE, format: RGBA16, offset: 0x0600CF88, width: 16, height: 16, ctype: u16, symbol: aBoBaseShieldTex } D_BO_600D190: { type: GFX, offset: 0x600D190, symbol: D_BO_600D190 } @@ -148,20 +148,20 @@ D_BO_600D2A0: D_BO_600E2A0: { type: TEXTURE, format: RGBA16, offset: 0x0600E2A0, width: 32, height: 64, ctype: u16, symbol: D_BO_600E2A0 } -D_BO_600F2E0: - { type: SF64:ANIM, offset: 0x600F2E0, symbol: D_BO_600F2E0 } +aBoLaserCannonAnim: + { type: SF64:ANIM, offset: 0x600F2E0, symbol: aBoLaserCannonAnim } -D_BO_600F36C: - { type: SF64:SKELETON, offset: 0x600F36C, symbol: D_BO_600F36C } +aBoLaserCannonSkel: + { type: SF64:SKELETON, offset: 0x600F36C, symbol: aBoLaserCannonSkel } -D_BO_600F3D8: - { type: SF64:ANIM, offset: 0x600F3D8, symbol: D_BO_600F3D8 } +aBoShieldReactorAnim: + { type: SF64:ANIM, offset: 0x600F3D8, symbol: aBoShieldReactorAnim } -D_BO_600F4A4: - { type: SF64:SKELETON, offset: 0x600F4A4, symbol: D_BO_600F4A4 } +aBoShieldReactorSkel: + { type: SF64:SKELETON, offset: 0x600F4A4, symbol: aBoShieldReactorSkel } -D_BO_600F4C0: - { type: GFX, offset: 0x600F4C0, symbol: D_BO_600F4C0 } +aBoPoleDL: + { type: GFX, offset: 0x600F4C0, symbol: aBoPoleDL } D_BO_600F728: { type: TEXTURE, format: RGBA16, offset: 0x0600F728, width: 32, height: 32, ctype: u16, symbol: D_BO_600F728 } @@ -178,23 +178,23 @@ D_BO_6010294: PAD_BO_6011B20: { type: BLOB, size: 0x4, offset: 0x6011B20, symbol: PAD_BO_6011B20, mesh_symbol: D_BO_OFFSET } -D_BO_6011B24: - { type: SF64:HITBOX, offset: 0x6011B24, symbol: D_BO_6011B24 } +aBoShieldReactorHitbox: + { type: SF64:HITBOX, offset: 0x6011B24, symbol: aBoShieldReactorHitbox } D_BO_6011BA4: { type: SF64:HITBOX, offset: 0x6011BA4, symbol: D_BO_6011BA4 } -D_BO_6011BF4: - { type: SF64:HITBOX, offset: 0x6011BF4, symbol: D_BO_6011BF4 } +aBoLaserCannonHitbox: + { type: SF64:HITBOX, offset: 0x6011BF4, symbol: aBoLaserCannonHitbox } -D_BO_6011C10: - { type: SF64:HITBOX, offset: 0x6011C10, symbol: D_BO_6011C10 } +aBoPoleHitbox: + { type: SF64:HITBOX, offset: 0x6011C10, symbol: aBoPoleHitbox } -D_BO_6011C48: - { type: SF64:HITBOX, offset: 0x6011C48, symbol: D_BO_6011C48 } +aBoBuildingHitbox: + { type: SF64:HITBOX, offset: 0x6011C48, symbol: aBoBuildingHitbox } -D_BO_6011C80: - { type: SF64:HITBOX, offset: 0x6011C80, symbol: D_BO_6011C80 } +aBoBaseCoreHitbox: + { type: SF64:HITBOX, offset: 0x6011C80, symbol: aBoBaseCoreHitbox } D_BO_6011E28: { type: VTX, count: 34, offset: 0x6011E28, symbol: D_BO_6011E28 } diff --git a/assets/yaml/jp/rev0/ast_common.yaml b/assets/yaml/jp/rev0/ast_common.yaml index 00250513..66c29972 100644 --- a/assets/yaml/jp/rev0/ast_common.yaml +++ b/assets/yaml/jp/rev0/ast_common.yaml @@ -695,11 +695,11 @@ D_101CBC0: D_101CCC0: { type: TEXTURE, format: TLUT, colors: 88, offset: 0x101CCC0, ctype: u16, symbol: D_101CCC0 } -D_101CD70: - { type: GFX, offset: 0x101CD70, symbol: D_101CD70 } +aUnusedShieldDL: + { type: GFX, offset: 0x101CD70, symbol: aUnusedShieldDL } -D_101D070: - { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x101D070, symbol: D_101D070 } +aUnusedShieldTex: + { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x101D070, symbol: aUnusedShieldTex } D_101D870: { type: GFX, offset: 0x101D870, symbol: D_101D870 } @@ -710,8 +710,8 @@ ast_common_seg1_vtx_1D9C8: D_101DE20: { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x101DE20, symbol: D_101DE20 } -D_101DC10: - { type: GFX, offset: 0x101DC10, symbol: D_101DC10 } +aBarrelRollTex: + { type: GFX, offset: 0x101DC10, symbol: aBarrelRollTex } D_101EE20: { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x101EE20, symbol: D_101EE20 } @@ -806,32 +806,32 @@ D_1024230: D_1024290: { type: GFX, offset: 0x1024290, symbol: D_1024290 } -D_1024410: - { type: GFX, offset: 0x1024410, symbol: D_1024410 } +aPeppyMarkDL: + { type: GFX, offset: 0x1024410, symbol: aPeppyMarkDL } -D_10244D8: - { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10244D8, tlut: 0x1024558, symbol: D_10244D8 } +aPeppyMarkTex: + { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10244D8, tlut: 0x1024558, symbol: aPeppyMarkTex } -D_1024558: - { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024558, ctype: u16, symbol: D_1024558 } +aPeppyMarkTLUT: + { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024558, ctype: u16, symbol: aPeppyMarkTLUT } -D_1024570: - { type: GFX, offset: 0x1024570, symbol: D_1024570 } +aFalcoMarkDL: + { type: GFX, offset: 0x1024570, symbol: aFalcoMarkDL } -D_1024638: - { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024638, tlut: 0x10246B8, symbol: D_1024638 } +aFalcoMarkTex: + { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024638, tlut: 0x10246B8, symbol: aFalcoMarkTex } -D_10246B8: - { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10246B8, ctype: u16, symbol: D_10246B8 } +aFalcoMarkTLUT: + { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10246B8, ctype: u16, symbol: aFalcoMarkTLUT } -D_10246D0: - { type: GFX, offset: 0x10246D0, symbol: D_10246D0 } +aSlippyMarkDL: + { type: GFX, offset: 0x10246D0, symbol: aSlippyMarkDL } -D_1024798: - { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024798, tlut: 0x1024818, symbol: D_1024798 } +aSlippyMarkTex: + { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024798, tlut: 0x1024818, symbol: aSlippyMarkTex } -D_1024818: - { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024818, ctype: u16, symbol: D_1024818 } +aSlippyMarkTLUT: + { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024818, ctype: u16, symbol: aSlippyMarkTLUT } D_1024830: { type: GFX, offset: 0x1024830, symbol: D_1024830 } diff --git a/assets/yaml/jp/rev0/ast_corneria.yaml b/assets/yaml/jp/rev0/ast_corneria.yaml index 953521ce..7c50e853 100644 --- a/assets/yaml/jp/rev0/ast_corneria.yaml +++ b/assets/yaml/jp/rev0/ast_corneria.yaml @@ -303,20 +303,20 @@ D_CO_602AA7C: aCoDoorsSkel: { type: SF64:SKELETON, offset: 0x602AB48, symbol: aCoDoorsSkel } -D_CO_602BC18: - { type: SF64:ANIM, offset: 0x602BC18, symbol: D_CO_602BC18 } +aCoGrangaWalkingAnim: + { type: SF64:ANIM, offset: 0x602BC18, symbol: aCoGrangaWalkingAnim } D_CO_602BE64: { type: SF64:SKELETON, offset: 0x602BE64, symbol: D_CO_602BE64 } -D_CO_602C0D0: - { type: SF64:ANIM, offset: 0x602C0D0, symbol: D_CO_602C0D0 } +aCoGrangaStationaryAnim: + { type: SF64:ANIM, offset: 0x602C0D0, symbol: aCoGrangaStationaryAnim } D_CO_602D31C: { type: SF64:ANIM, offset: 0x602D31C, symbol: D_CO_602D31C } -D_CO_602D400: - { type: SF64:ANIM, offset: 0x602D400, symbol: D_CO_602D400 } +aCoCarrierAnim: + { type: SF64:ANIM, offset: 0x602D400, symbol: aCoCarrierAnim } aCoCarrierSkel: { type: SF64:SKELETON, offset: 0x602D5AC, symbol: aCoCarrierSkel } @@ -522,14 +522,14 @@ aCoBuilding10Hitbox: aCoIBeamHitbox: { type: SF64:HITBOX, offset: 0x603E514, symbol: aCoIBeamHitbox } -D_CO_603E54C: - { type: SF64:HITBOX, offset: 0x603E54C, symbol: D_CO_603E54C } +aCoActorSkibotHitbox: + { type: SF64:HITBOX, offset: 0x603E54C, symbol: aCoActorSkibotHitbox } -D_CO_603E598: - { type: SF64:HITBOX, offset: 0x603E598, symbol: D_CO_603E598 } +aCoActorRadarHitbox: + { type: SF64:HITBOX, offset: 0x603E598, symbol: aCoActorRadarHitbox } -D_CO_603E5B4: - { type: SF64:HITBOX, offset: 0x603E5B4, symbol: D_CO_603E5B4 } +aCoMoleMissileHitbox: + { type: SF64:HITBOX, offset: 0x603E5B4, symbol: aCoMoleMissileHitbox } CoGarudaHitbox: { type: SF64:HITBOX, offset: 0x603E5D0, symbol: CoGarudaHitbox } @@ -540,14 +540,14 @@ aCoGarudaDestroyHitbox: D_CO_603E620: { type: SF64:HITBOX, offset: 0x603E620, symbol: D_CO_603E620 } -D_CO_603E714: - { type: SF64:HITBOX, offset: 0x603E714, symbol: D_CO_603E714 } +aCoCarrierLeftHitbox: + { type: SF64:HITBOX, offset: 0x603E714, symbol: aCoCarrierLeftHitbox } -D_CO_603E748: - { type: SF64:HITBOX, offset: 0x603E748, symbol: D_CO_603E748 } +aCoCarrierUpperHitbox: + { type: SF64:HITBOX, offset: 0x603E748, symbol: aCoCarrierUpperHitbox } -D_CO_603E7C4: - { type: SF64:HITBOX, offset: 0x603E7C4, symbol: D_CO_603E7C4 } +aCoCarrierBottomHitbox: + { type: SF64:HITBOX, offset: 0x603E7C4, symbol: aCoCarrierBottomHitbox } D_CO_603E840: { type: SF64:HITBOX, offset: 0x603E840, symbol: D_CO_603E840 } diff --git a/assets/yaml/jp/rev0/ast_fortuna.yaml b/assets/yaml/jp/rev0/ast_fortuna.yaml index 7815eeeb..bf24079b 100644 --- a/assets/yaml/jp/rev0/ast_fortuna.yaml +++ b/assets/yaml/jp/rev0/ast_fortuna.yaml @@ -62,11 +62,11 @@ D_FO_6006120: D_FO_6006220: { type: TEXTURE, format: TLUT, colors: 120, offset: 0x6006220, ctype: u16, symbol: D_FO_6006220 } -D_FO_6006310: - { type: GFX, offset: 0x6006310, symbol: D_FO_6006310 } +aFoMountain3DL: + { type: GFX, offset: 0x6006310, symbol: aFoMountain3DL } -D_FO_60066E0: - { type: GFX, offset: 0x60066E0, symbol: D_FO_60066E0 } +aFoTowerDL: + { type: GFX, offset: 0x60066E0, symbol: aFoTowerDL } ast_fortuna_seg6_vtx_6898: { type: VTX, count: 52, offset: 0x6006898, symbol: ast_fortuna_seg6_vtx_6898 } @@ -92,17 +92,17 @@ D_FO_6007590: D_FO_6007730: { type: GFX, offset: 0x6007730, symbol: D_FO_6007730 } -D_FO_6007854: - { type: SF64:ANIM, offset: 0x6007854, symbol: D_FO_6007854 } +aFoRadarAnim: + { type: SF64:ANIM, offset: 0x6007854, symbol: aFoRadarAnim } -D_FO_6007980: - { type: SF64:SKELETON, offset: 0x6007980, symbol: D_FO_6007980 } +aFoRadarSkel: + { type: SF64:SKELETON, offset: 0x6007980, symbol: aFoRadarSkel } -D_FO_60079B0: - { type: GFX, offset: 0x60079B0, symbol: D_FO_60079B0 } +aFoMountain1DL: + { type: GFX, offset: 0x60079B0, symbol: aFoMountain1DL } -D_FO_6007D80: - { type: GFX, offset: 0x6007D80, symbol: D_FO_6007D80 } +aFoMountain2DL: + { type: GFX, offset: 0x6007D80, symbol: aFoMountain2DL } D_FO_6008150: { type: TEXTURE, format: RGBA16, width: 44, height: 44, offset: 0x6008150, ctype: u16, symbol: D_FO_6008150 } @@ -161,8 +161,8 @@ D_FO_600F60C: aFoPoleHitbox: { type: SF64:HITBOX, offset: 0x600FE9C, symbol: aFoPoleHitbox } -D_FO_600FEB8: - { type: SF64:HITBOX, offset: 0x600FEB8, symbol: D_FO_600FEB8 } +aFoTowerHitbox: + { type: SF64:HITBOX, offset: 0x600FEB8, symbol: aFoTowerHitbox } aFoRadarHitbox: { type: SF64:HITBOX, offset: 0x600FF30, symbol: aFoRadarHitbox } @@ -170,14 +170,14 @@ aFoRadarHitbox: D_FO_600FF64: { type: SF64:HITBOX, offset: 0x600FF64, symbol: D_FO_600FF64 } -D_FO_600FF80: - { type: SF64:HITBOX, offset: 0x600FF80, symbol: D_FO_600FF80 } +aFoMountain1Hitbox: + { type: SF64:HITBOX, offset: 0x600FF80, symbol: aFoMountain1Hitbox } -D_FO_600FFA0: - { type: SF64:HITBOX, offset: 0x600FFA0, symbol: D_FO_600FFA0 } +aFoMountain2Hitbox: + { type: SF64:HITBOX, offset: 0x600FFA0, symbol: aFoMountain2Hitbox } -D_FO_600FFC0: - { type: SF64:HITBOX, offset: 0x600FFC0, symbol: D_FO_600FFC0 } +aFoMountain3Hitbox: + { type: SF64:HITBOX, offset: 0x600FFC0, symbol: aFoMountain3Hitbox } -D_FO_600FFE0: - { type: SF64:HITBOX, offset: 0x600FFE0, symbol: D_FO_600FFE0 } \ No newline at end of file +aFoBaseHitbox: + { type: SF64:HITBOX, offset: 0x600FFE0, symbol: aFoBaseHitbox } \ No newline at end of file diff --git a/assets/yaml/jp/rev0/ast_katina.yaml b/assets/yaml/jp/rev0/ast_katina.yaml index 30d5e698..6ec0a0a3 100644 --- a/assets/yaml/jp/rev0/ast_katina.yaml +++ b/assets/yaml/jp/rev0/ast_katina.yaml @@ -57,8 +57,8 @@ D_KA_60062F8: D_KA_6006AF8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6006AF8, ctype: u16, symbol: D_KA_6006AF8 } -aKaDestroyedSaucererDL: - { type: GFX, offset: 0x6007300, symbol: aKaDestroyedSaucererDL } +aKaDestroyedKaSaucererDL: + { type: GFX, offset: 0x6007300, symbol: aKaDestroyedKaSaucererDL } D_KA_6009250: { type: GFX, offset: 0x6009250, symbol: D_KA_6009250 } @@ -169,11 +169,11 @@ D_KA_6011000: D_KA_6011044: { type: SF64:OBJECT_INIT, offset: 0x6011044, symbol: D_KA_6011044 } -D_KA_6011058: - { type: SF64:HITBOX, offset: 0x6011058, symbol: D_KA_6011058 } +aKaSaucererHitbox: + { type: SF64:HITBOX, offset: 0x6011058, symbol: aKaSaucererHitbox } -D_KA_601115C: - { type: SF64:HITBOX, offset: 0x601115C, symbol: D_KA_601115C } +aKaFrontlineBaseHitbox: + { type: SF64:HITBOX, offset: 0x601115C, symbol: aKaFrontlineBaseHitbox } D_KA_60111D8: { type: SF64:HITBOX, offset: 0x60111D8, symbol: D_KA_60111D8 } \ No newline at end of file diff --git a/assets/yaml/jp/rev0/ast_landmaster.yaml b/assets/yaml/jp/rev0/ast_landmaster.yaml index 2d126597..42b43cf1 100644 --- a/assets/yaml/jp/rev0/ast_landmaster.yaml +++ b/assets/yaml/jp/rev0/ast_landmaster.yaml @@ -14,8 +14,8 @@ D_landmaster_3000000: D_landmaster_3000080: { type: TEXTURE, format: TLUT, offset: 0x3000080, colors: 8, ctype: u16, symbol: D_landmaster_3000080 } -D_landmaster_3000090: - { type: GFX, offset: 0x3000090, symbol: D_landmaster_3000090 } +aLandmasterModelDL: + { type: GFX, offset: 0x3000090, symbol: aLandmasterModelDL } D_landmaster_3004CA8: { type: TEXTURE, format: RGBA16, offset: 0x3004CA8, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3004CA8 } @@ -44,8 +44,8 @@ D_landmaster_3001680: D_landmaster_3001E80: { type: TEXTURE, format: RGBA16, offset: 0x3001E80, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3001E80 } -D_landmaster_3004680: - { type: GFX, offset: 0x3004680, symbol: D_landmaster_3004680 } +aLandmasterCanonDL: + { type: GFX, offset: 0x3004680, symbol: aLandmasterCanonDL } D_landmaster_30066B0: { type: GFX, offset: 0x30066B0, symbol: D_landmaster_30066B0 } diff --git a/assets/yaml/jp/rev0/ast_macbeth.yaml b/assets/yaml/jp/rev0/ast_macbeth.yaml index 289d4ccd..04859b16 100644 --- a/assets/yaml/jp/rev0/ast_macbeth.yaml +++ b/assets/yaml/jp/rev0/ast_macbeth.yaml @@ -163,8 +163,8 @@ D_MA_6007430: D_MA_6007500: {type: GFX, offset: 0x6007500, symbol: D_MA_6007500} -D_MA_60075D0: - {type: GFX, offset: 0x60075D0, symbol: D_MA_60075D0} +aMaWeaponsFactoryDL: + {type: GFX, offset: 0x60075D0, symbol: aMaWeaponsFactoryDL} D_MA_60092E0: { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x60092E0, symbol: D_MA_60092E0} @@ -238,8 +238,8 @@ D_MA_600AE18: D_MA_600AE98: { type: TEXTURE, format: TLUT, ctype: u16, colors: 80, offset: 0x600AE98, symbol: D_MA_600AE98} -D_MA_600AF40: - {type: GFX, offset: 0x600AF40, symbol: D_MA_600AF40} +aMaGuillotineDL: + {type: GFX, offset: 0x600AF40, symbol: aMaGuillotineDL} D_MA_600B2E0: { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 64, offset: 0x600B2E0, symbol: D_MA_600B2E0} @@ -265,8 +265,8 @@ D_MA_600D1E4: D_MA_600D280: { type: TEXTURE, format: IA16, ctype: u16, width: 16, height: 16, offset: 0x600D280, symbol: D_MA_600D280} -D_MA_600D480: - {type: GFX, offset: 0x600D480, symbol: D_MA_600D480} +aMaSpearDL: + {type: GFX, offset: 0x600D480, symbol: aMaSpearDL} D_MA_600D878: { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600D878, symbol: D_MA_600D878, tlut: 0x600D978} @@ -361,8 +361,8 @@ D_MA_6012C00: D_MA_6012C98: { type: TEXTURE, format: RGBA16, ctype: u16, width: 4, height: 8, offset: 0x6012C98, symbol: D_MA_6012C98} -D_MA_6012F50: - {type: GFX, offset: 0x6012F50, symbol: D_MA_6012F50} +aMaShockBoxLightDL: + {type: GFX, offset: 0x6012F50, symbol: aMaShockBoxLightDL} D_MA_6012FE0: { type: TEXTURE, format: IA8, ctype: u8, width: 16, height: 8, offset: 0x6012FE0, symbol: D_MA_6012FE0} @@ -391,8 +391,8 @@ D_MA_6015494: D_MA_6015500: {type: SF64:SKELETON, offset: 0x6015500, symbol: D_MA_6015500} -D_MA_6015510: - {type: GFX, offset: 0x6015510, symbol: D_MA_6015510} +aMaShockBoxDL: + {type: GFX, offset: 0x6015510, symbol: aMaShockBoxDL} D_MA_6015C24: {type: SF64:ANIM, offset: 0x6015C24, symbol: D_MA_6015C24} @@ -451,11 +451,11 @@ D_MA_601A840: D_MA_601A8C8: { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x601A8C8, symbol: D_MA_601A8C8} -D_MA_601B0D0: - {type: GFX, offset: 0x601B0D0, symbol: D_MA_601B0D0} +aMaFloor6DL: + {type: GFX, offset: 0x601B0D0, symbol: aMaFloor6DL} -D_MA_601B7C0: - {type: GFX, offset: 0x601B7C0, symbol: D_MA_601B7C0} +aMaWall4DL: + {type: GFX, offset: 0x601B7C0, symbol: aMaWall4DL} D_MA_601BB78: { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x601BB78, symbol: D_MA_601BB78, tlut: 0x601BC78} @@ -493,8 +493,8 @@ D_MA_601EAB0: D_MA_601EBBC: {type: SF64:SKELETON, offset: 0x601EBBC, symbol: D_MA_601EBBC} -D_MA_601F1D0: - {type: GFX, offset: 0x601F1D0, symbol: D_MA_601F1D0} +aMaWall2DL: + {type: GFX, offset: 0x601F1D0, symbol: aMaWall2DL} D_MA_601F270: {type: GFX, offset: 0x601F270, symbol: D_MA_601F270} @@ -550,14 +550,14 @@ D_MA_6023388: D_MA_6023788: { type: TEXTURE, format: TLUT, ctype: u16, colors: 176, offset: 0x6023788, symbol: D_MA_6023788} -D_MA_60238F0: - {type: GFX, offset: 0x60238F0, symbol: D_MA_60238F0} +aMaWall3DL: + {type: GFX, offset: 0x60238F0, symbol: aMaWall3DL} D_MA_60239D0: {type: GFX, offset: 0x60239D0, symbol: D_MA_60239D0} -D_MA_6024010: - {type: GFX, offset: 0x6024010, symbol: D_MA_6024010} +aMaBuilding1DL: + {type: GFX, offset: 0x6024010, symbol: aMaBuilding1DL} D_MA_6024230: { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6024230, symbol: D_MA_6024230, tlut: 0x6024630} @@ -568,17 +568,17 @@ D_MA_6024630: D_MA_6024670: {type: GFX, offset: 0x6024670, symbol: D_MA_6024670} -D_MA_60251A0: - {type: GFX, offset: 0x60251A0, symbol: D_MA_60251A0} +aMaHorizontalLockBarDL: + {type: GFX, offset: 0x60251A0, symbol: aMaHorizontalLockBarDL} D_MA_60253E0: {type: GFX, offset: 0x60253E0, symbol: D_MA_60253E0} -D_MA_60257B0: - {type: GFX, offset: 0x60257B0, symbol: D_MA_60257B0} +aMaBarrierDL: + {type: GFX, offset: 0x60257B0, symbol: aMaBarrierDL} -D_MA_6025850: - {type: GFX, offset: 0x6025850, symbol: D_MA_6025850} +aMaVerticalLockBarDL: + {type: GFX, offset: 0x6025850, symbol: aMaVerticalLockBarDL} D_MA_6025A70: {type: GFX, offset: 0x6025A70, symbol: D_MA_6025A70} @@ -604,11 +604,11 @@ D_MA_6026C00: D_MA_6027000: { type: TEXTURE, format: TLUT, ctype: u16, colors: 112, offset: 0x6027000, symbol: D_MA_6027000} -D_MA_60270E0: - {type: GFX, offset: 0x60270E0, symbol: D_MA_60270E0} +aMaWall1DL: + {type: GFX, offset: 0x60270E0, symbol: aMaWall1DL} -D_MA_6027180: - { type: GFX, offset: 0x6027180, symbol: D_MA_6027180} +aMaBuilding2DL: + { type: GFX, offset: 0x6027180, symbol: aMaBuilding2DL} D_MA_6027320: {type: SF64:ANIM, offset: 0x6027320, symbol: D_MA_6027320} @@ -616,8 +616,8 @@ D_MA_6027320: D_MA_602742C: {type: SF64:SKELETON, offset: 0x602742C, symbol: D_MA_602742C} -D_MA_6027900: - {type: GFX, offset: 0x6027900, symbol: D_MA_6027900} +aMaFloor2DL: + {type: GFX, offset: 0x6027900, symbol: aMaFloor2DL} D_MA_6027A04: {type: SF64:ANIM, offset: 0x6027A04, symbol: D_MA_6027A04} @@ -658,14 +658,14 @@ D_MA_602CB80: D_MA_602D380: {type: GFX, offset: 0x602D380, symbol: D_MA_602D380} -D_MA_602DAE0: - {type: GFX, offset: 0x602DAE0, symbol: D_MA_602DAE0} +aMaFloor1DL: + {type: GFX, offset: 0x602DAE0, symbol: aMaFloor1DL} -D_MA_602DB80: - {type: GFX, offset: 0x602DB80, symbol: D_MA_602DB80} +aMaFloor3DL: + {type: GFX, offset: 0x602DB80, symbol: aMaFloor3DL} -D_MA_602DC20: - {type: GFX, offset: 0x602DC20, symbol: D_MA_602DC20} +aMaFloor5DL: + {type: GFX, offset: 0x602DC20, symbol: aMaFloor5DL} D_MA_602DCB8: {type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x602DCB8, symbol: D_MA_602DCB8} @@ -703,11 +703,11 @@ D_MA_602FFA0: D_MA_602FFC0: {type: GFX, offset: 0x602FFC0, symbol: D_MA_602FFC0} -D_MA_6030500: - {type: GFX, offset: 0x6030500, symbol: D_MA_6030500} +aMaTerrainBumpDL: + {type: GFX, offset: 0x6030500, symbol: aMaTerrainBumpDL} -D_MA_6030630: - {type: GFX, offset: 0x6030630, symbol: D_MA_6030630} +aMaFloor4DL: + {type: GFX, offset: 0x6030630, symbol: aMaFloor4DL} D_MA_60306D0: {type: GFX, offset: 0x60306D0, symbol: D_MA_60306D0} @@ -757,20 +757,20 @@ D_MA_6035920: D_MA_60359AC: {type: SF64:HITBOX, offset: 0x60359AC, symbol: D_MA_60359AC} -D_MA_60359C8: - {type: SF64:HITBOX, offset: 0x60359C8, symbol: D_MA_60359C8} +aMaLocomotiveHitbox: + {type: SF64:HITBOX, offset: 0x60359C8, symbol: aMaLocomotiveHitbox} -D_MA_6035A14: - {type: SF64:HITBOX, offset: 0x6035A14, symbol: D_MA_6035A14} +aMaTrainCar2Hitbox: + {type: SF64:HITBOX, offset: 0x6035A14, symbol: aMaTrainCar2Hitbox} -D_MA_6035A48: - {type: SF64:HITBOX, offset: 0x6035A48, symbol: D_MA_6035A48} +aMaTrainCar1Hitbox: + {type: SF64:HITBOX, offset: 0x6035A48, symbol: aMaTrainCar1Hitbox} D_MA_6035A94: {type: SF64:HITBOX, offset: 0x6035A94, symbol: D_MA_6035A94} -D_MA_6035AE0: - {type: SF64:HITBOX, offset: 0x6035AE0, symbol: D_MA_6035AE0} +aMaTrainCar3Hitbox: + {type: SF64:HITBOX, offset: 0x6035AE0, symbol: aMaTrainCar3Hitbox} D_MA_6035B44: {type: SF64:HITBOX, offset: 0x6035B44, symbol: D_MA_6035B44} @@ -790,14 +790,14 @@ D_MA_6035CD4: D_MA_6035D38: {type: SF64:HITBOX, offset: 0x6035D38, symbol: D_MA_6035D38} -D_MA_6035D9C: - {type: SF64:HITBOX, offset: 0x6035D9C, symbol: D_MA_6035D9C} +aMaTrainCar4Hitbox: + {type: SF64:HITBOX, offset: 0x6035D9C, symbol: aMaTrainCar4Hitbox} D_MA_6035DD0: {type: SF64:HITBOX, offset: 0x6035DD0, symbol: D_MA_6035DD0} -D_MA_6035E04: - {type: SF64:HITBOX, offset: 0x6035E04, symbol: D_MA_6035E04} +aMaTrainCar5Hitbox: + {type: SF64:HITBOX, offset: 0x6035E04, symbol: aMaTrainCar5Hitbox} D_MA_6035E68: {type: SF64:HITBOX, offset: 0x6035E68, symbol: D_MA_6035E68} @@ -817,101 +817,101 @@ D_MA_6035FF8: D_MA_603605C: {type: SF64:HITBOX, offset: 0x603605C, symbol: D_MA_603605C} -D_MA_60360C0: - {type: SF64:HITBOX, offset: 0x60360C0, symbol: D_MA_60360C0} +aMaTrainCar6Hitbox: + {type: SF64:HITBOX, offset: 0x60360C0, symbol: aMaTrainCar6Hitbox} -D_MA_6036154: - {type: SF64:HITBOX, offset: 0x6036154, symbol: D_MA_6036154} +aMaTrainCar7Hitbox: + {type: SF64:HITBOX, offset: 0x6036154, symbol: aMaTrainCar7Hitbox} D_MA_6036188: {type: SF64:HITBOX, offset: 0x6036188, symbol: D_MA_6036188} -D_MA_6036204: - {type: SF64:HITBOX, offset: 0x6036204, symbol: D_MA_6036204} +aMaTrainTrack13Hitbox: + {type: SF64:HITBOX, offset: 0x6036204, symbol: aMaTrainTrack13Hitbox} D_MA_6036250: {type: SF64:HITBOX, offset: 0x6036250, symbol: D_MA_6036250} -D_MA_603626C: - {type: SF64:HITBOX, offset: 0x603626C, symbol: D_MA_603626C} +aMaBuilding1Hitbox: + {type: SF64:HITBOX, offset: 0x603626C, symbol: aMaBuilding1Hitbox} -D_MA_6036288: - {type: SF64:HITBOX, offset: 0x6036288, symbol: D_MA_6036288} +aMaBuilding2Hitbox: + {type: SF64:HITBOX, offset: 0x6036288, symbol: aMaBuilding2Hitbox} -D_MA_60362A4: - {type: SF64:HITBOX, offset: 0x60362A4, symbol: D_MA_60362A4} +aMaTowerHitbox: + {type: SF64:HITBOX, offset: 0x60362A4, symbol: aMaTowerHitbox} -D_MA_60362D8: - {type: SF64:HITBOX, offset: 0x60362D8, symbol: D_MA_60362D8} +aMaWall2Hitbox: + {type: SF64:HITBOX, offset: 0x60362D8, symbol: aMaWall2Hitbox} -D_MA_60362F4: - {type: SF64:HITBOX, offset: 0x60362F4, symbol: D_MA_60362F4} +aMaWall4Hitbox: + {type: SF64:HITBOX, offset: 0x60362F4, symbol: aMaWall4Hitbox} -D_MA_6036328: - {type: SF64:HITBOX, offset: 0x6036328, symbol: D_MA_6036328} +aMaWall3Hitbox: + {type: SF64:HITBOX, offset: 0x6036328, symbol: aMaWall3Hitbox} -D_MA_6036344: - {type: SF64:HITBOX, offset: 0x6036344, symbol: D_MA_6036344} +aMaIndicatorSignHitbox: + {type: SF64:HITBOX, offset: 0x6036344, symbol: aMaIndicatorSignHitbox} -D_MA_6036370: - {type: SF64:HITBOX, offset: 0x6036370, symbol: D_MA_6036370} +aMaTerrainBumpHitbox: + {type: SF64:HITBOX, offset: 0x6036370, symbol: aMaTerrainBumpHitbox} -D_MA_603638C: - {type: SF64:HITBOX, offset: 0x603638C, symbol: D_MA_603638C} +aMaFloor1Hitbox: + {type: SF64:HITBOX, offset: 0x603638C, symbol: aMaFloor1Hitbox} -D_MA_60363B8: - {type: SF64:HITBOX, offset: 0x60363B8, symbol: D_MA_60363B8} +aMaFloor2Hitbox: + {type: SF64:HITBOX, offset: 0x60363B8, symbol: aMaFloor2Hitbox} -D_MA_60363E4: - {type: SF64:HITBOX, offset: 0x60363E4, symbol: D_MA_60363E4} +aMaFloor3Hitbox: + {type: SF64:HITBOX, offset: 0x60363E4, symbol: aMaFloor3Hitbox} -D_MA_6036410: - {type: SF64:HITBOX, offset: 0x6036410, symbol: D_MA_6036410} +aMaFloor4Hitbox: + {type: SF64:HITBOX, offset: 0x6036410, symbol: aMaFloor4Hitbox} -D_MA_603643C: - {type: SF64:HITBOX, offset: 0x603643C, symbol: D_MA_603643C} +aMaFloor5Hitbox: + {type: SF64:HITBOX, offset: 0x603643C, symbol: aMaFloor5Hitbox} -D_MA_6036458: - {type: SF64:HITBOX, offset: 0x6036458, symbol: D_MA_6036458} +aMaMaRailroadSwitchHitbox: + {type: SF64:HITBOX, offset: 0x6036458, symbol: aMaMaRailroadSwitchHitbox} D_MA_603648C: {type: SF64:HITBOX, offset: 0x603648C, symbol: D_MA_603648C} -D_MA_60364C0: - {type: SF64:HITBOX, offset: 0x60364C0, symbol: D_MA_60364C0} +aMaBoulderHitbox: + {type: SF64:HITBOX, offset: 0x60364C0, symbol: aMaBoulderHitbox} -D_MA_60364DC: - {type: SF64:HITBOX, offset: 0x60364DC, symbol: D_MA_60364DC} +aMaRailwaySignalHitbox: + {type: SF64:HITBOX, offset: 0x60364DC, symbol: aMaRailwaySignalHitbox} D_MA_6036520: {type: SF64:HITBOX, offset: 0x6036520, symbol: D_MA_6036520} -D_MA_6036594: - {type: SF64:HITBOX, offset: 0x6036594, symbol: D_MA_6036594} +aMaSwitchTrackHitbox: + {type: SF64:HITBOX, offset: 0x6036594, symbol: aMaSwitchTrackHitbox} D_MA_6036668: {type: SF64:HITBOX, offset: 0x6036668, symbol: D_MA_6036668} -D_MA_60366EC: - {type: SF64:HITBOX, offset: 0x60366EC, symbol: D_MA_60366EC} +aMaHorizontalLockBarHitbox: + {type: SF64:HITBOX, offset: 0x60366EC, symbol: aMaHorizontalLockBarHitbox} -D_MA_6036708: - {type: SF64:HITBOX, offset: 0x6036708, symbol: D_MA_6036708} +aMaVerticalLockBarHitbox: + {type: SF64:HITBOX, offset: 0x6036708, symbol: aMaVerticalLockBarHitbox} -D_MA_6036724: - {type: SF64:HITBOX, offset: 0x6036724, symbol: D_MA_6036724} +aMaProximityLightHitbox: + {type: SF64:HITBOX, offset: 0x6036724, symbol: aMaProximityLightHitbox} -D_MA_6036728: - {type: SF64:HITBOX, offset: 0x6036728, symbol: D_MA_6036728} +aMaBarrierHitbox: + {type: SF64:HITBOX, offset: 0x6036728, symbol: aMaBarrierHitbox} -D_MA_6036744: - {type: SF64:HITBOX, offset: 0x6036744, symbol: D_MA_6036744} +aMaActor219Hitbox: + {type: SF64:HITBOX, offset: 0x6036744, symbol: aMaActor219Hitbox} -D_MA_6036760: - {type: SF64:HITBOX, offset: 0x6036760, symbol: D_MA_6036760} +aMaFloor6Hitbox: + {type: SF64:HITBOX, offset: 0x6036760, symbol: aMaFloor6Hitbox} -D_MA_603677C: - {type: SF64:HITBOX, offset: 0x603677C, symbol: D_MA_603677C} +aMaActor207Hitbox: + {type: SF64:HITBOX, offset: 0x603677C, symbol: aMaActor207Hitbox} D_MA_6036818: {type: SF64:HITBOX, offset: 0x6036818, symbol: D_MA_6036818} @@ -919,20 +919,20 @@ D_MA_6036818: D_MA_6036894: {type: SF64:HITBOX, offset: 0x6036894, symbol: D_MA_6036894} -D_MA_60368E0: - {type: SF64:HITBOX, offset: 0x60368E0, symbol: D_MA_60368E0} +aMaGuillotineHitbox: + {type: SF64:HITBOX, offset: 0x60368E0, symbol: aMaGuillotineHitbox} D_MA_60368FC: {type: SF64:HITBOX, offset: 0x60368FC, symbol: D_MA_60368FC} -D_MA_6036930: - {type: SF64:HITBOX, offset: 0x6036930, symbol: D_MA_6036930} +aMaBombDropHitbox: + {type: SF64:HITBOX, offset: 0x6036930, symbol: aMaBombDropHitbox} -D_MA_603694C: - {type: SF64:HITBOX, offset: 0x603694C, symbol: D_MA_603694C} +aMaSpearHitbox: + {type: SF64:HITBOX, offset: 0x603694C, symbol: aMaSpearHitbox} -D_MA_6036968: - {type: SF64:HITBOX, offset: 0x6036968, symbol: D_MA_6036968} +aMaShockBoxHitbox: + {type: SF64:HITBOX, offset: 0x6036968, symbol: aMaShockBoxHitbox} D_MA_60381D8: {type: SF64:SCRIPT, offset: 0x60381D8, symbol: D_MA_60381D8} diff --git a/assets/yaml/jp/rev0/ast_meteo.yaml b/assets/yaml/jp/rev0/ast_meteo.yaml index 242222db..f97e017e 100644 --- a/assets/yaml/jp/rev0/ast_meteo.yaml +++ b/assets/yaml/jp/rev0/ast_meteo.yaml @@ -104,8 +104,8 @@ D_ME_600C740: D_ME_600CAA0: { type: GFX, offset: 0x600CAA0, symbol: D_ME_600CAA0 } -D_ME_600CD60: - { type: GFX, offset: 0x600CD60, symbol: D_ME_600CD60 } +aMeMeteorShower3DL: + { type: GFX, offset: 0x600CD60, symbol: aMeMeteorShower3DL } D_ME_600CDE8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0600CDE8, symbol: D_ME_600CDE8 } @@ -137,8 +137,8 @@ D_ME_6014238: D_ME_6015238: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06015238, symbol: D_ME_6015238 } -D_ME_6016240: - { type: GFX, offset: 0x6016240, symbol: D_ME_6016240 } +aMeMeteorShower2DL: + { type: GFX, offset: 0x6016240, symbol: aMeMeteorShower2DL } D_ME_60162C8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x060162C8, symbol: D_ME_60162C8 } @@ -146,20 +146,20 @@ D_ME_60162C8: D_ME_60172C8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060172C8, symbol: D_ME_60172C8 } -D_ME_6017AD0: - { type: GFX, offset: 0x06017AD0, symbol: D_ME_6017AD0 } +aMeMeteorShower1DL: + { type: GFX, offset: 0x06017AD0, symbol: aMeMeteorShower1DL } D_ME_6017B60: { type: GFX, offset: 0x06017B60, symbol: D_ME_6017B60 } -D_ME_6018450: - { type: GFX, offset: 0x06018450, symbol: D_ME_6018450 } +aMeLaserCannon2DL: + { type: GFX, offset: 0x06018450, symbol: aMeLaserCannon2DL } D_ME_6018960: { type: GFX, offset: 0x06018960, symbol: D_ME_6018960 } -D_ME_6018C00: - { type: GFX, offset: 0x06018C00, symbol: D_ME_6018C00 } +aMeMeteor1DL: + { type: GFX, offset: 0x06018C00, symbol: aMeMeteor1DL } D_ME_6019430: { type: GFX, offset: 0x06019430, symbol: D_ME_6019430 } @@ -286,29 +286,29 @@ D_ME_602F604: D_ME_602F638: { type: SF64:HITBOX, offset: 0x602F638, symbol: D_ME_602F638 } -D_ME_602F684: - { type: SF64:HITBOX, offset: 0x602F684, symbol: D_ME_602F684 } +aMeMeteoBallHitbox: + { type: SF64:HITBOX, offset: 0x602F684, symbol: aMeMeteoBallHitbox } -D_ME_602F6A0: - { type: SF64:HITBOX, offset: 0x602F6A0, symbol: D_ME_602F6A0 } +aMeHopBotHitbox: + { type: SF64:HITBOX, offset: 0x602F6A0, symbol: aMeHopBotHitbox } -D_ME_602F6EC: - { type: SF64:HITBOX, offset: 0x602F6EC, symbol: D_ME_602F6EC } +aMeMeteor1Hitbox: + { type: SF64:HITBOX, offset: 0x602F6EC, symbol: aMeMeteor1Hitbox } -D_ME_602F708: - { type: SF64:HITBOX, offset: 0x602F708, symbol: D_ME_602F708 } +aMeMeteor2Hitbox: + { type: SF64:HITBOX, offset: 0x602F708, symbol: aMeMeteor2Hitbox } -D_ME_602F724: - { type: SF64:HITBOX, offset: 0x602F724, symbol: D_ME_602F724 } +aMeLaserCannon1Hitbox: + { type: SF64:HITBOX, offset: 0x602F724, symbol: aMeLaserCannon1Hitbox } -D_ME_602F740: - { type: SF64:HITBOX, offset: 0x602F740, symbol: D_ME_602F740 } +aMeLaserCannon2Hitbox: + { type: SF64:HITBOX, offset: 0x602F740, symbol: aMeLaserCannon2Hitbox } -D_ME_602F75C: - { type: SF64:HITBOX, offset: 0x602F75C, symbol: D_ME_602F75C } +aMeCrusherHitbox: + { type: SF64:HITBOX, offset: 0x602F75C, symbol: aMeCrusherHitbox } -D_ME_602FA50: - { type: SF64:HITBOX, offset: 0x602FA50, symbol: D_ME_602FA50 } +aMeCrusherShieldHitbox: + { type: SF64:HITBOX, offset: 0x602FA50, symbol: aMeCrusherShieldHitbox } D_ME_602FA9C: {type: SF64:COLPOLY, count: 79, offset: 0x602FA9C, symbol: D_ME_602FA9C, mesh_symbol: D_ME_OFFSET } diff --git a/assets/yaml/jp/rev0/ast_sector_x.yaml b/assets/yaml/jp/rev0/ast_sector_x.yaml index 44423c6f..77373c91 100644 --- a/assets/yaml/jp/rev0/ast_sector_x.yaml +++ b/assets/yaml/jp/rev0/ast_sector_x.yaml @@ -247,14 +247,14 @@ D_SX_603238C: D_SX_6032408: { type: SF64:HITBOX, offset: 0x6032408, symbol: D_SX_6032408 } -D_SX_6032488: - { type: SF64:HITBOX, offset: 0x6032488, symbol: D_SX_6032488 } +aSxSpyborgLeftArmHitbox: + { type: SF64:HITBOX, offset: 0x6032488, symbol: aSxSpyborgLeftArmHitbox } -D_SX_60324EC: - { type: SF64:HITBOX, offset: 0x60324EC, symbol: D_SX_60324EC } +aSxSpyborgRightArmHitbox: + { type: SF64:HITBOX, offset: 0x60324EC, symbol: aSxSpyborgRightArmHitbox } -D_SX_6032550: - { type: SF64:HITBOX, offset: 0x6032550, symbol: D_SX_6032550 } +aSxSpyborgHitbox: + { type: SF64:HITBOX, offset: 0x6032550, symbol: aSxSpyborgHitbox } D_SX_603285C: { type: SF64:HITBOX, offset: 0x603285C, symbol: D_SX_603285C } diff --git a/assets/yaml/jp/rev0/ast_sector_y.yaml b/assets/yaml/jp/rev0/ast_sector_y.yaml index 8384bd9b..4e0ef4dd 100644 --- a/assets/yaml/jp/rev0/ast_sector_y.yaml +++ b/assets/yaml/jp/rev0/ast_sector_y.yaml @@ -35,11 +35,11 @@ D_SY_6003348: D_SY_60034C4: { type: SF64:ANIM, offset: 0x60034C4, symbol: D_SY_60034C4 } -D_SY_60034D0: - { type: GFX, offset: 0x60034D0, symbol: D_SY_60034D0 } +aSyShipWindowsDL: + { type: GFX, offset: 0x60034D0, symbol: aSyShipWindowsDL } -D_SY_60036A0: - { type: GFX, offset: 0x60036A0, symbol: D_SY_60036A0 } +aSyShip3DestroyedDL: + { type: GFX, offset: 0x60036A0, symbol: aSyShip3DestroyedDL } D_SY_6004958: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06004958, symbol: D_SY_6004958 } @@ -47,8 +47,8 @@ D_SY_6004958: D_SY_6005158: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06005158, symbol: D_SY_6005158 } -D_SY_6005360: - { type: GFX, offset: 0x6005360, symbol: D_SY_6005360 } +aSyShip4DL: + { type: GFX, offset: 0x6005360, symbol: aSyShip4DL } D_SY_6005BE0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06005BE0, symbol: D_SY_6005BE0 } @@ -74,8 +74,8 @@ D_SY_6008BE0: D_SY_6008FE0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06008FE0, symbol: D_SY_6008FE0 } -D_SY_60097E0: - { type: GFX, offset: 0x060097E0, symbol: D_SY_60097E0 } +aSyShip1DL: + { type: GFX, offset: 0x060097E0, symbol: aSyShip1DL } D_SY_600AAC0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0600AAC0, symbol: D_SY_600AAC0 } @@ -98,11 +98,11 @@ D_SY_600EAC0: D_SY_600F2C0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x0600F2C0, symbol: D_SY_600F2C0 } -D_SY_600F6C0: - { type: GFX, offset: 0x600F6C0, symbol: D_SY_600F6C0 } +aSyShip4DestroyedDL: + { type: GFX, offset: 0x600F6C0, symbol: aSyShip4DestroyedDL } -D_SY_60102C0: - { type: GFX, offset: 0x60102C0, symbol: D_SY_60102C0 } +aSyShip3DL: + { type: GFX, offset: 0x60102C0, symbol: aSyShip3DL } D_SY_6011758: { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06011758, symbol: D_SY_6011758 } @@ -158,8 +158,8 @@ D_SY_6015960: D_SY_6015B60: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06015B60, symbol: D_SY_6015B60 } -D_SY_60188D0: - { type: GFX, offset: 0x60188D0, symbol: D_SY_60188D0 } +aSyShipProjectileDL: + { type: GFX, offset: 0x60188D0, symbol: aSyShipProjectileDL } D_SY_60183B0: { type: GFX, offset: 0x60183B0, symbol: D_SY_60183B0 } @@ -176,20 +176,20 @@ D_SY_601AD70: D_SY_601AE08: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601AE08, symbol: D_SY_601AE08 } -D_SY_601B610: - { type: GFX, offset: 0x601B610, symbol: D_SY_601B610 } +aSyShip2SpriteDL: + { type: GFX, offset: 0x601B610, symbol: aSyShip2SpriteDL } D_SY_601B6A0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601B6A0, symbol: D_SY_601B6A0 } -D_SY_601C6A0: - { type: GFX, offset: 0x601C6A0, symbol: D_SY_601C6A0 } +aSyShip3SpriteDL: + { type: GFX, offset: 0x601C6A0, symbol: aSyShip3SpriteDL } D_SY_601C730: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601C730, symbol: D_SY_601C730 } -D_SY_601D730: - { type: GFX, offset: 0x601D730, symbol: D_SY_601D730 } +aSyShip2DL: + { type: GFX, offset: 0x601D730, symbol: aSyShip2DL } D_SY_601F3B8: { type: SF64:ANIM, offset: 0x601F3B8, symbol: D_SY_601F3B8 } @@ -308,8 +308,8 @@ D_SY_6032E18: D_SY_6033070: {type: SF64:COLPOLY, count: 174, offset: 0x6033070, symbol: D_SY_6033070, mesh_symbol: D_SY_6033E08 } -D_SY_603405C: - { type: SF64:HITBOX, offset: 0x603405C, symbol: D_SY_603405C } +aSyRobotHitbox: + { type: SF64:HITBOX, offset: 0x603405C, symbol: aSyRobotHitbox } D_SY_60340C0: { type: SF64:HITBOX, offset: 0x60340C0, symbol: D_SY_60340C0 } @@ -329,34 +329,34 @@ D_SY_60342A0: D_SY_6034304: { type: SF64:HITBOX, offset: 0x6034304, symbol: D_SY_6034304 } -D_SY_6034368: - { type: SF64:HITBOX, offset: 0x6034368, symbol: D_SY_6034368 } +aSyScenery156Hitbox: + { type: SF64:HITBOX, offset: 0x6034368, symbol: aSyScenery156Hitbox } D_SY_603445C: { type: SF64:HITBOX, offset: 0x603445C, symbol: D_SY_603445C } -D_SY_6034478: - { type: SF64:HITBOX, offset: 0x6034478, symbol: D_SY_6034478 } +aSyShip1Hitbox: + { type: SF64:HITBOX, offset: 0x6034478, symbol: aSyShip1Hitbox } -D_SY_603450C: - { type: SF64:HITBOX, offset: 0x603450C, symbol: D_SY_603450C } +aSyShip2Hitbox: + { type: SF64:HITBOX, offset: 0x603450C, symbol: aSyShip2Hitbox } -D_SY_6034588: - { type: SF64:HITBOX, offset: 0x6034588, symbol: D_SY_6034588 } +aSyShip3Hitbox: + { type: SF64:HITBOX, offset: 0x6034588, symbol: aSyShip3Hitbox } -D_SY_6034664: - { type: SF64:HITBOX, offset: 0x6034664, symbol: D_SY_6034664 } +aSyShip3DestroyedHitbox: + { type: SF64:HITBOX, offset: 0x6034664, symbol: aSyShip3DestroyedHitbox } -D_SY_6034770: - { type: SF64:HITBOX, offset: 0x6034770, symbol: D_SY_6034770 } +aSyShip4Hitbox: + { type: SF64:HITBOX, offset: 0x6034770, symbol: aSyShip4Hitbox } -D_SY_60347D4: - { type: SF64:HITBOX, offset: 0x60347D4, symbol: D_SY_60347D4 } +aSyShipWindowsHitbox: + { type: SF64:HITBOX, offset: 0x60347D4, symbol: aSyShipWindowsHitbox } -D_SY_60347F0: - { type: SF64:HITBOX, offset: 0x60347F0, symbol: D_SY_60347F0 } +aSyShip4DestroyedHitbox: + { type: SF64:HITBOX, offset: 0x60347F0, symbol: aSyShip4DestroyedHitbox } -D_SY_603486C: - { type: SF64:HITBOX, offset: 0x603486C, symbol: D_SY_603486C } +aSyShipProjectileHitbox: + { type: SF64:HITBOX, offset: 0x603486C, symbol: aSyShipProjectileHitbox } # size = 0x34890 \ No newline at end of file diff --git a/assets/yaml/jp/rev0/ast_sector_z.yaml b/assets/yaml/jp/rev0/ast_sector_z.yaml index 96233307..7357255e 100644 --- a/assets/yaml/jp/rev0/ast_sector_z.yaml +++ b/assets/yaml/jp/rev0/ast_sector_z.yaml @@ -85,8 +85,8 @@ D_SZ_60041F8: D_SZ_60042F8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x060042F8, symbol: D_SZ_60042F8 } -D_SZ_6004330: - { type: GFX, offset: 0x6004330, symbol: D_SZ_6004330 } +aSzMissileMark: + { type: GFX, offset: 0x6004330, symbol: aSzMissileMark } D_SZ_6004458: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 8, offset: 0x06004458, symbol: D_SZ_6004458, tlut: 0x06004558 } @@ -160,13 +160,13 @@ D_SZ_6007558: D_SZ_6009230: { type: SF64:HITBOX, offset: 0x6009230, symbol: D_SZ_6009230 } -D_SZ_600924C: - { type: SF64:HITBOX, offset: 0x600924C, symbol: D_SZ_600924C } +aSzSpaceJunk3Hitbox: + { type: SF64:HITBOX, offset: 0x600924C, symbol: aSzSpaceJunk3Hitbox } -D_SZ_60092E8: - { type: SF64:HITBOX, offset: 0x60092E8, symbol: D_SZ_60092E8 } +aSzSpaceJunk1Hitbox: + { type: SF64:HITBOX, offset: 0x60092E8, symbol: aSzSpaceJunk1Hitbox } -D_SZ_6009388: - { type: SF64:HITBOX, offset: 0x6009388, symbol: D_SZ_6009388 } +aSzGreatFoxHitbox: + { type: SF64:HITBOX, offset: 0x6009388, symbol: aSzGreatFoxHitbox } # size = 0x93B0 \ No newline at end of file diff --git a/assets/yaml/jp/rev0/ast_titania.yaml b/assets/yaml/jp/rev0/ast_titania.yaml index d782b058..b4bf560a 100644 --- a/assets/yaml/jp/rev0/ast_titania.yaml +++ b/assets/yaml/jp/rev0/ast_titania.yaml @@ -76,11 +76,11 @@ D_TI_6005000: D_TI_600631C: {type: SF64:SCRIPT, offset: 0x600631C, symbol: D_TI_600631C} -D_TI_60064AC: - {type: SF64:HITBOX, offset: 0x60064AC, symbol: D_TI_60064AC} +aTi1LandmineHitbox: + {type: SF64:HITBOX, offset: 0x60064AC, symbol: aTi1LandmineHitbox} -D_TI_60064C8: - {type: SF64:HITBOX, offset: 0x60064C8, symbol: D_TI_60064C8} +aTiDesertRoverHitbox: + {type: SF64:HITBOX, offset: 0x60064C8, symbol: aTiDesertRoverHitbox} aTiSkullHitbox: {type: SF64:HITBOX, offset: 0x60064FC, symbol: aTiSkullHitbox} @@ -112,32 +112,32 @@ aTiRib7Hitbox: aTiRib8Hitbox: {type: SF64:HITBOX, offset: 0x6006778, symbol: aTiRib8Hitbox} -D_TI_60067C4: - {type: SF64:HITBOX, offset: 0x60067C4, symbol: D_TI_60067C4} +aTiDelphorHitbox: + {type: SF64:HITBOX, offset: 0x60067C4, symbol: aTiDelphorHitbox} -D_TI_6006808: - {type: SF64:HITBOX, offset: 0x6006808, symbol: D_TI_6006808} +aTiDelphorHeadHitbox: + {type: SF64:HITBOX, offset: 0x6006808, symbol: aTiDelphorHeadHitbox} -D_TI_6006A3C: - {type: SF64:HITBOX, offset: 0x6006A3C, symbol: D_TI_6006A3C} +aTiDesertCrawlerHitbox: + {type: SF64:HITBOX, offset: 0x6006A3C, symbol: aTiDesertCrawlerHitbox} -D_TI_600683C: - {type: SF64:HITBOX, offset: 0x600683C, symbol: D_TI_600683C} +aTiBoulderHitbox: + {type: SF64:HITBOX, offset: 0x600683C, symbol: aTiBoulderHitbox} -D_TI_6006858: - {type: SF64:HITBOX, offset: 0x6006858, symbol: D_TI_6006858} +aTiBombHitbox: + {type: SF64:HITBOX, offset: 0x6006858, symbol: aTiBombHitbox} D_TI_6006874: {type: SF64:HITBOX, offset: 0x6006874, symbol: D_TI_6006874} -D_TI_6006890: - {type: SF64:HITBOX, offset: 0x6006890, symbol: D_TI_6006890} +aTiRascoHitbox: + {type: SF64:HITBOX, offset: 0x6006890, symbol: aTiRascoHitbox} aTiCactusHitbox: {type: SF64:HITBOX, offset: 0x60068BC, symbol: aTiCactusHitbox} -D_TI_60068F0: - {type: SF64:HITBOX, offset: 0x60068F0, symbol: D_TI_60068F0} +aTiFekudaHitbox: + {type: SF64:HITBOX, offset: 0x60068F0, symbol: aTiFekudaHitbox} D_TI_6006940: {type: SF64:HITBOX, offset: 0x6006940, symbol: D_TI_6006940} @@ -166,8 +166,8 @@ D_TI_6006A04: D_TI_6006A20: {type: SF64:HITBOX, offset: 0x6006A20, symbol: D_TI_6006A20} -D_TI_6006BF0: - {type: SF64:HITBOX, offset: 0x6006BF0, symbol: D_TI_6006BF0} +aTiPillarHitbox: + {type: SF64:HITBOX, offset: 0x6006BF0, symbol: aTiPillarHitbox} D_TI_6006924: {type: SF64:HITBOX, offset: 0x6006924, symbol: D_TI_6006924} @@ -178,8 +178,8 @@ D_TI_6006C0C: D_TI_6006C28: {type: SF64:HITBOX, offset: 0x6006C28, symbol: D_TI_6006C28} -D_TI_6006C44: - {type: SF64:HITBOX, offset: 0x6006C44, symbol: D_TI_6006C44} +aTiBridgeHitbox: + {type: SF64:HITBOX, offset: 0x6006C44, symbol: aTiBridgeHitbox} D_TI_6006C60: {type: SF64:OBJECT_INIT, offset: 0x6006C60, symbol: D_TI_6006C60} diff --git a/assets/yaml/jp/rev0/ast_training.yaml b/assets/yaml/jp/rev0/ast_training.yaml index 8b141c42..ca3aee22 100644 --- a/assets/yaml/jp/rev0/ast_training.yaml +++ b/assets/yaml/jp/rev0/ast_training.yaml @@ -31,8 +31,8 @@ D_TR_6002740: D_TR_60028F0: { type: TEXTURE, format: RGBA16, offset: 0x060028F0, width: 32, height: 32, ctype: u16, symbol: D_TR_60028F0 } -D_TR_60030F0: - { type: GFX, offset: 0x60030F0, symbol: D_TR_60030F0 } +aTrBuildingDL: + { type: GFX, offset: 0x60030F0, symbol: aTrBuildingDL } D_TR_6003360: { type: TEXTURE, format: RGBA16, offset: 0x06003360, width: 16, height: 16, ctype: u16, symbol: D_TR_6003360 } @@ -76,8 +76,8 @@ D_TR_6008EF8: D_TR_6009B34: { type: SF64:SCRIPT, offset: 0x6009B34, symbol: D_TR_6009B34 } -D_TR_6009CC4: - { type: SF64:HITBOX, offset: 0x6009CC4, symbol: D_TR_6009CC4 } +aTrBuildingHitbox: + { type: SF64:HITBOX, offset: 0x6009CC4, symbol: aTrBuildingHitbox } D_TR_6009CFC: { type: SF64:HITBOX, offset: 0x6009CFC, symbol: D_TR_6009CFC } diff --git a/assets/yaml/jp/rev0/ast_ve1_boss.yaml b/assets/yaml/jp/rev0/ast_ve1_boss.yaml index 4fd6bcc5..a5d6a967 100644 --- a/assets/yaml/jp/rev0/ast_ve1_boss.yaml +++ b/assets/yaml/jp/rev0/ast_ve1_boss.yaml @@ -50,8 +50,8 @@ D_VE1_90039F0: D_VE1_9003DF0: {type: TEXTURE, ctype: u16, format: TLUT, colors: 176, offset: 0x9003DF0, symbol: D_VE1_9003DF0} -D_VE1_9003F50: - {type: GFX, offset: 0x9003F50, symbol: D_VE1_9003F50} +aVe1TempleInterior1DL: + {type: GFX, offset: 0x9003F50, symbol: aVe1TempleInterior1DL} D_VE1_9004478: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x9004478, symbol: D_VE1_9004478} @@ -65,8 +65,8 @@ D_VE1_9005078: D_VE1_9005478: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9005478, symbol: D_VE1_9005478} -D_VE1_9005C80: - {type: GFX, offset: 0x9005C80, symbol: D_VE1_9005C80} +aVe1TempleEntranceDL: + {type: GFX, offset: 0x9005C80, symbol: aVe1TempleEntranceDL} D_VE1_9009700: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9009700, symbol: D_VE1_9009700} @@ -92,8 +92,8 @@ D_VE1_900BF00: D_VE1_900C700: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900C700, symbol: D_VE1_900C700} -D_VE1_900D098: - {type: SF64:ANIM, offset: 0x900D098, symbol: D_VE1_900D098} +aVe1MonkeyStatueAnim: + {type: SF64:ANIM, offset: 0x900D098, symbol: aVe1MonkeyStatueAnim} D_VE1_900D164: {type: SF64:SKELETON, offset: 0x900D164, symbol: D_VE1_900D164} @@ -104,8 +104,8 @@ D_VE1_900D180: D_VE1_900D520: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900D520, symbol: D_VE1_900D520} -D_VE1_900DD20: - {type: GFX, offset: 0x900DD20, symbol: D_VE1_900DD20} +aVe1Pillar1DL: + {type: GFX, offset: 0x900DD20, symbol: aVe1Pillar1DL} D_VE1_900DF20: {type: GFX, offset: 0x900DF20, symbol: D_VE1_900DF20} @@ -116,11 +116,11 @@ D_VE1_900DFB8: D_VE1_900EFC0: {type: GFX, offset: 0x900EFC0, symbol: D_VE1_900EFC0} -D_VE1_900F060: - {type: GFX, offset: 0x900F060, symbol: D_VE1_900F060} +aVe1TempleInterior2DL: + {type: GFX, offset: 0x900F060, symbol: aVe1TempleInterior2DL} -D_VE1_900F1D0: - {type: GFX, offset: 0x900F1D0, symbol: D_VE1_900F1D0} +aVe1TempleInterior3DL: + {type: GFX, offset: 0x900F1D0, symbol: aVe1TempleInterior3DL} D_VE1_9010FC4: {type: SF64:ANIM, offset: 0x9010FC4, symbol: D_VE1_9010FC4} @@ -179,8 +179,8 @@ D_VE1_901C0F4: D_VE1_901DA38: {type: SF64:ANIM, offset: 0x901DA38, symbol: D_VE1_901DA38} -D_VE1_901DA50: - {type: GFX, offset: 0x901DA50, symbol: D_VE1_901DA50} +aVe1Pillar3DL: + {type: GFX, offset: 0x901DA50, symbol: aVe1Pillar3DL} D_VE1_901DC90: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x901DC90, symbol: D_VE1_901DC90} @@ -230,8 +230,8 @@ D_VE1_90234D0: D_VE1_9023880: {type: GFX, offset: 0x9023880, symbol: D_VE1_9023880} -D_VE1_9023AD0: - {type: GFX, offset: 0x9023AD0, symbol: D_VE1_9023AD0} +aVe1Pillar4DL: + {type: GFX, offset: 0x9023AD0, symbol: aVe1Pillar4DL} D_VE1_9024738: {type: SF64:ANIM, offset: 0x9024738, symbol: D_VE1_9024738} diff --git a/assets/yaml/jp/rev0/ast_venom_1.yaml b/assets/yaml/jp/rev0/ast_venom_1.yaml index a533e8fb..b012c997 100644 --- a/assets/yaml/jp/rev0/ast_venom_1.yaml +++ b/assets/yaml/jp/rev0/ast_venom_1.yaml @@ -46,8 +46,8 @@ D_VE1_6003078: D_VE1_6003478: { type: TEXTURE, format: TLUT, colors: 204, offset: 0x6003478, ctype: u16, symbol: D_VE1_6003478 } -D_VE1_6003610: - { type: GFX, offset: 0x6003610, symbol: D_VE1_6003610 } +aVe1WatchPostDL: + { type: GFX, offset: 0x6003610, symbol: aVe1WatchPostDL } D_VE1_6003B10: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6003B10, ctype: u16, symbol: D_VE1_6003B10 } @@ -70,8 +70,8 @@ D_VE1_60046F0: D_VE1_6004780: { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x6004780, ctype: u16, symbol: D_VE1_6004780 } -D_VE1_6005780: - { type: GFX, offset: 0x6005780, symbol: D_VE1_6005780 } +aVe1GeneratorDL: + { type: GFX, offset: 0x6005780, symbol: aVe1GeneratorDL } D_VE1_6005E50: { type: TEXTURE, format: TLUT, colors: 160, offset: 0x6005E50, ctype: u16, symbol: D_VE1_6005E50 } @@ -97,11 +97,11 @@ D_VE1_60066D0: D_VE1_6006750: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6006750, ctype: u16, symbol: D_VE1_6006750 } -D_VE1_6006F50: - { type: GFX, offset: 0x6006F50, symbol: D_VE1_6006F50 } +aVe1HallwayObstacleDL: + { type: GFX, offset: 0x6006F50, symbol: aVe1HallwayObstacleDL } -D_VE1_6007410: - { type: GFX, offset: 0x6007410, symbol: D_VE1_6007410 } +aVe1SceneryWall3DL: + { type: GFX, offset: 0x6007410, symbol: aVe1SceneryWall3DL } D_VE1_60074E8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60074E8, ctype: u16, symbol: D_VE1_60074E8 } @@ -133,50 +133,50 @@ D_VE1_601B474: D_VE1_601B4C4: { type: SF64:HITBOX, offset: 0x601B4C4, symbol: D_VE1_601B4C4 } -D_VE1_601B4E0: - { type: SF64:HITBOX, offset: 0x601B4E0, symbol: D_VE1_601B4E0 } +aVe1SceneryWall1Hitbox: + { type: SF64:HITBOX, offset: 0x601B4E0, symbol: aVe1SceneryWall1Hitbox } -D_VE1_601B4FC: - { type: SF64:HITBOX, offset: 0x601B4FC, symbol: D_VE1_601B4FC } +aVe1SceneryWall2Hitbox: + { type: SF64:HITBOX, offset: 0x601B4FC, symbol: aVe1SceneryWall2Hitbox } -D_VE1_601B518: - { type: SF64:HITBOX, offset: 0x601B518, symbol: D_VE1_601B518 } +aVe1SceneryWall3Hitbox: + { type: SF64:HITBOX, offset: 0x601B518, symbol: aVe1SceneryWall3Hitbox } -D_VE1_601B584: - { type: SF64:HITBOX, offset: 0x601B584, symbol: D_VE1_601B584 } +aVe1HallwayObstacleHitbox: + { type: SF64:HITBOX, offset: 0x601B584, symbol: aVe1HallwayObstacleHitbox } -D_VE1_601B5F4: - { type: SF64:HITBOX, offset: 0x601B5F4, symbol: D_VE1_601B5F4 } +aVe1GeneratorHitbox: + { type: SF64:HITBOX, offset: 0x601B5F4, symbol: aVe1GeneratorHitbox } -D_VE1_601B644: - { type: SF64:HITBOX, offset: 0x601B644, symbol: D_VE1_601B644 } +aVe1WatchPostHitbox: + { type: SF64:HITBOX, offset: 0x601B644, symbol: aVe1WatchPostHitbox } -D_VE1_601B678: - { type: SF64:HITBOX, offset: 0x601B678, symbol: D_VE1_601B678 } +aVe1TempleEntranceHitbox: + { type: SF64:HITBOX, offset: 0x601B678, symbol: aVe1TempleEntranceHitbox } -D_VE1_601B6C4: - { type: SF64:HITBOX, offset: 0x601B6C4, symbol: D_VE1_601B6C4 } +aVe1TempleInterior1Hitbox: + { type: SF64:HITBOX, offset: 0x601B6C4, symbol: aVe1TempleInterior1Hitbox } -D_VE1_601B710: - { type: SF64:HITBOX, offset: 0x601B710, symbol: D_VE1_601B710 } +aVe1TempleInterior2Hitbox: + { type: SF64:HITBOX, offset: 0x601B710, symbol: aVe1TempleInterior2Hitbox } -D_VE1_601B75C: - { type: SF64:HITBOX, offset: 0x601B75C, symbol: D_VE1_601B75C } +aVe1TempleInterior3Hitbox: + { type: SF64:HITBOX, offset: 0x601B75C, symbol: aVe1TempleInterior3Hitbox } -D_VE1_601B7F8: - { type: SF64:HITBOX, offset: 0x601B7F8, symbol: D_VE1_601B7F8 } +aVe1Pillar1Hitbox: + { type: SF64:HITBOX, offset: 0x601B7F8, symbol: aVe1Pillar1Hitbox } -D_VE1_601B830: - { type: SF64:HITBOX, offset: 0x601B830, symbol: D_VE1_601B830 } +aVe1Pillar2Hitbox: + { type: SF64:HITBOX, offset: 0x601B830, symbol: aVe1Pillar2Hitbox } -D_VE1_601B868: - { type: SF64:HITBOX, offset: 0x601B868, symbol: D_VE1_601B868 } +aVe1Pillar3Hitbox: + { type: SF64:HITBOX, offset: 0x601B868, symbol: aVe1Pillar3Hitbox } -D_VE1_601B8A0: - { type: SF64:HITBOX, offset: 0x601B8A0, symbol: D_VE1_601B8A0 } +aVe1Pillar4Hitbox: + { type: SF64:HITBOX, offset: 0x601B8A0, symbol: aVe1Pillar4Hitbox } -D_VE1_601B8D8: - { type: SF64:HITBOX, offset: 0x601B8D8, symbol: D_VE1_601B8D8 } +aVe1MonkeyStatueHitbox: + { type: SF64:HITBOX, offset: 0x601B8D8, symbol: aVe1MonkeyStatueHitbox } D_VE1_601B944: { type: SF64:HITBOX, offset: 0x601B944, symbol: D_VE1_601B944 } \ No newline at end of file diff --git a/assets/yaml/jp/rev0/ast_venom_2.yaml b/assets/yaml/jp/rev0/ast_venom_2.yaml index fd597c94..8f644d57 100644 --- a/assets/yaml/jp/rev0/ast_venom_2.yaml +++ b/assets/yaml/jp/rev0/ast_venom_2.yaml @@ -27,11 +27,11 @@ D_VE2_60020D0: D_VE2_6002890: { type: TEXTURE, format: IA8, width: 16, height: 16, offset: 0x6002890, ctype: u8, symbol: D_VE2_6002890 } -D_VE2_6002990: - { type: GFX, offset: 0x6002990, symbol: D_VE2_6002990 } +aAndPathExitDL: + { type: GFX, offset: 0x6002990, symbol: aAndPathExitDL } -D_VE2_6003000: - { type: GFX, offset: 0x6003000, symbol: D_VE2_6003000 } +aAndPathIntersectionDL: + { type: GFX, offset: 0x6003000, symbol: aAndPathIntersectionDL } D_VE2_60038E0: { type: GFX, offset: 0x60038E0, symbol: D_VE2_60038E0 } @@ -39,8 +39,8 @@ D_VE2_60038E0: D_VE2_6003970: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6003970, ctype: u16, symbol: D_VE2_6003970 } -D_VE2_6004170: - { type: GFX, offset: 0x6004170, symbol: D_VE2_6004170 } +aAndPathEntranceDL: + { type: GFX, offset: 0x6004170, symbol: aAndPathEntranceDL } D_VE2_6004888: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6004888, ctype: u16, symbol: D_VE2_6004888 } @@ -57,8 +57,8 @@ D_VE2_6006088: D_VE2_60030D8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60030D8, ctype: u16, symbol: D_VE2_60030D8 } -D_VE2_6006890: - { type: GFX, offset: 0x6006890, symbol: D_VE2_6006890 } +aAndPathWallsDL: + { type: GFX, offset: 0x6006890, symbol: aAndPathWallsDL } D_VE2_6006E20: { type: GFX, offset: 0x6006E20, symbol: D_VE2_6006E20 } @@ -72,8 +72,8 @@ D_VE2_6007E20: D_VE2_6008170: { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x6008170, ctype: u16, symbol: D_VE2_6008170 } -D_VE2_6008370: - { type: GFX, offset: 0x6008370, symbol: D_VE2_6008370 } +aVe2TowerDL: + { type: GFX, offset: 0x6008370, symbol: aVe2TowerDL } D_VE2_6008AF8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6008AF8, ctype: u16, symbol: D_VE2_6008AF8 } @@ -162,8 +162,8 @@ D_VE2_600F700: D_VE2_6010700: { type: GFX, offset: 0x6010700, symbol: D_VE2_6010700 } -D_VE2_6010960: - { type: GFX, offset: 0x6010960, symbol: D_VE2_6010960 } +aVe2MountainDL: + { type: GFX, offset: 0x6010960, symbol: aVe2MountainDL } D_VE2_6010CA0: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6010CA0, ctype: u16, symbol: D_VE2_6010CA0 } @@ -195,11 +195,11 @@ D_VE2_6014D94: D_VE2_6014FEC: { type: SF64:COLPOLY, count: 250, offset: 0x6014FEC, symbol: D_VE2_6014FEC, mesh_symbol: D_VE2_OFFSET } -D_VE2_601668C: - { type: SF64:HITBOX, offset: 0x601668C, symbol: D_VE2_601668C } +aVe2TowerHitbox: + { type: SF64:HITBOX, offset: 0x601668C, symbol: aVe2TowerHitbox } -D_VE2_60166F4: - { type: SF64:HITBOX, offset: 0x60166F4, symbol: D_VE2_60166F4 } +aVe2BaseHitbox: + { type: SF64:HITBOX, offset: 0x60166F4, symbol: aVe2BaseHitbox } -D_VE2_6016714: - { type: SF64:HITBOX, offset: 0x6016714, symbol: D_VE2_6016714 } \ No newline at end of file +aVe2MountainHitbox: + { type: SF64:HITBOX, offset: 0x6016714, symbol: aVe2MountainHitbox } \ No newline at end of file diff --git a/assets/yaml/jp/rev0/ast_versus.yaml b/assets/yaml/jp/rev0/ast_versus.yaml index 1e778a7f..75b6f5e2 100644 --- a/assets/yaml/jp/rev0/ast_versus.yaml +++ b/assets/yaml/jp/rev0/ast_versus.yaml @@ -182,8 +182,8 @@ D_versus_300EC80: D_versus_300EE80: { type: GFX, offset: 0x300EE80, symbol: D_versus_300EE80} -D_versus_300FB80: - { type: GFX, offset: 0x300FB80, symbol: D_versus_300FB80} +aVsLandmasterModelDL: + { type: GFX, offset: 0x300FB80, symbol: aVsLandmasterModelDL} D_versus_3010690: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3010690, symbol: D_versus_3010690 } @@ -203,14 +203,14 @@ D_versus_3011E40: D_versus_3011ED0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x3011ED0, symbol: D_versus_3011ED0 } -D_versus_3012ED0: - { type: GFX, offset: 0x3012ED0, symbol: D_versus_3012ED0} +aVsSpaceJunk3DL: + { type: GFX, offset: 0x3012ED0, symbol: aVsSpaceJunk3DL} -D_versus_3013580: - { type: GFX, offset: 0x3013580, symbol: D_versus_3013580} +aVsSpaceJunk2DL: + { type: GFX, offset: 0x3013580, symbol: aVsSpaceJunk2DL} -D_versus_3013780: - { type: GFX, offset: 0x3013780, symbol: D_versus_3013780} +aVsSpaceJunk1DL: + { type: GFX, offset: 0x3013780, symbol: aVsSpaceJunk1DL} D_versus_3013F50: {type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x3013F50, symbol: D_versus_3013F50, tlut: 0x3014350 } @@ -245,8 +245,8 @@ D_versus_30160A0: D_versus_30162F8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x30162F8, symbol: D_versus_30162F8 } -D_versus_3016B00: - { type: GFX, offset: 0x3016B00, symbol: D_versus_3016B00} +aVsKaFlBaseDL: + { type: GFX, offset: 0x3016B00, symbol: aVsKaFlBaseDL} D_versus_3016DC0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3016DC0, symbol: D_versus_3016DC0 } @@ -257,14 +257,14 @@ D_versus_3016FC0: D_versus_30171C0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x30171C0, symbol: D_versus_30171C0 } -D_versus_30173C0: - { type: GFX, offset: 0x30173C0, symbol: D_versus_30173C0} +aVsPyramid1DL: + { type: GFX, offset: 0x30173C0, symbol: aVsPyramid1DL} -D_versus_30174E0: - { type: GFX, offset: 0x30174E0, symbol: D_versus_30174E0} +aVsPyramid2DL: + { type: GFX, offset: 0x30174E0, symbol: aVsPyramid2DL} -D_versus_3017600: - { type: GFX, offset: 0x3017600, symbol: D_versus_3017600} +aVsBuildingDL: + { type: GFX, offset: 0x3017600, symbol: aVsBuildingDL} D_versus_3017800: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3017800, symbol: D_versus_3017800 } @@ -299,8 +299,8 @@ D_versus_301AEF0: D_versus_301AF78: {type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x301AF78, symbol: D_versus_301AF78 } -D_versus_301B080: - { type: GFX, offset: 0x301B080, symbol: D_versus_301B080} +aVsArchDL: + { type: GFX, offset: 0x301B080, symbol: aVsArchDL} D_versus_301B438: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301B438, symbol: D_versus_301B438 } @@ -320,8 +320,8 @@ D_versus_301C0A4: D_versus_301C3A8: { type: SF64:ANIM, offset: 0x301C3A8, symbol: D_versus_301C3A8} -D_versus_301C614: - { type: SF64:SKELETON, offset: 0x301C614, symbol: D_versus_301C614 } +aVsOnFootFalcoSkel: + { type: SF64:SKELETON, offset: 0x301C614, symbol: aVsOnFootFalcoSkel } D_versus_301C79C: { type: SF64:ANIM, offset: 0x301C79C, symbol: D_versus_301C79C } @@ -335,8 +335,8 @@ D_versus_301CCE4: D_versus_301CFEC: { type: SF64:ANIM, offset: 0x301CFEC, symbol: D_versus_301CFEC} -D_versus_301D258: - { type: SF64:SKELETON, offset: 0x301D258, symbol: D_versus_301D258 } +aVsOnFootFoxSkel: + { type: SF64:SKELETON, offset: 0x301D258, symbol: aVsOnFootFoxSkel } D_versus_301D3DC: { type: SF64:ANIM, offset: 0x301D3DC, symbol: D_versus_301D3DC } @@ -347,8 +347,8 @@ D_versus_301D568: D_versus_301D888: { type: SF64:ANIM, offset: 0x301D888, symbol: D_versus_301D888} -D_versus_301DB94: - { type: SF64:SKELETON, offset: 0x301DB94, symbol: D_versus_301DB94 } +aVsOnFootPeppySkel: + { type: SF64:SKELETON, offset: 0x301DB94, symbol: aVsOnFootPeppySkel } D_versus_301DD6C: { type: SF64:ANIM, offset: 0x301DD6C, symbol: D_versus_301DD6C } @@ -359,8 +359,8 @@ D_versus_301DEA4: D_versus_301E19C: { type: SF64:ANIM, offset: 0x301E19C, symbol: D_versus_301E19C} -D_versus_301E3E8: - { type: SF64:SKELETON, offset: 0x301E3E8, symbol: D_versus_301E3E8 } +aVsOnFootSlippySkel: + { type: SF64:SKELETON, offset: 0x301E3E8, symbol: aVsOnFootSlippySkel } D_versus_301E560: { type: SF64:ANIM, offset: 0x301E560, symbol: D_versus_301E560} @@ -395,8 +395,8 @@ D_versus_301EEB0: D_versus_301EF38: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301EF38, symbol: D_versus_301EF38 } -D_versus_301F140: - { type: GFX, offset: 0x301F140, symbol: D_versus_301F140} +aVsLandmasterCanonDL: + { type: GFX, offset: 0x301F140, symbol: aVsLandmasterCanonDL} D_versus_301F2E0: { type: GFX, offset: 0x301F2E0, symbol: D_versus_301F2E0} @@ -704,26 +704,26 @@ D_versus_302E170: D_versus_302E378: { type: SF64:OBJECT_INIT, offset: 0x302E378, symbol: D_versus_302E378} -D_versus_302ED4C: - { type: SF64:HITBOX, offset: 0x302ED4C, symbol: D_versus_302ED4C} +aVsSpaceJunk1Hitbox: + { type: SF64:HITBOX, offset: 0x302ED4C, symbol: aVsSpaceJunk1Hitbox} -D_versus_302ED98: - { type: SF64:HITBOX, offset: 0x302ED98, symbol: D_versus_302ED98} +aVsSpaceJunk2Hitbox: + { type: SF64:HITBOX, offset: 0x302ED98, symbol: aVsSpaceJunk2Hitbox} -D_versus_302EDB4: - { type: SF64:HITBOX, offset: 0x302EDB4, symbol: D_versus_302EDB4} +aVsSpaceJunk3Hitbox: + { type: SF64:HITBOX, offset: 0x302EDB4, symbol: aVsSpaceJunk3Hitbox} -D_versus_302EE00: - { type: SF64:HITBOX, offset: 0x302EE00, symbol: D_versus_302EE00} +aVsKaFlBaseHitbox: + { type: SF64:HITBOX, offset: 0x302EE00, symbol: aVsKaFlBaseHitbox} -D_versus_302EE64: - { type: SF64:HITBOX, offset: 0x302EE64, symbol: D_versus_302EE64} +aVsBuilding1Hibox: + { type: SF64:HITBOX, offset: 0x302EE64, symbol: aVsBuilding1Hibox} -D_versus_302EE80: - { type: SF64:HITBOX, offset: 0x302EE80, symbol: D_versus_302EE80} +aVsBuilding2Hibox: + { type: SF64:HITBOX, offset: 0x302EE80, symbol: aVsBuilding2Hibox} -D_versus_302EE9C: - { type: SF64:HITBOX, offset: 0x302EE9C, symbol: D_versus_302EE9C} +aVsArchHitbox: + { type: SF64:HITBOX, offset: 0x302EE9C, symbol: aVsArchHitbox} D_versus_302EEE8: { type: SF64:TRIANGLE, count: 4, offset: 0x302EEE8, symbol: D_versus_302EEE8, mesh_symbol: D_versus_OFFSET} diff --git a/assets/yaml/jp/rev0/ast_zoness.yaml b/assets/yaml/jp/rev0/ast_zoness.yaml index 8f634226..1dd6ae6a 100644 --- a/assets/yaml/jp/rev0/ast_zoness.yaml +++ b/assets/yaml/jp/rev0/ast_zoness.yaml @@ -141,14 +141,14 @@ D_ZO_600E5EC: D_ZO_600E7D8: { type: SF64:SKELETON, offset: 0x600E7D8, symbol: D_ZO_600E7D8} -D_ZO_600E820: - { type: GFX, offset: 0x600E820, symbol: D_ZO_600E820} +aZoOilRig3DL: + { type: GFX, offset: 0x600E820, symbol: aZoOilRig3DL} -D_ZO_600EC90: - { type: GFX, offset: 0x600EC90, symbol: D_ZO_600EC90} +aZoOilRig2DL: + { type: GFX, offset: 0x600EC90, symbol: aZoOilRig2DL} -D_ZO_600F560: - { type: GFX, offset: 0x600F560, symbol: D_ZO_600F560} +aZoOilRig1DL: + { type: GFX, offset: 0x600F560, symbol: aZoOilRig1DL} D_ZO_600FE58: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600FE58, symbol: D_ZO_600FE58} @@ -225,8 +225,8 @@ D_ZO_6017810: D_ZO_60178B0: { type: GFX, offset: 0x60178B0, symbol: D_ZO_60178B0} -D_ZO_6017950: - { type: GFX, offset: 0x6017950, symbol: D_ZO_6017950} +aZoBallDL: + { type: GFX, offset: 0x6017950, symbol: aZoBallDL} D_ZO_60179D8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60179D8, symbol: D_ZO_60179D8} @@ -366,8 +366,8 @@ D_ZO_601FBC4: D_ZO_601FC90: { type: SF64:SKELETON, offset: 0x601FC90, symbol: D_ZO_601FC90} -D_ZO_601FCB0: - { type: GFX, offset: 0x601FCB0, symbol: D_ZO_601FCB0} +aZoIslandDL: + { type: GFX, offset: 0x601FCB0, symbol: aZoIslandDL} D_ZO_60201B0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60201B0, symbol: D_ZO_60201B0} @@ -471,8 +471,8 @@ D_ZO_6024220: D_ZO_60242B8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60242B8, symbol: D_ZO_60242B8} -aZoRock1DL: - { type: GFX, offset: 0x6024AC0, symbol: aZoRock1DL} +aZoRockDL: + { type: GFX, offset: 0x6024AC0, symbol: aZoRockDL} D_ZO_6024D60: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6024D60, symbol: D_ZO_6024D60} @@ -502,59 +502,59 @@ D_ZO_602AC50: D_ZO_602AE94: { type: ARRAY, count: 242, array_type: Vec3f, offset: 0x602AE94, symbol: D_ZO_602AE94} -aZoRock1Hitbox: - { type: SF64:HITBOX, offset: 0x602B9EC, symbol: aZoRock1Hitbox} +aZoRockHitbox: + { type: SF64:HITBOX, offset: 0x602B9EC, symbol: aZoRockHitbox} -D_ZO_602BA20: - { type: SF64:HITBOX, offset: 0x602BA20, symbol: D_ZO_602BA20} +aZoOilRig1Hitbox: + { type: SF64:HITBOX, offset: 0x602BA20, symbol: aZoOilRig1Hitbox} -D_ZO_602BAE4: - { type: SF64:HITBOX, offset: 0x602BAE4, symbol: D_ZO_602BAE4} +aZoOilRig2Hitbox: + { type: SF64:HITBOX, offset: 0x602BAE4, symbol: aZoOilRig2Hitbox} -D_ZO_602BBD8: - { type: SF64:HITBOX, offset: 0x602BBD8, symbol: D_ZO_602BBD8} +aZoOilRig3Hitbox: + { type: SF64:HITBOX, offset: 0x602BBD8, symbol: aZoOilRig3Hitbox} -D_ZO_602BC54: - { type: SF64:HITBOX, offset: 0x602BC54, symbol: D_ZO_602BC54} +aZoIslandHitbox: + { type: SF64:HITBOX, offset: 0x602BC54, symbol: aZoIslandHitbox} -D_ZO_602BC58: - { type: SF64:HITBOX, offset: 0x602BC58, symbol: D_ZO_602BC58} +aZoDodoraHitbox: + { type: SF64:HITBOX, offset: 0x602BC58, symbol: aZoDodoraHitbox} -D_ZO_602BE3C: - { type: SF64:HITBOX, offset: 0x602BE3C, symbol: D_ZO_602BE3C} +aZoTroikaHitbox: + { type: SF64:HITBOX, offset: 0x602BE3C, symbol: aZoTroikaHitbox} -D_ZO_602BE58: - { type: SF64:HITBOX, offset: 0x602BE58, symbol: D_ZO_602BE58} +aZoObnemaHitbox: + { type: SF64:HITBOX, offset: 0x602BE58, symbol: aZoObnemaHitbox} -D_ZO_602BFC4: - { type: SF64:HITBOX, offset: 0x602BFC4, symbol: D_ZO_602BFC4} +aZoBarrierHitbox: + { type: SF64:HITBOX, offset: 0x602BFC4, symbol: aZoBarrierHitbox} D_ZO_602C028: { type: SF64:HITBOX, offset: 0x602C028, symbol: D_ZO_602C028} -D_ZO_602C044: - { type: SF64:HITBOX, offset: 0x602C044, symbol: D_ZO_602C044} +aZoSarumarineHitbox: + { type: SF64:HITBOX, offset: 0x602C044, symbol: aZoSarumarineHitbox} D_ZO_602C1A0: { type: SF64:HITBOX, offset: 0x602C1A0, symbol: D_ZO_602C1A0} -D_ZO_602C1D4: - { type: SF64:HITBOX, offset: 0x602C1D4, symbol: D_ZO_602C1D4} +aZoCargoShipHitbox: + { type: SF64:HITBOX, offset: 0x602C1D4, symbol: aZoCargoShipHitbox} -D_ZO_602C218: - { type: SF64:HITBOX, offset: 0x602C218, symbol: D_ZO_602C218} +aZoContainerHitbox: + { type: SF64:HITBOX, offset: 0x602C218, symbol: aZoContainerHitbox} -D_ZO_602C234: - { type: SF64:HITBOX, offset: 0x602C234, symbol: D_ZO_602C234} +aZoRadarBuoyHitbox: + { type: SF64:HITBOX, offset: 0x602C234, symbol: aZoRadarBuoyHitbox} -D_ZO_602C250: - { type: SF64:HITBOX, offset: 0x602C250, symbol: D_ZO_602C250} +aZoSupplyCraneHitbox: + { type: SF64:HITBOX, offset: 0x602C250, symbol: aZoSupplyCraneHitbox} -D_ZO_602C294: - { type: SF64:HITBOX, offset: 0x602C294, symbol: D_ZO_602C294} +aZoBirdHitbox: + { type: SF64:HITBOX, offset: 0x602C294, symbol: aZoBirdHitbox} -D_ZO_602C2B0: - { type: SF64:HITBOX, offset: 0x602C2B0, symbol: D_ZO_602C2B0} +aZoSearchLightHitbox: + { type: SF64:HITBOX, offset: 0x602C2B0, symbol: aZoSearchLightHitbox} D_ZO_602C2CC: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602C2CC, symbol: D_ZO_602C2CC} diff --git a/assets/yaml/us/rev1/ast_7_ti_1.yaml b/assets/yaml/us/rev1/ast_7_ti_1.yaml index 3e49b4c9..53dd2d2c 100644 --- a/assets/yaml/us/rev1/ast_7_ti_1.yaml +++ b/assets/yaml/us/rev1/ast_7_ti_1.yaml @@ -89,8 +89,8 @@ D_TI1_7005420: D_TI1_70067C4: { type: SF64:ANIM, offset: 0x70067C4, symbol: D_TI1_70067C4 } -D_TI1_7006990: - { type: SF64:SKELETON, offset: 0x7006990, symbol: D_TI1_7006990} +aTi1DesertCrawlerSkel: + { type: SF64:SKELETON, offset: 0x7006990, symbol: aTi1DesertCrawlerSkel} D_TI1_7006F74: { type: SF64:ANIM, offset: 0x7006F74, symbol: D_TI1_7006F74 } @@ -146,8 +146,8 @@ D_TI1_7009510: D_TI1_70096D8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x070096D8, symbol: D_TI1_70096D8 } -D_TI1_70098E0: - { type: GFX, offset: 0x70098E0, symbol: D_TI1_70098E0 } +aTiDelphorDL: + { type: GFX, offset: 0x70098E0, symbol: aTiDelphorDL } D_TI1_7009B58: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x07009B58, symbol: D_TI1_7009B58 } @@ -158,8 +158,8 @@ D_TI1_7009D60: D_TI1_700A190: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0700A190, symbol: D_TI1_700A190 } -D_TI1_700A990: - { type: GFX, offset: 0x700A990, symbol: D_TI1_700A990 } +aTi1BombDL: + { type: GFX, offset: 0x700A990, symbol: aTi1BombDL } D_TI1_700AAD8: { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x700AAD8, symbol: D_TI1_700AAD8, tlut: 0x700AB58 } @@ -167,8 +167,8 @@ D_TI1_700AAD8: D_TI1_700AB58: { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0x700AB58, symbol: D_TI1_700AB58 } -D_TI1_700AB70: - { type: GFX, offset: 0x700AB70, symbol: D_TI1_700AB70 } +aTi1LandmineDL: + { type: GFX, offset: 0x700AB70, symbol: aTi1LandmineDL } D_TI1_700AEA8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x0700AEA8, symbol: D_TI1_700AEA8 } @@ -188,8 +188,8 @@ D_TI1_700B9C0: D_TI1_700BB10: { type: GFX, offset: 0x700BB10, symbol: D_TI1_700BB10 } -D_TI1_700BE00: - { type: GFX, offset: 0x700BE00, symbol: D_TI1_700BE00 } +aTiBridgeDL: + { type: GFX, offset: 0x700BE00, symbol: aTiBridgeDL } D_TI1_700BFB0: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x0700BFB0, symbol: D_TI1_700BFB0, tlut: 0x0700C3B0 } @@ -200,11 +200,11 @@ D_TI1_700C3B0: D_TI1_700C4B0: { type: GFX, offset: 0x700C4B0, symbol: D_TI1_700C4B0 } -D_TI1_700C8D8: - { type: SF64:ANIM, offset: 0x700C8D8, symbol: D_TI1_700C8D8 } +aTi1DesertRoverAnim: + { type: SF64:ANIM, offset: 0x700C8D8, symbol: aTi1DesertRoverAnim } -D_TI1_700C964: - { type: SF64:SKELETON, offset: 0x700C964, symbol: D_TI1_700C964 } +aTi1DesertRoverSkel: + { type: SF64:SKELETON, offset: 0x700C964, symbol: aTi1DesertRoverSkel } D_TI1_700C980: { type: GFX, offset: 0x700C980, symbol: D_TI1_700C980 } @@ -218,8 +218,8 @@ D_TI1_700CB60: D_TI1_700D534: { type: SF64:ANIM, offset: 0x700D534, symbol: D_TI1_700D534 } -D_TI1_700D700: - {type: SF64:SKELETON, offset: 0x700D700, symbol: D_TI1_700D700} +aTiRascoSkel: + {type: SF64:SKELETON, offset: 0x700D700, symbol: aTiRascoSkel} D_TI1_700D740: { type: GFX, offset: 0x700D740, symbol: D_TI1_700D740 } diff --git a/assets/yaml/us/rev1/ast_allies.yaml b/assets/yaml/us/rev1/ast_allies.yaml index 3f9594f5..d4997d4b 100644 --- a/assets/yaml/us/rev1/ast_allies.yaml +++ b/assets/yaml/us/rev1/ast_allies.yaml @@ -8,8 +8,8 @@ - '#include "gfx.h"' - '#include "sf64object.h"' -D_D000000: - { type: GFX, offset: 0xD000000, symbol: D_D000000 } +aKattMarkDL: + { type: GFX, offset: 0xD000000, symbol: aKattMarkDL } ast_allies_seg13_vtx_00000098: { type: VTX, count: 3, offset: 0x0D000098, symbol: ast_allies_seg13_vtx_00000098 } @@ -17,11 +17,11 @@ ast_allies_seg13_vtx_00000098: D_D0000C8: { type: BLOB, size: 0x18, offset: 0x0D0000C8, symbol: D_D0000C8 } -D_D0000E0: - { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D0000E0, symbol: D_D0000E0, tlut: 0x0D000160 } +aKattMarkTex: + { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D0000E0, symbol: aKattMarkTex, tlut: 0x0D000160 } -D_D000160: - { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD000160, symbol: D_D000160 } +aKattMarkTLUT: + { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD000160, symbol: aKattMarkTLUT } D_D000170: { type: TEXTURE, ctype: u16, format: RGBA16, width: 44, height: 44, offset: 0xD000170, symbol: D_D000170 } @@ -77,25 +77,25 @@ D_D00AFB8: D_D00B3B8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x0D00B3B8, symbol: D_D00B3B8 } -D_D00B5C0: - { type: GFX, offset: 0xD00B5C0, symbol: D_D00B5C0 } +aBillMarkDL: + { type: GFX, offset: 0xD00B5C0, symbol: aBillMarkDL } # Letter B -D_D00B688: - { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B688, symbol: D_D00B688, tlut: 0xD00B708 } +aBillMarkTex: + { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B688, symbol: aBillMarkTex, tlut: 0xD00B708 } -D_D00B708: - { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B708, symbol: D_D00B708 } +aBillMarkTLUT: + { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B708, symbol: aBillMarkTLUT } -D_D00B720: - { type: GFX, offset: 0xD00B720, symbol: D_D00B720 } +aJamesMarkDL: + { type: GFX, offset: 0xD00B720, symbol: aJamesMarkDL } # Letter J ? -D_D00B7F0: - { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B7F0, symbol: D_D00B7F0, tlut: 0xD00B870 } +aJamesMarkTex: + { type: TEXTURE, ctype: u8, format: CI4, width: 16, height: 16, offset: 0x0D00B7F0, symbol: aJamesMarkTex, tlut: 0xD00B870 } -D_D00B870: - { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B870, symbol: D_D00B870 } +aJamesMarkTLUT: + { type: TEXTURE, ctype: u16, format: TLUT, colors: 8, offset: 0xD00B870, symbol: aJamesMarkTLUT } D_D00B880: { type: GFX, offset: 0xD00B880, symbol: D_D00B880 } diff --git a/assets/yaml/us/rev1/ast_andross.yaml b/assets/yaml/us/rev1/ast_andross.yaml index 673b0167..a2954394 100644 --- a/assets/yaml/us/rev1/ast_andross.yaml +++ b/assets/yaml/us/rev1/ast_andross.yaml @@ -232,8 +232,8 @@ D_ANDROSS_C038860: D_ANDROSS_C038954: {type: SF64:HITBOX, offset: 0xC038954, symbol: D_ANDROSS_C038954} -D_ANDROSS_C038A48: - {type: SF64:HITBOX, offset: 0xC038A48, symbol: D_ANDROSS_C038A48} +aAndDoorHitbox: + {type: SF64:HITBOX, offset: 0xC038A48, symbol: aAndDoorHitbox} D_ANDROSS_C038AC4: {type: SF64:HITBOX, offset: 0xC038AC4, symbol: D_ANDROSS_C038AC4} @@ -241,20 +241,20 @@ D_ANDROSS_C038AC4: D_ANDROSS_C038B40: {type: SF64:HITBOX, offset: 0xC038B40, symbol: D_ANDROSS_C038B40} -D_ANDROSS_C038BA4: - {type: SF64:HITBOX, offset: 0xC038BA4, symbol: D_ANDROSS_C038BA4} +aAndPathIntersectionHitbox: + {type: SF64:HITBOX, offset: 0xC038BA4, symbol: aAndPathIntersectionHitbox} -D_ANDROSS_C038BD8: - {type: SF64:HITBOX, offset: 0xC038BD8, symbol: D_ANDROSS_C038BD8} +aAndPassageHitbox: + {type: SF64:HITBOX, offset: 0xC038BD8, symbol: aAndPassageHitbox} D_ANDROSS_C038CCC: {type: SF64:HITBOX, offset: 0xC038CCC, symbol: D_ANDROSS_C038CCC} -D_ANDROSS_C038DC0: - {type: SF64:HITBOX, offset: 0xC038DC0, symbol: D_ANDROSS_C038DC0} +aAndAndrossHitbox: + {type: SF64:HITBOX, offset: 0xC038DC0, symbol: aAndAndrossHitbox} -D_ANDROSS_C038F24: - {type: SF64:HITBOX, offset: 0xC038F24, symbol: D_ANDROSS_C038F24} +aAndBrainHitbox: + {type: SF64:HITBOX, offset: 0xC038F24, symbol: aAndBrainHitbox} D_ANDROSS_C038FE8: {type: VTX, count: 34, offset: 0xC038FE8, symbol: D_ANDROSS_C038FE8} diff --git a/assets/yaml/us/rev1/ast_aquas.yaml b/assets/yaml/us/rev1/ast_aquas.yaml index d78d5c3b..654d670d 100644 --- a/assets/yaml/us/rev1/ast_aquas.yaml +++ b/assets/yaml/us/rev1/ast_aquas.yaml @@ -35,8 +35,8 @@ D_AQ_6002874: { type: SF64:SKELETON, offset: 0x6002874, symbol: D_AQ_6002874 } # -D_AQ_6002C10: - { type: GFX, offset: 0x6002C10, symbol: D_AQ_6002C10 } +aAqOysterDL: + { type: GFX, offset: 0x6002C10, symbol: aAqOysterDL } D_AQ_6002D58: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x6002D58, symbol: D_AQ_6002D58, tlut: 0x6003158 } @@ -152,8 +152,8 @@ D_AQ_600BD20: D_AQ_600B518: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600B518, symbol: D_AQ_600B518 } -D_AQ_600BF80: - { type: GFX, offset: 0x600BF80, symbol: D_AQ_600BF80 } +aAqTunnel2DL: + { type: GFX, offset: 0x600BF80, symbol: aAqTunnel2DL } D_AQ_600C530: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x600C530, symbol: D_AQ_600C530, tlut: 0x600C930 } @@ -197,11 +197,11 @@ D_AQ_600E150: D_AQ_600E368: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600E368, symbol: D_AQ_600E368 } -D_AQ_600EE10: - { type: GFX, offset: 0x600EE10, symbol: D_AQ_600EE10 } +aAqWall1DL: + { type: GFX, offset: 0x600EE10, symbol: aAqWall1DL } -D_AQ_600EEF0: - { type: GFX, offset: 0x600EEF0, symbol: D_AQ_600EEF0 } +aAqBump2DL: + { type: GFX, offset: 0x600EEF0, symbol: aAqBump2DL } D_AQ_600F030: { type: GFX, offset: 0x600F030, symbol: D_AQ_600F030 } @@ -230,11 +230,11 @@ D_AQ_6011A78: D_AQ_6011CD8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x6011CD8, symbol: D_AQ_6011CD8 } -D_AQ_6011EE0: - { type: GFX, offset: 0x6011EE0, symbol: D_AQ_6011EE0 } +aAqTunnel1DL: + { type: GFX, offset: 0x6011EE0, symbol: aAqTunnel1DL } -D_AQ_60120F0: - { type: GFX, offset: 0x60120F0, symbol: D_AQ_60120F0 } +aAqRoofDL: + { type: GFX, offset: 0x60120F0, symbol: aAqRoofDL } D_AQ_60126A8: { type: TEXTURE, ctype: u8, format: CI8, width: 16, height: 64, offset: 0x60126A8, symbol: D_AQ_60126A8, tlut: 0x6012AA8 } @@ -254,14 +254,14 @@ D_AQ_6012EA8: D_AQ_60132A8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 240, offset: 0x60132A8, symbol: D_AQ_60132A8 } -D_AQ_60135E0: - { type: SF64:ANIM, offset: 0x60135E0, symbol: D_AQ_60135E0 } +aAqFishGroupAnim: + { type: SF64:ANIM, offset: 0x60135E0, symbol: aAqFishGroupAnim } -D_AQ_60136CC: - { type: SF64:SKELETON, offset: 0x60136CC, symbol: D_AQ_60136CC } +aAqFishGroupSkel1: + { type: SF64:SKELETON, offset: 0x60136CC, symbol: aAqFishGroupSkel1 } -D_AQ_60137CC: - { type: SF64:SKELETON, offset: 0x60137CC, symbol: D_AQ_60137CC } +aAqFishGroupSkel2: + { type: SF64:SKELETON, offset: 0x60137CC, symbol: aAqFishGroupSkel2 } D_AQ_60137F0: { type: GFX, offset: 0x60137F0, symbol: D_AQ_60137F0 } @@ -275,11 +275,11 @@ D_AQ_6013EC0: D_AQ_6014030: { type: GFX, offset: 0x6014030, symbol: D_AQ_6014030 } -D_AQ_6014438: - { type: SF64:ANIM, offset: 0x6014438, symbol: D_AQ_6014438 } +aAqStoneColumnAnim: + { type: SF64:ANIM, offset: 0x6014438, symbol: aAqStoneColumnAnim } -D_AQ_6014504: - { type: SF64:SKELETON, offset: 0x6014504, symbol: D_AQ_6014504 } +aAqStoneColumnSkel: + { type: SF64:SKELETON, offset: 0x6014504, symbol: aAqStoneColumnSkel } D_AQ_6014520: { type: GFX, offset: 0x6014520, symbol: D_AQ_6014520 } @@ -293,8 +293,8 @@ D_AQ_6014CD0: D_AQ_6014E50: { type: GFX, offset: 0x6014E50, symbol: D_AQ_6014E50 } -D_AQ_6014FD0: - { type: GFX, offset: 0x6014FD0, symbol: D_AQ_6014FD0 } +aAqBoulderDL: + { type: GFX, offset: 0x6014FD0, symbol: aAqBoulderDL } D_AQ_6015430: { type: GFX, offset: 0x6015430, symbol: D_AQ_6015430 } @@ -305,8 +305,8 @@ D_AQ_60154F8: D_AQ_60155F8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 152, offset: 0x60155F8, symbol: D_AQ_60155F8 } -D_AQ_6015730: - { type: GFX, offset: 0x6015730, symbol: D_AQ_6015730 } +aAqArchDL: + { type: GFX, offset: 0x6015730, symbol: aAqArchDL } D_AQ_6015DD0: { type: GFX, offset: 0x6015DD0, symbol: D_AQ_6015DD0 } @@ -383,8 +383,8 @@ D_AQ_601D110: D_AQ_601DE50: { type: SF64:ANIM, offset: 0x601DE50, symbol: D_AQ_601DE50 } -D_AQ_601DE60: - { type: GFX, offset: 0x601DE60, symbol: D_AQ_601DE60 } +aAqCoralReef2DL: + { type: GFX, offset: 0x601DE60, symbol: aAqCoralReef2DL } D_AQ_601E1F0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x601E1F0, symbol: D_AQ_601E1F0 } @@ -392,11 +392,11 @@ D_AQ_601E1F0: D_AQ_601E9F0: { type: GFX, offset: 0x601E9F0, symbol: D_AQ_601E9F0 } -D_AQ_601EC68: - { type: SF64:ANIM, offset: 0x601EC68, symbol: D_AQ_601EC68 } +aAqCoralAnim: + { type: SF64:ANIM, offset: 0x601EC68, symbol: aAqCoralAnim } -D_AQ_601EDB4: - { type: SF64:SKELETON, offset: 0x601EDB4, symbol: D_AQ_601EDB4 } +aAqCoralSkel: + { type: SF64:SKELETON, offset: 0x601EDB4, symbol: aAqCoralSkel } D_AQ_601EDE0: { type: GFX, offset: 0x601EDE0, symbol: D_AQ_601EDE0 } @@ -425,11 +425,11 @@ D_AQ_6021858: D_AQ_6021C58: { type: TEXTURE, ctype: u16, format: TLUT, colors: 232, offset: 0x6021C58, symbol: D_AQ_6021C58 } -D_AQ_602201C: - { type: SF64:ANIM, offset: 0x602201C, symbol: D_AQ_602201C } +aAqOysterAnim: + { type: SF64:ANIM, offset: 0x602201C, symbol: aAqOysterAnim } -D_AQ_60220E8: - { type: SF64:SKELETON, offset: 0x60220E8, symbol: D_AQ_60220E8 } +aAqOysterSkel: + { type: SF64:SKELETON, offset: 0x60220E8, symbol: aAqOysterSkel } D_AQ_6022110: { type: GFX, offset: 0x6022110, symbol: D_AQ_6022110 } @@ -449,14 +449,14 @@ D_AQ_6022888: D_AQ_60229B8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60229B8, symbol: D_AQ_60229B8 } -D_AQ_60231C0: - { type: GFX, offset: 0x60231C0, symbol: D_AQ_60231C0 } +aAqCoralReef1DL: + { type: GFX, offset: 0x60231C0, symbol: aAqCoralReef1DL } -D_AQ_6023780: - { type: SF64:ANIM, offset: 0x6023780, symbol: D_AQ_6023780 } +aAqJellyfishAnim: + { type: SF64:ANIM, offset: 0x6023780, symbol: aAqJellyfishAnim } -D_AQ_602390C: - { type: SF64:SKELETON, offset: 0x602390C, symbol: D_AQ_602390C } +aAqJellyfishSkel: + { type: SF64:SKELETON, offset: 0x602390C, symbol: aAqJellyfishSkel } D_AQ_6023940: { type: GFX, offset: 0x6023940, symbol: D_AQ_6023940 } @@ -482,8 +482,8 @@ D_AQ_6024938: D_AQ_60249C0: { type: GFX, offset: 0x60249C0, symbol: D_AQ_60249C0 } -D_AQ_6024A50: - { type: GFX, offset: 0x6024A50, symbol: D_AQ_6024A50 } +aAqPearlDL: + { type: GFX, offset: 0x6024A50, symbol: aAqPearlDL } D_AQ_6024F80: { type: SF64:ANIM, offset: 0x6024F80, symbol: D_AQ_6024F80 } @@ -605,8 +605,8 @@ D_AQ_602AC40: D_AQ_602ACC0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602ACC0, symbol: D_AQ_602ACC0 } -D_AQ_602B4C0: - { type: GFX, offset: 0x602B4C0, symbol: D_AQ_602B4C0 } +aAqRockDL: + { type: GFX, offset: 0x602B4C0, symbol: aAqRockDL } D_AQ_602B9D4: # unused and possibly broken { type: SF64:ANIM, offset: 0x602B9D4, symbol: D_AQ_602B9D4 } @@ -656,8 +656,8 @@ D_AQ_602E5C8: D_AQ_60308B8: { type: SF64:SCRIPT, offset: 0x60308B8, symbol: D_AQ_60308B8 } -D_AQ_6030B10: - { type: SF64:HITBOX, offset: 0x6030B10, symbol: D_AQ_6030B10 } +aBoss301Hitbox: + { type: SF64:HITBOX, offset: 0x6030B10, symbol: aBoss301Hitbox } D_AQ_6030B14_f32: { type: SF64:HITBOX, offset: 0x6030B14, symbol: D_AQ_6030B14_f32 } @@ -674,8 +674,8 @@ D_AQ_6030B68: D_AQ_6030BAC: { type: SF64:HITBOX, offset: 0x6030BAC, symbol: D_AQ_6030BAC } -D_AQ_6030BE0: - { type: SF64:HITBOX, offset: 0x6030BE0, symbol: D_AQ_6030BE0 } +aAqActor188Hitbox: + { type: SF64:HITBOX, offset: 0x6030BE0, symbol: aAqActor188Hitbox } D_AQ_6030BFC: { type: SF64:HITBOX, offset: 0x6030BFC, symbol: D_AQ_6030BFC } @@ -686,14 +686,14 @@ D_AQ_6030C18: D_AQ_6030C44: { type: SF64:HITBOX, offset: 0x6030C44, symbol: D_AQ_6030C44 } -D_AQ_6030C60: - { type: SF64:HITBOX, offset: 0x6030C60, symbol: D_AQ_6030C60 } +aAqCoralReef1Hitbox: + { type: SF64:HITBOX, offset: 0x6030C60, symbol: aAqCoralReef1Hitbox } -D_AQ_6030C7C: - { type: SF64:HITBOX, offset: 0x6030C7C, symbol: D_AQ_6030C7C } +aAqTunnel1Hitbox: + { type: SF64:HITBOX, offset: 0x6030C7C, symbol: aAqTunnel1Hitbox } -D_AQ_6030D20: - { type: SF64:HITBOX, offset: 0x6030D20, symbol: D_AQ_6030D20 } +aAqStoneColumnHitbox: + { type: SF64:HITBOX, offset: 0x6030D20, symbol: aAqStoneColumnHitbox } D_AQ_6030D3C: { type: SF64:HITBOX, offset: 0x6030D3C, symbol: D_AQ_6030D3C } @@ -701,65 +701,65 @@ D_AQ_6030D3C: D_AQ_6030D58: { type: SF64:HITBOX, offset: 0x6030D58, symbol: D_AQ_6030D58 } -D_AQ_6030D74: - { type: SF64:HITBOX, offset: 0x6030D74, symbol: D_AQ_6030D74 } +aAqArchHitbox: + { type: SF64:HITBOX, offset: 0x6030D74, symbol: aAqArchHitbox } -D_AQ_6030DF8: - { type: SF64:HITBOX, offset: 0x6030DF8, symbol: D_AQ_6030DF8 } +aAqCoralReef2Hitbox: + { type: SF64:HITBOX, offset: 0x6030DF8, symbol: aAqCoralReef2Hitbox } -D_AQ_6030E14: - { type: SF64:HITBOX, offset: 0x6030E14, symbol: D_AQ_6030E14 } +aAqRockHitbox: + { type: SF64:HITBOX, offset: 0x6030E14, symbol: aAqRockHitbox } -D_AQ_6030E30_Hitbox: - { type: SF64:HITBOX, offset: 0x6030E30, symbol: D_AQ_6030E30_Hitbox } +aAqWall1Hitbox: + { type: SF64:HITBOX, offset: 0x6030E30, symbol: aAqWall1Hitbox } -D_AQ_6030E4C: - { type: SF64:HITBOX, offset: 0x6030E4C, symbol: D_AQ_6030E4C } +aAqRoofHitbox: + { type: SF64:HITBOX, offset: 0x6030E4C, symbol: aAqRoofHitbox } -D_AQ_6030E68: - { type: SF64:HITBOX, offset: 0x6030E68, symbol: D_AQ_6030E68 } +aAqTunnel2Hitbox: + { type: SF64:HITBOX, offset: 0x6030E68, symbol: aAqTunnel2Hitbox } -D_AQ_6030F74: - { type: SF64:HITBOX, offset: 0x6030F74, symbol: D_AQ_6030F74 } +aAqBacoonHitbox: + { type: SF64:HITBOX, offset: 0x6030F74, symbol: aAqBacoonHitbox } -D_AQ_6031398: - { type: SF64:HITBOX, offset: 0x6031398, symbol: D_AQ_6031398 } +aAqAnglerFishHitbox: + { type: SF64:HITBOX, offset: 0x6031398, symbol: aAqAnglerFishHitbox } -D_AQ_60313CC: - { type: SF64:HITBOX, offset: 0x60313CC, symbol: D_AQ_60313CC } +aAqGaroaHitbox: + { type: SF64:HITBOX, offset: 0x60313CC, symbol: aAqGaroaHitbox } -D_AQ_6031400: - { type: SF64:HITBOX, offset: 0x6031400, symbol: D_AQ_6031400 } +aAqSculpinHitbox: + { type: SF64:HITBOX, offset: 0x6031400, symbol: aAqSculpinHitbox } -D_AQ_603144C: - { type: SF64:HITBOX, offset: 0x603144C, symbol: D_AQ_603144C } +aAqSpindlyFishHitbox: + { type: SF64:HITBOX, offset: 0x603144C, symbol: aAqSpindlyFishHitbox } -D_AQ_6031480: - { type: SF64:HITBOX, offset: 0x6031480, symbol: D_AQ_6031480 } +aAqSquidHitbox: + { type: SF64:HITBOX, offset: 0x6031480, symbol: aAqSquidHitbox } D_AQ_60314AC: { type: SF64:HITBOX, offset: 0x60314AC, symbol: D_AQ_60314AC } -D_AQ_60314C8: - { type: SF64:HITBOX, offset: 0x60314C8, symbol: D_AQ_60314C8 } +aAqOysterHitbox: + { type: SF64:HITBOX, offset: 0x60314C8, symbol: aAqOysterHitbox } D_AQ_60314E4: { type: SF64:HITBOX, offset: 0x60314E4, symbol: D_AQ_60314E4 } -D_AQ_6031500: - { type: SF64:HITBOX, offset: 0x6031500, symbol: D_AQ_6031500 } +aAqBoulderHitbox: + { type: SF64:HITBOX, offset: 0x6031500, symbol: aAqBoulderHitbox } D_AQ_603151C: { type: SF64:HITBOX, offset: 0x603151C, symbol: D_AQ_603151C } -D_AQ_6031538: - { type: SF64:HITBOX, offset: 0x6031538, symbol: D_AQ_6031538 } +aAqCoralHitbox: + { type: SF64:HITBOX, offset: 0x6031538, symbol: aAqCoralHitbox } -D_AQ_6031554: - { type: SF64:HITBOX, offset: 0x6031554, symbol: D_AQ_6031554 } +aAqJellyfishHitbox: + { type: SF64:HITBOX, offset: 0x6031554, symbol: aAqJellyfishHitbox } -D_AQ_6031570: - { type: SF64:HITBOX, offset: 0x6031570, symbol: D_AQ_6031570 } +aAqFishGroupHitbox: + { type: SF64:HITBOX, offset: 0x6031570, symbol: aAqFishGroupHitbox } D_AQ_603158C: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x603158C, symbol: D_AQ_603158C } diff --git a/assets/yaml/us/rev1/ast_area_6.yaml b/assets/yaml/us/rev1/ast_area_6.yaml index 100e6e03..e673f924 100644 --- a/assets/yaml/us/rev1/ast_area_6.yaml +++ b/assets/yaml/us/rev1/ast_area_6.yaml @@ -237,8 +237,8 @@ D_A6_6028254: D_A6_60282A0: { type: SF64:HITBOX, offset: 0x60282A0, symbol: D_A6_60282A0 } -D_A6_6028454: - { type: SF64:HITBOX, offset: 0x6028454, symbol: D_A6_6028454 } +aA6GorgonHitbox: + { type: SF64:HITBOX, offset: 0x6028454, symbol: aA6GorgonHitbox } D_A6_6028578: { type: SF64:HITBOX, offset: 0x6028578, symbol: D_A6_6028578 } diff --git a/assets/yaml/us/rev1/ast_arwing.yaml b/assets/yaml/us/rev1/ast_arwing.yaml index dcd135ab..06cc46b3 100644 --- a/assets/yaml/us/rev1/ast_arwing.yaml +++ b/assets/yaml/us/rev1/ast_arwing.yaml @@ -179,8 +179,8 @@ D_arwing_3018348: D_arwing_30183D0: { type: GFX, offset: 0x30183D0, symbol: D_arwing_30183D0 } -D_arwing_30184D8: - { type: TEXTURE, format: RGBA16, offset: 0x30184D8, width: 32, height: 32, ctype: u16, symbol: D_arwing_30184D8 } +aWindshieldClouldReflextionTex: + { type: TEXTURE, format: RGBA16, offset: 0x30184D8, width: 32, height: 32, ctype: u16, symbol: aWindshieldClouldReflextionTex } D_arwing_3018CD8: { type: TEXTURE, format: RGBA16, offset: 0x3018CD8, width: 64, height: 16, ctype: u16, symbol: D_arwing_3018CD8 } diff --git a/assets/yaml/us/rev1/ast_bolse.yaml b/assets/yaml/us/rev1/ast_bolse.yaml index 3dc404f8..ff8e45e5 100644 --- a/assets/yaml/us/rev1/ast_bolse.yaml +++ b/assets/yaml/us/rev1/ast_bolse.yaml @@ -115,8 +115,8 @@ D_BO_600AB90: D_BO_600AD80: { type: TEXTURE, format: RGBA16, offset: 0x0600AD80, width: 32, height: 32, ctype: u16, symbol: D_BO_600AD80 } -D_BO_600B8B0: - { type: GFX, offset: 0x600B8B0, symbol: D_BO_600B8B0 } +aBoBuildingDL: + { type: GFX, offset: 0x600B8B0, symbol: aBoBuildingDL } D_BO_600BAA0: { type: GFX, offset: 0x600BAA0, symbol: D_BO_600BAA0 } @@ -133,11 +133,11 @@ D_BO_600C0B8: D_BO_600C2D8: { type: TEXTURE, format: IA8, offset: 0x0600C2D8, width: 32, height: 16, ctype: u8, symbol: D_BO_600C2D8 } -D_BO_600C4E0: - { type: GFX, offset: 0x600C4E0, symbol: D_BO_600C4E0 } +aBoBaseShieldDL: + { type: GFX, offset: 0x600C4E0, symbol: aBoBaseShieldDL } -D_BO_600CF88: - { type: TEXTURE, format: RGBA16, offset: 0x0600CF88, width: 16, height: 16, ctype: u16, symbol: D_BO_600CF88 } +aBoBaseShieldTex: + { type: TEXTURE, format: RGBA16, offset: 0x0600CF88, width: 16, height: 16, ctype: u16, symbol: aBoBaseShieldTex } D_BO_600D190: { type: GFX, offset: 0x600D190, symbol: D_BO_600D190 } @@ -148,20 +148,20 @@ D_BO_600D2A0: D_BO_600E2A0: { type: TEXTURE, format: RGBA16, offset: 0x0600E2A0, width: 32, height: 64, ctype: u16, symbol: D_BO_600E2A0 } -D_BO_600F2E0: - { type: SF64:ANIM, offset: 0x600F2E0, symbol: D_BO_600F2E0 } +aBoLaserCannonAnim: + { type: SF64:ANIM, offset: 0x600F2E0, symbol: aBoLaserCannonAnim } -D_BO_600F36C: - { type: SF64:SKELETON, offset: 0x600F36C, symbol: D_BO_600F36C } +aBoLaserCannonSkel: + { type: SF64:SKELETON, offset: 0x600F36C, symbol: aBoLaserCannonSkel } -D_BO_600F3D8: - { type: SF64:ANIM, offset: 0x600F3D8, symbol: D_BO_600F3D8 } +aBoShieldReactorAnim: + { type: SF64:ANIM, offset: 0x600F3D8, symbol: aBoShieldReactorAnim } -D_BO_600F4A4: - { type: SF64:SKELETON, offset: 0x600F4A4, symbol: D_BO_600F4A4 } +aBoShieldReactorSkel: + { type: SF64:SKELETON, offset: 0x600F4A4, symbol: aBoShieldReactorSkel } -D_BO_600F4C0: - { type: GFX, offset: 0x600F4C0, symbol: D_BO_600F4C0 } +aBoPoleDL: + { type: GFX, offset: 0x600F4C0, symbol: aBoPoleDL } D_BO_600F728: { type: TEXTURE, format: RGBA16, offset: 0x0600F728, width: 32, height: 32, ctype: u16, symbol: D_BO_600F728 } @@ -178,23 +178,23 @@ D_BO_6010294: D_BO_6011B20: { type: SF64:HITBOX, offset: 0x6011B20, symbol: D_BO_6011B20 } -D_BO_6011B24: - { type: SF64:HITBOX, offset: 0x6011B24, symbol: D_BO_6011B24 } +aBoShieldReactorHitbox: + { type: SF64:HITBOX, offset: 0x6011B24, symbol: aBoShieldReactorHitbox } D_BO_6011BA4: { type: SF64:HITBOX, offset: 0x6011BA4, symbol: D_BO_6011BA4 } -D_BO_6011BF4: - { type: SF64:HITBOX, offset: 0x6011BF4, symbol: D_BO_6011BF4 } +aBoLaserCannonHitbox: + { type: SF64:HITBOX, offset: 0x6011BF4, symbol: aBoLaserCannonHitbox } -D_BO_6011C10: - { type: SF64:HITBOX, offset: 0x6011C10, symbol: D_BO_6011C10 } +aBoPoleHitbox: + { type: SF64:HITBOX, offset: 0x6011C10, symbol: aBoPoleHitbox } -D_BO_6011C48: - { type: SF64:HITBOX, offset: 0x6011C48, symbol: D_BO_6011C48 } +aBoBuildingHitbox: + { type: SF64:HITBOX, offset: 0x6011C48, symbol: aBoBuildingHitbox } -D_BO_6011C80: - { type: SF64:HITBOX, offset: 0x6011C80, symbol: D_BO_6011C80 } +aBoBaseCoreHitbox: + { type: SF64:HITBOX, offset: 0x6011C80, symbol: aBoBaseCoreHitbox } D_BO_6011E28: { type: VTX, count: 34, offset: 0x6011E28, symbol: D_BO_6011E28 } diff --git a/assets/yaml/us/rev1/ast_common.yaml b/assets/yaml/us/rev1/ast_common.yaml index 5717aba9..dbd1724d 100644 --- a/assets/yaml/us/rev1/ast_common.yaml +++ b/assets/yaml/us/rev1/ast_common.yaml @@ -695,11 +695,11 @@ D_101CBC0: D_101CCC0: { type: TEXTURE, format: TLUT, colors: 88, offset: 0x101CCC0, ctype: u16, symbol: D_101CCC0 } -D_101CD70: - { type: GFX, offset: 0x101CD70, symbol: D_101CD70 } +aUnusedShieldDL: + { type: GFX, offset: 0x101CD70, symbol: aUnusedShieldDL } -D_101D070: - { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x101D070, symbol: D_101D070 } +aUnusedShieldTex: + { type: TEXTURE, format: RGBA16, width: 32, height: 32, ctype: u16, offset: 0x101D070, symbol: aUnusedShieldTex } D_101D870: { type: GFX, offset: 0x101D870, symbol: D_101D870 } @@ -710,8 +710,8 @@ ast_common_seg1_vtx_1D9C8: D_101DE20: { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x101DE20, symbol: D_101DE20 } -D_101DC10: - { type: GFX, offset: 0x101DC10, symbol: D_101DC10 } +aBarrelRollTex: + { type: GFX, offset: 0x101DC10, symbol: aBarrelRollTex } D_101EE20: { type: TEXTURE, format: IA8, width: 128, height: 32, ctype: u8, offset: 0x101EE20, symbol: D_101EE20 } @@ -806,32 +806,32 @@ D_1024230: D_1024290: { type: GFX, offset: 0x1024290, symbol: D_1024290 } -D_1024410: - { type: GFX, offset: 0x1024410, symbol: D_1024410 } +aPeppyMarkDL: + { type: GFX, offset: 0x1024410, symbol: aPeppyMarkDL } -D_10244D8: - { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10244D8, tlut: 0x1024558, symbol: D_10244D8 } +aPeppyMarkTex: + { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x10244D8, tlut: 0x1024558, symbol: aPeppyMarkTex } -D_1024558: - { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024558, ctype: u16, symbol: D_1024558 } +aPeppyMarkTLUT: + { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024558, ctype: u16, symbol: aPeppyMarkTLUT } -D_1024570: - { type: GFX, offset: 0x1024570, symbol: D_1024570 } +aFalcoMarkDL: + { type: GFX, offset: 0x1024570, symbol: aFalcoMarkDL } -D_1024638: - { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024638, tlut: 0x10246B8, symbol: D_1024638 } +aFalcoMarkTex: + { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024638, tlut: 0x10246B8, symbol: aFalcoMarkTex } -D_10246B8: - { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10246B8, ctype: u16, symbol: D_10246B8 } +aFalcoMarkTLUT: + { type: TEXTURE, format: TLUT, colors: 12, offset: 0x10246B8, ctype: u16, symbol: aFalcoMarkTLUT } -D_10246D0: - { type: GFX, offset: 0x10246D0, symbol: D_10246D0 } +aSlippyMarkDL: + { type: GFX, offset: 0x10246D0, symbol: aSlippyMarkDL } -D_1024798: - { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024798, tlut: 0x1024818, symbol: D_1024798 } +aSlippyMarkTex: + { type: TEXTURE, format: CI4, width: 16, height: 16, ctype: u8, offset: 0x1024798, tlut: 0x1024818, symbol: aSlippyMarkTex } -D_1024818: - { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024818, ctype: u16, symbol: D_1024818 } +aSlippyMarkTLUT: + { type: TEXTURE, format: TLUT, colors: 12, offset: 0x1024818, ctype: u16, symbol: aSlippyMarkTLUT } D_1024830: { type: GFX, offset: 0x1024830, symbol: D_1024830 } diff --git a/assets/yaml/us/rev1/ast_corneria.yaml b/assets/yaml/us/rev1/ast_corneria.yaml index 15f83392..96933be6 100644 --- a/assets/yaml/us/rev1/ast_corneria.yaml +++ b/assets/yaml/us/rev1/ast_corneria.yaml @@ -303,20 +303,20 @@ D_CO_602AA7C: aCoDoorsSkel: { type: SF64:SKELETON, offset: 0x602AB48, symbol: aCoDoorsSkel } -D_CO_602BC18: - { type: SF64:ANIM, offset: 0x602BC18, symbol: D_CO_602BC18 } +aCoGrangaWalkingAnim: + { type: SF64:ANIM, offset: 0x602BC18, symbol: aCoGrangaWalkingAnim } D_CO_602BE64: { type: SF64:SKELETON, offset: 0x602BE64, symbol: D_CO_602BE64 } -D_CO_602C0D0: - { type: SF64:ANIM, offset: 0x602C0D0, symbol: D_CO_602C0D0 } +aCoGrangaStationaryAnim: + { type: SF64:ANIM, offset: 0x602C0D0, symbol: aCoGrangaStationaryAnim } D_CO_602D31C: { type: SF64:ANIM, offset: 0x602D31C, symbol: D_CO_602D31C } -D_CO_602D400: - { type: SF64:ANIM, offset: 0x602D400, symbol: D_CO_602D400 } +aCoCarrierAnim: + { type: SF64:ANIM, offset: 0x602D400, symbol: aCoCarrierAnim } aCoCarrierSkel: { type: SF64:SKELETON, offset: 0x602D5AC, symbol: aCoCarrierSkel } @@ -522,14 +522,14 @@ aCoBuilding10Hitbox: aCoIBeamHitbox: { type: SF64:HITBOX, offset: 0x603E514, symbol: aCoIBeamHitbox } -D_CO_603E54C: - { type: SF64:HITBOX, offset: 0x603E54C, symbol: D_CO_603E54C } +aCoActorSkibotHitbox: + { type: SF64:HITBOX, offset: 0x603E54C, symbol: aCoActorSkibotHitbox } -D_CO_603E598: - { type: SF64:HITBOX, offset: 0x603E598, symbol: D_CO_603E598 } +aCoActorRadarHitbox: + { type: SF64:HITBOX, offset: 0x603E598, symbol: aCoActorRadarHitbox } -D_CO_603E5B4: - { type: SF64:HITBOX, offset: 0x603E5B4, symbol: D_CO_603E5B4 } +aCoMoleMissileHitbox: + { type: SF64:HITBOX, offset: 0x603E5B4, symbol: aCoMoleMissileHitbox } CoGarudaHitbox: { type: SF64:HITBOX, offset: 0x603E5D0, symbol: CoGarudaHitbox } @@ -540,14 +540,14 @@ aCoGarudaDestroyHitbox: aCoGrangaHitbox: { type: SF64:HITBOX, offset: 0x603E620, symbol: aCoGrangaHitbox } -D_CO_603E714: - { type: SF64:HITBOX, offset: 0x603E714, symbol: D_CO_603E714 } +aCoCarrierLeftHitbox: + { type: SF64:HITBOX, offset: 0x603E714, symbol: aCoCarrierLeftHitbox } -D_CO_603E748: - { type: SF64:HITBOX, offset: 0x603E748, symbol: D_CO_603E748 } +aCoCarrierUpperHitbox: + { type: SF64:HITBOX, offset: 0x603E748, symbol: aCoCarrierUpperHitbox } -D_CO_603E7C4: - { type: SF64:HITBOX, offset: 0x603E7C4, symbol: D_CO_603E7C4 } +aCoCarrierBottomHitbox: + { type: SF64:HITBOX, offset: 0x603E7C4, symbol: aCoCarrierBottomHitbox } aCoCarrierHitbox: { type: SF64:HITBOX, offset: 0x603E840, symbol: aCoCarrierHitbox } diff --git a/assets/yaml/us/rev1/ast_fortuna.yaml b/assets/yaml/us/rev1/ast_fortuna.yaml index 4fafae5e..46466a80 100644 --- a/assets/yaml/us/rev1/ast_fortuna.yaml +++ b/assets/yaml/us/rev1/ast_fortuna.yaml @@ -62,11 +62,11 @@ D_FO_6006120: D_FO_6006220: { type: TEXTURE, format: TLUT, colors: 120, offset: 0x6006220, ctype: u16, symbol: D_FO_6006220 } -D_FO_6006310: - { type: GFX, offset: 0x6006310, symbol: D_FO_6006310 } +aFoMountain3DL: + { type: GFX, offset: 0x6006310, symbol: aFoMountain3DL } -D_FO_60066E0: - { type: GFX, offset: 0x60066E0, symbol: D_FO_60066E0 } +aFoTowerDL: + { type: GFX, offset: 0x60066E0, symbol: aFoTowerDL } ast_fortuna_seg6_vtx_6898: { type: VTX, count: 52, offset: 0x6006898, symbol: ast_fortuna_seg6_vtx_6898 } @@ -92,17 +92,17 @@ D_FO_6007590: D_FO_6007730: { type: GFX, offset: 0x6007730, symbol: D_FO_6007730 } -D_FO_6007854: - { type: SF64:ANIM, offset: 0x6007854, symbol: D_FO_6007854 } +aFoRadarAnim: + { type: SF64:ANIM, offset: 0x6007854, symbol: aFoRadarAnim } -D_FO_6007980: - { type: SF64:SKELETON, offset: 0x6007980, symbol: D_FO_6007980 } +aFoRadarSkel: + { type: SF64:SKELETON, offset: 0x6007980, symbol: aFoRadarSkel } -D_FO_60079B0: - { type: GFX, offset: 0x60079B0, symbol: D_FO_60079B0 } +aFoMountain1DL: + { type: GFX, offset: 0x60079B0, symbol: aFoMountain1DL } -D_FO_6007D80: - { type: GFX, offset: 0x6007D80, symbol: D_FO_6007D80 } +aFoMountain2DL: + { type: GFX, offset: 0x6007D80, symbol: aFoMountain2DL } D_FO_6008150: { type: TEXTURE, format: RGBA16, width: 44, height: 44, offset: 0x6008150, ctype: u16, symbol: D_FO_6008150 } @@ -161,8 +161,8 @@ D_FO_600F60C: aFoPoleHitbox: { type: SF64:HITBOX, offset: 0x600FE9C, symbol: aFoPoleHitbox } -D_FO_600FEB8: - { type: SF64:HITBOX, offset: 0x600FEB8, symbol: D_FO_600FEB8 } +aFoTowerHitbox: + { type: SF64:HITBOX, offset: 0x600FEB8, symbol: aFoTowerHitbox } aFoRadarHitbox: { type: SF64:HITBOX, offset: 0x600FF30, symbol: aFoRadarHitbox } @@ -170,14 +170,14 @@ aFoRadarHitbox: D_FO_600FF64: { type: SF64:HITBOX, offset: 0x600FF64, symbol: D_FO_600FF64 } -D_FO_600FF80: - { type: SF64:HITBOX, offset: 0x600FF80, symbol: D_FO_600FF80 } +aFoMountain1Hitbox: + { type: SF64:HITBOX, offset: 0x600FF80, symbol: aFoMountain1Hitbox } -D_FO_600FFA0: - { type: SF64:HITBOX, offset: 0x600FFA0, symbol: D_FO_600FFA0 } +aFoMountain2Hitbox: + { type: SF64:HITBOX, offset: 0x600FFA0, symbol: aFoMountain2Hitbox } -D_FO_600FFC0: - { type: SF64:HITBOX, offset: 0x600FFC0, symbol: D_FO_600FFC0 } +aFoMountain3Hitbox: + { type: SF64:HITBOX, offset: 0x600FFC0, symbol: aFoMountain3Hitbox } -D_FO_600FFE0: - { type: SF64:HITBOX, offset: 0x600FFE0, symbol: D_FO_600FFE0 } \ No newline at end of file +aFoBaseHitbox: + { type: SF64:HITBOX, offset: 0x600FFE0, symbol: aFoBaseHitbox } \ No newline at end of file diff --git a/assets/yaml/us/rev1/ast_katina.yaml b/assets/yaml/us/rev1/ast_katina.yaml index 09fe56ed..6198381e 100644 --- a/assets/yaml/us/rev1/ast_katina.yaml +++ b/assets/yaml/us/rev1/ast_katina.yaml @@ -57,8 +57,8 @@ D_KA_60062F8: D_KA_6006AF8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6006AF8, ctype: u16, symbol: D_KA_6006AF8 } -aKaDestroyedSaucererDL: - { type: GFX, offset: 0x6007300, symbol: aKaDestroyedSaucererDL } +aKaDestroyedKaSaucererDL: + { type: GFX, offset: 0x6007300, symbol: aKaDestroyedKaSaucererDL } D_KA_6009250: { type: GFX, offset: 0x6009250, symbol: D_KA_6009250 } @@ -169,11 +169,11 @@ D_KA_6011000: D_KA_6011044: { type: SF64:OBJECT_INIT, offset: 0x6011044, symbol: D_KA_6011044 } -D_KA_6011058: - { type: SF64:HITBOX, offset: 0x6011058, symbol: D_KA_6011058 } +aKaSaucererHitbox: + { type: SF64:HITBOX, offset: 0x6011058, symbol: aKaSaucererHitbox } -D_KA_601115C: - { type: SF64:HITBOX, offset: 0x601115C, symbol: D_KA_601115C } +aKaFrontlineBaseHitbox: + { type: SF64:HITBOX, offset: 0x601115C, symbol: aKaFrontlineBaseHitbox } D_KA_60111D8: { type: SF64:HITBOX, offset: 0x60111D8, symbol: D_KA_60111D8 } \ No newline at end of file diff --git a/assets/yaml/us/rev1/ast_landmaster.yaml b/assets/yaml/us/rev1/ast_landmaster.yaml index ff5ebaa7..3269c031 100644 --- a/assets/yaml/us/rev1/ast_landmaster.yaml +++ b/assets/yaml/us/rev1/ast_landmaster.yaml @@ -14,8 +14,8 @@ D_landmaster_3000000: D_landmaster_3000080: { type: TEXTURE, format: TLUT, offset: 0x3000080, colors: 8, ctype: u16, symbol: D_landmaster_3000080 } -D_landmaster_3000090: - { type: GFX, offset: 0x3000090, symbol: D_landmaster_3000090 } +aLandmasterModelDL: + { type: GFX, offset: 0x3000090, symbol: aLandmasterModelDL } D_landmaster_3004CA8: { type: TEXTURE, format: RGBA16, offset: 0x3004CA8, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3004CA8 } @@ -44,8 +44,8 @@ D_landmaster_3001680: D_landmaster_3001E80: { type: TEXTURE, format: RGBA16, offset: 0x3001E80, width: 32, height: 32, ctype: u16, symbol: D_landmaster_3001E80 } -D_landmaster_3004680: - { type: GFX, offset: 0x3004680, symbol: D_landmaster_3004680 } +aLandmasterCanonDL: + { type: GFX, offset: 0x3004680, symbol: aLandmasterCanonDL } D_landmaster_30066B0: { type: GFX, offset: 0x30066B0, symbol: D_landmaster_30066B0 } diff --git a/assets/yaml/us/rev1/ast_macbeth.yaml b/assets/yaml/us/rev1/ast_macbeth.yaml index 20650095..fe1c9de1 100644 --- a/assets/yaml/us/rev1/ast_macbeth.yaml +++ b/assets/yaml/us/rev1/ast_macbeth.yaml @@ -163,8 +163,8 @@ D_MA_6007430: D_MA_6007500: {type: GFX, offset: 0x6007500, symbol: D_MA_6007500} -D_MA_60075D0: - {type: GFX, offset: 0x60075D0, symbol: D_MA_60075D0} +aMaWeaponsFactoryDL: + {type: GFX, offset: 0x60075D0, symbol: aMaWeaponsFactoryDL} D_MA_60092E0: { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x60092E0, symbol: D_MA_60092E0} @@ -238,8 +238,8 @@ D_MA_600AE18: D_MA_600AE98: { type: TEXTURE, format: TLUT, ctype: u16, colors: 80, offset: 0x600AE98, symbol: D_MA_600AE98} -D_MA_600AF40: - {type: GFX, offset: 0x600AF40, symbol: D_MA_600AF40} +aMaGuillotineDL: + {type: GFX, offset: 0x600AF40, symbol: aMaGuillotineDL} D_MA_600B2E0: { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 64, offset: 0x600B2E0, symbol: D_MA_600B2E0} @@ -265,8 +265,8 @@ D_MA_600D1E4: D_MA_600D280: { type: TEXTURE, format: IA16, ctype: u16, width: 16, height: 16, offset: 0x600D280, symbol: D_MA_600D280} -D_MA_600D480: - {type: GFX, offset: 0x600D480, symbol: D_MA_600D480} +aMaSpearDL: + {type: GFX, offset: 0x600D480, symbol: aMaSpearDL} D_MA_600D878: { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x600D878, symbol: D_MA_600D878, tlut: 0x600D978} @@ -361,8 +361,8 @@ D_MA_6012C00: D_MA_6012C98: { type: TEXTURE, format: RGBA16, ctype: u16, width: 4, height: 8, offset: 0x6012C98, symbol: D_MA_6012C98} -D_MA_6012F50: - {type: GFX, offset: 0x6012F50, symbol: D_MA_6012F50} +aMaShockBoxLightDL: + {type: GFX, offset: 0x6012F50, symbol: aMaShockBoxLightDL} D_MA_6012FE0: { type: TEXTURE, format: IA8, ctype: u8, width: 16, height: 8, offset: 0x6012FE0, symbol: D_MA_6012FE0} @@ -391,8 +391,8 @@ D_MA_6015494: D_MA_6015500: {type: SF64:SKELETON, offset: 0x6015500, symbol: D_MA_6015500} -D_MA_6015510: - {type: GFX, offset: 0x6015510, symbol: D_MA_6015510} +aMaShockBoxDL: + {type: GFX, offset: 0x6015510, symbol: aMaShockBoxDL} D_MA_6015C24: {type: SF64:ANIM, offset: 0x6015C24, symbol: D_MA_6015C24} @@ -451,11 +451,11 @@ D_MA_601A840: D_MA_601A8C8: { type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x601A8C8, symbol: D_MA_601A8C8} -D_MA_601B0D0: - {type: GFX, offset: 0x601B0D0, symbol: D_MA_601B0D0} +aMaFloor6DL: + {type: GFX, offset: 0x601B0D0, symbol: aMaFloor6DL} -D_MA_601B7C0: - {type: GFX, offset: 0x601B7C0, symbol: D_MA_601B7C0} +aMaWall4DL: + {type: GFX, offset: 0x601B7C0, symbol: aMaWall4DL} D_MA_601BB78: { type: TEXTURE, format: CI8, ctype: u8, width: 16, height: 16, offset: 0x601BB78, symbol: D_MA_601BB78, tlut: 0x601BC78} @@ -493,8 +493,8 @@ D_MA_601EAB0: D_MA_601EBBC: {type: SF64:SKELETON, offset: 0x601EBBC, symbol: D_MA_601EBBC} -D_MA_601F1D0: - {type: GFX, offset: 0x601F1D0, symbol: D_MA_601F1D0} +aMaWall2DL: + {type: GFX, offset: 0x601F1D0, symbol: aMaWall2DL} D_MA_601F270: {type: GFX, offset: 0x601F270, symbol: D_MA_601F270} @@ -550,14 +550,14 @@ D_MA_6023388: D_MA_6023788: { type: TEXTURE, format: TLUT, ctype: u16, colors: 176, offset: 0x6023788, symbol: D_MA_6023788} -D_MA_60238F0: - {type: GFX, offset: 0x60238F0, symbol: D_MA_60238F0} +aMaWall3DL: + {type: GFX, offset: 0x60238F0, symbol: aMaWall3DL} D_MA_60239D0: {type: GFX, offset: 0x60239D0, symbol: D_MA_60239D0} -D_MA_6024010: - {type: GFX, offset: 0x6024010, symbol: D_MA_6024010} +aMaBuilding1DL: + {type: GFX, offset: 0x6024010, symbol: aMaBuilding1DL} D_MA_6024230: { type: TEXTURE, format: CI8, ctype: u8, width: 32, height: 32, offset: 0x6024230, symbol: D_MA_6024230, tlut: 0x6024630} @@ -568,17 +568,17 @@ D_MA_6024630: D_MA_6024670: {type: GFX, offset: 0x6024670, symbol: D_MA_6024670} -D_MA_60251A0: - {type: GFX, offset: 0x60251A0, symbol: D_MA_60251A0} +aMaHorizontalLockBarDL: + {type: GFX, offset: 0x60251A0, symbol: aMaHorizontalLockBarDL} D_MA_60253E0: {type: GFX, offset: 0x60253E0, symbol: D_MA_60253E0} -D_MA_60257B0: - {type: GFX, offset: 0x60257B0, symbol: D_MA_60257B0} +aMaBarrierDL: + {type: GFX, offset: 0x60257B0, symbol: aMaBarrierDL} -D_MA_6025850: - {type: GFX, offset: 0x6025850, symbol: D_MA_6025850} +aMaVerticalLockBarDL: + {type: GFX, offset: 0x6025850, symbol: aMaVerticalLockBarDL} D_MA_6025A70: {type: GFX, offset: 0x6025A70, symbol: D_MA_6025A70} @@ -604,11 +604,11 @@ D_MA_6026C00: D_MA_6027000: { type: TEXTURE, format: TLUT, ctype: u16, colors: 112, offset: 0x6027000, symbol: D_MA_6027000} -D_MA_60270E0: - {type: GFX, offset: 0x60270E0, symbol: D_MA_60270E0} +aMaWall1DL: + {type: GFX, offset: 0x60270E0, symbol: aMaWall1DL} -D_MA_6027180: - { type: GFX, offset: 0x6027180, symbol: D_MA_6027180} +aMaBuilding2DL: + { type: GFX, offset: 0x6027180, symbol: aMaBuilding2DL} D_MA_6027320: {type: SF64:ANIM, offset: 0x6027320, symbol: D_MA_6027320} @@ -616,8 +616,8 @@ D_MA_6027320: D_MA_602742C: {type: SF64:SKELETON, offset: 0x602742C, symbol: D_MA_602742C} -D_MA_6027900: - {type: GFX, offset: 0x6027900, symbol: D_MA_6027900} +aMaFloor2DL: + {type: GFX, offset: 0x6027900, symbol: aMaFloor2DL} D_MA_6027A04: {type: SF64:ANIM, offset: 0x6027A04, symbol: D_MA_6027A04} @@ -658,14 +658,14 @@ D_MA_602CB80: D_MA_602D380: {type: GFX, offset: 0x602D380, symbol: D_MA_602D380} -D_MA_602DAE0: - {type: GFX, offset: 0x602DAE0, symbol: D_MA_602DAE0} +aMaFloor1DL: + {type: GFX, offset: 0x602DAE0, symbol: aMaFloor1DL} -D_MA_602DB80: - {type: GFX, offset: 0x602DB80, symbol: D_MA_602DB80} +aMaFloor3DL: + {type: GFX, offset: 0x602DB80, symbol: aMaFloor3DL} -D_MA_602DC20: - {type: GFX, offset: 0x602DC20, symbol: D_MA_602DC20} +aMaFloor5DL: + {type: GFX, offset: 0x602DC20, symbol: aMaFloor5DL} D_MA_602DCB8: {type: TEXTURE, format: RGBA16, ctype: u16, width: 32, height: 32, offset: 0x602DCB8, symbol: D_MA_602DCB8} @@ -703,11 +703,11 @@ D_MA_602FFA0: D_MA_602FFC0: {type: GFX, offset: 0x602FFC0, symbol: D_MA_602FFC0} -D_MA_6030500: - {type: GFX, offset: 0x6030500, symbol: D_MA_6030500} +aMaTerrainBumpDL: + {type: GFX, offset: 0x6030500, symbol: aMaTerrainBumpDL} -D_MA_6030630: - {type: GFX, offset: 0x6030630, symbol: D_MA_6030630} +aMaFloor4DL: + {type: GFX, offset: 0x6030630, symbol: aMaFloor4DL} D_MA_60306D0: {type: GFX, offset: 0x60306D0, symbol: D_MA_60306D0} @@ -757,20 +757,20 @@ D_MA_6035920: D_MA_60359AC: {type: SF64:HITBOX, offset: 0x60359AC, symbol: D_MA_60359AC} -D_MA_60359C8: - {type: SF64:HITBOX, offset: 0x60359C8, symbol: D_MA_60359C8} +aMaLocomotiveHitbox: + {type: SF64:HITBOX, offset: 0x60359C8, symbol: aMaLocomotiveHitbox} -D_MA_6035A14: - {type: SF64:HITBOX, offset: 0x6035A14, symbol: D_MA_6035A14} +aMaTrainCar2Hitbox: + {type: SF64:HITBOX, offset: 0x6035A14, symbol: aMaTrainCar2Hitbox} -D_MA_6035A48: - {type: SF64:HITBOX, offset: 0x6035A48, symbol: D_MA_6035A48} +aMaTrainCar1Hitbox: + {type: SF64:HITBOX, offset: 0x6035A48, symbol: aMaTrainCar1Hitbox} D_MA_6035A94: {type: SF64:HITBOX, offset: 0x6035A94, symbol: D_MA_6035A94} -D_MA_6035AE0: - {type: SF64:HITBOX, offset: 0x6035AE0, symbol: D_MA_6035AE0} +aMaTrainCar3Hitbox: + {type: SF64:HITBOX, offset: 0x6035AE0, symbol: aMaTrainCar3Hitbox} D_MA_6035B44: {type: SF64:HITBOX, offset: 0x6035B44, symbol: D_MA_6035B44} @@ -790,14 +790,14 @@ D_MA_6035CD4: D_MA_6035D38: {type: SF64:HITBOX, offset: 0x6035D38, symbol: D_MA_6035D38} -D_MA_6035D9C: - {type: SF64:HITBOX, offset: 0x6035D9C, symbol: D_MA_6035D9C} +aMaTrainCar4Hitbox: + {type: SF64:HITBOX, offset: 0x6035D9C, symbol: aMaTrainCar4Hitbox} D_MA_6035DD0: {type: SF64:HITBOX, offset: 0x6035DD0, symbol: D_MA_6035DD0} -D_MA_6035E04: - {type: SF64:HITBOX, offset: 0x6035E04, symbol: D_MA_6035E04} +aMaTrainCar5Hitbox: + {type: SF64:HITBOX, offset: 0x6035E04, symbol: aMaTrainCar5Hitbox} D_MA_6035E68: {type: SF64:HITBOX, offset: 0x6035E68, symbol: D_MA_6035E68} @@ -817,101 +817,101 @@ D_MA_6035FF8: D_MA_603605C: {type: SF64:HITBOX, offset: 0x603605C, symbol: D_MA_603605C} -D_MA_60360C0: - {type: SF64:HITBOX, offset: 0x60360C0, symbol: D_MA_60360C0} +aMaTrainCar6Hitbox: + {type: SF64:HITBOX, offset: 0x60360C0, symbol: aMaTrainCar6Hitbox} -D_MA_6036154: - {type: SF64:HITBOX, offset: 0x6036154, symbol: D_MA_6036154} +aMaTrainCar7Hitbox: + {type: SF64:HITBOX, offset: 0x6036154, symbol: aMaTrainCar7Hitbox} D_MA_6036188: {type: SF64:HITBOX, offset: 0x6036188, symbol: D_MA_6036188} -D_MA_6036204: - {type: SF64:HITBOX, offset: 0x6036204, symbol: D_MA_6036204} +aMaTrainTrack13Hitbox: + {type: SF64:HITBOX, offset: 0x6036204, symbol: aMaTrainTrack13Hitbox} D_MA_6036250: {type: SF64:HITBOX, offset: 0x6036250, symbol: D_MA_6036250} -D_MA_603626C: - {type: SF64:HITBOX, offset: 0x603626C, symbol: D_MA_603626C} +aMaBuilding1Hitbox: + {type: SF64:HITBOX, offset: 0x603626C, symbol: aMaBuilding1Hitbox} -D_MA_6036288: - {type: SF64:HITBOX, offset: 0x6036288, symbol: D_MA_6036288} +aMaBuilding2Hitbox: + {type: SF64:HITBOX, offset: 0x6036288, symbol: aMaBuilding2Hitbox} -D_MA_60362A4: - {type: SF64:HITBOX, offset: 0x60362A4, symbol: D_MA_60362A4} +aMaTowerHitbox: + {type: SF64:HITBOX, offset: 0x60362A4, symbol: aMaTowerHitbox} -D_MA_60362D8: - {type: SF64:HITBOX, offset: 0x60362D8, symbol: D_MA_60362D8} +aMaWall2Hitbox: + {type: SF64:HITBOX, offset: 0x60362D8, symbol: aMaWall2Hitbox} -D_MA_60362F4: - {type: SF64:HITBOX, offset: 0x60362F4, symbol: D_MA_60362F4} +aMaWall4Hitbox: + {type: SF64:HITBOX, offset: 0x60362F4, symbol: aMaWall4Hitbox} -D_MA_6036328: - {type: SF64:HITBOX, offset: 0x6036328, symbol: D_MA_6036328} +aMaWall3Hitbox: + {type: SF64:HITBOX, offset: 0x6036328, symbol: aMaWall3Hitbox} -D_MA_6036344: - {type: SF64:HITBOX, offset: 0x6036344, symbol: D_MA_6036344} +aMaIndicatorSignHitbox: + {type: SF64:HITBOX, offset: 0x6036344, symbol: aMaIndicatorSignHitbox} -D_MA_6036370: - {type: SF64:HITBOX, offset: 0x6036370, symbol: D_MA_6036370} +aMaTerrainBumpHitbox: + {type: SF64:HITBOX, offset: 0x6036370, symbol: aMaTerrainBumpHitbox} -D_MA_603638C: - {type: SF64:HITBOX, offset: 0x603638C, symbol: D_MA_603638C} +aMaFloor1Hitbox: + {type: SF64:HITBOX, offset: 0x603638C, symbol: aMaFloor1Hitbox} -D_MA_60363B8: - {type: SF64:HITBOX, offset: 0x60363B8, symbol: D_MA_60363B8} +aMaFloor2Hitbox: + {type: SF64:HITBOX, offset: 0x60363B8, symbol: aMaFloor2Hitbox} -D_MA_60363E4: - {type: SF64:HITBOX, offset: 0x60363E4, symbol: D_MA_60363E4} +aMaFloor3Hitbox: + {type: SF64:HITBOX, offset: 0x60363E4, symbol: aMaFloor3Hitbox} -D_MA_6036410: - {type: SF64:HITBOX, offset: 0x6036410, symbol: D_MA_6036410} +aMaFloor4Hitbox: + {type: SF64:HITBOX, offset: 0x6036410, symbol: aMaFloor4Hitbox} -D_MA_603643C: - {type: SF64:HITBOX, offset: 0x603643C, symbol: D_MA_603643C} +aMaFloor5Hitbox: + {type: SF64:HITBOX, offset: 0x603643C, symbol: aMaFloor5Hitbox} -D_MA_6036458: - {type: SF64:HITBOX, offset: 0x6036458, symbol: D_MA_6036458} +aMaMaRailroadSwitchHitbox: + {type: SF64:HITBOX, offset: 0x6036458, symbol: aMaMaRailroadSwitchHitbox} D_MA_603648C: {type: SF64:HITBOX, offset: 0x603648C, symbol: D_MA_603648C} -D_MA_60364C0: - {type: SF64:HITBOX, offset: 0x60364C0, symbol: D_MA_60364C0} +aMaBoulderHitbox: + {type: SF64:HITBOX, offset: 0x60364C0, symbol: aMaBoulderHitbox} -D_MA_60364DC: - {type: SF64:HITBOX, offset: 0x60364DC, symbol: D_MA_60364DC} +aMaRailwaySignalHitbox: + {type: SF64:HITBOX, offset: 0x60364DC, symbol: aMaRailwaySignalHitbox} D_MA_6036520: {type: SF64:HITBOX, offset: 0x6036520, symbol: D_MA_6036520} -D_MA_6036594: - {type: SF64:HITBOX, offset: 0x6036594, symbol: D_MA_6036594} +aMaSwitchTrackHitbox: + {type: SF64:HITBOX, offset: 0x6036594, symbol: aMaSwitchTrackHitbox} D_MA_6036668: {type: SF64:HITBOX, offset: 0x6036668, symbol: D_MA_6036668} -D_MA_60366EC: - {type: SF64:HITBOX, offset: 0x60366EC, symbol: D_MA_60366EC} +aMaHorizontalLockBarHitbox: + {type: SF64:HITBOX, offset: 0x60366EC, symbol: aMaHorizontalLockBarHitbox} -D_MA_6036708: - {type: SF64:HITBOX, offset: 0x6036708, symbol: D_MA_6036708} +aMaVerticalLockBarHitbox: + {type: SF64:HITBOX, offset: 0x6036708, symbol: aMaVerticalLockBarHitbox} -D_MA_6036724: - {type: SF64:HITBOX, offset: 0x6036724, symbol: D_MA_6036724} +aMaProximityLightHitbox: + {type: SF64:HITBOX, offset: 0x6036724, symbol: aMaProximityLightHitbox} -D_MA_6036728: - {type: SF64:HITBOX, offset: 0x6036728, symbol: D_MA_6036728} +aMaBarrierHitbox: + {type: SF64:HITBOX, offset: 0x6036728, symbol: aMaBarrierHitbox} -D_MA_6036744: - {type: SF64:HITBOX, offset: 0x6036744, symbol: D_MA_6036744} +aMaActor219Hitbox: + {type: SF64:HITBOX, offset: 0x6036744, symbol: aMaActor219Hitbox} -D_MA_6036760: - {type: SF64:HITBOX, offset: 0x6036760, symbol: D_MA_6036760} +aMaFloor6Hitbox: + {type: SF64:HITBOX, offset: 0x6036760, symbol: aMaFloor6Hitbox} -D_MA_603677C: - {type: SF64:HITBOX, offset: 0x603677C, symbol: D_MA_603677C} +aMaActor207Hitbox: + {type: SF64:HITBOX, offset: 0x603677C, symbol: aMaActor207Hitbox} D_MA_6036818: {type: SF64:HITBOX, offset: 0x6036818, symbol: D_MA_6036818} @@ -919,20 +919,20 @@ D_MA_6036818: D_MA_6036894: {type: SF64:HITBOX, offset: 0x6036894, symbol: D_MA_6036894} -D_MA_60368E0: - {type: SF64:HITBOX, offset: 0x60368E0, symbol: D_MA_60368E0} +aMaGuillotineHitbox: + {type: SF64:HITBOX, offset: 0x60368E0, symbol: aMaGuillotineHitbox} D_MA_60368FC: {type: SF64:HITBOX, offset: 0x60368FC, symbol: D_MA_60368FC} -D_MA_6036930: - {type: SF64:HITBOX, offset: 0x6036930, symbol: D_MA_6036930} +aMaBombDropHitbox: + {type: SF64:HITBOX, offset: 0x6036930, symbol: aMaBombDropHitbox} -D_MA_603694C: - {type: SF64:HITBOX, offset: 0x603694C, symbol: D_MA_603694C} +aMaSpearHitbox: + {type: SF64:HITBOX, offset: 0x603694C, symbol: aMaSpearHitbox} -D_MA_6036968: - {type: SF64:HITBOX, offset: 0x6036968, symbol: D_MA_6036968} +aMaShockBoxHitbox: + {type: SF64:HITBOX, offset: 0x6036968, symbol: aMaShockBoxHitbox} D_MA_60381D8: {type: SF64:SCRIPT, offset: 0x60381D8, symbol: D_MA_60381D8} diff --git a/assets/yaml/us/rev1/ast_meteo.yaml b/assets/yaml/us/rev1/ast_meteo.yaml index 16a3ac8b..26757edd 100644 --- a/assets/yaml/us/rev1/ast_meteo.yaml +++ b/assets/yaml/us/rev1/ast_meteo.yaml @@ -104,8 +104,8 @@ D_ME_600C740: D_ME_600CAA0: { type: GFX, offset: 0x600CAA0, symbol: D_ME_600CAA0 } -D_ME_600CD60: - { type: GFX, offset: 0x600CD60, symbol: D_ME_600CD60 } +aMeMeteorShower3DL: + { type: GFX, offset: 0x600CD60, symbol: aMeMeteorShower3DL } D_ME_600CDE8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0600CDE8, symbol: D_ME_600CDE8 } @@ -137,8 +137,8 @@ D_ME_6014238: D_ME_6015238: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x06015238, symbol: D_ME_6015238 } -D_ME_6016240: - { type: GFX, offset: 0x6016240, symbol: D_ME_6016240 } +aMeMeteorShower2DL: + { type: GFX, offset: 0x6016240, symbol: aMeMeteorShower2DL } D_ME_60162C8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x060162C8, symbol: D_ME_60162C8 } @@ -146,20 +146,20 @@ D_ME_60162C8: D_ME_60172C8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x060172C8, symbol: D_ME_60172C8 } -D_ME_6017AD0: - { type: GFX, offset: 0x06017AD0, symbol: D_ME_6017AD0 } +aMeMeteorShower1DL: + { type: GFX, offset: 0x06017AD0, symbol: aMeMeteorShower1DL } D_ME_6017B60: { type: GFX, offset: 0x06017B60, symbol: D_ME_6017B60 } -D_ME_6018450: - { type: GFX, offset: 0x06018450, symbol: D_ME_6018450 } +aMeLaserCannon2DL: + { type: GFX, offset: 0x06018450, symbol: aMeLaserCannon2DL } D_ME_6018960: { type: GFX, offset: 0x06018960, symbol: D_ME_6018960 } -D_ME_6018C00: - { type: GFX, offset: 0x06018C00, symbol: D_ME_6018C00 } +aMeMeteor1DL: + { type: GFX, offset: 0x06018C00, symbol: aMeMeteor1DL } D_ME_6019430: { type: GFX, offset: 0x06019430, symbol: D_ME_6019430 } @@ -286,29 +286,29 @@ D_ME_602F604: D_ME_602F638: { type: SF64:HITBOX, offset: 0x602F638, symbol: D_ME_602F638 } -D_ME_602F684: - { type: SF64:HITBOX, offset: 0x602F684, symbol: D_ME_602F684 } +aMeMeteoBallHitbox: + { type: SF64:HITBOX, offset: 0x602F684, symbol: aMeMeteoBallHitbox } -D_ME_602F6A0: - { type: SF64:HITBOX, offset: 0x602F6A0, symbol: D_ME_602F6A0 } +aMeHopBotHitbox: + { type: SF64:HITBOX, offset: 0x602F6A0, symbol: aMeHopBotHitbox } -D_ME_602F6EC: - { type: SF64:HITBOX, offset: 0x602F6EC, symbol: D_ME_602F6EC } +aMeMeteor1Hitbox: + { type: SF64:HITBOX, offset: 0x602F6EC, symbol: aMeMeteor1Hitbox } -D_ME_602F708: - { type: SF64:HITBOX, offset: 0x602F708, symbol: D_ME_602F708 } +aMeMeteor2Hitbox: + { type: SF64:HITBOX, offset: 0x602F708, symbol: aMeMeteor2Hitbox } -D_ME_602F724: - { type: SF64:HITBOX, offset: 0x602F724, symbol: D_ME_602F724 } +aMeLaserCannon1Hitbox: + { type: SF64:HITBOX, offset: 0x602F724, symbol: aMeLaserCannon1Hitbox } -D_ME_602F740: - { type: SF64:HITBOX, offset: 0x602F740, symbol: D_ME_602F740 } +aMeLaserCannon2Hitbox: + { type: SF64:HITBOX, offset: 0x602F740, symbol: aMeLaserCannon2Hitbox } -D_ME_602F75C: - { type: SF64:HITBOX, offset: 0x602F75C, symbol: D_ME_602F75C } +aMeCrusherHitbox: + { type: SF64:HITBOX, offset: 0x602F75C, symbol: aMeCrusherHitbox } -D_ME_602FA50: - { type: SF64:HITBOX, offset: 0x602FA50, symbol: D_ME_602FA50 } +aMeCrusherShieldHitbox: + { type: SF64:HITBOX, offset: 0x602FA50, symbol: aMeCrusherShieldHitbox } D_ME_602FA9C: {type: SF64:COLPOLY, count: 79, offset: 0x602FA9C, symbol: D_ME_602FA9C, mesh_symbol: D_ME_OFFSET } diff --git a/assets/yaml/us/rev1/ast_sector_x.yaml b/assets/yaml/us/rev1/ast_sector_x.yaml index 2f2d2754..7dfa09e5 100644 --- a/assets/yaml/us/rev1/ast_sector_x.yaml +++ b/assets/yaml/us/rev1/ast_sector_x.yaml @@ -247,14 +247,14 @@ D_SX_603238C: D_SX_6032408: { type: SF64:HITBOX, offset: 0x6032408, symbol: D_SX_6032408 } -D_SX_6032488: - { type: SF64:HITBOX, offset: 0x6032488, symbol: D_SX_6032488 } +aSxSpyborgLeftArmHitbox: + { type: SF64:HITBOX, offset: 0x6032488, symbol: aSxSpyborgLeftArmHitbox } -D_SX_60324EC: - { type: SF64:HITBOX, offset: 0x60324EC, symbol: D_SX_60324EC } +aSxSpyborgRightArmHitbox: + { type: SF64:HITBOX, offset: 0x60324EC, symbol: aSxSpyborgRightArmHitbox } -D_SX_6032550: - { type: SF64:HITBOX, offset: 0x6032550, symbol: D_SX_6032550 } +aSxSpyborgHitbox: + { type: SF64:HITBOX, offset: 0x6032550, symbol: aSxSpyborgHitbox } D_SX_603285C: { type: SF64:HITBOX, offset: 0x603285C, symbol: D_SX_603285C } diff --git a/assets/yaml/us/rev1/ast_sector_y.yaml b/assets/yaml/us/rev1/ast_sector_y.yaml index 8ca9f1ef..3e107fe7 100644 --- a/assets/yaml/us/rev1/ast_sector_y.yaml +++ b/assets/yaml/us/rev1/ast_sector_y.yaml @@ -35,11 +35,11 @@ D_SY_6003348: D_SY_60034C4: { type: SF64:ANIM, offset: 0x60034C4, symbol: D_SY_60034C4 } -D_SY_60034D0: - { type: GFX, offset: 0x60034D0, symbol: D_SY_60034D0 } +aSyShipWindowsDL: + { type: GFX, offset: 0x60034D0, symbol: aSyShipWindowsDL } -D_SY_60036A0: - { type: GFX, offset: 0x60036A0, symbol: D_SY_60036A0 } +aSyShip3DestroyedDL: + { type: GFX, offset: 0x60036A0, symbol: aSyShip3DestroyedDL } D_SY_6004958: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06004958, symbol: D_SY_6004958 } @@ -47,8 +47,8 @@ D_SY_6004958: D_SY_6005158: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06005158, symbol: D_SY_6005158 } -D_SY_6005360: - { type: GFX, offset: 0x6005360, symbol: D_SY_6005360 } +aSyShip4DL: + { type: GFX, offset: 0x6005360, symbol: aSyShip4DL } D_SY_6005BE0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06005BE0, symbol: D_SY_6005BE0 } @@ -74,8 +74,8 @@ D_SY_6008BE0: D_SY_6008FE0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x06008FE0, symbol: D_SY_6008FE0 } -D_SY_60097E0: - { type: GFX, offset: 0x060097E0, symbol: D_SY_60097E0 } +aSyShip1DL: + { type: GFX, offset: 0x060097E0, symbol: aSyShip1DL } D_SY_600AAC0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 64, offset: 0x0600AAC0, symbol: D_SY_600AAC0 } @@ -98,11 +98,11 @@ D_SY_600EAC0: D_SY_600F2C0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x0600F2C0, symbol: D_SY_600F2C0 } -D_SY_600F6C0: - { type: GFX, offset: 0x600F6C0, symbol: D_SY_600F6C0 } +aSyShip4DestroyedDL: + { type: GFX, offset: 0x600F6C0, symbol: aSyShip4DestroyedDL } -D_SY_60102C0: - { type: GFX, offset: 0x60102C0, symbol: D_SY_60102C0 } +aSyShip3DL: + { type: GFX, offset: 0x60102C0, symbol: aSyShip3DL } D_SY_6011758: { type: TEXTURE, ctype: u16, format: RGBA16, width: 8, height: 8, offset: 0x06011758, symbol: D_SY_6011758 } @@ -158,8 +158,8 @@ D_SY_6015960: D_SY_6015B60: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x06015B60, symbol: D_SY_6015B60 } -D_SY_60188D0: - { type: GFX, offset: 0x60188D0, symbol: D_SY_60188D0 } +aSyShipProjectileDL: + { type: GFX, offset: 0x60188D0, symbol: aSyShipProjectileDL } D_SY_60183B0: { type: GFX, offset: 0x60183B0, symbol: D_SY_60183B0 } @@ -176,20 +176,20 @@ D_SY_601AD70: D_SY_601AE08: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x0601AE08, symbol: D_SY_601AE08 } -D_SY_601B610: - { type: GFX, offset: 0x601B610, symbol: D_SY_601B610 } +aSyShip2SpriteDL: + { type: GFX, offset: 0x601B610, symbol: aSyShip2SpriteDL } D_SY_601B6A0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601B6A0, symbol: D_SY_601B6A0 } -D_SY_601C6A0: - { type: GFX, offset: 0x601C6A0, symbol: D_SY_601C6A0 } +aSyShip3SpriteDL: + { type: GFX, offset: 0x601C6A0, symbol: aSyShip3SpriteDL } D_SY_601C730: { type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x0601C730, symbol: D_SY_601C730 } -D_SY_601D730: - { type: GFX, offset: 0x601D730, symbol: D_SY_601D730 } +aSyShip2DL: + { type: GFX, offset: 0x601D730, symbol: aSyShip2DL } D_SY_601F3B8: { type: SF64:ANIM, offset: 0x601F3B8, symbol: D_SY_601F3B8 } @@ -308,8 +308,8 @@ D_SY_6032E18: D_SY_6033070: {type: SF64:COLPOLY, count: 174, offset: 0x6033070, symbol: D_SY_6033070, mesh_symbol: D_SY_6033E08 } -D_SY_603405C: - { type: SF64:HITBOX, offset: 0x603405C, symbol: D_SY_603405C } +aSyRobotHitbox: + { type: SF64:HITBOX, offset: 0x603405C, symbol: aSyRobotHitbox } D_SY_60340C0: { type: SF64:HITBOX, offset: 0x60340C0, symbol: D_SY_60340C0 } @@ -329,34 +329,34 @@ D_SY_60342A0: D_SY_6034304: { type: SF64:HITBOX, offset: 0x6034304, symbol: D_SY_6034304 } -D_SY_6034368: - { type: SF64:HITBOX, offset: 0x6034368, symbol: D_SY_6034368 } +aSyScenery156Hitbox: + { type: SF64:HITBOX, offset: 0x6034368, symbol: aSyScenery156Hitbox } D_SY_603445C: { type: SF64:HITBOX, offset: 0x603445C, symbol: D_SY_603445C } -D_SY_6034478: - { type: SF64:HITBOX, offset: 0x6034478, symbol: D_SY_6034478 } +aSyShip1Hitbox: + { type: SF64:HITBOX, offset: 0x6034478, symbol: aSyShip1Hitbox } -D_SY_603450C: - { type: SF64:HITBOX, offset: 0x603450C, symbol: D_SY_603450C } +aSyShip2Hitbox: + { type: SF64:HITBOX, offset: 0x603450C, symbol: aSyShip2Hitbox } -D_SY_6034588: - { type: SF64:HITBOX, offset: 0x6034588, symbol: D_SY_6034588 } +aSyShip3Hitbox: + { type: SF64:HITBOX, offset: 0x6034588, symbol: aSyShip3Hitbox } -D_SY_6034664: - { type: SF64:HITBOX, offset: 0x6034664, symbol: D_SY_6034664 } +aSyShip3DestroyedHitbox: + { type: SF64:HITBOX, offset: 0x6034664, symbol: aSyShip3DestroyedHitbox } -D_SY_6034770: - { type: SF64:HITBOX, offset: 0x6034770, symbol: D_SY_6034770 } +aSyShip4Hitbox: + { type: SF64:HITBOX, offset: 0x6034770, symbol: aSyShip4Hitbox } -D_SY_60347D4: - { type: SF64:HITBOX, offset: 0x60347D4, symbol: D_SY_60347D4 } +aSyShipWindowsHitbox: + { type: SF64:HITBOX, offset: 0x60347D4, symbol: aSyShipWindowsHitbox } -D_SY_60347F0: - { type: SF64:HITBOX, offset: 0x60347F0, symbol: D_SY_60347F0 } +aSyShip4DestroyedHitbox: + { type: SF64:HITBOX, offset: 0x60347F0, symbol: aSyShip4DestroyedHitbox } -D_SY_603486C: - { type: SF64:HITBOX, offset: 0x603486C, symbol: D_SY_603486C } +aSyShipProjectileHitbox: + { type: SF64:HITBOX, offset: 0x603486C, symbol: aSyShipProjectileHitbox } # size = 0x34890 \ No newline at end of file diff --git a/assets/yaml/us/rev1/ast_sector_z.yaml b/assets/yaml/us/rev1/ast_sector_z.yaml index 5213b9d2..f6e4284a 100644 --- a/assets/yaml/us/rev1/ast_sector_z.yaml +++ b/assets/yaml/us/rev1/ast_sector_z.yaml @@ -85,8 +85,8 @@ D_SZ_60041F8: D_SZ_60042F8: { type: TEXTURE, ctype: u16, format: TLUT, colors: 24, offset: 0x060042F8, symbol: D_SZ_60042F8 } -D_SZ_6004330: - { type: GFX, offset: 0x6004330, symbol: D_SZ_6004330 } +aSzMissileMark: + { type: GFX, offset: 0x6004330, symbol: aSzMissileMark } D_SZ_6004458: { type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 8, offset: 0x06004458, symbol: D_SZ_6004458, tlut: 0x06004558 } @@ -160,13 +160,13 @@ D_SZ_6007558: aSZMissileHitbox: { type: SF64:HITBOX, offset: 0x6009230, symbol: aSZMissileHitbox } -D_SZ_600924C: - { type: SF64:HITBOX, offset: 0x600924C, symbol: D_SZ_600924C } +aSzSpaceJunk3Hitbox: + { type: SF64:HITBOX, offset: 0x600924C, symbol: aSzSpaceJunk3Hitbox } -D_SZ_60092E8: - { type: SF64:HITBOX, offset: 0x60092E8, symbol: D_SZ_60092E8 } +aSzSpaceJunk1Hitbox: + { type: SF64:HITBOX, offset: 0x60092E8, symbol: aSzSpaceJunk1Hitbox } -D_SZ_6009388: - { type: SF64:HITBOX, offset: 0x6009388, symbol: D_SZ_6009388 } +aSzGreatFoxHitbox: + { type: SF64:HITBOX, offset: 0x6009388, symbol: aSzGreatFoxHitbox } # size = 0x93B0 \ No newline at end of file diff --git a/assets/yaml/us/rev1/ast_titania.yaml b/assets/yaml/us/rev1/ast_titania.yaml index 829c10bd..a0cc8a19 100644 --- a/assets/yaml/us/rev1/ast_titania.yaml +++ b/assets/yaml/us/rev1/ast_titania.yaml @@ -76,11 +76,11 @@ D_TI_6005000: D_TI_600631C: {type: SF64:SCRIPT, offset: 0x600631C, symbol: D_TI_600631C} -D_TI_60064AC: - {type: SF64:HITBOX, offset: 0x60064AC, symbol: D_TI_60064AC} +aTi1LandmineHitbox: + {type: SF64:HITBOX, offset: 0x60064AC, symbol: aTi1LandmineHitbox} -D_TI_60064C8: - {type: SF64:HITBOX, offset: 0x60064C8, symbol: D_TI_60064C8} +aTiDesertRoverHitbox: + {type: SF64:HITBOX, offset: 0x60064C8, symbol: aTiDesertRoverHitbox} aTiSkullHitbox: {type: SF64:HITBOX, offset: 0x60064FC, symbol: aTiSkullHitbox} @@ -112,32 +112,32 @@ aTiRib7Hitbox: aTiRib8Hitbox: {type: SF64:HITBOX, offset: 0x6006778, symbol: aTiRib8Hitbox} -D_TI_60067C4: - {type: SF64:HITBOX, offset: 0x60067C4, symbol: D_TI_60067C4} +aTiDelphorHitbox: + {type: SF64:HITBOX, offset: 0x60067C4, symbol: aTiDelphorHitbox} -D_TI_6006808: - {type: SF64:HITBOX, offset: 0x6006808, symbol: D_TI_6006808} +aTiDelphorHeadHitbox: + {type: SF64:HITBOX, offset: 0x6006808, symbol: aTiDelphorHeadHitbox} -D_TI_6006A3C: - {type: SF64:HITBOX, offset: 0x6006A3C, symbol: D_TI_6006A3C} +aTiDesertCrawlerHitbox: + {type: SF64:HITBOX, offset: 0x6006A3C, symbol: aTiDesertCrawlerHitbox} -D_TI_600683C: - {type: SF64:HITBOX, offset: 0x600683C, symbol: D_TI_600683C} +aTiBoulderHitbox: + {type: SF64:HITBOX, offset: 0x600683C, symbol: aTiBoulderHitbox} -D_TI_6006858: - {type: SF64:HITBOX, offset: 0x6006858, symbol: D_TI_6006858} +aTiBombHitbox: + {type: SF64:HITBOX, offset: 0x6006858, symbol: aTiBombHitbox} D_TI_6006874: {type: SF64:HITBOX, offset: 0x6006874, symbol: D_TI_6006874} -D_TI_6006890: - {type: SF64:HITBOX, offset: 0x6006890, symbol: D_TI_6006890} +aTiRascoHitbox: + {type: SF64:HITBOX, offset: 0x6006890, symbol: aTiRascoHitbox} aTiCactusHitbox: {type: SF64:HITBOX, offset: 0x60068BC, symbol: aTiCactusHitbox} -D_TI_60068F0: - {type: SF64:HITBOX, offset: 0x60068F0, symbol: D_TI_60068F0} +aTiFekudaHitbox: + {type: SF64:HITBOX, offset: 0x60068F0, symbol: aTiFekudaHitbox} D_TI_6006940: {type: SF64:HITBOX, offset: 0x6006940, symbol: D_TI_6006940} @@ -166,8 +166,8 @@ D_TI_6006A04: D_TI_6006A20: {type: SF64:HITBOX, offset: 0x6006A20, symbol: D_TI_6006A20} -D_TI_6006BF0: - {type: SF64:HITBOX, offset: 0x6006BF0, symbol: D_TI_6006BF0} +aTiPillarHitbox: + {type: SF64:HITBOX, offset: 0x6006BF0, symbol: aTiPillarHitbox} D_TI_6006924: {type: SF64:HITBOX, offset: 0x6006924, symbol: D_TI_6006924} @@ -178,8 +178,8 @@ D_TI_6006C0C: D_TI_6006C28: {type: SF64:HITBOX, offset: 0x6006C28, symbol: D_TI_6006C28} -D_TI_6006C44: - {type: SF64:HITBOX, offset: 0x6006C44, symbol: D_TI_6006C44} +aTiBridgeHitbox: + {type: SF64:HITBOX, offset: 0x6006C44, symbol: aTiBridgeHitbox} D_TI_6006C60: {type: SF64:OBJECT_INIT, offset: 0x6006C60, symbol: D_TI_6006C60} diff --git a/assets/yaml/us/rev1/ast_training.yaml b/assets/yaml/us/rev1/ast_training.yaml index 3a064e81..6ac1d8e2 100644 --- a/assets/yaml/us/rev1/ast_training.yaml +++ b/assets/yaml/us/rev1/ast_training.yaml @@ -31,8 +31,8 @@ D_TR_6002740: D_TR_60028F0: { type: TEXTURE, format: RGBA16, offset: 0x060028F0, width: 32, height: 32, ctype: u16, symbol: D_TR_60028F0 } -D_TR_60030F0: - { type: GFX, offset: 0x60030F0, symbol: D_TR_60030F0 } +aTrBuildingDL: + { type: GFX, offset: 0x60030F0, symbol: aTrBuildingDL } D_TR_6003360: { type: TEXTURE, format: RGBA16, offset: 0x06003360, width: 16, height: 16, ctype: u16, symbol: D_TR_6003360 } @@ -76,8 +76,8 @@ D_TR_6008EF8: D_TR_6009B34: { type: SF64:SCRIPT, offset: 0x6009B34, symbol: D_TR_6009B34 } -D_TR_6009CC4: - { type: SF64:HITBOX, offset: 0x6009CC4, symbol: D_TR_6009CC4 } +aTrBuildingHitbox: + { type: SF64:HITBOX, offset: 0x6009CC4, symbol: aTrBuildingHitbox } D_TR_6009CFC: { type: SF64:HITBOX, offset: 0x6009CFC, symbol: D_TR_6009CFC } diff --git a/assets/yaml/us/rev1/ast_ve1_boss.yaml b/assets/yaml/us/rev1/ast_ve1_boss.yaml index 14a29c08..a87b71cc 100644 --- a/assets/yaml/us/rev1/ast_ve1_boss.yaml +++ b/assets/yaml/us/rev1/ast_ve1_boss.yaml @@ -50,8 +50,8 @@ D_VE1_90039F0: D_VE1_9003DF0: {type: TEXTURE, ctype: u16, format: TLUT, colors: 176, offset: 0x9003DF0, symbol: D_VE1_9003DF0} -D_VE1_9003F50: - {type: GFX, offset: 0x9003F50, symbol: D_VE1_9003F50} +aVe1TempleInterior1DL: + {type: GFX, offset: 0x9003F50, symbol: aVe1TempleInterior1DL} D_VE1_9004478: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x9004478, symbol: D_VE1_9004478} @@ -65,8 +65,8 @@ D_VE1_9005078: D_VE1_9005478: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9005478, symbol: D_VE1_9005478} -D_VE1_9005C80: - {type: GFX, offset: 0x9005C80, symbol: D_VE1_9005C80} +aVe1TempleEntranceDL: + {type: GFX, offset: 0x9005C80, symbol: aVe1TempleEntranceDL} D_VE1_9009700: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x9009700, symbol: D_VE1_9009700} @@ -92,8 +92,8 @@ D_VE1_900BF00: D_VE1_900C700: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900C700, symbol: D_VE1_900C700} -D_VE1_900D098: - {type: SF64:ANIM, offset: 0x900D098, symbol: D_VE1_900D098} +aVe1MonkeyStatueAnim: + {type: SF64:ANIM, offset: 0x900D098, symbol: aVe1MonkeyStatueAnim} D_VE1_900D164: {type: SF64:SKELETON, offset: 0x900D164, symbol: D_VE1_900D164} @@ -104,8 +104,8 @@ D_VE1_900D180: D_VE1_900D520: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x900D520, symbol: D_VE1_900D520} -D_VE1_900DD20: - {type: GFX, offset: 0x900DD20, symbol: D_VE1_900DD20} +aVe1Pillar1DL: + {type: GFX, offset: 0x900DD20, symbol: aVe1Pillar1DL} D_VE1_900DF20: {type: GFX, offset: 0x900DF20, symbol: D_VE1_900DF20} @@ -116,11 +116,11 @@ D_VE1_900DFB8: D_VE1_900EFC0: {type: GFX, offset: 0x900EFC0, symbol: D_VE1_900EFC0} -D_VE1_900F060: - {type: GFX, offset: 0x900F060, symbol: D_VE1_900F060} +aVe1TempleInterior2DL: + {type: GFX, offset: 0x900F060, symbol: aVe1TempleInterior2DL} -D_VE1_900F1D0: - {type: GFX, offset: 0x900F1D0, symbol: D_VE1_900F1D0} +aVe1TempleInterior3DL: + {type: GFX, offset: 0x900F1D0, symbol: aVe1TempleInterior3DL} D_VE1_9010FC4: {type: SF64:ANIM, offset: 0x9010FC4, symbol: D_VE1_9010FC4} @@ -179,8 +179,8 @@ D_VE1_901C0F4: D_VE1_901DA38: {type: SF64:ANIM, offset: 0x901DA38, symbol: D_VE1_901DA38} -D_VE1_901DA50: - {type: GFX, offset: 0x901DA50, symbol: D_VE1_901DA50} +aVe1Pillar3DL: + {type: GFX, offset: 0x901DA50, symbol: aVe1Pillar3DL} D_VE1_901DC90: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 32, offset: 0x901DC90, symbol: D_VE1_901DC90} @@ -230,8 +230,8 @@ D_VE1_90234D0: D_VE1_9023880: {type: GFX, offset: 0x9023880, symbol: D_VE1_9023880} -D_VE1_9023AD0: - {type: GFX, offset: 0x9023AD0, symbol: D_VE1_9023AD0} +aVe1Pillar4DL: + {type: GFX, offset: 0x9023AD0, symbol: aVe1Pillar4DL} D_VE1_9024738: {type: SF64:ANIM, offset: 0x9024738, symbol: D_VE1_9024738} diff --git a/assets/yaml/us/rev1/ast_venom_1.yaml b/assets/yaml/us/rev1/ast_venom_1.yaml index 96722e97..a8bbfaf9 100644 --- a/assets/yaml/us/rev1/ast_venom_1.yaml +++ b/assets/yaml/us/rev1/ast_venom_1.yaml @@ -46,8 +46,8 @@ D_VE1_6003078: D_VE1_6003478: { type: TEXTURE, format: TLUT, colors: 204, offset: 0x6003478, ctype: u16, symbol: D_VE1_6003478 } -D_VE1_6003610: - { type: GFX, offset: 0x6003610, symbol: D_VE1_6003610 } +aVe1WatchPostDL: + { type: GFX, offset: 0x6003610, symbol: aVe1WatchPostDL } D_VE1_6003B10: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6003B10, ctype: u16, symbol: D_VE1_6003B10 } @@ -70,8 +70,8 @@ D_VE1_60046F0: D_VE1_6004780: { type: TEXTURE, format: RGBA16, width: 64, height: 32, offset: 0x6004780, ctype: u16, symbol: D_VE1_6004780 } -D_VE1_6005780: - { type: GFX, offset: 0x6005780, symbol: D_VE1_6005780 } +aVe1GeneratorDL: + { type: GFX, offset: 0x6005780, symbol: aVe1GeneratorDL } D_VE1_6005E50: { type: TEXTURE, format: TLUT, colors: 160, offset: 0x6005E50, ctype: u16, symbol: D_VE1_6005E50 } @@ -97,11 +97,11 @@ D_VE1_60066D0: D_VE1_6006750: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6006750, ctype: u16, symbol: D_VE1_6006750 } -D_VE1_6006F50: - { type: GFX, offset: 0x6006F50, symbol: D_VE1_6006F50 } +aVe1HallwayObstacleDL: + { type: GFX, offset: 0x6006F50, symbol: aVe1HallwayObstacleDL } -D_VE1_6007410: - { type: GFX, offset: 0x6007410, symbol: D_VE1_6007410 } +aVe1SceneryWall3DL: + { type: GFX, offset: 0x6007410, symbol: aVe1SceneryWall3DL } D_VE1_60074E8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60074E8, ctype: u16, symbol: D_VE1_60074E8 } @@ -133,50 +133,50 @@ D_VE1_601B474: D_VE1_601B4C4: { type: SF64:HITBOX, offset: 0x601B4C4, symbol: D_VE1_601B4C4 } -D_VE1_601B4E0: - { type: SF64:HITBOX, offset: 0x601B4E0, symbol: D_VE1_601B4E0 } +aVe1SceneryWall1Hitbox: + { type: SF64:HITBOX, offset: 0x601B4E0, symbol: aVe1SceneryWall1Hitbox } -D_VE1_601B4FC: - { type: SF64:HITBOX, offset: 0x601B4FC, symbol: D_VE1_601B4FC } +aVe1SceneryWall2Hitbox: + { type: SF64:HITBOX, offset: 0x601B4FC, symbol: aVe1SceneryWall2Hitbox } -D_VE1_601B518: - { type: SF64:HITBOX, offset: 0x601B518, symbol: D_VE1_601B518 } +aVe1SceneryWall3Hitbox: + { type: SF64:HITBOX, offset: 0x601B518, symbol: aVe1SceneryWall3Hitbox } -D_VE1_601B584: - { type: SF64:HITBOX, offset: 0x601B584, symbol: D_VE1_601B584 } +aVe1HallwayObstacleHitbox: + { type: SF64:HITBOX, offset: 0x601B584, symbol: aVe1HallwayObstacleHitbox } -D_VE1_601B5F4: - { type: SF64:HITBOX, offset: 0x601B5F4, symbol: D_VE1_601B5F4 } +aVe1GeneratorHitbox: + { type: SF64:HITBOX, offset: 0x601B5F4, symbol: aVe1GeneratorHitbox } -D_VE1_601B644: - { type: SF64:HITBOX, offset: 0x601B644, symbol: D_VE1_601B644 } +aVe1WatchPostHitbox: + { type: SF64:HITBOX, offset: 0x601B644, symbol: aVe1WatchPostHitbox } -D_VE1_601B678: - { type: SF64:HITBOX, offset: 0x601B678, symbol: D_VE1_601B678 } +aVe1TempleEntranceHitbox: + { type: SF64:HITBOX, offset: 0x601B678, symbol: aVe1TempleEntranceHitbox } -D_VE1_601B6C4: - { type: SF64:HITBOX, offset: 0x601B6C4, symbol: D_VE1_601B6C4 } +aVe1TempleInterior1Hitbox: + { type: SF64:HITBOX, offset: 0x601B6C4, symbol: aVe1TempleInterior1Hitbox } -D_VE1_601B710: - { type: SF64:HITBOX, offset: 0x601B710, symbol: D_VE1_601B710 } +aVe1TempleInterior2Hitbox: + { type: SF64:HITBOX, offset: 0x601B710, symbol: aVe1TempleInterior2Hitbox } -D_VE1_601B75C: - { type: SF64:HITBOX, offset: 0x601B75C, symbol: D_VE1_601B75C } +aVe1TempleInterior3Hitbox: + { type: SF64:HITBOX, offset: 0x601B75C, symbol: aVe1TempleInterior3Hitbox } -D_VE1_601B7F8: - { type: SF64:HITBOX, offset: 0x601B7F8, symbol: D_VE1_601B7F8 } +aVe1Pillar1Hitbox: + { type: SF64:HITBOX, offset: 0x601B7F8, symbol: aVe1Pillar1Hitbox } -D_VE1_601B830: - { type: SF64:HITBOX, offset: 0x601B830, symbol: D_VE1_601B830 } +aVe1Pillar2Hitbox: + { type: SF64:HITBOX, offset: 0x601B830, symbol: aVe1Pillar2Hitbox } -D_VE1_601B868: - { type: SF64:HITBOX, offset: 0x601B868, symbol: D_VE1_601B868 } +aVe1Pillar3Hitbox: + { type: SF64:HITBOX, offset: 0x601B868, symbol: aVe1Pillar3Hitbox } -D_VE1_601B8A0: - { type: SF64:HITBOX, offset: 0x601B8A0, symbol: D_VE1_601B8A0 } +aVe1Pillar4Hitbox: + { type: SF64:HITBOX, offset: 0x601B8A0, symbol: aVe1Pillar4Hitbox } -D_VE1_601B8D8: - { type: SF64:HITBOX, offset: 0x601B8D8, symbol: D_VE1_601B8D8 } +aVe1MonkeyStatueHitbox: + { type: SF64:HITBOX, offset: 0x601B8D8, symbol: aVe1MonkeyStatueHitbox } D_VE1_601B944: { type: SF64:HITBOX, offset: 0x601B944, symbol: D_VE1_601B944 } \ No newline at end of file diff --git a/assets/yaml/us/rev1/ast_venom_2.yaml b/assets/yaml/us/rev1/ast_venom_2.yaml index 26d37d60..ae6f652e 100644 --- a/assets/yaml/us/rev1/ast_venom_2.yaml +++ b/assets/yaml/us/rev1/ast_venom_2.yaml @@ -27,11 +27,11 @@ D_VE2_60020D0: D_VE2_6002890: { type: TEXTURE, format: IA8, width: 16, height: 16, offset: 0x6002890, ctype: u8, symbol: D_VE2_6002890 } -D_VE2_6002990: - { type: GFX, offset: 0x6002990, symbol: D_VE2_6002990 } +aAndPathExitDL: + { type: GFX, offset: 0x6002990, symbol: aAndPathExitDL } -D_VE2_6003000: - { type: GFX, offset: 0x6003000, symbol: D_VE2_6003000 } +aAndPathIntersectionDL: + { type: GFX, offset: 0x6003000, symbol: aAndPathIntersectionDL } D_VE2_60038E0: { type: GFX, offset: 0x60038E0, symbol: D_VE2_60038E0 } @@ -39,8 +39,8 @@ D_VE2_60038E0: D_VE2_6003970: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6003970, ctype: u16, symbol: D_VE2_6003970 } -D_VE2_6004170: - { type: GFX, offset: 0x6004170, symbol: D_VE2_6004170 } +aAndPathEntranceDL: + { type: GFX, offset: 0x6004170, symbol: aAndPathEntranceDL } D_VE2_6004888: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6004888, ctype: u16, symbol: D_VE2_6004888 } @@ -57,8 +57,8 @@ D_VE2_6006088: D_VE2_60030D8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x60030D8, ctype: u16, symbol: D_VE2_60030D8 } -D_VE2_6006890: - { type: GFX, offset: 0x6006890, symbol: D_VE2_6006890 } +aAndPathWallsDL: + { type: GFX, offset: 0x6006890, symbol: aAndPathWallsDL } D_VE2_6006E20: { type: GFX, offset: 0x6006E20, symbol: D_VE2_6006E20 } @@ -72,8 +72,8 @@ D_VE2_6007E20: D_VE2_6008170: { type: TEXTURE, format: RGBA16, width: 16, height: 16, offset: 0x6008170, ctype: u16, symbol: D_VE2_6008170 } -D_VE2_6008370: - { type: GFX, offset: 0x6008370, symbol: D_VE2_6008370 } +aVe2TowerDL: + { type: GFX, offset: 0x6008370, symbol: aVe2TowerDL } D_VE2_6008AF8: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6008AF8, ctype: u16, symbol: D_VE2_6008AF8 } @@ -162,8 +162,8 @@ D_VE2_600F700: D_VE2_6010700: { type: GFX, offset: 0x6010700, symbol: D_VE2_6010700 } -D_VE2_6010960: - { type: GFX, offset: 0x6010960, symbol: D_VE2_6010960 } +aVe2MountainDL: + { type: GFX, offset: 0x6010960, symbol: aVe2MountainDL } D_VE2_6010CA0: { type: TEXTURE, format: RGBA16, width: 32, height: 32, offset: 0x6010CA0, ctype: u16, symbol: D_VE2_6010CA0 } @@ -195,11 +195,11 @@ D_VE2_6014D94: D_VE2_6014FEC: { type: SF64:COLPOLY, count: 250, offset: 0x6014FEC, symbol: D_VE2_6014FEC, mesh_symbol: D_VE2_OFFSET } -D_VE2_601668C: - { type: SF64:HITBOX, offset: 0x601668C, symbol: D_VE2_601668C } +aVe2TowerHitbox: + { type: SF64:HITBOX, offset: 0x601668C, symbol: aVe2TowerHitbox } -D_VE2_60166F4: - { type: SF64:HITBOX, offset: 0x60166F4, symbol: D_VE2_60166F4 } +aVe2BaseHitbox: + { type: SF64:HITBOX, offset: 0x60166F4, symbol: aVe2BaseHitbox } -D_VE2_6016714: - { type: SF64:HITBOX, offset: 0x6016714, symbol: D_VE2_6016714 } \ No newline at end of file +aVe2MountainHitbox: + { type: SF64:HITBOX, offset: 0x6016714, symbol: aVe2MountainHitbox } \ No newline at end of file diff --git a/assets/yaml/us/rev1/ast_versus.yaml b/assets/yaml/us/rev1/ast_versus.yaml index f5961866..d0b75a41 100644 --- a/assets/yaml/us/rev1/ast_versus.yaml +++ b/assets/yaml/us/rev1/ast_versus.yaml @@ -182,8 +182,8 @@ D_versus_300EC80: D_versus_300EE80: { type: GFX, offset: 0x300EE80, symbol: D_versus_300EE80} -D_versus_300FB80: - { type: GFX, offset: 0x300FB80, symbol: D_versus_300FB80} +aVsLandmasterModelDL: + { type: GFX, offset: 0x300FB80, symbol: aVsLandmasterModelDL} D_versus_3010690: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3010690, symbol: D_versus_3010690 } @@ -203,14 +203,14 @@ D_versus_3011E40: D_versus_3011ED0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 64, height: 32, offset: 0x3011ED0, symbol: D_versus_3011ED0 } -D_versus_3012ED0: - { type: GFX, offset: 0x3012ED0, symbol: D_versus_3012ED0} +aVsSpaceJunk3DL: + { type: GFX, offset: 0x3012ED0, symbol: aVsSpaceJunk3DL} -D_versus_3013580: - { type: GFX, offset: 0x3013580, symbol: D_versus_3013580} +aVsSpaceJunk2DL: + { type: GFX, offset: 0x3013580, symbol: aVsSpaceJunk2DL} -D_versus_3013780: - { type: GFX, offset: 0x3013780, symbol: D_versus_3013780} +aVsSpaceJunk1DL: + { type: GFX, offset: 0x3013780, symbol: aVsSpaceJunk1DL} D_versus_3013F50: {type: TEXTURE, ctype: u8, format: CI8, width: 32, height: 32, offset: 0x3013F50, symbol: D_versus_3013F50, tlut: 0x3014350 } @@ -245,8 +245,8 @@ D_versus_30160A0: D_versus_30162F8: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x30162F8, symbol: D_versus_30162F8 } -D_versus_3016B00: - { type: GFX, offset: 0x3016B00, symbol: D_versus_3016B00} +aVsKaFlBaseDL: + { type: GFX, offset: 0x3016B00, symbol: aVsKaFlBaseDL} D_versus_3016DC0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x3016DC0, symbol: D_versus_3016DC0 } @@ -257,14 +257,14 @@ D_versus_3016FC0: D_versus_30171C0: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x30171C0, symbol: D_versus_30171C0 } -D_versus_30173C0: - { type: GFX, offset: 0x30173C0, symbol: D_versus_30173C0} +aVsPyramid1DL: + { type: GFX, offset: 0x30173C0, symbol: aVsPyramid1DL} -D_versus_30174E0: - { type: GFX, offset: 0x30174E0, symbol: D_versus_30174E0} +aVsPyramid2DL: + { type: GFX, offset: 0x30174E0, symbol: aVsPyramid2DL} -D_versus_3017600: - { type: GFX, offset: 0x3017600, symbol: D_versus_3017600} +aVsBuildingDL: + { type: GFX, offset: 0x3017600, symbol: aVsBuildingDL} D_versus_3017800: {type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x3017800, symbol: D_versus_3017800 } @@ -299,8 +299,8 @@ D_versus_301AEF0: D_versus_301AF78: {type: TEXTURE, ctype: u8, format: IA8, width: 16, height: 16, offset: 0x301AF78, symbol: D_versus_301AF78 } -D_versus_301B080: - { type: GFX, offset: 0x301B080, symbol: D_versus_301B080} +aVsArchDL: + { type: GFX, offset: 0x301B080, symbol: aVsArchDL} D_versus_301B438: {type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301B438, symbol: D_versus_301B438 } @@ -320,8 +320,8 @@ D_versus_301C0A4: D_versus_301C3A8: { type: SF64:ANIM, offset: 0x301C3A8, symbol: D_versus_301C3A8} -D_versus_301C614: - { type: SF64:SKELETON, offset: 0x301C614, symbol: D_versus_301C614 } +aVsOnFootFalcoSkel: + { type: SF64:SKELETON, offset: 0x301C614, symbol: aVsOnFootFalcoSkel } D_versus_301C79C: { type: SF64:ANIM, offset: 0x301C79C, symbol: D_versus_301C79C } @@ -335,8 +335,8 @@ D_versus_301CCE4: D_versus_301CFEC: { type: SF64:ANIM, offset: 0x301CFEC, symbol: D_versus_301CFEC} -D_versus_301D258: - { type: SF64:SKELETON, offset: 0x301D258, symbol: D_versus_301D258 } +aVsOnFootFoxSkel: + { type: SF64:SKELETON, offset: 0x301D258, symbol: aVsOnFootFoxSkel } D_versus_301D3DC: { type: SF64:ANIM, offset: 0x301D3DC, symbol: D_versus_301D3DC } @@ -347,8 +347,8 @@ D_versus_301D568: D_versus_301D888: { type: SF64:ANIM, offset: 0x301D888, symbol: D_versus_301D888} -D_versus_301DB94: - { type: SF64:SKELETON, offset: 0x301DB94, symbol: D_versus_301DB94 } +aVsOnFootPeppySkel: + { type: SF64:SKELETON, offset: 0x301DB94, symbol: aVsOnFootPeppySkel } D_versus_301DD6C: { type: SF64:ANIM, offset: 0x301DD6C, symbol: D_versus_301DD6C } @@ -359,8 +359,8 @@ D_versus_301DEA4: D_versus_301E19C: { type: SF64:ANIM, offset: 0x301E19C, symbol: D_versus_301E19C} -D_versus_301E3E8: - { type: SF64:SKELETON, offset: 0x301E3E8, symbol: D_versus_301E3E8 } +aVsOnFootSlippySkel: + { type: SF64:SKELETON, offset: 0x301E3E8, symbol: aVsOnFootSlippySkel } D_versus_301E560: { type: SF64:ANIM, offset: 0x301E560, symbol: D_versus_301E560} @@ -395,8 +395,8 @@ D_versus_301EEB0: D_versus_301EF38: { type: TEXTURE, ctype: u16, format: RGBA16, width: 16, height: 16, offset: 0x301EF38, symbol: D_versus_301EF38 } -D_versus_301F140: - { type: GFX, offset: 0x301F140, symbol: D_versus_301F140} +aVsLandmasterCanonDL: + { type: GFX, offset: 0x301F140, symbol: aVsLandmasterCanonDL} D_versus_301F2E0: { type: GFX, offset: 0x301F2E0, symbol: D_versus_301F2E0} @@ -704,26 +704,26 @@ D_versus_302E170: D_versus_302E378: { type: SF64:OBJECT_INIT, offset: 0x302E378, symbol: D_versus_302E378} -D_versus_302ED4C: - { type: SF64:HITBOX, offset: 0x302ED4C, symbol: D_versus_302ED4C} +aVsSpaceJunk1Hitbox: + { type: SF64:HITBOX, offset: 0x302ED4C, symbol: aVsSpaceJunk1Hitbox} -D_versus_302ED98: - { type: SF64:HITBOX, offset: 0x302ED98, symbol: D_versus_302ED98} +aVsSpaceJunk2Hitbox: + { type: SF64:HITBOX, offset: 0x302ED98, symbol: aVsSpaceJunk2Hitbox} -D_versus_302EDB4: - { type: SF64:HITBOX, offset: 0x302EDB4, symbol: D_versus_302EDB4} +aVsSpaceJunk3Hitbox: + { type: SF64:HITBOX, offset: 0x302EDB4, symbol: aVsSpaceJunk3Hitbox} -D_versus_302EE00: - { type: SF64:HITBOX, offset: 0x302EE00, symbol: D_versus_302EE00} +aVsKaFlBaseHitbox: + { type: SF64:HITBOX, offset: 0x302EE00, symbol: aVsKaFlBaseHitbox} -D_versus_302EE64: - { type: SF64:HITBOX, offset: 0x302EE64, symbol: D_versus_302EE64} +aVsBuilding1Hibox: + { type: SF64:HITBOX, offset: 0x302EE64, symbol: aVsBuilding1Hibox} -D_versus_302EE80: - { type: SF64:HITBOX, offset: 0x302EE80, symbol: D_versus_302EE80} +aVsBuilding2Hibox: + { type: SF64:HITBOX, offset: 0x302EE80, symbol: aVsBuilding2Hibox} -D_versus_302EE9C: - { type: SF64:HITBOX, offset: 0x302EE9C, symbol: D_versus_302EE9C} +aVsArchHitbox: + { type: SF64:HITBOX, offset: 0x302EE9C, symbol: aVsArchHitbox} D_versus_302EEE8: { type: SF64:TRIANGLE, count: 4, offset: 0x302EEE8, symbol: D_versus_302EEE8, mesh_symbol: D_versus_OFFSET} diff --git a/assets/yaml/us/rev1/ast_zoness.yaml b/assets/yaml/us/rev1/ast_zoness.yaml index 406db142..69f313f7 100644 --- a/assets/yaml/us/rev1/ast_zoness.yaml +++ b/assets/yaml/us/rev1/ast_zoness.yaml @@ -141,14 +141,14 @@ D_ZO_600E5EC: D_ZO_600E7D8: { type: SF64:SKELETON, offset: 0x600E7D8, symbol: D_ZO_600E7D8} -D_ZO_600E820: - { type: GFX, offset: 0x600E820, symbol: D_ZO_600E820} +aZoOilRig3DL: + { type: GFX, offset: 0x600E820, symbol: aZoOilRig3DL} -D_ZO_600EC90: - { type: GFX, offset: 0x600EC90, symbol: D_ZO_600EC90} +aZoOilRig2DL: + { type: GFX, offset: 0x600EC90, symbol: aZoOilRig2DL} -D_ZO_600F560: - { type: GFX, offset: 0x600F560, symbol: D_ZO_600F560} +aZoOilRig1DL: + { type: GFX, offset: 0x600F560, symbol: aZoOilRig1DL} D_ZO_600FE58: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x600FE58, symbol: D_ZO_600FE58} @@ -225,8 +225,8 @@ D_ZO_6017810: D_ZO_60178B0: { type: GFX, offset: 0x60178B0, symbol: D_ZO_60178B0} -D_ZO_6017950: - { type: GFX, offset: 0x6017950, symbol: D_ZO_6017950} +aZoBallDL: + { type: GFX, offset: 0x6017950, symbol: aZoBallDL} D_ZO_60179D8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60179D8, symbol: D_ZO_60179D8} @@ -366,8 +366,8 @@ D_ZO_601FBC4: D_ZO_601FC90: { type: SF64:SKELETON, offset: 0x601FC90, symbol: D_ZO_601FC90} -D_ZO_601FCB0: - { type: GFX, offset: 0x601FCB0, symbol: D_ZO_601FCB0} +aZoIslandDL: + { type: GFX, offset: 0x601FCB0, symbol: aZoIslandDL} D_ZO_60201B0: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60201B0, symbol: D_ZO_60201B0} @@ -471,8 +471,8 @@ D_ZO_6024220: D_ZO_60242B8: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x60242B8, symbol: D_ZO_60242B8} -aZoRock1DL: - { type: GFX, offset: 0x6024AC0, symbol: aZoRock1DL} +aZoRockDL: + { type: GFX, offset: 0x6024AC0, symbol: aZoRockDL} D_ZO_6024D60: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x6024D60, symbol: D_ZO_6024D60} @@ -502,59 +502,59 @@ D_ZO_602AC50: D_ZO_602AE94: { type: ARRAY, count: 242, array_type: Vec3f, offset: 0x602AE94, symbol: D_ZO_602AE94} -aZoRock1Hitbox: - { type: SF64:HITBOX, offset: 0x602B9EC, symbol: aZoRock1Hitbox} +aZoRockHitbox: + { type: SF64:HITBOX, offset: 0x602B9EC, symbol: aZoRockHitbox} -D_ZO_602BA20: - { type: SF64:HITBOX, offset: 0x602BA20, symbol: D_ZO_602BA20} +aZoOilRig1Hitbox: + { type: SF64:HITBOX, offset: 0x602BA20, symbol: aZoOilRig1Hitbox} -D_ZO_602BAE4: - { type: SF64:HITBOX, offset: 0x602BAE4, symbol: D_ZO_602BAE4} +aZoOilRig2Hitbox: + { type: SF64:HITBOX, offset: 0x602BAE4, symbol: aZoOilRig2Hitbox} -D_ZO_602BBD8: - { type: SF64:HITBOX, offset: 0x602BBD8, symbol: D_ZO_602BBD8} +aZoOilRig3Hitbox: + { type: SF64:HITBOX, offset: 0x602BBD8, symbol: aZoOilRig3Hitbox} -D_ZO_602BC54: - { type: SF64:HITBOX, offset: 0x602BC54, symbol: D_ZO_602BC54} +aZoIslandHitbox: + { type: SF64:HITBOX, offset: 0x602BC54, symbol: aZoIslandHitbox} -D_ZO_602BC58: - { type: SF64:HITBOX, offset: 0x602BC58, symbol: D_ZO_602BC58} +aZoDodoraHitbox: + { type: SF64:HITBOX, offset: 0x602BC58, symbol: aZoDodoraHitbox} -D_ZO_602BE3C: - { type: SF64:HITBOX, offset: 0x602BE3C, symbol: D_ZO_602BE3C} +aZoTroikaHitbox: + { type: SF64:HITBOX, offset: 0x602BE3C, symbol: aZoTroikaHitbox} -D_ZO_602BE58: - { type: SF64:HITBOX, offset: 0x602BE58, symbol: D_ZO_602BE58} +aZoObnemaHitbox: + { type: SF64:HITBOX, offset: 0x602BE58, symbol: aZoObnemaHitbox} -D_ZO_602BFC4: - { type: SF64:HITBOX, offset: 0x602BFC4, symbol: D_ZO_602BFC4} +aZoBarrierHitbox: + { type: SF64:HITBOX, offset: 0x602BFC4, symbol: aZoBarrierHitbox} D_ZO_602C028: { type: SF64:HITBOX, offset: 0x602C028, symbol: D_ZO_602C028} -D_ZO_602C044: - { type: SF64:HITBOX, offset: 0x602C044, symbol: D_ZO_602C044} +aZoSarumarineHitbox: + { type: SF64:HITBOX, offset: 0x602C044, symbol: aZoSarumarineHitbox} D_ZO_602C1A0: { type: SF64:HITBOX, offset: 0x602C1A0, symbol: D_ZO_602C1A0} -D_ZO_602C1D4: - { type: SF64:HITBOX, offset: 0x602C1D4, symbol: D_ZO_602C1D4} +aZoCargoShipHitbox: + { type: SF64:HITBOX, offset: 0x602C1D4, symbol: aZoCargoShipHitbox} -D_ZO_602C218: - { type: SF64:HITBOX, offset: 0x602C218, symbol: D_ZO_602C218} +aZoContainerHitbox: + { type: SF64:HITBOX, offset: 0x602C218, symbol: aZoContainerHitbox} -D_ZO_602C234: - { type: SF64:HITBOX, offset: 0x602C234, symbol: D_ZO_602C234} +aZoRadarBuoyHitbox: + { type: SF64:HITBOX, offset: 0x602C234, symbol: aZoRadarBuoyHitbox} -D_ZO_602C250: - { type: SF64:HITBOX, offset: 0x602C250, symbol: D_ZO_602C250} +aZoSupplyCraneHitbox: + { type: SF64:HITBOX, offset: 0x602C250, symbol: aZoSupplyCraneHitbox} -D_ZO_602C294: - { type: SF64:HITBOX, offset: 0x602C294, symbol: D_ZO_602C294} +aZoBirdHitbox: + { type: SF64:HITBOX, offset: 0x602C294, symbol: aZoBirdHitbox} -D_ZO_602C2B0: - { type: SF64:HITBOX, offset: 0x602C2B0, symbol: D_ZO_602C2B0} +aZoSearchLightHitbox: + { type: SF64:HITBOX, offset: 0x602C2B0, symbol: aZoSearchLightHitbox} D_ZO_602C2CC: { type: TEXTURE, ctype: u16, format: RGBA16, width: 32, height: 32, offset: 0x602C2CC, symbol: D_ZO_602C2CC} diff --git a/include/context.h b/include/context.h index 916b18e6..a1381601 100644 --- a/include/context.h +++ b/include/context.h @@ -158,7 +158,7 @@ extern s32 D_ctx_80178494; extern f32 gShotHitPosZ; extern f32 gShotHitPosX; extern f32 gShotHitPosY; -extern s32 gZOSnakeWaypointCount; +extern s32 gZoDodoraWaypointCount; extern UNK_TYPE F_801784A8; extern GroundType gGroundType; extern UNK_TYPE F_801784B0; @@ -238,13 +238,13 @@ extern PlayerShot gPlayerShots[16]; extern TexturedLine gTexturedLines[100]; extern RadarMark gRadarMarks[65]; extern BonusText gBonusText[10]; -extern s32 gActor194Status[2]; -extern f32 gActor194xPos[2][100]; -extern f32 gActor194yPos[2][100]; -extern f32 gActor194zPos[2][100]; -extern f32 gActor194xRot[2][100]; -extern f32 gActor194yRot[2][100]; -extern f32 gActor194zRot[2][100]; +extern s32 gMeMoraStatus[2]; +extern f32 gMeMoraXpos[2][100]; +extern f32 gMeMoraYpos[2][100]; +extern f32 gMeMoraZpos[2][100]; +extern f32 gMeMoraXrot[2][100]; +extern f32 gMeMoraYrot[2][100]; +extern f32 gMeMoraZrot[2][100]; extern u16 gEnemyShotSpeed; extern u8 gShowLevelClearStatusScreen; extern s32 gLevelStartStatusScreenTimer; @@ -291,7 +291,7 @@ extern u8 gTiStartLandmaster; extern u16 gControllerRumbleTimers[4]; extern u16 gPlayerScores[4]; extern s32 gCircleWipeFrame; -extern s32 D_ctx_80177C70; +extern s32 gFovYMode; extern s32 gTraining360MsgTimer; extern s32 gTraining360MsgIndex; extern s32 D_ctx_80177C94; @@ -329,7 +329,7 @@ extern Scenery360* gScenery360; extern UNK_TYPE F_801782B0; extern s32 gDrawSmallRocks; extern s32 D_ctx_801782BC; -extern PosRot* gZOSnakePosRots; +extern PosRot* gZoDodoraPosRots; extern f32* D_ctx_801782CC; extern f32* D_ctx_801782D4; extern f32* D_ctx_801782DC; diff --git a/include/fox_co.h b/include/fox_co.h index 7ffad414..4ff18d94 100644 --- a/include/fox_co.h +++ b/include/fox_co.h @@ -1,6 +1,9 @@ #ifndef FOX_CO_H #define FOX_CO_H +#define TEAM_HEAD_XROT (19) +#define TEAM_HEAD_YROT (20) + // Granga Boss: #define DMG_FLICKER_5 (5) // Damage indicator flickers for 5 frames @@ -9,13 +12,13 @@ typedef enum GrangaStates { /* 0 */ GRANGA_STATIONARY, - /* 1 */ GRANGA_STATE_1, - /* 2 */ GRANGA_STATE_2, - /* 3 */ GRANGA_STATE_3, - /* 4 */ GRANGA_STATE_4, - /* 5 */ GRANGA_STATE_5, - /* 6 */ GRANGA_STATE_6, - /* 7 */ GRANGA_STATE_7, + /* 1 */ GRANGA_FORWARD_MISSILE, // walk forward + missile + /* 2 */ GRANGA_BACKWARDS_LASER_PLASMA, // Walk backwards + lasers + plasma + /* 3 */ GRANGA_FORWARD_LASER_PLASMA, // Walk towards player + lasers + plasma + /* 4 */ GRANGA_FORWARD, // Walk forward + /* 5 */ GRANGA_FALL_TO_LEFT, // Falling from missing left leg + /* 6 */ GRANGA_FALL_TO_RIGHT, // Falling from missing right leg + /* 7 */ GRANGA_EXPLODE, // BOOM! } GrangaStates; typedef enum GrangaWork { @@ -35,10 +38,10 @@ typedef enum GrangaWork { /* 13 */ GRANGA_WORK_13, /* 14 */ GRANGA_WORK_14, /* 15 */ GRANGA_WORK_15, - /* 16 */ GRANGA_WORK_16, // yRot of missiles launched from both arms ? - /* 17 */ GRANGA_WORK_17, // x of something - /* 18 */ GRANGA_WORK_18, // y of something - /* 19 */ GRANGA_WORK_19, // z of something + /* 16 */ GRANGA_WORK_16, // yRot of missiles launched from both arms ? + /* 17 */ GRANGA_TARGET_X, // player.pos.x target position + /* 18 */ GRANGA_TARGET_Y, // player.pos.y target position + /* 19 */ GRANGA_TARGET_Z, // player.pos.trueZpos target position /* 20 */ GRANGA_WORK_20, /* 21 */ GRANGA_WORK_21, /* 22 */ GRANGA_WORK_22, @@ -123,7 +126,7 @@ typedef enum GrangaSwork { } GrangaSwork; typedef enum GrangaFwork { - /* 00 */ GRANGA_FWK_00, + /* 00 */ GRANGA_FWK_00, // left leg rock angle? /* 01 */ GRANGA_FWK_01, /* 02 */ GRANGA_FWK_02, /* 03 */ GRANGA_FWK_03, @@ -149,14 +152,27 @@ typedef enum GrangaAttackState { /* 3 */ GRANGA_ATTACK_PLASMA, } GrangaAttackState; - // Carrier Boss: typedef enum CoCarrierParts { - /* 0 */ CARRIER_0, - /* 1 */ CARRIER_1, - /* 2 */ CARRIER_2, - /* 3 */ CARRIER_3 + /* 0 */ CARRIER, // Boss + /* 1 */ CARRIER_LEFT, // Left launch bay + /* 2 */ CARRIER_UPPER, // Right upper launch bay + /* 3 */ CARRIER_BOTTOM // Right lower launch bay } CarrierParts; +typedef enum CoCarrierStates { + /* 0 */ CARRIER_STATE_0, + /* 1 */ CARRIER_STATE_1, + /* 2 */ CARRIER_STATE_2, // positioning + /* 3 */ CARRIER_STATE_3, // Close launch bays + /* 4 */ CARRIER_STATE_4, // Open left launch bay + /* 5 */ CARRIER_STATE_5, // open right launch bays + /* 6 */ CARRIER_STATE_6, + /* 7 */ CARRIER_STATE_7, // go around beam attack + /* 8 */ CARRIER_STATE_8, // Dying + /* 9 */ CARRIER_STATE_9, // Dying cutscene + /* 10 */ CARRIER_EXPLODE // BOOM! +} CoCarrierStates; + #endif diff --git a/include/functions.h b/include/functions.h index e0c9f879..62f1efcc 100644 --- a/include/functions.h +++ b/include/functions.h @@ -10,14 +10,14 @@ void AllRange_FortunaIntro(Player*); void AllRange_GetStarWolfHits(Actor*); void AllRange_DrawCountdown(void); -void Boss309_Update(Boss*); -void Boss309_Draw(Boss*); -void Boss310_Update(Boss*); -void Boss310_Draw(Boss*); -void Actor271_Update(Actor*); -void Actor271_Draw(Actor*); -void Actor272_Update(Actor*); -void Actor272_Draw(Actor*); +void BoBase_Update(Boss*); +void BoBase_Draw(Boss*); +void BoBaseShield_Update(Boss*); +void BoBaseShield_Draw(Boss*); +void BoShieldReactor_Update(Actor*); +void BoShieldReactor_Draw(Actor*); +void BoLaserCannon_Update(Actor*); +void BoLaserCannon_Draw(Actor*); bool AllRange_PlayMessage(u16*, RadioCharacterId); void AllRange_GreatFoxRepair(Player*); void AllRange_ClearRadio(void); @@ -86,26 +86,26 @@ void ActorCutscene_Draw(Actor*); void Cutscene_DrawGreatFox(void); // fox_display -void func_display_80053658(WingInfo*); -void Play_DrawEngineGlow(s32); -void func_display_80057814(Player*); -void Play_Draw(void); +void Display_ArwingWings(WingInfo*); +void Display_DrawEngineGlow(s32); +void Display_SetupPlayerSfxPos(Player*); +void Display_Update(void); // fox_edata -void Scenery48_Draw(Scenery*); -void Scenery49_Draw(Scenery*); +void Ve1SceneryWall1_Draw(Scenery*); +void Ve1SceneryWall2_Draw(Scenery*); void Object_ApplyWaterDistortion(void); -void Actor289_Draw(Actor*); +void AndJamesTrigger_Draw(Actor*); // fox_edisplay void Graphics_SetScaleMtx(f32); void Sprite168_Draw(Sprite*); -void Actor201_Draw(Actor*); -void Actor202_Draw(Actor*); +void MeteoBall_Draw(Actor*); +void ActorHopBot_Draw(Actor*); void MeteoTunnel_Draw(Scenery*); void Scenery_DrawTitaniaBones(Scenery*); void CoIBeam_Draw(Scenery*); -void Actor196_Draw(Actor*); +void ActorMoleMissile_Draw(ActorMoleMissile*); void Sprite167_Draw(Sprite*); void FogShadow_Draw(Sprite*); void CoBuilding9_Draw(Scenery*); @@ -114,12 +114,12 @@ void ActorDebris_Draw(Actor*); void Actor_DrawEngineAndContrails(Actor*); void Actor_DrawEngineGlow(Actor*, s32); void func_edisplay_8005B388(Actor*); -void Actor180_Draw(Actor*); -void Actor182_Draw(Actor*); -void Actor186_Draw(Actor*); -void Actor190_191_Draw(Actor*); -void Actor192_Draw(Actor*); -void Actor193_Draw(Actor*); +void MeMolarRock_Draw(Actor*); +void MeMeteor2_Draw(MeMeteor2*); +void MeLaserCannon1_Draw(MeLaserCannon1*); +void ActorMissileSeek_Draw(Actor*); +void ActorSkibot_Draw(ActorSkibot*); +void ActorRadar_Draw(CoRadar*); void ItemCheckpoint_Draw(Item*); void ItemSilverRing_Draw(Item*); void ItemSilverStar_Draw(Item*); @@ -163,13 +163,13 @@ bool Object_CheckPolyCollision(Vec3f* , Vec3f* , ObjectId , Object* ); s32 Object_CheckCollision(s32 index, Vec3f* pos, Vec3f* vel, s32 mode); void Scenery_UpdateTitaniaBones(Scenery*); void func_enmy_800654E4(Object*); -void Actors190_191_Update(Actor*); +void ActorMissileSeek_Update(Actor*); void func_enmy_800660F0(Actor*); void Actor_Despawn(Actor*); -void Actor192_Update(Actor*); +void ActorSkibot_Update(ActorSkibot*); void func_enmy_8006684C(Actor*); -void Actor193_Update(Actor*); -void Actor180_Update(Actor*); +void ActorRadar_Update(CoRadar*); +void MeMolarRock_Update(Actor*); void func_enmy_80066C00(Scenery*); void CoBuilding9_Update(Scenery*); void Sprite167_Update(Sprite*); @@ -213,13 +213,13 @@ void Object_Update(void); void Actor237_Update(Actor*); void Actor237_Draw(Actor*); void CoWaterfall_Update(Scenery*); -void Actor201_Update(Actor*); -void Actor202_Update(Actor*); -void Actor194_Update(Actor*); -void Actor194_Dying(Actor*); -void Actor194_Draw(Actor*); +void MeteoBall_Update(Actor*); +void ActorHopBot_Update(Actor*); +void MeMora_Update(Actor*); +void MeMora_Dying(Actor*); +void MeMora_Draw(Actor*); void CoIBeam_Update(Scenery*); -void Actor196_Update(Actor*); +void ActorMoleMissile_Update(ActorMoleMissile*); void ActorDebris_Update(Actor*); void MeteoTunnel_Update(Scenery*); void Actor_SetupPlayerShot(PlayerShotId, PlayerShot*, s32, f32, f32, f32, f32, f32, f32, f32, f32, f32); @@ -234,16 +234,16 @@ s32 Scenery111_Draw(Scenery*); void ActorEvent_Draw(Actor*); void func_enmy2_800763A4(Actor*); void ActorEvent_Dying(Actor*); -void Actor234_Update(Actor*); -void Actor234_Draw(Actor*); +void TiGreatFox_Update(Actor*); +void TiGreatFox_Draw(Actor*); // fox_effect s32 func_effect_80081B24(f32 xPos, f32 yPos, f32 zPos, f32 scale2); s32 BonusText_Display(f32 xPos, f32 yPos, f32 zPos, s32 hits); void BonusText_Update(void); void BonusText_DrawAll(void); -Effect* func_effect_8007783C(ObjectId objId); -void func_effect_8007797C(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2); +Effect* Effect_Load(ObjectId objId); +void Effect_FireSmoke_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2); void Effect_Effect372_Draw(Effect* ); void Effect_Effect382_Draw(Effect* ); void Effect_Effect388_Draw(Effect* ); @@ -261,77 +261,77 @@ void Effect_Effect346_Draw(Effect* ); void Effect_Effect348_Draw(Effect* ); void Effect_Effect355_Draw(Effect* ); void Effect_Effect353_Draw(Effect*); -void Macbeth_Effect377_Draw(Effect* ); +void Effect_Effect377_Draw(Effect* ); void Effect_Effect356_Draw(Effect* ); -void Macbeth_Effect376_Draw(Effect* ); -void func_effect_80078E50(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect376_Draw(Effect* ); +void Effect_Effect393_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void Effect_Effect393_Update(Effect* ); void Effect_Effect393_Draw(Effect* ); -void func_effect_800794CC(f32 xPos, f32 yPos, f32 zPos, f32 scale2); -void func_effect_8007953C(f32 xPos, f32 yPos, f32 zPos, f32 scale2); -void func_effect_800795AC(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect357_Spawn50(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect357_Spawn80(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect357_Spawn95(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void func_effect_80079618(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void Effect_Effect357_Update(Effect*); void Effect_Effect357_Draw(Effect* ); void Effect_Effect383_Update(Effect* ); void Effect_Effect383_Draw(Effect* ); -void func_effect_8007A568(f32 xPos, f32 yPos, f32 zPos, f32 scale1); +void Effect_Effect383_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1); void Effect_SetupTimedSfxAtPos(Effect* , Vec3f* pos, u32 sfxId); void Effect_SpawnTimedSfxAtPos(Vec3f* pos, s32 sfxId); void Effect_TimedSfx_Update(Effect*); bool func_effect_8007A774(Player*, Effect*, f32); -void func_effect_8007A900(f32 xPos, f32 yPos, f32 zPos, f32 scale1, u8, u8, u16); +void Effect_Effect359_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1, u8, u8, u16); void Effect_Effect359_Update(Effect359*); void Effect_Effect359_Draw(Effect*); void Effect_Effect372_Update(Effect*); -void func_effect_8007ACE0(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, f32 yRot); -void func_effect_8007ADF4(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1); -void func_effect_8007AFD0(f32 xPos, f32 zPos, f32 xVel, f32 zVel, f32 scale1); +void Effect_Effect372_Spawn1(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, f32 yRot); +void Effect_Effect372_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1); +void Effect_Effect382_Spawn(f32 xPos, f32 zPos, f32 xVel, f32 zVel, f32 scale1); void Effect_Effect382_Update(Effect*); void Effect_Effect381_Update(Effect*); -void func_effect_8007B228(f32 xPos, f32 yPos, f32 zPos, f32 scale1); -void func_effect_8007B344(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 ); +void Effect_Effect381_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1); +void Effect_Effect384_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 ); void Effect_Effect384_Update(Effect*); -void func_effect_8007B550(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 ); +void Effect_Effect385_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 ); void Effect_Effect385_Update(Effect*); void Effect_Clouds_Update(Effect*); void Effect_Effect388_Update(Effect*); void Effect_Effect389_Update(Effect*); void Effect_Effect347_Update(Effect*); -void func_effect_8007B8F8(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect364_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void Effect_Effect364_Update(Effect*); -void func_effect_8007BC7C(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect362_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void Effect_Effect362_Update(Effect*); void Effect_Effect364_Draw(Effect*); void Effect_Effect361_Update(Effect*); void Effect_Effect360_Update(Effect*); void Effect_Effect360_361_362_Draw(Effect*); -void func_effect_8007BFFC(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50); -void func_effect_8007C120(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50); +void Effect386_Spawn1(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50); +void Effect_Effect390_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50); void Effect_Effect386_Update(Effect*); -void func_effect_8007C484(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 arg7); +void Effect_Effect389_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 arg7); void Effect_Effect390_Update(Effect*); -void func_effect_8007C688(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50); +void Effect_Effect387_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50); void Effect_Effect387_Update(Effect*); -void func_effect_8007C85C(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect343_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void Effect_Effect343_Update(Effect*); void Effect_Effect343_Draw(Effect*); -void func_effect_8007CF30(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_FireSmoke_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void func_effect_8007D074(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void func_effect_8007D0E0(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void func_effect_8007D10C(f32 xPos, f32 yPos, f32 zPos, f32 scale2); -void func_effect_8007D1E0(f32 xPos, f32 yPos, f32 zPos, f32 scale2); +void Effect_Effect341_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void func_effect_8007D24C(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void func_effect_8007D2C8(f32 xPos, f32 yPos, f32 zPos, f32 scale2); void Effect_Effect339_Update(Effect*); void Effect_FireSmoke_Draw(Effect*); void Effect_Effect340_Update(Effect*); void Effect_Effect341_Update(Effect*); -void func_effect_8007D9DC(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, s32 timer50); +void Effect_Effect367_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, s32 timer50); void Effect_Effect375_Update(Effect*); -void Macbeth_Effect375_Draw(Effect*); +void Effect_Effect375_Draw(Effect*); void Effect_Effect374_Update(Effect*); -void Macbeth_Effect374_Draw(Effect*); +void Effect_Effect374_Draw(Effect*); void Effect_Effect344_Update(Effect*); void Effect_Effect345_Update(Effect*); void Effect_Effect342_Update(Effect*); @@ -364,10 +364,10 @@ void func_effect_80081A8C(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 arg4); void func_effect_80081BEC(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 arg4); void Effect_Effect395_Update(Effect*); void Effect_Effect395_Draw(Effect*); -void func_effect_8008377C(f32, f32, f32, f32, f32); +void Effect_Effect391_Spawn(f32, f32, f32, f32, f32); void Effect_Effect391_Update(Effect*); void Effect_Effect391_Draw(Effect*); -void func_effect_80083C70(Effect* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 arg7, s32 arg8); +void Effect_Effect399_Setup(Effect* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 arg7, s32 arg8); void func_effect_80083D2C(f32 xPos, f32 yPos, f32 zPos, f32 srcZ); void Effect_Effect399_Update(Effect*); void Effect_Effect399_Draw(Effect*); @@ -386,8 +386,8 @@ void func_hud_80087530(f32, f32, s32); void func_hud_800884E4(void); void func_hud_80088564(void); void HUD_DrawStatusScreens(void); -s32 Hud_MissileSeekModeCheck(s32); -void func_hud_8008AD94(void); +s32 ActorMissileSeek_ModeCheck(s32); +void HUD_RadioCharacterName_Draw(void); void func_hud_8008B5B0(f32 x, f32 y); s32 func_hud_8008B774(void); void func_hud_8008BD00(u8*, s32, s32, u8); @@ -404,11 +404,11 @@ void HUD_DrawCountdown(s32* , f32); void func_hud_8008E9EC(f32, f32); void func_hud_8008EA14(f32, f32); void HUD_Draw(void); -void HUD_BossFO_Draw(Boss*); +void HUD_FoBase_Draw(Boss*); void func_hud_8008FFF0(Boss*, s32); -s32 func_hud_80090200(Boss* boss); +s32 HUD_FoBase_ExplodeCs(Boss* this); bool func_hud_8009092C(Actor*); -void HUD_BossFO_Update(Boss*); +void HUD_FoBase_Update(Boss*); bool func_hud_800915FC(Actor*); bool func_hud_800924E0(Actor*); diff --git a/include/global.h b/include/global.h index faabf9c4..03204900 100644 --- a/include/global.h +++ b/include/global.h @@ -5,14 +5,14 @@ typedef enum OverlayCalls { /* 90 */ OVLCALL_FO_CS_COMPLETE = 90, - /* 91 */ OVLCALL_BOSS309_UPDATE, - /* 92 */ OVLCALL_BOSS309_DRAW, - /* 93 */ OVLCALL_BOSS310_UPDATE, - /* 94 */ OVLCALL_BOSS310_DRAW, - /* 95 */ OVLCALL_ACTOR271_UPDATE, - /* 96 */ OVLCALL_ACTOR271_DRAW, - /* 97 */ OVLCALL_ACTOR272_UPDATE, - /* 98 */ OVLCALL_ACTOR272_DRAW, + /* 91 */ OVLCALL_BO_BASE_UPDATE, + /* 92 */ OVLCALL_BO_BASE_DRAW, + /* 93 */ OVLCALL_BO_BASE_SHIELD_UPDATE, + /* 94 */ OVLCALL_BO_BASE_SHIELD_DRAW, + /* 95 */ OVLCALL_BO_SHIELD_REACTOR_UPDATE, + /* 96 */ OVLCALL_BO_SHIELD_REACTOR_DRAW, + /* 97 */ OVLCALL_BO_LASER_CANNON_UPDATE, + /* 98 */ OVLCALL_BO_LASER_CANNON_DRAW, /* 103 */ OVLCALL_TITLE_UPDATE = 103, /* 104 */ OVLCALL_TITLE_DRAW, /* 105 */ OVLCALL_MAP_UPDATE, diff --git a/include/i1.h b/include/i1.h index 42dced9d..0fa47966 100644 --- a/include/i1.h +++ b/include/i1.h @@ -8,15 +8,15 @@ #include "sf64mesg.h" extern Gfx* D_VE1_8019A008[]; -extern f32 D_VE1_8019A9B8[]; +extern f32 aVe1GolemechHitbox[]; extern void Corneria_LevelStart(Player*); extern void Corneria_LevelComplete1(Player*); extern void Venom1_LevelStart(Player*); -void Corneria_Smoke_Update(Sprite*); -void Corneria_Granga_Update(Granga*); -void Corneria_Granga_Draw(Granga*); +void Corneria_CoSmoke_Update(Sprite*); +void Corneria_CoGranga_Update(CoGranga*); +void Corneria_CoGranga_Draw(CoGranga*); void Corneria_CoGaruda1_Update(CoGaruda1*); void Corneria_CoGaruda2_Update(CoGaruda2*); void Corneria_CoGaruda3_Update(CoGaruda3*); @@ -25,46 +25,46 @@ void Corneria_CoGaruda1_Draw(CoGaruda1*); void Corneria_CoGaruda2_Draw(CoGaruda2*); void Corneria_CoGaruda3_Draw(CoGaruda3*); void Corneria_CoGarudaDestroy_Draw(CoGarudaDestroy*); -void Corneria_Carrier_Update(Carrier*); -void Corneria_Boss294_Update(Boss294*); -void Corneria_Boss295_Update(Boss295*); -void Corneria_Boss296_Update(Boss296*); -void Corneria_Carrier_Draw(Carrier*); -void Corneria_Boss294_Draw(Boss294*); -void Corneria_Boss295_Draw(Boss295*); -void Corneria_Boss296_Draw(Boss296*); -void Corneria_Doors_Update(Scenery*); -void Corneria_Doors_Draw(Scenery*); +void Corneria_CoCarrier_Update(CoCarrier*); +void Corneria_CarrierLeft_Update(CoCarrierLeft*); +void Corneria_CarrierUpper_Update(CoCarrierUpper*); +void Corneria_CarrierBottom_Update(CoCarrierBottom*); +void Corneria_CoCarrier_Draw(CoCarrier*); +void Corneria_CoCarrierLeft_Draw(CoCarrierLeft*); +void Corneria_CoCarrierUpper_Draw(CoCarrierUpper*); +void Corneria_CoCarrierBottom_Draw(CoCarrierBottom*); +void Corneria_CoDoors_Update(Scenery*); +void Corneria_CoDoors_Draw(Scenery*); void Venom1_BossTrigger1_Update(Sprite*); void Venom1_BossTrigger2_Update(Sprite*); void Venom1_BossTrigger3_Update(Sprite*); void Venom1_BossTrigger4_Update(Sprite*); -void Venom1_Actor280_Update(Actor*); -void Venom1_Doodad_Update(Actor*); -void Venom1_Actor281_Draw(Actor*); -void Venom1_Actor283_Update(Actor*); -void Venom1_Actor284_Update(Actor*); -void Venom1_Actor284_Draw(Actor*); -void Venom1_Scenery52_Update(Scenery*); -void Venom1_Boss_Update(Boss*); -void Venom1_Boss_Draw(Boss*); +void Venom1_Ve1Pillar1_Update(Actor*); +void Venom1_Pillar2_3_Update(Actor*); +void Venom1_Ve1Pillar2_Draw(Actor*); +void Venom1_Ve1Pillar4_Update(Actor*); +void Venom1_Ve1MonkeyStatue_Update(Actor*); +void Venom1_Ve1MonkeyStatue_Draw(Actor*); +void Venom1_Ve1Generator_Update(Scenery*); +void Venom1_Ve1Golemech_Update(Boss*); +void Venom1_Ve1Golemech_Draw(Boss*); void Training_ItemRing_Update(Item*); void OvlI1_CallFunction(s32, void*); -void Corneria_BuildingOnFire_Update(Scenery*); -void Corneria_BuildingOnFire_Draw(Scenery*); +void Corneria_CoBuildingOnFire_Update(Scenery*); +void Corneria_CoBuildingOnFire_Draw(Scenery*); void Corneria_Granga_Init(Boss *); -void Corneria_IBeam_Init(Actor *); -void Corneria_Carrier_Init(Carrier *); -void Corneria_Boss294_Draw(Boss*); -void Venom1_Scenery127_Update(Scenery* ); -void Venom1_8019250C(Actor *); -void Venom1_80192CB0(Actor *); -void Venom1_80192EA4(Actor *); -void Venom1_801933B4(Actor *); -void Venom1_Boss319_Init(Boss *); -void Venom1_80198310(Boss *); -void Venom1_80198594(Boss *); +void Corneria_CoIBeam_Init(Actor *); +void Corneria_CoCarrier_Init(CoCarrier *); +void Corneria_CoCarrierLeft_Draw(Boss*); +void Venom1_Ve1TempleEntrance_Update(Scenery* ); +void Venom1_Ve1Pillar1_Init(Actor *); +void Venom1_Ve1Pillar2_3_Init(Actor *); +void Venom1_Ve1Pillar4_Init(Actor *); +void Venom1_Ve1MonkeyStatue_Init(Actor *); +void Venom1_Ve1Golemech_Init(Boss *); +void Venom1_Ve1Golemech_SetShadow(Boss *); +void Venom1_Ve1Golemech_Dying(Boss *); void Training_RingPassCount_Draw(void); void Training_Setup360(void); void Training_SpawnEnemies(void); diff --git a/include/i2.h b/include/i2.h index 92d7b465..cf8e8741 100644 --- a/include/i2.h +++ b/include/i2.h @@ -15,34 +15,34 @@ void SectorX_LevelComplete(Player*); void OvlI2_CallFunction(s32, void*); void Meteo_80187B08(Actor *); -void Meteo_Boss297_Init(Boss *); -void Meteo_8018CCF8(Actor *); +void Meteo_MeCrusher_Init(Boss *); +void Meteo_Effect346_Spawn(Actor *); -void Meteo_Actor181_Update(Actor*); -void Meteo_Actor182_Update(Actor*); -void Meteo_Actor187_Update(Actor*); -void Meteo_Actor186_Update(Actor*); -void Meteo_Boss298_Update(Boss*); -void Meteo_Boss298_Draw(Boss*); +void Meteo_MeMeteor1_Update(MeMeteor1*); +void Meteo_MeMeteor2_Update(MeMeteor2*); +void Meteo_MeLaserCannon1_Update(MeLaserCannon1*); +void Meteo_MeLaserCannon2_Update(MeLaserCannon2*); +void Meteo_MeCrusherShield_Update(Boss*); +void Meteo_MeCrusherShield_Draw(Boss*); void Meteo_Effect369_Update(Effect*); void Meteo_Effect370_Update(Effect*); void Meteo_Effect371_Update(Effect*); -void Meteo_Boss297_Update(Boss*); -void Meteo_Boss297_Draw(Boss*); -void Meteo_ActorDoodad_Update(Actor*); -void Meteo_Actor183_Draw(Actor*); -void Meteo_Actor184_Draw(Actor*); -void Meteo_Actor185_Draw(Actor*); +void Meteo_MeCrusher_Update(Boss*); +void Meteo_MeCrusher_Draw(Boss*); +void Meteo_MeteorShower_Update(Actor*); +void Meteo_MeMeteorShower1_Draw(Actor*); +void Meteo_MeMeteorShower2_Draw(Actor*); +void Meteo_MeMeteorShower3_Draw(Actor*); void Meteo_Effect370_Draw(Effect*); void Meteo_Effect369_Draw(Effect*); void Meteo_Effect371_Draw(Effect*); -void SectorX_Slippy_Update(Actor*); -void SectorX_Slippy_Draw(Actor*); -void SectorX_Boss304_Update(Boss*); -void SectorX_Boss305_Update(Boss*); -void SectorX_Boss304_Draw(Boss*); -void SectorX_Boss305_Draw(Boss*); -void SectorX_Boss_Update(Boss*); -void SectorX_Boss_Draw(Boss*); +void SectorX_SxSlippy_Update(Actor*); +void SectorX_SxSlippy_Draw(Actor*); +void SectorX_SxSpyborgLeftArm_Update(Boss*); +void SectorX_SxSpyborgRightArm_Update(Boss*); +void SectorX_SxSpyborgLeftArm_Draw(Boss*); +void SectorX_SxSpyborgRightArm_Draw(Boss*); +void SectorX_SxSpyborg_Update(Boss*); +void SectorX_SxSpyborg_Draw(Boss*); #endif diff --git a/include/i3.h b/include/i3.h index 5d70bdc9..73036185 100644 --- a/include/i3.h +++ b/include/i3.h @@ -9,7 +9,7 @@ extern f32 D_AQ_801C4188; -void Aquas_801BE034(Actor*); +void Aquas_CsAqFishGroup_Update(Actor*); void Area6_8018DA58(Actor*); void Zoness_8019E5F0(Actor*); @@ -17,132 +17,132 @@ void Aquas_BlueMarineDown(Player*); void Aquas_801BE0F0(Actor*); void OvlI3_CallFunction(s32, void*); -void Area6_BossA6_Init(Boss *); -void Area6_Boss_Update(Boss*); -void Area6_Boss_Draw(Boss*); +void Area6_A6Gorgon_Init(Boss *); +void Area6_A6Gorgon_Update(Boss*); +void Area6_A6Gorgon_Draw(Boss*); void Area6_LevelStart(Player *player); void Area6_LevelComplete(Player*); -void Zoness_SpawnDebris(Vec3f*, Vec3f*, f32, f32, f32, s32, f32, s32, s32); -void Zoness_Actor235_Draw(Actor235* this); -void Zoness_Actor235_Update(Actor235* this); -void Zoness_Actor236_Update(Actor* this); -void Zoness_Actor236_Draw(Actor* this); -void Zoness_Actor238_Update(Actor* this); -void Zoness_Actor238_Draw(Actor* this); -void Zoness_801915A4(Actor* this); -void Zoness_Actor240_Update(Actor* this); -void Zoness_Actor240_Draw(Actor* this); -void Zoness_80191BB8(Actor* actor); -void Zoness_Actor241_Update(Actor* this); -void Zoness_Actor241_Draw(Actor* this); -void Zoness_Actor241_Draw(Actor* this); -void Zoness_Actor242_Draw(Actor* this); -void Zoness_Actor242_Update(Actor* this); -void Zoness_Actor243_Update(Actor* this); -void Zoness_Actor243_Draw(Actor* this); -void Zoness_Actor244_Update(Actor* this); -void Zoness_Actor244_Draw(Actor* actor); -void Zoness_BossZo_Init(Boss* this); -void Zoness_Boss_Draw(Boss* this); -void Zoness_Boss_Update(Boss* this); -void Zoness_Actor245_Update(Actor245* this); -void Zoness_Actor245_Draw(Actor* actor); -void Zoness_Actor246_Update(Actor* this); -void Zoness_Actor246_Draw(Actor246* actor); -void Zoness_Actor248_Update(Actor* this); -void Zoness_Actor248_Draw(Actor* this); -void Zoness_Actor249_Update(Actor* this); -void Zoness_Actor249_Draw(Actor* this); -void Zoness_8019B1F0(Actor* actor); -void Zoness_Actor250_Update(Actor* this); -void Zoness_Actor250_Draw(Actor* actor); -void Zoness_8019B810(Actor* this); -void Zoness_Actor251_Update(Actor* this); -void Zoness_Actor251_Draw(Actor* this); -void Zoness_Actor252_Update(Actor* this); -void Zoness_Actor252_Draw(Actor* actor); -void Zoness_8019C200(Actor* this); -void Zoness_Actor253_Update(Actor* this); -void Zoness_Actor253_Draw(Actor* this); -void Zoness_Actor254_Update(Actor* this); -void Zoness_Actor254_Draw(Actor* this); -void Zoness_Actor247_Init(Actor* this); -void Zoness_Actor247_Update(Actor* this); -void Zoness_Actor247_Draw(Actor* this); +void Zoness_ActorDebris_Spawn(Vec3f*, Vec3f*, f32, f32, f32, s32, f32, s32, s32); +void Zoness_ZoBird_Draw(ZoBird* this); +void Zoness_ZoBird_Update(ZoBird* this); +void Zoness_ZoDodora_Update(Actor* this); +void Zoness_ZoDodora_Draw(Actor* this); +void Zoness_ZoFish_Update(Actor* this); +void Zoness_ZoFish_Draw(Actor* this); +void Zoness_ZoEnergyBall_Init(Actor* this); +void Zoness_ZGull_Update(Actor* this); +void Zoness_ZGull_Draw(Actor* this); +void Zoness_ZoEnergyBall_Init2(Actor* actor); +void Zoness_ZoEnergyBall_Update(Actor* this); +void Zoness_ZoEnergyBall_Draw(Actor* this); +void Zoness_ZoEnergyBall_Draw(Actor* this); +void Zoness_ZoTroika_Draw(Actor* this); +void Zoness_ZoTroika_Update(Actor* this); +void Zoness_ZoShrimp_Update(Actor* this); +void Zoness_ZoShrimp_Draw(Actor* this); +void Zoness_ZoObnema_Update(Actor* this); +void Zoness_ZoObnema_Draw(Actor* actor); +void Zoness_ZoSarumarine_Init(Boss* this); +void Zoness_ZoSarumarine_Draw(Boss* this); +void Zoness_ZoSarumarine_Update(Boss* this); +void Zoness_ZoBall_Update(ZoBall* this); +void Zoness_ZoBall_Draw(Actor* actor); +void Zoness_ZoMine_Update(Actor* this); +void Zoness_ZoMine_Draw(ZoMine* actor); +void Zoness_ZoCraneMagnet_Update(Actor* this); +void Zoness_ZoCraneMagnet_Draw(Actor* this); +void Zoness_ZoSpikeBall_Update(Actor* this); +void Zoness_ZoSpikeBall_Draw(Actor* this); +void Zoness_ZoCargoShip_Init(Actor* actor); +void Zoness_ZoCargoShip_Update(Actor* this); +void Zoness_ZoCargoShip_Draw(Actor* actor); +void Zoness_ZoContainer_Init(Actor* this); +void Zoness_ZoContainer_Update(Actor* this); +void Zoness_ZoContainer_Draw(Actor* this); +void Zoness_ZoRadarBuoy_Update(Actor* this); +void Zoness_ZoRadarBuoy_Draw(Actor* actor); +void Zoness_ZoSupplyCrane_Init(Actor* this); +void Zoness_ZoSupplyCrane_Update(Actor* this); +void Zoness_ZoSupplyCrane_Draw(Actor* this); +void Zoness_ZoSearchLight_Update(Actor* this); +void Zoness_ZoSearchLight_Draw(Actor* this); +void Zoness_ZoBarrier_Init(Actor* this); +void Zoness_ZoBarrier_Update(Actor* this); +void Zoness_ZoBarrier_Draw(Actor* this); void Zoness_LevelStart(Player* player); void Zoness_LevelComplete(Player* player); void Solar_8019E8B8(f32, f32, f32, f32); void Solar_8019E9F4(f32, f32, f32, f32, f32, f32, f32, s32); -void Solar_Actor278_Update(Actor278*); -void Solar_Doodad_Update(Actor*); -void Solar_Doodad_Draw(Actor*); -void Solar_Actor279_Update(Actor279*); +void Solar_SoWave_Update(SoWave*); +void Solar_SoRock_Update(Actor*); +void Solar_SoRock_Draw(Actor*); +void Solar_SoProminence_Update(SoProminence*); void Solar_Effect392_Update(Effect392*); void Solar_Effect392_Draw(Effect392*); void Solar_LevelStart(Player* player); -void Solar_Boss_Update(BossSO*); -void Solar_Boss_Draw(BossSO*); +void Solar_SoVulkain_Update(SoVulkain*); +void Solar_SoVulkain_Draw(SoVulkain*); void Solar_801A8BE8(ActorCutscene*); void Solar_LevelComplete(Player* player); -void Aquas_801A9824(void); +void Aquas_InitLevel(void); void Aquas_801AA20C(void); void Aquas_UpdateCamera(Player*); void Aquas_BlueMarineMove(Player*); void Aquas_801ABA40(PlayerShot*); void Aquas_BlueMarineShoot(Player*); -void Aquas_801AC8A8(f32, f32, f32, f32, s32); +void Aquas_Effect366_Spawn(f32, f32, f32, f32, s32); void Aquas_Effect366_Update(Effect*); -void Aquas_801ACBB4(Player*); +void Aquas_BlueMarine_Draw(Player*); void Aquas_BlueMarineBoost(Player*); void Aquas_BlueMarineBrake(Player*); -void Aquas_801AD688(Actor *); +void Aquas_Actor255_Init(Actor *); void Aquas_Actor255_Update(Actor*); void Aquas_Actor255_Draw(Actor*); -void Aquas_801AE3AC(Actor *); +void Aquas_Actor256_Init(Actor *); void Aquas_Actor256_Update(Actor*); void Aquas_Actor256_Draw(Actor*); -void Aquas_801AF9FC(Actor *); +void Aquas_Actor257_Init(Actor *); void Aquas_Actor257_Update(Actor*); void Aquas_Actor257_Draw(Actor*); -void Aquas_Actor258_Update(Actor*); -void Aquas_Actor258_Draw(Actor*); -void Aquas_BossAq_Init(Boss*); -void Aquas_Boss_Update(Boss*); -void Aquas_Boss_Draw(Boss*); -void Aquas_Actor261_Draw(Actor*); -void Aquas_Actor261_Update(Actor*); -void Aquas_Actor259_Draw(Actor*); -void Aquas_801B6344(Actor *); -void Aquas_Actor259_Update(Actor*); -void Aquas_801B6E54(Actor *); -void Aquas_Actor262_Update(Actor*); -void Aquas_Actor262_Draw(Actor*); -void Aquas_801B7AF0(Actor *); -void Aquas_Actor260_Update(Actor*); -void Aquas_Actor260_Draw(Actor*); -void Aquas_Actor263_Update(Actor*); -void Aquas_Actor263_Draw(Actor*); -void Aquas_Actor264_Update(Actor*); -void Aquas_Actor264_Draw(Actor*); -void Aquas_801BA57C(Actor *); -void Aquas_Actor265_Update(Actor*); -void Aquas_Actor265_Draw(Actor*); -void Aquas_Actor266_Update(Actor*); -void Aquas_Actor266_Draw(Actor*); -void Aquas_801BB26C(Actor *); -void Aquas_Actor267_Update(Actor*); -void Aquas_Actor267_Draw(Actor*); -void Aquas_Actor269_Update(Actor*); -void Aquas_Actor269_Draw(Actor*); -void Aquas_Actor268_Update(Actor*); -void Aquas_Actor268_Draw(Actor*); +void Aquas_AqPearl_Update(Actor*); +void Aquas_AqPearl_Draw(Actor*); +void Aquas_AqBacoon_Init(Boss*); +void Aquas_AqBacoon_Update(Boss*); +void Aquas_AqBacoon_Draw(Boss*); +void Aquas_AqSculpin_Draw(Actor*); +void Aquas_AqSculpin_Update(Actor*); +void Aquas_AqAnglerFish_Draw(Actor*); +void Aquas_AqAnglerFish_Init(Actor *); +void Aquas_AqAnglerFish_Update(Actor*); +void Aquas_AqSpindlyFish_Init(Actor *); +void Aquas_AqSpindlyFish_Update(Actor*); +void Aquas_AqSpindlyFish_Draw(Actor*); +void Aquas_AqGaroa_Init(Actor *); +void Aquas_AqGaroa_Update(Actor*); +void Aquas_AqGaroa_Draw(Actor*); +void Aquas_AqSquid_Update(Actor*); +void Aquas_AqSquid_Draw(Actor*); +void Aquas_AqSeaweed_Update(Actor*); +void Aquas_AqSeaweed_Draw(Actor*); +void Venom1_AqBoulder_Init(Actor *); +void Aquas_AqBoulder_Update(Actor*); +void Aquas_AqBoulder_Draw(Actor*); +void Aquas_AqCoral_Update(Actor*); +void Aquas_AqCoral_Draw(Actor*); +void Venom1_AqJellyfish_Init(Actor *); +void Aquas_AqJellyfish_Update(Actor*); +void Aquas_AqJellyfish_Draw(Actor*); +void Aquas_AqStoneColumn_Update(Actor*); +void Aquas_AqStoneColumn_Draw(Actor*); +void Aquas_AqFishGroup_Update(Actor*); +void Aquas_AqFishGroup_Draw(Actor*); void Aquas_801BDF14(void); -void Aquas_Scenery126_Draw(Scenery*); -void Aquas_Actor270_Update(Actor*); -void Aquas_Actor270_Draw(Actor*); +void Aquas_AqBump2_Draw(Scenery*); +void Aquas_AqOyster_Update(Actor*); +void Aquas_AqOyster_Draw(Actor*); void Aquas_Boss301_Update(Boss*); void Aquas_Boss301_Draw(Boss*); void Aquas_Actor188_Update(Actor*); diff --git a/include/i4.h b/include/i4.h index 4769796e..6008ace6 100644 --- a/include/i4.h +++ b/include/i4.h @@ -23,9 +23,9 @@ void OvlI4_CallFunction(u32, void*); void Fortuna_UpdateEvents(Actor*); void Fortuna_LoadLevelObjects(void); void Bolse_UpdateEventHandler(Actor*); -void Bolse_80191ED8(void); +void Bolse_LoadLevelObjects(void); void Bolse_DrawDynamicGround(void); -void Katina_BossSetup(Boss *); +void Katina_KaSaucerer_Init(Boss *); void Katina_UpdateEvents(Actor*); void Katina_Init(void); void SectorZ_MissileExplode(ActorAllRange* this, bool shotDown); @@ -33,21 +33,21 @@ void SectorZ_Missile_Update(Actor*); void SectorZ_UpdateEvents(Actor*); void SectorZ_LoadLevelObjects(void); -void Fortuna_Radar_Update(Actor*); -void Fortuna_Radar_Draw(Actor*); +void Fortuna_FoRadar_Update(Actor*); +void Fortuna_FoRadar_Draw(Actor*); void Bolse_Effect397_Update(Effect*); void Bolse_Effect397_Draw(Effect*); -void Bolse_Boss311_Update(Boss*); -void Bolse_Boss311_Draw(Boss*); +void Bolse_BoBaseCore_Update(Boss*); +void Bolse_BoBaseCore_Draw(Boss*); void Katina_LaserEnergyParticlesUpdate(Effect*); void Katina_LaserEnergyParticlesDraw(Effect*); -void Katina_BaseUpdate(Boss*); -void Katina_Base_Draw(Boss*); -void Katina_BossUpdate(Boss*); -void Katina_BossDraw(Boss*); +void Katina_KaFrontlineBase_Update(Boss*); +void Katina_KaFrontlineBase_Draw(Boss*); +void Katina_KaSaucerer_Update(Boss*); +void Katina_KaSaucerer_Draw(Boss*); void SectorZ_SpaceJunkUpdate(Actor*); void SectorZ_SpaceJunkDraw(Actor*); -void SectorZ_GreatFoxUpdate(Boss*); -void SectorZ_GreatFoxDraw(Boss*); +void SectorZ_SzGreatFox_Update(Boss*); +void SectorZ_SzGreatFox_Draw(Boss*); #endif diff --git a/include/i5.h b/include/i5.h index 75a3374b..71c8b1c1 100644 --- a/include/i5.h +++ b/include/i5.h @@ -11,7 +11,7 @@ extern Gfx* D_TI_801B7584[]; extern Gfx* D_TI_801B7608[]; extern Gfx* D_TI_801B769C[]; -extern f32 D_TI_801B83A8[]; +extern f32 aTiGorasHitbox[]; extern u8 D_MA_801BA1E8; extern f32 D_MA_801BE250[40]; extern s16 D_MA_801BE2F0[9]; @@ -26,27 +26,27 @@ void Macbeth_LevelComplete1(Player*); void OvlI5_CallFunction(u32 mode, void* ptr); void Titania_LevelStart(Player *); void Titania_80188F30(void); -void Titania_80189B80(Actor *); -void Titania_8018ADC4(Actor *); -void Titania_8018B720(Actor *); -void Titania_Actor231_Init(Actor *); -void Titania_8018BFB0(Actor *); +void Titania_TiFekuda_Init(Actor *); +void Titania_TiRasco_Init(Actor *); +void Titania_TiRasco_Dying(Actor *); +void Titania_TiBomb_Init(Actor *); +void Titania_TiDesertCrawler_Init(Actor *); void Titania_8018E3B0(Actor *); -void Titania_8018E3CC(Actor *); -void Titania_8018E5E8(Actor *); -void Titania_8018EFF0(Sprite *); -void Titania_8018F0D8(Scenery *); -void Titania_Boss306_Init(Boss *); +void Titania_TiDelphor_Init(Actor *); +void Titania_TiDelphorHead_Init(Actor *); +void Titania_TiCactus_Init(Sprite *); +void Titania_TiPillar_Init(Scenery *); +void Titania_TiGoras_Init(Boss *); void Titania_801990DC(Boss *); -void Macbeth_80199920(void); -void Macbeth_80199F8C(Actor *); -void Macbeth_801A3E70(Actor *); -void Macbeth_801A4660(Actor *); -void Macbeth_801A4AF8(Actor *); -void Macbeth_801A5E2C(Actor *); -void Macbeth_801A6134(Actor *); -void Macbeth_801A65E0(Scenery *); -void Macbeth_801A7D98(Actor *); +void Macbeth_InitLevel(void); +void Macbeth_Train_Init(Actor *); +void Macbeth_MaMaRailroadSwitch_Init(Actor *); +void Macbeth_MaBoulder_Init(Actor *); +void Macbeth_MaRailwaySignal_Init(Actor *); +void Macbeth_LockBars_Init(Actor *); +void Macbeth_MaBarrier_Init(Actor *); +void Macbeth_MaProximityLight_Init(Scenery *); +void Macbeth_Actor207_Init(Actor *); void Macbeth_801ACFBC(void); void Macbeth_801AD080(void); void Ground_801B5110(f32, f32, f32); @@ -54,80 +54,80 @@ void Ground_801B58AC(Gfx **, f32); bool Ground_801B6AEC(f32, f32, f32); s32 Ground_801B6E20(f32, f32, f32 *, f32 *, f32 *); void Macbeth_801AD144(PlayerShot*); -void Titania_80189120(f32, f32, f32, f32, f32); +void Titania_Effect368_Spawn(f32, f32, f32, f32, f32); bool Macbeth_801A3C20(f32); bool Macbeth_801A3300(Player*, f32, f32); bool Macbeth_801A3790(Player*, f32, f32); void Titania_Effect368_Update(Effect*); void Titania_Effect368_Draw(Effect*); -void Titania_Actor224_Update(Actor*); -void Titania_Actor226_Update(Actor*); -void Titania_Actor226_Draw(Actor*); -void Titania_Actor233_Update(Actor*); -void Titania_Actor233_Draw(Actor*); -void Titania_Actor230_Update(Actor*); -void Titania_Actor230_Draw(Actor*); -void Titania_Actor225_Update(Actor*); -void Titania_Actor232_Update(Actor*); -void Titania_Actor232_Draw(Actor*); -void Titania_Actor231_Update(Actor*); -void Titania_Actor231_Draw(Actor*); -void Titania_Actor229_Update(Actor*); -void Titania_Actor229_Draw(Actor*); -void Titania_Actor227_Update(Actor*); -void Titania_Actor227_Draw(Actor*); -void Titania_Actor228_Update(Actor*); -void Titania_Actor228_Draw(Actor*); +void Titania_TiTerrain_Update(Actor*); +void Titania_TiDesertRover_Update(Actor*); +void Titania_TiDesertRover_Draw(Actor*); +void Titania_TiFekuda_Update(Actor*); +void Titania_TiFekuda_Draw(Actor*); +void Titania_TiBoulder_Update(Actor*); +void Titania_TiBoulder_Draw(Actor*); +void Titania_TiLandmine_Update(Actor*); +void Titania_TiRasco_Update(Actor*); +void Titania_TiRasco_Draw(Actor*); +void Titania_TiBomb_Update(Actor*); +void Titania_TiBomb_Draw(Actor*); +void Titania_TiDesertCrawler_Update(Actor*); +void Titania_TiDesertCrawler_Draw(Actor*); +void Titania_TiDelphor_Update(Actor*); +void Titania_TiDelphor_Draw(Actor*); +void Titania_TiDelphorHead_Update(Actor*); +void Titania_TiDelphorHead_Draw(Actor*); void Titania_Cactus_Update(Sprite*); -void Titania_Scenery57_Update(Scenery*); -void Titania_Scenery57_Draw(Scenery*); -void Titania_Boss_Update(Boss*); -void Titania_Boss_Draw(Boss*); -void Macbeth_Actor205_Update(Actor*); -void Macbeth_Actor210_Update(Actor*); -void Macbeth_Actor209_Update(Actor*); -void Macbeth_Actor211_Update(Actor*); -void Macbeth_Actor208_Update(Actor*); -void Macbeth_Actor213_Update(Actor*); -void Macbeth_Actor212_Update(Actor*); -void Macbeth_Scenery104_Update(Scenery*); -void Macbeth_ActorDoodad_Draw(Actor*); -void Macbeth_SceneryDoodad_Draw(Scenery*); -void Macbeth_Scenery61_Draw(Scenery*); -void Macbeth_SceneryDoodad2_Draw(Scenery*); -void Macbeth_Scenery83_Update(Scenery*); -void Macbeth_Scenery83_Draw(Scenery*); -void Macbeth_Actor214_Update(Actor*); -void Macbeth_Actor214_Draw(Actor*); -void Macbeth_Actor215_Update(Actor*); -void Macbeth_Actor215_Draw(Actor*); -void Macbeth_Actor223_Update(Actor*); -void Macbeth_Actor223_Draw(Actor*); +void Titania_TiPillar_Update(Scenery*); +void Titania_TiPillar_Draw(Scenery*); +void Titania_TiGoras_Update(Boss*); +void Titania_TiGoras_Draw(Boss*); +void Macbeth_MaLocomotive_Update(Actor*); +void Macbeth_MaTrainCar4_Update(Actor*); +void Macbeth_MaTrainCar3_Update(Actor*); +void Macbeth_MaTrainCar5_Update(Actor*); +void Macbeth_MaTrainCar2_Update(Actor*); +void Macbeth_MaTrainCar7_Update(Actor*); +void Macbeth_MaTrainCar6_Update(Actor*); +void Macbeth_MaSwitchTrack_Update(Scenery*); +void Macbeth_Train_Draw(Actor*); +void Macbeth_TrainTrack_Draw(Scenery*); +void Macbeth_MaTower_Draw(Scenery*); +void Macbeth_IndicatorSign_Draw(Scenery*); +void Macbeth_MaTrainStopBlock_Update(Scenery*); +void Macbeth_MaTrainStopBlock_Draw(Scenery*); +void Macbeth_MaRailroadSwitch_Update(Actor*); +void Macbeth_MaRailroadSwitch_Draw(Actor*); +void Macbeth_MaBoulder_Update(Actor*); +void Macbeth_MaBoulder_Draw(Actor*); +void Macbeth_MaRailwaySignal_Update(Actor*); +void Macbeth_MaRailwaySignal_Draw(Actor*); void Macbeth_Effect378_Update(Effect*); void Macbeth_Effect378_Draw(Effect*); void Macbeth_Effect380_Update(Effect*); void Macbeth_Effect380_Draw(Effect*); -void Macbeth_Actor216_Update(Actor*); -void Macbeth_Actor216_Draw(Actor*); -void Macbeth_Actor217_Update(Actor*); -void Macbeth_Actor217_Draw(Actor*); -void Macbeth_Actor218_Update(Actor*); -void Macbeth_Actor218_Draw(Actor*); -void Macbeth_Scenery65_Draw(Scenery*); +void Macbeth_MaHorizontalLockBar_Update(Actor*); +void Macbeth_MaHorizontalLockBar_Draw(Actor*); +void Macbeth_MaVerticalLockBar_Update(Actor*); +void Macbeth_MaVerticalLockBar_Draw(Actor*); +void Macbeth_MaBarrier_Update(Actor*); +void Macbeth_MaBarrier_Draw(Actor*); +void Macbeth_MaProximityLight_Draw(Scenery*); void Macbeth_Actor219_Update(Actor*); void Macbeth_Actor219_Draw(Actor*); void Macbeth_Actor207_Update(Actor*); void Macbeth_Actor207_Draw(Actor*); -void Macbeth_Actor206_Update(Actor*); -void Macbeth_Actor220_Update(Actor*); -void Macbeth_Actor220_Draw(Actor*); -void Macbeth_Actor221_Update(Actor*); -void Macbeth_Actor221_Draw(Actor*); +void Macbeth_MaTrainCar1_Update(Actor*); +void Macbeth_MaBombDrop_Update(Actor*); +void Macbeth_MaBombDrop_Draw(Actor*); +void Macbeth_MaSpear_Update(Actor*); +void Macbeth_MaSpear_Draw(Actor*); void Macbeth_Effect379_Update(Effect*); void Macbeth_Effect379_Draw(Effect*); -void Macbeth_Actor222_Update(Actor*); -void Macbeth_Actor222_Draw(Actor*); +void Macbeth_MaShockBox_Update(Actor*); +void Macbeth_MaShockBox_Draw(Actor*); s32 Macbeth_801A55D4(s32 , Vec3f* , Vec3f* , s32 ); #endif diff --git a/include/i6.h b/include/i6.h index f02600e9..92934e30 100644 --- a/include/i6.h +++ b/include/i6.h @@ -29,44 +29,44 @@ void Andross_801888F4(Actor *); void Andross_80189214(void); void Andross_8018BDD8(void); void Andross_8018C390(Player*); -void Andross_Boss320_Init(Boss *); +void Andross_AndAndross_Init(Boss *); void Andross_801961AC(void); void Venom2_UpdateEvents(Actor*); void Venom2_LoadLevelObjects(void); -void SectorY_Boss314_Init(Boss *); -void SectorY_Actor204_Update(Actor*); -void SectorY_Actor204_Draw(Actor*); +void SectorY_SyShogun_Init(Boss *); +void SectorY_SyRobot_Update(Actor*); +void SectorY_SyRobot_Draw(Actor*); void Turret_Update(Player*); void Turret_UpdateCamera(Player*); void Turret_Draw(Player *); void Andross_Actor199_Update(Actor*); void Andross_Actor199_Draw(Actor*); -void Andross_Actor286_Update(Actor*); -void Andross_Actor286_Draw(Actor*); -void Andross_Actor290_Update(Actor*); -void Andross_Actor288_Update(Actor*); -void Andross_Actor289_Update(Actor*); -void Andross_Actor287_Update(Actor*); -void Andross_Boss321_Update(Boss*); -void Andross_Boss321_Draw(Boss*); +void Andross_AndBrainWaste_Update(Actor*); +void Andross_AndBrainWaste_Draw(Actor*); +void Andross_AndBossTimer_Update(Actor*); +void Andross_AndRadio_Update(Actor*); +void Andross_AndJamesTrigger_Update(Actor*); +void Andross_AndExplosion_Update(Actor*); +void Andross_AndBrain_Update(Boss*); +void Andross_AndBrain_Draw(Boss*); void Andross_Effect396_Update(Effect*); void Andross_Effect396_Draw(Effect*); -void Andross_Boss320_Update(Boss*); -void Andross_Boss320_Draw(Boss*); -void Andross_Actor285_Update(Actor*); -void Andross_Actor285_Draw(Actor*); -void Andross_Scenery132_Update(Scenery*); -void Andross_Scenery132_Draw(Scenery*); -void Andross_Scenery131_Update(Scenery*); -void Andross_Scenery131_Draw(Scenery*); -void Venom2_Boss_Update(Boss*); -void Venom2_Boss_Draw(Boss*); +void Andross_AndAndross_Update(Boss*); +void Andross_AndAndross_Draw(Boss*); +void Andross_AndLaserEmitter_Update(Actor*); +void Andross_AndLaserEmitter_Draw(Actor*); +void Andross_AndDoor_Update(Scenery*); +void Andross_AndDoor_Draw(Scenery*); +void Andross_AndPassage_Update(Scenery*); +void Andross_AndPassage_Draw(Scenery*); +void Venom2_Ve2Base_Update(Boss*); +void Venom2_Ve2Base_Draw(Boss*); void SectorY_Effect354_Draw(Effect*); void SectorY_Scenery156_Draw(Scenery*); -void SectorY_Boss_Update(Boss*); -void SectorY_Boss_Draw(Boss*); -void SectorY_Scenery109_Update(Scenery*); -void SectorY_Scenery112_Update(Scenery*); +void SectorY_SyShogun_Update(Boss*); +void SectorY_SyShogun_Draw(Boss*); +void SectorY_SyShip3Destroyed_Update(Scenery*); +void SectorY_SyShip4Destroyed_Update(Scenery*); #endif diff --git a/include/mods.h b/include/mods.h index 5b0a63aa..3392f4ba 100644 --- a/include/mods.h +++ b/include/mods.h @@ -1,12 +1,13 @@ #ifndef MODS_H #define MODS_H + /** * Quick Boot: * Define this variable to a game state to boot into that - * state. Two presets (map and main menu) are provided. + * state. Two presets (map and main menu) are provided. * For the full list of game states, see sf64thread.h. -*/ + */ // #define MODS_BOOT_STATE 3 // main menu // #define MODS_BOOT_STATE 4 // map @@ -15,7 +16,7 @@ * Use the D-Pad to select a level. Press L to start in * an advanced level phase (warp zone or Andross fight). * Useful for debugging and speedrunning training. -*/ + */ #define MODS_LEVEL_SELECT 0 /** @@ -24,38 +25,52 @@ * Use L to switch between jukebox and soundtrack * Use D-PAD to move the cursor * Use C buttons to edit values -*/ + */ #define MODS_SFX_JUKEBOX 0 /** * Auto debugger: * Crash debugger appears without needing to enter code. -*/ + */ #define MODS_AUTO_DEBUGGER 0 /** * FPS Counter: * Hold Z + R and press L to toggle FPS Display -*/ + */ #define MODS_FPS_COUNTER 0 /** * RAM modifier: * Hold Z + R and press C> to cycle modes - * + * * Cheats: * Use D-Pad up and down to select a cheat * Use D-Pad left and right to set its value * Press L to set the value or twice to lock it - * + * * Object Ram Editor: * Watch up to seven addresses from the player and object arrays * Use D-Pad to move the cursor and change values * Press L to edit the highlighted value -*/ - + */ #define MODS_RAM_MOD 0 +/** + * Spawner: + * Spawn Scenery, Actors, Bosses, Sprites, Items, Effects or even Event Actors. + * + * Controls: + * D-Pad left and right to set the object Id. + * C-Right to change between spawn modes. + * Analog stick sets the spawn position. + * L-Trigger to spawn the object. + * D-Pad UP to kill all objects. + * D-Pad DOWN to freeze/unfreeze the ship speed. + * WARNING: Spawning an object that's not loaded in memory will likely result in a crash. + */ +#define MODS_SPAWNER 0 + /* ************************* */ #if MODS_LEVEL_SELECT == 1 @@ -70,4 +85,8 @@ static void Play_RenderFps(void); void RamMod_Update(void); #endif +#if MODS_SPAWNER == 1 +void Spawner(void); +#endif + #endif diff --git a/include/sf64audio_provisional.h b/include/sf64audio_provisional.h index 0b14777f..9b952524 100644 --- a/include/sf64audio_provisional.h +++ b/include/sf64audio_provisional.h @@ -1,7 +1,7 @@ /** * This file is provisional, some of the structs need to be corrected, and others might be unused * This file is only meant to be used as reference to help audio decompilation -*/ + */ #ifndef SF64_AUDIO_H #define SF64_AUDIO_H @@ -57,7 +57,7 @@ typedef void (*AudioCustomUpdateFunction)(void); // Both left and right channels #define DMEM_2CH_SIZE (2 * DMEM_1CH_SIZE) -#define AIBUF_LEN (170 * SAMPLES_PER_FRAME) // number of samples +#define AIBUF_LEN (170 * SAMPLES_PER_FRAME) // number of samples #define AIBUF_SIZE (AIBUF_LEN * SAMPLE_SIZE) // number of bytes // Filter sizes @@ -216,16 +216,16 @@ typedef struct { /* 0x04 */ u32 end; /* 0x08 */ u32 count; /* 0x10 */ u64 predictorState[4]; // only exists if count != 0. 8-byte aligned -} AdpcmLoop; // size = 0x30 or 0x10, 0x8 aligned +} AdpcmLoop; // size = 0x30 or 0x10, 0x8 aligned typedef struct { /* 0x00 */ s32 order; /* 0x04 */ s32 numPredictors; - #ifdef AVOID_UB +#ifdef AVOID_UB /* 0x08 */ u64 book[]; // size 8 * order * numPredictors. - #else +#else /* 0x08 */ u64 book[1]; // size 8 * order * numPredictors. - #endif +#endif } AdpcmBook; // size >= 8, 0x8 aligned typedef struct { @@ -290,7 +290,7 @@ typedef struct { /* 0x0C */ s32 startPos; // start pos in ring buffer /* 0x10 */ s16 lengthA; // first length in ring buffer (from startPos, at most until end) /* 0x12 */ s16 lengthB; // second length in ring buffer (from pos 0) -} ReverbRingBufferItem; // size = 0x14 +} ReverbRingBufferItem; // size = 0x14 typedef struct { /* 0x000 */ u8 resampleFlags; @@ -300,7 +300,7 @@ typedef struct { /* 0x004 */ u8 downsampleRate; /* 0x005 */ s8 unk_05; /* 0x006 */ u16 windowSize; - /* 0x008 */ u16 decayRatio; // determines how much reverb persists + /* 0x008 */ u16 decayRatio; // determines how much reverb persists /* 0x00A */ u16 unk_0A; /* 0x00C */ u16 leakRtL; /* 0x00E */ u16 leakLtR; @@ -341,7 +341,7 @@ typedef struct { /* 0x004 */ u8 seqId; /* 0x005 */ u8 defaultFont; /* 0x006 */ u8 unk_06[1]; - /* 0x007 */ s8 unk_07[1]; // indexed like an array, but that can't be + /* 0x007 */ s8 unk_07[1]; // indexed like an array, but that can't be /* 0x008 */ u16 tempo; // seqTicks per minute /* 0x00A */ u16 tempoAcc; // tempo accumulation, used in a discretized algorithm to apply tempo. /* 0x00C */ u16 tempoChange; // Used to adjust the tempo without altering the base tempo. @@ -365,8 +365,8 @@ typedef struct { /* 0x0D8 */ s32 skipTicks; /* 0x0DC */ u32 scriptCounter; /* 0x0E0 */ char - padE4[0x6C]; // unused struct members for sequence/sound font dma management, according to sm64 decomp -} SequencePlayer; // size = 0x14C + padE4[0x6C]; // unused struct members for sequence/sound font dma management, according to sm64 decomp +} SequencePlayer; // size = 0x14C typedef struct { /* 0x0 */ u8 decayIndex; // index used to obtain adsr decay rate from adsrDecayTable @@ -381,7 +381,7 @@ typedef struct { /* 0x00 */ u8 hang : 1; /* 0x00 */ u8 decay : 1; /* 0x00 */ u8 release : 1; - /* 0x00 */ + /* 0x00 */ } s; /* 0x00 */ u8 asByte; } action; @@ -475,7 +475,7 @@ typedef struct SequenceChannel { /* 0x7C */ NotePool notePool; /* 0xBC */ s8 seqScriptIO[8]; // bridge between .seq script and audio lib, "io ports" /* 0xC4 */ u16 unkC4; -} SequenceChannel; // size = 0xC8 +} SequenceChannel; // size = 0xC8 // Might also be known as a Track, according to sm64 debug strings (?). typedef struct SequenceLayer { @@ -502,19 +502,19 @@ typedef struct SequenceLayer { /* 0x28 */ f32 velocitySquare; /* 0x2C */ f32 noteVelocity; /* 0x30 */ f32 noteFreqMod; - /* 0x34 */ u16 shortNoteDefaultDelay; + /* 0x34 */ u16 shortNoteDefaultDelay; /* 0x36 */ u16 lastDelay; /* 0x38 */ s16 delay; /* 0x3A */ s16 gateDelay; /* 0x3C */ s16 delay2; - /* 0x40 */ struct Note *note; + /* 0x40 */ struct Note* note; /* 0x44 */ Instrument* instrument; - /* 0x48 */ TunedSample *tunedSample; - /* 0x4C */ SequenceChannel *channel; + /* 0x48 */ TunedSample* tunedSample; + /* 0x4C */ SequenceChannel* channel; /* 0x50 */ SeqScriptState state; /* 0x6C */ AudioListItem listItem; /* 0x7C */ char pad7C[4]; -} SequenceLayer; //size = 0x80 +} SequenceLayer; // size = 0x80 typedef struct UnkStruct_800097A8 { /* 0x00 */ s16* unk_0; @@ -525,7 +525,7 @@ typedef struct UnkStruct_800097A8 { /* 0x14 */ struct SampleDma* unk_14; /* 0x18 */ s16 unk18; /* 0x1A */ char pad1A[6]; -} UnkStruct_800097A8; /* size = 0x20 */ +} UnkStruct_800097A8; /* size = 0x20 */ typedef struct { /* 0x000 */ s16 adpcmdecState[16]; @@ -821,7 +821,14 @@ typedef struct { } AudioSlowLoadBuffer; // size = 0xC4 typedef struct { - /* 0x00 */ u32 romAddr; + /* 0x00 */ s16 numEntries; + /* 0x02 */ s16 unkMediumParam; + /* 0x04 */ uintptr_t romAddr; + /* 0x08 */ char pad[8]; +} AudioTableBase; + +typedef struct { + /* 0x00 */ uintptr_t romAddr; /* 0x04 */ u32 size; /* 0x08 */ s8 medium; /* 0x09 */ s8 cachePolicy; @@ -831,23 +838,9 @@ typedef struct { } AudioTableEntry; // size = 0x10 typedef struct { - /* 0x00 */ s16 numEntries; - /* 0x02 */ s16 unkMediumParam; - /* 0x04 */ u32 romAddr; - /* 0x08 */ char pad[0x8]; -} AudioTableBase; - -typedef struct { - /* 0x00 */ s16 numEntries; - /* 0x02 */ s16 unkMediumParam; - /* 0x04 */ u32 romAddr; - /* 0x08 */ char pad[0x8]; - #ifdef AVOID_UB + /* 0x00 */ AudioTableBase base; /* 0x10 */ AudioTableEntry entries[]; // (dynamic size) - #else - /* 0x10 */ AudioTableEntry entries[1]; // (dynamic size) - #endif -} AudioTable; // size >= 0x20 +} AudioTable; // size >= 0x20 typedef struct SampleDma { /* 0x00 */ u8* ramAddr; @@ -914,13 +907,13 @@ typedef struct { } SoundTestTrack; // size: 0x6 typedef struct { - /* 0x00 */ f32 *xPos; - /* 0x04 */ f32 *yPos; - /* 0x08 */ f32 *zPos; + /* 0x00 */ f32* xPos; + /* 0x04 */ f32* yPos; + /* 0x08 */ f32* zPos; /* 0x0C */ u8 token; - /* 0x10 */ f32 *freqMod; - /* 0x14 */ f32 *volMod; - /* 0x18 */ s8 *reverbAdd; + /* 0x10 */ f32* freqMod; + /* 0x14 */ f32* volMod; + /* 0x18 */ s8* reverbAdd; /* 0x1C */ f32 distance; /* 0x20 */ u32 priority; /* 0x24 */ u32 sfxId; @@ -943,7 +936,7 @@ typedef struct { typedef struct { /* 0x0 */ u32 priority; // lower is more prioritized /* 0x4 */ u8 entryIndex; -} ActiveSfx; // size 0x8 +} ActiveSfx; // size 0x8 typedef struct { /* 0x0 */ u8 seqId; @@ -977,19 +970,19 @@ typedef struct { /* 0x014 */ u32 tempoCmd; /* 0x018 */ u16 tempoOriginal; // stores the original tempo before modifying it (to reset back to) /* 0x01C */ Modulation tempo; - /* 0x02C */ u32 setupCmd[5]; // a queue of cmds to execute once the player is disabled - /* 0x040 */ u8 setupCmdTimer; // only execute setup commands when the timer is at 0. - /* 0x041 */ u8 setupCmdNum; // number of setup commands requested once the player is disabled + /* 0x02C */ u32 setupCmd[5]; // a queue of cmds to execute once the player is disabled + /* 0x040 */ u8 setupCmdTimer; // only execute setup commands when the timer is at 0. + /* 0x041 */ u8 setupCmdNum; // number of setup commands requested once the player is disabled /* 0x042 */ u8 setupFadeTimer; /* 0x044 */ ChannelModulation channelMod[16]; /* 0x244 */ u16 freqModChannelFlags; /* 0x246 */ u16 volChannelFlags; - /* 0x248 */ u16 seqId; // active seqId currently playing. Resets when sequence stops - /* 0x24A */ u16 prevSeqId; // last seqId played on a player. Does not reset when sequence stops + /* 0x248 */ u16 seqId; // active seqId currently playing. Resets when sequence stops + /* 0x24A */ u16 prevSeqId; // last seqId played on a player. Does not reset when sequence stops /* 0x24C */ u16 channelPortMask; - /* 0x250 */ u32 startSeqCmd; // This name comes from MM + /* 0x250 */ u32 startSeqCmd; // This name comes from MM /* 0x254 */ u8 isWaitingForFonts; // This name comes from MM -} ActiveSequence; // size 0x258 +} ActiveSequence; // size 0x258 typedef struct { /* 0x0 */ f32 volMod; @@ -1022,12 +1015,12 @@ typedef struct { #define SEQ_HEX0(seqId) ((seqId) >> 28 & 0xFF) #define SEQ_HEX1(seqId) (((seqId) & (0xF << 24)) >> 24 & 0xFF) -#define SEQ_BYTE4(seqId) ((seqId) & 0xFF) -#define SEQ_BYTE3(seqId) (((seqId) & (0xFF << 8)) >>8 & 0xFF) -#define SEQ_BYTE2(seqId) (((seqId) & (0xFF << 16)) >>13 & 0xFFFF) +#define SEQ_BYTE4(seqId) ((seqId) &0xFF) +#define SEQ_BYTE3(seqId) (((seqId) & (0xFF << 8)) >> 8 & 0xFF) +#define SEQ_BYTE2(seqId) (((seqId) & (0xFF << 16)) >> 13 & 0xFFFF) // audio_synthesis -void func_80008780(f32 *, s32, f32 *); +void func_80008780(f32*, s32, f32*); Acmd* func_80009B64(Acmd* aList, s32* cmdCount, s16* aiBufStart, s32 aiBufLen); // audio_effects @@ -1077,7 +1070,7 @@ void func_800128B4(void); void func_80012964(NotePool* pool); void func_80012AC4(NotePool* pool, s32); void func_80012C40(Note* note); -Note *func_8001301C(SequenceLayer* layer); +Note* func_8001301C(SequenceLayer* layer); void func_800132E8(void); // audio_seqplayer @@ -1091,18 +1084,15 @@ void func_800168BC(void); // audio_thread void AudioThread_ScheduleProcessCmds(void); -u32 AudioThread_GetAsyncLoadStatus(u32 *); +u32 AudioThread_GetAsyncLoadStatus(u32*); u8* AudioThread_GetFontsForSequence(s32 seqId, u32* outNumFonts); bool AudioThread_ResetComplete(void); void AudioThread_ResetAudioHeap(s32); void AudioThread_Init(void); -extern AudioTableBase gSampleBankTableInit; -// extern AudioTableEntry gSampleBankTableInitEntries[]; -extern AudioTableBase gSeqTableInit; -// extern AudioTableEntry gSeqTableInitEntries[]; -extern AudioTableBase gSoundFontTableInit; -// extern AudioTableEntry gSoundFontTableInitEntries[]; +extern AudioTable gSampleBankTableInit; +extern AudioTable gSeqTableInit; +extern AudioTable gSoundFontTableInit; extern u8 gSeqFontTableInit[]; extern AudioSpec gAudioSpecs[]; @@ -1150,7 +1140,7 @@ extern u8 gSeqLoadStatus[256]; extern volatile u8 gAudioResetStep; extern u8 gAudioSpecId; extern s32 gResetFadeoutFramesLeft; -extern u8 sAudioContextPad1000[0x1000];// 0x1000 gap +extern u8 sAudioContextPad1000[0x1000]; // 0x1000 gap extern Note* gNotes; // 0x4 extern SequencePlayer gSeqPlayers[4]; @@ -1186,10 +1176,10 @@ extern u8 gSampleDmaReuseQueue1RdPos; extern u8 gSampleDmaReuseQueue2RdPos; extern u8 gSampleDmaReuseQueue1WrPos; extern u8 gSampleDmaReuseQueue2WrPos; -extern AudioTable *gSequenceTable; +extern AudioTable* gSequenceTable; extern AudioTable* gSoundFontTable; -extern AudioTable *gSampleBankTable; -extern u8 *gSeqFontTable; +extern AudioTable* gSampleBankTable; +extern u8* gSeqFontTable; extern s16 gNumSequences; extern SoundFont* gSoundFontList; // 0x4 diff --git a/include/sf64object.h b/include/sf64object.h index 3fe7dc3b..8b465bb4 100644 --- a/include/sf64object.h +++ b/include/sf64object.h @@ -41,38 +41,38 @@ typedef struct { } CollisionHeader2; // size = 0x24 typedef enum { - /* 0 */ COL1_0, // OBJ_ACTOR_180 + /* 0 */ COL1_0, // OBJ_ACTOR_ME_MOLAR_ROCK /* 1 */ COL1_1, // OBJ_SCENERY_ME_TUNNEL /* 2 */ COL1_2, /* 3 */ COL1_3, // ACTOR_EVENT_ID - /* 4 */ COL1_4, // OBJ_BOSS_FO - /* 5 */ COL1_5, // OBJ_SCENERY_149 - /* 6 */ COL1_6, // OBJ_SCENERY_150 - /* 7 */ COL1_7, // OBJ_BOSS_309 + /* 4 */ COL1_4, // OBJ_BOSS_FO_BASE + /* 5 */ COL1_5, // OBJ_SCENERY_FO_MOUNTAIN_2 + /* 6 */ COL1_6, // OBJ_SCENERY_FO_MOUNTAIN_3 + /* 7 */ COL1_7, // OBJ_BOSS_BO_BASE /* 8 */ COL1_8, // OBJ_BOSS_SZ_GREAT_FOX - /* 9 */ COL1_9, // OBJ_BOSS_VE2 + /* 9 */ COL1_9, // OBJ_BOSS_VE2_BASE } CollisonId_1; typedef enum { /* 0 */ COL2_0, // default /* 1 */ COL2_1, // OBJ_SCENERY_CO_BUMP_4, OBJ_SCENERY_CO_BUMP_5 /* 2 */ COL2_2, // OBJ_SCENERY_CO_BUMP_2 - /* 3 */ COL2_3, // OBJ_SCENERY_CO_BUMP_3, OBJ_SCENERY_69 - /* 4 */ COL2_4, // OBJ_SCENERY_140 + /* 3 */ COL2_3, // OBJ_SCENERY_CO_BUMP_3, OBJ_SCENERY_MA_TERRAIN_BUMP + /* 4 */ COL2_4, // OBJ_SCENERY_VS_PYRAMID_1 /* 5 */ COL2_5, // PLAYERSHOT_7 ? - /* 6 */ COL2_6, // OBJ_SCENERY_141 - /* 7 */ COL2_7, // OBJ_SCENERY_47 - /* 8 */ COL2_8, // OBJ_SCENERY_70 - /* 9 */ COL2_9, // OBJ_SCENERY_72 - /* 10 */ COL2_10, // OBJ_SCENERY_71 - /* 11 */ COL2_11, // OBJ_SCENERY_73 - /* 12 */ COL2_12, // OBJ_SCENERY_67 - /* 13 */ COL2_13, // OBJ_SCENERY_74 - /* 14 */ COL2_14, // OBJ_SCENERY_117 - /* 15 */ COL2_15, // OBJ_SCENERY_124 - /* 16 */ COL2_16, // OBJ_SCENERY_126 - /* 17 */ COL2_17, // OBJ_SCENERY_143 - /* 18 */ COL2_18, // OBJ_SCENERY_120 + /* 6 */ COL2_6, // OBJ_SCENERY_VS_PYRAMID_2 + /* 7 */ COL2_7, // OBJ_SCENERY_ZO_ISLAND + /* 8 */ COL2_8, // OBJ_SCENERY_MA_FLOOR_1 + /* 9 */ COL2_9, // OBJ_SCENERY_MA_FLOOR_3 + /* 10 */ COL2_10, // OBJ_SCENERY_MA_FLOOR_2 + /* 11 */ COL2_11, // OBJ_SCENERY_MA_FLOOR_4 + /* 12 */ COL2_12, // OBJ_SCENERY_MA_WALL_3 + /* 13 */ COL2_13, // OBJ_SCENERY_MA_FLOOR_5 + /* 14 */ COL2_14, // OBJ_SCENERY_AQ_CORAL_REEF_1 + /* 15 */ COL2_15, // OBJ_SCENERY_AQ_BUMP_1 + /* 16 */ COL2_16, // OBJ_SCENERY_AQ_BUMP_2 + /* 17 */ COL2_17, // OBJ_SCENERY_VS_KA_FLBASE + /* 18 */ COL2_18, // OBJ_SCENERY_AQ_CORAL_REEF_2 } CollisionId_2; typedef struct { @@ -231,7 +231,7 @@ typedef struct Boss { /* 0x046 */ s16 unk_046; /* 0x048 */ s16 unk_048; /* 0x04A */ s16 unk_04A; - /* 0x04C */ s16 unk_04C; + /* 0x04C */ s16 animFrame; /* 0x04E */ s16 state; /* 0x050 */ s16 timer_050; /* 0x052 */ s16 timer_052; @@ -329,7 +329,7 @@ typedef enum ObjectId { /* 20 */ OBJ_SCENERY_CO_ARCH_1, /* 21 */ OBJ_SCENERY_CO_ARCH_2, /* 22 */ OBJ_SCENERY_CO_ARCH_3, - /* 23 */ OBJ_SCENERY_CO_RADAR, + /* 23 */ OBJ_SCENERY_CO_RADAR_DISH, /* 24 */ OBJ_SCENERY_CO_HIGHWAY_5, /* 25 */ OBJ_SCENERY_CO_HIGHWAY_6, /* 26 */ OBJ_SCENERY_CO_HIGHWAY_7, @@ -349,124 +349,124 @@ typedef enum ObjectId { /* 40 */ OBJ_SCENERY_CO_BUILDING_9, /* 41 */ OBJ_SCENERY_CO_BUILDING_10, /* 42 */ OBJ_SCENERY_IBEAM, - /* 43 */ OBJ_SCENERY_ZO_ROCK_1, - /* 44 */ OBJ_SCENERY_44, - /* 45 */ OBJ_SCENERY_45, - /* 46 */ OBJ_SCENERY_46, - /* 47 */ OBJ_SCENERY_47, - /* 48 */ OBJ_SCENERY_48, - /* 49 */ OBJ_SCENERY_49, - /* 50 */ OBJ_SCENERY_50, - /* 51 */ OBJ_SCENERY_51, - /* 52 */ OBJ_SCENERY_52, - /* 53 */ OBJ_SCENERY_53, + /* 43 */ OBJ_SCENERY_ZO_ROCK, + /* 44 */ OBJ_SCENERY_ZO_OIL_RIG_1, + /* 45 */ OBJ_SCENERY_ZO_OIL_RIG_2, + /* 46 */ OBJ_SCENERY_ZO_OIL_RIG_3, + /* 47 */ OBJ_SCENERY_ZO_ISLAND, + /* 48 */ OBJ_SCENERY_VE1_WALL_1, + /* 49 */ OBJ_SCENERY_VE1_WALL_2, + /* 50 */ OBJ_SCENERY_VE1_WALL_3, + /* 51 */ OBJ_SCENERY_VE1_HALLWAY_OBSTACLE, + /* 52 */ OBJ_SCENERY_VE1_GENERATOR, + /* 53 */ OBJ_SCENERY_VE1_WATCH_POST, /* 54 */ OBJ_SCENERY_CO_WATERFALL, /* 55 */ OBJ_SCENERY_CO_ROCKWALL, /* 56 */ OBJ_SCENERY_CO_DOORS, - /* 57 */ OBJ_SCENERY_57, - /* 58 */ OBJ_SCENERY_58, - /* 59 */ OBJ_SCENERY_59, - /* 60 */ OBJ_SCENERY_60, - /* 61 */ OBJ_SCENERY_61, - /* 62 */ OBJ_SCENERY_62, + /* 57 */ OBJ_SCENERY_TI_PILLAR, + /* 58 */ OBJ_SCENERY_TI_BRIDGE, + /* 59 */ OBJ_SCENERY_MA_BUILDING_1, + /* 60 */ OBJ_SCENERY_MA_BUILDING_2, + /* 61 */ OBJ_SCENERY_MA_TOWER, + /* 62 */ OBJ_SCENERY_MA_WALL_1, /* 63 */ OBJ_SCENERY_63, - /* 64 */ OBJ_SCENERY_64, - /* 65 */ OBJ_SCENERY_65, - /* 66 */ OBJ_SCENERY_66, - /* 67 */ OBJ_SCENERY_67, - /* 68 */ OBJ_SCENERY_68, - /* 69 */ OBJ_SCENERY_69, - /* 70 */ OBJ_SCENERY_70, - /* 71 */ OBJ_SCENERY_71, - /* 72 */ OBJ_SCENERY_72, - /* 73 */ OBJ_SCENERY_73, - /* 74 */ OBJ_SCENERY_74, - /* 75 */ OBJ_SCENERY_75, - /* 76 */ OBJ_SCENERY_76, - /* 77 */ OBJ_SCENERY_77, - /* 78 */ OBJ_SCENERY_78, - /* 79 */ OBJ_SCENERY_79, - /* 80 */ OBJ_SCENERY_80, - /* 81 */ OBJ_SCENERY_81, - /* 82 */ OBJ_SCENERY_82, - /* 83 */ OBJ_SCENERY_83, - /* 84 */ OBJ_SCENERY_84, - /* 85 */ OBJ_SCENERY_85, - /* 86 */ OBJ_SCENERY_86, - /* 87 */ OBJ_SCENERY_87, - /* 88 */ OBJ_SCENERY_88, - /* 89 */ OBJ_SCENERY_89, - /* 90 */ OBJ_SCENERY_90, - /* 91 */ OBJ_SCENERY_91, - /* 92 */ OBJ_SCENERY_92, - /* 93 */ OBJ_SCENERY_93, - /* 94 */ OBJ_SCENERY_94, - /* 95 */ OBJ_SCENERY_95, - /* 96 */ OBJ_SCENERY_96, - /* 97 */ OBJ_SCENERY_97, - /* 98 */ OBJ_SCENERY_98, - /* 99 */ OBJ_SCENERY_99, - /* 100 */ OBJ_SCENERY_100, - /* 101 */ OBJ_SCENERY_101, - /* 102 */ OBJ_SCENERY_102, - /* 103 */ OBJ_SCENERY_103, - /* 104 */ OBJ_SCENERY_104, - /* 105 */ OBJ_SCENERY_105, - /* 106 */ OBJ_SCENERY_106, - /* 107 */ OBJ_SCENERY_107, - /* 108 */ OBJ_SCENERY_108, - /* 109 */ OBJ_SCENERY_109, - /* 110 */ OBJ_SCENERY_110, - /* 111 */ OBJ_SCENERY_111, - /* 112 */ OBJ_SCENERY_112, - /* 113 */ OBJ_SCENERY_113, - /* 114 */ OBJ_SCENERY_114, - /* 115 */ OBJ_SCENERY_115, - /* 116 */ OBJ_SCENERY_116, - /* 117 */ OBJ_SCENERY_117, - /* 118 */ OBJ_SCENERY_118, - /* 119 */ OBJ_SCENERY_119, - /* 120 */ OBJ_SCENERY_120, - /* 121 */ OBJ_SCENERY_121, - /* 122 */ OBJ_SCENERY_122, - /* 123 */ OBJ_SCENERY_123, - /* 124 */ OBJ_SCENERY_124, - /* 125 */ OBJ_SCENERY_125, - /* 126 */ OBJ_SCENERY_126, - /* 127 */ OBJ_SCENERY_127, - /* 128 */ OBJ_SCENERY_128, - /* 129 */ OBJ_SCENERY_129, - /* 130 */ OBJ_SCENERY_130, - /* 131 */ OBJ_SCENERY_131, - /* 132 */ OBJ_SCENERY_132, - /* 133 */ OBJ_SCENERY_133, - /* 134 */ OBJ_SCENERY_134, - /* 135 */ OBJ_SCENERY_135, - /* 136 */ OBJ_SCENERY_136, - /* 137 */ OBJ_SCENERY_137, - /* 138 */ OBJ_SCENERY_138, - /* 139 */ OBJ_SCENERY_139, - /* 140 */ OBJ_SCENERY_140, - /* 141 */ OBJ_SCENERY_141, - /* 142 */ OBJ_SCENERY_142, - /* 143 */ OBJ_SCENERY_143, - /* 144 */ OBJ_SCENERY_144, - /* 145 */ OBJ_SCENERY_145, - /* 146 */ OBJ_SCENERY_146, + /* 64 */ OBJ_SCENERY_MA_GUILLOTINE, + /* 65 */ OBJ_SCENERY_MA_PROXIMITY_LIGHT, + /* 66 */ OBJ_SCENERY_MA_WALL_2, + /* 67 */ OBJ_SCENERY_MA_WALL_3, + /* 68 */ OBJ_SCENERY_MA_WALL_4, + /* 69 */ OBJ_SCENERY_MA_TERRAIN_BUMP, + /* 70 */ OBJ_SCENERY_MA_FLOOR_1, + /* 71 */ OBJ_SCENERY_MA_FLOOR_2, + /* 72 */ OBJ_SCENERY_MA_FLOOR_3, + /* 73 */ OBJ_SCENERY_MA_FLOOR_4, + /* 74 */ OBJ_SCENERY_MA_FLOOR_5, + /* 75 */ OBJ_SCENERY_MA_FLOOR_6, + /* 76 */ OBJ_SCENERY_MA_WEAPONS_FACTORY, + /* 77 */ OBJ_SCENERY_MA_INDICATOR_SIGN, + /* 78 */ OBJ_SCENERY_MA_DISTANCE_SIGN_1, + /* 79 */ OBJ_SCENERY_MA_DISTANCE_SIGN_2, + /* 80 */ OBJ_SCENERY_MA_DISTANCE_SIGN_3, + /* 81 */ OBJ_SCENERY_MA_DISTANCE_SIGN_4, + /* 82 */ OBJ_SCENERY_MA_DISTANCE_SIGN_5, + /* 83 */ OBJ_SCENERY_MA_TRAIN_STOP_BLOCK, + /* 84 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_1, + /* 85 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_2, + /* 86 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_3, + /* 87 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_4, + /* 88 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_5, + /* 89 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_6, + /* 90 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_7, + /* 91 */ OBJ_SCENERY_MA_RAILROAD_SWITCH_8, + /* 92 */ OBJ_SCENERY_MA_TRAIN_TRACK_1, + /* 93 */ OBJ_SCENERY_MA_TRAIN_TRACK_2, + /* 94 */ OBJ_SCENERY_MA_TRAIN_TRACK_3, + /* 95 */ OBJ_SCENERY_MA_TRAIN_TRACK_4, + /* 96 */ OBJ_SCENERY_MA_TRAIN_TRACK_5, + /* 97 */ OBJ_SCENERY_MA_TRAIN_TRACK_6, + /* 98 */ OBJ_SCENERY_MA_TRAIN_TRACK_7, + /* 99 */ OBJ_SCENERY_MA_TRAIN_TRACK_8, + /* 100 */ OBJ_SCENERY_MA_TRAIN_TRACK_9, + /* 101 */ OBJ_SCENERY_MA_TRAIN_TRACK_10, + /* 102 */ OBJ_SCENERY_MA_TRAIN_TRACK_11, + /* 103 */ OBJ_SCENERY_MA_TRAIN_TRACK_12, + /* 104 */ OBJ_SCENERY_MA_SWITCH_TRACK, + /* 105 */ OBJ_SCENERY_MA_TRAIN_TRACK_13, + /* 106 */ OBJ_SCENERY_SY_SHIP_1, + /* 107 */ OBJ_SCENERY_SY_SHIP_2, + /* 108 */ OBJ_SCENERY_SY_SHIP_3, + /* 109 */ OBJ_SCENERY_SY_SHIP_3_DESTROYED, + /* 110 */ OBJ_SCENERY_SY_SHIP_4, + /* 111 */ OBJ_SCENERY_SY_SHIP_DEBRIS, + /* 112 */ OBJ_SCENERY_SY_SHIP_2_DESTROYED, + /* 113 */ OBJ_SPRITE_SY_SHIP_2, // Unused + /* 114 */ OBJ_SPRITE_SY_SHIP_3, // Unused + /* 115 */ OBJ_SCENERY_SY_SHIP_PROJECTILE, + /* 116 */ OBJ_SCENERY_SY_SHIP_WINDOWS, + /* 117 */ OBJ_SCENERY_AQ_CORAL_REEF_1, + /* 118 */ OBJ_SCENERY_AQ_TUNNEL_1, + /* 119 */ OBJ_SCENERY_AQ_ARCH, + /* 120 */ OBJ_SCENERY_AQ_CORAL_REEF_2, + /* 121 */ OBJ_SCENERY_AQ_ROCK, + /* 122 */ OBJ_SCENERY_AQ_WALL_1, + /* 123 */ OBJ_SCENERY_AQ_ROOF, + /* 124 */ OBJ_SCENERY_AQ_BUMP_1, + /* 125 */ OBJ_SCENERY_AQ_TUNNEL_2, + /* 126 */ OBJ_SCENERY_AQ_BUMP_2, + /* 127 */ OBJ_SCENERY_VE1_TEMPLE_ENTRANCE, + /* 128 */ OBJ_SCENERY_VE1_TEMPLE_INTERIOR_1, + /* 129 */ OBJ_SCENERY_VE1_TEMPLE_INTERIOR_2, + /* 130 */ OBJ_SCENERY_VE1_TEMPLE_INTERIOR_3, + /* 131 */ OBJ_SCENERY_AND_PASSAGE, + /* 132 */ OBJ_SCENERY_AND_DOOR, + /* 133 */ OBJ_SCENERY_TR_BUILDING, + /* 134 */ OBJ_SCENERY_AND_PATH_INTERSECTION, + /* 135 */ OBJ_SCENERY_AND_PATH_WALLS, + /* 136 */ OBJ_SCENERY_AND_PATH_EXIT, + /* 137 */ OBJ_SCENERY_AND_PATH_ENTRANCE, + /* 138 */ OBJ_SCENERY_VS_BUILDING_1, // Building with Pepper's face. + /* 139 */ OBJ_SCENERY_VS_BUILDING_2, // Building with Pepper's face. Duplicate from previous? + /* 140 */ OBJ_SCENERY_VS_PYRAMID_1, + /* 141 */ OBJ_SCENERY_VS_PYRAMID_2, + /* 142 */ OBJ_SCENERY_VS_ARCH, + /* 143 */ OBJ_SCENERY_VS_KA_FLBASE, + /* 144 */ OBJ_SCENERY_VS_SPACE_JUNK_1, + /* 145 */ OBJ_SCENERY_VS_SPACE_JUNK_2, + /* 146 */ OBJ_SCENERY_VS_SPACE_JUNK_3, /* 147 */ OBJ_SCENERY_147, - /* 148 */ OBJ_SCENERY_148, - /* 149 */ OBJ_SCENERY_149, - /* 150 */ OBJ_SCENERY_150, - /* 151 */ OBJ_SCENERY_151, - /* 152 */ OBJ_SCENERY_152, - /* 153 */ OBJ_SCENERY_153, - /* 154 */ OBJ_SCENERY_154, - /* 155 */ OBJ_SCENERY_155, - /* 156 */ OBJ_SCENERY_156, - /* 157 */ OBJ_SCENERY_157, - /* 158 */ OBJ_SCENERY_158, - /* 159 */ OBJ_SCENERY_159, - /* 160 */ OBJ_SCENERY_160, + /* 148 */ OBJ_SCENERY_FO_MOUNTAIN_1, + /* 149 */ OBJ_SCENERY_FO_MOUNTAIN_2, + /* 150 */ OBJ_SCENERY_FO_MOUNTAIN_3, + /* 151 */ OBJ_SCENERY_FO_TOWER, + /* 152 */ OBJ_SCENERY_BO_POLE, + /* 153 */ OBJ_SCENERY_BO_BUILDING, + /* 154 */ OBJ_SCENERY_KA_FLBASE, + /* 155 */ OBJ_SCENERY_UNK_155, + /* 156 */ OBJ_SCENERY_UNK_156, + /* 157 */ OBJ_SCENERY_SZ_SPACE_JUNK_3, + /* 158 */ OBJ_SCENERY_SZ_SPACE_JUNK_1, + /* 159 */ OBJ_SCENERY_VE2_TOWER, + /* 160 */ OBJ_SCENERY_VE2_MOUNTAIN, /* 161 */ OBJ_SPRITE_CO_POLE, /* 162 */ OBJ_SPRITE_CO_TREE, /* 163 */ OBJ_SPRITE_FO_POLE, @@ -486,148 +486,148 @@ typedef enum ObjectId { /* 177 */ OBJ_ACTOR_CO_GARUDA_2, // Robot that throws I-Beams. /* 178 */ OBJ_ACTOR_CO_GARUDA_3, // Robot that spins I-Beams. /* 179 */ OBJ_ACTOR_CO_GARUDA_DESTROY, - /* 180 */ OBJ_ACTOR_180, - /* 181 */ OBJ_ACTOR_181, - /* 182 */ OBJ_ACTOR_182, - /* 183 */ OBJ_ACTOR_183, - /* 184 */ OBJ_ACTOR_184, - /* 185 */ OBJ_ACTOR_185, - /* 186 */ OBJ_ACTOR_186, - /* 187 */ OBJ_ACTOR_187, - /* 188 */ OBJ_ACTOR_188, + /* 180 */ OBJ_ACTOR_ME_MOLAR_ROCK, + /* 181 */ OBJ_ACTOR_ME_METEOR_1, + /* 182 */ OBJ_ACTOR_ME_METEOR_2, // Smaller than Meteor 1 + /* 183 */ OBJ_ACTOR_ME_METEOR_SHOWER_1, + /* 184 */ OBJ_ACTOR_ME_METEOR_SHOWER_2, + /* 185 */ OBJ_ACTOR_ME_METEOR_SHOWER_3, + /* 186 */ OBJ_ACTOR_ME_LASER_CANNON_1, + /* 187 */ OBJ_ACTOR_ME_LASER_CANNON_2, + /* 188 */ OBJ_ACTOR_AQ_UNK_188, // Unimplemented actor. /* 189 */ OBJ_ACTOR_DEBRIS, /* 190 */ OBJ_MISSILE_SEEK_TEAM, /* 191 */ OBJ_MISSILE_SEEK_PLAYER, - /* 192 */ OBJ_ACTOR_192, - /* 193 */ OBJ_ACTOR_193, - /* 194 */ OBJ_ACTOR_194, + /* 192 */ OBJ_ACTOR_CO_SKIBOT, + /* 193 */ OBJ_ACTOR_CO_RADAR, + /* 194 */ OBJ_ACTOR_ME_MORA, /* 195 */ OBJ_ACTOR_CUTSCENE, - /* 196 */ OBJ_ACTOR_196, + /* 196 */ OBJ_ACTOR_CO_MOLE_MISSILE, /* 197 */ OBJ_ACTOR_ALLRANGE, /* 198 */ OBJ_ACTOR_TEAM_BOSS, /* 199 */ OBJ_ACTOR_199, /* 200 */ OBJ_ACTOR_EVENT, - /* 201 */ OBJ_ACTOR_201, - /* 202 */ OBJ_ACTOR_202, + /* 201 */ OBJ_ACTOR_ME_METEO_BALL, + /* 202 */ OBJ_ACTOR_ME_HOPBOT, /* 203 */ OBJ_ACTOR_SLIPPY_SX, - /* 204 */ OBJ_ACTOR_204, - /* 205 */ OBJ_ACTOR_205, - /* 206 */ OBJ_ACTOR_206, + /* 204 */ OBJ_ACTOR_SY_ROBOT, + /* 205 */ OBJ_ACTOR_MA_LOCOMOTIVE, + /* 206 */ OBJ_ACTOR_MA_TRAIN_CAR_1, /* 207 */ OBJ_ACTOR_207, - /* 208 */ OBJ_ACTOR_208, - /* 209 */ OBJ_ACTOR_209, - /* 210 */ OBJ_ACTOR_210, - /* 211 */ OBJ_ACTOR_211, - /* 212 */ OBJ_ACTOR_212, - /* 213 */ OBJ_ACTOR_213, - /* 214 */ OBJ_ACTOR_214, - /* 215 */ OBJ_ACTOR_215, - /* 216 */ OBJ_ACTOR_216, - /* 217 */ OBJ_ACTOR_217, - /* 218 */ OBJ_ACTOR_218, + /* 208 */ OBJ_ACTOR_MA_TRAIN_CAR_2, + /* 209 */ OBJ_ACTOR_MA_TRAIN_CAR_3, + /* 210 */ OBJ_ACTOR_MA_TRAIN_CAR_4, + /* 211 */ OBJ_ACTOR_MA_TRAIN_CAR_5, + /* 212 */ OBJ_ACTOR_MA_TRAIN_CAR_6, + /* 213 */ OBJ_ACTOR_MA_TRAIN_CAR_7, + /* 214 */ OBJ_ACTOR_MA_RAILROAD_SWITCH, + /* 215 */ OBJ_ACTOR_MA_BOULDER, + /* 216 */ OBJ_ACTOR_MA_HORIZONTAL_LOCK_BAR, + /* 217 */ OBJ_ACTOR_MA_VERTICAL_LOCK_BAR, + /* 218 */ OBJ_ACTOR_MA_BARRIER, /* 219 */ OBJ_ACTOR_219, - /* 220 */ OBJ_ACTOR_220, - /* 221 */ OBJ_ACTOR_221, - /* 222 */ OBJ_ACTOR_222, - /* 223 */ OBJ_ACTOR_223, - /* 224 */ OBJ_ACTOR_224, - /* 225 */ OBJ_ACTOR_225, - /* 226 */ OBJ_ACTOR_226, - /* 227 */ OBJ_ACTOR_227, - /* 228 */ OBJ_ACTOR_228, - /* 229 */ OBJ_ACTOR_229, - /* 230 */ OBJ_ACTOR_230, - /* 231 */ OBJ_ACTOR_231, - /* 232 */ OBJ_ACTOR_232, - /* 233 */ OBJ_ACTOR_233, - /* 234 */ OBJ_ACTOR_234, - /* 235 */ OBJ_ACTOR_235, - /* 236 */ OBJ_ACTOR_236, - /* 237 */ OBJ_ACTOR_237, - /* 238 */ OBJ_ACTOR_238, - /* 239 */ OBJ_ACTOR_239, - /* 240 */ OBJ_ACTOR_240, - /* 241 */ OBJ_ACTOR_241, - /* 242 */ OBJ_ACTOR_242, - /* 243 */ OBJ_ACTOR_243, - /* 244 */ OBJ_ACTOR_244, - /* 245 */ OBJ_ACTOR_245, - /* 246 */ OBJ_ACTOR_246, - /* 247 */ OBJ_ACTOR_247, - /* 248 */ OBJ_ACTOR_248, - /* 249 */ OBJ_ACTOR_249, - /* 250 */ OBJ_ACTOR_250, - /* 251 */ OBJ_ACTOR_251, - /* 252 */ OBJ_ACTOR_252, - /* 253 */ OBJ_ACTOR_253, - /* 254 */ OBJ_ACTOR_254, + /* 220 */ OBJ_ACTOR_MA_BOMBDROP, + /* 221 */ OBJ_ACTOR_MA_SPEAR, + /* 222 */ OBJ_ACTOR_MA_SHOCK_BOX, + /* 223 */ OBJ_ACTOR_MA_RAILWAY_SIGNAL, + /* 224 */ OBJ_ACTOR_TI_TERRAIN, + /* 225 */ OBJ_ACTOR_TI_LANDMINE, + /* 226 */ OBJ_ACTOR_TI_DESERT_ROVER, + /* 227 */ OBJ_ACTOR_TI_DELPHOR, // Tall enemy with laser tracking. + /* 228 */ OBJ_ACTOR_TI_DELPHOR_HEAD, // Delphor's head. + /* 229 */ OBJ_ACTOR_TI_DESERT_CRAWLER, + /* 230 */ OBJ_ACTOR_TI_BOULDER, + /* 231 */ OBJ_ACTOR_TI_BOMB, // Ground time-based bomb. + /* 232 */ OBJ_ACTOR_TI_RASCO, // Flying enemy that throws rocks. + /* 233 */ OBJ_ACTOR_TI_FEKUDA, // Small cannon that fires lasers. + /* 234 */ OBJ_ACTOR_TI_GREAT_FOX, + /* 235 */ OBJ_ACTOR_ZO_BIRD, + /* 236 */ OBJ_ACTOR_ZO_DODORA, // Giant flying snake type enemy. + /* 237 */ OBJ_ACTOR_UNK_237, + /* 238 */ OBJ_ACTOR_ZO_FISH, + /* 239 */ OBJ_ACTOR_ZO_DODORA_WP_COUNT, // Dodora waypoint counter. + /* 240 */ OBJ_ACTOR_ZO_Z_GULL, + /* 241 */ OBJ_ACTOR_ZO_ENERGY_BALL, // Energy balls carried by Z-Gulls. + /* 242 */ OBJ_ACTOR_ZO_TROIKA, + /* 243 */ OBJ_ACTOR_ZO_SHRIMP, + /* 244 */ OBJ_ACTOR_ZO_OBNEMA, // Giant Arachnid type enemy. + /* 245 */ OBJ_ACTOR_ZO_BALL, // Balls shoot by Zoness boss. + /* 246 */ OBJ_ACTOR_ZO_MINE, + /* 247 */ OBJ_ACTOR_ZO_BARRIER, // Barrier with opening rudders on the sides. + /* 248 */ OBJ_ACTOR_ZO_CRANE_MAGNET, + /* 249 */ OBJ_ACTOR_SPIKEBALL, // Spikeball shot by Zoness boss. + /* 250 */ OBJ_ACTOR_ZO_CARGOSHIP, + /* 251 */ OBJ_ACTOR_ZO_CONTAINER, + /* 252 */ OBJ_ACTOR_ZO_RADARBUOY, // Zoness searchlight. + /* 253 */ OBJ_ACTOR_ZO_SUPPLYCRANE, + /* 254 */ OBJ_ACTOR_ZO_SEARCHLIGHT, /* 255 */ OBJ_ACTOR_255, /* 256 */ OBJ_ACTOR_256, /* 257 */ OBJ_ACTOR_257, - /* 258 */ OBJ_ACTOR_258, - /* 259 */ OBJ_ACTOR_259, - /* 260 */ OBJ_ACTOR_260, - /* 261 */ OBJ_ACTOR_261, - /* 262 */ OBJ_ACTOR_262, - /* 263 */ OBJ_ACTOR_263, - /* 264 */ OBJ_ACTOR_264, - /* 265 */ OBJ_ACTOR_265, - /* 266 */ OBJ_ACTOR_266, - /* 267 */ OBJ_ACTOR_267, - /* 268 */ OBJ_ACTOR_268, - /* 269 */ OBJ_ACTOR_269, - /* 270 */ OBJ_ACTOR_270, - /* 271 */ OBJ_ACTOR_271, - /* 272 */ OBJ_ACTOR_272, + /* 258 */ OBJ_ACTOR_AQ_PEARL, + /* 259 */ OBJ_ACTOR_AQ_ANGLERFISH, // Giant fish with search light. + /* 260 */ OBJ_ACTOR_AQ_GAROA, // Blue shellded enemy that throws energy balls. + /* 261 */ OBJ_ACTOR_AQ_SCULPIN, // Fish-type enemy. + /* 262 */ OBJ_ACTOR_AQ_SPINDLYFISH, + /* 263 */ OBJ_ACTOR_AQ_SQUID, + /* 264 */ OBJ_ACTOR_AQ_SEAWEED, + /* 265 */ OBJ_ACTOR_AQ_BOULDER, + /* 266 */ OBJ_ACTOR_AQ_CORAL, + /* 267 */ OBJ_ACTOR_AQ_JELLYFISH, + /* 268 */ OBJ_ACTOR_AQ_FISHGROUP, // A school of small fish. + /* 269 */ OBJ_ACTOR_AQ_STONE_COLUMN, + /* 270 */ OBJ_ACTOR_AQ_OYSTER, + /* 271 */ OBJ_ACTOR_BO_SHIELD_REACTOR, + /* 272 */ OBJ_ACTOR_BO_LASER_CANNON, /* 273 */ OBJ_ACTOR_FO_RADAR, /* 274 */ OBJ_ACTOR_SZ_SPACE_JUNK, - /* 275 */ OBJ_ACTOR_275, - /* 276 */ OBJ_ACTOR_276, - /* 277 */ OBJ_ACTOR_277, - /* 278 */ OBJ_ACTOR_278, - /* 279 */ OBJ_ACTOR_279, - /* 280 */ OBJ_ACTOR_280, - /* 281 */ OBJ_ACTOR_281, - /* 282 */ OBJ_ACTOR_282, - /* 283 */ OBJ_ACTOR_283, - /* 284 */ OBJ_ACTOR_284, - /* 285 */ OBJ_ACTOR_285, - /* 286 */ OBJ_ACTOR_286, - /* 287 */ OBJ_ACTOR_287, - /* 288 */ OBJ_ACTOR_288, - /* 289 */ OBJ_ACTOR_289, - /* 290 */ OBJ_ACTOR_290, + /* 275 */ OBJ_ACTOR_SO_ROCK_1, // Surfacing rock type 1. + /* 276 */ OBJ_ACTOR_SO_ROCK_2, // Surfacing rock type 2. + /* 277 */ OBJ_ACTOR_SO_ROCK_3, // Surfacing rock type 3. + /* 278 */ OBJ_ACTOR_SO_WAVE, + /* 279 */ OBJ_ACTOR_SO_PROMINENCE, + /* 280 */ OBJ_ACTOR_VE1_PILLAR_1, + /* 281 */ OBJ_ACTOR_VE1_PILLAR_2, + /* 282 */ OBJ_ACTOR_VE1_PILLAR_3, + /* 283 */ OBJ_ACTOR_VE1_PILLAR_4, + /* 284 */ OBJ_ACTOR_VE1_MONKEY_STATUE, + /* 285 */ OBJ_ACTOR_AND_LASER_EMITTER, + /* 286 */ OBJ_ACTOR_AND_BRAIN_WASTE, + /* 287 */ OBJ_ACTOR_AND_EXPLOSION, // Explosions that follow Fox during the Andross escape. + /* 288 */ OBJ_ACTOR_AND_RADIO, // Andross radio messages. + /* 289 */ OBJ_ACTOR_AND_JAMES_TRIGGER, + /* 290 */ OBJ_ACTOR_AND_BOSS_TIMER_SET, /* 291 */ OBJ_ACTOR_SUPPLIES, /* 292 */ OBJ_BOSS_CO_GRANGA, /* 293 */ OBJ_BOSS_CO_CARRIER, - /* 294 */ OBJ_BOSS_294, - /* 295 */ OBJ_BOSS_295, - /* 296 */ OBJ_BOSS_296, - /* 297 */ OBJ_BOSS_297, - /* 298 */ OBJ_BOSS_298, - /* 299 */ OBJ_BOSS_299, - /* 300 */ OBJ_BOSS_300, - /* 301 */ OBJ_BOSS_301, - /* 302 */ OBJ_BOSS_A6, + /* 294 */ OBJ_BOSS_CO_CARRIER_LEFT, + /* 295 */ OBJ_BOSS_CO_CARRIER_UPPER, + /* 296 */ OBJ_BOSS_CO_CARRIER_BOTTOM, + /* 297 */ OBJ_BOSS_ME_CRUSHER, + /* 298 */ OBJ_BOSS_ME_CRUSHER_SHIELD, + /* 299 */ OBJ_BOSS_UNK_299, + /* 300 */ OBJ_BOSS_UNK_300, + /* 301 */ OBJ_BOSS_AQ_UNK_301, + /* 302 */ OBJ_BOSS_A6_GORGON, /* 303 */ OBJ_BOSS_SX_SPYBORG, - /* 304 */ OBJ_BOSS_304, - /* 305 */ OBJ_BOSS_305, - /* 306 */ OBJ_BOSS_TI, - /* 307 */ OBJ_BOSS_ZO, - /* 308 */ OBJ_BOSS_FO, - /* 309 */ OBJ_BOSS_309, - /* 310 */ OBJ_BOSS_310, - /* 311 */ OBJ_BOSS_311, - /* 312 */ OBJ_BOSS_VE2, + /* 304 */ OBJ_BOSS_SX_SPYBORG_LEFT_ARM, + /* 305 */ OBJ_BOSS_SX_SPYBORG_RIGHT_ARM, + /* 306 */ OBJ_BOSS_TI_GORAS, + /* 307 */ OBJ_BOSS_ZO_SARUMARINE, + /* 308 */ OBJ_BOSS_FO_BASE, + /* 309 */ OBJ_BOSS_BO_BASE, + /* 310 */ OBJ_BOSS_BO_BASE_SHIELD, // Bolse force field + /* 311 */ OBJ_BOSS_BO_BASE_CORE, + /* 312 */ OBJ_BOSS_VE2_BASE, /* 313 */ OBJ_BOSS_SZ_GREAT_FOX, - /* 314 */ OBJ_BOSS_SY, - /* 315 */ OBJ_BOSS_SO, - /* 316 */ OBJ_BOSS_KA, - /* 317 */ OBJ_BOSS_KA_BASE, - /* 318 */ OBJ_BOSS_AQ, - /* 319 */ OBJ_BOSS_VE1, - /* 320 */ OBJ_BOSS_320, - /* 321 */ OBJ_BOSS_321, + /* 314 */ OBJ_BOSS_SY_SHOGUN, + /* 315 */ OBJ_BOSS_SO_VULKAIN, + /* 316 */ OBJ_BOSS_KA_SAUCERER, + /* 317 */ OBJ_BOSS_KA_FLBASE, + /* 318 */ OBJ_BOSS_AQ_BACOON, + /* 319 */ OBJ_BOSS_VE1_GOLEMECH, + /* 320 */ OBJ_BOSS_AND_ANDROSS, + /* 321 */ OBJ_BOSS_AND_BRAIN, /* 322 */ OBJ_ITEM_LASERS, /* 323 */ OBJ_ITEM_CHECKPOINT, /* 324 */ OBJ_ITEM_SILVER_RING, @@ -645,13 +645,13 @@ typedef enum ObjectId { /* 336 */ OBJ_ITEM_GOLD_RING, /* 337 */ OBJ_ITEM_WING_REPAIR, /* 338 */ OBJ_ITEM_TRAINING_RING, - /* 339 */ OBJ_EFFECT_FIRE_SMOKE, - /* 340 */ OBJ_EFFECT_340, - /* 341 */ OBJ_EFFECT_341, - /* 342 */ OBJ_EFFECT_342, - /* 343 */ OBJ_EFFECT_343, - /* 344 */ OBJ_EFFECT_344, - /* 345 */ OBJ_EFFECT_345, + /* 339 */ OBJ_EFFECT_FIRE_SMOKE_1, + /* 340 */ OBJ_EFFECT_FIRE_SMOKE_2, + /* 341 */ OBJ_EFFECT_FIRE_SMOKE_3, + /* 342 */ OBJ_EFFECT_SMOKE_1, + /* 343 */ OBJ_EFFECT_SMOKE_2, + /* 344 */ OBJ_EFFECT_EXPLOSION_MARK_1, // Explosion mark left on the ground after an enemy explodes. + /* 345 */ OBJ_EFFECT_LASER_MARK_1, // Mark left when lasers hit the ground. /* 346 */ OBJ_EFFECT_346, /* 347 */ OBJ_EFFECT_347, /* 348 */ OBJ_EFFECT_348, @@ -664,7 +664,7 @@ typedef enum ObjectId { /* 355 */ OBJ_EFFECT_355, /* 356 */ OBJ_EFFECT_356, /* 357 */ OBJ_EFFECT_357, - /* 358 */ OBJ_EFFECT_358, + /* 358 */ OBJ_EFFECT_KA_ENERGY_PARTICLES, /* 359 */ OBJ_EFFECT_359, /* 360 */ OBJ_EFFECT_360, /* 361 */ OBJ_EFFECT_361, @@ -672,27 +672,27 @@ typedef enum ObjectId { /* 363 */ OBJ_EFFECT_363, /* 364 */ OBJ_EFFECT_364, /* 365 */ OBJ_EFFECT_365, - /* 366 */ OBJ_EFFECT_366, - /* 367 */ OBJ_EFFECT_367, - /* 368 */ OBJ_EFFECT_368, - /* 369 */ OBJ_EFFECT_369, - /* 370 */ OBJ_EFFECT_370, - /* 371 */ OBJ_EFFECT_371, - /* 372 */ OBJ_EFFECT_372, + /* 366 */ OBJ_EFFECT_366, // ast_blue_marine + /* 367 */ OBJ_EFFECT_367, // ast_bg_planet + /* 368 */ OBJ_EFFECT_368, // TI: ast_landmaster + /* 369 */ OBJ_EFFECT_369, // ME: ast_common + /* 370 */ OBJ_EFFECT_370, // ME: ast_meteo + /* 371 */ OBJ_EFFECT_371, // ME: ast_meteo + /* 372 */ OBJ_EFFECT_372, // ast_arwing /* 373 */ OBJ_EFFECT_TIMED_SFX, - /* 374 */ OBJ_EFFECT_374, + /* 374 */ OBJ_EFFECT_374, // ast_enmy_planet /* 375 */ OBJ_EFFECT_375, - /* 376 */ OBJ_EFFECT_376, - /* 377 */ OBJ_EFFECT_377, - /* 378 */ OBJ_EFFECT_378, + /* 376 */ OBJ_EFFECT_376, // Plasma shot by Granga + /* 377 */ OBJ_EFFECT_377, // Spyborg blue shot + /* 378 */ OBJ_EFFECT_378, // Ball projectiles shot by train car turret in Macbeth /* 379 */ OBJ_EFFECT_379, - /* 380 */ OBJ_EFFECT_380, + /* 380 */ OBJ_EFFECT_380, // Some kind of shot (Macbeth boss) /* 381 */ OBJ_EFFECT_381, /* 382 */ OBJ_EFFECT_382, - /* 383 */ OBJ_EFFECT_383, - /* 384 */ OBJ_EFFECT_384, - /* 385 */ OBJ_EFFECT_385, - /* 386 */ OBJ_EFFECT_386, + /* 383 */ OBJ_EFFECT_383, // Big boss explosion + /* 384 */ OBJ_EFFECT_384, // small explosion + /* 385 */ OBJ_EFFECT_385, // small explosion + /* 386 */ OBJ_EFFECT_386, // some type of explosion /* 387 */ OBJ_EFFECT_387, /* 388 */ OBJ_EFFECT_388, /* 389 */ OBJ_EFFECT_389, @@ -706,13 +706,13 @@ typedef enum ObjectId { /* 397 */ OBJ_EFFECT_397, /* 398 */ OBJ_EFFECT_398, /* 399 */ OBJ_EFFECT_399, - /* 400 */ OBJ_UNK_400, - /* 401 */ OBJ_UNK_401, + /* 400 */ OBJ_ENV_SMALL_ROCKS_ENABLE, + /* 401 */ OBJ_ENV_SMALL_ROCKS_DISABLE, /* 402 */ OBJ_UNK_402, /* 403 */ OBJ_UNK_403, /* 404 */ OBJ_UNK_404, /* 405 */ OBJ_UNK_405, - /* 407 */ OBJ_ID_MAX, + /* 406 */ OBJ_ID_MAX, } ObjectId; #define OBJ_SCENERY_START OBJ_SCENERY_CO_STONE_ARCH @@ -720,8 +720,8 @@ typedef enum ObjectId { #define OBJ_ACTOR_START OBJ_ACTOR_CO_GARUDA_1 #define OBJ_BOSS_START OBJ_BOSS_CO_GRANGA #define OBJ_ITEM_START OBJ_ITEM_LASERS -#define OBJ_EFFECT_START OBJ_EFFECT_FIRE_SMOKE -#define OBJ_ENV_START OBJ_UNK_400 +#define OBJ_EFFECT_START OBJ_EFFECT_FIRE_SMOKE_1 +#define OBJ_ENV_START OBJ_ENV_SMALL_ROCKS_ENABLE #define OBJ_SCENERY_MAX OBJ_SPRITE_START #define OBJ_SPRITE_MAX OBJ_ACTOR_START @@ -935,167 +935,167 @@ typedef enum { /* 50 */ LN_VWK_MAX, } BossLNvwork; -typedef Scenery Scenery_0; -typedef Scenery Scenery_1; -typedef Scenery Scenery_2; -typedef Scenery Scenery_3; -typedef Scenery Scenery_4; -typedef Scenery Scenery_5; -typedef Scenery Scenery_6; -typedef Scenery Scenery_7; -typedef Scenery Scenery_8; -typedef Scenery Scenery_9; -typedef Scenery Scenery_10; -typedef Scenery Scenery_11; -typedef Scenery Scenery_12; -typedef Scenery Scenery_13; -typedef Scenery Scenery_14; -typedef Scenery Scenery_15; -typedef Scenery Scenery_16; -typedef Scenery Scenery_17; +typedef Scenery CoStoneArch; +typedef Scenery CoBump1; +typedef Scenery CoBump2; +typedef Scenery CoBump3; +typedef Scenery CoBump4; +typedef Scenery CoBump5; +typedef Scenery CoHighway1; +typedef Scenery CoHighway2; +typedef Scenery CoHighway3; +typedef Scenery CoHighway4; +typedef Scenery CoBuilding1; +typedef Scenery CoBuilding2; +typedef Scenery CoBuilding3; +typedef Scenery CoBuilding4; +typedef Scenery CoBuilding5; +typedef Scenery CoBuilding6; +typedef Scenery CoBuilding7; +typedef Scenery CoBuilding8; typedef Scenery CoBuildingOnFire; -typedef Scenery Scenery_19; -typedef Scenery Scenery_20; -typedef Scenery Scenery_21; -typedef Scenery Scenery_22; -typedef Scenery Scenery_23; -typedef Scenery Scenery_24; -typedef Scenery Scenery_25; -typedef Scenery Scenery_26; -typedef Scenery Scenery_27; -typedef Scenery Scenery_28; -typedef Scenery Scenery_29; -typedef Scenery Scenery_30; -typedef Scenery Scenery_31; -typedef Scenery Scenery_32; -typedef Scenery Scenery_33; -typedef Scenery Scenery_34; -typedef Scenery Scenery_35; -typedef Scenery Scenery_36; -typedef Scenery Scenery_37; -typedef Scenery Scenery_38; -typedef Scenery MeteoTunnel; +typedef Scenery CoTower; +typedef Scenery CoArch1; +typedef Scenery CoArch2; +typedef Scenery CoArch3; +typedef Scenery CoRadarDish; +typedef Scenery CoHighway5; +typedef Scenery CoHighway6; +typedef Scenery CoHighway7; +typedef Scenery CoHighway8; +typedef Scenery CoHighway9; +typedef Scenery TiSkull; +typedef Scenery TiRib0; +typedef Scenery TiRib1; +typedef Scenery TiRib2; +typedef Scenery TiRib3; +typedef Scenery TiRib4; +typedef Scenery TiRib5; +typedef Scenery TiRib6; +typedef Scenery TiRib7; +typedef Scenery TiRib8; +typedef Scenery MeTunnel; typedef Scenery CoBuilding9; typedef Scenery CoBuilding10; typedef Scenery CoIBeam; -typedef Scenery Scenery_43; -typedef Scenery Scenery_44; -typedef Scenery Scenery_45; -typedef Scenery Scenery_46; -typedef Scenery Scenery_47; -typedef Scenery Scenery_48; -typedef Scenery Scenery_49; -typedef Scenery Scenery_50; -typedef Scenery Scenery_51; -typedef Scenery Scenery_52; -typedef Scenery Scenery_53; +typedef Scenery ZoRock; +typedef Scenery ZoOilRig1; +typedef Scenery ZoOilRig2; +typedef Scenery ZoOilRig3; +typedef Scenery ZoIsland; +typedef Scenery Ve1Wall1; +typedef Scenery Ve1Wall2; +typedef Scenery Ve1Wall3; +typedef Scenery Ve1HallwayObstacle; +typedef Scenery Ve1Generator; +typedef Scenery Ve1WatchPost; typedef Scenery CoWaterfall; -typedef Scenery Scenery_55; +typedef Scenery CoRockWall; typedef Scenery CoDoors; -typedef Scenery Scenery_57; -typedef Scenery Scenery_58; -typedef Scenery Scenery_59; -typedef Scenery Scenery_60; -typedef Scenery Scenery_61; -typedef Scenery Scenery_62; -typedef Scenery Scenery_63; -typedef Scenery Scenery_64; -typedef Scenery Scenery_65; -typedef Scenery Scenery_66; -typedef Scenery Scenery_67; -typedef Scenery Scenery_68; -typedef Scenery Scenery_69; -typedef Scenery Scenery_70; -typedef Scenery Scenery_71; -typedef Scenery Scenery_72; -typedef Scenery Scenery_73; -typedef Scenery Scenery_74; -typedef Scenery Scenery_75; -typedef Scenery Scenery_76; -typedef Scenery Scenery_77; -typedef Scenery Scenery_78; -typedef Scenery Scenery_79; -typedef Scenery Scenery_80; -typedef Scenery Scenery_81; -typedef Scenery Scenery_82; -typedef Scenery Scenery_83; -typedef Scenery Scenery_84; -typedef Scenery Scenery_85; -typedef Scenery Scenery_86; -typedef Scenery Scenery_87; -typedef Scenery Scenery_88; -typedef Scenery Scenery_89; -typedef Scenery Scenery_90; -typedef Scenery Scenery_91; -typedef Scenery Scenery_92; -typedef Scenery Scenery_93; -typedef Scenery Scenery_94; -typedef Scenery Scenery_95; -typedef Scenery Scenery_96; -typedef Scenery Scenery_97; -typedef Scenery Scenery_98; -typedef Scenery Scenery_99; -typedef Scenery Scenery_100; -typedef Scenery Scenery_101; -typedef Scenery Scenery_102; -typedef Scenery Scenery_103; -typedef Scenery Scenery_104; -typedef Scenery Scenery_105; -typedef Scenery Scenery_106; -typedef Scenery Scenery_107; -typedef Scenery Scenery_108; -typedef Scenery Scenery_109; -typedef Scenery Scenery_110; -typedef Scenery Scenery_111; -typedef Scenery Scenery_112; -typedef Scenery Scenery_113; -typedef Scenery Scenery_114; -typedef Scenery Scenery_115; -typedef Scenery Scenery_116; -typedef Scenery Scenery_117; -typedef Scenery Scenery_118; -typedef Scenery Scenery_119; -typedef Scenery Scenery_120; -typedef Scenery Scenery_121; -typedef Scenery Scenery_122; -typedef Scenery Scenery_123; -typedef Scenery Scenery_124; -typedef Scenery Scenery_125; -typedef Scenery Scenery_126; -typedef Scenery Scenery_127; -typedef Scenery Scenery_128; -typedef Scenery Scenery_129; -typedef Scenery Scenery_130; -typedef Scenery Scenery_131; -typedef Scenery Scenery_132; -typedef Scenery Scenery_133; -typedef Scenery Scenery_134; -typedef Scenery Scenery_135; -typedef Scenery Scenery_136; -typedef Scenery Scenery_137; -typedef Scenery Scenery_138; -typedef Scenery Scenery_139; -typedef Scenery Scenery_140; -typedef Scenery Scenery_141; -typedef Scenery Scenery_142; -typedef Scenery Scenery_143; -typedef Scenery Scenery_144; -typedef Scenery Scenery_145; -typedef Scenery Scenery_146; -typedef Scenery Scenery_147; -typedef Scenery Scenery_148; -typedef Scenery Scenery_149; -typedef Scenery Scenery_150; -typedef Scenery Scenery_151; -typedef Scenery Scenery_152; -typedef Scenery Scenery_153; -typedef Scenery Scenery_154; -typedef Scenery Scenery_155; -typedef Scenery Scenery_156; -typedef Scenery Scenery_157; -typedef Scenery Scenery_158; -typedef Scenery Scenery_159; -typedef Scenery Scenery_160; +typedef Scenery TiPillar; +typedef Scenery TiBridge; +typedef Scenery MaBuilding1; +typedef Scenery MaBuilding2; +typedef Scenery MaTower; +typedef Scenery MaWall1; +typedef Scenery Scenery63; +typedef Scenery MaGuillotine; +typedef Scenery MaProximityLight; +typedef Scenery MaWall2; +typedef Scenery MaWall3; +typedef Scenery MaWall4; +typedef Scenery MaTerrainBump; +typedef Scenery MaFloor1; +typedef Scenery MaFloor2; +typedef Scenery MaFloor3; +typedef Scenery MaFloor4; +typedef Scenery MaFloor5; +typedef Scenery MaFloor6; +typedef Scenery MaWeaponsFactory; +typedef Scenery MaIndicatorSign; +typedef Scenery MaDistanceSign1; +typedef Scenery MaDistanceSign2; +typedef Scenery MaDistanceSign3; +typedef Scenery MaDistanceSign4; +typedef Scenery MaDistanceSign5; +typedef Scenery MaTrainStopBlock; +typedef Scenery MaRailroadSwitch1; +typedef Scenery MaRailroadSwitch2; +typedef Scenery MaRailroadSwitch3; +typedef Scenery MaRailroadSwitch4; +typedef Scenery MaRailroadSwitch5; +typedef Scenery MaRailroadSwitch6; +typedef Scenery MaRailroadSwitch7; +typedef Scenery MaRailroadSwitch8; +typedef Scenery MaTrainTrack1; +typedef Scenery MaTrainTrack2; +typedef Scenery MaTrainTrack3; +typedef Scenery MaTrainTrack4; +typedef Scenery MaTrainTrack5; +typedef Scenery MaTrainTrack6; +typedef Scenery MaTrainTrack7; +typedef Scenery MaTrainTrack8; +typedef Scenery MaTrainTrack9; +typedef Scenery MaTrainTrack10; +typedef Scenery MaTrainTrack11; +typedef Scenery MaTrainTrack12; +typedef Scenery MaSwitchTrack; +typedef Scenery MaTrainTrack13; +typedef Scenery SyShip1; +typedef Scenery SyShip2; +typedef Scenery SyShip3; +typedef Scenery SyShip3Destroyed; +typedef Scenery SyShip4; +typedef Scenery SyShipDebris; +typedef Scenery SyShip2Destroyed; +typedef Sprite SpriteSyShip2; +typedef Sprite SpriteSyShip3; +typedef Scenery SyShipProjectile; +typedef Scenery SyShipWindows; +typedef Scenery AqCoralReef1; +typedef Scenery AqTunnel1; +typedef Scenery AqArch; +typedef Scenery AqCoralReef2; +typedef Scenery AqRock; +typedef Scenery AqWall1; +typedef Scenery AqRoof; +typedef Scenery AqBump1; +typedef Scenery AqTunnel2; +typedef Scenery AqBump2; +typedef Scenery Ve1TempleEntrance; +typedef Scenery AqTempleInterior1; +typedef Scenery AqTempleInterior2; +typedef Scenery AqTempleInterior3; +typedef Scenery AndPassage; +typedef Scenery AndDoor; +typedef Scenery TrBuilding; +typedef Scenery AndPathIntersection; +typedef Scenery AndPathWalls; +typedef Scenery AndPathExit; +typedef Scenery AndPathEntrance; +typedef Scenery VsBuilding1; +typedef Scenery VsBuilding2; +typedef Scenery VsPyramid1; +typedef Scenery VsPyramid2; +typedef Scenery VsArch; +typedef Scenery VsKaFlBase; +typedef Scenery VsSpaceJunk1; +typedef Scenery VsSpaceJunk2; +typedef Scenery VsSpaceJunk3; +typedef Scenery Scenery147; +typedef Scenery FoMountain1; +typedef Scenery FoMountain2; +typedef Scenery FoMountain3; +typedef Scenery FoTower; +typedef Scenery BoPole; +typedef Scenery BoBuilding; +typedef Scenery KaFlBase; +typedef Scenery SceneryUnk155; +typedef Scenery SceneryUnk156; +typedef Scenery SzSpaceJunk3; +typedef Scenery SzSpaceJunk1; +typedef Scenery Ve2Tower; +typedef Scenery Ve2Mountain; typedef Sprite CoPole; typedef Sprite CoTree; typedef Sprite FoPole; @@ -1115,148 +1115,148 @@ typedef Actor CoGaruda1; typedef Actor CoGaruda2; typedef Actor CoGaruda3; typedef Actor CoGarudaDestroy; -typedef Actor Actor180; -typedef Actor Actor181; -typedef Actor Actor182; -typedef Actor Actor183; -typedef Actor Actor184; -typedef Actor Actor185; -typedef Actor Actor186; -typedef Actor Actor187; +typedef Actor MeMolarRock; +typedef Actor MeMeteor1; +typedef Actor MeMeteor2; +typedef Actor MeMeteorShower1; +typedef Actor MeMeteorShower2; +typedef Actor MeMeteorShower3; +typedef Actor MeLaserCannon1; +typedef Actor MeLaserCannon2; typedef Actor Actor188; typedef Actor ActorDebris; -typedef Actor Actor190; -typedef Actor Actor191; -typedef Actor Actor192; -typedef Actor Actor193; -typedef Actor Actor194; +typedef Actor ActorMissileSeekTeam; +typedef Actor ActorMissileSeekPlayer; +typedef Actor ActorSkibot; +typedef Actor CoRadar; +typedef Actor MeMora; typedef Actor ActorCutscene; -typedef Actor Actor196; +typedef Actor ActorMoleMissile; typedef Actor ActorAllRange; -typedef Actor ActorTeamBoss; +typedef Actor ActorTeamBoss; // Teammates in a boss battle typedef Actor Actor199; typedef Actor ActorEvent; -typedef Actor Actor201; -typedef Actor Actor202; -typedef Actor ActorSlippySX; -typedef Actor Actor204; -typedef Actor Actor205; -typedef Actor Actor206; +typedef Actor MeteoBall; +typedef Actor ActorHopBot; +typedef Actor SxSlippy; +typedef Actor SyRobot; +typedef Actor MaLocomotive; +typedef Actor MaTrainCar1; typedef Actor Actor207; -typedef Actor Actor208; -typedef Actor Actor209; -typedef Actor Actor210; -typedef Actor Actor211; -typedef Actor Actor212; -typedef Actor Actor213; -typedef Actor Actor214; -typedef Actor Actor215; -typedef Actor Actor216; -typedef Actor Actor217; -typedef Actor Actor218; +typedef Actor MaTrainCar2; +typedef Actor MaTrainCar3; +typedef Actor MaTrainCar4; +typedef Actor MaTrainCar5; +typedef Actor MaTrainCar6; +typedef Actor MaTrainCar7; +typedef Actor MaRailroadSwitch; +typedef Actor MaBoulder; +typedef Actor MaHorizontalLockBar; +typedef Actor MaVerticalLockBar; +typedef Actor MaBarrier; typedef Actor Actor219; -typedef Actor Actor220; -typedef Actor Actor221; -typedef Actor Actor222; -typedef Actor Actor223; -typedef Actor Actor224; -typedef Actor Actor225; -typedef Actor Actor226; -typedef Actor Actor227; -typedef Actor Actor228; -typedef Actor Actor229; -typedef Actor Actor230; -typedef Actor Actor231; -typedef Actor Actor232; -typedef Actor Actor233; -typedef Actor Actor234; -typedef Actor Actor235; -typedef Actor Actor236; +typedef Actor MaBombDrop; +typedef Actor MaSpear; +typedef Actor MaShockBox; +typedef Actor MaRailwaySignal; +typedef Actor TiTerrain; +typedef Actor TiLandmine; +typedef Actor TiDesertRover; +typedef Actor TiDelphor; +typedef Actor TiDelphorHead; +typedef Actor TiDesertCrawler; +typedef Actor TiBoulder; +typedef Actor TiBomb; +typedef Actor TiRasco; +typedef Actor TiFekuda; +typedef Actor TiGreatFox; +typedef Actor ZoBird; +typedef Actor ZoDodora; typedef Actor Actor237; -typedef Actor Actor238; -typedef Actor Actor239; -typedef Actor Actor240; -typedef Actor Actor241; -typedef Actor Actor242; -typedef Actor Actor243; -typedef Actor Actor244; -typedef Actor Actor245; -typedef Actor Actor246; -typedef Actor Actor247; -typedef Actor Actor248; -typedef Actor Actor249; -typedef Actor Actor250; -typedef Actor Actor251; -typedef Actor Actor252; -typedef Actor Actor253; -typedef Actor Actor254; +typedef Actor ZoFish; +typedef Actor ZoDodoraWpCount; +typedef Actor ZGull; +typedef Actor ZoEnergyBall; +typedef Actor ZoTroika; +typedef Actor ZoShrimp; +typedef Actor ZoObnema; +typedef Actor ZoBall; +typedef Actor ZoMine; +typedef Actor ZoBarrier; +typedef Actor ZoCraneMagnet; +typedef Actor ZoSpikeBall; +typedef Actor ZoCargoShip; +typedef Actor ZoContainer; +typedef Actor ZoRadarBuoy; +typedef Actor ZoSupplyCrane; +typedef Actor ZoSearchLight; typedef Actor Actor255; typedef Actor Actor256; typedef Actor Actor257; -typedef Actor Actor258; -typedef Actor Actor259; -typedef Actor Actor260; -typedef Actor Actor261; -typedef Actor Actor262; -typedef Actor Actor263; -typedef Actor Actor264; -typedef Actor Actor265; -typedef Actor Actor266; -typedef Actor Actor267; -typedef Actor Actor268; -typedef Actor Actor269; -typedef Actor Actor270; -typedef Actor Actor271; -typedef Actor Actor272; +typedef Actor AqPearl; +typedef Actor AqAnglerFish; +typedef Actor AqGaroa; +typedef Actor AqSculpin; +typedef Actor AqSpindlyFish; +typedef Actor AqSquid; +typedef Actor AqSeaweed; +typedef Actor AqBoulder; +typedef Actor AqCoral; +typedef Actor AqJellyfish; +typedef Actor AqFishGroup; +typedef Actor AqStoneColumn; +typedef Actor AqOyster; +typedef Actor BoShieldReactor; +typedef Actor BoLaserCannon; typedef Actor FoRadar; -typedef Actor ActorSpaceJunk; -typedef Actor Actor275; -typedef Actor Actor276; -typedef Actor Actor277; -typedef Actor Actor278; -typedef Actor Actor279; -typedef Actor Actor280; -typedef Actor Actor281; -typedef Actor Actor282; -typedef Actor Actor283; -typedef Actor Actor284; -typedef Actor Actor285; -typedef Actor Actor286; -typedef Actor Actor287; -typedef Actor Actor288; -typedef Actor Actor289; -typedef Actor Actor290; +typedef Actor SzSpaceJunk; +typedef Actor SoRock1; +typedef Actor SoRock2; +typedef Actor SoRock3; +typedef Actor SoWave; +typedef Actor SoProminence; +typedef Actor Ve1Pillar1; +typedef Actor Ve1Pillar2; +typedef Actor Ve1Pillar3; +typedef Actor Ve1Pillar4; +typedef Actor Ve1MonkeyStatue; +typedef Actor AndLaserEmitter; +typedef Actor AndBrainWaste; +typedef Actor AndExplosion; +typedef Actor AndRadio; +typedef Actor AndJamesTrigger; +typedef Actor AndBossTimer; typedef Actor ActorSupplies; -typedef Boss Granga; -typedef Boss Carrier; -typedef Boss Boss294; -typedef Boss Boss295; -typedef Boss Boss296; -typedef Boss Boss297; -typedef Boss Boss298; +typedef Boss CoGranga; +typedef Boss CoCarrier; +typedef Boss CoCarrierLeft; +typedef Boss CoCarrierUpper; +typedef Boss CoCarrierBottom; +typedef Boss MeCrusher; +typedef Boss MeCrusherShield; typedef Boss Boss299; typedef Boss Boss300; typedef Boss Boss301; -typedef Boss BossA6; -typedef Boss Spyborg; -typedef Boss Boss304; -typedef Boss Boss305; -typedef Boss Boss306; -typedef Boss BossZO; -typedef Boss BossFO; -typedef Boss Boss309; -typedef Boss Boss310; -typedef Boss Boss311; -typedef Boss BossVE2; +typedef Boss A6Gorgon; +typedef Boss SxSpyborg; +typedef Boss SxSpyborgLeftArm; +typedef Boss SxSpyborgRightArm; +typedef Boss TiGoras; +typedef Boss ZoSarumarine; +typedef Boss FoBase; +typedef Boss BoBase; +typedef Boss BoBaseShield; +typedef Boss BoBaseCore; +typedef Boss Ve2Base; typedef Boss GreatFoxSZ; -typedef Boss BossSY; -typedef Boss BossSO; -typedef Boss Saucerer; -typedef Boss Frontlinebase; -typedef Boss BossAQ; -typedef Boss Boss319; -typedef Boss Boss320; -typedef Boss Boss321; +typedef Boss SyShogun; +typedef Boss SoVulkain; +typedef Boss KaSaucerer; +typedef Boss KaFrontlineBase; +typedef Boss AqBacoon; +typedef Boss Ve1Golemech; +typedef Boss AndAndross; +typedef Boss AndBrain; typedef Item ItemLasers; typedef Item ItemCheckpoint; typedef Item ItemSilverStar; @@ -1287,7 +1287,7 @@ typedef Effect Effect348; typedef Effect Effect349; typedef Effect Effect350; typedef Effect Effect351; -typedef Effect Clouds; +typedef Effect EffectClouds; typedef Effect Effect353; typedef Effect Effect354; typedef Effect Effect355; diff --git a/include/sf64player.h b/include/sf64player.h index 72aee784..2e2fecbc 100644 --- a/include/sf64player.h +++ b/include/sf64player.h @@ -127,23 +127,23 @@ typedef struct PlayerShot { /* 0x6C */ u8 bonus; } PlayerShot; // size = 0x70 -typedef struct WingInfo { - /* 0x00 */ u8 rightState; - /* 0x01 */ u8 leftState; - /* 0x04 */ f32 unk_04; - /* 0x08 */ f32 unk_08; - /* 0x0C */ f32 unk_0C; - /* 0x10 */ f32 unk_10; - /* 0x14 */ f32 unk_14; - /* 0x18 */ f32 unk_18; - /* 0x1C */ f32 unk_1C; - /* 0x20 */ f32 unk_20; - /* 0x24 */ f32 unk_24; +typedef struct WingInfo { // ArwingInfo + /* 0x00 */ u8 rightState; // rightWingState + /* 0x01 */ u8 leftState; // leftWingState + /* 0x04 */ f32 unk_04; // upperRightFlapYrot + /* 0x08 */ f32 unk_08; // bottomRightFlapYrot + /* 0x0C */ f32 unk_0C; // upperLeftFlapYrot + /* 0x10 */ f32 unk_10; // bottomLeftFlapYrot + /* 0x14 */ f32 unk_14; // laserGunsYpos + /* 0x18 */ f32 unk_18; // laserGunsXpos + /* 0x1C */ f32 unk_1C; // wingsXrot + /* 0x20 */ f32 unk_20; // wingsYrot + /* 0x24 */ f32 unk_24; // wingsZrot /* 0x28 */ f32 unk_28; - /* 0x2C */ u8 modelId; - /* 0x30 */ f32 unk_30; - /* 0x34 */ f32 unk_34; - /* 0x38 */ f32 unk_38; + /* 0x2C */ u8 modelId; // teamFaceId + /* 0x30 */ f32 unk_30; // teamFaceXrot + /* 0x34 */ f32 unk_34; // teamFaceYrot + /* 0x38 */ f32 unk_38; // windshieldXrot } WingInfo; // size = 0x3C typedef struct PlayerSfx { diff --git a/include/sfx.h b/include/sfx.h index df789369..37394ccc 100644 --- a/include/sfx.h +++ b/include/sfx.h @@ -475,8 +475,8 @@ typedef enum SfxBankId { #define NA_SE_GOOD_LUCK 0x49002016 #define NA_SE_MESSAGE_MOVE 0x49000017 // Used for text in training mode #define NA_SE_COMMU_REQUEST 0x49002018 // C> call alert -#define NA_SE_MAP_WINDOW_OPEN 0x49000019 // Also crosshairs on -#define NA_SE_MAP_WINDOW_CLOSE 0x4900101A // Also crosshairs off +#define NA_SE_MAP_WINDOW_OPEN 0x49000019 // Also reticles on +#define NA_SE_MAP_WINDOW_CLOSE 0x4900101A // Also reticles off #define NA_SE_MAR_LOCKON 0x4900001B #define NA_SE_MISSILE_ALARM 0x4900001C #define NA_SE_CANCEL 0x4900101D @@ -493,7 +493,7 @@ typedef enum SfxBankId { #define NA_SE_BOSS_GAUGE_OPEN 0x4900C028 #define NA_SE_BANK4_UNK_1 0x40000029 // Unreferenced. Sounds like an item collect jingle #define NA_SE_COUNTDOWN 0x4900C02A -#define NA_SE_VIEW_SITCHW_ON 0x4000002B // Unreferenced. Related to D_ctx_80177C70? +#define NA_SE_VIEW_SITCHW_ON 0x4000002B // Unreferenced. Related to gFovYMode? #define NA_SE_VIEW_MOVE_IN 0x4900002C #define NA_SE_VIEW_MOVE_OUT 0x4900002D #define NA_SE_SEARCHLIGHT_MISS 0x4900402E diff --git a/include/sys.h b/include/sys.h index fa45f79f..f46da4f0 100644 --- a/include/sys.h +++ b/include/sys.h @@ -40,7 +40,7 @@ s32 vsprintf(char* dst, const char* fmt, va_list args); void Game_Initialize(void); void Game_Update(void); -extern bool gShowCrosshairs[]; +extern bool gShowReticles[]; extern bool D_game_800D2870; extern f32 gNextVsViewScale; diff --git a/include/variables.h b/include/variables.h index d31c8e28..9da23ce9 100644 --- a/include/variables.h +++ b/include/variables.h @@ -25,7 +25,7 @@ extern Actor* gTeamHelpActor; extern s32 gTeamHelpTimer; // fox_edata -extern f32 gActor241Hitbox[]; +extern f32 gZoEnergyBallHitbox[]; extern f32 gCubeHitbox100[]; extern f32 gCubeHitbox150[]; extern f32 gCubeHitbox200[]; @@ -39,8 +39,8 @@ extern f32 gMeteoWarpHitbox[]; extern f32 gItemPathChangeHitbox[]; extern f32 gItemLasersHitbox[]; extern f32 gItemBombHitbox[]; -extern f32 gActor190_191Hitbox[]; -extern f32 gActor194Hitbox[]; +extern f32 gActorMissileSeekHitbox[]; +extern f32 gMeMoraHitbox[]; extern f32 gTeamHitbox[]; extern f32 gActorAllRangeHItbox[]; extern f32 gWarpZoneEvent94Hitbox[]; diff --git a/linker_scripts/ln/rev0/symbol_addrs.txt b/linker_scripts/ln/rev0/symbol_addrs.txt new file mode 100644 index 00000000..5a0489c3 --- /dev/null +++ b/linker_scripts/ln/rev0/symbol_addrs.txt @@ -0,0 +1,8 @@ +// dma symbols +gDmaTable = 0x8017DB20; +dma_table_ROM_START = 0xE44F0; //defined:true +audio_seq_ROM_START = 0xE4A90; //defined:true +audio_bank_ROM_START = 0x11F780; //defined:true +audio_table_ROM_START = 0x13D7A0; //defined:true +ovl_ending = 0x00F02520; //defined:true +ovl_unused = 0x00F025C0; //defined:true \ No newline at end of file diff --git a/linker_scripts/us/rev1/symbol_addrs_assets.txt b/linker_scripts/us/rev1/symbol_addrs_assets.txt index f396714e..2aa0f73c 100644 --- a/linker_scripts/us/rev1/symbol_addrs_assets.txt +++ b/linker_scripts/us/rev1/symbol_addrs_assets.txt @@ -60,7 +60,7 @@ D_AQ_6002628 = 0x06002628; D_AQ_60260EC = 0x060260EC; D_AQ_60314AC = 0x060314AC; D_TI1_70067C4 = 0x70067C4; -D_TI1_7006990 = 0x7006990; +aTi1DesertCrawlerSkel = 0x7006990; D_TI1_7006F74 = 0x7006F74; D_TI1_7007130 = 0x7007130; D_TI1_7007234 = 0x7007234; @@ -89,7 +89,7 @@ D_A6_6011910 = 0x6011910; D_A6_601B2B0 = 0x601B2B0; D_A6_6018BA0 = 0x6018BA0; D_A6_6028578 = 0x6028578; -D_A6_6028454 = 0x6028454; +aA6GorgonHitbox = 0x6028454; D_TITLE_60246F8 = 0x60246F8; D_TITLE_60338DC = 0x60338DC; diff --git a/linker_scripts/us/rev1/symbol_addrs_engine.txt b/linker_scripts/us/rev1/symbol_addrs_engine.txt index d3f16df6..0122f86a 100644 --- a/linker_scripts/us/rev1/symbol_addrs_engine.txt +++ b/linker_scripts/us/rev1/symbol_addrs_engine.txt @@ -170,14 +170,14 @@ Object_SetCullDirection = 0x800597C0; Graphics_SetScaleMtx = 0x8005980C; Sprite168_Draw = 0x80059850; Object_dummy_800598DC = 0x800598DC; -Actor201_Draw = 0x800598E8; -Actor202_PostLimbDraw = 0x800599A4; -Actor202_Draw = 0x80059A24; +MeteoBall_Draw = 0x800598E8; +ActorHopBot_PostLimbDraw = 0x800599A4; +ActorHopBot_Draw = 0x80059A24; MeteoTunnel_Draw = 0x80059AEC; Scenery_DrawTitaniaBones = 0x80059B20; func_edisplay_80059BB0 = 0x80059BB0; CoIBeam_Draw = 0x80059BBC; -Actor196_Draw = 0x80059BF0; +ActorMoleMissile_Draw = 0x80059BF0; func_edisplay_80059C28 = 0x80059C28; Sprite167_Draw = 0x80059C34; FogShadow_Draw = 0x80059C40; @@ -190,12 +190,12 @@ ActorDebris_Draw = 0x8005A094; Actor_DrawEngineAndContrails = 0x8005ADAC; Actor_DrawEngineGlow = 0x8005B1E8; func_edisplay_8005B388 = 0x8005B388; -Actor180_Draw = 0x8005B6A4; -Actor182_Draw = 0x8005B71C; -Actor186_Draw = 0x8005B7CC; -Actor190_191_Draw = 0x8005B848; -Actor192_Draw = 0x8005B9A4; -Actor193_Draw = 0x8005BA30; +MeMolarRock_Draw = 0x8005B6A4; +MeMeteor2_Draw = 0x8005B71C; +MeLaserCannon1_Draw = 0x8005B7CC; +ActorMissileSeek_Draw = 0x8005B848; +ActorSkibot_Draw = 0x8005B9A4; +ActorRadar_Draw = 0x8005BA30; func_edisplay_8005BAAC = 0x8005BAAC; Object_SetShadowDL = 0x8005BAB4; ItemCheckpoint_Draw = 0x8005C5F0; @@ -234,22 +234,22 @@ TexturedLine_DrawPath = 0x80060D94; // fox_effect BonusText_Display = 0x80077240; -func_effect_8007783C = 0x8007783C; +Effect_Load = 0x8007783C; func_effect_80079618 = 0x80079618; -func_effect_8007A568 = 0x8007A568; +Effect_Effect383_Spawn = 0x8007A568; Effect_SpawnTimedSfxAtPos = 0x8007A6F0; -func_effect_8007A900 = 0x8007A900; -func_effect_8007AFD0 = 0x8007AFD0; -func_effect_8007B8F8 = 0x8007B8F8; -func_effect_8007BC7C = 0x8007BC7C; -func_effect_8007BFFC = 0x8007BFFC; -func_effect_8007C120 = 0x8007C120; +Effect_Effect359_Spawn = 0x8007A900; +Effect_Effect382_Spawn = 0x8007AFD0; +Effect_Effect364_Spawn = 0x8007B8F8; +Effect_Effect362_Spawn = 0x8007BC7C; +Effect386_Spawn1 = 0x8007BFFC; +Effect_Effect390_Spawn = 0x8007C120; func_effect_8007D0E0 = 0x8007D0E0; func_effect_8007D2C8 = 0x8007D2C8; func_effect_8007EE68 = 0x8007EE68; func_effect_800815DC = 0x800815DC; func_effect_80081A8C = 0x80081A8C; -func_effect_8008377C = 0x8008377C; +Effect_Effect391_Spawn = 0x8008377C; // fox_enmy Object_PlayerSfx = 0x80060F30; @@ -284,9 +284,9 @@ Object_CheckHitboxCollision = 0x80062DBC; Object_CheckSingleHitbox = 0x800631A8; Object_CheckPolyCollision = 0x8006326C; Object_CheckCollision = 0x8006351C; -func_enmy_80063CAC = 0x80063CAC; -func_enmy_80063D58 = 0x80063D58; -func_enmy_80063E5C = 0x80063E5C; +Actor_CoRadar_Init = 0x80063CAC; +Scenery_Corneria_Init = 0x80063D58; +Scenery_CoStoneArch_Init = 0x80063E5C; func_enmy_80063F4C = 0x80063F4C; func_enmy_80063F58 = 0x80063F58; func_enmy_80063F74 = 0x80063F74; @@ -297,13 +297,13 @@ func_enmy_8006546C = 0x8006546C; func_enmy_800654E4 = 0x800654E4; func_enmy_800655C8 = 0x800655C8; func_enmy_8006566C = 0x8006566C; -Actors190_191_Update = 0x800656D4; +ActorMissileSeek_Update = 0x800656D4; func_enmy_800660F0 = 0x800660F0; Actor_Despawn = 0x80066254; -Actor192_Update = 0x8006654C; +ActorSkibot_Update = 0x8006654C; func_enmy_8006684C = 0x8006684C; -Actor193_Update = 0x800669A0; -Actor180_Update = 0x80066A80; +ActorRadar_Update = 0x800669A0; +MeMolarRock_Update = 0x80066A80; func_enmy_80066A8C = 0x80066A8C; func_enmy_80066C00 = 0x80066C00; CoBuilding9_Update = 0x80066D5C; @@ -366,7 +366,7 @@ gGameStandby = 0x80161A39; gFovY = 0x80161A3C; gProjectNear = 0x80161A40; gProjectFar = 0x80161A44; -gShowCrosshairs = 0x800D2860; +gShowReticles = 0x800D2860; D_game_800D2870 = 0x800D2870; sVsCameraULx = 0x800D2874; sVsCameraLRx = 0x800D2884; @@ -431,14 +431,14 @@ gPlayerShots = 0x80174050; //size:0x700 gTexturedLines = 0x80174750; //size:0x12C0 gRadarMarks = 0x80175A10; //size:0xA28 gBonusText = 0x80176438; //size:0x118 -gActor194Status = 0x80176550; -gActor194xPos = 0x80176558; -gActor194yPos = 0x80176878; -gActor194zPos = 0x80176B98; -gActor194xRot = 0x80176EB8; -gActor194yRot = 0x801771D8; +gMeMoraStatus = 0x80176550; +gMeMoraXpos = 0x80176558; +gMeMoraYpos = 0x80176878; +gMeMoraZpos = 0x80176B98; +gMeMoraXrot = 0x80176EB8; +gMeMoraYrot = 0x801771D8; gSceneId = 0x801774F8; -gActor194zRot = 0x80177500; +gMeMoraZrot = 0x80177500; gSceneSetup = 0x80177820; gClearPlayerInfo = 0x80177824; gEnemyShotSpeed = 0x80177828; @@ -622,7 +622,7 @@ gBossDeathCamAtZ = 0x80178448; gCameraShakeY = 0x8017847C; gCameraShake = 0x80178480; gLoadLevelObjects = 0x80178488; -gZOSnakeWaypointCount = 0x801784A4; +gZoDodoraWaypointCount = 0x801784A4; gGroundType = 0x801784AC; gLight1xRot = 0x801784B8; gLight1yRot = 0x801784BC; diff --git a/linker_scripts/us/rev1/symbol_addrs_overlays.txt b/linker_scripts/us/rev1/symbol_addrs_overlays.txt index 1ceb0b8e..3e8124c4 100644 --- a/linker_scripts/us/rev1/symbol_addrs_overlays.txt +++ b/linker_scripts/us/rev1/symbol_addrs_overlays.txt @@ -1,14 +1,14 @@ -Corneria_Boss294_Draw = 0x8018ED78;//segment:ovl_i1 -Corneria_Boss295_Draw = 0x8018EE84;//segment:ovl_i1 -Corneria_IBeam_Init = 0x8018B0B4;//segment:ovl_i1 +Corneria_CoCarrierLeft_Draw = 0x8018ED78;//segment:ovl_i1 +Corneria_CoCarrierUpper_Draw = 0x8018EE84;//segment:ovl_i1 +Corneria_CoIBeam_Init = 0x8018B0B4;//segment:ovl_i1 Corneria_Granga_Init = 0x801878D8;//segment:ovl_i1 -Corneria_Carrier_Init = 0x8018BE7C;//segment:ovl_i1 -Venom1_8019250C = 0x8019250C;//segment:ovl_i1 -Venom1_80192CB0 = 0x80192CB0;//segment:ovl_i1 -Venom1_80192EA4 = 0x80192EA4;//segment:ovl_i1 -Venom1_801933B4 = 0x801933B4;//segment:ovl_i1 -Venom1_Boss319_Init = 0x801935CC;//segment:ovl_i1 -Venom1_Boss_Update = 0x80194398;//segment:ovl_i1 +Corneria_CoCarrier_Init = 0x8018BE7C;//segment:ovl_i1 +Venom1_Ve1Pillar1_Init = 0x8019250C;//segment:ovl_i1 +Venom1_Ve1Pillar2_3_Init = 0x80192CB0;//segment:ovl_i1 +Venom1_Ve1Pillar4_Init = 0x80192EA4;//segment:ovl_i1 +Venom1_Ve1MonkeyStatue_Init = 0x801933B4;//segment:ovl_i1 +Venom1_Ve1Golemech_Init = 0x801935CC;//segment:ovl_i1 +Venom1_Ve1Golemech_Update = 0x80194398;//segment:ovl_i1 Venom1_801920F0 = 0x801920F0;//segment:ovl_i1 D_i1_8019A04C = 0x8019A04C; // size:0xC type:s16 segment:ovl_i1 D_i1_8019B6C0 = 0x8019B6C0;//segment:ovl_i1 @@ -21,7 +21,7 @@ D_i1_8019A500 = 0x8019A500; // segment:ovl_i1 type:s16 size:0x44 D_i1_8019B838 = 0x8019B838; // segment:ovl_i1 size:0x880 Meteo_80187B08 = 0x80187B08;//segment:ovl_i2 -Meteo_Boss297_Init = 0x80188A40;//segment:ovl_i2 +Meteo_MeCrusher_Init = 0x80188A40;//segment:ovl_i2 D_i2_80195D70 = 0x80195D70;//segment:ovl_i2 D_i4_8019F168 = 0x8019F168; // type:Vec3f segment:ovl_i4 D_i4_8019F18C = 0x8019F18C; // type:f32 size:0xC segment:ovl_i4 @@ -55,25 +55,25 @@ D_menu_801AEE6C = 0x801AEE6C; // type:s32 size:0x58 force_migration:True segment D_menu_801AF25C = 0x801AF25C; // type:f32 size:0x18 force_migration:True segment:ovl_menu D_menu_801AF274 = 0x801AF274; // type:f32 size:0x18 force_migration:True segment:ovl_menu -Area6_801875E4 = 0x801875E4;//segment:ovl_i3 -Area6_80187704 = 0x80187704;//segment:ovl_i3 -Area6_BossA6_Init = 0x80187754;//segment:ovl_i3 -Area6_Boss_Update = 0x80187944;//segment:ovl_i3 +Area6_ActorMissileSeekPlayer_Spawn = 0x801875E4;//segment:ovl_i3 +Area6_Effect395_Spawn = 0x80187704;//segment:ovl_i3 +Area6_A6Gorgon_Init = 0x80187754;//segment:ovl_i3 +Area6_A6Gorgon_Update = 0x80187944;//segment:ovl_i3 Area6_8018A1B0 = 0x8018A1B0;//segment:ovl_i3 Area6_8018A2C4 = 0x8018A2C4;//segment:ovl_i3 Area6_8018A464 = 0x8018A464;//segment:ovl_i3 Area6_8018B9BC = 0x8018B9BC;//segment:ovl_i3 Area6_8018BCD4 = 0x8018BCD4;//segment:ovl_i3 Area6_8018C0D0 = 0x8018C0D0;//segment:ovl_i3 -Area6_Boss_Draw = 0x8018C54C;//segment:ovl_i3 -Zoness_SpawnDebris = 0x801900FC;//segment:ovl_i3 -Zoness_801915A4 = 0x801915A4;//segment:ovl_i3 -Zoness_80191BB8 = 0x80191BB8;//segment:ovl_i3 -Zoness_BossZo_Init = 0x801932AC;//segment:ovl_i3 -Zoness_80193908 = 0x80193908;//segment:ovl_i3 -Zoness_80193A98 = 0x80193A98;//segment:ovl_i3 +Area6_A6Gorgon_Draw = 0x8018C54C;//segment:ovl_i3 +Zoness_ActorDebris_Spawn = 0x801900FC;//segment:ovl_i3 +Zoness_ZoEnergyBall_Init = 0x801915A4;//segment:ovl_i3 +Zoness_ZoEnergyBall_Init2 = 0x80191BB8;//segment:ovl_i3 +Zoness_ZoSarumarine_Init = 0x801932AC;//segment:ovl_i3 +Zoness_Effect394_Spawn = 0x80193908;//segment:ovl_i3 +Zoness_Effect394_Spawn2 = 0x80193A98;//segment:ovl_i3 Zoness_80193CC8 = 0x80193CC8;//segment:ovl_i3 -Zoness_Boss_Update = 0x80194A84;//segment:ovl_i3 +Zoness_ZoSarumarine_Update = 0x80194A84;//segment:ovl_i3 Zoness_801986FC = 0x801986FC;//segment:ovl_i3 Zoness_801989FC = 0x801989FC;//segment:ovl_i3 Zoness_80198BE8 = 0x80198BE8;//segment:ovl_i3 @@ -85,31 +85,31 @@ Zoness_801991D0 = 0x801991D0;//segment:ovl_i3 Zoness_80199394 = 0x80199394;//segment:ovl_i3 Zoness_80199470 = 0x80199470;//segment:ovl_i3 Zoness_8019962C = 0x8019962C;//segment:ovl_i3 -Zoness_8019B1F0 = 0x8019B1F0;//segment:ovl_i3 -Zoness_8019B810 = 0x8019B810;//segment:ovl_i3 -Zoness_8019C200 = 0x8019C200;//segment:ovl_i3 -Zoness_Actor247_Init = 0x8019D060;//segment:ovl_i3 +Zoness_ZoCargoShip_Init = 0x8019B1F0;//segment:ovl_i3 +Zoness_ZoContainer_Init = 0x8019B810;//segment:ovl_i3 +Zoness_ZoSupplyCrane_Init = 0x8019C200;//segment:ovl_i3 +Zoness_ZoBarrier_Init = 0x8019D060;//segment:ovl_i3 Solar_LevelComplete = 0x801A7930;//segment:ovl_i3 Aquas_SpawnDebris = 0x801A9448;//segment:ovl_i3 -Aquas_801A94EC = 0x801A94EC;//segment:ovl_i3 +Aquas_SpawnItem = 0x801A94EC;//segment:ovl_i3 Aquas_801A958C = 0x801A958C;//segment:ovl_i3 -Aquas_801AC8A8 = 0x801AC8A8;//segment:ovl_i3 -Aquas_801AD688 = 0x801AD688;//segment:ovl_i3 -Aquas_801AE3AC = 0x801AE3AC;//segment:ovl_i3 -Aquas_801AF9FC = 0x801AF9FC;//segment:ovl_i3 +Aquas_Effect366_Spawn = 0x801AC8A8;//segment:ovl_i3 +Aquas_Actor255_Init = 0x801AD688;//segment:ovl_i3 +Aquas_Actor256_Init = 0x801AE3AC;//segment:ovl_i3 +Aquas_Actor257_Init = 0x801AF9FC;//segment:ovl_i3 Aquas_Actor257_Update = 0x801AFA5C;//segment:ovl_i3 Aquas_801B0F88 = 0x801B0F88;//segment:ovl_i3 Aquas_801B0FCC = 0x801B0FCC;//segment:ovl_i3 Aquas_801B1008 = 0x801B1008;//segment:ovl_i3 -Aquas_BossAq_Init = 0x801B10F8;//segment:ovl_i3 -Aquas_Boss_Update = 0x801B134C;//segment:ovl_i3 -Aquas_801B6344 = 0x801B6344;//segment:ovl_i3 -Aquas_Actor259_Update = 0x801B638C;//segment:ovl_i3 -Aquas_801B6E54 = 0x801B6E54;//segment:ovl_i3 -Aquas_Actor262_Update = 0x801B6FF8;//segment:ovl_i3 -Aquas_801B7AF0 = 0x801B7AF0;//segment:ovl_i3 -Aquas_801BA57C = 0x801BA57C;//segment:ovl_i3 -Aquas_801BB26C = 0x801BB26C;//segment:ovl_i3 +Aquas_AqBacoon_Init = 0x801B10F8;//segment:ovl_i3 +Aquas_AqBacoon_Update = 0x801B134C;//segment:ovl_i3 +Aquas_AqAnglerFish_Init = 0x801B6344;//segment:ovl_i3 +Aquas_AqAnglerFish_Update = 0x801B638C;//segment:ovl_i3 +Aquas_AqSpindlyFish_Init = 0x801B6E54;//segment:ovl_i3 +Aquas_AqSpindlyFish_Update = 0x801B6FF8;//segment:ovl_i3 +Aquas_AqGaroa_Init = 0x801B7AF0;//segment:ovl_i3 +Venom1_AqBoulder_Init = 0x801BA57C;//segment:ovl_i3 +Venom1_AqJellyfish_Init = 0x801BB26C;//segment:ovl_i3 D_i3_801C2240 = 0x801C2240;//segment:ovl_i3 D_AQ_801C4188 = 0x801C4188;//segment:ovl_i3 D_i3_801C2250 = 0x801C2250;//size:0xA0 segment:ovl_i3 @@ -141,7 +141,7 @@ D_i3_801C27C8 = 0x801C27C8; //segment:ovl_i3 size:0x12C0 D_i3_801C3A88 = 0x801C3A88; //segment:ovl_i3 size:0x700 D_i3_801C4190 = 0x801C4190; //segment:ovl_i3 size:0x28 D_i3_801C41B8 = 0x801C41B8; //segment:ovl_i3 size:0x78 -sBossAQlimbTimers = 0x801C4230; //segment:ovl_i3 size:0x70 +sAqBacoonlimbTimers = 0x801C4230; //segment:ovl_i3 size:0x70 D_i3_801C42A0 = 0x801C42A0; //segment:ovl_i3 size:0x68 D_i3_801C4308 = 0x801C4308; //segment:ovl_i3 size:0x148 D_i3_801C0060 = 0x801C0060; //segment:ovl_i3 type:f32 @@ -155,7 +155,7 @@ D_i3_801C2768 = 0x801C2768; //segment:ovl_i3 size:0x38 D_i3_801C27A0 = 0x801C27A0; //segment:ovl_i3 size:0x20 Katina_UpdateEvents = 0x80198594;//segment:ovl_i4 -Katina_BossSetup = 0x80193CA4;//segment:ovl_i4 +Katina_KaSaucerer_Init = 0x80193CA4;//segment:ovl_i4 SectorZ_Missile_Update = 0x80199C60;//segment:ovl_i4 SectorZ_MissileExplode = 0x80199900;//segment:ovl_i4 D_i4_801A03C0 = 0x801A03C0;//segment:ovl_i4 @@ -165,29 +165,29 @@ D_BO_801A03DC = 0x801A03DC;//segment:ovl_i4 Macbeth_801A55D4 = 0x801A55D4;//segment:ovl_i5 Titania_8018E3B0 = 0x8018E3B0;//segment:ovl_i5 -Titania_8018B720 = 0x8018B720;//segment:ovl_i5 +Titania_TiRasco_Dying = 0x8018B720;//segment:ovl_i5 Titania_801990DC = 0x801990DC;//segment:ovl_i5 Ground_801B6AEC = 0x801B6AEC;//segment:ovl_i5 -Titania_80189B80 = 0x80189B80;//segment:ovl_i5 -Titania_8018ADC4 = 0x8018ADC4;//segment:ovl_i5 -Titania_Actor231_Init = 0x8018B96C;//segment:ovl_i5 -Titania_8018BFB0 = 0x8018BFB0;//segment:ovl_i5 -Titania_8018E3CC = 0x8018E3CC;//segment:ovl_i5 -Titania_8018E5E8 = 0x8018E5E8;//segment:ovl_i5 -Titania_8018EFF0 = 0x8018EFF0;//segment:ovl_i5 -Titania_8018F0D8 = 0x8018F0D8;//segment:ovl_i5 -Titania_Boss306_Init = 0x8018FA48;//segment:ovl_i5 -Macbeth_80199F8C = 0x80199F8C;//segment:ovl_i5 +Titania_TiFekuda_Init = 0x80189B80;//segment:ovl_i5 +Titania_TiRasco_Init = 0x8018ADC4;//segment:ovl_i5 +Titania_TiBomb_Init = 0x8018B96C;//segment:ovl_i5 +Titania_TiDesertCrawler_Init = 0x8018BFB0;//segment:ovl_i5 +Titania_TiDelphor_Init = 0x8018E3CC;//segment:ovl_i5 +Titania_TiDelphorHead_Init = 0x8018E5E8;//segment:ovl_i5 +Titania_TiCactus_Init = 0x8018EFF0;//segment:ovl_i5 +Titania_TiPillar_Init = 0x8018F0D8;//segment:ovl_i5 +Titania_TiGoras_Init = 0x8018FA48;//segment:ovl_i5 +Macbeth_Train_Init = 0x80199F8C;//segment:ovl_i5 Titania_80193B30 = 0x80193B30;//segment:ovl_i5 Titania_80193DF0 = 0x80193DF0;//segment:ovl_i5 Titania_80190A08 = 0x80190A08;//segment:ovl_i5 -Macbeth_801A3E70 = 0x801A3E70;//segment:ovl_i5 -Macbeth_801A4660 = 0x801A4660;//segment:ovl_i5 -Macbeth_801A4AF8 = 0x801A4AF8;//segment:ovl_i5 -Macbeth_801A5E2C = 0x801A5E2C;//segment:ovl_i5 -Macbeth_801A6134 = 0x801A6134;//segment:ovl_i5 -Macbeth_801A65E0 = 0x801A65E0;//segment:ovl_i5 -Macbeth_801A7D98 = 0x801A7D98;//segment:ovl_i5 +Macbeth_MaMaRailroadSwitch_Init = 0x801A3E70;//segment:ovl_i5 +Macbeth_MaBoulder_Init = 0x801A4660;//segment:ovl_i5 +Macbeth_MaRailwaySignal_Init = 0x801A4AF8;//segment:ovl_i5 +Macbeth_LockBars_Init = 0x801A5E2C;//segment:ovl_i5 +Macbeth_MaBarrier_Init = 0x801A6134;//segment:ovl_i5 +Macbeth_MaProximityLight_Init = 0x801A65E0;//segment:ovl_i5 +Macbeth_Actor207_Init = 0x801A7D98;//segment:ovl_i5 Ground_801B6E20 = 0x801B6E20;//segment:ovl_i5 D_i5_801B74F0 = 0x801B74F0;//segment:ovl_i5 size:28 D_TI_801B7584 = 0x801B7584;//segment:ovl_i5 @@ -197,7 +197,7 @@ D_MA_801BA1E8 = 0x801BA1E8;//segment:ovl_i5 D_MA_801BE250 = 0x801BE250;//segment:ovl_i5 size:0x20 D_MA_801BE2F0 = 0x801BE2F0;//segment:ovl_i5 size:0x12 D_i5_801B8198 = 0x801B8198;//size:0x210 segment:ovl_i5 -D_TI_801B83A8 = 0x801B83A8;//size:0x814 type:f32 segment:ovl_i5 +aTiGorasHitbox = 0x801B83A8;//size:0x814 type:f32 segment:ovl_i5 D_i5_801BA708 = 0x801BA708;//size:0xC type:Vec3f segment:ovl_i5 D_i5_801BAA50 = 0x801BAA50;//size:0x28 type:s16 segment:ovl_i5 D_i5_801BBEE0 = 0x801BBEE0;//segment:ovl_i5 @@ -211,8 +211,8 @@ D_i5_801B814C = 0x801B814C;//size:0x14 segment:ovl_i5 D_i5_801B7630 = 0x801B7630;//size:0x24 segment:ovl_i5 Andross_801888F4 = 0x801888F4; //segment:ovl_i6 -SectorY_Boss314_Init = 0x80197CC4; //segment:ovl_i6 -Andross_Boss320_Init = 0x8018D16C; //segment:ovl_i6 +SectorY_SyShogun_Init = 0x80197CC4; //segment:ovl_i6 +Andross_AndAndross_Init = 0x8018D16C; //segment:ovl_i6 sTeamInitPos = 0x801A68B0;//size:0x48 type:Vec3f segment:ovl_i6 sTeamInitRot = 0x801A68F8;//size:0xC type:f32 segment:ovl_i6 D_i6_801A7F30 = 0x801A7F30; //segment:ovl_i6 diff --git a/src/audio/audio_general.c b/src/audio/audio_general.c index bdf01981..6bf0178c 100644 --- a/src/audio/audio_general.c +++ b/src/audio/audio_general.c @@ -203,106 +203,37 @@ PlaylistCmd sPlaylists[][100] = { { 255, 0, NA_BGM_STAGE_CO, 50, 255, 50 }, }, { - { 0, 0, NA_BGM_START_DEMO, 0, 255, 1620 }, - { 0, 0, NA_BGM_STAGE_CO, 0, 255, 2490 }, - { 1, 0, NA_BGM_STAGE_CO, 50, 255, 50 }, - { 0, 0, NA_BGM_BOSS_A_CARRIER, 0, 255, 1620 }, - { 1, 0, NA_BGM_BOSS_A_CARRIER, 1, 255, 50 }, - { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, - { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, - { 0, 0, NA_BGM_START_DEMO_S, 0, 255, 242 }, - { 0, 0, NA_BGM_STAGE_SY, 0, 255, 2096 }, - { 1, 0, NA_BGM_STAGE_SY, 50, 255, 50 }, - { 0, 0, NA_BGM_BOSS_SY, 0, 2, 1600 }, - { 1, 0, NA_BGM_BOSS_SY, 1, 255, 50 }, - { 0, 0, NA_BGM_REAL_BOSS, 0, 255, 1600 }, - { 1, 0, NA_BGM_REAL_BOSS, 1, 255, 50 }, - { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, - { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, - { 0, 0, NA_BGM_KA_START_DEMO, 0, 255, 241 }, - { 0, 0, NA_BGM_STAGE_KA, 0, 255, 2184 }, - { 1, 0, NA_BGM_STAGE_KA, 1, 255, 100 }, - { 0, 0, NA_BGM_BOSS_KA, 0, 1, 1115 }, - { 1, 0, NA_BGM_BOSS_KA, 50, 255, 100 }, - { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, - { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, - { 0, 0, NA_BGM_SO_START_DEMO, 0, 255, 250 }, - { 0, 0, NA_BGM_STAGE_SO, 0, 255, 1096 }, - { 3, 0, NA_BGM_BILL, 0, 255, 1000 }, - { 1, 0, NA_BGM_STAGE_SO, 50, 255, 50 }, - { 0, 0, NA_BGM_BOSS_SO, 0, 255, 1600 }, - { 1, 0, NA_BGM_BOSS_SO, 1, 255, 50 }, - { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, - { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, - { 0, 0, NA_BGM_START_DEMO_S, 0, 255, 260 }, - { 0, 0, NA_BGM_STAGE_MA, 0, 255, 1920 }, - { 1, 0, NA_BGM_STAGE_MA, 50, 255, 50 }, - { 0, 0, NA_BGM_BOSS_MA, 0, 255, 1600 }, - { 1, 0, NA_BGM_BOSS_MA, 1, 255, 50 }, - { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, - { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, - { 0, 0, NA_BGM_BO_START_DEMO, 0, 255, 241 }, - { 0, 0, NA_BGM_STAGE_BO, 0, 255, 1177 }, - { 1, 0, NA_BGM_STAGE_BO, 100, 255, 100 }, - { 0, 0, NA_BGM_BOSS_BO, 0, 255, 1115 }, - { 1, 0, NA_BGM_BOSS_BO, 50, 255, 50 }, - { 0, 0, NA_BGM_STARWOLF, 0, 255, 2120 }, - { 1, 0, NA_BGM_STARWOLF, 1, 255, 50 }, - { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, - { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, - { 0, 0, NA_BGM_STAGE_VE1, 0, 255, 1671 }, - { 1, 0, NA_BGM_STAGE_VE1, 50, 255, 50 }, - { 0, 0, NA_BGM_BOSS_VE, 0, 255, 1600 }, - { 1, 0, NA_BGM_BOSS_VE, 1, 255, 50 }, - { 0, 0, NA_BGM_DASH_INTO_BASE, 0, 0, 176 }, - { 0, 0, NA_BGM_STAGE_ANDROSS, 0, 255, 588 }, - { 0, 0, NA_BGM_BOSS_ANDROSS, 0, 0, 2420 }, - { 1, 0, NA_BGM_BOSS_ANDROSS, 10, 255, 50 }, - { 0, 0, NA_BGM_BOSS_ANDROSS, 0, 255, 1200 }, - { 1, 0, NA_BGM_BOSS_ANDROSS, 1, 255, 150 }, - { 0, 0, NA_BGM_ALL_CLEAR, 0, 255, 1091 }, - { 1, 0, NA_BGM_ALL_CLEAR, 80, 255, 160 }, - { 0, 0, NA_BGM_STAFF_ROLL, 0, 255, 9500 }, + { 0, 0, NA_BGM_START_DEMO, 0, 255, 1620 }, { 0, 0, NA_BGM_STAGE_CO, 0, 255, 2490 }, + { 1, 0, NA_BGM_STAGE_CO, 50, 255, 50 }, { 0, 0, NA_BGM_BOSS_A_CARRIER, 0, 255, 1620 }, + { 1, 0, NA_BGM_BOSS_A_CARRIER, 1, 255, 50 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, + { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_START_DEMO_S, 0, 255, 242 }, + { 0, 0, NA_BGM_STAGE_SY, 0, 255, 2096 }, { 1, 0, NA_BGM_STAGE_SY, 50, 255, 50 }, + { 0, 0, NA_BGM_BOSS_SY, 0, 2, 1600 }, { 1, 0, NA_BGM_BOSS_SY, 1, 255, 50 }, + { 0, 0, NA_BGM_REAL_BOSS, 0, 255, 1600 }, { 1, 0, NA_BGM_REAL_BOSS, 1, 255, 50 }, + { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, + { 0, 0, NA_BGM_KA_START_DEMO, 0, 255, 241 }, { 0, 0, NA_BGM_STAGE_KA, 0, 255, 2184 }, + { 1, 0, NA_BGM_STAGE_KA, 1, 255, 100 }, { 0, 0, NA_BGM_BOSS_KA, 0, 1, 1115 }, + { 1, 0, NA_BGM_BOSS_KA, 50, 255, 100 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, + { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_SO_START_DEMO, 0, 255, 250 }, + { 0, 0, NA_BGM_STAGE_SO, 0, 255, 1096 }, { 3, 0, NA_BGM_BILL, 0, 255, 1000 }, + { 1, 0, NA_BGM_STAGE_SO, 50, 255, 50 }, { 0, 0, NA_BGM_BOSS_SO, 0, 255, 1600 }, + { 1, 0, NA_BGM_BOSS_SO, 1, 255, 50 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, + { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_START_DEMO_S, 0, 255, 260 }, + { 0, 0, NA_BGM_STAGE_MA, 0, 255, 1920 }, { 1, 0, NA_BGM_STAGE_MA, 50, 255, 50 }, + { 0, 0, NA_BGM_BOSS_MA, 0, 255, 1600 }, { 1, 0, NA_BGM_BOSS_MA, 1, 255, 50 }, + { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, + { 0, 0, NA_BGM_BO_START_DEMO, 0, 255, 241 }, { 0, 0, NA_BGM_STAGE_BO, 0, 255, 1177 }, + { 1, 0, NA_BGM_STAGE_BO, 100, 255, 100 }, { 0, 0, NA_BGM_BOSS_BO, 0, 255, 1115 }, + { 1, 0, NA_BGM_BOSS_BO, 50, 255, 50 }, { 0, 0, NA_BGM_STARWOLF, 0, 255, 2120 }, + { 1, 0, NA_BGM_STARWOLF, 1, 255, 50 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, + { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_STAGE_VE1, 0, 255, 1671 }, + { 1, 0, NA_BGM_STAGE_VE1, 50, 255, 50 }, { 0, 0, NA_BGM_BOSS_VE, 0, 255, 1600 }, + { 1, 0, NA_BGM_BOSS_VE, 1, 255, 50 }, { 0, 0, NA_BGM_DASH_INTO_BASE, 0, 0, 176 }, + { 0, 0, NA_BGM_STAGE_ANDROSS, 0, 255, 588 }, { 0, 0, NA_BGM_BOSS_ANDROSS, 0, 0, 2420 }, + { 1, 0, NA_BGM_BOSS_ANDROSS, 10, 255, 50 }, { 0, 0, NA_BGM_BOSS_ANDROSS, 0, 255, 1200 }, + { 1, 0, NA_BGM_BOSS_ANDROSS, 1, 255, 150 }, { 0, 0, NA_BGM_ALL_CLEAR, 0, 255, 1091 }, + { 1, 0, NA_BGM_ALL_CLEAR, 80, 255, 160 }, { 0, 0, NA_BGM_STAFF_ROLL, 0, 255, 9500 }, { 255, 0, NA_BGM_STAGE_CO, 50, 255, 50 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, }, { { 0, 0, NA_BGM_START_DEMO, 0, 255, 1620 }, { 0, 0, NA_BGM_STAGE_CO, 0, 255, 2490 }, diff --git a/src/audio/audio_heap.c b/src/audio/audio_heap.c index ab2a6127..f19b6b21 100644 --- a/src/audio/audio_heap.c +++ b/src/audio/audio_heap.c @@ -915,7 +915,7 @@ void AudioHeap_DiscardSampleCacheEntry(SampleCacheEntry* entry) { s32 sampleBankId2; s32 sampleBankId1; - numFonts = gSoundFontTable->numEntries; + numFonts = gSoundFontTable->base.numEntries; for (fondId = 0; fondId < numFonts; fondId++) { sampleBankId1 = gSoundFontList[fondId].sampleBankId1; sampleBankId2 = gSoundFontList[fondId].sampleBankId2; @@ -974,7 +974,7 @@ SampleCacheEntry* AudioHeap_AllocPersistentSampleCacheEntry(u32 size) { void AudioHeap_DiscardSampleCaches(void) { s32 fontId; s32 i; - s32 numFonts = gSoundFontTable->numEntries; + s32 numFonts = gSoundFontTable->base.numEntries; s32 pad; s32 sampleBankId2; s32 sampleBankId1; diff --git a/src/audio/audio_load.c b/src/audio/audio_load.c index 486e3deb..641e2fbb 100644 --- a/src/audio/audio_load.c +++ b/src/audio/audio_load.c @@ -50,6 +50,7 @@ void AudioLoad_DecreaseSampleDmaTtls(void) { } } } + for (i = gSampleDmaListSize1; i < gSampleDmaCount; i++) { dma = &gSampleDmas[i]; if (dma->ttl != 0) { @@ -91,6 +92,7 @@ void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, u32 arg2, u8* dmaIndexRef, return &dma->ramAddr[devAddr - dma->devAddr]; } } + if ((gSampleDmaReuseQueue2RdPos != gSampleDmaReuseQueue2WrPos) && (arg2 != 0)) { sp38 = gSampleDmaReuseQueue2[gSampleDmaReuseQueue2RdPos]; gSampleDmaReuseQueue2RdPos++; @@ -156,6 +158,7 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) { u8* dma; gSampleDmaBuffSize = 0x2D0; + for (i = 0; i < (3 * gNumNotes * gAudioBufferParams.count); i++) { dma = AudioHeap_Alloc(&gMiscPool, gSampleDmaBuffSize); gSampleDmas[gSampleDmaCount].ramAddr = dma; @@ -169,17 +172,21 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) { gSampleDmas[gSampleDmaCount].size = gSampleDmaBuffSize; gSampleDmaCount++; } + for (i = 0; i < gSampleDmaCount; i++) { gSampleDmaReuseQueue1[i] = i; gSampleDmas[i].reuseIndex = i; } + for (i = gSampleDmaCount; i < 0x100; i++) { gSampleDmaReuseQueue1[i] = 0; } + gSampleDmaReuseQueue1RdPos = 0; gSampleDmaReuseQueue1WrPos = gSampleDmaCount; gSampleDmaListSize1 = gSampleDmaCount; gSampleDmaBuffSize = 0x200; + for (i = 0; i < gNumNotes; i++) { dma = AudioHeap_Alloc(&gMiscPool, gSampleDmaBuffSize); gSampleDmas[gSampleDmaCount].ramAddr = dma; @@ -193,13 +200,16 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) { gSampleDmas[gSampleDmaCount].size = gSampleDmaBuffSize; gSampleDmaCount++; } + for (i = gSampleDmaListSize1; i < gSampleDmaCount; i++) { gSampleDmaReuseQueue2[i - gSampleDmaListSize1] = i; gSampleDmas[i].reuseIndex = i - gSampleDmaListSize1; } + for (i = gSampleDmaCount; i < 0x100; i++) { gSampleDmaReuseQueue2[i] = gSampleDmaListSize1; } + gSampleDmaReuseQueue2RdPos = 0; gSampleDmaReuseQueue2WrPos = gSampleDmaCount - gSampleDmaListSize1; } @@ -207,12 +217,12 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) { void AudioLoad_InitTable(AudioTable* table, u8* romAddr, u16 unkMediumParam) { s32 i; - table->unkMediumParam = unkMediumParam; - table->romAddr = romAddr; + table->base.unkMediumParam = unkMediumParam; + table->base.romAddr = (uintptr_t) romAddr; - for (i = 0; i < table->numEntries; i++) { + for (i = 0; i < table->base.numEntries; i++) { if ((table->entries[i].size != 0) && (table->entries[i].medium == MEDIUM_CART)) { - table->entries[i].romAddr += (u32) romAddr; + table->entries[i].romAddr += (uintptr_t) romAddr; } } } @@ -227,7 +237,9 @@ void* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outFontId) { fontId = gSeqFontTable[index++]; soundFontData = AudioLoad_SyncLoadFont(fontId); } + *outFontId = fontId; + return soundFontData; } @@ -253,7 +265,8 @@ s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) { return -1; } if (sample->medium == MEDIUM_UNK) { - AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleAddr, sample->size, gSampleBankTable->unkMediumParam); + AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleAddr, sample->size, + gSampleBankTable->base.unkMediumParam); } else { AudioLoad_SyncDma(sample->sampleAddr, sampleAddr, sample->size, sample->medium); } @@ -296,7 +309,7 @@ void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 nChunks, s32 retData, O } void AudioLoad_AsyncLoadSeq(s32 seqId, s32 nChunks, s32 retData, OSMesgQueue* retQueue) { - s32 index = ((u16*) gSeqFontTable)[AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)]; + s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)); s32 fontsLeft = gSeqFontTable[index++]; for (fontsLeft; fontsLeft > 0; fontsLeft--) { @@ -306,17 +319,18 @@ void AudioLoad_AsyncLoadSeq(s32 seqId, s32 nChunks, s32 retData, OSMesgQueue* re } u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) { - s32 index = ((u16*) gSeqFontTable)[AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)]; + s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)); *outNumFonts = gSeqFontTable[index++]; if (*outNumFonts == 0) { return NULL; + } else { + return &gSeqFontTable[index]; } - return &gSeqFontTable[index]; } void AudioLoad_DiscardSeqFonts(s32 seqId) { - s32 index = ((u16*) gSeqFontTable)[AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)]; + s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)); s32 numFonts = gSeqFontTable[index++]; u32 fontId; @@ -326,8 +340,8 @@ void AudioLoad_DiscardSeqFonts(s32 seqId) { if (AudioHeap_SearchPermanentCache(1, fontId) == NULL) { AudioLoad_DiscardFont(fontId); if (gFontLoadStatus[fontId] != 5) { - if (1) {} gFontLoadStatus[fontId] = 0; + if (1) {} } } } @@ -345,6 +359,7 @@ s32 AudioLoad_DiscardFont(s32 fontId) { } else if (tcache->entries[1].id == fontId) { tcache->entries[1].id = -1; } + pcache = &cache->persistent; for (i = 0; i < pcache->numEntries; i++) { if (pcache->entries[i].id == fontId) { @@ -366,16 +381,22 @@ void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) { s32 i; seqId = AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId); + func_800144E4(&gSeqPlayers[playerIdx]); - index = ((u16*) gSeqFontTable)[seqId]; + + index = *((u16*) gSeqFontTable + seqId); numFonts = gSeqFontTable[index++]; fontId = 0xFF; + for (numFonts; numFonts > 0; numFonts--) { fontId = gSeqFontTable[index++]; AudioLoad_SyncLoadFont(fontId); } + seqData = AudioLoad_SyncLoadSeq(seqId); + func_80016804(playerIdx); + gSeqPlayers[playerIdx].seqId = seqId; gSeqPlayers[playerIdx].defaultFont = fontId; gSeqPlayers[playerIdx].enabled = true; @@ -384,6 +405,7 @@ void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) { gSeqPlayers[playerIdx].scriptState.depth = 0; gSeqPlayers[playerIdx].delay = 0; gSeqPlayers[playerIdx].finished = false; + for (i = 0; i < 16; i++) { ; } @@ -411,17 +433,21 @@ void* AudioLoad_SyncLoadSampleBank(u32 sampleBankId, s32* outMedium) { *outMedium = MEDIUM_RAM; return ramAddr; } + cachePolicy = sampleBankTable->entries[sampleBankId].cachePolicy; if (cachePolicy == CACHEPOLICY_4) { *outMedium = sampleBankTable->entries[sampleBankId].medium; return sampleBankTable->entries[sampleBankId].romAddr; } + ramAddr = AudioLoad_SyncLoad(2, sampleBankId, &noLoad); if (ramAddr != NULL) { *outMedium = MEDIUM_RAM; return ramAddr; } + *outMedium = sampleBankTable->entries[sampleBankId].medium; + return sampleBankTable->entries[sampleBankId].romAddr; } @@ -433,25 +459,30 @@ void* AudioLoad_SyncLoadFont(s32 fontId) { SampleBankRelocInfo relocInfo; fontId = AudioLoad_GetLoadTableIndex(FONT_TABLE, fontId); + sampleBankId1 = gSoundFontList[fontId].sampleBankId1; sampleBankId2 = gSoundFontList[fontId].sampleBankId2; relocInfo.sampleBankId1 = sampleBankId1; relocInfo.sampleBankId2 = sampleBankId2; + if (sampleBankId1 != SAMPLES_NONE) { relocInfo.baseAddr1 = AudioLoad_SyncLoadSampleBank(sampleBankId1, &relocInfo.medium1); } else { relocInfo.baseAddr1 = NULL; } + if (sampleBankId2 != SAMPLES_NONE) { relocInfo.baseAddr2 = AudioLoad_SyncLoadSampleBank(sampleBankId2, &relocInfo.medium2); } else { relocInfo.baseAddr2 = NULL; } + fontData = AudioLoad_SyncLoad(1, fontId, &didAllocate); if (fontData == NULL) { return NULL; } + if (didAllocate == 1) { AudioLoad_RelocateFontAndPreloadSamples(fontId, fontData, &relocInfo, AUDIOLOAD_SYNC); } @@ -479,6 +510,7 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) { medium = table->entries[id].medium; cachePolicy = table->entries[id].cachePolicy; romAddr = table->entries[id].romAddr; + switch (cachePolicy) { case CACHEPOLICY_0: ramAddr = AudioHeap_AllocPermanent(tableType, id, size); @@ -486,18 +518,21 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) { return ramAddr; } break; + case CACHEPOLICY_1: ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, id); if (ramAddr == NULL) { return ramAddr; } break; + case CACHEPOLICY_2: ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, id); if (ramAddr == NULL) { return ramAddr; } break; + case CACHEPOLICY_3: case CACHEPOLICY_4: ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, id); @@ -508,24 +543,28 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) { } *didAllocate = true; + if (medium == MEDIUM_UNK) { - AudioLoad_SyncDmaUnkMedium(romAddr, ramAddr, size, table->unkMediumParam); + AudioLoad_SyncDmaUnkMedium(romAddr, ramAddr, size, table->base.unkMediumParam); } else { AudioLoad_SyncDma(romAddr, ramAddr, size, medium); } loadStatus = (cachePolicy == CACHEPOLICY_0) ? 5 : 2; } + switch (tableType) { case SEQUENCE_TABLE: if (gSeqLoadStatus[id] != 5) { gSeqLoadStatus[id] = loadStatus; } break; + case FONT_TABLE: if (gFontLoadStatus[id] != 5) { gFontLoadStatus[id] = loadStatus; } break; + case SAMPLE_TABLE: if (gSampleFontLoadStatus[id] != 5) { gSampleFontLoadStatus[id] = loadStatus; @@ -551,6 +590,7 @@ void* AudioLoad_SearchCaches(s32 tableType, s32 id) { if (ramAddr != NULL) { return ramAddr; } + ramAddr = AudioHeap_SearchCaches(tableType, CACHE_EITHER, id); if (ramAddr != NULL) { return ramAddr; @@ -595,11 +635,11 @@ void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData) { fontDataPtrs[0] += fontBaseAddr; for (i = 0; i < numDrums; i++) { - offset = (*drumDataPtrs)[i]; + offset = *(*drumDataPtrs + i); if (offset != 0) { drum = offset += fontBaseAddr; - (*drumDataPtrs)[i] = drum; - // temp2; + *(*drumDataPtrs + i) = drum; + if (!drum->isRelocated) { AudioLoad_RelocateSample(&drum->tunedSample, fontBaseAddr, relocData); offset = (u32) drum->envelope; @@ -635,7 +675,9 @@ void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData) { void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) { size = ALIGN16(size); + osInvalDCache(ramAddr, size); + while (true) { if (size < 0x400) { break; @@ -646,6 +688,7 @@ void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) { devAddr += 0x400; ramAddr += 0x400; } + if (size != 0) { AudioLoad_Dma(&gSyncDmaIoMsg, 1, 0, devAddr, ramAddr, size, &gSyncDmaQueue, medium, "FastCopy"); MQ_WAIT_FOR_MESG(&gSyncDmaQueue, NULL); @@ -683,11 +726,13 @@ s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void if (size & 0xF) { size = ALIGN16(size); } + mesg->hdr.pri = priority; mesg->hdr.retQueue = retQueue; mesg->dramAddr = ramAddr; mesg->devAddr = devAddr; mesg->size = size; + handle->transferInfo.cmdType = 2; osEPiStartDma(handle, mesg, direction); @@ -722,17 +767,20 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, return NULL; } break; + case FONT_TABLE: if (gFontLoadStatus[id] == 1) { return NULL; } break; + case SAMPLE_TABLE: if (gSampleFontLoadStatus[id] == 1) { return NULL; } break; } + ramAddr = AudioLoad_SearchCaches(tableType, id); if (ramAddr != NULL) { loadStatus = 2; @@ -745,6 +793,7 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, cachePolicy = table->entries[id].cachePolicy; romAddr = table->entries[id].romAddr; loadStatus = 2; + switch (cachePolicy) { case CACHEPOLICY_0: ramAddr = AudioHeap_AllocPermanent(tableType, id, size); @@ -753,18 +802,21 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, } loadStatus = 5; break; + case CACHEPOLICY_1: ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, id); if (ramAddr == NULL) { return ramAddr; } break; + case CACHEPOLICY_2: ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, id); if (ramAddr == NULL) { return ramAddr; } break; + case CACHEPOLICY_3: case CACHEPOLICY_4: ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, id); @@ -777,17 +829,20 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, (retData << 0x18) | (tableType << 0x10) | (id << 8) | loadStatus); loadStatus = 1; } + switch (tableType) { case SEQUENCE_TABLE: if (gSeqLoadStatus[id] != 5) { gSeqLoadStatus[id] = loadStatus; } break; + case FONT_TABLE: if (gFontLoadStatus[id] != 5) { gFontLoadStatus[id] = loadStatus; } break; + case SAMPLE_TABLE: if (gSampleFontLoadStatus[id] != 5) { gSampleFontLoadStatus[id] = loadStatus; @@ -828,7 +883,7 @@ void AudioLoad_Init(void) { gAudioResetTimer = 0; for (i = 0; i < gAudioHeapSize / 8; i++) { - ((u64*) gAudioHeap)[i] = 0; + *((u64*) gAudioHeap + i) = 0; } clearContext = gAudioContextStart; @@ -836,25 +891,31 @@ void AudioLoad_Init(void) { for (; dwordsLeft >= 0; dwordsLeft--) { *clearContext++ = 0; } + switch (osTvType) { case OS_TV_PAL: gMaxTempoTvTypeFactors = 20.03042f; gRefreshRate = 50; break; + case OS_TV_MPAL: gMaxTempoTvTypeFactors = 16.546f; gRefreshRate = 60; break; + default: case OS_TV_NTSC: gMaxTempoTvTypeFactors = 16.713f; gRefreshRate = 60; break; } + AudioThread_Init(); + for (i = 0; i < 3; i++) { gAiBuffLengths[i] = 0xA0; } + gAudioTaskCountQ = 0; gAudioTaskIndexQ = 0; gCurAiBuffIndex = 0; @@ -862,13 +923,17 @@ void AudioLoad_Init(void) { gAudioCurTask = NULL; gAudioRspTasks[0].task.t.data_size = 0; gAudioRspTasks[1].task.t.data_size = 0; + osCreateMesgQueue(&gSyncDmaQueue, gSyncDmaMsg, 1); osCreateMesgQueue(&gCurAudioFrameDmaQueue, gCurAudioFrameDmaMsg, 64); osCreateMesgQueue(&gExternalLoadQueue, gExternalLoadMsg, 16); osCreateMesgQueue(&gPreloadSampleQueue, gPreloadSampleMsg, 16); + gCurAudioFrameDmaCount = 0; gSampleDmaCount = 0; + AudioHeap_InitMainPools(gInitPoolSize); + for (i = 0; i < 3; i++) { gAiBuffers[i] = AudioHeap_Alloc(&gInitPool, AIBUF_SIZE); for (j = 0; j < AIBUF_LEN; j++) { @@ -878,26 +943,33 @@ void AudioLoad_Init(void) { gAudioSpecId = AUDIOSPEC_0; gAudioResetStep = 1; AudioHeap_ResetStep(); - gSequenceTable = (AudioTable*) &gSeqTableInit; - gSoundFontTable = (AudioTable*) &gSoundFontTableInit; - gSampleBankTable = (AudioTable*) &gSampleBankTableInit; + + gSequenceTable = &gSeqTableInit; + gSoundFontTable = &gSoundFontTableInit; + gSampleBankTable = &gSampleBankTableInit; gSeqFontTable = gSeqFontTableInit; - gNumSequences = gSequenceTable->numEntries; + gNumSequences = gSequenceTable->base.numEntries; + AudioLoad_InitTable(gSequenceTable, SEGMENT_ROM_START(audio_seq), gSequenceMedium); AudioLoad_InitTable(gSoundFontTable, SEGMENT_ROM_START(audio_bank), gSoundFontMedium); AudioLoad_InitTable(gSampleBankTable, SEGMENT_ROM_START(audio_table), gSampleBankMedium); - numFonts = gSoundFontTable->numEntries; + + numFonts = gSoundFontTable->base.numEntries; + gSoundFontList = AudioHeap_Alloc(&gInitPool, numFonts * sizeof(SoundFont)); + for (i = 0; i < numFonts; i++) { gSoundFontList[i].sampleBankId1 = (gSoundFontTable->entries[i].shortData1 >> 8) & 0xFF; gSoundFontList[i].sampleBankId2 = gSoundFontTable->entries[i].shortData1 & 0xFF; gSoundFontList[i].numInstruments = (gSoundFontTable->entries[i].shortData2 >> 8) & 0xFF; gSoundFontList[i].numDrums = gSoundFontTable->entries[i].shortData2 & 0xFF; } + ramAddr = AudioHeap_Alloc(&gInitPool, gPermanentPoolSize); if (ramAddr == NULL) { gPermanentPoolSize = 0; } + AudioHeap_InitPool(&gPermanentPool.pool, ramAddr, gPermanentPoolSize); func_800168BC(); } @@ -918,6 +990,7 @@ s32 AudioLoad_SlowLoadSample(s32 fontId, u8 instId, s8* status) { *status = SLOW_LOAD_STATUS_2; return 0; } + slowLoad = &gSlowLoads.slowLoad[gSlowLoads.unk_00]; if (slowLoad->state == SLOW_LOAD_DONE) { slowLoad->state = SLOW_LOAD_WAITING; @@ -1003,7 +1076,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) { } else if (slowLoad->bytesRemaining < 0x1000) { if (slowLoad->medium == MEDIUM_UNK) { AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr, - slowLoad->bytesRemaining, sampleBankTable->unkMediumParam); + slowLoad->bytesRemaining, sampleBankTable->base.unkMediumParam); } else { AudioLoad_DmaSlowCopy(&gSlowLoads.slowLoad[i], slowLoad->bytesRemaining); } @@ -1011,7 +1084,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) { } else { if (slowLoad->medium == MEDIUM_UNK) { AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr, 0x1000, - sampleBankTable->unkMediumParam); + sampleBankTable->base.unkMediumParam); } else { AudioLoad_DmaSlowCopy(&gSlowLoads.slowLoad[i], 0x1000); } @@ -1059,6 +1132,7 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32 if (i == 16) { return NULL; } + asyncLoad->status = 1; asyncLoad->curDevAddr = devAddr; asyncLoad->ramAddr = ramAddr; @@ -1073,8 +1147,8 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32 asyncLoad->chunkSize = 0x100; } } - asyncLoad->retQueue = retQueue; + asyncLoad->retQueue = retQueue; asyncLoad->delay = 3; asyncLoad->medium = medium; asyncLoad->retMsg = retMesg; @@ -1119,35 +1193,42 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) { return; } } + if (asyncLoad->bytesRemaining == 0) { msg = asyncLoad->retMsg; tableType = (msg >> 0x10) & 0xFF; tableIndex = (msg >> 8) & 0xFF; loadStatus = msg & 0xFF; + switch (tableType) { case SEQUENCE_TABLE: if (gSeqLoadStatus[tableIndex] != 5) { gSeqLoadStatus[tableIndex] = loadStatus; } break; + case SAMPLE_TABLE: if (gSampleFontLoadStatus[tableIndex] != 5) { gSampleFontLoadStatus[tableIndex] = loadStatus; } break; + case FONT_TABLE: if (gFontLoadStatus[tableIndex] != 5) { gFontLoadStatus[tableIndex] = loadStatus; } + sampleBankId1 = gSoundFontList[tableIndex].sampleBankId1; sampleBankId2 = gSoundFontList[tableIndex].sampleBankId2; relocInfo.sampleBankId1 = sampleBankId1; relocInfo.sampleBankId2 = sampleBankId2; + if (sampleBankId1 != SAMPLES_NONE) { relocInfo.baseAddr1 = AudioLoad_SyncLoadSampleBank(sampleBankId1, &relocInfo.medium1); } else { relocInfo.baseAddr1 = NULL; } + if (sampleBankId2 != SAMPLES_NONE) { relocInfo.baseAddr2 = AudioLoad_SyncLoadSampleBank(sampleBankId2, &relocInfo.medium2); } else { @@ -1161,7 +1242,7 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) { } else if (asyncLoad->bytesRemaining < asyncLoad->chunkSize) { if (asyncLoad->medium == MEDIUM_UNK) { AudioLoad_AsyncDmaUnkMedium(asyncLoad->curDevAddr, asyncLoad->curRamAddr, asyncLoad->bytesRemaining, - sampleTable->unkMediumParam); + sampleTable->base.unkMediumParam); } else { AudioLoad_AsyncDma(asyncLoad, asyncLoad->bytesRemaining); } @@ -1169,7 +1250,7 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) { } else { if (asyncLoad->medium == MEDIUM_UNK) { AudioLoad_AsyncDmaUnkMedium(asyncLoad->curDevAddr, asyncLoad->curRamAddr, asyncLoad->chunkSize, - sampleTable->unkMediumParam); + sampleTable->base.unkMediumParam); } else { AudioLoad_AsyncDma(asyncLoad, asyncLoad->chunkSize); } @@ -1211,7 +1292,7 @@ void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBank if ((sample->size != 0) && (sample->isRelocated != 1)) { sample->loop = reloc = (u32) sample->loop + fontDataAddr; sample->book = reloc = (u32) sample->book + fontDataAddr; - switch (sample->medium) { /* irregular */ + switch (sample->medium) { case MEDIUM_RAM: sample->sampleAddr = reloc = sample->sampleAddr + relocInfo->baseAddr1; sample->medium = relocInfo->medium1; @@ -1224,6 +1305,7 @@ void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBank case MEDIUM_DISK_DRIVE: break; } + sample->isRelocated = true; if (sample->unk_bit26 && (sample->medium != 0)) { gUsedSamples[gNumUsedSamples++] = sample; @@ -1253,9 +1335,11 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample } else { D_80146D80 = 0; } + gNumUsedSamples = 0; AudioLoad_RelocateFont(fontId, fontDataAddr, relocData); size = 0; + for (i = 0; i < gNumUsedSamples; i++) { size += ALIGN16(gUsedSamples[i]->size); } @@ -1268,7 +1352,7 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample #ifdef AVOID_UB sampleRamAddr = NULL; #endif - //! Bug: Those are assignments, not equality checks. + //! @bug Those are assignments, not equality checks. switch (isAsync) { case AUDIOLOAD_SYNC: if (sample->medium = relocData->medium1) { @@ -1279,6 +1363,7 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample sample->sampleAddr, sample->medium); } break; + case AUDIOLOAD_ASYNC: if (sample->medium = relocData->medium1) { sampleRamAddr = AudioHeap_AllocTemporarySampleCache(sample->size, relocData->sampleBankId1, @@ -1289,14 +1374,16 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample } break; } + if (sampleRamAddr == NULL) { continue; } + switch (isAsync) { case AUDIOLOAD_SYNC: if (sample->medium == MEDIUM_UNK) { AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleRamAddr, sample->size, - gSampleBankTable->unkMediumParam); + gSampleBankTable->base.unkMediumParam); sample->sampleAddr = sampleRamAddr; sample->medium = MEDIUM_RAM; } else { @@ -1305,6 +1392,7 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample sample->medium = MEDIUM_RAM; } break; + case AUDIOLOAD_ASYNC: size = gPreloadSampleStackTop; gPreloadSampleStack[size].sample = sample; @@ -1317,7 +1405,9 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample break; } } + gNumUsedSamples = 0; + if ((gPreloadSampleStackTop != 0) && !inProgress) { sample = gPreloadSampleStack[gPreloadSampleStackTop - 1].sample; nChunks = (sample->size / 0x1000) + 1; @@ -1367,6 +1457,7 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) { // "============Error: Magic is Broken after loading.\n" gPreloadSampleStack[preloadIndex].isFree = 1; } + while (true) { if (gPreloadSampleStackTop <= 0) { break; @@ -1380,6 +1471,7 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) { sampleAddr = sample->sampleAddr; size = sample->size; nChunks = (size >> 0xC) + 1; + key = sampleAddr + size + sample->medium; if (key != gPreloadSampleStack[gPreloadSampleStackTop - 1].endAndMediumKey) { // "============Error: Magic is Broken: %x\n"; @@ -1418,13 +1510,9 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) { s32 i; Drum* drum; Instrument* inst; - s32 numLoaded; - s32 numDrums; - s32 numInstruments; - - numLoaded = 0; - numDrums = gSoundFontList[fontId].numDrums; - numInstruments = gSoundFontList[fontId].numInstruments; + s32 numLoaded = 0; + s32 numDrums = gSoundFontList[fontId].numDrums; + s32 numInstruments = gSoundFontList[fontId].numInstruments; for (i = 0; i < numDrums; i++) { drum = Audio_GetDrum(fontId, i); @@ -1433,6 +1521,7 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) { } numLoaded = AudioLoad_AddToSampleSet(drum->tunedSample.sample, numLoaded, sampleSet); } + for (i = 0; i < numInstruments; i++) { inst = Audio_GetInstrument(fontId, i); if (inst == NULL) { @@ -1446,5 +1535,6 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) { } numLoaded = AudioLoad_AddToSampleSet(inst->normalPitchTunedSample.sample, numLoaded, sampleSet); } + return numLoaded; } diff --git a/src/audio/audio_synthesis.c b/src/audio/audio_synthesis.c index 9f7db3bc..99eb52ad 100644 --- a/src/audio/audio_synthesis.c +++ b/src/audio/audio_synthesis.c @@ -499,23 +499,20 @@ void func_80009124(s16** arg0); void func_80009504(s16* arg0, UnkStruct_800097A8* arg1) { s32 i; - f32 temp_ft0; - f32* var_v0; - f32* var_v0_2; - s32 temp_v0; - void* var_s0; - var_s0 = arg0; if (arg1->unk_0 != NULL) { arg1->unk_C = arg1->unk_0; arg1->unk_0 = 0; } + arg1->unk18 += D_8014C1B4; while (arg1->unk18 > 0x1000) { func_80009124(&arg1->unk_C); arg1->unk18 -= 0x1000; } + func_80008364(D_80145D48, D_80146148, 8, D_80146548); + for (i = 0; i < 0x100; i++) { if (D_80145D48[i] > 32767.0f) { D_80145D48[i] = 32767.0f; @@ -524,6 +521,7 @@ void func_80009504(s16* arg0, UnkStruct_800097A8* arg1) { D_80145D48[i] = -32767.0f; } } + for (i = 0; i < 0x100; i++, arg0++) { *arg0 = D_80145D48[i]; } diff --git a/src/audio/audio_tables.c b/src/audio/audio_tables.c index 370e7c67..2bfea4c3 100644 --- a/src/audio/audio_tables.c +++ b/src/audio/audio_tables.c @@ -1,49 +1,53 @@ #include "sys.h" #include "sf64audio_provisional.h" -AudioTableBase gSampleBankTableInit = { 4, 0, 0 }; -AudioTableEntry gSampleBankTableInitEntries[4] = { - { 0x000000, 0x0E1E30, MEDIUM_CART, CACHEPOLICY_4 }, - { 0x0E1E30, 0x0FF9D0, MEDIUM_CART, CACHEPOLICY_4 }, - { 0x1E1800, 0x497480, MEDIUM_CART, CACHEPOLICY_4 }, - { 0x678C80, 0x0C3900, MEDIUM_CART, CACHEPOLICY_4 }, +AudioTable gSampleBankTableInit = { + { 4, 0, 0 }, + { + { 0x000000, 0x0E1E30, MEDIUM_CART, CACHEPOLICY_4 }, + { 0x0E1E30, 0x0FF9D0, MEDIUM_CART, CACHEPOLICY_4 }, + { 0x1E1800, 0x497480, MEDIUM_CART, CACHEPOLICY_4 }, + { 0x678C80, 0x0C3900, MEDIUM_CART, CACHEPOLICY_4 }, + }, }; -AudioTableBase gSeqTableInit = { SEQ_ID_MAX, 0, 0 }; -AudioTableEntry gSeqTableInitEntries[SEQ_ID_MAX] = { - { 0x00000, 0x3AF0, MEDIUM_CART, CACHEPOLICY_0 }, { 0x03AF0, 0x56B0, MEDIUM_CART, CACHEPOLICY_0 }, - { 0x091A0, 0x2D80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0BF20, 0x1410, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x0D330, 0x1600, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0E930, 0xF20, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x0F850, 0x13A0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x10BF0, 0x1100, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x11CF0, 0x19E0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x136D0, 0x13E0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x14AB0, 0x12F0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_SECTOR_Y, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x15DA0, 0xB70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x16910, 0x2460, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x18D70, 0xD40, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_FORTUNA, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_TITANIA, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x19AB0, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x1A2A0, 0x1440, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1B6E0, 0x1B20, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1D200, 0x1B30, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x1ED30, 0x10B0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1FDE0, 0x1410, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x211F0, 0xF30, MEDIUM_CART, CACHEPOLICY_3 }, { 0x22120, 0x2B30, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x24C50, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x25440, 0x13B0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x267F0, 0xC70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x27460, 0x180, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x275E0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_TITLE, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x27BA0, 0x4E40, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2C9E0, 0x14E0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x2DEC0, 0x400, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2E2C0, 0x800, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x2EAC0, 0x1AB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x30570, 0x1AA0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x32010, 0x1370, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x33380, 0xB80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x33F00, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x344C0, 0x550, MEDIUM_CART, CACHEPOLICY_3 }, { 0x34A10, 0x360, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x34D70, 0x620, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_VS_MENU, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x35390, 0xA70, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_STAR_WOLF, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x35E00, 0xAB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x368B0, 0x13D0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x37C80, 0x250, MEDIUM_CART, CACHEPOLICY_3 }, { 0x37ED0, 0x6F0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x385C0, 0xFB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x39570, 0x1780, MEDIUM_CART, CACHEPOLICY_3 }, +AudioTable gSeqTableInit = { + { SEQ_ID_MAX, 0, 0 }, + { + { 0x00000, 0x3AF0, MEDIUM_CART, CACHEPOLICY_0 }, { 0x03AF0, 0x56B0, MEDIUM_CART, CACHEPOLICY_0 }, + { 0x091A0, 0x2D80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0BF20, 0x1410, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x0D330, 0x1600, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0E930, 0xF20, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x0F850, 0x13A0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x10BF0, 0x1100, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x11CF0, 0x19E0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x136D0, 0x13E0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x14AB0, 0x12F0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_SECTOR_Y, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x15DA0, 0xB70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x16910, 0x2460, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x18D70, 0xD40, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_FORTUNA, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_TITANIA, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x19AB0, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x1A2A0, 0x1440, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1B6E0, 0x1B20, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1D200, 0x1B30, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x1ED30, 0x10B0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1FDE0, 0x1410, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x211F0, 0xF30, MEDIUM_CART, CACHEPOLICY_3 }, { 0x22120, 0x2B30, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x24C50, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x25440, 0x13B0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x267F0, 0xC70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x27460, 0x180, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x275E0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_TITLE, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x27BA0, 0x4E40, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2C9E0, 0x14E0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x2DEC0, 0x400, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2E2C0, 0x800, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x2EAC0, 0x1AB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x30570, 0x1AA0, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x32010, 0x1370, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x33380, 0xB80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x33F00, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, + { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x344C0, 0x550, MEDIUM_CART, CACHEPOLICY_3 }, { 0x34A10, 0x360, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x34D70, 0x620, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_VS_MENU, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x35390, 0xA70, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_STAR_WOLF, 0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x35E00, 0xAB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x368B0, 0x13D0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x37C80, 0x250, MEDIUM_CART, CACHEPOLICY_3 }, { 0x37ED0, 0x6F0, MEDIUM_CART, CACHEPOLICY_3 }, + { 0x385C0, 0xFB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x39570, 0x1780, MEDIUM_CART, CACHEPOLICY_3 }, + }, }; #define SOUNDFONT_ENTRY(offset, size, medium, cachePolicy, bank1, bank2, numInst, numDrums) \ { \ @@ -51,41 +55,43 @@ AudioTableEntry gSeqTableInitEntries[SEQ_ID_MAX] = { (((numInst) &0xFF) << 8) | ((numDrums) &0xFF) \ } -AudioTableBase gSoundFontTableInit = { 33, 0, 0 }; -AudioTableEntry gSoundFontTableInitEntries[33] = { - SOUNDFONT_ENTRY(0x00000, 0x2F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_SFX, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x02F00, 0x0FE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_MAP, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x03EE0, 0x0640, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x04520, 0x1560, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x05A80, 0x0C00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x06680, 0x0DE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x07460, 0x1200, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x08660, 0x1040, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x096A0, 0x0E40, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x0A4E0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x0B100, 0x1920, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x0CA20, 0x0A20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x0D440, 0x0A00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x0DE40, 0x0D60, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x0EBA0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x0F7C0, 0x0F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x106C0, 0x0F20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x115E0, 0x0E20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x12400, 0x10A0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x134A0, 0x2580, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x15A20, 0x09E0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x16400, 0x1220, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64), - SOUNDFONT_ENTRY(0x17620, 0x0180, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 3, 0), - SOUNDFONT_ENTRY(0x177A0, 0x11C0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64), - SOUNDFONT_ENTRY(0x18960, 0x0940, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x192A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x19C80, 0x0920, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1A5A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1AF80, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1B960, 0x0A10, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1C370, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1CD50, 0x0A00, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1D750, 0x08D0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), +AudioTable gSoundFontTableInit = { + { 33, 0, 0 }, + { + SOUNDFONT_ENTRY(0x00000, 0x2F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_SFX, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x02F00, 0x0FE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_MAP, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x03EE0, 0x0640, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x04520, 0x1560, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x05A80, 0x0C00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x06680, 0x0DE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x07460, 0x1200, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x08660, 0x1040, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x096A0, 0x0E40, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x0A4E0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x0B100, 0x1920, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x0CA20, 0x0A20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x0D440, 0x0A00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x0DE40, 0x0D60, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x0EBA0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x0F7C0, 0x0F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x106C0, 0x0F20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x115E0, 0x0E20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x12400, 0x10A0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x134A0, 0x2580, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x15A20, 0x09E0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), + SOUNDFONT_ENTRY(0x16400, 0x1220, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64), + SOUNDFONT_ENTRY(0x17620, 0x0180, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 3, 0), + SOUNDFONT_ENTRY(0x177A0, 0x11C0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64), + SOUNDFONT_ENTRY(0x18960, 0x0940, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x192A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x19C80, 0x0920, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x1A5A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x1AF80, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x1B960, 0x0A10, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x1C370, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x1CD50, 0x0A00, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + SOUNDFONT_ENTRY(0x1D750, 0x08D0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), + }, }; #define AS_BYTES(x) (((x) >> 8) & 0xFF), ((x) &0xFF) diff --git a/src/engine/fox_360.c b/src/engine/fox_360.c index cb52d2ef..4071055e 100644 --- a/src/engine/fox_360.c +++ b/src/engine/fox_360.c @@ -106,36 +106,36 @@ void AllRange_DrawCountdown(void) { } } -void Boss309_Update(Boss309* this) { - OvlI4_CallFunction(OVLCALL_BOSS309_UPDATE, this); +void BoBase_Update(BoBase* this) { + OvlI4_CallFunction(OVLCALL_BO_BASE_UPDATE, this); } -void Boss309_Draw(Boss309* this) { - OvlI4_CallFunction(OVLCALL_BOSS309_DRAW, this); +void BoBase_Draw(BoBase* this) { + OvlI4_CallFunction(OVLCALL_BO_BASE_DRAW, this); } -void Boss310_Update(Boss310* this) { - OvlI4_CallFunction(OVLCALL_BOSS310_UPDATE, this); +void BoBaseShield_Update(BoBaseShield* this) { + OvlI4_CallFunction(OVLCALL_BO_BASE_SHIELD_UPDATE, this); } -void Boss310_Draw(Boss310* this) { - OvlI4_CallFunction(OVLCALL_BOSS310_DRAW, this); +void BoBaseShield_Draw(BoBaseShield* this) { + OvlI4_CallFunction(OVLCALL_BO_BASE_SHIELD_DRAW, this); } -void Actor271_Update(Actor271* this) { - OvlI4_CallFunction(OVLCALL_ACTOR271_UPDATE, this); +void BoShieldReactor_Update(BoShieldReactor* this) { + OvlI4_CallFunction(OVLCALL_BO_SHIELD_REACTOR_UPDATE, this); } -void Actor271_Draw(Actor271* this) { - OvlI4_CallFunction(OVLCALL_ACTOR271_DRAW, this); +void BoShieldReactor_Draw(BoShieldReactor* this) { + OvlI4_CallFunction(OVLCALL_BO_SHIELD_REACTOR_DRAW, this); } -void Actor272_Update(Actor272* this) { - OvlI4_CallFunction(OVLCALL_ACTOR272_UPDATE, this); +void BoLaserCannon_Update(BoLaserCannon* this) { + OvlI4_CallFunction(OVLCALL_BO_LASER_CANNON_UPDATE, this); } -void Actor272_Draw(Actor272* this) { - OvlI4_CallFunction(OVLCALL_ACTOR272_DRAW, this); +void BoLaserCannon_Draw(BoLaserCannon* this) { + OvlI4_CallFunction(OVLCALL_BO_LASER_CANNON_DRAW, this); } void AllRange_GreatFoxRepair(Player* player) { @@ -309,8 +309,9 @@ void ActorAllRange_SetShadowData(Actor* this) { if (this->drawShadow && (gLevelMode == LEVELMODE_ALL_RANGE) && (gLevelType == LEVELTYPE_PLANET)) { for (i = 0, scenery360 = gScenery360; i < 200; i++, scenery360++) { if ((scenery360->obj.status == OBJ_ACTIVE) && - ((scenery360->obj.id == OBJ_SCENERY_150) || (scenery360->obj.id == OBJ_SCENERY_149) || - (scenery360->obj.id == OBJ_SCENERY_148) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || + ((scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_3) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_1) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3)) && (fabsf(scenery360->obj.pos.x - this->obj.pos.x) < 2500.0f) && (fabsf(scenery360->obj.pos.z - this->obj.pos.z) < 2500.0f)) { @@ -332,8 +333,9 @@ void ActorAllRange_SetShadowData(Actor* this) { spCC.y = spD8.y + temp1.y; spCC.z = spD8.z + temp1.z; - if ((scenery360->obj.id == OBJ_SCENERY_149) || (scenery360->obj.id == OBJ_SCENERY_150)) { - if (scenery360->obj.id == OBJ_SCENERY_149) { + if ((scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_3)) { + if (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) { colId = COL1_5; } else { colId = COL1_6; @@ -831,10 +833,10 @@ s32 func_360_8003049C(ActorAllRange* this) { if (boss->obj.id == OBJ_BOSS_CO_CARRIER) { var_ft5 = 350.0f; - } else if (boss->obj.id == OBJ_BOSS_309) { + } else if (boss->obj.id == OBJ_BOSS_BO_BASE) { sp44 = 2000.0f; var_ft5 = 750.0f; - } else if (boss->obj.id == OBJ_BOSS_KA_BASE) { + } else if (boss->obj.id == OBJ_BOSS_KA_FLBASE) { sp44 = 1500.0f; var_ft5 = 700.0f; } @@ -2127,8 +2129,8 @@ void ActorAllRange_Update(ActorAllRange* this) { spA8.y = 70.0f; spA8.z = -70.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &spA8, &sp9C); - func_effect_80078E50(this->obj.pos.x + sp9C.x, this->obj.pos.y + sp9C.y, this->obj.pos.z + sp9C.z, - 3.1f); + Effect_Effect393_Spawn(this->obj.pos.x + sp9C.x, this->obj.pos.y + sp9C.y, this->obj.pos.z + sp9C.z, + 3.1f); } } } @@ -2260,7 +2262,7 @@ void ActorAllRange_Update(ActorAllRange* this) { this->timer_0BE = 2; this->obj.status = OBJ_DYING; this->itemDrop = DROP_NONE; - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 5.0f, 15); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 5.0f, 15); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } else { this->dmgType = DMG_BEAM; @@ -2339,7 +2341,7 @@ void ActorAllRange_DrawBarrelRoll(ActorAllRange* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, alpha); gDPSetEnvColor(gMasterDisp++, 0, 0, 160, alpha); - gSPDisplayList(gMasterDisp++, D_101DC10); + gSPDisplayList(gMasterDisp++, aBarrelRollTex); Matrix_Pop(&gGfxMatrix); } } diff --git a/src/engine/fox_beam.c b/src/engine/fox_beam.c index fa72deda..0c27fc28 100644 --- a/src/engine/fox_beam.c +++ b/src/engine/fox_beam.c @@ -61,14 +61,14 @@ void PlayerShot_ExplodeBomb(PlayerShot* shot) { if (shot->obj.pos.y < (gGroundHeight + 450.0f)) { gCameraShake = 15; if (gGroundSurface == SURFACE_WATER) { - func_effect_8007D9DC(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, - shot->unk_48 * 3.0f, 0); - func_effect_8007D9DC(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, - shot->unk_48 * 3.0f, 5); - func_effect_8007D9DC(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, - shot->unk_48 * 3.0f, 10); - func_effect_8007ADF4(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, shot->unk_48 * 0.05f, - shot->unk_48 * 0.5f); + Effect_Effect367_Spawn(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 0); + Effect_Effect367_Spawn(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 5); + Effect_Effect367_Spawn(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 10); + Effect_Effect372_Spawn2(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, shot->unk_48 * 0.05f, + shot->unk_48 * 0.5f); Effect_SpawnTimedSfxAtPos(&shot->obj.pos, NA_SE_OB_WATER_BOUND_M); } else { func_enmy_80062B60(shot->obj.pos.x, shot->obj.pos.z, 0, shot->unk_48 * 3.0f); @@ -83,8 +83,8 @@ void PlayerShot_ExplodeBomb(PlayerShot* shot) { if (var_fv1 > 2.0f) { var_fv1 = 2.0f; } - func_effect_8007B550(shot->obj.pos.x, gGroundHeight + 6.0f, shot->obj.pos.z, - shot->unk_48 * (1.5f + var_fv1), var_fv0); + Effect_Effect385_Spawn(shot->obj.pos.x, gGroundHeight + 6.0f, shot->obj.pos.z, + shot->unk_48 * (1.5f + var_fv1), var_fv0); } if (gVersusMode) { @@ -92,7 +92,7 @@ void PlayerShot_ExplodeBomb(PlayerShot* shot) { } else { var_v0 = 0; } - func_effect_8007B344(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, shot->unk_48 * 1.5f, var_v0); + Effect_Effect384_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, shot->unk_48 * 1.5f, var_v0); if (gUseDynaFloor) { var_fs0 = 5.0f; if (shot->obj.pos.y > 300.0f) { @@ -105,15 +105,15 @@ void PlayerShot_ExplodeBomb(PlayerShot* shot) { var_fs0 = 4.0f; } var_fs0 *= 2.0f; - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 50.0f, 0.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 46.0f, 19.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 35.0f, 35.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 19.0f, 46.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, 0.0f, 50.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -50.0f, 0.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -46.0f, 19.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -35.0f, 35.0f, var_fs0); - func_effect_8007AFD0(shot->obj.pos.x, shot->obj.pos.z, -19.0f, 46.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, 50.0f, 0.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, 46.0f, 19.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, 35.0f, 35.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, 19.0f, 46.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, 0.0f, 50.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, -50.0f, 0.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, -46.0f, 19.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, -35.0f, 35.0f, var_fs0); + Effect_Effect382_Spawn(shot->obj.pos.x, shot->obj.pos.z, -19.0f, 46.0f, var_fs0); } } } @@ -144,15 +144,15 @@ void PlayerShot_Impact(PlayerShot* shot) { shot->vel.x = shot->vel.y = shot->vel.z = 0.0f; if (gCurrentLevel == LEVEL_AQUAS) { gLight3R = gLight3G = gLight3B = 0; - func_effect_8007B344(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 10.0f, 4); - func_effect_8007C120(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.3f, 30); + Effect_Effect384_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 10.0f, 4); + Effect_Effect390_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.3f, 30); } else { if (gVersusMode) { var_v0_2 = shot->sourceId + 10; } else { var_v0_2 = 12; } - func_effect_8007B344(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 10.0f, var_v0_2); + Effect_Effect384_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 10.0f, var_v0_2); func_effect_8007D2C8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 4.0f); } } else { @@ -165,7 +165,7 @@ void PlayerShot_SetupEffect344(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 s32 time) { Effect_Initialize(effect); effect->obj.status = OBJ_INIT; - effect->obj.id = OBJ_EFFECT_344; + effect->obj.id = OBJ_EFFECT_EXPLOSION_MARK_1; effect->obj.pos.x = xPos; effect->obj.pos.y = yPos; effect->obj.pos.z = zPos; @@ -198,7 +198,7 @@ void PlayerShot_SpawnEffect344(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 arg4, void PlayerShot_SetupEffect345(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 scale) { Effect_Initialize(effect); effect->obj.status = OBJ_INIT; - effect->obj.id = OBJ_EFFECT_345; + effect->obj.id = OBJ_EFFECT_LASER_MARK_1; effect->obj.pos.x = xPos; effect->obj.pos.y = yPos; effect->obj.pos.z = zPos; @@ -504,7 +504,7 @@ bool PlayerShot_CheckPolyCollision(PlayerShot* shot, ObjectId objId, Object* obj sp58.z = obj->pos.z; useCol2 = false; switch (objId) { - case OBJ_ACTOR_180: + case OBJ_ACTOR_ME_MOLAR_ROCK: objId = COL1_0; break; case OBJ_SCENERY_CO_BUMP_4: @@ -512,19 +512,19 @@ bool PlayerShot_CheckPolyCollision(PlayerShot* shot, ObjectId objId, Object* obj objId = COL2_1; useCol2 = true; break; - case OBJ_SCENERY_149: + case OBJ_SCENERY_FO_MOUNTAIN_2: objId = COL1_5; break; - case OBJ_SCENERY_150: + case OBJ_SCENERY_FO_MOUNTAIN_3: objId = COL1_6; break; - case OBJ_BOSS_FO: + case OBJ_BOSS_FO_BASE: objId = COL1_4; break; - case OBJ_BOSS_VE2: + case OBJ_BOSS_VE2_BASE: objId = COL1_9; break; - case OBJ_BOSS_309: + case OBJ_BOSS_BO_BASE: objId = COL1_7; break; case ACTOR_EVENT_ID: @@ -536,23 +536,23 @@ bool PlayerShot_CheckPolyCollision(PlayerShot* shot, ObjectId objId, Object* obj case OBJ_SCENERY_ME_TUNNEL: objId = COL1_1; break; - case OBJ_SCENERY_120: + case OBJ_SCENERY_AQ_CORAL_REEF_2: objId = COL2_18; useCol2 = true; break; - case OBJ_SCENERY_143: + case OBJ_SCENERY_VS_KA_FLBASE: objId = COL2_17; useCol2 = true; break; - case OBJ_SCENERY_124: + case OBJ_SCENERY_AQ_BUMP_1: objId = COL2_15; useCol2 = true; break; - case OBJ_SCENERY_126: + case OBJ_SCENERY_AQ_BUMP_2: objId = COL2_16; useCol2 = true; break; - case OBJ_SCENERY_47: + case OBJ_SCENERY_ZO_ISLAND: objId = COL2_7; useCol2 = true; break; @@ -561,43 +561,43 @@ bool PlayerShot_CheckPolyCollision(PlayerShot* shot, ObjectId objId, Object* obj useCol2 = true; break; case OBJ_SCENERY_CO_BUMP_3: - case OBJ_SCENERY_69: + case OBJ_SCENERY_MA_TERRAIN_BUMP: objId = COL2_3; useCol2 = true; break; - case OBJ_SCENERY_140: + case OBJ_SCENERY_VS_PYRAMID_1: objId = COL2_4; useCol2 = true; break; - case OBJ_SCENERY_141: + case OBJ_SCENERY_VS_PYRAMID_2: objId = COL2_6; useCol2 = true; break; - case OBJ_SCENERY_117: + case OBJ_SCENERY_AQ_CORAL_REEF_1: objId = COL2_14; useCol2 = true; break; - case OBJ_SCENERY_70: + case OBJ_SCENERY_MA_FLOOR_1: objId = COL2_8; useCol2 = true; break; - case OBJ_SCENERY_72: + case OBJ_SCENERY_MA_FLOOR_3: objId = COL2_9; useCol2 = true; break; - case OBJ_SCENERY_71: + case OBJ_SCENERY_MA_FLOOR_2: objId = COL2_10; useCol2 = true; break; - case OBJ_SCENERY_73: + case OBJ_SCENERY_MA_FLOOR_4: objId = COL2_11; useCol2 = true; break; - case OBJ_SCENERY_67: + case OBJ_SCENERY_MA_WALL_3: objId = COL2_12; useCol2 = true; break; - case OBJ_SCENERY_74: + case OBJ_SCENERY_MA_FLOOR_5: objId = COL2_13; useCol2 = true; break; @@ -625,8 +625,8 @@ bool PlayerShot_CheckPolyCollision(PlayerShot* shot, ObjectId objId, Object* obj shot->obj.pos.z = obj->pos.z + sp70.z; } if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); } return true; } @@ -638,8 +638,8 @@ bool PlayerShot_CheckPolyCollision(PlayerShot* shot, ObjectId objId, Object* obj PlayerShot_Impact(shot); Effect_SpawnTimedSfxAtPos(&shot->obj.pos, NA_SE_EN_REFLECT); if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); } return true; } @@ -691,10 +691,10 @@ void PlayerShot_ApplyDamageToActor(PlayerShot* shot, Actor* actor, s32 hitIndex) ((actor->obj.id == OBJ_ACTOR_ALLRANGE) && (actor->fwork[23] > 1.0f)) || ((actor->obj.id == OBJ_ACTOR_EVENT) && (actor->dmgPart == 0) && (actor->eventType == EVID_METEO_PYRAMID_SHIP)) || - ((actor->obj.id == OBJ_ACTOR_261) && (shot->obj.id != PLAYERSHOT_LOCK_ON) && + ((actor->obj.id == OBJ_ACTOR_AQ_SCULPIN) && (shot->obj.id != PLAYERSHOT_LOCK_ON) && ((actor->state < 3) || (actor->state >= 5))) || - ((actor->obj.id == OBJ_ACTOR_260) && (shot->obj.id != PLAYERSHOT_LOCK_ON) && (actor->timer_0BC != 0))) { - if ((actor->obj.id == OBJ_ACTOR_261) && (actor->state < 2)) { + ((actor->obj.id == OBJ_ACTOR_AQ_GAROA) && (shot->obj.id != PLAYERSHOT_LOCK_ON) && (actor->timer_0BC != 0))) { + if ((actor->obj.id == OBJ_ACTOR_AQ_SCULPIN) && (actor->state < 2)) { actor->state = 2; } if ((shot->obj.id == PLAYERSHOT_LOCK_ON) || (shot->obj.id == PLAYERSHOT_BOMB)) { @@ -713,7 +713,7 @@ void PlayerShot_ApplyDamageToActor(PlayerShot* shot, Actor* actor, s32 hitIndex) shot->obj.pos.y += shot->vel.y * 5.0f; shot->obj.pos.z += shot->vel.z * 5.0f; actor->timer_0C2 = 3; - func_effect_80078E50(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 8.0f); + Effect_Effect393_Spawn(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 8.0f); AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); Play_SpawnHitmark(gShotHitPosX, gShotHitPosY, gShotHitPosZ); } @@ -759,7 +759,7 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { for (i = 0, actor = gActors; i < ARRAY_COUNT(gActors); i++, actor++) { if ((actor->obj.status >= OBJ_ACTIVE) && (actor->timer_0C2 == 0)) { switch (actor->obj.id) { - case OBJ_ACTOR_180: + case OBJ_ACTOR_ME_MOLAR_ROCK: if (PlayerShot_CheckPolyCollision(shot, actor->obj.id, &actor->obj)) { actor->dmgType = DMG_BEAM; actor->dmgPart = shot->sourceId; @@ -862,7 +862,7 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { shot->obj.pos.z += 2.0f * shot->vel.z; shot->timer = 5; AUDIO_PLAY_SFX(NA_SE_ROLLING_REFLECT, player->sfxSource, 0); - func_effect_80078E50(player->pos.x, player->pos.y, player->trueZpos, 8.0f); + Effect_Effect393_Spawn(player->pos.x, player->pos.y, player->trueZpos, 8.0f); } else { PlayerShot_Impact(shot); if (player->hitTimer == 0) { @@ -879,7 +879,7 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { player->knockback.y = shot->vel.y * 0.1f; player->knockback.z = shot->vel.z * 0.1f; if (player->form != FORM_ON_FOOT) { - func_effect_8007D1E0(player->pos.x, player->pos.y, player->trueZpos, 2.0f); + Effect_Effect341_Spawn(player->pos.x, player->pos.y, player->trueZpos, 2.0f); } } } @@ -890,25 +890,28 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { if ((gGroundType == 4) && Ground_801B6AEC(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z + gPathProgress)) { PlayerShot_Impact(shot); if (shot->obj.id != PLAYERSHOT_LOCK_SEARCH) { - func_effect_8007A900(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 2.0f, 255, 15, 0); + Effect_Effect359_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 2.0f, 255, 15, 0); } } if (gUseDynaFloor && Play_CheckDynaFloorCollision(&sp94, &spA4, shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z)) { PlayerShot_Impact(shot); if (shot->obj.id != PLAYERSHOT_LOCK_SEARCH) { - func_effect_8007B228(shot->obj.pos.x, sp94, shot->obj.pos.z, 1.0f); + Effect_Effect381_Spawn(shot->obj.pos.x, sp94, shot->obj.pos.z, 1.0f); } } if ((gLevelMode == LEVELMODE_ALL_RANGE) && (shot->sourceId < 110)) { for (i = 0, scenery360 = gScenery360; i < 200; i++, scenery360++) { if (scenery360->obj.status == OBJ_ACTIVE) { - if ((scenery360->obj.id == OBJ_SCENERY_117) || (scenery360->obj.id == OBJ_SCENERY_141) || - (scenery360->obj.id == OBJ_SCENERY_149) || (scenery360->obj.id == OBJ_SCENERY_150) || - (scenery360->obj.id == OBJ_SCENERY_148) || (scenery360->obj.id == OBJ_SCENERY_143) || - (scenery360->obj.id == OBJ_SCENERY_160) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || - (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3) || (scenery360->obj.id == OBJ_SCENERY_140)) { + if ((scenery360->obj.id == OBJ_SCENERY_AQ_CORAL_REEF_1) || + (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_3) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_1) || + (scenery360->obj.id == OBJ_SCENERY_VS_KA_FLBASE) || + (scenery360->obj.id == OBJ_SCENERY_VE2_MOUNTAIN) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || + (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3) || (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_1)) { PlayerShot_CheckPolyCollision(shot, scenery360->obj.id, &scenery360->obj); } else { PlayerShot_CheckObjectHitbox(shot, scenery360->info.hitbox, &scenery360->obj); @@ -920,10 +923,10 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { if (scenery->obj.status == OBJ_ACTIVE) { if ((scenery->obj.id == OBJ_SCENERY_CO_BUMP_1) || (scenery->obj.id == OBJ_SCENERY_ME_TUNNEL) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_4) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_5) || - (scenery->obj.id == OBJ_SCENERY_120) || (scenery->obj.id == OBJ_SCENERY_124) || - (scenery->obj.id == OBJ_SCENERY_126) || (scenery->obj.id == OBJ_SCENERY_47) || + (scenery->obj.id == OBJ_SCENERY_AQ_CORAL_REEF_2) || (scenery->obj.id == OBJ_SCENERY_AQ_BUMP_1) || + (scenery->obj.id == OBJ_SCENERY_AQ_BUMP_2) || (scenery->obj.id == OBJ_SCENERY_ZO_ISLAND) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_2) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_3) || - (scenery->obj.id == OBJ_SCENERY_67) || (scenery->obj.id == OBJ_SCENERY_74) || + (scenery->obj.id == OBJ_SCENERY_MA_WALL_3) || (scenery->obj.id == OBJ_SCENERY_MA_FLOOR_5) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_3)) { PlayerShot_CheckPolyCollision(shot, scenery->obj.id, &scenery->obj); } else { @@ -941,11 +944,11 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { if (sprite->obj.status == OBJ_ACTIVE) { if (sprite->obj.id != OBJ_SPRITE_TI_CACTUS) { if (PlayerShot_CheckSpriteHitbox(shot, sprite)) { - sprite->destroy = 1; + sprite->destroy = true; } } else { if (PlayerShot_CheckObjectHitbox(shot, sprite->info.hitbox, &sprite->obj) != 0) { - sprite->destroy = 1; + sprite->destroy = true; } } } @@ -953,10 +956,10 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { } for (i = 0, boss = gBosses; i < ARRAY_COUNT(gBosses); i++, boss++) { if ((boss->obj.status == OBJ_ACTIVE) && (boss->timer_05A == 0)) { - if ((boss->obj.id == OBJ_BOSS_FO) || (boss->obj.id == OBJ_BOSS_VE2) || (boss->obj.id == OBJ_BOSS_309) || - (boss->obj.id == OBJ_BOSS_SZ_GREAT_FOX)) { + if ((boss->obj.id == OBJ_BOSS_FO_BASE) || (boss->obj.id == OBJ_BOSS_VE2_BASE) || + (boss->obj.id == OBJ_BOSS_BO_BASE) || (boss->obj.id == OBJ_BOSS_SZ_GREAT_FOX)) { PlayerShot_CheckPolyCollision(shot, boss->obj.id, &boss->obj); - } else if (boss->obj.id == OBJ_BOSS_310) { + } else if (boss->obj.id == OBJ_BOSS_BO_BASE_SHIELD) { test.x = fabsf(boss->obj.pos.x - shot->obj.pos.x) * .8333333f; test.y = fabsf(boss->obj.pos.y - shot->obj.pos.y) * 2; test.z = fabsf(boss->obj.pos.z - shot->obj.pos.z) * 0.8333333f; @@ -970,7 +973,7 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { } } } else { - if (boss->obj.id == OBJ_BOSS_KA) { + if (boss->obj.id == OBJ_BOSS_KA_SAUCERER) { test.x = fabsf(boss->obj.pos.x - shot->obj.pos.x); test.y = fabsf(boss->obj.pos.y - 300.0f - shot->obj.pos.y) * 7.42f; test.z = fabsf(boss->obj.pos.z - shot->obj.pos.z); @@ -990,7 +993,7 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { if (shot->obj.id == PLAYERSHOT_LOCK_SEARCH) { Object_Kill(&shot->obj, shot->sfxSource); } else { - if ((boss->obj.id == OBJ_BOSS_KA) && (shot->sourceId != TEAM_ID_FOX)) { + if ((boss->obj.id == OBJ_BOSS_KA_SAUCERER) && (shot->sourceId != TEAM_ID_FOX)) { break; } boss->dmgType = DMG_BEAM; @@ -1016,13 +1019,13 @@ void PlayerShot_CollisionCheck(PlayerShot* shot) { } } } - if (boss->obj.id == OBJ_BOSS_SY) { + if (boss->obj.id == OBJ_BOSS_SY_SHOGUN) { boss->swork[19] = shot->sourceId; } boss->dmgPart = temp_v0 - 1; - if (boss->obj.id == OBJ_BOSS_301) { + if (boss->obj.id == OBJ_BOSS_AQ_UNK_301) { boss->swork[5] = shot->obj.id; - } else if (boss->obj.id == OBJ_BOSS_VE1) { + } else if (boss->obj.id == OBJ_BOSS_VE1_GOLEMECH) { boss->fwork[47] = shot->obj.pos.x; boss->fwork[48] = shot->obj.pos.y; boss->fwork[49] = shot->obj.pos.z; @@ -1594,9 +1597,9 @@ void PlayerShot_UpdateShot2(PlayerShot* shot, Player* player) { PlayerShot_Impact(shot); PlayerShot_HitGround(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->obj.rot.y, 2.0f); if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); } } PlayerShot_CollisionCheck(shot); @@ -1608,8 +1611,8 @@ void PlayerShot_UpdateBeam(PlayerShot* shot, s32 index) { Vec3f sp38; if ((gGroundSurface == SURFACE_WATER) && (shot->obj.pos.y < (gGroundHeight + 50.0f)) && (index == 0)) { - func_effect_8007ACE0(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, 0.1f, 1.5f, shot->obj.rot.y + 20.0f); - func_effect_8007ACE0(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, 0.1f, 1.5f, shot->obj.rot.y - 20.0f); + Effect_Effect372_Spawn1(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, 0.1f, 1.5f, shot->obj.rot.y + 20.0f); + Effect_Effect372_Spawn1(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, 0.1f, 1.5f, shot->obj.rot.y - 20.0f); } if ((shot->obj.pos.y < gGroundHeight) && (gGroundType != 4)) { PlayerShot_Impact(shot); @@ -1641,20 +1644,20 @@ void PlayerShot_UpdateBeam(PlayerShot* shot, s32 index) { return; } if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007BC7C(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect362_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); } if (gCurrentLevel == LEVEL_AQUAS) { - func_effect_8007B8F8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007B8F8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - func_effect_8007B8F8(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); - Aquas_801AC8A8(RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.x, RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.y, - shot->obj.pos.z, 0.8f, 0); - Aquas_801AC8A8(RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.x, RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.y, - shot->obj.pos.z, 0.8f, 0); - Aquas_801AC8A8(RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.x, RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.y, - shot->obj.pos.z, 0.8f, 0); + Effect_Effect364_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect364_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Effect_Effect364_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 3.0f); + Aquas_Effect366_Spawn(RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.x, + RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.y, shot->obj.pos.z, 0.8f, 0); + Aquas_Effect366_Spawn(RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.x, + RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.y, shot->obj.pos.z, 0.8f, 0); + Aquas_Effect366_Spawn(RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.x, + RAND_FLOAT_CENTERED(10.0f) + shot->obj.pos.y, shot->obj.pos.z, 0.8f, 0); } } if (shot->timer == 0) { @@ -1777,7 +1780,7 @@ void PlayerShot_CheckBossHitbox(PlayerShot* shot) { boss = gBosses; for (i = 0; i < ARRAY_COUNT(gBosses); i++, boss++) { if ((boss->obj.status == OBJ_ACTIVE) && (boss->timer_05A == 0)) { - if (boss->obj.id == OBJ_BOSS_KA) { + if (boss->obj.id == OBJ_BOSS_KA_SAUCERER) { var_s6 = gGameFrameCount % 8U; var_fs2 = shot->scale * 40.0f; } else { @@ -1883,17 +1886,17 @@ void PlayerShot_ApplyExplosionDamage(PlayerShot* shot, s32 damage) { dy = sprite->obj.pos.y - shot->obj.pos.y; dz = sprite->obj.pos.z - shot->obj.pos.z; if (sqrtf(SQ(dx) + SQ(dy) + SQ(dz)) < radius) { - sprite->destroy = 1; + sprite->destroy = true; } } } actor = gActors; for (i = 0; i < ARRAY_COUNT(gActors); i++, actor++) { if ((actor->obj.status == OBJ_ACTIVE) && (actor->timer_0C2 == 0) && - !((gCurrentLevel == LEVEL_MACBETH) && (OBJ_ACTOR_205 <= actor->obj.id) && - (actor->obj.id < OBJ_ACTOR_214)) && + !((gCurrentLevel == LEVEL_MACBETH) && (OBJ_ACTOR_MA_LOCOMOTIVE <= actor->obj.id) && + (actor->obj.id < OBJ_ACTOR_MA_RAILROAD_SWITCH)) && !((actor->obj.id == OBJ_ACTOR_EVENT) && (actor->iwork[12] != 0)) && - ((actor->scale >= 0.0f) || (actor->obj.id == OBJ_ACTOR_271))) { + ((actor->scale >= 0.0f) || (actor->obj.id == OBJ_ACTOR_BO_SHIELD_REACTOR))) { dx = actor->obj.pos.x - shot->obj.pos.x; dy = actor->obj.pos.y - shot->obj.pos.y; dz = actor->obj.pos.z - shot->obj.pos.z; @@ -1904,12 +1907,12 @@ void PlayerShot_ApplyExplosionDamage(PlayerShot* shot, s32 damage) { actor->hitPos.y = shot->obj.pos.y; actor->hitPos.z = shot->obj.pos.z; if (sqrtf(SQ(dx) + SQ(dy) + SQ(dz)) < radius) { - if ((actor->obj.id == OBJ_ACTOR_193) || (actor->obj.id == OBJ_ACTOR_186) || - (actor->obj.id == OBJ_MISSILE_SEEK_TEAM) || (actor->obj.id == OBJ_ACTOR_202) || - (actor->obj.id == OBJ_ACTOR_201) || (actor->obj.id == OBJ_ACTOR_187) || + if ((actor->obj.id == OBJ_ACTOR_CO_RADAR) || (actor->obj.id == OBJ_ACTOR_ME_LASER_CANNON_1) || + (actor->obj.id == OBJ_MISSILE_SEEK_TEAM) || (actor->obj.id == OBJ_ACTOR_ME_HOPBOT) || + (actor->obj.id == OBJ_ACTOR_ME_METEO_BALL) || (actor->obj.id == OBJ_ACTOR_ME_LASER_CANNON_2) || ((actor->obj.id == OBJ_ACTOR_EVENT) && (actor->eventType == EVID_SUPPLY_CRATE)) || ((actor->obj.id == OBJ_ACTOR_EVENT) && (actor->eventType == EVID_SX_WARP_GATE)) || - (actor->obj.id == OBJ_ACTOR_196)) { + (actor->obj.id == OBJ_ACTOR_CO_MOLE_MISSILE)) { actor->dmgType = DMG_EXPLOSION; actor->dmgPart = 0; actor->dmgSource = shot->sourceId + 1; @@ -2088,12 +2091,12 @@ void PlayerShot_UpdateLockOnShot(PlayerShot* shot) { if ((shot->obj.pos.y < gGroundHeight) || (shot->timer == 1)) { if ((gGroundSurface == SURFACE_WATER) && (shot->obj.pos.y < gGroundHeight)) { shot->unk_48 = 10.0f; - func_effect_8007D9DC(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, - shot->unk_48 * 3.0f, 0); - func_effect_8007D9DC(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, - shot->unk_48 * 3.0f, 5); - func_effect_8007ADF4(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, shot->unk_48 * 0.05f, - shot->unk_48 * 0.5f); + Effect_Effect367_Spawn(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 0); + Effect_Effect367_Spawn(shot->obj.pos.x, gGroundHeight + 2.0f, shot->obj.pos.z, shot->unk_48 * 0.1f, + shot->unk_48 * 3.0f, 5); + Effect_Effect372_Spawn2(shot->obj.pos.x, gGroundHeight, shot->obj.pos.z, shot->unk_48 * 0.05f, + shot->unk_48 * 0.5f); Effect_SpawnTimedSfxAtPos(&shot->obj.pos, NA_SE_OB_WATER_BOUND_M); } PlayerShot_Impact(shot); diff --git a/src/engine/fox_bg.c b/src/engine/fox_bg.c index 98c1af7a..76c6be8b 100644 --- a/src/engine/fox_bg.c +++ b/src/engine/fox_bg.c @@ -263,7 +263,7 @@ void Background_DrawBackdrop(void) { Matrix_Push(&gGfxMatrix); - if (D_ctx_80177C70 == 2) { + if (gFovYMode == 2) { Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.0f, MTXF_APPLY); } @@ -931,7 +931,7 @@ void Background_DrawGround(void) { Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, gPlayer[gPlayerNum].xPath, -3.0f + gCameraShakeY, sp1D4, MTXF_APPLY); - if (D_ctx_80177C70 == 2) { + if (gFovYMode == 2) { Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.0f, MTXF_APPLY); } diff --git a/src/engine/fox_boss.c b/src/engine/fox_boss.c index ae9235e0..8243257d 100644 --- a/src/engine/fox_boss.c +++ b/src/engine/fox_boss.c @@ -31,7 +31,7 @@ void Boss_AwardBonus(Boss* this) { yOffset = 0.0f; if (this->obj.id == OBJ_BOSS_CO_GRANGA) { yOffset = 300.0f; - } else if (this->obj.id == OBJ_BOSS_TI) { + } else if (this->obj.id == OBJ_BOSS_TI_GORAS) { yOffset = 200.0f; } BonusText_Display(this->obj.pos.x, this->obj.pos.y + yOffset, this->obj.pos.z, bonus); @@ -42,21 +42,27 @@ void Boss_AwardBonus(Boss* this) { } void Boss299_Init(Boss299* this) { + /* Unimplemented */ } void Boss299_Update(Boss299* this) { + /* Unimplemented */ } void Boss299_Draw(Boss299* this) { + /* Unimplemented */ } void Boss300_Init(Boss300* this) { + /* Unimplemented */ } void Boss300_Update(Boss300* this) { + /* Unimplemented */ } void Boss300_Draw(Boss300* this) { + /* Unimplemented */ } void Boss_SetupDebris(ActorDebris* this, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, diff --git a/src/engine/fox_context.c b/src/engine/fox_context.c index 954a2a08..cfe7acf3 100644 --- a/src/engine/fox_context.c +++ b/src/engine/fox_context.c @@ -180,7 +180,7 @@ s32 D_ctx_80178494; // Torpedoes have this set to their unk_5C. Were they f32 gShotHitPosZ; f32 gShotHitPosX; f32 gShotHitPosY; -s32 gZOSnakeWaypointCount; +s32 gZoDodoraWaypointCount; UNK_TYPE F_801784A8; GroundType gGroundType; UNK_TYPE F_801784B0; @@ -276,13 +276,13 @@ PlayerShot gPlayerShots[16]; TexturedLine gTexturedLines[100]; RadarMark gRadarMarks[65]; BonusText gBonusText[10]; -s32 gActor194Status[2]; -f32 gActor194xPos[2][100]; -f32 gActor194yPos[2][100]; -f32 gActor194zPos[2][100]; -f32 gActor194xRot[2][100]; -f32 gActor194yRot[2][100]; -f32 gActor194zRot[2][100]; +s32 gMeMoraStatus[2]; +f32 gMeMoraXpos[2][100]; +f32 gMeMoraYpos[2][100]; +f32 gMeMoraZpos[2][100]; +f32 gMeMoraXrot[2][100]; +f32 gMeMoraYrot[2][100]; +f32 gMeMoraZrot[2][100]; UNK_TYPE P_800D31A8 = 0; u16 gEnemyShotSpeed; // enemy shot speed? u8 gShowLevelClearStatusScreen; @@ -330,7 +330,7 @@ u8 gTiStartLandmaster; u16 gControllerRumbleTimers[4]; u16 gPlayerScores[4]; s32 gCircleWipeFrame; -s32 D_ctx_80177C70; // sets camera field of view Y. initialized to 0 and never changed +s32 gFovYMode; // sets camera field of view Y. initialized to 0 and never changed s32 gTraining360MsgTimer; s32 gTraining360MsgIndex; s32 D_ctx_80177C94; // these save player parameters across the Venom -> Andross transition @@ -368,7 +368,7 @@ Scenery360* gScenery360; UNK_TYPE F_801782B0; s32 gDrawSmallRocks; s32 D_ctx_801782BC; // set to 0, never used -PosRot* gZOSnakePosRots; +PosRot* gZoDodoraPosRots; f32* D_ctx_801782CC; // arrays used for dynamic floor f32* D_ctx_801782D4; f32* D_ctx_801782DC; diff --git a/src/engine/fox_demo.c b/src/engine/fox_demo.c index 17a1fc61..10512bf0 100644 --- a/src/engine/fox_demo.c +++ b/src/engine/fox_demo.c @@ -692,7 +692,7 @@ void func_demo_8004A840(s32 actor) { func_demo_8004A700(&gActors[actor], actor); } -void func_demo_8004A888(Clouds* this) { +void func_demo_8004A888(EffectClouds* this) { Vec3f src; Vec3f dest; @@ -1226,7 +1226,7 @@ void Cutscene_CoComplete2(Player* player) { player->csState = 5; player->baseSpeed = 0.0f; player->csTimer = 10; - func_effect_80078E50(player->pos.x, player->pos.y, player->trueZpos, 30.0f); + Effect_Effect393_Spawn(player->pos.x, player->pos.y, player->trueZpos, 30.0f); } gCsCamAtX = player->pos.x; gCsCamAtY = player->pos.y - D_ctx_80177A48[6]; @@ -1612,7 +1612,7 @@ void Cutscene_KillPlayer(Player* player) { if (gVsPointsToWin == gVsPoints[player->attacker - 1]) { player->attacker = -1; if (player->unk_284 == 0) { - func_effect_8007C688(player->pos.x, player->pos.y, player->trueZpos, 3.0f, 1000); + Effect_Effect387_Spawn(player->pos.x, player->pos.y, player->trueZpos, 3.0f, 1000); } } } @@ -1631,10 +1631,10 @@ void Cutscene_LandmasterDown(Player* player) { player->pos.y += 30.0f; func_effect_8007D0E0(player->pos.x, player->pos.y, player->trueZpos, 6.0f); if (gCamCount == 1) { - func_effect_8007BFFC(player->pos.x, player->pos.y, player->trueZpos, 0.0f, 0.0f, 0.0f, 3.0f, 80); - func_effect_8007C688(player->pos.x, player->pos.y, player->trueZpos, 3.0f, 800); + Effect386_Spawn1(player->pos.x, player->pos.y, player->trueZpos, 0.0f, 0.0f, 0.0f, 3.0f, 80); + Effect_Effect387_Spawn(player->pos.x, player->pos.y, player->trueZpos, 3.0f, 800); } else { - func_effect_8007BFFC(player->pos.x, player->pos.y, player->trueZpos, 0.0f, 0.0f, 0.0f, 3.0f, 10); + Effect386_Spawn1(player->pos.x, player->pos.y, player->trueZpos, 0.0f, 0.0f, 0.0f, 3.0f, 10); } Cutscene_KillPlayer(player); } @@ -1704,7 +1704,8 @@ void Cutscene_ArwingDown360(Player* player) { (player->csTimer == 0)) { if (gCamCount != 4) { if (player->unk_284 == 0) { - func_effect_8007C688(player->pos.x, player->pos.y, player->trueZpos - (2.0f * player->vel.z), 3.0f, 80); + Effect_Effect387_Spawn(player->pos.x, player->pos.y, player->trueZpos - (2.0f * player->vel.z), 3.0f, + 80); } if (player->pos.y < player->pathFloor) { func_enmy_80062C38(player->pos.x, player->pos.z); @@ -1720,8 +1721,7 @@ void Cutscene_ArwingDown360(Player* player) { } } func_effect_8007D0E0(player->pos.x, player->pos.y, player->trueZpos, 5.0f); - func_effect_8007BFFC(player->pos.x, player->pos.y, player->trueZpos, player->vel.x, 0.0f, player->vel.z, 5.0f, - 20); + Effect386_Spawn1(player->pos.x, player->pos.y, player->trueZpos, player->vel.x, 0.0f, player->vel.z, 5.0f, 20); Cutscene_KillPlayer(player); } Math_SmoothStepToF(&player->camRoll, 0.0f, 0.05f, 5.0f, 0.00001f); @@ -1810,14 +1810,14 @@ void Cutscene_ArwingDownOnRails(Player* player) { } else if (((player->radioDamageTimer > 0) || (player->pos.y < player->pathFloor) || (player->csEventTimer == 0)) && (player->csTimer == 0)) { if (player->pos.y < player->pathFloor) { - func_effect_8007C688(player->pos.x, gGroundHeight + 20.0f, player->trueZpos - (2.0f * player->vel.z), 3.0f, - 800); + Effect_Effect387_Spawn(player->pos.x, gGroundHeight + 20.0f, player->trueZpos - (2.0f * player->vel.z), + 3.0f, 800); func_enmy_80062C38(player->pos.x, player->pos.z); } func_effect_8007D0E0(player->pos.x, player->pos.y - (2.0f * player->vel.y), player->trueZpos - (2.0f * player->vel.z), 6.0f); - func_effect_8007BFFC(player->pos.x, player->pos.y - player->vel.y, player->trueZpos - (2.0f * player->vel.z), - 0.0f, 0.0f, 0.0f, 3.0f, 20); + Effect386_Spawn1(player->pos.x, player->pos.y - player->vel.y, player->trueZpos - (2.0f * player->vel.z), 0.0f, + 0.0f, 0.0f, 3.0f, 20); if (gLevelType == LEVELTYPE_PLANET) { for (i = 0; i < 2; i++) { Play_SpawnDebris(2, player->pos.x, player->pos.y, player->trueZpos); @@ -1837,8 +1837,8 @@ void Cutscene_ArwingDownOnRails(Player* player) { } if ((gGroundSurface == SURFACE_WATER) && (player->pos.y <= player->pathFloor)) { - func_effect_8007D9DC(player->pos.x, gGroundHeight + 2.0f, player->trueZpos, 3.0f, 20.0f, 0); - func_effect_8007ADF4(player->pos.x, gGroundHeight, player->trueZpos, 0.1f, 2.0f); + Effect_Effect367_Spawn(player->pos.x, gGroundHeight + 2.0f, player->trueZpos, 3.0f, 20.0f, 0); + Effect_Effect372_Spawn2(player->pos.x, gGroundHeight, player->trueZpos, 0.1f, 2.0f); } } @@ -2103,7 +2103,7 @@ void func_demo_8004EBD0(ActorCutscene* this) { this->vel.z = dest.z; if (this->timer_0BC == 0) { - func_effect_80078E50(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 30.0f); + Effect_Effect393_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 30.0f); Object_Kill(&this->obj, this->sfxSource); } break; @@ -2299,7 +2299,6 @@ void func_demo_8004F798(ActorCutscene* this) { } void ActorCutscene_Update(ActorCutscene* this) { - if (gCurrentLevel == LEVEL_AQUAS) { func_hud_80093164(this); return; @@ -2747,14 +2746,14 @@ void ActorCutscene_Draw(ActorCutscene* this) { Matrix_SetGfxMtx(&gMasterDisp); /* fallthrough */ case 39: - gSPDisplayList(gMasterDisp++, D_SY_60097E0); + gSPDisplayList(gMasterDisp++, aSyShip1DL); func_demo_8004FCB8(this, 4); break; case 36: Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_SY_601D730); + gSPDisplayList(gMasterDisp++, aSyShip2DL); func_demo_8004FCB8(this, 0); break; @@ -2874,15 +2873,15 @@ void ActorCutscene_Draw(ActorCutscene* this) { case 45: Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_AQ_600EEF0); + gSPDisplayList(gMasterDisp++, aAqBump2DL); break; case 46: - gSPDisplayList(gMasterDisp++, D_AQ_601DE60); + gSPDisplayList(gMasterDisp++, aAqCoralReef2DL); break; case 47: - gSPDisplayList(gMasterDisp++, D_AQ_602B4C0); + gSPDisplayList(gMasterDisp++, aAqRockDL); break; } } diff --git a/src/engine/fox_display.c b/src/engine/fox_display.c index c173c4f6..7ef105e8 100644 --- a/src/engine/fox_display.c +++ b/src/engine/fox_display.c @@ -16,17 +16,17 @@ f32 D_display_801615A8[4]; f32 D_display_801615B8[4]; s32 D_display_800CA220 = 0; -u8 sPlayersVisible[] = { 0, 0, 0, 0 }; // -s32 sDrawCockpit = 0; // -s32 D_display_800CA22C = false; // +u8 sPlayersVisible[] = { false, false, false, false }; +bool sDrawCockpit = false; +s32 D_display_800CA22C = false; f32 gCamDistortion = 0.0f; Actor* gTeamHelpActor = NULL; s32 gTeamHelpTimer = 0; -f32 D_display_800CA23C[3] = { 0.5f, 0.25f, 0.25f }; // -f32 D_display_800CA248[3] = { 2.0f, 1.0f, 0.5f }; // +f32 D_display_800CA23C[3] = { 0.5f, 0.25f, 0.25f }; +f32 D_display_800CA248[3] = { 2.0f, 1.0f, 0.5f }; void Display_DrawHelpAlert(void) { - s32 sp7C; + bool sp7C; f32 sp78; f32 sp74; Vec3f sp68; @@ -60,9 +60,9 @@ void Display_DrawHelpAlert(void) { Matrix_MultVec3f(gCalcMatrix, &sp68, &sp5C); - sp7C = 0; + sp7C = false; if ((sp5C.z < 0.0f) && (sp5C.z > -12000.0f) && (fabsf(sp5C.x) < fabsf(sp5C.z * 0.4f))) { - sp7C = 1; + sp7C = true; } RCP_SetupDL(&gMasterDisp, SETUPDL_12); @@ -80,7 +80,7 @@ void Display_DrawHelpAlert(void) { } switch (sp7C) { - case 0: + case false: if (gTeamHelpActor->sfxSource[0] > 0.0f) { sp78 = 20.0f; sp74 = M_PI / 2; @@ -97,7 +97,7 @@ void Display_DrawHelpAlert(void) { Matrix_Pop(&gGfxMatrix); break; - case 1: + case true: Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 20.0f, 0.0f, -50.0f, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, -M_PI / 2, MTXF_APPLY); @@ -117,7 +117,7 @@ void Display_DrawHelpAlert(void) { } switch (sp7C) { - case 0: + case false: RCP_SetupDL(&gMasterDisp, SETUPDL_76); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255); if (sp78 < 0.0f) { @@ -127,7 +127,7 @@ void Display_DrawHelpAlert(void) { } break; - case 1: + case true: RCP_SetupDL(&gMasterDisp, SETUPDL_76); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255); Graphics_DisplaySmallText(43 - 19, 106, 1.0f, 1.0f, "HELP!!"); @@ -137,7 +137,7 @@ void Display_DrawHelpAlert(void) { } } -bool func_display_800520FC(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, void* data) { +bool Display_OnFootCharacter_OverrideLimbDraw(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, void* data) { Player* player = (Player*) data; gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -194,7 +194,7 @@ bool func_display_800520FC(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, return false; } -void func_display_800523A8(s32 limbIndex, Vec3f* rot, void* data) { +void Display_OnFootFox_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { Vec3f sp1C; Player* player = (Player*) data; @@ -206,7 +206,7 @@ void func_display_800523A8(s32 limbIndex, Vec3f* rot, void* data) { } } -void func_display_80052420(s32 limbIndex, Vec3f* rot, void* data) { +void Display_OnFootPeppy_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { Vec3f sp1C; Player* player = (Player*) data; @@ -218,7 +218,7 @@ void func_display_80052420(s32 limbIndex, Vec3f* rot, void* data) { } } -void func_display_80052498(s32 limbIndex, Vec3f* rot, void* data) { +void Display_OnFootSlippy_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { Vec3f sp1C; Player* player = (Player*) data; @@ -230,7 +230,7 @@ void func_display_80052498(s32 limbIndex, Vec3f* rot, void* data) { } } -void func_display_8005250C(s32 limbIndex, Vec3f* rot, void* data) { +void Display_OnFootFalco_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { Vec3f sp1C; Player* player = (Player*) data; @@ -242,7 +242,7 @@ void func_display_8005250C(s32 limbIndex, Vec3f* rot, void* data) { } } -void func_display_80052584(Player* player) { +void Display_OnFootMuzzleFlash(Player* player) { Matrix_Push(&gGfxMatrix); Matrix_Copy(gGfxMatrix, &gIdentityMatrix); if ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (player->csTimer != 0)) { @@ -258,34 +258,34 @@ void func_display_80052584(Player* player) { Matrix_Pop(&gGfxMatrix); } -void func_display_800526B8(Player* player) { +void Display_OnFootCharacter(Player* player) { Matrix_Push(&gGfxMatrix); Matrix_Scale(gCalcMatrix, 0.5f, 0.5f, 0.5f, MTXF_APPLY); Matrix_Translate(gCalcMatrix, 0.0f, 35.0f, 0.0f, MTXF_APPLY); switch (player->num) { case 0: - Animation_DrawSkeleton(5, D_versus_301D258, player->jointTable, func_display_800520FC, - func_display_800523A8, player, gCalcMatrix); + Animation_DrawSkeleton(5, aVsOnFootFoxSkel, player->jointTable, Display_OnFootCharacter_OverrideLimbDraw, + Display_OnFootFox_PostLimbDraw, player, gCalcMatrix); break; case 1: - Animation_DrawSkeleton(5, D_versus_301DB94, player->jointTable, func_display_800520FC, - func_display_80052420, player, gCalcMatrix); + Animation_DrawSkeleton(5, aVsOnFootPeppySkel, player->jointTable, Display_OnFootCharacter_OverrideLimbDraw, + Display_OnFootPeppy_PostLimbDraw, player, gCalcMatrix); break; case 2: - Animation_DrawSkeleton(5, D_versus_301E3E8, player->jointTable, func_display_800520FC, - func_display_80052498, player, gCalcMatrix); + Animation_DrawSkeleton(5, aVsOnFootSlippySkel, player->jointTable, Display_OnFootCharacter_OverrideLimbDraw, + Display_OnFootSlippy_PostLimbDraw, player, gCalcMatrix); break; case 3: - Animation_DrawSkeleton(5, D_versus_301C614, player->jointTable, func_display_800520FC, - func_display_8005250C, player, gCalcMatrix); + Animation_DrawSkeleton(5, aVsOnFootFalcoSkel, player->jointTable, Display_OnFootCharacter_OverrideLimbDraw, + Display_OnFootFalco_PostLimbDraw, player, gCalcMatrix); break; } Matrix_Pop(&gGfxMatrix); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } -void func_display_80052884(Player* player) { +void Display_Landmaster(Player* player) { f32 sp64; Vec3f sp58; Vec3f sp4C = { 0.0f, 0.0f, 90.0f }; @@ -294,9 +294,9 @@ void func_display_80052884(Player* player) { Matrix_Push(&gGfxMatrix); if (!gVersusMode) { - gSPDisplayList(gMasterDisp++, D_landmaster_3000090); + gSPDisplayList(gMasterDisp++, aLandmasterModelDL); } else { - gSPDisplayList(gMasterDisp++, D_versus_300FB80); + gSPDisplayList(gMasterDisp++, aVsLandmasterModelDL); } Matrix_MultVec3f(gGfxMatrix, &sp40, &D_display_80161518[player->num]); @@ -324,9 +324,9 @@ void func_display_80052884(Player* player) { RCP_SetupDL_64(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 64, 255, 64, 255); } - gSPDisplayList(gMasterDisp++, D_landmaster_3004680); + gSPDisplayList(gMasterDisp++, aLandmasterCanonDL); } else { - gSPDisplayList(gMasterDisp++, D_versus_301F140); + gSPDisplayList(gMasterDisp++, aVsLandmasterCanonDL); } Matrix_MultVec3f(gGfxMatrix, &sp4C, &D_display_80161548[player->num]); @@ -338,10 +338,10 @@ Gfx* D_display_800CA27C[] = { D_arwing_3001C90, D_arwing_3016CC0, D_arwing_3005A f32 D_display_800CA28C = 2.0f; f32 D_display_800CA290 = 13.0f; f32 D_display_800CA294 = -10.0f; -f32 sCrosshairScales[] = { 0.0f, 0.0f, 0.0f, 0.0f }; +f32 sReticleScales[] = { 0.0f, 0.0f, 0.0f, 0.0f }; f32 sPlayerShadowing = 0.0f; -void func_display_80052B80(Player* player) { +void Display_LandmasterMuzzleFlash(Player* player) { Matrix_Push(&gGfxMatrix); if ((player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (player->unk_1A0 != 0)) { @@ -367,7 +367,7 @@ void func_display_80052B80(Player* player) { Matrix_Pop(&gGfxMatrix); } -void func_display_80052D48(Player* player) { +void Display_LandmasterThrusters(Player* player) { f32 sp2C; Matrix_Push(&gGfxMatrix); @@ -387,17 +387,22 @@ void func_display_80052D48(Player* player) { if (!gVersusMode) { sp2C *= 1.1f; } + if ((gGameFrameCount % 2) != 0) { sp2C *= 1.1f; } + Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 20.0f, 30.0f, -10.0f, MTXF_APPLY); + if (!gVersusMode) { Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].camYaw, MTXF_APPLY); } + Matrix_Scale(gGfxMatrix, sp2C, sp2C, sp2C, MTXF_APPLY); Matrix_Translate(gGfxMatrix, 0.0f, -30.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + if (!gVersusMode) { gSPDisplayList(gMasterDisp++, D_landmaster_30066B0); } else { @@ -411,17 +416,22 @@ void func_display_80052D48(Player* player) { if (!gVersusMode) { sp2C *= 1.1f; } + if ((gGameFrameCount % 2) != 0) { sp2C *= 1.1f; } + Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, -20.0f, 30.0f, -10.0f, MTXF_APPLY); + if (!gVersusMode) { Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].camYaw, MTXF_APPLY); } + Matrix_Scale(gGfxMatrix, sp2C, sp2C, sp2C, MTXF_APPLY); Matrix_Translate(gGfxMatrix, 0.0f, -30.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + if (!gVersusMode) { gSPDisplayList(gMasterDisp++, D_landmaster_30066B0); } else { @@ -432,19 +442,19 @@ void func_display_80052D48(Player* player) { Matrix_Pop(&gGfxMatrix); } -void func_display_8005314C(void) { +void Display_SetCullingMode(void) { if (gReflectY != 0) { gSPSetGeometryMode(gMasterDisp++, G_CULL_FRONT); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); } } -bool func_display_800531A4(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, void* wingData) { +bool Display_ArwingWingsOverrideLimbDraw(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, void* wingData) { WingInfo* wings = (WingInfo*) wingData; if (D_display_800CA22C && (gPlayer[0].dmgEffect == 0)) { RCP_SetupDL(&gMasterDisp, SETUPDL_29); - func_display_8005314C(); + Display_SetCullingMode(); } switch (limbIndex) { @@ -457,7 +467,7 @@ bool func_display_800531A4(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, } if (D_display_800CA22C && ((gRightWingFlashTimer[0] % 2) != 0)) { RCP_SetupDL(&gMasterDisp, SETUPDL_34); - func_display_8005314C(); + Display_SetCullingMode(); if (gRightWingFlashTimer[0] > 1000) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 32, 255, 255); } else { @@ -473,7 +483,7 @@ bool func_display_800531A4(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, } if (D_display_800CA22C && ((gRightWingFlashTimer[0] % 2) != 0)) { RCP_SetupDL(&gMasterDisp, SETUPDL_34); - func_display_8005314C(); + Display_SetCullingMode(); if (gRightWingFlashTimer[0] > 1000) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 32, 255, 255); } else { @@ -491,7 +501,7 @@ bool func_display_800531A4(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, } if (D_display_800CA22C && ((gLeftWingFlashTimer[0] % 2) != 0)) { RCP_SetupDL(&gMasterDisp, SETUPDL_34); - func_display_8005314C(); + Display_SetCullingMode(); if (gLeftWingFlashTimer[0] > 1000) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 32, 255, 255); } else { @@ -507,7 +517,7 @@ bool func_display_800531A4(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, } if (D_display_800CA22C && ((gLeftWingFlashTimer[0] % 2) != 0)) { RCP_SetupDL(&gMasterDisp, SETUPDL_34); - func_display_8005314C(); + Display_SetCullingMode(); if (gLeftWingFlashTimer[0] > 1000) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 32, 255, 255); } else { @@ -548,7 +558,7 @@ bool func_display_800531A4(s32 limbIndex, Gfx** gfxPtr, Vec3f* pos, Vec3f* rot, return false; } -void func_display_80053658(WingInfo* wings) { +void Display_ArwingWings(WingInfo* wings) { Vec3f sp68[30]; s32 modelId; @@ -560,15 +570,16 @@ void func_display_80053658(WingInfo* wings) { } if (gGameState == GSTATE_PLAY) { - Animation_DrawSkeleton(1, D_arwing_3016610, gPlayer[0].jointTable, func_display_800531A4, NULL, wings, - &gIdentityMatrix); + Animation_DrawSkeleton(1, D_arwing_3016610, gPlayer[0].jointTable, Display_ArwingWingsOverrideLimbDraw, NULL, + wings, &gIdentityMatrix); } else { if (gGameState == GSTATE_MENU) { Animation_GetFrameData(&D_arwing_3015AF4, 0, sp68); } else { Animation_GetFrameData(&D_arwing_3015C28, 0, sp68); } - Animation_DrawSkeleton(1, D_arwing_3016610, sp68, func_display_800531A4, NULL, wings, &gIdentityMatrix); + Animation_DrawSkeleton(1, D_arwing_3016610, sp68, Display_ArwingWingsOverrideLimbDraw, NULL, wings, + &gIdentityMatrix); } D_display_800CA22C = false; @@ -620,10 +631,11 @@ void func_display_80053658(WingInfo* wings) { Matrix_Pop(&gGfxMatrix); } -void func_display_80053B00(f32 arg0, f32 arg1, UNK_TYPE arg2, UNK_TYPE arg3) { +void Display_Unused(f32 arg0, f32 arg1, UNK_TYPE arg2, UNK_TYPE arg3) { + /* Unimplemented. */ } -void func_display_80053B18(void) { +void Display_CockpitGlass(void) { Matrix_Push(&gGfxMatrix); Matrix_Copy(gGfxMatrix, &D_display_80161418[0]); Matrix_Translate(gGfxMatrix, 0.0f, D_display_800CA290, D_display_800CA294, MTXF_APPLY); @@ -637,11 +649,11 @@ void func_display_80053B18(void) { Matrix_Pop(&gGfxMatrix); } -void func_display_80053C38(Player* player, s32 arg1) { +void Display_Arwing(Player* player, s32 reflectY) { Vec3f sp4C; f32 sp48; - if ((gPlayerNum == player->num) && (arg1 == 0)) { + if ((gPlayerNum == player->num) && (reflectY == 0)) { sp48 = 0.0f; if (gChargeTimers[player->num] >= 20) { sp48 = (s32) (gGameFrameCount % 8U) * 80.0f; @@ -656,8 +668,8 @@ void func_display_80053C38(Player* player, s32 arg1) { if (player->alternateView && (gLevelMode == LEVELMODE_ON_RAILS) && (fabsf(player->trueZpos + gPathProgress - player->cam.eye.z) < 10.0f)) { - if (arg1 == 0) { - sDrawCockpit = 1; + if (reflectY == 0) { + sDrawCockpit = true; Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 0.0f, -8.0f, 5.0f, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, M_PI, MTXF_APPLY); @@ -684,13 +696,13 @@ void func_display_80053C38(Player* player, s32 arg1) { player->wings.unk_10 = 0.0f; } D_display_800CA22C = true; - gReflectY = arg1; - func_display_80053658(&player->wings); + gReflectY = reflectY; + Display_ArwingWings(&player->wings); } } } -void func_display_80053F7C(Player* player) { +void Display_Reticle(Player* player) { Vec3f* translate; s32 i; @@ -708,7 +720,7 @@ void func_display_80053F7C(Player* player) { if (i == 1) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 255, 0, 0, 255); - Math_SmoothStepToF(&sCrosshairScales[player->num], 2.0f, 1.0f, 0.4f, 0.0f); + Math_SmoothStepToF(&sReticleScales[player->num], 2.0f, 1.0f, 0.4f, 0.0f); } else { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255); gDPSetEnvColor(gMasterDisp++, 255, 255, 0, 255); @@ -718,9 +730,8 @@ void func_display_80053F7C(Player* player) { } if (i == 1) { - Matrix_Scale(gGfxMatrix, sCrosshairScales[player->num], sCrosshairScales[player->num], 1.0f, - MTXF_APPLY); - Math_SmoothStepToF(&sCrosshairScales[player->num], 1.0f, 1.0f, 0.2f, 0.0f); + Matrix_Scale(gGfxMatrix, sReticleScales[player->num], sReticleScales[player->num], 1.0f, MTXF_APPLY); + Math_SmoothStepToF(&sReticleScales[player->num], 1.0f, 1.0f, 0.2f, 0.0f); } Matrix_Scale(gGfxMatrix, 4.0f, 4.0f, 4.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); @@ -730,24 +741,24 @@ void func_display_80053F7C(Player* player) { } } -void func_display_80054280(Player* player, s32 arg1) { +void Display_DrawPlayer(Player* player, s32 reflectY) { switch (player->form) { case FORM_ARWING: - func_display_80053C38(player, arg1); + Display_Arwing(player, reflectY); break; case FORM_LANDMASTER: - func_display_80052884(player); + Display_Landmaster(player); break; case FORM_BLUE_MARINE: - Aquas_801ACBB4(player); + Aquas_BlueMarine_Draw(player); break; case FORM_ON_FOOT: - func_display_800526B8(player); + Display_OnFootCharacter(player); break; } } -void func_display_80054300(Player* player) { +void Display_PlayerShadow_Draw(Player* player) { Math_SmoothStepToF(&sPlayerShadowing, player->shadowing, 1.0f, 10.0f, 0.0f); RCP_SetupDL(&gMasterDisp, SETUPDL_66); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, (s32) sPlayerShadowing); @@ -803,7 +814,7 @@ void func_display_80054300(Player* player) { } } -void Play_DrawEngineGlow(s32 levelType) { +void Display_DrawEngineGlow(s32 levelType) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); @@ -824,7 +835,7 @@ void Play_DrawEngineGlow(s32 levelType) { gSPDisplayList(gMasterDisp++, D_1024AC0); } -void func_display_8005478C(Player* player) { +void Display_LandmasterEngineGlow_Draw(Player* player) { RCP_SetupDL_64(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 100); Matrix_Push(&gGfxMatrix); @@ -846,14 +857,14 @@ void func_display_8005478C(Player* player) { Matrix_Scale(gGfxMatrix, 0.9f * 0.9f, 0.9f * 0.63f, 1.0f, MTXF_APPLY); } Matrix_SetGfxMtx(&gMasterDisp); - Play_DrawEngineGlow(gLevelType); + Display_DrawEngineGlow(gLevelType); Matrix_Pop(&gGfxMatrix); } -void func_display_80054914(Player* player) { - f32 sp4C; - Vec3f sp40; - Vec3f sp34; +void Display_BarrelRollShield(Player* player) { + f32 zRotDirection; + Vec3f src; + Vec3f dest; if (player->barrelRollAlpha != 0) { Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + player->damageShake + 180.0f) * M_DTOR, @@ -866,23 +877,23 @@ void func_display_80054914(Player* player) { Matrix_Translate(gCalcMatrix, player->xShake, player->yBob, 0.0f, MTXF_APPLY); - sp40.x = 0.0f; - sp40.y = 0.0f; - sp40.z = -30.0f; + src.x = 0.0f; + src.y = 0.0f; + src.z = -30.0f; - Matrix_MultVec3f(gCalcMatrix, &sp40, &sp34); + Matrix_MultVec3f(gCalcMatrix, &src, &dest); - sp4C = 1.0f; + zRotDirection = 1.0f; if (player->baseRollRate < 0) { - sp4C = -1.0f; + zRotDirection = -1.0f; } Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, player->pos.x + sp34.x, player->pos.y + sp34.y, - player->trueZpos + player->zPath + sp34.z, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, player->pos.x + dest.x, player->pos.y + dest.y, + player->trueZpos + player->zPath + dest.z, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].camYaw, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, gPlayer[gPlayerNum].camPitch, MTXF_APPLY); - Matrix_RotateZ(gGfxMatrix, gGameFrameCount * 20.0f * sp4C * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, gGameFrameCount * 20.0f * zRotDirection * M_DTOR, MTXF_APPLY); if (player->form == FORM_ARWING) { Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, MTXF_APPLY); @@ -898,12 +909,12 @@ void func_display_80054914(Player* player) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, player->barrelRollAlpha); gDPSetEnvColor(gMasterDisp++, 0, 0, 160, player->barrelRollAlpha); - gSPDisplayList(gMasterDisp++, D_101DC10); + gSPDisplayList(gMasterDisp++, aBarrelRollTex); Matrix_Pop(&gGfxMatrix); } } -void func_display_80054CA4(Player* player) { +void Display_UnusedShield(Player* player) { if (gShieldAlpha[player->num] > 1.0f) { Matrix_Push(&gGfxMatrix); Matrix_Copy(gGfxMatrix, &D_display_80161418[player->num]); @@ -913,14 +924,14 @@ void func_display_80054CA4(Player* player) { RCP_SetupDL(&gMasterDisp, SETUPDL_68); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 255, 255, (s32) gShieldAlpha[player->num]); gDPSetEnvColor(gMasterDisp++, 255, 0, 255, (s32) gShieldAlpha[player->num]); - gSPDisplayList(gMasterDisp++, D_101CD70); + gSPDisplayList(gMasterDisp++, aUnusedShieldDL); Matrix_Pop(&gGfxMatrix); - Texture_Scroll(D_101D070, 32, 32, 3); - Texture_Scroll(D_101D070, 32, 32, 3); + Texture_Scroll(aUnusedShieldTex, 32, 32, 3); + Texture_Scroll(aUnusedShieldTex, 32, 32, 3); } } -void func_display_80054E80(Player* player) { +void Display_ArwingLaserCharge(Player* player) { Vec3f spC4 = { 0.0f, -5.0f, 60.0f }; Vec3f spB8 = { 0.0f, -14.0f, 60.0f }; Vec3f spAC = { 30.0f, -10.0f, 30.0f }; @@ -933,6 +944,7 @@ void func_display_80054E80(Player* player) { if (gChargeTimers[player->num] > 10) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); Matrix_Copy(gCalcMatrix, &D_display_80161418[player->num]); + if (player->alternateView && (gLevelMode == LEVELMODE_ON_RAILS)) { Matrix_MultVec3f(gCalcMatrix, &spB8, &sp94); } else { @@ -1013,17 +1025,21 @@ void func_display_80054E80(Player* player) { case LASERS_SINGLE: gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 192, 255, 192, 128); gDPSetEnvColor(gMasterDisp++, 64, 255, 64, 128); + if (player->alternateView && (gLevelMode == LEVELMODE_ON_RAILS)) { Matrix_MultVec3f(gCalcMatrix, &spB8, &sp94); } else { Matrix_MultVec3f(gCalcMatrix, &spC4, &sp94); } + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, sp94.x, sp94.y, sp94.z, MTXF_NEW); Matrix_Scale(gGfxMatrix, gMuzzleFlashScale[player->num], gMuzzleFlashScale[player->num], 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); + Matrix_Pop(&gGfxMatrix); break; @@ -1045,12 +1061,14 @@ void func_display_80054E80(Player* player) { Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); Matrix_Pop(&gGfxMatrix); + Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, sp88.x, sp88.y, sp88.z, MTXF_NEW); Matrix_Scale(gGfxMatrix, gMuzzleFlashScale[player->num], gMuzzleFlashScale[player->num], 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); + Matrix_Pop(&gGfxMatrix); break; } @@ -1058,17 +1076,22 @@ void func_display_80054E80(Player* player) { } } -void func_display_80055788(Player* player) { +void Display_LandmasterLaserCharge(Player* player) { f32 sp54; if (gChargeTimers[player->num] > 10) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); Matrix_Push(&gGfxMatrix); + sp54 = gChargeTimers[player->num] / 20.0f; + Matrix_Translate(gGfxMatrix, D_display_80161548[player->num].x, D_display_80161548[player->num].y, D_display_80161548[player->num].z, MTXF_NEW); + Matrix_Scale(gGfxMatrix, sp54, sp54, 1.0f, MTXF_APPLY); + Matrix_Push(&gGfxMatrix); + Matrix_Scale(gGfxMatrix, 10.0f, 10.0f, 10.0f, MTXF_APPLY); RCP_SetupDL(&gMasterDisp, SETUPDL_49); @@ -1096,9 +1119,11 @@ void func_display_80055788(Player* player) { Matrix_RotateZ(gGfxMatrix, gGameFrameCount * 53.0f * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_101C2E0); + Matrix_RotateZ(gGfxMatrix, gGameFrameCount * -53.0f * 2.0f * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_101C2E0); + Matrix_Pop(&gGfxMatrix); Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 1.0f, MTXF_APPLY); @@ -1113,9 +1138,9 @@ void func_display_80055788(Player* player) { } } -void func_display_80055B58(Player* player) { - Vec3f sp4C; - Vec3f sp40; +void Display_PlayerFeatures(Player* player) { + Vec3f src; + Vec3f dest; f32 var_fv0; s32 pad[3]; @@ -1137,43 +1162,43 @@ void func_display_80055B58(Player* player) { var_fv0 = 30.0f; } - sp4C.x = 0; - sp4C.y = 0; - sp4C.z = -40.0f - var_fv0; + src.x = 0; + src.y = 0; + src.z = -40.0f - var_fv0; - Matrix_MultVec3f(gCalcMatrix, &sp4C, &sp40); + Matrix_MultVec3f(gCalcMatrix, &src, &dest); Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, player->pos.x + sp40.x, player->pos.y + sp40.y, - player->trueZpos + player->zPath + sp40.z, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, player->pos.x + dest.x, player->pos.y + dest.y, + player->trueZpos + player->zPath + dest.z, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].camYaw, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, gPlayer[gPlayerNum].camPitch, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - func_display_8005478C(player); + Display_LandmasterEngineGlow_Draw(player); Matrix_Pop(&gGfxMatrix); - func_display_80054914(player); - func_display_80054CA4(player); - func_display_80054E80(player); + Display_BarrelRollShield(player); + Display_UnusedShield(player); + Display_ArwingLaserCharge(player); break; case FORM_LANDMASTER: - func_display_80052D48(player); + Display_LandmasterThrusters(player); Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, D_display_80161518[player->num].x, D_display_80161518[player->num].y, D_display_80161518[player->num].z, MTXF_NEW); Matrix_SetGfxMtx(&gMasterDisp); - func_display_8005478C(player); + Display_LandmasterEngineGlow_Draw(player); Matrix_Pop(&gGfxMatrix); - func_display_80055788(player); + Display_LandmasterLaserCharge(player); break; case FORM_BLUE_MARINE: - func_display_80054914(player); + Display_BarrelRollShield(player); break; } } } -void func_display_80055E98(Player* player) { +void Display_ArwingWingTrail_Draw(Player* player) { f32 sp5C = 70.0f; f32 sp58 = -18.0f; f32 sp54; @@ -1236,7 +1261,7 @@ void func_display_80055E98(Player* player) { } } -void func_display_80056230(Player* player) { +void Display_ArwingWingTrail_Update(Player* player) { if (player->draw && (player->form == FORM_ARWING) && (gCurrentLevel != LEVEL_VENOM_ANDROSS) && (gCurrentLevel != LEVEL_TRAINING) && (gLevelType == LEVELTYPE_PLANET)) { Matrix_Push(&gGfxMatrix); @@ -1247,37 +1272,38 @@ void func_display_80056230(Player* player) { MTXF_APPLY); Matrix_Translate(gGfxMatrix, player->xShake, player->yBob, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - func_display_80055E98(player); + Display_ArwingWingTrail_Draw(player); Matrix_Pop(&gGfxMatrix); } } -bool func_display_800563B4(s32 index, s32 arg1) { - Vec3f sp2C = { 0.0f, 0.0f, 0.0f }; - Vec3f sp20; +bool Display_CheckPlayerVisible(s32 index, s32 reflectY) { + Vec3f src = { 0.0f, 0.0f, 0.0f }; + Vec3f dest; - Matrix_MultVec3f(gGfxMatrix, &sp2C, &sp20); + Matrix_MultVec3f(gGfxMatrix, &src, &dest); - if ((sp20.z < 200.0f) && (sp20.z > -12000.0f)) { - if (fabsf(sp20.x) < (fabsf(sp20.z * 0.5f) + 500.0f)) { - if (fabsf(sp20.y) < (fabsf(sp20.z * 0.5f) + 500.0f)) { - if (arg1 == 0) { - sPlayersVisible[index] = 1; + if ((dest.z < 200.0f) && (dest.z > -12000.0f)) { + if (fabsf(dest.x) < (fabsf(dest.z * 0.5f) + 500.0f)) { + if (fabsf(dest.y) < (fabsf(dest.z * 0.5f) + 500.0f)) { + if (reflectY == 0) { + sPlayersVisible[index] = true; } return true; } } } - if (arg1 == 0) { - sPlayersVisible[index] = 0; + if (reflectY == 0) { + sPlayersVisible[index] = false; } return false; } +// unused s32 D_display_800CA2E8[16] = { 60, 40, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0 }; -void func_display_800564C0(Player* player, s32 arg1) { +void Display_Player_Update(Player* player, s32 reflectY) { s32 i; Vec3f sp50 = { 0.0f, 0.0f, 0.0f }; @@ -1304,7 +1330,7 @@ void func_display_800564C0(Player* player, s32 arg1) { } } - if (!func_display_800563B4(player->num, arg1)) { + if (!Display_CheckPlayerVisible(player->num, reflectY)) { Matrix_Pop(&gGfxMatrix); return; } @@ -1324,7 +1350,7 @@ void func_display_800564C0(Player* player, s32 arg1) { Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, player->pos.x, player->pos.y, player->trueZpos + player->zPath, MTXF_APPLY); - if (!func_display_800563B4(player->num, arg1)) { + if (!Display_CheckPlayerVisible(player->num, reflectY)) { Matrix_Pop(&gGfxMatrix); Matrix_Pop(&gGfxMatrix); return; @@ -1357,7 +1383,7 @@ void func_display_800564C0(Player* player, s32 arg1) { } } - if (!func_display_800563B4(player->num, arg1)) { + if (!Display_CheckPlayerVisible(player->num, reflectY)) { Matrix_Pop(&gGfxMatrix); return; } @@ -1398,12 +1424,12 @@ void func_display_800564C0(Player* player, s32 arg1) { break; } - if (arg1 != 0) { + if (reflectY != 0) { Object_ApplyWaterDistortion(); } else { Matrix_Copy(&D_display_80161418[player->num], gGfxMatrix); } - func_display_80054280(player, arg1); + Display_DrawPlayer(player, reflectY); Matrix_Pop(&gGfxMatrix); } } @@ -1411,16 +1437,16 @@ void func_display_800564C0(Player* player, s32 arg1) { f32 D_display_800CA334[] = { 0.02f, 0.06f, 0.08f, 0.05f, 0.04f, 0.03f, 0.06f, 0.04f, }; -Gfx* D_display_800CA354[] = { - D_1024570, D_1024570, D_10246D0, D_1024410, D_1024410, D_1024410, - D_1024410, D_1024410, D_D000000, D_D00B5C0, D_D00B720, +Gfx* sTeammateMarkDLs[] = { + aFalcoMarkDL, aFalcoMarkDL, aSlippyMarkDL, aPeppyMarkDL, aPeppyMarkDL, aPeppyMarkDL, + aPeppyMarkDL, aPeppyMarkDL, aKattMarkDL, aBillMarkDL, aJamesMarkDL, }; f32 D_display_800CA380 = 0.0f; f32 D_display_800CA384 = 0.0f; f32 D_display_800CA388 = -300.0f; f32 D_display_800CA38C[] = { 0.0f, -300.0f, -150.0f, -50.0f }; -void func_display_80056E2C(Player* player) { +void Display_PlayerShadow_Update(Player* player) { f32 sp34; f32 sp30; f32 sp2C; @@ -1428,6 +1454,7 @@ void func_display_80056E2C(Player* player) { if (player->draw && !player->hideShadow) { sp34 = D_display_800CA334[gGameFrameCount % 8U]; sp30 = D_display_800CA334[(gGameFrameCount + 4) % 8U]; + if (player->grounded) { sp34 = sp30 = 0.0f; } @@ -1450,6 +1477,7 @@ void func_display_80056E2C(Player* player) { Matrix_RotateY(gGfxMatrix, player->groundRotY, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, player->shadowRotX, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, player->shadowRotZ, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, 0.8f + sp34, 0.0f, 0.8f + sp30, MTXF_APPLY); if ((player->form == FORM_ARWING) || (player->form == FORM_BLUE_MARINE) || (player->form == FORM_ON_FOOT)) { @@ -1472,17 +1500,18 @@ void func_display_80056E2C(Player* player) { Matrix_RotateY(gGfxMatrix, player->rot.y * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, (-player->zRotBank - player->zRotBarrelRoll) * M_DTOR, MTXF_APPLY); } - func_display_80054300(player); + Display_PlayerShadow_Draw(player); Matrix_Pop(&gGfxMatrix); } } -void func_display_80057248(void) { +void Display_ActorMarks(void) { s32 i; f32 var_fs0; if ((gGameFrameCount & 4) == 0) { RCP_SetupDL_40(); + for (i = 0; i < ARRAY_COUNT(gTeamArrowsViewPos); i++) { if (gTeamArrowsViewPos[i].z < 0.0f) { var_fs0 = (VEC3F_MAG(&gTeamArrowsViewPos[i])) * 0.0015f; @@ -1491,20 +1520,24 @@ void func_display_80057248(void) { } else if (var_fs0 < 1.0f) { var_fs0 = 1.0f; } + Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, gTeamArrowsViewPos[i].x, gTeamArrowsViewPos[i].y, gTeamArrowsViewPos[i].z, MTXF_APPLY); Matrix_Scale(gGfxMatrix, var_fs0 * 0.25f, var_fs0 * 0.25f, 1.0f, MTXF_APPLY); + if ((i == 0) && (gCurrentLevel == LEVEL_SECTOR_Z)) { Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 1.0f, MTXF_APPLY); } + Matrix_Translate(gGfxMatrix, 0.0f, 150.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gDPSetTextureFilter(gMasterDisp++, G_TF_POINT); + if ((i == 0) && (gCurrentLevel == LEVEL_SECTOR_Z)) { - gSPDisplayList(gMasterDisp++, D_SZ_6004330); + gSPDisplayList(gMasterDisp++, aSzMissileMark); } else { - gSPDisplayList(gMasterDisp++, D_display_800CA354[i]); + gSPDisplayList(gMasterDisp++, sTeammateMarkDLs[i]); } Matrix_Pop(&gGfxMatrix); } @@ -1515,7 +1548,7 @@ void func_display_80057248(void) { } } -void func_display_80057504(void) { +void Display_LockOnIndicator(void) { s32 i; s32 j; f32 var_fs0; @@ -1558,7 +1591,7 @@ void func_display_80057504(void) { } } -void func_display_80057814(Player* player) { +void Display_SetupPlayerSfxPos(Player* player) { Vec3f sp2C; Vec3f sp20; @@ -1578,7 +1611,7 @@ void func_display_80057814(Player* player) { player->sfx.zRot = player->bankAngle; } -void func_display_800578C4(Player* player) { +void Display_CsLevelCompleteHandleCamera(Player* player) { Vec3f sp4C = { 0.0f, 0.0f, -300.0f }; Vec3f sp40; f32 sp3C; @@ -1596,6 +1629,7 @@ void func_display_800578C4(Player* player) { gPlayCamAt.z = player->cam.at.z; break; + // Seems unused. Some sort of debugging code leftover? case 1: case 2: case 3: @@ -1606,6 +1640,7 @@ void func_display_800578C4(Player* player) { if (sp38 < 0.0f) { sp38 += 360.0f; } + sp3C = (Math_RadToDeg(player->camYaw) + 180.0f) - player->rot.y; if (sp3C > 360.0f) { sp3C -= 360.0f; @@ -1614,11 +1649,14 @@ void func_display_800578C4(Player* player) { sp3C += 360.0f; } sp3C = 360.0f - sp3C; + Math_SmoothStepToAngle(&player->wings.unk_30, sp38, 0.2f, 6.0f, 0.0f); Math_SmoothStepToAngle(&player->wings.unk_34, sp3C, 0.2f, 6.0f, 0.0f); - Math_SmoothStepToF(&D_display_800CA380, gControllerPress->stick_y * 0.75f, 0.1f, 2.0f, 0.0f); - Math_SmoothStepToF(&D_display_800CA384, gControllerPress->stick_x * 3.0f, 0.1f, 5.0f, 0.0f); + + Math_SmoothStepToF(&D_display_800CA380, gControllerPress[0].stick_y * 0.75f, 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&D_display_800CA384, gControllerPress[0].stick_x * 3.0f, 0.1f, 5.0f, 0.0f); Math_SmoothStepToF(&D_display_800CA388, D_display_800CA38C[D_display_800CA220], 0.1f, 10.0f, 0.0f); + sp4C.z = D_display_800CA388; Matrix_RotateX(gCalcMatrix, (player->rot.y + D_display_800CA380) * M_DTOR, MTXF_NEW); Matrix_RotateY(gCalcMatrix, (player->rot.x + D_display_800CA384) * M_DTOR, MTXF_APPLY); @@ -1633,7 +1671,7 @@ void func_display_800578C4(Player* player) { } } -void Play_Draw(void) { +void Display_Update(void) { s32 i; Vec3f tempVec; Vec3f playerCamUp; @@ -1642,8 +1680,9 @@ void Play_Draw(void) { Player* player; Player* camPlayer = &gPlayer[gPlayerNum]; - sDrawCockpit = 0; + sDrawCockpit = false; + // 511 hit count cap if (gHitCount > 511) { gHitCount = 511; } @@ -1689,7 +1728,7 @@ void Play_Draw(void) { gPlayCamAt.x += SIN_DEG(gGameFrameCount * 150.0f) * camPlayer->boostSpeed * 0.2f; } } else if (camPlayer->state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) { - func_display_800578C4(camPlayer); + Display_CsLevelCompleteHandleCamera(camPlayer); } else { gPlayCamEye.x = camPlayer->cam.eye.x; gPlayCamEye.y = camPlayer->cam.eye.y; @@ -1740,13 +1779,13 @@ void Play_Draw(void) { Lights_SetOneLight(&gMasterDisp, gLight2x, gLight2y, gLight2z, gLight2R, gLight2G, gLight2B, gAmbientR, gAmbientG, gAmbientB); - for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { + for (i = 0, player = &gPlayer[0]; i < gCamCount; i++, player++) { playerPos.x = player->pos.x; playerPos.y = player->pos.y; playerPos.z = player->trueZpos; Display_SetSecondLight(&playerPos); - func_display_800564C0(player, 0); - func_display_80057814(player); + Display_Player_Update(player, 0); + Display_SetupPlayerSfxPos(player); } if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) { @@ -1754,11 +1793,11 @@ void Play_Draw(void) { gAmbientG, gAmbientB); Matrix_Push(&gGfxMatrix); Matrix_Scale(gGfxMatrix, 1.0f, -1.0f, 1.0f, MTXF_APPLY); - for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { + for (i = 0, player = &gPlayer[0]; i < gCamCount; i++, player++) { playerPos.x = player->pos.x; playerPos.y = player->pos.y; playerPos.z = player->trueZpos; - func_display_800564C0(player, 1); + Display_Player_Update(player, 1); } Matrix_Pop(&gGfxMatrix); } @@ -1783,10 +1822,10 @@ void Play_Draw(void) { if ((gGroundSurface == SURFACE_WATER) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) { Matrix_Push(&gGfxMatrix); Matrix_Scale(gGfxMatrix, 1.0f, -1.0f, 1.0f, MTXF_APPLY); - for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { - if (sPlayersVisible[i] != 0) { - func_display_80055B58(player); - func_display_80056230(player); + for (i = 0, player = &gPlayer[0]; i < gCamCount; i++, player++) { + if (sPlayersVisible[i]) { + Display_PlayerFeatures(player); + Display_ArwingWingTrail_Update(player); } Matrix_Pop(&gGfxMatrix); } @@ -1811,11 +1850,11 @@ void Play_Draw(void) { gReflectY = 1; - for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { - if (sPlayersVisible[i] != 0) { - func_display_80056E2C(player); - func_display_80055B58(player); - func_display_80056230(player); + for (i = 0, player = &gPlayer[0]; i < gCamCount; i++, player++) { + if (sPlayersVisible[i]) { + Display_PlayerShadow_Update(player); + Display_PlayerFeatures(player); + Display_ArwingWingTrail_Update(player); } } @@ -1831,22 +1870,22 @@ void Play_Draw(void) { BonusText_DrawAll(); Matrix_Pop(&gGfxMatrix); - func_display_80057248(); - func_display_80057504(); + Display_ActorMarks(); + Display_LockOnIndicator(); - if (sDrawCockpit != 0) { - func_display_80053B18(); + if (sDrawCockpit) { + Display_CockpitGlass(); } - for (i = 0, player = gPlayer; i < gCamCount; i++, player++) { - if (sPlayersVisible[i] != 0) { - if (gShowCrosshairs[i]) { - func_display_80053F7C(player); + for (i = 0, player = &gPlayer[0]; i < gCamCount; i++, player++) { + if (sPlayersVisible[i]) { + if (gShowReticles[i]) { + Display_Reticle(player); } if (player->form == FORM_LANDMASTER) { - func_display_80052B80(player); + Display_LandmasterMuzzleFlash(player); } else if (player->form == FORM_ON_FOOT) { - func_display_80052584(player); + Display_OnFootMuzzleFlash(player); } } } @@ -1864,6 +1903,6 @@ void Play_Draw(void) { } Matrix_Pop(&gGfxMatrix); Display_DrawHelpAlert(); - sPlayersVisible[gPlayerNum] = 0; + sPlayersVisible[gPlayerNum] = false; Matrix_Pop(&gGfxMatrix); } diff --git a/src/engine/fox_edata.c b/src/engine/fox_edata.c index 56b5af5e..b2c89e75 100644 --- a/src/engine/fox_edata.c +++ b/src/engine/fox_edata.c @@ -4,7 +4,7 @@ f32* D_edata_800CF964[] = { NULL }; // Likely a scrapped array of scenery shadow boxes -void Scenery48_Draw(Scenery* scenery) { +void Ve1SceneryWall1_Draw(Scenery* scenery) { RCP_SetupDL_57(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); Matrix_RotateY(gGfxMatrix, M_PI, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); @@ -12,7 +12,7 @@ void Scenery48_Draw(Scenery* scenery) { RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } -void Scenery49_Draw(Scenery* scenery) { +void Ve1SceneryWall2_Draw(Scenery* scenery) { RCP_SetupDL_57(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); Matrix_RotateY(gGfxMatrix, M_PI, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); @@ -20,5 +20,5 @@ void Scenery49_Draw(Scenery* scenery) { RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } -void Actor289_Draw(Actor* actor) { +void AndJamesTrigger_Draw(Actor* actor) { } diff --git a/src/engine/fox_edata_info.c b/src/engine/fox_edata_info.c index 241d4b4e..44484112 100644 --- a/src/engine/fox_edata_info.c +++ b/src/engine/fox_edata_info.c @@ -22,7 +22,7 @@ #include "assets/ast_area_6.h" #include "assets/ast_zoness.h" -f32 gActor241Hitbox[] = { +f32 gZoEnergyBallHitbox[] = { 1.0f, 0.0f, 50.0f, 0.0f, 25.0f, 0.0f, 25.0f, }; f32 gCubeHitbox100[] = { @@ -65,10 +65,10 @@ f32 gItemLasersHitbox[] = { f32 gItemBombHitbox[] = { 1.0f, 0.0f, 120.0f, 0.0f, 120.0f, 0.0f, 120.0f, }; -f32 gActor190_191Hitbox[] = { +f32 gActorMissileSeekHitbox[] = { 1.0f, 0.0f, 40.0f, 0.0f, 40.0f, 0.0f, 40.0f, }; -f32 gActor194Hitbox[] = { +f32 gMeMoraHitbox[] = { 1.0f, 0.0f, 50.0f, 0.0f, 50.0f, 0.0f, 50.0f, }; f32 gTeamHitbox[] = { @@ -93,167 +93,167 @@ f32 gWarpZoneEvent93Hitbox[] = { // clang-format off ObjectInfo gObjectInfo[] = { - /* OBJ_SCENERY_CO_STONE_ARCH, */ {(void*) aCoStoneArchDL, 0, (ObjectFunc) NULL, aCoStoneArchHitbox, 800.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUMP_1, */ {(void*) aCoBump1DL, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUMP_2, */ {(void*) aCoBump2DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUMP_3, */ {(void*) aCoBump3DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUMP_4, */ {(void*) aCoBump4DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUMP_5, */ {(void*) aCoBump5DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_HIGHWAY_1, */ {(void*) aCoHighway1DL, 0, (ObjectFunc) NULL, aCoHighway1Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_HIGHWAY_2, */ {(void*) aCoHighway2DL, 0, (ObjectFunc) NULL, aCoHighway2Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_HIGHWAY_3, */ {(void*) aCoHighway3DL, 0, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_HIGHWAY_4, */ {(void*) aCoHighway4DL, 0, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_1, */ {(void*) aCoBuilding1DL, 0, (ObjectFunc) NULL, aCoBuilding1Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_2, */ {(void*) aCoBuilding2DL, 0, (ObjectFunc) NULL, aCoBuilding2Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_3, */ {(void*) aCoBuilding3DL, 0, (ObjectFunc) NULL, aCoBuilding3Hitbox, 500.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_4, */ {(void*) aCoBuilding4DL, 0, (ObjectFunc) NULL, aCoBuilding4Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_5, */ {(void*) aCoBuilding5DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding5Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_6, */ {(void*) aCoBuilding6DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding6Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_7, */ {(void*) aCoBuilding7DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding7Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_8, */ {(void*) aCoBuilding8DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding8Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_BUILDING_ON_FIRE, */ {(void*) Corneria_BuildingOnFire_Draw, 1, (ObjectFunc) Corneria_BuildingOnFire_Update, aCoBuildingOnFireHitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_STONE_ARCH */ {(void*) aCoStoneArchDL, 0, (ObjectFunc) NULL, aCoStoneArchHitbox, 800.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUMP_1 */ {(void*) aCoBump1DL, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUMP_2 */ {(void*) aCoBump2DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUMP_3 */ {(void*) aCoBump3DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUMP_4 */ {(void*) aCoBump4DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUMP_5 */ {(void*) aCoBump5DL, 0, (ObjectFunc) NULL, gNoHitbox, 3000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_HIGHWAY_1 */ {(void*) aCoHighway1DL, 0, (ObjectFunc) NULL, aCoHighway1Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_HIGHWAY_2 */ {(void*) aCoHighway2DL, 0, (ObjectFunc) NULL, aCoHighway2Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_HIGHWAY_3 */ {(void*) aCoHighway3DL, 0, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_HIGHWAY_4 */ {(void*) aCoHighway4DL, 0, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_1 */ {(void*) aCoBuilding1DL, 0, (ObjectFunc) NULL, aCoBuilding1Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_2 */ {(void*) aCoBuilding2DL, 0, (ObjectFunc) NULL, aCoBuilding2Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_3 */ {(void*) aCoBuilding3DL, 0, (ObjectFunc) NULL, aCoBuilding3Hitbox, 500.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_4 */ {(void*) aCoBuilding4DL, 0, (ObjectFunc) NULL, aCoBuilding4Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_5 */ {(void*) aCoBuilding5DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding5Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_6 */ {(void*) aCoBuilding6DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding6Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_7 */ {(void*) aCoBuilding7DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding7Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_8 */ {(void*) aCoBuilding8DL, 0, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding8Hitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_BUILDING_ON_FIRE, */ {(void*) Corneria_CoBuildingOnFire_Draw, 1, (ObjectFunc) Corneria_CoBuildingOnFire_Update, aCoBuildingOnFireHitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_TOWER, */ {(void*) aCoTowerDL, 0, (ObjectFunc) NULL, aCoTowerHitbox, 100.0f, 0, 0, 39, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_ARCH_1, */ {(void*) aCoArch1DL, 0, (ObjectFunc) NULL, aCoArch1Hitbox, 500.0f, 0, 0, 39, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_ARCH_2, */ {(void*) aCoArch2DL, 0, (ObjectFunc) NULL, aCoArch2Hitbox, 400.0f, 0, 0, 39, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_ARCH_3, */ {(void*) aCoArch3DL, 0, (ObjectFunc) NULL, aCoArch3Hitbox, 400.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_RADAR, */ {(void*) aRadarDL, 0, (ObjectFunc) NULL, aCoRadarHitbox, 200.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_RADAR_DISH, */ {(void*) aRadarDL, 0, (ObjectFunc) NULL, aCoRadarHitbox, 200.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_HIGHWAY_5, */ {(void*) aCoHighway5DL, 0, (ObjectFunc) NULL, aCoHighway5Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_HIGHWAY_6, */ {(void*) aCoHighway6DL, 0, (ObjectFunc) NULL, aCoHighway6Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_HIGHWAY_7, */ {(void*) aCoHighway7DL, 0, (ObjectFunc) NULL, aCoHighway7Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_HIGHWAY_8, */ {(void*) aCoHighway8DL, 0, (ObjectFunc) NULL, aCoHighway8Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_HIGHWAY_9, */ {(void*) aCoHighway9DL, 0, (ObjectFunc) NULL, aCoHighway9Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_SKULL, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiSkullHitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_0, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib0Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_1, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib1Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_2, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib2Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_3, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib3Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_4, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib4Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_5, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib5Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_6, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib6Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_7, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib7Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_TI_RIB_8, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib8Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_SKULL, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiSkullHitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_0, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib0Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_1, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib1Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_2, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib2Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_3, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib3Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_4, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib4Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_5, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib5Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_6, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib6Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_7, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib7Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_RIB_8, */ {(void*) Scenery_DrawTitaniaBones, 1, (ObjectFunc) Scenery_UpdateTitaniaBones, aTiRib8Hitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_ME_TUNNEL, */ {(void*) MeteoTunnel_Draw, 1, (ObjectFunc) MeteoTunnel_Update, gNoHitbox, 6000.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_BUILDING_9, */ {(void*) CoBuilding9_Draw, 1, (ObjectFunc) CoBuilding9_Update, aCoBuilding9Hitbox, 1000.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_BUILDING_10, */ {(void*) CoBuilding10_Draw, 1, (ObjectFunc) SceneryRotateTowardsCamera, aCoBuilding10Hitbox, 300.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_IBEAM, */ {(void*) CoIBeam_Draw, 1, (ObjectFunc) CoIBeam_Update, aCoIBeamHitbox, 1000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_ZO_ROCK_1, */ {(void*) aZoRock1DL, 0, (ObjectFunc) NULL, aZoRock1Hitbox, 200.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_44, */ {(void*) D_ZO_600F560, 0, (ObjectFunc) NULL, D_ZO_602BA20, 1500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_45, */ {(void*) D_ZO_600EC90, 0, (ObjectFunc) NULL, D_ZO_602BAE4, 1500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_46, */ {(void*) D_ZO_600E820, 0, (ObjectFunc) NULL, D_ZO_602BBD8, 1500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_47, */ {(void*) D_ZO_601FCB0, 0, (ObjectFunc) NULL, D_ZO_602BC54, 500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_48, */ {(void*) Scenery48_Draw, 1, (ObjectFunc) NULL, D_VE1_601B4E0, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_49, */ {(void*) Scenery49_Draw, 1, (ObjectFunc) NULL, D_VE1_601B4FC, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_50, */ {(void*) D_VE1_6007410, 0, (ObjectFunc) NULL, D_VE1_601B518, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_51, */ {(void*) D_VE1_6006F50, 0, (ObjectFunc) NULL, D_VE1_601B584, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_52, */ {(void*) D_VE1_6005780, 0, (ObjectFunc) Venom1_Scenery52_Update, D_VE1_601B5F4, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_53, */ {(void*) D_VE1_6003610, 0, (ObjectFunc) NULL, D_VE1_601B644, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_ZO_ROCK, */ {(void*) aZoRockDL, 0, (ObjectFunc) NULL, aZoRockHitbox, 200.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_ZO_OIL_RIG_1, */ {(void*) aZoOilRig1DL, 0, (ObjectFunc) NULL, aZoOilRig1Hitbox, 1500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_ZO_OIL_RIG_2, */ {(void*) aZoOilRig2DL, 0, (ObjectFunc) NULL, aZoOilRig2Hitbox, 1500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_ZO_OIL_RIG_3, */ {(void*) aZoOilRig3DL, 0, (ObjectFunc) NULL, aZoOilRig3Hitbox, 1500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_ZO_ISLAND, */ {(void*) aZoIslandDL, 0, (ObjectFunc) NULL, aZoIslandHitbox, 500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_WALL_1, */ {(void*) Ve1SceneryWall1_Draw, 1, (ObjectFunc) NULL, aVe1SceneryWall1Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_WALL_2, */ {(void*) Ve1SceneryWall2_Draw, 1, (ObjectFunc) NULL, aVe1SceneryWall2Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_WALL_3, */ {(void*) aVe1SceneryWall3DL, 0, (ObjectFunc) NULL, aVe1SceneryWall3Hitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_HALLWAY_OBSTACLE, */ {(void*) aVe1HallwayObstacleDL, 0, (ObjectFunc) NULL, aVe1HallwayObstacleHitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_GENERATOR, */ {(void*) aVe1GeneratorDL, 0, (ObjectFunc) Venom1_Ve1Generator_Update, aVe1GeneratorHitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_WATCH_POST, */ {(void*) aVe1WatchPostDL, 0, (ObjectFunc) NULL, aVe1WatchPostHitbox, 2500.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_WATERFALL, */ {(void*) aCoWaterfallDL, 0, (ObjectFunc) CoWaterfall_Update, aCoWaterfallHitbox, 1000.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_CO_ROCKWALL, */ {(void*) aCoRockwallDL, 0, (ObjectFunc) NULL, aCoRockwallHitbox, 1000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_CO_DOORS, */ {(void*) Corneria_Doors_Draw, 2, (ObjectFunc) Corneria_Doors_Update, aCoDoorsHitbox, 1000.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_57, */ {(void*) Titania_Scenery57_Draw, 1, (ObjectFunc) Titania_Scenery57_Update, D_TI_6006BF0, 800.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_58, */ {(void*) D_TI1_700BE00, 0, (ObjectFunc) NULL, D_TI_6006C44, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_59, */ {(void*) D_MA_6024010, 0, (ObjectFunc) NULL, D_MA_603626C, 300.0f, 0, 0, 5, 0, 0.0f, 0 }, - /* OBJ_SCENERY_60, */ {(void*) D_MA_6027180, 0, (ObjectFunc) NULL, D_MA_6036288, 400.0f, 0, 0, 5, 0, 0.0f, 0 }, - /* OBJ_SCENERY_61, */ {(void*) Macbeth_Scenery61_Draw, 1, (ObjectFunc) NULL, D_MA_60362A4, 200.0f, 0, 0, 5, 0, 0.0f, 0 }, - /* OBJ_SCENERY_62, */ {(void*) D_MA_60270E0, 0, (ObjectFunc) NULL, gNoHitbox, 1500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_CO_DOORS, */ {(void*) Corneria_CoDoors_Draw, 2, (ObjectFunc) Corneria_CoDoors_Update, aCoDoorsHitbox, 1000.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_PILLAR, */ {(void*) Titania_TiPillar_Draw, 1, (ObjectFunc) Titania_TiPillar_Update, aTiPillarHitbox, 800.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TI_BRIDGE, */ {(void*) aTiBridgeDL, 0, (ObjectFunc) NULL, aTiBridgeHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_BUILDING_1, */ {(void*) aMaBuilding1DL, 0, (ObjectFunc) NULL, aMaBuilding1Hitbox, 300.0f, 0, 0, 5, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_BUILDING_2, */ {(void*) aMaBuilding2DL, 0, (ObjectFunc) NULL, aMaBuilding2Hitbox, 400.0f, 0, 0, 5, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TOWER, */ {(void*) Macbeth_MaTower_Draw, 1, (ObjectFunc) NULL, aMaTowerHitbox, 200.0f, 0, 0, 5, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_WALL_1, */ {(void*) aMaWall1DL, 0, (ObjectFunc) NULL, gNoHitbox, 1500.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_SCENERY_63, */ {(void*) D_MA_6013960, 0, (ObjectFunc) NULL, D_MA_6036894, 500.0f, 0, 0, 5, 0, 0.0f, 0 }, - /* OBJ_SCENERY_64, */ {(void*) D_MA_600AF40, 0, (ObjectFunc) NULL, D_MA_60368E0, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_65, */ {(void*) Macbeth_Scenery65_Draw, 1, (ObjectFunc) NULL, D_MA_6036724, 400.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_66, */ {(void*) D_MA_601F1D0, 0, (ObjectFunc) NULL, D_MA_60362D8, 2500.0f, 0, 0, 5, 0, 0.0f, 0 }, - /* OBJ_SCENERY_67, */ {(void*) D_MA_60238F0, 0, (ObjectFunc) NULL, D_MA_6036328, 2000.0f, 0, 0, 5, 0, 0.0f, 0 }, - /* OBJ_SCENERY_68, */ {(void*) D_MA_601B7C0, 0, (ObjectFunc) NULL, D_MA_60362F4, 2500.0f, 0, 0, 5, 0, 0.0f, 0 }, - /* OBJ_SCENERY_69, */ {(void*) D_MA_6030500, 0, (ObjectFunc) NULL, D_MA_6036370, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_70, */ {(void*) D_MA_602DAE0, 0, (ObjectFunc) NULL, D_MA_603638C, 1900.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_71, */ {(void*) D_MA_6027900, 0, (ObjectFunc) NULL, D_MA_60363B8, 1900.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_72, */ {(void*) D_MA_602DB80, 0, (ObjectFunc) NULL, D_MA_60363E4, 1100.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_73, */ {(void*) D_MA_6030630, 0, (ObjectFunc) NULL, D_MA_6036410, 1100.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_74, */ {(void*) D_MA_602DC20, 0, (ObjectFunc) NULL, D_MA_603643C, 1000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_75, */ {(void*) D_MA_601B0D0, 0, (ObjectFunc) NULL, D_MA_6036760, 3000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_76, */ {(void*) D_MA_60075D0, 0, (ObjectFunc) NULL, gNoHitbox, 1000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_77, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, D_MA_6036344, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_78, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_79, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_80, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_81, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_82, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_83, */ {(void*) Macbeth_Scenery83_Draw, 1, (ObjectFunc) Macbeth_Scenery83_Update, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_84, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_85, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_86, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_87, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_88, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_89, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_90, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_91, */ {(void*) Macbeth_SceneryDoodad2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_92, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_93, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_94, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_95, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_96, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_97, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_98, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_99, */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_100 */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_101 */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_102 */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_103 */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_104 */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) Macbeth_Scenery104_Update, D_MA_6036594, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_105 */ {(void*) Macbeth_SceneryDoodad_Draw, 1, (ObjectFunc) NULL, D_MA_6036204, 1300.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_106 */ {(void*) D_SY_60097E0, 0, (ObjectFunc) NULL, D_SY_6034478, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_107 */ {(void*) D_SY_601D730, 0, (ObjectFunc) NULL, D_SY_603450C, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_108 */ {(void*) D_SY_60102C0, 0, (ObjectFunc) NULL, D_SY_6034588, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_109 */ {(void*) D_SY_60036A0, 0, (ObjectFunc) SectorY_Scenery109_Update, D_SY_6034664, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_110 */ {(void*) D_SY_6005360, 0, (ObjectFunc) NULL, D_SY_6034770, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_111 */ {(void*) Scenery111_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_112 */ {(void*) D_SY_600F6C0, 0, (ObjectFunc) SectorY_Scenery112_Update, D_SY_60347F0, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_113 */ {(void*) D_SY_601B610, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_114 */ {(void*) D_SY_601C6A0, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_115 */ {(void*) D_SY_60188D0, 0, (ObjectFunc) NULL, D_SY_603486C, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_116 */ {(void*) D_SY_60034D0, 0, (ObjectFunc) NULL, D_SY_60347D4, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_117 */ {(void*) D_AQ_60231C0, 0, (ObjectFunc) NULL, D_AQ_6030C60, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_118 */ {(void*) D_AQ_6011EE0, 0, (ObjectFunc) NULL, D_AQ_6030C7C, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_119 */ {(void*) D_AQ_6015730, 0, (ObjectFunc) NULL, D_AQ_6030D74, 2000.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_SCENERY_120 */ {(void*) D_AQ_601DE60, 0, (ObjectFunc) NULL, D_AQ_6030DF8, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_121 */ {(void*) D_AQ_602B4C0, 0, (ObjectFunc) NULL, D_AQ_6030E14, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_122 */ {(void*) D_AQ_600EE10, 0, (ObjectFunc) NULL, D_AQ_6030E30_Hitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_123 */ {(void*) D_AQ_60120F0, 0, (ObjectFunc) NULL, D_AQ_6030E4C, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_124 */ {(void*) D_AQ_600EEF0, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_125 */ {(void*) D_AQ_600BF80, 0, (ObjectFunc) NULL, D_AQ_6030E68, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_126 */ {(void*) Aquas_Scenery126_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_127 */ {(void*) D_VE1_9005C80, 0, (ObjectFunc) Venom1_Scenery127_Update, D_VE1_601B678, 1000.0f, 0, 0, 42, 0, 0.0f, 0 }, - /* OBJ_SCENERY_128 */ {(void*) D_VE1_9003F50, 0, (ObjectFunc) NULL, D_VE1_601B6C4, 3200.0f, 0, 0, 42, 0, 0.0f, 0 }, - /* OBJ_SCENERY_129 */ {(void*) D_VE1_900F060, 0, (ObjectFunc) NULL, D_VE1_601B710, 3200.0f, 0, 0, 42, 0, 0.0f, 0 }, - /* OBJ_SCENERY_130 */ {(void*) D_VE1_900F1D0, 0, (ObjectFunc) NULL, D_VE1_601B75C, 3200.0f, 0, 0, 42, 0, 0.0f, 0 }, - /* OBJ_SCENERY_131 */ {(void*) Andross_Scenery131_Draw, 1, (ObjectFunc) Andross_Scenery131_Update, D_ANDROSS_C038BD8, 500.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_132 */ {(void*) Andross_Scenery132_Draw, 1, (ObjectFunc) Andross_Scenery132_Update, D_ANDROSS_C038A48, 500.0f, 0, 0, 41, 0, 0.0f, 0 }, - /* OBJ_SCENERY_133 */ {(void*) D_TR_60030F0, 0, (ObjectFunc) NULL, D_TR_6009CC4, 1000.0f, 0, 0, 20, 0, 0.0f, 0 }, - /* OBJ_SCENERY_134 */ {(void*) D_VE2_6003000, 0, (ObjectFunc) NULL, D_ANDROSS_C038BA4, 0.0f, 0, 0, 41, 1, 0.0f, 0 }, - /* OBJ_SCENERY_135 */ {(void*) D_VE2_6006890, 0, (ObjectFunc) NULL, D_ANDROSS_C038B40, 0.0f, 0, 0, 41, 1, 0.0f, 0 }, - /* OBJ_SCENERY_136 */ {(void*) D_VE2_6002990, 0, (ObjectFunc) NULL, D_ANDROSS_C038B40, 0.0f, 0, 0, 41, 1, 0.0f, 0 }, - /* OBJ_SCENERY_137 */ {(void*) D_VE2_6004170, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 0, 1, 0.0f, 0 }, - /* OBJ_SCENERY_138 */ {(void*) D_versus_3017600, 0, (ObjectFunc) NULL, D_versus_302EE64, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_139 */ {(void*) D_versus_3017600, 0, (ObjectFunc) NULL, D_versus_302EE80, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_140 */ {(void*) D_versus_30173C0, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_141 */ {(void*) D_versus_30174E0, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_142 */ {(void*) D_versus_301B080, 0, (ObjectFunc) NULL, D_versus_302EE9C, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_143 */ {(void*) D_versus_3016B00, 0, (ObjectFunc) NULL, D_versus_302EE00, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_144 */ {(void*) D_versus_3013780, 0, (ObjectFunc) NULL, D_versus_302ED4C, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_145 */ {(void*) D_versus_3013580, 0, (ObjectFunc) NULL, D_versus_302ED98, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_146 */ {(void*) D_versus_3012ED0, 0, (ObjectFunc) NULL, D_versus_302EDB4, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_GUILLOTINE, */ {(void*) aMaGuillotineDL, 0, (ObjectFunc) NULL, aMaGuillotineHitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_PROXIMITY_LIGHT, */ {(void*) Macbeth_MaProximityLight_Draw, 1, (ObjectFunc) NULL, aMaProximityLightHitbox, 400.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_WALL_2, */ {(void*) aMaWall2DL, 0, (ObjectFunc) NULL, aMaWall2Hitbox, 2500.0f, 0, 0, 5, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_WALL_3, */ {(void*) aMaWall3DL, 0, (ObjectFunc) NULL, aMaWall3Hitbox, 2000.0f, 0, 0, 5, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_WALL_4, */ {(void*) aMaWall4DL, 0, (ObjectFunc) NULL, aMaWall4Hitbox, 2500.0f, 0, 0, 5, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TERRAIN_BUMP, */ {(void*) aMaTerrainBumpDL, 0, (ObjectFunc) NULL, aMaTerrainBumpHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_FLOOR_1, */ {(void*) aMaFloor1DL, 0, (ObjectFunc) NULL, aMaFloor1Hitbox, 1900.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_FLOOR_2, */ {(void*) aMaFloor2DL, 0, (ObjectFunc) NULL, aMaFloor2Hitbox, 1900.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_FLOOR_3, */ {(void*) aMaFloor3DL, 0, (ObjectFunc) NULL, aMaFloor3Hitbox, 1100.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_FLOOR_4, */ {(void*) aMaFloor4DL, 0, (ObjectFunc) NULL, aMaFloor4Hitbox, 1100.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_FLOOR_5, */ {(void*) aMaFloor5DL, 0, (ObjectFunc) NULL, aMaFloor5Hitbox, 1000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_FLOOR_6, */ {(void*) aMaFloor6DL, 0, (ObjectFunc) NULL, aMaFloor6Hitbox, 3000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_WEAPONS_FACTORY, */ {(void*) aMaWeaponsFactoryDL, 0, (ObjectFunc) NULL, gNoHitbox, 1000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_INDICATOR_SIGN, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, aMaIndicatorSignHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_DISTANCE_SIGN_1, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_DISTANCE_SIGN_2, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_DISTANCE_SIGN_3, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_DISTANCE_SIGN_4, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_DISTANCE_SIGN_5, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_STOP_BLOCK, */ {(void*) Macbeth_MaTrainStopBlock_Draw, 1, (ObjectFunc) Macbeth_MaTrainStopBlock_Update, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_1, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_2, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_3, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_4, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_5, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_6, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_7, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_RAILROAD_SWITCH_8, */ {(void*) Macbeth_IndicatorSign_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_1, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_2, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_3, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_4, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_5, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_6, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_7, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 15000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_8, */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_9 */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_10 */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_11 */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_12 */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_SWITCH_TRACK */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) Macbeth_MaSwitchTrack_Update, aMaSwitchTrackHitbox, 2500.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_MA_TRAIN_TRACK_13 */ {(void*) Macbeth_TrainTrack_Draw, 1, (ObjectFunc) NULL, aMaTrainTrack13Hitbox, 1300.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_1 */ {(void*) aSyShip1DL, 0, (ObjectFunc) NULL, aSyShip1Hitbox, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_2 */ {(void*) aSyShip2DL, 0, (ObjectFunc) NULL, aSyShip2Hitbox, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_3 */ {(void*) aSyShip3DL, 0, (ObjectFunc) NULL, aSyShip3Hitbox, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_3_DESTROYED */ {(void*) aSyShip3DestroyedDL, 0, (ObjectFunc) SectorY_SyShip3Destroyed_Update, aSyShip3DestroyedHitbox, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_4 */ {(void*) aSyShip4DL, 0, (ObjectFunc) NULL, aSyShip4Hitbox, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_DEBRIS */ {(void*) Scenery111_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_2_DESTROYED */ {(void*) aSyShip4DestroyedDL, 0, (ObjectFunc) SectorY_SyShip4Destroyed_Update, aSyShip4DestroyedHitbox, 4000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SPRITE_SY_SHIP_2 */ {(void*) aSyShip2SpriteDL, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SPRITE_SY_SHIP_3 */ {(void*) aSyShip3SpriteDL, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_PROJECTILE */ {(void*) aSyShipProjectileDL, 0, (ObjectFunc) NULL, aSyShipProjectileHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SY_SHIP_WINDOWS */ {(void*) aSyShipWindowsDL, 0, (ObjectFunc) NULL, aSyShipWindowsHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_CORAL_REEF_1 */ {(void*) aAqCoralReef1DL, 0, (ObjectFunc) NULL, aAqCoralReef1Hitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_TUNNEL_1 */ {(void*) aAqTunnel1DL, 0, (ObjectFunc) NULL, aAqTunnel1Hitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_ARCH */ {(void*) aAqArchDL, 0, (ObjectFunc) NULL, aAqArchHitbox, 2000.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_CORAL_REEF_2 */ {(void*) aAqCoralReef2DL, 0, (ObjectFunc) NULL, aAqCoralReef2Hitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_ROCK */ {(void*) aAqRockDL, 0, (ObjectFunc) NULL, aAqRockHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_WALL_1 */ {(void*) aAqWall1DL, 0, (ObjectFunc) NULL, aAqWall1Hitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_ROOF */ {(void*) aAqRoofDL, 0, (ObjectFunc) NULL, aAqRoofHitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_BUMP_1 */ {(void*) aAqBump2DL, 0, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_TUNNEL_2 */ {(void*) aAqTunnel2DL, 0, (ObjectFunc) NULL, aAqTunnel2Hitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AQ_BUMP_2 */ {(void*) Aquas_AqBump2_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 2000.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_TEMPLE_ENTRANCE */ {(void*) aVe1TempleEntranceDL, 0, (ObjectFunc) Venom1_Ve1TempleEntrance_Update, aVe1TempleEntranceHitbox, 1000.0f, 0, 0, 42, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_TEMPLE_INTERIOR_1 */ {(void*) aVe1TempleInterior1DL, 0, (ObjectFunc) NULL, aVe1TempleInterior1Hitbox, 3200.0f, 0, 0, 42, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_TEMPLE_INTERIOR_2 */ {(void*) aVe1TempleInterior2DL, 0, (ObjectFunc) NULL, aVe1TempleInterior2Hitbox, 3200.0f, 0, 0, 42, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE1_TEMPLE_INTERIOR_3 */ {(void*) aVe1TempleInterior3DL, 0, (ObjectFunc) NULL, aVe1TempleInterior3Hitbox, 3200.0f, 0, 0, 42, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AND_PASSAGE */ {(void*) Andross_AndPassage_Draw, 1, (ObjectFunc) Andross_AndPassage_Update, aAndPassageHitbox, 500.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AND_DOOR */ {(void*) Andross_AndDoor_Draw, 1, (ObjectFunc) Andross_AndDoor_Update, aAndDoorHitbox, 500.0f, 0, 0, 41, 0, 0.0f, 0 }, + /* OBJ_SCENERY_TR_BUILDING */ {(void*) aTrBuildingDL, 0, (ObjectFunc) NULL, aTrBuildingHitbox, 1000.0f, 0, 0, 20, 0, 0.0f, 0 }, + /* OBJ_SCENERY_AND_PATH_INTERSECTION */ {(void*) aAndPathIntersectionDL, 0, (ObjectFunc) NULL, aAndPathIntersectionHitbox, 0.0f, 0, 0, 41, 1, 0.0f, 0 }, + /* OBJ_SCENERY_AND_PATH_WALLS */ {(void*) aAndPathWallsDL, 0, (ObjectFunc) NULL, D_ANDROSS_C038B40, 0.0f, 0, 0, 41, 1, 0.0f, 0 }, + /* OBJ_SCENERY_AND_PATH_EXIT */ {(void*) aAndPathExitDL, 0, (ObjectFunc) NULL, D_ANDROSS_C038B40, 0.0f, 0, 0, 41, 1, 0.0f, 0 }, + /* OBJ_SCENERY_AND_PATH_ENTRANCE */ {(void*) aAndPathEntranceDL, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 0, 1, 0.0f, 0 }, + /* OBJ_SCENERY_VS_BUILDING_1 */ {(void*) aVsBuildingDL, 0, (ObjectFunc) NULL, aVsBuilding1Hibox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_BUILDING_2 */ {(void*) aVsBuildingDL, 0, (ObjectFunc) NULL, aVsBuilding2Hibox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_PYRAMID_1 */ {(void*) aVsPyramid1DL, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_PYRAMID_2 */ {(void*) aVsPyramid2DL, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_ARCH */ {(void*) aVsArchDL, 0, (ObjectFunc) NULL, aVsArchHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_KA_FLBASE */ {(void*) aVsKaFlBaseDL, 0, (ObjectFunc) NULL, aVsKaFlBaseHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_SPACE_JUNK_1 */ {(void*) aVsSpaceJunk1DL, 0, (ObjectFunc) NULL, aVsSpaceJunk1Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_SPACE_JUNK_2 */ {(void*) aVsSpaceJunk2DL, 0, (ObjectFunc) NULL, aVsSpaceJunk2Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VS_SPACE_JUNK_3 */ {(void*) aVsSpaceJunk3DL, 0, (ObjectFunc) NULL, aVsSpaceJunk3Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SCENERY_147 */ {(void*) NULL, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SCENERY_148 */ {(void*) D_FO_60079B0, 0, (ObjectFunc) NULL, D_FO_600FF80, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_149 */ {(void*) D_FO_6007D80, 0, (ObjectFunc) NULL, D_FO_600FFA0, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_150 */ {(void*) D_FO_6006310, 0, (ObjectFunc) NULL, D_FO_600FFC0, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_151 */ {(void*) D_FO_60066E0, 0, (ObjectFunc) NULL, D_FO_600FEB8, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_152 */ {(void*) D_BO_600F4C0, 0, (ObjectFunc) NULL, D_BO_6011C10, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_153 */ {(void*) D_BO_600B8B0, 0, (ObjectFunc) NULL, D_BO_6011C48, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_154 */ {(void*) aKaFLBaseDL, 0, (ObjectFunc) NULL, D_KA_601115C, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_155 */ {(void*) NULL, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_156 */ {(void*) SectorY_Scenery156_Draw, 1, (ObjectFunc) NULL, D_SY_6034368, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_157 */ {(void*) aSzSpaceJunk3DL, 0, (ObjectFunc) NULL, D_SZ_600924C, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_158 */ {(void*) aSzSpaceJunk1DL, 0, (ObjectFunc) NULL, D_SZ_60092E8, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_159 */ {(void*) D_VE2_6008370, 0, (ObjectFunc) NULL, D_VE2_601668C, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_SCENERY_160 */ {(void*) D_VE2_6010960, 0, (ObjectFunc) NULL, D_VE2_6016714, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_FO_MOUNTAIN_1 */ {(void*) aFoMountain1DL, 0, (ObjectFunc) NULL, aFoMountain1Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_FO_MOUNTAIN_2 */ {(void*) aFoMountain2DL, 0, (ObjectFunc) NULL, aFoMountain2Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_FO_MOUNTAIN_3 */ {(void*) aFoMountain3DL, 0, (ObjectFunc) NULL, aFoMountain3Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_FO_TOWER */ {(void*) aFoTowerDL, 0, (ObjectFunc) NULL, aFoTowerHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_BO_POLE */ {(void*) aBoPoleDL, 0, (ObjectFunc) NULL, aBoPoleHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_BO_BUILDING */ {(void*) aBoBuildingDL, 0, (ObjectFunc) NULL, aBoBuildingHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_KA_FLBASE */ {(void*) aKaFLBaseDL, 0, (ObjectFunc) NULL, aKaFrontlineBaseHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_UNK_155 */ {(void*) NULL, 0, (ObjectFunc) NULL, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_UNK_156 */ {(void*) SectorY_Scenery156_Draw, 1, (ObjectFunc) NULL, aSyScenery156Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SZ_SPACE_JUNK_3 */ {(void*) aSzSpaceJunk3DL, 0, (ObjectFunc) NULL, aSzSpaceJunk3Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_SZ_SPACE_JUNK_1 */ {(void*) aSzSpaceJunk1DL, 0, (ObjectFunc) NULL, aSzSpaceJunk1Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE2_TOWER */ {(void*) aVe2TowerDL, 0, (ObjectFunc) NULL, aVe2TowerHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_SCENERY_VE2_MOUNTAIN */ {(void*) aVe2MountainDL, 0, (ObjectFunc) NULL, aVe2MountainHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SPRITE_CO_POLE */ {(void*) aCoPoleDL, 0, (ObjectFunc) Sprite_UpdateDoodad, aCoPoleHitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SPRITE_CO_TREE */ {(void*) aCoTreeDL, 0, (ObjectFunc) Sprite_UpdateDoodad, aCoTreeHitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SPRITE_FO_POLE */ {(void*) aFoPoleDL, 0, (ObjectFunc) Sprite_UpdateDoodad, aFoPoleHitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, @@ -263,7 +263,7 @@ ObjectInfo gObjectInfo[] = { /* OBJ_SPRITE_167 */ {(void*) Sprite167_Draw, 1, (ObjectFunc) Sprite167_Update, gNoHitbox, 500.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SPRITE_168 */ {(void*) Sprite168_Draw, 1, (ObjectFunc) NULL, gNoHitbox, 100.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_SPRITE_TI_CACTUS */ {(void*) aTiCactusDL, 0, (ObjectFunc) Titania_Cactus_Update, aTiCactusHitbox, 100.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_SPRITE_CO_SMOKE */ {(void*) NULL, 1, (ObjectFunc) Corneria_Smoke_Update, gNoHitbox, 0.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_SPRITE_CO_SMOKE */ {(void*) NULL, 1, (ObjectFunc) Corneria_CoSmoke_Update, gNoHitbox, 0.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_SPRITE_VE1_BOSS_TRIGGER1 */ {(void*) NULL, 1, (ObjectFunc) Venom1_BossTrigger1_Update, gNoHitbox, 0.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_SPRITE_VE1_BOSS_TRIGGER2 */ {(void*) NULL, 1, (ObjectFunc) Venom1_BossTrigger2_Update, gNoHitbox, 0.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_SPRITE_VE1_BOSS_TRIGGER3 */ {(void*) NULL, 1, (ObjectFunc) Venom1_BossTrigger3_Update, gNoHitbox, 0.0f, 0, 0, 0, 0, 0.0f, 0 }, @@ -273,148 +273,148 @@ ObjectInfo gObjectInfo[] = { /* OBJ_ACTOR_CO_GARUDA_2 */ {(void*) Corneria_CoGaruda2_Draw, 2, (ObjectFunc) Corneria_CoGaruda2_Update, CoGarudaHitbox, 500.0f, 0, 0, 39, 1, 200.0f, 1 }, /* OBJ_ACTOR_CO_GARUDA_3 */ {(void*) Corneria_CoGaruda3_Draw, 2, (ObjectFunc) Corneria_CoGaruda3_Update, CoGarudaHitbox, 500.0f, 0, 0, 39, 1, 200.0f, 1 }, /* OBJ_ACTOR_CO_GARUDA_DESTROY */ {(void*) Corneria_CoGarudaDestroy_Draw, 2, (ObjectFunc) Corneria_CoGarudaDestroy_Update, aCoGarudaDestroyHitbox, 500.0f, 0, 0, 39, 1, 0.0f, 1 }, - /* OBJ_ACTOR_180 */ {(void*) Actor180_Draw, 1, (ObjectFunc) Actor180_Update, gNoHitbox, 1000.0f, 0, 0, 39, 0, 0.0f, 1 }, - /* OBJ_ACTOR_181 */ {(void*) D_ME_6018C00, 0, (ObjectFunc) Meteo_Actor181_Update, D_ME_602F6EC, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_182 */ {(void*) Actor182_Draw, 1, (ObjectFunc) Meteo_Actor182_Update, D_ME_602F708, 100.0f, 0, 1, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_183 */ {(void*) Meteo_Actor183_Draw, 1, (ObjectFunc) Meteo_ActorDoodad_Update, gNoHitbox, 100.0f, 0, 1, 39, 0, 0.0f, 1 }, - /* OBJ_ACTOR_184 */ {(void*) Meteo_Actor184_Draw, 1, (ObjectFunc) Meteo_ActorDoodad_Update, gNoHitbox, 100.0f, 0, 1, 39, 0, 0.0f, 1 }, - /* OBJ_ACTOR_185 */ {(void*) Meteo_Actor185_Draw, 1, (ObjectFunc) Meteo_ActorDoodad_Update, gNoHitbox, 100.0f, 0, 1, 39, 0, 0.0f, 1 }, - /* OBJ_ACTOR_186 */ {(void*) Actor186_Draw, 1, (ObjectFunc) Meteo_Actor186_Update, D_ME_602F724, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_187 */ {(void*) D_ME_6018450, 0, (ObjectFunc) Meteo_Actor187_Update, D_ME_602F740, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_188 */ {(void*) Aquas_Actor188_Draw, 1, (ObjectFunc) Aquas_Actor188_Update, D_AQ_6030BE0, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ME_MOLAR_ROCK */ {(void*) MeMolarRock_Draw, 1, (ObjectFunc) MeMolarRock_Update, gNoHitbox, 1000.0f, 0, 0, 39, 0, 0.0f, 1 }, + /* OBJ_ACTOR_ME_METEOR_1 */ {(void*) aMeMeteor1DL, 0, (ObjectFunc) Meteo_MeMeteor1_Update, aMeMeteor1Hitbox, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ME_METEOR_2 */ {(void*) MeMeteor2_Draw, 1, (ObjectFunc) Meteo_MeMeteor2_Update, aMeMeteor2Hitbox, 100.0f, 0, 1, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ME_METEOR_SHOWER_1 */ {(void*) Meteo_MeMeteorShower1_Draw, 1, (ObjectFunc) Meteo_MeteorShower_Update, gNoHitbox, 100.0f, 0, 1, 39, 0, 0.0f, 1 }, + /* OBJ_ACTOR_ME_METEOR_SHOWER_2 */ {(void*) Meteo_MeMeteorShower2_Draw, 1, (ObjectFunc) Meteo_MeteorShower_Update, gNoHitbox, 100.0f, 0, 1, 39, 0, 0.0f, 1 }, + /* OBJ_ACTOR_ME_METEOR_SHOWER_3 */ {(void*) Meteo_MeMeteorShower3_Draw, 1, (ObjectFunc) Meteo_MeteorShower_Update, gNoHitbox, 100.0f, 0, 1, 39, 0, 0.0f, 1 }, + /* OBJ_ACTOR_ME_LASER_CANNON_1 */ {(void*) MeLaserCannon1_Draw, 1, (ObjectFunc) Meteo_MeLaserCannon1_Update, aMeLaserCannon1Hitbox, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ME_LASER_CANNON_2 */ {(void*) aMeLaserCannon2DL, 0, (ObjectFunc) Meteo_MeLaserCannon2_Update, aMeLaserCannon2Hitbox, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_AQ_UNK_188 */ {(void*) Aquas_Actor188_Draw, 1, (ObjectFunc) Aquas_Actor188_Update, aAqActor188Hitbox, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, /* OBJ_ACTOR_DEBRIS */ {(void*) ActorDebris_Draw, 1, (ObjectFunc) ActorDebris_Update, gNoHitbox, 0.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_MISSILE_SEEK_TEAM */ {(void*) Actor190_191_Draw, 1, (ObjectFunc) Actors190_191_Update, gActor190_191Hitbox, 100.0f, 0, 1, 39, 0, 1.0f, 0 }, - /* OBJ_MISSILE_SEEK_PLAYER */ {(void*) Actor190_191_Draw, 1, (ObjectFunc) Actors190_191_Update, gActor190_191Hitbox, 100.0f, 0, 1, 39, 0, 1.0f, 0 }, - /* OBJ_ACTOR_192 */ {(void*) Actor192_Draw, 1, (ObjectFunc) Actor192_Update, D_CO_603E54C, 200.0f, 0, 1, 39, 0, 50.0f, 1 }, - /* OBJ_ACTOR_193 */ {(void*) Actor193_Draw, 1, (ObjectFunc) Actor193_Update, D_CO_603E598, 100.0f, 0, 1, 39, 0, 0.0f, 0 }, - /* OBJ_ACTOR_194 */ {(void*) Actor194_Draw, 1, (ObjectFunc) Actor194_Update, gActor194Hitbox, 200.0f, 0, 1, 39, 0, 0.0f, 1 }, + /* OBJ_MISSILE_SEEK_TEAM */ {(void*) ActorMissileSeek_Draw, 1, (ObjectFunc) ActorMissileSeek_Update, gActorMissileSeekHitbox, 100.0f, 0, 1, 39, 0, 1.0f, 0 }, + /* OBJ_MISSILE_SEEK_PLAYER */ {(void*) ActorMissileSeek_Draw, 1, (ObjectFunc) ActorMissileSeek_Update, gActorMissileSeekHitbox, 100.0f, 0, 1, 39, 0, 1.0f, 0 }, + /* OBJ_ACTOR_CO_SKIBOT */ {(void*) ActorSkibot_Draw, 1, (ObjectFunc) ActorSkibot_Update, aCoActorSkibotHitbox, 200.0f, 0, 1, 39, 0, 50.0f, 1 }, + /* OBJ_ACTOR_CO_RADAR */ {(void*) ActorRadar_Draw, 1, (ObjectFunc) ActorRadar_Update, aCoActorRadarHitbox, 100.0f, 0, 1, 39, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ME_MORA */ {(void*) MeMora_Draw, 1, (ObjectFunc) MeMora_Update, gMeMoraHitbox, 200.0f, 0, 1, 39, 0, 0.0f, 1 }, /* OBJ_ACTOR_CUTSCENE */ {(void*) ActorCutscene_Draw, 1, (ObjectFunc) ActorCutscene_Update, gNoHitbox, 20000.0f, 0, 1, 39, 0, 0.0f, 0 }, - /* OBJ_ACTOR_196 */ {(void*) Actor196_Draw, 1, (ObjectFunc) Actor196_Update, D_CO_603E5B4, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_CO_MOLE_MISSILE */ {(void*) ActorMoleMissile_Draw, 1, (ObjectFunc) ActorMoleMissile_Update, aCoMoleMissileHitbox, 200.0f, 0, 1, 39, 0, 1.0f, 1 }, /* OBJ_ACTOR_ALLRANGE */ {(void*) ActorAllRange_Draw, 1, (ObjectFunc) ActorAllRange_Update, gActorAllRangeHItbox, 20000.0f, 0, 1, 39, 1, 1.0f, 1 }, /* OBJ_ACTOR_TEAM_BOSS */ {(void*) ActorAllRange_Draw, 1, (ObjectFunc) ActorTeamBoss_Update, gTeamHitbox, 20000.0f, 0, 0, 39, 1, 0.0f, 0 }, /* OBJ_ACTOR_199 */ {(void*) Andross_Actor199_Draw, 1, (ObjectFunc) Andross_Actor199_Update, gNoHitbox, 20000.0f, 0, 0, 39, 1, 0.0f, 0 }, /* OBJ_ACTOR_EVENT */ {(void*) ActorEvent_Draw, 1, (ObjectFunc) ActorEvent_Update, gNoHitbox, 2000.0f, 0, 1, 39, 0, 0.0f, 1 }, - /* OBJ_ACTOR_201 */ {(void*) Actor201_Draw, 1, (ObjectFunc) Actor201_Update, D_ME_602F684, 100.0f, 0, 1, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_202 */ {(void*) Actor202_Draw, 1, (ObjectFunc) Actor202_Update, D_ME_602F6A0, 100.0f, 0, 1, 39, 0, 180.0f, 1 }, - /* OBJ_ACTOR_SLIPPY_SX */ {(void*) SectorX_Slippy_Draw, 1, (ObjectFunc) SectorX_Slippy_Update, gNoHitbox, 1000.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_ACTOR_204 */ {(void*) SectorY_Actor204_Draw, 1, (ObjectFunc) SectorY_Actor204_Update, D_SY_603405C, 1000.0f, 0, 0, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_205 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor205_Update, D_MA_60359C8, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_206 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor206_Update, D_MA_6035A48, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_207 */ {(void*) Macbeth_Actor207_Draw, 2, (ObjectFunc) Macbeth_Actor207_Update, D_MA_603677C, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_208 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor208_Update, D_MA_6035A14, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_209 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor209_Update, D_MA_6035AE0, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_210 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor210_Update, D_MA_6035D9C, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_211 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor211_Update, D_MA_6035E04, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_212 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor212_Update, D_MA_60360C0, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_213 */ {(void*) Macbeth_ActorDoodad_Draw, 1, (ObjectFunc) Macbeth_Actor213_Update, D_MA_6036154, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_214 */ {(void*) Macbeth_Actor214_Draw, 1, (ObjectFunc) Macbeth_Actor214_Update, D_MA_6036458, 300.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_215 */ {(void*) Macbeth_Actor215_Draw, 1, (ObjectFunc) Macbeth_Actor215_Update, D_MA_60364C0, 300.0f, 0, 1, 40, 1, 0.0f, 1 }, - /* OBJ_ACTOR_216 */ {(void*) Macbeth_Actor216_Draw, 1, (ObjectFunc) Macbeth_Actor216_Update, D_MA_60366EC, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_217 */ {(void*) Macbeth_Actor217_Draw, 1, (ObjectFunc) Macbeth_Actor217_Update, D_MA_6036708, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_218 */ {(void*) Macbeth_Actor218_Draw, 1, (ObjectFunc) Macbeth_Actor218_Update, D_MA_6036728, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_219 */ {(void*) Macbeth_Actor219_Draw, 1, (ObjectFunc) Macbeth_Actor219_Update, D_MA_6036744, 300.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_220 */ {(void*) Macbeth_Actor220_Draw, 1, (ObjectFunc) Macbeth_Actor220_Update, D_MA_6036930, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_221 */ {(void*) Macbeth_Actor221_Draw, 1, (ObjectFunc) Macbeth_Actor221_Update, D_MA_603694C, 300.0f, 0, 0, 40, 1, 1.0f, 0 }, - /* OBJ_ACTOR_222 */ {(void*) Macbeth_Actor222_Draw, 1, (ObjectFunc) Macbeth_Actor222_Update, D_MA_6036968, 300.0f, 0, 0, 40, 1, 1.0f, 0 }, - /* OBJ_ACTOR_223 */ {(void*) Macbeth_Actor223_Draw, 1, (ObjectFunc) Macbeth_Actor223_Update, D_MA_60364DC, 300.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_224 */ {(void*) NULL, 1, (ObjectFunc) Titania_Actor224_Update, gNoHitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, - /* OBJ_ACTOR_225 */ {(void*) D_TI1_700AB70, 0, (ObjectFunc) Titania_Actor225_Update, D_TI_60064AC, 50.0f, 0, 0, 39, 1, 1.0f, 0 }, - /* OBJ_ACTOR_226 */ {(void*) Titania_Actor226_Draw, 1, (ObjectFunc) Titania_Actor226_Update, D_TI_60064C8, 300.0f, 0, 0, 39, 1, 70.0f, 1 }, - /* OBJ_ACTOR_227 */ {(void*) Titania_Actor227_Draw, 1, (ObjectFunc) Titania_Actor227_Update, D_TI_60067C4, 0.0f, 0, 0, 39, 1, 0.0f, 0 }, - /* OBJ_ACTOR_228 */ {(void*) Titania_Actor228_Draw, 1, (ObjectFunc) Titania_Actor228_Update, D_TI_6006808, 0.0f, 0, 0, 39, 1, 1.0f, 1 }, - /* OBJ_ACTOR_229 */ {(void*) Titania_Actor229_Draw, 1, (ObjectFunc) Titania_Actor229_Update, D_TI_6006A3C, 1000.0f, 0, 0, 20, 1, 0.0f, 1 }, - /* OBJ_ACTOR_230 */ {(void*) Titania_Actor230_Draw, 1, (ObjectFunc) Titania_Actor230_Update, D_TI_600683C, 0.0f, 0, 1, 39, 1, 0.0f, 1 }, - /* OBJ_ACTOR_231 */ {(void*) Titania_Actor231_Draw, 1, (ObjectFunc) Titania_Actor231_Update, D_TI_6006858, 0.0f, 0, 0, 39, 1, 0.0f, 1 }, - /* OBJ_ACTOR_232 */ {(void*) Titania_Actor232_Draw, 1, (ObjectFunc) Titania_Actor232_Update, D_TI_6006890, 0.0f, 0, 0, 39, 1, 20.0f, 1 }, - /* OBJ_ACTOR_233 */ {(void*) Titania_Actor233_Draw, 1, (ObjectFunc) Titania_Actor233_Update, D_TI_60068F0, 200.0f, 0, 0, 39, 1, 1.0f, 1 }, - /* OBJ_ACTOR_234 */ {(void*) Actor234_Draw, 1, (ObjectFunc) Actor234_Update, gNoHitbox, 2000.0f, 0, 0, 39, 0, 0.0f, 5 }, - /* OBJ_ACTOR_235 */ {(void*) Zoness_Actor235_Draw, 2, (ObjectFunc) Zoness_Actor235_Update, D_ZO_602C294, 1000.0f, 0, 1, 40, 0, 1.0f, 1 }, - /* OBJ_ACTOR_236 */ {(void*) Zoness_Actor236_Draw, 1, (ObjectFunc) Zoness_Actor236_Update, D_ZO_602BC58, 5000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_237 */ {(void*) Actor237_Draw, 1, (ObjectFunc) Actor237_Update, gNoHitbox, 200.0f, 0, 0, 40, 0, 0.0f, 2 }, - /* OBJ_ACTOR_238 */ {(void*) Zoness_Actor238_Draw, 2, (ObjectFunc) Zoness_Actor238_Update, gCubeHitbox100, 200.0f, 0, 1, 40, 0, 1.0f, 1 }, - /* OBJ_ACTOR_239 */ {(void*) NULL, 1, (ObjectFunc) NULL, gNoHitbox, 1000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_ACTOR_240 */ {(void*) Zoness_Actor240_Draw, 1, (ObjectFunc) Zoness_Actor240_Update, gCubeHitbox100, 1500.0f, 0, 1, 40, 0, 20.0f, 0 }, - /* OBJ_ACTOR_241 */ {(void*) Zoness_Actor241_Draw, 1, (ObjectFunc) Zoness_Actor241_Update, gActor241Hitbox, 1500.0f, 0, 1, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_242 */ {(void*) Zoness_Actor242_Draw, 2, (ObjectFunc) Zoness_Actor242_Update, D_ZO_602BE3C, 500.0f, 0, 0, 40, 0, 1.0f, 0 }, - /* OBJ_ACTOR_243 */ {(void*) Zoness_Actor243_Draw, 2, (ObjectFunc) Zoness_Actor243_Update, gCubeHitbox100, 0.0f, 0, 1, 40, 0, 1.0f, 1 }, - /* OBJ_ACTOR_244 */ {(void*) Zoness_Actor244_Draw, 2, (ObjectFunc) Zoness_Actor244_Update, D_ZO_602BE58, 2000.0f, 0, 0, 40, 0, 50.0f, 0 }, - /* OBJ_ACTOR_245 */ {(void*) Zoness_Actor245_Draw, 1, (ObjectFunc) Zoness_Actor245_Update, gCubeHitbox100, 200.0f, 0, 0, 40, 0, 1.0f, 0 }, - /* OBJ_ACTOR_246 */ {(void*) Zoness_Actor246_Draw, 1, (ObjectFunc) Zoness_Actor246_Update, gCubeHitbox100, 2000.0f, 0, 0, 40, 0, 1.0f, 0 }, - /* OBJ_ACTOR_247 */ {(void*) Zoness_Actor247_Draw, 1, (ObjectFunc) Zoness_Actor247_Update, D_ZO_602BFC4, 500.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_248 */ {(void*) Zoness_Actor248_Draw, 1, (ObjectFunc) Zoness_Actor248_Update, gCubeHitbox150, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_249 */ {(void*) Zoness_Actor249_Draw, 1, (ObjectFunc) Zoness_Actor249_Update, gCubeHitbox200, 5000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_250 */ {(void*) Zoness_Actor250_Draw, 1, (ObjectFunc) Zoness_Actor250_Update, D_ZO_602C1D4, 10000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_251 */ {(void*) Zoness_Actor251_Draw, 2, (ObjectFunc) Zoness_Actor251_Update, D_ZO_602C218, 1000.0f, 0, 0, 40, 0, 1.0f, 1 }, - /* OBJ_ACTOR_252 */ {(void*) Zoness_Actor252_Draw, 1, (ObjectFunc) Zoness_Actor252_Update, D_ZO_602C234, 200.0f, 0, 0, 40, 0, 80.0f, 1 }, - /* OBJ_ACTOR_253 */ {(void*) Zoness_Actor253_Draw, 1, (ObjectFunc) Zoness_Actor253_Update, D_ZO_602C250, 300.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_254 */ {(void*) Zoness_Actor254_Draw, 1, (ObjectFunc) Zoness_Actor254_Update, D_ZO_602C2B0, 300.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ME_METEO_BALL */ {(void*) MeteoBall_Draw, 1, (ObjectFunc) MeteoBall_Update, aMeMeteoBallHitbox, 100.0f, 0, 1, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ME_HOPBOT */ {(void*) ActorHopBot_Draw, 1, (ObjectFunc) ActorHopBot_Update, aMeHopBotHitbox, 100.0f, 0, 1, 39, 0, 180.0f, 1 }, + /* OBJ_ACTOR_SLIPPY_SX */ {(void*) SectorX_SxSlippy_Draw, 1, (ObjectFunc) SectorX_SxSlippy_Update, gNoHitbox, 1000.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_ACTOR_SY_ROBOT */ {(void*) SectorY_SyRobot_Draw, 1, (ObjectFunc) SectorY_SyRobot_Update, aSyRobotHitbox, 1000.0f, 0, 0, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_MA_LOCOMOTIVE */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaLocomotive_Update, aMaLocomotiveHitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_TRAIN_CAR_1 */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaTrainCar1_Update, aMaTrainCar1Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_207 */ {(void*) Macbeth_Actor207_Draw, 2, (ObjectFunc) Macbeth_Actor207_Update, aMaActor207Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_TRAIN_CAR_2 */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaTrainCar2_Update, aMaTrainCar2Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_TRAIN_CAR_3 */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaTrainCar3_Update, aMaTrainCar3Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_TRAIN_CAR_4 */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaTrainCar4_Update, aMaTrainCar4Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_TRAIN_CAR_5 */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaTrainCar5_Update, aMaTrainCar5Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_TRAIN_CAR_6 */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaTrainCar6_Update, aMaTrainCar6Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_TRAIN_CAR_7 */ {(void*) Macbeth_Train_Draw, 1, (ObjectFunc) Macbeth_MaTrainCar7_Update, aMaTrainCar7Hitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_RAILROAD_SWITCH */ {(void*) Macbeth_MaRailroadSwitch_Draw, 1, (ObjectFunc) Macbeth_MaRailroadSwitch_Update, aMaMaRailroadSwitchHitbox, 300.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_BOULDER */ {(void*) Macbeth_MaBoulder_Draw, 1, (ObjectFunc) Macbeth_MaBoulder_Update, aMaBoulderHitbox, 300.0f, 0, 1, 40, 1, 0.0f, 1 }, + /* OBJ_ACTOR_MA_HORIZONTAL_LOCK_BAR */ {(void*) Macbeth_MaHorizontalLockBar_Draw, 1, (ObjectFunc) Macbeth_MaHorizontalLockBar_Update, aMaHorizontalLockBarHitbox, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_VERTICAL_LOCK_BAR */ {(void*) Macbeth_MaVerticalLockBar_Draw, 1, (ObjectFunc) Macbeth_MaVerticalLockBar_Update, aMaVerticalLockBarHitbox, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_BARRIER */ {(void*) Macbeth_MaBarrier_Draw, 1, (ObjectFunc) Macbeth_MaBarrier_Update, aMaBarrierHitbox, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_219 */ {(void*) Macbeth_Actor219_Draw, 1, (ObjectFunc) Macbeth_Actor219_Update, aMaActor219Hitbox, 300.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_BOMBDROP */ {(void*) Macbeth_MaBombDrop_Draw, 1, (ObjectFunc) Macbeth_MaBombDrop_Update, aMaBombDropHitbox, 200.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_MA_SPEAR */ {(void*) Macbeth_MaSpear_Draw, 1, (ObjectFunc) Macbeth_MaSpear_Update, aMaSpearHitbox, 300.0f, 0, 0, 40, 1, 1.0f, 0 }, + /* OBJ_ACTOR_MA_SHOCK_BOX */ {(void*) Macbeth_MaShockBox_Draw, 1, (ObjectFunc) Macbeth_MaShockBox_Update, aMaShockBoxHitbox, 300.0f, 0, 0, 40, 1, 1.0f, 0 }, + /* OBJ_ACTOR_MA_RAILWAY_SIGNAL */ {(void*) Macbeth_MaRailwaySignal_Draw, 1, (ObjectFunc) Macbeth_MaRailwaySignal_Update, aMaRailwaySignalHitbox, 300.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_TI_TERRAIN */ {(void*) NULL, 1, (ObjectFunc) Titania_TiTerrain_Update, gNoHitbox, 200.0f, 0, 0, 39, 0, 0.0f, 0 }, + /* OBJ_ACTOR_TI_LANDMINE */ {(void*) aTi1LandmineDL, 0, (ObjectFunc) Titania_TiLandmine_Update, aTi1LandmineHitbox, 50.0f, 0, 0, 39, 1, 1.0f, 0 }, + /* OBJ_ACTOR_TI_DESERT_ROVER */ {(void*) Titania_TiDesertRover_Draw, 1, (ObjectFunc) Titania_TiDesertRover_Update, aTiDesertRoverHitbox, 300.0f, 0, 0, 39, 1, 70.0f, 1 }, + /* OBJ_ACTOR_TI_DELPHOR */ {(void*) Titania_TiDelphor_Draw, 1, (ObjectFunc) Titania_TiDelphor_Update, aTiDelphorHitbox, 0.0f, 0, 0, 39, 1, 0.0f, 0 }, + /* OBJ_ACTOR_TI_DELPHOR_HEAD */ {(void*) Titania_TiDelphorHead_Draw, 1, (ObjectFunc) Titania_TiDelphorHead_Update, aTiDelphorHeadHitbox, 0.0f, 0, 0, 39, 1, 1.0f, 1 }, + /* OBJ_ACTOR_TI_DESERT_CRAWLER */ {(void*) Titania_TiDesertCrawler_Draw, 1, (ObjectFunc) Titania_TiDesertCrawler_Update, aTiDesertCrawlerHitbox, 1000.0f, 0, 0, 20, 1, 0.0f, 1 }, + /* OBJ_ACTOR_TI_BOULDER */ {(void*) Titania_TiBoulder_Draw, 1, (ObjectFunc) Titania_TiBoulder_Update, aTiBoulderHitbox, 0.0f, 0, 1, 39, 1, 0.0f, 1 }, + /* OBJ_ACTOR_TI_BOMB */ {(void*) Titania_TiBomb_Draw, 1, (ObjectFunc) Titania_TiBomb_Update, aTiBombHitbox, 0.0f, 0, 0, 39, 1, 0.0f, 1 }, + /* OBJ_ACTOR_TI_RASCO */ {(void*) Titania_TiRasco_Draw, 1, (ObjectFunc) Titania_TiRasco_Update, aTiRascoHitbox, 0.0f, 0, 0, 39, 1, 20.0f, 1 }, + /* OBJ_ACTOR_TI_FEKUDA */ {(void*) Titania_TiFekuda_Draw, 1, (ObjectFunc) Titania_TiFekuda_Update, aTiFekudaHitbox, 200.0f, 0, 0, 39, 1, 1.0f, 1 }, + /* OBJ_ACTOR_TI_GREAT_FOX */ {(void*) TiGreatFox_Draw, 1, (ObjectFunc) TiGreatFox_Update, gNoHitbox, 2000.0f, 0, 0, 39, 0, 0.0f, 5 }, + /* OBJ_ACTOR_ZO_BIRD */ {(void*) Zoness_ZoBird_Draw, 2, (ObjectFunc) Zoness_ZoBird_Update, aZoBirdHitbox, 1000.0f, 0, 1, 40, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ZO_DODORA */ {(void*) Zoness_ZoDodora_Draw, 1, (ObjectFunc) Zoness_ZoDodora_Update, aZoDodoraHitbox, 5000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_UNK_237 */ {(void*) Actor237_Draw, 1, (ObjectFunc) Actor237_Update, gNoHitbox, 200.0f, 0, 0, 40, 0, 0.0f, 2 }, + /* OBJ_ACTOR_ZO_FISH */ {(void*) Zoness_ZoFish_Draw, 2, (ObjectFunc) Zoness_ZoFish_Update, gCubeHitbox100, 200.0f, 0, 1, 40, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ZO_DODORA_WP_COUNT */ {(void*) NULL, 1, (ObjectFunc) NULL, gNoHitbox, 1000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ZO_Z_GULL */ {(void*) Zoness_ZGull_Draw, 1, (ObjectFunc) Zoness_ZGull_Update, gCubeHitbox100, 1500.0f, 0, 1, 40, 0, 20.0f, 0 }, + /* OBJ_ACTOR_ZO_ENERGY_BALL */ {(void*) Zoness_ZoEnergyBall_Draw, 1, (ObjectFunc) Zoness_ZoEnergyBall_Update, gZoEnergyBallHitbox, 1500.0f, 0, 1, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ZO_TROIKA */ {(void*) Zoness_ZoTroika_Draw, 2, (ObjectFunc) Zoness_ZoTroika_Update, aZoTroikaHitbox, 500.0f, 0, 0, 40, 0, 1.0f, 0 }, + /* OBJ_ACTOR_ZO_SHRIMP */ {(void*) Zoness_ZoShrimp_Draw, 2, (ObjectFunc) Zoness_ZoShrimp_Update, gCubeHitbox100, 0.0f, 0, 1, 40, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ZO_OBNEMA */ {(void*) Zoness_ZoObnema_Draw, 2, (ObjectFunc) Zoness_ZoObnema_Update, aZoObnemaHitbox, 2000.0f, 0, 0, 40, 0, 50.0f, 0 }, + /* OBJ_ACTOR_ZO_BALL */ {(void*) Zoness_ZoBall_Draw, 1, (ObjectFunc) Zoness_ZoBall_Update, gCubeHitbox100, 200.0f, 0, 0, 40, 0, 1.0f, 0 }, + /* OBJ_ACTOR_ZO_MINE */ {(void*) Zoness_ZoMine_Draw, 1, (ObjectFunc) Zoness_ZoMine_Update, gCubeHitbox100, 2000.0f, 0, 0, 40, 0, 1.0f, 0 }, + /* OBJ_ACTOR_ZO_BARRIER */ {(void*) Zoness_ZoBarrier_Draw, 1, (ObjectFunc) Zoness_ZoBarrier_Update, aZoBarrierHitbox, 500.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ZO_CRANE_MAGNET */ {(void*) Zoness_ZoCraneMagnet_Draw, 1, (ObjectFunc) Zoness_ZoCraneMagnet_Update, gCubeHitbox150, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_SPIKEBALL */ {(void*) Zoness_ZoSpikeBall_Draw, 1, (ObjectFunc) Zoness_ZoSpikeBall_Update, gCubeHitbox200, 5000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ZO_CARGOSHIP */ {(void*) Zoness_ZoCargoShip_Draw, 1, (ObjectFunc) Zoness_ZoCargoShip_Update, aZoCargoShipHitbox, 10000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ZO_CONTAINER */ {(void*) Zoness_ZoContainer_Draw, 2, (ObjectFunc) Zoness_ZoContainer_Update, aZoContainerHitbox, 1000.0f, 0, 0, 40, 0, 1.0f, 1 }, + /* OBJ_ACTOR_ZO_RADARBUOY */ {(void*) Zoness_ZoRadarBuoy_Draw, 1, (ObjectFunc) Zoness_ZoRadarBuoy_Update, aZoRadarBuoyHitbox, 200.0f, 0, 0, 40, 0, 80.0f, 1 }, + /* OBJ_ACTOR_ZO_SUPPLYCRANE */ {(void*) Zoness_ZoSupplyCrane_Draw, 1, (ObjectFunc) Zoness_ZoSupplyCrane_Update, aZoSupplyCraneHitbox, 300.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_ZO_SEARCHLIGHT */ {(void*) Zoness_ZoSearchLight_Draw, 1, (ObjectFunc) Zoness_ZoSearchLight_Update, aZoSearchLightHitbox, 300.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_ACTOR_255 */ {(void*) Aquas_Actor255_Draw, 1, (ObjectFunc) Aquas_Actor255_Update, D_AQ_6030BFC, 500.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_ACTOR_256 */ {(void*) Aquas_Actor256_Draw, 1, (ObjectFunc) Aquas_Actor256_Update, D_AQ_6030C18, 10000.0f, 0, 0, 40, 0, 0.0f, 0 }, /* OBJ_ACTOR_257 */ {(void*) Aquas_Actor257_Draw, 1, (ObjectFunc) Aquas_Actor257_Update, D_AQ_6030C44, 10000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_258 */ {(void*) Aquas_Actor258_Draw, 1, (ObjectFunc) Aquas_Actor258_Update, gCubeHitbox100, 200.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_259 */ {(void*) Aquas_Actor259_Draw, 2, (ObjectFunc) Aquas_Actor259_Update, D_AQ_6031398, 10000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_260 */ {(void*) Aquas_Actor260_Draw, 2, (ObjectFunc) Aquas_Actor260_Update, D_AQ_60313CC, 300.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_261 */ {(void*) Aquas_Actor261_Draw, 2, (ObjectFunc) Aquas_Actor261_Update, D_AQ_6031400, 300.0f, 0, 0, 40, 0, 0.0f, 1 }, - /* OBJ_ACTOR_262 */ {(void*) Aquas_Actor262_Draw, 2, (ObjectFunc) Aquas_Actor262_Update, D_AQ_603144C, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_263 */ {(void*) Aquas_Actor263_Draw, 2, (ObjectFunc) Aquas_Actor263_Update, D_AQ_6031480, 200.0f, 0, 0, 40, 0, 0.0f, 1 }, - /* OBJ_ACTOR_264 */ {(void*) Aquas_Actor264_Draw, 1, (ObjectFunc) Aquas_Actor264_Update, gCubeHitbox100, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_ACTOR_265 */ {(void*) Aquas_Actor265_Draw, 1, (ObjectFunc) Aquas_Actor265_Update, D_AQ_6031500, 200.0f, 0, 0, 40, 0, 0.0f, 1 }, - /* OBJ_ACTOR_266 */ {(void*) Aquas_Actor266_Draw, 2, (ObjectFunc) Aquas_Actor266_Update, D_AQ_6031538, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_ACTOR_267 */ {(void*) Aquas_Actor267_Draw, 2, (ObjectFunc) Aquas_Actor267_Update, D_AQ_6031554, 800.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_268 */ {(void*) Aquas_Actor268_Draw, 1, (ObjectFunc) Aquas_Actor268_Update, D_AQ_6031570, 10000.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_ACTOR_269 */ {(void*) Aquas_Actor269_Draw, 1, (ObjectFunc) Aquas_Actor269_Update, D_AQ_6030D20, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_270 */ {(void*) Aquas_Actor270_Draw, 1, (ObjectFunc) Aquas_Actor270_Update, D_AQ_60314C8, 1000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_271 */ {(void*) Actor271_Draw, 2, (ObjectFunc) Actor271_Update, D_BO_6011B24, 0.0f, 0, 0, 39, 0, 730.0f, 1 }, - /* OBJ_ACTOR_272 */ {(void*) Actor272_Draw, 1, (ObjectFunc) Actor272_Update, D_BO_6011BF4, 0.0f, 0, 0, 39, 0, 150.0f, 1 }, - /* OBJ_ACTOR_FO_RADAR */ {(void*) Fortuna_Radar_Draw, 2, (ObjectFunc) Fortuna_Radar_Update, aFoRadarHitbox, 0.0f, 0, 0, 39, 0, 220.0f, 1 }, + /* OBJ_ACTOR_AQ_PEARL */ {(void*) Aquas_AqPearl_Draw, 1, (ObjectFunc) Aquas_AqPearl_Update, gCubeHitbox100, 200.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_ANGLERFISH */ {(void*) Aquas_AqAnglerFish_Draw, 2, (ObjectFunc) Aquas_AqAnglerFish_Update, aAqAnglerFishHitbox, 10000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_GAROA */ {(void*) Aquas_AqGaroa_Draw, 2, (ObjectFunc) Aquas_AqGaroa_Update, aAqGaroaHitbox, 300.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_SCULPIN */ {(void*) Aquas_AqSculpin_Draw, 2, (ObjectFunc) Aquas_AqSculpin_Update, aAqSculpinHitbox, 300.0f, 0, 0, 40, 0, 0.0f, 1 }, + /* OBJ_ACTOR_AQ_SPINDLYFISH */ {(void*) Aquas_AqSpindlyFish_Draw, 2, (ObjectFunc) Aquas_AqSpindlyFish_Update, aAqSpindlyFishHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_SQUID */ {(void*) Aquas_AqSquid_Draw, 2, (ObjectFunc) Aquas_AqSquid_Update, aAqSquidHitbox, 200.0f, 0, 0, 40, 0, 0.0f, 1 }, + /* OBJ_ACTOR_AQ_SEAWEED */ {(void*) Aquas_AqSeaweed_Draw, 1, (ObjectFunc) Aquas_AqSeaweed_Update, gCubeHitbox100, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_BOULDER */ {(void*) Aquas_AqBoulder_Draw, 1, (ObjectFunc) Aquas_AqBoulder_Update, aAqBoulderHitbox, 200.0f, 0, 0, 40, 0, 0.0f, 1 }, + /* OBJ_ACTOR_AQ_CORAL */ {(void*) Aquas_AqCoral_Draw, 2, (ObjectFunc) Aquas_AqCoral_Update, aAqCoralHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_JELLYFISH */ {(void*) Aquas_AqJellyfish_Draw, 2, (ObjectFunc) Aquas_AqJellyfish_Update, aAqJellyfishHitbox, 800.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_FISHGROUP */ {(void*) Aquas_AqFishGroup_Draw, 1, (ObjectFunc) Aquas_AqFishGroup_Update, aAqFishGroupHitbox, 10000.0f, 0, 0, 0, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_STONE_COLUMN */ {(void*) Aquas_AqStoneColumn_Draw, 1, (ObjectFunc) Aquas_AqStoneColumn_Update, aAqStoneColumnHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AQ_OYSTER */ {(void*) Aquas_AqOyster_Draw, 1, (ObjectFunc) Aquas_AqOyster_Update, aAqOysterHitbox, 1000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_BO_SHIELD_REACTOR */ {(void*) BoShieldReactor_Draw, 2, (ObjectFunc) BoShieldReactor_Update, aBoShieldReactorHitbox, 0.0f, 0, 0, 39, 0, 730.0f, 1 }, + /* OBJ_ACTOR_BO_LASER_CANNON */ {(void*) BoLaserCannon_Draw, 1, (ObjectFunc) BoLaserCannon_Update, aBoLaserCannonHitbox, 0.0f, 0, 0, 39, 0, 150.0f, 1 }, + /* OBJ_ACTOR_FO_RADAR */ {(void*) Fortuna_FoRadar_Draw, 2, (ObjectFunc) Fortuna_FoRadar_Update, aFoRadarHitbox, 0.0f, 0, 0, 39, 0, 220.0f, 1 }, /* OBJ_ACTOR_SZ_SPACE_JUNK */ {(void*) SectorZ_SpaceJunkDraw, 1, (ObjectFunc) SectorZ_SpaceJunkUpdate, gCubeHitbox200, 0.0f, 0, 0, 39, 0, 1.0f, 0 }, - /* OBJ_ACTOR_275 */ {(void*) Solar_Doodad_Draw, 1, (ObjectFunc) Solar_Doodad_Update, gCubeHitbox100, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_276 */ {(void*) Solar_Doodad_Draw, 1, (ObjectFunc) Solar_Doodad_Update, gCubeHitbox100, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_277 */ {(void*) Solar_Doodad_Draw, 1, (ObjectFunc) Solar_Doodad_Update, gCubeHitbox200, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, - /* OBJ_ACTOR_278 */ {(void*) NULL, 1, (ObjectFunc) Solar_Actor278_Update, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 1 }, - /* OBJ_ACTOR_279 */ {(void*) NULL, 1, (ObjectFunc) Solar_Actor279_Update, gNoHitbox, 1000.0f, 0, 0, 0, 0, 0.0f, 1 }, - /* OBJ_ACTOR_280 */ {(void*) D_VE1_900DD20, 0, (ObjectFunc) Venom1_Actor280_Update, D_VE1_601B7F8, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_281 */ {(void*) Venom1_Actor281_Draw, 1, (ObjectFunc) Venom1_Doodad_Update, D_VE1_601B830, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_282 */ {(void*) D_VE1_901DA50, 0, (ObjectFunc) Venom1_Doodad_Update, D_VE1_601B868, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_283 */ {(void*) D_VE1_9023AD0, 0, (ObjectFunc) Venom1_Actor283_Update, D_VE1_601B8A0, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_284 */ {(void*) Venom1_Actor284_Draw, 1, (ObjectFunc) Venom1_Actor284_Update, D_VE1_601B8D8, 1000.0f, 0, 0, 40, 0, 0.0f, 0 }, - /* OBJ_ACTOR_285 */ {(void*) Andross_Actor285_Draw, 1, (ObjectFunc) Andross_Actor285_Update, gCubeHitbox100, 1000.0f, 0, 0, 20, 0, 1.0f, 1 }, - /* OBJ_ACTOR_286 */ {(void*) Andross_Actor286_Draw, 1, (ObjectFunc) Andross_Actor286_Update, gCubeHitbox100, 1000.0f, 0, 0, 20, 0, 0.0f, 0 }, - /* OBJ_ACTOR_287 */ {(void*) NULL, 1, (ObjectFunc) Andross_Actor287_Update, gNoHitbox, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, - /* OBJ_ACTOR_288 */ {(void*) NULL, 1, (ObjectFunc) Andross_Actor288_Update, gNoHitbox, 1000.0f, 0, 0, 20, 1, 0.0f, 0 }, - /* OBJ_ACTOR_289 */ {(void*) Actor289_Draw, 1, (ObjectFunc) Andross_Actor289_Update, gNoHitbox, 1000.0f, 0, 0, 20, 1, 0.0f, 0 }, - /* OBJ_ACTOR_290 */ {(void*) NULL, 1, (ObjectFunc) Andross_Actor290_Update, gNoHitbox, 1000.0f, 0, 0, 20, 0, 0.0f, 0 }, + /* OBJ_ACTOR_SO_ROCK_1 */ {(void*) Solar_SoRock_Draw, 1, (ObjectFunc) Solar_SoRock_Update, gCubeHitbox100, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_SO_ROCK_2 */ {(void*) Solar_SoRock_Draw, 1, (ObjectFunc) Solar_SoRock_Update, gCubeHitbox100, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_SO_ROCK_3 */ {(void*) Solar_SoRock_Draw, 1, (ObjectFunc) Solar_SoRock_Update, gCubeHitbox200, 200.0f, 0, 0, 39, 0, 1.0f, 1 }, + /* OBJ_ACTOR_SO_WAVE */ {(void*) NULL, 1, (ObjectFunc) Solar_SoWave_Update, gNoHitbox, 200.0f, 0, 0, 0, 0, 0.0f, 1 }, + /* OBJ_ACTOR_SO_PROMINENCE */ {(void*) NULL, 1, (ObjectFunc) Solar_SoProminence_Update, gNoHitbox, 1000.0f, 0, 0, 0, 0, 0.0f, 1 }, + /* OBJ_ACTOR_VE1_PILLAR_1 */ {(void*) aVe1Pillar1DL, 0, (ObjectFunc) Venom1_Ve1Pillar1_Update, aVe1Pillar1Hitbox, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_VE1_PILLAR_2 */ {(void*) Venom1_Ve1Pillar2_Draw, 1, (ObjectFunc) Venom1_Pillar2_3_Update, aVe1Pillar2Hitbox, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_VE1_PILLAR_3 */ {(void*) aVe1Pillar3DL, 0, (ObjectFunc) Venom1_Pillar2_3_Update, aVe1Pillar3Hitbox, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_VE1_PILLAR_4 */ {(void*) aVe1Pillar4DL, 0, (ObjectFunc) Venom1_Ve1Pillar4_Update, aVe1Pillar4Hitbox, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_VE1_MONKEY_STATUE */ {(void*) Venom1_Ve1MonkeyStatue_Draw, 1, (ObjectFunc) Venom1_Ve1MonkeyStatue_Update, aVe1MonkeyStatueHitbox, 1000.0f, 0, 0, 40, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AND_LASER_EMITTER */ {(void*) Andross_AndLaserEmitter_Draw, 1, (ObjectFunc) Andross_AndLaserEmitter_Update, gCubeHitbox100, 1000.0f, 0, 0, 20, 0, 1.0f, 1 }, + /* OBJ_ACTOR_AND_BRAIN_WASTE */ {(void*) Andross_AndBrainWaste_Draw, 1, (ObjectFunc) Andross_AndBrainWaste_Update, gCubeHitbox100, 1000.0f, 0, 0, 20, 0, 0.0f, 0 }, + /* OBJ_ACTOR_AND_EXPLOSION */ {(void*) NULL, 1, (ObjectFunc) Andross_AndExplosion_Update, gNoHitbox, 1000.0f, 0, 0, 40, 1, 0.0f, 0 }, + /* OBJ_ACTOR_AND_RADIO */ {(void*) NULL, 1, (ObjectFunc) Andross_AndRadio_Update, gNoHitbox, 1000.0f, 0, 0, 20, 1, 0.0f, 0 }, + /* OBJ_ACTOR_AND_JAMES_TRIGGER */ {(void*) AndJamesTrigger_Draw, 1, (ObjectFunc) Andross_AndJamesTrigger_Update, gNoHitbox, 1000.0f, 0, 0, 20, 1, 0.0f, 0 }, + /* OBJ_ACTOR_AND_BOSS_TIMER_SET */ {(void*) NULL, 1, (ObjectFunc) Andross_AndBossTimer_Update, gNoHitbox, 1000.0f, 0, 0, 20, 0, 0.0f, 0 }, /* OBJ_ACTOR_SUPPLIES */ {(void*) ActorSupplies_Draw, 1, (ObjectFunc) ActorSupplies_Update, gCubeHitbox150, 1000.0f, 0, 0, 0, 0, 1.0f, 0 }, - /* OBJ_BOSS_CO_GRANGA */ {(void*) Corneria_Granga_Draw, 2, (ObjectFunc) Corneria_Granga_Update, aCoGrangaHitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_CO_CARRIER */ {(void*) Corneria_Carrier_Draw, 1, (ObjectFunc) Corneria_Carrier_Update, aCoCarrierHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_294 */ {(void*) Corneria_Boss294_Draw, 1, (ObjectFunc) Corneria_Boss294_Update, D_CO_603E714, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_295 */ {(void*) Corneria_Boss295_Draw, 1, (ObjectFunc) Corneria_Boss295_Update, D_CO_603E748, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_296 */ {(void*) Corneria_Boss296_Draw, 1, (ObjectFunc) Corneria_Boss296_Update, D_CO_603E7C4, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_297 */ {(void*) Meteo_Boss297_Draw, 1, (ObjectFunc) Meteo_Boss297_Update, D_ME_602F75C, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_298 */ {(void*) Meteo_Boss298_Draw, 1, (ObjectFunc) Meteo_Boss298_Update, D_ME_602FA50, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_299 */ {(void*) Boss299_Draw, 2, (ObjectFunc) Boss299_Update, gNoHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_300 */ {(void*) Boss300_Draw, 1, (ObjectFunc) Boss300_Update, gNoHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_301 */ {(void*) Aquas_Boss301_Draw, 1, (ObjectFunc) Aquas_Boss301_Update, D_AQ_6030B10, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_A6 */ {(void*) Area6_Boss_Draw, 1, (ObjectFunc) Area6_Boss_Update, D_A6_6028454, 2000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_SX_SPYBORG */ {(void*) SectorX_Boss_Draw, 2, (ObjectFunc) SectorX_Boss_Update, D_SX_6032550, 20000.0f, 0, 0, 20, 0, 0.0f, 10 }, - /* OBJ_BOSS_304 */ {(void*) SectorX_Boss304_Draw, 2, (ObjectFunc) SectorX_Boss304_Update, D_SX_6032488, 1000.0f, 0, 0, 20, 0, 0.0f, 10 }, - /* OBJ_BOSS_305 */ {(void*) SectorX_Boss305_Draw, 2, (ObjectFunc) SectorX_Boss305_Update, D_SX_60324EC, 1000.0f, 0, 0, 20, 0, 0.0f, 10 }, - /* OBJ_BOSS_TI */ {(void*) Titania_Boss_Draw, 1, (ObjectFunc) Titania_Boss_Update,D_TI_801B83A8, 1000.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_ZO */ {(void*) Zoness_Boss_Draw, 2, (ObjectFunc) Zoness_Boss_Update, D_ZO_602C044, 1000.0f, 0, 0, 40, 0, 1.0f, 10 }, - /* OBJ_BOSS_FO */ {(void*) HUD_BossFO_Draw, 1, (ObjectFunc) HUD_BossFO_Update, D_FO_600FFE0, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_309 */ {(void*) Boss309_Draw, 1, (ObjectFunc) Boss309_Update, gNoHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_310 */ {(void*) Boss310_Draw, 1, (ObjectFunc) Boss310_Update, gNoHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_311 */ {(void*) Bolse_Boss311_Draw, 2, (ObjectFunc) Bolse_Boss311_Update, D_BO_6011C80, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_VE2 */ {(void*) Venom2_Boss_Draw, 2, (ObjectFunc) Venom2_Boss_Update, D_VE2_60166F4, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_SZ_GREAT_FOX */ {(void*) SectorZ_GreatFoxDraw, 1, (ObjectFunc) SectorZ_GreatFoxUpdate, D_SZ_6009388, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_SY */ {(void*) SectorY_Boss_Draw, 2, (ObjectFunc) SectorY_Boss_Update, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_SO */ {(void*) Solar_Boss_Draw, 2, (ObjectFunc) Solar_Boss_Update, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_KA */ {(void*) Katina_BossDraw, 1, (ObjectFunc) Katina_BossUpdate, D_KA_6011058, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_KA_BASE */ {(void*) Katina_Base_Draw, 1, (ObjectFunc) Katina_BaseUpdate, D_KA_601115C, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_AQ */ {(void*) Aquas_Boss_Draw, 2, (ObjectFunc) Aquas_Boss_Update, D_AQ_6030F74, 10000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_VE1 */ {(void*) Venom1_Boss_Draw, 1, (ObjectFunc) Venom1_Boss_Update,D_VE1_8019A9B8, 3000.0f, 0, 0, 40, 1, 0.0f, 10 }, - /* OBJ_BOSS_320 */ {(void*) Andross_Boss320_Draw, 2, (ObjectFunc) Andross_Boss320_Update, D_ANDROSS_C038DC0, 10000.0f, 0, 0, 40, 0, 0.0f, 10 }, - /* OBJ_BOSS_321 */ {(void*) Andross_Boss321_Draw, 1, (ObjectFunc) Andross_Boss321_Update, D_ANDROSS_C038F24, 10000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_CO_GRANGA */ {(void*) Corneria_CoGranga_Draw, 2, (ObjectFunc) Corneria_CoGranga_Update, aCoGrangaHitbox, 20000.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_CO_CARRIER */ {(void*) Corneria_CoCarrier_Draw, 1, (ObjectFunc) Corneria_CoCarrier_Update, aCoCarrierHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_CO_CARRIER_LEFT */ {(void*) Corneria_CoCarrierLeft_Draw, 1, (ObjectFunc) Corneria_CarrierLeft_Update, aCoCarrierLeftHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_CO_CARRIER_UPPER */ {(void*) Corneria_CoCarrierUpper_Draw, 1, (ObjectFunc) Corneria_CarrierUpper_Update, aCoCarrierUpperHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_CO_CARRIER_BOTTOM */ {(void*) Corneria_CoCarrierBottom_Draw, 1, (ObjectFunc) Corneria_CarrierBottom_Update, aCoCarrierBottomHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_ME_CRUSHER */ {(void*) Meteo_MeCrusher_Draw, 1, (ObjectFunc) Meteo_MeCrusher_Update, aMeCrusherHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_ME_CRUSHER_SHIELD */ {(void*) Meteo_MeCrusherShield_Draw, 1, (ObjectFunc) Meteo_MeCrusherShield_Update, aMeCrusherShieldHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_UNK_299 */ {(void*) Boss299_Draw, 2, (ObjectFunc) Boss299_Update, gNoHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_UNK_300 */ {(void*) Boss300_Draw, 1, (ObjectFunc) Boss300_Update, gNoHitbox, 20000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_AQ_UNK_301 */ {(void*) Aquas_Boss301_Draw, 1, (ObjectFunc) Aquas_Boss301_Update, aBoss301Hitbox, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_A6_GORGON */ {(void*) Area6_A6Gorgon_Draw, 1, (ObjectFunc) Area6_A6Gorgon_Update, aA6GorgonHitbox, 2000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_SX_SPYBORG */ {(void*) SectorX_SxSpyborg_Draw, 2, (ObjectFunc) SectorX_SxSpyborg_Update, aSxSpyborgHitbox, 20000.0f, 0, 0, 20, 0, 0.0f, 10 }, + /* OBJ_BOSS_SX_SPYBORG_LEFT_ARM */ {(void*) SectorX_SxSpyborgLeftArm_Draw, 2, (ObjectFunc) SectorX_SxSpyborgLeftArm_Update, aSxSpyborgLeftArmHitbox, 1000.0f, 0, 0, 20, 0, 0.0f, 10 }, + /* OBJ_BOSS_SX_SPYBORG_RIGHT_ARM */ {(void*) SectorX_SxSpyborgRightArm_Draw, 2, (ObjectFunc) SectorX_SxSpyborgRightArm_Update, aSxSpyborgRightArmHitbox, 1000.0f, 0, 0, 20, 0, 0.0f, 10 }, + /* OBJ_BOSS_TI_GORAS */ {(void*) Titania_TiGoras_Draw, 1, (ObjectFunc) Titania_TiGoras_Update, aTiGorasHitbox, 1000.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_ZO_SARUMARINE */ {(void*) Zoness_ZoSarumarine_Draw, 2, (ObjectFunc) Zoness_ZoSarumarine_Update, aZoSarumarineHitbox, 1000.0f, 0, 0, 40, 0, 1.0f, 10 }, + /* OBJ_BOSS_FO_BASE */ {(void*) HUD_FoBase_Draw, 1, (ObjectFunc) HUD_FoBase_Update, aFoBaseHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_BO_BASE */ {(void*) BoBase_Draw, 1, (ObjectFunc) BoBase_Update, gNoHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_BO_BASE_SHIELD */ {(void*) BoBaseShield_Draw, 1, (ObjectFunc) BoBaseShield_Update, gNoHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_BO_BASE_CORE */ {(void*) Bolse_BoBaseCore_Draw, 2, (ObjectFunc) Bolse_BoBaseCore_Update, aBoBaseCoreHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_VE2_BASE */ {(void*) Venom2_Ve2Base_Draw, 2, (ObjectFunc) Venom2_Ve2Base_Update, aVe2BaseHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_SZ_GREAT_FOX */ {(void*) SectorZ_SzGreatFox_Draw, 1, (ObjectFunc) SectorZ_SzGreatFox_Update, aSzGreatFoxHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_SY_SHOGUN */ {(void*) SectorY_SyShogun_Draw, 2, (ObjectFunc) SectorY_SyShogun_Update, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_SO_VULKAIN */ {(void*) Solar_SoVulkain_Draw, 2, (ObjectFunc) Solar_SoVulkain_Update, gNoHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_KA_SAUCERER */ {(void*) Katina_KaSaucerer_Draw, 1, (ObjectFunc) Katina_KaSaucerer_Update, aKaSaucererHitbox, 0.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_KA_FLBASE */ {(void*) Katina_KaFrontlineBase_Draw, 1, (ObjectFunc) Katina_KaFrontlineBase_Update, aKaFrontlineBaseHitbox, 0.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_AQ_BACOON */ {(void*) Aquas_AqBacoon_Draw, 2, (ObjectFunc) Aquas_AqBacoon_Update, aAqBacoonHitbox, 10000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_VE1_GOLEMECH */ {(void*) Venom1_Ve1Golemech_Draw, 1, (ObjectFunc) Venom1_Ve1Golemech_Update, aVe1GolemechHitbox, 3000.0f, 0, 0, 40, 1, 0.0f, 10 }, + /* OBJ_BOSS_AND_ANDROSS */ {(void*) Andross_AndAndross_Draw, 2, (ObjectFunc) Andross_AndAndross_Update, aAndAndrossHitbox, 10000.0f, 0, 0, 40, 0, 0.0f, 10 }, + /* OBJ_BOSS_AND_BRAIN */ {(void*) Andross_AndBrain_Draw, 1, (ObjectFunc) Andross_AndBrain_Update, aAndBrainHitbox, 10000.0f, 0, 0, 40, 0, 0.0f, 10 }, /* OBJ_ITEM_LASERS */ {(void*) ItemLasers_Draw, 1, (ObjectFunc) ItemLasers_Update, gItemLasersHitbox, 700.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_ITEM_CHECKPOINT */ {(void*) ItemCheckpoint_Draw, 1, (ObjectFunc) ItemCheckpoint_Update, gItemCheckpointHitbox, 700.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_ITEM_SILVER_RING */ {(void*) ItemSilverRing_Draw, 1, (ObjectFunc) ItemSupplyRing_Update, gItemSupplyRingHitbox, 700.0f, 0, 0, 0, 0, 0.0f, 0 }, @@ -432,13 +432,13 @@ ObjectInfo gObjectInfo[] = { /* OBJ_ITEM_GOLD_RING */ {(void*) ItemGoldRing_Draw, 1, (ObjectFunc) ItemGoldRing_Update, gItemSupplyRingHitbox, 700.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_ITEM_WING_REPAIR */ {(void*) aArwingItemLasersDL, 0, (ObjectFunc) ItemWingRepair_Update, gItemLasersHitbox, 700.0f, 0, 0, 0, 0, 0.0f, 0 }, /* OBJ_ITEM_TRAINING_RING */ {(void*) gItemTrainingRingDL, 0, (ObjectFunc) Training_ItemRing_Update, D_TR_6009CFC, 700.0f, 0, 0, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_FIRE_SMOKE */ {(void*) Effect_FireSmoke_Draw, 1, (ObjectFunc) Effect_Effect339_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_340 */ {(void*) Effect_FireSmoke_Draw, 1, (ObjectFunc) Effect_Effect340_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_341 */ {(void*) Effect_FireSmoke_Draw, 1, (ObjectFunc) Effect_Effect341_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_342 */ {(void*) Effect_Effect342_Draw, 1, (ObjectFunc) Effect_Effect342_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_343 */ {(void*) Effect_Effect343_Draw, 1, (ObjectFunc) Effect_Effect343_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_344 */ {(void*) Effect_Effect344_Draw, 1, (ObjectFunc) Effect_Effect344_Update, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_345 */ {(void*) Effect_Effect345_Draw, 1, (ObjectFunc) Effect_Effect345_Update, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_FIRE_SMOKE_1 */ {(void*) Effect_FireSmoke_Draw, 1, (ObjectFunc) Effect_Effect339_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_FIRE_SMOKE_2 */ {(void*) Effect_FireSmoke_Draw, 1, (ObjectFunc) Effect_Effect340_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_FIRE_SMOKE_3 */ {(void*) Effect_FireSmoke_Draw, 1, (ObjectFunc) Effect_Effect341_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_SMOKE_1 */ {(void*) Effect_Effect342_Draw, 1, (ObjectFunc) Effect_Effect342_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_SMOKE_2 */ {(void*) Effect_Effect343_Draw, 1, (ObjectFunc) Effect_Effect343_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_EXPLOSION_MARK_1 */ {(void*) Effect_Effect344_Draw, 1, (ObjectFunc) Effect_Effect344_Update, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_LASER_MARK_1 */ {(void*) Effect_Effect345_Draw, 1, (ObjectFunc) Effect_Effect345_Update, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 }, /* OBJ_EFFECT_346 */ {(void*) Effect_Effect346_Draw, 1, (ObjectFunc) Effect_Effect346_Update, NULL, -200.0f, 1, 0, 0, 0, 0.0f, 0 }, /* OBJ_EFFECT_347 */ {(void*) Effect_Effect347_Draw, 1, (ObjectFunc) Effect_Effect347_Update, NULL, 100.0f, 1, 0, 40, 0, 0.0f, 0 }, /* OBJ_EFFECT_348 */ {(void*) Effect_Effect348_Draw, 1, (ObjectFunc) Effect_Effect348_Update, NULL, -200.0f, -1, 1, 0, 0, 0.0f, 0 }, @@ -451,7 +451,7 @@ ObjectInfo gObjectInfo[] = { /* OBJ_EFFECT_355 */ {(void*) Effect_Effect355_Draw, 1, (ObjectFunc) Effect_Effect355_Update, NULL, 100.0f, 1, 0, 20, 1, 0.0f, 0 }, /* OBJ_EFFECT_356 */ {(void*) Effect_Effect356_Draw, 1, (ObjectFunc) Effect_Effect356_Update, NULL, 100.0f, 1, 0, 20, 0, 0.0f, 0 }, /* OBJ_EFFECT_357 */ {(void*) Effect_Effect357_Draw, 1, (ObjectFunc) Effect_Effect357_Update, NULL, 100.0f, 0, 1, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_358 */ {(void*) Katina_LaserEnergyParticlesDraw, 1, (ObjectFunc) Katina_LaserEnergyParticlesUpdate, NULL, 100.0f, 1, 1, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_KA_ENERGY_PARTICLES */ {(void*) Katina_LaserEnergyParticlesDraw, 1, (ObjectFunc) Katina_LaserEnergyParticlesUpdate, NULL, 100.0f, 1, 1, 0, 0, 0.0f, 0 }, /* OBJ_EFFECT_359 */ {(void*) Effect_Effect359_Draw, 1, (ObjectFunc) Effect_Effect359_Update, NULL, -100.0f, 1, 2, 0, 0, 0.0f, 0 }, /* OBJ_EFFECT_360 */ {(void*) Effect_Effect360_361_362_Draw, 1, (ObjectFunc) Effect_Effect360_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, /* OBJ_EFFECT_361 */ {(void*) Effect_Effect360_361_362_Draw, 1, (ObjectFunc) Effect_Effect361_Update, NULL, -200.0f, 1, 2, 0, 0, 0.0f, 0 }, @@ -467,10 +467,10 @@ ObjectInfo gObjectInfo[] = { /* OBJ_EFFECT_371 */ {(void*) Meteo_Effect371_Draw, 1, (ObjectFunc) Meteo_Effect371_Update, NULL, 100.0f, 0, 1, 40, 0, 0.0f, 0 }, /* OBJ_EFFECT_372 */ {(void*) Effect_Effect372_Draw, 1, (ObjectFunc) Effect_Effect372_Update, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 }, /* OBJ_EFFECT_TIMED_SFX */ {(void*) NULL, 1, (ObjectFunc) Effect_TimedSfx_Update, NULL, 500.0f, 0, 1, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_374 */ {(void*) Macbeth_Effect374_Draw, 1, (ObjectFunc) Effect_Effect374_Update, NULL, 100.0f, 0, 1, 40, 0, 0.0f, 0 }, - /* OBJ_EFFECT_375 */ {(void*) Macbeth_Effect375_Draw, 1, (ObjectFunc) Effect_Effect375_Update, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_376 */ {(void*) Macbeth_Effect376_Draw, 1, (ObjectFunc) Effect_Effect376_Update, NULL, -200.0f, 1, 0, 0, 0, 0.0f, 0 }, - /* OBJ_EFFECT_377 */ {(void*) Macbeth_Effect377_Draw, 1, (ObjectFunc) Effect_Effect377_Update, NULL, 100.0f, 1, 0, 20, 0, 0.0f, 0 }, + /* OBJ_EFFECT_374 */ {(void*) Effect_Effect374_Draw, 1, (ObjectFunc) Effect_Effect374_Update, NULL, 100.0f, 0, 1, 40, 0, 0.0f, 0 }, + /* OBJ_EFFECT_375 */ {(void*) Effect_Effect375_Draw, 1, (ObjectFunc) Effect_Effect375_Update, NULL, -200.0f, 0, 1, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_376 */ {(void*) Effect_Effect376_Draw, 1, (ObjectFunc) Effect_Effect376_Update, NULL, -200.0f, 1, 0, 0, 0, 0.0f, 0 }, + /* OBJ_EFFECT_377 */ {(void*) Effect_Effect377_Draw, 1, (ObjectFunc) Effect_Effect377_Update, NULL, 100.0f, 1, 0, 20, 0, 0.0f, 0 }, /* OBJ_EFFECT_378 */ {(void*) Macbeth_Effect378_Draw, 1, (ObjectFunc) Macbeth_Effect378_Update, NULL, 100.0f, 0, 0, 20, 0, 0.0f, 0 }, /* OBJ_EFFECT_379 */ {(void*) Macbeth_Effect379_Draw, 1, (ObjectFunc) Macbeth_Effect379_Update, NULL, 100.0f, 1, 1, 0, 0, 0.0f, 0 }, /* OBJ_EFFECT_380 */ {(void*) Macbeth_Effect380_Draw, 1, (ObjectFunc) Macbeth_Effect380_Update, NULL, 100.0f, 0, 0, 20, 0, 0.0f, 0 }, diff --git a/src/engine/fox_edisplay.c b/src/engine/fox_edisplay.c index d53269c3..6c2f8c03 100644 --- a/src/engine/fox_edisplay.c +++ b/src/engine/fox_edisplay.c @@ -59,13 +59,13 @@ void Sprite168_Draw(Sprite168* this) { void Object_dummy_800598DC(s32 arg0) { } -void Actor201_Draw(Actor201* this) { +void MeteoBall_Draw(MeteoBall* this) { RCP_SetupDL_60(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); gSPDisplayList(gMasterDisp++, D_MA_6025B50); RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } -void Actor202_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* index) { +void ActorHopBot_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* index) { Vec3f sp24; Vec3f sp18; @@ -88,17 +88,17 @@ f32 D_edisplay_800CFA2C[] = { 1.0f, 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, }; -void Actor202_Draw(Actor202* this) { +void ActorHopBot_Draw(ActorHopBot* this) { Vec3f sp30[30]; f32 temp = D_edisplay_800CF9B0[this->animFrame] - 114.0f; Matrix_Translate(gGfxMatrix, 0.f, -temp, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); Animation_GetFrameData(&D_ME_601E8C4, this->animFrame, sp30); - Animation_DrawSkeleton(1, D_ME_601E9D0, sp30, NULL, Actor202_PostLimbDraw, &this->index, &gIdentityMatrix); + Animation_DrawSkeleton(1, D_ME_601E9D0, sp30, NULL, ActorHopBot_PostLimbDraw, &this->index, &gIdentityMatrix); } -void MeteoTunnel_Draw(MeteoTunnel* this) { +void MeteoTunnel_Draw(MeTunnel* this) { gSPDisplayList(gMasterDisp++, D_ME_601AE40); } @@ -118,7 +118,7 @@ void CoIBeam_Draw(CoIBeam* this) { gSPDisplayList(gMasterDisp++, D_CO_6023AC0); } -void Actor196_Draw(Actor196* this) { +void ActorMoleMissile_Draw(ActorMoleMissile* this) { if (this->animFrame != 0) { gSPDisplayList(gMasterDisp++, D_CO_6032BC0); } @@ -231,7 +231,7 @@ Gfx* D_edisplay_800CFC0C[] = { D_AQ_60294A0, D_AQ_60291B0, D_AQ_60287F0, D_AQ_6029330, D_AQ_6029240, D_AQ_6029790, D_AQ_6029900, D_AQ_6028F50, D_AQ_60290C0, D_AQ_6029530, D_AQ_60296A0, D_AQ_6028A80, D_AQ_6028910, }; -Gfx* D_edisplay_800CFC40[] = { D_AQ_6014FD0, D_AQ_6014FD0, D_AQ_6014FD0, D_AQ_6014FD0 }; +Gfx* D_edisplay_800CFC40[] = { aAqBoulderDL, aAqBoulderDL, aAqBoulderDL, aAqBoulderDL }; Gfx* D_edisplay_800CFC50[] = { D_AQ_601EDE0, D_AQ_601F2F0, D_AQ_601F830, D_AQ_601FD70, D_AQ_601D110 }; Gfx* D_edisplay_800CFC64[] = { D_AQ_6023940, D_AQ_6023D70, D_AQ_60249C0, D_AQ_6023EB0, D_AQ_60249C0, D_AQ_6023B80 }; Gfx* D_edisplay_800CFC7C[] = { D_ZO_601B570, D_ZO_601B710, D_ZO_60209B0, D_ZO_6020B70, D_ZO_6020D50, @@ -448,7 +448,7 @@ void Actor_DrawEngineAndContrails(Actor* actor) { Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].camYaw, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, gPlayer[gPlayerNum].camPitch, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - Play_DrawEngineGlow(gLevelType); + Display_DrawEngineGlow(gLevelType); Matrix_Pop(&gGfxMatrix); } sp5C = actor->fwork[21]; @@ -502,16 +502,17 @@ void Actor_DrawEngineGlow(Actor* actor, s32 levelType) { Matrix_RotateY(gGfxMatrix, -actor->obj.rot.y * M_DTOR, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, -gPlayer[gPlayerNum].camYaw, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - Play_DrawEngineGlow(levelType); + Display_DrawEngineGlow(levelType); Matrix_Pop(&gGfxMatrix); } } -void func_edisplay_8005B388(Actor* actor) { +void func_edisplay_8005B388(Actor199* actor) { Vec3f sp3C = { 0.0f, 0.0f, 0.0f }; Vec3f sp30; Matrix_MultVec3f(gGfxMatrix, &sp3C, &sp30); + if ((((fabsf(sp30.z) < 3000.0f) && (fabsf(sp30.x) < 3000.0f) && !gBossActive) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) || (gCurrentLevel == LEVEL_VENOM_ANDROSS) || (gCurrentLevel == LEVEL_VENOM_2) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE)) && @@ -545,7 +546,7 @@ void func_edisplay_8005B388(Actor* actor) { D_edisplay_80161630.unk_04 = D_edisplay_80161630.unk_08 = D_edisplay_80161630.unk_0C = D_edisplay_80161630.unk_10 = 0.0f; } - func_display_80053658(&D_edisplay_80161630); + Display_ArwingWings(&D_edisplay_80161630); } else if (gLevelType == LEVELTYPE_PLANET) { gSPDisplayList(gMasterDisp++, D_ENMY_PLANET_40018A0); } else if (gPlayer[0].wingPosition == 2) { @@ -556,25 +557,25 @@ void func_edisplay_8005B388(Actor* actor) { Actor_DrawEngineAndContrails(actor); } -void Actor180_Draw(Actor* actor) { +void MeMolarRock_Draw(Actor* actor) { Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_ME_6024B60); } -void Actor182_Draw(Actor* actor) { +void MeMeteor2_Draw(Actor* actor) { RCP_SetupDL_29(actor->unk_046, gFogGreen, gFogBlue, gFogAlpha, actor->unk_048, gFogFar); Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_ME_6018C00); + gSPDisplayList(gMasterDisp++, aMeMeteor1DL); } -void Actor186_Draw(Actor* actor) { +void MeLaserCannon1_Draw(Actor* actor) { RCP_SetupDL_29(actor->unk_046, gFogGreen, gFogBlue, gFogAlpha, actor->unk_048, gFogFar); gSPDisplayList(gMasterDisp++, D_ME_6022920); } -void Actor190_191_Draw(Actor* actor) { +void ActorMissileSeek_Draw(Actor* actor) { f32 scale; switch (actor->eventType) { @@ -599,13 +600,13 @@ void Actor190_191_Draw(Actor* actor) { Actor_DrawEngineGlow(actor, 2); } -void Actor192_Draw(Actor* actor) { +void ActorSkibot_Draw(Actor* actor) { Matrix_Translate(gGfxMatrix, 0.0f, -124.0f, 0.0f, MTXF_APPLY); Animation_GetFrameData(&D_CO_6029528, actor->animFrame, actor->vwork); Animation_DrawSkeleton(1, D_CO_6029674, actor->vwork, NULL, NULL, actor, &gIdentityMatrix); } -void Actor193_Draw(Actor* actor) { +void ActorRadar_Draw(Actor* actor) { if (actor->timer_0BC != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); @@ -670,7 +671,7 @@ void Object_SetShadowDL(ObjectId objId, s32 index) { case OBJ_BOSS_CO_GRANGA: gSPDisplayList(gMasterDisp++, D_CO_6034B90); break; - case OBJ_BOSS_KA: + case OBJ_BOSS_KA_SAUCERER: if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY) { RCP_SetupDL(&gMasterDisp, SETUPDL_64); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 200); @@ -680,9 +681,9 @@ void Object_SetShadowDL(ObjectId objId, s32 index) { gSPDisplayList(gMasterDisp++, D_102A8A0); break; case OBJ_BOSS_CO_CARRIER: - case OBJ_BOSS_294: - case OBJ_BOSS_295: - case OBJ_BOSS_296: + case OBJ_BOSS_CO_CARRIER_LEFT: + case OBJ_BOSS_CO_CARRIER_UPPER: + case OBJ_BOSS_CO_CARRIER_BOTTOM: COS_DEG(gBosses[index].obj.rot.z); if (gGroundSurface == SURFACE_WATER) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 90); @@ -693,22 +694,22 @@ void Object_SetShadowDL(ObjectId objId, s32 index) { case OBJ_BOSS_CO_CARRIER: gSPDisplayList(gMasterDisp++, D_CO_6036840); break; - case OBJ_BOSS_294: + case OBJ_BOSS_CO_CARRIER_LEFT: gSPDisplayList(gMasterDisp++, D_CO_6036CD0); break; - case OBJ_BOSS_295: - case OBJ_BOSS_296: + case OBJ_BOSS_CO_CARRIER_UPPER: + case OBJ_BOSS_CO_CARRIER_BOTTOM: gSPDisplayList(gMasterDisp++, D_CO_60363B0); break; } break; - case OBJ_ACTOR_192: + case OBJ_ACTOR_CO_SKIBOT: gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 150); Matrix_Scale(gGfxMatrix, 0.4f, 0.4f, gActors[index].scale, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_CO_6034B90); break; - case OBJ_ACTOR_230: + case OBJ_ACTOR_TI_BOULDER: RCP_SetupDL_48(); RCP_SetupDL(&gMasterDisp, SETUPDL_69); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -721,7 +722,7 @@ void Object_SetShadowDL(ObjectId objId, s32 index) { Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); break; - case OBJ_ACTOR_229: + case OBJ_ACTOR_TI_DESERT_CRAWLER: RCP_SetupDL(&gMasterDisp, SETUPDL_68); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); @@ -735,7 +736,7 @@ void Object_SetShadowDL(ObjectId objId, s32 index) { Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); break; - case OBJ_ACTOR_231: + case OBJ_ACTOR_TI_BOMB: RCP_SetupDL(&gMasterDisp, SETUPDL_69); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0); @@ -747,7 +748,7 @@ void Object_SetShadowDL(ObjectId objId, s32 index) { Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); break; - case OBJ_ACTOR_215: + case OBJ_ACTOR_MA_BOULDER: RCP_SetupDL_48(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 255); @@ -755,8 +756,8 @@ void Object_SetShadowDL(ObjectId objId, s32 index) { Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); break; - case OBJ_BOSS_VE1: - Venom1_80198310(&gBosses[index]); + case OBJ_BOSS_VE1_GOLEMECH: + Venom1_Ve1Golemech_SetShadow(&gBosses[index]); break; } } @@ -947,7 +948,7 @@ void Scenery_Draw(Scenery* this, s32 arg1) { this->obj.pos.y -= gCameraShakeY; if (this->info.drawType == 0) { if ((this->obj.id == OBJ_SCENERY_CO_TOWER) || (this->obj.id == OBJ_SCENERY_CO_ROCKWALL) || - (this->obj.id == OBJ_SCENERY_CO_HIGHWAY_4) || (this->obj.id == OBJ_SCENERY_50)) { + (this->obj.id == OBJ_SCENERY_CO_HIGHWAY_4) || (this->obj.id == OBJ_SCENERY_VE1_WALL_3)) { RCP_SetupDL_57(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); if (arg1 < 0) { @@ -995,15 +996,15 @@ void Actor_DrawOnRails(Actor* this) { if (this->info.draw != NULL) { switch (this->obj.id) { - case OBJ_ACTOR_194: - Actor194_Draw(this); + case OBJ_ACTOR_ME_MORA: + MeMora_Draw(this); return; - case OBJ_ACTOR_236: - Zoness_Actor236_Draw(this); + case OBJ_ACTOR_ZO_DODORA: + Zoness_ZoDodora_Draw(this); return; } if ((this->obj.id == OBJ_ACTOR_EVENT) && (this->eventType == EVID_200)) { - Actor194_Draw(this); + MeMora_Draw(this); } else { if (this->info.unk_19 != 0) { this->obj.pos.y += gCameraShakeY; @@ -1115,7 +1116,7 @@ void Actor_DrawAllRange(Actor* this) { } if (!sDrewActor) { this->lockOnTimers[gPlayerNum] = 0; - if ((this->obj.id == OBJ_ACTOR_DEBRIS) || (this->obj.id == OBJ_ACTOR_286)) { + if ((this->obj.id == OBJ_ACTOR_DEBRIS) || (this->obj.id == OBJ_ACTOR_AND_BRAIN_WASTE)) { Object_Kill(&this->obj, this->sfxSource); } } @@ -1149,7 +1150,7 @@ void Boss_Draw(Boss* this, s32 arg1) { } Matrix_MultVec3f(&D_edisplay_801615F0, &origin, &D_edisplay_801615D0); Object_SetSfxSourceToView(this->sfxSource, &D_edisplay_801615D0); - if ((this->obj.id == OBJ_BOSS_KA) || (this->obj.id == OBJ_BOSS_KA_BASE)) { + if ((this->obj.id == OBJ_BOSS_KA_SAUCERER) || (this->obj.id == OBJ_BOSS_KA_FLBASE)) { var_fa1 = 6000.0f; var_fv0 = 6000.0f; var_ft5 = 0.9f; @@ -1170,8 +1171,8 @@ void Boss_Draw(Boss* this, s32 arg1) { if (fabsf(D_edisplay_801615D0.x) < (fabsf(D_edisplay_801615D0.z * var_ft5) + var_fa1)) { if (fabsf(D_edisplay_801615D0.y) < (fabsf(D_edisplay_801615D0.z * var_ft5) + var_fa1)) { sp3C = 1.0f; - if (this->obj.id != OBJ_BOSS_309) { - if (this->obj.id != OBJ_BOSS_KA) { + if (this->obj.id != OBJ_BOSS_BO_BASE) { + if (this->obj.id != OBJ_BOSS_KA_SAUCERER) { Display_SetSecondLight(&this->obj.pos); } if (this->info.drawType != 2) { @@ -1186,7 +1187,7 @@ void Boss_Draw(Boss* this, s32 arg1) { } } D_edisplay_801615D0.y = sp3C; - if (this->obj.id == OBJ_BOSS_309) { + if (this->obj.id == OBJ_BOSS_BO_BASE) { this->vwork[30] = D_edisplay_801615D0; Display_SetSecondLight(&this->obj.pos); Matrix_SetGfxMtx(&gMasterDisp); @@ -1321,16 +1322,16 @@ void Object_DrawShadow(s32 index, Object* obj) { ActorAllRange_DrawShadow(&gActors[index]); } else { switch (obj->id) { - case OBJ_ACTOR_230: + case OBJ_ACTOR_TI_BOULDER: Matrix_Translate(gGfxMatrix, obj->pos.x, gGroundHeight + 2.0f + gActors[index].fwork[1], obj->pos.z + gPathProgress, MTXF_APPLY); break; - case OBJ_ACTOR_229: - case OBJ_ACTOR_231: + case OBJ_ACTOR_TI_DESERT_CRAWLER: + case OBJ_ACTOR_TI_BOMB: Matrix_Translate(gGfxMatrix, obj->pos.x, gGroundHeight + 2.0f + gActors[index].fwork[0], obj->pos.z + gPathProgress, MTXF_APPLY); break; - case OBJ_BOSS_KA: + case OBJ_BOSS_KA_SAUCERER: Matrix_Translate(gGfxMatrix, obj->pos.x, gGroundHeight + 2.0f + gCameraShakeY, obj->pos.z, MTXF_APPLY); break; default: @@ -1342,8 +1343,8 @@ void Object_DrawShadow(s32 index, Object* obj) { Matrix_Scale(gGfxMatrix, 1.0f, 0.0f, 1.0f, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, obj->rot.y * M_DTOR, MTXF_APPLY); } - if ((obj->id < OBJ_ACTOR_MAX) && (obj->id != OBJ_ACTOR_230) && (obj->id != OBJ_ACTOR_229) && - (obj->id != OBJ_ACTOR_231)) { + if ((obj->id < OBJ_ACTOR_MAX) && (obj->id != OBJ_ACTOR_TI_BOULDER) && + (obj->id != OBJ_ACTOR_TI_DESERT_CRAWLER) && (obj->id != OBJ_ACTOR_TI_BOMB)) { Matrix_RotateX(gGfxMatrix, obj->rot.x * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, obj->rot.z * M_DTOR, MTXF_APPLY); } @@ -1428,14 +1429,14 @@ void Scenery360_Draw(Scenery360* this) { f32 sp3C = 2000.0f; f32 sp38 = 0.5f; - if (this->obj.id == OBJ_SCENERY_156) { + if (this->obj.id == OBJ_SCENERY_UNK_156) { sp44 = 4000.0f; sp40 = -13000.0f; sp3C = 4500.0f; } else if (gCurrentLevel == LEVEL_VENOM_ANDROSS) { sp40 = -20000.0f; sp38 = 0.4f; - } else if (this->obj.id == OBJ_SCENERY_143) { + } else if (this->obj.id == OBJ_SCENERY_VS_KA_FLBASE) { sp44 = 6000.0f; sp40 = -20000.0f; sp3C = 6000.0f; @@ -1451,7 +1452,7 @@ void Scenery360_Draw(Scenery360* this) { if (fabsf(sp48.y) < (fabsf(sp48.z * sp38) + sp3C)) { if (fabsf(sp48.x) < (fabsf(sp48.z * sp38) + sp3C)) { Display_SetSecondLight(&this->obj.pos); - if (this->obj.id == OBJ_SCENERY_131) { + if (this->obj.id == OBJ_SCENERY_AND_PASSAGE) { Matrix_RotateY(gGfxMatrix, this->obj.rot.y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); @@ -1583,7 +1584,7 @@ void Object_DrawAll(s32 arg0) { } } for (i = 0, boss = gBosses; i < ARRAY_COUNT(gBosses); i++, boss++) { - if ((boss->obj.status >= OBJ_ACTIVE) && (boss->obj.id != OBJ_BOSS_310)) { + if ((boss->obj.status >= OBJ_ACTIVE) && (boss->obj.id != OBJ_BOSS_BO_BASE_SHIELD)) { if ((boss->timer_05C % 2) == 0) { RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } else { @@ -1708,7 +1709,7 @@ void Effect_DrawAll(s32 arg0) { } } for (i = 0, boss = gBosses; i < ARRAY_COUNT(gBosses); i++, boss++) { - if ((boss->obj.status >= OBJ_ACTIVE) && (boss->obj.id == OBJ_BOSS_310)) { + if ((boss->obj.status >= OBJ_ACTIVE) && (boss->obj.id == OBJ_BOSS_BO_BASE_SHIELD)) { if ((boss->timer_05C % 2) == 0) { RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } else { diff --git a/src/engine/fox_effect.c b/src/engine/fox_effect.c index b3e5d6b3..80db07cb 100644 --- a/src/engine/fox_effect.c +++ b/src/engine/fox_effect.c @@ -145,7 +145,7 @@ void BonusText_DrawAll(void) { } } -Effect* func_effect_8007783C(ObjectId objId) { +Effect* Effect_Load(ObjectId objId) { Effect* effect; s32 i; @@ -164,11 +164,11 @@ Effect* func_effect_8007783C(ObjectId objId) { return effect; } -void func_effect_800778C4(EffectFireSmoke* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, - f32 scale2) { +void Effect_FireSmoke_Setup2(EffectFireSmoke* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, + f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_EFFECT_FIRE_SMOKE; + this->obj.id = OBJ_EFFECT_FIRE_SMOKE_1; this->obj.pos.x = xPos; this->obj.pos.y = yPos; @@ -182,16 +182,18 @@ void func_effect_800778C4(EffectFireSmoke* this, f32 xPos, f32 yPos, f32 zPos, f this->unk_4C = 0; this->scale1 = 0.5f; this->obj.rot.z = RAND_FLOAT(360.0f); + Object_SetInfo(&this->info, this->obj.id); + this->unk_44 = 255; } -void func_effect_8007797C(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2) { +void Effect_FireSmoke_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_800778C4(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2); + Effect_FireSmoke_Setup2(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2); break; } } @@ -373,7 +375,7 @@ void Effect_Effect351_Draw(Effect351* this) { gSPDisplayList(gMasterDisp++, D_102A8A0); } -void Effect_Clouds_Draw(Clouds* this) { +void Effect_Clouds_Draw(EffectClouds* this) { gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, this->unk_46); Graphics_SetScaleMtx(this->scale2); Matrix_RotateX(gGfxMatrix, M_PI / 2, MTXF_APPLY); @@ -453,6 +455,7 @@ void Effect_Effect348_Draw(Effect348* this) { } void func_effect_80078AE0(Effect* this) { + /* Unimplemented */ } void Effect_Effect355_Draw(Effect355* this) { @@ -467,16 +470,17 @@ void Effect_Effect353_Draw(Effect353* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void Macbeth_Effect377_Draw(Effect377* this) { - f32 var_fv0; +void Effect_Effect377_Draw(Effect377* this) { + f32 scale; gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 160); - var_fv0 = 3.0f; + scale = 3.0f; if ((gGameFrameCount % 2) != 0) { - var_fv0 *= 1.2f; + scale *= 1.2f; } - Graphics_SetScaleMtx(this->scale2 * var_fv0); + + Graphics_SetScaleMtx(this->scale2 * scale); gSPDisplayList(gMasterDisp++, D_SX_600F8A0); } @@ -486,13 +490,13 @@ void Effect_Effect356_Draw(Effect356* this) { gSPDisplayList(gMasterDisp++, D_ME_6000A80); } -void Macbeth_Effect376_Draw(Effect376* this) { +void Effect_Effect376_Draw(Effect376* this) { gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, this->unk_4A); Graphics_SetScaleMtx(this->scale2); gSPDisplayList(gMasterDisp++, D_CO_6033000); } -void func_effect_80078D60(Effect393* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect393_Setup(Effect393* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_393; @@ -517,12 +521,12 @@ void func_effect_80078D60(Effect393* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_80078E50(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect393_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_80078D60(&gEffects[i], xPos, yPos, zPos, scale2); + Effect_Effect393_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } @@ -553,6 +557,7 @@ void Effect_Effect393_Draw(Effect393* this) { } else { RCP_SetupDL(&gMasterDisp, SETUPDL_63); } + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(gMasterDisp++, 255, 255, 0, 255); Graphics_SetScaleMtx(this->scale2 * this->scale1); @@ -560,7 +565,7 @@ void Effect_Effect393_Draw(Effect393* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void func_effect_8007905C(Effect357* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, u8 arg5) { +void Effect_Effect357_Setup(Effect357* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, u8 arg5) { Vec3f sp54; Vec3f sp48; Vec3f sp3C; @@ -618,35 +623,35 @@ void func_effect_8007905C(Effect357* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_800794CC(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect357_Spawn50(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = 50; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007905C(&gEffects[i], xPos, yPos, zPos, scale2, 0); + Effect_Effect357_Setup(&gEffects[i], xPos, yPos, zPos, scale2, 0); break; } } } // Broken pieces and debris effect -void func_effect_8007953C(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect357_Spawn80(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = (ARRAY_COUNT(gEffects) - 20) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007905C(&gEffects[i], xPos, yPos, zPos, scale2, 0); + Effect_Effect357_Setup(&gEffects[i], xPos, yPos, zPos, scale2, 0); break; } } } -void func_effect_800795AC(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect357_Spawn95(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = 0; i < 95; i++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007905C(&gEffects[i], xPos, yPos, zPos, scale2, 0); + Effect_Effect357_Setup(&gEffects[i], xPos, yPos, zPos, scale2, 0); break; } } @@ -657,7 +662,7 @@ void func_effect_80079618(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { for (i = 50; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007905C(&gEffects[i], xPos, yPos, zPos, scale2, 1); + Effect_Effect357_Setup(&gEffects[i], xPos, yPos, zPos, scale2, 1); break; } } @@ -804,7 +809,7 @@ void Effect_Effect357_Draw(Effect357* this) { case 16: gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); - gSPDisplayList(gMasterDisp++, D_SY_600F6C0); + gSPDisplayList(gMasterDisp++, aSyShip4DestroyedDL); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); break; @@ -914,7 +919,7 @@ void Effect_Effect383_Draw(Effect383* this) { } } -void func_effect_8007A4B8(Effect383* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1) { +void Effect_Effect383_Setup(Effect383* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_383; @@ -930,16 +935,16 @@ void func_effect_8007A4B8(Effect383* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007A568(f32 xPos, f32 yPos, f32 zPos, f32 scale1) { +void Effect_Effect383_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007A4B8(&gEffects[i], xPos, yPos, zPos, scale1); + Effect_Effect383_Setup(&gEffects[i], xPos, yPos, zPos, scale1); break; } } - func_effect_8007B344(xPos, yPos, zPos, 80.0f, 4); + Effect_Effect384_Spawn(xPos, yPos, zPos, 80.0f, 4); } void Effect_SetupTimedSfxAtPos(TimedSfx* this, Vec3f* pos, u32 sfxId) { @@ -961,6 +966,7 @@ void Effect_SetupTimedSfxAtPos(TimedSfx* this, Vec3f* pos, u32 sfxId) { } else { AUDIO_PLAY_SFX(sfxId, this->sfxSource, 4); } + Object_SetInfo(&this->info, this->obj.id); } @@ -991,7 +997,7 @@ bool func_effect_8007A774(Player* player, Effect* this, f32 arg2) { } } -void func_effect_8007A818(Effect359* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1, u8 arg5, u8 arg6, u16 arg7) { +void Effect_Effect359_Setup(Effect359* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1, u8 arg5, u8 arg6, u16 arg7) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_359; @@ -1011,13 +1017,13 @@ void func_effect_8007A818(Effect359* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007A900(f32 xPos, f32 yPos, f32 zPos, f32 scale1, u8 arg4, u8 arg5, u16 arg6) { +void Effect_Effect359_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1, u8 arg4, u8 arg5, u16 arg6) { s32 i; if (gCurrentLevel == LEVEL_TITANIA) { for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007A818(&gEffects[i], xPos, yPos, zPos, scale1, arg4, arg5, arg6); + Effect_Effect359_Setup(&gEffects[i], xPos, yPos, zPos, scale1, arg4, arg5, arg6); break; } } @@ -1072,7 +1078,7 @@ void Effect_Effect372_Update(Effect372* this) { } } -void func_effect_8007AC0C(Effect372* this, f32 xPos, f32 unused_posY, f32 zPos, f32 scale2, f32 scale1, f32 yRot) { +void Effect_Effect372_Setup1(Effect372* this, f32 xPos, f32 unused_posY, f32 zPos, f32 scale2, f32 scale1, f32 yRot) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_372; @@ -1090,18 +1096,18 @@ void func_effect_8007AC0C(Effect372* this, f32 xPos, f32 unused_posY, f32 zPos, Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007ACE0(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, f32 yRot) { +void Effect_Effect372_Spawn1(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, f32 yRot) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007AC0C(&gEffects[i], xPos, yPos, zPos, scale2, scale1, yRot); + Effect_Effect372_Setup1(&gEffects[i], xPos, yPos, zPos, scale2, scale1, yRot); break; } } } -void func_effect_8007AD58(Effect372* this, f32 xPos, f32 unused_posY, f32 zPos, f32 scale2, f32 scale1, f32 yRot) { +void Effect_Effect372_Setup2(Effect372* this, f32 xPos, f32 unused_posY, f32 zPos, f32 scale2, f32 scale1, f32 yRot) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_372; @@ -1118,7 +1124,7 @@ void func_effect_8007AD58(Effect372* this, f32 xPos, f32 unused_posY, f32 zPos, Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007ADF4(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1) { +void Effect_Effect372_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1) { f32 cosf; f32 sinf; f32 yRot; @@ -1130,14 +1136,14 @@ void func_effect_8007ADF4(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1) if (gEffects[j].obj.status == OBJ_FREE) { sinf = SIN_DEG(yRot) * scale1 * 20.0f; cosf = COS_DEG(yRot) * scale1 * 20.0f; - func_effect_8007AD58(&gEffects[j], xPos + sinf, yPos, zPos + cosf, scale2, scale1, yRot); + Effect_Effect372_Setup2(&gEffects[j], xPos + sinf, yPos, zPos + cosf, scale2, scale1, yRot); break; } } } } -void func_effect_8007AF30(Effect382* this, f32 xPos, f32 zPos, f32 xVel, f32 zVel, f32 scale1) { +void Effect_Effect382_Setup(Effect382* this, f32 xPos, f32 zPos, f32 xVel, f32 zVel, f32 scale1) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_382; @@ -1153,12 +1159,12 @@ void func_effect_8007AF30(Effect382* this, f32 xPos, f32 zPos, f32 xVel, f32 zVe Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007AFD0(f32 xPos, f32 zPos, f32 xVel, f32 zVel, f32 scale1) { +void Effect_Effect382_Spawn(f32 xPos, f32 zPos, f32 xVel, f32 zVel, f32 scale1) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007AF30(&gEffects[i], xPos, zPos, xVel, zVel, scale1); + Effect_Effect382_Setup(&gEffects[i], xPos, zPos, xVel, zVel, scale1); break; } } @@ -1187,7 +1193,7 @@ void Effect_Effect381_Update(Effect381* this) { } } -void func_effect_8007B180(Effect381* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1) { +void Effect_Effect381_Setup(Effect381* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_381; @@ -1202,18 +1208,18 @@ void func_effect_8007B180(Effect381* this, f32 xPos, f32 yPos, f32 zPos, f32 sca AUDIO_PLAY_SFX(NA_SE_SPLASH_LEVEL_L, this->sfxSource, 0); } -void func_effect_8007B228(f32 xPos, f32 yPos, f32 zPos, f32 scale1) { +void Effect_Effect381_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects) && gCurrentLevel == LEVEL_ZONESS; i++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007B180(&gEffects[i], xPos, yPos, zPos, scale1); + Effect_Effect381_Setup(&gEffects[i], xPos, yPos, zPos, scale1); break; } } } -void func_effect_8007B2BC(Effect384* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg5) { +void Effect_Effect384_Setup(Effect384* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg5) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_384; @@ -1225,16 +1231,17 @@ void func_effect_8007B2BC(Effect384* this, f32 xPos, f32 yPos, f32 zPos, f32 sca this->scale1 = scale1; this->unk_44 = 255; this->unk_4C = arg5; + Object_SetInfo(&this->info, this->obj.id); } -// Orange-yellowish light this simulating an explosion -void func_effect_8007B344(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg4) { +// Orange-yellowish light simulating an explosion +void Effect_Effect384_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg4) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007B2BC(&gEffects[i], xPos, yPos, zPos, scale1, arg4); + Effect_Effect384_Setup(&gEffects[i], xPos, yPos, zPos, scale1, arg4); break; } } @@ -1267,7 +1274,7 @@ void Effect_Effect384_Update(Effect384* this) { } } -void func_effect_8007B494(Effect385* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg5) { +void Effect_Effect385_Setup(Effect385* this, f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg5) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_385; @@ -1287,15 +1294,16 @@ void func_effect_8007B494(Effect385* this, f32 xPos, f32 yPos, f32 zPos, f32 sca } else { this->unk_46 = 3; } + Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007B550(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg4) { +void Effect_Effect385_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale1, s32 arg4) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007B494(&gEffects[i], xPos, yPos, zPos, scale1, arg4); + Effect_Effect385_Setup(&gEffects[i], xPos, yPos, zPos, scale1, arg4); break; } } @@ -1309,7 +1317,7 @@ void Effect_Effect385_Update(Effect385* this) { } } -void Effect_Clouds_Update(Clouds* this) { +void Effect_Clouds_Update(EffectClouds* this) { if (this->timer_50 == 0) { this->unk_46 -= 4; if (this->unk_46 <= 0) { @@ -1357,7 +1365,7 @@ void Effect_Effect347_Update(Effect347* this) { func_effect_8007A774(gPlayer, this, this->scale2 * 20.0f); } -void func_effect_8007B7E8(Effect364* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect364_Setup(Effect364* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_364; @@ -1380,12 +1388,12 @@ void func_effect_8007B7E8(Effect364* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007B8F8(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect364_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i, j; for (i = ARRAY_COUNT(gEffects) - 1, j = 0; j < ARRAY_COUNT(gEffects); i--, j++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007B7E8(&gEffects[i], xPos, yPos, zPos, scale2); + Effect_Effect364_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } @@ -1393,6 +1401,7 @@ void func_effect_8007B8F8(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { void Effect_Effect364_Update(Effect364* this) { this->scale2 += 0.07f; + this->unk_4A -= this->unk_46; if (this->unk_4A < 0) { Object_Kill(&this->obj, this->sfxSource); @@ -1425,7 +1434,7 @@ void Effect_Effect364_Draw(Effect364* this) { } } -void func_effect_8007BB14(Effect362* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect362_Setup(Effect362* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_362; @@ -1459,12 +1468,12 @@ void func_effect_8007BB14(Effect362* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007BC7C(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect362_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 20; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007BB14(&gEffects[i], xPos, yPos, zPos, scale2); + Effect_Effect362_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } @@ -1492,6 +1501,7 @@ void Effect_Effect362_Update(Effect362* this) { void Effect_Effect361_Update(Effect361* this) { this->scale2 += 0.04f; + this->unk_4A -= 2; if (this->unk_4A < 0) { Object_Kill(&this->obj, this->sfxSource); @@ -1517,8 +1527,8 @@ void Effect_Effect360_361_362_Draw(Effect* this) { gSPDisplayList(gMasterDisp++, D_BG_PLANET_2010A30); } -void func_effect_8007BF64(Effect386* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, - s32 timer50) { +void Effect_Effect386_Setup(Effect386* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, + s32 timer50) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_386; @@ -1535,19 +1545,19 @@ void func_effect_8007BF64(Effect386* this, f32 xPos, f32 yPos, f32 zPos, f32 xVe Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007BFFC(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50) { +void Effect386_Spawn1(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007BF64(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, timer50); + Effect_Effect386_Setup(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, timer50); break; } } } -void func_effect_8007C088(Effect390* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, - s32 timer50) { +void Effect_Effect390_Setup(Effect390* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, + s32 timer50) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_390; @@ -1564,23 +1574,23 @@ void func_effect_8007C088(Effect390* this, f32 xPos, f32 yPos, f32 zPos, f32 xVe Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007C120(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50) { +void Effect_Effect390_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007C088(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, timer50); + Effect_Effect390_Setup(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, timer50); break; } } } -void func_effect_8007C1AC(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50) { +void Effect386_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 timer50) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007BF64(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, timer50); + Effect_Effect386_Setup(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, timer50); Play_PlaySfxNoPlayer(gEffects[i].sfxSource, NA_SE_EXPLOSION_S); break; } @@ -1591,18 +1601,18 @@ void Effect_Effect386_Update(Effect386* this) { f32 randX; f32 randY; f32 randOther; - s32 var_v0; + s32 mask; Math_SmoothStepToF(&this->vel.x, 0.0f, 0.2f, 10.0f, 0.1f); Math_SmoothStepToF(&this->vel.y, 0.0f, 0.2f, 10.0f, 0.1f); Math_SmoothStepToF(&this->vel.z, 0.0f, 0.2f, 10.0f, 0.1f); - var_v0 = 4 - 1; + mask = 4 - 1; if (gLevelMode == LEVELMODE_ALL_RANGE) { - var_v0 = 2 - 1; + mask = 2 - 1; } - if ((this->timer_50 & var_v0) == 0) { + if ((this->timer_50 & mask) == 0) { randX = RAND_FLOAT_CENTERED(40.0f); randY = RAND_FLOAT_CENTERED(40.0f); randOther = RAND_FLOAT(0.5f) + 1.0f; @@ -1614,8 +1624,8 @@ void Effect_Effect386_Update(Effect386* this) { } } -void func_effect_8007C3B4(Effect389* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, - s32 arg8) { +void Effect_Effect389_Setup(Effect389* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, + s32 arg8) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_389; @@ -1632,16 +1642,18 @@ void func_effect_8007C3B4(Effect389* this, f32 xPos, f32 yPos, f32 zPos, f32 xVe this->unk_4A = arg8; this->unk_4C = RAND_INT(12.0f); this->obj.rot.z = RAND_FLOAT(360.0f); + Object_SetInfo(&this->info, this->obj.id); + this->unk_44 = 255; } -void func_effect_8007C484(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 arg7) { +void Effect_Effect389_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale2, s32 arg7) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i > 32; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007C3B4(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, arg7); + Effect_Effect389_Setup(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale2, arg7); break; } } @@ -1656,15 +1668,15 @@ void Effect_Effect390_Update(Effect390* this) { randX = RAND_FLOAT_CENTERED(40.0f) * this->scale2; randY = RAND_FLOAT_CENTERED(40.0f) * this->scale2; randOther = RAND_FLOAT(1.0f) + 1.0f; - func_effect_8007C484(this->obj.pos.x + randX, this->obj.pos.y + randY, this->obj.pos.z, this->vel.x, - this->vel.y, this->vel.z, this->scale2 * randOther, 0); + Effect_Effect389_Spawn(this->obj.pos.x + randX, this->obj.pos.y + randY, this->obj.pos.z, this->vel.x, + this->vel.y, this->vel.z, this->scale2 * randOther, 0); if (this->timer_50 == 0) { Object_Kill(&this->obj, this->sfxSource); } } } -void func_effect_8007C608(Effect387* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { +void Effect_Effect387_Setup(Effect387* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_387; @@ -1678,21 +1690,21 @@ void func_effect_8007C608(Effect387* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007C688(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { +void Effect_Effect387_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007C608(&gEffects[i], xPos, yPos, zPos, scale2, timer50); + Effect_Effect387_Setup(&gEffects[i], xPos, yPos, zPos, scale2, timer50); break; } } } -void func_effect_8007C6FC(Effect343* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect343_Setup(Effect343* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_EFFECT_343; + this->obj.id = OBJ_EFFECT_SMOKE_2; this->obj.pos.x = xPos; this->obj.pos.y = yPos; @@ -1700,9 +1712,11 @@ void func_effect_8007C6FC(Effect343* this, f32 xPos, f32 yPos, f32 zPos, f32 sca this->unk_48 = 3; this->vel.y = 5.0f; + if (Rand_ZeroOne() < 0.5f) { this->unk_48 = -this->unk_48; } + if ((gCurrentLevel == LEVEL_FORTUNA) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_NEXT)) { this->unk_4A = 180; } else { @@ -1718,16 +1732,17 @@ void func_effect_8007C6FC(Effect343* this, f32 xPos, f32 yPos, f32 zPos, f32 sca this->unk_4A = 255; this->scale2 = scale2 * 0.3f; } + this->scale1 = RAND_FLOAT(0.2f); Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007C85C(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect343_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects) - 20; i++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007C6FC(&gEffects[i], xPos, yPos, zPos, scale2); + Effect_Effect343_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } @@ -1748,8 +1763,8 @@ void Effect_Effect387_Update(Effect387* this) { randX = RAND_FLOAT_CENTERED(10.0f); randY = RAND_FLOAT_CENTERED(10.0f); randOther = RAND_FLOAT(0.5f) + 1.0f; - func_effect_8007C85C(this->obj.pos.x + randX, this->obj.pos.y + randY, this->obj.pos.z, - this->scale2 * randOther); + Effect_Effect343_Spawn(this->obj.pos.x + randX, this->obj.pos.y + randY, this->obj.pos.z, + this->scale2 * randOther); if (this->timer_50 == 0) { Object_Kill(&this->obj, this->sfxSource); } @@ -1791,18 +1806,22 @@ void Effect_Effect343_Draw(Effect343* this) { } } -void func_effect_8007CC00(EffectFireSmoke* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void EffectFireSmoke_Setup(EffectFireSmoke* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_EFFECT_FIRE_SMOKE; + this->obj.id = OBJ_EFFECT_FIRE_SMOKE_1; + this->obj.pos.x = xPos; this->obj.pos.y = yPos; this->obj.pos.z = zPos; + this->scale2 = scale2; this->scale1 = 0.5f; this->unk_4C = 0; this->obj.rot.z = RAND_FLOAT(360.0f); + Object_SetInfo(&this->info, this->obj.id); + if (gLevelType == LEVELTYPE_PLANET) { this->unk_44 = 230; } else { @@ -1810,10 +1829,10 @@ void func_effect_8007CC00(EffectFireSmoke* this, f32 xPos, f32 yPos, f32 zPos, f } } -void func_effect_8007CCBC(Effect340* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect340_Setup(Effect340* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_EFFECT_340; + this->obj.id = OBJ_EFFECT_FIRE_SMOKE_2; this->obj.pos.x = xPos; this->obj.pos.y = yPos; @@ -1823,7 +1842,9 @@ void func_effect_8007CCBC(Effect340* this, f32 xPos, f32 yPos, f32 zPos, f32 sca this->unk_4C = 3; this->scale1 = 0.2f; this->obj.rot.z = RAND_FLOAT(360.0f); + Object_SetInfo(&this->info, this->obj.id); + if (gLevelType == LEVELTYPE_PLANET) { this->unk_44 = 230; } else { @@ -1831,10 +1852,10 @@ void func_effect_8007CCBC(Effect340* this, f32 xPos, f32 yPos, f32 zPos, f32 sca } } -void func_effect_8007CD7C(Effect342* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { +void Effect_Effect342_Setup(Effect342* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { Effect_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_EFFECT_342; + this->obj.id = OBJ_EFFECT_SMOKE_1; this->timer_50 = timer50; this->obj.pos.x = xPos; @@ -1861,45 +1882,45 @@ void func_effect_8007CD7C(Effect342* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007CEBC(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { +void Effect_Effect342_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 timer50) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007CD7C(&gEffects[i], xPos, yPos, zPos, scale2, timer50); + Effect_Effect342_Setup(&gEffects[i], xPos, yPos, zPos, scale2, timer50); break; } } } -void func_effect_8007CF30(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_FireSmoke_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007CC00(&gEffects[i], xPos, yPos, zPos, scale2); + EffectFireSmoke_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } } -void func_effect_8007CF9C(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect340_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007CCBC(&gEffects[i], xPos, yPos, zPos, scale2); + Effect_Effect340_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } } -void func_effect_8007D008(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void EffectFireSmoke_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007CC00(&gEffects[i], xPos, yPos, zPos, scale2); + EffectFireSmoke_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } @@ -1910,24 +1931,24 @@ void func_effect_8007D074(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007CCBC(&gEffects[i], xPos, yPos, zPos, scale2); + Effect_Effect340_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } } void func_effect_8007D0E0(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { - func_effect_8007CF30(xPos, yPos, zPos, scale2); + Effect_FireSmoke_Spawn(xPos, yPos, zPos, scale2); } void func_effect_8007D10C(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { - func_effect_8007CF9C(xPos, yPos, zPos, scale2); + Effect_Effect340_Spawn(xPos, yPos, zPos, scale2); } -void func_effect_8007D138(Effect341* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect341_Setup(Effect341* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2) { Effect_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_EFFECT_341; + this->obj.id = OBJ_EFFECT_FIRE_SMOKE_3; this->obj.pos.x = xPos; this->obj.pos.y = yPos; @@ -1935,19 +1956,21 @@ void func_effect_8007D138(Effect341* this, f32 xPos, f32 yPos, f32 zPos, f32 sca this->scale2 = scale2; this->obj.rot.z = RAND_FLOAT(360.0f); + Object_SetInfo(&this->info, this->obj.id); + if (gLevelType == LEVELTYPE_PLANET) { this->unk_4C = 15; } this->unk_44 = 180; } -void func_effect_8007D1E0(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Effect_Effect341_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007D138(&gEffects[i], xPos, yPos, zPos, scale2); + Effect_Effect341_Setup(&gEffects[i], xPos, yPos, zPos, scale2); break; } } @@ -1955,15 +1978,15 @@ void func_effect_8007D1E0(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { void func_effect_8007D24C(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { if (gLevelType == LEVELTYPE_PLANET) { - func_effect_8007D1E0(xPos, yPos, zPos, scale2); - func_effect_8007CEBC(xPos, scale2 + yPos, zPos, scale2, 9); + Effect_Effect341_Spawn(xPos, yPos, zPos, scale2); + Effect_Effect342_Spawn(xPos, scale2 + yPos, zPos, scale2, 9); } else { func_effect_8007D0E0(xPos, yPos, zPos, scale2); } } void func_effect_8007D2C8(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { - func_effect_8007D008(xPos, yPos, zPos, scale2); + EffectFireSmoke_Spawn2(xPos, yPos, zPos, scale2); } void Effect_Effect339_Update(EffectFireSmoke* this) { @@ -2129,7 +2152,7 @@ void Effect_Effect341_Update(Effect341* this) { } } -void func_effect_8007D94C(Effect367* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, s32 timer50) { +void Effect_Effect367_Setup(Effect367* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, s32 timer50) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_367; @@ -2143,12 +2166,12 @@ void func_effect_8007D94C(Effect367* this, f32 xPos, f32 yPos, f32 zPos, f32 sca Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8007D9DC(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, s32 timer50) { +void Effect_Effect367_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2, f32 scale1, s32 timer50) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_8007D94C(&gEffects[i], xPos, yPos, zPos, scale2, scale1, timer50); + Effect_Effect367_Setup(&gEffects[i], xPos, yPos, zPos, scale2, scale1, timer50); break; } } @@ -2167,7 +2190,7 @@ void Effect_Effect375_Update(Effect375* this) { } } -void Macbeth_Effect375_Draw(Effect375* this) { +void Effect_Effect375_Draw(Effect375* this) { Graphics_SetScaleMtx(this->scale2); RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); gSPDisplayList(gMasterDisp++, D_CO_6004900); @@ -2193,8 +2216,7 @@ void Effect_Effect374_Update(Effect374* this) { this->scale1 = 2.5f; AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 7.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, - 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 5); if ((this->obj.pos.y < (gGroundHeight + 10.0f)) || (gGroundSurface != SURFACE_WATER)) { PlayerShot_SpawnEffect344(this->obj.pos.x, 3.0f, this->obj.pos.z, this->obj.pos.x, this->obj.pos.z, 0.0f, 0.0f, 90.0f, 5.0f, 0, 0); @@ -2212,7 +2234,9 @@ void Effect_Effect374_Update(Effect374* this) { Object_Kill(&this->obj, this->sfxSource); } } + this->obj.rot.y = 180.0f - this->obj.rot.y; + if ((fabsf(gPlayer[0].trueZpos - this->obj.pos.z) < 40.0f) && (fabsf(gPlayer[0].pos.x - this->obj.pos.x) < 80.0f)) { if ((this->obj.pos.y < gPlayer[0].pos.y) && @@ -2224,7 +2248,7 @@ void Effect_Effect374_Update(Effect374* this) { } } -void Macbeth_Effect374_Draw(Effect374* this) { +void Effect_Effect374_Draw(Effect374* this) { switch (this->state) { case 0: Graphics_SetScaleMtx(this->scale2); @@ -2263,8 +2287,8 @@ void Effect_Effect344_Update(Effect344* this) { } for (i = 0; i < ARRAY_COUNT(gEffects); i++) { - if ((gEffects[i].obj.status == OBJ_ACTIVE) && (gEffects[i].obj.id == OBJ_EFFECT_344) && (i != this->index) && - (fabsf(this->obj.pos.z - gEffects[i].obj.pos.z) < 20.0f) && + if ((gEffects[i].obj.status == OBJ_ACTIVE) && (gEffects[i].obj.id == OBJ_EFFECT_EXPLOSION_MARK_1) && + (i != this->index) && (fabsf(this->obj.pos.z - gEffects[i].obj.pos.z) < 20.0f) && (fabsf(this->obj.pos.x - gEffects[i].obj.pos.x) < 20.0f) && (fabsf(this->obj.pos.y - gEffects[i].obj.pos.y) < 20.0f)) { Object_Kill(&this->obj, this->sfxSource); @@ -2489,6 +2513,7 @@ void func_effect_8007EBB8(Effect* this, ObjectId objId, f32 xPos, f32 yPos, f32 this->vel.z = zVel; this->scale2 = scale2; + if (objId == OBJ_EFFECT_355) { AUDIO_PLAY_SFX(NA_SE_EN_ENERGY_BEAM, this->sfxSource, 4); } else { @@ -2536,6 +2561,7 @@ void func_effect_8007ED54(Effect* this, ObjectId objId, f32 xPos, f32 yPos, f32 this->unk_60.z = unkZ; this->scale2 = scale2; + if (this->obj.id != OBJ_EFFECT_380) { AUDIO_PLAY_SFX(NA_SE_EN_SHOT_0, this->sfxSource, 4); } @@ -2728,11 +2754,11 @@ void Effect_Effect348_Update(Effect348* this) { } if (gCurrentLevel == LEVEL_AQUAS) { - func_effect_8007B8F8(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 20.0f); + Effect_Effect364_Spawn(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 20.0f); } else if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 20.0f); + Effect_Effect362_Spawn(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 20.0f); } else if (gCurrentLevel == LEVEL_TITANIA) { - func_effect_8007A900(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 10.0f, 255, 15, 0); + Effect_Effect359_Spawn(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 10.0f, 255, 15, 0); } } } @@ -2775,9 +2801,9 @@ void Effect_Effect349_Update(Effect349* this) { } if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 8.0f); + Effect_Effect362_Spawn(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 8.0f); } else if (gCurrentLevel == LEVEL_TITANIA) { - func_effect_8007A900(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 8.0f, 255, 15, 0); + Effect_Effect359_Spawn(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 8.0f, 255, 15, 0); } } } @@ -2809,7 +2835,7 @@ void Effect_Effect350_Update(Effect350* this) { sin = __sinf(temp) * this->scale2 * 16.0f; cos = __cosf(temp) * this->scale2 * 16.0f; yPos = gGroundHeight + 10.0f; - func_effect_8007BC7C(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 12.0f); + Effect_Effect362_Spawn(this->obj.pos.x + sin, yPos, this->obj.pos.z + cos, 12.0f); } } } @@ -2933,6 +2959,7 @@ void Effect_Effect377_Update(Effect377* this) { void Effect_Effect356_Update(Effect356* this) { Effect_Effect353_354_Update(this); this->obj.rot.z += 10.0f; + this->scale2 = 3.0f; if ((gGameFrameCount % 2) != 0) { this->scale2 = 3.5f; @@ -3492,14 +3519,14 @@ void Effect_Effect395_Update(Effect395* this) { } if ((gGameFrameCount % 2) == 0) { - func_effect_8007C484(RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.x, - RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.y, - RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, RAND_FLOAT(0.05f) + 0.05f, 0); + Effect_Effect389_Spawn(RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.x, + RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.y, + RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, RAND_FLOAT(0.05f) + 0.05f, 0); } if (Object_CheckCollision(this->index, &this->obj.pos, &velocity, 1) != 0) { - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f, 7); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f, 7); Object_Kill(&this->obj, this->sfxSource); } sp84 = 50.0f; @@ -3558,13 +3585,13 @@ void Effect_Effect395_Update(Effect395* this) { } if ((gGameFrameCount % 4) == 0) { - func_effect_8007C120((RAND_FLOAT_CENTERED(this->scale2) * 50.0f) + this->obj.pos.x, - (RAND_FLOAT_CENTERED(this->scale2) * 50.0f) + this->obj.pos.y, - (RAND_FLOAT_CENTERED(this->scale2) * 50.0f) + this->obj.pos.z, this->vel.x, - this->vel.y, this->vel.z, RAND_FLOAT(0.03f) + 0.05f, 10); + Effect_Effect390_Spawn((RAND_FLOAT_CENTERED(this->scale2) * 50.0f) + this->obj.pos.x, + (RAND_FLOAT_CENTERED(this->scale2) * 50.0f) + this->obj.pos.y, + (RAND_FLOAT_CENTERED(this->scale2) * 50.0f) + this->obj.pos.z, this->vel.x, + this->vel.y, this->vel.z, RAND_FLOAT(0.03f) + 0.05f, 10); } if (Object_CheckCollision(this->index, &this->obj.pos, &velocity, 1) != 0) { - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f, 7); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f, 7); Object_Kill(&this->obj, this->sfxSource); } sp84 = 50.0f; @@ -3643,7 +3670,7 @@ void Effect_Effect395_Update(Effect395* this) { if ((Play_CheckDynaFloorCollision(&posYOut, &unusedOut, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z)) || (this->timer_50 == 0)) { - func_effect_8007B228(this->obj.pos.x, posYOut, this->obj.pos.z, this->scale2); + Effect_Effect381_Spawn(this->obj.pos.x, posYOut, this->obj.pos.z, this->scale2); Object_Kill(&this->obj, this->sfxSource); } break; @@ -3966,7 +3993,7 @@ void Effect_Effect395_Draw(Effect395* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void func_effect_800836C0(Effect391* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 scale) { +void Effect_Effect391_Setup(Effect391* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 scale) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_391; @@ -3987,12 +4014,12 @@ void func_effect_800836C0(Effect391* this, f32 xPos, f32 yPos, f32 zPos, f32 arg Object_SetInfo(&this->info, this->obj.id); } -void func_effect_8008377C(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 scale) { +void Effect_Effect391_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 scale) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - func_effect_800836C0(&gEffects[i], xPos, yPos, zPos, arg3, scale); + Effect_Effect391_Setup(&gEffects[i], xPos, yPos, zPos, arg3, scale); break; } } @@ -4063,8 +4090,8 @@ void Effect_Effect391_Draw(Effect391* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void func_effect_80083C70(Effect399* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 arg7, - s32 arg8) { +void Effect_Effect399_Setup(Effect399* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 arg7, + s32 arg8) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_399; @@ -4132,7 +4159,7 @@ void func_effect_80083D2C(f32 xPos, f32 yPos, f32 zPos, f32 srcZ) { for (i = 0; i < 6; i++) { for (j = 0; j < ARRAY_COUNT(gEffects); j++) { if (gEffects[j].obj.status == OBJ_FREE) { - func_effect_80083C70(&gEffects[j], xPos, yPos, zPos, dest.x, dest.y, dest.z, i * 60.0f, i); + Effect_Effect399_Setup(&gEffects[j], xPos, yPos, zPos, dest.x, dest.y, dest.z, i * 60.0f, i); if (i == 0) { AUDIO_PLAY_SFX(NA_SE_EN_MARBLE_BEAM, gEffects[j].sfxSource, 4); } diff --git a/src/engine/fox_enmy.c b/src/engine/fox_enmy.c index 8273a1bf..2ee7b60d 100644 --- a/src/engine/fox_enmy.c +++ b/src/engine/fox_enmy.c @@ -116,6 +116,7 @@ bool func_enmy_80060FE4(Vec3f* arg0, f32 arg1) { return false; } +// Unused bool func_enmy_80061148(Vec3f* arg0, f32 arg1) { Vec3f src; Vec3f dest; @@ -278,7 +279,7 @@ void Item_Load(Item* this, ObjectInit* objInit) { Object_SetInfo(&this->info, this->obj.id); } -void func_enmy_80061958(Effect346* this, f32 xPos, f32 yPos, f32 zPos) { +void Effect_Effect346_Setup(Effect346* this, f32 xPos, f32 yPos, f32 zPos) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_346; @@ -317,12 +318,13 @@ void func_enmy_80061A4C(void) { if (gPathVelZ < 0.0f) { z = -gPathProgress + 500.0f; } - func_enmy_80061958(&gEffects[i], x, y, z); + Effect_Effect346_Setup(&gEffects[i], x, y, z); break; } } } +// For Aquas void func_enmy_80061B68(void) { s32 i; f32 x; @@ -341,12 +343,13 @@ void func_enmy_80061B68(void) { if (gPathVelZ < 0.0f) { z = -gPathProgress + 1000.0f; } - func_enmy_80061958(&gEffects[i], x, y, z); + Effect_Effect346_Setup(&gEffects[i], x, y, z); break; } } } +// Unused void func_enmy_80061CD0(void) { s32 i; f32 x; @@ -361,22 +364,25 @@ void func_enmy_80061CD0(void) { if (gPathVelZ < 0.0f) { z = -gPathProgress + 1000.0f; } - func_enmy_80061958(&gEffects[i], x, y, z); + Effect_Effect346_Setup(&gEffects[i], x, y, z); break; } } } +// Unused void func_enmy_80061E48(Actor* this, f32 xPos, f32 yPos, f32 zPos) { Actor_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_ACTOR_181; + + this->obj.id = OBJ_ACTOR_ME_METEOR_1; if (Rand_ZeroOne() < 0.5f) { - this->obj.id = OBJ_ACTOR_186; + this->obj.id = OBJ_ACTOR_ME_LASER_CANNON_1; } if (Rand_ZeroOne() < 0.5f) { - this->obj.id = OBJ_ACTOR_182; + this->obj.id = OBJ_ACTOR_ME_METEOR_2; } + this->obj.pos.x = xPos; this->obj.pos.y = yPos; this->obj.pos.z = zPos; @@ -403,17 +409,21 @@ void ActorEvent_Load(ActorEvent* this, ObjectInit* objInit, s32 index) { this->aiType = objInit->id - ACTOR_EVENT_ID; Object_SetInfo(&this->info, this->obj.id); + this->info.cullDistance = 3000.0f; this->fwork[25] = 20000.0f; this->iwork[1] = gPrevEventActorIndex; this->iwork[10] = gActors[gPrevEventActorIndex].aiType; this->fwork[22] = gArwingSpeed; + Matrix_RotateZ(gCalcMatrix, -gFormationInitRot.z * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -gFormationInitRot.x * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -gFormationInitRot.y * M_DTOR, MTXF_APPLY); + src.x = this->obj.pos.x - gFormationInitPos.x; src.y = this->obj.pos.y - gFormationInitPos.y; src.z = this->obj.pos.z - gFormationInitPos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &this->vwork[28]); this->iwork[9] = gFormationLeaderIndex; gPrevEventActorIndex = index; @@ -442,7 +452,7 @@ void Object_Load(ObjectInit* objInit, f32 xMax, f32 xMin, f32 yMax, f32 yMin) { } } if ((objInit->id >= OBJ_ACTOR_START) && (objInit->id < OBJ_ACTOR_MAX)) { - if ((objInit->id == OBJ_ACTOR_267) || (objInit->id == OBJ_ACTOR_254)) { + if ((objInit->id == OBJ_ACTOR_AQ_JELLYFISH) || (objInit->id == OBJ_ACTOR_ZO_SEARCHLIGHT)) { for (i = ARRAY_COUNT(gActors) - 1; i >= 0; i--) { if (gActors[i].obj.status == OBJ_FREE) { Actor_Load(&gActors[i], objInit); @@ -481,7 +491,7 @@ void Object_Load(ObjectInit* objInit, f32 xMax, f32 xMin, f32 yMax, f32 yMin) { } } } - if (objInit->id >= OBJ_EFFECT_START && objInit->id <= OBJ_ID_MAX) { + if ((objInit->id >= OBJ_EFFECT_START) && (objInit->id <= OBJ_ID_MAX)) { switch (objInit->id) { case OBJ_UNK_403: D_MA_801BA1E8 = 99; @@ -496,10 +506,10 @@ void Object_Load(ObjectInit* objInit, f32 xMax, f32 xMin, f32 yMax, f32 yMin) { D_Andross_801A7F78 = objInit->rot.z * 0.1f; D_Andross_801A7F60 = -(f32) objInit->rot.x; break; - case OBJ_UNK_400: + case OBJ_ENV_SMALL_ROCKS_ENABLE: gDrawSmallRocks++; break; - case OBJ_UNK_401: + case OBJ_ENV_SMALL_ROCKS_DISABLE: if (gDrawSmallRocks > 0) { gDrawSmallRocks--; } @@ -552,6 +562,7 @@ void Object_LoadLevelObjects(void) { } else { gLevelObjects = SEGMENTED_TO_VIRTUAL(gLevelObjectInits[gCurrentLevel]); } + if (gGroundClipMode == 0) { for (j = 0; j < gDrawSmallRocks; j++) { if (gCurrentLevel == LEVEL_AQUAS) { @@ -561,6 +572,7 @@ void Object_LoadLevelObjects(void) { } } } + if (gCurrentLevel == LEVEL_METEO) { yMax = xMax = 10000.0f; yMin = xMin = -10000.0f; @@ -581,13 +593,14 @@ void Object_LoadLevelObjects(void) { if ((gPlayer[0].pathChangeTimer != 0) && (gPlayer[0].pathChangeYaw > 0.0f)) { xMin = -10000.0f; } + gLastPathChange = 0; for (i = 0, objInit = &gLevelObjects[gObjectLoadIndex]; i < 10000; i++, gObjectLoadIndex++, objInit++) { if (objInit->id <= OBJ_INVALID) { break; } - if (((gPathProgress <= objInit->zPos1) && (objInit->zPos1 <= gPathProgress + 200.0f))) { + if ((gPathProgress <= objInit->zPos1) && (objInit->zPos1 <= gPathProgress + 200.0f)) { if ((gCurrentLevel == LEVEL_VENOM_1) && (objInit->id >= ACTOR_EVENT_ID)) { if (((objInit->rot.y < 180.0f) && (objInit->xPos < gPlayer[0].xPath)) || ((objInit->rot.y > 180.0f) && (gPlayer[0].xPath < objInit->xPos))) { @@ -680,9 +693,11 @@ bool Object_CheckHitboxCollision(Vec3f* pos, f32* hitboxData, Object* obj, f32 x count = *hitboxData; if (count != 0) { hitboxData++; + for (i = 0; i < count; i++, hitboxData += 6) { rotate = 0.0f; hitRot.x = hitRot.y = hitRot.z = 0.0f; + if (*hitboxData >= HITBOX_SHADOW) { return false; } @@ -693,6 +708,7 @@ bool Object_CheckHitboxCollision(Vec3f* pos, f32* hitboxData, Object* obj, f32 x hitRot.z = hitboxData[3]; hitboxData += 4; } + if ((obj->rot.y == 0.0f) && (obj->rot.z == 0.0f) && (obj->rot.x == 0.0f) && (rotate == 0.0f)) { hitPos.x = pos->x; hitPos.y = pos->y; @@ -701,22 +717,28 @@ bool Object_CheckHitboxCollision(Vec3f* pos, f32* hitboxData, Object* obj, f32 x Matrix_RotateZ(gCalcMatrix, -hitRot.z * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -hitRot.x * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -hitRot.y * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, -obj->rot.z * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, -obj->rot.x * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -obj->rot.y * M_DTOR, MTXF_APPLY); + if ((xRot != 0.0f) || (yRot != 0.0f) || (zRot != 0.0f)) { Matrix_RotateZ(gCalcMatrix, -zRot * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, -xRot * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -yRot * M_DTOR, MTXF_APPLY); } + sp80.x = pos->x - obj->pos.x; sp80.y = pos->y - obj->pos.y; sp80.z = pos->z - obj->pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp80, &sp74); + hitPos.x = obj->pos.x + sp74.x; hitPos.y = obj->pos.y + sp74.y; hitPos.z = obj->pos.z + sp74.z; } + hitbox = (Hitbox*) hitboxData; if (((hitbox->z.size + 20.0f) > fabsf(hitbox->z.offset + obj->pos.z - hitPos.z)) && ((hitbox->x.size + 20.0f) > fabsf(hitbox->x.offset + obj->pos.x - hitPos.x)) && @@ -752,32 +774,37 @@ bool Object_CheckPolyCollision(Vec3f* pos, Vec3f* vel, ObjectId objId, Object* o sp74.x = pos->x - obj->pos.x; sp74.z = pos->z - obj->pos.z; - if (((fabsf(sp74.x) < 1100.0f) && (fabsf(sp74.z) < 1100.0f)) || (objId == OBJ_ACTOR_180)) { + + if (((fabsf(sp74.x) < 1100.0f) && (fabsf(sp74.z) < 1100.0f)) || (objId == OBJ_ACTOR_ME_MOLAR_ROCK)) { sp74.y = pos->y - obj->pos.y; + Matrix_RotateY(gCalcMatrix, -obj->rot.y * M_DTOR, MTXF_NEW); Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp74, &sp68); + relPos.x = obj->pos.x + sp68.x; relPos.y = obj->pos.y + sp68.y; relPos.z = obj->pos.z + sp68.z; + objPos.x = obj->pos.x; objPos.y = obj->pos.y; objPos.z = obj->pos.z; - if ((objId == OBJ_ACTOR_180) || (objId == OBJ_SCENERY_149) || (objId == OBJ_SCENERY_150) || - (objId == OBJ_BOSS_FO) || (objId == OBJ_BOSS_SZ_GREAT_FOX) || (objId == OBJ_BOSS_VE2) || - (objId == OBJ_BOSS_309) || (objId == OBJ_SCENERY_ME_TUNNEL)) { + + if ((objId == OBJ_ACTOR_ME_MOLAR_ROCK) || (objId == OBJ_SCENERY_FO_MOUNTAIN_2) || + (objId == OBJ_SCENERY_FO_MOUNTAIN_3) || (objId == OBJ_BOSS_FO_BASE) || (objId == OBJ_BOSS_SZ_GREAT_FOX) || + (objId == OBJ_BOSS_VE2_BASE) || (objId == OBJ_BOSS_BO_BASE) || (objId == OBJ_SCENERY_ME_TUNNEL)) { colId = COL1_0; - if (objId == OBJ_BOSS_VE2) { + if (objId == OBJ_BOSS_VE2_BASE) { colId = COL1_9; } if (objId == OBJ_SCENERY_ME_TUNNEL) { colId = COL1_1; - } else if (objId == OBJ_BOSS_FO) { + } else if (objId == OBJ_BOSS_FO_BASE) { colId = COL1_4; - } else if (objId == OBJ_BOSS_309) { + } else if (objId == OBJ_BOSS_BO_BASE) { colId = COL1_7; - } else if (objId == OBJ_SCENERY_149) { + } else if (objId == OBJ_SCENERY_FO_MOUNTAIN_2) { colId = COL1_5; - } else if (objId == OBJ_SCENERY_150) { + } else if (objId == OBJ_SCENERY_FO_MOUNTAIN_3) { colId = COL1_6; } else if (objId == OBJ_BOSS_SZ_GREAT_FOX) { colId = COL1_8; @@ -793,17 +820,18 @@ bool Object_CheckPolyCollision(Vec3f* pos, Vec3f* vel, ObjectId objId, Object* o if (objId == OBJ_SCENERY_CO_BUMP_3) { colId = COL2_3; } - if (objId == OBJ_SCENERY_140) { + if (objId == OBJ_SCENERY_VS_PYRAMID_1) { colId = COL2_4; } - if (objId == OBJ_SCENERY_141) { + if (objId == OBJ_SCENERY_VS_PYRAMID_2) { colId = COL2_6; } - if (objId == OBJ_SCENERY_117) { + if (objId == OBJ_SCENERY_AQ_CORAL_REEF_1) { colId = COL2_14; } else if ((objId == OBJ_SCENERY_CO_BUMP_4) || (objId == OBJ_SCENERY_CO_BUMP_5)) { colId = COL2_1; } + if (func_col2_800A3690(&relPos, &objPos, colId, &sp44)) { return true; } @@ -826,9 +854,12 @@ s32 Object_CheckCollision(s32 index, Vec3f* pos, Vec3f* vel, s32 mode) { for (i = 0; i < 200; i++, scenery360++) { if (scenery360->obj.status == OBJ_ACTIVE) { if ((scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3) || - (scenery360->obj.id == OBJ_SCENERY_117) || (scenery360->obj.id == OBJ_SCENERY_141) || - (scenery360->obj.id == OBJ_SCENERY_150) || (scenery360->obj.id == OBJ_SCENERY_149) || - (scenery360->obj.id == OBJ_SCENERY_148) || (scenery360->obj.id == OBJ_SCENERY_140)) { + (scenery360->obj.id == OBJ_SCENERY_AQ_CORAL_REEF_1) || + (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_3) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_1) || + (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_1)) { if (Object_CheckPolyCollision(pos, vel, scenery360->obj.id, &scenery360->obj)) { return 999; } @@ -867,7 +898,7 @@ s32 Object_CheckCollision(s32 index, Vec3f* pos, Vec3f* vel, s32 mode) { Object_CheckSingleHitbox(pos, sprite->info.hitbox, &sprite->obj.pos)) { if ((sprite->obj.id == OBJ_SPRITE_FO_POLE) || (sprite->obj.id == OBJ_SPRITE_CO_TREE) || (sprite->obj.id == OBJ_SPRITE_CO_TREE)) { - sprite->destroy = 1; + sprite->destroy = true; } return 0; } @@ -878,12 +909,12 @@ s32 Object_CheckCollision(s32 index, Vec3f* pos, Vec3f* vel, s32 mode) { boss = &gBosses[0]; for (i = 0; i < ARRAY_COUNT(gBosses); i++, boss++) { if (boss->obj.status == OBJ_ACTIVE) { - if ((boss->obj.id == OBJ_BOSS_FO) || (boss->obj.id == OBJ_BOSS_VE2) || - (boss->obj.id == OBJ_BOSS_SZ_GREAT_FOX) || (boss->obj.id == OBJ_BOSS_309)) { + if ((boss->obj.id == OBJ_BOSS_FO_BASE) || (boss->obj.id == OBJ_BOSS_VE2_BASE) || + (boss->obj.id == OBJ_BOSS_SZ_GREAT_FOX) || (boss->obj.id == OBJ_BOSS_BO_BASE)) { if (Object_CheckPolyCollision(pos, vel, boss->obj.id, &boss->obj)) { return 2; } - } else if (boss->obj.id == OBJ_BOSS_310) { + } else if (boss->obj.id == OBJ_BOSS_BO_BASE_SHIELD) { temp.x = fabsf(boss->obj.pos.x - pos->x) * (5.0f / 6.0f); temp.y = fabsf(boss->obj.pos.y - pos->y) * 2; temp.z = fabsf(boss->obj.pos.z - pos->z) * (5.0f / 6.0f); @@ -892,7 +923,7 @@ s32 Object_CheckCollision(s32 index, Vec3f* pos, Vec3f* vel, s32 mode) { return 2; } } else { - if (boss->obj.id == OBJ_BOSS_KA) { + if (boss->obj.id == OBJ_BOSS_KA_SAUCERER) { temp.x = fabsf(boss->obj.pos.x - pos->x); temp.y = fabsf(boss->obj.pos.y - 300.0f - pos->y) * 7.42f; temp.z = fabsf(boss->obj.pos.z - pos->z); @@ -916,7 +947,7 @@ s32 Object_CheckCollision(s32 index, Vec3f* pos, Vec3f* vel, s32 mode) { if ((actor->obj.status >= OBJ_ACTIVE) && (fabsf(pos->x - actor->obj.pos.x) < 1000.0f) && (fabsf(pos->z - actor->obj.pos.z) < 1500.0f) && (index != i) && (actor->info.unk_16 != 2) && !((actor->obj.id == OBJ_ACTOR_ALLRANGE) && (actor->aiType <= AI360_PEPPY)) && (actor->timer_0C2 == 0)) { - if (actor->obj.id == OBJ_ACTOR_180) { + if (actor->obj.id == OBJ_ACTOR_ME_MOLAR_ROCK) { if (Object_CheckPolyCollision(pos, vel, actor->obj.id, &actor->obj)) { return 2; } @@ -953,14 +984,14 @@ s32 Object_CheckCollision(s32 index, Vec3f* pos, Vec3f* vel, s32 mode) { return 0; } -void func_enmy_80063CAC(Scenery* this) { +void Actor_CoRadar_Init(Scenery* this) { s32 i; for (i = 0; i < ARRAY_COUNT(gActors); i++) { if (gActors[i].obj.status == OBJ_FREE) { Actor_Initialize(&gActors[i]); gActors[i].obj.status = OBJ_INIT; - gActors[i].obj.id = OBJ_ACTOR_193; + gActors[i].obj.id = OBJ_ACTOR_CO_RADAR; gActors[i].obj.pos.x = this->obj.pos.x; gActors[i].obj.pos.y = this->obj.pos.y; gActors[i].obj.pos.z = this->obj.pos.z; @@ -971,7 +1002,7 @@ void func_enmy_80063CAC(Scenery* this) { } } -void func_enmy_80063D58(CoDoors* this) { +void Scenery_Corneria_Init(CoDoors* this) { s32 i; this->obj.pos.y = gGroundHeight; @@ -1001,7 +1032,7 @@ void func_enmy_80063D58(CoDoors* this) { } } -void func_enmy_80063E5C(Scenery* this, f32* hitboxData) { +void Scenery_CoStoneArch_Init(CoStoneArch* this, f32* hitboxData) { s32 i; Item* item; @@ -1021,7 +1052,9 @@ void func_enmy_80063E5C(Scenery* this, f32* hitboxData) { } } +// Unused void func_enmy_80063F4C(s32 arg0) { + /* Unimplemented */ } void func_enmy_80063F58(Item* item) { @@ -1033,10 +1066,10 @@ void func_enmy_80063F74(Item* item) { } void Object_Init(s32 index, ObjectId objId) { - s32 var_a0; - s32 var_a2; - f32 sp54; - f32 sp50; + s32 i; + s32 j; + f32 xRot; + f32 zRot; f32 sp4C; PosRot* var_v0; @@ -1044,7 +1077,7 @@ void Object_Init(s32 index, ObjectId objId) { case OBJ_SPRITE_CO_SMOKE: Effect_SpawnTimedSfxAtPos(&gSprites[index].obj.pos, NA_SE_OB_SMOKE); break; - case OBJ_ACTOR_234: + case OBJ_ACTOR_TI_GREAT_FOX: AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, gActors[index].sfxSource, 0); break; case OBJ_SCENERY_CO_WATERFALL: @@ -1053,52 +1086,52 @@ void Object_Init(s32 index, ObjectId objId) { case OBJ_ACTOR_TEAM_BOSS: ActorTeamBoss_Init(&gActors[index]); break; - case OBJ_ACTOR_235: + case OBJ_ACTOR_ZO_BIRD: gActors[index].fwork[10] = fabsf(Math_ModF(gActors[index].obj.pos.x, 100.0f)); break; - case OBJ_ACTOR_247: - Zoness_Actor247_Init(&gActors[index]); + case OBJ_ACTOR_ZO_BARRIER: + Zoness_ZoBarrier_Init(&gActors[index]); break; case OBJ_EFFECT_368: if (gCurrentLevel == LEVEL_TITANIA) { - Ground_801B6E20(gEffects[index].obj.pos.x, gEffects[index].obj.pos.z + gPathProgress, &sp54, &sp4C, - &sp50); + Ground_801B6E20(gEffects[index].obj.pos.x, gEffects[index].obj.pos.z + gPathProgress, &xRot, &sp4C, + &zRot); gEffects[index].obj.pos.y = sp4C + 3.0f; - gEffects[index].obj.rot.x = RAD_TO_DEG(sp54); - gEffects[index].obj.rot.z = RAD_TO_DEG(sp50); + gEffects[index].obj.rot.x = RAD_TO_DEG(xRot); + gEffects[index].obj.rot.z = RAD_TO_DEG(zRot); } else if (gCurrentLevel == LEVEL_MACBETH) { gEffects[index].obj.status = OBJ_FREE; } break; case OBJ_SCENERY_TI_RIB_0: - func_enmy_80063E5C(&gScenery[index], D_TI_6006940); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_6006940); break; case OBJ_SCENERY_TI_RIB_1: - func_enmy_80063E5C(&gScenery[index], D_TI_600695C); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_600695C); break; case OBJ_SCENERY_TI_RIB_2: - func_enmy_80063E5C(&gScenery[index], D_TI_6006978); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_6006978); break; case OBJ_SCENERY_TI_RIB_3: - func_enmy_80063E5C(&gScenery[index], D_TI_6006994); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_6006994); break; case OBJ_SCENERY_TI_RIB_4: - func_enmy_80063E5C(&gScenery[index], D_TI_60069B0); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_60069B0); break; case OBJ_SCENERY_TI_RIB_5: - func_enmy_80063E5C(&gScenery[index], D_TI_60069CC); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_60069CC); break; case OBJ_SCENERY_TI_RIB_6: - func_enmy_80063E5C(&gScenery[index], D_TI_60069E8); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_60069E8); break; case OBJ_SCENERY_TI_RIB_7: - func_enmy_80063E5C(&gScenery[index], D_TI_6006A04); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_6006A04); break; case OBJ_SCENERY_TI_RIB_8: - func_enmy_80063E5C(&gScenery[index], D_TI_6006A20); + Scenery_CoStoneArch_Init(&gScenery[index], D_TI_6006A20); break; - case OBJ_SCENERY_CO_RADAR: - func_enmy_80063CAC(&gScenery[index]); + case OBJ_SCENERY_CO_RADAR_DISH: + Actor_CoRadar_Init(&gScenery[index]); break; case OBJ_ITEM_CHECKPOINT: if (gSavedObjectLoadIndex != 0) { @@ -1128,7 +1161,7 @@ void Object_Init(s32 index, ObjectId objId) { } break; case OBJ_SCENERY_CO_STONE_ARCH: - func_enmy_80063E5C(&gScenery[index], gItemRingCheckHitbox); + Scenery_CoStoneArch_Init(&gScenery[index], gItemRingCheckHitbox); /* fallthrough */ case OBJ_SCENERY_CO_HIGHWAY_1: case OBJ_SCENERY_CO_HIGHWAY_2: @@ -1136,46 +1169,46 @@ void Object_Init(s32 index, ObjectId objId) { case OBJ_SCENERY_CO_ARCH_2: case OBJ_SCENERY_CO_ARCH_3: case OBJ_SCENERY_CO_DOORS: - func_enmy_80063D58(&gScenery[index]); + Scenery_Corneria_Init(&gScenery[index]); break; - case OBJ_ACTOR_187: + case OBJ_ACTOR_ME_LASER_CANNON_2: gActors[index].fwork[0] = gActors[index].obj.pos.x; gActors[index].fwork[1] = gActors[index].obj.pos.y; gActors[index].obj.rot.z = gActors[index].obj.rot.x; gActors[index].obj.rot.x = 0.0f; break; - case OBJ_ACTOR_182: - case OBJ_ACTOR_186: + case OBJ_ACTOR_ME_METEOR_2: + case OBJ_ACTOR_ME_LASER_CANNON_1: gActors[index].unk_046 = gFogRed; gActors[index].unk_048 = gFogNear; gActors[index].obj.rot.x = RAND_FLOAT(360.0f); gActors[index].obj.rot.y = RAND_FLOAT(360.0f); break; - case OBJ_ACTOR_181: + case OBJ_ACTOR_ME_METEOR_1: gActors[index].obj.rot.x = RAND_FLOAT(360.0f); gActors[index].obj.rot.y = RAND_FLOAT(360.0f); gActors[index].health = 200; break; - case OBJ_ACTOR_202: + case OBJ_ACTOR_ME_HOPBOT: gActors[index].health = 30; break; - case OBJ_ACTOR_252: + case OBJ_ACTOR_ZO_RADARBUOY: if (gPlayer[0].pos.z < gActors[index].obj.pos.z) { Object_Kill(&gActors[index].obj, gActors[index].sfxSource); } break; - case OBJ_ACTOR_239: - gActors[index].iwork[0] = gZOSnakeWaypointCount; - gZOSnakeWaypointCount++; + case OBJ_ACTOR_ZO_DODORA_WP_COUNT: + gActors[index].iwork[0] = gZoDodoraWaypointCount; + gZoDodoraWaypointCount++; break; - case OBJ_ACTOR_236: - gZOSnakeWaypointCount = 0; + case OBJ_ACTOR_ZO_DODORA: + gZoDodoraWaypointCount = 0; gActors[index].rot_0F4.x = gActors[index].obj.rot.x; gActors[index].rot_0F4.y = gActors[index].obj.rot.y; gActors[index].obj.rot.x = gActors[index].obj.rot.y = 0.0f; gActors[index].fwork[2] = gActors[index].obj.pos.y; - var_v0 = gZOSnakePosRots; - for (var_a0 = 0; var_a0 < 200; var_a0++, var_v0++) { + var_v0 = gZoDodoraPosRots; + for (i = 0; i < 200; i++, var_v0++) { var_v0->pos.x = gActors[index].obj.pos.x; var_v0->pos.y = gActors[index].obj.pos.y; var_v0->pos.z = gActors[index].obj.pos.z; @@ -1184,15 +1217,15 @@ void Object_Init(s32 index, ObjectId objId) { var_v0->rot.z = gActors[index].obj.rot.z; } break; - case OBJ_ACTOR_194: + case OBJ_ACTOR_ME_MORA: gActors[index].unk_046 = 100; - for (var_a0 = 0; var_a0 < 2; var_a0++) { - if (gActor194Status[var_a0] == 0) { - gActor194Status[var_a0] = 1; - gActors[index].unk_046 = var_a0; - for (var_a2 = 0; var_a2 < 100; var_a2++) { - gActor194yPos[var_a0][var_a2] = gActors[index].obj.pos.y; - gActor194zPos[var_a0][var_a2] = gActors[index].obj.pos.z; + for (i = 0; i < 2; i++) { + if (gMeMoraStatus[i] == 0) { + gMeMoraStatus[i] = 1; + gActors[index].unk_046 = i; + for (j = 0; j < 100; j++) { + gMeMoraYpos[i][j] = gActors[index].obj.pos.y; + gMeMoraZpos[i][j] = gActors[index].obj.pos.z; } break; } @@ -1205,163 +1238,163 @@ void Object_Init(s32 index, ObjectId objId) { case OBJ_MISSILE_SEEK_PLAYER: AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_ENGINE, gActors[index].sfxSource, 4); break; - case OBJ_ACTOR_192: + case OBJ_ACTOR_CO_SKIBOT: gActors[index].drawShadow = true; break; - case OBJ_BOSS_320: - Andross_Boss320_Init(&gBosses[index]); + case OBJ_BOSS_AND_ANDROSS: + Andross_AndAndross_Init(&gBosses[index]); break; - case OBJ_BOSS_KA: - Katina_BossSetup(&gBosses[index]); + case OBJ_BOSS_KA_SAUCERER: + Katina_KaSaucerer_Init(&gBosses[index]); break; - case OBJ_BOSS_SY: - SectorY_Boss314_Init(&gBosses[index]); + case OBJ_BOSS_SY_SHOGUN: + SectorY_SyShogun_Init(&gBosses[index]); break; - case OBJ_ACTOR_205: - case OBJ_ACTOR_206: - case OBJ_ACTOR_208: - case OBJ_ACTOR_209: - case OBJ_ACTOR_210: - case OBJ_ACTOR_211: - case OBJ_ACTOR_212: - case OBJ_ACTOR_213: - Macbeth_80199F8C(&gActors[index]); + case OBJ_ACTOR_MA_LOCOMOTIVE: + case OBJ_ACTOR_MA_TRAIN_CAR_1: + case OBJ_ACTOR_MA_TRAIN_CAR_2: + case OBJ_ACTOR_MA_TRAIN_CAR_3: + case OBJ_ACTOR_MA_TRAIN_CAR_4: + case OBJ_ACTOR_MA_TRAIN_CAR_5: + case OBJ_ACTOR_MA_TRAIN_CAR_6: + case OBJ_ACTOR_MA_TRAIN_CAR_7: + Macbeth_Train_Init(&gActors[index]); break; case OBJ_ACTOR_207: - Macbeth_801A7D98(&gActors[index]); + Macbeth_Actor207_Init(&gActors[index]); break; - case OBJ_ACTOR_214: - Macbeth_801A3E70(&gActors[index]); + case OBJ_ACTOR_MA_RAILROAD_SWITCH: + Macbeth_MaMaRailroadSwitch_Init(&gActors[index]); break; - case OBJ_ACTOR_215: - Macbeth_801A4660(&gActors[index]); + case OBJ_ACTOR_MA_BOULDER: + Macbeth_MaBoulder_Init(&gActors[index]); break; - case OBJ_ACTOR_223: - Macbeth_801A4AF8(&gActors[index]); + case OBJ_ACTOR_MA_RAILWAY_SIGNAL: + Macbeth_MaRailwaySignal_Init(&gActors[index]); break; - case OBJ_ACTOR_216: - case OBJ_ACTOR_217: - Macbeth_801A5E2C(&gActors[index]); + case OBJ_ACTOR_MA_HORIZONTAL_LOCK_BAR: + case OBJ_ACTOR_MA_VERTICAL_LOCK_BAR: + Macbeth_LockBars_Init(&gActors[index]); break; - case OBJ_ACTOR_218: - Macbeth_801A6134(&gActors[index]); + case OBJ_ACTOR_MA_BARRIER: + Macbeth_MaBarrier_Init(&gActors[index]); break; - case OBJ_SCENERY_65: - Macbeth_801A65E0(&gScenery[index]); + case OBJ_SCENERY_MA_PROXIMITY_LIGHT: + Macbeth_MaProximityLight_Init(&gScenery[index]); break; case OBJ_ACTOR_CO_GARUDA_2: case OBJ_ACTOR_CO_GARUDA_3: - Corneria_IBeam_Init(&gActors[index]); + Corneria_CoIBeam_Init(&gActors[index]); /* fallthrough */ case OBJ_ACTOR_CO_GARUDA_1: gActors[index].health = 24; AUDIO_PLAY_SFX(NA_SE_EN_TANK_RB_ENGINE, gActors[index].sfxSource, 4); break; - case OBJ_BOSS_297: - Meteo_Boss297_Init(&gBosses[index]); + case OBJ_BOSS_ME_CRUSHER: + Meteo_MeCrusher_Init(&gBosses[index]); break; - case OBJ_BOSS_299: + case OBJ_BOSS_UNK_299: Boss299_Init(&gBosses[index]); break; - case OBJ_BOSS_300: + case OBJ_BOSS_UNK_300: Boss300_Init(&gBosses[index]); break; case OBJ_BOSS_CO_GRANGA: Corneria_Granga_Init(&gBosses[index]); break; case OBJ_BOSS_CO_CARRIER: - Corneria_Carrier_Init(&gBosses[index]); + Corneria_CoCarrier_Init(&gBosses[index]); break; - case OBJ_BOSS_A6: - Area6_BossA6_Init(&gBosses[index]); + case OBJ_BOSS_A6_GORGON: + Area6_A6Gorgon_Init(&gBosses[index]); break; - case OBJ_ACTOR_231: - Titania_Actor231_Init(&gActors[index]); + case OBJ_ACTOR_TI_BOMB: + Titania_TiBomb_Init(&gActors[index]); break; - case OBJ_ACTOR_232: - Titania_8018ADC4(&gActors[index]); + case OBJ_ACTOR_TI_RASCO: + Titania_TiRasco_Init(&gActors[index]); break; - case OBJ_ACTOR_233: - Titania_80189B80(&gActors[index]); + case OBJ_ACTOR_TI_FEKUDA: + Titania_TiFekuda_Init(&gActors[index]); break; - case OBJ_ACTOR_229: - Titania_8018BFB0(&gActors[index]); + case OBJ_ACTOR_TI_DESERT_CRAWLER: + Titania_TiDesertCrawler_Init(&gActors[index]); break; - case OBJ_ACTOR_227: - Titania_8018E3CC(&gActors[index]); + case OBJ_ACTOR_TI_DELPHOR: + Titania_TiDelphor_Init(&gActors[index]); break; - case OBJ_ACTOR_228: - Titania_8018E5E8(&gActors[index]); + case OBJ_ACTOR_TI_DELPHOR_HEAD: + Titania_TiDelphorHead_Init(&gActors[index]); break; case OBJ_SPRITE_TI_CACTUS: - Titania_8018EFF0(&gSprites[index]); + Titania_TiCactus_Init(&gSprites[index]); break; - case OBJ_BOSS_TI: - Titania_Boss306_Init(&gBosses[index]); + case OBJ_BOSS_TI_GORAS: + Titania_TiGoras_Init(&gBosses[index]); break; - case OBJ_ACTOR_240: - Zoness_801915A4(&gActors[index]); + case OBJ_ACTOR_ZO_Z_GULL: + Zoness_ZoEnergyBall_Init(&gActors[index]); break; - case OBJ_ACTOR_241: - Zoness_80191BB8(&gActors[index]); + case OBJ_ACTOR_ZO_ENERGY_BALL: + Zoness_ZoEnergyBall_Init2(&gActors[index]); break; - case OBJ_BOSS_ZO: - Zoness_BossZo_Init(&gBosses[index]); + case OBJ_BOSS_ZO_SARUMARINE: + Zoness_ZoSarumarine_Init(&gBosses[index]); break; - case OBJ_ACTOR_250: - Zoness_8019B1F0(&gActors[index]); + case OBJ_ACTOR_ZO_CARGOSHIP: + Zoness_ZoCargoShip_Init(&gActors[index]); break; - case OBJ_ACTOR_251: - Zoness_8019B810(&gActors[index]); + case OBJ_ACTOR_ZO_CONTAINER: + Zoness_ZoContainer_Init(&gActors[index]); break; - case OBJ_ACTOR_253: - Zoness_8019C200(&gActors[index]); + case OBJ_ACTOR_ZO_SUPPLYCRANE: + Zoness_ZoSupplyCrane_Init(&gActors[index]); break; case OBJ_ACTOR_255: - Aquas_801AD688(&gActors[index]); + Aquas_Actor255_Init(&gActors[index]); break; case OBJ_ACTOR_256: - Aquas_801AE3AC(&gActors[index]); + Aquas_Actor256_Init(&gActors[index]); break; case OBJ_ACTOR_257: - Aquas_801AF9FC(&gActors[index]); + Aquas_Actor257_Init(&gActors[index]); break; - case OBJ_BOSS_AQ: - Aquas_BossAq_Init(&gBosses[index]); + case OBJ_BOSS_AQ_BACOON: + Aquas_AqBacoon_Init(&gBosses[index]); break; - case OBJ_ACTOR_259: - Aquas_801B6344(&gActors[index]); + case OBJ_ACTOR_AQ_ANGLERFISH: + Aquas_AqAnglerFish_Init(&gActors[index]); break; - case OBJ_ACTOR_262: - Aquas_801B6E54(&gActors[index]); + case OBJ_ACTOR_AQ_SPINDLYFISH: + Aquas_AqSpindlyFish_Init(&gActors[index]); break; - case OBJ_ACTOR_260: - Aquas_801B7AF0(&gActors[index]); + case OBJ_ACTOR_AQ_GAROA: + Aquas_AqGaroa_Init(&gActors[index]); break; - case OBJ_SCENERY_57: - Titania_8018F0D8(&gScenery[index]); + case OBJ_SCENERY_TI_PILLAR: + Titania_TiPillar_Init(&gScenery[index]); break; - case OBJ_BOSS_VE1: - Venom1_Boss319_Init(&gBosses[index]); + case OBJ_BOSS_VE1_GOLEMECH: + Venom1_Ve1Golemech_Init(&gBosses[index]); break; - case OBJ_ACTOR_280: - Venom1_8019250C(&gActors[index]); + case OBJ_ACTOR_VE1_PILLAR_1: + Venom1_Ve1Pillar1_Init(&gActors[index]); break; - case OBJ_ACTOR_281: - case OBJ_ACTOR_282: - Venom1_80192CB0(&gActors[index]); + case OBJ_ACTOR_VE1_PILLAR_2: + case OBJ_ACTOR_VE1_PILLAR_3: + Venom1_Ve1Pillar2_3_Init(&gActors[index]); break; - case OBJ_ACTOR_283: - Venom1_80192EA4(&gActors[index]); + case OBJ_ACTOR_VE1_PILLAR_4: + Venom1_Ve1Pillar4_Init(&gActors[index]); break; - case OBJ_ACTOR_284: - Venom1_801933B4(&gActors[index]); + case OBJ_ACTOR_VE1_MONKEY_STATUE: + Venom1_Ve1MonkeyStatue_Init(&gActors[index]); break; - case OBJ_ACTOR_265: - Aquas_801BA57C(&gActors[index]); + case OBJ_ACTOR_AQ_BOULDER: + Venom1_AqBoulder_Init(&gActors[index]); break; - case OBJ_ACTOR_267: - Aquas_801BB26C(&gActors[index]); + case OBJ_ACTOR_AQ_JELLYFISH: + Venom1_AqJellyfish_Init(&gActors[index]); break; } } @@ -1380,10 +1413,10 @@ void Scenery_UpdateTitaniaBones(Scenery* this) { } } -void func_enmy_80065380(Actor182* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6) { +void func_enmy_80065380(MeMeteor2* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6) { Actor_Initialize(this); this->obj.status = OBJ_ACTIVE; - this->obj.id = OBJ_ACTOR_182; + this->obj.id = OBJ_ACTOR_ME_METEOR_2; this->timer_0BC = RAND_INT(10.0f) + 10; this->timer_0C2 = 30; this->vel.x = arg4; @@ -1413,23 +1446,24 @@ void func_enmy_8006546C(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 arg4, f32 ar void func_enmy_800654E4(Object* obj) { f32 temp_fs0; f32 temp_fs1; - s32 var_s1; + s32 i; func_effect_8007D2C8(obj->pos.x, obj->pos.y, obj->pos.z, 12.0f); - for (var_s1 = 0; var_s1 < 4; var_s1++) { + + for (i = 0; i < 4; i++) { func_enmy_8006546C(obj->pos.x, obj->pos.y, obj->pos.z, RAND_FLOAT_CENTERED(40.0f), RAND_FLOAT_CENTERED(40.0f), RAND_FLOAT(-20.0f)); } } -void func_enmy_800655C8(Actor190* this, f32 xPos, f32 yPos, f32 zPos, s32 arg4) { +void func_enmy_800655C8(ActorMissileSeekTeam* this, f32 xPos, f32 yPos, f32 zPos, s32 eventType) { Actor_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_MISSILE_SEEK_TEAM; this->obj.pos.x = xPos; this->obj.pos.y = yPos; this->obj.pos.z = zPos; - this->eventType = arg4; + this->eventType = eventType; this->timer_0BE = 50; if (this->eventType == 1) { this->timer_0BE = 30; @@ -1449,8 +1483,7 @@ void func_enmy_8006566C(f32 xPos, f32 yPos, f32 zPos, s32 arg3) { } } -// Actors 190 & 191 -void Actors190_191_Update(Actor* this) { +void ActorMissileSeek_Update(Actor* this) { s32 i; s32 j; f32 spD4; @@ -1747,7 +1780,7 @@ void Actor_Despawn(Actor* this) { } } -void Actor192_Update(Actor192* this) { +void ActorSkibot_Update(ActorSkibot* this) { this->gravity = 0.4f; if (this->obj.pos.y <= gGroundHeight + 130.0f) { @@ -1815,7 +1848,7 @@ void Actor192_Update(Actor192* this) { } } -void func_enmy_8006684C(Actor192* this) { +void func_enmy_8006684C(ActorSkibot* this) { s32 pad; if (this->timer_0BE != 0) { @@ -1835,13 +1868,13 @@ void func_enmy_8006684C(Actor192* this) { this->obj.rot.x += 11.0f; this->obj.rot.y += 7.0f; if (this->vel.y < -3.0f) { - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 7.0f, 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 7.0f, 5); this->timer_0BE = 3; } } } -void Actor193_Update(Actor193* this) { +void ActorRadar_Update(CoRadar* this) { if (this->timer_0BC != 0) { if (this->timer_0BC == 1) { Object_Kill(&this->obj, this->sfxSource); @@ -1850,14 +1883,14 @@ void Actor193_Update(Actor193* this) { this->obj.rot.y += 5.0f; if (this->dmgType != DMG_NONE) { func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y + 130.0f, this->obj.pos.z, 8.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 130.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 130.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 5); this->timer_0BC = 4; Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_EXPLOSION_S); } } } -void Actor180_Update(Actor180* this) { +void MeMolarRock_Update(MeMolarRock* this) { } void func_enmy_80066A8C(CoBuilding9* this) { @@ -2015,7 +2048,7 @@ void Item_SpinPickup(Item* this) { src.y = RAND_FLOAT_CENTERED(120.0f); src.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - func_effect_80078E50(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, 3.0f); + Effect_Effect393_Spawn(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, 3.0f); } this->obj.rot.y += this->unk_50; this->obj.rot.y = Math_ModF(this->obj.rot.y, 360.0f); @@ -2092,7 +2125,7 @@ void ActorSupplies_Update(ActorSupplies* this) { D_enmy_800CFEC4[i].z + this->obj.pos.z, D_enmy_800CFF0C[i].y + this->obj.rot.y, D_enmy_800CFF0C[i].x + this->obj.rot.x, RAND_FLOAT_CENTERED(40.0f), RAND_FLOAT(10.0f) + 10.0f, RAND_FLOAT_CENTERED(40.0f)); - func_effect_800794CC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.6f); + Effect_Effect357_Spawn50(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.6f); } Object_Kill(&this->obj, this->sfxSource); } @@ -2316,8 +2349,8 @@ void ItemSupplyRing_Update(Item* this) { src.y = this->width * 100.0f; src.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - func_effect_80078E50(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, - 3.5f); + Effect_Effect393_Spawn(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, + 3.5f); } break; } @@ -2568,43 +2601,43 @@ void Object_Dying(s32 index, ObjectId objId) { } break; - case OBJ_ACTOR_202: + case OBJ_ACTOR_ME_HOPBOT: func_enmy2_800763A4(&gActors[index]); break; - case OBJ_ACTOR_194: - Actor194_Dying(&gActors[index]); + case OBJ_ACTOR_ME_MORA: + MeMora_Dying(&gActors[index]); break; - case OBJ_ACTOR_186: + case OBJ_ACTOR_ME_LASER_CANNON_1: Meteo_80187B08(&gActors[index]); break; - case OBJ_ACTOR_181: + case OBJ_ACTOR_ME_METEOR_1: Object_Kill(&gActors[index].obj, gActors[index].sfxSource); func_effect_8007D2C8(gActors[index].obj.pos.x, gActors[index].obj.pos.y, gActors[index].obj.pos.z, 20.0f); break; - case OBJ_ACTOR_182: + case OBJ_ACTOR_ME_METEOR_2: Object_Kill(&gActors[index].obj, gActors[index].sfxSource); func_effect_8007D2C8(gActors[index].obj.pos.x, gActors[index].obj.pos.y, gActors[index].obj.pos.z, 10.0f); Actor_Despawn(&gActors[index]); break; - case OBJ_ACTOR_192: + case OBJ_ACTOR_CO_SKIBOT: func_enmy_8006684C(&gActors[index]); break; - case OBJ_BOSS_TI: + case OBJ_BOSS_TI_GORAS: Titania_801990DC(&gBosses[index]); break; - case OBJ_ACTOR_232: - Titania_8018B720(&gActors[index]); + case OBJ_ACTOR_TI_RASCO: + Titania_TiRasco_Dying(&gActors[index]); break; - case OBJ_BOSS_VE1: - Venom1_80198594(&gBosses[index]); + case OBJ_BOSS_VE1_GOLEMECH: + Venom1_Ve1Golemech_Dying(&gBosses[index]); break; } } @@ -2623,7 +2656,7 @@ void Actor_Move(Actor* this) { } var_fv0 = 4000.0f; - if ((this->obj.id == OBJ_ACTOR_236) || (gCurrentLevel == LEVEL_MACBETH) || + if ((this->obj.id == OBJ_ACTOR_ZO_DODORA) || (gCurrentLevel == LEVEL_MACBETH) || ((this->obj.id == OBJ_ACTOR_EVENT) && (this->eventType == EVID_56))) { var_fv0 = 8000.0f; } else if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ENTER_WARP_ZONE) { @@ -2637,27 +2670,27 @@ void Actor_Move(Actor* this) { Object_Kill(&this->obj, this->sfxSource); switch (this->obj.id) { - case OBJ_ACTOR_236: - gZOSnakeWaypointCount = 0; + case OBJ_ACTOR_ZO_DODORA: + gZoDodoraWaypointCount = 0; break; - case OBJ_ACTOR_229: + case OBJ_ACTOR_TI_DESERT_CRAWLER: Titania_8018E3B0(this); break; - case OBJ_ACTOR_194: - gActor194Status[this->unk_046] = 0; + case OBJ_ACTOR_ME_MORA: + gMeMoraStatus[this->unk_046] = 0; break; case OBJ_ACTOR_EVENT: if ((this->eventType >= EVID_200) && (this->eventType < EVID_300)) { - gActor194Status[this->unk_046] = 0; + gMeMoraStatus[this->unk_046] = 0; } else if ((this->eventType == EVID_SX_WARP_GATE) && (this->unk_046 != 2)) { gRingPassCount = -1; } break; - case OBJ_ACTOR_252: + case OBJ_ACTOR_ZO_RADARBUOY: gMissedZoSearchlight = true; break; } @@ -2791,7 +2824,7 @@ void Actor_Update(Actor* this) { case OBJ_INIT: this->obj.status = OBJ_ACTIVE; Object_Init(this->index, this->obj.id); - if (this->obj.id != OBJ_ACTOR_252) { + if (this->obj.id != OBJ_ACTOR_ZO_RADARBUOY) { Actor_Move(this); } break; @@ -3046,7 +3079,7 @@ void Object_Update(void) { } } else if (gVersusMode) { for (i = 0, scenery360 = gScenery360; i < 200; i++, scenery360++) { - if ((scenery360->obj.status != OBJ_FREE) && (scenery360->obj.id == OBJ_SCENERY_146)) { + if ((scenery360->obj.status != OBJ_FREE) && (scenery360->obj.id == OBJ_SCENERY_VS_SPACE_JUNK_3)) { if ((i % 2) != 0) { scenery360->obj.rot.y += 0.5f; } else { diff --git a/src/engine/fox_enmy2.c b/src/engine/fox_enmy2.c index f647430c..ee920c7e 100644 --- a/src/engine/fox_enmy2.c +++ b/src/engine/fox_enmy2.c @@ -70,9 +70,11 @@ void func_enmy2_8006A900(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { } void Actor237_Update(Actor237* this) { + /* Unimplemented */ } void Actor237_Draw(Actor237* this) { + /* Unimplemented */ } void Obj54_8006A984(Effect* this, f32 xPos, f32 yPos, f32 zPos) { @@ -120,17 +122,18 @@ void CoWaterfall_Update(CoWaterfall* this) { } } -bool Actor201_8006ABA4(Actor201* this) { +bool MeteoBall_IsCloseToPlayer(MeteoBall* this) { if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 700.0f) && (fabsf(this->obj.pos.y - gPlayer[0].pos.y) < 700.0f)) { return true; } return false; } -void Actor201_Update(Actor201* this) { +// Unused Meteo Ball +void MeteoBall_Update(MeteoBall* this) { f32 sp2C; - if (Actor201_8006ABA4(this) && (this->timer_0BC == 0)) { + if (MeteoBall_IsCloseToPlayer(this) && (this->timer_0BC == 0)) { Effect_EnemyLaser(OBJ_EFFECT_ENEMY_LASER_1, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, gEnemyShotSpeed); this->timer_0BC = 20; } @@ -141,7 +144,7 @@ void Actor201_Update(Actor201* this) { sqrtf(SQ(gPlayer[0].cam.eye.z - sp2C) + SQ(gPlayer[0].cam.eye.x - this->obj.pos.x)))); } -void Actor202_Update(Actor202* this) { +void ActorHopBot_Update(ActorHopBot* this) { bool sp34; this->gravity = 1.5f; @@ -213,8 +216,8 @@ void Actor202_Update(Actor202* this) { this->health -= 10; if ((this->health <= 0) || (this->dmgType >= DMG_EXPLOSION)) { func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y + 180.0f, this->obj.pos.z, 10.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 180.0f, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 8.0f, 30); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 180.0f, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 8.0f, 30); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); gHitCount += this->info.bonus; @@ -223,12 +226,12 @@ void Actor202_Update(Actor202* this) { this->dmgType = DMG_NONE; this->timer_0C6 = 20; AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); - func_effect_8007D1E0(this->obj.pos.x, this->obj.pos.y + 180.0f, this->obj.pos.z, 5.0f); + Effect_Effect341_Spawn(this->obj.pos.x, this->obj.pos.y + 180.0f, this->obj.pos.z, 5.0f); } } } -void Actor194_Update(Actor194* this) { +void MeMora_Update(MeMora* this) { } static s16 D_800CFF94[16] = { @@ -240,9 +243,9 @@ static f32 D_800CFFC4[16] = { }; static Gfx* D_800D0004[3] = { D_ENMY_SPACE_4000170, D_ENMY_SPACE_40084D0, D_ENMY_SPACE_400A630 }; -void Actor194_Dying(Actor194* this) { +void MeMora_Dying(MeMora* this) { Vec3f sp34; - s32 temp_hi; + s32 index; this->counter_04E++; @@ -250,12 +253,12 @@ void Actor194_Dying(Actor194* this) { this->counter_04E = 0; } - gActor194xPos[this->unk_046][this->counter_04E] = this->obj.pos.x; - gActor194yPos[this->unk_046][this->counter_04E] = this->obj.pos.y; - gActor194zPos[this->unk_046][this->counter_04E] = this->obj.pos.z; - gActor194xRot[this->unk_046][this->counter_04E] = this->obj.rot.x; - gActor194yRot[this->unk_046][this->counter_04E] = this->obj.rot.y; - gActor194zRot[this->unk_046][this->counter_04E] = this->obj.rot.z; + gMeMoraXpos[this->unk_046][this->counter_04E] = this->obj.pos.x; + gMeMoraYpos[this->unk_046][this->counter_04E] = this->obj.pos.y; + gMeMoraZpos[this->unk_046][this->counter_04E] = this->obj.pos.z; + gMeMoraXrot[this->unk_046][this->counter_04E] = this->obj.rot.x; + gMeMoraYrot[this->unk_046][this->counter_04E] = this->obj.rot.y; + gMeMoraZrot[this->unk_046][this->counter_04E] = this->obj.rot.z; this->obj.rot.x -= 10.0f; this->obj.rot.y += 3.0f; @@ -268,13 +271,13 @@ void Actor194_Dying(Actor194* this) { this->vel.z = sp34.z; if ((this->timer_0BC == 0) && ((gGameFrameCount % 4) == 0)) { - temp_hi = (D_800CFF94[this->unk_04A] + this->counter_04E) % 100; + index = (D_800CFF94[this->unk_04A] + this->counter_04E) % 100; if (this->unk_04A == 0) { - func_effect_8007D2C8(gActor194xPos[this->unk_046][temp_hi], gActor194yPos[this->unk_046][temp_hi], - gActor194zPos[this->unk_046][temp_hi], 7.0f); + func_effect_8007D2C8(gMeMoraXpos[this->unk_046][index], gMeMoraYpos[this->unk_046][index], + gMeMoraZpos[this->unk_046][index], 7.0f); } else { - func_effect_8007D2C8(gActor194xPos[this->unk_046][temp_hi], gActor194yPos[this->unk_046][temp_hi], - gActor194zPos[this->unk_046][temp_hi], 4.0f); + func_effect_8007D2C8(gMeMoraXpos[this->unk_046][index], gMeMoraYpos[this->unk_046][index], + gMeMoraZpos[this->unk_046][index], 4.0f); } AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); @@ -282,15 +285,15 @@ void Actor194_Dying(Actor194* this) { if (this->unk_04A > 15) { Object_Kill(&this->obj, this->sfxSource); - gActor194Status[this->unk_046] = 0; + gMeMoraStatus[this->unk_046] = 0; gHitCount += this->info.bonus; D_ctx_80177850 = 15; } } } -void Actor194_8006B46C(Actor194* this, f32 xTrans, f32 yTrans, f32 zTrans, f32 xRot, f32 yRot, f32 zRot, u8 arg7, - f32 scale, s32 arg9) { +void MeMora_8006B46C(MeMora* this, f32 xTrans, f32 yTrans, f32 zTrans, f32 xRot, f32 yRot, f32 zRot, u8 arg7, f32 scale, + s32 arg9) { Vec3f sp34 = { 0.0f, 0.0f, 0.0f }; Matrix_Push(&gGfxMatrix); @@ -328,16 +331,15 @@ void Actor194_8006B46C(Actor194* this, f32 xTrans, f32 yTrans, f32 zTrans, f32 x RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } -void Actor194_Draw(Actor194* this) { - s16 var_s0; - s16 temp_hi; +void MeMora_Draw(MeMora* this) { + s16 i; + s16 j; - for (var_s0 = this->unk_04A; var_s0 < 16; var_s0++) { - temp_hi = (D_800CFF94[var_s0] + this->counter_04E) % 100; - Actor194_8006B46C(this, gActor194xPos[this->unk_046][temp_hi], gActor194yPos[this->unk_046][temp_hi], - gActor194zPos[this->unk_046][temp_hi], gActor194xRot[this->unk_046][temp_hi], - gActor194yRot[this->unk_046][temp_hi], gActor194zRot[this->unk_046][temp_hi], - D_800CFFB4[var_s0], D_800CFFC4[var_s0], this->timer_0C6 % 2U); + for (i = this->unk_04A; i < ARRAY_COUNT(D_800CFF94); i++) { + j = (D_800CFF94[i] + this->counter_04E) % 100; + MeMora_8006B46C(this, gMeMoraXpos[this->unk_046][j], gMeMoraYpos[this->unk_046][j], + gMeMoraZpos[this->unk_046][j], gMeMoraXrot[this->unk_046][j], gMeMoraYrot[this->unk_046][j], + gMeMoraZrot[this->unk_046][j], D_800CFFB4[i], D_800CFFC4[i], this->timer_0C6 % 2U); } } @@ -394,7 +396,7 @@ void func_enmy2_8006BB1C(f32 xPos, f32 yPos, f32 zPos) { } } -void Actor196_Update(Actor196* this) { +void ActorMoleMissile_Update(ActorMoleMissile* this) { Vec3f sp44; switch (this->state) { @@ -481,7 +483,7 @@ void Actor196_Update(Actor196* this) { } if ((this->dmgType != DMG_NONE) && (this->animFrame != 0)) { - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, this->vel.y, 0.0f, 3.0f, 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, this->vel.y, 0.0f, 3.0f, 5); Object_Kill(&this->obj, this->sfxSource); this->itemDrop = DROP_SILVER_RING; Actor_Despawn(this); @@ -489,8 +491,8 @@ void Actor196_Update(Actor196* this) { this->dmgType = DMG_NONE; } -static f32 D_800D001C[5] = { 0.0f, 30.0f, 60.0f, -60.0f, -30.0f }; // could be in-function void func_enmy2_8006BF7C(f32 xPos, f32 yPos, f32 zPos) { + static f32 D_800D001C[5] = { 0.0f, 30.0f, 60.0f, -60.0f, -30.0f }; s32 i; for (i = 0; i < ARRAY_COUNT(D_800D001C); i++) { @@ -664,7 +666,7 @@ void ActorDebris_Update(ActorDebris* this) { if (((this->timer_0BC == 0) || (Object_CheckCollision(this->index, &this->obj.pos, &D_800D0030, 1) != 0) || (this->obj.pos.y < (gGroundHeight + 10.0f))) && (this->timer_0BE == 0)) { - func_effect_8007B8F8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 50.0f, this->scale * 10.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 50.0f, this->scale * 10.0f); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } @@ -675,7 +677,7 @@ void ActorDebris_Update(ActorDebris* this) { if (((this->timer_0BC == 0) || (Object_CheckCollision(this->index, &this->obj.pos, &D_800D0030, 1) != 0) || (this->obj.pos.y < (gGroundHeight + 10.0f))) && (this->timer_0BE == 0)) { - func_effect_8007B8F8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 50.0f, this->scale * 10.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 50.0f, this->scale * 10.0f); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } @@ -696,7 +698,7 @@ void ActorDebris_Update(ActorDebris* this) { if (((this->timer_0BC == 0) || (Object_CheckCollision(this->index, &this->obj.pos, &D_800D0030, 1) != 0) || (this->obj.pos.y < (gGroundHeight + 10.0f))) && (this->timer_0BE == 0)) { - func_effect_8007B8F8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 50.0f, this->scale * 10.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 50.0f, this->scale * 10.0f); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } @@ -706,8 +708,8 @@ void ActorDebris_Update(ActorDebris* this) { if (((this->timer_0BC == 0) || (Object_CheckCollision(this->index, &this->obj.pos, &D_800D0030, 1) != 0) || (this->obj.pos.y < (gGroundHeight + 10.0f))) && (this->timer_0BE == 0)) { - func_effect_8007B8F8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 70.0f, this->scale * 20.0f); - func_effect_8007B8F8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 70.0f, this->scale * 20.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 70.0f, this->scale * 20.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 70.0f, this->scale * 20.0f); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } @@ -792,7 +794,7 @@ void ActorDebris_Update(ActorDebris* this) { Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } if (Play_CheckDynaFloorCollision(&sp44, &sp40, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z)) { - func_effect_8007B228(this->obj.pos.x, sp44, this->obj.pos.z, 2.0f); + Effect_Effect381_Spawn(this->obj.pos.x, sp44, this->obj.pos.z, 2.0f); Object_Kill(&this->obj, this->sfxSource); } } else if (this->state >= 10) { @@ -803,8 +805,8 @@ void ActorDebris_Update(ActorDebris* this) { (Object_CheckCollision(this->index, &this->obj.pos, &D_800D0030, 1) != 0) || (this->obj.pos.y < (gGroundHeight + 10.0f))) && (this->timer_0BE == 0)) { - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, this->scale * 1.5f, 4); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, this->scale * 1.5f, 4); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } @@ -831,12 +833,12 @@ void ActorDebris_Update(ActorDebris* this) { if ((this->state != 2) && (this->state != 4)) { func_enmy2_8006BF7C(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z); } else if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.x, this->obj.pos.y, - this->obj.pos.z, 1.0f); - func_effect_8007BC7C(RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.x, this->obj.pos.y, - this->obj.pos.z, 1.0f); - func_effect_8007BC7C(RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.x, this->obj.pos.y, - this->obj.pos.z, 1.0f); + Effect_Effect362_Spawn(RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.x, this->obj.pos.y, + this->obj.pos.z, 1.0f); + Effect_Effect362_Spawn(RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.x, this->obj.pos.y, + this->obj.pos.z, 1.0f); + Effect_Effect362_Spawn(RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.x, this->obj.pos.y, + this->obj.pos.z, 1.0f); } } @@ -909,7 +911,7 @@ void func_enmy2_8006D0F4(Actor* this) { } } -void MeteoTunnel_Update(MeteoTunnel* this) { +void MeteoTunnel_Update(MeTunnel* this) { this->obj.rot.z += 1.0f; } @@ -952,7 +954,7 @@ static EventActorInfo sEventActorInfo[108] = { /* 10 */ { D_ENMY_SPACE_400BD20, gCubeHitbox200, 2.0f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 11 */ { D_ENMY_SPACE_4001310, gCubeHitbox100, 1.5f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ALIEN_FLY, 0, 1.0f, 1 }, /* 12 */ { D_ENMY_SPACE_400B390, gCubeHitbox100, 2.0f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, - /* 13 */ { D_ME_6018C00, gCubeHitbox100, 2.5f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, + /* 13 */ { aMeMeteor1DL, gCubeHitbox100, 2.5f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 14 */ { D_ME_601F2A0, gCubeHitbox400, 7.0f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 15 */ { D_ENMY_SPACE_400AAE0, gCubeHitbox100, 1.5f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 16 */ { D_ENMY_SPACE_4000650, gCubeHitbox100, 1.5f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ALIEN_FLY, 0, 1.0f, 1 }, @@ -980,23 +982,23 @@ static EventActorInfo sEventActorInfo[108] = { /* 38 */ { NULL, D_SX_603238C, 1.0f, 500.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 39 */ { D_SX_6020D20, D_SX_60328CC, -1.0f, 2100.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 40 */ { NULL, gNoHitbox, 1.0f, 100.0f, 3001.0f, 2, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 41 */ { D_SY_60097E0, D_SY_6034478, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 42 */ { D_SY_601D730, D_SY_603450C, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 41 */ { aSyShip1DL, aSyShip1Hitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 42 */ { aSyShip2DL, aSyShip2Hitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 43 */ { NULL, gCubeHitbox100, 1.0f, 20000.0f, 3000.0f, 1, 0, EISFX_ARWING_ENGINE_FG, 0, 0.0f, 0 }, - /* 44 */ { D_SY_60102C0, D_SY_6034588, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 44 */ { aSyShip3DL, aSyShip3Hitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 45 */ { D_ME_6017B60, gCubeHitbox200, -1.0f, 300.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 1.0f, 1 }, /* 46 */ { D_ZO_6004D00, gCubeHitbox200, 1.0f, 100.0f, 3000.0f, 1, 0, EISFX_EN_SHIP_ENGINE_S, 0, 1.0f, 1 }, /* 47 */ { D_ME_601A880, gCubeHitbox100, -1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 48 */ { NULL, D_SY_603405C, 0.3f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, - /* 49 */ { NULL, D_SY_603405C, 0.3f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, - /* 50 */ { NULL, D_SY_603405C, 0.3f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, + /* 48 */ { NULL, aSyRobotHitbox, 0.3f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, + /* 49 */ { NULL, aSyRobotHitbox, 0.3f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, + /* 50 */ { NULL, aSyRobotHitbox, 0.3f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 51 */ { D_SY_6015D60, D_SY_6034124, 2.0f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 52 */ { NULL, D_ZO_602C1A0, -1.0f, 1000.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 53 */ { D_SX_600B540, D_SX_60328E8, -1.0f, 2100.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 54 */ { D_ENMY_SPACE_4000EC0, gCubeHitbox100, 1.5f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 55 */ { D_ENMY_SPACE_4008D50, gCubeHitbox100, 1.5f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 56 */ { NULL, gNoHitbox, -1.0f, 2000.0f, 3000.0f, 0, 0, EISFX_GREATFOX_ENGINE, 0, 0.0f, 1 }, - /* 57 */ { D_SY_60102C0, gNoHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 57 */ { aSyShip3DL, gNoHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 58 */ { D_SY_601F3D0, gNoHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 59 */ { D_SY_6022B10, gNoHitbox, 2.0f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, /* 60 */ { D_SY_60209F0, gNoHitbox, 2.0f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, @@ -1008,17 +1010,18 @@ static EventActorInfo sEventActorInfo[108] = { /* 66 */ { D_ME_600BD40, gCubeHitbox100, -1.0f, 100.0f, 8000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 67 */ { NULL, D_ME_602F604, 3.0f, 100.0f, 3000.0f, 2, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, /* 68 */ { D_SY_60205D0, D_SY_603445C, 3.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 1.0f, 1 }, - /* 69 */ { D_SY_60036A0, D_SY_6034664, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 69 */ { aSyShip3DestroyedDL, aSyShip3DestroyedHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 70 */ { D_SY_601AD70, gNoHitbox, 4.0f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, /* 71 */ { aArwingItemLasersDL, gNoHitbox, 1.0f, 100.0f, 3000.0f, 2, 0, EISFX_OB_WING, 0, 0.0f, 1 }, - /* 72 */ { D_SY_60034D0, D_SY_60347D4, 3.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 73 */ { D_SY_6005360, D_SY_6034770, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 74 */ { D_SY_600F6C0, D_SY_60347F0, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 75 */ { D_SY_601B610, gNoHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, - /* 76 */ { D_SY_601C6A0, gNoHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, - /* 77 */ { D_SY_60188D0, D_SY_603486C, 3.0f, 100.0f, 3001.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, + /* 72 */ { aSyShipWindowsDL, aSyShipWindowsHitbox, 3.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 73 */ { aSyShip4DL, aSyShip4Hitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 74 */ { aSyShip4DestroyedDL, aSyShip4DestroyedHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 75 */ { aSyShip2SpriteDL, gNoHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, + /* 76 */ { aSyShip3SpriteDL, gNoHitbox, -1.0f, 10000.0f, 3001.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, + /* 77 */ + { aSyShipProjectileDL, aSyShipProjectileHitbox, 3.0f, 100.0f, 3001.0f, 0, 0, EISFX_EN_ENGINE_01, 0, 0.0f, 1 }, /* 78 */ { NULL, gCubeHitbox150, 1.0f, 100.0f, 3000.0f, 2, 0, EISFX_NONE, 0, 1.0f, 0 }, - /* 79 */ { NULL, D_ZO_602C294, 1.0f, 100.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 1.0f, 1 }, + /* 79 */ { NULL, aZoBirdHitbox, 1.0f, 100.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 1.0f, 1 }, /* 80 */ { NULL, D_VE1_601B474, -1.0f, 100.0f, 3000.0f, 2, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 81 */ { NULL, gNoHitbox, -1.0f, 100.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 82 */ { NULL, gCubeHitbox100, 2.0f, 100.0f, 3000.0f, 1, 0, EISFX_EN_ENGINE_01, 0, 1.0f, 1 }, @@ -1030,14 +1033,14 @@ static EventActorInfo sEventActorInfo[108] = { /* 88 */ { NULL, D_AQ_6030B30, 1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 1.0f, 1 }, /* 89 */ { NULL, D_AQ_6030B14_f32, 1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 1.0f, 1 }, /* 90 */ { D_MA_601C520, D_MA_60368FC, 1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 91 */ { D_MA_600AF40, D_MA_60368E0, -1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 91 */ { aMaGuillotineDL, aMaGuillotineHitbox, -1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 92 */ { D_WZ_7000C40, gWarpZoneEvent92Hitbox, -1.0f, 2100.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 93 */ { D_WZ_70010E0, gWarpZoneEvent93Hitbox, -1.0f, 2100.0f, 3001.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 94 */ { D_WZ_7000E80, gWarpZoneEvent94Hitbox, 2.5f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 1.0f, 1 }, /* 95 */ { D_WZ_70008F0, gCubeHitbox100, -1.0f, 100.0f, 8000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 0 }, /* 96 */ { D_WZ_7000280, gWarpZoneEvent96Hitbox, -1.0f, 1000.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 0 }, /* 97 */ { D_ME_600AC70, gCubeHitbox100, -1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, - /* 98 */ { D_MA_601A2B0, D_MA_60364C0, 1.0f, 100.0f, 3000.0f, 1, 1, EISFX_NONE, 0, 0.0f, 1 }, + /* 98 */ { D_MA_601A2B0, aMaBoulderHitbox, 1.0f, 100.0f, 3000.0f, 1, 1, EISFX_NONE, 0, 0.0f, 1 }, /* 99 */ { D_VE1_6002500, D_VE1_601B944, -1.0f, 100.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 100 */ { D_VE1_60043F0, gNoHitbox, -1.0f, 100.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, /* 101 */ { D_VE1_6004310, gNoHitbox, -1.0f, 100.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 0.0f, 1 }, @@ -1046,7 +1049,7 @@ static EventActorInfo sEventActorInfo[108] = { /* 104 */ { NULL, gNoHitbox, -1.0f, 500.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 0.0f, 0 }, /* 105 */ { NULL, gCubeHitbox200, 1.0f, 100.0f, 3000.0f, 0, 0, EISFX_NONE, 0, 1.0f, 1 }, /* 106 */ { NULL, gCubeHitbox100, 1.0f, 100.0f, 3000.0f, 0, 0, EISFX_EN_ALIEN_FLY, 0, 0.0f, 0 }, - /* 107 */ { D_MA_6002890, D_MA_60368E0, -1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, + /* 107 */ { D_MA_6002890, aMaGuillotineHitbox, -1.0f, 100.0f, 3000.0f, 1, 0, EISFX_NONE, 0, 0.0f, 1 }, }; static Color_RGBA32 sEventTexLineColors[6] = { @@ -1148,12 +1151,12 @@ void ActorEvent_ProcessScript(ActorEvent* this) { this->info.targetOffset = 1.0f; for (i = 0; i < 2; i++) { - if (gActor194Status[i] == 0) { - gActor194Status[i] = 1; + if (gMeMoraStatus[i] == 0) { + gMeMoraStatus[i] = 1; this->unk_046 = i; for (j = 0; j < 100; j++) { - gActor194yPos[i][j] = this->obj.pos.y; - gActor194zPos[i][j] = this->obj.pos.z; + gMeMoraYpos[i][j] = this->obj.pos.y; + gMeMoraZpos[i][j] = this->obj.pos.z; } if (this->eventType == EVID_200) { AUDIO_PLAY_SFX(NA_SE_EN_SPACE_SNAKE, this->sfxSource, 4); @@ -1658,7 +1661,7 @@ void ActorEvent_SpawnEffect374(f32 xPos, f32 yPos, f32 zPos) { void ActorEvent_SetupTIMine(Actor* actor, f32 xPos, f32 yPos, f32 zPos) { Actor_Initialize(actor); actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_225; + actor->obj.id = OBJ_ACTOR_TI_LANDMINE; actor->obj.pos.x = xPos; actor->obj.pos.y = yPos; @@ -1941,8 +1944,8 @@ void ActorEvent_ProcessActions(ActorEvent* this) { break; case EVACT_11: - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, this->scale * 3.0f, 15); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, this->scale * 3.0f, 15); Actor_Despawn(this); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); @@ -2043,8 +2046,8 @@ void ActorEvent_8006FEEC(ActorEvent* this) { if (this->health <= 0) { for (i = 3; i < 11; i++) { - Zoness_SpawnDebris(&this->vwork[i], &this->vwork[i + 11], RAND_FLOAT_CENTERED(20.0f), - RAND_FLOAT(-10.0f), RAND_FLOAT(10.0f), 41, this->scale, 200, i); + Zoness_ActorDebris_Spawn(&this->vwork[i], &this->vwork[i + 11], RAND_FLOAT_CENTERED(20.0f), + RAND_FLOAT(-10.0f), RAND_FLOAT(10.0f), 41, this->scale, 200, i); } this->itemDrop = DROP_NONE; Actor_Despawn(this); @@ -2189,7 +2192,7 @@ void ActorEvent_800701E0(ActorEvent* this) { break; case EVID_61: - Meteo_8018CCF8(this); + Meteo_Effect346_Spawn(this); break; case EVID_27: @@ -2218,7 +2221,7 @@ void ActorEvent_800701E0(ActorEvent* this) { if (this->eventType == EVID_82) { AUDIO_PLAY_SFX(NA_SE_OB_SMOKE, this->sfxSource, 0); this->dmgType = DMG_BEAM; - func_effect_8007C688(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f, 60); + Effect_Effect387_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f, 60); } } else { this->timer_0C6 = 20; @@ -2292,12 +2295,12 @@ void ActorEvent_800701E0(ActorEvent* this) { this->obj.pos.z -= this->vel.z; this->dmgType = DMG_BEAM; if (this->eventType == EVID_13) { - this->obj.id = OBJ_ACTOR_182; + this->obj.id = OBJ_ACTOR_ME_METEOR_2; func_enmy_800654E4(&this->obj); } if (this->eventType == EVID_61) { - Meteo_8018CCF8(this); + Meteo_Effect346_Spawn(this); } } } @@ -2308,8 +2311,8 @@ void ActorEvent_80070BA8(ActorEvent* this) { this->dmgType = DMG_NONE; if ((this->eventType != EVID_17) || ((this->eventType == EVID_17) && (this->dmgPart == 0))) { this->timer_0C6 = 10; - func_effect_8007C120(this->hitPos.x, this->hitPos.y, this->hitPos.z, this->vel.x, this->vel.y, this->vel.z, - 0.2f, 10); + Effect_Effect390_Spawn(this->hitPos.x, this->hitPos.y, this->hitPos.z, this->vel.x, this->vel.y, + this->vel.z, 0.2f, 10); this->health -= this->damage; AUDIO_PLAY_SFX(NA_SE_EN_SPARK_DAMAGE_M, this->sfxSource, 4); if (this->health <= 0) { @@ -2871,13 +2874,13 @@ void ActorEvent_80071DC0(ActorEvent* this) { } if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C120(this->obj.pos.x + sp38.x, this->obj.pos.y + sp38.y, this->obj.pos.z + sp38.z, this->vel.x, - this->vel.y, this->vel.z, 0.3f, 20); + Effect_Effect390_Spawn(this->obj.pos.x + sp38.x, this->obj.pos.y + sp38.y, this->obj.pos.z + sp38.z, + this->vel.x, this->vel.y, this->vel.z, 0.3f, 20); } if (((gGameFrameCount % 8) == 0)) { - func_effect_8007BFFC(this->obj.pos.x + sp38.x, this->obj.pos.y + sp38.y, this->obj.pos.z + sp38.z, this->vel.x, - this->vel.y, this->vel.z, 10.0f, 9); + Effect386_Spawn1(this->obj.pos.x + sp38.x, this->obj.pos.y + sp38.y, this->obj.pos.z + sp38.z, this->vel.x, + this->vel.y, this->vel.z, 10.0f, 9); } if (((gGameFrameCount % 16) == 0)) { @@ -3033,9 +3036,9 @@ void ActorEvent_Update(ActorEvent* this) { if (this->state == EVSTATE_1000) { this->obj.rot.y += this->fwork[15]; this->obj.rot.x += this->fwork[16]; - if (((gGameFrameCount % 16) == 0)) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 0.3f, 10); + if ((gGameFrameCount % 16) == 0) { + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.3f, 10); } return; } @@ -3054,12 +3057,12 @@ void ActorEvent_Update(ActorEvent* this) { this->counter_04E = 0; } - gActor194xPos[this->unk_046][this->counter_04E] = this->obj.pos.x; - gActor194yPos[this->unk_046][this->counter_04E] = this->obj.pos.y; - gActor194zPos[this->unk_046][this->counter_04E] = this->obj.pos.z; - gActor194xRot[this->unk_046][this->counter_04E] = this->obj.rot.x; - gActor194yRot[this->unk_046][this->counter_04E] = this->obj.rot.y; - gActor194zRot[this->unk_046][this->counter_04E] = this->obj.rot.z; + gMeMoraXpos[this->unk_046][this->counter_04E] = this->obj.pos.x; + gMeMoraYpos[this->unk_046][this->counter_04E] = this->obj.pos.y; + gMeMoraZpos[this->unk_046][this->counter_04E] = this->obj.pos.z; + gMeMoraXrot[this->unk_046][this->counter_04E] = this->obj.rot.x; + gMeMoraYrot[this->unk_046][this->counter_04E] = this->obj.rot.y; + gMeMoraZrot[this->unk_046][this->counter_04E] = this->obj.rot.z; if (this->dmgType != DMG_NONE) { this->dmgType = DMG_NONE; @@ -3074,7 +3077,7 @@ void ActorEvent_Update(ActorEvent* this) { func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f); this->obj.status = OBJ_DYING; this->timer_0BC = 20; - this->obj.id = OBJ_ACTOR_194; + this->obj.id = OBJ_ACTOR_ME_MORA; } } } @@ -3484,7 +3487,7 @@ void ActorEvent_Update(ActorEvent* this) { case EVID_94: case EVID_95: case EVID_96: - if (((gGameFrameCount % 8) == 0)) { + if ((gGameFrameCount % 8) == 0) { this->fwork[18] = RAND_FLOAT(255.0f); this->fwork[19] = RAND_FLOAT(255.0f); this->fwork[20] = RAND_FLOAT(255.0f); @@ -3561,7 +3564,7 @@ void ActorEvent_Update(ActorEvent* this) { case EVID_48: case EVID_49: case EVID_50: - SectorY_Actor204_Update(this); + SectorY_SyRobot_Update(this); break; case EVID_52: @@ -3598,7 +3601,7 @@ void ActorEvent_Update(ActorEvent* this) { if ((this->obj.pos.y + sp90.y) > -30.0f) { for (sp74 = 0; sp74 < 7; sp74++) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->unk_78 = effect->unk_7A = 12; @@ -3630,7 +3633,7 @@ void ActorEvent_Update(ActorEvent* this) { } if ((fabsf(this->fwork[0]) > 10.0f) && ((gGameFrameCount % 2) == 0)) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { Matrix_RotateZ(gCalcMatrix, this->rot_0F4.z * M_DTOR, MTXF_NEW); Matrix_MultVec3fNoTranslate(gCalcMatrix, &D_800D1290, &sp90); @@ -3661,7 +3664,7 @@ void ActorEvent_Update(ActorEvent* this) { } if (((gGameFrameCount % 4) == 0)) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->unk_78 = effect->unk_7A = 11; effect->obj.status = OBJ_ACTIVE; @@ -3724,7 +3727,7 @@ void ActorEvent_Update(ActorEvent* this) { } if ((this->animFrame >= 18) && (this->animFrame < 24)) { - func_effect_8007BC7C(this->obj.pos.x, this->obj.pos.y + 80.0f, this->obj.pos.z + 60.0f, 20.0f); + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y + 80.0f, this->obj.pos.z + 60.0f, 20.0f); } if (this->animFrame < 49) { @@ -3733,9 +3736,9 @@ void ActorEvent_Update(ActorEvent* this) { this->animFrame = 49; } if ((gGameFrameCount % 2) != 0) { - Aquas_801AC8A8(RAND_FLOAT_CENTERED(100.0f) + this->obj.pos.x, - RAND_FLOAT(50.0f) + this->obj.pos.y, - RAND_FLOAT_CENTERED(100.0f) + this->obj.pos.z, 1.0f, 0); + Aquas_Effect366_Spawn(RAND_FLOAT_CENTERED(100.0f) + this->obj.pos.x, + RAND_FLOAT(50.0f) + this->obj.pos.y, + RAND_FLOAT_CENTERED(100.0f) + this->obj.pos.z, 1.0f, 0); } } this->timer_0C2 = 10000; @@ -3843,7 +3846,7 @@ bool ActorEvent_OverrideLimbDraw3(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* return false; } -s32 Scenery111_Draw(Scenery_111* this) { +s32 Scenery111_Draw(SyShipDebris* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_60); gSPDisplayList(gMasterDisp++, D_SY_601AD70); RCP_SetupDL(&gMasterDisp, SETUPDL_64); @@ -3862,8 +3865,8 @@ void ActorEvent_Draw(ActorEvent* this) { (this->eventType != EVID_62) && (this->eventType != EVID_AQ_CLAM) && (this->eventType != EVID_98) && (this->scale > 0.5f) && (this->timer_0C6 >= 9) && ((this->timer_0C6 & 3) == 0) && (gPlayState != PLAY_PAUSE)) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, this->scale * 0.07f, 3); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, this->scale * 0.07f, 3); } if ((this->eventType != EVID_A6_MISSILE) && (this->eventType != EVID_23) && (this->eventType != EVID_79) && @@ -4063,7 +4066,7 @@ void ActorEvent_Draw(ActorEvent* this) { case EVID_48: case EVID_49: case EVID_50: - SectorY_Actor204_Draw(this); + SectorY_SyRobot_Draw(this); break; case EVID_52: @@ -4104,7 +4107,7 @@ void ActorEvent_Draw(ActorEvent* this) { case EVID_79: temp_s0 = this->state; this->state = 2; // actor 235 state - Zoness_Actor235_Draw(this); + Zoness_ZoBird_Draw(this); this->state = temp_s0; break; @@ -4131,8 +4134,8 @@ void ActorEvent_Draw(ActorEvent* this) { case EVID_AQ_CLAM: Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 3.0f, MTXF_APPLY); - Animation_GetFrameData(&D_AQ_602201C, this->animFrame, sp114); - Animation_DrawSkeleton(1, D_AQ_60220E8, sp114, NULL, NULL, this, &gIdentityMatrix); + Animation_GetFrameData(&aAqOysterAnim, this->animFrame, sp114); + Animation_DrawSkeleton(1, aAqOysterSkel, sp114, NULL, NULL, this, &gIdentityMatrix); break; case EVID_BILL: @@ -4260,9 +4263,9 @@ void func_enmy2_800763A4(Actor* actor) { if (gUseDynaFloor && Play_CheckDynaFloorCollision(&sp58, &sp5C, actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z)) { - func_effect_8007BFFC(actor->obj.pos.x, sp58 + 20.0f, actor->obj.pos.z, 0.0f, 0.0f, 0.0f, - actor->scale * 3.0f, 5); - func_effect_8007B228(actor->obj.pos.x, sp58, actor->obj.pos.z, 2.0f); + Effect386_Spawn1(actor->obj.pos.x, sp58 + 20.0f, actor->obj.pos.z, 0.0f, 0.0f, 0.0f, actor->scale * 3.0f, + 5); + Effect_Effect381_Spawn(actor->obj.pos.x, sp58, actor->obj.pos.z, 2.0f); actor->timer_0BE = 2; Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); return; @@ -4271,8 +4274,8 @@ void func_enmy2_800763A4(Actor* actor) { if (gGroundType == 4) { if (Ground_801B6AEC(actor->obj.pos.x, actor->obj.pos.y - 10.0f, actor->obj.pos.z + gPathProgress) != 0) { func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y + 20.0f, actor->obj.pos.z, actor->scale * 6.0f); - func_effect_8007BFFC(actor->obj.pos.x - actor->vel.x, actor->obj.pos.y + 30.0f, - actor->obj.pos.z - actor->vel.z, 0.0f, 0.0f, 0.0f, actor->scale * 4.0f, 20); + Effect386_Spawn1(actor->obj.pos.x - actor->vel.x, actor->obj.pos.y + 30.0f, + actor->obj.pos.z - actor->vel.z, 0.0f, 0.0f, 0.0f, actor->scale * 4.0f, 20); func_enmy_80062C38(actor->obj.pos.x, actor->obj.pos.z); actor->timer_0BE = 2; Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); @@ -4326,21 +4329,21 @@ void func_enmy2_800763A4(Actor* actor) { if ((actor->obj.pos.y < (gGroundHeight + 30.0f)) && (gLevelType == LEVELTYPE_PLANET)) { actor->vel.z = 0.0f; if (gGroundSurface == SURFACE_WATER) { - func_effect_8007D9DC(actor->obj.pos.x, gGroundHeight + 2.0f, actor->obj.pos.z, 3.0f, 20.0f, - 0); - func_effect_8007D9DC(actor->obj.pos.x, gGroundHeight + 2.0f, actor->obj.pos.z, 3.0f, 20.0f, - 10); - func_effect_8007D9DC(actor->obj.pos.x, gGroundHeight + 2.0f, actor->obj.pos.z, 3.0f, 20.0f, - 20); - func_effect_8007ADF4(actor->obj.pos.x, gGroundHeight, actor->obj.pos.z, 0.1f, 3.0f); + Effect_Effect367_Spawn(actor->obj.pos.x, gGroundHeight + 2.0f, actor->obj.pos.z, 3.0f, + 20.0f, 0); + Effect_Effect367_Spawn(actor->obj.pos.x, gGroundHeight + 2.0f, actor->obj.pos.z, 3.0f, + 20.0f, 10); + Effect_Effect367_Spawn(actor->obj.pos.x, gGroundHeight + 2.0f, actor->obj.pos.z, 3.0f, + 20.0f, 20); + Effect_Effect372_Spawn2(actor->obj.pos.x, gGroundHeight, actor->obj.pos.z, 0.1f, 3.0f); } else { PlayerShot_SpawnEffect344(actor->obj.pos.x, 3.0f, actor->obj.pos.z, actor->obj.pos.x, actor->obj.pos.z, 0.0f, 0.0f, 90.0f, 6.5f, 0, 0); } - func_effect_8007C120(actor->obj.pos.x, 20.0f, actor->obj.pos.z, 0.0f, 0.0f, 0.0f, - actor->scale * 0.05f, 30); + Effect_Effect390_Spawn(actor->obj.pos.x, 20.0f, actor->obj.pos.z, 0.0f, 0.0f, 0.0f, + actor->scale * 0.05f, 30); if ((gCurrentLevel == LEVEL_FORTUNA) || (gCurrentLevel == LEVEL_VENOM_2)) { - func_effect_8007C688(actor->obj.pos.x, gGroundHeight + 30.0f, actor->obj.pos.z, 3.0f, 60); + Effect_Effect387_Spawn(actor->obj.pos.x, gGroundHeight + 30.0f, actor->obj.pos.z, 3.0f, 60); if (gCurrentLevel == LEVEL_FORTUNA) { func_enmy_80062C38(actor->obj.pos.x, actor->obj.pos.z); } @@ -4351,25 +4354,26 @@ void func_enmy2_800763A4(Actor* actor) { func_effect_8007D0E0(actor->obj.pos.x - actor->vel.x, actor->obj.pos.y + 30.0f, actor->obj.pos.z - actor->vel.z, actor->scale * 5.0f); if (gLevelMode == LEVELMODE_ALL_RANGE) { - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y + 30.0f, actor->obj.pos.z, actor->vel.x, - 10.0f, actor->vel.z, actor->scale * 3.0f, 20); + Effect386_Spawn1(actor->obj.pos.x, actor->obj.pos.y + 30.0f, actor->obj.pos.z, actor->vel.x, + 10.0f, actor->vel.z, actor->scale * 3.0f, 20); if (sp60 == 999) { - func_effect_8007C688(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, - actor->scale * 3.0f, 70); + Effect_Effect387_Spawn(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, + actor->scale * 3.0f, 70); } for (var_s0 = 0; var_s0 < 4; var_s0++) { if (Rand_ZeroOne() < 0.7f) { if (gCurrentLevel == LEVEL_FORTUNA) { Play_SpawnDebris(4, actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z); } else { - func_effect_800794CC(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 1.0f); + Effect_Effect357_Spawn50(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, + 1.0f); } } } } else { - func_effect_8007BFFC(actor->obj.pos.x - actor->vel.x, actor->obj.pos.y + 30.0f, - (actor->obj.pos.z - actor->vel.z) + 48.0f, 0.0f, 0.0f, 0.0f, - actor->scale * 3.0f, 5); + Effect386_Spawn1(actor->obj.pos.x - actor->vel.x, actor->obj.pos.y + 30.0f, + (actor->obj.pos.z - actor->vel.z) + 48.0f, 0.0f, 0.0f, 0.0f, + actor->scale * 3.0f, 5); } actor->timer_0BE = 2; @@ -4390,13 +4394,13 @@ void func_enmy2_800763A4(Actor* actor) { if (gCurrentLevel == LEVEL_FORTUNA) { Play_SpawnDebris(4, actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z); } else { - func_effect_800794CC(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 1.0f); + Effect_Effect357_Spawn50(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 1.0f); } } } - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, actor->vel.x, actor->vel.y, - actor->vel.z, 5.0f, 15); + Effect386_Spawn1(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, actor->vel.x, actor->vel.y, + actor->vel.z, 5.0f, 15); func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z - actor->vel.z, 8.0f); } else { if ((actor->eventType != EVID_13) && (actor->eventType != EVID_61)) { @@ -4405,8 +4409,8 @@ void func_enmy2_800763A4(Actor* actor) { } if (actor->eventType == EVID_36) { - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, actor->vel.x, - actor->vel.y, actor->vel.z, 5.0f, 15); + Effect386_Spawn1(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, actor->vel.x, actor->vel.y, + actor->vel.z, 5.0f, 15); } } @@ -4433,13 +4437,13 @@ void func_enmy2_800763A4(Actor* actor) { void ActorEvent_Dying(ActorEvent* this) { if ((this->eventType == EVID_48) || (this->eventType == EVID_49) || (this->eventType == EVID_50)) { - SectorY_Actor204_Update(this); + SectorY_SyRobot_Update(this); } else { func_enmy2_800763A4(this); } } -void Actor234_Update(Actor234* this) { +void TiGreatFox_Update(TiGreatFox* this) { Vec3f sp24; Math_Vec3fFromAngles(&sp24, this->obj.rot.x, this->obj.rot.y, 50.0f); @@ -4448,6 +4452,6 @@ void Actor234_Update(Actor234* this) { this->vel.z = sp24.z; } -void Actor234_Draw(Actor234* this) { +void TiGreatFox_Draw(TiGreatFox* this) { Cutscene_DrawGreatFox(); } diff --git a/src/engine/fox_fade.c b/src/engine/fox_fade.c index 2999878d..adca18a9 100644 --- a/src/engine/fox_fade.c +++ b/src/engine/fox_fade.c @@ -41,7 +41,7 @@ void Wipe_Draw(WipeMode mode, s32 frame) { Wipe_Vertical(frame); break; default: - (void) "そのような フェード は ない (%d)\n"; // There is no such fade + PRINTF("そのような フェード は ない (%d)\n"); // There is no such fade break; } } diff --git a/src/engine/fox_game.c b/src/engine/fox_game.c index d4006f58..88550a7f 100644 --- a/src/engine/fox_game.c +++ b/src/engine/fox_game.c @@ -20,7 +20,7 @@ f32 gFovY; f32 gProjectNear; f32 gProjectFar; -bool gShowCrosshairs[4] = { true, true, true, true }; +bool gShowReticles[4] = { true, true, true, true }; bool D_game_800D2870 = false; static s32 sVsCameraULx[] = { 0, SCREEN_WIDTH / 2, 0, SCREEN_WIDTH / 2 }; static s32 sVsCameraLRx[] = { SCREEN_WIDTH / 2 - 1, SCREEN_WIDTH - 1, SCREEN_WIDTH / 2 - 1, SCREEN_WIDTH - 1 }; @@ -114,6 +114,7 @@ void Game_SetGameState(void) { gSceneSetup = 0; gFillScreenColor = gBgColor = 0; gPathProgress = 0.0f; + if ((gCurrentLevel == LEVEL_VENOM_2) && (gLevelPhase == 2)) { gFillScreenColor = gBgColor = 0xFFFF; // 248, 248, 248 gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; @@ -281,7 +282,7 @@ void Game_Draw(s32 playerNum) { break; case DRAW_PLAY: gPlayerNum = playerNum; - Play_Draw(); + Display_Update(); break; case DRAW_UNK_MAP: // likely game over Background_DrawStarfield(); @@ -342,29 +343,36 @@ void Game_Update(void) { u8 soundMode; Game_SetGameState(); + if (gGameStandby) { Game_InitStandbyDL(&gUnkDisp1); gGameStandby = false; return; } + Game_InitMasterDL(&gUnkDisp1); Game_SetScene(); + if (Game_ChangeScene() != true) { Lib_InitPerspective(&gUnkDisp1); Game_InitViewport(&gUnkDisp1, gCamCount, 0); + if (gNextGameStateTimer != 0) { gNextGameStateTimer--; } + switch (gGameState) { case GSTATE_BOOT: gNextGameStateTimer = 2; gGameState++; break; + case GSTATE_BOOT_WAIT: if (gNextGameStateTimer == 0) { gGameState++; } break; + case GSTATE_SHOW_LOGO: RCP_SetupDL(&gMasterDisp, SETUPDL_76); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); @@ -375,6 +383,7 @@ void Game_Update(void) { TextureRect_IA8(&gMasterDisp, &gNintendoLogo[128 * 16 * 4], 128, 10, 100.0f, 150.0f, 1.0f, 1.0f); gGameState++; break; + case GSTATE_CHECK_SAVE: if (Save_Read() != 0) { #ifdef AVOID_UB @@ -397,11 +406,13 @@ void Game_Update(void) { TextureRect_IA8(&gMasterDisp, &gNintendoLogo[128 * 16 * 3], 128, 16, 100.0f, 134.0f, 1.0f, 1.0f); TextureRect_IA8(&gMasterDisp, &gNintendoLogo[128 * 16 * 4], 128, 10, 100.0f, 150.0f, 1.0f, 1.0f); break; + case GSTATE_START: gGameState = GSTATE_INIT; gSceneId = SCENE_TITLE; gSceneSetup = 0; break; + case GSTATE_INIT: gGameState = GSTATE_TITLE; gTitleState = 1; @@ -430,17 +441,21 @@ void Game_Update(void) { D_ctx_80177858[i] = 3; gPlayerForms[i] = FORM_ARWING; - gShowCrosshairs[i] = true; + gShowReticles[i] = true; gPlayerGlareAlphas[i] = 0; } + gVersusStage = 0; gVsPointsToWin = 3; gBlurAlpha = 255; + for (i = 0; i < ARRAY_COUNT(gLeveLClearStatus); i++) { gLeveLClearStatus[i] = 0; } + gExpertMode = false; gOptionSoundMode = gSaveFile.save.data.soundMode; + switch (gOptionSoundMode) { case OPTIONSOUND_STEREO: soundMode = SOUNDMODE_STEREO; @@ -456,10 +471,12 @@ void Game_Update(void) { soundMode = SOUNDMODE_STEREO; break; } + SEQCMD_SET_SOUND_MODE(soundMode); gVolumeSettings[AUDIO_TYPE_MUSIC] = gSaveFile.save.data.musicVolume; gVolumeSettings[AUDIO_TYPE_VOICE] = gSaveFile.save.data.voiceVolume; gVolumeSettings[AUDIO_TYPE_SFX] = gSaveFile.save.data.sfxVolume; + if (gVolumeSettings[AUDIO_TYPE_MUSIC] > 99) { gVolumeSettings[AUDIO_TYPE_MUSIC] = 99; } @@ -473,6 +490,7 @@ void Game_Update(void) { Audio_SetVolume(AUDIO_TYPE_VOICE, gVolumeSettings[AUDIO_TYPE_VOICE]); Audio_SetVolume(AUDIO_TYPE_SFX, gVolumeSettings[AUDIO_TYPE_SFX]); break; + case GSTATE_TITLE: OvlMenu_CallFunction(OVLCALL_TITLE_UPDATE, NULL); break; @@ -498,7 +516,9 @@ void Game_Update(void) { default: break; } + Game_Draw(0); + if (gCamCount == 2) { Game_InitViewport(&gMasterDisp, gCamCount, 1); Game_Draw(1); @@ -538,7 +558,9 @@ void Game_Update(void) { HUD_dummy_8008CB8C(); } + partialFill = false; + if (gCamCount == 1) { Graphics_FillRectangle(&gMasterDisp, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, gPlayerGlareReds[0], gPlayerGlareGreens[0], gPlayerGlareBlues[0], gPlayerGlareAlphas[0]); @@ -565,9 +587,11 @@ void Game_Update(void) { } } } + Background_dummy_80040CDC(); HUD_DrawStatusScreens(); AllRange_DrawCountdown(); + if ((gGameState == GSTATE_PLAY) && gVersusMode) { Versus_Draw(); } @@ -584,6 +608,9 @@ void Game_Update(void) { #endif #if MODS_FPS_COUNTER == 1 Play_RenderFps(); +#endif +#if MODS_SPAWNER == 1 + Spawner(); #endif } } @@ -594,6 +621,9 @@ void Game_Update(void) { #if MODS_RAM_MOD == 1 #include "../mods/object_ram.c" #endif +#if MODS_SPAWNER == 1 +#include "../mods/spawner.c" +#endif Actor* Game_SpawnActor(ObjectId objId) { Actor* actor = gActors; diff --git a/src/engine/fox_hud.c b/src/engine/fox_hud.c index f59c8ecb..1589f979 100644 --- a/src/engine/fox_hud.c +++ b/src/engine/fox_hud.c @@ -359,7 +359,7 @@ void func_hud_80085944(void) { y = D_800D1AD8[i + 1]; scale = 0.28f; - if (D_ctx_80177C70 == 2) { + if (gFovYMode == 2) { x -= 7.00f; y += 7.00f; scale += 0.06f; @@ -408,7 +408,7 @@ void func_hud_80085944(void) { y = D_800D1AD8[i + 1]; scale = 0.28f; - if (D_ctx_80177C70 == 2) { + if (gFovYMode == 2) { x -= 7.00f; y += 7.00f; scale += 0.06f; @@ -1834,7 +1834,7 @@ void func_hud_80089D28(void) { gSPDisplayList(gMasterDisp++, D_1024230); } -void RadarMark_Draw(s32 arg0) { +void HUD_RadarMark_Draw(s32 arg0) { s32 var_a1; s32 var_a1_2; @@ -2149,7 +2149,7 @@ s32 func_hud_8008A4DC(void) { Matrix_Scale(gGfxMatrix, scale, scale, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - RadarMark_Draw(gRadarMarks[i].type); + HUD_RadarMark_Draw(gRadarMarks[i].type); Matrix_Pop(&gGfxMatrix); gRadarMarks[i].status = 0; @@ -2160,7 +2160,7 @@ s32 func_hud_8008A4DC(void) { } // Why is this function here in fox_hud? Weird. -s32 Hud_MissileSeekModeCheck(s32 missileSeekMode) { +s32 ActorMissileSeek_ModeCheck(s32 missileSeekMode) { Actor* actor; s32 i; s32 ret = 0; @@ -2191,7 +2191,7 @@ s32 Hud_MissileSeekModeCheck(s32 missileSeekMode) { return ret; } -void func_hud_8008AD94(void) { +void HUD_RadioCharacterName_Draw(void) { if (gGameState == GSTATE_PLAY) { RCP_SetupDL(&gMasterDisp, SETUPDL_76); gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); @@ -2316,7 +2316,7 @@ s32 D_800D1EB8 = 255; s32 D_800D1EBC = 255; void func_hud_8008B2F0(void) { - f32 var_fv0; + f32 shields; switch (D_hud_80161730) { case 0: @@ -2330,8 +2330,8 @@ void func_hud_8008B2F0(void) { D_801617A4 = D_801617A8 = 1.0f; } - var_fv0 = gPlayer[0].shields; - D_801617AC = var_fv0 / ((256.0f * D_801617A8) - 1.0f); + shields = gPlayer[0].shields; + D_801617AC = shields / ((256.0f * D_801617A8) - 1.0f); if (gGoldRingCount[0] >= 3) { D_hud_80161730 = 2; @@ -2354,7 +2354,7 @@ void func_hud_8008B2F0(void) { } } - if (((D_801617B0 != 0) || ((D_801617A4 - D_801617A8) > 0.1f)) && (gGameFrameCount & 2)) { + if (((D_801617B0 != 0) || ((D_801617A4 - D_801617A8) > 0.1f)) && ((gGameFrameCount & 2) != 0)) { D_800D1EB4 = 0; D_800D1EB8 = 255; D_800D1EBC = 0; @@ -2368,11 +2368,11 @@ void func_hud_8008B2F0(void) { Math_SmoothStepToF(&D_801617A8, D_801617A4, 0.02f, 1000.0f, 0.001f); - var_fv0 = gPlayer[0].shields; - if (var_fv0 > (256.0f * D_801617A8) - 1.0f) { - var_fv0 = (256.0f * D_801617A8) - 1.0f; + shields = gPlayer[0].shields; + if (shields > (256.0f * D_801617A8) - 1.0f) { + shields = (256.0f * D_801617A8) - 1.0f; } - D_801617AC = var_fv0 / ((256.0f * D_801617A8) - 1.0f); + D_801617AC = shields / ((256.0f * D_801617A8) - 1.0f); break; } } @@ -2465,7 +2465,7 @@ s32 func_hud_8008B774(void) { ((gActors[i].obj.id == OBJ_ACTOR_TEAM_BOSS) && ((gActors[i].aiType == AI360_FALCO) || (gActors[i].aiType == AI360_SLIPPY) || (gActors[i].aiType == AI360_PEPPY)))) { - if (gActors[i].timer_0C6) { + if (gActors[i].timer_0C6 != 0) { ret = 1; } else { ret = 0; @@ -2489,7 +2489,7 @@ s32 func_hud_8008B774(void) { case 6: case 7: if (gLevelMode == LEVELMODE_ALL_RANGE) { - if (gActors[i].timer_0C6) { + if (gActors[i].timer_0C6 != 0) { ret = 1; } if ((ret == 1) && (gActors[i].health <= 0)) { @@ -2503,11 +2503,12 @@ s32 func_hud_8008B774(void) { break; default: - if (gActors[i].timer_0C6) { + if (gActors[i].timer_0C6 != 0) { ret = 1; } break; } + return ret; } @@ -2973,6 +2974,7 @@ void func_hud_8008D4F0(f32 arg0, f32 arg1) { if (temp_fs0 > 0.01f) { func_hud_800857DC(D_800D2108[var_v1] + temp + 1.0f, D_800D211C[var_v1] + sp60, temp_fs0, 1.0f); } + RCP_SetupDL(&gMasterDisp, SETUPDL_76); gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); func_hud_80085740(D_800D2108[var_v1], D_800D211C[var_v1], 1.0f, 1.0f); @@ -3645,7 +3647,7 @@ void HUD_Draw(void) { func_hud_80088970(); } -void HUD_BossFO_Draw(Boss* boss) { +void HUD_FoBase_Draw(Boss* boss) { RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); gSPDisplayList(gMasterDisp++, D_FO_6003090); RCP_SetupDL_34(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); @@ -3656,7 +3658,7 @@ void HUD_BossFO_Draw(Boss* boss) { gDPSetTextureFilter(gMasterDisp++, G_TF_BILERP); } -void func_hud_8008FFF0(Boss* boss, s32 arg1) { +void func_hud_8008FFF0(FoBase* this, s32 arg1) { Vec3s D_800D21C8[] = { { -385, 54, 233 }, { -324, 148, 193 }, { -267, 186, 136 }, { -128, 430, 180 }, { -231, 584, 140 }, { -431, 551, -120 }, { -285, 516, -32 }, { -285, 601, 18 }, { 300, 596, 18 }, { 300, 529, -65 }, @@ -3670,6 +3672,7 @@ void func_hud_8008FFF0(Boss* boss, s32 arg1) { s32 i; f32 temp; s32 temp2; + if (arg1 >= 7000) { temp2 = arg1 - 7000; @@ -3679,160 +3682,162 @@ void func_hud_8008FFF0(Boss* boss, s32 arg1) { temp = temp2 / 1596.0f; - if (boss->swork[0] != 1) { + if (this->swork[0] != 1) { temp /= 2.0f; } i = RAND_INT(36.0f); if ((gGameFrameCount & 2) == 0) { - func_effect_8007C120(boss->obj.pos.x + D_800D21C8[i].x, boss->obj.pos.y + D_800D21C8[i].y, - boss->obj.pos.z + D_800D21C8[i].z, 0.0f, 0.0f, 0.0f, 0.3f * temp, 20); + Effect_Effect390_Spawn(this->obj.pos.x + D_800D21C8[i].x, this->obj.pos.y + D_800D21C8[i].y, + this->obj.pos.z + D_800D21C8[i].z, 0.0f, 0.0f, 0.0f, 0.3f * temp, 20); } - if (((gGameFrameCount % 8) == 0)) { - func_effect_8007BFFC(boss->obj.pos.x + D_800D21C8[i].x, boss->obj.pos.y + D_800D21C8[i].y, - boss->obj.pos.z + D_800D21C8[i].z, 0.0f, 0.0f, 0.0f, 7.0f * temp, 10); + if ((gGameFrameCount % 8) == 0) { + Effect386_Spawn1(this->obj.pos.x + D_800D21C8[i].x, this->obj.pos.y + D_800D21C8[i].y, + this->obj.pos.z + D_800D21C8[i].z, 0.0f, 0.0f, 0.0f, 7.0f * temp, 10); } } } -s32 func_hud_80090200(Boss* boss) { - Vec3f dest, src; +s32 HUD_FoBase_ExplodeCs(FoBase* this) { + Vec3f dest; + Vec3f src; Player* player; - s32 ret = 0; + s32 csState = 0; - if (boss->swork[0] == 1) { - func_hud_8008FFF0(boss, 8596); + if (this->swork[0] == 1) { + func_hud_8008FFF0(this, 8596); player = &gPlayer[0]; - ret = 1; + csState = 1; - switch (boss->swork[1]) { + switch (this->swork[1]) { case 0: - AUDIO_PLAY_SFX(NA_SE_EARTHQUAKE, boss->sfxSource, 0); - AUDIO_PLAY_SFX(NA_SE_EXPLOSION_DEMO, boss->sfxSource, 0); + AUDIO_PLAY_SFX(NA_SE_EARTHQUAKE, this->sfxSource, 0); + AUDIO_PLAY_SFX(NA_SE_EXPLOSION_DEMO, this->sfxSource, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 50); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 50); - player->cam.eye.x = boss->fwork[4] = boss->obj.pos.x; - player->cam.eye.y = boss->fwork[5] = boss->obj.pos.y + 500.0f; - player->cam.eye.z = boss->fwork[6] = boss->obj.pos.z + 4000.0f; + player->cam.eye.x = this->fwork[4] = this->obj.pos.x; + player->cam.eye.y = this->fwork[5] = this->obj.pos.y + 500.0f; + player->cam.eye.z = this->fwork[6] = this->obj.pos.z + 4000.0f; - player->cam.at.x = boss->obj.pos.x; - player->cam.at.y = boss->obj.pos.y; - player->cam.at.z = boss->obj.pos.z; + player->cam.at.x = this->obj.pos.x; + player->cam.at.y = this->obj.pos.y; + player->cam.at.z = this->obj.pos.z; - boss->fwork[7] = 0.0f; - boss->fwork[8] = 0.0f; - boss->fwork[9] = 10.0f; + this->fwork[7] = 0.0f; + this->fwork[8] = 0.0f; + this->fwork[9] = 10.0f; - boss->timer_050 = 1000; + this->timer_050 = 1000; - boss->swork[1] = 1; + this->swork[1] = 1; break; case 1: - if (boss->timer_050 == 930) { - boss->swork[1] = 2; + if (this->timer_050 == 930) { + this->swork[1] = 2; } - boss->fwork[7] += 0.5f; - if (boss->fwork[7] >= 360.0f) { - boss->fwork[7] = 0.0f; + this->fwork[7] += 0.5f; + if (this->fwork[7] >= 360.0f) { + this->fwork[7] = 0.0f; } - Math_SmoothStepToF(&boss->fwork[9], 80.0f, 0.01f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[4], boss->obj.pos.x + 0.0f, 0.02f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[5], boss->obj.pos.y + 500.0f, 0.02f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[6], boss->obj.pos.z + 1500.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], 80.0f, 0.01f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[4], this->obj.pos.x + 0.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[5], this->obj.pos.y + 500.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[6], this->obj.pos.z + 1500.0f, 0.02f, 10000.0f, 0.0f); break; case 2: - if (boss->timer_050 == 870) { - boss->swork[1] = 3; + if (this->timer_050 == 870) { + this->swork[1] = 3; } - boss->fwork[7] += 3.0f; - if (boss->fwork[7] >= 360.0f) { - boss->fwork[7] = 0.0f; + this->fwork[7] += 3.0f; + if (this->fwork[7] >= 360.0f) { + this->fwork[7] = 0.0f; } - Math_SmoothStepToF(&boss->fwork[4], boss->obj.pos.x + 0.0f, 0.02f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[5], boss->obj.pos.y + 1500.0f, 0.02f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[6], boss->obj.pos.z + 1500.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[4], this->obj.pos.x + 0.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[5], this->obj.pos.y + 1500.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[6], this->obj.pos.z + 1500.0f, 0.02f, 10000.0f, 0.0f); break; case 3: - if (boss->timer_050 == 770) { - boss->swork[1] = 4; + if (this->timer_050 == 770) { + this->swork[1] = 4; } - Math_SmoothStepToF(&boss->fwork[9], 10.0f, 0.01f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[4], boss->obj.pos.x + 4000.0f, 0.02f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[5], boss->obj.pos.y + 2000.0f, 0.02f, 10000.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[6], boss->obj.pos.z + 1500.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], 10.0f, 0.01f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[4], this->obj.pos.x + 4000.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[5], this->obj.pos.y + 2000.0f, 0.02f, 10000.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[6], this->obj.pos.z + 1500.0f, 0.02f, 10000.0f, 0.0f); break; case 4: - ret = 2; + csState = 2; + break; } - if (boss->swork[1] < 4) { - src.x = boss->fwork[4] - boss->obj.pos.x; - src.y = boss->fwork[5] - boss->obj.pos.y; - src.z = boss->fwork[6] - boss->obj.pos.z; + if (this->swork[1] < 4) { + src.x = this->fwork[4] - this->obj.pos.x; + src.y = this->fwork[5] - this->obj.pos.y; + src.z = this->fwork[6] - this->obj.pos.z; - Matrix_Translate(gCalcMatrix, boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, MTXF_NEW); - Matrix_RotateY(gCalcMatrix, M_DTOR * boss->fwork[7], MTXF_APPLY); - Matrix_RotateX(gCalcMatrix, M_DTOR * boss->fwork[8], MTXF_APPLY); + Matrix_Translate(gCalcMatrix, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, M_DTOR * this->fwork[7], MTXF_APPLY); + Matrix_RotateX(gCalcMatrix, M_DTOR * this->fwork[8], MTXF_APPLY); Matrix_MultVec3f(gCalcMatrix, &src, &dest); player->cam.eye.x = dest.x; player->cam.eye.y = dest.y; player->cam.eye.z = dest.z; - player->cam.at.x = boss->obj.pos.x; - player->cam.at.y = boss->obj.pos.x; - player->cam.at.z = boss->obj.pos.x; + player->cam.at.x = this->obj.pos.x; + player->cam.at.y = this->obj.pos.x; + player->cam.at.z = this->obj.pos.x; - player->cam.at.x += COS_DEG(boss->timer_050 * 60.0f) * boss->fwork[9]; - player->cam.at.y += SIN_DEG(boss->timer_050 * 179.0f) * boss->fwork[9]; + player->cam.at.x += COS_DEG(this->timer_050 * 60.0f) * this->fwork[9]; + player->cam.at.y += SIN_DEG(this->timer_050 * 179.0f) * this->fwork[9]; } } - return ret; + return csState; } -void HUD_BossFO_Update(Boss* boss) { - switch (boss->state) { +void HUD_FoBase_Update(FoBase* this) { + switch (this->state) { case 0: - if ((boss->fwork[1] == 255.0f) && (boss->fwork[2] == 212.0f)) { - boss->state = 1; + if ((this->fwork[1] == 255.0f) && (this->fwork[2] == 212.0f)) { + this->state = 1; } else { - Math_SmoothStepToF(&boss->fwork[1], 255.0f, 0.3f, 6.0f, 6.0f); - Math_SmoothStepToF(&boss->fwork[2], 212.0f, 0.3f, 4.98f, 4.98f); + Math_SmoothStepToF(&this->fwork[1], 255.0f, 0.3f, 6.0f, 6.0f); + Math_SmoothStepToF(&this->fwork[2], 212.0f, 0.3f, 4.98f, 4.98f); } break; case 1: - if ((boss->fwork[1] == 28.0f) && (boss->fwork[2] == 23.0f)) { - boss->state = 0; + if ((this->fwork[1] == 28.0f) && (this->fwork[2] == 23.0f)) { + this->state = 0; } else { - Math_SmoothStepToF(&boss->fwork[1], 28.0f, 0.3f, 6.0f, 6.0f); - Math_SmoothStepToF(&boss->fwork[2], 23.0f, 0.3f, 4.98f, 4.98f); + Math_SmoothStepToF(&this->fwork[1], 28.0f, 0.3f, 6.0f, 6.0f); + Math_SmoothStepToF(&this->fwork[2], 23.0f, 0.3f, 4.98f, 4.98f); } break; } - func_hud_8008FFF0(boss, gAllRangeEventTimer); + func_hud_8008FFF0(this, gAllRangeEventTimer); } -bool func_hud_8009092C(Actor* actor) { - bool var_s5 = false; +bool func_hud_8009092C(ActorTeamBoss* this) { + bool ret = false; Boss* boss; s32 i = 0; - if (actor->aiIndex != 0) { + if (this->aiIndex != 0) { return true; } @@ -3840,143 +3845,142 @@ bool func_hud_8009092C(Actor* actor) { for (i = 1; i < ARRAY_COUNT(gBosses); i++, boss++) { if (boss->obj.status == OBJ_ACTIVE) { - var_s5 = true; - if (actor->aiIndex == 0) { - actor->aiIndex = i; + ret = true; + if (this->aiIndex == 0) { + this->aiIndex = i; } else if (Rand_ZeroOne() > 0.4f) { - actor->aiIndex = i; + this->aiIndex = i; } - actor->state = 0; + this->state = 0; } } - return var_s5; + return ret; } -bool func_hud_80090A00(Actor* actor) { - switch (actor->iwork[5]) { +bool func_hud_80090A00(ActorTeamBoss* this) { + switch (this->iwork[5]) { case 0: - actor->fwork[8] = 0.0f; - actor->fwork[7] = 360.0f; - actor->timer_0BC = 8; - actor->rot_0F4.y = 100.0f; - actor->rot_0F4.x = 300.0f; - actor->iwork[4] = 1; - actor->iwork[5] = 1; + this->fwork[8] = 0.0f; + this->fwork[7] = 360.0f; + this->timer_0BC = 8; + this->rot_0F4.y = 100.0f; + this->rot_0F4.x = 300.0f; + this->iwork[4] = 1; + this->iwork[5] = 1; case 1: - if (actor->timer_0BC == 0.0f) { - actor->fwork[1] = 20.0f; - actor->fwork[3] = 3.6f; - actor->iwork[2] = 0; - actor->iwork[3] = 36; - actor->iwork[5] = 2; + if (this->timer_0BC == 0.0f) { + this->fwork[1] = 20.0f; + this->fwork[3] = 3.6f; + this->iwork[2] = 0; + this->iwork[3] = 36; + this->iwork[5] = 2; } else { - actor->obj.pos.y -= 8.0f; + this->obj.pos.y -= 8.0f; break; } case 2: - actor->fwork[4] = gBosses[0].obj.pos.x + 1000.0f; - actor->fwork[5] = 300.0f; - actor->fwork[6] = actor->obj.pos.z - 10000.0f; - actor->iwork[2]++; - if (actor->iwork[2] == actor->iwork[3]) { - actor->iwork[5] = 3; - actor->iwork[3] = 40; - actor->iwork[2] = 0; - } else if (actor->iwork[2] == 6) { - actor->iwork[1] = 1; + this->fwork[4] = gBosses[0].obj.pos.x + 1000.0f; + this->fwork[5] = 300.0f; + this->fwork[6] = this->obj.pos.z - 10000.0f; + this->iwork[2]++; + if (this->iwork[2] == this->iwork[3]) { + this->iwork[5] = 3; + this->iwork[3] = 40; + this->iwork[2] = 0; + } else if (this->iwork[2] == 6) { + this->iwork[1] = 1; } break; case 3: - actor->fwork[4] = gBosses[0].obj.pos.x - 1000.0f; - actor->fwork[5] = 400.0f; - actor->fwork[6] = gBosses[0].obj.pos.z; - actor->iwork[2]++; - if (actor->iwork[2] == actor->iwork[3]) { - actor->iwork[5] = 4; - } else if (actor->iwork[2] == 20) { - actor->fwork[1] = 30.0f; + this->fwork[4] = gBosses[0].obj.pos.x - 1000.0f; + this->fwork[5] = 400.0f; + this->fwork[6] = gBosses[0].obj.pos.z; + this->iwork[2]++; + if (this->iwork[2] == this->iwork[3]) { + this->iwork[5] = 4; + } else if (this->iwork[2] == 20) { + this->fwork[1] = 30.0f; } break; case 4: - actor->fwork[6] = gPlayer[0].trueZpos; - actor->fwork[5] = 100.0f; - actor->fwork[4] = gPlayer[0].pos.x; - if ((fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 300.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 300.0f)) { - actor->iwork[5] = 5; - actor->iwork[3] = 20; - actor->iwork[2] = 0; + this->fwork[6] = gPlayer[0].trueZpos; + this->fwork[5] = 100.0f; + this->fwork[4] = gPlayer[0].pos.x; + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 300.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 300.0f)) { + this->iwork[5] = 5; + this->iwork[3] = 20; + this->iwork[2] = 0; } break; case 5: - actor->fwork[6] = gPlayer[0].trueZpos + 1000.0f; - actor->fwork[5] = 1000.0f; - actor->fwork[4] = gPlayer[0].pos.x - 1000.0f; - actor->iwork[2]++; - if (actor->iwork[2] == actor->iwork[3]) { - Object_Kill(&actor->obj, actor->sfxSource); + this->fwork[6] = gPlayer[0].trueZpos + 1000.0f; + this->fwork[5] = 1000.0f; + this->fwork[4] = gPlayer[0].pos.x - 1000.0f; + this->iwork[2]++; + if (this->iwork[2] == this->iwork[3]) { + Object_Kill(&this->obj, this->sfxSource); } break; } return false; } -bool func_hud_80090CCC(Actor* actor) { +bool func_hud_80090CCC(ActorTeamBoss* this) { bool ret = false; - if (func_hud_8009092C(actor)) { - actor->fwork[6] = gBosses[actor->aiIndex].obj.pos.z; - actor->fwork[5] = gBosses[actor->aiIndex].obj.pos.y; - actor->fwork[4] = gBosses[actor->aiIndex].obj.pos.x; + if (func_hud_8009092C(this)) { + this->fwork[6] = gBosses[this->aiIndex].obj.pos.z; + this->fwork[5] = gBosses[this->aiIndex].obj.pos.y; + this->fwork[4] = gBosses[this->aiIndex].obj.pos.x; } else { - actor->fwork[6] = gBosses[0].obj.pos.z; - actor->fwork[5] = gBosses[0].obj.pos.y; - actor->fwork[4] = gBosses[0].obj.pos.x; + this->fwork[6] = gBosses[0].obj.pos.z; + this->fwork[5] = gBosses[0].obj.pos.y; + this->fwork[4] = gBosses[0].obj.pos.x; } - if ((fabsf(actor->obj.pos.x - actor->fwork[4]) < 2000.0f) && - (fabsf(actor->obj.pos.z - actor->fwork[6]) < 2000.0f)) { - actor->iwork[6]++; - if (actor->iwork[6] >= 9) { - actor->iwork[0] = 1; - actor->iwork[6] = 0; + if ((fabsf(this->obj.pos.x - this->fwork[4]) < 2000.0f) && (fabsf(this->obj.pos.z - this->fwork[6]) < 2000.0f)) { + this->iwork[6]++; + if (this->iwork[6] >= 9) { + this->iwork[0] = 1; + this->iwork[6] = 0; } } - if ((fabsf(actor->obj.pos.x - actor->fwork[4]) < 700.0f) && (fabsf(actor->obj.pos.x - actor->fwork[4]) < 700.0f)) { - actor->state = 1; - actor->iwork[6] = 0; + if ((fabsf(this->obj.pos.x - this->fwork[4]) < 700.0f) && (fabsf(this->obj.pos.x - this->fwork[4]) < 700.0f)) { + this->state = 1; + this->iwork[6] = 0; ret = true; } - if (actor->timer_0BE == 0) { - actor->timer_0BE = RAND_INT(200.0f) + 200; - actor->fwork[10] = 30.0f; + if (this->timer_0BE == 0) { + this->timer_0BE = RAND_INT(200.0f) + 200; + this->fwork[10] = 30.0f; } - if (gBosses[actor->aiIndex].obj.status == OBJ_FREE) { - actor->state = 1; - actor->aiIndex = 0; - actor->iwork[6] = 0; + if (gBosses[this->aiIndex].obj.status == OBJ_FREE) { + this->state = 1; + this->aiIndex = 0; + this->iwork[6] = 0; ret = true; } return ret; } -s32 func_hud_80090E8C(Actor* actor) { +s32 func_hud_80090E8C(ActorTeamBoss* this) { f32 x; f32 y; f32 z; f32 var_fv1_2; - if (actor->timer_0BC == 0) { + if (this->timer_0BC == 0) { if (gLevelType == LEVELTYPE_SPACE) { x = RAND_FLOAT_CENTERED(20000.0f); y = RAND_FLOAT_CENTERED(5000.0f); @@ -3987,95 +3991,94 @@ s32 func_hud_80090E8C(Actor* actor) { z = RAND_FLOAT_CENTERED(10000.0f); } - if ((fabsf(actor->obj.pos.x - x) > 2000.0f) && (fabsf(actor->obj.pos.z - z) > 2000.0f)) { - actor->fwork[4] = x; - actor->fwork[5] = y; - actor->fwork[6] = z; - actor->timer_0BC = RAND_INT(20.0f) + 10; + if ((fabsf(this->obj.pos.x - x) > 2000.0f) && (fabsf(this->obj.pos.z - z) > 2000.0f)) { + this->fwork[4] = x; + this->fwork[5] = y; + this->fwork[6] = z; + this->timer_0BC = RAND_INT(20.0f) + 10; } } - if (actor->aiType == AI360_FALCO) { + if (this->aiType == AI360_FALCO) { var_fv1_2 = 3000.0f; } else { var_fv1_2 = 5000.0f; } - if ((var_fv1_2 < fabsf(actor->obj.pos.x - gBosses[0].obj.pos.x)) && - (var_fv1_2 < fabsf(actor->obj.pos.z - gBosses[0].obj.pos.z))) { - actor->state = 0; + if ((var_fv1_2 < fabsf(this->obj.pos.x - gBosses[0].obj.pos.x)) && + (var_fv1_2 < fabsf(this->obj.pos.z - gBosses[0].obj.pos.z))) { + this->state = 0; } - if (actor->timer_0BE == 0) { - actor->timer_0BE = RAND_INT(200.0f) + 200; - actor->fwork[10] = 30.0f; + if (this->timer_0BE == 0) { + this->timer_0BE = RAND_INT(200.0f) + 200; + this->fwork[10] = 30.0f; } return false; } -bool func_hud_800910C0(Actor* actor) { +bool func_hud_800910C0(ActorTeamBoss* this) { f32 var_fv1; - if (actor->timer_0BC == 0) { - actor->vwork[28].x = RAND_FLOAT_CENTERED(2000.0f); - actor->vwork[28].y = RAND_FLOAT(1000.0f) + 200.0f; - actor->vwork[28].z = RAND_FLOAT_CENTERED(2000.0f); - actor->timer_0BC = RAND_INT(20.0f) + 10; + if (this->timer_0BC == 0) { + this->vwork[28].x = RAND_FLOAT_CENTERED(2000.0f); + this->vwork[28].y = RAND_FLOAT(1000.0f) + 200.0f; + this->vwork[28].z = RAND_FLOAT_CENTERED(2000.0f); + this->timer_0BC = RAND_INT(20.0f) + 10; } - actor->fwork[4] = gBosses[0].obj.pos.x + actor->vwork[28].x; - actor->fwork[5] = actor->vwork[28].y; - actor->fwork[6] = gBosses[0].obj.pos.z + actor->vwork[28].z; + this->fwork[4] = gBosses[0].obj.pos.x + this->vwork[28].x; + this->fwork[5] = this->vwork[28].y; + this->fwork[6] = gBosses[0].obj.pos.z + this->vwork[28].z; - if (actor->aiType == AI360_FALCO) { + if (this->aiType == AI360_FALCO) { var_fv1 = 1500.0f; } else { var_fv1 = 3000.0f; } - if ((var_fv1 < fabsf(actor->obj.pos.x - actor->fwork[4])) && - (var_fv1 < fabsf(actor->obj.pos.z - actor->fwork[6]))) { - actor->state = 0; + if ((var_fv1 < fabsf(this->obj.pos.x - this->fwork[4])) && (var_fv1 < fabsf(this->obj.pos.z - this->fwork[6]))) { + this->state = 0; } - if (actor->timer_0BE == 0) { - actor->timer_0BE = RAND_INT(200.0f) + 200; - actor->fwork[10] = 30.0f; + if (this->timer_0BE == 0) { + this->timer_0BE = RAND_INT(200.0f) + 200; + this->fwork[10] = 30.0f; } return false; } -void func_hud_80091254(Actor* actor) { +void func_hud_80091254(ActorTeamBoss* this) { if (gLevelMode == LEVELMODE_ALL_RANGE) { - func_hud_80090E8C(actor); + func_hud_80090E8C(this); } else { - func_hud_800910C0(actor); + func_hud_800910C0(this); } } -bool func_hud_80091298(Actor* actor) { - actor->fwork[1] = gPlayer[0].baseSpeed + 10.0f; - actor->fwork[3] = 3.6f; - actor->fwork[4] = gPlayer[0].pos.x + ((f32) (actor->aiType - 2) * 700.0f); - actor->fwork[5] = gPlayer[0].pos.y; - actor->fwork[6] = gPlayer[0].trueZpos; +bool func_hud_80091298(ActorTeamBoss* this) { + this->fwork[1] = gPlayer[0].baseSpeed + 10.0f; + this->fwork[3] = 3.6f; + this->fwork[4] = gPlayer[0].pos.x + ((f32) (this->aiType - 2) * 700.0f); + this->fwork[5] = gPlayer[0].pos.y; + this->fwork[6] = gPlayer[0].trueZpos; - if ((fabsf(actor->obj.pos.x - actor->fwork[4]) < 700.0f) || (fabsf(actor->obj.pos.z - actor->fwork[6]) < 700.0f)) { - actor->fwork[1] = gPlayer[0].baseSpeed - 10.0f; - actor->fwork[3] = 1.2f; + if ((fabsf(this->obj.pos.x - this->fwork[4]) < 700.0f) || (fabsf(this->obj.pos.z - this->fwork[6]) < 700.0f)) { + this->fwork[1] = gPlayer[0].baseSpeed - 10.0f; + this->fwork[3] = 1.2f; } return false; } -bool func_hud_80091368(Actor* actor) { - switch (actor->iwork[5]) { +bool func_hud_80091368(ActorTeamBoss* this) { + switch (this->iwork[5]) { case 0: - actor->fwork[5] = 20000.0f; - actor->iwork[1] = 1; - actor->iwork[5] = 1; - gTeamShields[actor->aiType] = 1; + this->fwork[5] = 20000.0f; + this->iwork[1] = 1; + this->iwork[5] = 1; + gTeamShields[this->aiType] = 1; - switch (actor->aiType) { + switch (this->aiType) { case AI360_FALCO: Radio_PlayMessage(gMsg_ID_20220, RCID_FALCO); break; @@ -4088,65 +4091,65 @@ bool func_hud_80091368(Actor* actor) { Radio_PlayMessage(gMsg_ID_20222, RCID_SLIPPY); break; } - gTeamShields[actor->aiType] = -1; + gTeamShields[this->aiType] = -1; break; case 1: - if (actor->fwork[29] < 2.0f) { - actor->fwork[29] = 2.0f; + if (this->fwork[29] < 2.0f) { + this->fwork[29] = 2.0f; } - if (actor->timer_0BC == 0) { - actor->timer_0BC = RAND_INT(20.0f) + 30; - actor->fwork[7] = 360.0f; - actor->fwork[8] = 0.0f; + if (this->timer_0BC == 0) { + this->timer_0BC = RAND_INT(20.0f) + 30; + this->fwork[7] = 360.0f; + this->fwork[8] = 0.0f; } - if (actor->obj.pos.y > 3000.0f) { - Object_Kill(&actor->obj, actor->sfxSource); + if (this->obj.pos.y > 3000.0f) { + Object_Kill(&this->obj, this->sfxSource); } break; } return false; } -void func_hud_800914FC(Actor* actor) { - switch (actor->state) { +void func_hud_800914FC(ActorTeamBoss* this) { + switch (this->state) { case 0: - if (!func_hud_80090CCC(actor)) { + if (!func_hud_80090CCC(this)) { break; } case 1: - func_hud_80091254(actor); + func_hud_80091254(this); break; case 2: - func_hud_80091298(actor); + func_hud_80091298(this); break; case 3: - func_hud_80091368(actor); + func_hud_80091368(this); break; case 7: - func_hud_80090A00(actor); + func_hud_80090A00(this); break; } - if ((gTeamShields[actor->aiType] <= 0) && (actor->state != 3)) { - actor->iwork[5] = 0; - actor->state = 3; + if ((gTeamShields[this->aiType] <= 0) && (this->state != 3)) { + this->iwork[5] = 0; + this->state = 3; } if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) { - if ((actor->state != 2) && (actor->state != 3)) { - actor->iwork[4] = 1; - actor->state = 2; + if ((this->state != 2) && (this->state != 3)) { + this->iwork[4] = 1; + this->state = 2; } } } -bool func_hud_800915FC(Actor* actor) { +bool func_hud_800915FC(ActorTeamBoss* this) { s32 i; f32 y; Vec3f vec; @@ -4154,7 +4157,7 @@ bool func_hud_800915FC(Actor* actor) { Scenery360* scenery360; bool ret = false; - Math_Vec3fFromAngles(&vec, 0.0f, actor->rot_0F4.y, 650.0f + actor->fwork[9] * 10.0f); + Math_Vec3fFromAngles(&vec, 0.0f, this->rot_0F4.y, 650.0f + this->fwork[9] * 10.0f); if (gLevelMode == LEVELMODE_ALL_RANGE) { for (i = 0, scenery360 = &gScenery360[0]; i < 200; i++, scenery360++) { @@ -4162,15 +4165,15 @@ bool func_hud_800915FC(Actor* actor) { continue; } - if (fabsf(scenery360->obj.pos.x - (actor->obj.pos.x + vec.x)) > 1200.0f) { + if (fabsf(scenery360->obj.pos.x - (this->obj.pos.x + vec.x)) > 1200.0f) { continue; } - if (fabsf(scenery360->obj.pos.z - (actor->obj.pos.z + vec.z)) > 1200.0f) { + if (fabsf(scenery360->obj.pos.z - (this->obj.pos.z + vec.z)) > 1200.0f) { continue; } - if (actor->obj.pos.y + vec.y < 650.0f) { + if (this->obj.pos.y + vec.y < 650.0f) { ret = true; } } @@ -4183,7 +4186,7 @@ bool func_hud_800915FC(Actor* actor) { boss = &gBosses[0]; y = 650.0f; - if (actor->aiType < AI360_KATT) { + if (this->aiType < AI360_KATT) { y = 720.0f; } @@ -4191,16 +4194,16 @@ bool func_hud_800915FC(Actor* actor) { y = 280.0f; } - if (!(fabsf(boss->obj.pos.x - (actor->obj.pos.x + vec.x)) > 1000.0f) && - !(fabsf(boss->obj.pos.z - (actor->obj.pos.z + vec.z)) > 1000.0f) && - !(fabsf(boss->obj.pos.y - (actor->obj.pos.y)) > y)) { + if (!(fabsf(boss->obj.pos.x - (this->obj.pos.x + vec.x)) > 1000.0f) && + !(fabsf(boss->obj.pos.z - (this->obj.pos.z + vec.z)) > 1000.0f) && + !(fabsf(boss->obj.pos.y - (this->obj.pos.y)) > y)) { ret = true; } return ret; } -bool func_hud_80091864(Actor* actor) { +bool func_hud_80091864(ActorTeamBoss* this) { f32 sp44; f32 sp40; f32 sp3C; @@ -4210,26 +4213,25 @@ bool func_hud_80091864(Actor* actor) { f32 sp2C; f32 sp28; - x = actor->fwork[4] - actor->obj.pos.x; - y = actor->fwork[5] - actor->obj.pos.y; - z = actor->fwork[6] - actor->obj.pos.z; + x = this->fwork[4] - this->obj.pos.x; + y = this->fwork[5] - this->obj.pos.y; + z = this->fwork[6] - this->obj.pos.z; sp40 = Math_RadToDeg(Math_Atan2F(x, z)); sp44 = Math_RadToDeg(Math_Atan2F(y, sqrtf(SQ(x) + SQ(z)))); - if ((func_hud_800915FC(actor) != 0) && (actor->iwork[4] == 0)) { + if ((func_hud_800915FC(this) != 0) && (this->iwork[4] == 0)) { sp44 += 40.0f; if (sp44 >= 360.0f) { sp44 -= 360.0f; - } else if ((actor->obj.pos.y < (gGroundHeight + 50.0f)) && (gLevelType == LEVELTYPE_PLANET) && - (sp44 > 180.0f)) { + } else if ((this->obj.pos.y < (gGroundHeight + 50.0f)) && (gLevelType == LEVELTYPE_PLANET) && (sp44 > 180.0f)) { sp44 = 0.0f; } - actor->iwork[0] = 0; + this->iwork[0] = 0; } - sp3C = Math_SmoothStepToAngle(&actor->rot_0F4.y, sp40, 0.5f, actor->fwork[2], 0.001f) * 30.0f; - Math_SmoothStepToAngle(&actor->rot_0F4.x, sp44, 0.5f, actor->fwork[2], 0.0001f); + sp3C = Math_SmoothStepToAngle(&this->rot_0F4.y, sp40, 0.5f, this->fwork[2], 0.001f) * 30.0f; + Math_SmoothStepToAngle(&this->rot_0F4.x, sp44, 0.5f, this->fwork[2], 0.0001f); sp2C = sp28 = 0.0f; if (sp3C < 0.0f) { @@ -4238,10 +4240,10 @@ bool func_hud_80091864(Actor* actor) { sp28 = sp3C; } - Math_SmoothStepToF(&actor->fwork[15], sp2C, 0.2f, 30.0f, 0.00f); - Math_SmoothStepToF(&actor->fwork[26], -sp2C, 0.2f, 30.0f, 0.00f); - Math_SmoothStepToF(&actor->fwork[16], sp28, 0.2f, 30.0f, 0.00f); - Math_SmoothStepToF(&actor->fwork[27], -sp28, 0.2f, 30.0f, 0.00f); + Math_SmoothStepToF(&this->fwork[15], sp2C, 0.2f, 30.0f, 0.00f); + Math_SmoothStepToF(&this->fwork[26], -sp2C, 0.2f, 30.0f, 0.00f); + Math_SmoothStepToF(&this->fwork[16], sp28, 0.2f, 30.0f, 0.00f); + Math_SmoothStepToF(&this->fwork[27], -sp28, 0.2f, 30.0f, 0.00f); if (sp3C < 0.0f) { sp3C *= -1.0f; @@ -4249,101 +4251,101 @@ bool func_hud_80091864(Actor* actor) { sp3C = 360.0f - sp3C; } - Math_SmoothStepToF(&actor->fwork[7], actor->fwork[8], 0.2f, 30.0f, 0.0001f); + Math_SmoothStepToF(&this->fwork[7], this->fwork[8], 0.2f, 30.0f, 0.0001f); - if ((actor->fwork[7] > 0.01f) && (actor->fwork[7] < 359.9f)) { - Math_SmoothStepToAngle(&actor->obj.rot.z, actor->fwork[7], 0.2f, 100.0f, 0.01f); + if ((this->fwork[7] > 0.01f) && (this->fwork[7] < 359.9f)) { + Math_SmoothStepToAngle(&this->obj.rot.z, this->fwork[7], 0.2f, 100.0f, 0.01f); } else { - Math_SmoothStepToAngle(&actor->obj.rot.z, sp3C, 0.1f, 3.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, sp3C, 0.1f, 3.0f, 0.01f); } return false; } -bool func_hud_80091B90(Actor* actor) { +bool func_hud_80091B90(ActorTeamBoss* this) { Vec3f vec; - actor->obj.rot.x = -actor->rot_0F4.x; - actor->obj.rot.y = actor->rot_0F4.y; + this->obj.rot.x = -this->rot_0F4.x; + this->obj.rot.y = this->rot_0F4.y; - Math_SmoothStepToF(&actor->fwork[0], actor->fwork[1], 0.2f, 1.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[2], actor->fwork[3], 1.0f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[0], this->fwork[1], 0.2f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[2], this->fwork[3], 1.0f, 1.0f, 0.0f); - Math_Vec3fFromAngles(&vec, actor->obj.rot.x, actor->obj.rot.y, actor->fwork[0] + actor->fwork[9]); + Math_Vec3fFromAngles(&vec, this->obj.rot.x, this->obj.rot.y, this->fwork[0] + this->fwork[9]); - actor->vel.y = actor->fwork[14] + vec.y; - actor->vel.x = actor->fwork[13] + vec.x; - actor->vel.z = actor->fwork[12] + vec.z; + this->vel.y = this->fwork[14] + vec.y; + this->vel.x = this->fwork[13] + vec.x; + this->vel.z = this->fwork[12] + vec.z; - actor->fwork[13] -= actor->fwork[13] * 0.1f; - actor->fwork[14] -= actor->fwork[14] * 0.1f; - actor->fwork[12] -= actor->fwork[12] * 0.1f; + this->fwork[13] -= this->fwork[13] * 0.1f; + this->fwork[14] -= this->fwork[14] * 0.1f; + this->fwork[12] -= this->fwork[12] * 0.1f; - if ((actor->obj.pos.y < gGroundHeight + 40.0f) && (actor->vel.y < 0.0f) && (gLevelType == LEVELTYPE_PLANET)) { - actor->obj.pos.y = gGroundHeight + 40.0f; - actor->vel.y = 0.0f; + if ((this->obj.pos.y < gGroundHeight + 40.0f) && (this->vel.y < 0.0f) && (gLevelType == LEVELTYPE_PLANET)) { + this->obj.pos.y = gGroundHeight + 40.0f; + this->vel.y = 0.0f; } - actor->vel.z -= gPathVelZ; + this->vel.z -= gPathVelZ; return false; } -bool func_hud_80091CF8(Actor* actor) { - if (actor->iwork[1] != 0) { - if (actor->fwork[10] < 0.1f) { - actor->fwork[10] = 20.0f; - AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, actor->sfxSource, 0); - actor->fwork[29] = 5.0f; +bool func_hud_80091CF8(ActorTeamBoss* this) { + if (this->iwork[1] != 0) { + if (this->fwork[10] < 0.1f) { + this->fwork[10] = 20.0f; + AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, this->sfxSource, 0); + this->fwork[29] = 5.0f; } - actor->iwork[1] = 0; + this->iwork[1] = 0; } - Math_SmoothStepToF(&actor->fwork[10], 0.0f, 0.1f, 0.2f, 0.0f); - Math_SmoothStepToF(&actor->fwork[9], actor->fwork[10], 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[10], 0.0f, 0.1f, 0.2f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], this->fwork[10], 0.1f, 2.0f, 0.0f); - if (actor->fwork[10] < 0.1f) { - actor->iwork[11] = 1; + if (this->fwork[10] < 0.1f) { + this->iwork[11] = 1; } return false; } -bool func_hud_80091DF4(Actor* actor) { - Vec3f sp44; - Vec3f sp38; +bool func_hud_80091DF4(ActorTeamBoss* this) { + Vec3f src; + Vec3f dest; - if ((actor->iwork[0] != 0) && (gBossHealthBar > 70)) { - actor->iwork[0] = 0; - sp44.x = 0.0f; - sp44.y = 0.0f; - sp44.z = 100.0f; - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); - Actor_SpawnPlayerLaser(actor->aiType, actor->obj.pos.x + (sp38.x * 1.5), actor->obj.pos.y + (sp38.y * 1.5), - actor->obj.pos.z + (sp38.z * 1.5), sp38.x, sp38.y, sp38.z, actor->obj.rot.x, - actor->obj.rot.y, actor->obj.rot.z); + if ((this->iwork[0] != 0) && (gBossHealthBar > 70)) { + this->iwork[0] = 0; + src.x = 0.0f; + src.y = 0.0f; + src.z = 100.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + Actor_SpawnPlayerLaser(this->aiType, this->obj.pos.x + (dest.x * 1.5), this->obj.pos.y + (dest.y * 1.5), + this->obj.pos.z + (dest.z * 1.5), dest.x, dest.y, dest.z, this->obj.rot.x, + this->obj.rot.y, this->obj.rot.z); } return false; } -bool func_hud_80091F00(Actor* actor) { - u8 temp_v0 = actor->dmgType; +bool func_hud_80091F00(ActorTeamBoss* this) { + u8 temp_v0 = this->dmgType; Vec3f sp40; Vec3f sp34; - actor->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; - if ((actor->state == 3) || (temp_v0 == DMG_EXPLOSION)) { + if ((this->state == 3) || (temp_v0 == DMG_EXPLOSION)) { return false; } - actor->health -= actor->damage; - if (actor->health <= 0) { - actor->health = -1; + this->health -= this->damage; + if (this->health <= 0) { + this->health = -1; } - actor->timer_0C6 = 20; + this->timer_0C6 = 20; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, actor->sfxSource, 4); - func_effect_8007D10C(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 1.5f); - Matrix_RotateY(gCalcMatrix, actor->rot_0F4.y * M_DTOR, MTXF_NEW); + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + func_effect_8007D10C(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.5f); + Matrix_RotateY(gCalcMatrix, this->rot_0F4.y * M_DTOR, MTXF_NEW); if (Rand_ZeroOne() < 0.5f) { sp40.x = -20.0f; @@ -4356,18 +4358,18 @@ bool func_hud_80091F00(Actor* actor) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp40, &sp34); - actor->fwork[13] = sp34.x; - actor->fwork[14] = sp34.y; - actor->fwork[12] = sp34.z; + this->fwork[13] = sp34.x; + this->fwork[14] = sp34.y; + this->fwork[12] = sp34.z; - gTeamShields[actor->aiType] = actor->health; + gTeamShields[this->aiType] = this->health; if (gRadioState != 0) { return false; } - if ((actor->dmgType == DMG_COLLISION) && (actor->dmgSource == AI360_FOX + 1)) { - switch (actor->aiType) { + if ((this->dmgType == DMG_COLLISION) && (this->dmgSource == AI360_FOX + 1)) { + switch (this->aiType) { case AI360_FALCO: Radio_PlayMessage(gMsg_ID_20210, RCID_FALCO); break; @@ -4380,8 +4382,8 @@ bool func_hud_80091F00(Actor* actor) { } } - if ((actor->dmgType != DMG_COLLISION) && (actor->dmgSource == AI360_FOX + 1)) { - switch (actor->aiType) { + if ((this->dmgType != DMG_COLLISION) && (this->dmgSource == AI360_FOX + 1)) { + switch (this->aiType) { case AI360_FALCO: Radio_PlayMessage(gMsg_ID_20060, RCID_FALCO); break; @@ -4394,8 +4396,8 @@ bool func_hud_80091F00(Actor* actor) { } } - if ((actor->dmgSource == DMG_SRC_2) || (actor->dmgSource == DMG_SRC_100)) { - switch (actor->aiType) { + if ((this->dmgSource == DMG_SRC_2) || (this->dmgSource == DMG_SRC_100)) { + switch (this->aiType) { case AI360_FALCO: Radio_PlayMessage(gMsg_ID_20030, RCID_FALCO); break; @@ -4407,279 +4409,278 @@ bool func_hud_80091F00(Actor* actor) { break; } } - actor->iwork[8] = 20; + this->iwork[8] = 20; return false; } -void func_hud_80092244(Actor* actor) { - gRadarMarks[actor->index].status = 1; - gRadarMarks[actor->index].type = actor->aiType; - gRadarMarks[actor->index].pos.x = actor->obj.pos.x; - gRadarMarks[actor->index].pos.y = actor->obj.pos.y; - gRadarMarks[actor->index].pos.z = actor->obj.pos.z; - gRadarMarks[actor->index].yRot = actor->rot_0F4.y + 180.0f; +void func_hud_80092244(ActorTeamBoss* this) { + gRadarMarks[this->index].status = 1; + gRadarMarks[this->index].type = this->aiType; + gRadarMarks[this->index].pos.x = this->obj.pos.x; + gRadarMarks[this->index].pos.y = this->obj.pos.y; + gRadarMarks[this->index].pos.z = this->obj.pos.z; + gRadarMarks[this->index].yRot = this->rot_0F4.y + 180.0f; } -void func_hud_800922F4(Actor* actor) { - s32 temp; +void func_hud_800922F4(ActorTeamBoss* this) { + s32 mask; - if ((gTeamShields[actor->aiType] < 64) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) { - temp = 8 - 1; - if (gTeamShields[actor->aiType] > 16) { - temp = 16 - 1; + if ((gTeamShields[this->aiType] < 64) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) { + mask = 8 - 1; + if (gTeamShields[this->aiType] > 16) { + mask = 16 - 1; } - if (gTeamShields[actor->aiType] > 32) { - temp = 32 - 1; + if (gTeamShields[this->aiType] > 32) { + mask = 32 - 1; } - if (gTeamShields[actor->aiType] > 48) { - temp = 64 - 1; + if (gTeamShields[this->aiType] > 48) { + mask = 64 - 1; } - if ((gGameFrameCount & temp) == 0) { - func_effect_8007D10C(actor->obj.pos.x + RAND_FLOAT_CENTERED(10.0f), actor->obj.pos.y + RAND_FLOAT(10.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(10.0f), 2.2f); + if ((gGameFrameCount & mask) == 0) { + func_effect_8007D10C(this->obj.pos.x + RAND_FLOAT_CENTERED(10.0f), this->obj.pos.y + RAND_FLOAT(10.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(10.0f), 2.2f); } - if (!(gGameFrameCount & (temp >> 2)) && (Rand_ZeroOne() < 0.5f)) { - func_effect_8007C120(actor->obj.pos.x + RAND_FLOAT_CENTERED(30.0f), actor->obj.pos.y + RAND_FLOAT(10.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(30.0f), actor->vel.x, actor->vel.y, - actor->vel.z, actor->scale * 0.07f, 3); + if (!(gGameFrameCount & (mask >> 2)) && (Rand_ZeroOne() < 0.5f)) { + Effect_Effect390_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(30.0f), this->obj.pos.y + RAND_FLOAT(10.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(30.0f), this->vel.x, this->vel.y, this->vel.z, + this->scale * 0.07f, 3); } } } -bool func_hud_800924E0(Actor* actor) { +bool func_hud_800924E0(ActorTeamBoss* this) { Vec3f src; Vec3f dest; f32 var_fv0; bool ret = false; - if (actor->iwork[7] == 0) { - actor->vwork[29].x = actor->obj.rot.x; - actor->iwork[7] = 1; - actor->iwork[1] = 1; + if (this->iwork[7] == 0) { + this->vwork[29].x = this->obj.rot.x; + this->iwork[7] = 1; + this->iwork[1] = 1; } - if (actor->fwork[29] < 2.0f) { - actor->fwork[29] = 2.0f; + if (this->fwork[29] < 2.0f) { + this->fwork[29] = 2.0f; } var_fv0 = 60.0f; - if (actor->fwork[19] > 240.0f) { + if (this->fwork[19] > 240.0f) { var_fv0 = -50.0f; } - Math_SmoothStepToF(&actor->fwork[15], var_fv0, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[26], var_fv0, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[16], var_fv0, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[27], var_fv0, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[15], var_fv0, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[26], var_fv0, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[16], var_fv0, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[27], var_fv0, 0.3f, 100.0f, 0.0f); - if (actor->fwork[19] < 180.0f) { - actor->obj.pos.y += 2.0f; + if (this->fwork[19] < 180.0f) { + this->obj.pos.y += 2.0f; } - if (Math_SmoothStepToF(&actor->fwork[19], 360.0f, 0.1f, 5.0f, 0.01f) == 0.0f) { - actor->obj.rot.x = actor->vwork[29].x; - actor->fwork[19] = actor->vwork[29].x = 0.0f; + if (Math_SmoothStepToF(&this->fwork[19], 360.0f, 0.1f, 5.0f, 0.01f) == 0.0f) { + this->obj.rot.x = this->vwork[29].x; + this->fwork[19] = this->vwork[29].x = 0.0f; ret = true; - actor->iwork[7] = 0; - actor->fwork[29] = 1.0f; + this->iwork[7] = 0; + this->fwork[29] = 1.0f; } - if (actor->iwork[7] != 0) { - Math_SmoothStepToAngle(&actor->vwork[29].x, 0.0f, 0.1f, 5.0f, 0.0f); - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 5.0f, 0.0f); - actor->obj.rot.x = actor->vwork[29].x + (360.0f - actor->fwork[19]); + if (this->iwork[7] != 0) { + Math_SmoothStepToAngle(&this->vwork[29].x, 0.0f, 0.1f, 5.0f, 0.0f); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 5.0f, 0.0f); + this->obj.rot.x = this->vwork[29].x + (360.0f - this->fwork[19]); - Matrix_RotateY(gCalcMatrix, actor->rot_0F4.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -(M_DTOR * ((actor->rot_0F4.x + actor->vwork[29].x) + actor->fwork[19])), - MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->rot_0F4.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -(M_DTOR * ((this->rot_0F4.x + this->vwork[29].x) + this->fwork[19])), MTXF_APPLY); - src.z = actor->fwork[1]; + src.z = this->fwork[1]; src.y = 0.0f; src.x = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - actor->vel.x = dest.x; - actor->vel.y = dest.y; - actor->vel.z = dest.z; + this->vel.x = dest.x; + this->vel.y = dest.y; + this->vel.z = dest.z; - if (actor->obj.pos.y < gGroundHeight + 50.0f) { - actor->obj.pos.y = gGroundHeight + 50.0f; - actor->vel.y = 0.0f; + if (this->obj.pos.y < gGroundHeight + 50.0f) { + this->obj.pos.y = gGroundHeight + 50.0f; + this->vel.y = 0.0f; } } return ret; } -bool func_hud_800927A0(Actor* actor) { +bool func_hud_800927A0(ActorTeamBoss* this) { Vec3f src; Vec3f dest; f32 sp54; f32 sp50; bool ret = false; - if (actor->iwork[11] == 0) { - actor->unk_046 = 0; - actor->iwork[11] = 1; - actor->iwork[1] = 1; - actor->vwork[29].x = actor->obj.rot.x; - actor->vwork[29].y = actor->obj.rot.y; - actor->vwork[29].z = actor->obj.rot.z; + if (this->iwork[11] == 0) { + this->unk_046 = 0; + this->iwork[11] = 1; + this->iwork[1] = 1; + this->vwork[29].x = this->obj.rot.x; + this->vwork[29].y = this->obj.rot.y; + this->vwork[29].z = this->obj.rot.z; } else { - Math_SmoothStepToAngle(&actor->vwork[29].z, 0.0f, 0.1f, 5.0f, 0.0f); - Math_SmoothStepToAngle(&actor->vwork[29].y, 0.0f, 0.1f, 5.0f, 0.0f); - Math_SmoothStepToAngle(&actor->vwork[29].x, 0.0f, 0.1f, 5.0f, 0.0f); - sp50 = Math_RadToDeg(Math_Atan2F(0.0f - actor->obj.pos.x, 0.0f - actor->obj.pos.z)); + Math_SmoothStepToAngle(&this->vwork[29].z, 0.0f, 0.1f, 5.0f, 0.0f); + Math_SmoothStepToAngle(&this->vwork[29].y, 0.0f, 0.1f, 5.0f, 0.0f); + Math_SmoothStepToAngle(&this->vwork[29].x, 0.0f, 0.1f, 5.0f, 0.0f); + sp50 = Math_RadToDeg(Math_Atan2F(0.0f - this->obj.pos.x, 0.0f - this->obj.pos.z)); - switch (actor->unk_046) { + switch (this->unk_046) { case 0: - if (actor->unk_04A != 0) { - actor->timer_0BC = 30; + if (this->unk_04A != 0) { + this->timer_0BC = 30; } else { - actor->timer_0BC = 10; + this->timer_0BC = 10; } - actor->unk_046 = 1; - if (actor->fwork[19] > 180.0f) { - actor->fwork[19] = actor->fwork[19] - 360.0f; + this->unk_046 = 1; + if (this->fwork[19] > 180.0f) { + this->fwork[19] = this->fwork[19] - 360.0f; } case 1: - if (actor->timer_0BC == 0) { - actor->unk_046 = 2; - if (actor->unk_04A != 0) { - actor->timer_0BC = 80; + if (this->timer_0BC == 0) { + this->unk_046 = 2; + if (this->unk_04A != 0) { + this->timer_0BC = 80; } else { - actor->timer_0BC = 60; + this->timer_0BC = 60; } - Math_SmoothStepToF(&actor->fwork[20], 0.0f, 0.1f, 15.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[20], 0.0f, 0.1f, 15.0f, 0.0f); } break; case 2: - if (actor->fwork[19] > 140.0f) { + if (this->fwork[19] > 140.0f) { sp54 = 0.0f; } else { sp54 = 60.0f; } - Math_SmoothStepToF(&actor->fwork[15], sp54, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[26], sp54, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[16], sp54, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[27], sp54, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[19], 190.0f, 0.1f, 6.0f, 0.001f); - Math_SmoothStepToF(&actor->fwork[20], 0.0f, 0.1f, 15.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[15], sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[26], sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[16], sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[27], sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[19], 190.0f, 0.1f, 6.0f, 0.001f); + Math_SmoothStepToF(&this->fwork[20], 0.0f, 0.1f, 15.0f, 0.0f); - if (actor->fwork[19] > 180.0f) { - actor->rot_0F4.y += 180.0f; - if (actor->rot_0F4.y >= 360.0f) { - actor->rot_0F4.y = actor->rot_0F4.y - 360.0f; + if (this->fwork[19] > 180.0f) { + this->rot_0F4.y += 180.0f; + if (this->rot_0F4.y >= 360.0f) { + this->rot_0F4.y = this->rot_0F4.y - 360.0f; } - actor->fwork[19] -= 180.0f; + this->fwork[19] -= 180.0f; - if ((sp50 - actor->rot_0F4.y) < 180.0f) { - actor->fwork[20] = 180.0f; + if ((sp50 - this->rot_0F4.y) < 180.0f) { + this->fwork[20] = 180.0f; } else { - actor->fwork[20] = -180.0f; + this->fwork[20] = -180.0f; } - actor->iwork[1] = 1; - actor->unk_046 = 3; + this->iwork[1] = 1; + this->unk_046 = 3; } - actor->fwork[28] -= 0.2f; + this->fwork[28] -= 0.2f; break; case 3: - if (actor->fwork[29] < 2.0f) { - actor->fwork[29] = 2.0f; + if (this->fwork[29] < 2.0f) { + this->fwork[29] = 2.0f; } - Math_SmoothStepToF(&actor->fwork[20], 0.0f, 0.1f, 15.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[20], 0.0f, 0.1f, 15.0f, 0.0f); - sp54 = actor->fwork[20] * 0.3f; + sp54 = this->fwork[20] * 0.3f; - Math_SmoothStepToF(&actor->fwork[15], sp54, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[26], sp54, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[16], -sp54, 0.3f, 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[27], -sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[15], sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[26], sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[16], -sp54, 0.3f, 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[27], -sp54, 0.3f, 100.0f, 0.0f); - if (actor->unk_04A != 0) { - Math_SmoothStepToAngle(&actor->rot_0F4.y, sp50, 0.1f, 2.0f, 0.0f); + if (this->unk_04A != 0) { + Math_SmoothStepToAngle(&this->rot_0F4.y, sp50, 0.1f, 2.0f, 0.0f); } - if (actor->obj.pos.y < gPlayer[0].pathHeight) { - if (actor->fwork[28] < 0.0f) { - actor->fwork[28] = actor->fwork[28] + 0.2f; + if (this->obj.pos.y < gPlayer[0].pathHeight) { + if (this->fwork[28] < 0.0f) { + this->fwork[28] = this->fwork[28] + 0.2f; } } else { - actor->fwork[28] -= 0.2f; + this->fwork[28] -= 0.2f; } - if (actor->timer_0BC == 0) { + if (this->timer_0BC == 0) { ret = true; - actor->iwork[11] = 0; - actor->unk_046 = 0; - actor->fwork[28] = 0.0f; - actor->fwork[20] = 0.0f; - actor->fwork[29] = 1.0f; + this->iwork[11] = 0; + this->unk_046 = 0; + this->fwork[28] = 0.0f; + this->fwork[20] = 0.0f; + this->fwork[29] = 1.0f; } break; } - actor->obj.rot.x = actor->vwork[29].x - actor->fwork[19]; - actor->obj.rot.y = actor->rot_0F4.y; - actor->obj.rot.z = actor->vwork[29].z + actor->fwork[20]; - actor->obj.pos.y += actor->fwork[28]; + this->obj.rot.x = this->vwork[29].x - this->fwork[19]; + this->obj.rot.y = this->rot_0F4.y; + this->obj.rot.z = this->vwork[29].z + this->fwork[20]; + this->obj.pos.y += this->fwork[28]; - Matrix_RotateY(gCalcMatrix, actor->rot_0F4.y * M_DTOR, 0U); - Matrix_RotateX(gCalcMatrix, -(M_DTOR * (actor->rot_0F4.x + actor->vwork[29].x + actor->fwork[19])), MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->rot_0F4.y * M_DTOR, 0U); + Matrix_RotateX(gCalcMatrix, -(M_DTOR * (this->rot_0F4.x + this->vwork[29].x + this->fwork[19])), MTXF_APPLY); - src.z = actor->fwork[1]; + src.z = this->fwork[1]; src.y = 0.0f; src.x = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - actor->vel.x = dest.x; - actor->vel.y = dest.y; - actor->vel.z = dest.z; + this->vel.x = dest.x; + this->vel.y = dest.y; + this->vel.z = dest.z; } return ret; } -void ActorTeamBoss_Init(Actor* actor) { +void ActorTeamBoss_Init(ActorTeamBoss* this) { s32 D_800D22A8[] = { TEAM_ID_FALCO, TEAM_ID_SLIPPY, TEAM_ID_PEPPY }; if (gCurrentLevel != LEVEL_TITANIA) { - actor->fwork[1] = 40.0f; - actor->fwork[3] = 1.2f; - actor->aiType = (D_hud_800D1970 % 4U) + 1; + this->fwork[1] = 40.0f; + this->fwork[3] = 1.2f; + this->aiType = (D_hud_800D1970 % 4U) + 1; D_hud_800D1970++; } else { - actor->state = 7; - actor->aiType = AI360_SLIPPY; - actor->iwork[5] = 0; + this->state = 7; + this->aiType = AI360_SLIPPY; + this->iwork[5] = 0; gTeamShields[TEAM_ID_SLIPPY] = 255; } - actor->iwork[12] = D_800D22A8[actor->aiType - 1]; - actor->iwork[11] = 1; + this->iwork[12] = D_800D22A8[this->aiType - 1]; + this->iwork[11] = 1; if (gLevelType == LEVELTYPE_PLANET) { - actor->drawShadow = true; + this->drawShadow = true; } - AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, this->sfxSource, 4); if (((s32) (D_hud_800D1970 % 4U) == AI360_SLIPPY) && (gCurrentLevel == LEVEL_SECTOR_X)) { - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } - if (gTeamShields[actor->aiType] <= 0) { - Object_Kill(&actor->obj, actor->sfxSource); + if (gTeamShields[this->aiType] <= 0) { + Object_Kill(&this->obj, this->sfxSource); } } @@ -4761,64 +4762,63 @@ void ActorTeamBoss_Update(ActorTeamBoss* this) { this->iwork[10] = 0; } -void func_hud_80093164(Actor* actor) { +void func_hud_80093164(ActorCutscene* this) { Vec3f src; Vec3f dest; Player* player = &gPlayer[0]; - if (actor->state == 0) { - switch (actor->animFrame) { + if (this->state == 0) { + switch (this->animFrame) { case 1: - if ((player->state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO) || (actor->animFrame != 1)) { + if ((player->state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO) || (this->animFrame != 1)) { if (gCsFrameCount > 1588) { - actor->fwork[0] = 5.0f; + this->fwork[0] = 5.0f; } else { - actor->fwork[0] = 15.0f; + this->fwork[0] = 15.0f; } - actor->fwork[0] = 12.0f; + this->fwork[0] = 12.0f; } break; case 41: - Aquas_801BE034(actor); + Aquas_CsAqFishGroup_Update(this); break; case 44: - actor->iwork[0]++; - if (actor->iwork[0] > 118) { - actor->iwork[0] = 0; + this->iwork[0]++; + if (this->iwork[0] > 118) { + this->iwork[0] = 0; } break; } } - Matrix_RotateY(gCalcMatrix, (actor->rot_0F4.y + 180.0f) * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -(actor->rot_0F4.x * M_DTOR), MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, (this->rot_0F4.y + 180.0f) * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -(this->rot_0F4.x * M_DTOR), MTXF_APPLY); src.x = 0.0f; src.y = 0.0f; - src.z = actor->fwork[0]; + src.z = this->fwork[0]; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - actor->vel.x = dest.x; - actor->vel.y = dest.y; - actor->vel.z = dest.z; - actor->obj.rot.x = -actor->rot_0F4.x; - actor->obj.rot.y = actor->rot_0F4.y + 180.0f; - actor->obj.rot.z = -actor->rot_0F4.z; + this->vel.x = dest.x; + this->vel.y = dest.y; + this->vel.z = dest.z; + this->obj.rot.x = -this->rot_0F4.x; + this->obj.rot.y = this->rot_0F4.y + 180.0f; + this->obj.rot.z = -this->rot_0F4.z; } void func_hud_80093310(void) { - Actor* this = &gActors[0]; + ActorCutscene* actor = &gActors[0]; - Actor_Initialize(this); - this->obj.status = OBJ_INIT; - this->obj.pos.x = 0.0f; - this->obj.pos.y += 1700.0f; - this->obj.pos.z -= 5000.0f; - gActors[0].animFrame = 1; - if (1) {} - this->obj.id = OBJ_ACTOR_CUTSCENE; - Object_SetInfo(&this->info, this->obj.id); - AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, this->sfxSource, 0); + Actor_Initialize(actor); + actor->obj.status = OBJ_INIT; + actor->obj.pos.x = 0.0f; + actor->obj.pos.y += 1700.0f; + actor->obj.pos.z -= 5000.0f; + actor->animFrame = 1; + actor->obj.id = OBJ_ACTOR_CUTSCENE; + Object_SetInfo(&actor->info, actor->obj.id); + AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, actor->sfxSource, 0); } void func_hud_800933D8(f32 x, f32 y, f32 z, f32 arg3) { @@ -5158,7 +5158,7 @@ void HUD_AquasStart(Player* player) { player->pos.z = dest.z; if (((player->csTimer % 8) == 0) && (player->csTimer > 740)) { - func_effect_8007D9DC(player->cam.eye.x, 1600.0f, player->cam.eye.z, 10.0f, 100.0f, 0); + Effect_Effect367_Spawn(player->cam.eye.x, 1600.0f, player->cam.eye.z, 10.0f, 100.0f, 0); } if ((player->unk_018 > -200.0f) && (D_ctx_80177A10[8] < 6)) { @@ -5173,9 +5173,9 @@ void HUD_AquasStart(Player* player) { if (((gGameFrameCount % 3) == 0) && (player->csTimer <= 740)) { for (i = 0; i < 8; i++) { - Aquas_801AC8A8(player->cam.eye.x + RAND_FLOAT_CENTERED(D_800D22C4), - player->cam.eye.y + 260.0f + RAND_FLOAT_CENTERED(D_800D22C8), - player->cam.eye.z + RAND_FLOAT_CENTERED(D_800D22CC), 1.0f, 0); + Aquas_Effect366_Spawn(player->cam.eye.x + RAND_FLOAT_CENTERED(D_800D22C4), + player->cam.eye.y + 260.0f + RAND_FLOAT_CENTERED(D_800D22C8), + player->cam.eye.z + RAND_FLOAT_CENTERED(D_800D22CC), 1.0f, 0); } } } @@ -5265,8 +5265,9 @@ void HUD_AquasStart(Player* player) { AUDIO_PLAY_BGM(NA_BGM_STAGE_AQ); } - Aquas_801AC8A8(player->pos.x + RAND_FLOAT_CENTERED(10.0f), player->pos.y + RAND_FLOAT_CENTERED(10.0f), - player->pos.z - 65.0f + RAND_FLOAT_CENTERED(10.0f), 0.4f, 1); + Aquas_Effect366_Spawn(player->pos.x + RAND_FLOAT_CENTERED(10.0f), + player->pos.y + RAND_FLOAT_CENTERED(10.0f), + player->pos.z - 65.0f + RAND_FLOAT_CENTERED(10.0f), 0.4f, 1); break; default: @@ -5307,74 +5308,74 @@ f32 D_800D24C0[] = { 128.0f, 128.0f, 255.0f, 128.0f }; s32 D_800D24C8[] = { 0, 900 }; f32 D_800D24CC = 0.02f; -void Hud_Effect363_Update(Effect* effect) { +void Hud_Effect363_Update(Effect363* this) { Player* player = &gPlayer[0]; if ((player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) && (player->csState < 2)) { - switch (effect->state) { + switch (this->state) { case 0: - effect->unk_44 += effect->unk_46; - effect->unk_4A = effect->unk_44; - effect->scale2 += 0.01f; + this->unk_44 += this->unk_46; + this->unk_4A = this->unk_44; + this->scale2 += 0.01f; - if (effect->unk_4A >= 200) { - effect->state = 1; - effect->unk_4A = 200; + if (this->unk_4A >= 200) { + this->state = 1; + this->unk_4A = 200; } break; case 1: - effect->unk_4A -= effect->unk_46; - effect->scale2 -= 0.1f; + this->unk_4A -= this->unk_46; + this->scale2 -= 0.1f; break; } - if ((effect->state == 1) && (effect->unk_4A <= 0)) { - Object_Kill(&effect->obj, effect->sfxSource); + if ((this->state == 1) && (this->unk_4A <= 0)) { + Object_Kill(&this->obj, this->sfxSource); } - effect->vel.y += effect->scale1; - effect->scale1 -= 0.05f; + this->vel.y += this->scale1; + this->scale1 -= 0.05f; - if (effect->scale1 < -1.0f) { - effect->scale1 = -1.0f; + if (this->scale1 < -1.0f) { + this->scale1 = -1.0f; } - effect->obj.rot.z += effect->unk_48; + this->obj.rot.z += this->unk_48; } else { if (player->state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) { - effect->obj.rot.x = RAD_TO_DEG(player->camPitch); - effect->obj.rot.y = RAD_TO_DEG(-player->camYaw); + this->obj.rot.x = RAD_TO_DEG(player->camPitch); + this->obj.rot.y = RAD_TO_DEG(-player->camYaw); } if (player->state_1C8 == PLAYERSTATE_1C8_NEXT) { - effect->unk_46 = 2; + this->unk_46 = 2; if (player->csState >= 4) { - effect->vel.y -= 0.13f; + this->vel.y -= 0.13f; } } - effect->scale2 += 0.8f; - effect->unk_4A -= effect->unk_46; + this->scale2 += 0.8f; + this->unk_4A -= this->unk_46; - if ((effect->unk_4A < 0) || ((player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && - (gCurrentLevel == LEVEL_AQUAS) && (player->csState == 5))) { - Object_Kill(&effect->obj, effect->sfxSource); + if ((this->unk_4A < 0) || ((player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && + (gCurrentLevel == LEVEL_AQUAS) && (player->csState == 5))) { + Object_Kill(&this->obj, this->sfxSource); } - effect->obj.rot.z += effect->unk_48; + this->obj.rot.z += this->unk_48; } } -void Hud_Effect363_Draw(Effect* effect) { +void Hud_Effect363_Draw(Effect363* this) { if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && (gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].csState < 2)) { RCP_SetupDL(&gMasterDisp, SETUPDL_68); - gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 21, 34, effect->unk_4A); + gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 21, 34, this->unk_4A); gDPSetEnvColor(gMasterDisp++, 255, 255, 251, 0); - Graphics_SetScaleMtx(effect->scale2); + Graphics_SetScaleMtx(this->scale2); gSPDisplayList(gMasterDisp++, D_1023750); } else { - Graphics_SetScaleMtx(effect->scale2); - gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, effect->unk_4A); + Graphics_SetScaleMtx(this->scale2); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, this->unk_4A); gSPDisplayList(gMasterDisp++, D_1023750); } } @@ -5519,15 +5520,15 @@ void func_hud_80094D20(f32 x, f32 y) { } } -void func_hud_80095350(Actor* actor) { - Actor_Initialize(actor); - actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->animFrame = 9999; - Object_SetInfo(&actor->info, actor->obj.id); +void func_hud_80095350(ActorCutscene* this) { + Actor_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->animFrame = 9999; + Object_SetInfo(&this->info, this->obj.id); } -void func_hud_800953A0(Actor* actor, s32 arg1) { +void func_hud_800953A0(ActorCutscene* this, s32 arg1) { Vec3f D_800D2510[] = { { 1800.0f, 0.0f, -4000.0f }, { -1000.0f, 0.0f, -4800.0f }, @@ -5535,31 +5536,31 @@ void func_hud_800953A0(Actor* actor, s32 arg1) { { -200.0f, 0.0f, -7000.0f }, }; - Actor_Initialize(actor); - actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos = D_800D2510[arg1]; - actor->obj.pos.z -= gPathProgress; - actor->animFrame = 45; - Object_SetInfo(&actor->info, actor->obj.id); + Actor_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.pos = D_800D2510[arg1]; + this->obj.pos.z -= gPathProgress; + this->animFrame = 45; + Object_SetInfo(&this->info, this->obj.id); } -void func_hud_8009546C(Actor* actor, s32 arg1) { +void func_hud_8009546C(ActorCutscene* this, s32 arg1) { Vec3f D_800D2540[] = { { 1300.0f, 0.0f, -2000.0f }, { -1000.0f, 0.0f, -3000.0f }, { 800.0f, 0.0f, 0.0f }, { -1200.0f, 0.0f, -1000.0f }, { -1400.0f, 0.0f, 700.0f }, }; - Actor_Initialize(actor); - actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos = D_800D2540[arg1]; - actor->obj.pos.z -= gPathProgress; - actor->animFrame = 46; - Object_SetInfo(&actor->info, actor->obj.id); + Actor_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.pos = D_800D2540[arg1]; + this->obj.pos.z -= gPathProgress; + this->animFrame = 46; + Object_SetInfo(&this->info, this->obj.id); } -void func_hud_80095538(Actor* actor, s32 arg1) { +void func_hud_80095538(Actor* actor, s32 index) { Vec3f D_800D257C[] = { { 0.0f, 0.0f, -200.0f }, { -300.0f, 0.0f, -700.0f }, { 400.0f, 0.0f, -900.0f }, { 300.0f, 0.0f, -1700.0f }, { -260.0f, 0.0f, -2000.0f }, { -200.0f, 0.0f, -2600.0f }, @@ -5568,7 +5569,7 @@ void func_hud_80095538(Actor* actor, s32 arg1) { Actor_Initialize(actor); actor->obj.status = OBJ_ACTIVE; actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos = D_800D257C[arg1]; + actor->obj.pos = D_800D257C[index]; actor->obj.pos.z -= gPathProgress; actor->animFrame = 47; Object_SetInfo(&actor->info, actor->obj.id); @@ -5958,9 +5959,9 @@ void HUD_AquasComplete(Player* player) { src.y = 0.0f; src.z = -70.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - Aquas_801AC8A8(player->pos.x + dest.x + RAND_FLOAT_CENTERED(10.0f), - player->pos.y + dest.y + RAND_FLOAT_CENTERED(10.0f), - player->pos.z + dest.z + RAND_FLOAT_CENTERED(10.0f), 0.4f, 1); + Aquas_Effect366_Spawn(player->pos.x + dest.x + RAND_FLOAT_CENTERED(10.0f), + player->pos.y + dest.y + RAND_FLOAT_CENTERED(10.0f), + player->pos.z + dest.z + RAND_FLOAT_CENTERED(10.0f), 0.4f, 1); } player->unk_178 += 20.0f; diff --git a/src/engine/fox_play.c b/src/engine/fox_play.c index 6651bf43..7fc39ca5 100644 --- a/src/engine/fox_play.c +++ b/src/engine/fox_play.c @@ -86,6 +86,7 @@ void Play_UpdateDynaFloor(void) { f32 sp84; gDynaFloorTimer++; + switch (gCurrentLevel) { case LEVEL_SOLAR: if ((gGameFrameCount % 2) != 0) { @@ -100,6 +101,7 @@ void Play_UpdateDynaFloor(void) { sp88 = 2.2f; sp84 = 0.5f; break; + case LEVEL_ZONESS: if ((gGameFrameCount % 2) != 0) { spB4 = SEGMENTED_TO_VIRTUAL(D_ZO_6009ED0); @@ -114,29 +116,38 @@ void Play_UpdateDynaFloor(void) { sp84 = 2.0f; break; } + var_s3 = D_ctx_801782CC; var_s5 = D_ctx_801782D4; var_s4 = D_ctx_801782DC; var_s0 = D_ctx_801782E4; var_s1 = D_ctx_801782EC; + for (i = 0; i < 17 * 17; i++, var_s3++, var_s5++, var_s4++, var_s0++, var_s1++, spB0++) { Math_SmoothStepToF(var_s3, *var_s5, sp8C, *var_s4, 0.0f); Math_SmoothStepToF(var_s4, 100.0f, 1.0f, sp84, 0.0f); + if ((gDynaFloorTimer & spA8) == (i & spA8)) { *var_s5 = RAND_FLOAT(sp90); *var_s4 = 0.0f; } + *var_s0 += *var_s1; *var_s1 -= 0.5f; if (*var_s0 < 0.0f) { *var_s1 = *var_s0 = 0.0f; } + spB4[*spB0].n.ob[1] = (s16) *var_s3 + (s16) *var_s0; + Matrix_RotateZ(gCalcMatrix, *var_s3 * sp88 * M_DTOR, MTXF_NEW); + spC4.x = 120.0f; spC4.y = 0.0f; spC4.z = 0.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &spC4, &spB8); + spB4[*spB0].n.n[0] = spB8.x; spB4[*spB0].n.n[1] = spB8.y; spB4[*spB0].n.n[2] = spB8.z; @@ -154,6 +165,7 @@ void Player_WingEffects(Player* player) { player->xRock = SIN_DEG(player->rockPhase * 0.7f) * 0.5f; player->bobPhase += 10.0f; player->rockPhase += 8.0f; + if ((gLevelType == LEVELTYPE_PLANET) || ((player->alternateView == true) && (gLevelMode == LEVELMODE_ON_RAILS))) { player->yBob = -SIN_DEG(player->bobPhase) * 0.5f; @@ -177,9 +189,9 @@ void Player_DamageEffects(Player* player) { player->hit1.z, 1.0f); } if (((gGameFrameCount % 2U) == 0) && (Rand_ZeroOne() < 0.5f) && !gVersusMode) { - func_effect_8007C484(RAND_FLOAT_CENTERED(5.0f) + player->hit1.x, RAND_FLOAT(5.0f) + player->hit1.y, - player->hit1.z, player->vel.x, player->vel.y, player->vel.z, - RAND_FLOAT(0.02f) + 0.02f, player->num + 1); + Effect_Effect389_Spawn(RAND_FLOAT_CENTERED(5.0f) + player->hit1.x, RAND_FLOAT(5.0f) + player->hit1.y, + player->hit1.z, player->vel.x, player->vel.y, player->vel.z, + RAND_FLOAT(0.02f) + 0.02f, player->num + 1); } } if (player->wings.leftState <= WINGSTATE_BROKEN) { @@ -188,12 +200,13 @@ void Player_DamageEffects(Player* player) { player->hit2.z, 1.0f); } if (((gGameFrameCount % 2U) == 0) && (Rand_ZeroOne() < 0.5f) && !gVersusMode) { - func_effect_8007C484(RAND_FLOAT_CENTERED(5.0f) + player->hit2.x, RAND_FLOAT(5.0f) + player->hit2.y, - player->hit2.z, player->vel.x, player->vel.y, player->vel.z, - RAND_FLOAT(0.02f) + 0.02f, player->num + 1); + Effect_Effect389_Spawn(RAND_FLOAT_CENTERED(5.0f) + player->hit2.x, RAND_FLOAT(5.0f) + player->hit2.y, + player->hit2.z, player->vel.x, player->vel.y, player->vel.z, + RAND_FLOAT(0.02f) + 0.02f, player->num + 1); } } } + var_v1 = 7; if (player->shields < 64) { if (player->shields > 16) { @@ -205,21 +218,23 @@ void Player_DamageEffects(Player* player) { if (player->shields > 48) { var_v1 = 64 - 1; } + if (!player->alternateView || (gLevelMode == LEVELMODE_ALL_RANGE)) { sp40 = 0.0f; if (player->form == FORM_LANDMASTER) { sp40 = 30.0f; } + if ((gGameFrameCount & var_v1) == 0) { func_effect_8007D10C(player->pos.x + RAND_FLOAT_CENTERED(10.0f), player->pos.y + sp40 + RAND_FLOAT(10.0f), player->trueZpos + RAND_FLOAT_CENTERED(10.0f), 2.2f); } if (((gGameFrameCount & (var_v1 >> 2)) == 0) && (Rand_ZeroOne() < 0.5f)) { - func_effect_8007C484(player->pos.x + RAND_FLOAT_CENTERED(30.0f), - player->pos.y + sp40 + RAND_FLOAT(10.0f), - player->trueZpos + RAND_FLOAT_CENTERED(30.0f), player->vel.x, player->vel.y, - player->vel.z, 0.04f + RAND_FLOAT(0.03f), player->num + 1); + Effect_Effect389_Spawn(player->pos.x + RAND_FLOAT_CENTERED(30.0f), + player->pos.y + sp40 + RAND_FLOAT(10.0f), + player->trueZpos + RAND_FLOAT_CENTERED(30.0f), player->vel.x, player->vel.y, + player->vel.z, 0.04f + RAND_FLOAT(0.03f), player->num + 1); if (player->dmgEffectTimer == 0) { player->dmgEffectTimer = 2; } @@ -239,22 +254,26 @@ void Player_WaterEffects(Player* player) { if (gGroundSurface == SURFACE_WATER) { Matrix_Translate(gCalcMatrix, player->pos.x, player->pos.y, player->trueZpos, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, -((player->rot.x + player->aerobaticPitch) * M_DTOR), MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, -(player->bankAngle * M_DTOR), MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &sp54, &sp3C); Matrix_MultVec3f(gCalcMatrix, &sp48, &sp30); + if (player->pos.y < (gGroundHeight + 100.0f)) { if ((sp3C.y < gGroundHeight + 80.0f) && ((gGameFrameCount % 2) == 0)) { if (sPlayWingSplashSfx) {} - func_effect_8007ACE0(sp3C.x, gGroundHeight, sp3C.z, 0.1f, 2.0f, - player->rot.y + player->yRot_114 + 20.0f); + Effect_Effect372_Spawn1(sp3C.x, gGroundHeight, sp3C.z, 0.1f, 2.0f, + player->rot.y + player->yRot_114 + 20.0f); } if ((sp30.y < gGroundHeight + 80.0f) && ((gGameFrameCount % 2) == 0)) { - func_effect_8007ACE0(sp30.x, gGroundHeight, sp30.z, 0.1f, 2.0f, - player->rot.y + player->yRot_114 - 20.0f); + Effect_Effect372_Spawn1(sp30.x, gGroundHeight, sp30.z, 0.1f, 2.0f, + player->rot.y + player->yRot_114 - 20.0f); } } + if ((sp30.y < gGroundHeight + 80.0f) || (sp3C.y < gGroundHeight + 80.0f)) { if (!sPlayWingSplashSfx) { sPlayWingSplashSfx = true; @@ -300,6 +319,7 @@ void Play_InitVsStage(void) { } break; } + for (i = 0, j = 0; i < 199; j++) { if (gLevelObjects[j].id <= OBJ_INVALID) { break; @@ -315,6 +335,7 @@ void Play_InitVsStage(void) { i++; } } + for (i = 5, j = 0; i < 199; j++) { if (gLevelObjects[j].id <= OBJ_INVALID) { break; @@ -337,25 +358,25 @@ void Play_dummy_800A5330(void) { } void Play_Setup360_CO(void) { - Sprite* sprite; + Boss* boss = &gBosses[0]; Scenery360* scenery360; + Sprite* sprite; s32 i; - s32 j; gLevelObjects = SEGMENTED_TO_VIRTUAL(aCoAllRangeLevelObjects); - for (j = 0, scenery360 = gScenery360; j < 200; j++) { - if (gLevelObjects[j].id <= OBJ_INVALID) { + for (i = 0, scenery360 = gScenery360; i < 200; i++) { + if (gLevelObjects[i].id <= OBJ_INVALID) { break; } - if (gLevelObjects[j].id < OBJ_SCENERY_MAX) { + if (gLevelObjects[i].id < OBJ_SCENERY_MAX) { Scenery360_Initialize(scenery360); scenery360->obj.status = OBJ_ACTIVE; - scenery360->obj.id = gLevelObjects[j].id; - scenery360->obj.pos.x = gLevelObjects[j].xPos; - scenery360->obj.pos.z = gLevelObjects[j].zPos1; - scenery360->obj.pos.y = gLevelObjects[j].yPos; - scenery360->obj.rot.y = gLevelObjects[j].rot.y; + scenery360->obj.id = gLevelObjects[i].id; + scenery360->obj.pos.x = gLevelObjects[i].xPos; + scenery360->obj.pos.z = gLevelObjects[i].zPos1; + scenery360->obj.pos.y = gLevelObjects[i].yPos; + scenery360->obj.rot.y = gLevelObjects[i].rot.y; Object_SetInfo(&scenery360->info, scenery360->obj.id); if (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) { scenery360->info.dList = D_CO_6020760; @@ -364,90 +385,92 @@ void Play_Setup360_CO(void) { } } - for (j = 0, sprite = gSprites; j < ARRAY_COUNT(gSprites); j++) { - if (gLevelObjects[j].id <= OBJ_INVALID) { + for (i = 0, sprite = gSprites; i < ARRAY_COUNT(gSprites); i++) { + if (gLevelObjects[i].id <= OBJ_INVALID) { break; } - if (gLevelObjects[j].id == OBJ_SPRITE_CO_TREE) { + if (gLevelObjects[i].id == OBJ_SPRITE_CO_TREE) { Sprite_Initialize(sprite); sprite->obj.status = OBJ_INIT; - sprite->obj.id = gLevelObjects[j].id; - sprite->obj.pos.x = gLevelObjects[j].xPos; - sprite->obj.pos.z = gLevelObjects[j].zPos1; - sprite->obj.pos.y = gLevelObjects[j].yPos; + sprite->obj.id = gLevelObjects[i].id; + sprite->obj.pos.x = gLevelObjects[i].xPos; + sprite->obj.pos.z = gLevelObjects[i].zPos1; + sprite->obj.pos.y = gLevelObjects[i].yPos; Object_SetInfo(&sprite->info, sprite->obj.id); sprite++; } } - i = 0; // fake? - Boss_Initialize(&gBosses[i]); - gBosses[i].obj.status = OBJ_INIT; - gBosses[i].obj.pos.x = 0.0f; - gBosses[i].obj.pos.y = 0.0f; - gBosses[i].obj.pos.z = 0.0f; - gBosses[i].obj.id = OBJ_BOSS_CO_GRANGA; - Object_SetInfo(&gBosses[i].info, gBosses[i].obj.id); + + Boss_Initialize(&boss[0]); + boss[0].obj.status = OBJ_INIT; + boss[0].obj.pos.x = 0.0f; + boss[0].obj.pos.y = 0.0f; + boss[0].obj.pos.z = 0.0f; + boss[0].obj.id = OBJ_BOSS_CO_GRANGA; + Object_SetInfo(&boss[0].info, boss[0].obj.id); } void Play_Setup360_SY(void) { + Boss* boss = &gBosses[0]; Scenery360* scenery360; s32 i; - s32 j; gLevelObjects = SEGMENTED_TO_VIRTUAL(D_SY_6030B14); - for (j = 0, scenery360 = gScenery360; j < 200; j++) { - if (gLevelObjects[j].id <= OBJ_INVALID) { + for (i = 0, scenery360 = gScenery360; i < 200; i++) { + if (gLevelObjects[i].id <= OBJ_INVALID) { break; } - if (gLevelObjects[j].id < OBJ_SCENERY_MAX) { + if (gLevelObjects[i].id < OBJ_SCENERY_MAX) { Scenery360_Initialize(scenery360); scenery360->obj.status = OBJ_ACTIVE; - scenery360->obj.id = gLevelObjects[j].id; - scenery360->obj.pos.x = gLevelObjects[j].xPos; - scenery360->obj.pos.z = gLevelObjects[j].zPos1; - scenery360->obj.pos.y = gLevelObjects[j].yPos; - scenery360->obj.rot.y = gLevelObjects[j].rot.y; + scenery360->obj.id = gLevelObjects[i].id; + scenery360->obj.pos.x = gLevelObjects[i].xPos; + scenery360->obj.pos.z = gLevelObjects[i].zPos1; + scenery360->obj.pos.y = gLevelObjects[i].yPos; + scenery360->obj.rot.y = gLevelObjects[i].rot.y; Object_SetInfo(&scenery360->info, scenery360->obj.id); scenery360++; } } - i = 0; // fake? - Boss_Initialize(&gBosses[i]); - gBosses[i].obj.status = OBJ_INIT; - gBosses[i].obj.pos.x = 0.0f; - gBosses[i].obj.pos.y = 0.0f; - gBosses[i].obj.pos.z = 0.0f; - gBosses[i].obj.id = OBJ_BOSS_SY; - Object_SetInfo(&gBosses[i].info, gBosses[i].obj.id); - i = 1; - Boss_Initialize(&gBosses[i]); - gBosses[i].obj.status = OBJ_INIT; - gBosses[i].obj.pos.x = 0.0f; - gBosses[i].obj.pos.y = 0.0f; - gBosses[i].obj.pos.z = 0.0f; - gBosses[i].obj.id = OBJ_BOSS_SY; - Object_SetInfo(&gBosses[i].info, gBosses[i].obj.id); - i = 2; - Boss_Initialize(&gBosses[i]); - gBosses[i].obj.status = OBJ_INIT; - gBosses[i].obj.pos.x = 0.0f; - gBosses[i].obj.pos.y = 0.0f; - gBosses[i].obj.pos.z = 0.0f; - gBosses[i].obj.id = OBJ_BOSS_SY; - Object_SetInfo(&gBosses[i].info, gBosses[i].obj.id); + + Boss_Initialize(&boss[0]); + boss[0].obj.status = OBJ_INIT; + boss[0].obj.pos.x = 0.0f; + boss[0].obj.pos.y = 0.0f; + boss[0].obj.pos.z = 0.0f; + boss[0].obj.id = OBJ_BOSS_SY_SHOGUN; + Object_SetInfo(&boss[0].info, boss[0].obj.id); + + Boss_Initialize(&boss[1]); + boss[1].obj.status = OBJ_INIT; + boss[1].obj.pos.x = 0.0f; + boss[1].obj.pos.y = 0.0f; + boss[1].obj.pos.z = 0.0f; + boss[1].obj.id = OBJ_BOSS_SY_SHOGUN; + Object_SetInfo(&boss[1].info, boss[1].obj.id); + + Boss_Initialize(&boss[2]); + boss[2].obj.status = OBJ_INIT; + boss[2].obj.pos.x = 0.0f; + boss[2].obj.pos.y = 0.0f; + boss[2].obj.pos.z = 0.0f; + boss[2].obj.id = OBJ_BOSS_SY_SHOGUN; + Object_SetInfo(&boss[2].info, boss[2].obj.id); } void Play_Setup360_AND(void) { - s32 i = 0; // fake? + Boss* boss = &gBosses[0]; - Boss_Initialize(&gBosses[i]); - gBosses[i].obj.status = OBJ_INIT; - gBosses[i].obj.pos.x = 0.0f; - gBosses[i].obj.pos.y = 0.0f; - gBosses[i].obj.pos.z = 0.0f; - gBosses[i].obj.id = OBJ_BOSS_321; - Object_SetInfo(&gBosses[i].info, gBosses[i].obj.id); + Boss_Initialize(boss); + boss->obj.status = OBJ_INIT; + + boss->obj.pos.x = 0.0f; + boss->obj.pos.y = 0.0f; + boss->obj.pos.z = 0.0f; + + boss->obj.id = OBJ_BOSS_AND_BRAIN; + Object_SetInfo(&boss->info, boss->obj.id); } void Play_Setup(void) { @@ -500,6 +523,7 @@ void Play_InitEnvironment(void) { } else { sEnvironment = SEGMENTED_TO_VIRTUAL(D_800D2F98[gCurrentLevel]); } + if (!D_ctx_8017782C) { if (gCurrentLevel == LEVEL_SOLAR) { Audio_SetHeatAlarmParams(255, 1); @@ -509,6 +533,7 @@ void Play_InitEnvironment(void) { } else if (gCurrentLevel == LEVEL_AQUAS) { sEnvironment = SEGMENTED_TO_VIRTUAL(&D_AQ_602E584); } + gBgmSeqId = sEnvironment->seqId; gLevelType = sEnvironment->type; gGroundType = sEnvironment->unk04; @@ -518,15 +543,19 @@ void Play_InitEnvironment(void) { gFogBlue = sEnvironment->fogB; gFogNear = sEnvironment->fogN; gFogFar = sEnvironment->fogF; + gLight1R = gLight2R = D_ctx_80161A70 = sEnvironment->lightR; gLight1G = gLight2G = D_ctx_80161A74 = sEnvironment->lightG; gLight1B = gLight2B = D_ctx_80161A78 = sEnvironment->lightB; + gAmbientR = sEnvironment->ambR; gAmbientG = sEnvironment->ambG; gAmbientB = sEnvironment->ambB; + gEnvLightxRot = gLight2xRotTarget = D_ctx_80178520 = gLight1xRot = gLight1xRotTarget = sEnvironment->lightDir.x; gEnvLightyRot = gLight2yRotTarget = D_ctx_80178524 = gLight1yRot = gLight1yRotTarget = sEnvironment->lightDir.y; gEnvLightzRot = gLight2zRotTarget = D_ctx_80178528 = gLight1zRot = gLight1zRotTarget = sEnvironment->lightDir.z; + gProjectFar = 12800.0f; gLight2colorStep = 40; D_ctx_80178544 = 40; @@ -539,7 +568,9 @@ void Play_GenerateStarfield(void) { MEM_ARRAY_ALLOCATE(gStarOffsetsX, 1000); MEM_ARRAY_ALLOCATE(gStarOffsetsY, 1000); MEM_ARRAY_ALLOCATE(gStarFillColors, 1000); + Rand_SetSeed(1, 29000, 9876); + for (i = 0; i < 1000; i++) { gStarOffsetsX[i] = RAND_FLOAT_SEEDED(480.0f) - 80.0f; gStarOffsetsY[i] = RAND_FLOAT_SEEDED(360.0f) - 60.0f; @@ -551,6 +582,7 @@ void Play_SetupStarfield(void) { Play_GenerateStarfield(); gGroundHeight = -25000.0f; gStarCount = 600; + if (gCurrentLevel == LEVEL_AREA_6) { gStarCount = 300; } @@ -659,17 +691,19 @@ void Play_ClearObjectData(void) { Object_Kill(&gPlayerShots[i].obj, gPlayerShots[i].sfxSource); PlayerShot_Initialize(&gPlayerShots[i]); } + gDrawSmallRocks = D_ctx_801782BC = D_ctx_801782C0 = D_ctx_801782D0 = gBossActive = gKillEventActors = gGroundClipMode = gPrevEventActorIndex = gFormationLeaderIndex = gRingPassCount = 0; gFormationInitPos.x = gFormationInitPos.y = gFormationInitPos.z = gFormationInitRot.x = gFormationInitRot.y = gFormationInitRot.z = 0.0f; + for (i = 0; i < ARRAY_COUNT(gTeamArrowsViewPos); i++) { gTeamArrowsViewPos[i].x = gTeamArrowsViewPos[i].y = gTeamArrowsViewPos[i].z = 100.0f; } - for (i = 0; i < ARRAY_COUNT(gActor194yPos); i++) { - gActor194Status[i] = 0; - for (j = 0; j < ARRAY_COUNT(*gActor194yPos); j++) { - gActor194yPos[i][j] = -5000.0f; + for (i = 0; i < ARRAY_COUNT(gMeMoraYpos); i++) { + gMeMoraStatus[i] = 0; + for (j = 0; j < ARRAY_COUNT(*gMeMoraYpos); j++) { + gMeMoraYpos[i][j] = -5000.0f; } } } @@ -688,8 +722,10 @@ void Play_UpdateFillScreen(void) { } } } + gFillScreenAlphaStep = 16; Math_SmoothStepToF(&gLight3Brightness, 0.0f, 1.0f, 0.04f, 0.001f); + if (gScreenFlashTimer != 0) { gScreenFlashTimer--; if ((gScreenFlashTimer & 2) != 0) { @@ -728,6 +764,7 @@ void Play_SetupDebris(Actor* actor, s32 state, f32 xPos, f32 yPos, f32 zPos) { actor->obj.pos.y = yPos; actor->obj.pos.z = zPos; actor->gravity = 0.5f; + if ((state == 0) || (state == 1)) { actor->vel.y = RAND_FLOAT(5.0f) + 10.0f; actor->vel.x = 10.0f; @@ -752,6 +789,7 @@ void Play_SetupDebris(Actor* actor, s32 state, f32 xPos, f32 yPos, f32 zPos) { actor->timer_0BC = RAND_INT(25.0f) + 25; actor->gravity = 0.0f; } + if (state == 2) { actor->scale = RAND_FLOAT(1.5f) + 0.75f; } else if (state == 4) { @@ -824,19 +862,24 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { player->dmgType = damage; player->hitDirection = direction; + if ((damage == 39) || (damage == 41) || (damage == 42) || (damage == 43)) { damage = 40; } + if (gExpertMode) { player->damage = damage * 2; } else { player->damage = damage; } + if (player->damage != 0) { player->radioDamageTimer = 4; } + player->unk_284 = 0; player->hitTimer = 20; + if (player->dmgType > 40) { sp34 = (player->boostSpeed * 0.3f) + 20.0f; player->mercyTimer = 5; @@ -847,6 +890,7 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { } else { player->mercyTimer = 20; } + if (gHasShield[player->num]) { Player_PlaySfx(player->sfxSource, NA_SE_DAMAGE_S, player->num); gShieldTimer[player->num] = 5; @@ -866,9 +910,12 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { Player_PlaySfx(player->sfxSource, NA_SE_DAMAGE_L, player->num); } } + Matrix_RotateY(gCalcMatrix, player->yRot_114 * M_DTOR, MTXF_NEW); Matrix_RotateZ(gCalcMatrix, player->bankAngle * M_DTOR, MTXF_APPLY); + sp44.z = 0.0f; + switch (player->hitDirection) { case 0: player->dmgEffectTimer = 20; @@ -876,10 +923,10 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { player->knockback.y = 0.f; player->knockback.z = 0.f; break; + case 1: sp44.x = -sp34; sp44.y = 0.0f; - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); player->knockback.x = sp38.x; player->knockback.y = sp38.y; @@ -887,10 +934,10 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { Play_SpawnHitmark(player->hit1.x - player->vel.x, player->hit1.y, player->hit1.z - player->vel.z); Player_DamageWings(player, 1, 20); break; + case 2: sp44.x = sp34; sp44.y = 0.0f; - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); player->knockback.x = sp38.x; player->knockback.y = sp38.y; @@ -898,6 +945,7 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { Play_SpawnHitmark(player->hit2.x - player->vel.x, player->hit2.y, player->hit2.z - player->vel.z); Player_DamageWings(player, 2, 20); break; + case 3: player->dmgEffectTimer = 20; Play_SpawnHitmark(player->hit4.x - player->vel.x, player->hit4.y, player->hit4.z - player->vel.z); @@ -909,12 +957,14 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { player->knockback.y = sp38.y; player->knockback.z = sp38.z; } + if (Rand_ZeroOne() < 0.5f) { Player_DamageWings(player, 1, 15); } else { Player_DamageWings(player, 2, 15); } break; + case 4: player->dmgEffectTimer = 20; Play_SpawnHitmark(player->hit3.x - player->vel.x, player->hit3.y, player->hit3.z - player->vel.z); @@ -931,6 +981,7 @@ void Player_ApplyDamage(Player* player, s32 direction, s32 damage) { } break; } + if ((gCurrentLevel == LEVEL_VENOM_1) && (player->dmgType == 42)) { if (player->pos.x > 0.0f) { player->knockback.x = -30.0f; @@ -947,6 +998,7 @@ f32 D_800D2FEC[5] = { void Player_GroundedCollision(Player* player, u32 arg1, f32 arg2, f32 arg3) { player->hitDirection = arg1; + switch (arg1) { case 1: case 2: @@ -958,6 +1010,7 @@ void Player_GroundedCollision(Player* player, u32 arg1, f32 arg2, f32 arg3) { } Math_SmoothStepToF(&player->baseSpeed, 2.0f, 1.0f, 2.0f, 0.00001f); break; + case 3: case 4: player->pos.z = player->basePos.z; @@ -969,6 +1022,7 @@ void Player_GroundedCollision(Player* player, u32 arg1, f32 arg2, f32 arg3) { player->trueZpos = player->pos.z; Math_SmoothStepToF(&player->baseSpeed, 2.0f, 1.0f, 2.0f, 0.00001f); break; + case 0: case 5: break; @@ -1019,15 +1073,19 @@ bool Play_CheckDynaFloorCollision(f32* arg0, s32* arg1, f32 xPos, f32 yPos, f32 sp9C = (s32) ((xPos + 2400.0f) / 300.0f); sp98 = (s32) ((zPos + gPathProgress + 1500.0f + 2400.0f) / 300.0f); + if ((sp9C < 0) || (sp9C >= 16) || (sp98 < 0) || (sp98 >= 16)) { return false; } + sp90 = Math_ModF(xPos + 2400.0f, 300.0f); sp94 = Math_ModF(zPos + gPathProgress + 1500.0f + 2400.0f, 300.0f); sp8C = (sp98 * 17) + sp9C; + x0 = spA4[spA0[sp8C]].n.ob[0] * 3.0f; y0 = spA4[spA0[sp8C]].n.ob[1] * 2.0f; z0 = spA4[spA0[sp8C]].n.ob[2] * 3.0f; + if (sp90 < sp94) { x1 = spA4[spA0[sp8C + 18]].n.ob[0] * 3.0f; y1 = spA4[spA0[sp8C + 18]].n.ob[1] * 2.0f; @@ -1070,8 +1128,9 @@ bool Play_CheckSingleHitbox(Hitbox* hitbox, f32 arg1, f32 arg2, f32 arg3, f32 ar (fabsf(hitbox->x.offset + arg1 - arg4) < (hitbox->x.size + D_ctx_8017853C)) && (fabsf(hitbox->y.offset + arg2 - arg5) < (hitbox->y.size + D_ctx_8017853C))) { return true; + } else { + return false; } - return false; } s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 xPos, f32 yPos, f32 zPos, f32 xRot, @@ -1089,7 +1148,7 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 if (count != 0) { hitboxData++; for (i = 0; i < count; i++, hitboxData += 6) { - spA0 = 0; + spA0 = false; if (*hitboxData == HITBOX_ROTATED) { Matrix_RotateZ(gCalcMatrix, -hitboxData[3] * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -hitboxData[1] * M_DTOR, MTXF_APPLY); @@ -1098,7 +1157,7 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 Matrix_RotateX(gCalcMatrix, -xRot * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -yRot * M_DTOR, MTXF_APPLY); hitboxData += 4; - spA0 = 1; + spA0 = true; } else { if (*hitboxData >= HITBOX_SHADOW) { hitboxData++; @@ -1107,12 +1166,14 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 Matrix_RotateX(gCalcMatrix, -xRot * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -yRot * M_DTOR, MTXF_APPLY); } + if (!((arg9 == 0) && (argA == 0) && (argB == 0))) { Matrix_RotateZ(gCalcMatrix, -argB * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, -arg9 * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -argA * M_DTOR, MTXF_APPLY); } - if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && !spA0) { var_fv0 = player->hit3.x; var_fv1 = player->hit3.y; var_fa0 = player->hit3.z; @@ -1125,6 +1186,7 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 var_fv1 = sp88.y + yPos; var_fa0 = sp88.z + zPos; } + if (Play_CheckSingleHitbox((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { *index = i + 1; if (hitboxData[-1] == HITBOX_SHADOW) { @@ -1135,8 +1197,9 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 } return 3; } + if (hitboxData[-1] < HITBOX_SHADOW) { - if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && !spA0) { var_fv0 = player->hit4.x; var_fv1 = player->hit4.y; var_fa0 = player->hit4.z; @@ -1149,11 +1212,13 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 var_fv1 = sp88.y + yPos; var_fa0 = sp88.z + zPos; } + if (Play_CheckSingleHitbox((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { *index = i + 1; return 4; } - if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && !spA0) { var_fv0 = player->hit1.x; var_fv1 = player->hit1.y; var_fa0 = player->hit1.z; @@ -1166,11 +1231,13 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 var_fv1 = sp88.y + yPos; var_fa0 = sp88.z + zPos; } + if (Play_CheckSingleHitbox((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { *index = i + 1; return 1; } - if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && !spA0) { var_fv0 = player->hit2.x; var_fv1 = player->hit2.y; var_fa0 = player->hit2.z; @@ -1183,6 +1250,7 @@ s32 Player_CheckHitboxCollision(Player* player, f32* hitboxData, s32* index, f32 var_fv1 = sp88.y + yPos; var_fa0 = sp88.z + zPos; } + if (Play_CheckSingleHitbox((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { *index = i + 1; return 2; @@ -1210,8 +1278,9 @@ bool Play_CheckPolyCollision(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 a sp48.z = arg3; useCol2 = false; + switch (objId) { - case OBJ_ACTOR_180: + case OBJ_ACTOR_ME_MOLAR_ROCK: colId = COL1_0; break; case OBJ_SCENERY_CO_BUMP_4: @@ -1219,19 +1288,19 @@ bool Play_CheckPolyCollision(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 a colId = COL2_1; useCol2 = true; break; - case OBJ_SCENERY_149: + case OBJ_SCENERY_FO_MOUNTAIN_2: colId = COL1_5; break; - case OBJ_SCENERY_150: + case OBJ_SCENERY_FO_MOUNTAIN_3: colId = COL1_6; break; - case OBJ_BOSS_FO: + case OBJ_BOSS_FO_BASE: colId = COL1_4; break; - case OBJ_BOSS_VE2: + case OBJ_BOSS_VE2_BASE: colId = COL1_9; break; - case OBJ_BOSS_309: + case OBJ_BOSS_BO_BASE: colId = COL1_7; break; case ACTOR_EVENT_ID: @@ -1243,19 +1312,19 @@ bool Play_CheckPolyCollision(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 a case OBJ_SCENERY_ME_TUNNEL: colId = COL1_1; break; - case OBJ_SCENERY_120: + case OBJ_SCENERY_AQ_CORAL_REEF_2: colId = COL2_18; useCol2 = true; break; - case OBJ_SCENERY_124: + case OBJ_SCENERY_AQ_BUMP_1: colId = COL2_15; useCol2 = true; break; - case OBJ_SCENERY_126: + case OBJ_SCENERY_AQ_BUMP_2: colId = COL2_16; useCol2 = true; break; - case OBJ_SCENERY_47: + case OBJ_SCENERY_ZO_ISLAND: colId = COL2_7; useCol2 = true; break; @@ -1264,102 +1333,102 @@ bool Play_CheckPolyCollision(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 a useCol2 = true; break; case OBJ_SCENERY_CO_BUMP_3: - case OBJ_SCENERY_69: + case OBJ_SCENERY_MA_TERRAIN_BUMP: colId = COL2_3; useCol2 = true; break; - case OBJ_SCENERY_143: + case OBJ_SCENERY_VS_KA_FLBASE: colId = COL2_17; useCol2 = true; break; - case OBJ_SCENERY_140: + case OBJ_SCENERY_VS_PYRAMID_1: colId = COL2_4; useCol2 = true; break; - case OBJ_SCENERY_141: + case OBJ_SCENERY_VS_PYRAMID_2: colId = COL2_6; useCol2 = true; break; - case OBJ_SCENERY_117: + case OBJ_SCENERY_AQ_CORAL_REEF_1: colId = COL2_14; useCol2 = true; break; - case OBJ_SCENERY_70: + case OBJ_SCENERY_MA_FLOOR_1: colId = COL2_8; useCol2 = true; break; - case OBJ_SCENERY_72: + case OBJ_SCENERY_MA_FLOOR_3: colId = COL2_9; useCol2 = true; break; - case OBJ_SCENERY_71: + case OBJ_SCENERY_MA_FLOOR_2: colId = COL2_10; useCol2 = true; break; - case OBJ_SCENERY_73: + case OBJ_SCENERY_MA_FLOOR_4: colId = COL2_11; useCol2 = true; break; - case OBJ_SCENERY_67: + case OBJ_SCENERY_MA_WALL_3: colId = COL2_12; useCol2 = true; break; - case OBJ_SCENERY_74: + case OBJ_SCENERY_MA_FLOOR_5: colId = COL2_13; useCol2 = true; break; - case OBJ_SCENERY_118: - case OBJ_SCENERY_119: - case OBJ_SCENERY_121: - case OBJ_SCENERY_122: - case OBJ_SCENERY_123: - case OBJ_SCENERY_125: - case OBJ_SCENERY_127: - case OBJ_SCENERY_128: - case OBJ_SCENERY_129: - case OBJ_SCENERY_130: - case OBJ_SCENERY_131: - case OBJ_SCENERY_132: - case OBJ_SCENERY_133: - case OBJ_SCENERY_134: - case OBJ_SCENERY_135: - case OBJ_SCENERY_136: - case OBJ_SCENERY_137: - case OBJ_SCENERY_138: - case OBJ_SCENERY_139: - case OBJ_SCENERY_142: - case OBJ_SCENERY_144: - case OBJ_SCENERY_145: - case OBJ_SCENERY_146: + case OBJ_SCENERY_AQ_TUNNEL_1: + case OBJ_SCENERY_AQ_ARCH: + case OBJ_SCENERY_AQ_ROCK: + case OBJ_SCENERY_AQ_WALL_1: + case OBJ_SCENERY_AQ_ROOF: + case OBJ_SCENERY_AQ_TUNNEL_2: + case OBJ_SCENERY_VE1_TEMPLE_ENTRANCE: + case OBJ_SCENERY_VE1_TEMPLE_INTERIOR_1: + case OBJ_SCENERY_VE1_TEMPLE_INTERIOR_2: + case OBJ_SCENERY_VE1_TEMPLE_INTERIOR_3: + case OBJ_SCENERY_AND_PASSAGE: + case OBJ_SCENERY_AND_DOOR: + case OBJ_SCENERY_TR_BUILDING: + case OBJ_SCENERY_AND_PATH_INTERSECTION: + case OBJ_SCENERY_AND_PATH_WALLS: + case OBJ_SCENERY_AND_PATH_EXIT: + case OBJ_SCENERY_AND_PATH_ENTRANCE: + case OBJ_SCENERY_VS_BUILDING_1: + case OBJ_SCENERY_VS_BUILDING_2: + case OBJ_SCENERY_VS_ARCH: + case OBJ_SCENERY_VS_SPACE_JUNK_1: + case OBJ_SCENERY_VS_SPACE_JUNK_2: + case OBJ_SCENERY_VS_SPACE_JUNK_3: case OBJ_SCENERY_147: - case OBJ_SCENERY_148: + case OBJ_SCENERY_FO_MOUNTAIN_1: case OBJ_SCENERY_CO_BUILDING_9: case OBJ_SCENERY_CO_BUILDING_10: case OBJ_SCENERY_IBEAM: - case OBJ_SCENERY_ZO_ROCK_1: - case OBJ_SCENERY_44: - case OBJ_SCENERY_45: - case OBJ_SCENERY_46: - case OBJ_SCENERY_48: - case OBJ_SCENERY_49: - case OBJ_SCENERY_50: - case OBJ_SCENERY_51: - case OBJ_SCENERY_52: - case OBJ_SCENERY_53: + case OBJ_SCENERY_ZO_ROCK: + case OBJ_SCENERY_ZO_OIL_RIG_1: + case OBJ_SCENERY_ZO_OIL_RIG_2: + case OBJ_SCENERY_ZO_OIL_RIG_3: + case OBJ_SCENERY_VE1_WALL_1: + case OBJ_SCENERY_VE1_WALL_2: + case OBJ_SCENERY_VE1_WALL_3: + case OBJ_SCENERY_VE1_HALLWAY_OBSTACLE: + case OBJ_SCENERY_VE1_GENERATOR: + case OBJ_SCENERY_VE1_WATCH_POST: case OBJ_SCENERY_CO_WATERFALL: case OBJ_SCENERY_CO_ROCKWALL: case OBJ_SCENERY_CO_DOORS: - case OBJ_SCENERY_57: - case OBJ_SCENERY_58: - case OBJ_SCENERY_59: - case OBJ_SCENERY_60: - case OBJ_SCENERY_61: - case OBJ_SCENERY_62: + case OBJ_SCENERY_TI_PILLAR: + case OBJ_SCENERY_TI_BRIDGE: + case OBJ_SCENERY_MA_BUILDING_1: + case OBJ_SCENERY_MA_BUILDING_2: + case OBJ_SCENERY_MA_TOWER: + case OBJ_SCENERY_MA_WALL_1: case OBJ_SCENERY_63: - case OBJ_SCENERY_64: - case OBJ_SCENERY_65: - case OBJ_SCENERY_66: - case OBJ_SCENERY_68: + case OBJ_SCENERY_MA_GUILLOTINE: + case OBJ_SCENERY_MA_PROXIMITY_LIGHT: + case OBJ_SCENERY_MA_WALL_2: + case OBJ_SCENERY_MA_WALL_4: default: colId = COL2_0; useCol2 = true; @@ -1378,27 +1447,32 @@ bool Play_CheckPolyCollision(ObjectId objId, f32 arg1, f32 arg2, f32 arg3, f32 a return false; } -s32 Player_CheckPolyCollision(Player* player, ObjectId objId, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, - f32 arg7) { +s32 Player_CheckPolyCollision(Player* player, ObjectId objId, f32 x, f32 y, f32 z, f32 arg5, f32 arg6, f32 arg7) { Vec3f sp84; Vec3f sp78; Vec3f sp6C; Vec3f sp60; Vec3f sp54; - sp84.x = arg2; - sp84.y = arg3; - sp84.z = arg4; + sp84.x = x; + sp84.y = y; + sp84.z = z; + Matrix_RotateY(gCalcMatrix, -arg6 * M_DTOR, MTXF_NEW); + sp78.x = player->vel.x; sp78.y = player->vel.y; sp78.z = player->vel.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp54); + if ((player->form == FORM_LANDMASTER) || (player->form == FORM_ON_FOOT)) { sp78.x = player->pos.x - sp84.x; sp78.y = player->pos.y - sp84.y; sp78.z = player->trueZpos - sp84.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp6C); + if (Play_CheckPolyCollision(objId, sp84.x, sp84.y, sp84.z, sp6C.x + sp84.x, sp6C.y + sp84.y, sp6C.z + sp84.z, &sp60, &sp54)) { player->pos.y = sp60.y; @@ -1414,39 +1488,51 @@ s32 Player_CheckPolyCollision(Player* player, ObjectId objId, f32 arg2, f32 arg3 return 0; } } + sp78.x = player->hit3.x - sp84.x; sp78.y = player->hit3.y - sp84.y; sp78.z = player->hit3.z - sp84.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp6C); if (Play_CheckPolyCollision(objId, sp84.x, sp84.y, sp84.z, sp6C.x + sp84.x, sp6C.y + sp84.y, sp6C.z + sp84.z, &sp60, &sp54)) { return 3; } + sp78.x = player->hit4.x - sp84.x; sp78.y = player->hit4.y - sp84.y; sp78.z = player->hit4.z - sp84.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp6C); + if (Play_CheckPolyCollision(objId, sp84.x, sp84.y, sp84.z, sp6C.x + sp84.x, sp6C.y + sp84.y, sp6C.z + sp84.z, &sp60, &sp54)) { return 4; } + sp78.x = player->hit1.x - sp84.x; sp78.y = player->hit1.y - sp84.y; sp78.z = player->hit1.z - sp84.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp6C); + if (Play_CheckPolyCollision(objId, sp84.x, sp84.y, sp84.z, sp6C.x + sp84.x, sp6C.y + sp84.y, sp6C.z + sp84.z, &sp60, &sp54)) { return 1; } + sp78.x = player->hit2.x - sp84.x; sp78.y = player->hit2.y - sp84.y; sp78.z = player->hit2.z - sp84.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp6C); + if (Play_CheckPolyCollision(objId, sp84.x, sp84.y, sp84.z, sp6C.x + sp84.x, sp6C.y + sp84.y, sp6C.z + sp84.z, &sp60, &sp54)) { return 2; + } else { + return 0; } - return 0; } void Player_CheckItemCollect(Player* player) { @@ -1609,9 +1695,9 @@ void Player_CollisionCheck(Player* player) { Player_ApplyDamage(player, 1, 21); } if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(player->hit1.x, player->hit1.y, player->hit1.z, 6.0f); - func_effect_8007BC7C(player->hit1.x, player->hit1.y, player->hit1.z, 6.0f); - func_effect_8007BC7C(player->hit1.x, player->hit1.y, player->hit1.z, 6.0f); + Effect_Effect362_Spawn(player->hit1.x, player->hit1.y, player->hit1.z, 6.0f); + Effect_Effect362_Spawn(player->hit1.x, player->hit1.y, player->hit1.z, 6.0f); + Effect_Effect362_Spawn(player->hit1.x, player->hit1.y, player->hit1.z, 6.0f); } } if ((player->hit2.y < (gGroundHeight + 13.0f)) && (player->state_1C8 != PLAYERSTATE_1C8_DOWN)) { @@ -1622,9 +1708,9 @@ void Player_CollisionCheck(Player* player) { Player_ApplyDamage(player, 2, 21); } if (gCurrentLevel == LEVEL_FORTUNA) { - func_effect_8007BC7C(player->hit2.x, player->hit2.y, player->hit2.z, 6.0f); - func_effect_8007BC7C(player->hit2.x, player->hit2.y, player->hit2.z, 6.0f); - func_effect_8007BC7C(player->hit2.x, player->hit2.y, player->hit2.z, 6.0f); + Effect_Effect362_Spawn(player->hit2.x, player->hit2.y, player->hit2.z, 6.0f); + Effect_Effect362_Spawn(player->hit2.x, player->hit2.y, player->hit2.z, 6.0f); + Effect_Effect362_Spawn(player->hit2.x, player->hit2.y, player->hit2.z, 6.0f); } } } else if ((player->form == FORM_LANDMASTER) && !gVersusMode) { @@ -1639,16 +1725,23 @@ void Player_CollisionCheck(Player* player) { if ((gCurrentLevel == LEVEL_SECTOR_Y) || (gCurrentLevel == LEVEL_VENOM_ANDROSS)) { sp8C = 4000.0f; } + for (i = 0, scenery360 = gScenery360; i < 200; i++, scenery360++) { if (scenery360->obj.status == OBJ_ACTIVE) { spC8.x = scenery360->obj.pos.x - player->pos.x; spC8.z = scenery360->obj.pos.z - player->trueZpos; + if (sqrtf(SQ(spC8.x) + SQ(spC8.z)) < sp8C) { - if ((scenery360->obj.id == OBJ_SCENERY_117) || (scenery360->obj.id == OBJ_SCENERY_143) || - (scenery360->obj.id == OBJ_SCENERY_141) || (scenery360->obj.id == OBJ_SCENERY_149) || - (scenery360->obj.id == OBJ_SCENERY_150) || (scenery360->obj.id == OBJ_SCENERY_148) || - (scenery360->obj.id == OBJ_SCENERY_160) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || - (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3) || (scenery360->obj.id == OBJ_SCENERY_140)) { + if ((scenery360->obj.id == OBJ_SCENERY_AQ_CORAL_REEF_1) || + (scenery360->obj.id == OBJ_SCENERY_VS_KA_FLBASE) || + (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_3) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_1) || + (scenery360->obj.id == OBJ_SCENERY_VE2_MOUNTAIN) || + (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || + (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3) || + (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_1)) { temp_v0 = Player_CheckPolyCollision(player, scenery360->obj.id, scenery360->obj.pos.x, scenery360->obj.pos.y, scenery360->obj.pos.z, scenery360->obj.rot.x, scenery360->obj.rot.y, @@ -1661,6 +1754,7 @@ void Player_CollisionCheck(Player* player) { Player_ApplyDamage(player, temp_v0, scenery360->info.damage); } } + if ((gCurrentLevel == LEVEL_FORTUNA) || (gCurrentLevel == LEVEL_VENOM_2)) { temp_v0 = Player_CheckHitboxCollision( player, scenery360->info.hitbox, &sp98, scenery360->obj.pos.x, @@ -1695,7 +1789,8 @@ void Player_CollisionCheck(Player* player) { scenery360->obj.pos.z); } else { Player_ApplyDamage(player, temp_v0, scenery360->info.damage); - if (scenery360->obj.id == OBJ_SCENERY_131) { + + if (scenery360->obj.id == OBJ_SCENERY_AND_PASSAGE) { Matrix_RotateY(gCalcMatrix, (scenery360->obj.rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_800D3040[sp98 - 1], &spBC); @@ -1710,9 +1805,10 @@ void Player_CollisionCheck(Player* player) { player->yRot_114 = scenery360->obj.rot.y + 180.0f; player->mercyTimer = 5; } - if ((scenery360->obj.id == OBJ_SCENERY_135) || - (scenery360->obj.id == OBJ_SCENERY_136)) { - if (scenery360->obj.id == OBJ_SCENERY_135) { + + if ((scenery360->obj.id == OBJ_SCENERY_AND_PATH_WALLS) || + (scenery360->obj.id == OBJ_SCENERY_AND_PATH_EXIT)) { + if (scenery360->obj.id == OBJ_SCENERY_AND_PATH_WALLS) { Matrix_RotateY(gCalcMatrix, (scenery360->obj.rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_800D3088[sp98 - 1], &spBC); @@ -1720,15 +1816,19 @@ void Player_CollisionCheck(Player* player) { Matrix_RotateY(gCalcMatrix, scenery360->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_800D30B8[sp98 - 1], &spBC); } + player->knockback.x = spBC.x; player->knockback.y = spBC.y; player->knockback.z = spBC.z; + player->rot.y = 0.0f; player->rot.x = 0.0f; + player->pos.x = player->basePos.x; player->pos.y = player->basePos.y; player->pos.z = player->basePos.z; - if (scenery360->obj.id == OBJ_SCENERY_135) { + + if (scenery360->obj.id == OBJ_SCENERY_AND_PATH_WALLS) { player->yRot_114 = scenery360->obj.rot.y + 180.0f; } else { player->yRot_114 = scenery360->obj.rot.y; @@ -1743,18 +1843,20 @@ void Player_CollisionCheck(Player* player) { } } else { for (i = 0, scenery = gScenery; i < ARRAY_COUNT(gScenery); i++, scenery++) { - if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id != OBJ_SCENERY_58) && - (scenery->obj.id != OBJ_SCENERY_105) && (scenery->obj.id != OBJ_SCENERY_59) && - (scenery->obj.id != OBJ_SCENERY_60) && (scenery->obj.id != OBJ_SCENERY_61) && - (scenery->obj.id != OBJ_SCENERY_66) && (scenery->obj.id != OBJ_SCENERY_67) && - (scenery->obj.id != OBJ_SCENERY_70) && (scenery->obj.id != OBJ_SCENERY_72) && - (scenery->obj.id != OBJ_SCENERY_71) && (scenery->obj.id != OBJ_SCENERY_73) && - (scenery->obj.id != OBJ_SCENERY_74) && (scenery->obj.id != OBJ_SCENERY_69) && + if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id != OBJ_SCENERY_TI_BRIDGE) && + (scenery->obj.id != OBJ_SCENERY_MA_TRAIN_TRACK_13) && + (scenery->obj.id != OBJ_SCENERY_MA_BUILDING_1) && (scenery->obj.id != OBJ_SCENERY_MA_BUILDING_2) && + (scenery->obj.id != OBJ_SCENERY_MA_TOWER) && (scenery->obj.id != OBJ_SCENERY_MA_WALL_2) && + (scenery->obj.id != OBJ_SCENERY_MA_WALL_3) && (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_1) && + (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_3) && (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_2) && + (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_4) && (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_5) && + (scenery->obj.id != OBJ_SCENERY_MA_TERRAIN_BUMP) && ((player->trueZpos - 2000.0f) < scenery->obj.pos.z)) { if ((scenery->obj.id == OBJ_SCENERY_CO_BUMP_1) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_4) || - (scenery->obj.id == OBJ_SCENERY_CO_BUMP_5) || (scenery->obj.id == OBJ_SCENERY_47) || - (scenery->obj.id == OBJ_SCENERY_117) || (scenery->obj.id == OBJ_SCENERY_120) || - (scenery->obj.id == OBJ_SCENERY_124) || (scenery->obj.id == OBJ_SCENERY_126) || + (scenery->obj.id == OBJ_SCENERY_CO_BUMP_5) || (scenery->obj.id == OBJ_SCENERY_ZO_ISLAND) || + (scenery->obj.id == OBJ_SCENERY_AQ_CORAL_REEF_1) || + (scenery->obj.id == OBJ_SCENERY_AQ_CORAL_REEF_2) || + (scenery->obj.id == OBJ_SCENERY_AQ_BUMP_1) || (scenery->obj.id == OBJ_SCENERY_AQ_BUMP_2) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_2) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_3)) { spC8.x = scenery->obj.pos.x - player->pos.x; spC8.z = scenery->obj.pos.z - player->trueZpos; @@ -1800,9 +1902,9 @@ void Player_CollisionCheck(Player* player) { } } else { Player_ApplyDamage(player, temp_v0, scenery->info.damage); - if ((scenery->obj.id == OBJ_SCENERY_48) || + if ((scenery->obj.id == OBJ_SCENERY_VE1_WALL_1) || (scenery->obj.id == OBJ_SCENERY_CO_ROCKWALL) || - (scenery->obj.id == OBJ_SCENERY_49)) { + (scenery->obj.id == OBJ_SCENERY_VE1_WALL_2)) { Matrix_RotateY(gCalcMatrix, scenery->obj.rot.y * M_DTOR, MTXF_NEW); spC8.x = -(player->baseSpeed + player->boostSpeed) * 0.7f; spC8.y = 0.0f; @@ -1813,7 +1915,7 @@ void Player_CollisionCheck(Player* player) { player->knockback.y = spBC.y; player->pos.x = player->basePos.x; player->mercyTimer = 5; - } else if (scenery->obj.id == OBJ_SCENERY_50) { + } else if (scenery->obj.id == OBJ_SCENERY_VE1_WALL_3) { if (player->pos.x < scenery->obj.pos.x) { player->knockback.x = -30.0f; player->rot.y = 45.0f; @@ -1824,7 +1926,7 @@ void Player_CollisionCheck(Player* player) { player->knockback.y = 0.0f; player->pos.x = player->basePos.x; player->mercyTimer = 5; - } else if (scenery->obj.id == OBJ_SCENERY_131) { + } else if (scenery->obj.id == OBJ_SCENERY_AND_PASSAGE) { Matrix_RotateY(gCalcMatrix, (scenery->obj.rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateZ(gCalcMatrix, -scenery->obj.rot.z * M_DTOR, MTXF_APPLY); Matrix_MultVec3f(gCalcMatrix, &D_800D3040[sp98 - 1], &spBC); @@ -1842,10 +1944,11 @@ void Player_CollisionCheck(Player* player) { } } } + for (i = 0, boss = gBosses; i < ARRAY_COUNT(gBosses); i++, boss++) { if (boss->obj.status == OBJ_ACTIVE) { - if ((boss->obj.id == OBJ_BOSS_VE2) || (boss->obj.id == OBJ_BOSS_FO) || - (boss->obj.id == OBJ_BOSS_SZ_GREAT_FOX) || (boss->obj.id == OBJ_BOSS_309)) { + if ((boss->obj.id == OBJ_BOSS_VE2_BASE) || (boss->obj.id == OBJ_BOSS_FO_BASE) || + (boss->obj.id == OBJ_BOSS_SZ_GREAT_FOX) || (boss->obj.id == OBJ_BOSS_BO_BASE)) { temp_v0 = Player_CheckPolyCollision(player, boss->obj.id, boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, boss->obj.rot.x, boss->obj.rot.y, boss->obj.rot.z); @@ -1854,7 +1957,8 @@ void Player_CollisionCheck(Player* player) { break; } } - if (boss->obj.id == OBJ_BOSS_310) { + + if (boss->obj.id == OBJ_BOSS_BO_BASE_SHIELD) { spfD4.x = fabsf(boss->obj.pos.x - player->pos.x) * .8333333f; spfD4.y = fabsf(boss->obj.pos.y - player->pos.y) * 2; spfD4.z = fabsf(boss->obj.pos.z - player->trueZpos) * 0.8333333f; @@ -1864,11 +1968,10 @@ void Player_CollisionCheck(Player* player) { player->mercyTimer = 5; player->knockback.y = 30.0f; boss->dmgType = DMG_BEAM; - func_effect_8007BFFC(player->pos.x + RAND_FLOAT_CENTERED(10.0f), - player->pos.y + RAND_FLOAT(10.0f), - player->trueZpos + RAND_FLOAT_CENTERED(10.0f), 0.0f, 15.0f, 0.0f, 2.0f, 5); + Effect386_Spawn1(player->pos.x + RAND_FLOAT_CENTERED(10.0f), player->pos.y + RAND_FLOAT(10.0f), + player->trueZpos + RAND_FLOAT_CENTERED(10.0f), 0.0f, 15.0f, 0.0f, 2.0f, 5); for (j = 0; j < 10; j++) { - func_effect_8007C484( + Effect_Effect389_Spawn( player->pos.x + RAND_FLOAT_CENTERED(30.0f), player->pos.y + RAND_FLOAT(10.0f), player->trueZpos + RAND_FLOAT_CENTERED(30.0f), player->vel.x, 20.0f + player->vel.y, player->vel.z, RAND_FLOAT(0.1f) + 0.1f, player->num + 11); @@ -1876,7 +1979,7 @@ void Player_CollisionCheck(Player* player) { break; } } else { - if (boss->obj.id == OBJ_BOSS_KA) { + if (boss->obj.id == OBJ_BOSS_KA_SAUCERER) { spfD4.x = fabsf(boss->obj.pos.x - player->pos.x); spfD4.y = fabsf(boss->obj.pos.y - 300.0f - player->pos.y) * 7.42f; spfD4.z = fabsf(boss->obj.pos.z - player->trueZpos); @@ -1897,7 +2000,7 @@ void Player_CollisionCheck(Player* player) { player->whooshTimer = 4; } } else { - if ((boss->obj.id == OBJ_BOSS_320) && (boss->timer_056 != 0) && (sp98 == 5)) { + if ((boss->obj.id == OBJ_BOSS_AND_ANDROSS) && (boss->timer_056 != 0) && (sp98 == 5)) { break; } Player_ApplyDamage(player, temp_v0, boss->info.damage); @@ -1905,7 +2008,7 @@ void Player_CollisionCheck(Player* player) { (sp98 >= 9)) { player->knockback.y = -100.0f; } - if ((boss->obj.id == OBJ_BOSS_320) && (sp98 < 5)) { + if ((boss->obj.id == OBJ_BOSS_AND_ANDROSS) && (sp98 < 5)) { player->knockback.x = boss->fwork[14]; player->knockback.y = boss->fwork[15]; } @@ -1914,9 +2017,10 @@ void Player_CollisionCheck(Player* player) { } } } + for (i = 0, actor = gActors; i < ARRAY_COUNT(gActors); i++, actor++) { if ((actor->obj.status == OBJ_ACTIVE) && (actor->timer_0C2 == 0)) { - if (actor->obj.id == OBJ_ACTOR_180) { + if (actor->obj.id == OBJ_ACTOR_ME_MOLAR_ROCK) { temp_v0 = Player_CheckPolyCollision(player, actor->obj.id, actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, actor->obj.rot.x, actor->obj.rot.y, actor->obj.rot.z); @@ -1971,7 +2075,7 @@ void Player_CollisionCheck(Player* player) { } } } - } else if ((OBJ_ACTOR_205 <= actor->obj.id) && (actor->obj.id <= OBJ_ACTOR_213)) { + } else if ((OBJ_ACTOR_MA_LOCOMOTIVE <= actor->obj.id) && (actor->obj.id <= OBJ_ACTOR_MA_TRAIN_CAR_7)) { temp_v0 = Player_CheckHitboxCollision( player, actor->info.hitbox, &sp98, actor->fwork[25] + actor->obj.pos.x, actor->fwork[8] + actor->obj.pos.y + 25.0f, actor->obj.pos.z, actor->fwork[29], @@ -2004,7 +2108,7 @@ void Player_CollisionCheck(Player* player) { } if (actor->info.damage) { Player_ApplyDamage(player, temp_v0, actor->info.damage); - if (actor->obj.id == OBJ_ACTOR_225) { + if (actor->obj.id == OBJ_ACTOR_TI_LANDMINE) { player->knockback.y = 0.0f; } } else { @@ -2015,6 +2119,7 @@ void Player_CollisionCheck(Player* player) { } } } + for (i = 0, sprite = gSprites; i < ARRAY_COUNT(gSprites); i++, sprite++) { if (sprite->obj.status == OBJ_ACTIVE) { if ((player->trueZpos - 200.0f) < sprite->obj.pos.z) { @@ -2024,7 +2129,7 @@ void Player_CollisionCheck(Player* player) { if (temp_v0 != 0) { if ((sprite->obj.id == OBJ_SPRITE_FO_POLE) || (sprite->obj.id == OBJ_SPRITE_CO_POLE) || (sprite->obj.id == OBJ_SPRITE_TI_CACTUS) || (sprite->obj.id == OBJ_SPRITE_CO_TREE)) { - sprite->destroy = 1; + sprite->destroy = true; player->hitTimer = 6; player->hitDirection = 0; } else { @@ -2035,7 +2140,9 @@ void Player_CollisionCheck(Player* player) { } } } + Player_CheckItemCollect(player); + if (gCamCount == 4) { for (opponent = &gPlayer[3], i = 3; i >= 0; i--, opponent--) { if ((i != gPlayerNum) && (opponent->state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { @@ -2043,20 +2150,24 @@ void Player_CollisionCheck(Player* player) { if (player->form == FORM_ON_FOOT) { spC8.x = 4.0f; } + spC8.y = 25.0f; if (opponent->form == FORM_ON_FOOT) { spC8.y = 4.0f; } spBC.x = spBC.z = spC8.x + spC8.y; + spC8.x = 23.0f; if (player->form == FORM_ON_FOOT) { spC8.x = 7.0f; } + spC8.y = 23.0f; if (opponent->form == FORM_ON_FOOT) { spC8.y = 7.0f; } spBC.y = spC8.x + spC8.y; + if ((fabsf(opponent->trueZpos - player->trueZpos) <= spBC.z) && (fabsf(opponent->pos.y - player->pos.y) <= spBC.y) && (fabsf(opponent->pos.x - player->pos.x) <= spBC.x)) { @@ -2080,12 +2191,13 @@ void Player_CollisionCheck(Player* player) { } } } + if (gUseDynaFloor) { if (Play_CheckDynaFloorCollision(&sp94, &sp90, player->hit4.x, player->hit4.y, player->hit4.z)) { if (gCurrentLevel == LEVEL_ZONESS) { player->rot.x = (player->baseSpeed + player->boostSpeed) * 0.8f; player->hitTimer = 15; - func_effect_8007B228(player->hit4.x, sp94, player->hit4.z, 1.0f); + Effect_Effect381_Spawn(player->hit4.x, sp94, player->hit4.z, 1.0f); } else { if (player->hitTimer == 0) { Player_ApplyDamage(player, 4, 10); @@ -2095,15 +2207,16 @@ void Player_CollisionCheck(Player* player) { } if (player->state_1C8 == PLAYERSTATE_1C8_DOWN) { player->radioDamageTimer = 2; - func_effect_8007AFD0(player->pos.x, player->trueZpos, 30.0f, 0.0f, 5.0f); - func_effect_8007AFD0(player->pos.x, player->trueZpos, -30.0f, 0.0f, 5.0f); + Effect_Effect382_Spawn(player->pos.x, player->trueZpos, 30.0f, 0.0f, 5.0f); + Effect_Effect382_Spawn(player->pos.x, player->trueZpos, -30.0f, 0.0f, 5.0f); } } + if (Play_CheckDynaFloorCollision(&sp94, &sp90, player->pos.x + ((player->hit1.x - player->pos.x) * 1.5f), player->pos.y + (player->hit1.y - player->pos.y) * 1.5f, player->hit1.z)) { if (gCurrentLevel == LEVEL_ZONESS) { - func_effect_8007B228(player->pos.x + (player->hit1.x - player->pos.x) * 1.5f, sp94, player->hit1.z, - 1.0f); + Effect_Effect381_Spawn(player->pos.x + (player->hit1.x - player->pos.x) * 1.5f, sp94, player->hit1.z, + 1.0f); } else { if (player->hitTimer == 0) { Player_ApplyDamage(player, 1, 10); @@ -2111,11 +2224,12 @@ void Player_CollisionCheck(Player* player) { player->knockback.y = 30.0f; } } + if (Play_CheckDynaFloorCollision(&sp94, &sp90, player->pos.x + ((player->hit2.x - player->pos.x) * 1.5f), player->pos.y + (player->hit2.y - player->pos.y) * 1.5f, player->hit2.z)) { if (gCurrentLevel == LEVEL_ZONESS) { - func_effect_8007B228(player->pos.x + (player->hit2.x - player->pos.x) * 1.5f, sp94, player->hit2.z, - 1.0f); + Effect_Effect381_Spawn(player->pos.x + (player->hit2.x - player->pos.x) * 1.5f, sp94, player->hit2.z, + 1.0f); } else { if (player->hitTimer == 0) { Player_ApplyDamage(player, 2, 40); @@ -2162,8 +2276,10 @@ void Player_FloorCheck(Player* player) { if (player->hideShadow) { return; } + player->groundPos.x = player->pos.x; player->groundPos.z = player->trueZpos - player->pos.y; + if (gGroundType != 4) { if (gCamCount == 1) { player->groundPos.y = gGroundHeight + 3.0f; @@ -2175,16 +2291,19 @@ void Player_FloorCheck(Player* player) { } player->shadowRotX = player->shadowRotZ = player->groundRotY = 0.0f; } + sp100 = 0.0f; spFC = 0.0f; spF8 = 0.0f; + if (gCamCount != 1) { if (player->form == FORM_ON_FOOT) { for (sp144 = 0; sp144 < 200; sp144++) { scenery360 = &gScenery360[sp144]; if ((scenery360->obj.status == OBJ_ACTIVE) && - ((scenery360->obj.id == OBJ_SCENERY_143) || (scenery360->obj.id == OBJ_SCENERY_140) || - (scenery360->obj.id == OBJ_SCENERY_141)) && + ((scenery360->obj.id == OBJ_SCENERY_VS_KA_FLBASE) || + (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_1) || + (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_2)) && (fabsf(scenery360->obj.pos.x - player->pos.x) < 2000.0f) && (fabsf(scenery360->obj.pos.z - player->trueZpos) < 2000.0f)) { spC8.x = scenery360->obj.pos.x; @@ -2194,9 +2313,9 @@ void Player_FloorCheck(Player* player) { spD4.y = gGroundHeight; spD4.z = player->trueZpos; colId = COL2_4; - if (scenery360->obj.id == OBJ_SCENERY_141) { + if (scenery360->obj.id == OBJ_SCENERY_VS_PYRAMID_2) { colId = COL2_6; - } else if (scenery360->obj.id == OBJ_SCENERY_143) { + } else if (scenery360->obj.id == OBJ_SCENERY_VS_KA_FLBASE) { colId = COL2_17; } if (func_col2_800A3690(&spD4, &spC8, colId, &spBC)) { @@ -2214,9 +2333,10 @@ void Player_FloorCheck(Player* player) { player->groundPos.z = player->trueZpos; for (sp144 = 0, scenery360 = gScenery360; sp144 < 200; sp144++, scenery360++) { if ((scenery360->obj.status == OBJ_ACTIVE) && - ((scenery360->obj.id == OBJ_SCENERY_150) || (scenery360->obj.id == OBJ_SCENERY_149) || - (scenery360->obj.id == OBJ_SCENERY_148) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || - (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3)) && + ((scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_3) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_1) || + (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_1) || (scenery360->obj.id == OBJ_SCENERY_CO_BUMP_3)) && (fabsf(scenery360->obj.pos.x - player->pos.x) < 2500.0f) && (fabsf(scenery360->obj.pos.z - player->trueZpos) < 2500.0f)) { tempx = scenery360->obj.pos.x; @@ -2235,8 +2355,9 @@ void Player_FloorCheck(Player* player) { spC8.y = tempy; spC8.z = tempz; - if ((scenery360->obj.id == OBJ_SCENERY_149) || (scenery360->obj.id == OBJ_SCENERY_150)) { - if (scenery360->obj.id == OBJ_SCENERY_149) { + if ((scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) || + (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_3)) { + if (scenery360->obj.id == OBJ_SCENERY_FO_MOUNTAIN_2) { colId = COL1_5; } else { colId = COL1_6; @@ -2272,7 +2393,7 @@ void Player_FloorCheck(Player* player) { tempz = scenery->obj.pos.z; sp120 = scenery->obj.rot.y; if ((scenery->obj.id == OBJ_SCENERY_CO_BUMP_3) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_2) || - (scenery->obj.id == OBJ_SCENERY_47) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_4) || + (scenery->obj.id == OBJ_SCENERY_ZO_ISLAND) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_4) || (scenery->obj.id == OBJ_SCENERY_CO_BUMP_5)) { Matrix_RotateY(gCalcMatrix, -sp120 * M_DTOR, MTXF_NEW); for (var_fs1 = var_fs0 = -50.0f; var_fs0 > -500.0f; var_fs0 -= 5.0f, var_fs1 -= 5.0f) { @@ -2292,7 +2413,7 @@ void Player_FloorCheck(Player* player) { colId = COL2_0; - if (scenery->obj.id == OBJ_SCENERY_47) { + if (scenery->obj.id == OBJ_SCENERY_ZO_ISLAND) { colId = COL2_7; } if (scenery->obj.id == OBJ_SCENERY_CO_BUMP_2) { @@ -2409,11 +2530,14 @@ void Play_InitLevel(void) { gTeamLowHealthMsgTimer = -1; break; } + gUseDynaFloor = 0; + switch (gCurrentLevel) { case LEVEL_SECTOR_Z: gGreatFoxIntact = true; break; + case LEVEL_METEO: case LEVEL_SECTOR_X: if (gLevelPhase == 1) { @@ -2428,32 +2552,37 @@ void Play_InitLevel(void) { gAmbientB = 100; } break; + case LEVEL_VENOM_ANDROSS: gDrawGround = false; gDrawBackdrop = 6; D_Andross_801A7F58 = D_Andross_801A7F60 = D_Andross_801A7F68 = D_Andross_801A7F70 = D_Andross_801A7F78 = 0.0f; break; + case LEVEL_AQUAS: gVIsPerFrame = 3; D_bg_8015F970 = 1600.0f; D_AQ_801C4188 = 128.0f; - Aquas_801A9824(); + Aquas_InitLevel(); break; + case LEVEL_TITANIA: Titania_80188F30(); gTeamShields[TEAM_ID_SLIPPY] = -2; break; + case LEVEL_MACBETH: - Macbeth_80199920(); + Macbeth_InitLevel(); break; + case LEVEL_ZONESS: - MEM_ARRAY_ALLOCATE(gZOSnakePosRots, 200); - ptr = (u8*) gZOSnakePosRots; - for (i = 0; i < 200 * sizeof(*gZOSnakePosRots); i++, ptr++) { + MEM_ARRAY_ALLOCATE(gZoDodoraPosRots, 200); + ptr = (u8*) gZoDodoraPosRots; + for (i = 0; i < 200 * sizeof(*gZoDodoraPosRots); i++, ptr++) { *ptr = 0; } - gZOSnakeWaypointCount = 0; + gZoDodoraWaypointCount = 0; /* fallthrough */ case LEVEL_SOLAR: gUseDynaFloor = true; @@ -2487,6 +2616,7 @@ void Play_InitLevel(void) { mesh = SEGMENTED_TO_VIRTUAL(D_ZO_6009ED0); break; } + for (i = 0; i < 17 * 17; i++, mesh++) { if (mesh->v.ob[0] == 800) { mesh->v.ob[0] = 1400; @@ -2507,6 +2637,7 @@ void Play_InitLevel(void) { mesh = SEGMENTED_TO_VIRTUAL(D_ZO_600C780); break; } + for (i = 0; i < 17 * 17; i++, mesh++) { if (mesh->v.ob[0] == 800) { mesh->v.ob[0] = 1400; @@ -2527,6 +2658,7 @@ void Player_ResetVsData(void) { s32 j; gVsMatchState = VS_STATE_0; + for (i = 0; i < 4; i++) { gVsPoints[i] = 0; for (j = 0; j < 10; j++) { @@ -2542,6 +2674,7 @@ void Player_InitVersus(void) { s32 i; Player_ResetVsData(); + for (i = 0; i < 4; i++) { gPlayerNum = i; Player_Initialize(&gPlayer[i]); @@ -2556,6 +2689,7 @@ void Play_Init(void) { s32 i; gArwingSpeed = 40.0f; + for (i = 0; i < ARRAY_COUNT(gControllerRumbleEnabled); i++) { gControllerRumbleEnabled[i] = 0; } @@ -2565,21 +2699,27 @@ void Play_Init(void) { } else { gEnemyShotSpeed = 100; } + gPauseEnabled = false; gVIsPerFrame = 2; - D_ctx_80177C70 = 0; + gFovYMode = 0; gTeamHelpActor = NULL; gTeamHelpTimer = 0; + Audio_KillSfxById(NA_SE_OB_ROUTE_EXPLOSION1); Audio_KillSfxById(NA_SE_DEMO_SIREN); + Memory_FreeAll(); + gTraining360MsgTimer = gTraining360MsgIndex = gShowBossHealth = gStarWolfMsgTimer = gAllRangeWingRepairTimer = gAllRangeSuppliesSent = 0; D_display_800CA220 = 0; gShowLevelClearStatusScreen = 0; + if (gCurrentLevel != LEVEL_VERSUS) { gSceneSetup = 0; } + gShowHud = 1; gDrawGround = gDrawBackdrop = 1; gAqDrawMode = sOverheadCam = 0; @@ -2587,6 +2727,7 @@ void Play_Init(void) { gLevelMode = LEVELMODE_ON_RAILS; gPathTexScroll = D_bg_8015F968 = 0.0f; D_hud_800D1970 = gVersusMode = gHideRadio = gChangeTo360 = false; + if (gCurrentLevel >= LEVEL_FORTUNA) { gLevelMode = LEVELMODE_ALL_RANGE; if (gCurrentLevel == LEVEL_VERSUS) { @@ -2597,6 +2738,7 @@ void Play_Init(void) { if ((gCurrentLevel == LEVEL_VENOM_ANDROSS) && (gLevelPhase == 1)) { gLevelMode = LEVELMODE_ALL_RANGE; } + gVsMatchStart = false; Play_InitEnvironment(); gDropHitCountItem = gTeamLowHealthMsgTimer = gStartAndrossFightTimer = gSoShieldsEmpty = gAllRangeEventTimer = @@ -2606,8 +2748,10 @@ void Play_Init(void) { if (gCurrentLevel == LEVEL_SECTOR_X) { gMissionStatus = MISSION_ACCOMPLISHED; } + gWaterLevel = -25000.0f; D_ctx_80177950 = 1.0f; + if ((gCurrentLevel == LEVEL_VENOM_2) && (gLevelPhase == 2)) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; } else { @@ -2633,39 +2777,49 @@ void Play_Init(void) { } else { gStarCount = 0; } + gFogAlpha = 255; gLight1rotStep = 5.0f; gLight2rotStep = 5.0f; D_ctx_80178538 = 5.0f; Play_ClearObjectData(); D_ctx_801782C8 = 0; + if (gCurrentLevel == LEVEL_TITANIA) { Ground_801B5110(0.0f, 0.0f, 200.0f); } if (gCurrentLevel == LEVEL_AQUAS) { gWaterLevel = 1000.0f; } + gLoadLevelObjects = false; gCamCount = 1; + if (gCurrentLevel == LEVEL_VERSUS) { gCamCount = 4; } + for (i = TEAM_ID_FALCO; i < TEAM_ID_MAX; i++) { gTeamShields[i] = gSavedTeamShields[i]; } + MEM_ARRAY_ALLOCATE(gPlayer, gCamCount); Player_InitializeAll(); + for (i = 0; i < gCamCount; i++) { gPlayer[i].state_1C8 = PLAYERSTATE_1C8_INIT; gPlayerGlareAlphas[i] = D_ctx_801783C0[i] = 0; gControllerRumbleTimers[i] = 0; gPlayerScores[i] = 0; } + if (gLevelMode == LEVELMODE_ALL_RANGE) { MEM_ARRAY_ALLOCATE(gScenery360, 200); + for (i = 0; i < 200; i++) { gScenery360[i].obj.status = OBJ_FREE; } + switch (gCurrentLevel) { case LEVEL_SECTOR_Z: if (!D_ctx_8017782C) { @@ -2673,28 +2827,33 @@ void Play_Init(void) { ActorAllRange_SpawnTeam(); } break; + case LEVEL_FORTUNA: Fortuna_LoadLevelObjects(); ActorAllRange_SpawnTeam(); break; + case LEVEL_KATINA: Katina_Init(); if (!D_ctx_8017782C) { ActorAllRange_SpawnTeam(); } break; + case LEVEL_BOLSE: if (!D_ctx_8017782C) { - Bolse_80191ED8(); + Bolse_LoadLevelObjects(); ActorAllRange_SpawnTeam(); } break; + case LEVEL_VENOM_2: Venom2_LoadLevelObjects(); if (gLevelPhase == 0) { ActorAllRange_SpawnTeam(); } break; + case LEVEL_VENOM_ANDROSS: if (gLevelPhase == 1) { if (gAllRangeCheckpoint == 0) { @@ -2704,6 +2863,7 @@ void Play_Init(void) { } } break; + case LEVEL_VERSUS: Play_InitVsStage(); gTeamLowHealthMsgTimer = -1; @@ -2719,21 +2879,29 @@ void Player_SetupArwingShot(Player* player, PlayerShot* shot, f32 arg2, f32 arg3 Vec3f sp2C; PlayerShot_Initialize(shot); + Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -((player->xRot_120 + player->rot.x + player->aerobaticPitch) * M_DTOR), MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, -((player->bankAngle + player->rockAngle) * M_DTOR), MTXF_APPLY); + Matrix_Translate(gCalcMatrix, player->xShake, player->yBob, 0.0f, MTXF_APPLY); + if (gVersusMode && (shotId <= PLAYERSHOT_TWIN_LASER)) { speed *= 0.5f; } + sp44.x = 0.0f; sp44.y = 0.0f; sp44.z = speed; + Matrix_MultVec3f(gCalcMatrix, &sp44, &sp38); + sp44.x = arg2; sp44.y = -5.0f + arg3; sp44.z = 0.0f; + Matrix_MultVec3f(gCalcMatrix, &sp44, &sp2C); + shot->obj.status = SHOT_ACTIVE; shot->vel.x = sp38.x; shot->vel.y = sp38.y; @@ -2746,6 +2914,7 @@ void Player_SetupArwingShot(Player* player, PlayerShot* shot, f32 arg2, f32 arg3 } else { shot->timer = 37; } + if (shot->obj.id == PLAYERSHOT_LOCK_SEARCH) { shot->obj.pos.x = player->pos.x + sp2C.x; shot->obj.pos.y = player->pos.y + sp2C.y; @@ -2756,9 +2925,11 @@ void Player_SetupArwingShot(Player* player, PlayerShot* shot, f32 arg2, f32 arg3 shot->obj.pos.y = player->pos.y + sp2C.y + (sp38.y * 1.2); shot->obj.pos.z = player->trueZpos + sp2C.z + (sp38.z * 1.2f); } + shot->obj.rot.x = player->xRot_120 + player->rot.x + player->aerobaticPitch; shot->obj.rot.y = player->rot.y + player->yRot_114; shot->obj.rot.z = player->bankAngle; + if (shotId == PLAYERSHOT_LOCK_ON) { if (gCurrentLevel == LEVEL_AQUAS) { shot->unk_58 = RAND_INT(360.0f); @@ -2826,8 +2997,8 @@ void Player_SetupTankShot(Player* player, PlayerShot* shot, PlayerShotId shotId, shot->obj.rot.z = player->rot.z; shot->timer = 40; shot->obj.id = shotId; - shot->sourceId = player->num; + if (shotId == PLAYERSHOT_LOCK_ON) { if (speed <= 65.0f) { shot->unk_5C = 1; @@ -2852,11 +3023,13 @@ void Player_TankCannon(Player* player) { void Player_ArwingLaser(Player* player) { s32 i; - LaserStrength laser = gLaserStrength[gPlayerNum]; + LaserStrength laser; + laser = gLaserStrength[gPlayerNum]; if (player->wings.unk_14 > -8.0f) { laser = LASERS_SINGLE; } + switch (laser) { case LASERS_SINGLE: for (i = 0; i < ARRAY_COUNT(gPlayerShots) - 1; i++) { @@ -2897,6 +3070,7 @@ void Player_SmartBomb(Player* player) { } else { gBombCount[player->num]--; } + if (player->form == FORM_ARWING) { Player_SetupArwingShot(player, &gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1], 0.0f, 0.0f, PLAYERSHOT_BOMB, 180.0f); @@ -2905,8 +3079,10 @@ void Player_SmartBomb(Player* player) { } else { Player_SetupOnFootShot(player, &gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1], PLAYERSHOT_BOMB); } + gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].unk_48 = 30.0f; gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].unk_60 = 0; + Audio_InitBombSfx(player->num, 1); Audio_PlayBombFlightSfx(player->num, gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].sfxSource); } @@ -2918,17 +3094,21 @@ void Player_SetupOnFootShot(Player* player, PlayerShot* shot, PlayerShotId shotI Vec3f sp44; PlayerShot_Initialize(shot); + Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + player->damageShake + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -((player->rot.x + player->damageShake) * M_DTOR), MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, -((player->bankAngle + player->rockAngle + player->damageShake) * M_DTOR), MTXF_APPLY); Matrix_RotateX(gCalcMatrix, player->unk_154 * M_DTOR, MTXF_APPLY); + sp5C.x = 0.0f; sp5C.y = 0.0f; + if (shotId == PLAYERSHOT_BOMB) { sp5C.z = 100.0f; } else { sp5C.z = 150.0f; } + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp5C, &sp50); Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + player->damageShake + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -((player->rot.x + player->damageShake) * M_DTOR), MTXF_APPLY); @@ -2936,13 +3116,17 @@ void Player_SetupOnFootShot(Player* player, PlayerShot* shot, PlayerShotId shotI Matrix_Translate(gCalcMatrix, 0.0f, player->yBob, 0, MTXF_APPLY); Matrix_Translate(gCalcMatrix, -10.0f, 25.0f, 0.0f, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, player->unk_154 * M_DTOR, MTXF_APPLY); + sp5C.x = 0.0f; sp5C.y = 0.0f; sp5C.z = 0; + Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp44); + shot->vel.x = sp50.x; shot->vel.y = sp50.y; shot->vel.z = sp50.z; + shot->obj.pos.x = player->pos.x + sp44.x; shot->obj.pos.y = player->pos.y + sp44.y; shot->obj.pos.z = player->trueZpos + sp44.z; @@ -2980,6 +3164,7 @@ bool Player_CanLockOn(s32 playerNum) { return false; } } + if (gVersusMode) { for (i = 0; i < gCamCount; i++) { if (((gPlayer[playerNum].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || @@ -3004,6 +3189,7 @@ bool Player_UpdateLockOn(Player* player) { if (gChargeTimers[player->num] == 20) { Object_PlayerSfx(player->sfxSource, NA_SE_LOCK_SEARCH, player->num); } + if (!((gInputHold->button & R_TRIG) && (gInputHold->button & Z_TRIG) && (player->form == FORM_ARWING) && (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE)) && ((gGameFrameCount % 4) == 0) && Player_CanLockOn(player->num)) { @@ -3047,6 +3233,7 @@ bool Player_UpdateLockOn(Player* player) { break; } } + if (gChargeTimers[player->num] > 10) { if ((gPlayerShots[14 - player->num].obj.status == SHOT_FREE) || (gPlayerShots[14 - player->num].obj.id != PLAYERSHOT_LOCK_ON) || @@ -3066,20 +3253,24 @@ bool Player_UpdateLockOn(Player* player) { } gChargeTimers[player->num] = 0; } + if (gInputPress->button & B_BUTTON) { hasBombTarget = false; + for (i = 0; i < ARRAY_COUNT(gActors); i++) { if ((gActors[i].obj.status == OBJ_ACTIVE) && (gActors[i].lockOnTimers[player->num] != 0)) { hasBombTarget = true; break; } } + for (i = 0; i < gCamCount; i++) { if (gVsLockOnTimers[i][player->num] != 0) { hasBombTarget = true; break; } } + if (hasBombTarget && (gBombCount[player->num] != 0) && (gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].obj.status == SHOT_FREE)) { gBombCount[player->num]--; @@ -3105,6 +3296,7 @@ void Player_Shoot(Player* player) { if ((player->wings.rightState <= WINGSTATE_BROKEN) || (player->wings.leftState <= WINGSTATE_BROKEN)) { gLaserStrength[player->num] = LASERS_SINGLE; } + if (!Player_UpdateLockOn(player)) { if (gLaserStrength[gPlayerNum] > LASERS_SINGLE) { Math_SmoothStepToF(&player->wings.unk_14, -10.0f, 1.0f, 0.5f, 0.0f); @@ -3124,6 +3316,7 @@ void Player_Shoot(Player* player) { Player_SmartBomb(player); } break; + case FORM_LANDMASTER: if (!Player_UpdateLockOn(player)) { if (gShootButton[player->num] & gInputPress->button) { @@ -3132,6 +3325,7 @@ void Player_Shoot(Player* player) { Player_SmartBomb(player); } break; + case FORM_ON_FOOT: if (gInputPress->button & A_BUTTON) { player->shotTimer = 0; @@ -3160,6 +3354,7 @@ void Player_ArwingBank(Player* player) { } else if ((player->wings.leftState <= WINGSTATE_BROKEN) && (player->wings.rightState == WINGSTATE_INTACT)) { sp3C = 17.0f; } + sp38 = 0.1f; if ((gInputHold->button & Z_TRIG) && !(gInputHold->button & R_TRIG)) { sp3C = 90.0f; @@ -3188,7 +3383,9 @@ void Player_ArwingBank(Player* player) { } } } + Math_SmoothStepToF(&player->zRotBank, sp3C, sp38, 10.0f, 0.f); + if (gInputPress->button & Z_TRIG) { player->sfx.bank = 1; if (player->rollInputTimerL != 0) { @@ -3200,6 +3397,7 @@ void Player_ArwingBank(Player* player) { player->rollInputTimerL = 10; } } + if (gInputPress->button & R_TRIG) { player->sfx.bank = 1; if (player->rollInputTimerR != 0) { @@ -3216,6 +3414,7 @@ void Player_ArwingBank(Player* player) { void Player_UseTankJets(Player* player) { Math_SmoothStepToF(&player->unk_170, 0.0f, 1.0f, 0.2f, 0.0f); Math_SmoothStepToF(&player->unk_16C, 0.0f, 1.0f, 0.2f, 0.0f); + if (gInputPress->button & Z_TRIG) { if ((player->rollInputTimerL != 0) && (player->zRotBank > 0.0f) && (player->boostMeter < 10.0f)) { player->rollState = 1; @@ -3225,6 +3424,7 @@ void Player_UseTankJets(Player* player) { player->rollInputTimerL = 10; } } + if (gInputPress->button & R_TRIG) { if ((player->rollInputTimerR != 0) && (player->zRotBank < 0.0f) && (player->boostMeter < 10.0f)) { player->rollState = 1; @@ -3234,6 +3434,7 @@ void Player_UseTankJets(Player* player) { player->rollInputTimerR = 10; } } + player->unk_18C = fabsf(SIN_DEG(player->zRotBank) * 25.0f); player->unk_18C += fabsf(SIN_DEG(player->zRotBarrelRoll) * 20.0f); } @@ -3245,12 +3446,15 @@ void Player_UpdatePath(Player* player) { player->zPathVel = -player->vel.z; player->zPath += -player->vel.z; + gPathVelZ = -player->vel.z; gPathProgress = player->zPath; gPathTexScroll += player->zPathVel; + if (gGroundType == 4) { gPathGroundScroll = player->zPathVel; } + if (!gBossActive && (player->zPath > 500000.0f)) { player->zPath = 0.0f; player->pos.z = 0.0f; @@ -3267,6 +3471,7 @@ void Player_UpdatePath(Player* player) { break; } } + while (true) { if (player->bankAngle < -360.0f) { player->bankAngle += 360.0f; @@ -3274,6 +3479,7 @@ void Player_UpdatePath(Player* player) { break; } } + if (gCurrentLevel == LEVEL_UNK_15) { Math_SmoothStepToF(&player->pathStep, 10.0f, 0.1f, 0.5f, 0.0001f); player->pos.x += Math_SmoothStepToF(&player->xPath, player->xPathTarget, 0.1f, player->pathStep, 0.0001f); @@ -3283,6 +3489,7 @@ void Player_UpdatePath(Player* player) { gPathVelX = Math_SmoothStepToF(&player->xPath, player->xPathTarget, 0.1f, player->pathStep, 0.0001f); gPathVelY = Math_SmoothStepToF(&player->yPath, player->yPathTarget, 0.1f, player->pathStep, 0.0001f); } + if (player->pathChangeTimer != 0) { player->pathChangeTimer--; Math_SmoothStepToF(&player->yRot_114, player->pathChangeYaw, 0.03f, 0.5f, 0.0001f); @@ -3364,16 +3571,22 @@ void Player_MoveArwing360(Player* player) { gPlayerTurnRate = 2.3f; gPlayerTurnStickMod = 0.68f; + sp7C = -gInputPress->stick_x; sp78 = gInputPress->stick_y; + Math_SmoothStepToAngle(&player->aerobaticPitch, 0.0f, 0.1f, 5.0f, 0.01f); Matrix_RotateZ(gCalcMatrix, -player->zRotBank * M_DTOR, MTXF_NEW); + sp4C.x = sp7C * 0.75f; sp4C.y = sp78 * 0.75f; sp4C.z = 0.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp4C, &sp40); + sp60 = sp40.y; sp5C = sp58 = 0.0f; + if (sp40.x < -5.0f) { sp5C = -sp40.x; } @@ -3386,16 +3599,20 @@ void Player_MoveArwing360(Player* player) { Math_SmoothStepToF(&player->wings.unk_08, -sp60 - sp5C, 0.1f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_0C, -sp60 + sp58, 0.1f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_10, -sp60 - sp58, 0.1f, 100.0f, 0.0f); + scale = 0.1f; if ((player->zRotBank > 10.0f) && (sp7C > 0)) { gPlayerTurnRate *= 2.0f; scale = 0.2f; } + if ((player->zRotBank < -10.0f) && (sp7C < 0)) { gPlayerTurnRate *= 2.0f; scale = 0.2f; } + Math_SmoothStepToF(&player->rot.y, sp7C * gPlayerTurnStickMod, scale, gPlayerTurnRate, 0.03f); + scale = 0.03f; if ((player->zRotBank > 10.0f) && (sp7C > 0)) { scale = 0.05f; @@ -3403,7 +3620,9 @@ void Player_MoveArwing360(Player* player) { if ((player->zRotBank < -10.0f) && (sp7C < 0)) { scale = 0.05f; } + Math_SmoothStepToF(&player->yRotVel_11C, player->rot.y * scale, 0.1f, 0.8f, 0.05f); + player->yRot_114 += player->yRotVel_11C; if (player->yRot_114 >= 360.0f) { player->yRot_114 -= 360.0f; @@ -3411,33 +3630,44 @@ void Player_MoveArwing360(Player* player) { if (player->yRot_114 < 0.0f) { player->yRot_114 += 360.0f; } + gPlayerTurnRate = 2.3f; var_fa1 = 0.1f; temp = -sp78 * gPlayerTurnStickMod; + if ((temp <= 0.0f) && (player->pos.y < (gGroundHeight + 50.0f))) { gPlayerTurnRate *= 2.0f; temp = 0.0f; var_fa1 = 0.2f; } + Math_SmoothStepToF(&player->rot.x, temp, var_fa1, gPlayerTurnRate, 0.03f); + var_fv1 = 1.5f; if (player->pos.y < (gGroundHeight + 70.0f)) { var_fv1 = 0.8f; } + if (!((gInputHold->button & R_TRIG) && (gInputHold->button & Z_TRIG)) && !(!(gInputHold->button & R_TRIG) && !(gInputHold->button & Z_TRIG))) { var_fv1 = 0.1f; } + var_fv0 = 4.0f; if (sp7C == 0) { var_fv0 = 1.0f; } + Math_SmoothStepToF(&player->rot.z, sp7C * 0.6f * var_fv1, 0.1f, var_fv0, 0.03f); + player->bankAngle = player->rot.z + player->zRotBank + player->zRotBarrelRoll; + Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -((player->xRot_120 + player->rot.x + player->aerobaticPitch) * M_DTOR), MTXF_APPLY); + sp4C.x = 0.0f; sp4C.y = 0.0f; + if (player->wings.rightState <= WINGSTATE_BROKEN) { sp4C.x -= 2.5f; sp4C.y -= 2.5f; @@ -3447,15 +3677,20 @@ void Player_MoveArwing360(Player* player) { sp4C.y -= 2.5f; } sp4C.z = player->baseSpeed + player->boostSpeed; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp4C, &sp40); + player->vel.x = sp40.x; player->vel.z = sp40.z; player->vel.y = sp40.y; + player->pos.x += player->vel.x; player->pos.y += player->vel.y; + if ((player->pathHeight < player->pos.y) && (player->vel.y >= 0.0f)) { Math_SmoothStepToF(&player->pos.y, player->pathHeight, 0.1f, fabsf(player->vel.y * 1.5f) + 5.0f, 0.0f); } + if ((player->pos.y < player->pathFloor) && (player->vel.y <= 0.0f)) { if (player->pathFloor >= 0.0f) { player->pos.y = player->pathFloor; @@ -3463,13 +3698,17 @@ void Player_MoveArwing360(Player* player) { Math_SmoothStepToF(&player->pos.y, player->pathFloor, 0.1f, fabsf(player->vel.y * 1.5f) + 5.0f, 0.0f); } } + player->pos.z += player->vel.z; + if (player->pathHeight - 100.0f < player->pos.y) { player->flags_228 = PFLAG_228_3; } + if (player->pos.y < -(player->pathHeight - 100.0f)) { player->flags_228 = PFLAG_228_2; } + Player_CheckBounds360(player); player->trueZpos = player->pos.z; Player_WingEffects(player); @@ -3478,36 +3717,43 @@ void Player_MoveArwing360(Player* player) { void Player_PerformLoop(Player* player) { f32 temp; - f32 sp58; + f32 sp58 = 60.0f; Vec3f sp4C; Vec3f sp40; - sp58 = 60.0f; if (gVersusMode) { gVsLockOnTimers[player->num][0] = gVsLockOnTimers[player->num][1] = gVsLockOnTimers[player->num][2] = gVsLockOnTimers[player->num][3] = 0; } + if (player->aerobaticPitch > 240.0f) { sp58 = -50.0f; } + Math_SmoothStepToF(&player->wings.unk_04, sp58, 0.3f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_08, sp58, 0.3f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_0C, sp58, 0.3f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_10, sp58, 0.3f, 100.0f, 0.0f); + if (player->aerobaticPitch < 180.0f) { player->pos.y += 2.0f; } + player->boostCooldown = true; + if (gLevelMode == LEVELMODE_ON_RAILS) { player->boostMeter += 2.0f; } else { player->boostMeter += 1.0f; } + if (player->boostMeter > 90.0f) { player->boostMeter = 90.0f; } + player->unk_190 = 2; Math_SmoothStepToF(&player->aerobaticPitch, 360.0f, 0.1f, 5.0f, 0.001f); + if (player->aerobaticPitch > 350.0f) { player->somersault = false; if (gLevelMode != LEVELMODE_ON_RAILS) { @@ -3522,20 +3768,28 @@ void Player_PerformLoop(Player* player) { } Math_SmoothStepToF(&player->rot.z, 0.0f, 0.1f, 5.0f, 0.0f); Math_SmoothStepToF(&player->rot.x, 0.0f, 0.1f, 5.0f, 0.0f); + temp = -gInputPress->stick_x * 0.68f; + Math_SmoothStepToF(&player->rot.y, temp, 0.1f, 2.0f, 0.0f); + player->bankAngle = player->rot.z + player->zRotBank + player->zRotBarrelRoll; + Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -((player->xRot_120 + player->rot.x + player->aerobaticPitch) * M_DTOR), MTXF_APPLY); + sp4C.x = 0.0f; sp4C.y = 0.0f; sp4C.z = player->baseSpeed; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp4C, &sp40); + player->vel.x = sp40.x; player->vel.z = sp40.z; player->vel.y = sp40.y; player->pos.x += player->vel.x; player->pos.y += player->vel.y; + if (player->pos.y < player->pathFloor + player->yPath) { player->pos.y = player->pathFloor + player->yPath; player->vel.y = 0.0f; @@ -3764,14 +4018,17 @@ void Player_MoveTank360(Player* player) { if (var_fv1 < player->unk_17C) { player->unk_17C -= 3.0f; } + if (player->unk_180 < 0) { player->unk_180 += 3.0f; } if (player->unk_180 > 0) { player->unk_180 -= 3.0f; } + gPlayerTurnRate = 3.0f; gPlayerTurnStickMod = 0.6666f; + sp5C = gInputPress->stick_x; if (sp5C == 0) { Math_SmoothStepToF(&player->rot.y, -sp5C * gPlayerTurnStickMod, 0.1f, gPlayerTurnRate * 0.5f, 0.1f); @@ -3779,6 +4036,7 @@ void Player_MoveTank360(Player* player) { Math_SmoothStepToF(&player->rot.y, -sp5C * gPlayerTurnStickMod, 0.1f, gPlayerTurnRate, 0.1f); } player->rot_104.y = player->rot.y; + var_fa0 = 0.03f; var_fa1 = 1.5f; if ((player->zRotBank > 10.0f) && (sp5C < 0.0f)) { @@ -3799,29 +4057,38 @@ void Player_MoveTank360(Player* player) { var_fa1 = 20.0f; } } + Math_SmoothStepToF(&player->yRotVel_11C, player->rot.y * var_fa0, 0.1f, var_fa1, 0.05f); + player->yRot_114 += player->yRotVel_11C; player->yRot_114 = Math_ModF(player->yRot_114, 360.0f); + Matrix_RotateX(gCalcMatrix, player->rot_104.x * M_DTOR, MTXF_NEW); Matrix_RotateZ(gCalcMatrix, player->rot_104.z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_APPLY); + sp44.x = 0.0f; sp44.y = 0.0f; sp44.z = player->baseSpeed; sp44.z -= fabsf((player->unk_184 * 0.4f * player->baseSpeed) / 15.0f); sp44.z += SIN_DEG(player->unk_000) * player->boostSpeed; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); + player->vel.x = sp38.x; player->vel.z = sp38.z; + if (player->unk_16C > 0.2f) { Math_SmoothStepToF(&player->unk_184, player->baseSpeed * 0.5f, 1.0f, 1.0f, 0); } + if (player->unk_170 > 0.2f) { Math_SmoothStepToF(&player->unk_184, -player->baseSpeed * 0.5f, 1.0f, 1.0f, 0); } if (!(player->unk_170 > 0.2f) && !(player->unk_16C > 0.2f) && player->grounded) { Math_SmoothStepToF(&player->unk_184, 0.0f, 1.0f, 0.75f, 0.0f); } + if (player->rollState != 0) { if (player->rollRate < 0) { player->unk_184 = 15.0f; @@ -3830,21 +4097,27 @@ void Player_MoveTank360(Player* player) { player->unk_184 = -15.0f; } } + sp44.x = -player->unk_184; sp44.y = 0; sp44.z = 0; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); + player->pos.x += sp38.x; player->pos.z += sp38.z; player->pos.x += player->vel.x; player->vel.y -= player->gravity; player->pos.y += player->vel.y; + if (player->grounded) { Math_SmoothStepToAngle(&player->rot.x, player->rot_104.x, 0.2f, 5.0f, 0.005f); Math_SmoothStepToAngle(&player->rot.z, player->rot_104.z, 0.2f, 5.0f, 0.005f); Math_SmoothStepToF(&player->unk_000, 0.0f, 0.1f, 5.0f, 0.00001f); } + player->grounded = false; + if (player->pos.y <= gGroundHeight - 5.0f) { player->pos.y = gGroundHeight - 5.0f; if (player->vel.y < -20.0f) { @@ -3853,16 +4126,19 @@ void Player_MoveTank360(Player* player) { player->vel.y = 0.0f; player->grounded = true; } + if (player->vel.y < -80.0f) { player->vel.y = -80.0f; } if (player->vel.y > 20.0f) { player->vel.y = 20.0f; } + player->pos.z += player->vel.z; Player_CheckBounds360(player); player->trueZpos = player->pos.z; player->bankAngle = player->rot.z + player->zRotBank + player->zRotBarrelRoll; + if (player->grounded) { player->rockPhase += player->baseSpeed * 5.0f; player->rockAngle = SIN_DEG(player->rockPhase) * 0.7f; @@ -3901,6 +4177,7 @@ void Player_MoveOnFoot(Player* player) { s32 pad; player->camRoll = 0.0f; + var_fa0 = 0.0f; if (player->pos.y > 10.0f) { var_fa0 = 20.0f; @@ -3908,6 +4185,7 @@ void Player_MoveOnFoot(Player* player) { if (player->pos.y > 300.0f) { var_fa0 = 40.0f; } + sp74 = gInputPress->stick_y * 0.8f; if (sp74 < -40.0f) { sp74 = -40.0f; @@ -3915,17 +4193,22 @@ void Player_MoveOnFoot(Player* player) { if (var_fa0 < sp74) { sp74 = var_fa0; } + Math_SmoothStepToF(&player->unk_154, sp74, 0.1f, 3.0f, 0.00001f); Math_SmoothStepToF(&player->unk_180, 0.0f, 0.15f, 5.0f, 0.00001f); Math_SmoothStepToF(&player->unk_158, sp74, 0.2f, 5.0f, 0.00001f); + gPlayerTurnRate = 3.0f; gPlayerTurnStickMod = 0.666f; + sp74 = gInputPress->stick_x; sp70 = gInputPress->stick_y; Math_SmoothStepToF(&player->rot.y, -sp74 * gPlayerTurnStickMod * 0.6f, 0.5f, gPlayerTurnRate, 0.001f); Math_SmoothStepToF(&player->rot.z, -sp74 * gPlayerTurnStickMod * 0.2f * player->baseSpeed / 15.0f, 0.2f, 5.0f, 0.001f); + player->bankAngle = player->rot.z; + if ((sp74 != 0.0f) || (sp70 != 0.0f)) { Math_SmoothStepToF(&player->unk_15C, sp74 * gPlayerTurnStickMod, 0.9f, 2.0f * gPlayerTurnRate, 0.1f); Math_SmoothStepToF(&player->unk_164, sp74 * 0.3f, 0.1f, 10.0f, 0.00001f); @@ -3944,7 +4227,9 @@ void Player_MoveOnFoot(Player* player) { Math_SmoothStepToF(&player->unk_164, player->unk_174, 0.1f, 10.0f, 0.00001f); Math_SmoothStepToF(&player->unk_168, player->unk_178, 0.1f, 10.0f, 0.00001f); } + player->rot_104.y = player->rot.y; + if (player->baseSpeed < 1.5f) { var_fv0 = 0.12f; var_fa0 = 3.0f; @@ -3952,37 +4237,50 @@ void Player_MoveOnFoot(Player* player) { var_fv0 = 0.08f; var_fa0 = 1.5f; } + Math_SmoothStepToF(&player->yRotVel_11C, -sp74 * gPlayerTurnStickMod * var_fv0, 0.2f, var_fa0, 0.0f); + player->yRot_114 += player->yRotVel_11C; player->yRot_114 = Math_ModF(player->yRot_114, 360.0f); + Matrix_RotateX(gCalcMatrix, player->rot_104.x * M_DTOR, MTXF_NEW); Matrix_RotateZ(gCalcMatrix, player->rot_104.z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_APPLY); + sp58.x = 0.0f; sp58.y = 0.0f; sp58.z = player->baseSpeed; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp58, &sp4C); + player->vel.x = sp4C.x; player->vel.z = sp4C.z; player->pos.x += player->vel.x; + if ((player->pos.y < 40.0f) || (player->pos.y > 670.0f)) { player->rot_104.z = 0.0f; player->rot_104.x = 0.0f; } + Math_SmoothStepToAngle(&player->xRot_0FC, player->rot_104.x, 0.15f, 15.0f, 0.005f); Math_SmoothStepToAngle(&player->zRot_0FC, player->rot_104.z, 0.15f, 15.0f, 0.005f); + if (player->grounded) { if (player->baseSpeed > 1.0f) { player->unk_00C += player->unk_008; + if ((s32) player->unk_00C >= Animation_GetFrameCount(&D_versus_301CFEC)) { player->unk_00C = 0.0f; } + player->yBob = 2.0f * SIN_DEG((player->unk_20C + 7) * 24.0f); if (player->yBob < -0.5f) { player->yBob = -0.5f; } + player->yBob -= 3.0f; player->unk_20C = player->unk_00C; + switch (gPlayerNum) { case 0: sp44 = Animation_GetFrameData(&D_versus_301CFEC, player->unk_20C, sp78); @@ -3997,10 +4295,13 @@ void Player_MoveOnFoot(Player* player) { sp44 = Animation_GetFrameData(&D_versus_301C3A8, player->unk_20C, sp78); break; } + Math_SmoothStepToVec3fArray(sp78, player->jointTable, 1, sp44, 1.0f, player->unk_010, 0.01f); + if (player->unk_010 < 50.0f) { player->unk_010 += 2.0f; } + sp64 = player->baseSpeed; if (gGameFrameCount & 4) { sp64 = 2.0f * player->baseSpeed; @@ -4014,6 +4315,7 @@ void Player_MoveOnFoot(Player* player) { player->unk_010 = 0.0f; } } + switch (gPlayerNum) { case 0: sp48 = SEGMENTED_TO_VIRTUAL(D_versus_302E56C); @@ -4036,6 +4338,7 @@ void Player_MoveOnFoot(Player* player) { player->unk_00C = 0.0f; } } + if (!player->grounded) { switch (gPlayerNum) { case 0: @@ -4053,6 +4356,7 @@ void Player_MoveOnFoot(Player* player) { } Math_SmoothStepToVec3fArray(sp48, player->jointTable, 1, 24, 0.2f, 10.0f, 0.01f); } + player->gravity = 2.0f; if ((gInputPress->button & Z_TRIG) && player->grounded) { player->vel.y = 12.0f; @@ -4060,15 +4364,18 @@ void Player_MoveOnFoot(Player* player) { if ((gInputHold->button & Z_TRIG) && (player->vel.y > 0.0f)) { player->gravity = 1.5f; } + player->grounded = false; player->vel.y -= player->gravity; player->pos.y += player->vel.y; + if (player->pos.y <= gGroundHeight) { player->grounded = true; player->pos.y = 0.0f; player->vel.y = 0.0f; player->rot.x += (player->pos.y - player->rot.x) * 0.05f; } + if (player->vel.y < -50.0f) { player->vel.y = -50.0f; } @@ -4098,6 +4405,7 @@ void Player_Setup(Player* playerx) { gTiStartLandmaster = 0; player->shields = 255; + if (gVersusMode) { switch (gHandicap[gPlayerNum]) { case 1: @@ -4108,8 +4416,10 @@ void Player_Setup(Player* playerx) { break; } } + player->wings.rightState = WINGSTATE_INTACT; player->wings.leftState = WINGSTATE_INTACT; + if (gExpertMode) { gLeftWingHealth[gPlayerNum] = 10; gRightWingHealth[gPlayerNum] = 10; @@ -4136,6 +4446,7 @@ void Player_Setup(Player* playerx) { player->groundPos.y = -1000.0f; player->cam.at.z = player->cam.eye.z - 1000.0f; D_ctx_80177950 = 1.0f; + if ((gLevelType == LEVELTYPE_SPACE) && (gCurrentLevel != LEVEL_BOLSE)) { player->hideShadow = true; player->unk_0A8 = 3000.0f; @@ -4152,8 +4463,10 @@ void Player_Setup(Player* playerx) { player->pathFloor = gGroundHeight + 40.0f; player->unk_0A8 = 3000.0f; } + player->baseSpeed = gArwingSpeed; player->pos.y = 350.0f; + switch (gCurrentLevel) { case LEVEL_MACBETH: case LEVEL_TITANIA: @@ -4172,6 +4485,7 @@ void Player_Setup(Player* playerx) { player->pos.y = 0.0f; } break; + case LEVEL_AQUAS: player->form = FORM_BLUE_MARINE; player->gravity = 0.0f; @@ -4180,14 +4494,17 @@ void Player_Setup(Player* playerx) { player->pathHeight = 720.0f; player->pathFloor = gGroundHeight + 30.0f; break; + case LEVEL_SOLAR: case LEVEL_ZONESS: player->pathFloor = -450.0f; break; } + if (gCurrentLevel != LEVEL_CORNERIA) { gSavedGroundSurface = SURFACE_GRASS; } + gGoldRingCount[0] = gSavedGoldRingCount[0]; do { if (gGoldRingCount[0] > 3) { @@ -4198,6 +4515,7 @@ void Player_Setup(Player* playerx) { if (gGoldRingCount[0] == 3) { gGoldRingCount[0] = 0; } + gHitCount = gSavedHitCount; if ((gCurrentLevel == LEVEL_VENOM_ANDROSS) || ((gCurrentLevel == LEVEL_VENOM_2) && (gLevelPhase == 2))) { if (D_ctx_80177C9C != 0) { @@ -4213,9 +4531,11 @@ void Player_Setup(Player* playerx) { } gHitCount = gSavedHitCount = D_ctx_80177CA4; } + D_hud_80161720[0] = 0.0f; D_hud_80161720[1] = 0.0f; D_hud_80161720[2] = 0.0f; + gDisplayedHitCount = gHitCount; D_hud_80161730 = 0; gMissedZoSearchlight = gSavedZoSearchlightStatus; @@ -4223,6 +4543,7 @@ void Player_Setup(Player* playerx) { gGroundSurface = gSavedGroundSurface; gPathProgress = player->zPath = gSavedPathProgress; player->pos.z = player->trueZpos = -player->zPath; + if ((gSavedObjectLoadIndex > 0) && (gLevelMode == LEVELMODE_ON_RAILS)) { if (gCurrentLevel == LEVEL_MACBETH) { sp2E = gObjectLoadIndex; @@ -4231,6 +4552,7 @@ void Player_Setup(Player* playerx) { } func_enmy_80062568(); } + if (player->form == FORM_LANDMASTER) { player->pos.z -= 200.0f; player->trueZpos -= 200.0f; @@ -4247,18 +4569,22 @@ void Player_Setup(Player* playerx) { player->pos.z = D_800D3124[gPlayerNum]; player->yRot_114 = D_800D3154[gPlayerNum]; player->form = gPlayerForms[gPlayerNum]; + switch (player->form) { case FORM_ARWING: break; + case FORM_LANDMASTER: player->pos.y = 0.0f; player->baseSpeed = 15.0f; player->gravity = 3.0f; break; + case FORM_ON_FOOT: player->pos.y = 0.0f; player->baseSpeed = 15.0f; player->groundPos.y = 0; + switch (gPlayerNum) { case 0: sp38 = SEGMENTED_TO_VIRTUAL(D_versus_302E56C); @@ -4273,6 +4599,7 @@ void Player_Setup(Player* playerx) { sp38 = SEGMENTED_TO_VIRTUAL(D_versus_302E65C); break; } + for (j = 0; j < 30; j++, sp38++) { player->jointTable[j] = *sp38; } @@ -4280,8 +4607,10 @@ void Player_Setup(Player* playerx) { } Camera_Update360(player, true); } + player->state_1C8 = PLAYERSTATE_1C8_ACTIVE; player->wingPosition = gLevelType; + if ((gLevelMode == LEVELMODE_ALL_RANGE) && !gVersusMode) { player->pos.z = 8000.0f; player->pos.y = 670.0f; @@ -4300,14 +4629,17 @@ void Player_Setup(Player* playerx) { player->unk_014 = 1.0f; player->unk_018 = 1.0f; } + if (D_ctx_8017782C && (gSavedObjectLoadIndex == 0)) { gLeveLClearStatus[gCurrentLevel] = 0; + for (j = 0; j < 10; j++) { D_ctx_80177A10[j] = 0; D_ctx_80177A48[j] = 0.0f; } D_ctx_8017782C = false; gAllRangeCheckpoint = 0; + switch (gCurrentLevel) { case LEVEL_CORNERIA: player->state_1C8 = PLAYERSTATE_1C8_LEVEL_INTRO; @@ -4359,6 +4691,7 @@ void Player_Setup(Player* playerx) { Macbeth_801ACFBC(); } } + if (player->state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) { player->draw = true; switch (gCurrentLevel) { @@ -4406,6 +4739,7 @@ void Player_Setup(Player* playerx) { if ((gCurrentLevel == LEVEL_TRAINING)) { gClearPlayerInfo = true; } + if (gClearPlayerInfo && !gVersusMode) { for (j = TEAM_ID_FALCO; j < TEAM_ID_MAX; j++) { gTeamShields[j] = gSavedTeamShields[j] = gPrevPlanetTeamShields[j] = gPrevPlanetSavedTeamShields[j] = 255; @@ -4427,16 +4761,21 @@ void Player_Setup(Player* playerx) { gClearPlayerInfo = false; } } + if ((gCurrentLevel == LEVEL_TRAINING)) { gClearPlayerInfo = true; } + player->sfx.levelType = gLevelType; player->sfx.form = player->form; - func_display_80057814(player); + + Display_SetupPlayerSfxPos(player); + if (!gVersusMode && (((gCurrentLevel != LEVEL_TITANIA) && (gCurrentLevel != LEVEL_SOLAR)) || gVersusMode || (player->state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO))) { Audio_StartPlayerNoise(gPlayerNum); } + if ((player->form == FORM_ARWING) && !gVersusMode) { switch (player->wingPosition) { case 0: @@ -4450,6 +4789,7 @@ void Player_Setup(Player* playerx) { break; } } + if (gLaserStrength[gPlayerNum] > LASERS_SINGLE) { player->wings.unk_14 = -10.0f; } @@ -4472,12 +4812,14 @@ void Player_UpdateArwingRoll(Player* player) { Math_SmoothStepToF(&player->unk_150, 1.0f, 0.05f, 10.0f, 0.0001f); player->zRotBarrelRoll = Math_ModF(player->zRotBarrelRoll, 360.0f); + if (player->barrelRollAlpha > 0) { player->barrelRollAlpha -= 30; if (player->barrelRollAlpha <= 0) { player->barrelRollAlpha = 0; } } + if (player->meteoWarpTimer == 0) { if (player->rollState == 0) { Math_SmoothStepToF(&player->zRotBarrelRoll, 0.0f, 0.1f, 10.0f, 0.00001f); @@ -4497,6 +4839,7 @@ void Player_UpdateArwingRoll(Player* player) { if (player->rollTimer != 0) { player->rollTimer--; } + if (player->rollState != 0) { player->rollInputTimerR = 0; player->rollInputTimerL = 0; @@ -4523,20 +4866,9 @@ void Player_UpdateArwingRoll(Player* player) { } void Player_UpdateTankRoll(Player* player) { - f32 temp_fv0; - f32 temp_fv0_2; - s32* temp_v1; - s32 temp_t3; - s32 temp_t4; - s32 temp_v0; - s32 temp_v0_2; - s32 temp_v0_3; - s32 temp_v0_4; - s32 var_v0; - player->zRotBarrelRoll = Math_ModF(player->zRotBarrelRoll, 360.0f); + if (player->rollState == 0) { - temp_fv0 = player->zRotBarrelRoll; if (player->zRotBarrelRoll > 0.0f) { player->zRotBarrelRoll -= (player->zRotBarrelRoll * 0.1f); if (player->zRotBarrelRoll < 0.1f) { @@ -4550,7 +4882,7 @@ void Player_UpdateTankRoll(Player* player) { } } } - temp_v0 = player->rollInputTimerL; + if (player->rollInputTimerL != 0) { player->rollInputTimerL--; } @@ -4560,6 +4892,7 @@ void Player_UpdateTankRoll(Player* player) { if (player->rollTimer != 0) { player->rollTimer--; } + if (player->rollState != 0) { player->rollInputTimerR = 0; player->rollInputTimerL = 0; @@ -4570,12 +4903,14 @@ void Player_UpdateTankRoll(Player* player) { player->zRotBank = 0.0f; } } + if (player->zRotBank < 0.0f) { player->zRotBank += 8.0f; if (player->zRotBank > 0.0f) { player->zRotBank = 0.0f; } } + if (player->rollTimer == 0) { if (player->rollRate > 0) { player->rollRate -= 2; @@ -4589,6 +4924,7 @@ void Player_UpdateTankRoll(Player* player) { } else { Math_SmoothStepToF(&D_ctx_801779A8[player->num], 30.0f, 1.0f, 30.0f, 0.0f); } + if ((player->rollTimer >= 5) && (player->mercyTimer == 0)) { if (player->rollRate > 0) { player->unk_170 = 1.3f; @@ -4597,6 +4933,7 @@ void Player_UpdateTankRoll(Player* player) { player->unk_16C = 1.3f; } } + if (gVersusMode) { gVsLockOnTimers[player->num][0] = gVsLockOnTimers[player->num][1] = gVsLockOnTimers[player->num][2] = gVsLockOnTimers[player->num][3] = 0; @@ -4613,6 +4950,7 @@ void Player_ArwingBoost(Player* player) { (gInputHold->button & gBoostButton[player->num])) { player->boostCooldown = true; } + if (gLevelMode == LEVELMODE_ON_RAILS) { sp28 = 3.0f; sp2C = 0.5f; @@ -4621,8 +4959,11 @@ void Player_ArwingBoost(Player* player) { sp28 = 1.5f; sp2C = 0.35f; } + player->sfx.boost = 0; + var = gInputPress->stick_y; // fake? + if (gLoopDownTimers[gPlayerNum] != 0) { gLoopDownTimers[gPlayerNum]--; } @@ -4739,7 +5080,7 @@ void Player_ArwingBoost2(Player* player) { void Player_ArwingBrake(Player* player) { f32 sp34; f32 sp30; - s32 var; + s32 stickY; if (gLevelMode == LEVELMODE_ON_RAILS) { sp30 = 3.0f; @@ -4748,17 +5089,21 @@ void Player_ArwingBrake(Player* player) { sp30 = 1.5f; sp34 = 0.35f; } - player->sfx.brake = 0; - var = gInputPress->stick_y; // fake? + + player->sfx.brake = false; + + stickY = gInputPress->stick_y; // fake? + if (gUturnDownTimers[gPlayerNum] != 0) { gUturnDownTimers[gPlayerNum]--; } if (gUturnBrakeTimers[gPlayerNum] != 0) { gUturnBrakeTimers[gPlayerNum]--; } - if (var >= -50) { + if (stickY >= -50) { gUturnDownTimers[gPlayerNum] = 5; } + if ((gUturnDownTimers[gPlayerNum] > 0) && (gUturnDownTimers[gPlayerNum] < 5) && (gDrawBackdrop < 5) && (gUturnBrakeTimers[gPlayerNum] != 0)) { gUturnDownTimers[gPlayerNum] = 0; @@ -4774,6 +5119,7 @@ void Player_ArwingBrake(Player* player) { gCoUturnCount++; } } + if ((gInputHold->button & gBrakeButton[player->num]) && !(gInputHold->button & gBoostButton[player->num]) && (player->state_1C8 != PLAYERSTATE_1C8_U_TURN) && !player->boostCooldown) { if (player->boostMeter == 0.0f) { @@ -4782,24 +5128,28 @@ void Player_ArwingBrake(Player* player) { gUturnBrakeTimers[gPlayerNum] = 5; } } + if (gLevelType == LEVELTYPE_PLANET) { Math_SmoothStepToF(&player->wings.unk_04, 90.0f, 0.2f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_08, -90.0f, 0.2f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_0C, 90.0f, 0.2f, 100.0f, 0.0f); Math_SmoothStepToF(&player->wings.unk_10, -90.0f, 0.2f, 100.0f, 0.0f); } + player->boostMeter += sp30; if (player->boostMeter > 90.0f) { player->boostCooldown = true; player->boostMeter = 90.0f; } + player->unk_190 = 0.3f; player->boostSpeed -= 1.0f; if (player->boostSpeed < -20.0f) { player->boostSpeed = -20.0f; } + Math_SmoothStepToF(&player->camDist, 180.0f, 0.1f, 10.0f, 0.0f); - player->sfx.brake = 1; + player->sfx.brake = true; Math_SmoothStepToF(&D_ctx_801779A8[player->num], 25.0f, 1.0f, 5.0f, 0.0f); } else if (player->boostMeter > 0.0f) { player->boostMeter -= sp34; @@ -4824,12 +5174,14 @@ void Player_TankBoostBrake(Player* player) { Math_SmoothStepToF(&player->boostMeter, 0.0f, 1.0f, 1.0f, 0.0f); } player->boostActive = false; + if (player->boostMeter == 0.0f) { player->boostCooldown = false; } else if (!(gInputHold->button & Z_TRIG) && !(gInputHold->button & R_TRIG) && !(gInputHold->button & gBoostButton[player->num]) && !(gInputHold->button & gBrakeButton[player->num])) { player->boostCooldown = true; } + sp2C = 20.0f; if ((gInputHold->button & gBoostButton[player->num]) && !player->boostCooldown) { if (player->boostMeter == 0.0f) { @@ -4846,6 +5198,7 @@ void Player_TankBoostBrake(Player* player) { player->boostCooldown = true; } } + if ((gInputHold->button & gBrakeButton[player->num]) && !player->boostCooldown) { if (player->boostMeter == 0.0f) { Player_PlaySfx(player->sfxSource, NA_SE_ARWING_BRAKE, player->num); @@ -4862,22 +5215,29 @@ void Player_TankBoostBrake(Player* player) { } void Player_UpdateTankJets(Player* player) { - f32 temp; - f32 temp2; + f32 stickY; + s32 pad; player->gravity = 3.0f; + if ((gInputHold->button & Z_TRIG) && !player->boostCooldown) { if (player->boostMeter == 0.0f) { Player_PlaySfx(player->sfxSource, NA_SE_ARWING_BOOST, player->num); } + player->unk_188 = 0.0f; + player->zRotBank += 4.0f; if (player->zRotBank > 50.0f) { player->zRotBank = 50.0f; } + Math_SmoothStepToF(&player->unk_170, 1.0f, 1.0f, 0.4f, 0.0f); + player->boostActive = true; + Math_SmoothStepToF(&player->boostMeter, 90.0f, 1.0f, 0.7f, 0.0f); + if (player->boostMeter >= 90.0f) { player->boostCooldown = true; } @@ -4898,14 +5258,20 @@ void Player_UpdateTankJets(Player* player) { if (player->boostMeter == 0.0f) { Player_PlaySfx(player->sfxSource, NA_SE_ARWING_BOOST, player->num); } + player->unk_188 = 0.0f; + player->zRotBank -= 4.0f; if (player->zRotBank < -50.0f) { player->zRotBank = -50.0f; } + Math_SmoothStepToF(&player->unk_16C, 1.0f, 1.0f, 0.4f, 0.0f); + player->boostActive = true; + Math_SmoothStepToF(&player->boostMeter, 90.0f, 1.0f, 0.7f, 0.0f); + if (player->boostMeter >= 90.0f) { player->boostCooldown = true; } @@ -4920,27 +5286,28 @@ void Player_UpdateTankJets(Player* player) { } } } + if ((player->unk_16C > 0.2f) && (player->unk_170 > 0.2f) && (player->radioDamageTimer == 0)) { player->zRotBank += (((__cosf(gGameFrameCount * M_DTOR * 8.0f) * 10.0f) - player->zRotBank) * 0.1f); Math_SmoothStepToAngle(&player->rot.x, 0.0f, 0.05f, 5.0f, 0.00001f); Math_SmoothStepToAngle(&player->rot.z, 0.0f, 0.05f, 5.0f, 0.00001f); - temp = gInputPress->stick_y; - Math_SmoothStepToF(&player->unk_000, temp * 0.5f, 0.05f, 5.0f, 0.00001f); + stickY = gInputPress->stick_y; + Math_SmoothStepToF(&player->unk_000, stickY * 0.5f, 0.05f, 5.0f, 0.00001f); Math_SmoothStepToF(&player->boostSpeed, 30.0f, 0.5f, 5.0f, 0.0f); player->gravity = -0.4f; Math_SmoothStepToF(&D_ctx_801779A8[player->num], 30.0f, 1.0f, 10.0f, 0.0f); if ((gCamCount == 1) && ((gGameFrameCount % 2) == 0)) { - func_effect_8007BC7C(RAND_FLOAT_CENTERED(20.0f) + player->pos.x, player->groundPos.y + 10.0f, - player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 4.0f); + Effect_Effect362_Spawn(RAND_FLOAT_CENTERED(20.0f) + player->pos.x, player->groundPos.y + 10.0f, + player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 4.0f); } } else if ((gCamCount == 1) && ((gGameFrameCount % 4) == 0) && (player->rollState == 0)) { if ((player->unk_16C > 0.2f) && (player->radioDamageTimer == 0)) { - func_effect_8007BC7C(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x - 57.0f), player->groundPos.y + 10.0f, - player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 3.0f); + Effect_Effect362_Spawn(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x - 57.0f), player->groundPos.y + 10.0f, + player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 3.0f); } if ((player->unk_170 > 0.2f) && (player->radioDamageTimer == 0)) { - func_effect_8007BC7C(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x + 57.0f), player->groundPos.y + 10.0f, - player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 3.0f); + Effect_Effect362_Spawn(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x + 57.0f), player->groundPos.y + 10.0f, + player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 3.0f); } } } @@ -4953,9 +5320,11 @@ void Player_UpdateEffects(Player* player) { s32 i; player->xShake = 0.0f; + player->basePos.x = player->pos.x; player->basePos.y = player->pos.y; player->basePos.z = player->pos.z; + if (player->csTimer != 0) { player->csTimer--; } @@ -4971,6 +5340,7 @@ void Player_UpdateEffects(Player* player) { if (player->dmgEffectTimer != 0) { player->dmgEffectTimer--; } + if (gVersusMode) { for (i = 0; i < gCamCount; i++) { if ((gVsLockOnTimers[player->num][i] != 0) && !(gControllerHold[i].button & A_BUTTON)) { @@ -4978,6 +5348,7 @@ void Player_UpdateEffects(Player* player) { } } } + if (gRightWingFlashTimer[player->num] != 0) { gRightWingFlashTimer[player->num]--; if (gRightWingFlashTimer[player->num] == 1000) { @@ -4996,17 +5367,22 @@ void Player_UpdateEffects(Player* player) { if (gRightWingDebrisTimer[player->num] != 0) { gRightWingDebrisTimer[player->num]--; } + if (gShieldTimer[player->num] != 0) { gShieldTimer[player->num]--; Math_SmoothStepToF(&gShieldAlpha[player->num], 128.0f, 1.0f, 40.0f, 0.01f); } else { Math_SmoothStepToF(&gShieldAlpha[player->num], 0.0f, 1.0f, 10.0f, 0.01f); } + Math_SmoothStepToF(&gMuzzleFlashScale[player->num], 0.0f, 1.0f, 0.4f, 0.01f); + if ((player->form == FORM_LANDMASTER) && (player->unk_1A0 != 0)) { player->unk_1A0--; } + player->dmgEffect = player->dmgEffectTimer & 1; + if (player->dmgEffectTimer != 0) { gFillScreenAlphaStep = 8; } @@ -5015,6 +5391,7 @@ void Player_UpdateEffects(Player* player) { gFillScreenRed = 255; gFillScreenGreen = gFillScreenBlue = 0; } + if (player->timer_278 != 0) { if ((player->timer_278 % 8) == 0) { if (player->timer_278 & 8) { @@ -5025,11 +5402,13 @@ void Player_UpdateEffects(Player* player) { } player->timer_278--; } + if (player->hitTimer > 0) { if (player->hitTimer > 3) { *gControllerRumble = 1; } player->hitTimer--; + if (player->form == FORM_ARWING) { player->damageShake = SIN_DEG(player->hitTimer * 400.0f) * player->hitTimer * D_800D3164[player->hitDirection]; @@ -5042,6 +5421,7 @@ void Player_UpdateEffects(Player* player) { SIN_DEG(player->hitTimer * 400.0f) * player->hitTimer * D_800D3164[player->hitDirection] * 1.5f; player->xShake = 0.0f; } + if ((gLevelMode != LEVELMODE_UNK_2) && ((player->knockback.x != 0.f) || (player->knockback.y != 0.f) || (player->knockback.z != 0.f)) && ((player->dmgType >= 40) || (player->dmgType == 21))) { @@ -5050,18 +5430,23 @@ void Player_UpdateEffects(Player* player) { player->rot.y = 0; Math_SmoothStepToF(&player->boostSpeed, 0, 1.0f, 5.0f, 0); } + if (player->hitTimer == 0) { player->damageShake = 0; } } + player->pos.x += player->knockback.x; player->pos.y += player->knockback.y; + if (gLevelMode == LEVELMODE_ALL_RANGE) { player->pos.z += player->knockback.z; Math_SmoothStepToF(&player->knockback.z, 0, 0.1f, 1.0f, 0.5f); } + Math_SmoothStepToF(&player->knockback.x, 0, 0.1f, 1.0f, 0.5f); Math_SmoothStepToF(&player->knockback.y, 0, 0.1f, 1.0f, 0.5f); + player->contrailScale -= 0.02f; if (player->contrailScale < 0.0f) { player->contrailScale = 0.0f; @@ -5080,6 +5465,7 @@ void Player_UpdateShields(Player* player) { player->damage = 0; } } + if (player->heal > 0) { player->damage = 0; player->heal -= 2; @@ -5096,19 +5482,19 @@ void Player_UpdateShields(Player* player) { } void Player_LowHealthAlarm(Player* player) { - s32 var_v0; + s32 mask; Player_UpdateShields(player); if (player->shields < 128) { if (player->shields > 80) { - var_v0 = 64 - 1; + mask = 64 - 1; } else if (player->shields > 40) { - var_v0 = 32 - 1; + mask = 32 - 1; } else { - var_v0 = 16 - 1; + mask = 16 - 1; } - if ((gGameFrameCount & var_v0) == 0) { + if ((gGameFrameCount & mask) == 0) { Object_PlayerSfx(player->sfxSource, NA_SE_SHIELD_BUZZER, player->num); } } @@ -5119,6 +5505,7 @@ void Play_dummy_800B41E0(Player* player) { void Player_Down(Player* player) { player->state_1C8 = PLAYERSTATE_1C8_DOWN; + if (!gVersusMode) { SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1); @@ -5147,16 +5534,19 @@ void Player_UpdateOnRails(Player* player) { gInputHold->button = gBoostButton[player->num]; player->boostMeter = 1.0f; } + Player_ArwingBank(player); Player_ArwingBoost(player); Player_ArwingBrake(player); Play_dummy_800B41E0(player); Player_UpdateArwingRoll(player); + if (player->somersault) { Player_PerformLoop(player); } else { Player_MoveArwingOnRails(player); } + Player_UpdatePath(player); Player_Shoot(player); Player_CollisionCheck(player); @@ -5164,6 +5554,7 @@ void Player_UpdateOnRails(Player* player) { Player_WaterEffects(player); Player_FloorCheck(player); Player_LowHealthAlarm(player); + if ((player->shields <= 0) && (player->radioDamageTimer != 0)) { Player_Down(player); player->vel.x *= 0.2f; @@ -5177,9 +5568,11 @@ void Player_UpdateOnRails(Player* player) { player->csEventTimer = 120; } break; + case FORM_LANDMASTER: Tank_UpdateOnRails(player); break; + case FORM_BLUE_MARINE: Aquas_BlueMarineBoost(player); Aquas_BlueMarineBrake(player); @@ -5190,6 +5583,7 @@ void Player_UpdateOnRails(Player* player) { Player_CollisionCheck(player); Player_FloorCheck(player); Player_LowHealthAlarm(player); + if ((player->shields <= 0) && (player->radioDamageTimer != 0)) { Player_Down(player); } @@ -5205,16 +5599,19 @@ void Player_Update360(Player* player) { Player_ArwingBrake(player); Play_dummy_800B41E0(player); Player_UpdateArwingRoll(player); + if (player->somersault) { Player_PerformLoop(player); } else { Player_MoveArwing360(player); } + Player_Shoot(player); Player_CollisionCheck(player); Player_WaterEffects(player); Player_FloorCheck(player); Player_LowHealthAlarm(player); + if ((player->shields <= 0) && (player->radioDamageTimer != 0)) { Player_Down(player); player->vel.y = 5.0f; @@ -5232,6 +5629,7 @@ void Player_Update360(Player* player) { player->aerobaticPitch = 0.0f; } break; + case FORM_LANDMASTER: Player_UseTankJets(player); Player_UpdateTankJets(player); @@ -5247,9 +5645,11 @@ void Player_Update360(Player* player) { Player_Down(player); } break; + case FORM_BLUE_MARINE: Aquas_Update360(player); break; + case FORM_ON_FOOT: Player_OnFootUpdateSpeed(player); Player_MoveOnFoot(player); @@ -5257,6 +5657,7 @@ void Player_Update360(Player* player) { Player_CollisionCheck(player); Player_FloorCheck(player); Player_LowHealthAlarm(player); + if ((player->shields <= 0) && (player->radioDamageTimer != 0)) { Player_Down(player); } @@ -5279,6 +5680,7 @@ void Player_LowHealthMsg(Player* player) { teamId = RAND_INT(2.9f) + 1; } while (gTeamShields[teamId] <= 0); } while (0); // macro? + switch (teamId) { case 1: if (Rand_ZeroOne() < 0.5f) { @@ -5341,7 +5743,9 @@ void Player_Update(Player* player) { if (player->state_1C8 > PLAYERSTATE_1C8_INIT) { Player_UpdateEffects(player); } + player->flags_228 = 0; + if ((player->state_1C8 > PLAYERSTATE_1C8_INIT) && (player->form == FORM_ARWING) && !gVersusMode) { switch (player->wingPosition) { case 0: @@ -5361,28 +5765,33 @@ void Player_Update(Player* player) { if (sp1C4 != 0) { player->whooshTimer--; } + switch (player->state_1C8) { case PLAYERSTATE_1C8_STANDBY: player->draw = false; gShowHud = 0; gPauseEnabled = false; break; + case PLAYERSTATE_1C8_INIT: Player_Setup(player); gFillScreenAlphaTarget = 0; gPauseEnabled = false; break; + case PLAYERSTATE_1C8_LEVEL_INTRO: gShowHud = 0; gPauseEnabled = false; player->wings.modelId = 1; Cutscene_LevelStart(player); break; + case PLAYERSTATE_1C8_ACTIVE: gShowHud = 1; Player_LowHealthMsg(player); player->wings.modelId = 0; D_hud_80161704 = 255; + if ((!gVersusMode || gVsMatchStart) && !player->somersault && (gInputPress->button & U_CBUTTONS) && ((player->form == FORM_ARWING) || (gVersusMode && (player->form == FORM_LANDMASTER)))) { if (player->alternateView = 1 - player->alternateView) { @@ -5395,12 +5804,14 @@ void Player_Update(Player* player) { } player->unk_014 = 0.1f; } + switch (gLevelMode) { case LEVELMODE_ON_RAILS: gLoadLevelObjects = true; Player_UpdateOnRails(player); player->draw = true; break; + case LEVELMODE_ALL_RANGE: if (!gVersusMode) { Player_Update360(player); @@ -5431,6 +5842,7 @@ void Player_Update(Player* player) { gPauseEnabled = false; } break; + case LEVELMODE_UNK_2: gLoadLevelObjects = true; Turret_Update(player); @@ -5438,21 +5850,26 @@ void Player_Update(Player* player) { break; } break; + case PLAYERSTATE_1C8_DOWN: Cutscene_PlayerDown(player); break; + case PLAYERSTATE_1C8_U_TURN: if (gVersusMode) { gVsLockOnTimers[player->num][0] = gVsLockOnTimers[player->num][1] = gVsLockOnTimers[player->num][2] = gVsLockOnTimers[player->num][3] = 0; } player->wings.modelId = 1; + Math_SmoothStepToF(&player->wings.unk_04, 0.0f, 0.1f, 5.0f, 0); Math_SmoothStepToF(&player->wings.unk_08, 0.0f, 0.1f, 5.0f, 0); Math_SmoothStepToF(&player->wings.unk_0C, 0.0f, 0.1f, 5.0f, 0); Math_SmoothStepToF(&player->wings.unk_10, 0.0f, 0.1f, 5.0f, 0); + Player_UpdateShields(player); Cutscene_UTurn(player); + if (gCurrentLevel == LEVEL_KATINA) { Player_CollisionCheck(player); } else { @@ -5460,6 +5877,7 @@ void Player_Update(Player* player) { Player_CheckItemCollect(player); } break; + case PLAYERSTATE_1C8_LEVEL_COMPLETE: player->alternateView = false; gPauseEnabled = false; @@ -5468,12 +5886,14 @@ void Player_Update(Player* player) { Player_WaterEffects(player); gShowHud = gChargeTimers[player->num] = 0; break; + case PLAYERSTATE_1C8_ENTER_WARP_ZONE: gPauseEnabled = false; Player_UpdateShields(player); Cutscene_EnterWarpZone(player); gShowHud = 0; break; + case PLAYERSTATE_1C8_START_360: gPauseEnabled = false; Player_UpdateShields(player); @@ -5481,17 +5901,21 @@ void Player_Update(Player* player) { Player_UpdateArwingRoll(player); gChargeTimers[player->num] = player->alternateView = gShowHud = 0; break; + case PLAYERSTATE_1C8_GFOX_REPAIR: gPauseEnabled = false; AllRange_GreatFoxRepair(player); gShowHud = 0; break; + case PLAYERSTATE_1C8_ANDROSS_MOUTH: Andross_8018C390(player); Player_UpdateShields(player); break; + case PLAYERSTATE_1C8_12: break; + case PLAYERSTATE_1C8_VS_STANDBY: player->draw = false; if (gPlayerInactive[player->num] == true) { @@ -5511,11 +5935,14 @@ void Player_Update(Player* player) { Camera_FollowPlayer(player, player->attacker - 1, 0); } break; + case PLAYERSTATE_1C8_NEXT: gShowHud = 0; + if (!gVersusMode) { gPauseEnabled = false; } + player->draw = false; player->vel.z = player->vel.x = player->vel.y = player->knockback.x = player->knockback.y = 0.0f; @@ -5523,10 +5950,12 @@ void Player_Update(Player* player) { player->cam.eye.x += 1.0f; player->cam.eye.z += 1.5f; } + if ((gCurrentLevel == LEVEL_ZONESS) || (gCurrentLevel == LEVEL_SOLAR)) { Math_SmoothStepToF(&player->cam.eye.y, 500.0f, 0.05f, 10.0f, 0.0f); Math_SmoothStepToF(&player->cam.eye.z, player->trueZpos + gPathProgress + 500.0f, 0.05f, 20.0f, 0.0f); } + if (player->csTimer == 0) { if (gCamCount == 4) { player->state_1C8 = PLAYERSTATE_1C8_VS_STANDBY; @@ -5535,6 +5964,7 @@ void Player_Update(Player* player) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0; gFillScreenAlphaTarget = 255; } + if (gFillScreenAlpha == 255) { Play_ClearObjectData(); gPathProgress = gPlayer[0].zPath = 0.0f; @@ -5543,9 +5973,11 @@ void Player_Update(Player* player) { Audio_ClearVoice(); Audio_SetEnvSfxReverb(0); gSavedGoldRingCount[0] = gGoldRingCount[0]; + if (gCurrentLevel == LEVEL_VENOM_ANDROSS) { D_ctx_80177C94 = gGoldRingCount[0]; } + switch (gFadeoutType) { case 7: if (gCurrentLevel == LEVEL_TRAINING) { @@ -5571,11 +6003,13 @@ void Player_Update(Player* player) { gDrawMode = DRAW_NONE; } break; + case 4: gNextGameState = GSTATE_MAP; gLastGameState = GSTATE_PLAY; gDrawMode = DRAW_NONE; break; + default: gDrawMode = DRAW_NONE; break; @@ -5584,22 +6018,25 @@ void Player_Update(Player* player) { } } break; + default: break; } - if ((D_ctx_80177C70 == 0) && (player->form == FORM_ARWING)) { + if ((gFovYMode == 0) && (player->form == FORM_ARWING)) { sp1CC = 0.77699995f; sp1C8 = 1100.0f; - } else if (D_ctx_80177C70 == 2) { + } else if (gFovYMode == 2) { sp1CC = 0.77699995f; sp1C8 = 1100.0f; } else { sp1CC = 0.74f; sp1C8 = 700.0f; } + Math_SmoothStepToF(&player->unk_148, sp1CC, 1.0f, 0.05f, 0.0f); Math_SmoothStepToF(&player->unk_14C, sp1CC, 1.0f, 0.05f, 0.0f); Math_SmoothStepToF(&player->pathWidth, sp1C8, 1.0f, 10.0f, 0.0f); + if (player->form == FORM_ARWING) { Math_SmoothStepToF(&player->unk_194, player->unk_190, 0.5f, 5.0f, 0.0f); if (player->boostCooldown && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { @@ -5620,6 +6057,7 @@ void Camera_UpdateArwingOnRails(Player* player) { f32 temp; gCsCamEyeX = (player->pos.x - player->xPath) * player->unk_148; + if (((player->form == FORM_ARWING) && (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE)) || (player->state_1C8 == PLAYERSTATE_1C8_U_TURN)) { gCsCamEyeY = (player->pos.y - player->yPath) * player->unk_148; @@ -5631,6 +6069,7 @@ void Camera_UpdateArwingOnRails(Player* player) { var_fv0 = 0.0f; var_fv1 = 0; } + Math_SmoothStepToF(&player->unk_030, var_fv1 * 1.6f, 0.1f, 3.0f, 0.05f); if (gLevelType == LEVELTYPE_SPACE) { Math_SmoothStepToF(&player->unk_02C, var_fv0 * 0.8f, 0.1f, 3.0f, 0.05f); @@ -5647,6 +6086,7 @@ void Camera_UpdateArwingOnRails(Player* player) { gCsCamAtY = ((player->pos.y - player->yPath) * player->unk_14C) + 20.0f; gCsCamAtY += player->xRock * 5.0f; gCsCamAtY -= player->unk_02C * 0.25f; + switch (sOverheadCam) { case 0: Math_SmoothStepToF(&sOverheadCamDist, 0.0f, 0.4f, 10.0f, 0); @@ -5655,14 +6095,16 @@ void Camera_UpdateArwingOnRails(Player* player) { Math_SmoothStepToF(&sOverheadCamDist, 200.0f, 0.4f, 10.0f, 0); break; } + gCsCamEyeX += player->xPath; gCsCamAtX += player->xPath; gCsCamEyeY += player->yPath + sOverheadCamDist; gCsCamAtZ = player->trueZpos + gPathProgress - 1.0f; gCsCamEyeZ = 400.0f + sOverheadCamDist; - if (D_ctx_80177C70 == 2) { + if (gFovYMode == 2) { gCsCamEyeZ -= 50.0f; } + if (player->somersault) { gCsCamEyeZ += 200.0f; gCsCamAtY = (player->pos.y - player->yPath) * 0.9f; @@ -5673,12 +6115,14 @@ void Camera_UpdateArwingOnRails(Player* player) { Math_SmoothStepToF(&player->unk_018, 1.0f, 1.0f, 0.05f, 0.0f); } gCsCamAtY += player->yPath + (sOverheadCamDist * 0.5f); + Math_SmoothStepToF(&player->cam.eye.x, gCsCamEyeX, player->unk_014, 1000.0f, 0.0f); Math_SmoothStepToF(&player->cam.eye.y, gCsCamEyeY, player->unk_018, 1000.0f, 0.0f); Math_SmoothStepToF(&player->cam.at.x, gCsCamAtX, player->unk_014, 1000.0f, 0.0f); Math_SmoothStepToF(&player->cam.at.y, gCsCamAtY, player->unk_018, 1000.0f, 0.0f); Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, player->unk_014, 1000.0f, 0.0f); Math_SmoothStepToF(&player->unk_014, 1.0f, 1.0f, 0.05f, 0.0f); + temp = -player->rot.z; if (gLevelType == LEVELTYPE_PLANET) { Math_SmoothStepToF(&player->camRoll, temp * 0.3f, 0.1f, 1.5f, 0.0f); @@ -5696,16 +6140,20 @@ void Camera_UpdateCockpitOnRails(Player* player, s32 arg1) { Matrix_RotateY(gCalcMatrix, (player->rot.y + player->damageShake) * M_DTOR * 0.75f, MTXF_NEW); Matrix_RotateX(gCalcMatrix, (player->rot.x + player->damageShake) * M_DTOR * 0.75f, MTXF_APPLY); + sp4C.x = 0; sp4C.y = 0; sp4C.z = -1000.0f; + Matrix_MultVec3f(gCalcMatrix, &sp4C, &sp40); + gCsCamEyeX = player->pos.x; gCsCamEyeY = player->pos.y + player->yBob; gCsCamEyeZ = player->trueZpos + gPathProgress; gCsCamAtX = player->pos.x + sp40.x; gCsCamAtY = player->pos.y + player->yBob + sp40.y; gCsCamAtZ = player->trueZpos + gPathProgress + sp40.z; + Math_SmoothStepToF(&player->cam.eye.x, gCsCamEyeX, player->unk_014, 100.0f, 0.0f); Math_SmoothStepToF(&player->cam.eye.y, gCsCamEyeY, player->unk_014, 100.0f, 0.0f); Math_SmoothStepToF(&player->cam.eye.z, gCsCamEyeZ, player->unk_014, 50.0f, 0.0f); @@ -5713,6 +6161,7 @@ void Camera_UpdateCockpitOnRails(Player* player, s32 arg1) { Math_SmoothStepToF(&player->cam.at.y, gCsCamAtY, player->unk_014, 100.0f, 0.0f); Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, player->unk_014, 100.0f, 0.0f); Math_SmoothStepToF(&player->unk_014, 1.0f, 1.0f, 0.05f, 0); + player->camRoll = -(player->bankAngle + player->rockAngle); if (arg1 != 0) { player->cam.eye.x = gCsCamEyeX; @@ -5726,26 +6175,30 @@ void Camera_UpdateCockpitOnRails(Player* player, s32 arg1) { void Camera_FollowPlayer(Player* player, s32 playerNum, bool arg2) { u8 i; - u8 var_v0; + u8 mask; Vec3f sp58; Vec3f sp4C; - var_v0 = 0x7F; + mask = 0x7F; if (gPlayer[playerNum].form == FORM_LANDMASTER) { - var_v0 = 0xFF; + mask = 0xFF; } - if (((var_v0 & gGameFrameCount) == (gPlayerNum * 32)) || arg2) { + + if (((gGameFrameCount & mask) == (gPlayerNum * 32)) || arg2) { for (i = 0; i < 100; i++) { playerNum = RAND_INT(3.9f); if ((gPlayer[playerNum].state_1C8 != PLAYERSTATE_1C8_VS_STANDBY) && !gPlayerInactive[playerNum]) { break; } } + if (i > 90) { playerNum = 0; } player->attacker = playerNum + 1; + Matrix_RotateY(gCalcMatrix, gPlayer[playerNum].yRot_114 * M_DTOR, MTXF_NEW); + switch (gPlayer[playerNum].form) { case FORM_ARWING: sp58.x = 300.0f; @@ -5760,6 +6213,7 @@ void Camera_FollowPlayer(Player* player, s32 playerNum, bool arg2) { sp58.z = -300.0f; break; } + if (Rand_ZeroOne() < 0.5f) { sp58.x *= -1.0f; } @@ -5769,9 +6223,11 @@ void Camera_FollowPlayer(Player* player, s32 playerNum, bool arg2) { player->cam.eye.y = gPlayer[playerNum].pos.y + 50.0f; player->cam.eye.z = gPlayer[playerNum].trueZpos + sp4C.z; } + player->cam.at.x = gPlayer[playerNum].pos.x; player->cam.at.y = gPlayer[playerNum].pos.y; player->cam.at.z = gPlayer[playerNum].trueZpos; + switch (gPlayer[playerNum].form) { case FORM_ARWING: player->cam.eye.x += gPlayer[playerNum].vel.x * 0.5f; @@ -5807,6 +6263,7 @@ void Camera_UpdateArwing360(Player* player, bool arg1) { Matrix_RotateY(gCalcMatrix, (player->yRot_114 + (player->damageShake * 0.2f)) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, player->damageShake * 0.2f * M_DTOR, MTXF_APPLY); + sp74.x = 0.0f; sp74.y = 0.0f; if (player->alternateView) { @@ -5814,16 +6271,21 @@ void Camera_UpdateArwing360(Player* player, bool arg1) { } else { sp74.z = 300.0f - player->camDist; } + if (player->somersault) { sp74.z += 500.0f; } + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp74, &sp68); + if (!gVersusMode) { var_fv0 = -gInputPress->stick_y; } else { var_fv0 = -gControllerPress[player->num].stick_y; } + Math_SmoothStepToF(&player->unk_02C, var_fv0, 0.05f, 5.0f, 0.0f); + eyeX = player->pos.x + sp68.x; eyeY = (player->pos.y * player->unk_148) + 50.0f; eyeY -= (player->unk_02C * 1.5f); @@ -5832,21 +6294,27 @@ void Camera_UpdateArwing360(Player* player, bool arg1) { atX = player->pos.x + player->damageShake; var_fv0 = (player->somersault) ? 1.0f : 0.79f; + atY = (player->pos.y * (var_fv0)) + player->damageShake + (player->xRock * 5.0f); atY += (player->unk_02C * 0.5f); if (player->state_1C8 == PLAYERSTATE_1C8_U_TURN) { atY = player->pos.y; } atZ = player->pos.z; + Math_SmoothStepToF(&player->unk_028, 2.0f * player->rot.y, 0.05f, 2.0f, 0.02f); + sp74.x = -player->unk_028; sp74.y = 0.0f; sp74.z = 0.f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp74, &sp68); + eyeX += sp68.x; eyeZ += sp68.z; atX += sp68.x; atZ += sp68.z; + if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) { Math_SmoothStepToF(&player->cam.eye.x, eyeX, player->unk_014, 30000.0f, 0); Math_SmoothStepToF(&player->cam.eye.y, eyeY, player->unk_014, 30000.0f, 0); @@ -5854,11 +6322,13 @@ void Camera_UpdateArwing360(Player* player, bool arg1) { Math_SmoothStepToF(&player->camRoll, player->rot.y * -0.3f, 0.1f, 1.0f, 0); Math_SmoothStepToF(&player->unk_014, 0.2f, 0.1f, 0.005f, 0.0f); } + Math_SmoothStepToF(&player->cam.at.x, atX, player->unk_01C, 30000.0f, 0); Math_SmoothStepToF(&player->cam.at.y, atY, player->unk_018, 30000.0f, 0); Math_SmoothStepToF(&player->cam.at.z, atZ, player->unk_01C, 30000.0f, 0); Math_SmoothStepToF(&player->unk_018, 0.2f, 0.1f, 0.005f, 0); Math_SmoothStepToF(&player->unk_01C, 1.0f, 0.1f, 0.005f, 0); + if (arg1) { player->cam.eye.x = eyeX; player->cam.eye.y = eyeY; @@ -5880,6 +6350,7 @@ void Camera_UpdateTank360(Player* player, s32 arg1) { Matrix_RotateZ(gCalcMatrix, player->rot.z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, (player->yRot_114 + (player->damageShake * 0.2f)) * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, player->damageShake * 0.2f * M_DTOR, MTXF_APPLY); + sp54.x = 0.0f; if (player->alternateView) { sp54.y = 150.0f; @@ -5888,12 +6359,15 @@ void Camera_UpdateTank360(Player* player, s32 arg1) { sp54.y = 100.0f; sp54.z = 250.0f - player->camDist; } + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp54, &sp48); + if (player->alternateView) { Math_SmoothStepToF(&player->unk_02C, -player->unk_17C * 3.0f + 30.0f, 0.2f, 8.0f, 0.001f); } else { Math_SmoothStepToF(&player->unk_02C, -player->unk_17C * 3.0f, 0.2f, 8.0f, 0.001f); } + sp44 = player->pos.x + sp48.x; sp40 = player->pos.y + sp48.y - (player->unk_02C * 0.6f); sp3C = player->pos.z + sp48.z; @@ -5901,19 +6375,26 @@ void Camera_UpdateTank360(Player* player, s32 arg1) { player->cam.at.x = player->pos.x + player->damageShake; player->cam.at.y = player->pos.y + 60.0f + player->unk_02C + player->damageShake; player->cam.at.z = player->pos.z; + Math_SmoothStepToF(&player->unk_028, 2.0f * player->rot.y, 0.05f, 2.0f, 0.02f); + sp54.x = -player->unk_028; sp54.y = 0.0f; sp54.z = 0.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp54, &sp48); + sp44 += sp48.x; sp3C += sp48.z; + player->cam.at.x += sp48.x; player->cam.at.z += sp48.z; + Math_SmoothStepToF(&player->cam.eye.x, sp44, 0.1f, 200.0f, 0.001f); Math_SmoothStepToF(&player->cam.eye.y, sp40, 0.1f, 200.0f, 0.001f); Math_SmoothStepToF(&player->cam.eye.z, sp3C, 0.1f, 200.0f, 0.001f); Math_SmoothStepToF(&player->camRoll, player->zRotBank * -0.1f, 0.1f, 1.0f, 0.01f); + if (arg1 != 0) { player->cam.eye.x = sp44; player->cam.eye.y = sp40; @@ -5930,9 +6411,11 @@ void Camera_UpdateOnFoot360(Player* player, s32 arg1) { Matrix_RotateZ(gCalcMatrix, player->zRot_0FC * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, (player->yRot_114 + (player->damageShake * 0.02f)) * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, player->damageShake * 0.02f * M_DTOR, MTXF_APPLY); + sp64.x = 0.0f; sp64.y = 20.0f; sp64.z = 60.0f - player->camDist; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp64, &sp58); Math_SmoothStepToF(&player->unk_02C, -player->unk_158 * 0.5f, 0.07f, 3.0f, 0.001f); @@ -5946,12 +6429,16 @@ void Camera_UpdateOnFoot360(Player* player, s32 arg1) { player->cam.at.z = player->pos.z; Math_SmoothStepToF(&player->unk_028, player->rot.y * (player->baseSpeed + 5.0f) * 0.04f, 0.05f, 2.0f, 0.02f); + sp64.x = -player->unk_028; sp64.y = 0.0f; sp64.z = 0.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp64, &sp58); + sp4C.x += sp58.x; sp4C.z += sp58.z; + player->cam.at.x += sp58.x; player->cam.at.z += sp58.z; @@ -5959,6 +6446,7 @@ void Camera_UpdateOnFoot360(Player* player, s32 arg1) { Math_SmoothStepToF(&player->cam.eye.y, sp4C.y, 0.3f, 65.0f, 0.001f); Math_SmoothStepToF(&player->cam.eye.z, sp4C.z, 0.3f, 65.0f, 0.001f); Math_SmoothStepToF(&player->camRoll, player->zRotBank * -0.1f, 0.1f, 1.0f, 0.01f); + if (arg1 != 0) { player->cam.eye.x = sp4C.x; player->cam.eye.y = sp4C.y; @@ -5983,15 +6471,19 @@ void Camera_SetStarfieldPos(f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 if (yaw <= -M_PI / 2) { yaw += M_PI; } + tempf = 0.0f; if (gCurrentLevel == LEVEL_UNK_15) { tempf = gPlayer[0].cam.eye.y * 0.03f; } + sp30 = (-pitch * (-8.0f / 3.0f * M_RTOD) * 2.0f) + 3000.0f + gStarfieldScrollY + tempf; sp34 = (yaw * (-8.0f / 3.0f * M_RTOD) * 2.0f) + 3000.0f + gStarfieldScrollX; sp20 = gStarfieldX; + gStarfieldX = Math_ModF(sp34, SCREEN_WIDTH * 1.5f); gStarfieldY = Math_ModF(sp30, SCREEN_HEIGHT * 1.5f); + if ((gGameState == GSTATE_PLAY) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && (gCurrentLevel == LEVEL_METEO)) { if (fabsf(gStarfieldX - sp20) < 50.0f) { @@ -6034,18 +6526,22 @@ void Camera_Update(Player* player) { Aquas_UpdateCamera(player); } break; + case LEVELMODE_ALL_RANGE: Camera_Update360(player, false); break; + case LEVELMODE_UNK_2: Turret_UpdateCamera(player); break; } break; + case PLAYERSTATE_1C8_U_TURN: player->camRoll -= player->camRoll * 0.1f; Camera_Update360(player, false); break; + case PLAYERSTATE_1C8_DOWN: if ((gLevelMode == LEVELMODE_ON_RAILS) && (player->form == FORM_ARWING)) { player->cam.eye.x += (player->pos.x - player->cam.eye.x) * 0.1f; @@ -6059,6 +6555,7 @@ void Camera_Update(Player* player) { player->cam.at.z = player->trueZpos + gPathProgress - 1.0f; } break; + case PLAYERSTATE_1C8_NEXT: case PLAYERSTATE_1C8_LEVEL_COMPLETE: break; @@ -6066,8 +6563,8 @@ void Camera_Update(Player* player) { } void Camera_SetupLights(Player* player) { - Vec3f sp44; - Vec3f sp38; + Vec3f src; + Vec3f dest; f32 pad; if ((gCurrentLevel == LEVEL_AQUAS) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_INTRO)) { @@ -6077,6 +6574,7 @@ void Camera_SetupLights(Player* player) { } gLight1rotStep = gLight2rotStep = D_ctx_80178538 = 1.0f; } + Math_SmoothStepToAngle(&gLight1xRot, gLight1xRotTarget, 1.0f, gLight1rotStep, 0.0f); Math_SmoothStepToAngle(&gLight1yRot, gLight1yRotTarget, 1.0f, gLight1rotStep, 0.0f); Math_SmoothStepToAngle(&gLight1zRot, gLight1zRotTarget, 1.0f, gLight1rotStep, 0.0f); @@ -6117,39 +6615,54 @@ void Camera_SetupLights(Player* player) { gLight2B = gLight2BTarget; } } + Math_SmoothStepToAngle(&gLight2xRot, gLight2xRotTarget, 1.0f, gLight2rotStep, 0.0f); Math_SmoothStepToAngle(&gLight2yRot, gLight2yRotTarget, 1.0f, gLight2rotStep, 0.0f); Math_SmoothStepToAngle(&gLight2zRot, gLight2zRotTarget, 1.0f, gLight2rotStep, 0.0f); + gLight2xRotTarget = gLight1xRotTarget = gEnvLightxRot; gLight2yRotTarget = gLight1yRotTarget = gEnvLightyRot; gLight2zRotTarget = gLight1zRotTarget = gEnvLightzRot; + gLight1rotStep = 5.0f; + gLight2RTarget = gLight1R; gLight2GTarget = gLight1G; gLight2BTarget = gLight1B; + pad = player->camRoll; + Matrix_RotateZ(gCalcMatrix, M_DTOR * pad, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -player->camPitch, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, player->camYaw, MTXF_APPLY); + Matrix_Push(&gCalcMatrix); + Matrix_RotateX(gCalcMatrix, M_DTOR * gLight1xRot, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, M_DTOR * gLight1yRot, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, M_DTOR * gLight1zRot, MTXF_APPLY); - sp44.x = 0.0f; - sp44.y = 0.0f; - sp44.z = 100.0f; - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); - gLight1x = sp38.x; - gLight1y = sp38.y; - gLight1z = sp38.z; + + src.x = 0.0f; + src.y = 0.0f; + src.z = 100.0f; + + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + + gLight1x = dest.x; + gLight1y = dest.y; + gLight1z = dest.z; + Matrix_Pop(&gCalcMatrix); + Matrix_RotateX(gCalcMatrix, M_DTOR * gLight2xRot, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, M_DTOR * gLight2yRot, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, M_DTOR * gLight2zRot, MTXF_APPLY); - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); - gLight2x = sp38.x; - gLight2y = sp38.y; - gLight2z = sp38.z; + + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + + gLight2x = dest.x; + gLight2y = dest.y; + gLight2z = dest.z; } void Play_UpdateLevel(void) { @@ -6165,6 +6678,7 @@ void Play_UpdateLevel(void) { Training_SpawnEnemies(); } break; + case LEVEL_VERSUS: func_versus_800C26C8(); gVsItemSpawnTimer++; @@ -6181,6 +6695,7 @@ void Play_UpdateLevel(void) { gVsItemSpawnTimer = 0; } break; + case LEVEL_VENOM_2: if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) && (gLevelPhase == 2)) { gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE; @@ -6195,6 +6710,7 @@ void Play_UpdateLevel(void) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; } break; + case LEVEL_VENOM_ANDROSS: Andross_8018BDD8(); gGroundHeight = -25000.0f; @@ -6207,6 +6723,7 @@ void Play_UpdateLevel(void) { } } break; + case LEVEL_METEO: Texture_Scroll(D_102FF08, 8, 8, 1); /* fallthrough */ @@ -6219,6 +6736,7 @@ void Play_UpdateLevel(void) { Math_SmoothStepToF(&gWarpZoneBgAlpha, 128.0f, 1.0f, 1.0f, 0.0f); } } + if ((gCurrentLevel == LEVEL_SECTOR_X) && (gLevelPhase == 0) && (gRingPassCount == 4)) { gRingPassCount++; gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ENTER_WARP_ZONE; @@ -6229,15 +6747,18 @@ void Play_UpdateLevel(void) { gLeveLClearStatus[gCurrentLevel] = 1; } break; + case LEVEL_CORNERIA: func_hud_8008C104(D_CO_603EB38, D_CO_6028A60); if ((gGameFrameCount % 2) != 0) { Texture_Scroll(D_CO_600CBD8, 64, 32, 3); } break; + case LEVEL_AQUAS: func_hud_8008C104(D_AQ_603158C, D_AQ_602ACC0); break; + case LEVEL_SOLAR: Play_UpdateDynaFloor(); @@ -6287,18 +6808,24 @@ void Play_UpdateLevel(void) { } } } + shields = MIN(gPlayer[0].shields, 255); + Audio_SetHeatAlarmParams(shields, heightParam); + if (((gGameFrameCount % 8) == 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) { Solar_8019E8B8(RAND_FLOAT_CENTERED(6000.0f), -80.0f, gPlayer[0].trueZpos + (RAND_FLOAT(2000.0f) + -6000.0f), RAND_FLOAT(10.0f) + 20.0f); // check } + func_hud_8008C104(D_SO_60229A4, D_SO_6010198); + if (gPlayer[0].shields == 0) { gSoShieldsEmpty = 1; } break; + case LEVEL_ZONESS: Play_UpdateDynaFloor(); for (gPathTexScroll; gPathTexScroll >= 20.0f; gPathTexScroll -= 20.0f) { @@ -6307,7 +6834,9 @@ void Play_UpdateLevel(void) { if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_NEXT) { Texture_Scroll(D_ZO_602C2CC, 32, 32, 1); } + func_hud_8008C104(D_ZO_602C2CC, D_ZO_600D990); + if (Play_CheckDynaFloorCollision(&sp3C, &sp40, gPlayer[0].cam.eye.x, gPlayer[0].cam.eye.y, gPlayer[0].cam.eye.z - gPathProgress)) { gLight1R = 0; @@ -6336,6 +6865,7 @@ void Play_Update(void) { s32 i; Play_UpdateFillScreen(); + for (i = TEAM_ID_FALCO; i <= TEAM_ID_PEPPY; i++) { if (gTeamDamage[i] > 0) { gTeamDamage[i] -= 2; @@ -6345,17 +6875,21 @@ void Play_Update(void) { } } } + for (i = 0; i < gCamCount; i++) { gPlayer[i].num = gPlayerNum = i; Player_Update(&gPlayer[i]); } + Object_Update(); PlayerShot_UpdateAll(); BonusText_Update(); + for (i = 0; i < gCamCount; i++) { gPlayer[i].num = gPlayerNum = i; Camera_Update(&gPlayer[i]); } + gCameraShakeY = 0.0f; if (gCameraShake != 0) { f32 var_fv1; @@ -6400,30 +6934,36 @@ void Play_Main(void) { s32 pad2; s32 pad3; s32 i; - f32 sp34; + f32 fovYtarget; - switch (D_ctx_80177C70) { + switch (gFovYMode) { case 0: - sp34 = 45.0f; + fovYtarget = 45.0f; break; case 1: - sp34 = 45.0f; + fovYtarget = 45.0f; break; case 2: - sp34 = 55.0f; + fovYtarget = 55.0f; break; } - Math_SmoothStepToF(&gFovY, sp34, 0.1f, 5.0f, 0.0f); + + Math_SmoothStepToF(&gFovY, fovYtarget, 0.1f, 5.0f, 0.0f); + if (gChangeTo360) { gChangeTo360 = false; gLevelMode = LEVELMODE_ALL_RANGE; + if (gCurrentLevel != LEVEL_VENOM_ANDROSS) { MEM_ARRAY_ALLOCATE(gScenery360, 200); } + for (i = 0; i < 200; i++) { gScenery360[i].obj.status = OBJ_FREE; } + Play_ClearObjectData(); + if (gCurrentLevel == LEVEL_CORNERIA) { Play_Setup360_CO(); } else if (gCurrentLevel == LEVEL_SECTOR_Y) { @@ -6433,22 +6973,27 @@ void Play_Main(void) { } else if (gCurrentLevel == LEVEL_TRAINING) { Training_Setup360(); } + Play_SetupZPos360(&gPlayer[0].pos.z); Play_SetupZPos360(&gPlayer[0].trueZpos); + gPlayer[0].cam.eye.z += 15000.0f; gPlayer[0].cam.at.z += 15000.0f; gPlayer[0].zPath = gPlayer[0].zPathVel = gPathVelZ = gPathProgress = 0.0f; } + if (gPlayState != PLAY_PAUSE) { - PRINTF("play_time = %d\n"); + PRINTF("play_time = %d\n", gGameFrameCount); gGameFrameCount++; } + switch (gPlayState) { case PLAY_STANDBY: if (gNextGameStateTimer == 0) { gPlayState = PLAY_INIT; } break; + case PLAY_INIT: Play_Init(); sMusicVolume = gVolumeSettings[AUDIO_TYPE_MUSIC]; @@ -6456,24 +7001,30 @@ void Play_Main(void) { sSfxVolume = gVolumeSettings[AUDIO_TYPE_SFX]; gPlayState = PLAY_UPDATE; break; + case PLAY_UPDATE: if ((gLevelStartStatusScreenTimer != 0) || (gLevelClearScreenTimer != 0)) { gPauseEnabled = false; } else { gPauseEnabled = true; } + gDrawMode = DRAW_PLAY; + Play_Update(); + if ((gControllerPress[gMainController].button & START_BUTTON) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) && gSaveFile.save.data.planet[sSaveSlotFromLevel[gCurrentLevel]].normalClear) { Audio_ClearVoice(); Audio_SetEnvSfxReverb(0); Play_ClearObjectData(); + for (i = 0; i < gCamCount; i++) { Audio_KillSfxBySource(gPlayer[i].sfxSource); Audio_StopPlayerNoise(i); } + gPlayState = PLAY_INIT; gDrawMode = gVersusMode = 0; gCamCount = 1; @@ -6481,9 +7032,11 @@ void Play_Main(void) { gCsFrameCount = gLevelClearScreenTimer = gLevelStartStatusScreenTimer = gRadioState = 0; D_ctx_8017782C = false; } + if (gVersusMode) { Versus_Main(); } + if ((gControllerPress[gMainController].button & START_BUTTON) && gPauseEnabled) { Audio_PlayPauseSfx(1); gPlayState = PLAY_PAUSE; @@ -6491,11 +7044,12 @@ void Play_Main(void) { D_ctx_80178484 = 100000; } break; + case PLAY_PAUSE: if (!gVersusMode) { if ((gControllerPress[gMainController].button & R_TRIG) && (gPlayer[0].form != FORM_BLUE_MARINE) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY)) { - if (gShowCrosshairs[0] = 1 - gShowCrosshairs[0]) { + if (gShowReticles[0] = 1 - gShowReticles[0]) { AUDIO_PLAY_SFX(NA_SE_MAP_WINDOW_OPEN, gDefaultSfxSource, 4); } else { AUDIO_PLAY_SFX(NA_SE_MAP_WINDOW_CLOSE, gDefaultSfxSource, 4); @@ -6504,7 +7058,7 @@ void Play_Main(void) { } else { for (i = 0; i < 4; i++) { if ((gControllerPress[i].button & R_TRIG) && (gPlayer[i].form != FORM_ON_FOOT)) { - if (gShowCrosshairs[i] = 1 - gShowCrosshairs[i]) { + if (gShowReticles[i] = 1 - gShowReticles[i]) { Object_PlayerSfx(gPlayer[i].sfxSource, NA_SE_MAP_WINDOW_OPEN, i); } else { Object_PlayerSfx(gPlayer[i].sfxSource, NA_SE_MAP_WINDOW_CLOSE, i); @@ -6512,6 +7066,7 @@ void Play_Main(void) { } } } + if ((D_ctx_80177868 == 4) && (gControllerPress[gMainController].button & START_BUTTON) && gPauseEnabled) { Audio_PlayPauseSfx(0); gPlayState = PLAY_UPDATE; diff --git a/src/engine/fox_radio.c b/src/engine/fox_radio.c index 645ba22d..3a6200f6 100644 --- a/src/engine/fox_radio.c +++ b/src/engine/fox_radio.c @@ -769,7 +769,7 @@ void Radio_Draw(void) { } if (((gCurrentRadioPortrait != RCID_STATIC) && (gCurrentRadioPortrait != RCID_STATIC + 1)) && (gCurrentRadioPortrait != RCID_1000)) { - func_hud_8008AD94(); + HUD_RadioCharacterName_Draw(); } } diff --git a/src/engine/fox_tank.c b/src/engine/fox_tank.c index 8b604450..0dc3b8cd 100644 --- a/src/engine/fox_tank.c +++ b/src/engine/fox_tank.c @@ -179,12 +179,12 @@ void func_tank_80043B18(Player* player) { func_tank_80043AA0(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->trueZpos + sp3C.z, 0.2f); } else { if (((gGameFrameCount % 2) == 0)) { - Titania_80189120(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->trueZpos + sp3C.z, - player->rot.y + sp38, 1.3f); + Titania_Effect368_Spawn(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->trueZpos + sp3C.z, + player->rot.y + sp38, 1.3f); } if (((gGameFrameCount % 4) == 0)) { - func_effect_8007A900(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, player->trueZpos + sp3C.z, - 2.0f, 255, 15, 0); + Effect_Effect359_Spawn(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, + player->trueZpos + sp3C.z, 2.0f, 255, 15, 0); } } } else { @@ -198,12 +198,12 @@ void func_tank_80043B18(Player* player) { } } else { if (((gGameFrameCount % 2) == 0)) { - Titania_80189120(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->trueZpos + sp3C.z, - player->rot.y + sp38, 1.0f); + Titania_Effect368_Spawn(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->trueZpos + sp3C.z, + player->rot.y + sp38, 1.0f); } if (((gGameFrameCount % 4) == 0) && (player->baseSpeed >= 5.0f)) { - func_effect_8007A900(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, - player->trueZpos + sp3C.z, 2.0f, 255, 15, 0); + Effect_Effect359_Spawn(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, + player->trueZpos + sp3C.z, 2.0f, 255, 15, 0); } } } @@ -216,12 +216,12 @@ void func_tank_80043B18(Player* player) { } } else { if (((gGameFrameCount % 2) == 0)) { - Titania_80189120(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->trueZpos + sp3C.z, - player->rot.y + sp38, 1.0f); + Titania_Effect368_Spawn(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->trueZpos + sp3C.z, + player->rot.y + sp38, 1.0f); } if (((gGameFrameCount % 4) == 0) && (player->baseSpeed >= 5.0f)) { - func_effect_8007A900(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, - player->trueZpos + sp3C.z, 2.0f, 255, 15, 0); + Effect_Effect359_Spawn(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, + player->trueZpos + sp3C.z, 2.0f, 255, 15, 0); } } } @@ -285,7 +285,7 @@ void func_tank_800443DC(Player* player) { s32 i; for (i = 0, scenery = gScenery; i < ARRAY_COUNT(gScenery); i++, scenery++) { - if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id == OBJ_SCENERY_58) && + if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id == OBJ_SCENERY_TI_BRIDGE) && ((player->trueZpos - 2000.0f) < scenery->obj.pos.z)) { func_tank_800441C8(player, scenery->info.hitbox, scenery->obj.pos.x, scenery->obj.pos.y, scenery->obj.pos.z, scenery->obj.rot.x, scenery->obj.rot.y, scenery->obj.rot.z); @@ -673,19 +673,21 @@ void func_tank_80045678(Player* player) { Math_SmoothStepToF(&player->vel.y, 0.0f, 0.1f, 2.0f, 0); } if ((gCamCount == 1) && ((gGameFrameCount % 2) == 0)) { - func_effect_8007A900(RAND_FLOAT_CENTERED(20.0f) + player->pos.x, player->groundPos.y + 10.0f, - player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 3.5f, 255, 16, 1); + Effect_Effect359_Spawn(RAND_FLOAT_CENTERED(20.0f) + player->pos.x, player->groundPos.y + 10.0f, + player->trueZpos - 10.0f, RAND_FLOAT(2.0f) + 3.5f, 255, 16, 1); } } else { D_800C9F3C = 0; if ((gCamCount == 1) && ((gGameFrameCount % 4) == 0) && (player->rollState == 0)) { if ((player->unk_16C > 0.2f) && (player->radioDamageTimer == 0)) { - func_effect_8007A900(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x - 57.0f), player->groundPos.y + 10.0f, - player->trueZpos - 10.0f, RAND_FLOAT(1.0f) + 1.5f, 255, 15, 0); + Effect_Effect359_Spawn(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x - 57.0f), + player->groundPos.y + 10.0f, player->trueZpos - 10.0f, RAND_FLOAT(1.0f) + 1.5f, + 255, 15, 0); } if ((player->unk_170 > 0.2f) && (player->radioDamageTimer == 0)) { - func_effect_8007A900(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x + 57.0f), player->groundPos.y + 10.0f, - player->trueZpos - 10.0f, RAND_FLOAT(1.0f) + 1.5f, 255, 15, 0); + Effect_Effect359_Spawn(RAND_FLOAT_CENTERED(10.0f) + (player->pos.x + 57.0f), + player->groundPos.y + 10.0f, player->trueZpos - 10.0f, RAND_FLOAT(1.0f) + 1.5f, + 255, 15, 0); } } } @@ -789,7 +791,7 @@ void func_tank_80046260(Player* player) { s32 i; for (i = 0, scenery = gScenery; i < ARRAY_COUNT(gScenery); i++, scenery++) { - if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id == OBJ_SCENERY_58) && + if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id == OBJ_SCENERY_TI_BRIDGE) && ((player->trueZpos - 2000.0f) < scenery->obj.pos.z) && (scenery->obj.pos.y < player->pos.y)) { func_tank_800460E0(player, scenery->info.hitbox, scenery->obj.pos.x, scenery->obj.pos.y, scenery->obj.pos.z, scenery->obj.rot.x, scenery->obj.rot.y, scenery->obj.rot.z); @@ -844,14 +846,14 @@ void func_tank_8004641C(Player* player, s32 arg1, f32 arg2, f32 arg3, f32 arg4, if (Play_CheckPolyCollision(arg1, arg2, arg3, arg4, sp84, sp80, sp7C, &sp58, &sp4C)) { if (D_MA_801BE250[27] < arg3 + sp58.y) { D_MA_801BE250[27] = arg3 + sp58.y; - if (arg1 == OBJ_SCENERY_67) { + if (arg1 == OBJ_SCENERY_MA_WALL_3) { player->rollState = 0; D_800C9F04 = 1; } } D_MA_801BE250[28] = sp58.x; D_MA_801BE250[29] = sp58.z; - } else if ((arg1 == OBJ_SCENERY_67) && (D_MA_801BE250[27] == 0.0f) && + } else if ((arg1 == OBJ_SCENERY_MA_WALL_3) && (D_MA_801BE250[27] == 0.0f) && Play_CheckPolyCollision(arg1, arg2 + 20.0f, arg3, arg4, sp84, sp80, sp7C, &sp58, &sp4C)) { player->rollState = 9; player->rollTimer = 15; @@ -886,9 +888,9 @@ void func_tank_80046704(Player* player) { if (1) {} for (i = 0, scenery = gScenery; i < ARRAY_COUNT(gScenery); i++, scenery++) { if ((scenery->obj.status == OBJ_ACTIVE) && ((player->trueZpos - 2000.0f) < scenery->obj.pos.z)) { - if ((scenery->obj.id == OBJ_SCENERY_69) || (scenery->obj.id == OBJ_SCENERY_70) || - (scenery->obj.id == OBJ_SCENERY_71) || (scenery->obj.id == OBJ_SCENERY_72) || - (scenery->obj.id == OBJ_SCENERY_73) || (scenery->obj.id == OBJ_SCENERY_67)) { + if ((scenery->obj.id == OBJ_SCENERY_MA_TERRAIN_BUMP) || (scenery->obj.id == OBJ_SCENERY_MA_FLOOR_1) || + (scenery->obj.id == OBJ_SCENERY_MA_FLOOR_2) || (scenery->obj.id == OBJ_SCENERY_MA_FLOOR_3) || + (scenery->obj.id == OBJ_SCENERY_MA_FLOOR_4) || (scenery->obj.id == OBJ_SCENERY_MA_WALL_3)) { temp1 = scenery->obj.pos.x - player->pos.x; temp2 = scenery->obj.pos.z - player->trueZpos; @@ -896,7 +898,7 @@ void func_tank_80046704(Player* player) { func_tank_8004641C(player, scenery->obj.id, scenery->obj.pos.x, scenery->obj.pos.y, scenery->obj.pos.z, scenery->obj.rot.x, scenery->obj.rot.y, scenery->obj.rot.z); } - } else if (scenery->obj.id == OBJ_SCENERY_74) { + } else if (scenery->obj.id == OBJ_SCENERY_MA_FLOOR_5) { if (((player->pos.x - 820.0f) <= scenery->obj.pos.x) && (scenery->obj.pos.x <= (player->pos.x + 820.0f)) && ((player->pos.y - 50.0f) <= scenery->obj.pos.y) && @@ -907,10 +909,10 @@ void func_tank_80046704(Player* player) { player->groundPos.y = D_MA_801BE250[27] - 3.0f; } } - if ((scenery->obj.id == OBJ_SCENERY_59) || (scenery->obj.id == OBJ_SCENERY_60) || - (scenery->obj.id == OBJ_SCENERY_61) || (scenery->obj.id == OBJ_SCENERY_63) || - (scenery->obj.id == OBJ_SCENERY_105) || (scenery->obj.id == OBJ_SCENERY_66) || - (scenery->obj.id == OBJ_SCENERY_67) || (scenery->obj.id == OBJ_SCENERY_68)) { + if ((scenery->obj.id == OBJ_SCENERY_MA_BUILDING_1) || (scenery->obj.id == OBJ_SCENERY_MA_BUILDING_2) || + (scenery->obj.id == OBJ_SCENERY_MA_TOWER) || (scenery->obj.id == OBJ_SCENERY_63) || + (scenery->obj.id == OBJ_SCENERY_MA_TRAIN_TRACK_13) || (scenery->obj.id == OBJ_SCENERY_MA_WALL_2) || + (scenery->obj.id == OBJ_SCENERY_MA_WALL_3) || (scenery->obj.id == OBJ_SCENERY_MA_WALL_4)) { s32 temp_v0; s32 sp94; @@ -934,9 +936,9 @@ void func_tank_80046704(Player* player) { player->pos.x += (D_800C9F4C[temp_v0] * 5.0f); break; case 3: - if ((scenery->obj.id == OBJ_SCENERY_59) || (scenery->obj.id == OBJ_SCENERY_60) || - (scenery->obj.id == OBJ_SCENERY_63) || (scenery->obj.id == OBJ_SCENERY_66) || - (scenery->obj.id == OBJ_SCENERY_68)) { + if ((scenery->obj.id == OBJ_SCENERY_MA_BUILDING_1) || + (scenery->obj.id == OBJ_SCENERY_MA_BUILDING_2) || (scenery->obj.id == OBJ_SCENERY_63) || + (scenery->obj.id == OBJ_SCENERY_MA_WALL_2) || (scenery->obj.id == OBJ_SCENERY_MA_WALL_4)) { Player_ApplyDamage(player, temp_v0, 5); } player->baseSpeed = -(D_800C9F00 * 1.5f); @@ -945,7 +947,7 @@ void func_tank_80046704(Player* player) { AUDIO_PLAY_SFX(NA_SE_TANK_WALL_HIT, player->sfxSource, 0); break; } - if (scenery->obj.id == OBJ_SCENERY_59) { + if (scenery->obj.id == OBJ_SCENERY_MA_BUILDING_1) { if (((player->pos.x - 230.0f) <= scenery->obj.pos.x) && (scenery->obj.pos.x <= (player->pos.x + 230.0f)) && ((80.0f <= player->pos.y - scenery->obj.pos.y)) && @@ -975,7 +977,7 @@ void func_tank_80046704(Player* player) { (scenery->obj.pos.z <= (player->trueZpos + 220.0f)) && (player->pos.y >= 200.0f)) { player->groundPos.y = scenery->obj.pos.y + 204.0f; } - } else if ((scenery->obj.id == OBJ_SCENERY_105) && Macbeth_801A3C20(player->trueZpos)) { + } else if ((scenery->obj.id == OBJ_SCENERY_MA_TRAIN_TRACK_13) && Macbeth_801A3C20(player->trueZpos)) { if (((player->pos.x - 200.0f) < D_MA_801BE250[21]) && (D_MA_801BE250[21] < (player->pos.x + 200.0f))) { player->groundPos.y = D_MA_801BE250[22] - 1.0f; @@ -1342,14 +1344,15 @@ void func_tank_800481F4(Player* player) { func_tank_800444BC(player); if (player->mercyTimer == 0) { for (i = 0, scenery = gScenery; i < ARRAY_COUNT(gScenery); i++, scenery++) { - if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id != OBJ_SCENERY_58) && - (scenery->obj.id != OBJ_SCENERY_105) && (scenery->obj.id != OBJ_SCENERY_59) && - (scenery->obj.id != OBJ_SCENERY_60) && (scenery->obj.id != OBJ_SCENERY_63) && - (scenery->obj.id != OBJ_SCENERY_66) && (scenery->obj.id != OBJ_SCENERY_67) && - (scenery->obj.id != OBJ_SCENERY_68) && (scenery->obj.id != OBJ_SCENERY_70) && - (scenery->obj.id != OBJ_SCENERY_72) && (scenery->obj.id != OBJ_SCENERY_71) && - (scenery->obj.id != OBJ_SCENERY_73) && (scenery->obj.id != OBJ_SCENERY_74) && - (scenery->obj.id != OBJ_SCENERY_69) && ((player->trueZpos - 2000.0f) < scenery->obj.pos.z)) { + if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id != OBJ_SCENERY_TI_BRIDGE) && + (scenery->obj.id != OBJ_SCENERY_MA_TRAIN_TRACK_13) && (scenery->obj.id != OBJ_SCENERY_MA_BUILDING_1) && + (scenery->obj.id != OBJ_SCENERY_MA_BUILDING_2) && (scenery->obj.id != OBJ_SCENERY_63) && + (scenery->obj.id != OBJ_SCENERY_MA_WALL_2) && (scenery->obj.id != OBJ_SCENERY_MA_WALL_3) && + (scenery->obj.id != OBJ_SCENERY_MA_WALL_4) && (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_1) && + (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_3) && (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_2) && + (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_4) && (scenery->obj.id != OBJ_SCENERY_MA_FLOOR_5) && + (scenery->obj.id != OBJ_SCENERY_MA_TERRAIN_BUMP) && + ((player->trueZpos - 2000.0f) < scenery->obj.pos.z)) { var_fv1 = scenery->obj.rot.y; if (scenery->info.action == (ObjectFunc) SceneryRotateTowardsCamera) { var_fv1 = 0.0f; @@ -1429,7 +1432,7 @@ void func_tank_800481F4(Player* player) { Player_ApplyDamage(player, 0, 5); player->mercyTimer = 1; } - } else if ((OBJ_ACTOR_205 <= actor->obj.id) && (actor->obj.id <= OBJ_ACTOR_213)) { + } else if ((OBJ_ACTOR_MA_LOCOMOTIVE <= actor->obj.id) && (actor->obj.id <= OBJ_ACTOR_MA_TRAIN_CAR_7)) { if (func_tank_80046E40(player, actor->info.hitbox, &sp98, actor->fwork[25] + actor->obj.pos.x, actor->fwork[8] + actor->obj.pos.y + 25.0f, actor->obj.pos.z, actor->fwork[29], actor->fwork[26], actor->obj.rot.z, 0.0f, 0.0f, @@ -1463,12 +1466,12 @@ void func_tank_800481F4(Player* player) { actor->obj.rot.y, actor->obj.rot.z, 0.0f, 0.0f, 0.0f); if (temp_v0 != 0) { actor->dmgType = DMG_COLLISION; - if ((actor->obj.id == OBJ_ACTOR_225) || (actor->obj.id == OBJ_MISSILE_SEEK_TEAM)) { + if ((actor->obj.id == OBJ_ACTOR_TI_LANDMINE) || (actor->obj.id == OBJ_MISSILE_SEEK_TEAM)) { actor->dmgType = -1; } if (actor->info.damage) { Player_ApplyDamage(player, temp_v0, actor->info.damage); - if (actor->obj.id == OBJ_ACTOR_225) { + if (actor->obj.id == OBJ_ACTOR_TI_LANDMINE) { player->knockback.y = 0.0f; } } else { @@ -1487,11 +1490,11 @@ void func_tank_800481F4(Player* player) { if (temp_v0 != 0) { if ((sprite->obj.id == OBJ_SPRITE_FO_POLE) || (sprite->obj.id == OBJ_SPRITE_CO_POLE) || (sprite->obj.id == OBJ_SPRITE_CO_TREE)) { - sprite->destroy = 1; + sprite->destroy = true; player->hitTimer = 6; player->hitDirection = 0; } else if (sprite->obj.id == OBJ_SPRITE_TI_CACTUS) { - sprite->destroy = 1; + sprite->destroy = true; } else { Player_ApplyDamage(player, temp_v0, sprite->info.damage); } diff --git a/src/engine/fox_versus.c b/src/engine/fox_versus.c index 28633126..0ea9aa97 100644 --- a/src/engine/fox_versus.c +++ b/src/engine/fox_versus.c @@ -246,7 +246,7 @@ void func_versus_800BD7C4(f32 xPos, f32 yPos, s32 arg2) { s32 i; for (i = 10; i != 1; i /= 10) { - if (xPos > 0 && (yPos > 0)) { + if ((xPos > 0) && (yPos > 0)) { TextureRect_IA8(&gMasterDisp, D_800D4B20[arg2 / i], 16, 8, xPos, yPos, 1.0f, 1.0f); } xPos += 9.0f; diff --git a/src/mods/spawner.c b/src/mods/spawner.c new file mode 100644 index 00000000..b7cb964d --- /dev/null +++ b/src/mods/spawner.c @@ -0,0 +1,458 @@ +/* + * File: spawner.c + * System: Spawner + * Description: Spawner module meant to help documenting the rest of the code + * by being able to spawn Scenery, Sprites, Actors, Bosses, Items, Effects and Events. + * This is not part of the original game. + */ + +#include "global.h" +#include "sf64object.h" + +typedef enum ObjType { + /* 0 */ OBJ_SPAWN_SCENERY, + /* 1 */ OBJ_SPAWN_SCENERY_360, + /* 2 */ OBJ_SPAWN_SPRITE, + /* 3 */ OBJ_SPAWN_ACTOR, + /* 4 */ OBJ_SPAWN_BOSS, + /* 5 */ OBJ_SPAWN_ITEM, + /* 6 */ OBJ_SPAWN_EFFECT, + /* 7 */ OBJ_SPAWN_EVENT, + /* 8 */ OBJ_SPAWN_MAX +} ObjType; + +typedef struct ObjCount { + s32 actor; + s32 boss; + s32 scenery; + s32 sprite; + s32 effect; + s32 item; +} ObjCount; + +static int sObjId = 0; +static int sObjType = 0; + +static int sTextXpos = 239; +static int sTextYpos = 173; + +static OSContPad* sContPress; +static OSContPad* sContHold; + +void Scenery_Load(Scenery* this, ObjectInit* objInit); +void Sprite_Load(Sprite* this, ObjectInit* objInit); +void Item_Load(Item* this, ObjectInit* objInit); +void Boss_Load(Boss* this, ObjectInit* objInit); + +void Spawner_Actor(int actorId) { + if ((gControllerPress[0].button & L_TRIG) && (actorId >= OBJ_ACTOR_CO_GARUDA_1) && + (actorId <= OBJ_ACTOR_SUPPLIES)) { + Vec3f* reticlePos = &D_display_801613E0[0]; + Actor* actorSpawn = Game_SpawnActor(actorId); + + if (actorSpawn != NULL) { + actorSpawn->obj.pos.x = reticlePos->x * 1.7f; + actorSpawn->obj.pos.y = 200.0f; + actorSpawn->obj.pos.z = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 1.7f); + actorSpawn->state = 0; + } + } +} + +void Spawner_Boss(int bossId) { + if ((gControllerPress[0].button & L_TRIG) && (bossId >= OBJ_BOSS_CO_GRANGA) && (bossId <= OBJ_BOSS_AND_BRAIN)) { + Vec3f* reticlePos = &D_display_801613E0[0]; + ObjectInit objInit; + s32 i; + + objInit.zPos1 = objInit.zPos2 = 0; + objInit.xPos = reticlePos->x * 1.7f; + objInit.yPos = 200.0f; + objInit.rot.x = objInit.rot.y = objInit.rot.z = 0; + objInit.id = bossId; + + for (i = 0; i < ARRAY_COUNT(gBosses); i++) { + if (gBosses[i].obj.status == OBJ_FREE) { + Boss_Load(&gBosses[i], &objInit); + gBosses[i].obj.pos.z = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 1.7f); + break; + } + } + } +} + +void Spawner_Scenery(int sceneryId) { + if ((gControllerPress[0].button & L_TRIG) && (sceneryId >= OBJ_SCENERY_CO_STONE_ARCH) && + (sceneryId <= OBJ_SCENERY_VE2_MOUNTAIN)) { + Vec3f* reticlePos = &D_display_801613E0[0]; + ObjectInit objInit; + s32 i; + + objInit.zPos1 = objInit.zPos2 = 0; + objInit.xPos = reticlePos->x * 1.7f; + objInit.yPos = 200.0f; + objInit.rot.x = objInit.rot.y = objInit.rot.z = 0; + objInit.id = sceneryId; + + for (i = 0; i < ARRAY_COUNT(gScenery); i++) { + if (gScenery[i].obj.status == OBJ_FREE) { + Scenery_Load(&gScenery[i], &objInit); + gScenery[i].obj.pos.z = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 4.7f); + break; + } + } + } +} + +void Spawner_Scenery360(s32 scenery360Id) { + if ((gControllerPress[0].button & L_TRIG) && (scenery360Id >= OBJ_SCENERY_AND_PATH_INTERSECTION) && + (scenery360Id <= OBJ_SCENERY_VE2_MOUNTAIN)) { + Vec3f* reticlePos = &D_display_801613E0[0]; + s32 i; + + for (i = 0; i < 200; i++) { + if (gScenery360[i].obj.status == OBJ_FREE) { + Scenery360_Initialize(&gScenery360[i]); + gScenery360[i].obj.status = OBJ_ACTIVE; + gScenery360[i].obj.id = scenery360Id; + + gScenery360[i].obj.pos.x = +reticlePos->x * 5.0f; + gScenery360[i].obj.pos.z = -reticlePos->y * 5.0f; + + if (gLevelType == LEVELTYPE_PLANET) { + gScenery360[i].obj.pos.y = gGroundHeight; + } else { + gScenery360[i].obj.pos.y = gPlayer[0].pos.y; + } + + gScenery360[i].obj.rot.y = 0; + Object_SetInfo(&gScenery360[i].info, gScenery360[i].obj.id); + break; + } + } + } +} + +void Spawner_Sprite(int spriteId) { + if ((gControllerPress[0].button & L_TRIG) && (spriteId >= OBJ_SPRITE_CO_POLE) && + (spriteId <= OBJ_SPRITE_GFOX_TARGET)) { + Vec3f* reticlePos = &D_display_801613E0[0]; + ObjectInit objInit; + s32 i; + + objInit.zPos1 = objInit.zPos2 = 0; + objInit.xPos = reticlePos->x * 1.7f; + objInit.yPos = 200.0f; + objInit.rot.x = objInit.rot.y = objInit.rot.z = 0; + objInit.id = spriteId; + + for (i = 0; i < ARRAY_COUNT(gSprites); i++) { + if (gSprites[i].obj.status == OBJ_FREE) { + Sprite_Load(&gSprites[i], &objInit); + gSprites[i].obj.pos.z = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 1.7f); + break; + } + } + } +} + +void Spawner_Item(int itemId) { + if ((gControllerPress[0].button & L_TRIG) && (itemId >= OBJ_ITEM_LASERS) && (itemId <= OBJ_ITEM_TRAINING_RING)) { + Vec3f* reticlePos = &D_display_801613E0[0]; + ObjectInit objInit; + s32 i; + + objInit.zPos1 = objInit.zPos2 = 0; + objInit.xPos = reticlePos->x * 1.7f; + objInit.yPos = 200.0f; + objInit.rot.x = objInit.rot.y = objInit.rot.z = 0; + objInit.id = itemId; + + for (i = 0; i < ARRAY_COUNT(gItems); i++) { + if (gItems[i].obj.status == OBJ_FREE) { + Item_Load(&gItems[i], &objInit); + gItems[i].obj.pos.z = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 1.7f); + break; + } + } + } +} + +void Spawner_Event(int eventId) { + if (gControllerPress[0].button & L_TRIG) { + Vec3f* reticlePos = &D_display_801613E0[0]; + ObjectInit objInit; + s32 i; + + for (i = 0; i < ARRAY_COUNT(gActors); i++) { + if (gActors[i].obj.status == OBJ_FREE) { + objInit.zPos1 = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 1.7f); + objInit.zPos2 = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 1.7f) + 300.0f; + objInit.xPos = reticlePos->x * 1.7f; + objInit.yPos = 200.0f; + objInit.rot.x = 0; + objInit.rot.y = 0; + objInit.rot.z = 0; + objInit.id = ACTOR_EVENT_ID + eventId; + ActorEvent_Load(&gActors[i], &objInit, i); + gActors[i].obj.pos.z = gPlayer[0].pos.z - 1500.0f - (reticlePos->y * 1.7f); + break; + } + } + } +} + +void Spawner_Effect(int effectId) { + if ((gControllerPress[0].button & L_TRIG) && (effectId >= OBJ_EFFECT_FIRE_SMOKE_1) && (effectId < OBJ_ID_MAX)) { + Vec3f* reticlePos = &D_display_801613E0[0]; + s32 i; + + for (i = 0; i < ARRAY_COUNT(gEffects); i++) { + if (gEffects[i].obj.status == OBJ_FREE) { + Effect_Initialize(&gEffects[i]); + gEffects[i].obj.status = OBJ_INIT; + gEffects[i].obj.id = effectId; + gEffects[i].obj.pos.x = reticlePos->x * 1.7f; + gEffects[i].obj.pos.y = 200.0f; + gEffects[i].obj.pos.z = gPlayer[0].pos.z - 1000.0f - (reticlePos->y * 1.7f); + gEffects[i].vel.x = 0; + gEffects[i].vel.y = 0; + gEffects[i].vel.z = 0; + gEffects[i].obj.rot.x = 0; + gEffects[i].obj.rot.y = 0; + gEffects[i].obj.rot.z = 0; + // gEffects[i].timer_50 = 200; + Object_SetInfo(&gEffects[i].info, gEffects[i].obj.id); + break; + } + } + } +} + +ObjCount Spawner_ObjCount(void) { + ObjCount counter = { 0, 0, 0, 0, 0, 0 }; + s32 i; + + for (i = 0; i < ARRAY_COUNT(gActors); i++) { + if (gActors[i].obj.status != OBJ_FREE) { + counter.actor++; + } + } + for (i = 0; i < ARRAY_COUNT(gBosses); i++) { + if (gBosses[i].obj.status != OBJ_FREE) { + counter.boss++; + } + } + for (i = 0; i < ARRAY_COUNT(gScenery); i++) { + if (gScenery[i].obj.status != OBJ_FREE) { + counter.scenery++; + } + } + if (gLevelMode == LEVELMODE_ALL_RANGE) { + for (i = 0; i < 200; i++) { + if (gScenery360[i].obj.status != OBJ_FREE) { + counter.scenery++; + } + } + } + for (i = 0; i < ARRAY_COUNT(gSprites); i++) { + if (gSprites[i].obj.status != OBJ_FREE) { + counter.sprite++; + } + } + for (i = 0; i < ARRAY_COUNT(gEffects); i++) { + if (gEffects[i].obj.status != OBJ_FREE) { + counter.effect++; + } + } + for (i = 0; i < ARRAY_COUNT(gItems); i++) { + if (gItems[i].obj.status != OBJ_FREE) { + counter.item++; + } + } + return counter; +} + +void Spawner_ObjKill(void) { + s32 i; + + for (i = 0; i <= ARRAY_COUNT(gActors); i++) { + Object_Kill(&gActors[i].obj, gActors[i].sfxSource); + } + for (i = 0; i <= ARRAY_COUNT(gBosses); i++) { + Object_Kill(&gBosses[i].obj, gBosses[i].sfxSource); + } + for (i = 0; i <= ARRAY_COUNT(gScenery); i++) { + Object_Kill(&gScenery[i].obj, gScenery[i].sfxSource); + } + for (i = 0; i <= ARRAY_COUNT(gSprites); i++) { + Sprite_Initialize(&gSprites[i]); + } + for (i = 0; i <= ARRAY_COUNT(gEffects); i++) { + Object_Kill(&gEffects[i].obj, gEffects[i].sfxSource); + } + for (i = 0; i <= ARRAY_COUNT(gItems); i++) { + Object_Kill(&gItems[i].obj, gItems[i].sfxSource); + } + if (gLevelMode == LEVELMODE_ALL_RANGE) { + for (i = 0; i < 200; i++) { + gScenery360[i].obj.status = OBJ_FREE; + } + } +} + +// Use this function to add code that eases your documentation work! +Spawner_Playground(void) { + Player* player = &gPlayer[0]; + + player->mercyTimer = 100; + gLaserStrength[0] = 2; + gBombCount[0] = 9; + gLifeCount[0] = 9; +} + +void Spawner(void) { + static bool sFreeze = true; + static s32 sHoldTimer = 0; + ObjCount counter; + + /* Prevent execution before gameplay */ + if ((gGameState != GSTATE_PLAY) || (gPlayState <= PLAY_INIT)) { + return; + } + + Spawner_Playground(); + + /* Object Selector */ + sContPress = &gControllerPress[gMainController]; + sContHold = &gControllerHold[gMainController]; + + if (sContHold->button & (L_JPAD | R_JPAD)) { + sHoldTimer++; + } else { + sHoldTimer = 0; + } + + if (((sContHold->button & L_JPAD) && (sHoldTimer > 15)) || (sContPress->button & L_JPAD)) { + sObjId--; + } else if (((sContHold->button & R_JPAD) && (sHoldTimer > 15)) || (sContPress->button & R_JPAD)) { + sObjId++; + } else if (gControllerPress[0].button & D_JPAD) { + sFreeze ^= 1; // Freeze arwing. + } else if (gControllerPress[0].button & U_JPAD) { + Spawner_ObjKill(); + } else if (gControllerPress[0].button & R_CBUTTONS) { + sObjType++; + switch (sObjType) { + case OBJ_SPAWN_EVENT: + sObjId = EVID_0; + break; + case OBJ_SPAWN_SCENERY: + sObjId = OBJ_SCENERY_CO_STONE_ARCH; + break; + case OBJ_SPAWN_SCENERY_360: + sObjId = OBJ_SCENERY_AND_PATH_INTERSECTION; + break; + case OBJ_SPAWN_SPRITE: + sObjId = OBJ_SPRITE_CO_POLE; + break; + case OBJ_SPAWN_ACTOR: + sObjId = OBJ_ACTOR_CO_GARUDA_1; + break; + case OBJ_SPAWN_BOSS: + sObjId = OBJ_BOSS_CO_GRANGA; + break; + case OBJ_SPAWN_ITEM: + sObjId = OBJ_ITEM_LASERS; + break; + case OBJ_SPAWN_EFFECT: + sObjId = OBJ_EFFECT_FIRE_SMOKE_1; + break; + default: + sObjId = 0; + break; + } + } + + if (sObjId < 0) { + sObjId = 0; + } + + if (sObjType >= OBJ_SPAWN_MAX) { + sObjType = OBJ_SPAWN_SCENERY; + } + + /* Freeze arwing */ + if (sFreeze) { + gPlayer[0].baseSpeed = 0; + } else { + gPlayer[0].baseSpeed = gArwingSpeed; + } + + RCP_SetupDL(&gMasterDisp, SETUPDL_83); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); + + /* Spawners */ + switch (sObjType) { + case OBJ_SPAWN_SCENERY: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "SCENERY:"); + Graphics_DisplaySmallNumber(80, 220, sObjId); + Spawner_Scenery(sObjId); + break; + case OBJ_SPAWN_SCENERY_360: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "SCENERY360:"); + Graphics_DisplaySmallNumber(100, 220, sObjId); + Spawner_Scenery360(sObjId); + break; + case OBJ_SPAWN_SPRITE: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "SPRITE:"); + Graphics_DisplaySmallNumber(65, 220, sObjId); + Spawner_Sprite(sObjId); + break; + case OBJ_SPAWN_ACTOR: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "ACTOR:"); + Graphics_DisplaySmallNumber(60, 220, sObjId); + Spawner_Actor(sObjId); + break; + case OBJ_SPAWN_BOSS: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "BOSS:"); + Graphics_DisplaySmallNumber(55, 220, sObjId); + Spawner_Boss(sObjId); + break; + case OBJ_SPAWN_ITEM: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "ITEM:"); + Graphics_DisplaySmallNumber(50, 220, sObjId); + Spawner_Item(sObjId); + break; + case OBJ_SPAWN_EFFECT: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "EFFECT:"); + Graphics_DisplaySmallNumber(65, 220, sObjId); + Spawner_Effect(sObjId); + break; + case OBJ_SPAWN_EVENT: + Graphics_DisplaySmallText(10, 220, 1.0f, 1.0f, "EVENT:"); + Graphics_DisplaySmallNumber(60, 220, sObjId); + Spawner_Event(sObjId); + break; + default: + break; + } + + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + + Graphics_DisplaySmallText(sTextXpos - 8, sTextYpos + 00, 1.0f, 1.0f, "SCENERY:"); + Graphics_DisplaySmallText(sTextXpos - 4, sTextYpos + 10, 1.0f, 1.0f, "SPRITES:"); + Graphics_DisplaySmallText(sTextXpos + 0, sTextYpos + 20, 1.0f, 1.0f, "ACTORS:"); + Graphics_DisplaySmallText(sTextXpos + 0, sTextYpos + 30, 1.0f, 1.0f, "BOSSES:"); + Graphics_DisplaySmallText(sTextXpos + 12, sTextYpos + 40, 1.0f, 1.0f, "ITEMS:"); + Graphics_DisplaySmallText(sTextXpos - 8, sTextYpos + 50, 1.0f, 1.0f, "EFFECTS:"); + + counter = Spawner_ObjCount(); + + Graphics_DisplaySmallNumber(sTextXpos + 55, sTextYpos + 00, counter.scenery); + Graphics_DisplaySmallNumber(sTextXpos + 55, sTextYpos + 10, counter.sprite); + Graphics_DisplaySmallNumber(sTextXpos + 55, sTextYpos + 20, counter.actor); + Graphics_DisplaySmallNumber(sTextXpos + 55, sTextYpos + 30, counter.boss); + Graphics_DisplaySmallNumber(sTextXpos + 55, sTextYpos + 40, counter.item); + Graphics_DisplaySmallNumber(sTextXpos + 55, sTextYpos + 50, counter.effect); +} diff --git a/src/overlays/ovl_ending/fox_end2.c b/src/overlays/ovl_ending/fox_end2.c index 97be8082..760eca44 100644 --- a/src/overlays/ovl_ending/fox_end2.c +++ b/src/overlays/ovl_ending/fox_end2.c @@ -865,7 +865,7 @@ void Ending_80191294(u32 arg0, AssetInfo* asset) { D_ending_80198590.unk_30 = +D_ending_801985F0.x; D_ending_80198590.unk_34 = -D_ending_801985F0.y; - func_display_80053658(&D_ending_80198590); + Display_ArwingWings(&D_ending_80198590); } void Ending_80191700(u32 arg0, AssetInfo* asset) { diff --git a/src/overlays/ovl_i1/fox_co.c b/src/overlays/ovl_i1/fox_co.c index 27eb1b1d..7a564f36 100644 --- a/src/overlays/ovl_i1/fox_co.c +++ b/src/overlays/ovl_i1/fox_co.c @@ -9,19 +9,19 @@ #include "assets/ast_corneria.h" #include "fox_co.h" -u8 D_i1_8019B6D0; +u8 sFightCarrier; f32 sCoGrangaWork[68]; -void Corneria_BuildingOnFire_Update(CoBuildingOnFire* this) { +void Corneria_CoBuildingOnFire_Update(CoBuildingOnFire* this) { } -void Corneria_BuildingOnFire_Draw(CoBuildingOnFire* this) { +void Corneria_CoBuildingOnFire_Draw(CoBuildingOnFire* this) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_CO_60199D0); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } -void Corneria_Smoke_Update(CoSmoke* this) { +void Corneria_CoSmoke_Update(CoSmoke* this) { f32 x; f32 y; f32 z; @@ -30,12 +30,12 @@ void Corneria_Smoke_Update(CoSmoke* this) { x = RAND_FLOAT_CENTERED(10.0f); y = RAND_FLOAT_CENTERED(10.0f); z = RAND_FLOAT(0.5f) + 1.0f; - func_effect_8007C85C(this->obj.pos.x + x, this->obj.pos.y + y, this->obj.pos.z, 4.0f * z); + Effect_Effect343_Spawn(this->obj.pos.x + x, this->obj.pos.y + y, this->obj.pos.z, 4.0f * z); } } -void Corneria_Boss_MissileInit(Actor* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 xRot, f32 yRot, s32 arg7, - s32 eventType, ObjectId objId) { +void Corneria_BossMissile_Setup(Actor* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 xRot, f32 yRot, s32 arg7, + s32 eventType, ObjectId objId) { Actor_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = objId; @@ -51,19 +51,19 @@ void Corneria_Boss_MissileInit(Actor* this, f32 xPos, f32 yPos, f32 zPos, f32 ar Object_SetInfo(&this->info, this->obj.id); } -void Corneria_Boss_SpawnMissile(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 xRot, f32 yRot, s32 arg6, s32 eventType, +void Corneria_BossMissile_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 xRot, f32 yRot, s32 arg6, s32 eventType, ObjectId objId) { s32 i; for (i = 0; i < ARRAY_COUNT(gActors); i++) { if (gActors[i].obj.status == OBJ_FREE) { - Corneria_Boss_MissileInit(&gActors[i], xPos, yPos, zPos, arg3, xRot, yRot, arg6, eventType, objId); + Corneria_BossMissile_Setup(&gActors[i], xPos, yPos, zPos, arg3, xRot, yRot, arg6, eventType, objId); break; } } } -void Corneria_Granga_ShootLaser(Granga* this, f32 x, f32 y, f32 z) { +void Corneria_CoGranga_ShootLaser(CoGranga* this, f32 x, f32 y, f32 z) { Vec3f src; Vec3f dest; @@ -77,7 +77,7 @@ void Corneria_Granga_ShootLaser(Granga* this, f32 x, f32 y, f32 z) { this->obj.pos.z + dest.z, 100.0f); } -void Corneria_GrangaSpawnItem(s32 arg0, f32 x, f32 y, f32 z, ObjectId itemId) { +void Corneria_Granga_SpawnItem(s32 arg0, f32 x, f32 y, f32 z, ObjectId itemId) { s32 i; for (i = 0; i < ARRAY_COUNT(gItems); i++) { @@ -95,7 +95,7 @@ void Corneria_GrangaSpawnItem(s32 arg0, f32 x, f32 y, f32 z, ObjectId itemId) { } } -void Corneria_Granga_Init(Granga* this) { +void Corneria_Granga_Init(CoGranga* this) { s32 i; gBossFrameCount = 0; @@ -116,22 +116,22 @@ void Corneria_Granga_Init(Granga* this) { } } -void Corneria_8018798C(Granga* this, f32 xPos, f32 yPos, f32 zPos, f32 scale) { - func_effect_8007BFFC(xPos, yPos, zPos, 0.0f, 0.0f, 0.0f, scale, 30); +void Corneria_8018798C(CoGranga* this, f32 xPos, f32 yPos, f32 zPos, f32 scale) { + Effect386_Spawn1(xPos, yPos, zPos, 0.0f, 0.0f, 0.0f, scale, 30); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_DAMAGE_M); } -void Corneria_801879F0(Granga* this, f32 xPos, f32 yPos, f32 zPos, f32 scale) { - func_effect_8007D1E0(xPos, yPos, zPos, scale); +void Corneria_801879F0(CoGranga* this, f32 xPos, f32 yPos, f32 zPos, f32 scale) { + Effect_Effect341_Spawn(xPos, yPos, zPos, scale); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_DAMAGE_M); } -void Corneria_80187A38(Granga* this, f32 xPos, f32 yPos, f32 zPos, f32 scale, s32 timer) { - func_effect_8007C120(xPos, yPos, zPos, this->vel.x, this->vel.y, this->vel.z, scale, timer); +void Corneria_80187A38(CoGranga* this, f32 xPos, f32 yPos, f32 zPos, f32 scale, s32 timer) { + Effect_Effect390_Spawn(xPos, yPos, zPos, this->vel.x, this->vel.y, this->vel.z, scale, timer); } -f32 Corneria_80187A88(s32 arg0) { - f32 ret = arg0 * 0.5f; +f32 Corneria_80187A88(s32 angle) { + f32 ret = angle * 0.5f; if (ret > 8.0f) { ret = 8.0f; @@ -139,7 +139,7 @@ f32 Corneria_80187A88(s32 arg0) { return ret; } -void Corneria_Granga_HandleDamage(Granga* this) { +void Corneria_CoGranga_HandleDamage(CoGranga* this) { CoTree* tree; s32 item; s32 i; @@ -177,7 +177,7 @@ void Corneria_Granga_HandleDamage(Granga* this) { this->swork[GRANGA_SWK_32] = true; } - this->state = GRANGA_STATE_7; + this->state = GRANGA_EXPLODE; this->timer_050 = 100; SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 80); @@ -282,8 +282,8 @@ void Corneria_Granga_HandleDamage(Granga* this) { 0.0f, 5.5f, i + 28, RAND_INT(30.0f) + 60.0f); } - if (this->state < GRANGA_STATE_5) { - this->state = GRANGA_STATE_5; + if (this->state < GRANGA_FALL_TO_LEFT) { + this->state = GRANGA_FALL_TO_LEFT; this->timer_050 = 60; } } @@ -305,8 +305,8 @@ void Corneria_Granga_HandleDamage(Granga* this) { 0.0f, 5.5f, i + 28, RAND_INT(30.0f) + 60.0f); } - if (this->state < GRANGA_STATE_5) { - this->state = GRANGA_STATE_6; + if (this->state < GRANGA_FALL_TO_LEFT) { + this->state = GRANGA_FALL_TO_RIGHT; this->timer_050 = 60; } } @@ -316,7 +316,7 @@ void Corneria_Granga_HandleDamage(Granga* this) { this->timer_050 += 10; } - if ((this->state != GRANGA_STATIONARY) && (this->state < GRANGA_STATE_5)) { + if ((this->state != GRANGA_STATIONARY) && (this->state < GRANGA_FALL_TO_LEFT)) { this->fwork[GRANGA_FWK_14] = 0.0f; if (Rand_ZeroOne() < 0.5f) { @@ -324,23 +324,23 @@ void Corneria_Granga_HandleDamage(Granga* this) { } else { item = OBJ_ITEM_BOMB; } - Corneria_GrangaSpawnItem(this, this->obj.pos.x, this->obj.pos.y + 100.0f, this->obj.pos.z, item); + Corneria_Granga_SpawnItem(this, this->obj.pos.x, this->obj.pos.y + 100.0f, this->obj.pos.z, item); } - if (this->state < GRANGA_STATE_5) { + if (this->state < GRANGA_FALL_TO_LEFT) { this->state = GRANGA_STATIONARY; switch (RAND_INT(5.0f)) { case 0: - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_2; + this->swork[GRANGA_NEXT_STATE] = GRANGA_BACKWARDS_LASER_PLASMA; break; case 1: - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_3; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD_LASER_PLASMA; break; case 2: case 3: case 4: - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_4; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD; break; } } @@ -354,44 +354,42 @@ void Corneria_Granga_HandleDamage(Granga* this) { if ((tree->obj.status == OBJ_ACTIVE) && (tree->obj.id == OBJ_SPRITE_CO_TREE)) { if ((fabsf(tree->obj.pos.x - sCoGrangaWork[GRANGA_WORK_20]) < 90.0f) && (fabsf(tree->obj.pos.z - sCoGrangaWork[GRANGA_WORK_32]) < 90.0f)) { - tree->destroy = 1; + tree->destroy = true; break; } else if ((fabsf(tree->obj.pos.x - sCoGrangaWork[GRANGA_WORK_23]) < 90.0f) && (fabsf(tree->obj.pos.z - sCoGrangaWork[GRANGA_WORK_35]) < 90.0f)) { - tree->destroy = 1; + tree->destroy = true; break; } } } if ((this->swork[GRANGA_RIGHT_ARM_DMG_IND] == DMG_DESTROYED) && ((gGameFrameCount % 4) == 0)) { - func_effect_8007BFFC(sCoGrangaWork[GRANGA_WORK_03], sCoGrangaWork[GRANGA_WORK_04], - sCoGrangaWork[GRANGA_WORK_05], - (sCoGrangaWork[GRANGA_WORK_03] - this->obj.pos.x) * 0.1f, 0.0f, - (sCoGrangaWork[GRANGA_WORK_05] - this->obj.pos.z) * 0.1f, 1.5f, 5); + Effect386_Spawn1(sCoGrangaWork[GRANGA_WORK_03], sCoGrangaWork[GRANGA_WORK_04], + sCoGrangaWork[GRANGA_WORK_05], (sCoGrangaWork[GRANGA_WORK_03] - this->obj.pos.x) * 0.1f, + 0.0f, (sCoGrangaWork[GRANGA_WORK_05] - this->obj.pos.z) * 0.1f, 1.5f, 5); } if ((this->swork[GRANGA_LEFT_ARM_DMG_IND] == DMG_DESTROYED) && ((gGameFrameCount % 4) == 0)) { - func_effect_8007BFFC(sCoGrangaWork[GRANGA_WORK_09], sCoGrangaWork[GRANGA_WORK_10], - sCoGrangaWork[GRANGA_WORK_11], - (sCoGrangaWork[GRANGA_WORK_09] - this->obj.pos.x) * 0.1f, 0.0f, - (sCoGrangaWork[GRANGA_WORK_11] - this->obj.pos.z) * 0.1f, 1.5f, 5); + Effect386_Spawn1(sCoGrangaWork[GRANGA_WORK_09], sCoGrangaWork[GRANGA_WORK_10], + sCoGrangaWork[GRANGA_WORK_11], (sCoGrangaWork[GRANGA_WORK_09] - this->obj.pos.x) * 0.1f, + 0.0f, (sCoGrangaWork[GRANGA_WORK_11] - this->obj.pos.z) * 0.1f, 1.5f, 5); } if ((this->swork[GRANGA_GUN_DMG_IND] == DMG_DESTROYED) && ((gGameFrameCount % 4) == 0)) { - func_effect_8007BFFC(sCoGrangaWork[GRANGA_WORK_12], sCoGrangaWork[GRANGA_WORK_13], - sCoGrangaWork[GRANGA_WORK_14], 0.0f, 20.0f, 0.0f, 2.0f, 5); + Effect386_Spawn1(sCoGrangaWork[GRANGA_WORK_12], sCoGrangaWork[GRANGA_WORK_13], + sCoGrangaWork[GRANGA_WORK_14], 0.0f, 20.0f, 0.0f, 2.0f, 5); } if ((this->swork[GRANGA_RIGHT_LEG_DMG_IND] == DMG_DESTROYED) && ((gGameFrameCount % 4) == 0)) { - func_effect_8007BFFC(sCoGrangaWork[GRANGA_WORK_56], sCoGrangaWork[GRANGA_WORK_57], - sCoGrangaWork[GRANGA_WORK_58], 0.0f, 10.0f, 0.0f, 2.0f, 5); + Effect386_Spawn1(sCoGrangaWork[GRANGA_WORK_56], sCoGrangaWork[GRANGA_WORK_57], + sCoGrangaWork[GRANGA_WORK_58], 0.0f, 10.0f, 0.0f, 2.0f, 5); } if ((this->swork[GRANGA_LEFT_LEG_DMG_IND] == DMG_DESTROYED) && ((gGameFrameCount % 4) == 0)) { - func_effect_8007BFFC(sCoGrangaWork[GRANGA_WORK_59], sCoGrangaWork[GRANGA_WORK_60], - sCoGrangaWork[GRANGA_WORK_61], 0.0f, 10.0f, 0.0f, 2.0f, 5); + Effect386_Spawn1(sCoGrangaWork[GRANGA_WORK_59], sCoGrangaWork[GRANGA_WORK_60], + sCoGrangaWork[GRANGA_WORK_61], 0.0f, 10.0f, 0.0f, 2.0f, 5); } } } -ObjectId Corneria_Granga_ChooseMissileTarget(Granga* this) { +ObjectId Corneria_CoGranga_ChooseMissileTarget(CoGranga* this) { this->swork[GRANGA_MISSILE_COUNT]++; /* * Spawn up to 5 missiles that seek the teammates @@ -400,14 +398,14 @@ ObjectId Corneria_Granga_ChooseMissileTarget(Granga* this) { if (this->swork[GRANGA_MISSILE_COUNT] >= 5) { this->swork[GRANGA_MISSILE_COUNT] = 0; return OBJ_MISSILE_SEEK_PLAYER; - } else if (Hud_MissileSeekModeCheck(0) < 4) { + } else if (ActorMissileSeek_ModeCheck(0) < 4) { return OBJ_MISSILE_SEEK_TEAM; } else { return 0; } } -void Corneria_Granga_Attack(Granga* this) { +void Corneria_CoGranga_Attack(CoGranga* this) { Vec3f savedPlayerPos; ObjectId objId; @@ -421,15 +419,15 @@ void Corneria_Granga_Attack(Granga* this) { break; case GRANGA_ATTACK_MISSILES: - objId = Corneria_Granga_ChooseMissileTarget(this); + objId = Corneria_CoGranga_ChooseMissileTarget(this); if (objId != 0) { if (this->swork[GRANGA_RIGHT_ARM_DMG_IND] != DMG_DESTROYED) { - Corneria_Boss_SpawnMissile(sCoGrangaWork[GRANGA_WORK_00], sCoGrangaWork[GRANGA_WORK_01], + Corneria_BossMissile_Spawn(sCoGrangaWork[GRANGA_WORK_00], sCoGrangaWork[GRANGA_WORK_01], sCoGrangaWork[GRANGA_WORK_02], 65.0f, 0.0f, sCoGrangaWork[GRANGA_WORK_16] + this->obj.rot.y, 0, 0, objId); } if (this->swork[GRANGA_LEFT_ARM_DMG_IND] != DMG_DESTROYED) { - Corneria_Boss_SpawnMissile(sCoGrangaWork[GRANGA_WORK_06], sCoGrangaWork[GRANGA_WORK_07], + Corneria_BossMissile_Spawn(sCoGrangaWork[GRANGA_WORK_06], sCoGrangaWork[GRANGA_WORK_07], sCoGrangaWork[GRANGA_WORK_08], 65.0f, 0.0f, sCoGrangaWork[GRANGA_WORK_16] + this->obj.rot.y, 0, 0, objId); } @@ -438,8 +436,8 @@ void Corneria_Granga_Attack(Granga* this) { break; case GRANGA_ATTACK_LASERS: - Corneria_Granga_ShootLaser(this, 40.0f, 228.0f, 212.0f); - Corneria_Granga_ShootLaser(this, -40.0f, 228.0f, 212.0f); + Corneria_CoGranga_ShootLaser(this, 40.0f, 228.0f, 212.0f); + Corneria_CoGranga_ShootLaser(this, -40.0f, 228.0f, 212.0f); this->swork[GRANGA_ATTACK_STATE] = GRANGA_ATTACK_IDLE; break; @@ -465,7 +463,7 @@ void Corneria_Granga_Attack(Granga* this) { } } -void Corneria_Granga_DecideNextAction(Granga* this) { +void Corneria_CoGranga_DecideNextAction(CoGranga* this) { if (this->timer_050 == 0) { this->state = GRANGA_STATIONARY; this->timer_050 = RAND_INT(20.0f) + 20; @@ -474,26 +472,26 @@ void Corneria_Granga_DecideNextAction(Granga* this) { switch (RAND_INT(8.0f)) { case 0: case 1: - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_1; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD_MISSILE; break; case 2: case 3: - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_2; + this->swork[GRANGA_NEXT_STATE] = GRANGA_BACKWARDS_LASER_PLASMA; break; case 4: if (D_edisplay_801615D0.y < 0.0f) { - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_4; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD; } else { - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_3; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD_LASER_PLASMA; } break; case 5: case 6: case 7: - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_4; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD; break; } @@ -517,7 +515,7 @@ void Corneria_Granga_DecideNextAction(Granga* this) { } } -void Corneria_80188C7C(Granga* this) { +void Corneria_80188C7C(CoGranga* this) { if (this->unk_044 == 0) { this->unk_044++; this->fwork[GRANGA_FWK_12] *= -0.2f; @@ -534,7 +532,7 @@ void Corneria_80188C7C(Granga* this) { } } -void Corneria_Granga_1UpCheck(Granga* this) { +void Corneria_CoGranga_1UpCheck(CoGranga* this) { static s32 sCo1UpHitTimer = 0; s32 i; Vec3f src; @@ -548,7 +546,7 @@ void Corneria_Granga_1UpCheck(Granga* this) { if (sCo1UpHitTimer != 0) { sCo1UpHitTimer--; - } else if ((gPlayer[0].pos.y < 200.0f) && (this->state < GRANGA_STATE_5) && + } else if ((gPlayer[0].pos.y < 200.0f) && (this->state < GRANGA_FALL_TO_LEFT) && (fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 200.0f) && (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 200.0f) && (gPlayer[0].aerobaticPitch > 180.0f)) { this->swork[GRANGA_1UP_CHECK]++; @@ -597,7 +595,7 @@ void Corneria_Granga_1UpCheck(Granga* this) { gItems[i].timer_4A = 8; Object_SetInfo(&gItems[i].info, gItems[i].obj.id); - func_effect_8007B344(gItems[i].obj.pos.x, gItems[i].obj.pos.y, gItems[i].obj.pos.z, 5.0f, 0); + Effect_Effect384_Spawn(gItems[i].obj.pos.x, gItems[i].obj.pos.y, gItems[i].obj.pos.z, 5.0f, 0); break; } } @@ -605,7 +603,7 @@ void Corneria_Granga_1UpCheck(Granga* this) { } } -void Corneria_Granga_Update(Granga* this) { +void Corneria_CoGranga_Update(CoGranga* this) { Vec3f sp21C = { 0.0f, 0.0f, 0.0f }; s32 sp218; f32 sp214; @@ -646,14 +644,14 @@ void Corneria_Granga_Update(Granga* this) { this->timer_052 = 100; this->state = GRANGA_STATIONARY; - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_1; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD_MISSILE; sCoGrangaWork[GRANGA_WORK_66] = 0.0f; sCoGrangaWork[GRANGA_WORK_67] = 10000.0f; this->timer_050 = 30; - Animation_GetFrameData(&D_CO_602C0D0, 0, this->vwork); + Animation_GetFrameData(&aCoGrangaStationaryAnim, 0, this->vwork); gBossFrameCount = 0; } @@ -666,7 +664,7 @@ void Corneria_Granga_Update(Granga* this) { gRadarMarks[59].pos.z = this->obj.pos.z; gRadarMarks[59].yRot = this->obj.rot.y + 180.0f; - Corneria_Granga_1UpCheck(this); + Corneria_CoGranga_1UpCheck(this); if (D_edisplay_801615D0.z > 0.0f) { if (D_edisplay_801615D0.x > 0.0f) { @@ -696,7 +694,7 @@ void Corneria_Granga_Update(Granga* this) { Radio_PlayMessage(gMsg_ID_2230, RCID_PEPPY); break; case 3840: - if (this->state < GRANGA_STATE_5) { + if (this->state < GRANGA_FALL_TO_LEFT) { Radio_PlayMessage(gMsg_ID_2230, RCID_PEPPY); } break; @@ -712,7 +710,7 @@ void Corneria_Granga_Update(Granga* this) { } } - Corneria_Granga_HandleDamage(this); + Corneria_CoGranga_HandleDamage(this); this->fwork[GRANGA_FWK_00] = SIN_DEG(this->swork[GRANGA_SWK_18] * 50.0f) * Corneria_80187A88(this->swork[GRANGA_SWK_18]); @@ -725,7 +723,7 @@ void Corneria_Granga_Update(Granga* this) { this->fwork[GRANGA_FWK_04] = SIN_DEG(this->swork[GRANGA_SWK_22] * 50.0f) * Corneria_80187A88(this->swork[GRANGA_SWK_22]); - if (this->state < GRANGA_STATE_5) { + if (this->state < GRANGA_FALL_TO_LEFT) { sp5C = SIN_DEG(this->swork[GRANGA_SWK_23] * 12.0f) * Corneria_80187A88(this->swork[GRANGA_SWK_23]) * 0.3f; Math_SmoothStepToF(&this->obj.rot.z, sp5C, 0.2f, 100.0f, 0.001f); } @@ -734,9 +732,9 @@ void Corneria_Granga_Update(Granga* this) { this->obj.pos.y = 10.0f; } - sp214 = sCoGrangaWork[GRANGA_WORK_17] - this->obj.pos.x; - sp210 = sCoGrangaWork[GRANGA_WORK_18] - (this->obj.pos.y + 300.0f); - sp20C = sCoGrangaWork[GRANGA_WORK_19] - this->obj.pos.z; + sp214 = sCoGrangaWork[GRANGA_TARGET_X] - this->obj.pos.x; + sp210 = sCoGrangaWork[GRANGA_TARGET_Y] - (this->obj.pos.y + 300.0f); + sp20C = sCoGrangaWork[GRANGA_TARGET_Z] - this->obj.pos.z; sp1FC = Math_RadToDeg(Math_Atan2F(sp214, sp20C)); sp204 = sqrtf(SQ(sp214) + SQ(sp20C)); @@ -776,29 +774,29 @@ void Corneria_Granga_Update(Granga* this) { switch (this->state) { case GRANGA_STATIONARY: - this->unk_04C = 0; - sCoGrangaWork[GRANGA_WORK_17] = gPlayer[0].pos.x; - sCoGrangaWork[GRANGA_WORK_18] = gPlayer[0].pos.y; - sCoGrangaWork[GRANGA_WORK_19] = gPlayer[0].trueZpos; + this->animFrame = 0; + sCoGrangaWork[GRANGA_TARGET_X] = gPlayer[0].pos.x; + sCoGrangaWork[GRANGA_TARGET_Y] = gPlayer[0].pos.y; + sCoGrangaWork[GRANGA_TARGET_Z] = gPlayer[0].trueZpos; if (this->timer_050 == 0) { switch (this->swork[GRANGA_NEXT_STATE]) { - case GRANGA_STATE_1: - this->state = GRANGA_STATE_1; + case GRANGA_FORWARD_MISSILE: + this->state = GRANGA_FORWARD_MISSILE; this->timer_050 = RAND_INT(50.0f) + 50; this->fwork[GRANGA_FWK_14] = 0.0f; break; - case GRANGA_STATE_2: - this->state = GRANGA_STATE_2; + case GRANGA_BACKWARDS_LASER_PLASMA: + this->state = GRANGA_BACKWARDS_LASER_PLASMA; this->timer_050 = RAND_INT(100.0f) + 150; this->timer_052 = 40; this->timer_054 = 40; this->fwork[GRANGA_FWK_14] = 0.07f; break; - case GRANGA_STATE_4: - this->state = GRANGA_STATE_4; + case GRANGA_FORWARD: + this->state = GRANGA_FORWARD; this->timer_050 = RAND_INT(70.0f) + 100; this->fwork[GRANGA_FWK_14] = 0.1f; sCoGrangaWork[GRANGA_WORK_66] = RAND_FLOAT_CENTERED(6000.0f); @@ -806,15 +804,15 @@ void Corneria_Granga_Update(Granga* this) { this->fwork[GRANGA_FWK_14] = 0.07f; break; - case GRANGA_STATE_3: - this->state = GRANGA_STATE_3; + case GRANGA_FORWARD_LASER_PLASMA: + this->state = GRANGA_FORWARD_LASER_PLASMA; this->timer_050 = RAND_INT(100.0f) + 150; this->fwork[GRANGA_FWK_14] = 0.07f; break; } } - Animation_GetFrameData(&D_CO_602C0D0, this->unk_04C, frameTable); + Animation_GetFrameData(&aCoGrangaStationaryAnim, this->animFrame, frameTable); if (this->timer_052 == 0) { this->timer_052 = 150; @@ -822,17 +820,17 @@ void Corneria_Granga_Update(Granga* this) { } break; - case GRANGA_STATE_1: - sCoGrangaWork[GRANGA_WORK_17] = sCoGrangaWork[GRANGA_WORK_66] = gPlayer[0].pos.x; - sCoGrangaWork[GRANGA_WORK_18] = gPlayer[0].pos.y; - sCoGrangaWork[GRANGA_WORK_19] = sCoGrangaWork[GRANGA_WORK_67] = gPlayer[0].trueZpos; + case GRANGA_FORWARD_MISSILE: + sCoGrangaWork[GRANGA_TARGET_X] = sCoGrangaWork[GRANGA_WORK_66] = gPlayer[0].pos.x; + sCoGrangaWork[GRANGA_TARGET_Y] = gPlayer[0].pos.y; + sCoGrangaWork[GRANGA_TARGET_Z] = sCoGrangaWork[GRANGA_WORK_67] = gPlayer[0].trueZpos; - this->unk_04C += 2; - if (this->unk_04C >= Animation_GetFrameCount(&D_CO_602BC18)) { - this->unk_04C = 0; + this->animFrame += 2; + if (this->animFrame >= Animation_GetFrameCount(&aCoGrangaWalkingAnim)) { + this->animFrame = 0; } - Animation_GetFrameData(&D_CO_602BC18, this->unk_04C, frameTable); + Animation_GetFrameData(&aCoGrangaWalkingAnim, this->animFrame, frameTable); Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp1EC, &sp21C); if (this->timer_052 == 0) { @@ -840,20 +838,20 @@ void Corneria_Granga_Update(Granga* this) { this->swork[GRANGA_ATTACK_STATE] = GRANGA_ATTACK_MISSILES; } - Corneria_Granga_DecideNextAction(this); + Corneria_CoGranga_DecideNextAction(this); break; - case GRANGA_STATE_2: - sCoGrangaWork[GRANGA_WORK_17] = sCoGrangaWork[GRANGA_WORK_66] = gPlayer[0].pos.x; - sCoGrangaWork[GRANGA_WORK_18] = gPlayer[0].pos.y; - sCoGrangaWork[GRANGA_WORK_19] = sCoGrangaWork[GRANGA_WORK_67] = gPlayer[0].trueZpos; + case GRANGA_BACKWARDS_LASER_PLASMA: + sCoGrangaWork[GRANGA_TARGET_X] = sCoGrangaWork[GRANGA_WORK_66] = gPlayer[0].pos.x; + sCoGrangaWork[GRANGA_TARGET_Y] = gPlayer[0].pos.y; + sCoGrangaWork[GRANGA_TARGET_Z] = sCoGrangaWork[GRANGA_WORK_67] = gPlayer[0].trueZpos; - this->unk_04C -= 4; - if (this->unk_04C < 0) { - this->unk_04C = 100; + this->animFrame -= 4; + if (this->animFrame < 0) { + this->animFrame = 100; } - Animation_GetFrameData(&D_CO_602BC18, this->unk_04C, frameTable); + Animation_GetFrameData(&aCoGrangaWalkingAnim, this->animFrame, frameTable); Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp6C, &sp21C); if (this->timer_052 == 0) { @@ -865,20 +863,20 @@ void Corneria_Granga_Update(Granga* this) { this->swork[GRANGA_ATTACK_STATE] = GRANGA_ATTACK_PLASMA; } - Corneria_Granga_DecideNextAction(this); + Corneria_CoGranga_DecideNextAction(this); break; - case GRANGA_STATE_3: - sCoGrangaWork[GRANGA_WORK_17] = sCoGrangaWork[GRANGA_WORK_66] = gPlayer[0].pos.x; - sCoGrangaWork[GRANGA_WORK_18] = gPlayer[0].pos.y; - sCoGrangaWork[GRANGA_WORK_19] = sCoGrangaWork[GRANGA_WORK_67] = gPlayer[0].trueZpos; + case GRANGA_FORWARD_LASER_PLASMA: + sCoGrangaWork[GRANGA_TARGET_X] = sCoGrangaWork[GRANGA_WORK_66] = gPlayer[0].pos.x; + sCoGrangaWork[GRANGA_TARGET_Y] = gPlayer[0].pos.y; + sCoGrangaWork[GRANGA_TARGET_Z] = sCoGrangaWork[GRANGA_WORK_67] = gPlayer[0].trueZpos; - this->unk_04C += 4; - if (this->unk_04C > 100) { - this->unk_04C = 0; + this->animFrame += 4; + if (this->animFrame > 100) { + this->animFrame = 0; } - Animation_GetFrameData(&D_CO_602BC18, this->unk_04C, frameTable); + Animation_GetFrameData(&aCoGrangaWalkingAnim, this->animFrame, frameTable); Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp21C); if (this->timer_052 == 0) { @@ -890,39 +888,39 @@ void Corneria_Granga_Update(Granga* this) { this->swork[GRANGA_ATTACK_STATE] = GRANGA_ATTACK_PLASMA; } - Corneria_Granga_DecideNextAction(this); + Corneria_CoGranga_DecideNextAction(this); break; - case GRANGA_STATE_4: - sCoGrangaWork[GRANGA_WORK_17] = gPlayer[0].pos.x; - sCoGrangaWork[GRANGA_WORK_18] = gPlayer[0].pos.y; - sCoGrangaWork[GRANGA_WORK_19] = gPlayer[0].trueZpos; + case GRANGA_FORWARD: + sCoGrangaWork[GRANGA_TARGET_X] = gPlayer[0].pos.x; + sCoGrangaWork[GRANGA_TARGET_Y] = gPlayer[0].pos.y; + sCoGrangaWork[GRANGA_TARGET_Z] = gPlayer[0].trueZpos; - this->unk_04C += 4; - if (this->unk_04C > 100) { - this->unk_04C = 0; + this->animFrame += 4; + if (this->animFrame > 100) { + this->animFrame = 0; } - Animation_GetFrameData(&D_CO_602BC18, this->unk_04C, frameTable); + Animation_GetFrameData(&aCoGrangaWalkingAnim, this->animFrame, frameTable); Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp78, &sp21C); - Corneria_Granga_DecideNextAction(this); + Corneria_CoGranga_DecideNextAction(this); break; - case GRANGA_STATE_5: - case GRANGA_STATE_6: + case GRANGA_FALL_TO_LEFT: + case GRANGA_FALL_TO_RIGHT: this->drawShadow = false; gGroundClipMode = 1; if ((gGameFrameCount % 8) == 0) { - sCoGrangaWork[GRANGA_WORK_17] = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(2000.0f); - sCoGrangaWork[GRANGA_WORK_18] = gPlayer[0].pos.y; - sCoGrangaWork[GRANGA_WORK_19] = gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(2000.0f); + sCoGrangaWork[GRANGA_TARGET_X] = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(2000.0f); + sCoGrangaWork[GRANGA_TARGET_Y] = gPlayer[0].pos.y; + sCoGrangaWork[GRANGA_TARGET_Z] = gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(2000.0f); } this->fwork[GRANGA_FWK_12] += 0.05f; - if (this->state == GRANGA_STATE_6) { + if (this->state == GRANGA_FALL_TO_RIGHT) { this->obj.rot.z += this->fwork[GRANGA_FWK_12]; if (this->obj.rot.z > 60.0f) { this->obj.rot.z = 60.0f; @@ -937,7 +935,7 @@ void Corneria_Granga_Update(Granga* this) { } } this->obj.rot.x = this->obj.rot.z; - } else { // (this->state == GRANGA_STATE_5) + } else { // (this->state == GRANGA_FALL_TO_LEFT) this->obj.rot.z -= this->fwork[GRANGA_FWK_12]; if (this->obj.rot.z < -60.0f) { this->obj.rot.z = -60.0f; @@ -958,9 +956,9 @@ void Corneria_Granga_Update(Granga* this) { this->timer_050 = 60; - objId = Corneria_Granga_ChooseMissileTarget(this); + objId = Corneria_CoGranga_ChooseMissileTarget(this); if (objId != 0) { - Corneria_Boss_SpawnMissile(sCoGrangaWork[GRANGA_WORK_62], sCoGrangaWork[GRANGA_WORK_63], + Corneria_BossMissile_Spawn(sCoGrangaWork[GRANGA_WORK_62], sCoGrangaWork[GRANGA_WORK_63], sCoGrangaWork[GRANGA_WORK_64], 65.0f, 270.0f, 0.0f, 0, 0, objId); } } @@ -968,14 +966,14 @@ void Corneria_Granga_Update(Granga* this) { this->yOffset = SIN_DEG(this->obj.rot.z) * 30.0f; if ((gGameFrameCount % 16) == 0) { - this->unk_04C = RAND_INT(100.0f); + this->animFrame = RAND_INT(100.0f); } - Animation_GetFrameData(&D_CO_602BC18, this->unk_04C, frameTable); + Animation_GetFrameData(&aCoGrangaWalkingAnim, this->animFrame, frameTable); this->fwork[GRANGA_FWK_14] = 0.03f; break; - case GRANGA_STATE_7: + case GRANGA_EXPLODE: if (this->swork[GRANGA_SWK_32]) { this->fwork[GRANGA_FWK_12] += 0.05f; this->obj.rot.x += this->fwork[GRANGA_FWK_12]; @@ -1000,14 +998,14 @@ void Corneria_Granga_Update(Granga* this) { } } - func_effect_8007A568(sCoGrangaWork[GRANGA_WORK_62], sCoGrangaWork[GRANGA_WORK_63] - 100.0f, - sCoGrangaWork[GRANGA_WORK_64], 40.0f); + Effect_Effect383_Spawn(sCoGrangaWork[GRANGA_WORK_62], sCoGrangaWork[GRANGA_WORK_63] - 100.0f, + sCoGrangaWork[GRANGA_WORK_64], 40.0f); func_effect_8007D0E0(sCoGrangaWork[GRANGA_WORK_62], sCoGrangaWork[GRANGA_WORK_63] - 100.0f, sCoGrangaWork[GRANGA_WORK_64], 30.0f); func_enmy_80062B60(sCoGrangaWork[GRANGA_WORK_62], sCoGrangaWork[64], 0, 120.0f); gCameraShake = 25; - gShowBossHealth = 0; + gShowBossHealth = false; for (sp218 = 0; sp218 < 100; sp218++) { func_effect_80079618(sCoGrangaWork[GRANGA_WORK_62] + RAND_FLOAT_CENTERED(600.0f), @@ -1051,39 +1049,39 @@ void Corneria_Granga_Update(Granga* this) { if (this->timer_050 == 0) { Object_Kill(&this->obj, this->sfxSource); } - Animation_GetFrameData(&D_CO_602BC18, 0, frameTable); + Animation_GetFrameData(&aCoGrangaWalkingAnim, 0, frameTable); break; default: - Animation_GetFrameData(&D_CO_602C0D0, this->unk_04C, frameTable); + Animation_GetFrameData(&aCoGrangaStationaryAnim, this->animFrame, frameTable); break; } Math_SmoothStepToF(&this->vel.x, sp21C.x, 0.3f, 5.0f, 0.0f); Math_SmoothStepToF(&this->vel.z, sp21C.z, 0.3f, 5.0f, 0.0f); - Corneria_Granga_Attack(this); + Corneria_CoGranga_Attack(this); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, 19, this->fwork[GRANGA_FWK_14], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[GRANGA_FWK_14], 1.0f, 1.0f, 0.01f, 0.0f); - if (this->state < GRANGA_STATE_5) { + if (this->state < GRANGA_FALL_TO_LEFT) { if (((fabsf(this->obj.pos.x) > 4000.0f) || (fabsf(this->obj.pos.z) > 4000.0f)) && - (this->state != GRANGA_STATE_4)) { - this->state = GRANGA_STATE_4; + (this->state != GRANGA_FORWARD)) { + this->state = GRANGA_FORWARD; this->timer_050 = 150; sCoGrangaWork[GRANGA_WORK_66] = 0.0f; sCoGrangaWork[GRANGA_WORK_67] = 0.0f; this->swork[GRANGA_NEXT_STATE] = GRANGA_STATIONARY; } - if ((this->state != GRANGA_STATIONARY) && ((this->unk_04C == 0) || (this->unk_04C == 52))) { + if ((this->state != GRANGA_STATIONARY) && ((this->animFrame == 0) || (this->animFrame == 52))) { AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK, this->sfxSource, 4); } if (gPlayer[0].somersault && (this->state != GRANGA_STATIONARY)) { this->state = GRANGA_STATIONARY; - this->swork[GRANGA_NEXT_STATE] = GRANGA_STATE_1; + this->swork[GRANGA_NEXT_STATE] = GRANGA_FORWARD_MISSILE; this->timer_050 = 100; this->fwork[GRANGA_FWK_14] = 0.0f; } @@ -1091,8 +1089,8 @@ void Corneria_Granga_Update(Granga* this) { } } -bool Corneria_Granga_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Granga* boss = (Granga*) data; +bool Corneria_CoGranga_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { + CoGranga* boss = (CoGranga*) data; if (boss->swork[limbIndex] == DMG_DESTROYED) { *dList = NULL; @@ -1166,7 +1164,7 @@ bool Corneria_Granga_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Ve return false; } -void Corneria_Granga_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { +void Corneria_CoGranga_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { s32 pad; Vec3f sp80 = { 0.0f, 0.0f, 0.0f }; Vec3f sp74; @@ -1244,16 +1242,16 @@ void Corneria_Granga_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { } } -void Corneria_Granga_Draw(Granga* this) { +void Corneria_CoGranga_Draw(CoGranga* this) { Matrix_Translate(gCalcMatrix, 0.0f, 700.0f, 0.0f, MTXF_APPLY); - Animation_DrawSkeleton(2, D_CO_602BE64, this->vwork, Corneria_Granga_OverrideLimbDraw, Corneria_Granga_PostLimbDraw, - this, gCalcMatrix); + Animation_DrawSkeleton(2, D_CO_602BE64, this->vwork, Corneria_CoGranga_OverrideLimbDraw, + Corneria_CoGranga_PostLimbDraw, this, gCalcMatrix); Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); } -bool Corneria_Garuda_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Corneria_Garuda_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + Actor* actor = (Actor*) thisx; if (limbIndex == 1) { rot->x += actor->fwork[GRANGA_FWK_01]; @@ -1264,7 +1262,7 @@ bool Corneria_Garuda_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Ve return false; } -s32 Corneria_Garuda_CheckCollision(CoGaruda1* this) { +s32 Corneria_CoGaruda1_CheckCollision(CoGaruda1* this) { s32 pad[2]; s32 i; s32 collision; @@ -1295,8 +1293,8 @@ void Corneria_Garuda_HandleDamage(Actor* this) { if (this->dmgPart == 0) { AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 0.1f, 20); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.1f, 20); this->timer_0C6 = 15; this->health -= this->damage; @@ -1315,8 +1313,8 @@ void Corneria_Garuda_HandleDamage(Actor* this) { func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.y + 200.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z + 50.0f + RAND_FLOAT(50.0f), 3.0f); - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 0.1f, 10); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.1f, 10); } } @@ -1346,7 +1344,7 @@ void Corneria_CoGaruda1_Update(CoGaruda1* this) { this->fwork[0] = 10.0f; } - this->iwork[0] = Corneria_Garuda_CheckCollision(this); + this->iwork[0] = Corneria_CoGaruda1_CheckCollision(this); if (this->iwork[0] != 0) { this->state++; } @@ -1372,7 +1370,7 @@ void Corneria_CoGaruda1_Update(CoGaruda1* this) { } } -void Corneria_IBeam_Init(Actor* this) { +void Corneria_CoIBeam_Init(CoGaruda3* this) { s32 i; for (i = 0; i < ARRAY_COUNT(gScenery); i++) { @@ -1436,10 +1434,10 @@ void Corneria_CoGaruda2_Update(CoGaruda2* this) { } if (this->animFrame == (Animation_GetFrameCount(&D_CO_602AA04) - this->iwork[2])) { this->iwork[1] = 1; - scenery->state = 1; + scenery->state = 1; // I beam rotating src.x = 0.0f; src.y = 0.0f; - src.z = 30.0f; + src.z = 30.0f; // Ibeam flying towards the camera. Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); scenery->vel.x = dest.x; scenery->vel.y = dest.y; @@ -1523,8 +1521,8 @@ void Corneria_CoGarudaDestroy_Update(CoGarudaDestroy* this) { func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.y + 200.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z + 50.0f + RAND_FLOAT(50.0f), 3.0f); - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z, this->vel.x, - this->vel.y, this->vel.z, 0.1f, 10); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z, this->vel.x, + this->vel.y, this->vel.z, 0.1f, 10); AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, this->sfxSource, 4); } @@ -1550,16 +1548,16 @@ void Corneria_CoGarudaDestroy_Update(CoGarudaDestroy* this) { } if (this->timer_0BC == 8) { - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z + 50.0f, 0.0f, 0.0f, - 0.0f, 5.0f, 30); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 200.0f, this->obj.pos.z + 50.0f, 0.0f, 0.0f, 0.0f, + 5.0f, 30); AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); } break; case 101: if ((this->timer_0BE != 0) && ((gGameFrameCount % 2) == 0)) { - func_effect_8007797C(this->obj.pos.x, this->obj.pos.y + 150.0f, this->obj.pos.z, 0.0f, 10.0f, 0.0f, - 3.0f); + Effect_FireSmoke_Spawn2(this->obj.pos.x, this->obj.pos.y + 150.0f, this->obj.pos.z, 0.0f, 10.0f, 0.0f, + 3.0f); } break; } @@ -1569,18 +1567,18 @@ void Corneria_CoGaruda1_Draw(CoGaruda1* this) { Animation_DrawSkeleton(3, aCoGarudaSkel, this->vwork, Corneria_Garuda_OverrideLimbDraw, NULL, this, gCalcMatrix); } -void Corneria_Garuda_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +void Corneria_Garuda_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + Actor* this = (Actor*) thisx; Vec3f src = { 120.0f, 0.0f, 0.0f }; Vec3f dest; if (limbIndex == 1) { Matrix_MultVec3f(gCalcMatrix, &src, &dest); - actor->fwork[2] = dest.x; - actor->fwork[6] = dest.y; - actor->fwork[10] = dest.z; - if (actor->iwork[1] == 0) { - gScenery[actor->iwork[0]].obj.rot.x = -rot->y; + this->fwork[2] = dest.x; + this->fwork[6] = dest.y; + this->fwork[10] = dest.z; + if (this->iwork[1] == 0) { + gScenery[this->iwork[0]].obj.rot.x = -rot->y; } } } @@ -1594,17 +1592,17 @@ void Corneria_CoGaruda3_Draw(CoGaruda3* this) { Corneria_Garuda_PostLimbDraw, this, gCalcMatrix); } -bool Corneria_CoGarudaDestroy_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Corneria_CoGarudaDestroy_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + CoGarudaDestroy* this = (CoGarudaDestroy*) thisx; - if ((actor->state == 101) && (limbIndex != 8)) { + if ((this->state == 101) && (limbIndex != 8)) { *dList = NULL; } return false; } -void Corneria_CoGarudaDestroy_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { - CoGarudaDestroy* actor = (CoGarudaDestroy*) data; +void Corneria_CoGarudaDestroy_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + CoGarudaDestroy* this = (CoGarudaDestroy*) thisx; Vec3f src = { 0.0f, 0.0f, 0.0f }; Vec3f dest; @@ -1612,27 +1610,27 @@ void Corneria_CoGarudaDestroy_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data switch (limbIndex) { case 1: - actor->fwork[2] = dest.x; - actor->fwork[6] = dest.y; - actor->fwork[10] = dest.z; + this->fwork[2] = dest.x; + this->fwork[6] = dest.y; + this->fwork[10] = dest.z; break; case 2: - actor->fwork[3] = dest.x; - actor->fwork[7] = dest.y; - actor->fwork[11] = dest.z; + this->fwork[3] = dest.x; + this->fwork[7] = dest.y; + this->fwork[11] = dest.z; break; case 3: - actor->fwork[4] = dest.x; - actor->fwork[8] = dest.y; - actor->fwork[12] = dest.z; + this->fwork[4] = dest.x; + this->fwork[8] = dest.y; + this->fwork[12] = dest.z; break; case 4: - actor->fwork[5] = dest.x; - actor->fwork[9] = dest.y; - actor->fwork[13] = dest.z; + this->fwork[5] = dest.x; + this->fwork[9] = dest.y; + this->fwork[13] = dest.z; break; } } @@ -1642,19 +1640,19 @@ void Corneria_CoGarudaDestroy_Draw(CoGarudaDestroy* this) { Corneria_CoGarudaDestroy_PostLimbDraw, this, gCalcMatrix); } -void Corneria_Carrier_ChooseMissileTarget(Carrier* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, s32 arg5, - s32 eventType) { +void Corneria_CoCarrier_ChooseMissileTarget(CoCarrier* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, s32 arg5, + s32 eventType) { ObjectId objId = OBJ_MISSILE_SEEK_PLAYER; - if (Hud_MissileSeekModeCheck(0) < 4) { + if (ActorMissileSeek_ModeCheck(0) < 4) { objId = OBJ_MISSILE_SEEK_TEAM; } - Corneria_Boss_SpawnMissile(this->obj.pos.x + xPos, this->obj.pos.y + yPos, this->obj.pos.z + zPos, arg4, + Corneria_BossMissile_Spawn(this->obj.pos.x + xPos, this->obj.pos.y + yPos, this->obj.pos.z + zPos, arg4, this->obj.rot.x, this->obj.rot.y, arg5, eventType, objId); } -void Corneria_Carrier_Init(Carrier* this) { +void Corneria_CoCarrier_Init(CoCarrier* this) { s32 i; s16 timer; @@ -1670,9 +1668,9 @@ void Corneria_Carrier_Init(Carrier* this) { this->timer_05A = 30000; this->obj.pos.z = (gPlayer[0].cam.eye.z - gPathProgress) - 2000.0f; AUDIO_PLAY_SFX(NA_SE_A_CARRIER_ENGINE, this->sfxSource, 4); - D_i1_8019B6D0 = false; + sFightCarrier = false; } else { - D_i1_8019B6D0 = true; + sFightCarrier = true; this->obj.rot.y = 180.0f; this->fwork[6] = 800.0f; this->obj.pos.z = gPlayer[0].trueZpos + 2000.0f; @@ -1685,11 +1683,11 @@ void Corneria_Carrier_Init(Carrier* this) { timer = this->timer_05A; - // Bosses OBJ_BOSS_294 to OBJ_BOSS_296 - for (i = 1; i < ARRAY_COUNT(gBosses); i++) { + // OBJ_BOSS_CO_CARRIER_LEFT to OBJ_BOSS_CO_CARRIER_BOTTOM + for (i = CARRIER_LEFT; i < ARRAY_COUNT(gBosses); i++) { Boss_Initialize(&gBosses[i]); gBosses[i].obj.status = OBJ_INIT; - gBosses[i].obj.id = (i - 1) + OBJ_BOSS_294; + gBosses[i].obj.id = (i - 1) + OBJ_BOSS_CO_CARRIER_LEFT; gBosses[i].obj.pos.x = this->obj.pos.x; gBosses[i].obj.pos.y = this->obj.pos.y; gBosses[i].obj.pos.z = this->obj.pos.z; @@ -1697,15 +1695,15 @@ void Corneria_Carrier_Init(Carrier* this) { gBosses[i].drawShadow = true; gBosses[i].timer_05A = timer; Object_SetInfo(&gBosses[i].info, gBosses[i].obj.id); - gBosses[CARRIER_3].drawShadow = false; + gBosses[CARRIER_BOTTOM].drawShadow = false; } } -void Corneria_8018C0B0(Boss* this) { - func_effect_8007D9DC(this->obj.pos.x, gGroundHeight + 2.0f, this->obj.pos.z, 5.0f, 100.0f, 0); - func_effect_8007D9DC(this->obj.pos.x, gGroundHeight + 2.0f, this->obj.pos.z, 5.0f, 100.0f, 5); - func_effect_8007D9DC(this->obj.pos.x, gGroundHeight + 2.0f, this->obj.pos.z, 5.0f, 100.0f, 10); - func_effect_8007ADF4(this->obj.pos.x, gGroundHeight, this->obj.pos.z, 1.0f, 10.0f); +void Corneria_CoCarrier_WaterSplash(CoCarrier* this) { + Effect_Effect367_Spawn(this->obj.pos.x, gGroundHeight + 2.0f, this->obj.pos.z, 5.0f, 100.0f, 0); + Effect_Effect367_Spawn(this->obj.pos.x, gGroundHeight + 2.0f, this->obj.pos.z, 5.0f, 100.0f, 5); + Effect_Effect367_Spawn(this->obj.pos.x, gGroundHeight + 2.0f, this->obj.pos.z, 5.0f, 100.0f, 10); + Effect_Effect372_Spawn2(this->obj.pos.x, gGroundHeight, this->obj.pos.z, 1.0f, 10.0f); } static Vec3f D_i1_801998CC = { 442.0f, 5.0f, 360.0f }; @@ -1734,7 +1732,7 @@ static Vec3f D_i1_8019995C[20] = { static s32 D_i1_80199A4C[4] = { 150, 200, 150, 200 }; static f32 D_i1_80199A5C[4] = { -225.0f, 0.0f, 225.0f, 0.0f }; -void Corneria_Carrier_Update(Carrier* this) { +void Corneria_CoCarrier_Update(CoCarrier* this) { Vec3f sp84[33]; Vec3f src; Vec3f dest; @@ -1754,7 +1752,7 @@ void Corneria_Carrier_Update(Carrier* this) { Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); - if (!D_i1_8019B6D0) { + if (!sFightCarrier) { if (this->obj.pos.x > 6000.0f) { Object_Kill(&this->obj, this->sfxSource); for (i = 1; i < ARRAY_COUNT(gBosses); i++) { @@ -1779,12 +1777,12 @@ void Corneria_Carrier_Update(Carrier* this) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199914[0], &sp84[6]); Matrix_MultVec3f(gCalcMatrix, &D_i1_80199914[1], &sp84[7]); Matrix_MultVec3f(gCalcMatrix, &D_i1_8019992C, &sp84[8]); - func_effect_8007BC7C(sp84[6].x + this->obj.pos.x, sp84[6].y + this->obj.pos.y, sp84[6].z + this->obj.pos.z, - 20.0f); - func_effect_8007BC7C(sp84[7].x + this->obj.pos.x, sp84[7].y + this->obj.pos.y, sp84[7].z + this->obj.pos.z, - 10.0f); - func_effect_8007BC7C(sp84[8].x + this->obj.pos.x, sp84[8].y + this->obj.pos.y, sp84[8].z + this->obj.pos.z, - 10.0f); + Effect_Effect362_Spawn(sp84[6].x + this->obj.pos.x, sp84[6].y + this->obj.pos.y, + sp84[6].z + this->obj.pos.z, 20.0f); + Effect_Effect362_Spawn(sp84[7].x + this->obj.pos.x, sp84[7].y + this->obj.pos.y, + sp84[7].z + this->obj.pos.z, 10.0f); + Effect_Effect362_Spawn(sp84[8].x + this->obj.pos.x, sp84[8].y + this->obj.pos.y, + sp84[8].z + this->obj.pos.z, 10.0f); } } else { if ((gBossFrameCount > 380) && (gBossFrameCount < 430)) { @@ -1812,15 +1810,16 @@ void Corneria_Carrier_Update(Carrier* this) { Matrix_MultVec3f(gCalcMatrix, &D_i1_8019995C[j], &sp84[k]); func_effect_8007D0E0(sp84[k].x + this->obj.pos.x, sp84[k].y + this->obj.pos.y, sp84[k].z + this->obj.pos.z, this->fwork[17]); - func_effect_8007C120(sp84[k].x + this->obj.pos.x, sp84[k].y + this->obj.pos.y, - sp84[k].z + this->obj.pos.z, this->vel.x, this->vel.y, this->vel.z, 0.1f, 7); + Effect_Effect390_Spawn(sp84[k].x + this->obj.pos.x, sp84[k].y + this->obj.pos.y, + sp84[k].z + this->obj.pos.z, this->vel.x, this->vel.y, this->vel.z, 0.1f, 7); } } } if (this->dmgType != DMG_NONE) { this->dmgType = DMG_NONE; - if ((gBosses[CARRIER_1].state != 0) && (gBosses[CARRIER_2].state != 0) && (gBosses[CARRIER_3].state != 0)) { + if ((gBosses[CARRIER_LEFT].state != 0) && (gBosses[CARRIER_UPPER].state != 0) && + (gBosses[CARRIER_BOTTOM].state != 0)) { if (this->health >= 2) { this->timer_05C = 15; this->health -= this->damage; @@ -1863,32 +1862,33 @@ void Corneria_Carrier_Update(Carrier* this) { } } - if ((gBosses[CARRIER_1].state != 0) && ((gGameFrameCount % 16) == 0)) { + if ((gBosses[CARRIER_LEFT].state != 0) && ((gGameFrameCount % 16) == 0)) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199908, &sp84[5]); - func_effect_8007D0E0(gBosses[CARRIER_0].obj.pos.x + sp84[5].x, gBosses[CARRIER_0].obj.pos.y + sp84[5].y, - gBosses[CARRIER_0].obj.pos.z + sp84[5].z, 5.0f); + func_effect_8007D0E0(gBosses[CARRIER].obj.pos.x + sp84[5].x, gBosses[CARRIER].obj.pos.y + sp84[5].y, + gBosses[CARRIER].obj.pos.z + sp84[5].z, 5.0f); } - if (gBosses[CARRIER_2].state != 0) { - gBosses[CARRIER_3].drawShadow = true; - if (gBosses[CARRIER_3].state != 0) { + if (gBosses[CARRIER_UPPER].state != 0) { + gBosses[CARRIER_BOTTOM].drawShadow = true; + if (gBosses[CARRIER_BOTTOM].state != 0) { if ((gGameFrameCount % 8) == 0) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199950, &sp84[11]); - func_effect_8007D0E0(gBosses[CARRIER_0].obj.pos.x + sp84[11].x, - gBosses[CARRIER_0].obj.pos.y + sp84[11].y, - gBosses[CARRIER_0].obj.pos.z + sp84[11].z, 7.0f); + func_effect_8007D0E0(gBosses[CARRIER].obj.pos.x + sp84[11].x, + gBosses[CARRIER].obj.pos.y + sp84[11].y, + gBosses[CARRIER].obj.pos.z + sp84[11].z, 7.0f); } } else if ((gGameFrameCount % 16) == 0) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199938, &sp84[9]); - func_effect_8007D0E0(gBosses[CARRIER_0].obj.pos.x + sp84[9].x, gBosses[CARRIER_0].obj.pos.y + sp84[9].y, - gBosses[CARRIER_0].obj.pos.z + sp84[9].z, 5.0f); + func_effect_8007D0E0(gBosses[CARRIER].obj.pos.x + sp84[9].x, gBosses[CARRIER].obj.pos.y + sp84[9].y, + gBosses[CARRIER].obj.pos.z + sp84[9].z, 5.0f); } } - if ((gBosses[CARRIER_3].state != 0) && (gBosses[CARRIER_2].state == 0) && ((gGameFrameCount % 16) == 0)) { + if ((gBosses[CARRIER_BOTTOM].state != 0) && (gBosses[CARRIER_UPPER].state == 0) && + ((gGameFrameCount % 16) == 0)) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199944, &sp84[10]); - func_effect_8007D0E0(gBosses[CARRIER_0].obj.pos.x + sp84[10].x, gBosses[CARRIER_0].obj.pos.y + sp84[10].y, - gBosses[CARRIER_0].obj.pos.z + sp84[10].z, 5.0f); + func_effect_8007D0E0(gBosses[CARRIER].obj.pos.x + sp84[10].x, gBosses[CARRIER].obj.pos.y + sp84[10].y, + gBosses[CARRIER].obj.pos.z + sp84[10].z, 5.0f); } if (((this->state == 1) || (this->state == 2)) && ((gGameFrameCount % 8) == 0)) { @@ -1896,12 +1896,12 @@ void Corneria_Carrier_Update(Carrier* this) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199914[1], &sp84[7]); Matrix_MultVec3f(gCalcMatrix, &D_i1_8019992C, &sp84[8]); - func_effect_8007BC7C(sp84[6].x + this->obj.pos.x, sp84[6].y + this->obj.pos.y, sp84[6].z + this->obj.pos.z, - 20.0f); - func_effect_8007BC7C(sp84[7].x + this->obj.pos.x, sp84[7].y + this->obj.pos.y, sp84[7].z + this->obj.pos.z, - 10.0f); - func_effect_8007BC7C(sp84[8].x + this->obj.pos.x, sp84[8].y + this->obj.pos.y, sp84[8].z + this->obj.pos.z, - 10.0f); + Effect_Effect362_Spawn(sp84[6].x + this->obj.pos.x, sp84[6].y + this->obj.pos.y, + sp84[6].z + this->obj.pos.z, 20.0f); + Effect_Effect362_Spawn(sp84[7].x + this->obj.pos.x, sp84[7].y + this->obj.pos.y, + sp84[7].z + this->obj.pos.z, 10.0f); + Effect_Effect362_Spawn(sp84[8].x + this->obj.pos.x, sp84[8].y + this->obj.pos.y, + sp84[8].z + this->obj.pos.z, 10.0f); } if (this->timer_052 != 0) { @@ -1909,7 +1909,7 @@ void Corneria_Carrier_Update(Carrier* this) { } switch (this->state) { - case 0: + case CARRIER_STATE_0: this->fwork[3] = gPlayer[0].trueZpos + 1500.0f; if (this->timer_050 == 350) { @@ -1936,7 +1936,7 @@ void Corneria_Carrier_Update(Carrier* this) { } break; - case 1: + case CARRIER_STATE_1: if (this->timer_050 == 0) { this->state = 2; this->fwork[8] = 0.0f; @@ -1945,7 +1945,7 @@ void Corneria_Carrier_Update(Carrier* this) { } break; - case 2: + case CARRIER_STATE_2: if (this->timer_050 == 0) { this->state = 3; this->swork[0] = 4; @@ -1957,7 +1957,7 @@ void Corneria_Carrier_Update(Carrier* this) { } break; - case 3: + case CARRIER_STATE_3: this->fwork[12] = 1.5f; this->fwork[11] = 0.0f; this->fwork[9] = 0.0f; @@ -1972,21 +1972,22 @@ void Corneria_Carrier_Update(Carrier* this) { } break; - case 4: + case CARRIER_STATE_4: this->fwork[11] = 120.0f; this->fwork[13] = 340.0f; - if ((this->timer_050 == 0) || (gBosses[CARRIER_1].state != 0)) { + if ((this->timer_050 == 0) || (gBosses[CARRIER_LEFT].state != 0)) { this->state = 3; this->swork[0] = 5; this->timer_050 = 20; this->fwork[8] = 0.0f; - if (gBosses[CARRIER_1].state == 0) { + if (gBosses[CARRIER_LEFT].state == 0) { AUDIO_PLAY_SFX(NA_SE_EN_HATCH, this->sfxSource, 4); } - if ((this->swork[5] == 0) && ((gBosses[CARRIER_2].state == 0) || (gBosses[CARRIER_3].state == 0))) { + if ((this->swork[5] == 0) && + ((gBosses[CARRIER_UPPER].state == 0) || (gBosses[CARRIER_BOTTOM].state == 0))) { Radio_PlayMessage(gMsg_ID_2292, RCID_BOSS_CORNERIA2); } @@ -1995,30 +1996,31 @@ void Corneria_Carrier_Update(Carrier* this) { } else if ((this->fwork[2] > 60.0f) && (this->timer_054 == 0)) { this->timer_054 = 20; - Corneria_Carrier_ChooseMissileTarget(this, sp84[0].x, sp84[0].y, sp84[0].z, 30.0f, 0, 1); + Corneria_CoCarrier_ChooseMissileTarget(this, sp84[0].x, sp84[0].y, sp84[0].z, 30.0f, 0, 1); } break; - case 5: + case CARRIER_STATE_5: this->fwork[9] = 120.0f; this->fwork[10] = 120.0f; this->fwork[13] = 20.0f; - if ((this->fwork[0] > 60.0f) && (gBosses[CARRIER_2].state == 0) && (this->swork[1] == 0)) { - Corneria_Carrier_ChooseMissileTarget(this, sp84[1].x, sp84[1].y + 50.0f, sp84[1].z, 45.0f, 0, 0); + if ((this->fwork[0] > 60.0f) && (gBosses[CARRIER_UPPER].state == 0) && (this->swork[1] == 0)) { + Corneria_CoCarrier_ChooseMissileTarget(this, sp84[1].x, sp84[1].y + 50.0f, sp84[1].z, 45.0f, 0, 0); AUDIO_PLAY_SFX(NA_SE_EN_BARREL_SHOT, this->sfxSource, 4); - Corneria_Carrier_ChooseMissileTarget(this, sp84[1].x, sp84[1].y - 50.0f, sp84[1].z, 40.0f, 0, 0); + Corneria_CoCarrier_ChooseMissileTarget(this, sp84[1].x, sp84[1].y - 50.0f, sp84[1].z, 40.0f, 0, 0); this->swork[1] = 1; } - if ((this->fwork[1] > 60.0f) && (gBosses[CARRIER_3].state == 0) && (this->swork[2] == 0)) { - Corneria_Carrier_ChooseMissileTarget(this, sp84[2].x, sp84[2].y + 50.0f, sp84[2].z, 35.0f, 0, 0); + if ((this->fwork[1] > 60.0f) && (gBosses[CARRIER_BOTTOM].state == 0) && (this->swork[2] == 0)) { + Corneria_CoCarrier_ChooseMissileTarget(this, sp84[2].x, sp84[2].y + 50.0f, sp84[2].z, 35.0f, 0, 0); AUDIO_PLAY_SFX(NA_SE_EN_BARREL_SHOT, this->sfxSource, 4); - Corneria_Carrier_ChooseMissileTarget(this, sp84[2].x, sp84[2].y - 50.0f, sp84[2].z, 30.0f, 0, 0); + Corneria_CoCarrier_ChooseMissileTarget(this, sp84[2].x, sp84[2].y - 50.0f, sp84[2].z, 30.0f, 0, 0); this->swork[2] = 1; } - if ((this->timer_050 == 0) || ((gBosses[CARRIER_3].state != 0) && (gBosses[CARRIER_2].state != 0))) { + if ((this->timer_050 == 0) || + ((gBosses[CARRIER_BOTTOM].state != 0) && (gBosses[CARRIER_UPPER].state != 0))) { this->state = 3; this->swork[0] = 4; this->timer_050 = 70; @@ -2026,13 +2028,13 @@ void Corneria_Carrier_Update(Carrier* this) { this->swork[2] = 0; this->fwork[8] = 0.0f; - if ((this->swork[4] == 0) && (gBosses[CARRIER_1].state == 0)) { + if ((this->swork[4] == 0) && (gBosses[CARRIER_LEFT].state == 0)) { Radio_PlayMessage(gMsg_ID_2291, RCID_BOSS_CORNERIA2); } if ((this->swork[4] == 2) && (this->swork[7] == 0) && - ((gBosses[CARRIER_3].state == 0) || (gBosses[CARRIER_2].state == 0) || - (gBosses[CARRIER_1].state == 0))) { + ((gBosses[CARRIER_BOTTOM].state == 0) || (gBosses[CARRIER_UPPER].state == 0) || + (gBosses[CARRIER_LEFT].state == 0))) { Radio_PlayMessage(gMsg_ID_2299, RCID_PEPPY); this->swork[7]++; } @@ -2040,13 +2042,13 @@ void Corneria_Carrier_Update(Carrier* this) { this->swork[4]++; this->swork[4] &= 3; - if ((gBosses[CARRIER_3].state == 0) && (gBosses[CARRIER_2].state == 0)) { + if ((gBosses[CARRIER_BOTTOM].state == 0) && (gBosses[CARRIER_UPPER].state == 0)) { AUDIO_PLAY_SFX(NA_SE_EN_HATCH, this->sfxSource, 4); } } break; - case 6: + case CARRIER_STATE_6: Math_SmoothStepToAngle(&this->obj.rot.y, this->fwork[13], 0.1f, 5.0f, 0.01f); Math_SmoothStepToAngle(&this->obj.rot.z, this->fwork[14], 0.1f, 5.0f, 0.01f); @@ -2058,7 +2060,7 @@ void Corneria_Carrier_Update(Carrier* this) { } break; - case 7: + case CARRIER_STATE_7: this->fwork[3] = (gPlayer[0].cam.eye.z - gPathProgress) - 4000.0f; Math_SmoothStepToF(&this->obj.pos.z, this->fwork[3], 0.1f, 15.0f, 0.00001f); @@ -2089,7 +2091,6 @@ void Corneria_Carrier_Update(Carrier* this) { if ((gGameFrameCount % 8) == 0) { if (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) > 700.0f) { - Matrix_MultVec3f(gCalcMatrix, &D_i1_801998F0[0], &sp84[3]); for (effect398 = &gEffects[0], i = 0; i < ARRAY_COUNT(gEffects); i++, effect398++) { @@ -2160,7 +2161,7 @@ void Corneria_Carrier_Update(Carrier* this) { } break; - case 8: + case CARRIER_STATE_8: D_ctx_801779A8[0] = 20.0f; if ((gGameFrameCount % 32) == 0) { @@ -2218,7 +2219,7 @@ void Corneria_Carrier_Update(Carrier* this) { } break; - case 9: + case CARRIER_STATE_9: if ((gGameFrameCount % 16) == 0) { for (i = 0; i < 10; i++) { func_effect_80079618(RAND_FLOAT_CENTERED(300.0f) + this->obj.pos.x, this->obj.pos.y, @@ -2239,12 +2240,12 @@ void Corneria_Carrier_Update(Carrier* this) { this->vel.y = -10.0f; this->gravity = 0.0f; this->fwork[17] = 20.0f; - Corneria_8018C0B0(this); + Corneria_CoCarrier_WaterSplash(this); this->state = 10; } break; - case 10: + case CARRIER_EXPLODE: if ((gGameFrameCount % 8) == 0) { for (i = 0; i < 10; i++) { func_effect_80079618(RAND_FLOAT_CENTERED(300.0f) + this->obj.pos.x, this->obj.pos.y, @@ -2253,14 +2254,14 @@ void Corneria_Carrier_Update(Carrier* this) { } if (this->timer_050 == 0) { - func_effect_8007A568(this->obj.pos.x, this->obj.pos.y + 500.0f, this->obj.pos.z, 120.0f); + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y + 500.0f, this->obj.pos.z, 120.0f); Object_Kill(&this->obj, this->sfxSource); } break; } - temp_a0 = SEGMENTED_TO_VIRTUAL(D_CO_603E748); - temp_a1 = SEGMENTED_TO_VIRTUAL(D_CO_603E7C4); + temp_a0 = SEGMENTED_TO_VIRTUAL(aCoCarrierUpperHitbox); + temp_a1 = SEGMENTED_TO_VIRTUAL(aCoCarrierBottomHitbox); temp_a0[9] = -100000.0f; temp_a0[3] = 172.0f; temp_a1[9] = -100000.0f; @@ -2304,7 +2305,7 @@ void Corneria_Carrier_Update(Carrier* this) { static Vec3f D_i1_80199A6C = { -270.0f, 0.0f, 200.0f }; static Vec3f D_i1_80199A78 = { 440.0f, 0.0f, 0.0f }; -void Corneria_Boss294_Update(Boss294* this) { +void Corneria_CarrierLeft_Update(CoCarrierLeft* this) { Vec3f sp4C; Vec3f sp40; s32 i; @@ -2319,9 +2320,10 @@ void Corneria_Boss294_Update(Boss294* this) { this->timer_05C = 15; this->health -= this->damage; AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + if (this->health <= 0) { - gBosses[CARRIER_0].swork[8]--; - if (gBosses[CARRIER_0].swork[8] != 0) { + gBosses[CARRIER].swork[8]--; + if (gBosses[CARRIER].swork[8] != 0) { Radio_PlayMessage(gMsg_ID_15130, RCID_FALCO); } else { Radio_PlayMessage(gMsg_ID_7085, RCID_FALCO); @@ -2329,15 +2331,15 @@ void Corneria_Boss294_Update(Boss294* this) { this->info.cullDistance = 300.0f; - gBosses[CARRIER_0].fwork[14] = 25.0f; - gBosses[CARRIER_0].fwork[15] = 0.0f; + gBosses[CARRIER].fwork[14] = 25.0f; + gBosses[CARRIER].fwork[15] = 0.0f; AUDIO_PLAY_SFX(NA_SE_EN_PARTS_BROKEN, this->sfxSource, 4); - if (gBosses[CARRIER_0].swork[10] != 0) { - gBosses[CARRIER_0].swork[10]--; + if (gBosses[CARRIER].swork[10] != 0) { + gBosses[CARRIER].swork[10]--; } - gBosses[CARRIER_0].timer_056 = 30; + gBosses[CARRIER].timer_056 = 30; this->state = 1; Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A6C, &sp4C); @@ -2346,8 +2348,8 @@ void Corneria_Boss294_Update(Boss294* this) { this->obj.pos.z + sp4C.z, 1.0f); } - if ((gBosses[CARRIER_2].state == 1) && (gBosses[CARRIER_3].state == 1)) { - gBosses[CARRIER_0].fwork[14] = 335.0f; + if ((gBosses[CARRIER_UPPER].state == 1) && (gBosses[CARRIER_BOTTOM].state == 1)) { + gBosses[CARRIER].fwork[14] = 335.0f; } } } @@ -2356,9 +2358,9 @@ void Corneria_Boss294_Update(Boss294* this) { AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } - this->obj.rot.x = gBosses[CARRIER_0].obj.rot.x; - this->obj.rot.y = gBosses[CARRIER_0].obj.rot.y; - this->obj.rot.z = gBosses[CARRIER_0].obj.rot.z; + this->obj.rot.x = gBosses[CARRIER].obj.rot.x; + this->obj.rot.y = gBosses[CARRIER].obj.rot.y; + this->obj.rot.z = gBosses[CARRIER].obj.rot.z; Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); @@ -2366,16 +2368,16 @@ void Corneria_Boss294_Update(Boss294* this) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A78, &sp40); - this->obj.pos.x = gBosses[CARRIER_0].obj.pos.x + sp40.x; - this->obj.pos.y = gBosses[CARRIER_0].obj.pos.y + sp40.y; - this->obj.pos.z = gBosses[CARRIER_0].obj.pos.z + sp40.z; + this->obj.pos.x = gBosses[CARRIER].obj.pos.x + sp40.x; + this->obj.pos.y = gBosses[CARRIER].obj.pos.y + sp40.y; + this->obj.pos.z = gBosses[CARRIER].obj.pos.z + sp40.z; - this->fwork[2] = gBosses[CARRIER_0].fwork[2]; + this->fwork[2] = gBosses[CARRIER].fwork[2]; break; case 1: Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_NEW); - gBosses[CARRIER_0].fwork[15] += 0.5f; + gBosses[CARRIER].fwork[15] += 0.5f; if (((gGameFrameCount % 8) == 0) && (Rand_ZeroOne() < 0.5f)) { this->timer_05C = 4; @@ -2383,8 +2385,8 @@ void Corneria_Boss294_Update(Boss294* this) { if ((gGameFrameCount % 2) == 0) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A6C, &sp4C); - func_effect_8007C120(this->obj.pos.x + sp4C.x, this->obj.pos.y + sp4C.y, this->obj.pos.z + sp4C.z, - this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); + Effect_Effect390_Spawn(this->obj.pos.x + sp4C.x, this->obj.pos.y + sp4C.y, this->obj.pos.z + sp4C.z, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); } if (this->obj.pos.y < (gGroundHeight + 150.0f)) { @@ -2392,7 +2394,7 @@ void Corneria_Boss294_Update(Boss294* this) { this->vel.y = -5.0f; this->swork[0] = 1; this->gravity = 0.0f; - Corneria_8018C0B0(this); + Corneria_CoCarrier_WaterSplash(this); AUDIO_PLAY_SFX(NA_SE_OB_WATER_BOUND_M, this->sfxSource, 4); } } else { @@ -2406,7 +2408,7 @@ void Corneria_Boss294_Update(Boss294* this) { static Vec3f D_i1_80199A84 = { 20.0f, -90.0f, 0.0f }; static Vec3f D_i1_80199A90 = { -440.0f, 210.0f, 0.0f }; -void Corneria_Boss295_Update(Boss295* this) { +void Corneria_CarrierUpper_Update(CoCarrierUpper* this) { Vec3f sp4C; Vec3f sp40; s32 i; @@ -2424,9 +2426,9 @@ void Corneria_Boss295_Update(Boss295* this) { AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); if (this->health <= 0) { - gBosses[CARRIER_0].swork[8]--; + gBosses[CARRIER].swork[8]--; - if (gBosses[CARRIER_0].swork[8] != 0) { + if (gBosses[CARRIER].swork[8] != 0) { Radio_PlayMessage(gMsg_ID_15130, RCID_FALCO); } else { Radio_PlayMessage(gMsg_ID_7085, RCID_FALCO); @@ -2434,17 +2436,17 @@ void Corneria_Boss295_Update(Boss295* this) { this->info.cullDistance = 300.0f; - gBosses[CARRIER_0].fwork[15] = 0.0f; - gBosses[CARRIER_0].fwork[14] = 335.0f; + gBosses[CARRIER].fwork[15] = 0.0f; + gBosses[CARRIER].fwork[14] = 335.0f; this->health = 0; AUDIO_PLAY_SFX(NA_SE_EN_PARTS_BROKEN, this->sfxSource, 4); - if (gBosses[CARRIER_0].swork[10] != 0) { - gBosses[CARRIER_0].swork[10]--; + if (gBosses[CARRIER].swork[10] != 0) { + gBosses[CARRIER].swork[10]--; } - gBosses[CARRIER_0].timer_056 = 30; + gBosses[CARRIER].timer_056 = 30; this->state = 1; Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A84, &sp4C); @@ -2454,8 +2456,8 @@ void Corneria_Boss295_Update(Boss295* this) { this->obj.pos.z + sp4C.z, 1.0f); } - if (gBosses[CARRIER_1].state == 1) { - gBosses[CARRIER_0].fwork[14] = 25.0f; + if (gBosses[CARRIER_LEFT].state == 1) { + gBosses[CARRIER].fwork[14] = 25.0f; } } } @@ -2464,9 +2466,9 @@ void Corneria_Boss295_Update(Boss295* this) { AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } - this->obj.rot.x = gBosses[CARRIER_0].obj.rot.x; - this->obj.rot.y = gBosses[CARRIER_0].obj.rot.y; - this->obj.rot.z = gBosses[CARRIER_0].obj.rot.z; + this->obj.rot.x = gBosses[CARRIER].obj.rot.x; + this->obj.rot.y = gBosses[CARRIER].obj.rot.y; + this->obj.rot.z = gBosses[CARRIER].obj.rot.z; Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); @@ -2474,16 +2476,16 @@ void Corneria_Boss295_Update(Boss295* this) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A90, &sp40); - this->obj.pos.x = gBosses[CARRIER_0].obj.pos.x + sp40.x; - this->obj.pos.y = gBosses[CARRIER_0].obj.pos.y + sp40.y; - this->obj.pos.z = gBosses[CARRIER_0].obj.pos.z + sp40.z; + this->obj.pos.x = gBosses[CARRIER].obj.pos.x + sp40.x; + this->obj.pos.y = gBosses[CARRIER].obj.pos.y + sp40.y; + this->obj.pos.z = gBosses[CARRIER].obj.pos.z + sp40.z; - this->fwork[0] = gBosses[CARRIER_0].fwork[0]; + this->fwork[0] = gBosses[CARRIER].fwork[0]; break; case 1: Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_NEW); - gBosses[CARRIER_0].fwork[15] += 0.5f; + gBosses[CARRIER].fwork[15] += 0.5f; if (((gGameFrameCount % 8) == 0) && (Rand_ZeroOne() < 0.5f)) { this->timer_05C = 4; @@ -2491,8 +2493,8 @@ void Corneria_Boss295_Update(Boss295* this) { if ((gGameFrameCount % 2) == 0) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A84, &sp4C); - func_effect_8007C120(this->obj.pos.x + sp4C.x, this->obj.pos.y + sp4C.y, this->obj.pos.z + sp4C.z, - this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); + Effect_Effect390_Spawn(this->obj.pos.x + sp4C.x, this->obj.pos.y + sp4C.y, this->obj.pos.z + sp4C.z, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); } if (this->obj.pos.y < (gGroundHeight + 150.0f)) { @@ -2500,7 +2502,7 @@ void Corneria_Boss295_Update(Boss295* this) { this->vel.y = -5.0f; this->swork[0] = 1; this->gravity = 0.0f; - Corneria_8018C0B0(this); + Corneria_CoCarrier_WaterSplash(this); AUDIO_PLAY_SFX(NA_SE_OB_WATER_BOUND_M, this->sfxSource, 4); } } else { @@ -2514,7 +2516,7 @@ void Corneria_Boss295_Update(Boss295* this) { static Vec3f D_i1_80199A9C = { 20.0f, 90.0f, 0.0f }; static Vec3f D_i1_80199AA8 = { -440.0f, -210.0f, 0.0f }; -void Corneria_Boss296_Update(Boss296* this) { +void Corneria_CarrierBottom_Update(CoCarrierBottom* this) { Vec3f sp4C; Vec3f sp40; s32 i; @@ -2532,8 +2534,8 @@ void Corneria_Boss296_Update(Boss296* this) { AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); if (this->health <= 0) { - gBosses[CARRIER_0].swork[8]--; - if (gBosses[CARRIER_0].swork[8] != 0) { + gBosses[CARRIER].swork[8]--; + if (gBosses[CARRIER].swork[8] != 0) { Radio_PlayMessage(gMsg_ID_15130, RCID_FALCO); } else { Radio_PlayMessage(gMsg_ID_7085, RCID_FALCO); @@ -2541,20 +2543,20 @@ void Corneria_Boss296_Update(Boss296* this) { this->info.cullDistance = 300.0f; - gBosses[CARRIER_0].fwork[15] = 0.0f; - gBosses[CARRIER_0].fwork[14] = 335.0f; + gBosses[CARRIER].fwork[15] = 0.0f; + gBosses[CARRIER].fwork[14] = 335.0f; this->health = 0; AUDIO_PLAY_SFX(NA_SE_EN_PARTS_BROKEN, this->sfxSource, 4); - if (gBosses[CARRIER_0].swork[10] != 0) { - gBosses[CARRIER_0].swork[10]--; + if (gBosses[CARRIER].swork[10] != 0) { + gBosses[CARRIER].swork[10]--; } - gBosses[CARRIER_0].timer_056 = 30; + gBosses[CARRIER].timer_056 = 30; this->state = 1; - gBosses[CARRIER_0].fwork[6] = 500.0f; + gBosses[CARRIER].fwork[6] = 500.0f; Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A9C, &sp4C); @@ -2563,8 +2565,8 @@ void Corneria_Boss296_Update(Boss296* this) { this->obj.pos.z + sp4C.z, 1.0f); } - if (gBosses[CARRIER_1].state == 1) { - gBosses[CARRIER_0].fwork[14] = 25.0f; + if (gBosses[CARRIER_LEFT].state == 1) { + gBosses[CARRIER].fwork[14] = 25.0f; } } } @@ -2573,9 +2575,9 @@ void Corneria_Boss296_Update(Boss296* this) { AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } - this->obj.rot.x = gBosses[CARRIER_0].obj.rot.x; - this->obj.rot.y = gBosses[CARRIER_0].obj.rot.y; - this->obj.rot.z = gBosses[CARRIER_0].obj.rot.z; + this->obj.rot.x = gBosses[CARRIER].obj.rot.x; + this->obj.rot.y = gBosses[CARRIER].obj.rot.y; + this->obj.rot.z = gBosses[CARRIER].obj.rot.z; Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); @@ -2583,17 +2585,17 @@ void Corneria_Boss296_Update(Boss296* this) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199AA8, &sp40); - this->obj.pos.x = gBosses[CARRIER_0].obj.pos.x + sp40.x; - this->obj.pos.y = gBosses[CARRIER_0].obj.pos.y + sp40.y; - this->obj.pos.z = gBosses[CARRIER_0].obj.pos.z + sp40.z; + this->obj.pos.x = gBosses[CARRIER].obj.pos.x + sp40.x; + this->obj.pos.y = gBosses[CARRIER].obj.pos.y + sp40.y; + this->obj.pos.z = gBosses[CARRIER].obj.pos.z + sp40.z; - this->fwork[1] = gBosses[CARRIER_0].fwork[1]; + this->fwork[1] = gBosses[CARRIER].fwork[1]; break; case 1: Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_NEW); - gBosses[CARRIER_0].fwork[15] += 0.5f; + gBosses[CARRIER].fwork[15] += 0.5f; if (((gGameFrameCount % 8) == 0) && (Rand_ZeroOne() < 0.5f)) { this->timer_05C = 4; @@ -2601,8 +2603,8 @@ void Corneria_Boss296_Update(Boss296* this) { if ((gGameFrameCount % 2) == 0) { Matrix_MultVec3f(gCalcMatrix, &D_i1_80199A9C, &sp4C); - func_effect_8007C120(this->obj.pos.x + sp4C.x, this->obj.pos.y + sp4C.y, this->obj.pos.z + sp4C.z, - this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); + Effect_Effect390_Spawn(this->obj.pos.x + sp4C.x, this->obj.pos.y + sp4C.y, this->obj.pos.z + sp4C.z, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); } if (this->obj.pos.y < (gGroundHeight + 150.0f)) { @@ -2610,7 +2612,7 @@ void Corneria_Boss296_Update(Boss296* this) { this->vel.y = -5.0f; this->swork[0] = 1; this->gravity = 0.0f; - Corneria_8018C0B0(this); + Corneria_CoCarrier_WaterSplash(this); AUDIO_PLAY_SFX(NA_SE_OB_WATER_BOUND_M, this->sfxSource, 4); } } else { @@ -2621,8 +2623,8 @@ void Corneria_Boss296_Update(Boss296* this) { } } -bool Corneria_Carrier_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - if ((limbIndex == 10) && (gBosses[CARRIER_2].state != 0) && (gBosses[CARRIER_3].state != 0)) { +bool Corneria_CoCarrier_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + if ((limbIndex == 10) && (gBosses[CARRIER_UPPER].state != 0) && (gBosses[CARRIER_BOTTOM].state != 0)) { *dList = NULL; } if ((limbIndex != 12) && (limbIndex != 10)) { @@ -2631,15 +2633,15 @@ bool Corneria_Carrier_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, V return false; } -void Corneria_Carrier_Draw(Carrier* this) { - Animation_GetFrameData(&D_CO_602D400, 0, this->vwork); - Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_Carrier_OverrideLimbDraw, NULL, &this->index, +void Corneria_CoCarrier_Draw(CoCarrier* this) { + Animation_GetFrameData(&aCoCarrierAnim, 0, this->vwork); + Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_CoCarrier_OverrideLimbDraw, NULL, &this->index, &gIdentityMatrix); } -bool Corneria_Boss294_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Corneria_CoCarrierLeft_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* index) { if (limbIndex == 5) { - rot->y -= gBosses[*(s32*) data].fwork[2]; + rot->y -= gBosses[*(s32*) index].fwork[2]; } if ((limbIndex != 6) && (limbIndex != 5)) { *dList = NULL; @@ -2647,17 +2649,17 @@ bool Corneria_Boss294_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, V return false; } -void Corneria_Boss294_Draw(Boss294* this) { +void Corneria_CoCarrierLeft_Draw(CoCarrierLeft* this) { Matrix_Translate(gGfxMatrix, -D_i1_80199A78.x, -D_i1_80199A78.y, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - Animation_GetFrameData(&D_CO_602D400, 0, this->vwork); - Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_Boss294_OverrideLimbDraw, NULL, &this->index, + Animation_GetFrameData(&aCoCarrierAnim, 0, this->vwork); + Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_CoCarrierLeft_OverrideLimbDraw, NULL, &this->index, &gIdentityMatrix); } -bool Corneria_Boss295_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Corneria_CoCarrierUpper_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* index) { if (limbIndex == 1) { - rot->z -= gBosses[*(s32*) data].fwork[0]; + rot->z -= gBosses[*(s32*) index].fwork[0]; } if ((limbIndex != 1) && (limbIndex != 2)) { *dList = NULL; @@ -2665,17 +2667,17 @@ bool Corneria_Boss295_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, V return false; } -void Corneria_Boss295_Draw(Boss295* this) { +void Corneria_CoCarrierUpper_Draw(CoCarrierUpper* this) { Matrix_Translate(gGfxMatrix, -D_i1_80199A90.x, -D_i1_80199A90.y, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - Animation_GetFrameData(&D_CO_602D400, 0, this->vwork); - Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_Boss295_OverrideLimbDraw, NULL, &this->index, + Animation_GetFrameData(&aCoCarrierAnim, 0, this->vwork); + Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_CoCarrierUpper_OverrideLimbDraw, NULL, &this->index, &gIdentityMatrix); } -bool Corneria_Boss296_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Corneria_CoCarrierBottom_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* index) { if (limbIndex == 3) { - rot->z -= gBosses[*(s32*) data].fwork[1]; + rot->z -= gBosses[*(s32*) index].fwork[1]; } if ((limbIndex != 3) && (limbIndex != 4)) { *dList = NULL; @@ -2683,44 +2685,44 @@ bool Corneria_Boss296_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, V return false; } -void Corneria_Boss296_Draw(Boss296* this) { +void Corneria_CoCarrierBottom_Draw(CoCarrierBottom* this) { Matrix_Translate(gGfxMatrix, -D_i1_80199AA8.x, -D_i1_80199AA8.y, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - Animation_GetFrameData(&D_CO_602D400, 0, this->vwork); - Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_Boss296_OverrideLimbDraw, NULL, &this->index, - &gIdentityMatrix); + Animation_GetFrameData(&aCoCarrierAnim, 0, this->vwork); + Animation_DrawSkeleton(1, aCoCarrierSkel, this->vwork, Corneria_CoCarrierBottom_OverrideLimbDraw, NULL, + &this->index, &gIdentityMatrix); } -void Corneria_Doors_Update(CoDoors* scenery) { - switch (scenery->state) { +void Corneria_CoDoors_Update(CoDoors* this) { + switch (this->state) { case 0: - if (scenery->dmgType != DMG_NONE) { - scenery->dmgType = DMG_NONE; - if (scenery->dmgPart < 2) { - scenery->unk_44++; - scenery->timer_4C = 5; - scenery->vel.x += 2.0f; - scenery->vel.y += 2.0f; - if (scenery->unk_44 >= 3) { - scenery->state = 1; - scenery->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_CO_603E924); - AUDIO_PLAY_SFX(NA_SE_OB_GATE_OPEN, scenery->sfxSource, 0); + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->dmgPart < 2) { + this->unk_44++; + this->timer_4C = 5; + this->vel.x += 2.0f; + this->vel.y += 2.0f; + if (this->unk_44 >= 3) { + this->state = 1; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_CO_603E924); + AUDIO_PLAY_SFX(NA_SE_OB_GATE_OPEN, this->sfxSource, 0); } else { - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, scenery->sfxSource, 0); + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 0); } } } break; case 1: - Math_SmoothStepToF(&scenery->vel.x, 80.0f, 0.2f, 10.0f, 0.0f); - Math_SmoothStepToF(&scenery->vel.y, 80.0f, 0.2f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->vel.x, 80.0f, 0.2f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->vel.y, 80.0f, 0.2f, 10.0f, 0.0f); break; } } -bool Corneria_Doors_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - CoDoors* scenery = (CoDoors*) data; +bool Corneria_CoDoors_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + CoDoors* scenery = (CoDoors*) thisx; RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); @@ -2742,32 +2744,32 @@ bool Corneria_Doors_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec return 0; } -void Corneria_Doors_Draw(CoDoors* this) { +void Corneria_CoDoors_Draw(CoDoors* this) { Vec3f jointTable[10]; Animation_GetFrameData(&D_CO_602AA7C, 0, jointTable); - Animation_DrawSkeleton(3, aCoDoorsSkel, jointTable, Corneria_Doors_OverrideLimbDraw, NULL, this, gCalcMatrix); + Animation_DrawSkeleton(3, aCoDoorsSkel, jointTable, Corneria_CoDoors_OverrideLimbDraw, NULL, this, gCalcMatrix); RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } // Initializer called by unused function -void Corneria_InitTerrainBumps(Scenery* scenery, f32 xPosOffset) { - Scenery_Initialize(scenery); +void Corneria_SetupTerrainBumps(CoBump1* this, f32 xPosOffset) { + Scenery_Initialize(this); - scenery->obj.status = OBJ_INIT; - scenery->obj.pos.x = RAND_FLOAT_CENTERED(1000.0f) + xPosOffset; - scenery->obj.rot.y = RAND_FLOAT(90.0f) + 45.0f; + this->obj.status = OBJ_INIT; + this->obj.pos.x = RAND_FLOAT_CENTERED(1000.0f) + xPosOffset; + this->obj.rot.y = RAND_FLOAT(90.0f) + 45.0f; if (xPosOffset > 0.0f) { - scenery->obj.rot.y *= -1.0f; + this->obj.rot.y *= -1.0f; } - scenery->obj.pos.y = 0.0f; - scenery->obj.id = OBJ_SCENERY_CO_BUMP_1; - scenery->effectVel.z = 60.0f; - Object_SetInfo(&scenery->info, scenery->obj.id); - scenery->obj.pos.z = -2000.0f; - scenery->info.cullDistance = 15000.0f; + this->obj.pos.y = 0.0f; + this->obj.id = OBJ_SCENERY_CO_BUMP_1; + this->effectVel.z = 60.0f; + Object_SetInfo(&this->info, this->obj.id); + this->obj.pos.z = -2000.0f; + this->info.cullDistance = 15000.0f; } // Unused, seems to be creating some terrain bumps during the intro cutscene. @@ -2777,21 +2779,21 @@ void Corneria_SpawnTerrainBumps(void) { if (((gGameFrameCount % 16) == 0) && (gPlayer[0].csState >= 4)) { for (i = 0; i < ARRAY_COUNT(gScenery); i++) { if (gScenery[i].obj.status == OBJ_FREE) { - Corneria_InitTerrainBumps(&gScenery[i], 4000.0f); + Corneria_SetupTerrainBumps(&gScenery[i], 4000.0f); break; } } for (i = 0; i < ARRAY_COUNT(gScenery); i++) { if (gScenery[i].obj.status == OBJ_FREE) { - Corneria_InitTerrainBumps(&gScenery[i], -4000.0f); + Corneria_SetupTerrainBumps(&gScenery[i], -4000.0f); break; } } } } -void Corneria_InitClouds(Clouds* this) { +void Corneria_SetupClouds(EffectClouds* this) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.pos.x = gPlayer[0].cam.eye.x + RAND_FLOAT_CENTERED(500.0f); @@ -2816,7 +2818,7 @@ void Corneria_SpawnClouds(void) { if (((gGameFrameCount % 32) == 0) && gPlayer[0].pos.x == 0.0f) { for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Corneria_InitClouds(&gEffects[i]); + Corneria_SetupClouds(&gEffects[i]); break; } } @@ -2831,7 +2833,7 @@ static f32 sCoLevelStartTeamZpos[3] = { 160.0f, 160.0f, 320.0f }; static f32 sCoLevelStartTeamZrot[3] = { -60.0f, 60.0f, -45.0f }; -void Corneria_CsSFTeamUpdate(ActorCutscene* this, s32 teamIdx) { +void Corneria_CsTeamSetup(ActorCutscene* this, s32 teamIdx) { Actor_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_ACTOR_CUTSCENE; @@ -2871,6 +2873,8 @@ void Corneria_LevelStart(Player* player) { f32 sp30; f32 sp2C; + // Corneria_SpawnTerrainBumps(); // This function call was probably around here. + PRINTF("Enms[1].obj.mode %d\n", gActors[1].obj.status); if (gCsFrameCount < 815) { @@ -2915,27 +2919,28 @@ void Corneria_LevelStart(Player* player) { D_ctx_80177A48[6] += fabsf(sp44); D_ctx_80177A48[7] += fabsf(sp40); + // Cloud reflexions on Arwing windshields if (sp2C >= 0.0f) { - Texture_Scroll(D_arwing_30184D8, 64, 32, 2); - Texture_Scroll(D_arwing_30184D8, 64, 32, 2); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 2); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 2); } else { - Texture_Scroll(D_arwing_30184D8, 64, 32, 3); - Texture_Scroll(D_arwing_30184D8, 64, 32, 3); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 3); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 3); } - for (i = 0; (i < 40 && D_ctx_80177A48[6] >= 0.2f); i++, D_ctx_80177A48[6] -= 0.2f) { + for (i = 0; (i < 40) && (D_ctx_80177A48[6] >= 0.2f); i++, D_ctx_80177A48[6] -= 0.2f) { if (sp44 >= 0) { - Texture_Scroll(D_arwing_30184D8, 64, 32, 2); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 2); } else { - Texture_Scroll(D_arwing_30184D8, 64, 32, 3); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 3); } } for (i = 0; (i < 40) && (D_ctx_80177A48[7] >= 0.3f); i++, D_ctx_80177A48[7] -= 0.3f) { if (sp40 >= 0) { - Texture_Scroll(D_arwing_30184D8, 64, 32, 0); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 0); } else { - Texture_Scroll(D_arwing_30184D8, 64, 32, 1); + Texture_Scroll(aWindshieldClouldReflextionTex, 64, 32, 1); } } @@ -2962,16 +2967,16 @@ void Corneria_LevelStart(Player* player) { player->wings.unk_30 = 0; switch (player->csState) { - case 0: + case 0: // LevelStart initialization gCsFrameCount = 0; player->csState = 1; player->csTimer = 600; player->pos.y = 6000.0f; player->pos.x = 0.1f; - Corneria_CsSFTeamUpdate(falco, 0); - Corneria_CsSFTeamUpdate(slippy, 1); - Corneria_CsSFTeamUpdate(peppy, 2); + Corneria_CsTeamSetup(falco, 0); + Corneria_CsTeamSetup(slippy, 1); + Corneria_CsTeamSetup(peppy, 2); falco->iwork[14] = 2; slippy->iwork[14] = 3; @@ -2993,7 +2998,7 @@ void Corneria_LevelStart(Player* player) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; break; - case 1: + case 1: // cs phase: camera focus on fox (open the wings!) if (player->csTimer < 550) { gFillScreenAlphaTarget = 0; gFillScreenAlphaStep = 3; @@ -3050,7 +3055,7 @@ void Corneria_LevelStart(Player* player) { } break; - case 2: + case 2: // camera goes to the side of Fox. Math_SmoothStepToF(&D_ctx_80177A48[0], 0.1f, 1.0f, 0.001f, 0.0f); gCsCamEyeX = player->pos.x - 50.0f; @@ -3081,7 +3086,7 @@ void Corneria_LevelStart(Player* player) { } break; - case 3: + case 3: // Falco appears on scene from behind if (fabsf(Math_SmoothStepToF(&falco->obj.pos.z, player->pos.z + 100.0f, 0.05f, 5.0f, 0.0f)) < 1.0f) { player->csState = 4; D_ctx_80177A48[0] = 0.0f; @@ -3103,6 +3108,7 @@ void Corneria_LevelStart(Player* player) { Math_SmoothStepToF(&D_ctx_80177A48[0], 0.1f, 1.0f, 0.001f, 0.0f); + // Focus camera on Falco. gCsCamEyeX = falco->obj.pos.x - 50.0f; gCsCamEyeY = falco->obj.pos.y + 10.0f; gCsCamEyeZ = falco->obj.pos.z - 10.0f; @@ -3120,19 +3126,21 @@ void Corneria_LevelStart(Player* player) { Radio_PlayMessage(gMsg_ID_2020, RCID_FALCO); } + // Falco looks towards the camera. if (player->csTimer < 100) { - Math_SmoothStepToF(&falco->fwork[19], 50.0f, 0.1f, 3.0f, 0.01f); + Math_SmoothStepToF(&falco->fwork[TEAM_HEAD_XROT], 50.0f, 0.1f, 3.0f, 0.01f); } - falco->fwork[20] = 0.0f; - + // Falco's head rocks back and forth as he speaks. + falco->fwork[TEAM_HEAD_YROT] = 0.0f; if (gMsgCharIsPrinting && ((gGameFrameCount & 2) != 0)) { - falco->fwork[20] = 5.0f; + falco->fwork[TEAM_HEAD_YROT] = 5.0f; } break; case 5: - Math_SmoothStepToF(&falco->fwork[19], 0, 0.1f, 3.0f, 0.01f); + // Falco's head rotates back. + Math_SmoothStepToF(&falco->fwork[TEAM_HEAD_XROT], 0.0f, 0.1f, 3.0f, 0.01f); if (player->csTimer == 0) { player->csState = 6; @@ -3140,16 +3148,19 @@ void Corneria_LevelStart(Player* player) { player->csTimer = 190; } + // Camera moves towards Peppy. gCsCamEyeY = falco->obj.pos.y + 10.0f; gCsCamAtY = falco->obj.pos.y + 10.0f; break; case 6: - Math_SmoothStepToF(&falco->fwork[19], 0.0f, 0.1f, 3.0f, 0.01f); + // Falco's head rotates back. + Math_SmoothStepToF(&falco->fwork[TEAM_HEAD_XROT], 0.0f, 0.1f, 3.0f, 0.01f); Math_SmoothStepToF(&D_ctx_80177A48[0], 0.1f, 1.0f, 0.001f, 0.0f); D_ctx_80177A48[3] -= 0.5f; + // Focus camera on Peppy gCsCamEyeX = peppy->obj.pos.x + 100.0f + D_ctx_80177A48[3]; gCsCamEyeY = peppy->obj.pos.y + 10.0f; gCsCamEyeZ = peppy->obj.pos.z - 70.0f; @@ -3170,16 +3181,17 @@ void Corneria_LevelStart(Player* player) { Radio_PlayMessage(gMsg_ID_2030, RCID_PEPPY); } - peppy->fwork[20] = 0.0f; - + // Peppy's head rocks back and forth as he speaks. + peppy->fwork[TEAM_HEAD_YROT] = 0.0f; if (gMsgCharIsPrinting && ((gGameFrameCount & 2) != 0)) { - peppy->fwork[20] = 5.0f; + peppy->fwork[TEAM_HEAD_YROT] = 5.0f; } break; case 7: Math_SmoothStepToF(&D_ctx_80177A48[0], 0.1f, 1.0f, 0.001f, 0.0f); + // Focus camera on Slippy. gCsCamEyeX = slippy->obj.pos.x + 20.0f; gCsCamEyeY = slippy->obj.pos.y + 10.0f; gCsCamEyeZ = slippy->obj.pos.z - 50.0f; @@ -3202,13 +3214,13 @@ void Corneria_LevelStart(Player* player) { } if (player->csTimer < 100) { - Math_SmoothStepToF(&slippy->fwork[19], -20.0f, 0.1f, 3.0f, 0.01f); + Math_SmoothStepToF(&slippy->fwork[TEAM_HEAD_XROT], -20.0f, 0.1f, 3.0f, 0.01f); } - slippy->fwork[20] = 0.0f; - + // Slippy's head rocks back and forth as he speaks. + slippy->fwork[TEAM_HEAD_YROT] = 0.0f; if (gMsgCharIsPrinting && ((gGameFrameCount & 2) != 0)) { - slippy->fwork[20] = 5.0f; + slippy->fwork[TEAM_HEAD_YROT] = 5.0f; } break; @@ -3219,6 +3231,8 @@ void Corneria_LevelStart(Player* player) { D_ctx_80177A48[3] += player->unk_004; Math_SmoothStepToF(&player->unk_004, 2.0f, 1.0f, 0.2f, 0.0f); } + + // Focus camera on Fox. gCsCamEyeX = player->pos.x; gCsCamEyeZ = (player->trueZpos - 600.0f) + D_ctx_80177A48[3]; gCsCamEyeY = player->pos.y + D_ctx_80177A48[8]; @@ -3235,8 +3249,8 @@ void Corneria_LevelStart(Player* player) { Radio_PlayMessage(gMsg_ID_2050, RCID_FOX); } + // Fox's head rotates back and forth as he speaks. player->wings.unk_30 = 0.0f; - if (gMsgCharIsPrinting && ((gGameFrameCount & 2) != 0)) { player->wings.unk_30 = 5.0f; } @@ -3380,7 +3394,7 @@ static f32 D_i1_80199B20[3] = { 200.0f, 200.0f, 400.0f }; static f32 D_i1_80199B2C[3] = { 180.0f, -120.0f, 180.0f }; -void Corneria_80190F74(ActorCutscene* this, s32 index) { +void Corneria_CsLevelComplete1_TeamSetup(ActorCutscene* this, s32 index) { Vec3f sp5C; Vec3f sp50; Vec3f sp44; @@ -3638,13 +3652,13 @@ void Corneria_LevelComplete1(Player* player) { case 470: Play_ClearObjectData(); if (gTeamShields[TEAM_ID_FALCO] > 0) { - Corneria_80190F74(&gActors[0], 0); + Corneria_CsLevelComplete1_TeamSetup(&gActors[0], 0); } if (gTeamShields[TEAM_ID_SLIPPY] > 0) { - Corneria_80190F74(&gActors[1], 1); + Corneria_CsLevelComplete1_TeamSetup(&gActors[1], 1); } if (gTeamShields[TEAM_ID_PEPPY] > 0) { - Corneria_80190F74(&gActors[2], 2); + Corneria_CsLevelComplete1_TeamSetup(&gActors[2], 2); } break; diff --git a/src/overlays/ovl_i1/fox_ve1.c b/src/overlays/ovl_i1/fox_ve1.c index 117b5330..bf89eac5 100644 --- a/src/overlays/ovl_i1/fox_ve1.c +++ b/src/overlays/ovl_i1/fox_ve1.c @@ -253,7 +253,7 @@ void Venom1_BossTrigger1_Update(Ve1BossTrigger1* this) { s32 i; for (i = 0; i < ARRAY_COUNT(gBosses); i++, boss++) { - if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1)) { + if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1_GOLEMECH)) { if (boss->obj.pos.z <= this->obj.pos.z) { D_i1_8019C0B8 = (s32) this->obj.rot.x + 1; this->obj.status = OBJ_FREE; @@ -268,7 +268,7 @@ void Venom1_BossTrigger2_Update(Ve1BossTrigger2* this) { s32 i; for (i = 0; i < ARRAY_COUNT(gBosses); i++, boss++) { - if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1)) { + if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1_GOLEMECH)) { if (boss->obj.pos.z <= this->obj.pos.z) { D_i1_8019C0B8 = 0; this->obj.status = OBJ_FREE; @@ -283,7 +283,7 @@ void Venom1_BossTrigger3_Update(Ve1BossTrigger3* this) { s32 i; for (i = 0; i < ARRAY_COUNT(gBosses); i++, boss++) { - if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1)) { + if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1_GOLEMECH)) { if (boss->obj.pos.z <= this->obj.pos.z) { D_i1_8019C0BC = (s32) this->obj.rot.x + 1; this->obj.status = OBJ_FREE; @@ -298,7 +298,7 @@ void Venom1_BossTrigger4_Update(Ve1BossTrigger4* this) { s32 i; for (i = 0; i < ARRAY_COUNT(gBosses); i++, boss++) { - if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1)) { + if ((boss->obj.status != OBJ_FREE) && (boss->obj.id == OBJ_BOSS_VE1_GOLEMECH)) { if (boss->obj.pos.z <= this->obj.pos.z) { D_i1_8019C0C0 = 1; this->obj.status = OBJ_FREE; @@ -308,14 +308,14 @@ void Venom1_BossTrigger4_Update(Ve1BossTrigger4* this) { } } -void Venom1_Scenery127_Update(Scenery* scenery) { - switch (scenery->state) { +void Venom1_Ve1TempleEntrance_Update(Ve1TempleEntrance* this) { + switch (this->state) { case 0: - if (gPlayer[0].pos.z < scenery->obj.pos.z) { + if (gPlayer[0].pos.z < this->obj.pos.z) { gDrawBackdrop = 0; gDrawGround = false; - scenery->state++; + this->state++; } case 1: @@ -323,11 +323,11 @@ void Venom1_Scenery127_Update(Scenery* scenery) { } } -void Venom1_8019250C(Actor* this) { +void Venom1_Ve1Pillar1_Init(Actor* this) { } -void Venom1_Actor280_Update(Actor280* this) { - Scenery* scenery; +void Venom1_Ve1Pillar1_Update(Ve1Pillar1* this) { + Scenery* templeInterior; f32 var_ft4; f32 var_ft5; s32 i; @@ -356,24 +356,24 @@ void Venom1_Actor280_Update(Actor280* this) { var_ft5 = 450.0f; var_ft4 = 0.0f; - scenery = &gScenery[0]; - - for (i = 0; i < ARRAY_COUNT(gScenery); i++, scenery++) { - if ((scenery->obj.id == OBJ_SCENERY_128) || (scenery->obj.id == OBJ_SCENERY_129) || - (scenery->obj.id == OBJ_SCENERY_130)) { - if (((this->obj.pos.z + 1100.0f - scenery->obj.pos.z) < 2200.0f) && - ((this->obj.pos.z + 1100.0f - scenery->obj.pos.z) > 0.0f)) { - switch (scenery->obj.id) { - case OBJ_SCENERY_128: - case OBJ_SCENERY_130: + templeInterior = &gScenery[0]; + for (i = 0; i < ARRAY_COUNT(gScenery); i++, templeInterior++) { + if ((templeInterior->obj.id == OBJ_SCENERY_VE1_TEMPLE_INTERIOR_1) || + (templeInterior->obj.id == OBJ_SCENERY_VE1_TEMPLE_INTERIOR_2) || + (templeInterior->obj.id == OBJ_SCENERY_VE1_TEMPLE_INTERIOR_3)) { + if (((this->obj.pos.z + 1100.0f - templeInterior->obj.pos.z) < 2200.0f) && + ((this->obj.pos.z + 1100.0f - templeInterior->obj.pos.z) > 0.0f)) { + switch (templeInterior->obj.id) { + case OBJ_SCENERY_VE1_TEMPLE_INTERIOR_1: + case OBJ_SCENERY_VE1_TEMPLE_INTERIOR_3: break; - case OBJ_SCENERY_129: + case OBJ_SCENERY_VE1_TEMPLE_INTERIOR_2: var_ft5 = 600.0f; break; } - var_ft4 = scenery->obj.pos.x; + var_ft4 = templeInterior->obj.pos.x; break; } } @@ -405,7 +405,7 @@ void Venom1_Actor280_Update(Actor280* this) { this->obj.pos.y += dest.y; this->obj.pos.z += dest.z; - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->unk_7A = 11; @@ -494,47 +494,46 @@ void Venom1_80192AA4(Actor* this) { } } -void Venom1_80192CB0(Actor* this) { +void Venom1_Ve1Pillar2_3_Init(Actor* this) { this->iwork[0] = this->obj.rot.x; this->obj.rot.x = 0.0f; } -// Actors OBJ_ACTOR_281 & OBJ_ACTOR_282 -void Venom1_Doodad_Update(Actor* actor) { - if (actor->dmgType == DMG_BEAM) { - actor->dmgType = DMG_NONE; - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_REFLECT); +void Venom1_Pillar2_3_Update(Actor* this) { + if (this->dmgType == DMG_BEAM) { + this->dmgType = DMG_NONE; + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_REFLECT); } - if (actor->iwork[1] > 0) { + if (this->iwork[1] > 0) { gControllerRumbleFlags[0] = 1; - actor->iwork[1]--; + this->iwork[1]--; } - switch (actor->state) { + switch (this->state) { case 1: - actor->timer_0BC = actor->iwork[0]; + this->timer_0BC = this->iwork[0]; case 2: - if (actor->timer_0BC <= 0) { - actor->state++; + if (this->timer_0BC <= 0) { + this->state++; } break; case 3: - actor->state++; + this->state++; case 4: - actor->fwork[0] += 0.05f; - actor->obj.rot.x += actor->fwork[0]; + this->fwork[0] += 0.05f; + this->obj.rot.x += this->fwork[0]; - if (actor->obj.rot.x >= 90.0f) { + if (this->obj.rot.x >= 90.0f) { gCameraShake = 12; - Venom1_80192AA4(actor); - actor->iwork[1] = 5; - actor->obj.rot.x = 90.0f; - AUDIO_PLAY_SFX(NA_SE_OB_POLE_BOUND, actor->sfxSource, 0); - actor->state++; + Venom1_80192AA4(this); + this->iwork[1] = 5; + this->obj.rot.x = 90.0f; + AUDIO_PLAY_SFX(NA_SE_OB_POLE_BOUND, this->sfxSource, 0); + this->state++; } break; @@ -544,21 +543,21 @@ void Venom1_Doodad_Update(Actor* actor) { } } -void Venom1_Actor281_Draw(Actor281* this) { +void Venom1_Ve1Pillar2_Draw(Ve1Pillar2* this) { Matrix_Scale(gGfxMatrix, 1.0f, 0.5f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_VE1_901DA50); + gSPDisplayList(gMasterDisp++, aVe1Pillar3DL); } -void Venom1_80192EA4(Actor* this) { +void Venom1_Ve1Pillar4_Init(Ve1Pillar4* this) { } -void Venom1_Actor283_Update(Actor283* this) { - Scenery* scenery; +void Venom1_Ve1Pillar4_Update(Ve1Pillar4* this) { + Scenery* templeInterior; Vec3f sp50; Vec3f sp44; f32 sp40; - Effect* effect; + Effect* effect394; s32 i; f32 var_ft4; @@ -573,14 +572,15 @@ void Venom1_Actor283_Update(Actor283* this) { case 1: var_ft4 = 0.0f; - scenery = gScenery; - for (i = 0; i < ARRAY_COUNT(gScenery); i++, scenery++) { - if (((scenery->obj.id == OBJ_SCENERY_128) || (scenery->obj.id == OBJ_SCENERY_129) || - (scenery->obj.id == OBJ_SCENERY_130)) && - ((this->obj.pos.z + 1100.0f - scenery->obj.pos.z) < 2200.0f) && - ((this->obj.pos.z + 1100.0f - scenery->obj.pos.z) > 0.0f)) { - var_ft4 = scenery->obj.pos.y; + templeInterior = &gScenery[0]; + for (i = 0; i < ARRAY_COUNT(gScenery); i++, templeInterior++) { + if (((templeInterior->obj.id == OBJ_SCENERY_VE1_TEMPLE_INTERIOR_1) || + (templeInterior->obj.id == OBJ_SCENERY_VE1_TEMPLE_INTERIOR_2) || + (templeInterior->obj.id == OBJ_SCENERY_VE1_TEMPLE_INTERIOR_3)) && + ((this->obj.pos.z + 1100.0f - templeInterior->obj.pos.z) < 2200.0f) && + ((this->obj.pos.z + 1100.0f - templeInterior->obj.pos.z) > 0.0f)) { + var_ft4 = templeInterior->obj.pos.y; break; } } @@ -601,26 +601,26 @@ void Venom1_Actor283_Update(Actor283* this) { this->obj.pos.x += sp44.x; this->obj.pos.y += sp44.y; this->obj.pos.z += sp44.z; - effect = func_effect_8007783C(OBJ_EFFECT_394); - if (effect != NULL) { - effect->unk_7A = 11; - effect->unk_78 = effect->unk_7A; - effect->obj.status = OBJ_ACTIVE; - effect->obj.pos.x = this->obj.pos.x + RAND_FLOAT_CENTERED(3.0f); - effect->obj.pos.y = this->obj.pos.y + RAND_FLOAT_CENTERED(3.0f); - effect->obj.pos.z = this->obj.pos.z + RAND_FLOAT_CENTERED(3.0f) + 80.0f; - effect->scale2 = 8.0f; - effect->obj.rot.z = RAND_FLOAT(360.0f); - effect->vel.x = RAND_FLOAT_CENTERED(5.0f); - effect->vel.y = 10.0f + RAND_FLOAT_CENTERED(3); - effect->unk_44 = 100; - effect->unk_46 = -5; - effect->unk_60.z = 3.0f; + effect394 = Effect_Load(OBJ_EFFECT_394); + if (effect394 != NULL) { + effect394->unk_7A = 11; + effect394->unk_78 = effect394->unk_7A; + effect394->obj.status = OBJ_ACTIVE; + effect394->obj.pos.x = this->obj.pos.x + RAND_FLOAT_CENTERED(3.0f); + effect394->obj.pos.y = this->obj.pos.y + RAND_FLOAT_CENTERED(3.0f); + effect394->obj.pos.z = this->obj.pos.z + RAND_FLOAT_CENTERED(3.0f) + 80.0f; + effect394->scale2 = 8.0f; + effect394->obj.rot.z = RAND_FLOAT(360.0f); + effect394->vel.x = RAND_FLOAT_CENTERED(5.0f); + effect394->vel.y = 10.0f + RAND_FLOAT_CENTERED(3); + effect394->unk_44 = 100; + effect394->unk_46 = -5; + effect394->unk_60.z = 3.0f; if (Rand_ZeroOne() < 0.5f) { - effect->unk_60.z = -effect->unk_60.z; + effect394->unk_60.z = -effect394->unk_60.z; } if ((this->iwork[0] % 2) != 0) { - effect->vel.y = -effect->vel.y; + effect394->vel.y = -effect394->vel.y; } } @@ -658,12 +658,12 @@ void Venom1_Actor283_Update(Actor283* this) { this->iwork[0]++; } -void Venom1_801933B4(Actor* this) { +void Venom1_Ve1MonkeyStatue_Init(Ve1MonkeyStatue* this) { this->scale = -1.0f; this->obj.pos.y += 488.0f; } -void Venom1_Actor284_Update(Actor284* this) { +void Venom1_Ve1MonkeyStatue_Update(Ve1MonkeyStatue* this) { f32* hitboxData; if (this->dmgType == DMG_BEAM) { @@ -674,9 +674,9 @@ void Venom1_Actor284_Update(Actor284* this) { if ((this->animFrame == 38) || (this->animFrame == 58)) { AUDIO_PLAY_SFX(NA_SE_OB_ARM_SWING, this->sfxSource, 0); } - Animation_GetFrameData(&D_VE1_900D098, this->animFrame, this->vwork); + Animation_GetFrameData(&aVe1MonkeyStatueAnim, this->animFrame, this->vwork); - if (this->animFrame < (Animation_GetFrameCount(&D_VE1_900D098) - 1)) { + if (this->animFrame < (Animation_GetFrameCount(&aVe1MonkeyStatueAnim) - 1)) { this->animFrame++; } else { this->animFrame = 0; @@ -687,14 +687,14 @@ void Venom1_Actor284_Update(Actor284* this) { hitboxData[1 + (10 * 1) + 7] = -this->vwork[2].y; } -void Venom1_Actor284_Draw(Actor* this) { +void Venom1_Ve1MonkeyStatue_Draw(Ve1MonkeyStatue* this) { Matrix_Translate(gGfxMatrix, 0.0f, -488.0f, 0.0f, MTXF_APPLY); Animation_DrawSkeleton(0, D_VE1_900D164, this->vwork, NULL, NULL, this, &gIdentityMatrix); } -void Venom1_Scenery52_Update(Scenery* scenery) { - if (((gPlayer[0].trueZpos - scenery->obj.pos.z) <= 3500.0f) && ((gGameFrameCount % 4) == 0)) { - func_effect_8007C120(scenery->obj.pos.x, scenery->obj.pos.y, scenery->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.2f, 10); +void Venom1_Ve1Generator_Update(Ve1Generator* this) { + if (((gPlayer[0].trueZpos - this->obj.pos.z) <= 3500.0f) && ((gGameFrameCount % 4) == 0)) { + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.2f, 10); } } @@ -770,7 +770,7 @@ UnkStruct_i1_8019A820 D_i1_8019A820[17] = { { 20, 150, 34, 3, -1, -1, 5, -1, -1, -1, -1, 1 }, { 21, 250, 37, 3, -1, -1, 5, 14, 16, 12, 13, 1 }, { 25, 200, 40, 3, -1, -1, 5, 2, 5, -1, -1, 1 }, }; -f32 D_VE1_8019A9B8[199] = { +f32 aVe1GolemechHitbox[199] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, @@ -823,7 +823,7 @@ f32 D_i1_8019AE20[6] = { }; Vec3f D_i1_8019AE38 = { 130.0f, 0.0f, 0.0f }; -void Venom1_Boss319_Init(Boss319* this) { +void Venom1_Ve1Golemech_Init(Ve1Golemech* this) { s32 i; s32 var_v0; s32 j; @@ -867,7 +867,7 @@ void Venom1_Boss319_Init(Boss319* this) { this->fwork[11] = 1.0f; - for (i = 0; i < 33U; i++) { + for (i = 0; i < ARRAY_COUNTU(D_i1_8019B7F0); i++) { D_i1_8019B7F0[i] = 0; } @@ -881,7 +881,7 @@ void Venom1_Boss319_Init(Boss319* this) { bool Venom1_801937F4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { Boss* this = thisx; - s32 override; + bool override; s32 i; s32 lum; s32 blue; @@ -1013,8 +1013,10 @@ void Venom1_80193D64(s32 limbIndex, Vec3f* rot, void* thisx) { var_s0 += temp1; } } + var_s6 = D_i1_8019A820; var_s7 = D_i1_8019B838; + for (spBC = 0; spBC < ARRAY_COUNTU(D_i1_8019B838); spBC++, var_s6++, var_s7++) { if (limbIndex == var_s6->unk_00) { if (var_s7->unk_7C & 8) { @@ -1069,6 +1071,7 @@ void Venom1_80193D64(s32 limbIndex, Vec3f* rot, void* thisx) { var_s6 = D_i1_8019A820; var_s7 = D_i1_8019B838; + for (spBC = 0; spBC < ARRAY_COUNTU(D_i1_8019B838); spBC++, var_s6++, var_s7++) { if ((limbIndex == var_s6->unk_00) && (var_s7->unk_7C & 0x200) && !((gGameFrameCount + spBC) & 2)) { temp2 = var_s6->unk_04; @@ -1098,7 +1101,7 @@ void Venom1_80193D64(s32 limbIndex, Vec3f* rot, void* thisx) { #ifdef NON_MATCHING // Lots of problems with loop at 2082. Seems related to spE8. https://decomp.me/scratch/gOy2L -void Venom1_Boss_Update(Boss* boss) { +void Venom1_Ve1Golemech_Update(Ve1Golemech* this) { s32 is0; Vec3f sp118[27]; Actor* actor; @@ -1129,13 +1132,13 @@ void Venom1_Boss_Update(Boss* boss) { spB8 = 0; spB4 = 0; gBossFrameCount++; - if (boss->state >= 3) { + if (this->state >= 3) { D_i1_8019C0B8 = 0; D_i1_8019C0BC = 0; } - boss->swork[32]++; - if (boss->swork[31] == 0) { - switch (boss->swork[32]) { + this->swork[32]++; + if (this->swork[31] == 0) { + switch (this->swork[32]) { case 901: if ((gTeamShields[TEAM_ID_SLIPPY] > 0) && (gRadioState == 0)) { Radio_PlayMessage(gMsg_ID_4092, RCID_SLIPPY); @@ -1143,10 +1146,10 @@ void Venom1_Boss_Update(Boss* boss) { break; case 1001: if (gTeamShields[TEAM_ID_SLIPPY] > 0) { - gShowBossHealth = 1; + gShowBossHealth = true; gBossHealthBar = 255; - boss->swork[32] = 0; - boss->swork[31]++; + this->swork[32] = 0; + this->swork[31]++; } break; } @@ -1156,23 +1159,23 @@ void Venom1_Boss_Update(Boss* boss) { D_i1_8019B838[spF4].unk_02[2]--; } } - if (boss->swork[10] > 0) { - boss->swork[10]--; + if (this->swork[10] > 0) { + this->swork[10]--; } - if (boss->swork[28] > 0) { + if (this->swork[28] > 0) { gControllerRumbleFlags[0] = 1; - boss->swork[28]--; + this->swork[28]--; } - if (boss->swork[16] > 0) { - boss->swork[16]--; + if (this->swork[16] > 0) { + this->swork[16]--; } - if ((boss->swork[16] & 3) == 1) { + if ((this->swork[16] & 3) == 1) { for (spF4 = 0; spF4 < (RAND_INT(5.0f) + 2); spF4++) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { - effect->obj.pos.x = boss->obj.pos.x + RAND_FLOAT_CENTERED(400.0f); - effect->obj.pos.y = boss->obj.pos.y + 1250.0f; - effect->obj.pos.z = boss->obj.pos.z + RAND_FLOAT_CENTERED(400.0f); + effect->obj.pos.x = this->obj.pos.x + RAND_FLOAT_CENTERED(400.0f); + effect->obj.pos.y = this->obj.pos.y + 1250.0f; + effect->obj.pos.z = this->obj.pos.z + RAND_FLOAT_CENTERED(400.0f); effect->obj.rot.x = RAND_FLOAT(360.0f); effect->obj.rot.y = RAND_FLOAT(360.0f); effect->obj.rot.z = RAND_FLOAT(360.0f); @@ -1187,14 +1190,14 @@ void Venom1_Boss_Update(Boss* boss) { } } } - if (boss->swork[10] & 2) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + if (this->swork[10] & 2) { + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->obj.status = OBJ_ACTIVE; effect->unk_78 = effect->unk_7A = 11; - effect->obj.pos.x = boss->obj.pos.x + 125.0f; - effect->obj.pos.y = boss->obj.pos.y; - effect->obj.pos.z = boss->obj.pos.z; + effect->obj.pos.x = this->obj.pos.x + 125.0f; + effect->obj.pos.y = this->obj.pos.y; + effect->obj.pos.z = this->obj.pos.z; effect->scale2 = 10.0f; effect->obj.rot.z = RAND_FLOAT(360.0f); effect->vel.x = RAND_FLOAT_CENTERED(5.0f); @@ -1206,13 +1209,13 @@ void Venom1_Boss_Update(Boss* boss) { effect->unk_60.z = -effect->unk_60.z; } } - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->obj.status = OBJ_ACTIVE; effect->unk_78 = effect->unk_7A = 11; - effect->obj.pos.x = boss->obj.pos.x - 125.0f; - effect->obj.pos.y = boss->obj.pos.y; - effect->obj.pos.z = boss->obj.pos.z; + effect->obj.pos.x = this->obj.pos.x - 125.0f; + effect->obj.pos.y = this->obj.pos.y; + effect->obj.pos.z = this->obj.pos.z; effect->obj.rot.z = RAND_FLOAT(360.0f); effect->scale2 = 10.0f; effect->vel.x = RAND_FLOAT_CENTERED(5.0f); @@ -1226,39 +1229,39 @@ void Venom1_Boss_Update(Boss* boss) { effect->unk_4A = 50; } } - if (boss->state <= 0) { - switch (boss->swork[20]) { + if (this->state <= 0) { + switch (this->swork[20]) { case 0: break; case 1: - boss->fwork[13] = D_i1_8019AE00[boss->swork[21]].unk_0; - boss->swork[22] = boss->swork[21]; - boss->swork[20]++; + this->fwork[13] = D_i1_8019AE00[this->swork[21]].unk_0; + this->swork[22] = this->swork[21]; + this->swork[20]++; /* fallthrough */ case 2: - boss->fwork[14] = 0.0f; - boss->swork[20]++; + this->fwork[14] = 0.0f; + this->swork[20]++; /* fallthrough */ case 3: - Math_SmoothStepToF(&boss->fwork[14], 12.0f, 1.0f, 1.0f, 0.01f); - Venom1_801920F0(&boss->fwork[6], boss->fwork[13], 1.0f, boss->fwork[14], 0.01f, &spCC); + Math_SmoothStepToF(&this->fwork[14], 12.0f, 1.0f, 1.0f, 0.01f); + Venom1_801920F0(&this->fwork[6], this->fwork[13], 1.0f, this->fwork[14], 0.01f, &spCC); if (fabsf(spCC) <= 45.0f) { - boss->fwork[12] = boss->fwork[13] + (SIGN_OF(spCC) * 20.0f); - boss->swork[20]++; + this->fwork[12] = this->fwork[13] + (SIGN_OF(spCC) * 20.0f); + this->swork[20]++; } break; case 4: - Math_SmoothStepToF(&boss->fwork[14], 12.0f, 1.0f, 1.0f, 0.01f); - Math_SmoothStepToAngle(&boss->fwork[12], boss->fwork[13], 1.0f, boss->fwork[14] / 5.0f, 0.01f); - if (fabsf(Math_SmoothStepToAngle(&boss->fwork[6], boss->fwork[12], 1.0f, boss->fwork[14], 0.01f)) < + Math_SmoothStepToF(&this->fwork[14], 12.0f, 1.0f, 1.0f, 0.01f); + Math_SmoothStepToAngle(&this->fwork[12], this->fwork[13], 1.0f, this->fwork[14] / 5.0f, 0.01f); + if (fabsf(Math_SmoothStepToAngle(&this->fwork[6], this->fwork[12], 1.0f, this->fwork[14], 0.01f)) < 2.0f) { - boss->swork[20] = 0; + this->swork[20] = 0; } break; } } - Matrix_RotateY(gCalcMatrix, boss->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); for (spF4 = 0; spF4 < ARRAY_COUNTU(D_i1_8019B838); spF4++) { if (D_i1_8019B838[spF4].unk_74 < D_i1_8019B838[spF4].unk_78) { @@ -1286,8 +1289,8 @@ void Venom1_Boss_Update(Boss* boss) { D_i1_8019B838[is4].unk_02[0] = 16; D_i1_8019B838[is4].unk_02[1] = D_i1_8019A820[spF4].unk_0C; D_i1_8019B838[is4].unk_7C |= 4; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, boss->sfxSource, 4); - AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_BROKEN, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, this->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_BROKEN, this->sfxSource, 4); } is4 = D_i1_8019A820[spF4].unk_0A; if (is4 != -1) { @@ -1313,14 +1316,14 @@ void Venom1_Boss_Update(Boss* boss) { is4 = D_i1_8019B838[spF4].unk_02[0]; for (is7 = 0; is7 < D_i1_8019A820[spF4].unk_06; is7++) { Matrix_MultVec3f(gCalcMatrix, &D_i1_8019B838[spF4].unk_0C[is7], &spF8); - spF8.x += boss->obj.pos.x + RAND_FLOAT_CENTERED(60.0f); - spF8.y += boss->obj.pos.y + RAND_FLOAT_CENTERED(60.0f); - spF8.z += boss->obj.pos.z; + spF8.x += this->obj.pos.x + RAND_FLOAT_CENTERED(60.0f); + spF8.y += this->obj.pos.y + RAND_FLOAT_CENTERED(60.0f); + spF8.z += this->obj.pos.z; if (D_i1_8019AD80[is4][2] > 0) { func_effect_8007D2C8(spF8.x, spF8.y, spF8.z, D_i1_8019AD80[is4][2]); } for (is1 = 0; is1 < D_i1_8019AD80[is4][0]; is1++) { - if (boss->sfxSource) {} + if (this->sfxSource) {} actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { actor->obj.status = OBJ_ACTIVE; @@ -1379,9 +1382,9 @@ void Venom1_Boss_Update(Boss* boss) { } else { for (is7 = 0; is7 < D_i1_8019A820[spF4].unk_06; is7++) { Matrix_MultVec3f(gCalcMatrix, &D_i1_8019B838[spF4].unk_0C[is7], &spF8); - spF8.x += boss->obj.pos.x + RAND_FLOAT_CENTERED(60.0f); - spF8.y += boss->obj.pos.y + RAND_FLOAT_CENTERED(60.0f); - spF8.z += boss->obj.pos.z; + spF8.x += this->obj.pos.x + RAND_FLOAT_CENTERED(60.0f); + spF8.y += this->obj.pos.y + RAND_FLOAT_CENTERED(60.0f); + spF8.z += this->obj.pos.z; for (is1 = 0; is1 < 5; is1++) { actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { @@ -1413,16 +1416,16 @@ void Venom1_Boss_Update(Boss* boss) { actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { actor->obj.status = OBJ_ACTIVE; - actor->obj.pos.x = boss->obj.pos.x + D_i1_8019B838[spF4].unk_0C[0].x; - actor->obj.pos.y = boss->obj.pos.y + D_i1_8019B838[spF4].unk_0C[0].y; - actor->obj.pos.z = boss->obj.pos.z + D_i1_8019B838[spF4].unk_0C[0].z; + actor->obj.pos.x = this->obj.pos.x + D_i1_8019B838[spF4].unk_0C[0].x; + actor->obj.pos.y = this->obj.pos.y + D_i1_8019B838[spF4].unk_0C[0].y; + actor->obj.pos.z = this->obj.pos.z + D_i1_8019B838[spF4].unk_0C[0].z; actor->obj.rot.x = D_i1_8019B838[spF4].unk_30[0].x; actor->obj.rot.y = D_i1_8019B838[spF4].unk_30[0].y; actor->obj.rot.z = D_i1_8019B838[spF4].unk_30[0].z; actor->state = 57; actor->iwork[0] = 0; actor->unk_048 = spF4; - if (boss->swork[25] == 0) { + if (this->swork[25] == 0) { actor->vel.x = RAND_FLOAT_CENTERED(5.0f); actor->vel.y = 10.0f + RAND_FLOAT_CENTERED(2.0f); actor->vel.z = 10.0f + RAND_FLOAT_CENTERED(2.0f); @@ -1448,15 +1451,15 @@ void Venom1_Boss_Update(Boss* boss) { actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { actor->obj.status = OBJ_ACTIVE; - actor->obj.pos.x = boss->obj.pos.x + D_i1_8019B838[spF4].unk_0C[0].x; - actor->obj.pos.y = boss->obj.pos.y + D_i1_8019B838[spF4].unk_0C[0].y; - actor->obj.pos.z = boss->obj.pos.z + D_i1_8019B838[spF4].unk_0C[0].z; + actor->obj.pos.x = this->obj.pos.x + D_i1_8019B838[spF4].unk_0C[0].x; + actor->obj.pos.y = this->obj.pos.y + D_i1_8019B838[spF4].unk_0C[0].y; + actor->obj.pos.z = this->obj.pos.z + D_i1_8019B838[spF4].unk_0C[0].z; actor->obj.rot.x = RAND_FLOAT(360.0f); actor->obj.rot.y = RAND_FLOAT(360.0f); actor->obj.rot.z = RAND_FLOAT(360.0f); actor->state = 50; actor->iwork[0] = RAND_INT(2) + 2; - if (boss->swork[25] == 0) { + if (this->swork[25] == 0) { actor->vel.x = RAND_FLOAT_CENTERED(6.0f); actor->vel.y = RAND_FLOAT_CENTERED(6.0f); actor->vel.z = 40.0f + RAND_FLOAT_CENTERED(2.0f); @@ -1520,118 +1523,118 @@ void Venom1_Boss_Update(Boss* boss) { } if (D_i1_8019B838[spF4].unk_7C & 0x1000) { Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, &spF8); - spF8.x += boss->obj.pos.x + D_i1_8019B838[spF4].unk_0C[1].x + RAND_FLOAT_CENTERED(60.0f); - spF8.y += boss->obj.pos.y + D_i1_8019B838[spF4].unk_0C[1].y + RAND_FLOAT_CENTERED(60.0f); - spF8.z += boss->obj.pos.z + D_i1_8019B838[spF4].unk_0C[1].z; + spF8.x += this->obj.pos.x + D_i1_8019B838[spF4].unk_0C[1].x + RAND_FLOAT_CENTERED(60.0f); + spF8.y += this->obj.pos.y + D_i1_8019B838[spF4].unk_0C[1].y + RAND_FLOAT_CENTERED(60.0f); + spF8.z += this->obj.pos.z + D_i1_8019B838[spF4].unk_0C[1].z; func_effect_8007D2C8(spF8.x, spF8.y, spF8.z, D_i1_8019B838[spF4].unk_60); D_i1_8019B838[spF4].unk_7C &= ~0x1000; } } - if ((boss->state == 0) || (boss->state == 1)) { + if ((this->state == 0) || (this->state == 1)) { is4 = 0; for (spF4 = 0; spF4 < ARRAY_COUNTU(D_i1_8019B838); spF4++) { if (D_i1_8019B838[spF4].unk_00 <= 0) { is4++; } } - if ((boss->state == 0) && (boss->swork[20] == 0)) { - if ((is4 > 0) && (boss->swork[21] < (is4 - 1) / 5)) { - boss->swork[21] = (is4 - 1) / 5; - boss->swork[20] = 1; + if ((this->state == 0) && (this->swork[20] == 0)) { + if ((is4 > 0) && (this->swork[21] < (is4 - 1) / 5)) { + this->swork[21] = (is4 - 1) / 5; + this->swork[20] = 1; } if (D_i1_8019C0C0 == 1) { D_i1_8019C0C0 = 0; - if (boss->swork[21] < 5) { - boss->swork[21]++; - boss->swork[20] = 1; + if (this->swork[21] < 5) { + this->swork[21]++; + this->swork[20] = 1; } } } if (is4 == 17) { - boss->swork[9] = 2; - boss->swork[22] = 4; - boss->fwork[6] = boss->fwork[12] = boss->fwork[13] = 0.0f; - } else if ((is4 == 16) && (boss->state == 0)) { - boss->swork[9] = 1; - boss->fwork[16] = 0.0f; - boss->fwork[15] = 255.0f; + this->swork[9] = 2; + this->swork[22] = 4; + this->fwork[6] = this->fwork[12] = this->fwork[13] = 0.0f; + } else if ((is4 == 16) && (this->state == 0)) { + this->swork[9] = 1; + this->fwork[16] = 0.0f; + this->fwork[15] = 255.0f; - if (boss->swork[22] < 3) { - boss->swork[22] = 3; + if (this->swork[22] < 3) { + this->swork[22] = 3; } } } - if (boss->dmgType == DMG_BEAM) { - boss->dmgType = DMG_NONE; - switch (boss->state) { + if (this->dmgType == DMG_BEAM) { + this->dmgType = DMG_NONE; + switch (this->state) { case 0: case 1: - is4 = D_i1_8019A500[boss->dmgPart]; + is4 = D_i1_8019A500[this->dmgPart]; if (D_i1_8019B838[is4].unk_00 > 0) { - if ((is4 != 14) || (boss->state != 0)) { - D_i1_8019B838[is4].unk_00 -= boss->damage; + if ((is4 != 14) || (this->state != 0)) { + D_i1_8019B838[is4].unk_00 -= this->damage; D_i1_8019B838[is4].unk_02[2] = 15; if (D_i1_8019B838[is4].unk_00 <= 0) { - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, boss->sfxSource, 4); - AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_BROKEN, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, this->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_BROKEN, this->sfxSource, 4); D_i1_8019B838[is4].unk_00 = -1; D_i1_8019B838[is4].unk_02[0] = 16; D_i1_8019B838[is4].unk_02[1] = 0; D_i1_8019B838[is4].unk_7C |= 0xC; } else { - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); if (is4 == 14) { D_i1_8019B838[is4].unk_7C |= 8; } } } else { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } else { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } break; case 2: - if (D_i1_8019A500[boss->dmgPart] == 15) { - AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_DAMAGE, boss->sfxSource, 4); + if (D_i1_8019A500[this->dmgPart] == 15) { + AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_DAMAGE, this->sfxSource, 4); D_i1_8019B838[15].unk_02[2] = 10; D_i1_8019B838[15].unk_02[3] = 0; D_i1_8019B838[15].unk_7C |= 0x80; - if (boss->health > 0) { - boss->health -= boss->damage; - boss->timer_05A = 18; + if (this->health > 0) { + this->health -= this->damage; + this->timer_05A = 18; - if (boss->health <= 0) { + if (this->health <= 0) { gScreenFlashTimer = 8; gTeamLowHealthMsgTimer = -1; gKillEventActors = true; - AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, boss->sfxSource, 4); - boss->health = 0; + AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); + this->health = 0; } } } else { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } break; } } - switch (boss->state) { + switch (this->state) { case 0: case 1: for (spF4 = 0; spF4 < 33U; spF4++) { if (((gGameFrameCount % 4) == 0) && (D_i1_8019B7F0[spF4] != 0)) { is4 = D_i1_8019A500[spF4]; - if ((D_i1_8019B838[is4].unk_00 > 0) && ((is4 != 14) || (boss->state != 0))) { + if ((D_i1_8019B838[is4].unk_00 > 0) && ((is4 != 14) || (this->state != 0))) { D_i1_8019B838[is4].unk_00 -= 2; if (D_i1_8019B838[is4].unk_00 <= 0) { D_i1_8019B838[is4].unk_00 = -1; D_i1_8019B838[is4].unk_02[0] = 16; D_i1_8019B838[is4].unk_02[1] = 0; D_i1_8019B838[is4].unk_7C |= 0xC; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, boss->sfxSource, 4); - AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_BROKEN, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, this->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_BROKEN, this->sfxSource, 4); } else if (is4 == 14) { D_i1_8019B838[is4].unk_7C |= 8; } @@ -1641,22 +1644,22 @@ void Venom1_Boss_Update(Boss* boss) { } break; case 2: - if (((gGameFrameCount % 4) == 0) && (boss->timer_05A == 0)) { + if (((gGameFrameCount % 4) == 0) && (this->timer_05A == 0)) { for (spF4 = 0; spF4 < 33U; spF4++) { if ((D_i1_8019A500[spF4] == 15) && (D_i1_8019B7F0[spF4] != 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_DAMAGE, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_VEBOSS_DAMAGE, this->sfxSource, 4); D_i1_8019B838[15].unk_02[3] = 10; D_i1_8019B838[15].unk_02[4] = 0; D_i1_8019B838[15].unk_7C |= 0x80; - if (boss->health > 0) { - boss->health -= 10; - boss->timer_05A = 35; - if (boss->health <= 0) { + if (this->health > 0) { + this->health -= 10; + this->timer_05A = 35; + if (this->health <= 0) { gScreenFlashTimer = 8; gTeamLowHealthMsgTimer = -1; gKillEventActors = true; - AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, boss->sfxSource, 4); - boss->health = 0; + AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); + this->health = 0; } } } @@ -1669,130 +1672,130 @@ void Venom1_Boss_Update(Boss* boss) { for (spF4 = 0; spF4 < 17U; spF4++) { is4 += (D_i1_8019B838[spF4].unk_00 < 0) ? 0 : D_i1_8019B838[spF4].unk_00; } - boss->swork[30] = boss->health + is4; - gBossHealthBar = 255.0f * boss->swork[30] / boss->swork[29]; - switch (boss->state) { + this->swork[30] = this->health + is4; + gBossHealthBar = 255.0f * this->swork[30] / this->swork[29]; + switch (this->state) { case 4: case 5: break; case 1: - boss->fwork[6] += 5.0f; - Math_SmoothStepToF(&boss->fwork[16], boss->fwork[15], 1.0f, 4.0f, 0.01f); + this->fwork[6] += 5.0f; + Math_SmoothStepToF(&this->fwork[16], this->fwork[15], 1.0f, 4.0f, 0.01f); break; case 2: - boss->fwork[9] = 200.0f / (boss->health + 100.0f); - boss->fwork[8] -= boss->fwork[9]; - if (boss->fwork[8] < 0.0f) { - boss->fwork[8] = 22.0f; + this->fwork[9] = 200.0f / (this->health + 100.0f); + this->fwork[8] -= this->fwork[9]; + if (this->fwork[8] < 0.0f) { + this->fwork[8] = 22.0f; } break; case 3: - boss->fwork[9] = 200.0f / ((2.0f * boss->health) + 100.0f); - boss->fwork[8] -= boss->fwork[9]; - if (boss->fwork[8] <= 0.0f) { - boss->fwork[8] = 22.0f; + this->fwork[9] = 200.0f / ((2.0f * this->health) + 100.0f); + this->fwork[8] -= this->fwork[9]; + if (this->fwork[8] <= 0.0f) { + this->fwork[8] = 22.0f; } break; } - switch (boss->swork[6]) { + switch (this->swork[6]) { case 0: - temp_fs0 = gPlayer[0].trueZpos + boss->fwork[2]; - if (boss->swork[15] == 0) { - if (boss->obj.pos.z >= temp_fs0) { - if (boss->obj.pos.z > (gPlayer[0].trueZpos - 200.0f)) { - var_fv0 = Math_SmoothStepToF(&boss->obj.pos.z, temp_fs0, 0.5f, 35.0f, 0.01f); + temp_fs0 = gPlayer[0].trueZpos + this->fwork[2]; + if (this->swork[15] == 0) { + if (this->obj.pos.z >= temp_fs0) { + if (this->obj.pos.z > (gPlayer[0].trueZpos - 200.0f)) { + var_fv0 = Math_SmoothStepToF(&this->obj.pos.z, temp_fs0, 0.5f, 35.0f, 0.01f); } else { - var_fv0 = Math_SmoothStepToF(&boss->obj.pos.z, temp_fs0, 0.4f, 10.0f, 0.01f); + var_fv0 = Math_SmoothStepToF(&this->obj.pos.z, temp_fs0, 0.4f, 10.0f, 0.01f); } } else { - var_fv0 = Math_SmoothStepToF(&boss->obj.pos.z, temp_fs0, 0.2f, 25.0f, 0.01f); + var_fv0 = Math_SmoothStepToF(&this->obj.pos.z, temp_fs0, 0.2f, 25.0f, 0.01f); } - boss->fwork[11] = (-40.0f + var_fv0) / -40.0f; - if (boss->fwork[11] < 0.8f) { - boss->fwork[11] = 0.8f; + this->fwork[11] = (-40.0f + var_fv0) / -40.0f; + if (this->fwork[11] < 0.8f) { + this->fwork[11] = 0.8f; } if (fabsf(var_fv0) <= 2.0f) { - boss->swork[15] = 1; - boss->swork[14] = D_i1_8019A04C[boss->swork[13]][1]; + this->swork[15] = 1; + this->swork[14] = D_i1_8019A04C[this->swork[13]][1]; } } else { - if ((gPlayer[0].pos.z - boss->obj.pos.z < 500.0f) || (gPlayer[0].pos.z - boss->obj.pos.z > 8000.0f)) { - boss->swork[14] = 0; + if ((gPlayer[0].pos.z - this->obj.pos.z < 500.0f) || (gPlayer[0].pos.z - this->obj.pos.z > 8000.0f)) { + this->swork[14] = 0; } - if (boss->swork[14] <= 0) { - boss->swork[15] = 0; - boss->swork[13]++; - if (boss->swork[13] >= 3U) { - boss->swork[13] = 0; + if (this->swork[14] <= 0) { + this->swork[15] = 0; + this->swork[13]++; + if (this->swork[13] >= 3U) { + this->swork[13] = 0; } - boss->fwork[2] = D_i1_8019A04C[boss->swork[13]][0]; - boss->swork[14] = D_i1_8019A04C[boss->swork[13]][1]; + this->fwork[2] = D_i1_8019A04C[this->swork[13]][0]; + this->swork[14] = D_i1_8019A04C[this->swork[13]][1]; } else { - boss->swork[14]--; + this->swork[14]--; } } - boss->vel.z = -40.0f; + this->vel.z = -40.0f; break; case 1: - if ((boss->vel.y <= -10.0f) && (boss->swork[5] != 5)) { + if ((this->vel.y <= -10.0f) && (this->swork[5] != 5)) { spE8 = 1; } - if (boss->obj.pos.y < 0.f) { - boss->obj.pos.y = 0.f; - boss->vel.y = 0.f; - boss->gravity = 0.f; - boss->swork[6] = 2; - boss->swork[10] = 16; + if (this->obj.pos.y < 0.f) { + this->obj.pos.y = 0.f; + this->vel.y = 0.f; + this->gravity = 0.f; + this->swork[6] = 2; + this->swork[10] = 16; gCameraShake = 40; - boss->swork[23] = RAND_FLOAT(5.0f); - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_LAND, boss->sfxSource, 4); + this->swork[23] = RAND_FLOAT(5.0f); + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_LAND, this->sfxSource, 4); spB8 = 3; - boss->swork[28] = 5; + this->swork[28] = 5; } break; case 2: - boss->vel.z *= 0.7f; + this->vel.z *= 0.7f; break; case 4: - temp_fs0 = gPlayer[0].pos.z + boss->fwork[2]; - if (temp_fs0 <= boss->obj.pos.z) { - var_fv0 = Math_SmoothStepToF(&boss->obj.pos.z, temp_fs0, 0.4f, 20.0f, 0.01f); + temp_fs0 = gPlayer[0].pos.z + this->fwork[2]; + if (temp_fs0 <= this->obj.pos.z) { + var_fv0 = Math_SmoothStepToF(&this->obj.pos.z, temp_fs0, 0.4f, 20.0f, 0.01f); } else { - var_fv0 = Math_SmoothStepToF(&boss->obj.pos.z, temp_fs0, 0.2f, 30.0f, 0.01f); + var_fv0 = Math_SmoothStepToF(&this->obj.pos.z, temp_fs0, 0.2f, 30.0f, 0.01f); } - if (boss->state < 4) { - boss->fwork[11] = (-40.0f + var_fv0) / -40.0f; - if (boss->fwork[11] < 0.8f) { - boss->fwork[11] = 0.8f; + if (this->state < 4) { + this->fwork[11] = (-40.0f + var_fv0) / -40.0f; + if (this->fwork[11] < 0.8f) { + this->fwork[11] = 0.8f; } } - temp_fs0 = gPlayer[0].trueZpos + boss->fwork[2] - boss->obj.pos.z; - if ((fabsf(temp_fs0) <= 70.0f) && (boss->state == 3)) { - boss->swork[5] = D_i1_8019AD2C[4].unk_0->unk_0; - boss->swork[4] = boss->swork[4]; - boss->fwork[0] = 0.0f; - boss->fwork[10] = 0.0f; - boss->fwork[11] = 1.0f; - boss->swork[7] = 2; - boss->swork[9] = 4; - boss->swork[1] = 4; - boss->swork[2] = 0; - boss->swork[6] = 5; - boss->timer_050 = 3; - boss->timer_052 = 150; + temp_fs0 = gPlayer[0].trueZpos + this->fwork[2] - this->obj.pos.z; + if ((fabsf(temp_fs0) <= 70.0f) && (this->state == 3)) { + this->swork[5] = D_i1_8019AD2C[4].unk_0->unk_0; + this->swork[4] = this->swork[4]; + this->fwork[0] = 0.0f; + this->fwork[10] = 0.0f; + this->fwork[11] = 1.0f; + this->swork[7] = 2; + this->swork[9] = 4; + this->swork[1] = 4; + this->swork[2] = 0; + this->swork[6] = 5; + this->timer_050 = 3; + this->timer_052 = 150; } - boss->vel.z = -40.0f; + this->vel.z = -40.0f; break; case 5: - boss->vel.z = gPlayer[0].vel.z; + this->vel.z = gPlayer[0].vel.z; break; case 3: - Math_SmoothStepToF(&boss->vel.z, 0.0f, 0.5f, 0.3f, 0.01f); + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.5f, 0.3f, 0.01f); break; case 6: break; } - switch (boss->swork[5]) { + switch (this->swork[5]) { case 0: case 1: case 2: @@ -1801,31 +1804,31 @@ void Venom1_Boss_Update(Boss* boss) { case 5: case 6: case 7: - Animation_GetFrameData(D_i1_8019ACD4[boss->swork[5]], boss->fwork[10], sp118); + Animation_GetFrameData(D_i1_8019ACD4[this->swork[5]], this->fwork[10], sp118); break; case 8: break; } - if ((boss->swork[5] == 0) || (boss->swork[5] == 1) || (boss->swork[5] == 3)) { + if ((this->swork[5] == 0) || (this->swork[5] == 1) || (this->swork[5] == 3)) { if (1) {} - switch (boss->swork[27]) { + switch (this->swork[27]) { case 0: - if (boss->fwork[10] > 14.0f) { - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_WALK, boss->sfxSource, 4); - boss->swork[27]++; + if (this->fwork[10] > 14.0f) { + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_WALK, this->sfxSource, 4); + this->swork[27]++; } break; case 1: - if (boss->fwork[10] > 45.0f) { - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_WALK, boss->sfxSource, 4); - boss->swork[27]++; + if (this->fwork[10] > 45.0f) { + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_WALK, this->sfxSource, 4); + this->swork[27]++; } break; case 2: break; } } - switch (boss->swork[5]) { + switch (this->swork[5]) { case 0: case 1: case 3: @@ -1834,18 +1837,18 @@ void Venom1_Boss_Update(Boss* boss) { case 6: break; case 7: - if (boss->timer_052 >= 37) { - if (boss->timer_050 == 1) { - boss->swork[11] |= 4; - } else if (boss->timer_050 == 0) { - spF8.x = boss->obj.pos.x + boss->fwork[3]; - spF8.y = boss->obj.pos.y + boss->fwork[4]; - spF8.z = boss->obj.pos.z + boss->fwork[5]; + if (this->timer_052 >= 37) { + if (this->timer_050 == 1) { + this->swork[11] |= 4; + } else if (this->timer_050 == 0) { + spF8.x = this->obj.pos.x + this->fwork[3]; + spF8.y = this->obj.pos.y + this->fwork[4]; + spF8.z = this->obj.pos.z + this->fwork[5]; func_effect_8007D2C8(spF8.x, spF8.y, spF8.z, 5.0f); - boss->timer_050 = 3; + this->timer_050 = 3; } } - switch (boss->timer_052) { + switch (this->timer_052) { case 126: D_i1_8019B838[6].unk_7C |= 0x800; D_i1_8019B838[6].unk_60 = 10.0f; @@ -1855,8 +1858,8 @@ void Venom1_Boss_Update(Boss* boss) { break; case 122: gCameraShake = 20; - boss->swork[28] = 7; - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, boss->sfxSource, 4); + this->swork[28] = 7; + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, this->sfxSource, 4); D_i1_8019B838[2].unk_60 = 5.0f; D_i1_8019B838[2].unk_7C |= 0x800; D_i1_8019B838[5].unk_7C |= 0x800; @@ -1871,8 +1874,8 @@ void Venom1_Boss_Update(Boss* boss) { break; case 118: gCameraShake = 30; - boss->swork[28] = 7; - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, boss->sfxSource, 4); + this->swork[28] = 7; + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, this->sfxSource, 4); D_i1_8019B838[8].unk_7C |= 0x800; D_i1_8019B838[8].unk_60 = 10.0f; break; @@ -1880,12 +1883,12 @@ void Venom1_Boss_Update(Boss* boss) { D_i1_8019B838[7].unk_7C |= 0x20; break; case 91: - boss->swork[28] = 7; - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, boss->sfxSource, 4); + this->swork[28] = 7; + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, this->sfxSource, 4); break; case 78: - boss->swork[28] = 7; - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, boss->sfxSource, 4); + this->swork[28] = 7; + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, this->sfxSource, 4); gCameraShake = 20; D_i1_8019B838[10].unk_7C |= 0x800; D_i1_8019B838[10].unk_60 = 10.0f; @@ -1894,8 +1897,8 @@ void Venom1_Boss_Update(Boss* boss) { D_i1_8019B838[9].unk_7C |= 0x20; break; case 66: - boss->swork[28] = 7; - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, boss->sfxSource, 4); + this->swork[28] = 7; + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, this->sfxSource, 4); D_i1_8019B838[11].unk_7C |= 0x20; break; case 65: @@ -1911,10 +1914,10 @@ void Venom1_Boss_Update(Boss* boss) { D_i1_8019B838->unk_7C |= 0x20; break; case 60: - spF8.x = boss->obj.pos.x + boss->fwork[3]; - spF8.y = boss->obj.pos.y + boss->fwork[4]; - spF8.z = boss->obj.pos.z + boss->fwork[5]; - func_effect_8007BFFC(spF8.x, spF8.y, spF8.z, 0, 0, 0, 25.0f, 5); + spF8.x = this->obj.pos.x + this->fwork[3]; + spF8.y = this->obj.pos.y + this->fwork[4]; + spF8.z = this->obj.pos.z + this->fwork[5]; + Effect386_Spawn1(spF8.x, spF8.y, spF8.z, 0, 0, 0, 25.0f, 5); gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; gFillScreenAlpha = gFillScreenAlphaTarget = 255; break; @@ -1926,7 +1929,7 @@ void Venom1_Boss_Update(Boss* boss) { gFillScreenAlpha = gFillScreenAlphaTarget = 0; break; case 50: - boss->swork[25] = 1; + this->swork[25] = 1; for (spF4 = 0; spF4 < ARRAY_COUNTU(D_i1_8019B838); spF4++) { if (!(D_i1_8019B838[spF4].unk_7C & 1)) { D_i1_8019B838[spF4].unk_7C |= 0x20; @@ -1934,14 +1937,14 @@ void Venom1_Boss_Update(Boss* boss) { } break; case 49: - Boss_AwardBonus(boss); - gShowBossHealth = 0; - boss->swork[28] = 9; - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, boss->sfxSource, 4); - boss->swork[26] = 1; - boss->info.hitbox = gNoHitbox; - boss->drawShadow = false; - func_effect_8007A568(boss->obj.pos.x, boss->obj.pos.y + 10.0f, boss->obj.pos.z, 40.0f); + Boss_AwardBonus(this); + gShowBossHealth = false; + this->swork[28] = 9; + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_BOUND, this->sfxSource, 4); + this->swork[26] = 1; + this->info.hitbox = gNoHitbox; + this->drawShadow = false; + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y + 10.0f, this->obj.pos.z, 40.0f); gCameraShake = 40; break; case 12: @@ -1949,42 +1952,42 @@ void Venom1_Boss_Update(Boss* boss) { gFillScreenAlpha = 0; gFillScreenAlphaTarget = 255; gFillScreenAlphaStep = 5; - boss->obj.status = OBJ_DYING; - boss->timer_052 = 80; + this->obj.status = OBJ_DYING; + this->timer_052 = 80; break; } break; case 2: - if (boss->fwork[10] >= 16.0f) { - switch (boss->swork[18]) { + if (this->fwork[10] >= 16.0f) { + switch (this->swork[18]) { case 0: - boss->swork[18]++; - boss->swork[11] |= 1; + this->swork[18]++; + this->swork[11] |= 1; break; case 1: - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_ATTACK, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_ATTACK, this->sfxSource, 4); gCameraShake = 40; - boss->swork[28] = 5; + this->swork[28] = 5; spB8 = spB4 = 1; - boss->swork[18]++; + this->swork[18]++; break; case 2: break; } } - if (boss->fwork[10] >= 43.0f) { - switch (boss->swork[19]) { + if (this->fwork[10] >= 43.0f) { + switch (this->swork[19]) { case 0: - boss->swork[19]++; - boss->swork[11] |= 2; + this->swork[19]++; + this->swork[11] |= 2; break; case 1: spB4 = 1; - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_ATTACK, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_ATTACK, this->sfxSource, 4); gCameraShake = 40; - boss->swork[28] = 5; + this->swork[28] = 5; spB8 = 2; - boss->swork[19]++; + this->swork[19]++; break; case 2: break; @@ -1992,105 +1995,105 @@ void Venom1_Boss_Update(Boss* boss) { } break; } - switch (boss->swork[7]) { + switch (this->swork[7]) { case 0: - if (boss->fwork[11] < 0.9f) { - Math_SmoothStepToF(&boss->fwork[0], 0.2f, 0.5f, 0.05f, 0.01f); - Math_SmoothStepToVec3fArray(sp118, boss->vwork, 1, 27, boss->fwork[0], 360.0f, 0.01f); + if (this->fwork[11] < 0.9f) { + Math_SmoothStepToF(&this->fwork[0], 0.2f, 0.5f, 0.05f, 0.01f); + Math_SmoothStepToVec3fArray(sp118, this->vwork, 1, 27, this->fwork[0], 360.0f, 0.01f); } else { - Math_SmoothStepToF(&boss->fwork[0], 1.0f, 0.5f, 0.05f, 0.01f); - Math_SmoothStepToVec3fArray(sp118, boss->vwork, 1, 27, boss->fwork[0], 360.0f, 0.01f); + Math_SmoothStepToF(&this->fwork[0], 1.0f, 0.5f, 0.05f, 0.01f); + Math_SmoothStepToVec3fArray(sp118, this->vwork, 1, 27, this->fwork[0], 360.0f, 0.01f); } break; case 1: - Math_SmoothStepToF(&boss->fwork[0], 1.0f, 0.1f, 0.05f, 0.01f); - Math_SmoothStepToVec3fArray(sp118, boss->vwork, 1, 27, boss->fwork[0], 360.0f, 0.01f); + Math_SmoothStepToF(&this->fwork[0], 1.0f, 0.1f, 0.05f, 0.01f); + Math_SmoothStepToVec3fArray(sp118, this->vwork, 1, 27, this->fwork[0], 360.0f, 0.01f); break; case 2: - Math_SmoothStepToF(&boss->fwork[0], 0.7f, 0.07f, 0.05f, 0.01f); - Math_SmoothStepToVec3fArray(sp118, boss->vwork, 1, 27, boss->fwork[0], 45.0f, 0.01f); + Math_SmoothStepToF(&this->fwork[0], 0.7f, 0.07f, 0.05f, 0.01f); + Math_SmoothStepToVec3fArray(sp118, this->vwork, 1, 27, this->fwork[0], 45.0f, 0.01f); break; } - switch (boss->swork[5]) { + switch (this->swork[5]) { case 0: case 1: case 2: case 3: case 6: - boss->fwork[10] += boss->fwork[11]; - if ((s32) boss->fwork[10] >= Animation_GetFrameCount(D_i1_8019ACD4[boss->swork[5]])) { + this->fwork[10] += this->fwork[11]; + if ((s32) this->fwork[10] >= Animation_GetFrameCount(D_i1_8019ACD4[this->swork[5]])) { spE8 = 1; } break; case 4: - if ((s32) boss->fwork[10] == 17) { + if ((s32) this->fwork[10] == 17) { if (gPlayer[0].vel.z < 0.0f) { - boss->vel.z = 2.0f * gPlayer[0].vel.z; + this->vel.z = 2.0f * gPlayer[0].vel.z; } else { - boss->vel.z = 0.0f; + this->vel.z = 0.0f; } - boss->swork[6] = 1; - boss->gravity = 3.0f; - boss->vel.y = 30.0f; + this->swork[6] = 1; + this->gravity = 3.0f; + this->vel.y = 30.0f; } - if (boss->fwork[10] < (Animation_GetFrameCount(D_i1_8019ACD4[boss->swork[5]]) - 1)) { - boss->fwork[10] += 1.0f; + if (this->fwork[10] < (Animation_GetFrameCount(D_i1_8019ACD4[this->swork[5]]) - 1)) { + this->fwork[10] += 1.0f; } break; case 5: - if ((s32) boss->fwork[10] == 2) { - boss->swork[17] = 5; + if ((s32) this->fwork[10] == 2) { + this->swork[17] = 5; } - if (boss->fwork[10] > 1.0f) { - boss->fwork[10] += -1.0f; - } else if (boss->swork[17] > 0) { - boss->swork[17]--; + if (this->fwork[10] > 1.0f) { + this->fwork[10] += -1.0f; + } else if (this->swork[17] > 0) { + this->swork[17]--; } else { spE8 = 1; } break; case 7: - if (boss->fwork[10] < (Animation_GetFrameCount(D_i1_8019ACD4[boss->swork[5]]) - 1.0f)) { - boss->fwork[10] += boss->fwork[11]; - Math_SmoothStepToF(&boss->fwork[11], 0.5f, 0.7f, 0.02f, 0.01f); - if (boss->fwork[11] < 0.7f) { - boss->fwork[11] = 0.7f; + if (this->fwork[10] < (Animation_GetFrameCount(D_i1_8019ACD4[this->swork[5]]) - 1.0f)) { + this->fwork[10] += this->fwork[11]; + Math_SmoothStepToF(&this->fwork[11], 0.5f, 0.7f, 0.02f, 0.01f); + if (this->fwork[11] < 0.7f) { + this->fwork[11] = 0.7f; } } else { - boss->swork[9] = 5; + this->swork[9] = 5; } break; case 8: break; } - temp_fv1 = gPlayer[0].pos.z - boss->obj.pos.z; - // is0 = boss->swork[1]; - // is5 = boss->swork[2]; + temp_fv1 = gPlayer[0].pos.z - this->obj.pos.z; + // is0 = this->swork[1]; + // is5 = this->swork[2]; // pad1 = spE8; // probably fake, but unclear how to resolve if (spE8 != 0) { - pad2 = D_i1_8019AD2C[boss->swork[1]].unk_0; - if ((pad2[boss->swork[2]].unk_2 & 1) && (boss->swork[3] != 0)) { + pad2 = D_i1_8019AD2C[this->swork[1]].unk_0; + if ((pad2[this->swork[2]].unk_2 & 1) && (this->swork[3] != 0)) { spE4 = 1; - if (boss->swork[3] > 0) { - boss->swork[3]--; + if (this->swork[3] > 0) { + this->swork[3]--; } } } - if ((D_i1_8019C0BC != 0) && (boss->state >= 3)) { + if ((D_i1_8019C0BC != 0) && (this->state >= 3)) { D_i1_8019C0BC = 0; } - if ((D_i1_8019C0BC != 0) && (boss->swork[1] != 2) && (boss->state < 3)) { + if ((D_i1_8019C0BC != 0) && (this->swork[1] != 2) && (this->state < 3)) { spE8 |= 2; spE4 = 1; } if (spE8 != 0) { - is0 = boss->swork[1]; - is5 = boss->swork[2] - spE4 + 1; - is1 = boss->swork[4]; + is0 = this->swork[1]; + is5 = this->swork[2] - spE4 + 1; + is1 = this->swork[4]; if (D_i1_8019C0BC != 0) { if (temp_fv1 < 5000.0f) { - boss->swork[24] = D_i1_8019C0BC - 1; + this->swork[24] = D_i1_8019C0BC - 1; is5 = 0; is0 = 2; } else { @@ -2104,7 +2107,7 @@ void Venom1_Boss_Update(Boss* boss) { // spE8 = pad1; do { is4 = 0; - is1 = boss->swork[4] + 1; + is1 = this->swork[4] + 1; is0 = D_i1_8019AD54[is1]; if (is0 == -1) { is0 = D_i1_8019AD54[0]; @@ -2112,7 +2115,7 @@ void Venom1_Boss_Update(Boss* boss) { } if (((is0 == 2) && (temp_fv1 < 5000.0f)) || ((is0 == 1) && (D_i1_8019C0B8 == 0)) || ((is0 == 0) && (D_i1_8019C0B8 == 1))) { - boss->swork[4] = is1; + this->swork[4] = is1; is4 = 1; } if (D_i1_8019C0B8 >= 2) { @@ -2121,22 +2124,22 @@ void Venom1_Boss_Update(Boss* boss) { switch (is0) { case 1: if (is3 > 0) { - boss->swork[3] = is3 - 1; + this->swork[3] = is3 - 1; } else { is4 = 1; - boss->swork[4] = is1; + this->swork[4] = is1; } break; case 0: if (ia0 > 0) { - boss->swork[3] = ia0 - 1; + this->swork[3] = ia0 - 1; } else { is4 = 1; - boss->swork[4] = is1; + this->swork[4] = is1; } break; case 3: - boss->swork[3] = -1; + this->swork[3] = -1; break; } } @@ -2149,82 +2152,82 @@ void Venom1_Boss_Update(Boss* boss) { pad2 = D_i1_8019AD2C[is0].unk_0; is2 = pad2[is5].unk_0; if (spE8 != 0) { - boss->swork[27] = 0; + this->swork[27] = 0; switch (is2) { case 2: - boss->swork[23] = RAND_FLOAT(2.0f); - boss->swork[18] = 0; - boss->swork[19] = 0; + this->swork[23] = RAND_FLOAT(2.0f); + this->swork[18] = 0; + this->swork[19] = 0; /* fallthrough */ case 3: if ((is2 == 3) && (D_i1_8019C0B8 == 2)) { is2 = 2; is5--; - boss->swork[18] = 0; - boss->swork[19] = 0; + this->swork[18] = 0; + this->swork[19] = 0; } /* fallthrough */ case 0: case 1: - boss->swork[6] = 0; - boss->fwork[10] = 0; - if (boss->swork[5] == 5) { - boss->fwork[0] = 0; - boss->swork[7] = 1; + this->swork[6] = 0; + this->fwork[10] = 0; + if (this->swork[5] == 5) { + this->fwork[0] = 0; + this->swork[7] = 1; } else { - boss->swork[7] = 0; + this->swork[7] = 0; } break; case 4: - AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_JUMP, boss->sfxSource, 4); - boss->swork[7] = 1; - boss->fwork[10] = 0; - boss->gravity = 0; - boss->fwork[0] = 0; + AUDIO_PLAY_SFX(NA_SE_OB_VEBOSS_JUMP, this->sfxSource, 4); + this->swork[7] = 1; + this->fwork[10] = 0; + this->gravity = 0; + this->fwork[0] = 0; break; case 5: - boss->fwork[10] = Animation_GetFrameCount(D_i1_8019ACD4[boss->swork[5]]) - 1; - boss->swork[7] = 1; - boss->gravity = 0; - boss->fwork[0] = 0; + this->fwork[10] = Animation_GetFrameCount(D_i1_8019ACD4[this->swork[5]]) - 1; + this->swork[7] = 1; + this->gravity = 0; + this->fwork[0] = 0; break; case 6: - boss->fwork[10] = 0; + this->fwork[10] = 0; break; case 7: break; } - boss->swork[4] = is1; - boss->swork[1] = is0; - boss->swork[2] = is5; - boss->swork[5] = is2; + this->swork[4] = is1; + this->swork[1] = is0; + this->swork[2] = is5; + this->swork[5] = is2; } } - if ((boss->health <= 0) && (boss->state == 2) && (boss->swork[1] != 2) && (boss->obj.pos.y <= 0)) { - boss->swork[5] = D_i1_8019AD2C[3].unk_0->unk_0; - boss->swork[4] = boss->swork[4]; - boss->swork[9] = 3; - boss->swork[3] = -1; - boss->fwork[10] = 0; - boss->fwork[11] = 1.0f; - boss->fwork[2] = -2000.0f; - boss->swork[7] = 0; - boss->swork[1] = 3; - boss->swork[2] = 0; - boss->swork[6] = 4; + if ((this->health <= 0) && (this->state == 2) && (this->swork[1] != 2) && (this->obj.pos.y <= 0)) { + this->swork[5] = D_i1_8019AD2C[3].unk_0->unk_0; + this->swork[4] = this->swork[4]; + this->swork[9] = 3; + this->swork[3] = -1; + this->fwork[10] = 0; + this->fwork[11] = 1.0f; + this->fwork[2] = -2000.0f; + this->swork[7] = 0; + this->swork[1] = 3; + this->swork[2] = 0; + this->swork[6] = 4; SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0); } if ((spB4 == 1) || (spB4 == 2)) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &boss->fwork[3], &spF8); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[3], &spF8); effect->unk_78 = effect->unk_7A = 11; - effect->obj.pos.x = boss->obj.pos.x + spF8.x; - effect->obj.pos.y = boss->obj.pos.y + spF8.y; - effect->obj.pos.z = boss->obj.pos.z + spF8.z; + effect->obj.pos.x = this->obj.pos.x + spF8.x; + effect->obj.pos.y = this->obj.pos.y + spF8.y; + effect->obj.pos.z = this->obj.pos.z + spF8.z; effect->scale2 = 8.0f; effect->obj.rot.z = RAND_FLOAT(360.0f); @@ -2241,73 +2244,73 @@ void Venom1_Boss_Update(Boss* boss) { switch (spB8) { case 1: is3 = 0; - actor = gActors; - is4 = boss->swork[23]; - temp_fs0 = boss->obj.pos.z; + actor = &gActors[0]; + is4 = this->swork[23]; + temp_fs0 = this->obj.pos.z; var_fv0 = -1500.0f; for (spF4 = 0; spF4 < ARRAY_COUNT(gActors); spF4++, actor++) { if (actor->obj.status == OBJ_FREE) { - while ((is3 <= boss->swork[22]) && + while ((is3 <= this->swork[22]) && ((temp_fs0 + D_i1_80199CD0[is4][is3].z) >= (var_fv0 + gPlayer[0].trueZpos))) { is3++; } - if (is3 <= boss->swork[22]) { + if (is3 <= this->swork[22]) { Actor_Initialize(actor); actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_280; + actor->obj.id = OBJ_ACTOR_VE1_PILLAR_1; actor->obj.pos.x = D_i1_80199CD0[is4][is3].x; actor->obj.pos.y = D_i1_80199CD0[is4][is3].y; - actor->obj.pos.z = D_i1_80199CD0[is4][is3].z + boss->obj.pos.z; + actor->obj.pos.z = D_i1_80199CD0[is4][is3].z + this->obj.pos.z; actor->state = 1; Object_SetInfo(&actor->info, actor->obj.id); } is3++; - if (is3 > boss->swork[22]) { + if (is3 > this->swork[22]) { break; } } - boss->swork[16] = 8; + this->swork[16] = 8; } break; case 2: is3 = 0; - actor = gActors; - is4 = boss->swork[23]; - temp_fs0 = boss->obj.pos.z; + actor = &gActors[0]; + is4 = this->swork[23]; + temp_fs0 = this->obj.pos.z; var_fv0 = -1500.0f; for (spF4 = 0; spF4 < ARRAY_COUNT(gActors); spF4++, actor++) { if (actor->obj.status == OBJ_FREE) { - while ((is3 < boss->swork[22]) && + while ((is3 < this->swork[22]) && (D_i1_80199B40[is4][is3].z + temp_fs0) >= (gPlayer[0].pos.z + var_fv0)) { is3++; } - if (is3 <= boss->swork[22]) { + if (is3 <= this->swork[22]) { Actor_Initialize(actor); actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_280; + actor->obj.id = OBJ_ACTOR_VE1_PILLAR_1; actor->obj.pos.x = D_i1_80199B40[is4][is3].x; actor->obj.pos.y = D_i1_80199B40[is4][is3].y; - actor->obj.pos.z = D_i1_80199B40[is4][is3].z + boss->obj.pos.z; + actor->obj.pos.z = D_i1_80199B40[is4][is3].z + this->obj.pos.z; actor->obj.rot.y = 180.0f; actor->state = 1; Object_SetInfo(&actor->info, actor->obj.id); } is3++; - if (is3 > boss->swork[22]) { + if (is3 > this->swork[22]) { break; } } } - boss->swork[16] = 8; + this->swork[16] = 8; break; case 3: - if (boss->swork[24] == 1) { + if (this->swork[24] == 1) { is3 = 0; - actor = gActors; - is4 = boss->swork[23]; - temp_fs0 = boss->obj.pos.z; + actor = &gActors[0]; + is4 = this->swork[23]; + temp_fs0 = this->obj.pos.z; var_fv0 = gPlayer[0].pos.z + -1500.0f; for (spF4 = 0; spF4 < ARRAY_COUNT(gActors); spF4++, actor++) { if (actor->obj.status == OBJ_FREE) { @@ -2317,10 +2320,10 @@ void Venom1_Boss_Update(Boss* boss) { if (is3 <= D_i1_80199E60[is4]) { Actor_Initialize(actor); actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_283; + actor->obj.id = OBJ_ACTOR_VE1_PILLAR_4; actor->obj.pos.x = D_i1_80199E6C[is4][is3].x; actor->obj.pos.y = D_i1_80199E6C[is4][is3].y; - actor->obj.pos.z = D_i1_80199E6C[is4][is3].z + boss->obj.pos.z; + actor->obj.pos.z = D_i1_80199E6C[is4][is3].z + this->obj.pos.z; actor->state = 1; Object_SetInfo(&actor->info, actor->obj.id); } @@ -2331,23 +2334,23 @@ void Venom1_Boss_Update(Boss* boss) { } } } - actor = gActors; + actor = &gActors[0]; for (spF4 = 0; spF4 < ARRAY_COUNT(gActors); spF4++, actor++) { - if (((actor->obj.id == OBJ_ACTOR_281) || (actor->obj.id == OBJ_ACTOR_282)) && (actor->state == 0) && - (100.f <= (actor->obj.pos.z - boss->obj.pos.z)) && - ((actor->obj.pos.z - boss->obj.pos.z) <= 2400.0f)) { + if (((actor->obj.id == OBJ_ACTOR_VE1_PILLAR_2) || (actor->obj.id == OBJ_ACTOR_VE1_PILLAR_3)) && + (actor->state == 0) && (100.f <= (actor->obj.pos.z - this->obj.pos.z)) && + ((actor->obj.pos.z - this->obj.pos.z) <= 2400.0f)) { actor->state = 1; } } - boss->swork[16] = 8; + this->swork[16] = 8; } } #else -void Venom1_Boss_Update(Boss* boss); -#pragma GLOBAL_ASM("asm/us/rev1/nonmatchings/overlays/ovl_i1/fox_ve1/Venom1_Boss_Update.s") +void Venom1_Ve1Golemech_Update(Ve1Golemech* this); +#pragma GLOBAL_ASM("asm/us/rev1/nonmatchings/overlays/ovl_i1/fox_ve1/Venom1_Ve1Golemech_Update.s") #endif -void Venom1_80198310(Boss* boss) { +void Venom1_Ve1Golemech_SetShadow(Ve1Golemech* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_65); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0); @@ -2381,18 +2384,18 @@ void Venom1_80198414(void) { Audio_KillSfxBySource(gPlayer[0].sfxSource); } -void Venom1_80198594(Boss* boss) { - boss->obj.pos.z = gPlayer[0].pos.z; - if ((boss->timer_052 <= 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { +void Venom1_Ve1Golemech_Dying(Ve1Golemech* this) { + this->obj.pos.z = gPlayer[0].pos.z; + if ((this->timer_052 <= 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { Venom1_80198414(); } } -void Venom1_Boss_Draw(Boss319* boss) { - if (boss->swork[26] == 0) { - Animation_DrawSkeleton(0, D_VE1_901C0F4, boss->vwork, Venom1_801937F4, Venom1_80193D64, boss, &gIdentityMatrix); +void Venom1_Ve1Golemech_Draw(Ve1Golemech* this) { + if (this->swork[26] == 0) { + Animation_DrawSkeleton(0, D_VE1_901C0F4, this->vwork, Venom1_801937F4, Venom1_80193D64, this, &gIdentityMatrix); } - boss->state = boss->swork[9]; + this->state = this->swork[9]; } void Venom1_8019864C(PlayerShot* shot) { @@ -2400,28 +2403,28 @@ void Venom1_8019864C(PlayerShot* shot) { s32 j; s32 count; f32* hitboxData; - Boss* boss; + Ve1Golemech* golemech = &gBosses[0]; Vec3f sp88; f32 temp_fs1; Vec3f sp78; Vec3f diff; - boss = gBosses; - for (i = 0; i < ARRAY_COUNT(gBosses); i++, boss++) { - if ((boss->obj.id == OBJ_BOSS_VE1) && (boss->obj.status == OBJ_ACTIVE) && (boss->timer_05A == 0)) { + for (i = 0; i < ARRAY_COUNT(gBosses); i++, golemech++) { + if ((golemech->obj.id == OBJ_BOSS_VE1_GOLEMECH) && (golemech->obj.status == OBJ_ACTIVE) && + (golemech->timer_05A == 0)) { temp_fs1 = shot->scale * 30.0f; - hitboxData = boss->info.hitbox; + hitboxData = golemech->info.hitbox; count = *hitboxData++; if (count != 0) { for (j = 0; j < count; j++, hitboxData += 6) { if (hitboxData[1] > -100.0f) { - Matrix_RotateZ(gCalcMatrix, -boss->obj.rot.z * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -boss->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateY(gCalcMatrix, -boss->obj.rot.y * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, -golemech->obj.rot.z * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -golemech->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, -golemech->obj.rot.y * M_DTOR, MTXF_APPLY); - sp88.x = shot->obj.pos.x - boss->obj.pos.x; - sp88.y = shot->obj.pos.y - boss->obj.pos.y; - sp88.z = shot->obj.pos.z - boss->obj.pos.z; + sp88.x = shot->obj.pos.x - golemech->obj.pos.x; + sp88.y = shot->obj.pos.y - golemech->obj.pos.y; + sp88.z = shot->obj.pos.z - golemech->obj.pos.z; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp88, &sp78); diff --git a/src/overlays/ovl_i2/fox_me.c b/src/overlays/ovl_i2/fox_me.c index e30a1917..fac00b76 100644 --- a/src/overlays/ovl_i2/fox_me.c +++ b/src/overlays/ovl_i2/fox_me.c @@ -50,7 +50,7 @@ void Meteo_ReflectDamage(Actor* this) { } } -void Meteo_Actor181_Update(Actor181* this) { +void Meteo_MeMeteor1_Update(MeMeteor1* this) { Vec3f vec; if (this->dmgType != DMG_NONE) { @@ -75,7 +75,7 @@ void Meteo_Actor181_Update(Actor181* this) { Meteo_ReflectDamage(this); } -void Meteo_Actor182_Update(Actor182* this) { +void Meteo_MeMeteor2_Update(MeMeteor2* this) { Vec3f vec; this->obj.rot.y += 1.7f; @@ -114,7 +114,7 @@ void Meteo_Actor182_Update(Actor182* this) { Meteo_ReflectDamage(this); } -void Meteo_Actor187_Update(Actor187* this) { +void Meteo_MeLaserCannon2_Update(MeLaserCannon2* this) { Vec3f dest; Vec3f src; @@ -136,7 +136,7 @@ void Meteo_Actor187_Update(Actor187* this) { Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); Object_Kill(&this->obj, this->sfxSource); func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 5.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 3.0f, 10); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 3.0f, 10); } if (this->timer_0BC == 0) { @@ -147,7 +147,7 @@ void Meteo_Actor187_Update(Actor187* this) { } } -void Meteo_Actor186_Update(Actor186* this) { +void Meteo_MeLaserCannon1_Update(MeLaserCannon1* this) { Vec3f vec; s32 pad[2]; @@ -159,8 +159,8 @@ void Meteo_Actor186_Update(Actor186* this) { Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); Object_Kill(&this->obj, this->sfxSource); func_effect_8007D0E0(this->obj.pos.x - this->vel.x, this->obj.pos.y, this->obj.pos.z - this->vel.z, 8.0f); - func_effect_8007BFFC(this->obj.pos.x - this->vel.x, this->obj.pos.y + 30.0f, this->obj.pos.z - this->vel.z, - 0.0f, 0.0f, 0.0f, 4.0f, 10); + Effect386_Spawn1(this->obj.pos.x - this->vel.x, this->obj.pos.y + 30.0f, this->obj.pos.z - this->vel.z, 0.0f, + 0.0f, 0.0f, 4.0f, 10); } if ((gGameFrameCount % 8) == 0) { @@ -171,7 +171,7 @@ void Meteo_Actor186_Update(Actor186* this) { } } -void Meteo_80187B08(Actor186* this) { +void Meteo_80187B08(MeLaserCannon1* this) { this->obj.rot.y += 7.0f; this->obj.rot.x += 3.3f; @@ -194,8 +194,8 @@ void Meteo_80187B08(Actor186* this) { Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); Object_Kill(&this->obj, this->sfxSource); func_effect_8007D0E0(this->obj.pos.x - this->vel.x, this->obj.pos.y, this->obj.pos.z - this->vel.z, 8.0f); - func_effect_8007BFFC(this->obj.pos.x - this->vel.x, this->obj.pos.y + 30.0f, this->obj.pos.z - this->vel.z, - 0.0f, 0.0f, 0.0f, 4.0f, 10); + Effect386_Spawn1(this->obj.pos.x - this->vel.x, this->obj.pos.y + 30.0f, this->obj.pos.z - this->vel.z, 0.0f, + 0.0f, 0.0f, 4.0f, 10); } } @@ -297,7 +297,7 @@ void Meteo_80187FF8(Effect371* this, f32 x, f32 y, f32 z) { Object_SetInfo(&this->info, this->obj.id); } -void Meteo_80188088(Boss297* this) { +void Meteo_80188088(MeCrusher* this) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { @@ -316,7 +316,7 @@ void Meteo_80188088(Boss297* this) { } } -void Meteo_801881A8(Effect370* this, f32 x, f32 y, f32 z, f32 zRot, s32 arg5) { +void Meteo_Effect370_Setup1(Effect370* this, f32 x, f32 y, f32 z, f32 zRot, s32 arg5) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_370; @@ -331,30 +331,30 @@ void Meteo_801881A8(Effect370* this, f32 x, f32 y, f32 z, f32 zRot, s32 arg5) { Object_SetInfo(&this->info, this->obj.id); } -void Meteo_80188228(f32 x, f32 y, f32 z, f32 zRot) { +void Meteo_Effect370_Spawn1(f32 x, f32 y, f32 z, f32 zRot) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Meteo_801881A8(&gEffects[i], x, y, z, zRot, 0); + Meteo_Effect370_Setup1(&gEffects[i], x, y, z, zRot, 0); break; } } } -void Meteo_80188298(f32 x, f32 y, f32 z, f32 zRot) { +void Meteo_Effect370_Spawn2(f32 x, f32 y, f32 z, f32 zRot) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Meteo_801881A8(&gEffects[i], x, y, z, zRot, -1); + Meteo_Effect370_Setup1(&gEffects[i], x, y, z, zRot, -1); AUDIO_PLAY_SFX(NA_SE_EN_GRN_BEAM_SHOT, gEffects[i].sfxSource, 4); break; } } } -void Meteo_Boss298_Update(Boss298* this) { +void Meteo_MeCrusherShield_Update(MeCrusherShield* this) { Vec3f src; Vec3f dest; f32 temp; @@ -421,12 +421,12 @@ void Meteo_Boss298_Update(Boss298* this) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - Meteo_80188298(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, - this->obj.rot.z - 45.0f); - Meteo_80188228(this->obj.pos.x - dest.x, this->obj.pos.y - dest.y, this->obj.pos.z + dest.z, - this->obj.rot.z - 45.0f); - Meteo_80188228(this->obj.pos.x + dest.y, this->obj.pos.y - dest.x, this->obj.pos.z + dest.z, - (this->obj.rot.z - 45.0f) + 90.0f); + Meteo_Effect370_Spawn2(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, + this->obj.rot.z - 45.0f); + Meteo_Effect370_Spawn1(this->obj.pos.x - dest.x, this->obj.pos.y - dest.y, this->obj.pos.z + dest.z, + this->obj.rot.z - 45.0f); + Meteo_Effect370_Spawn1(this->obj.pos.x + dest.y, this->obj.pos.y - dest.x, this->obj.pos.z + dest.z, + (this->obj.rot.z - 45.0f) + 90.0f); } } break; @@ -441,8 +441,8 @@ void Meteo_Boss298_Update(Boss298* this) { case 4: if (this->timer_050 == 0) { func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 500.0f, 30.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 500.0f, 0.0f, 0.0f, 0.0f, - 20.0f, 30); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 500.0f, 0.0f, 0.0f, 0.0f, 20.0f, + 30); this->state = 5; this->info.cullDistance = 1000.0f; @@ -468,7 +468,7 @@ void Meteo_Boss298_Update(Boss298* this) { } } -void Meteo_Boss298_Draw(Boss298* this) { +void Meteo_MeCrusherShield_Draw(MeCrusherShield* this) { s32 i; if ((this->timer_054 % 2) != 0) { @@ -502,7 +502,7 @@ void Meteo_Boss298_Draw(Boss298* this) { } } -void Meteo_Boss297_Init(Boss297* this) { +void Meteo_MeCrusher_Init(MeCrusher* this) { s32 i; AUDIO_PLAY_BGM(gBossBgms[gCurrentLevel]); @@ -525,7 +525,7 @@ void Meteo_Boss297_Init(Boss297* this) { Boss_Initialize(&gBosses[i]); gBosses[i].obj.status = OBJ_INIT; - gBosses[i].obj.id = OBJ_BOSS_298; + gBosses[i].obj.id = OBJ_BOSS_ME_CRUSHER_SHIELD; gBosses[i].obj.pos.x = this->obj.pos.x; gBosses[i].obj.pos.y = this->obj.pos.y; gBosses[i].obj.pos.z = this->obj.pos.z; @@ -535,7 +535,7 @@ void Meteo_Boss297_Init(Boss297* this) { AUDIO_PLAY_SFX(NA_SE_EN_BURNER_L, this->sfxSource, 4); } -void Meteo_80188B84(Effect369* this, f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 arg6, f32 arg7) { +void Meteo_Effect369_Setup(Effect369* this, f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 arg6, f32 arg7) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_369; @@ -555,12 +555,12 @@ void Meteo_80188B84(Effect369* this, f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f3 Object_SetInfo(&this->info, this->obj.id); } -void Meteo_80188C2C(f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 arg5, f32 arg6) { +void Meteo_Effect369_Spawn(f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 arg5, f32 arg6) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Meteo_80188B84(&gEffects[i], x, y, z, xRot, yRot, arg5, arg6); + Meteo_Effect369_Setup(&gEffects[i], x, y, z, xRot, yRot, arg5, arg6); return; } } @@ -604,8 +604,8 @@ void Meteo_Effect369_Update(Effect369* this) { this->vel.y = dest.y; this->vel.z = dest.z; - Meteo_80188C2C(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->obj.rot.x, this->obj.rot.y, - this->unk_60.z, 1.0f); + Meteo_Effect369_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->obj.rot.x, this->obj.rot.y, + this->unk_60.z, 1.0f); } else if (this->timer_50 == 0) { Object_Kill(&this->obj, this->sfxSource); } @@ -613,7 +613,7 @@ void Meteo_Effect369_Update(Effect369* this) { func_effect_8007A774(gPlayer, this, 90.0f); } -void Meteo_80188E8C(Effect370* this, f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 zRot, f32 scale) { +void Meteo_Effect370_Setup2(Effect370* this, f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 zRot, f32 scale) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_370; @@ -632,12 +632,12 @@ void Meteo_80188E8C(Effect370* this, f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f3 Object_SetInfo(&this->info, this->obj.id); } -void Meteo_80188F2C(f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 arg5, f32 scale) { +void Meteo_Effect370_Spawn3(f32 x, f32 y, f32 z, f32 xRot, f32 yRot, f32 arg5, f32 scale) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Meteo_80188E8C(&gEffects[i], x, y, z, xRot, yRot, arg5, scale); + Meteo_Effect370_Setup2(&gEffects[i], x, y, z, xRot, yRot, arg5, scale); return; } } @@ -664,9 +664,9 @@ void Meteo_Effect370_Update(Effect370* this) { this->vel.y = dest.y; this->vel.z = dest.z; - if (((gGameFrameCount % 2) == 0)) { - Meteo_80188F2C(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->obj.rot.x, this->obj.rot.y, - this->obj.rot.z, 5.0f); + if ((gGameFrameCount % 2) == 0) { + Meteo_Effect370_Spawn3(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->obj.rot.x, this->obj.rot.y, + this->obj.rot.z, 5.0f); } } else { this->unk_44 -= 8; @@ -719,7 +719,7 @@ void Meteo_Effect371_Update(Effect371* this) { func_effect_8007A774(gPlayer, this, 100.0f); } -void Meteo_801892F0(Boss297* this, s32 dmgPart) { +void Meteo_801892F0(MeCrusher* this, s32 dmgPart) { Vec3f dest; Vec3f src; @@ -727,19 +727,19 @@ void Meteo_801892F0(Boss297* this, s32 dmgPart) { if (dmgPart == 7) { func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y + 330.0f, this->obj.pos.z + 1020.0f, 15.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 330.0f, this->obj.pos.z + 1020.0f, 0.0f, 0.0f, 0.0f, - 7.0f, 20); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 330.0f, this->obj.pos.z + 1020.0f, 0.0f, 0.0f, 0.0f, 7.0f, + 20); } if (dmgPart == 5) { func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y - 330.0f, this->obj.pos.z + 1020.0f, 15.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y - 330.0f, this->obj.pos.z + 1020.0f, 0.0f, 0.0f, 0.0f, - 7.0f, 20); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y - 330.0f, this->obj.pos.z + 1020.0f, 0.0f, 0.0f, 0.0f, 7.0f, + 20); } if (dmgPart == 4) { func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 300.0f, 20.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 300.0f, 0.0f, 0.0f, 0.0f, 10.0f, 25); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 300.0f, 0.0f, 0.0f, 0.0f, 10.0f, 25); } if (dmgPart < 4) { @@ -755,8 +755,8 @@ void Meteo_801892F0(Boss297* this, s32 dmgPart) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); func_effect_8007D2C8(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, 10.0f); - func_effect_8007BFFC(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, 0.0f, 0.0f, - 0.0f, 5.0f, 15); + Effect386_Spawn1(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, 0.0f, 0.0f, 0.0f, + 5.0f, 15); } } @@ -778,7 +778,7 @@ void Meteo_80189624(void) { } } -void Meteo_Boss297_Update(Boss297* this) { +void Meteo_MeCrusher_Update(MeCrusher* this) { f32 sp7C; f32 rand; s32 i; @@ -1038,7 +1038,7 @@ void Meteo_Boss297_Update(Boss297* this) { if (this->swork[18] != 0) { s32 objId; - if (Hud_MissileSeekModeCheck(0) >= 4) { + if (ActorMissileSeek_ModeCheck(0) >= 4) { objId = OBJ_MISSILE_SEEK_PLAYER; } else { objId = OBJ_MISSILE_SEEK_TEAM; @@ -1426,12 +1426,12 @@ void Meteo_Boss297_Update(Boss297* this) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &D_i2_80195430[RAND_INT(19.9f)], &dest); if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C120(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, - this->vel.x, this->vel.y, this->vel.z, 0.3f, 20); + Effect_Effect390_Spawn(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, + this->vel.x, this->vel.y, this->vel.z, 0.3f, 20); } if (((gGameFrameCount % 4) == 0)) { - func_effect_8007BFFC(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, - this->vel.x, this->vel.y, this->vel.z, 10.0f, 10); + Effect386_Spawn1(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, + this->vel.x, this->vel.y, this->vel.z, 10.0f, 10); } this->vel.y = -5.0f; @@ -1443,7 +1443,7 @@ void Meteo_Boss297_Update(Boss297* this) { Object_Kill(&this->obj, this->sfxSource); } if (this->timer_050 == 20) { - func_effect_8007A568(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 80.0f); + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 80.0f); AUDIO_PLAY_SFX(NA_SE_EN_STAR_EXPLOSION, this->sfxSource, 4); gControllerRumbleTimers[0] = 60; for (i = 0; i < ARRAY_COUNT(gActors); i++) { @@ -1461,7 +1461,7 @@ void Meteo_Boss297_Update(Boss297* this) { case 5: case 10: case 15: - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 71.0f, 5); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 71.0f, 5); case 0: for (i = 0; i < ARRAY_COUNT(gEffects); i++) { @@ -1545,7 +1545,7 @@ void Meteo_8018B7C4(s32 arg0) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } -void Meteo_Boss297_Draw(Boss297* this) { +void Meteo_MeCrusher_Draw(MeCrusher* this) { s32 i; f32 var_fs0; f32 var_fs1; @@ -1799,10 +1799,10 @@ void Meteo_8018C77C(ActorCutscene* this, s32 arg1) { AUDIO_PLAY_SFX(NA_SE_GREATFOX_BURNER, this->sfxSource, 0); } -void Meteo_8018C8F4(Actor182* actor182, ActorCutscene* actorCs) { +void Meteo_8018C8F4(MeMeteor2* actor182, ActorCutscene* actorCs) { Actor_Initialize(actor182); actor182->obj.status = OBJ_INIT; - actor182->obj.id = OBJ_ACTOR_182; + actor182->obj.id = OBJ_ACTOR_ME_METEOR_2; actor182->obj.pos.x = RAND_FLOAT_CENTERED_SEEDED(2000.0f) + actorCs->obj.pos.x; actor182->obj.pos.y = RAND_FLOAT_CENTERED_SEEDED(2000.0f) + actorCs->obj.pos.y; @@ -1819,7 +1819,7 @@ void Meteo_8018C8F4(Actor182* actor182, ActorCutscene* actorCs) { void Meteo_8018CA10(Actor* actor182, ActorCutscene* actorCs, f32 x, f32 y, f32 z) { Actor_Initialize(actor182); actor182->obj.status = OBJ_INIT; - actor182->obj.id = OBJ_ACTOR_182; + actor182->obj.id = OBJ_ACTOR_ME_METEOR_2; actor182->obj.pos.x = actorCs->obj.pos.x + x; actor182->obj.pos.y = actorCs->obj.pos.y + y; @@ -1848,7 +1848,7 @@ void Meteo_8018CAD8(void) { Object_SetInfo(&actorCs->info, actorCs->obj.id); } -void Meteo_8018CB50(Effect346* this, Actor* actor) { +void Meteo_Effect346_Setup(Effect346* this, Actor* actor) { Effect_Initialize(this); this->obj.status = OBJ_ACTIVE; this->obj.id = OBJ_EFFECT_346; @@ -1868,7 +1868,7 @@ void Meteo_8018CB50(Effect346* this, Actor* actor) { Object_SetInfo(&this->info, this->obj.id); } -void Meteo_8018CCF8(ActorEvent* this) { +void Meteo_Effect346_Spawn(ActorEvent* this) { s32 i; s32 j; @@ -1877,7 +1877,7 @@ void Meteo_8018CCF8(ActorEvent* this) { for (i = 0; i < 25; ++i) { for (j = 0; j < ARRAY_COUNT(gEffects); j++) { if (gEffects[j].obj.status == OBJ_FREE) { - Meteo_8018CB50(&gEffects[j], this); + Meteo_Effect346_Setup(&gEffects[j], this); break; } } @@ -1901,7 +1901,7 @@ void Meteo_LevelStart(Player* player) { gFillScreenAlphaStep = 4; - PRINTF("Demo_Time %d\n"); + PRINTF("Demo_Time %d\n", gCsFrameCount); switch (player->csState) { case 0: @@ -2026,7 +2026,7 @@ void Meteo_LevelStart(Player* player) { if (gCsFrameCount == 340) { func_effect_8007D2C8(gActors[8].obj.pos.x, gActors[8].obj.pos.y, gActors[8].obj.pos.z, 10.0f); gActors[8].obj.status = OBJ_FREE; - Meteo_8018CCF8(&gActors[8]); + Meteo_Effect346_Spawn(&gActors[8]); } if (player->csEventTimer != 0) { @@ -2055,7 +2055,7 @@ void Meteo_LevelStart(Player* player) { gActors[player->meTargetIndex].obj.pos.y, gActors[player->meTargetIndex].obj.pos.z, 10.0f); gActors[player->meTargetIndex].obj.status = OBJ_FREE; - Meteo_8018CCF8(&gActors[player->meTargetIndex]); + Meteo_Effect346_Spawn(&gActors[player->meTargetIndex]); Object_Kill(&gPlayerShots[0].obj, gPlayerShots[0].sfxSource); } } @@ -2120,8 +2120,7 @@ void Meteo_LevelStart(Player* player) { Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[0], 20000.0f, 0.0f); } -// Actors from OBJ_ACTOR_183 to OBJ_ACTOR_185 -void Meteo_ActorDoodad_Update(Actor* this) { +void Meteo_MeteorShower_Update(Actor* this) { switch (this->state) { case 0: this->fwork[0] = RAND_FLOAT_CENTERED(10.0f); @@ -2134,22 +2133,19 @@ void Meteo_ActorDoodad_Update(Actor* this) { Meteo_ReflectDamage(this); } -// Little Meteor piece 1 -void Meteo_Actor183_Draw(Actor183* this) { +void Meteo_MeMeteorShower1_Draw(MeMeteorShower1* this) { RCP_SetupDL_60(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - gSPDisplayList(gMasterDisp++, D_ME_6017AD0); + gSPDisplayList(gMasterDisp++, aMeMeteorShower1DL); } -// Little Meteor piece 2 -void Meteo_Actor184_Draw(Actor184* this) { +void Meteo_MeMeteorShower2_Draw(MeMeteorShower2* this) { RCP_SetupDL_60(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - gSPDisplayList(gMasterDisp++, D_ME_6016240); + gSPDisplayList(gMasterDisp++, aMeMeteorShower2DL); } -// Little Meteor piece 3 -void Meteo_Actor185_Draw(Actor185* this) { +void Meteo_MeMeteorShower3_Draw(MeMeteorShower3* this) { RCP_SetupDL_60(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - gSPDisplayList(gMasterDisp++, D_ME_600CD60); + gSPDisplayList(gMasterDisp++, aMeMeteorShower3DL); } void Meteo_Effect370_Draw(Effect370* this) { diff --git a/src/overlays/ovl_i2/fox_sx.c b/src/overlays/ovl_i2/fox_sx.c index 30dde896..08c76137 100644 --- a/src/overlays/ovl_i2/fox_sx.c +++ b/src/overlays/ovl_i2/fox_sx.c @@ -12,8 +12,8 @@ Vec3f D_i2_80195650 = { 90.0f, 0.0f, 0.0f }; Vec3f D_i2_8019565C = { 73.0f, -102.0f, -80.0f }; Vec3f D_i2_80195668 = { 90.0f, 0.0f, 0.0f }; -bool SectorX_Boss_OverrideLimbDraw(s32, Gfx**, Vec3f*, Vec3f*, void*); -void SectorX_Boss_PostLimbDraw(s32, Vec3f*, void*); +bool SectorX_SxSpyborg_OverrideLimbDraw(s32, Gfx**, Vec3f*, Vec3f*, void*); +void SectorX_SxSpyborg_PostLimbDraw(s32, Vec3f*, void*); void SectorX_8018F030(void) { s32 i; @@ -38,8 +38,8 @@ void SectorX_8018F030(void) { } } -void SectorX_SlippyThrowToTitania(void) { - ActorSlippySX* slippy = &gActors[50]; +void SectorX_SxSlippy_Setup(void) { + SxSlippy* slippy = &gActors[50]; Actor_Initialize(slippy); slippy->obj.status = OBJ_INIT; @@ -54,7 +54,7 @@ void SectorX_SlippyThrowToTitania(void) { slippy->info.cullDistance = 100000.0f; } -void SectorX_SlippyShootBoss(ActorSlippySX* this) { +void SectorX_SxSlippy_ShootBoss(SxSlippy* this) { Vec3f src; Vec3f dest; @@ -72,7 +72,7 @@ void SectorX_SlippyShootBoss(ActorSlippySX* this) { this->rot_0F4.y + 180.0f, 0.0f); } -void SectorX_Slippy_Update(ActorSlippySX* this) { +void SectorX_SxSlippy_Update(SxSlippy* this) { f32 sp34; switch (this->animFrame) { @@ -96,10 +96,10 @@ void SectorX_Slippy_Update(ActorSlippySX* this) { } if (((gGameFrameCount % 4) == 0) && (Rand_ZeroOne() < 0.2f)) { - SectorX_SlippyShootBoss(this); + SectorX_SxSlippy_ShootBoss(this); } - if ((gBosses[0].unk_04C == 75) && (gBosses[0].state == 85)) { + if ((gBosses[0].animFrame == 75) && (gBosses[0].state == 85)) { this->animFrame = 2; this->vel.x = 10.0f; @@ -120,7 +120,7 @@ void SectorX_Slippy_Update(ActorSlippySX* this) { gProjectFar = 30000.0f; - SectorX_SlippyThrowToTitania(); + SectorX_SxSlippy_Setup(); } break; @@ -165,7 +165,7 @@ void SectorX_Slippy_Update(ActorSlippySX* this) { } } -void SectorX_Slippy_Draw(ActorSlippySX* this) { +void SectorX_SxSlippy_Draw(SxSlippy* this) { switch (this->animFrame) { case 0: gSPDisplayList(gMasterDisp++, D_SX_6020D20); @@ -264,19 +264,19 @@ void SectorX_8018FBBC(Vec3f* pos) { } } -void SectorX_Boss304_Update(Boss304* this) { +void SectorX_SxSpyborgLeftArm_Update(SxSpyborgLeftArm* this) { Vec3f sp2C; Vec3f sp20; if (this->state == 0) { - Animation_GetFrameData(&D_SX_60206DC, this->unk_04C, this->vwork); + Animation_GetFrameData(&D_SX_60206DC, this->animFrame, this->vwork); Math_Vec3fFromAngles(&sp20, this->obj.rot.x, this->obj.rot.y, 20.0f); this->vel.x = sp20.x; this->vel.y = sp20.y; this->vel.z = sp20.z; this->state++; } else { - if (this->obj.id == OBJ_BOSS_304) { + if (this->obj.id == OBJ_BOSS_SX_SPYBORG_LEFT_ARM) { sp2C.x = this->fwork[11]; sp2C.y = this->fwork[12]; sp2C.z = this->fwork[13]; @@ -294,9 +294,8 @@ void SectorX_Boss304_Update(Boss304* this) { } } -// Doors that open when the robot arm hits them? -void SectorX_Boss305_Update(Boss305* this) { - SectorX_Boss304_Update(this); +void SectorX_SxSpyborgRightArm_Update(SxSpyborgRightArm* this) { + SectorX_SxSpyborgLeftArm_Update(this); } bool SectorX_8018FF40(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { @@ -307,8 +306,8 @@ bool SectorX_8018FF40(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return 0; } -void SectorX_Boss304_Draw(Boss304* this) { - Animation_DrawSkeleton(3, D_SX_6020C68, this->vwork, SectorX_8018FF40, SectorX_Boss_PostLimbDraw, this, +void SectorX_SxSpyborgLeftArm_Draw(SxSpyborgLeftArm* this) { + Animation_DrawSkeleton(3, D_SX_6020C68, this->vwork, SectorX_8018FF40, SectorX_SxSpyborg_PostLimbDraw, this, gCalcMatrix); } @@ -320,12 +319,12 @@ bool SectorX_8018FFDC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return 0; } -void SectorX_Boss305_Draw(Boss305* this) { - Animation_DrawSkeleton(3, D_SX_6020C68, this->vwork, SectorX_8018FFDC, SectorX_Boss_PostLimbDraw, this, +void SectorX_SxSpyborgRightArm_Draw(SxSpyborgRightArm* this) { + Animation_DrawSkeleton(3, D_SX_6020C68, this->vwork, SectorX_8018FFDC, SectorX_SxSpyborg_PostLimbDraw, this, gCalcMatrix); } -void SectorX_Boss_Update(Spyborg* this) { +void SectorX_SxSpyborg_Update(SxSpyborg* this) { u8 attack; s32 i; Vec3f frameTable[50]; @@ -364,7 +363,7 @@ void SectorX_Boss_Update(Spyborg* this) { break; case 556: - gShowBossHealth = 1; + gShowBossHealth = true; break; case 540: @@ -418,15 +417,15 @@ void SectorX_Boss_Update(Spyborg* this) { AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); this->swork[3] -= this->damage; this->timer_054 = 20; - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z, this->vel.x, - this->vel.y, this->vel.z, 0.2f, 20); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 20); if (this->swork[3] <= 0) { - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 300.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, - 10.0f, 50); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 300.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, + 10.0f, 50); - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z, - this->vel.x, this->vel.y, this->vel.z, 0.15f, 70); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 70); for (i = 0; i < 10; i++) { Play_SpawnDebris(4, this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z); } @@ -438,7 +437,7 @@ void SectorX_Boss_Update(Spyborg* this) { this->timer_05C = 80; this->swork[1] = 0; this->fwork[0] = 0.0f; - this->unk_04C = 0; + this->animFrame = 0; this->swork[4] = 1; this->health = 1; this->swork[7] = 1; @@ -469,15 +468,15 @@ void SectorX_Boss_Update(Spyborg* this) { this->state = 20; this->timer_050 = 300; this->fwork[0] = 0.0f; - this->unk_04C = 0; + this->animFrame = 0; Radio_PlayMessage(gMsg_ID_5499, RCID_BOSS_SECTORX); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 300.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, - 10.0f, 50); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 300.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, + 10.0f, 50); - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z, - this->vel.x, this->vel.y, this->vel.z, 0.15f, 70); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 70); for (i = 0; i < 10; i++) { Play_SpawnDebris(4, this->obj.pos.x, this->obj.pos.y + 334.0f, -237.0f + this->obj.pos.z); @@ -496,8 +495,8 @@ void SectorX_Boss_Update(Spyborg* this) { this->timer_054 = 20; this->timer_05C = this->timer_054; - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 0.2f, 10); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.2f, 10); } else { Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_REFLECT); } @@ -518,7 +517,7 @@ void SectorX_Boss_Update(Spyborg* this) { this->swork[7] = 1; this->obj.pos.x = gPlayer[0].xPath; this->swork[0] = 0; - Animation_GetFrameData(&D_SX_60206DC, this->unk_04C, this->vwork); + Animation_GetFrameData(&D_SX_60206DC, this->animFrame, this->vwork); this->fwork[1] = -2000.0f; this->fwork[14] = 300.0f; this->fwork[17] = -300.0f; @@ -528,7 +527,7 @@ void SectorX_Boss_Update(Spyborg* this) { this->timer_050 = 450; this->swork[3] = 400; this->health = 300; - this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_SX_6032550); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aSxSpyborgHitbox); gBossActive = true; AUDIO_PLAY_BGM(gBossBgms[gCurrentLevel]); this->swork[6] = 1; @@ -545,16 +544,16 @@ void SectorX_Boss_Update(Spyborg* this) { if (fabsf(Math_SmoothStepToF(&this->fwork[16], 0.0f, 0.1f, 10.0f, 0)) < 8.0f) { Math_SmoothStepToF(&this->fwork[14], 0.0f, 0.2f, 10.0f, 0); if ((this->timer_050 % 8) == 0) { - func_effect_8007C120(this->obj.pos.x + 312.0f, this->obj.pos.y, this->obj.pos.z - 173.0f, - this->vel.x, this->vel.y, this->vel.z, 0.2f, 8); + Effect_Effect390_Spawn(this->obj.pos.x + 312.0f, this->obj.pos.y, this->obj.pos.z - 173.0f, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 8); } } if (fabsf(Math_SmoothStepToF(&this->fwork[19], 0.0f, 0.1f, 10.0f, 0)) < 8.0f) { Math_SmoothStepToF(&this->fwork[17], 0.0f, 0.2f, 10.0f, 0); if ((this->timer_050 % 8) == 0) { - func_effect_8007C120(this->obj.pos.x - 312.0f, this->obj.pos.y, this->obj.pos.z - 173.0f, - this->vel.x, this->vel.y, this->vel.z, 0.2f, 8); + Effect_Effect390_Spawn(this->obj.pos.x - 312.0f, this->obj.pos.y, this->obj.pos.z - 173.0f, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 8); } } @@ -570,14 +569,14 @@ void SectorX_Boss_Update(Spyborg* this) { case 100: this->fwork[1] = -2000.0f; - frameData = Animation_GetFrameData(&D_SX_60206DC, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_60206DC, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.05f, 0); - this->unk_04C++; + this->animFrame++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_60206DC)) { - this->unk_04C = 0; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_60206DC)) { + this->animFrame = 0; this->state = 1; this->fwork[0] = 0.0f; AUDIO_PLAY_SFX(NA_SE_EN_UNIT_COMBINE, this->sfxSource, 4); @@ -595,14 +594,14 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[44] = 5.0f; this->fwork[43] = 5.0f; - frameData = Animation_GetFrameData(&D_SX_6016E28, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_6016E28, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.05f, 0); - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_6016E28)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_6016E28)) { + this->animFrame = 0; this->state = 2; this->fwork[0] = 0.0f; this->swork[1] = 1; @@ -616,7 +615,7 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[3] = gPlayer[0].pos.x; this->fwork[2] = gPlayer[0].pos.y; - if (this->unk_04C > 60) { + if (this->animFrame > 60) { this->fwork[1] = -1000.0f; Math_SmoothStepToF(&this->fwork[42], 100.0f, 1.0f, 20.0f, 0); this->fwork[43] = this->fwork[44] = 10.0f; @@ -626,19 +625,19 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[43] = this->fwork[44] = 10.0f; } - if (this->unk_04C == 60) { + if (this->animFrame == 60) { AUDIO_PLAY_SFX(NA_SE_EN_THROW, this->sfxSource, 4); this->fwork[42] = 0.0f; } - frameData = Animation_GetFrameData(&D_SX_60123BC, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_60123BC, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.05f, 0); - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_60123BC)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_60123BC)) { + this->animFrame = 0; this->state = 3; this->fwork[42] = this->fwork[43] = this->fwork[44] = this->fwork[0] = 0.0f; this->swork[7] = 0; @@ -650,7 +649,7 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[3] = gPlayer[0].pos.x; this->fwork[2] = gPlayer[0].pos.y; - if (this->unk_04C > 60) { + if (this->animFrame > 60) { this->fwork[1] = -1000.0f; Math_SmoothStepToF(&this->fwork[42], 100.0f, 1.0f, 20.0f, 0); this->fwork[44] = 10.0f; @@ -662,19 +661,19 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[43] = 10.0f; } - if (this->unk_04C == 60) { + if (this->animFrame == 60) { AUDIO_PLAY_SFX(NA_SE_EN_THROW, this->sfxSource, 4); this->fwork[42] = 0.0f; } - frameData = Animation_GetFrameData(&D_SX_6013798, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_6013798, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.05f, 0); - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_6013798)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_6013798)) { + this->animFrame = 0; this->fwork[0] = 0.0f; if (this->swork[3] <= 250) { this->state = 4; @@ -807,7 +806,7 @@ void SectorX_Boss_Update(Spyborg* this) { } if (this->timer_050 == 0) { - this->unk_04C = 0; + this->animFrame = 0; this->state = 1; this->swork[1] = 1; Audio_KillSfxBySourceAndId(D_i2_80195D88, NA_SE_EN_SZMIS_ENGINE); @@ -828,16 +827,16 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[2] = -400.0f; this->fwork[42] = 30.0f; - frameData = Animation_GetFrameData(&D_SX_601C690, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_601C690, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.05f, 0); - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_601C690)) { + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_601C690)) { this->state = 75; this->fwork[0] = 0.0f; - this->unk_04C = 0; + this->animFrame = 0; this->timer_050 = 120; } break; @@ -854,7 +853,7 @@ void SectorX_Boss_Update(Spyborg* this) { if (this->timer_050 == 0) { this->state = 8; this->fwork[0] = 0.0f; - this->unk_04C = 0; + this->animFrame = 0; this->health = 300; Audio_PlaySequenceDistorted(0, gBossBgms[gCurrentLevel], 1121, 25, -1); Radio_PlayMessage(gMsg_ID_19205, RCID_FOX); @@ -874,14 +873,14 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[43] = 5.0f; this->fwork[42] = 30.0f; - frameData = Animation_GetFrameData(&D_SX_600F890, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_600F890, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.02f, 0); - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_600F890)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_600F890)) { + this->animFrame = 0; this->fwork[0] = 0.0f; this->state = 9; this->swork[0] = 2; @@ -894,23 +893,23 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[2] = gPlayer[0].pos.y; this->fwork[3] = gPlayer[0].pos.x; - frameData = Animation_GetFrameData(&D_SX_60123BC, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_60123BC, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 50.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.01f, 0); if (this->timer_050 == 0) { - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_60123BC)) { - this->unk_04C = Animation_GetFrameCount(&D_SX_60123BC) - 1; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_60123BC)) { + this->animFrame = Animation_GetFrameCount(&D_SX_60123BC) - 1; if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY) { - this->unk_04C = 0; + this->animFrame = 0; this->state = 10; this->fwork[0] = 0.0f; this->fwork[42] = 0.0f; } } - if (this->unk_04C == 60) { + if (this->animFrame == 60) { AUDIO_PLAY_SFX(NA_SE_EN_THROW, this->sfxSource, 4); } } else if (this->timer_050 == 1) { @@ -926,14 +925,14 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[2] = gPlayer[0].pos.y; this->fwork[3] = gPlayer[0].pos.x; - frameData = Animation_GetFrameData(&D_SX_601AA28, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_601AA28, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 50.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.01f, 0); - this->unk_04C++; + this->animFrame++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_601AA28)) { - this->unk_04C = 0; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_601AA28)) { + this->animFrame = 0; this->state = 10; this->fwork[0] = 0.0f; this->fwork[42] = 0.0f; @@ -943,7 +942,7 @@ void SectorX_Boss_Update(Spyborg* this) { this->swork[10] = 1; } - if (this->unk_04C == 70) { + if (this->animFrame == 70) { SectorX_8018FA04(this->fwork[11] + this->obj.pos.x, this->fwork[12] + this->obj.pos.y, this->fwork[13] + this->obj.pos.z); AUDIO_PLAY_SFX(NA_SE_EN_THROW, this->sfxSource, 4); @@ -955,18 +954,18 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[1] = -1000.0f; Math_SmoothStepToF(&this->fwork[42], 50.0f, 1.0f, 3.0f, 0); - frameData = Animation_GetFrameData(&D_SX_60158C4, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_60158C4, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.05f, 0); - this->unk_04C++; - if ((this->unk_04C % 16) == 0) { + this->animFrame++; + if ((this->animFrame % 16) == 0) { AUDIO_PLAY_SFX(NA_SE_EN_THROW, this->sfxSource, 4); } - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_60158C4)) { - this->unk_04C = 0; + if (this->animFrame >= Animation_GetFrameCount(&D_SX_60158C4)) { + this->animFrame = 0; this->fwork[0] = 0.0f; if ((gBossFrameCount < 2200) || (gTeamShields[TEAM_ID_SLIPPY] <= 0)) { @@ -1027,7 +1026,7 @@ void SectorX_Boss_Update(Spyborg* this) { if ((this->timer_050 == 0) && (this->obj.rot.y == 2880.0f)) { this->obj.rot.y = 0.0f; - this->unk_04C = 0; + this->animFrame = 0; this->fwork[0] = 0.0f; if ((gBossFrameCount < 2200) || (gTeamShields[TEAM_ID_SLIPPY] <= 0)) { this->state = 9; @@ -1046,14 +1045,14 @@ void SectorX_Boss_Update(Spyborg* this) { this->fwork[41] = 340.0f; this->fwork[2] = -400.0f; - frameData = Animation_GetFrameData(&D_SX_601C690, this->unk_04C, frameTable); + frameData = Animation_GetFrameData(&D_SX_601C690, this->animFrame, frameTable); Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, frameData, this->fwork[0], 100.0f, 0.0f); Math_SmoothStepToF(&this->fwork[0], 1.0f, 1.0f, 0.05f, 0); - this->unk_04C++; + this->animFrame++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SX_601C690)) { - this->unk_04C = Animation_GetFrameCount(&D_SX_601C690); + if (this->animFrame >= Animation_GetFrameCount(&D_SX_601C690)) { + this->animFrame = Animation_GetFrameCount(&D_SX_601C690); } if ((this->timer_050 & 3) == 0) { @@ -1067,8 +1066,8 @@ void SectorX_Boss_Update(Spyborg* this) { } if ((this->timer_050 & 3) == 0) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 0.3f, 10); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.3f, 10); } if (this->timer_050 < 230) { @@ -1077,9 +1076,9 @@ void SectorX_Boss_Update(Spyborg* this) { } if (this->timer_050 == 230) { - gShowBossHealth = 0; - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 30.0f, 40); - func_effect_8007A568(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 40.0f); + gShowBossHealth = false; + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 30.0f, 40); + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 40.0f); } if (this->timer_050 == 210) { @@ -1104,8 +1103,8 @@ void SectorX_Boss_Update(Spyborg* this) { D_i2_80195640 = 1; - Animation_DrawSkeleton(1, D_SX_6020C68, this->vwork, SectorX_Boss_OverrideLimbDraw, SectorX_Boss_PostLimbDraw, this, - &gIdentityMatrix); + Animation_DrawSkeleton(1, D_SX_6020C68, this->vwork, SectorX_SxSpyborg_OverrideLimbDraw, + SectorX_SxSpyborg_PostLimbDraw, this, &gIdentityMatrix); if (((this->swork[1] != 0) && (this->swork[3] > 0)) && ((this->fwork[4] < 45.0f) || (this->fwork[4] > 315.0f))) { this->swork[1]++; @@ -1123,7 +1122,7 @@ void SectorX_Boss_Update(Spyborg* this) { } if (this->state != 35) { - this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_SX_6032550); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aSxSpyborgHitbox); this->info.hitbox[43] = -211.0f + this->fwork[16]; this->info.hitbox[45] = -35.0f + this->fwork[15]; this->info.hitbox[47] = 442.0f + this->fwork[14]; @@ -1163,10 +1162,10 @@ void SectorX_Boss_Update(Spyborg* this) { } } -bool SectorX_Boss_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool SectorX_SxSpyborg_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { Vec3f src = { 0.0f, 0.0f, 0.0f }; Vec3f dest; - Spyborg* boss = (Spyborg*) data; + SxSpyborg* boss = (SxSpyborg*) data; if (D_i2_80195640 != 0) { *dList = NULL; @@ -1285,7 +1284,7 @@ bool SectorX_Boss_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f return false; } -void SectorX_Boss_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { +void SectorX_SxSpyborg_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { Vec3f sp64 = { 87.0f, -323.0f, 200.0f }; Vec3f sp58 = { 87.0f, -323.0f, -200.0f }; Vec3f sp4C = { 87.0f, -323.0f, 200.0f }; @@ -1365,12 +1364,12 @@ f32 D_i2_80195760[4] = { -250.0f, -200.0f, -400.0f, -8000.0f }; f32 D_i2_80195770[3] = { 120.0f, 180.0f, -150.0f }; s16 D_i2_8019577C[3] = { 2, 3, 4 }; -void SectorX_Boss_Draw(Spyborg* this) { +void SectorX_SxSpyborg_Draw(SxSpyborg* this) { f32 fwork; if (this->swork[5] == 0) { D_i2_80195640 = 0; - Animation_DrawSkeleton(3, D_SX_6020C68, this->vwork, SectorX_Boss_OverrideLimbDraw, 0, this, gCalcMatrix); + Animation_DrawSkeleton(3, D_SX_6020C68, this->vwork, SectorX_SxSpyborg_OverrideLimbDraw, 0, this, gCalcMatrix); RCP_SetupDL_64(); gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 96); @@ -1534,10 +1533,10 @@ void SectorX_LevelStart(Player* player) { if (gCsFrameCount == 143) { Object_Kill(&gPlayerShots[0].obj, gPlayerShots[0].sfxSource); - func_effect_8007BFFC(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 0.0f, 0.0f, 0.0f, - 3.0f, 40); + Effect386_Spawn1(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 0.0f, 0.0f, 0.0f, + 3.0f, 40); func_effect_8007D2C8(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 6.0f); - func_effect_8007B344(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 5.0f, 5); + Effect_Effect384_Spawn(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 5.0f, 5); Object_Kill(&gActors[5].obj, gActors[5].sfxSource); for (i = 0; i < 20; i++) { func_effect_80079618(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 0.5f); diff --git a/src/overlays/ovl_i3/fox_a6.c b/src/overlays/ovl_i3/fox_a6.c index a2f1fbbd..592a19d7 100644 --- a/src/overlays/ovl_i3/fox_a6.c +++ b/src/overlays/ovl_i3/fox_a6.c @@ -67,7 +67,7 @@ typedef enum { /* 38 */ A6_SWK_38, /* 39 */ A6_SWK_39, /* 40 */ A6_SWK_MAX, -} BossA6swork; +} A6Gorgonswork; typedef enum { /* 0 */ A6_FWK_0, @@ -121,7 +121,7 @@ typedef enum { /* 48 */ A6_FWK_48, /* 49 */ A6_FWK_49, /* 50 */ A6_FWK_MAX, -} BossA6fwork; +} A6Gorgonfwork; typedef enum { /* 0 */ A6_VWK_0, @@ -175,7 +175,7 @@ typedef enum { /* 48 */ A6_VWK_48, /* 49 */ A6_VWK_49, /* 50 */ A6_VWK_MAX, -} BossA6vwork; +} A6Gorgonvwork; typedef enum { /* 0 */ A6_BSS_0, @@ -219,7 +219,7 @@ typedef enum { /* 38 */ A6_BSS_38, /* 39 */ A6_BSS_39, /* 40 */ A6_BSS_MAX, -} BossA6bsswork; +} A6Gorgonbsswork; typedef struct { /* 0x00 */ f32 r[3]; @@ -355,8 +355,8 @@ f32 D_i3_801BF494[12] = { -90.0f, 30.0f, 26.0f, 22.0f, 18.0f, 11.0f, 8.0f, 5.0f, 3.0f, 2.0f, 1.0f, 0.0f, }; -void Area6_80187530(Actor191* this, f32 xPos, f32 yPos, f32 zPos, f32 fwork6, f32 xRot, f32 yRot, s32 timer0BC, - s32 unk0B4) { +void Area6_ActorMissileSeekPlayer_Setup(ActorMissileSeekPlayer* this, f32 xPos, f32 yPos, f32 zPos, f32 fwork6, + f32 xRot, f32 yRot, s32 timer0BC, s32 unk0B4) { PRINTF("おん\n"); // On PRINTF("おふ\n"); // Off Actor_Initialize(this); @@ -378,20 +378,21 @@ void Area6_80187530(Actor191* this, f32 xPos, f32 yPos, f32 zPos, f32 fwork6, f3 Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_BARREL_SHOT); } -void Area6_801875E4(f32 xPos, f32 yPos, f32 zPos, f32 fwork6, f32 xRot, f32 yRot, s32 timer0BC, s32 unk0B4) { +void Area6_ActorMissileSeekPlayer_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 fwork6, f32 xRot, f32 yRot, s32 timer0BC, + s32 unk0B4) { s32 i; - Actor191* actor191; + ActorMissileSeekPlayer* missile; - for (i = 0, actor191 = &gActors[0]; i < ARRAY_COUNT(gActors); i++, actor191++) { - if (actor191->obj.status == OBJ_FREE) { - Area6_80187530(actor191, xPos, yPos, zPos, fwork6, xRot, yRot, timer0BC, unk0B4); + for (i = 0, missile = &gActors[0]; i < ARRAY_COUNT(gActors); i++, missile++) { + if (missile->obj.status == OBJ_FREE) { + Area6_ActorMissileSeekPlayer_Setup(missile, xPos, yPos, zPos, fwork6, xRot, yRot, timer0BC, unk0B4); D_i3_801C2250[A6_BSS_11] = i + 1; break; } } } -void Area6_8018767C(Effect395* this) { +void Area6_Effect395_Setup(Effect395* this) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_395; @@ -405,18 +406,18 @@ void Area6_8018767C(Effect395* this) { Object_SetInfo(&this->info, this->obj.id); } -void Area6_80187704(void) { +void Area6_Effect395_Spawn(void) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Area6_8018767C(&gEffects[i]); + Area6_Effect395_Setup(&gEffects[i]); break; } } } -void Area6_BossA6_Init(BossA6* this) { +void Area6_A6Gorgon_Init(A6Gorgon* this) { Hitbox* hitbox; s32 i; @@ -462,7 +463,7 @@ void Area6_BossA6_Init(BossA6* this) { AUDIO_PLAY_SFX(NA_SE_EN_SHIELD_ROLL_LEVEL, this->sfxSource, 4); } -void Area6_Boss_Update(BossA6* this) { +void Area6_A6Gorgon_Update(A6Gorgon* this) { s32 i; s32 pad; s32 var_s0; @@ -520,7 +521,7 @@ void Area6_Boss_Update(BossA6* this) { AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); - gShowBossHealth = 0; + gShowBossHealth = false; SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 40); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 40); @@ -579,8 +580,8 @@ void Area6_Boss_Update(BossA6* this) { if ((this->swork[A6_SWK_15 + 0] == 0) && (this->swork[A6_SWK_15 + 1] == 0) && (this->swork[A6_SWK_15 + 2] == 0) && (this->fwork[A6_FWK_0] != 0) && !(gGameFrameCount % 2U)) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 200.0f, this->vel.x, this->vel.y, - this->vel.z, 0.3f, 1); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 200.0f, this->vel.x, this->vel.y, + this->vel.z, 0.3f, 1); } sp120 = 0.5f; @@ -682,12 +683,12 @@ void Area6_Boss_Update(BossA6* this) { } if (!(gGameFrameCount % 32U)) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 300.0f, this->vel.x, this->vel.y, - this->vel.z, 0.5f, 70); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 300.0f, this->vel.x, this->vel.y, + this->vel.z, 0.5f, 70); } } - if (!(gGameFrameCount % 16U)) { + if ((gGameFrameCount % 16U) == 0) { dz_114 = fabsf(this->fwork[A6_FWK_3] / -1700.0f); if (dz_114 < 1.0f) { dz_114 = 1.0f; @@ -929,7 +930,7 @@ void Area6_Boss_Update(BossA6* this) { D_i3_801C2250[A6_BSS_28] = 0; this->state = 4; this->fwork[A6_FWK_2] = 1.0f; - this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_A6_6028454); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aA6GorgonHitbox); D_i3_801C2250[A6_BSS_6] = 1; Audio_KillSfxBySource(this->sfxSource); AUDIO_PLAY_SFX(NA_SE_EN_COVER_CLOSE, this->sfxSource, 4); @@ -1010,7 +1011,7 @@ void Area6_Boss_Update(BossA6* this) { case 5: if (this->timer_050 == 1) { - Area6_80187704(); + Area6_Effect395_Spawn(); AUDIO_PLAY_SFX(NA_SE_EN_A6BOSS_CHARGE, this->sfxSource, 4); D_i3_801C2250[A6_BSS_33] = 120; } @@ -1150,8 +1151,9 @@ void Area6_Boss_Update(BossA6* this) { spf124 = 1; } - Area6_801875E4(this->obj.pos.x + sp8C.x, this->obj.pos.y + sp8C.y, this->obj.pos.z + sp8C.z, - 25.0f, pitch_110, yaw_10C, 10, spf124); + Area6_ActorMissileSeekPlayer_Spawn(this->obj.pos.x + sp8C.x, this->obj.pos.y + sp8C.y, + this->obj.pos.z + sp8C.z, 25.0f, pitch_110, yaw_10C, 10, + spf124); D_i3_801C2250[A6_BSS_12_0 + var_s0] = D_i3_801C2250[A6_BSS_11]; } @@ -1195,7 +1197,7 @@ void Area6_Boss_Update(BossA6* this) { } if (this->timer_052 == 0) { - gShowBossHealth = 0; + gShowBossHealth = false; Object_Kill(&this->obj, this->sfxSource); } break; @@ -1230,7 +1232,7 @@ void Area6_Boss_Update(BossA6* this) { Radio_PlayMessage(gMsg_ID_2225, RCID_SLIPPY); } if (gBossFrameCount == 756) { - gShowBossHealth = 1; + gShowBossHealth = true; } if (gBossFrameCount > 756) { gBossHealthBar = (this->health / 780.0f) * 255.0f; @@ -1258,7 +1260,7 @@ void Area6_Boss_Update(BossA6* this) { } } -void Area6_8018A1B0(BossA6* this, s32 arg1) { +void Area6_8018A1B0(A6Gorgon* this, s32 arg1) { switch (D_i3_801C2250[A6_BSS_2_0 + arg1]) { case 0: this->swork[A6_SWK_27 + arg1] = 12; @@ -1290,7 +1292,7 @@ void Area6_8018A1B0(BossA6* this, s32 arg1) { } } -void Area6_8018A2C4(BossA6* this) { +void Area6_8018A2C4(A6Gorgon* this) { s32 i; Vec3f effectPos; @@ -1330,7 +1332,7 @@ void Area6_8018A2C4(BossA6* this) { } } -void Area6_8018A464(BossA6* this, s32 arg1) { +void Area6_8018A464(A6Gorgon* this, s32 arg1) { s32 i; s32 j; f32 var_fs0; @@ -1692,7 +1694,7 @@ void Area6_8018A464(BossA6* this, s32 arg1) { } } -void Area6_8018B9BC(BossA6* this) { +void Area6_8018B9BC(A6Gorgon* this) { s32 i; s32 j; Vec3f dest; @@ -1726,8 +1728,8 @@ void Area6_8018B9BC(BossA6* this) { sfxPos.z = this->obj.pos.z + dest.z; Effect_SpawnTimedSfxAtPos(&sfxPos, NA_SE_EN_EXPLOSION_M); - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 150.0f, this->vel.x, - this->vel.y, this->vel.z, 0.2f, 50); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 150.0f, this->vel.x, + this->vel.y, this->vel.z, 0.2f, 50); } if ((this->swork[A6_SWK_15] == 0) && (this->swork[A6_SWK_16] == 0) && (this->swork[A6_SWK_17] == 0)) { @@ -1871,7 +1873,7 @@ void Area6_8018C0D0(f32* arg0, f32 arg1, Vec3f* arg2, f32 arg3, s32 arg4) { Matrix_Pop(&gGfxMatrix); } -void Area6_Boss_Draw(BossA6* this) { +void Area6_A6Gorgon_Draw(A6Gorgon* this) { Vec3f jointTable[30]; Vec3f spC4; Vec3f spB8; @@ -2122,14 +2124,14 @@ void Area6_8018D3CC(s32 arg0, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, void Area6_8018D4E0(Actor* this) { s32 i; - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 20); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 20); func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 7.0f); - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 6.0f, 5); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 6.0f, 5); Object_Kill(&this->obj, this->sfxSource); for (i = 0; i < 15; i++) { - func_effect_800794CC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); + Effect_Effect357_Spawn50(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); } Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); } diff --git a/src/overlays/ovl_i3/fox_aq.c b/src/overlays/ovl_i3/fox_aq.c index ccb70c55..8bd61976 100644 --- a/src/overlays/ovl_i3/fox_aq.c +++ b/src/overlays/ovl_i3/fox_aq.c @@ -12,7 +12,7 @@ const char D_i3_801C1A30[] = "プレイヤーのすべてをクリア \n"; // Clear of all players const char D_i3_801C1A50[] = "i %d\n"; -typedef enum BossAQLimbs { +typedef enum AqBacoonLimbs { /* 0 */ AQ_LIMB_0, /* 1 */ AQ_LIMB_1, /* 2 */ AQ_LIMB_2, @@ -42,9 +42,9 @@ typedef enum BossAQLimbs { /* 26 */ AQ_LIMB_26, /* 27 */ AQ_LIMB_27, /* 28 */ AQ_LIMB_MAX, -} BossAQLimbs; +} AqBacoonLimbs; -typedef enum BossAQswork { +typedef enum AqBacoonswork { /* 0 */ AQ_SWK_0, /* 1 */ AQ_SWK_1, /* 2 */ AQ_SWK_2, @@ -86,9 +86,9 @@ typedef enum BossAQswork { /* 38 */ AQ_SWK_38, /* 39 */ AQ_SWK_39, /* 40 */ AQ_SWK_MAX, -} BossAQswork; +} AqBacoonswork; -typedef enum BossAQfwork { +typedef enum AqBacoonfwork { /* 0 */ AQ_FWK_0, /* 1 */ AQ_FWK_1, /* 2 */ AQ_FWK_2, @@ -140,9 +140,9 @@ typedef enum BossAQfwork { /* 48 */ AQ_FWK_48, /* 49 */ AQ_FWK_49, /* 50 */ AQ_FWK_MAX, -} BossAQfwork; +} AqBacoonfwork; -typedef enum BossAQvwork { +typedef enum AqBacoonvwork { /* 0 */ AQ_VWK_0, /* 1 */ AQ_VWK_1, /* 2 */ AQ_VWK_2, @@ -194,12 +194,12 @@ typedef enum BossAQvwork { /* 48 */ AQ_VWK_48, /* 49 */ AQ_VWK_49, /* 50 */ AQ_VWK_MAX, -} BossAQvwork; +} AqBacoonvwork; f32 D_AQ_801C4188; s32 D_i3_801C4190[10]; f32 D_i3_801C41B8[30]; -s32 sBossAQlimbTimers[AQ_LIMB_MAX]; +s32 sAqBacoonlimbTimers[AQ_LIMB_MAX]; s32 D_i3_801C42A0[25]; f32 D_i3_801C4308[82]; s32 D_i3_801C4450; @@ -323,12 +323,12 @@ void Aquas_801A8E30(void) { } } -void Aquas_801A92EC(Actor* actor, f32 xUnk, f32 yUnk, f32 zUnk, s32 index, s32 mode) { +void Aquas_801A92EC(AqJellyfish* this, f32 xUnk, f32 yUnk, f32 zUnk, s32 index, s32 mode) { gTexturedLines[index].mode = mode; gTexturedLines[index].xyScale = 10.0f; - gTexturedLines[index].posAA.x = actor->obj.pos.x; - gTexturedLines[index].posAA.y = actor->obj.pos.y; - gTexturedLines[index].posAA.z = actor->obj.pos.z; + gTexturedLines[index].posAA.x = this->obj.pos.x; + gTexturedLines[index].posAA.y = this->obj.pos.y; + gTexturedLines[index].posAA.z = this->obj.pos.z; gTexturedLines[index].posBB.x = xUnk; gTexturedLines[index].posBB.y = yUnk; gTexturedLines[index].posBB.z = zUnk; @@ -337,22 +337,22 @@ void Aquas_801A92EC(Actor* actor, f32 xUnk, f32 yUnk, f32 zUnk, s32 index, s32 m gTexturedLines[index].timer = 3; } -void Aquas_SetupDebris(Actor* actor, Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state, f32 scale, +void Aquas_SetupDebris(ActorDebris* this, Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state, f32 scale, s32 timerBC, s32 unk48) { - Actor_Initialize(actor); - actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_DEBRIS; - actor->state = state; - actor->scale = scale; - actor->unk_048 = unk48; - actor->obj.pos = *pos; - actor->obj.rot = *rot; - actor->vel.x = xVel; - actor->vel.y = yVel; - actor->vel.z = zVel; - actor->timer_0BC = timerBC; - actor->gravity = 0.5f; - Object_SetInfo(&actor->info, actor->obj.id); + Actor_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_ACTOR_DEBRIS; + this->state = state; + this->scale = scale; + this->unk_048 = unk48; + this->obj.pos = *pos; + this->obj.rot = *rot; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; + this->timer_0BC = timerBC; + this->gravity = 0.5f; + Object_SetInfo(&this->info, this->obj.id); } void Aquas_SpawnDebris(Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state, f32 scale, s32 timerBC, @@ -367,11 +367,11 @@ void Aquas_SpawnDebris(Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 } } -void Aquas_801A94EC(Vec3f* pos, ObjectId objId) { +void Aquas_SpawnItem(Vec3f* pos, ObjectId objId) { s32 i; Item* item; - for (i = 0, item = gItems; i < ARRAY_COUNT(gItems); i++, item++) { + for (i = 0, item = &gItems[0]; i < ARRAY_COUNT(gItems); i++, item++) { if (item->obj.status == OBJ_FREE) { Item_Initialize(item); item->obj.status = OBJ_INIT; @@ -404,26 +404,26 @@ void Aquas_801A95C8(void) { Math_SmoothStepToF(&gPlayer[0].cam.at.z, gCsCamAtZ, 0.1f, 50.0f, 0.0001f); } -void Aquas_801A96DC(Actor* actor) { - actor->obj.rot.y = RAD_TO_DEG(-gPlayer[0].camYaw); - actor->obj.rot.x = RAD_TO_DEG(gPlayer[0].camPitch); +void Aquas_801A96DC(AqPearl* this) { + this->obj.rot.y = RAD_TO_DEG(-gPlayer[0].camYaw); + this->obj.rot.x = RAD_TO_DEG(gPlayer[0].camPitch); } -void Aquas_801A9728(Actor* actor, f32 radius, f32 scale, s32 spread) { - f32 temp_fs0; - f32 temp_fs1; - f32 temp; +void Aquas_801A9728(AqSculpin* this, f32 radius, f32 scale, s32 spread) { s32 i; + f32 x; + f32 y; + f32 z; for (i = 0; i < 36; i += spread) { - temp_fs1 = SIN_DEG(i * 10.0f) * radius; - temp_fs0 = COS_DEG(i * 10.0f) * radius; - temp = gGroundHeight + 30.0f; - func_effect_8007B8F8(actor->obj.pos.x + temp_fs1, temp, actor->obj.pos.z + temp_fs0, scale); + x = SIN_DEG(i * 10.0f) * radius; + z = COS_DEG(i * 10.0f) * radius; + y = gGroundHeight + 30.0f; + Effect_Effect364_Spawn(this->obj.pos.x + x, y, this->obj.pos.z + z, scale); } } -void Aquas_801A9824(void) { +void Aquas_InitLevel(void) { s32 i; f32* var_v0; f32* var_v0_4; @@ -442,7 +442,7 @@ void Aquas_801A9824(void) { } for (i = 0; i < AQ_LIMB_MAX; i++) { - sBossAQlimbTimers[i] = 0; + sAqBacoonlimbTimers[i] = 0; } for (i = 0; i < ARRAY_COUNT(D_i3_801C42A0); i++) { @@ -621,7 +621,7 @@ void Aquas_801A9ED0(Player* player) { fabsf(player->trueZpos - gBosses[0].obj.pos.z - gBosses[0].info.hitbox[j]); D_i3_801C4190[0] = 777; D_i3_801C4190[4] = i; - D_i3_801C4190[1] = OBJ_BOSS_AQ; + D_i3_801C4190[1] = OBJ_BOSS_AQ_BACOON; } if (((j == 129) && (gBosses[0].swork[AQ_SWK_8] == 0)) || @@ -644,9 +644,9 @@ void Aquas_801A9ED0(Player* player) { } void Aquas_801AA20C(void) { - f32 var_fs1; - f32 var_fs2; s32 i; + f32 x; + f32 y; if (gPlayer[0].draw) { Matrix_Push(&gGfxMatrix); @@ -655,20 +655,20 @@ void Aquas_801AA20C(void) { if (D_i3_801C4190[3] == 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); - var_fs1 = -10.0f; - var_fs2 = 10.0f; + x = -10.0f; + y = 10.0f; if (D_i3_801C4190[0] != 0) { - var_fs1 = var_fs2 = 0.0f; + x = y = 0.0f; } - Matrix_Translate(gGfxMatrix, D_i3_801C41B8[0] + var_fs1, D_i3_801C41B8[1] + var_fs2, + Matrix_Translate(gGfxMatrix, D_i3_801C41B8[0] + x, D_i3_801C41B8[1] + y, D_i3_801C41B8[2] + gPlayer[0].zPath, MTXF_APPLY); Matrix_Scale(gGfxMatrix, D_i3_801C41B8[5], D_i3_801C41B8[5], D_i3_801C41B8[5], MTXF_APPLY); for (i = 0; i < 4; i++) { Matrix_RotateZ(gGfxMatrix, M_PI / 2, MTXF_APPLY); - Matrix_Translate(gGfxMatrix, var_fs1, var_fs2, 0.0f, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, x, y, 0.0f, MTXF_APPLY); Matrix_Push(&gGfxMatrix); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_blue_marine_3000470); @@ -687,15 +687,15 @@ void Aquas_801AA20C(void) { } void Aquas_801AA4BC(Player* player) { - f32 sp3C; - f32 sp38; + f32 rotBankTarget; + f32 rotBankScale; if (player->unk_230 == 0) { - sp3C = 0.0f; - sp38 = 0.1f; + rotBankTarget = 0.0f; + rotBankScale = 0.1f; if ((gInputHold->button & Z_TRIG) && !(gInputHold->button & R_TRIG)) { - sp3C = 90.0f; - sp38 = 0.2f; + rotBankTarget = 90.0f; + rotBankScale = 0.2f; if (player->zRotBank < 70.0f) { Math_SmoothStepToF(&player->wings.unk_04, -70.0f, 0.3f, 100.0f, 0); Math_SmoothStepToF(&player->wings.unk_08, -70.0f, 0.3f, 100.0f, 0); @@ -705,8 +705,8 @@ void Aquas_801AA4BC(Player* player) { } if ((gInputHold->button & R_TRIG) && !(gInputHold->button & Z_TRIG)) { - sp3C = -90.0f; - sp38 = 0.2f; + rotBankTarget = -90.0f; + rotBankScale = 0.2f; if (player->zRotBank > -70.0f) { Math_SmoothStepToF(&player->wings.unk_04, 70.0f, 0.3f, 100.0f, 0); Math_SmoothStepToF(&player->wings.unk_08, 70.0f, 0.3f, 100.0f, 0); @@ -715,7 +715,7 @@ void Aquas_801AA4BC(Player* player) { } } - Math_SmoothStepToF(&player->zRotBank, sp3C, sp38, 10.0f, 0); + Math_SmoothStepToF(&player->zRotBank, rotBankTarget, rotBankScale, 10.0f, 0); } if ((gInputPress->button & Z_TRIG) && (player->unk_230 == 0)) { @@ -1059,15 +1059,15 @@ void Aquas_BlueMarineMove(Player* player) { if (player->boostSpeed > 1.0f) { player->unk_178 -= 30.0f; - Aquas_801AC8A8(player->pos.x + RAND_FLOAT_CENTERED(10.0f) + sp80.x, - player->pos.y + RAND_FLOAT_CENTERED(10.0f) + sp80.y, - player->trueZpos + RAND_FLOAT_CENTERED(10.0f) + (sp80.z * -1.0f), 0.4f, 1); + Aquas_Effect366_Spawn(player->pos.x + RAND_FLOAT_CENTERED(10.0f) + sp80.x, + player->pos.y + RAND_FLOAT_CENTERED(10.0f) + sp80.y, + player->trueZpos + RAND_FLOAT_CENTERED(10.0f) + (sp80.z * -1.0f), 0.4f, 1); } else { player->unk_178 -= 10.0f; - if (((gGameFrameCount % 8) == 0)) { - Aquas_801AC8A8(player->pos.x + RAND_FLOAT_CENTERED(10.0f) + sp80.x, - player->pos.y + RAND_FLOAT_CENTERED(10.0f) + sp80.y, - player->trueZpos + RAND_FLOAT_CENTERED(20.0f) + sp80.z, 0.4f, 0); + if ((gGameFrameCount % 8) == 0) { + Aquas_Effect366_Spawn(player->pos.x + RAND_FLOAT_CENTERED(10.0f) + sp80.x, + player->pos.y + RAND_FLOAT_CENTERED(10.0f) + sp80.y, + player->trueZpos + RAND_FLOAT_CENTERED(20.0f) + sp80.z, 0.4f, 0); } } } @@ -1075,8 +1075,8 @@ void Aquas_BlueMarineMove(Player* player) { void Aquas_BlueMarineDown(Player* player) { func_effect_8007D0E0(player->pos.x, player->pos.y, player->trueZpos, 6.0f); - func_effect_8007B344(player->pos.x, player->pos.y, player->trueZpos, 3.0f, 5); - func_effect_8007BFFC(player->pos.x, player->pos.y, player->trueZpos, 0.0f, 0.0f, 0.0f, 3.0f, 80); + Effect_Effect384_Spawn(player->pos.x, player->pos.y, player->trueZpos, 3.0f, 5); + Effect386_Spawn1(player->pos.x, player->pos.y, player->trueZpos, 0.0f, 0.0f, 0.0f, 3.0f, 80); Cutscene_KillPlayer(player); } @@ -1103,18 +1103,18 @@ void Aquas_801ABA40(PlayerShot* shot) { shot->obj.pos.y = gGroundHeight + 2.0f; PlayerShot_SpawnEffect344(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.0f, 90.0f, 2.0f, 0, 0); - func_effect_8007CF30(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 1.2f); + Effect_FireSmoke_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 1.2f); D_i3_801C4190[5] = D_i3_801C4190[3] = 0; PlayerShot_Impact(shot); } else if (((shot->timer == 0) || (D_i3_801C4454 == 0)) && (shot->unk_5C != 0)) { - func_effect_8007CF30(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 1.2f); + Effect_FireSmoke_Spawn(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z, 1.2f); D_i3_801C41B8[21] = D_i3_801C41B8[22] = D_i3_801C41B8[23] = 0.0f; D_i3_801C4190[5] = D_i3_801C4190[3] = 0; PlayerShot_Impact(shot); } else { Math_SmoothStepToF(&shot->unk_48, 50.0f, 0.2f, 10.0f, 0.00001f); shot->obj.rot.z += shot->unk_48; - if (((gGameFrameCount % 2) == 0)) { + if ((gGameFrameCount % 2) == 0) { PlayerShot_SpawnEffect351(shot->obj.pos.x, shot->obj.pos.y, shot->obj.pos.z); } @@ -1277,7 +1277,7 @@ void Aquas_BlueMarineShoot(Player* player) { D_i3_801C41B8[11] = 10000.0f; temp = D_i3_801C4190[0]; - for (i = 0, actor = gActors; i < ARRAY_COUNT(gActors); i++, actor++) { + for (i = 0, actor = &gActors[0]; i < ARRAY_COUNT(gActors); i++, actor++) { if ((actor->obj.status == OBJ_ACTIVE) && (actor->obj.id != OBJ_ACTOR_DEBRIS)) { var_v1 = 1; if (actor->info.hitbox[1] == HITBOX_ROTATED) { @@ -1350,88 +1350,87 @@ void Aquas_BlueMarineShoot(Player* player) { } } -void Aquas_801AC7C8(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 state) { - Effect_Initialize(effect); - effect->obj.status = OBJ_INIT; - effect->obj.id = OBJ_EFFECT_366; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->scale1 = RAND_FLOAT(360.0f); - effect->state = state; - effect->unk_4A = 40; - effect->scale2 = scale2 * 0.2f; - effect->unk_46 = 50; - effect->unk_60.y = gPlayer[0].rot.y + gPlayer[0].yRot_114; +void Aquas_Effect366_Setup(Effect366* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 state) { + Effect_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_EFFECT_366; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->scale1 = RAND_FLOAT(360.0f); + this->state = state; + this->unk_4A = 40; + this->scale2 = scale2 * 0.2f; + this->unk_46 = 50; + this->unk_60.y = gPlayer[0].rot.y + gPlayer[0].yRot_114; - if (effect->state == 2) { - effect->unk_46 = 100; + if (this->state == 2) { + this->unk_46 = 100; } - Object_SetInfo(&effect->info, effect->obj.id); + Object_SetInfo(&this->info, this->obj.id); } -void Aquas_801AC8A8(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 unk4E) { +void Aquas_Effect366_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 unk4E) { s32 i; for (i = 0; i < 95; i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Aquas_801AC7C8(&gEffects[i], xPos, yPos, zPos, scale2, unk4E); + Aquas_Effect366_Setup(&gEffects[i], xPos, yPos, zPos, scale2, unk4E); break; } } } -// OBJ_EFFECT_366 action -void Aquas_Effect366_Update(Effect* effect) { +void Aquas_Effect366_Update(Effect366* this) { f32 temp_fs0; - if (effect->unk_46 != 0) { - effect->unk_46--; + if (this->unk_46 != 0) { + this->unk_46--; } - switch (effect->state) { + switch (this->state) { case 0: - if (effect->vel.y < 5.0f) { - effect->vel.y += 0.1f; + if (this->vel.y < 5.0f) { + this->vel.y += 0.1f; } - if (effect->unk_46 == 0) { - Object_Kill(&effect->obj, effect->sfxSource); + if (this->unk_46 == 0) { + Object_Kill(&this->obj, this->sfxSource); } - effect->scale1 += 33.0f; - temp_fs0 = COS_DEG(effect->scale1) * 1.5f; - effect->vel.x = __cosf(gPlayer[0].camYaw) * temp_fs0; - effect->vel.z = __sinf(gPlayer[0].camYaw) * temp_fs0; + this->scale1 += 33.0f; + temp_fs0 = COS_DEG(this->scale1) * 1.5f; + this->vel.x = __cosf(gPlayer[0].camYaw) * temp_fs0; + this->vel.z = __sinf(gPlayer[0].camYaw) * temp_fs0; break; case 1: - if (effect->unk_46 == 0) { - Object_Kill(&effect->obj, effect->sfxSource); + if (this->unk_46 == 0) { + Object_Kill(&this->obj, this->sfxSource); } - effect->unk_60.x += 0.07f; - effect->scale1 += 33.0f; + this->unk_60.x += 0.07f; + this->scale1 += 33.0f; - effect->vel.y = effect->unk_60.x + (SIN_DEG(effect->scale1) * 3.0f); - temp_fs0 = COS_DEG(effect->scale1) * 3.0f; - effect->vel.x = COS_DEG(effect->unk_60.y) * temp_fs0; - effect->vel.z = -SIN_DEG(effect->unk_60.y) * temp_fs0; + this->vel.y = this->unk_60.x + (SIN_DEG(this->scale1) * 3.0f); + temp_fs0 = COS_DEG(this->scale1) * 3.0f; + this->vel.x = COS_DEG(this->unk_60.y) * temp_fs0; + this->vel.z = -SIN_DEG(this->unk_60.y) * temp_fs0; break; case 2: - if (effect->vel.y < 10.0f) { - effect->vel.y += 0.2f; + if (this->vel.y < 10.0f) { + this->vel.y += 0.2f; } - if (effect->unk_46 == 0) { - Object_Kill(&effect->obj, effect->sfxSource); + if (this->unk_46 == 0) { + Object_Kill(&this->obj, this->sfxSource); } - effect->scale1 += 55.0f; - temp_fs0 = COS_DEG(effect->scale1) * 2.5f; - effect->vel.x = __cosf(gPlayer[0].camYaw) * temp_fs0; - effect->vel.z = __sinf(gPlayer[0].camYaw) * temp_fs0; + this->scale1 += 55.0f; + temp_fs0 = COS_DEG(this->scale1) * 2.5f; + this->vel.x = __cosf(gPlayer[0].camYaw) * temp_fs0; + this->vel.z = __sinf(gPlayer[0].camYaw) * temp_fs0; break; } } -void Aquas_801ACBB4(Player* player) { +void Aquas_BlueMarine_Draw(Player* player) { Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -40.0f, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, M_PI, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); @@ -1480,9 +1479,9 @@ void Aquas_BlueMarineBoost(Player* player) { sp54.z = 70.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp54, &sp48); - Aquas_801AC8A8(player->pos.x + RAND_FLOAT_CENTERED(10.0f) + sp48.x, - player->pos.y + RAND_FLOAT_CENTERED(10.0f) + sp48.y, - player->trueZpos + RAND_FLOAT_CENTERED(10.0f) + (sp48.z * -1.0f), 0.4f, 1); + Aquas_Effect366_Spawn(player->pos.x + RAND_FLOAT_CENTERED(10.0f) + sp48.x, + player->pos.y + RAND_FLOAT_CENTERED(10.0f) + sp48.y, + player->trueZpos + RAND_FLOAT_CENTERED(10.0f) + (sp48.z * -1.0f), 0.4f, 1); Math_SmoothStepToF(&player->camDist, -130.0f, 0.1f, 10.0f, 0.00001f); player->zRotBarrelRoll -= player->meteoWarpSpinSpeed; @@ -1555,9 +1554,9 @@ void Aquas_BlueMarineBoost(Player* player) { } void Aquas_BlueMarineBrake(Player* player) { - player->sfx.brake = 0; + player->sfx.brake = false; - if ((gBrakeButton[player->num] & gInputHold->button) && (player->unk_230 == 0) && + if ((gInputHold->button & gBrakeButton[player->num]) && (player->unk_230 == 0) && (player->state_1C8 != PLAYERSTATE_1C8_U_TURN) && (player->boostCooldown == 0)) { if (player->boostMeter == 0) { AUDIO_PLAY_SFX(NA_SE_MARINE_BRAKE, player->sfxSource, 4); @@ -1577,7 +1576,7 @@ void Aquas_BlueMarineBrake(Player* player) { Math_SmoothStepToF(&D_i3_801C41B8[28], 10.0f, 1.0f, 2.0f, 0.00001f); Math_SmoothStepToF(&player->camDist, 180.0f, 0.1f, D_i3_801C41B8[28], 0.0f); - player->sfx.brake = 1; + player->sfx.brake = true; Math_SmoothStepToF(&D_ctx_801779A8[0], 25.0f, 1.0f, 5.0f, 0.0f); } else { @@ -1602,33 +1601,32 @@ void Aquas_BlueMarineBrake(Player* player) { Math_SmoothStepToF(&player->camDist, 0.0f, 0.1f, 2.0f, 0.0f); } -void Aquas_801AD598(Actor* actor) { +void Aquas_801AD598(Actor255* this) { s32 i; - D_i3_801C27C0 = &D_i3_801C27C8[50 * actor->iwork[0]]; + D_i3_801C27C0 = &D_i3_801C27C8[50 * this->iwork[0]]; - for (i = 50 * actor->iwork[0]; i < 50 * actor->iwork[0] + 50; i++, D_i3_801C27C0++) { - D_i3_801C27C0->pos.x = actor->obj.pos.x; - D_i3_801C27C0->pos.y = actor->obj.pos.y; - D_i3_801C27C0->pos.z = actor->obj.pos.z; - D_i3_801C27C0->rot.x = actor->obj.rot.x; - D_i3_801C27C0->rot.y = actor->obj.rot.y; - D_i3_801C27C0->rot.z = actor->obj.rot.z; - D_i3_801C27C0->rot.x = actor->rot_0F4.x; - D_i3_801C27C0->rot.y = actor->rot_0F4.y; - D_i3_801C27C0->rot.z = actor->rot_0F4.z; + for (i = 50 * this->iwork[0]; i < 50 * this->iwork[0] + 50; i++, D_i3_801C27C0++) { + D_i3_801C27C0->pos.x = this->obj.pos.x; + D_i3_801C27C0->pos.y = this->obj.pos.y; + D_i3_801C27C0->pos.z = this->obj.pos.z; + D_i3_801C27C0->rot.x = this->obj.rot.x; + D_i3_801C27C0->rot.y = this->obj.rot.y; + D_i3_801C27C0->rot.z = this->obj.rot.z; + D_i3_801C27C0->rot.x = this->rot_0F4.x; + D_i3_801C27C0->rot.y = this->rot_0F4.y; + D_i3_801C27C0->rot.z = this->rot_0F4.z; } } -void Aquas_801AD688(Actor* actor) { - Aquas_801AD598(actor); - actor->iwork[1] = 10; - actor->scale = 1.0f; +void Aquas_Actor255_Init(Actor255* this) { + Aquas_801AD598(this); + this->iwork[1] = 10; + this->scale = 1.0f; } -// OBJ_ACTOR_255 action -void Aquas_Actor255_Update(Actor* actor) { - s32 var_v0 = actor->iwork[2] - 1; +void Aquas_Actor255_Update(Actor255* this) { + s32 var_v0 = this->iwork[2] - 1; f32 sp80; f32 sp7C; f32 sp78; @@ -1641,157 +1639,156 @@ void Aquas_Actor255_Update(Actor* actor) { Vec3f sp44; if ((D_i3_801C42A0[23] == 0) || (gActors[var_v0].state >= 4)) { - actor->timer_0C2 = 30000; - actor->state = 2; - actor->vel.y = 0.0f; - actor->vel.x = 0.0f; - actor->vel.z = 0.0f; + this->timer_0C2 = 30000; + this->state = 2; + this->vel.y = 0.0f; + this->vel.x = 0.0f; + this->vel.z = 0.0f; } - if ((gPlayer[0].trueZpos + 500.0f) <= actor->obj.pos.z) { - Object_Kill(&actor->obj, actor->sfxSource); + if ((gPlayer[0].trueZpos + 500.0f) <= this->obj.pos.z) { + Object_Kill(&this->obj, this->sfxSource); } - actor->counter_04E++; - - if (actor->counter_04E >= 50) { - actor->counter_04E = 0; + this->counter_04E++; + if (this->counter_04E >= 50) { + this->counter_04E = 0; } - switch (actor->state) { + switch (this->state) { case 0: - if (actor->timer_0BC != 0) { - actor->rot_0F4.x += D_i3_801C4308[10]; - actor->rot_0F4.z += 10.0f; - actor->rot_0F4.z = Math_ModF(actor->rot_0F4.z, 360.0f); + if (this->timer_0BC != 0) { + this->rot_0F4.x += D_i3_801C4308[10]; + this->rot_0F4.z += 10.0f; + this->rot_0F4.z = Math_ModF(this->rot_0F4.z, 360.0f); } else { - actor->health = 30; - AUDIO_PLAY_SFX(NA_SE_EN_SANADA_SWIM, actor->sfxSource, 4); - actor->state++; + this->health = 30; + AUDIO_PLAY_SFX(NA_SE_EN_SANADA_SWIM, this->sfxSource, 4); + this->state++; } break; case 1: - if (actor->dmgType != DMG_NONE) { - if (actor->health > 0) { - actor->dmgType = DMG_NONE; - actor->timer_0C6 = 15; - actor->health -= actor->damage; + if (this->dmgType != DMG_NONE) { + if (this->health > 0) { + this->dmgType = DMG_NONE; + this->timer_0C6 = 15; + this->health -= this->damage; - AUDIO_PLAY_SFX(NA_SE_EN_SANADA_DAMAGE, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_SANADA_DAMAGE, this->sfxSource, 4); - if (actor->health <= 0) { - actor->timer_0C2 = 30000; - actor->state = 2; - actor->vel.y = 0.0f; - actor->vel.x = 0.0f; - actor->vel.z = 0.0f; - AUDIO_PLAY_SFX(NA_SE_EN_SANADA_DOWN, actor->sfxSource, 4); + if (this->health <= 0) { + this->timer_0C2 = 30000; + this->state = 2; + this->vel.y = 0.0f; + this->vel.x = 0.0f; + this->vel.z = 0.0f; + AUDIO_PLAY_SFX(NA_SE_EN_SANADA_DOWN, this->sfxSource, 4); } } } - if (actor->obj.pos.z <= (gPlayer[0].trueZpos - 200.0f)) { - actor->fwork[7] = sp80 = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(100.0f) - actor->obj.pos.x; - actor->fwork[8] = sp7C = gPlayer[0].pos.y - 30.0f - actor->obj.pos.y; - actor->fwork[9] = sp78 = gPlayer[0].trueZpos - actor->obj.pos.z; + if (this->obj.pos.z <= (gPlayer[0].trueZpos - 200.0f)) { + this->fwork[7] = sp80 = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(100.0f) - this->obj.pos.x; + this->fwork[8] = sp7C = gPlayer[0].pos.y - 30.0f - this->obj.pos.y; + this->fwork[9] = sp78 = gPlayer[0].trueZpos - this->obj.pos.z; } else { - sp80 = actor->fwork[7]; - sp7C = actor->fwork[8]; - sp78 = actor->fwork[9] + 600.0f; + sp80 = this->fwork[7]; + sp7C = this->fwork[8]; + sp78 = this->fwork[9] + 600.0f; } Math_RadToDeg(Math_Atan2F(sp80, sp78)); sp70 = sqrtf(SQ(sp80) + SQ(sp78)); Math_RadToDeg(-Math_Atan2F(sp7C, sp70)); - actor->fwork[0] += (actor->iwork[0] + 1) * 5.0f; - actor->fwork[1] += 10.0f + (actor->iwork[0] + 1) * 5.0f; - actor->fwork[5] = (actor->iwork[0] + 1) * 0.2f; - actor->fwork[6] = (actor->iwork[0] + 1) * 0.2f; + this->fwork[0] += (this->iwork[0] + 1) * 5.0f; + this->fwork[1] += 10.0f + (this->iwork[0] + 1) * 5.0f; + this->fwork[5] = (this->iwork[0] + 1) * 0.2f; + this->fwork[6] = (this->iwork[0] + 1) * 0.2f; - sp7C = SIN_DEG(actor->fwork[0]) * sp70 * actor->fwork[5]; - sp74 = COS_DEG(actor->fwork[1]) * sp70 * actor->fwork[6]; - sp80 = COS_DEG(actor->rot_0F4.y) * sp74; - sp78 = -SIN_DEG(actor->rot_0F4.y) * sp74; + sp7C = SIN_DEG(this->fwork[0]) * sp70 * this->fwork[5]; + sp74 = COS_DEG(this->fwork[1]) * sp70 * this->fwork[6]; + sp80 = COS_DEG(this->rot_0F4.y) * sp74; + sp78 = -SIN_DEG(this->rot_0F4.y) * sp74; if (sp7C < 20.0f) { sp7C = 20.0f; } - if ((Rand_ZeroOne() < 0.7) && (actor->obj.rot.z == 0.0f)) { - actor->fwork[2] = 360.0f; + if ((Rand_ZeroOne() < 0.7) && (this->obj.rot.z == 0.0f)) { + this->fwork[2] = 360.0f; } - Math_SmoothStepToF(&actor->rot_0F4.z, actor->fwork[2], 0.1f, 10.0f, 0.001f); + Math_SmoothStepToF(&this->rot_0F4.z, this->fwork[2], 0.1f, 10.0f, 0.001f); - if (actor->rot_0F4.z >= 360.0f) { - actor->rot_0F4.z = 0.0f; - actor->fwork[2] = 0.0f; + if (this->rot_0F4.z >= 360.0f) { + this->rot_0F4.z = 0.0f; + this->fwork[2] = 0.0f; } - sp68 = Math_RadToDeg(Math_Atan2F(gPlayer[0].pos.x + sp80 + RAND_FLOAT_CENTERED(200.0f) - actor->obj.pos.x, - gPlayer[0].trueZpos + sp78 - actor->obj.pos.z)); - sp6C = Math_RadToDeg(-Math_Atan2F(gPlayer[0].pos.y - 30.0f + sp7C - actor->obj.pos.y, sp70)); + sp68 = Math_RadToDeg(Math_Atan2F(gPlayer[0].pos.x + sp80 + RAND_FLOAT_CENTERED(200.0f) - this->obj.pos.x, + gPlayer[0].trueZpos + sp78 - this->obj.pos.z)); + sp6C = Math_RadToDeg(-Math_Atan2F(gPlayer[0].pos.y - 30.0f + sp7C - this->obj.pos.y, sp70)); - if (gPlayer[0].trueZpos <= actor->obj.pos.z) { - sp68 = actor->rot_0F4.y; - sp6C = actor->rot_0F4.x; + if (gPlayer[0].trueZpos <= this->obj.pos.z) { + sp68 = this->rot_0F4.y; + sp6C = this->rot_0F4.x; } - Math_SmoothStepToAngle(&actor->rot_0F4.y, sp68, 1.0f, 5.0f, 0.001f); - Math_SmoothStepToAngle(&actor->rot_0F4.x, sp6C, 1.0f, 5.0f, 0.001f); - Matrix_RotateY(gCalcMatrix, actor->rot_0F4.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->rot_0F4.x * M_DTOR, MTXF_APPLY); + Math_SmoothStepToAngle(&this->rot_0F4.y, sp68, 1.0f, 5.0f, 0.001f); + Math_SmoothStepToAngle(&this->rot_0F4.x, sp6C, 1.0f, 5.0f, 0.001f); + Matrix_RotateY(gCalcMatrix, this->rot_0F4.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->rot_0F4.x * M_DTOR, MTXF_APPLY); sp5C.x = 0.0f; sp5C.y = 0.0f; sp5C.z = 40.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp5C, &sp50); - sp5C.z = 10.0f + (actor->iwork[0] + 1) * RAND_FLOAT(10.0f); + sp5C.z = 10.0f + (this->iwork[0] + 1) * RAND_FLOAT(10.0f); Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp5C, &sp44); - actor->vel.x = sp50.x; - actor->vel.y = sp50.y; - actor->vel.z = sp44.z; + this->vel.x = sp50.x; + this->vel.y = sp50.y; + this->vel.z = sp44.z; break; case 2: - if (actor->timer_0C6 == 0) { - actor->timer_0C6 = 15; + if (this->timer_0C6 == 0) { + this->timer_0C6 = 15; } - if (actor->timer_0BC == 0) { - var_v0 = actor->iwork[0] * 50 + actor->counter_04E - D_i3_801BFB64[actor->iwork[1]]; - if (var_v0 < actor->iwork[0] * 50) { + if (this->timer_0BC == 0) { + var_v0 = this->iwork[0] * 50 + this->counter_04E - D_i3_801BFB64[this->iwork[1]]; + if (var_v0 < this->iwork[0] * 50) { if (var_v0 > 0) { - var_v0 -= actor->iwork[0] * 50; + var_v0 -= this->iwork[0] * 50; } - var_v0 = var_v0 + (actor->iwork[0] + 1) * 50; + var_v0 = var_v0 + (this->iwork[0] + 1) * 50; } D_i3_801C27C0 = &D_i3_801C27C8[var_v0]; func_effect_800815DC(); - actor->iwork[1]--; - if (actor->iwork[1] <= 0) { - actor->itemDrop = DROP_NONE; - actor->dmgSource = DMG_SRC_2; - Actor_Despawn(actor); - Object_Kill(&actor->obj, actor->sfxSource); + this->iwork[1]--; + if (this->iwork[1] <= 0) { + this->itemDrop = DROP_NONE; + this->dmgSource = DMG_SRC_2; + Actor_Despawn(this); + Object_Kill(&this->obj, this->sfxSource); } - actor->timer_0BC = 4; + this->timer_0BC = 4; func_effect_8007D0E0(D_i3_801C27C0->pos.x, D_i3_801C27C0->pos.y, D_i3_801C27C0->pos.z, 3.0f); - AUDIO_PLAY_SFX(NA_SE_EN_SEA_EXPLOSION_S, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_SEA_EXPLOSION_S, this->sfxSource, 4); } break; } - D_i3_801C27C0 = &D_i3_801C27C8[50 * actor->iwork[0] + actor->counter_04E]; + D_i3_801C27C0 = &D_i3_801C27C8[50 * this->iwork[0] + this->counter_04E]; - D_i3_801C27C0->pos.x = actor->obj.pos.x; - D_i3_801C27C0->pos.y = actor->obj.pos.y; - D_i3_801C27C0->pos.z = actor->obj.pos.z; + D_i3_801C27C0->pos.x = this->obj.pos.x; + D_i3_801C27C0->pos.y = this->obj.pos.y; + D_i3_801C27C0->pos.z = this->obj.pos.z; - D_i3_801C27C0->rot.x = actor->rot_0F4.x; - D_i3_801C27C0->rot.y = actor->rot_0F4.y; - D_i3_801C27C0->rot.z = actor->rot_0F4.z; + D_i3_801C27C0->rot.x = this->rot_0F4.x; + D_i3_801C27C0->rot.y = this->rot_0F4.y; + D_i3_801C27C0->rot.z = this->rot_0F4.z; } void Aquas_801ADF7C(f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, f32 zRot, u8 type, s32 flag, f32 scale, @@ -1824,8 +1821,7 @@ void Aquas_801ADF7C(f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, f32 zRot, Matrix_Pop(&gGfxMatrix); } -// OBJ_ACTOR_255 draw -void Aquas_Actor255_Draw(Actor* actor) { +void Aquas_Actor255_Draw(Actor255* this) { s32 i; f32 xz; f32 yRot; @@ -1835,18 +1831,18 @@ void Aquas_Actor255_Draw(Actor* actor) { Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); - for (i = 0; i <= actor->iwork[1]; i++) { - if ((actor->iwork[1] != 10) && (i == 0)) { + for (i = 0; i <= this->iwork[1]; i++) { + if ((this->iwork[1] != 10) && (i == 0)) { i = 1; } - index = ((actor->iwork[0] * 50) + actor->counter_04E) - D_i3_801BFB64[i]; + index = ((this->iwork[0] * 50) + this->counter_04E) - D_i3_801BFB64[i]; - if (index < (actor->iwork[0] * 50)) { + if (index < (this->iwork[0] * 50)) { if (index > 0) { - index -= actor->iwork[0] * 50; + index -= this->iwork[0] * 50; } - index = index + ((actor->iwork[0] + 1) * 50); + index = index + ((this->iwork[0] + 1) * 50); } D_i3_801C27C0 = &D_i3_801C27C8[index]; @@ -1864,55 +1860,54 @@ void Aquas_Actor255_Draw(Actor* actor) { } Aquas_801ADF7C(D_i3_801C27C0->pos.x, D_i3_801C27C0->pos.y, D_i3_801C27C0->pos.z, xRot, yRot, - D_i3_801C27C0->rot.z, D_i3_801BFB90[i], actor->timer_0C6 % 2U, actor->scale, i); + D_i3_801C27C0->rot.z, D_i3_801BFB90[i], this->timer_0C6 % 2U, this->scale, i); } } -void Aquas_801AE3AC(Actor* actor) { - actor->fwork[1] = 1.0f; - actor->obj.rot.x = 336.0f; - actor->scale = 0.5f; +void Aquas_Actor256_Init(Actor256* this) { + this->fwork[1] = 1.0f; + this->obj.rot.x = 336.0f; + this->scale = 0.5f; } -// OBJ_ACTOR_256 action -void Aquas_Actor256_Update(Actor* actor) { +void Aquas_Actor256_Update(Actor256* this) { s32 i; - switch (actor->state) { + switch (this->state) { case 0: - actor->obj.pos.y = fabsf(D_i3_801C4308[10] * 15.0f) + 347.0f; - if (actor->obj.pos.y >= 757.0f) { - actor->obj.pos.y = 757.0f; + this->obj.pos.y = fabsf(D_i3_801C4308[10] * 15.0f) + 347.0f; + if (this->obj.pos.y >= 757.0f) { + this->obj.pos.y = 757.0f; } - if (actor->obj.pos.y <= 347.0f) { - actor->obj.pos.y = 347.0f; + if (this->obj.pos.y <= 347.0f) { + this->obj.pos.y = 347.0f; } - actor->scale = fabsf(D_i3_801C4308[10] / -28.0f) + 0.5f; + this->scale = fabsf(D_i3_801C4308[10] / -28.0f) + 0.5f; - if (actor->scale > 1.3f) { - actor->scale = 1.3f; + if (this->scale > 1.3f) { + this->scale = 1.3f; } - if (actor->scale <= 0.5f) { - actor->scale = 0.5f; + if (this->scale <= 0.5f) { + this->scale = 0.5f; } if (gBosses[0].timer_052 == 0) { - actor->health = 0; - if (actor->info.hitbox[10] != 116.0f) { - actor->info.hitbox[10] = 116.0f; + this->health = 0; + if (this->info.hitbox[10] != 116.0f) { + this->info.hitbox[10] = 116.0f; } } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; if ((fabsf(D_i3_801C4308[10]) >= 6.0f) && (gBosses[0].state >= 10) && (gBosses[0].swork[AQ_SWK_0] < 2)) { - actor->timer_0C6 = 30; - actor->iwork[1] = 0; + this->timer_0C6 = 30; + this->iwork[1] = 0; D_i3_801C4308[79] -= 5.0f; - AUDIO_PLAY_SFX(NA_SE_EN_KAIBASHIRA_DAMAGE, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_KAIBASHIRA_DAMAGE, this->sfxSource, 4); if (D_i3_801C4308[79] <= -28.0f) { D_i3_801C4308[79] = -28.0f; @@ -1922,38 +1917,38 @@ void Aquas_Actor256_Update(Actor* actor) { if (gBosses[0].timer_052 == 0) { gBosses[0].timer_052 = 72; - actor->health = 10; + this->health = 10; for (i = 0; i < ARRAY_COUNT(gActors); i++) { - if ((gActors[i].obj.id == OBJ_ACTOR_256) && (actor->index != gActors[i].index)) { + if ((gActors[i].obj.id == OBJ_ACTOR_256) && (this->index != gActors[i].index)) { gActors[i].health = 10; } } } else { - actor->iwork[1] = 0; - actor->timer_0C6 = 0; + this->iwork[1] = 0; + this->timer_0C6 = 0; } if (gBosses[0].swork[AQ_SWK_0] == 0) { gBosses[0].swork[AQ_SWK_0] = 1; - actor->info.hitbox[10] = 300.0f; - if (actor->iwork[23] == 0) { + this->info.hitbox[10] = 300.0f; + if (this->iwork[23] == 0) { Radio_PlayMessage(gMsg_ID_15120, RCID_SLIPPY); } - actor->iwork[23]++; - actor->iwork[23] &= 1; - } else if (actor->damage == 31) { - actor->health -= actor->damage; + this->iwork[23]++; + this->iwork[23] &= 1; + } else if (this->damage == 31) { + this->health -= this->damage; Radio_PlayMessage(gMsg_ID_15130, RCID_FALCO); - if (actor->health <= 0) { + if (this->health <= 0) { gBosses[0].swork[AQ_SWK_0] = 2; - actor->health = 0; - actor->timer_0C6 = 300; - actor->fwork[2] = actor->scale; - AUDIO_PLAY_SFX(NA_SE_EN_WT_DISAPPEAR_L, actor->sfxSource, 4); - actor->state++; + this->health = 0; + this->timer_0C6 = 300; + this->fwork[2] = this->scale; + AUDIO_PLAY_SFX(NA_SE_EN_WT_DISAPPEAR_L, this->sfxSource, 4); + this->state++; } } } @@ -1963,43 +1958,43 @@ void Aquas_Actor256_Update(Actor* actor) { case 1: if ((gGameFrameCount % 2) == 0) { - func_effect_8007C120(actor->obj.pos.x, actor->fwork[0] + actor->obj.pos.y, actor->obj.pos.z, - actor->vel.x, actor->vel.y, actor->vel.z, 0.1f, 10); - func_effect_8007C120(actor->obj.pos.x, actor->obj.pos.y + (actor->fwork[0] * -1.0f), - actor->obj.pos.z + 200.0f, actor->vel.x, actor->vel.y, actor->vel.z, 0.1f, 10); - actor->fwork[0] += 40.0f; + Effect_Effect390_Spawn(this->obj.pos.x, this->fwork[0] + this->obj.pos.y, this->obj.pos.z, this->vel.x, + this->vel.y, this->vel.z, 0.1f, 10); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + (this->fwork[0] * -1.0f), + this->obj.pos.z + 200.0f, this->vel.x, this->vel.y, this->vel.z, 0.1f, 10); + this->fwork[0] += 40.0f; } - if ((actor->fwork[2] * 400.0f) <= actor->fwork[0]) { - actor->timer_0BC = 20; - actor->state++; + if ((this->fwork[2] * 400.0f) <= this->fwork[0]) { + this->timer_0BC = 20; + this->state++; } break; case 2: - if (actor->timer_0BC == 0) { + if (this->timer_0BC == 0) { for (i = 0; i < 6; i++) { - func_effect_8007B8F8(actor->obj.pos.x, actor->obj.pos.y + 450.0f, actor->obj.pos.z + 50.0f, 50.0f); - func_effect_8007B8F8(actor->obj.pos.x, actor->obj.pos.y - 420.0f, actor->obj.pos.z + 300.0f, 50.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y + 450.0f, this->obj.pos.z + 50.0f, 50.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y - 420.0f, this->obj.pos.z + 300.0f, 50.0f); } - actor->fwork[3] = 0.7f; - actor->timer_0BC = 10; + this->fwork[3] = 0.7f; + this->timer_0BC = 10; - actor->state++; + this->state++; } break; case 3: - if (actor->timer_0BC == 0) { - Math_SmoothStepToF(&actor->fwork[3], 0.0f, 0.1f, 2.0f, 0); - Math_SmoothStepToF(&actor->scale, 0.0f, actor->fwork[3], 10.0f, 0); + if (this->timer_0BC == 0) { + Math_SmoothStepToF(&this->fwork[3], 0.0f, 0.1f, 2.0f, 0); + Math_SmoothStepToF(&this->scale, 0.0f, this->fwork[3], 10.0f, 0); - if (actor->scale <= 0.2f) { - func_effect_8007BC7C(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 50.0f); - func_effect_8007BC7C(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 50.0f); - func_effect_8007BC7C(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 50.0f); + if (this->scale <= 0.2f) { + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 50.0f); + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 50.0f); + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 50.0f); - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); D_i3_801C42A0[23]--; @@ -2011,80 +2006,80 @@ void Aquas_Actor256_Update(Actor* actor) { if (D_i3_801C42A0[23] == 0) { D_i3_801C4308[79] = -180.0f; for (i = 0; i < 60; i++) { - Aquas_801AC8A8(gBosses[0].obj.pos.x + RAND_FLOAT_CENTERED(1800.0f), - gBosses[0].obj.pos.y + 400.0f + RAND_FLOAT_CENTERED(1000.0f), - gBosses[0].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), 7.0f, 2); + Aquas_Effect366_Spawn(gBosses[0].obj.pos.x + RAND_FLOAT_CENTERED(1800.0f), + gBosses[0].obj.pos.y + 400.0f + RAND_FLOAT_CENTERED(1000.0f), + gBosses[0].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), 7.0f, + 2); } gBosses[0].timer_052 = 0; gBosses[0].timer_056 = 60; gBosses[0].state = 14; } - D_i3_801C4308[80] += D_i3_801BFBA8[actor->iwork[0]]; + D_i3_801C4308[80] += D_i3_801BFBA8[this->iwork[0]]; } } break; } } -// OBJ_ACTOR_256 draw -void Aquas_Actor256_Draw(Actor* actor) { +void Aquas_Actor256_Draw(Actor256* this) { f32 var_fv0; u8 var_t1; u8 i; Vtx* var_t5; Vtx* temp_v1_2; - if ((actor->timer_0C6 != 0) && (actor->state == 0) && (gPlayState != PLAY_PAUSE)) { - actor->iwork[1]++; - actor->iwork[1] %= 8; + if ((this->timer_0C6 != 0) && (this->state == 0) && (gPlayState != PLAY_PAUSE)) { + this->iwork[1]++; + this->iwork[1] %= 8; } temp_v1_2 = SEGMENTED_TO_VIRTUAL(D_AQ_6019078); - if (actor->iwork[1] < 4) { + if (this->iwork[1] < 4) { var_t5 = SEGMENTED_TO_VIRTUAL(D_AQ_6018C78); } else { var_t5 = SEGMENTED_TO_VIRTUAL(D_AQ_6018878); } - var_t1 = actor->iwork[1] % 4; + var_t1 = this->iwork[1] % 4; if (var_t1 >= 3) { var_t1 = 4 - var_t1; } - var_fv0 = actor->timer_0C6 / 60.0f; + var_fv0 = this->timer_0C6 / 60.0f; if (var_fv0 < 0.1f) { var_fv0 = 0.1f; } for (i = 0; i < 28; i += 1) { - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.ob[0] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.ob[0] = temp_v1_2[i].n.ob[0] + (s16) ((((var_t5[i].n.ob[0] - temp_v1_2[i].n.ob[0]) * var_t1) / 2) * var_fv0); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.ob[1] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.ob[1] = temp_v1_2[i].n.ob[1] + (((var_t5[i].n.ob[1] - temp_v1_2[i].n.ob[1]) * var_t1) / 2); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.ob[2] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.ob[2] = temp_v1_2[i].n.ob[2] + (((var_t5[i].n.ob[2] - temp_v1_2[i].n.ob[2]) * var_t1) / 2); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.flag = temp_v1_2[i].n.flag; - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.tc[0] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.flag = temp_v1_2[i].n.flag; + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.tc[0] = temp_v1_2[i].n.tc[0] + (((var_t5[i].n.tc[0] - temp_v1_2[i].n.tc[0]) * var_t1) / 2); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.tc[1] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.tc[1] = temp_v1_2[i].n.tc[1] + (((var_t5[i].n.tc[1] - temp_v1_2[i].n.tc[1]) * var_t1) / 2); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.n[0] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.n[0] = temp_v1_2[i].n.n[0] + (((var_t5[i].n.n[0] - temp_v1_2[i].n.n[0]) * var_t1) / 2); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.n[1] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.n[1] = temp_v1_2[i].n.n[1] + (((var_t5[i].n.n[1] - temp_v1_2[i].n.n[1]) * var_t1) / 2); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.n[2] = + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.n[2] = temp_v1_2[i].n.n[2] + (((var_t5[i].n.n[2] - temp_v1_2[i].n.n[2]) * var_t1) / 2); - D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][i].n.a = temp_v1_2[i].n.a; + D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][i].n.a = temp_v1_2[i].n.a; } - Matrix_Scale(gGfxMatrix, actor->fwork[1] - 0.25f + ((1.5f - actor->scale) * 0.5f), actor->scale, actor->fwork[1], + Matrix_Scale(gGfxMatrix, this->fwork[1] - 0.25f + ((1.5f - this->scale) * 0.5f), this->scale, this->fwork[1], MTXF_APPLY); - if (actor->state != 0) { + if (this->state != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_32); } else if (gBosses[0].swork[AQ_SWK_0] == 1) { RCP_SetupDL(&gMasterDisp, SETUPDL_4); - } else if ((actor->timer_0C6 % 2) == 0) { + } else if ((this->timer_0C6 % 2) == 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_29); } else { RCP_SetupDL(&gMasterDisp, SETUPDL_22); @@ -2097,7 +2092,7 @@ void Aquas_Actor256_Draw(Actor* actor) { gDPLoadTLUT_pal256(gMasterDisp++, D_AQ_6008FC8); gDPLoadTextureBlock(gMasterDisp++, D_AQ_6008EC8, G_IM_FMT_CI, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD); - gSPVertex(gMasterDisp++, D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2], 14, 0); + gSPVertex(gMasterDisp++, D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2], 14, 0); gSP1Triangle(gMasterDisp++, 0, 1, 2, 0); gSP1Triangle(gMasterDisp++, 3, 1, 0, 0); gSP1Triangle(gMasterDisp++, 4, 5, 0, 0); @@ -2118,9 +2113,9 @@ void Aquas_Actor256_Draw(Actor* actor) { gSP1Triangle(gMasterDisp++, 7, 6, 13, 0); gSP1Triangle(gMasterDisp++, 13, 12, 7, 0); gSP1Triangle(gMasterDisp++, 10, 7, 12, 0); - gSPVertex(gMasterDisp++, &D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][1], 3, 0); - gSPVertex(gMasterDisp++, &D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][9], 2, 3); - gSPVertex(gMasterDisp++, &D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][12], 8, 5); + gSPVertex(gMasterDisp++, &D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][1], 3, 0); + gSPVertex(gMasterDisp++, &D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][9], 2, 3); + gSPVertex(gMasterDisp++, &D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][12], 8, 5); gSP1Triangle(gMasterDisp++, 0, 2, 7, 0); gSP1Triangle(gMasterDisp++, 7, 2, 8, 0); gSP1Triangle(gMasterDisp++, 6, 8, 2, 0); @@ -2136,7 +2131,7 @@ void Aquas_Actor256_Draw(Actor* actor) { gDPLoadTLUT_pal256(gMasterDisp++, D_AQ_6019338); gDPLoadTextureBlock(gMasterDisp++, D_AQ_6019238, G_IM_FMT_CI, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD); - gSPVertex(gMasterDisp++, &D_i3_801C3A88[actor->iwork[0]][gSysFrameCount % 2][20], 8, 0); + gSPVertex(gMasterDisp++, &D_i3_801C3A88[this->iwork[0]][gSysFrameCount % 2][20], 8, 0); gSP1Triangle(gMasterDisp++, 0, 1, 2, 0); gSP1Triangle(gMasterDisp++, 2, 3, 0, 0); gSP1Triangle(gMasterDisp++, 4, 5, 6, 0); @@ -2145,18 +2140,17 @@ void Aquas_Actor256_Draw(Actor* actor) { gDPSetTextureLUT(gMasterDisp++, G_TT_NONE); } -void Aquas_801AF9FC(Actor* actor) { - s32 temp = actor->iwork[0]; +void Aquas_Actor257_Init(Actor257* this) { + s32 temp = this->iwork[0]; - actor->fwork[0] = actor->fwork[1] = actor->fwork[2] = 1.0f; - actor->obj.pos.x = D_i3_801C4308[1 + temp]; - actor->obj.pos.y = D_i3_801C4308[4 + temp]; - actor->obj.pos.z = D_i3_801C4308[7 + temp]; - actor->obj.rot.x = D_i3_801BFBBC[temp] + D_i3_801C4308[10]; + this->fwork[0] = this->fwork[1] = this->fwork[2] = 1.0f; + this->obj.pos.x = D_i3_801C4308[1 + temp]; + this->obj.pos.y = D_i3_801C4308[4 + temp]; + this->obj.pos.z = D_i3_801C4308[7 + temp]; + this->obj.rot.x = D_i3_801BFBBC[temp] + D_i3_801C4308[10]; } -// OBJ_ACTOR_257 action -void Aquas_Actor257_Update(Actor* actor) { +void Aquas_Actor257_Update(Actor257* this) { s32 i; f32 sp70; f32 sp6C; @@ -2166,128 +2160,125 @@ void Aquas_Actor257_Update(Actor* actor) { Vec3f sp4C; Actor* sp48; - if (actor->state < 4) { - i = actor->iwork[0]; + if (this->state < 4) { + i = this->iwork[0]; - actor->obj.pos.x = D_i3_801C4308[1 + i]; - actor->obj.pos.y = D_i3_801C4308[4 + i]; - actor->obj.pos.z = D_i3_801C4308[7 + i]; + this->obj.pos.x = D_i3_801C4308[1 + i]; + this->obj.pos.y = D_i3_801C4308[4 + i]; + this->obj.pos.z = D_i3_801C4308[7 + i]; - actor->obj.rot.x = D_i3_801BFBBC[i] + D_i3_801C4308[10]; - if (actor->obj.rot.x < 0.0f) { - actor->obj.rot.x += 359.0f; + this->obj.rot.x = D_i3_801BFBBC[i] + D_i3_801C4308[10]; + if (this->obj.rot.x < 0.0f) { + this->obj.rot.x += 359.0f; } - if (actor->obj.rot.x >= 360.0f) { - actor->obj.rot.x -= 360.0f; + if (this->obj.rot.x >= 360.0f) { + this->obj.rot.x -= 360.0f; } - actor->obj.rot.y = D_i3_801BFBC8[i]; - actor->obj.rot.z = D_i3_801BFBD4[i]; + this->obj.rot.y = D_i3_801BFBC8[i]; + this->obj.rot.z = D_i3_801BFBD4[i]; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; - if ((gBosses[0].state >= 10) && (actor->health != 0) && (actor->damage == 31)) { - actor->timer_0BE = 70; - actor->health -= actor->damage; + if ((gBosses[0].state >= 10) && (this->health != 0) && (this->damage == 31)) { + this->timer_0BE = 70; + this->health -= this->damage; - AUDIO_PLAY_SFX(NA_SE_EN_WT_DAMAGE_S, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_WT_DAMAGE_S, this->sfxSource, 4); - if (actor->timer_0C6 == 0) { - actor->timer_0C6 = 70; + if (this->timer_0C6 == 0) { + this->timer_0C6 = 70; } - if (actor->health <= 0) { - actor->health = actor->timer_0BE = 0; - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 200.0f, 3); + if (this->health <= 0) { + this->health = this->timer_0BE = 0; + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 200.0f, 3); gHitCount += 4; D_ctx_80177850 = 15; - actor->info.bonus = 0; - actor->state = 4; + this->info.bonus = 0; + this->state = 4; } } } if (D_i3_801C42A0[23] == 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } - if (actor->timer_0C6 & 1) { - func_effect_8007C120(actor->obj.pos.x, actor->obj.pos.y + 100.0f, actor->obj.pos.z + RAND_FLOAT(500.0f), - actor->vel.x, actor->vel.y, actor->vel.z, actor->scale * 0.2f, 10); + if (this->timer_0C6 & 1) { + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 100.0f, this->obj.pos.z + RAND_FLOAT(500.0f), + this->vel.x, this->vel.y, this->vel.z, this->scale * 0.2f, 10); } - switch (actor->state) { + switch (this->state) { case 0: if (gBosses[0].state >= 10) { - actor->timer_0BC = D_i3_801BFBB0[actor->iwork[0]] + RAND_FLOAT(20.0f); - actor->health = 90; - actor->state++; + this->timer_0BC = D_i3_801BFBB0[this->iwork[0]] + RAND_FLOAT(20.0f); + this->health = 90; + this->state++; } break; case 1: - if ((actor->timer_0BC == 0) && (fabsf(D_i3_801C4308[10]) < 5.0f) && (actor->timer_0C6 == 0)) { - i = actor->iwork[3] - 1; + if ((this->timer_0BC == 0) && (fabsf(D_i3_801C4308[10]) < 5.0f) && (this->timer_0C6 == 0)) { + i = this->iwork[3] - 1; if (i >= 0) { if (!((gActors[i].obj.status == OBJ_ACTIVE) && (gActors[i].obj.id == OBJ_ACTOR_255) && - (gActors[i].iwork[0] == actor->iwork[0]))) { - actor->iwork[3] = 0; - actor->state = 2; + (gActors[i].iwork[0] == this->iwork[0]))) { + this->iwork[3] = 0; + this->state = 2; } } else { - actor->iwork[3] = 0; - actor->state = 2; + this->iwork[3] = 0; + this->state = 2; } } break; case 2: - Math_SmoothStepToF(&actor->fwork[0], 1.0f, 0.2f, 0.5f, 0.01f); - actor->fwork[2] = actor->fwork[1] = actor->fwork[0]; - if (actor->fwork[0] == 1.0f) { - actor->state = 3; + Math_SmoothStepToF(&this->fwork[0], 1.0f, 0.2f, 0.5f, 0.01f); + this->fwork[2] = this->fwork[1] = this->fwork[0]; + if (this->fwork[0] == 1.0f) { + this->state = 3; } break; case 3: - i = actor->iwork[2] * 4; - Math_SmoothStepToF(&actor->fwork[0], D_i3_801BFBE0[i], D_i3_801BFBE0[i + 1], D_i3_801BFBE0[i + 2], - 0.00001f); - Math_SmoothStepToF(&actor->fwork[1], D_i3_801BFC10[i], D_i3_801BFC10[i + 1], D_i3_801BFC10[i + 2], - 0.00001f); - Math_SmoothStepToF(&actor->fwork[2], D_i3_801BFC40[i], D_i3_801BFC40[i + 1], D_i3_801BFC40[i + 2], - 0.00001f); - actor->iwork[1]++; - i = actor->iwork[3] - 1; + i = this->iwork[2] * 4; + Math_SmoothStepToF(&this->fwork[0], D_i3_801BFBE0[i], D_i3_801BFBE0[i + 1], D_i3_801BFBE0[i + 2], 0.00001f); + Math_SmoothStepToF(&this->fwork[1], D_i3_801BFC10[i], D_i3_801BFC10[i + 1], D_i3_801BFC10[i + 2], 0.00001f); + Math_SmoothStepToF(&this->fwork[2], D_i3_801BFC40[i], D_i3_801BFC40[i + 1], D_i3_801BFC40[i + 2], 0.00001f); + this->iwork[1]++; + i = this->iwork[3] - 1; if ((i >= 0) && !((gActors[i].obj.status == OBJ_ACTIVE) && (gActors[i].obj.id == OBJ_ACTOR_255) && - (gActors[i].iwork[0] == actor->iwork[0]))) { - actor->iwork[3] = 0; + (gActors[i].iwork[0] == this->iwork[0]))) { + this->iwork[3] = 0; i = -1; } - if ((actor->iwork[1] == 13) && (i < 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_SANADA_APPEAR, actor->sfxSource, 4); - for (i = 0, sp48 = gActors; i < ARRAY_COUNT(gActors); i++, sp48++) { + if ((this->iwork[1] == 13) && (i < 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_SANADA_APPEAR, this->sfxSource, 4); + for (i = 0, sp48 = &gActors[0]; i < ARRAY_COUNT(gActors); i++, sp48++) { if (sp48->obj.status == OBJ_FREE) { Actor_Initialize(sp48); sp48->obj.status = OBJ_INIT; sp48->obj.id = OBJ_ACTOR_255; - sp48->obj.pos.x = actor->obj.pos.x; - sp48->obj.pos.y = actor->obj.pos.y; - sp48->obj.pos.z = actor->obj.pos.z; + sp48->obj.pos.x = this->obj.pos.x; + sp48->obj.pos.y = this->obj.pos.y; + sp48->obj.pos.z = this->obj.pos.z; sp48->obj.rot.x = sp48->rot_0F4.x = - Math_ModF(actor->obj.rot.x + 270.0f + D_i3_801BFC7C[actor->iwork[0]], 360.0f); + Math_ModF(this->obj.rot.x + 270.0f + D_i3_801BFC7C[this->iwork[0]], 360.0f); sp48->obj.rot.y = sp48->rot_0F4.y = - Math_ModF(actor->obj.rot.y + D_i3_801BFC88[actor->iwork[0]], 360.0f); - sp48->rot_0F4.z = actor->obj.rot.z; - sp48->obj.rot.z = actor->obj.rot.z; + Math_ModF(this->obj.rot.y + D_i3_801BFC88[this->iwork[0]], 360.0f); + sp48->rot_0F4.z = this->obj.rot.z; + sp48->obj.rot.z = this->obj.rot.z; sp48->timer_0BC = 10; Object_SetInfo(&sp48->info, sp48->obj.id); - actor->iwork[3] = i + 1; - sp48->iwork[0] = actor->iwork[0]; - sp48->iwork[2] = actor->index + 1; + this->iwork[3] = i + 1; + sp48->iwork[0] = this->iwork[0]; + sp48->iwork[2] = this->index + 1; Matrix_RotateY(gCalcMatrix, sp48->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, sp48->obj.rot.x * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, sp48->obj.rot.z * M_DTOR, MTXF_APPLY); @@ -2301,84 +2292,84 @@ void Aquas_Actor257_Update(Actor* actor) { } } if (i >= ARRAY_COUNT(gActors)) { - actor->iwork[3] = 0; + this->iwork[3] = 0; sp48->obj.status = OBJ_FREE; } } - if (actor->iwork[1] == D_i3_801BFC70[actor->iwork[2]]) { - actor->iwork[2]++; - if (actor->iwork[2] >= 3) { - actor->iwork[1] = actor->iwork[2] = 0; - actor->state = 1; - actor->fwork[0] = actor->fwork[1] = actor->fwork[2] = 1.0f; - actor->timer_0BC = D_i3_801BFBB0[actor->iwork[0]] + 70.0f - RAND_FLOAT_CENTERED(30.0f); + if (this->iwork[1] == D_i3_801BFC70[this->iwork[2]]) { + this->iwork[2]++; + if (this->iwork[2] >= 3) { + this->iwork[1] = this->iwork[2] = 0; + this->state = 1; + this->fwork[0] = this->fwork[1] = this->fwork[2] = 1.0f; + this->timer_0BC = D_i3_801BFBB0[this->iwork[0]] + 70.0f - RAND_FLOAT_CENTERED(30.0f); } } break; case 4: - actor->state = 5; - actor->vel.y = 10.0f; - actor->vel.z = 5.0f; - AUDIO_PLAY_SFX(NA_SE_EN_WT_BROKEN, actor->sfxSource, 4); + this->state = 5; + this->vel.y = 10.0f; + this->vel.z = 5.0f; + AUDIO_PLAY_SFX(NA_SE_EN_WT_BROKEN, this->sfxSource, 4); break; case 5: - if (actor->obj.pos.y > (gGroundHeight + 70.0f)) { - Math_SmoothStepToF(&actor->fwork[0], 1.0f, 0.1f, 0.2f, 0.0001f); - Math_SmoothStepToF(&actor->fwork[1], 1.0f, 0.1f, 0.2f, 0.0001f); - Math_SmoothStepToF(&actor->fwork[2], 1.0f, 0.1f, 0.2f, 0.0001f); - Math_SmoothStepToF(&actor->vel.y, -10.0f, 0.1f, 1.0f, 0.001f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 80.0f, 0.1f, 1.0f, 0.001f); + if (this->obj.pos.y > (gGroundHeight + 70.0f)) { + Math_SmoothStepToF(&this->fwork[0], 1.0f, 0.1f, 0.2f, 0.0001f); + Math_SmoothStepToF(&this->fwork[1], 1.0f, 0.1f, 0.2f, 0.0001f); + Math_SmoothStepToF(&this->fwork[2], 1.0f, 0.1f, 0.2f, 0.0001f); + Math_SmoothStepToF(&this->vel.y, -10.0f, 0.1f, 1.0f, 0.001f); + Math_SmoothStepToAngle(&this->obj.rot.x, 80.0f, 0.1f, 1.0f, 0.001f); if (((gGameFrameCount % 2) == 0)) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(300.0f), - actor->obj.pos.y + RAND_FLOAT_CENTERED(200.0f), actor->obj.pos.z, 4.0f, 2); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(300.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(200.0f), this->obj.pos.z, 4.0f, 2); } - if (actor->timer_0C6 == 0) { - actor->timer_0C6 = 70; + if (this->timer_0C6 == 0) { + this->timer_0C6 = 70; } - actor->fwork[6] = 10.0f; - actor->timer_0C0 = 20; + this->fwork[6] = 10.0f; + this->timer_0C0 = 20; } else { - Math_SmoothStepToF(&actor->fwork[6], 30.0f, 0.1f, 12.0f, 0.1f); + Math_SmoothStepToF(&this->fwork[6], 30.0f, 0.1f, 12.0f, 0.1f); sp70 = RAND_FLOAT(30.0f); if (((gGameFrameCount % 4) == 0)) { for (i = 0; i < 36; i += 2) { - sp6C = __sinf(sp70 + (i * 10.0f * M_DTOR)) * actor->fwork[6] * 10.0f; - sp68 = __cosf(sp70 + (i * 10.0f * M_DTOR)) * actor->fwork[6] * 10.0f; + sp6C = __sinf(sp70 + (i * 10.0f * M_DTOR)) * this->fwork[6] * 10.0f; + sp68 = __cosf(sp70 + (i * 10.0f * M_DTOR)) * this->fwork[6] * 10.0f; pad64 = gGroundHeight + 30.0f; - func_effect_8007B8F8(actor->obj.pos.x + sp6C, pad64, actor->obj.pos.z + sp68, 20.0f); + Effect_Effect364_Spawn(this->obj.pos.x + sp6C, pad64, this->obj.pos.z + sp68, 20.0f); } } - if (actor->vel.z != 0) { - actor->vel.y = actor->vel.z = 0.0f; - AUDIO_PLAY_SFX(NA_SE_EN_WT_BOUND_M, actor->sfxSource, 4); + if (this->vel.z != 0) { + this->vel.y = this->vel.z = 0.0f; + AUDIO_PLAY_SFX(NA_SE_EN_WT_BOUND_M, this->sfxSource, 4); } - if (actor->timer_0C0 == 1) { - AUDIO_PLAY_SFX(NA_SE_EN_WT_DISAPPEAR_S, actor->sfxSource, 4); + if (this->timer_0C0 == 1) { + AUDIO_PLAY_SFX(NA_SE_EN_WT_DISAPPEAR_S, this->sfxSource, 4); } - if (actor->timer_0C0 == 0) { - if (actor->timer_0BE == 0) { - actor->timer_0BE = 10; + if (this->timer_0C0 == 0) { + if (this->timer_0BE == 0) { + this->timer_0BE = 10; } - Math_SmoothStepToF(&actor->fwork[0], 0.0f, 0.05f, 0.1f, 0.001f); - Math_SmoothStepToF(&actor->fwork[1], 0.0f, 0.05f, 0.1f, 0.001f); - Math_SmoothStepToF(&actor->fwork[2], 0.0f, 0.05f, 0.1f, 0.001f); - Math_SmoothStepToF(&actor->obj.pos.y, -300.0f, 0.1f, 1.0f, 0.001f); + Math_SmoothStepToF(&this->fwork[0], 0.0f, 0.05f, 0.1f, 0.001f); + Math_SmoothStepToF(&this->fwork[1], 0.0f, 0.05f, 0.1f, 0.001f); + Math_SmoothStepToF(&this->fwork[2], 0.0f, 0.05f, 0.1f, 0.001f); + Math_SmoothStepToF(&this->obj.pos.y, -300.0f, 0.1f, 1.0f, 0.001f); - if (actor->fwork[0] <= 0.2f) { + if (this->fwork[0] <= 0.2f) { for (i = 0; i < 5; i++) { - func_effect_8007BC7C(actor->obj.pos.x, gGroundHeight + 50.0f, actor->obj.pos.z, 20.0f); - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(300.0f), gGroundHeight + (i * 20.0f), - actor->obj.pos.z, 5.0f, 2); + Effect_Effect362_Spawn(this->obj.pos.x, gGroundHeight + 50.0f, this->obj.pos.z, 20.0f); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(300.0f), + gGroundHeight + (i * 20.0f), this->obj.pos.z, 5.0f, 2); } if (gBosses[0].state < 13) { @@ -2387,36 +2378,35 @@ void Aquas_Actor257_Update(Actor* actor) { gBosses[0].swork[AQ_SWK_19] = 30; } } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } } } break; } - if (actor->timer_0BE != 0) { - actor->fwork[3] = SIN_DEG(actor->timer_0BE * 20.0f) * Aquas_801A958C(actor->timer_0BE, 20.0f); - actor->fwork[4] = SIN_DEG(actor->timer_0BE * 20.0f) * Aquas_801A958C(actor->timer_0BE, 20.0f); - actor->fwork[5] = SIN_DEG(actor->timer_0BE * 20.0f) * Aquas_801A958C(actor->timer_0BE, 20.0f); + if (this->timer_0BE != 0) { + this->fwork[3] = SIN_DEG(this->timer_0BE * 20.0f) * Aquas_801A958C(this->timer_0BE, 20.0f); + this->fwork[4] = SIN_DEG(this->timer_0BE * 20.0f) * Aquas_801A958C(this->timer_0BE, 20.0f); + this->fwork[5] = SIN_DEG(this->timer_0BE * 20.0f) * Aquas_801A958C(this->timer_0BE, 20.0f); } } -// OBJ_ACTOR_257 draw -void Aquas_Actor257_Draw(Actor* actor) { - Matrix_RotateY(gGfxMatrix, (actor->obj.rot.x + actor->fwork[3]) * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, (actor->obj.rot.y + actor->fwork[4]) * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gGfxMatrix, (actor->obj.rot.z + actor->fwork[5]) * M_DTOR, MTXF_APPLY); - Matrix_Scale(gGfxMatrix, actor->fwork[0], actor->fwork[1], actor->fwork[2], MTXF_APPLY); +void Aquas_Actor257_Draw(Actor257* this) { + Matrix_RotateY(gGfxMatrix, (this->obj.rot.x + this->fwork[3]) * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, (this->obj.rot.y + this->fwork[4]) * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, (this->obj.rot.z + this->fwork[5]) * M_DTOR, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->fwork[0], this->fwork[1], this->fwork[2], MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((actor->timer_0C6 % 2) == 0) { + if ((this->timer_0C6 % 2) == 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_57); } else { RCP_SetupDL(&gMasterDisp, SETUPDL_61); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - switch (actor->iwork[0]) { + switch (this->iwork[0]) { case 0: gSPDisplayList(gMasterDisp++, D_AQ_6019E80); break; @@ -2429,125 +2419,123 @@ void Aquas_Actor257_Draw(Actor* actor) { } } -// OBJ_ACTOR_258 action -void Aquas_Actor258_Update(Actor* actor) { +void Aquas_AqPearl_Update(AqPearl* this) { Vec3f sp44; Vec3f sp38; - if ((actor->dmgType != DMG_NONE) || (gBosses[0].state >= 16)) { - actor->state = 3; + if ((this->dmgType != DMG_NONE) || (gBosses[0].state >= 16)) { + this->state = 3; } - switch (actor->state) { + switch (this->state) { case 0: - if (actor->timer_0BC == 0) { - Matrix_RotateY(gCalcMatrix, actor->fwork[2] * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->fwork[1] * M_DTOR, MTXF_APPLY); + if (this->timer_0BC == 0) { + Matrix_RotateY(gCalcMatrix, this->fwork[2] * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->fwork[1] * M_DTOR, MTXF_APPLY); sp44.x = sp44.y = 0.0f; sp44.z = 50.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); - actor->vel.x = sp38.x; - actor->vel.y = sp38.y; - actor->vel.z = sp38.z; - actor->timer_0BE = 5; - actor->iwork[1] = 255; - actor->iwork[2] = 255; - actor->iwork[3] = 255; - actor->state++; + this->vel.x = sp38.x; + this->vel.y = sp38.y; + this->vel.z = sp38.z; + this->timer_0BE = 5; + this->iwork[1] = 255; + this->iwork[2] = 255; + this->iwork[3] = 255; + this->state++; } break; case 1: - if (actor->timer_0BE == 0) { - Matrix_RotateY(gCalcMatrix, actor->fwork[4] * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->fwork[3] * M_DTOR, MTXF_APPLY); + if (this->timer_0BE == 0) { + Matrix_RotateY(gCalcMatrix, this->fwork[4] * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->fwork[3] * M_DTOR, MTXF_APPLY); sp44.x = sp44.y = 0.0f; sp44.z = 30.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); - actor->vel.x = sp38.x; - actor->vel.y = sp38.y; - actor->vel.z = sp38.z; - actor->timer_0C0 = 10; - actor->state++; + this->vel.x = sp38.x; + this->vel.y = sp38.y; + this->vel.z = sp38.z; + this->timer_0C0 = 10; + this->state++; } break; case 2: - if (actor->timer_0C0 == 0) { - actor->iwork[1] -= 20; - actor->iwork[2] -= 20; - actor->iwork[3] -= 20; - if (actor->iwork[1] < 5) { - actor->iwork[1] = actor->iwork[2] = actor->iwork[3] = 5; + if (this->timer_0C0 == 0) { + this->iwork[1] -= 20; + this->iwork[2] -= 20; + this->iwork[3] -= 20; + if (this->iwork[1] < 5) { + this->iwork[1] = this->iwork[2] = this->iwork[3] = 5; } } break; case 3: if (Rand_ZeroOne() < 0.1) { - actor->itemDrop = DROP_SILVER_RING_10p; - actor->dmgSource = DMG_SRC_2; - Actor_Despawn(actor); + this->itemDrop = DROP_SILVER_RING_10p; + this->dmgSource = DMG_SRC_2; + Actor_Despawn(this); } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); func_effect_800815DC(); - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 50.0f, 5.0f); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_SEA_EXPLOSION_S); + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 50.0f, 5.0f); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_SEA_EXPLOSION_S); break; } if (((gGameFrameCount % 16) == 0)) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(10.0f), actor->obj.pos.y + RAND_FLOAT_CENTERED(10.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(10.0f), 2.0f, 1); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(10.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(10.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(10.0f), 2.0f, 1); } - Aquas_801A96DC(actor); + Aquas_801A96DC(this); } -// OBJ_ACTOR_258 draw -void Aquas_Actor258_Draw(Actor* actor) { - if (actor->timer_0BC == 0) { +void Aquas_AqPearl_Draw(AqPearl* this) { + if (this->timer_0BC == 0) { Graphics_SetScaleMtx(0.8f); RCP_SetupDL(&gMasterDisp, SETUPDL_61); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, actor->iwork[1], actor->iwork[2], actor->iwork[3], 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, this->iwork[1], this->iwork[2], this->iwork[3], 255); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_AQ_6024A50); + gSPDisplayList(gMasterDisp++, aAqPearlDL); } } -void Aquas_801B0F88(Boss* bossAQ) { - if ((D_i3_801C42A0[23] != 0) && (bossAQ->swork[AQ_SWK_0] < 2)) { - bossAQ->swork[AQ_SWK_19] = 30; +void Aquas_801B0F88(AqBacoon* this) { + if ((D_i3_801C42A0[23] != 0) && (this->swork[AQ_SWK_0] < 2)) { + this->swork[AQ_SWK_19] = 30; D_i3_801C4308[79] = 0.0f; - bossAQ->swork[AQ_SWK_0] = 3; + this->swork[AQ_SWK_0] = 3; } } -void Aquas_801B0FCC(Boss* bossAQ) { +void Aquas_801B0FCC(AqBacoon* this) { D_i3_801C4308[54] = D_i3_801C4308[61] = D_i3_801C4308[68] = 0.1f; - bossAQ->swork[AQ_SWK_19] = 500; + this->swork[AQ_SWK_19] = 500; D_i3_801C4308[79] = -28.0f; } -void Aquas_801B1008(Boss* bossAQ, s32 timer) { - if ((bossAQ->swork[AQ_SWK_19] == 0) && (fabsf(D_i3_801C4308[10]) <= 1.0f) && (bossAQ->swork[AQ_SWK_0] == 0)) { +void Aquas_801B1008(AqBacoon* this, s32 timer) { + if ((this->swork[AQ_SWK_19] == 0) && (fabsf(D_i3_801C4308[10]) <= 1.0f) && (this->swork[AQ_SWK_0] == 0)) { D_i3_801C4308[79] = -28.0f; - bossAQ->swork[AQ_SWK_19] = timer; - bossAQ->swork[AQ_SWK_0] = 0; - if (bossAQ->swork[AQ_SWK_22] == 0) { + this->swork[AQ_SWK_19] = timer; + this->swork[AQ_SWK_0] = 0; + if (this->swork[AQ_SWK_22] == 0) { Radio_PlayMessage(gMsg_ID_15110, RCID_PEPPY); } - bossAQ->swork[AQ_SWK_22]++; - bossAQ->swork[AQ_SWK_22] &= 3; + this->swork[AQ_SWK_22]++; + this->swork[AQ_SWK_22] &= 3; } - if ((fabsf(D_i3_801C4308[10]) >= 15.0f) && (bossAQ->timer_056 == 0)) { - bossAQ->swork[AQ_SWK_2] = bossAQ->swork[AQ_SWK_3] = 1; - bossAQ->timer_056 = 60; + if ((fabsf(D_i3_801C4308[10]) >= 15.0f) && (this->timer_056 == 0)) { + this->swork[AQ_SWK_2] = this->swork[AQ_SWK_3] = 1; + this->timer_056 = 60; } } -// OBJ_BOSS_AQ init -void Aquas_BossAq_Init(BossAQ* this) { +void Aquas_AqBacoon_Init(AqBacoon* this) { s32 i; Actor* actor; @@ -2556,7 +2544,7 @@ void Aquas_BossAq_Init(BossAQ* this) { this->health = 150; - for (i = 0, actor = gActors; i < 2; actor++) { + for (i = 0, actor = &gActors[0]; i < 2; actor++) { if (actor->obj.status == OBJ_FREE) { Actor_Initialize(actor); actor->obj.status = OBJ_INIT; @@ -2591,7 +2579,7 @@ void Aquas_BossAq_Init(BossAQ* this) { (D_i3_801C42A0[6] = D_i3_801C42A0[7] = 0) ^ 0; // fake for (i = 0; i < AQ_LIMB_MAX; i++) { - sBossAQlimbTimers[i] = 0; + sAqBacoonlimbTimers[i] = 0; } this->obj.pos.y += 400.0f; @@ -2604,13 +2592,13 @@ void Aquas_BossAq_Init(BossAQ* this) { AUDIO_PLAY_SFX(NA_SE_EN_SHELL_BEAT, this->sfxSource, 4); } -// OBJ_BOSS_AQ action +// OBJ_BOSS_AQ_BACOON action #ifdef NON_MATCHING // unclear how to use the 4 indices // loop at 2854 unrolls incorrectly // sp100 shouldn't be on the stack // https://decomp.me/scratch/M6ghQ -void Aquas_Boss_Update(Boss* bossAQ) { +void Aquas_AqBacoon_Update(AqBacoon* this) { s32 i; s32 i2; s32 i3; @@ -2635,10 +2623,10 @@ void Aquas_Boss_Update(Boss* bossAQ) { gBossFrameCount++; - switch (bossAQ->state) { + switch (this->state) { case 0: - if (bossAQ->swork[AQ_SWK_21] == 0) { - for (i2 = 0, actor = gActors; i2 < 3; actor++) { + if (this->swork[AQ_SWK_21] == 0) { + for (i2 = 0, actor = &gActors[0]; i2 < 3; actor++) { if (actor->obj.status == OBJ_FREE) { Actor_Initialize(actor); actor->obj.status = OBJ_INIT; @@ -2648,130 +2636,130 @@ void Aquas_Boss_Update(Boss* bossAQ) { i2++; } } - bossAQ->swork[AQ_SWK_21] = 1; + this->swork[AQ_SWK_21] = 1; SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 40); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 40); Radio_PlayMessage(gMsg_ID_15100, RCID_FOX); } - if (fabsf(bossAQ->obj.pos.z - gPlayer[0].trueZpos) <= 3000.0f) { + if (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) <= 3000.0f) { D_i3_801C4190[6] = 1; - bossAQ->timer_056 = 20; + this->timer_056 = 20; Audio_PlaySequence(SEQ_PLAYER_BGM, NA_BGM_BOSS_AQ, 0, 1); - bossAQ->state = 1; + this->state = 1; } break; case 1: - if (bossAQ->timer_056 == 0) { + if (this->timer_056 == 0) { D_i3_801C4308[14] = 80.0f; D_i3_801C4308[12] = D_i3_801C4308[13] = 0.0f; - bossAQ->timer_056 = 20; - bossAQ->state = 2; - AUDIO_PLAY_SFX(NA_SE_BUBBLE_UP, bossAQ->sfxSource, 0); + this->timer_056 = 20; + this->state = 2; + AUDIO_PLAY_SFX(NA_SE_BUBBLE_UP, this->sfxSource, 0); } break; case 2: - Aquas_801B0FCC(bossAQ); - if (!(bossAQ->timer_056 & 1)) { + Aquas_801B0FCC(this); + if (!(this->timer_056 & 1)) { for (i3 = 0; i3 < 30; i3++) { - Aquas_801AC8A8(gBosses[0].obj.pos.x + RAND_FLOAT_CENTERED(1800.0f), - gBosses[0].obj.pos.y + RAND_FLOAT_CENTERED(500.0f), - gBosses[0].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), 7.0f, 2); + Aquas_Effect366_Spawn(gBosses[0].obj.pos.x + RAND_FLOAT_CENTERED(1800.0f), + gBosses[0].obj.pos.y + RAND_FLOAT_CENTERED(500.0f), + gBosses[0].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), 7.0f, 2); } } - if (bossAQ->timer_056 == 0) { - bossAQ->timer_056 = 40; - bossAQ->state = 3; + if (this->timer_056 == 0) { + this->timer_056 = 40; + this->state = 3; } break; case 3: - Aquas_801B0FCC(bossAQ); + Aquas_801B0FCC(this); Math_SmoothStepToF(&D_i3_801C4308[12], -45.0f, 0.5f, 1.0f, 0.01f); Math_SmoothStepToF(&D_i3_801C4308[13], 30.0f, 0.5f, 1.0f, 0.01f); Math_SmoothStepToAngle(&D_i3_801C4308[14], 0.0f, 1.0f, 2.0f, 0.0f); - Math_SmoothStepToAngle(&D_i3_801C4308[15], D_i3_801C0190[bossAQ->swork[AQ_SWK_20]], 1.0f, 10, 0.0f); - if (bossAQ->timer_056 == 0) { - bossAQ->timer_056 = 10; - bossAQ->swork[AQ_SWK_20]++; - if (bossAQ->swork[AQ_SWK_20] >= 5) { - bossAQ->state = 4; + Math_SmoothStepToAngle(&D_i3_801C4308[15], D_i3_801C0190[this->swork[AQ_SWK_20]], 1.0f, 10, 0.0f); + if (this->timer_056 == 0) { + this->timer_056 = 10; + this->swork[AQ_SWK_20]++; + if (this->swork[AQ_SWK_20] >= 5) { + this->state = 4; } } break; case 4: - Aquas_801B0FCC(bossAQ); + Aquas_801B0FCC(this); Math_SmoothStepToF(&D_i3_801C4308[58], 0.25f, 0.3f, 1.0f, 0.0f); - if (bossAQ->timer_056 == 0) { - bossAQ->timer_056 = 20; - bossAQ->state = 5; + if (this->timer_056 == 0) { + this->timer_056 = 20; + this->state = 5; } break; case 5: - Aquas_801B0FCC(bossAQ); + Aquas_801B0FCC(this); Math_SmoothStepToF(&D_i3_801C4308[58], 0.25f, 0.3f, 1.0f, 0.0f); - if (bossAQ->timer_056 == 0) { - bossAQ->timer_056 = 30; - bossAQ->state = 6; + if (this->timer_056 == 0) { + this->timer_056 = 30; + this->state = 6; } break; case 6: - Aquas_801B0FCC(bossAQ); - if (bossAQ->timer_056 == 0) { - bossAQ->state = 7; + Aquas_801B0FCC(this); + if (this->timer_056 == 0) { + this->state = 7; } break; case 7: - bossAQ->swork[AQ_SWK_19] = 500; + this->swork[AQ_SWK_19] = 500; D_i3_801C4308[79] = -28.0f; Math_SmoothStepToF(&D_i3_801C4308[54], 1.0f, 0.001f, 0.01f, 0.0f); Math_SmoothStepToF(&D_i3_801C4308[61], 1.0f, 0.001f, 0.01f, 0.0f); if (D_i3_801C4308[54] >= 0.9f) { - bossAQ->timer_056 = 20; + this->timer_056 = 20; D_i3_801C4308[79] = 0.0f; - bossAQ->swork[AQ_SWK_0] = 3; - bossAQ->state = 8; + this->swork[AQ_SWK_0] = 3; + this->state = 8; } break; case 8: - if (bossAQ->timer_056 == 0) { - bossAQ->timer_056 = 20; - bossAQ->swork[AQ_SWK_12] = 10; + if (this->timer_056 == 0) { + this->timer_056 = 20; + this->swork[AQ_SWK_12] = 10; D_i3_801C42A0[3] = 0; Radio_PlayMessage(gMsg_ID_2225, RCID_SLIPPY); - bossAQ->swork[AQ_SWK_26] = gBossFrameCount + 156; - bossAQ->state = 9; + this->swork[AQ_SWK_26] = gBossFrameCount + 156; + this->state = 9; } break; case 9: - if (bossAQ->timer_056 == 0) { - bossAQ->state = 10; + if (this->timer_056 == 0) { + this->state = 10; } break; case 10: case 11: case 12: - Aquas_801B1008(bossAQ, 500); + Aquas_801B1008(this, 500); break; case 13: - Aquas_801B1008(bossAQ, 60); + Aquas_801B1008(this, 60); break; case 14: - if (bossAQ->timer_056 == 58) { - AUDIO_PLAY_SFX(NA_SE_EN_SHELL_FILLOPEN, bossAQ->sfxSource, 4); + if (this->timer_056 == 58) { + AUDIO_PLAY_SFX(NA_SE_EN_SHELL_FILLOPEN, this->sfxSource, 4); } - if ((bossAQ->timer_056 == 0) && (D_i3_801C4308[12] <= -44.0f)) { - bossAQ->swork[AQ_SWK_2] = bossAQ->swork[AQ_SWK_3] = 20; - bossAQ->state = 15; + if ((this->timer_056 == 0) && (D_i3_801C4308[12] <= -44.0f)) { + this->swork[AQ_SWK_2] = this->swork[AQ_SWK_3] = 20; + this->state = 15; } - if (bossAQ->timer_056 == 40) { + if (this->timer_056 == 40) { Radio_PlayMessage(gMsg_ID_15140, RCID_PEPPY); } break; case 15: - if (bossAQ->swork[AQ_SWK_2] == 0) { - bossAQ->swork[AQ_SWK_2] = 100 + RAND_INT(50.0f); + if (this->swork[AQ_SWK_2] == 0) { + this->swork[AQ_SWK_2] = 100 + RAND_INT(50.0f); } - if (bossAQ->swork[AQ_SWK_3] == 0) { - bossAQ->swork[AQ_SWK_3] = 100 + RAND_INT(50.0f); + if (this->swork[AQ_SWK_3] == 0) { + this->swork[AQ_SWK_3] = 100 + RAND_INT(50.0f); } break; case 16: @@ -2790,8 +2778,8 @@ void Aquas_Boss_Update(Boss* bossAQ) { Math_SmoothStepToF(&D_i3_801C41B8[25], D_bg_8015F970, 1.0f, 100, 0.f); Math_SmoothStepToF(&D_i3_801C41B8[26], 128.0f, 1.0f, 100, 0.f); for (i3 = 0; i3 < AQ_LIMB_MAX; i3++) { - if (sBossAQlimbTimers[i3] == 0) { - sBossAQlimbTimers[i3] = 100; + if (sAqBacoonlimbTimers[i3] == 0) { + sAqBacoonlimbTimers[i3] = 100; } } @@ -2800,38 +2788,38 @@ void Aquas_Boss_Update(Boss* bossAQ) { D_i3_801C42A0[7] = 50; } if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C120(bossAQ->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), - bossAQ->obj.pos.y + 400.0f + RAND_FLOAT_CENTERED(400.0f), - bossAQ->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), bossAQ->vel.x, - bossAQ->vel.y, bossAQ->vel.z, 0.5f, 10); - func_effect_8007D0E0(bossAQ->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), - bossAQ->obj.pos.y + 200.0f + RAND_FLOAT_CENTERED(400.0f), - bossAQ->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), 10.0f); + Effect_Effect390_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), + this->obj.pos.y + 400.0f + RAND_FLOAT_CENTERED(400.0f), + this->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), this->vel.x, + this->vel.y, this->vel.z, 0.5f, 10); + func_effect_8007D0E0(this->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), + this->obj.pos.y + 200.0f + RAND_FLOAT_CENTERED(400.0f), + this->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), 10.0f); } if (i3 && i3) {} for (i3 = 0; i3 < 3; i3++) { - func_effect_80081A8C(bossAQ->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), - bossAQ->obj.pos.y + 200.0f + RAND_FLOAT_CENTERED(200.0f), - bossAQ->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), 3.0f + RAND_FLOAT(3.0f), + func_effect_80081A8C(this->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), + this->obj.pos.y + 200.0f + RAND_FLOAT_CENTERED(200.0f), + this->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), 3.0f + RAND_FLOAT(3.0f), 5); } - if (bossAQ->timer_056 == 0) { + if (this->timer_056 == 0) { gEffects[98].obj.status = OBJ_FREE; gEffects[99].obj.status = OBJ_FREE; - func_effect_8007A568(bossAQ->obj.pos.x, bossAQ->obj.pos.y, bossAQ->obj.pos.z + 600.0f, 40.0f); - bossAQ->timer_056 = 50; + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 600.0f, 40.0f); + this->timer_056 = 50; for (i3 = 0; i3 < AQ_LIMB_MAX; i3++) { - sBossAQlimbTimers[i3] = 100; + sAqBacoonlimbTimers[i3] = 100; } gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 0; - bossAQ->state = 17; + this->state = 17; } break; case 17: - if (bossAQ->timer_056 == 20) { + if (this->timer_056 == 20) { gEffects[96].obj.status = OBJ_FREE; gEffects[97].obj.status = OBJ_FREE; - func_effect_8007A568(bossAQ->obj.pos.x, bossAQ->obj.pos.y, bossAQ->obj.pos.z + 600.0f, 80.0f); + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 600.0f, 80.0f); } D_i3_801C42A0[0] -= 4; if (D_i3_801C42A0[0] < 0) { @@ -2840,38 +2828,38 @@ void Aquas_Boss_Update(Boss* bossAQ) { for (i3 = 0; i3 < 21; i3++) { Math_SmoothStepToF(&D_i3_801C4308[52 + i3], 0.1f, 0.1f, 1.0f, 0.0f); } - Math_SmoothStepToF(&bossAQ->fwork[AQ_FWK_8], 0.1f, 0.1f, 1.0f, 0.0f); - Math_SmoothStepToF(&bossAQ->fwork[AQ_FWK_9], 0.1f, 0.1f, 1.0f, 0.0f); - Math_SmoothStepToF(&bossAQ->fwork[AQ_FWK_10], 0.1f, 0.1f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[AQ_FWK_8], 0.1f, 0.1f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[AQ_FWK_9], 0.1f, 0.1f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[AQ_FWK_10], 0.1f, 0.1f, 1.0f, 0.0f); if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C120(bossAQ->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), - bossAQ->obj.pos.y + 400.0f + RAND_FLOAT_CENTERED(400.0f), - bossAQ->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), bossAQ->vel.x, - bossAQ->vel.y, bossAQ->vel.z, 0.7f, 15); + Effect_Effect390_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(1200.0f), + this->obj.pos.y + 400.0f + RAND_FLOAT_CENTERED(400.0f), + this->obj.pos.z + 1000.0f + RAND_FLOAT_CENTERED(800.0f), this->vel.x, + this->vel.y, this->vel.z, 0.7f, 15); } - if (bossAQ->timer_056 == 1) { + if (this->timer_056 == 1) { for (i3 = 0; i3 < AQ_LIMB_MAX; i3++) { if (i3 != AQ_LIMB_27) { - sBossAQlimbTimers[i3] = 1000; + sAqBacoonlimbTimers[i3] = 1000; } } } - if (bossAQ->timer_056 == 0) { - bossAQ->timer_056 = 300; - bossAQ->state = 18; + if (this->timer_056 == 0) { + this->timer_056 = 300; + this->state = 18; } break; case 18: - if (bossAQ->timer_056 != 0) { + if (this->timer_056 != 0) { for (i3 = 0; i3 < 30; i3++) { - Aquas_801AC8A8(gBosses[0].obj.pos.x + RAND_FLOAT_CENTERED(1800.0f), - gBosses[0].obj.pos.y + RAND_FLOAT_CENTERED(500.0f), - gBosses[0].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), 7.0f, 2); + Aquas_Effect366_Spawn(gBosses[0].obj.pos.x + RAND_FLOAT_CENTERED(1800.0f), + gBosses[0].obj.pos.y + RAND_FLOAT_CENTERED(500.0f), + gBosses[0].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), 7.0f, 2); } } break; } - switch (bossAQ->swork[AQ_SWK_0]) { + switch (this->swork[AQ_SWK_0]) { case 0: if (D_i3_801C42A0[23] == 0) { D_i3_801C4308[79] = -180.0f; @@ -2882,8 +2870,8 @@ void Aquas_Boss_Update(Boss* bossAQ) { break; case 1: Math_SmoothStepToF(&D_i3_801C4308[10], -28.0f, 0.05f, 0.3f, 0.0f); - if (bossAQ->timer_052 < 3) { - Aquas_801B0F88(bossAQ); + if (this->timer_052 < 3) { + Aquas_801B0F88(this); } break; case 2: @@ -2891,42 +2879,42 @@ void Aquas_Boss_Update(Boss* bossAQ) { case 3: Math_SmoothStepToF(&D_i3_801C4308[10], D_i3_801C4308[79], 0.5f, 10.0f, 0.0f); if (fabsf(D_i3_801C4308[10]) <= 5.0f) { - bossAQ->swork[AQ_SWK_0] = 0; - bossAQ->timer_052 = 0; - bossAQ->swork[AQ_SWK_19] = 500; + this->swork[AQ_SWK_0] = 0; + this->timer_052 = 0; + this->swork[AQ_SWK_19] = 500; D_i3_801C4308[79] = 0.0f; - AUDIO_PLAY_SFX(NA_SE_EN_SHELL_CLOSE, bossAQ->sfxSource, 4); - if (bossAQ->state < 14) { - for (i3 = 0, actor = gActors; i3 < ARRAY_COUNT(gActors); i3++, actor++) { - if ((actor->obj.id == OBJ_ACTOR_260) && (actor->obj.status == OBJ_ACTIVE)) { + AUDIO_PLAY_SFX(NA_SE_EN_SHELL_CLOSE, this->sfxSource, 4); + if (this->state < 14) { + for (i3 = 0, actor = &gActors[0]; i3 < ARRAY_COUNT(gActors); i3++, actor++) { + if ((actor->obj.id == OBJ_ACTOR_AQ_GAROA) && (actor->obj.status == OBJ_ACTIVE)) { actor->iwork[0] = 1; } } - bossAQ->timer_058 = 30; - bossAQ->swork[AQ_SWK_0] = 4; + this->timer_058 = 30; + this->swork[AQ_SWK_0] = 4; gCameraShake = 50; - AUDIO_PLAY_SFX(NA_SE_WATER_PRESSURE, bossAQ->sfxSource, 0); - func_enmy_80062B60(bossAQ->obj.pos.x, bossAQ->obj.pos.z + 800.0f, 0, 100.0f); + AUDIO_PLAY_SFX(NA_SE_WATER_PRESSURE, this->sfxSource, 0); + func_enmy_80062B60(this->obj.pos.x, this->obj.pos.z + 800.0f, 0, 100.0f); var_fs3 = 80.0f; for (i2 = 0; i2 < 3; i2++, var_fs3 += 10.0f) { for (i3 = 0; i3 < 9; i3++) { var_fs0 = SIN_DEG((27 + 2 * i3) * (10.0f + 3 * i2)) * var_fs3 * 10.0f; var_fs1 = COS_DEG((27 + 2 * i3) * (10.0f + 3 * i2)) * var_fs3 * 10.0f; temp3 = gGroundHeight + 30.0f; - func_effect_8007B8F8(bossAQ->obj.pos.x + var_fs0, temp3, - bossAQ->obj.pos.z + 1000.0f + var_fs1, 20.0f); + Effect_Effect364_Spawn(this->obj.pos.x + var_fs0, temp3, + this->obj.pos.z + 1000.0f + var_fs1, 20.0f); } } } } break; case 4: - bossAQ->swork[AQ_SWK_19] = 50; + this->swork[AQ_SWK_19] = 50; Math_SmoothStepToF(&D_i3_801C4308[10], D_i3_801C4308[79], 0.5f, 5.0f, 0.0f); - if (bossAQ->timer_058 > 10) { + if (this->timer_058 > 10) { Math_SmoothStepToF(D_ctx_801779A8, 20.0f, 1.0f, 5.0f, 0.0f); } - if (bossAQ->timer_058 != 0) { + if (this->timer_058 != 0) { gPlayer[0].boostCooldown = 1; Math_SmoothStepToF(&D_i3_801C41B8[24], 20.0f, 0.1f, 1.0f, 0.0f); Math_SmoothStepToF(&gPlayer[0].camDist, 180.0f, 0.4f, 20.0f, 0.0f); @@ -2936,110 +2924,110 @@ void Aquas_Boss_Update(Boss* bossAQ) { if (gPlayer[0].camDist < 0.1f) { gPlayer[0].boostCooldown = 0; gPlayer[0].camDist = D_i3_801C41B8[24] = 0.0f; - bossAQ->swork[AQ_SWK_0] = 0; + this->swork[AQ_SWK_0] = 0; } } break; } Math_SmoothStepToF(&D_i3_801C4308[80], 0.0f, 1.0f, 2.0f, 0); Math_SmoothStepToF(&D_i3_801C4308[11], D_i3_801C4308[80], 0.1f, 2.0f, 0); - if (bossAQ->dmgType != DMG_NONE) { - bossAQ->dmgType = DMG_NONE; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; if (fabsf(D_i3_801C4308[10]) >= 5.0f) { - switch (bossAQ->dmgPart) { + switch (this->dmgPart) { case 13: - if ((bossAQ->swork[AQ_SWK_12] != 0) && (bossAQ->state >= 15)) { + if ((this->swork[AQ_SWK_12] != 0) && (this->state >= 15)) { if (D_i3_801C42A0[23] == 0) { - sBossAQlimbTimers[AQ_LIMB_9] = D_i3_801C42A0[3] = 50; + sAqBacoonlimbTimers[AQ_LIMB_9] = D_i3_801C42A0[3] = 50; D_i3_801C42A0[22] = 0; - bossAQ->swork[AQ_SWK_12]--; - bossAQ->swork[AQ_SWK_13] = 70; - AUDIO_PLAY_SFX(NA_SE_EN_EYEFILM_DAMAGE, bossAQ->sfxSource, 4); + this->swork[AQ_SWK_12]--; + this->swork[AQ_SWK_13] = 70; + AUDIO_PLAY_SFX(NA_SE_EN_EYEFILM_DAMAGE, this->sfxSource, 4); } - } else if (bossAQ->state >= 10) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); + } else if (this->state >= 10) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } break; case 14: - if (bossAQ->damage == 31) { + if (this->damage == 31) { if (D_i3_801C42A0[23] != 0) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); - } else if ((bossAQ->state >= 15) && (bossAQ->swork[AQ_SWK_8] != 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); + } else if ((this->state >= 15) && (this->swork[AQ_SWK_8] != 0)) { D_i3_801C42A0[1] = 50; - sBossAQlimbTimers[AQ_LIMB_7] = 50; - bossAQ->swork[AQ_SWK_8]--; - AUDIO_PLAY_SFX(NA_SE_EN_WT_DAMAGE_S, bossAQ->sfxSource, 4); - if (bossAQ->swork[AQ_SWK_8] == 0) { + sAqBacoonlimbTimers[AQ_LIMB_7] = 50; + this->swork[AQ_SWK_8]--; + AUDIO_PLAY_SFX(NA_SE_EN_WT_DAMAGE_S, this->sfxSource, 4); + if (this->swork[AQ_SWK_8] == 0) { spD4.x = D_i3_801C4308[73]; spD4.y = D_i3_801C4308[74]; spD4.z = D_i3_801C4308[75]; // 74? Effect_SpawnTimedSfxAtPos(&spD4, NA_SE_EN_WT_DISAPPEAR_L); - bossAQ->swork[AQ_SWK_10] = 250.0f + RAND_FLOAT(50.0f); + this->swork[AQ_SWK_10] = 250.0f + RAND_FLOAT(50.0f); } } } break; case 15: - if (bossAQ->damage == 31) { + if (this->damage == 31) { if (D_i3_801C42A0[23] != 0) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); - } else if ((bossAQ->state >= 15) && (bossAQ->swork[AQ_SWK_9] != 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); + } else if ((this->state >= 15) && (this->swork[AQ_SWK_9] != 0)) { D_i3_801C42A0[2] = 50; - sBossAQlimbTimers[AQ_LIMB_8] = 50; - bossAQ->swork[AQ_SWK_9]--; - AUDIO_PLAY_SFX(NA_SE_EN_WT_DAMAGE_S, bossAQ->sfxSource, 4); - if (bossAQ->swork[AQ_SWK_9] == 0) { + sAqBacoonlimbTimers[AQ_LIMB_8] = 50; + this->swork[AQ_SWK_9]--; + AUDIO_PLAY_SFX(NA_SE_EN_WT_DAMAGE_S, this->sfxSource, 4); + if (this->swork[AQ_SWK_9] == 0) { spD4.x = D_i3_801C4308[76]; spD4.y = D_i3_801C4308[77]; // 76? spD4.z = D_i3_801C4308[78]; Effect_SpawnTimedSfxAtPos(&spD4, NA_SE_EN_WT_DISAPPEAR_L); - bossAQ->swork[AQ_SWK_11] = 250.0f + RAND_FLOAT(50.0f); + this->swork[AQ_SWK_11] = 250.0f + RAND_FLOAT(50.0f); } } } break; case 16: - if (bossAQ->damage == 31) { + if (this->damage == 31) { if (D_i3_801C42A0[23] != 0) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); - } else if (bossAQ->state >= 15) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); + } else if (this->state >= 15) { D_i3_801C42A0[4] = 75; } } break; case 17: - if (bossAQ->damage == 31) { + if (this->damage == 31) { if (D_i3_801C42A0[23] != 0) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); - } else if (bossAQ->state >= 15) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); + } else if (this->state >= 15) { D_i3_801C42A0[5] = 75; } } break; case 18: - if ((bossAQ->damage == 31) && (bossAQ->swork[AQ_SWK_1] != 2) && (bossAQ->swork[AQ_SWK_12] == 0) && - (bossAQ->state == 15) && (bossAQ->health != 0)) { + if ((this->damage == 31) && (this->swork[AQ_SWK_1] != 2) && (this->swork[AQ_SWK_12] == 0) && + (this->state == 15) && (this->health != 0)) { if (D_i3_801C42A0[23] != 0) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } else { for (i7 = 0; i7 < AQ_LIMB_MAX; i7++) { - sBossAQlimbTimers[i7] = 50; + sAqBacoonlimbTimers[i7] = 50; } D_i3_801C42A0[1] = D_i3_801C42A0[2] = D_i3_801C42A0[4] = D_i3_801C42A0[5] = D_i3_801C42A0[6] = D_i3_801C42A0[7] = 50; - bossAQ->swork[AQ_SWK_13] = 40; - bossAQ->swork[AQ_SWK_1] = 2; - AUDIO_PLAY_SFX(NA_SE_EN_SHELL_DAMAGE, bossAQ->sfxSource, 4); - bossAQ->health -= bossAQ->damage; - if ((bossAQ->swork[AQ_SWK_25] == 0) || (bossAQ->swork[AQ_SWK_25] == 2)) { + this->swork[AQ_SWK_13] = 40; + this->swork[AQ_SWK_1] = 2; + AUDIO_PLAY_SFX(NA_SE_EN_SHELL_DAMAGE, this->sfxSource, 4); + this->health -= this->damage; + if ((this->swork[AQ_SWK_25] == 0) || (this->swork[AQ_SWK_25] == 2)) { Radio_PlayMessage(gMsg_ID_7086, RCID_SLIPPY); } - bossAQ->swork[AQ_SWK_25]++; - if (bossAQ->health <= 0) { + this->swork[AQ_SWK_25]++; + if (this->health <= 0) { SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 40); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 40); - Boss_AwardBonus(bossAQ); + Boss_AwardBonus(this); Radio_PlayMessage(gMsg_ID_15252, RCID_SLIPPY); gTeamLowHealthMsgTimer = -1; if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || @@ -3052,50 +3040,50 @@ void Aquas_Boss_Update(Boss* bossAQ) { D_i3_801C4190[3] = 0; D_i3_801C4190[4] = 0; D_i3_801C4190[0] = 0; - bossAQ->health = 0; - bossAQ->swork[AQ_SWK_13] = 40; - bossAQ->swork[AQ_SWK_1] = 2; - bossAQ->timer_056 = 50; - AUDIO_PLAY_SFX(NA_SE_EN_SHELL_DOWN, bossAQ->sfxSource, 4); + this->health = 0; + this->swork[AQ_SWK_13] = 40; + this->swork[AQ_SWK_1] = 2; + this->timer_056 = 50; + AUDIO_PLAY_SFX(NA_SE_EN_SHELL_DOWN, this->sfxSource, 4); gShowBossHealth = false; - bossAQ->state = 16; + this->state = 16; } } } break; case 19: case 20: - if (bossAQ->damage == 31) { + if (this->damage == 31) { if (D_i3_801C42A0[23] != 0) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); - } else if (bossAQ->state >= 15) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); + } else if (this->state >= 15) { D_i3_801C42A0[6] = 50; } } break; default: - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, bossAQ->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); break; } } } - if (bossAQ->state >= 15) { - switch (bossAQ->swork[AQ_SWK_1]) { + if (this->state >= 15) { + switch (this->swork[AQ_SWK_1]) { case 0: - Math_SmoothStepToF(&D_i3_801C4308[12], -45.0f, 1.0f, bossAQ->fwork[AQ_FWK_1], 0.01f); - Math_SmoothStepToF(&D_i3_801C4308[13], 30.0f, 1.0f, bossAQ->fwork[AQ_FWK_1], 0.01f); - if ((bossAQ->timer_050 == 0) && (*(&D_i3_801C4308[12]) == -45.0f)) { - bossAQ->timer_050 = 7; - bossAQ->swork[AQ_SWK_1]++; + Math_SmoothStepToF(&D_i3_801C4308[12], -45.0f, 1.0f, this->fwork[AQ_FWK_1], 0.01f); + Math_SmoothStepToF(&D_i3_801C4308[13], 30.0f, 1.0f, this->fwork[AQ_FWK_1], 0.01f); + if ((this->timer_050 == 0) && (*(&D_i3_801C4308[12]) == -45.0f)) { + this->timer_050 = 7; + this->swork[AQ_SWK_1]++; } break; case 1: - var_fs0 = 2.0f * bossAQ->fwork[AQ_FWK_1]; + var_fs0 = 2.0f * this->fwork[AQ_FWK_1]; Math_SmoothStepToF(&D_i3_801C4308[12], 0.0f, 1.0f, var_fs0, 0.0001f); Math_SmoothStepToF(&D_i3_801C4308[13], 0.0f, 1.0f, var_fs0, 0.0001f); - if (bossAQ->timer_050 == 0) { - bossAQ->swork[AQ_SWK_1] = 0; - bossAQ->timer_050 = 40.0f - ((bossAQ->health - 150) / 5.0f); + if (this->timer_050 == 0) { + this->swork[AQ_SWK_1] = 0; + this->timer_050 = 40.0f - ((this->health - 150) / 5.0f); } break; case 2: @@ -3103,33 +3091,33 @@ void Aquas_Boss_Update(Boss* bossAQ) { Math_SmoothStepToF(&D_i3_801C4308[12], -80.0f, 1.0f, 10.0f, 0.0001f); Math_SmoothStepToF(&D_i3_801C4308[13], 30.0f, 1.0f, 10.0f, 0.0001f); } else { - bossAQ->timer_050 = 50; - bossAQ->swork[AQ_SWK_1] = 0; + this->timer_050 = 50; + this->swork[AQ_SWK_1] = 0; } break; } } - bossAQ->swork[AQ_SWK_14] += D_i3_801C0150[bossAQ->swork[AQ_SWK_18]][0]; - bossAQ->swork[AQ_SWK_15] += D_i3_801C0150[bossAQ->swork[AQ_SWK_18]][1]; - bossAQ->swork[AQ_SWK_16] += D_i3_801C0150[bossAQ->swork[AQ_SWK_18]][2]; - if (bossAQ->swork[AQ_SWK_14] < 0) { - bossAQ->swork[AQ_SWK_14] = 0; + this->swork[AQ_SWK_14] += D_i3_801C0150[this->swork[AQ_SWK_18]][0]; + this->swork[AQ_SWK_15] += D_i3_801C0150[this->swork[AQ_SWK_18]][1]; + this->swork[AQ_SWK_16] += D_i3_801C0150[this->swork[AQ_SWK_18]][2]; + if (this->swork[AQ_SWK_14] < 0) { + this->swork[AQ_SWK_14] = 0; } - if (bossAQ->swork[AQ_SWK_15] < 0) { - bossAQ->swork[AQ_SWK_15] = 0; + if (this->swork[AQ_SWK_15] < 0) { + this->swork[AQ_SWK_15] = 0; } - if (bossAQ->swork[AQ_SWK_16] < 0) { - bossAQ->swork[AQ_SWK_16] = 0; + if (this->swork[AQ_SWK_16] < 0) { + this->swork[AQ_SWK_16] = 0; } - if (bossAQ->swork[AQ_SWK_17] == 0) { - bossAQ->swork[AQ_SWK_17] = 10; - bossAQ->swork[AQ_SWK_18]++; - bossAQ->swork[AQ_SWK_18] &= 3; + if (this->swork[AQ_SWK_17] == 0) { + this->swork[AQ_SWK_17] = 10; + this->swork[AQ_SWK_18]++; + this->swork[AQ_SWK_18] &= 3; } - if ((bossAQ->state >= 4) && (bossAQ->state < 16)) { - sp104 = gPlayer[0].pos.x - bossAQ->obj.pos.x; - sp100 = gPlayer[0].pos.y - bossAQ->obj.pos.y; - spFC = gPlayer[0].trueZpos - bossAQ->obj.pos.z; + if ((this->state >= 4) && (this->state < 16)) { + sp104 = gPlayer[0].pos.x - this->obj.pos.x; + sp100 = gPlayer[0].pos.y - this->obj.pos.y; + spFC = gPlayer[0].trueZpos - this->obj.pos.z; spE8 = Math_RadToDeg(Math_Atan2F(sp104, spFC)); // spEC = sqrtf(SQ(sp104) + SQ(spFC)); spE4 = Math_RadToDeg(-Math_Atan2F(sp100, sqrtf(SQ(sp104) + SQ(spFC)))); @@ -3141,8 +3129,8 @@ void Aquas_Boss_Update(Boss* bossAQ) { } } for (i3 = 0; i3 < 6; i3++) { - if ((D_i3_801C42A0[i3 + 1] == 0) && (bossAQ->state < 17)) { - if ((i3 + 1 != bossAQ->swork[AQ_SWK_6]) && (i3 + 1 != bossAQ->swork[AQ_SWK_7])) { + if ((D_i3_801C42A0[i3 + 1] == 0) && (this->state < 17)) { + if ((i3 + 1 != this->swork[AQ_SWK_6]) && (i3 + 1 != this->swork[AQ_SWK_7])) { i2 = D_i3_801C42A0[i3 + 16]; Math_SmoothStepToF(&D_i3_801C4308[52 + i3], D_i3_801BFC94[4 * i3 + i2].x, D_i3_801BFE18[4 * i3 + i2].x, D_i3_801BFF38[4 * i3 + i2].x, 0.00001f); @@ -3187,20 +3175,20 @@ void Aquas_Boss_Update(Boss* bossAQ) { if ((spEC <= 12.0f) || (spEC >= 330.0f)) { Math_SmoothStepToAngle(&D_i3_801C4308[17], spEC, 1.0f, 5.0f, 0.001f); } - if ((bossAQ->swork[AQ_SWK_2] == 1) && (bossAQ->swork[AQ_SWK_8] != 0) && (bossAQ->health != 0) && - (bossAQ->swork[AQ_SWK_6] == 0)) { + if ((this->swork[AQ_SWK_2] == 1) && (this->swork[AQ_SWK_8] != 0) && (this->health != 0) && + (this->swork[AQ_SWK_6] == 0)) { D_i3_801C42A0[10] = D_i3_801C42A0[16] = 0; - bossAQ->swork[AQ_SWK_6] = 1; + this->swork[AQ_SWK_6] = 1; } - if ((bossAQ->swork[AQ_SWK_3] == 1) && (bossAQ->swork[AQ_SWK_9] != 0) && (bossAQ->health != 0) && - (bossAQ->swork[AQ_SWK_7] == 0)) { + if ((this->swork[AQ_SWK_3] == 1) && (this->swork[AQ_SWK_9] != 0) && (this->health != 0) && + (this->swork[AQ_SWK_7] == 0)) { D_i3_801C42A0[11] = D_i3_801C42A0[17] = 0; - bossAQ->swork[AQ_SWK_7] = 2; + this->swork[AQ_SWK_7] = 2; } - if (bossAQ->health != 0) { + if (this->health != 0) { for (i7 = 0; i7 < 2; i7++) { - if (bossAQ->swork[AQ_SWK_6 + i7] != 0) { - i2 = bossAQ->swork[AQ_SWK_4 + i7]; + if (this->swork[AQ_SWK_6 + i7] != 0) { + i2 = this->swork[AQ_SWK_4 + i7]; Math_SmoothStepToF(&D_i3_801C4308[52 + i7], D_i3_801C00B0[0][i2], D_i3_801C00F0[0][i2], D_i3_801C0120[0][i2], 0.00001f); Math_SmoothStepToF(&D_i3_801C4308[59 + i7], D_i3_801C00B0[1][i2], D_i3_801C00F0[1][i2], @@ -3209,13 +3197,13 @@ void Aquas_Boss_Update(Boss* bossAQ) { D_i3_801C0120[2][i2], 0.00001f); D_i3_801C42A0[i7 + 10]++; if (D_i3_801C42A0[i7 + 10] >= D_i3_801C00E0[i2]) { - bossAQ->swork[AQ_SWK_4 + i7]++; - if (bossAQ->swork[AQ_SWK_4 + i7] == 2) { + this->swork[AQ_SWK_4 + i7]++; + if (this->swork[AQ_SWK_4 + i7] == 2) { i = 4; if (D_i3_801C42A0[23] == 0) { - i = ((160 - bossAQ->health) / 10) + 10; - if (bossAQ->health < 31) { + i = ((160 - this->health) / 10) + 10; + if (this->health < 31) { i += 10; } if (i > 40) { @@ -3232,14 +3220,14 @@ void Aquas_Boss_Update(Boss* bossAQ) { Actor_Initialize(&gActors[i3]); gActors[i3].obj.status = OBJ_INIT; - gActors[i3].obj.id = OBJ_ACTOR_258; + gActors[i3].obj.id = OBJ_ACTOR_AQ_PEARL; gActors[i3].obj.pos.x = D_i3_801C4308[73 + 3 * i7]; gActors[i3].obj.pos.y = D_i3_801C4308[74 + 3 * i7] + 30.0f; gActors[i3].obj.pos.z = D_i3_801C4308[75 + 3 * i7] + 150.0f; if (Rand_ZeroOne() < 0.5f) { var_fs1 = Math_ModF(D_i3_801C4308[i7 + 16] + RAND_FLOAT_CENTERED(60.0f), 360.0f); var_fs0 = Math_ModF(D_i3_801C4308[i7 + 18] + RAND_FLOAT_CENTERED(60.0f), 360.0f); - if (bossAQ->health < 61) { + if (this->health < 61) { if (i7 == 0) { var_fs1 = Math_ModF(D_i3_801C4308[i7 + 16] + RAND_FLOAT_CENTERED(30.0f), 360.0f); @@ -3271,8 +3259,8 @@ void Aquas_Boss_Update(Boss* bossAQ) { } } } - if (bossAQ->swork[AQ_SWK_4 + i7] >= 4) { - D_i3_801C42A0[10 + i7] = bossAQ->swork[AQ_SWK_6 + i7] = bossAQ->swork[AQ_SWK_4 + i7] = 0; + if (this->swork[AQ_SWK_4 + i7] >= 4) { + D_i3_801C42A0[10 + i7] = this->swork[AQ_SWK_6 + i7] = this->swork[AQ_SWK_4 + i7] = 0; } } } @@ -3283,12 +3271,12 @@ void Aquas_Boss_Update(Boss* bossAQ) { if (fabsf(D_i3_801C4308[10]) <= 5.0f) { var_fs0 = 0.0f; } - bossAQ->info.hitbox[i7] = var_fs0; + this->info.hitbox[i7] = var_fs0; } - if (bossAQ->state >= 10) { + if (this->state >= 10) { sp110 = D_i3_801C42A0[9]; i2 = (gGameFrameCount & 0x1F); // % 0x20 if possible - if (sBossAQlimbTimers[AQ_LIMB_9] != 0) { + if (sAqBacoonlimbTimers[AQ_LIMB_9] != 0) { Math_SmoothStepToF(&sp110, 255.0f, 1.0f, 10, 0.0001f); } else if ((i2 & 0x10) == 0) { Math_SmoothStepToF(&sp110, D_i3_801C005C, 1.0f, 10, 0.0001f); @@ -3307,7 +3295,7 @@ void Aquas_Boss_Update(Boss* bossAQ) { D_i3_801C42A0[i3]--; } } - if (bossAQ->swork[AQ_SWK_12] != 0) { + if (this->swork[AQ_SWK_12] != 0) { if (D_i3_801C42A0[3] != 0) { var_fs3 = 1.0f; if (D_i3_801C42A0[22] < 4) { @@ -3322,19 +3310,19 @@ void Aquas_Boss_Update(Boss* bossAQ) { } } else { D_i3_801C42A0[3] = 10; - if (bossAQ->swork[AQ_SWK_13] != 0) { + if (this->swork[AQ_SWK_13] != 0) { Math_SmoothStepToF(&D_i3_801C4308[54], 0.0f, 0.3f, 0.5f, 0.0f); Math_SmoothStepToF(&D_i3_801C4308[61], 0.0f, 0.3f, 0.5f, 0.0f); - bossAQ->info.hitbox[119] = -10000.0f; - if (bossAQ->swork[AQ_SWK_13] == 1) { - AUDIO_PLAY_SFX(NA_SE_EN_EYEFILM_REVIVAL, bossAQ->sfxSource, 4); + this->info.hitbox[119] = -10000.0f; + if (this->swork[AQ_SWK_13] == 1) { + AUDIO_PLAY_SFX(NA_SE_EN_EYEFILM_REVIVAL, this->sfxSource, 4); } - } else if ((bossAQ->health != 0) || (bossAQ->state < 16)) { + } else if ((this->health != 0) || (this->state < 16)) { Math_SmoothStepToF(&D_i3_801C4308[54], 1.0f, 0.3f, 0.5f, 0.0f); Math_SmoothStepToF(&D_i3_801C4308[61], 1.0f, 0.3f, 0.5f, 0.0f); if (D_i3_801C4308[61] >= 0.9f) { - bossAQ->swork[AQ_SWK_12] = 10; - bossAQ->info.hitbox[119] = 1028.0f; + this->swork[AQ_SWK_12] = 10; + this->info.hitbox[119] = 1028.0f; } } else { Math_SmoothStepToF(&D_i3_801C4308[54], 0, 0.1f, 10, 0); @@ -3345,21 +3333,21 @@ void Aquas_Boss_Update(Boss* bossAQ) { } } } - if ((D_i3_801C42A0[7] != 0) || (bossAQ->state >= 16)) { + if ((D_i3_801C42A0[7] != 0) || (this->state >= 16)) { var_fs3 = 0.25f; } else { var_fs3 = 1.0f; } Math_SmoothStepToF(&D_i3_801C4308[58], var_fs3, 0.3f, 1.0f, 0); for (i3 = 0; i3 < 2; i3++) { - if (bossAQ->swork[AQ_SWK_8 + i3] == 0) { - if (bossAQ->swork[AQ_SWK_10 + i3] == 1) { + if (this->swork[AQ_SWK_8 + i3] == 0) { + if (this->swork[AQ_SWK_10 + i3] == 1) { spD4.x = D_i3_801C4308[73 + 3 * i3]; spD4.y = D_i3_801C4308[74 + 3 * i3]; spD4.z = D_i3_801C4308[75 + 3 * i3]; Effect_SpawnTimedSfxAtPos(&spD4, NA_SE_EN_P_GUN_APPEAR); } - if ((fabsf(D_i3_801C4308[10]) <= 3.0f) || (bossAQ->swork[AQ_SWK_10 + i3] == 0)) { + if ((fabsf(D_i3_801C4308[10]) <= 3.0f) || (this->swork[AQ_SWK_10 + i3] == 0)) { Math_SmoothStepToF(&D_i3_801C4308[52 + i3], 1.0f, 0.1f, 0.5f, 0.0f); Math_SmoothStepToF(&D_i3_801C4308[59 + i3], 1.0f, 0.1f, 0.5f, 0.0f); Math_SmoothStepToF(&D_i3_801C4308[66 + i3], 1.0f, 0.1f, 0.5f, 0.0f); @@ -3368,9 +3356,9 @@ void Aquas_Boss_Update(Boss* bossAQ) { spD4.x = D_i3_801C4308[73 + 3 * i3] + RAND_FLOAT(i * 200.0f); spD4.y = D_i3_801C4308[74 + 3 * i3] + RAND_FLOAT(i * 200.0f); spD4.z = D_i3_801C4308[75 + 3 * i3] + RAND_FLOAT(i * 400.0f); - Aquas_801A94EC(&spD4, OBJ_ITEM_SILVER_RING); + Aquas_SpawnItem(&spD4, OBJ_ITEM_SILVER_RING); } - bossAQ->swork[AQ_SWK_8 + i3] = 2; + this->swork[AQ_SWK_8 + i3] = 2; } } else { Math_SmoothStepToF(&D_i3_801C4308[52 + i3], 0, 0.1f, 0.5f, 0.0f); @@ -3380,40 +3368,40 @@ void Aquas_Boss_Update(Boss* bossAQ) { } } } - if (bossAQ->swork[AQ_SWK_2] != 0) { - bossAQ->swork[AQ_SWK_2]--; + if (this->swork[AQ_SWK_2] != 0) { + this->swork[AQ_SWK_2]--; } - if (bossAQ->swork[AQ_SWK_3] != 0) { - bossAQ->swork[AQ_SWK_3]--; + if (this->swork[AQ_SWK_3] != 0) { + this->swork[AQ_SWK_3]--; } - if (bossAQ->swork[AQ_SWK_10] != 0) { - bossAQ->swork[AQ_SWK_10]--; + if (this->swork[AQ_SWK_10] != 0) { + this->swork[AQ_SWK_10]--; } - if (bossAQ->swork[AQ_SWK_11] != 0) { - bossAQ->swork[AQ_SWK_11]--; + if (this->swork[AQ_SWK_11] != 0) { + this->swork[AQ_SWK_11]--; } - if (bossAQ->swork[AQ_SWK_13] != 0) { - bossAQ->swork[AQ_SWK_13]--; + if (this->swork[AQ_SWK_13] != 0) { + this->swork[AQ_SWK_13]--; } - if (bossAQ->swork[AQ_SWK_17] != 0) { - bossAQ->swork[AQ_SWK_17]--; + if (this->swork[AQ_SWK_17] != 0) { + this->swork[AQ_SWK_17]--; } - if (bossAQ->swork[AQ_SWK_19] != 0) { - bossAQ->swork[AQ_SWK_19]--; + if (this->swork[AQ_SWK_19] != 0) { + this->swork[AQ_SWK_19]--; } - if (bossAQ->swork[AQ_SWK_26] == gBossFrameCount) { + if (this->swork[AQ_SWK_26] == gBossFrameCount) { gShowBossHealth = true; } - if (bossAQ->swork[AQ_SWK_26] < gBossFrameCount) { - gBossHealthBar = (bossAQ->health / 150.0f) * 255.0f; + if (this->swork[AQ_SWK_26] < gBossFrameCount) { + gBossHealthBar = (this->health / 150.0f) * 255.0f; } } #else -void Aquas_Boss_Update(Boss* bossAQ); -#pragma GLOBAL_ASM("asm/us/rev1/nonmatchings/overlays/ovl_i3/fox_aq/Aquas_Boss_Update.s") +void Aquas_AqBacoon_Update(AqBacoon* this); +#pragma GLOBAL_ASM("asm/us/rev1/nonmatchings/overlays/ovl_i3/fox_aq/Aquas_AqBacoon_Update.s") #endif -bool Aquas_801B42AC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Aquas_AqBacoon_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { Vec3f sp6C = { 0.0f, 0.0f, 0.0f }; Vec3f sp60; f32 sp5C = 0.0f; @@ -3422,10 +3410,10 @@ bool Aquas_801B42AC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th s32 sp50 = false; Boss* this = thisx; - if (sBossAQlimbTimers[limbIndex] >= 1000) { + if (sAqBacoonlimbTimers[limbIndex] >= 1000) { *dList = NULL; - } else if ((sBossAQlimbTimers[limbIndex] != 0) && (gPlayState != PLAY_PAUSE)) { - sBossAQlimbTimers[limbIndex]--; + } else if ((sAqBacoonlimbTimers[limbIndex] != 0) && (gPlayState != PLAY_PAUSE)) { + sAqBacoonlimbTimers[limbIndex]--; } gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -3433,7 +3421,7 @@ bool Aquas_801B42AC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th if ((D_i3_801C42A0[0] != 255) && (limbIndex != 27)) { RCP_SetupDL(&gMasterDisp, SETUPDL_58); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, D_i3_801C42A0[0]); - } else if ((sBossAQlimbTimers[limbIndex] % 2) == 0) { + } else if ((sAqBacoonlimbTimers[limbIndex] % 2) == 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_57); } else { sp50 = true; @@ -3581,7 +3569,7 @@ bool Aquas_801B42AC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Aquas_801B49DC(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqBacoon_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp6C; Vec3f sp60 = { 0.0f, 0.0f, 0.0f }; Vec3f sp54 = { 340.0f, 600.0f, 1480.0f }; @@ -3675,9 +3663,9 @@ void Aquas_801B49DC(s32 limbIndex, Vec3f* rot, void* thisx) { } } -// OBJ_BOSS_AQ draw -void Aquas_Boss_Draw(Boss* bossAQ) { - Animation_DrawSkeleton(3, D_AQ_602BD60, bossAQ->vwork, Aquas_801B42AC, Aquas_801B49DC, bossAQ, gCalcMatrix); +void Aquas_AqBacoon_Draw(AqBacoon* this) { + Animation_DrawSkeleton(3, D_AQ_602BD60, this->vwork, Aquas_AqBacoon_OverrideLimbDraw, Aquas_AqBacoon_PostLimbDraw, + this, gCalcMatrix); } f32 D_i3_801C01F8[11] = { @@ -3688,7 +3676,7 @@ f32 D_i3_801C0224[11] = { }; Vec3f D_i3_801C0250 = { 0.0f, 0.0f, 0.0f }; -bool Aquas_801B4DDC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Aquas_AqSculpin_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { Actor* this = (Actor*) thisx; if ((this->timer_0C6 % 2) == 0) { @@ -3703,7 +3691,7 @@ bool Aquas_801B4DDC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Aquas_801B4E94(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqSculpin_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = D_i3_801C0250; Actor* this = (Actor*) thisx; @@ -3752,13 +3740,13 @@ void Aquas_801B4E94(s32 limbIndex, Vec3f* rot, void* thisx) { } } -// OBJ_ACTOR_261 draw -void Aquas_Actor261_Draw(Actor* actor) { +void Aquas_AqSculpin_Draw(AqSculpin* this) { Vec3f jointTable[30]; - Matrix_Scale(gCalcMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); - Animation_GetFrameData(&D_AQ_6005954, actor->animFrame, jointTable); - Animation_DrawSkeleton(3, D_AQ_6005A80, jointTable, Aquas_801B4DDC, Aquas_801B4E94, actor, gCalcMatrix); + Matrix_Scale(gCalcMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); + Animation_GetFrameData(&D_AQ_6005954, this->animFrame, jointTable); + Animation_DrawSkeleton(3, D_AQ_6005A80, jointTable, Aquas_AqSculpin_OverrideLimbDraw, Aquas_AqSculpin_PostLimbDraw, + this, gCalcMatrix); } f32 D_i3_801C025C[2] = { 120.0f, 0.0f }; @@ -3766,169 +3754,168 @@ s32 D_i3_801C0264[19] = { 0, 0, 3, 4, 0, 5, 6, 7, 1, 2, 0, 0, 0, 0, 0, 0, 8, 9, 0, }; -// OBJ_ACTOR_261 action -void Aquas_Actor261_Update(Actor* actor) { +void Aquas_AqSculpin_Update(AqSculpin* this) { s32 i; Vec3f sp88; Vec3f sp7C; Vec3f sp70; - Actor* var_v0; + AqSculpin* sculpin; - if ((actor->health == 0) && (actor->state != 0)) { + if ((this->health == 0) && (this->state != 0)) { for (i = 0; i < 5; i++) { - func_effect_80081A8C(actor->obj.pos.x + RAND_FLOAT(i * 15.0f), actor->obj.pos.y + RAND_FLOAT(i * 3.0f), - actor->obj.pos.z + RAND_FLOAT(i * 5.0f), 0.4f + RAND_FLOAT(0.4f), 7); + func_effect_80081A8C(this->obj.pos.x + RAND_FLOAT(i * 15.0f), this->obj.pos.y + RAND_FLOAT(i * 3.0f), + this->obj.pos.z + RAND_FLOAT(i * 5.0f), 0.4f + RAND_FLOAT(0.4f), 7); } - actor->health = 0; - actor->state = 7; - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); + this->health = 0; + this->state = 7; + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); } - switch (actor->state) { + switch (this->state) { case 0: for (i = 0; i < 8; i++) { - actor->vwork[i].x = actor->obj.pos.x; - actor->vwork[i].y = actor->obj.pos.y; - actor->vwork[i].z = actor->obj.pos.z; - actor->vwork[8 + i].x = actor->obj.rot.x; - actor->vwork[8 + i].y = actor->obj.rot.y; - actor->vwork[8 + i].z = actor->obj.rot.z; + this->vwork[i].x = this->obj.pos.x; + this->vwork[i].y = this->obj.pos.y; + this->vwork[i].z = this->obj.pos.z; + this->vwork[8 + i].x = this->obj.rot.x; + this->vwork[8 + i].y = this->obj.rot.y; + this->vwork[8 + i].z = this->obj.rot.z; } - actor->info.bonus = 0; - actor->health = 10; - actor->fwork[4] = 1000.0f + RAND_FLOAT_CENTERED(400.0f); - actor->state++; + this->info.bonus = 0; + this->health = 10; + this->fwork[4] = 1000.0f + RAND_FLOAT_CENTERED(400.0f); + this->state++; break; case 2: - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos, 1.0f, 10.0f, 0); - if (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < actor->fwork[4]) { - Aquas_801A9728(actor, 50.0f, 10.0f, 8); - actor->state = 3; - actor->vel.y = 30.0f; + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos, 1.0f, 10.0f, 0); + if (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < this->fwork[4]) { + Aquas_801A9728(this, 50.0f, 10.0f, 8); + this->state = 3; + this->vel.y = 30.0f; } else if (((gGameFrameCount % 16) == 0)) { - func_effect_8007B8F8(actor->obj.pos.x, gGroundHeight + 30.0f, actor->obj.pos.z, 10.0f); + Effect_Effect364_Spawn(this->obj.pos.x, gGroundHeight + 30.0f, this->obj.pos.z, 10.0f); } break; case 3: - Math_SmoothStepToAngle(&actor->obj.rot.x, 270.0f, 1.0f, 100.0f, 0.0001f); - if (actor->obj.rot.x == 270.0f) { - actor->iwork[1] = RAND_FLOAT(10.0f); - actor->fwork[0] = D_i3_801C01F8[actor->iwork[1]]; - actor->state = 4; + Math_SmoothStepToAngle(&this->obj.rot.x, 270.0f, 1.0f, 100.0f, 0.0001f); + if (this->obj.rot.x == 270.0f) { + this->iwork[1] = RAND_FLOAT(10.0f); + this->fwork[0] = D_i3_801C01F8[this->iwork[1]]; + this->state = 4; } break; case 4: - Math_SmoothStepToF(&actor->vel.y, 0.0f, 1.0f, 4.0f, 0.0001f); - actor->vel.z = gPlayer[0].vel.z; - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos - actor->fwork[4], 0.1f, 100.0f, 0); - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[0], 1.0f, D_i3_801C0224[actor->iwork[1]], 0); - actor->fwork[1] += 10.0f; - actor->vel.x = COS_DEG(actor->fwork[1]) * actor->iwork[1] * 0.1f; - if ((actor->fwork[0] - 1.0f) <= actor->obj.pos.y) { - actor->state = 5; + Math_SmoothStepToF(&this->vel.y, 0.0f, 1.0f, 4.0f, 0.0001f); + this->vel.z = gPlayer[0].vel.z; + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - this->fwork[4], 0.1f, 100.0f, 0); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[0], 1.0f, D_i3_801C0224[this->iwork[1]], 0); + this->fwork[1] += 10.0f; + this->vel.x = COS_DEG(this->fwork[1]) * this->iwork[1] * 0.1f; + if ((this->fwork[0] - 1.0f) <= this->obj.pos.y) { + this->state = 5; } if (((gGameFrameCount % 8) == 0)) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.y + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 1.0f, 1); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 1.0f, 1); } break; case 5: - actor->vel.z = gPlayer[0].vel.z; - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos - 1000.0f, 0.1f, 100.0f, 0); - Math_SmoothStepToF(&actor->vel.x, 0.0f, 1.0f, 2.0f, 0.001f); - Math_SmoothStepToAngle(&actor->obj.rot.x, D_i3_801C025C[actor->iwork[0]], 1.0f, 20.0f, 0); - if (actor->obj.rot.x == D_i3_801C025C[actor->iwork[0]]) { - actor->iwork[0]++; - if (actor->iwork[0] >= 2) { - sp88.x = gPlayer[0].pos.x - actor->obj.pos.x; - sp88.y = gPlayer[0].pos.y - actor->obj.pos.y; - sp88.z = gPlayer[0].trueZpos - actor->obj.pos.z; - actor->fwork[2] = Math_RadToDeg(Math_Atan2F(sp88.x, sp88.z)); - actor->fwork[3] = Math_RadToDeg(-Math_Atan2F(sp88.y, sqrtf(SQ(sp88.x) + SQ(sp88.z)))); - Matrix_RotateY(gCalcMatrix, actor->fwork[2] * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->fwork[3] * M_DTOR, MTXF_APPLY); + this->vel.z = gPlayer[0].vel.z; + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - 1000.0f, 0.1f, 100.0f, 0); + Math_SmoothStepToF(&this->vel.x, 0.0f, 1.0f, 2.0f, 0.001f); + Math_SmoothStepToAngle(&this->obj.rot.x, D_i3_801C025C[this->iwork[0]], 1.0f, 20.0f, 0); + if (this->obj.rot.x == D_i3_801C025C[this->iwork[0]]) { + this->iwork[0]++; + if (this->iwork[0] >= 2) { + sp88.x = gPlayer[0].pos.x - this->obj.pos.x; + sp88.y = gPlayer[0].pos.y - this->obj.pos.y; + sp88.z = gPlayer[0].trueZpos - this->obj.pos.z; + this->fwork[2] = Math_RadToDeg(Math_Atan2F(sp88.x, sp88.z)); + this->fwork[3] = Math_RadToDeg(-Math_Atan2F(sp88.y, sqrtf(SQ(sp88.x) + SQ(sp88.z)))); + Matrix_RotateY(gCalcMatrix, this->fwork[2] * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->fwork[3] * M_DTOR, MTXF_APPLY); sp7C.x = sp7C.y = 0.0f; sp7C.z = 40.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp7C, &sp70); - actor->vel.x = sp70.x; - actor->vel.y = sp70.y; - actor->vel.z = sp70.z; - actor->state = 6; + this->vel.x = sp70.x; + this->vel.y = sp70.y; + this->vel.z = sp70.z; + this->state = 6; } } break; case 6: - Math_SmoothStepToAngle(&actor->obj.rot.x, actor->fwork[3], 1.0f, 5.0f, 0); - Math_SmoothStepToAngle(&actor->obj.rot.y, actor->fwork[2], 1.0f, 5.0f, 0); + Math_SmoothStepToAngle(&this->obj.rot.x, this->fwork[3], 1.0f, 5.0f, 0); + Math_SmoothStepToAngle(&this->obj.rot.y, this->fwork[2], 1.0f, 5.0f, 0); if (((gGameFrameCount % 4) == 0)) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.y + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 1.0f, 1); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 1.0f, 1); } break; case 7: for (i = 0; i < 8; i++) { - Aquas_SpawnDebris(&actor->vwork[i], &actor->vwork[8 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), - RAND_FLOAT_CENTERED(10.0f), 49, actor->scale, 200, i); - func_effect_8007BC7C(actor->vwork[i].x, actor->vwork[i].y, actor->vwork[i].z + 100.0f, 6.0f); + Aquas_SpawnDebris(&this->vwork[i], &this->vwork[8 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), + RAND_FLOAT_CENTERED(10.0f), 49, this->scale, 200, i); + Effect_Effect362_Spawn(this->vwork[i].x, this->vwork[i].y, this->vwork[i].z + 100.0f, 6.0f); } - actor->itemDrop = DROP_NONE; - Actor_Despawn(actor); + this->itemDrop = DROP_NONE; + Actor_Despawn(this); func_effect_800815DC(); - Object_Kill(&actor->obj, actor->sfxSource); - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 6.0f); + Object_Kill(&this->obj, this->sfxSource); + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 6.0f); break; } - if (actor->state >= 2) { - if (actor->state < 3) { - actor->animFrame++; + if (this->state >= 2) { + if (this->state < 3) { + this->animFrame++; } else { - actor->animFrame += 3; + this->animFrame += 3; } - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6005954)) { - actor->animFrame = 0; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_6005954)) { + this->animFrame = 0; } } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if (actor->health != 0) { - if (actor->damage == 31) { - actor->info.bonus = 1; - actor->health -= actor->damage; - if (actor->health <= 0) { - actor->health = 0; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->health != 0) { + if (this->damage == 31) { + this->info.bonus = 1; + this->health -= this->damage; + if (this->health <= 0) { + this->health = 0; } - } else if (actor->damage == 30) { - for (i = 0, var_v0 = gActors; i < ARRAY_COUNT(gActors); i++, var_v0++) { - if ((var_v0->obj.status == OBJ_ACTIVE) && (var_v0->obj.id == OBJ_ACTOR_261) && - (var_v0->state == 1) && (i != actor->index) && - (fabsf(var_v0->obj.pos.x - actor->obj.pos.x) <= 300.0f) && - (fabsf(var_v0->obj.pos.z - actor->obj.pos.z) <= 300.0f)) { - var_v0->state = 2; + } else if (this->damage == 30) { + for (i = 0, sculpin = &gActors[0]; i < ARRAY_COUNT(gActors); i++, sculpin++) { + if ((sculpin->obj.status == OBJ_ACTIVE) && (sculpin->obj.id == OBJ_ACTOR_AQ_SCULPIN) && + (sculpin->state == 1) && (i != this->index) && + (fabsf(sculpin->obj.pos.x - this->obj.pos.x) <= 300.0f) && + (fabsf(sculpin->obj.pos.z - this->obj.pos.z) <= 300.0f)) { + sculpin->state = 2; } } - } else if ((actor->state >= 3) && (actor->state < 5)) { - actor->info.bonus = 1; - actor->timer_0C6 = 15; - actor->health -= actor->damage; - if (actor->health <= 0) { - actor->health = 0; + } else if ((this->state >= 3) && (this->state < 5)) { + this->info.bonus = 1; + this->timer_0C6 = 15; + this->health -= this->damage; + if (this->health <= 0) { + this->health = 0; } } } } } -bool Aquas_801B5C18(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Aquas_AqAnglerFish_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { f32 sp6C = 1.0f; f32 sp68 = 1.0f; f32 sp64 = 1.0f; @@ -3980,7 +3967,7 @@ bool Aquas_801B5C18(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Aquas_801B5F68(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqAnglerFish_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp3C = { 0.0f, 0.0f, 0.0f }; Vec3f sp30; Vec3f sp24; @@ -4049,37 +4036,36 @@ void Aquas_801B5F68(s32 limbIndex, Vec3f* rot, void* thisx) { f32 D_i3_801C02C8[2] = { 255.0f, 68.0f }; s32 D_i3_801C02D0[2] = { 70, 100 }; -// OBJ_ACTOR_259 draw -void Aquas_Actor259_Draw(Actor* actor) { +void Aquas_AqAnglerFish_Draw(AqAnglerFish* this) { Vec3f sp40[30]; Matrix_Push(&gCalcMatrix); Matrix_Push(&gGfxMatrix); - Matrix_Scale(gCalcMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); - Animation_GetFrameData(&D_AQ_6002628, actor->animFrame, sp40); - Animation_DrawSkeleton(3, D_AQ_6002874, sp40, Aquas_801B5C18, Aquas_801B5F68, actor, gCalcMatrix); + Matrix_Scale(gCalcMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); + Animation_GetFrameData(&D_AQ_6002628, this->animFrame, sp40); + Animation_DrawSkeleton(3, D_AQ_6002874, sp40, Aquas_AqAnglerFish_OverrideLimbDraw, Aquas_AqAnglerFish_PostLimbDraw, + this, gCalcMatrix); Matrix_Pop(&gGfxMatrix); Matrix_Pop(&gCalcMatrix); Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, actor->fwork[8], actor->fwork[9], actor->fwork[10], MTXF_APPLY); - Matrix_Scale(gGfxMatrix, actor->fwork[5], actor->fwork[6], actor->fwork[7], MTXF_APPLY); + Matrix_Translate(gGfxMatrix, this->fwork[8], this->fwork[9], this->fwork[10], MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->fwork[5], this->fwork[6], this->fwork[7], MTXF_APPLY); RCP_SetupDL(&gMasterDisp, SETUPDL_49); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) actor->iwork[12]); - gDPSetEnvColor(gMasterDisp++, 127, 127, 0, (s32) actor->iwork[12]); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) this->iwork[12]); + gDPSetEnvColor(gMasterDisp++, 127, 127, 0, (s32) this->iwork[12]); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); Matrix_Pop(&gGfxMatrix); } -void Aquas_801B6344(Actor* actor) { - actor->health = 200; - actor->iwork[13] = actor->fwork[4] = 255.0f; - actor->fwork[12] = actor->obj.rot.y; - actor->iwork[14] = actor->iwork[16] = actor->obj.rot.z; +void Aquas_AqAnglerFish_Init(AqAnglerFish* this) { + this->health = 200; + this->iwork[13] = this->fwork[4] = 255.0f; + this->fwork[12] = this->obj.rot.y; + this->iwork[14] = this->iwork[16] = this->obj.rot.z; } -// OBJ_ACTOR_259 action -void Aquas_Actor259_Update(Actor* actor) { +void Aquas_AqAnglerFish_Update(AqAnglerFish* this) { Actor* var_v0; s32 i; f32 spB4; @@ -4094,167 +4080,167 @@ void Aquas_Actor259_Update(Actor* actor) { Vec3f sp80; f32 var_rxd; - if (actor->health == 0) { + if (this->health == 0) { for (i = 0; i < 9; i++) { - Aquas_SpawnDebris(&actor->vwork[i], &actor->vwork[9 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), - RAND_FLOAT_CENTERED(10.0f), 48, actor->scale, 200, i); - func_effect_8007BC7C(actor->vwork[i].x, actor->vwork[i].y, actor->vwork[i].z, 10.0f); + Aquas_SpawnDebris(&this->vwork[i], &this->vwork[9 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), + RAND_FLOAT_CENTERED(10.0f), 48, this->scale, 200, i); + Effect_Effect362_Spawn(this->vwork[i].x, this->vwork[i].y, this->vwork[i].z, 10.0f); } func_effect_800815DC(); - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 150.0f, 10.0f); - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 150.0f, 10.0f); - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 150.0f, 10.0f); + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 150.0f, 10.0f); + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 150.0f, 10.0f); + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 150.0f, 10.0f); for (i = 0; i < 5; i++) { - func_effect_80081A8C(actor->obj.pos.x + RAND_FLOAT(i * 15.0f), actor->obj.pos.y + RAND_FLOAT(i * 3.0f), - actor->obj.pos.z + RAND_FLOAT(i * 5.0f), 1.0f + RAND_FLOAT(1.0f), 7); + func_effect_80081A8C(this->obj.pos.x + RAND_FLOAT(i * 15.0f), this->obj.pos.y + RAND_FLOAT(i * 3.0f), + this->obj.pos.z + RAND_FLOAT(i * 5.0f), 1.0f + RAND_FLOAT(1.0f), 7); } - actor->itemDrop = DROP_SILVER_RING_50p; - if (actor->iwork[16] != 0) { - actor->itemDrop = DROP_GOLD_RING_1; + this->itemDrop = DROP_SILVER_RING_50p; + if (this->iwork[16] != 0) { + this->itemDrop = DROP_GOLD_RING_1; } - Actor_Despawn(actor); - Object_Kill(&actor->obj, actor->sfxSource); - AUDIO_PLAY_SFX(NA_SE_OB_MINI_BOMB, actor->sfxSource, 4); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); + Actor_Despawn(this); + Object_Kill(&this->obj, this->sfxSource); + AUDIO_PLAY_SFX(NA_SE_OB_MINI_BOMB, this->sfxSource, 4); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); } - actor->fwork[5] = (actor->obj.pos.y * 0.01f) + 2.5f; - actor->fwork[6] = (actor->obj.pos.y * 0.003f) + 0.8f; - actor->fwork[7] = (actor->obj.pos.y * 0.001f) + 0.8f; + this->fwork[5] = (this->obj.pos.y * 0.01f) + 2.5f; + this->fwork[6] = (this->obj.pos.y * 0.003f) + 0.8f; + this->fwork[7] = (this->obj.pos.y * 0.001f) + 0.8f; - actor->iwork[12] = (actor->obj.pos.y * -0.24f) + 150.0f; - if (actor->iwork[12] < 30.0f) { - actor->iwork[12] = 30; + this->iwork[12] = (this->obj.pos.y * -0.24f) + 150.0f; + if (this->iwork[12] < 30.0f) { + this->iwork[12] = 30; } - actor->fwork[1] = (actor->obj.pos.y * 0.0032f) + 1.0f; - actor->fwork[2] = (actor->obj.pos.y * 0.0032f) + 1.5f; - actor->fwork[3] = (actor->obj.pos.y * 0.0032f) + 2.0f; + this->fwork[1] = (this->obj.pos.y * 0.0032f) + 1.0f; + this->fwork[2] = (this->obj.pos.y * 0.0032f) + 1.5f; + this->fwork[3] = (this->obj.pos.y * 0.0032f) + 2.0f; - actor->fwork[11] = actor->obj.pos.y + 300.0f; - if (actor->fwork[11] > 1200.0f) { - actor->fwork[11] = 1200.0f; + this->fwork[11] = this->obj.pos.y + 300.0f; + if (this->fwork[11] > 1200.0f) { + this->fwork[11] = 1200.0f; } - actor->animFrame++; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6002628)) { - actor->animFrame = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_6002628)) { + this->animFrame = 0; } - switch (actor->state) { + switch (this->state) { case 0: for (i = 0; i < 9; i++) { - actor->vwork[0 + i].x = actor->obj.pos.x; - actor->vwork[0 + i].y = actor->obj.pos.y; - actor->vwork[0 + i].z = actor->obj.pos.z; - actor->vwork[9 + i].x = actor->obj.rot.x; - actor->vwork[9 + i].y = actor->obj.rot.y; - actor->vwork[9 + i].z = actor->obj.rot.z; + this->vwork[0 + i].x = this->obj.pos.x; + this->vwork[0 + i].y = this->obj.pos.y; + this->vwork[0 + i].z = this->obj.pos.z; + this->vwork[9 + i].x = this->obj.rot.x; + this->vwork[9 + i].y = this->obj.rot.y; + this->vwork[9 + i].z = this->obj.rot.z; } - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); sp8C.x = sp8C.y = 0.0f; sp8C.z = -1400.0f; - if (actor->iwork[14] != 0) { + if (this->iwork[14] != 0) { sp8C.z = -5000.0f; } Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp8C, &sp80); - actor->fwork[15] = actor->obj.pos.x + sp80.x; - actor->fwork[16] = actor->obj.pos.z + sp80.z; + this->fwork[15] = this->obj.pos.x + sp80.x; + this->fwork[16] = this->obj.pos.z + sp80.z; - actor->state = 1; + this->state = 1; break; case 1: - if (actor->timer_0BC == 1) { - actor->iwork[15] = 1; + if (this->timer_0BC == 1) { + this->iwork[15] = 1; } - if (actor->iwork[15] != 0) { - if ((gPlayer[0].trueZpos + 300.0f) < actor->obj.pos.z) { - Object_Kill(&actor->obj, actor->sfxSource); + if (this->iwork[15] != 0) { + if ((gPlayer[0].trueZpos + 300.0f) < this->obj.pos.z) { + Object_Kill(&this->obj, this->sfxSource); } } else { if (((gGameFrameCount % 2) == 0)) { - for (i = 0, var_v0 = gActors; i < ARRAY_COUNT(gActors); i++, var_v0++) { - if ((var_v0->obj.status == OBJ_ACTIVE) && (var_v0->obj.id == OBJ_ACTOR_261) && + for (i = 0, var_v0 = &gActors[0]; i < ARRAY_COUNT(gActors); i++, var_v0++) { + if ((var_v0->obj.status == OBJ_ACTIVE) && (var_v0->obj.id == OBJ_ACTOR_AQ_SCULPIN) && (var_v0->state == 1) && - (fabsf(var_v0->obj.pos.x - actor->fwork[8]) <= (actor->fwork[5] * 48.0f)) && - (var_v0->obj.pos.y <= (actor->obj.pos.y + 50.0f)) && - (fabsf(var_v0->obj.pos.z - actor->fwork[10]) <= (actor->fwork[7] * 125.0f))) { + (fabsf(var_v0->obj.pos.x - this->fwork[8]) <= (this->fwork[5] * 48.0f)) && + (var_v0->obj.pos.y <= (this->obj.pos.y + 50.0f)) && + (fabsf(var_v0->obj.pos.z - this->fwork[10]) <= (this->fwork[7] * 125.0f))) { var_v0->state = 2; } } } - sp98 = sqrtf(SQ(actor->obj.pos.z - actor->fwork[16]) + SQ(actor->obj.pos.x - actor->fwork[15])); - actor->fwork[13] -= 20.0f; - actor->fwork[14] += 5.0f; + sp98 = sqrtf(SQ(this->obj.pos.z - this->fwork[16]) + SQ(this->obj.pos.x - this->fwork[15])); + this->fwork[13] -= 20.0f; + this->fwork[14] += 5.0f; - spB4 = SIN_DEG(actor->fwork[13]) * sp98 * 0.1f; - temp_fsc = COS_DEG(actor->fwork[14]) * sp98 * 0.8f; - temp_fscc = COS_DEG(actor->obj.rot.y) * temp_fsc; - temp2 = -SIN_DEG(actor->obj.rot.y) * temp_fsc; + spB4 = SIN_DEG(this->fwork[13]) * sp98 * 0.1f; + temp_fsc = COS_DEG(this->fwork[14]) * sp98 * 0.8f; + temp_fscc = COS_DEG(this->obj.rot.y) * temp_fsc; + temp2 = -SIN_DEG(this->obj.rot.y) * temp_fsc; - temp_fscc = Math_Atan2F(actor->obj.pos.x - actor->fwork[15] + temp_fscc, - actor->obj.pos.z - actor->fwork[16] + temp2); - temp_fsc = -Math_Atan2F(actor->obj.pos.y - spB4, sp98); + temp_fscc = Math_Atan2F(this->obj.pos.x - this->fwork[15] + temp_fscc, + this->obj.pos.z - this->fwork[16] + temp2); + temp_fsc = -Math_Atan2F(this->obj.pos.y - spB4, sp98); temp_fscc = Math_RadToDeg(temp_fscc); - Math_SmoothStepToAngle(&actor->obj.rot.y, temp_fscc, 0.1f, 100.0f, 0.001f); + Math_SmoothStepToAngle(&this->obj.rot.y, temp_fscc, 0.1f, 100.0f, 0.001f); temp_fscc = Math_RadToDeg(temp_fsc); - if (actor->obj.pos.y >= 1000.0f) { + if (this->obj.pos.y >= 1000.0f) { temp_fscc = 0.0f; } - Math_SmoothStepToAngle(&actor->obj.rot.x, temp_fscc, 0.1f, 100.0f, 0.001f); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); + Math_SmoothStepToAngle(&this->obj.rot.x, temp_fscc, 0.1f, 100.0f, 0.001f); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); sp8C.x = sp8C.y = 0.0f; sp8C.z = 10.0f; - if (actor->iwork[14] != 0) { + if (this->iwork[14] != 0) { sp8C.z = 30.0f; } Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp8C, &sp80); - actor->vel.x = sp80.x; - actor->vel.y = sp80.y; - actor->vel.z = sp80.z; + this->vel.x = sp80.x; + this->vel.y = sp80.y; + this->vel.z = sp80.z; - if (actor->iwork[15] != 0) { - actor->vel.x = actor->vel.y = actor->vel.z = 0.0f; + if (this->iwork[15] != 0) { + this->vel.x = this->vel.y = this->vel.z = 0.0f; } - if ((actor->iwork[14] != 0) && (actor->obj.pos.z < (gPlayer[0].trueZpos - 2000.0f))) { - actor->iwork[14] = 0; - actor->timer_0BC = 500; + if ((this->iwork[14] != 0) && (this->obj.pos.z < (gPlayer[0].trueZpos - 2000.0f))) { + this->iwork[14] = 0; + this->timer_0BC = 500; } } break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if ((actor->health != 0) && (actor->dmgPart == 0)) { - actor->health -= actor->damage; - actor->timer_0C6 = 30; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if ((this->health != 0) && (this->dmgPart == 0)) { + this->health -= this->damage; + this->timer_0C6 = 30; - AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, this->sfxSource, 4); - if (actor->health <= 0) { - actor->health = 0; - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 200.0f, 3); + if (this->health <= 0) { + this->health = 0; + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 200.0f, 3); gHitCount += 4; D_ctx_80177850 = 15; } @@ -4262,30 +4248,29 @@ void Aquas_Actor259_Update(Actor* actor) { } } -void Aquas_801B6E54(Actor* actor) { +void Aquas_AqSpindlyFish_Init(AqSpindlyFish* this) { s32 i; for (i = 0; i < 15; i++) { - actor->vwork[0 + i].x = actor->obj.pos.x; - actor->vwork[0 + i].y = actor->obj.pos.y; - actor->vwork[0 + i].z = actor->obj.pos.z; + this->vwork[0 + i].x = this->obj.pos.x; + this->vwork[0 + i].y = this->obj.pos.y; + this->vwork[0 + i].z = this->obj.pos.z; - actor->vwork[15 + i].x = actor->obj.rot.x; - actor->vwork[15 + i].y = actor->obj.rot.y; - actor->vwork[15 + i].z = actor->obj.rot.z; + this->vwork[15 + i].x = this->obj.rot.x; + this->vwork[15 + i].y = this->obj.rot.y; + this->vwork[15 + i].z = this->obj.rot.z; } - actor->health = 0; + this->health = 0; - if (actor->obj.rot.z != 0) { - actor->obj.rot.z = 0.0f; - actor->state = 1; + if (this->obj.rot.z != 0) { + this->obj.rot.z = 0.0f; + this->state = 1; } - actor->fwork[4] = actor->obj.pos.z; + this->fwork[4] = this->obj.pos.z; } -// OBJ_ACTOR_262 action -void Aquas_Actor262_Update(Actor* actor) { +void Aquas_AqSpindlyFish_Update(AqSpindlyFish* this) { s32 i; f32 temp_dx; f32 temp_dy; @@ -4295,117 +4280,117 @@ void Aquas_Actor262_Update(Actor* actor) { Vec3f sp9C; Vec3f sp90; - if (actor->health == -100) { - actor->itemDrop = DROP_SILVER_RING_50p; - Actor_Despawn(actor); + if (this->health == -100) { + this->itemDrop = DROP_SILVER_RING_50p; + Actor_Despawn(this); for (i = 0; i < 15; i++) { - Aquas_SpawnDebris(&actor->vwork[i], &actor->vwork[15 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), - RAND_FLOAT_CENTERED(10.0f), 51, actor->scale, 200, i); + Aquas_SpawnDebris(&this->vwork[i], &this->vwork[15 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), + RAND_FLOAT_CENTERED(10.0f), 51, this->scale, 200, i); func_effect_800815DC(); - func_effect_8007D0E0(actor->vwork[i].x, actor->vwork[i].y, actor->vwork[i].z + 100.0f, 6.0f); + func_effect_8007D0E0(this->vwork[i].x, this->vwork[i].y, this->vwork[i].z + 100.0f, 6.0f); } - Object_Kill(&actor->obj, actor->sfxSource); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); + Object_Kill(&this->obj, this->sfxSource); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); } - switch (actor->state) { + switch (this->state) { case 0: - if (actor->timer_0BC == 0) { - actor->timer_0BC = 200; + if (this->timer_0BC == 0) { + this->timer_0BC = 200; - actor->fwork[1] = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(800.0f); - actor->fwork[2] = gPlayer[0].pos.y + 50.0f + RAND_FLOAT(100.0f); - actor->fwork[3] = gPlayer[0].trueZpos - 1500.0f; + this->fwork[1] = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(800.0f); + this->fwork[2] = gPlayer[0].pos.y + 50.0f + RAND_FLOAT(100.0f); + this->fwork[3] = gPlayer[0].trueZpos - 1500.0f; - if (actor->fwork[1] > 700.0f) { - actor->fwork[1] = 700.0f; + if (this->fwork[1] > 700.0f) { + this->fwork[1] = 700.0f; } - if (actor->fwork[1] < -700.0f) { - actor->fwork[1] = -700.0f; + if (this->fwork[1] < -700.0f) { + this->fwork[1] = -700.0f; } if (Rand_ZeroOne() < 0.2f) { - actor->fwork[3] = gPlayer[0].trueZpos - 800.0f; - actor->fwork[1] = gPlayer[0].pos.x; - actor->fwork[2] = gPlayer[0].pos.y + 50.0f; + this->fwork[3] = gPlayer[0].trueZpos - 800.0f; + this->fwork[1] = gPlayer[0].pos.x; + this->fwork[2] = gPlayer[0].pos.y + 50.0f; } - if (fabsf(actor->fwork[4] - actor->obj.pos.z) >= 20000.0f) { - actor->fwork[3] = -10000.0f; + if (fabsf(this->fwork[4] - this->obj.pos.z) >= 20000.0f) { + this->fwork[3] = -10000.0f; } } - actor->fwork[3] += gPlayer[0].vel.z; + this->fwork[3] += gPlayer[0].vel.z; - temp_dx = actor->fwork[1] - actor->obj.pos.x; - temp_dy = actor->fwork[2] - actor->obj.pos.y; - temp_dz = actor->fwork[3] - actor->obj.pos.z; + temp_dx = this->fwork[1] - this->obj.pos.x; + temp_dy = this->fwork[2] - this->obj.pos.y; + temp_dz = this->fwork[3] - this->obj.pos.z; spA8 = Math_RadToDeg(Math_Atan2F(temp_dx, temp_dz)); temp_dz = Math_RadToDeg(-Math_Atan2F(temp_dy, sqrtf(SQ(temp_dx) + SQ(temp_dz)))); - temp_dy = Math_SmoothStepToAngle(&actor->obj.rot.y, spA8, 0.1f, 1.0f, 0); - Math_SmoothStepToAngle(&actor->obj.rot.x, temp_dz, 0.1f, 1.0f, 0); + temp_dy = Math_SmoothStepToAngle(&this->obj.rot.y, spA8, 0.1f, 1.0f, 0); + Math_SmoothStepToAngle(&this->obj.rot.x, temp_dz, 0.1f, 1.0f, 0); temp_dz = 340.0f; if (temp_dy < 0.0f) { temp_dz = 20.0f; } - Math_SmoothStepToAngle(&actor->obj.rot.z, temp_dz, 0.1f, 1.0f, 0.f); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); + Math_SmoothStepToAngle(&this->obj.rot.z, temp_dz, 0.1f, 1.0f, 0.f); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); sp9C.x = sp9C.y = 0.0f; sp9C.z = 10.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp9C, &sp90); - actor->vel.x = sp90.x; - actor->vel.y = sp90.y; - actor->vel.z = sp90.z - 20.0f; + this->vel.x = sp90.x; + this->vel.y = sp90.y; + this->vel.z = sp90.z - 20.0f; break; case 1: - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); sp9C.y = sp9C.x = 0.0f; sp9C.z = 19.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp9C, &sp90); - actor->vel.x = sp90.x; - actor->vel.y = sp90.y; - actor->vel.z = sp90.z; + this->vel.x = sp90.x; + this->vel.y = sp90.y; + this->vel.z = sp90.z; break; } - if (((gGameFrameCount % 4) == 0)) { + if ((gGameFrameCount % 4) == 0) { for (i = 0; i < 3; i++) { - func_effect_80081A8C(actor->obj.pos.x + RAND_FLOAT_CENTERED(70.0f), - actor->obj.pos.y + RAND_FLOAT_CENTERED(70.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(70.0f), 1.0f, 1); + func_effect_80081A8C(this->obj.pos.x + RAND_FLOAT_CENTERED(70.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(70.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(70.0f), 1.0f, 1); } } - actor->animFrame++; - if (Animation_GetFrameCount(&D_AQ_60260EC) < actor->animFrame) { - actor->animFrame = 0; + this->animFrame++; + if (Animation_GetFrameCount(&D_AQ_60260EC) < this->animFrame) { + this->animFrame = 0; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if (actor->health > -100) { - actor->timer_0C6 = 15; - actor->health -= actor->damage; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->health > -100) { + this->timer_0C6 = 15; + this->health -= this->damage; for (i = 0; i < 10; i++) { - func_effect_80081A8C(actor->hitPos.x + RAND_FLOAT_CENTERED(70.0f), - actor->hitPos.y + RAND_FLOAT_CENTERED(70.0f), - actor->hitPos.z + RAND_FLOAT_CENTERED(70.0f), 1.0f, 1); + func_effect_80081A8C(this->hitPos.x + RAND_FLOAT_CENTERED(70.0f), + this->hitPos.y + RAND_FLOAT_CENTERED(70.0f), + this->hitPos.z + RAND_FLOAT_CENTERED(70.0f), 1.0f, 1); } - AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, actor->sfxSource, 4); - if (actor->health <= -100) { - actor->health = -100; - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 200.0f, 3); + AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, this->sfxSource, 4); + if (this->health <= -100) { + this->health = -100; + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 200.0f, 3); gHitCount += 4; D_ctx_80177850 = 15; } @@ -4413,7 +4398,7 @@ void Aquas_Actor262_Update(Actor* actor) { } } -bool Aquas_801B76EC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Aquas_AqSpindlyFish_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); if ((limbIndex >= 4) && (limbIndex < 14)) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -4421,7 +4406,7 @@ bool Aquas_801B76EC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Aquas_801B7754(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqSpindlyFish_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; Actor* this = (Actor*) thisx; @@ -4505,46 +4490,45 @@ void Aquas_801B7754(s32 limbIndex, Vec3f* rot, void* thisx) { } } -// OBJ_ACTOR_262 draw -void Aquas_Actor262_Draw(Actor* actor) { +void Aquas_AqSpindlyFish_Draw(Actor* this) { Vec3f sp30[30]; RCP_SetupDL(&gMasterDisp, SETUPDL_57); - if ((actor->timer_0C6 % 2) != 0) { + if ((this->timer_0C6 % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_61); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - Animation_GetFrameData(&D_AQ_60260EC, actor->animFrame, sp30); - Animation_DrawSkeleton(3, D_AQ_60263F8, sp30, Aquas_801B76EC, Aquas_801B7754, actor, gCalcMatrix); + Animation_GetFrameData(&D_AQ_60260EC, this->animFrame, sp30); + Animation_DrawSkeleton(3, D_AQ_60263F8, sp30, Aquas_AqSpindlyFish_OverrideLimbDraw, + Aquas_AqSpindlyFish_PostLimbDraw, this, gCalcMatrix); } -void Aquas_801B7AF0(Actor* actor) { +void Aquas_AqGaroa_Init(AqGaroa* this) { s32 i; - actor->fwork[4] = 10.0f; - actor->fwork[3] = -1000.0f; - actor->fwork[2] = 30.0f; + this->fwork[4] = 10.0f; + this->fwork[3] = -1000.0f; + this->fwork[2] = 30.0f; - actor->obj.pos.y = 150.0f; + this->obj.pos.y = 150.0f; - actor->fwork[5] = 20.0f; - actor->fwork[6] = 20.0f; + this->fwork[5] = 20.0f; + this->fwork[6] = 20.0f; - actor->health = 60; + this->health = 60; for (i = 0; i < 10; i++) { - actor->vwork[0 + i].x = actor->obj.pos.x; - actor->vwork[0 + i].y = actor->obj.pos.y; - actor->vwork[0 + i].z = actor->obj.pos.z; + this->vwork[0 + i].x = this->obj.pos.x; + this->vwork[0 + i].y = this->obj.pos.y; + this->vwork[0 + i].z = this->obj.pos.z; - actor->vwork[10 + i].x = actor->obj.rot.x; - actor->vwork[10 + i].y = actor->obj.rot.y; - actor->vwork[10 + i].z = actor->obj.rot.z; + this->vwork[10 + i].x = this->obj.rot.x; + this->vwork[10 + i].y = this->obj.rot.y; + this->vwork[10 + i].z = this->obj.rot.z; } } -// OBJ_ACTOR_260 action -void Aquas_Actor260_Update(Actor* actor) { +void Aquas_AqGaroa_Update(AqGaroa* this) { s32 i; s32 j; f32 spAC; @@ -4556,145 +4540,145 @@ void Aquas_Actor260_Update(Actor* actor) { Vec3f sp84; Effect* effect; - if (actor->health == 0) { + if (this->health == 0) { for (i = 0; i < 10; i++) { - func_effect_80081A8C(actor->obj.pos.x + RAND_FLOAT(i * 15.0f), actor->obj.pos.y + RAND_FLOAT(i * 3.0f), - actor->obj.pos.z + RAND_FLOAT(i * 5.0f), 1.0f + RAND_FLOAT(0.5f), 7); + func_effect_80081A8C(this->obj.pos.x + RAND_FLOAT(i * 15.0f), this->obj.pos.y + RAND_FLOAT(i * 3.0f), + this->obj.pos.z + RAND_FLOAT(i * 5.0f), 1.0f + RAND_FLOAT(0.5f), 7); } for (i = 0; i < 10; i++) { - Aquas_SpawnDebris(&actor->vwork[0 + i], &actor->vwork[10 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), - RAND_FLOAT_CENTERED(10.0f), 52, actor->scale, 200, i); - func_effect_8007BC7C(actor->vwork[0 + i].x, actor->vwork[0 + i].y, actor->vwork[0 + i].z + 100.0f, 6.0f); + Aquas_SpawnDebris(&this->vwork[0 + i], &this->vwork[10 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), + RAND_FLOAT_CENTERED(10.0f), 52, this->scale, 200, i); + Effect_Effect362_Spawn(this->vwork[0 + i].x, this->vwork[0 + i].y, this->vwork[0 + i].z + 100.0f, 6.0f); } for (i = 0; i < 2; i++) { - if (actor->iwork[2 + i] != 0) { - j = actor->iwork[2 + i] - 1; + if (this->iwork[2 + i] != 0) { + j = this->iwork[2 + i] - 1; effect = &gEffects[j]; if ((effect->obj.id == OBJ_EFFECT_395) && (effect->state == 2) && (effect->timer_50 != 0)) { effect->unk_44 = 3; - actor->iwork[2 + i] = 0; + this->iwork[2 + i] = 0; } } } func_effect_800815DC(); - func_effect_8007D0E0(actor->vwork[7].x, actor->vwork[7].y, actor->vwork[7].z, 5.0f); - actor->itemDrop = DROP_SILVER_RING_25p; - Actor_Despawn(actor); - Object_Kill(&actor->obj, actor->sfxSource); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); + func_effect_8007D0E0(this->vwork[7].x, this->vwork[7].y, this->vwork[7].z, 5.0f); + this->itemDrop = DROP_SILVER_RING_25p; + Actor_Despawn(this); + Object_Kill(&this->obj, this->sfxSource); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); } - if (actor->state != 6) { - spAC = gPlayer[0].pos.x - actor->obj.pos.x; - Math_SmoothStepToAngle(&actor->obj.rot.y, - Math_RadToDeg(Math_Atan2F(spAC, gPlayer[0].trueZpos - actor->obj.pos.z)), 1.0f, 5.0f, + if (this->state != 6) { + spAC = gPlayer[0].pos.x - this->obj.pos.x; + Math_SmoothStepToAngle(&this->obj.rot.y, + Math_RadToDeg(Math_Atan2F(spAC, gPlayer[0].trueZpos - this->obj.pos.z)), 1.0f, 5.0f, 0.001f); } - if (((actor->state >= 2) && (actor->state < 4)) || (actor->state >= 5)) { - Math_SmoothStepToF(&actor->fwork[4], 10.0f, 0.2f, 20.0f, 0); - Math_SmoothStepToF(&actor->fwork[5], 20.0f, 0.2f, 20.0f, 0); - Math_SmoothStepToF(&actor->fwork[6], 20.0f, 0.2f, 20.0f, 0); + if (((this->state >= 2) && (this->state < 4)) || (this->state >= 5)) { + Math_SmoothStepToF(&this->fwork[4], 10.0f, 0.2f, 20.0f, 0); + Math_SmoothStepToF(&this->fwork[5], 20.0f, 0.2f, 20.0f, 0); + Math_SmoothStepToF(&this->fwork[6], 20.0f, 0.2f, 20.0f, 0); } - if ((actor->state >= 4) && (actor->state < 5)) { - Math_SmoothStepToF(&actor->fwork[4], 159.0f, 0.1f, 10.0f, 0); - Math_SmoothStepToF(&actor->fwork[5], 159.0f, 0.1f, 10.0f, 0); - Math_SmoothStepToF(&actor->fwork[6], 255.0f, 0.1f, 10.0f, 0); + if ((this->state >= 4) && (this->state < 5)) { + Math_SmoothStepToF(&this->fwork[4], 159.0f, 0.1f, 10.0f, 0); + Math_SmoothStepToF(&this->fwork[5], 159.0f, 0.1f, 10.0f, 0); + Math_SmoothStepToF(&this->fwork[6], 255.0f, 0.1f, 10.0f, 0); } - if (((actor->state < 5) || (actor->state == 7)) && (actor->health != 0) && ((gGameFrameCount % 16) == 0)) { - func_effect_8007B8F8(actor->vwork[22].x, gGroundHeight, actor->vwork[22].z, 5.0f); + if (((this->state < 5) || (this->state == 7)) && (this->health != 0) && ((gGameFrameCount % 16) == 0)) { + Effect_Effect364_Spawn(this->vwork[22].x, gGroundHeight, this->vwork[22].z, 5.0f); } - Math_SmoothStepToF(&actor->fwork[1], actor->fwork[2], 0.1f, 2.0f, 0.00001f); - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].cam.eye.z - gPathProgress + actor->fwork[3], 0.1f, actor->fwork[1], + Math_SmoothStepToF(&this->fwork[1], this->fwork[2], 0.1f, 2.0f, 0.00001f); + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].cam.eye.z - gPathProgress + this->fwork[3], 0.1f, this->fwork[1], 0.00001); - if ((actor->state == 1) && (fabsf(actor->fwork[7] - actor->obj.pos.z) >= 10000.0f)) { - actor->timer_0C0 = 20; - actor->state = 5; + if ((this->state == 1) && (fabsf(this->fwork[7] - this->obj.pos.z) >= 10000.0f)) { + this->timer_0C0 = 20; + this->state = 5; } - switch (actor->state) { + switch (this->state) { case 0: - actor->timer_0BE = (s32) (100.0f + RAND_FLOAT(150.0f)); - actor->state = 1; - actor->fwork[7] = actor->obj.pos.z; + this->timer_0BE = (s32) (100.0f + RAND_FLOAT(150.0f)); + this->state = 1; + this->fwork[7] = this->obj.pos.z; break; case 1: - if (actor->timer_0BC != 0) { - Math_SmoothStepToF(&actor->fwork[4], 255.0f, 0.1f, 50.0f, 0); - Math_SmoothStepToF(&actor->fwork[5], 255.0f, 0.1f, 50.0f, 0); - Math_SmoothStepToF(&actor->fwork[6], 0.0f, 0.1f, 50.0f, 0); + if (this->timer_0BC != 0) { + Math_SmoothStepToF(&this->fwork[4], 255.0f, 0.1f, 50.0f, 0); + Math_SmoothStepToF(&this->fwork[5], 255.0f, 0.1f, 50.0f, 0); + Math_SmoothStepToF(&this->fwork[6], 0.0f, 0.1f, 50.0f, 0); } else { - Math_SmoothStepToF(&actor->fwork[4], 10.0f, 0.2f, 20.0f, 0); - Math_SmoothStepToF(&actor->fwork[5], 20.0f, 0.2f, 20.0f, 0); - Math_SmoothStepToF(&actor->fwork[6], 20.0f, 0.2f, 20.0f, 0); - if (actor->timer_0BE == 0) { - actor->iwork[1] = 1; - actor->state = 2; + Math_SmoothStepToF(&this->fwork[4], 10.0f, 0.2f, 20.0f, 0); + Math_SmoothStepToF(&this->fwork[5], 20.0f, 0.2f, 20.0f, 0); + Math_SmoothStepToF(&this->fwork[6], 20.0f, 0.2f, 20.0f, 0); + if (this->timer_0BE == 0) { + this->iwork[1] = 1; + this->state = 2; } } - if (((gGameFrameCount % 4) == 0)) { - Aquas_801AC8A8(actor->vwork[7].x + RAND_FLOAT_CENTERED(120.0f), - actor->vwork[7].y + RAND_FLOAT_CENTERED(50.0f), - actor->vwork[7].z + 100.0f + RAND_FLOAT_CENTERED(100.0f), 1.0f, 0); + if ((gGameFrameCount % 4) == 0) { + Aquas_Effect366_Spawn(this->vwork[7].x + RAND_FLOAT_CENTERED(120.0f), + this->vwork[7].y + RAND_FLOAT_CENTERED(50.0f), + this->vwork[7].z + 100.0f + RAND_FLOAT_CENTERED(100.0f), 1.0f, 0); } break; case 2: - actor->animFrame += actor->iwork[1]; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6024F80)) { - actor->animFrame = 0; - actor->timer_0BE = 0; + this->animFrame += this->iwork[1]; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_6024F80)) { + this->animFrame = 0; + this->timer_0BE = 0; - if (actor->iwork[1] >= 2) { - actor->timer_0BE = 30; + if (this->iwork[1] >= 2) { + this->timer_0BE = 30; } for (i = 0; i < 10; i++) { - Aquas_801AC8A8(actor->vwork[7].x + RAND_FLOAT_CENTERED(120.0f), - actor->vwork[7].y + RAND_FLOAT_CENTERED(50.0f), - actor->vwork[7].z + 100.0f + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); + Aquas_Effect366_Spawn(this->vwork[7].x + RAND_FLOAT_CENTERED(120.0f), + this->vwork[7].y + RAND_FLOAT_CENTERED(50.0f), + this->vwork[7].z + 100.0f + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); } - actor->state = 3; + this->state = 3; } break; case 3: - if (actor->timer_0BE == 0) { + if (this->timer_0BE == 0) { for (i = 0; i < 2; i++) { - actor->iwork[2 + i] = func_effect_80081B24(actor->vwork[20 + i].x, actor->vwork[20 + i].y, - actor->vwork[20 + i].z, 0.1f) + - 1; + this->iwork[2 + i] = func_effect_80081B24(this->vwork[20 + i].x, this->vwork[20 + i].y, + this->vwork[20 + i].z, 0.1f) + + 1; } - actor->timer_0C0 = 10; - AUDIO_PLAY_SFX(NA_SE_EN_WT_SPARK_CHARGE, actor->sfxSource, 4); - actor->state = 4; + this->timer_0C0 = 10; + AUDIO_PLAY_SFX(NA_SE_EN_WT_SPARK_CHARGE, this->sfxSource, 4); + this->state = 4; } break; case 4: - actor->iwork[5]++; - if (actor->timer_0C0 == 0) { - Audio_KillSfxBySource(actor->sfxSource); - actor->animFrame++; - if (Animation_GetFrameCount(&D_AQ_602AC28) < actor->animFrame) { - actor->animFrame = Animation_GetFrameCount(&D_AQ_6024F80) - 1; - actor->state = 7; + this->iwork[5]++; + if (this->timer_0C0 == 0) { + Audio_KillSfxBySource(this->sfxSource); + this->animFrame++; + if (Animation_GetFrameCount(&D_AQ_602AC28) < this->animFrame) { + this->animFrame = Animation_GetFrameCount(&D_AQ_6024F80) - 1; + this->state = 7; } } - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); - if ((actor->animFrame < 21) && (actor->state == 4) && (actor->iwork[3] != 0)) { - j = actor->iwork[3] - 1; + if ((this->animFrame < 21) && (this->state == 4) && (this->iwork[3] != 0)) { + j = this->iwork[3] - 1; effect = &gEffects[j]; - if (actor->animFrame == 20) { + if (this->animFrame == 20) { spAC = gPlayer[0].pos.x - effect->obj.pos.x; temp_dy = gPlayer[0].pos.y - effect->obj.pos.y; temp_dz = gPlayer[0].trueZpos - 50.0f - effect->obj.pos.z; @@ -4716,19 +4700,19 @@ void Aquas_Actor260_Update(Actor* actor) { effect->unk_44 = 2; effect->timer_50 = 100; - actor->iwork[3] = 0; - AUDIO_PLAY_SFX(NA_SE_EN_WT_THROW, actor->sfxSource, 4); + this->iwork[3] = 0; + AUDIO_PLAY_SFX(NA_SE_EN_WT_THROW, this->sfxSource, 4); } else { - effect->obj.pos.x = actor->vwork[21].x; - effect->obj.pos.y = actor->vwork[21].y; - effect->obj.pos.z = actor->vwork[21].z; + effect->obj.pos.x = this->vwork[21].x; + effect->obj.pos.y = this->vwork[21].y; + effect->obj.pos.z = this->vwork[21].z; } } - if ((actor->animFrame < 58) && (actor->state == 4) && (actor->iwork[2] != 0)) { - j = actor->iwork[2] - 1; + if ((this->animFrame < 58) && (this->state == 4) && (this->iwork[2] != 0)) { + j = this->iwork[2] - 1; effect = &gEffects[j]; - if (actor->animFrame == 57) { + if (this->animFrame == 57) { spAC = gPlayer[0].pos.x - effect->obj.pos.x; temp_dy = gPlayer[0].pos.y - effect->obj.pos.y; temp_dz = gPlayer[0].trueZpos - 50.0f - effect->obj.pos.z; @@ -4750,28 +4734,28 @@ void Aquas_Actor260_Update(Actor* actor) { effect->unk_44 = 2; effect->timer_50 = 100; - actor->iwork[2] = 0; + this->iwork[2] = 0; } else { - effect->obj.pos.x = actor->vwork[20].x; - effect->obj.pos.y = actor->vwork[20].y; - effect->obj.pos.z = actor->vwork[20].z; + effect->obj.pos.x = this->vwork[20].x; + effect->obj.pos.y = this->vwork[20].y; + effect->obj.pos.z = this->vwork[20].z; } } break; case 5: - Math_SmoothStepToAngle(&actor->obj.rot.x, 40.0f, 0.1f, 10.0f, 0); + Math_SmoothStepToAngle(&this->obj.rot.x, 40.0f, 0.1f, 10.0f, 0); - actor->animFrame++; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6024F80)) { - actor->animFrame = Animation_GetFrameCount(&D_AQ_6024F80) - 1; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_6024F80)) { + this->animFrame = Animation_GetFrameCount(&D_AQ_6024F80) - 1; } - if (actor->timer_0C0 == 0) { - temp_dy = gPlayer[0].pos.y - 50.0f - actor->obj.pos.y; - temp_dz = gPlayer[0].trueZpos - actor->obj.pos.z; + if (this->timer_0C0 == 0) { + temp_dy = gPlayer[0].pos.y - 50.0f - this->obj.pos.y; + temp_dz = gPlayer[0].trueZpos - this->obj.pos.z; temp1 = Math_RadToDeg(-Math_Atan2F(temp_dy, sqrtf(SQ(spAC) + SQ(temp_dz)))); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, M_DTOR * temp1, MTXF_APPLY); sp90.x = sp90.y = 0.0f; @@ -4779,72 +4763,72 @@ void Aquas_Actor260_Update(Actor* actor) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp90, &sp84); - actor->vel.x = sp84.x; - actor->vel.y = sp84.y; - actor->vel.z = sp84.z; - actor->state = 6; + this->vel.x = sp84.x; + this->vel.y = sp84.y; + this->vel.z = sp84.z; + this->state = 6; } break; case 6: - actor->animFrame++; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6024F80)) { - actor->animFrame = Animation_GetFrameCount(&D_AQ_6024F80) - 1; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_6024F80)) { + this->animFrame = Animation_GetFrameCount(&D_AQ_6024F80) - 1; } - Math_SmoothStepToAngle(&actor->obj.rot.x, 30.0f, 0.1f, 10.0f, 0); + Math_SmoothStepToAngle(&this->obj.rot.x, 30.0f, 0.1f, 10.0f, 0); if (((gGameFrameCount % 2) == 0)) { - Aquas_801AC8A8(actor->vwork[7].x + RAND_FLOAT_CENTERED(120.0f), - actor->vwork[7].y + RAND_FLOAT_CENTERED(50.0f), - actor->vwork[7].z + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); + Aquas_Effect366_Spawn(this->vwork[7].x + RAND_FLOAT_CENTERED(120.0f), + this->vwork[7].y + RAND_FLOAT_CENTERED(50.0f), + this->vwork[7].z + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); } break; case 7: - actor->animFrame--; - if (actor->animFrame <= 0) { - actor->animFrame = 0; - actor->timer_0BE = (s32) (100.0f + RAND_FLOAT(150.0f)); - actor->state = 1; + this->animFrame--; + if (this->animFrame <= 0) { + this->animFrame = 0; + this->timer_0BE = (s32) (100.0f + RAND_FLOAT(150.0f)); + this->state = 1; } break; } - if (actor->iwork[0] != 0) { - actor->health = 0; + if (this->iwork[0] != 0) { + this->health = 0; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if (actor->health != 0) { - actor->info.bonus = 0; - if (actor->damage == 31) { - if (actor->state >= 2) { - actor->info.bonus = 1; - actor->timer_0C6 = 30; - actor->health -= actor->damage; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->health != 0) { + this->info.bonus = 0; + if (this->damage == 31) { + if (this->state >= 2) { + this->info.bonus = 1; + this->timer_0C6 = 30; + this->health -= this->damage; } - if (actor->state == 1) { - actor->info.bonus = 1; - actor->iwork[1] = 7; - actor->state = 2; + if (this->state == 1) { + this->info.bonus = 1; + this->iwork[1] = 7; + this->state = 2; } - } else if (actor->state >= 2) { - actor->info.bonus = 1; - actor->timer_0C6 = 30; - actor->health -= actor->damage; - AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, actor->sfxSource, 4); + } else if (this->state >= 2) { + this->info.bonus = 1; + this->timer_0C6 = 30; + this->health -= this->damage; + AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, this->sfxSource, 4); } else { - actor->timer_0BC = 50; + this->timer_0BC = 50; } - if (actor->health <= 0) { - actor->health = 0; + if (this->health <= 0) { + this->health = 0; } } } } -bool Aquas_801B8C50(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Aquas_AqGaroa_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { Actor* this = thisx; RCP_SetupDL(&gMasterDisp, SETUPDL_58); @@ -4861,7 +4845,7 @@ bool Aquas_801B8C50(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Aquas_801B8D7C(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqGaroa_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp4C = { 0.0f, 0.0f, 0.0f }; Vec3f sp40 = { 108.0f, 0.0f, 24.0f }; Vec3f sp34 = { 102.0f, 14.0f, -21.0f }; @@ -4950,22 +4934,21 @@ void Aquas_801B8D7C(s32 limbIndex, Vec3f* rot, void* thisx) { } } -// OBJ_ACTOR_260 draw -void Aquas_Actor260_Draw(Actor* actor) { +void Aquas_AqGaroa_Draw(AqGaroa* this) { Vec3f sp30[30]; - if ((actor->state >= 3) && (actor->state < 5)) { - Animation_GetFrameData(&D_AQ_602AC28, actor->animFrame, sp30); + if ((this->state >= 3) && (this->state < 5)) { + Animation_GetFrameData(&D_AQ_602AC28, this->animFrame, sp30); } else { - Animation_GetFrameData(&D_AQ_6024F80, actor->animFrame, sp30); + Animation_GetFrameData(&D_AQ_6024F80, this->animFrame, sp30); } Matrix_Translate(gCalcMatrix, 0.0f, -150.0f, 100.0f, MTXF_APPLY); - Animation_DrawSkeleton(3, D_AQ_602512C, sp30, Aquas_801B8C50, Aquas_801B8D7C, actor, gCalcMatrix); + Animation_DrawSkeleton(3, D_AQ_602512C, sp30, Aquas_AqGaroa_OverrideLimbDraw, Aquas_AqGaroa_PostLimbDraw, this, + gCalcMatrix); } -// OBJ_ACTOR_263 action -void Aquas_Actor263_Update(Actor* actor) { +void Aquas_AqSquid_Update(AqSquid* this) { Vec3f spDC = { 0.0f, 0.0f, 50.0f }; Vec3f spD0; Vec3f spC4; @@ -4978,101 +4961,101 @@ void Aquas_Actor263_Update(Actor* actor) { f32 spf98; f32 sp94; - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); - if ((actor->health == 0) && (actor->state > 0)) { - actor->itemDrop = DROP_NONE; - Actor_Despawn(actor); + if ((this->health == 0) && (this->state > 0)) { + this->itemDrop = DROP_NONE; + Actor_Despawn(this); for (i = 0; i < 5; i++) { - func_effect_80081A8C(actor->obj.pos.x + RAND_FLOAT(i * 15.0f), actor->obj.pos.y + RAND_FLOAT(i * 3.0f), - actor->obj.pos.z + RAND_FLOAT(i * 5.0f), 0.5f + RAND_FLOAT(0.3f), 7); + func_effect_80081A8C(this->obj.pos.x + RAND_FLOAT(i * 15.0f), this->obj.pos.y + RAND_FLOAT(i * 3.0f), + this->obj.pos.z + RAND_FLOAT(i * 5.0f), 0.5f + RAND_FLOAT(0.3f), 7); } for (i = RAND_INT(10.0f); i < 13; i++) { - Aquas_SpawnDebris(&actor->vwork[0 + i], &actor->vwork[13 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), - RAND_FLOAT_CENTERED(10.0f), 53, actor->scale, 200, i); - func_effect_8007BC7C(actor->vwork[0 + i].x, actor->vwork[0 + i].y, actor->vwork[0 + i].z + 100.0f, 6.0f); + Aquas_SpawnDebris(&this->vwork[0 + i], &this->vwork[13 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), + RAND_FLOAT_CENTERED(10.0f), 53, this->scale, 200, i); + Effect_Effect362_Spawn(this->vwork[0 + i].x, this->vwork[0 + i].y, this->vwork[0 + i].z + 100.0f, 6.0f); } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); func_effect_800815DC(); - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 5.0f); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 5.0f); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_AQ_ZAKO_DOWN); } - switch (actor->state) { + switch (this->state) { case 0: for (i = 0; i < 13; i++) { - actor->vwork[0 + i].x = actor->obj.pos.x; - actor->vwork[0 + i].y = actor->obj.pos.y; - actor->vwork[0 + i].z = actor->obj.pos.z; - actor->vwork[13 + i].x = actor->obj.rot.x; - actor->vwork[13 + i].y = actor->obj.rot.y; - actor->vwork[13 + i].z = actor->obj.rot.z; + this->vwork[0 + i].x = this->obj.pos.x; + this->vwork[0 + i].y = this->obj.pos.y; + this->vwork[0 + i].z = this->obj.pos.z; + this->vwork[13 + i].x = this->obj.rot.x; + this->vwork[13 + i].y = this->obj.rot.y; + this->vwork[13 + i].z = this->obj.rot.z; } - actor->health = 30; - actor->animFrame = 19; - actor->fwork[1] = actor->obj.pos.z; + this->health = 30; + this->animFrame = 19; + this->fwork[1] = this->obj.pos.z; - if (actor->obj.rot.z >= 4.0f) { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_60314AC); - actor->health = 200; - actor->info.bonus = 1; - actor->state = 2; - actor->obj.rot.x = actor->obj.rot.y = actor->obj.rot.z = 0.0f; - actor->fwork[7] = actor->obj.pos.y; - actor->scale = 2.0f; + if (this->obj.rot.z >= 4.0f) { + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_60314AC); + this->health = 200; + this->info.bonus = 1; + this->state = 2; + this->obj.rot.x = this->obj.rot.y = this->obj.rot.z = 0.0f; + this->fwork[7] = this->obj.pos.y; + this->scale = 2.0f; } else { - if (actor->obj.rot.z >= 2.0f) { - actor->iwork[1] = 1; + if (this->obj.rot.z >= 2.0f) { + this->iwork[1] = 1; } spC4.x = spC4.y = 0.0f; spC4.z = 40.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &spC4, &spB8); - actor->fwork[4] = spB8.x; - actor->fwork[5] = spB8.y; - actor->fwork[6] = spB8.z; - actor->state = 1; - actor->obj.rot.z = 0.0f; + this->fwork[4] = spB8.x; + this->fwork[5] = spB8.y; + this->fwork[6] = spB8.z; + this->state = 1; + this->obj.rot.z = 0.0f; } break; case 1: - actor->animFrame++; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6000AE4)) { - actor->animFrame = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_6000AE4)) { + this->animFrame = 0; } - if (actor->animFrame == 36) { - actor->vel.x = actor->fwork[4]; - actor->vel.y = actor->fwork[5]; - actor->vel.z = actor->fwork[6]; + if (this->animFrame == 36) { + this->vel.x = this->fwork[4]; + this->vel.y = this->fwork[5]; + this->vel.z = this->fwork[6]; } - Math_SmoothStepToF(&actor->vel.x, 0.0f, 0.1f, 1.0f, 0.00001f); - Math_SmoothStepToF(&actor->vel.y, 0.0f, 0.1f, 1.0f, 0.00001f); - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.1f, 1.0f, 0.00001f); + Math_SmoothStepToF(&this->vel.x, 0.0f, 0.1f, 1.0f, 0.00001f); + Math_SmoothStepToF(&this->vel.y, 0.0f, 0.1f, 1.0f, 0.00001f); + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.1f, 1.0f, 0.00001f); i = 0; - if (actor->iwork[1] != 0) { - if ((actor->animFrame % 8) == 0) { + if (this->iwork[1] != 0) { + if ((this->animFrame % 8) == 0) { i = 1; } } else { - if ((actor->animFrame % 2) == 0) { + if ((this->animFrame % 2) == 0) { i = 1; } } - if ((actor->animFrame > 36) && (i != 0) && (fabsf(gPlayer[0].trueZpos - actor->obj.pos.z) > 1000.0f)) { - spfA4 = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(200.0f) - actor->vwork[26].x; - spA0 = gPlayer[0].pos.y + RAND_FLOAT_CENTERED(200.0f) - actor->vwork[26].y; - spf9C = gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(200.0f) - actor->vwork[26].z; + if ((this->animFrame > 36) && (i != 0) && (fabsf(gPlayer[0].trueZpos - this->obj.pos.z) > 1000.0f)) { + spfA4 = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(200.0f) - this->vwork[26].x; + spA0 = gPlayer[0].pos.y + RAND_FLOAT_CENTERED(200.0f) - this->vwork[26].y; + spf9C = gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(200.0f) - this->vwork[26].z; sp94 = Math_RadToDeg(Math_Atan2F(spfA4, spf9C)); spf98 = Math_RadToDeg(-Math_Atan2F(spA0, sqrtf(SQ(spfA4) + SQ(spf9C)))); @@ -5085,61 +5068,61 @@ void Aquas_Actor263_Update(Actor* actor) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &spC4, &spAC); - func_effect_8007F04C(OBJ_EFFECT_ENEMY_LASER_1, actor->vwork[26].x + RAND_FLOAT_CENTERED(200.0f), - actor->vwork[26].y + RAND_FLOAT_CENTERED(200.0f), actor->vwork[26].z, spf98, sp94, + func_effect_8007F04C(OBJ_EFFECT_ENEMY_LASER_1, this->vwork[26].x + RAND_FLOAT_CENTERED(200.0f), + this->vwork[26].y + RAND_FLOAT_CENTERED(200.0f), this->vwork[26].z, spf98, sp94, 0.0f, 0.0f, 0.0f, 0.0f, spAC.x, spAC.y, spAC.z, 1.0f); } break; case 2: - actor->animFrame++; - if ((actor->animFrame >= Animation_GetFrameCount(&D_AQ_6000AE4)) && (actor->fwork[8] < 1.0f)) { - actor->animFrame = 0; + this->animFrame++; + if ((this->animFrame >= Animation_GetFrameCount(&D_AQ_6000AE4)) && (this->fwork[8] < 1.0f)) { + this->animFrame = 0; } - if (actor->animFrame == 40) { - actor->fwork[8] = 700.0f; - Aquas_801A9728(actor, 50.0f, 10.0f, 8); + if (this->animFrame == 40) { + this->fwork[8] = 700.0f; + Aquas_801A9728(this, 50.0f, 10.0f, 8); } - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[7] + actor->fwork[8], 0.1f, 10.0f, 0.00001f); - Math_SmoothStepToF(&actor->fwork[8], 0.0f, 0.1f, 10.0f, 0.0001f); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[7] + this->fwork[8], 0.1f, 10.0f, 0.00001f); + Math_SmoothStepToF(&this->fwork[8], 0.0f, 0.1f, 10.0f, 0.0001f); - if (actor->animFrame >= 40) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(70.0f), - actor->obj.pos.y - 50.0f + RAND_FLOAT_CENTERED(50.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 1.0f, 0); + if (this->animFrame >= 40) { + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(70.0f), + this->obj.pos.y - 50.0f + RAND_FLOAT_CENTERED(50.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 1.0f, 0); } - if (actor->animFrame >= 37) { - actor->obj.rot.y += 20.0f; - actor->fwork[2] += 20.0f; + if (this->animFrame >= 37) { + this->obj.rot.y += 20.0f; + this->fwork[2] += 20.0f; if (((gGameFrameCount % 4) == 0)) { - Matrix_RotateY(gCalcMatrix, actor->fwork[2] * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->vwork[27].x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->vwork[27].z * M_DTOR, MTXF_APPLY); - Aquas_801AC8A8(actor->vwork[11].x + RAND_FLOAT_CENTERED(120.0f), - actor->vwork[11].y + RAND_FLOAT_CENTERED(50.0f), - actor->vwork[11].z + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); + Matrix_RotateY(gCalcMatrix, this->fwork[2] * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->vwork[27].x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->vwork[27].z * M_DTOR, MTXF_APPLY); + Aquas_Effect366_Spawn(this->vwork[11].x + RAND_FLOAT_CENTERED(120.0f), + this->vwork[11].y + RAND_FLOAT_CENTERED(50.0f), + this->vwork[11].z + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); Matrix_MultVec3fNoTranslate(gCalcMatrix, &spDC, &spD0); - func_effect_8007F04C(OBJ_EFFECT_ENEMY_LASER_1, actor->vwork[26].x + spD0.x, - actor->vwork[26].y + spD0.y, actor->vwork[26].z + spD0.z, actor->vwork[27].x, - actor->fwork[2], actor->vwork[27].z, 0.0f, 0.0f, 0.0f, spD0.x, spD0.y, spD0.z, + func_effect_8007F04C(OBJ_EFFECT_ENEMY_LASER_1, this->vwork[26].x + spD0.x, + this->vwork[26].y + spD0.y, this->vwork[26].z + spD0.z, this->vwork[27].x, + this->fwork[2], this->vwork[27].z, 0.0f, 0.0f, 0.0f, spD0.x, spD0.y, spD0.z, 1.0f); } } break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if ((actor->health != 0) && (actor->state != 0)) { - actor->timer_0C6 = 15; - actor->health -= actor->damage; - AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, actor->sfxSource, 4); - if (actor->health <= 0) { - actor->health = 0; - if (actor->scale > 1.0f) { - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 200.0f, 2); + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if ((this->health != 0) && (this->state != 0)) { + this->timer_0C6 = 15; + this->health -= this->damage; + AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, this->sfxSource, 4); + if (this->health <= 0) { + this->health = 0; + if (this->scale > 1.0f) { + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 200.0f, 2); gHitCount += 2; D_ctx_80177850 = 15; } @@ -5148,7 +5131,7 @@ void Aquas_Actor263_Update(Actor* actor) { } } -void Aquas_801B9DB0(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqSquid_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp34 = { 0.0f, 0.0f, 0.0f }; Vec3f sp28 = { -27.0f, 7.0f, 5.0f }; Actor* this = (Actor*) thisx; @@ -5231,247 +5214,241 @@ void Aquas_801B9DB0(s32 limbIndex, Vec3f* rot, void* thisx) { } } -// OBJ_ACTOR_263 draw -void Aquas_Actor263_Draw(Actor* actor) { +void Aquas_AqSquid_Draw(AqSquid* this) { Vec3f sp40[30]; RCP_SetupDL(&gMasterDisp, SETUPDL_29); - if ((actor->timer_0C6 % 2) != 0) { + if ((this->timer_0C6 % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_30); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); - } else if (actor->state == 2) { + } else if (this->state == 2) { RCP_SetupDL(&gMasterDisp, SETUPDL_30); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 95, 31, 255); } - Matrix_Scale(gCalcMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); + Matrix_Scale(gCalcMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); - if (actor->state == 1) { - Matrix_RotateX(gCalcMatrix, (actor->obj.rot.x + 90.0f) * M_DTOR, MTXF_APPLY); + if (this->state == 1) { + Matrix_RotateX(gCalcMatrix, (this->obj.rot.x + 90.0f) * M_DTOR, MTXF_APPLY); } - Animation_GetFrameData(&D_AQ_6000AE4, actor->animFrame, sp40); - Animation_DrawSkeleton(3, D_AQ_6000DB0, sp40, NULL, Aquas_801B9DB0, actor, gCalcMatrix); + Animation_GetFrameData(&D_AQ_6000AE4, this->animFrame, sp40); + Animation_DrawSkeleton(3, D_AQ_6000DB0, sp40, NULL, Aquas_AqSquid_PostLimbDraw, this, gCalcMatrix); } -// OBJ_ACTOR_264 action -void Aquas_Actor264_Update(Actor* actor) { - Vec3f sp40[30]; +void Aquas_AqSeaweed_Update(AqSeaweed* this) { + Vec3f frameTable[30]; u16 sp3E; - switch (actor->state) { + switch (this->state) { case 0: - actor->animFrame = RAND_INT(50.0f); - actor->state++; + this->animFrame = RAND_INT(50.0f); + this->state++; /* fallthrough */ case 1: - actor->animFrame += 2; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6020A40)) { - actor->animFrame = 0; + this->animFrame += 2; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_6020A40)) { + this->animFrame = 0; } - sp3E = Animation_GetFrameData(&D_AQ_6020A40, actor->animFrame, sp40); + sp3E = Animation_GetFrameData(&D_AQ_6020A40, this->animFrame, frameTable); - if ((fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 150.0f) && - (fabsf(actor->obj.pos.y - gPlayer[0].pos.y) < 500.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 700.0f)) { - actor->state = 2; - actor->fwork[0] = 0.0f; + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 150.0f) && + (fabsf(this->obj.pos.y - gPlayer[0].pos.y) < 500.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 700.0f)) { + this->state = 2; + this->fwork[0] = 0.0f; } break; case 2: - actor->animFrame += 2; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_601DE50)) { - actor->animFrame = 0; + this->animFrame += 2; + if (this->animFrame >= Animation_GetFrameCount(&D_AQ_601DE50)) { + this->animFrame = 0; } - sp3E = Animation_GetFrameData(&D_AQ_601DE50, actor->animFrame, sp40); - if ((fabsf(actor->obj.pos.x - gPlayer[0].pos.x) > 150.0f) || - (fabsf(actor->obj.pos.y - gPlayer[0].pos.y) > 500.0f) || - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) > 700.0f)) { - actor->state = 1; - actor->fwork[0] = 0.0f; + sp3E = Animation_GetFrameData(&D_AQ_601DE50, this->animFrame, frameTable); + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) > 150.0f) || + (fabsf(this->obj.pos.y - gPlayer[0].pos.y) > 500.0f) || + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) > 700.0f)) { + this->state = 1; + this->fwork[0] = 0.0f; } break; } - Math_SmoothStepToVec3fArray(sp40, actor->vwork, 1, sp3E, actor->fwork[0], 100.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[0], 0.5f, 1.0f, 0.008f, 0.0f); + Math_SmoothStepToVec3fArray(frameTable, this->vwork, 1, sp3E, this->fwork[0], 100.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.008f, 0.0f); } -// OBJ_ACTOR_264 draw -void Aquas_Actor264_Draw(Actor* actor) { +void Aquas_AqSeaweed_Draw(AqSeaweed* this) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); - Animation_DrawSkeleton(1, D_AQ_6020C6C, actor->vwork, NULL, NULL, &actor->index, &gIdentityMatrix); + Animation_DrawSkeleton(1, D_AQ_6020C6C, this->vwork, NULL, NULL, &this->index, &gIdentityMatrix); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } -void Aquas_801BA57C(Actor* actor) { - if (actor->state == 0) { - actor->scale = 1.0f; - actor->gravity = 0.3f; - actor->health = 10; - actor->fwork[2] = RAND_FLOAT_CENTERED((s32) (actor->index % 8U) + 3.0f); +void Venom1_AqBoulder_Init(AqBoulder* this) { + if (this->state == 0) { + this->scale = 1.0f; + this->gravity = 0.3f; + this->health = 10; + this->fwork[2] = RAND_FLOAT_CENTERED((s32) (this->index % 8U) + 3.0f); } else { - actor->info.bonus = 0; - actor->scale = 0.5f; - actor->gravity = 0.1f; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_603151C); - actor->fwork[2] = RAND_FLOAT_CENTERED((s32) (actor->index % 4U) + 1.0f); + this->info.bonus = 0; + this->scale = 0.5f; + this->gravity = 0.1f; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_603151C); + this->fwork[2] = RAND_FLOAT_CENTERED((s32) (this->index % 4U) + 1.0f); } - actor->fwork[1] = RAND_FLOAT(50.0f); + this->fwork[1] = RAND_FLOAT(50.0f); } -// OBJ_ACTOR_265 action -void Aquas_Actor265_Update(Actor* actor) { +void Aquas_AqBoulder_Update(AqBoulder* this) { s32 i; s32 var_s2; - Actor* actor265; + Actor* boulder; - switch (actor->state) { + switch (this->state) { case 0: - if (actor->iwork[1] == 0) { - actor->obj.rot.z += actor->fwork[2]; + if (this->iwork[1] == 0) { + this->obj.rot.z += this->fwork[2]; if (((gGameFrameCount % 2) == 0)) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(120.0f), - actor->obj.pos.y + RAND_FLOAT_CENTERED(50.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(120.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(50.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(100.0f), 2.0f, 0); } - actor->fwork[1] += 10.0f; - actor->vel.x = SIN_DEG(actor->fwork[1]) * 10.0f; + this->fwork[1] += 10.0f; + this->vel.x = SIN_DEG(this->fwork[1]) * 10.0f; - if (actor->obj.pos.y < (gGroundHeight + 30.0f)) { - AUDIO_PLAY_SFX(NA_SE_OB_AQ_ROCK_BOUND, actor->sfxSource, 4); - actor->iwork[1] = 1; - actor->vel.x = actor->vel.y = actor->vel.z = 0.0f; - actor->gravity = 0.0f; - func_effect_8007B8F8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 100.0f, - actor->scale * 30.0f); - func_effect_8007B8F8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 100.0f, - actor->scale * 30.0f); + if (this->obj.pos.y < (gGroundHeight + 30.0f)) { + AUDIO_PLAY_SFX(NA_SE_OB_AQ_ROCK_BOUND, this->sfxSource, 4); + this->iwork[1] = 1; + this->vel.x = this->vel.y = this->vel.z = 0.0f; + this->gravity = 0.0f; + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 100.0f, + this->scale * 30.0f); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 100.0f, + this->scale * 30.0f); } } break; case 1: - if (actor->iwork[1] == 0) { - actor->obj.rot.z += actor->fwork[2]; + if (this->iwork[1] == 0) { + this->obj.rot.z += this->fwork[2]; if (((gGameFrameCount % 4) == 0)) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(70.0f), - actor->obj.pos.y + RAND_FLOAT_CENTERED(50.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(50.0f), 1.0f, 0); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(70.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(50.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(50.0f), 1.0f, 0); } - Math_SmoothStepToF(&actor->vel.y, -7.0f, 0.1f, 1.0f, 0.0001f); + Math_SmoothStepToF(&this->vel.y, -7.0f, 0.1f, 1.0f, 0.0001f); - if (actor->obj.pos.y < (gGroundHeight + 20.0f)) { - actor->gravity = 0.0f; - if (actor->vel.y < 0.0f) { - actor->vel.y = 0.0f; + if (this->obj.pos.y < (gGroundHeight + 20.0f)) { + this->gravity = 0.0f; + if (this->vel.y < 0.0f) { + this->vel.y = 0.0f; } - actor->iwork[1] = 1; - AUDIO_PLAY_SFX(NA_SE_OB_AQ_ROCK_BOUND, actor->sfxSource, 4); - func_effect_8007B8F8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 100.0f, - actor->scale * 30.0f); + this->iwork[1] = 1; + AUDIO_PLAY_SFX(NA_SE_OB_AQ_ROCK_BOUND, this->sfxSource, 4); + Effect_Effect364_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 100.0f, + this->scale * 30.0f); } } else { - Math_SmoothStepToF(&actor->vel.y, 0.0f, 0.1f, 1.0f, 0.0001f); + Math_SmoothStepToF(&this->vel.y, 0.0f, 0.1f, 1.0f, 0.0001f); } - Math_SmoothStepToF(&actor->vel.x, 0.0f, 0.1f, 1.0f, 0.0001f); - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.1f, 1.0f, 0.0001f); + Math_SmoothStepToF(&this->vel.x, 0.0f, 0.1f, 1.0f, 0.0001f); + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.1f, 1.0f, 0.0001f); break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->health -= actor->damage; - if (actor->health <= 0) { - actor->health = actor->itemDrop = 0; - Actor_Despawn(actor); - if (actor->state == 0) { - for (i = 0, var_s2 = 0, actor265 = gActors; i < ARRAY_COUNT(gActors) && var_s2 < 4; i++, actor265++) { - if (actor265->obj.status == OBJ_FREE) { - Actor_Initialize(actor265); - actor265->obj.status = OBJ_INIT; - actor265->obj.id = OBJ_ACTOR_265; - actor265->obj.pos.x = actor->obj.pos.x; - actor265->obj.pos.y = actor->obj.pos.y + 20.0f; - actor265->obj.pos.z = actor->obj.pos.z; - actor265->vel.x = RAND_FLOAT_CENTERED(50.0f); - actor265->vel.y = RAND_FLOAT(5.0f); - actor265->vel.z = RAND_FLOAT_CENTERED(50.0f); - actor265->state = 1; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->health -= this->damage; + if (this->health <= 0) { + this->health = this->itemDrop = 0; + Actor_Despawn(this); + if (this->state == 0) { + for (i = 0, var_s2 = 0, boulder = &gActors[0]; (i < ARRAY_COUNT(gActors)) && (var_s2 < 4); + i++, boulder++) { + if (boulder->obj.status == OBJ_FREE) { + Actor_Initialize(boulder); + boulder->obj.status = OBJ_INIT; + boulder->obj.id = OBJ_ACTOR_AQ_BOULDER; + boulder->obj.pos.x = this->obj.pos.x; + boulder->obj.pos.y = this->obj.pos.y + 20.0f; + boulder->obj.pos.z = this->obj.pos.z; + boulder->vel.x = RAND_FLOAT_CENTERED(50.0f); + boulder->vel.y = RAND_FLOAT(5.0f); + boulder->vel.z = RAND_FLOAT_CENTERED(50.0f); + boulder->state = 1; - Object_SetInfo(&actor265->info, actor265->obj.id); + Object_SetInfo(&boulder->info, boulder->obj.id); var_s2++; } } if (i >= ARRAY_COUNT(gActors)) { - actor265->obj.status = OBJ_FREE; + boulder->obj.status = OBJ_FREE; } } else { for (i = 0; i < 4; i++) { - Aquas_SpawnDebris(&actor->obj.pos, &actor->obj.rot, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT(5.0f), + Aquas_SpawnDebris(&this->obj.pos, &this->obj.rot, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT(5.0f), RAND_FLOAT_CENTERED(10.0f), 54, 0.1f, 200, i); } } - func_effect_8007BC7C(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 130.0f, actor->scale * 30.0f); - func_effect_8007BC7C(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 130.0f, actor->scale * 30.0f); - func_effect_8007BC7C(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 130.0f, actor->scale * 30.0f); - Object_Kill(&actor->obj, actor->sfxSource); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 130.0f, this->scale * 30.0f); + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 130.0f, this->scale * 30.0f); + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 130.0f, this->scale * 30.0f); + Object_Kill(&this->obj, this->sfxSource); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); } } } -// OBJ_ACTOR_265 draw -void Aquas_Actor265_Draw(Actor* actor) { - Matrix_Scale(gGfxMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); +void Aquas_AqBoulder_Draw(AqBoulder* this) { + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_AQ_6014FD0); + gSPDisplayList(gMasterDisp++, aAqBoulderDL); } -// OBJ_ACTOR_266 action -void Aquas_Actor266_Update(Actor* actor) { +void Aquas_AqCoral_Update(AqCoral* this) { s32 i; - switch (actor->state) { + switch (this->state) { case 0: for (i = 0; i < 5; i++) { - actor->vwork[0 + i].x = actor->obj.pos.x; - actor->vwork[0 + i].y = actor->obj.pos.y; - actor->vwork[0 + i].z = actor->obj.pos.z; - actor->vwork[5 + i].x = actor->obj.rot.x; - actor->vwork[5 + i].y = actor->obj.rot.y; - actor->vwork[5 + i].z = actor->obj.rot.z; + this->vwork[0 + i].x = this->obj.pos.x; + this->vwork[0 + i].y = this->obj.pos.y; + this->vwork[0 + i].z = this->obj.pos.z; + this->vwork[5 + i].x = this->obj.rot.x; + this->vwork[5 + i].y = this->obj.rot.y; + this->vwork[5 + i].z = this->obj.rot.z; } - actor->state++; + this->state++; break; case 1: - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if (actor->damage == 0) { + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->damage == 0) { gPlayer[0].hitTimer = 6; gPlayer[0].hitDirection = 0; } - actor->state++; + this->state++; } break; case 2: for (i = 0; i < 5; i++) { - Aquas_SpawnDebris(&actor->vwork[0 + i], &actor->vwork[5 + i], RAND_FLOAT_CENTERED(20.0f), - RAND_FLOAT(5.0f), RAND_FLOAT_CENTERED(10.0f), 55, actor->scale, 200, i); - func_effect_8007BC7C(actor->vwork[0 + i].x, actor->vwork[0 + i].y, actor->vwork[0 + i].z + 100.0f, - 6.0f); + Aquas_SpawnDebris(&this->vwork[0 + i], &this->vwork[5 + i], RAND_FLOAT_CENTERED(20.0f), + RAND_FLOAT(5.0f), RAND_FLOAT_CENTERED(10.0f), 55, this->scale, 200, i); + Effect_Effect362_Spawn(this->vwork[0 + i].x, this->vwork[0 + i].y, this->vwork[0 + i].z + 100.0f, 6.0f); } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); break; } } -void Aquas_801BB0C4(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqCoral_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; Actor* this = (Actor*) thisx; @@ -5501,12 +5478,11 @@ void Aquas_801BB0C4(s32 limbIndex, Vec3f* rot, void* thisx) { } } -// OBJ_ACTOR_266 draw -void Aquas_Actor266_Draw(Actor* actor) { - Vec3f sp28[30]; +void Aquas_AqCoral_Draw(AqCoral* this) { + Vec3f frameTable[30]; - Animation_GetFrameData(&D_AQ_601EC68, 0, sp28); - Animation_DrawSkeleton(3, D_AQ_601EDB4, sp28, NULL, Aquas_801BB0C4, actor, gCalcMatrix); + Animation_GetFrameData(&aAqCoralAnim, 0, frameTable); + Animation_DrawSkeleton(3, aAqCoralSkel, frameTable, NULL, Aquas_AqCoral_PostLimbDraw, this, gCalcMatrix); } Vec3f D_i3_801C0344[4] = { @@ -5528,107 +5504,107 @@ s32 D_i3_801C04A0[6] = { 15, -15, 10, -10, 7, -7, }; -void Aquas_801BB26C(Actor* actor) { +void Venom1_AqJellyfish_Init(AqJellyfish* this) { s32 sp64; s32 sp60; Vec3f sp54; Vec3f sp48; - Actor* actor267; - Actor* actor267_2; + AqJellyfish* jellyfish; + AqJellyfish* jellyfish2; - actor->fwork[1] = RAND_FLOAT(100.0f); - actor->timer_0BC = RAND_INT(50.0f); - actor->iwork[3] = RAND_INT(10.0f) % 2U; - actor->fwork[11] = actor->fwork[14] = actor->fwork[17] = actor->fwork[12] = actor->fwork[15] = actor->fwork[18] = - actor->fwork[13] = actor->fwork[16] = actor->fwork[19] = 1.0f; - actor->fwork[2] = 213.0f; - actor->fwork[3] = 160.0f; - actor->fwork[4] = 255.0f; - actor->fwork[8] = 255.0f; - actor->fwork[7] = 255.0f; - actor->fwork[6] = 197.0f; - actor->fwork[5] = 197.0f; - actor->fwork[10] = 231.0f; - actor->fwork[9] = 231.0f; - actor->fwork[22] = actor->obj.pos.x; - actor->fwork[23] = actor->obj.pos.y; - actor->fwork[24] = actor->obj.pos.z; - actor->iwork[4] = RAND_INT(60.0f); - actor->iwork[5] = 15 + RAND_INT(45.0f); - actor->iwork[6] = 45 + RAND_INT(15.0f); - actor->iwork[7] = RAND_INT(120.0f); - actor->iwork[8] = RAND_INT(120.0f); - actor->iwork[9] = RAND_INT(120.0f); + this->fwork[1] = RAND_FLOAT(100.0f); + this->timer_0BC = RAND_INT(50.0f); + this->iwork[3] = RAND_INT(10.0f) % 2U; + this->fwork[11] = this->fwork[14] = this->fwork[17] = this->fwork[12] = this->fwork[15] = this->fwork[18] = + this->fwork[13] = this->fwork[16] = this->fwork[19] = 1.0f; + this->fwork[2] = 213.0f; + this->fwork[3] = 160.0f; + this->fwork[4] = 255.0f; + this->fwork[8] = 255.0f; + this->fwork[7] = 255.0f; + this->fwork[6] = 197.0f; + this->fwork[5] = 197.0f; + this->fwork[10] = 231.0f; + this->fwork[9] = 231.0f; + this->fwork[22] = this->obj.pos.x; + this->fwork[23] = this->obj.pos.y; + this->fwork[24] = this->obj.pos.z; + this->iwork[4] = RAND_INT(60.0f); + this->iwork[5] = 15 + RAND_INT(45.0f); + this->iwork[6] = 45 + RAND_INT(15.0f); + this->iwork[7] = RAND_INT(120.0f); + this->iwork[8] = RAND_INT(120.0f); + this->iwork[9] = RAND_INT(120.0f); - actor->animFrame = RAND_INT(Animation_GetFrameCount(&D_AQ_6023780)); + this->animFrame = RAND_INT(Animation_GetFrameCount(&aAqJellyfishAnim)); - if (actor->iwork[2] == 0) { - actor->iwork[18] = fabsf(actor->obj.rot.y / 10.0f); - if ((actor->iwork[18] == 0) || (actor->iwork[18] == 2)) { - actor->iwork[19] = 1; + if (this->iwork[2] == 0) { + this->iwork[18] = fabsf(this->obj.rot.y / 10.0f); + if ((this->iwork[18] == 0) || (this->iwork[18] == 2)) { + this->iwork[19] = 1; } - actor->iwork[13] = D_i3_801C4450 * 3; + this->iwork[13] = D_i3_801C4450 * 3; - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_NEW); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_NEW); sp54.x = 0.0f; - sp54.y = actor->obj.rot.x * 10.0f; + sp54.y = this->obj.rot.x * 10.0f; sp54.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp54, &sp48); - for (sp64 = 0, actor267 = gActors; sp64 < ARRAY_COUNT(gActors); sp64++, actor267++) { - if (actor267->obj.status == OBJ_FREE) { - Actor_Initialize(actor267); - actor267->obj.status = OBJ_INIT; - actor267->obj.id = OBJ_ACTOR_267; - actor267->obj.pos.x = actor->obj.pos.x + sp48.x; - actor267->obj.pos.y = actor->obj.pos.y + sp48.y; - actor267->obj.pos.z = actor->obj.pos.z; - actor267->iwork[0] = actor->index + 1; - actor267->iwork[2] = 1; - actor267->iwork[13] = actor->iwork[13]; - actor267->iwork[18] = actor->iwork[18]; - actor267->iwork[19] = actor->iwork[19]; - actor->iwork[0] = sp64 + 1; - Object_SetInfo(&actor267->info, actor267->obj.id); + for (sp64 = 0, jellyfish = &gActors[0]; sp64 < ARRAY_COUNT(gActors); sp64++, jellyfish++) { + if (jellyfish->obj.status == OBJ_FREE) { + Actor_Initialize(jellyfish); + jellyfish->obj.status = OBJ_INIT; + jellyfish->obj.id = OBJ_ACTOR_AQ_JELLYFISH; + jellyfish->obj.pos.x = this->obj.pos.x + sp48.x; + jellyfish->obj.pos.y = this->obj.pos.y + sp48.y; + jellyfish->obj.pos.z = this->obj.pos.z; + jellyfish->iwork[0] = this->index + 1; + jellyfish->iwork[2] = 1; + jellyfish->iwork[13] = this->iwork[13]; + jellyfish->iwork[18] = this->iwork[18]; + jellyfish->iwork[19] = this->iwork[19]; + this->iwork[0] = sp64 + 1; + Object_SetInfo(&jellyfish->info, jellyfish->obj.id); break; } } - Matrix_RotateZ(gCalcMatrix, (actor->obj.rot.z + 90.0f) * M_DTOR, MTXF_NEW); + Matrix_RotateZ(gCalcMatrix, (this->obj.rot.z + 90.0f) * M_DTOR, MTXF_NEW); sp54.x = 0.0f; - sp54.y = actor->obj.rot.x * 10.0f; + sp54.y = this->obj.rot.x * 10.0f; sp54.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp54, &sp48); - for (sp60 = 0, actor267_2 = gActors; sp60 < ARRAY_COUNT(gActors); sp60++, actor267_2++) { - if (actor267_2->obj.status == OBJ_FREE) { - Actor_Initialize(actor267_2); - actor267_2->obj.status = OBJ_INIT; - actor267_2->obj.id = OBJ_ACTOR_267; - actor267_2->obj.pos.x = actor->obj.pos.x + sp48.x; - actor267_2->obj.pos.y = actor->obj.pos.y + sp48.y; - actor267_2->obj.pos.z = actor->obj.pos.z; - actor267_2->iwork[0] = actor->index + 1; - actor267_2->iwork[1] = actor267->index + 1; - actor267_2->iwork[2] = 2; - actor267_2->iwork[13] = actor->iwork[13]; - actor267_2->iwork[18] = actor->iwork[18]; - actor267_2->iwork[19] = actor->iwork[19]; - actor267->iwork[1] = sp60 + 1; - actor->iwork[1] = sp60 + 1; - Object_SetInfo(&actor267_2->info, actor267_2->obj.id); + for (sp60 = 0, jellyfish2 = &gActors[0]; sp60 < ARRAY_COUNT(gActors); sp60++, jellyfish2++) { + if (jellyfish2->obj.status == OBJ_FREE) { + Actor_Initialize(jellyfish2); + jellyfish2->obj.status = OBJ_INIT; + jellyfish2->obj.id = OBJ_ACTOR_AQ_JELLYFISH; + jellyfish2->obj.pos.x = this->obj.pos.x + sp48.x; + jellyfish2->obj.pos.y = this->obj.pos.y + sp48.y; + jellyfish2->obj.pos.z = this->obj.pos.z; + jellyfish2->iwork[0] = this->index + 1; + jellyfish2->iwork[1] = jellyfish->index + 1; + jellyfish2->iwork[2] = 2; + jellyfish2->iwork[13] = this->iwork[13]; + jellyfish2->iwork[18] = this->iwork[18]; + jellyfish2->iwork[19] = this->iwork[19]; + jellyfish->iwork[1] = sp60 + 1; + this->iwork[1] = sp60 + 1; + Object_SetInfo(&jellyfish2->info, jellyfish2->obj.id); break; } } - actor->fwork[21] = actor->obj.rot.x * 10.0f; - actor->iwork[17] = fabsf(Math_ModF(actor->obj.rot.y, 10.0f)); - actor->fwork[20] = actor->obj.rot.z; + this->fwork[21] = this->obj.rot.x * 10.0f; + this->iwork[17] = fabsf(Math_ModF(this->obj.rot.y, 10.0f)); + this->fwork[20] = this->obj.rot.z; - actor->obj.rot.x = actor->obj.rot.y = actor->obj.rot.z = 0.0f; + this->obj.rot.x = this->obj.rot.y = this->obj.rot.z = 0.0f; D_i3_801C4450++; if (D_i3_801C4450 > 20) { D_i3_801C4450 = 0; @@ -5636,8 +5612,7 @@ void Aquas_801BB26C(Actor* actor) { } } -// OBJ_ACTOR_267 action -void Aquas_Actor267_Update(Actor* actor) { +void Aquas_AqJellyfish_Update(AqJellyfish* this) { s32 i; s32 it0; s32 it1; @@ -5645,30 +5620,30 @@ void Aquas_Actor267_Update(Actor* actor) { Vec3f sp74; Actor* sp70; Actor* sp6C; - Scenery* actor122; + AqWall1* wall1; - if (actor->timer_0C0 == 0) { - switch (actor->iwork[18]) { + if (this->timer_0C0 == 0) { + switch (this->iwork[18]) { case 1: case 2: - i = actor->iwork[19] + (actor->iwork[2] * 2); - actor->vel.x = D_i3_801C04A0[i]; - if (((gGameFrameCount % 4) == 0)) { - if (fabsf(actor->fwork[22] - actor->obj.pos.x) >= 100.0f) { - if (actor->iwork[20] == 0) { - actor->iwork[19]++; - actor->iwork[19] &= 1; - actor->iwork[20] = 50; + i = this->iwork[19] + (this->iwork[2] * 2); + this->vel.x = D_i3_801C04A0[i]; + if ((gGameFrameCount % 4) == 0) { + if (fabsf(this->fwork[22] - this->obj.pos.x) >= 100.0f) { + if (this->iwork[20] == 0) { + this->iwork[19]++; + this->iwork[19] &= 1; + this->iwork[20] = 50; } } else { - for (i = 0, actor122 = gScenery; i < ARRAY_COUNT(gScenery); i++, actor122++) { - if ((actor122->obj.status == OBJ_ACTIVE) && (actor122->obj.id == OBJ_SCENERY_122) && - Object_CheckHitboxCollision(&actor->obj.pos, actor122->info.hitbox, &actor122->obj, - 0.0f, 0.0f, 0.0f) && - (actor->iwork[20] == 0)) { - actor->iwork[20] = 50; - actor->iwork[19]++; - actor->iwork[19] &= 1; + for (i = 0, wall1 = &gScenery[0]; i < ARRAY_COUNT(gScenery); i++, wall1++) { + if ((wall1->obj.status == OBJ_ACTIVE) && (wall1->obj.id == OBJ_SCENERY_AQ_WALL_1) && + Object_CheckHitboxCollision(&this->obj.pos, wall1->info.hitbox, &wall1->obj, 0.0f, 0.0f, + 0.0f) && + (this->iwork[20] == 0)) { + this->iwork[20] = 50; + this->iwork[19]++; + this->iwork[19] &= 1; } } } @@ -5677,25 +5652,25 @@ void Aquas_Actor267_Update(Actor* actor) { case 3: case 4: - i = actor->iwork[19] + (actor->iwork[2] * 2); - actor->vel.y = D_i3_801C04A0[i]; + i = this->iwork[19] + (this->iwork[2] * 2); + this->vel.y = D_i3_801C04A0[i]; if (((gGameFrameCount % 4) == 0)) { - if (fabsf(actor->fwork[23] - actor->obj.pos.y) >= 100.0f) { - if (actor->iwork[20] == 0) { - actor->iwork[19]++; - actor->iwork[19] &= 1; - actor->iwork[20] = 50; + if (fabsf(this->fwork[23] - this->obj.pos.y) >= 100.0f) { + if (this->iwork[20] == 0) { + this->iwork[19]++; + this->iwork[19] &= 1; + this->iwork[20] = 50; } } else { - for (i = 0, actor122 = gScenery; i < ARRAY_COUNT(gScenery); i++, actor122++) { - if ((actor122->obj.status == OBJ_ACTIVE) && (actor122->obj.id == OBJ_SCENERY_122) && - (Object_CheckHitboxCollision(&actor->obj.pos, actor122->info.hitbox, &actor122->obj, - 0.0f, 0.0f, 0.0f) || - (actor->obj.pos.y < (gGroundHeight + 30.0f))) && - (actor->iwork[20] == 0)) { - actor->iwork[20] = 50; - actor->iwork[19]++; - actor->iwork[19] &= 1; + for (i = 0, wall1 = gScenery; i < ARRAY_COUNT(gScenery); i++, wall1++) { + if ((wall1->obj.status == OBJ_ACTIVE) && (wall1->obj.id == OBJ_SCENERY_AQ_WALL_1) && + (Object_CheckHitboxCollision(&this->obj.pos, wall1->info.hitbox, &wall1->obj, 0.0f, + 0.0f, 0.0f) || + (this->obj.pos.y < (gGroundHeight + 30.0f))) && + (this->iwork[20] == 0)) { + this->iwork[20] = 50; + this->iwork[19]++; + this->iwork[19] &= 1; } } } @@ -5703,29 +5678,29 @@ void Aquas_Actor267_Update(Actor* actor) { break; } } else { - actor->vel.x = actor->vel.y = 0.0f; + this->vel.x = this->vel.y = 0.0f; } - if (actor->iwork[2] == 0) { - sp70 = &gActors[actor->iwork[0] - 1]; - sp6C = &gActors[actor->iwork[1] - 1]; + if (this->iwork[2] == 0) { + sp70 = &gActors[this->iwork[0] - 1]; + sp6C = &gActors[this->iwork[1] - 1]; - Math_SmoothStepToF(&actor->fwork[21], 200.0f, 0.1f, 2.0f, 0.0001f); + Math_SmoothStepToF(&this->fwork[21], 200.0f, 0.1f, 2.0f, 0.0001f); - if ((actor->iwork[13] == sp70->iwork[13]) && (actor->iwork[14] == 0)) { + if ((this->iwork[13] == sp70->iwork[13]) && (this->iwork[14] == 0)) { i = 1; - if (!((sp70->obj.id == OBJ_ACTOR_267) && (sp70->obj.status == OBJ_ACTIVE))) { - actor->iwork[14] = 1; + if (!((sp70->obj.id == OBJ_ACTOR_AQ_JELLYFISH) && (sp70->obj.status == OBJ_ACTIVE))) { + this->iwork[14] = 1; i = 0; } if (i != 0) { - if (!actor->timer_0C0 && sp70->timer_0C0 >= 2) { - actor->timer_0C0 = sp70->timer_0C0; - actor->timer_0C6 = sp70->timer_0C6; + if (!this->timer_0C0 && sp70->timer_0C0 >= 2) { + this->timer_0C0 = sp70->timer_0C0; + this->timer_0C6 = sp70->timer_0C6; } - if (actor->timer_0C0 && !sp70->timer_0C0 >= 2) { - sp70->timer_0C0 = actor->timer_0C0; - sp70->timer_0C6 = actor->timer_0C6; + if (this->timer_0C0 && !sp70->timer_0C0 >= 2) { + sp70->timer_0C0 = this->timer_0C0; + sp70->timer_0C6 = this->timer_0C6; } } @@ -5733,69 +5708,69 @@ void Aquas_Actor267_Update(Actor* actor) { Effect_SpawnTimedSfxAtPos(&sp70->obj.pos, NA_SE_EN_WT_SPARK_BEAM); } - Aquas_801A92EC(actor, sp70->obj.pos.x, sp70->obj.pos.y, sp70->obj.pos.z, actor->iwork[13], i); + Aquas_801A92EC(this, sp70->obj.pos.x, sp70->obj.pos.y, sp70->obj.pos.z, this->iwork[13], i); - if ((actor->fwork[21] > 200.0f) && (actor->iwork[17] != 0)) { - Matrix_RotateZ(gCalcMatrix, actor->fwork[20] * M_DTOR, MTXF_NEW); + if ((this->fwork[21] > 200.0f) && (this->iwork[17] != 0)) { + Matrix_RotateZ(gCalcMatrix, this->fwork[20] * M_DTOR, MTXF_NEW); sp80.x = 0.0f; - sp80.y = actor->fwork[21]; + sp80.y = this->fwork[21]; sp80.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp80, &sp74); - sp70->obj.pos.x = actor->obj.pos.x + sp74.x; - sp70->obj.pos.y = actor->obj.pos.y + sp74.y; - sp70->obj.pos.z = actor->obj.pos.z; + sp70->obj.pos.x = this->obj.pos.x + sp74.x; + sp70->obj.pos.y = this->obj.pos.y + sp74.y; + sp70->obj.pos.z = this->obj.pos.z; } } - if ((actor->iwork[13] == sp6C->iwork[13]) && (actor->iwork[15] == 0)) { + if ((this->iwork[13] == sp6C->iwork[13]) && (this->iwork[15] == 0)) { i = 1; - if (!((sp6C->obj.id == OBJ_ACTOR_267) && (sp6C->obj.status == OBJ_ACTIVE))) { - actor->iwork[15] = 1; + if (!((sp6C->obj.id == OBJ_ACTOR_AQ_JELLYFISH) && (sp6C->obj.status == OBJ_ACTIVE))) { + this->iwork[15] = 1; i = 0; } if (i != 0) { - if (!actor->timer_0C0 && sp6C->timer_0C0 >= 2) { - actor->timer_0C0 = sp6C->timer_0C0; - actor->timer_0C6 = sp6C->timer_0C6; + if (!this->timer_0C0 && sp6C->timer_0C0 >= 2) { + this->timer_0C0 = sp6C->timer_0C0; + this->timer_0C6 = sp6C->timer_0C6; } - if (actor->timer_0C0 && !sp6C->timer_0C0 >= 2) { - sp6C->timer_0C0 = actor->timer_0C0; - sp6C->timer_0C6 = actor->timer_0C6; + if (this->timer_0C0 && !sp6C->timer_0C0 >= 2) { + sp6C->timer_0C0 = this->timer_0C0; + sp6C->timer_0C6 = this->timer_0C6; } } if (((gGameFrameCount % 4) == 0)) { Effect_SpawnTimedSfxAtPos(&sp6C->obj.pos, NA_SE_EN_WT_SPARK_BEAM); } - Aquas_801A92EC(actor, sp6C->obj.pos.x, sp6C->obj.pos.y, sp6C->obj.pos.z, actor->iwork[13] + 1, i); + Aquas_801A92EC(this, sp6C->obj.pos.x, sp6C->obj.pos.y, sp6C->obj.pos.z, this->iwork[13] + 1, i); - if ((actor->fwork[21] > 200.0f) && (actor->iwork[17] != 0)) { - Matrix_RotateZ(gCalcMatrix, (actor->fwork[20] + 90.0f) * M_DTOR, MTXF_NEW); + if ((this->fwork[21] > 200.0f) && (this->iwork[17] != 0)) { + Matrix_RotateZ(gCalcMatrix, (this->fwork[20] + 90.0f) * M_DTOR, MTXF_NEW); sp80.x = 0.0f; - sp80.y = actor->fwork[21]; + sp80.y = this->fwork[21]; sp80.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp80, &sp74); - sp6C->obj.pos.x = actor->obj.pos.x + sp74.x; - sp6C->obj.pos.y = actor->obj.pos.y + sp74.y; - sp6C->obj.pos.z = actor->obj.pos.z; + sp6C->obj.pos.x = this->obj.pos.x + sp74.x; + sp6C->obj.pos.y = this->obj.pos.y + sp74.y; + sp6C->obj.pos.z = this->obj.pos.z; } } - } else if (actor->iwork[2] == 1) { - sp70 = &gActors[actor->iwork[1] - 1]; - if ((actor->iwork[13] == sp70->iwork[13]) && (actor->iwork[16] == 0)) { + } else if (this->iwork[2] == 1) { + sp70 = &gActors[this->iwork[1] - 1]; + if ((this->iwork[13] == sp70->iwork[13]) && (this->iwork[16] == 0)) { i = 1; - if (!((sp70->obj.id == OBJ_ACTOR_267) && (sp70->obj.status == OBJ_ACTIVE))) { - actor->iwork[16] = 1; + if (!((sp70->obj.id == OBJ_ACTOR_AQ_JELLYFISH) && (sp70->obj.status == OBJ_ACTIVE))) { + this->iwork[16] = 1; i = 0; } if (i != 0) { - if (!actor->timer_0C0 && sp70->timer_0C0 >= 2) { - actor->timer_0C0 = sp70->timer_0C0; - actor->timer_0C6 = sp70->timer_0C6; + if (!this->timer_0C0 && sp70->timer_0C0 >= 2) { + this->timer_0C0 = sp70->timer_0C0; + this->timer_0C6 = sp70->timer_0C6; } - if (actor->timer_0C0 && !sp70->timer_0C0 >= 2) { - sp70->timer_0C0 = actor->timer_0C0; - sp70->timer_0C6 = actor->timer_0C6; + if (this->timer_0C0 && !sp70->timer_0C0 >= 2) { + sp70->timer_0C0 = this->timer_0C0; + sp70->timer_0C6 = this->timer_0C6; } } @@ -5803,138 +5778,138 @@ void Aquas_Actor267_Update(Actor* actor) { Effect_SpawnTimedSfxAtPos(&sp70->obj.pos, NA_SE_EN_WT_SPARK_BEAM); } - Aquas_801A92EC(actor, sp70->obj.pos.x, sp70->obj.pos.y, sp70->obj.pos.z, actor->iwork[13] + 2, i); + Aquas_801A92EC(this, sp70->obj.pos.x, sp70->obj.pos.y, sp70->obj.pos.z, this->iwork[13] + 2, i); } } - if (((gGameFrameCount % 4) == 0)) { - func_effect_8007C120(actor->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.y + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(50.0f), actor->vel.x, actor->vel.y, actor->vel.z, - 0.05f + RAND_FLOAT(0.03f), 10); + if ((gGameFrameCount % 4) == 0) { + Effect_Effect390_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(50.0f), this->vel.x, this->vel.y, this->vel.z, + 0.05f + RAND_FLOAT(0.03f), 10); } - if (actor->timer_0BE == 0) { + if (this->timer_0BE == 0) { D_i3_801C41B8[18] = 255.0f; D_i3_801C41B8[19] = 255.0f; D_i3_801C41B8[20] = 255.0f; - actor->timer_0BE = 10; + this->timer_0BE = 10; } - if (actor->iwork[3] == 0) { - Math_SmoothStepToF(&actor->fwork[1], 30.0f, 0.1f, 1.0f, 0.00001f); + if (this->iwork[3] == 0) { + Math_SmoothStepToF(&this->fwork[1], 30.0f, 0.1f, 1.0f, 0.00001f); } else { - Math_SmoothStepToF(&actor->fwork[1], 100.0f, 0.1f, 1.0f, 0.00001f); + Math_SmoothStepToF(&this->fwork[1], 100.0f, 0.1f, 1.0f, 0.00001f); } - if (actor->timer_0BC == 0) { - actor->timer_0BC = 100; - actor->iwork[3]++; - actor->iwork[3] &= 1; + if (this->timer_0BC == 0) { + this->timer_0BC = 100; + this->iwork[3]++; + this->iwork[3] &= 1; } - actor->animFrame += 2; - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_6023780)) { - actor->animFrame = 0; + this->animFrame += 2; + if (this->animFrame >= Animation_GetFrameCount(&aAqJellyfishAnim)) { + this->animFrame = 0; } - if (actor->iwork[4] < 30) { - actor->fwork[2] += D_i3_801C0344[0].x; - actor->fwork[3] += D_i3_801C0344[0].y; - actor->fwork[4] += D_i3_801C0344[0].z; - if (actor->fwork[2] < 0.0f) { - actor->fwork[2] = actor->fwork[3] = actor->fwork[4] = 0.0f; + if (this->iwork[4] < 30) { + this->fwork[2] += D_i3_801C0344[0].x; + this->fwork[3] += D_i3_801C0344[0].y; + this->fwork[4] += D_i3_801C0344[0].z; + if (this->fwork[2] < 0.0f) { + this->fwork[2] = this->fwork[3] = this->fwork[4] = 0.0f; } } else { - actor->fwork[2] += D_i3_801C0344[1].x; - actor->fwork[3] += D_i3_801C0344[1].y; - actor->fwork[4] += D_i3_801C0344[1].z; - if (actor->fwork[3] >= 160.0f) { - actor->fwork[2] = 213.0f; - actor->fwork[3] = 160.0f; - actor->fwork[4] = 255.0f; + this->fwork[2] += D_i3_801C0344[1].x; + this->fwork[3] += D_i3_801C0344[1].y; + this->fwork[4] += D_i3_801C0344[1].z; + if (this->fwork[3] >= 160.0f) { + this->fwork[2] = 213.0f; + this->fwork[3] = 160.0f; + this->fwork[4] = 255.0f; } } for (i = 0; i < 2; i++) { - if (actor->iwork[i + 5] < 30) { - actor->fwork[i + 5] += D_i3_801C0344[2].x; - actor->fwork[i + 7] += D_i3_801C0344[2].y; - actor->fwork[i + 9] += D_i3_801C0344[2].z; - if (actor->fwork[i + 7] < 0.0f) { - actor->fwork[i + 5] = actor->fwork[i + 7] = actor->fwork[i + 9] = 0.0f; + if (this->iwork[i + 5] < 30) { + this->fwork[i + 5] += D_i3_801C0344[2].x; + this->fwork[i + 7] += D_i3_801C0344[2].y; + this->fwork[i + 9] += D_i3_801C0344[2].z; + if (this->fwork[i + 7] < 0.0f) { + this->fwork[i + 5] = this->fwork[i + 7] = this->fwork[i + 9] = 0.0f; } } else { - actor->fwork[i + 5] += D_i3_801C0344[3].x; - actor->fwork[i + 7] += D_i3_801C0344[3].y; - actor->fwork[i + 9] += D_i3_801C0344[3].z; - if (actor->fwork[i + 7] >= 255.0f) { - actor->fwork[i + 5] = 197.0f; - actor->fwork[i + 7] = 255.0f; - actor->fwork[i + 9] = 231.0f; + this->fwork[i + 5] += D_i3_801C0344[3].x; + this->fwork[i + 7] += D_i3_801C0344[3].y; + this->fwork[i + 9] += D_i3_801C0344[3].z; + if (this->fwork[i + 7] >= 255.0f) { + this->fwork[i + 5] = 197.0f; + this->fwork[i + 7] = 255.0f; + this->fwork[i + 9] = 231.0f; } } } for (i = 0; i < 3; i++) { - it0 = i * 12 + 3 * actor->iwork[10 + i]; - Math_SmoothStepToF(&actor->fwork[11 + i], D_i3_801C0374[it0 + 0], 0.1f, 5.0f, 0.000001f); - Math_SmoothStepToF(&actor->fwork[14 + i], D_i3_801C0374[it0 + 1], 0.1f, 5.0f, 0.000001f); - Math_SmoothStepToF(&actor->fwork[17 + i], D_i3_801C0374[it0 + 2], 0.1f, 5.0f, 0.000001f); + it0 = i * 12 + 3 * this->iwork[10 + i]; + Math_SmoothStepToF(&this->fwork[11 + i], D_i3_801C0374[it0 + 0], 0.1f, 5.0f, 0.000001f); + Math_SmoothStepToF(&this->fwork[14 + i], D_i3_801C0374[it0 + 1], 0.1f, 5.0f, 0.000001f); + Math_SmoothStepToF(&this->fwork[17 + i], D_i3_801C0374[it0 + 2], 0.1f, 5.0f, 0.000001f); - it0 = 8 * i + actor->iwork[10 + i]; - if (actor->iwork[7 + i] == D_i3_801C0440[it0]) { - actor->iwork[10 + i]++; + it0 = 8 * i + this->iwork[10 + i]; + if (this->iwork[7 + i] == D_i3_801C0440[it0]) { + this->iwork[10 + i]++; } } - actor->iwork[4]++; - if (actor->iwork[4] >= 60) { - actor->iwork[4] = 0; + this->iwork[4]++; + if (this->iwork[4] >= 60) { + this->iwork[4] = 0; } - actor->iwork[5]++; - if (actor->iwork[5] >= 60) { - actor->iwork[5] = 0; + this->iwork[5]++; + if (this->iwork[5] >= 60) { + this->iwork[5] = 0; } - actor->iwork[6]++; - if (actor->iwork[6] >= 60) { - actor->iwork[6] = 0; + this->iwork[6]++; + if (this->iwork[6] >= 60) { + this->iwork[6] = 0; } - actor->iwork[7]++; - if (actor->iwork[7] >= 120) { - actor->iwork[7] = actor->iwork[10] = 0; + this->iwork[7]++; + if (this->iwork[7] >= 120) { + this->iwork[7] = this->iwork[10] = 0; } - actor->iwork[8]++; - if (actor->iwork[8] >= 60) { - actor->iwork[8] = actor->iwork[11] = 0; + this->iwork[8]++; + if (this->iwork[8] >= 60) { + this->iwork[8] = this->iwork[11] = 0; } - actor->iwork[9]++; - if (actor->iwork[9] >= 120) { - actor->iwork[9] = actor->iwork[12] = 0; + this->iwork[9]++; + if (this->iwork[9] >= 120) { + this->iwork[9] = this->iwork[12] = 0; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, actor->sfxSource, 4); - if (actor->damage != 31) { - actor->timer_0C0 = actor->timer_0C6 = 40; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_AQ_ZAKO_DAMAGE, this->sfxSource, 4); + if (this->damage != 31) { + this->timer_0C0 = this->timer_0C6 = 40; } else { - actor->timer_0C0 = actor->timer_0C6 = 80; + this->timer_0C0 = this->timer_0C6 = 80; } } - if (actor->iwork[20] != 0) { - actor->iwork[20]--; + if (this->iwork[20] != 0) { + this->iwork[20]--; } - Aquas_801A96DC(actor); + Aquas_801A96DC(this); } -bool Aquas_801BC530(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Aquas_AqJellyfish_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { Vec3f sp64 = { 0.0f, 0.0f, 0.0f }; Vec3f sp58; f32 sp54 = 0.0f; @@ -6007,15 +5982,16 @@ bool Aquas_801BC530(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th } } -void Aquas_801BC91C(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqJellyfish_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + /* Unimplemented */ } -// OBJ_ACTOR_267 draw -void Aquas_Actor267_Draw(Actor* actor) { - Vec3f sp28[30]; +void Aquas_AqJellyfish_Draw(AqJellyfish* this) { + Vec3f frameTable[30]; - Animation_GetFrameData(&D_AQ_6023780, actor->animFrame, sp28); - Animation_DrawSkeleton(3, D_AQ_602390C, sp28, Aquas_801BC530, Aquas_801BC91C, actor, gCalcMatrix); + Animation_GetFrameData(&aAqJellyfishAnim, this->animFrame, frameTable); + Animation_DrawSkeleton(3, aAqJellyfishSkel, frameTable, Aquas_AqJellyfish_OverrideLimbDraw, + Aquas_AqJellyfish_PostLimbDraw, this, gCalcMatrix); } s32 D_i3_801C04C4[9] = { @@ -6023,55 +5999,54 @@ s32 D_i3_801C04C4[9] = { DROP_GOLD_RING_3, DROP_GOLD_RING_4, DROP_NONE, DROP_1UP, }; -// OBJ_ACTOR_269 action -void Aquas_Actor269_Update(Actor* actor) { +void Aquas_AqStoneColumn_Update(AqStoneColumn* this) { s32 j; s32 i; Vec3f spA4; Vec3f sp98; - Actor* actor269; + AqStoneColumn* stoneColumn; - switch (actor->state) { + switch (this->state) { case 0: - actor->vwork[0].x = actor->obj.pos.x; - actor->vwork[0].y = actor->obj.pos.y; - actor->vwork[0].z = actor->obj.pos.z; + this->vwork[0].x = this->obj.pos.x; + this->vwork[0].y = this->obj.pos.y; + this->vwork[0].z = this->obj.pos.z; - actor->vwork[1].x = actor->obj.pos.x; - actor->vwork[1].y = actor->obj.pos.y; - actor->vwork[1].z = actor->obj.pos.z; + this->vwork[1].x = this->obj.pos.x; + this->vwork[1].y = this->obj.pos.y; + this->vwork[1].z = this->obj.pos.z; - actor->vwork[4].x = actor->obj.pos.x; - actor->vwork[4].y = actor->obj.pos.y; - actor->vwork[4].z = actor->obj.pos.z; + this->vwork[4].x = this->obj.pos.x; + this->vwork[4].y = this->obj.pos.y; + this->vwork[4].z = this->obj.pos.z; - actor->iwork[1] = actor->obj.rot.z; - if (actor->iwork[1] >= 9) { - actor->iwork[1] = 7; + this->iwork[1] = this->obj.rot.z; + if (this->iwork[1] >= 9) { + this->iwork[1] = 7; } - if (actor->obj.rot.y != 0) { - actor->health = 7650; - actor->iwork[3] = 1; - actor->state = 2; + if (this->obj.rot.y != 0) { + this->health = 7650; + this->iwork[3] = 1; + this->state = 2; } else { - actor->health = 10; - actor->info.drawType = 2; - actor->info.bonus = 1; - actor->state++; + this->health = 10; + this->info.drawType = 2; + this->info.bonus = 1; + this->state++; } - actor->obj.rot.y = actor->obj.rot.z = 0.0f; + this->obj.rot.y = this->obj.rot.z = 0.0f; break; case 1: - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if ((actor->health != 0) && (actor->iwork[3] == 0) && (actor->damage == 31)) { - actor->health -= actor->damage; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 4); - if (actor->health <= 0) { - actor->health = 0; - actor->state = 3; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if ((this->health != 0) && (this->iwork[3] == 0) && (this->damage == 31)) { + this->health -= this->damage; + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); + if (this->health <= 0) { + this->health = 0; + this->state = 3; } } } @@ -6089,31 +6064,31 @@ void Aquas_Actor269_Update(Actor* actor) { } for (i = 0; i < 2; i++) { - for (j = 0, actor269 = gActors; j < ARRAY_COUNT(gActors); j++, actor269++) { - if (actor269->obj.status == OBJ_FREE) { - Actor_Initialize(actor269); - actor269->obj.status = OBJ_INIT; - actor269->obj.id = OBJ_ACTOR_269; - actor269->obj.pos.x = actor->vwork[i].x; - actor269->obj.pos.y = actor->vwork[i].y; - actor269->obj.pos.z = actor->vwork[i].z; - actor269->iwork[0] = i + 1; + for (j = 0, stoneColumn = &gActors[0]; j < ARRAY_COUNT(gActors); j++, stoneColumn++) { + if (stoneColumn->obj.status == OBJ_FREE) { + Actor_Initialize(stoneColumn); + stoneColumn->obj.status = OBJ_INIT; + stoneColumn->obj.id = OBJ_ACTOR_AQ_STONE_COLUMN; + stoneColumn->obj.pos.x = this->vwork[i].x; + stoneColumn->obj.pos.y = this->vwork[i].y; + stoneColumn->obj.pos.z = this->vwork[i].z; + stoneColumn->iwork[0] = i + 1; - Object_SetInfo(&actor269->info, actor269->obj.id); + Object_SetInfo(&stoneColumn->info, stoneColumn->obj.id); if (i == 0) { - actor269->fwork[0] = RAND_FLOAT(360.0f); - Matrix_RotateY(gCalcMatrix, actor269->fwork[0] * M_DTOR, MTXF_NEW); + stoneColumn->fwork[0] = RAND_FLOAT(360.0f); + Matrix_RotateY(gCalcMatrix, stoneColumn->fwork[0] * M_DTOR, MTXF_NEW); spA4.x = spA4.y = spA4.z = 5.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &spA4, &sp98); - actor269->vel.x = sp98.x; - actor269->vel.z = sp98.z; - actor269->gravity = 0.4f; - actor269->state = 5; - actor269->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_6030D3C); + stoneColumn->vel.x = sp98.x; + stoneColumn->vel.z = sp98.z; + stoneColumn->gravity = 0.4f; + stoneColumn->state = 5; + stoneColumn->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_6030D3C); } else { - actor269->state = 2; - actor269->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_6030D58); + stoneColumn->state = 2; + stoneColumn->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_6030D58); } break; } @@ -6121,62 +6096,62 @@ void Aquas_Actor269_Update(Actor* actor) { } for (j = 0; j < 10; j++) { - Aquas_SpawnDebris(&actor->vwork[4], &actor->vwork[5], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), + Aquas_SpawnDebris(&this->vwork[4], &this->vwork[5], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(5.0f), RAND_FLOAT_CENTERED(10.0f), 58, 0.2f + RAND_FLOAT(1.0f), 200, 0); - func_effect_8007BC7C(actor->vwork[4].x, actor->vwork[4].y, actor->vwork[4].z + 50.0f, 6.0f); + Effect_Effect362_Spawn(this->vwork[4].x, this->vwork[4].y, this->vwork[4].z + 50.0f, 6.0f); } func_effect_800815DC(); - func_effect_8007D0E0(actor->vwork[4].x, actor->vwork[4].y, actor->vwork[4].z, 10.0f); + func_effect_8007D0E0(this->vwork[4].x, this->vwork[4].y, this->vwork[4].z, 10.0f); for (j = 0; j < 20; j++) { - Aquas_801AC8A8(actor->vwork[4].x + RAND_FLOAT_CENTERED(100.0f), - actor->vwork[4].y + RAND_FLOAT_CENTERED(200.0f), - actor->vwork[4].z + 100.0f + RAND_FLOAT_CENTERED(200.0f), 6.0f, 2); + Aquas_Effect366_Spawn(this->vwork[4].x + RAND_FLOAT_CENTERED(100.0f), + this->vwork[4].y + RAND_FLOAT_CENTERED(200.0f), + this->vwork[4].z + 100.0f + RAND_FLOAT_CENTERED(200.0f), 6.0f, 2); } func_effect_800815DC(); - func_effect_8007D0E0(actor->vwork[4].x, actor->vwork[4].y, actor->vwork[4].z + 150.0f, 10.0f); - actor->timer_0BC = 4; - actor->state = 4; + func_effect_8007D0E0(this->vwork[4].x, this->vwork[4].y, this->vwork[4].z + 150.0f, 10.0f); + this->timer_0BC = 4; + this->state = 4; break; case 4: - if (actor->timer_0BC == 0) { - actor->obj.pos.x = actor->vwork[4].x; - actor->obj.pos.y = actor->vwork[4].y; - actor->obj.pos.z = actor->vwork[4].z; - actor->itemDrop = D_i3_801C04C4[actor->iwork[1]]; - Actor_Despawn(actor); - Object_Kill(&actor->obj, actor->sfxSource); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_OB_AQ_PILLAR_BROKE); + if (this->timer_0BC == 0) { + this->obj.pos.x = this->vwork[4].x; + this->obj.pos.y = this->vwork[4].y; + this->obj.pos.z = this->vwork[4].z; + this->itemDrop = D_i3_801C04C4[this->iwork[1]]; + Actor_Despawn(this); + Object_Kill(&this->obj, this->sfxSource); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_AQ_PILLAR_BROKE); } break; case 5: - Math_SmoothStepToAngle(&actor->obj.rot.y, actor->fwork[0], 0.1f, 10.0f, 0.0001f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 90.0f, 0.1f, 1.0f, 0.0001f); - if (((gGameFrameCount % 2) == 0) && (actor->iwork[2] == 0)) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f), - actor->obj.pos.y + RAND_RANGE(-45.0f, 105.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(200.0f), 6.0f, 2); + Math_SmoothStepToAngle(&this->obj.rot.y, this->fwork[0], 0.1f, 10.0f, 0.0001f); + Math_SmoothStepToAngle(&this->obj.rot.x, 90.0f, 0.1f, 1.0f, 0.0001f); + if (((gGameFrameCount % 2) == 0) && (this->iwork[2] == 0)) { + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f), + this->obj.pos.y + RAND_RANGE(-45.0f, 105.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(200.0f), 6.0f, 2); } - if ((actor->obj.pos.y < (gGroundHeight + 30.0f)) && (actor->iwork[2] == 0)) { - actor->iwork[2] = 1; - actor->vel.x = actor->vel.y = actor->vel.z = actor->gravity = 0.0f; - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_OB_AQ_ROCK_BOUND); + if ((this->obj.pos.y < (gGroundHeight + 30.0f)) && (this->iwork[2] == 0)) { + this->iwork[2] = 1; + this->vel.x = this->vel.y = this->vel.z = this->gravity = 0.0f; + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_AQ_ROCK_BOUND); for (j = 0; j < 6; j++) { - func_effect_8007B8F8(actor->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.y + RAND_RANGE(-9.0f, 21.0f), - actor->obj.pos.z + RAND_FLOAT_CENTERED(200.0f), 20.0f); + Effect_Effect364_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.y + RAND_RANGE(-9.0f, 21.0f), + this->obj.pos.z + RAND_FLOAT_CENTERED(200.0f), 20.0f); } } break; } } -void Aquas_801BD17C(s32 limbIndex, Vec3f* rot, void* thisx) { +void Aquas_AqStoneColumn_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp2C = { 0.0f, 0.0f, 0.0f }; Actor* this = (Actor*) thisx; @@ -6200,18 +6175,18 @@ void Aquas_801BD17C(s32 limbIndex, Vec3f* rot, void* thisx) { } } -// OBJ_ACTOR_269 draw -void Aquas_Actor269_Draw(Actor* actor) { - Vec3f sp40[30]; +void Aquas_AqStoneColumn_Draw(AqStoneColumn* this) { + Vec3f frameTable[30]; - if (actor->state != 0) { + if (this->state != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_55); - switch (actor->iwork[0]) { + switch (this->iwork[0]) { case 0: - if (actor->state != 0) { - if ((actor->iwork[3] == 0) && (actor->info.drawType == 2)) { - Animation_GetFrameData(&D_AQ_6014438, 0, sp40); - Animation_DrawSkeleton(3, D_AQ_6014504, sp40, NULL, Aquas_801BD17C, actor, gCalcMatrix); + if (this->state != 0) { + if ((this->iwork[3] == 0) && (this->info.drawType == 2)) { + Animation_GetFrameData(&aAqStoneColumnAnim, 0, frameTable); + Animation_DrawSkeleton(3, aAqStoneColumnSkel, frameTable, NULL, + Aquas_AqStoneColumn_PostLimbDraw, this, gCalcMatrix); } else { gSPDisplayList(gMasterDisp++, D_AQ_6014520); } @@ -6227,210 +6202,210 @@ void Aquas_Actor269_Draw(Actor* actor) { } } -void Aquas_801BD3B0(Actor* actor, f32 x, f32 y, f32 z) { +void Aquas_801BD3B0(AqFishGroup* this, f32 x, f32 y, f32 z) { f32 temp; - Vec3f sp38; - Vec3f sp2C; + Vec3f src; + Vec3f dest; - Math_SmoothStepToAngle(&actor->obj.rot.y, actor->fwork[6], 0.1f, 100.0f, 0.00001f); - Math_SmoothStepToAngle(&actor->obj.rot.x, actor->fwork[7], 0.1f, 100.0f, 0.00001f); + Math_SmoothStepToAngle(&this->obj.rot.y, this->fwork[6], 0.1f, 100.0f, 0.00001f); + Math_SmoothStepToAngle(&this->obj.rot.x, this->fwork[7], 0.1f, 100.0f, 0.00001f); - if (((gGameFrameCount % 4) == 0)) { - actor->fwork[6] = Math_RadToDeg(Math_Atan2F(x, z)); + if ((gGameFrameCount % 4) == 0) { + this->fwork[6] = Math_RadToDeg(Math_Atan2F(x, z)); temp = sqrtf(SQ(x) + SQ(z)); - actor->fwork[7] = Math_RadToDeg(-Math_Atan2F(y, temp)); + this->fwork[7] = Math_RadToDeg(-Math_Atan2F(y, temp)); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Math_SmoothStepToF(&actor->fwork[4], 5.0f, 0.1f, 10.0f, 0); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Math_SmoothStepToF(&this->fwork[4], 5.0f, 0.1f, 10.0f, 0); - sp38.z = actor->fwork[4]; - if (actor->iwork[2] != 0) { - sp38.z = 50.0f; + src.z = this->fwork[4]; + if (this->iwork[2] != 0) { + src.z = 50.0f; } - sp38.x = sp38.y = 0.0f; + src.x = src.y = 0.0f; - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp38, &sp2C); + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - actor->vel.x = sp2C.x; - actor->vel.y = sp2C.y; - actor->vel.z = sp2C.z; + this->vel.x = dest.x; + this->vel.y = dest.y; + this->vel.z = dest.z; } } f32 D_i3_801C04F4[4] = { 700.0f, 300.0f, 600.0f, 400.0f }; -// OBJ_ACTOR_268 action -void Aquas_Actor268_Update(Actor* actor) { - s32 sp6C; - s32 sp68; - s32 sp64; + +void Aquas_AqFishGroup_Update(AqFishGroup* this) { + s32 j; + s32 i; + s32 fishIndex; f32 var_fs0; f32 sp5C; f32 sp58; f32 sp54; - Actor* actor268; + Actor* fishGroup; - if (actor->state == 2) { - var_fs0 = (actor->iwork[3] != 0) ? 2800.0f : 9000.0f; - if (fabsf(actor->fwork[5] - actor->obj.pos.z) >= var_fs0) { - actor->state = 3; - if (actor->iwork[0] == 0) { - AUDIO_PLAY_SFX(NA_SE_OB_FISH_AWAY, actor->sfxSource, 4); + if (this->state == 2) { + var_fs0 = (this->iwork[3] != 0) ? 2800.0f : 9000.0f; + if (fabsf(this->fwork[5] - this->obj.pos.z) >= var_fs0) { + this->state = 3; + if (this->iwork[0] == 0) { + AUDIO_PLAY_SFX(NA_SE_OB_FISH_AWAY, this->sfxSource, 4); } } else { // needed to match } } - switch (actor->state) { + switch (this->state) { case 0: - if (actor->obj.rot.z != 0) { - actor->iwork[3] = 1; - actor->obj.rot.z = 0.0f; + if (this->obj.rot.z != 0) { + this->iwork[3] = 1; + this->obj.rot.z = 0.0f; } - actor->state = 1; - actor->fwork[5] = actor->obj.pos.z; + this->state = 1; + this->fwork[5] = this->obj.pos.z; break; case 1: - sp64 = actor->index; - for (sp68 = 0; sp68 < 15; sp68++) { - for (sp6C = 0, actor268 = gActors; sp6C < ARRAY_COUNT(gActors); sp6C++, actor268++) { - if (actor268->obj.status == OBJ_FREE) { - Actor_Initialize(actor268); - actor268->obj.status = OBJ_INIT; - actor268->obj.id = OBJ_ACTOR_268; - actor268->iwork[4] = sp64; - actor268->iwork[0] = sp68 + 1; - actor268->iwork[3] = actor->iwork[3]; + fishIndex = this->index; + for (i = 0; i < 15; i++) { + for (j = 0, fishGroup = &gActors[0]; j < ARRAY_COUNT(gActors); j++, fishGroup++) { + if (fishGroup->obj.status == OBJ_FREE) { + Actor_Initialize(fishGroup); + fishGroup->obj.status = OBJ_INIT; + fishGroup->obj.id = OBJ_ACTOR_AQ_FISHGROUP; + fishGroup->iwork[4] = fishIndex; + fishGroup->iwork[0] = i + 1; + fishGroup->iwork[3] = this->iwork[3]; - sp64 = sp6C; + fishIndex = j; var_fs0 = 100.0f; if (Rand_ZeroOne() < 0.5f) { var_fs0 = -100.0f; } - actor268->obj.pos.x = actor->obj.pos.x + ((s32) (sp68 % 8U) * var_fs0) + RAND_FLOAT(50.0f); - actor268->obj.pos.y = - actor->obj.pos.y + ((s32) (sp68 % 8U) * (var_fs0 / 2.0f)) + RAND_FLOAT(30.0f); - actor268->obj.pos.z = actor->obj.pos.z + (sp68 * 20.0f) + RAND_FLOAT(-18.0f); - actor268->animFrame = RAND_FLOAT(20.0f); - actor268->fwork[5] = actor->fwork[5]; - actor268->state = 2; + fishGroup->obj.pos.x = this->obj.pos.x + ((s32) (i % 8U) * var_fs0) + RAND_FLOAT(50.0f); + fishGroup->obj.pos.y = + this->obj.pos.y + ((s32) (i % 8U) * (var_fs0 / 2.0f)) + RAND_FLOAT(30.0f); + fishGroup->obj.pos.z = this->obj.pos.z + (i * 20.0f) + RAND_FLOAT(-18.0f); + fishGroup->animFrame = RAND_FLOAT(20.0f); + fishGroup->fwork[5] = this->fwork[5]; + fishGroup->state = 2; - Object_SetInfo(&actor268->info, actor268->obj.id); + Object_SetInfo(&fishGroup->info, fishGroup->obj.id); break; } } } - actor->state = 2; + this->state = 2; break; case 2: - if (actor->obj.pos.y < gGroundHeight + 30.0f) { - actor->obj.pos.y = gGroundHeight + 30.0f; + if (this->obj.pos.y < gGroundHeight + 30.0f) { + this->obj.pos.y = gGroundHeight + 30.0f; } - if ((actor->iwork[2] != 0) || (actor->timer_0BE != 0)) { - actor->timer_0BC = 0; + if ((this->iwork[2] != 0) || (this->timer_0BE != 0)) { + this->timer_0BC = 0; } else { - Math_SmoothStepToF(&actor->fwork[3], D_i3_801C04F4[actor->iwork[1]], 0.1f, 30.0f, 0.0001f); - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].cam.eye.z - gPathProgress - actor->fwork[3], 0.1f, - 30.0f, 0.00001f); + Math_SmoothStepToF(&this->fwork[3], D_i3_801C04F4[this->iwork[1]], 0.1f, 30.0f, 0.0001f); + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].cam.eye.z - gPathProgress - this->fwork[3], 0.1f, 30.0f, + 0.00001f); } - if ((actor->timer_0BC == 0) && (actor->iwork[2] == 0) && (actor->timer_0BE == 0)) { - actor->timer_0BC = 60; - actor->fwork[1] = RAND_FLOAT_CENTERED(300.0f); - actor->fwork[2] = 50.0f + RAND_FLOAT_CENTERED(100.0f); - if (actor->fwork[2] < gGroundHeight + 30.0f) { - actor->fwork[2] = gGroundHeight + 30.0f; + if ((this->timer_0BC == 0) && (this->iwork[2] == 0) && (this->timer_0BE == 0)) { + this->timer_0BC = 60; + this->fwork[1] = RAND_FLOAT_CENTERED(300.0f); + this->fwork[2] = 50.0f + RAND_FLOAT_CENTERED(100.0f); + if (this->fwork[2] < gGroundHeight + 30.0f) { + this->fwork[2] = gGroundHeight + 30.0f; } - actor->iwork[1]++; - actor->iwork[1] &= 3; + this->iwork[1]++; + this->iwork[1] &= 3; } - sp5C = gPlayer[0].pos.x - actor->obj.pos.x; - sp58 = gPlayer[0].pos.y - actor->obj.pos.y; - sp54 = gPlayer[0].trueZpos - actor->obj.pos.z; + sp5C = gPlayer[0].pos.x - this->obj.pos.x; + sp58 = gPlayer[0].pos.y - this->obj.pos.y; + sp54 = gPlayer[0].trueZpos - this->obj.pos.z; - if (actor->timer_0BE == 0) { - actor->iwork[2] = 0; - if (actor->iwork[0] == 0) { + if (this->timer_0BE == 0) { + this->iwork[2] = 0; + if (this->iwork[0] == 0) { if (D_i3_801C4190[5] == 0) { - sp5C = gPlayer[0].pos.x + actor->fwork[1] - actor->obj.pos.x; - sp58 = gPlayer[0].pos.y - 100.0f + actor->fwork[2] - actor->obj.pos.y; - sp54 = gPlayer[0].trueZpos - actor->fwork[3] - actor->obj.pos.z; + sp5C = gPlayer[0].pos.x + this->fwork[1] - this->obj.pos.x; + sp58 = gPlayer[0].pos.y - 100.0f + this->fwork[2] - this->obj.pos.y; + sp54 = gPlayer[0].trueZpos - this->fwork[3] - this->obj.pos.z; } else if ((D_i3_801C41B8[21] != 0) && (D_i3_801C41B8[22] != 0) && (D_i3_801C41B8[23] != 0)) { - sp5C = D_i3_801C41B8[21] - actor->obj.pos.x; - sp58 = D_i3_801C41B8[22] - actor->obj.pos.y; - sp54 = D_i3_801C41B8[23] - actor->obj.pos.z; - actor->iwork[2] = 1; + sp5C = D_i3_801C41B8[21] - this->obj.pos.x; + sp58 = D_i3_801C41B8[22] - this->obj.pos.y; + sp54 = D_i3_801C41B8[23] - this->obj.pos.z; + this->iwork[2] = 1; } } else if (D_i3_801C4190[5] == 0) { - actor268 = &gActors[actor->iwork[4]]; - if ((actor->iwork[0] - 1 == actor268->iwork[0]) && (actor268->obj.status != OBJ_FREE) && - (actor268->obj.id == OBJ_ACTOR_268)) { - sp5C = actor268->obj.pos.x + (actor->fwork[1] / 2.0f) - actor->obj.pos.x; - sp58 = actor268->obj.pos.y + (actor->fwork[2] / 2.0f) - actor->obj.pos.y; - sp54 = actor268->obj.pos.z - actor->obj.pos.z; + fishGroup = &gActors[this->iwork[4]]; + if ((this->iwork[0] - 1 == fishGroup->iwork[0]) && (fishGroup->obj.status != OBJ_FREE) && + (fishGroup->obj.id == OBJ_ACTOR_AQ_FISHGROUP)) { + sp5C = fishGroup->obj.pos.x + (this->fwork[1] / 2.0f) - this->obj.pos.x; + sp58 = fishGroup->obj.pos.y + (this->fwork[2] / 2.0f) - this->obj.pos.y; + sp54 = fishGroup->obj.pos.z - this->obj.pos.z; } else { - actor->iwork[0]--; - sp5C = gPlayer[0].pos.x + actor->fwork[1] - actor->obj.pos.x; - sp58 = gPlayer[0].pos.y + actor->fwork[2] - actor->obj.pos.y; - sp54 = gPlayer[0].trueZpos - actor->fwork[3] - actor->obj.pos.z; - if (actor->iwork[0] < 0) { - actor->iwork[0] = 0; + this->iwork[0]--; + sp5C = gPlayer[0].pos.x + this->fwork[1] - this->obj.pos.x; + sp58 = gPlayer[0].pos.y + this->fwork[2] - this->obj.pos.y; + sp54 = gPlayer[0].trueZpos - this->fwork[3] - this->obj.pos.z; + if (this->iwork[0] < 0) { + this->iwork[0] = 0; } } } else if ((D_i3_801C41B8[21] != 0) && (D_i3_801C41B8[22] != 0) && (D_i3_801C41B8[23] != 0)) { - sp68 = actor->iwork[0]; + i = this->iwork[0]; var_fs0 = 50.0f; if (Rand_ZeroOne() < 0.5f) { var_fs0 = -50.0f; } - sp5C = D_i3_801C41B8[21] + ((s32) (sp68 % 8U) * var_fs0) + RAND_FLOAT(50.0f) - actor->obj.pos.x; - sp58 = D_i3_801C41B8[22] + ((s32) (sp68 % 8U) * (var_fs0 / 2.0f)) + RAND_FLOAT(50.0f) - - actor->obj.pos.y; - sp54 = D_i3_801C41B8[23] + RAND_FLOAT(50.0f) - actor->obj.pos.z; - actor->iwork[2] = 1; + sp5C = D_i3_801C41B8[21] + ((s32) (i % 8U) * var_fs0) + RAND_FLOAT(50.0f) - this->obj.pos.x; + sp58 = + D_i3_801C41B8[22] + ((s32) (i % 8U) * (var_fs0 / 2.0f)) + RAND_FLOAT(50.0f) - this->obj.pos.y; + sp54 = D_i3_801C41B8[23] + RAND_FLOAT(50.0f) - this->obj.pos.z; + this->iwork[2] = 1; } if (1) {} } - if ((actor->iwork[2] != 0) && (D_i3_801C4190[5] == 0)) { - actor->iwork[2] = 0; - actor->fwork[4] = 40.0f; - actor->timer_0BE = 20; + if ((this->iwork[2] != 0) && (D_i3_801C4190[5] == 0)) { + this->iwork[2] = 0; + this->fwork[4] = 40.0f; + this->timer_0BE = 20; } - Aquas_801BD3B0(actor, sp5C, sp58, sp54); + Aquas_801BD3B0(this, sp5C, sp58, sp54); break; case 3: - sp5C = gPlayer[0].pos.x + actor->fwork[1] - actor->obj.pos.x; - sp58 = gPlayer[0].pos.y + actor->fwork[2] - actor->obj.pos.y; - sp54 = gPlayer[0].trueZpos + 10000.0f - actor->fwork[3] - actor->obj.pos.z; + sp5C = gPlayer[0].pos.x + this->fwork[1] - this->obj.pos.x; + sp58 = gPlayer[0].pos.y + this->fwork[2] - this->obj.pos.y; + sp54 = gPlayer[0].trueZpos + 10000.0f - this->fwork[3] - this->obj.pos.z; - actor->iwork[2] = 1; + this->iwork[2] = 1; - Aquas_801BD3B0(actor, sp5C, sp58, sp54); + Aquas_801BD3B0(this, sp5C, sp58, sp54); - if ((gPlayer[0].trueZpos + 1000.0f) < actor->obj.pos.z) { - Object_Kill(&actor->obj, actor->sfxSource); + if ((gPlayer[0].trueZpos + 1000.0f) < this->obj.pos.z) { + Object_Kill(&this->obj, this->sfxSource); } break; } - actor->animFrame++; - if (Animation_GetFrameCount(&D_AQ_60135E0) < actor->animFrame) { - actor->animFrame = 0; + this->animFrame++; + if (Animation_GetFrameCount(&aAqFishGroupAnim) < this->animFrame) { + this->animFrame = 0; } } -bool Aquas_801BDDFC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Aquas_AqFishGroup_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); if ((limbIndex == 1) || (limbIndex == 2) || (limbIndex == 5)) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -6438,13 +6413,14 @@ bool Aquas_801BDDFC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -// OBJ_ACTOR_268 draw -void Aquas_Actor268_Draw(Actor* actor) { - Animation_GetFrameData(&D_AQ_60135E0, actor->animFrame, actor->vwork); - if (actor->iwork[3] == 0) { - Animation_DrawSkeleton(1, D_AQ_60136CC, actor->vwork, Aquas_801BDDFC, NULL, actor, &gIdentityMatrix); +void Aquas_AqFishGroup_Draw(AqFishGroup* this) { + Animation_GetFrameData(&aAqFishGroupAnim, this->animFrame, this->vwork); + if (this->iwork[3] == 0) { + Animation_DrawSkeleton(1, aAqFishGroupSkel1, this->vwork, Aquas_AqFishGroup_OverrideLimbDraw, NULL, this, + &gIdentityMatrix); } else { - Animation_DrawSkeleton(1, D_AQ_60137CC, actor->vwork, Aquas_801BDDFC, NULL, actor, &gIdentityMatrix); + Animation_DrawSkeleton(1, aAqFishGroupSkel2, this->vwork, Aquas_AqFishGroup_OverrideLimbDraw, NULL, this, + &gIdentityMatrix); } } @@ -6481,7 +6457,7 @@ f32 D_i3_801C0828[51] = { }; void Aquas_801BDF14(void) { - Actor* actor = &gActors[1]; + ActorCutscene* actor = &gActors[1]; s32 i; for (i = 0; i < 50; i++, actor++) { @@ -6501,44 +6477,43 @@ void Aquas_801BDF14(void) { } } -void Aquas_801BE034(Actor* actor) { +void Aquas_CsAqFishGroup_Update(AqFishGroup* this) { f32 temp; - if (actor->timer_0BC == 0) { - actor->fwork[0] = 10.0f; - temp = D_i3_801C0828[actor->iwork[2]]; - Math_SmoothStepToAngle(&actor->rot_0F4.y, temp, 1.0f, 100.0f, 0.00001f); + if (this->timer_0BC == 0) { + this->fwork[0] = 10.0f; + temp = D_i3_801C0828[this->iwork[2]]; + Math_SmoothStepToAngle(&this->rot_0F4.y, temp, 1.0f, 100.0f, 0.00001f); } - actor->iwork[0]++; - if (actor->iwork[0] >= Animation_GetFrameCount(&D_AQ_60135E0)) { - actor->iwork[0] = 0; + this->iwork[0]++; + if (this->iwork[0] >= Animation_GetFrameCount(&aAqFishGroupAnim)) { + this->iwork[0] = 0; } if (gPlayer[0].csState >= 5) { - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } } -void Aquas_801BE0F0(Actor* actor) { +void Aquas_801BE0F0(ActorCutscene* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_61); Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, MTXF_APPLY); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 255, 255, 255); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); Matrix_SetGfxMtx(&gMasterDisp); - Animation_GetFrameData(&D_AQ_60135E0, actor->iwork[0], actor->vwork); - Animation_DrawSkeleton(1, D_AQ_60136CC, actor->vwork, NULL, NULL, actor, &gIdentityMatrix); + Animation_GetFrameData(&aAqFishGroupAnim, this->iwork[0], this->vwork); + Animation_DrawSkeleton(1, aAqFishGroupSkel1, this->vwork, NULL, NULL, this, &gIdentityMatrix); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } -// OBJ_SCENERY_126 draw -void Aquas_Scenery126_Draw(Scenery* scenery) { +void Aquas_AqBump2_Draw(AqBump2* this) { Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_AQ_600EEF0); + gSPDisplayList(gMasterDisp++, aAqBump2DL); } -void Aquas_801BE274(Actor* actor, f32 yRot, f32 xRot) { +void Aquas_801BE274(AqOyster* this, f32 yRot, f32 xRot) { Vec3f sp64; Vec3f sp58; Vec3f sp4C = { 0.0f, 0.0f, 0.0f }; @@ -6552,9 +6527,9 @@ void Aquas_801BE274(Actor* actor, f32 yRot, f32 xRot) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp40, &sp64); - sp64.x += actor->obj.pos.x; - sp64.y += actor->obj.pos.y + 8.0f; - sp64.z = actor->obj.pos.z; + sp64.x += this->obj.pos.x; + sp64.y += this->obj.pos.y + 8.0f; + sp64.z = this->obj.pos.z; sp40.x = sp40.y = 0.0f; sp40.z = 80.0f; @@ -6564,8 +6539,7 @@ void Aquas_801BE274(Actor* actor, f32 yRot, f32 xRot) { sp58.z, 1.0f); } -// OBJ_ACTOR_270 action -void Aquas_Actor270_Update(Actor* actor) { +void Aquas_AqOyster_Update(AqOyster* this) { s32 i; f32 sp68; f32 sp64; @@ -6573,58 +6547,58 @@ void Aquas_Actor270_Update(Actor* actor) { f32 sp5C; f32 sp58; - switch (actor->state) { + switch (this->state) { case 0: - actor->health = 30; - actor->fwork[0] = 1.0f; - actor->fwork[1] = 0.9f; - actor->fwork[2] = 0.8f; - actor->state++; + this->health = 30; + this->fwork[0] = 1.0f; + this->fwork[1] = 0.9f; + this->fwork[2] = 0.8f; + this->state++; break; case 1: - if (fabsf(gPlayer[0].pos.z - actor->obj.pos.z) <= 3000.0f) { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_60314E4); - actor->info.damage = 0; - actor->info.bonus = 1; - actor->timer_0BC = 40.0f + RAND_FLOAT(30.0f); - actor->state++; + if (fabsf(gPlayer[0].pos.z - this->obj.pos.z) <= 3000.0f) { + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_60314E4); + this->info.damage = 0; + this->info.bonus = 1; + this->timer_0BC = 40.0f + RAND_FLOAT(30.0f); + this->state++; } break; case 2: - actor->animFrame++; - if (actor->animFrame == 10) { + this->animFrame++; + if (this->animFrame == 10) { for (i = 0; i < 10; i++) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f), - actor->obj.pos.y + 50.0f + RAND_FLOAT_CENTERED(70.0f), actor->obj.pos.z + 100.0f, - 3.0f, 2); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f), + this->obj.pos.y + 50.0f + RAND_FLOAT_CENTERED(70.0f), + this->obj.pos.z + 100.0f, 3.0f, 2); } } - if ((actor->animFrame == 18) && (actor->health != 0)) { - actor->animFrame = 17; - if ((fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) > 1000.0f) && (actor->timer_0BC < 20) && - ((actor->timer_0BC & 3) == 0)) { - sp68 = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(200.0f) - actor->obj.pos.x; - sp64 = gPlayer[0].pos.y + RAND_FLOAT_CENTERED(200.0f) - actor->obj.pos.y; - sp60 = gPlayer[0].trueZpos - actor->obj.pos.z; + if ((this->animFrame == 18) && (this->health != 0)) { + this->animFrame = 17; + if ((fabsf(this->obj.pos.z - gPlayer[0].trueZpos) > 1000.0f) && (this->timer_0BC < 20) && + ((this->timer_0BC & 3) == 0)) { + sp68 = gPlayer[0].pos.x + RAND_FLOAT_CENTERED(200.0f) - this->obj.pos.x; + sp64 = gPlayer[0].pos.y + RAND_FLOAT_CENTERED(200.0f) - this->obj.pos.y; + sp60 = gPlayer[0].trueZpos - this->obj.pos.z; sp58 = Math_RadToDeg(Math_Atan2F(sp68, sp60)); sp5C = Math_RadToDeg(-Math_Atan2F(sp64, sqrtf(SQ(sp68) + SQ(sp60)))); - Aquas_801BE274(actor, sp58, sp5C); + Aquas_801BE274(this, sp58, sp5C); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 40.0f + RAND_FLOAT(30.0f); + if (this->timer_0BC == 0) { + this->timer_0BC = 40.0f + RAND_FLOAT(30.0f); } } } - if (actor->animFrame >= Animation_GetFrameCount(&D_AQ_602201C)) { - actor->info.bonus = 0; - actor->animFrame = Animation_GetFrameCount(&D_AQ_602201C) - 1; - actor->state++; + if (this->animFrame >= Animation_GetFrameCount(&aAqOysterAnim)) { + this->info.bonus = 0; + this->animFrame = Animation_GetFrameCount(&aAqOysterAnim) - 1; + this->state++; } break; @@ -6632,75 +6606,80 @@ void Aquas_Actor270_Update(Actor* actor) { break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if (actor->health != 0) { - if (actor->state == 2) { - actor->health -= actor->damage; - if (actor->health <= 0) { - actor->health = actor->itemDrop = 0; - Actor_Despawn(actor); + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->health != 0) { + if (this->state == 2) { + this->health -= this->damage; + if (this->health <= 0) { + this->health = this->itemDrop = 0; + Actor_Despawn(this); for (i = 0; i < 10; i++) { - Aquas_801AC8A8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f), - actor->obj.pos.y + 50.0f + RAND_FLOAT_CENTERED(70.0f), actor->obj.pos.z + 100.0f, - 3.0f, 2); + Aquas_Effect366_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f), + this->obj.pos.y + 50.0f + RAND_FLOAT_CENTERED(70.0f), + this->obj.pos.z + 100.0f, 3.0f, 2); } for (i = 0; i < 3; i++) { - func_effect_80081A8C(actor->obj.pos.x + RAND_FLOAT(15.0f), actor->obj.pos.y + RAND_FLOAT(3.0f), - actor->obj.pos.z + RAND_FLOAT(5.0f), 1.0f + RAND_FLOAT(0.5f), 7); + func_effect_80081A8C(this->obj.pos.x + RAND_FLOAT(15.0f), this->obj.pos.y + RAND_FLOAT(3.0f), + this->obj.pos.z + RAND_FLOAT(5.0f), 1.0f + RAND_FLOAT(0.5f), 7); } func_effect_800815DC(); - func_effect_8007CF30(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + 51.0f, 10.0f); + Effect_FireSmoke_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + 51.0f, 10.0f); } } - if (actor->state == 1) { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_60314E4); - actor->info.damage = 0; - actor->info.bonus = 1; - actor->state = 2; + if (this->state == 1) { + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_AQ_60314E4); + this->info.damage = 0; + this->info.bonus = 1; + this->state = 2; } } } } -// OBJ_ACTOR_270 draw -void Aquas_Actor270_Draw(Actor* actor) { +void Aquas_AqOyster_Draw(AqOyster* this) { Graphics_SetScaleMtx(3.0f); RCP_SetupDL(&gMasterDisp, SETUPDL_56); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 143, 143, 255); - Animation_GetFrameData(&D_AQ_602201C, actor->animFrame, actor->vwork); - Animation_DrawSkeleton(1, D_AQ_60220E8, actor->vwork, NULL, NULL, &actor->index, &gIdentityMatrix); + Animation_GetFrameData(&aAqOysterAnim, this->animFrame, this->vwork); + Animation_DrawSkeleton(1, aAqOysterSkel, this->vwork, NULL, NULL, &this->index, &gIdentityMatrix); - if (actor->health != 0) { + if (this->health != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_55); - Matrix_Scale(gGfxMatrix, actor->fwork[0], actor->fwork[1], actor->fwork[2], MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->fwork[0], this->fwork[1], this->fwork[2], MTXF_APPLY); Matrix_Translate(gGfxMatrix, 0.0f, -8.0f, 51.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_AQ_6002C10); + gSPDisplayList(gMasterDisp++, aAqOysterDL); } } -// OBJ_BOSS_301 action -void Aquas_Boss301_Update(Boss* boss301) { +// OBJ_BOSS_AQ_UNK_301 action +void Aquas_Boss301_Update(Boss301* this) { + /* Unimplemented */ } -// OBJ_BOSS_301 draw -void Aquas_Boss301_Draw(Boss* boss301) { +// OBJ_BOSS_AQ_UNK_301 draw +void Aquas_Boss301_Draw(Boss301* this) { + /* Unimplemented */ } -// OBJ_ACTOR_188 action -void Aquas_Actor188_Update(Actor* actor) { +// OBJ_ACTOR_AQ_UNK_188 action +void Aquas_Actor188_Update(Actor188* this) { + /* Unimplemented */ } -// OBJ_ACTOR_188 draw -void Aquas_Actor188_Draw(Actor* actor) { +// OBJ_ACTOR_AQ_UNK_188 draw +void Aquas_Actor188_Draw(Actor188* this) { + /* Unimplemented */ } void Aquas_Update360(Player* player) { + /* Unimplemented */ } void Aquas_801BEC8C(void* arg0) { + /* Unimplemented */ } diff --git a/src/overlays/ovl_i3/fox_so.c b/src/overlays/ovl_i3/fox_so.c index 2b9f8a5b..eb4c4469 100644 --- a/src/overlays/ovl_i3/fox_so.c +++ b/src/overlays/ovl_i3/fox_so.c @@ -8,7 +8,7 @@ #include "assets/ast_bg_planet.h" #include "assets/ast_solar.h" -typedef void (*BossSOfunc)(BossSO*); +typedef void (*SoVulkainfunc)(SoVulkain*); typedef enum { /* 0 */ SO_SWK_0, @@ -52,7 +52,7 @@ typedef enum { /* 38 */ SO_SWK_38, /* 39 */ SO_SWK_39, /* 40 */ SO_SWK_MAX, -} BossSOswork; +} SoVulkainswork; typedef enum { /* 0 */ SO_FWK_0, @@ -106,7 +106,7 @@ typedef enum { /* 48 */ SO_FWK_48, /* 49 */ SO_FWK_49, /* 50 */ SO_FWK_MAX, -} BossSOfwork; +} SoVulkainfwork; typedef enum { /* 0 */ SO_VWK_0, @@ -160,13 +160,13 @@ typedef enum { /* 48 */ SO_VWK_48, /* 49 */ SO_VWK_49, /* 50 */ SO_VWK_MAX, -} BossSOvwork; +} SoVulkainvwork; -void Solar_801A239C(BossSO* this); -void Solar_801A2C3C(BossSO* this); -void Solar_801A3468(BossSO* this); -void Solar_801A48B8(BossSO* this); -void Solar_801A4EC0(BossSO* this); +void Solar_801A239C(SoVulkain* this); +void Solar_801A2C3C(SoVulkain* this); +void Solar_801A3468(SoVulkain* this); +void Solar_801A48B8(SoVulkain* this); +void Solar_801A4EC0(SoVulkain* this); void Solar_801A8DB8(Vec3f* pos, u32 sfxId, f32 zVel); s32 D_i3_801C2740[10]; @@ -241,7 +241,7 @@ void Solar_8019E9F4(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, } } -void Solar_Actor278_Update(Actor278* this) { +void Solar_SoWave_Update(SoWave* this) { f32 sp34; s32 sp30; @@ -316,10 +316,10 @@ void Solar_Actor278_Update(Actor278* this) { void Solar_8019EF30(Actor* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { Actor_Initialize(this); this->obj.status = OBJ_ACTIVE; - this->obj.id = OBJ_ACTOR_275; + this->obj.id = OBJ_ACTOR_SO_ROCK_1; if (Rand_ZeroOne() < 0.1f) { - this->obj.id = OBJ_ACTOR_276; + this->obj.id = OBJ_ACTOR_SO_ROCK_2; } this->obj.pos.x = xPos; @@ -354,10 +354,10 @@ void Solar_8019F038(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) } } -void Solar_8019F0B0(Actor277* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { +void Solar_8019F0B0(SoRock1* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { Actor_Initialize(this); this->obj.status = OBJ_ACTIVE; - this->obj.id = OBJ_ACTOR_277; + this->obj.id = OBJ_ACTOR_SO_ROCK_3; this->obj.pos.x = xPos; this->obj.pos.y = yPos; @@ -408,16 +408,16 @@ Vec3f D_i3_801BF95C[3] = { { 180.0f, 0.0f, 240.0f }, }; -// Actors OBJ_ACTOR_275 to OBJ_ACTOR_277 -void Solar_Doodad_Update(Actor* this) { +// Actors OBJ_ACTOR_SO_ROCK_1 to OBJ_ACTOR_SO_ROCK_3 +void Solar_SoRock_Update(SoRock1* this) { f32 sp8C = 0.0f; s32 sp88; s32 i; - if (this->obj.id == OBJ_ACTOR_277) { + if (this->obj.id == OBJ_ACTOR_SO_ROCK_3) { this->scale = 2.0f; } - if (this->obj.id == OBJ_ACTOR_276) { + if (this->obj.id == OBJ_ACTOR_SO_ROCK_2) { this->rot_0F4.x -= 6.6f; this->rot_0F4.y -= 4.0f; } else { @@ -461,19 +461,19 @@ void Solar_Doodad_Update(Actor* this) { 2); } - if ((this->dmgType != DMG_NONE) || ((this->obj.id == OBJ_ACTOR_277) && (this->vel.y < 0.0f))) { + if ((this->dmgType != DMG_NONE) || ((this->obj.id == OBJ_ACTOR_SO_ROCK_3) && (this->vel.y < 0.0f))) { func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->scale * 4.0f); Object_Kill(&this->obj, this->sfxSource); - if (this->obj.id == OBJ_ACTOR_277) { + if (this->obj.id == OBJ_ACTOR_SO_ROCK_3) { for (i = 0; i < 4; i++) { Solar_8019F038(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, D_i3_801BF8F0[i].x + RAND_FLOAT_CENTERED(3.0f), D_i3_801BF8F0[i].y + RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(-10.0f) - 10.0f); } - } else if (this->obj.id == OBJ_ACTOR_275) { + } else if (this->obj.id == OBJ_ACTOR_SO_ROCK_1) { this->itemDrop = DROP_SILVER_RING; - } else if (this->obj.id == OBJ_ACTOR_276) { + } else if (this->obj.id == OBJ_ACTOR_SO_ROCK_2) { if (gGoldRingCount[0] != 4) { this->itemDrop = DROP_GOLD_RING_1; } else { @@ -484,7 +484,7 @@ void Solar_Doodad_Update(Actor* this) { Actor_Despawn(this); for (i = 0; i < 3; i++) { - func_effect_800794CC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.3f); + Effect_Effect357_Spawn50(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.3f); } for (i = 0; i < 7; i++) { Solar_8019E9F4(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, RAND_FLOAT_CENTERED(30.0f), @@ -506,8 +506,8 @@ void Solar_Doodad_Update(Actor* this) { } } -// Actors OBJ_ACTOR_275 to OBJ_ACTOR_277 -void Solar_Doodad_Draw(Actor* this) { +// Actors OBJ_ACTOR_SO_ROCK_1 to OBJ_ACTOR_SO_ROCK_3 +void Solar_SoRock_Draw(SoRock1* this) { if (this->state != 0) { Matrix_Push(&gGfxMatrix); Matrix_RotateY(gGfxMatrix, this->rot_0F4.y * M_DTOR, MTXF_APPLY); @@ -515,11 +515,11 @@ void Solar_Doodad_Draw(Actor* this) { Matrix_SetGfxMtx(&gMasterDisp); switch (this->obj.id) { - case OBJ_ACTOR_275: + case OBJ_ACTOR_SO_ROCK_1: gSPDisplayList(gMasterDisp++, D_SO_6017370); break; - case OBJ_ACTOR_276: + case OBJ_ACTOR_SO_ROCK_2: if ((gGameFrameCount % 2) == 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_41); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255); @@ -527,7 +527,7 @@ void Solar_Doodad_Draw(Actor* this) { gSPDisplayList(gMasterDisp++, D_SO_6017090); break; - case OBJ_ACTOR_277: + case OBJ_ACTOR_SO_ROCK_3: gSPDisplayList(gMasterDisp++, D_SO_6016CF0); break; } @@ -540,7 +540,7 @@ void Solar_Doodad_Draw(Actor* this) { } } -void Solar_8019F99C(Actor279* this, Effect392* effect, f32 scale1) { +void Solar_8019F99C(SoProminence* this, Effect392* effect, f32 scale1) { Effect_Initialize(effect); effect->obj.status = OBJ_ACTIVE; effect->obj.id = OBJ_EFFECT_392; @@ -563,7 +563,7 @@ void Solar_8019F99C(Actor279* this, Effect392* effect, f32 scale1) { Object_SetInfo(&effect->info, effect->obj.id); } -void Solar_8019FAA4(BossSO* this, Effect392* effect, f32 xPos, f32 yPos, f32 zPos, f32 yVel, f32 hVelMod) { +void Solar_8019FAA4(SoVulkain* this, Effect392* effect, f32 xPos, f32 yPos, f32 zPos, f32 yVel, f32 hVelMod) { Vec3f sp44; Vec3f sp38; Vec3f sp2C = D_i3_801BF920; @@ -630,7 +630,7 @@ void Solar_8019FAA4(BossSO* this, Effect392* effect, f32 xPos, f32 yPos, f32 zPo Object_SetInfo(&effect->info, effect->obj.id); } -void Solar_8019FDE0(BossSO* this, Effect392* effect, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 state) { +void Solar_8019FDE0(SoVulkain* this, Effect392* effect, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 state) { Effect_Initialize(effect); effect->obj.status = OBJ_ACTIVE; effect->obj.id = OBJ_EFFECT_392; @@ -655,7 +655,7 @@ void Solar_8019FDE0(BossSO* this, Effect392* effect, f32 xPos, f32 yPos, f32 zPo effect->info.damage = 40; } -void Solar_8019FEE8(Actor279* this, f32 scale1) { +void Solar_8019FEE8(SoProminence* this, f32 scale1) { s32 i; for (i = 70; i >= 0; i--) { @@ -666,7 +666,7 @@ void Solar_8019FEE8(Actor279* this, f32 scale1) { } } -void Solar_8019FF44(BossSO* this, f32 xPos, f32 yPos, f32 zPos, f32 yVel, f32 hVelMod) { +void Solar_8019FF44(SoVulkain* this, f32 xPos, f32 yPos, f32 zPos, f32 yVel, f32 hVelMod) { s32 i; for (i = 70; i >= 0; i--) { @@ -677,7 +677,7 @@ void Solar_8019FF44(BossSO* this, f32 xPos, f32 yPos, f32 zPos, f32 yVel, f32 hV } } -void Solar_8019FFC0(BossSO* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 unk4E) { +void Solar_8019FFC0(SoVulkain* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 unk4E) { s32 i; for (i = 70; i >= 0; i--) { @@ -688,7 +688,7 @@ void Solar_8019FFC0(BossSO* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, s32 } } -void Solar_Actor279_Update(Actor279* this) { +void Solar_SoProminence_Update(SoProminence* this) { switch (this->state) { case 0: if (this->timer_0BE == 0) { @@ -940,10 +940,10 @@ void Solar_Effect392_Draw(Effect392* this) { } } -void Solar_801A0CEC(Actor278* this, f32 xPos, f32 zPos, f32 zVel, s32 unkB8) { +void Solar_801A0CEC(SoWave* this, f32 xPos, f32 zPos, f32 zVel, s32 unkB8) { Actor_Initialize(this); this->obj.status = OBJ_ACTIVE; - this->obj.id = OBJ_ACTOR_278; + this->obj.id = OBJ_ACTOR_SO_WAVE; this->obj.pos.x = xPos; this->obj.pos.z = zPos; @@ -996,7 +996,7 @@ void Solar_801A0DF8(f32 xPos, f32 zPos, f32 yRot, s32 index, f32 yPos) { Actor_Initialize(&gActors[actorIndex]); gActors[actorIndex].obj.status = OBJ_ACTIVE; - gActors[actorIndex].obj.id = OBJ_ACTOR_279; + gActors[actorIndex].obj.id = OBJ_ACTOR_SO_PROMINENCE; Object_SetInfo(&gActors[actorIndex].info, gActors[actorIndex].obj.id); @@ -1149,7 +1149,7 @@ void Solar_LevelStart(Player* player) { AUDIO_PLAY_BGM(NA_BGM_SO_START_DEMO); - func_display_80057814(player); + Display_SetupPlayerSfxPos(player); Audio_StartPlayerNoise(gPlayerNum); D_ctx_80177A48[0] = 0.01f; @@ -1326,12 +1326,12 @@ void Solar_801A1E14(f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, f32 zRot, } } -void Solar_801A1EB0(BossSO* this, f32 xPos, f32 xOffset, f32 yPos, f32 zPos) { +void Solar_801A1EB0(SoVulkain* this, f32 xPos, f32 xOffset, f32 yPos, f32 zPos) { Solar_8019E9F4(xPos + xOffset, yPos, zPos, 20.0f, RAND_FLOAT(10.0f) + 20.0f, 0.0f, 20.0f, 1); Solar_8019E9F4(xPos - xOffset, yPos, zPos, -20.0f, RAND_FLOAT(10.0f) + 20.0f, 0.0f, 20.0f, 1); } -void Solar_801A1F80(BossSO* this) { +void Solar_801A1F80(SoVulkain* this) { if (gBossActive) { this->scale = 5.5f; } @@ -1357,7 +1357,7 @@ void Solar_801A1F80(BossSO* this) { this->fwork[SO_FWK_3] = 2400.0f; this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_SO_60231A4); - this->unk_04C = 0; + this->animFrame = 0; this->swork[SO_SWK_1] = 0; this->info.hitbox[8] = this->info.hitbox[12] = this->info.hitbox[14] = this->info.hitbox[18] = this->info.hitbox[20] = this->info.hitbox[24] = this->info.hitbox[26] = this->info.hitbox[30] = @@ -1401,7 +1401,7 @@ void Solar_801A1F80(BossSO* this) { } if (this->timer_050 == 100) { - this->unk_04C = 0; + this->animFrame = 0; this->swork[SO_SWK_1] = 1; } @@ -1415,7 +1415,7 @@ void Solar_801A1F80(BossSO* this) { } } -void Solar_801A239C(BossSO* this) { +void Solar_801A239C(SoVulkain* this) { this->swork[SO_SWK_0] = 1; if ((this->swork[SO_SWK_2] != 0) || (this->swork[SO_SWK_3] != 0)) { if (this->swork[SO_SWK_3] != 0) { @@ -1426,10 +1426,10 @@ void Solar_801A239C(BossSO* this) { } else { this->swork[SO_SWK_1] = 7; } - this->unk_04C = 0; + this->animFrame = 0; } -void Solar_801A23F4(BossSO* this) { +void Solar_801A23F4(SoVulkain* this) { s32 i; Vec3f sp58; Vec3f sp4C; @@ -1438,8 +1438,8 @@ void Solar_801A23F4(BossSO* this) { switch (this->swork[SO_SWK_1]) { case 3: - if ((this->unk_04C == 119) || (this->swork[SO_SWK_3] == 0)) { - this->unk_04C = 0; + if ((this->animFrame == 119) || (this->swork[SO_SWK_3] == 0)) { + this->animFrame = 0; if (this->swork[SO_SWK_2] != 0) { if (Rand_ZeroOne() >= 0.5f) { this->swork[SO_SWK_1] = 4; @@ -1455,22 +1455,22 @@ void Solar_801A23F4(BossSO* this) { } } - if (this->unk_04C >= 28) { + if (this->animFrame >= 28) { this->info.hitbox[38] = 715.0f; this->info.hitbox[40] = 440.0f; this->info.hitbox[42] = 110.0f; } - if (this->unk_04C == 29) { + if (this->animFrame == 29) { Object_SetSfxSourceToPos(this->sfxSource, &this->obj.pos); AUDIO_PLAY_SFX(NA_SE_EN_OUT_PROMINENCE, this->sfxSource, 4); } - if (this->unk_04C == 80) { + if (this->animFrame == 80) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_SWING, this->sfxSource, 4); } - if (this->unk_04C >= 94) { + if (this->animFrame >= 94) { this->info.hitbox[38] = 220.0f; this->info.hitbox[40] = 715.0f; this->info.hitbox[42] = 220.0f; @@ -1478,8 +1478,8 @@ void Solar_801A23F4(BossSO* this) { break; case 4: - if ((this->unk_04C == 99) || (this->swork[SO_SWK_2] == 0)) { - this->unk_04C = 0; + if ((this->animFrame == 99) || (this->swork[SO_SWK_2] == 0)) { + this->animFrame = 0; if ((this->swork[SO_SWK_3] != 0) || (this->swork[SO_SWK_2] != 0)) { this->swork[SO_SWK_1] = 5; } else { @@ -1487,22 +1487,22 @@ void Solar_801A23F4(BossSO* this) { } } - if (this->unk_04C > 20) { + if (this->animFrame > 20) { this->info.hitbox[20] = 715.0f; this->info.hitbox[22] = 110.0f; this->info.hitbox[24] = 275.0f; } - if (this->unk_04C == 10) { + if (this->animFrame == 10) { Object_SetSfxSourceToPos(this->sfxSource, &this->obj.pos); AUDIO_PLAY_SFX(NA_SE_EN_OUT_PROMINENCE, this->sfxSource, 4); } - if (this->unk_04C == 50) { + if (this->animFrame == 50) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_SWING, this->sfxSource, 4); } - if (this->unk_04C >= 85) { + if (this->animFrame >= 85) { this->info.hitbox[20] = 220.0f; this->info.hitbox[22] = 715.0f; this->info.hitbox[24] = 220.0f; @@ -1514,7 +1514,7 @@ void Solar_801A23F4(BossSO* this) { Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 1.0f, 1.5f, 1.0f); - if (this->unk_04C == 65) { + if (this->animFrame == 65) { Matrix_RotateX(gCalcMatrix, D_i3_801C2768[0] * M_DTOR, MTXF_NEW); Matrix_RotateY(gCalcMatrix, D_i3_801C2768[1] * M_DTOR, MTXF_APPLY); sp40.x = 0.0f; @@ -1532,7 +1532,7 @@ void Solar_801A23F4(BossSO* this) { } } - if (this->unk_04C == 99) { + if (this->animFrame == 99) { if ((this->swork[SO_SWK_2] != 0) || (this->swork[SO_SWK_3] != 0)) { Solar_801A2C3C(this); } else { @@ -1542,14 +1542,14 @@ void Solar_801A23F4(BossSO* this) { break; case 7: - if (this->unk_04C < 50) { + if (this->animFrame < 50) { if (this->fwork[SO_FWK_31] < 22.0f) { this->fwork[SO_FWK_31] += 0.5f; } this->obj.rot.y += this->fwork[SO_FWK_31]; } - if ((this->unk_04C >= 50) && (this->unk_04C <= 100)) { + if ((this->animFrame >= 50) && (this->animFrame <= 100)) { if (this->fwork[SO_FWK_31] > 0.0f) { this->fwork[SO_FWK_31] -= 0.5f; } @@ -1561,24 +1561,24 @@ void Solar_801A23F4(BossSO* this) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_ROLL, this->sfxSource, 4); } - if (this->unk_04C == 1) { + if (this->animFrame == 1) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_ROLL, this->sfxSource, 4); } - if (this->unk_04C >= 100) { + if (this->animFrame >= 100) { Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 1.0f, 2.0f, 1.0f); this->fwork[SO_FWK_31] = 0.0f; } - if (this->unk_04C == 120) { + if (this->animFrame == 120) { this->swork[SO_SWK_1] = 5; - this->unk_04C = 0; + this->animFrame = 0; this->fwork[SO_FWK_0] = 0.1f; } break; case 2: - if (((this->unk_04C == 89) && (this->state == 2)) || (this->swork[SO_SWK_2] == 0)) { - this->unk_04C = 0; + if (((this->animFrame == 89) && (this->state == 2)) || (this->swork[SO_SWK_2] == 0)) { + this->animFrame = 0; if ((this->swork[SO_SWK_3] != 0) || (this->swork[SO_SWK_2] != 0)) { this->swork[SO_SWK_1] = 5; @@ -1587,7 +1587,7 @@ void Solar_801A23F4(BossSO* this) { } } - if (this->unk_04C == 80) { + if (this->animFrame == 80) { this->rot_078.y += 15.0f; this->state++; if (this->rot_078.y >= 30.0f) { @@ -1597,22 +1597,22 @@ void Solar_801A23F4(BossSO* this) { Math_SmoothStepToAngle(&this->obj.rot.y, this->rot_078.y, 1.0f, 1.5f, 1.0f); - if (this->unk_04C >= 19) { + if (this->animFrame >= 19) { this->info.hitbox[20] = 715.0f; this->info.hitbox[22] = 440.0f; this->info.hitbox[24] = 110.0f; } - if (this->unk_04C == 5) { + if (this->animFrame == 5) { Object_SetSfxSourceToPos(this->sfxSource, &this->obj.pos); AUDIO_PLAY_SFX(NA_SE_EN_OUT_PROMINENCE, this->sfxSource, 4); } - if (this->unk_04C == 20) { + if (this->animFrame == 20) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_SWING, this->sfxSource, 4); } - if (this->unk_04C > 36) { + if (this->animFrame > 36) { this->info.hitbox[20] = 220.0f; this->info.hitbox[22] = 715.0f; this->info.hitbox[24] = 220.0f; @@ -1621,16 +1621,16 @@ void Solar_801A23F4(BossSO* this) { } } -void Solar_801A2C3C(BossSO* this) { +void Solar_801A2C3C(SoVulkain* this) { this->swork[SO_SWK_0] = 2; this->swork[SO_SWK_1] = 0; this->fwork[SO_FWK_0] = 0.05f; - this->unk_04C = Animation_GetFrameCount(&D_SO_601388C) - 2; + this->animFrame = Animation_GetFrameCount(&D_SO_601388C) - 2; this->state = 0; this->swork[SO_SWK_11] = 15; } -void Solar_801A2C98(BossSO* this) { +void Solar_801A2C98(SoVulkain* this) { s32 i; if (this->swork[SO_SWK_11] != 0) { @@ -1639,18 +1639,18 @@ void Solar_801A2C98(BossSO* this) { if (this->state == 0) { if (this->swork[SO_SWK_11] == 0) { - this->unk_04C -= 2; + this->animFrame -= 2; Math_SmoothStepToF(&this->obj.pos.y, -1000.0f, 0.1f, 10.0f, 0.1f); Math_SmoothStepToAngle(&this->obj.rot.y, 181.0f, 1.0f, 3.0f, 1.0f); - if (this->unk_04C == 50) { + if (this->animFrame == 50) { Solar_801A0CEC(&gActors[10], this->obj.pos.x, this->obj.pos.z + 1000.0f, 20.0f, 1); gControllerRumbleFlags[gMainController] = 1; gControllerRumbleTimers[gMainController] = 70; } - if (this->unk_04C == 60) { + if (this->animFrame == 60) { for (i = 0; i < 4; i++) { Solar_8019F038(this->obj.pos.x + 100.0f, 100.0f, this->obj.pos.z + 1100.0f, D_i3_801BF8F0[i].x + RAND_FLOAT_CENTERED(2.0f), @@ -1661,12 +1661,12 @@ void Solar_801A2C98(BossSO* this) { } } - if (this->unk_04C == 20) { + if (this->animFrame == 20) { gActors[10].dmgType = DMG_COLLISION; AUDIO_PLAY_SFX(NA_SE_EN_IN_MAGMA, this->sfxSource, 4); } - if (this->unk_04C == 0) { + if (this->animFrame == 0) { this->state++; this->swork[SO_SWK_11] = 100; this->obj.pos.y = -500.0f; @@ -1675,7 +1675,7 @@ void Solar_801A2C98(BossSO* this) { this->obj.rot.y = -this->obj.rot.y; } } else { - this->unk_04C = Animation_GetFrameCount(&D_SO_601388C) - 2; + this->animFrame = Animation_GetFrameCount(&D_SO_601388C) - 2; } } else { Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 1.0f, 1.5f, 1.0f); @@ -1689,7 +1689,7 @@ void Solar_801A2C98(BossSO* this) { } if (this->swork[SO_SWK_11] == 210) { - this->unk_04C = 0; + this->animFrame = 0; this->swork[SO_SWK_1] = 1; this->fwork[SO_FWK_0] = 0.05f; } @@ -1709,36 +1709,36 @@ void Solar_801A2C98(BossSO* this) { } } -void Solar_801A30CC(BossSO* this) { +void Solar_801A30CC(SoVulkain* this) { this->swork[SO_SWK_0] = 3; this->swork[SO_SWK_1] = 0; this->fwork[SO_FWK_0] = 0.1f; - this->unk_04C = Animation_GetFrameCount(&D_SO_601388C) - 2; + this->animFrame = Animation_GetFrameCount(&D_SO_601388C) - 2; this->state = 0; this->swork[SO_SWK_11] = 15; } -void Solar_801A3128(BossSO* this) { +void Solar_801A3128(SoVulkain* this) { if (this->swork[SO_SWK_11] != 0) { this->swork[SO_SWK_11]--; } if (this->state == 0) { if (this->swork[SO_SWK_11] == 0) { - this->unk_04C -= 2; + this->animFrame -= 2; Math_SmoothStepToF(&this->obj.pos.y, -1000.0f, 0.1f, 10.0f, 0.1f); - if (this->unk_04C == 50) { + if (this->animFrame == 50) { Solar_801A0CEC(&gActors[10], this->obj.pos.x, this->obj.pos.z + 2000.0f, 10.0f, 1); } - if (this->unk_04C == 40) { + if (this->animFrame == 40) { gActors[10].dmgType = DMG_COLLISION; AUDIO_PLAY_SFX(NA_SE_EN_IN_MAGMA, this->sfxSource, 4); } - if (this->unk_04C == 0) { + if (this->animFrame == 0) { this->state++; this->swork[SO_SWK_11] = 100; this->obj.pos.y = -500.0f; @@ -1746,7 +1746,7 @@ void Solar_801A3128(BossSO* this) { this->obj.pos.z = gPlayer[0].trueZpos - 2100.0f; } } else { - this->unk_04C = Animation_GetFrameCount(&D_SO_601388C) - 2; + this->animFrame = Animation_GetFrameCount(&D_SO_601388C) - 2; } } else { if (this->swork[SO_SWK_11] == 80) { @@ -1775,7 +1775,7 @@ void Solar_801A3128(BossSO* this) { } if (this->swork[SO_SWK_11] == 210) { - this->unk_04C = 0; + this->animFrame = 0; this->swork[SO_SWK_1] = 1; } @@ -1799,7 +1799,7 @@ void Solar_801A3128(BossSO* this) { } } -void Solar_801A3468(BossSO* this) { +void Solar_801A3468(SoVulkain* this) { this->swork[SO_SWK_0] = 4; this->unk_048 = 0; @@ -1818,17 +1818,17 @@ void Solar_801A3468(BossSO* this) { this->swork[SO_SWK_1] = 8; } } - this->unk_04C = 0; + this->animFrame = 0; this->fwork[SO_FWK_0] = 0.01f; } -void Solar_801A3510(BossSO* this) { +void Solar_801A3510(SoVulkain* this) { s32 i; switch (this->swork[SO_SWK_1]) { case 3: - if ((this->unk_04C == 119) || (this->swork[SO_SWK_3] == 0)) { - this->unk_04C = 0; + if ((this->animFrame == 119) || (this->swork[SO_SWK_3] == 0)) { + this->animFrame = 0; if (this->swork[SO_SWK_2] != 0) { this->swork[SO_SWK_1] = 4; } else { @@ -1836,39 +1836,39 @@ void Solar_801A3510(BossSO* this) { } } - if (this->unk_04C == 29) { + if (this->animFrame == 29) { Object_SetSfxSourceToPos(this->sfxSource, &this->obj.pos); AUDIO_PLAY_SFX(NA_SE_EN_OUT_PROMINENCE, this->sfxSource, 4); } - if (this->unk_04C == 80) { + if (this->animFrame == 80) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_SWING, this->sfxSource, 4); } - if (this->unk_04C == 94) { + if (this->animFrame == 94) { Solar_801A0DF8(this->fwork[SO_FWK_13], this->fwork[SO_FWK_15], RAND_FLOAT_CENTERED(60.0f), 4, 2.0f); this->timer_050 = 90; } break; case 4: - if ((this->unk_04C == 99) || (this->swork[SO_SWK_2] == 0)) { - this->unk_04C = 0; + if ((this->animFrame == 99) || (this->swork[SO_SWK_2] == 0)) { + this->animFrame = 0; this->swork[SO_SWK_1] = 5; } Math_SmoothStepToAngle(&this->obj.rot.x, 20.0f, 0.1f, 10.0f, 0.1f); - if (this->unk_04C == 10) { + if (this->animFrame == 10) { Object_SetSfxSourceToPos(this->sfxSource, &this->obj.pos); AUDIO_PLAY_SFX(NA_SE_EN_OUT_PROMINENCE, this->sfxSource, 4); } - if (this->unk_04C == 50) { + if (this->animFrame == 50) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_SWING, this->sfxSource, 4); } - if (this->unk_04C == 60) { + if (this->animFrame == 60) { Solar_801A0D90(this->obj.pos.x, this->obj.pos.z + 1600.0f, 80.0f, 2); gControllerRumbleFlags[gMainController] = 1; gControllerRumbleTimers[gMainController] = 100; @@ -1877,7 +1877,7 @@ void Solar_801A3510(BossSO* this) { case 5: Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 10.0f, 0.1f); - if (this->unk_04C == 65) { + if (this->animFrame == 65) { for (i = 0; i < 4; i++) { Solar_8019F194(this->obj.pos.x, this->obj.pos.y + 300.0f, this->obj.pos.z + 1000.0f, D_i3_801BF8F0[i].x + RAND_FLOAT_CENTERED(0.25f), @@ -1885,55 +1885,55 @@ void Solar_801A3510(BossSO* this) { } } - if ((this->unk_048 != 0) && (this->unk_04C == 68)) { + if ((this->unk_048 != 0) && (this->animFrame == 68)) { this->swork[SO_SWK_1] = 9; this->fwork[SO_FWK_0] = 0.01f; - this->unk_04C = 20; + this->animFrame = 20; } - if (this->unk_04C == 99) { + if (this->animFrame == 99) { Solar_801A30CC(this); } break; case 8: - if (this->unk_04C == 65) { + if (this->animFrame == 65) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_BREATH, this->sfxSource, 4); this->timer_050 = 30; } if (this->timer_050 != 0) { - this->unk_04C = 65; + this->animFrame = 65; } - if ((this->unk_04C == 65) && (gGameFrameCount % 2) == 0) { + if ((this->animFrame == 65) && (gGameFrameCount % 2) == 0) { Solar_8019FFC0(this, this->fwork[SO_FWK_4], this->fwork[SO_FWK_5] - 100.0f, this->fwork[SO_FWK_6] + 600.0f, (this->timer_050 * 0.2f) + 4.0f, 0); Solar_801A1EB0(this, this->fwork[SO_FWK_4], 25.0f, this->fwork[SO_FWK_5] - 100.0f, this->fwork[SO_FWK_6] + 300.0f); } - if (this->unk_04C == 75) { + if (this->animFrame == 75) { Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_SOBOSS_BREATH); } - if (this->unk_04C == 99) { + if (this->animFrame == 99) { this->swork[SO_SWK_1] = 5; - this->unk_04C = 0; + this->animFrame = 0; } break; case 9: - this->unk_04C++; - if (this->unk_04C == 66) { + this->animFrame++; + if (this->animFrame == 66) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_BREATH, this->sfxSource, 4); this->timer_050 = 30; } if (this->timer_050 != 0) { - this->unk_04C = 66; + this->animFrame = 66; } - if ((this->unk_04C == 66) && ((gGameFrameCount % 2) == 0)) { + if ((this->animFrame == 66) && ((gGameFrameCount % 2) == 0)) { Solar_8019FFC0(this, this->fwork[SO_FWK_4] + 125.0f, this->fwork[SO_FWK_5] - 100.0f, this->fwork[SO_FWK_6] + 600.0f, (this->timer_050 * 0.2f) + 4.0f, 1); Solar_8019FFC0(this, this->fwork[SO_FWK_4] - 125.0f, this->fwork[SO_FWK_5] - 100.0f, @@ -1942,11 +1942,11 @@ void Solar_801A3510(BossSO* this) { this->fwork[SO_FWK_6] + 300.0f); } - if (this->unk_04C == 76) { + if (this->animFrame == 76) { Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_SOBOSS_BREATH); } - if (this->unk_04C >= 99) { + if (this->animFrame >= 99) { Solar_801A30CC(this); } break; @@ -1959,7 +1959,7 @@ void Solar_801A3510(BossSO* this) { } } -void Solar_801A3C4C(BossSO* this) { +void Solar_801A3C4C(SoVulkain* this) { s32 i; if ((this->swork[SO_SWK_2] == 0) && (this->swork[SO_SWK_3] == 0) && @@ -2015,7 +2015,7 @@ void Solar_801A3C4C(BossSO* this) { } if (this->health <= 0) { - this->unk_04C = 21; + this->animFrame = 21; this->state = 0; this->swork[SO_SWK_1] = 1; this->fwork[SO_FWK_0] = 0.01f; @@ -2060,7 +2060,7 @@ void Solar_801A3C4C(BossSO* this) { } } -void Solar_801A4214(BossSO* this) { +void Solar_801A4214(SoVulkain* this) { s32 i; Vec3f sp50; Vec3f sp44; @@ -2072,8 +2072,8 @@ void Solar_801A4214(BossSO* this) { Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 3.0f, 0.0f); Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 3.0f, 0.0f); - if ((this->unk_04C == 52) && (this->swork[SO_SWK_1] == 5)) { - this->unk_04C = 38; + if ((this->animFrame == 52) && (this->swork[SO_SWK_1] == 5)) { + this->animFrame = 38; this->fwork[SO_FWK_0] = 0.05f; } @@ -2099,7 +2099,7 @@ void Solar_801A4214(BossSO* this) { if (this->timer_058 == 19910) { this->state++; this->swork[SO_SWK_1] = 5; - this->unk_04C = 0; + this->animFrame = 0; this->fwork[SO_FWK_0] = 0.05f; } @@ -2107,8 +2107,8 @@ void Solar_801A4214(BossSO* this) { break; case 1: - if (this->unk_04C == 51) { - this->unk_04C = 50; + if (this->animFrame == 51) { + this->animFrame = 50; this->state++; gShowBossHealth = false; @@ -2211,7 +2211,7 @@ void Solar_801A4214(BossSO* this) { } } -void Solar_801A48B8(BossSO* this) { +void Solar_801A48B8(SoVulkain* this) { s32 i; AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_BROKEN, this->sfxSource, 4); @@ -2222,12 +2222,12 @@ void Solar_801A48B8(BossSO* this) { if (this->swork[SO_SWK_0] != 6) { this->swork[SO_SWK_5] = this->swork[SO_SWK_0]; this->swork[SO_SWK_6] = this->swork[SO_SWK_1]; - this->swork[SO_SWK_7] = this->unk_04C; + this->swork[SO_SWK_7] = this->animFrame; } - if ((this->swork[SO_SWK_0] == 4) && (this->unk_04C >= 60) && (this->unk_04C < 67)) { + if ((this->swork[SO_SWK_0] == 4) && (this->animFrame >= 60) && (this->animFrame < 67)) { for (i = 4; i < ARRAY_COUNT(gActors); i++) { - if (gActors[i].obj.id == OBJ_ACTOR_278) { + if (gActors[i].obj.id == OBJ_ACTOR_SO_WAVE) { gActors[i].dmgType = DMG_EXPLOSION; break; } @@ -2239,7 +2239,7 @@ void Solar_801A48B8(BossSO* this) { this->swork[SO_SWK_0] = 6; this->swork[SO_SWK_1] = 6; - this->unk_04C = 0; + this->animFrame = 0; this->fwork[SO_FWK_0] = 0.01f; if (((this->swork[SO_SWK_2] > 0) || (this->swork[SO_SWK_3] > 0)) && (gTeamShields[TEAM_ID_SLIPPY] > 0)) { @@ -2247,7 +2247,7 @@ void Solar_801A48B8(BossSO* this) { } } -void Solar_801A4A34(BossSO* this) { +void Solar_801A4A34(SoVulkain* this) { if (this->swork[SO_SWK_2] < 0) { this->swork[SO_SWK_2] = 0; Solar_801A1E14(this->fwork[SO_FWK_28], this->fwork[SO_FWK_29], this->fwork[SO_FWK_30], this->fwork[SO_FWK_41], @@ -2274,7 +2274,7 @@ void Solar_801A4A34(BossSO* this) { RAND_FLOAT(25.0f) + 30.0f, RAND_FLOAT_CENTERED(25.0f) - 50.0f, 3); } - switch (this->unk_04C) { + switch (this->animFrame) { case 30: AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_DAMAGE, this->sfxSource, 4); /* fallthrough */ @@ -2284,28 +2284,28 @@ void Solar_801A4A34(BossSO* this) { break; } - if (this->unk_04C == 119) { + if (this->animFrame == 119) { this->swork[SO_SWK_0] = this->swork[SO_SWK_5]; this->swork[SO_SWK_1] = this->swork[SO_SWK_6]; if ((this->swork[SO_SWK_5] == 2) || (this->swork[SO_SWK_5] == 3)) { - this->unk_04C = this->swork[SO_SWK_7]; + this->animFrame = this->swork[SO_SWK_7]; } else { - this->unk_04C = 0; + this->animFrame = 0; } this->fwork[SO_FWK_0] = 0.01f; } } -void Solar_801A4EC0(BossSO* this) { +void Solar_801A4EC0(SoVulkain* this) { this->swork[SO_SWK_0] = 7; this->swork[SO_SWK_1] = 5; this->fwork[SO_FWK_0] = 0.01f; - this->unk_04C = 0; + this->animFrame = 0; this->state = 0; this->fwork[SO_FWK_31] = this->obj.rot.y = 0.0f; } -void Solar_801A4EF8(BossSO* this) { +void Solar_801A4EF8(SoVulkain* this) { s32 i; if (this->swork[SO_SWK_11] != 0) { @@ -2314,12 +2314,12 @@ void Solar_801A4EF8(BossSO* this) { switch (this->state) { case 0: - this->unk_04C = 0; + this->animFrame = 0; if (this->fwork[SO_FWK_31] > 20.0f) { this->state++; this->swork[SO_SWK_11] = 108; this->fwork[SO_FWK_0] = 0.01f; - this->unk_04C = 56; + this->animFrame = 56; } if (this->obj.rot.y == 0.0f) { @@ -2338,7 +2338,7 @@ void Solar_801A4EF8(BossSO* this) { case 1: this->obj.rot.y += this->fwork[SO_FWK_31]; - this->unk_04C = 56; + this->animFrame = 56; if (this->obj.rot.y >= 360.0f) { this->obj.rot.y -= 360.0f; AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_ROLL, this->sfxSource, 4); @@ -2382,7 +2382,7 @@ void Solar_801A4EF8(BossSO* this) { break; case 2: - this->unk_04C = 0; + this->animFrame = 0; if (this->swork[SO_SWK_11] == 300) { gControllerRumbleFlags[gMainController] = 1; @@ -2395,7 +2395,7 @@ void Solar_801A4EF8(BossSO* this) { } if (this->swork[SO_SWK_11] < 200) { - this->unk_04C = 98; + this->animFrame = 98; this->rot_078.y += this->fwork[SO_FWK_31]; if (this->swork[SO_SWK_11] == 170) { @@ -2426,7 +2426,7 @@ void Solar_801A4EF8(BossSO* this) { this->obj.pos.y = -500.0f; this->fwork[SO_FWK_3] = 4800.0f; this->obj.pos.z = gPlayer[0].trueZpos - this->fwork[SO_FWK_3]; - this->unk_04C = 0; + this->animFrame = 0; this->obj.rot.x = 0.0f; this->fwork[SO_FWK_31] = this->vel.y = this->vel.z = 0.0f; this->obj.rot.y = 330.0f; @@ -2443,7 +2443,7 @@ void Solar_801A4EF8(BossSO* this) { this->swork[SO_SWK_11] = 220; } if (this->swork[SO_SWK_11] == 210) { - this->unk_04C = 0; + this->animFrame = 0; this->swork[SO_SWK_1] = 1; } if (this->swork[SO_SWK_11] >= 100) { @@ -2460,27 +2460,27 @@ void Solar_801A4EF8(BossSO* this) { } } -void Solar_801A56B8(BossSO* this) { +void Solar_801A56B8(SoVulkain* this) { switch (this->swork[SO_SWK_1]) { case 2: - if (((this->unk_04C == 89) && (this->state == 2)) || (this->swork[SO_SWK_2] == 0)) { - this->unk_04C = 0; + if (((this->animFrame == 89) && (this->state == 2)) || (this->swork[SO_SWK_2] == 0)) { + this->animFrame = 0; this->state = 0; this->rot_078.y = 0.0f; } - if (this->unk_04C == 89) { + if (this->animFrame == 89) { this->state++; this->rot_078.y += 15.0f; } Math_SmoothStepToAngle(&this->obj.rot.y, this->rot_078.y, 1.0f, 3.0f, 1.0f); - if (this->unk_04C > 18) { + if (this->animFrame > 18) { this->info.hitbox[20] = 715.0f; this->info.hitbox[22] = 440.0f; this->info.hitbox[24] = 110.0f; } - if (this->unk_04C > 36) { + if (this->animFrame > 36) { this->info.hitbox[20] = 220.0f; this->info.hitbox[22] = 715.0f; this->info.hitbox[24] = 220.0f; @@ -2488,8 +2488,8 @@ void Solar_801A56B8(BossSO* this) { break; case 4: - if ((this->unk_04C == 99) || (this->swork[SO_SWK_2] == 0)) { - this->unk_04C = 0; + if ((this->animFrame == 99) || (this->swork[SO_SWK_2] == 0)) { + this->animFrame = 0; if ((this->swork[SO_SWK_3] != 0) || (this->swork[SO_SWK_2] != 0)) { this->swork[SO_SWK_1] = 5; } else { @@ -2497,12 +2497,12 @@ void Solar_801A56B8(BossSO* this) { } } - if (this->unk_04C > 20) { + if (this->animFrame > 20) { this->info.hitbox[20] = 715.0f; this->info.hitbox[22] = 110.0f; this->info.hitbox[24] = 275.0f; } - if (this->unk_04C > 84) { + if (this->animFrame > 84) { this->info.hitbox[20] = 220.0f; this->info.hitbox[22] = 715.0f; this->info.hitbox[24] = 220.0f; @@ -2512,15 +2512,15 @@ void Solar_801A56B8(BossSO* this) { case 5: this->fwork[SO_FWK_3] = 4800.0f; - if (this->unk_04C == 65) { + if (this->animFrame == 65) { this->timer_050 = 30; } if (this->timer_050 != 0) { - this->unk_04C = 65; + this->animFrame = 65; } - if ((this->unk_04C == 65) && ((gGameFrameCount % 4) == 0)) { + if ((this->animFrame == 65) && ((gGameFrameCount % 4) == 0)) { Solar_8019FFC0(this, this->fwork[SO_FWK_4] + 125.0f, this->fwork[SO_FWK_5] - 100.0f, this->fwork[SO_FWK_6] + 600.0f, ((f32) this->timer_050 * 0.2f) + 4.0f, 1); Solar_8019FFC0(this, this->fwork[SO_FWK_4] - 125.0f, this->fwork[SO_FWK_5] - 100.0f, @@ -2531,37 +2531,37 @@ void Solar_801A56B8(BossSO* this) { break; case 7: - if (this->unk_04C < 50) { + if (this->animFrame < 50) { if (this->fwork[SO_FWK_31] < 22.0f) { this->fwork[SO_FWK_31] += 0.5f; } this->obj.rot.y += this->fwork[SO_FWK_31]; } - if ((this->unk_04C >= 50) && (this->unk_04C <= 100)) { + if ((this->animFrame >= 50) && (this->animFrame <= 100)) { if (this->fwork[SO_FWK_31] > 0.0f) { this->fwork[SO_FWK_31] -= 0.5f; } this->obj.rot.y += this->fwork[SO_FWK_31]; } - if (this->unk_04C >= 100) { + if (this->animFrame >= 100) { Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 1.0f, 2.0f, 1.0f); this->fwork[SO_FWK_31] = 0.0f; } - if (this->unk_04C == 120) { + if (this->animFrame == 120) { this->swork[SO_SWK_1] = 5; - this->unk_04C = 0; + this->animFrame = 0; this->fwork[SO_FWK_0] = 0.1f; } break; } } -BossSOfunc D_i3_801BF980[9] = { +SoVulkainfunc D_i3_801BF980[9] = { Solar_801A1F80, Solar_801A23F4, Solar_801A2C98, Solar_801A3128, Solar_801A3510, Solar_801A4214, Solar_801A4A34, Solar_801A4EF8, Solar_801A56B8, }; -void Solar_Boss_Update(BossSO* this) { +void Solar_SoVulkain_Update(SoVulkain* this) { f32 sp1CC; f32 sp1C8; f32 sp1C4; @@ -2674,81 +2674,81 @@ void Solar_Boss_Update(BossSO* this) { switch (this->swork[SO_SWK_1]) { case 0: - this->unk_04C++; - if (this->unk_04C == 75) { + this->animFrame++; + if (this->animFrame == 75) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_CRY, this->sfxSource, 4); } - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_601388C)) { + if (this->animFrame >= Animation_GetFrameCount(&D_SO_601388C)) { if (this->health != 0) { - this->unk_04C = 0; + this->animFrame = 0; this->swork[SO_SWK_1]++; this->fwork[SO_FWK_0] = 0.01f; } else { - this->unk_04C = Animation_GetFrameCount(&D_SO_601388C) - 1; + this->animFrame = Animation_GetFrameCount(&D_SO_601388C) - 1; } } - sp1BC = Animation_GetFrameData(&D_SO_601388C, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_601388C, this->animFrame, frameTable); break; case 1: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_600D3DC)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SO_600D3DC)) { + this->animFrame = 0; } - sp1BC = Animation_GetFrameData(&D_SO_600D3DC, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_600D3DC, this->animFrame, frameTable); break; case 2: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_600E2C4)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SO_600E2C4)) { + this->animFrame = 0; } - sp1BC = Animation_GetFrameData(&D_SO_600E2C4, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_600E2C4, this->animFrame, frameTable); break; case 3: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_600F744)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SO_600F744)) { + this->animFrame = 0; } - sp1BC = Animation_GetFrameData(&D_SO_600F744, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_600F744, this->animFrame, frameTable); break; case 4: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_600C15C)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SO_600C15C)) { + this->animFrame = 0; } - sp1BC = Animation_GetFrameData(&D_SO_600C15C, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_600C15C, this->animFrame, frameTable); break; case 5: case 8: case 9: - this->unk_04C++; - if ((this->unk_04C == 45) && (this->health != 0)) { + this->animFrame++; + if ((this->animFrame == 45) && (this->health != 0)) { AUDIO_PLAY_SFX(NA_SE_EN_SOBOSS_CRY, this->sfxSource, 4); } - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_6012C00)) { - this->unk_04C = 0; + if (this->animFrame >= Animation_GetFrameCount(&D_SO_6012C00)) { + this->animFrame = 0; } - sp1BC = Animation_GetFrameData(&D_SO_6012C00, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_6012C00, this->animFrame, frameTable); break; case 6: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_600B1B4)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SO_600B1B4)) { + this->animFrame = 0; } - sp1BC = Animation_GetFrameData(&D_SO_600B1B4, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_600B1B4, this->animFrame, frameTable); break; case 7: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SO_6009D30)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SO_6009D30)) { + this->animFrame = 0; } - sp1BC = Animation_GetFrameData(&D_SO_6009D30, this->unk_04C, frameTable); + sp1BC = Animation_GetFrameData(&D_SO_6009D30, this->animFrame, frameTable); break; } Matrix_RotateZ(gCalcMatrix, -this->vwork[SO_VWK_29].z * M_DTOR, MTXF_NEW); @@ -2808,8 +2808,8 @@ void Solar_Boss_Update(BossSO* this) { } } -bool Solar_801A68A8(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { - BossSO* this = (BossSO*) thisx; +bool Solar_SoVulkain_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + SoVulkain* this = (SoVulkain*) thisx; Vec3f sp58 = { 0.0f, 0.0f, 0.0f }; Vec3f sp4C = { 10.0f, 0.0f, 0.0f }; Vec3f sp40 = { -10.0f, 0.0f, 0.0f }; @@ -2876,8 +2876,8 @@ bool Solar_801A68A8(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Solar_801A6BDC(s32 limbIndex, Vec3f* rot, void* thisx) { - BossSO* this = (BossSO*) thisx; +void Solar_SoVulkain_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + SoVulkain* this = (SoVulkain*) thisx; Vec3f spA0 = { 90.0f, 0.0f, -10.0f }; Vec3f sp94 = { 135.0f, 0.0f, -40.0f }; Vec3f sp88 = { 106.0f, 0.0f, 0.0f }; @@ -3018,7 +3018,7 @@ void Solar_801A6BDC(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Solar_Boss_Draw(BossSO* this) { +void Solar_SoVulkain_Draw(SoVulkain* this) { s32 i; Vec3f spE8[9] = { { 150.0f, 300.0f, 100.0f }, { -100.0f, 200.0f, 100.0f }, { 50.0f, 100.0f, 100.0f }, @@ -3035,7 +3035,8 @@ void Solar_Boss_Draw(BossSO* this) { Matrix_Scale(gCalcMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); if (gBossActive) { - Animation_DrawSkeleton(2, D_SO_600E470, this->vwork, Solar_801A68A8, Solar_801A6BDC, this, gCalcMatrix); + Animation_DrawSkeleton(2, D_SO_600E470, this->vwork, Solar_SoVulkain_OverrideLimbDraw, + Solar_SoVulkain_PostLimbDraw, this, gCalcMatrix); } if (this->health <= 0) { @@ -3140,7 +3141,7 @@ void Solar_LevelComplete(Player* player) { f32 dz; Vec3f sp60; Vec3f sp54; - BossSO* boss = &gBosses[0]; + SoVulkain* boss = &gBosses[0]; switch (player->csState) { case 0: diff --git a/src/overlays/ovl_i3/fox_zo.c b/src/overlays/ovl_i3/fox_zo.c index 49d20d51..1a882af8 100644 --- a/src/overlays/ovl_i3/fox_zo.c +++ b/src/overlays/ovl_i3/fox_zo.c @@ -84,7 +84,7 @@ typedef enum { /* 38 */ ZO_LIMB_38, /* 39 */ ZO_LIMB_39, /* 40 */ ZO_LIMB_MAX, -} BossZOLimbs; +} ZoSarumarineLimbs; typedef enum { /* 0 */ ZO_BSF_0, @@ -238,7 +238,7 @@ typedef enum { /* 148 */ ZO_BSF_148, /* 149 */ ZO_BSF_149, /* 150 */ ZO_BSF_MAX, -} BossZObsfwork; +} ZoSarumarinebsfwork; typedef enum { /* 0 */ ZO_BSS_0, @@ -312,7 +312,7 @@ typedef enum { /* 68 */ ZO_BSS_68, /* 69 */ ZO_BSS_69, /* 70 */ ZO_BSS_MAX, -} BossZObsswork; +} ZoSarumarinebsswork; typedef enum { /* 0 */ ZO_SWK_0, @@ -356,7 +356,7 @@ typedef enum { /* 38 */ ZO_SWK_38, /* 39 */ ZO_SWK_39, /* 40 */ ZO_SWK_MAX, -} BossZOswork; +} ZoSarumarineswork; typedef enum { /* 0 */ ZO_FWK_0, @@ -410,7 +410,7 @@ typedef enum { /* 48 */ ZO_FWK_48, /* 49 */ ZO_FWK_49, /* 50 */ ZO_FWK_MAX, -} BossZOfwork; +} ZoSarumarinefwork; typedef enum { /* 0 */ ZO_VWK_0, @@ -464,24 +464,24 @@ typedef enum { /* 48 */ ZO_VWK_48, /* 49 */ ZO_VWK_49, /* 50 */ ZO_VWK_MAX, -} BossZOvwork; +} ZoSarumarinevwork; s32 sZoLimbTimers[ZO_LIMB_MAX]; s32 sZoSwork[ZO_BSS_MAX]; f32 sZoFwork[ZO_BSF_MAX]; -void Zoness_8018FF50(Actor* this) { - f32 temp; +void Zoness_8018FF50(ZoEnergyBall* this) { + f32 x; this->obj.rot.y = RAD_TO_DEG( Math_Atan2F(gPlayer[0].cam.eye.x - this->obj.pos.x, gPlayer[0].cam.eye.z - (this->obj.pos.z + gPathProgress))); - temp = sqrtf(SQ(gPlayer[0].cam.eye.z - (this->obj.pos.z + gPathProgress)) + - SQ(gPlayer[0].cam.eye.x - this->obj.pos.x)); - this->obj.rot.x = RAD_TO_DEG(-Math_Atan2F(gPlayer[0].cam.eye.y - this->obj.pos.y, temp)); + x = sqrtf(SQ(gPlayer[0].cam.eye.z - (this->obj.pos.z + gPathProgress)) + + SQ(gPlayer[0].cam.eye.x - this->obj.pos.x)); + this->obj.rot.x = RAD_TO_DEG(-Math_Atan2F(gPlayer[0].cam.eye.y - this->obj.pos.y, x)); } -void Zoness_SetupDebris(ActorDebris* this, Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state, f32 scale, - s32 timerBC, s32 unk48) { +void Zoness_ActorDebris_Setup(ActorDebris* this, Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state, + f32 scale, s32 timerBC, s32 unk48) { Actor_Initialize(this); this->obj.status = OBJ_ACTIVE; this->obj.id = OBJ_ACTOR_DEBRIS; @@ -500,19 +500,19 @@ void Zoness_SetupDebris(ActorDebris* this, Vec3f* pos, Vec3f* rot, f32 xVel, f32 Object_SetInfo(&this->info, this->obj.id); } -void Zoness_SpawnDebris(Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state, f32 scale, s32 timerBC, - s32 unk48) { +void Zoness_ActorDebris_Spawn(Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state, f32 scale, s32 timerBC, + s32 unk48) { s32 i; for (i = ARRAY_COUNT(gActors) - 1; i > 0; i--) { if (gActors[i].obj.status == OBJ_FREE) { - Zoness_SetupDebris(&gActors[i], pos, rot, xVel, yVel, zVel, state, scale, timerBC, unk48); + Zoness_ActorDebris_Setup(&gActors[i], pos, rot, xVel, yVel, zVel, state, scale, timerBC, unk48); break; } } } -bool Zoness_8019019C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { +bool Zoness_ZoBird_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); if ((limbIndex >= 4) && (limbIndex < 10)) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -520,9 +520,9 @@ bool Zoness_8019019C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* t return false; } -void Zoness_80190204(s32 limbIndex, Vec3f* rot, void* thisx) { +void Zoness_ZoBird_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; - Actor* this = (Actor*) thisx; + ZoBird* this = (ZoBird*) thisx; if (this->state == 1) { switch (limbIndex) { @@ -574,15 +574,16 @@ void Zoness_80190204(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Zoness_Actor235_Draw(Actor235* this) { +void Zoness_ZoBird_Draw(ZoBird* this) { Vec3f frameTable[30]; Matrix_Scale(gCalcMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); Animation_GetFrameData(&D_ZO_600E5EC, this->animFrame, frameTable); - Animation_DrawSkeleton(3, D_ZO_600E7D8, frameTable, Zoness_8019019C, Zoness_80190204, this, gCalcMatrix); + Animation_DrawSkeleton(3, D_ZO_600E7D8, frameTable, Zoness_ZoBird_OverrideLimbDraw, Zoness_ZoBird_PostLimbDraw, + this, gCalcMatrix); } -void Zoness_Actor235_Update(Actor235* this) { +void Zoness_ZoBird_Update(ZoBird* this) { Vec3f src; Vec3f dest; s32 i; @@ -604,8 +605,8 @@ void Zoness_Actor235_Update(Actor235* this) { case 1: for (i = 0; i < 11; i++) { - Zoness_SpawnDebris(&this->vwork[i], &this->vwork[i + 11], RAND_FLOAT_CENTERED(20.0f), - RAND_FLOAT(-10.0f), RAND_FLOAT(10.0f), 41, this->scale, 200, i); + Zoness_ActorDebris_Spawn(&this->vwork[i], &this->vwork[i + 11], RAND_FLOAT_CENTERED(20.0f), + RAND_FLOAT(-10.0f), RAND_FLOAT(10.0f), 41, this->scale, 200, i); } this->itemDrop = DROP_NONE; Actor_Despawn(this); @@ -635,10 +636,10 @@ void Zoness_Actor235_Update(Actor235* this) { } } -void Zoness_80190790(Actor* this) { +void Zoness_80190790(ZoDodora* this) { s32 pad[2]; f32 temp1; - PosRot* temp2; + PosRot* snakePosRot; Vec3f sp44; Vec3f sp38; s32 i; @@ -648,6 +649,7 @@ void Zoness_80190790(Actor* this) { if (this->counter_04E >= 200) { this->counter_04E = 0; } + this->fwork[0] += 4.0f; this->vel.y = SIN_DEG(this->fwork[0]) * 20.0f; this->rot_0F4.x = -this->vel.y * 2.5f; @@ -655,7 +657,7 @@ void Zoness_80190790(Actor* this) { this->rot_0F4.z = SIN_DEG(this->fwork[1]) * 30.0f; for (i = 0, otherActor = gActors; i < ARRAY_COUNT(gActors); i++, otherActor++) { - if ((otherActor->obj.status == OBJ_ACTIVE) && (otherActor->obj.id == OBJ_ACTOR_239) && + if ((otherActor->obj.status == OBJ_ACTIVE) && (otherActor->obj.id == OBJ_ACTOR_ZO_DODORA_WP_COUNT) && (otherActor->iwork[0] == this->iwork[0])) { temp1 = Math_RadToDeg( Math_Atan2F(otherActor->obj.pos.x - this->obj.pos.x, otherActor->obj.pos.z - this->obj.pos.z)); @@ -668,29 +670,34 @@ void Zoness_80190790(Actor* this) { break; } } + Matrix_RotateY(gCalcMatrix, this->rot_0F4.y * M_DTOR, MTXF_NEW); + sp44.x = 0.f; sp44.y = 0.f; sp44.z = 20.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); + this->vel.x = sp38.x; this->vel.z = sp38.z; - temp2 = &gZOSnakePosRots[this->counter_04E]; - temp2->pos.x = this->obj.pos.x; - temp2->pos.y = this->obj.pos.y; - temp2->pos.z = this->obj.pos.z; - temp2->rot.x = this->rot_0F4.x; - temp2->rot.y = this->rot_0F4.y; - temp2->rot.z = this->rot_0F4.z; + + snakePosRot = &gZoDodoraPosRots[this->counter_04E]; + snakePosRot->pos.x = this->obj.pos.x; + snakePosRot->pos.y = this->obj.pos.y; + snakePosRot->pos.z = this->obj.pos.z; + snakePosRot->rot.x = this->rot_0F4.x; + snakePosRot->rot.y = this->rot_0F4.y; + snakePosRot->rot.z = this->rot_0F4.z; } -void Zoness_Actor236_Update(Actor* this) { +void Zoness_ZoDodora_Update(ZoDodora* this) { f32 sp2C; s32 sp28; if ((this->timer_0C0 == 0) && Play_CheckDynaFloorCollision(&sp2C, &sp28, this->obj.pos.x, this->obj.pos.y - 50.0f, this->obj.pos.z)) { - func_effect_8008377C(this->obj.pos.x, sp2C, this->obj.pos.z + 150.0f, 0.0f, 1.7f); + Effect_Effect391_Spawn(this->obj.pos.x, sp2C, this->obj.pos.z + 150.0f, 0.0f, 1.7f); if (this->vel.y >= 0.0f) { AUDIO_PLAY_SFX(NA_SE_OUT_SPLASH_L, this->sfxSource, 4); } else { @@ -698,7 +705,9 @@ void Zoness_Actor236_Update(Actor* this) { } this->timer_0C0 = 30; } + Zoness_80190790(this); + if (this->dmgType != DMG_NONE) { this->dmgType = DMG_NONE; AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); @@ -722,6 +731,7 @@ void Zoness_80190B4C(f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, f32 zRot, Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); + if (arg7 != 0) { RCP_SetupDL_64(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 40, 40, 255, 255); @@ -735,20 +745,19 @@ typedef struct { Hitbox boxes[1]; } JntHitbox; -void Zoness_80190D0C(Actor* this) { - Hitbox* var_s2 = (((JntHitbox*) SEGMENTED_TO_VIRTUAL(D_ZO_602BC58))->boxes); +void Zoness_80190D0C(ZoDodora* this) { + Hitbox* hitbox = (((JntHitbox*) SEGMENTED_TO_VIRTUAL(aZoDodoraHitbox))->boxes); s32 i; s32 k; PosRot* temp_s0; - this->unk_04A = 0; - for (i = this->unk_04A; i < 20; i++, var_s2++) { + for (i = this->unk_04A = 0; i < 20; i++, hitbox++) { k = (D_i3_801BF56C[i] + this->counter_04E) % 200; - temp_s0 = &gZOSnakePosRots[k]; + temp_s0 = &gZoDodoraPosRots[k]; - var_s2->z.offset = temp_s0->pos.z - this->obj.pos.z; - var_s2->y.offset = temp_s0->pos.y - this->obj.pos.y; - var_s2->x.offset = temp_s0->pos.x - this->obj.pos.x; + hitbox->z.offset = temp_s0->pos.z - this->obj.pos.z; + hitbox->y.offset = temp_s0->pos.y - this->obj.pos.y; + hitbox->x.offset = temp_s0->pos.x - this->obj.pos.x; Zoness_80190B4C(temp_s0->pos.x, temp_s0->pos.y, temp_s0->pos.z, temp_s0->rot.x, temp_s0->rot.y, temp_s0->rot.z, D_i3_801BF594[i], this->timer_0C6 % 2U); if (gPlayState != PLAY_PAUSE) { @@ -757,13 +766,13 @@ void Zoness_80190D0C(Actor* this) { } } -void Zoness_Actor236_Draw(Actor236* this) { +void Zoness_ZoDodora_Draw(ZoDodora* this) { Zoness_80190D0C(this); } -void Zoness_80190F28(s32 limbIndex, Vec3f* rot, void* thisx) { +void Zoness_ZoFish_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp2C = { 0.0f, 0.0f, 0.0f }; - Actor* this = (Actor*) thisx; + ZoFish* this = (ZoFish*) thisx; if (this->state == 3) { switch (limbIndex) { @@ -783,7 +792,7 @@ void Zoness_80190F28(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Zoness_Actor238_Update(Actor238* this) { +void Zoness_ZoFish_Update(ZoFish* this) { Vec3f src; Vec3f dest; f32 sp7C; @@ -851,14 +860,14 @@ void Zoness_Actor238_Update(Actor238* this) { } this->timer_0C0 = 10; this->iwork[0]++; - func_effect_8008377C(this->obj.pos.x, sp7C, this->obj.pos.z, 0.0f, 0.7f); + Effect_Effect391_Spawn(this->obj.pos.x, sp7C, this->obj.pos.z, 0.0f, 0.7f); } break; case 3: for (i = 0; i < 3; i++) { - Zoness_SpawnDebris(&this->vwork[i], &this->vwork[3 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(-10.0f), - RAND_FLOAT(10.0f), 42, this->scale, 200, i); + Zoness_ActorDebris_Spawn(&this->vwork[i], &this->vwork[3 + i], RAND_FLOAT_CENTERED(20.0f), + RAND_FLOAT(-10.0f), RAND_FLOAT(10.0f), 42, this->scale, 200, i); } this->itemDrop = DROP_SILVER_RING_25p; Actor_Despawn(this); @@ -880,44 +889,43 @@ void Zoness_Actor238_Update(Actor238* this) { } } -void Zoness_Actor238_Draw(Actor238* this) { +void Zoness_ZoFish_Draw(ZoFish* this) { Vec3f frameTable[20]; Matrix_Scale(gCalcMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); Animation_GetFrameData(&D_ZO_601AA48, this->animFrame, frameTable); - Animation_DrawSkeleton(3, D_ZO_601AB14, frameTable, NULL, Zoness_80190F28, this, gCalcMatrix); + Animation_DrawSkeleton(3, D_ZO_601AB14, frameTable, NULL, Zoness_ZoFish_PostLimbDraw, this, gCalcMatrix); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } -void Zoness_801915A4(Actor* this) { +void Zoness_ZoEnergyBall_Init(ZoEnergyBall* this) { s32 i; - Actor* actor241; + Actor* energyBall; this->health = 50; this->fwork[0] = this->obj.pos.z - 10000.0f; - for (i = 0, actor241 = &gActors[0]; i < ARRAY_COUNT(gActors); i++, actor241++) { - if (actor241->obj.status == OBJ_FREE) { - Actor_Initialize(actor241); - actor241->obj.status = OBJ_INIT; - actor241->obj.id = OBJ_ACTOR_241; - actor241->obj.pos.x = this->obj.pos.x; - actor241->obj.pos.y = this->obj.pos.y; - actor241->obj.pos.z = this->obj.pos.z; - actor241->iwork[0] = this->index + 1; - Object_SetInfo(&actor241->info, actor241->obj.id); + for (i = 0, energyBall = &gActors[0]; i < ARRAY_COUNT(gActors); i++, energyBall++) { + if (energyBall->obj.status == OBJ_FREE) { + Actor_Initialize(energyBall); + energyBall->obj.status = OBJ_INIT; + energyBall->obj.id = OBJ_ACTOR_ZO_ENERGY_BALL; + energyBall->obj.pos.x = this->obj.pos.x; + energyBall->obj.pos.y = this->obj.pos.y; + energyBall->obj.pos.z = this->obj.pos.z; + energyBall->iwork[0] = this->index + 1; + Object_SetInfo(&energyBall->info, energyBall->obj.id); this->iwork[0] = i; break; } } - if (i >= ARRAY_COUNT(gActors)) { - actor241->obj.status = OBJ_FREE; + energyBall->obj.status = OBJ_FREE; } } -void Zoness_Actor240_Update(Actor240* this) { +void Zoness_ZGull_Update(ZGull* this) { f32 sp64; f32 sp60; f32 sp5C; @@ -945,7 +953,6 @@ void Zoness_Actor240_Update(Actor240* this) { } this->animFrame++; - if (this->animFrame >= Animation_GetFrameCount(&D_ENMY_PLANET_40057AC)) { this->animFrame = 0; } @@ -1020,15 +1027,16 @@ void Zoness_Actor240_Update(Actor240* this) { } } -void Zoness_Actor240_Draw(Actor240* this) { +void Zoness_ZGull_Draw(ZGull* this) { Animation_GetFrameData(&D_ENMY_PLANET_40057AC, this->animFrame, this->vwork); Animation_DrawSkeleton(1, D_ENMY_PLANET_40058B8, this->vwork, NULL, NULL, &this->index, &gIdentityMatrix); } -void Zoness_80191BB8(Actor* this) { +void Zoness_ZoEnergyBall_Init2(ZoEnergyBall* this) { + /* Unimplemented */ } -void Zoness_Actor241_Update(Actor241* this) { +void Zoness_ZoEnergyBall_Update(ZoEnergyBall* this) { f32 sp4C; s32 sp48; @@ -1039,8 +1047,8 @@ void Zoness_Actor241_Update(Actor241* this) { if (Play_CheckDynaFloorCollision(&sp4C, &sp48, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z) && (this->state == 0)) { - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 20.0f, 7); - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.5f, 50); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 20.0f, 7); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.5f, 50); Object_Kill(&this->obj, this->sfxSource); this->iwork[0] = 0; Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_MINI_BOMB); @@ -1050,14 +1058,15 @@ void Zoness_Actor241_Update(Actor241* this) { Zoness_8018FF50(this); - if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C484(RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.x, RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.y, - RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.z, this->vel.x, this->vel.y, this->vel.z, - RAND_FLOAT(0.05f) + 0.05f, 0); + if ((gGameFrameCount % 2) == 0) { + Effect_Effect389_Spawn(RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.x, + RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.y, + RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.z, this->vel.x, this->vel.y, this->vel.z, + RAND_FLOAT(0.05f) + 0.05f, 0); } } -void Zoness_Actor241_Draw(Actor241* this) { +void Zoness_ZoEnergyBall_Draw(ZoEnergyBall* this) { RCP_SetupDL_40(); gSPDisplayList(gMasterDisp++, D_ZO_6019EB0); Matrix_RotateY(gGfxMatrix, this->fwork[0] * 0.7f * M_DTOR, MTXF_APPLY); @@ -1066,32 +1075,32 @@ void Zoness_Actor241_Draw(Actor241* this) { gSPDisplayList(gMasterDisp++, D_ZO_6023D50); } -void Zoness_80191E94(s32 limbIndex, Vec3f* rot, void* thisx) { +void Zoness_ZoTroika_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; - Actor* this = thisx; + ZoTroika* this = (ZoTroika*) thisx; if (this->state == 4) { switch (limbIndex) { case 1: Matrix_MultVec3f(gCalcMatrix, &sp24, &this->vwork[0]); Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[6]); - return; + break; case 2: Matrix_MultVec3f(gCalcMatrix, &sp24, &this->vwork[1]); Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[7]); - return; + break; case 3: Matrix_MultVec3f(gCalcMatrix, &sp24, &this->vwork[2]); Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[8]); - return; + break; case 4: Matrix_MultVec3f(gCalcMatrix, &sp24, &this->vwork[3]); Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[9]); - return; + break; case 8: Matrix_MultVec3f(gCalcMatrix, &sp24, &this->vwork[4]); Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[10]); - return; + break; case 9: Matrix_MultVec3f(gCalcMatrix, &sp24, &this->vwork[5]); Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[11]); @@ -1100,15 +1109,15 @@ void Zoness_80191E94(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Zoness_Actor242_Draw(Actor242* this) { +void Zoness_ZoTroika_Draw(ZoTroika* this) { Vec3f jointTable[20]; Matrix_Scale(gCalcMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); Animation_GetFrameData(&D_ZO_60195EC, this->animFrame, jointTable); - Animation_DrawSkeleton(3, D_ZO_6019738, jointTable, NULL, Zoness_80191E94, this, gCalcMatrix); + Animation_DrawSkeleton(3, D_ZO_6019738, jointTable, NULL, Zoness_ZoTroika_PostLimbDraw, this, gCalcMatrix); } -void Zoness_Actor242_Update(Actor242* this) { +void Zoness_ZoTroika_Update(ZoTroika* this) { s32 i; f32 spB8; f32 x; @@ -1135,7 +1144,7 @@ void Zoness_Actor242_Update(Actor242* this) { if ((this->iwork[0] == 0) && (Play_CheckDynaFloorCollision(&spB8, &spA0, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z) != 0)) { - func_effect_8008377C(this->obj.pos.x, spB8, this->obj.pos.z + 100.0f, 0.0f, 1.5f); + Effect_Effect391_Spawn(this->obj.pos.x, spB8, this->obj.pos.z + 100.0f, 0.0f, 1.5f); this->iwork[0]++; @@ -1220,8 +1229,8 @@ void Zoness_Actor242_Update(Actor242* this) { case 4: for (i = 0; i < 6; i++) { - Zoness_SpawnDebris(&this->vwork[i], &this->vwork[i + 6], RAND_FLOAT_CENTERED(40.0f), RAND_FLOAT(-10.0f), - RAND_FLOAT(20.0f), 44, this->scale, 200, i); + Zoness_ActorDebris_Spawn(&this->vwork[i], &this->vwork[i + 6], RAND_FLOAT_CENTERED(40.0f), + RAND_FLOAT(-10.0f), RAND_FLOAT(20.0f), 44, this->scale, 200, i); } this->itemDrop = DROP_BOMB; Actor_Despawn(this); @@ -1241,9 +1250,9 @@ void Zoness_Actor242_Update(Actor242* this) { } } -void Zoness_801926F4(s32 limbIndex, Vec3f* rot, void* thisx) { +void Zoness_ZoShrimp_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; - Actor* this = (Actor*) thisx; + ZoShrimp* this = (ZoShrimp*) thisx; if (this->state == 2) { switch (limbIndex) { @@ -1271,7 +1280,7 @@ void Zoness_801926F4(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Zoness_Actor243_Update(Actor243* this) { +void Zoness_ZoShrimp_Update(ZoShrimp* this) { Vec3f src; Vec3f dest; f32 sp74; @@ -1328,8 +1337,8 @@ void Zoness_Actor243_Update(Actor243* this) { case 2: for (i = 0; i < 5; i++) { - Zoness_SpawnDebris(&this->vwork[i], &this->vwork[5 + i], RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(-10.0f), - RAND_FLOAT(10.0f), 43, this->scale, 200, i); + Zoness_ActorDebris_Spawn(&this->vwork[i], &this->vwork[5 + i], RAND_FLOAT_CENTERED(20.0f), + RAND_FLOAT(-10.0f), RAND_FLOAT(10.0f), 43, this->scale, 200, i); } this->itemDrop = DROP_NONE; Actor_Despawn(this); @@ -1342,7 +1351,7 @@ void Zoness_Actor243_Update(Actor243* this) { if ((this->iwork[0] == 0) && (Play_CheckDynaFloorCollision(&sp74, &sp70, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z) != 0)) { this->iwork[0]++; - func_effect_8008377C(this->obj.pos.x, sp74, this->obj.pos.z, 0.0f, 0.7f); + Effect_Effect391_Spawn(this->obj.pos.x, sp74, this->obj.pos.z, 0.0f, 0.7f); if (this->vel.y >= 0.0f) { AUDIO_PLAY_SFX(NA_SE_OUT_SPLASH_L, this->sfxSource, 4); } else { @@ -1351,16 +1360,16 @@ void Zoness_Actor243_Update(Actor243* this) { } } -void Zoness_Actor243_Draw(Actor243* this) { +void Zoness_ZoShrimp_Draw(ZoShrimp* this) { Vec3f frameTable[20]; Animation_GetFrameData(&D_ZO_6021ABC, this->animFrame, frameTable); - Animation_DrawSkeleton(3, D_ZO_6021B88, frameTable, NULL, Zoness_801926F4, this, gCalcMatrix); + Animation_DrawSkeleton(3, D_ZO_6021B88, frameTable, NULL, Zoness_ZoShrimp_PostLimbDraw, this, gCalcMatrix); } -void Zoness_80192C84(s32 limbIndex, Vec3f* rot, void* thisx) { +void Zoness_ZoObnema_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; - Actor* this = (Actor*) thisx; + ZoObnema* this = (ZoObnema*) thisx; if (this->state == 3) { switch (limbIndex) { @@ -1404,7 +1413,7 @@ void Zoness_80192C84(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Zoness_Actor244_Update(Actor244* this) { +void Zoness_ZoObnema_Update(ZoObnema* this) { s32 i; Vec3f src; Vec3f dest; @@ -1449,8 +1458,8 @@ void Zoness_Actor244_Update(Actor244* this) { case 3: for (i = 0; i < 9; i++) { - Zoness_SpawnDebris(&this->vwork[i], &this->vwork[9 + i], RAND_FLOAT_CENTERED(40.0f), RAND_FLOAT(-10.0f), - RAND_FLOAT(20.0f), 59, this->scale, 200, i); + Zoness_ActorDebris_Spawn(&this->vwork[i], &this->vwork[9 + i], RAND_FLOAT_CENTERED(40.0f), + RAND_FLOAT(-10.0f), RAND_FLOAT(20.0f), 59, this->scale, 200, i); } this->itemDrop = DROP_BOMB_33p; Actor_Despawn(this); @@ -1478,11 +1487,11 @@ void Zoness_Actor244_Update(Actor244* this) { } } -void Zoness_Actor244_Draw(Actor* actor) { +void Zoness_ZoObnema_Draw(Actor* actor) { Vec3f sp28[30]; Animation_GetFrameData(&D_ZO_601AFB8, actor->animFrame, sp28); - Animation_DrawSkeleton(2, D_ZO_601B184, sp28, NULL, Zoness_80192C84, actor, gCalcMatrix); + Animation_DrawSkeleton(2, D_ZO_601B184, sp28, NULL, Zoness_ZoObnema_PostLimbDraw, actor, gCalcMatrix); } s32 D_i3_801BF5F0[6] = { @@ -1492,7 +1501,7 @@ f32 D_i3_801BF608[6] = { -45.0f, 0.0f, -45.0f, 0.0f, -45.0f, 0.0f, }; -void Zoness_BossZo_Init(BossZO* this) { +void Zoness_ZoSarumarine_Init(ZoSarumarine* this) { s32 i; gBossActive = true; @@ -1554,7 +1563,7 @@ void Zoness_BossZo_Init(BossZO* this) { for (i = 0; i < 2; i++) { Actor_Initialize(&gActors[i]); gActors[i].obj.status = OBJ_INIT; - gActors[i].obj.id = OBJ_ACTOR_248 + i; + gActors[i].obj.id = OBJ_ACTOR_ZO_CRANE_MAGNET + i; gActors[i].obj.pos.x = this->obj.pos.x; gActors[i].obj.pos.y = this->obj.pos.y; gActors[i].obj.pos.z = this->obj.pos.z; @@ -1588,7 +1597,7 @@ void Zoness_80193628(Object* obj, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 ar obj->rot.x, obj->rot.y, obj->rot.z, dest.x + arg6, dest.y, dest.z, 1.0f); } -void Zoness_801937D8(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 yRot) { +void Zoness_Effect394_Setup(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 yRot) { Vec3f src; Vec3f dest; @@ -1615,18 +1624,18 @@ void Zoness_801937D8(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 yRot) { Object_SetInfo(&this->info, this->obj.id); } -void Zoness_80193908(f32 xPos, f32 yPos, f32 zPos, f32 yRot) { +void Zoness_Effect394_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 yRot) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Zoness_801937D8(&gEffects[i], xPos, yPos, zPos, yRot); + Zoness_Effect394_Setup(&gEffects[i], xPos, yPos, zPos, yRot); break; } } } -void Zoness_80193970(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 yRot, s32 arg5) { +void Zoness_Effect394_Setup2(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 yRot, s32 arg5) { Vec3f src; Vec3f dest; @@ -1652,18 +1661,18 @@ void Zoness_80193970(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 yRot, s3 Object_SetInfo(&this->info, this->obj.id); } -void Zoness_80193A98(f32 xPos, f32 yPos, f32 zPos, f32 yRot, s32 arg5) { +void Zoness_Effect394_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 yRot, s32 arg5) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Zoness_80193970(&gEffects[i], xPos, yPos, zPos, yRot, arg5); + Zoness_Effect394_Setup2(&gEffects[i], xPos, yPos, zPos, yRot, arg5); break; } } } -void Zoness_80193B08(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 scale) { +void Zoness_Effect394_Setup3(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 scale) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_394; @@ -1690,12 +1699,12 @@ void Zoness_80193B08(Effect394* this, f32 xPos, f32 yPos, f32 zPos, f32 scale) { Object_SetInfo(&this->info, this->obj.id); } -void Zoness_80193C5C(f32 xPos, f32 yPos, f32 zPos, f32 scale) { +void Zoness_Effect394_Spawn3(f32 xPos, f32 yPos, f32 zPos, f32 scale) { s32 i; for (i = 80; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Zoness_80193B08(&gEffects[i], xPos, yPos, zPos, scale); + Zoness_Effect394_Setup3(&gEffects[i], xPos, yPos, zPos, scale); break; } } @@ -1710,8 +1719,8 @@ f32 Zoness_80193CC8(s32 arg0) { return var_fv1; } -bool Zoness_80193D08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { - Boss* this = (Boss*) thisx; +bool Zoness_ZoSarumarine_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + ZoSarumarine* this = (ZoSarumarine*) thisx; if (sZoLimbTimers[limbIndex] == LIMB_DESTROYED) { *dList = NULL; @@ -1856,9 +1865,9 @@ bool Zoness_80193D08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* t return false; } -void Zoness_80194394(s32 limbIndex, Vec3f* rot, void* thisx) { +void Zoness_ZoSarumarine_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f spB4; - Boss* this = (Boss*) thisx; + ZoSarumarine* this = (ZoSarumarine*) thisx; Vec3f spA4 = { 96.0f, 199.0f, -9.0f }; Vec3f sp98 = { 50.0f, 150.0f, -20.0f }; Vec3f sp8C = { 50.0f, 150.0f, 20.0f }; @@ -2002,10 +2011,11 @@ void Zoness_80194394(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Zoness_Boss_Draw(BossZO* this) { +void Zoness_ZoSarumarine_Draw(ZoSarumarine* this) { Matrix_Translate(gCalcMatrix, 0.0f, this->fwork[ZO_FWK_3], 0.0f, MTXF_APPLY); Matrix_Scale(gCalcMatrix, 2.6f, 2.6f, 2.6f, MTXF_APPLY); - Animation_DrawSkeleton(3, D_ZO_6019E18, this->vwork, Zoness_80193D08, Zoness_80194394, this, gCalcMatrix); + Animation_DrawSkeleton(3, D_ZO_6019E18, this->vwork, Zoness_ZoSarumarine_OverrideLimbDraw, + Zoness_ZoSarumarine_PostLimbDraw, this, gCalcMatrix); } f32 D_i3_801BF6BC[2] = { -600.0f, -3400.0f }; @@ -2013,8 +2023,7 @@ f32 D_i3_801BF6C4[2] = { 330.0f, 30.0f }; f32 D_i3_801BF6CC[2] = { 250.0f, -250.0f }; f32 D_i3_801BF6D4[2] = { 330.0f, 30.0f }; -// OBJ_BOSS_ZO action -void Zoness_Boss_Update(BossZO* this) { +void Zoness_ZoSarumarine_Update(ZoSarumarine* this) { f32 sp134; s32 sp130; s32 i; @@ -2072,8 +2081,8 @@ void Zoness_Boss_Update(BossZO* this) { if (sZoSwork[ZO_BSS_43] < 0) { sZoSwork[ZO_BSS_43] = 0; } - Zoness_80193A98(sZoFwork[ZO_BSF_102_X], sZoFwork[ZO_BSF_102_Y], sZoFwork[ZO_BSF_102_Z], this->obj.rot.y, - sZoSwork[ZO_BSS_43]); + Zoness_Effect394_Spawn2(sZoFwork[ZO_BSF_102_X], sZoFwork[ZO_BSF_102_Y], sZoFwork[ZO_BSF_102_Z], + this->obj.rot.y, sZoSwork[ZO_BSS_43]); sZoSwork[ZO_BSS_44] = 255; } else { sZoSwork[ZO_BSS_44] = (s32) this->obj.rot.y - 180.0f; @@ -2085,8 +2094,8 @@ void Zoness_Boss_Update(BossZO* this) { if (sZoSwork[ZO_BSS_44] < 0) { sZoSwork[ZO_BSS_44] = 0; } - Zoness_80193A98(sZoFwork[ZO_BSF_99_X], sZoFwork[ZO_BSF_99_Y], sZoFwork[ZO_BSF_99_Z], this->obj.rot.y, - sZoSwork[ZO_BSS_44]); + Zoness_Effect394_Spawn2(sZoFwork[ZO_BSF_99_X], sZoFwork[ZO_BSF_99_Y], sZoFwork[ZO_BSF_99_Z], + this->obj.rot.y, sZoSwork[ZO_BSS_44]); sZoSwork[ZO_BSS_43] = 255; } } @@ -2103,17 +2112,17 @@ void Zoness_Boss_Update(BossZO* this) { if ((this->swork[ZO_SWK_9] == 0) && (this->state >= 2) && (this->health != 0)) { if (this->swork[ZO_SWK_10] == 0) { - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 50.0f, 0.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 46.0f, 19.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 35.0f, 35.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 19.0f, 46.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 0.0f, 50.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 50.0f, 0.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 46.0f, 19.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 35.0f, 35.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 19.0f, 46.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 0.0f, 50.0f, 5.0f); } else { - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -50.0f, 0.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -46.0f, 19.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -35.0f, 35.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -19.0f, 46.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 0.0f, 50.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -50.0f, 0.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -46.0f, 19.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -35.0f, 35.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -19.0f, 46.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 0.0f, 50.0f, 5.0f); } this->swork[ZO_SWK_11]++; this->swork[ZO_SWK_11] &= 1; @@ -2146,10 +2155,14 @@ void Zoness_Boss_Update(BossZO* this) { AUDIO_PLAY_BGM(NA_BGM_BOSS_ZO); sZoSwork[ZO_BSS_55] = 1; } - func_effect_8008377C(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 100.0f, 5.0f, 3.0f); - func_effect_8008377C(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 100.0f, 5.0f, 3.0f); + Effect_Effect391_Spawn(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 100.0f, 5.0f, + 3.0f); + Effect_Effect391_Spawn(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 100.0f, 5.0f, + 3.0f); } - func_effect_8008377C(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 100.0f, sp100, spFC); + + Effect_Effect391_Spawn(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 100.0f, sp100, spFC); + if (this->timer_050 == 43) { AUDIO_PLAY_SFX(NA_SE_OUT_SPLASH_L, this->sfxSource, 4); } else { @@ -2189,12 +2202,12 @@ void Zoness_Boss_Update(BossZO* this) { if ((this->timer_050 == 0) && ((gGameFrameCount % 4) == 0)) { if (sZoSwork[ZO_BSS_9] != 0) { - Zoness_80193908(sZoFwork[ZO_BSF_29_X], sZoFwork[ZO_BSF_29_Y], sZoFwork[ZO_BSF_29_Z], - this->obj.rot.y); + Zoness_Effect394_Spawn(sZoFwork[ZO_BSF_29_X], sZoFwork[ZO_BSF_29_Y], sZoFwork[ZO_BSF_29_Z], + this->obj.rot.y); } if (sZoSwork[ZO_BSS_10] != 0) { - Zoness_80193908(sZoFwork[ZO_BSF_32_X], sZoFwork[ZO_BSF_32_Y], sZoFwork[ZO_BSF_32_Z], - this->obj.rot.y); + Zoness_Effect394_Spawn(sZoFwork[ZO_BSF_32_X], sZoFwork[ZO_BSF_32_Y], sZoFwork[ZO_BSF_32_Z], + this->obj.rot.y); } sZoSwork[ZO_BSS_6]++; @@ -2296,49 +2309,65 @@ void Zoness_Boss_Update(BossZO* this) { } if (sZoSwork[ZO_BSS_24] != 0) { sZoSwork[ZO_BSS_20] = 1; + if (this->swork[ZO_SWK_7] == 0) { this->swork[ZO_SWK_7]++; this->swork[ZO_SWK_7] &= 1; Radio_PlayMessage(gMsg_ID_6078, RCID_BOSS_ZONESS); } + if (this->timer_056 == 0) { this->swork[ZO_SWK_1]++; this->swork[ZO_SWK_1] &= 1; this->timer_056 = 100; } + this->fwork[ZO_FWK_5] += 4.0f; this->vel.x = COS_DEG(this->fwork[ZO_FWK_5]) * 40.0f; padF4 = Math_Atan2F(this->fwork[ZO_FWK_6] - this->obj.pos.x, gPlayer[0].cam.eye.z - gPathProgress + D_i3_801BF6BC[this->swork[ZO_SWK_1]] - this->obj.pos.z); padF4 = Math_RadToDeg(padF4); + Math_SmoothStepToAngle(&this->fwork[ZO_FWK_7], padF4, 0.1f, 100.0f, 0.001f); Matrix_RotateY(gCalcMatrix, this->fwork[ZO_FWK_7] * M_DTOR, MTXF_NEW); + spE4.x = spE4.y = 0.0f; spE4.z = 20.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &spE4, &spCC); + var_s0 = 0; this->vel.z = spCC.z - gPathVelZ; + if (this->vel.x > 0.0f) { var_s0 = 1; } + if (var_s0 != this->swork[ZO_SWK_2]) { this->swork[ZO_SWK_2] = var_s0; this->fwork[ZO_FWK_8] = 0.0f; } + Math_SmoothStepToF(&this->fwork[ZO_FWK_8], 10.0f, 0.01f, 0.1f, 0.0f); Math_SmoothStepToAngle(&this->obj.rot.z, D_i3_801BF6C4[var_s0], 0.1f, this->fwork[ZO_FWK_8], 0.00001f); Math_SmoothStepToAngle(&this->obj.rot.y, D_i3_801BF6D4[var_s0], 0.1f, this->fwork[ZO_FWK_8], 0.00001f); + Matrix_RotateX(gCalcMatrix, -this->obj.rot.x * M_DTOR, MTXF_NEW); Matrix_RotateY(gCalcMatrix, -this->obj.rot.y * M_DTOR, MTXF_APPLY); + spE4.x = gPlayer[0].pos.x - sZoFwork[ZO_BSF_93_X]; spE4.y = gPlayer[0].pos.y - sZoFwork[ZO_BSF_93_Y]; spE4.z = gPlayer[0].trueZpos - sZoFwork[ZO_BSF_93_Z]; + Matrix_MultVec3f(gCalcMatrix, &spE4, &spC0); + sp10C = Math_Atan2F(spC0.x, spC0.z); sp10C = Math_RadToDeg(sp10C); + sp110 = Math_Atan2F(spC0.y, sqrtf(SQ(spC0.x) + SQ(spC0.z))); sp110 = Math_RadToDeg(-sp110); + if ((sp10C > 40.0f) && (sp10C < 180.0f)) { sp10C = 40.0f; } @@ -2351,14 +2380,18 @@ void Zoness_Boss_Update(BossZO* this) { if ((sp10C < 320.0f) && (sp10C > 180.0f)) { sp110 = 320.0f; } + spE4.x = gPlayer[0].pos.x - sZoFwork[ZO_BSF_96_X]; spE4.y = gPlayer[0].pos.y - sZoFwork[ZO_BSF_96_Y]; spE4.z = gPlayer[0].trueZpos - sZoFwork[ZO_BSF_96_Z]; + Matrix_MultVec3f(gCalcMatrix, &spE4, &spB4); + sp104 = Math_Atan2F(spB4.x, spB4.z); sp104 = Math_RadToDeg(sp104); sp108 = Math_Atan2F(spB4.y, sqrtf(SQ(spB4.x) + SQ(spB4.z))); sp108 = Math_RadToDeg(-sp108); + if ((sp104 > 40.0f) && (sp104 < 180.0f)) { sp104 = 40.0f; } @@ -2371,10 +2404,12 @@ void Zoness_Boss_Update(BossZO* this) { if ((sp104 < 320.0f) && (sp104 > 180.0f)) { sp108 = 320.0f; } + Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_8], sp10C, 0.2f, 2.0f, 0.0f); Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_7], sp110, 0.2f, 2.0f, 0.0f); Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_10], sp104, 0.2f, 2.0f, 0.0f); Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_9], sp108, 0.2f, 2.0f, 0.0f); + Zoness_80198BE8(this, 0); Zoness_80198BE8(this, 1); } @@ -2384,8 +2419,10 @@ void Zoness_Boss_Update(BossZO* this) { if (this->swork[ZO_SWK_15] == 0) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 0; } + Math_SmoothStepToAngle(&this->obj.rot.z, this->fwork[ZO_FWK_9], 0.1f, 100.0f, 0.00001f); Math_SmoothStepToAngle(&this->fwork[ZO_FWK_9], 0.0f, 0.1f, 100.0f, 0.00001f); + if ((sZoSwork[ZO_BSS_11] == 0) && (sZoLimbTimers[ZO_LIMB_7] != LIMB_DESTROYED)) { Zoness_80198F3C(this, 0, 46); if (sZoFwork[ZO_BSF_17] > -400.0f) { @@ -2421,6 +2458,7 @@ void Zoness_Boss_Update(BossZO* this) { case 5: Math_SmoothStepToAngle(&this->obj.rot.z, this->fwork[ZO_FWK_9], 0.1f, 100.0f, 0.00001f); Math_SmoothStepToAngle(&this->fwork[ZO_FWK_9], 0.0f, 0.1f, 100.0f, 0.00001f); + switch (sZoSwork[ZO_BSS_16]) { case 0: if (sZoSwork[ZO_BSS_13] != 0) { @@ -2511,9 +2549,9 @@ void Zoness_Boss_Update(BossZO* this) { spD8.y = Math_ModF(RAND_FLOAT_CENTERED(60.0f) + 360.0f, 360.0f); spD8.z = this->obj.rot.z; for (i = 0; i < 5; i++) { - Zoness_SpawnDebris(&spE4, &spD8, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(20.0f), - RAND_FLOAT_CENTERED(30.0f), 4, 1.0f, RAND_FLOAT(15.0f) + (this->scale * 10.0f), - 0); + Zoness_ActorDebris_Spawn(&spE4, &spD8, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(20.0f), + RAND_FLOAT_CENTERED(30.0f), 4, 1.0f, + RAND_FLOAT(15.0f) + (this->scale * 10.0f), 0); } } @@ -2524,10 +2562,12 @@ void Zoness_Boss_Update(BossZO* this) { sZoLimbTimers[ZO_LIMB_36] = 15; sZoLimbTimers[ZO_LIMB_25] = 15; } - func_effect_8007C120(sZoFwork[ZO_BSF_55_X], sZoFwork[ZO_BSF_55_Y], sZoFwork[ZO_BSF_55_Z], this->vel.x, - this->vel.y, this->vel.z, 0.2f, 10); + + Effect_Effect390_Spawn(sZoFwork[ZO_BSF_55_X], sZoFwork[ZO_BSF_55_Y], sZoFwork[ZO_BSF_55_Z], this->vel.x, + this->vel.y, this->vel.z, 0.2f, 10); func_effect_8007D0E0(sZoFwork[ZO_BSF_55_X] + RAND_FLOAT_CENTERED(200.0f), sZoFwork[ZO_BSF_55_Y] + RAND_RANGE(-160.0f, 640.0f), sZoFwork[ZO_BSF_55_Z], 10.0f); + if (this->timer_050 == 30) { Radio_PlayMessage(gMsg_ID_6079, RCID_BOSS_ZONESS); } @@ -2535,8 +2575,8 @@ void Zoness_Boss_Update(BossZO* this) { gEffects[99].obj.status = gEffects[98].obj.status = OBJ_FREE; sZoFwork[ZO_BSF_25] = -1000.0f; sZoFwork[ZO_BSF_23] = 10.0f; - gShowBossHealth = 0; - func_effect_8007A568(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 80.0f); + gShowBossHealth = false; + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 80.0f); if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) || (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) { gCsFrameCount = 0; @@ -2564,8 +2604,8 @@ void Zoness_Boss_Update(BossZO* this) { D_ctx_801779A8[0] = 20; if (((gGameFrameCount % 8) == 0) && (Play_CheckDynaFloorCollision(&sp134, &sp130, this->obj.pos.x, -300.0f, this->obj.pos.z) != 0)) { - func_effect_8008377C(RAND_FLOAT_CENTERED(500.0f) + this->obj.pos.x, sp134 - 300.0f, - RAND_FLOAT_CENTERED(3000.0f) + this->obj.pos.z, 5.0f, 2.0f); + Effect_Effect391_Spawn(RAND_FLOAT_CENTERED(500.0f) + this->obj.pos.x, sp134 - 300.0f, + RAND_FLOAT_CENTERED(3000.0f) + this->obj.pos.z, 5.0f, 2.0f); } if ((this->timer_050 == 0) || (this->obj.pos.y < -800.0f)) { Object_Kill(&this->obj, this->sfxSource); @@ -2578,9 +2618,12 @@ void Zoness_Boss_Update(BossZO* this) { ((sZoSwork[ZO_BSS_33] == 0) || (sZoSwork[ZO_BSS_33] >= 30))) { sZoSwork[ZO_BSS_18]--; } + Zoness_8019962C(this, 0.0f); + Math_SmoothStepToF(&sZoFwork[ZO_BSF_1], -130.0f, 0.1f, 2.0f, 0.00001f); Math_SmoothStepToF(&sZoFwork[ZO_BSF_11], 130.0f, 0.1f, 2.0f, 0.00001f); + if (sZoSwork[ZO_BSS_18] < 331) { if (sZoSwork[ZO_BSS_8] != 0) { if ((sZoSwork[ZO_BSS_20] == 0) && (this->swork[ZO_SWK_6] == 1)) { @@ -2642,8 +2685,10 @@ void Zoness_Boss_Update(BossZO* this) { break; } sZoFwork[ZO_BSF_2] += 20.0f; + spE4.x = gPlayer[0].pos.x - this->obj.pos.x; spE4.z = gPlayer[0].trueZpos - this->obj.pos.z; + Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_14], Math_RadToDeg(Math_Atan2F(spE4.x, spE4.z)), 0.5f, 100.0f, 0.001f); Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_0], sZoFwork[ZO_BSF_76], 0.2f, 4.0f, 0.0001f); @@ -2666,32 +2711,45 @@ void Zoness_Boss_Update(BossZO* this) { if ((this->state >= 3) && (this->state < 6)) { Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &spA8, &spD8); Matrix_MultVec3f(gCalcMatrix, &sp9C, &spCC); + sp78 = spD8; sp6C = spCC; + Matrix_RotateX(gCalcMatrix, -this->obj.rot.x * M_DTOR, MTXF_NEW); Matrix_RotateY(gCalcMatrix, -this->obj.rot.y * M_DTOR, MTXF_APPLY); + spE4.x = gPlayer[0].pos.x - (this->obj.pos.x + spD8.x); spE4.y = gPlayer[0].pos.y - (this->obj.pos.y + spD8.y); spE4.z = gPlayer[0].trueZpos - (this->obj.pos.z + spD8.z); + Matrix_MultVec3f(gCalcMatrix, &spE4, &spD8); + sp11C = Math_Atan2F(spD8.x, spD8.z); sp11C = Math_RadToDeg(sp11C); + sp120 = Math_Atan2F(spD8.y, sqrtf(SQ(spD8.x) + SQ(spD8.z))); sp120 = Math_RadToDeg(-sp120); + spE4.x = gPlayer[0].pos.x - (this->obj.pos.x + spCC.x); spE4.y = gPlayer[0].pos.y - (this->obj.pos.y + spCC.y); spE4.z = gPlayer[0].trueZpos - (this->obj.pos.z + spCC.z); + Matrix_MultVec3f(gCalcMatrix, &spE4, &spCC); + sp114 = Math_Atan2F(spCC.x, spCC.z); sp114 = Math_RadToDeg(sp114); + sp118 = Math_Atan2F(spCC.y, sqrtf(SQ(spCC.x) + SQ(spCC.z))); sp118 = Math_RadToDeg(-sp118); + Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_15], sp11C, 0.2f, 2.0f, 0.0f); Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_5], sp120, 0.2f, 2.0f, 0.0f); Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_16], sp114, 0.2f, 2.0f, 0.0f); Math_SmoothStepToAngle(&sZoFwork[ZO_BSF_12], sp118, 0.2f, 2.0f, 0.0f); + if ((this->obj.rot.y >= 330.0f) || (this->obj.rot.y <= 30.0f) || ((this->obj.rot.y <= 200.0f) && (this->obj.rot.y >= 160.0f))) { if ((sZoFwork[ZO_BSF_15] > 315.0f) || (sZoFwork[ZO_BSF_15] < 215.0f)) { @@ -2720,7 +2778,7 @@ void Zoness_Boss_Update(BossZO* this) { sZoFwork[ZO_BSF_43_Z]) != 0) && (sZoSwork[ZO_BSS_45] == 0)) { if (gPlayer) {} - func_effect_8008377C(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 30.0f, 0.0f, 2.0f); + Effect_Effect391_Spawn(sZoFwork[ZO_BSF_43_X], sp134, sZoFwork[ZO_BSF_43_Z] + 30.0f, 0.0f, 2.0f); sZoSwork[ZO_BSS_45]++; } } @@ -2734,11 +2792,13 @@ void Zoness_Boss_Update(BossZO* this) { sZoFwork[ZO_BSF_80] -= 5.0f; sZoFwork[ZO_BSF_81] += 12.0f; sZoFwork[ZO_BSF_82] -= 10.0f; + func_effect_8007D0E0(sZoFwork[ZO_BSF_29_X], sZoFwork[ZO_BSF_29_Y], sZoFwork[ZO_BSF_29_Z], 5.0f); + if ((Play_CheckDynaFloorCollision(&sp134, &sp130, sZoFwork[ZO_BSF_29_X], sZoFwork[ZO_BSF_29_Y] - 100.0f, sZoFwork[ZO_BSF_29_Z]) != 0) && (sZoSwork[ZO_BSS_46] == 0)) { - func_effect_8008377C(sZoFwork[ZO_BSF_29_X], sp134, sZoFwork[ZO_BSF_29_Z] + 30.0f, 0.0f, 2.0f); + Effect_Effect391_Spawn(sZoFwork[ZO_BSF_29_X], sp134, sZoFwork[ZO_BSF_29_Z] + 30.0f, 0.0f, 2.0f); sZoSwork[ZO_BSS_46]++; } } @@ -2756,7 +2816,7 @@ void Zoness_Boss_Update(BossZO* this) { if ((Play_CheckDynaFloorCollision(&sp134, &sp130, sZoFwork[ZO_BSF_32_X], sZoFwork[ZO_BSF_32_Y] - 100.0f, sZoFwork[ZO_BSF_32_Z]) != 0) && (sZoSwork[ZO_BSS_47] == 0)) { - func_effect_8008377C(sZoFwork[ZO_BSF_32_X], sp134, sZoFwork[ZO_BSF_32_Z] + 30.0f, 0.0f, 2.0f); + Effect_Effect391_Spawn(sZoFwork[ZO_BSF_32_X], sp134, sZoFwork[ZO_BSF_32_Z] + 30.0f, 0.0f, 2.0f); sZoSwork[ZO_BSS_47]++; } } @@ -2764,11 +2824,12 @@ void Zoness_Boss_Update(BossZO* this) { if ((sZoSwork[ZO_BSS_13] < 2) && (sZoLimbTimers[ZO_LIMB_5] != LIMB_DESTROYED)) { D_ctx_801779A8[0] = 20; - if (((gGameFrameCount % 2) == 0)) { + if ((gGameFrameCount % 2) == 0) { func_effect_8007D0E0(sZoFwork[ZO_BSF_52_X] + RAND_FLOAT_CENTERED(200.0f), sZoFwork[ZO_BSF_52_Y] + RAND_FLOAT_CENTERED(200.0f), sZoFwork[ZO_BSF_52_Z] + RAND_FLOAT_CENTERED(100.0f), 5.0f); } + if (this->swork[ZO_SWK_14] != 0) { if (sZoLimbTimers[ZO_LIMB_5] == 0) { sZoLimbTimers[ZO_LIMB_5] = sZoLimbTimers[ZO_LIMB_6] = 15; @@ -2789,7 +2850,7 @@ void Zoness_Boss_Update(BossZO* this) { if ((Play_CheckDynaFloorCollision(&sp134, &sp130, sZoFwork[ZO_BSF_52_X], sZoFwork[ZO_BSF_52_Y] - 100.0f, sZoFwork[ZO_BSF_52_Z]) != 0) && (sZoSwork[ZO_BSS_48] == 0)) { - func_effect_8008377C(sZoFwork[ZO_BSF_52_X], sp134, sZoFwork[ZO_BSF_52_Z] + 100.0f, 0.0f, 2.0f); + Effect_Effect391_Spawn(sZoFwork[ZO_BSF_52_X], sp134, sZoFwork[ZO_BSF_52_Z] + 100.0f, 0.0f, 2.0f); sZoSwork[ZO_BSS_48]++; } } @@ -2853,6 +2914,7 @@ void Zoness_Boss_Update(BossZO* this) { (sZoSwork[ZO_BSS_50] == 0)) { sZoLimbTimers[ZO_LIMB_10] = 15; sZoSwork[ZO_BSS_50] = 50; + sZoSwork[ZO_BSS_9] -= this->damage; if (sZoSwork[ZO_BSS_9] <= 0) { sZoSwork[ZO_BSS_50] = sZoSwork[ZO_BSS_9] = 0; @@ -2882,6 +2944,7 @@ void Zoness_Boss_Update(BossZO* this) { (sZoSwork[ZO_BSS_11] == 0) && (sZoSwork[ZO_BSS_12] == 0) && (sZoSwork[ZO_BSS_13] == 0) && (this->state == 3)) { sZoLimbTimers[ZO_LIMB_25] = sZoLimbTimers[ZO_LIMB_36] = 15; + this->health -= this->damage; if (this->health < 150) { AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, this->sfxSource, 4); @@ -2911,6 +2974,7 @@ void Zoness_Boss_Update(BossZO* this) { if ((sZoSwork[ZO_BSS_13] >= 2) && (this->state == 5) && (dmgType == DMG_BOMB)) { sZoLimbTimers[ZO_LIMB_5] = sZoLimbTimers[ZO_LIMB_6] = 15; sZoSwork[ZO_BSS_52] = 30; + sZoSwork[ZO_BSS_13] -= this->damage; if (sZoSwork[ZO_BSS_13] < 2) { this->swork[ZO_SWK_14] = 30; @@ -2930,19 +2994,25 @@ void Zoness_Boss_Update(BossZO* this) { (sZoSwork[ZO_BSS_53] == 0)) { sZoLimbTimers[ZO_LIMB_7] = sZoLimbTimers[ZO_LIMB_21] = sZoLimbTimers[ZO_LIMB_22] = 15; sZoSwork[ZO_BSS_53] = 50; + sZoSwork[ZO_BSS_11] -= this->damage; if (sZoSwork[ZO_BSS_11] <= 0) { sZoSwork[ZO_BSS_11] = 0; gCameraShake = 30; + gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; gFillScreenAlpha = gFillScreenAlphaTarget = 255; gFillScreenAlphaTarget = 0; gFillScreenAlphaStep = 25; + this->swork[ZO_SWK_15] = 3; + spD8.x = sZoFwork[ZO_BSF_106_X]; spD8.y = sZoFwork[ZO_BSF_106_Y]; spD8.z = sZoFwork[ZO_BSF_106_Z]; + Effect_SpawnTimedSfxAtPos(&spD8, NA_SE_EN_SINK_PARTS); + sZoSwork[ZO_BSS_16] = 0; ZO_HIT_8(this, 0)->z.offset = ZO_HIT_10(this, 0)->z.offset = 100000.0f; this->state = 4; @@ -2957,19 +3027,25 @@ void Zoness_Boss_Update(BossZO* this) { (sZoSwork[ZO_BSS_54] == 0)) { sZoLimbTimers[ZO_LIMB_11] = sZoLimbTimers[ZO_LIMB_23] = sZoLimbTimers[ZO_LIMB_24] = 15; sZoSwork[ZO_BSS_54] = 50; + sZoSwork[ZO_BSS_12] -= this->damage; if (sZoSwork[ZO_BSS_12] <= 0) { sZoSwork[ZO_BSS_12] = 0; gCameraShake = 30; + gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; gFillScreenAlpha = gFillScreenAlphaTarget = 255; gFillScreenAlphaTarget = 0; gFillScreenAlphaStep = 25; + this->swork[ZO_SWK_15] = 3; + spCC.x = sZoFwork[ZO_BSF_109_X]; spCC.y = sZoFwork[ZO_BSF_109_Y]; spCC.z = sZoFwork[ZO_BSF_109_Z]; + Effect_SpawnTimedSfxAtPos(&spCC, NA_SE_EN_SINK_PARTS); + sZoSwork[ZO_BSS_16] = 0; ZO_HIT_8(this, 1)->z.offset = ZO_HIT_10(this, 1)->z.offset = 100000.0f; this->state = 4; @@ -3077,16 +3153,17 @@ void Zoness_Boss_Update(BossZO* this) { this->fwork[ZO_FWK_1] = SIN_DEG(gGameFrameCount * 7.0f) * 12.0f; this->fwork[ZO_FWK_2] = COS_DEG(gGameFrameCount * 9.0f) * 12.0f; this->fwork[ZO_FWK_3] = SIN_DEG(gGameFrameCount * 10.0f) * 30.0f; + if ((this->timer_054 == 0) && (sZoSwork[ZO_BSS_5] < 2)) { - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 50.0f, 0.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 46.0f, 19.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 35.0f, 35.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 19.0f, 46.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, 0.0f, 50.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -50.0f, 0.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -46.0f, 19.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -35.0f, 35.0f, 5.0f); - func_effect_8007AFD0(this->obj.pos.x, this->obj.pos.z, -19.0f, 46.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 50.0f, 0.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 46.0f, 19.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 35.0f, 35.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 19.0f, 46.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, 0.0f, 50.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -50.0f, 0.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -46.0f, 19.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -35.0f, 35.0f, 5.0f); + Effect_Effect382_Spawn(this->obj.pos.x, this->obj.pos.z, -19.0f, 46.0f, 5.0f); this->timer_054 = 20; sZoSwork[ZO_BSS_5]++; } @@ -3131,8 +3208,8 @@ void Zoness_Boss_Update(BossZO* this) { } } -void Zoness_801986FC(BossZO* this, s32 arg1, f32 xOff, f32 yOff, f32 zOff, f32 yRot) { - Actor245* actor245; +void Zoness_801986FC(ZoSarumarine* this, s32 arg1, f32 xOff, f32 yOff, f32 zOff, f32 yRot) { + ZoBall* actor245; Vec3f src = { 0.0f, 0.0f, 50.0f }; Vec3f dest; s32 i; @@ -3153,29 +3230,35 @@ void Zoness_801986FC(BossZO* this, s32 arg1, f32 xOff, f32 yOff, f32 zOff, f32 y D_ctx_801779A8[0] = 20.0f; Actor_Initialize(actor245); actor245->obj.status = OBJ_INIT; - actor245->obj.id = OBJ_ACTOR_245; + actor245->obj.id = OBJ_ACTOR_ZO_BALL; actor245->obj.pos.x = this->obj.pos.x + xOff; actor245->obj.pos.y = this->obj.pos.y + yOff; actor245->obj.pos.z = this->obj.pos.z + zOff; actor245->health = 10; + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, sZoFwork[ZO_BSF_15 + arg1] * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, M_DTOR * yRot, MTXF_APPLY); + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + actor245->vel.x = dest.x; actor245->vel.y = dest.y; actor245->vel.z = this->vel.z + dest.z; + Object_SetInfo(&actor245->info, actor245->obj.id); sZoFwork[ZO_BSF_35 + arg1] = 40.0f; AUDIO_PLAY_SFX(NA_SE_EN_S_BALL_SHOT, this->sfxSource, 4); for (i = 0; i < 4; i++) { - Zoness_80193C5C(actor245->obj.pos.x + (dest.x * 4.3f), actor245->obj.pos.y + (dest.y * 4.3f), - actor245->obj.pos.z + (dest.z * 4.3f) + 100.0f, 30.0f); + Zoness_Effect394_Spawn3(actor245->obj.pos.x + (dest.x * 4.3f), + actor245->obj.pos.y + (dest.y * 4.3f), + actor245->obj.pos.z + (dest.z * 4.3f) + 100.0f, 30.0f); } break; } @@ -3187,11 +3270,11 @@ void Zoness_801986FC(BossZO* this, s32 arg1, f32 xOff, f32 yOff, f32 zOff, f32 y } } -void Zoness_801989FC(BossZO* this) { +void Zoness_801989FC(ZoSarumarine* this) { s32 i; Vec3f sp70 = { 0.0f, 0.0f, 20.0f }; Vec3f sp64; - Actor246* actor246; + ZoMine* actor246; s32 j; for (i = 0; i < 2; i++) { @@ -3200,7 +3283,7 @@ void Zoness_801989FC(BossZO* this) { if (actor246->obj.status == OBJ_FREE) { Actor_Initialize(actor246); actor246->obj.status = OBJ_INIT; - actor246->obj.id = OBJ_ACTOR_246; + actor246->obj.id = OBJ_ACTOR_ZO_MINE; actor246->obj.pos.x = sZoFwork[ZO_BSF_37_X + 3 * i]; actor246->obj.pos.y = sZoFwork[ZO_BSF_37_Y + 3 * i]; @@ -3224,7 +3307,7 @@ void Zoness_801989FC(BossZO* this) { } } -void Zoness_80198BE8(BossZO* this, s32 arg1) { +void Zoness_80198BE8(ZoSarumarine* this, s32 arg1) { s32 var_s1; Effect398* effect398; Vec3f src = { 0.0f, 0.0f, 100.0f }; @@ -3275,7 +3358,7 @@ void Zoness_80198BE8(BossZO* this, s32 arg1) { } } -void Zoness_80198ECC(BossZO* this) { +void Zoness_80198ECC(ZoSarumarine* this) { sZoSwork[ZO_BSS_18] = 500; this->timer_050 = 100; this->timer_054 = 0; @@ -3288,7 +3371,7 @@ void Zoness_80198ECC(BossZO* this) { this->fwork[ZO_FWK_4] = 1.0f; } -void Zoness_80198F3C(BossZO* this, s32 arg1, s32 arg2) { +void Zoness_80198F3C(ZoSarumarine* this, s32 arg1, s32 arg2) { if (((gGameFrameCount % 8) == 0) && (Rand_ZeroOne() < 0.5f)) { sZoLimbTimers[ZO_LIMB_7 + 4 * arg1] = sZoLimbTimers[ZO_LIMB_21 + 2 * arg1] = sZoLimbTimers[ZO_LIMB_22 + 2 * arg1] = 15; @@ -3296,12 +3379,12 @@ void Zoness_80198F3C(BossZO* this, s32 arg1, s32 arg2) { func_effect_8007D0E0(sZoFwork[ZO_BSF_0 + arg2] + RAND_FLOAT_CENTERED(400.0f), sZoFwork[ZO_BSF_1 + arg2] + RAND_RANGE(-160.0f, 640.0f), sZoFwork[ZO_BSF_2 + arg2], 7.0f); if ((gGameFrameCount % 2) == 0) { - func_effect_8007C120(sZoFwork[ZO_BSF_0 + arg2], sZoFwork[ZO_BSF_1 + arg2], sZoFwork[ZO_BSF_2 + arg2], - this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); + Effect_Effect390_Spawn(sZoFwork[ZO_BSF_0 + arg2], sZoFwork[ZO_BSF_1 + arg2], sZoFwork[ZO_BSF_2 + arg2], + this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); } } -void Zoness_8019907C(BossZO* this) { +void Zoness_8019907C(ZoSarumarine* this) { if ((sZoSwork[ZO_BSS_9] == 0) && (sZoSwork[ZO_BSS_10] == 0)) { if ((sZoSwork[ZO_BSS_31] == 0) && (sZoSwork[ZO_BSS_30] != 0)) { Radio_PlayMessage(gMsg_ID_6082, RCID_PEPPY); @@ -3319,7 +3402,7 @@ void Zoness_8019907C(BossZO* this) { } } -void Zoness_8019914C(BossZO* this, s32 arg1) { +void Zoness_8019914C(ZoSarumarine* this, s32 arg1) { sZoLimbTimers[ZO_LIMB_7 + 4 * arg1] = sZoLimbTimers[ZO_LIMB_21 + arg1 * 2] = sZoLimbTimers[ZO_LIMB_22 + arg1 * 2] = LIMB_DESTROYED; sZoFwork[ZO_BSF_77] = 0.0f; @@ -3366,7 +3449,7 @@ void Zoness_801991D0(Boss* this, s32 arg1) { #define ZO_HIT_8_2(bossZO, index) ((Hitbox*) (ZO_HIT_7(bossZO) + 1) + (index)) #define ZO_HIT_10_2(bossZO, index) ((Hitbox*) (ZO_HIT_8(bossZO, 0) + 2) + (index)) -void Zoness_80199394(BossZO* this, s32 arg1) { +void Zoness_80199394(ZoSarumarine* this, s32 arg1) { sZoSwork[ZO_BSS_11 + arg1] = 20; ZO_HIT_8(this, arg1)->z.offset = -213.2f; @@ -3377,7 +3460,7 @@ void Zoness_80199394(BossZO* this, s32 arg1) { AUDIO_PLAY_SFX(NA_SE_EN_COMBINE, this->sfxSource, 4); } -void Zoness_80199470(BossZO* this, s32 arg1) { +void Zoness_80199470(ZoSarumarine* this, s32 arg1) { if (sZoSwork[ZO_BSS_13] == 0) { if (sZoFwork[ZO_BSF_17 + arg1] > -400.0f) { sZoFwork[ZO_BSF_17 + arg1] -= 4.0f; @@ -3407,12 +3490,12 @@ void Zoness_80199470(BossZO* this, s32 arg1) { } } -void Zoness_8019962C(BossZO* this, f32 arg1) { +void Zoness_8019962C(ZoSarumarine* this, f32 arg1) { Math_SmoothStepToF(&sZoFwork[ZO_BSF_77], 2.0f, 0.1f, 0.5f, 0.0001f); Math_SmoothStepToAngle(&this->obj.rot.y, arg1, 1.0f, sZoFwork[ZO_BSF_77], 0.0001f); } -void Zoness_Actor245_Update(Actor245* this) { +void Zoness_ZoBall_Update(ZoBall* this) { s32 i; if ((this->dmgType != DMG_NONE) && (this->health != 0)) { @@ -3438,15 +3521,15 @@ void Zoness_Actor245_Update(Actor245* this) { Zoness_8018FF50(this); } -void Zoness_Actor245_Draw(Actor245* this) { +void Zoness_ZoBall_Draw(ZoBall* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_70); gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); Matrix_Scale(gGfxMatrix, 2.6f, 2.6f, 2.6f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_ZO_6017950); + gSPDisplayList(gMasterDisp++, aZoBallDL); } -void Zoness_801998E0(Effect374* this, f32 xPos, f32 yPos, f32 zPos) { +void Zoness_Effect374_Setup(Effect374* this, f32 xPos, f32 yPos, f32 zPos) { Effect_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_EFFECT_374; @@ -3459,22 +3542,22 @@ void Zoness_801998E0(Effect374* this, f32 xPos, f32 yPos, f32 zPos) { this->obj.pos.x = xPos; this->scale1 = this->scale2 = 2.5f; func_effect_8007D0E0(xPos, yPos + 30.0f, zPos, 7.0f); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 5); Object_SetInfo(&this->info, this->obj.id); } -void Zoness_801999CC(f32 xPos, f32 yPos, f32 zPos) { +void Zoness_Effect374_Spawn(f32 xPos, f32 yPos, f32 zPos) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Zoness_801998E0(&gEffects[i], xPos, yPos, zPos); + Zoness_Effect374_Setup(&gEffects[i], xPos, yPos, zPos); break; } } } -void Zoness_Actor246_Update(Actor246* this) { +void Zoness_ZoMine_Update(ZoMine* this) { f32 sp3C; f32 sp38; s32 sp34; @@ -3502,7 +3585,7 @@ void Zoness_Actor246_Update(Actor246* this) { case 1: if ((Play_CheckDynaFloorCollision(&sp3C, &sp34, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z) != 0) && (this->iwork[1] == 0)) { - func_effect_8008377C(this->obj.pos.x, sp3C, this->obj.pos.z, 0.0f, 0.5f); + Effect_Effect391_Spawn(this->obj.pos.x, sp3C, this->obj.pos.z, 0.0f, 0.5f); this->iwork[1]++; AUDIO_PLAY_SFX(NA_SE_ON_SPLASH_S, this->sfxSource, 4); } @@ -3541,7 +3624,7 @@ void Zoness_Actor246_Update(Actor246* this) { Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_EXPLOSION_S); } else { if ((fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 800.0f) || (this->dmgType != DMG_NONE)) { - Zoness_801999CC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z); + Zoness_Effect374_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); } @@ -3559,20 +3642,20 @@ void Zoness_Actor246_Update(Actor246* this) { } } -void Zoness_Actor246_Draw(Actor246* this) { +void Zoness_ZoMine_Draw(ZoMine* this) { Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_ZO_6025E60); } -void Zoness_80199E9C(Actor248* this, f32 arg1, f32 arg2) { +void Zoness_80199E9C(ZoCraneMagnet* this, f32 arg1, f32 arg2) { this->obj.pos.x = sZoFwork[ZO_BSF_60_X]; Math_SmoothStepToF(&this->fwork[0], arg1, 1.0f, arg2, 0.001f); this->obj.pos.y = sZoFwork[ZO_BSF_60_Y] + this[0].fwork[0]; this->obj.pos.z = sZoFwork[ZO_BSF_60_Z]; } -void Zoness_Actor248_Update(Actor248* this) { +void Zoness_ZoCraneMagnet_Update(ZoCraneMagnet* this) { if (sZoSwork[ZO_BSS_13] == 0) { this->state = 3; this->vel.y = -50.0f; @@ -3638,7 +3721,7 @@ void Zoness_Actor248_Update(Actor248* this) { } } -void Zoness_Actor248_Draw(Actor248* this) { +void Zoness_ZoCraneMagnet_Draw(ZoCraneMagnet* this) { f32 var_fv0; s32 i; s32 j; @@ -3698,12 +3781,13 @@ void Zoness_8019A4E0(Actor* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4) { src.z = arg4; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + this->vel.x = dest.x; this->vel.y = dest.y; this->vel.z = dest.z; } -void Zoness_Actor249_Update(Actor249* this) { +void Zoness_ZoSpikeBall_Update(ZoSpikeBall* this) { f32 sp4C; f32 sp48; f32 sp44; @@ -3716,6 +3800,7 @@ void Zoness_Actor249_Update(Actor249* this) { this->state = 10; this->vel.z = 40.0f; } + this->fwork[3] += 10.0f; this->fwork[1] = 70.0f; @@ -3724,6 +3809,7 @@ void Zoness_Actor249_Update(Actor249* this) { this->obj.pos.x = sZoFwork[ZO_BSF_65_X]; this->obj.pos.y = sZoFwork[ZO_BSF_65_Y]; this->obj.pos.z = sZoFwork[ZO_BSF_65_Z]; + if ((sZoSwork[ZO_BSS_20] != 0) && (this->timer_0BC == 0)) { if ((sZoSwork[ZO_BSS_8] == 0) && (gBosses[0].state == 8)) { var_fv1 = RAND_FLOAT_CENTERED(3000.0f); @@ -3734,9 +3820,9 @@ void Zoness_Actor249_Update(Actor249* this) { } Zoness_8019A4E0(this, gPlayer[0].pos.x + var_fv1, gPlayer[0].pos.y + var_fa0, gPlayer[0].pos.z, 80.0f); this->vel.z -= gPathVelZ; - Zoness_80193C5C(sZoFwork[ZO_BSF_65_X], sZoFwork[ZO_BSF_65_Y], sZoFwork[ZO_BSF_65_Z], 30.0f); - Zoness_80193C5C(sZoFwork[ZO_BSF_65_X], sZoFwork[ZO_BSF_65_Y], sZoFwork[ZO_BSF_65_Z], 30.0f); - Zoness_80193C5C(sZoFwork[ZO_BSF_65_X], sZoFwork[ZO_BSF_65_Y], sZoFwork[ZO_BSF_65_Z], 30.0f); + Zoness_Effect394_Spawn3(sZoFwork[ZO_BSF_65_X], sZoFwork[ZO_BSF_65_Y], sZoFwork[ZO_BSF_65_Z], 30.0f); + Zoness_Effect394_Spawn3(sZoFwork[ZO_BSF_65_X], sZoFwork[ZO_BSF_65_Y], sZoFwork[ZO_BSF_65_Z], 30.0f); + Zoness_Effect394_Spawn3(sZoFwork[ZO_BSF_65_X], sZoFwork[ZO_BSF_65_Y], sZoFwork[ZO_BSF_65_Z], 30.0f); this->timer_0BC = (s32) ((fabsf(sZoFwork[ZO_BSF_28] - -2600.0f) / 100.0f) + 30.0f); this->timer_0C0 = 3; @@ -3814,7 +3900,7 @@ void Zoness_Actor249_Update(Actor249* this) { if (((gGameFrameCount % 8) == 0) && (this->state != 0) && (this->iwork[0] < 8) && (Play_CheckDynaFloorCollision(&sp44, &sp40, this->obj.pos.x, this->obj.pos.y - 100.0f, this->obj.pos.z) != 0)) { - func_effect_8008377C(this->obj.pos.x, sp44, this->obj.pos.z, 0.0f, 0.7f); + Effect_Effect391_Spawn(this->obj.pos.x, sp44, this->obj.pos.z, 0.0f, 0.7f); this->iwork[0]++; if (this->vel.y >= 0.0f) { AUDIO_PLAY_SFX(NA_SE_OUT_SPLASH_L, this->sfxSource, 4); @@ -3824,7 +3910,7 @@ void Zoness_Actor249_Update(Actor249* this) { } } -void Zoness_Actor249_Draw(Actor249* this) { +void Zoness_ZoSpikeBall_Draw(ZoSpikeBall* this) { f32 temp_fa0; f32 temp_fa1; f32 temp_fs0; @@ -3917,7 +4003,7 @@ s32 D_i3_801BF78C[30] = { }; f32 D_i3_801BF804[8] = { 0.0f, 0.0f, 270.0f, 90.0f, 0.0f, 180.0f, 400.0f, 400.0f }; -void Zoness_8019B1F0(Actor* actor) { +void Zoness_ZoCargoShip_Init(Actor* actor) { s32 temp_v1; s32 var_s3; s32 i; @@ -3943,7 +4029,7 @@ void Zoness_8019B1F0(Actor* actor) { actor->obj.rot.x = (s32) fabsf(Math_ModF(actor->obj.rot.x, 100.0f)); } - for (i = 0, var_s6 = 0; var_s3 < 3 && i < ARRAY_COUNT(gActors); i++) { + for (i = 0, var_s6 = 0; (var_s3 < 3) && (i < ARRAY_COUNT(gActors)); i++) { if (gActors[i].obj.status == OBJ_FREE) { if (actor->state == 0) { Matrix_MultVec3f(gCalcMatrix, &D_i3_801BF744[var_s3], &sp84); @@ -3954,10 +4040,10 @@ void Zoness_8019B1F0(Actor* actor) { Actor_Initialize(&gActors[i]); gActors[i].obj.status = OBJ_INIT; if (actor->state == 0) { - gActors[i].obj.id = OBJ_ACTOR_251; + gActors[i].obj.id = OBJ_ACTOR_ZO_CONTAINER; gActors[i].iwork[3] = 777; } else { - gActors[i].obj.id = OBJ_ACTOR_253; + gActors[i].obj.id = OBJ_ACTOR_ZO_SUPPLYCRANE; } gActors[i].obj.pos.x = actor->obj.pos.x + sp84.x; gActors[i].obj.pos.y = actor->obj.pos.y + sp84.y; @@ -3987,7 +4073,7 @@ void Zoness_8019B1F0(Actor* actor) { AUDIO_PLAY_SFX(NA_SE_EN_SHIP_ENGINE_L, actor->sfxSource, 4); } -void Zoness_Actor250_Update(Actor* this) { +void Zoness_ZoCargoShip_Update(Actor* this) { f32 sp6C; s32 sp68; s32 i; @@ -4001,7 +4087,7 @@ void Zoness_Actor250_Update(Actor* this) { for (i = 1; i < 3; i++) { otherActor = &gActors[this->iwork[i]]; if ((otherActor->obj.status != OBJ_FREE) && (otherActor->iwork[1] == this->index) && - (otherActor->obj.id == OBJ_ACTOR_251)) { + (otherActor->obj.id == OBJ_ACTOR_ZO_CONTAINER)) { Matrix_MultVec3f(gCalcMatrix, &D_i3_801BF744[i], &sp58); otherActor->obj.pos.x = this->obj.pos.x + sp58.x; otherActor->obj.pos.y = this->obj.pos.y + sp58.y; @@ -4013,7 +4099,7 @@ void Zoness_Actor250_Update(Actor* this) { case 1: for (i = 1; i < 3; i++) { otherActor = &gActors[this->iwork[i]]; - if ((otherActor->obj.status != OBJ_FREE) && (otherActor->obj.id == OBJ_ACTOR_253) && + if ((otherActor->obj.status != OBJ_FREE) && (otherActor->obj.id == OBJ_ACTOR_ZO_SUPPLYCRANE) && (otherActor->iwork[1] == this->index)) { Matrix_MultVec3f(gCalcMatrix, &D_i3_801BF768[i], &sp58); otherActor->obj.pos.x = this->obj.pos.x + sp58.x; @@ -4030,11 +4116,11 @@ void Zoness_Actor250_Update(Actor* this) { } } -void Zoness_Actor250_Draw(Actor* this) { +void Zoness_ZoCargoShip_Draw(Actor* this) { gSPDisplayList(gMasterDisp++, D_ZO_6006360); } -void Zoness_8019B810(Actor* this) { +void Zoness_ZoContainer_Init(Actor* this) { if (this->iwork[3] == 0) { this->iwork[0] = this->obj.rot.z / 10.0f; this->obj.rot.z = 0.0f; @@ -4049,7 +4135,7 @@ Vec3f D_i3_801BF84C[6] = { { -5.0f, -10.0f, 0.0f }, { -10.0f, 0.0f, 0.0f }, { -5.0f, 10.0f, 0.0f }, }; -void Zoness_Actor251_Update(Actor251* this) { +void Zoness_ZoContainer_Update(ZoContainer* this) { s32 i; s32 j; Vec3f spB4; @@ -4073,9 +4159,9 @@ void Zoness_Actor251_Update(Actor251* this) { case 1: for (i = 0; i < 6; i++) { - Zoness_SpawnDebris(&this->vwork[i], &this->vwork[6 + i], RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT(10.0f) + 20.0f, RAND_FLOAT_CENTERED(50.0f), 39, this->scale, - RAND_FLOAT(15.0f) + (this->scale * 10.0f), i); + Zoness_ActorDebris_Spawn(&this->vwork[i], &this->vwork[6 + i], RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT(10.0f) + 20.0f, RAND_FLOAT_CENTERED(50.0f), 39, this->scale, + RAND_FLOAT(15.0f) + (this->scale * 10.0f), i); } for (i = 0; i < 10; i++) { func_effect_80079618(RAND_FLOAT_CENTERED(50.0f) + this->obj.pos.x, @@ -4116,9 +4202,9 @@ void Zoness_Actor251_Update(Actor251* this) { } } -void Zoness_8019BC78(s32 limbIndex, Vec3f* rot, void* thisx) { +void Zoness_ZoContainer_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; - Actor* this = (Actor*) thisx; + ZoContainer* this = (ZoContainer*) thisx; if (this->state != 0) { switch (limbIndex) { @@ -4150,44 +4236,45 @@ void Zoness_8019BC78(s32 limbIndex, Vec3f* rot, void* thisx) { } } -void Zoness_Actor251_Draw(Actor* this) { +void Zoness_ZoContainer_Draw(ZoContainer* this) { Vec3f frameTable[20]; Animation_GetFrameData(&D_ZO_6018550, 0, frameTable); - Animation_DrawSkeleton(3, D_ZO_601863C, frameTable, NULL, Zoness_8019BC78, this, gCalcMatrix); + Animation_DrawSkeleton(3, D_ZO_601863C, frameTable, NULL, Zoness_ZoContainer_PostLimbDraw, this, gCalcMatrix); } -void Zoness_Actor252_Update(Actor252* this) { +void Zoness_ZoRadarBuoy_Update(ZoRadarBuoy* this) { s32 pad; f32 sp40; f32 sp3C; s32 sp38; s32 i; - Actor254* actor254; + ZoSearchLight* searchLight; switch (this->state) { case 0: - for (i = 0, actor254 = gActors; i < ARRAY_COUNT(gActors); i++, actor254++) { - if (actor254->obj.status == OBJ_FREE) { - Actor_Initialize(actor254); - actor254->obj.status = OBJ_INIT; - actor254->obj.id = OBJ_ACTOR_254; - actor254->obj.pos.x = this->obj.pos.x; - actor254->obj.pos.y = this->obj.pos.y; - actor254->obj.pos.z = this->obj.pos.z + 30.0f; - actor254->fwork[0] = 230.0f; - actor254->fwork[1] = 0.8f; - actor254->fwork[2] = 1.0f; - actor254->fwork[3] = 1.0f; - actor254->iwork[0] = this->index + 1; - Object_SetInfo(&actor254->info, actor254->obj.id); + for (i = 0, searchLight = gActors; i < ARRAY_COUNT(gActors); i++, searchLight++) { + if (searchLight->obj.status == OBJ_FREE) { + Actor_Initialize(searchLight); + searchLight->obj.status = OBJ_INIT; + searchLight->obj.id = OBJ_ACTOR_ZO_SEARCHLIGHT; + searchLight->obj.pos.x = this->obj.pos.x; + searchLight->obj.pos.y = this->obj.pos.y; + searchLight->obj.pos.z = this->obj.pos.z + 30.0f; + searchLight->fwork[0] = 230.0f; + searchLight->fwork[1] = 0.8f; + searchLight->fwork[2] = 1.0f; + searchLight->fwork[3] = 1.0f; + searchLight->iwork[0] = this->index + 1; + Object_SetInfo(&searchLight->info, searchLight->obj.id); this->iwork[0] = i; break; } } if (i >= ARRAY_COUNT(gActors)) { - actor254->obj.status = OBJ_FREE; + searchLight->obj.status = OBJ_FREE; } + this->health = 10; this->state++; break; @@ -4211,10 +4298,10 @@ void Zoness_Actor252_Update(Actor252* this) { case 2: this->timer_0C2 = 30000; - actor254 = &gActors[this->iwork[0]]; + searchLight = &gActors[this->iwork[0]]; - actor254->iwork[0] = 777; - func_effect_8008377C(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 5.0f, 0.7f); + searchLight->iwork[0] = 777; + Effect_Effect391_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 5.0f, 0.7f); func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y + 50.0f, this->obj.pos.z, 5.0f); Object_Kill(&this->obj, this->sfxSource); Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_WT_EXPLOSION_S); @@ -4229,24 +4316,24 @@ void Zoness_Actor252_Update(Actor252* this) { sp3C = 350.0f; } Math_SmoothStepToAngle(&this->obj.rot.z, sp3C, 0.1f, 1.0f, 0); - actor254 = &gActors[this->iwork[0]]; - Math_SmoothStepToAngle(&actor254->obj.rot.z, sp3C, 0.1f, 1.0f, 0); - actor254->obj.pos.y = this->obj.pos.y; + searchLight = &gActors[this->iwork[0]]; + Math_SmoothStepToAngle(&searchLight->obj.rot.z, sp3C, 0.1f, 1.0f, 0); + searchLight->obj.pos.y = this->obj.pos.y; } } -void Zoness_Actor252_Draw(Actor* this) { +void Zoness_ZoRadarBuoy_Draw(Actor* this) { gSPDisplayList(gMasterDisp++, D_ZO_6002E10); } Vec3f D_i3_801BF8AC = { 230.0f, -50.0f, 0.0f }; Vec3f D_i3_801BF8B8 = { 230.0f, -250.0f, 0.0f }; -void Zoness_8019C200(Actor* this) { +void Zoness_ZoSupplyCrane_Init(Actor* this) { s32 i; s32 sp38; Vec3f dest; - Actor251* actor251; + ZoContainer* actor251; this->scale = -1.0f; @@ -4282,7 +4369,7 @@ void Zoness_8019C200(Actor* this) { if (actor251->obj.status == OBJ_FREE) { Actor_Initialize(actor251); actor251->obj.status = OBJ_INIT; - actor251->obj.id = OBJ_ACTOR_251; + actor251->obj.id = OBJ_ACTOR_ZO_CONTAINER; actor251->obj.pos.x = this->obj.pos.x + dest.x; actor251->obj.pos.y = this->obj.pos.y + dest.y + this->fwork[2]; actor251->obj.pos.z = this->obj.pos.z + dest.z + this->fwork[0]; @@ -4299,7 +4386,7 @@ void Zoness_8019C200(Actor* this) { } } -void Zoness_Actor253_Update(Actor* this) { +void Zoness_ZoSupplyCrane_Update(ZoSupplyCrane* this) { Vec3f sp34; Actor* otherActor; @@ -4324,7 +4411,7 @@ void Zoness_Actor253_Update(Actor* this) { Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_i3_801BF8B8, &sp34); - if ((otherActor->obj.status != OBJ_FREE) && (otherActor->obj.id == OBJ_ACTOR_251)) { + if ((otherActor->obj.status != OBJ_FREE) && (otherActor->obj.id == OBJ_ACTOR_ZO_CONTAINER)) { otherActor->obj.pos.x = this->obj.pos.x + sp34.x; otherActor->obj.pos.y = this->obj.pos.y + sp34.y + this->fwork[2]; otherActor->obj.pos.z = this->obj.pos.z + sp34.z; @@ -4336,7 +4423,7 @@ void Zoness_Actor253_Update(Actor* this) { case 1: if ((this->fwork[5] == this->obj.rot.y) && (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 1000.0f)) { - if (otherActor->obj.id == OBJ_ACTOR_251) { + if (otherActor->obj.id == OBJ_ACTOR_ZO_CONTAINER) { otherActor->gravity = 1.0f; } this->state = 1; @@ -4375,7 +4462,7 @@ void Zoness_Actor253_Update(Actor* this) { } } -void Zoness_Actor253_Draw(Actor253* this) { +void Zoness_ZoSupplyCrane_Draw(ZoSupplyCrane* this) { f32 var_fv1; s32 i; s32 var_s1; @@ -4431,7 +4518,7 @@ void Zoness_Actor253_Draw(Actor253* this) { f32 D_i3_801BF8C4[2] = { 46.0f, 314.0f }; f32 D_i3_801BF8CC[2] = { 23.0f, 337.0f }; -void Zoness_Actor254_Update(Actor254* this) { +void Zoness_ZoSearchLight_Update(ZoSearchLight* this) { this->timer_0C2 = 30000; switch (this->state) { @@ -4486,7 +4573,7 @@ void Zoness_Actor254_Update(Actor254* this) { this->obj.rot.x = 0.0f; } -void Zoness_Actor254_Draw(Actor254* this) { +void Zoness_ZoSearchLight_Draw(ZoSearchLight* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_72); if (this->iwork[0] != 0) { @@ -4511,14 +4598,14 @@ void Zoness_Actor254_Draw(Actor254* this) { gSPDisplayList(gMasterDisp++, D_ZO_60181E0); } -void Zoness_Actor247_Init(Actor247* this) { +void Zoness_ZoBarrier_Init(ZoBarrier* this) { s32 i; for (i = 0; i < ARRAY_COUNT(gActors); i++) { if (gActors[i].obj.status == OBJ_FREE) { Actor_Initialize(&gActors[i]); gActors[i].obj.status = OBJ_ACTIVE; - gActors[i].obj.id = OBJ_ACTOR_247; + gActors[i].obj.id = OBJ_ACTOR_ZO_BARRIER; gActors[i].obj.pos.x = this->obj.pos.x; gActors[i].obj.pos.y = this->obj.pos.y - 60.0f; gActors[i].fwork[2] = gActors[i].obj.pos.y; @@ -4534,7 +4621,7 @@ void Zoness_Actor247_Init(Actor247* this) { } } -void Zoness_Actor247_Update(Actor247* this) { +void Zoness_ZoBarrier_Update(ZoBarrier* this) { Actor* otherActor; if (this->state == 0) { @@ -4570,8 +4657,8 @@ void Zoness_Actor247_Update(Actor247* this) { } } -bool Zoness_8019D340(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { - Actor* this = (Actor*) thisx; +bool Zoness_ZoBarrier_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + ZoBarrier* this = (ZoBarrier*) thisx; switch (this->state) { case 0: @@ -4593,11 +4680,12 @@ bool Zoness_8019D340(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* t return false; } -void Zoness_Actor247_Draw(Actor* this) { +void Zoness_ZoBarrier_Draw(Actor* this) { Vec3f frameTable[10]; Animation_GetFrameData(&D_ZO_601FBC4, 0, frameTable); - Animation_DrawSkeleton(1, D_ZO_601FC90, frameTable, Zoness_8019D340, NULL, this, &gIdentityMatrix); + Animation_DrawSkeleton(1, D_ZO_601FC90, frameTable, Zoness_ZoBarrier_OverrideLimbDraw, NULL, this, + &gIdentityMatrix); } void Zoness_LevelStart(Player* player) { @@ -4997,18 +5085,23 @@ void Zoness_8019E5F0(ActorCutscene* this) { this->iwork[11] = 2; this->fwork[0] += 2.0f; this->rot_0F4.x += 0.1f; + this->fwork[21] += 0.2f; if (this->fwork[21] > 0.6f) { this->fwork[21] = 0.6f; } break; } + Matrix_RotateY(gCalcMatrix, (this->rot_0F4.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -(this->rot_0F4.x * M_DTOR), MTXF_APPLY); + src.x = 0.0f; src.y = 0.0f; src.z = this->fwork[0]; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + this->vel.x = dest.x; this->vel.y = dest.y; this->vel.z = dest.z; diff --git a/src/overlays/ovl_i4/fox_bo.c b/src/overlays/ovl_i4/fox_bo.c index f625ee21..ba16a201 100644 --- a/src/overlays/ovl_i4/fox_bo.c +++ b/src/overlays/ovl_i4/fox_bo.c @@ -95,9 +95,9 @@ Matrix D_BO_8019EE80 = { { f32 D_i4_8019EEC0 = 0.0f; -void Bolse_8018BD60(Actor* this) { +void Bolse_8018BD60(ActorEvent* this) { s32 i; - Actor* actor; + ActorAllRange* actor; f32 D_i4_8019EEC4[4] = { 8000.0f, -8000.0f, 8000.0f, -8000.0f }; f32 D_i4_8019EED4[4] = { 8000.0f, 8000.0f, -8000.0f, -8000.0f }; @@ -132,9 +132,9 @@ void Bolse_8018BD60(Actor* this) { f32 D_i4_8019EEE4[] = { -200.0f, -100.0f, -0.0f, 100.0f, 200.0f }; -void Bolse_SpawnEnemies(Actor* this, s32 count) { +void Bolse_SpawnEnemies(ActorEvent* this, s32 count) { s32 i; - Actor* enemy; + ActorAllRange* enemy; for (i = AI360_ENEMY, enemy = &gActors[AI360_ENEMY]; i < count + AI360_ENEMY; i++, enemy++) { if (enemy->obj.status == OBJ_FREE) { @@ -202,7 +202,7 @@ void Bolse_SpawnEnemies(Actor* this, s32 count) { } } -void Bolse_UpdateEventHandler(Actor* this) { +void Bolse_UpdateEventHandler(ActorEvent* this) { s32 i; Player* player = &gPlayer[0]; s32 pad; @@ -448,23 +448,23 @@ void Bolse_UpdateEventHandler(Actor* this) { } } -s32 Bolse_8018CC60(Actor* actor) { - Vec3f sp1C; +s32 Bolse_8018CC60(Actor* this) { + Vec3f src; if (gAllRangeCheckpoint == 0) { - actor->obj.pos.x = sp1C.x = actor->fwork[10]; - actor->obj.pos.y = sp1C.y = actor->fwork[11]; - actor->obj.pos.z = sp1C.z = actor->fwork[12]; - Matrix_MultVec3fNoTranslate(&D_BO_8019EE80, &sp1C, &actor->obj.pos); - actor->fwork[13] = gBosses[0].obj.rot.y; + this->obj.pos.x = src.x = this->fwork[10]; + this->obj.pos.y = src.y = this->fwork[11]; + this->obj.pos.z = src.z = this->fwork[12]; + Matrix_MultVec3fNoTranslate(&D_BO_8019EE80, &src, &this->obj.pos); + this->fwork[13] = gBosses[0].obj.rot.y; } return 0; } -s32 Bolse_8018CCE8(Actor* actor) { +s32 Bolse_8018CCE8(BoLaserCannon* this) { s32 i; - s32 var_v0; + s32 actorIndex; f32 temp_fs0; f32 temp_fv0; f32 x; @@ -473,7 +473,7 @@ s32 Bolse_8018CCE8(Actor* actor) { f32 var_fv1 = 10000.0f; f32 var_fa0 = 10000.0f; - var_v0 = 0; + actorIndex = 0; for (i = 0; i < 4; i += 2) { if (i != 0) { @@ -484,13 +484,13 @@ s32 Bolse_8018CCE8(Actor* actor) { z = gPlayer[0].pos.z; } - temp_fs0 = fabsf(x - actor->obj.pos.x); - temp_fv0 = fabsf(z - actor->obj.pos.z); + temp_fs0 = fabsf(x - this->obj.pos.x); + temp_fv0 = fabsf(z - this->obj.pos.z); if (!((var_fv1 < temp_fs0) || (var_fa0 < temp_fv0))) { var_fv1 = temp_fs0; var_fa0 = temp_fv0; - var_v0 = i; + actorIndex = i; //! FAKE: if (gPlayer) {} } @@ -503,76 +503,76 @@ s32 Bolse_8018CCE8(Actor* actor) { z = gPlayer[0].pos.z; } - temp_fs0 = fabsf(x - actor->obj.pos.x); - temp_fv0 = fabsf(z - actor->obj.pos.z); + temp_fs0 = fabsf(x - this->obj.pos.x); + temp_fv0 = fabsf(z - this->obj.pos.z); if (!((var_fv1 < temp_fs0) || (var_fa0 < temp_fv0))) { var_fv1 = temp_fs0; var_fa0 = temp_fv0; - var_v0 = i + 1; + actorIndex = i + 1; } } - if (var_v0 == 0) { + if (actorIndex == 0) { x = gPlayer[0].pos.x; y = gPlayer[0].pos.y; z = gPlayer[0].pos.z; } else { - x = gActors[var_v0].obj.pos.x; - y = gActors[var_v0].obj.pos.y; - z = gActors[var_v0].obj.pos.z; + x = gActors[actorIndex].obj.pos.x; + y = gActors[actorIndex].obj.pos.y; + z = gActors[actorIndex].obj.pos.z; } - actor->fwork[0] = x; - actor->fwork[1] = y; - actor->fwork[2] = z; + this->fwork[0] = x; + this->fwork[1] = y; + this->fwork[2] = z; return 0; } -s32 Bolse_8018CE5C(Actor* actor) { +s32 Bolse_8018CE5C(BoLaserCannon* this) { f32 x; f32 y; f32 z; - if (actor->iwork[0] == 0) { + if (this->iwork[0] == 0) { return 0; } - if (((actor->index + gGameFrameCount) & 3) == 0) { - x = actor->fwork[0] - actor->obj.pos.x + RAND_FLOAT_CENTERED(100.0f); - y = actor->fwork[1] - (actor->obj.pos.y + 180.0f) + RAND_FLOAT_CENTERED(100.0f); - z = actor->fwork[2] - actor->obj.pos.z; + if (((this->index + gGameFrameCount) % 4) == 0) { + x = this->fwork[0] - this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f); + y = this->fwork[1] - (this->obj.pos.y + 180.0f) + RAND_FLOAT_CENTERED(100.0f); + z = this->fwork[2] - this->obj.pos.z; - actor->fwork[6] = Math_RadToDeg(Math_Atan2F(x, z)) - actor->obj.rot.y; + this->fwork[6] = Math_RadToDeg(Math_Atan2F(x, z)) - this->obj.rot.y; - if (actor->fwork[6] >= 360.0f) { - actor->fwork[6] -= 360.0f; + if (this->fwork[6] >= 360.0f) { + this->fwork[6] -= 360.0f; } - if (actor->fwork[6] < 0.0f) { - actor->fwork[6] += 360.0f; + if (this->fwork[6] < 0.0f) { + this->fwork[6] += 360.0f; } - actor->fwork[5] = Math_RadToDeg(Math_Atan2F(y, sqrtf(SQ(x) + SQ(z)))); + this->fwork[5] = Math_RadToDeg(Math_Atan2F(y, sqrtf(SQ(x) + SQ(z)))); } - Math_SmoothStepToF(&actor->rot_0F4.x, actor->fwork[5], 0.1f, 4.8f, 0.1f); - Math_SmoothStepToF(&actor->rot_0F4.y, actor->fwork[6], 0.1f, 4.8f, 0.1f); + Math_SmoothStepToF(&this->rot_0F4.x, this->fwork[5], 0.1f, 4.8f, 0.1f); + Math_SmoothStepToF(&this->rot_0F4.y, this->fwork[6], 0.1f, 4.8f, 0.1f); return 0; } -bool Bolse_8018D008(Actor* actor) { +bool Bolse_8018D008(BoLaserCannon* this) { f32 x; f32 y; f32 z; - if (actor->iwork[0] == 0) { + if (this->iwork[0] == 0) { return 0; } - if (actor->timer_0BC != 0) { + if (this->timer_0BC != 0) { return 0; } - x = actor->fwork[0] - actor->obj.pos.x; - z = actor->fwork[2] - actor->obj.pos.z; + x = this->fwork[0] - this->obj.pos.x; + z = this->fwork[2] - this->obj.pos.z; if (fabsf(x) >= 3000.0f) { return 0; @@ -581,81 +581,81 @@ bool Bolse_8018D008(Actor* actor) { return 0; } - y = Math_RadToDeg(Math_Atan2F(x, z)) - actor->obj.rot.y; + y = Math_RadToDeg(Math_Atan2F(x, z)) - this->obj.rot.y; if ((y > 100.0f) && (y < 259.0f)) { return false; } - actor->timer_0BC = (s32) RAND_FLOAT(20.0f) + 10; + this->timer_0BC = (s32) RAND_FLOAT(20.0f) + 10; return true; } -void Bolse_8018D124(Actor* actor) { +void Bolse_8018D124(BoLaserCannon* this) { Vec3f src; Vec3f dest; - Matrix_RotateY(gCalcMatrix, (actor->rot_0F4.y + actor->obj.rot.y) * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -actor->rot_0F4.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, (this->rot_0F4.y + this->obj.rot.y) * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -this->rot_0F4.x * M_DTOR, MTXF_APPLY); src.y = 0.0f; src.x = 0.0f; src.z = gEnemyShotSpeed; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - func_effect_8007F04C(OBJ_EFFECT_ENEMY_LASER_1, actor->obj.pos.x + dest.x, actor->obj.pos.y + 180.0f + dest.y, - actor->obj.pos.z + dest.z, -actor->rot_0F4.x, actor->rot_0F4.y + actor->obj.rot.y, 0.0f, 0.0f, + func_effect_8007F04C(OBJ_EFFECT_ENEMY_LASER_1, this->obj.pos.x + dest.x, this->obj.pos.y + 180.0f + dest.y, + this->obj.pos.z + dest.z, -this->rot_0F4.x, this->rot_0F4.y + this->obj.rot.y, 0.0f, 0.0f, 0.0f, 0.0f, dest.x, dest.y, dest.z, 1.0f); } -bool Bolse_8018D278(Actor* actor) { +bool Bolse_8018D278(BoLaserCannon* this) { s32 i; - if (actor->dmgType == DMG_NONE) { + if (this->dmgType == DMG_NONE) { return false; } - actor->dmgType = DMG_NONE; - actor->obj.pos.y += 150.0f; + this->dmgType = DMG_NONE; + this->obj.pos.y += 150.0f; - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 0.0f, 0.0f, 0.0f, 8.0f, 15); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 8.0f, 15); for (i = 0; i < 3; i++) { if (Rand_ZeroOne() >= 0.5f) { - Play_SpawnDebris(4, actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z); + Play_SpawnDebris(4, this->obj.pos.x, this->obj.pos.y, this->obj.pos.z); } } - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); - actor->itemDrop = DROP_SILVER_RING; + this->itemDrop = DROP_SILVER_RING; - Actor_Despawn(actor); - Object_Kill(&actor->obj, actor->sfxSource); + Actor_Despawn(this); + Object_Kill(&this->obj, this->sfxSource); - actor->info.bonus = 0; - actor->lockOnTimers[TEAM_ID_FOX] = 0; - actor->info.targetOffset = 0.0f; + this->info.bonus = 0; + this->lockOnTimers[TEAM_ID_FOX] = 0; + this->info.targetOffset = 0.0f; return true; } -void Bolse_8018D394(Actor* actor) { - Bolse_8018CC60(actor); +void Bolse_BoLaserCannon_Update(BoLaserCannon* this) { + Bolse_8018CC60(this); if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) { - Bolse_8018CCE8(actor); - Bolse_8018CE5C(actor); - if (Bolse_8018D008(actor)) { - Bolse_8018D124(actor); + Bolse_8018CCE8(this); + Bolse_8018CE5C(this); + if (Bolse_8018D008(this)) { + Bolse_8018D124(this); } } - Bolse_8018D278(actor); - actor->iwork[0] = 0; + Bolse_8018D278(this); + this->iwork[0] = 0; } -bool Bolse_8018D414(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* this) { - Actor* actor = (Actor*) this; +bool Bolse_BoLaserCannon_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + BoLaserCannon* actor = (BoLaserCannon*) thisx; if (limbIndex == 2) { rot->x -= actor->rot_0F4.x; @@ -664,14 +664,15 @@ bool Bolse_8018D414(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Bolse_8018D454(Actor* actor) { +void Bolse_BoLaserCannon_Draw(BoLaserCannon* this) { Matrix_Scale(gGfxMatrix, 2.0f, 2.0f, 2.0f, MTXF_APPLY); - Animation_GetFrameData(&D_BO_600F2E0, 0, actor->vwork); - Animation_DrawSkeleton(1, D_BO_600F36C, actor->vwork, Bolse_8018D414, NULL, actor, &gIdentityMatrix); - actor->iwork[0] = 1; + Animation_GetFrameData(&aBoLaserCannonAnim, 0, this->vwork); + Animation_DrawSkeleton(1, aBoLaserCannonSkel, this->vwork, Bolse_BoLaserCannon_OverrideLimbDraw, NULL, this, + &gIdentityMatrix); + this->iwork[0] = 1; } -s32 Bolse_8018D4F0(Actor* actor) { +s32 Bolse_8018D4F0(BoShieldReactor* this) { s32 i; for (i = 0; i < 6; i++) { @@ -684,81 +685,80 @@ s32 Bolse_8018D4F0(Actor* actor) { return 0; } - D_i4_801A03E0[i].unk_00 = actor->obj.pos.x; - D_i4_801A03E0[i].unk_04 = actor->obj.pos.y + 730.0f; - D_i4_801A03E0[i].unk_08 = actor->obj.pos.z; - D_i4_801A03E0[i].unk_0C = actor->fwork[10]; - D_i4_801A03E0[i].unk_10 = actor->fwork[11]; - D_i4_801A03E0[i].unk_14 = actor->fwork[12]; + D_i4_801A03E0[i].unk_00 = this->obj.pos.x; + D_i4_801A03E0[i].unk_04 = this->obj.pos.y + 730.0f; + D_i4_801A03E0[i].unk_08 = this->obj.pos.z; + D_i4_801A03E0[i].unk_0C = this->fwork[10]; + D_i4_801A03E0[i].unk_10 = this->fwork[11]; + D_i4_801A03E0[i].unk_14 = this->fwork[12]; D_i4_801A03E0[i].unk_18 = 1; return 0; } -bool Bolse_8018D584(Actor* actor) { +bool Bolse_8018D584(BoShieldReactor* this) { s32 i; - if (actor->dmgType == DMG_NONE) { + if (this->dmgType == DMG_NONE) { return false; } - if ((actor->dmgPart < 2) && (actor->state == 0)) { - actor->timer_0C6 = 20; - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_M, actor->sfxSource, 0); - actor->health += actor->damage; + if ((this->dmgPart < 2) && (this->state == 0)) { + this->timer_0C6 = 20; + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_M, this->sfxSource, 0); + this->health += this->damage; - if (actor->health < 100) { + if (this->health < 100) { return false; } - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y + 730.0f, actor->obj.pos.z, 3); + BonusText_Display(this->obj.pos.x, this->obj.pos.y + 730.0f, this->obj.pos.z, 3); gHitCount += 4; D_ctx_80177850 = 15; D_BO_801A03DC--; if (1) {} - actor->state = 1; + this->state = 1; - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y + 730.0f, actor->obj.pos.z, 0.0f, 0.0f, 0.0f, 10.0f, - 15); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 730.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 10.0f, 15); for (i = 0; i < 10; i++) { if (!(Rand_ZeroOne() >= 0.5f)) { - Play_SpawnDebris(4, actor->obj.pos.x, actor->obj.pos.y + 730.0f, actor->obj.pos.z); + Play_SpawnDebris(4, this->obj.pos.x, this->obj.pos.y + 730.0f, this->obj.pos.z); } } - func_effect_8007B344(actor->obj.pos.x, actor->obj.pos.y + 730.0f, actor->obj.pos.z, 10.0f, 5); - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_BO_6011BA4); - Audio_KillSfxBySourceAndId(actor->sfxSource, NA_SE_OB_SPARK_BEAM); - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 0); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y + 730.0f, this->obj.pos.z, 10.0f, 5); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_BO_6011BA4); + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_OB_SPARK_BEAM); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 0); } else { - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_REFLECT); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_REFLECT); } return true; } -void Bolse_8018D7F0(Actor* actor) { +void Bolse_BoShieldReactor_Update(BoShieldReactor* this) { if (gAllRangeCheckpoint != 0) { - actor->state = 1; + this->state = 1; } - Bolse_8018CC60(actor); + Bolse_8018CC60(this); - if (actor->state == 0) { - Bolse_8018D4F0(actor); - Bolse_8018D584(actor); + if (this->state == 0) { + Bolse_8018D4F0(this); + Bolse_8018D584(this); } else { - actor->lockOnTimers[TEAM_ID_FOX] = 0; - actor->info.bonus = 0; - actor->info.targetOffset = 0.0f; + this->lockOnTimers[TEAM_ID_FOX] = 0; + this->info.bonus = 0; + this->info.targetOffset = 0.0f; } - actor->scale = -1.0f; + this->scale = -1.0f; } -bool Bolse_8018D874(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* this) { - Actor* actor = (Actor*) this; +bool Bolse_BoShieldReactor_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + BoShieldReactor* actor = (BoShieldReactor*) thisx; RCP_SetupDL(&gMasterDisp, SETUPDL_29); if (((limbIndex == 1) || (limbIndex == 2)) && ((actor->timer_0C6 % 2) != 0)) { @@ -772,9 +772,10 @@ bool Bolse_8018D874(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Bolse_8018D960(Actor* actor) { - Animation_GetFrameData(&D_BO_600F3D8, 0, actor->vwork); - Animation_DrawSkeleton(3, D_BO_600F4A4, actor->vwork, Bolse_8018D874, NULL, actor, gCalcMatrix); +void Bolse_BoShieldReactor_Draw(BoShieldReactor* this) { + Animation_GetFrameData(&aBoShieldReactorAnim, 0, this->vwork); + Animation_DrawSkeleton(3, aBoShieldReactorSkel, this->vwork, Bolse_BoShieldReactor_OverrideLimbDraw, NULL, this, + gCalcMatrix); } s32 Bolse_8018D9CC(void) { @@ -803,7 +804,7 @@ s32 Bolse_8018D9CC(void) { return 0; } -s32 Bolse_8018DE8C(Boss* boss) { +s32 Bolse_8018DE8C(BoBase* this) { Vec3s D_i4_8019EEF8[26] = { { -81, 220, -4 }, { 635, 66, -362 }, { 677, 231, 1063 }, { 370, 340, 650 }, { -191, 478, -616 }, { 30, 210, -593 }, { 1321, 83, -2 }, { 458, 340, 518 }, { -312, 478, -561 }, { 646, 66, -362 }, @@ -815,19 +816,20 @@ s32 Bolse_8018DE8C(Boss* boss) { s32 index = RAND_FLOAT(26); if (!(gGameFrameCount % 2)) { // has to be ! instead of == 0 - func_effect_8007C120(D_i4_8019EEF8[index].x + boss->obj.pos.x, D_i4_8019EEF8[index].y + boss->obj.pos.y - 10.0f, - D_i4_8019EEF8[index].z + boss->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.2f, 20); + Effect_Effect390_Spawn(D_i4_8019EEF8[index].x + this->obj.pos.x, + D_i4_8019EEF8[index].y + this->obj.pos.y - 10.0f, + D_i4_8019EEF8[index].z + this->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.2f, 20); } - if ((gGameFrameCount % 5) == 0) { - func_effect_8007BFFC(D_i4_8019EEF8[index].x + boss->obj.pos.x, D_i4_8019EEF8[index].y + boss->obj.pos.y - 10.0f, - D_i4_8019EEF8[index].z + boss->obj.pos.z, 0.0f, 0.0f, 0.0f, 8.0f, 10); + if (!(gGameFrameCount % 5)) { + Effect386_Spawn1(D_i4_8019EEF8[index].x + this->obj.pos.x, D_i4_8019EEF8[index].y + this->obj.pos.y - 10.0f, + D_i4_8019EEF8[index].z + this->obj.pos.z, 0.0f, 0.0f, 0.0f, 8.0f, 10); } return 0; } -s32 Bolse_8018E05C(Boss* boss, s32 index) { +s32 Bolse_8018E05C(BoBase* this, s32 index) { s32 i; f32 temp_fs0; f32 temp_fs1; @@ -848,16 +850,16 @@ s32 Bolse_8018E05C(Boss* boss, s32 index) { Matrix_Push(&gGfxMatrix); Matrix_RotateX(gCalcMatrix, -temp_fs1 * M_DTOR, MTXF_NEW); - var_fs0 += boss->obj.rot.y; + var_fs0 += this->obj.rot.y; if (var_fs0 >= 360.0f) { var_fs0 -= 360.0f; } Matrix_RotateY(gCalcMatrix, (-var_fs0) * M_DTOR, MTXF_APPLY); - src.x = gPlayer[0].pos.x - (boss->obj.pos.x + temp_fs2); - src.y = gPlayer[0].pos.y - (boss->obj.pos.y + 580.0f); - src.z = gPlayer[0].trueZpos - (boss->obj.pos.z + temp_fs3); + src.x = gPlayer[0].pos.x - (this->obj.pos.x + temp_fs2); + src.y = gPlayer[0].pos.y - (this->obj.pos.y + 580.0f); + src.z = gPlayer[0].trueZpos - (this->obj.pos.z + temp_fs3); Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); @@ -872,15 +874,15 @@ s32 Bolse_8018E05C(Boss* boss, s32 index) { } for (i = 0; i < 5; i++) { - func_effect_8007C484(gPlayer[0].pos.x + RAND_FLOAT_CENTERED(30.0f), - gPlayer[0].pos.y + RAND_FLOAT(10.0f), - gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(30.0f), gPlayer[0].vel.x, - gPlayer[0].vel.y + gPlayer[0].knockback.y, gPlayer[0].vel.z, - RAND_FLOAT(0.1f) + 0.1f, gPlayer[0].num + 11); + Effect_Effect389_Spawn(gPlayer[0].pos.x + RAND_FLOAT_CENTERED(30.0f), + gPlayer[0].pos.y + RAND_FLOAT(10.0f), + gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(30.0f), gPlayer[0].vel.x, + gPlayer[0].vel.y + gPlayer[0].knockback.y, gPlayer[0].vel.z, + RAND_FLOAT(0.1f) + 0.1f, gPlayer[0].num + 11); } - func_effect_8007BFFC(gPlayer[0].pos.x + RAND_FLOAT_CENTERED(10.0f), gPlayer[0].pos.y + RAND_FLOAT(10.0f), - gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(10.0f), 0.0f, 15.0f, 0.0f, 2.0f, 5); + Effect386_Spawn1(gPlayer[0].pos.x + RAND_FLOAT_CENTERED(10.0f), gPlayer[0].pos.y + RAND_FLOAT(10.0f), + gPlayer[0].trueZpos + RAND_FLOAT_CENTERED(10.0f), 0.0f, 15.0f, 0.0f, 2.0f, 5); } ret = true; } @@ -890,7 +892,7 @@ s32 Bolse_8018E05C(Boss* boss, s32 index) { return ret; } -s32 Bolse_8018E3FC(Boss* boss) { +s32 Bolse_8018E3FC(BoBase* this) { s32 i; s32 j; f32 D_i4_8019EF94[6] = { 31.0f, 91.0f, 151.0f, 211.0f, 271.0f, 331.0f }; @@ -906,8 +908,8 @@ s32 Bolse_8018E3FC(Boss* boss) { if (D_i4_801A03E0[i].unk_18 == 0) { D_i4_801A0488[i].unk_18 = 0; } else { - x = D_i4_801A03E0[i].unk_0C - boss->obj.pos.x; - var_fs0 = Math_RadToDeg(Math_Atan2F(x, D_i4_801A03E0[i].unk_14 - boss->obj.pos.z)); + x = D_i4_801A03E0[i].unk_0C - this->obj.pos.x; + var_fs0 = Math_RadToDeg(Math_Atan2F(x, D_i4_801A03E0[i].unk_14 - this->obj.pos.z)); if (var_fs0 >= 360.0f) { var_fs0 = var_fs0 - 360.0f; } @@ -923,9 +925,9 @@ s32 Bolse_8018E3FC(Boss* boss) { } if (j < 6) { - x = D_i4_801A03E0[i].unk_0C - (boss->obj.pos.x + D_i4_8019EFAC[j]); - y = D_i4_801A03E0[i].unk_04 - (boss->obj.pos.y + 580.0f); - z = D_i4_801A03E0[i].unk_14 - (boss->obj.pos.z + D_i4_8019EFC4[j]); + x = D_i4_801A03E0[i].unk_0C - (this->obj.pos.x + D_i4_8019EFAC[j]); + y = D_i4_801A03E0[i].unk_04 - (this->obj.pos.y + 580.0f); + z = D_i4_801A03E0[i].unk_14 - (this->obj.pos.z + D_i4_8019EFC4[j]); var_fs0 = Math_RadToDeg(Math_Atan2F(x, z)); @@ -947,7 +949,7 @@ s32 Bolse_8018E3FC(Boss* boss) { D_i4_801A0488[i].unk_18 = 1; D_i4_801A0488[i].unk_08 = (z / 400.0f); - Bolse_8018E05C(boss, i); + Bolse_8018E05C(this, i); D_i4_801A03E0[i].unk_18 = 0; } @@ -957,44 +959,44 @@ s32 Bolse_8018E3FC(Boss* boss) { return 0; } -void Bolse_8018E710(Boss* boss) { - if (boss->state == 1) { - Bolse_8018DE8C(boss); - } else if (boss->swork[0] == 0) { - boss->fwork[2] += 8.0f; - if (boss->fwork[2] >= 100.0f) { - boss->swork[0] = 1; - boss->fwork[2] = 100.0f; +void Bolse_BoBase_Update(BoBase* this) { + if (this->state == 1) { + Bolse_8018DE8C(this); + } else if (this->swork[0] == 0) { + this->fwork[2] += 8.0f; + if (this->fwork[2] >= 100.0f) { + this->swork[0] = 1; + this->fwork[2] = 100.0f; } } else { - boss->fwork[2] -= 8.0f; - if (boss->fwork[2] <= 0.0f) { - boss->swork[0] = 0; - boss->fwork[2] = 0.0f; + this->fwork[2] -= 8.0f; + if (this->fwork[2] <= 0.0f) { + this->swork[0] = 0; + this->fwork[2] = 0.0f; } } Bolse_8018D9CC(); - Bolse_8018E3FC(boss); + Bolse_8018E3FC(this); - if (boss->fwork[1] != 0.0f) { - boss->obj.rot.y += boss->fwork[1]; - if (boss->obj.rot.y >= 360.0f) { - boss->obj.rot.y -= 360.0f; + if (this->fwork[1] != 0.0f) { + this->obj.rot.y += this->fwork[1]; + if (this->obj.rot.y >= 360.0f) { + this->obj.rot.y -= 360.0f; } } - boss->fwork[0] += 2.0f; + this->fwork[0] += 2.0f; Matrix_RotateY(&D_BO_8019EE80, gBosses[0].obj.rot.y * M_DTOR, MTXF_NEW); } -void Bolse_8018E870(Boss* boss) { +void Bolse_BoBase_Draw(BoBase* this) { s32 i; s32 alpha; - Matrix_Scale(gGfxMatrix, boss->scale, boss->scale, boss->scale, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); - if (boss->vwork[30].y >= 0.0f) { + if (this->vwork[30].y >= 0.0f) { gSPDisplayList(gMasterDisp++, D_BO_6002020); } @@ -1032,25 +1034,25 @@ s32 D_i4_8019F000[] = { 0, 0, 0 }; f32 D_i4_8019F00C[] = { 0.0f, 80.0f, 150.0f }; f32 D_i4_8019F018[] = { 3.0f, -4.0f, 5.0f, 700.0f, 300.0f, 1000.0f }; -void Bolse_8018EAEC(Actor* actor, s32 index) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos.x = D_i4_8019EFDC[index] + gPlayer[0].pos.x; - actor->obj.pos.y = D_i4_8019EFE8[index] + gPlayer[0].pos.y; - actor->obj.pos.z = D_i4_8019EFF4[index] + gPlayer[0].pos.z; - actor->animFrame = D_i4_8019F000[index]; - actor->obj.rot.y = 180.0f; - actor->vel.z = -gPlayer[0].baseSpeed; - actor->rot_0F4.z = D_i4_8019F00C[index]; - actor->rot_0F4.y = D_i4_8019F018[index]; - Object_SetInfo(&actor->info, actor->obj.id); - actor->iwork[11] = 1; - AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); +void Bolse_8018EAEC(ActorCutscene* this, s32 index) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.pos.x = D_i4_8019EFDC[index] + gPlayer[0].pos.x; + this->obj.pos.y = D_i4_8019EFE8[index] + gPlayer[0].pos.y; + this->obj.pos.z = D_i4_8019EFF4[index] + gPlayer[0].pos.z; + this->animFrame = D_i4_8019F000[index]; + this->obj.rot.y = 180.0f; + this->vel.z = -gPlayer[0].baseSpeed; + this->rot_0F4.z = D_i4_8019F00C[index]; + this->rot_0F4.y = D_i4_8019F018[index]; + Object_SetInfo(&this->info, this->obj.id); + this->iwork[11] = 1; + AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, this->sfxSource, 4); } void Bolse_8018EC1C(void) { - Actor* actor = &gActors[50]; + ActorCutscene* actor = &gActors[50]; Actor_Initialize(actor); actor->obj.status = OBJ_INIT; @@ -1064,8 +1066,8 @@ void Bolse_8018EC1C(void) { actor->info.bonus = 1; } -void Bolse_8018ECB4(void) { - Boss* boss = &gBosses[1]; +void Bolse_BoBaseShield_Setup(void) { + BoBaseShield* boss = &gBosses[1]; Boss_Initialize(boss); boss->obj.status = OBJ_INIT; @@ -1074,12 +1076,12 @@ void Bolse_8018ECB4(void) { boss->obj.pos.z = -9000.0f; boss->obj.rot.x = 20.0f; boss->scale = 0.15f; - boss->obj.id = OBJ_BOSS_310; + boss->obj.id = OBJ_BOSS_BO_BASE_SHIELD; Object_SetInfo(&boss->info, boss->obj.id); } void Bolse_8018ED44(void) { - Actor* actor = &gActors[0]; + ActorCutscene* actor = &gActors[0]; s32 i; for (i = 0; i < ARRAY_COUNT(gActors); actor++, i++) { @@ -1101,10 +1103,10 @@ void Bolse_8018ED44(void) { } void Bolse_8018EE4C(f32 x, f32 y) { - Actor* actor = &gActors[0]; + ActorCutscene* actor; s32 i; - for (i = 0; i < ARRAY_COUNT(gActors); actor++, i++) { + for (actor = &gActors[0], i = 0; i < ARRAY_COUNT(gActors); actor++, i++) { if (actor->obj.status == OBJ_FREE) { Actor_Initialize(actor); actor->obj.status = OBJ_INIT; @@ -1141,9 +1143,9 @@ f32 D_i4_8019F090[] = { 70.0f, -80.0f, -65.0f }; void Bolse_LevelStart(Player* player) { s32 i; f32 sp60 = 0.0f; - Vec3f sp54; - Vec3f sp48; - Actor* actor; + Vec3f src; + Vec3f dest; + ActorCutscene* actor; s32 pad[4]; switch (player->csState) { @@ -1177,7 +1179,7 @@ void Bolse_LevelStart(Player* player) { } Bolse_8018EC1C(); - Bolse_8018ECB4(); + Bolse_BoBaseShield_Setup(); D_ctx_80177A48[1] = -13000.0f; D_ctx_80177A48[2] = -13000.0f; @@ -1249,7 +1251,7 @@ void Bolse_LevelStart(Player* player) { case 127: Play_ClearObjectData(); - Bolse_80191ED8(); + Bolse_LoadLevelObjects(); ActorAllRange_SpawnTeam(); player->csState = 2; @@ -1323,15 +1325,15 @@ void Bolse_LevelStart(Player* player) { Matrix_RotateY(gCalcMatrix, (player->rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -(player->rot.x * M_DTOR), MTXF_APPLY); - sp54.x = 0.0f; - sp54.y = 0; - sp54.z = player->baseSpeed; + src.x = 0.0f; + src.y = 0; + src.z = player->baseSpeed; - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp54, &sp48); + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - player->vel.x = sp48.x + sp60; - player->vel.z = sp48.z; - player->vel.y = sp48.y; + player->vel.x = dest.x + sp60; + player->vel.z = dest.z; + player->vel.y = dest.y; player->pos.x += player->vel.x; player->pos.y += player->vel.y; @@ -1348,19 +1350,19 @@ void Bolse_LevelStart(Player* player) { Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[0], 50000.0f, 0); } -void Bolse_8018F83C(Actor* actor, s32 arg1) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos.x = D_i4_8019F06C[arg1] + gPlayer[0].pos.x; - actor->obj.pos.y = D_i4_8019F078[arg1] + gPlayer[0].pos.y; - actor->obj.pos.z = D_i4_8019F084[arg1] + gPlayer[0].pos.z; - actor->obj.rot.y = 180.0f; - actor->obj.rot.z = D_i4_8019F090[arg1]; - actor->vel.z = -gPlayer[0].baseSpeed; - Object_SetInfo(&actor->info, actor->obj.id); - actor->iwork[11] = 1; - AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); +void Bolse_8018F83C(Actor* this, s32 index) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.pos.x = D_i4_8019F06C[index] + gPlayer[0].pos.x; + this->obj.pos.y = D_i4_8019F078[index] + gPlayer[0].pos.y; + this->obj.pos.z = D_i4_8019F084[index] + gPlayer[0].pos.z; + this->obj.rot.y = 180.0f; + this->obj.rot.z = D_i4_8019F090[index]; + this->vel.z = -gPlayer[0].baseSpeed; + Object_SetInfo(&this->info, this->obj.id); + this->iwork[11] = 1; + AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, this->sfxSource, 4); } void Bolse_LevelComplete(Player* player) { @@ -1477,19 +1479,19 @@ void Bolse_LevelComplete(Player* player) { actor50->obj.pos.y -= 5; if (gCsFrameCount < 92) { - if (((gGameFrameCount % 2U) == 0)) { - func_effect_8007C484(actor50->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), actor50->obj.pos.y + 100.0f, - actor50->obj.pos.z + RAND_FLOAT_CENTERED(1000.0f), 0.0f, 0.0f, 0.0f, - RAND_FLOAT(0.4f) + 0.4f, 0.0f); + if ((gGameFrameCount % 2U) == 0) { + Effect_Effect389_Spawn(actor50->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + actor50->obj.pos.y + 100.0f, + actor50->obj.pos.z + RAND_FLOAT_CENTERED(1000.0f), 0.0f, 0.0f, 0.0f, + RAND_FLOAT(0.4f) + 0.4f, 0.0f); } - if (((gGameFrameCount % 2U) == 0)) { + if ((gGameFrameCount % 2U) == 0) { //! FAKE: do { } while (0); - func_effect_8007BFFC(RAND_FLOAT_CENTERED(1000.0f) + actor50->obj.pos.x, actor50->obj.pos.y + 100.0f, - RAND_FLOAT_CENTERED(1000.0f) + actor50->obj.pos.z, 0.0f, 0.0f, 0.0f, 10.0f, - 5.0f); + Effect386_Spawn1(RAND_FLOAT_CENTERED(1000.0f) + actor50->obj.pos.x, actor50->obj.pos.y + 100.0f, + RAND_FLOAT_CENTERED(1000.0f) + actor50->obj.pos.z, 0.0f, 0.0f, 0.0f, 10.0f, 5.0f); } } @@ -1514,13 +1516,13 @@ void Bolse_LevelComplete(Player* player) { Object_Kill(&gEffects[i].obj, gEffects[i].sfxSource); } - func_effect_8007B344(actor50->obj.pos.x, actor50->obj.pos.y, actor50->obj.pos.z, 400.0f, 4); + Effect_Effect384_Spawn(actor50->obj.pos.x, actor50->obj.pos.y, actor50->obj.pos.z, 400.0f, 4); break; case 100: case 105: case 110: - func_effect_8007B344(actor50->obj.pos.x, actor50->obj.pos.y, actor50->obj.pos.z, 250.0f, 6); + Effect_Effect384_Spawn(actor50->obj.pos.x, actor50->obj.pos.y, actor50->obj.pos.z, 250.0f, 6); break; case 130: @@ -1531,9 +1533,9 @@ void Bolse_LevelComplete(Player* player) { }; for (i = 0; i < 100; i++) { - func_effect_800795AC(RAND_FLOAT_CENTERED(300.0f) + actor50->obj.pos.x, - actor50->obj.pos.y - RAND_FLOAT(2000.0f), - RAND_FLOAT_CENTERED(300.0f) + actor50->obj.pos.z, 5.11f); + Effect_Effect357_Spawn95(RAND_FLOAT_CENTERED(300.0f) + actor50->obj.pos.x, + actor50->obj.pos.y - RAND_FLOAT(2000.0f), + RAND_FLOAT_CENTERED(300.0f) + actor50->obj.pos.z, 5.11f); }; actor50->unk_046 = 1; break; @@ -1673,13 +1675,13 @@ void Bolse_LevelComplete(Player* player) { if (actor50->unk_046 != 0) { Math_SmoothStepToF(&actor50->fwork[20], 3.0f, 0.03f, 0.01f, 0); - if (((gGameFrameCount % 2U) == 0)) { - func_effect_8007C484( + if ((gGameFrameCount % 2U) == 0) { + Effect_Effect389_Spawn( RAND_FLOAT_CENTERED(5000.0f) + actor50->obj.pos.x, RAND_FLOAT_CENTERED(5000.0f) + actor50->obj.pos.y, RAND_FLOAT_CENTERED(5000.0f) + actor50->obj.pos.z, 0.0f, 0.0f, 0.0f, RAND_FLOAT(0.8f) + 0.8f, 0); } - if (((gGameFrameCount % 2U) == 0)) { - func_effect_8007BFFC( + if ((gGameFrameCount % 2U) == 0) { + Effect386_Spawn1( RAND_FLOAT_CENTERED(5000.0f) + actor50->obj.pos.x, RAND_FLOAT_CENTERED(5000.0f) + actor50->obj.pos.y, RAND_FLOAT_CENTERED(5000.0f) + actor50->obj.pos.z, 0.0f, 0.0f, 0.0f, RAND_FLOAT(10.0f) + 20.0f, 5); } @@ -1743,112 +1745,112 @@ void Bolse_LevelComplete(Player* player) { player->rockAngle = SIN_DEG(player->rockPhase); } -void Bolse_80190D98(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot) { +void Bolse_Effect397_Setup1(Effect397* this, f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot) { Vec3f src; Vec3f dest; - Effect_Initialize(effect); - effect->obj.status = OBJ_ACTIVE; - effect->obj.id = OBJ_EFFECT_397; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->obj.rot.x = xRot; - effect->obj.rot.y = yRot; - effect->scale2 = 1.0f; + Effect_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_EFFECT_397; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->obj.rot.x = xRot; + this->obj.rot.y = yRot; + this->scale2 = 1.0f; Matrix_RotateY(gCalcMatrix, M_DTOR * yRot, MTXF_NEW); Matrix_RotateX(gCalcMatrix, M_DTOR * xRot, MTXF_APPLY); src.x = 0.0f; src.y = 0.0f; src.z = 200.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - effect->vel.x = dest.x; - effect->vel.y = dest.y; - effect->vel.z = dest.z; - effect->timer_50 = 60; - AUDIO_PLAY_SFX(NA_SE_EN_LONG_BEAM, effect->sfxSource, 4); - Object_SetInfo(&effect->info, effect->obj.id); + this->vel.x = dest.x; + this->vel.y = dest.y; + this->vel.z = dest.z; + this->timer_50 = 60; + AUDIO_PLAY_SFX(NA_SE_EN_LONG_BEAM, this->sfxSource, 4); + Object_SetInfo(&this->info, this->obj.id); } -void Bolse_80190EE4(f32 x, f32 y, f32 z, f32 arg3, f32 arg4) { +void Bolse_Effect397_Spawn1(f32 x, f32 y, f32 z, f32 arg3, f32 arg4) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Bolse_80190D98(&gEffects[i], x, y, z, arg3, arg4); + Bolse_Effect397_Setup1(&gEffects[i], x, y, z, arg3, arg4); break; } } } -void Bolse_80190F58(Effect* effect, f32 x, f32 y, f32 z, f32 scale) { - Effect_Initialize(effect); - effect->obj.status = OBJ_INIT; - effect->obj.id = OBJ_EFFECT_397; - effect->obj.pos.x = x; - effect->obj.pos.y = y; - effect->obj.pos.z = z; - effect->state = 1; - effect->scale1 = scale; - effect->unk_44 = 255; - Object_SetInfo(&effect->info, effect->obj.id); - effect->info.unk_14 = 1; +void Bolse_Effect397_Setup2(Effect397* this, f32 x, f32 y, f32 z, f32 scale) { + Effect_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_EFFECT_397; + this->obj.pos.x = x; + this->obj.pos.y = y; + this->obj.pos.z = z; + this->state = 1; + this->scale1 = scale; + this->unk_44 = 255; + Object_SetInfo(&this->info, this->obj.id); + this->info.unk_14 = 1; } -void Bolse_80190FE8(f32 x, f32 y, f32 z, f32 scale) { +void Bolse_Effect397_Spawn2(f32 x, f32 y, f32 z, f32 scale) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Bolse_80190F58(&gEffects[i], x, y, z, scale); + Bolse_Effect397_Setup2(&gEffects[i], x, y, z, scale); break; } } } -void Bolse_Effect397_Update(Effect* effect) { - switch (effect->state) { +void Bolse_Effect397_Update(Effect397* this) { + switch (this->state) { case 0: if (gPlayer[0].barrelRollAlpha == 0) { - func_effect_8007A774(gPlayer, effect, 150.0f); + func_effect_8007A774(gPlayer, this, 150.0f); } - Math_SmoothStepToF(&effect->scale2, 30.0f, 1.0f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->scale2, 30.0f, 1.0f, 10.0f, 0.0f); - if (effect->timer_50 == 0) { - Object_Kill(&effect->obj, effect->sfxSource); + if (this->timer_50 == 0) { + Object_Kill(&this->obj, this->sfxSource); } - if (effect->obj.pos.y < gGroundHeight + 50.0f) { - Bolse_80190FE8(effect->obj.pos.x, gGroundHeight + 50.0f, effect->obj.pos.z, 3.0f); - Object_Kill(&effect->obj, effect->sfxSource); + if (this->obj.pos.y < gGroundHeight + 50.0f) { + Bolse_Effect397_Spawn2(this->obj.pos.x, gGroundHeight + 50.0f, this->obj.pos.z, 3.0f); + Object_Kill(&this->obj, this->sfxSource); } break; case 1: - Math_SmoothStepToF(&effect->scale2, effect->scale1, 0.1f, 20.0f, 0.0f); - effect->unk_44 -= 20; - if (effect->unk_44 < 0) { - Object_Kill(&effect->obj, effect->sfxSource); + Math_SmoothStepToF(&this->scale2, this->scale1, 0.1f, 20.0f, 0.0f); + this->unk_44 -= 20; + if (this->unk_44 < 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } -void Bolse_Effect397_Draw(Effect* effect) { - switch (effect->state) { +void Bolse_Effect397_Draw(Effect397* this) { + switch (this->state) { case 0: gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 192); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, effect->scale2, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, this->scale2, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_BO_6006910); break; case 1: RCP_SetupDL(&gMasterDisp, SETUPDL_67); - gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, effect->unk_44); - gDPSetEnvColor(gMasterDisp++, 0, 128, 255, effect->unk_44); - Matrix_Scale(gGfxMatrix, effect->scale2, effect->scale2, effect->scale2, MTXF_APPLY); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, this->unk_44); + gDPSetEnvColor(gMasterDisp++, 0, 128, 255, this->unk_44); + Matrix_Scale(gGfxMatrix, this->scale2, this->scale2, this->scale2, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); RCP_SetupDL(&gMasterDisp, SETUPDL_64); @@ -1858,7 +1860,7 @@ void Bolse_Effect397_Draw(Effect* effect) { f32 D_i4_8019F09C[12] = { 0.0f, 0.0f, 60.0f, 60.0f, 120.0f, 120.0f, 180.0f, 180.0f, 240.0f, 240.0f, 300.0f, 300.0f }; -void Bolse_Boss311_Update(Boss* boss) { +void Bolse_BoBaseCore_Update(BoBaseCore* this) { s32 i; Vec3f src; Vec3f dest; @@ -1869,112 +1871,113 @@ void Bolse_Boss311_Update(Boss* boss) { Math_SmoothStepToF(&D_i4_8019EEC0, 255.0f, 1.0f, 30.0f, 0); } - switch (boss->state) { + switch (this->state) { case 0: if (gAllRangeCheckpoint == 2) { - boss->state = 1; + this->state = 1; } - boss->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; gBossFrameCount = 0; break; case 1: if (((gHitCount - gActors[0].iwork[1]) >= 5) || (D_i4_801A0530 > 8000)) { - boss->state = 2; + this->state = 2; Radio_PlayMessage(gMsg_ID_11150, RCID_PEPPY); - boss->timer_050 = 1000; - AUDIO_PLAY_SFX(NA_SE_BO_CORE_APPEAR, boss->sfxSource, 0); + this->timer_050 = 1000; + AUDIO_PLAY_SFX(NA_SE_BO_CORE_APPEAR, this->sfxSource, 0); } break; case 2: gBossFrameCount++; - Math_SmoothStepToF(&boss->obj.pos.y, 0.0f, 0.1f, 10.0f, 0); - boss->obj.rot.y += 1.0f; - if (boss->timer_050 == 1) { - boss->timer_050 = 2000; + Math_SmoothStepToF(&this->obj.pos.y, 0.0f, 0.1f, 10.0f, 0); + this->obj.rot.y += 1.0f; + if (this->timer_050 == 1) { + this->timer_050 = 2000; Radio_PlayMessage(gMsg_ID_11160, RCID_PEPPY); - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_BO_CORE_APPEAR); + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_BO_CORE_APPEAR); } break; case 10: - Math_SmoothStepToF(&boss->obj.pos.y, -500.0f, 0.1f, 5.0f, 0); - boss->obj.rot.y += 1.0f; + Math_SmoothStepToF(&this->obj.pos.y, -500.0f, 0.1f, 5.0f, 0); + this->obj.rot.y += 1.0f; break; } for (i = 0; i < 8; i++) { - if (boss->swork[12 + i] != 0) { - boss->swork[12 + i]--; - if (boss->swork[12 + i] == 1000) { - boss->swork[12 + i] = 0; + if (this->swork[12 + i] != 0) { + this->swork[12 + i]--; + if (this->swork[12 + i] == 1000) { + this->swork[12 + i] = 0; } } } - if (boss->state == 2) { - if (boss->dmgType != DMG_NONE) { - boss->dmgType = DMG_NONE; + if (this->state == 2) { + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; - if (boss->damage >= 16) { - boss->damage = 3; + if (this->damage >= 16) { + this->damage = 3; } - if (boss->dmgPart < 8) { - boss->swork[boss->dmgPart] -= boss->damage; - if (boss->swork[boss->dmgPart] <= 0) { - boss->swork[24 + boss->dmgPart] = 30; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, boss->sfxSource, 4); - boss->swork[36]--; - if (boss->swork[36] <= 0) { - boss->state = 10; + if (this->dmgPart < 8) { + this->swork[this->dmgPart] -= this->damage; + if (this->swork[this->dmgPart] <= 0) { + this->swork[24 + this->dmgPart] = 30; + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); + this->swork[36]--; + if (this->swork[36] <= 0) { + this->state = 10; gBosses[0].state = 1; } - boss->obj.pos.y += 300.0f; - Boss_AwardBonus(boss); - boss->obj.pos.y -= 300.0f; + this->obj.pos.y += 300.0f; + Boss_AwardBonus(this); + this->obj.pos.y -= 300.0f; } else { - boss->swork[12 + boss->dmgPart] = 20; - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, boss->sfxSource, 4); + this->swork[12 + this->dmgPart] = 20; + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); } } } - Matrix_RotateY(gCalcMatrix, -boss->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, -this->obj.rot.y * M_DTOR, MTXF_NEW); for (i = 0; i < 8; i++) { - if (boss->swork[i + 24] != 0) { - boss->swork[i + 24]--; - if (((gGameFrameCount % 2) == 0)) { - func_effect_8007797C(boss->vwork[i].x, boss->vwork[i].y, boss->vwork[i].z, boss->vwork[i].x * 0.2f, - 0.0f, boss->vwork[i].z * 0.2f, 5.0f); + if (this->swork[i + 24] != 0) { + this->swork[i + 24]--; + if ((gGameFrameCount % 2) == 0) { + Effect_FireSmoke_Spawn2(this->vwork[i].x, this->vwork[i].y, this->vwork[i].z, + this->vwork[i].x * 0.2f, 0.0f, this->vwork[i].z * 0.2f, 5.0f); } } - if (boss->swork[i] <= 0) { - boss->info.hitbox[i * 6 + 4] = -200.0f; + if (this->swork[i] <= 0) { + this->info.hitbox[i * 6 + 4] = -200.0f; if (((gGameFrameCount + i) % 8) == 0) { - Bolse_80190EE4(boss->vwork[i].x, boss->vwork[i].y, boss->vwork[i].z, RAND_FLOAT_CENTERED(30.0f), - boss->obj.rot.y + D_i4_8019F09C[i] + RAND_FLOAT_CENTERED(30.0f)); - boss->swork[i + 12] = 1003; + Bolse_Effect397_Spawn1(this->vwork[i].x, this->vwork[i].y, this->vwork[i].z, + RAND_FLOAT_CENTERED(30.0f), + this->obj.rot.y + D_i4_8019F09C[i] + RAND_FLOAT_CENTERED(30.0f)); + this->swork[i + 12] = 1003; } } else { - src.x = boss->vwork[i].x - boss->obj.pos.x; - src.y = boss->vwork[i].y - boss->obj.pos.y; - src.z = boss->vwork[i].z - boss->obj.pos.z; + src.x = this->vwork[i].x - this->obj.pos.x; + src.y = this->vwork[i].y - this->obj.pos.y; + src.z = this->vwork[i].z - this->obj.pos.z; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - boss->info.hitbox[i * 6 + 4] = 50.0f; - boss->info.hitbox[i * 6 + 5] = dest.x; - boss->info.hitbox[i * 6 + 3] = dest.y; - boss->info.hitbox[i * 6 + 1] = dest.z; + this->info.hitbox[i * 6 + 4] = 50.0f; + this->info.hitbox[i * 6 + 5] = dest.x; + this->info.hitbox[i * 6 + 3] = dest.y; + this->info.hitbox[i * 6 + 1] = dest.z; } } } } -bool Bolse_801918E4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* this) { - Boss* boss = (Boss*) this; +bool Bolse_BoBaseCore_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + BoBaseCore* baseCore = (BoBaseCore*) thisx; RCP_SetupDL(&gMasterDisp, SETUPDL_29); @@ -1989,7 +1992,7 @@ bool Bolse_801918E4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th case 8: RCP_SetupDL(&gMasterDisp, SETUPDL_41); gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, (s32) D_i4_8019EEC0, 255); - if (boss->swork[limbIndex - 1] <= 0) { + if (baseCore->swork[limbIndex - 1] <= 0) { *dList = NULL; } break; @@ -2002,15 +2005,15 @@ bool Bolse_801918E4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th case 14: case 15: case 16: - if ((boss->swork[3 + limbIndex] % 2) != 0) { + if ((baseCore->swork[3 + limbIndex] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_41); - if (boss->swork[3 + limbIndex] > 1000) { + if (baseCore->swork[3 + limbIndex] > 1000) { gDPSetPrimColor(gMasterDisp++, 0, 0, 64, 64, 255, 255); } else { gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 0, 0, 255); } } - if (boss->swork[0 + limbIndex - 9] <= 0) { + if (baseCore->swork[0 + limbIndex - 9] <= 0) { *dList = D_BO_6009BC0; } break; @@ -2018,9 +2021,9 @@ bool Bolse_801918E4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* th return false; } -void Bolse_80191A6C(s32 index, Vec3f* vec, void* ptr) { +void Bolse_BoBaseCore_PostLimbDraw(s32 index, Vec3f* vec, void* thisx) { Vec3f src = { 0.0f, 0.0f, 0.0f }; - Boss* boss = (Boss*) ptr; + BoBaseCore* baseCore = (BoBaseCore*) thisx; switch (index) { case 1: @@ -2031,36 +2034,37 @@ void Bolse_80191A6C(s32 index, Vec3f* vec, void* ptr) { case 6: case 7: case 8: - Matrix_MultVec3f(gCalcMatrix, &src, &boss->vwork[index - 1]); + Matrix_MultVec3f(gCalcMatrix, &src, &baseCore->vwork[index - 1]); break; } } -void Bolse_Boss311_Draw(Boss* boss) { - Animation_GetFrameData(&D_BO_6001C64, 0, boss->vwork); - if (boss->state >= 2) { - Animation_DrawSkeleton(3, D_BO_6001FB0, boss->vwork, Bolse_801918E4, Bolse_80191A6C, boss, gCalcMatrix); +void Bolse_BoBaseCore_Draw(BoBaseCore* this) { + Animation_GetFrameData(&D_BO_6001C64, 0, this->vwork); + if (this->state >= 2) { + Animation_DrawSkeleton(3, D_BO_6001FB0, this->vwork, Bolse_BoBaseCore_OverrideLimbDraw, + Bolse_BoBaseCore_PostLimbDraw, this, gCalcMatrix); } else { - Animation_DrawSkeleton(3, D_BO_6001FB0, boss->vwork, NULL, NULL, boss, gCalcMatrix); + Animation_DrawSkeleton(3, D_BO_6001FB0, this->vwork, NULL, NULL, this, gCalcMatrix); } } -void Bolse_80191BAC(Boss* boss) { +void Bolse_BoBaseShield_Update(BoBaseShield* this) { D_i4_801A0530 = 0; - Math_SmoothStepToF(&boss->fwork[0], D_BO_801A03DC * 9.0f + 10.0f, 1.0f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[0], D_BO_801A03DC * 9.0f + 10.0f, 1.0f, 10.0f, 0.0f); - Texture_Scroll(D_BO_600CF88, 16, 16, 0); - Texture_Scroll(D_BO_600CF88, 16, 16, 0); + Texture_Scroll(aBoBaseShieldTex, 16, 16, 0); + Texture_Scroll(aBoBaseShieldTex, 16, 16, 0); - switch (boss->state) { + switch (this->state) { case 2: break; case 0: if (D_BO_801A03DC == 0) { - boss->timer_052 = 130; - boss->state = 1; + this->timer_052 = 130; + this->state = 1; Radio_PlayMessage(gMsg_ID_11050, RCID_FOX); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1); @@ -2069,46 +2073,47 @@ void Bolse_80191BAC(Boss* boss) { case 1: Math_SmoothStepToF(&gBosses[0].fwork[1], 0.0f, 1.0f, 0.01f, 0.001f); - if (boss->timer_052 == 0) { - boss->state = 2; - AUDIO_PLAY_SFX(NA_SE_OB_BARRIER_RELEASE, boss->sfxSource, 0); + if (this->timer_052 == 0) { + this->state = 2; + AUDIO_PLAY_SFX(NA_SE_OB_BARRIER_RELEASE, this->sfxSource, 0); } break; } if (gGroundClipMode == 0) { - if (((gGameFrameCount % 2) == 0)) { + if ((gGameFrameCount % 2) == 0) { gLight3Brightness = 0.0f; } else { gLight3Brightness = 0.5f; } - gLight3x = boss->obj.pos.x; - gLight3y = boss->obj.pos.y; - gLight3z = boss->obj.pos.z; + gLight3x = this->obj.pos.x; + gLight3y = this->obj.pos.y; + gLight3z = this->obj.pos.z; gLight3R = 255; gLight3G = 128; gLight3B = 128; } } -void Bolse_80191DB0(Boss* boss) { +void Bolse_BoBaseShield_Draw(BoBaseShield* this) { s32 alpha; - Matrix_Scale(gGfxMatrix, boss->scale, boss->scale, boss->scale, MTXF_APPLY); - alpha = boss->fwork[0]; + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); + + alpha = this->fwork[0]; if (alpha != 0) { - if (((gGameFrameCount % 2) == 0)) { + if ((gGameFrameCount % 2) == 0) { alpha *= 1.7f; } RCP_SetupDL(&gMasterDisp, SETUPDL_41); gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, alpha); Matrix_Scale(gGfxMatrix, 1.2f, 0.55f, 1.2f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_BO_600C4E0); + gSPDisplayList(gMasterDisp++, aBoBaseShieldDL); } } -void Bolse_80191ED8(void) { +void Bolse_LoadLevelObjects(void) { s32 i; Actor* actor; Boss* boss; @@ -2141,7 +2146,7 @@ void Bolse_80191ED8(void) { Actor_Initialize(actor); actor->obj.status = OBJ_INIT; actor->obj.id = gLevelObjects[i].id; - if ((actor->obj.id == OBJ_ACTOR_271) && (gAllRangeCheckpoint == 0)) { + if ((actor->obj.id == OBJ_ACTOR_BO_SHIELD_REACTOR) && (gAllRangeCheckpoint == 0)) { AUDIO_PLAY_SFX(NA_SE_OB_SPARK_BEAM, actor->sfxSource, 0); } actor->fwork[10] = actor->obj.pos.x = gLevelObjects[i].xPos; @@ -2157,21 +2162,21 @@ void Bolse_80191ED8(void) { Boss_Initialize(boss); boss->obj.status = OBJ_INIT; - boss->obj.id = OBJ_BOSS_309; + boss->obj.id = OBJ_BOSS_BO_BASE; Object_SetInfo(&boss->info, boss->obj.id); boss++; Boss_Initialize(boss); boss->obj.status = OBJ_INIT; - boss->obj.id = OBJ_BOSS_310; + boss->obj.id = OBJ_BOSS_BO_BASE_SHIELD; Object_SetInfo(&boss->info, boss->obj.id); boss++; Boss_Initialize(boss); boss->obj.status = OBJ_INIT; - boss->obj.id = OBJ_BOSS_311; + boss->obj.id = OBJ_BOSS_BO_BASE_CORE; boss->swork[36] = 8; boss->obj.pos.y = -700.0f; diff --git a/src/overlays/ovl_i4/fox_fo.c b/src/overlays/ovl_i4/fox_fo.c index 6d452b64..fac911ac 100644 --- a/src/overlays/ovl_i4/fox_fo.c +++ b/src/overlays/ovl_i4/fox_fo.c @@ -457,7 +457,7 @@ void Fortuna_UpdateEvents(ActorEvent* this) { } } -void Fortuna_SetupDebris(ActorDebris* this, Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state) { +void Fortuna_ActorDebris_Setup(ActorDebris* this, Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state) { Actor_Initialize(this); this->obj.status = OBJ_ACTIVE; this->obj.id = OBJ_ACTOR_DEBRIS; @@ -476,30 +476,30 @@ void Fortuna_SetupDebris(ActorDebris* this, Vec3f* pos, Vec3f* rot, f32 xVel, f3 Object_SetInfo(&this->info, this->obj.id); } -void Fortuna_SpawnDebris(Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state) { +void Fortuna_ActorDebris_Spawn(Vec3f* pos, Vec3f* rot, f32 xVel, f32 yVel, f32 zVel, s32 state) { s32 i; for (i = ARRAY_COUNT(gActors) - 1; i >= 30; i--) { if (gActors[i].obj.status == 0) { - Fortuna_SetupDebris(&gActors[i], pos, rot, xVel, yVel, zVel, state); + Fortuna_ActorDebris_Setup(&gActors[i], pos, rot, xVel, yVel, zVel, state); break; } } } -void Fortuna_Radar_Update(FoRadar* this) { +void Fortuna_FoRadar_Update(FoRadar* this) { this->fwork[0] += 2.0f; if (this->state == 2) { this->state = 3; - Fortuna_SpawnDebris(this->vwork, &this->vwork[6], RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT(10.0f) + 10.0f, - RAND_FLOAT_CENTERED(50.0f), 36); - Fortuna_SpawnDebris(&this->vwork[1], &this->vwork[7], RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT(10.0f) + 10.0f, - RAND_FLOAT_CENTERED(50.0f), 36); - Fortuna_SpawnDebris(&this->vwork[2], &this->vwork[8], RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT(10.0f) + 10.0f, - RAND_FLOAT_CENTERED(50.0f), 35); - Fortuna_SpawnDebris(&this->vwork[3], &this->vwork[9], RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT(10.0f) + 10.0f, - RAND_FLOAT_CENTERED(50.0f), 35); - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y + 180.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 5.0f, 10); + Fortuna_ActorDebris_Spawn(this->vwork, &this->vwork[6], RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT(10.0f) + 10.0f, + RAND_FLOAT_CENTERED(50.0f), 36); + Fortuna_ActorDebris_Spawn(&this->vwork[1], &this->vwork[7], RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT(10.0f) + 10.0f, RAND_FLOAT_CENTERED(50.0f), 36); + Fortuna_ActorDebris_Spawn(&this->vwork[2], &this->vwork[8], RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT(10.0f) + 10.0f, RAND_FLOAT_CENTERED(50.0f), 35); + Fortuna_ActorDebris_Spawn(&this->vwork[3], &this->vwork[9], RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT(10.0f) + 10.0f, RAND_FLOAT_CENTERED(50.0f), 35); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 180.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 5.0f, 10); this->itemDrop = DROP_SILVER_RING; this->obj.pos.y += 230.0f; Actor_Despawn(this); @@ -517,9 +517,9 @@ void Fortuna_Radar_Update(FoRadar* this) { } } -void Fortuna_Radar_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* ptr) { +void Fortuna_FoRadar_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f vec = { 0.0f, 0.0f, 0.0f }; - FoRadar* actor = (FoRadar*) ptr; + FoRadar* actor = (FoRadar*) thisx; if (actor->state == 1) { switch (limbIndex) { @@ -556,8 +556,8 @@ void Fortuna_Radar_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* ptr) { } } -bool Fortuna_Radar_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* ptr) { - FoRadar* actor = (FoRadar*) ptr; +bool Fortuna_FoRadar_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + FoRadar* actor = (FoRadar*) thisx; gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -587,11 +587,11 @@ bool Fortuna_Radar_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3 return false; } -void Fortuna_Radar_Draw(FoRadar* this) { +void Fortuna_FoRadar_Draw(FoRadar* this) { Vec3f frameTable[20]; - Animation_GetFrameData(&D_FO_6007854, 0, frameTable); - Animation_DrawSkeleton(3, D_FO_6007980, frameTable, Fortuna_Radar_OverrideLimbDraw, Fortuna_Radar_PostLimbDraw, + Animation_GetFrameData(&aFoRadarAnim, 0, frameTable); + Animation_DrawSkeleton(3, aFoRadarSkel, frameTable, Fortuna_FoRadar_OverrideLimbDraw, Fortuna_FoRadar_PostLimbDraw, this, gCalcMatrix); if (this->state == 1) { @@ -618,7 +618,7 @@ f32 sLevelCompleteCsActorInitPosX[] = { -200.0f, 200.0f, -50.0f, -2000.0f }; f32 sLevelCompleteCsActorInitPosY[] = { 0.0f, 30.0f, -90.0f, 0.0f }; f32 sLevelCompleteCsActorInitPosZ[] = { -100.0f, -200.0f, -300.0f, 0.0f }; -void Fortuna_LevelCompleteCsSpawnTeam(ActorCutscene* this, s32 actorIdx) { +void Fortuna_LevelComplete_CsSpawnTeam(ActorCutscene* this, s32 actorIdx) { Actor_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_ACTOR_CUTSCENE; @@ -795,7 +795,7 @@ void Fortuna_LevelComplete(Player* player) { gBosses[0].swork[0] = 1; - if ((func_hud_80090200(&gBosses[0]) == 2) || (gMissionStatus != MISSION_COMPLETE)) { + if ((HUD_FoBase_ExplodeCs(&gBosses[0]) == 2) || (gMissionStatus != MISSION_COMPLETE)) { Play_ClearObjectData(); if (gMissionStatus == MISSION_COMPLETE) { player->csState = 10; @@ -849,7 +849,7 @@ void Fortuna_LevelComplete(Player* player) { Audio_StartPlayerNoise(0); if (gMissionStatus == MISSION_COMPLETE) { - Fortuna_LevelCompleteCsSpawnTeam(greatFox, 3); + Fortuna_LevelComplete_CsSpawnTeam(greatFox, 3); } } break; @@ -868,13 +868,13 @@ void Fortuna_LevelComplete(Player* player) { if (gCsFrameCount == 100) { player->baseSpeed = 30.0f; if (gTeamShields[TEAM_ID_FALCO] > 0) { - Fortuna_LevelCompleteCsSpawnTeam(falco, 0); + Fortuna_LevelComplete_CsSpawnTeam(falco, 0); } if (gTeamShields[TEAM_ID_SLIPPY] > 0) { - Fortuna_LevelCompleteCsSpawnTeam(slippy, 1); + Fortuna_LevelComplete_CsSpawnTeam(slippy, 1); } if (gTeamShields[TEAM_ID_PEPPY] > 0) { - Fortuna_LevelCompleteCsSpawnTeam(peppy, 2); + Fortuna_LevelComplete_CsSpawnTeam(peppy, 2); } } @@ -1126,26 +1126,26 @@ void Fortuna_LevelComplete(Player* player) { case 20: if (gTeamShields[TEAM_ID_FALCO] > 0) { - Fortuna_LevelCompleteCsSpawnTeam(falco, 0); + Fortuna_LevelComplete_CsSpawnTeam(falco, 0); falco->obj.pos.x = (player->pos.x - 100.0f) - 400.0f; falco->obj.pos.y = player->pos.y + 400.0f; falco->obj.pos.z = player->trueZpos - 150.0f; falco->obj.rot.z = 90.0f; } if (gTeamShields[TEAM_ID_SLIPPY] > 0) { - Fortuna_LevelCompleteCsSpawnTeam(slippy, 1); + Fortuna_LevelComplete_CsSpawnTeam(slippy, 1); slippy->obj.pos.x = player->pos.x + 100.0f + 400.0f; slippy->obj.pos.y = player->pos.y + 400.0f; slippy->obj.pos.z = player->trueZpos - 150.0f; slippy->obj.rot.z = -90.0f; } if (gTeamShields[TEAM_ID_PEPPY] > 0) { - Fortuna_LevelCompleteCsSpawnTeam(peppy, 2); + Fortuna_LevelComplete_CsSpawnTeam(peppy, 2); peppy->obj.pos.x = player->pos.x; peppy->obj.pos.y = player->pos.y + 100.0f + 400.0f; peppy->obj.pos.z = player->trueZpos - 250.0f; } - Fortuna_LevelCompleteCsSpawnTeam(greatFox, 3); + Fortuna_LevelComplete_CsSpawnTeam(greatFox, 3); greatFox->obj.pos.z = player->pos.z + 400.0f; greatFox->vel.z = 0.0f; @@ -1457,7 +1457,7 @@ void Fortuna_LoadLevelObjects(void) { Actor* actor; Sprite* sprite; Scenery360* scenery360; - BossFO* boss = &gBosses[0]; + FoBase* base = &gBosses[0]; gLevelObjects = SEGMENTED_TO_VIRTUAL(gLevelObjectInits[gCurrentLevel]); @@ -1510,11 +1510,11 @@ void Fortuna_LoadLevelObjects(void) { } } - Boss_Initialize(boss); - boss->obj.status = OBJ_INIT; - boss->obj.pos.x = 0.0f; - boss->obj.pos.y = 0.0f; - boss->obj.pos.z = 0.0f; - boss->obj.id = OBJ_BOSS_FO; - Object_SetInfo(&boss->info, boss->obj.id); + Boss_Initialize(base); + base->obj.status = OBJ_INIT; + base->obj.pos.x = 0.0f; + base->obj.pos.y = 0.0f; + base->obj.pos.z = 0.0f; + base->obj.id = OBJ_BOSS_FO_BASE; + Object_SetInfo(&base->info, base->obj.id); } diff --git a/src/overlays/ovl_i4/fox_i4.c b/src/overlays/ovl_i4/fox_i4.c index 68bbbe7d..6beeb7f2 100644 --- a/src/overlays/ovl_i4/fox_i4.c +++ b/src/overlays/ovl_i4/fox_i4.c @@ -1,14 +1,14 @@ #include "global.h" void Fortuna_LevelComplete(Player*); -void Bolse_8018D394(Boss*); -void Bolse_8018D454(Boss*); -void Bolse_8018D7F0(Boss*); -void Bolse_8018D960(Boss*); -void Bolse_8018E710(Actor*); -void Bolse_8018E870(Actor*); -void Bolse_80191BAC(Actor*); -void Bolse_80191DB0(Actor*); +void Bolse_BoLaserCannon_Update(Boss*); +void Bolse_BoLaserCannon_Draw(BoLaserCannon*); +void Bolse_BoShieldReactor_Update(BoShieldReactor*); +void Bolse_BoShieldReactor_Draw(Boss*); +void Bolse_BoBase_Update(Actor*); +void Bolse_BoBase_Draw(Actor*); +void Bolse_BoBaseShield_Update(Actor*); +void Bolse_BoBaseShield_Draw(Actor*); UNK_TYPE D_i4_801A03C0; s32 D_i4_8019EDD0 = 0; @@ -18,29 +18,29 @@ void OvlI4_CallFunction(u32 mode, void* ptr) { case OVLCALL_FO_CS_COMPLETE: Fortuna_LevelComplete(ptr); break; - case OVLCALL_BOSS309_UPDATE: - Bolse_8018E710(ptr); + case OVLCALL_BO_BASE_UPDATE: + Bolse_BoBase_Update(ptr); break; - case OVLCALL_BOSS309_DRAW: - Bolse_8018E870(ptr); + case OVLCALL_BO_BASE_DRAW: + Bolse_BoBase_Draw(ptr); break; - case OVLCALL_BOSS310_UPDATE: - Bolse_80191BAC(ptr); + case OVLCALL_BO_BASE_SHIELD_UPDATE: + Bolse_BoBaseShield_Update(ptr); break; - case OVLCALL_BOSS310_DRAW: - Bolse_80191DB0(ptr); + case OVLCALL_BO_BASE_SHIELD_DRAW: + Bolse_BoBaseShield_Draw(ptr); break; - case OVLCALL_ACTOR271_UPDATE: - Bolse_8018D7F0(ptr); + case OVLCALL_BO_SHIELD_REACTOR_UPDATE: + Bolse_BoShieldReactor_Update(ptr); break; - case OVLCALL_ACTOR271_DRAW: - Bolse_8018D960(ptr); + case OVLCALL_BO_SHIELD_REACTOR_DRAW: + Bolse_BoShieldReactor_Draw(ptr); break; - case OVLCALL_ACTOR272_UPDATE: - Bolse_8018D394(ptr); + case OVLCALL_BO_LASER_CANNON_UPDATE: + Bolse_BoLaserCannon_Update(ptr); break; - case OVLCALL_ACTOR272_DRAW: - Bolse_8018D454(ptr); + case OVLCALL_BO_LASER_CANNON_DRAW: + Bolse_BoLaserCannon_Draw(ptr); default: PRINTF("i4 指定外!\n"); // Not specified! break; diff --git a/src/overlays/ovl_i4/fox_ka.c b/src/overlays/ovl_i4/fox_ka.c index c2864824..6e1ee05f 100644 --- a/src/overlays/ovl_i4/fox_ka.c +++ b/src/overlays/ovl_i4/fox_ka.c @@ -179,7 +179,7 @@ typedef enum KaBaseStates { /* 2 */ KA_BASE_STATE_2 } KaBaseStates; -typedef enum KaSaucererStates { +typedef enum KaKaSaucererStates { /* 0 */ SAUCERER_STAND_BY, /* 1 */ SAUCERER_CS_APPROACH_BASE, /* 2 */ SAUCERER_CS_CLOSE_UP, @@ -197,9 +197,9 @@ typedef enum KaSaucererStates { /* 18 */ SAUCERER_CS_LASER_HIT, /* 20 */ SAUCERER_DEFEAT = 20, /* 21 */ SAUCERER_CS_FALL_TO_GROUND, -} KaSaucererStates; +} KaKaSaucererStates; -// Particle effects visible while the Saucerer is charging it's laser +// Particle effects visible while the KaSaucerer is charging it's laser void Katina_LaserEnergyParticlesSetup(Effect358* this, f32 x, f32 y, f32 z, f32 x2, f32 y2, f32 z2) { f32 yRot; f32 xRot; @@ -209,7 +209,7 @@ void Katina_LaserEnergyParticlesSetup(Effect358* this, f32 x, f32 y, f32 z, f32 Effect_Initialize(this); this->obj.status = OBJ_ACTIVE; - this->obj.id = OBJ_EFFECT_358; + this->obj.id = OBJ_EFFECT_KA_ENERGY_PARTICLES; this->obj.pos.x = x; this->obj.pos.y = y; @@ -235,7 +235,7 @@ void Katina_LaserEnergyParticlesSetup(Effect358* this, f32 x, f32 y, f32 z, f32 Object_SetInfo(&this->info, this->obj.id); } -// Particle effects visible while the Saucerer is charging it's laser +// Particle effects visible while the KaSaucerer is charging it's laser void Katina_LaserEnergyParticlesSpawn(f32 x, f32 y, f32 z, f32 x2, f32 y2, f32 z2) { s32 i; @@ -283,7 +283,7 @@ void Katina_FireSmokeEffectSetup(EffectFireSmoke* this, f32 x, f32 y, f32 z, f32 Effect_Initialize(this); this->obj.status = OBJ_INIT; - this->obj.id = OBJ_EFFECT_FIRE_SMOKE; + this->obj.id = OBJ_EFFECT_FIRE_SMOKE_1; this->obj.pos.x = x; this->obj.pos.y = y; @@ -492,7 +492,7 @@ void Katina_LevelStart(Player* player) { func_effect_8007D2C8(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 10.0f); for (j = 0; j < 10; j++) { - func_effect_800794CC(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 1.0f); + Effect_Effect357_Spawn50(gActors[5].obj.pos.x, gActors[5].obj.pos.y, gActors[5].obj.pos.z, 1.0f); } Effect_SpawnTimedSfxAtPos(&gActors[5].obj.pos, NA_SE_EN_EXPLOSION_M); @@ -531,7 +531,7 @@ void Katina_LevelStart(Player* player) { Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[0], 50000.0f, 0.0f); } -void Katina_BaseUpdate(Frontlinebase* this) { +void Katina_KaFrontlineBase_Update(KaFrontlineBase* this) { s32 i; f32 posX; Vec3f src; @@ -545,7 +545,7 @@ void Katina_BaseUpdate(Frontlinebase* this) { case KA_BASE_STATE_1: this->timer_050 = 4; this->state++; - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y + 250.0f, this->obj.pos.z + 600.0f, 71.0f, 5); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y + 250.0f, this->obj.pos.z + 600.0f, 71.0f, 5); gCameraShake = 25; gLight1R = 255; gLight1G = 0; @@ -562,7 +562,7 @@ void Katina_BaseUpdate(Frontlinebase* this) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); if (dest.z > 0.0f) { - func_effect_8007953C(dest.x, posX, dest.z, 1.3f); + Effect_Effect357_Spawn80(dest.x, posX, dest.z, 1.3f); posX += 6.25f; src.z -= 6.0f; } @@ -593,7 +593,7 @@ void Katina_BaseUpdate(Frontlinebase* this) { } } -void Katina_Base_Draw(Frontlinebase* this) { +void Katina_KaFrontlineBase_Draw(KaFrontlineBase* this) { gSPFogPosition(gMasterDisp++, gFogNear, 1002); Matrix_Translate(gGfxMatrix, 0.0f, 20.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); @@ -607,7 +607,7 @@ void Katina_Base_Draw(Frontlinebase* this) { } } -void Katina_BossSetup(Saucerer* this) { +void Katina_KaSaucerer_Init(KaSaucerer* this) { this->swork[BOSS_HATCH_1_HP] = 100; this->swork[BOSS_HATCH_2_HP] = 100; this->swork[BOSS_HATCH_3_HP] = 100; @@ -618,7 +618,7 @@ void Katina_BossSetup(Saucerer* this) { this->vwork[0].y = 1000.0f; } -void Katina_Hatch_Destroy(Saucerer* this, s32 hatchIdx) { +void Katina_Hatch_Destroy(KaSaucerer* this, s32 hatchIdx) { s32 i; Vec3f pos; @@ -628,10 +628,10 @@ void Katina_Hatch_Destroy(Saucerer* this, s32 hatchIdx) { this->swork[hatchIdx + 5] = 60; for (i = 0; i < 20; i++) { - func_effect_800794CC(this->obj.pos.x + RAND_FLOAT_CENTERED(300.0f) + (this->vwork[hatchIdx + 1].x * 1.3f), - this->obj.pos.y + RAND_FLOAT_CENTERED(300.0f) + (this->vwork[hatchIdx + 1].y * 1.3f), - this->obj.pos.z + RAND_FLOAT_CENTERED(300.0f) + (this->vwork[hatchIdx + 1].z * 1.3f), - 1.55f); + Effect_Effect357_Spawn50(this->obj.pos.x + RAND_FLOAT_CENTERED(300.0f) + (this->vwork[hatchIdx + 1].x * 1.3f), + this->obj.pos.y + RAND_FLOAT_CENTERED(300.0f) + (this->vwork[hatchIdx + 1].y * 1.3f), + this->obj.pos.z + RAND_FLOAT_CENTERED(300.0f) + (this->vwork[hatchIdx + 1].z * 1.3f), + 1.55f); } pos.x = this->obj.pos.x + (this->vwork[hatchIdx + 1].x * 1.3f); @@ -648,7 +648,7 @@ void Katina_Hatch_Destroy(Saucerer* this, s32 hatchIdx) { D_ctx_80177850 = 15; } -void Katina_BossHandleDamage(Saucerer* this) { +void Katina_BossHandleDamage(KaSaucerer* this) { s32 i; s32 pad; Vec3f src; @@ -700,7 +700,7 @@ void Katina_BossHandleDamage(Saucerer* this) { } if (this->swork[BOSS_CORE_HP] <= 0) { - // OBJ_EFFECT_FIRE_SMOKE + // OBJ_EFFECT_FIRE_SMOKE_1 func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y - 1000.0f, this->obj.pos.z, 15.0f); y = 0.0f; @@ -717,8 +717,8 @@ void Katina_BossHandleDamage(Saucerer* this) { // Broken pieces of the core // OBJ_EFFECT_357 - func_effect_800794CC(this->obj.pos.x + dest.x, this->obj.pos.y - 1200.0f + y, - this->obj.pos.z + dest.z, 1.6f); + Effect_Effect357_Spawn50(this->obj.pos.x + dest.x, this->obj.pos.y - 1200.0f + y, + this->obj.pos.z + dest.z, 1.6f); } AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); @@ -747,10 +747,10 @@ void Katina_BossHandleDamage(Saucerer* this) { if ((gGameFrameCount % 16) == 0) { for (i = 0; i < 4; i++) { if ((this->swork[10 + i] <= 0) && (Rand_ZeroOne() < 0.2f)) { - func_effect_8007BFFC((this->vwork[1 + i].x * 1.3f) + this->obj.pos.x, - (this->vwork[1 + i].y * 1.3f) + this->obj.pos.y, - (this->vwork[1 + i].z * 1.3f) + this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 7.0f, 5); + Effect386_Spawn1((this->vwork[1 + i].x * 1.3f) + this->obj.pos.x, + (this->vwork[1 + i].y * 1.3f) + this->obj.pos.y, + (this->vwork[1 + i].z * 1.3f) + this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 7.0f, 5); } } } @@ -772,7 +772,7 @@ void Katina_BossHandleDamage(Saucerer* this) { } } -void Katina_BossSpawnEnemies(Saucerer* this, Vec3f* pos, f32 arg2) { +void Katina_BossSpawnEnemies(KaSaucerer* this, Vec3f* pos, f32 arg2) { s32 i; ActorAllRange* actor = &gActors[20]; @@ -821,9 +821,9 @@ void Katina_BossSpawnEnemies(Saucerer* this, Vec3f* pos, f32 arg2) { } /** - * Sets the angle for the enemies coming out of the Saucerer + * Sets the angle for the enemies coming out of the KaSaucerer */ -void Katina_SetOutcomingEnemyAngle(Saucerer* this) { +void Katina_SetOutcomingEnemyAngle(KaSaucerer* this) { f32 angle; f32 distY; s32 i; @@ -840,7 +840,7 @@ void Katina_SetOutcomingEnemyAngle(Saucerer* this) { } } -void Katina_BossUpdate(Saucerer* this) { +void Katina_KaSaucerer_Update(KaSaucerer* this) { s32 i; s32 rotCount; s32 enemyCount; @@ -867,7 +867,7 @@ void Katina_BossUpdate(Saucerer* this) { } /** - * Summon core if all hatches are destroyed or after 3 minutes from Saucerer appearance. + * Summon core if all hatches are destroyed or after 3 minutes from KaSaucerer appearance. */ if ((((this->swork[BOSS_HATCH_1_HP] <= 0) && (this->swork[BOSS_HATCH_2_HP] <= 0) && (this->swork[BOSS_HATCH_3_HP] <= 0) && (this->swork[BOSS_HATCH_4_HP] <= 0)) || @@ -882,7 +882,7 @@ void Katina_BossUpdate(Saucerer* this) { } switch (this->state) { - // Send Saucerer whether you killed 10 enemies or after 2 minutes of gameplay + // Send KaSaucerer whether you killed 10 enemies or after 2 minutes of gameplay case SAUCERER_STAND_BY: if ((gHitCount >= 10) || (gAllRangeEventTimer > 3840)) { if ((D_edisplay_801615D0.y < 0.0f)) { @@ -912,7 +912,7 @@ void Katina_BossUpdate(Saucerer* this) { break; /** - * Wait for Saucerer to be near the base to start cutscene. + * Wait for KaSaucerer to be near the base to start cutscene. * Set checkpoint. */ case SAUCERER_CS_APPROACH_BASE: @@ -1026,7 +1026,7 @@ void Katina_BossUpdate(Saucerer* this) { break; /** - * Cutscene: Boss music starts, enemies coming out of the Saucerer. + * Cutscene: Boss music starts, enemies coming out of the KaSaucerer. * Return control to the player after cutscene ends and close the hatches. */ case SAUCERER_CS_SEND_ENEMIES: @@ -1149,7 +1149,7 @@ void Katina_BossUpdate(Saucerer* this) { } break; - // Set a 1 minute timer for Saucerer attack. + // Set a 1 minute timer for KaSaucerer attack. case SAUCERER_LASER_CHARGE_START: if (this->timer_050 == 0) { AUDIO_PLAY_SFX(NA_SE_KA_UFO_HATCH_STOP, this->sfxSource, 0); @@ -1161,7 +1161,7 @@ void Katina_BossUpdate(Saucerer* this) { break; /** - * Start Saucerer attack after 13 seconds from Bill's warning + * Start KaSaucerer attack after 13 seconds from Bill's warning * Start cutscene for base destruction. */ case SAUCERER_CS_LASER_CHARGE_END: @@ -1205,7 +1205,7 @@ void Katina_BossUpdate(Saucerer* this) { } break; - // Rotate Saucerer into fire position. + // Rotate KaSaucerer into fire position. case SAUCERER_CS_ROTATE: if (this->timer_050 == 700) { Radio_PlayMessage(gMsg_ID_18070, RCID_BILL); @@ -1262,7 +1262,7 @@ void Katina_BossUpdate(Saucerer* this) { } break; - // Cutscene: Close up, start Saucerer attack. + // Cutscene: Close up, start KaSaucerer attack. case SAUCERER_CS_LASER_FIRE_START: Math_SmoothStepToF(&D_ctx_801779A8[gMainController], 30.0f, 1.0f, 1.6f, 0.0f); Math_SmoothStepToF(&gPlayer[0].cam.eye.z, 0.0f, 0.05f, 5.0f, 0.0f); @@ -1311,7 +1311,7 @@ void Katina_BossUpdate(Saucerer* this) { if ((this->timer_052 == 700) || (this->timer_052 == 697)) { i = gGameFrameCount % 64U; Object_Kill(&gEffects[i].obj, gEffects[i].sfxSource); - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y - 600.0f, this->obj.pos.z, 90.0f, 0); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y - 600.0f, this->obj.pos.z, 90.0f, 0); AUDIO_PLAY_SFX(NA_SE_KA_UFO_BEAM, this->sfxSource, 0); } @@ -1319,7 +1319,7 @@ void Katina_BossUpdate(Saucerer* this) { this->state = 17; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { - if (gEffects[i].obj.id == OBJ_EFFECT_358) { + if (gEffects[i].obj.id == OBJ_EFFECT_KA_ENERGY_PARTICLES) { Object_Kill(&gEffects[i].obj, gEffects[i].sfxSource); } } @@ -1343,7 +1343,7 @@ void Katina_BossUpdate(Saucerer* this) { } break; - // Cutscene: Saucerer fires laser to the base. + // Cutscene: KaSaucerer fires laser to the base. case SAUCERER_CS_LASER_FIRE_END: this->fwork[BOSS_FWORK_13] += 0.1f; @@ -1358,7 +1358,7 @@ void Katina_BossUpdate(Saucerer* this) { } break; - // Cutscene: Base is hit by Saucerer's laser. + // Cutscene: Base is hit by KaSaucerer's laser. case SAUCERER_CS_LASER_HIT: Math_SmoothStepToF(&D_ctx_801779A8[gMainController], 100.0f, 1.0f, 100.0f, 0.0f); Math_SmoothStepToF(&gPlayer[0].cam.at.y, 525.0f, 0.3f, 50.0f, 0.0f); @@ -1396,7 +1396,7 @@ void Katina_BossUpdate(Saucerer* this) { } break; - // Saucerer core destroyed, setup for MISSION_ACCOMPLISHED. + // KaSaucerer core destroyed, setup for MISSION_ACCOMPLISHED. case SAUCERER_DEFEAT: gShowAllRangeCountdown = false; @@ -1424,7 +1424,7 @@ void Katina_BossUpdate(Saucerer* this) { } break; - // Cutscene: Saucerer falling to the ground. + // Cutscene: KaSaucerer falling to the ground. case SAUCERER_CS_FALL_TO_GROUND: Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); @@ -1445,8 +1445,8 @@ void Katina_BossUpdate(Saucerer* this) { src.y = -800.0f; src.z = RAND_FLOAT_CENTERED(3000.0f); Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - func_effect_800794CC(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, - 1.55f); + Effect_Effect357_Spawn50(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, + 1.55f); } else { this->obj.rot.x -= 0.06f; this->vel.y = 0.0f; @@ -1550,7 +1550,7 @@ void Katina_BossUpdate(Saucerer* this) { } bool Katina_BossOverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Saucerer* boss = (Saucerer*) data; + KaSaucerer* boss = (KaSaucerer*) data; RCP_SetupDL(&gMasterDisp, SETUPDL_29); gDPSetPrimColor(gMasterDisp++, 0, 0, 40, 40, 255, 255); @@ -1630,14 +1630,14 @@ bool Katina_BossOverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* if (boss->health < 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_57); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); - *dList = aKaDestroyedSaucererDL; + *dList = aKaDestroyedKaSaucererDL; } break; } return 0; } -void Katina_BossDraw(Saucerer* this) { +void Katina_KaSaucerer_Draw(KaSaucerer* this) { Vec3f jointTable[30]; if (this->state != 0) { @@ -1794,7 +1794,7 @@ void Katina_SFTeam_LevelComplete_Update(void) { void Katina_LevelComplete(Player* player) { s32 i; - Saucerer* boss = &gBosses[KA_BOSS_SAUCERER]; + KaSaucerer* boss = &gBosses[KA_BOSS_SAUCERER]; Vec3f src; Vec3f dest; f32 angle; @@ -2094,7 +2094,7 @@ void Katina_LevelComplete(Player* player) { player->rockAngle = SIN_DEG(player->rockPhase); } -// Makes your teammates fly towards the camera after defeating the Saucerer. +// Makes your teammates fly towards the camera after defeating the KaSaucerer. void Katina_SFTeamFlyTowardsCamera(ActorCutscene* this) { Vec3f src; Vec3f dest; @@ -2343,15 +2343,15 @@ void Katina_UpdateEvents(ActorAllRange* this) { } void Katina_Init(void) { - Frontlinebase* base = &gBosses[KA_BOSS_BASE]; - Saucerer* saucerer = &gBosses[KA_BOSS_SAUCERER]; + KaFrontlineBase* base = &gBosses[KA_BOSS_BASE]; + KaSaucerer* saucerer = &gBosses[KA_BOSS_SAUCERER]; Boss_Initialize(saucerer); saucerer->obj.status = OBJ_INIT; saucerer->obj.pos.x = -15000.0f; saucerer->obj.pos.y = 3240.0f; saucerer->obj.pos.z = 15000.0f; - saucerer->obj.id = OBJ_BOSS_KA; + saucerer->obj.id = OBJ_BOSS_KA_SAUCERER; Object_SetInfo(&saucerer->info, saucerer->obj.id); Boss_Initialize(base); @@ -2359,7 +2359,7 @@ void Katina_Init(void) { base->obj.pos.x = 0.0f; base->obj.pos.y = 0.0f; base->obj.pos.z = 0.0f; - base->obj.id = OBJ_BOSS_KA_BASE; + base->obj.id = OBJ_BOSS_KA_FLBASE; Object_SetInfo(&base->info, base->obj.id); } diff --git a/src/overlays/ovl_i4/fox_sz.c b/src/overlays/ovl_i4/fox_sz.c index 5eb40225..12750276 100644 --- a/src/overlays/ovl_i4/fox_sz.c +++ b/src/overlays/ovl_i4/fox_sz.c @@ -48,12 +48,12 @@ void SectorZ_MissileExplode(ActorAllRange* this, bool shotDown) { Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_MS_EXPLOSION_S); for (i = 0; i < 20; i++) { - func_effect_800794CC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); + Effect_Effect357_Spawn50(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); func_effect_80079618(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); } - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 20.0f, 30); - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 20.0f, 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 20.0f, 30); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 20.0f, 5); if (shotDown) { sMissileDestroyCount++; @@ -77,30 +77,30 @@ void SectorZ_MissileExplode(ActorAllRange* this, bool shotDown) { } } -void SectorZ_FireSmokeEffectSetup(EffectFireSmoke* effect, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, +void SectorZ_FireSmokeEffectSetup(EffectFireSmoke* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale) { - Effect_Initialize(effect); - effect->obj.status = OBJ_INIT; - effect->obj.id = OBJ_EFFECT_FIRE_SMOKE; + Effect_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_EFFECT_FIRE_SMOKE_1; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; - effect->vel.x = xVel; - effect->vel.y = yVel; - effect->vel.z = zVel; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; - effect->scale2 = scale; - effect->scale1 = 0.5f; + this->scale2 = scale; + this->scale1 = 0.5f; - effect->unk_4C = 2; - effect->obj.rot.z = RAND_FLOAT(360.0f); + this->unk_4C = 2; + this->obj.rot.z = RAND_FLOAT(360.0f); - Object_SetInfo(&effect->info, effect->obj.id); + Object_SetInfo(&this->info, this->obj.id); - effect->unk_44 = 255; - effect->unk_46 = 2; + this->unk_44 = 255; + this->unk_46 = 2; } void SectorZ_FireSmokeEffectSpawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale) { @@ -551,7 +551,7 @@ void SectorZ_UpdateEvents(ActorAllRange* this) { gCsFrameCount++; if (gCsFrameCount == 3) { - func_effect_80078E50(katt->obj.pos.x, katt->obj.pos.y, katt->obj.pos.z, 30.0f); + Effect_Effect393_Spawn(katt->obj.pos.x, katt->obj.pos.y, katt->obj.pos.z, 30.0f); } player->cam.eye.x += katt->vel.x * 0.23f; player->cam.eye.y += katt->vel.y * 0.23f; @@ -1146,7 +1146,7 @@ void SectorZ_LevelComplete(Player* player) { PRINTF("Enm->time0 %d\n"); PRINTF("time0 %d\n"); - PRINTF("Demo_Time=%d\n"); + PRINTF("Demo_Time=%d\n", gGameFrameCount); direction = 1.0f; if (!gGreatFoxIntact) { @@ -1691,8 +1691,8 @@ void SectorZ_LevelCompleteCsUpdate(ActorCutscene* this) { src.y = 70.0f; src.z = -70.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); - func_effect_80078E50(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, - 3.1f); + Effect_Effect393_Spawn(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, + 3.1f); } } } @@ -1715,7 +1715,7 @@ void SectorZ_LevelCompleteCsUpdate(ActorCutscene* this) { this->obj.rot.z = -this->rot_0F4.z; } -void SectorZ_SpaceJunkUpdate(ActorSpaceJunk* this) { +void SectorZ_SpaceJunkUpdate(SzSpaceJunk* this) { s32 i; this->obj.rot.x += this->rot_0F4.x; @@ -1728,7 +1728,7 @@ void SectorZ_SpaceJunkUpdate(ActorSpaceJunk* this) { AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); if (this->health <= 0) { - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 5.0f, 10); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 5.0f, 10); Actor_Despawn(this); BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 2); @@ -1736,7 +1736,7 @@ void SectorZ_SpaceJunkUpdate(ActorSpaceJunk* this) { D_ctx_80177850 = 15; for (i = 0; i < 6; i++) { - func_effect_800794CC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); + Effect_Effect357_Spawn50(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); } Object_Kill(&this->obj, this->sfxSource); @@ -1745,7 +1745,7 @@ void SectorZ_SpaceJunkUpdate(ActorSpaceJunk* this) { } } -void SectorZ_SpaceJunkDraw(ActorSpaceJunk* this) { +void SectorZ_SpaceJunkDraw(SzSpaceJunk* this) { gSPDisplayList(gMasterDisp++, aSzSpaceJunk2DL); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); RCP_SetupDL(&gMasterDisp, SETUPDL_57); @@ -1758,7 +1758,7 @@ Vec3f sFireSmokeOffsetPos[] = { { 612.0f, 409.0f, 386.0f }, { 1027.0f, 141.0f, 3 { 600.0f, 385.0f, 380.0f }, { 776.0f, 245.0f, 384.0f }, { 376.0f, 123.0f, 384.0f }, { 428.0f, 174.0f, 383.0f }, { 722.0f, 306.0f, 383.0f }, { 530.0f, 380.0f, 385.0f } }; -void SectorZ_GreatFoxUpdate(GreatFoxSZ* this) { +void SectorZ_SzGreatFox_Update(GreatFoxSZ* this) { s32 i; s32 j; f32 x; @@ -1786,10 +1786,10 @@ void SectorZ_GreatFoxUpdate(GreatFoxSZ* this) { // Effects for broken pieces for (i = 0; i < 25; i++) { - func_effect_800794CC(x + RAND_FLOAT_CENTERED(300.0f), y + RAND_FLOAT_CENTERED(100.0f), z, 2.0f); + Effect_Effect357_Spawn50(x + RAND_FLOAT_CENTERED(300.0f), y + RAND_FLOAT_CENTERED(100.0f), z, 2.0f); func_effect_80079618(x + RAND_FLOAT_CENTERED(300.0f), y + RAND_FLOAT_CENTERED(100.0f), z, 2.0f); } - func_effect_8007BFFC(x, y, z, 0.0f, 0.0f, 0.0f, 20.0f, 30); + Effect386_Spawn1(x, y, z, 0.0f, 0.0f, 0.0f, 20.0f, 30); } if (this->timer_052 != 0) { @@ -1824,8 +1824,8 @@ void SectorZ_GreatFoxUpdate(GreatFoxSZ* this) { Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); Matrix_MultVec3fNoTranslate(gCalcMatrix, &sFireSmokeOffsetPos[RAND_INT(11.99f)], &dest); - func_effect_8007C484(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, this->vel.x, - this->vel.y, this->vel.z, RAND_FLOAT(0.1f) + 0.15f, 0); + Effect_Effect389_Spawn(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, + this->vel.x, this->vel.y, this->vel.z, RAND_FLOAT(0.1f) + 0.15f, 0); if (((gGameFrameCount % 7) == 0) && (Rand_ZeroOne() < 0.5f)) { SectorZ_FireSmokeEffectSpawn(this->obj.pos.x + dest.x, this->obj.pos.y + dest.y, this->obj.pos.z + dest.z, @@ -1834,7 +1834,7 @@ void SectorZ_GreatFoxUpdate(GreatFoxSZ* this) { } } -void SectorZ_GreatFoxDraw(GreatFoxSZ* this) { +void SectorZ_SzGreatFox_Draw(GreatFoxSZ* this) { gSPFogPosition(gMasterDisp++, gFogNear, 1005); Cutscene_DrawGreatFox(); } diff --git a/src/overlays/ovl_i5/fox_ground.c b/src/overlays/ovl_i5/fox_ground.c index 5d3665dc..411c553d 100644 --- a/src/overlays/ovl_i5/fox_ground.c +++ b/src/overlays/ovl_i5/fox_ground.c @@ -261,19 +261,21 @@ void Ground_801B4AA8(s32* arg0, s32* arg1) { } } -void Ground_801B5110(f32 arg0, f32 arg1, f32 arg2) { +void Ground_801B5110(f32 x, f32 y, f32 z) { UnkStruct_801C62E8* ptr; s32 i; s32 k; + z = 200.0f; + D_i5_801C5C04 = 0; D_i5_801C5C08 = 0; D_i5_801C5C0C = 0; D_i5_801C5C10 = 0.0f; D_i5_801BE740 = D_i5_801BE744 = 1.0f; - D_i5_801C62D8.x = arg0; - D_i5_801C62D8.y = arg1; - D_i5_801C62D8.z = 200.0f; // Probably used to be arg2 + D_i5_801C62D8.x = x; + D_i5_801C62D8.y = y; + D_i5_801C62D8.z = z; D_i5_801C5C14 = 1; for (i = 0, ptr = D_i5_801C62E8; i < ARRAY_COUNT(D_i5_801C62E8); i++, ptr++) { @@ -556,8 +558,8 @@ void Ground_801B5FE0(s32 arg0, s32 arg1, s32 arg2) { } void Ground_801B68A8(Gfx** dlist, s32 arg1, s32 arg2) { - s32 var_a0; - s32 var_a1; + s32 i; + s32 j; s32 var; gDPSetupTile((*dlist)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, 0, G_TX_MIRROR | G_TX_WRAP, @@ -568,10 +570,10 @@ void Ground_801B68A8(Gfx** dlist, s32 arg1, s32 arg2) { gSPMatrix((*dlist)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); var = 1; - var_a0 = (arg1 + 25) % 27; - for (var_a1 = 26; var_a1 >= var; var_a1--) { - gSPDisplayList((*dlist)++, &D_i5_801C2528[var_a0]); - var_a0 = (var_a0 + 26) % 27; + j = (arg1 + 25) % 27; + for (i = 26; i >= var; i--) { + gSPDisplayList((*dlist)++, &D_i5_801C2528[j]); + j = (j + 26) % 27; } } @@ -760,6 +762,7 @@ s32 Ground_801B6E20(f32 arg0, f32 arg1, f32* arg2, f32* arg3, f32* arg4) { return 1; } +// Unused void Ground_801B7240(f32 arg0, f32 arg1, f32* arg2, f32* arg3, f32* arg4) { s32 pad; f32 sp28; diff --git a/src/overlays/ovl_i5/fox_ma.c b/src/overlays/ovl_i5/fox_ma.c index 0312825d..01ecd3a3 100644 --- a/src/overlays/ovl_i5/fox_ma.c +++ b/src/overlays/ovl_i5/fox_ma.c @@ -27,20 +27,20 @@ typedef struct { /* 0x10 */ s16 unk_10; } UnkStruct_D_i5_801BA1EC; // size = 0x14 -void Macbeth_801AD624(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, s16, f32); +void Macbeth_Effect357_Spawn1(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, s16, f32); bool Macbeth_801A0308(Actor*, f32, f32, u8); -void Macbeth_801AF200(f32, f32, f32, f32, f32, f32); +void Macbeth_MaShockBox_Spawn(f32, f32, f32, f32, f32, f32); void Macbeth_801A015C(Actor*); void Macbeth_8019D048(Actor*); void Macbeth_8019FC54(Actor*, s32*, s32*, s32, s32, f32, f32, s32*); -void Macbeth_8019D670(f32, f32, f32, f32, f32, f32, f32, s32, u8); +void Macbeth_MaBoulder_Spawn(f32, f32, f32, f32, f32, f32, f32, s32, u8); void Macbeth_8019D910(Actor*, s32*, s32*, s32, f32, f32, s32*, s32*); -bool Macbeth_801AC5AC(s32, Gfx**, Vec3f*, Vec3f*, void*); -void Macbeth_801A49B8(Actor*); -void Macbeth_801ADCEC(f32, f32, f32, f32, f32, f32); -void Macbeth_801AE610(f32, f32, f32, f32, f32, f32, s16); -void Macbeth_801AE800(f32, f32, f32, f32, f32, f32); -void Macbeth_801ACF6C(void); +bool Macbeth_MaTrainCar1_OverrideLimbDraw(s32, Gfx**, Vec3f*, Vec3f*, void*); +void Macbeth_MaBoulder_HandleDamage(Actor*); +void Macbeth_MaBombDrop_Spawn(f32, f32, f32, f32, f32, f32); +void Macbeth_MaSpear_Spawn(f32, f32, f32, f32, f32, f32, s16); +void Macbeth_Effect379_Spawn(f32, f32, f32, f32, f32, f32); +void Macbeth_EffectClouds_Spawn(void); f32 D_MA_801BE250[40]; s16 D_MA_801BE2F0[9]; @@ -61,130 +61,249 @@ Vec3f D_i5_801BE6E8[6]; s32 D_i5_801BE734[4]; static UnkStruct_D_i5_801B8E50 D_i5_801B8E50[156] = { - { 5174.4f, -2141.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, { 3401.4f, -1828.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, - { 1627.8999f, -1515.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, { -145.0f, -1202.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -1933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -3733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -5533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -7333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -9133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -10933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -12733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -14533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -16333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -18133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, - { -19921.6f, -889.0f, 0.0f, 350.0f, OBJ_SCENERY_95 }, { -21656.4f, -423.0f, 0.0f, 340.0f, OBJ_SCENERY_96 }, - { -23390.7f, 40.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, { -25125.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -26925.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -28713.6f, 40.0f, 0.0f, 10.0f, OBJ_SCENERY_96 }, - { -30447.3f, -424.0f, 0.0f, 20.0f, OBJ_SCENERY_95 }, { -32181.3f, -889.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, - { -33971.1f, -1045.0f, 0.0f, 0.0f, OBJ_SCENERY_100 }, { -35771.1f, -1045.0f, 90.0f, 0.0f, OBJ_SCENERY_100 }, - { -37571.1f, -1045.0f, 180.0f, 0.0f, OBJ_SCENERY_100 }, { -39371.1f, -1045.0f, 270.0f, 0.0f, OBJ_SCENERY_100 }, - { -41171.1f, -1045.0f, 360.0f, 0.0f, OBJ_SCENERY_100 }, { -42971.1f, -1045.0f, 450.0f, 0.0f, OBJ_SCENERY_95 }, - { -44760.0f, -889.0f, 450.0f, 350.0f, OBJ_SCENERY_96 }, { -46547.9f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_94 }, - { -48347.5f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_95 }, { -50136.4f, -576.0f, 450.0f, 350.0f, OBJ_SCENERY_95 }, - { -51872.1f, -111.0f, 450.0f, 340.0f, OBJ_SCENERY_96 }, { -53606.4f, 352.0f, 450.0f, 350.0f, OBJ_SCENERY_96 }, - { -55395.4f, 509.0f, 450.0f, 0.0f, OBJ_SCENERY_96 }, { -57184.2f, 353.0f, 450.0f, 10.0f, OBJ_SCENERY_94 }, - { -58957.5f, 40.0f, 450.0f, 10.0f, OBJ_SCENERY_95 }, { -60746.9f, -115.0f, 450.0f, 0.0f, OBJ_SCENERY_94 }, - { -62548.2f, -114.0f, 450.0f, 0.0f, OBJ_SCENERY_101 }, { -64349.1f, -114.0f, 360.0f, 0.0f, OBJ_SCENERY_101 }, - { -66149.3f, -115.0f, 270.0f, 0.0f, OBJ_SCENERY_101 }, { -67950.3f, -115.0f, 180.0f, 0.0f, OBJ_SCENERY_101 }, - { -69751.2f, -115.0f, 90.0f, 0.0f, OBJ_SCENERY_101 }, { -71551.2f, -115.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -73351.0f, -116.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -75139.2f, -273.0f, 0.0f, 10.0f, OBJ_SCENERY_94 }, - { -76912.4f, -587.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, { -78702.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -80502.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -82302.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -84102.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, { -85890.6f, -586.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -87679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -89479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -91279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -93079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -94879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -96680.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -98480.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -100280.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -102079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -103879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -105679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -107479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -109279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -111079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -112879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -114679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -116479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -118279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -120079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -121879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -123679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -125479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -127279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, { -129068.2f, -274.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, - { -130841.2f, 38.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, { -132630.4f, 194.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -134430.4f, 194.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -136219.4f, 37.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, - { -138009.0f, -119.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -139798.6f, -277.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, - { -141587.6f, -433.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, { -143376.3f, -276.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, - { -145149.0f, 35.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, { -146883.3f, 192.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -148683.3f, 192.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -150471.9f, 34.0f, 0.0f, 10.0f, OBJ_SCENERY_94 }, - { -152244.8f, -278.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, { -154034.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -155834.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -157634.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -159434.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -161234.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -163034.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -164834.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -166634.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -168435.2f, -435.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, - { -170223.8f, -278.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, { -171996.6f, 34.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -173785.4f, 191.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -175574.2f, 33.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, - { -177364.0f, -123.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -179164.9f, -122.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, - { -180954.4f, 32.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, { -182727.1f, 345.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -184515.8f, 501.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -186304.5f, 344.0f, 0.0f, 10.0f, OBJ_SCENERY_94 }, - { -188077.7f, 30.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, { -189866.6f, -125.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -191667.3f, -125.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, { -193455.9f, 31.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -195245.1f, 187.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, { -197033.7f, 344.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -198823.2f, 500.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -200612.3f, 343.0f, 0.0f, 10.0f, OBJ_SCENERY_94 }, - { -202385.6f, 30.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, { -204175.1f, -125.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, - { -205964.3f, -282.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, { -207754.0f, -440.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, - { -209542.5f, -283.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, { -211315.1f, 29.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -213104.5f, 185.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -214893.4f, 28.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, - { -216683.2f, -128.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, { -218471.8f, 28.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -220261.3f, 184.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -222050.1f, 27.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, - { -223839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -225639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -227439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -229239.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -231039.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -232839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -234639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -236439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -238239.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -240039.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -241839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -243639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -245439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -247239.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -249039.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -250839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -252639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -254439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -256240.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -258040.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -259840.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -261640.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -263440.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -265240.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -267040.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -268840.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -507035.0f, -319.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { 0.0f, 0.0f, 0.0f, 0.0f, 0 }, + { 5174.4f, -2141.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { 3401.4f, -1828.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { 1627.8999f, -1515.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -145.0f, -1202.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -1933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -3733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -5533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -7333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -9133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -10933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -12733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -14533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -16333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -18133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -19921.6f, -889.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -21656.4f, -423.0f, 0.0f, 340.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -23390.7f, 40.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -25125.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -26925.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -28713.6f, 40.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -30447.3f, -424.0f, 0.0f, 20.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -32181.3f, -889.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -33971.1f, -1045.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -35771.1f, -1045.0f, 90.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -37571.1f, -1045.0f, 180.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -39371.1f, -1045.0f, 270.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -41171.1f, -1045.0f, 360.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -42971.1f, -1045.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -44760.0f, -889.0f, 450.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -46547.9f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -48347.5f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -50136.4f, -576.0f, 450.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -51872.1f, -111.0f, 450.0f, 340.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -53606.4f, 352.0f, 450.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -55395.4f, 509.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -57184.2f, 353.0f, 450.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -58957.5f, 40.0f, 450.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -60746.9f, -115.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -62548.2f, -114.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -64349.1f, -114.0f, 360.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -66149.3f, -115.0f, 270.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -67950.3f, -115.0f, 180.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -69751.2f, -115.0f, 90.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -71551.2f, -115.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -73351.0f, -116.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -75139.2f, -273.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -76912.4f, -587.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -78702.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -80502.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -82302.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -84102.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -85890.6f, -586.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -87679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -89479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -91279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -93079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -94879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -96680.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -98480.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -100280.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -102079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -103879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -105679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -107479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -109279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -111079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -112879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -114679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -116479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -118279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -120079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -121879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -123679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -125479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -127279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -129068.2f, -274.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -130841.2f, 38.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -132630.4f, 194.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -134430.4f, 194.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -136219.4f, 37.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -138009.0f, -119.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -139798.6f, -277.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -141587.6f, -433.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -143376.3f, -276.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -145149.0f, 35.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -146883.3f, 192.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -148683.3f, 192.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -150471.9f, 34.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -152244.8f, -278.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -154034.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -155834.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -157634.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -159434.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -161234.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -163034.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -164834.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -166634.2f, -434.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -168435.2f, -435.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -170223.8f, -278.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -171996.6f, 34.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -173785.4f, 191.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -175574.2f, 33.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -177364.0f, -123.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -179164.9f, -122.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -180954.4f, 32.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -182727.1f, 345.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -184515.8f, 501.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -186304.5f, 344.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -188077.7f, 30.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -189866.6f, -125.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -191667.3f, -125.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -193455.9f, 31.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -195245.1f, 187.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -197033.7f, 344.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -198823.2f, 500.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -200612.3f, 343.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -202385.6f, 30.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -204175.1f, -125.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -205964.3f, -282.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -207754.0f, -440.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -209542.5f, -283.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -211315.1f, 29.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -213104.5f, 185.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -214893.4f, 28.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -216683.2f, -128.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -218471.8f, 28.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -220261.3f, 184.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -222050.1f, 27.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -223839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -225639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -227439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -229239.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -231039.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -232839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -234639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -236439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -238239.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -240039.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -241839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -243639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -245439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -247239.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -249039.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -250839.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -252639.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -254439.6f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -256240.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -258040.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -259840.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -261640.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -263440.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -265240.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -267040.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -268840.5f, -129.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -507035.0f, -319.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, }; static UnkStruct_D_i5_801B8E50 D_i5_801B9A80[86] = { - { 5174.4f, -2141.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, { 3401.4f, -1828.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, - { 1627.8999f, -1515.0f, 0.0f, 350.0f, OBJ_SCENERY_94 }, { -145.0f, -1202.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -1933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -3733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -5533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -7333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -9133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -10933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -12733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -14533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -16333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -18133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, - { -19921.6f, -889.0f, 0.0f, 350.0f, OBJ_SCENERY_95 }, { -21656.4f, -423.0f, 0.0f, 340.0f, OBJ_SCENERY_96 }, - { -23390.7f, 40.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, { -25125.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -26925.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -28713.6f, 40.0f, 0.0f, 10.0f, OBJ_SCENERY_96 }, - { -30447.3f, -424.0f, 0.0f, 20.0f, OBJ_SCENERY_95 }, { -32181.3f, -889.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, - { -33971.1f, -1045.0f, 0.0f, 0.0f, OBJ_SCENERY_100 }, { -35771.1f, -1045.0f, 90.0f, 0.0f, OBJ_SCENERY_100 }, - { -37571.1f, -1045.0f, 180.0f, 0.0f, OBJ_SCENERY_100 }, { -39371.1f, -1045.0f, 270.0f, 0.0f, OBJ_SCENERY_100 }, - { -41171.1f, -1045.0f, 360.0f, 0.0f, OBJ_SCENERY_100 }, { -42971.1f, -1045.0f, 450.0f, 0.0f, OBJ_SCENERY_95 }, - { -44760.0f, -889.0f, 450.0f, 350.0f, OBJ_SCENERY_96 }, { -46547.9f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_94 }, - { -48347.5f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_95 }, { -50136.4f, -576.0f, 450.0f, 350.0f, OBJ_SCENERY_95 }, - { -51872.1f, -111.0f, 450.0f, 340.0f, OBJ_SCENERY_96 }, { -53606.4f, 352.0f, 450.0f, 350.0f, OBJ_SCENERY_96 }, - { -55395.4f, 509.0f, 450.0f, 0.0f, OBJ_SCENERY_96 }, { -57184.2f, 353.0f, 450.0f, 10.0f, OBJ_SCENERY_94 }, - { -58957.5f, 40.0f, 450.0f, 10.0f, OBJ_SCENERY_95 }, { -60746.9f, -115.0f, 450.0f, 0.0f, OBJ_SCENERY_94 }, - { -62548.2f, -114.0f, 450.0f, 0.0f, OBJ_SCENERY_101 }, { -64349.1f, -114.0f, 360.0f, 0.0f, OBJ_SCENERY_101 }, - { -66149.3f, -115.0f, 270.0f, 0.0f, OBJ_SCENERY_101 }, { -67950.3f, -115.0f, 180.0f, 0.0f, OBJ_SCENERY_101 }, - { -69751.2f, -115.0f, 90.0f, 0.0f, OBJ_SCENERY_101 }, { -71551.2f, -115.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -73351.0f, -116.0f, 0.0f, 0.0f, OBJ_SCENERY_96 }, { -75139.2f, -273.0f, 0.0f, 10.0f, OBJ_SCENERY_94 }, - { -76912.4f, -587.0f, 0.0f, 10.0f, OBJ_SCENERY_95 }, { -78702.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -80502.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -82302.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -84102.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_95 }, { -85890.6f, -586.0f, 0.0f, 350.0f, OBJ_SCENERY_96 }, - { -87679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -89479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -91279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -93079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -94879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -96680.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -98480.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -100280.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -102079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -103879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -105679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -107479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -109279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -111079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, - { -112879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_94 }, { -114679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_104 }, - { -116453.5f, -118.0f, 0.0f, 350.0f, OBJ_SCENERY_98 }, { -118188.5f, 346.0f, 0.0f, 340.0f, OBJ_SCENERY_98 }, - { -119815.5f, 1105.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, { -121374.3f, 2005.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, - { -122933.3f, 2905.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, { -124491.9f, 3806.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, - { -126051.4f, 4707.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, { -127609.9f, 5607.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, - { -129168.9f, 6507.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, { -130728.1f, 7408.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, - { -132287.2f, 8308.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, { -133846.4f, 9208.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, - { -135405.4f, 10109.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, { -136964.0f, 11009.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, - { -138522.9f, 11909.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, { -140082.1f, 12810.0f, 0.0f, 330.0f, OBJ_SCENERY_97 }, - { -507035.0f, -489.0f, 0.0f, 0.0f, OBJ_SCENERY_97 }, { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }, + { 5174.4f, -2141.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { 3401.4f, -1828.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { 1627.8999f, -1515.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -145.0f, -1202.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -1933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -3733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -5533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -7333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -9133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -10933.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -12733.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -14533.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -16333.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -18133.0f, -1046.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -19921.6f, -889.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -21656.4f, -423.0f, 0.0f, 340.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -23390.7f, 40.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -25125.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -26925.0f, 197.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -28713.6f, 40.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -30447.3f, -424.0f, 0.0f, 20.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -32181.3f, -889.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -33971.1f, -1045.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -35771.1f, -1045.0f, 90.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -37571.1f, -1045.0f, 180.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -39371.1f, -1045.0f, 270.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -41171.1f, -1045.0f, 360.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_9 }, + { -42971.1f, -1045.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -44760.0f, -889.0f, 450.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -46547.9f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -48347.5f, -733.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -50136.4f, -576.0f, 450.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -51872.1f, -111.0f, 450.0f, 340.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -53606.4f, 352.0f, 450.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -55395.4f, 509.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -57184.2f, 353.0f, 450.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -58957.5f, 40.0f, 450.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -60746.9f, -115.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -62548.2f, -114.0f, 450.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -64349.1f, -114.0f, 360.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -66149.3f, -115.0f, 270.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -67950.3f, -115.0f, 180.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -69751.2f, -115.0f, 90.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_10 }, + { -71551.2f, -115.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -73351.0f, -116.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -75139.2f, -273.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -76912.4f, -587.0f, 0.0f, 10.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -78702.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -80502.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -82302.2f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -84102.0f, -743.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_4 }, + { -85890.6f, -586.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_5 }, + { -87679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -89479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -91279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -93079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -94879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -96680.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -98480.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -100280.0f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -102079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -103879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -105679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -107479.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -109279.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -111079.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -112879.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_3 }, + { -114679.9f, -431.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_SWITCH_TRACK }, + { -116453.5f, -118.0f, 0.0f, 350.0f, OBJ_SCENERY_MA_TRAIN_TRACK_7 }, + { -118188.5f, 346.0f, 0.0f, 340.0f, OBJ_SCENERY_MA_TRAIN_TRACK_7 }, + { -119815.5f, 1105.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -121374.3f, 2005.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -122933.3f, 2905.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -124491.9f, 3806.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -126051.4f, 4707.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -127609.9f, 5607.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -129168.9f, 6507.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -130728.1f, 7408.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -132287.2f, 8308.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -133846.4f, 9208.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -135405.4f, 10109.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -136964.0f, 11009.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -138522.9f, 11909.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -140082.1f, 12810.0f, 0.0f, 330.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, + { -507035.0f, -489.0f, 0.0f, 0.0f, OBJ_SCENERY_MA_TRAIN_TRACK_6 }, }; static UnkStruct_D_i5_801B8E50 D_i5_801BA138[8] = { @@ -196,7 +315,7 @@ static UnkStruct_D_i5_801B8E50 D_i5_801BA138[8] = { static u8 D_i5_801BA1D8 = 0; -static f32 D_i5_801BA1DC = 0.0f; +static f32 sMaTrainSpeedTarget = 0.0f; static f32 D_i5_801BA1E0 = 10000000.0f; static u8 D_i5_801BA1E4 = 0; u8 D_MA_801BA1E8 = 0; @@ -245,10 +364,10 @@ static f32 D_i5_801BA638[5][10] = { static f32 D_i5_801BA700[] = { 610.0f, 0.0f }; // unused? -void Macbeth_80199920(void) { +void Macbeth_InitLevel(void) { s16 i; - D_i5_801BA1DC = -15.0f; + sMaTrainSpeedTarget = -15.0f; D_MA_801BE2F0[0] = 0; D_MA_801BE2F0[1] = 999; D_MA_801BE2F0[2] = 0; @@ -265,6 +384,7 @@ void Macbeth_80199920(void) { D_i5_801BE312 = 0; D_i5_801BE313 = 1; D_i5_801BA1D8 = 0; + Graphics_ClearPrintBuffer(D_i5_801BE308, 0, 8); for (i = 0; i < 35; i++) { @@ -276,232 +396,245 @@ void Macbeth_80199920(void) { } } -void Macbeth_80199A40(u8* arg0, u8* arg1, f32 arg2) { - s32 pad; +/* 32 x 32 pixels texture rotation */ +void Macbeth_Texture_RotateZ(u8* destTex, u8* srcTex, f32 angle) { s32 i; s32 j; - f32 var_fs0; - f32 var_fs4; - s32 temp_ft2; - s32 temp_ft5; - Vec3f sp80; - Vec3f sp74; + s32 xDest; + s32 yDest; + Vec3f var_fs0; + Vec3f dest; + Vec3f src; Matrix_Push(&gCalcMatrix); - arg0 = SEGMENTED_TO_VIRTUAL(arg0); - arg1 = SEGMENTED_TO_VIRTUAL(arg1); - Matrix_RotateZ(gCalcMatrix, M_DTOR * arg2, MTXF_NEW); - sp74.z = 0.0f; - for (i = 0, var_fs4 = 0.0f; i < 32; i++, var_fs4++) { - for (j = 0, var_fs0 = 0.0f; j < 32; j++, var_fs0++) { - sp74.y = var_fs4 - 16.0f; - sp74.x = var_fs0 - 16.0f; - Matrix_MultVec3f(gCalcMatrix, &sp74, &sp80); - temp_ft5 = (s32) (sp80.x + 16.0f); - temp_ft2 = (s32) (sp80.y + 16.0f); - if ((temp_ft5 >= 0) && (temp_ft5 < 32) && (temp_ft2 >= 0) && (temp_ft2 < 32)) { - arg0[temp_ft5 + (temp_ft2 << 5)] = arg1[(i << 5) + j]; + + destTex = SEGMENTED_TO_VIRTUAL(destTex); + srcTex = SEGMENTED_TO_VIRTUAL(srcTex); + + Matrix_RotateZ(gCalcMatrix, M_DTOR * angle, MTXF_NEW); + + src.z = 0.0f; + + for (i = 0, var_fs0.y = 0.0f; i < 32; i++, var_fs0.y++) { + for (j = 0, var_fs0.x = 0.0f; j < 32; j++, var_fs0.x++) { + src.y = var_fs0.y - 16.0f; + src.x = var_fs0.x - 16.0f; + + Matrix_MultVec3f(gCalcMatrix, &src, &dest); + + xDest = (s32) (dest.x + 16.0f); + yDest = (s32) (dest.y + 16.0f); + + if ((xDest >= 0) && (xDest < 32) && (yDest >= 0) && (yDest < 32)) { + destTex[xDest + (yDest << 5)] = srcTex[(i << 5) + j]; } } } Matrix_Pop(&gCalcMatrix); } -void Macbeth_80199C20(u8* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { - u8* temp_v1; +void Macbeth_Texture_Scroll(u8* tex, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + u8* texPtr = SEGMENTED_TO_VIRTUAL(tex); s32 i; s32 j; u8 a; u8 b; - temp_v1 = SEGMENTED_TO_VIRTUAL(arg0); - for (i = arg3; i < arg3 + arg4; i++) { - b = temp_v1[i]; - a = temp_v1[i + arg1]; + b = texPtr[i]; + a = texPtr[i + arg1]; + for (j = 1; j < arg2; j += 2) { - temp_v1[arg1 * (j - 1) + i] = temp_v1[arg1 * (j + 1) + i]; - temp_v1[arg1 * j + i] = temp_v1[arg1 * (j + 2) + i]; + texPtr[arg1 * (j - 1) + i] = texPtr[arg1 * (j + 1) + i]; + texPtr[arg1 * j + i] = texPtr[arg1 * (j + 2) + i]; } - temp_v1[((arg2 - 2) * arg1) + i] = b; - temp_v1[((arg2 - 1) * arg1) + i] = a; + texPtr[((arg2 - 2) * arg1) + i] = b; + texPtr[((arg2 - 1) * arg1) + i] = a; } } -void Macbeth_80199D88(u16* arg0, s32 arg1, s32 arg2) { - u16* temp_t1; +void Macbeth_Texture_Scroll2(u16* tex, s32 arg1, s32 arg2) { + u16* texPtr = SEGMENTED_TO_VIRTUAL(tex); u16 a; s32 i; s32 j; - temp_t1 = SEGMENTED_TO_VIRTUAL(arg0); - for (i = 0; i < arg1; i++) { - a = temp_t1[(arg2 - 1) * arg1 + i]; + a = texPtr[(arg2 - 1) * arg1 + i]; for (j = arg2; j > 0; j--) { - temp_t1[j * arg1 + i] = temp_t1[(j - 1) * arg1 + i]; + texPtr[j * arg1 + i] = texPtr[(j - 1) * arg1 + i]; } - temp_t1[i] = a; + texPtr[i] = a; } } -void Macbeth_80199F8C(Actor* actor) { - actor->state = 0; - actor->iwork[1] = 0; - actor->iwork[2] = 0; - actor->iwork[3] = 0; - actor->iwork[4] = 0; - actor->iwork[5] = D_i5_801BA1E4; - actor->iwork[7] = 0; - actor->iwork[8] = 0; - actor->iwork[9] = 0; - actor->iwork[10] = 0; - switch (actor->obj.id) { - case OBJ_ACTOR_205: - actor->health = 50; - D_i5_801BE314 = actor->index; +void Macbeth_Train_Init(Actor* this) { + this->state = 0; + this->iwork[1] = 0; + this->iwork[2] = 0; + this->iwork[3] = 0; + this->iwork[4] = 0; + this->iwork[5] = D_i5_801BA1E4; + this->iwork[7] = 0; + this->iwork[8] = 0; + this->iwork[9] = 0; + this->iwork[10] = 0; + + switch (this->obj.id) { + case OBJ_ACTOR_MA_LOCOMOTIVE: + this->health = 50; + D_i5_801BE314 = this->index; break; case OBJ_ACTOR_207: - actor->health = 250; - D_i5_801BE316 = actor->index; + this->health = 250; + D_i5_801BE316 = this->index; break; - case OBJ_ACTOR_208: - actor->health = 20; + case OBJ_ACTOR_MA_TRAIN_CAR_2: + this->health = 20; /* fallthrough */ - case OBJ_ACTOR_209: - actor->health = 20; + case OBJ_ACTOR_MA_TRAIN_CAR_3: + this->health = 20; break; - case OBJ_ACTOR_211: - actor->health = 20; + case OBJ_ACTOR_MA_TRAIN_CAR_5: + this->health = 20; break; - case OBJ_ACTOR_212: - actor->health = 200; + case OBJ_ACTOR_MA_TRAIN_CAR_6: + this->health = 200; break; - case OBJ_ACTOR_213: - actor->health = 80; + case OBJ_ACTOR_MA_TRAIN_CAR_7: + this->health = 80; break; - case OBJ_ACTOR_210: - actor->health = 160; + case OBJ_ACTOR_MA_TRAIN_CAR_4: + this->health = 160; default: break; } - actor->iwork[12] = 20; - actor->iwork[13] = 0; - actor->iwork[14] = 0; - actor->iwork[16] = 20; - actor->iwork[17] = 0; - actor->iwork[18] = 0; - actor->iwork[20] = 20; - actor->iwork[21] = 0; - actor->iwork[22] = 0; - actor->iwork[23] = 0; - actor->iwork[24] = 0; - actor->iwork[11] = actor->health; - actor->iwork[15] = actor->health; - actor->iwork[19] = actor->health; - actor->fwork[1] = 0.0f; - actor->fwork[5] = 0.0f; - actor->fwork[6] = 0.0f; - actor->fwork[7] = 0.0f; - actor->fwork[8] = 0.0f; - actor->fwork[9] = 0.0f; - actor->fwork[10] = 0.0f; - actor->fwork[11] = 0.0f; - actor->fwork[12] = 0.0f; - actor->fwork[13] = 0.0f; - actor->fwork[14] = 0.0f; - actor->fwork[15] = 0.0f; - actor->fwork[16] = 0.0f; - actor->fwork[17] = 0.0f; - actor->fwork[18] = 0.0f; - actor->fwork[19] = 0.0f; - actor->fwork[20] = 0.0f; - actor->fwork[21] = 0.0f; - actor->fwork[22] = 0.0f; - actor->fwork[23] = 0.0f; - actor->fwork[24] = 0.0f; - actor->fwork[25] = 0.0f; - actor->fwork[26] = 0.0f; - actor->fwork[27] = 0.0f; - actor->fwork[28] = 0.0f; - actor->fwork[29] = 0.0f; + this->iwork[12] = 20; + this->iwork[13] = 0; + this->iwork[14] = 0; + this->iwork[16] = 20; + this->iwork[17] = 0; + this->iwork[18] = 0; + this->iwork[20] = 20; + this->iwork[21] = 0; + this->iwork[22] = 0; + this->iwork[23] = 0; + this->iwork[24] = 0; + this->iwork[11] = this->health; + this->iwork[15] = this->health; + this->iwork[19] = this->health; + this->fwork[1] = 0.0f; + this->fwork[5] = 0.0f; + this->fwork[6] = 0.0f; + this->fwork[7] = 0.0f; + this->fwork[8] = 0.0f; + this->fwork[9] = 0.0f; + this->fwork[10] = 0.0f; + this->fwork[11] = 0.0f; + this->fwork[12] = 0.0f; + this->fwork[13] = 0.0f; + this->fwork[14] = 0.0f; + this->fwork[15] = 0.0f; + this->fwork[16] = 0.0f; + this->fwork[17] = 0.0f; + this->fwork[18] = 0.0f; + this->fwork[19] = 0.0f; + this->fwork[20] = 0.0f; + this->fwork[21] = 0.0f; + this->fwork[22] = 0.0f; + this->fwork[23] = 0.0f; + this->fwork[24] = 0.0f; + this->fwork[25] = 0.0f; + this->fwork[26] = 0.0f; + this->fwork[27] = 0.0f; + this->fwork[28] = 0.0f; + this->fwork[29] = 0.0f; D_i5_801BA1E4++; } -void Macbeth_8019A128(void) { - Macbeth_80199C20(D_MA_6023228, 16, 16, 0, 8); - Macbeth_80199A40(D_MA_6023388, D_Tex_800DB4B8, gGameFrameCount * -20.0f); +void Macbeth_RotateTrainWheels(void) { + Macbeth_Texture_Scroll(D_MA_6023228, 16, 16, 0, 8); + Macbeth_Texture_RotateZ(D_MA_6023388, D_Tex_800DB4B8, gGameFrameCount * -20.0f); } -void Macbeth_8019A198(Actor* actor) { - if ((actor->iwork[5] >= D_i5_801BA1E4) || (actor->iwork[5] >= D_MA_801BE2F0[3])) { - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); +void Macbeth_8019A198(Actor* this) { + if ((this->iwork[5] >= D_i5_801BA1E4) || (this->iwork[5] >= D_MA_801BE2F0[3])) { + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); } else { - actor->vel.z = D_i5_801BA1DC; - if ((actor->iwork[5] == D_MA_801BE2F0[3] - 1) || (actor->iwork[5] == D_i5_801BA1E4 - 1)) { - if (D_i5_801BE310 != actor->iwork[5]) { - if (actor->vel.z > -6.0f) { + this->vel.z = sMaTrainSpeedTarget; + if ((this->iwork[5] == D_MA_801BE2F0[3] - 1) || (this->iwork[5] == D_i5_801BA1E4 - 1)) { + if (D_i5_801BE310 != this->iwork[5]) { + if (this->vel.z > -6.0f) { Audio_SetSfxSpeedModulation(-6.0f); } else { - Audio_SetSfxSpeedModulation(actor->vel.z); + Audio_SetSfxSpeedModulation(this->vel.z); } - Audio_PlaySfxModulated(actor->sfxSource, NA_SE_EN_FREIGHT_TRAIN); - D_i5_801BE310 = actor->iwork[5]; + Audio_PlaySfxModulated(this->sfxSource, NA_SE_EN_FREIGHT_TRAIN); + D_i5_801BE310 = this->iwork[5]; } - D_i5_801BA1E0 = actor->obj.pos.z; + + D_i5_801BA1E0 = this->obj.pos.z; + if (D_i5_801BE313 != 0) { - if (actor->vel.z > -6.0f) { + if (this->vel.z > -6.0f) { Audio_SetSfxSpeedModulation(-6.0f); } else { - Audio_SetSfxSpeedModulation(actor->vel.z); + Audio_SetSfxSpeedModulation(this->vel.z); } } } } } -void Macbeth_8019A2F4(Actor* actor) { +void Macbeth_8019A2F4(MaLocomotive* this) { f32 var_fa1 = 0.0f; f32 var_ft4 = 0.0f; - u8 var_v0; - s32 var_a0; + u8 i; + s32 j; - for (var_v0 = D_MA_801BE2F0[0]; D_i5_801BA1EC[var_v0].unk_00 != -1.0f; var_v0++) { - if (D_i5_801BA1EC[var_v0].unk_00 < gPlayer[0].trueZpos) { - var_a0 = var_v0; - if (var_v0 == 0) { - var_a0 = 1; + for (i = D_MA_801BE2F0[0]; D_i5_801BA1EC[i].unk_00 != -1.0f; i++) { + if (D_i5_801BA1EC[i].unk_00 < gPlayer[0].trueZpos) { + j = i; + if (i == 0) { + j = 1; } - D_MA_801BE2F0[0] = var_a0; - if (D_i5_801BA1E4 != D_i5_801BA1EC[var_a0 - 1].unk_04) { - AUDIO_PLAY_SFX(NA_SE_OB_CONNECT_CUT, actor->sfxSource, 0); + + D_MA_801BE2F0[0] = j; + + if (D_i5_801BA1E4 != D_i5_801BA1EC[j - 1].unk_04) { + AUDIO_PLAY_SFX(NA_SE_OB_CONNECT_CUT, this->sfxSource, 0); } - D_i5_801BA1E4 = D_i5_801BA1EC[var_a0 - 1].unk_04; - var_fa1 = D_i5_801BA1EC[var_a0 - 1].unk_08; - var_ft4 = D_i5_801BA1EC[var_a0 - 1].unk_0C; - D_MA_801BE2F0[4] = D_i5_801BA1EC[var_a0 - 1].unk_10; - if (D_i5_801BA1EC[var_a0 - 1].unk_10 >= 300) { - D_i5_801BE320[18] = (D_i5_801BA1EC[var_a0 - 1].unk_10 - 300); - } else if (D_i5_801BA1EC[var_a0 - 1].unk_10 == 200) { + + D_i5_801BA1E4 = D_i5_801BA1EC[j - 1].unk_04; + + var_fa1 = D_i5_801BA1EC[j - 1].unk_08; + var_ft4 = D_i5_801BA1EC[j - 1].unk_0C; + + D_MA_801BE2F0[4] = D_i5_801BA1EC[j - 1].unk_10; + + if (D_i5_801BA1EC[j - 1].unk_10 >= 300) { + D_i5_801BE320[18] = (D_i5_801BA1EC[j - 1].unk_10 - 300); + } else if (D_i5_801BA1EC[j - 1].unk_10 == 200) { if (D_i5_801BE320[16] == 0) { D_i5_801BE320[16] = 1; } - } else if (D_i5_801BA1EC[var_a0 - 1].unk_10 == 201) { + } else if (D_i5_801BA1EC[j - 1].unk_10 == 201) { D_i5_801BE320[17] = 1; - } else if (D_i5_801BA1EC[var_a0 - 1].unk_10 == 202) { + } else if (D_i5_801BA1EC[j - 1].unk_10 == 202) { D_i5_801BE320[26] = 0; - } else if (D_i5_801BA1EC[var_a0 - 1].unk_10 == 203) { + } else if (D_i5_801BA1EC[j - 1].unk_10 == 203) { D_i5_801BE320[26] = 1; - } else if (D_i5_801BA1EC[var_a0 - 1].unk_10 >= 100) { - D_MA_801BA1E8 = D_i5_801BA1EC[var_a0 - 1].unk_10; + } else if (D_i5_801BA1EC[j - 1].unk_10 >= 100) { + D_MA_801BA1E8 = D_i5_801BA1EC[j - 1].unk_10; } break; } } + if (D_i5_801BE320[16] != 0) { switch (D_i5_801BE320[19]) { case 0: @@ -514,243 +647,250 @@ void Macbeth_8019A2F4(Actor* actor) { break; } } + if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) { - if (var_fa1 < (gPlayer[0].trueZpos - actor->obj.pos.z - (D_i5_801BA1E4 * 1416 - 1416))) { - Math_SmoothStepToF(&D_i5_801BA1DC, -6.0f, 0.1f, 0.2f, 0.01f); + if (var_fa1 < (gPlayer[0].trueZpos - this->obj.pos.z - (D_i5_801BA1E4 * 1416 - 1416))) { + Math_SmoothStepToF(&sMaTrainSpeedTarget, -6.0f, 0.1f, 0.2f, 0.01f); } - if ((gPlayer[0].trueZpos - actor->obj.pos.z - (D_i5_801BA1E4 * 1416 - 1416)) < var_ft4) { - Math_SmoothStepToF(&D_i5_801BA1DC, -30.0f, 0.1f, 0.2f, 0.01f); + + if ((gPlayer[0].trueZpos - this->obj.pos.z - (D_i5_801BA1E4 * 1416 - 1416)) < var_ft4) { + Math_SmoothStepToF(&sMaTrainSpeedTarget, -30.0f, 0.1f, 0.2f, 0.01f); } - if ((D_i5_801BA1E4 < 5) && (gPlayer[0].trueZpos - actor->obj.pos.z > 4000.0f)) { - Math_SmoothStepToF(&D_i5_801BA1DC, 0.0f, 0.1f, 1.0f, 0.01f); + + if ((D_i5_801BA1E4 < 5) && (gPlayer[0].trueZpos - this->obj.pos.z > 4000.0f)) { + Math_SmoothStepToF(&sMaTrainSpeedTarget, 0.0f, 0.1f, 1.0f, 0.01f); } - if (gPlayer[0].trueZpos - actor->obj.pos.z > 25000.0f) { - D_i5_801BA1DC = 0.0f; + + if (gPlayer[0].trueZpos - this->obj.pos.z > 25000.0f) { + sMaTrainSpeedTarget = 0.0f; } - if (gPlayer[0].trueZpos - actor->obj.pos.z < -8000.0f) { - D_i5_801BA1DC = -200.0f; + if (gPlayer[0].trueZpos - this->obj.pos.z < -8000.0f) { + sMaTrainSpeedTarget = -200.0f; } } } -void Macbeth_8019A728(Actor* actor) { - f32 var_fv0; - u32 var_v1; - u8 var_v0; +void Macbeth_8019A728(Actor* this) { + u8 i; + u32 j; - for (var_v0 = actor->iwork[2]; D_i5_801BA1EC[var_v0].unk_00 != -1.0f; var_v0++) { - if (D_i5_801BA1EC[var_v0].unk_00 < actor->obj.pos.z) { - var_v1 = var_v0; - if (var_v0 == 0) { - var_v1 = 1; + for (i = this->iwork[2]; D_i5_801BA1EC[i].unk_00 != -1.0f; i++) { + if (D_i5_801BA1EC[i].unk_00 < this->obj.pos.z) { + j = i; + if (i == 0) { + j = 1; } - actor->iwork[2] = var_v1; - if ((D_i5_801BA1EC[var_v1 - 1].unk_10 == actor->iwork[5]) && (actor->iwork[1] == 0)) { - if (actor->obj.id == OBJ_ACTOR_212) { - actor->timer_0BC = 30; + this->iwork[2] = j; + + if ((D_i5_801BA1EC[j - 1].unk_10 == this->iwork[5]) && (this->iwork[1] == 0)) { + if (this->obj.id == OBJ_ACTOR_MA_TRAIN_CAR_6) { + this->timer_0BC = 30; Radio_PlayMessage(gMsg_ID_17476, RCID_BOSS_MACBETH); } - actor->iwork[1] = 1; + this->iwork[1] = 1; } break; } } } -void Macbeth_8019A830(Actor* actor) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -20000.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_8019A830(Actor* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -20000.0f) { + Object_Kill(&this->obj, this->sfxSource); } } -void Macbeth_8019A87C(Actor* actor) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -2000.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_8019A87C(Actor* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -2000.0f) { + Object_Kill(&this->obj, this->sfxSource); } } -void Macbeth_8019A8C8(Actor* actor, s16 arg1) { +void Macbeth_8019A8C8(Actor* this, s16 arg1) { s32 i; - func_effect_8007BFFC(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 290.0f, actor->obj.pos.z, 0.0f, 0.0f, - 0.0f, 22.0f, 5); + Effect386_Spawn1(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 290.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, + 22.0f, 5); for (i = 0; i < 10; i++) { - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[21], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), arg1, RAND_FLOAT(0.8f) + 0.3f); - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), actor->obj.pos.z + RAND_FLOAT(50.0f), - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), - arg1, RAND_FLOAT(0.8f) + 0.3f); - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[23], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + 420.0f + 100.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), arg1, RAND_FLOAT(0.8f) + 0.3f); + Macbeth_Effect357_Spawn1( + this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[21], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), arg1, RAND_FLOAT(0.8f) + 0.3f); + Macbeth_Effect357_Spawn1( + this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z + RAND_FLOAT(50.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), arg1, RAND_FLOAT(0.8f) + 0.3f); + Macbeth_Effect357_Spawn1(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[23], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + 420.0f + 100.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), arg1, RAND_FLOAT(0.8f) + 0.3f); } - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, this->sfxSource, 4); } -void Macbeth_8019AF34(Actor* actor) { +void Macbeth_8019AF34(Actor* this) { s32 i; - func_effect_8007BFFC(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 290.0f, actor->obj.pos.z, 0.0f, 0.0f, - 0.0f, 22.0f, 5); + Effect386_Spawn1(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 290.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, + 22.0f, 5); for (i = 0; i < 10; i++) { - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[21], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT(30.0f) + 7.0f, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 1, RAND_FLOAT(0.8f) + 0.3f); - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), actor->obj.pos.z + RAND_FLOAT(50.0f), - RAND_FLOAT_CENTERED(45.0f), RAND_FLOAT(25.0f) + 7.0f, RAND_FLOAT_CENTERED(20.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 1, - 2.0f * (RAND_FLOAT(0.8f) + 0.3f)); - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[23], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + 420.0f + 100.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(40.0f), - RAND_FLOAT(35.0f) + 7.0f, RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 1, RAND_FLOAT(0.8f) + 0.3f); + Macbeth_Effect357_Spawn1( + this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[21], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), + RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT(30.0f) + 7.0f, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 1, RAND_FLOAT(0.8f) + 0.3f); + Macbeth_Effect357_Spawn1( + this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z + RAND_FLOAT(50.0f), + RAND_FLOAT_CENTERED(45.0f), RAND_FLOAT(25.0f) + 7.0f, RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 1, 2.0f * (RAND_FLOAT(0.8f) + 0.3f)); + Macbeth_Effect357_Spawn1(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[23], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + 420.0f + 100.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(40.0f), + RAND_FLOAT(35.0f) + 7.0f, RAND_FLOAT_CENTERED(20.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), 1, RAND_FLOAT(0.8f) + 0.3f); } - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, this->sfxSource, 4); } -void Macbeth_8019B580(Actor* actor, s32* arg1) { +void Macbeth_8019B580(Actor* this, s32* arg1) { if (*arg1 > 10) { return; } if ((gGameFrameCount % 32U) == 0) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[21], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), 10.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[21], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), 10.0f); } else if ((gGameFrameCount % 32U) == 8) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + RAND_FLOAT(50.0f), 10.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + RAND_FLOAT(50.0f), 10.0f); } else if ((gGameFrameCount % 32U) == 16) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[23], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - (actor->obj.pos.z + 320.0f) + RAND_FLOAT(50.0f), 10.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[23], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + (this->obj.pos.z + 320.0f) + RAND_FLOAT(50.0f), 10.0f); } else if ((gGameFrameCount % 32U) == 24) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + RAND_FLOAT(50.0f), 10.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + RAND_FLOAT(50.0f), 10.0f); } if ((u16) (gGameFrameCount % 4U) == 0) { // fake? - func_effect_8007C120(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 350.0f, actor->obj.pos.z, - actor->vel.x, actor->vel.y, actor->vel.z, 0.2f, 10); + Effect_Effect390_Spawn(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 350.0f, this->obj.pos.z, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); } } -void Macbeth_8019B8B0(Actor* actor) { +void Macbeth_8019B8B0(Actor* this) { if ((gGameFrameCount % 4U) == 0) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[21], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), 20.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[21], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), 20.0f); } else if ((gGameFrameCount % 4U) == 1) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - RAND_FLOAT(50.0f) + actor->obj.pos.z, 20.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + RAND_FLOAT(50.0f) + this->obj.pos.z, 20.0f); } else if ((gGameFrameCount % 4U) == 2) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[23], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - RAND_FLOAT(50.0f) + (actor->obj.pos.z + 420.0f), 20.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[23], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + RAND_FLOAT(50.0f) + (this->obj.pos.z + 420.0f), 20.0f); } else if ((gGameFrameCount % 4U) == 3) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - actor->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), - RAND_FLOAT(50.0f) + actor->obj.pos.z, 20.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + this->obj.pos.y + 280.0f + RAND_FLOAT_CENTERED(100.0f), + RAND_FLOAT(50.0f) + this->obj.pos.z, 20.0f); } if ((gGameFrameCount % 4U) == 0) { - func_effect_8007C120(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 350.0f, actor->obj.pos.z, - actor->vel.x, actor->vel.y, actor->vel.z, 0.2f, 20); + Effect_Effect390_Spawn(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 350.0f, this->obj.pos.z, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 20); } } -void Macbeth_8019BBEC(Actor* actor) { - if ((actor->timer_0BC % 16U) == 0) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[21], - RAND_FLOAT_CENTERED(100.0f) + (actor->obj.pos.y + 100.0f), - RAND_FLOAT(50.0f) + (actor->obj.pos.z - 400.0f), 3.0f); - } else if ((actor->timer_0BC % 16U) == 4) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - RAND_FLOAT_CENTERED(100.0f) + (actor->obj.pos.y + 100.0f), - RAND_FLOAT(50.0f) + actor->obj.pos.z, 3.0f); - } else if ((actor->timer_0BC % 16U) == 8) { - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[23], - RAND_FLOAT_CENTERED(100.0f) + (actor->obj.pos.y + 100.0f), - RAND_FLOAT(50.0f) + (actor->obj.pos.z + 450.0f), 3.0f); - } else if ((actor->timer_0BC % 16U) == 12) { - func_effect_8007C120(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 100.0f, actor->obj.pos.z, - actor->vel.x, actor->vel.y, actor->vel.z, 0.15f, 10); +void Macbeth_8019BBEC(Actor* this) { + if ((this->timer_0BC % 16U) == 0) { + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[21], + RAND_FLOAT_CENTERED(100.0f) + (this->obj.pos.y + 100.0f), + RAND_FLOAT(50.0f) + (this->obj.pos.z - 400.0f), 3.0f); + } else if ((this->timer_0BC % 16U) == 4) { + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + RAND_FLOAT_CENTERED(100.0f) + (this->obj.pos.y + 100.0f), + RAND_FLOAT(50.0f) + this->obj.pos.z, 3.0f); + } else if ((this->timer_0BC % 16U) == 8) { + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[23], + RAND_FLOAT_CENTERED(100.0f) + (this->obj.pos.y + 100.0f), + RAND_FLOAT(50.0f) + (this->obj.pos.z + 450.0f), 3.0f); + } else if ((this->timer_0BC % 16U) == 12) { + Effect_Effect390_Spawn(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 100.0f, this->obj.pos.z, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 10); } } -void Macbeth_8019BE50(Actor* actor) { +void Macbeth_8019BE50(Actor* this) { s16 i; - func_effect_8007BFFC(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 90.0f, actor->obj.pos.z, 0.0f, 0.0f, - 0.0f, 10.0f, 5); - func_effect_8007BFFC(actor->obj.pos.x + actor->fwork[23], actor->obj.pos.y + 90.0f, - actor->obj.pos.z + 420.0f + 300.0f, 0.0f, 0.0f, 0.0f, 10.0f, 5); + Effect386_Spawn1(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 90.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, + 10.0f, 5); + Effect386_Spawn1(this->obj.pos.x + this->fwork[23], this->obj.pos.y + 90.0f, this->obj.pos.z + 420.0f + 300.0f, + 0.0f, 0.0f, 0.0f, 10.0f, 5); for (i = 0; i < 10; i++) { - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[21], - actor->obj.pos.y + 80.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 0, RAND_FLOAT(0.8f) + 0.3f); - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[25], - actor->obj.pos.y + 80.0f + RAND_FLOAT_CENTERED(100.0f), actor->obj.pos.z + RAND_FLOAT(50.0f), - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(10.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 0, - (RAND_FLOAT(0.8f) + 0.3f)); - Macbeth_801AD624(actor->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + actor->fwork[23], - actor->obj.pos.y + 80.0f + RAND_FLOAT_CENTERED(100.0f), - actor->obj.pos.z + 420.0f + 100.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 0, RAND_FLOAT(0.8f) + 0.3f); + Macbeth_Effect357_Spawn1( + this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[21], + this->obj.pos.y + 80.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z - 420.0f + RAND_FLOAT(50.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 0, RAND_FLOAT(0.8f) + 0.3f); + Macbeth_Effect357_Spawn1( + this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[25], + this->obj.pos.y + 80.0f + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z + RAND_FLOAT(50.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(10.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 0, (RAND_FLOAT(0.8f) + 0.3f)); + Macbeth_Effect357_Spawn1(this->obj.pos.x + RAND_FLOAT_CENTERED(200.0f) + this->fwork[23], + this->obj.pos.y + 80.0f + RAND_FLOAT_CENTERED(100.0f), + this->obj.pos.z + 420.0f + 100.0f + RAND_FLOAT(50.0f), RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), 0, RAND_FLOAT(0.8f) + 0.3f); } - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_L); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_L); gHitCount++; } -bool Macbeth_8019C4EC(Actor* actor) { - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - if (actor->dmgPart == 1) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - actor->iwork[7] = 15; +bool Macbeth_MaLocomotive_HandleDamage(MaLocomotive* this) { + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->dmgPart == 1) { + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + this->dmgType = DMG_NONE; + this->iwork[7] = 15; D_i5_801BE320[22] = 0; D_i5_801BE320[4] = 120; D_i5_801BE320[21] = 2; return true; } - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } return false; } -void Macbeth_8019C5B8(Actor* actor) { +void Macbeth_8019C5B8(Actor* this) { f32 var_ft4; - Macbeth_801A0308(actor, actor->obj.pos.z + 520.0f, actor->obj.rot.y, 0); + Macbeth_801A0308(this, this->obj.pos.z + 520.0f, this->obj.rot.y, 0); var_ft4 = RAND_FLOAT_CENTERED(12.0f); if ((var_ft4 > -2.0f) && (var_ft4 < 2.0f)) { if (var_ft4 >= 0.0f) { @@ -759,729 +899,814 @@ void Macbeth_8019C5B8(Actor* actor) { var_ft4 = -2.5f; } } - Macbeth_801AF200(actor->fwork[19], actor->obj.pos.y + 300.0f, actor->obj.pos.z + 520.0f, var_ft4, 10.0f, 0.0f); + Macbeth_MaShockBox_Spawn(this->fwork[19], this->obj.pos.y + 300.0f, this->obj.pos.z + 520.0f, var_ft4, 10.0f, 0.0f); } -void Macbeth_8019C6C4(Actor* actor) { - s32 var_a3; +void Macbeth_Boss_HitCountBonus(MaLocomotive* this) { + s32 hitBonus; if (gBossFrameCount < 3840) { - var_a3 = 10; + hitBonus = 10; } else if (gBossFrameCount < 5760) { - var_a3 = 5; + hitBonus = 5; } else if (gBossFrameCount < 7680) { - var_a3 = 2; + hitBonus = 2; + } else if (gBossFrameCount < 9600) { + hitBonus = 1; } else { - if (gBossFrameCount < 9600) { - var_a3 = 1; - } else { - var_a3 = 0; - } + hitBonus = 0; } - if (var_a3 != 0) { - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, var_a3); + + if (hitBonus != 0) { + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, hitBonus); } - gHitCount += var_a3 + 1; + + gHitCount += hitBonus + 1; D_ctx_80177850 = 15; } -void Macbeth_Actor205_Update(Actor* actor) { - if (actor->vel.z < -3.0f) { - Macbeth_8019A128(); +void Macbeth_MaLocomotive_Update(MaLocomotive* this) { + if (this->vel.z < -3.0f) { + Macbeth_RotateTrainWheels(); } - D_i5_801BE368[4] = actor->vwork[0].x + actor->obj.pos.x; - D_i5_801BE368[5] = actor->vwork[0].y + actor->obj.pos.y; - D_i5_801BE368[6] = actor->vwork[0].z + actor->obj.pos.z; - Macbeth_8019A2F4(actor); - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); - switch (actor->state) { - s32 unused; + + D_i5_801BE368[4] = this->vwork[0].x + this->obj.pos.x; + D_i5_801BE368[5] = this->vwork[0].y + this->obj.pos.y; + D_i5_801BE368[6] = this->vwork[0].z + this->obj.pos.z; + + Macbeth_8019A2F4(this); + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019A830(this); + + switch (this->state) { + s32 pad; + case 0: D_i5_801BE320[25] = 1; if ((D_i5_801BE320[9] <= 0) && (D_i5_801BE320[10] <= 0) && (D_i5_801BE320[17] != 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) { D_i5_801BE320[30] = 0; - actor->timer_0BC = 150; - actor->timer_0BE = 200; + this->timer_0BC = 150; + this->timer_0BE = 200; D_i5_801BE320[19] = 1; - actor->state++; + this->state++; } break; + case 1: - if (actor->timer_0BC == 1) { - AUDIO_PLAY_SFX(NA_SE_OB_GATE_OPEN, actor->sfxSource, 4); + if (this->timer_0BC == 1) { + AUDIO_PLAY_SFX(NA_SE_OB_GATE_OPEN, this->sfxSource, 4); } - if (actor->timer_0BC <= 0) { - Math_SmoothStepToF(&actor->fwork[2], -60.0f, 0.4f, 10.0f, 0.01f); - if (actor->timer_0BE == 30) { - Macbeth_8019C5B8(actor); + if (this->timer_0BC <= 0) { + Math_SmoothStepToF(&this->fwork[2], -60.0f, 0.4f, 10.0f, 0.01f); + if (this->timer_0BE == 30) { + Macbeth_8019C5B8(this); Radio_PlayMessage(gMsg_ID_17470, RCID_BOSS_MACBETH); } - if ((actor->fwork[2] < -58.0f) && ((Macbeth_8019C4EC(actor) != 0) || (actor->timer_0BE <= 0))) { - actor->timer_0BC = 200; + if ((this->fwork[2] < -58.0f) && + ((Macbeth_MaLocomotive_HandleDamage(this) != 0) || (this->timer_0BE <= 0))) { + this->timer_0BC = 200; D_i5_801BE320[19] = 0; - actor->state++; - AUDIO_PLAY_SFX(NA_SE_OB_GATE_CLOSE, actor->sfxSource, 4); + this->state++; + AUDIO_PLAY_SFX(NA_SE_OB_GATE_CLOSE, this->sfxSource, 4); } } break; + case 2: - Math_SmoothStepToF(&actor->fwork[2], 0.0f, 0.4f, 30.0f, 0.01f); - if ((actor->timer_0BC <= 0) && (D_i5_801BE320[25] == 1)) { - actor->timer_0BC = 60; - actor->state++; - AUDIO_PLAY_SFX(NA_SE_OB_GATE_OPEN, actor->sfxSource, 4); + Math_SmoothStepToF(&this->fwork[2], 0.0f, 0.4f, 30.0f, 0.01f); + if ((this->timer_0BC <= 0) && (D_i5_801BE320[25] == 1)) { + this->timer_0BC = 60; + this->state++; + AUDIO_PLAY_SFX(NA_SE_OB_GATE_OPEN, this->sfxSource, 4); } break; + case 3: - Math_SmoothStepToF(&actor->fwork[2], -60.0f, 0.4f, 10.0f, 0.01f); - if ((actor->fwork[2] < -58.0f) && (Macbeth_8019C4EC(actor) != 0)) { - actor->timer_0BC = 150; - actor->state--; + Math_SmoothStepToF(&this->fwork[2], -60.0f, 0.4f, 10.0f, 0.01f); + + if ((this->fwork[2] < -58.0f) && (Macbeth_MaLocomotive_HandleDamage(this) != 0)) { + this->timer_0BC = 150; + this->state--; D_i5_801BE320[30]++; if (D_i5_801BE320[30] >= 2) { D_i5_801BE320[30] = 0; D_i5_801BE320[25] = 0; } - AUDIO_PLAY_SFX(NA_SE_OB_GATE_CLOSE, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_OB_GATE_CLOSE, this->sfxSource, 4); } - if (actor->timer_0BC <= 0) { + + if (this->timer_0BC <= 0) { D_i5_801BE320[30]++; if (D_i5_801BE320[30] >= 2) { D_i5_801BE320[30] = 0; D_i5_801BE320[25] = 0; } - actor->timer_0BC = 100; - actor->state--; - AUDIO_PLAY_SFX(NA_SE_OB_GATE_CLOSE, actor->sfxSource, 4); + this->timer_0BC = 100; + this->state--; + AUDIO_PLAY_SFX(NA_SE_OB_GATE_CLOSE, this->sfxSource, 4); } - if (actor->timer_0BC == 30) { - Macbeth_8019C5B8(actor); + + if (this->timer_0BC == 30) { + Macbeth_8019C5B8(this); } break; + case 4: - Macbeth_8019AF34(actor); - actor->health = 0; - actor->timer_0BC = 200; + Macbeth_8019AF34(this); + this->health = 0; + this->timer_0BC = 200; gCameraShake = 30; - actor->state++; + this->state++; break; + case 5: - if (actor->timer_0BC == 198) { + if (this->timer_0BC == 198) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 255; - } else if (actor->timer_0BC == 197) { + } else if (this->timer_0BC == 197) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 0; } - if (((actor->timer_0BC < 150) || (actor->timer_0BC > 170)) && (actor->timer_0BC > 80)) { - Macbeth_8019B8B0(actor); + if (((this->timer_0BC < 150) || (this->timer_0BC > 170)) && (this->timer_0BC > 80)) { + Macbeth_8019B8B0(this); } - if (actor->timer_0BC == 160) { - gShowBossHealth = 0; + if (this->timer_0BC == 160) { + gShowBossHealth = false; Radio_PlayMessage(gMsg_ID_17440, RCID_BOSS_MACBETH); - func_effect_8007A568(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y, actor->obj.pos.z, 40.0f); - Macbeth_8019C6C4(actor); - actor->vel.z = 0.0f; + Effect_Effect383_Spawn(this->obj.pos.x + this->fwork[25], this->obj.pos.y, this->obj.pos.z, 40.0f); + Macbeth_Boss_HitCountBonus(this); + this->vel.z = 0.0f; gCameraShake = 25; } - if (actor->timer_0BC == 100) { - Object_Kill(&actor->obj, actor->sfxSource); + if (this->timer_0BC == 100) { + Object_Kill(&this->obj, this->sfxSource); if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) { gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE; gPlayer[0].csState = 0; gMissionStatus = MISSION_COMPLETE; } - actor->state++; + this->state++; Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, NA_SE_TANK_SLIDE); Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, NA_SE_TANK_BURNER_HALF); } break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } if (D_i5_801BE320[4] > 0) { D_i5_801BE320[4]--; } - actor->fwork[3] = 0.0f; + + this->fwork[3] = 0.0f; + if (D_i5_801BE320[21] != 0) { D_i5_801BE320[22]++; + if (D_i5_801BE320[22] >= 30) { if (D_i5_801BE320[4] == 0) { D_i5_801BE320[21] = 0; } D_i5_801BE320[22] = 0; } - if (((gGameFrameCount % 2) == 0)) { - actor->fwork[3] = 15.0f; + + if ((gGameFrameCount % 2) == 0) { + this->fwork[3] = 15.0f; } else { - actor->fwork[3] = -15.0f; + this->fwork[3] = -15.0f; } } - D_i5_801BE320[20] = actor->state; + + D_i5_801BE320[20] = this->state; + if (D_i5_801BE320[23] != 0) { D_i5_801BE320[23] = 0; - actor->state = 4; + this->state = 4; } + if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (gCsFrameCount > 630)) { - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } } -void Macbeth_Actor210_Update(Actor* actor) { - switch (actor->state) { +void Macbeth_MaTrainCar4_Update(Actor* this) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019FC54(actor, &actor->iwork[10], &actor->iwork[11], 1, 1, actor->fwork[25], 0.0f, - &actor->iwork[13]); - Macbeth_8019A728(actor); - if (actor->iwork[1] != 0) { - Macbeth_8019D048(actor); + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019FC54(this, &this->iwork[10], &this->iwork[11], 1, 1, this->fwork[25], 0.0f, &this->iwork[13]); + Macbeth_8019A728(this); + if (this->iwork[1] != 0) { + Macbeth_8019D048(this); } - Macbeth_8019A830(actor); + Macbeth_8019A830(this); break; + case 1: - if (actor->iwork[5] < D_MA_801BE2F0[3]) { - D_MA_801BE2F0[3] = actor->iwork[5]; + if (this->iwork[5] < D_MA_801BE2F0[3]) { + D_MA_801BE2F0[3] = this->iwork[5]; } - actor->state = 2; - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); + this->state = 2; + Macbeth_801A015C(this); + Macbeth_8019A830(this); break; + case 2: - Macbeth_8019BBEC(actor); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 60; + Macbeth_8019BBEC(this); + + if (this->timer_0BC == 0) { + this->timer_0BC = 60; } - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); - Macbeth_801A015C(actor); - Macbeth_8019A87C(actor); - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0BC = 20; - Macbeth_8019BE50(actor); - actor->state = 3; + + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); + Macbeth_801A015C(this); + Macbeth_8019A87C(this); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0BC = 20; + Macbeth_8019BE50(this); + this->state = 3; } break; + case 3: - Macbeth_801A015C(actor); - Math_SmoothStepToF(&actor->scale, 0.0f, 0.02f, 10.0f, 0.01f); - if (actor->timer_0BC <= 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Macbeth_801A015C(this); + Math_SmoothStepToF(&this->scale, 0.0f, 0.02f, 10.0f, 0.01f); + if (this->timer_0BC <= 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } -void Macbeth_8019D048(Actor* actor) { - switch (actor->iwork[3]) { +void Macbeth_8019D048(Actor* this) { + switch (this->iwork[3]) { case 0: if (D_i5_801BE320[28] != 0) { D_i5_801BE320[28]--; } - if (actor->fwork[25] == 0.0f) { + + if (this->fwork[25] == 0.0f) { if (D_i5_801BE320[28] <= 0) { Radio_PlayMessage(gMsg_ID_17390, RCID_BOSS_MACBETH); D_i5_801BE320[28] = 100; } - if (actor->obj.pos.x <= gPlayer[0].pos.x) { - actor->iwork[4] = 1; + + if (this->obj.pos.x <= gPlayer[0].pos.x) { + this->iwork[4] = 1; } else { - actor->iwork[4] = -1; + this->iwork[4] = -1; } - actor->iwork[3]++; + this->iwork[3]++; } break; + case 1: - Math_SmoothStepToF(&actor->fwork[4], actor->iwork[4] * -60.0f, 0.5f, 2.0f, 1.0f); - if ((actor->fwork[4] < -30.0f) || (actor->fwork[4] > 30.0f)) { - Macbeth_8019D670(actor->obj.pos.x + actor->fwork[25] + actor->iwork[4] * 73.0f, - actor->obj.pos.y + actor->fwork[8] + 330.0f, actor->obj.pos.z, actor->iwork[4] * 70.0f, - actor->vel.z, actor->iwork[4] * -34.0f, 0.0f, 2, 5); - Macbeth_8019D670(actor->obj.pos.x + actor->fwork[25] + actor->iwork[4] * 74.0f, - actor->obj.pos.y + actor->fwork[8] + 330.0f, actor->obj.pos.z - 350.0f, - actor->iwork[4] * 38.0f, actor->vel.z, actor->iwork[4] * -34.0f, 0.0f, 4, 6); - Macbeth_8019D670(actor->obj.pos.x + actor->fwork[25] + actor->iwork[4] * 74.0f, - actor->obj.pos.y + actor->fwork[8] + 330.0f, actor->obj.pos.z + 350.0f, - actor->iwork[4] * 40.0f, actor->vel.z, actor->iwork[4] * -35.0f, 0.0f, 0, 7); - Macbeth_8019D670(actor->obj.pos.x + actor->fwork[25] + actor->iwork[4] * 35.0f, - actor->obj.pos.y + actor->fwork[8] + 290.0f, actor->obj.pos.z - 175.0f, - actor->iwork[4] * 20.0f, actor->vel.z, actor->iwork[4] * -35.0f, 0.0f, 12, 4); - Macbeth_8019D670(actor->obj.pos.x + actor->fwork[25] + actor->iwork[4] * 35.0f, - actor->obj.pos.y + actor->fwork[8] + 290.0f, actor->obj.pos.z + 175.0f, - actor->iwork[4] * 35.0f, actor->vel.z, actor->iwork[4] * -35.0f, 0.0f, 14, 5); - actor->iwork[3]++; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035DD0); + Math_SmoothStepToF(&this->fwork[4], this->iwork[4] * -60.0f, 0.5f, 2.0f, 1.0f); + + if ((this->fwork[4] < -30.0f) || (this->fwork[4] > 30.0f)) { + Macbeth_MaBoulder_Spawn(this->obj.pos.x + this->fwork[25] + this->iwork[4] * 73.0f, + this->obj.pos.y + this->fwork[8] + 330.0f, this->obj.pos.z, + this->iwork[4] * 70.0f, this->vel.z, this->iwork[4] * -34.0f, 0.0f, 2, 5); + Macbeth_MaBoulder_Spawn(this->obj.pos.x + this->fwork[25] + this->iwork[4] * 74.0f, + this->obj.pos.y + this->fwork[8] + 330.0f, this->obj.pos.z - 350.0f, + this->iwork[4] * 38.0f, this->vel.z, this->iwork[4] * -34.0f, 0.0f, 4, 6); + Macbeth_MaBoulder_Spawn(this->obj.pos.x + this->fwork[25] + this->iwork[4] * 74.0f, + this->obj.pos.y + this->fwork[8] + 330.0f, this->obj.pos.z + 350.0f, + this->iwork[4] * 40.0f, this->vel.z, this->iwork[4] * -35.0f, 0.0f, 0, 7); + Macbeth_MaBoulder_Spawn(this->obj.pos.x + this->fwork[25] + this->iwork[4] * 35.0f, + this->obj.pos.y + this->fwork[8] + 290.0f, this->obj.pos.z - 175.0f, + this->iwork[4] * 20.0f, this->vel.z, this->iwork[4] * -35.0f, 0.0f, 12, 4); + Macbeth_MaBoulder_Spawn(this->obj.pos.x + this->fwork[25] + this->iwork[4] * 35.0f, + this->obj.pos.y + this->fwork[8] + 290.0f, this->obj.pos.z + 175.0f, + this->iwork[4] * 35.0f, this->vel.z, this->iwork[4] * -35.0f, 0.0f, 14, 5); + this->iwork[3]++; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035DD0); } break; + case 2: - Math_SmoothStepToF(&actor->fwork[4], actor->iwork[4] * -70.0f, 0.5f, 2.0f, 1.0f); - actor->iwork[3]++; + Math_SmoothStepToF(&this->fwork[4], this->iwork[4] * -70.0f, 0.5f, 2.0f, 1.0f); + this->iwork[3]++; break; + case 3: - Math_SmoothStepToF(&actor->fwork[4], actor->iwork[4] * -70.0f, 0.2f, 2.0f, 0.0f); - if ((actor->fwork[4] < -69.0f) || (actor->fwork[4] > 69.0f)) { - actor->timer_0BC = 20; - actor->iwork[3]++; + Math_SmoothStepToF(&this->fwork[4], this->iwork[4] * -70.0f, 0.2f, 2.0f, 0.0f); + if ((this->fwork[4] < -69.0f) || (this->fwork[4] > 69.0f)) { + this->timer_0BC = 20; + this->iwork[3]++; } break; + case 4: - if (actor->timer_0BC == 0) { - Math_SmoothStepToF(&actor->fwork[4], 0.0f, 0.02f, 2.0f, 0.0f); + if (this->timer_0BC == 0) { + Math_SmoothStepToF(&this->fwork[4], 0.0f, 0.02f, 2.0f, 0.0f); } break; + default: break; } } -void Macbeth_8019D5C8(Actor* actor, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 zVel, f32 zRot, f32 yRot, s32 arg8, - u8 arg9) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_215; - actor->obj.pos.x = xPos; - actor->obj.pos.y = yPos; - actor->obj.pos.z = zPos; - actor->obj.rot.z = zRot; - actor->obj.rot.y = yRot; - actor->timer_0BC = arg8; - actor->timer_0BE = 20; - actor->fwork[0] = arg4; - actor->vel.z = zVel; - actor->unk_046 = arg9; - Object_SetInfo(&actor->info, actor->obj.id); +void Macbeth_MaBoulder_Setup(MaBoulder* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 zVel, f32 zRot, f32 yRot, + s32 arg8, u8 arg9) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_MA_BOULDER; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->obj.rot.z = zRot; + this->obj.rot.y = yRot; + this->timer_0BC = arg8; + this->timer_0BE = 20; + this->fwork[0] = arg4; + this->vel.z = zVel; + this->unk_046 = arg9; + Object_SetInfo(&this->info, this->obj.id); } -void Macbeth_8019D670(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 zVel, f32 zRot, f32 yRot, s32 arg7, u8 arg8) { +void Macbeth_MaBoulder_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 zVel, f32 zRot, f32 yRot, s32 arg7, u8 arg8) { s32 i; for (i = 0; i < ARRAY_COUNT(gActors); i++) { if (gActors[i].obj.status == OBJ_FREE) { - Macbeth_8019D5C8(&gActors[i], xPos, yPos, zPos, arg3, zVel, zRot, yRot, arg7, arg8); + Macbeth_MaBoulder_Setup(&gActors[i], xPos, yPos, zPos, arg3, zVel, zRot, yRot, arg7, arg8); break; } } } -void Macbeth_Actor209_Update(Actor* actor) { - switch (actor->state) { +void Macbeth_MaTrainCar3_Update(MaTrainCar3* this) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019D910(actor, &actor->iwork[10], &actor->iwork[11], 1, actor->fwork[21], -420.0f, - &actor->iwork[12], &actor->iwork[13]); - Macbeth_8019D910(actor, &actor->iwork[14], &actor->iwork[15], 2, actor->fwork[25], 0.0f, &actor->iwork[16], - &actor->iwork[17]); - Macbeth_8019D910(actor, &actor->iwork[18], &actor->iwork[19], 3, actor->fwork[23], 420.0f, - &actor->iwork[20], &actor->iwork[21]); - Macbeth_8019A830(actor); + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019D910(this, &this->iwork[10], &this->iwork[11], 1, this->fwork[21], -420.0f, &this->iwork[12], + &this->iwork[13]); + Macbeth_8019D910(this, &this->iwork[14], &this->iwork[15], 2, this->fwork[25], 0.0f, &this->iwork[16], + &this->iwork[17]); + Macbeth_8019D910(this, &this->iwork[18], &this->iwork[19], 3, this->fwork[23], 420.0f, &this->iwork[20], + &this->iwork[21]); + Macbeth_8019A830(this); break; + case 1: - if (actor->iwork[5] < D_MA_801BE2F0[3]) { - D_MA_801BE2F0[3] = actor->iwork[5]; + if (this->iwork[5] < D_MA_801BE2F0[3]) { + D_MA_801BE2F0[3] = this->iwork[5]; } - actor->state = 2; - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); + this->state = 2; + Macbeth_801A015C(this); + Macbeth_8019A830(this); break; + case 2: - Macbeth_8019BBEC(actor); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 60; + Macbeth_8019BBEC(this); + if (this->timer_0BC == 0) { + this->timer_0BC = 60; } - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.02f, 10.0f, 0); - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0BC = 20; - Macbeth_8019BE50(actor); - actor->state = 3; + + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.02f, 10.0f, 0); + Macbeth_801A015C(this); + Macbeth_8019A830(this); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0BC = 20; + Macbeth_8019BE50(this); + this->state = 3; } break; + case 3: - Macbeth_801A015C(actor); - Math_SmoothStepToF(&actor->scale, 0.0f, 0.02f, 10.0f, 0.01f); - if (actor->timer_0BC <= 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Macbeth_801A015C(this); + Math_SmoothStepToF(&this->scale, 0.0f, 0.02f, 10.0f, 0.01f); + if (this->timer_0BC <= 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } -void Macbeth_8019D910(Actor* actor, s32* arg1, s32* arg2, s32 arg3, f32 arg4, f32 arg5, s32* arg6, s32* arg7) { +void Macbeth_8019D910(Actor* this, s32* arg1, s32* arg2, s32 arg3, f32 arg4, f32 arg5, s32* arg6, s32* arg7) { s32 var_v0; u8 i; switch (*arg1) { case 0: - if (((actor->dmgType != DMG_NONE) && (arg3 == actor->dmgPart)) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - func_effect_8007C120(actor->obj.pos.x + arg4, actor->obj.pos.y + 200.0f, actor->obj.pos.z + arg5, - actor->vel.x, actor->vel.y, actor->vel.z, 0.15f, 20); - actor->iwork[arg3 + 6] = 15; - *arg2 -= actor->damage; - if ((*arg2 <= 0) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { + if (((this->dmgType != DMG_NONE) && (arg3 == this->dmgPart)) || + ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + + this->dmgType = DMG_NONE; + + Effect_Effect390_Spawn(this->obj.pos.x + arg4, this->obj.pos.y + 200.0f, this->obj.pos.z + arg5, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 20); + + this->iwork[arg3 + 6] = 15; + + *arg2 -= this->damage; + if ((*arg2 <= 0) || ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { (*arg1)++; } - } else if ((actor->dmgType != DMG_NONE) && (actor->dmgPart == 0)) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + } else if ((this->dmgType != DMG_NONE) && (this->dmgPart == 0)) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } break; + case 1: - func_effect_8007BFFC(actor->obj.pos.x + arg4, actor->obj.pos.y + 250.0f, actor->obj.pos.z + arg5, 0.0f, - 0.0f, 0.0f, 10.0f, 5); + Effect386_Spawn1(this->obj.pos.x + arg4, this->obj.pos.y + 250.0f, this->obj.pos.z + arg5, 0.0f, 0.0f, 0.0f, + 10.0f, 5); for (i = 0; i < 10; i++) { - Macbeth_801AD624( - actor->obj.pos.x + arg4, actor->obj.pos.y + 200.0f, actor->obj.pos.z + arg5 + RAND_FLOAT(80.0f), + Macbeth_Effect357_Spawn1( + this->obj.pos.x + arg4, this->obj.pos.y + 200.0f, this->obj.pos.z + arg5 + RAND_FLOAT(80.0f), RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 3, (RAND_FLOAT(0.8f) + 0.3f) * 2.0f); } - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); *arg7 = 1; *arg2 = 20; (*arg1)++; break; + case 2: - if (((actor->dmgType != DMG_NONE) && (arg3 == actor->dmgPart)) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5])) || - ((actor->obj.id == OBJ_ACTOR_209) && (arg3 == 2))) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - func_effect_8007C120(actor->obj.pos.x + arg4, actor->obj.pos.y + 200.0f, actor->obj.pos.z + arg5, - actor->vel.x, actor->vel.y, actor->vel.z, 0.15f, 20); - actor->iwork[arg3 + 6] = 20; - *arg2 -= actor->damage; + if (((this->dmgType != DMG_NONE) && (arg3 == this->dmgPart)) || + ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5])) || + ((this->obj.id == OBJ_ACTOR_MA_TRAIN_CAR_3) && (arg3 == 2))) { + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + this->dmgType = DMG_NONE; + Effect_Effect390_Spawn(this->obj.pos.x + arg4, this->obj.pos.y + 200.0f, this->obj.pos.z + arg5, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 20); + this->iwork[arg3 + 6] = 20; + *arg2 -= this->damage; if ((*arg2 <= 0) || - ((D_MA_801BE2F0[1] - 1 == (actor->iwork[5])) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5])) || - ((actor->obj.id == OBJ_ACTOR_209) && (arg3 == 2))) { + ((D_MA_801BE2F0[1] - 1 == (this->iwork[5])) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5])) || + ((this->obj.id == OBJ_ACTOR_MA_TRAIN_CAR_3) && (arg3 == 2))) { gHitCount++; (*arg1)++; } - } else if ((actor->dmgType != DMG_NONE) && (actor->dmgPart == 0)) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + } else if ((this->dmgType != DMG_NONE) && (this->dmgPart == 0)) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } break; + case 3: - func_effect_8007BFFC(actor->obj.pos.x + arg4, actor->obj.pos.y + 250.0f, actor->obj.pos.z + arg5, 0.0f, - 0.0f, 0.0f, 10.0f, 5); - if ((actor->obj.id != OBJ_ACTOR_209) || (arg3 != 2)) { + Effect386_Spawn1(this->obj.pos.x + arg4, this->obj.pos.y + 250.0f, this->obj.pos.z + arg5, 0.0f, 0.0f, 0.0f, + 10.0f, 5); + if ((this->obj.id != OBJ_ACTOR_MA_TRAIN_CAR_3) || (arg3 != 2)) { for (i = 0; i < 15; i++) { - Macbeth_801AD624(actor->obj.pos.x + arg4, actor->obj.pos.y + 200.0f, - actor->obj.pos.z + arg5 + RAND_FLOAT(20.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - (s32) (RAND_FLOAT(50.0f) + 70.0f), 2, (RAND_FLOAT(0.8f) + 0.3f) * 1.5f); + Macbeth_Effect357_Spawn1(this->obj.pos.x + arg4, this->obj.pos.y + 200.0f, + this->obj.pos.z + arg5 + RAND_FLOAT(20.0f), RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), 2, (RAND_FLOAT(0.8f) + 0.3f) * 1.5f); } } - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 4); + + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); + *arg7 = 2; + var_v0 = arg3; if (var_v0 == 3) { var_v0 = 4; } + this->iwork[22] |= var_v0; - actor->iwork[22] |= (var_v0); - switch (actor->iwork[22]) { + switch (this->iwork[22]) { case 1: - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035E68); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035E68); break; case 2: - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035ECC); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035ECC); break; case 3: - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035F30); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035F30); break; case 4: - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035F94); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035F94); break; case 5: - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035FF8); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035FF8); break; case 6: - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603605C); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603605C); break; case 7: - actor->state = 1; - actor->timer_0BC = 60; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); + this->state = 1; + this->timer_0BC = 60; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); break; } (*arg1)++; break; + case 4: break; + default: break; } } -void Macbeth_Actor211_Update(Actor* actor) { - switch (actor->state) { +void Macbeth_MaTrainCar5_Update(MaTrainCar5* this) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019D910(actor, &actor->iwork[10], &actor->iwork[11], 1, actor->fwork[21], -420.0f, - &actor->iwork[12], &actor->iwork[13]); - Macbeth_8019D910(actor, &actor->iwork[14], &actor->iwork[15], 2, actor->fwork[25], 0.0f, &actor->iwork[16], - &actor->iwork[17]); - Macbeth_8019D910(actor, &actor->iwork[18], &actor->iwork[19], 3, actor->fwork[23], 420.0f, - &actor->iwork[20], &actor->iwork[21]); - Macbeth_8019A830(actor); + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019D910(this, &this->iwork[10], &this->iwork[11], 1, this->fwork[21], -420.0f, &this->iwork[12], + &this->iwork[13]); + Macbeth_8019D910(this, &this->iwork[14], &this->iwork[15], 2, this->fwork[25], 0.0f, &this->iwork[16], + &this->iwork[17]); + Macbeth_8019D910(this, &this->iwork[18], &this->iwork[19], 3, this->fwork[23], 420.0f, &this->iwork[20], + &this->iwork[21]); + Macbeth_8019A830(this); break; + case 1: - if (actor->iwork[5] < D_MA_801BE2F0[3]) { - D_MA_801BE2F0[3] = actor->iwork[5]; + if (this->iwork[5] < D_MA_801BE2F0[3]) { + D_MA_801BE2F0[3] = this->iwork[5]; } - actor->state = 2; - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); + this->state = 2; + Macbeth_801A015C(this); + Macbeth_8019A830(this); break; + case 2: - Macbeth_8019BBEC(actor); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 60; + Macbeth_8019BBEC(this); + if (this->timer_0BC == 0) { + this->timer_0BC = 60; } - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); - Macbeth_801A015C(actor); - Macbeth_8019A87C(actor); - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0BC = 20; - Macbeth_8019BE50(actor); - actor->state = 3; + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); + Macbeth_801A015C(this); + Macbeth_8019A87C(this); + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0BC = 20; + Macbeth_8019BE50(this); + this->state = 3; } break; + case 3: - Macbeth_801A015C(actor); - Math_SmoothStepToF(&actor->scale, 0.0f, 0.02f, 10.0f, 0.01f); - if (actor->timer_0BC <= 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Macbeth_801A015C(this); + Math_SmoothStepToF(&this->scale, 0.0f, 0.02f, 10.0f, 0.01f); + if (this->timer_0BC <= 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } + f32 D_i5_801BE240; f32 D_i5_801BE244; f32 D_i5_801BE248; f32 D_i5_801BE24C; -void Macbeth_8019E624(Actor* actor, s32* arg1, s32* arg2, s32 arg3, f32 arg4, f32 arg5, s32* arg6) { + +void Macbeth_8019E624(Actor* this, s32* arg1, s32* arg2, s32 arg3, f32 arg4, f32 arg5, s32* arg6) { switch (*arg1) { case 0: - if (((actor->dmgType != DMG_NONE) && (arg3 == actor->dmgPart)) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - func_effect_8007C120(actor->obj.pos.x + arg4, actor->obj.pos.y + 200.0f, actor->obj.pos.z + arg5, - actor->vel.x, actor->vel.y, actor->vel.z, 0.15f, 10); - actor->iwork[7] = 15; - *arg2 -= actor->damage; - if ((*arg2 <= 0) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { + if (((this->dmgType != DMG_NONE) && (arg3 == this->dmgPart)) || + ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + + this->dmgType = DMG_NONE; + + Effect_Effect390_Spawn(this->obj.pos.x + arg4, this->obj.pos.y + 200.0f, this->obj.pos.z + arg5, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 10); + + this->iwork[7] = 15; + + *arg2 -= this->damage; + if ((*arg2 <= 0) || ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { (*arg1)++; } - } else if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + } else if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } - Macbeth_8019B580(actor, arg2); + Macbeth_8019B580(this, arg2); break; + case 1: - Macbeth_8019A8C8(actor, 5); + Macbeth_8019A8C8(this, 5); *arg6 = 1; *arg2 = 80; (*arg1)++; break; + case 2: - if (((actor->dmgType != DMG_NONE) && (arg3 == actor->dmgPart)) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - func_effect_8007C120(actor->obj.pos.x + arg4, actor->obj.pos.y + 200.0f, actor->obj.pos.z + arg5, - actor->vel.x, actor->vel.y, actor->vel.z, 0.2f, 10); - actor->iwork[7] = 15; - *arg2 -= actor->damage; - if ((*arg2 <= 0) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { + if (((this->dmgType != DMG_NONE) && (arg3 == this->dmgPart)) || + ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + + this->dmgType = DMG_NONE; + + Effect_Effect390_Spawn(this->obj.pos.x + arg4, this->obj.pos.y + 200.0f, this->obj.pos.z + arg5, + this->vel.x, this->vel.y, this->vel.z, 0.2f, 10); + + this->iwork[7] = 15; + + *arg2 -= this->damage; + if ((*arg2 <= 0) || ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { gHitCount++; (*arg1)++; } } else { - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } break; + case 3: - Macbeth_8019A8C8(actor, 1); + Macbeth_8019A8C8(this, 1); *arg6 = 2; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); (*arg1)++; - actor->state = 1; + this->state = 1; break; + case 4: break; } } -void Macbeth_Actor208_Update(Actor* actor) { - switch (actor->state) { +void Macbeth_MaTrainCar2_Update(Actor* this) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019E624(actor, &actor->iwork[10], &actor->iwork[11], 1, actor->fwork[25], 0.0f, &actor->iwork[13]); - Macbeth_8019A830(actor); + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019E624(this, &this->iwork[10], &this->iwork[11], 1, this->fwork[25], 0.0f, &this->iwork[13]); + Macbeth_8019A830(this); break; + case 1: - if (actor->iwork[5] < D_MA_801BE2F0[3]) { - D_MA_801BE2F0[3] = actor->iwork[5]; + if (this->iwork[5] < D_MA_801BE2F0[3]) { + D_MA_801BE2F0[3] = this->iwork[5]; } - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); - actor->state = 2; + Macbeth_801A015C(this); + Macbeth_8019A830(this); + this->state = 2; break; + case 2: - Macbeth_8019BBEC(actor); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 60; + Macbeth_8019BBEC(this); + + if (this->timer_0BC == 0) { + this->timer_0BC = 60; } - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); - Macbeth_801A015C(actor); - Macbeth_8019A87C(actor); - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0BC = 20; - Macbeth_8019BE50(actor); - actor->state = 3; - break; + + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); + Macbeth_801A015C(this); + Macbeth_8019A87C(this); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0BC = 20; + Macbeth_8019BE50(this); + this->state = 3; } break; + case 3: - Macbeth_801A015C(actor); - Math_SmoothStepToF(&actor->scale, 0.0f, 0.02f, 10.0f, 0.01f); - if (actor->timer_0BC <= 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Macbeth_801A015C(this); + Math_SmoothStepToF(&this->scale, 0.0f, 0.02f, 10.0f, 0.01f); + if (this->timer_0BC <= 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } -void Macbeth_8019EBF8(Actor* actor, s32* arg1, s32* arg2, s32 arg3, f32 arg4, f32 arg5, s32* arg6) { +void Macbeth_8019EBF8(Actor* this, s32* arg1, s32* arg2, s32 arg3, f32 arg4, f32 arg5, s32* arg6) { switch (*arg1) { case 0: - if (((actor->dmgType != DMG_NONE) && (arg3 == actor->dmgPart)) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - func_effect_8007C120(actor->obj.pos.x + arg4, actor->obj.pos.y + 200.0f, actor->obj.pos.z + arg5, - actor->vel.x, actor->vel.y, actor->vel.z, 0.15f, 10); - actor->iwork[7] = 15; - *arg2 -= actor->damage; - if ((*arg2 <= 0) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { + if (((this->dmgType != DMG_NONE) && (arg3 == this->dmgPart)) || + ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + + this->dmgType = DMG_NONE; + + Effect_Effect390_Spawn(this->obj.pos.x + arg4, this->obj.pos.y + 200.0f, this->obj.pos.z + arg5, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 10); + + this->iwork[7] = 15; + + *arg2 -= this->damage; + if ((*arg2 <= 0) || ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { gHitCount++; (*arg1)++; } - } else if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + } else if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } - Macbeth_8019B580(actor, arg2); - return; + Macbeth_8019B580(this, arg2); + break; + case 1: - Macbeth_8019AF34(actor); + Macbeth_8019AF34(this); *arg6 = 2; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); (*arg1)++; - return; + break; + case 2: - actor->state = 1; - return; + this->state = 1; + break; } } -void Macbeth_Actor213_Update(Actor* actor) { - switch (actor->state) { +void Macbeth_MaTrainCar7_Update(Actor* this) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019EBF8(actor, &actor->iwork[10], &actor->iwork[11], 1, actor->fwork[25], 0.0f, &actor->iwork[13]); - Macbeth_8019A830(actor); + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019EBF8(this, &this->iwork[10], &this->iwork[11], 1, this->fwork[25], 0.0f, &this->iwork[13]); + Macbeth_8019A830(this); break; + case 1: - if (actor->iwork[5] < D_MA_801BE2F0[3]) { - D_MA_801BE2F0[3] = actor->iwork[5]; + if (this->iwork[5] < D_MA_801BE2F0[3]) { + D_MA_801BE2F0[3] = this->iwork[5]; } + gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 255; gCameraShake = 35; - if ((gPlayer[0].trueZpos - actor->obj.pos.z > -200.0f) && - (gPlayer[0].trueZpos - actor->obj.pos.z < 200.0f) && (gPlayer[0].pos.y - actor->obj.pos.y > -300.0f) && - (gPlayer[0].pos.y - actor->obj.pos.y < 300.0f) && (gPlayer[0].pos.x - actor->obj.pos.x > -800.0f) && - (gPlayer[0].pos.x - actor->obj.pos.x < 800.0f)) { + + if ((gPlayer[0].trueZpos - this->obj.pos.z > -200.0f) && (gPlayer[0].trueZpos - this->obj.pos.z < 200.0f) && + (gPlayer[0].pos.y - this->obj.pos.y > -300.0f) && (gPlayer[0].pos.y - this->obj.pos.y < 300.0f) && + (gPlayer[0].pos.x - this->obj.pos.x > -800.0f) && (gPlayer[0].pos.x - this->obj.pos.x < 800.0f)) { gFillScreenRed = gFillScreenAlpha = 255; gFillScreenGreen = gFillScreenBlue = 0; Player_ApplyDamage(&gPlayer[0], 0, 60); } - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); + + Macbeth_801A015C(this); + Macbeth_8019A830(this); + D_ctx_801779A8[gMainController] = 100.0f; - actor->state = 2; + this->state = 2; break; + case 2: if (gCameraShake == 20) { - D_MA_801BE2F0[1] = actor->iwork[5]; + D_MA_801BE2F0[1] = this->iwork[5]; } - Macbeth_8019BBEC(actor); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 60; + + Macbeth_8019BBEC(this); + + if (this->timer_0BC == 0) { + this->timer_0BC = 60; } - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); - Macbeth_801A015C(actor); - Macbeth_8019A87C(actor); + + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); + + Macbeth_801A015C(this); + Macbeth_8019A87C(this); + if (gCameraShake == 20) { - actor->dmgType = DMG_NONE; - actor->timer_0BC = 20; - Macbeth_8019BE50(actor); - actor->state = 3; + this->dmgType = DMG_NONE; + this->timer_0BC = 20; + Macbeth_8019BE50(this); + this->state = 3; } break; + case 3: - Macbeth_801A015C(actor); - Math_SmoothStepToF(&actor->scale, 0.0f, 0.02f, 10.0f, 0.01f); - if (actor->timer_0BC <= 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Macbeth_801A015C(this); + Math_SmoothStepToF(&this->scale, 0.0f, 0.02f, 10.0f, 0.01f); + if (this->timer_0BC <= 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } -void Macbeth_8019F164(Actor* actor) { +void Macbeth_8019F164(MaTrainCar6* this) { static Vec3f D_i5_801BA708 = { 0.0f, 610.0f, 0.0f }; static Vec3f D_i5_801BA714 = { 0.0f, 0.0f, 65.0f }; Vec3f sp84; @@ -1491,277 +1716,312 @@ void Macbeth_8019F164(Actor* actor) { Vec3f sp54; Vec3f sp48; s16 i; - s16 sp44; + s16 sp44 = 0; - sp44 = 0; - sp6C.x = gPlayer[0].pos.x - actor->obj.pos.x + actor->fwork[25]; - sp6C.y = gPlayer[0].pos.y - 25.0f - actor->obj.pos.y + actor->fwork[8] + 25.0f; - sp6C.z = gPlayer[0].trueZpos - 500.0f - actor->obj.pos.z; + sp6C.x = gPlayer[0].pos.x - this->obj.pos.x + this->fwork[25]; + sp6C.y = gPlayer[0].pos.y - 25.0f - this->obj.pos.y + this->fwork[8] + 25.0f; + sp6C.z = gPlayer[0].trueZpos - 500.0f - this->obj.pos.z; for (i = 0; i < ARRAY_COUNT(gActors); i++) { if ((gActors[i].obj.id == OBJ_ACTOR_219) && (gActors[i].obj.status == OBJ_ACTIVE)) { - if ((actor->obj.pos.z < (gActors[i].obj.pos.z + 3000.0f)) && - ((gActors[i].obj.pos.z - actor->obj.pos.z) < 5000.0f)) { - sp6C.x = gActors[i].obj.pos.x - actor->obj.pos.x + actor->fwork[25]; - sp6C.y = gActors[i].obj.pos.y - actor->obj.pos.y + actor->fwork[8] + 25.0f; - sp6C.z = gActors[i].obj.pos.z + 300.0f - actor->obj.pos.z; + if ((this->obj.pos.z < (gActors[i].obj.pos.z + 3000.0f)) && + ((gActors[i].obj.pos.z - this->obj.pos.z) < 5000.0f)) { + sp6C.x = gActors[i].obj.pos.x - this->obj.pos.x + this->fwork[25]; + sp6C.y = gActors[i].obj.pos.y - this->obj.pos.y + this->fwork[8] + 25.0f; + sp6C.z = gActors[i].obj.pos.z + 300.0f - this->obj.pos.z; sp44 = 1; } break; } } - if ((actor->iwork[4] == 0) || (sp44 != 0)) { - Matrix_RotateZ(gCalcMatrix, -actor->obj.rot.z * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -(actor->obj.rot.x + actor->fwork[29]) * M_DTOR, MTXF_APPLY); - Matrix_RotateY(gCalcMatrix, -(actor->obj.rot.y + actor->fwork[26]) * M_DTOR, MTXF_APPLY); + + if ((this->iwork[4] == 0) || (sp44 != 0)) { + Matrix_RotateZ(gCalcMatrix, -this->obj.rot.z * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -(this->obj.rot.x + this->fwork[29]) * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, -(this->obj.rot.y + this->fwork[26]) * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &sp6C, &sp84); + sp78.x = sp84.x - D_i5_801BA708.x; sp78.y = sp84.y - D_i5_801BA708.y; sp78.z = sp84.z - D_i5_801BA708.z; - Math_SmoothStepToAngle(&actor->fwork[4], Math_RadToDeg(Math_Atan2F(sp78.x, sp78.z)), 0.1f, 2.0f, 0.01f); - Math_SmoothStepToAngle(&actor->fwork[3], Math_RadToDeg(-Math_Atan2F(sp78.y, sqrtf(SQ(sp78.x) + SQ(sp78.z)))), + + Math_SmoothStepToAngle(&this->fwork[4], Math_RadToDeg(Math_Atan2F(sp78.x, sp78.z)), 0.1f, 2.0f, 0.01f); + Math_SmoothStepToAngle(&this->fwork[3], Math_RadToDeg(-Math_Atan2F(sp78.y, sqrtf(SQ(sp78.x) + SQ(sp78.z)))), 0.1f, 2.0f, 0.01f); - if ((actor->fwork[4] > 120.0f) && (actor->fwork[4] < 180.0f)) { - actor->fwork[4] = 120.0f; + if ((this->fwork[4] > 120.0f) && (this->fwork[4] < 180.0f)) { + this->fwork[4] = 120.0f; } - if ((actor->fwork[4] < 240.0f) && (actor->fwork[4] > 180.0f)) { - actor->fwork[4] = 240.0f; + if ((this->fwork[4] < 240.0f) && (this->fwork[4] > 180.0f)) { + this->fwork[4] = 240.0f; } - if ((actor->fwork[3] > 60.0f) && (actor->fwork[3] < 180.0f)) { - actor->fwork[3] = 60.0f; + if ((this->fwork[3] > 60.0f) && (this->fwork[3] < 180.0f)) { + this->fwork[3] = 60.0f; } - if ((actor->fwork[3] < 300.0f) && (actor->fwork[3] > 180.0f)) { - actor->fwork[3] = 300.0f; + if ((this->fwork[3] < 300.0f) && (this->fwork[3] > 180.0f)) { + this->fwork[3] = 300.0f; } } - Math_SmoothStepToAngle(&actor->fwork[2], actor->fwork[4], 0.2f, 5.0f, 0.01f); - Math_SmoothStepToAngle(&actor->fwork[1], actor->fwork[3], 0.2f, 5.0f, 0.01f); - Matrix_RotateY(gCalcMatrix, (actor->obj.rot.y + actor->fwork[26]) * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, (actor->obj.rot.x + actor->fwork[29]) * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); + + Math_SmoothStepToAngle(&this->fwork[2], this->fwork[4], 0.2f, 5.0f, 0.01f); + Math_SmoothStepToAngle(&this->fwork[1], this->fwork[3], 0.2f, 5.0f, 0.01f); + + Matrix_RotateY(gCalcMatrix, (this->obj.rot.y + this->fwork[26]) * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, (this->obj.rot.x + this->fwork[29]) * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801BA708, &sp84); - sp60.x = sp84.x + actor->obj.pos.x + actor->fwork[25]; - sp60.y = sp84.y + actor->obj.pos.y + actor->fwork[8] + 25.0f; - sp60.z = sp84.z + actor->obj.pos.z; - sp54.x = actor->fwork[1]; - sp54.y = actor->fwork[2]; + + sp60.x = sp84.x + this->obj.pos.x + this->fwork[25]; + sp60.y = sp84.y + this->obj.pos.y + this->fwork[8] + 25.0f; + sp60.z = sp84.z + this->obj.pos.z; + + sp54.x = this->fwork[1]; + sp54.y = this->fwork[2]; sp54.z = 0.0f; - sp48.x = actor->obj.rot.x + actor->fwork[29]; - sp48.y = actor->obj.rot.y + actor->fwork[26]; - sp48.z = actor->obj.rot.z; - switch (actor->iwork[4]) { + + sp48.x = this->obj.rot.x + this->fwork[29]; + sp48.y = this->obj.rot.y + this->fwork[26]; + sp48.z = this->obj.rot.z; + + switch (this->iwork[4]) { case 0: if (sp44 != 0) { sp60.x -= 60.0f; func_effect_8007EE68(OBJ_EFFECT_378, &sp60, &sp54, &sp48, &D_i5_801BA714, 1.0f); - AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, actor->sfxSource, 4); - actor->iwork[4]++; - } else if ((D_i5_801BE310 == actor->iwork[5]) || - ((gPlayer[0].pos.x - actor->obj.pos.x > 300.0f) && - (gPlayer[0].pos.x - actor->obj.pos.x < 3000.0f)) || - ((gPlayer[0].pos.x - actor->obj.pos.x < -300.0f) && - (gPlayer[0].pos.x - actor->obj.pos.x > -3000.0f))) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z < 5000.0f) && - (gPlayer[0].trueZpos - actor->obj.pos.z > 200.0f) && (actor->timer_0BC == 0) && - (actor->health != 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, this->sfxSource, 4); + this->iwork[4]++; + } else if ((D_i5_801BE310 == this->iwork[5]) || + ((gPlayer[0].pos.x - this->obj.pos.x > 300.0f) && + (gPlayer[0].pos.x - this->obj.pos.x < 3000.0f)) || + ((gPlayer[0].pos.x - this->obj.pos.x < -300.0f) && + (gPlayer[0].pos.x - this->obj.pos.x > -3000.0f))) { + if ((gPlayer[0].trueZpos - this->obj.pos.z < 5000.0f) && + (gPlayer[0].trueZpos - this->obj.pos.z > 200.0f) && (this->timer_0BC == 0) && (this->health != 0)) { sp60.x -= 60.0f; func_effect_8007EE68(OBJ_EFFECT_378, &sp60, &sp54, &sp48, &D_i5_801BA714, 1.0f); - AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, actor->sfxSource, 4); - actor->iwork[4]++; + AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, this->sfxSource, 4); + this->iwork[4]++; } } break; + case 1: - Math_SmoothStepToF(&actor->fwork[0], -100.0f, 0.8f, 30.0f, 20.0f); - if (actor->fwork[0] <= -100.0f) { - actor->iwork[4]++; + Math_SmoothStepToF(&this->fwork[0], -100.0f, 0.8f, 30.0f, 20.0f); + if (this->fwork[0] <= -100.0f) { + this->iwork[4]++; } break; + case 2: - Math_SmoothStepToF(&actor->fwork[0], 0.0f, 0.6f, 30.0f, 0.2f); - if (actor->fwork[0] >= 0.0f) { + Math_SmoothStepToF(&this->fwork[0], 0.0f, 0.6f, 30.0f, 0.2f); + if (this->fwork[0] >= 0.0f) { if (sp44 == 0) { - actor->timer_0BC = 15; + this->timer_0BC = 15; } - actor->iwork[4]++; + this->iwork[4]++; } break; + case 3: - if ((actor->timer_0BC == 0) && (actor->health != 0)) { + if ((this->timer_0BC == 0) && (this->health != 0)) { func_effect_8007EE68(OBJ_EFFECT_378, &sp60, &sp54, &sp48, &D_i5_801BA714, 1.0f); - AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, actor->sfxSource, 4); - actor->iwork[4]++; + AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, this->sfxSource, 4); + this->iwork[4]++; } break; + case 4: - Math_SmoothStepToF(&actor->fwork[0], -100.0f, 0.8f, 30.0f, 20.0f); - if (actor->fwork[0] <= -100.0f) { - actor->iwork[4]++; + Math_SmoothStepToF(&this->fwork[0], -100.0f, 0.8f, 30.0f, 20.0f); + if (this->fwork[0] <= -100.0f) { + this->iwork[4]++; } break; + case 5: - Math_SmoothStepToF(&actor->fwork[0], 0.0f, 0.6f, 30.0f, 0.2f); - if (actor->fwork[0] >= 0.0f) { + Math_SmoothStepToF(&this->fwork[0], 0.0f, 0.6f, 30.0f, 0.2f); + if (this->fwork[0] >= 0.0f) { if (sp44 == 0) { - actor->timer_0BC = 15; + this->timer_0BC = 15; } - actor->iwork[4]++; + this->iwork[4]++; } break; + case 6: - if ((actor->timer_0BC == 0) && (actor->health != 0)) { + if ((this->timer_0BC == 0) && (this->health != 0)) { sp60.x += 60.0f; func_effect_8007EE68(OBJ_EFFECT_378, &sp60, &sp54, &sp48, &D_i5_801BA714, 1.0f); - AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, actor->sfxSource, 4); - actor->iwork[4]++; + AUDIO_PLAY_SFX(NA_SE_EN_MISSILE_SHOT, this->sfxSource, 4); + this->iwork[4]++; } break; + case 7: - Math_SmoothStepToF(&actor->fwork[0], -100.0f, 0.8f, 30.0f, 20.0f); - if (actor->fwork[0] <= -100.0f) { - actor->iwork[4]++; + Math_SmoothStepToF(&this->fwork[0], -100.0f, 0.8f, 30.0f, 20.0f); + if (this->fwork[0] <= -100.0f) { + this->iwork[4]++; } break; + case 8: - Math_SmoothStepToF(&actor->fwork[0], 0.0f, 0.6f, 30.0f, 0.2f); - if (actor->fwork[0] >= 0.0f) { + Math_SmoothStepToF(&this->fwork[0], 0.0f, 0.6f, 30.0f, 0.2f); + if (this->fwork[0] >= 0.0f) { if (sp44 == 0) { - actor->timer_0BC = (u32) (RAND_FLOAT(100.0f) + 50.0f); + this->timer_0BC = (u32) (RAND_FLOAT(100.0f) + 50.0f); } - actor->iwork[4] = 0; + this->iwork[4] = 0; } break; + default: break; } } -void Macbeth_8019FC54(Actor* actor, s32* arg1, s32* arg2, s32 arg3, s32 arg4, f32 arg5, f32 arg6, s32* arg7) { +void Macbeth_8019FC54(Actor* this, s32* arg1, s32* arg2, s32 arg3, s32 arg4, f32 arg5, f32 arg6, s32* arg7) { switch (*arg1) { case 0: - if (((actor->dmgType != DMG_NONE) && (actor->dmgPart >= arg3) && (arg4 >= actor->dmgPart)) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - func_effect_8007C120(actor->obj.pos.x + arg5, actor->obj.pos.y + 200.0f, actor->obj.pos.z + arg6, - actor->vel.x, actor->vel.y, actor->vel.z, 0.15f, 10); - actor->iwork[7] = 15; - *arg2 -= actor->damage; - if ((*arg2 <= 0) || - ((D_MA_801BE2F0[1] - 1 == actor->iwork[5]) && (actor->iwork[5] < D_MA_801BE2F0[3])) || - (((D_MA_801BE2F0[1] + 1) == actor->iwork[5]) && (D_MA_801BE2F0[3] < actor->iwork[5]))) { + if (((this->dmgType != DMG_NONE) && (this->dmgPart >= arg3) && (arg4 >= this->dmgPart)) || + ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + + this->dmgType = DMG_NONE; + + Effect_Effect390_Spawn(this->obj.pos.x + arg5, this->obj.pos.y + 200.0f, this->obj.pos.z + arg6, + this->vel.x, this->vel.y, this->vel.z, 0.15f, 10); + this->iwork[7] = 15; + + *arg2 -= this->damage; + if ((*arg2 <= 0) || ((D_MA_801BE2F0[1] - 1 == this->iwork[5]) && (this->iwork[5] < D_MA_801BE2F0[3])) || + (((D_MA_801BE2F0[1] + 1) == this->iwork[5]) && (D_MA_801BE2F0[3] < this->iwork[5]))) { gHitCount++; - if ((actor->obj.id == OBJ_ACTOR_210) && (actor->iwork[3] < 2)) { + if ((this->obj.id == OBJ_ACTOR_MA_TRAIN_CAR_4) && (this->iwork[3] < 2)) { gHitCount += 5; } (*arg1)++; } - } else if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + } else if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } - Macbeth_8019B580(actor, arg2); + Macbeth_8019B580(this, arg2); break; + case 1: - Macbeth_8019A8C8(actor, 6); - if (actor->obj.id == OBJ_ACTOR_212) { - func_effect_8007BFFC(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 360.0f, actor->obj.pos.z, - 0.0f, 0.0f, 0.0f, 20.0f, 20); - func_effect_8007BFFC(actor->obj.pos.x + actor->fwork[25], actor->obj.pos.y + 660.0f, actor->obj.pos.z, - 0.0f, 0.0f, 0.0f, 20.0f, 20); + Macbeth_8019A8C8(this, 6); + if (this->obj.id == OBJ_ACTOR_MA_TRAIN_CAR_6) { + Effect386_Spawn1(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 360.0f, this->obj.pos.z, 0.0f, + 0.0f, 0.0f, 20.0f, 20); + Effect386_Spawn1(this->obj.pos.x + this->fwork[25], this->obj.pos.y + 660.0f, this->obj.pos.z, 0.0f, + 0.0f, 0.0f, 20.0f, 20); } *arg7 = 2; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_60359AC); (*arg1)++; - actor->state = 1; + this->state = 1; break; + case 2: break; } } -void Macbeth_Actor212_Update(Actor* actor) { - switch (actor->state) { +void Macbeth_MaTrainCar6_Update(MaTrainCar6* this) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019FC54(actor, &actor->iwork[10], &actor->iwork[11], 1, 3, actor->fwork[25], 0.0f, - &actor->iwork[13]); - Macbeth_8019A728(actor); - if (actor->iwork[1] != 0) { - Macbeth_8019F164(actor); + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019FC54(this, &this->iwork[10], &this->iwork[11], 1, 3, this->fwork[25], 0.0f, &this->iwork[13]); + Macbeth_8019A728(this); + + if (this->iwork[1] != 0) { + Macbeth_8019F164(this); } - Macbeth_8019A830(actor); + + Macbeth_8019A830(this); break; + case 1: - if (actor->iwork[5] < D_MA_801BE2F0[3]) { - D_MA_801BE2F0[3] = actor->iwork[5]; + if (this->iwork[5] < D_MA_801BE2F0[3]) { + D_MA_801BE2F0[3] = this->iwork[5]; } - actor->state = 2; - Macbeth_801A015C(actor); - Macbeth_8019A830(actor); + this->state = 2; + Macbeth_801A015C(this); + Macbeth_8019A830(this); break; + case 2: - Macbeth_8019BBEC(actor); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 60; + Macbeth_8019BBEC(this); + + if (this->timer_0BC == 0) { + this->timer_0BC = 60; } - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); - Macbeth_801A015C(actor); - Macbeth_8019A87C(actor); - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0BC = 20; - Macbeth_8019BE50(actor); - actor->state = 3; + + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.02f, 10.0f, 0.01f); + + Macbeth_801A015C(this); + Macbeth_8019A87C(this); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0BC = 20; + Macbeth_8019BE50(this); + this->state = 3; } break; + case 3: - Macbeth_801A015C(actor); - Math_SmoothStepToF(&actor->scale, 0.0f, 0.02f, 10.0f, 0.01f); - if (actor->timer_0BC <= 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Macbeth_801A015C(this); + Math_SmoothStepToF(&this->scale, 0.0f, 0.02f, 10.0f, 0.01f); + + if (this->timer_0BC <= 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } -void Macbeth_801A015C(Actor* actor) { - if (!Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0)) { - actor->obj.pos.x = actor->fwork[19]; - actor->obj.pos.y = actor->fwork[5]; - if (!Macbeth_801A0308(actor, actor->obj.pos.z - 420.0f, actor->fwork[22], 1)) { - actor->fwork[21] = actor->fwork[19] - actor->obj.pos.x; - actor->fwork[22] = actor->fwork[20]; - actor->fwork[6] = actor->fwork[5] - actor->obj.pos.y; - actor->fwork[27] = actor->fwork[9]; - if (!Macbeth_801A0308(actor, actor->obj.pos.z + 420.0f, actor->fwork[24], 2)) { - actor->fwork[23] = actor->fwork[19] - actor->obj.pos.x; - actor->fwork[24] = actor->fwork[20]; - actor->fwork[7] = actor->fwork[5] - actor->obj.pos.y; - actor->fwork[28] = actor->fwork[9]; - if (actor->fwork[19] - actor->obj.pos.x < actor->fwork[21]) { - actor->fwork[25] = actor->fwork[23] + ((actor->fwork[21] - actor->fwork[23]) / 2); +void Macbeth_801A015C(Actor* this) { + if (!Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0)) { + this->obj.pos.x = this->fwork[19]; + this->obj.pos.y = this->fwork[5]; + + if (!Macbeth_801A0308(this, this->obj.pos.z - 420.0f, this->fwork[22], 1)) { + this->fwork[21] = this->fwork[19] - this->obj.pos.x; + this->fwork[22] = this->fwork[20]; + this->fwork[6] = this->fwork[5] - this->obj.pos.y; + this->fwork[27] = this->fwork[9]; + + if (!Macbeth_801A0308(this, this->obj.pos.z + 420.0f, this->fwork[24], 2)) { + this->fwork[23] = this->fwork[19] - this->obj.pos.x; + this->fwork[24] = this->fwork[20]; + this->fwork[7] = this->fwork[5] - this->obj.pos.y; + this->fwork[28] = this->fwork[9]; + + if (this->fwork[19] - this->obj.pos.x < this->fwork[21]) { + this->fwork[25] = this->fwork[23] + ((this->fwork[21] - this->fwork[23]) / 2); } else { - actor->fwork[25] = actor->fwork[21] + ((actor->fwork[23] - actor->fwork[21]) / 2); + this->fwork[25] = this->fwork[21] + ((this->fwork[23] - this->fwork[21]) / 2); } - if (actor->fwork[7] < actor->fwork[6]) { - actor->fwork[8] = actor->fwork[7] + ((actor->fwork[6] - actor->fwork[7]) / 2); + if (this->fwork[7] < this->fwork[6]) { + this->fwork[8] = this->fwork[7] + ((this->fwork[6] - this->fwork[7]) / 2); } else { - actor->fwork[8] = actor->fwork[6] + ((actor->fwork[7] - actor->fwork[6]) / 2); + this->fwork[8] = this->fwork[6] + ((this->fwork[7] - this->fwork[6]) / 2); } - actor->fwork[26] = (actor->fwork[22] + actor->fwork[24]) / 2; - actor->fwork[29] = (actor->fwork[27] + actor->fwork[28]) / 2; + + this->fwork[26] = (this->fwork[22] + this->fwork[24]) / 2; + this->fwork[29] = (this->fwork[27] + this->fwork[28]) / 2; } } } } -bool Macbeth_801A0308(Actor* actor, f32 arg1, f32 arg2, u8 arg3) { +bool Macbeth_801A0308(Actor* this, f32 arg1, f32 arg2, u8 arg3) { s16 var_a0; s16 sp4C; f32 temp_fv0; @@ -1777,8 +2037,7 @@ bool Macbeth_801A0308(Actor* actor, f32 arg1, f32 arg2, u8 arg3) { switch (D_MA_801BE2F0[5]) { case 0: - - for (var_a0 = actor->fwork[arg3 + 16]; D_i5_801B8E50[var_a0].unk_10 != 0; var_a0++) { + for (var_a0 = this->fwork[arg3 + 16]; D_i5_801B8E50[var_a0].unk_10 != 0; var_a0++) { if (D_i5_801B8E50[var_a0].unk_00 < arg1) { if (var_a0 == 0) { var_a0 = 1; @@ -1793,28 +2052,33 @@ bool Macbeth_801A0308(Actor* actor, f32 arg1, f32 arg2, u8 arg3) { sp34 = D_i5_801B8E50[var_a0].unk_04; sp30 = D_i5_801B8E50[var_a0].unk_08; sp28 = D_i5_801B8E50[var_a0].unk_0C; + if (sp38 >= 180.0f) { sp38 -= 360.0f; } if (sp28 >= 180.0f) { sp28 -= 360.0f; } - if (D_i5_801B8E50[var_a0 - 1].unk_10 == OBJ_SCENERY_104) { + + if (D_i5_801B8E50[var_a0 - 1].unk_10 == OBJ_SCENERY_MA_SWITCH_TRACK) { sp38 = 0.0f; } - if (D_i5_801B8E50[var_a0].unk_10 == OBJ_SCENERY_104) { + if (D_i5_801B8E50[var_a0].unk_10 == OBJ_SCENERY_MA_SWITCH_TRACK) { sp28 = 0.0f; } - actor->fwork[arg3 + 16] = var_a0; + + this->fwork[arg3 + 16] = var_a0; break; } } + if (D_i5_801B8E50[var_a0].unk_10 == 0) { - actor->fwork[arg3 + 16] = 1.0f; + this->fwork[arg3 + 16] = 1.0f; } break; + case 1: - for (var_a0 = actor->fwork[arg3 + 16]; D_i5_801B9A80[var_a0].unk_10 != 0; var_a0++) { + for (var_a0 = this->fwork[arg3 + 16]; D_i5_801B9A80[var_a0].unk_10 != 0; var_a0++) { if (D_i5_801B9A80[var_a0].unk_00 < arg1) { if (var_a0 == 0) { var_a0 = 1; @@ -1829,76 +2093,87 @@ bool Macbeth_801A0308(Actor* actor, f32 arg1, f32 arg2, u8 arg3) { sp34 = D_i5_801B9A80[var_a0].unk_04; sp30 = D_i5_801B9A80[var_a0].unk_08; sp28 = D_i5_801B9A80[var_a0].unk_0C; + if (sp38 >= 180.0f) { sp38 -= 360.0f; } if (sp28 >= 180.0f) { sp28 -= 360.0f; } - if (D_i5_801B8E50[var_a0 - 1].unk_10 == OBJ_SCENERY_104) { + + if (D_i5_801B8E50[var_a0 - 1].unk_10 == OBJ_SCENERY_MA_SWITCH_TRACK) { sp38 = 0.0f; } - if (D_i5_801B8E50[var_a0].unk_10 == OBJ_SCENERY_104) { + if (D_i5_801B8E50[var_a0].unk_10 == OBJ_SCENERY_MA_SWITCH_TRACK) { sp28 = 0.0f; } - actor->fwork[arg3 + 16] = var_a0; + + this->fwork[arg3 + 16] = var_a0; break; } } + if (D_i5_801B9A80[var_a0].unk_10 == 0) { - actor->fwork[arg3 + 16] = 1.0f; + this->fwork[arg3 + 16] = 1.0f; } break; } sp24 = 1.0f - ((sp2C - arg1) / (sp2C - sp3C)); - if ((sp4C == OBJ_SCENERY_95) || (sp4C == OBJ_SCENERY_96) || (sp4C == OBJ_SCENERY_98) || (sp4C == OBJ_SCENERY_99)) { - if ((actor->iwork[5] < (s32) D_i5_801BA1E4) && (actor->iwork[5] < D_MA_801BE2F0[3])) { - actor->vel.z *= 0.98f; + + if ((sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_5) || + (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_7) || (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_8)) { + if ((this->iwork[5] < (s32) D_i5_801BA1E4) && (this->iwork[5] < D_MA_801BE2F0[3])) { + this->vel.z *= 0.98f; } + temp_fv0 = fabsf((sp2C - sp3C) / 3.0f); + if (sp24 < 0.3333333f) { - if ((sp4C == OBJ_SCENERY_95) || (sp4C == OBJ_SCENERY_98)) { - actor->fwork[19] = (((sp34 - sp44) * sp24) + sp44) - - (52.160667f * (1.0f - (((sp3C - temp_fv0) - arg1) / ((sp3C - temp_fv0) - sp3C)))); + if ((sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { + this->fwork[19] = (((sp34 - sp44) * sp24) + sp44) - + (52.160667f * (1.0f - (((sp3C - temp_fv0) - arg1) / ((sp3C - temp_fv0) - sp3C)))); } else { - actor->fwork[19] = ((sp34 - sp44) * sp24) + sp44 + - (52.160667f * (1.0f - (((sp3C - temp_fv0) - arg1) / ((sp3C - temp_fv0) - sp3C)))); + this->fwork[19] = ((sp34 - sp44) * sp24) + sp44 + + (52.160667f * (1.0f - (((sp3C - temp_fv0) - arg1) / ((sp3C - temp_fv0) - sp3C)))); } } else if (sp24 < 0.666666f) { - if ((sp4C == OBJ_SCENERY_95) || (sp4C == OBJ_SCENERY_98)) { - actor->fwork[19] = (((sp34 - sp44) * sp24) + sp44) - 52.160667f; + if ((sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { + this->fwork[19] = (((sp34 - sp44) * sp24) + sp44) - 52.160667f; } else { - actor->fwork[19] = ((sp34 - sp44) * sp24) + sp44 + 52.160667f; + this->fwork[19] = ((sp34 - sp44) * sp24) + sp44 + 52.160667f; } - } else if ((sp4C == OBJ_SCENERY_95) || (sp4C == OBJ_SCENERY_98)) { - actor->fwork[19] = (((sp34 - sp44) * sp24) + sp44) - - (52.160667f * (1.0f - (1.0f - ((sp2C - arg1) / (sp2C - (sp3C - (temp_fv0 * 2))))))); + } else if ((sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { + this->fwork[19] = (((sp34 - sp44) * sp24) + sp44) - + (52.160667f * (1.0f - (1.0f - ((sp2C - arg1) / (sp2C - (sp3C - (temp_fv0 * 2))))))); } else { - actor->fwork[19] = ((sp34 - sp44) * sp24) + sp44 + - (52.160667f * (1.0f - (1.0f - ((sp2C - arg1) / (sp2C - (sp3C - (temp_fv0 * 2))))))); + this->fwork[19] = ((sp34 - sp44) * sp24) + sp44 + + (52.160667f * (1.0f - (1.0f - ((sp2C - arg1) / (sp2C - (sp3C - (temp_fv0 * 2))))))); } } else { - if (sp4C == OBJ_SCENERY_104) { - if ((actor->iwork[5] < (s32) D_i5_801BA1E4) && (actor->iwork[5] < D_MA_801BE2F0[3])) { - actor->vel.z *= 0.94f; + if (sp4C == OBJ_SCENERY_MA_SWITCH_TRACK) { + if ((this->iwork[5] < (s32) D_i5_801BA1E4) && (this->iwork[5] < D_MA_801BE2F0[3])) { + this->vel.z *= 0.94f; } } - actor->fwork[19] = ((sp34 - sp44) * sp24) + sp44; + this->fwork[19] = ((sp34 - sp44) * sp24) + sp44; } - actor->fwork[5] = ((sp30 - sp40) * sp24) + sp40; - if ((sp4C == OBJ_SCENERY_100) || (sp4C == OBJ_SCENERY_102)) { - Math_SmoothStepToF(&actor->fwork[9], 3.0f, 0.05f, 1.0f, 0.001f); - } else if ((sp4C == OBJ_SCENERY_101) || (sp4C == OBJ_SCENERY_103)) { - Math_SmoothStepToF(&actor->fwork[9], -3.0f, 0.05f, 1.0f, 0.001f); + + this->fwork[5] = ((sp30 - sp40) * sp24) + sp40; + + if ((sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_9) || (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_11)) { + Math_SmoothStepToF(&this->fwork[9], 3.0f, 0.05f, 1.0f, 0.001f); + } else if ((sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_10) || (sp4C == OBJ_SCENERY_MA_TRAIN_TRACK_12)) { + Math_SmoothStepToF(&this->fwork[9], -3.0f, 0.05f, 1.0f, 0.001f); } else { - Math_SmoothStepToF(&actor->fwork[9], 0.0f, 0.05f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], 0.0f, 0.05f, 1.0f, 0.0f); } - actor->fwork[20] = ((sp28 - sp38) * sp24) + sp38; + + this->fwork[20] = ((sp28 - sp38) * sp24) + sp38; return false; } -bool Macbeth_801A0A74(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Macbeth_801A0A74(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { if ((limbIndex == 5) || (limbIndex == 6)) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); } else { @@ -1910,22 +2185,21 @@ bool Macbeth_801A0A74(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return false; } -bool Macbeth_801A0B00(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Macbeth_801A0B00(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { if (limbIndex == 3) { *dList = NULL; } return false; } -bool Macbeth_801A0B20(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Macbeth_801A0B20(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + Actor* actor = (Actor*) thisx; if ((limbIndex == 3) || (limbIndex == 7)) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); } else { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } - if (limbIndex == 1) { pos->z += actor->fwork[0]; } @@ -1936,59 +2210,63 @@ bool Macbeth_801A0B20(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return false; } -void Macbeth_Scenery104_Update(Scenery* scenery) { - switch (scenery->state) { +void Macbeth_MaSwitchTrack_Update(MaSwitchTrack* this) { + switch (this->state) { case 0: - scenery->vel.y = 0.0f; - scenery->vel.x = 0.0f; + this->vel.y = 0.0f; + this->vel.x = 0.0f; if (D_i5_801BE312 != 0) { - scenery->state = 1; - scenery->timer_4C = 20; + this->state = 1; + this->timer_4C = 20; } break; + case 1: - if (scenery->timer_4C == 1) { + if (this->timer_4C == 1) { AUDIO_PLAY_SFX(NA_SE_TANK_BURNER_HALF, gPlayer[0].sfxSource, 0); } - if (scenery->timer_4C <= 0) { - Math_SmoothStepToF(&scenery->vel.x, 1751.0f, 0.2f, 80.0f, 1.0f); - if (scenery->vel.x >= 1750.0) { - AUDIO_PLAY_SFX(NA_SE_OB_POINT_SWITCH, scenery->sfxSource, 0); + if (this->timer_4C <= 0) { + Math_SmoothStepToF(&this->vel.x, 1751.0f, 0.2f, 80.0f, 1.0f); + if (this->vel.x >= 1750.0) { + AUDIO_PLAY_SFX(NA_SE_OB_POINT_SWITCH, this->sfxSource, 0); Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, NA_SE_TANK_BURNER_HALF); - scenery->timer_4C = 5; - scenery->state = 2; + this->timer_4C = 5; + this->state = 2; } } break; + case 2: - Math_SmoothStepToF(&scenery->vel.y, -11.0f, 0.1f, 2.5f, 0.01f); - if (scenery->vel.y <= -10.0f) { - scenery->state = 3; + Math_SmoothStepToF(&this->vel.y, -11.0f, 0.1f, 2.5f, 0.01f); + if (this->vel.y <= -10.0f) { + this->state = 3; } break; + case 3: break; } - if (scenery->timer_4C != 0) { - scenery->vel.z = 2.0f + RAND_FLOAT(1.0f); + + if (this->timer_4C != 0) { + this->vel.z = 2.0f + RAND_FLOAT(1.0f); } else { - scenery->vel.z = 1.0f + RAND_FLOAT(1.0f); + this->vel.z = 1.0f + RAND_FLOAT(1.0f); } } -bool Macbeth_801A0DD8(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Scenery* scenery = (Scenery*) data; +bool Macbeth_801A0DD8(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + Scenery* this = (Scenery*) thisx; if (limbIndex == 5) { - rot->y += scenery->vel.y; + rot->y += this->vel.y; } if ((limbIndex == 1) || (limbIndex == 2)) { - pos->z -= scenery->vel.x; + pos->z -= this->vel.x; } return false; } -void Macbeth_801A0E2C(s32 limbIndex, Vec3f* rot, void* data) { +void Macbeth_801A0E2C(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; s32 pad; @@ -2002,24 +2280,26 @@ void Macbeth_801A0E2C(s32 limbIndex, Vec3f* rot, void* data) { } } -bool Macbeth_801A0EB8(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Macbeth_MaLocomotive_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + MaLocomotive* this = (MaLocomotive*) thisx; RCP_SetupDL(&gMasterDisp, SETUPDL_29); gSPClearGeometryMode(gMasterDisp++, G_TEXTURE_GEN); + if ((limbIndex == 3) || (limbIndex == 6) || (limbIndex == 9)) { gSPTexture(gMasterDisp++, 3000, 3000, 0, G_TX_RENDERTILE, G_ON); gSPSetGeometryMode(gMasterDisp++, G_TEXTURE_GEN); } + if ((limbIndex == 5) || (limbIndex == 9)) { - if ((actor->iwork[7] % 2) != 0) { + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if ((actor->iwork[7] > 0) && (limbIndex == 5)) { - actor->iwork[7]--; + if ((this->iwork[7] > 0) && (limbIndex == 5)) { + this->iwork[7]--; } - rot->x += actor->fwork[2]; + rot->x += this->fwork[2]; if (limbIndex == 5) { RCP_SetupDL(&gMasterDisp, SETUPDL_34); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, D_i5_801BE368[20], D_i5_801BE368[21], D_i5_801BE368[22], 255); @@ -2027,121 +2307,130 @@ bool Macbeth_801A0EB8(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* RCP_SetupDL(&gMasterDisp, SETUPDL_29); } } + switch (limbIndex) { case 1: - rot->x += actor->fwork[3] / 2; + rot->x += this->fwork[3] / 2; break; case 2: - rot->x -= actor->fwork[3] / 2; + rot->x -= this->fwork[3] / 2; break; } return false; } -void Macbeth_801A1268(s32 limbIndex, Vec3f* rot, void* data) { - Vec3f sp1C = { 0.0f, 0.0f, 0.0f }; - Actor* actor = (Actor*) data; +void Macbeth_MaLocomotive_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + Vec3f src = { 0.0f, 0.0f, 0.0f }; + MaLocomotive* this = (MaLocomotive*) thisx; if (limbIndex == 4) { - Matrix_MultVec3f(gCalcMatrix, &sp1C, actor->vwork); + Matrix_MultVec3f(gCalcMatrix, &src, this->vwork); } } // Actors 205, 206, 208, 209, 210, 211, 212, 213 -void Macbeth_ActorDoodad_Draw(Actor* actor) { - Vec3f spD0[50]; +void Macbeth_Train_Draw(Actor* this) { + Vec3f frameTable[50]; s32 id; if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) { - if (((gPlayer[0].trueZpos - actor->obj.pos.z) > 7000.0f) || - ((gPlayer[0].trueZpos - actor->obj.pos.z) < -1000.0f)) { + if (((gPlayer[0].trueZpos - this->obj.pos.z) > 7000.0f) || + ((gPlayer[0].trueZpos - this->obj.pos.z) < -1000.0f)) { return; } } else { - if (((gPlayer[0].trueZpos - actor->obj.pos.z) > 7000.0f) || - ((gPlayer[0].trueZpos - actor->obj.pos.z) < -5000.0f)) { + if (((gPlayer[0].trueZpos - this->obj.pos.z) > 7000.0f) || + ((gPlayer[0].trueZpos - this->obj.pos.z) < -5000.0f)) { return; } } Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, actor->fwork[25], actor->fwork[8] + 25.0f, 0.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[26] * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, actor->fwork[29] * M_DTOR, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, this->fwork[25], this->fwork[8] + 25.0f, 0.0f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[26] * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, this->fwork[29] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((actor->obj.id != OBJ_ACTOR_206) && (actor->obj.id != OBJ_ACTOR_205)) { - if (((gPlayer[0].trueZpos - actor->obj.pos.z) > 3000.0f) && (D_i5_801BE310 != actor->iwork[5])) { + if ((this->obj.id != OBJ_ACTOR_MA_TRAIN_CAR_1) && (this->obj.id != OBJ_ACTOR_MA_LOCOMOTIVE)) { + if (((gPlayer[0].trueZpos - this->obj.pos.z) > 3000.0f) && (D_i5_801BE310 != this->iwork[5])) { gSPDisplayList(gMasterDisp++, D_MA_6027BF0); gSPDisplayList(gMasterDisp++, D_MA_601BE90); } else { - Matrix_Scale(gGfxMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); - Animation_GetFrameData(&D_MA_602EA0C, 0, spD0); - Animation_DrawSkeleton(1, D_MA_602EBB8, spD0, Macbeth_801A0A74, NULL, actor, &gIdentityMatrix); + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); + Animation_GetFrameData(&D_MA_602EA0C, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_602EBB8, frameTable, Macbeth_801A0A74, NULL, this, &gIdentityMatrix); } } - switch (actor->obj.id) { - case OBJ_ACTOR_212: - if (actor->iwork[13] == 0) { - if ((actor->iwork[7] % 2) != 0) { + + switch (this->obj.id) { + case OBJ_ACTOR_MA_TRAIN_CAR_6: + if (this->iwork[13] == 0) { + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[7] > 0) { - actor->iwork[7]--; + if (this->iwork[7] > 0) { + this->iwork[7]--; } - Animation_GetFrameData(&D_MA_6027320, 0, spD0); - Animation_DrawSkeleton(1, D_MA_602742C, spD0, Macbeth_801A0B20, NULL, actor, &gIdentityMatrix); + Animation_GetFrameData(&D_MA_6027320, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_602742C, frameTable, Macbeth_801A0B20, NULL, this, &gIdentityMatrix); } break; - case OBJ_ACTOR_210: - if (actor->iwork[13] == 0) { - Animation_GetFrameData(&D_MA_6027A04, 0, spD0); - Animation_DrawSkeleton(1, D_MA_6027AF0, spD0, Macbeth_801A0B00, NULL, actor, &gIdentityMatrix); + + case OBJ_ACTOR_MA_TRAIN_CAR_4: + if (this->iwork[13] == 0) { + Animation_GetFrameData(&D_MA_6027A04, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_6027AF0, frameTable, Macbeth_801A0B00, NULL, this, &gIdentityMatrix); + Matrix_Translate(gGfxMatrix, 0.0f, 205.0f, 0.0f, MTXF_APPLY); - Matrix_RotateZ(gGfxMatrix, actor->fwork[4] * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, this->fwork[4] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((actor->iwork[7] % 2) != 0) { + + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[7] > 0) { - actor->iwork[7]--; + if (this->iwork[7] > 0) { + this->iwork[7]--; } - if (actor->iwork[3] >= 3) { + + if (this->iwork[3] >= 3) { gSPDisplayList(gMasterDisp++, D_MA_6027EB0); } else { gSPDisplayList(gMasterDisp++, D_MA_60288A0); } } break; - case OBJ_ACTOR_209: - if (actor->iwork[17] != 2) { + + case OBJ_ACTOR_MA_TRAIN_CAR_3: + if (this->iwork[17] != 2) { Matrix_Translate(gGfxMatrix, 0.0f, 5.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((actor->iwork[8] % 2) != 0) { + if ((this->iwork[8] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[8] > 0) { - actor->iwork[8]--; + if (this->iwork[8] > 0) { + this->iwork[8]--; } gSPDisplayList(gMasterDisp++, D_MA_6029890); RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } break; - case OBJ_ACTOR_211: - if (actor->iwork[17] != 2) { + + case OBJ_ACTOR_MA_TRAIN_CAR_5: + if (this->iwork[17] != 2) { Matrix_Translate(gGfxMatrix, 0.0f, -15.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((actor->iwork[8] % 2) != 0) { + + if ((this->iwork[8] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[8] > 0) { - actor->iwork[8]--; + if (this->iwork[8] > 0) { + this->iwork[8]--; } - if (actor->iwork[17] == 0) { + if (this->iwork[17] == 0) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_MA_6004440); } else { @@ -2153,32 +2442,34 @@ void Macbeth_ActorDoodad_Draw(Actor* actor) { RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); } break; - case OBJ_ACTOR_213: - if (actor->iwork[13] < 2) { + + case OBJ_ACTOR_MA_TRAIN_CAR_7: + if (this->iwork[13] < 2) { Matrix_Translate(gGfxMatrix, 0.0f, -5.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL(&gMasterDisp, SETUPDL_57); - if ((actor->iwork[7] % 2) != 0) { + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[7] > 0) { - actor->iwork[7]--; + if (this->iwork[7] > 0) { + this->iwork[7]--; } gSPDisplayList(gMasterDisp++, D_MA_6024670); RCP_SetupDL(&gMasterDisp, SETUPDL_29); } break; - case OBJ_ACTOR_208: - if (actor->iwork[13] < 2) { - if ((actor->iwork[7] % 2) != 0) { + + case OBJ_ACTOR_MA_TRAIN_CAR_2: + if (this->iwork[13] < 2) { + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[7] > 0) { - actor->iwork[7]--; + if (this->iwork[7] > 0) { + this->iwork[7]--; } - if (actor->iwork[13] == 0) { + if (this->iwork[13] == 0) { Matrix_Translate(gGfxMatrix, 0.0f, -5.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_MA_60269E0); @@ -2190,20 +2481,27 @@ void Macbeth_ActorDoodad_Draw(Actor* actor) { gDPSetTextureFilter(gMasterDisp++, G_TF_BILERP); } break; - case OBJ_ACTOR_206: - Animation_GetFrameData(&D_MA_601EAB0, 0, spD0); - Animation_DrawSkeleton(1, D_MA_601EBBC, spD0, Macbeth_801AC5AC, NULL, actor, &gIdentityMatrix); + + case OBJ_ACTOR_MA_TRAIN_CAR_1: + Animation_GetFrameData(&D_MA_601EAB0, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_601EBBC, frameTable, Macbeth_MaTrainCar1_OverrideLimbDraw, NULL, this, + &gIdentityMatrix); break; - case OBJ_ACTOR_205: - Matrix_Translate(gGfxMatrix, actor->fwork[3], 0.0f, 0.0f, MTXF_APPLY); + + case OBJ_ACTOR_MA_LOCOMOTIVE: + Matrix_Translate(gGfxMatrix, this->fwork[3], 0.0f, 0.0f, MTXF_APPLY); + if (D_i5_801BE320[21] == 0) { - Animation_GetFrameData(&D_MA_6010220, 0, spD0); + Animation_GetFrameData(&D_MA_6010220, 0, frameTable); } else if (D_i5_801BE320[21] == 1) { - Animation_GetFrameData(&D_MA_600FEC4, D_i5_801BE320[22], spD0); + Animation_GetFrameData(&D_MA_600FEC4, D_i5_801BE320[22], frameTable); } else { - Animation_GetFrameData(&D_MA_6010144, D_i5_801BE320[22], spD0); + Animation_GetFrameData(&D_MA_6010144, D_i5_801BE320[22], frameTable); } - Animation_DrawSkeleton(1, D_MA_601042C, spD0, Macbeth_801A0EB8, Macbeth_801A1268, actor, &gIdentityMatrix); + + Animation_DrawSkeleton(1, D_MA_601042C, frameTable, Macbeth_MaLocomotive_OverrideLimbDraw, + Macbeth_MaLocomotive_PostLimbDraw, this, &gIdentityMatrix); + if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) { RCP_SetupDL(&gMasterDisp, SETUPDL_29); gSPClearGeometryMode(gMasterDisp++, G_TEXTURE_GEN); @@ -2211,52 +2509,60 @@ void Macbeth_ActorDoodad_Draw(Actor* actor) { } break; } + Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, actor->fwork[21], actor->fwork[6] + 65.0f, -420.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[22] * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, actor->fwork[27] * M_DTOR, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, this->fwork[21], this->fwork[6] + 65.0f, -420.0f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[22] * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, this->fwork[27] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - Matrix_Scale(gGfxMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); - if ((gPlayer[0].trueZpos - actor->obj.pos.z) > 3000.0f) { + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); + + if ((gPlayer[0].trueZpos - this->obj.pos.z) > 3000.0f) { gSPDisplayList(gMasterDisp++, D_MA_6027D40); - } else if (actor->vel.z > -2.0f) { + } else if (this->vel.z > -2.0f) { gSPDisplayList(gMasterDisp++, D_MA_60227F0); } else { gSPDisplayList(gMasterDisp++, D_MA_60239D0); } + Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, actor->fwork[23], actor->fwork[7] + 65.0f, 420.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[24] * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, actor->fwork[28] * M_DTOR, MTXF_APPLY); - Matrix_Scale(gGfxMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, this->fwork[23], this->fwork[7] + 65.0f, 420.0f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[24] * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, this->fwork[28] * M_DTOR, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL(&gMasterDisp, SETUPDL_29); - if ((gPlayer[0].trueZpos - actor->obj.pos.z) > 3000.0f) { + + if ((gPlayer[0].trueZpos - this->obj.pos.z) > 3000.0f) { gSPDisplayList(gMasterDisp++, D_MA_6027D40); - } else if (actor->vel.z > -2.0f) { + } else if (this->vel.z > -2.0f) { gSPDisplayList(gMasterDisp++, D_MA_60227F0); } else { gSPDisplayList(gMasterDisp++, D_MA_60239D0); } + Matrix_Pop(&gGfxMatrix); - id = actor->obj.id; - if ((id == OBJ_ACTOR_209) || (id == OBJ_ACTOR_211)) { - if (actor->iwork[13] != 2) { + + id = this->obj.id; + if ((id == OBJ_ACTOR_MA_TRAIN_CAR_3) || (id == OBJ_ACTOR_MA_TRAIN_CAR_5)) { + if (this->iwork[13] != 2) { Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, actor->fwork[21], actor->fwork[6] + 10.0f, -420.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[26] * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, actor->fwork[29] * M_DTOR, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, this->fwork[21], this->fwork[6] + 10.0f, -420.0f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[26] * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, this->fwork[29] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((actor->iwork[7] % 2) != 0) { + + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[7] > 0) { - actor->iwork[7]--; + if (this->iwork[7] > 0) { + this->iwork[7]--; } - if (actor->iwork[13] == 0) { + + if (this->iwork[13] == 0) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_MA_6004440); } else { @@ -2268,20 +2574,23 @@ void Macbeth_ActorDoodad_Draw(Actor* actor) { RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); Matrix_Pop(&gGfxMatrix); } - if (actor->iwork[21] != 2) { + + if (this->iwork[21] != 2) { Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, actor->fwork[23], actor->fwork[7] + 10.0f, 420.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[26] * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, actor->fwork[29] * M_DTOR, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, this->fwork[23], this->fwork[7] + 10.0f, 420.0f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[26] * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, this->fwork[29] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((actor->iwork[9] % 2) != 0) { + + if ((this->iwork[9] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[9] > 0) { - actor->iwork[9]--; + if (this->iwork[9] > 0) { + this->iwork[9]--; } - if (actor->iwork[21] == 0) { + + if (this->iwork[21] == 0) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_MA_6004440); } else { @@ -2296,51 +2605,58 @@ void Macbeth_ActorDoodad_Draw(Actor* actor) { } } -// Scenery 92 to 105 -void Macbeth_SceneryDoodad_Draw(Scenery* scenery) { - Vec3f sp78[50]; +void Macbeth_TrainTrack_Draw(Scenery* this) { + Vec3f frameTable[50]; RCP_SetupDL(&gMasterDisp, SETUPDL_57); - switch (scenery->obj.id) { - case OBJ_SCENERY_94: - case OBJ_SCENERY_97: + + switch (this->obj.id) { + case OBJ_SCENERY_MA_TRAIN_TRACK_3: + case OBJ_SCENERY_MA_TRAIN_TRACK_6: if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) && - ((gPlayer[0].trueZpos - scenery->obj.pos.z) < -2500.0f)) { - Object_Kill(&scenery->obj, scenery->sfxSource); + ((gPlayer[0].trueZpos - this->obj.pos.z) < -2500.0f)) { + Object_Kill(&this->obj, this->sfxSource); } gSPDisplayList(gMasterDisp++, D_MA_6026860); break; - case OBJ_SCENERY_95: - case OBJ_SCENERY_98: + + case OBJ_SCENERY_MA_TRAIN_TRACK_4: + case OBJ_SCENERY_MA_TRAIN_TRACK_7: if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE) && - ((gPlayer[0].trueZpos - scenery->obj.pos.z) < -2500.0f)) { - Object_Kill(&scenery->obj, scenery->sfxSource); + ((gPlayer[0].trueZpos - this->obj.pos.z) < -2500.0f)) { + Object_Kill(&this->obj, this->sfxSource); } gSPDisplayList(gMasterDisp++, D_MA_602FBF0); break; - case OBJ_SCENERY_96: - case OBJ_SCENERY_99: + + case OBJ_SCENERY_MA_TRAIN_TRACK_5: + case OBJ_SCENERY_MA_TRAIN_TRACK_8: gSPDisplayList(gMasterDisp++, D_MA_6022610); break; - case OBJ_SCENERY_100: - case OBJ_SCENERY_102: + + case OBJ_SCENERY_MA_TRAIN_TRACK_9: + case OBJ_SCENERY_MA_TRAIN_TRACK_11: gSPDisplayList(gMasterDisp++, D_MA_60309D0); break; - case OBJ_SCENERY_101: - case OBJ_SCENERY_103: + + case OBJ_SCENERY_MA_TRAIN_TRACK_10: + case OBJ_SCENERY_MA_TRAIN_TRACK_12: gSPDisplayList(gMasterDisp++, D_MA_6030750); break; - case OBJ_SCENERY_105: + + case OBJ_SCENERY_MA_TRAIN_TRACK_13: RCP_SetupDL(&gMasterDisp, SETUPDL_29); gSPDisplayList(gMasterDisp++, D_MA_602D380); break; - case OBJ_SCENERY_104: + + case OBJ_SCENERY_MA_SWITCH_TRACK: Matrix_Push(&gGfxMatrix); - Animation_GetFrameData(&D_MA_6025CA0, 0, sp78); - Animation_DrawSkeleton(1, D_MA_6025DAC, sp78, Macbeth_801A0DD8, Macbeth_801A0E2C, scenery, + Animation_GetFrameData(&D_MA_6025CA0, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_6025DAC, frameTable, Macbeth_801A0DD8, Macbeth_801A0E2C, this, &gIdentityMatrix); Matrix_Pop(&gGfxMatrix); - if ((scenery->state == 1) && (scenery->timer_4C <= 0)) { + + if ((this->state == 1) && (this->timer_4C <= 0)) { Matrix_Push(&gGfxMatrix); RCP_SetupDL_49(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); @@ -2348,7 +2664,7 @@ void Macbeth_SceneryDoodad_Draw(Scenery* scenery) { Matrix_Translate(gGfxMatrix, D_i5_801BE688[0].x, D_i5_801BE688[0].y + 50.0f, D_i5_801BE688[0].z + 100.0f, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, (D_PI / 2), MTXF_APPLY); - Matrix_Scale(gGfxMatrix, scenery->vel.z, scenery->vel.z / 2, scenery->vel.z, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->vel.z, this->vel.z / 2, this->vel.z, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); Matrix_Pop(&gGfxMatrix); @@ -2356,12 +2672,12 @@ void Macbeth_SceneryDoodad_Draw(Scenery* scenery) { Matrix_Translate(gGfxMatrix, D_i5_801BE688[1].x, D_i5_801BE688[1].y + 50.0f, D_i5_801BE688[1].z + 100.0f, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, (D_PI / 2), MTXF_APPLY); - Matrix_Scale(gGfxMatrix, scenery->vel.z, scenery->vel.z / 2, scenery->vel.z, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->vel.z, this->vel.z / 2, this->vel.z, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); RCP_SetupDL(&gMasterDisp, SETUPDL_29); Matrix_Pop(&gGfxMatrix); - } else if (scenery->state == 2) { + } else if (this->state == 2) { Matrix_Push(&gGfxMatrix); RCP_SetupDL_49(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); @@ -2369,12 +2685,13 @@ void Macbeth_SceneryDoodad_Draw(Scenery* scenery) { Matrix_Translate(gGfxMatrix, D_i5_801BE688[1].x - 50.0f, D_i5_801BE688[1].y + 50.0f, D_i5_801BE688[1].z + 50.0f, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, (D_PI / 2), MTXF_APPLY); - Matrix_Scale(gGfxMatrix, scenery->vel.z, scenery->vel.z / 2, scenery->vel.z, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->vel.z, this->vel.z / 2, this->vel.z, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); RCP_SetupDL(&gMasterDisp, SETUPDL_29); Matrix_Pop(&gGfxMatrix); } + if (D_MA_801BE2F0[5] != 0) { Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -1800.0f, MTXF_APPLY); @@ -2390,17 +2707,19 @@ void Macbeth_SceneryDoodad_Draw(Scenery* scenery) { Matrix_Pop(&gGfxMatrix); } break; - case OBJ_SCENERY_92: + + case OBJ_SCENERY_MA_TRAIN_TRACK_1: gSPDisplayList(gMasterDisp++, D_MA_60014A0); break; - case OBJ_SCENERY_93: + + case OBJ_SCENERY_MA_TRAIN_TRACK_2: gSPDisplayList(gMasterDisp++, D_MA_6001180); break; } RCP_SetupDL(&gMasterDisp, SETUPDL_29); } -void Macbeth_Scenery61_Draw(Scenery* scenery) { +void Macbeth_MaTower_Draw(Scenery* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_57); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_MA_60253E0); @@ -2410,133 +2729,140 @@ void Macbeth_Scenery61_Draw(Scenery* scenery) { } // Scenery 77 to 82, and 84 to 91 -void Macbeth_SceneryDoodad2_Draw(Scenery* scenery) { +void Macbeth_IndicatorSign_Draw(Scenery* this) { if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) { - Object_Kill(&scenery->obj, scenery->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } + RCP_SetupDL(&gMasterDisp, SETUPDL_57); - switch (scenery->obj.id) { - case OBJ_SCENERY_77: + + switch (this->obj.id) { + case OBJ_SCENERY_MA_INDICATOR_SIGN: gSPDisplayList(gMasterDisp++, D_MA_60066A0); break; - case OBJ_SCENERY_78: + case OBJ_SCENERY_MA_DISTANCE_SIGN_1: gSPDisplayList(gMasterDisp++, D_MA_6007430); break; - case OBJ_SCENERY_79: + case OBJ_SCENERY_MA_DISTANCE_SIGN_2: gSPDisplayList(gMasterDisp++, D_MA_6007360); break; - case OBJ_SCENERY_80: + case OBJ_SCENERY_MA_DISTANCE_SIGN_3: gSPDisplayList(gMasterDisp++, D_MA_6007290); break; - case OBJ_SCENERY_81: + case OBJ_SCENERY_MA_DISTANCE_SIGN_4: gSPDisplayList(gMasterDisp++, D_MA_60071C0); break; - case OBJ_SCENERY_82: + case OBJ_SCENERY_MA_DISTANCE_SIGN_5: gSPDisplayList(gMasterDisp++, D_MA_6007500); break; - case OBJ_SCENERY_84: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_1: gSPDisplayList(gMasterDisp++, D_MA_600AD50); break; - case OBJ_SCENERY_85: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_2: gSPDisplayList(gMasterDisp++, D_MA_600AA70); break; - case OBJ_SCENERY_86: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_3: gSPDisplayList(gMasterDisp++, D_MA_6003070); break; - case OBJ_SCENERY_87: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_4: gSPDisplayList(gMasterDisp++, D_MA_600A7D0); break; - case OBJ_SCENERY_88: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_5: gSPDisplayList(gMasterDisp++, D_MA_600A4D0); break; - case OBJ_SCENERY_89: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_6: gSPDisplayList(gMasterDisp++, D_MA_600A1F0); break; - case OBJ_SCENERY_90: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_7: gSPDisplayList(gMasterDisp++, D_MA_6009F10); break; - case OBJ_SCENERY_91: + case OBJ_SCENERY_MA_RAILROAD_SWITCH_8: gSPDisplayList(gMasterDisp++, D_MA_6009C50); break; } RCP_SetupDL(&gMasterDisp, SETUPDL_29); } -void Macbeth_Scenery83_Update(Scenery* scenery) { +void Macbeth_MaTrainStopBlock_Update(MaTrainStopBlock* this) { s16 i; - switch (scenery->state) { + switch (this->state) { case 0: - if ((D_i5_801BE312 != 0) && (gActors[D_i5_801BE314].obj.pos.z - 900.0f < scenery->obj.pos.z)) { - scenery->state = 1; + if ((D_i5_801BE312 != 0) && (gActors[D_i5_801BE314].obj.pos.z - 900.0f < this->obj.pos.z)) { + this->state = 1; } break; + case 1: - Effect_SpawnTimedSfxAtPos(&scenery->obj.pos, NA_SE_EN_EXPLOSION_M); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); + gControllerRumbleFlags[gMainController] = 1; gControllerRumbleTimers[gMainController] = 15; + for (i = 0; i < 6; i++) { - func_effect_8007D2C8(scenery->obj.pos.x + D_i5_801BE6A0[i].x, scenery->obj.pos.y + D_i5_801BE6A0[i].y, - scenery->obj.pos.z + D_i5_801BE6A0[i].z, 18.0f); - Macbeth_801AD624( - scenery->obj.pos.x + D_i5_801BE6A0[i].x, scenery->obj.pos.y + D_i5_801BE6A0[i].y, - scenery->obj.pos.z + D_i5_801BE6A0[i].z, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT(30.0f) + 30.0f, - RAND_FLOAT(-50.0f), scenery->obj.rot.x + D_i5_801BE6A0[i + 6].x, - scenery->obj.rot.y + D_i5_801BE6A0[i + 6].y, scenery->obj.rot.z + D_i5_801BE6A0[i + 6].z, + func_effect_8007D2C8(this->obj.pos.x + D_i5_801BE6A0[i].x, this->obj.pos.y + D_i5_801BE6A0[i].y, + this->obj.pos.z + D_i5_801BE6A0[i].z, 18.0f); + Macbeth_Effect357_Spawn1( + this->obj.pos.x + D_i5_801BE6A0[i].x, this->obj.pos.y + D_i5_801BE6A0[i].y, + this->obj.pos.z + D_i5_801BE6A0[i].z, RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT(30.0f) + 30.0f, + RAND_FLOAT(-50.0f), this->obj.rot.x + D_i5_801BE6A0[i + 6].x, + this->obj.rot.y + D_i5_801BE6A0[i + 6].y, this->obj.rot.z + D_i5_801BE6A0[i + 6].z, RAND_FLOAT_CENTERED(5.0f), RAND_FLOAT_CENTERED(5.0f), RAND_FLOAT_CENTERED(5.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), i + 12, 1.0f); } - Object_Kill(&scenery->obj, scenery->sfxSource); + Object_Kill(&this->obj, this->sfxSource); break; } } -void Macbeth_801A30B8(s32 limbIndex, Vec3f* rot, void* data) { - Vec3f sp24 = { 0.0f, 0.0f, 0.0f }; +void Macbeth_MaTrainStopBlock_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + Vec3f src = { 0.0f, 0.0f, 0.0f }; switch (limbIndex) { case 1: - Matrix_MultVec3f(gCalcMatrix, &sp24, &D_i5_801BE6A0[0]); + Matrix_MultVec3f(gCalcMatrix, &src, &D_i5_801BE6A0[0]); Matrix_GetYRPAngles(gCalcMatrix, &D_i5_801BE6E8[0]); break; case 2: - Matrix_MultVec3f(gCalcMatrix, &sp24, &D_i5_801BE6A0[1]); + Matrix_MultVec3f(gCalcMatrix, &src, &D_i5_801BE6A0[1]); Matrix_GetYRPAngles(gCalcMatrix, &D_i5_801BE6E8[1]); break; case 3: - Matrix_MultVec3f(gCalcMatrix, &sp24, &D_i5_801BE6A0[2]); + Matrix_MultVec3f(gCalcMatrix, &src, &D_i5_801BE6A0[2]); Matrix_GetYRPAngles(gCalcMatrix, &D_i5_801BE6E8[2]); break; case 4: - Matrix_MultVec3f(gCalcMatrix, &sp24, &D_i5_801BE6A0[3]); + Matrix_MultVec3f(gCalcMatrix, &src, &D_i5_801BE6A0[3]); Matrix_GetYRPAngles(gCalcMatrix, &D_i5_801BE6E8[3]); break; case 5: - Matrix_MultVec3f(gCalcMatrix, &sp24, &D_i5_801BE6A0[4]); + Matrix_MultVec3f(gCalcMatrix, &src, &D_i5_801BE6A0[4]); Matrix_GetYRPAngles(gCalcMatrix, &D_i5_801BE6E8[4]); break; case 11: - Matrix_MultVec3f(gCalcMatrix, &sp24, &D_i5_801BE6A0[5]); + Matrix_MultVec3f(gCalcMatrix, &src, &D_i5_801BE6A0[5]); Matrix_GetYRPAngles(gCalcMatrix, &D_i5_801BE6E8[5]); break; + default: break; } } -void Macbeth_Scenery83_Draw(Scenery* scenery) { - Vec3f sp38[50]; +void Macbeth_MaTrainStopBlock_Draw(MaTrainStopBlock* this) { + Vec3f frameTable[50]; RCP_SetupDL(&gMasterDisp, SETUPDL_29); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); - Animation_GetFrameData(&D_MA_600C4D0, 0, sp38); - Animation_DrawSkeleton(1, D_MA_600C65C, sp38, NULL, Macbeth_801A30B8, scenery, &gIdentityMatrix); + Animation_GetFrameData(&D_MA_600C4D0, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_600C65C, frameTable, NULL, Macbeth_MaTrainStopBlock_PostLimbDraw, this, + &gIdentityMatrix); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); } bool Macbeth_801A3300(Player* player, f32 arg1, f32 arg2) { + s16 var_v1 = D_MA_801BE250[6]; s16 temp_a0; - s16 var_v1; f32 temp_ft4; f32 temp_fa0; f32 sp40; @@ -2547,7 +2873,6 @@ bool Macbeth_801A3300(Player* player, f32 arg1, f32 arg2) { f32 sp2C; s32 pad; - var_v1 = D_MA_801BE250[6]; while (true) { if (D_i5_801B8E50[var_v1].unk_10 == 0) { return true; @@ -2565,18 +2890,19 @@ bool Macbeth_801A3300(Player* player, f32 arg1, f32 arg2) { sp30 = D_i5_801B8E50[var_v1].unk_00; sp38 = D_i5_801B8E50[var_v1].unk_04; sp34 = D_i5_801B8E50[var_v1].unk_08; + if (var_v1 != D_MA_801BE250[6]) { D_MA_801BE250[7] = arg2; switch (D_i5_801B8E50[var_v1 - 1].unk_10) { - case OBJ_SCENERY_94: - case OBJ_SCENERY_100: - case OBJ_SCENERY_101: + case OBJ_SCENERY_MA_TRAIN_TRACK_3: + case OBJ_SCENERY_MA_TRAIN_TRACK_9: + case OBJ_SCENERY_MA_TRAIN_TRACK_10: D_MA_801BE250[8] = 0.0f; break; - case OBJ_SCENERY_95: + case OBJ_SCENERY_MA_TRAIN_TRACK_4: D_MA_801BE250[8] = -10.0f; break; - case OBJ_SCENERY_96: + case OBJ_SCENERY_MA_TRAIN_TRACK_5: D_MA_801BE250[8] = 10.0f; break; } @@ -2590,11 +2916,11 @@ bool Macbeth_801A3300(Player* player, f32 arg1, f32 arg2) { sp2C = 1.0f - ((sp30 - arg1) / (sp30 - temp_ft4)); - if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_96) || (temp_a0 == OBJ_SCENERY_98) || - (temp_a0 == OBJ_SCENERY_99)) { + if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_5) || + (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_8)) { temp_fv0_2 = fabsf((sp30 - temp_ft4) / 3.0f); if (sp2C < 0.3333333f) { - if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_98)) { + if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { D_MA_801BE250[9] = (((sp38 - temp_fa0) * sp2C) + temp_fa0) - (52.160667f * (1.0f - (((temp_ft4 - temp_fv0_2) - arg1) / ((temp_ft4 - temp_fv0_2) - temp_ft4)))); @@ -2604,12 +2930,12 @@ bool Macbeth_801A3300(Player* player, f32 arg1, f32 arg2) { (52.160667f * (1.0f - (((temp_ft4 - temp_fv0_2) - arg1) / ((temp_ft4 - temp_fv0_2) - temp_ft4)))); } } else if (sp2C < 0.666666f) { - if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_98)) { + if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { D_MA_801BE250[9] = (((sp38 - temp_fa0) * sp2C) + temp_fa0) - 52.160667f; } else { D_MA_801BE250[9] = (((sp38 - temp_fa0) * sp2C) + temp_fa0 + 52.160667f); } - } else if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_98)) { + } else if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { D_MA_801BE250[9] = (((sp38 - temp_fa0) * sp2C) + temp_fa0) - (52.160667f * (1.0f - (1.0f - ((sp30 - arg1) / (sp30 - (temp_ft4 - (temp_fv0_2 * 2))))))); @@ -2621,22 +2947,25 @@ bool Macbeth_801A3300(Player* player, f32 arg1, f32 arg2) { } else { D_MA_801BE250[9] = ((sp38 - temp_fa0) * sp2C) + temp_fa0; } + D_MA_801BE250[2] = (((sp34 - sp40) * sp2C) + sp40); - if ((temp_a0 == 100) || (temp_a0 == OBJ_SCENERY_102)) { + + if ((temp_a0 == 100) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_11)) { Math_SmoothStepToF(&D_MA_801BE250[3], 3.0f, 0.05f, 1.0f, 0.0f); - } else if ((temp_a0 == OBJ_SCENERY_101) || (temp_a0 == OBJ_SCENERY_103)) { + } else if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_10) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_12)) { Math_SmoothStepToF(&D_MA_801BE250[3], -3.0f, 0.05f, 1.0f, 0.0f); } else { Math_SmoothStepToF(&D_MA_801BE250[3], 0.0f, 0.05f, 1.0f, 0.0f); } + D_MA_801BE250[4] = (D_MA_801BE250[8] * sp2C) + D_MA_801BE250[7]; return false; } bool Macbeth_801A3790(Player* player, f32 arg1, f32 arg2) { + s16 var_v1 = D_MA_801BE250[16]; s16 temp_a0; - s16 var_v1; f32 temp_ft4; f32 temp_fa0; f32 sp40; @@ -2647,7 +2976,6 @@ bool Macbeth_801A3790(Player* player, f32 arg1, f32 arg2) { f32 sp2C; s32 pad; - var_v1 = D_MA_801BE250[16]; while (true) { if (D_i5_801B9A80[var_v1].unk_10 == 0) { return true; @@ -2665,18 +2993,19 @@ bool Macbeth_801A3790(Player* player, f32 arg1, f32 arg2) { sp30 = D_i5_801B9A80[var_v1].unk_00; sp38 = D_i5_801B9A80[var_v1].unk_04; sp34 = D_i5_801B9A80[var_v1].unk_08; + if (var_v1 != D_MA_801BE250[16]) { D_MA_801BE250[17] = arg2; switch (D_i5_801B9A80[var_v1 - 1].unk_10) { - case OBJ_SCENERY_97: - case OBJ_SCENERY_100: - case OBJ_SCENERY_101: + case OBJ_SCENERY_MA_TRAIN_TRACK_6: + case OBJ_SCENERY_MA_TRAIN_TRACK_9: + case OBJ_SCENERY_MA_TRAIN_TRACK_10: D_MA_801BE250[18] = 0.0f; break; - case OBJ_SCENERY_98: + case OBJ_SCENERY_MA_TRAIN_TRACK_7: D_MA_801BE250[18] = -10.0f; break; - case OBJ_SCENERY_99: + case OBJ_SCENERY_MA_TRAIN_TRACK_8: D_MA_801BE250[18] = 10.0f; break; } @@ -2690,11 +3019,11 @@ bool Macbeth_801A3790(Player* player, f32 arg1, f32 arg2) { sp2C = 1.0f - ((sp30 - arg1) / (sp30 - temp_ft4)); - if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_96) || (temp_a0 == OBJ_SCENERY_98) || - (temp_a0 == OBJ_SCENERY_99)) { + if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_5) || + (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_8)) { temp_fv0_2 = fabsf((sp30 - temp_ft4) / 3.0f); if (sp2C < 0.3333333f) { - if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_98)) { + if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { D_MA_801BE250[19] = (((sp38 - temp_fa0) * sp2C) + temp_fa0) - (52.160667f * (1.0f - (((temp_ft4 - temp_fv0_2) - arg1) / ((temp_ft4 - temp_fv0_2) - temp_ft4)))); @@ -2704,12 +3033,12 @@ bool Macbeth_801A3790(Player* player, f32 arg1, f32 arg2) { (52.160667f * (1.0f - (((temp_ft4 - temp_fv0_2) - arg1) / ((temp_ft4 - temp_fv0_2) - temp_ft4)))); } } else if (sp2C < 0.666666f) { - if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_98)) { + if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { D_MA_801BE250[19] = (((sp38 - temp_fa0) * sp2C) + temp_fa0) - 52.160667f; } else { D_MA_801BE250[19] = (((sp38 - temp_fa0) * sp2C) + temp_fa0 + 52.160667f); } - } else if ((temp_a0 == OBJ_SCENERY_95) || (temp_a0 == OBJ_SCENERY_98)) { + } else if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_4) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_7)) { D_MA_801BE250[19] = (((sp38 - temp_fa0) * sp2C) + temp_fa0) - (52.160667f * (1.0f - (1.0f - ((sp30 - arg1) / (sp30 - (temp_ft4 - (temp_fv0_2 * 2))))))); @@ -2721,14 +3050,17 @@ bool Macbeth_801A3790(Player* player, f32 arg1, f32 arg2) { } else { D_MA_801BE250[19] = ((sp38 - temp_fa0) * sp2C) + temp_fa0; } + D_MA_801BE250[12] = (((sp34 - sp40) * sp2C) + sp40); - if ((temp_a0 == OBJ_SCENERY_100) || (temp_a0 == OBJ_SCENERY_102)) { + + if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_9) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_11)) { Math_SmoothStepToF(&D_MA_801BE250[13], 2.0f, 0.05f, 1.0f, 0.0f); - } else if ((temp_a0 == OBJ_SCENERY_101) || (temp_a0 == OBJ_SCENERY_103)) { + } else if ((temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_10) || (temp_a0 == OBJ_SCENERY_MA_TRAIN_TRACK_12)) { Math_SmoothStepToF(&D_MA_801BE250[13], -2.0f, 0.05f, 1.0f, 0.0f); } else { Math_SmoothStepToF(&D_MA_801BE250[13], 0.0f, 0.05f, 1.0f, 0.0f); } + D_MA_801BE250[14] = (D_MA_801BE250[18] * sp2C) + D_MA_801BE250[17]; return false; @@ -2757,12 +3089,16 @@ bool Macbeth_801A3C20(f32 arg0) { break; } } + if (D_i5_801BA138[var_a0].unk_10 == 0) { return false; } + temp_fv0_2 = 1.0f - ((sp2C - arg0) / (sp2C - sp38)); + D_MA_801BE250[21] = (((sp34 - sp40) * temp_fv0_2) + sp40); D_MA_801BE250[22] = (((sp30 - sp3C) * temp_fv0_2) + sp3C); + if (sp30 < sp3C) { Math_SmoothStepToF(&D_MA_801BE250[23], -10.0f, 0.05f, 1.0f, 0); } else if (sp3C < sp30) { @@ -2773,70 +3109,77 @@ bool Macbeth_801A3C20(f32 arg0) { return true; } -void Macbeth_801A3E70(Actor* actor) { - actor->state = 0; - actor->unk_046 = D_i5_801BA1D8; +void Macbeth_MaMaRailroadSwitch_Init(MaRailroadSwitch* this) { + this->state = 0; + this->unk_046 = D_i5_801BA1D8; D_i5_801BA1D8++; } -void Macbeth_Actor214_Update(Actor* actor) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -500.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_MaRailroadSwitch_Update(MaRailroadSwitch* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -500.0f) { + Object_Kill(&this->obj, this->sfxSource); } - switch (actor->state) { + switch (this->state) { case 0: - if ((actor->dmgType != DMG_NONE) && (actor->dmgType != DMG_COLLISION)) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_ON, actor->sfxSource, 0); - actor->state = 1; + if ((this->dmgType != DMG_NONE) && (this->dmgType != DMG_COLLISION)) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_ON, this->sfxSource, 0); + this->state = 1; } break; + case 1: - Math_SmoothStepToF(&actor->fwork[1], -181.0f, 0.6f, 20.0f, 0.0f); - if (actor->fwork[1] <= -180.0f) { - AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_UP, actor->sfxSource, 0); - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603648C); - actor->iwork[0] = 2; - actor->state = 2; + Math_SmoothStepToF(&this->fwork[1], -181.0f, 0.6f, 20.0f, 0.0f); + if (this->fwork[1] <= -180.0f) { + AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_UP, this->sfxSource, 0); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603648C); + this->iwork[0] = 2; + this->state = 2; } break; + case 2: - if (actor->iwork[0] <= 0) { - Math_SmoothStepToF(&actor->fwork[2], 41.0f, 0.6f, 8.0f, 0.0f); - if (actor->fwork[2] >= 40.0f) { - actor->state = 3; - D_i5_801BE308[actor->unk_046] = 1; + if (this->iwork[0] <= 0) { + Math_SmoothStepToF(&this->fwork[2], 41.0f, 0.6f, 8.0f, 0.0f); + if (this->fwork[2] >= 40.0f) { + this->state = 3; + D_i5_801BE308[this->unk_046] = 1; } } else { - actor->iwork[0]--; + this->iwork[0]--; } break; + case 3: break; } - if (actor->dmgType != DMG_NONE) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; + + if (this->dmgType != DMG_NONE) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); + this->dmgType = DMG_NONE; } - Math_SmoothStepToF(&actor->fwork[0], 30.0f, 0.4f, 10.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[4], 30.0f, 0.4f, 10.0f, 0.0f); - if (actor->fwork[0] < 31.0f) { - if (actor->state >= 3) { - AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_GRN, actor->sfxSource, 0); + + Math_SmoothStepToF(&this->fwork[0], 30.0f, 0.4f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 0.4f, 10.0f, 0.0f); + + if (this->fwork[0] < 31.0f) { + if (this->state >= 3) { + AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_GRN, this->sfxSource, 0); } else { - AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_RED, actor->sfxSource, 0); + AUDIO_PLAY_SFX(NA_SE_OB_MA_SWITCH_RED, this->sfxSource, 0); } - actor->fwork[0] = 255.0f; - actor->fwork[4] = 170.0f; + this->fwork[0] = 255.0f; + this->fwork[4] = 170.0f; } } -bool Macbeth_801A41B0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Macbeth_MaRailroadSwitch_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + MaRailroadSwitch* actor = (MaRailroadSwitch*) thisx; RCP_SetupDL(&gMasterDisp, SETUPDL_29); gDPSetTextureFilter(gMasterDisp++, G_TF_BILERP); + if (limbIndex == 2) { RCP_SetupDL(&gMasterDisp, SETUPDL_34); gDPSetTextureFilter(gMasterDisp++, G_TF_POINT); @@ -2850,152 +3193,158 @@ bool Macbeth_801A41B0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return false; } -void Macbeth_Actor214_Draw(Actor* actor) { - Vec3f sp50[50]; +void Macbeth_MaRailroadSwitch_Draw(MaRailroadSwitch* this) { + Vec3f frameTable[50]; Matrix_Push(&gGfxMatrix); - Animation_GetFrameData(&D_MA_602FEB4, 0, sp50); - Animation_DrawSkeleton(1, D_MA_602FFA0, sp50, Macbeth_801A41B0, NULL, actor, &gIdentityMatrix); + Animation_GetFrameData(&D_MA_602FEB4, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_602FFA0, frameTable, Macbeth_MaRailroadSwitch_OverrideLimbDraw, NULL, this, + &gIdentityMatrix); Matrix_Pop(&gGfxMatrix); RCP_SetupDL(&gMasterDisp, SETUPDL_29); Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, actor->fwork[2] + 204.0f, 0.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[1] * M_DTOR, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, 0.0f, this->fwork[2] + 204.0f, 0.0f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[1] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_MA_602FFC0); Matrix_Pop(&gGfxMatrix); RCP_SetupDL(&gMasterDisp, SETUPDL_34); gDPSetTextureFilter(gMasterDisp++, G_TF_POINT); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, actor->fwork[0], 0, 0, 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, this->fwork[0], 0, 0, 255); Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, actor->fwork[2] + 204.0f, 0.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[1] * M_DTOR, MTXF_APPLY); + Matrix_Translate(gGfxMatrix, 0.0f, this->fwork[2] + 204.0f, 0.0f, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[1] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_MA_602F380); gDPSetTextureFilter(gMasterDisp++, G_TF_BILERP); Matrix_Pop(&gGfxMatrix); } -void Macbeth_801A4660(Actor* actor) { - actor->gravity = 0; - actor->unk_04A = actor->unk_046; - actor->health = 60; - if (actor->fwork[0] < 0.0f) { - actor->unk_048 = 0; +void Macbeth_MaBoulder_Init(MaBoulder* this) { + this->gravity = 0; + this->unk_04A = this->unk_046; + this->health = 60; + if (this->fwork[0] < 0.0f) { + this->unk_048 = 0; } else { - actor->unk_048 = 1; + this->unk_048 = 1; } } -void Macbeth_Actor215_Update(Actor* actor) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -500.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_MaBoulder_Update(MaBoulder* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -500.0f) { + Object_Kill(&this->obj, this->sfxSource); } - switch (actor->state) { + switch (this->state) { case 0: - if (actor->timer_0BC == 0) { - Math_SmoothStepToF(&actor->vel.x, actor->fwork[0], 0.5f, 3.0f, 0.0f); - Math_SmoothStepToF(&actor->gravity, 5.0f, 0.08f, 1.0f, 0.0f); - if (actor->obj.pos.y < 80.0f) { - if (actor->unk_046 != 0) { - AUDIO_PLAY_SFX(NA_SE_OB_ROCK_BOUND, actor->sfxSource, 0); - actor->obj.pos.y = 80.0f; - if (actor->vel.y < 0) { - actor->vel.y = -actor->vel.y * (actor->unk_046 * 0.07f); + if (this->timer_0BC == 0) { + Math_SmoothStepToF(&this->vel.x, this->fwork[0], 0.5f, 3.0f, 0.0f); + Math_SmoothStepToF(&this->gravity, 5.0f, 0.08f, 1.0f, 0.0f); + + if (this->obj.pos.y < 80.0f) { + if (this->unk_046 != 0) { + AUDIO_PLAY_SFX(NA_SE_OB_ROCK_BOUND, this->sfxSource, 0); + this->obj.pos.y = 80.0f; + if (this->vel.y < 0) { + this->vel.y = -this->vel.y * (this->unk_046 * 0.07f); } - actor->fwork[0] /= 1.2f + RAND_FLOAT(1.0f) / 2; - actor->unk_046--; - actor->vel.z /= 1.5f; - if (actor->unk_046 == 0) { - actor->timer_0BE = RAND_INT(30.0f); + this->fwork[0] /= 1.2f + RAND_FLOAT(1.0f) / 2; + this->unk_046--; + this->vel.z /= 1.5f; + if (this->unk_046 == 0) { + this->timer_0BE = RAND_INT(30.0f); } } else { - if (actor->timer_0BE <= 0) { - actor->fwork[0] = 0; - actor->vel.x = 0; + if (this->timer_0BE <= 0) { + this->fwork[0] = 0; + this->vel.x = 0; } - actor->vel.y = 0; - actor->vel.z = 0; + this->vel.y = 0; + this->vel.z = 0; } } - if (actor->unk_048 != 0) { - actor->obj.rot.z -= 0.5f * actor->vel.x; + + if (this->unk_048 != 0) { + this->obj.rot.z -= 0.5f * this->vel.x; } else { - actor->obj.rot.z -= 0.5f * actor->vel.x; + this->obj.rot.z -= 0.5f * this->vel.x; } - if (actor->unk_046 != actor->unk_04A) { - actor->obj.rot.x = actor->obj.rot.x + (0.1 * actor->vel.z); + + if (this->unk_046 != this->unk_04A) { + this->obj.rot.x = this->obj.rot.x + (0.1 * this->vel.z); } } - if (actor->unk_046 == 7) { - if (actor->unk_048 != 0) { - actor->obj.rot.z -= 1.0f; + + if (this->unk_046 == 7) { + if (this->unk_048 != 0) { + this->obj.rot.z -= 1.0f; } else { - actor->obj.rot.z += 1.0f; + this->obj.rot.z += 1.0f; } } - Macbeth_801A49B8(actor); + + Macbeth_MaBoulder_HandleDamage(this); break; + case 1: - Macbeth_801A49B8(actor); + Macbeth_MaBoulder_HandleDamage(this); break; + case 2: - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - Object_Kill(&actor->obj, actor->sfxSource); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + Object_Kill(&this->obj, this->sfxSource); break; } } -void Macbeth_801A49B8(Actor* actor) { - if (actor->dmgType != DMG_NONE) { - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_M, actor->sfxSource, 0); - actor->timer_0C6 = 15; - actor->health -= actor->damage; - if (actor->health <= 0) { - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_M); +void Macbeth_MaBoulder_HandleDamage(MaBoulder* this) { + if (this->dmgType != DMG_NONE) { + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_M, this->sfxSource, 0); + this->timer_0C6 = 15; + this->health -= this->damage; + if (this->health <= 0) { + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); gHitCount++; - actor->state = 2; + this->state = 2; } - actor->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } } -void Macbeth_Actor215_Draw(Actor* actor) { - if (actor->state < 2) { - if (actor->scale != 1.0f) { - Matrix_Scale(gGfxMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); +void Macbeth_MaBoulder_Draw(MaBoulder* this) { + if (this->state < 2) { + if (this->scale != 1.0f) { + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); } gSPDisplayList(gMasterDisp++, D_MA_601A2B0); } } -void Macbeth_801A4AF8(Actor* actor) { - actor->fwork[1] = 10.0f; - actor->fwork[6] = -100.0f; - D_i5_801BE318 = actor->index; +void Macbeth_MaRailwaySignal_Init(MaRailwaySignal* this) { + this->fwork[1] = 10.0f; + this->fwork[6] = -100.0f; + D_i5_801BE318 = this->index; } -void Macbeth_Actor223_Update(Actor* actor) { +void Macbeth_MaRailwaySignal_Update(MaRailwaySignal* this) { s32 pad[2]; s32 i; ObjectInit* objInit; - u8 var_s0; + u8 var_s0 = 0; u8 j; - var_s0 = 0; - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -700.0f) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -700.0f) { if (D_MA_801BE2F0[5] == 0) { Radio_PlayMessage(gMsg_ID_17170, RCID_PEPPY); } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } - switch (actor->state) { + switch (this->state) { case 0: - for (j = 0; j < 8; j++) { if (D_i5_801BE308[j] != 0) { var_s0++; @@ -3003,39 +3352,44 @@ void Macbeth_Actor223_Update(Actor* actor) { } if (var_s0 >= 8) { Radio_PlayMessage(gMsg_ID_17150, RCID_PEPPY); - actor->state = 1; + this->state = 1; } break; + case 1: - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < 2000.0f) { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6036520); - actor->state = 2; + if ((gPlayer[0].trueZpos - this->obj.pos.z) < 2000.0f) { + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6036520); + this->state = 2; } break; + case 2: - Math_SmoothStepToF(&actor->fwork[2], -76.0f, 0.2f, 10.0f, 0.01f); - Math_SmoothStepToF(&actor->fwork[3], 76.0f, 0.2f, 10.0f, 0.01f); - Math_SmoothStepToF(&actor->fwork[6], 0.0f, 0.2f, 4.0f, 0.00001f); - if (actor->fwork[3] >= 75.0f) { - actor->state = 3; + Math_SmoothStepToF(&this->fwork[2], -76.0f, 0.2f, 10.0f, 0.01f); + Math_SmoothStepToF(&this->fwork[3], 76.0f, 0.2f, 10.0f, 0.01f); + Math_SmoothStepToF(&this->fwork[6], 0.0f, 0.2f, 4.0f, 0.00001f); + if (this->fwork[3] >= 75.0f) { + this->state = 3; } break; + case 3: - Math_SmoothStepToF(&actor->fwork[5], -75.0f, 0.2f, 10.0f, 0.00001f); - Math_SmoothStepToF(&actor->fwork[6], 1.0f, 0.2f, 4.0f, 0.01f); - if (actor->fwork[6] >= 0.0f) { - actor->state = 4; + Math_SmoothStepToF(&this->fwork[5], -75.0f, 0.2f, 10.0f, 0.00001f); + Math_SmoothStepToF(&this->fwork[6], 1.0f, 0.2f, 4.0f, 0.01f); + if (this->fwork[6] >= 0.0f) { + this->state = 4; } break; + case 4: - Math_SmoothStepToF(&actor->fwork[7], 31.0f, 0.2f, 2.0f, 0.01f); - if (actor->fwork[7] >= 30.0f) { - actor->state = 5; + Math_SmoothStepToF(&this->fwork[7], 31.0f, 0.2f, 2.0f, 0.01f); + if (this->fwork[7] >= 30.0f) { + this->state = 5; } break; + case 5: - if ((actor->dmgType != DMG_NONE) && (actor->dmgPart == 3)) { - actor->dmgType = DMG_NONE; + if ((this->dmgType != DMG_NONE) && (this->dmgPart == 3)) { + this->dmgType = DMG_NONE; D_MA_801BE2F0[5] = 1; gLevelObjects = SEGMENTED_TO_VIRTUAL(gLevelObjectInits[gCurrentLevel]); @@ -3048,48 +3402,55 @@ void Macbeth_Actor223_Update(Actor* actor) { gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE; gPlayer[0].csState = 0; gMissionStatus = MISSION_ACCOMPLISHED; - actor->timer_0BC = 5; - actor->state = 6; + this->timer_0BC = 5; + this->state = 6; Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, NA_SE_TANK_SLIDE); Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, NA_SE_TANK_BURNER_HALF); } break; + case 6: - if (actor->timer_0BC == 1) { - AUDIO_PLAY_SFX(NA_SE_OB_HEAVY_SWITCH, actor->sfxSource, 0); + if (this->timer_0BC == 1) { + AUDIO_PLAY_SFX(NA_SE_OB_HEAVY_SWITCH, this->sfxSource, 0); } - if (actor->timer_0BC == 0) { - Math_SmoothStepToF(&actor->fwork[7], -41.0f, 0.2f, 5.0f, 0.01f); - if (actor->fwork[7] <= -40.0f) { - actor->fwork[1] = 150.0f; + if (this->timer_0BC == 0) { + Math_SmoothStepToF(&this->fwork[7], -41.0f, 0.2f, 5.0f, 0.01f); + if (this->fwork[7] <= -40.0f) { + this->fwork[1] = 150.0f; Radio_PlayMessage(gMsg_ID_17160, RCID_PEPPY); - actor->timer_0BC = 30; - actor->state = 7; + this->timer_0BC = 30; + this->state = 7; } } break; + case 7: break; + default: break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } - Math_SmoothStepToF(&actor->fwork[0], 30, 0.4f, actor->fwork[1], 0.0f); - Math_SmoothStepToF(&actor->fwork[4], 30, 0.4f, actor->fwork[1], 0.0f); - if (actor->fwork[0] < 31.0f) { - actor->fwork[0] = 255.0f; - actor->fwork[4] = 170.0f; + + Math_SmoothStepToF(&this->fwork[0], 30, 0.4f, this->fwork[1], 0.0f); + Math_SmoothStepToF(&this->fwork[4], 30, 0.4f, this->fwork[1], 0.0f); + + if (this->fwork[0] < 31.0f) { + this->fwork[0] = 255.0f; + this->fwork[4] = 170.0f; } } -bool Macbeth_801A5124(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Macbeth_MaRailwaySignal_OverrideLimbDraw2(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + MaRailwaySignal* this = (MaRailwaySignal*) thisx; RCP_SetupDL(&gMasterDisp, SETUPDL_29); gDPSetTextureFilter(gMasterDisp++, G_TF_BILERP); + if ((limbIndex == 9) || (limbIndex == 10)) { RCP_SetupDL(&gMasterDisp, SETUPDL_57); } @@ -3097,42 +3458,44 @@ bool Macbeth_801A5124(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* RCP_SetupDL(&gMasterDisp, SETUPDL_34); gDPSetTextureFilter(gMasterDisp++, G_TF_POINT); if (D_i5_801BE308[limbIndex - 1] != 0) { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, actor->fwork[0], actor->fwork[4], 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, this->fwork[0], this->fwork[4], 255); } else { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, actor->fwork[0], 0, 0, 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, this->fwork[0], 0, 0, 255); } } if ((limbIndex == 1) || (limbIndex == 3) || (limbIndex == 5) || (limbIndex == 7) || (limbIndex == 9)) { - pos->x = actor->fwork[2] + pos->x; - pos->y = actor->fwork[5] + pos->y; + pos->x = this->fwork[2] + pos->x; + pos->y = this->fwork[5] + pos->y; } if ((limbIndex == 2) || (limbIndex == 4) || (limbIndex == 6) || (limbIndex == 8) || (limbIndex == 10)) { - pos->x = actor->fwork[3] + pos->x; - pos->y = actor->fwork[5] + pos->y; + pos->x = this->fwork[3] + pos->x; + pos->y = this->fwork[5] + pos->y; } return false; } -bool Macbeth_801A54AC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Macbeth_MaRailwaySignal_OverrideLimbDraw1(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + MaRailwaySignal* this = (MaRailwaySignal*) thisx; - pos->y = actor->fwork[6] + pos->y; + pos->y = this->fwork[6] + pos->y; if (limbIndex == 1) { - rot->x = actor->fwork[7] + rot->x; + rot->x = this->fwork[7] + rot->x; } return false; } -void Macbeth_Actor223_Draw(Actor* actor) { - Vec3f sp28[50]; +void Macbeth_MaRailwaySignal_Draw(MaRailwaySignal* this) { + Vec3f frameTable[50]; Matrix_Push(&gGfxMatrix); - Animation_GetFrameData(&D_MA_602F2E0, 0, sp28); - Animation_DrawSkeleton(1, D_MA_602F36C, sp28, Macbeth_801A54AC, NULL, actor, &gIdentityMatrix); + Animation_GetFrameData(&D_MA_602F2E0, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_602F36C, frameTable, Macbeth_MaRailwaySignal_OverrideLimbDraw1, NULL, this, + &gIdentityMatrix); Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); - Animation_GetFrameData(&D_MA_602F098, 0, sp28); - Animation_DrawSkeleton(1, D_MA_602F264, sp28, Macbeth_801A5124, NULL, actor, &gIdentityMatrix); + Animation_GetFrameData(&D_MA_602F098, 0, frameTable); + Animation_DrawSkeleton(1, D_MA_602F264, frameTable, Macbeth_MaRailwaySignal_OverrideLimbDraw2, NULL, this, + &gIdentityMatrix); Matrix_Pop(&gGfxMatrix); RCP_SetupDL(&gMasterDisp, SETUPDL_29); } @@ -3142,17 +3505,15 @@ s32 Macbeth_801A55D4(s32 arg0, Vec3f* arg1, Vec3f* arg2, s32 arg3) { Actor* actor; s32 i; - scenery = &gScenery[0]; - for (i = 0; i < ARRAY_COUNT(gScenery); i++, scenery++) { - if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id != OBJ_SCENERY_68) && + for (scenery = &gScenery[0], i = 0; i < ARRAY_COUNT(gScenery); i++, scenery++) { + if ((scenery->obj.status == OBJ_ACTIVE) && (scenery->obj.id != OBJ_SCENERY_MA_WALL_4) && (fabsf(arg1->x - scenery->obj.pos.x) < 2000.0f) && (fabsf(arg1->z - scenery->obj.pos.z) < 2000.0f) && (Object_CheckHitboxCollision(arg1, scenery->info.hitbox, &scenery->obj, 0.0f, 0.0f, 0.0f) != 0)) { return i + 10; } } - actor = &gActors[0]; - for (i = 0; i < ARRAY_COUNT(gActors); i++, actor++) { + for (actor = &gActors[0], i = 0; i < ARRAY_COUNT(gActors); i++, actor++) { if ((actor->obj.status >= OBJ_ACTIVE) && (fabsf(arg1->x - actor->obj.pos.x) < 1000.0f) && (fabsf(arg1->z - actor->obj.pos.z) < 1500.0f) && (arg0 != i) && (actor->info.unk_16 != 2) && (actor->timer_0C2 == 0) && (Object_CheckSingleHitbox(arg1, actor->info.hitbox, &actor->obj.pos) != 0)) { @@ -3167,239 +3528,254 @@ s32 Macbeth_801A55D4(s32 arg0, Vec3f* arg1, Vec3f* arg2, s32 arg3) { return 0; } -void Macbeth_Effect378_Update(Effect* effect) { +void Macbeth_Effect378_Update(Effect378* this) { u8 i; Vec3f sp50; Vec3f sp44; Vec3f sp38; - if ((gPlayer[0].trueZpos - effect->obj.pos.z) < -2000.0f) { - Object_Kill(&effect->obj, effect->sfxSource); + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -2000.0f) { + Object_Kill(&this->obj, this->sfxSource); } - effect->obj.rot.x = 0.0f; - effect->obj.rot.y = 0.0f; - effect->obj.rot.z = 0.0f; - if (effect->timer_50 == 96) { + + this->obj.rot.x = 0.0f; + this->obj.rot.y = 0.0f; + this->obj.rot.z = 0.0f; + + if (this->timer_50 == 96) { for (i = 0; i < 2; i++) { - func_effect_8007BC7C(effect->obj.pos.x, effect->obj.pos.y, effect->obj.pos.z, 6.0f); + Effect_Effect362_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 6.0f); } } - if ((fabsf(gPlayer[0].trueZpos - effect->obj.pos.z) < 50.0f) && - (fabsf(gPlayer[0].pos.x - effect->obj.pos.x) < 30.0f) && - (fabsf(gPlayer[0].pos.y - effect->obj.pos.y) < 30.0f)) { + + if ((fabsf(gPlayer[0].trueZpos - this->obj.pos.z) < 50.0f) && (fabsf(gPlayer[0].pos.x - this->obj.pos.x) < 30.0f) && + (fabsf(gPlayer[0].pos.y - this->obj.pos.y) < 30.0f)) { if ((gPlayer[0].barrelRollAlpha != 0) || (gPlayer[0].meteoWarpTimer != 0)) { sp50.x = 0.0f; sp50.y = 0.0f; sp50.z = 100.0f; Matrix_MultVec3f(gCalcMatrix, &sp50, &sp44); - effect->vel.x = sp44.x; - effect->vel.y = sp44.y; - effect->vel.z = sp44.z; - AUDIO_PLAY_SFX(NA_SE_ROLLING_REFLECT, effect->sfxSource, 4); + this->vel.x = sp44.x; + this->vel.y = sp44.y; + this->vel.z = sp44.z; + AUDIO_PLAY_SFX(NA_SE_ROLLING_REFLECT, this->sfxSource, 4); } if ((gPlayer[0].barrelRollAlpha == 0) && (gPlayer[0].mercyTimer == 0)) { - Player_ApplyDamage(&gPlayer[0], 0, effect->info.damage); + Player_ApplyDamage(&gPlayer[0], 0, this->info.damage); gPlayer[0].knockback.x = 20.0f; - if (effect->vel.x < 0.0f) { + if (this->vel.x < 0.0f) { gPlayer[0].knockback.x *= -1.0f; } - Object_Kill(&effect->obj, effect->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } } - if (effect->obj.pos.y < gGroundHeight) { - Macbeth_801ADCEC(effect->obj.pos.x, effect->obj.pos.y, effect->obj.pos.z, 999.9f, -10.0f, 5.0f); - Object_Kill(&effect->obj, effect->sfxSource); + if (this->obj.pos.y < gGroundHeight) { + Macbeth_MaBombDrop_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 999.9f, -10.0f, 5.0f); + Object_Kill(&this->obj, this->sfxSource); if (gGroundSurface != SURFACE_WATER) { - effect->obj.pos.y = gGroundHeight; + this->obj.pos.y = gGroundHeight; } } - sp38.x = effect->vel.x; - sp38.y = effect->vel.y; - sp38.z = effect->vel.z; - if (Macbeth_801A55D4(1000, &effect->obj.pos, &sp38, 0) != 0) { - Macbeth_801ADCEC(effect->obj.pos.x, effect->obj.pos.y, effect->obj.pos.z, 999.9f, -10.0f, 5.0f); - Object_Kill(&effect->obj, effect->sfxSource); + + sp38.x = this->vel.x; + sp38.y = this->vel.y; + sp38.z = this->vel.z; + + if (Macbeth_801A55D4(1000, &this->obj.pos, &sp38, 0) != 0) { + Macbeth_MaBombDrop_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 999.9f, -10.0f, 5.0f); + Object_Kill(&this->obj, this->sfxSource); } } -void Macbeth_Effect378_Draw(Effect* effect) { +void Macbeth_Effect378_Draw(Effect378* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_60); gSPDisplayList(gMasterDisp++, D_MA_601A840); RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void Macbeth_Effect380_Update(Effect380* effect) { - if ((gPlayer[0].trueZpos - effect->obj.pos.z) < -2000.0f) { - Object_Kill(&effect->obj, effect->sfxSource); +void Macbeth_Effect380_Update(Effect380* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -2000.0f) { + Object_Kill(&this->obj, this->sfxSource); } - effect->obj.rot.x = 20.0f; - if (effect->scale2 < 10.0f) { - effect->obj.rot.y = 180.0f; + + this->obj.rot.x = 20.0f; + if (this->scale2 < 10.0f) { + this->obj.rot.y = 180.0f; } else { - effect->obj.rot.y = 0.0f; + this->obj.rot.y = 0.0f; } - effect->obj.rot.z = 0.0f; - if ((fabsf(gPlayer[0].trueZpos - effect->obj.pos.z) < 100.0f) && - (fabsf(gPlayer[0].pos.x - effect->obj.pos.x) < 100.0f) && - (fabsf(gPlayer[0].pos.y - effect->obj.pos.y) < 30.0f) && (gPlayer[0].mercyTimer == 0)) { - Player_ApplyDamage(gPlayer, 0, effect->info.damage); + this->obj.rot.z = 0.0f; + + if ((fabsf(gPlayer[0].trueZpos - this->obj.pos.z) < 100.0f) && + (fabsf(gPlayer[0].pos.x - this->obj.pos.x) < 100.0f) && (fabsf(gPlayer[0].pos.y - this->obj.pos.y) < 30.0f) && + (gPlayer[0].mercyTimer == 0)) { + Player_ApplyDamage(gPlayer, 0, this->info.damage); gPlayer[0].knockback.x = 20.0f; - if (effect->vel.x < 0.0f) { + if (this->vel.x < 0.0f) { gPlayer[0].knockback.x *= -1.0f; } gPlayer[0].knockback.y = 20.0f; - if (effect->vel.y < 0.0f) { + if (this->vel.y < 0.0f) { gPlayer[0].knockback.y *= -1.0f; } - Object_Kill(&effect->obj, effect->sfxSource); - } - if (effect->obj.pos.y < (gGroundHeight - 100.0f)) { - Object_Kill(&effect->obj, effect->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } - if (effect->unk_44 < 235) { - effect->unk_44 += 20; + if (this->obj.pos.y < (gGroundHeight - 100.0f)) { + Object_Kill(&this->obj, this->sfxSource); + } + + if (this->unk_44 < 235) { + this->unk_44 += 20; } } -void Macbeth_Effect380_Draw(Effect* effect) { +void Macbeth_Effect380_Draw(Effect380* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 112, 255, 243, effect->unk_44); - gDPSetEnvColor(gMasterDisp++, 255, 255, 255, effect->unk_44); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 112, 255, 243, this->unk_44); + gDPSetEnvColor(gMasterDisp++, 255, 255, 255, this->unk_44); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_MA_6012A60); RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void Macbeth_801A5E2C(Actor* actor) { - actor->fwork[0] = actor->obj.pos.x; - actor->fwork[1] = actor->obj.pos.y; - actor->fwork[2] = actor->obj.rot.z; - actor->obj.rot.z = 0.0f; +void Macbeth_LockBars_Init(Actor* this) { + this->fwork[0] = this->obj.pos.x; + this->fwork[1] = this->obj.pos.y; + this->fwork[2] = this->obj.rot.z; + this->obj.rot.z = 0.0f; } -void Macbeth_Actor216_Update(Actor* actor) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -500.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_MaHorizontalLockBar_Update(MaHorizontalLockBar* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -500.0f) { + Object_Kill(&this->obj, this->sfxSource); } - if ((D_i5_801BA1E0 - actor->obj.pos.z) < -800.0f) { - if (actor->iwork[0] == 0) { - AUDIO_PLAY_SFX(NA_SE_OB_SIDE_GATE_CLOSE, actor->sfxSource, 0); - actor->iwork[0]++; + + if ((D_i5_801BA1E0 - this->obj.pos.z) < -800.0f) { + if (this->iwork[0] == 0) { + AUDIO_PLAY_SFX(NA_SE_OB_SIDE_GATE_CLOSE, this->sfxSource, 0); + this->iwork[0]++; } - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[0] + (actor->fwork[2] * 400.0f), 0.1f, 4.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[0] + (this->fwork[2] * 400.0f), 0.1f, 4.0f, 0.01f); } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } -void Macbeth_Actor216_Draw(Actor* actor) { - gSPDisplayList(gMasterDisp++, D_MA_60251A0); +void Macbeth_MaHorizontalLockBar_Draw(MaHorizontalLockBar* this) { + gSPDisplayList(gMasterDisp++, aMaHorizontalLockBarDL); } void Macbeth_801A5FC4(s32 arg0) { } -void Macbeth_Actor217_Update(Actor* actor) { - if (gPlayer[0].trueZpos - actor->obj.pos.z < -500.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_MaVerticalLockBar_Update(MaVerticalLockBar* this) { + if (gPlayer[0].trueZpos - this->obj.pos.z < -500.0f) { + Object_Kill(&this->obj, this->sfxSource); } - if (gPlayer[0].trueZpos - actor->obj.pos.z < actor->fwork[2]) { - if (actor->iwork[0] == 0) { - AUDIO_PLAY_SFX(NA_SE_OB_POST_UP, actor->sfxSource, 0); - actor->iwork[0]++; + if (gPlayer[0].trueZpos - this->obj.pos.z < this->fwork[2]) { + if (this->iwork[0] == 0) { + AUDIO_PLAY_SFX(NA_SE_OB_POST_UP, this->sfxSource, 0); + this->iwork[0]++; } - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[1] + 356.0f, 0.4f, 20.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[1] + 356.0f, 0.4f, 20.0f, 0.01f); } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } -void Macbeth_Actor217_Draw(Actor* actor) { - gSPDisplayList(gMasterDisp++, D_MA_6025850); +void Macbeth_MaVerticalLockBar_Draw(MaVerticalLockBar* this) { + gSPDisplayList(gMasterDisp++, aMaVerticalLockBarDL); } -void Macbeth_801A6134(Actor* actor) { - actor->health = 30; +void Macbeth_MaBarrier_Init(MaBarrier* this) { + this->health = 30; } -void Macbeth_Actor218_Update(Actor* actor) { +void Macbeth_MaBarrier_Update(MaBarrier* this) { s16 i; - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -500.0f) { - Object_Kill(&actor->obj, actor->sfxSource); + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -500.0f) { + Object_Kill(&this->obj, this->sfxSource); } - switch (actor->state) { + switch (this->state) { case 0: - if (actor->dmgType != DMG_NONE) { - func_effect_8007C120(actor->obj.pos.x, actor->obj.pos.y + 100.0f, actor->obj.pos.z, actor->vel.x, - actor->vel.y, actor->vel.z, 0.15f, 20); - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, actor->sfxSource, 4); - actor->health -= actor->damage; - actor->timer_0C6 = 15; - if ((gPlayer[0].trueZpos - 20.0f) < actor->obj.pos.z) { - actor->health = 0; + if (this->dmgType != DMG_NONE) { + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 100.0f, this->obj.pos.z, this->vel.x, + this->vel.y, this->vel.z, 0.15f, 20); + + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + + this->health -= this->damage; + this->timer_0C6 = 15; + + if ((gPlayer[0].trueZpos - 20.0f) < this->obj.pos.z) { + this->health = 0; } - if (actor->health <= 0) { - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 0); - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y + 100.0f, actor->obj.pos.z, 0.0f, 0.0f, - 0.0f, 14.0f, 5); + + if (this->health <= 0) { + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 0); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 100.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, + 14.0f, 5); for (i = 0; i < 20; i++) { - Macbeth_801AD624(RAND_FLOAT_CENTERED(500.0f) + actor->obj.pos.x, actor->obj.pos.y + 100.0f, - RAND_FLOAT(150.0f) + actor->obj.pos.z, RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - (s32) (RAND_FLOAT(50.0f) + 70.0f), 4, (RAND_FLOAT(0.8f) + 0.3f) * 1.5f); + Macbeth_Effect357_Spawn1( + RAND_FLOAT_CENTERED(500.0f) + this->obj.pos.x, this->obj.pos.y + 100.0f, + RAND_FLOAT(150.0f) + this->obj.pos.z, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), + RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), 4, (RAND_FLOAT(0.8f) + 0.3f) * 1.5f); } - actor->timer_0BC = 20; - actor->state = 1; + this->timer_0BC = 20; + this->state = 1; } - actor->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } break; + case 1: - Math_SmoothStepToF(&actor->obj.rot.x, -90.0f, 0.5f, 5.0f, 0.01f); - if (actor->timer_0BC == 0) { - Object_Kill(&actor->obj, actor->sfxSource); + Math_SmoothStepToF(&this->obj.rot.x, -90.0f, 0.5f, 5.0f, 0.01f); + if (this->timer_0BC == 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } } -void Macbeth_Actor218_Draw(Actor* actor) { +void Macbeth_MaBarrier_Draw(MaBarrier* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_57); - if ((actor->timer_0C6 % 2) != 0) { + if ((this->timer_0C6 % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_58); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - gSPDisplayList(gMasterDisp++, D_MA_60257B0); + gSPDisplayList(gMasterDisp++, aMaBarrierDL); RCP_SetupDL(&gMasterDisp, SETUPDL_29); } -void Macbeth_801A65E0(Scenery* scenery) { - scenery->vel.x = scenery->obj.pos.x; - scenery->vel.y = scenery->obj.pos.y; - scenery->vel.z = scenery->obj.rot.z; - scenery->obj.rot.z = 0.0f; +void Macbeth_MaProximityLight_Init(MaProximityLight* this) { + this->vel.x = this->obj.pos.x; + this->vel.y = this->obj.pos.y; + this->vel.z = this->obj.rot.z; + this->obj.rot.z = 0.0f; } -void Macbeth_Scenery65_Draw(Scenery* scenery) { - if ((gPlayer[0].trueZpos - scenery->obj.pos.z) < scenery->vel.z) { +void Macbeth_MaProximityLight_Draw(MaProximityLight* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < this->vel.z) { if (gPlayState != PLAY_PAUSE) { - Math_SmoothStepToF(&scenery->vel.x, 30, 0.5f, 30.0f, 0.0f); - if (scenery->vel.x < 31.0f) { - scenery->vel.x = 255.0f; + Math_SmoothStepToF(&this->vel.x, 30, 0.5f, 30.0f, 0.0f); + if (this->vel.x < 31.0f) { + this->vel.x = 255.0f; } } RCP_SetupDL(&gMasterDisp, SETUPDL_34); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, scenery->vel.x, 0, 0, 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, this->vel.x, 0, 0, 255); } gSPDisplayList(gMasterDisp++, D_MA_6010700); RCP_SetupDL(&gMasterDisp, SETUPDL_29); @@ -3409,28 +3785,29 @@ void Macbeth_Scenery65_Draw(Scenery* scenery) { void Macbeth_801A67BC(s32 arg0) { } -void Macbeth_Actor219_Update(Actor* actor) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -300.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_Actor219_Update(Actor219* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -300.0f) { + Object_Kill(&this->obj, this->sfxSource); } - if ((actor->dmgType != DMG_NONE) && (actor->dmgPart == -1)) { - actor->dmgType = DMG_NONE; - if (actor->obj.pos.x <= gPlayer[0].pos.x) { - actor->iwork[4] = 1; + + if ((this->dmgType != DMG_NONE) && (this->dmgPart == -1)) { + this->dmgType = DMG_NONE; + if (this->obj.pos.x <= gPlayer[0].pos.x) { + this->iwork[4] = 1; } else { - actor->iwork[4] = -1; + this->iwork[4] = -1; } - Macbeth_8019D670(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, - (RAND_FLOAT(2.0f) + 20.0f) * actor->iwork[4], 0.0f, actor->iwork[4] * -34.0f, 0.0f, 2, 3); - Object_Kill(&actor->obj, actor->sfxSource); + Macbeth_MaBoulder_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, + (RAND_FLOAT(2.0f) + 20.0f) * this->iwork[4], 0.0f, this->iwork[4] * -34.0f, 0.0f, 2, 3); + Object_Kill(&this->obj, this->sfxSource); } } -void Macbeth_Actor219_Draw(Actor* actor) { +void Macbeth_Actor219_Draw(Actor219* this) { } -void Macbeth_801A68F8(Actor* actor, s16 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) { +void Macbeth_801A68F8(Actor207* this, s16 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) { gTexturedLines[arg1].mode = 3; gTexturedLines[arg1].posAA.x = arg2; gTexturedLines[arg1].posAA.y = arg3; @@ -3444,8 +3821,8 @@ void Macbeth_801A68F8(Actor* actor, s16 arg1, f32 arg2, f32 arg3, f32 arg4, f32 gTexturedLines[arg1].posBB.z = arg7; } -void Macbeth_801A6984(Actor* actor) { - s16 var_s3; +void Macbeth_801A6984(Actor207* this) { + s16 var_s3 = 0; Vec3f test; f32 temp_fs3; s32 var_s4; @@ -3464,28 +3841,33 @@ void Macbeth_801A6984(Actor* actor) { f32 sp84; f32 sp80; - var_s3 = 0; - if ((gPlayer[0].trueZpos - actor->obj.pos.z) > 7000.0f) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) > 7000.0f) { return; } - test.x = actor->obj.pos.x - D_i5_801BE368[4]; - test.y = actor->obj.pos.y - D_i5_801BE368[5]; - test.z = actor->obj.pos.z - D_i5_801BE368[6]; + + test.x = this->obj.pos.x - D_i5_801BE368[4]; + test.y = this->obj.pos.y - D_i5_801BE368[5]; + test.z = this->obj.pos.z - D_i5_801BE368[6]; + temp_fs3 = VEC3F_MAG(&test); + Math_Atan2F(test.x, test.z); Math_Atan2F(test.y, sqrtf(SQ(test.x) + SQ(test.z))); + var_s4 = (s32) (temp_fs3 / 40.0f); if (var_s4 == 0) { var_s4 = 1; } - spA8 = (180.0f / var_s4) + 1.0f; - var_fs5 = actor->obj.pos.x; - spA0 = actor->obj.pos.y; - sp9C = actor->obj.pos.z; - sp88 = (D_i5_801BE368[4] - actor->obj.pos.x) / var_s4; - sp84 = (D_i5_801BE368[5] - actor->obj.pos.y) / var_s4; - sp80 = (D_i5_801BE368[6] - actor->obj.pos.z) / var_s4; + spA8 = (180.0f / var_s4) + 1.0f; + var_fs5 = this->obj.pos.x; + spA0 = this->obj.pos.y; + sp9C = this->obj.pos.z; + + sp88 = (D_i5_801BE368[4] - this->obj.pos.x) / var_s4; + sp84 = (D_i5_801BE368[5] - this->obj.pos.y) / var_s4; + sp80 = (D_i5_801BE368[6] - this->obj.pos.z) / var_s4; + for (i = 0; i < var_s4; i++) { if (D_i5_801BE320[1] == 0) { Math_SmoothStepToF(&D_i5_801BE368[7], 0.0f, 0.01f, 0.05f, 0.01f); @@ -3493,21 +3875,23 @@ void Macbeth_801A6984(Actor* actor) { Math_SmoothStepToF(&D_i5_801BE368[7], 100.0f, 0.01f, 0.01f, 0.01f); } temp = SIN_DEG(i * spA8) * (-(D_i5_801BE368[7] * 3.0f) * (1.0f - ((f32) i / var_s4))); - temp_fs2_2 = actor->obj.pos.x + (sp88 * i); - temp_fs3_2 = actor->obj.pos.y + (sp84 * i) + temp; - temp_fs4 = actor->obj.pos.z + (sp80 * i); - Macbeth_801A68F8(actor, var_s3++, var_fs5, spA0, sp9C, temp_fs2_2, temp_fs3_2, temp_fs4); + temp_fs2_2 = this->obj.pos.x + (sp88 * i); + temp_fs3_2 = this->obj.pos.y + (sp84 * i) + temp; + temp_fs4 = this->obj.pos.z + (sp80 * i); + Macbeth_801A68F8(this, var_s3++, var_fs5, spA0, sp9C, temp_fs2_2, temp_fs3_2, temp_fs4); var_fs5 = temp_fs2_2; spA0 = temp_fs3_2; sp9C = temp_fs4; } - Macbeth_80199D88(D_MA_6012C98, 4, 8); + Macbeth_Texture_Scroll2(D_MA_6012C98, 4, 8); } -void Macbeth_801A6C78(Actor* actor) { +void Macbeth_801A6C78(Actor207* this) { // FAKE if (1) {} - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); + + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + switch (D_i5_801BE320[0]) { case 0: Math_SmoothStepToF(&D_i5_801BE368[0], 30.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); @@ -3516,6 +3900,7 @@ void Macbeth_801A6C78(Actor* actor) { D_i5_801BE320[0] = 1; } break; + case 1: Math_SmoothStepToF(&D_i5_801BE368[0], -30.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); D_i5_801BE368[1] += D_i5_801BE368[0]; @@ -3524,40 +3909,49 @@ void Macbeth_801A6C78(Actor* actor) { } break; } + switch (D_i5_801BE320[1]) { case 0: D_i5_801BE320[6] = 1; D_i5_801BE320[8] = 1; D_i5_801BE320[5] = 0; D_i5_801BE320[7] = 0; + Math_SmoothStepToF(&D_i5_801BE368[2], 15.0f, 0.2f, 2.0f, 0.01f); + D_i5_801BE368[3] += D_i5_801BE368[2]; - if ((((gPlayer[0].trueZpos - actor->obj.pos.z) * 0.25f) < D_i5_801BE368[3]) || + + if ((((gPlayer[0].trueZpos - this->obj.pos.z) * 0.25f) < D_i5_801BE368[3]) || (D_i5_801BE368[3] > 8000.0f)) { D_i5_801BE320[1] = 1; } break; + case 1: D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; D_i5_801BE320[5] = 0; D_i5_801BE320[7] = 0; + Math_SmoothStepToF(&D_i5_801BE368[2], -4.0f, 0.1f, 2.0f, 0.01f); + D_i5_801BE368[3] += D_i5_801BE368[2]; if (D_i5_801BE368[3] < -300.0f) { D_i5_801BE320[1] = 0; } break; } - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, (actor->fwork[5] + 600.0f) + D_i5_801BE368[3], 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, (this->fwork[5] + 600.0f) + D_i5_801BE368[3], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); } -void Macbeth_801A6FB4(Actor* actor) { +void Macbeth_801A6FB4(Actor207* this) { // FAKE if (1) {} - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); + + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + switch (D_i5_801BE320[0]) { case 0: Math_SmoothStepToF(&D_i5_801BE368[0], 20.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); @@ -3566,6 +3960,7 @@ void Macbeth_801A6FB4(Actor* actor) { D_i5_801BE320[0] = 1; } break; + case 1: Math_SmoothStepToF(&D_i5_801BE368[0], -20.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); D_i5_801BE368[1] += D_i5_801BE368[0]; @@ -3574,17 +3969,22 @@ void Macbeth_801A6FB4(Actor* actor) { } break; } + switch (D_i5_801BE320[1]) { case 0: D_i5_801BE320[6] = 1; D_i5_801BE320[8] = 1; + Math_SmoothStepToF(&D_i5_801BE368[2], 15.0f, 0.2f, 2.0f, 0.01f); + D_i5_801BE368[3] += D_i5_801BE368[2]; - if ((((gPlayer[0].trueZpos - actor->obj.pos.z) * 0.25f) < D_i5_801BE368[3]) || + + if ((((gPlayer[0].trueZpos - this->obj.pos.z) * 0.25f) < D_i5_801BE368[3]) || (D_i5_801BE368[3] > 8000.0f)) { D_i5_801BE320[1] = 1; } break; + case 1: D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; @@ -3595,13 +3995,14 @@ void Macbeth_801A6FB4(Actor* actor) { } break; } - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, (actor->fwork[5] + 600.0f) + D_i5_801BE368[3], 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, (this->fwork[5] + 600.0f) + D_i5_801BE368[3], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); } -void Macbeth_801A72DC(Actor* actor) { - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); +void Macbeth_801A72DC(Actor207* this) { + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + switch (D_i5_801BE320[0]) { case 0: Math_SmoothStepToF(&D_i5_801BE368[0], 5.0f, 0.1f, RAND_FLOAT(1.0f) + 0.3f, 0.01f); @@ -3610,6 +4011,7 @@ void Macbeth_801A72DC(Actor* actor) { D_i5_801BE320[0] = 1; } break; + case 1: Math_SmoothStepToF(&D_i5_801BE368[0], -5.0f, 0.1f, RAND_FLOAT(1.0f) + 0.3f, 0.01f); D_i5_801BE368[1] += D_i5_801BE368[0]; @@ -3618,13 +4020,14 @@ void Macbeth_801A72DC(Actor* actor) { } break; } - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[5] + 600.0f, 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[5] + 600.0f, 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); } -void Macbeth_801A74C4(Actor* actor) { - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); +void Macbeth_801A74C4(Actor207* this) { + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + switch (D_i5_801BE320[0]) { case 0: Math_SmoothStepToF(&D_i5_801BE368[0], 22.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); @@ -3633,6 +4036,7 @@ void Macbeth_801A74C4(Actor* actor) { D_i5_801BE320[0] = 1; } break; + case 1: Math_SmoothStepToF(&D_i5_801BE368[0], -22.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); D_i5_801BE368[1] += D_i5_801BE368[0]; @@ -3641,17 +4045,19 @@ void Macbeth_801A74C4(Actor* actor) { } break; } + switch (D_i5_801BE320[1]) { case 0: D_i5_801BE320[5] = 1; D_i5_801BE320[7] = 1; Math_SmoothStepToF(&D_i5_801BE368[2], 10.0f, 0.4f, 10.0f, 0.01f); D_i5_801BE368[3] += D_i5_801BE368[2]; - if ((((gPlayer[0].trueZpos - actor->obj.pos.z) * 0.25f) < D_i5_801BE368[3]) || + if ((((gPlayer[0].trueZpos - this->obj.pos.z) * 0.25f) < D_i5_801BE368[3]) || (D_i5_801BE368[3] > 8000.0f)) { D_i5_801BE320[1] = 1; } break; + case 1: D_i5_801BE320[5] = 0; D_i5_801BE320[7] = 0; @@ -3664,27 +4070,30 @@ void Macbeth_801A74C4(Actor* actor) { } break; } + switch (D_i5_801BE320[12]) { case 0: - Math_SmoothStepToF(&actor->obj.rot.z, 45.0f, 0.4f, 10.0f, 1.0f); - if (actor->obj.rot.z >= 45.0f) { + Math_SmoothStepToF(&this->obj.rot.z, 45.0f, 0.4f, 10.0f, 1.0f); + if (this->obj.rot.z >= 45.0f) { D_i5_801BE320[12] = 1; } break; + case 1: - Math_SmoothStepToF(&actor->obj.rot.z, -45.0f, 0.4f, 10.0f, 1.0f); - if (actor->obj.rot.z <= -45.0f) { + Math_SmoothStepToF(&this->obj.rot.z, -45.0f, 0.4f, 10.0f, 1.0f); + if (this->obj.rot.z <= -45.0f) { D_i5_801BE320[12] = 0; } break; } - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, (actor->fwork[5] + 600.0f) + D_i5_801BE368[3], 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[19] + D_i5_801BE368[1], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, (this->fwork[5] + 600.0f) + D_i5_801BE368[3], 0.2f, 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, 1200.0f + D_i5_801BE368[6], 0.2f, 30.0f, 0.01f); } -void Macbeth_801A78B0(Actor* actor) { - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); +void Macbeth_801A78B0(Actor207* this) { + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + switch (D_i5_801BE320[0]) { case 0: Math_SmoothStepToF(&D_i5_801BE368[0], 10.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); @@ -3693,6 +4102,7 @@ void Macbeth_801A78B0(Actor* actor) { D_i5_801BE320[0] = 1; } break; + case 1: Math_SmoothStepToF(&D_i5_801BE368[0], -10.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); D_i5_801BE368[1] += D_i5_801BE368[0]; @@ -3701,12 +4111,12 @@ void Macbeth_801A78B0(Actor* actor) { } break; } - - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[19] + D_i5_801BE368[1], 0.1f, 10.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[19] + D_i5_801BE368[1], 0.1f, 10.0f, 0.01f); } -void Macbeth_801A7A30(Actor* actor) { - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); +void Macbeth_801A7A30(Actor207* this) { + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + switch (D_i5_801BE320[0]) { case 0: Math_SmoothStepToF(&D_i5_801BE368[0], 30.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); @@ -3715,6 +4125,7 @@ void Macbeth_801A7A30(Actor* actor) { D_i5_801BE320[0] = 1; } break; + case 1: Math_SmoothStepToF(&D_i5_801BE368[0], -30.0f, 0.1f, RAND_FLOAT(1.0f) + 1.0f, 0.01f); D_i5_801BE368[1] += D_i5_801BE368[0]; @@ -3723,6 +4134,7 @@ void Macbeth_801A7A30(Actor* actor) { } break; } + switch (D_i5_801BE320[1]) { case 0: D_i5_801BE320[6] = 0; @@ -3735,6 +4147,7 @@ void Macbeth_801A7A30(Actor* actor) { D_i5_801BE320[1] = 1; } break; + case 1: D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; @@ -3747,31 +4160,34 @@ void Macbeth_801A7A30(Actor* actor) { } break; } - actor->obj.pos.x = actor->fwork[19] + D_i5_801BE368[1]; - actor->obj.pos.y = actor->fwork[5] + D_i5_801BE368[3]; - actor->obj.pos.z = 1200.0f + D_i5_801BE368[6]; + this->obj.pos.x = this->fwork[19] + D_i5_801BE368[1]; + this->obj.pos.y = this->fwork[5] + D_i5_801BE368[3]; + this->obj.pos.z = 1200.0f + D_i5_801BE368[6]; } -void Macbeth_801A7CAC(Actor* actor) { - f32 temp_fa0; - f32 temp_fa1; - f32 sp34; - f32 sp30; - f32 sp2C; +void Macbeth_Actor207_FacePlayer(Actor207* this) { + f32 xDist; + f32 yDist; + f32 xRot; + f32 yRot; + f32 EuclDist; - temp_fa0 = gPlayer[0].pos.x - actor->obj.pos.x; - temp_fa1 = (gPlayer[0].trueZpos - 130.0f) - actor->obj.pos.z; - sp2C = sqrtf(SQ(temp_fa0) + SQ(temp_fa1)); - sp30 = Math_Atan2F(temp_fa0, temp_fa1); - sp34 = -Math_Atan2F(gPlayer[0].pos.y - actor->obj.pos.y, sp2C); - Math_SmoothStepToAngle(&actor->obj.rot.y, Math_RadToDeg(sp30), 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, Math_RadToDeg(sp34), 0.1f, 20.0f, 0.01f); + xDist = gPlayer[0].pos.x - this->obj.pos.x; + yDist = (gPlayer[0].trueZpos - 130.0f) - this->obj.pos.z; + + EuclDist = sqrtf(SQ(xDist) + SQ(yDist)); + + yRot = Math_Atan2F(xDist, yDist); + xRot = -Math_Atan2F(gPlayer[0].pos.y - this->obj.pos.y, EuclDist); + + Math_SmoothStepToAngle(&this->obj.rot.y, Math_RadToDeg(yRot), 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, Math_RadToDeg(xRot), 0.1f, 20.0f, 0.01f); } -void Macbeth_801A7D98(Actor* actor) { +void Macbeth_Actor207_Init(Actor207* this) { u8 i; - Macbeth_80199F8C(actor); + Macbeth_Train_Init(this); // clang-format off for (i = 0; i < 35; i++) { D_i5_801BE320[i] = 0; } for (i = 0; i < 50; i++) { D_i5_801BE368[i] = 0.0f; } @@ -3779,16 +4195,19 @@ void Macbeth_801A7D98(Actor* actor) { D_i5_801BE320[29] = 250; D_i5_801BE320[9] = 200; D_i5_801BE320[10] = 250; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(gNoHitbox); + + this->info.hitbox = SEGMENTED_TO_VIRTUAL(gNoHitbox); + D_i5_801BE320[14] = 0; D_i5_801BE320[15] = 0; + gBossFrameCount = 0; } static Vec3f D_i5_801BA744 = { 0.0f, 0.0f, 0.0f }; static Vec3f D_i5_801BA750 = { 0.0f, 0.0f, 30.0f }; -void Macbeth_Actor207_Update(Actor* actor) { +void Macbeth_Actor207_Update(Actor207* this) { s32 pad; f32 temp; f32 sp374; @@ -3807,52 +4226,61 @@ void Macbeth_Actor207_Update(Actor* actor) { s16 spC6; u8 i; - switch (actor->state) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - actor->obj.pos.y += 250.0f; + Macbeth_8019A198(this); + Macbeth_801A015C(this); + + this->obj.pos.y += 250.0f; D_i5_801BE320[3] = 0; - Macbeth_8019A830(actor); - Macbeth_8019A728(actor); - if (actor->iwork[1] != 0) { + + Macbeth_8019A830(this); + Macbeth_8019A728(this); + + if (this->iwork[1] != 0) { AUDIO_PLAY_BGM(NA_BGM_BOSS_MA); - actor->state = 1; + this->state = 1; } - Macbeth_801A6984(actor); + Macbeth_801A6984(this); break; + case 1: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - actor->obj.pos.y += 250.0f; + Macbeth_8019A198(this); + Macbeth_801A015C(this); + this->obj.pos.y += 250.0f; + D_i5_801BE320[3]++; if (D_i5_801BE320[3] >= 20) { - actor->timer_0BC = 20; - actor->state = 2; + this->timer_0BC = 20; + this->state = 2; } - Macbeth_8019A830(actor); - Macbeth_801A6984(actor); + Macbeth_8019A830(this); + Macbeth_801A6984(this); break; + case 2: - Macbeth_8019A198(actor); - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); - if (actor->timer_0BC == 0) { - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[5] + 500.0f, 0.5f, 5.0f, 5.0f); + Macbeth_8019A198(this); + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + + if (this->timer_0BC == 0) { + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[5] + 500.0f, 0.5f, 5.0f, 5.0f); D_i5_801BE320[5] = 1; D_i5_801BE320[7] = 1; - if ((actor->fwork[5] + 500.0f) <= actor->obj.pos.y) { + if ((this->fwork[5] + 500.0f) <= this->obj.pos.y) { Radio_PlayMessage(gMsg_ID_17430, RCID_BOSS_MACBETH); - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603677C); - actor->state = 3; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aMaActor207Hitbox); + this->state = 3; } } - Macbeth_8019A830(actor); - Macbeth_801A6984(actor); + Macbeth_8019A830(this); + Macbeth_801A6984(this); break; + case 3: - Macbeth_8019A198(actor); - if (actor->timer_0BC == 0) { - actor->obj.pos.z -= 2.0f; + Macbeth_8019A198(this); + + if (this->timer_0BC == 0) { + this->obj.pos.z -= 2.0f; if (D_i5_801BE320[3] < 70) { D_i5_801BE320[3] = (s16) (D_i5_801BE320[3] + 1); } @@ -3862,30 +4290,36 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[6] = 1; D_i5_801BE320[8] = 1; } - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[5] + 1600.0f, 0.2f, 30.0f, 10.0f); - if ((actor->fwork[5] + 1600.0f) <= actor->obj.pos.y) { + + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[5] + 1600.0f, 0.2f, 30.0f, 10.0f); + + if ((this->fwork[5] + 1600.0f) <= this->obj.pos.y) { D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; - actor->timer_0C0 = 1500; - actor->state = 4; + this->timer_0C0 = 1500; + this->state = 4; } } - Macbeth_8019A830(actor); - Macbeth_801A6984(actor); + Macbeth_8019A830(this); + Macbeth_801A6984(this); break; + case 4: - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); - Macbeth_8019A198(actor); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + Macbeth_8019A198(this); + D_i5_801BE320[3]++; if (D_i5_801BE320[3] >= 60) { D_i5_801BE320[3] = 0; } - Macbeth_801A6C78(actor); - Macbeth_801A6984(actor); - Macbeth_801A7CAC(actor); + + Macbeth_801A6C78(this); + Macbeth_801A6984(this); + Macbeth_Actor207_FacePlayer(this); + if ((D_i5_801BE320[16] != 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { var_v1 = 0xFF; if (D_i5_801BE320[18] == 2) { @@ -3896,17 +4330,18 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 2; D_i5_801BE320[31] = 30; - actor->iwork[7] = 0; - actor->iwork[8] = 0; - actor->iwork[9] = 0; + this->iwork[7] = 0; + this->iwork[8] = 0; + this->iwork[9] = 0; Radio_PlayMessage(gMsg_ID_17475, RCID_BOSS_MACBETH); - actor->state = 18; + this->state = 18; break; } - if (!(var_v1 & gGameFrameCount)) { + + if ((var_v1 & gGameFrameCount) == 0) { if ((D_i5_801BE320[9] > 0) || (D_i5_801BE320[10] > 0)) { - if (actor->timer_0C0 == 0) { - actor->timer_0C0 = 1500; + if (this->timer_0C0 == 0) { + this->timer_0C0 = 1500; Radio_PlayMessage(gMsg_ID_17460, RCID_BOSS_MACBETH); } if (((D_i5_801BE320[9] > 0) && (Rand_ZeroOne() > 0.5f)) || (D_i5_801BE320[10] <= 0) || @@ -3919,9 +4354,9 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 5; D_i5_801BE320[31] = 30; - actor->timer_0BC = 100; - AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_CHARGE0, actor->sfxSource, 4); - actor->state = 12; + this->timer_0BC = 100; + AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_CHARGE0, this->sfxSource, 4); + this->state = 12; } } else if ((D_i5_801BE320[26] != 0) && (D_i5_801BE320[10] > 0)) { D_i5_801BE320[6] = 1; @@ -3931,7 +4366,7 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 2; D_i5_801BE320[31] = 30; - actor->state = 5; + this->state = 5; } } else if ((D_i5_801BE320[20] != 3) && (D_i5_801BE320[25] == 0)) { if ((Rand_ZeroOne() > 0.5f) && (D_i5_801BE320[26] != 0)) { @@ -3942,8 +4377,8 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 7; D_i5_801BE320[31] = 30; - actor->timer_0BC = 100; - actor->state = 15; + this->timer_0BC = 100; + this->state = 15; } else { D_i5_801BE320[6] = 1; D_i5_801BE320[8] = 0; @@ -3952,56 +4387,63 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 4; D_i5_801BE320[31] = 30; - actor->timer_0BC = 20; - actor->state = 11; + this->timer_0BC = 20; + this->state = 11; } } } } break; + case 5: - Macbeth_8019A198(actor); - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); - Math_SmoothStepToF(&actor->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos - 1500.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, - (actor->fwork[5] + 600.0f + (gPlayer[0].trueZpos - actor->obj.pos.z) * 0.25f) + 10.0f, + Macbeth_8019A198(this); + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + + Math_SmoothStepToF(&this->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - 1500.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, + (this->fwork[5] + 600.0f + (gPlayer[0].trueZpos - this->obj.pos.z) * 0.25f) + 10.0f, 0.1f, 10.0f, 0.01f); - if (((actor->fwork[5] + 600.0f + (gPlayer[0].trueZpos - actor->obj.pos.z) * 0.25f) <= actor->obj.pos.y) && - (actor->obj.pos.z < (gPlayer[0].trueZpos - 1300.0f))) { - actor->timer_0BC = 0; - actor->state = 6; + if (((this->fwork[5] + 600.0f + (gPlayer[0].trueZpos - this->obj.pos.z) * 0.25f) <= this->obj.pos.y) && + (this->obj.pos.z < (gPlayer[0].trueZpos - 1300.0f))) { + this->timer_0BC = 0; + this->state = 6; } - Macbeth_801A7CAC(actor); - Macbeth_801A6984(actor); + Macbeth_Actor207_FacePlayer(this); + Macbeth_801A6984(this); break; + case 6: - Macbeth_8019A198(actor); - if (actor->timer_0BC <= 0) { - actor->state = 7; + Macbeth_8019A198(this); + + if (this->timer_0BC <= 0) { + this->state = 7; } + D_i5_801BE368[9] = gPlayer[0].pos.x; - Macbeth_801A7CAC(actor); - Macbeth_801A6984(actor); + + Macbeth_Actor207_FacePlayer(this); + Macbeth_801A6984(this); break; + case 7: - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < 1200.0f) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < 1200.0f) { if (D_i5_801BE320[3] < (Animation_GetFrameCount(&D_MA_601D188) - 1)) { D_i5_801BE320[3] = (s16) (D_i5_801BE320[3] + 1); if ((D_i5_801BE320[3] == 26) && (D_i5_801BE320[10] > 0)) { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6036818); - AUDIO_PLAY_SFX(NA_SE_EN_CATCH, actor->sfxSource, 4); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6036818); + AUDIO_PLAY_SFX(NA_SE_EN_CATCH, this->sfxSource, 4); } } else { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(gNoHitbox); - if ((gPlayer[0].pos.y + 1200.0f) < actor->obj.pos.y) { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603677C); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(gNoHitbox); + if ((gPlayer[0].pos.y + 1200.0f) < this->obj.pos.y) { + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aMaActor207Hitbox); D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; - actor->state = 4; + this->state = 4; } } } @@ -4021,36 +4463,45 @@ void Macbeth_Actor207_Update(Actor* actor) { var_fv0 = 100.0f; break; } - if (var_fv0 < (gPlayer[0].trueZpos - actor->obj.pos.z)) { - Macbeth_801A7CAC(actor); + + if (var_fv0 < (gPlayer[0].trueZpos - this->obj.pos.z)) { + Macbeth_Actor207_FacePlayer(this); D_i5_801BE368[9] = gPlayer[0].pos.x; } - Math_SmoothStepToF(&actor->obj.pos.x, D_i5_801BE368[9], 0.2f, 30.0f, 0.01f); + + Math_SmoothStepToF(&this->obj.pos.x, D_i5_801BE368[9], 0.2f, 30.0f, 0.01f); + if (D_i5_801BE320[3] < 29) { - Math_SmoothStepToF(&actor->obj.pos.y, gPlayer[0].pos.y + 250.0f, 0.3f, 45.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, gPlayer[0].pos.y + 250.0f, 0.3f, 45.0f, 0.01f); } else { - Math_SmoothStepToF(&actor->obj.pos.y, gPlayer[0].pos.y + 1210.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, gPlayer[0].pos.y + 1210.0f, 0.1f, 20.0f, 0.01f); } - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos - 100.0f, 0.3f, 60.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.rot.x, 0.0f, 0.2f, 20.0f, 0.01f); - Macbeth_801A6984(actor); + + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - 100.0f, 0.3f, 60.0f, 0.01f); + Math_SmoothStepToF(&this->obj.rot.x, 0.0f, 0.2f, 20.0f, 0.01f); + Macbeth_801A6984(this); break; + case 8: - Macbeth_8019A198(actor); + Macbeth_8019A198(this); + if (((gGameFrameCount % 16) == 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_RAGE, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_RAGE, this->sfxSource, 4); } - Macbeth_801A74C4(actor); - Macbeth_801A6984(actor); + + Macbeth_801A74C4(this); + Macbeth_801A6984(this); + if (D_i5_801BE320[3] < (Animation_GetFrameCount(&D_MA_6017714) - 1)) { D_i5_801BE320[3] = (s16) (D_i5_801BE320[3] + 1); } else { D_i5_801BE320[3] = 0; } + if (D_i5_801BE320[4] <= 0) { D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; - actor->obj.rot.x -= 360.0f; + this->obj.rot.x -= 360.0f; D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; @@ -4058,61 +4509,71 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[7] = 0; D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; - actor->state = 4; + this->state = 4; break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->iwork[9] = 15; - D_i5_801BE320[29] -= actor->damage; + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->iwork[9] = 15; + + D_i5_801BE320[29] -= this->damage; if (D_i5_801BE320[29] <= 0) { SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1); gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 255; - AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); Radio_PlayMessage(gMsg_ID_17450, RCID_BOSS_MACBETH); - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - Macbeth_801AD624(actor->vwork[2].x, actor->vwork[2].y, actor->vwork[2].z, - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, -2.0f, RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - (s32) (RAND_FLOAT(50.0f) + 70.0f), 11, 1.0f); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + Macbeth_Effect357_Spawn1(this->vwork[2].x, this->vwork[2].y, this->vwork[2].z, + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, -2.0f, + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), + RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 11, 1.0f); D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; - actor->state = 9; + this->state = 9; break; } + D_i5_801BE368[12] = 30.0f; D_i5_801BE368[13] = 30.0f; + if (D_i5_801BE320[29] > 0) { if (D_i5_801BE320[29] > 100) { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); } else { - AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, this->sfxSource, 4); } } } - if (((gGameFrameCount % 2) == 0)) { - actor->obj.pos.x += D_i5_801BE368[12]; - actor->obj.pos.y += D_i5_801BE368[13]; + + if ((gGameFrameCount % 2) == 0) { + this->obj.pos.x += D_i5_801BE368[12]; + this->obj.pos.y += D_i5_801BE368[13]; } else { - actor->obj.pos.x -= D_i5_801BE368[12]; - actor->obj.pos.y -= D_i5_801BE368[13]; + this->obj.pos.x -= D_i5_801BE368[12]; + this->obj.pos.y -= D_i5_801BE368[13]; } + if (D_i5_801BE368[12] > 0.0f) { D_i5_801BE368[12] -= 1.0f; } + if (D_i5_801BE368[13] > 0.0f) { D_i5_801BE368[13] -= 1.0f; } - Math_SmoothStepToAngle(&actor->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - if (((gGameFrameCount % 32) == 0)) { + + Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + + if ((gGameFrameCount % 32) == 0) { D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; D_i5_801BE320[5] = 0; D_i5_801BE320[7] = 0; + if (Rand_ZeroOne() >= 0.5f) { D_i5_801BE320[6] = 1; } @@ -4127,48 +4588,59 @@ void Macbeth_Actor207_Update(Actor* actor) { } } break; + case 9: - if (D_i5_801BE368[6] < actor->obj.pos.z) { + if (D_i5_801BE368[6] < this->obj.pos.z) { D_i5_801BE320[1] = 1; - Macbeth_801A6984(actor); + Macbeth_801A6984(this); } - if ((actor->obj.pos.z - D_i5_801BE368[6]) < 500) { - Math_SmoothStepToF(&actor->obj.pos.x, D_i5_801BE368[4], 0.1f, 10.0f, 1.0f); - Math_SmoothStepToF(&actor->obj.pos.y, D_i5_801BE368[5] - 100.0f, 0.1f, 15.0f, 10.0f); + + if ((this->obj.pos.z - D_i5_801BE368[6]) < 500) { + Math_SmoothStepToF(&this->obj.pos.x, D_i5_801BE368[4], 0.1f, 10.0f, 1.0f); + Math_SmoothStepToF(&this->obj.pos.y, D_i5_801BE368[5] - 100.0f, 0.1f, 15.0f, 10.0f); } else { - Math_SmoothStepToF(&actor->obj.pos.y, D_i5_801BE368[5] + 600.0f, 0.1f, 20.0f, 10.0f); + Math_SmoothStepToF(&this->obj.pos.y, D_i5_801BE368[5] + 600.0f, 0.1f, 20.0f, 10.0f); } - Math_SmoothStepToF(&actor->obj.pos.z, D_i5_801BE368[6] - 100.0f, 0.2f, 5.0f - gActors[D_i5_801BE314].vel.z, + + Math_SmoothStepToF(&this->obj.pos.z, D_i5_801BE368[6] - 100.0f, 0.2f, 5.0f - gActors[D_i5_801BE314].vel.z, 1.0f); - actor->obj.rot.x += 10.0f; - actor->obj.rot.z += 10.0f; - if (((gGameFrameCount % 8) == 0)) { - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - func_effect_8007C688(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 5.0f, 8); + + this->obj.rot.x += 10.0f; + this->obj.rot.z += 10.0f; + + if ((gGameFrameCount % 8) == 0) { + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + Effect_Effect387_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 5.0f, 8); } - if ((actor->obj.pos.z <= D_i5_801BE368[6]) && (actor->obj.pos.y <= D_i5_801BE368[5])) { + + if ((this->obj.pos.z <= D_i5_801BE368[6]) && (this->obj.pos.y <= D_i5_801BE368[5])) { D_i5_801BE320[23] = 1; gTeamLowHealthMsgTimer = -1; - actor->state = 10; - actor->timer_0BC = 50; + this->state = 10; + this->timer_0BC = 50; } break; + case 10: - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); break; + case 11: - Math_SmoothStepToAngle(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); - Macbeth_8019A198(actor); - Macbeth_801A6FB4(actor); - Macbeth_801A6984(actor); - if (actor->timer_0BC == 0) { + Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + + Macbeth_8019A198(this); + Macbeth_801A6FB4(this); + Macbeth_801A6984(this); + + if (this->timer_0BC == 0) { if (D_i5_801BE320[3] < (Animation_GetFrameCount(&D_MA_6016B2C) - 1)) { D_i5_801BE320[3]++; } else { D_i5_801BE320[3] = 0; } + switch (D_i5_801BE320[18]) { case 0: case 1: @@ -4183,34 +4655,36 @@ void Macbeth_Actor207_Update(Actor* actor) { var_v0 = 8 - 1; var_s0 = 20; break; - default: var_v0 = 4 - 1; var_s0 = 10; break; } + if ((var_v0 & gGameFrameCount) == 0) { - Macbeth_801ADCEC(actor->obj.pos.x, actor->obj.pos.y - 90.0f, actor->obj.pos.z - 50.0f, - D_i5_801BE368[0] * 0.8f, -10.0f, 8.0f); + Macbeth_MaBombDrop_Spawn(this->obj.pos.x, this->obj.pos.y - 90.0f, this->obj.pos.z - 50.0f, + D_i5_801BE368[0] * 0.8f, -10.0f, 8.0f); D_i5_801BE320[11]++; if (D_i5_801BE320[11] >= var_s0) { - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603677C); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aMaActor207Hitbox); D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; D_i5_801BE320[5] = 0; D_i5_801BE320[7] = 0; D_i5_801BE320[11] = 0; - actor->state = 4; + this->state = 4; D_i5_801BE320[25] = 1; } } } - if (((gGameFrameCount % 32) == 0)) { + + if ((gGameFrameCount % 32) == 0) { D_i5_801BE320[6] = 0; D_i5_801BE320[8] = 0; D_i5_801BE320[5] = 0; D_i5_801BE320[7] = 0; + if (Rand_ZeroOne() >= 0.5f) { D_i5_801BE320[6] = 1; } @@ -4225,133 +4699,167 @@ void Macbeth_Actor207_Update(Actor* actor) { } } break; + case 12: - Math_SmoothStepToAngle(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + if (D_i5_801BE320[3] < (Animation_GetFrameCount(&D_MA_60163F0) - 1)) { D_i5_801BE320[3]++; } else { D_i5_801BE320[3] = 0; } - Macbeth_8019A198(actor); - Macbeth_801A72DC(actor); - Macbeth_801A6984(actor); + + Macbeth_8019A198(this); + Macbeth_801A72DC(this); + Macbeth_801A6984(this); + if (D_i5_801BE320[9] <= 0) { - Audio_KillSfxBySourceAndId(actor->sfxSource, NA_SE_EN_MABOSS_CHARGE0); - actor->state = 14; - actor->vel.y = -20.0f; + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_MABOSS_CHARGE0); + this->state = 14; + this->vel.y = -20.0f; } - D_i5_801BE368[14] = actor->vwork[0].x; - D_i5_801BE368[15] = actor->vwork[0].y; - D_i5_801BE368[16] = actor->vwork[0].z; - if (actor->timer_0BC > 15) { + + D_i5_801BE368[14] = this->vwork[0].x; + D_i5_801BE368[15] = this->vwork[0].y; + D_i5_801BE368[16] = this->vwork[0].z; + + if (this->timer_0BC > 15) { for (i = 0; i < 2; i++) { D_i5_801BE368[23] = 3.0f; - Macbeth_801AE800(actor->vwork[2].x + RAND_FLOAT_CENTERED(400.0f), - actor->vwork[2].y + RAND_FLOAT_CENTERED(400.0f), actor->vwork[2].z + 50.0f, - actor->vwork[2].x - 200.0f, actor->vwork[2].y, actor->vwork[2].z); + Macbeth_Effect379_Spawn(this->vwork[2].x + RAND_FLOAT_CENTERED(400.0f), + this->vwork[2].y + RAND_FLOAT_CENTERED(400.0f), this->vwork[2].z + 50.0f, + this->vwork[2].x - 200.0f, this->vwork[2].y, this->vwork[2].z); D_i5_801BE368[23] = 4.0f; - Macbeth_801AE800(actor->vwork[4].x + RAND_FLOAT_CENTERED(400.0f), - actor->vwork[4].y + RAND_FLOAT_CENTERED(400.0f), actor->vwork[4].z + 50.0f, - actor->vwork[4].x + 200.0f, actor->vwork[4].y, actor->vwork[4].z); + Macbeth_Effect379_Spawn(this->vwork[4].x + RAND_FLOAT_CENTERED(400.0f), + this->vwork[4].y + RAND_FLOAT_CENTERED(400.0f), this->vwork[4].z + 50.0f, + this->vwork[4].x + 200.0f, this->vwork[4].y, this->vwork[4].z); } } - if (actor->timer_0BC == 0) { - Audio_KillSfxBySourceAndId(actor->sfxSource, NA_SE_EN_MABOSS_CHARGE0); + + if (this->timer_0BC == 0) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_MABOSS_CHARGE0); D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 6; D_i5_801BE320[31] = 30; - actor->timer_0BC = 70; - actor->state = 13; + this->timer_0BC = 70; + this->state = 13; } - break; + case 13: - Math_SmoothStepToAngle(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + if (D_i5_801BE320[3] < (Animation_GetFrameCount(&D_MA_6016040) - 1)) { D_i5_801BE320[3]++; } - Macbeth_8019A198(actor); - Macbeth_801A72DC(actor); - Macbeth_801A6984(actor); + + Macbeth_8019A198(this); + Macbeth_801A72DC(this); + Macbeth_801A6984(this); + D_i5_801BE320[5] = 0; D_i5_801BE320[7] = 0; - if (actor->timer_0BC == 60) { - AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_SHOT0, actor->sfxSource, 4); + + if (this->timer_0BC == 60) { + AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_SHOT0, this->sfxSource, 4); D_i5_801BE320[24] = 0; spC6 = RAND_INT(5.0f); + for (i = 0; i < 10; i++) { - Macbeth_801AE610(actor->vwork[0].x, actor->vwork[0].y + 100.0f, actor->vwork[0].z, - RAND_FLOAT_CENTERED(35.0f), RAND_FLOAT(80) + 90.0f, RAND_RANGE(-72.0f, 8.0f), - spC6); + Macbeth_MaSpear_Spawn(this->vwork[0].x, this->vwork[0].y + 100.0f, this->vwork[0].z, + RAND_FLOAT_CENTERED(35.0f), RAND_FLOAT(80) + 90.0f, RAND_RANGE(-72.0f, 8.0f), + spC6); } for (i = 0; i < 20; i++) { - Macbeth_801AD624(actor->vwork[0].x, actor->vwork[0].y + 50.0f + RAND_FLOAT(50.0f), - actor->vwork[0].z, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.0f), - actor->vel.z + 2.0f, RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - (s32) (RAND_FLOAT(25.0f) + 30.f), 10, RAND_FLOAT(1.0f)); + Macbeth_Effect357_Spawn1( + this->vwork[0].x, this->vwork[0].y + 50.0f + RAND_FLOAT(50.0f), this->vwork[0].z, + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.0f), this->vel.z + 2.0f, RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(25.0f) + 30.f), 10, RAND_FLOAT(1.0f)); } - actor->timer_0BC = 80; - actor->state = 14; - actor->vel.y = -20.0f; + this->timer_0BC = 80; + this->state = 14; + this->vel.y = -20.0f; } break; + case 14: - Math_SmoothStepToAngle(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + if (D_i5_801BE320[3] < (Animation_GetFrameCount(&D_MA_6016040) - 1)) { D_i5_801BE320[3]++; } - Macbeth_8019A198(actor); - actor->vel.y += 1.0f; - Macbeth_801A6984(actor); + + Macbeth_8019A198(this); + + this->vel.y += 1.0f; + + Macbeth_801A6984(this); + D_i5_801BE320[6] = 1; D_i5_801BE320[8] = 1; - if (actor->timer_0BC == 0) { - actor->vel.y = 0.0f; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603677C); + + if (this->timer_0BC == 0) { + this->vel.y = 0.0f; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aMaActor207Hitbox); D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; - actor->state = 4; + this->state = 4; } break; + case 15: - Math_SmoothStepToAngle(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos - 700.0f, 0.2f, 15.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, gPlayer[0].pos.y + 400.0f, 0.2f, 10.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - 700.0f, 0.2f, 15.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, gPlayer[0].pos.y + 400.0f, 0.2f, 10.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); + if (D_i5_801BE320[3] < 15) { D_i5_801BE320[3]++; } - Macbeth_8019A198(actor); - Macbeth_801A6984(actor); - if (actor->timer_0BC < 100) { - if (actor->timer_0BC == 98) { - AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_PLATECHARGE, actor->sfxSource, 4); + + Macbeth_8019A198(this); + Macbeth_801A6984(this); + + if (this->timer_0BC < 100) { + if (this->timer_0BC == 98) { + AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_PLATECHARGE, this->sfxSource, 4); } + Matrix_RotateY(gCalcMatrix, RAND_FLOAT(2.0f) * (M_DTOR * 180.0f), MTXF_NEW); + sp360.x = 0.0f; sp360.y = RAND_FLOAT(100.0f); sp360.z = RAND_FLOAT(200.0f) + 100.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp360, &sp354); + D_i5_801BE368[23] = 1.0f; - Macbeth_801AE800(actor->vwork[2].x + sp354.x - 50.0f, actor->vwork[2].y + sp354.y + 100.0f, - actor->vwork[2].z + sp354.z, actor->vwork[2].x, actor->vwork[2].y, actor->vwork[2].z); + + Macbeth_Effect379_Spawn(this->vwork[2].x + sp354.x - 50.0f, this->vwork[2].y + sp354.y + 100.0f, + this->vwork[2].z + sp354.z, this->vwork[2].x, this->vwork[2].y, + this->vwork[2].z); + D_i5_801BE368[23] = 2.0f; - Macbeth_801AE800(actor->vwork[4].x + sp354.x + 50.0f, actor->vwork[4].y + sp354.y + 100.0f, - actor->vwork[4].z + sp354.z, actor->vwork[4].x, actor->vwork[4].y, actor->vwork[4].z); + + Macbeth_Effect379_Spawn(this->vwork[4].x + sp354.x + 50.0f, this->vwork[4].y + sp354.y + 100.0f, + this->vwork[4].z + sp354.z, this->vwork[4].x, this->vwork[4].y, + this->vwork[4].z); } - if (actor->timer_0BC == 0) { + + if (this->timer_0BC == 0) { switch (D_i5_801BE320[18]) { case 0: case 1: @@ -4367,236 +4875,299 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[27] = 300; break; } - actor->timer_0BC = D_i5_801BE320[27]; - actor->state = 16; - Audio_KillSfxBySourceAndId(actor->sfxSource, NA_SE_EN_MABOSS_PLATECHARGE); + this->timer_0BC = D_i5_801BE320[27]; + this->state = 16; + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_MABOSS_PLATECHARGE); } break; + case 16: - Math_SmoothStepToAngle(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos - 250.0f, 0.1f, 15.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, 250.0f, 0.1f, 10.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, 0.0f, 0.1f, 20.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - 250.0f, 0.1f, 15.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, 250.0f, 0.1f, 10.0f, 0.01f); + if (D_i5_801BE320[3] < (Animation_GetFrameCount(&D_MA_6015C24) - 1)) { D_i5_801BE320[3]++; } - Macbeth_8019A198(actor); - Macbeth_801A6984(actor); - if (actor->timer_0BC < (D_i5_801BE320[27] - 40)) { - if ((actor->timer_0BC + 42) == D_i5_801BE320[27]) { - actor->sfxSource[0] = actor->vwork[2].x; - AUDIO_PLAY_SFX(NA_SE_EN_RNG_BEAM_SHOT, actor->sfxSource, 4); - actor->sfxSource[0] = actor->vwork[4].x; - AUDIO_PLAY_SFX(NA_SE_EN_RNG_BEAM_SHOT, actor->sfxSource, 4); - actor->sfxSource[0] = actor->obj.pos.x; + Macbeth_8019A198(this); + Macbeth_801A6984(this); + + if (this->timer_0BC < (D_i5_801BE320[27] - 40)) { + if ((this->timer_0BC + 42) == D_i5_801BE320[27]) { + this->sfxSource[0] = this->vwork[2].x; + AUDIO_PLAY_SFX(NA_SE_EN_RNG_BEAM_SHOT, this->sfxSource, 4); + this->sfxSource[0] = this->vwork[4].x; + AUDIO_PLAY_SFX(NA_SE_EN_RNG_BEAM_SHOT, this->sfxSource, 4); + this->sfxSource[0] = this->obj.pos.x; } + if (((gGameFrameCount % 2) == 0) && (D_i5_801BE320[15] == 0)) { - actor->vwork[6].x = actor->vwork[2].x + 80.0f; - actor->vwork[6].y = 0.0f; - actor->vwork[6].z = gPlayer[0].trueZpos + 50.0f; - actor->vwork[7].x = actor->vwork[4].x - 80.0f; - actor->vwork[7].y = 0.0f; - actor->vwork[7].z = gPlayer[0].trueZpos + 50.0f; - actor->vwork[6].z += actor->vel.z; - actor->vwork[7].z += actor->vel.z; - sp348.x = actor->vwork[6].x - actor->vwork[2].x; - sp348.y = actor->vwork[6].y - actor->vwork[2].y + 25.0f; - sp348.z = actor->vwork[6].z - actor->vwork[2].z; - Matrix_RotateZ(gCalcMatrix, -actor->vwork[3].z * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -actor->vwork[3].x * M_DTOR, MTXF_APPLY); - Matrix_RotateY(gCalcMatrix, -actor->vwork[3].y * M_DTOR, MTXF_APPLY); + this->vwork[6].x = this->vwork[2].x + 80.0f; + this->vwork[6].y = 0.0f; + this->vwork[6].z = gPlayer[0].trueZpos + 50.0f; + this->vwork[7].x = this->vwork[4].x - 80.0f; + this->vwork[7].y = 0.0f; + this->vwork[7].z = gPlayer[0].trueZpos + 50.0f; + this->vwork[6].z += this->vel.z; + this->vwork[7].z += this->vel.z; + + sp348.x = this->vwork[6].x - this->vwork[2].x; + sp348.y = this->vwork[6].y - this->vwork[2].y + 25.0f; + sp348.z = this->vwork[6].z - this->vwork[2].z; + + Matrix_RotateZ(gCalcMatrix, -this->vwork[3].z * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -this->vwork[3].x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, -this->vwork[3].y * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &sp348, &sp354); + D_i5_801BE368[14] = Math_RadToDeg(Math_Atan2F(sp354.x, sp354.z)); + temp = sqrtf(SQ(sp354.x) + SQ(sp354.z)); + D_i5_801BE368[13] = Math_RadToDeg(-Math_Atan2F(sp354.y, temp)); - Matrix_RotateY(gCalcMatrix, actor->vwork[3].y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->vwork[3].x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->vwork[3].z * M_DTOR, MTXF_APPLY); + + Matrix_RotateY(gCalcMatrix, this->vwork[3].y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->vwork[3].x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->vwork[3].z * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801BA744, &sp354); - sp348.x = actor->vwork[2].x + sp354.x; - sp348.y = actor->vwork[2].y + sp354.y + 25.0f; - sp348.z = actor->vwork[2].z + sp354.z; + + sp348.x = this->vwork[2].x + sp354.x; + sp348.y = this->vwork[2].y + sp354.y + 25.0f; + sp348.z = this->vwork[2].z + sp354.z; + sp33C.x = D_i5_801BE368[13]; sp33C.y = D_i5_801BE368[14]; sp33C.z = 0.0f; - sp330.x = actor->vwork[3].x; - sp330.y = actor->vwork[3].y; - sp330.z = actor->vwork[3].z; + + sp330.x = this->vwork[3].x; + sp330.y = this->vwork[3].y; + sp330.z = this->vwork[3].z; + func_effect_8007EE68(OBJ_EFFECT_380, &sp348, &sp33C, &sp330, &D_i5_801BA750, 5.0f); - sp348.x = actor->vwork[7].x - actor->vwork[4].x; - sp348.y = actor->vwork[7].y - actor->vwork[4].y + 25.0f; - sp348.z = actor->vwork[7].z - actor->vwork[4].z; - Matrix_RotateZ(gCalcMatrix, -actor->vwork[5].z * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -actor->vwork[5].x * M_DTOR, MTXF_APPLY); - Matrix_RotateY(gCalcMatrix, -actor->vwork[5].y * M_DTOR, MTXF_APPLY); + + sp348.x = this->vwork[7].x - this->vwork[4].x; + sp348.y = this->vwork[7].y - this->vwork[4].y + 25.0f; + sp348.z = this->vwork[7].z - this->vwork[4].z; + + Matrix_RotateZ(gCalcMatrix, -this->vwork[5].z * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -this->vwork[5].x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, -this->vwork[5].y * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &sp348, &sp354); + D_i5_801BE368[14] = Math_RadToDeg(Math_Atan2F(sp354.x, sp354.z)); + temp = sqrtf(SQ(sp354.x) + SQ(sp354.z)); + D_i5_801BE368[13] = Math_RadToDeg(-Math_Atan2F(sp354.y, temp)); - Matrix_RotateY(gCalcMatrix, actor->vwork[5].y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->vwork[5].x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->vwork[5].z * M_DTOR, MTXF_APPLY); + + Matrix_RotateY(gCalcMatrix, this->vwork[5].y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->vwork[5].x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->vwork[5].z * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801BA744, &sp354); - sp348.x = actor->vwork[4].x + sp354.x; - sp348.y = actor->vwork[4].y + sp354.y + 25.0f; - sp348.z = actor->vwork[4].z + sp354.z; + + sp348.x = this->vwork[4].x + sp354.x; + sp348.y = this->vwork[4].y + sp354.y + 25.0f; + sp348.z = this->vwork[4].z + sp354.z; + sp33C.x = D_i5_801BE368[13]; sp33C.y = D_i5_801BE368[14]; sp33C.z = 0.0f; - sp330.x = actor->vwork[5].x; - sp330.y = actor->vwork[5].y; - sp330.z = actor->vwork[5].z; + + sp330.x = this->vwork[5].x; + sp330.y = this->vwork[5].y; + sp330.z = this->vwork[5].z; func_effect_8007EE68(OBJ_EFFECT_380, &sp348, &sp33C, &sp330, &D_i5_801BA750, 10.0f); } } - if (actor->timer_0BC < (D_i5_801BE320[27] - 50)) { - Macbeth_801A78B0(actor); + + if (this->timer_0BC < (D_i5_801BE320[27] - 50)) { + Macbeth_801A78B0(this); } - if (actor->timer_0BC == 0) { - Audio_KillSfxBySourceAndId(actor->sfxSource, NA_SE_EN_RNG_BEAM_SHOT); - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_603677C); + if (this->timer_0BC == 0) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_RNG_BEAM_SHOT); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aMaActor207Hitbox); D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; - actor->state = 4; + this->state = 4; D_i5_801BE320[25] = 1; } break; + case 18: - Macbeth_8019A198(actor); - Macbeth_801A0308(actor, actor->obj.pos.z, actor->obj.rot.y, 0); - Math_SmoothStepToF(&actor->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos - 1200.0f, 0.1f, 35.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[5] + 600.0f + D_i5_801BE368[3], 0.1f, 20.0f, 10.0f); - if (D_i5_801BE368[3] < ((gPlayer[0].trueZpos - actor->obj.pos.z) / 5.0f)) { + Macbeth_8019A198(this); + Macbeth_801A0308(this, this->obj.pos.z, this->obj.rot.y, 0); + + Math_SmoothStepToF(&this->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - 1200.0f, 0.1f, 35.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[5] + 600.0f + D_i5_801BE368[3], 0.1f, 20.0f, 10.0f); + + if (D_i5_801BE368[3] < ((gPlayer[0].trueZpos - this->obj.pos.z) / 5.0f)) { Math_SmoothStepToF(&D_i5_801BE368[2], 15.0f, 0.2f, 2.0f, 0.01f); D_i5_801BE368[3] += D_i5_801BE368[2]; - } else if (((actor->fwork[5] + 600.0f) + D_i5_801BE368[3]) <= actor->obj.pos.y) { - actor->timer_0BC = 0; - actor->state = 19; + } else if (((this->fwork[5] + 600.0f) + D_i5_801BE368[3]) <= this->obj.pos.y) { + this->timer_0BC = 0; + this->state = 19; } - Macbeth_801A7CAC(actor); - Macbeth_801A6984(actor); + + Macbeth_Actor207_FacePlayer(this); + Macbeth_801A6984(this); break; + case 19: - actor->vel.z = gPlayer[0].vel.z; - Macbeth_801A7CAC(actor); + this->vel.z = gPlayer[0].vel.z; + + Macbeth_Actor207_FacePlayer(this); + D_i5_801BE368[4] += D_i5_801BE368[32]; D_i5_801BE368[5] += D_i5_801BE368[33]; D_i5_801BE368[6] += D_i5_801BE368[34]; + if (D_i5_801BE320[1] < 200) { D_i5_801BE320[1]++; } - Math_SmoothStepToF(&D_i5_801BE368[32], actor->obj.pos.x + RAND_FLOAT(500.0f), 0.2f, 20.0f, 0.01f); - Math_SmoothStepToF(&D_i5_801BE368[33], actor->obj.pos.y + RAND_FLOAT(100.0f), 0.2f, 10.0f, 0.01f); - Math_SmoothStepToF(&D_i5_801BE368[34], actor->obj.pos.y + RAND_FLOAT(500.0f), 0.2f, 20.0f, 0.01f); - if (actor->dmgType != DMG_NONE) { + + Math_SmoothStepToF(&D_i5_801BE368[32], this->obj.pos.x + RAND_FLOAT(500.0f), 0.2f, 20.0f, 0.01f); + Math_SmoothStepToF(&D_i5_801BE368[33], this->obj.pos.y + RAND_FLOAT(100.0f), 0.2f, 10.0f, 0.01f); + Math_SmoothStepToF(&D_i5_801BE368[34], this->obj.pos.y + RAND_FLOAT(500.0f), 0.2f, 20.0f, 0.01f); + + if (this->dmgType != DMG_NONE) { gPlayer[0].shields = 0; } - if (((gGameFrameCount % 16) == 0)) { - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); + + if ((gGameFrameCount % 16) == 0) { + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); } + D_i5_801BE368[9] = gPlayer[0].pos.x; - Math_SmoothStepToF(&actor->obj.pos.x, D_i5_801BE368[9], 0.2f, 35.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.y, gPlayer[0].pos.y, 0.3f, 15.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, gPlayer[0].trueZpos, 0.3f, 20.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.rot.x, 60.0f, 0.2f, 20.0f, 0.01f); - Macbeth_801A6984(actor); + + Math_SmoothStepToF(&this->obj.pos.x, D_i5_801BE368[9], 0.2f, 35.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.y, gPlayer[0].pos.y, 0.3f, 15.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos, 0.3f, 20.0f, 0.01f); + Math_SmoothStepToF(&this->obj.rot.x, 60.0f, 0.2f, 20.0f, 0.01f); + + Macbeth_801A6984(this); break; + case 20: - Math_SmoothStepToF(&actor->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); - Macbeth_8019A198(actor); - actor->vel.z = gActors[D_i5_801BE314].vel.z; + Math_SmoothStepToF(&this->obj.rot.z, 0.0f, 0.1f, 20.0f, 0.01f); + Macbeth_8019A198(this); + + this->vel.z = gActors[D_i5_801BE314].vel.z; + D_i5_801BE320[3]++; if (D_i5_801BE320[3] >= 60) { D_i5_801BE320[3] = 0; } - Macbeth_801A7A30(actor); - Macbeth_801A6984(actor); - Math_SmoothStepToF(&actor->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); - if (actor->obj.pos.z < -135200.0f) { - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y + sp374, actor->obj.pos.z, 50); + + Macbeth_801A7A30(this); + Macbeth_801A6984(this); + + Math_SmoothStepToF(&this->obj.rot.y, 0.0f, 0.1f, 20.0f, 0.01f); + + if (this->obj.pos.z < -135200.0f) { + BonusText_Display(this->obj.pos.x, this->obj.pos.y + sp374, this->obj.pos.z, 50); if (1) {} gHitCount += 51; D_ctx_80177850 = 15; - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 20.0f); - Macbeth_801AD624(actor->vwork[2].x, actor->vwork[2].y, actor->vwork[2].z, RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, 2.0f, RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT_CENTERED(10.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 11, 1.0f); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 20.0f); + Macbeth_Effect357_Spawn1(this->vwork[2].x, this->vwork[2].y, this->vwork[2].z, + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, 2.0f, RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), 11, 1.0f); gControllerRumbleFlags[gMainController] = 1; gControllerRumbleTimers[gMainController] = 15; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, actor->sfxSource, 4); - actor->state = 21; + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, this->sfxSource, 4); + this->state = 21; } break; + case 21: - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); break; + default: break; } - if ((actor->dmgType != DMG_NONE) && (actor->state >= 2)) { - actor->dmgType = DMG_NONE; - if ((actor->dmgPart == 0) && (D_i5_801BE320[9] > 0) && ((gPlayer[0].trueZpos - actor->obj.pos.z) > 200.0f)) { - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, actor->sfxSource, 4); - actor->iwork[7] = 15; - D_i5_801BE320[9] -= actor->damage; - Macbeth_801AD624(actor->obj.pos.x, actor->obj.pos.y + 80, actor->obj.pos.z + 50.0f, - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.0f), RAND_FLOAT_CENTERED(3.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), - 3, RAND_FLOAT(1.0f)); - if (D_i5_801BE320[9] <= 0) { - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 4); - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y + 80.0f, actor->obj.pos.z + 50.0f, 5.0f); - for (i = 0; i < 2; i++) { - Macbeth_801AD624(actor->obj.pos.x, actor->obj.pos.y + 80.0f, actor->obj.pos.z + 50.0f, + + if ((this->dmgType != DMG_NONE) && (this->state >= 2)) { + this->dmgType = DMG_NONE; + if ((this->dmgPart == 0) && (D_i5_801BE320[9] > 0) && ((gPlayer[0].trueZpos - this->obj.pos.z) > 200.0f)) { + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + + this->iwork[7] = 15; + + D_i5_801BE320[9] -= this->damage; + + Macbeth_Effect357_Spawn1(this->obj.pos.x, this->obj.pos.y + 80, this->obj.pos.z + 50.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.0f), RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.f), + RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 3, RAND_FLOAT(1.0f)); - } - Macbeth_801AD624(actor->obj.pos.x, actor->obj.pos.y + 80.0f, actor->obj.pos.z + 50.0f, - RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(15.0f), -2.0f, RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), - (s32) (RAND_FLOAT(50.0f) + 70.0f), 8, 1.0f); - } - } else if ((actor->dmgPart == 1) && (D_i5_801BE320[10] > 0) && - ((gPlayer[0].trueZpos - actor->obj.pos.z) > 200.0f)) { - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, actor->sfxSource, 4); - actor->iwork[8] = 16; - D_i5_801BE320[10] -= actor->damage; - Macbeth_801AD624(actor->obj.pos.x, actor->obj.pos.y - 30.0f, actor->obj.pos.z, RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), - RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 3, RAND_FLOAT(1.0f)); - if (D_i5_801BE320[10] <= 0) { - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 4); - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y - 30.0f, actor->obj.pos.z, 6.0f); - for (i = 0; i < 10; i++) { - Macbeth_801AD624(actor->obj.pos.x, actor->obj.pos.y - 30.0f, actor->obj.pos.z, + if (D_i5_801BE320[9] <= 0) { + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y + 80.0f, this->obj.pos.z + 50.0f, 5.0f); + for (i = 0; i < 2; i++) { + Macbeth_Effect357_Spawn1( + this->obj.pos.x, this->obj.pos.y + 80.0f, this->obj.pos.z + 50.0f, RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT(5.0f), RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 3, RAND_FLOAT(1.0f)); + } + Macbeth_Effect357_Spawn1(this->obj.pos.x, this->obj.pos.y + 80.0f, this->obj.pos.z + 50.0f, + RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(15.0f), -2.0f, RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), 8, 1.0f); + } + } else if ((this->dmgPart == 1) && (D_i5_801BE320[10] > 0) && + ((gPlayer[0].trueZpos - this->obj.pos.z) > 200.0f)) { + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + + this->iwork[8] = 16; + + D_i5_801BE320[10] -= this->damage; + + Macbeth_Effect357_Spawn1(this->obj.pos.x, this->obj.pos.y - 30.0f, this->obj.pos.z, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 3, RAND_FLOAT(1.0f)); + + if (D_i5_801BE320[10] <= 0) { + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y - 30.0f, this->obj.pos.z, 6.0f); + + for (i = 0; i < 10; i++) { + Macbeth_Effect357_Spawn1( + this->obj.pos.x, this->obj.pos.y - 30.0f, this->obj.pos.z, RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT(7.0f) + 7.0f, RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(30.0f), RAND_FLOAT_CENTERED(30.0f), + RAND_FLOAT_CENTERED(30.0f), (s32) (RAND_FLOAT(50.0f) + 70.0f), 3, RAND_FLOAT(1.0f)); } - Macbeth_801AD624(actor->obj.pos.x, actor->obj.pos.y - 30.0f, actor->obj.pos.z + 50.0f, - RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(15.0f), -2.0f, RAND_FLOAT(360.0f), - RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(10.0f), - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), - (s32) (RAND_FLOAT(50.0f) + 70.0f), 9, 1.0f); + Macbeth_Effect357_Spawn1(this->obj.pos.x, this->obj.pos.y - 30.0f, this->obj.pos.z + 50.0f, + RAND_FLOAT_CENTERED(3.0f), RAND_FLOAT(15.0f), -2.0f, RAND_FLOAT(360.0f), + RAND_FLOAT(360.0f), RAND_FLOAT(360.0f), RAND_FLOAT_CENTERED(10.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), + (s32) (RAND_FLOAT(50.0f) + 70.0f), 9, 1.0f); } } else { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } + if (D_i5_801BE320[4] != 0) { - if ((actor->state != 8) && (actor->state != 10) && (actor->state != 9)) { + if ((this->state != 8) && (this->state != 10) && (this->state != 9)) { D_i5_801BE320[5] = 1; D_i5_801BE320[7] = 1; D_i5_801BE320[6] = 1; @@ -4606,14 +5177,15 @@ void Macbeth_Actor207_Update(Actor* actor) { D_i5_801BE320[31] = 30; D_i5_801BE368[12] = 0.0f; D_i5_801BE368[13] = 0.0f; - actor->state = 8; + this->state = 8; } } + if ((D_i5_801BE320[16] != 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) { if (gBossFrameCount == 0) { Radio_PlayMessage(gMsg_ID_2225, RCID_SLIPPY); } else if (gBossFrameCount > 155) { - gShowBossHealth = 1; + gShowBossHealth = true; gBossHealthBar = (s32) ((D_i5_801BE320[29] / 250.f) * 85.0f); gBossHealthBar += (s32) ((D_i5_801BE320[9] / 200.f) * 85.0f); gBossHealthBar += (s32) ((D_i5_801BE320[10] / 250.f) * 85.0f); @@ -4621,48 +5193,53 @@ void Macbeth_Actor207_Update(Actor* actor) { gBossFrameCount++; } - if (actor->iwork[7] > 0) { - actor->iwork[7]--; + if (this->iwork[7] > 0) { + this->iwork[7]--; } - if (actor->iwork[8] > 0) { - actor->iwork[8]--; + if (this->iwork[8] > 0) { + this->iwork[8]--; } - if (actor->iwork[9] > 0) { - actor->iwork[9]--; + if (this->iwork[9] > 0) { + this->iwork[9]--; } - D_i5_801BE368[14] = actor->vwork[0].x; - D_i5_801BE368[15] = actor->vwork[0].y; - D_i5_801BE368[16] = actor->vwork[0].z; - D_i5_801BE368[24] = actor->vwork[2].x; - D_i5_801BE368[25] = actor->vwork[2].y; - D_i5_801BE368[26] = actor->vwork[2].z; - D_i5_801BE368[27] = actor->vwork[4].x; - D_i5_801BE368[28] = actor->vwork[4].y; - D_i5_801BE368[29] = actor->vwork[4].z; - D_i5_801BE368[19] = actor->vel.z; + + D_i5_801BE368[14] = this->vwork[0].x; + D_i5_801BE368[15] = this->vwork[0].y; + D_i5_801BE368[16] = this->vwork[0].z; + D_i5_801BE368[24] = this->vwork[2].x; + D_i5_801BE368[25] = this->vwork[2].y; + D_i5_801BE368[26] = this->vwork[2].z; + D_i5_801BE368[27] = this->vwork[4].x; + D_i5_801BE368[28] = this->vwork[4].y; + D_i5_801BE368[29] = this->vwork[4].z; + D_i5_801BE368[19] = this->vel.z; D_i5_801BE368[30] = RAND_FLOAT(1.0f); D_i5_801BE368[31] = RAND_FLOAT(1.0f); + if (D_i5_801BE368[30] < 0.5f) { D_i5_801BE368[30] = 0.6f; } if (D_i5_801BE368[31] < 0.8f) { D_i5_801BE368[31] = 0.8f; } + Math_SmoothStepToF(&D_i5_801BE368[20], 0.0f, 0.4f, 25.0f, 0.1f); Math_SmoothStepToF(&D_i5_801BE368[21], 0.0f, 0.4f, 20.0f, 0.1f); Math_SmoothStepToF(&D_i5_801BE368[22], 0.0f, 0.2f, 20.0f, 0.1f); + if ((D_i5_801BE368[20] <= 1.0f) && (D_i5_801BE368[21] <= 1.0f)) { D_i5_801BE368[20] = 255.0f; D_i5_801BE368[21] = 160.0f; D_i5_801BE368[22] = 16.0f; } - if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (actor->state < 20)) { + + if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_COMPLETE) && (this->state < 20)) { D_i5_801BE320[3] = 0; D_i5_801BE320[2] = 1; D_i5_801BE320[31] = 30; - actor->state = 20; + this->state = 20; } switch (D_i5_801BE320[2]) { @@ -4670,10 +5247,12 @@ void Macbeth_Actor207_Update(Actor* actor) { temp_a3 = Animation_GetFrameData(&D_MA_600CD18, D_i5_801BE320[3], spD4); Math_SmoothStepToVec3fArray(spD4, D_i5_801BE430, 1, temp_a3, 0.2f, 100.0f, 0.01f); break; + case 2: temp_a3 = Animation_GetFrameData(&D_MA_601D188, D_i5_801BE320[3], spD4); Math_SmoothStepToVec3fArray(spD4, D_i5_801BE430, 1, temp_a3, 0.15f, 100.0f, 0.01f); break; + case 3: temp_a3 = Animation_GetFrameData(&D_MA_6017714, D_i5_801BE320[3], spD4); if (D_i5_801BE320[31] != 0) { @@ -4682,18 +5261,22 @@ void Macbeth_Actor207_Update(Actor* actor) { Math_SmoothStepToVec3fArray(spD4, D_i5_801BE430, 1, temp_a3, 1.0f, 100.0f, 0.01f); } break; + case 4: temp_a3 = Animation_GetFrameData(&D_MA_6016B2C, D_i5_801BE320[3], spD4); Math_SmoothStepToVec3fArray(spD4, D_i5_801BE430, 1, temp_a3, 0.2f, 50.0f, 0.01f); break; + case 5: temp_a3 = Animation_GetFrameData(&D_MA_60163F0, D_i5_801BE320[3], spD4); Math_SmoothStepToVec3fArray(spD4, D_i5_801BE430, 1, temp_a3, 0.2f, 100.0f, 0.01f); break; + case 6: temp_a3 = Animation_GetFrameData(&D_MA_6016040, D_i5_801BE320[3], spD4); Math_SmoothStepToVec3fArray(spD4, D_i5_801BE430, 1, temp_a3, 0.1f, 50.0f, 0.01f); break; + case 7: temp_a3 = Animation_GetFrameData(&D_MA_6015C24, D_i5_801BE320[3], spD4); Math_SmoothStepToVec3fArray(spD4, D_i5_801BE430, 1, temp_a3, 0.1f, 50.0f, 0.01f); @@ -4705,13 +5288,14 @@ void Macbeth_Actor207_Update(Actor* actor) { } } -bool Macbeth_801ABC14(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Macbeth_Actor207_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + Actor* this = (Actor*) thisx; s16 sp62; RCP_SetupDL(&gMasterDisp, SETUPDL_29); gSPClearGeometryMode(gMasterDisp++, G_TEXTURE_GEN); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); + switch (limbIndex) { case 2: case 3: @@ -4719,7 +5303,7 @@ bool Macbeth_801ABC14(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* case 25: case 26: case 27: - if (actor->state == 9) { + if (this->state == 9) { *dList = NULL; return false; } @@ -4780,13 +5364,14 @@ bool Macbeth_801ABC14(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return true; } break; + default: break; } switch (limbIndex) { case 14: - if ((actor->iwork[7] % 2) != 0) { + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_28); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } @@ -4794,6 +5379,7 @@ bool Macbeth_801ABC14(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* *dList = NULL; } break; + case 9: case 10: case 11: @@ -4801,7 +5387,7 @@ bool Macbeth_801ABC14(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* case 18: case 19: case 20: - if ((actor->iwork[8] % 2) != 0) { + if ((this->iwork[8] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_28); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } @@ -4809,92 +5395,97 @@ bool Macbeth_801ABC14(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* *dList = NULL; } break; + default: break; } - if ((actor->iwork[9] % 2) != 0) { + if ((this->iwork[9] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_28); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } return false; } -void Macbeth_801AC1C0(s32 limbIndex, Vec3f* rot, void* data) { +void Macbeth_Actor207_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp2C = { 0.0f, 0.0f, 0.0f }; - Actor* actor = (Actor*) data; + Actor207* this = (Actor207*) thisx; switch (limbIndex) { case 14: - Matrix_MultVec3f(gCalcMatrix, &sp2C, &actor->vwork[0]); - Matrix_GetYRPAngles(gCalcMatrix, &actor->vwork[1]); + Matrix_MultVec3f(gCalcMatrix, &sp2C, &this->vwork[0]); + Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[1]); break; case 4: - Matrix_MultVec3f(gCalcMatrix, &sp2C, &actor->vwork[2]); - Matrix_GetYRPAngles(gCalcMatrix, &actor->vwork[3]); + Matrix_MultVec3f(gCalcMatrix, &sp2C, &this->vwork[2]); + Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[3]); break; case 7: - Matrix_MultVec3f(gCalcMatrix, &sp2C, &actor->vwork[4]); - Matrix_GetYRPAngles(gCalcMatrix, &actor->vwork[5]); + Matrix_MultVec3f(gCalcMatrix, &sp2C, &this->vwork[4]); + Matrix_GetYRPAngles(gCalcMatrix, &this->vwork[5]); break; } } -void Macbeth_Actor207_Draw(Actor* actor) { +void Macbeth_Actor207_Draw(Actor207* this) { if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) { - if (((gPlayer[0].trueZpos - actor->obj.pos.z) > 7000.0f) || - ((gPlayer[0].trueZpos - actor->obj.pos.z) < -1000.0f)) { + if (((gPlayer[0].trueZpos - this->obj.pos.z) > 7000.0f) || + ((gPlayer[0].trueZpos - this->obj.pos.z) < -1000.0f)) { return; } } else { - if (((gPlayer[0].trueZpos - actor->obj.pos.z) > 7000.0f) || - ((gPlayer[0].trueZpos - actor->obj.pos.z) < -5000.0f)) { + if (((gPlayer[0].trueZpos - this->obj.pos.z) > 7000.0f) || + ((gPlayer[0].trueZpos - this->obj.pos.z) < -5000.0f)) { return; } } if (D_i5_801BE320[2] == 0) { - Matrix_Translate(gCalcMatrix, actor->fwork[25], 0.0f, 0.0f, MTXF_APPLY); - Matrix_RotateY(gCalcMatrix, actor->fwork[26] * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gCalcMatrix, actor->fwork[29] * M_DTOR, MTXF_APPLY); + Matrix_Translate(gCalcMatrix, this->fwork[25], 0.0f, 0.0f, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->fwork[26] * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gCalcMatrix, this->fwork[29] * M_DTOR, MTXF_APPLY); Animation_GetFrameData(&D_MA_601EA28, D_i5_801BE320[3], D_i5_801BE430); } - Animation_DrawSkeleton(3, D_MA_600D1E4, D_i5_801BE430, Macbeth_801ABC14, Macbeth_801AC1C0, actor, gCalcMatrix); + Animation_DrawSkeleton(3, D_MA_600D1E4, D_i5_801BE430, Macbeth_Actor207_OverrideLimbDraw, + Macbeth_Actor207_PostLimbDraw, this, gCalcMatrix); } void Macbeth_801AC42C(s32 arg0) { } -void Macbeth_Actor206_Update(Actor* actor) { - switch (actor->state) { +void Macbeth_MaTrainCar1_Update(MaTrainCar1* this) { + switch (this->state) { case 0: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); - Macbeth_8019A728(actor); - if (actor->iwork[1] != 0) { + Macbeth_8019A198(this); + Macbeth_801A015C(this); + Macbeth_8019A728(this); + if (this->iwork[1] != 0) { Radio_PlayMessage(gMsg_ID_17420, RCID_BOSS_MACBETH); - AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_HATCH, actor->sfxSource, 4); - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035A94); - actor->state++; + AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_HATCH, this->sfxSource, 4); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_MA_6035A94); + this->state++; } - Macbeth_8019A830(actor); + Macbeth_8019A830(this); break; + case 1: - Macbeth_8019A198(actor); - Macbeth_801A015C(actor); + Macbeth_8019A198(this); + Macbeth_801A015C(this); Math_SmoothStepToF(&D_i5_801BE368[8], 160.0f, 0.1f, 3.0f, 0.01f); - Macbeth_8019A830(actor); + Macbeth_8019A830(this); break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, actor->sfxSource, 4); + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } -bool Macbeth_801AC5AC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Macbeth_MaTrainCar1_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { RCP_SetupDL(&gMasterDisp, SETUPDL_29); gSPClearGeometryMode(gMasterDisp++, G_TEXTURE_GEN); + if ((limbIndex == 1) || (limbIndex == 3)) { gSPTexture(gMasterDisp++, 3000, 3000, 0, G_TX_RENDERTILE, G_ON); gSPSetGeometryMode(gMasterDisp++, G_TEXTURE_GEN); @@ -4907,17 +5498,17 @@ bool Macbeth_801AC5AC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return false; } -void Macbeth_801AC6B4(Actor* actor) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos.x = 0.0f; - actor->obj.pos.y = 3000.0f; - actor->obj.pos.z = 0.0f; - actor->obj.rot.y = 180.0f; - Object_SetInfo(&actor->info, actor->obj.id); - AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, actor->sfxSource, 0); - actor->animFrame = 1; +void Macbeth_801AC6B4(ActorCutscene* this) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.pos.x = 0.0f; + this->obj.pos.y = 3000.0f; + this->obj.pos.z = 0.0f; + this->obj.rot.y = 180.0f; + Object_SetInfo(&this->info, this->obj.id); + AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, this->sfxSource, 0); + this->animFrame = 1; } static f32 D_i5_801BA768 = 0.0f; @@ -4933,11 +5524,11 @@ void Macbeth_LevelStart(Player* player) { sp4C = 0.0f; sp48 = 0.0f; sp44 = 0.0f; + Player_UpdatePath(player); switch (player->csState) { case 0: - gLevelObjects = SEGMENTED_TO_VIRTUAL(D_MA_6035678); for (i = 0, objInit = gLevelObjects; objInit->id != OBJ_INVALID; i++, objInit++) { @@ -4951,11 +5542,14 @@ void Macbeth_LevelStart(Player* player) { } gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 255; + player->zPath -= 800.0f; player->csState = 1; + D_i5_801BE24C = 8.0f; D_i5_801BA768 = 0.0f; break; + case 1: gCsFrameCount = 0; player->gravity = 0.0f; @@ -4972,7 +5566,7 @@ void Macbeth_LevelStart(Player* player) { player->csState = 2; gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; gFillScreenAlpha = 255; - Macbeth_801ACF6C(); + Macbeth_EffectClouds_Spawn(); /* fallthrough */ case 2: if (gCsFrameCount < 30) { @@ -4980,9 +5574,9 @@ void Macbeth_LevelStart(Player* player) { gFillScreenAlpha = 255; } if ((gCsFrameCount < 60) && ((gCsFrameCount % 16U) == 0)) { - Macbeth_801ACF6C(); + Macbeth_EffectClouds_Spawn(); } else if ((gCsFrameCount < 100) && ((gCsFrameCount % 32) == 0)) { - Macbeth_801ACF6C(); + Macbeth_EffectClouds_Spawn(); } if (gCsFrameCount > 50) { gCsCamEyeX = zeroVar; @@ -4991,9 +5585,11 @@ void Macbeth_LevelStart(Player* player) { gCsCamAtX = zeroVar; gCsCamAtY = 42.0f; gCsCamAtZ = -800.0f; + D_ctx_80177A48[0] = 0.1f; D_ctx_80177A48[1] = 0.1f; D_ctx_80177A48[2] = 0.1f; + if (gCsFrameCount < 80) { sp4C = 5.0f; sp48 = 8.0f; @@ -5012,6 +5608,7 @@ void Macbeth_LevelStart(Player* player) { } } break; + case 3: AUDIO_PLAY_BGM(NA_BGM_STAGE_MA); gLevelStartStatusScreenTimer = 50; @@ -5025,6 +5622,7 @@ void Macbeth_LevelStart(Player* player) { gObjectLoadIndex = 40; player->csState = 4; break; + case 4: default: break; @@ -5036,10 +5634,13 @@ void Macbeth_LevelStart(Player* player) { Math_SmoothStepToF(&player->cam.at.x, gCsCamAtX, D_ctx_80177A48[0], sp4C, 0); Math_SmoothStepToF(&player->cam.at.y, gCsCamAtY, D_ctx_80177A48[1], sp48, 0); Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[2], sp44, 0); + player->pathHeight = 0.0f; player->rockPhase += player->vel.z * 5.0f; player->rockAngle = SIN_DEG(player->rockPhase) * 0.7f; + Texture_Scroll(D_landmaster_3002E80, 32, 32, 0); + if ((gCsFrameCount > 150) && ((-player->trueZpos - player->zPath) > 200.0f)) { if (D_i5_801BA768 < 11.5f) { D_i5_801BA768 += 0.2f; @@ -5048,31 +5649,32 @@ void Macbeth_LevelStart(Player* player) { } } -void Macbeth_801ACE40(Effect* effect) { - Effect_Initialize(effect); - effect->obj.status = OBJ_INIT; - effect->obj.pos.x = gPlayer[0].cam.eye.x + RAND_FLOAT_CENTERED(600.0f); - effect->obj.pos.y = gPlayer[0].cam.eye.y - 1000.0f; - effect->obj.pos.z = gPlayer[0].trueZpos - 2000.0f; - effect->obj.id = OBJ_EFFECT_CLOUDS; - effect->timer_50 = 80; - effect->unk_46 = 144; - effect->vel.x = 10.0f; - effect->vel.z = 40.0f; - effect->vel.y = 8.0f; - effect->scale2 = RAND_FLOAT(15.0f) + 10.0f; +void Macbeth_EffectClouds_Setup(EffectClouds* this) { + Effect_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.pos.x = gPlayer[0].cam.eye.x + RAND_FLOAT_CENTERED(600.0f); + this->obj.pos.y = gPlayer[0].cam.eye.y - 1000.0f; + this->obj.pos.z = gPlayer[0].trueZpos - 2000.0f; + this->obj.id = OBJ_EFFECT_CLOUDS; + this->timer_50 = 80; + this->unk_46 = 144; + this->vel.x = 10.0f; + this->vel.z = 40.0f; + this->vel.y = 8.0f; + this->scale2 = RAND_FLOAT(15.0f) + 10.0f; + if (Rand_ZeroOne() < 0.5f) { - effect->obj.rot.z = 180.0f; + this->obj.rot.z = 180.0f; } - Object_SetInfo(&effect->info, effect->obj.id); + Object_SetInfo(&this->info, this->obj.id); } -void Macbeth_801ACF6C(void) { +void Macbeth_EffectClouds_Spawn(void) { s32 i; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.status == OBJ_FREE) { - Macbeth_801ACE40(&gEffects[i]); + Macbeth_EffectClouds_Setup(&gEffects[i]); break; } } @@ -5114,12 +5716,13 @@ void Macbeth_801AD144(PlayerShot* shot) { actor = &gActors[0]; for (i = 0; i < ARRAY_COUNT(gActors); i++, actor++) { - if ((actor->obj.status == OBJ_ACTIVE) && (actor->timer_0C2 == 0) && (actor->obj.id >= OBJ_ACTOR_205) && - (actor->obj.id <= OBJ_ACTOR_213)) { + if ((actor->obj.status == OBJ_ACTIVE) && (actor->timer_0C2 == 0) && + (actor->obj.id >= OBJ_ACTOR_MA_LOCOMOTIVE) && (actor->obj.id <= OBJ_ACTOR_MA_TRAIN_CAR_7)) { temp_s6 = gGameFrameCount % 8U; var_s1 = &actor->info.hitbox[0]; temp_ft3 = var_s1[0]; var_s1++; + if (temp_ft3 != 0) { for (j = 0; j < temp_ft3; j++, var_s1 += 6) { if (var_s1[0] == 200000.0f) { @@ -5135,17 +5738,22 @@ void Macbeth_801AD144(PlayerShot* shot) { Matrix_RotateX(gCalcMatrix, -actor->obj.rot.x * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -actor->obj.rot.y * M_DTOR, MTXF_APPLY); } + if ((j == temp_s6) && (var_s1[1] > -100.0f) && (var_s1[3] > -100.0f)) { sp8C.x = shot->obj.pos.x - actor->obj.pos.x; sp8C.y = shot->obj.pos.y - actor->obj.pos.y; sp8C.z = shot->obj.pos.z - actor->obj.pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp8C, &sp80); + test.x = (var_s1[4] + actor->obj.pos.x) - (actor->obj.pos.x + sp80.x); test.y = (var_s1[2] + actor->obj.pos.y) - (actor->obj.pos.y + sp80.y); test.z = (var_s1[0] + actor->obj.pos.z) - (actor->obj.pos.z + sp80.z); + if ((gLevelMode == LEVELMODE_ON_RAILS) && (test.z < 0.0f)) { test.z *= 0.6f; } + if (VEC3F_MAG(&test) < temp_fs2) { actor->dmgPart = j; actor->dmgType = -1; @@ -5165,110 +5773,120 @@ void Macbeth_801AD144(PlayerShot* shot) { } } -void Macbeth_801AD554(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 xRot, f32 yRot, - f32 zRot, f32 argA, f32 argB, f32 argC, s16 argD, s16 argE, f32 scale2) { - Effect_Initialize(effect); - effect->obj.status = OBJ_ACTIVE; - effect->obj.id = OBJ_EFFECT_357; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->obj.rot.x = xRot; - effect->obj.rot.y = yRot; - effect->obj.rot.z = zRot; - effect->vel.x = xVel; - effect->vel.y = yVel; - effect->vel.z = zVel; - effect->scale2 = scale2; - effect->timer_50 = argD; - effect->unk_60.x = argA; - effect->unk_60.y = argB; - effect->unk_60.z = argC; - effect->unk_44 = argE; - Object_SetInfo(&effect->info, effect->obj.id); +void Macbeth_Effect357_Setup(Effect357* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 xRot, + f32 yRot, f32 zRot, f32 argA, f32 argB, f32 argC, s16 argD, s16 argE, f32 scale2) { + Effect_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_EFFECT_357; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->obj.rot.x = xRot; + this->obj.rot.y = yRot; + this->obj.rot.z = zRot; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; + this->scale2 = scale2; + this->timer_50 = argD; + this->unk_60.x = argA; + this->unk_60.y = argB; + this->unk_60.z = argC; + this->unk_44 = argE; + Object_SetInfo(&this->info, this->obj.id); } -void Macbeth_801AD624(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 xRot, f32 yRot, f32 zRot, - f32 arg9, f32 argA, f32 argB, s16 argC, s16 argD, f32 scale2) { +void Macbeth_Effect357_Spawn1(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 xRot, f32 yRot, f32 zRot, + f32 arg9, f32 argA, f32 argB, s16 argC, s16 argD, f32 scale2) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Macbeth_801AD554(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, xRot, yRot, zRot, arg9, argA, argB, argC, - argD, scale2); + Macbeth_Effect357_Setup(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, xRot, yRot, zRot, arg9, argA, + argB, argC, argD, scale2); break; } } } + void Macbeth_801AD6E8(void) { } -void Macbeth_Actor220_Update(Actor* actor) { +void Macbeth_MaBombDrop_Update(MaBombDrop* this) { Vec3f sp4C = { 0.0f, -10.0f, 0.0f }; - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -500.0f) { - Object_Kill(&actor->obj, actor->sfxSource); + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -500.0f) { + Object_Kill(&this->obj, this->sfxSource); } - switch (actor->state) { + switch (this->state) { case 0: - if ((actor->timer_0BC == 0) && - ((actor->vel.y -= 0.5f, (Object_CheckCollision(actor->index, &actor->obj.pos, &sp4C, 1) != 0)) || - (actor->obj.pos.y < (gGroundHeight + 10.0f)) || (actor->iwork[0] != 0))) { - actor->vel.x = 0.0f; - actor->vel.y = 0.0f; - actor->vel.z = 0.0f; - if (actor->obj.pos.y < (gGroundHeight + 10.0f)) { - actor->obj.pos.y = gGroundHeight; + if ((this->timer_0BC == 0) && + ((this->vel.y -= 0.5f, (Object_CheckCollision(this->index, &this->obj.pos, &sp4C, 1) != 0)) || + (this->obj.pos.y < (gGroundHeight + 10.0f)) || (this->iwork[0] != 0))) { + this->vel.x = 0.0f; + this->vel.y = 0.0f; + this->vel.z = 0.0f; + + if (this->obj.pos.y < (gGroundHeight + 10.0f)) { + this->obj.pos.y = gGroundHeight; } - actor->state = 1; - actor->timer_0BC = 200; - actor->unk_046 = 192; - actor->scale = 2.5f; - actor->fwork[0] = 2.5f; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, actor->sfxSource, 4); - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y + 30.0f, actor->obj.pos.z, 7.0f); - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y + 30.0f, actor->obj.pos.z, 0.0f, 0.0f, 0.0f, - 4.0f, 5); - if (actor->obj.pos.y < (gGroundHeight + 10.0f)) { - PlayerShot_SpawnEffect344(actor->obj.pos.x, 3.0f, actor->obj.pos.z, actor->obj.pos.x, - actor->obj.pos.z, 0.0f, 0.0f, 90.0f, 5.0f, 0, 0); + + this->state = 1; + this->timer_0BC = 200; + this->unk_046 = 192; + this->scale = 2.5f; + this->fwork[0] = 2.5f; + + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); + + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 7.0f); + + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, 4.0f, 5); + + if (this->obj.pos.y < (gGroundHeight + 10.0f)) { + PlayerShot_SpawnEffect344(this->obj.pos.x, 3.0f, this->obj.pos.z, this->obj.pos.x, this->obj.pos.z, + 0.0f, 0.0f, 90.0f, 5.0f, 0, 0); } gControllerRumbleFlags[gMainController] = 1; gControllerRumbleTimers[gMainController] = 10; } break; + case 1: - actor->scale += ((20.0f - actor->scale) * 0.1f); - if (actor->scale > 19.0f) { - actor->fwork[0] -= 0.3f; - actor->unk_046 -= 20; - if (actor->unk_046 < 0) { - Object_Kill(&actor->obj, actor->sfxSource); + this->scale += ((20.0f - this->scale) * 0.1f); + if (this->scale > 19.0f) { + this->fwork[0] -= 0.3f; + this->unk_046 -= 20; + if (this->unk_046 < 0) { + Object_Kill(&this->obj, this->sfxSource); } } - actor->obj.rot.y = 180.0f - actor->obj.rot.y; - if ((fabsf(gPlayer[0].trueZpos - actor->obj.pos.z) < 40.0f) && - (fabsf(gPlayer[0].pos.x - actor->obj.pos.x) < 80.0f)) { - if ((gPlayer[0].pos.y - actor->obj.pos.y > -5.0f) && - (gPlayer[0].pos.y - actor->obj.pos.y < (actor->scale * 35.0f)) && (gPlayer[0].mercyTimer == 0)) { - Player_ApplyDamage(&gPlayer[0], 0, actor->info.damage); + + this->obj.rot.y = 180.0f - this->obj.rot.y; + + if ((fabsf(gPlayer[0].trueZpos - this->obj.pos.z) < 40.0f) && + (fabsf(gPlayer[0].pos.x - this->obj.pos.x) < 80.0f)) { + if ((gPlayer[0].pos.y - this->obj.pos.y > -5.0f) && + (gPlayer[0].pos.y - this->obj.pos.y < (this->scale * 35.0f)) && (gPlayer[0].mercyTimer == 0)) { + Player_ApplyDamage(&gPlayer[0], 0, this->info.damage); } } break; } } -void Macbeth_Actor220_Draw(Actor* actor) { - switch (actor->state) { +void Macbeth_MaBombDrop_Draw(MaBombDrop* this) { + switch (this->state) { case 0: - Graphics_SetScaleMtx(actor->scale); + Graphics_SetScaleMtx(this->scale); RCP_SetupDL_60(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); gSPDisplayList(gMasterDisp++, D_ENMY_PLANET_4008CE0); RCP_SetupDL(&gMasterDisp, SETUPDL_64); break; + case 1: - Matrix_Scale(gGfxMatrix, actor->fwork[0], actor->scale, 2.5f, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->fwork[0], this->scale, 2.5f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL_40(); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -5278,51 +5896,54 @@ void Macbeth_Actor220_Draw(Actor* actor) { } } -void Macbeth_801ADC08(Actor* actor, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_220; - actor->obj.pos.x = xPos; - actor->obj.pos.y = yPos; - actor->obj.pos.z = zPos; +void Macbeth_MaBombDrop_Setup(MaBombDrop* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_MA_BOMBDROP; + + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + if (xVel == 999.9f) { - actor->iwork[0] = 1; - actor->vel.x = 0.0f; + this->iwork[0] = 1; + this->vel.x = 0.0f; } else { - actor->vel.x = xVel; - actor->iwork[0] = 0; + this->vel.x = xVel; + this->iwork[0] = 0; } - actor->vel.y = yVel; - actor->vel.z = zVel; - actor->timer_0BC = 0; - Object_SetInfo(&actor->info, actor->obj.id); - AUDIO_PLAY_SFX(NA_SE_EN_FALLING_DOWN, actor->sfxSource, 4); + + this->vel.y = yVel; + this->vel.z = zVel; + this->timer_0BC = 0; + Object_SetInfo(&this->info, this->obj.id); + AUDIO_PLAY_SFX(NA_SE_EN_FALLING_DOWN, this->sfxSource, 4); } -void Macbeth_801ADCEC(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { +void Macbeth_MaBombDrop_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { s32 i; for (i = ARRAY_COUNT(gActors) - 1; i >= 0; i--) { if (gActors[i].obj.status == OBJ_FREE) { - Macbeth_801ADC08(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); + Macbeth_MaBombDrop_Setup(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); break; } } } -void Macbeth_Actor221_Update(Actor* actor) { +void Macbeth_MaSpear_Update(MaSpear* this) { Vec3f sp3C = { 0.0f, -10.0f, 0.0f }; s32 var_v0; - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -500.0f) { - Object_Kill(&actor->obj, actor->sfxSource); + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -500.0f) { + Object_Kill(&this->obj, this->sfxSource); } - switch (actor->state) { + switch (this->state) { case 0: - if (actor->timer_0BC == 0) { - actor->vel.y -= 2.5f; - if (actor->vel.y < 20.0f) { + if (this->timer_0BC == 0) { + this->vel.y -= 2.5f; + if (this->vel.y < 20.0f) { switch (D_i5_801BE320[18]) { case 0: case 1: @@ -5339,69 +5960,73 @@ void Macbeth_Actor221_Update(Actor* actor) { break; } - Math_SmoothStepToF(&actor->obj.pos.x, - gPlayer[0].pos.x + D_i5_801BA570[actor->iwork[2]][actor->iwork[1]] / var_v0, - 0.2f, 30.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.pos.z, - gPlayer[0].trueZpos - D_i5_801BA638[actor->iwork[2]][actor->iwork[1]] / var_v0, + Math_SmoothStepToF(&this->obj.pos.x, + gPlayer[0].pos.x + D_i5_801BA570[this->iwork[2]][this->iwork[1]] / var_v0, 0.2f, + 30.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, + gPlayer[0].trueZpos - D_i5_801BA638[this->iwork[2]][this->iwork[1]] / var_v0, 0.2f, 40.0f, 0.01f); - Math_SmoothStepToF(&actor->obj.rot.z, RAND_FLOAT_CENTERED(15.0f), 0.1f, 10.0f, 0.01f); + Math_SmoothStepToF(&this->obj.rot.z, RAND_FLOAT_CENTERED(15.0f), 0.1f, 10.0f, 0.01f); - if (actor->fwork[2] < 1.0f) { - actor->fwork[2] += 0.02; + if (this->fwork[2] < 1.0f) { + this->fwork[2] += 0.02; } } } - if ((Object_CheckCollision(actor->index, &actor->obj.pos, &sp3C, 1) != 0) || - (actor->obj.pos.y < (gGroundHeight + 200.0f))) { - AUDIO_PLAY_SFX(NA_SE_OB_SPEAR_STICK, actor->sfxSource, 4); + + if ((Object_CheckCollision(this->index, &this->obj.pos, &sp3C, 1) != 0) || + (this->obj.pos.y < (gGroundHeight + 200.0f))) { + AUDIO_PLAY_SFX(NA_SE_OB_SPEAR_STICK, this->sfxSource, 4); gControllerRumbleFlags[gMainController] = 1; gControllerRumbleTimers[gMainController] = 5; - actor->vel.x = 0.0f; - actor->vel.y = 0.0f; - actor->vel.z = 0.0f; - if (actor->obj.pos.y < gGroundHeight + 200.0f) { - actor->obj.pos.y = gGroundHeight + 200.0f; + this->vel.x = 0.0f; + this->vel.y = 0.0f; + this->vel.z = 0.0f; + if (this->obj.pos.y < gGroundHeight + 200.0f) { + this->obj.pos.y = gGroundHeight + 200.0f; } - actor->state = 1; + this->state = 1; } - if (actor->obj.pos.y < (gGroundHeight + 800.0f)) { - if (actor->iwork[0] > 10) { - actor->iwork[0] -= 10; - } else if (actor->iwork[0] > 0) { - actor->iwork[0] -= 1; + + if (this->obj.pos.y < (gGroundHeight + 800.0f)) { + if (this->iwork[0] > 10) { + this->iwork[0] -= 10; + } else if (this->iwork[0] > 0) { + this->iwork[0] -= 1; } } break; - case 1: - if (actor->iwork[0] > 10) { - actor->iwork[0] -= 10; - } else if (actor->iwork[0] > 0) { - actor->iwork[0] -= 1; - } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->iwork[7] = 15; - actor->health -= actor->damage; - if (actor->health <= 0) { - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), actor->obj.pos.y - 200.0f, - actor->obj.pos.z, 8.0f); - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), actor->obj.pos.y, - actor->obj.pos.z, 8.0f); - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), actor->obj.pos.y + 200.0f, - actor->obj.pos.z, 7.0f); - func_effect_8007D2C8(actor->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), actor->obj.pos.y + 400.0f, - actor->obj.pos.z, 7.0f); - Object_Kill(&actor->obj, actor->sfxSource); + case 1: + if (this->iwork[0] > 10) { + this->iwork[0] -= 10; + } else if (this->iwork[0] > 0) { + this->iwork[0] -= 1; + } + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->iwork[7] = 15; + this->health -= this->damage; + + if (this->health <= 0) { + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), this->obj.pos.y - 200.0f, + this->obj.pos.z, 8.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), this->obj.pos.y, this->obj.pos.z, + 8.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), this->obj.pos.y + 200.0f, + this->obj.pos.z, 7.0f); + func_effect_8007D2C8(this->obj.pos.x + RAND_FLOAT_CENTERED(20.0f), this->obj.pos.y + 400.0f, + this->obj.pos.z, 7.0f); + Object_Kill(&this->obj, this->sfxSource); } else { - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); } } break; } - actor->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } static Vec3f D_i5_801BA784[8] = { @@ -5409,134 +6034,145 @@ static Vec3f D_i5_801BA784[8] = { { -40.0f, 10.0f, 30.0f }, { -41.0f, 10.0f, 10.0f }, { -43.0f, 10.0f, -10.0f }, { -45.0f, 10.0f, -30.0f }, }; // unused? -void Macbeth_Actor221_Draw(Actor* actor) { - if (actor->state < 2) { - Graphics_SetScaleMtx(actor->scale); - if (actor->iwork[0] >= 128) { +void Macbeth_MaSpear_Draw(MaSpear* this) { + if (this->state < 2) { + Graphics_SetScaleMtx(this->scale); + if (this->iwork[0] >= 128) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, actor->iwork[0]); - gDPSetEnvColor(gMasterDisp++, 255, 48, 0, actor->iwork[0]); - Matrix_Scale(gGfxMatrix, 1.0f, actor->fwork[2], 1.0f, MTXF_APPLY); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, this->iwork[0]); + gDPSetEnvColor(gMasterDisp++, 255, 48, 0, this->iwork[0]); + Matrix_Scale(gGfxMatrix, 1.0f, this->fwork[2], 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_MA_6013060); RCP_SetupDL(&gMasterDisp, SETUPDL_67); - Matrix_Scale(gGfxMatrix, 1.0f, actor->fwork[2], 1.0f, MTXF_APPLY); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 53, 53, 53, 255 - actor->iwork[0]); - gDPSetEnvColor(gMasterDisp++, 0, 0, 0, actor->iwork[0]); + Matrix_Scale(gGfxMatrix, 1.0f, this->fwork[2], 1.0f, MTXF_APPLY); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 53, 53, 53, 255 - this->iwork[0]); + gDPSetEnvColor(gMasterDisp++, 0, 0, 0, this->iwork[0]); } else { RCP_SetupDL(&gMasterDisp, SETUPDL_23); - if ((actor->iwork[7] % 2) != 0) { + if ((this->iwork[7] % 2) != 0) { RCP_SetupDL_27(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (actor->iwork[7] > 0) { - actor->iwork[7]--; + if (this->iwork[7] > 0) { + this->iwork[7]--; } } - gSPDisplayList(gMasterDisp++, D_MA_600D480); + gSPDisplayList(gMasterDisp++, aMaSpearDL); } } -void Macbeth_801AE4CC(Actor* actor, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 yVel, f32 arg6, s16 arg7) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_221; - actor->obj.pos.x = xPos; - actor->obj.pos.y = yPos; - actor->obj.pos.z = zPos; - actor->vel.y = yVel; - actor->iwork[0] = 255; - actor->fwork[1] = arg6; - actor->fwork[2] = 0.2f; - actor->timer_0BC = 0; - actor->iwork[1] = D_i5_801BE320[24]++; - actor->iwork[2] = arg7; - if (D_i5_801BA570[actor->iwork[2]][actor->iwork[1]] < 0.0f) { - actor->obj.rot.z = -180.0f; +void Macbeth_MaSpear_Setup(MaSpear* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 yVel, f32 arg6, s16 arg7) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_MA_SPEAR; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->vel.y = yVel; + this->iwork[0] = 255; + this->fwork[1] = arg6; + this->fwork[2] = 0.2f; + this->timer_0BC = 0; + this->iwork[1] = D_i5_801BE320[24]++; + this->iwork[2] = arg7; + + if (D_i5_801BA570[this->iwork[2]][this->iwork[1]] < 0.0f) { + this->obj.rot.z = -180.0f; } else { - actor->obj.rot.z = 180.0f; + this->obj.rot.z = 180.0f; } - actor->health = 30; - Object_SetInfo(&actor->info, actor->obj.id); - AUDIO_PLAY_SFX(NA_SE_EN_FALLING_DOWN, actor->sfxSource, 4); + + this->health = 30; + Object_SetInfo(&this->info, this->obj.id); + AUDIO_PLAY_SFX(NA_SE_EN_FALLING_DOWN, this->sfxSource, 4); } -void Macbeth_801AE610(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 yVel, f32 arg5, s16 arg6) { +void Macbeth_MaSpear_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 yVel, f32 arg5, s16 arg6) { s32 i; for (i = ARRAY_COUNT(gActors) - 1; i >= 0; i--) { if (gActors[i].obj.status == OBJ_FREE) { - Macbeth_801AE4CC(&gActors[i], xPos, yPos, zPos, arg3, yVel, arg5, arg6); + Macbeth_MaSpear_Setup(&gActors[i], xPos, yPos, zPos, arg3, yVel, arg5, arg6); break; } } } -void Macbeth_801AE694(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6) { +void Macbeth_Effect379_Setup(Effect379* this, f32 xPos, f32 yPos, f32 zPos, f32 arg4, f32 arg5, f32 arg6) { f32 sp4C; f32 sp48; f32 sp44; Vec3f sp38; Vec3f sp2C; - Effect_Initialize(effect); - effect->obj.status = OBJ_ACTIVE; - effect->obj.id = OBJ_EFFECT_379; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->scale2 = D_i5_801BE368[23]; - effect->unk_46 = xPos - arg4; - effect->unk_48 = yPos - arg5; - effect->unk_4A = zPos - arg6; + Effect_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_EFFECT_379; + + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + + this->scale2 = D_i5_801BE368[23]; + + this->unk_46 = xPos - arg4; + this->unk_48 = yPos - arg5; + this->unk_4A = zPos - arg6; + sp48 = Math_Atan2F(arg4 - xPos, arg6 - zPos); sp44 = sqrtf(SQ(arg4 - xPos) + SQ(arg6 - zPos)); sp4C = -Math_Atan2F(arg5 - yPos, sp44); + Matrix_RotateY(gCalcMatrix, sp48, MTXF_NEW); Matrix_RotateX(gCalcMatrix, sp4C, MTXF_APPLY); + sp38.x = 0.0f; sp38.y = 0.0f; sp38.z = 30.0f; + Matrix_MultVec3f(gCalcMatrix, &sp38, &sp2C); - effect->unk_60.x = sp2C.x; - effect->unk_60.y = sp2C.y; - effect->unk_60.z = sp2C.z; - Object_SetInfo(&effect->info, effect->obj.id); + this->unk_60.x = sp2C.x; + this->unk_60.y = sp2C.y; + this->unk_60.z = sp2C.z; + + Object_SetInfo(&this->info, this->obj.id); } -void Macbeth_801AE800(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 arg4, f32 arg5) { +void Macbeth_Effect379_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 arg3, f32 arg4, f32 arg5) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Macbeth_801AE694(&gEffects[i], xPos, yPos, zPos, arg3, arg4, arg5); + Macbeth_Effect379_Setup(&gEffects[i], xPos, yPos, zPos, arg3, arg4, arg5); break; } } } -void Macbeth_Effect379_Update(Effect* effect) { +void Macbeth_Effect379_Update(Effect* this) { f32 sp34; f32 sp30; f32 sp2C; - effect->vel.x = effect->unk_60.x * effect->scale1; - effect->vel.y = effect->unk_60.y * effect->scale1; - effect->vel.z = effect->unk_60.z * effect->scale1; - effect->unk_46 += (s16) effect->vel.x; - effect->unk_48 += (s16) effect->vel.y; - effect->unk_4A += (s16) effect->vel.z; + this->vel.x = this->unk_60.x * this->scale1; + this->vel.y = this->unk_60.y * this->scale1; + this->vel.z = this->unk_60.z * this->scale1; - if (effect->scale2 == 3.0f) { + this->unk_46 += (s16) this->vel.x; + this->unk_48 += (s16) this->vel.y; + this->unk_4A += (s16) this->vel.z; + + if (this->scale2 == 3.0f) { sp34 = D_i5_801BE368[24]; sp30 = D_i5_801BE368[25]; sp2C = D_i5_801BE368[26]; - } else if (effect->scale2 == 4.0f) { + } else if (this->scale2 == 4.0f) { sp34 = D_i5_801BE368[27]; sp30 = D_i5_801BE368[28]; sp2C = D_i5_801BE368[29]; - } else if (effect->scale2 == 1.0f) { + } else if (this->scale2 == 1.0f) { sp34 = D_i5_801BE368[24]; sp30 = D_i5_801BE368[25]; sp2C = D_i5_801BE368[26]; @@ -5546,130 +6182,138 @@ void Macbeth_Effect379_Update(Effect* effect) { sp2C = D_i5_801BE368[29]; } - effect->obj.pos.x = effect->unk_46 + sp34; - effect->obj.pos.y = effect->unk_48 + sp30; - effect->obj.pos.z = effect->unk_4A + sp2C; - Math_SmoothStepToF(&effect->scale1, 1.0f, 1.0f, 0.1f, 0.0f); - if (effect->unk_44 < 240) { - effect->unk_44 += 15; + this->obj.pos.x = this->unk_46 + sp34; + this->obj.pos.y = this->unk_48 + sp30; + this->obj.pos.z = this->unk_4A + sp2C; + + Math_SmoothStepToF(&this->scale1, 1.0f, 1.0f, 0.1f, 0.0f); + + if (this->unk_44 < 240) { + this->unk_44 += 15; } else { - Object_Kill(&effect->obj, effect->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } - if ((fabsf(effect->obj.pos.x - sp34) <= 30.0f) && (fabsf(effect->obj.pos.z - sp2C) <= 30.0f)) { - Object_Kill(&effect->obj, effect->sfxSource); + + if ((fabsf(this->obj.pos.x - sp34) <= 30.0f) && (fabsf(this->obj.pos.z - sp2C) <= 30.0f)) { + Object_Kill(&this->obj, this->sfxSource); } } -void Macbeth_Effect379_Draw(Effect* effect) { +void Macbeth_Effect379_Draw(Effect379* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_67); - if (effect->scale2 >= 3.0f) { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, effect->unk_44); - gDPSetEnvColor(gMasterDisp++, 255, 0, 0, effect->unk_44); + + if (this->scale2 >= 3.0f) { + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, this->unk_44); + gDPSetEnvColor(gMasterDisp++, 255, 0, 0, this->unk_44); } else { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, effect->unk_44); - gDPSetEnvColor(gMasterDisp++, 0, 128, 255, effect->unk_44); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, this->unk_44); + gDPSetEnvColor(gMasterDisp++, 0, 128, 255, this->unk_44); } + Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_1024AC0); RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void Macbeth_Actor222_Update(Actor* actor) { - if ((gPlayer[0].trueZpos - actor->obj.pos.z) < -300.0f) { - Object_Kill(&actor->obj, actor->sfxSource); +void Macbeth_MaShockBox_Update(MaShockBox* this) { + if ((gPlayer[0].trueZpos - this->obj.pos.z) < -300.0f) { + Object_Kill(&this->obj, this->sfxSource); } - switch (actor->state) { + switch (this->state) { case 0: - actor->vel.y -= 0.5f; - if (actor->obj.pos.y < (gGroundHeight + 35.0f)) { - actor->vel.x = 0.0f; - actor->vel.y = 0.0f; - actor->vel.z = 0.0f; - if (actor->obj.pos.y < gGroundHeight + 35.0f) { - actor->obj.pos.y = gGroundHeight + 35.0f; + this->vel.y -= 0.5f; + if (this->obj.pos.y < (gGroundHeight + 35.0f)) { + this->vel.x = 0.0f; + this->vel.y = 0.0f; + this->vel.z = 0.0f; + if (this->obj.pos.y < gGroundHeight + 35.0f) { + this->obj.pos.y = gGroundHeight + 35.0f; } - actor->state = 1; - actor->timer_0BC = 200; - AUDIO_PLAY_SFX(NA_SE_OB_SPARK_BEAM, actor->sfxSource, 4); + this->state = 1; + this->timer_0BC = 200; + AUDIO_PLAY_SFX(NA_SE_OB_SPARK_BEAM, this->sfxSource, 4); } break; + case 1: - - if (actor->fwork[0] < 10.0f) { - actor->fwork[0] += 1.0f; + if (this->fwork[0] < 10.0f) { + this->fwork[0] += 1.0f; } - if (actor->fwork[2] < 3.0f) { - actor->fwork[2] += 0.1f; + if (this->fwork[2] < 3.0f) { + this->fwork[2] += 0.1f; } - if (((gGameFrameCount % 16) == 0)) { - func_effect_8007C120(actor->obj.pos.x - 35.0f, actor->obj.pos.y + 15.0f, actor->obj.pos.z, -3.0f, 0.0f, - 0.0f, 0.1f, 20); - func_effect_8007C120(actor->obj.pos.x + 35.0f, actor->obj.pos.y + 15.0f, actor->obj.pos.z, 3.0f, 0.0f, - 0.0f, 0.1f, 20); + if ((gGameFrameCount % 16) == 0) { + Effect_Effect390_Spawn(this->obj.pos.x - 35.0f, this->obj.pos.y + 15.0f, this->obj.pos.z, -3.0f, 0.0f, + 0.0f, 0.1f, 20); + Effect_Effect390_Spawn(this->obj.pos.x + 35.0f, this->obj.pos.y + 15.0f, this->obj.pos.z, 3.0f, 0.0f, + 0.0f, 0.1f, 20); } break; + default: break; } + if ((gGameFrameCount % 2) != 0) { - actor->fwork[1] = 255.0f; + this->fwork[1] = 255.0f; } else { - actor->fwork[1] = 32.0f; + this->fwork[1] = 32.0f; } - if ((actor->dmgType != DMG_NONE) && (actor->dmgPart == 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, actor->sfxSource, 4); - actor->dmgType = DMG_NONE; - actor->health -= actor->damage; - actor->timer_0C6 = 15; - if (actor->health <= 0) { - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EXPLOSION_S); - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 8.0f); - Object_Kill(&actor->obj, actor->sfxSource); + + if ((this->dmgType != DMG_NONE) && (this->dmgPart == 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + this->dmgType = DMG_NONE; + this->health -= this->damage; + this->timer_0C6 = 15; + if (this->health <= 0) { + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EXPLOSION_S); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f); + Object_Kill(&this->obj, this->sfxSource); } } } -void Macbeth_Actor222_Draw(Actor* actor) { - gSPDisplayList(gMasterDisp++, D_MA_6015510); - Matrix_Scale(gGfxMatrix, actor->fwork[0], actor->fwork[2], 1.0f, MTXF_APPLY); +void Macbeth_MaShockBox_Draw(MaShockBox* this) { + gSPDisplayList(gMasterDisp++, aMaShockBoxDL); + Matrix_Scale(gGfxMatrix, this->fwork[0], this->fwork[2], 1.0f, MTXF_APPLY); Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 0.0f, -10.0f, 0.0f, MTXF_APPLY); RCP_SetupDL(&gMasterDisp, SETUPDL_67); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 111, 175, 64, actor->fwork[1]); - gDPSetEnvColor(gMasterDisp++, 255, 255, 208, actor->fwork[1]); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 111, 175, 64, this->fwork[1]); + gDPSetEnvColor(gMasterDisp++, 255, 255, 208, this->fwork[1]); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_MA_6012F50); + gSPDisplayList(gMasterDisp++, aMaShockBoxLightDL); Matrix_Pop(&gGfxMatrix); } -void Macbeth_801AF134(Actor* actor, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_222; - actor->obj.pos.x = xPos; - actor->obj.pos.y = yPos; - actor->obj.pos.z = zPos; - actor->vel.x = xVel; - actor->vel.y = yVel; - actor->vel.z = zVel; - actor->timer_0BC = 0; - actor->health = 30; - actor->fwork[0] = 1.0f; - actor->fwork[2] = 1.0f; - Object_SetInfo(&actor->info, actor->obj.id); - AUDIO_PLAY_SFX(NA_SE_EN_FALLING_DOWN, actor->sfxSource, 4); +void Macbeth_MaShockBox_Setup(MaShockBox* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_MA_SHOCK_BOX; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; + this->timer_0BC = 0; + this->health = 30; + this->fwork[0] = 1.0f; + this->fwork[2] = 1.0f; + Object_SetInfo(&this->info, this->obj.id); + AUDIO_PLAY_SFX(NA_SE_EN_FALLING_DOWN, this->sfxSource, 4); } -void Macbeth_801AF200(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { +void Macbeth_MaShockBox_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { s32 i; for (i = ARRAY_COUNT(gActors) - 1; i >= 0; i--) { if (gActors[i].obj.status == OBJ_FREE) { - Macbeth_801AF134(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); + Macbeth_MaShockBox_Setup(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); break; } } @@ -5683,63 +6327,76 @@ static f32 D_i5_801BA80C[5] = { 500.0f, 600.0f, 200.0f, 4500.0f, 2300.0f }; static f32 D_i5_801BA820[5] = { 90.0f, -90.0f, 25.0f, 0.0f, 225.0f }; -void Macbeth_801AF27C(Actor* actor, s32 arg1) { +void Macbeth_801AF27C(ActorCutscene* this, s32 arg1) { Player* player = &gPlayer[0]; - Actor_Initialize(actor); - actor->obj.pos.x = D_i5_801BA7E4[arg1] + player->pos.x; - actor->obj.pos.y = D_i5_801BA7F8[arg1] + player->pos.y; - actor->obj.pos.z = D_i5_801BA80C[arg1] + player->pos.z; - actor->fwork[7] = RAND_FLOAT(360.0f); - actor->fwork[8] = RAND_FLOAT(360.0f); - actor->vel.x = player->vel.x; - actor->vel.y = player->vel.y; - actor->vel.z = player->vel.z; - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.rot.y = 180.0f; - Object_SetInfo(&actor->info, actor->obj.id); + Actor_Initialize(this); + + this->obj.pos.x = D_i5_801BA7E4[arg1] + player->pos.x; + this->obj.pos.y = D_i5_801BA7F8[arg1] + player->pos.y; + this->obj.pos.z = D_i5_801BA80C[arg1] + player->pos.z; + + this->fwork[7] = RAND_FLOAT(360.0f); + this->fwork[8] = RAND_FLOAT(360.0f); + + this->vel.x = player->vel.x; + this->vel.y = player->vel.y; + this->vel.z = player->vel.z; + + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.rot.y = 180.0f; + + Object_SetInfo(&this->info, this->obj.id); + if (arg1 < 3) { - actor->iwork[11] = 1; - actor->drawShadow = true; - actor->fwork[3] = D_i5_801BA820[arg1]; - actor->state = 30; - AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); + this->iwork[11] = 1; + this->drawShadow = true; + this->fwork[3] = D_i5_801BA820[arg1]; + this->state = 30; + AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, this->sfxSource, 4); } else { - actor->animFrame = 1; - actor->state = 21; - actor->obj.rot.z = 32.5f; - AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, actor->sfxSource, 0); - actor->fwork[9] = 20.0f; + this->animFrame = 1; + this->state = 21; + this->obj.rot.z = 32.5f; + AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, this->sfxSource, 0); + this->fwork[9] = 20.0f; } } void Macbeth_801AF44C(void) { - Actor* actor = &gActors[8]; + ActorCutscene* actor = &gActors[8]; Actor_Initialize(actor); actor->obj.status = OBJ_INIT; actor->obj.id = OBJ_ACTOR_CUTSCENE; + actor->obj.pos.x = gPlayer[0].pos.x + D_i5_801BA7E4[4]; actor->obj.pos.y = gPlayer[0].pos.y + D_i5_801BA7F8[4]; actor->obj.pos.z = gPlayer[0].pos.z + D_i5_801BA80C[4]; + actor->vel.x = gPlayer[0].vel.x; actor->vel.y = gPlayer[0].vel.y; actor->vel.z = gPlayer[0].vel.z; + actor->fwork[7] = RAND_FLOAT(360.0f); actor->fwork[8] = RAND_FLOAT(360.0f); actor->fwork[9] = 30.0f; + actor->rot_0F4.y = D_i5_801BA820[4]; actor->rot_0F4.x = 0.0f; actor->rot_0F4.z = 330.0f; + actor->obj.rot.x = -0.0f; actor->obj.rot.y = actor->rot_0F4.y; actor->obj.rot.z = -330.0f; + actor->fwork[0] = 0.0f; actor->animFrame = 24; actor->iwork[11] = 1; actor->state = 15; actor->fwork[3] = D_i5_801BA820[4]; + Object_SetInfo(&actor->info, actor->obj.id); AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); } @@ -5751,30 +6408,28 @@ static Vec3f D_i5_801BA834[2] = { static f32 D_i5_801BA84C[2] = { 0.0f, 60.0f }; -void Macbeth_801AF628(Actor* actor, s32 arg1) { - Actor_Initialize(actor); - actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos.x = gPlayer[0].xPath + D_i5_801BA834[arg1].x; - actor->obj.pos.y = D_i5_801BA834[arg1].y; - actor->obj.pos.z = D_i5_801BA834[arg1].z - gPathProgress; - actor->animFrame = 37; - actor->obj.rot.y = D_i5_801BA84C[arg1]; - actor->iwork[4] = actor->iwork[5] = 192; - actor->iwork[0] = actor->iwork[1] = actor->iwork[2] = actor->iwork[7] = actor->iwork[3] = 255; - actor->iwork[6] = 128; - Object_SetInfo(&actor->info, actor->obj.id); +// Unused +void Macbeth_801AF628(ActorCutscene* this, s32 index) { + Actor_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.pos.x = gPlayer[0].xPath + D_i5_801BA834[index].x; + this->obj.pos.y = D_i5_801BA834[index].y; + this->obj.pos.z = D_i5_801BA834[index].z - gPathProgress; + this->animFrame = 37; + this->obj.rot.y = D_i5_801BA84C[index]; + this->iwork[4] = this->iwork[5] = 192; + this->iwork[0] = this->iwork[1] = this->iwork[2] = this->iwork[7] = this->iwork[3] = 255; + this->iwork[6] = 128; + Object_SetInfo(&this->info, this->obj.id); } -void Macbeth_801AF70C(f32 xPos, f32 yPos, f32 zPos, f32 arg3) { - Effect* effect; +void Macbeth_Effect357_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 arg3) { + Effect* effect = NULL; Effect* effectPtr; - f32 temp_ft1; s32 i; - effect = NULL; - effectPtr = &gEffects[0]; - for (i = 0; i < 99; i++, effectPtr++) { + for (effectPtr = &gEffects[0], i = 0; i < 99; i++, effectPtr++) { if (effectPtr->obj.status == OBJ_FREE) { effect = effectPtr; break; @@ -5828,26 +6483,35 @@ void Macbeth_LevelComplete2(Player* player) { gCsFrameCount = 0; gLoadLevelObjects = 1; player->draw = false; + SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 30); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 30); + player->csState = 1; + D_ctx_80177A48[0] = 0.0f; D_ctx_80177A48[4] = -60.0f; D_ctx_80177A48[5] = 240.0f; + player->gravity = 3.0f; + gCameraShakeY = player->vel.x = player->vel.y = player->vel.z = player->baseSpeed = 0.0f; + if (player->shields <= 0) { player->shields = 1; } + player->cam.eye.x = gCsCamEyeX = gActors[D_i5_801BE318].obj.pos.x - 250.0f; player->cam.eye.y = gCsCamEyeY = gActors[D_i5_801BE318].obj.pos.y + 150.0f; player->cam.eye.z = gCsCamEyeZ = gActors[D_i5_801BE318].obj.pos.z + gPathProgress + 500.0f; player->cam.at.x = gCsCamAtX = gActors[D_i5_801BE318].obj.pos.x; player->cam.at.y = gCsCamAtY = gActors[D_i5_801BE318].obj.pos.y + 200.0f; player->cam.at.z = gCsCamAtZ = gActors[D_i5_801BE318].obj.pos.z + gPathProgress; + player->pos.x = 500.0f; player->pos.y = -3.0f; - D_i5_801BA1DC = 0.0f; + + sMaTrainSpeedTarget = 0.0f; player->aerobaticPitch = 0.0f; player->camRoll = 0.0f; player->boostSpeed = 0.0f; @@ -5860,38 +6524,45 @@ void Macbeth_LevelComplete2(Player* player) { player->wings.unk_04 = 0.0f; /* fallthrough */ case 1: - gShowBossHealth = 0; + gShowBossHealth = false; if (gCsFrameCount == 70) { gObjectLoadIndex = 498; for (i = 0; i < ARRAY_COUNT(gActors); i++) { - if (gActors[i].obj.id == OBJ_ACTOR_223) { + if (gActors[i].obj.id == OBJ_ACTOR_MA_RAILWAY_SIGNAL) { gActors[i].state++; break; } } player->csState++; + gCsCamEyeX = -100.0f; gCsCamEyeY = 250.0f; gCsCamEyeZ = 2090.0f; gCsCamAtX = -250.0f; gCsCamAtY = 10.0f; gCsCamAtZ = -3210.0f; + player->cam.eye.x = -250.0f; player->cam.eye.y = 50.0f; player->cam.eye.z = 1580.0f; player->cam.at.x = -250.0f; player->cam.at.y = 10.0f; player->cam.at.z = -3210.0f; + D_i5_801BE312 = 1; + player->pos.x = 500.0f; player->pos.y = -3.0f; player->pos.z = player->trueZpos = -111130.0f; player->zPath = gPathProgress = 115930.0f; player->flags_228 = PFLAG_228_4; + gLastPathChange = OBJ_ITEM_PATH_TURN_RIGHT; - D_i5_801BA1DC = 0.0f; + + sMaTrainSpeedTarget = 0.0f; + gActors[D_i5_801BE314].obj.pos.x = -431.0f; gActors[D_i5_801BE314].obj.pos.y = 0.0f; gActors[D_i5_801BE314].obj.pos.z = -111174.0f; @@ -5903,8 +6574,8 @@ void Macbeth_LevelComplete2(Player* player) { gActors[D_i5_801BE316].obj.pos.z = -109864.0f; } break; - case 2: + case 2: if (gCsFrameCount > 105) { Math_SmoothStepToF(&D_ctx_80177A48[0], 1.0f, 1.0f, 0.005f, 0.0f); } @@ -5920,7 +6591,7 @@ void Macbeth_LevelComplete2(Player* player) { gActors[D_i5_801BE316].obj.pos.z = -109864.0f; } else { D_ctx_80177A48[0] = 0.0f; - D_i5_801BA1DC = -40.0f; + sMaTrainSpeedTarget = -40.0f; player->csState++; } /* fallthrough */ @@ -5937,11 +6608,15 @@ void Macbeth_LevelComplete2(Player* player) { player->pos.x = gActors[D_i5_801BE314].obj.pos.x + 500.0f; player->zPathVel = -gActors[D_i5_801BE314].vel.z; player->zPath += player->zPathVel; + gPathVelZ = player->zPathVel; gPathProgress = player->zPath; gPathTexScroll += player->zPathVel; + player->pos.z = player->trueZpos = -(gPathProgress + 210.0f); + Math_SmoothStepToF(&D_ctx_80177A48[0], 1.0f, 0.1f, 0.00025f, 0.0f); + gCsCamAtX = gActors[D_i5_801BE314].obj.pos.x + 2500.0f; gCsCamAtZ = gActors[D_i5_801BE314].obj.pos.z + gPathProgress - 2000.0f; gCsCamEyeX = gCsCamAtX - 2340.0f; @@ -5951,22 +6626,27 @@ void Macbeth_LevelComplete2(Player* player) { player->csState++; player->vel.z = 0.0f; player->zPathVel = 0.0f; + gPathVelX = 0.0f; gPathVelY = 0.0f; + player->pathChangeTimer = 0; + player->cam.eye.x = gCsCamEyeX = 2750.0f; player->cam.eye.y = gCsCamEyeY = 50.0f; player->cam.eye.z = gCsCamEyeZ = -620.0f; player->cam.at.x = gCsCamAtX = -650.0f; player->cam.at.y = gCsCamAtY = 30.0f; player->cam.at.z = gCsCamAtZ = 1900.0f; + player->yRot_114 = 0.0f; - D_i5_801BA1DC = -100.0f; + sMaTrainSpeedTarget = -100.0f; Audio_KillSfxById(NA_SE_EN_FREIGHT_TRAIN); AUDIO_PLAY_SFX(NA_SE_EN_TRAIN_BREAK, gActors[D_i5_801BE314].sfxSource, 4); D_i5_801BE313 = 0; } break; + case 4: if (gCsFrameCount == 403) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; @@ -5975,32 +6655,41 @@ void Macbeth_LevelComplete2(Player* player) { } if (gCsFrameCount == 416) { player->csState++; + D_ctx_80177A48[0] = 1.0f; + player->yRot_114 = 30.0f; player->xPath = 4600.0f; - D_i5_801BA1DC = -80.0f; + + sMaTrainSpeedTarget = -80.0f; + player->zPath = gPathProgress += 300.0f; + D_ctx_80177A48[5] = 0.0f; D_ctx_80177A48[6] = 0.5f; D_ctx_80177A48[7] = 1560.0f; D_ctx_80177A48[8] = 2400.0f; + player->cam.at.x = gCsCamAtX = gActors[D_i5_801BE314].obj.pos.x; player->cam.at.z = gCsCamAtZ = (gActors[D_i5_801BE314].obj.pos.z + gPathProgress) - 2000.0f; player->cam.eye.y = gCsCamEyeY = 50.0f; player->cam.at.y = gCsCamAtY = 10.0f; player->cam.eye.x = gCsCamEyeX = D_ctx_80177A48[7] + gCsCamAtX; player->cam.eye.z = gCsCamEyeZ = D_ctx_80177A48[8] + gCsCamAtZ; + player->pathChangeYaw = -30.0f; player->xPathTarget = 10014.0f; player->pathChangeTimer = 1000; player->pathStep = 0.0f; + gFillScreenAlphaTarget = 0; gFillScreenAlphaStep = 127; } break; + case 5: if (gCsFrameCount <= 625) { - Math_SmoothStepToF(&D_i5_801BA1DC, 0.0f, 0.1f, 0.05f, 0.0f); + Math_SmoothStepToF(&sMaTrainSpeedTarget, 0.0f, 0.1f, 0.05f, 0.0f); } if (gCsFrameCount >= 430) { Math_SmoothStepToF(&D_ctx_80177A48[6], 22.0f, 0.1f, 1.0f, 0.0f); @@ -6017,21 +6706,23 @@ void Macbeth_LevelComplete2(Player* player) { player->zPathVel = -gActors[D_i5_801BE314].vel.z; gCsCamEyeX = D_ctx_80177A48[7] + gCsCamAtX; gCsCamEyeZ = D_ctx_80177A48[8] + gCsCamAtZ; - func_effect_8007C120(gActors[D_i5_801BE314].obj.pos.x + 480.0f, - gActors[D_i5_801BE314].obj.pos.y + 15.0f, - gActors[D_i5_801BE314].obj.pos.z - 400.0f, gActors[D_i5_801BE314].vel.x, - gActors[D_i5_801BE314].vel.y, 0.0f, 0.2f, 10); + Effect_Effect390_Spawn(gActors[D_i5_801BE314].obj.pos.x + 480.0f, + gActors[D_i5_801BE314].obj.pos.y + 15.0f, + gActors[D_i5_801BE314].obj.pos.z - 400.0f, gActors[D_i5_801BE314].vel.x, + gActors[D_i5_801BE314].vel.y, 0.0f, 0.2f, 10); } else { player->vel.z = 0.0f; - if (((gGameFrameCount % 16) == 0)) { + if ((gGameFrameCount % 16) == 0) { gFogRed -= 1; gFogGreen -= 1; gFogBlue -= 2; } + Math_SmoothStepToF(&player->zPathVel, 0.0f, 1.0f, 0.6f, 0.0f); Math_SmoothStepToF(&gCsCamAtX, 11700.0f, 0.1f, 50.0f, 0.0f); Math_SmoothStepToF(&D_ctx_80177A48[5], 30.0f, 0.1f, 0.05f, 0.0f); Math_SmoothStepToF(&gCsCamAtY, 1600.0f, 0.1f, D_ctx_80177A48[5], 0.0f); + if (player->zPathVel >= 2.5f) { player->pos.x = gActors[D_i5_801BE314].obj.pos.x + 500.0f; player->pos.z = player->trueZpos = -(gPathProgress + 210.0f); @@ -6040,66 +6731,82 @@ void Macbeth_LevelComplete2(Player* player) { gPathVelX = 0.0f; } - func_effect_8007BC7C(gActors[D_i5_801BE314].obj.pos.x + 190.0f, - gActors[D_i5_801BE314].obj.pos.y + 30.0f, - gActors[D_i5_801BE314].obj.pos.z - 100.0f, 6.0f); - func_effect_8007BC7C(gActors[D_i5_801BE314].obj.pos.x + 190.0f, - gActors[D_i5_801BE314].obj.pos.y + 30.0f, - gActors[D_i5_801BE314].obj.pos.z - 120.0f, 6.0f); - func_effect_8007BC7C(gActors[D_i5_801BE314].obj.pos.x - 190.0f, - gActors[D_i5_801BE314].obj.pos.y + 30.0f, - gActors[D_i5_801BE314].obj.pos.z - 100.0f, 6.0f); - func_effect_8007BC7C(gActors[D_i5_801BE314].obj.pos.x - 190.0f, - gActors[D_i5_801BE314].obj.pos.y + 30.0f, - gActors[D_i5_801BE314].obj.pos.z - 120.0f, 6.0f); + Effect_Effect362_Spawn(gActors[D_i5_801BE314].obj.pos.x + 190.0f, + gActors[D_i5_801BE314].obj.pos.y + 30.0f, + gActors[D_i5_801BE314].obj.pos.z - 100.0f, 6.0f); + Effect_Effect362_Spawn(gActors[D_i5_801BE314].obj.pos.x + 190.0f, + gActors[D_i5_801BE314].obj.pos.y + 30.0f, + gActors[D_i5_801BE314].obj.pos.z - 120.0f, 6.0f); + Effect_Effect362_Spawn(gActors[D_i5_801BE314].obj.pos.x - 190.0f, + gActors[D_i5_801BE314].obj.pos.y + 30.0f, + gActors[D_i5_801BE314].obj.pos.z - 100.0f, 6.0f); + Effect_Effect362_Spawn(gActors[D_i5_801BE314].obj.pos.x - 190.0f, + gActors[D_i5_801BE314].obj.pos.y + 30.0f, + gActors[D_i5_801BE314].obj.pos.z - 120.0f, 6.0f); } + player->zPath += player->zPathVel; gPathVelZ = player->zPathVel; gPathProgress = player->zPath; gPathTexScroll += player->zPathVel; + if (gCsFrameCount == 630) { Audio_KillSfxBySourceAndId(gActors[D_i5_801BE314].sfxSource, NA_SE_EN_TRAIN_BREAK); AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, gActors[D_i5_801BE314].sfxSource, 4); player->csState++; player->vel.z = 0.0f; player->zPathVel = 0.0f; + gPathVelZ = 0.0f; gPathVelX = 0.0f; gPathVelY = 0.0f; + player->pathChangeTimer = 10000; + D_ctx_80177A48[0] = 1.0f; - D_i5_801BA1DC = 0.0f; + + sMaTrainSpeedTarget = 0.0f; + gControllerRumbleFlags[0] = 1; gControllerRumbleTimers[0] = 10; + gCameraShake = 10; + D_ctx_80177A48[4] = -70.0f; D_ctx_80177A48[5] = 280.0f; } break; + case 6: Math_SmoothStepToF(&D_ctx_80177A48[4], -60.0f, 1.0f, 0.5f, 0.0f); Math_SmoothStepToF(&D_ctx_80177A48[5], 240.0f, 1.0f, 2.0f, 0.0f); - if (((gGameFrameCount % 2) == 0)) { - func_effect_8007797C(11000.0f, 200.0f, -139000.0f, D_ctx_80177A48[4], 4.0f, D_ctx_80177A48[5], 20.0f); + + if ((gGameFrameCount % 2) == 0) { + Effect_FireSmoke_Spawn2(11000.0f, 200.0f, -139000.0f, D_ctx_80177A48[4], 4.0f, D_ctx_80177A48[5], + 20.0f); } if (gCsFrameCount == 710) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 255; gFillScreenAlphaTarget = 0; gFillScreenAlphaStep = 128; - func_effect_8007D9DC(gActors[D_i5_801BE314].obj.pos.x + 1000.0f, - gActors[D_i5_801BE314].obj.pos.y + 20.0f, -138500.0f, 100.0f, 1000.0f, 0); - func_effect_8007A568(gActors[D_i5_801BE314].obj.pos.x + 200.0f, - gActors[D_i5_801BE314].obj.pos.y + 700.0f, -137750.0f, 100.0f); + + Effect_Effect367_Spawn(gActors[D_i5_801BE314].obj.pos.x + 1000.0f, + gActors[D_i5_801BE314].obj.pos.y + 20.0f, -138500.0f, 100.0f, 1000.0f, 0); + Effect_Effect383_Spawn(gActors[D_i5_801BE314].obj.pos.x + 200.0f, + gActors[D_i5_801BE314].obj.pos.y + 700.0f, -137750.0f, 100.0f); + for (i = 0; i < 8; i++) { - func_effect_800794CC(gActors[D_i5_801BE314].obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), - gActors[D_i5_801BE314].obj.pos.y + 1300.0f, - gActors[D_i5_801BE314].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), - 6.0f); - Macbeth_801AF70C(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, RAND_FLOAT(650.0f) + -139000.0f, - 0.7f); + Effect_Effect357_Spawn50(gActors[D_i5_801BE314].obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + gActors[D_i5_801BE314].obj.pos.y + 1300.0f, + gActors[D_i5_801BE314].obj.pos.z + 700.0f + RAND_FLOAT_CENTERED(1000.0f), + 6.0f); + Macbeth_Effect357_Spawn2(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, + RAND_FLOAT(650.0f) + -139000.0f, 0.7f); } + gActors[58].scale = 0.8f; + func_effect_8007D0E0(gActors[D_i5_801BE314].obj.pos.x + 500.0f + RAND_FLOAT_CENTERED(700.0f), gActors[D_i5_801BE314].obj.pos.y + 500.0f + RAND_FLOAT_CENTERED(700.0f), gActors[D_i5_801BE314].obj.pos.z + 3000.0f + RAND_FLOAT_CENTERED(700.0f), 30.0f); @@ -6125,110 +6832,120 @@ void Macbeth_LevelComplete2(Player* player) { gActors[D_i5_801BE314].obj.pos.z + 1300.0f + RAND_FLOAT_CENTERED(700.0f), 30.0f); } if (gCsFrameCount == 800) { - func_effect_8007A568(gActors[D_i5_801BE314].obj.pos.x - 3000.0f, - gActors[D_i5_801BE314].obj.pos.y + 500.0f, - gActors[D_i5_801BE314].obj.pos.z + 1600.0f, 10000.0f); + Effect_Effect383_Spawn(gActors[D_i5_801BE314].obj.pos.x - 3000.0f, + gActors[D_i5_801BE314].obj.pos.y + 500.0f, + gActors[D_i5_801BE314].obj.pos.z + 1600.0f, 10000.0f); for (i = 0; i < 8; i++) { - func_effect_800794CC(gActors[D_i5_801BE314].obj.pos.x - 3000.0f + RAND_FLOAT_CENTERED(1000.0f), - gActors[D_i5_801BE314].obj.pos.y + 700.0f, - gActors[D_i5_801BE314].obj.pos.z + 1600.0f + RAND_FLOAT_CENTERED(1000.0f), - 6.0f); - Macbeth_801AF70C(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, RAND_FLOAT(650.0f) + -139000.0f, - 0.7f); + Effect_Effect357_Spawn50(gActors[D_i5_801BE314].obj.pos.x - 3000.0f + RAND_FLOAT_CENTERED(1000.0f), + gActors[D_i5_801BE314].obj.pos.y + 700.0f, + gActors[D_i5_801BE314].obj.pos.z + 1600.0f + RAND_FLOAT_CENTERED(1000.0f), + 6.0f); + Macbeth_Effect357_Spawn2(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, + RAND_FLOAT(650.0f) + -139000.0f, 0.7f); } } if (gCsFrameCount == 820) { - func_effect_8007A568(gActors[D_i5_801BE314].obj.pos.x, gActors[D_i5_801BE314].obj.pos.y + 500.0f, - gActors[D_i5_801BE314].obj.pos.z + 3300.0f, 14000.0f); + Effect_Effect383_Spawn(gActors[D_i5_801BE314].obj.pos.x, gActors[D_i5_801BE314].obj.pos.y + 500.0f, + gActors[D_i5_801BE314].obj.pos.z + 3300.0f, 14000.0f); for (i = 0; i < 8; i++) { - func_effect_800794CC(gActors[D_i5_801BE314].obj.pos.x + 500.0f + RAND_FLOAT_CENTERED(1000.0f), - gActors[D_i5_801BE314].obj.pos.y + 900.0f, - gActors[D_i5_801BE314].obj.pos.z + 3300.0f + RAND_FLOAT_CENTERED(1000.0f), - 6.0f); - Macbeth_801AF70C(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, RAND_FLOAT(650.0f) + -139000.0f, - 0.7f); + Effect_Effect357_Spawn50(gActors[D_i5_801BE314].obj.pos.x + 500.0f + RAND_FLOAT_CENTERED(1000.0f), + gActors[D_i5_801BE314].obj.pos.y + 900.0f, + gActors[D_i5_801BE314].obj.pos.z + 3300.0f + RAND_FLOAT_CENTERED(1000.0f), + 6.0f); + Macbeth_Effect357_Spawn2(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, + RAND_FLOAT(650.0f) + -139000.0f, 0.7f); } } if (gCsFrameCount == 835) { - func_effect_8007A568(gActors[D_i5_801BE314].obj.pos.x - 1500.0f, - gActors[D_i5_801BE314].obj.pos.y + 500.0f, - gActors[D_i5_801BE314].obj.pos.z + 2000.0f, 80.0f); + Effect_Effect383_Spawn(gActors[D_i5_801BE314].obj.pos.x - 1500.0f, + gActors[D_i5_801BE314].obj.pos.y + 500.0f, + gActors[D_i5_801BE314].obj.pos.z + 2000.0f, 80.0f); for (i = 0; i < 8; i++) { - func_effect_800794CC(gActors[D_i5_801BE314].obj.pos.x - 1500.0f + RAND_FLOAT_CENTERED(1000.0f), - gActors[D_i5_801BE314].obj.pos.y + 1200.0f, - gActors[D_i5_801BE314].obj.pos.z + 2000.0f + RAND_FLOAT_CENTERED(1000.0f), - 6.0f); - Macbeth_801AF70C(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, RAND_FLOAT(650.0f) + -139000.0f, - 0.7f); + Effect_Effect357_Spawn50(gActors[D_i5_801BE314].obj.pos.x - 1500.0f + RAND_FLOAT_CENTERED(1000.0f), + gActors[D_i5_801BE314].obj.pos.y + 1200.0f, + gActors[D_i5_801BE314].obj.pos.z + 2000.0f + RAND_FLOAT_CENTERED(1000.0f), + 6.0f); + Macbeth_Effect357_Spawn2(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, + RAND_FLOAT(650.0f) + -139000.0f, 0.7f); } } if (gCsFrameCount == 845) { - func_effect_8007A568(gActors[D_i5_801BE314].obj.pos.x - 500.0f, - gActors[D_i5_801BE314].obj.pos.y + 500.0f, - gActors[D_i5_801BE314].obj.pos.z + 2800.0f, 10000.0f); + Effect_Effect383_Spawn(gActors[D_i5_801BE314].obj.pos.x - 500.0f, + gActors[D_i5_801BE314].obj.pos.y + 500.0f, + gActors[D_i5_801BE314].obj.pos.z + 2800.0f, 10000.0f); for (i = 0; i < 11; i++) { - func_effect_800794CC(gActors[D_i5_801BE314].obj.pos.x - 500.0f + RAND_FLOAT_CENTERED(1000.0f), - gActors[D_i5_801BE314].obj.pos.y + 900.0f, - gActors[D_i5_801BE314].obj.pos.z + 2800.0f + RAND_FLOAT_CENTERED(1000.0f), - 6.0f); - Macbeth_801AF70C(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, RAND_FLOAT(650.0f) + -139000.0f, - 0.7f); + Effect_Effect357_Spawn50(gActors[D_i5_801BE314].obj.pos.x - 500.0f + RAND_FLOAT_CENTERED(1000.0f), + gActors[D_i5_801BE314].obj.pos.y + 900.0f, + gActors[D_i5_801BE314].obj.pos.z + 2800.0f + RAND_FLOAT_CENTERED(1000.0f), + 6.0f); + Macbeth_Effect357_Spawn2(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, + RAND_FLOAT(650.0f) + -139000.0f, 0.7f); } } if (gCsFrameCount == 853) { - func_effect_8007A568(gActors[D_i5_801BE314].obj.pos.x - 3500.0f, - gActors[D_i5_801BE314].obj.pos.y + 500.0f, - gActors[D_i5_801BE314].obj.pos.z + 2500.0f, 14000.0f); + Effect_Effect383_Spawn(gActors[D_i5_801BE314].obj.pos.x - 3500.0f, + gActors[D_i5_801BE314].obj.pos.y + 500.0f, + gActors[D_i5_801BE314].obj.pos.z + 2500.0f, 14000.0f); for (i = 0; i < 8; i++) { - func_effect_800794CC(gActors[D_i5_801BE314].obj.pos.x - 3500.0f + RAND_FLOAT_CENTERED(1000.0f), - gActors[D_i5_801BE314].obj.pos.y + 900.0f, - gActors[D_i5_801BE314].obj.pos.z + 1500.0f + RAND_FLOAT_CENTERED(1000.0f), - 6.0f); - Macbeth_801AF70C(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, RAND_FLOAT(650.0f) + -139000.0f, - 0.7f); + Effect_Effect357_Spawn50(gActors[D_i5_801BE314].obj.pos.x - 3500.0f + RAND_FLOAT_CENTERED(1000.0f), + gActors[D_i5_801BE314].obj.pos.y + 900.0f, + gActors[D_i5_801BE314].obj.pos.z + 1500.0f + RAND_FLOAT_CENTERED(1000.0f), + 6.0f); + Macbeth_Effect357_Spawn2(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, + RAND_FLOAT(650.0f) + -139000.0f, 0.7f); } gCameraShake = 30; } if (gCsFrameCount == 860) { - func_effect_8007D9DC(gActors[D_i5_801BE314].obj.pos.x + 1000.0f, - gActors[D_i5_801BE314].obj.pos.y + 20.0f, -138500.0f, 100.0f, 1000.0f, 0); - func_effect_8007A568(gActors[D_i5_801BE314].obj.pos.x - 1500.0f, - gActors[D_i5_801BE314].obj.pos.y + 700.0f, - gActors[D_i5_801BE314].obj.pos.z + 3000.0f, 180.0f); + Effect_Effect367_Spawn(gActors[D_i5_801BE314].obj.pos.x + 1000.0f, + gActors[D_i5_801BE314].obj.pos.y + 20.0f, -138500.0f, 100.0f, 1000.0f, 0); + Effect_Effect383_Spawn(gActors[D_i5_801BE314].obj.pos.x - 1500.0f, + gActors[D_i5_801BE314].obj.pos.y + 700.0f, + gActors[D_i5_801BE314].obj.pos.z + 3000.0f, 180.0f); for (i = 0; i < 8; i++) { - func_effect_800794CC(gActors[D_i5_801BE314].obj.pos.x - 1500.0f + RAND_FLOAT_CENTERED(1000.0f), - gActors[D_i5_801BE314].obj.pos.y + 1300.0f, - gActors[D_i5_801BE314].obj.pos.z + 2500.0f + RAND_FLOAT_CENTERED(1000.0f), - 6.0f); - Macbeth_801AF70C(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, RAND_FLOAT(650.0f) + -139000.0f, - 0.7f); + Effect_Effect357_Spawn50(gActors[D_i5_801BE314].obj.pos.x - 1500.0f + RAND_FLOAT_CENTERED(1000.0f), + gActors[D_i5_801BE314].obj.pos.y + 1300.0f, + gActors[D_i5_801BE314].obj.pos.z + 2500.0f + RAND_FLOAT_CENTERED(1000.0f), + 6.0f); + Macbeth_Effect357_Spawn2(RAND_FLOAT_CENTERED(650.0f) + 11250.0f, 300.0f, + RAND_FLOAT(650.0f) + -139000.0f, 0.7f); } } if (gCsFrameCount == 880) { gControllerRumbleFlags[0] = 1; gControllerRumbleTimers[0] = 10; + gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; gFillScreenAlphaTarget = 255; gFillScreenAlphaStep = 20; + AUDIO_PLAY_SFX(NA_SE_EN_STAR_EXPLOSION, gActors[D_i5_801BE314].sfxSource, 4); gBossActive = gLoadLevelObjects = false; } if (gCsFrameCount == 940) { player->csState++; + Play_ClearObjectData(); + player->pos.z = player->trueZpos = -(gPathProgress + 210.0f); player->pos.x = player->xPath; - func_effect_8007A568(player->pos.x - 1800.0f, -50.0f, player->pos.z + 5000.0f, 40.0f); + + Effect_Effect383_Spawn(player->pos.x - 1800.0f, -50.0f, player->pos.z + 5000.0f, 40.0f); + gFillScreenRed = gFillScreenGreen = gFillScreenBlue = gFillScreenAlpha = 255; gFillScreenAlphaTarget = 0; gFillScreenAlphaStep = 8; + D_ctx_80177A48[0] = 0.0f; + player->draw = true; + player->cam.at.x = gCsCamAtX = player->cam.eye.x = gCsCamEyeX = player->pos.x; player->cam.at.y = gCsCamAtY = player->pos.y + 70.0f; player->cam.eye.y = gCsCamEyeY = player->pos.y + 30.0f; player->cam.eye.z = gCsCamEyeZ = (player->trueZpos + gPathProgress) - 300.0f; player->cam.at.z = gCsCamAtZ = player->trueZpos + gPathProgress; + player->savedAlternateView = player->pathChangeTimer = 0; player->unk_190 = player->unk_194 = player->unk_188 = player->unk_18C = player->pathChangeYaw = player->yRot_114 = player->aerobaticPitch = player->camRoll = player->unk_174 = player->unk_178 = @@ -6236,23 +6953,28 @@ void Macbeth_LevelComplete2(Player* player) { player->unk_16C = player->rockAngle = player->yBob = player->wings.unk_0C = player->wings.unk_08 = player->wings.unk_10 = player->zRotBarrelRoll = player->zRotBank = player->boostSpeed = 0.0f; + player->baseSpeed = 5.0f; + D_ctx_80177A48[3] = D_ctx_80177A48[6] = D_ctx_80177A48[7] = D_ctx_80177A48[8] = 0.0f; + player->grounded = true; player->hitTimer = 0; player->pos.y = gGroundHeight - 3.0f; player->vel.y = -3.0f; + player->rollState = player->boostCooldown = player->boostMeter = player->unk_184 = player->rot_104.y = player->rot_104.z = player->rot.y = player->rot.x = player->rot_104.x = 0.0f; player->rollInputTimerL = player->sfx.bank = 0; } break; + case 7: - if (((gGameFrameCount % 4) == 0)) { + if ((gGameFrameCount % 4) == 0) { func_effect_8007D0E0(player->pos.x - 1750.0f + RAND_FLOAT_CENTERED(700.0f), 10.0f, player->pos.z + 5000.0f + RAND_FLOAT_CENTERED(700.0f), 5.0f); - func_effect_8007C85C(player->pos.x - 1800.0f + RAND_FLOAT_CENTERED(40.0f), -100.0f, - player->pos.z + 5000.0f + RAND_FLOAT_CENTERED(40.0f), 9.0f); + Effect_Effect343_Spawn(player->pos.x - 1800.0f + RAND_FLOAT_CENTERED(40.0f), -100.0f, + player->pos.z + 5000.0f + RAND_FLOAT_CENTERED(40.0f), 9.0f); } if ((gCsFrameCount >= 1059) && (gCsFrameCount < 2120)) { @@ -6284,18 +7006,21 @@ void Macbeth_LevelComplete2(Player* player) { Math_SmoothStepToF(&player->unk_170, 2.0f, 1.0f, 0.3f, 0.0f); Math_SmoothStepToF(&player->unk_16C, 2.0f, 1.0f, 0.3f, 0.0f); if ((gCsFrameCount >= 2165) && (gCsFrameCount <= 2180)) { - func_effect_8007BC7C(player->pos.x + RAND_FLOAT_CENTERED(30.0f), 0.0f, - RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f); - func_effect_8007BC7C(player->pos.x - RAND_FLOAT_CENTERED(30.0f), 0.0f, - RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f); + Effect_Effect362_Spawn(player->pos.x + RAND_FLOAT_CENTERED(30.0f), 0.0f, + RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f); + Effect_Effect362_Spawn(player->pos.x - RAND_FLOAT_CENTERED(30.0f), 0.0f, + RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f); } Math_SmoothStepToF(&D_ctx_80177A48[7], 4.5f, 0.1f, 0.3f, 0.0f); player->trueZpos = player->pos.z; } + func_tank_80045130(player); func_tank_80044868(player); func_tank_800444BC(player); + Player_UpdatePath(player); + if (gCsFrameCount >= 2175) { Math_SmoothStepToF(&gCsCamAtZ, gActors[3].obj.pos.z + gPathProgress - 300.0f, 0.1f, 20.0f, 0.0f); Math_SmoothStepToF(&gCsCamAtY, gActors[3].obj.pos.y + 100.0f, 0.1f, 10.0f, 0.0f); @@ -6310,12 +7035,15 @@ void Macbeth_LevelComplete2(Player* player) { case 973: gLevelClearScreenTimer = 100; break; + case 340: Radio_PlayMessage(gMsg_ID_17471, RCID_BOSS_MACBETH); break; + case 520: Radio_PlayMessage(gMsg_ID_17472, RCID_BOSS_MACBETH); break; + case 710: case 800: case 820: @@ -6326,17 +7054,21 @@ void Macbeth_LevelComplete2(Player* player) { D_ctx_80177A48[4] = -90.0f; D_ctx_80177A48[5] = 360.0f; break; + case 910: AUDIO_PLAY_BGM(NA_BGM_COURSE_CLEAR); break; + case 1040: Radio_PlayMessage(gMsg_ID_20010, RCID_FOX); break; + case 1060: if (gTeamShields[TEAM_ID_SLIPPY] > 0) { Macbeth_801AF27C(&gActors[5], 0); } break; + case 1130: switch (gTeamShields[TEAM_ID_SLIPPY]) { case 0: @@ -6350,14 +7082,17 @@ void Macbeth_LevelComplete2(Player* player) { break; } break; + case 1240: if (gTeamShields[TEAM_ID_PEPPY] > 0) { Macbeth_801AF27C(&gActors[6], 1); } break; + case 1310: D_i5_801BA888 = 220.0f; break; + case 1350: switch (gTeamShields[TEAM_ID_PEPPY]) { case 0: @@ -6371,24 +7106,29 @@ void Macbeth_LevelComplete2(Player* player) { break; } break; + case 1420: if (gLeveLClearStatus[LEVEL_ZONESS] != 0) { Macbeth_801AF44C(); } break; + case 1460: D_i5_801BA88C = 170.0f; break; + case 1500: if (gLeveLClearStatus[LEVEL_ZONESS] != 0) { Radio_PlayMessage(gMsg_ID_17300, RCID_KATT); } break; + case 1640: if (gTeamShields[TEAM_ID_FALCO] > 0) { Macbeth_801AF27C(&gActors[7], 2); } break; + case 1660: switch (gTeamShields[TEAM_ID_FALCO]) { case 0: @@ -6402,41 +7142,52 @@ void Macbeth_LevelComplete2(Player* player) { break; } break; + case 1661: D_i5_801BA86C = -0.5f; break; + case 1810: Object_Kill(&gActors[8].obj, gActors[8].sfxSource); gSceneSetup = 1; break; + case 1817: gShowLevelClearStatusScreen = 1; break; + case 1960: Macbeth_801AF27C(&gActors[3], 3); gActors[3].info.hitbox = SEGMENTED_TO_VIRTUAL(gNoHitbox); break; + case 2017: gShowLevelClearStatusScreen = 0; break; + case 2040: gActors[5].state++; break; + case 2080: gActors[6].state++; break; + case 2130: gActors[7].state++; break; + case 2160: gProjectFar = 30000.0f; player->hideShadow = true; Audio_StopPlayerNoise(0); AUDIO_PLAY_SFX(NA_SE_TANK_GO_UP, player->sfxSource, 0); break; + case 2310: gActors[3].state++; break; + case 2440: SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 60); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 60); @@ -6452,19 +7203,24 @@ void Macbeth_LevelComplete2(Player* player) { } else { Math_SmoothStepToF(&player->yRot_114, 0.0f, 0.03f, 0.5f, 0.0001f); } + Math_SmoothStepToF(&player->cam.eye.x, gCsCamEyeX, D_ctx_80177A48[0], 20000.0f, 0); Math_SmoothStepToF(&player->cam.eye.y, gCsCamEyeY, D_ctx_80177A48[0], 20000.0f, 0); Math_SmoothStepToF(&player->cam.eye.z, gCsCamEyeZ, D_ctx_80177A48[0], 20000.0f, 0); Math_SmoothStepToF(&player->cam.at.x, gCsCamAtX, D_ctx_80177A48[0], 20000.0f, 0); Math_SmoothStepToF(&player->cam.at.y, gCsCamAtY, D_ctx_80177A48[0], 20000.0f, 0); Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[0], 20000.0f, 0); + player->cam.at.y += zeroVar; + if (player->csState >= 6) { player->cam.eye.y += gCameraShakeY * 10.0f; } + if (gCsFrameCount > 2500) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0; gFillScreenAlphaTarget = 255; + if (gFillScreenAlpha == 255) { player->state_1C8 = PLAYERSTATE_1C8_NEXT; gFadeoutType = 4; @@ -6475,171 +7231,205 @@ void Macbeth_LevelComplete2(Player* player) { } } -void Macbeth_801B28BC(Actor* actor) { +void Macbeth_801B28BC(ActorCutscene* this) { Vec3f sp5C; Vec3f sp50; Vec3f sp44; - Player* player; + Player* player = &gPlayer[0]; f32 sp3C; - player = &gPlayer[0]; - actor->fwork[7] += 3.0f; - actor->rot_0F4.z = SIN_DEG(actor->fwork[7]) * 1.5f; - actor->fwork[8] += 2.0f; - sp3C = SIN_DEG(actor->fwork[8]) * 10.0f; + this->fwork[7] += 3.0f; + this->rot_0F4.z = SIN_DEG(this->fwork[7]) * 1.5f; + this->fwork[8] += 2.0f; + sp3C = SIN_DEG(this->fwork[8]) * 10.0f; - switch (actor->state) { + switch (this->state) { case 10: - actor->fwork[3] += D_i5_801BA864; - Matrix_RotateY(gCalcMatrix, actor->fwork[3] * M_DTOR, MTXF_NEW); + this->fwork[3] += D_i5_801BA864; + + Matrix_RotateY(gCalcMatrix, this->fwork[3] * M_DTOR, MTXF_NEW); + sp5C.x = 0.0f; sp5C.y = D_i5_801BA884; sp5C.z = D_i5_801BA894[4]; + Math_SmoothStepToF(&D_i5_801BA894[4], 100.0f, 0.05f, 0.5f, 0.01f); Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp44); - actor->fwork[0] = sp44.x; - actor->fwork[1] = sp44.y; - actor->fwork[2] = sp44.z - 100.0f; - Math_SmoothStepToF(&actor->obj.rot.z, SIN_DEG(actor->fwork[3]) * -30.0f, 0.1f, 2.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[0] + player->pos.x, 0.03f, 10.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[1] + player->pos.y + sp3C, 0.03f, 10.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.z, actor->fwork[2] + player->trueZpos, 0.03f, 10.0f, 0.0f); + + this->fwork[0] = sp44.x; + this->fwork[1] = sp44.y; + this->fwork[2] = sp44.z - 100.0f; + + Math_SmoothStepToF(&this->obj.rot.z, SIN_DEG(this->fwork[3]) * -30.0f, 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[0] + player->pos.x, 0.03f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[1] + player->pos.y + sp3C, 0.03f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.z, this->fwork[2] + player->trueZpos, 0.03f, 10.0f, 0.0f); break; + case 11: - AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, actor->sfxSource, 0); - actor->timer_0BC = 10; - actor->state++; - actor->fwork[29] = 5.0f; + AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, this->sfxSource, 0); + this->timer_0BC = 10; + this->state++; + this->fwork[29] = 5.0f; /* fallthrough */ case 12: - Math_SmoothStepToF(&actor->obj.rot.z, 0.0f, 0.1f, 2.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.x, player->pos.x - 150.0f, 0.1f, 1.0f, 0.0f); - actor->iwork[11] = 2; - Math_SmoothStepToF(&actor->fwork[9], 20.0f, 0.1f, 2.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.rot.z, 0.0f, 0.1f, 1.0f, 0.0f); - if (actor->timer_0BC <= 0) { - actor->timer_0BC = 10; - actor->state++; + Math_SmoothStepToF(&this->obj.rot.z, 0.0f, 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.x, player->pos.x - 150.0f, 0.1f, 1.0f, 0.0f); + + this->iwork[11] = 2; + + Math_SmoothStepToF(&this->fwork[9], 20.0f, 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&this->obj.rot.z, 0.0f, 0.1f, 1.0f, 0.0f); + + if (this->timer_0BC <= 0) { + this->timer_0BC = 10; + this->state++; } break; + case 13: - Math_SmoothStepToF(&actor->obj.pos.x, player->pos.x - 150.0f, 0.1f, 2.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.rot.x, -120.0f, 0.1f, 5.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[9], -20.0f, 0.05f, 0.2f, 0.0f); - actor->fwork[29] = 3.0f; - if (actor->timer_0BC <= 0) { - actor->state++; + Math_SmoothStepToF(&this->obj.pos.x, player->pos.x - 150.0f, 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&this->obj.rot.x, -120.0f, 0.1f, 5.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], -20.0f, 0.05f, 0.2f, 0.0f); + + this->fwork[29] = 3.0f; + if (this->timer_0BC <= 0) { + this->state++; } break; + case 14: - Math_SmoothStepToF(&actor->obj.pos.x, player->pos.x - 150.0f, 0.1f, 3.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.rot.x, -120.0f, 0.1f, 5.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[9], 22.0f, 0.05f, 0.2f, 0.0f); - if (actor->obj.rot.x <= -115.0f) { - Math_SmoothStepToF(&actor->obj.rot.z, 800.0f, 0.1f, 18.0f, 0.0f); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); + Math_SmoothStepToF(&this->obj.pos.x, player->pos.x - 150.0f, 0.1f, 3.0f, 0.0f); + Math_SmoothStepToF(&this->obj.rot.x, -120.0f, 0.1f, 5.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], 22.0f, 0.05f, 0.2f, 0.0f); + + if (this->obj.rot.x <= -115.0f) { + Math_SmoothStepToF(&this->obj.rot.z, 800.0f, 0.1f, 18.0f, 0.0f); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); sp5C.x = 0.0f; sp5C.y = 70.0f; sp5C.z = -70.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp5C, &sp44); - func_effect_80078E50(actor->obj.pos.x + sp44.x, actor->obj.pos.y + sp44.y, actor->obj.pos.z + sp44.z, - 3.1f); + Effect_Effect393_Spawn(this->obj.pos.x + sp44.x, this->obj.pos.y + sp44.y, this->obj.pos.z + sp44.z, + 3.1f); } break; + case 15: - Math_SmoothStepToAngle(&actor->obj.rot.z, 0.0f, 0.05f, 0.05f, 0); - Math_SmoothStepToAngle(&actor->obj.rot.y, 180.0f, 1.0f, 0.3f, 0); - Math_SmoothStepToF(&actor->obj.pos.y, player->pos.y + 240.0f, 0.03f, 20.0f, 0.0f); - if (actor->obj.rot.y == 180.0f) { - actor->state++; + Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.05f, 0.05f, 0); + Math_SmoothStepToAngle(&this->obj.rot.y, 180.0f, 1.0f, 0.3f, 0); + Math_SmoothStepToF(&this->obj.pos.y, player->pos.y + 240.0f, 0.03f, 20.0f, 0.0f); + + if (this->obj.rot.y == 180.0f) { + this->state++; } break; + case 16: - actor->fwork[0] += 2.0f; - actor->obj.rot.y = 180.0f - actor->fwork[0]; - Math_SmoothStepToAngle(&actor->obj.rot.z, 62.0f, 1.0f, 0.5f, 0); - if (actor->fwork[0] > 180.0f) { - actor->state++; - AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, actor->sfxSource, 0); - actor->timer_0BC = 160; - actor->fwork[29] = 5.0f; + this->fwork[0] += 2.0f; + this->obj.rot.y = 180.0f - this->fwork[0]; + + Math_SmoothStepToAngle(&this->obj.rot.z, 62.0f, 1.0f, 0.5f, 0); + + if (this->fwork[0] > 180.0f) { + this->state++; + AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, this->sfxSource, 0); + this->timer_0BC = 160; + this->fwork[29] = 5.0f; } break; + case 17: - Math_SmoothStepToAngle(&actor->obj.rot.y, 345.0f, 1.0f, 0.5f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 328.0f, 0.1f, 1.0f, 0.0f); - Math_SmoothStepToF(&actor->fwork[9], 35.0f, 0.1f, 0.5f, 0.0f); - actor->fwork[29] = 3.0f; - Math_SmoothStepToF(&actor->obj.rot.z, 405.0f, 0.1f, 10.0f, 0.0f); - if (actor->timer_0BC == 0) { - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); + Math_SmoothStepToAngle(&this->obj.rot.y, 345.0f, 1.0f, 0.5f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, 328.0f, 0.1f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], 35.0f, 0.1f, 0.5f, 0.0f); + + this->fwork[29] = 3.0f; + + Math_SmoothStepToF(&this->obj.rot.z, 405.0f, 0.1f, 10.0f, 0.0f); + + if (this->timer_0BC == 0) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); sp5C.x = 0.0f; sp5C.y = 70.0f; sp5C.z = -70.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp5C, &sp44); - func_effect_80078E50(actor->obj.pos.x + sp44.x, actor->obj.pos.y + sp44.y, actor->obj.pos.z + sp44.z, - 3.1f); + Effect_Effect393_Spawn(this->obj.pos.x + sp44.x, this->obj.pos.y + sp44.y, this->obj.pos.z + sp44.z, + 3.1f); } break; + case 20: - Math_SmoothStepToAngle(&actor->obj.rot.x, 345.0f, 0.01f, actor->fwork[4], 0.0f); - Math_SmoothStepToF(&actor->vel.z, -300.0f, 0.1f, 0.25f, 0.0f); + Math_SmoothStepToAngle(&this->obj.rot.x, 345.0f, 0.01f, this->fwork[4], 0.0f); + Math_SmoothStepToF(&this->vel.z, -300.0f, 0.1f, 0.25f, 0.0f); break; + case 21: - Math_SmoothStepToF(&actor->obj.rot.z, 0.0f, 0.1f, 0.25f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.x, player->pos.x, 0.1f, 5.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.y, 800.0f, 0.1f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->obj.rot.z, 0.0f, 0.1f, 0.25f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.x, player->pos.x, 0.1f, 5.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.y, 800.0f, 0.1f, 10.0f, 0.0f); break; + case 22: - Math_SmoothStepToAngle(&actor->fwork[4], 0.25f, 0.1f, 0.005f, 0.0f); - Math_SmoothStepToAngle(&actor->obj.rot.x, 345.0f, 0.01f, actor->fwork[4], 0.0f); + Math_SmoothStepToAngle(&this->fwork[4], 0.25f, 0.1f, 0.005f, 0.0f); + Math_SmoothStepToAngle(&this->obj.rot.x, 345.0f, 0.01f, this->fwork[4], 0.0f); break; + case 30: - actor->fwork[3] += D_i5_801BA854[actor->index]; - Matrix_RotateY(gCalcMatrix, actor->fwork[3] * M_DTOR, MTXF_NEW); + this->fwork[3] += D_i5_801BA854[this->index]; + + Matrix_RotateY(gCalcMatrix, this->fwork[3] * M_DTOR, MTXF_NEW); + sp5C.x = 0.0f; - sp5C.y = D_i5_801BA874[actor->index]; - sp5C.z = D_i5_801BA894[actor->index]; - Math_SmoothStepToF(&D_i5_801BA894[actor->index], 250.0f, 0.05f, 0.5f, 0.01f); + sp5C.y = D_i5_801BA874[this->index]; + sp5C.z = D_i5_801BA894[this->index]; + + Math_SmoothStepToF(&D_i5_801BA894[this->index], 250.0f, 0.05f, 0.5f, 0.01f); Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp44); - actor->fwork[0] = sp44.x; - actor->fwork[1] = sp44.y; - actor->fwork[2] = sp44.z - 100.0f; - Math_SmoothStepToF(&actor->obj.rot.z, SIN_DEG(actor->fwork[3]) * -30.0f, 0.1f, 2.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.x, actor->fwork[0] + player->pos.x, 0.03f, 10.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.y, actor->fwork[1] + player->pos.y + sp3C, 0.03f, 10.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.z, actor->fwork[2] + player->trueZpos, 0.03f, 10.0f, 0.0f); + + this->fwork[0] = sp44.x; + this->fwork[1] = sp44.y; + this->fwork[2] = sp44.z - 100.0f; + + Math_SmoothStepToF(&this->obj.rot.z, SIN_DEG(this->fwork[3]) * -30.0f, 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[0] + player->pos.x, 0.03f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[1] + player->pos.y + sp3C, 0.03f, 10.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.z, this->fwork[2] + player->trueZpos, 0.03f, 10.0f, 0.0f); break; + case 31: - AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, actor->sfxSource, 0); - actor->drawShadow = false; - actor->timer_0BC = 20; - actor->state++; - actor->fwork[29] = 5.0f; + AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, this->sfxSource, 0); + this->drawShadow = false; + this->timer_0BC = 20; + this->state++; + this->fwork[29] = 5.0f; /* fallthrough */ case 32: - if (actor->timer_0BC <= 0) { - actor->drawShadow = true; + if (this->timer_0BC <= 0) { + this->drawShadow = true; } - actor->iwork[11] = 2; - Math_SmoothStepToF(&actor->obj.rot.x, -20.0f, 0.1f, 0.5f, 0.0f); - Math_SmoothStepToF(&actor->fwork[9], 25.0f, 0.1f, 2.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.rot.z, 0.0f, 0.1f, 0.5f, 0.0f); + this->iwork[11] = 2; + Math_SmoothStepToF(&this->obj.rot.x, -20.0f, 0.1f, 0.5f, 0.0f); + Math_SmoothStepToF(&this->fwork[9], 25.0f, 0.1f, 2.0f, 0.0f); + Math_SmoothStepToF(&this->obj.rot.z, 0.0f, 0.1f, 0.5f, 0.0f); break; } - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + sp5C.x = 0.0f; sp5C.y = 0.0f; - sp5C.z = actor->fwork[9]; + sp5C.z = this->fwork[9]; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp5C, &sp50); - actor->vel.x = sp50.x; - actor->vel.y = sp50.y; - actor->vel.z = sp50.z; + + this->vel.x = sp50.x; + this->vel.y = sp50.y; + this->vel.z = sp50.z; } static f32 D_i5_801BA8B4[5] = { -100.0f, 380.0f, -450.0f, 0.0f, -340.0f }; @@ -6650,63 +7440,75 @@ static f32 D_i5_801BA8DC[5] = { 500.0f, 500.0f, 600.0f, 2500.0f, 590.0f }; static f32 D_i5_801BA8F0[4] = { 90.0f, -90.0f, 0.0f, 0.0f }; -void Macbeth_801B3554(Actor* actor, s32 arg1) { - Player* player; +void Macbeth_LevelComplete1_TeamSetup(Actor* this, s32 teamIndex) { + Player* player = &gPlayer[0]; - player = &gPlayer[0]; - Actor_Initialize(actor); - actor->obj.pos.x = player->pos.x + D_i5_801BA8B4[arg1]; - actor->obj.pos.y = player->pos.y + D_i5_801BA8C8[arg1]; - actor->obj.pos.z = player->pos.z + D_i5_801BA8DC[arg1]; - actor->fwork[7] = RAND_FLOAT(360.0f); - actor->fwork[8] = RAND_FLOAT(360.0f); - actor->vel.x = player->vel.x; - actor->vel.y = player->vel.y; - actor->vel.z = player->vel.z; - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.rot.y = 180.0f; - Object_SetInfo(&actor->info, actor->obj.id); - if (arg1 < 3) { - actor->iwork[11] = 1; - actor->drawShadow = true; - actor->fwork[3] = D_i5_801BA8F0[arg1]; - actor->state = 30; - AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); + Actor_Initialize(this); + + this->obj.pos.x = player->pos.x + D_i5_801BA8B4[teamIndex]; + this->obj.pos.y = player->pos.y + D_i5_801BA8C8[teamIndex]; + this->obj.pos.z = player->pos.z + D_i5_801BA8DC[teamIndex]; + + this->fwork[7] = RAND_FLOAT(360.0f); + this->fwork[8] = RAND_FLOAT(360.0f); + + this->vel.x = player->vel.x; + this->vel.y = player->vel.y; + this->vel.z = player->vel.z; + + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.rot.y = 180.0f; + + Object_SetInfo(&this->info, this->obj.id); + + if (teamIndex < 3) { + this->iwork[11] = 1; + this->drawShadow = true; + this->fwork[3] = D_i5_801BA8F0[teamIndex]; + this->state = 30; + AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, this->sfxSource, 4); return; } - actor->animFrame = 1; - actor->state = 20; - AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, actor->sfxSource, 0); - actor->fwork[9] = 20.0f; + this->animFrame = 1; + this->state = 20; + AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, this->sfxSource, 0); + this->fwork[9] = 20.0f; } static f32 D_i5_801BA900 = 90.0f; void Macbeth_801B3718(void) { - Actor* actor = &gActors[8]; + ActorCutscene* actor = &gActors[8]; Actor_Initialize(actor); actor->obj.status = OBJ_INIT; actor->obj.id = OBJ_ACTOR_CUTSCENE; + actor->obj.pos.x = gPlayer[0].pos.x + D_i5_801BA8B4[4]; actor->obj.pos.y = gPlayer[0].pos.y + D_i5_801BA8C8[4]; actor->obj.pos.z = gPlayer[0].pos.z + D_i5_801BA8DC[4]; + actor->vel.x = gPlayer[0].vel.x; actor->vel.y = gPlayer[0].vel.y; actor->vel.z = gPlayer[0].vel.z; + actor->fwork[7] = RAND_FLOAT(360.0f); actor->fwork[8] = RAND_FLOAT(360.0f); + actor->rot_0F4.y = 180.0f; actor->rot_0F4.x = 0.0f; + actor->obj.rot.x = -0.0f; actor->obj.rot.y = actor->rot_0F4.y; actor->obj.rot.z = -actor->rot_0F4.z; + actor->fwork[0] = 30.0f; actor->animFrame = 24; actor->iwork[11] = 1; actor->state = 10; actor->fwork[3] = D_i5_801BA900; + Object_SetInfo(&actor->info, actor->obj.id); AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); } @@ -6724,7 +7526,8 @@ void Macbeth_801B38E0(void) { } for (i = 0; i < ARRAY_COUNT(gScenery); i++) { - if ((gScenery[i].obj.id <= OBJ_SCENERY_91) || (gScenery[i].obj.id >= OBJ_SCENERY_97)) { + if ((gScenery[i].obj.id <= OBJ_SCENERY_MA_RAILROAD_SWITCH_8) || + (gScenery[i].obj.id >= OBJ_SCENERY_MA_TRAIN_TRACK_6)) { Object_Kill(&gScenery[i].obj, gScenery[i].sfxSource); Scenery_Initialize(&gScenery[i]); } @@ -6770,9 +7573,9 @@ void Macbeth_801B38E0(void) { } for (i = 0; i < 2; i++) { - gActor194Status[i] = 0; + gMeMoraStatus[i] = 0; for (j = 0; j < 100; j++) { - gActor194yPos[i][j] = -5000.0f; + gMeMoraYpos[i][j] = -5000.0f; } } } @@ -6783,6 +7586,7 @@ void Macbeth_LevelComplete1(Player* player) { gCsCamEyeX = player->pos.x; gCsCamEyeY = player->pos.y; gCsCamEyeZ = player->pos.z + player->zPath + 50.0f; + switch (player->csState) { case 0: gCsFrameCount = gBossActive = gLoadLevelObjects = 1; @@ -6791,38 +7595,49 @@ void Macbeth_LevelComplete1(Player* player) { D_i5_801BA894[2] = D_i5_801BA894[4]; D_i5_801BA894[1] = D_i5_801BA894[4]; D_i5_801BA894[0] = D_i5_801BA894[4]; + gFillScreenRed = 255; gFillScreenGreen = 255; gFillScreenBlue = 255; gFillScreenAlpha = gFillScreenAlphaTarget = D_ctx_80177A10[9] = 0; + D_ctx_80177A48[0] = 0.0f; + player->csState++; /* fallthrough */ case 1: D_i5_801BE240 = 2000.0f; D_i5_801BE244 = 2000.0f; D_i5_801BE248 = 2000.0f; + Math_SmoothStepToF(D_ctx_80177A48, 0.1f, 1.0f, 0.01f, 0.0f); Math_SmoothStepToF(&player->baseSpeed, 4.9f, 0.1f, 1.0f, 0.0f); Math_SmoothStepToF(&player->camDist, 0.0f, 0.1f, 1.0f, 0.0f); + gCsCamEyeX = player->pos.x; gCsCamEyeY = player->pos.y; gCsCamEyeZ = player->pos.z + player->zPath + 50.0f; + if (gCsCamEyeY < 5.0f) { gCsCamEyeY = 5.0f; } + gCsCamAtX = player->pos.x; gCsCamAtY = player->pos.y + 30.0f; gCsCamAtZ = player->pos.z + player->zPath; + gFillScreenRed = 255; gFillScreenGreen = 255; gFillScreenBlue = 255; + if (D_ctx_80177A10[9] >= 248) { D_ctx_80177A10[9] = 255; } else { D_ctx_80177A10[9] += 8; } + gFillScreenAlpha = gFillScreenAlphaTarget = D_ctx_80177A10[9]; + if (gCsFrameCount > 40) { D_ctx_80177A10[9] = 255; player->cam.eye.x = gCsCamEyeX = 0.0f; @@ -6844,16 +7659,20 @@ void Macbeth_LevelComplete1(Player* player) { Player_CollisionCheck(player); Player_UpdatePath(player); break; + case 2: Math_SmoothStepToF(D_ctx_80177A48, 0.01f, 0.1f, 0.01f, 0.0f); + gCsCamEyeX = gCsCamAtX = player->pos.x; gCsCamEyeY = 3520.0f; gCsCamAtY = 0.0f; gCsCamEyeZ = 350.0f; gCsCamAtZ = -300.0f; + D_i5_801BE240 = 2.0f; D_i5_801BE244 = 2.0f; D_i5_801BE248 = 2.0f; + if (gCsFrameCount > 85) { gFillScreenAlphaTarget = gFillScreenAlpha = D_ctx_80177A10[9]; D_ctx_80177A10[9] -= 10; @@ -6862,13 +7681,16 @@ void Macbeth_LevelComplete1(Player* player) { player->csState = 10; } } + func_tank_80045130(player); func_tank_80044868(player); func_tank_80045678(player); func_tank_80045E7C(player); + Player_CollisionCheck(player); Player_UpdatePath(player); break; + case 10: player->csState = 11; player->gravity = 3.0f; @@ -6876,10 +7698,12 @@ void Macbeth_LevelComplete1(Player* player) { /* fallthrough */ case 11: Math_SmoothStepToF(D_ctx_80177A48, 0.01f, 0.1f, 0.01f, 0.0f); + gCsCamEyeX = gCsCamAtX = player->pos.x; gCsCamEyeY = 3520.0f; gCsCamAtY = 0.0f; gCsCamEyeZ = 350.0f; + if (gCsFrameCount < 1265) { gCsCamAtZ = -300.0f; } else { @@ -6897,39 +7721,50 @@ void Macbeth_LevelComplete1(Player* player) { Math_SmoothStepToF(&D_i5_801BE244, 1.5f, 0.1f, 0.05f, 0.01f); Math_SmoothStepToF(&D_i5_801BE248, 2.0f, 0.1f, 0.1f, 0.01f); } + Math_SmoothStepToF(&player->baseSpeed, 4.9f, 0.1f, 1.0f, 0.0f); Math_SmoothStepToF(&player->camDist, 0.0f, 0.1f, 1.0f, 0.0f); + func_tank_80045130(player); func_tank_80044868(player); func_tank_80045678(player); func_tank_80045E7C(player); + Player_CollisionCheck(player); Player_UpdatePath(player); break; + case 12: break; } + switch (gCsFrameCount) { case 755: gShowLevelClearStatusScreen = 1; break; + case 1025: gShowLevelClearStatusScreen = 0; break; + case 50: AUDIO_PLAY_BGM(NA_BGM_COURSE_CLEAR); break; + case 100: gLevelClearScreenTimer = 100; break; + case 160: Radio_PlayMessage(gMsg_ID_20010, RCID_FOX); break; + case 230: if (gTeamShields[TEAM_ID_SLIPPY] > 0.0f) { - Macbeth_801B3554(&gActors[0], 0); + Macbeth_LevelComplete1_TeamSetup(&gActors[0], 0); } break; + case 260: switch (gTeamShields[TEAM_ID_SLIPPY]) { case 0: @@ -6943,11 +7778,13 @@ void Macbeth_LevelComplete1(Player* player) { break; } break; + case 380: if (gTeamShields[TEAM_ID_PEPPY] > 0.0f) { - Macbeth_801B3554(&gActors[1], 1); + Macbeth_LevelComplete1_TeamSetup(&gActors[1], 1); } break; + case 410: switch (gTeamShields[TEAM_ID_PEPPY]) { case 0: @@ -6961,11 +7798,13 @@ void Macbeth_LevelComplete1(Player* player) { break; } break; + case 530: if (gTeamShields[TEAM_ID_FALCO] > 0.0f) { - Macbeth_801B3554(&gActors[2], 2); + Macbeth_LevelComplete1_TeamSetup(&gActors[2], 2); } break; + case 560: switch (gTeamShields[TEAM_ID_FALCO]) { case 0: @@ -6979,30 +7818,37 @@ void Macbeth_LevelComplete1(Player* player) { break; } break; + case 680: if (gLeveLClearStatus[LEVEL_ZONESS] != 0) { Macbeth_801B3718(); } break; + case 1027: if (gLeveLClearStatus[LEVEL_ZONESS] != 0) { Radio_PlayMessage(gMsg_ID_17350, RCID_KATT); } break; + case 1065: if (gLeveLClearStatus[LEVEL_ZONESS] != 0) { gActors[8].state++; } break; + case 1157: gActors[0].state++; break; + case 1136: gActors[1].state++; break; + case 1197: gActors[2].state++; break; + case 1158: if (gLeveLClearStatus[LEVEL_ZONESS] != 0) { Object_Kill(&gActors[8].obj, gActors[8].sfxSource); @@ -7011,8 +7857,9 @@ void Macbeth_LevelComplete1(Player* player) { case 1195: gSceneSetup = 1; break; + case 1200: - Macbeth_801B3554(&gActors[3], 3); + Macbeth_LevelComplete1_TeamSetup(&gActors[3], 3); gLoadLevelObjects = 0; break; } @@ -7022,10 +7869,11 @@ void Macbeth_LevelComplete1(Player* player) { Math_SmoothStepToF(&player->cam.at.x, gCsCamAtX, D_ctx_80177A48[0], D_i5_801BE240, 0.0f); Math_SmoothStepToF(&player->cam.at.y, gCsCamAtY, D_ctx_80177A48[0], D_i5_801BE244, 0.0f); Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[0], D_i5_801BE248, 0.0f); + player->cam.at.y += zeroVar; if ((gCsFrameCount >= 850) && ((gGameFrameCount % 16) == 0)) { - Macbeth_801ACF6C(); + Macbeth_EffectClouds_Spawn(); } if (gCsFrameCount == 1220) { SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 60); diff --git a/src/overlays/ovl_i5/fox_ti.c b/src/overlays/ovl_i5/fox_ti.c index 3f82e728..87c763f2 100644 --- a/src/overlays/ovl_i5/fox_ti.c +++ b/src/overlays/ovl_i5/fox_ti.c @@ -79,72 +79,72 @@ void Titania_80188F30(void) { D_MA_801BA1E8 = 99; } -void Titania_Effect368_Update(Effect* effect) { - if (effect->timer_50 == 0) { - effect->unk_44 -= 16; - if (effect->unk_44 < 17) { - Object_Kill(&effect->obj, effect->sfxSource); +void Titania_Effect368_Update(Effect368* this) { + if (this->timer_50 == 0) { + this->unk_44 -= 16; + if (this->unk_44 < 17) { + Object_Kill(&this->obj, this->sfxSource); } } } -void Titania_Effect368_Draw(Effect* effect) { - Matrix_Scale(gGfxMatrix, effect->scale2 * 0.5f, effect->scale2, effect->scale2, MTXF_APPLY); +void Titania_Effect368_Draw(Effect368* this) { + Matrix_Scale(gGfxMatrix, this->scale2 * 0.5f, this->scale2, this->scale2, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, -(M_DTOR * 90), MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, effect->unk_44); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, this->unk_44); gSPDisplayList(gMasterDisp++, D_landmaster_3007E70); } -void Titania_80189090(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 scale2) { - Effect_Initialize(effect); - effect->obj.status = OBJ_INIT; - effect->obj.id = OBJ_EFFECT_368; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->obj.rot.y = yRot; - effect->scale2 = scale2; - effect->timer_50 = 25; - effect->unk_44 = 255; - Object_SetInfo(&effect->info, effect->obj.id); +void Titania_Effect368_Setup(Effect368* this, f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 scale2) { + Effect_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_EFFECT_368; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->obj.rot.y = yRot; + this->scale2 = scale2; + this->timer_50 = 25; + this->unk_44 = 255; + Object_SetInfo(&this->info, this->obj.id); } -void Titania_80189120(f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 scale2) { +void Titania_Effect368_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 yRot, f32 scale2) { s32 i; for (i = 50; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Titania_80189090(&gEffects[i], xPos, yPos, zPos, yRot, scale2); + Titania_Effect368_Setup(&gEffects[i], xPos, yPos, zPos, yRot, scale2); break; } } } -void Titania_Actor224_Update(Actor* actor) { - Ground_801B49D0(actor); +void Titania_TiTerrain_Update(TiTerrain* this) { + Ground_801B49D0(this); } static Vec3f D_i5_801B7520 = { -150.0f, 0.0f, 0.0f }; -void Titania_801891B4(s32 limbIndex, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +void Titania_TiDesertRover_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { + TiDesertRover* this = (TiDesertRover*) data; if (limbIndex == 2) { - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7520, (Vec3f*) &actor->fwork[0]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7520, (Vec3f*) &this->fwork[0]); } } -void Titania_801891F4(Actor* actor) { +void Titania_801891F4(TiDesertRover* this) { f32 temp_fs0; f32 temp_fs1; f32 var_fv1; f32 temp; f32 temp2; - temp_fs0 = gPlayer[0].pos.x - actor->obj.pos.x; - temp_fs1 = (gPlayer[0].trueZpos + gPlayer[0].camDist) - actor->obj.pos.z; + temp_fs0 = gPlayer[0].pos.x - this->obj.pos.x; + temp_fs1 = (gPlayer[0].trueZpos + gPlayer[0].camDist) - this->obj.pos.z; var_fv1 = Math_RadToDeg(Math_Atan2F(temp_fs0, temp_fs1)); @@ -155,15 +155,15 @@ void Titania_801891F4(Actor* actor) { var_fv1 = 315.0f; } - Math_SmoothStepToAngle(&actor->obj.rot.y, var_fv1, 0.2f, 6.0f, 0.01f); - temp_fs0 = (actor->obj.pos.x + actor->fwork[0]) - gPlayer[0].pos.x; - temp2 = (actor->obj.pos.y + actor->fwork[1]) - (gPlayer[0].pos.y + 30.0f); - temp_fs1 = ((actor->obj.pos.z + actor->fwork[2]) - gPlayer[0].trueZpos) + gPlayer[0].camDist; + Math_SmoothStepToAngle(&this->obj.rot.y, var_fv1, 0.2f, 6.0f, 0.01f); + temp_fs0 = (this->obj.pos.x + this->fwork[0]) - gPlayer[0].pos.x; + temp2 = (this->obj.pos.y + this->fwork[1]) - (gPlayer[0].pos.y + 30.0f); + temp_fs1 = ((this->obj.pos.z + this->fwork[2]) - gPlayer[0].trueZpos) + gPlayer[0].camDist; temp = sqrtf(SQ(temp_fs0) + SQ(temp_fs1)); - Math_SmoothStepToAngle(&actor->fwork[5], Math_RadToDeg(Math_Atan2F(temp2, temp)), 0.2f, 5.0f, 0.01f); + Math_SmoothStepToAngle(&this->fwork[5], Math_RadToDeg(Math_Atan2F(temp2, temp)), 0.2f, 5.0f, 0.01f); } -void Titania_80189380(Actor* actor) { +void Titania_80189380(TiDesertRover* this) { Vec3f sp8C; Vec3f sp80; Vec3f sp74; @@ -173,37 +173,37 @@ void Titania_80189380(Actor* actor) { Vec3f sp44; Vec3f pad; - sp50.x = actor->fwork[0]; - sp50.y = actor->fwork[1]; - sp50.z = actor->fwork[2]; + sp50.x = this->fwork[0]; + sp50.y = this->fwork[1]; + sp50.z = this->fwork[2]; - sp44.x = gPlayer[0].pos.x - actor->obj.pos.x; - sp44.y = gPlayer[0].pos.y - actor->obj.pos.y; - sp44.z = gPlayer[0].pos.z - actor->obj.pos.z; + sp44.x = gPlayer[0].pos.x - this->obj.pos.x; + sp44.y = gPlayer[0].pos.y - this->obj.pos.y; + sp44.z = gPlayer[0].pos.z - this->obj.pos.z; - Matrix_RotateZ(gCalcMatrix, -actor->obj.rot.z * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateY(gCalcMatrix, -actor->obj.rot.y * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, -this->obj.rot.z * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, -this->obj.rot.y * M_DTOR, MTXF_APPLY); Matrix_MultVec3f(gCalcMatrix, &sp44, &sp8C); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); Matrix_MultVec3f(gCalcMatrix, &sp50, &sp8C); - sp80.x = actor->obj.pos.x + sp8C.x; - sp80.y = actor->obj.pos.y + sp8C.y; - sp80.z = actor->obj.pos.z + sp8C.z; + sp80.x = this->obj.pos.x + sp8C.x; + sp80.y = this->obj.pos.y + sp8C.y; + sp80.z = this->obj.pos.z + sp8C.z; - sp74.x = actor->fwork[5]; - sp74.y = actor->obj.rot.y; + sp74.x = this->fwork[5]; + sp74.y = this->obj.rot.y; sp74.z = 0.0f; - sp68.x = actor->obj.rot.x; - sp68.y = actor->obj.rot.y; - sp68.z = actor->obj.rot.z; + sp68.x = this->obj.rot.x; + sp68.y = this->obj.rot.y; + sp68.z = this->obj.rot.z; sp5C.x = 0.0f; sp5C.y = 0.0f; @@ -217,133 +217,135 @@ void Titania_80189380(Actor* actor) { static Vec3f D_i5_801B752C = { -50.0f, 0.0f, -20.0f }; static Vec3f D_i5_801B7538 = { 50.0f, 0.0f, -20.0f }; -void Titania_Actor226_Update(Actor* actor) { +void Titania_TiDesertRover_Update(TiDesertRover* this) { Vec3f sp54; Vec3f sp48; f32 sp44; f32 sp40; f32 sp3C; - actor->iwork[2]++; + this->iwork[2]++; - switch (actor->state) { + switch (this->state) { case 0: - AUDIO_PLAY_SFX(NA_SE_EN_TANK_ENGINE, actor->sfxSource, 4); - if (actor->obj.rot.z > 1.0f) { - actor->iwork[0] = 1; + AUDIO_PLAY_SFX(NA_SE_EN_TANK_ENGINE, this->sfxSource, 4); + if (this->obj.rot.z > 1.0f) { + this->iwork[0] = 1; } - actor->state = 1; + this->state = 1; /* fallthrough */ case 1: - actor->fwork[7] = 20.0f; - if (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 3000.0f) { - actor->state = 2; - actor->timer_0BC = 30; + this->fwork[7] = 20.0f; + if (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 3000.0f) { + this->state = 2; + this->timer_0BC = 30; } break; case 2: - if (actor->iwork[0] == 1) { - actor->fwork[7] = 5.0f; - if (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 200.0f) { - actor->fwork[7] = 0.0f; + if (this->iwork[0] == 1) { + this->fwork[7] = 5.0f; + if (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 200.0f) { + this->fwork[7] = 0.0f; } - Titania_801891F4(actor); + Titania_801891F4(this); } - if (actor->timer_0BC == 0) { - actor->timer_0BC = 40; - Titania_80189380(actor); - if ((fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) > 200.0f) && (actor->iwork[0] == 1)) { - actor->fwork[6] = -10.0f; + + if (this->timer_0BC == 0) { + this->timer_0BC = 40; + Titania_80189380(this); + if ((fabsf(this->obj.pos.z - gPlayer[0].trueZpos) > 200.0f) && (this->iwork[0] == 1)) { + this->fwork[6] = -10.0f; } } break; } - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp44, &sp3C, &sp40); - actor->obj.pos.y = sp3C; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp44, &sp3C, &sp40); + this->obj.pos.y = sp3C; - if (actor->obj.rot.x < sp44 * M_RTOD) { - actor->obj.rot.x += 2.0f; + if (this->obj.rot.x < sp44 * M_RTOD) { + this->obj.rot.x += 2.0f; } - if (sp44 * M_RTOD < actor->obj.rot.x) { - actor->obj.rot.x -= 2.0f; + if (sp44 * M_RTOD < this->obj.rot.x) { + this->obj.rot.x -= 2.0f; } - if (actor->obj.rot.z < sp40 * M_RTOD) { - actor->obj.rot.z += 2.0f; + if (this->obj.rot.z < sp40 * M_RTOD) { + this->obj.rot.z += 2.0f; } - if (sp40 * M_RTOD < actor->obj.rot.z) { - actor->obj.rot.z -= 2.0f; + if (sp40 * M_RTOD < this->obj.rot.z) { + this->obj.rot.z -= 2.0f; } - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_Push(&gCalcMatrix); - if (((actor->iwork[2] % 2) == 0) && ((actor->obj.pos.z + gPathProgress) > -3800.0f)) { - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); + if (((this->iwork[2] % 2) == 0) && ((this->obj.pos.z + gPathProgress) > -3800.0f)) { + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); Matrix_MultVec3fNoTranslate(gCalcMatrix, &D_i5_801B752C, &sp48); - Titania_80189120(actor->obj.pos.x + sp48.x, actor->obj.pos.y + sp48.y, actor->obj.pos.z + sp48.z, - actor->obj.pos.y, 1.3f); + Titania_Effect368_Spawn(this->obj.pos.x + sp48.x, this->obj.pos.y + sp48.y, this->obj.pos.z + sp48.z, + this->obj.pos.y, 1.3f); Matrix_MultVec3fNoTranslate(gCalcMatrix, &D_i5_801B7538, &sp48); - Titania_80189120(actor->obj.pos.x + sp48.x, actor->obj.pos.y + sp48.y, actor->obj.pos.z + sp48.z, - actor->obj.pos.y, 1.3f); + Titania_Effect368_Spawn(this->obj.pos.x + sp48.x, this->obj.pos.y + sp48.y, this->obj.pos.z + sp48.z, + this->obj.pos.y, 1.3f); } - Math_SmoothStepToF(&actor->fwork[6], actor->fwork[7], 0.1f, 2.0f, 0.00001f); + Math_SmoothStepToF(&this->fwork[6], this->fwork[7], 0.1f, 2.0f, 0.00001f); Matrix_Pop(&gCalcMatrix); sp54.x = 0.0f; sp54.y = 0.0f; - sp54.z = actor->fwork[6]; + sp54.z = this->fwork[6]; Matrix_MultVec3f(gCalcMatrix, &sp54, &sp48); - actor->vel.x = sp48.x; - actor->vel.y = sp48.y; - actor->vel.z = sp48.z; + this->vel.x = sp48.x; + this->vel.y = sp48.y; + this->vel.z = sp48.z; - if (actor->dmgType > DMG_NONE) { + if (this->dmgType > DMG_NONE) { if (Rand_ZeroOne() <= 0.25f) { - actor->itemDrop = DROP_SILVER_RING_50p; + this->itemDrop = DROP_SILVER_RING_50p; } else { - actor->itemDrop = DROP_NONE; + this->itemDrop = DROP_NONE; } - Actor_Despawn(actor); - actor->info.bonus = 0; - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y + 30.0f, actor->obj.pos.z, 8.0f); - func_effect_8007C120(actor->obj.pos.x, actor->obj.pos.y + 30.0f, actor->obj.pos.z, actor->vel.x, actor->vel.y, - actor->vel.z, 0.1f, 30); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); - Object_Kill(&actor->obj, actor->sfxSource); + Actor_Despawn(this); + this->info.bonus = 0; + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, 8.0f); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y + 30.0f, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.1f, 30); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); + Object_Kill(&this->obj, this->sfxSource); } } -void Titania_Actor226_Draw(Actor* actor) { - Animation_GetFrameData(&D_TI1_700C8D8, 0, actor->vwork); - actor->vwork[3].z = actor->fwork[5] + 270.0f; - Animation_DrawSkeleton(1, D_TI1_700C964, actor->vwork, NULL, Titania_801891B4, actor, &gIdentityMatrix); +void Titania_TiDesertRover_Draw(TiDesertRover* this) { + Animation_GetFrameData(&aTi1DesertRoverAnim, 0, this->vwork); + this->vwork[3].z = this->fwork[5] + 270.0f; + Animation_DrawSkeleton(1, aTi1DesertRoverSkel, this->vwork, NULL, Titania_TiDesertRover_PostLimbDraw, this, + &gIdentityMatrix); } static Vec3f D_i5_801B7544 = { 0.0f, -50.0f, 178.0f }; -void Titania_80189B80(Actor* actor) { +void Titania_TiFekuda_Init(TiFekuda* this) { f32 sp2C; - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp2C, &actor->obj.pos.y, &sp2C); - actor->health = 10; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_60068F0); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7544, (Vec3f*) &actor->fwork[0]); - actor->fwork[0] += actor->obj.pos.x; - actor->fwork[1] += actor->obj.pos.y; - actor->fwork[2] += actor->obj.pos.z; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp2C, &this->obj.pos.y, &sp2C); + this->health = 10; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aTiFekudaHitbox); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7544, (Vec3f*) &this->fwork[0]); + this->fwork[0] += this->obj.pos.x; + this->fwork[1] += this->obj.pos.y; + this->fwork[2] += this->obj.pos.z; } -void Titania_Actor233_Update(Actor* actor) { +void Titania_TiFekuda_Update(TiFekuda* this) { static Vec3f D_i5_801B7550 = { 0.0f, -50.0f, 178.0f }; static Vec3f D_i5_801B755C = { 0.0f, 0.0f, 90.0f }; Vec3f sp64; @@ -352,271 +354,270 @@ void Titania_Actor233_Update(Actor* actor) { Vec3f sp40; f32 temp; - if (actor->health > 0) { - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0C6 = 15; - actor->health -= actor->damage; - if (actor->health <= 0) { - actor->health = 0; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, actor->sfxSource, 4); - actor->lockOnTimers[TEAM_ID_FOX] = actor->itemDrop = 0; - actor->info.targetOffset = 0.0f; - Actor_Despawn(actor); - actor->info.bonus = 0; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_6006924); - func_effect_8007D0E0(actor->fwork[0], actor->fwork[1], actor->fwork[2], 2.0f); + if (this->health > 0) { + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0C6 = 15; + this->health -= this->damage; + if (this->health <= 0) { + this->health = 0; + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_S, this->sfxSource, 4); + this->lockOnTimers[TEAM_ID_FOX] = this->itemDrop = 0; + this->info.targetOffset = 0.0f; + Actor_Despawn(this); + this->info.bonus = 0; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_6006924); + func_effect_8007D0E0(this->fwork[0], this->fwork[1], this->fwork[2], 2.0f); } } - if (actor->timer_0BC >= 15) { - sp4C.x = gPlayer[0].pos.x - actor->obj.pos.x; - sp4C.y = (gPlayer[0].pos.y + 30.0f) - actor->obj.pos.y; - sp4C.z = gPlayer[0].pos.z - actor->obj.pos.z; - Matrix_RotateZ(gCalcMatrix, -actor->obj.rot.z * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateY(gCalcMatrix, -actor->obj.rot.y * M_DTOR, MTXF_APPLY); + if (this->timer_0BC >= 15) { + sp4C.x = gPlayer[0].pos.x - this->obj.pos.x; + sp4C.y = (gPlayer[0].pos.y + 30.0f) - this->obj.pos.y; + sp4C.z = gPlayer[0].pos.z - this->obj.pos.z; + Matrix_RotateZ(gCalcMatrix, -this->obj.rot.z * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, -this->obj.rot.y * M_DTOR, MTXF_APPLY); Matrix_MultVec3f(gCalcMatrix, &sp4C, &sp64); sp58.x = sp64.x - D_i5_801B7550.x; sp58.y = sp64.y - D_i5_801B7550.y; sp58.z = sp64.z - D_i5_801B7550.z; temp = sqrtf(SQ(sp58.x) + SQ(sp58.z)); - actor->fwork[5] = Math_RadToDeg(-Math_Atan2F(sp58.y, temp)); - actor->fwork[6] = Math_RadToDeg(Math_Atan2F(sp58.x, sp58.z)); - Math_SmoothStepToAngle(&actor->fwork[3], actor->fwork[5], 0.2f, 5.0f, 0.01f); - Math_SmoothStepToAngle(&actor->fwork[4], actor->fwork[6], 0.2f, 5.0f, 0.01f); + this->fwork[5] = Math_RadToDeg(-Math_Atan2F(sp58.y, temp)); + this->fwork[6] = Math_RadToDeg(Math_Atan2F(sp58.x, sp58.z)); + Math_SmoothStepToAngle(&this->fwork[3], this->fwork[5], 0.2f, 5.0f, 0.01f); + Math_SmoothStepToAngle(&this->fwork[4], this->fwork[6], 0.2f, 5.0f, 0.01f); - if ((actor->fwork[4] > 45.0f) && (actor->fwork[4] < 180.0f)) { - actor->fwork[4] = 45.0f; + if ((this->fwork[4] > 45.0f) && (this->fwork[4] < 180.0f)) { + this->fwork[4] = 45.0f; } - if ((actor->fwork[4] < 315.0f) && (actor->fwork[4] > 180.0f)) { - actor->fwork[4] = 315.0f; + if ((this->fwork[4] < 315.0f) && (this->fwork[4] > 180.0f)) { + this->fwork[4] = 315.0f; } - if ((actor->fwork[3] > 45.0f) && (actor->fwork[3] < 180.0f)) { - actor->fwork[3] = 45.0f; + if ((this->fwork[3] > 45.0f) && (this->fwork[3] < 180.0f)) { + this->fwork[3] = 45.0f; } - if ((actor->fwork[3] < 315.0f) && (actor->fwork[3] > 180.0f)) { - actor->fwork[3] = 315.0f; + if ((this->fwork[3] < 315.0f) && (this->fwork[3] > 180.0f)) { + this->fwork[3] = 315.0f; } } - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7550, &sp64); - sp40.x = actor->fwork[3]; - sp40.y = actor->fwork[4]; + sp40.x = this->fwork[3]; + sp40.y = this->fwork[4]; sp40.z = 0.0f; - if ((actor->timer_0BC < 15) && ((actor->timer_0BC % 7) == 0)) { - func_effect_8007EE68(OBJ_EFFECT_ENEMY_LASER_1, (Vec3f*) &actor->fwork[0], &sp40, &actor->obj.rot, + if ((this->timer_0BC < 15) && ((this->timer_0BC % 7) == 0)) { + func_effect_8007EE68(OBJ_EFFECT_ENEMY_LASER_1, (Vec3f*) &this->fwork[0], &sp40, &this->obj.rot, &D_i5_801B755C, 1.0f); - if (actor->timer_0BC == 0) { - actor->timer_0BC = 90; + if (this->timer_0BC == 0) { + this->timer_0BC = 90; } } } else if (((gGameFrameCount % 8) == 0) && (Rand_ZeroOne() < 0.5f)) { - AUDIO_PLAY_SFX(NA_SE_EN_BROKEN_SPARK, actor->sfxSource, 4); - func_effect_8007C120(actor->fwork[0], actor->fwork[1], actor->fwork[2], 0.0f, 0.0f, 0.0f, 0.1f, 7); - actor->timer_0C6 = 4; + AUDIO_PLAY_SFX(NA_SE_EN_BROKEN_SPARK, this->sfxSource, 4); + Effect_Effect390_Spawn(this->fwork[0], this->fwork[1], this->fwork[2], 0.0f, 0.0f, 0.0f, 0.1f, 7); + this->timer_0C6 = 4; } } -void Titania_Actor233_Draw(Actor* actor) { +void Titania_TiFekuda_Draw(TiFekuda* this) { gSPDisplayList(gMasterDisp++, D_TI1_700C4B0); Matrix_Translate(gGfxMatrix, 0.0f, -50.0f, 178.0f, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, actor->fwork[4] * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, actor->fwork[3] * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[4] * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, this->fwork[3] * M_DTOR, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if (actor->health != 0) { + if (this->health != 0) { gSPDisplayList(gMasterDisp++, D_TI1_700B9C0); RCP_SetupDL(&gMasterDisp, SETUPDL_33); gSPDisplayList(gMasterDisp++, D_TI1_700C980); } } -static f32 D_i5_801B7568[7] = { 1.0f, 0.0f, 25.0f, 0.0f, 12.0f, 0.0f, 12.0f }; +static f32 sTiBoulderHitbox[7] = { 1.0f, 0.0f, 25.0f, 0.0f, 12.0f, 0.0f, 12.0f }; Gfx* D_TI_801B7584[10] = { D_TI1_700DDF0, D_TI1_700D9B0, D_TI1_700DF70, D_TI1_700DC50, D_TI1_700DED0, D_TI1_700DAD0, D_TI1_700DBB0, D_TI1_700E030, D_TI1_700D880, D_TI1_700D740, }; -void Titania_8018A2E8(Actor* actor, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { - - Actor_Initialize(actor); - actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_230; - actor->timer_0BC = RAND_INT(20.0f) + 20; - actor->timer_0C2 = 8; - actor->vel.x = xVel; - actor->vel.y = yVel; - actor->vel.z = zVel; - actor->obj.pos.x = xPos; - actor->obj.pos.y = yPos; - actor->obj.pos.z = zPos; - actor->scale = RAND_FLOAT(0.2f) + 0.3f; - Object_SetInfo(&actor->info, actor->obj.id); - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_i5_801B7568); +void Titania_TiBoulder_Setup(TiBoulder* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { + Actor_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_ACTOR_TI_BOULDER; + this->timer_0BC = RAND_INT(20.0f) + 20; + this->timer_0C2 = 8; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->scale = RAND_FLOAT(0.2f) + 0.3f; + Object_SetInfo(&this->info, this->obj.id); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(sTiBoulderHitbox); } -void Titania_8018A3F4(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { +void Titania_TiBoulder_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { s32 i; for (i = 0; i < ARRAY_COUNT(gActors); i++) { if (gActors[i].obj.status == OBJ_FREE) { - Titania_8018A2E8(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); + Titania_TiBoulder_Setup(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); gActors[i].info.damage = 0; break; } } } -void Titania_8018A474(Actor* actor) { +void Titania_TiBoulder_Spawn2(TiBoulder* this) { s32 i; for (i = 0; i < 4; i++) { - Titania_8018A3F4(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, RAND_FLOAT_CENTERED(40.0f), - RAND_FLOAT_CENTERED(40.0f), RAND_FLOAT(-20.0f)); + Titania_TiBoulder_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, RAND_FLOAT_CENTERED(40.0f), + RAND_FLOAT_CENTERED(40.0f), RAND_FLOAT(-20.0f)); } } -void Titania_Actor230_Update(Actor* actor) { +void Titania_TiBoulder_Update(TiBoulder* this) { f32 temp_fv0; f32 temp_fv1; f32 sp4C; f32 sp48; f32 sp44; - actor->drawShadow = true; + this->drawShadow = true; - if ((actor->scale != 1.0f) && (actor->dmgType == DMG_COLLISION)) { - Object_Kill(&actor->obj, actor->sfxSource); + if ((this->scale != 1.0f) && (this->dmgType == DMG_COLLISION)) { + Object_Kill(&this->obj, this->sfxSource); } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0C6 = 15; - actor->health += actor->damage; - if (actor->scale == 1.0f) { - if (actor->health >= 10) { - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_OB_EXPLOSION_S); - if ((Actor*) actor->iwork[0] != NULL) { - ((Actor*) actor->iwork[0])->iwork[actor->iwork[1]] = 0; + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0C6 = 15; + this->health += this->damage; + if (this->scale == 1.0f) { + if (this->health >= 10) { + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_EXPLOSION_S); + if ((Actor*) this->iwork[0] != NULL) { + ((Actor*) this->iwork[0])->iwork[this->iwork[1]] = 0; } - func_effect_8007A900(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 8.0f, 255, 8, 1); + Effect_Effect359_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f, 255, 8, 1); if (Rand_ZeroOne() < 0.3f) { - actor->itemDrop = DROP_SILVER_RING; + this->itemDrop = DROP_SILVER_RING; } else { - Titania_8018A474(actor); - actor->itemDrop = DROP_NONE; + Titania_TiBoulder_Spawn2(this); + this->itemDrop = DROP_NONE; } - Actor_Despawn(actor); - actor->info.bonus = 0; + Actor_Despawn(this); + this->info.bonus = 0; } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } else { - func_effect_8007A900(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 8.0f, 255, 8, 1); - Object_Kill(&actor->obj, actor->sfxSource); + Effect_Effect359_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f, 255, 8, 1); + Object_Kill(&this->obj, this->sfxSource); - if ((Actor*) actor->iwork[0] != NULL) { - ((Actor*) actor->iwork[0])->iwork[actor->iwork[1]] = 0; + if ((Actor*) this->iwork[0] != NULL) { + ((Actor*) this->iwork[0])->iwork[this->iwork[1]] = 0; } } } - if (actor->unk_046 == 2) { - actor->gravity = 0.0f; - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp4C, &sp44, &sp48); - actor->fwork[0] = sp4C; - actor->fwork[1] = sp44; - actor->fwork[2] = sp48; + if (this->unk_046 == 2) { + this->gravity = 0.0f; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp4C, &sp44, &sp48); + this->fwork[0] = sp4C; + this->fwork[1] = sp44; + this->fwork[2] = sp48; return; } - actor->gravity = 3.0f; - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp4C, &sp44, &sp48); - actor->fwork[0] = sp4C; - actor->fwork[1] = sp44; - actor->fwork[2] = sp48; - temp_fv1 = (actor->scale * 50.0f); + this->gravity = 3.0f; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp4C, &sp44, &sp48); + this->fwork[0] = sp4C; + this->fwork[1] = sp44; + this->fwork[2] = sp48; + temp_fv1 = (this->scale * 50.0f); - if (actor->obj.pos.y > sp44 + temp_fv1) { - actor->unk_046 = 0; + if (this->obj.pos.y > sp44 + temp_fv1) { + this->unk_046 = 0; } else { - actor->obj.pos.y = sp44 + temp_fv1; - if (actor->unk_046 == 0) { - if (actor->vel.y < -6.0f) { - AUDIO_PLAY_SFX(NA_SE_OB_BOUND_M, actor->sfxSource, 4); + this->obj.pos.y = sp44 + temp_fv1; + if (this->unk_046 == 0) { + if (this->vel.y < -6.0f) { + AUDIO_PLAY_SFX(NA_SE_OB_BOUND_M, this->sfxSource, 4); } - if (actor->vel.y < 0.0f) { - actor->vel.y = -actor->vel.y * 0.2f; + if (this->vel.y < 0.0f) { + this->vel.y = -this->vel.y * 0.2f; } - actor->vel.x -= (10.0f * sp48) / (M_DTOR * 90); - actor->vel.z += (10.0f * sp4C) / (M_DTOR * 90); - if (actor->vel.y < 10.0f) { - actor->vel.y = 0.0f; + this->vel.x -= (10.0f * sp48) / (M_DTOR * 90); + this->vel.z += (10.0f * sp4C) / (M_DTOR * 90); + if (this->vel.y < 10.0f) { + this->vel.y = 0.0f; } - actor->unk_046 = 1; + this->unk_046 = 1; } else { if ((s32) sp48 == 0) { - actor->vel.x *= 0.9; + this->vel.x *= 0.9; } if ((s32) sp4C == 0) { - actor->vel.z *= 0.9; + this->vel.z *= 0.9; } - actor->vel.y = 0.0f; + this->vel.y = 0.0f; } - actor->vel.x -= (3.0f * sp48) / (M_DTOR * 90); - actor->vel.z += (3.0f * sp4C) / (M_DTOR * 90); + this->vel.x -= (3.0f * sp48) / (M_DTOR * 90); + this->vel.z += (3.0f * sp4C) / (M_DTOR * 90); } - temp_fv1 = actor->scale * 314.0f; + temp_fv1 = this->scale * 314.0f; - if (actor->vel.x != 0.0f) { - actor->obj.rot.x += ((sqrtf(SQ(actor->vel.x) + SQ(actor->vel.z)) * 360.0f) / temp_fv1) * SIGN_OF(actor->vel.x); + if (this->vel.x != 0.0f) { + this->obj.rot.x += ((sqrtf(SQ(this->vel.x) + SQ(this->vel.z)) * 360.0f) / temp_fv1) * SIGN_OF(this->vel.x); } else { - actor->obj.rot.x += ((sqrtf(SQ(actor->vel.x) + SQ(actor->vel.z)) * 360.0f) / temp_fv1) * SIGN_OF(actor->vel.z); + this->obj.rot.x += ((sqrtf(SQ(this->vel.x) + SQ(this->vel.z)) * 360.0f) / temp_fv1) * SIGN_OF(this->vel.z); } - actor->obj.rot.y = Math_RadToDeg(Math_Atan2F(actor->vel.x, actor->vel.z)); + this->obj.rot.y = Math_RadToDeg(Math_Atan2F(this->vel.x, this->vel.z)); - if (actor->obj.rot.y >= 180.0f) { - actor->obj.rot.y -= 180.0f; + if (this->obj.rot.y >= 180.0f) { + this->obj.rot.y -= 180.0f; } - if (actor->obj.rot.y < 0) { - actor->obj.rot.y += 180.0f; + if (this->obj.rot.y < 0) { + this->obj.rot.y += 180.0f; } } -void Titania_Actor230_Draw(Actor* actor) { - if (actor->scale != 1.0f) { - Matrix_Scale(gGfxMatrix, actor->scale, actor->scale, actor->scale, MTXF_APPLY); +void Titania_TiBoulder_Draw(TiBoulder* this) { + if (this->scale != 1.0f) { + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); } gSPDisplayList(gMasterDisp++, D_TI1_700E3F0); } -void Titania_Actor225_Update(Actor* actor) { +void Titania_TiLandmine_Update(TiLandmine* this) { f32 sp3C; f32 sp38; f32 sp34; - switch (actor->state) { + switch (this->state) { case 0: - actor->gravity = 1.0f; - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp3C, &sp34, &sp38); - if (actor->obj.pos.y <= (sp34 + 3.0f)) { - AUDIO_PLAY_SFX(NA_SE_OB_SAND_BOUND_S, actor->sfxSource, 4); - actor->obj.pos.y = sp34 + 3.0f; - actor->obj.rot.x = sp3C * (M_RTOD); - actor->obj.rot.z = sp38 * (M_RTOD); - actor->vel.y = 0.0f; - actor->gravity = 0.0f; - actor->state++; + this->gravity = 1.0f; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp3C, &sp34, &sp38); + if (this->obj.pos.y <= (sp34 + 3.0f)) { + AUDIO_PLAY_SFX(NA_SE_OB_SAND_BOUND_S, this->sfxSource, 4); + this->obj.pos.y = sp34 + 3.0f; + this->obj.rot.x = sp3C * (M_RTOD); + this->obj.rot.z = sp38 * (M_RTOD); + this->vel.y = 0.0f; + this->gravity = 0.0f; + this->state++; } break; @@ -624,41 +625,41 @@ void Titania_Actor225_Update(Actor* actor) { break; } - switch (actor->dmgType) { + switch (this->dmgType) { case 1: - AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_REFLECT, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_MABOSS_REFLECT, this->sfxSource, 4); break; case 2: - actor->itemDrop = DROP_NONE; - Actor_Despawn(actor); - actor->info.bonus = 0; - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y + 10.0f, actor->obj.pos.z, 6.0f); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_M); - Object_Kill(&actor->obj, actor->sfxSource); + this->itemDrop = DROP_NONE; + Actor_Despawn(this); + this->info.bonus = 0; + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y + 10.0f, this->obj.pos.z, 6.0f); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); + Object_Kill(&this->obj, this->sfxSource); break; case 3: - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_M); - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y + 50.0f, actor->obj.pos.z, (10.0f / 3.0f)); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y + 50.0f, this->obj.pos.z, (10.0f / 3.0f)); gPlayer[0].vel.y = 20.0f; gPlayer[0].pos.y += 15.0f; gPlayer[0].rollState = 1; gPlayer[0].rollTimer = 15; gPlayer[0].rollRate = 20; - if (actor->obj.pos.x < gPlayer[0].pos.x) { + if (this->obj.pos.x < gPlayer[0].pos.x) { gPlayer[0].rollRate = -20; } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); break; } - actor->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } static Vec3f D_i5_801B75AC = { -70.0f, 50.0f, 212.0f }; static Vec3f D_i5_801B75B8 = { 70.0f, 50.0f, 212.0f }; -void Titania_8018ADC4(Actor* actor) { +void Titania_TiRasco_Init(TiRasco* this) { Vec3f sp68[2]; s32 i; s32 k; @@ -666,58 +667,59 @@ void Titania_8018ADC4(Actor* actor) { f32 sp58; f32 sp54; - actor->fwork[0] = actor->obj.rot.z; - actor->fwork[1] = actor->obj.rot.x; + this->fwork[0] = this->obj.rot.z; + this->fwork[1] = this->obj.rot.x; - actor->obj.rot.z = 0.0f; - actor->obj.rot.x = 0.0f; + this->obj.rot.z = 0.0f; + this->obj.rot.x = 0.0f; - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp54, &sp58, &sp54); + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp54, &sp58, &sp54); - actor->obj.pos.y = sp58; + this->obj.pos.y = sp58; - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_MultVec3fNoTranslate(gCalcMatrix, &D_i5_801B75AC, &sp68[0]); Matrix_MultVec3fNoTranslate(gCalcMatrix, &D_i5_801B75B8, &sp68[1]); k = 0; - actorPtr = gActors; - for (i = 0; i < ARRAY_COUNT(gActors); i++, actorPtr++) { + for (actorPtr = &gActors[0], i = 0; i < ARRAY_COUNT(gActors); i++, actorPtr++) { if (actorPtr->obj.status == OBJ_FREE) { Actor_Initialize(actorPtr); actorPtr->obj.status = OBJ_INIT; - actorPtr->obj.id = OBJ_ACTOR_230; - actorPtr->obj.pos.x = actor->obj.pos.x + sp68[k].x; - actorPtr->obj.pos.y = actor->obj.pos.y + sp68[k].y; - actorPtr->obj.pos.z = actor->obj.pos.z + sp68[k].z; + actorPtr->obj.id = OBJ_ACTOR_TI_BOULDER; + actorPtr->obj.pos.x = this->obj.pos.x + sp68[k].x; + actorPtr->obj.pos.y = this->obj.pos.y + sp68[k].y; + actorPtr->obj.pos.z = this->obj.pos.z + sp68[k].z; actorPtr->unk_046 = 2; - actorPtr->iwork[0] = (uintptr_t) actor; + actorPtr->iwork[0] = (uintptr_t) this; actorPtr->iwork[1] = k; Object_SetInfo(&actorPtr->info, actorPtr->obj.id); - actor->iwork[k] = (uintptr_t) actorPtr; + this->iwork[k] = (uintptr_t) actorPtr; k++; if (k >= 2) { break; } } } - actor->health = 40; + + this->health = 40; + if (k < 2) { for (i = 0; i < k; i++) { - Object_Kill(&gActors[actor->iwork[k]].obj, gActors[actor->iwork[k]].sfxSource); + Object_Kill(&gActors[this->iwork[k]].obj, gActors[this->iwork[k]].sfxSource); } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } } -bool Titania_8018AFD4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Titania_8018AFD4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { *dList = NULL; return false; } -bool Titania_8018AFF0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Titania_TiRasco_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { if ((limbIndex == 2) || (limbIndex == 3) || (limbIndex == 4)) { Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); @@ -736,15 +738,15 @@ bool Titania_8018AFF0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* static Vec3f D_i5_801B75C4 = { 110.0f, 0.0f, 0.0f }; -void Titania_8018B144(s32 limbIndex, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +void Titania_TiRasco_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + TiRasco* this = (TiRasco*) thisx; switch (limbIndex) { case 2: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B75C4, (Vec3f*) &actor->fwork[3]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B75C4, (Vec3f*) &this->fwork[3]); break; case 4: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B75C4, (Vec3f*) &actor->fwork[6]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B75C4, (Vec3f*) &this->fwork[6]); break; } } @@ -753,7 +755,7 @@ static s16 D_i5_801B75D0[] = { 1, 2, 3, 4, 5, 6, 7, 10, 12, 13, }; -void Titania_8018B1B4(s32 limbIndex, Vec3f* rot, void* data) { +void Titania_8018B1B4(s32 limbIndex, Vec3f* rot, void* thisx) { s32 i; PosRot* var_a2; @@ -768,43 +770,43 @@ void Titania_8018B1B4(s32 limbIndex, Vec3f* rot, void* data) { } } -void Titania_Actor232_Update(Actor* actor) { +void Titania_TiRasco_Update(Actor* this) { Vec3f src; Vec3f dest; - Actor* sp3C = actor->iwork[0]; - Actor* sp38 = actor->iwork[1]; + Actor* sp3C = this->iwork[0]; + Actor* sp38 = this->iwork[1]; - if (actor->dmgType > DMG_NONE) { - actor->dmgType = DMG_NONE; - if (actor->health > 0) { - actor->health -= actor->damage; - if (actor->health <= 0) { - actor->health = actor->itemDrop = 0; - Actor_Despawn(actor); - actor->info.bonus = 0; + if (this->dmgType > DMG_NONE) { + this->dmgType = DMG_NONE; + if (this->health > 0) { + this->health -= this->damage; + if (this->health <= 0) { + this->health = this->itemDrop = 0; + Actor_Despawn(this); + this->info.bonus = 0; } } - actor->timer_0C6 = 10; + this->timer_0C6 = 10; } - switch (actor->state) { + switch (this->state) { case 0: - if ((gPlayer[0].pos.z - actor->obj.pos.z) < actor->fwork[0]) { - actor->state++; + if ((gPlayer[0].pos.z - this->obj.pos.z) < this->fwork[0]) { + this->state++; } break; case 1: - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - if ((actor->animFrame >= 26) && (actor->animFrame <= 53) && (sp3C != NULL)) { - if (actor->animFrame == 26) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + if ((this->animFrame >= 26) && (this->animFrame <= 53) && (sp3C != NULL)) { + if (this->animFrame == 26) { sp3C->unk_046 = 2; sp3C->vel.x = 0.0f; sp3C->vel.y = 0.0f; sp3C->vel.z = 0.0f; - } else if (actor->animFrame == 53) { + } else if (this->animFrame == 53) { src.x = 0.0f; - src.y = actor->fwork[1]; + src.y = this->fwork[1]; src.z = 20.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); sp3C->vel.x = dest.x; @@ -812,27 +814,27 @@ void Titania_Actor232_Update(Actor* actor) { sp3C->vel.z = dest.z; sp3C->unk_046 = 0; sp3C->iwork[0] = (uintptr_t) NULL; - actor->iwork[0] = (uintptr_t) NULL; + this->iwork[0] = (uintptr_t) NULL; } - src.x = actor->fwork[3]; - src.y = actor->fwork[4] + 50.0f; - src.z = actor->fwork[5]; + src.x = this->fwork[3]; + src.y = this->fwork[4] + 50.0f; + src.z = this->fwork[5]; Matrix_MultVec3f(gCalcMatrix, &src, &dest); - sp3C->obj.pos.x = actor->obj.pos.x + dest.x; - sp3C->obj.pos.y = actor->obj.pos.y + dest.y; - sp3C->obj.pos.z = actor->obj.pos.z + dest.z; + sp3C->obj.pos.x = this->obj.pos.x + dest.x; + sp3C->obj.pos.y = this->obj.pos.y + dest.y; + sp3C->obj.pos.z = this->obj.pos.z + dest.z; } - if ((actor->animFrame >= 26) && (actor->animFrame <= 57) && (sp38 != NULL)) { - if (actor->animFrame == 26) { + if ((this->animFrame >= 26) && (this->animFrame <= 57) && (sp38 != NULL)) { + if (this->animFrame == 26) { sp38->unk_046 = 2; sp38->vel.x = 0.0f; sp38->vel.y = 0.0f; sp38->vel.z = 0.0f; - } else if (actor->animFrame == 57) { - AUDIO_PLAY_SFX(NA_SE_EN_THROW_S, actor->sfxSource, 4); + } else if (this->animFrame == 57) { + AUDIO_PLAY_SFX(NA_SE_EN_THROW_S, this->sfxSource, 4); src.x = 0.0f; - src.y = actor->fwork[1]; + src.y = this->fwork[1]; src.z = 20.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); sp38->vel.x = dest.x; @@ -840,19 +842,19 @@ void Titania_Actor232_Update(Actor* actor) { sp38->vel.z = dest.z; sp38->unk_046 = 0; sp38->iwork[0] = (uintptr_t) NULL; - actor->iwork[1] = (uintptr_t) NULL; + this->iwork[1] = (uintptr_t) NULL; } - src.x = actor->fwork[6]; - src.y = actor->fwork[7] + 50.0f; - src.z = actor->fwork[8]; + src.x = this->fwork[6]; + src.y = this->fwork[7] + 50.0f; + src.z = this->fwork[8]; Matrix_MultVec3f(gCalcMatrix, &src, &dest); - sp38->obj.pos.x = actor->obj.pos.x + dest.x; - sp38->obj.pos.y = actor->obj.pos.y + dest.y; - sp38->obj.pos.z = actor->obj.pos.z + dest.z; + sp38->obj.pos.x = this->obj.pos.x + dest.x; + sp38->obj.pos.y = this->obj.pos.y + dest.y; + sp38->obj.pos.z = this->obj.pos.z + dest.z; } - if (++actor->animFrame >= Animation_GetFrameCount(&D_TI1_700D534)) { - actor->state++; + if (++this->animFrame >= Animation_GetFrameCount(&D_TI1_700D534)) { + this->state++; } break; @@ -860,29 +862,30 @@ void Titania_Actor232_Update(Actor* actor) { break; } - if (actor->health == 0) { - actor->obj.status = OBJ_DYING; - Animation_GetFrameData(&D_TI1_700D534, actor->animFrame, actor->vwork); - Animation_DrawSkeleton(0, D_TI1_700D700, actor->vwork, Titania_8018AFD4, Titania_8018B1B4, actor, + if (this->health == 0) { + this->obj.status = OBJ_DYING; + Animation_GetFrameData(&D_TI1_700D534, this->animFrame, this->vwork); + Animation_DrawSkeleton(0, aTiRascoSkel, this->vwork, Titania_8018AFD4, Titania_8018B1B4, this, &gIdentityMatrix); - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - actor->lockOnTimers[TEAM_ID_FOX] = 0; - actor->info.targetOffset = 0.0f; + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + this->lockOnTimers[TEAM_ID_FOX] = 0; + this->info.targetOffset = 0.0f; } } -void Titania_Actor232_Draw(Actor* actor) { - Animation_GetFrameData(&D_TI1_700D534, actor->animFrame, actor->vwork); - Animation_DrawSkeleton(0, D_TI1_700D700, actor->vwork, Titania_8018AFF0, Titania_8018B144, actor, &gIdentityMatrix); +void Titania_TiRasco_Draw(TiRasco* this) { + Animation_GetFrameData(&D_TI1_700D534, this->animFrame, this->vwork); + Animation_DrawSkeleton(0, aTiRascoSkel, this->vwork, Titania_TiRasco_OverrideLimbDraw, Titania_TiRasco_PostLimbDraw, + this, &gIdentityMatrix); } -void Titania_8018B720(Actor* actor) { +void Titania_TiRasco_Dying(TiRasco* this) { PosRot* var_s1; Actor* actorPtr; s32 i; Vec3f sp70; - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); var_s1 = SEGMENTED_TO_VIRTUAL(D_i5_801BDA30); @@ -893,12 +896,12 @@ void Titania_8018B720(Actor* actor) { actorPtr->state = 46; actorPtr->unk_048 = i; Matrix_MultVec3f(gCalcMatrix, &var_s1->pos, &sp70); - actorPtr->obj.pos.x = actor->obj.pos.x + sp70.x; - actorPtr->obj.pos.y = actor->obj.pos.y + sp70.y; - actorPtr->obj.pos.z = actor->obj.pos.z + sp70.z; - actorPtr->obj.rot.x = actor->obj.rot.x + var_s1->rot.x; - actorPtr->obj.rot.y = actor->obj.rot.y + var_s1->rot.y; - actorPtr->obj.rot.z = actor->obj.rot.z + var_s1->rot.z; + actorPtr->obj.pos.x = this->obj.pos.x + sp70.x; + actorPtr->obj.pos.y = this->obj.pos.y + sp70.y; + actorPtr->obj.pos.z = this->obj.pos.z + sp70.z; + actorPtr->obj.rot.x = this->obj.rot.x + var_s1->rot.x; + actorPtr->obj.rot.y = this->obj.rot.y + var_s1->rot.y; + actorPtr->obj.rot.z = this->obj.rot.z + var_s1->rot.z; actorPtr->gravity = 1.0f; actorPtr->vel.x = sp70.x * 0.05f; actorPtr->vel.y = 20.0f; @@ -909,31 +912,31 @@ void Titania_8018B720(Actor* actor) { } } - actorPtr = actor->iwork[0]; + actorPtr = (Actor*) this->iwork[0]; if (actorPtr != NULL) { actorPtr->iwork[0] = (uintptr_t) NULL; - actor->iwork[0] = (uintptr_t) NULL; + this->iwork[0] = (uintptr_t) NULL; actorPtr->unk_046 = 0; } - actorPtr = actor->iwork[1]; + actorPtr = (Actor*) this->iwork[1]; if (actorPtr != NULL) { actorPtr->unk_046 = 0; actorPtr->iwork[0] = (uintptr_t) NULL; - actor->iwork[1] = (uintptr_t) NULL; + this->iwork[1] = (uintptr_t) NULL; } - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } -void Titania_Actor231_Init(Actor* actor) { +void Titania_TiBomb_Init(TiBomb* this) { f32 sp24; - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp24, &actor->obj.pos.y, &sp24); - actor->obj.rot.x = actor->obj.rot.y = actor->obj.rot.z = 0.0f; - actor->obj.pos.y -= 20.0f; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp24, &this->obj.pos.y, &sp24); + this->obj.rot.x = this->obj.rot.y = this->obj.rot.z = 0.0f; + this->obj.pos.y -= 20.0f; } -void Titania_Actor231_Update(Actor* actor) { +void Titania_TiBomb_Update(TiBomb* this) { f32 var_fa0; f32 sp50; f32 sp4C; @@ -943,94 +946,96 @@ void Titania_Actor231_Update(Actor* actor) { f32 sp3C; f32 temp_fa1; - actor->drawShadow = true; + this->drawShadow = true; - switch (actor->state) { + switch (this->state) { case 0: - sp44 = gPlayer[0].pos.x - actor->obj.pos.x; - sp40 = gPlayer[0].pos.y - actor->obj.pos.y; - sp3C = gPlayer[0].pos.z - actor->obj.pos.z; + sp44 = gPlayer[0].pos.x - this->obj.pos.x; + sp40 = gPlayer[0].pos.y - this->obj.pos.y; + sp3C = gPlayer[0].pos.z - this->obj.pos.z; - if (actor->timer_0BE == 7) { - actor->iwork[0] = 2; - AUDIO_PLAY_SFX(NA_SE_OB_BOMB_ALARM_LAST, actor->sfxSource, 0); + if (this->timer_0BE == 7) { + this->iwork[0] = 2; + AUDIO_PLAY_SFX(NA_SE_OB_BOMB_ALARM_LAST, this->sfxSource, 0); } - if (actor->timer_0BE == 0) { + if (this->timer_0BE == 0) { temp_fa1 = SQ(sp44) + SQ(sp40) + SQ(sp3C); if (temp_fa1 < SQ(166.25f)) { - actor->timer_0BE = 8; + this->timer_0BE = 8; } else if (temp_fa1 < SQ(600.0f)) { - actor->timer_0BE = 0; - if (actor->timer_0BC == 0) { - AUDIO_PLAY_SFX(NA_SE_OB_BOMB_ALARM, actor->sfxSource, 4); - actor->iwork[0] = 1 - actor->iwork[0]; - actor->timer_0BC = 5; + this->timer_0BE = 0; + if (this->timer_0BC == 0) { + AUDIO_PLAY_SFX(NA_SE_OB_BOMB_ALARM, this->sfxSource, 4); + this->iwork[0] = 1 - this->iwork[0]; + this->timer_0BC = 5; } } else { - actor->iwork[0] = 0; + this->iwork[0] = 0; } } - if (actor->timer_0BE == 1) { - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - Object_Kill(&actor->obj, actor->sfxSource); + if (this->timer_0BE == 1) { + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + Object_Kill(&this->obj, this->sfxSource); Player_ApplyDamage(gPlayer, 0, 60); + gPlayer[0].vel.y = 20.0f; gPlayer[0].pos.y += 15.0f; gPlayer[0].rollState = 1; gPlayer[0].rollTimer = 15; gPlayer[0].rollRate = 20; - if (actor->obj.pos.x < gPlayer[0].pos.x) { + + if (this->obj.pos.x < gPlayer[0].pos.x) { gPlayer[0].rollRate = -20; } } break; case 1: - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp4C, &sp50, &sp48); - actor->fwork[0] = sp50; - actor->fwork[1] = sp4C; - actor->fwork[2] = sp48; - if (actor->vel.y <= 0.0f) { - actor->itemDrop = DROP_NONE; - Actor_Despawn(actor); - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_M); - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - Object_Kill(&actor->obj, actor->sfxSource); + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp4C, &sp50, &sp48); + this->fwork[0] = sp50; + this->fwork[1] = sp4C; + this->fwork[2] = sp48; + if (this->vel.y <= 0.0f) { + this->itemDrop = DROP_NONE; + Actor_Despawn(this); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + Object_Kill(&this->obj, this->sfxSource); } break; } - if (fabsf(actor->vel.x) > 130.0f) { - var_fa0 = SIGN_OF(actor->vel.x) * 130.0f; + if (fabsf(this->vel.x) > 130.0f) { + var_fa0 = SIGN_OF(this->vel.x) * 130.0f; } else { - var_fa0 = actor->vel.x; + var_fa0 = this->vel.x; } - actor->obj.rot.z = (-var_fa0 / 130.0f) * 90.0f; + this->obj.rot.z = (-var_fa0 / 130.0f) * 90.0f; - if (fabsf(actor->vel.z) > 130.0f) { - var_fa0 = SIGN_OF(actor->vel.z) * 130.0f; + if (fabsf(this->vel.z) > 130.0f) { + var_fa0 = SIGN_OF(this->vel.z) * 130.0f; } else { - var_fa0 = actor->vel.z; + var_fa0 = this->vel.z; } - actor->obj.rot.x = (var_fa0 / 130.0f) * 90.0f; + this->obj.rot.x = (var_fa0 / 130.0f) * 90.0f; - if (actor->dmgType == DMG_BEAM) { - AUDIO_PLAY_SFX(NA_SE_METALBOMB_REFLECT, actor->sfxSource, 4); - sp44 = actor->obj.pos.x - actor->hitPos.x; + if (this->dmgType == DMG_BEAM) { + AUDIO_PLAY_SFX(NA_SE_METALBOMB_REFLECT, this->sfxSource, 4); + sp44 = this->obj.pos.x - this->hitPos.x; sp40 = fabsf(sp44); - actor->dmgType = DMG_NONE; - actor->state = 1; - actor->timer_0BC = 0; - actor->timer_0BE = 0; - actor->iwork[0] = 0; - actor->vel.x += sp44 * 0.5f * 0.8f; - actor->vel.z -= (80.0f - sp40) * 0.8f; - actor->vel.y += 34.0f; - actor->gravity = 2.0f; + this->dmgType = DMG_NONE; + this->state = 1; + this->timer_0BC = 0; + this->timer_0BE = 0; + this->iwork[0] = 0; + this->vel.x += sp44 * 0.5f * 0.8f; + this->vel.z -= (80.0f - sp40) * 0.8f; + this->vel.y += 34.0f; + this->gravity = 2.0f; } } @@ -1045,7 +1050,7 @@ Gfx* D_TI_801B7608[10] = { D_TI1_7003A90, D_TI1_7005420, D_TI1_7003FC0, D_TI1_7002930, D_TI1_7002490, }; -void Titania_Actor231_Draw(Actor* actor) { +void Titania_TiBomb_Draw(TiBomb* this) { s32 index; RCP_SetupDL(&gMasterDisp, SETUPDL_30); @@ -1054,35 +1059,35 @@ void Titania_Actor231_Draw(Actor* actor) { Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_TI1_7009D60); RCP_SetupDL(&gMasterDisp, SETUPDL_34); - index = actor->iwork[0]; + index = this->iwork[0]; gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, D_i5_801B75E4[0][index], D_i5_801B75E4[1][index], D_i5_801B75E4[2][index], 255); - gSPDisplayList(gMasterDisp++, D_TI1_700A990); + gSPDisplayList(gMasterDisp++, aTi1BombDL); } -void Titania_8018BFB0(Actor* actor) { +void Titania_TiDesertCrawler_Init(TiDesertCrawler* this) { UnkStruct_i5_801BD738* temp_a1; - s32 temp_a2; + s32 index; s32 i; for (i = 0; i < 3; i++) { if (!D_i5_801B750C[i]) { D_i5_801B750C[i] = true; - actor->iwork[0] = i; + this->iwork[0] = i; break; } } if (i == 3) { - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); return; } - temp_a2 = actor->iwork[0]; - actor->info.hitbox = D_i5_801BDB20[temp_a2]; - actor->health = 80; - actor->iwork[8] = 1; - temp_a1 = D_i5_801BD738[temp_a2]; + index = this->iwork[0]; + this->info.hitbox = D_i5_801BDB20[index]; + this->health = 80; + this->iwork[8] = 1; + temp_a1 = D_i5_801BD738[index]; for (i = 0; i < 9; i++) { temp_a1[i].unk_00.pos.x = temp_a1[i].unk_00.pos.y = temp_a1[i].unk_00.pos.z = temp_a1[i].unk_00.rot.x = @@ -1091,7 +1096,7 @@ void Titania_8018BFB0(Actor* actor) { } } -bool Titania_8018C118(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Titania_8018C118(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { *dList = NULL; return false; } @@ -1100,13 +1105,13 @@ static s16 D_i5_801B7630[9][2] = { { 1, 0 }, { 2, 1 }, { 3, 0 }, { 4, 1 }, { 5, 1 }, { 6, 0 }, { 7, 1 }, { 8, 0 }, { 13, 1 }, }; -bool Titania_8018C134(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool Titania_TiDesertCrawler_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + TiDesertCrawler* this = (TiDesertCrawler*) thisx; s32 sp58; s32 i; s32 sp50; - sp50 = actor->iwork[0]; + sp50 = this->iwork[0]; sp58 = false; for (i = 0; i < 9; i++) { @@ -1119,7 +1124,8 @@ bool Titania_8018C134(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); Matrix_Mult(gGfxMatrix, gCalcMatrix, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); - if ((limbIndex == 13) && (actor->iwork[5] & 2) && (actor->iwork[6] == 0)) { + + if ((limbIndex == 13) && (this->iwork[5] & 2) && (this->iwork[6] == 0)) { RCP_SetupDL(&gMasterDisp, SETUPDL_30); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); gSPDisplayList(gMasterDisp++, *dList); @@ -1136,10 +1142,10 @@ bool Titania_8018C134(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return sp58; } -void Titania_8018C370(s32 limbIndex, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +void Titania_TiDesertCrawler_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { + TiDesertCrawler* this = (TiDesertCrawler*) thisx; - if ((limbIndex == 13) && !(D_i5_801BD738[actor->iwork[0]][8].unk_18 & 1)) { + if ((limbIndex == 13) && !(D_i5_801BD738[this->iwork[0]][8].unk_18 & 1)) { gSPDisplayList(gMasterDisp++, D_TI1_7002490); } } @@ -1147,7 +1153,7 @@ void Titania_8018C370(s32 limbIndex, Vec3f* rot, void* data) { static Vec3f D_i5_801B7654 = { 387.0f, 0.0f, 0.0f }; static Vec3f D_i5_801B7660 = { 199.5f, 0.0f, 0.0f }; -void Titania_8018C3D8(s32 limbIndex, Vec3f* rot, void* data) { +void Titania_8018C3D8(s32 limbIndex, Vec3f* rot, void* thisx) { s32 i; s32 j; Vec3f sp54; @@ -1157,9 +1163,9 @@ void Titania_8018C3D8(s32 limbIndex, Vec3f* rot, void* data) { f32* var_v0_2; f32* var_s0_2; s32 temp; - Actor* actor = (Actor*) data; + Actor* this = (Actor*) thisx; - var_s0 = D_i5_801BD738[actor->iwork[0]]; + var_s0 = D_i5_801BD738[this->iwork[0]]; var_s0[8].unk_18 |= 2; for (i = 0; i < 9U; i++, var_s0++) { @@ -1171,22 +1177,22 @@ void Titania_8018C3D8(s32 limbIndex, Vec3f* rot, void* data) { } } - actor->fwork[27] = D_i5_801BD738[actor->iwork[0]][8].unk_00.pos.y; + this->fwork[27] = D_i5_801BD738[this->iwork[0]][8].unk_00.pos.y; - switch (actor->iwork[2]) { + switch (this->iwork[2]) { case 0: switch (limbIndex) { case 1: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7660, (Vec3f*) &actor->fwork[12]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7660, (Vec3f*) &this->fwork[12]); break; case 3: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7660, (Vec3f*) &actor->fwork[9]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7660, (Vec3f*) &this->fwork[9]); break; case 5: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7654, (Vec3f*) &actor->fwork[3]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7654, (Vec3f*) &this->fwork[3]); break; case 7: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7654, (Vec3f*) &actor->fwork[6]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7654, (Vec3f*) &this->fwork[6]); break; } break; @@ -1194,24 +1200,24 @@ void Titania_8018C3D8(s32 limbIndex, Vec3f* rot, void* data) { case 1: switch (limbIndex) { case 1: - Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &actor->fwork[12]); + Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &this->fwork[12]); break; case 3: - Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &actor->fwork[9]); + Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &this->fwork[9]); break; case 5: - Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &actor->fwork[3]); + Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &this->fwork[3]); break; case 7: - Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &actor->fwork[6]); + Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, (Vec3f*) &this->fwork[6]); break; } break; } - var_v0_2 = actor->info.hitbox; + var_v0_2 = this->info.hitbox; - if (actor->iwork[8] != 0) { + if (this->iwork[8] != 0) { var_v0_2[0] = 25.0f; var_v0_2++; @@ -1242,28 +1248,29 @@ void Titania_8018C3D8(s32 limbIndex, Vec3f* rot, void* data) { } } -void Titania_8018C72C(Actor* actor) { +void Titania_8018C72C(TiDesertCrawler* this) { s32 i; f32 sp30; - actor->state = 8; - AUDIO_PLAY_SFX(NA_SE_EN_KANI_STOP, actor->sfxSource, 4); + this->state = 8; + AUDIO_PLAY_SFX(NA_SE_EN_KANI_STOP, this->sfxSource, 4); for (i = 0; i < 9; i++) { - D_i5_801BD738[actor->iwork[0]][i].unk_18 |= 2; + D_i5_801BD738[this->iwork[0]][i].unk_18 |= 2; } - sp30 = actor->vwork[0].y; - actor->vwork[0].y += actor->fwork[26]; - Animation_DrawSkeleton(0, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, &gIdentityMatrix); - actor->vwork[0].y = sp30; - actor->iwork[7] = 0; - actor->iwork[8] = 0; + sp30 = this->vwork[0].y; + this->vwork[0].y += this->fwork[26]; + Animation_DrawSkeleton(0, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, + &gIdentityMatrix); + this->vwork[0].y = sp30; + this->iwork[7] = 0; + this->iwork[8] = 0; } static Vec3f D_i5_801B766C = { 0.0f, 0.0f, 15.0f }; -void Titania_Actor229_Update(Actor* actor) { +void Titania_TiDesertCrawler_Update(TiDesertCrawler* this) { s32 i; f32 sp170; f32 temp_fs0; @@ -1281,337 +1288,337 @@ void Titania_Actor229_Update(Actor* actor) { f32 z; s32 pad; - actor->iwork[7]++; - sp88 = gPlayer[0].trueZpos - actor->obj.pos.z; + this->iwork[7]++; + sp88 = gPlayer[0].trueZpos - this->obj.pos.z; - if (actor->iwork[4] > 0) { - actor->iwork[4]--; - } else if ((gPlayer[0].grounded != 0) && (actor->iwork[3] > 0)) { + if (this->iwork[4] > 0) { + this->iwork[4]--; + } else if ((gPlayer[0].grounded != 0) && (this->iwork[3] > 0)) { gControllerRumbleFlags[0] = 1; - actor->iwork[3]--; + this->iwork[3]--; } - if (actor->iwork[5] > 0) { - actor->iwork[5]--; + if (this->iwork[5] > 0) { + this->iwork[5]--; } - if (actor->iwork[6] > 0) { - actor->iwork[6]--; + if (this->iwork[6] > 0) { + this->iwork[6]--; } - if ((actor->health > 0) && (actor->dmgType > DMG_NONE) && (actor->dmgType != DMG_COLLISION) && - (actor->state >= 3)) { - if ((actor->health > 0) && (actor->dmgPart >= 0) && (actor->dmgPart < 3)) { - actor->iwork[5] = 10; - if (actor->state == 4) { - Audio_KillSfxBySourceAndId(actor->sfxSource, NA_SE_EN_KANI_MOTOR); - actor->timer_0BC = 20; - actor->fwork[24] = 1.0f; - actor->fwork[23] = actor->animFrame; + if ((this->health > 0) && (this->dmgType > DMG_NONE) && (this->dmgType != DMG_COLLISION) && (this->state >= 3)) { + if ((this->health > 0) && (this->dmgPart >= 0) && (this->dmgPart < 3)) { + this->iwork[5] = 10; + + if (this->state == 4) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_KANI_MOTOR); + this->timer_0BC = 20; + this->fwork[24] = 1.0f; + this->fwork[23] = this->animFrame; } - actor->health -= actor->damage; - if (actor->health <= 0) { - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->fwork[27] + actor->obj.pos.z, 3); + + this->health -= this->damage; + if (this->health <= 0) { + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->fwork[27] + this->obj.pos.z, 3); gHitCount += 3; - actor->health = actor->itemDrop = 0; - Actor_Despawn(actor); - actor->info.bonus = 0; - actor->timer_0BC = 20; - actor->animFrame = 0; - actor->fwork[15] = 0.0f; + this->health = this->itemDrop = 0; + Actor_Despawn(this); + this->info.bonus = 0; + this->timer_0BC = 20; + this->animFrame = 0; + this->fwork[15] = 0.0f; } else { - AUDIO_PLAY_SFX(NA_SE_EN_SNAKE_DAMAGE, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_SNAKE_DAMAGE, this->sfxSource, 4); } - } else if (actor->dmgType == DMG_BEAM) { - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_REFLECT); + } else if (this->dmgType == DMG_BEAM) { + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_REFLECT); } - actor->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } - switch (actor->state) { + switch (this->state) { case 0: - AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_JUMP, actor->sfxSource, 4); - actor->rot_0F4.y = actor->obj.rot.y; - actor->obj.rot.y = 180.0f; - actor->obj.pos.y += 125.0f; - actor->gravity = 1.0f; - actor->drawShadow = true; - actor->vel.y = 20.0f; - actor->vel.z = -70.0f; - Animation_GetFrameData(&D_TI1_700733C, 0, actor->vwork); - Animation_DrawSkeleton(1, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, + AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_JUMP, this->sfxSource, 4); + this->rot_0F4.y = this->obj.rot.y; + this->obj.rot.y = 180.0f; + this->obj.pos.y += 125.0f; + this->gravity = 1.0f; + this->drawShadow = true; + this->vel.y = 20.0f; + this->vel.z = -70.0f; + Animation_GetFrameData(&D_TI1_700733C, 0, this->vwork); + Animation_DrawSkeleton(1, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, &gIdentityMatrix); - actor->state = 1; + this->state = 1; break; case 1: - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPlayer->zPath, &spA0, &sp9C, &sp98); - actor->fwork[0] = sp9C; - actor->fwork[1] = spA0; - actor->fwork[2] = sp98; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPlayer->zPath, &spA0, &sp9C, &sp98); + this->fwork[0] = sp9C; + this->fwork[1] = spA0; + this->fwork[2] = sp98; Animation_GetFrameData(&D_TI1_700733C, 0, spA4); - Math_SmoothStepToVec3fArray(spA4, actor->vwork, 1, 15, 0.2f, 10.0f, 0.01f); - Animation_DrawSkeleton(1, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, + Math_SmoothStepToVec3fArray(spA4, this->vwork, 1, 15, 0.2f, 10.0f, 0.01f); + Animation_DrawSkeleton(1, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, &gIdentityMatrix); - if (actor->obj.pos.z <= gPlayer[0].pos.z) { - Math_SmoothStepToAngle(&actor->obj.rot.y, actor->rot_0F4.y, 0.2f, 10.0f, 0.01f); + if (this->obj.pos.z <= gPlayer[0].pos.z) { + Math_SmoothStepToAngle(&this->obj.rot.y, this->rot_0F4.y, 0.2f, 10.0f, 0.01f); } - if ((actor->obj.pos.y + actor->fwork[7] + actor->fwork[26]) <= sp9C) { - AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_BOUND, actor->sfxSource, 4); - actor->fwork[16] = actor->obj.pos.y = sp9C; - actor->rot_0F4.x = spA0 * M_RTOD; - actor->rot_0F4.z = sp98 * M_RTOD; - actor->gravity = 0.0f; - actor->vel.x = actor->vel.y = actor->vel.z = 0.0f; - actor->timer_0BC = 10; - x = actor->obj.pos.x + actor->fwork[6]; - y = actor->obj.pos.y + actor->fwork[7] + actor->fwork[26]; - z = actor->obj.pos.z + actor->fwork[8]; - func_effect_8007A900(x, y, z, 20.0f, 255, 8, 0); - x = actor->obj.pos.x + actor->fwork[3]; - y = actor->obj.pos.y + actor->fwork[4] + actor->fwork[26]; - z = actor->obj.pos.z + actor->fwork[5]; - func_effect_8007A900(x, y, z, 20.0f, 255, 8, 0); + if ((this->obj.pos.y + this->fwork[7] + this->fwork[26]) <= sp9C) { + AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_BOUND, this->sfxSource, 4); + this->fwork[16] = this->obj.pos.y = sp9C; + this->rot_0F4.x = spA0 * M_RTOD; + this->rot_0F4.z = sp98 * M_RTOD; + this->gravity = 0.0f; + this->vel.x = this->vel.y = this->vel.z = 0.0f; + this->timer_0BC = 10; + x = this->obj.pos.x + this->fwork[6]; + y = this->obj.pos.y + this->fwork[7] + this->fwork[26]; + z = this->obj.pos.z + this->fwork[8]; + Effect_Effect359_Spawn(x, y, z, 20.0f, 255, 8, 0); + x = this->obj.pos.x + this->fwork[3]; + y = this->obj.pos.y + this->fwork[4] + this->fwork[26]; + z = this->obj.pos.z + this->fwork[5]; + Effect_Effect359_Spawn(x, y, z, 20.0f, 255, 8, 0); sp88 = fabsf(sp88); if (sp88 < 5000.0f) { - actor->iwork[4] = (s32) (sp88 / 200.0f); - actor->iwork[3] = (s32) ((5000.0f - sp88) / 714.0f); + this->iwork[4] = (s32) (sp88 / 200.0f); + this->iwork[3] = (s32) ((5000.0f - sp88) / 714.0f); } - actor->state = 2; + this->state = 2; } - actor->fwork[15] = 0.0f; - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_NEW); - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[12], &sp8C); - actor->fwork[12] = sp8C.x; - actor->fwork[13] = sp8C.y; - actor->fwork[14] = sp8C.z; - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[9], &sp8C); - actor->fwork[9] = sp8C.x; - actor->fwork[10] = sp8C.y; - actor->fwork[11] = sp8C.z; - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[3], &sp8C); - actor->fwork[3] = sp8C.x; - actor->fwork[4] = sp8C.y; - actor->fwork[5] = sp8C.z; - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[6], &sp8C); - actor->fwork[6] = sp8C.x; - actor->fwork[7] = sp8C.y; - actor->fwork[8] = sp8C.z; + this->fwork[15] = 0.0f; + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[12], &sp8C); + this->fwork[12] = sp8C.x; + this->fwork[13] = sp8C.y; + this->fwork[14] = sp8C.z; + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[9], &sp8C); + this->fwork[9] = sp8C.x; + this->fwork[10] = sp8C.y; + this->fwork[11] = sp8C.z; + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[3], &sp8C); + this->fwork[3] = sp8C.x; + this->fwork[4] = sp8C.y; + this->fwork[5] = sp8C.z; + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[6], &sp8C); + this->fwork[6] = sp8C.x; + this->fwork[7] = sp8C.y; + this->fwork[8] = sp8C.z; break; case 2: - Math_SmoothStepToAngle(&actor->obj.rot.x, actor->rot_0F4.x, 0.5f, 5.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, actor->rot_0F4.z, 0.5f, 5.0f, 0.01f); - actor->obj.pos.y = actor->fwork[0] = actor->fwork[16]; - actor->fwork[1] = actor->rot_0F4.x; - actor->fwork[2] = actor->rot_0F4.z; + Math_SmoothStepToAngle(&this->obj.rot.x, this->rot_0F4.x, 0.5f, 5.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, this->rot_0F4.z, 0.5f, 5.0f, 0.01f); + this->obj.pos.y = this->fwork[0] = this->fwork[16]; + this->fwork[1] = this->rot_0F4.x; + this->fwork[2] = this->rot_0F4.z; Animation_GetFrameData(&D_TI1_7007234, 0, spA4); - Math_SmoothStepToVec3fArray(spA4, actor->vwork, 1, 15, 0.5f, 7.0f, 0.1f); - temp_fs0 = actor->vwork[0].y; - actor->vwork[0].y += actor->fwork[26]; - Animation_DrawSkeleton(0, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, + Math_SmoothStepToVec3fArray(spA4, this->vwork, 1, 15, 0.5f, 7.0f, 0.1f); + temp_fs0 = this->vwork[0].y; + this->vwork[0].y += this->fwork[26]; + Animation_DrawSkeleton(0, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, &gIdentityMatrix); - actor->vwork[0].y = temp_fs0; - actor->fwork[15] = 0.0f; - if (actor->timer_0BC == 0) { - actor->timer_0BC = 15; - actor->state++; - AUDIO_PLAY_SFX(NA_SE_EN_KANI_MOTOR, actor->sfxSource, 4); + this->vwork[0].y = temp_fs0; + this->fwork[15] = 0.0f; + if (this->timer_0BC == 0) { + this->timer_0BC = 15; + this->state++; + AUDIO_PLAY_SFX(NA_SE_EN_KANI_MOTOR, this->sfxSource, 4); } - Math_SmoothStepToF(&actor->fwork[26], -60.0f, actor->fwork[15], 500.0f, 0.01f); + Math_SmoothStepToF(&this->fwork[26], -60.0f, this->fwork[15], 500.0f, 0.01f); break; case 3: - if (actor->timer_0BC == 0) { - actor->state = 4; + if (this->timer_0BC == 0) { + this->state = 4; } - Animation_GetFrameData(&D_TI1_70067C4, actor->animFrame, spA4); - Math_SmoothStepToVec3fArray(spA4, actor->vwork, 1, 15, 0.1f, 3.0f, 0.01f); - temp_fs0 = actor->vwork[0].y; - actor->vwork[0].y += actor->fwork[26]; - Animation_DrawSkeleton(0, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, + Animation_GetFrameData(&D_TI1_70067C4, this->animFrame, spA4); + Math_SmoothStepToVec3fArray(spA4, this->vwork, 1, 15, 0.1f, 3.0f, 0.01f); + temp_fs0 = this->vwork[0].y; + this->vwork[0].y += this->fwork[26]; + Animation_DrawSkeleton(0, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, &gIdentityMatrix); - actor->vwork[0].y = temp_fs0; - actor->fwork[15] = 0.0f; - Math_SmoothStepToF(&actor->fwork[26], -60.0f, 0.0f, 500.0f, 0.01f); - if (actor->health <= 0) { - actor->state = 5; - actor->animFrame = 0; - actor->timer_0BC = 30; - actor->iwork[6] = 30; - actor->fwork[15] = 0.0f; + this->vwork[0].y = temp_fs0; + this->fwork[15] = 0.0f; + Math_SmoothStepToF(&this->fwork[26], -60.0f, 0.0f, 500.0f, 0.01f); + if (this->health <= 0) { + this->state = 5; + this->animFrame = 0; + this->timer_0BC = 30; + this->iwork[6] = 30; + this->fwork[15] = 0.0f; } break; case 4: - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &spA0, &sp9C, &sp98); - actor->fwork[0] = sp9C; - actor->fwork[1] = spA0; - actor->fwork[2] = sp98; - actor->obj.pos.y = sp9C; - Math_SmoothStepToAngle(&actor->obj.rot.x, spA0 * M_RTOD, 0.1f, 1.0f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, sp98 * M_RTOD, 0.1f, 1.0f, 0.01f); + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &spA0, &sp9C, &sp98); + this->fwork[0] = sp9C; + this->fwork[1] = spA0; + this->fwork[2] = sp98; + this->obj.pos.y = sp9C; + Math_SmoothStepToAngle(&this->obj.rot.x, spA0 * M_RTOD, 0.1f, 1.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, sp98 * M_RTOD, 0.1f, 1.0f, 0.01f); - if (actor->timer_0BC == 0) { - if (((actor->animFrame == 40) || (actor->animFrame == 80)) && (actor->timer_0BC == 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK1, actor->sfxSource, 4); + if (this->timer_0BC == 0) { + if (((this->animFrame == 40) || (this->animFrame == 80)) && (this->timer_0BC == 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK1, this->sfxSource, 4); } - Math_SmoothStepToF(&actor->fwork[15], 1.0f, 0.7f, 0.1f, 0.01f); - actor->animFrame++; - if (actor->animFrame >= Animation_GetFrameCount(&D_TI1_70067C4)) { - actor->animFrame = 0; + Math_SmoothStepToF(&this->fwork[15], 1.0f, 0.7f, 0.1f, 0.01f); + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_TI1_70067C4)) { + this->animFrame = 0; } - if ((actor->fwork[4] > 0.0f) || (actor->fwork[7] > 0.0f)) { - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + if ((this->fwork[4] > 0.0f) || (this->fwork[7] > 0.0f)) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_i5_801B766C, &sp158); - actor->obj.pos.x += sp158.x; - actor->obj.pos.z += sp158.z; + this->obj.pos.x += sp158.x; + this->obj.pos.z += sp158.z; } } else { - Math_SmoothStepToF(&actor->fwork[15], 0.0f, 1.0f, 0.2f, 0.01f); - Math_SmoothStepToF(&actor->fwork[24], 0.0f, 1.0f, 0.1f, 0.01f); - actor->fwork[23] += actor->fwork[24]; - if (Animation_GetFrameCount(&D_TI1_70067C4) <= actor->fwork[23]) { - actor->fwork[23] = 0.0f; + Math_SmoothStepToF(&this->fwork[15], 0.0f, 1.0f, 0.2f, 0.01f); + Math_SmoothStepToF(&this->fwork[24], 0.0f, 1.0f, 0.1f, 0.01f); + this->fwork[23] += this->fwork[24]; + if (Animation_GetFrameCount(&D_TI1_70067C4) <= this->fwork[23]) { + this->fwork[23] = 0.0f; } - actor->animFrame = actor->fwork[23]; - if (actor->timer_0BC == 1) { - AUDIO_PLAY_SFX(NA_SE_EN_KANI_MOTOR, actor->sfxSource, 4); + this->animFrame = this->fwork[23]; + if (this->timer_0BC == 1) { + AUDIO_PLAY_SFX(NA_SE_EN_KANI_MOTOR, this->sfxSource, 4); } } - Animation_GetFrameData(&D_TI1_70067C4, actor->animFrame, spA4); - Math_SmoothStepToVec3fArray(spA4, actor->vwork, 1, 15, actor->fwork[15], 360.0f, 0.01f); - temp_fs0 = actor->vwork[0].y; - actor->vwork[0].y += actor->fwork[26]; - Animation_DrawSkeleton(0, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, + Animation_GetFrameData(&D_TI1_70067C4, this->animFrame, spA4); + Math_SmoothStepToVec3fArray(spA4, this->vwork, 1, 15, this->fwork[15], 360.0f, 0.01f); + temp_fs0 = this->vwork[0].y; + this->vwork[0].y += this->fwork[26]; + Animation_DrawSkeleton(0, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, &gIdentityMatrix); - actor->vwork[0].y = temp_fs0; - Math_SmoothStepToF(&actor->fwork[26], -60.0f, actor->fwork[15], 500.0f, 0.01f); + this->vwork[0].y = temp_fs0; + Math_SmoothStepToF(&this->fwork[26], -60.0f, this->fwork[15], 500.0f, 0.01f); - if (actor->health <= 0) { - actor->iwork[6] = 300; - actor->state = 5; - actor->animFrame = 0; - actor->timer_0BC = 30; - actor->fwork[15] = 0.0f; - AUDIO_PLAY_SFX(NA_SE_EN_KANI_STOP, actor->sfxSource, 4); + if (this->health <= 0) { + this->iwork[6] = 300; + this->state = 5; + this->animFrame = 0; + this->timer_0BC = 30; + this->fwork[15] = 0.0f; + AUDIO_PLAY_SFX(NA_SE_EN_KANI_STOP, this->sfxSource, 4); } break; case 5: - Math_SmoothStepToF(&actor->fwork[15], 1.0f, 1.0f, 0.015f, 0.01f); - Animation_GetFrameData(&D_TI1_7007130, actor->animFrame, spA4); - Math_SmoothStepToVec3fArray(spA4, actor->vwork, 1, 15, actor->fwork[15], 360.0f, 0.01f); - Math_SmoothStepToF(&actor->fwork[26], -40.0f, actor->fwork[15], 500.0f, 0.01f); - temp_fs0 = actor->vwork[0].y; - actor->vwork[0].y += actor->fwork[26]; - Animation_DrawSkeleton(0, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, + Math_SmoothStepToF(&this->fwork[15], 1.0f, 1.0f, 0.015f, 0.01f); + Animation_GetFrameData(&D_TI1_7007130, this->animFrame, spA4); + Math_SmoothStepToVec3fArray(spA4, this->vwork, 1, 15, this->fwork[15], 360.0f, 0.01f); + Math_SmoothStepToF(&this->fwork[26], -40.0f, this->fwork[15], 500.0f, 0.01f); + temp_fs0 = this->vwork[0].y; + this->vwork[0].y += this->fwork[26]; + Animation_DrawSkeleton(0, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, &gIdentityMatrix); - actor->vwork[0].y = temp_fs0; - actor->animFrame++; - if (actor->animFrame >= Animation_GetFrameCount(&D_TI1_7007130)) { - actor->animFrame = 0; + this->vwork[0].y = temp_fs0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_TI1_7007130)) { + this->animFrame = 0; } - if (actor->timer_0BC == 0) { - actor->state = 6; - actor->animFrame = 0; - actor->fwork[15] = 0.0f; + if (this->timer_0BC == 0) { + this->state = 6; + this->animFrame = 0; + this->fwork[15] = 0.0f; } break; case 6: - if (actor->animFrame == 18) { - actor->iwork[8] = 0; + if (this->animFrame == 18) { + this->iwork[8] = 0; } - actor->iwork[2] = 1; - Math_SmoothStepToF(&actor->fwork[15], 1.0f, 1.0f, 0.005f, 0.01f); - Animation_GetFrameData(&D_TI1_7006F74, actor->animFrame, spA4); - Math_SmoothStepToVec3fArray(spA4, actor->vwork, 1, 15, actor->fwork[15], 360.0f, 0.01f); - temp_fs0 = actor->vwork[0].y; - actor->vwork[0].y += actor->fwork[26]; - Animation_DrawSkeleton(0, D_TI1_7006990, actor->vwork, Titania_8018C118, Titania_8018C3D8, actor, + this->iwork[2] = 1; + Math_SmoothStepToF(&this->fwork[15], 1.0f, 1.0f, 0.005f, 0.01f); + Animation_GetFrameData(&D_TI1_7006F74, this->animFrame, spA4); + Math_SmoothStepToVec3fArray(spA4, this->vwork, 1, 15, this->fwork[15], 360.0f, 0.01f); + temp_fs0 = this->vwork[0].y; + this->vwork[0].y += this->fwork[26]; + Animation_DrawSkeleton(0, aTi1DesertCrawlerSkel, this->vwork, Titania_8018C118, Titania_8018C3D8, this, &gIdentityMatrix); - actor->vwork[0].y = temp_fs0; - if (actor->animFrame == 21) { - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); + this->vwork[0].y = temp_fs0; + if (this->animFrame == 21) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[12], &sp158); - func_effect_8007A900(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, - 20.0f, 255, 8, 0); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[9], &sp158); - func_effect_8007A900(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, - 20.0f, 255, 8, 0); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[3], &sp158); - func_effect_8007A900(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, - 20.0f, 255, 8, 0); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[6], &sp158); - func_effect_8007A900(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, - 20.0f, 255, 8, 0); - AUDIO_PLAY_SFX(NA_SE_OB_METAL_BOUND_M, actor->sfxSource, 4); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[12], &sp158); + Effect_Effect359_Spawn(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, + 20.0f, 255, 8, 0); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[9], &sp158); + Effect_Effect359_Spawn(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, + 20.0f, 255, 8, 0); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[3], &sp158); + Effect_Effect359_Spawn(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, + 20.0f, 255, 8, 0); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[6], &sp158); + Effect_Effect359_Spawn(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, + 20.0f, 255, 8, 0); + AUDIO_PLAY_SFX(NA_SE_OB_METAL_BOUND_M, this->sfxSource, 4); } - if ((actor->timer_0BC % 8) == 0) { - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[12], &sp158); - func_effect_8007D2C8(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, + if ((this->timer_0BC % 8) == 0) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[12], &sp158); + func_effect_8007D2C8(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, 1.5f); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[9], &sp158); - func_effect_8007D2C8(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[9], &sp158); + func_effect_8007D2C8(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, 1.5f); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[3], &sp158); - func_effect_8007D2C8(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[3], &sp158); + func_effect_8007D2C8(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, 1.5f); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &actor->fwork[6], &sp158); - func_effect_8007D2C8(actor->obj.pos.x + sp158.x, actor->obj.pos.y + sp158.y, actor->obj.pos.z + sp158.z, + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[6], &sp158); + func_effect_8007D2C8(this->obj.pos.x + sp158.x, this->obj.pos.y + sp158.y, this->obj.pos.z + sp158.z, 1.5f); } - if (actor->animFrame < (Animation_GetFrameCount(&D_TI1_7006F74) - 1)) { - actor->animFrame++; + if (this->animFrame < (Animation_GetFrameCount(&D_TI1_7006F74) - 1)) { + this->animFrame++; } else { - Titania_8018C72C(actor); + Titania_8018C72C(this); } break; case 7: - Animation_GetFrameData(&D_TI1_7006F74, actor->animFrame, spA4); - Math_SmoothStepToVec3fArray(spA4, actor->vwork, 1, 15, actor->fwork[15], 360.0f, 0.01f); + Animation_GetFrameData(&D_TI1_7006F74, this->animFrame, spA4); + Math_SmoothStepToVec3fArray(spA4, this->vwork, 1, 15, this->fwork[15], 360.0f, 0.01f); break; case 8: - switch (actor->iwork[7]) { + switch (this->iwork[7]) { case 1: for (i = 0; i < 9U; i++) { - D_i5_801BD738[actor->iwork[0]][i].unk_18 |= 1; + D_i5_801BD738[this->iwork[0]][i].unk_18 |= 1; } - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, actor->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_L, this->sfxSource, 4); gCameraShake = 20; gControllerRumbleTimers[0] = 16; - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gCalcMatrix, actor->obj.rot.z * M_DTOR, MTXF_APPLY); - func_effect_8007D2C8(actor->obj.pos.x, actor->fwork[27] + actor->obj.pos.y, actor->obj.pos.z, - 15.0f); - var_s1 = D_i5_801BD738[actor->iwork[0]]; + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY); + func_effect_8007D2C8(this->obj.pos.x, this->fwork[27] + this->obj.pos.y, this->obj.pos.z, 15.0f); + var_s1 = D_i5_801BD738[this->iwork[0]]; for (i = 0; i < 9U; i++, var_s1++) { actorPtr = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if ((actorPtr != NULL) && D_i5_801B7630[i][1] == 1) { actorPtr->state = 47; actorPtr->unk_048 = i; Matrix_MultVec3f(gCalcMatrix, &var_s1->unk_00.pos, &sp158); - actorPtr->obj.pos.x = actor->obj.pos.x + sp158.x; - actorPtr->obj.pos.y = actor->obj.pos.y + sp158.y; - actorPtr->obj.pos.z = actor->obj.pos.z + sp158.z; - actorPtr->obj.rot.x = var_s1->unk_00.rot.x + actor->obj.rot.x; - actorPtr->obj.rot.y = var_s1->unk_00.rot.y + actor->obj.rot.y; - actorPtr->obj.rot.z = var_s1->unk_00.rot.z + actor->obj.rot.z; + actorPtr->obj.pos.x = this->obj.pos.x + sp158.x; + actorPtr->obj.pos.y = this->obj.pos.y + sp158.y; + actorPtr->obj.pos.z = this->obj.pos.z + sp158.z; + actorPtr->obj.rot.x = var_s1->unk_00.rot.x + this->obj.rot.x; + actorPtr->obj.rot.y = var_s1->unk_00.rot.y + this->obj.rot.y; + actorPtr->obj.rot.z = var_s1->unk_00.rot.z + this->obj.rot.z; sp170 = Math_Atan2F(var_s1->unk_00.pos.z, var_s1->unk_00.pos.x); actorPtr->vel.x = __sinf(sp170) * (7.0f + RAND_FLOAT(5.0f)); actorPtr->vel.z = __cosf(sp170) * (7.0f + RAND_FLOAT(5.0f)); @@ -1642,12 +1649,12 @@ void Titania_Actor229_Update(Actor* actor) { actorPtr->state = 47; actorPtr->unk_048 = 9; Matrix_MultVec3f(gCalcMatrix, &var_s1->unk_00.pos, &sp158); - actorPtr->obj.pos.x = actor->obj.pos.x + sp158.x; - actorPtr->obj.pos.y = actor->obj.pos.y + sp158.y; - actorPtr->obj.pos.z = actor->obj.pos.z + sp158.z; - actorPtr->obj.rot.x = var_s1->unk_00.rot.x + actor->obj.rot.x; - actorPtr->obj.rot.y = var_s1->unk_00.rot.y + actor->obj.rot.y; - actorPtr->obj.rot.z = var_s1->unk_00.rot.z + actor->obj.rot.z; + actorPtr->obj.pos.x = this->obj.pos.x + sp158.x; + actorPtr->obj.pos.y = this->obj.pos.y + sp158.y; + actorPtr->obj.pos.z = this->obj.pos.z + sp158.z; + actorPtr->obj.rot.x = var_s1->unk_00.rot.x + this->obj.rot.x; + actorPtr->obj.rot.y = var_s1->unk_00.rot.y + this->obj.rot.y; + actorPtr->obj.rot.z = var_s1->unk_00.rot.z + this->obj.rot.z; sp170 = Math_Atan2F(var_s1->unk_00.pos.z, var_s1->unk_00.pos.x); actorPtr->vel.x = __sinf(sp170) * (7.0f + RAND_FLOAT(5.0f)); actorPtr->vel.z = __cosf(sp170) * (7.0f + RAND_FLOAT(5.0f)); @@ -1670,96 +1677,96 @@ void Titania_Actor229_Update(Actor* actor) { break; case 5: - D_i5_801B750C[actor->iwork[0]] = false; - Object_Kill(&actor->obj, actor->sfxSource); + D_i5_801B750C[this->iwork[0]] = false; + Object_Kill(&this->obj, this->sfxSource); break; } break; } - if (actor->health > 0) { - actor->info.targetOffset = actor->fwork[27]; + if (this->health > 0) { + this->info.targetOffset = this->fwork[27]; } else { - actor->lockOnTimers[TEAM_ID_FOX] = 0; - actor->info.targetOffset = 0.0f; + this->lockOnTimers[TEAM_ID_FOX] = 0; + this->info.targetOffset = 0.0f; } - actor->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } -void Titania_Actor229_Draw(Actor* actor) { +void Titania_TiDesertCrawler_Draw(TiDesertCrawler* this) { f32 sp34; - if ((actor->iwork[6] % 2) != 0) { + if ((this->iwork[6] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_31); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 127, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 255, 255, 255, 255); } - sp34 = actor->vwork[0].y; - actor->vwork[0].y += actor->fwork[26]; - Animation_DrawSkeleton(0, D_TI1_7006990, actor->vwork, Titania_8018C134, Titania_8018C370, actor, &gIdentityMatrix); - actor->vwork[0].y = sp34; + sp34 = this->vwork[0].y; + this->vwork[0].y += this->fwork[26]; + Animation_DrawSkeleton(0, aTi1DesertCrawlerSkel, this->vwork, Titania_TiDesertCrawler_OverrideLimbDraw, + Titania_TiDesertCrawler_PostLimbDraw, this, &gIdentityMatrix); + this->vwork[0].y = sp34; } -void Titania_8018E3B0(Actor* actor) { - D_i5_801B750C[actor->iwork[0]] = false; +void Titania_8018E3B0(TiDesertCrawler* this) { + D_i5_801B750C[this->iwork[0]] = false; } static Vec3f D_i5_801B7678 = { 0.0f, 388.0f, 103.0f }; static Vec3f D_i5_801B7684 = { 0.0f, 0.0f, 0.0f }; // unused -void Titania_8018E3CC(Actor* actor) { - Actor* actorPtr; +void Titania_TiDelphor_Init(TiDelphor* this) { + Actor* delphorHead; f32 sp40; Vec3f sp34; s32 i; - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp40, &actor->obj.pos.y, &sp40); + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp40, &this->obj.pos.y, &sp40); - actor->obj.pos.y -= 20.0f; - actorPtr = gActors; + this->obj.pos.y -= 20.0f; + delphorHead = gActors; - for (i = 0; i < ARRAY_COUNT(gActors); i++, actorPtr++) { - if (actorPtr->obj.status == OBJ_FREE) { - Actor_Initialize(actorPtr); - actorPtr->obj.status = OBJ_INIT; - actorPtr->obj.id = OBJ_ACTOR_228; - Object_SetInfo(&actorPtr->info, actorPtr->obj.id); - actorPtr->iwork[4] = (uintptr_t) actor; - actor->iwork[0] = (uintptr_t) actorPtr; - actorPtr->fwork[6] = D_i5_801B7518[0]; - actorPtr->obj.rot.x = (D_i5_801B7518[0] + D_i5_801B7518[1]) * 0.5f; - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + for (i = 0; i < ARRAY_COUNT(gActors); i++, delphorHead++) { + if (delphorHead->obj.status == OBJ_FREE) { + Actor_Initialize(delphorHead); + delphorHead->obj.status = OBJ_INIT; + delphorHead->obj.id = OBJ_ACTOR_TI_DELPHOR_HEAD; + Object_SetInfo(&delphorHead->info, delphorHead->obj.id); + delphorHead->iwork[4] = (uintptr_t) this; + this->iwork[0] = (uintptr_t) delphorHead; + delphorHead->fwork[6] = D_i5_801B7518[0]; + delphorHead->obj.rot.x = (D_i5_801B7518[0] + D_i5_801B7518[1]) * 0.5f; + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_i5_801B7678, &sp34); - actorPtr->obj.pos.x = actor->fwork[0] = actor->obj.pos.x + sp34.x; - actorPtr->obj.pos.y = actor->fwork[1] = actor->obj.pos.y + sp34.y; - actorPtr->obj.pos.z = actor->fwork[2] = actor->obj.pos.z + sp34.z; - actorPtr->obj.rot.y = actor->obj.rot.y; + delphorHead->obj.pos.x = this->fwork[0] = this->obj.pos.x + sp34.x; + delphorHead->obj.pos.y = this->fwork[1] = this->obj.pos.y + sp34.y; + delphorHead->obj.pos.z = this->fwork[2] = this->obj.pos.z + sp34.z; + delphorHead->obj.rot.y = this->obj.rot.y; break; } } if (i == 60) { - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } } -void Titania_Actor227_Update(Actor* actor) { - - actor->iwork[1]++; - if ((actor->iwork[0] == (uintptr_t) NULL) && ((actor->iwork[1] & 3) == 0)) { - func_effect_8007C120(actor->fwork[0], actor->fwork[1], actor->fwork[2], 0.0f, 0.0f, 0.0f, 0.0625f, 10); +void Titania_TiDelphor_Update(TiDelphor* this) { + this->iwork[1]++; + if ((this->iwork[0] == (uintptr_t) NULL) && ((this->iwork[1] & 3) == 0)) { + Effect_Effect390_Spawn(this->fwork[0], this->fwork[1], this->fwork[2], 0.0f, 0.0f, 0.0f, 0.0625f, 10); } } -void Titania_Actor227_Draw(Actor* actor) { - gSPDisplayList(gMasterDisp++, D_TI1_70098E0); +void Titania_TiDelphor_Draw(TiDelphor* this) { + gSPDisplayList(gMasterDisp++, aTiDelphorDL); } -void Titania_8018E5E8(Actor* actor) { - actor->health = 100; +void Titania_TiDelphorHead_Init(TiDelphorHead* this) { + this->health = 100; } -void Titania_Actor228_Update(Actor* actor) { +void Titania_TiDelphorHead_Update(TiDelphorHead* this) { f32 spA4; f32 spA0; f32 sp9C; @@ -1784,132 +1791,153 @@ void Titania_Actor228_Update(Actor* actor) { f32 sp40; s32 index; - sp9C = gPlayer[0].pos.x - actor->obj.pos.x; - spA0 = (gPlayer[0].pos.y - actor->obj.pos.y) - 30.0f; - spA4 = gPlayer[0].trueZpos - actor->obj.pos.z; + sp9C = gPlayer[0].pos.x - this->obj.pos.x; + spA0 = (gPlayer[0].pos.y - this->obj.pos.y) - 30.0f; + spA4 = gPlayer[0].trueZpos - this->obj.pos.z; - switch (actor->state) { + switch (this->state) { case 0: - if (Math_SmoothStepToAngle(&actor->obj.rot.x, actor->fwork[6], 0.2f, 1.0f, 0.01f) == 0.0f) { - actor->iwork[1] = 1 - actor->iwork[1]; - actor->fwork[6] = D_i5_801B7518[actor->iwork[1]]; + if (Math_SmoothStepToAngle(&this->obj.rot.x, this->fwork[6], 0.2f, 1.0f, 0.01f) == 0.0f) { + this->iwork[1] = 1 - this->iwork[1]; + this->fwork[6] = D_i5_801B7518[this->iwork[1]]; } + if (spA4 <= 2500.0f) { - actor->state++; + this->state++; } break; + case 1: - actor->fwork[7] = Math_Atan2F(sp9C, spA4) * M_RTOD; - actor->fwork[6] = -Math_Atan2F(spA0, sqrtf(SQ(sp9C) + SQ(spA4))) * M_RTOD; - Math_SmoothStepToAngle(&actor->obj.rot.y, actor->fwork[7], 0.1f, 1.3333334f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.x, actor->fwork[6], 0.1f, 1.3333334f, 0.01f); + this->fwork[7] = Math_Atan2F(sp9C, spA4) * M_RTOD; + this->fwork[6] = -Math_Atan2F(spA0, sqrtf(SQ(sp9C) + SQ(spA4))) * M_RTOD; + + Math_SmoothStepToAngle(&this->obj.rot.y, this->fwork[7], 0.1f, 1.3333334f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.x, this->fwork[6], 0.1f, 1.3333334f, 0.01f); break; + case 2: - if (actor->obj.rot.y < 0.0f) { - actor->obj.rot.y += 360.0f; - } else if (actor->obj.rot.y >= 360.0f) { - actor->obj.rot.y -= 360.0f; + if (this->obj.rot.y < 0.0f) { + this->obj.rot.y += 360.0f; + } else if (this->obj.rot.y >= 360.0f) { + this->obj.rot.y -= 360.0f; } - if (actor->obj.rot.y > 180.0f) { - actor->fwork[8] = 90.0f; + if (this->obj.rot.y > 180.0f) { + this->fwork[8] = 90.0f; } else { - actor->fwork[8] = 270.0f; + this->fwork[8] = 270.0f; } - actor->fwork[9] = 0.0f; - actor->timer_0BC = 10; - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - actor->iwork[2] = 1; - index = actor->iwork[3]; + + this->fwork[9] = 0.0f; + this->timer_0BC = 10; + + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + + this->iwork[2] = 1; + + index = this->iwork[3]; if (index > 0) { gTexturedLines[index - 1].mode = 0; } - actor->state++; + this->state++; break; + case 3: - Math_SmoothStepToF(&actor->fwork[9], 5.0f, 0.05f, 0.5f, 0.01f); - Math_SmoothStepToAngle(&actor->obj.rot.z, actor->fwork[8], 1.0f, actor->fwork[9], 0.01f); - if (actor->timer_0BC == 0) { - actor->gravity = 0.5f; + Math_SmoothStepToF(&this->fwork[9], 5.0f, 0.05f, 0.5f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, this->fwork[8], 1.0f, this->fwork[9], 0.01f); + + if (this->timer_0BC == 0) { + this->gravity = 0.5f; } - if (actor->timer_0BE == 0) { - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f); - actor->timer_0BE = 10; + if (this->timer_0BE == 0) { + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + this->timer_0BE = 10; } - Ground_801B6E20(actor->obj.pos.x, actor->obj.pos.z + gPathProgress, &sp80, &sp7C, &sp80); - if (actor->obj.pos.y < (94.0f + sp7C)) { + + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp80, &sp7C, &sp80); + + if (this->obj.pos.y < (94.0f + sp7C)) { spA4 = fabsf(spA4); if (spA4 < 5000.0f) { - actor->iwork[7] = (s32) (spA4 / 200.0f); - actor->iwork[8] = (s32) ((5000.0f - spA4) / 714.0f); + this->iwork[7] = (s32) (spA4 / 200.0f); + this->iwork[8] = (s32) ((5000.0f - spA4) / 714.0f); } - AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, actor->sfxSource, 4); - actor->vel.y = 0.0f; - actor->gravity = 0.0f; - actor->obj.pos.y = 94.0f + sp7C; - actor->state++; + AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, this->sfxSource, 4); + this->vel.y = 0.0f; + this->gravity = 0.0f; + this->obj.pos.y = 94.0f + sp7C; + this->state++; } break; + case 4: - if (actor->iwork[7] > 0) { - actor->iwork[7]--; - } else if ((gPlayer[0].grounded != 0) && (actor->iwork[8] > 0)) { + if (this->iwork[7] > 0) { + this->iwork[7]--; + } else if ((gPlayer[0].grounded != 0) && (this->iwork[8] > 0)) { gControllerRumbleFlags[0] = 1; - actor->iwork[8]--; + this->iwork[8]--; } break; } - if ((actor->state == 0) || (actor->state == 1)) { - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, actor->obj.rot.x * M_DTOR, MTXF_APPLY); + + if ((this->state == 0) || (this->state == 1)) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + sp90.x = 0.0f; sp90.y = 39.0f; sp90.z = 115.0f; + Matrix_MultVec3f(gCalcMatrix, &sp90, &sp84); - actor->fwork[0] = sp84.x; - actor->fwork[1] = sp84.y; - actor->fwork[2] = sp84.z; + + this->fwork[0] = sp84.x; + this->fwork[1] = sp84.y; + this->fwork[2] = sp84.z; + sp90.x = 0.0f; sp90.y = 39.0f; sp90.z = 3115.0f; + Matrix_MultVec3f(gCalcMatrix, &sp90, &sp84); - actor->fwork[3] = sp84.x; - actor->fwork[4] = sp84.y; - actor->fwork[5] = sp84.z; - if (actor->dmgType > DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->timer_0C6 = 10; - if (actor->health > 0) { - actor->health -= actor->damage; - if (actor->health <= 0) { - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + actor->fwork[27], 2); + + this->fwork[3] = sp84.x; + this->fwork[4] = sp84.y; + this->fwork[5] = sp84.z; + + if (this->dmgType > DMG_NONE) { + this->dmgType = DMG_NONE; + this->timer_0C6 = 10; + if (this->health > 0) { + this->health -= this->damage; + if (this->health <= 0) { + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z + this->fwork[27], 2); gHitCount += 2; - actor->lockOnTimers[TEAM_ID_FOX] = actor->health = actor->itemDrop = 0; - actor->info.targetOffset = 0.0f; - Actor_Despawn(actor); - actor->info.bonus = 0; - ((Actor*) actor->iwork[4])->iwork[0] = 0; - actor->iwork[5] = 0; - actor->state = 2; + this->lockOnTimers[TEAM_ID_FOX] = this->health = this->itemDrop = 0; + this->info.targetOffset = 0.0f; + Actor_Despawn(this); + this->info.bonus = 0; + ((Actor*) this->iwork[4])->iwork[0] = 0; + this->iwork[5] = 0; + this->state = 2; } } } } - if (actor->iwork[3] == 0) { + if (this->iwork[3] == 0) { for (i = 0; i < ARRAY_COUNT(gTexturedLines); i++) { if (gTexturedLines[i].mode == 0) { - actor->iwork[3] = i + 1; + this->iwork[3] = i + 1; break; } } } - sp68 = (actor->fwork[3] - actor->fwork[0]) / 3000.0f; - sp64 = (actor->fwork[4] - actor->fwork[1]) / 3000.0f; - sp60 = (actor->fwork[5] - actor->fwork[2]) / 3000.0f; - sp40 = actor->obj.pos.x + actor->fwork[0]; - sp44 = actor->obj.pos.y + actor->fwork[1]; - sp48 = actor->obj.pos.z + actor->fwork[2]; + sp68 = (this->fwork[3] - this->fwork[0]) / 3000.0f; + sp64 = (this->fwork[4] - this->fwork[1]) / 3000.0f; + sp60 = (this->fwork[5] - this->fwork[2]) / 3000.0f; + sp40 = this->obj.pos.x + this->fwork[0]; + sp44 = this->obj.pos.y + this->fwork[1]; + sp48 = this->obj.pos.z + this->fwork[2]; for (i = 0; i <= 3000; i += 50) { sp5C = (sp68 * i) + sp40; @@ -1920,12 +1948,13 @@ void Titania_Actor228_Update(Actor* actor) { } } - if (actor->iwork[2] == 0) { - index = actor->iwork[3] - 1; + if (this->iwork[2] == 0) { + index = this->iwork[3] - 1; + gTexturedLines[index].mode = 101; - gTexturedLines[index].posAA.x = actor->obj.pos.x + actor->fwork[0]; - gTexturedLines[index].posAA.y = actor->obj.pos.y + actor->fwork[1]; - gTexturedLines[index].posAA.z = actor->obj.pos.z + actor->fwork[2]; + gTexturedLines[index].posAA.x = this->obj.pos.x + this->fwork[0]; + gTexturedLines[index].posAA.y = this->obj.pos.y + this->fwork[1]; + gTexturedLines[index].posAA.z = this->obj.pos.z + this->fwork[2]; gTexturedLines[index].prim.r = 255; gTexturedLines[index].prim.g = 255; gTexturedLines[index].prim.b = 0; @@ -1934,7 +1963,8 @@ void Titania_Actor228_Update(Actor* actor) { gTexturedLines[index].posBB.y = sp70; gTexturedLines[index].posBB.z = sp54; gTexturedLines[index].xyScale = 3.0f; - if (actor->timer_0C0 == 0) { + + if (this->timer_0C0 == 0) { gTexturedLines[index].prim.r = 255; gTexturedLines[index].prim.g = 255; gTexturedLines[index].prim.b = 64; @@ -1943,20 +1973,23 @@ void Titania_Actor228_Update(Actor* actor) { gTexturedLines[index].prim.g = 100; gTexturedLines[index].prim.b = 0; } + if (i <= 3000) { - if (actor->timer_0C0 == 0) { - func_effect_8007D1E0(sp5C, sp70 + 5.0f, sp54, 2.0f); + if (this->timer_0C0 == 0) { + Effect_Effect341_Spawn(sp5C, sp70 + 5.0f, sp54, 2.0f); } - temp_v0_3 = actor->iwork[5]; + + temp_v0_3 = (Effect*) this->iwork[5]; + if (temp_v0_3 == NULL) { - temp_v0_4 = func_effect_8007783C(OBJ_EFFECT_TIMED_SFX); + temp_v0_4 = Effect_Load(OBJ_EFFECT_TIMED_SFX); if (temp_v0_4 != NULL) { temp_v0_4->obj.status = OBJ_ACTIVE; temp_v0_4->obj.pos.x = sp5C; temp_v0_4->obj.pos.y = sp70 + 5.0f; temp_v0_4->obj.pos.z = sp54; temp_v0_4->timer_50 = 2; - actor->iwork[5] = (uintptr_t) temp_v0_4; + this->iwork[5] = (uintptr_t) temp_v0_4; AUDIO_PLAY_SFX(NA_SE_EN_LASER_BEAM, temp_v0_4->sfxSource, 4); } } else { @@ -1966,18 +1999,18 @@ void Titania_Actor228_Update(Actor* actor) { temp_v0_3->timer_50 = 2; } } else { - actor->iwork[5] = 0; + this->iwork[5] = 0; } - if (actor->timer_0C0 == 0) { - actor->timer_0C0 = 3; + + if (this->timer_0C0 == 0) { + this->timer_0C0 = 3; } } } -void Titania_Actor228_Draw(Actor* actor) { - +void Titania_TiDelphorHead_Draw(Actor* this) { gSPDisplayList(gMasterDisp++, D_TI1_7008930); - if ((actor->timer_0C6 % 2) == 0) { + if ((this->timer_0C6 % 2) == 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_34); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 220, 220, 220, 255); } else { @@ -1987,36 +2020,35 @@ void Titania_Actor228_Draw(Actor* actor) { gSPDisplayList(gMasterDisp++, D_TI1_7009510); } -void Titania_8018EFF0(Sprite* sprite) { +void Titania_TiCactus_Init(TiCactus* this) { f32 sp24; f32 sp20; - Ground_801B6E20(sprite->obj.pos.x, sprite->obj.pos.z + gPathProgress, &sp20, &sp24, &sp20); - sprite->obj.pos.y = sp24; + Ground_801B6E20(this->obj.pos.x, this->obj.pos.z + gPathProgress, &sp20, &sp24, &sp20); + this->obj.pos.y = sp24; } -void Titania_Cactus_Update(Sprite* sprite) { - sprite->obj.rot.y = Math_Atan2F(gPlayer[0].cam.eye.x - sprite->obj.pos.x, - gPlayer[0].cam.eye.z - (sprite->obj.pos.z + gPathProgress)) * - M_RTOD; - if (sprite->destroy != 0) { - func_effect_8007D074(sprite->obj.pos.x, sprite->obj.pos.y + 96.0f, sprite->obj.pos.z, 4.0f); - sprite->obj.status = OBJ_FREE; - Effect_SpawnTimedSfxAtPos(&sprite->obj.pos, NA_SE_OB_EXPLOSION_S); +void Titania_Cactus_Update(TiCactus* this) { + this->obj.rot.y = + Math_Atan2F(gPlayer[0].cam.eye.x - this->obj.pos.x, gPlayer[0].cam.eye.z - (this->obj.pos.z + gPathProgress)) * + M_RTOD; + if (this->destroy) { + func_effect_8007D074(this->obj.pos.x, this->obj.pos.y + 96.0f, this->obj.pos.z, 4.0f); + this->obj.status = OBJ_FREE; + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_OB_EXPLOSION_S); } } -void Titania_8018F0D8(Scenery* scenery) { - - if (scenery->obj.rot.x != 0.0f) { - if (scenery->obj.rot.x >= 10000.0f) { - scenery->unk_44 = 1; - scenery->obj.rot.x -= 10000.0f; +void Titania_TiPillar_Init(TiPillar* this) { + if (this->obj.rot.x != 0.0f) { + if (this->obj.rot.x >= 10000.0f) { + this->unk_44 = 1; + this->obj.rot.x -= 10000.0f; } - scenery->vel.y = scenery->obj.rot.x; - scenery->obj.rot.x = 0.0f; + this->vel.y = this->obj.rot.x; + this->obj.rot.x = 0.0f; } - scenery->vel.z = scenery->obj.pos.x; + this->vel.z = this->obj.pos.x; } static Vec3f D_i5_801B7690 = { 0.0f, 460.0f, 0.0f }; @@ -2029,138 +2061,145 @@ Gfx* D_TI_801B769C[39] = { D_TI2_7004400, D_TI2_7009890, D_TI_8001A80, D_TI_A001DB0, D_TI_A001EC0, D_TI_A001BE0, D_TI2_7004270, }; -void Titania_8018F134(Scenery* scenery) { +void Titania_8018F134(TiPillar* this) { Vec3f sp7C; Vec3f sp70; f32 i; f32* j = &D_i5_801B7690.x; - switch (scenery->unk_44) { + switch (this->unk_44) { case 0: - Matrix_RotateY(gCalcMatrix, scenery->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, scenery->obj.rot.x * M_DTOR, MTXF_APPLY); - if ((scenery->obj.rot.y <= 30.0f) || (scenery->obj.rot.y >= 330.0f)) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); + + if ((this->obj.rot.y <= 30.0f) || (this->obj.rot.y >= 330.0f)) { for (*j = -80.0f; *j <= 80.0f; *j += 40.0f) { Matrix_MultVec3fNoTranslate(gCalcMatrix, &D_i5_801B7690, &sp70); - func_effect_8007A900(scenery->obj.pos.x + sp70.x, scenery->obj.pos.y + sp70.y, - scenery->obj.pos.z + sp70.z, 10.0f, 255, 15, 0); + Effect_Effect359_Spawn(this->obj.pos.x + sp70.x, this->obj.pos.y + sp70.y, this->obj.pos.z + sp70.z, + 10.0f, 255, 15, 0); } } else { sp7C.z = 0.0f; sp7C.x = -80.0f; - if (scenery->obj.rot.y > 90.0f) { + if (this->obj.rot.y > 90.0f) { sp7C.x = 80.0f; } for (i = 0.0f; i <= 450.0f; i += 50.0f) { - Matrix_RotateY(gCalcMatrix, scenery->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, scenery->obj.rot.x * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, MTXF_APPLY); sp7C.y = i; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp7C, &sp70); - func_effect_8007A900(scenery->obj.pos.x + sp70.x, scenery->obj.pos.y + sp70.y, - scenery->obj.pos.z + sp70.z, 10.0f, 255, 15, 0); + Effect_Effect359_Spawn(this->obj.pos.x + sp70.x, this->obj.pos.y + sp70.y, this->obj.pos.z + sp70.z, + 10.0f, 255, 15, 0); } } break; + case 1: - Matrix_RotateZ(gCalcMatrix, scenery->obj.rot.z * M_DTOR, MTXF_NEW); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_NEW); sp7C.z = 0.0f; sp7C.x = 0.0f; for (i = 0.0f; i <= 450.0f; i += 50.0f) { sp7C.y = i; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp7C, &sp70); - func_effect_8007A900(scenery->obj.pos.x + sp70.x, scenery->obj.pos.y + sp70.y, - scenery->obj.pos.z + sp70.z, 10.0f, 255, 15, 0); + Effect_Effect359_Spawn(this->obj.pos.x + sp70.x, this->obj.pos.y + sp70.y, this->obj.pos.z + sp70.z, + 10.0f, 255, 15, 0); } break; } } -void Titania_Scenery57_Update(Scenery* scenery) { - f32 temp; +void Titania_TiPillar_Update(TiPillar* this) { + f32 zDist; - switch (scenery->state) { + switch (this->state) { case 0: - temp = gPlayer[0].pos.z - scenery->obj.pos.z; - if ((scenery->vel.y != 0.0f) && (temp < scenery->vel.y)) { - if ((scenery->unk_44 == 1) && (scenery->obj.pos.x < gPlayer[0].pos.x)) { - scenery->unk_44 = 2; + zDist = gPlayer[0].pos.z - this->obj.pos.z; + if ((this->vel.y != 0.0f) && (zDist < this->vel.y)) { + if ((this->unk_44 == 1) && (this->obj.pos.x < gPlayer[0].pos.x)) { + this->unk_44 = 2; } - scenery->state++; + this->state++; } break; + case 1: - scenery->state++; + this->state++; /* fallthrough */ case 2: - scenery->vel.x += 0.05f; - switch (scenery->unk_44) { + this->vel.x += 0.05f; + switch (this->unk_44) { case 0: - scenery->obj.rot.x += scenery->vel.x; - if (scenery->obj.rot.x >= 90.0f) { - scenery->obj.rot.x = 90.0f; - scenery->state++; + this->obj.rot.x += this->vel.x; + if (this->obj.rot.x >= 90.0f) { + this->obj.rot.x = 90.0f; + this->state++; gControllerRumbleTimers[0] = 7; gCameraShake = 12; - Titania_8018F134(scenery); - AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, scenery->sfxSource, 4); + Titania_8018F134(this); + AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, this->sfxSource, 4); } break; + case 1: - scenery->obj.rot.z += scenery->vel.x; - if (scenery->obj.rot.z >= 90.0f) { - scenery->obj.rot.z = 90.0f; + this->obj.rot.z += this->vel.x; + if (this->obj.rot.z >= 90.0f) { + this->obj.rot.z = 90.0f; gControllerRumbleTimers[0] = 7; gCameraShake = 12; - Titania_8018F134(scenery); - AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, scenery->sfxSource, 4); - scenery->state++; + Titania_8018F134(this); + AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, this->sfxSource, 4); + this->state++; } break; + case 2: - scenery->obj.rot.z -= scenery->vel.x; - if (scenery->obj.rot.z <= -90.0f) { - scenery->obj.rot.z = -90.0f; + this->obj.rot.z -= this->vel.x; + if (this->obj.rot.z <= -90.0f) { + this->obj.rot.z = -90.0f; gControllerRumbleTimers[0] = 7; gCameraShake = 12; - Titania_8018F134(scenery); - AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, scenery->sfxSource, 4); - scenery->state++; + Titania_8018F134(this); + AUDIO_PLAY_SFX(NA_SE_EN_METAL_BOUND_M, this->sfxSource, 4); + this->state++; } break; } break; + case 3: break; } - if (scenery->unk_44 != 0) { - if (scenery->obj.rot.z == 0.0f) { - scenery->obj.pos.x = scenery->vel.z; - scenery->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_6006BF0); - } else if (scenery->obj.rot.z > 0.0f) { - scenery->obj.pos.x = scenery->vel.z - 75.0f; - scenery->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_6006C28); + + if (this->unk_44 != 0) { + if (this->obj.rot.z == 0.0f) { + this->obj.pos.x = this->vel.z; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aTiPillarHitbox); + } else if (this->obj.rot.z > 0.0f) { + this->obj.pos.x = this->vel.z - 75.0f; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_6006C28); } else { - scenery->obj.pos.x = scenery->vel.z + 75.0f; - scenery->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_6006C0C); + this->obj.pos.x = this->vel.z + 75.0f; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_TI_6006C0C); } } } -void Titania_Scenery57_Draw(Scenery* scenery) { - - switch (scenery->unk_44) { +void Titania_TiPillar_Draw(TiPillar* this) { + switch (this->unk_44) { case 0: - if (scenery->unk_44 == 0) { + if (this->unk_44 == 0) { gSPDisplayList(gMasterDisp++, D_TI1_7002270); } else { gSPDisplayList(gMasterDisp++, D_TI1_7000A80); } break; + case 1: case 2: - if (scenery->obj.rot.z != 0.0f) { - if (scenery->obj.rot.z > 0.0f) { + if (this->obj.rot.z != 0.0f) { + if (this->obj.rot.z > 0.0f) { Matrix_Translate(gGfxMatrix, 75.0f, 0.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); } else { @@ -2168,7 +2207,8 @@ void Titania_Scenery57_Draw(Scenery* scenery) { Matrix_SetGfxMtx(&gMasterDisp); } } - if (scenery->unk_44 == 0) { + + if (this->unk_44 == 0) { gSPDisplayList(gMasterDisp++, D_TI1_7002270); } else { gSPDisplayList(gMasterDisp++, D_TI1_7000A80); @@ -2177,7 +2217,7 @@ void Titania_Scenery57_Draw(Scenery* scenery) { } } -void Titania_Boss306_Init(Boss306* this) { +void Titania_TiGoras_Init(TiGoras* this) { s32 pad[2]; f32* sp1C; s32 i; @@ -2198,14 +2238,16 @@ void Titania_Boss306_Init(Boss306* this) { gBossActive = true; this->fwork[2] = 1.0f; this->fwork[4] = 730.0f; + for (i = 0; i < ARRAY_COUNT(D_i5_801BD668); i++) { D_i5_801BD668[i] = 0; D_i5_801BD6B0[i] = 0.0f; } + this->fwork[49] = this->obj.rot.y; this->obj.rot.y = 0.0f; - var_v1 = D_i5_801BBF00; - for (i = 0; i < ARRAY_COUNTU(D_i5_801BBF00); i++, var_v1++) { + + for (var_v1 = D_i5_801BBF00, i = 0; i < ARRAY_COUNTU(D_i5_801BBF00); i++, var_v1++) { var_v1->unk_26 = 0; var_v1->unk_00.pos.x = var_v1->unk_00.pos.y = var_v1->unk_00.pos.z = var_v1->unk_00.rot.x = var_v1->unk_00.rot.y = var_v1->unk_00.rot.z = var_v1->unk_18 = var_v1->unk_1C = var_v1->unk_20 = 0.0f; @@ -2216,13 +2258,16 @@ void Titania_Boss306_Init(Boss306* this) { D_i5_801BCDC8[i].x = D_i5_801BCDC8[i].y = D_i5_801BCDC8[i].z = 0.0f; D_i5_801BC978[i].x = D_i5_801BC978[i].y = D_i5_801BC978[i].z = 0.0f; } + this->swork[9] = 50; this->swork[10] = 50; this->swork[11] = 50; this->swork[12] = 50; this->swork[21] = 100; + sp1C = D_i5_801BBEF4 = Memory_Allocate(76 * sizeof(f32)); var_a1_2 = D_i5_801BBEF0 = Memory_Allocate(50 * sizeof(s32)); + for (i = 0; i < 50; i++, var_a1_2++) { *var_a1_2 = 0; } @@ -2234,59 +2279,70 @@ void Titania_Boss306_Init(Boss306* this) { D_i5_801BBEF8 = SEGMENTED_TO_VIRTUAL(D_TI_8000FC0); } -bool Titania_8018FC70(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Titania_8018FC70(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { f32 sp24; if (D_i5_801BBEF0[30] != 0) { sp24 = (D_i5_801BBEF0[30] / 15.0f) * D_i5_801BBEF0[32]; rot->z += SIN_DEG((D_i5_801BBEF0[30] / (f32) D_i5_801BBEF0[31]) * 360.0f) * sp24; } + switch (limbIndex) { case 0: Matrix_Translate(gCalcMatrix, D_i5_801BBEF4[36], D_i5_801BBEF4[37], D_i5_801BBEF4[38], MTXF_APPLY); Matrix_RotateY(gCalcMatrix, D_i5_801BBEF4[64] * M_DTOR, MTXF_APPLY); break; + case 1: case 2: case 3: rot->z += D_i5_801BBEF4[66]; break; } + Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, rot->y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); Matrix_Mult(gGfxMatrix, gCalcMatrix, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + switch (limbIndex) { case 1: case 2: case 3: case 7: RCP_SetupDL(&gMasterDisp, SETUPDL_30); + if ((D_i5_801BBEF0[30] % 2) != 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } else { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); } + if (*dList != NULL) { gSPDisplayList(gMasterDisp++, *dList); } break; + case 8: case 9: case 10: case 11: RCP_SetupDL(&gMasterDisp, SETUPDL_61); + if ((D_i5_801BBEF0[30] % 2) != 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } else { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); } + gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); + if (*dList != NULL) { gSPDisplayList(gMasterDisp++, *dList); } + RCP_SetupDL(&gMasterDisp, SETUPDL_29); break; } @@ -2393,7 +2449,7 @@ static UnkStruct_i5_801B8198 D_i5_801B8198[33] = { { 18, 15, NULL, 0 }, { 19, 10, NULL, 0 }, { 58, 5, NULL, 0 }, }; -f32 D_TI_801B83A8[517] = { +f32 aTiGorasHitbox[517] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, @@ -2462,8 +2518,8 @@ static Vec3f D_i5_801B8D30 = { 47.0f, 0.0f, 0.0f }; static Vec3f D_i5_801B8D3C = { 158.0f, 4.0f, 0.0f }; static Vec3f D_i5_801B8D48 = { 0.0f, 0.0f, 60.0f }; -void Titania_8019002C(s32 limbIndex, Vec3f* rot, void* data) { - Boss* boss = (Boss*) data; +void Titania_8019002C(s32 limbIndex, Vec3f* rot, void* thisx) { + TiGoras* this = (TiGoras*) thisx; s32 i; s32 j; s32* var_s6; @@ -2478,7 +2534,7 @@ void Titania_8019002C(s32 limbIndex, Vec3f* rot, void* data) { var_s6 = D_i5_801B8C24[i]; temp_s3 = var_s6[2]; if (limbIndex == var_s6[0]) { - var_s0 = &D_TI_801B83A8[D_i5_801B8CF4[D_i5_801BBEF0[25]] * 6 + var_s6[3] * 6 + 1]; + var_s0 = &aTiGorasHitbox[D_i5_801B8CF4[D_i5_801BBEF0[25]] * 6 + var_s6[3] * 6 + 1]; temp = var_s6[1]; for (j = 0; j < temp_s3; j++) { @@ -2496,6 +2552,7 @@ void Titania_8019002C(s32 limbIndex, Vec3f* rot, void* data) { } } } + if (limbIndex == 7) { Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 180.0f, 36.0f, 0.0f, MTXF_APPLY); @@ -2516,11 +2573,11 @@ void Titania_8019002C(s32 limbIndex, Vec3f* rot, void* data) { gSPDisplayList(gMasterDisp++, D_1024AC0); RCP_SetupDL(&gMasterDisp, SETUPDL_30); Matrix_Pop(&gGfxMatrix); - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &boss->fwork[29]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &this->fwork[29]); } } -bool Titania_801903A0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Titania_801903A0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { f32 sp24; s32 sp20; @@ -2533,6 +2590,7 @@ bool Titania_801903A0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_RotateY(gCalcMatrix, D_i5_801BBEF4[56] * M_DTOR, MTXF_APPLY); } } + if (D_i5_801BBEF0[25] == 1) { sp20 = D_i5_801BBEF0[33] % 2U; if (D_i5_801BBEF0[33] != 0) { @@ -2546,46 +2604,55 @@ bool Titania_801903A0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* rot->z += SIN_DEG((D_i5_801BBEF0[34] / (f32) D_i5_801BBEF0[36]) * 360.0f) * sp24; } } + Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, rot->y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); Matrix_Mult(gGfxMatrix, gCalcMatrix, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + switch (limbIndex) { case 1: case 2: RCP_SetupDL(&gMasterDisp, SETUPDL_30); + if ((sp20 % 2) != 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } else { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); } + if (*dList != NULL) { gSPDisplayList(gMasterDisp++, *dList); } break; + case 3: case 4: case 5: case 6: RCP_SetupDL(&gMasterDisp, SETUPDL_61); + if ((sp20 % 2) != 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } else { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); } + gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); + if (*dList != NULL) { gSPDisplayList(gMasterDisp++, *dList); } + RCP_SetupDL(&gMasterDisp, SETUPDL_29); break; } return true; } -void Titania_8019081C(s32 limbIndex, Vec3f* rot, void* data) { +void Titania_8019081C(s32 limbIndex, Vec3f* rot, void* thisx) { s32 i; s32 j; f32* var_s0; @@ -2597,13 +2664,15 @@ void Titania_8019081C(s32 limbIndex, Vec3f* rot, void* data) { for (i = 0; i < 2; i++) { temp_s3 = D_i5_801B8CD4[i][2]; if (limbIndex == D_i5_801B8CD4[i][0]) { - var_s0 = &D_TI_801B83A8[D_i5_801B8CF4[D_i5_801BBEF0[25]] * 6 + D_i5_801B8CD4[i][3] * 6 + 1]; + var_s0 = &aTiGorasHitbox[D_i5_801B8CF4[D_i5_801BBEF0[25]] * 6 + D_i5_801B8CD4[i][3] * 6 + 1]; temp = D_i5_801B8CD4[i][1]; for (j = 0; j < temp_s3; j++) { sp5C.x = D_i5_801B8C64[temp + j][0]; sp5C.y = D_i5_801B8C64[temp + j][1]; sp5C.z = D_i5_801B8C64[temp + j][2]; + Matrix_MultVec3f(gCalcMatrix, &sp5C, &sp50); + var_s0[0] = sp50.z; var_s0[1] = D_i5_801B8C64[temp + j][3]; var_s0[2] = sp50.y; @@ -2614,13 +2683,14 @@ void Titania_8019081C(s32 limbIndex, Vec3f* rot, void* data) { } } } + if (limbIndex == 1) { // FAKE if (1) {} switch ((s32) D_i5_801BBEF0[25]) { case 0: Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D00, (Vec3f*) &D_i5_801BBEF4[68]); - return; + break; case 1: Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D00, (Vec3f*) &D_i5_801BBEF4[71]); break; @@ -2632,19 +2702,19 @@ void Titania_8019081C(s32 limbIndex, Vec3f* rot, void* data) { // float regalloc starting with the spherical angle calculation // https://decomp.me/scratch/9ewO1 -bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { Vec3f spCC; Vec3f spC0; // f32 spBC; // f32 padB8; Vec3f padB4; // Vec3f? Seems kind of wasteful s32 i; - Boss* boss = (Boss*) data; + TiGoras* this = (TiGoras*) thisx; s32 spA8; s32 temp_v1; s32 spA0; f32 sp9C; - s32 ret; + s32 ret = false; Vec3f sp8C; s32 sp88; Vec3f sp7C; @@ -2656,9 +2726,8 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Vec3f sp5C; // Vec3f? s32 sp58; - ret = false; if (limbIndex == 0) { - rot->y += boss->fwork[0x31]; + rot->y += this->fwork[0x31]; } for (i = 0; i < ARRAY_COUNT(D_i5_801B7770); i++) { @@ -2672,11 +2741,13 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* case 9: rot->z += D_i5_801BBEF4[8]; break; + case 22: case 23: case 24: rot->z += D_i5_801BBEF4[6]; break; + case 25: case 26: if (D_i5_801BBEF4[2] != 0.0f) { @@ -2687,31 +2758,36 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* } } break; + case 89: rot->x += D_i5_801BBEF4[13]; break; } + sp88 = 0; + switch (limbIndex) { case 55: - if (boss->fwork[0x28] != 0.0f) { + if (this->fwork[0x28] != 0.0f) { sp88 = 1; } break; case 61: - if (boss->fwork[39] != 0.0f) { + if (this->fwork[39] != 0.0f) { sp88 = 2; } break; case 71: - if (boss->fwork[38] != 0.0f) { + if (this->fwork[38] != 0.0f) { sp88 = 3; } break; } + if (sp88 != 0) { Matrix_GetYRPAngles(gCalcMatrix, &spCC); } + sp9C = 0.0f; temp_v1 = D_i5_801B7770[i][3] - 1; spA0 = (temp_v1 != -1) && (D_i5_801BD668[temp_v1] != 0); @@ -2724,25 +2800,31 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* switch (spA8) { case 0: break; + case 1: spC0.x = 0.0f; spC0.z = spC0.y = sp9C; break; + case 2: if (sp88 == 0) { Matrix_RotateZ(gCalcMatrix, sp9C * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, sp9C * M_DTOR, MTXF_APPLY); } break; + case 3: rot->y += sp9C; break; + case 4: padB4.z = sp9C; break; } } + Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); + if (sp88 != 0) { Matrix_RotateZ(gCalcMatrix, D_i5_801BBF00[i].unk_20 * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, D_i5_801BBF00[i].unk_1C * M_DTOR, MTXF_APPLY); @@ -2752,6 +2834,7 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* rot->y += D_i5_801BBF00[i].unk_1C; rot->x += D_i5_801BBF00[i].unk_18; } + if (sp88 != 0) { Matrix_Push(&gCalcMatrix); Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); @@ -2760,27 +2843,30 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_GetYRPAngles(gCalcMatrix, &sp8C); Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, &sp7C); - if ((limbIndex == 71) && (boss->fwork[0x2E] != 0.0f)) { - sp70.x = (gPlayer[0].pos.x - (boss->obj.pos.x + sp7C.x)) * boss->fwork[0x2E]; - sp70.y = (gPlayer[0].pos.y + 50.0f) - (boss->obj.pos.y + sp7C.y); - sp70.z = (gPlayer[0].trueZpos - (boss->obj.pos.z + sp7C.z)) * boss->fwork[0x2E]; + if ((limbIndex == 71) && (this->fwork[0x2E] != 0.0f)) { + sp70.x = (gPlayer[0].pos.x - (this->obj.pos.x + sp7C.x)) * this->fwork[0x2E]; + sp70.y = (gPlayer[0].pos.y + 50.0f) - (this->obj.pos.y + sp7C.y); + sp70.z = (gPlayer[0].trueZpos - (this->obj.pos.z + sp7C.z)) * this->fwork[0x2E]; + // Regalloc starts here sp5C.y = Math_Atan2F(sp70.x, sp70.z) * M_RTOD; sp5C.x = -Math_Atan2F(sp70.y, sqrtf(SQ(sp70.x) + SQ(sp70.z))) * M_RTOD; } else { - sp70.x = gPlayer[0].pos.x - (boss->obj.pos.x + sp7C.x); - sp70.y = (gPlayer[0].pos.y + 30.0f) - (boss->obj.pos.y + sp7C.y); - sp70.z = gPlayer[0].trueZpos - (boss->obj.pos.z + sp7C.z); + sp70.x = gPlayer[0].pos.x - (this->obj.pos.x + sp7C.x); + sp70.y = (gPlayer[0].pos.y + 30.0f) - (this->obj.pos.y + sp7C.y); + sp70.z = gPlayer[0].trueZpos - (this->obj.pos.z + sp7C.z); sp5C.y = Math_Atan2F(sp70.x, sp70.z) * M_RTOD; sp5C.x = -Math_Atan2F(sp70.y, sqrtf(SQ(sp70.x) + SQ(sp70.z))) * M_RTOD; } Matrix_Pop(&gCalcMatrix); + Matrix_RotateZ(gCalcMatrix, -(spCC.z * M_DTOR), MTXF_APPLY); Matrix_RotateX(gCalcMatrix, -(spCC.x * M_DTOR), MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -(spCC.y * M_DTOR), MTXF_APPLY); + switch (limbIndex) { case 55: if (D_i5_801BBEF0[15] == 1) { @@ -2791,13 +2877,14 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* } D_i5_801BBEF4[29] = 0.0f; D_i5_801BBEF4[30] = sp5C.y - 90.0f; - D_i5_801BBEF4[31] = -sp5C.x; sp8C.x = 0.0f; - Math_SmoothStepToAngle(&sp8C.y, D_i5_801BBEF4[21], boss->fwork[0x28], 360.0f, 0.01f); - Math_SmoothStepToAngle(&sp8C.z, D_i5_801BBEF4[22], boss->fwork[0x28], 360.0f, 0.01f); + + Math_SmoothStepToAngle(&sp8C.y, D_i5_801BBEF4[21], this->fwork[40], 360.0f, 0.01f); + Math_SmoothStepToAngle(&sp8C.z, D_i5_801BBEF4[22], this->fwork[40], 360.0f, 0.01f); break; + case 61: if (D_i5_801BBEF0[14] == 1) { D_i5_801BBEF4[17] = 0.0f; @@ -2808,10 +2895,13 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* D_i5_801BBEF4[26] = 0.0f; D_i5_801BBEF4[27] = sp5C.y - 90.0f; D_i5_801BBEF4[28] = -sp5C.x; + sp8C.x = 0.0f; - Math_SmoothStepToAngle(&sp8C.y, D_i5_801BBEF4[18], boss->fwork[39], 360.0f, 0.01f); - Math_SmoothStepToAngle(&sp8C.z, D_i5_801BBEF4[19], boss->fwork[39], 360.0f, 0.01f); + + Math_SmoothStepToAngle(&sp8C.y, D_i5_801BBEF4[18], this->fwork[39], 360.0f, 0.01f); + Math_SmoothStepToAngle(&sp8C.z, D_i5_801BBEF4[19], this->fwork[39], 360.0f, 0.01f); break; + case 71: if (D_i5_801BBEF0[13] == 1) { D_i5_801BBEF4[14] = 0.0f; @@ -2819,8 +2909,10 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* D_i5_801BBEF4[16] = sp5C.x + 180.0f; D_i5_801BBEF0[13] = 0; } + D_i5_801BBEF4[24] = sp5C.y + 90.0f; D_i5_801BBEF4[25] = sp5C.x + 180.0f; + while (D_i5_801BBEF4[24] >= 270.0f) { D_i5_801BBEF4[24] -= 360.0f; } @@ -2835,9 +2927,11 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* if (D_i5_801BBEF4[24] > 225.0f) { D_i5_801BBEF4[24] = 225.0f; } + sp8C.x = 0.0f; - Math_SmoothStepToAngle(&sp8C.y, D_i5_801BBEF4[15], boss->fwork[38], 360.0f, 0.01f); - Math_SmoothStepToAngle(&sp8C.z, D_i5_801BBEF4[16], boss->fwork[38], 360.0f, 0.01f); + + Math_SmoothStepToAngle(&sp8C.y, D_i5_801BBEF4[15], this->fwork[38], 360.0f, 0.01f); + Math_SmoothStepToAngle(&sp8C.z, D_i5_801BBEF4[16], this->fwork[38], 360.0f, 0.01f); break; } Matrix_RotateY(gCalcMatrix, (sp8C.y + sp9C) * M_DTOR, MTXF_APPLY); @@ -2848,7 +2942,9 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_RotateY(gCalcMatrix, rot->y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); } + sp6C = 0; + if ((limbIndex == 51) || (limbIndex == 66)) { if (D_i5_801BBEF0[1] != 0) { sp68 = 1.1f - (fabsf(__sinf(((f32) D_i5_801BBEF0[0] / D_i5_801BBEF0[1]) * 360.0f * M_DTOR))) * @@ -2858,6 +2954,7 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* sp6C = 1; } } + if (spA0 != 0) { switch (spA8) { case 1: @@ -2872,43 +2969,55 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* break; } } + Matrix_Mult(gGfxMatrix, gCalcMatrix, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + sp58 = 0; + switch (D_i5_801B7770[i][1]) { case 0: break; + case 1: RCP_SetupDL(&gMasterDisp, SETUPDL_61); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); break; + case 2: RCP_SetupDL(&gMasterDisp, SETUPDL_58); gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); break; + case 3: RCP_SetupDL(&gMasterDisp, SETUPDL_34); break; } - if ((boss->swork[22] & 1) || - ((D_i5_801B7770[i][2] != 0) && (boss->swork[D_i5_801B7770[i][2] + 4] & 1))) { + + if ((this->swork[22] & 1) || + ((D_i5_801B7770[i][2] != 0) && (this->swork[D_i5_801B7770[i][2] + 4] & 1))) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); sp58 = 1; } + if (*dList != NULL) { gSPDisplayList(gMasterDisp++, *dList); } + if (D_i5_801B7770[i][1] > 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_30); } else { gDPPipeSync(gMasterDisp++); } + if (sp58 == 1) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); } + if (sp6C != 0) { Matrix_Pop(&gCalcMatrix); } + if ((spA0 != 0) && ((spA8 == 1) || (spA8 == 4))) { Matrix_Pop(&gCalcMatrix); } @@ -2918,7 +3027,6 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* break; } } - return ret; } #else @@ -2926,14 +3034,14 @@ bool Titania_80190A08(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* bool Titania_80190A08(s32, Gfx**, Vec3f*, Vec3f*, void*); #endif -void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* data) { - Boss* boss = (Boss*) data; +void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* thisx) { + TiGoras* this = (TiGoras*) thisx; f32* var_s0_2; Vec3f spB4; Vec3f spA8; s32 pad[2]; f32* var_s1; - UnkStruct_i5_801BBF00* var_s0; + UnkStruct_i5_801BBF00* var_s0 = D_i5_801BBF00; s32 temp_s4; s16 temp_s6; s32 i; @@ -2941,7 +3049,6 @@ void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* data) { s32 cond; Vec3f sp78; - var_s0 = D_i5_801BBF00; for (i = 0; i < ARRAY_COUNTU(D_i5_801B7770); i++, var_s0++) { if ((var_s0->unk_26 & 1) && (limbIndex == D_i5_801B7770[i][0])) { Matrix_MultVec3f(gCalcMatrix, &D_tank_800C9F2C, &var_s0->unk_00.pos); @@ -2951,8 +3058,8 @@ void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* data) { } } - var_s0_2 = D_TI_801B83A8; - *var_s0_2++ = 86.0f; + var_s0_2 = aTiGorasHitbox; + *(var_s0_2++) = 86.0f; for (i = 0; i < ARRAY_COUNTU(D_i5_801B7FD0); i++) { temp_s4 = D_i5_801B7FD0[i][2]; @@ -2960,7 +3067,7 @@ void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* data) { temp_s6 = D_i5_801B7FD0[i][1]; cond = (D_i5_801BBF00[D_i5_801B7FD0[i][3]].unk_26 & 0xC); - cond = !(cond || (i >= 20 && i < 23 && boss->state == 10)); + cond = !(cond || ((i >= 20) && (i < 23) && (this->state == 10))); for (j = 0; j < temp_s4; j++) { if (cond && (D_i5_801BBEF0[8] == 0 || i != 23 || j != 2)) { @@ -2992,9 +3099,10 @@ void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* data) { } var_s0_2 += temp_s4 * 6; } + switch (limbIndex) { case 3: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D30, (Vec3f*) &boss->fwork[17]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D30, (Vec3f*) &this->fwork[17]); break; case 10: Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D00, (Vec3f*) &D_i5_801BBEF4[68]); @@ -3003,12 +3111,13 @@ void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* data) { Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D00, (Vec3f*) &D_i5_801BBEF4[71]); break; case 71: - Matrix_GetYRPAngles(gCalcMatrix, (Vec3f*) &boss->fwork[20]); + Matrix_GetYRPAngles(gCalcMatrix, (Vec3f*) &this->fwork[20]); break; case 61: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &boss->fwork[0x17]); - Matrix_GetYRPAngles(gCalcMatrix, (Vec3f*) &boss->fwork[0x1A]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &this->fwork[0x17]); + Matrix_GetYRPAngles(gCalcMatrix, (Vec3f*) &this->fwork[0x1A]); break; + case 55: if (D_i5_801BBEF0[8] == 0) { Matrix_Push(&gGfxMatrix); @@ -3030,24 +3139,25 @@ void Titania_80191AE8(s32 limbIndex, Vec3f* rot, void* data) { gSPDisplayList(gMasterDisp++, D_1024AC0); RCP_SetupDL(&gMasterDisp, SETUPDL_30); Matrix_Pop(&gGfxMatrix); - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &boss->fwork[29]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &this->fwork[29]); break; } - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &boss->fwork[29]); - Matrix_GetYRPAngles(gCalcMatrix, (Vec3f*) &boss->fwork[32]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D3C, (Vec3f*) &this->fwork[29]); + Matrix_GetYRPAngles(gCalcMatrix, (Vec3f*) &this->fwork[32]); break; + case 34: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D24, (Vec3f*) &boss->fwork[5]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D24, (Vec3f*) &this->fwork[5]); break; case 37: - Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D24, (Vec3f*) &boss->fwork[8]); + Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D24, (Vec3f*) &this->fwork[8]); break; default: break; } } -void Titania_80192118(Boss* boss) { +void Titania_80192118(TiGoras* this) { Vec3f sp54; Effect* effect; f32 temp_ft2; @@ -3071,7 +3181,7 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[29]--; } - if ((boss->state == 3) || (boss->state == 4)) { + if ((this->state == 3) || (this->state == 4)) { Math_SmoothStepToF(&D_i5_801BBEF4[36], D_i5_801BBEF4[51], 0.5f, 10.0f, 0.01f); Math_SmoothStepToF(&D_i5_801BBEF4[37], D_i5_801BBEF4[52], 0.5f, 10.0f, 0.01f); Math_SmoothStepToF(&D_i5_801BBEF4[38], D_i5_801BBEF4[53], 0.5f, 10.0f, 0.01f); @@ -3085,7 +3195,8 @@ void Titania_80192118(Boss* boss) { Math_SmoothStepToAngle(&D_i5_801BBEF4[54], D_i5_801BBEF4[55], 0.5f, 3.0f, 0.01f); Math_SmoothStepToAngle(&D_i5_801BBEF4[56], D_i5_801BBEF4[63], 0.5f, 3.0f, 0.01f); } - switch (boss->state) { + + switch (this->state) { case 0: D_i5_801BBEF4[36] = D_i5_801BBEF4[51] = 120.0f; D_i5_801BBEF4[37] = D_i5_801BBEF4[52] = -250.0f; @@ -3096,12 +3207,12 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF4[42] = D_i5_801BBEF4[48] = -40.0f; D_i5_801BBEF4[43] = D_i5_801BBEF4[49] = -80.0f; D_i5_801BBEF4[44] = D_i5_801BBEF4[50] = -40.0f; - D_i5_801BBEF4[57] = D_i5_801BBEF4[36] + boss->obj.pos.x; - D_i5_801BBEF4[58] = D_i5_801BBEF4[38] + boss->obj.pos.z; - D_i5_801BBEF4[59] = D_i5_801BBEF4[39] + boss->obj.pos.x; - D_i5_801BBEF4[60] = D_i5_801BBEF4[41] + boss->obj.pos.z; - D_i5_801BBEF4[61] = D_i5_801BBEF4[42] + boss->obj.pos.x; - D_i5_801BBEF4[62] = D_i5_801BBEF4[44] + boss->obj.pos.z; + D_i5_801BBEF4[57] = D_i5_801BBEF4[36] + this->obj.pos.x; + D_i5_801BBEF4[58] = D_i5_801BBEF4[38] + this->obj.pos.z; + D_i5_801BBEF4[59] = D_i5_801BBEF4[39] + this->obj.pos.x; + D_i5_801BBEF4[60] = D_i5_801BBEF4[41] + this->obj.pos.z; + D_i5_801BBEF4[61] = D_i5_801BBEF4[42] + this->obj.pos.x; + D_i5_801BBEF4[62] = D_i5_801BBEF4[44] + this->obj.pos.z; D_i5_801BBEF4[54] = D_i5_801BBEF4[55] = 70.0f; D_i5_801BBEF4[56] = D_i5_801BBEF4[63] = -80.0f; D_i5_801BBEF4[64] = D_i5_801BBEF4[65] = 0.0f; @@ -3110,8 +3221,9 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[22] = 0; D_i5_801BBEF0[23] = 0; D_i5_801BBEF0[24] = 0; - boss->swork[1] = 1; + this->swork[1] = 1; break; + case 1: Animation_GetFrameData(&D_TI_A0002BC, 0, &D_i5_801BC978[0]); Animation_GetFrameData(&D_TI_A0002BC, 0, &D_i5_801BCDC8[0]); @@ -3119,36 +3231,36 @@ void Titania_80192118(Boss* boss) { Animation_GetFrameData(&D_TI_A0002BC, 0, &D_i5_801BCDC8[8]); Animation_GetFrameData(&D_TI_A000934, 0, &D_i5_801BC978[16]); Animation_GetFrameData(&D_TI_A000934, 0, &D_i5_801BCDC8[16]); - if ((gPlayer[0].trueZpos - boss->obj.pos.z) <= 450.0f) { + + if ((gPlayer[0].trueZpos - this->obj.pos.z) <= 450.0f) { gPlayer[0].unk_19C = -1; gPlayer[0].unk_000 = 0.0f; - boss->swork[1] = 2; - boss->swork[31] = 0; - boss->swork[30]++; + this->swork[1] = 2; + this->swork[31] = 0; + this->swork[30]++; } break; - case 2: - if (boss->dmgType == DMG_BEAM) { - switch (D_i5_801B8C0C[boss->dmgPart]) { + case 2: + if (this->dmgType == DMG_BEAM) { + switch (D_i5_801B8C0C[this->dmgPart]) { case 0: D_i5_801BBEF0[30] = 15; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); break; case 1: D_i5_801BBEF0[33] = 15; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); break; case 2: D_i5_801BBEF0[34] = 15; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); break; } } - if (boss->dmgType == DMG_BOMB) { - - if ((boss->dmgPart == 5) || (boss->dmgPart == 7) || (boss->dmgPart == 14)) { - switch (D_i5_801B8C0C[boss->dmgPart]) { + if (this->dmgType == DMG_BOMB) { + if ((this->dmgPart == 5) || (this->dmgPart == 7) || (this->dmgPart == 14)) { + switch (D_i5_801B8C0C[this->dmgPart]) { case 0: D_i5_801BBEF0[30] = 15; break; @@ -3161,10 +3273,12 @@ void Titania_80192118(Boss* boss) { } } } - if (boss->dmgType != DMG_NONE) { + + if (this->dmgType != DMG_NONE) { D_i5_801BBEF0[48]++; } - if ((D_i5_801BBEF0[48] >= 3) || (boss->swork[31] >= 90)) { + + if ((D_i5_801BBEF0[48] >= 3) || (this->swork[31] >= 90)) { D_i5_801BBEF4[45] = -240.0f; D_i5_801BBEF4[46] = -40.0f; D_i5_801BBEF4[47] = -200.0f; @@ -3176,7 +3290,7 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF4[53] = -450.0f; D_i5_801BBEF4[55] = 0.0f; D_i5_801BBEF4[63] = 0.0f; - boss->vel.z = gPlayer[0].vel.z; + this->vel.z = gPlayer[0].vel.z; D_i5_801BBEF0[27] = 100; D_i5_801BBEF0[29] = 30; D_i5_801BBEF0[31] = 5; @@ -3186,75 +3300,82 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[36] = 5; D_i5_801BBEF0[38] = 2; gPlayer[0].unk_19C = 0; - boss->swork[1] = 3; + this->swork[1] = 3; AUDIO_PLAY_BGM(NA_BGM_BOSS_TI); } break; + case 3: - if (D_i5_801BBEF0[22] == 37) { - sp54.x = (boss->obj.pos.x + D_i5_801BBEF4[39]) + D_i5_801BBEF4[68]; + sp54.x = (this->obj.pos.x + D_i5_801BBEF4[39]) + D_i5_801BBEF4[68]; sp54.y = 0.0f; - sp54.z = (boss->obj.pos.z + D_i5_801BBEF4[41]) + D_i5_801BBEF4[70]; + sp54.z = (this->obj.pos.z + D_i5_801BBEF4[41]) + D_i5_801BBEF4[70]; Effect_SpawnTimedSfxAtPos(&sp54, NA_SE_EN_BOSS_ATTACK); - boss->swork[39] = 5; + this->swork[39] = 5; gCameraShake = 5; } + if (D_i5_801BBEF0[23] == 37) { - sp54.x = (boss->obj.pos.x + D_i5_801BBEF4[42]) + D_i5_801BBEF4[71]; + sp54.x = (this->obj.pos.x + D_i5_801BBEF4[42]) + D_i5_801BBEF4[71]; sp54.y = 0.0f; - sp54.z = (boss->obj.pos.z + D_i5_801BBEF4[44]) + D_i5_801BBEF4[73]; + sp54.z = (this->obj.pos.z + D_i5_801BBEF4[44]) + D_i5_801BBEF4[73]; Effect_SpawnTimedSfxAtPos(&sp54, NA_SE_EN_BOSS_ATTACK); - boss->swork[39] = 5; + this->swork[39] = 5; gCameraShake = 5; } - if (boss->dmgType == DMG_BEAM) { - switch (D_i5_801B8C0C[boss->dmgPart]) { + + if (this->dmgType == DMG_BEAM) { + switch (D_i5_801B8C0C[this->dmgPart]) { + case 0: + D_i5_801BBEF0[30] = 15; + D_i5_801BBEF0[27] -= this->damage; + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + break; + + case 1: + D_i5_801BBEF0[33] = 15; + D_i5_801BBEF0[27] -= this->damage; + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + break; + + case 2: + D_i5_801BBEF0[34] = 15; + D_i5_801BBEF0[27] -= this->damage; + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); + break; + } + this->dmgType = DMG_NONE; + } + + if ((this->dmgType == DMG_BOMB) && + ((this->dmgPart == 5) || (this->dmgPart == 7) || (this->dmgPart == 14))) { + this->dmgType = DMG_NONE; + + switch (D_i5_801B8C0C[this->dmgPart]) { case 0: D_i5_801BBEF0[30] = 15; - D_i5_801BBEF0[27] -= boss->damage; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); + D_i5_801BBEF0[27] -= this->damage; break; + case 1: D_i5_801BBEF0[33] = 15; - D_i5_801BBEF0[27] -= boss->damage; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); + D_i5_801BBEF0[27] -= this->damage; break; + case 2: D_i5_801BBEF0[34] = 15; - D_i5_801BBEF0[27] -= boss->damage; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); - break; - } - boss->dmgType = DMG_NONE; - } - if ((boss->dmgType == DMG_BOMB) && - ((boss->dmgPart == 5) || (boss->dmgPart == 7) || (boss->dmgPart == 14))) { - boss->dmgType = DMG_NONE; - switch (D_i5_801B8C0C[boss->dmgPart]) { - case 0: - D_i5_801BBEF0[30] = 15; - - D_i5_801BBEF0[27] -= boss->damage; - break; - case 1: - D_i5_801BBEF0[33] = 15; - - D_i5_801BBEF0[27] -= boss->damage; - break; - case 2: - D_i5_801BBEF0[34] = 15; - - D_i5_801BBEF0[27] -= boss->damage; + D_i5_801BBEF0[27] -= this->damage; break; } } - Math_SmoothStepToF(&boss->vel.z, gPlayer[0].vel.z, 0.7f, 1.0f, 0.01f); - Math_SmoothStepToF(&boss->obj.pos.x, gPlayer[0].pos.x, 0.1f, 6.0f, 0.01f); - Math_SmoothStepToF(&boss->obj.pos.z, gPlayer[0].trueZpos - 450.0f, 0.1f, 1.0f, 0.01f); + + Math_SmoothStepToF(&this->vel.z, gPlayer[0].vel.z, 0.7f, 1.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, gPlayer[0].pos.x, 0.1f, 6.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].trueZpos - 450.0f, 0.1f, 1.0f, 0.01f); + Animation_GetFrameData(&D_TI_A000D50, D_i5_801BBEF0[24] >> 1, &D_i5_801BC978[16]); switch (D_i5_801BBEF0[39]) { @@ -3277,6 +3398,7 @@ void Titania_80192118(Boss* boss) { Math_SmoothStepToVec3fArray(&D_i5_801BC978[0], &D_i5_801BCDC8[0], 1, 8, 0.5f, 360.0f, 0.01f); Math_SmoothStepToVec3fArray(&D_i5_801BC978[8], &D_i5_801BCDC8[8], 1, 8, 0.5f, 360.0f, 0.01f); Math_SmoothStepToVec3fArray(&D_i5_801BC978[16], &D_i5_801BCDC8[16], 1, 13, 0.5f, 5.0f, 0.01f); + D_i5_801BBEF0[24]++; D_i5_801BBEF0[22]++; D_i5_801BBEF0[23]++; @@ -3287,13 +3409,12 @@ void Titania_80192118(Boss* boss) { switch (D_i5_801BBEF0[39]) { case 0: - if (D_i5_801BBEF0[22] >= (Animation_GetFrameCount(&D_TI_A000858) * 2)) { D_i5_801BBEF0[22] = 0; } break; - case 1: + case 1: if (D_i5_801BBEF0[22] >= (Animation_GetFrameCount(&D_TI_A00047C) * 2)) { D_i5_801BBEF0[22] = 0; } @@ -3312,7 +3433,8 @@ void Titania_80192118(Boss* boss) { } break; } - D_i5_801BBEF4[51] = SIN_DEG((((s32) (boss->swork[38] % 128U) * 360.0f) / 128)) * 40.0f; + + D_i5_801BBEF4[51] = SIN_DEG((((s32) (this->swork[38] % 128U) * 360.0f) / 128)) * 40.0f; switch (D_i5_801BBEF0[28]) { case 0: @@ -3320,6 +3442,7 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[28] = 1; } break; + case 1: if (D_i5_801BBEF0[22] == 0) { D_i5_801BBEF0[39] = 1; @@ -3329,6 +3452,7 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[28] = 2; } break; + case 2: if (D_i5_801BBEF0[22] == 0) { D_i5_801BBEF0[39] = 0; @@ -3338,6 +3462,7 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[28] = 3; } break; + case 3: if (D_i5_801BBEF0[23] == 0) { D_i5_801BBEF0[40] = 1; @@ -3347,6 +3472,7 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[28] = 4; } break; + case 4: if (D_i5_801BBEF0[23] == 0) { D_i5_801BBEF0[40] = 0; @@ -3356,9 +3482,11 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF0[28] = 1; } break; + default: break; } + if (D_i5_801BBEF0[27] <= 0) { D_i5_801BBEF4[45] = -90.0f; D_i5_801BBEF4[46] = -70.0f; @@ -3371,65 +3499,74 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF4[53] = -350.0f; D_i5_801BBEF4[63] = 0.0f; D_i5_801BBEF4[55] = D_i5_801BBEF4[63]; - AUDIO_PLAY_SFX(NA_SE_EN_APPEAR_SAND, boss->sfxSource, 4); - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, boss->sfxSource, 4); - boss->swork[1] = 4; - boss->timer_050 = 120; + + AUDIO_PLAY_SFX(NA_SE_EN_APPEAR_SAND, this->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, this->sfxSource, 4); + + this->swork[1] = 4; + this->timer_050 = 120; + D_i5_801BBEF0[22] = 0; D_i5_801BBEF0[23] = 0; D_i5_801BBEF0[24] = 0; - boss->swork[31] = 0; - boss->fwork[0] = 0.0f; - boss->swork[30]++; + + this->swork[31] = 0; + this->fwork[0] = 0.0f; + this->swork[30]++; } break; + case 4: - boss->vel.z = gPlayer[0].vel.z; + this->vel.z = gPlayer[0].vel.z; + Animation_GetFrameData(&D_TI_8000D80, D_i5_801BBEF0[22] >> 1, &D_i5_801BC978[0]); Animation_GetFrameData(&D_TI_8000D80, D_i5_801BBEF0[23] >> 1, &D_i5_801BC978[8]); Animation_GetFrameData(&D_TI_8000708, D_i5_801BBEF0[24] >> 1, &D_i5_801BC978[16]); - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 0.05f, 0.05f, 0.01f); - Math_SmoothStepToVec3fArray(&D_i5_801BC978[0], &D_i5_801BCDC8[0], 1, 8, boss->fwork[0], 360.0f, 0.01f); - Math_SmoothStepToVec3fArray(&D_i5_801BC978[8], &D_i5_801BCDC8[8], 1, 8, boss->fwork[0], 360.0f, 0.01f); - Math_SmoothStepToVec3fArray(&D_i5_801BC978[16], &D_i5_801BCDC8[16], 1, 13, boss->fwork[0], 360.0f, 0.01f); - if (boss->timer_050 <= 120) { + + Math_SmoothStepToF(&this->fwork[0], 0.5f, 0.05f, 0.05f, 0.01f); + + Math_SmoothStepToVec3fArray(&D_i5_801BC978[0], &D_i5_801BCDC8[0], 1, 8, this->fwork[0], 360.0f, 0.01f); + Math_SmoothStepToVec3fArray(&D_i5_801BC978[8], &D_i5_801BCDC8[8], 1, 8, this->fwork[0], 360.0f, 0.01f); + Math_SmoothStepToVec3fArray(&D_i5_801BC978[16], &D_i5_801BCDC8[16], 1, 13, this->fwork[0], 360.0f, 0.01f); + + if (this->timer_050 <= 120) { if (D_i5_801BBEF0[22] < ((Animation_GetFrameCount(&D_TI_8000D80) * 2) - 1)) { D_i5_801BBEF0[22]++; } } - if (boss->timer_050 < 108) { + if (this->timer_050 < 108) { if (D_i5_801BBEF0[23] < ((Animation_GetFrameCount(&D_TI_8000D80) * 2) - 1)) { D_i5_801BBEF0[23]++; } } - if (boss->timer_050 <= 120) { + if (this->timer_050 <= 120) { if (D_i5_801BBEF0[24] < ((Animation_GetFrameCount(&D_TI_8000708) * 2) - 1)) { D_i5_801BBEF0[24]++; } } - if (boss->timer_050 == 0) { - boss->swork[1] = 5; - boss->timer_050 = 90; + if (this->timer_050 == 0) { + this->swork[1] = 5; + this->timer_050 = 90; } break; } - if ((boss->state >= 3) && (boss->state < 5)) { - if ((boss->state != 4) || (boss->swork[31] < 100)) { - temp_ft2 = boss->obj.pos.x + D_i5_801BBEF4[36]; - temp_ft4 = boss->obj.pos.z + D_i5_801BBEF4[38]; + + if ((this->state >= 3) && (this->state < 5)) { + if ((this->state != 4) || (this->swork[31] < 100)) { + temp_ft2 = this->obj.pos.x + D_i5_801BBEF4[36]; + temp_ft4 = this->obj.pos.z + D_i5_801BBEF4[38]; temp_fa1 = D_i5_801BBEF4[57] - temp_ft2; temp_fv1 = D_i5_801BBEF4[58] - temp_ft4; if ((s32) sqrtf(SQ(temp_fa1) + SQ(temp_fv1)) > 50.0f) { - - effect = func_effect_8007783C(OBJ_EFFECT_394); + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->obj.status = OBJ_ACTIVE; effect->unk_7A = 10; effect->unk_78 = effect->unk_7A; effect->obj.pos.x = temp_ft2; - effect->obj.pos.y = boss->obj.pos.y; + effect->obj.pos.y = this->obj.pos.y; effect->obj.pos.z = temp_ft4; effect->obj.rot.y = (Math_Atan2F(-temp_fv1, temp_fa1) * M_RTOD) - 90.0f; @@ -3440,27 +3577,27 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF4[57] = temp_ft2; D_i5_801BBEF4[58] = temp_ft4; } - if ((boss->swork[38] & 3) == 0) { - func_effect_8007A900(temp_ft2, boss->obj.pos.y, temp_ft4, 10.0f, 192, 16, 0); + + if ((this->swork[38] & 3) == 0) { + Effect_Effect359_Spawn(temp_ft2, this->obj.pos.y, temp_ft4, 10.0f, 192, 16, 0); } } - if ((boss->state != 4) || (boss->swork[31] < 90)) { - temp_ft2 = boss->obj.pos.x + D_i5_801BBEF4[39]; - temp_ft4 = boss->obj.pos.z + D_i5_801BBEF4[41]; + + if ((this->state != 4) || (this->swork[31] < 90)) { + temp_ft2 = this->obj.pos.x + D_i5_801BBEF4[39]; + temp_ft4 = this->obj.pos.z + D_i5_801BBEF4[41]; temp_fa1 = D_i5_801BBEF4[59] - temp_ft2; temp_fv1 = D_i5_801BBEF4[60] - temp_ft4; if ((s32) sqrtf(SQ(temp_fa1) + SQ(temp_fv1)) > 50.0f) { - - effect = func_effect_8007783C(OBJ_EFFECT_394); - + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->obj.status = OBJ_ACTIVE; effect->unk_7A = 10; effect->unk_78 = effect->unk_7A; effect->obj.pos.x = temp_ft2; - effect->obj.pos.y = boss->obj.pos.y; + effect->obj.pos.y = this->obj.pos.y; effect->obj.pos.z = temp_ft4; effect->obj.rot.y = (Math_Atan2F(-temp_fv1, temp_fa1) * M_RTOD) - 90.0f; @@ -3471,27 +3608,27 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF4[59] = temp_ft2; D_i5_801BBEF4[60] = temp_ft4; } - if ((boss->swork[38] & 3) == 0) { - func_effect_8007A900(temp_ft2, boss->obj.pos.y, temp_ft4, 10.0f, 192, 16, 0); + + if ((this->swork[38] & 3) == 0) { + Effect_Effect359_Spawn(temp_ft2, this->obj.pos.y, temp_ft4, 10.0f, 192, 16, 0); } } - if ((boss->state != 4) || (boss->swork[31] < 102)) { - temp_ft2 = boss->obj.pos.x + D_i5_801BBEF4[42]; - temp_ft4 = boss->obj.pos.z + D_i5_801BBEF4[44]; + + if ((this->state != 4) || (this->swork[31] < 102)) { + temp_ft2 = this->obj.pos.x + D_i5_801BBEF4[42]; + temp_ft4 = this->obj.pos.z + D_i5_801BBEF4[44]; temp_fa1 = D_i5_801BBEF4[61] - temp_ft2; temp_fv1 = D_i5_801BBEF4[62] - temp_ft4; if ((s32) sqrtf(SQ(temp_fa1) + SQ(temp_fv1)) > 50.0f) { - - effect = func_effect_8007783C(OBJ_EFFECT_394); - + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { effect->state = 10; effect->unk_7A = 10; effect->unk_78 = effect->unk_7A; effect->obj.pos.x = temp_ft2; - effect->obj.pos.y = boss->obj.pos.y; + effect->obj.pos.y = this->obj.pos.y; effect->obj.pos.z = temp_ft4; effect->obj.rot.y = (Math_Atan2F(-temp_fv1, temp_fa1) * M_RTOD) - 90.0f; @@ -3502,110 +3639,127 @@ void Titania_80192118(Boss* boss) { D_i5_801BBEF4[61] = temp_ft2; D_i5_801BBEF4[62] = temp_ft4; } - if ((boss->swork[38] & 3) == 0) { - func_effect_8007A900(temp_ft2, boss->obj.pos.y, temp_ft4, 10.0f, 192, 16, 0); + + if ((this->swork[38] & 3) == 0) { + Effect_Effect359_Spawn(temp_ft2, this->obj.pos.y, temp_ft4, 10.0f, 192, 16, 0); } } } - boss->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } -void Titania_80193B30(Boss* boss) { - if (boss->state == boss->swork[1]) { - if (boss->swork[1] != 11) { - boss->swork[1] = 11; +void Titania_80193B30(TiGoras* this) { + if (this->state == this->swork[1]) { + if (this->swork[1] != 11) { + this->swork[1] = 11; } else { - boss->swork[1] = 9; + this->swork[1] = 9; } } - switch (boss->swork[1]) { + + switch (this->swork[1]) { case 8: - if ((boss->swork[11] <= 0) && (boss->swork[12] <= 0)) { - if (boss->swork[35] == 0) { - boss->swork[1] = 12; + if ((this->swork[11] <= 0) && (this->swork[12] <= 0)) { + if (this->swork[35] == 0) { + this->swork[1] = 12; } else { - boss->swork[1] = 11; + this->swork[1] = 11; } } break; + case 10: if (D_i5_801BBEF0[8] != 0) { - boss->swork[1] = 12; + this->swork[1] = 12; } break; - case 11: - if (boss->swork[35] == 0) { - boss->swork[1] = 8; - } - break; - } - if (boss->swork[1] != 7) { - boss->swork[36]++; - } else { - boss->swork[36] = 0; - } - if (boss->swork[36] >= 2) { - boss->swork[1] = 7; - boss->swork[36] = 0; - } - if (boss->swork[1] == 8) { - boss->swork[3] = 2; - } else { - boss->swork[3] = 1; - } - D_i5_801BBEF4[11] = D_i5_801B7738[boss->swork[1]]; - switch (boss->swork[1]) { + case 11: + if (this->swork[35] == 0) { + this->swork[1] = 8; + } + break; + } + + if (this->swork[1] != 7) { + this->swork[36]++; + } else { + this->swork[36] = 0; + } + + if (this->swork[36] >= 2) { + this->swork[1] = 7; + this->swork[36] = 0; + } + + if (this->swork[1] == 8) { + this->swork[3] = 2; + } else { + this->swork[3] = 1; + } + + D_i5_801BBEF4[11] = D_i5_801B7738[this->swork[1]]; + + switch (this->swork[1]) { case 7: case 8: case 9: case 10: - if (boss->fwork[35] != 1.0f) { + if (this->fwork[35] != 1.0f) { D_i5_801BBEF0[13] = 1; - boss->fwork[35] = 1.0f; + this->fwork[35] = 1.0f; D_i5_801BBEF4[32] = 10.0f; D_i5_801BBEF4[33] = 10.0f; } break; + case 11: - boss->fwork[35] = 0.0f; + this->fwork[35] = 0.0f; break; + case 12: - boss->fwork[35] = 0.0f; + this->fwork[35] = 0.0f; break; } - switch (boss->swork[1]) { + + switch (this->swork[1]) { case 7: - if (boss->swork[9] > 0) { - boss->fwork[36] = 1.0f; + if (this->swork[9] > 0) { + this->fwork[36] = 1.0f; D_i5_801BBEF0[14] = 1; D_i5_801BBEF4[34] = 1.0f; } - if ((boss->swork[10] > 0) && (D_i5_801BBEF0[8] != 0)) { - boss->fwork[37] = 1.0f; + if ((this->swork[10] > 0) && (D_i5_801BBEF0[8] != 0)) { + this->fwork[37] = 1.0f; D_i5_801BBEF0[15] = 1; D_i5_801BBEF4[35] = 1.0f; } - boss->swork[34] = 1; + this->swork[34] = 1; break; + case 8: - boss->swork[34] = 1; + this->swork[34] = 1; break; + case 9: - boss->swork[34] = 1; + this->swork[34] = 1; break; + case 10: - boss->swork[34] = 1; + this->swork[34] = 1; break; + case 11: - boss->swork[34] = 1; - boss->swork[24] = 1; - boss->fwork[45] = 230.0f; + this->swork[34] = 1; + this->swork[24] = 1; + this->fwork[45] = 230.0f; break; + case 12: - boss->swork[34] = 2; - boss->fwork[48] = 0.0f; + this->swork[34] = 2; + this->fwork[48] = 0.0f; break; + default: break; } @@ -3636,10 +3790,9 @@ const s16 D_i5_801BAB0C[4][10] = { const char D_i5_801BAB5C[] = "Enm->chpt=<%d>\n"; #ifdef NON_MATCHING -// Regalloc in the random ternary. Can't be a temp as it's too low on stack // https://decomp.me/scratch/KiTNa - -void Titania_80193DF0(Boss* boss) { +// Regalloc in the random ternary. Can't be a temp as it's too low on stack +void Titania_80193DF0(TiGoras* this) { Vec3f spD4; Vec3f spC8; Actor* actor; @@ -3656,28 +3809,29 @@ void Titania_80193DF0(Boss* boss) { Vec3f sp90; Vec3f sp84; - Matrix_RotateY(gCalcMatrix, boss->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); for (i = 0; i < ARRAY_COUNTU(D_i5_801BBF00); i++) { if (D_i5_801BBF00[i].unk_26 & 0x10) { if ((i == 39) && (D_i5_801BBEF0[8] == 0)) { - boss->swork[37] |= 0x10 | 0x8; + this->swork[37] |= 0x10 | 0x8; D_i5_801BBEF0[44] = 0; D_i5_801BBEF0[8] = -1; D_i5_801BBEF0[41] = 1; actor = Game_SpawnActor(OBJ_ACTOR_TEAM_BOSS); if (actor != NULL) { Matrix_MultVec3f(gCalcMatrix, &D_i5_801BBF00[i].unk_00.pos, &spC8); - actor->obj.pos.x = boss->obj.pos.x + spC8.x; - actor->obj.pos.y = boss->obj.pos.y + spC8.y; - actor->obj.pos.z = boss->obj.pos.z + spC8.z; - actor->obj.rot.x = boss->obj.rot.x + D_i5_801BBF00[i].unk_00.rot.x; - actor->obj.rot.y = boss->obj.rot.y + D_i5_801BBF00[i].unk_00.rot.y; - actor->obj.rot.z = boss->obj.rot.z + D_i5_801BBF00[i].unk_00.rot.z; + actor->obj.pos.x = this->obj.pos.x + spC8.x; + actor->obj.pos.y = this->obj.pos.y + spC8.y; + actor->obj.pos.z = this->obj.pos.z + spC8.z; + actor->obj.rot.x = this->obj.rot.x + D_i5_801BBF00[i].unk_00.rot.x; + actor->obj.rot.y = this->obj.rot.y + D_i5_801BBF00[i].unk_00.rot.y; + actor->obj.rot.z = this->obj.rot.z + D_i5_801BBF00[i].unk_00.rot.z; } } D_i5_801BBF00[i].unk_26 &= ~16; } + if (D_i5_801BBF00[i].unk_26 & 2) { actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { @@ -3687,33 +3841,42 @@ void Titania_80193DF0(Boss* boss) { if (D_i5_801B7770[i][0] == 85) { actor->fwork[0] = 5.0f; actor->fwork[1] = 5.0f; - actor->obj.pos.x = boss->obj.pos.x + D_i5_801BBF00[i].unk_00.pos.x; - actor->obj.pos.y = boss->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y; - actor->obj.pos.z = boss->obj.pos.z + D_i5_801BBF00[i].unk_00.pos.z; - actor->obj.rot.x = boss->obj.rot.x + D_i5_801BBF00[i].unk_00.rot.x; - actor->obj.rot.y = boss->obj.rot.y + D_i5_801BBF00[i].unk_00.rot.y; - actor->obj.rot.z = boss->obj.rot.z + D_i5_801BBF00[i].unk_00.rot.z; + + actor->obj.pos.x = this->obj.pos.x + D_i5_801BBF00[i].unk_00.pos.x; + actor->obj.pos.y = this->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y; + actor->obj.pos.z = this->obj.pos.z + D_i5_801BBF00[i].unk_00.pos.z; + + actor->obj.rot.x = this->obj.rot.x + D_i5_801BBF00[i].unk_00.rot.x; + actor->obj.rot.y = this->obj.rot.y + D_i5_801BBF00[i].unk_00.rot.y; + actor->obj.rot.z = this->obj.rot.z + D_i5_801BBF00[i].unk_00.rot.z; + Matrix_Push(&gCalcMatrix); Matrix_RotateY(gCalcMatrix, 0.0f, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D18, &spC8); Matrix_Pop(&gCalcMatrix); + actor->vel.x = spC8.x; actor->vel.y = 5.0f; actor->vel.z = spC8.z; + actor->gravity = 0.8f; } else { actor->fwork[0] = 10.0f + RAND_FLOAT(10.0f); actor->fwork[1] = 10.0f + RAND_FLOAT(10.0f); - actor->obj.pos.x = boss->obj.pos.x + D_i5_801BBF00[i].unk_00.pos.x; - actor->obj.pos.y = boss->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y; - actor->obj.pos.z = boss->obj.pos.z + D_i5_801BBF00[i].unk_00.pos.z; - actor->obj.rot.x = boss->obj.rot.x + D_i5_801BBF00[i].unk_00.rot.x; - actor->obj.rot.y = boss->obj.rot.y + D_i5_801BBF00[i].unk_00.rot.y; - actor->obj.rot.z = boss->obj.rot.z + D_i5_801BBF00[i].unk_00.rot.z; + + actor->obj.pos.x = this->obj.pos.x + D_i5_801BBF00[i].unk_00.pos.x; + actor->obj.pos.y = this->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y; + actor->obj.pos.z = this->obj.pos.z + D_i5_801BBF00[i].unk_00.pos.z; + + actor->obj.rot.x = this->obj.rot.x + D_i5_801BBF00[i].unk_00.rot.x; + actor->obj.rot.y = this->obj.rot.y + D_i5_801BBF00[i].unk_00.rot.y; + actor->obj.rot.z = this->obj.rot.z + D_i5_801BBF00[i].unk_00.rot.z; + Matrix_Push(&gCalcMatrix); Matrix_RotateY(gCalcMatrix, RAND_FLOAT(360.0f) * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_i5_801B8D0C, &spC8); Matrix_Pop(&gCalcMatrix); + actor->vel.x = spC8.x; // pad2 = ((Rand_ZeroOne() < 0.5f) ? -1 : 1); actor->vel.y = ((Rand_ZeroOne() < 0.5f) ? -1 : 1) * (15.0f + RAND_FLOAT(2.0f)); @@ -3722,24 +3885,27 @@ void Titania_80193DF0(Boss* boss) { } } D_i5_801BBF00[i].unk_26 = 4; - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); } } - if (boss->fwork[38] != 0.0f) { + + if (this->fwork[38] != 0.0f) { Math_SmoothStepToF(&D_i5_801BBEF4[15], D_i5_801BBEF4[24], 1.0f, D_i5_801BBEF4[32], 0.01f); Math_SmoothStepToAngle(&D_i5_801BBEF4[16], D_i5_801BBEF4[25], 1.0f, D_i5_801BBEF4[33], 0.01f); } - if (boss->fwork[39] != 0.0f) { + if (this->fwork[39] != 0.0f) { Math_SmoothStepToAngle(&D_i5_801BBEF4[18], D_i5_801BBEF4[27], 1.0f, D_i5_801BBEF4[34], 0.01f); Math_SmoothStepToAngle(&D_i5_801BBEF4[19], D_i5_801BBEF4[28], 1.0f, D_i5_801BBEF4[34], 0.01f); } - if (boss->fwork[40] != 0.0f) { + if (this->fwork[40] != 0.0f) { Math_SmoothStepToAngle(&D_i5_801BBEF4[21], D_i5_801BBEF4[30], 1.0f, D_i5_801BBEF4[35], 0.01f); Math_SmoothStepToAngle(&D_i5_801BBEF4[22], D_i5_801BBEF4[31], 1.0f, D_i5_801BBEF4[35], 0.01f); } - Math_SmoothStepToF(&boss->fwork[38], boss->fwork[35], 1.0f, 0.3f, 0.01f); - Math_SmoothStepToF(&boss->fwork[39], boss->fwork[36], 0.2f, 0.5f, 0.01f); - Math_SmoothStepToF(&boss->fwork[40], boss->fwork[37], 0.2f, 0.5f, 0.01f); + + Math_SmoothStepToF(&this->fwork[38], this->fwork[35], 1.0f, 0.3f, 0.01f); + Math_SmoothStepToF(&this->fwork[39], this->fwork[36], 0.2f, 0.5f, 0.01f); + Math_SmoothStepToF(&this->fwork[40], this->fwork[37], 0.2f, 0.5f, 0.01f); + if (D_i5_801BBEF0[6] > 0) { D_i5_801BBEF0[6]--; if (D_i5_801BBEF0[6] == 0) { @@ -3750,8 +3916,8 @@ void Titania_80193DF0(Boss* boss) { } for (i = 0; i < 4; i++) { - if (boss->swork[5 + i] > 0) { - boss->swork[5 + i]--; + if (this->swork[5 + i] > 0) { + this->swork[5 + i]--; } } @@ -3762,12 +3928,12 @@ void Titania_80193DF0(Boss* boss) { } } - if (boss->swork[22] > 0) { - boss->swork[22]--; + if (this->swork[22] > 0) { + this->swork[22]--; } - if (boss->swork[28] != 0) { - if (boss->swork[27] > 0) { - boss->swork[27]--; + if (this->swork[28] != 0) { + if (this->swork[27] > 0) { + this->swork[27]--; } } @@ -3788,6 +3954,7 @@ void Titania_80193DF0(Boss* boss) { D_i5_801BBEF0[3]--; } } + if ((D_i5_801BBEF0[5] != 0) && (Math_SmoothStepToAngle(&D_i5_801BBEF4[8], D_i5_801BBEF4[9], 1.0f, 8.0f, 0.01f) == 0.0f)) { if (D_i5_801BBEF4[9] == 48.0f) { @@ -3797,6 +3964,7 @@ void Titania_80193DF0(Boss* boss) { D_i5_801BBEF0[5]--; } } + if (D_i5_801BBEF0[6] != 0) { for (i = 0; i < ARRAY_COUNTU(D_i5_801BBF00); i++) { for (j = 0; j < ARRAY_COUNT(D_i5_801B8160); j++) { @@ -3804,7 +3972,7 @@ void Titania_80193DF0(Boss* boss) { break; } } - if (boss->unk_04C) {} + if (this->animFrame) {} if (j == ARRAY_COUNT(D_i5_801B8160)) { D_i5_801BBF00[i].unk_20 = RAND_FLOAT(5.0f) - 2.5f; @@ -3813,40 +3981,40 @@ void Titania_80193DF0(Boss* boss) { } for (i = 0; i < 4; i++) { - if ((boss->swork[9 + i] > 0) && (boss->swork[9 + i] <= 10)) { + if ((this->swork[9 + i] > 0) && (this->swork[9 + i] <= 10)) { D_i5_801BD668[24 + i] = 1; } } - if ((boss->state >= 7) && (boss->state < 14) && (boss->dmgType == DMG_BEAM) && - (D_i5_801BAA78[D_i5_801B7904[boss->dmgPart]] == 2) && (D_i5_801BBEF0[8] == 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, boss->sfxSource, 4); - boss->dmgType = DMG_NONE; + if ((this->state >= 7) && (this->state < 14) && (this->dmgType == DMG_BEAM) && + (D_i5_801BAA78[D_i5_801B7904[this->dmgPart]] == 2) && (D_i5_801BBEF0[8] == 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); + this->dmgType = DMG_NONE; } - if ((boss->state >= 7) && (boss->state < 14)) { - if (boss->dmgType == DMG_BEAM) { - boss->dmgType = DMG_NONE; - D_i5_801BD668[D_i5_801B7904[boss->dmgPart]] = D_i5_801B7960[D_i5_801B7904[boss->dmgPart]][1]; - D_i5_801BD6B0[D_i5_801B7904[boss->dmgPart]] = 0; + if ((this->state >= 7) && (this->state < 14)) { + if (this->dmgType == DMG_BEAM) { + this->dmgType = DMG_NONE; + D_i5_801BD668[D_i5_801B7904[this->dmgPart]] = D_i5_801B7960[D_i5_801B7904[this->dmgPart]][1]; + D_i5_801BD6B0[D_i5_801B7904[this->dmgPart]] = 0; - if ((D_i5_801B7904[boss->dmgPart] == 6) && (boss->state == 11)) { - D_i5_801BD668[D_i5_801B7904[boss->dmgPart]] = 0; + if ((D_i5_801B7904[this->dmgPart] == 6) && (this->state == 11)) { + D_i5_801BD668[D_i5_801B7904[this->dmgPart]] = 0; } - if (D_i5_801BAA78[D_i5_801B7904[boss->dmgPart]] != 0) { - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, boss->sfxSource, 4); - boss->swork[D_i5_801BAA78[D_i5_801B7904[boss->dmgPart]] + 4] = 20; - if (boss->swork[D_i5_801BAA78[D_i5_801B7904[boss->dmgPart]] + 8] > 0) { - boss->swork[D_i5_801BAA78[D_i5_801B7904[boss->dmgPart]] + 8] -= boss->damage; - if (boss->swork[D_i5_801BAA78[D_i5_801B7904[boss->dmgPart]] + 8] <= 0) { - boss->swork[D_i5_801BAA78[D_i5_801B7904[boss->dmgPart]] + 8] = 0; + if (D_i5_801BAA78[D_i5_801B7904[this->dmgPart]] != 0) { + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, this->sfxSource, 4); + this->swork[D_i5_801BAA78[D_i5_801B7904[this->dmgPart]] + 4] = 20; + if (this->swork[D_i5_801BAA78[D_i5_801B7904[this->dmgPart]] + 8] > 0) { + this->swork[D_i5_801BAA78[D_i5_801B7904[this->dmgPart]] + 8] -= this->damage; + if (this->swork[D_i5_801BAA78[D_i5_801B7904[this->dmgPart]] + 8] <= 0) { + this->swork[D_i5_801BAA78[D_i5_801B7904[this->dmgPart]] + 8] = 0; D_i5_801BBEF0[6] = 40; D_i5_801BBEF4[10] = 2.0f; } } pad = 0; for (i = 0; i < 4; i++) { - if (boss->swork[9 + i] <= 0) { + if (this->swork[9 + i] <= 0) { pad++; } } @@ -3855,62 +4023,67 @@ void Titania_80193DF0(Boss* boss) { } if (pad == 4) { D_i5_801BBEF0[41] = 0; - boss->swork[28] = 1; - boss->swork[27] = 80; - boss->swork[35]++; + this->swork[28] = 1; + this->swork[27] = 80; + this->swork[35]++; } - } else if ((gBossHealthBar > 0) && (D_i5_801B7904[boss->dmgPart] == 23) && (boss->swork[29] != 0) && - (boss->swork[21] > 0)) { - boss->swork[21] -= boss->damage; - if (boss->swork[21] <= 0) { + } else if ((gBossHealthBar > 0) && (D_i5_801B7904[this->dmgPart] == 23) && (this->swork[29] != 0) && + (this->swork[21] > 0)) { + this->swork[21] -= this->damage; + if (this->swork[21] <= 0) { gTeamLowHealthMsgTimer = -1; - boss->swork[21] = 0; + this->swork[21] = 0; gScreenFlashTimer = 8; - AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); } else { - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, this->sfxSource, 4); - if (boss->swork[21] <= 10) { + if (this->swork[21] <= 10) { D_i5_801BBEF0[1] = 15; - } else if (boss->swork[21] <= 20) { + } else if (this->swork[21] <= 20) { D_i5_801BBEF0[1] = 20; } } - gBossHealthBar = (s32) ((boss->swork[21] * 255.0f) / 100.0f); - boss->swork[22] = 20; + gBossHealthBar = (s32) ((this->swork[21] * 255.0f) / 100.0f); + this->swork[22] = 20; D_i5_801BBEF0[6] = 20; D_i5_801BBEF4[10] = 4.0f; - } else if (D_i5_801B7904[boss->dmgPart] == 28) { - boss->swork[37] |= 4; + } else if (D_i5_801B7904[this->dmgPart] == 28) { + this->swork[37] |= 4; D_i5_801BBEF0[43] = 0; } else { - AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, this->sfxSource, 4); } } - if ((boss->dmgType == DMG_BOMB) && (boss->dmgPart == 1) && (D_i5_801BBEF0[8] == 0)) { - boss->dmgType = DMG_NONE; + + if ((this->dmgType == DMG_BOMB) && (this->dmgPart == 1) && (D_i5_801BBEF0[8] == 0)) { + this->dmgType = DMG_NONE; } - if (boss->dmgType == DMG_BOMB) { - boss->dmgType = DMG_NONE; - switch (boss->dmgPart) { + if (this->dmgType == DMG_BOMB) { + this->dmgType = DMG_NONE; + switch (this->dmgPart) { case 0: case 1: case 2: case 3: - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, boss->sfxSource, 4); - boss->swork[boss->dmgPart + 5] = 20; - if (boss->swork[boss->dmgPart + 9] <= 0) { + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, this->sfxSource, 4); + this->swork[this->dmgPart + 5] = 20; + + if (this->swork[this->dmgPart + 9] <= 0) { break; } - boss->swork[boss->dmgPart + 9] -= boss->damage; - if (boss->swork[boss->dmgPart + 9] <= 0) { - boss->swork[boss->dmgPart + 9] = 0; + + this->swork[this->dmgPart + 9] -= this->damage; + + if (this->swork[this->dmgPart + 9] <= 0) { + this->swork[this->dmgPart + 9] = 0; D_i5_801BBEF0[6] = 40; D_i5_801BBEF4[10] = 2.0f; pad = 0; + for (i = 0; i < 4; i++) { - if (boss->swork[9 + i] <= 0) { + if (this->swork[9 + i] <= 0) { pad++; } } @@ -3920,32 +4093,35 @@ void Titania_80193DF0(Boss* boss) { } if (pad == 4) { D_i5_801BBEF0[41] = 0; - boss->swork[28] = 1; - boss->swork[27] = 80; - boss->swork[35]++; + this->swork[28] = 1; + this->swork[27] = 80; + this->swork[35]++; } } break; + case 4: - if ((gBossHealthBar > 0) && (boss->swork[29] != 0) && (boss->swork[21] > 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, boss->sfxSource, 4); - boss->swork[21] -= boss->damage; - if (boss->swork[21] <= 0) { - boss->swork[21] = 0; + if ((gBossHealthBar > 0) && (this->swork[29] != 0) && (this->swork[21] > 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, this->sfxSource, 4); + + this->swork[21] -= this->damage; + + if (this->swork[21] <= 0) { + this->swork[21] = 0; gScreenFlashTimer = 8; gTeamLowHealthMsgTimer = -1; - AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); } else { - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DM_CRY, this->sfxSource, 4); - if (boss->swork[21] < 11) { + if (this->swork[21] < 11) { D_i5_801BBEF0[1] = 15; - } else if (boss->swork[21] < 21) { + } else if (this->swork[21] < 21) { D_i5_801BBEF0[1] = 20; } } - gBossHealthBar = (s32) ((boss->swork[21] * 255.0f) / 100.0f); - boss->swork[22] = 20; + gBossHealthBar = (s32) ((this->swork[21] * 255.0f) / 100.0f); + this->swork[22] = 20; D_i5_801BBEF0[6] = 20; D_i5_801BBEF4[10] = 4.0f; } @@ -3954,75 +4130,82 @@ void Titania_80193DF0(Boss* boss) { } } - if ((boss->state >= 6) && (boss->state < 14) && (D_i5_801BBEF0[1] != 0)) { + if ((this->state >= 6) && (this->state < 14) && (D_i5_801BBEF0[1] != 0)) { D_i5_801BBEF0[0]++; if (D_i5_801BBEF0[0] >= D_i5_801BBEF0[1]) { D_i5_801BBEF0[0] -= D_i5_801BBEF0[1]; } } - switch (boss->swork[28]) { + switch (this->swork[28]) { case 1: - if (boss->swork[27] == 0) { - boss->swork[28]++; + if (this->swork[27] == 0) { + this->swork[28]++; } break; + case 2: D_i5_801BBF00[61].unk_26 = 3; D_i5_801BBEF4[2] = 0.0f; D_i5_801BBEF4[1] = 20.0f; - boss->swork[28]++; - AUDIO_PLAY_SFX(NA_SE_EN_HEART_OPEN, boss->sfxSource, 4); - AUDIO_PLAY_SFX(NA_SE_EN_HEARTBEAT, boss->sfxSource, 4); + this->swork[28]++; + AUDIO_PLAY_SFX(NA_SE_EN_HEART_OPEN, this->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_HEARTBEAT, this->sfxSource, 4); break; + case 3: D_i5_801BBEF4[2] += D_i5_801BBEF4[1]; D_i5_801BBEF4[1] += 4.0; if (D_i5_801BBEF4[2] >= 116.0f) { - boss->swork[28]++; + this->swork[28]++; D_i5_801BBEF4[3] = 40.0f; D_i5_801BBEF4[5] = 5.0f; D_i5_801BBEF4[4] = 20.0f; - boss->swork[29] = 1; - boss->swork[37] |= 1; - AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, boss->sfxSource, 4); + this->swork[29] = 1; + this->swork[37] |= 1; + AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); } break; + case 4: D_i5_801BBEF4[3]--; if (D_i5_801BBEF4[3] == 0) { - boss->swork[27] = 300; - boss->swork[28]++; + this->swork[27] = 300; + this->swork[28]++; } break; + case 5: - if (boss->swork[27] == 0) { + if (this->swork[27] == 0) { D_i5_801BBEF4[3] = 40.0f; D_i5_801BBEF4[5] = 5.0f; D_i5_801BBEF4[4] = 20.0f; - boss->swork[28]++; + this->swork[28]++; } break; + case 6: D_i5_801BBEF4[3] -= 1; if (D_i5_801BBEF4[3] == 0) { D_i5_801BBEF4[1] = -40.0f; D_i5_801BBEF4[4] = 0.0f; - boss->swork[28]++; + this->swork[28]++; } break; + case 7: D_i5_801BBEF4[2] += D_i5_801BBEF4[1]; D_i5_801BBEF4[1] -= 3.0; if (D_i5_801BBEF4[2] <= 0.0f) { - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_HEARTBEAT); - boss->swork[29] = 0; + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_HEARTBEAT); + this->swork[29] = 0; D_i5_801BBEF4[2] = 0.0f; - boss->swork[28]++; + this->swork[28]++; } break; + case 8: - AUDIO_PLAY_SFX(NA_SE_EN_GATHER_PARTS, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_GATHER_PARTS, this->sfxSource, 4); for (i = 0; i < 33; i++) { actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); @@ -4030,47 +4213,53 @@ void Titania_80193DF0(Boss* boss) { actor->state = 40; actor->obj.pos.x = 0.0f; actor->obj.pos.y = 0.0f; - actor->obj.pos.z = boss->obj.pos.z + 2000.0f; + actor->obj.pos.z = this->obj.pos.z + 2000.0f; actor->info.cullDistance = 5000.0f; actor->unk_046 = D_i5_801B7770[D_i5_801B8198[i].unk_00][5]; actor->unk_048 = D_i5_801B7770[D_i5_801B8198[i].unk_00][1]; D_i5_801B8198[i].unk_0C = D_i5_801B8198[i].unk_04; - actor->vel.z = boss->vel.z; + actor->vel.z = this->vel.z; D_i5_801BBF00[D_i5_801B8198[i].unk_00].unk_26 |= 1; } D_i5_801B8198[i].actor = actor; } - boss->swork[28]++; + this->swork[28]++; break; + case 9: for (i = 0; i < 33; i++) { actor = D_i5_801B8198[i].actor; if (actor != NULL) { pad2 = D_i5_801B8198[i].unk_00; - actor->obj.pos.x = boss->obj.pos.x + (D_i5_801BBF00[pad2].unk_00.pos.x * 2.0f); - actor->obj.pos.y = boss->obj.pos.y + D_i5_801BBF00[pad2].unk_00.pos.y; + actor->obj.pos.x = this->obj.pos.x + (D_i5_801BBF00[pad2].unk_00.pos.x * 2.0f); + actor->obj.pos.y = this->obj.pos.y + D_i5_801BBF00[pad2].unk_00.pos.y; } } - boss->swork[28]++; + this->swork[28]++; break; + case 10: - Matrix_RotateY(gCalcMatrix, boss->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); spA4 = 0; + for (i = 0; i < 33; i++) { actor = D_i5_801B8198[i].actor; if (actor != NULL) { if (D_i5_801B8198[i].unk_0C == 0) { pad2 = D_i5_801B8198[i].unk_00; Matrix_MultVec3f(gCalcMatrix, &D_i5_801BBF00[pad2].unk_00.pos, &spC8); + sp9C = - fabsf(Math_SmoothStepToF(&actor->obj.pos.x, boss->obj.pos.x + spC8.x, 1.0f, 40.0f, 0.01f)); + fabsf(Math_SmoothStepToF(&actor->obj.pos.x, this->obj.pos.x + spC8.x, 1.0f, 40.0f, 0.01f)); sp9C += - fabsf(Math_SmoothStepToF(&actor->obj.pos.y, boss->obj.pos.y + spC8.y, 1.0f, 40.0f, 0.01f)); + fabsf(Math_SmoothStepToF(&actor->obj.pos.y, this->obj.pos.y + spC8.y, 1.0f, 40.0f, 0.01f)); sp9C += - fabsf(Math_SmoothStepToF(&actor->obj.pos.z, boss->obj.pos.z + spC8.z, 1.0f, 90.0f, 0.01f)); + fabsf(Math_SmoothStepToF(&actor->obj.pos.z, this->obj.pos.z + spC8.z, 1.0f, 90.0f, 0.01f)); + actor->obj.rot.x += 20.0f; actor->obj.rot.y += 20.0f; actor->obj.rot.z += 20.0f; + if (sp9C <= 25.0f) { D_i5_801BBF00[D_i5_801B8198[i].unk_00].unk_26 = 8; Object_Kill(&actor->obj, actor->sfxSource); @@ -4085,190 +4274,217 @@ void Titania_80193DF0(Boss* boss) { } if (spA4 == 33) { - boss->swork[28]++; + this->swork[28]++; } break; + case 11: for (i = 0; i < 33U; i++) { D_i5_801BBF00[D_i5_801B8198[i].unk_00].unk_26 = 0; } for (i = 0; i < 4; i++) { - boss->swork[9 + i] = 30; - boss->swork[13 + i] = 0; - boss->swork[17 + i] = 0; + this->swork[9 + i] = 30; + this->swork[13 + i] = 0; + this->swork[17 + i] = 0; } - boss->swork[28] = 0; - boss->swork[37] |= 2; + this->swork[28] = 0; + this->swork[37] |= 2; break; + case 0: break; } + Math_SmoothStepToAngle(&D_i5_801BBEF4[13], D_i5_801BBEF4[12], 0.5f, 1.5f, 0.01f); spB8 = 0; - switch (boss->state) { + switch (this->state) { case 7: - Animation_GetFrameData(&D_TI2_70084CC, boss->unk_04C >> 1, D_i5_801BC978); + Animation_GetFrameData(&D_TI2_70084CC, this->animFrame >> 1, D_i5_801BC978); break; case 8: - Animation_GetFrameData(&D_TI2_7003EE8, boss->unk_04C >> 1, D_i5_801BC978); + Animation_GetFrameData(&D_TI2_7003EE8, this->animFrame >> 1, D_i5_801BC978); break; case 9: - Animation_GetFrameData(&D_TI_8008FE8, boss->unk_04C >> 1, D_i5_801BC978); + Animation_GetFrameData(&D_TI_8008FE8, this->animFrame >> 1, D_i5_801BC978); break; case 10: - Animation_GetFrameData(&D_TI2_700E244, boss->unk_04C >> 1, D_i5_801BC978); + Animation_GetFrameData(&D_TI2_700E244, this->animFrame >> 1, D_i5_801BC978); break; case 11: case 13: - Animation_GetFrameData(&D_TI_9004288, boss->unk_04C >> 1, D_i5_801BC978); + Animation_GetFrameData(&D_TI_9004288, this->animFrame >> 1, D_i5_801BC978); break; case 12: - Animation_GetFrameData(&D_TI_A009990, boss->unk_04C >> 1, D_i5_801BC978); + Animation_GetFrameData(&D_TI_A009990, this->animFrame >> 1, D_i5_801BC978); break; } - pad2 = boss->swork[34]; + + pad2 = this->swork[34]; + switch (pad2) { case 0: break; case 1: - Animation_GetFrameData(&D_TI2_70096EC, (s32) boss->fwork[48] >> 1, D_i5_801BD218); + Animation_GetFrameData(&D_TI2_70096EC, (s32) this->fwork[48] >> 1, D_i5_801BD218); // might need to copy individual values for (i = 0; i < 19; i++) { D_i5_801BC978[D_i5_801BAA50[i]] = D_i5_801BD218[D_i5_801BAA50[i]]; } - break; + case 2: - Animation_GetFrameData(&D_TI_A009990, (s32) boss->fwork[48] >> 1, D_i5_801BD218); + Animation_GetFrameData(&D_TI_A009990, (s32) this->fwork[48] >> 1, D_i5_801BD218); for (i = 0; i < 19; i++) { D_i5_801BC978[D_i5_801BAA50[i]] = D_i5_801BD218[D_i5_801BAA50[i]]; } break; } - if ((boss->state >= 7) && (boss->state <= 12) && ((boss->fwork[9] > 0.0f) || (boss->fwork[6] > 0.0f))) { - if (boss->state == 12) { - if ((boss->fwork[9] > 0.0f) && (boss->fwork[6] > 0.0f)) { - Math_SmoothStepToF(&boss->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); + + if ((this->state >= 7) && (this->state <= 12) && ((this->fwork[9] > 0.0f) || (this->fwork[6] > 0.0f))) { + if (this->state == 12) { + if ((this->fwork[9] > 0.0f) && (this->fwork[6] > 0.0f)) { + Math_SmoothStepToF(&this->obj.pos.x, gPlayer[0].pos.x, 0.1f, 10.0f, 0.01f); } else { - Math_SmoothStepToF(&boss->obj.pos.x, gPlayer[0].pos.x, 0.1f, 4.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, gPlayer[0].pos.x, 0.1f, 4.0f, 0.01f); } } else { - Math_SmoothStepToF(&boss->obj.pos.x, gPlayer[0].pos.x, 0.1f, 3.0f, 0.01f); + Math_SmoothStepToF(&this->obj.pos.x, gPlayer[0].pos.x, 0.1f, 3.0f, 0.01f); } } - switch (boss->state) { + + switch (this->state) { case 5: - if (boss->timer_050 == 0) { + if (this->timer_050 == 0) { D_i5_801BBEF0[0] = 0; D_i5_801BBEF0[1] = 25; D_i5_801BBEF4[0] = 0.25f; - boss->obj.pos.x = gPlayer[0].pos.x; - boss->obj.pos.z = gPlayer[0].trueZpos - 1070.0f; - boss->vel.z = 0.0f; + + this->obj.pos.x = gPlayer[0].pos.x; + this->obj.pos.z = gPlayer[0].trueZpos - 1070.0f; + this->vel.z = 0.0f; + Animation_GetFrameData(&D_TI_900FC4C, 0, D_i5_801BCDC8); + D_i5_801BBEF4[8] = 48.0f; D_i5_801BBEF4[9] = 48.0f; - boss->fwork[35] = 1.0f; + + this->fwork[35] = 1.0f; + D_i5_801BBEF0[13] = 1; D_i5_801BBEF4[32] = 10.0f; D_i5_801BBEF4[33] = 10.0f; - boss->swork[1] = 6; - D_i5_801BBEF4[11] = D_i5_801B7738[boss->swork[1]]; - boss->swork[31] = 0; - boss->swork[30]++; + + this->swork[1] = 6; + + D_i5_801BBEF4[11] = D_i5_801B7738[this->swork[1]]; + + this->swork[31] = 0; + this->swork[30]++; + for (i = 0; i < ARRAY_COUNTU(D_i5_801BBF00); i++) { D_i5_801BBF00[i].unk_26 = 1; D_i5_801BBF00[i].unk_24 = -1; } } break; + case 6: - boss->fwork[47] = (f32) boss->unk_04C / (f32) (Animation_GetFrameCount(&D_TI_900FC4C) * 2); - if ((boss->unk_04C == 0) || (boss->unk_04C == 68) || (boss->unk_04C == 96) || (boss->unk_04C == 149)) { - AUDIO_PLAY_SFX(NA_SE_EN_APPEAR_SAND, boss->sfxSource, 4); + this->fwork[47] = (f32) this->animFrame / (f32) (Animation_GetFrameCount(&D_TI_900FC4C) * 2); + + if ((this->animFrame == 0) || (this->animFrame == 68) || (this->animFrame == 96) || + (this->animFrame == 149)) { + AUDIO_PLAY_SFX(NA_SE_EN_APPEAR_SAND, this->sfxSource, 4); } - temp_f = gPlayer[0].trueZpos - boss->obj.pos.z - 530.0f; + + temp_f = gPlayer[0].trueZpos - this->obj.pos.z - 530.0f; if (temp_f < 0.0f) { - boss->obj.pos.z += temp_f; + this->obj.pos.z += temp_f; } - if (boss->unk_04C == 26) { + + if (this->animFrame == 26) { gPlayer[0].unk_19C = -1; gPlayer[0].unk_000 = 0.0f; } for (i = 0; i < ARRAY_COUNTU(D_i5_801BBF00); i++) { - if ((D_i5_801BBF00[i].unk_24 < 0) && ((boss->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y) > 0.0f)) { + if ((D_i5_801BBF00[i].unk_24 < 0) && ((this->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y) > 0.0f)) { D_i5_801BBF00[i].unk_24 = 30; } if (D_i5_801BBF00[i].unk_24 > 0) { D_i5_801BBF00[i].unk_24--; if (!(D_i5_801BBF00[i].unk_24 & 1)) { // prefer == 0 - func_effect_8007A900(boss->obj.pos.x + D_i5_801BBF00[i].unk_00.pos.x, - boss->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y, - boss->obj.pos.z + D_i5_801BBF00[i].unk_00.pos.z, 7.0f, 160, 16, 0); + Effect_Effect359_Spawn(this->obj.pos.x + D_i5_801BBF00[i].unk_00.pos.x, + this->obj.pos.y + D_i5_801BBF00[i].unk_00.pos.y, + this->obj.pos.z + D_i5_801BBF00[i].unk_00.pos.z, 7.0f, 160, 16, 0); } } if (D_i5_801BBF00[i].unk_24 != 0) { D_i5_801BBF00[i].unk_26 = 1; } } - Animation_GetFrameData(&D_TI_900FC4C, boss->unk_04C >> 1, D_i5_801BC978); - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - boss->unk_04C++; - if (boss->unk_04C >= (Animation_GetFrameCount(&D_TI_900FC4C) * 2)) { - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_AT_CRY, boss->sfxSource, 4); + + Animation_GetFrameData(&D_TI_900FC4C, this->animFrame >> 1, D_i5_801BC978); + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + this->animFrame++; + + if (this->animFrame >= (Animation_GetFrameCount(&D_TI_900FC4C) * 2)) { + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_AT_CRY, this->sfxSource, 4); gPlayer[0].unk_19C = 0; - boss->unk_04C = 0; - boss->fwork[48] = 0; + this->animFrame = 0; + this->fwork[48] = 0; Animation_GetFrameData(&D_TI2_70084CC, 0, D_i5_801BC978); - boss->swork[31] = 0; - boss->swork[30]++; - boss->vel.z = -15.0f; + this->swork[31] = 0; + this->swork[30]++; + this->vel.z = -15.0f; spB8 = 1; } break; - case 7: { - if (boss->swork[9] > 0) { + case 7: + if (this->swork[9] > 0) { for (i = 0; i < 9; i++) { - if (boss->unk_04C == D_i5_801B8138[i]) { - sp90.x = boss->obj.pos.x + boss->fwork[23]; - sp90.y = boss->obj.pos.y + boss->fwork[24]; - sp90.z = boss->obj.pos.z + boss->fwork[25]; - sp84.x = -boss->fwork[28]; - sp84.y = boss->fwork[27] + 90.0f; + if (this->animFrame == D_i5_801B8138[i]) { + sp90.x = this->obj.pos.x + this->fwork[23]; + sp90.y = this->obj.pos.y + this->fwork[24]; + sp90.z = this->obj.pos.z + this->fwork[25]; + sp84.x = -this->fwork[28]; + sp84.y = this->fwork[27] + 90.0f; sp84.z = 0.0f; func_effect_8007EE68(OBJ_EFFECT_ENEMY_LASER_1, &sp90, &sp84, &D_tank_800C9F2C, &D_i5_801B8D48, 1.0f); } } } - if ((boss->swork[10] > 0) && ((D_i5_801BBEF0[41] == 2) || (D_i5_801BBEF0[8] != 0))) { + + if ((this->swork[10] > 0) && ((D_i5_801BBEF0[41] == 2) || (D_i5_801BBEF0[8] != 0))) { for (i = 0; i < 9; i++) { - if (boss->unk_04C == D_i5_801B814C[i]) { - sp90.x = boss->obj.pos.x + boss->fwork[29]; - sp90.y = boss->obj.pos.y + boss->fwork[30]; - sp90.z = boss->obj.pos.z + boss->fwork[31]; - sp84.x = -boss->fwork[34]; - sp84.y = boss->fwork[33] + 90.0f; + if (this->animFrame == D_i5_801B814C[i]) { + sp90.x = this->obj.pos.x + this->fwork[29]; + sp90.y = this->obj.pos.y + this->fwork[30]; + sp90.z = this->obj.pos.z + this->fwork[31]; + sp84.x = -this->fwork[34]; + sp84.y = this->fwork[33] + 90.0f; sp84.z = 0.0f; func_effect_8007EE68(OBJ_EFFECT_ENEMY_LASER_1, &sp90, &sp84, &D_tank_800C9F2C, &D_i5_801B8D48, 1.0f); } } } + if (D_i5_801BBEF0[41] == 1) { D_i5_801BBEF0[41] = 2; } + if (D_i5_801BBEF0[2] == 0) { D_i5_801BBEF4[7] = 48; D_i5_801BBEF0[2] = 90; D_i5_801BBEF0[3] = 2; } + if (D_i5_801BBEF0[8] != 0) { if (D_i5_801BBEF0[4] == 0) { D_i5_801BBEF4[9] = 48; @@ -4279,83 +4495,94 @@ void Titania_80193DF0(Boss* boss) { D_i5_801BBEF4[8] = 48; D_i5_801BBEF4[9] = 48; } - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - boss->unk_04C++; - if (boss->unk_04C >= (Animation_GetFrameCount(&D_TI2_70084CC) * 2)) { - boss->fwork[36] = 0.0f; - boss->fwork[37] = 0.0f; + + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + + this->animFrame++; + if (this->animFrame >= (Animation_GetFrameCount(&D_TI2_70084CC) * 2)) { + this->fwork[36] = 0.0f; + this->fwork[37] = 0.0f; spB8 = 1; } - } break; + break; + case 8: - if ((boss->unk_04C == 0) && (boss->swork[11] <= 0)) { - boss->unk_04C = 62; + if ((this->animFrame == 0) && (this->swork[11] <= 0)) { + this->animFrame = 62; } - if ((boss->unk_04C == 62) && (boss->swork[12] <= 0)) { - boss->unk_04C = (Animation_GetFrameCount(&D_TI2_7003EE8) * 2) - 1; + if ((this->animFrame == 62) && (this->swork[12] <= 0)) { + this->animFrame = (Animation_GetFrameCount(&D_TI2_7003EE8) * 2) - 1; D_i5_801BBEF4[12] = 0.0f; } - if (boss->unk_04C == 98) { + if (this->animFrame == 98) { D_i5_801BBEF4[12] = 0.0f; } - if ((boss->unk_04C == 22) || (boss->unk_04C == 80)) { - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_AT_CRY, boss->sfxSource, 4); + if ((this->animFrame == 22) || (this->animFrame == 80)) { + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_AT_CRY, this->sfxSource, 4); } - if (((boss->unk_04C >= 0) && (boss->unk_04C < 18)) || ((boss->unk_04C >= 62) && (boss->unk_04C < 80))) { + if (((this->animFrame >= 0) && (this->animFrame < 18)) || + ((this->animFrame >= 62) && (this->animFrame < 80))) { D_i5_801BBEF4[12] = - Math_Atan2F(gPlayer[0].pos.x - boss->obj.pos.x, gPlayer[0].pos.z - boss->obj.pos.z) * M_RTOD; + Math_Atan2F(gPlayer[0].pos.x - this->obj.pos.x, gPlayer[0].pos.z - this->obj.pos.z) * M_RTOD; D_i5_801BBEF4[11] = __cosf(D_i5_801BBEF4[12] * M_DTOR) * 580.0f; } - if ((boss->unk_04C >= 37) && (boss->unk_04C < 41) && (boss->swork[11] > 0)) { - spD4.x = boss->obj.pos.x + D_i5_801BBEF4[68]; + if ((this->animFrame >= 37) && (this->animFrame < 41) && (this->swork[11] > 0)) { + spD4.x = this->obj.pos.x + D_i5_801BBEF4[68]; spD4.y = 0.0f; - spD4.z = boss->obj.pos.z + D_i5_801BBEF4[70]; - if (boss->unk_04C & 1) { - func_effect_8007A900(spD4.x, 0.0f, spD4.z, 10.0f, 255, 8, 0); + spD4.z = this->obj.pos.z + D_i5_801BBEF4[70]; + if (this->animFrame & 1) { + Effect_Effect359_Spawn(spD4.x, 0.0f, spD4.z, 10.0f, 255, 8, 0); } - if (boss->unk_04C == 38) { + if (this->animFrame == 38) { Effect_SpawnTimedSfxAtPos(&spD4, NA_SE_EN_BOSS_ATTACK); - boss->swork[39] = 5; + this->swork[39] = 5; gCameraShake = 20; } } - if ((boss->unk_04C >= 97) && (boss->unk_04C < 101) && (boss->swork[12] > 0)) { - spD4.x = boss->obj.pos.x + D_i5_801BBEF4[71]; + if ((this->animFrame >= 97) && (this->animFrame < 101) && (this->swork[12] > 0)) { + spD4.x = this->obj.pos.x + D_i5_801BBEF4[71]; spD4.y = 0.0f; - spD4.z = boss->obj.pos.z + D_i5_801BBEF4[73]; - if (boss->unk_04C & 1) { - func_effect_8007A900(spD4.x, 0.0f, spD4.z, 10.0f, 255, 8, 0); + spD4.z = this->obj.pos.z + D_i5_801BBEF4[73]; + if (this->animFrame & 1) { + Effect_Effect359_Spawn(spD4.x, 0.0f, spD4.z, 10.0f, 255, 8, 0); } - if (boss->unk_04C == 98) { + if (this->animFrame == 98) { Effect_SpawnTimedSfxAtPos(&spD4, NA_SE_EN_BOSS_ATTACK); - boss->swork[39] = 5; + this->swork[39] = 5; gCameraShake = 20; } } - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - boss->unk_04C++; - if (boss->unk_04C >= (Animation_GetFrameCount(&D_TI2_7003EE8) * 2)) { + + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + + this->animFrame++; + if (this->animFrame >= (Animation_GetFrameCount(&D_TI2_7003EE8) * 2)) { spB8 = 1; } break; + case 9: - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - boss->unk_04C++; - if (boss->unk_04C >= (Animation_GetFrameCount(&D_TI_8008FE8) * 2)) { + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + + this->animFrame++; + if (this->animFrame >= (Animation_GetFrameCount(&D_TI_8008FE8) * 2)) { spB8 = 1; } break; + case 10: - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - boss->unk_04C++; - if (boss->unk_04C >= (Animation_GetFrameCount(&D_TI2_700E244) * 2)) { + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + + this->animFrame++; + if (this->animFrame >= (Animation_GetFrameCount(&D_TI2_700E244) * 2)) { spB8 = 1; } break; + case 11: if (D_i5_801BBEF0[26] > 0) { D_i5_801BBEF0[26]--; @@ -4368,31 +4595,31 @@ void Titania_80193DF0(Boss* boss) { if (D_i5_801BBEF0[17] > 0) { D_i5_801BBEF0[17]--; } - if (boss->unk_04C == 0) { - AUDIO_PLAY_SFX(NA_SE_EN_BOSS_CHARGE, boss->sfxSource, 4); + if (this->animFrame == 0) { + AUDIO_PLAY_SFX(NA_SE_EN_BOSS_CHARGE, this->sfxSource, 4); } - if (boss->unk_04C == 15) { + if (this->animFrame == 15) { D_i5_801BBEF0[16] = 25; } - if ((boss->unk_04C >= 44) && (boss->unk_04C < 51)) { + if ((this->animFrame >= 44) && (this->animFrame < 51)) { D_i5_801BBEF0[7]++; } - if (boss->unk_04C == 43) { + if (this->animFrame == 43) { D_i5_801BBEF0[7] = 0; D_i5_801BBEF4[11] = 1300.0f; } - if (boss->unk_04C == 51) { + if (this->animFrame == 51) { D_i5_801BBEF0[7] = 0; } - // pad = boss->unk_04C == 45; - if (boss->unk_04C == 45) { - AUDIO_PLAY_SFX(NA_SE_EN_BOSS_BEAM0, boss->sfxSource, 4); - boss->swork[32] = 0; - boss->fwork[42] = 0.0f; - boss->fwork[41] = 40.0f; + // pad = this->animFrame == 45; + if (this->animFrame == 45) { + AUDIO_PLAY_SFX(NA_SE_EN_BOSS_BEAM0, this->sfxSource, 4); + this->swork[32] = 0; + this->fwork[42] = 0.0f; + this->fwork[41] = 40.0f; D_i5_801BBEF0[26] = 3; - boss->swork[25] = 1; + this->swork[25] = 1; D_i5_801BBEF0[17] = 3; D_i5_801BBEF0[13] = 1; D_i5_801BBEF4[32] = 1.0f; @@ -4409,137 +4636,153 @@ void Titania_80193DF0(Boss* boss) { } } } - if (boss->unk_04C == 130) { + if (this->animFrame == 130) { for (i = 0; i < 4; i++) { gTexturedLines[D_i5_801BBEF0[9 + i] - 1].mode = 0; } - boss->swork[32] = 0; - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_BOSS_BEAM0); - boss->swork[25] = 0; - boss->fwork[41] = 0.0f; - boss->fwork[42] = 0.0f; + this->swork[32] = 0; + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_BOSS_BEAM0); + this->swork[25] = 0; + this->fwork[41] = 0.0f; + this->fwork[42] = 0.0f; } - if (boss->unk_04C == 53) { - boss->swork[32] = 1; + if (this->animFrame == 53) { + this->swork[32] = 1; } - if (boss->unk_04C == 120) { - boss->swork[32] = 0; + if (this->animFrame == 120) { + this->swork[32] = 0; } + if (D_i5_801BBEF0[26] != 0) { gFillScreenRed = 255; gFillScreenGreen = 255; gFillScreenBlue = 255; gFillScreenAlpha = (D_i5_801BBEF0[26] * 255.0f) / 3.0f; } - if ((boss->unk_04C >= 54) && (boss->unk_04C < 120)) { - boss->fwork[46] += 0.04f; - if (boss->fwork[46] > 1.0f) { - boss->fwork[46] = 1.0f; + + if ((this->animFrame >= 54) && (this->animFrame < 120)) { + this->fwork[46] += 0.04f; + if (this->fwork[46] > 1.0f) { + this->fwork[46] = 1.0f; } } - if (boss->unk_04C == 51) { + if (this->animFrame == 51) { D_i5_801BBEF4[32] = 360.0f; D_i5_801BBEF4[33] = 10.0f; - boss->fwork[46] = 0.3f; + this->fwork[46] = 0.3f; } - if (boss->fwork[46] == 1.0f) { + + if (this->fwork[46] == 1.0f) { D_i5_801BBEF4[33] = 0.01f; D_i5_801BBEF4[32] = 0.5f; } - if (boss->unk_04C == 52) { + + if (this->animFrame == 52) { D_i5_801BBEF4[32] = 0.0f; } - if (boss->unk_04C == 120) { - boss->fwork[46] = 0.0f; + if (this->animFrame == 120) { + this->fwork[46] = 0.0f; } - if ((boss->unk_04C >= 51) && (boss->unk_04C < 120)) { - boss->fwork[35] = 1.0f; + if ((this->animFrame >= 51) && (this->animFrame < 120)) { + this->fwork[35] = 1.0f; } else { - boss->fwork[35] = 0.0f; + this->fwork[35] = 0.0f; } - if ((boss->unk_04C >= 45) && (boss->unk_04C < 47)) { - boss->fwork[41] += 20.0f; - boss->fwork[42] += 1050.0f; + if ((this->animFrame >= 45) && (this->animFrame < 47)) { + this->fwork[41] += 20.0f; + this->fwork[42] += 1050.0f; } - if (boss->unk_04C >= 47) { - if (boss->fwork[41] > 40.0f) { - boss->fwork[41] -= 20.0f; + if (this->animFrame >= 47) { + if (this->fwork[41] > 40.0f) { + this->fwork[41] -= 20.0f; } } - if ((boss->unk_04C >= 126) && (boss->unk_04C < 129)) { - boss->fwork[41] *= 0.5f; + if ((this->animFrame >= 126) && (this->animFrame < 129)) { + this->fwork[41] *= 0.5f; } - if (boss->unk_04C >= 128) { - boss->fwork[42] *= 0.3f; + if (this->animFrame >= 128) { + this->fwork[42] *= 0.3f; } - if (boss->unk_04C >= 129) { - boss->fwork[42] *= 0.5f; - boss->fwork[41] *= 0.5f; + if (this->animFrame >= 129) { + this->fwork[42] *= 0.5f; + this->fwork[41] *= 0.5f; } - if (boss->swork[24] != 0) { - Math_SmoothStepToF(&boss->fwork[45], 0.0f, 0.8f, 2.5f, 0.01f); - if (boss->fwork[43] == 0.0f) { - boss->fwork[43] = 1.0f; + + if (this->swork[24] != 0) { + Math_SmoothStepToF(&this->fwork[45], 0.0f, 0.8f, 2.5f, 0.01f); + if (this->fwork[43] == 0.0f) { + this->fwork[43] = 1.0f; } - Math_SmoothStepToF(&boss->fwork[43], 0.0f, 1.0f, 0.1f, 0.001f); - if (boss->unk_04C == 30) { - boss->fwork[41] = 0.0f; - boss->fwork[42] = 0.0f; - boss->swork[24] = 0; - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_BOSS_CHARGE); + Math_SmoothStepToF(&this->fwork[43], 0.0f, 1.0f, 0.1f, 0.001f); + if (this->animFrame == 30) { + this->fwork[41] = 0.0f; + this->fwork[42] = 0.0f; + this->swork[24] = 0; + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_BOSS_CHARGE); } } - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - boss->unk_04C++; - if (boss->unk_04C >= (Animation_GetFrameCount(&D_TI_9004288) * 2)) { - boss->swork[24] = 0; - boss->fwork[43] = 0.0f; - boss->swork[25] = 0; + + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + + this->animFrame++; + if (this->animFrame >= (Animation_GetFrameCount(&D_TI_9004288) * 2)) { + this->swork[24] = 0; + this->fwork[43] = 0.0f; + this->swork[25] = 0; spB8 = 1; } break; + case 12: - boss->swork[33] = 1; - if ((boss->unk_04C >= 38) && (boss->unk_04C < 141)) { - boss->fwork[1] = ((boss->unk_04C - 38) * 360.0f) / 102.0f; + this->swork[33] = 1; + + if ((this->animFrame >= 38) && (this->animFrame < 141)) { + this->fwork[1] = ((this->animFrame - 38) * 360.0f) / 102.0f; } - Math_SmoothStepToAngle(&boss->fwork[49], boss->fwork[1], 0.5f, 180.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - boss->unk_04C++; - if (boss->unk_04C >= (Animation_GetFrameCount(&D_TI_A009990) * 2)) { - boss->swork[33] = 0; - boss->fwork[48] = 0; + + Math_SmoothStepToAngle(&this->fwork[49], this->fwork[1], 0.5f, 180.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.0f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + + this->animFrame++; + if (this->animFrame >= (Animation_GetFrameCount(&D_TI_A009990) * 2)) { + this->swork[33] = 0; + this->fwork[48] = 0; spB8 = 1; } break; + case 13: - if (boss->swork[34] == 2) { - if ((boss->fwork[48] >= 38.0f) && (boss->fwork[48] <= 140.0f)) { - boss->fwork[1] = ((boss->fwork[48] - 38.0f) * 360.0f) / 102.0f; + if (this->swork[34] == 2) { + if ((this->fwork[48] >= 38.0f) && (this->fwork[48] <= 140.0f)) { + this->fwork[1] = ((this->fwork[48] - 38.0f) * 360.0f) / 102.0f; } - Math_SmoothStepToAngle(&boss->fwork[49], boss->fwork[1], 0.5f, 180.0f, 0.0f); + Math_SmoothStepToAngle(&this->fwork[49], this->fwork[1], 0.5f, 180.0f, 0.0f); } - Math_SmoothStepToF(&boss->fwork[0], 0.5f, 1.0f, 0.02f, 0.01f); - Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, boss->fwork[0], 360.0f, 0.01f); - if (boss->swork[38] & 1) { - boss->unk_04C++; + + Math_SmoothStepToF(&this->fwork[0], 0.5f, 1.0f, 0.02f, 0.01f); + Math_SmoothStepToVec3fArray(D_i5_801BC978, D_i5_801BCDC8, 1, 92, this->fwork[0], 360.0f, 0.01f); + + if (this->swork[38] & 1) { + this->animFrame++; } + D_i5_801BBEF0[6] = 2; - if (boss->unk_04C == 30) { - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_HEARTBEAT); + + if (this->animFrame == 30) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_HEARTBEAT); D_i5_801BBEF0[7] = 0; - boss->obj.status = OBJ_DYING; + this->obj.status = OBJ_DYING; D_i5_801BBEF4[12] = 0.0f; - boss->fwork[35] = 0.0f; - boss->unk_044 = 0; - boss->timer_050 = 280; + this->fwork[35] = 0.0f; + this->unk_044 = 0; + this->timer_050 = 280; D_i5_801BBEF0[16] = 0; D_i5_801BBEF0[17] = 0; - boss->swork[23] = 0; + this->swork[23] = 0; D_i5_801BBEF0[6] = 80; D_i5_801BBEF0[7] = 0; for (i = 0; i < ARRAY_COUNTU(D_i5_801BBF00); i++) { @@ -4550,51 +4793,60 @@ void Titania_80193DF0(Boss* boss) { } break; } - pad2 = boss->swork[34]; + + pad2 = this->swork[34]; switch (pad2) { case 0: break; + case 1: - boss->fwork[48] += boss->fwork[2]; - if (Animation_GetFrameCount(&D_TI2_70096EC) * 2 <= boss->fwork[48]) { - boss->fwork[48] -= Animation_GetFrameCount(&D_TI2_70096EC) * 2; - } else if (boss->fwork[48] < 0.0f) { - boss->fwork[48] = boss->fwork[48] + (Animation_GetFrameCount(&D_TI2_70096EC) * 2 - 1.0f); + this->fwork[48] += this->fwork[2]; + if (Animation_GetFrameCount(&D_TI2_70096EC) * 2 <= this->fwork[48]) { + this->fwork[48] -= Animation_GetFrameCount(&D_TI2_70096EC) * 2; + } else if (this->fwork[48] < 0.0f) { + this->fwork[48] = this->fwork[48] + (Animation_GetFrameCount(&D_TI2_70096EC) * 2 - 1.0f); } break; + case 2: - boss->fwork[48] += 1.0f; - if (Animation_GetFrameCount(&D_TI_A009990) * 2 <= boss->fwork[48]) { - if (boss->state == 13) { - boss->fwork[0] = 0.0f; - boss->swork[34] = 1; - boss->fwork[48] = 0; + this->fwork[48] += 1.0f; + if (Animation_GetFrameCount(&D_TI_A009990) * 2 <= this->fwork[48]) { + if (this->state == 13) { + this->fwork[0] = 0.0f; + this->swork[34] = 1; + this->fwork[48] = 0; } else { - boss->fwork[48] = 0; + this->fwork[48] = 0; } } break; } + if (spB8 == 1) { - boss->unk_04C = 0; - boss->fwork[0] = 0.0f; - boss->swork[3]--; - if (boss->swork[3] <= 0) { - boss->swork[1] = 7 + RAND_INT(6.0f); - Titania_80193B30(boss); + this->animFrame = 0; + this->fwork[0] = 0.0f; + + this->swork[3]--; + if (this->swork[3] <= 0) { + this->swork[1] = 7 + RAND_INT(6.0f); + Titania_80193B30(this); } - boss->swork[4]++; - if (boss->swork[37] & 0x18) { + + this->swork[4]++; + + if (this->swork[37] & 0x18) { D_i5_801BBEF0[44]++; } + D_i5_801BBEF0[42] = 0; - pad2 = boss->swork[1]; + + pad2 = this->swork[1]; switch (pad2) { case 7: - if (boss->swork[37] & 2) { + if (this->swork[37] & 2) { pad = 0; for (i = 0; i < 4; i++) { - if (boss->swork[9 + i] <= 0) { + if (this->swork[9 + i] <= 0) { pad++; } } @@ -4602,88 +4854,91 @@ void Titania_80193DF0(Boss* boss) { if ((pad != 4) && gTeamShields[TEAM_ID_PEPPY] > 0) { Radio_PlayMessage(gMsg_ID_4095, RCID_PEPPY); } - boss->swork[37] &= ~2; + this->swork[37] &= ~2; } break; + case 9: - if (boss->swork[37] & 1) { - if ((boss->swork[29] != 0) && gTeamShields[TEAM_ID_FALCO] > 0) { + if (this->swork[37] & 1) { + if ((this->swork[29] != 0) && gTeamShields[TEAM_ID_FALCO] > 0) { Radio_PlayMessage(gMsg_ID_4099, RCID_FALCO); } - boss->swork[37] &= ~1; + this->swork[37] &= ~1; } break; } } - while (boss->fwork[49] >= 360.0f) { - boss->fwork[49] -= 360.0f; + while (this->fwork[49] >= 360.0f) { + this->fwork[49] -= 360.0f; } - while (boss->fwork[49] < 0.0f) { - boss->fwork[49] += 360.0f; + while (this->fwork[49] < 0.0f) { + this->fwork[49] += 360.0f; } for (i = 0; i < 4; i++) { - if (boss->swork[9 + i] == 0) { - var_v1 = boss->swork[17 + i]; - if (boss->swork[13 + i] == D_i5_801BAB0C[i][var_v1]) { + if (this->swork[9 + i] == 0) { + var_v1 = this->swork[17 + i]; + if (this->swork[13 + i] == D_i5_801BAB0C[i][var_v1]) { do { D_i5_801BBF00[D_i5_801BAABC[i][var_v1]].unk_26 = 3; - boss->swork[17 + i]++; + this->swork[17 + i]++; var_v1++; } while (D_i5_801BAB0C[i][var_v1] == 0); if (D_i5_801BAB0C[i][var_v1] == -1) { - boss->swork[9 + i] = -1; + this->swork[9 + i] = -1; } else { - boss->swork[13 + i] = 0; + this->swork[13 + i] = 0; } } else { - boss->swork[13 + i]++; + this->swork[13 + i]++; } } } - if ((boss->state != 13) && (boss->swork[21] <= 0)) { - boss->swork[1] = 13; - boss->unk_04C = 0; - if (boss->swork[25] != 0) { - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_BOSS_BEAM0); - boss->swork[25] = 0; + + if ((this->state != 13) && (this->swork[21] <= 0)) { + this->swork[1] = 13; + this->animFrame = 0; + if (this->swork[25] != 0) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_BOSS_BEAM0); + this->swork[25] = 0; } - if (boss->swork[24] != 0) { - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_BOSS_CHARGE); - boss->swork[24] = 0; + if (this->swork[24] != 0) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_BOSS_CHARGE); + this->swork[24] = 0; } } - if (boss->state >= 7) { - if ((boss->fwork[15] <= 0.0f) && (boss->fwork[9] > 0.0f)) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + if (this->state >= 7) { + if ((this->fwork[15] <= 0.0f) && (this->fwork[9] > 0.0f)) { + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { - Matrix_RotateY(gCalcMatrix, boss->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &boss->fwork[8], &spC8); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[8], &spC8); effect->obj.status = OBJ_ACTIVE; effect->unk_78 = effect->unk_7A = 0; - effect->obj.pos.x = boss->obj.pos.x + spC8.x; - effect->obj.pos.y = boss->obj.pos.y + 3.0f; - effect->obj.pos.z = boss->obj.pos.z + spC8.z; - effect->obj.rot.y = boss->fwork[49] + -44.0f; + effect->obj.pos.x = this->obj.pos.x + spC8.x; + effect->obj.pos.y = this->obj.pos.y + 3.0f; + effect->obj.pos.z = this->obj.pos.z + spC8.z; + effect->obj.rot.y = this->fwork[49] + -44.0f; effect->unk_44 = 53; effect->info.cullDistance = 400.0f; effect->info.unk_14 = -1; effect->unk_74 = D_TI2_7009A80; } } - if ((boss->fwork[12] <= 0.0f) && (boss->fwork[6] > 0.0f)) { - effect = func_effect_8007783C(OBJ_EFFECT_394); + + if ((this->fwork[12] <= 0.0f) && (this->fwork[6] > 0.0f)) { + effect = Effect_Load(OBJ_EFFECT_394); if (effect != NULL) { - Matrix_RotateY(gCalcMatrix, boss->obj.rot.y * M_DTOR, MTXF_NEW); - Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &boss->fwork[5], &spC8); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); + Matrix_MultVec3f(gCalcMatrix, (Vec3f*) &this->fwork[5], &spC8); effect->obj.status = OBJ_ACTIVE; effect->unk_78 = effect->unk_7A = 0; - effect->obj.pos.x = boss->obj.pos.x + spC8.x; - effect->obj.pos.y = boss->obj.pos.y + 3.0f; - effect->obj.pos.z = boss->obj.pos.z + spC8.z; - effect->obj.rot.y = boss->fwork[49] + 44.0f; + effect->obj.pos.x = this->obj.pos.x + spC8.x; + effect->obj.pos.y = this->obj.pos.y + 3.0f; + effect->obj.pos.z = this->obj.pos.z + spC8.z; + effect->obj.rot.y = this->fwork[49] + 44.0f; effect->unk_44 = 53; effect->info.cullDistance = 400.0f; effect->info.unk_14 = -1; @@ -4691,33 +4946,34 @@ void Titania_80193DF0(Boss* boss) { } } } - if ((boss->state == 6) && ((boss->unk_04C == 134) || (boss->unk_04C == 188))) { - AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK2, boss->sfxSource, 4); - boss->swork[39] = 4; + + if ((this->state == 6) && ((this->animFrame == 134) || (this->animFrame == 188))) { + AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK2, this->sfxSource, 4); + this->swork[39] = 4; gCameraShake = 7; } - if (boss->state >= 7) { - if (((boss->fwork[15] > 0.0f) && (boss->fwork[9] <= 0.0f)) || - ((boss->fwork[12] > 0.0f) && (boss->fwork[6] <= 0.0f))) { - AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK2, boss->sfxSource, 4); - if (boss->state == 12) { - boss->swork[39] = 4; + if (this->state >= 7) { + if (((this->fwork[15] > 0.0f) && (this->fwork[9] <= 0.0f)) || + ((this->fwork[12] > 0.0f) && (this->fwork[6] <= 0.0f))) { + AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK2, this->sfxSource, 4); + if (this->state == 12) { + this->swork[39] = 4; gCameraShake = 20; } else { - boss->swork[39] = 2; + this->swork[39] = 2; gCameraShake = 5; } } - boss->fwork[12] = boss->fwork[6]; - boss->fwork[15] = boss->fwork[9]; + this->fwork[12] = this->fwork[6]; + this->fwork[15] = this->fwork[9]; } - if ((boss->state >= 7) && (D_i5_801B7738[boss->state] > 0.0f)) { + if ((this->state >= 7) && (D_i5_801B7738[this->state] > 0.0f)) { // Can use temp here - temp_f = Math_SmoothStepToF(&boss->obj.pos.z, gPlayer[0].pos.z - D_i5_801BBEF4[11], 0.1f, 14.0f, 0.001f); - boss->fwork[2] = (((-temp_f / 14.0f) * 1.2f) + 1.0f) * 2.0f; - boss->vel.z = -12.0f; + temp_f = Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].pos.z - D_i5_801BBEF4[11], 0.1f, 14.0f, 0.001f); + this->fwork[2] = (((-temp_f / 14.0f) * 1.2f) + 1.0f) * 2.0f; + this->vel.z = -12.0f; } - boss->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } #else #pragma GLOBAL_ASM("asm/us/rev1/nonmatchings/overlays/ovl_i5/fox_ti/Titania_80193DF0.s") @@ -4726,19 +4982,22 @@ void Titania_80193DF0(Boss*); static s16 D_i5_801B8D54[4] = { 30, 35, 60, 70 }; -void Titania_Boss_Update(Boss* boss) { +void Titania_TiGoras_Update(Boss* boss) { Vec3f sp3C; boss->swork[38]++; + if ((boss->dmgType != DMG_NONE) && (((boss->state >= 0) && (boss->state <= 1)) || ((boss->state >= 4) && (boss->state <= 6)))) { AUDIO_PLAY_SFX(NA_SE_EN_REFLECT, boss->sfxSource, 4); boss->dmgType = DMG_NONE; } + if ((gPlayer[0].grounded != 0) && (boss->swork[39] > 0)) { gControllerRumbleFlags[0] = 1; boss->swork[39]--; } + if (boss->swork[28] == 2) { if (gTeamShields[TEAM_ID_PEPPY] > 0) { Radio_PlayMessage(gMsg_ID_4091, RCID_PEPPY); @@ -4749,6 +5008,7 @@ void Titania_Boss_Update(Boss* boss) { if (D_i5_801BBEF0[45] >= 2) { D_i5_801BBEF0[45]--; } + if (boss->swork[30] == 4) { if ((boss->swork[37] & 8) && (D_i5_801BBEF0[44] == 0)) { Radio_PlayMessage(gMsg_ID_4110, RCID_SLIPPY); @@ -4759,9 +5019,10 @@ void Titania_Boss_Update(Boss* boss) { boss->swork[37] &= ~0x10; D_i5_801BBEF0[45] = 101; } + if (D_i5_801BBEF0[45] == 1) { gBossHealthBar = ((boss->swork[21] * 255.0f) / 100.0f); - gShowBossHealth = 1; + gShowBossHealth = true; D_i5_801BBEF0[45] = 0; } } @@ -4769,6 +5030,7 @@ void Titania_Boss_Update(Boss* boss) { if ((boss->state >= 3) && (boss->state <= 13)) { gBossFrameCount++; } + switch (boss->state) { case 0: case 1: @@ -4807,14 +5069,15 @@ void Titania_Boss_Update(Boss* boss) { gTeamShields[TEAM_ID_SLIPPY] = -2; break; } - break; + case 1: if (boss->swork[31] == 1) { SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 90); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 90); } break; + case 2: if (boss->swork[31] == 11) { gTeamShields[TEAM_ID_SLIPPY] = 1; @@ -4822,6 +5085,7 @@ void Titania_Boss_Update(Boss* boss) { gTeamShields[TEAM_ID_SLIPPY] = -2; } break; + case 3: switch (boss->swork[31]) { case 1: @@ -4834,6 +5098,7 @@ void Titania_Boss_Update(Boss* boss) { break; } break; + case 4: if (boss->swork[35] == 0) { if (D_i5_801BBEF0[42] == 0) { @@ -4844,12 +5109,14 @@ void Titania_Boss_Update(Boss* boss) { } D_i5_801BBEF0[42] = 1; break; + case 3: if ((D_i5_801BBEF0[8] == 0) && (gTeamShields[TEAM_ID_FALCO] > 0)) { Radio_PlayMessage(gMsg_ID_4097, RCID_FALCO); } D_i5_801BBEF0[42] = 1; break; + default: break; } @@ -4866,6 +5133,7 @@ void Titania_Boss_Update(Boss* boss) { } } } + if (boss->swork[37] & 4) { D_i5_801BBEF0[43]++; switch (D_i5_801BBEF0[43]) { @@ -4933,7 +5201,7 @@ static f32 D_i5_801B8E24[4][2] = { { 1.0f, -1.0f }, }; -void Titania_Boss_Draw(Boss* boss) { +void Titania_TiGoras_Draw(TiGoras* boss) { TexturedLine* temp_v0_6; f32 sp120; f32 temp_fs0; @@ -4955,6 +5223,9 @@ void Titania_Boss_Draw(Boss* boss) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); switch (boss->state) { + case 0: + break; + case 1: case 2: case 3: @@ -4964,7 +5235,7 @@ void Titania_Boss_Draw(Boss* boss) { Animation_DrawSkeleton(0, D_TI_A000EDC, &D_i5_801BCDC8[16], Titania_8018FC70, Titania_8019002C, boss, &gIdentityMatrix); Matrix_Pop(&gGfxMatrix); - D_TI_801B83A8[0] = 22.0f; + aTiGorasHitbox[0] = 22.0f; Matrix_Push(&gGfxMatrix); D_i5_801BBEF0[25] = 1; Animation_DrawSkeleton(0, D_TI_A000568, &D_i5_801BCDC8[0], Titania_801903A0, Titania_8019081C, boss, @@ -4976,10 +5247,12 @@ void Titania_Boss_Draw(Boss* boss) { &gIdentityMatrix); Matrix_Pop(&gGfxMatrix); break; + case 6: Animation_DrawSkeleton(0, D_TI_A001A70, D_i5_801BCDC8, Titania_80190A08, Titania_80191AE8, boss, &gIdentityMatrix); break; + case 7: case 8: case 9: @@ -4990,23 +5263,29 @@ void Titania_Boss_Draw(Boss* boss) { Animation_DrawSkeleton(0, D_TI_A001A70, D_i5_801BCDC8, Titania_80190A08, Titania_80191AE8, boss, &gIdentityMatrix); break; - case 0: - break; } + Matrix_Pop(&gGfxMatrix); + if (boss->obj.status != OBJ_DYING) { switch (boss->state) { case 6: Matrix_Push(&gGfxMatrix); + RCP_SetupDL(&gMasterDisp, SETUPDL_69); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0); + Matrix_RotateX(gGfxMatrix, -M_PI / 2, MTXF_APPLY); Matrix_Scale(gGfxMatrix, boss->fwork[47] * 10.0f, boss->fwork[47] * 10.0f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_1024AC0); + Matrix_Pop(&gGfxMatrix); break; + case 7: case 8: case 9: @@ -5015,21 +5294,28 @@ void Titania_Boss_Draw(Boss* boss) { case 12: case 13: Matrix_Push(&gGfxMatrix); + RCP_SetupDL(&gMasterDisp, SETUPDL_69); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0); + Matrix_RotateX(gGfxMatrix, -M_PI / 2, MTXF_APPLY); Matrix_Scale(gGfxMatrix, 10.0f, 10.0f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_1024AC0); + Matrix_Pop(&gGfxMatrix); break; } + if (boss->state == 11) { if (boss->swork[24] != 0) { Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, boss->fwork[17], boss->fwork[18], boss->fwork[19] + 50.0f, MTXF_APPLY); RCP_SetupDL_14(); + for (i = 0; i < 3; i++) { sp120 = (boss->fwork[43] + i) / 3.0f; temp_fs2 = boss->fwork[45] * sp120; @@ -5048,6 +5334,7 @@ void Titania_Boss_Draw(Boss* boss) { } Matrix_Pop(&gGfxMatrix); } + Matrix_Translate(gGfxMatrix, boss->fwork[17], boss->fwork[18], boss->fwork[19], MTXF_APPLY); if (D_i5_801BBEF0[7] != 0) { @@ -5061,6 +5348,7 @@ void Titania_Boss_Draw(Boss* boss) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 120, 255, 220, D_i5_801BBEF0[7] * 50); gSPDisplayList(gMasterDisp++, D_BG_PLANET_20112C0); Matrix_Pop(&gGfxMatrix); + if (D_i5_801BBEF0[7] > 0) { sp120 = (D_i5_801BBEF0[7] - 1) * 24.0f; Matrix_Scale(gGfxMatrix, sp120, 1.0f, sp120, MTXF_APPLY); @@ -5074,78 +5362,101 @@ void Titania_Boss_Draw(Boss* boss) { if (D_i5_801BBEF0[16] > 0) { temp = D_i5_801BBEF0[16] - 1; Matrix_Push(&gGfxMatrix); + Matrix_RotateY(gGfxMatrix, (boss->fwork[21] - 90.0f) * M_DTOR, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, (boss->fwork[22] - 180.0f) * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gGfxMatrix, (boss->fwork[20] + ((boss->unk_04C - 15) * 15.6f)) * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, (boss->fwork[20] + ((boss->animFrame - 15) * 15.6f)) * M_DTOR, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, D_i5_801B8D5C[temp], D_i5_801B8D5C[temp], D_i5_801B8D5C[temp + 25], MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL(&gMasterDisp, SETUPDL_49); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 178); gDPSetEnvColor(gMasterDisp++, 0, 128, 60, 0); gSPDisplayList(gMasterDisp++, D_TI2_7005300); + Matrix_Pop(&gGfxMatrix); } + if (D_i5_801BBEF0[17] > 0) { Matrix_Push(&gGfxMatrix); + Matrix_RotateY(gGfxMatrix, (boss->fwork[21] - 90.0f) * M_DTOR, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, (boss->fwork[22] - 180.0f) * M_DTOR, MTXF_APPLY); - Matrix_RotateZ(gGfxMatrix, (boss->fwork[20] + ((boss->unk_04C - 15) * 15.6f)) * M_DTOR * 3.0f, + Matrix_RotateZ(gGfxMatrix, (boss->fwork[20] + ((boss->animFrame - 15) * 15.6f)) * M_DTOR * 3.0f, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, 4.0f, 4.0f, 4.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + RCP_SetupDL(&gMasterDisp, SETUPDL_49); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) ((D_i5_801BBEF0[17] * 89.0f) / 3.0f)); gDPSetEnvColor(gMasterDisp++, 0, 128, 60, 0); gSPDisplayList(gMasterDisp++, D_TI2_7005300); + Matrix_Pop(&gGfxMatrix); } if (boss->swork[25] != 0) { sp120 = boss->fwork[41] / 40.0f; temp_fs2 = boss->fwork[42] / 700.0f; + Matrix_RotateY(gGfxMatrix, (boss->fwork[21] - 90.0f) * M_DTOR, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, (boss->fwork[22] - 180.0f) * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, (boss->fwork[20] - ((s32) (boss->swork[38] % 8U) * 43.0f)) * M_DTOR, MTXF_APPLY); + Matrix_Push(&gGfxMatrix); Matrix_Scale(gGfxMatrix, half * sp120, half * sp120, temp_fs2, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL(&gMasterDisp, SETUPDL_72); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 178); gDPSetEnvColor(gMasterDisp++, 0, 128, 60, 0); gSPDisplayList(gMasterDisp++, D_TI_8000D90); + Matrix_Pop(&gGfxMatrix); Matrix_Scale(gGfxMatrix, sp120, sp120, temp_fs2, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); + gDPPipeSync(gMasterDisp++); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 64); gDPSetEnvColor(gMasterDisp++, 0, 128, 110, 0); gSPDisplayList(gMasterDisp++, D_TI_8000D90); + Matrix_RotateY(gCalcMatrix, (boss->fwork[21] - 90.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, (boss->fwork[22] - 180.0f) * M_DTOR, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, (boss->fwork[20] + boss->fwork[42]) * M_DTOR, MTXF_APPLY); + temp_fs0 = boss->obj.pos.x + boss->fwork[17]; temp_fs1 = boss->obj.pos.y + boss->fwork[18]; temp_fs2 = boss->obj.pos.z + boss->fwork[19]; + for (i = 0; i < 4; i++) { if (D_i5_801BBEF0[9 + i] != 0) { temp_v1_28 = D_i5_801BBEF0[9 + i] - 1; + spF4.x = D_i5_801B8E24[i][0] * boss->fwork[41]; spF4.y = D_i5_801B8E24[i][1] * boss->fwork[41]; spF4.z = boss->fwork[42]; + Matrix_MultVec3f(gCalcMatrix, &spF4, &spE8); + gTexturedLines[temp_v1_28].posAA.x = temp_fs0; gTexturedLines[temp_v1_28].posAA.y = temp_fs1; gTexturedLines[temp_v1_28].posAA.z = temp_fs2; gTexturedLines[temp_v1_28].posBB.x = temp_fs0 + spE8.x; gTexturedLines[temp_v1_28].posBB.y = temp_fs1 + spE8.y; gTexturedLines[temp_v1_28].posBB.z = temp_fs2 + spE8.z; + if (boss->swork[32] == 0) { gTexturedLines[temp_v1_28].mode = 0; } else { gTexturedLines[temp_v1_28].mode = 1; } + gTexturedLines[temp_v1_28].prim.r = 0; gTexturedLines[temp_v1_28].prim.b = 0; gTexturedLines[temp_v1_28].prim.g = 0; @@ -5161,19 +5472,23 @@ void Titania_Boss_Draw(Boss* boss) { static Vec3f D_i5_801B8E44 = { 3.0f, 0.0f, 0.0f }; -void Titania_801990DC(Boss* boss) { +void Titania_801990DC(TiGoras* this) { s32 i; Vec3f sp60; Actor* actor; - if (boss->unk_044 == 0) { - AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DW_CRY, boss->sfxSource, 4); + if (this->unk_044 == 0) { + AUDIO_PLAY_SFX(NA_SE_EN_TIBOSS_DW_CRY, this->sfxSource, 4); + SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 50); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 50); - func_effect_8007A568(boss->obj.pos.x, boss->obj.pos.y + 250.0f, boss->obj.pos.z, 40.0f); - Boss_AwardBonus(boss); - gShowBossHealth = 0; - actor = gActors; + + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y + 250.0f, this->obj.pos.z, 40.0f); + Boss_AwardBonus(this); + + gShowBossHealth = false; + + actor = &gActors[0]; for (i = 0; i < ARRAY_COUNT(gActors); i++, actor++) { if ((actor->obj.status == OBJ_ACTIVE) && (actor->obj.id == OBJ_ACTOR_DEBRIS) && (actor->state == 40)) { actor->gravity = 0.2f; @@ -5185,16 +5500,21 @@ void Titania_801990DC(Boss* boss) { actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { actor->state = 40; + actor->unk_046 = D_i5_801B7770[i][5]; actor->unk_048 = D_i5_801B7770[i][1]; - Matrix_RotateY(gCalcMatrix, boss->obj.rot.y * M_DTOR, MTXF_NEW); + + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); Matrix_MultVec3f(gCalcMatrix, &D_i5_801BBF00[i].unk_00.pos, &sp60); - actor->obj.pos.x = boss->obj.pos.x + sp60.x; - actor->obj.pos.y = boss->obj.pos.y + sp60.y; - actor->obj.pos.z = boss->obj.pos.z + sp60.z; - actor->obj.rot.x = D_i5_801BBF00[i].unk_00.rot.x + boss->obj.rot.x; - actor->obj.rot.y = D_i5_801BBF00[i].unk_00.rot.y + boss->obj.rot.y; - actor->obj.rot.z = D_i5_801BBF00[i].unk_00.rot.z + boss->obj.rot.z; + + actor->obj.pos.x = this->obj.pos.x + sp60.x; + actor->obj.pos.y = this->obj.pos.y + sp60.y; + actor->obj.pos.z = this->obj.pos.z + sp60.z; + + actor->obj.rot.x = D_i5_801BBF00[i].unk_00.rot.x + this->obj.rot.x; + actor->obj.rot.y = D_i5_801BBF00[i].unk_00.rot.y + this->obj.rot.y; + actor->obj.rot.z = D_i5_801BBF00[i].unk_00.rot.z + this->obj.rot.z; + if (i == 51) { actor->vel.x = RAND_FLOAT(10.0f) - 5.0f; actor->vel.y = 30.0f; @@ -5209,84 +5529,103 @@ void Titania_801990DC(Boss* boss) { Matrix_Pop(&gCalcMatrix); actor->vel.x = sp60.x; actor->vel.y = SIGN_OF(D_i5_801BBF00[i].unk_00.pos.y - 250.0f) - RAND_FLOAT(0.5f) + 0.5f; - actor->vel.z = (boss->vel.z * 0.5f) + sp60.z; + actor->vel.z = (this->vel.z * 0.5f) + sp60.z; actor->gravity = 0.1f; } } D_i5_801BBF00[i].unk_26 = 4; } } - boss->unk_044 = 1; + this->unk_044 = 1; } else { - boss->obj.pos.z = gPlayer[0].pos.z; + this->obj.pos.z = gPlayer[0].pos.z; } - switch (boss->timer_050) { + switch (this->timer_050) { case 100: actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { actor->fwork[0] = ((Rand_ZeroOne() < 0.5f) ? -1 : 1) * (RAND_FLOAT(1.0f) + 1.0f); actor->fwork[1] = ((Rand_ZeroOne() < 0.5f) ? -1 : 1) * (RAND_FLOAT(1.0f) + 1.0f); + actor->state = 40; + actor->unk_046 = 25; actor->unk_048 = 0; actor->unk_04A = 4 | 2; + actor->fwork[3] = 0.0f; actor->fwork[4] = -200.0f; + actor->obj.pos.x = gPlayer[0].pos.x; actor->obj.pos.y = 500.0f; actor->obj.pos.z = gPlayer[0].trueZpos + actor->fwork[4]; + actor->obj.rot.y = (RAND_FLOAT(5.0f) + 90.0f) - 2.5f; actor->obj.rot.z = (RAND_FLOAT(5.0f) + 180.0f) - 2.5f; + actor->vel.y = -10.0f; actor->gravity = 0.8f; } break; + case 120: actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { actor->fwork[0] = ((Rand_ZeroOne() < 0.5f) ? -1 : 1) * (RAND_FLOAT(5.0f) + 5.0f); actor->fwork[1] = ((Rand_ZeroOne() < 0.5f) ? -1 : 1) * (RAND_FLOAT(5.0f) + 5.0f); + actor->state = 40; + actor->unk_046 = 2; actor->unk_048 = 1; actor->unk_04A = 4 | 2; + actor->iwork[1] = (s32) 1; actor->fwork[3] = -150.0f; actor->fwork[4] = -200.0f; actor->fwork[5] = 200.0f; + actor->obj.pos.x = gPlayer[0].pos.x + actor->fwork[3]; actor->obj.pos.y = 500.0f; actor->obj.pos.z = gPlayer[0].trueZpos + actor->fwork[4]; + actor->obj.rot.z = 90.0f; actor->vel.y = -10.0f; actor->gravity = 0.8f; } break; + case 140: actor = Game_SpawnActor(OBJ_ACTOR_DEBRIS); if (actor != NULL) { actor->fwork[0] = ((Rand_ZeroOne() < 0.5f) ? -1 : 1) * (RAND_FLOAT(1.0f) + 1.0f); actor->fwork[1] = ((Rand_ZeroOne() < 0.5f) ? -1 : 1) * (RAND_FLOAT(1.0f) + 1.0f); + actor->state = 40; + actor->unk_046 = 2; actor->unk_048 = 1; actor->unk_04A = 4 | 2; + actor->iwork[1] = 2; actor->fwork[3] = 100.0f; actor->fwork[4] = -100.0f; actor->fwork[5] = 200.0f; + actor->obj.pos.x = gPlayer[0].pos.x + actor->fwork[3]; actor->obj.pos.y = 500.0f; actor->obj.pos.z = gPlayer[0].trueZpos + actor->fwork[4]; + actor->obj.rot.z = 90.0f; actor->vel.y = -10.0f; actor->gravity = 0.8f; } break; } - if ((boss->timer_050 == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { - Object_Kill(&boss->obj, boss->sfxSource); + + if ((this->timer_050 == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { + Object_Kill(&this->obj, this->sfxSource); gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE; gPlayer[0].csState = 0; } diff --git a/src/overlays/ovl_i5/fox_ti_cs.c b/src/overlays/ovl_i5/fox_ti_cs.c index 5425912f..ad1013fa 100644 --- a/src/overlays/ovl_i5/fox_ti_cs.c +++ b/src/overlays/ovl_i5/fox_ti_cs.c @@ -8,34 +8,34 @@ f32 D_i5_801B7328[] = { 1000.0f, 1000.0f, 1000.0f, 4000.0f }; f32 D_i5_801B7338[] = { 1000.0f, 1000.0f, 1000.0f, -4000.0f }; f32 D_i5_801B7348[] = { 90.0f, -90.0f, 0.0f }; -void Titania_80187530(Actor* actor) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; +void Titania_80187530(ActorCutscene* this) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos.x = 0.0f; - actor->obj.pos.y = 3000.0f; - actor->obj.pos.z = 0.0f; + this->obj.pos.x = 0.0f; + this->obj.pos.y = 3000.0f; + this->obj.pos.z = 0.0f; - actor->obj.rot.y = 180.0f; - Object_SetInfo(&actor->info, actor->obj.id); - AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, actor->sfxSource, 0); - actor->animFrame = 1; + this->obj.rot.y = 180.0f; + Object_SetInfo(&this->info, this->obj.id); + AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, this->sfxSource, 0); + this->animFrame = 1; } -void Titania_801875D0(Actor* actor, s32 arg1) { - Actor_Initialize(actor); - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; +void Titania_801875D0(ActorCutscene* this, s32 arg1) { + Actor_Initialize(this); + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.pos.x = D_i5_801B72A0[arg1].x; - actor->obj.pos.y = D_i5_801B72A0[arg1].y + 3000.0f; - actor->obj.pos.z = D_i5_801B72A0[arg1].z; + this->obj.pos.x = D_i5_801B72A0[arg1].x; + this->obj.pos.y = D_i5_801B72A0[arg1].y + 3000.0f; + this->obj.pos.z = D_i5_801B72A0[arg1].z; - actor->obj.rot.y = 180.0f; - actor->iwork[11] = 1; - Object_SetInfo(&actor->info, actor->obj.id); - AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); + this->obj.rot.y = 180.0f; + this->iwork[11] = 1; + Object_SetInfo(&this->info, this->obj.id); + AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, this->sfxSource, 4); } void Titania_LevelStart(Player* player) { @@ -211,9 +211,9 @@ void Titania_LevelStart(Player* player) { } if (player->pos.y < 100.0f) { - func_effect_8007A900(RAND_FLOAT_CENTERED(30.0f) + player->pos.x, 30.0f, - RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f, 255, 12, - 1); + Effect_Effect359_Spawn(RAND_FLOAT_CENTERED(30.0f) + player->pos.x, 30.0f, + RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f, 255, 12, + 1); Object_Kill(&gActors[3].obj, gActors[3].sfxSource); } @@ -248,38 +248,38 @@ void Titania_LevelStart(Player* player) { Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[0], sp64, 0.00f); } -void Titania_80188108(Actor* actor, s32 arg1) { +void Titania_80188108(Actor* this, s32 index) { Player* player = &gPlayer[0]; - Actor_Initialize(actor); - actor->obj.pos.x = D_i5_801B7318[arg1] + player->pos.x; - actor->obj.pos.y = D_i5_801B7328[arg1] + player->pos.y; - actor->obj.pos.z = D_i5_801B7338[arg1] + player->pos.z; + Actor_Initialize(this); + this->obj.pos.x = D_i5_801B7318[index] + player->pos.x; + this->obj.pos.y = D_i5_801B7328[index] + player->pos.y; + this->obj.pos.z = D_i5_801B7338[index] + player->pos.z; - actor->fwork[7] = RAND_FLOAT(360.0f); - actor->fwork[8] = RAND_FLOAT(360.0f); + this->fwork[7] = RAND_FLOAT(360.0f); + this->fwork[8] = RAND_FLOAT(360.0f); - actor->vel.x = player->vel.x; - actor->vel.y = player->vel.y; - actor->vel.z = player->vel.z; + this->vel.x = player->vel.x; + this->vel.y = player->vel.y; + this->vel.z = player->vel.z; - actor->obj.status = OBJ_INIT; - actor->obj.id = OBJ_ACTOR_CUTSCENE; - actor->obj.rot.y = 180.0f; + this->obj.status = OBJ_INIT; + this->obj.id = OBJ_ACTOR_CUTSCENE; + this->obj.rot.y = 180.0f; - Object_SetInfo(&actor->info, actor->obj.id); + Object_SetInfo(&this->info, this->obj.id); - if (arg1 < 3) { - actor->iwork[11] = 1; - actor->drawShadow = true; - actor->fwork[3] = D_i5_801B7348[arg1]; - actor->state = 30; - AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); + if (index < 3) { + this->iwork[11] = 1; + this->drawShadow = true; + this->fwork[3] = D_i5_801B7348[index]; + this->state = 30; + AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, this->sfxSource, 4); } else { - actor->animFrame = 1; - actor->state = 20; - AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, actor->sfxSource, 0); - actor->fwork[9] = 20.0f; + this->animFrame = 1; + this->state = 20; + AUDIO_PLAY_SFX(NA_SE_GREATFOX_ENGINE, this->sfxSource, 0); + this->fwork[9] = 20.0f; } } @@ -357,7 +357,7 @@ void Titania_LevelComplete(Player* player) { Player_CollisionCheck(player); Player_UpdatePath(player); - if (((gGameFrameCount % 4) == 0)) { + if ((gGameFrameCount % 4) == 0) { f32 x; f32 y; f32 z; @@ -367,8 +367,8 @@ void Titania_LevelComplete(Player* player) { y = D_i5_801B72B8[i].y + RAND_FLOAT_CENTERED(10.0f); z = D_i5_801B72B8[i].z; - func_effect_8007A900(player->pos.x + x, player->pos.y + y, player->trueZpos + z, - RAND_FLOAT(0.5f) + 0.5f, 255, 21, 0); + Effect_Effect359_Spawn(player->pos.x + x, player->pos.y + y, player->trueZpos + z, + RAND_FLOAT(0.5f) + 0.5f, 255, 21, 0); } } break; @@ -390,13 +390,13 @@ void Titania_LevelComplete(Player* player) { Math_SmoothStepToF(&player->unk_16C, 2.0f, 1.0f, 0.2f, 0.0f); if (gCsFrameCount < 1470) { - func_effect_8007A900(RAND_FLOAT_CENTERED(30.0f) + (player->pos.x + 30.0f), 30.0f, - RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f, 255, 12, - 1); + Effect_Effect359_Spawn(RAND_FLOAT_CENTERED(30.0f) + (player->pos.x + 30.0f), 30.0f, + RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f, 255, 12, + 1); } - func_effect_8007A900(RAND_FLOAT_CENTERED(30.0f) + (player->pos.x - 30.0f), 30.0f, - RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f, 255, 12, 1); + Effect_Effect359_Spawn(RAND_FLOAT_CENTERED(30.0f) + (player->pos.x - 30.0f), 30.0f, + RAND_FLOAT_CENTERED(30.0f) + player->trueZpos, RAND_FLOAT(2.0f) + 3.5f, 255, 12, 1); Math_SmoothStepToF(&player->rockAngle, SIN_DEG(gGameFrameCount * 6.0f) * 18.0f, 0.1f, 100.0f, 0.0f); Math_SmoothStepToF(&player->yBob, SIN_DEG(gGameFrameCount * 3.0f) * 5.0f, 0.1f, 100.0f, 0.0f); diff --git a/src/overlays/ovl_i6/fox_andross.c b/src/overlays/ovl_i6/fox_andross.c index 314ec180..0522d18c 100644 --- a/src/overlays/ovl_i6/fox_andross.c +++ b/src/overlays/ovl_i6/fox_andross.c @@ -29,45 +29,48 @@ static f32* D_i6_801A6760[12] = { void Andross_80193710(void); -void Andross_80187530(Actor* actor) { +void Andross_80187530(ActorEvent* this) { s32 index; - switch (actor->unk_048) { + switch (this->unk_048) { case 0: break; + case 1: - actor->animFrame += (s32) actor->fwork[22]; - if (actor->animFrame >= Animation_GetFrameCount(&D_VE2_6014658)) { - actor->animFrame = Animation_GetFrameCount(&D_VE2_6014658) - 1; + this->animFrame += (s32) this->fwork[22]; + if (this->animFrame >= Animation_GetFrameCount(&D_VE2_6014658)) { + this->animFrame = Animation_GetFrameCount(&D_VE2_6014658) - 1; } break; + case 2: - actor->animFrame -= (s32) actor->fwork[22]; - if (actor->animFrame <= 0) { - actor->animFrame = 0; + this->animFrame -= (s32) this->fwork[22]; + if (this->animFrame <= 0) { + this->animFrame = 0; } break; + default: break; } - index = actor->animFrame / 18.0f; - actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_i6_801A6760[index]); - actor->obj.rot.z = D_Andross_801A7F68; + index = this->animFrame / 18.0f; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_i6_801A6760[index]); + this->obj.rot.z = D_Andross_801A7F68; } -bool Andross_8018767C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Andross_8018767C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { if (limbIndex == 13) { *dList = NULL; } return 0; } -void Andross_8018769C(Actor* actor) { - Vec3f sp28[20]; +void Andross_8018769C(ActorEvent* this) { + Vec3f frameTable[20]; - Animation_GetFrameData(&D_VE2_6014658, actor->animFrame, sp28); - Animation_DrawSkeleton(1, D_VE2_6014844, sp28, Andross_8018767C, NULL, NULL, &gIdentityMatrix); + Animation_GetFrameData(&D_VE2_6014658, this->animFrame, frameTable); + Animation_DrawSkeleton(1, D_VE2_6014844, frameTable, Andross_8018767C, NULL, NULL, &gIdentityMatrix); } void Andross_801876FC(void) { @@ -112,7 +115,7 @@ void Andross_801878A8() { scenery360->obj.pos.y = gLevelObjects[i].yPos; scenery360->obj.rot.y = gLevelObjects[i].rot.y; Object_SetInfo(&scenery360->info, scenery360->obj.id); - if (scenery360->obj.id == OBJ_SCENERY_131) { + if (scenery360->obj.id == OBJ_SCENERY_AND_PASSAGE) { scenery360->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_ANDROSS_C038CCC); } scenery360++; @@ -138,7 +141,7 @@ void Andross_801878A8() { } } - for (item = gItems, i = 0; i < 1000; i++) { + for (item = &gItems[0], i = 0; i < 1000; i++) { if (gLevelObjects[i].id <= OBJ_INVALID) { break; } @@ -193,7 +196,7 @@ void Andross_80187C5C(void) { scenery360->pathIndex = gLevelObjects[i].rot.z; } Object_SetInfo(&scenery360->info, scenery360->obj.id); - if (scenery360->obj.id == OBJ_SCENERY_131) { + if (scenery360->obj.id == OBJ_SCENERY_AND_PASSAGE) { scenery360->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_ANDROSS_C038CCC); } scenery360++; @@ -219,7 +222,7 @@ void Andross_80187C5C(void) { } } - for (item = gItems, i = 0; i < 1000; i++) { + for (item = &gItems[0], i = 0; i < 1000; i++) { if (gLevelObjects[i].id <= OBJ_INVALID) { break; } @@ -237,7 +240,7 @@ void Andross_80187C5C(void) { } } -void Andross_Actor199_Update(Actor* actor) { +void Andross_Actor199_Update(Actor199* this) { s32 i; f32 xDisplacement; f32 yDisplacement; @@ -250,59 +253,69 @@ void Andross_Actor199_Update(Actor* actor) { f32 temp_fv1; for (scenery360 = gScenery360, i = 0; i < 200; i++, scenery360++) { - if ((scenery360->obj.id == OBJ_SCENERY_147) && (scenery360->pathIndex == (u8) actor->counter_04E)) { - actor->fwork[3] = scenery360->obj.pos.x; - actor->fwork[4] = scenery360->obj.pos.y; - actor->fwork[5] = scenery360->obj.pos.z; + if ((scenery360->obj.id == OBJ_SCENERY_147) && (scenery360->pathIndex == (u8) this->counter_04E)) { + this->fwork[3] = scenery360->obj.pos.x; + this->fwork[4] = scenery360->obj.pos.y; + this->fwork[5] = scenery360->obj.pos.z; break; } } - actor->fwork[2] = 3.0f; - xDisplacement = actor->fwork[3] - actor->obj.pos.x; - yDisplacement = actor->fwork[4] - actor->obj.pos.y; - zDisplacement = actor->fwork[5] - actor->obj.pos.z; + + this->fwork[2] = 3.0f; + + xDisplacement = this->fwork[3] - this->obj.pos.x; + yDisplacement = this->fwork[4] - this->obj.pos.y; + zDisplacement = this->fwork[5] - this->obj.pos.z; + if ((fabsf(xDisplacement) < 300.0f) && (fabsf(yDisplacement) < 300.0f) && (fabsf(zDisplacement) < 300.0f)) { - actor->counter_04E++; + this->counter_04E++; } - if (((gGameFrameCount % 32) == 0)) { - actor->iwork[11] = 1; - actor->fwork[1] = 47.0f; - if ((fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 1000.0f) && - (fabsf(actor->obj.pos.y - gPlayer[0].pos.y) < 500.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 1000.0f)) { - actor->iwork[11] = 2; - actor->fwork[1] = 65.0f; + + if ((gGameFrameCount % 32) == 0) { + this->iwork[11] = 1; + this->fwork[1] = 47.0f; + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 1000.0f) && + (fabsf(this->obj.pos.y - gPlayer[0].pos.y) < 500.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 1000.0f)) { + this->iwork[11] = 2; + this->fwork[1] = 65.0f; } } - Math_SmoothStepToF(&actor->fwork[0], actor->fwork[1], 0.2f, 3.0f, 0.00001f); + Math_SmoothStepToF(&this->fwork[0], this->fwork[1], 0.2f, 3.0f, 0.00001f); + yaw = Math_RadToDeg(Math_Atan2F(xDisplacement, zDisplacement)); - Math_SmoothStepToAngle(&actor->rot_0F4.x, + + Math_SmoothStepToAngle(&this->rot_0F4.x, Math_RadToDeg(Math_Atan2F(yDisplacement, sqrtf(SQ(xDisplacement) + SQ(zDisplacement)))), - 0.1f, actor->fwork[2], 0.0f); - temp_fv1 = Math_SmoothStepToAngle(&actor->rot_0F4.y, yaw, 0.1f, actor->fwork[2], 0.0001f) * 40.0f; + 0.1f, this->fwork[2], 0.0f); + temp_fv1 = Math_SmoothStepToAngle(&this->rot_0F4.y, yaw, 0.1f, this->fwork[2], 0.0001f) * 40.0f; if (temp_fv1 < 0.0f) { var_fv0 = temp_fv1 * -1.0f; } else { var_fv0 = 360.0f - temp_fv1; } - Math_SmoothStepToAngle(&actor->obj.rot.z, var_fv0, 0.1f, 3.0f, 0.01f); + Math_SmoothStepToAngle(&this->obj.rot.z, var_fv0, 0.1f, 3.0f, 0.01f); + + this->obj.rot.y = this->rot_0F4.y; + this->obj.rot.x = -this->rot_0F4.x; + + Matrix_RotateY(gCalcMatrix, this->rot_0F4.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -this->rot_0F4.x * M_DTOR, MTXF_APPLY); - actor->obj.rot.y = actor->rot_0F4.y; - actor->obj.rot.x = -actor->rot_0F4.x; - Matrix_RotateY(gCalcMatrix, actor->rot_0F4.y * M_DTOR, MTXF_NEW); - Matrix_RotateX(gCalcMatrix, -actor->rot_0F4.x * M_DTOR, MTXF_APPLY); sp48.x = 0; sp48.y = 0; - sp48.z = actor->fwork[0]; + sp48.z = this->fwork[0]; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp48, &vel); - actor->vel.x = vel.x; - actor->vel.y = vel.y; - actor->vel.z = vel.z; + + this->vel.x = vel.x; + this->vel.y = vel.y; + this->vel.z = vel.z; } -void Andross_Actor199_Draw(Actor* actor) { - func_edisplay_8005B388(actor); +void Andross_Actor199_Draw(Actor199* this) { + func_edisplay_8005B388(this); } void Andross_80188468(void) { @@ -320,137 +333,147 @@ void Andross_80188468(void) { AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); } -void Andross_Actor286_Update(Actor* actor) { - Math_SmoothStepToF(&actor->vel.x, 0.0f, 0.2f, 0.5f, 0.0f); - Math_SmoothStepToF(&actor->vel.y, 0.0f, 0.2f, 0.5f, 0.0f); - Math_SmoothStepToF(&actor->vel.z, 0.0f, 0.2f, 0.5f, 0.0f); - if (actor->dmgType != DMG_NONE) { - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); - Object_Kill(&actor->obj, actor->sfxSource); - func_effect_8007B344(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 3.0f, 5); - } else if (actor->timer_0BC == 0) { - Object_Kill(&actor->obj, actor->sfxSource); +void Andross_AndBrainWaste_Update(AndBrainWaste* this) { + Math_SmoothStepToF(&this->vel.x, 0.0f, 0.2f, 0.5f, 0.0f); + Math_SmoothStepToF(&this->vel.y, 0.0f, 0.2f, 0.5f, 0.0f); + Math_SmoothStepToF(&this->vel.z, 0.0f, 0.2f, 0.5f, 0.0f); + + if (this->dmgType != DMG_NONE) { + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); + Object_Kill(&this->obj, this->sfxSource); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 3.0f, 5); + } else if (this->timer_0BC == 0) { + Object_Kill(&this->obj, this->sfxSource); } - actor->obj.rot.y = RAD_TO_DEG(-gPlayer[0].camYaw); - actor->obj.rot.x = RAD_TO_DEG(gPlayer[0].camPitch); - actor->rot_0F4.z += actor->fwork[0]; + + this->obj.rot.y = RAD_TO_DEG(-gPlayer[0].camYaw); + this->obj.rot.x = RAD_TO_DEG(gPlayer[0].camPitch); + this->rot_0F4.z += this->fwork[0]; } -void Andross_Actor286_Draw(Actor* actor) { +void Andross_AndBrainWaste_Draw(AndBrainWaste* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_61); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); - Matrix_RotateZ(gGfxMatrix, actor->rot_0F4.z * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, this->rot_0F4.z * M_DTOR, MTXF_APPLY); Matrix_Scale(gGfxMatrix, 1.1f, 0.9f, 1.0f, MTXF_APPLY); - Matrix_RotateZ(gGfxMatrix, -actor->rot_0F4.z * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, -this->rot_0F4.z * M_DTOR, MTXF_APPLY); Matrix_Scale(gGfxMatrix, 1.1f, 0.9f, 1.0f, MTXF_APPLY); Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_VE2_6009300); } -void Andross_801887B0(Actor* actor, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { - Actor_Initialize(actor); - actor->obj.status = OBJ_ACTIVE; - actor->obj.id = OBJ_ACTOR_286; - actor->vel.x = xVel; - actor->vel.y = yVel; - actor->vel.z = zVel; - actor->obj.pos.x = xPos; - actor->obj.pos.y = yPos; - actor->obj.pos.z = zPos; +void Andross_AndBrainWaste_Setup(AndBrainWaste* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { + Actor_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_ACTOR_AND_BRAIN_WASTE; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + if (Rand_ZeroOne() < 0.5f) { - actor->fwork[0] = 10.0f; + this->fwork[0] = 10.0f; } else { - actor->fwork[0] = -10.0f; + this->fwork[0] = -10.0f; } - actor->timer_0BC = 300; - Object_SetInfo(&actor->info, actor->obj.id); + + this->timer_0BC = 300; + Object_SetInfo(&this->info, this->obj.id); } -void Andross_8018887C(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { +void Andross_AndBrainWaste_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel) { s32 i; for (i = 0; i < ARRAY_COUNT(gActors); i++) { if (gActors[i].obj.status == OBJ_FREE) { - Andross_801887B0(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); + Andross_AndBrainWaste_Setup(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel); break; } } } -void Andross_801888F4(Actor* actor) { +void Andross_801888F4(ActorAllRange* this) { s32 i; - actor->obj.rot.z -= 8.0f; - if ((actor->timer_0BC % 2U) == 1) { - func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 5.0f); + this->obj.rot.z -= 8.0f; + if ((this->timer_0BC % 2U) == 1) { + func_effect_8007D2C8(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 5.0f); } - if ((actor->timer_0BC == 0) || (actor->dmgType != DMG_NONE)) { - func_effect_8007BFFC(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, actor->vel.x, actor->vel.y, - actor->vel.z, 7.0f, 20); - func_effect_8007B344(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f, 5); + if ((this->timer_0BC == 0) || (this->dmgType != DMG_NONE)) { + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, this->vel.z, 7.0f, + 20); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f, 5); for (i = 0; i < 6; i++) { - func_effect_800794CC(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 1.0f); + Effect_Effect357_Spawn50(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 1.0f); } - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_M); - Object_Kill(&actor->obj, actor->sfxSource); - BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 5); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_M); + Object_Kill(&this->obj, this->sfxSource); + BonusText_Display(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 5); gHitCount += 6; D_ctx_80177850 = 15; } } -void Andross_80188A4C(Boss* boss) { +void Andross_80188A4C(AndBrain* this) { - if (boss->damage > 20) { - boss->damage = 20; + if (this->damage > 20) { + this->damage = 20; } - if (boss->dmgType != DMG_NONE) { - boss->dmgType = DMG_NONE; - if (boss->state < 10 && !(boss->fwork[21] < 250.0f)) { - switch (boss->dmgPart) { + + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + + if (this->state < 10 && !(this->fwork[21] < 250.0f)) { + switch (this->dmgPart) { case 0: - boss->swork[1] = 15; - boss->swork[7] = 30; + this->swork[1] = 15; + this->swork[7] = 30; break; + case 1: case 2: - if (boss->swork[4] == 0) { - boss->swork[2] = 10; - boss->swork[3] = 15; - AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, boss->sfxSource, 4); - boss->health -= boss->damage; - if ((boss->health != 0) && (boss->health <= 0)) { + if (this->swork[4] == 0) { + this->swork[2] = 10; + this->swork[3] = 15; + + AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, this->sfxSource, 4); + + this->health -= this->damage; + if ((this->health != 0) && (this->health <= 0)) { gScreenFlashTimer = 8; - AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, boss->sfxSource, 4); - Boss_AwardBonus(boss); + AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); + Boss_AwardBonus(this); gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY; - boss->state = 20; - boss->swork[1] = 1000; - boss->swork[2] = 1000; - boss->swork[6] = 1; + this->state = 20; + this->swork[1] = 1000; + this->swork[2] = 1000; + this->swork[6] = 1; D_ctx_80177A48[0] = 0.0f; D_ctx_80177A48[1] = 0.1f; gCsFrameCount = 0; - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_ANDROSS_BRAIN); - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_ANDROSS_CATCH); + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_ANDROSS_BRAIN); + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_ANDROSS_CATCH); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1); } } break; + default: - if (boss->swork[4] == 0) { - boss->swork[8]++; - if (boss->swork[8] >= 6) { - boss->swork[8] = 0; - boss->state = 12; - boss->timer_050 = 50; - boss->fwork[3] = gPlayer[0].pos.x; - boss->fwork[5] = gPlayer[0].trueZpos; - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_WARP, boss->sfxSource, 4); + if (this->swork[4] == 0) { + this->swork[8]++; + if (this->swork[8] >= 6) { + this->swork[8] = 0; + this->state = 12; + this->timer_050 = 50; + this->fwork[3] = gPlayer[0].pos.x; + this->fwork[5] = gPlayer[0].trueZpos; + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_WARP, this->sfxSource, 4); } } break; @@ -459,79 +482,86 @@ void Andross_80188A4C(Boss* boss) { } } -void Andross_80188CB8(Boss* boss) { +void Andross_80188CB8(AndBrain* this) { s32 i; Vec3f sp50; Vec3f sp44; - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_VE2_600C038)) { - boss->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_VE2_600C038)) { + this->animFrame = 0; } - Animation_GetFrameData(&D_VE2_600C038, boss->unk_04C, boss->vwork); + Animation_GetFrameData(&D_VE2_600C038, this->animFrame, this->vwork); - if (boss->swork[3] != 0) { - boss->swork[3]--; + if (this->swork[3] != 0) { + this->swork[3]--; } - if (boss->swork[2] != 0) { - boss->swork[2]--; - Math_SmoothStepToF(&boss->fwork[15], -15.0f, 0.8f, 5.0f, 0.0f); - Math_SmoothStepToF(&boss->fwork[16], 0.05f, 0.8f, 0.02f, 0.0f); + if (this->swork[2] != 0) { + this->swork[2]--; + Math_SmoothStepToF(&this->fwork[15], -15.0f, 0.8f, 5.0f, 0.0f); + Math_SmoothStepToF(&this->fwork[16], 0.05f, 0.8f, 0.02f, 0.0f); } else { - Math_SmoothStepToF(&boss->fwork[15], 4.0f, 0.05f, 0.2f, 0.0f); - Math_SmoothStepToF(&boss->fwork[16], 0.03f, 0.05f, 0.001f, 0.0f); - } - Math_SmoothStepToF(&boss->fwork[10], boss->fwork[11], boss->fwork[12], boss->fwork[13], 0.0f); - if (boss->swork[1] != 0) { - boss->swork[1]--; - boss->fwork[11] = 30.0f; - boss->fwork[12] = 0.8f; - boss->fwork[13] = 3.0f; - } else { - boss->fwork[11] = 8.0f; - boss->fwork[12] = 0.05f; - boss->fwork[13] = 0.5f; + Math_SmoothStepToF(&this->fwork[15], 4.0f, 0.05f, 0.2f, 0.0f); + Math_SmoothStepToF(&this->fwork[16], 0.03f, 0.05f, 0.001f, 0.0f); } - if (boss->swork[7] != 0) { - boss->swork[7]--; - if (((gGameFrameCount % 2) == 0)) { - Andross_8018887C(RAND_FLOAT_CENTERED(100.0f) + boss->obj.pos.x, - RAND_FLOAT_CENTERED(300.0f) + (boss->obj.pos.y - 250.0f), - RAND_FLOAT_CENTERED(100.0f) + boss->obj.pos.z, RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(50.0f)); + Math_SmoothStepToF(&this->fwork[10], this->fwork[11], this->fwork[12], this->fwork[13], 0.0f); + + if (this->swork[1] != 0) { + this->swork[1]--; + this->fwork[11] = 30.0f; + this->fwork[12] = 0.8f; + this->fwork[13] = 3.0f; + } else { + this->fwork[11] = 8.0f; + this->fwork[12] = 0.05f; + this->fwork[13] = 0.5f; + } + + if (this->swork[7] != 0) { + this->swork[7]--; + if ((gGameFrameCount % 2) == 0) { + Andross_AndBrainWaste_Spawn(RAND_FLOAT_CENTERED(100.0f) + this->obj.pos.x, + RAND_FLOAT_CENTERED(300.0f) + (this->obj.pos.y - 250.0f), + RAND_FLOAT_CENTERED(100.0f) + this->obj.pos.z, RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(50.0f)); } } - boss->fwork[14] += boss->fwork[15]; + + this->fwork[14] += this->fwork[15]; + Matrix_RotateY(gCalcMatrix, -gPlayer[0].camYaw, MTXF_NEW); - sp50.x = boss->vel.z * 0.25f; + + sp50.x = this->vel.z * 0.25f; sp50.y = 0.0f; - sp50.z = boss->vel.x * 0.25f; + sp50.z = this->vel.x * 0.25f; + Matrix_MultVec3f(gCalcMatrix, &sp50, &sp44); - boss->fwork[18] = -sp44.z; - boss->fwork[17] = sp44.x; - boss->swork[4] = 0; - boss->fwork[19] = -26.0f; + + this->fwork[18] = -sp44.z; + this->fwork[17] = sp44.x; + this->swork[4] = 0; + this->fwork[19] = -26.0f; for (i = 10; i < 12; i++) { if ((gActors[i].obj.status == OBJ_ACTIVE) && (gActors[i].obj.id == OBJ_ACTOR_ALLRANGE)) { gTexturedLines[i].mode = 50; gTexturedLines[i].xyScale = 1.0f; - gTexturedLines[i].posAA.x = boss->obj.pos.x; - gTexturedLines[i].posAA.y = boss->obj.pos.y - 200.0f; - gTexturedLines[i].posAA.z = boss->obj.pos.z; + gTexturedLines[i].posAA.x = this->obj.pos.x; + gTexturedLines[i].posAA.y = this->obj.pos.y - 200.0f; + gTexturedLines[i].posAA.z = this->obj.pos.z; gTexturedLines[i].timer = 3; gTexturedLines[i].posBB.x = gActors[i].obj.pos.x; gTexturedLines[i].posBB.y = gActors[i].obj.pos.y; gTexturedLines[i].posBB.z = gActors[i].obj.pos.z; - boss->swork[4] = 1; + this->swork[4] = 1; } } } -void Andross_80189098(Boss* boss) { - Actor* actor = &gActors[10]; +void Andross_80189098(AndBrain* this) { + ActorAllRange* actor = &gActors[10]; Actor_Initialize(actor); actor->obj.status = OBJ_INIT; @@ -541,7 +571,7 @@ void Andross_80189098(Boss* boss) { actor->health = 200; actor->obj.pos.x = 200.0f; actor->obj.pos.y = 0.0f; - actor->obj.pos.z = boss->obj.pos.z; + actor->obj.pos.z = this->obj.pos.z; Object_SetInfo(&actor->info, actor->obj.id); actor->info.hitbox = SEGMENTED_TO_VIRTUAL(&gCubeHitbox150); @@ -555,7 +585,7 @@ void Andross_80189098(Boss* boss) { actor->health = 200; actor->obj.pos.x = -200.0f; actor->obj.pos.y = 0.0f; - actor->obj.pos.z = boss->obj.pos.z; + actor->obj.pos.z = this->obj.pos.z; Object_SetInfo(&actor->info, actor->obj.id); actor->info.hitbox = SEGMENTED_TO_VIRTUAL(&gCubeHitbox150); @@ -583,7 +613,6 @@ void Andross_80189214(void) { gObjectLoadIndex = 0; // FAKE if (1) {} - PRINTF("FO_Game_Sw %d\n"); player->cam.at.x = 0.0f; player->cam.at.y = 0.0f; player->yRot_114 = 0.0f; @@ -594,19 +623,19 @@ void Andross_80189214(void) { Camera_UpdateArwingOnRails(player); } -void Andross_Actor290_Update(Actor* actor) { - if ((fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 1000.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 1000.0f)) { +void Andross_AndBossTimer_Update(AndBossTimer* this) { + PRINTF("FO_Game_Sw %d\n"); + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 1000.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 1000.0f)) { gStartAndrossFightTimer = 50; - Object_Kill(&actor->obj, actor->sfxSource); + Object_Kill(&this->obj, this->sfxSource); } } -void Andross_Actor288_Update(Actor* actor) { - +void Andross_AndRadio_Update(AndRadio* this) { if (gAllRangeCheckpoint == 0) { - actor->counter_04E++; - switch (actor->counter_04E) { + this->counter_04E++; + switch (this->counter_04E) { case 200: Radio_PlayMessage(gMsg_ID_8250, RCID_ANDROSS_RED); return; @@ -623,21 +652,21 @@ void Andross_Actor288_Update(Actor* actor) { } } -void Andross_Actor289_Update(Actor* actor) { +void Andross_AndJamesTrigger_Update(AndJamesTrigger* this) { s32 i; Player* player = &gPlayer[0]; if ((gDrawBackdrop != 7) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && - (fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 9000.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 9000.0f)) { + (fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 9000.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 9000.0f)) { gDrawBackdrop = 7; Radio_PlayMessage(gMsg_ID_19370, RCID_JAMES); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 20); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 20); } - if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 500.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 500.0f)) { + if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 500.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 500.0f)) { Audio_KillSfxById(NA_SE_OB_ROUTE_EXPLOSION1); Audio_SetEnvSfxReverb(0); gCurrentLevel = LEVEL_VENOM_2; @@ -673,15 +702,15 @@ void Andross_Actor289_Update(Actor* actor) { } } -void Andross_Actor287_Update(Actor* actor) { +void Andross_AndExplosion_Update(AndExplosion* this) { s32 i; Vec3f vec; Vec3f displacement; Vec3f vel; - if ((fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 2000.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 2000.0f)) { - Matrix_RotateY(gCalcMatrix, actor->obj.rot.y * M_DTOR, MTXF_NEW); + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 2000.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 2000.0f)) { + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, MTXF_NEW); vec.x = 0.0f; vec.y = 0.0f; vec.z = -30.0f; @@ -692,60 +721,60 @@ void Andross_Actor287_Update(Actor* actor) { vec.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &vec, &displacement); - actor->vel.x = vel.x * 0.2f; - actor->vel.y = vel.y * 0.2f; - actor->vel.z = vel.z * 0.2f; + this->vel.x = vel.x * 0.2f; + this->vel.y = vel.y * 0.2f; + this->vel.z = vel.z * 0.2f; for (i = 0; i < 1; i++) { - func_effect_8007797C(actor->obj.pos.x + displacement.x, actor->obj.pos.y + displacement.y, - actor->obj.pos.z + displacement.z, vel.x, vel.y, vel.z, RAND_FLOAT(2.5f) + 15.5f); + Effect_FireSmoke_Spawn2(this->obj.pos.x + displacement.x, this->obj.pos.y + displacement.y, + this->obj.pos.z + displacement.z, vel.x, vel.y, vel.z, RAND_FLOAT(2.5f) + 15.5f); } } - if ((fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 500.0f) && - (fabsf(actor->obj.pos.z - gPlayer[0].trueZpos) < 500.0f)) { + + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 500.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 500.0f)) { if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE || gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) { gPlayer[0].shields = 0; gRightWingHealth[0] = gLeftWingHealth[0] = 0; Player_ApplyDamage(&gPlayer[0], 1, 60); Player_ApplyDamage(&gPlayer[0], 2, 60); - actor->timer_0BC = 10; + this->timer_0BC = 10; gPlayer[0].radioDamageTimer = 200; } } - if (actor->timer_0BC == 1) { + if (this->timer_0BC == 1) { Cutscene_KillPlayer(&gPlayer[0]); } } -void Andross_801899E4(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 scale2, u8 arg5) { - - Effect_Initialize(effect); - effect->obj.status = OBJ_ACTIVE; - effect->obj.id = OBJ_EFFECT_357; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->unk_4C = arg5; - effect->scale2 = (RAND_FLOAT(0.8f) + 0.3f) * scale2; - effect->timer_50 = 100; - effect->obj.rot.x = RAND_FLOAT(360.0f); - effect->unk_60.x = RAND_FLOAT_CENTERED(30.0f); - effect->unk_60.y = RAND_FLOAT_CENTERED(30.0f); - effect->unk_60.z = RAND_FLOAT_CENTERED(30.0f); - Object_SetInfo(&effect->info, effect->obj.id); +void Andross_Effect357_Setup(Effect357* this, f32 xPos, f32 yPos, f32 zPos, f32 scale2, u8 arg5) { + Effect_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_EFFECT_357; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->unk_4C = arg5; + this->scale2 = (RAND_FLOAT(0.8f) + 0.3f) * scale2; + this->timer_50 = 100; + this->obj.rot.x = RAND_FLOAT(360.0f); + this->unk_60.x = RAND_FLOAT_CENTERED(30.0f); + this->unk_60.y = RAND_FLOAT_CENTERED(30.0f); + this->unk_60.z = RAND_FLOAT_CENTERED(30.0f); + Object_SetInfo(&this->info, this->obj.id); } -void Andross_80189B00(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { +void Andross_Effect357_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 scale2) { s32 i; for (i = 50; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Andross_801899E4(&gEffects[i], xPos, yPos, zPos, scale2, 0); + Andross_Effect357_Setup(&gEffects[i], xPos, yPos, zPos, scale2, 0); break; } } } -void Andross_Boss321_Update(Boss* boss) { +void Andross_AndBrain_Update(AndBrain* this) { s32 i; s32 sp98; s32 frameCountMask; @@ -760,188 +789,225 @@ void Andross_Boss321_Update(Boss* boss) { Vec3f sp58; s32 pad; - Andross_80188A4C(boss); - Andross_80188CB8(boss); - boss->info.hitbox = SEGMENTED_TO_VIRTUAL(&D_ANDROSS_C038F24); + Andross_80188A4C(this); + Andross_80188CB8(this); + + this->info.hitbox = SEGMENTED_TO_VIRTUAL(&aAndBrainHitbox); + Math_SmoothStepToF(&gAndrossUnkAlpha, 255.0f, 1.0f, 4.0f, 0); - Math_SmoothStepToF(&boss->scale, 10.0f, 0.2f, 0.2f, 0); + Math_SmoothStepToF(&this->scale, 10.0f, 0.2f, 0.2f, 0); + if ((gGameFrameCount & 0x10) == 0) { - Math_SmoothStepToF(&boss->fwork[25], 255.0f, 1.0f, 10.0f, 0); + Math_SmoothStepToF(&this->fwork[25], 255.0f, 1.0f, 10.0f, 0); } else { - Math_SmoothStepToF(&boss->fwork[25], 100.0f, 1.0f, 10.0f, 0); - } - if ((fabsf(boss->obj.pos.x - gPlayer[0].pos.x) < 300.0f) && - (fabsf(boss->obj.pos.y - 300.0f - gPlayer[0].pos.y) < 300.0f) && - (fabsf(boss->obj.pos.z - gPlayer[0].trueZpos) < 300.0f) && (boss->state < 11) && (boss->timer_05A == 0)) { - boss->state = 11; - boss->timer_050 = 150; - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_CATCH, boss->sfxSource, 4); + Math_SmoothStepToF(&this->fwork[25], 100.0f, 1.0f, 10.0f, 0); } - switch (boss->state) { + if ((fabsf(this->obj.pos.x - gPlayer[0].pos.x) < 300.0f) && + (fabsf(this->obj.pos.y - 300.0f - gPlayer[0].pos.y) < 300.0f) && + (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 300.0f) && (this->state < 11) && (this->timer_05A == 0)) { + this->state = 11; + this->timer_050 = 150; + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_CATCH, this->sfxSource, 4); + } + + switch (this->state) { case 0: - boss->health = 200; + this->health = 200; gDrawBackdrop = 3; - boss->fwork[19] = -26.0f; - boss->fwork[10] = 8.0f; - Andross_80189098(boss); - boss->swork[5] = 300; - boss->state++; - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BRAIN, boss->sfxSource, 4); - boss->fwork[21] = 255.0f; - boss->fwork[22] = 255.0f; - boss->fwork[23] = 0.0f; - boss->fwork[24] = 0.0f; + this->fwork[19] = -26.0f; + this->fwork[10] = 8.0f; + Andross_80189098(this); + this->swork[5] = 300; + this->state++; + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BRAIN, this->sfxSource, 4); + this->fwork[21] = 255.0f; + this->fwork[22] = 255.0f; + this->fwork[23] = 0.0f; + this->fwork[24] = 0.0f; break; + case 10: - boss->fwork[23] = 0.0f; - boss->fwork[24] = 0.0f; - boss->fwork[21] = 255.0f; - boss->fwork[22] = 255.0f; - boss->fwork[1] = 10.0f; - boss->fwork[2] = 2.0f; - boss->fwork[3] = 0.0f; - boss->fwork[4] = 0.0f; - boss->fwork[5] = gPlayer[0].pos.z - 3000.0f; - boss->fwork[19] = -26.0f; - boss->swork[5] = 100; - if (boss->timer_050 == 0) { + this->fwork[23] = 0.0f; + this->fwork[24] = 0.0f; + this->fwork[21] = 255.0f; + this->fwork[22] = 255.0f; + this->fwork[1] = 10.0f; + this->fwork[2] = 2.0f; + this->fwork[3] = 0.0f; + this->fwork[4] = 0.0f; + this->fwork[5] = gPlayer[0].pos.z - 3000.0f; + this->fwork[19] = -26.0f; + this->swork[5] = 100; + + if (this->timer_050 == 0) { gPlayer[0].state_1C8 = PLAYERSTATE_1C8_START_360; gPlayer[0].csState = 0; - boss->state = 1; + this->state = 1; gPlayer[0].hideShadow = true; } break; + case 1: - if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_START_360) && (boss->timer_050 == 0)) { - boss->fwork[2] = 1.6f; - boss->timer_050 = RAND_INT(1.0f) * 50.0f + 50; - boss->fwork[3] = RAND_FLOAT_CENTERED(10000.0f); - boss->fwork[4] = RAND_FLOAT_CENTERED(1000.0f); - boss->fwork[5] = RAND_FLOAT_CENTERED(10000.0f); + if ((gPlayer[0].state_1C8 != PLAYERSTATE_1C8_START_360) && (this->timer_050 == 0)) { + this->fwork[2] = 1.6f; + this->timer_050 = RAND_INT(1.0f) * 50.0f + 50; + this->fwork[3] = RAND_FLOAT_CENTERED(10000.0f); + this->fwork[4] = RAND_FLOAT_CENTERED(1000.0f); + this->fwork[5] = RAND_FLOAT_CENTERED(10000.0f); + if (Rand_ZeroOne() < 0.3f) { - boss->state = 2; - boss->timer_050 = RAND_INT(1.0f) * 100.0f + 50; - boss->fwork[1] = 0.0f; + this->state = 2; + this->timer_050 = RAND_INT(1.0f) * 100.0f + 50; + this->fwork[1] = 0.0f; } } break; + case 2: - if (boss->timer_050 == 0) { - boss->state = 1; - boss->timer_050 = RAND_INT(1.0f) * 50.0f + 50; - boss->fwork[1] = 50.0f; + if (this->timer_050 == 0) { + this->state = 1; + this->timer_050 = RAND_INT(1.0f) * 50.0f + 50; + this->fwork[1] = 50.0f; } break; + case 11: - boss->info.hitbox = SEGMENTED_TO_VIRTUAL(&gNoHitbox); - if (boss->timer_050 < 120) { + this->info.hitbox = SEGMENTED_TO_VIRTUAL(&gNoHitbox); + if (this->timer_050 < 120) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 255; gFillScreenAlphaTarget = 80; gFillScreenAlphaStep = 1; gPlayer[0].dmgEffectTimer = gGameFrameCount % 8U; gPlayer[0].radioDamageTimer = 3; + Math_SmoothStepToF(&D_ctx_801779A8[gMainController], 40.0f, 1.0f, 3.0f, 0.0f); + if (((gGameFrameCount % 32) == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE)) { Player_ApplyDamage(&gPlayer[0], 3, 10); } } + Math_SmoothStepToF(&gPlayer[0].baseSpeed, 0.0f, 2.0f, 2.0f, 0.0f); - Math_SmoothStepToF(&gPlayer[0].pos.x, boss->obj.pos.x, 0.8f, 50.0f, 0.0f); - Math_SmoothStepToF(&gPlayer[0].pos.y, boss->obj.pos.y - 300.0f, 0.8f, 50.0f, 0.0f); - Math_SmoothStepToF(&gPlayer[0].pos.z, boss->obj.pos.z, 0.8f, 50.0f, 0.0f); - boss->fwork[11] = 45.0f; - boss->fwork[12] = 0.8f; - boss->fwork[13] = 1.0f; - boss->fwork[19] = 23.0f; - boss->fwork[1] = 0.0f; + Math_SmoothStepToF(&gPlayer[0].pos.x, this->obj.pos.x, 0.8f, 50.0f, 0.0f); + Math_SmoothStepToF(&gPlayer[0].pos.y, this->obj.pos.y - 300.0f, 0.8f, 50.0f, 0.0f); + Math_SmoothStepToF(&gPlayer[0].pos.z, this->obj.pos.z, 0.8f, 50.0f, 0.0f); + + this->fwork[11] = 45.0f; + this->fwork[12] = 0.8f; + this->fwork[13] = 1.0f; + this->fwork[19] = 23.0f; + this->fwork[1] = 0.0f; + gPlayer[0].alternateView = true; + Math_SmoothStepToF(&gCamDistortion, 0.15f, 0.2f, 0.004f, 0.0f); - if (boss->timer_050 == 120) { - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_LAUGH, boss->sfxSource, 4); + + if (this->timer_050 == 120) { + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_LAUGH, this->sfxSource, 4); } - if (boss->timer_050 == 0) { + if (this->timer_050 == 0) { gPlayer[0].baseSpeed = gArwingSpeed; gPlayer[0].alternateView = false; + gFillScreenAlphaTarget = 0; - boss->timer_05A = 50; - if (boss->swork[4] != 0) { - boss->state = 1; - boss->timer_050 = RAND_INT(1.0f) * 50.0f + 50; - boss->fwork[1] = 50.0f; + + this->timer_05A = 50; + + if (this->swork[4] != 0) { + this->state = 1; + this->timer_050 = RAND_INT(1.0f) * 50.0f + 50; + this->fwork[1] = 50.0f; } else { - boss->state = 3; + this->state = 3; } - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_ANDROSS_CATCH); + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_ANDROSS_CATCH); } break; + case 3: - boss->fwork[1] = 42.0f; - boss->fwork[2] = 1.3f; - boss->fwork[3] = gPlayer[0].pos.x; - boss->fwork[4] = gPlayer[0].pos.y; - boss->fwork[5] = gPlayer[0].trueZpos; + this->fwork[1] = 42.0f; + this->fwork[2] = 1.3f; + this->fwork[3] = gPlayer[0].pos.x; + this->fwork[4] = gPlayer[0].pos.y; + this->fwork[5] = gPlayer[0].trueZpos; break; + case 12: - boss->info.hitbox = SEGMENTED_TO_VIRTUAL(&gNoHitbox); - boss->fwork[1] = 0; - boss->fwork[24] = 0.2f; - boss->fwork[22] = 0.0f; - if ((boss->fwork[22] < 1.0f) && (boss->timer_050 == 0)) { - xDisplacement = boss->fwork[3] - boss->obj.pos.x; - zDisplacement = boss->fwork[5] - boss->obj.pos.z; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(&gNoHitbox); + this->fwork[1] = 0; + this->fwork[24] = 0.2f; + this->fwork[22] = 0.0f; + + if ((this->fwork[22] < 1.0f) && (this->timer_050 == 0)) { + xDisplacement = this->fwork[3] - this->obj.pos.x; + zDisplacement = this->fwork[5] - this->obj.pos.z; Matrix_RotateY(gCalcMatrix, Math_Atan2F(xDisplacement, zDisplacement), MTXF_NEW); vec.x = 0.0f; vec.y = 0.0f; vec.z = 4000.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &vec, &sp64); - boss->obj.pos.x = boss->fwork[3] + sp64.x; - boss->obj.pos.z = boss->fwork[5] + sp64.z; - boss->rot_078.y = Math_RadToDeg(Math_Atan2F(xDisplacement, zDisplacement)); - boss->state = 13; - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_LAUGH, boss->sfxSource, 4); - boss->timer_054 = 90; + this->obj.pos.x = this->fwork[3] + sp64.x; + this->obj.pos.z = this->fwork[5] + sp64.z; + this->rot_078.y = Math_RadToDeg(Math_Atan2F(xDisplacement, zDisplacement)); + this->state = 13; + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_LAUGH, this->sfxSource, 4); + this->timer_054 = 90; } break; + case 13: - boss->info.hitbox = SEGMENTED_TO_VIRTUAL(&gNoHitbox); - boss->fwork[24] = 0.0f; - boss->fwork[22] = 255.0f; - if (250.0f < boss->fwork[22]) { - boss->state = 3; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(&gNoHitbox); + this->fwork[24] = 0.0f; + this->fwork[22] = 255.0f; + if (250.0f < this->fwork[22]) { + this->state = 3; } break; + case 20: gCsFrameCount++; - boss->fwork[0] = 0.0f; - boss->fwork[1] = 0.0f; - boss->obj.rot.z += 0.2f; - boss->obj.rot.x += 0.1f; - boss->obj.pos.y -= 3.0f; + + this->fwork[0] = 0.0f; + this->fwork[1] = 0.0f; + + this->obj.rot.z += 0.2f; + this->obj.rot.x += 0.1f; + this->obj.pos.y -= 3.0f; + Matrix_RotateY(gCalcMatrix, -gPlayer[0].camYaw, 0U); + vec.x = RAND_FLOAT_CENTERED(700.0f); vec.y = RAND_FLOAT_CENTERED(300.0f); vec.z = 500.0f; + Matrix_MultVec3f(gCalcMatrix, &vec, &sp64); - func_effect_8007797C(boss->obj.pos.x + sp64.x, boss->obj.pos.y + sp64.y, boss->obj.pos.z + sp64.z, 0.0f, - 0.0f, 0.0f, RAND_FLOAT(5.0f) + 7.0f); - if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C484(RAND_FLOAT_CENTERED(600.0f) + boss->obj.pos.x, - RAND_FLOAT(100.0f) + (boss->obj.pos.y + 100.0f), boss->obj.pos.z, 0.0f, 0.0f, 0.0f, - RAND_FLOAT(0.3f) + 0.5f, 0); + + Effect_FireSmoke_Spawn2(this->obj.pos.x + sp64.x, this->obj.pos.y + sp64.y, this->obj.pos.z + sp64.z, 0.0f, + 0.0f, 0.0f, RAND_FLOAT(5.0f) + 7.0f); + if ((gGameFrameCount % 2) == 0) { + Effect_Effect389_Spawn(RAND_FLOAT_CENTERED(600.0f) + this->obj.pos.x, + RAND_FLOAT(100.0f) + (this->obj.pos.y + 100.0f), this->obj.pos.z, 0.0f, 0.0f, + 0.0f, RAND_FLOAT(0.3f) + 0.5f, 0); } + vec.x = 0.0f; vec.y = 0.0f; vec.z = 2000.0f; + Matrix_MultVec3f(gCalcMatrix, &vec, &sp64); + Math_SmoothStepToF(&D_ctx_80177A48[0], 100.0f, 1.0f, 2.0f, 0.0f); Math_SmoothStepToF(&D_ctx_80177A48[1], 100.0f, 1.0f, 10.0f, 0.0f); - Math_SmoothStepToF(&gPlayer[0].cam.eye.x, boss->obj.pos.x + sp64.x, 0.02f, D_ctx_80177A48[0], 0.0f); - Math_SmoothStepToF(&gPlayer[0].cam.eye.y, boss->obj.pos.y + sp64.y, 0.02f, D_ctx_80177A48[0], 0.0f); - Math_SmoothStepToF(&gPlayer[0].cam.eye.z, boss->obj.pos.z + sp64.z, 0.02f, D_ctx_80177A48[0], 0.0f); - Math_SmoothStepToF(&gPlayer[0].cam.at.x, boss->obj.pos.x, 0.05f, D_ctx_80177A48[1], 0.0f); - Math_SmoothStepToF(&gPlayer[0].cam.at.y, boss->obj.pos.y, 0.05f, D_ctx_80177A48[1], 0.0f); - Math_SmoothStepToF(&gPlayer[0].cam.at.z, boss->obj.pos.z, 0.05f, D_ctx_80177A48[1], 0.0f); + + Math_SmoothStepToF(&gPlayer[0].cam.eye.x, this->obj.pos.x + sp64.x, 0.02f, D_ctx_80177A48[0], 0.0f); + Math_SmoothStepToF(&gPlayer[0].cam.eye.y, this->obj.pos.y + sp64.y, 0.02f, D_ctx_80177A48[0], 0.0f); + Math_SmoothStepToF(&gPlayer[0].cam.eye.z, this->obj.pos.z + sp64.z, 0.02f, D_ctx_80177A48[0], 0.0f); + + Math_SmoothStepToF(&gPlayer[0].cam.at.x, this->obj.pos.x, 0.05f, D_ctx_80177A48[1], 0.0f); + Math_SmoothStepToF(&gPlayer[0].cam.at.y, this->obj.pos.y, 0.05f, D_ctx_80177A48[1], 0.0f); + Math_SmoothStepToF(&gPlayer[0].cam.at.z, this->obj.pos.z, 0.05f, D_ctx_80177A48[1], 0.0f); + Math_SmoothStepToF(&gPlayer[0].camRoll, 0.0f, 0.5f, 0.5f, 0.0f); if (gCsFrameCount == 50) { @@ -951,12 +1017,12 @@ void Andross_Boss321_Update(Boss* boss) { gBossActive = false; gPlayer[0].baseSpeed = gArwingSpeed; Audio_StopPlayerNoise(0); - boss->state = 21; - func_effect_8007B344(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 60.0f, 5); - func_effect_8007A568(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 40.0f); + this->state = 21; + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 60.0f, 5); + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 40.0f); for (i = 0; i < ARRAY_COUNT(gActors); i++) { - if ((gActors[i].obj.status == OBJ_ACTIVE) && (gActors[i].obj.id == OBJ_ACTOR_286)) { + if ((gActors[i].obj.status == OBJ_ACTIVE) && (gActors[i].obj.id == OBJ_ACTOR_AND_BRAIN_WASTE)) { Object_Kill(&gActors[i].obj, gActors[i].sfxSource); } } @@ -964,6 +1030,7 @@ void Andross_Boss321_Update(Boss* boss) { gCsFrameCount = 0; } break; + case 21: Andross_801876FC(); gCsFrameCount++; @@ -977,19 +1044,23 @@ void Andross_Boss321_Update(Boss* boss) { Math_SmoothStepToF(&gCamDistortion, 0.15f, 0.2f, 0.004f, 0.0f); Math_SmoothStepToF(&D_ctx_801779A8[gMainController], 70.0f, 1.0f, 4.0f, 0.0f); } + switch (gCsFrameCount) { case 30: gRadioState = 0; Radio_PlayMessage(gMsg_ID_20318, RCID_FOX); gPlayer[0].radioDamageTimer = 200; break; + case 350: Radio_PlayMessage(gMsg_ID_19468, RCID_JAMES); break; + case 500: Radio_PlayMessage(gMsg_ID_19350, RCID_FOX); gAllRangeCheckpoint = 1; break; + case 600: gDrawBackdrop = 5; gFogRed = 129; @@ -1025,23 +1096,28 @@ void Andross_Boss321_Update(Boss* boss) { D_ctx_80177CA4 = gHitCount; break; + case 800: Radio_PlayMessage(gMsg_ID_19340, RCID_JAMES); break; + case 1000: Audio_SetEnvSfxReverb(0); break; + case 1300: Radio_PlayMessage(gMsg_ID_19355, RCID_JAMES); break; + case 1800: Radio_PlayMessage(gMsg_ID_19360, RCID_JAMES); break; } + if (gCsFrameCount > 600) { Math_SmoothStepToF(&D_ctx_801779A8[gMainController], 10.0f, 1.0f, 2.0f, 0.0f); } - boss->obj.pos.y = 10000.0f; + this->obj.pos.y = 10000.0f; if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && ((gGameFrameCount % 4) == 0)) { Matrix_RotateY(gCalcMatrix, (gPlayer[0].yRot_114 + gPlayer[0].rot.y) * M_DTOR, 0U); @@ -1049,19 +1125,24 @@ void Andross_Boss321_Update(Boss* boss) { vec.y = 600.0f; vec.z = RAND_FLOAT(1000.0f) + -3000.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &vec, &sp64); - Andross_80189B00(gPlayer[0].pos.x + sp64.x, sp64.y, gPlayer[0].trueZpos + sp64.z, 1.2f); + Andross_Effect357_Spawn(gPlayer[0].pos.x + sp64.x, sp64.y, gPlayer[0].trueZpos + sp64.z, 1.2f); } if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_STANDBY) { Matrix_RotateY(gCalcMatrix, -gPlayer[0].camYaw, MTXF_NEW); + vec.x = 0.0f; vec.y = 0.0f; vec.z = -50.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &vec, &sp58); Matrix_RotateZ(gCalcMatrix, 2.0f * RAND_FLOAT(M_PI), MTXF_APPLY); + vec.x = RAND_FLOAT(50.0f) + 120.0f; vec.y = 0.0f; vec.z = 0.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &vec, &sp64); + if (gCsFrameCount < 1000) { frameCountMask = 2 - 1; } else if (gCsFrameCount < 1500) { @@ -1071,114 +1152,133 @@ void Andross_Boss321_Update(Boss* boss) { } else { frameCountMask = 2 - 1; } + sp98 = 1; if ((gGameFrameCount & frameCountMask) == 0) { for (i = 0; i < sp98; i++) { - func_effect_8007797C(gPlayer[0].cam.eye.x + sp64.x, gPlayer[0].cam.eye.y + sp64.y, - gPlayer[0].cam.eye.z + sp64.z, sp58.x, sp58.y, sp58.z, - RAND_FLOAT(2.5f) + 2.5f); + Effect_FireSmoke_Spawn2(gPlayer[0].cam.eye.x + sp64.x, gPlayer[0].cam.eye.y + sp64.y, + gPlayer[0].cam.eye.z + sp64.z, sp58.x, sp58.y, sp58.z, + RAND_FLOAT(2.5f) + 2.5f); } } } break; } - xDisplacement = boss->fwork[3] - boss->obj.pos.x; - yDisplacement = boss->fwork[4] - boss->obj.pos.y; - zDisplacement = boss->fwork[5] - boss->obj.pos.z; + + xDisplacement = this->fwork[3] - this->obj.pos.x; + yDisplacement = this->fwork[4] - this->obj.pos.y; + zDisplacement = this->fwork[5] - this->obj.pos.z; + yaw = Math_RadToDeg(Math_Atan2F(xDisplacement, zDisplacement)); - Math_SmoothStepToAngle(&boss->rot_078.x, + + Math_SmoothStepToAngle(&this->rot_078.x, Math_RadToDeg(Math_Atan2F(yDisplacement, sqrtf(SQ(xDisplacement) + SQ(zDisplacement)))), - 0.1f, boss->fwork[2], 0.0f); - Math_SmoothStepToAngle(&boss->rot_078.y, yaw, 0.1f, boss->fwork[2], 0.0f); - if (boss->swork[4] != 0) { - Math_SmoothStepToAngle(&boss->obj.rot.y, Math_RadToDeg(-gPlayer[0].camYaw), 0.3f, 5.0f, 0.0f); - } else if (boss->timer_054 == 0) { - Math_SmoothStepToAngle(&boss->obj.rot.y, Math_RadToDeg(-gPlayer[0].camYaw), 0.3f, 1.5f, 0.0f); + 0.1f, this->fwork[2], 0.0f); + Math_SmoothStepToAngle(&this->rot_078.y, yaw, 0.1f, this->fwork[2], 0.0f); + + if (this->swork[4] != 0) { + Math_SmoothStepToAngle(&this->obj.rot.y, Math_RadToDeg(-gPlayer[0].camYaw), 0.3f, 5.0f, 0.0f); + } else if (this->timer_054 == 0) { + Math_SmoothStepToAngle(&this->obj.rot.y, Math_RadToDeg(-gPlayer[0].camYaw), 0.3f, 1.5f, 0.0f); } - Math_SmoothStepToF(&boss->fwork[0], boss->fwork[1], 0.2f, 1.0f, 0.00001f); - Matrix_RotateY(gCalcMatrix, boss->rot_078.y * M_DTOR, 0U); - Matrix_RotateX(gCalcMatrix, -boss->rot_078.x * M_DTOR, 1U); + + Math_SmoothStepToF(&this->fwork[0], this->fwork[1], 0.2f, 1.0f, 0.00001f); + + Matrix_RotateY(gCalcMatrix, this->rot_078.y * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -this->rot_078.x * M_DTOR, MTXF_APPLY); + vec.x = 0.0f; vec.y = 0.0f; - vec.z = boss->fwork[0]; + vec.z = this->fwork[0]; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &vec, &sp64); - boss->vel.x = sp64.x; - boss->vel.y = sp64.y; - boss->vel.z = sp64.z - gPathVelZ; - if (boss->state < 20) { + + this->vel.x = sp64.x; + this->vel.y = sp64.y; + this->vel.z = sp64.z - gPathVelZ; + + if (this->state < 20) { gRadarMarks[59].status = 1; gRadarMarks[59].type = 102; - gRadarMarks[59].pos.x = boss->obj.pos.x; - gRadarMarks[59].pos.y = boss->obj.pos.y; - gRadarMarks[59].pos.z = boss->obj.pos.z; - gRadarMarks[59].yRot = boss->rot_078.y + 180.0f; + gRadarMarks[59].pos.x = this->obj.pos.x; + gRadarMarks[59].pos.y = this->obj.pos.y; + gRadarMarks[59].pos.z = this->obj.pos.z; + gRadarMarks[59].yRot = this->rot_078.y + 180.0f; } + gActors[10].info.targetOffset = 1.0f; gActors[11].info.targetOffset = 1.0f; - if (boss->swork[5] != 0) { - boss->swork[5]--; - if (boss->swork[5] == 0) { + + if (this->swork[5] != 0) { + this->swork[5]--; + if (this->swork[5] == 0) { AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_EYE, gActors[10].sfxSource, 4); AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_EYE, gActors[11].sfxSource, 4); AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_SPARK, gActors[10].sfxSource, 4); AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_SPARK, gActors[11].sfxSource, 4); } - gActors[10].obj.pos.x = boss->obj.pos.x + 200.0f; - gActors[10].obj.pos.y = boss->obj.pos.y - 200.0f; - gActors[10].obj.pos.z = boss->obj.pos.z + 200.0f; + gActors[10].obj.pos.x = this->obj.pos.x + 200.0f; + gActors[10].obj.pos.y = this->obj.pos.y - 200.0f; + gActors[10].obj.pos.z = this->obj.pos.z + 200.0f; gActors[10].state = 0; gActors[10].timer_0C2 = 20; gActors[10].info.targetOffset = 0.0f; - gActors[11].obj.pos.x = boss->obj.pos.x - 200.0f; - gActors[11].obj.pos.y = boss->obj.pos.y - 200.0f; - gActors[11].obj.pos.z = boss->obj.pos.z + 200.0f; + gActors[11].obj.pos.x = this->obj.pos.x - 200.0f; + gActors[11].obj.pos.y = this->obj.pos.y - 200.0f; + gActors[11].obj.pos.z = this->obj.pos.z + 200.0f; gActors[11].state = 0; gActors[11].timer_0C2 = 20; gActors[11].info.targetOffset = 0.0f; } - Math_SmoothStepToF(&boss->fwork[21], boss->fwork[22], 1.0f, 6.0f, 0); - Math_SmoothStepToF(&boss->fwork[23], boss->fwork[24], 0.3f, 0.01f, 0); + Math_SmoothStepToF(&this->fwork[21], this->fwork[22], 1.0f, 6.0f, 0); + Math_SmoothStepToF(&this->fwork[23], this->fwork[24], 0.3f, 0.01f, 0); } -bool Andross_8018B47C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Boss* boss = (Boss*) data; +bool Andross_8018B47C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + Boss* this = (Boss*) thisx; - if (boss->fwork[21] >= 254.0f) { + if (this->fwork[21] >= 254.0f) { if (limbIndex == 2) { RCP_SetupDL(&gMasterDisp, SETUPDL_22); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, (s32) boss->fwork[25], 255, 255, 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, (s32) this->fwork[25], 255, 255, 255); } else { RCP_SetupDL(&gMasterDisp, SETUPDL_23); } } else { RCP_SetupDL(&gMasterDisp, SETUPDL_51); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) boss->fwork[21]); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) this->fwork[21]); } - if ((limbIndex == 2) && (boss->swork[6] != 0)) { + + if ((limbIndex == 2) && (this->swork[6] != 0)) { *dList = NULL; return false; } + if ((limbIndex == 1) || (limbIndex == 2)) { Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, rot->y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); + if (*dList != NULL) { Matrix_Push(&gGfxMatrix); Matrix_Push(&gCalcMatrix); Matrix_Mult(gGfxMatrix, gCalcMatrix, MTXF_APPLY); + if (limbIndex == 1) { - Matrix_RotateY(gGfxMatrix, -boss->fwork[14] * M_DTOR, MTXF_APPLY); - Matrix_Scale(gGfxMatrix, boss->fwork[16] + 1.0f, 1.0f, 1.0f - boss->fwork[16], MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, boss->fwork[14] * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, -this->fwork[14] * M_DTOR, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->fwork[16] + 1.0f, 1.0f, 1.0f - this->fwork[16], MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, this->fwork[14] * M_DTOR, MTXF_APPLY); } else { - Matrix_RotateY(gGfxMatrix, boss->fwork[14] * 1.5f * M_DTOR, MTXF_APPLY); - Matrix_Scale(gGfxMatrix, 2.0f * boss->fwork[16] + 1.0f, 1.0f, 1.0f - 2.0f * boss->fwork[16], + Matrix_RotateY(gGfxMatrix, this->fwork[14] * 1.5f * M_DTOR, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, 2.0f * this->fwork[16] + 1.0f, 1.0f, 1.0f - 2.0f * this->fwork[16], MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, -boss->fwork[14] * 1.5f * M_DTOR, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, -this->fwork[14] * 1.5f * M_DTOR, MTXF_APPLY); } + Matrix_SetGfxMtx(&gMasterDisp); - if (((boss->swork[3] % 2) != 0) && (boss->fwork[21] >= 254.0f)) { + + if (((this->swork[3] % 2) != 0) && (this->fwork[21] >= 254.0f)) { RCP_SetupDL(&gMasterDisp, SETUPDL_27); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } @@ -1192,7 +1292,7 @@ bool Andross_8018B47C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return false; } -void Andross_Boss321_Draw(Boss* boss) { +void Andross_AndBrain_Draw(AndBrain* this) { s32 j; s32 i; f32 temp; @@ -1200,19 +1300,19 @@ void Andross_Boss321_Draw(Boss* boss) { Vec3f spAC; Vec3f spA0; - if (boss->state != 21) { + if (this->state != 21) { Matrix_RotateZ(gGfxMatrix, -(f32) gGameFrameCount * 20.0f * M_DTOR, MTXF_APPLY); - Matrix_Scale(gGfxMatrix, boss->fwork[23] + 1.0f, 1.0f - boss->fwork[23], 1.0f, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->fwork[23] + 1.0f, 1.0f - this->fwork[23], 1.0f, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, gGameFrameCount * 20.0f * M_DTOR, MTXF_APPLY); - Matrix_Scale(gGfxMatrix, boss->fwork[23] + 1.0f, 1.0f - boss->fwork[23], 1.0f, MTXF_APPLY); - Matrix_Scale(gGfxMatrix, boss->scale, boss->scale, boss->scale, MTXF_APPLY); - Animation_DrawSkeleton(0, D_VE2_600C0A4, boss->vwork, Andross_8018B47C, NULL, boss, &gIdentityMatrix); - if (boss->fwork[21] >= 254) { + Matrix_Scale(gGfxMatrix, this->fwork[23] + 1.0f, 1.0f - this->fwork[23], 1.0f, MTXF_APPLY); + Matrix_Scale(gGfxMatrix, this->scale, this->scale, this->scale, MTXF_APPLY); + Animation_DrawSkeleton(0, D_VE2_600C0A4, this->vwork, Andross_8018B47C, NULL, this, &gIdentityMatrix); + if (this->fwork[21] >= 254) { RCP_SetupDL(&gMasterDisp, SETUPDL_54); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 64, 64, 255); } else { RCP_SetupDL(&gMasterDisp, SETUPDL_70); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 64, 64, (s32) boss->fwork[21]); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 64, 64, (s32) this->fwork[21]); } gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); Matrix_Translate(gGfxMatrix, 0.0f, -16.0f, 0.0f, MTXF_APPLY); @@ -1226,13 +1326,13 @@ void Andross_Boss321_Draw(Boss* boss) { spAC.z = i * 0.8f; Matrix_MultVec3f(gCalcMatrix, &spAC, &spA0); Matrix_Translate(gGfxMatrix, spA0.x, 10.0f, spA0.z, MTXF_APPLY); - Matrix_RotateY(gGfxMatrix, M_DTOR * -boss->obj.rot.y - gPlayer[0].camYaw, MTXF_APPLY); + Matrix_RotateY(gGfxMatrix, M_DTOR * -this->obj.rot.y - gPlayer[0].camYaw, MTXF_APPLY); for (j = 0; j < 10; j++) { Matrix_Translate(gGfxMatrix, 0.0f, -10.0f, 0.0f, MTXF_APPLY); - temp = SIN_DEG((s32) boss->fwork[19] * (i * 10 + j) + (gGameFrameCount * 5)) * boss->fwork[10]; - Matrix_RotateZ(gGfxMatrix, (boss->fwork[18] + temp) * M_DTOR, MTXF_APPLY); - Matrix_RotateX(gGfxMatrix, boss->fwork[17] * M_DTOR, MTXF_APPLY); + temp = SIN_DEG((s32) this->fwork[19] * (i * 10 + j) + (gGameFrameCount * 5)) * this->fwork[10]; + Matrix_RotateZ(gGfxMatrix, (this->fwork[18] + temp) * M_DTOR, MTXF_APPLY); + Matrix_RotateX(gGfxMatrix, this->fwork[17] * M_DTOR, MTXF_APPLY); Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 0.0f, -5.0f, 0.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); @@ -1289,36 +1389,39 @@ void Andross_8018BDD8(void) { } void Andross_8018C390(Player* player) { - player->boostCooldown = 1; player->barrelRollAlpha = 0; + switch (player->csState) { - case 2: - case 3: - break; case 0: Math_SmoothStepToF(&player->pos.x, gBosses[0].obj.pos.x, 0.5f, 30.0f, 0); Math_SmoothStepToF(&player->pos.y, gBosses[0].obj.pos.y - 150.0f, 0.5f, 30.0f, 0); Math_SmoothStepToF(&player->pos.z, gBosses[0].obj.pos.z - 100.0f, 0.5f, 60.0f, 0); + gPathProgress = player->zPath = -player->pos.z; + Math_SmoothStepToF(&player->cam.eye.z, 2000.0f, 0.05f, 20.0f, 0); Math_SmoothStepToF(&player->cam.eye.x, 0.0f, 0.05f, 10.0f, 0); Math_SmoothStepToF(&player->cam.eye.y, 0.0f, 0.05f, 10.0f, 0); + Math_SmoothStepToF(&player->cam.at.x, 0.0f, 0.05f, 10.0f, 0); Math_SmoothStepToF(&player->cam.at.y, 0.0f, 0.05f, 10.0f, 0); Math_SmoothStepToF(&player->cam.at.z, 100.0f, 0.05f, 10.0f, 0.0f); break; + case 1: player->rot.x += 15.0f; - if (player->rot.x > 180.0f) { player->rot.x -= 360.0f; } + player->rot.y += 9.0f; if (player->rot.y > 180.0f) { player->rot.y -= 360.0f; } + Math_SmoothStepToF(&player->cam.eye.z, 400.0f, 0.05f, 20.0f, 0.0f); + if (player->csTimer != 0) { if (gControllerPress[gMainController].button != 0) { player->csTimer--; @@ -1330,103 +1433,109 @@ void Andross_8018C390(Player* player) { player->unk_018 = 0.0f; } break; + + case 2: + case 3: + break; } player->trueZpos = player->pos.z + player->camDist; Player_DamageEffects(player); } -void Andross_8018C660(Effect* effect, f32 xPos, f32 yPos, f32 zPos, s32 arg4) { - Effect_Initialize(effect); - effect->obj.status = OBJ_ACTIVE; - effect->obj.id = OBJ_EFFECT_396; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->unk_4C = arg4; - effect->scale2 = RAND_FLOAT(2.5f) + 5.0f; - effect->unk_60.x = RAND_FLOAT_CENTERED(20.0f); - effect->unk_60.y = RAND_FLOAT_CENTERED(20.0f); - Object_SetInfo(&effect->info, effect->obj.id); +void Andross_Effect396_Setup1(Effect* this, f32 xPos, f32 yPos, f32 zPos, s32 arg4) { + Effect_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_EFFECT_396; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->unk_4C = arg4; + this->scale2 = RAND_FLOAT(2.5f) + 5.0f; + this->unk_60.x = RAND_FLOAT_CENTERED(20.0f); + this->unk_60.y = RAND_FLOAT_CENTERED(20.0f); + Object_SetInfo(&this->info, this->obj.id); } -void Andross_8018C734(f32 xPos, f32 yPos, f32 zPos, s32 arg3) { +void Andross_Effect396_Spawn1(f32 xPos, f32 yPos, f32 zPos, s32 arg3) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Andross_8018C660(&gEffects[i], xPos, yPos, zPos, arg3); + Andross_Effect396_Setup1(&gEffects[i], xPos, yPos, zPos, arg3); break; } } } -void Andross_8018C7A0(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, s32 arg7) { - Effect_Initialize(effect); - effect->obj.status = OBJ_ACTIVE; - effect->obj.id = OBJ_EFFECT_396; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->vel.x = xVel; - effect->vel.y = yVel; - effect->vel.z = zVel; - effect->state = 1; - effect->unk_4C = arg7; +void Andross_Effect396_Setup2(Effect396* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, s32 arg7) { + Effect_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_EFFECT_396; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; + this->state = 1; + this->unk_4C = arg7; + if (arg7 < 8) { - effect->scale2 = RAND_FLOAT(2.5f) + 5.0f; + this->scale2 = RAND_FLOAT(2.5f) + 5.0f; } - effect->obj.rot.x = RAND_FLOAT(360.0f); - effect->obj.rot.y = RAND_FLOAT(360.0f); - effect->unk_60.x = RAND_FLOAT(10.0f) + 10.0f; - effect->unk_60.y = RAND_FLOAT(10.0f) + 10.0f; - Object_SetInfo(&effect->info, effect->obj.id); - effect->info.cullDistance = 100.0f; + + this->obj.rot.x = RAND_FLOAT(360.0f); + this->obj.rot.y = RAND_FLOAT(360.0f); + this->unk_60.x = RAND_FLOAT(10.0f) + 10.0f; + this->unk_60.y = RAND_FLOAT(10.0f) + 10.0f; + Object_SetInfo(&this->info, this->obj.id); + this->info.cullDistance = 100.0f; } -void Andross_8018C8D4(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, s32 arg6) { +void Andross_Effect396_Spawn2(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, s32 arg6) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Andross_8018C7A0(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, arg6); + Andross_Effect396_Setup2(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, arg6); break; } } } -void Andross_8018C958(Effect* effect, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale) { - Effect_Initialize(effect); - effect->obj.status = OBJ_ACTIVE; - effect->obj.id = OBJ_EFFECT_396; - effect->state = 10; - effect->obj.pos.x = xPos; - effect->obj.pos.y = yPos; - effect->obj.pos.z = zPos; - effect->vel.x = xVel; - effect->vel.y = yVel; - effect->vel.z = zVel; - effect->scale1 = scale; - effect->scale2 = scale * 0.1f; - effect->unk_44 = 100; - effect->obj.rot.z = RAND_FLOAT(360.0f); - effect->unk_60.z = RAND_FLOAT_CENTERED(20.0f); - Object_SetInfo(&effect->info, effect->obj.id); - effect->info.unk_14 = 1; - effect->info.cullDistance = 100.0f; +void Andross_Effect396_Setup3(Effect396* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale) { + Effect_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_EFFECT_396; + this->state = 10; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->vel.x = xVel; + this->vel.y = yVel; + this->vel.z = zVel; + this->scale1 = scale; + this->scale2 = scale * 0.1f; + this->unk_44 = 100; + this->obj.rot.z = RAND_FLOAT(360.0f); + this->unk_60.z = RAND_FLOAT_CENTERED(20.0f); + Object_SetInfo(&this->info, this->obj.id); + this->info.unk_14 = 1; + this->info.cullDistance = 100.0f; } -void Andross_8018CA50(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale) { +void Andross_Effect396_Spawn3(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, f32 scale) { s32 i; for (i = ARRAY_COUNT(gEffects) - 1; i >= 0; i--) { if (gEffects[i].obj.status == OBJ_FREE) { - Andross_8018C958(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale); + Andross_Effect396_Setup3(&gEffects[i], xPos, yPos, zPos, xVel, yVel, zVel, scale); break; } } } -void Andross_Effect396_Update(Effect* effect) { +void Andross_Effect396_Update(Effect396* this) { s32 i; Item* item; Vec3f vec; @@ -1441,57 +1550,69 @@ void Andross_Effect396_Update(Effect* effect) { f32 sp38; f32 sp34; - effect->obj.rot.x += effect->unk_60.x; - effect->obj.rot.y += effect->unk_60.y; - switch (effect->state) { + this->obj.rot.x += this->unk_60.x; + this->obj.rot.y += this->unk_60.y; + + switch (this->state) { case 0: if (gBosses[0].state == 17) { - Math_SmoothStepToF(&effect->obj.pos.x, gBosses[0].obj.pos.x, 0.03f, 10.0f, 0); - Math_SmoothStepToF(&effect->obj.pos.y, gBosses[0].obj.pos.y - 200.0f, 0.03f, 10.0f, 0); - effectXpos = effect->obj.pos.x; - effectYpos = effect->obj.pos.y; - effectZpos = effect->obj.pos.z; + Math_SmoothStepToF(&this->obj.pos.x, gBosses[0].obj.pos.x, 0.03f, 10.0f, 0); + Math_SmoothStepToF(&this->obj.pos.y, gBosses[0].obj.pos.y - 200.0f, 0.03f, 10.0f, 0); + + effectXpos = this->obj.pos.x; + effectYpos = this->obj.pos.y; + effectZpos = this->obj.pos.z; + sp3C = gBosses[0].obj.pos.x; sp38 = gBosses[0].obj.pos.y - 150.0f; sp34 = gBosses[0].obj.pos.z - 100.0f; + yaw = Math_Atan2F(sp3C - effectXpos, sp34 - effectZpos); sp40 = sqrtf(SQ(sp3C - effectXpos) + SQ(sp34 - effectZpos)); pitch = -Math_Atan2F(sp38 - effectYpos, sp40); + Matrix_RotateY(gCalcMatrix, yaw, MTXF_NEW); Matrix_RotateX(gCalcMatrix, pitch, MTXF_APPLY); + vec.x = 0.0f; vec.y = 0.0f; vec.z = 30.0f; + Matrix_MultVec3f(gCalcMatrix, &vec, &vel); - effect->vel.x = vel.x; - effect->vel.y = vel.y; - effect->vel.z = vel.z - gPathVelZ; - if ((fabsf(effect->obj.pos.x - gBosses[0].obj.pos.x) <= 100.0f) && - (fabsf(effect->obj.pos.z - (gBosses[0].obj.pos.z - 100.0f)) <= 100.0f)) { - Object_Kill(&effect->obj, effect->sfxSource); + + this->vel.x = vel.x; + this->vel.y = vel.y; + this->vel.z = vel.z - gPathVelZ; + + if ((fabsf(this->obj.pos.x - gBosses[0].obj.pos.x) <= 100.0f) && + (fabsf(this->obj.pos.z - (gBosses[0].obj.pos.z - 100.0f)) <= 100.0f)) { + Object_Kill(&this->obj, this->sfxSource); } } else { - effect->info.cullDistance = 100.0f; - Math_SmoothStepToF(&effect->vel.x, 0.0f, 0.05f, 1.0f, 0); - Math_SmoothStepToF(&effect->vel.y, 0.0f, 0.05f, 1.0f, 0); - Math_SmoothStepToF(&effect->vel.z, 70.0f, 0.05f, 2.0f, 0); - func_effect_8007A774(&gPlayer[0], effect, 100.0f); - if (effect->unk_44 != 0) { - func_effect_8007D0E0(effect->obj.pos.x, effect->obj.pos.y, effect->obj.pos.z, 10.0f); - Effect_SpawnTimedSfxAtPos(&effect->obj.pos, NA_SE_EN_EXPLOSION_S); - Object_Kill(&effect->obj, effect->sfxSource); + this->info.cullDistance = 100.0f; + Math_SmoothStepToF(&this->vel.x, 0.0f, 0.05f, 1.0f, 0); + Math_SmoothStepToF(&this->vel.y, 0.0f, 0.05f, 1.0f, 0); + Math_SmoothStepToF(&this->vel.z, 70.0f, 0.05f, 2.0f, 0); + + func_effect_8007A774(&gPlayer[0], this, 100.0f); + + if (this->unk_44 != 0) { + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); + Object_Kill(&this->obj, this->sfxSource); } } - effect->unk_44 = 0; + this->unk_44 = 0; break; + case 1: - func_effect_8007A774(&gPlayer[0], effect, 100.0f); - if (effect->unk_44 != 0) { - func_effect_8007D0E0(effect->obj.pos.x, effect->obj.pos.y, effect->obj.pos.z, 10.0f); - Effect_SpawnTimedSfxAtPos(&effect->obj.pos, NA_SE_EN_EXPLOSION_S); - Object_Kill(&effect->obj, effect->sfxSource); + func_effect_8007A774(&gPlayer[0], this, 100.0f); + if (this->unk_44 != 0) { + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 10.0f); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); + Object_Kill(&this->obj, this->sfxSource); if (Rand_ZeroOne() < 0.1f) { - item = gItems; + item = &gItems[0]; for (i = 0; i < ARRAY_COUNT(gItems); i++, item++) { if (item->obj.status == OBJ_FREE) { Item_Initialize(item); @@ -1501,9 +1622,9 @@ void Andross_Effect396_Update(Effect* effect) { } else { item->obj.id = OBJ_ITEM_BOMB; } - item->obj.pos.x = effect->obj.pos.x; - item->obj.pos.y = effect->obj.pos.y; - item->obj.pos.z = effect->obj.pos.z; + item->obj.pos.x = this->obj.pos.x; + item->obj.pos.y = this->obj.pos.y; + item->obj.pos.z = this->obj.pos.z; item->timer_4A = 8; Object_SetInfo(&item->info, item->obj.id); item->unk_50 = 90.0f; @@ -1513,14 +1634,17 @@ void Andross_Effect396_Update(Effect* effect) { } } break; + case 10: - effect->obj.rot.z += effect->unk_60.z; - Math_SmoothStepToF(&effect->scale2, effect->scale1, 0.05f, 0.3f, 0); - Math_SmoothStepToF(&effect->vel.y, 0.0f, 0.05f, 0.5f, 0.0f); - Math_SmoothStepToF(&effect->vel.x, 0.0f, 0.05f, 0.5f, 0.0f); - effect->unk_44 -= 10; - if (effect->unk_44 < 0) { - Object_Kill(&effect->obj, effect->sfxSource); + this->obj.rot.z += this->unk_60.z; + + Math_SmoothStepToF(&this->scale2, this->scale1, 0.05f, 0.3f, 0); + Math_SmoothStepToF(&this->vel.y, 0.0f, 0.05f, 0.5f, 0.0f); + Math_SmoothStepToF(&this->vel.x, 0.0f, 0.05f, 0.5f, 0.0f); + + this->unk_44 -= 10; + if (this->unk_44 < 0) { + Object_Kill(&this->obj, this->sfxSource); } break; } @@ -1531,33 +1655,32 @@ static Gfx* D_i6_801A6790[10] = { D_ANDROSS_C001880, D_ANDROSS_C001880, D_ANDROSS_C001880, D_arwing_3016660, D_arwing_3015D80, }; -void Andross_Effect396_Draw(Effect* effect) { - - if (effect->state == 10) { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, effect->unk_44); - Matrix_Scale(gGfxMatrix, effect->scale2, effect->scale2, effect->scale2, MTXF_APPLY); +void Andross_Effect396_Draw(Effect396* this) { + if (this->state == 10) { + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, this->unk_44); + Matrix_Scale(gGfxMatrix, this->scale2, this->scale2, this->scale2, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_BG_PLANET_2010A30); } else { RCP_SetupDL(&gMasterDisp, SETUPDL_29); - if (effect->unk_4C < 8) { - Matrix_Scale(gGfxMatrix, effect->scale2, effect->scale2, effect->scale2, MTXF_APPLY); + if (this->unk_4C < 8) { + Matrix_Scale(gGfxMatrix, this->scale2, this->scale2, this->scale2, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); } - gSPDisplayList(gMasterDisp++, D_i6_801A6790[effect->unk_4C]); + gSPDisplayList(gMasterDisp++, D_i6_801A6790[this->unk_4C]); RCP_SetupDL(&gMasterDisp, SETUPDL_64); } } -void Andross_8018D0D8(Boss* boss) { +void Andross_8018D0D8(AndAndross* this) { if ((gPlayer[0].mercyTimer == 0) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && - (fabsf(boss->vwork[10].x - gPlayer[0].pos.x) < 700.0f) && - (fabsf(boss->vwork[10].y - gPlayer[0].pos.y) < 700.0f)) { + (fabsf(this->vwork[10].x - gPlayer[0].pos.x) < 700.0f) && + (fabsf(this->vwork[10].y - gPlayer[0].pos.y) < 700.0f)) { Player_ApplyDamage(&gPlayer[0], 0, 40); } } -void Andross_Boss320_Init(Boss320* this) { +void Andross_AndAndross_Init(AndAndross* this) { Audio_SetEnvSfxReverb(24); D_i6_801A7F5C = D_i6_801A7F64 = D_i6_801A7F6C = D_i6_801A7F74 = D_i6_801A7F7C = D_i6_801A8430 = 0.0f; gAndrossUnkAlpha = 0.0f; @@ -1580,124 +1703,136 @@ void Andross_Boss320_Init(Boss320* this) { Audio_PlaySequence(SEQ_PLAYER_BGM, NA_BGM_BOSS_ANDROSS, 0, 0); } -void Andross_8018D2B0(Boss* boss) { +void Andross_8018D2B0(AndAndross* this) { s32 i; Vec3f sp68; - if ((boss->swork[5] < 0) && (boss->swork[4] < 0)) { - if ((boss->dmgType != DMG_NONE) && (boss->dmgPart == 0 || boss->dmgPart == 1)) { - boss->dmgType = DMG_NONE; - if (boss->state < 12) { - boss->health -= boss->damage; - boss->timer_05C = 20; - if ((boss->state == 9) || (boss->state == 10)) { - if (boss->health <= 0) { + if ((this->swork[5] < 0) && (this->swork[4] < 0)) { + if ((this->dmgType != DMG_NONE) && (this->dmgPart == 0 || this->dmgPart == 1)) { + this->dmgType = DMG_NONE; + if (this->state < 12) { + this->health -= this->damage; + this->timer_05C = 20; + if ((this->state == 9) || (this->state == 10)) { + if (this->health <= 0) { gScreenFlashTimer = 8; - AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, boss->sfxSource, 4); - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_EXPLOSION, boss->sfxSource, 4); - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_DEATH, boss->sfxSource, 4); - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_ANDROSS_ROBOT); + + AUDIO_PLAY_SFX(NA_SE_EN_DOWN_IMPACT, this->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_EXPLOSION, this->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_DEATH, this->sfxSource, 4); + + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_ANDROSS_ROBOT); + SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1); - boss->state = 31; - boss->timer_050 = 200; + + this->state = 31; + this->timer_050 = 200; gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE; gPlayer[0].csState = 0; - } else if (boss->health < 50) { - AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, boss->sfxSource, 4); + } else if (this->health < 50) { + AUDIO_PLAY_SFX(NA_SE_EN_KNOCK_DOWN, this->sfxSource, 4); } else { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); } - } else if (boss->health <= 0) { - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_DEATH, boss->sfxSource, 4); + } else if (this->health <= 0) { + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_DEATH, this->sfxSource, 4); + SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 1); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1); + if (gLevelPhase == 0) { - boss->state = 30; + this->state = 30; } else { - boss->state = 32; + this->state = 32; } - boss->fwork[9] = 0.0f; - boss->unk_04C = 0; + this->fwork[9] = 0.0f; + this->animFrame = 0; gCsFrameCount = 0; - boss->timer_05C = 100; + this->timer_05C = 100; } else { - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, boss->sfxSource, 4); + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); } } } - } else if (boss->dmgType != DMG_NONE) { - switch (boss->dmgPart) { + } else if (this->dmgType != DMG_NONE) { + switch (this->dmgPart) { case 0: - if (boss->state < 11) { - boss->swork[6] -= boss->damage; - boss->swork[0] = 30; - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, boss->sfxSource, 4); - if (boss->swork[6] <= 0) { - boss->swork[6] = 100; - boss->state = 12; - boss->timer_050 = 120; - boss->unk_04C = 0; - boss->fwork[9] = 0.0f; - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_GROAN, boss->sfxSource, 4); + if (this->state < 11) { + this->swork[6] -= this->damage; + this->swork[0] = 30; + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + if (this->swork[6] <= 0) { + this->swork[6] = 100; + this->state = 12; + this->timer_050 = 120; + this->animFrame = 0; + this->fwork[9] = 0.0f; + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_GROAN, this->sfxSource, 4); } } break; + case 1: - if (boss->state < 12) { - boss->swork[6] -= boss->damage; - boss->swork[1] = 30; - AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, boss->sfxSource, 4); - if (boss->swork[6] <= 0) { - boss->swork[6] = 100; - boss->state = 13; - boss->timer_050 = 120; - boss->unk_04C = 0; - boss->fwork[9] = 0.0f; - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_GROAN, boss->sfxSource, 4); + if (this->state < 12) { + this->swork[6] -= this->damage; + this->swork[1] = 30; + AUDIO_PLAY_SFX(NA_SE_OB_DAMAGE_M, this->sfxSource, 4); + if (this->swork[6] <= 0) { + this->swork[6] = 100; + this->state = 13; + this->timer_050 = 120; + this->animFrame = 0; + this->fwork[9] = 0.0f; + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_GROAN, this->sfxSource, 4); } } break; + case 2: case 3: - if (boss->swork[7] == 0) { - boss->swork[boss->dmgPart] = 30; - if (boss->dmgPart == 2) { - sp68.x = boss->vwork[0].x; - sp68.y = boss->vwork[0].y; - sp68.z = boss->vwork[0].z; - boss->swork[4] -= boss->damage; - if (boss->swork[4] < 0) { - boss->info.hitbox[16] = 0.0f; - func_effect_8007BFFC(boss->vwork[0].x, boss->vwork[0].y, boss->vwork[0].z, 0.0f, 0.0f, 0.0f, - 20.0f, 15); + if (this->swork[7] == 0) { + this->swork[this->dmgPart] = 30; + if (this->dmgPart == 2) { + sp68.x = this->vwork[0].x; + sp68.y = this->vwork[0].y; + sp68.z = this->vwork[0].z; + + this->swork[4] -= this->damage; + + if (this->swork[4] < 0) { + this->info.hitbox[16] = 0.0f; + Effect386_Spawn1(this->vwork[0].x, this->vwork[0].y, this->vwork[0].z, 0.0f, 0.0f, 0.0f, + 20.0f, 15); for (i = 0; i < 30; i++) { - func_effect_800794CC(boss->vwork[0].x + RAND_FLOAT_CENTERED(500.0f), - boss->vwork[0].y + RAND_FLOAT_CENTERED(500.0f), boss->vwork[0].z, - RAND_FLOAT(1.0f) + 1.0f); + Effect_Effect357_Spawn50(this->vwork[0].x + RAND_FLOAT_CENTERED(500.0f), + this->vwork[0].y + RAND_FLOAT_CENTERED(500.0f), + this->vwork[0].z, RAND_FLOAT(1.0f) + 1.0f); } - func_effect_8007B344(boss->vwork[0].x, boss->vwork[0].y, boss->vwork[0].z, 20.0f, 5); + Effect_Effect384_Spawn(this->vwork[0].x, this->vwork[0].y, this->vwork[0].z, 20.0f, 5); Effect_SpawnTimedSfxAtPos(&sp68, NA_SE_EN_EXPLOSION_M); } else { Effect_SpawnTimedSfxAtPos(&sp68, NA_SE_OB_DAMAGE_M); } } else { - sp68.x = boss->vwork[1].x; - sp68.y = boss->vwork[1].y; - sp68.z = boss->vwork[1].z; - boss->swork[5] -= boss->damage; - if (boss->swork[5] < 0) { - boss->info.hitbox[22] = 0.0f; - func_effect_8007BFFC(boss->vwork[1].x, boss->vwork[1].y, boss->vwork[1].z, 0.0f, 0.0f, 0.0f, - 20.0f, 15); + sp68.x = this->vwork[1].x; + sp68.y = this->vwork[1].y; + sp68.z = this->vwork[1].z; + + this->swork[5] -= this->damage; + + if (this->swork[5] < 0) { + this->info.hitbox[22] = 0.0f; + Effect386_Spawn1(this->vwork[1].x, this->vwork[1].y, this->vwork[1].z, 0.0f, 0.0f, 0.0f, + 20.0f, 15); for (i = 0; i < 30; i++) { - func_effect_800794CC(boss->vwork[1].x + RAND_FLOAT_CENTERED(500.0f), - boss->vwork[1].y + RAND_FLOAT_CENTERED(500.0f), boss->vwork[1].z, - RAND_FLOAT(1.0f) + 1.0f); + Effect_Effect357_Spawn50(this->vwork[1].x + RAND_FLOAT_CENTERED(500.0f), + this->vwork[1].y + RAND_FLOAT_CENTERED(500.0f), + this->vwork[1].z, RAND_FLOAT(1.0f) + 1.0f); } - func_effect_8007B344(boss->vwork[1].x, boss->vwork[1].y, boss->vwork[1].z, 20.0f, 5); + Effect_Effect384_Spawn(this->vwork[1].x, this->vwork[1].y, this->vwork[1].z, 20.0f, 5); Effect_SpawnTimedSfxAtPos(&sp68, NA_SE_EN_EXPLOSION_M); } else { Effect_SpawnTimedSfxAtPos(&sp68, NA_SE_OB_DAMAGE_M); @@ -1706,64 +1841,69 @@ void Andross_8018D2B0(Boss* boss) { } break; } - boss->dmgType = DMG_NONE; + this->dmgType = DMG_NONE; } } -void Andross_8018D9C0(Boss* boss) { - - switch (boss->state) { +void Andross_8018D9C0(AndAndross* this) { + switch (this->state) { case 2: - boss->state = 3; + this->state = 3; break; + case 3: - boss->state = 4; + this->state = 4; break; + case 4: - boss->state = 5; - boss->timer_050 = 30; + this->state = 5; + this->timer_050 = 30; break; + case 5: - boss->state = 6; - boss->timer_050 = 40; + this->state = 6; + this->timer_050 = 40; break; + case 6: - boss->state = 17; - boss->timer_050 = 180; - boss->fwork[16] = 0.0f; + this->state = 17; + this->timer_050 = 180; + this->fwork[16] = 0.0f; break; + case 12: case 13: case 14: - boss->state = 7; - boss->timer_050 = 150; + this->state = 7; + this->timer_050 = 150; break; + default: - boss->state = 2; + this->state = 2; break; } - boss->fwork[9] = 0.0f; - boss->unk_04C = 0; - boss->fwork[1] = 0.0f; - boss->fwork[4] = 0.0f; - boss->fwork[7] = 0.0f; + this->fwork[9] = 0.0f; + this->animFrame = 0; + this->fwork[1] = 0.0f; + this->fwork[4] = 0.0f; + this->fwork[7] = 0.0f; } -void Andross_8018DA94(Boss* boss, Vec3f* arg1) { +void Andross_8018DA94(AndAndross* this, Vec3f* arg1) { s32 i; - func_effect_8007BFFC(arg1->x, arg1->y, arg1->z, 0.0f, 0.0f, 0.0f, 10.0f, 10); + Effect386_Spawn1(arg1->x, arg1->y, arg1->z, 0.0f, 0.0f, 0.0f, 10.0f, 10); for (i = 0; i < 7; i++) { - func_effect_800794CC(RAND_FLOAT_CENTERED(200.0f) + arg1->x, RAND_FLOAT_CENTERED(200.0f) + arg1->y, arg1->z, - RAND_FLOAT(0.5f) + 1.0f); + Effect_Effect357_Spawn50(RAND_FLOAT_CENTERED(200.0f) + arg1->x, RAND_FLOAT_CENTERED(200.0f) + arg1->y, arg1->z, + RAND_FLOAT(0.5f) + 1.0f); } - func_effect_8007B344(arg1->x, arg1->y, arg1->z, 10.0f, 5); - AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, boss->sfxSource, 4); + Effect_Effect384_Spawn(arg1->x, arg1->y, arg1->z, 10.0f, 5); + AUDIO_PLAY_SFX(NA_SE_EN_EXPLOSION_M, this->sfxSource, 4); } static f32 D_i6_801A67B8[] = { 0.0f, 0.0f, 0.0f }; -void Andross_Boss320_Update(Boss* boss) { +void Andross_AndAndross_Update(AndAndross* this) { s32 i; s32 frameCountMask; Vec3f spD0[100]; @@ -1773,74 +1913,85 @@ void Andross_Boss320_Update(Boss* boss) { Effect* effect; PlayerShot* playerShot; Boss* boss1; - Player* player; + Player* player = &gPlayer[0]; f32 yaw; f32 pitch; s16 limbCount; s32 initialstate; s32 pad; - player = &gPlayer[0]; gBossFrameCount++; - initialstate = boss->state; + initialstate = this->state; Andross_801876FC(); + gAmbientR = 10; gAmbientG = 0; gAmbientB = 20; gGroundClipMode = 0; - boss->fwork[19] += 5.0f; - if (boss->swork[9] != 0) { - boss->swork[9]--; - Math_SmoothStepToF(&boss->fwork[17], 1.5f, 0.7f, 0.4f, 0); + + this->fwork[19] += 5.0f; + + if (this->swork[9] != 0) { + this->swork[9]--; + Math_SmoothStepToF(&this->fwork[17], 1.5f, 0.7f, 0.4f, 0); } else { - Math_SmoothStepToF(&boss->fwork[17], 1.0f, 0.2f, 0.3f, 0); + Math_SmoothStepToF(&this->fwork[17], 1.0f, 0.2f, 0.3f, 0); } - boss->fwork[18] = boss->fwork[17]; - if (boss->swork[10] != 0) { - boss->swork[10]--; - if (boss->swork[10] < 20) { + this->fwork[18] = this->fwork[17]; + + if (this->swork[10] != 0) { + this->swork[10]--; + if (this->swork[10] < 20) { frameCountMask = 32 - 1; - } else if (boss->swork[10] < 30) { + } else if (this->swork[10] < 30) { frameCountMask = 8 - 1; - } else if (boss->swork[10] < 40) { + } else if (this->swork[10] < 40) { frameCountMask = 2 - 1; } else { frameCountMask = 1 - 1; } + if ((gGameFrameCount & frameCountMask) == 0) { - Andross_8018CA50(boss->vwork[6].x, boss->vwork[6].y, boss->vwork[6].z, 0.0f, -30.0f, 0.0f, 30.0f); - Andross_8018CA50(boss->vwork[7].x, boss->vwork[7].y, boss->vwork[7].z, 0.0f, -30.0f, 0.0f, 30.0f); - Andross_8018CA50(boss->vwork[8].x, boss->vwork[8].y, boss->vwork[8].z, -30.0f, 0.0f, 0.0f, 30.0f); - Andross_8018CA50(boss->vwork[9].x, boss->vwork[9].y, boss->vwork[9].z, 30.0f, 0.0f, 0.0f, 30.0f); + Andross_Effect396_Spawn3(this->vwork[6].x, this->vwork[6].y, this->vwork[6].z, 0.0f, -30.0f, 0.0f, 30.0f); + Andross_Effect396_Spawn3(this->vwork[7].x, this->vwork[7].y, this->vwork[7].z, 0.0f, -30.0f, 0.0f, 30.0f); + Andross_Effect396_Spawn3(this->vwork[8].x, this->vwork[8].y, this->vwork[8].z, -30.0f, 0.0f, 0.0f, 30.0f); + Andross_Effect396_Spawn3(this->vwork[9].x, this->vwork[9].y, this->vwork[9].z, 30.0f, 0.0f, 0.0f, 30.0f); } } - Math_SmoothStepToF(&boss->fwork[20], 0.0f, 1.0f, 0.1f, 0.01f); - Math_SmoothStepToF(&boss->fwork[21], 0.0f, 1.0f, 0.05f, 0.001f); - Andross_8018D2B0(boss); - boss->swork[7] = 0; - boss->fwork[14] = boss->fwork[15] = 0.0f; - if (boss->state >= 2) { + + Math_SmoothStepToF(&this->fwork[20], 0.0f, 1.0f, 0.1f, 0.01f); + Math_SmoothStepToF(&this->fwork[21], 0.0f, 1.0f, 0.05f, 0.001f); + + Andross_8018D2B0(this); + + this->swork[7] = 0; + this->fwork[14] = this->fwork[15] = 0.0f; + + if (this->state >= 2) { gBlurAlpha = 128; } for (i = 0; i < 4; i++) { - if (boss->swork[i] > 0) { - boss->swork[i]--; + if (this->swork[i] > 0) { + this->swork[i]--; } } - Math_SmoothStepToF(&boss->obj.pos.z, gPlayer[0].pos.z + boss->fwork[6], boss->fwork[8], boss->fwork[7], 0); - Math_SmoothStepToF(&boss->obj.pos.x, boss->fwork[0], boss->fwork[2], boss->fwork[1], 0); - Math_SmoothStepToF(&boss->obj.pos.y, boss->fwork[3], boss->fwork[5], boss->fwork[4], 0); - Math_SmoothStepToF(&boss->fwork[11], 0.0f, 0.1f, 2.0f, 0); - Math_SmoothStepToF(&boss->fwork[12], 0.0f, 0.1f, 2.0f, 0); - Math_SmoothStepToF(&boss->fwork[13], 0.0f, 0.1f, 2.0f, 0); + + Math_SmoothStepToF(&this->obj.pos.z, gPlayer[0].pos.z + this->fwork[6], this->fwork[8], this->fwork[7], 0); + Math_SmoothStepToF(&this->obj.pos.x, this->fwork[0], this->fwork[2], this->fwork[1], 0); + Math_SmoothStepToF(&this->obj.pos.y, this->fwork[3], this->fwork[5], this->fwork[4], 0); + + Math_SmoothStepToF(&this->fwork[11], 0.0f, 0.1f, 2.0f, 0); + Math_SmoothStepToF(&this->fwork[12], 0.0f, 0.1f, 2.0f, 0); + Math_SmoothStepToF(&this->fwork[13], 0.0f, 0.1f, 2.0f, 0); + if (player->draw) { - xDisplacement = gPlayer[0].pos.x - boss->vwork[2].x; - yDisplacement = gPlayer[0].pos.y - boss->vwork[2].y; - zDisplacement = gPlayer[0].trueZpos - boss->vwork[2].z; + xDisplacement = gPlayer[0].pos.x - this->vwork[2].x; + yDisplacement = gPlayer[0].pos.y - this->vwork[2].y; + zDisplacement = gPlayer[0].trueZpos - this->vwork[2].z; yaw = Math_RadToDeg(Math_Atan2F(xDisplacement, zDisplacement)); pitch = Math_RadToDeg(Math_Atan2F(yDisplacement, sqrtf(SQ(xDisplacement) + SQ(zDisplacement)))); @@ -1860,20 +2011,25 @@ void Andross_Boss320_Update(Boss* boss) { yaw = 0.0f; pitch = 345.0f; } - Math_SmoothStepToAngle(&boss->vwork[4].x, pitch, 0.5f, 5.0f, 0); - Math_SmoothStepToAngle(&boss->vwork[4].y, yaw, 0.5f, 5.0f, 0); + + Math_SmoothStepToAngle(&this->vwork[4].x, pitch, 0.5f, 5.0f, 0); + Math_SmoothStepToAngle(&this->vwork[4].y, yaw, 0.5f, 5.0f, 0); + if (player->draw) { - xDisplacement = gPlayer[0].pos.x - boss->vwork[3].x; - yDisplacement = gPlayer[0].pos.y - boss->vwork[3].y; - zDisplacement = gPlayer[0].trueZpos - boss->vwork[3].z; + xDisplacement = gPlayer[0].pos.x - this->vwork[3].x; + yDisplacement = gPlayer[0].pos.y - this->vwork[3].y; + zDisplacement = gPlayer[0].trueZpos - this->vwork[3].z; + yaw = Math_RadToDeg(Math_Atan2F(xDisplacement, zDisplacement)); pitch = Math_RadToDeg(Math_Atan2F(yDisplacement, sqrtf(SQ(xDisplacement) + SQ(zDisplacement)))); + if ((yaw > 30.0f) && (yaw < 180.0f)) { yaw = 30.0f; } if ((yaw < 330.0f) && (yaw > 180.0f)) { yaw = 330.0f; } + if ((pitch > 30.0f) && (pitch < 180.0f)) { pitch = 30.0f; } @@ -1884,27 +2040,30 @@ void Andross_Boss320_Update(Boss* boss) { yaw = 0.0f; pitch = 345.0f; } - Math_SmoothStepToAngle(&boss->vwork[5].x, pitch, 0.5f, 5.0f, 0); - Math_SmoothStepToAngle(&boss->vwork[5].y, yaw, 0.5f, 5.0f, 0); - switch (boss->state) { + + Math_SmoothStepToAngle(&this->vwork[5].x, pitch, 0.5f, 5.0f, 0); + Math_SmoothStepToAngle(&this->vwork[5].y, yaw, 0.5f, 5.0f, 0); + + switch (this->state) { case 0: - boss->fwork[8] = 0.1f; - boss->fwork[7] = 50.0f; - boss->state = 1; - boss->timer_050 = 60; - boss->timer_052 = 80; - boss->timer_054 = 150; - boss->fwork[9] = 1.0f; + this->fwork[8] = 0.1f; + this->fwork[7] = 50.0f; + this->state = 1; + this->timer_050 = 60; + this->timer_052 = 80; + this->timer_054 = 150; + this->fwork[9] = 1.0f; /* fallthrough */ case 1: - boss->timer_05A = 100; - if (boss->timer_054 == 65) { - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_LAUGH, boss->sfxSource, 4); + this->timer_05A = 100; + if (this->timer_054 == 65) { + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_LAUGH, this->sfxSource, 4); } - if (boss->timer_050 != 0) { - boss->fwork[6] = -3000.0f; + + if (this->timer_050 != 0) { + this->fwork[6] = -3000.0f; } else { - boss->fwork[6] = -1000.0f; + this->fwork[6] = -1000.0f; Math_SmoothStepToF(&D_i6_801A7F5C, gLight1R, 1.0f, 4.0f, 0.0f); Math_SmoothStepToF(&D_i6_801A7F64, gLight1G, 1.0f, 3.0f, 0.0f); Math_SmoothStepToF(&D_i6_801A7F6C, gLight1B, 1.0f, 3.0f, 0.0f); @@ -1912,237 +2071,284 @@ void Andross_Boss320_Update(Boss* boss) { Math_SmoothStepToF(&D_i6_801A7F7C, gAmbientG, 1.0f, 2.0f, 0.0f); Math_SmoothStepToF(&D_i6_801A8430, gAmbientB, 1.0f, 2.0f, 0.0f); } + Math_SmoothStepToF(&gAndrossUnkAlpha, 32.0f, 1.0f, 0.5f, 0.0f); Math_SmoothStepToF(&player->camRoll, 0.0f, 0.2f, 3.0f, 0); - boss->fwork[8] = 0.1f; - Math_SmoothStepToF(&boss->fwork[7], 200.0f, 1.0f, 10.0f, 0); - if (boss->timer_052 == 0) { - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C002B08)) { - boss->unk_04C = 0; + + this->fwork[8] = 0.1f; + + Math_SmoothStepToF(&this->fwork[7], 200.0f, 1.0f, 10.0f, 0); + + if (this->timer_052 == 0) { + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C002B08)) { + this->animFrame = 0; } - limbCount = Animation_GetFrameData(&D_ANDROSS_C002B08, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + limbCount = Animation_GetFrameData(&D_ANDROSS_C002B08, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } else { - if (boss->timer_052 < 16) { - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C033D98)) { - boss->unk_04C = Animation_GetFrameCount(&D_ANDROSS_C033D98) - 1; + if (this->timer_052 < 16) { + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C033D98)) { + this->animFrame = Animation_GetFrameCount(&D_ANDROSS_C033D98) - 1; } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C033D98, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); - if (boss->timer_052 == 1) { - boss->unk_04C = 0; + limbCount = Animation_GetFrameData(&D_ANDROSS_C033D98, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); + if (this->timer_052 == 1) { + this->animFrame = 0; } } - Math_SmoothStepToF(&boss->fwork[9], 0.2f, 1.0f, 0.01f, 0); - if (boss->timer_054 == 0) { - boss->state = 2; - boss->unk_04C = 0; - boss->fwork[7] = boss->fwork[9] = 0.0f; - boss->vel.z = -20.0f; + + Math_SmoothStepToF(&this->fwork[9], 0.2f, 1.0f, 0.01f, 0); + + if (this->timer_054 == 0) { + this->state = 2; + this->animFrame = 0; + this->fwork[7] = this->fwork[9] = 0.0f; + this->vel.z = -20.0f; } break; + case 2: - boss->fwork[6] = -4000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 30.0f, 1.0f, 5.0f, 0); - boss->fwork[0] = 0.0f; - boss->fwork[2] = 0.05f; - boss->fwork[3] = 0.0f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 10.0f, 1.0f, 0.5f, 0); - Math_SmoothStepToF(&boss->fwork[4], 10.0f, 1.0f, 0.5f, 0); - Math_SmoothStepToF(&boss->fwork[9], 0.7f, 1.0f, 0.005f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C033780)) { - Andross_8018D9C0(boss); + this->fwork[6] = -4000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 30.0f, 1.0f, 5.0f, 0); + + this->fwork[0] = 0.0f; + this->fwork[2] = 0.05f; + this->fwork[3] = 0.0f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 10.0f, 1.0f, 0.5f, 0); + Math_SmoothStepToF(&this->fwork[4], 10.0f, 1.0f, 0.5f, 0); + Math_SmoothStepToF(&this->fwork[9], 0.7f, 1.0f, 0.005f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C033780)) { + Andross_8018D9C0(this); } - limbCount = Animation_GetFrameData(&D_ANDROSS_C033780, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + limbCount = Animation_GetFrameData(&D_ANDROSS_C033780, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); break; + case 3: - if (boss->swork[4] < 0) { - Andross_8018D9C0(boss); + if (this->swork[4] < 0) { + Andross_8018D9C0(this); } else { - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y + 1000.0f; - if (boss->unk_04C == 60) { - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_PUNCH, boss->sfxSource, 4); + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y + 1000.0f; + + if (this->animFrame == 60) { + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_PUNCH, this->sfxSource, 4); } - if (boss->unk_04C > 60) { - if (boss->unk_04C == 76) { - boss->fwork[7] = 0.0f; + if (this->animFrame > 60) { + if (this->animFrame == 76) { + this->fwork[7] = 0.0f; } - if (boss->unk_04C > 76) { - boss->fwork[6] = -2500.0f; - boss->fwork[8] = 0.1f; - Math_SmoothStepToF(&boss->fwork[7], 100.0f, 1.0f, 10.0f, 0); + if (this->animFrame > 76) { + this->fwork[6] = -2500.0f; + this->fwork[8] = 0.1f; + Math_SmoothStepToF(&this->fwork[7], 100.0f, 1.0f, 10.0f, 0); } else { - boss->fwork[6] = -1500.0f; - boss->fwork[8] = 0.3f; - Math_SmoothStepToF(&boss->fwork[7], 200.0f, 1.0f, 40.0f, 0); + this->fwork[6] = -1500.0f; + this->fwork[8] = 0.3f; + Math_SmoothStepToF(&this->fwork[7], 200.0f, 1.0f, 40.0f, 0); } - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 2.0f, 1.0f, 0.5f, 0); - Math_SmoothStepToF(&boss->fwork[4], 2.0f, 1.0f, 0.5f, 0); - boss->swork[7] = 1; - boss->fwork[14] = -100.0f; - boss->fwork[15] = -50.0f; + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 2.0f, 1.0f, 0.5f, 0); + Math_SmoothStepToF(&this->fwork[4], 2.0f, 1.0f, 0.5f, 0); + + this->swork[7] = 1; + this->fwork[14] = -100.0f; + this->fwork[15] = -50.0f; } else { - boss->fwork[6] = -4000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 30.0f, 1.0f, 2.0f, 0); - boss->fwork[2] = 0.1f; - boss->fwork[5] = 0.1f; - boss->fwork[14] = 50.0f; - Math_SmoothStepToF(&boss->fwork[1], 20.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 20.0f, 1.0f, 1.0f, 0); + this->fwork[6] = -4000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 30.0f, 1.0f, 2.0f, 0); + + this->fwork[2] = 0.1f; + this->fwork[5] = 0.1f; + this->fwork[14] = 50.0f; + + Math_SmoothStepToF(&this->fwork[1], 20.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 20.0f, 1.0f, 1.0f, 0); } - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C029F74)) { - Andross_8018D9C0(boss); + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C029F74)) { + Andross_8018D9C0(this); } - limbCount = Animation_GetFrameData(&D_ANDROSS_C029F74, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + limbCount = Animation_GetFrameData(&D_ANDROSS_C029F74, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } break; + case 4: - if (boss->swork[4] < 0) { - Andross_8018D9C0(boss); + if (this->swork[4] < 0) { + Andross_8018D9C0(this); } else { - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y; - if (boss->unk_04C == 55) { - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_PUNCH, boss->sfxSource, 4); + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y; + + if (this->animFrame == 55) { + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_PUNCH, this->sfxSource, 4); } - if (boss->unk_04C > 55) { - boss->fwork[6] = -1500.0f; - boss->fwork[8] = 0.3f; - Math_SmoothStepToF(&boss->fwork[7], 200.0f, 1.0f, 40.0f, 0); - boss->swork[7] = 1; - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - boss->fwork[14] = -100.0f; - Math_SmoothStepToF(&boss->fwork[1], 2.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 2.0f, 1.0f, 1.0f, 0); + if (this->animFrame > 55) { + this->fwork[6] = -1500.0f; + this->fwork[8] = 0.3f; + Math_SmoothStepToF(&this->fwork[7], 200.0f, 1.0f, 40.0f, 0); + this->swork[7] = 1; + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + this->fwork[14] = -100.0f; + Math_SmoothStepToF(&this->fwork[1], 2.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 2.0f, 1.0f, 1.0f, 0); } else { - boss->fwork[6] = -4000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 30.0f, 1.0f, 2.0f, 0); - boss->fwork[2] = 0.1f; - boss->fwork[5] = 0.1f; - boss->fwork[14] = 50.0f; - Math_SmoothStepToF(&boss->fwork[1], 30.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 1.0f, 0); + this->fwork[6] = -4000.0f; + this->fwork[8] = 0.05f; + Math_SmoothStepToF(&this->fwork[7], 30.0f, 1.0f, 2.0f, 0); + this->fwork[2] = 0.1f; + this->fwork[5] = 0.1f; + this->fwork[14] = 50.0f; + Math_SmoothStepToF(&this->fwork[1], 30.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 1.0f, 0); } - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C02E494)) { - Andross_8018D9C0(boss); + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C02E494)) { + Andross_8018D9C0(this); } - limbCount = Animation_GetFrameData(&D_ANDROSS_C02E494, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + limbCount = Animation_GetFrameData(&D_ANDROSS_C02E494, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } break; + case 5: - if (boss->swork[5] < 0) { - Andross_8018D9C0(boss); + if (this->swork[5] < 0) { + Andross_8018D9C0(this); } else { - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y + 500.0f; - if (boss->timer_050 != 0) { - boss->fwork[6] = -4000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 30.0f, 1.0f, 5.0f, 0); - boss->fwork[2] = 0.1f; - boss->fwork[5] = 0.1f; - Math_SmoothStepToF(&boss->fwork[1], 30.0f, 1.0f, 2.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 2.0f, 0); + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y + 500.0f; + if (this->timer_050 != 0) { + this->fwork[6] = -4000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 30.0f, 1.0f, 5.0f, 0); + + this->fwork[2] = 0.1f; + this->fwork[5] = 0.1f; + + Math_SmoothStepToF(&this->fwork[1], 30.0f, 1.0f, 2.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 2.0f, 0); } else { - boss->unk_04C++; - boss->fwork[6] = -1400.0f; - boss->fwork[8] = 0.2f; - Math_SmoothStepToF(&boss->fwork[7], 200.0f, 1.0f, 40.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 2.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 2.0f, 1.0f, 1.0f, 0); - if (boss->unk_04C == 5) { - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_SLAP, boss->sfxSource, 4); + this->animFrame++; + + this->fwork[6] = -1400.0f; + this->fwork[8] = 0.2f; + + Math_SmoothStepToF(&this->fwork[7], 200.0f, 1.0f, 40.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 2.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 2.0f, 1.0f, 1.0f, 0); + + if (this->animFrame == 5) { + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_SLAP, this->sfxSource, 4); } - boss->swork[7] = 1; - boss->fwork[14] = 100.0f; + this->swork[7] = 1; + this->fwork[14] = 100.0f; } - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C030244)) { - Andross_8018D9C0(boss); + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C030244)) { + Andross_8018D9C0(this); } - limbCount = Animation_GetFrameData(&D_ANDROSS_C030244, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C030244, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } break; case 6: - if ((boss->swork[4] < 0) || (boss->swork[5] < 0)) { - Andross_8018D9C0(boss); + if ((this->swork[4] < 0) || (this->swork[5] < 0)) { + Andross_8018D9C0(this); } else { - if (boss->timer_050 == 1) { - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_WHAND, boss->sfxSource, 4); + if (this->timer_050 == 1) { + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_WHAND, this->sfxSource, 4); } - if (boss->timer_050 != 0) { - boss->fwork[6] = -4000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 40.0f, 1.0f, 3.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 30.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 1.0f, 0); - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y + 300.0f; + if (this->timer_050 != 0) { + this->fwork[6] = -4000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 40.0f, 1.0f, 3.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 30.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 1.0f, 0); + + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y + 300.0f; } else { - boss->unk_04C++; - boss->fwork[6] = -2000.0f; - boss->fwork[8] = 0.2f; - Math_SmoothStepToF(&boss->fwork[7], 50.0f, 1.0f, 10.0f, 0); - boss->fwork[2] = 0.1f; - boss->fwork[5] = 0.1f; - Math_SmoothStepToF(&boss->fwork[1], 10.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 10.0f, 1.0f, 1.0f, 0); - boss->swork[7] = 1; - if (boss->unk_04C > 18) { - Math_SmoothStepToF(&boss->fwork[11], 110.0f, 1.0f, 18.0f, 0); - Math_SmoothStepToF(&boss->fwork[12], 20.0f, 1.0f, 3.6f, 0); - Math_SmoothStepToF(&boss->fwork[13], 80.0f, 1.0f, 15.0f, 0); + this->animFrame++; + + this->fwork[6] = -2000.0f; + this->fwork[8] = 0.2f; + + Math_SmoothStepToF(&this->fwork[7], 50.0f, 1.0f, 10.0f, 0); + + this->fwork[2] = 0.1f; + this->fwork[5] = 0.1f; + + Math_SmoothStepToF(&this->fwork[1], 10.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 10.0f, 1.0f, 1.0f, 0); + + this->swork[7] = 1; + + if (this->animFrame > 18) { + Math_SmoothStepToF(&this->fwork[11], 110.0f, 1.0f, 18.0f, 0); + Math_SmoothStepToF(&this->fwork[12], 20.0f, 1.0f, 3.6f, 0); + Math_SmoothStepToF(&this->fwork[13], 80.0f, 1.0f, 15.0f, 0); } - if (boss->unk_04C == 25) { + if (this->animFrame == 25) { // Why tank? AUDIO_PLAY_SFX(NA_SE_TANK_BOUND, D_i6_801A67B8, 4); } } - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C02EDA0)) { - Andross_8018D9C0(boss); + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C02EDA0)) { + Andross_8018D9C0(this); } - limbCount = Animation_GetFrameData(&D_ANDROSS_C02EDA0, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + limbCount = Animation_GetFrameData(&D_ANDROSS_C02EDA0, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } break; + case 7: - if (boss->swork[5] < 0) { - Andross_8018D9C0(boss); + if (this->swork[5] < 0) { + Andross_8018D9C0(this); } else { - if (boss->unk_04C == 48) { - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_SPARK, boss->sfxSource, 4); + if (this->animFrame == 48) { + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_SPARK, this->sfxSource, 4); } - if (boss->unk_04C > 48) { - Andross_8018D0D8(boss); + if (this->animFrame > 48) { + Andross_8018D0D8(this); } - if (boss->unk_04C > 45) { - Math_SmoothStepToF(&boss->fwork[20], 1.0f, 1.0f, 0.2f, 0.01f); - Math_SmoothStepToF(&boss->fwork[21], 1.0f, 0.5f, 0.15f, 0.01f); + if (this->animFrame > 45) { + Math_SmoothStepToF(&this->fwork[20], 1.0f, 1.0f, 0.2f, 0.01f); + Math_SmoothStepToF(&this->fwork[21], 1.0f, 0.5f, 0.15f, 0.01f); if (((gGameFrameCount % 2) == 0)) { gAmbientR = 200; gAmbientG = 90; @@ -2153,130 +2359,166 @@ void Andross_Boss320_Update(Boss* boss) { gAmbientB = 127; } } else { - Math_SmoothStepToF(&boss->fwork[20], 0.15f, 1.0f, 0.15f, 0.01f); - Math_SmoothStepToF(&boss->fwork[21], 0.5f, 1.0f, 0.11f, 0.001f); + Math_SmoothStepToF(&this->fwork[20], 0.15f, 1.0f, 0.15f, 0.01f); + Math_SmoothStepToF(&this->fwork[21], 0.5f, 1.0f, 0.11f, 0.001f); } - boss->fwork[0] = player->pos.x + 500.0f; - boss->fwork[3] = player->pos.y + 750.0f; - boss->fwork[6] = -5000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 60.0f, 1.0f, 5.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 5.0f, 1.0f, 2.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 5.0f, 1.0f, 2.0f, 0); - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C018BC4)) { - boss->unk_04C = Animation_GetFrameCount(&D_ANDROSS_C018BC4) - 1; - if (boss->timer_050 == 0) { - Andross_8018D9C0(boss); + + this->fwork[0] = player->pos.x + 500.0f; + this->fwork[3] = player->pos.y + 750.0f; + this->fwork[6] = -5000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 60.0f, 1.0f, 5.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 5.0f, 1.0f, 2.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 5.0f, 1.0f, 2.0f, 0); + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C018BC4)) { + this->animFrame = Animation_GetFrameCount(&D_ANDROSS_C018BC4) - 1; + if (this->timer_050 == 0) { + Andross_8018D9C0(this); } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C018BC4, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C018BC4, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } break; + case 12: - if ((boss->swork[4] < 0) || (boss->swork[5] < 0)) { - boss->state = 14; - boss->unk_04C = 0; - boss->fwork[9] = 0.0f; + if ((this->swork[4] < 0) || (this->swork[5] < 0)) { + this->state = 14; + this->animFrame = 0; + this->fwork[9] = 0.0f; } else { - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 40.0f, 1.0f, 2.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 20.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 20.0f, 1.0f, 1.0f, 0); - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C025C00)) { - boss->unk_04C = Animation_GetFrameCount(&D_ANDROSS_C025C00) - 1; - if (boss->timer_050 == 0) { - Andross_8018D9C0(boss); + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 40.0f, 1.0f, 2.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 20.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 20.0f, 1.0f, 1.0f, 0); + + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C025C00)) { + this->animFrame = Animation_GetFrameCount(&D_ANDROSS_C025C00) - 1; + if (this->timer_050 == 0) { + Andross_8018D9C0(this); } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C025C00, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C025C00, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } break; case 13: - if ((boss->swork[4] < 0) || (boss->swork[5] < 0)) { - boss->state = 14; - boss->unk_04C = 0; - boss->fwork[9] = 0.0f; + if ((this->swork[4] < 0) || (this->swork[5] < 0)) { + this->state = 14; + this->animFrame = 0; + this->fwork[9] = 0.0f; } else { - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 20.0f, 1.0f, 2.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 20.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 20.0f, 1.0f, 1.0f, 0); - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C006F08)) { - boss->unk_04C = Animation_GetFrameCount(&D_ANDROSS_C006F08) - 1; - if (boss->timer_050 == 0) { - Andross_8018D9C0(boss); + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 20.0f, 1.0f, 2.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 20.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 20.0f, 1.0f, 1.0f, 0); + + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C006F08)) { + this->animFrame = Animation_GetFrameCount(&D_ANDROSS_C006F08) - 1; + if (this->timer_050 == 0) { + Andross_8018D9C0(this); } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C006F08, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C006F08, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } break; + case 14: - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 20.0f, 1.0f, 2.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 20.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 20.0f, 1.0f, 1.0f, 0); - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C002654)) { - boss->unk_04C = 0; - if (boss->timer_050 == 0) { - Andross_8018D9C0(boss); + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 20.0f, 1.0f, 2.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 20.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 20.0f, 1.0f, 1.0f, 0); + + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C002654)) { + this->animFrame = 0; + if (this->timer_050 == 0) { + Andross_8018D9C0(this); } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C002654, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C002654, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); break; + case 15: - if (boss->swork[8] == 1) { - boss->fwork[6] = 100.0f; + if (this->swork[8] == 1) { + this->fwork[6] = 100.0f; } else { - boss->fwork[6] = -3000.0f; + this->fwork[6] = -3000.0f; } - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 60.0f, 1.0f, 5.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 20.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 20.0f, 1.0f, 1.0f, 0); - boss->fwork[0] = 0.0f; - boss->fwork[3] = 0.0f; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - if (boss->unk_04C == 15) { - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BITE0, boss->sfxSource, 4); + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 60.0f, 1.0f, 5.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 20.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 20.0f, 1.0f, 1.0f, 0); + + this->fwork[0] = 0.0f; + this->fwork[3] = 0.0f; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + if (this->animFrame == 15) { + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BITE0, this->sfxSource, 4); } - if ((boss->unk_04C > 35) && (boss->unk_04C < 150) && ((boss->unk_04C % 32) == 0)) { - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BITE1, boss->sfxSource, 4); + if ((this->animFrame > 35) && (this->animFrame < 150) && ((this->animFrame % 32) == 0)) { + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BITE1, this->sfxSource, 4); if (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH) { gControllerRumbleTimers[0] = 10; } } - if ((boss->unk_04C == 20) && (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH)) { + if ((this->animFrame == 20) && (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH)) { player->draw = false; for (i = 0; i < ARRAY_COUNT(gEffects); i++) { if (gEffects[i].obj.id == OBJ_EFFECT_396) { @@ -2284,79 +2526,93 @@ void Andross_Boss320_Update(Boss* boss) { } } } - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C00DE48)) { - boss->unk_04C = Animation_GetFrameCount(&D_ANDROSS_C00DE48) - 1; - if (boss->timer_050 == 0) { - boss->state = 16; - boss->unk_04C = 0; - boss->timer_050 = 30; - boss->fwork[9] = 0.0f; + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C00DE48)) { + this->animFrame = Animation_GetFrameCount(&D_ANDROSS_C00DE48) - 1; + if (this->timer_050 == 0) { + this->state = 16; + this->animFrame = 0; + this->timer_050 = 30; + this->fwork[9] = 0.0f; } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C00DE48, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); - if ((boss->unk_04C == 45) && (boss->swork[8] == 2)) { - boss->state = 18; - boss->unk_04C = 0; - boss->unk_044 = 0; - boss->timer_050 = 40; - boss->fwork[9] = 0.0f; + + limbCount = Animation_GetFrameData(&D_ANDROSS_C00DE48, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); + + if ((this->animFrame == 45) && (this->swork[8] == 2)) { + this->state = 18; + this->animFrame = 0; + this->unk_044 = 0; + this->timer_050 = 40; + this->fwork[9] = 0.0f; } break; + case 16: - if (boss->swork[8] == 1) { - boss->fwork[6] = 100.0f; + if (this->swork[8] == 1) { + this->fwork[6] = 100.0f; } else { - boss->fwork[6] = -3000.0f; + this->fwork[6] = -3000.0f; } - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 50.0f, 1.0f, 2.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 20.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 20.0f, 1.0f, 1.0f, 0); - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y + 100.0f; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - if (boss->timer_050 == 0) { - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C023B54)) { - boss->unk_04C = Animation_GetFrameCount(&D_ANDROSS_C023B54) - 1; - Andross_8018D9C0(boss); + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 50.0f, 1.0f, 2.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 20.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 20.0f, 1.0f, 1.0f, 0); + + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y + 100.0f; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + if (this->timer_050 == 0) { + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C023B54)) { + this->animFrame = Animation_GetFrameCount(&D_ANDROSS_C023B54) - 1; + Andross_8018D9C0(this); } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C023B54, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); - if (boss->unk_04C == 10) { - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_VOMIT, boss->sfxSource, 4); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C023B54, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); + + if (this->animFrame == 10) { + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_VOMIT, this->sfxSource, 4); } - if ((boss->unk_04C == 13) && (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH)) { + + if ((this->animFrame == 13) && (player->state_1C8 == PLAYERSTATE_1C8_ANDROSS_MOUTH)) { player->draw = true; player->csState = 1; player->csTimer = 60; player->mercyTimer = 50; - boss->swork[8] = 0; + this->swork[8] = 0; gControllerRumbleTimers[0] = 30; + if (player->wings.rightState == 2) { gRightWingHealth[0] = 0; player->wings.rightState = 1; - Andross_8018C8D4(boss->obj.pos.x, boss->obj.pos.y - 200.0f, boss->obj.pos.z, - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), 10.0f, 8); + Andross_Effect396_Spawn2(this->obj.pos.x, this->obj.pos.y - 200.0f, this->obj.pos.z, + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), 10.0f, 8); } if (player->wings.leftState == 2) { gLeftWingHealth[0] = 0; player->wings.leftState = 1; - Andross_8018C8D4(boss->obj.pos.x, boss->obj.pos.y - 200.0f, boss->obj.pos.z, - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), 10.0f, 9); + Andross_Effect396_Spawn2(this->obj.pos.x, this->obj.pos.y - 200.0f, this->obj.pos.z, + RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT_CENTERED(10.0f), 10.0f, 9); } } - if (boss->unk_04C >= 10 && boss->unk_04C < 20) { + if ((this->animFrame >= 10) && (this->animFrame < 20)) { for (i = 0; i < 10; i++) { - Andross_8018C8D4(boss->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), - (boss->obj.pos.y - 200.0f) + RAND_FLOAT_CENTERED(100.0f), boss->obj.pos.z, - RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT(5.0f) + 5.0f, - RAND_INT(7.9)); + Andross_Effect396_Spawn2(this->obj.pos.x + RAND_FLOAT_CENTERED(100.0f), + (this->obj.pos.y - 200.0f) + RAND_FLOAT_CENTERED(100.0f), this->obj.pos.z, + RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT(5.0f) + 5.0f, RAND_INT(7.9)); } } break; @@ -2367,57 +2623,64 @@ void Andross_Boss320_Update(Boss* boss) { if (1) {} if (1) {} Math_SmoothStepToF(&D_ctx_801779A8[gMainController], 50.0f, 1.0f, 1.8f, 0.0f); - boss->timer_056 = 50; + this->timer_056 = 50; - if ((boss->timer_050 > 70) && (boss->timer_050 < 1000) && ((gGameFrameCount % 4) == 0)) { - Andross_8018C734(gPlayer[0].cam.eye.x + RAND_FLOAT_CENTERED(3000.0f), - gPlayer[0].cam.eye.y + RAND_FLOAT_CENTERED(3000.0f), - gPlayer[0].cam.eye.z - gPathProgress, RAND_INT(7.9)); + if ((this->timer_050 > 70) && (this->timer_050 < 1000) && ((gGameFrameCount % 4) == 0)) { + Andross_Effect396_Spawn1(gPlayer[0].cam.eye.x + RAND_FLOAT_CENTERED(3000.0f), + gPlayer[0].cam.eye.y + RAND_FLOAT_CENTERED(3000.0f), + gPlayer[0].cam.eye.z - gPathProgress, RAND_INT(7.9)); } - if (boss->timer_050 > 0) { + if (this->timer_050 > 0) { playerShot = gPlayerShots; effect = gEffects; for (i = 0; i < ARRAY_COUNT(gPlayerShots); i++, playerShot++) { - Math_SmoothStepToF(&playerShot->obj.pos.x, boss->obj.pos.x, 0.5f, boss->fwork[16], 0); - Math_SmoothStepToF(&playerShot->obj.pos.y, boss->obj.pos.y - 100.0f, 0.5f, boss->fwork[16], 0); + Math_SmoothStepToF(&playerShot->obj.pos.x, this->obj.pos.x, 0.5f, this->fwork[16], 0); + Math_SmoothStepToF(&playerShot->obj.pos.y, this->obj.pos.y - 100.0f, 0.5f, this->fwork[16], 0); + Math_SmoothStepToF(&playerShot->vel.x, 0.0f, 0.9f, 5.0f, 0); Math_SmoothStepToF(&playerShot->vel.y, 0.0f, 0.9f, 5.0f, 0); + if ((playerShot->obj.id == PLAYERSHOT_BOMB) && (playerShot->obj.status == 1) && - (playerShot->unk_5C == 0) && (fabsf(playerShot->obj.pos.x - boss->obj.pos.x) < 200.0f) && - (fabsf(playerShot->obj.pos.y - (boss->obj.pos.y - 100.0f)) < 200.0f) && - (fabsf(playerShot->obj.pos.z - (boss->obj.pos.z - 200.0f)) < 100.0f)) { + (playerShot->unk_5C == 0) && (fabsf(playerShot->obj.pos.x - this->obj.pos.x) < 200.0f) && + (fabsf(playerShot->obj.pos.y - (this->obj.pos.y - 100.0f)) < 200.0f) && + (fabsf(playerShot->obj.pos.z - (this->obj.pos.z - 200.0f)) < 100.0f)) { Object_Kill(&playerShot->obj, playerShot->sfxSource); - boss->state = 15; - boss->fwork[9] = 0.2f; - boss->unk_04C = 0; - boss->swork[8] = 2; - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_CHOKE, boss->sfxSource, 4); + this->state = 15; + this->fwork[9] = 0.2f; + this->animFrame = 0; + this->swork[8] = 2; + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_CHOKE, this->sfxSource, 4); break; } } + for (i = 0; i < ARRAY_COUNT(gEffects); i++, effect++) { if ((effect->obj.status != OBJ_FREE) && (effect->obj.id != OBJ_EFFECT_396)) { - Math_SmoothStepToF(&effect->obj.pos.x, boss->obj.pos.x, 0.5f, boss->fwork[16], 0); - Math_SmoothStepToF(&effect->obj.pos.y, boss->obj.pos.y - 100.0f, 0.5f, boss->fwork[16], 0); - Math_SmoothStepToF(&effect->obj.pos.z, boss->obj.pos.z - 200.0f, 0.5f, boss->fwork[16], 0); + Math_SmoothStepToF(&effect->obj.pos.x, this->obj.pos.x, 0.5f, this->fwork[16], 0); + Math_SmoothStepToF(&effect->obj.pos.y, this->obj.pos.y - 100.0f, 0.5f, this->fwork[16], 0); + Math_SmoothStepToF(&effect->obj.pos.z, this->obj.pos.z - 200.0f, 0.5f, this->fwork[16], 0); + Math_SmoothStepToF(&effect->vel.x, 0.0f, 0.9f, 5.0f, 0); Math_SmoothStepToF(&effect->vel.y, 0.0f, 0.9f, 5.0f, 0); Math_SmoothStepToF(&effect->vel.z, 0.0f, 0.9f, 10.0f, 0); - if ((fabsf(effect->obj.pos.x - boss->obj.pos.x) < 200.0f) && - (fabsf(effect->obj.pos.y - (boss->obj.pos.y - 100.0f)) < 200.0f) && - (fabsf(effect->obj.pos.z - (boss->obj.pos.z - 200.0f)) < 100.0f)) { + + if ((fabsf(effect->obj.pos.x - this->obj.pos.x) < 200.0f) && + (fabsf(effect->obj.pos.y - (this->obj.pos.y - 100.0f)) < 200.0f) && + (fabsf(effect->obj.pos.z - (this->obj.pos.z - 200.0f)) < 100.0f)) { Object_Kill(&effect->obj, effect->sfxSource); } } } - Math_SmoothStepToF(&player->pos.x, boss->obj.pos.x, 0.1f, boss->fwork[16], 0); - Math_SmoothStepToF(&player->pos.y, boss->obj.pos.y - 150.0f, 0.1f, boss->fwork[16], 0); - Math_SmoothStepToF(&boss->fwork[16], 35.0f, 1.0f, 0.5f, 0); - if (fabsf(player->trueZpos - boss->obj.pos.z) < 200.0f) { - boss->state = 15; - boss->swork[8] = 1; - boss->fwork[9] = 0.2f; - boss->unk_04C = 0; + + Math_SmoothStepToF(&player->pos.x, this->obj.pos.x, 0.1f, this->fwork[16], 0); + Math_SmoothStepToF(&player->pos.y, this->obj.pos.y - 150.0f, 0.1f, this->fwork[16], 0); + Math_SmoothStepToF(&this->fwork[16], 35.0f, 1.0f, 0.5f, 0); + + if (fabsf(player->trueZpos - this->obj.pos.z) < 200.0f) { + this->state = 15; + this->swork[8] = 1; + this->fwork[9] = 0.2f; + this->animFrame = 0; if (player->state_1C8 == PLAYERSTATE_1C8_ACTIVE) { player->state_1C8 = PLAYERSTATE_1C8_ANDROSS_MOUTH; player->csState = 0; @@ -2425,125 +2688,157 @@ void Andross_Boss320_Update(Boss* boss) { break; } } - boss->fwork[8] = 0.1f; - boss->fwork[2] = 0.1f; - boss->fwork[5] = 0.1f; - boss->fwork[6] = -300.0f; - Math_SmoothStepToF(&boss->fwork[1], 20.0f, 1.0f, 1.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 1.0f, 0); - boss->fwork[0] = 0.0f; - boss->fwork[3] = 150.0f; - Math_SmoothStepToF(&boss->fwork[7], 20.0f, 0.1f, 0.1f, 0); - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.01f, 0); - if (boss->unk_04C == 10) { - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BREATH, boss->sfxSource, 4); + + this->fwork[8] = 0.1f; + this->fwork[2] = 0.1f; + this->fwork[5] = 0.1f; + this->fwork[6] = -300.0f; + + Math_SmoothStepToF(&this->fwork[1], 20.0f, 1.0f, 1.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 1.0f, 0); + + this->fwork[0] = 0.0f; + this->fwork[3] = 150.0f; + + Math_SmoothStepToF(&this->fwork[7], 20.0f, 0.1f, 0.1f, 0); + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.01f, 0); + + if (this->animFrame == 10) { + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_BREATH, this->sfxSource, 4); } - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C0240D0)) { - boss->unk_04C = 0; - if (boss->timer_050 == 0) { - boss->state = 15; - boss->swork[8] = 0; - boss->fwork[9] = 0.0f; + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C0240D0)) { + this->animFrame = 0; + if (this->timer_050 == 0) { + this->state = 15; + this->swork[8] = 0; + this->fwork[9] = 0.0f; } } - limbCount = Animation_GetFrameData(&D_ANDROSS_C0240D0, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + limbCount = Animation_GetFrameData(&D_ANDROSS_C0240D0, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); break; + case 18: - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 70.0f, 1.0f, 7.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 30.0f, 1.0f, 3.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 3.0f, 0); - boss->fwork[0] = 0.0f; - boss->fwork[3] = 0.0f; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.05f, 0); - switch (boss->unk_044) { + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 70.0f, 1.0f, 7.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 30.0f, 1.0f, 3.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 3.0f, 0); + + this->fwork[0] = 0.0f; + this->fwork[3] = 0.0f; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.05f, 0); + + switch (this->unk_044) { case 0: - if (boss->timer_050 != 0) { + if (this->timer_050 != 0) { limbCount = Animation_GetFrameData(&D_ANDROSS_C00DE48, 45, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } else { - boss->unk_044 = 1; - boss->timer_050 = 30; - boss->swork[9] = 20; - boss->fwork[9] = 0.0f; - Audio_PlayBombExplodeSfx(0, boss->sfxSource); - boss->timer_05C = 50; + this->unk_044 = 1; + this->timer_050 = 30; + this->swork[9] = 20; + this->fwork[9] = 0.0f; + Audio_PlayBombExplodeSfx(0, this->sfxSource); + this->timer_05C = 50; } break; + case 1: - if (boss->timer_050 != 0) { + if (this->timer_050 != 0) { limbCount = Animation_GetFrameData(&D_ANDROSS_C017430, 0, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); } else { - boss->unk_044 = 2; - boss->timer_050 = 70; - boss->fwork[9] = 0.0f; - AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_EXCITE, boss->sfxSource, 4); + this->unk_044 = 2; + this->timer_050 = 70; + this->fwork[9] = 0.0f; + AUDIO_PLAY_SFX(NA_SE_VO_ANDROSS_EXCITE, this->sfxSource, 4); } - if (boss->timer_050 == 15) { - boss->swork[10] = 80; + if (this->timer_050 == 15) { + this->swork[10] = 80; } break; + case 2: - if (boss->timer_050 == 0) { - Andross_8018D9C0(boss); + if (this->timer_050 == 0) { + Andross_8018D9C0(this); } - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C00E598)) { - boss->unk_04C = 0; + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C00E598)) { + this->animFrame = 0; } - limbCount = Animation_GetFrameData(&D_ANDROSS_C00E598, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C00E598, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); break; } break; + case 20: - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 70.0f, 1.0f, 7.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 50.0f, 1.0f, 5.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 50.0f, 1.0f, 5.0f, 0); - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.05f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C017050)) { - Andross_8018D9C0(boss); + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 70.0f, 1.0f, 7.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 50.0f, 1.0f, 5.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 50.0f, 1.0f, 5.0f, 0); + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.05f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C017050)) { + Andross_8018D9C0(this); } - limbCount = Animation_GetFrameData(&D_ANDROSS_C017050, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C017050, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); break; + case 30: - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 70.0f, 1.0f, 7.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 30.0f, 1.0f, 3.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 3.0f, 0); - boss->fwork[0] = 0.0f; - boss->fwork[3] = 0.0f; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.05f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C017050)) { - boss->unk_04C = 0; + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 70.0f, 1.0f, 7.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 30.0f, 1.0f, 3.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 3.0f, 0); + + this->fwork[0] = 0.0f; + this->fwork[3] = 0.0f; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.05f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C017050)) { + this->animFrame = 0; } - limbCount = Animation_GetFrameData(&D_ANDROSS_C017050, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); - if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C484(boss->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), boss->obj.pos.z, 0.0f, 0.0f, - boss->vel.z, RAND_FLOAT(0.2f) + 0.2f, 0); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C017050, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); + + if ((gGameFrameCount % 2) == 0) { + Effect_Effect389_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), this->obj.pos.z, 0.0f, 0.0f, + this->vel.z, RAND_FLOAT(0.2f) + 0.2f, 0); } if (gCsFrameCount > 50) { - func_effect_8007D0E0(boss->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), boss->obj.pos.z, + func_effect_8007D0E0(this->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), this->obj.pos.z, RAND_FLOAT(3.0f) + 3.0f); } @@ -2551,131 +2846,157 @@ void Andross_Boss320_Update(Boss* boss) { switch (gCsFrameCount) { case 60: - boss->swork[17] = 1; - Andross_8018DA94(boss, &boss->vwork[19]); + this->swork[17] = 1; + Andross_8018DA94(this, &this->vwork[19]); break; case 70: - boss->swork[19] = 1; - Andross_8018DA94(boss, &boss->vwork[21]); + this->swork[19] = 1; + Andross_8018DA94(this, &this->vwork[21]); break; case 80: - boss->swork[11] = 1; - Andross_8018DA94(boss, &boss->vwork[13]); + this->swork[11] = 1; + Andross_8018DA94(this, &this->vwork[13]); break; case 90: - boss->swork[12] = 1; - Andross_8018DA94(boss, &boss->vwork[14]); + this->swork[12] = 1; + Andross_8018DA94(this, &this->vwork[14]); break; case 100: - boss->swork[22] = 1; - Andross_8018DA94(boss, &boss->vwork[24]); + this->swork[22] = 1; + Andross_8018DA94(this, &this->vwork[24]); break; case 110: - boss->swork[23] = 1; - Andross_8018DA94(boss, &boss->vwork[25]); + this->swork[23] = 1; + Andross_8018DA94(this, &this->vwork[25]); break; case 120: - boss->swork[18] = 1; - Andross_8018DA94(boss, &boss->vwork[19]); - boss->state = 9; - boss->health = 100; - boss->timer_050 = 50; - boss->fwork[9] = 0.0f; - AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_ROBOT, boss->sfxSource, 4); + this->swork[18] = 1; + Andross_8018DA94(this, &this->vwork[19]); + this->state = 9; + this->health = 100; + this->timer_050 = 50; + this->fwork[9] = 0.0f; + AUDIO_PLAY_SFX(NA_SE_EN_ANDROSS_ROBOT, this->sfxSource, 4); AUDIO_PLAY_BGM(NA_BGM_BOSS_ANDROSS); break; } break; + case 9: - boss->fwork[6] = -3000.0f; - if (boss->timer_050 == 0) { - boss->state = 10; - boss->timer_050 = 100; + this->fwork[6] = -3000.0f; + if (this->timer_050 == 0) { + this->state = 10; + this->timer_050 = 100; } - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 60.0f, 1.0f, 3.0f, 0); - boss->fwork[0] = player->pos.x; - boss->fwork[3] = player->pos.y; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.05f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C00208C)) { - boss->unk_04C = 0; - } - limbCount = Animation_GetFrameData(&D_ANDROSS_C00208C, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + this->fwork[8] = 0.05f; - func_effect_8007C484(boss->obj.pos.x + RAND_FLOAT_CENTERED(700.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(700.0f), boss->obj.pos.z, 0.0f, 0.0f, - gPlayer[0].vel.z, RAND_FLOAT(0.15f) + 0.15f, 0); + Math_SmoothStepToF(&this->fwork[7], 60.0f, 1.0f, 3.0f, 0); + + this->fwork[0] = player->pos.x; + this->fwork[3] = player->pos.y; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.05f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C00208C)) { + this->animFrame = 0; + } + + limbCount = Animation_GetFrameData(&D_ANDROSS_C00208C, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); + + Effect_Effect389_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(700.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(700.0f), this->obj.pos.z, 0.0f, 0.0f, + gPlayer[0].vel.z, RAND_FLOAT(0.15f) + 0.15f, 0); break; + case 10: - boss->fwork[6] = 0.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 60.0f, 1.0f, 3.0f, 0); - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.05f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C00208C)) { - boss->unk_04C = 0; - } - limbCount = Animation_GetFrameData(&D_ANDROSS_C00208C, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); + this->fwork[6] = 0.0f; + this->fwork[8] = 0.05f; - func_effect_8007C484(boss->obj.pos.x + RAND_FLOAT_CENTERED(700.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(700.0f), boss->obj.pos.z, 0.0f, 0.0f, - gPlayer[0].vel.z, RAND_FLOAT(0.15f) + 0.15f, 0); - if (boss->timer_050 == 0) { - boss->state = 9; - boss->timer_050 = 130; + Math_SmoothStepToF(&this->fwork[7], 60.0f, 1.0f, 3.0f, 0); + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.05f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C00208C)) { + this->animFrame = 0; + } + + limbCount = Animation_GetFrameData(&D_ANDROSS_C00208C, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); + + Effect_Effect389_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(700.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(700.0f), this->obj.pos.z, 0.0f, 0.0f, + gPlayer[0].vel.z, RAND_FLOAT(0.15f) + 0.15f, 0); + if (this->timer_050 == 0) { + this->state = 9; + this->timer_050 = 130; } break; + case 31: - boss->obj.rot.x += 1.0f; - boss->obj.rot.y += 0.3f; - boss->obj.rot.z += 0.7f; - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 70.0f, 1.0f, 7.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 30.0f, 1.0f, 3.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 3.0f, 0); - boss->fwork[0] = 0.0f; - boss->fwork[3] = 0.0f; - if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C484(boss->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), boss->obj.pos.z, 0.0f, 0.0f, - boss->vel.z, RAND_FLOAT(0.2f) + 0.2f, 0); + this->obj.rot.x += 1.0f; + this->obj.rot.y += 0.3f; + this->obj.rot.z += 0.7f; + + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 70.0f, 1.0f, 7.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 30.0f, 1.0f, 3.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 3.0f, 0); + + this->fwork[0] = 0.0f; + this->fwork[3] = 0.0f; + + if ((gGameFrameCount % 2) == 0) { + Effect_Effect389_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), this->obj.pos.z, 0.0f, 0.0f, + this->vel.z, RAND_FLOAT(0.2f) + 0.2f, 0); } - func_effect_8007D0E0(boss->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), boss->obj.pos.z, + func_effect_8007D0E0(this->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), this->obj.pos.z, RAND_FLOAT(5.0f) + 5.0f); break; + case 32: - boss->fwork[6] = -3000.0f; - boss->fwork[8] = 0.05f; - Math_SmoothStepToF(&boss->fwork[7], 70.0f, 1.0f, 7.0f, 0); - boss->fwork[2] = 0.05f; - boss->fwork[5] = 0.05f; - Math_SmoothStepToF(&boss->fwork[1], 30.0f, 1.0f, 3.0f, 0); - Math_SmoothStepToF(&boss->fwork[4], 30.0f, 1.0f, 3.0f, 0); - boss->fwork[0] = 0.0f; - boss->fwork[3] = 0.0f; - Math_SmoothStepToF(&boss->fwork[9], 1.0f, 1.0f, 0.05f, 0); - boss->unk_04C++; - if (boss->unk_04C >= Animation_GetFrameCount(&D_ANDROSS_C017050)) { - boss->unk_04C = 0; + this->fwork[6] = -3000.0f; + this->fwork[8] = 0.05f; + + Math_SmoothStepToF(&this->fwork[7], 70.0f, 1.0f, 7.0f, 0); + + this->fwork[2] = 0.05f; + this->fwork[5] = 0.05f; + + Math_SmoothStepToF(&this->fwork[1], 30.0f, 1.0f, 3.0f, 0); + Math_SmoothStepToF(&this->fwork[4], 30.0f, 1.0f, 3.0f, 0); + + this->fwork[0] = 0.0f; + this->fwork[3] = 0.0f; + + Math_SmoothStepToF(&this->fwork[9], 1.0f, 1.0f, 0.05f, 0); + + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_ANDROSS_C017050)) { + this->animFrame = 0; } - limbCount = Animation_GetFrameData(&D_ANDROSS_C017050, boss->unk_04C, spD0); - Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, boss->fwork[9], 100.0f, 0.0f); - if (((gGameFrameCount % 2) == 0)) { - func_effect_8007C484(boss->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), boss->obj.pos.z, 0.0f, 0.0f, - boss->vel.z, RAND_FLOAT(0.2f) + 0.2f, 0); + + limbCount = Animation_GetFrameData(&D_ANDROSS_C017050, this->animFrame, spD0); + Math_SmoothStepToVec3fArray(spD0, D_i6_801A7F80, 1, limbCount, this->fwork[9], 100.0f, 0.0f); + + if ((gGameFrameCount % 2) == 0) { + Effect_Effect389_Spawn(this->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), this->obj.pos.z, 0.0f, 0.0f, + this->vel.z, RAND_FLOAT(0.2f) + 0.2f, 0); } if (gCsFrameCount > 50) { - func_effect_8007D0E0(boss->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), - boss->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), boss->obj.pos.z, + func_effect_8007D0E0(this->obj.pos.x + RAND_FLOAT_CENTERED(1000.0f), + this->obj.pos.y + RAND_FLOAT_CENTERED(1000.0f), this->obj.pos.z, RAND_FLOAT(3.0f) + 3.0f); } @@ -2683,120 +3004,125 @@ void Andross_Boss320_Update(Boss* boss) { switch (gCsFrameCount) { case 60: - boss->swork[17] = 2; - Andross_8018DA94(boss, &boss->vwork[19]); + this->swork[17] = 2; + Andross_8018DA94(this, &this->vwork[19]); break; case 70: - boss->swork[19] = 2; - Andross_8018DA94(boss, &boss->vwork[21]); + this->swork[19] = 2; + Andross_8018DA94(this, &this->vwork[21]); break; case 80: - boss->swork[14] = 2; - Andross_8018DA94(boss, &boss->vwork[16]); + this->swork[14] = 2; + Andross_8018DA94(this, &this->vwork[16]); break; case 90: - boss->swork[13] = 2; - Andross_8018DA94(boss, &boss->vwork[15]); + this->swork[13] = 2; + Andross_8018DA94(this, &this->vwork[15]); break; case 100: - Andross_8018DA94(boss, &boss->vwork[13]); + Andross_8018DA94(this, &this->vwork[13]); break; case 110: - Andross_8018DA94(boss, &boss->vwork[14]); + Andross_8018DA94(this, &this->vwork[14]); break; case 120: - boss->swork[20] = 2; - Andross_8018DA94(boss, &boss->vwork[22]); + this->swork[20] = 2; + Andross_8018DA94(this, &this->vwork[22]); break; case 130: - boss->swork[21] = 2; - Andross_8018DA94(boss, &boss->vwork[23]); + this->swork[21] = 2; + Andross_8018DA94(this, &this->vwork[23]); break; case 140: - boss->swork[22] = 2; - Andross_8018DA94(boss, &boss->vwork[24]); + this->swork[22] = 2; + Andross_8018DA94(this, &this->vwork[24]); break; case 150: - boss->swork[23] = 2; - Andross_8018DA94(boss, &boss->vwork[25]); + this->swork[23] = 2; + Andross_8018DA94(this, &this->vwork[25]); break; case 160: - boss->swork[16] = 1; - Andross_8018DA94(boss, &boss->vwork[18]); + this->swork[16] = 1; + Andross_8018DA94(this, &this->vwork[18]); break; case 170: - boss->swork[15] = 1; - Andross_8018DA94(boss, &boss->vwork[17]); + this->swork[15] = 1; + Andross_8018DA94(this, &this->vwork[17]); break; case 173: - Effect_SpawnTimedSfxAtPos(&boss->obj.pos, NA_SE_EN_EXPLOSION_L); - func_effect_8007B344(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 100.0f, 4); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_L); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 100.0f, 4); break; + case 180: boss1 = &gBosses[1]; Boss_Initialize(boss1); boss1->obj.status = OBJ_INIT; - boss1->obj.id = OBJ_BOSS_321; - boss1->obj.pos.x = boss->obj.pos.x; - boss1->obj.pos.y = boss->obj.pos.y; - boss1->obj.pos.z = boss->obj.pos.z; + boss1->obj.id = OBJ_BOSS_AND_BRAIN; + boss1->obj.pos.x = this->obj.pos.x; + boss1->obj.pos.y = this->obj.pos.y; + boss1->obj.pos.z = this->obj.pos.z; boss1->swork[1] = 100; boss1->state = 10; boss1->timer_050 = 180; boss1->scale = 5.0f; Object_SetInfo(&boss1->info, boss1->obj.id); - Object_Kill(&boss->obj, boss->sfxSource); + Object_Kill(&this->obj, this->sfxSource); gDrawBackdrop = 3; - Andross_80189098(boss); + Andross_80189098(this); Radio_PlayMessage(gMsg_ID_19330, RCID_ANDROSS_RED); break; } Math_SmoothStepToF(&gAndrossUnkAlpha, 0.0f, 1.0f, 0.3f, 0.0f); break; } - if (boss->swork[4] >= 0) { - boss->info.hitbox[13] = boss->vwork[0].z - boss->obj.pos.z; - boss->info.hitbox[15] = boss->vwork[0].y - boss->obj.pos.y; - boss->info.hitbox[17] = boss->vwork[0].x - boss->obj.pos.x; - if (boss->swork[7] != 0) { - boss->info.hitbox[14] = 280.0f; - boss->info.hitbox[16] = 200.0f; - boss->info.hitbox[18] = 200.0f; + + if (this->swork[4] >= 0) { + this->info.hitbox[13] = this->vwork[0].z - this->obj.pos.z; + this->info.hitbox[15] = this->vwork[0].y - this->obj.pos.y; + this->info.hitbox[17] = this->vwork[0].x - this->obj.pos.x; + if (this->swork[7] != 0) { + this->info.hitbox[14] = 280.0f; + this->info.hitbox[16] = 200.0f; + this->info.hitbox[18] = 200.0f; } else { - boss->info.hitbox[14] = 100.0f; - boss->info.hitbox[16] = 100.0f; - boss->info.hitbox[18] = 100.0f; + this->info.hitbox[14] = 100.0f; + this->info.hitbox[16] = 100.0f; + this->info.hitbox[18] = 100.0f; } } else { - boss->info.hitbox[16] = 0.0f; + this->info.hitbox[16] = 0.0f; } - if (boss->swork[5] >= 0) { - boss->info.hitbox[19] = boss->vwork[1].z - boss->obj.pos.z; - boss->info.hitbox[21] = boss->vwork[1].y - boss->obj.pos.y; - boss->info.hitbox[23] = boss->vwork[1].x - boss->obj.pos.x; - if (boss->swork[7] != 0) { - boss->info.hitbox[20] = 280.0f; - boss->info.hitbox[22] = 200.0f; - boss->info.hitbox[24] = 200.0f; + + if (this->swork[5] >= 0) { + this->info.hitbox[19] = this->vwork[1].z - this->obj.pos.z; + this->info.hitbox[21] = this->vwork[1].y - this->obj.pos.y; + this->info.hitbox[23] = this->vwork[1].x - this->obj.pos.x; + if (this->swork[7] != 0) { + this->info.hitbox[20] = 280.0f; + this->info.hitbox[22] = 200.0f; + this->info.hitbox[24] = 200.0f; } else { - boss->info.hitbox[20] = 100.0f; - boss->info.hitbox[22] = 100.0f; - boss->info.hitbox[24] = 100.0f; + this->info.hitbox[20] = 100.0f; + this->info.hitbox[22] = 100.0f; + this->info.hitbox[24] = 100.0f; } } else { - boss->info.hitbox[22] = 0.0f; + this->info.hitbox[22] = 0.0f; } - boss->info.hitbox[1] = boss->vwork[2].z - boss->obj.pos.z; - boss->info.hitbox[3] = boss->vwork[2].y - boss->obj.pos.y; - boss->info.hitbox[5] = boss->vwork[2].x - boss->obj.pos.x; - boss->info.hitbox[7] = boss->vwork[3].z - boss->obj.pos.z; - boss->info.hitbox[9] = boss->vwork[3].y - boss->obj.pos.y; - boss->info.hitbox[11] = boss->vwork[3].x - boss->obj.pos.x; - if ((initialstate == 17) && (boss->state != 17)) { - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_ANDROSS_BREATH); + + this->info.hitbox[1] = this->vwork[2].z - this->obj.pos.z; + this->info.hitbox[3] = this->vwork[2].y - this->obj.pos.y; + this->info.hitbox[5] = this->vwork[2].x - this->obj.pos.x; + this->info.hitbox[7] = this->vwork[3].z - this->obj.pos.z; + this->info.hitbox[9] = this->vwork[3].y - this->obj.pos.y; + this->info.hitbox[11] = this->vwork[3].x - this->obj.pos.x; + + if ((initialstate == 17) && (this->state != 17)) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_ANDROSS_BREATH); } - if ((initialstate == 7) && (boss->state != 7)) { - Audio_KillSfxBySourceAndId(boss->sfxSource, NA_SE_EN_ANDROSS_SPARK); + if ((initialstate == 7) && (this->state != 7)) { + Audio_KillSfxBySourceAndId(this->sfxSource, NA_SE_EN_ANDROSS_SPARK); } } @@ -2814,32 +3140,33 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Vec3f sp94; Vec3f sp88; f32 scale; - Boss* boss = (Boss*) data; + Boss* this = (Boss*) data; sp94 = D_i6_801A67F4; scale = 1.0f; + if ((limbIndex >= 13) && (limbIndex <= 50)) { - if (boss->state < 2) { + if (this->state < 2) { *dList = NULL; } else { RCP_SetupDL(&gMasterDisp, SETUPDL_29); gSPTexture(gMasterDisp++, 6600, 6600, 0, G_TX_RENDERTILE, G_ON); gSPSetGeometryMode(gMasterDisp++, G_TEXTURE_GEN); if (((limbIndex >= 23) && (limbIndex <= 32)) || (limbIndex == 50)) { - if (boss->swork[5] < 0) { + if (this->swork[5] < 0) { *dList = NULL; - } else if ((boss->swork[3] % 2) != 0) { + } else if ((this->swork[3] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_27); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - } else if (boss->swork[4] < 0) { + } else if (this->swork[4] < 0) { *dList = NULL; - } else if ((boss->swork[2] % 2) != 0) { + } else if ((this->swork[2] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_27); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } } - } else if ((boss->timer_05C % 2) == 0) { + } else if ((this->timer_05C % 2) == 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_29); } else { RCP_SetupDL(&gMasterDisp, SETUPDL_27); @@ -2848,109 +3175,129 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* switch (limbIndex) { case 59: - if (boss->swork[18] == 1) { + if (this->swork[18] == 1) { *dList = D_ANDROSS_C004860; } - if (boss->swork[18] == 2) { + if (this->swork[18] == 2) { *dList = NULL; } break; + case 3: - rot->z -= boss->vwork[4].x; - rot->y -= boss->vwork[4].y; - if ((boss->swork[0] % 2) != 0) { + rot->z -= this->vwork[4].x; + rot->y -= this->vwork[4].y; + + if ((this->swork[0] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_27); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (boss->swork[11] != 0) { + + if (this->swork[11] != 0) { *dList = D_ANDROSS_C0043D0; RCP_SetupDL(&gMasterDisp, SETUPDL_21); } - scale = boss->fwork[17]; + scale = this->fwork[17]; break; + case 4: - rot->z -= boss->vwork[5].x; - rot->y -= boss->vwork[5].y; - if ((boss->swork[1] % 2) != 0) { + rot->z -= this->vwork[5].x; + rot->y -= this->vwork[5].y; + + if ((this->swork[1] % 2) != 0) { RCP_SetupDL(&gMasterDisp, SETUPDL_27); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); } - if (boss->swork[12] != 0) { + + if (this->swork[12] != 0) { *dList = D_ANDROSS_C015740; RCP_SetupDL(&gMasterDisp, SETUPDL_21); } - scale = boss->fwork[17]; + scale = this->fwork[17]; break; + case 5: - if (boss->swork[17] == 1) { + if (this->swork[17] == 1) { *dList = D_ANDROSS_C002B20; } - if (boss->swork[17] == 2) { + if (this->swork[17] == 2) { *dList = NULL; } - scale = boss->fwork[17]; + scale = this->fwork[17]; break; + case 6: - if (boss->swork[19] == 1) { + if (this->swork[19] == 1) { *dList = D_ANDROSS_C002F00; } - if (boss->swork[19] == 2) { + if (this->swork[19] == 2) { *dList = NULL; } - scale = boss->fwork[17]; + scale = this->fwork[17]; break; + case 1: - if (boss->swork[14] != 0) { + if (this->swork[14] != 0) { *dList = NULL; } break; + case 2: - if (boss->swork[13] != 0) { + if (this->swork[13] != 0) { *dList = NULL; } break; + case 7: - if (boss->swork[20] != 0) { + if (this->swork[20] != 0) { *dList = NULL; } - scale = boss->fwork[18]; + scale = this->fwork[18]; break; + case 8: - if (boss->swork[21] != 0) { + if (this->swork[21] != 0) { *dList = NULL; } - scale = boss->fwork[18]; + scale = this->fwork[18]; break; + case 9: - if (boss->swork[23] != 0) { + if (this->swork[23] != 0) { *dList = NULL; } - scale = boss->fwork[18]; + scale = this->fwork[18]; break; + case 10: - if (boss->swork[22] != 0) { + if (this->swork[22] != 0) { *dList = NULL; } - scale = boss->fwork[18]; + scale = this->fwork[18]; break; + case 11: - if (boss->swork[16] != 0) { + if (this->swork[16] != 0) { *dList = NULL; } break; + case 12: - if (boss->swork[15] != 0) { + if (this->swork[15] != 0) { *dList = NULL; } break; + case 49: - pos->x -= boss->fwork[11]; - pos->y += boss->fwork[12]; - pos->z += boss->fwork[13]; + pos->x -= this->fwork[11]; + pos->y += this->fwork[12]; + pos->z += this->fwork[13]; + Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, rot->y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); + if (*dList != NULL) { Matrix_Push(&gGfxMatrix); Matrix_Push(&gCalcMatrix); @@ -2958,6 +3305,7 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, *dList); RCP_SetupDL(&gMasterDisp, SETUPDL_41); + switch (gGameFrameCount % 4U) { case 0: gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); @@ -2972,6 +3320,7 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); break; } + Matrix_Translate(gGfxMatrix, D_i6_801A67DC.x, D_i6_801A67DC.y, D_i6_801A67DC.z, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, D_i6_801A67F0 * M_DTOR, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, D_i6_801A67EC * M_DTOR, MTXF_APPLY); @@ -2982,14 +3331,18 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_Pop(&gCalcMatrix); } return true; + case 50: - pos->x -= boss->fwork[11]; - pos->y += boss->fwork[12]; - pos->z -= boss->fwork[13]; + pos->x -= this->fwork[11]; + pos->y += this->fwork[12]; + pos->z -= this->fwork[13]; + Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, rot->y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); + if (*dList != NULL) { Matrix_Push(&gGfxMatrix); Matrix_Push(&gCalcMatrix); @@ -2997,6 +3350,7 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, *dList); RCP_SetupDL(&gMasterDisp, SETUPDL_41); + switch (gGameFrameCount % 4U) { case 0: gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 0, 0, 255); @@ -3011,6 +3365,7 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); break; } + Matrix_Translate(gGfxMatrix, D_i6_801A67C4.x, D_i6_801A67C4.y, D_i6_801A67C4.z, MTXF_APPLY); Matrix_RotateZ(gGfxMatrix, D_i6_801A67D8 * M_DTOR, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, D_i6_801A67D4 * M_DTOR, MTXF_APPLY); @@ -3021,16 +3376,20 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* Matrix_Pop(&gCalcMatrix); } return true; + default: break; } Matrix_Translate(gCalcMatrix, pos->x, pos->y, pos->z, MTXF_APPLY); + Matrix_RotateZ(gCalcMatrix, rot->z * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, rot->y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gCalcMatrix, rot->x * M_DTOR, MTXF_APPLY); + Matrix_Push(&gCalcMatrix); Matrix_Scale(gCalcMatrix, scale, scale, scale, MTXF_APPLY); + if (*dList != NULL) { Matrix_MultVec3f(gCalcMatrix, &sp94, &sp88); Display_SetSecondLight(&sp88); @@ -3042,7 +3401,7 @@ bool Andross_801917F0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return true; } -void Andross_801924B4(s32 limbIndex, Vec3f* rot, void* data) { +void Andross_801924B4(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp94 = { 0.0f, 0.0f, 0.0f }; Vec3f sp88 = { 33.0f, 0.0f, 0.0f }; Vec3f sp7C = { 20.0f, 0.0f, 0.0f }; @@ -3053,101 +3412,104 @@ void Andross_801924B4(s32 limbIndex, Vec3f* rot, void* data) { Vec3f sp40 = { 10.0f, -2.0f, 2.0f }; Vec3f sp34 = { 10.0f, -2.0f, 2.0f }; Vec3f sp28 = { -80.0f, 0.0f, 0.0f }; - Boss* boss = (Boss*) data; + Boss* this = (Boss*) thisx; switch (limbIndex) { case 3: - Matrix_MultVec3f(gCalcMatrix, &sp7C, &boss->vwork[2]); + Matrix_MultVec3f(gCalcMatrix, &sp7C, &this->vwork[2]); break; case 4: - Matrix_MultVec3f(gCalcMatrix, &sp7C, &boss->vwork[3]); + Matrix_MultVec3f(gCalcMatrix, &sp7C, &this->vwork[3]); break; case 5: - Matrix_MultVec3f(gCalcMatrix, &sp4C, &boss->vwork[6]); - Matrix_MultVec3f(gCalcMatrix, &sp58, &boss->vwork[7]); + Matrix_MultVec3f(gCalcMatrix, &sp4C, &this->vwork[6]); + Matrix_MultVec3f(gCalcMatrix, &sp58, &this->vwork[7]); break; case 12: - Matrix_MultVec3f(gCalcMatrix, &sp34, &boss->vwork[9]); + Matrix_MultVec3f(gCalcMatrix, &sp34, &this->vwork[9]); break; case 11: - Matrix_MultVec3f(gCalcMatrix, &sp40, &boss->vwork[8]); + Matrix_MultVec3f(gCalcMatrix, &sp40, &this->vwork[8]); break; case 20: - Matrix_MultVec3f(gCalcMatrix, &sp70, &boss->vwork[0]); + Matrix_MultVec3f(gCalcMatrix, &sp70, &this->vwork[0]); break; case 28: - Matrix_MultVec3f(gCalcMatrix, &sp64, &boss->vwork[1]); + Matrix_MultVec3f(gCalcMatrix, &sp64, &this->vwork[1]); break; case 25: - Matrix_MultVec3f(gCalcMatrix, &sp88, &boss->vwork[10]); + Matrix_MultVec3f(gCalcMatrix, &sp88, &this->vwork[10]); break; } - if (boss->state >= 30) { + + if (this->state >= 30) { switch (limbIndex) { case 1: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[16]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[16]); return; case 2: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[15]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[15]); return; case 3: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[13]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[13]); return; case 4: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[14]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[14]); return; case 5: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[19]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[19]); return; case 6: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[21]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[21]); return; case 7: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[22]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[22]); return; case 8: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[23]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[23]); return; case 9: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[25]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[25]); return; case 10: - Matrix_MultVec3f(gCalcMatrix, &sp94, &boss->vwork[24]); + Matrix_MultVec3f(gCalcMatrix, &sp94, &this->vwork[24]); return; case 11: - Matrix_MultVec3f(gCalcMatrix, &sp28, &boss->vwork[18]); + Matrix_MultVec3f(gCalcMatrix, &sp28, &this->vwork[18]); return; case 12: - Matrix_MultVec3f(gCalcMatrix, &sp28, &boss->vwork[17]); + Matrix_MultVec3f(gCalcMatrix, &sp28, &this->vwork[17]); break; } } } -void Andross_Boss320_Draw(Boss* boss) { +void Andross_AndAndross_Draw(AndAndross* this) { + if (this->timer_058 == 0) { + if (1) {} //! FAKE - if (boss->timer_058 == 0) { - // FAKE - if (1) {} PRINTF("Enm->count %d\n"); - if (boss->state < 2) { + + if (this->state < 2) { Lights_SetOneLight(&gMasterDisp, gLight1x, gLight1y, gLight1z, D_i6_801A7F5C, D_i6_801A7F64, D_i6_801A7F6C, D_i6_801A7F74, D_i6_801A7F7C, D_i6_801A8430); } + Matrix_Scale(gCalcMatrix, 10.0f, 10.0f, 10.0f, MTXF_APPLY); - Animation_DrawSkeleton(2, D_ANDROSS_C01CC3C, D_i6_801A7F80, Andross_801917F0, Andross_801924B4, boss, + Animation_DrawSkeleton(2, D_ANDROSS_C01CC3C, D_i6_801A7F80, Andross_801917F0, Andross_801924B4, this, gCalcMatrix); Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); - if (boss->fwork[20] > 0.05f) { - Matrix_Translate(gGfxMatrix, boss->vwork[10].x, boss->vwork[10].y, boss->vwork[10].z + gPathProgress, + + if (this->fwork[20] > 0.05f) { + Matrix_Translate(gGfxMatrix, this->vwork[10].x, this->vwork[10].y, this->vwork[10].z + gPathProgress, MTXF_APPLY); - if (boss->fwork[21] > 0.05f) { + if (this->fwork[21] > 0.05f) { Matrix_Push(&gGfxMatrix); RCP_SetupDL(&gMasterDisp, SETUPDL_67); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 192); gDPSetEnvColor(gMasterDisp++, 255, 0, 128, 192); - Matrix_Scale(gGfxMatrix, boss->fwork[21] * 7.0f, boss->fwork[21] * 7.0f, boss->fwork[21] * 7.0f, + Matrix_Scale(gGfxMatrix, this->fwork[21] * 7.0f, this->fwork[21] * 7.0f, this->fwork[21] * 7.0f, MTXF_APPLY); if ((gGameFrameCount % 2) != 0) { Matrix_Scale(gGfxMatrix, 1.1f, 1.1f, 1.1f, MTXF_APPLY); @@ -3156,15 +3518,18 @@ void Andross_Boss320_Draw(Boss* boss) { gSPDisplayList(gMasterDisp++, D_1024AC0); Matrix_Pop(&gGfxMatrix); } - Matrix_Scale(gGfxMatrix, boss->fwork[20] * 10.0f, boss->fwork[20] * 10.0f, boss->fwork[20] * 10.0f, + + Matrix_Scale(gGfxMatrix, this->fwork[20] * 10.0f, this->fwork[20] * 10.0f, this->fwork[20] * 10.0f, MTXF_APPLY); - Matrix_RotateZ(gGfxMatrix, boss->fwork[19] * M_DTOR, MTXF_APPLY); + Matrix_RotateZ(gGfxMatrix, this->fwork[19] * M_DTOR, MTXF_APPLY); RCP_SetupDL(&gMasterDisp, SETUPDL_64); + if ((gGameFrameCount % 2) != 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 128); } else { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 30); } + Matrix_Push(&gGfxMatrix); Matrix_RotateZ(gGfxMatrix, 0.0f, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, 15.0f * M_DTOR, MTXF_APPLY); @@ -3195,78 +3560,77 @@ void Andross_Boss320_Draw(Boss* boss) { } } -void Andross_Actor285_Update(Actor* actor) { +void Andross_AndLaserEmitter_Update(AndLaserEmitter* this) { Actor* otherActor; s32 i; - switch (actor->state) { + switch (this->state) { case 0: - if (actor->obj.pos.x >= 0.0f) { - actor->state = 1; + if (this->obj.pos.x >= 0.0f) { + this->state = 1; } else { - actor->state = 2; + this->state = 2; } - actor->vwork[0].x = actor->obj.pos.x; - actor->vwork[0].y = actor->obj.pos.y - 300.0f; - actor->vwork[0].z = actor->obj.pos.z; - actor->health = 30; - actor->rot_0F4.z = actor->obj.rot.z; - AUDIO_PLAY_SFX(NA_SE_OB_SPARK_BEAM, actor->sfxSource, 0); + this->vwork[0].x = this->obj.pos.x; + this->vwork[0].y = this->obj.pos.y - 300.0f; + this->vwork[0].z = this->obj.pos.z; + this->health = 30; + this->rot_0F4.z = this->obj.rot.z; + AUDIO_PLAY_SFX(NA_SE_OB_SPARK_BEAM, this->sfxSource, 0); break; + case 1: otherActor = gActors; for (i = 0; i < ARRAY_COUNT(gActors); i++, otherActor++) { - if ((i != actor->index) && (otherActor->obj.status == OBJ_ACTIVE) && - (otherActor->obj.id == OBJ_ACTOR_285) && - (fabsf(otherActor->obj.pos.z - actor->obj.pos.z) < 200.0f)) { - actor->timer_0BC = 5; + if ((i != this->index) && (otherActor->obj.status == OBJ_ACTIVE) && + (otherActor->obj.id == OBJ_ACTOR_AND_LASER_EMITTER) && + (fabsf(otherActor->obj.pos.z - this->obj.pos.z) < 200.0f)) { + this->timer_0BC = 5; otherActor->timer_0BC = 5; - gTexturedLines[actor->index].mode = 50; - gTexturedLines[actor->index].xyScale = 1.0f; - gTexturedLines[actor->index].posAA.x = actor->obj.pos.x; - gTexturedLines[actor->index].posAA.y = actor->obj.pos.y; - gTexturedLines[actor->index].posAA.z = actor->obj.pos.z; - gTexturedLines[actor->index].posBB.x = otherActor->obj.pos.x; - gTexturedLines[actor->index].posBB.y = otherActor->obj.pos.y; - gTexturedLines[actor->index].posBB.z = otherActor->obj.pos.z; - gTexturedLines[actor->index].timer = 3; + gTexturedLines[this->index].mode = 50; + gTexturedLines[this->index].xyScale = 1.0f; + gTexturedLines[this->index].posAA.x = this->obj.pos.x; + gTexturedLines[this->index].posAA.y = this->obj.pos.y; + gTexturedLines[this->index].posAA.z = this->obj.pos.z; + gTexturedLines[this->index].posBB.x = otherActor->obj.pos.x; + gTexturedLines[this->index].posBB.y = otherActor->obj.pos.y; + gTexturedLines[this->index].posBB.z = otherActor->obj.pos.z; + gTexturedLines[this->index].timer = 3; break; } } /* fallthrough */ case 2: - actor->obj.rot.z = actor->rot_0F4.z + D_Andross_801A7F68; + this->obj.rot.z = this->rot_0F4.z + D_Andross_801A7F68; Matrix_RotateZ(gCalcMatrix, M_DTOR * D_Andross_801A7F68, MTXF_NEW); - Matrix_MultVec3fNoTranslate(gCalcMatrix, actor->vwork, &actor->obj.pos); - actor->obj.pos.y += 300.0f; + Matrix_MultVec3fNoTranslate(gCalcMatrix, this->vwork, &this->obj.pos); + this->obj.pos.y += 300.0f; break; } - if (actor->dmgType != DMG_NONE) { - actor->dmgType = DMG_NONE; - actor->health -= actor->damage; - if (actor->health <= 0) { - func_effect_8007D0E0(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 5.0f); + if (this->dmgType != DMG_NONE) { + this->dmgType = DMG_NONE; + this->health -= this->damage; + if (this->health <= 0) { + func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 5.0f); for (i = 0; i < 7; i++) { - func_effect_80079618(RAND_FLOAT_CENTERED(10.0f) + actor->obj.pos.x, - RAND_FLOAT_CENTERED(10.0f) + actor->obj.pos.y, actor->obj.pos.z, + func_effect_80079618(RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.x, + RAND_FLOAT_CENTERED(10.0f) + this->obj.pos.y, this->obj.pos.z, RAND_FLOAT(0.5f) + 0.5f); } - Effect_SpawnTimedSfxAtPos(&actor->obj.pos, NA_SE_EN_EXPLOSION_S); - Object_Kill(&actor->obj, actor->sfxSource); + Effect_SpawnTimedSfxAtPos(&this->obj.pos, NA_SE_EN_EXPLOSION_S); + Object_Kill(&this->obj, this->sfxSource); } } } -void Andross_Actor285_Draw(Actor* actor) { +void Andross_AndLaserEmitter_Draw(AndLaserEmitter* this) { gSPDisplayList(gMasterDisp++, D_VE2_6007E20); - if (actor->timer_0BC != 0) { - f32 scale; - u8 alpha; + if (this->timer_0BC != 0) { + f32 scale = 2.5f; + u8 alpha = 16; - scale = 2.5f; - alpha = 16; if ((gGameFrameCount % 2) != 0) { alpha = 64; scale *= 1.2f; @@ -3281,78 +3645,79 @@ void Andross_Actor285_Draw(Actor* actor) { } } -void Andross_Scenery132_Update(Scenery* scenery) { +void Andross_AndDoor_Update(AndDoor* this) { - switch (scenery->state) { + switch (this->state) { case 0: - if (fabsf(scenery->obj.pos.z - gPlayer[0].trueZpos) < 1800.0f) { - scenery->state = 1; - scenery->info.hitbox = SEGMENTED_TO_VIRTUAL(D_ANDROSS_C038AC4); + if (fabsf(this->obj.pos.z - gPlayer[0].trueZpos) < 1800.0f) { + this->state = 1; + this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_ANDROSS_C038AC4); } break; + case 1: - scenery->info.hitbox[7] = -130.0f - (scenery->unk_44 * 1.6f); - scenery->info.hitbox[17] = -130.0f - (scenery->unk_44 * 1.6f); - scenery->info.hitbox[27] = -130.0f - (scenery->unk_44 * 1.6f); - scenery->unk_44 += 2; - if (scenery->unk_44 >= Animation_GetFrameCount(&D_VE2_6014658)) { - scenery->unk_44 = Animation_GetFrameCount(&D_VE2_6014658) - 1; + this->info.hitbox[7] = -130.0f - (this->unk_44 * 1.6f); + this->info.hitbox[17] = -130.0f - (this->unk_44 * 1.6f); + this->info.hitbox[27] = -130.0f - (this->unk_44 * 1.6f); + this->unk_44 += 2; + if (this->unk_44 >= Animation_GetFrameCount(&D_VE2_6014658)) { + this->unk_44 = Animation_GetFrameCount(&D_VE2_6014658) - 1; } break; } - scenery->obj.rot.z = D_Andross_801A7F68; + this->obj.rot.z = D_Andross_801A7F68; } -bool Andross_801934EC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Andross_801934EC(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { if (limbIndex == 13) { *dList = NULL; } return false; } -void Andross_Scenery132_Draw(Scenery* scenery) { +void Andross_AndDoor_Draw(AndDoor* this) { Vec3f frameTable[20]; - Animation_GetFrameData(&D_VE2_6014658, scenery->unk_44, frameTable); + Animation_GetFrameData(&D_VE2_6014658, this->unk_44, frameTable); Animation_DrawSkeleton(1, D_VE2_6014844, frameTable, Andross_801934EC, NULL, NULL, &gIdentityMatrix); } -void Andross_Scenery131_Update(Scenery* scenery) { - scenery->obj.rot.z = D_Andross_801A7F68; - scenery->obj.pos.z += scenery->effectVel.z; - if (scenery->timer_4C == 1) { - Object_Kill(&scenery->obj, scenery->sfxSource); +void Andross_AndPassage_Update(AndPassage* this) { + this->obj.rot.z = D_Andross_801A7F68; + this->obj.pos.z += this->effectVel.z; + if (this->timer_4C == 1) { + Object_Kill(&this->obj, this->sfxSource); } } -bool Andross_801935B4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { +bool Andross_801935B4(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { if (limbIndex != 13) { *dList = NULL; } return false; } -void Andross_Scenery131_Draw(Scenery* scenery) { +void Andross_AndPassage_Draw(AndPassage* this) { Vec3f frameTable[20]; - Animation_GetFrameData(&D_VE2_6014658, scenery->unk_44, frameTable); + Animation_GetFrameData(&D_VE2_6014658, this->unk_44, frameTable); if (gLevelMode == LEVELMODE_ALL_RANGE) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); } Animation_DrawSkeleton(1, D_VE2_6014844, frameTable, Andross_801935B4, NULL, NULL, &gIdentityMatrix); } -void Andross_80193668(Scenery* scenery, f32 xPos, f32 yPos, f32 zPos, s32 arg4) { - Scenery_Initialize(scenery); - scenery->obj.status = OBJ_ACTIVE; - scenery->obj.id = OBJ_SCENERY_131; - scenery->obj.pos.x = xPos; - scenery->obj.pos.y = yPos; - scenery->obj.pos.z = zPos; - scenery->effectVel.z = -40.0f; - Object_SetInfo(&scenery->info, scenery->obj.id); - scenery->timer_4C = (arg4 * 50) + 100; - scenery->info.cullDistance = 100000.0f; +void Andross_AndPassage_Setup(AndPassage* this, f32 xPos, f32 yPos, f32 zPos, s32 arg4) { + Scenery_Initialize(this); + this->obj.status = OBJ_ACTIVE; + this->obj.id = OBJ_SCENERY_AND_PASSAGE; + this->obj.pos.x = xPos; + this->obj.pos.y = yPos; + this->obj.pos.z = zPos; + this->effectVel.z = -40.0f; + Object_SetInfo(&this->info, this->obj.id); + this->timer_4C = (arg4 * 50) + 100; + this->info.cullDistance = 100000.0f; } void Andross_80193710(void) { @@ -3402,7 +3767,7 @@ void Andross_80193710(void) { boss = &gBosses[0]; Boss_Initialize(boss); boss->obj.status = OBJ_INIT; - boss->obj.id = OBJ_BOSS_VE2; + boss->obj.id = OBJ_BOSS_VE2_BASE; Object_SetInfo(&boss->info, boss->obj.id); } @@ -3419,6 +3784,7 @@ void Andross_801939A0(s32 actorIndex) { actor->rot_0F4.x = 90.0f; actor->fwork[0] = 50.0f; actor->fwork[1] = 6.5f; + if (actorIndex == 10) { actor->iwork[14] = 1; } @@ -3427,6 +3793,7 @@ void Andross_801939A0(s32 actorIndex) { actor->unk_046 = 255; actor->animFrame = 1000; } + Object_SetInfo(&actor->info, actor->obj.id); AUDIO_PLAY_SFX(NA_SE_ARWING_ENGINE_FG, actor->sfxSource, 4); AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, actor->sfxSource, 0); @@ -3445,10 +3812,13 @@ void Andross_80193AE4(s32 actorIndex) { Actor_Initialize(actor); actor->obj.status = OBJ_ACTIVE; actor->obj.id = OBJ_ACTOR_CUTSCENE; + actor->obj.pos.x = D_i6_801A6878[actorIndex].x; actor->obj.pos.y = D_i6_801A6878[actorIndex].y; actor->obj.pos.z = D_i6_801A6878[actorIndex].z; + Object_SetInfo(&actor->info, actor->obj.id); + if (actorIndex == 0) { actor->state = 200; actor->animFrame = 1; @@ -3486,7 +3856,9 @@ void Andross_80193C4C(Player* player) { s32 temp_v0_2; Math_SmoothStepToF(D_ctx_80177A48, 1.0f, 1.0f, 0.01f, 0.0f); + player->wings.unk_04 = player->wings.unk_08 = player->wings.unk_0C = player->wings.unk_10 = 0.0f; + switch (player->csState) { case 0: gCsFrameCount = 0; @@ -3507,6 +3879,7 @@ void Andross_80193C4C(Player* player) { Math_SmoothStepToF(&player->vel.y, 0.0f, 1.0f, 3.0f, 0.0f); Math_SmoothStepToF(&player->cam.eye.x, player->pos.x, 0.1f, 15.0f, 0.0f); Math_SmoothStepToF(&player->cam.eye.y, player->pos.y + 30.0f, 0.1f, 15.0f, 0.0f); + if (player->csTimer == 0) { player->pos.y += SIN_DEG(player->rot.x) * 15.0f; Math_SmoothStepToF(&player->rot.x, 180.0f, 0.1f, 5.0f, 0.0f); @@ -3516,19 +3889,22 @@ void Andross_80193C4C(Player* player) { Math_SmoothStepToF(&player->rot.x, 0.0f, 0.1f, 10.0f, 0.0f); } player->cam.eye.z += player->vel.z * 0.5f; + switch (gCsFrameCount) { case 80: - func_effect_8007A568(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 40.0f); + Effect_Effect383_Spawn(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 40.0f); Effect_SpawnTimedSfxAtPos(&boss->obj.pos, NA_SE_EN_EXPLOSION_L); /* fallthrough */ case 85: case 90: - func_effect_8007B344(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 250.0f, 6); + Effect_Effect384_Spawn(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 250.0f, 6); break; + case 86: Object_Kill(&boss->obj, boss->sfxSource); gDrawBackdrop = 0; break; + case 111: player->csState = 2; AUDIO_PLAY_SFX(NA_SE_ARWING_BOOST, player->sfxSource, 0); @@ -3547,12 +3923,14 @@ void Andross_80193C4C(Player* player) { gCsCamAtZ = gBosses[0].obj.pos.z + gPathProgress; Math_SmoothStepToF(&player->camRoll, 0.0f, 0.1f, 3.0f, 0.0f); break; + case 2: player->unk_190 = D_ctx_80177A48[8]; sp90 = 0; sp68.x = RAND_FLOAT_CENTERED(150.0f); sp68.y = RAND_FLOAT_CENTERED(150.0f); sp68.z = 0.0f; + if (gCsFrameCount == 50) { AUDIO_PLAY_SFX(NA_SE_OB_ROUTE_EXPLOSION0, player->sfxSource, 0); Audio_SetEnvSfxReverb(0); @@ -3581,8 +3959,10 @@ void Andross_80193C4C(Player* player) { sp74.z = 0.0f; Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp74, &sp68); } + Math_SmoothStepToF(&D_ctx_80177A48[5], 3.0f, 1.0f, 0.05f, 0.0f); player->cam.eye.z += player->vel.z * D_ctx_80177A48[2]; + if (gCsFrameCount > 230) { player->camDist -= 7.0f; } @@ -3592,18 +3972,20 @@ void Andross_80193C4C(Player* player) { } for (i = 0; i < sp90; i++) { - func_effect_8007797C(player->pos.x + sp68.x, player->pos.y + sp68.y, - player->pos.z - (D_ctx_80177A48[3] + D_ctx_80177A48[4]), 0.0f, 0.0f, 50.0f, - RAND_FLOAT(2.5f) + 2.5f); + Effect_FireSmoke_Spawn2(player->pos.x + sp68.x, player->pos.y + sp68.y, + player->pos.z - (D_ctx_80177A48[3] + D_ctx_80177A48[4]), 0.0f, 0.0f, 50.0f, + RAND_FLOAT(2.5f) + 2.5f); } Math_SmoothStepToF(&player->cam.eye.x, D_ctx_80177A48[1] + player->pos.x, 0.1f, 15.0f, 0.0f); Math_SmoothStepToF(&player->cam.eye.y, player->pos.y + 30.0f, 0.1f, 15.0f, 0.0f); Math_SmoothStepToF(&player->rot.z, -180.0f, 0.02f, D_ctx_80177A48[6], 0.0f); Math_SmoothStepToF(&D_ctx_80177A48[6], 3.0f, 1.0f, 0.05f, 0.0f); + gCsCamAtX = player->pos.x; gCsCamAtY = player->pos.y; gCsCamAtZ = player->trueZpos + gPathProgress; + if (gCsFrameCount > 200) { player->contrailScale += 0.03f; if (player->contrailScale > 0.6f) { @@ -3622,15 +4004,18 @@ void Andross_80193C4C(Player* player) { } } break; + case 25: for (i = 0; i < 12; i++) { - Andross_80193668(&gScenery[i], player->pos.x, player->pos.y, - player->cam.eye.z - gPathProgress + (2195.0f * i), i); + Andross_AndPassage_Setup(&gScenery[i], player->pos.x, player->pos.y, + player->cam.eye.z - gPathProgress + (2195.0f * i), i); } break; + case 150: AUDIO_PLAY_SFX(NA_SE_WARP_HOLE, gDefaultSfxSource, 0); break; + case 340: Audio_KillSfxBySourceAndId(player->sfxSource, NA_SE_OB_ROUTE_EXPLOSION0); Audio_SetEnvSfxReverb(0); @@ -3652,10 +4037,12 @@ void Andross_80193C4C(Player* player) { player->draw = false; D_ctx_80177A48[0] = 1.0f; Play_ClearObjectData(); + gScenery360 = Memory_Allocate(200 * sizeof(Scenery360)); for (i = 0; i < 200; i++) { gScenery360[i].obj.status = OBJ_FREE; } + Andross_80193710(); D_ctx_8017782C = true; Play_InitEnvironment(); @@ -3667,6 +4054,7 @@ void Andross_80193C4C(Player* player) { break; } break; + case 3: if (player->csTimer == 0) { gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0; @@ -3688,9 +4076,9 @@ void Andross_80193C4C(Player* player) { } if (gCsFrameCount > 40) { for (i = 0; i < 3; i++) { - func_effect_8007797C(boss->obj.pos.x + RAND_FLOAT_CENTERED(150.0f), boss->obj.pos.y + 500.0f, - boss->obj.pos.z + RAND_FLOAT_CENTERED(150.0f), RAND_FLOAT_CENTERED(10.0f), - 60.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.5f) + 5.5f); + Effect_FireSmoke_Spawn2(boss->obj.pos.x + RAND_FLOAT_CENTERED(150.0f), boss->obj.pos.y + 500.0f, + boss->obj.pos.z + RAND_FLOAT_CENTERED(150.0f), RAND_FLOAT_CENTERED(10.0f), + 60.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.5f) + 5.5f); } Math_SmoothStepToF(&gCsCamAtY, gActors[10].obj.pos.y, 1.0f, D_ctx_80177A48[1], 0.0f); Math_SmoothStepToF(&D_ctx_80177A48[1], 1000.0f, 1.0f, 5.0f, 0.0f); @@ -3727,8 +4115,10 @@ void Andross_80193C4C(Player* player) { } } break; + case 4: player->camRoll += D_ctx_80177A48[3]; + if (gCsFrameCount > 190) { Math_SmoothStepToF(&D_ctx_80177A48[3], 0.3f, 0.05f, 0.02f, 0.0f); } @@ -3743,28 +4133,35 @@ void Andross_80193C4C(Player* player) { gLight1R = D_i6_801A7F40; gLight1G = D_i6_801A7F44; gLight1B = D_i6_801A7F48; + gAmbientR = D_i6_801A7F4C; gAmbientG = D_i6_801A7F50; gAmbientB = D_i6_801A7F54; + Math_SmoothStepToF(&D_ctx_80177A48[1], -5000.0f, 0.05f, 15.0f, 0.0f); + player->cam.eye.x = gActors[10].obj.pos.x + 50.0f; player->cam.eye.y = gActors[10].obj.pos.y + D_ctx_80177A48[1]; player->cam.eye.z = gActors[10].obj.pos.z; + gCsCamAtX = gActors[10].obj.pos.x; gCsCamAtY = gActors[10].obj.pos.y + 50.0f; gCsCamAtZ = gActors[10].obj.pos.z; + if (((gGameFrameCount % 4) == 0) && (gCsFrameCount < 215)) { - func_effect_8007797C(boss->obj.pos.x + RAND_FLOAT_CENTERED(350.0f), boss->obj.pos.y + 500.0f, - boss->obj.pos.z + RAND_FLOAT_CENTERED(350.0f), RAND_FLOAT_CENTERED(10.0f), 60.0f, - RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.5f) + 15.5f); + Effect_FireSmoke_Spawn2(boss->obj.pos.x + RAND_FLOAT_CENTERED(350.0f), boss->obj.pos.y + 500.0f, + boss->obj.pos.z + RAND_FLOAT_CENTERED(350.0f), RAND_FLOAT_CENTERED(10.0f), + 60.0f, RAND_FLOAT_CENTERED(10.0f), RAND_FLOAT(5.5f) + 15.5f); } sp80 = RAND_FLOAT(40.0f); for (i = 0; i < 36; i += 4) { sp8C = __sinf((i * 10.0f * M_DTOR) + sp80) * D_ctx_80177A48[2]; sp84 = __cosf((i * 10.0f * M_DTOR) + sp80) * D_ctx_80177A48[2]; - func_effect_8007797C(sp8C, 300.0f, sp84, 0.0f, 0.0f, 0.0f, RAND_FLOAT(5.5f) + 15.5f); + Effect_FireSmoke_Spawn2(sp8C, 300.0f, sp84, 0.0f, 0.0f, 0.0f, RAND_FLOAT(5.5f) + 15.5f); } + Math_SmoothStepToF(&D_ctx_80177A48[2], 10000.0f, 0.05f, 20.0f, 0.0f); + if (gCsFrameCount == 220) { Andross_80193AE4(0); if (gTeamShields[TEAM_ID_FALCO] > 0) { @@ -3812,10 +4209,12 @@ void Andross_80193C4C(Player* player) { gLevelClearScreenTimer = 100; } break; + case 5: if (player->csTimer == 1) { gFillScreenAlpha = gFillScreenAlphaTarget = 0; } + if (gVenomHardClear != 0) { if (gCsFrameCount >= 1000) { gCsCamAtX += D_ctx_80177A48[4] * 0.15f; @@ -3885,6 +4284,7 @@ void Andross_80193C4C(Player* player) { Math_SmoothStepToF(&player->cam.eye.y, gCsCamEyeY, D_ctx_80177A48[0], 50000.0f, 0); Math_SmoothStepToF(&player->cam.eye.z, gCsCamEyeZ, D_ctx_80177A48[0], 50000.0f, 0); } + if (gVenomHardClear != 0) { switch (gCsFrameCount) { case 400: @@ -3952,6 +4352,7 @@ void Andross_80193C4C(Player* player) { } } break; + case 100: gPlayerGlareAlphas[0] -= 4; if (gPlayerGlareAlphas[0] > 255) { @@ -3960,13 +4361,17 @@ void Andross_80193C4C(Player* player) { Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -((player->xRot_120 + player->rot.x + player->aerobaticPitch) * M_DTOR), MTXF_APPLY); + sp74.x = 0.0f; sp74.y = 0.0f; sp74.z = player->baseSpeed; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp74, &sp68); + player->vel.x = sp68.x; player->vel.z = sp68.z; player->vel.y = sp68.y; + if (player->csTimer == 0) { player->state_1C8 = PLAYERSTATE_1C8_ACTIVE; player->unk_014 = 0.2f; @@ -3975,6 +4380,7 @@ void Andross_80193C4C(Player* player) { gDrawBackdrop = 6; gProjectFar = 12800.0f; } + D_ctx_80177A48[0] = 1.0f; gCsCamAtX = (2.0f * SIN_DEG(gGameFrameCount * 40.0f)) + player->pos.x; gCsCamAtY = (2.0f * SIN_DEG(gGameFrameCount * 30.0f)) + player->pos.y; @@ -4006,65 +4412,75 @@ void Andross_80193C4C(Player* player) { Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[0], 50000.0f, 0); } -void Andross_80195E44(Actor* actor) { +void Andross_80195E44(ActorCutscene* this) { Vec3f sp44; Vec3f sp38; f32 sp34; sp34 = 0.0f; - switch (actor->state) { + switch (this->state) { case 0: - actor->rot_0F4.z += actor->fwork[1]; + this->rot_0F4.z += this->fwork[1]; if (gCsFrameCount > 250) { - Math_SmoothStepToF(&actor->fwork[1], 0.5f, 0.1f, 0.04f, 0.0f); + Math_SmoothStepToF(&this->fwork[1], 0.5f, 0.1f, 0.04f, 0.0f); } else { - Math_SmoothStepToF(&actor->fwork[1], -2.0f, 0.1f, 0.04f, 0.0f); + Math_SmoothStepToF(&this->fwork[1], -2.0f, 0.1f, 0.04f, 0.0f); } break; + case 1: - actor->rot_0F4.z += actor->fwork[1]; - Math_SmoothStepToF(&actor->fwork[1], -2.0f, 0.1f, 0.04f, 0.0f); + this->rot_0F4.z += this->fwork[1]; + Math_SmoothStepToF(&this->fwork[1], -2.0f, 0.1f, 0.04f, 0.0f); if (gCsFrameCount == 55) { - actor->state++; + this->state++; } break; + case 2: - Math_SmoothStepToF(&actor->rot_0F4.x, 180.0f, 0.1f, 1.0f, 0.0f); - Math_SmoothStepToF(&actor->rot_0F4.y, 200.0f, 0.1f, 1.0f, 0.0f); - actor->unk_046 -= 5; - if (actor->unk_046 < 0) { - actor->unk_046 = 0; - Object_Kill(&actor->obj, actor->sfxSource); + Math_SmoothStepToF(&this->rot_0F4.x, 180.0f, 0.1f, 1.0f, 0.0f); + Math_SmoothStepToF(&this->rot_0F4.y, 200.0f, 0.1f, 1.0f, 0.0f); + this->unk_046 -= 5; + if (this->unk_046 < 0) { + this->unk_046 = 0; + Object_Kill(&this->obj, this->sfxSource); } break; + case 101: - Math_SmoothStepToF(&actor->rot_0F4.z, 0.0f, 0.03f, 0.5f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.x, 0.0f, 0.03f, 5.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.y, 15000.0f, 0.03f, 5.0f, 0.0f); - Math_SmoothStepToF(&actor->obj.pos.z, 0.0f, 0.03f, 5.0f, 0.0f); + Math_SmoothStepToF(&this->rot_0F4.z, 0.0f, 0.03f, 0.5f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.x, 0.0f, 0.03f, 5.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.y, 15000.0f, 0.03f, 5.0f, 0.0f); + Math_SmoothStepToF(&this->obj.pos.z, 0.0f, 0.03f, 5.0f, 0.0f); break; + case 100: - actor->fwork[7] += 3.0f; - actor->rot_0F4.z = SIN_DEG(actor->fwork[7]) * 1.5f; - actor->fwork[8] += 2.0f; - sp34 = SIN_DEG(actor->fwork[8]) * 0.5f; + this->fwork[7] += 3.0f; + this->rot_0F4.z = SIN_DEG(this->fwork[7]) * 1.5f; + this->fwork[8] += 2.0f; + sp34 = SIN_DEG(this->fwork[8]) * 0.5f; break; + case 200: break; } - Matrix_RotateY(gCalcMatrix, (actor->rot_0F4.y + 180.0f) * M_DTOR, 0U); - Matrix_RotateX(gCalcMatrix, -(actor->rot_0F4.x * M_DTOR), 1U); + + Matrix_RotateY(gCalcMatrix, (this->rot_0F4.y + 180.0f) * M_DTOR, MTXF_NEW); + Matrix_RotateX(gCalcMatrix, -(this->rot_0F4.x * M_DTOR), MTXF_APPLY); + sp44.x = 0.0f; sp44.y = 0.0f; - sp44.z = actor->fwork[0]; + sp44.z = this->fwork[0]; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38); - actor->vel.x = sp38.x; - actor->vel.y = sp38.y + sp34; - actor->vel.z = sp38.z; - actor->obj.rot.x = -actor->rot_0F4.x; - actor->obj.rot.y = actor->rot_0F4.y + 180.0f; - actor->obj.rot.z = -actor->rot_0F4.z; + + this->vel.x = sp38.x; + this->vel.y = sp38.y + sp34; + this->vel.z = sp38.z; + + this->obj.rot.x = -this->rot_0F4.x; + this->obj.rot.y = this->rot_0F4.y + 180.0f; + this->obj.rot.z = -this->rot_0F4.z; } void Andross_801961AC(void) { @@ -4073,7 +4489,7 @@ void Andross_801961AC(void) { Boss_Initialize(boss); boss->obj.status = OBJ_ACTIVE; boss->state = 21; - boss->obj.id = OBJ_BOSS_321; + boss->obj.id = OBJ_BOSS_AND_BRAIN; Object_SetInfo(&boss->info, boss->obj.id); gCsFrameCount = 599; } diff --git a/src/overlays/ovl_i6/fox_sy.c b/src/overlays/ovl_i6/fox_sy.c index f87aa39a..a6b96a4a 100644 --- a/src/overlays/ovl_i6/fox_sy.c +++ b/src/overlays/ovl_i6/fox_sy.c @@ -7,25 +7,25 @@ #include "global.h" #include "assets/ast_sector_y.h" -typedef void (*BossFuncs)(Boss*); +typedef void (*BossFuncs)(SyShogun*); -void SectorY_80198244(Boss*); -void SectorY_80198ABC(Boss*); -void SectorY_80199D64(Boss*); -void SectorY_8019AA08(Boss*); -void SectorY_8019AEC0(Boss*); -void SectorY_8019A434(Boss*); -void SectorY_8019A640(Boss*); -void SectorY_8019A82C(Boss*); -bool SectorY_8019B528(Boss*); -bool SectorY_8019B5CC(Boss*); -void SectorY_8019B6E8(Boss*); -void SectorY_8019BBBC(Boss*); -void SectorY_8019BC14(Boss*); -void SectorY_8019C194(Boss*, f32, f32); -void SectorY_801A0510(Actor*, s32); -void SectorY_SetupDebris(Actor*, f32, f32, f32, f32, f32, f32, s32); -void SectorY_SpawnDebris(f32, f32, f32, f32, f32, f32, s32); +void SectorY_80198244(SyShogun*); +void SectorY_80198ABC(SyShogun*); +void SectorY_80199D64(SyShogun*); +void SectorY_8019AA08(SyShogun*); +void SectorY_8019AEC0(SyShogun*); +void SectorY_8019A434(SyShogun*); +void SectorY_8019A640(SyShogun*); +void SectorY_8019A82C(SyShogun*); +bool SectorY_8019B528(SyShogun*); +bool SectorY_8019B5CC(SyShogun*); +void SectorY_8019B6E8(SyShogun*); +void SectorY_8019BBBC(SyShogun*); +void SectorY_8019BC14(SyShogun*); +void SectorY_8019C194(SyShogun*, f32, f32); +void SectorY_801A0510(ActorCutscene*, s32); +void SectorY_ActorDebris_Setup(Actor*, f32, f32, f32, f32, f32, f32, s32); +void SectorY_ActorDebris_Spawn(f32, f32, f32, f32, f32, f32, s32); f32 D_i6_801A8440[3]; @@ -61,10 +61,11 @@ void SectorY_Effect354_Draw(Effect354* this) { RCP_SetupDL(&gMasterDisp, SETUPDL_64); } -void SectorY_Scenery156_Draw(Scenery* scenery) { +void SectorY_Scenery156_Draw(SceneryUnk156* this) { + /* Unimplemented */ } -void SectorY_Boss314_Init(BossSY* this) { +void SectorY_SyShogun_Init(SyShogun* this) { this->fwork[9] = 0.0f; this->swork[33] = 5500; this->timer_050 = 10; @@ -118,7 +119,7 @@ void SectorY_Boss314_Init(BossSY* this) { } } -void SectorY_80197F18(Boss* this) { +void SectorY_80197F18(SyShogun* this) { this->swork[20] = 0; this->swork[21] = 3; this->fwork[9] = 0.0f; @@ -128,7 +129,7 @@ void SectorY_80197F18(Boss* this) { } } -void SectorY_80197F84(Boss* this) { +void SectorY_80197F84(SyShogun* this) { f32 yaw; Math_SmoothStepToF(&this->obj.pos.y, 0.0f, 0.5f, 15.0f, 0.1f); @@ -174,10 +175,10 @@ void SectorY_80197F84(Boss* this) { } } -void SectorY_80198238(Boss* this) { +void SectorY_80198238(SyShogun* this) { } -void SectorY_80198244(Boss* this) { +void SectorY_80198244(SyShogun* this) { f32 speed; this->swork[20] = 3; @@ -201,7 +202,7 @@ void SectorY_80198244(Boss* this) { AUDIO_PLAY_SFX(NA_SE_EN_MS_DASH, this->sfxSource, 4); } -void SectorY_801983E4(Boss* this) { +void SectorY_801983E4(SyShogun* this) { f32 yAngle; f32 xSpeed; f32 zSpeed; @@ -310,7 +311,7 @@ void SectorY_801983E4(Boss* this) { } } -void SectorY_80198ABC(Boss* this) { +void SectorY_80198ABC(SyShogun* this) { f32 yAngle = Math_RadToDeg(Math_Atan2F(-this->obj.pos.x, -300.0f - this->obj.pos.z)) - this->rot_078.y; if (yAngle < 0.0f) { @@ -363,7 +364,7 @@ void SectorY_80198ABC(Boss* this) { D_ctx_80177A10[8] %= 4U; } -void SectorY_80198CE4(Boss* this) { +void SectorY_80198CE4(SyShogun* this) { f32 yAngle; SectorY_8019B6E8(this); @@ -408,7 +409,7 @@ void SectorY_80198CE4(Boss* this) { } } -void SectorY_80198F5C(Boss* this) { +void SectorY_80198F5C(SyShogun* this) { Vec3f vec; Vec3f sp48; f32 xDisplacement; @@ -416,8 +417,8 @@ void SectorY_80198F5C(Boss* this) { s32 i; this->timer_05C = 20; - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, this->vel.z, 0.1f, - 10); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, this->vel.z, + 0.1f, 10); this->health -= this->damage; if (this->health < 0) { @@ -427,7 +428,7 @@ void SectorY_80198F5C(Boss* this) { this->timer_058 = 20; if (this->health <= 0) { - this->unk_04C = 0; + this->animFrame = 0; this->swork[36] = 0; this->swork[21] = 9; this->info.hitbox = SEGMENTED_TO_VIRTUAL(gNoHitbox); @@ -512,7 +513,7 @@ void SectorY_80198F5C(Boss* this) { } } -void SectorY_80199438(Boss* this) { +void SectorY_80199438(SyShogun* this) { s32 i; s32 j; Vec3f vec; @@ -565,15 +566,15 @@ void SectorY_80199438(Boss* this) { D_ctx_80177850 = 15; this->swork[36]++; - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 8.0f, 10); - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f, 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 8.0f, 10); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f, 5); for (i = 10; i < 24; i++) { if (i != 15) { - SectorY_SpawnDebris(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, - RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT_CENTERED(50.0f) + this->vel.z, i); + SectorY_ActorDebris_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, + RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT_CENTERED(50.0f) + this->vel.z, i); } } } @@ -586,8 +587,8 @@ void SectorY_80199438(Boss* this) { } if (((gGameFrameCount % 4) == 0) && (this->swork[36] == 0)) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 0.1f, 5); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.1f, 5); } if ((gCsFrameCount == 120) && (this->swork[36] == 0) && (this->index == 0)) { @@ -602,8 +603,8 @@ void SectorY_80199438(Boss* this) { } Audio_KillSfxBySource(this->sfxSource); - gShowBossHealth = 0; - func_effect_8007A568(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 40.0f); + gShowBossHealth = false; + Effect_Effect383_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 40.0f); func_effect_8007D0E0(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 30.0f); func_enmy_80062B60(this->obj.pos.x, this->obj.pos.z, 0, 120.0f); gCameraShake = 25; @@ -611,8 +612,9 @@ void SectorY_80199438(Boss* this) { for (i = 10; i < 24; i++) { if (i != 15) { - SectorY_SpawnDebris(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f) + this->vel.z, i); + SectorY_ActorDebris_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, + RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT_CENTERED(50.0f) + this->vel.z, i); } } this->timer_058 = 100; @@ -644,9 +646,9 @@ void SectorY_80199438(Boss* this) { for (j = ARRAY_COUNT(gActors) - 1; j >= 0; j--) { if (gActors[j].obj.status == OBJ_FREE) { - SectorY_SetupDebris(&gActors[j], this->fwork[28], this->fwork[29], this->fwork[30], - RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT_CENTERED(50.0f) + this->vel.z, 15); + SectorY_ActorDebris_Setup(&gActors[j], this->fwork[28], this->fwork[29], this->fwork[30], + RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT_CENTERED(50.0f) + this->vel.z, 15); break; } } @@ -673,7 +675,7 @@ void SectorY_80199438(Boss* this) { } } -void SectorY_80199D64(Boss* this) { +void SectorY_80199D64(SyShogun* this) { if (this->swork[34] >= 2) { this->swork[20] = 6; this->swork[21] = 1; @@ -684,7 +686,7 @@ void SectorY_80199D64(Boss* this) { } } -void SectorY_80199DAC(Boss* this) { +void SectorY_80199DAC(SyShogun* this) { f32 sp34; f32 zSpeed; f32 xSpeed; @@ -722,7 +724,7 @@ void SectorY_80199DAC(Boss* this) { (ABS(this->obj.pos.z + 300.0f) <= 300.0f)) { Math_SmoothStepToF(&this->fwork[43], 3.0f, 0.1f, 0.1f, 0.1f); this->swork[21] = 6; - this->unk_04C = 27; + this->animFrame = 27; this->fwork[12] = 320.0f; if (this->timer_056 == 0) { this->timer_056 = 51; @@ -774,7 +776,7 @@ void SectorY_80199DAC(Boss* this) { } } -void SectorY_8019A434(Boss* this) { +void SectorY_8019A434(SyShogun* this) { this->swork[20] = 7; this->swork[21] = 5; this->timer_056 = (s32) (RAND_FLOAT(130.0f) + 60.0f); @@ -785,7 +787,7 @@ void SectorY_8019A434(Boss* this) { AUDIO_PLAY_SFX(NA_SE_EN_MS_LAND, this->sfxSource, 4); } -void SectorY_8019A520(Boss* this) { +void SectorY_8019A520(SyShogun* this) { SectorY_8019B6E8(this); if (this->timer_052 == 0) { @@ -803,12 +805,12 @@ void SectorY_8019A520(Boss* this) { this->fwork[0] = 1.0f; } - if ((this->unk_04C == 0) || (this->unk_04C == 27)) { + if ((this->animFrame == 0) || (this->animFrame == 27)) { AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK, this->sfxSource, 4); } } -void SectorY_8019A640(Boss* this) { +void SectorY_8019A640(SyShogun* this) { this->swork[20] = 8; this->swork[21] = 0; this->vel.x = 0.0f; @@ -817,7 +819,7 @@ void SectorY_8019A640(Boss* this) { this->timer_056 = 80; } -void SectorY_8019A66C(Boss* this) { +void SectorY_8019A66C(SyShogun* this) { SectorY_8019B6E8(this); if (this->timer_052 == 0) { @@ -849,7 +851,7 @@ void SectorY_8019A66C(Boss* this) { } } -void SectorY_8019A82C(Boss* this) { +void SectorY_8019A82C(SyShogun* this) { this->swork[20] = 9; this->fwork[9] = 0.0f; this->timer_050 = RAND_INT(150.0f) + 340; @@ -857,7 +859,7 @@ void SectorY_8019A82C(Boss* this) { AllRange_PlayMessage(gMsg_ID_14340, RCID_BOSS_SECTORY); } -void SectorY_8019A898(Boss* this) { +void SectorY_8019A898(SyShogun* this) { f32 yAngle1; f32 yAngle2; @@ -874,11 +876,11 @@ void SectorY_8019A898(Boss* this) { this->swork[21] = 6; - if (((yAngle2 >= 30.0f) && (yAngle2 <= 330.0f)) || ((this->unk_04C != 0)) && (this->unk_04C != 27)) { + if (((yAngle2 >= 30.0f) && (yAngle2 <= 330.0f)) || ((this->animFrame != 0)) && (this->animFrame != 27)) { this->swork[21] = 5; Math_SmoothStepToAngle(&this->rot_078.y, yAngle1, 0.1f, 2.0f, 0.1f); this->fwork[0] = 1.0f; - if ((this->unk_04C == 0) || (this->unk_04C == 27)) { + if ((this->animFrame == 0) || (this->animFrame == 27)) { AUDIO_PLAY_SFX(NA_SE_EN_HEAVY_WALK, this->sfxSource, 4); } } else { @@ -890,7 +892,7 @@ void SectorY_8019A898(Boss* this) { } } -void SectorY_8019AA08(Boss* this) { +void SectorY_8019AA08(SyShogun* this) { if (SectorY_8019B5CC(this)) { return; } @@ -914,11 +916,11 @@ void SectorY_8019AA08(Boss* this) { } this->swork[20] = 10; - this->unk_04C = 0; + this->animFrame = 0; this->fwork[34] = 2.8f; } -void SectorY_8019AAF0(Boss* this) { +void SectorY_8019AAF0(SyShogun* this) { f32 var_fv1; f32 xAngle; f32 yAngle; @@ -934,13 +936,13 @@ void SectorY_8019AAF0(Boss* this) { var_fv1 += 200.0f; } - if ((this->swork[31] >= this->unk_04C) && (fabsf(this->obj.pos.z - this->fwork[20]) < (var_fv1 + 1000.0f)) && + if ((this->swork[31] >= this->animFrame) && (fabsf(this->obj.pos.z - this->fwork[20]) < (var_fv1 + 1000.0f)) && (fabsf(this->obj.pos.x - this->fwork[18]) < var_fv1)) { - this->unk_04C++; + this->animFrame++; } - if (this->unk_04C >= this->swork[32] - 29) { - if (this->unk_04C == this->swork[32] - 29) { + if (this->animFrame >= this->swork[32] - 29) { + if (this->animFrame == this->swork[32] - 29) { if (this->swork[31] == 11) { AUDIO_PLAY_SFX(NA_SE_EN_MS_PUNCH, this->sfxSource, 4); } else { @@ -948,7 +950,7 @@ void SectorY_8019AAF0(Boss* this) { } } - if (this->unk_04C >= (this->swork[32] - 5)) { + if (this->animFrame >= (this->swork[32] - 5)) { SectorY_80198244(this); } } else { @@ -989,12 +991,12 @@ void SectorY_8019AAF0(Boss* this) { if (this->swork[20] == 10) { this->fwork[0] = 0.25f; } - if ((this->swork[20] == 10) && (this->unk_04C >= 12)) { + if ((this->swork[20] == 10) && (this->animFrame >= 12)) { this->fwork[0] = 1.0f; } } -void SectorY_8019AEC0(Boss* this) { +void SectorY_8019AEC0(SyShogun* this) { this->swork[20] = 11; this->swork[21] = 8; this->vel.x = 0.0f; @@ -1003,7 +1005,7 @@ void SectorY_8019AEC0(Boss* this) { this->unk_044 = 0; } -void SectorY_8019AEEC(Boss* this) { +void SectorY_8019AEEC(SyShogun* this) { if ((this->obj.pos.y != 365.0f) && (this->swork[21] != 1)) { if (this->unk_04A != 0) { if (this->unk_04A == 1) { @@ -1063,8 +1065,8 @@ void SectorY_8019AEEC(Boss* this) { Math_SmoothStepToF(&this->vel.z, 80.0f, 0.1f, 2.0f, 0.5f); Math_SmoothStepToF(&gActors[59].vel.z, 80.0f, 0.1f, 2.0f, 0.5f); if ((gGameFrameCount % 2) == 0) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y - 150.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, - 0.1f, 5); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y - 150.0f, this->obj.pos.z, 0.0f, 0.0f, 0.0f, + 0.1f, 5); } } } @@ -1102,7 +1104,7 @@ void SectorY_8019AEEC(Boss* this) { } } -bool SectorY_8019B528(Boss* this) { +bool SectorY_8019B528(SyShogun* this) { if (this->timer_050 != 0) { return false; } @@ -1117,7 +1119,7 @@ bool SectorY_8019B528(Boss* this) { return false; } -bool SectorY_8019B5CC(Boss* this) { +bool SectorY_8019B5CC(SyShogun* this) { f32 pad; Vec3f pos; @@ -1140,7 +1142,7 @@ bool SectorY_8019B5CC(Boss* this) { return false; } -void SectorY_8019B6E8(Boss* this) { +void SectorY_8019B6E8(SyShogun* this) { f32 var4; f32 var3; f32 var2; @@ -1199,7 +1201,7 @@ void SectorY_8019B6E8(Boss* this) { } } -void SectorY_8019BBBC(Boss* this) { +void SectorY_8019BBBC(SyShogun* this) { this->fwork[18] = gPlayer[0].pos.x; this->fwork[19] = gPlayer[0].pos.y; this->fwork[20] = gPlayer[0].pos.z; @@ -1208,7 +1210,7 @@ void SectorY_8019BBBC(Boss* this) { this->fwork[26] = gPlayer[0].vel.z; } -void SectorY_8019BC14(Boss* this) { +void SectorY_8019BC14(SyShogun* this) { f32 sp4C; f32 sp48; f32 sp44; @@ -1288,7 +1290,7 @@ void SectorY_8019BC14(Boss* this) { } } -void SectorY_8019C194(Boss* this, f32 zSpeed, f32 xSpeed) { +void SectorY_8019C194(SyShogun* this, f32 zSpeed, f32 xSpeed) { f32 sp2C; f32 sp28; @@ -1390,7 +1392,7 @@ static BossFuncs D_i6_801A6910[] = { SectorY_80199DAC, SectorY_8019A520, SectorY_8019A66C, SectorY_8019A898, SectorY_8019AAF0, SectorY_8019AEEC, }; -void SectorY_Boss_Update(BossSY* this) { +void SectorY_SyShogun_Update(SyShogun* this) { s32 i; f32 sp1E8; f32 sp1E4; @@ -1447,71 +1449,71 @@ void SectorY_Boss_Update(BossSY* this) { } if ((this->swork[29] != 0) && !(this->swork[29] & gGameFrameCount)) { - func_effect_8007C120(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 0.1f, 5); + Effect_Effect390_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 0.1f, 5); } switch (this->swork[21]) { case 0: - this->unk_04C = Animation_GetFrameCount(&D_SY_602B778) - 1; - sp1D0 = Animation_GetFrameData(&D_SY_602B778, this->unk_04C, frameTable); + this->animFrame = Animation_GetFrameCount(&D_SY_602B778) - 1; + sp1D0 = Animation_GetFrameData(&D_SY_602B778, this->animFrame, frameTable); break; case 1: - this->unk_04C = Animation_GetFrameCount(&D_SY_60265B4) - 1; - sp1D0 = Animation_GetFrameData(&D_SY_60265B4, this->unk_04C, frameTable); + this->animFrame = Animation_GetFrameCount(&D_SY_60265B4) - 1; + sp1D0 = Animation_GetFrameData(&D_SY_60265B4, this->animFrame, frameTable); break; case 2: - this->unk_04C = Animation_GetFrameCount(&D_SY_6029B48) - 1; - sp1D0 = Animation_GetFrameData(&D_SY_6029B48, this->unk_04C, frameTable); + this->animFrame = Animation_GetFrameCount(&D_SY_6029B48) - 1; + sp1D0 = Animation_GetFrameData(&D_SY_6029B48, this->animFrame, frameTable); break; case 3: - this->unk_04C = Animation_GetFrameCount(&D_SY_602B8DC) - 1; - sp1D0 = Animation_GetFrameData(&D_SY_602B8DC, this->unk_04C, frameTable); + this->animFrame = Animation_GetFrameCount(&D_SY_602B8DC) - 1; + sp1D0 = Animation_GetFrameData(&D_SY_602B8DC, this->animFrame, frameTable); break; case 4: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SY_6003348)) { - this->unk_04C = Animation_GetFrameCount(&D_SY_6003348) - 1; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SY_6003348)) { + this->animFrame = Animation_GetFrameCount(&D_SY_6003348) - 1; } - sp1D0 = Animation_GetFrameData(&D_SY_6003348, this->unk_04C, frameTable); + sp1D0 = Animation_GetFrameData(&D_SY_6003348, this->animFrame, frameTable); break; case 5: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SY_602738C)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SY_602738C)) { + this->animFrame = 0; } - sp1D0 = Animation_GetFrameData(&D_SY_602738C, this->unk_04C, frameTable); + sp1D0 = Animation_GetFrameData(&D_SY_602738C, this->animFrame, frameTable); break; case 6: - sp1D0 = Animation_GetFrameData(&D_SY_602738C, this->unk_04C, frameTable); + sp1D0 = Animation_GetFrameData(&D_SY_602738C, this->animFrame, frameTable); break; case 7: - if (this->unk_04C < (Animation_GetFrameCount(&D_SY_602645C) - 1)) { - this->unk_04C++; + if (this->animFrame < (Animation_GetFrameCount(&D_SY_602645C) - 1)) { + this->animFrame++; } - sp1D0 = Animation_GetFrameData(&D_SY_602645C, this->unk_04C, frameTable); + sp1D0 = Animation_GetFrameData(&D_SY_602645C, this->animFrame, frameTable); break; case 8: - if (this->unk_04C < (Animation_GetFrameCount(&D_SY_60258A0) - 1)) { - this->unk_04C++; + if (this->animFrame < (Animation_GetFrameCount(&D_SY_60258A0) - 1)) { + this->animFrame++; } - sp1D0 = Animation_GetFrameData(&D_SY_60258A0, this->unk_04C, frameTable); + sp1D0 = Animation_GetFrameData(&D_SY_60258A0, this->animFrame, frameTable); break; case 9: - this->unk_04C++; - if (this->unk_04C >= Animation_GetFrameCount(&D_SY_60034C4)) { - this->unk_04C = 0; + this->animFrame++; + if (this->animFrame >= Animation_GetFrameCount(&D_SY_60034C4)) { + this->animFrame = 0; } - sp1D0 = Animation_GetFrameData(&D_SY_60034C4, this->unk_04C, frameTable); + sp1D0 = Animation_GetFrameData(&D_SY_60034C4, this->animFrame, frameTable); break; } @@ -1554,10 +1556,13 @@ void SectorY_Boss_Update(BossSY* this) { Math_SmoothStepToAngle(&this->fwork[5], sp1E8, 0.2f, 4.0f, 0.1f); Matrix_RotateX(gCalcMatrix, -this->fwork[5] * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -this->fwork[6] * M_DTOR, MTXF_APPLY); + src.x = this->fwork[18] - this->obj.pos.x; src.y = (this->fwork[19] - this->obj.pos.y) + 20.0f; src.z = this->fwork[20] - this->obj.pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + sp1E0 = Math_RadToDeg(Math_Atan2F(dest.x, dest.z)); sp1DC = Math_RadToDeg(-Math_Atan2F(dest.y, sqrtf(SQ(dest.x) + SQ(dest.z)))); @@ -1576,10 +1581,13 @@ void SectorY_Boss_Update(BossSY* this) { Math_SmoothStepToAngle(&this->fwork[8], sp1E0, 0.4f, 8.0f, 0.1f); Math_SmoothStepToAngle(&this->fwork[7], sp1DC, 0.4f, 8.0f, 0.1f); + src.x = (this->fwork[18] - this->obj.pos.x) + (COS_DEG(this->obj.rot.y) * 100.0f); src.y = (this->fwork[19] - this->obj.pos.y) - 80.0f; src.z = this->fwork[20] - this->obj.pos.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + sp1D8 = Math_RadToDeg(Math_Atan2F(dest.x, dest.z)); sp1D4 = Math_RadToDeg(-Math_Atan2F(dest.y, sqrtf(SQ(dest.x) + SQ(dest.z)))); @@ -1598,12 +1606,16 @@ void SectorY_Boss_Update(BossSY* this) { Math_SmoothStepToAngle(&this->fwork[15], sp1D8, 0.2f, 4.0f, 0.1f); Math_SmoothStepToAngle(&this->fwork[14], sp1D4, 0.2f, 4.0f, 0.1f); + Matrix_RotateX(gCalcMatrix, -this->fwork[14] * M_DTOR, MTXF_APPLY); Matrix_RotateY(gCalcMatrix, -this->fwork[15] * M_DTOR, MTXF_APPLY); + src.x = this->fwork[18] - this->obj.pos.x; src.y = (this->fwork[19] - this->obj.pos.y) + (COS_DEG(this->obj.rot.z) * 40.0f); src.z = (this->fwork[20] - this->obj.pos.z) - (COS_DEG(this->obj.rot.y) * 60.0f); + Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest); + sp1E4 = Math_RadToDeg(Math_Atan2F(dest.x, dest.z)); sp1E8 = Math_RadToDeg(-Math_Atan2F(dest.y, sqrtf(SQ(dest.x) + SQ(dest.z)))); @@ -1679,7 +1691,7 @@ void SectorY_Boss_Update(BossSY* this) { Radio_PlayMessage(gMsg_ID_2225, RCID_SLIPPY); } if ((gBossFrameCount == 620) && (this->swork[34] == 0)) { - gShowBossHealth = 1; + gShowBossHealth = true; } if ((gBossFrameCount >= 350) || (this->swork[34] != 0)) { if (this->swork[34] != 0) { @@ -1718,8 +1730,8 @@ void SectorY_Boss_Update(BossSY* this) { } } -bool SectorY_8019DC4C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Boss* boss = (Boss*) data; +bool SectorY_8019DC4C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + SyShogun* boss = (SyShogun*) thisx; Vec3f sp10 = { 0.0f, 0.0f, 0.0f }; if ((boss->timer_05C % 2) == 0) { @@ -1763,15 +1775,15 @@ bool SectorY_8019DC4C(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* return false; } -bool SectorY_Boss_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Boss* boss = (Boss*) data; +bool SectorY_SyShogun_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + SyShogun* this = (SyShogun*) thisx; Vec3f sp38 = { 0.0f, 0.0f, 0.0f }; - if (boss->index != 0) { - return SectorY_8019DC4C(limbIndex, dList, pos, rot, boss); + if (this->index != 0) { + return SectorY_8019DC4C(limbIndex, dList, pos, rot, this); } - if ((boss->timer_05C % 2) != 0) { + if ((this->timer_05C % 2) != 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 32, 32, 255, 255); } else { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); @@ -1779,21 +1791,21 @@ bool SectorY_Boss_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f switch (limbIndex) { case 2: - rot->z -= boss->fwork[4]; - rot->z += boss->fwork[16]; - rot->y -= boss->fwork[17]; + rot->z -= this->fwork[4]; + rot->z += this->fwork[16]; + rot->y -= this->fwork[17]; break; case 3: - rot->z -= boss->fwork[4]; - rot->z += boss->fwork[14]; - rot->x -= boss->fwork[15]; + rot->z -= this->fwork[4]; + rot->z += this->fwork[14]; + rot->x -= this->fwork[15]; break; case 4: - if (boss->swork[25] == 0) { + if (this->swork[25] == 0) { *dList = D_SY_6013600; - if ((boss->swork[24] % 2) != 0) { + if ((this->swork[24] % 2) != 0) { gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 255, 0, 255); } } else { @@ -1802,20 +1814,20 @@ bool SectorY_Boss_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f break; case 17: - rot->x += boss->fwork[8]; - rot->y -= boss->fwork[7]; + rot->x += this->fwork[8]; + rot->y -= this->fwork[7]; *dList = D_SY_6014BD0; break; case 18: - rot->x += boss->fwork[6]; - rot->y -= boss->fwork[5]; + rot->x += this->fwork[6]; + rot->y -= this->fwork[5]; break; } return false; } -void SectorY_Boss_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { +void SectorY_SyShogun_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp7C = { 40.0f, -30.0f, 0.0f }; Vec3f sp70 = { -40.0f, -30.0f, 0.0f }; Vec3f sp64 = { 0.0f, 0.0f, 0.0f }; @@ -1824,57 +1836,57 @@ void SectorY_Boss_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { Vec3f sp40 = { 0.0f, 0.0f, 66.0f }; Vec3f sp34 = { 0.0f, 30.0f, -60.0f }; Vec3f sp28; - Boss* boss = (Boss*) data; + SyShogun* this = (SyShogun*) thisx; switch (limbIndex) { case 0: - if (boss->index != 0) { + if (this->index != 0) { Matrix_MultVec3f(gCalcMatrix, &sp58, &sp28); } else { Matrix_MultVec3f(gCalcMatrix, &sp34, &sp28); } - boss->fwork[31] = sp28.x; - boss->fwork[32] = sp28.y; - boss->fwork[33] = sp28.z; + this->fwork[31] = sp28.x; + this->fwork[32] = sp28.y; + this->fwork[33] = sp28.z; break; case 1: Matrix_Push(&gCalcMatrix); Matrix_MultVec3f(gCalcMatrix, &sp70, &sp28); - boss->fwork[21] = sp28.x; - boss->fwork[22] = sp28.y; - boss->fwork[23] = sp28.z; + this->fwork[21] = sp28.x; + this->fwork[22] = sp28.y; + this->fwork[23] = sp28.z; Matrix_Pop(&gCalcMatrix); Matrix_MultVec3f(gCalcMatrix, &sp7C, &sp28); - boss->fwork[1] = sp28.x; - boss->fwork[2] = sp28.y; - boss->fwork[3] = sp28.z; + this->fwork[1] = sp28.x; + this->fwork[2] = sp28.y; + this->fwork[3] = sp28.z; break; case 3: - if (boss->index == 0) { + if (this->index == 0) { Matrix_MultVec3f(gCalcMatrix, &sp4C, &sp28); - boss->fwork[35] = sp28.x; - boss->fwork[36] = sp28.y; - boss->fwork[37] = sp28.z; + this->fwork[35] = sp28.x; + this->fwork[36] = sp28.y; + this->fwork[37] = sp28.z; } break; case 4: - if (boss->index == 0) { + if (this->index == 0) { Matrix_MultVec3f(gCalcMatrix, &sp64, &sp28); - boss->fwork[28] = sp28.x; - boss->fwork[29] = sp28.y; - boss->fwork[30] = sp28.z; + this->fwork[28] = sp28.x; + this->fwork[29] = sp28.y; + this->fwork[30] = sp28.z; } break; case 6: - if (boss->index == 0) { + if (this->index == 0) { Matrix_MultVec3f(gCalcMatrix, &sp40, &sp28); - boss->fwork[38] = sp28.x; - boss->fwork[39] = sp28.y; - boss->fwork[40] = sp28.z; + this->fwork[38] = sp28.x; + this->fwork[39] = sp28.y; + this->fwork[40] = sp28.z; } break; @@ -1886,7 +1898,7 @@ void SectorY_Boss_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { static f32 D_i6_801A69AC[20] = { 0.3f, 0.7f, 1.3f, 0.7f, 0.3f, 0.0f, 10.0f, 20.0f, 300.0f, 100.0f, 200.0f, 100.0f, 60.0f, -260.0f, 80.0f, 100.0f, 80.0f, 262.0f, 285.0f, 252.0f }; -void SectorY_Boss_Draw(Boss* this) { +void SectorY_SyShogun_Draw(SyShogun* this) { f32 sp9C; f32 sp98; f32 sp94; @@ -1901,8 +1913,8 @@ void SectorY_Boss_Draw(Boss* this) { } if ((this->health > 0) || (this->swork[36] == 0)) { - Animation_DrawSkeleton(2, D_SY_602D140, this->vwork, SectorY_Boss_OverrideLimbDraw, SectorY_Boss_PostLimbDraw, - this, gCalcMatrix); + Animation_DrawSkeleton(2, D_SY_602D140, this->vwork, SectorY_SyShogun_OverrideLimbDraw, + SectorY_SyShogun_PostLimbDraw, this, gCalcMatrix); if (this->timer_054 != 0) { sp9C = D_i6_801A69AC[this->timer_054]; RCP_SetupDL_49(); @@ -2065,7 +2077,7 @@ void SectorY_LevelComplete(Player* player) { s32 pad[2]; Vec3f sp60; Vec3f sp54; - Boss* boss = &gBosses[0]; + SyShogun* boss = &gBosses[0]; f32 temp_ft1; switch (player->csState) { @@ -2395,7 +2407,7 @@ void SectorY_LevelComplete(Player* player) { player->rockAngle = SIN_DEG(player->rockPhase); } -void SectorY_8019FF00(Actor* this) { +void SectorY_8019FF00(ActorCutscene* this) { Vec3f sp4C; Vec3f sp40; f32 x; @@ -2777,9 +2789,9 @@ void SectorY_801A0AC0(Player* player) { spA4.y = RAND_FLOAT_CENTERED(500.0f) + -500.0f; spA4.z = RAND_FLOAT_CENTERED(5000.0f) + 170.0f; Matrix_MultVec3f(gCalcMatrix, &spA4, &sp98); - func_effect_8007C120(gActors[8].obj.pos.x + sp98.x, gActors[8].obj.pos.y + sp98.y, - gActors[8].obj.pos.z + sp98.z, gActors[8].vel.x, gActors[8].vel.y, - gActors[8].vel.z, 0.8f, 5); + Effect_Effect390_Spawn(gActors[8].obj.pos.x + sp98.x, gActors[8].obj.pos.y + sp98.y, + gActors[8].obj.pos.z + sp98.z, gActors[8].vel.x, gActors[8].vel.y, + gActors[8].vel.z, 0.8f, 5); func_effect_8007D2C8(gActors[8].obj.pos.x - 2000.0f + RAND_FLOAT_CENTERED(500.0f), gActors[8].obj.pos.y - 500.0f + RAND_FLOAT_CENTERED(1000.0f), gActors[8].obj.pos.z + RAND_FLOAT_CENTERED(3000.0f), 8); @@ -2846,9 +2858,9 @@ void SectorY_801A0AC0(Player* player) { break; case 145: - func_effect_8007BFFC(gActors[11].obj.pos.x, gActors[11].obj.pos.y, gActors[11].obj.pos.z, - gActors[11].vel.x, gActors[11].vel.y, gActors[11].vel.z, 8, 10); - func_effect_8007B344(gActors[11].obj.pos.x, gActors[11].obj.pos.y, gActors[11].obj.pos.z, 8, 5); + Effect386_Spawn1(gActors[11].obj.pos.x, gActors[11].obj.pos.y, gActors[11].obj.pos.z, + gActors[11].vel.x, gActors[11].vel.y, gActors[11].vel.z, 8, 10); + Effect_Effect384_Spawn(gActors[11].obj.pos.x, gActors[11].obj.pos.y, gActors[11].obj.pos.z, 8, 5); AUDIO_PLAY_SFX(NA_SE_EN_MS_EXPLOSION_S, gActors[11].sfxSource, 4); break; @@ -2862,9 +2874,9 @@ void SectorY_801A0AC0(Player* player) { case 150: Object_Kill(&gActors[11].obj, gActors[11].sfxSource); for (i = 10; i < 24; i++) { - SectorY_SpawnDebris(gActors[11].obj.pos.x, gActors[11].obj.pos.y, gActors[11].obj.pos.z, - RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT_CENTERED(50.0f), i); + SectorY_ActorDebris_Spawn(gActors[11].obj.pos.x, gActors[11].obj.pos.y, gActors[11].obj.pos.z, + RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), + RAND_FLOAT_CENTERED(50.0f), i); } break; @@ -3435,7 +3447,8 @@ void SectorY_801A0AC0(Player* player) { player->trueZpos = player->pos.z + player->camDist; } -void SectorY_SetupDebris(ActorDebris* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, s32 state) { +void SectorY_ActorDebris_Setup(ActorDebris* this, f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, + s32 state) { Actor_Initialize(this); this->obj.status = OBJ_INIT; this->obj.id = OBJ_ACTOR_DEBRIS; @@ -3452,18 +3465,18 @@ void SectorY_SetupDebris(ActorDebris* this, f32 xPos, f32 yPos, f32 zPos, f32 xV Object_SetInfo(&this->info, this->obj.id); } -void SectorY_SpawnDebris(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, s32 state) { +void SectorY_ActorDebris_Spawn(f32 xPos, f32 yPos, f32 zPos, f32 xVel, f32 yVel, f32 zVel, s32 state) { s32 i; for (i = ARRAY_COUNT(gActors) - 1; i >= 0; i--) { if (gActors[i].obj.status == OBJ_FREE) { - SectorY_SetupDebris(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel, state); + SectorY_ActorDebris_Setup(&gActors[i], xPos, yPos, zPos, xVel, yVel, zVel, state); break; } } } -void SectorY_Actor204_Update(Actor204* this) { +void SectorY_SyRobot_Update(SyRobot* this) { f32 sp1E4; f32 sp1E0; s32 i; @@ -3655,9 +3668,9 @@ void SectorY_Actor204_Update(Actor204* this) { } if (this->timer_0BE == 5U) { - func_effect_8007BFFC(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, - this->vel.z, 8.0f, 10); - func_effect_8007B344(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f, 5); + Effect386_Spawn1(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, this->vel.x, this->vel.y, + this->vel.z, 8.0f, 10); + Effect_Effect384_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, 8.0f, 5); AUDIO_PLAY_SFX(NA_SE_EN_MS_EXPLOSION_S, this->sfxSource, 4); } @@ -3665,8 +3678,9 @@ void SectorY_Actor204_Update(Actor204* this) { Object_Kill(&this->obj, this->sfxSource); Actor_Despawn(this); for (i = 10; i < 24; i++) { - SectorY_SpawnDebris(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, RAND_FLOAT_CENTERED(50.0f), - RAND_FLOAT_CENTERED(50.0f), this->vel.z + RAND_FLOAT_CENTERED(50.0f), i); + SectorY_ActorDebris_Spawn(this->obj.pos.x, this->obj.pos.y, this->obj.pos.z, + RAND_FLOAT_CENTERED(50.0f), RAND_FLOAT_CENTERED(50.0f), + this->vel.z + RAND_FLOAT_CENTERED(50.0f), i); } } break; @@ -3739,7 +3753,7 @@ void SectorY_Actor204_Update(Actor204* this) { Math_SmoothStepToF(&this->fwork[27], 0.0f, 1.0f, 0.05f, 0.0f); } - this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_SY_603405C); + this->info.hitbox = SEGMENTED_TO_VIRTUAL(aSyRobotHitbox); if (this->unk_046 == 1) { this->info.hitbox = SEGMENTED_TO_VIRTUAL(D_SY_603421C); } @@ -3769,8 +3783,8 @@ void SectorY_Actor204_Update(Actor204* this) { } else { AUDIO_PLAY_SFX(NA_SE_EN_DAMAGE_S, this->sfxSource, 4); this->timer_0C6 = 15; - func_effect_8007C120(this->hitPos.x, this->hitPos.y, this->hitPos.z, this->vel.x, this->vel.y, this->vel.z, - 0.1f, 10); + Effect_Effect390_Spawn(this->hitPos.x, this->hitPos.y, this->hitPos.z, this->vel.x, this->vel.y, + this->vel.z, 0.1f, 10); this->health -= this->damage; if (this->health <= 0) { @@ -3788,8 +3802,8 @@ static s32 D_i6_801A6B28[3] = { 255, 150, 150 }; static s32 D_i6_801A6B34[3] = { 150, 255, 150 }; static s32 D_i6_801A6B40[6] = { 150, 150, 255 }; -bool SectorY_Actor204_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - Actor* actor = (Actor*) data; +bool SectorY_SyRobot_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + SyRobot* actor = (SyRobot*) thisx; if (limbIndex == 4) { if ((actor->iwork[18] % 2) == 0) { @@ -3814,7 +3828,7 @@ bool SectorY_Actor204_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, V if (limbIndex == 17) { rot->x += actor->fwork[28]; rot->y -= actor->fwork[29]; - if (actor->eventType == 48) { + if (actor->eventType == EVID_48) { *dList = D_SY_6014BD0; } } @@ -3825,10 +3839,10 @@ bool SectorY_Actor204_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, V return false; } -void SectorY_Actor204_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* data) { +void SectorY_SyRobot_PostLimbDraw(s32 limbIndex, Vec3f* rot, void* thisx) { Vec3f sp2C = { 40.0f, -30.0f, 0.0f }; Vec3f sp20; - Actor* actor = (Actor*) data; + SyRobot* actor = (SyRobot*) thisx; if (limbIndex == 1) { Matrix_MultVec3f(gCalcMatrix, &sp2C, &sp20); @@ -3842,12 +3856,12 @@ static f32 D_i6_801A6B64[5] = { 0.3f, 0.7f, 1.3f, 0.7f, 0.3f, }; -void SectorY_Actor204_Draw(Actor204* this) { +void SectorY_SyRobot_Draw(SyRobot* this) { f32 scale; RCP_SetupDL_30(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - Animation_DrawSkeleton(2, D_SY_602D140, this->vwork, SectorY_Actor204_OverrideLimbDraw, - SectorY_Actor204_PostLimbDraw, this, gCalcMatrix); + Animation_DrawSkeleton(2, D_SY_602D140, this->vwork, SectorY_SyRobot_OverrideLimbDraw, SectorY_SyRobot_PostLimbDraw, + this, gCalcMatrix); if (this->timer_0C4 != 0) { scale = D_i6_801A6B64[this->timer_0C4]; @@ -3864,7 +3878,7 @@ void SectorY_Actor204_Draw(Actor204* this) { } } -void SectorY_Scenery109_Update(Scenery* scenery) { +void SectorY_SyShip3Destroyed_Update(SyShip3Destroyed* scenery) { Vec3f src; Vec3f dest; @@ -3881,30 +3895,30 @@ void SectorY_Scenery109_Update(Scenery* scenery) { src.y = RAND_FLOAT_CENTERED(900.0f) + -150.0f; src.z = 90.0f - RAND_FLOAT(50.0f); Matrix_MultVec3f(gCalcMatrix, &src, &dest); - func_effect_8007C120(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, - scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); + Effect_Effect390_Spawn(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, + scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); src.x = RAND_FLOAT_CENTERED(100.0f) + -500.0f; src.y = RAND_FLOAT_CENTERED(900.0f); src.z = 80.0f - RAND_FLOAT(50.0f); Matrix_MultVec3f(gCalcMatrix, &src, &dest); - func_effect_8007C120(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, - scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); + Effect_Effect390_Spawn(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, + scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); src.x = RAND_FLOAT_CENTERED(100.0f) + 500.0f; src.y = RAND_FLOAT_CENTERED(900.0f) + -50.0f; src.z = 1900.0f - RAND_FLOAT(50.0f); Matrix_MultVec3f(gCalcMatrix, &src, &dest); - func_effect_8007C120(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, - scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); + Effect_Effect390_Spawn(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, + scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); src.x = RAND_FLOAT_CENTERED(100.0f) + -1000.0f; src.y = RAND_FLOAT_CENTERED(900.0f) + -250.0f; src.z = 1100.0f - RAND_FLOAT(50.0f); Matrix_MultVec3f(gCalcMatrix, &src, &dest); - func_effect_8007C120(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, - scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); + Effect_Effect390_Spawn(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, + scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); } } -void SectorY_Scenery112_Update(Scenery* scenery) { +void SectorY_SyShip4Destroyed_Update(SyShip2Destroyed* scenery) { Vec3f src; Vec3f dest; @@ -3921,13 +3935,13 @@ void SectorY_Scenery112_Update(Scenery* scenery) { src.y = RAND_FLOAT_CENTERED(300.0f) + -100.0f; src.z = RAND_FLOAT_CENTERED(5000.0f) + 500.0f; Matrix_MultVec3f(gCalcMatrix, &src, &dest); - func_effect_8007C120(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, - scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.3f, 5); + Effect_Effect390_Spawn(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, + scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.3f, 5); src.x = RAND_FLOAT_CENTERED(100.0f) + -600.0f; src.y = RAND_FLOAT_CENTERED(250.0f) + 300.0f; src.z = RAND_FLOAT_CENTERED(1500.0f) + -1650.0f; Matrix_MultVec3f(gCalcMatrix, &src, &dest); - func_effect_8007C120(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, - scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); + Effect_Effect390_Spawn(scenery->obj.pos.x + dest.x, scenery->obj.pos.y + dest.y, scenery->obj.pos.z + dest.z, + scenery->effectVel.x, scenery->effectVel.y, scenery->effectVel.z, 0.2f, 5); } } diff --git a/src/overlays/ovl_i6/fox_turret.c b/src/overlays/ovl_i6/fox_turret.c index e06c6d4d..c0b2086a 100644 --- a/src/overlays/ovl_i6/fox_turret.c +++ b/src/overlays/ovl_i6/fox_turret.c @@ -118,6 +118,7 @@ void Turret_Shoot(Player* player) { gTexturedLines[i].posBB.z = gActors[i].obj.pos.z; } } + if (gControllerHold[player->num].button & R_TRIG) { player->turretLockOnCount++; if (player->turretLockOnCount > ARRAY_COUNT(gActors)) { @@ -260,11 +261,13 @@ void Turret_Draw(Player* player) { Matrix_Translate(gGfxMatrix, 0.0f, -100.0f, 0.0f, MTXF_APPLY); Matrix_RotateY(gGfxMatrix, player->rot.y * M_DTOR, MTXF_APPLY); Matrix_RotateX(gGfxMatrix, -player->rot.x * M_DTOR, MTXF_APPLY); + if (player->turretState < 2) { Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -5000.0f + (player->turretRecoil * 25), MTXF_APPLY); } else { Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -5000.0f, MTXF_APPLY); } + Matrix_Scale(gGfxMatrix, 12.0f, 12.0f, 1.0f, MTXF_APPLY); Matrix_SetGfxMtx(&gMasterDisp); Matrix_Pop(&gGfxMatrix); diff --git a/src/overlays/ovl_i6/fox_ve2.c b/src/overlays/ovl_i6/fox_ve2.c index 70d1f6a0..cbd97cc9 100644 --- a/src/overlays/ovl_i6/fox_ve2.c +++ b/src/overlays/ovl_i6/fox_ve2.c @@ -7,27 +7,27 @@ #include "global.h" #include "assets/ast_venom_2.h" -void Venom2_Boss_Update(BossVE2* boss) { - Math_SmoothStepToF(&boss->fwork[0], boss->fwork[1], 0.5f, 5.0f, 0.0f); +void Venom2_Ve2Base_Update(Ve2Base* this) { + Math_SmoothStepToF(&this->fwork[0], this->fwork[1], 0.5f, 5.0f, 0.0f); } -bool Venom2_Boss_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* data) { - BossVE2* boss = (BossVE2*) data; +bool Venom2_Ve2Base_OverrideLimbDraw(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thisx) { + Ve2Base* this = (Ve2Base*) thisx; if ((limbIndex == 1) || (limbIndex == 2)) { - pos->x -= boss->fwork[0]; + pos->x -= this->fwork[0]; } return false; } -void Venom2_Boss_Draw(BossVE2* boss) { - Animation_GetFrameData(&D_VE2_6014904, 0, boss->vwork); - Animation_DrawSkeleton(3, D_VE2_60149D0, boss->vwork, Venom2_Boss_OverrideLimbDraw, NULL, boss, gCalcMatrix); +void Venom2_Ve2Base_Draw(Ve2Base* this) { + Animation_GetFrameData(&D_VE2_6014904, 0, this->vwork); + Animation_DrawSkeleton(3, D_VE2_60149D0, this->vwork, Venom2_Ve2Base_OverrideLimbDraw, NULL, this, gCalcMatrix); } -void Venom2_UpdateStarWolfEvents(ActorAllRange* actor) { - ActorAllRange_UpdateStarWolfEvents(actor); +void Venom2_UpdateStarWolfEvents(ActorAllRange* this) { + ActorAllRange_UpdateStarWolfEvents(this); } static Vec3f sTeamInitPos[6] = { @@ -63,13 +63,17 @@ void Venom2_UpdateEvents(ActorAllRange* this) { } else { gAllRangeSpawnEvent = 320; gStarWolfMsgTimer = 1200; + this->state = 1; + player->pos.x = 0.0f; player->pos.z = 16000.0f; player->pos.y = 4350.0f; player->rot.x = -20.0f; player->yRot_114 = 0.0f; + this->timer_0BC = 210; + for (team = &gActors[AI360_FALCO], i = AI360_FALCO; i <= AI360_PEPPY; i++, team++) { team->obj.pos.x = sTeamInitPos[i - 1].x; team->obj.pos.y = sTeamInitPos[i - 1].y + 750.f; @@ -178,7 +182,7 @@ void Venom2_UpdateEvents(ActorAllRange* this) { void Venom2_LoadLevelObjects(void) { Actor* actor; - BossVE2* boss; + Boss* boss; Scenery360* scenery360; s32 i; @@ -224,7 +228,7 @@ void Venom2_LoadLevelObjects(void) { boss = &gBosses[0]; Boss_Initialize(boss); boss->obj.status = OBJ_INIT; - boss->obj.id = OBJ_BOSS_VE2; + boss->obj.id = OBJ_BOSS_VE2_BASE; Object_SetInfo(&boss->info, boss->obj.id); } @@ -476,12 +480,17 @@ void Venom2_LevelComplete(Player* player) { gCsCamAtX = player->pos.x; gCsCamAtY = player->pos.y; gCsCamAtZ = player->trueZpos; + Matrix_RotateY(gCalcMatrix, (player->yRot_114 + player->rot.y + 180.0f) * M_DTOR, MTXF_NEW); Matrix_RotateX(gCalcMatrix, -((player->xRot_120 + player->rot.x + player->aerobaticPitch) * M_DTOR), MTXF_APPLY); + sp64.x = 0.0f; sp64.y = 0.0f; + sp64.z = player->baseSpeed + player->boostSpeed; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp64, &sp58); + player->vel.x = sp58.x; player->vel.z = sp58.z; player->vel.y = sp58.y; @@ -490,14 +499,18 @@ void Venom2_LevelComplete(Player* player) { player->pos.z += player->vel.z; player->trueZpos = player->pos.z; player->bankAngle = player->rot.z + player->zRotBank + player->zRotBarrelRoll; + Math_SmoothStepToF(&player->zRotBarrelRoll, 0.0f, 0.1f, 15.0f, 0.0f); Math_SmoothStepToAngle(&player->aerobaticPitch, 0.0f, 0.1f, 5.0f, 0.0f); + Math_SmoothStepToF(&player->cam.eye.x, gCsCamEyeX, D_ctx_80177A48[0], 100.0f, 0); Math_SmoothStepToF(&player->cam.eye.y, gCsCamEyeY, D_ctx_80177A48[0], 100.0f, 0); Math_SmoothStepToF(&player->cam.eye.z, gCsCamEyeZ, D_ctx_80177A48[0], 100.0f, 0); + Math_SmoothStepToF(&player->cam.at.x, gCsCamAtX, D_ctx_80177A48[1], 100.0f, 0); Math_SmoothStepToF(&player->cam.at.y, gCsCamAtY, D_ctx_80177A48[1], 100.0f, 0); Math_SmoothStepToF(&player->cam.at.z, gCsCamAtZ, D_ctx_80177A48[1], 100.0f, 0); + player->bobPhase += 10.0f; player->yBob = -SIN_DEG(player->bobPhase) * 0.3f; player->rockPhase += 8.0f; diff --git a/src/overlays/ovl_menu/fox_map.c b/src/overlays/ovl_menu/fox_map.c index 5d675202..77849035 100644 --- a/src/overlays/ovl_menu/fox_map.c +++ b/src/overlays/ovl_menu/fox_map.c @@ -2281,7 +2281,7 @@ void Map_801A116C(void) { wings.unk_34 = 0.0f; wings.unk_38 = 0.0f; - func_display_80053658(&wings); + Display_ArwingWings(&wings); Matrix_Pop(&gGfxMatrix); Matrix_Pop(&gGfxMatrix); diff --git a/src/overlays/ovl_menu/fox_title.c b/src/overlays/ovl_menu/fox_title.c index 7ef95caf..2498addb 100644 --- a/src/overlays/ovl_menu/fox_title.c +++ b/src/overlays/ovl_menu/fox_title.c @@ -2263,7 +2263,7 @@ void Title_8018D2B8(s32 arg0) { wings.unk_34 = D_menu_801B84E8[arg0].unk_30; wings.unk_38 = D_menu_801B84E8[arg0].unk_24; - func_display_80053658(&wings); + Display_ArwingWings(&wings); Object_UpdateSfxSource(D_menu_801B84E8[arg0].unk_50); diff --git a/src/overlays/ovl_unused/fox_unused.c b/src/overlays/ovl_unused/fox_unused.c index 8b64d56b..4295a1aa 100644 --- a/src/overlays/ovl_unused/fox_unused.c +++ b/src/overlays/ovl_unused/fox_unused.c @@ -4,7 +4,7 @@ UNK_TYPE D_unused_801875C0; f32* D_unused_80187530[] = { - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, D_ANDROSS_C038DC0, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, aAndAndrossHitbox, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, diff --git a/yamls/ln/rev0/assets.yaml b/yamls/ln/rev0/assets.yaml new file mode 100644 index 00000000..e69de29b diff --git a/yamls/ln/rev0/header.yaml b/yamls/ln/rev0/header.yaml new file mode 100644 index 00000000..c08b512c --- /dev/null +++ b/yamls/ln/rev0/header.yaml @@ -0,0 +1,77 @@ +name: Starfox64 (Gateway 64 (NTSC)) +sha1: 3400e9c2b77fc1f1204f26a32b09b6f759746ae2 +options: + basename: starfox64 + target_path: baserom.ln.rev0.uncompressed.z64 + elf_path: build/starfox64.ln.rev0.elf + ld_script_path: linker_scripts/ln/rev0/starfox64.ld + base_path: . + compiler: GCC + find_file_boundaries: True + header_encoding: ASCII + platform: n64 + undefined_funcs_auto_path: linker_scripts/ln/rev0/auto/undefined_funcs_auto.ld + undefined_syms_auto_path: linker_scripts/ln/rev0/auto/undefined_syms_auto.ld + + symbol_addrs_path: + - linker_scripts/ln/rev0/symbol_addrs.txt + # - linker_scripts/ln/rev0/symbol_addrs_engine.txt + # - linker_scripts/ln/rev0/symbol_addrs_libultra.txt + # - linker_scripts/ln/rev0/symbol_addrs_nlib_funcs.txt + # - linker_scripts/ln/rev0/symbol_addrs_nlib_vars.txt + # - linker_scripts/ln/rev0/symbol_addrs_assets.txt + # - linker_scripts/ln/rev0/symbol_addrs_mesg.txt + # - linker_scripts/ln/rev0/symbol_addrs_audio.txt + # - linker_scripts/ln/rev0/symbol_addrs_overlays.txt + # - linker_scripts/ln/rev0/symbol_addrs_EBFBE0.txt + # - linker_scripts/ln/rev0/ignored_addresses.txt + + asm_path: asm/ln/rev0 + src_path: srcln + asset_path: bin/ln/rev0 + + build_path: build + + extensions_path: tools/splat_ext + mips_abi_float_regs: o32 + create_asm_dependencies: True + do_c_func_detection: True + o_as_suffix: True + gfx_ucode: f3dex + mnemonic_ljust: 12 + rom_address_padding: True + dump_symbols: True + include_macro_inc: False + libultra_symbols: True + hardware_regs: True + + ld_dependencies: True + + + use_legacy_include_asm: False + + asm_function_macro: glabel + asm_jtbl_label_macro: jlabel + asm_data_macro: dlabel + + ld_legacy_generation: True + check_consecutive_segment_types: False + + # section_order: [".text", ".data", ".rodata", ".bss", "bin"] + # auto_all_sections: [".data", ".rodata", ".bss"] + + + + + mips_abi_float_regs: o32 + + + disasm_unknown: True + # string_encoding: ASCII + # data_string_encoding: ASCII + rodata_string_guesser_level: 2 + data_string_guesser_level: 2 + # libultra_symbols: True + # hardware_regs: True + # gfx_ucode: # one of [f3d, f3db, f3dex, f3dexb, f3dex2] +segments: diff --git a/yamls/ln/rev0/main.yaml b/yamls/ln/rev0/main.yaml new file mode 100644 index 00000000..d6d3ee81 --- /dev/null +++ b/yamls/ln/rev0/main.yaml @@ -0,0 +1,156 @@ + - name: header + type: header + start: 0x0 + + - name: boot + type: bin + start: 0x40 + + - name: entry + type: code + start: 0x1000 + vram: 0x80000400 + subsegments: + - [0x1000, hasm] + + - name: main + type: code + start: 0x1060 + vram: 0x80000460 + follows_vram: entry + #bss_size: 0x9A230 + subsegments: + - [0x1060, asm] + # - [0x1290, data] + # - { start: 0xE44F0, type: bss, vram: 0x800E38F0 } + + - name: dma_table + type: code + start: 0xE44F0 + vram: 0x8017DB20 + follows_vram: main + subsegments: + - [0xE44F0, data, dmatable] + + - name: assets + # ast_logo: D28610 + # ast_ending: D2AB10 + # ast_ending_award_front: D46910 + # ast_ending_award_back: D6B990 + # ast_ending_expert: D95420 + # ast_training: DDF520 + # ast_radio: DE9250 + type: bin + start: 0xE4A90 + # vram: 0x800E3E90 + follows_vram: main + + - name: ovl_i1 + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_i1 + start: 0xDF7760 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: i1_$VRAM + subsegments: + - [0xDF7760, asm, fox_i1] + + - name: ovl_i2 + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_i2 + start: 0xE0B930 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: i2_$VRAM + subsegments: + - [0xE0B930, asm, fox_i2] + + - name: ovl_i3 + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_i3 + start: 0xE1A180 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: i3_$VRAM + subsegments: + - [0xE1A180, asm, fox_i3] + + - name: ovl_i4 + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_i4 + start: 0xE55020 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: i4_$VRAM + subsegments: + - [0xE55020, asm, fox_i4] + + - name: ovl_i5 + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_i5 + start: 0xE6DF00 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: i5_$VRAM + subsegments: + - [0xE6DF00, asm, fox_i5] + + - name: ovl_i6 + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_i6 + start: 0xEA2850 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: i6_$VRAM + subsegments: + - [0xEA2850, asm, fox_i6] + + - name: ovl_menu + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_menu + start: 0xEC32A0 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: menu_$VRAM + subsegments: + - [0xEC32A0, asm, fox_i_menu] + + - name: ovl_ending + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_ending + start: 0xEF2DB0 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: ending_$VRAM + subsegments: + - [0xEF2DB0, asm, fox_end1] + + - name: ovl_unused + exclusive_ram_id: overlay + type: code + dir: overlays/ovl_unused + start: 0xF02520 + vram: 0x8018C5D0 + follows_vram: assets + # bss_size: 0xA10 + symbol_name_format: unused_$VRAM + subsegments: + - [0xF02520, asm, fox_unused] + + - [0xF025C0] diff --git a/yamls/ln/rev0/overlays.yaml b/yamls/ln/rev0/overlays.yaml new file mode 100644 index 00000000..e69de29b