1
0
mirror of https://github.com/zeldaret/oot.git synced 2024-09-21 04:24:43 +00:00

"Decompile" more objects. (#784)

* Object_hakach_objects OK and fix a warning in z_play.c

* Object Warp1 OK

* Object_spot16_obj OK

* object_cs Skeleton and limbs OK

* Limbs are broken

* Limbs OK

* Object_CS OK

* Object_jya_door OK

* fix errors and add new lines

* PR fixes (AngheloAlf)

* PR fixes (EllipticEllipsis)

* PR fixes (Fig)

* Rename Spot16 and Jya

* GraveYard -> Graveyard

* PR fixes

* -s

* PR fixes
This commit is contained in:
louist103 2021-05-30 12:30:38 -04:00 committed by GitHub
parent 515ebdce9d
commit f6470eaa08
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 291 additions and 151 deletions

View File

@ -11,10 +11,10 @@ glabel func_80998C90
/* 00520 80998CA0 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00524 80998CA4 AFBF002C */ sw $ra, 0x002C($sp)
/* 00528 80998CA8 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 0052C 80998CAC 3C060600 */ lui $a2, %hi(D_06002CA8) ## $a2 = 06000000
/* 00530 80998CB0 3C070600 */ lui $a3, %hi(D_06001374) ## $a3 = 06000000
/* 00534 80998CB4 24E71374 */ addiu $a3, $a3, %lo(D_06001374) ## $a3 = 06001374
/* 00538 80998CB8 24C62CA8 */ addiu $a2, $a2, %lo(D_06002CA8) ## $a2 = 06002CA8
/* 0052C 80998CAC 3C060600 */ lui $a2, %hi(gBlueWarpSkel) ## $a2 = 06000000
/* 00530 80998CB0 3C070600 */ lui $a3, %hi(gBlueWarpAnim) ## $a3 = 06000000
/* 00534 80998CB4 24E71374 */ addiu $a3, $a3, %lo(gBlueWarpAnim) ## $a3 = 06001374
/* 00538 80998CB8 24C62CA8 */ addiu $a2, $a2, %lo(gBlueWarpSkel) ## $a2 = 06002CA8
/* 0053C 80998CBC AFA50034 */ sw $a1, 0x0034($sp)
/* 00540 80998CC0 AFA00010 */ sw $zero, 0x0010($sp)
/* 00544 80998CC4 AFA00014 */ sw $zero, 0x0014($sp)
@ -25,14 +25,14 @@ glabel func_80998C90
/* 00554 80998CD4 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
/* 00558 80998CD8 3C014220 */ lui $at, 0x4220 ## $at = 42200000
/* 0055C 80998CDC 44812000 */ mtc1 $at, $f4 ## $f4 = 40.00
/* 00560 80998CE0 3C050600 */ lui $a1, %hi(D_06001374) ## $a1 = 06000000
/* 00560 80998CE0 3C050600 */ lui $a1, %hi(gBlueWarpAnim) ## $a1 = 06000000
/* 00564 80998CE4 240E0002 */ addiu $t6, $zero, 0x0002 ## $t6 = 00000002
/* 00568 80998CE8 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
/* 0056C 80998CEC 44061000 */ mfc1 $a2, $f2
/* 00570 80998CF0 44071000 */ mfc1 $a3, $f2
/* 00574 80998CF4 AFAF001C */ sw $t7, 0x001C($sp)
/* 00578 80998CF8 AFAE0014 */ sw $t6, 0x0014($sp)
/* 0057C 80998CFC 24A51374 */ addiu $a1, $a1, %lo(D_06001374) ## $a1 = 06001374
/* 0057C 80998CFC 24A51374 */ addiu $a1, $a1, %lo(gBlueWarpAnim) ## $a1 = 06001374
/* 00580 80998D00 8FA40034 */ lw $a0, 0x0034($sp)
/* 00584 80998D04 E7A20010 */ swc1 $f2, 0x0010($sp)
/* 00588 80998D08 0C0293F9 */ jal Animation_ChangeImpl

View File

@ -12,22 +12,22 @@ glabel func_80998E5C
/* 006F0 80998E70 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 006F4 80998E74 AFBF002C */ sw $ra, 0x002C($sp)
/* 006F8 80998E78 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 006FC 80998E7C 3C060600 */ lui $a2, %hi(D_06002CA8) ## $a2 = 06000000
/* 00700 80998E80 3C070600 */ lui $a3, %hi(D_06001374) ## $a3 = 06000000
/* 00704 80998E84 24E71374 */ addiu $a3, $a3, %lo(D_06001374) ## $a3 = 06001374
/* 00708 80998E88 24C62CA8 */ addiu $a2, $a2, %lo(D_06002CA8) ## $a2 = 06002CA8
/* 006FC 80998E7C 3C060600 */ lui $a2, %hi(gBlueWarpSkel) ## $a2 = 06000000
/* 00700 80998E80 3C070600 */ lui $a3, %hi(gBlueWarpAnim) ## $a3 = 06000000
/* 00704 80998E84 24E71374 */ addiu $a3, $a3, %lo(gBlueWarpAnim) ## $a3 = 06001374
/* 00708 80998E88 24C62CA8 */ addiu $a2, $a2, %lo(gBlueWarpSkel) ## $a2 = 06002CA8
/* 0070C 80998E8C AFA50034 */ sw $a1, 0x0034($sp)
/* 00710 80998E90 AFA00010 */ sw $zero, 0x0010($sp)
/* 00714 80998E94 AFA00014 */ sw $zero, 0x0014($sp)
/* 00718 80998E98 0C02915F */ jal SkelAnime_Init
/* 0071C 80998E9C AFA00018 */ sw $zero, 0x0018($sp)
/* 00720 80998EA0 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 00720 80998EA0 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 00724 80998EA4 0C028800 */ jal Animation_GetLastFrame
/* 00728 80998EA8 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 0072C 80998EAC 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 00730 80998EB0 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 00728 80998EA8 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 0072C 80998EAC 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 00730 80998EB0 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 00734 80998EB4 0C028800 */ jal Animation_GetLastFrame
/* 00738 80998EB8 A7A2003A */ sh $v0, 0x003A($sp)
@ -36,23 +36,23 @@ glabel func_80998E5C
/* 00744 80998EC4 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00748 80998EC8 448E2000 */ mtc1 $t6, $f4 ## $f4 = 0.00
/* 0074C 80998ECC 46803220 */ cvt.s.w $f8, $f6
/* 00750 80998ED0 3C050600 */ lui $a1, %hi(D_06001374) ## $a1 = 06000000
/* 00750 80998ED0 3C050600 */ lui $a1, %hi(gBlueWarpAnim) ## $a1 = 06000000
/* 00754 80998ED4 240F0002 */ addiu $t7, $zero, 0x0002 ## $t7 = 00000002
/* 00758 80998ED8 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001
/* 0075C 80998EDC AFB8001C */ sw $t8, 0x001C($sp)
/* 00760 80998EE0 46802120 */ cvt.s.w $f4, $f4
/* 00764 80998EE4 AFAF0014 */ sw $t7, 0x0014($sp)
/* 00768 80998EE8 24A51374 */ addiu $a1, $a1, %lo(D_06001374) ## $a1 = 06001374
/* 00768 80998EE8 24A51374 */ addiu $a1, $a1, %lo(gBlueWarpAnim) ## $a1 = 06001374
/* 0076C 80998EEC E7A80010 */ swc1 $f8, 0x0010($sp)
/* 00770 80998EF0 8FA40034 */ lw $a0, 0x0034($sp)
/* 00774 80998EF4 24060000 */ addiu $a2, $zero, 0x0000 ## $a2 = 00000000
/* 00778 80998EF8 44072000 */ mfc1 $a3, $f4
/* 0077C 80998EFC 0C0293F9 */ jal Animation_ChangeImpl
/* 00780 80998F00 E7A00018 */ swc1 $f0, 0x0018($sp)
/* 00784 80998F04 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 00784 80998F04 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 00788 80998F08 0C028800 */ jal Animation_GetLastFrame
/* 0078C 80998F0C 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 0078C 80998F0C 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 00790 80998F10 3C01809A */ lui $at, %hi(D_8099C728) ## $at = 809A0000
/* 00794 80998F14 C422C728 */ lwc1 $f2, %lo(D_8099C728)($at)
/* 00798 80998F18 44825000 */ mtc1 $v0, $f10 ## $f10 = 0.00

View File

@ -20,22 +20,22 @@ glabel func_80998FF4
/* 00884 80999004 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00888 80999008 AFBF002C */ sw $ra, 0x002C($sp)
/* 0088C 8099900C 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 00890 80999010 3C060600 */ lui $a2, %hi(D_06002CA8) ## $a2 = 06000000
/* 00894 80999014 3C070600 */ lui $a3, %hi(D_06001374) ## $a3 = 06000000
/* 00898 80999018 24E71374 */ addiu $a3, $a3, %lo(D_06001374) ## $a3 = 06001374
/* 0089C 8099901C 24C62CA8 */ addiu $a2, $a2, %lo(D_06002CA8) ## $a2 = 06002CA8
/* 00890 80999010 3C060600 */ lui $a2, %hi(gBlueWarpSkel) ## $a2 = 06000000
/* 00894 80999014 3C070600 */ lui $a3, %hi(gBlueWarpAnim) ## $a3 = 06000000
/* 00898 80999018 24E71374 */ addiu $a3, $a3, %lo(gBlueWarpAnim) ## $a3 = 06001374
/* 0089C 8099901C 24C62CA8 */ addiu $a2, $a2, %lo(gBlueWarpSkel) ## $a2 = 06002CA8
/* 008A0 80999020 AFA50034 */ sw $a1, 0x0034($sp)
/* 008A4 80999024 AFA00010 */ sw $zero, 0x0010($sp)
/* 008A8 80999028 AFA00014 */ sw $zero, 0x0014($sp)
/* 008AC 8099902C 0C02915F */ jal SkelAnime_Init
/* 008B0 80999030 AFA00018 */ sw $zero, 0x0018($sp)
/* 008B4 80999034 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 008B4 80999034 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 008B8 80999038 0C028800 */ jal Animation_GetLastFrame
/* 008BC 8099903C 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 008C0 80999040 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 008C4 80999044 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 008BC 8099903C 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 008C0 80999040 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 008C4 80999044 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 008C8 80999048 0C028800 */ jal Animation_GetLastFrame
/* 008CC 8099904C A7A2003C */ sh $v0, 0x003C($sp)
@ -44,23 +44,23 @@ glabel func_80998FF4
/* 008D8 80999058 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 008DC 8099905C 448E2000 */ mtc1 $t6, $f4 ## $f4 = 0.00
/* 008E0 80999060 46803220 */ cvt.s.w $f8, $f6
/* 008E4 80999064 3C050600 */ lui $a1, %hi(D_06001374) ## $a1 = 06000000
/* 008E4 80999064 3C050600 */ lui $a1, %hi(gBlueWarpAnim) ## $a1 = 06000000
/* 008E8 80999068 240F0002 */ addiu $t7, $zero, 0x0002 ## $t7 = 00000002
/* 008EC 8099906C 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001
/* 008F0 80999070 AFB8001C */ sw $t8, 0x001C($sp)
/* 008F4 80999074 46802120 */ cvt.s.w $f4, $f4
/* 008F8 80999078 AFAF0014 */ sw $t7, 0x0014($sp)
/* 008FC 8099907C 24A51374 */ addiu $a1, $a1, %lo(D_06001374) ## $a1 = 06001374
/* 008FC 8099907C 24A51374 */ addiu $a1, $a1, %lo(gBlueWarpAnim) ## $a1 = 06001374
/* 00900 80999080 E7A80010 */ swc1 $f8, 0x0010($sp)
/* 00904 80999084 8FA40034 */ lw $a0, 0x0034($sp)
/* 00908 80999088 24060000 */ addiu $a2, $zero, 0x0000 ## $a2 = 00000000
/* 0090C 8099908C 44072000 */ mfc1 $a3, $f4
/* 00910 80999090 0C0293F9 */ jal Animation_ChangeImpl
/* 00914 80999094 E7A00018 */ swc1 $f0, 0x0018($sp)
/* 00918 80999098 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 00918 80999098 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 0091C 8099909C 0C028800 */ jal Animation_GetLastFrame
/* 00920 809990A0 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 00920 809990A0 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 00924 809990A4 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 00928 809990A8 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
/* 0092C 809990AC 3C01809A */ lui $at, %hi(D_8099C72C) ## $at = 809A0000

View File

@ -21,12 +21,12 @@ glabel func_8099A508
/* 01DD0 8099A550 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 01DD4 8099A554 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 01DD8 8099A558 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 01DD8 8099A558 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 01DDC 8099A55C 0C028800 */ jal Animation_GetLastFrame
/* 01DE0 8099A560 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 01DE4 8099A564 3C040600 */ lui $a0, %hi(D_06001374) ## $a0 = 06000000
/* 01DE8 8099A568 24841374 */ addiu $a0, $a0, %lo(D_06001374) ## $a0 = 06001374
/* 01DE0 8099A560 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 01DE4 8099A564 3C040600 */ lui $a0, %hi(gBlueWarpAnim) ## $a0 = 06000000
/* 01DE8 8099A568 24841374 */ addiu $a0, $a0, %lo(gBlueWarpAnim) ## $a0 = 06001374
/* 01DEC 8099A56C 0C028800 */ jal Animation_GetLastFrame
/* 01DF0 8099A570 A7A20030 */ sh $v0, 0x0030($sp)
@ -36,13 +36,13 @@ glabel func_8099A508
/* 01E00 8099A580 44982000 */ mtc1 $t8, $f4 ## $f4 = 0.00
/* 01E04 8099A584 46803220 */ cvt.s.w $f8, $f6
/* 01E08 8099A588 44815000 */ mtc1 $at, $f10 ## $f10 = 40.00
/* 01E0C 8099A58C 3C050600 */ lui $a1, %hi(D_06001374) ## $a1 = 06000000
/* 01E0C 8099A58C 3C050600 */ lui $a1, %hi(gBlueWarpAnim) ## $a1 = 06000000
/* 01E10 8099A590 24190002 */ addiu $t9, $zero, 0x0002 ## $t9 = 00000002
/* 01E14 8099A594 24080001 */ addiu $t0, $zero, 0x0001 ## $t0 = 00000001
/* 01E18 8099A598 46802120 */ cvt.s.w $f4, $f4
/* 01E1C 8099A59C AFA8001C */ sw $t0, 0x001C($sp)
/* 01E20 8099A5A0 AFB90014 */ sw $t9, 0x0014($sp)
/* 01E24 8099A5A4 24A51374 */ addiu $a1, $a1, %lo(D_06001374) ## $a1 = 06001374
/* 01E24 8099A5A4 24A51374 */ addiu $a1, $a1, %lo(gBlueWarpAnim) ## $a1 = 06001374
/* 01E28 8099A5A8 E7A80010 */ swc1 $f8, 0x0010($sp)
/* 01E2C 8099A5AC 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
/* 01E30 8099A5B0 44072000 */ mfc1 $a3, $f4

View File

@ -585,10 +585,10 @@ glabel func_8099B5EC
/* 036A8 8099BE28 AFA2008C */ sw $v0, 0x008C($sp)
/* 036AC 8099BE2C 8FA3008C */ lw $v1, 0x008C($sp)
/* 036B0 8099BE30 8FA800D8 */ lw $t0, 0x00D8($sp)
/* 036B4 8099BE34 3C040600 */ lui $a0, %hi(D_060001A0) ## $a0 = 06000000
/* 036B4 8099BE34 3C040600 */ lui $a0, %hi(gBlueWarpLightBeamDL) ## $a0 = 06000000
/* 036B8 8099BE38 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 036BC 8099BE3C 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 036C0 8099BE40 248401A0 */ addiu $a0, $a0, %lo(D_060001A0) ## $a0 = 060001A0
/* 036C0 8099BE40 248401A0 */ addiu $a0, $a0, %lo(gBlueWarpLightBeamDL) ## $a0 = 060001A0
/* 036C4 8099BE44 3C0EDE00 */ lui $t6, 0xDE00 ## $t6 = DE000000
/* 036C8 8099BE48 244D0008 */ addiu $t5, $v0, 0x0008 ## $t5 = 00000008
/* 036CC 8099BE4C AD0D02D0 */ sw $t5, 0x02D0($t0) ## 000002D0

View File

@ -0,0 +1,60 @@
<Root>
<File Name="object_cs" Segment="6">
<Skeleton Name="gGraveyardKidSkel" Type="Flex" LimbType="Standard" Offset="0x8540"/>
<Limb Name="gGraveyardKidTorsoLimb" LimbType="Standard" Offset="0x8450"/>
<Limb Name="gGraveyardKidLeftThighLimb" LimbType="Standard" Offset="0x845C"/>
<Limb Name="gGraveyardKidLeftShinLimb" LimbType="Standard" Offset="0x8468"/>
<Limb Name="gGraveyardKidLeftFootLimb" LimbType="Standard" Offset="0x8474"/>
<Limb Name="gGraveyardKidRightThighLimb" LimbType="Standard" Offset="0x8480"/>
<Limb Name="gGraveyardKidRightShinLimb" LimbType="Standard" Offset="0x848C"/>
<Limb Name="gGraveyardKidRightFootLimb" LimbType="Standard" Offset="0x8498"/>
<Limb Name="gGraveyardKidChestLimb" LimbType="Standard" Offset="0x84A4"/>
<Limb Name="gGraveyardKidLeftShoulderLimb" LimbType="Standard" Offset="0x84B0"/>
<Limb Name="gGraveyardKidLeftArmLimb" LimbType="Standard" Offset="0x84BC"/>
<Limb Name="gGraveyardKidLeftHandLimb" LimbType="Standard" Offset="0x84C8"/>
<Limb Name="gGraveyardKidRightShoulderLimb" LimbType="Standard" Offset="0x84D4"/>
<Limb Name="gGraveyardKidRightArmLimb" LimbType="Standard" Offset="0x84E0"/>
<Limb Name="gGraveyardKidRightHandLimb" LimbType="Standard" Offset="0x84EC"/>
<Limb Name="gGraveyardKidHeadLimb" LimbType="Standard" Offset="0x84F8"/>
<DList Name="gGraveyardKidTorsoDL" Offset="0x7910"/>
<DList Name="gGraveyardKidLeftThighDL" Offset="0x7F00"/>
<DList Name="gGraveyardKidLeftShinDL" Offset="0x8050"/>
<DList Name="gGraveyardKidLeftFootDL" Offset="0x81E8"/>
<DList Name="gGraveyardKidRightThighDL" Offset="0x7A30"/>
<DList Name="gGraveyardKidRightShinDL" Offset="0x7B80"/>
<DList Name="gGraveyardKidRightFootDL" Offset="0x7D18"/>
<DList Name="gGraveyardKidChestDL" Offset="0x65B0"/>
<DList Name="gGraveyardKidLeftUpperArmDL" Offset="0x7388"/>
<DList Name="gGraveyardKidLeftArmDL" Offset="0x7540"/>
<DList Name="gGraveyardKidLeftHandDL" Offset="0x7788"/>
<DList Name="gGraveyardKidRightUpperArmDL" Offset="0x6CA8"/>
<DList Name="gGraveyardKidRightArmDL" Offset="0x6E60"/>
<DList Name="gGraveyardKidRightHandDL" Offset="0x70A8"/>
<DList Name="gGraveyardKidHeadDL" Offset="0x6808"/>
<Animation Name="gGraveyardKidWalkAnim" Offset="0x0700"/>
<Animation Name="gGraveyardKidSwingStickUpAnim" Offset="0x0E10"/>
<Animation Name="gGraveyardKidGrabStickTwoHandsAnim" Offset="0x1588"/>
<Animation Name="gGraveyardKidIdleAnim" Offset="0x195C"/>
<Texture Name="gGraveyardKidEyesOpenTex" OutName="eyes_open" Format="rgb5a1" Width="64" Height="16" Offset="0x2130"/>
<Texture Name="gGraveyardKidEyesHalfTex" OutName="eyes_half" Format="rgb5a1" Width="64" Height="16" Offset="0x2930"/>
<Texture Name="gGraveyardKidEyesClosedTex" OutName="eyes_closed" Format="rgb5a1" Width="64" Height="16" Offset="0x3130"/>
<Texture Name="gGraveyardKidTLUT" OutName="tlut" Format="rgb5a1" Width="16" Height="16" Offset="0x1970"/>
<Texture Name="gGraveyardKidGradientTex" OutName="gradient" Format="ci8" Width="8" Height="8" Offset="0x1B70"/>
<Texture Name='gGraveyardKidPantsTex' OutName="pants" Format="ci8" Width="16" Height="16" Offset="0x3C70"/>
<Texture Name='gGraveyardKidBoot1Tex' OutName="boot1" Format="ci8" Width="8" Height="16" Offset="0x3BF0"/>
<Texture Name='gGraveyardKidBoot2Tex' OutName="boot2" Format="ci8" Width="8" Height="8" Offset="0x3BB0"/>
<Texture Name='gGraveyardKidHairTex' OutName="hair" Format="ci8" Width="16" Height="16" Offset="0x1BB0"/>
<Texture Name='gGraveyardKidEarTex' OutName="ear" Format="ci8" Width="8" Height="8" Offset="0x1CB0"/>
<Texture Name='gGraveyardKidNoseTex' OutName="nose" Format="ci8" Width="8" Height="8" Offset="0x1CF0"/>
<Texture Name='gGraveyardKidMouthTex' OutName="mouth" Format="rgb5a1" Width="32" Height="16" Offset="0x1D30"/>
<Texture Name='gGraveyardKidShirt1Tex' OutName="shirt1" Format="ci8" Width="16" Height="16" Offset="0x3A30"/>
<Texture Name='gGraveyardKidShirt2Tex' OutName="shirt2" Format="ci8" Width="8" Height="8" Offset="0x3B30"/>
<Texture Name='gGraveyardKidFingersTex' OutName="fingers" Format="ci8" Width="16" Height="16" Offset="0x3930"/>
<Texture Name='gGraveyardKidStickTex' OutName="stick" Format="ci8" Width="8" Height="8" Offset="0x3B70"/>
</File>
</Root>

View File

@ -46,4 +46,4 @@
<Limb Name="object_fu_Limb_006C48" LimbType="Standard" Offset="0x6C48"/>
<Skeleton Name="object_fu_Skel_006C90" Type="Flex" LimbType="Standard" Offset="0x6C90"/>
</File>
</Root>
</Root>

View File

@ -0,0 +1,28 @@
<Root>
<File Name="object_hakach_objects" Segment="6">
<DList Name="gBotwHoleTrap1DL" Offset="0x01B0"/>
<DList Name="gBotwHoleTrap2DL" Offset="0x03F0"/>
<DList Name="gBotwCoffinLidDL" Offset="0x06B0"/>
<DList Name="gBotwBombSpotDL" Offset="0x0A10"/>
<DList Name="gBotwFakeWallsAndFloorsDL" Offset="0x1060"/>
<DList Name="gBotwBloodSplatterDL" Offset="0x1250"/>
<DList Name="gBotwThreeFakeFloorsDL" Offset="0x1920"/>
<DList Name="gBotwWaterRingDL" Offset="0x1E50"/>
<DList Name="gBotwWaterFallDL" Offset="0x2010"/>
<Collision Name="gBotwCoffinLidCol" Offset="0x0870"/>
<Collision Name="gBotwBombSpotCol" Offset="0x0C2C"/>
<Collision Name="gBotw1Col" Offset="0x1830"/>
<Collision Name="gBotw2Col" Offset="0x1AB8"/>
<Texture Name="gBotwWater1Tex" OutName="water_1" Format="ia16" Width="32" Height="32" Offset="0x028F0"/>
<Texture Name="gBotwWater2Tex" OutName="water_2" Format="rgb5a1" Width="32" Height="32" Offset="0x020F0"/>
<Texture Name="gBotwTex_0030F0" Format="rgb5a1" Width="32" Height="32" Offset="0x30F0"/>
<Texture Name="gBotwBloodSplatterTex" OutName="blood_splatter" Format="ia16" Width="32" Height="32" Offset="0x38F0"/>
<Texture Name="gBotwTex_0040F0" Format="rgb5a1" Width="32" Height="32" Offset="0x40F0"/>
<Texture Name="gBotwTex_0048F0" Format="rgb5a1" Width="32" Height="32" Offset="0x48F0"/>
<Texture Name="gBotwTex_0050F0" Format="rgb5a1" Width="32" Height="32" Offset="0x50F0"/>
<Texture Name="gBotwTex_0058F0" Format="rgb5a1" Width="32" Height="32" Offset="0x58F0"/>
<Texture Name="gBotwTex_0060F0" Format="i4" Width="32" Height="32" Offset="0x60F0"/>
</File>
</Root>

View File

@ -0,0 +1,8 @@
<Root>
<File Name="object_jya_door" Segment="6">
<DList Name="gSpiritDoorDL" Offset="0x0100"/>
<DList Name="gJyaDoorMetalBarsDL" Offset="0x01F0"/>
<Texture Name="gSpiritDoorTex" OutName="door" Format="rgb5a1" Width="64" Height="32" Offset="0x0280"/>
<Texture Name="gSpiritDoorMetalBarsTex" OutName="metal_bars" Format="rgb5a1" Width="32" Height="64" Offset="0x1280"/>
</File>
</Root>

View File

@ -27,4 +27,4 @@
<Skeleton Name="object_sb_Skel_002BF0" Type="Flex" LimbType="Standard" Offset="0x2BF0"/>
<Animation Name="object_sb_Anim_002C8C" Offset="0x2C8C"/>
</File>
</Root>
</Root>

View File

@ -0,0 +1,11 @@
<Root>
<File Name="object_spot16_obj" Segment="6">
<DList Name="gDodongosCavernRockDL" Offset="0x0B00"/>
<DList Name="gDodongosCavernRock2DL" Offset="0x0C00"/>
<DList Name="gDodongosCavernRock3DL" Offset="0x0C20"/>
<DList Name="gDeathMountainRingDL" Offset="0x1470"/>
<Texture Name="gDodongosCavernRockTex" OutName="rock_tex" Format="i4" Width="64" Height="64" Offset="0x0000"/>
<Texture Name="gDeathMountainRingTex" OutName="smoke_ring" Format="ia16" Width="32" Height="32" Offset="0x0C30"/>
</File>
</Root>

View File

@ -0,0 +1,16 @@
<Root>
<File Name="object_warp1" Segment="6">
<Skeleton Name="gBlueWarpSkel" Type="Standard" LimbType="Standard" Offset="0x2CA8"/>
<Animation Name="gBlueWarpAnim" Offset="0x1374"/>
<DList Name="gBlueWarpLightBeamDL" Offset="0x01A0"/>
<DList Name="gBlueWarpDiamondDL" Offset="0x1750"/>
<DList Name="gBlueWarpTriangle1DL" Offset="0x1828"/>
<DList Name="gBlueWarpTriangle2DL" Offset="0x18B0"/>
<DList Name="gBlueWarpTriangle3DL" Offset="0x1938"/>
<DList Name="gBlueWarpTriangle4DL" Offset="0x19C0"/>
<DList Name="gBlueWarpTriangle5DL" Offset="0x1A48"/>
<DList Name="gBlueWarpTriangle6DL" Offset="0x1AD0"/>
<Texture Name="gBlueWarpLightBeamTex" OutName="light_beam" Format="i8" Width="64" Height="64" Offset="0x02C0"/>
<Texture Name="gBlueWarpDiamondAndTriangleTex" OutName="diamond_and_triangle" Format="i8" Width="64" Height="64" Offset="0x1B58"/>
</File>
</Root>

15
spec
View File

@ -3895,7 +3895,8 @@ endseg
beginseg
name "object_warp1"
romalign 0x1000
include "build/baserom/object_warp1.o"
include "build/assets/objects/object_warp1/object_warp1.o"
number 6
endseg
beginseg
@ -4283,7 +4284,8 @@ endseg
beginseg
name "object_hakach_objects"
romalign 0x1000
include "build/baserom/object_hakach_objects.o"
include "build/assets/objects/object_hakach_objects/object_hakach_objects.o"
number 6
endseg
beginseg
@ -4647,7 +4649,8 @@ endseg
beginseg
name "object_spot16_obj"
romalign 0x1000
include "build/baserom/object_spot16_obj.o"
include "build/assets/objects/object_spot16_obj/object_spot16_obj.o"
number 6
endseg
beginseg
@ -5498,7 +5501,8 @@ endseg
beginseg
name "object_cs"
romalign 0x1000
include "build/baserom/object_cs.o"
include "build/assets/objects/object_cs/object_cs.o"
number 6
endseg
beginseg
@ -5769,7 +5773,8 @@ endseg
beginseg
name "object_jya_door"
romalign 0x1000
include "build/baserom/object_jya_door.o"
include "build/assets/objects/object_jya_door/object_jya_door.o"
number 6
endseg
beginseg

View File

@ -45,10 +45,10 @@ u8 gPlayerModelTypes[][5] = {
};
Gfx* D_80125CE8[] = {
0x060226E0, gLinkChildRightHandClosedNearDL, 0x06027690, gLinkChildRightHandClosedFarDL,
0x060226E0, gLinkChildRightHandClosedNearDL, 0x06027690, gLinkChildRightHandClosedFarDL,
0x060226E0, gLinkChildRightFistAndDekuShieldNearDL, 0x06027690, gLinkChildRightFistAndDekuShieldFarDL,
0x06022970, gLinkChildRightHandClosedNearDL, 0x06027918, gLinkChildRightHandClosedFarDL,
0x060241C0, gLinkChildRightHandClosedNearDL, 0x06028B40, gLinkChildRightHandClosedFarDL,
0x06022970, gLinkChildRightHandClosedNearDL, 0x06027918, gLinkChildRightHandClosedFarDL,
0x060241C0, gLinkChildRightHandClosedNearDL, 0x06028B40, gLinkChildRightHandClosedFarDL,
};
Gfx* D_80125D28[] = {

View File

@ -5,6 +5,7 @@
*/
#include "z_bg_haka_huta.h"
#include "objects/object_hakach_objects/object_hakach_objects.h"
#define FLAGS 0x00000010
@ -16,15 +17,12 @@ void BgHakaHuta_Update(Actor* thisx, GlobalContext* globalCtx);
void BgHakaHuta_Draw(Actor* thisx, GlobalContext* globalCtx);
void BgHakaHuta_SpawnDust(BgHakaHuta* this, GlobalContext* globalCtx);
void func_8087D268(BgHakaHuta* this, GlobalContext* globalCtx, u16 sfx);
void BgHakaHuta_PlaySound(BgHakaHuta* this, GlobalContext* globalCtx, u16 sfx);
void BgHakaHuta_SpawnEnemies(BgHakaHuta* this, GlobalContext* globalCtx);
void BgHakaHuta_Open(BgHakaHuta* this, GlobalContext* globalCtx);
void BgHakaHuta_SlideOpen(BgHakaHuta* this, GlobalContext* globalCtx);
void func_8087D720(BgHakaHuta* this, GlobalContext* globalCtx);
void func_8087D8C0(BgHakaHuta* this, GlobalContext* globalCtx);
extern Gfx D_060006B0[];
extern CollisionHeader D_06000870;
void BgHakaHuta_DoNothing(BgHakaHuta* this, GlobalContext* globalCtx);
const ActorInit Bg_Haka_Huta_InitVars = {
ACTOR_BG_HAKA_HUTA,
@ -45,16 +43,15 @@ static InitChainEntry sInitChain[] = {
void BgHakaHuta_Init(Actor* thisx, GlobalContext* globalCtx) {
BgHakaHuta* this = THIS;
s16 pad;
CollisionHeader* colHeader;
CollisionHeader* colHeader = NULL;
colHeader = NULL;
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
DynaPolyActor_Init(&this->dyna, 1);
CollisionHeader_GetVirtual(&D_06000870, &colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
Actor_ProcessInitChain(thisx, sInitChain);
DynaPolyActor_Init(&this->dyna, DPM_PLAYER);
CollisionHeader_GetVirtual(&gBotwCoffinLidCol, &colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, thisx, colHeader);
this->unk_16A = (thisx->params >> 8) & 0xFF;
this->dyna.actor.params &= 0xFF;
if (Flags_GetSwitch(globalCtx, this->dyna.actor.params)) {
thisx->params &= 0xFF;
if (Flags_GetSwitch(globalCtx, thisx->params)) {
this->counter = -1;
this->actionFunc = func_8087D720;
} else {
@ -98,7 +95,7 @@ void BgHakaHuta_SpawnDust(BgHakaHuta* this, GlobalContext* globalCtx) {
}
}
void func_8087D268(BgHakaHuta* this, GlobalContext* globalCtx, u16 sfx) {
void BgHakaHuta_PlaySound(BgHakaHuta* this, GlobalContext* globalCtx, u16 sfx) {
Vec3f pos;
pos.z = (this->dyna.actor.shape.rot.y == 0) ? this->dyna.actor.world.pos.z + 120.0f
@ -152,7 +149,7 @@ void BgHakaHuta_Open(BgHakaHuta* this, GlobalContext* globalCtx) {
Math_StepToF(&this->dyna.actor.world.pos.x, this->dyna.actor.home.pos.x + posOffset, 2.0f);
if (this->counter == 0) {
this->counter = 37;
func_8087D268(this, globalCtx, NA_SE_EV_COFFIN_CAP_OPEN);
BgHakaHuta_PlaySound(this, globalCtx, NA_SE_EV_COFFIN_CAP_OPEN);
this->actionFunc = BgHakaHuta_SlideOpen;
}
}
@ -168,7 +165,7 @@ void BgHakaHuta_SlideOpen(BgHakaHuta* this, GlobalContext* globalCtx) {
BgHakaHuta_SpawnDust(this, globalCtx);
}
if (this->counter == 0) {
func_8087D268(this, globalCtx, NA_SE_EV_COFFIN_CAP_BOUND);
BgHakaHuta_PlaySound(this, globalCtx, NA_SE_EV_COFFIN_CAP_BOUND);
this->actionFunc = func_8087D720;
}
}
@ -182,14 +179,14 @@ void func_8087D720(BgHakaHuta* this, GlobalContext* globalCtx) {
this->counter++;
if (this->counter == 6) {
this->actionFunc = func_8087D8C0;
this->actionFunc = BgHakaHuta_DoNothing;
quakeIndex = Quake_Add(ACTIVE_CAM, 3);
Quake_SetSpeed(quakeIndex, 0x7530);
Quake_SetQuakeValues(quakeIndex, 4, 0, 0, 0);
Quake_SetCountdown(quakeIndex, 2);
} else if (this->counter == 0) {
this->counter = 6;
this->actionFunc = func_8087D8C0;
this->actionFunc = BgHakaHuta_DoNothing;
}
D_8087D958.x = this->counter + 24.0f;
@ -206,14 +203,15 @@ void func_8087D720(BgHakaHuta* this, GlobalContext* globalCtx) {
func_800D20CC(&mtx, &this->dyna.actor.shape.rot, 0);
}
void func_8087D8C0(BgHakaHuta* this, GlobalContext* globalCtx) {
void BgHakaHuta_DoNothing(BgHakaHuta* this, GlobalContext* globalCtx) {
}
void BgHakaHuta_Update(Actor* thisx, GlobalContext* globalCtx) {
BgHakaHuta* this = THIS;
this->actionFunc(this, globalCtx);
}
void BgHakaHuta_Draw(Actor* thisx, GlobalContext* globalCtx) {
Gfx_DrawDListOpa(globalCtx, D_060006B0);
Gfx_DrawDListOpa(globalCtx, gBotwCoffinLidDL);
}

View File

@ -5,6 +5,7 @@
*/
#include "z_bg_haka_megane.h"
#include "objects/object_hakach_objects/object_hakach_objects.h"
#define FLAGS 0x000000B0
@ -35,16 +36,25 @@ static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
extern CollisionHeader D_06001830, D_06001AB8, D_06004330, D_060044D0, D_06004780, D_06004940, D_06004B00, D_06004CC0;
static CollisionHeader* sCollisionHeaders[] = {
&D_06001830, &D_06001AB8, NULL, &D_06004330, &D_060044D0, NULL, &D_06004780,
&D_06004940, NULL, &D_06004B00, NULL, &D_06004CC0, NULL,
&gBotw1Col, &gBotw2Col, NULL, 0x06004330, 0x060044D0, NULL, 0x06004780,
0x06004940, NULL, 0x06004B00, NULL, 0x06004CC0, NULL,
};
static Gfx* sDLists[] = {
0x06001060, 0x06001920, 0x060003F0, 0x060040F0, 0x060043B0, 0x06001120, 0x060045A0,
0x060047F0, 0x060018F0, 0x060049B0, 0x06003CF0, 0x06004B70, 0x06002ED0,
gBotwFakeWallsAndFloorsDL,
gBotwThreeFakeFloorsDL,
gBotwHoleTrap2DL,
0x060040F0,
0x060043B0,
0x06001120,
0x060045A0,
0x060047F0,
0x060018F0,
0x060049B0,
0x06003CF0,
0x06004B70,
0x06002ED0,
};
extern Gfx D_06001250[];
@ -126,6 +136,6 @@ void BgHakaMegane_Draw(Actor* thisx, GlobalContext* globalCtx) {
}
if (thisx->params == 0) {
Gfx_DrawDListXlu(globalCtx, D_06001250);
Gfx_DrawDListXlu(globalCtx, gBotwBloodSplatterDL);
}
}

View File

@ -5,6 +5,7 @@
*/
#include "z_bg_haka_water.h"
#include "objects/object_hakach_objects/object_hakach_objects.h"
#define FLAGS 0x00000030
@ -15,7 +16,7 @@ void BgHakaWater_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgHakaWater_Update(Actor* thisx, GlobalContext* globalCtx);
void BgHakaWater_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80881D94(BgHakaWater* this, GlobalContext* globalCtx);
void BgHakaWater_LowerWater(BgHakaWater* this, GlobalContext* globalCtx);
void BgHakaWater_Wait(BgHakaWater* this, GlobalContext* globalCtx);
void BgHakaWater_ChangeWaterLevel(BgHakaWater* this, GlobalContext* globalCtx);
@ -35,9 +36,6 @@ static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
extern Gfx D_06001E50[];
extern Gfx D_06002010[];
void BgHakaWater_Init(Actor* thisx, GlobalContext* globalCtx) {
BgHakaWater* this = THIS;
@ -49,14 +47,14 @@ void BgHakaWater_Init(Actor* thisx, GlobalContext* globalCtx) {
} else {
this->isLowered = false;
}
func_80881D94(this, globalCtx);
BgHakaWater_LowerWater(this, globalCtx);
this->actionFunc = BgHakaWater_Wait;
}
void BgHakaWater_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
void func_80881D94(BgHakaWater* this, GlobalContext* globalCtx) {
void BgHakaWater_LowerWater(BgHakaWater* this, GlobalContext* globalCtx) {
s32 i;
for (i = 0; i < 9; i++) {
@ -100,7 +98,7 @@ void BgHakaWater_ChangeWaterLevel(BgHakaWater* this, GlobalContext* globalCtx) {
this->actor.draw = NULL;
}
}
func_80881D94(this, globalCtx);
BgHakaWater_LowerWater(this, globalCtx);
}
void BgHakaWater_Update(Actor* thisx, GlobalContext* globalCtx) {
@ -132,7 +130,7 @@ void BgHakaWater_Draw(Actor* thisx, GlobalContext* globalCtx) {
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_haka_water.c", 312),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, D_06001E50);
gSPDisplayList(POLY_XLU_DISP++, gBotwWaterRingDL);
Matrix_Translate(0.0f, 92.0f, -1680.0f, MTXMODE_NEW);
Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY);
@ -145,7 +143,7 @@ void BgHakaWater_Draw(Actor* thisx, GlobalContext* globalCtx) {
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, (u8)(5.1f * temp));
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_haka_water.c", 328),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, D_06002010);
gSPDisplayList(POLY_XLU_DISP++, gBotwWaterFallDL);
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_haka_water.c", 332);
}

View File

@ -5,6 +5,7 @@
*/
#include "z_bg_haka_zou.h"
#include "objects/object_hakach_objects/object_hakach_objects.h"
#define FLAGS 0x00000010
@ -71,10 +72,8 @@ static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
extern Gfx D_06000A10[];
extern CollisionHeader D_06005E30;
extern CollisionHeader D_06006F70;
extern CollisionHeader D_06000C2C;
void BgHakaZou_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
@ -186,7 +185,7 @@ void BgHakaZou_Wait(BgHakaZou* this, GlobalContext* globalCtx) {
CollisionHeader_GetVirtual(&D_06005E30, &colHeader);
this->collider.dim.yShift = -50;
} else {
CollisionHeader_GetVirtual(&D_06000C2C, &colHeader);
CollisionHeader_GetVirtual(&gBotwBombSpotCol, &colHeader);
this->collider.dim.radius = 55;
this->collider.dim.height = 20;
}
@ -259,13 +258,13 @@ void func_80882E54(BgHakaZou* this, GlobalContext* globalCtx) {
fragmentPos.y = this->collider.dim.pos.y;
fragmentPos.z = this->collider.dim.pos.z;
EffectSsHahen_SpawnBurst(globalCtx, &fragmentPos, 10.0f, 0, 10, 10, 4, 141, 40, D_06000A10);
EffectSsHahen_SpawnBurst(globalCtx, &fragmentPos, 10.0f, 0, 10, 10, 4, 141, 40, gBotwBombSpotDL);
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
fragmentPos.x = this->collider.dim.pos.x + (((j * 2) - 1) * num);
fragmentPos.z = this->collider.dim.pos.z + (((i * 2) - 1) * num);
EffectSsHahen_SpawnBurst(globalCtx, &fragmentPos, 10.0f, 0, 10, 10, 4, 141, 40, D_06000A10);
EffectSsHahen_SpawnBurst(globalCtx, &fragmentPos, 10.0f, 0, 10, 10, 4, 141, 40, gBotwBombSpotDL);
func_800286CC(globalCtx, &fragmentPos, &sZeroVec, &sZeroVec, 1000, 50);
}
}
@ -405,7 +404,7 @@ void BgHakaZou_Update(Actor* thisx, GlobalContext* globalCtx) {
}
void BgHakaZou_Draw(Actor* thisx, GlobalContext* globalCtx) {
static Gfx* dLists[] = { 0x060064E0, 0x06005CE0, 0x06000A10, 0x06005CE0 };
static Gfx* dLists[] = { 0x060064E0, 0x06005CE0, gBotwBombSpotDL, 0x06005CE0 };
Gfx_DrawDListOpa(globalCtx, dLists[thisx->params]);
}

View File

@ -73,7 +73,7 @@ static s16 D_80899520[] = { 18, 26, 34, 42, 50, 60, 70, 80 };
static s16 D_80899530[] = { 48, 42, 36, 32, 28, 24, 20, 16 };
static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale.x, 100, ICHAIN_CONTINUE),
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneForward, 1000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneScale, 500, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneDownward, 1000, ICHAIN_STOP),

View File

@ -180,7 +180,7 @@ void BgJyaZurerukabe_Update(Actor* thisx, GlobalContext* globalCtx) {
}
this->actionFunc(this, globalCtx);
if (this->unk_168 == 0) {
func_8089B4C8(this, globalCtx);
}

View File

@ -1,4 +1,5 @@
#include "z_bg_spot16_bombstone.h"
#include "objects/object_spot16_obj/object_spot16_obj.h"
#include "overlays/actors/ovl_En_Bombf/z_en_bombf.h"
#include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h"
@ -184,7 +185,7 @@ s32 func_808B4D9C(BgSpot16Bombstone* this, GlobalContext* globalCtx) {
func_808B4D04(this, globalCtx);
this->sinRotation = Math_SinS(this->actor.shape.rot.y);
this->cosRotation = Math_CosS(this->actor.shape.rot.y);
this->unk_150 = D_06000C20;
this->dList = gDodongosCavernRock3DL;
func_808B5934(this);
return true;
@ -220,7 +221,7 @@ s32 func_808B4E58(BgSpot16Bombstone* this, GlobalContext* globalctx) {
actor->shape.rot.y = D_808B5DD8[actor->params][8];
actor->shape.rot.z = D_808B5DD8[actor->params][9];
this->unk_150 = D_060009E0;
this->dList = D_060009E0;
this->bombiwaBankIndex = Object_GetIndex(&globalctx->objectCtx, OBJECT_BOMBIWA);
if (this->bombiwaBankIndex < 0) {
@ -298,8 +299,6 @@ void func_808B5240(BgSpot16Bombstone* this, GlobalContext* globalCtx) {
if (1) {}
// for(;this->unk_158 < ARRAY_COUNTU(D_808B5EB0); this->unk_158++)
while (true) {
if ((u32)this->unk_158 >= ARRAY_COUNTU(D_808B5EB0) || this->unk_154 < D_808B5EB0[this->unk_158][0]) {
break;
@ -547,11 +546,11 @@ void BgSpot16Bombstone_Draw(Actor* thisx, GlobalContext* globalCtx) {
if (this->actor.params == 0xFF) {
// The boulder is intact
gSPDisplayList(POLY_OPA_DISP++, this->unk_150);
gSPDisplayList(POLY_OPA_DISP++, this->dList);
} else {
// The boulder is debris
gSPSegment(POLY_OPA_DISP++, 0x06, globalCtx->objectCtx.status[this->bombiwaBankIndex].segment);
gSPDisplayList(POLY_OPA_DISP++, this->unk_150);
gSPDisplayList(POLY_OPA_DISP++, this->dList);
}
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_spot16_bombstone.c", 1274);

View File

@ -11,7 +11,7 @@ typedef void (*BgSpot16BombstoneActionFunc)(struct BgSpot16Bombstone*, GlobalCon
typedef struct BgSpot16Bombstone {
/* 0x0000 */ Actor actor;
/* 0x014C */ BgSpot16BombstoneActionFunc actionFunc;
/* 0x0150 */ Gfx* unk_150;
/* 0x0150 */ Gfx* dList;
/* 0x0154 */ s16 unk_154;
/* 0x0156 */ s16 switchFlag;
/* 0x0158 */ s16 unk_158;

View File

@ -12,6 +12,7 @@
#include "objects/object_goma/object_goma.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#include "objects/object_hidan_objects/object_hidan_objects.h"
#include "objects/object_jya_door/object_jya_door.h"
#include "objects/object_mizu_objects/object_mizu_objects.h"
#define FLAGS 0x00000010
@ -57,7 +58,7 @@ typedef struct {
u8 index2;
} ShutterObjectInfo;
static ShutterObjectInfo D_809980F0[] = {
static ShutterObjectInfo sObjectInfo[] = {
{ OBJECT_GND, 4, 4 },
{ OBJECT_GOMA, 5, 5 },
{ OBJECT_YDAN_OBJECTS, 0, 1 },
@ -86,14 +87,14 @@ typedef struct {
/* 0x000B */ u8 f;
} ShutterInfo;
static ShutterInfo D_80998134[] = {
static ShutterInfo sShutterInfo[] = {
{ gDTDungeonDoor1DL, gDoorMetalBarsDL, 130, 12, 20, 15 },
{ gDTDungeonDoor2DL, gDoorMetalBarsDL, 130, 12, 20, 15 },
{ 0x060000C0, 0x060001F0, 240, 14, 70, 15 },
{ 0x06000590, 0x06006460, 0, 110, 50, 15 },
{ gPhantomGanonBarsDL, NULL, 130, 12, 50, 15 },
{ gGohmaDoorDL, NULL, 130, 12, 50, 15 },
{ 0x06000100, 0x060001F0, 240, 14, 50, 15 },
{ gSpiritDoorDL, gJyaDoorMetalBarsDL, 240, 14, 50, 15 },
{ 0x060010C0, NULL, 130, 12, 50, 15 },
{ gDungeonDoorDL, gDoorMetalBarsDL, 130, 12, 20, 15 },
{ gFireTempleDoorFrontDL, gDoorMetalBarsDL, 130, 12, 20, 15 },
@ -125,7 +126,7 @@ typedef struct {
u8 index;
} ShutterSceneInfo;
static ShutterSceneInfo D_80998240[] = {
static ShutterSceneInfo sSceneInfo[] = {
{ SCENE_YDAN, 0x02 }, { SCENE_DDAN, 0x03 }, { SCENE_DDAN_BOSS, 0x03 },
{ SCENE_BDAN, 0x04 }, { SCENE_BMORI1, 0x05 }, { SCENE_HIDAN, 0x08 },
{ SCENE_GANON, 0x09 }, { SCENE_GANON_BOSS, 0x09 }, { SCENE_JYASINZOU, 0x0A },
@ -168,7 +169,7 @@ s32 DoorShutter_SetupDoor(DoorShutter* this, GlobalContext* globalCtx) {
TransitionActorEntry* transitionEntry = &globalCtx->transitionActorList[(u16)this->dyna.actor.params >> 0xA];
s8 frontRoom = transitionEntry->sides[0].room;
s32 doorType = this->doorType;
ShutterObjectInfo* temp_t0 = &D_809980F0[this->unk_16B];
ShutterObjectInfo* temp_t0 = &sObjectInfo[this->unk_16B];
if (doorType != SHUTTER_KEY_LOCKED) {
if (frontRoom == transitionEntry->sides[1].room) {
@ -224,7 +225,7 @@ void DoorShutter_Init(Actor* thisx, GlobalContext* globalCtx) {
if (phi_a3 < 0) {
ShutterSceneInfo* phi_v1;
for (phi_v1 = &D_80998240[0], i = 0; i < ARRAY_COUNT(D_80998240) - 1; i++, phi_v1++) {
for (phi_v1 = &sSceneInfo[0], i = 0; i < ARRAY_COUNT(sSceneInfo) - 1; i++, phi_v1++) {
if (globalCtx2->sceneNum == phi_v1->sceneNum) {
break;
}
@ -242,7 +243,8 @@ void DoorShutter_Init(Actor* thisx, GlobalContext* globalCtx) {
} else {
this->dyna.actor.room = -1;
}
if (this->requiredObjBankIndex = objectIndex = Object_GetIndex(&globalCtx2->objectCtx, D_809980F0[phi_a3].objectId),
if (this->requiredObjBankIndex = objectIndex =
Object_GetIndex(&globalCtx2->objectCtx, sObjectInfo[phi_a3].objectId),
(s8)objectIndex < 0) {
Actor_Kill(&this->dyna.actor);
return;
@ -283,7 +285,7 @@ void DoorShutter_SetupType(DoorShutter* this, GlobalContext* globalCtx) {
CollisionHeader* colHeader = NULL;
Actor_SetObjectDependency(globalCtx, &this->dyna.actor);
this->unk_16C = D_809980F0[this->unk_16B].index1;
this->unk_16C = sObjectInfo[this->unk_16B].index1;
CollisionHeader_GetVirtual((this->doorType == SHUTTER_GOHMA_BLOCK) ? &gGohmaDoorCol : &gPhantomGanonBarsCol,
&colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
@ -323,7 +325,7 @@ s32 func_809968D4(DoorShutter* this, GlobalContext* globalCtx) {
Player* player = PLAYER;
if (!Player_InCsMode(globalCtx)) {
ShutterInfo* temp_v1 = &D_80998134[this->unk_16C];
ShutterInfo* temp_v1 = &sShutterInfo[this->unk_16C];
f32 temp_f2 = func_80996840(globalCtx, this, (this->unk_16C != 3) ? 0.0f : 80.0f, temp_v1->e, temp_v1->f);
if (fabsf(temp_f2) < 50.0f) {
@ -683,7 +685,7 @@ void DoorShutter_Draw(Actor* thisx, GlobalContext* globalCtx) {
//! from drawing until initialization is complete. However if the required object is the same as the
//! object dependency listed in init vars (gameplay_keep in this case), the check will pass even though
//! initialization has not completed. When this happens, it will try to draw the display list of the
//! first entry in `D_80998134`, which will likely crash the game.
//! first entry in `sShutterInfo`, which will likely crash the game.
//! This only matters in very specific scenarios, when the door is unculled on the first possible frame
//! after spawning. It will try to draw without having run update yet.
//!
@ -693,7 +695,7 @@ void DoorShutter_Draw(Actor* thisx, GlobalContext* globalCtx) {
if (this->dyna.actor.objBankIndex == this->requiredObjBankIndex &&
(this->unk_16B == 0 || func_80997A34(this, globalCtx) != 0)) {
s32 pad[2];
ShutterInfo* sp70 = &D_80998134[this->unk_16C];
ShutterInfo* sp70 = &sShutterInfo[this->unk_16C];
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_door_shutter.c", 2048);

View File

@ -1,4 +1,5 @@
#include "z_door_warp1.h"
#include "objects/object_warp1/object_warp1.h"
#define FLAGS 0x00000000
@ -9,10 +10,6 @@ void DoorWarp1_Destroy(Actor* thisx, GlobalContext* globalCtx);
void DoorWarp1_Update(Actor* thisx, GlobalContext* globalCtx);
void DoorWarp1_Draw(Actor* thisx, GlobalContext* globalCtx);
extern UNK_TYPE D_060001A0;
extern UNK_TYPE D_06001374;
extern UNK_TYPE D_06002CA8;
/*
const ActorInit Door_Warp1_InitVars = {
ACTOR_DOOR_WARP1,

View File

@ -1,4 +1,5 @@
#include "z_en_cs.h"
#include "objects/object_cs/object_cs.h"
#include "objects/object_link_child/object_link_child.h"
#define FLAGS 0x00000009
@ -16,8 +17,6 @@ void EnCs_Wait(EnCs* this, GlobalContext* globalCtx);
s32 EnCs_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx);
void EnCs_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx);
extern FlexSkeletonHeader D_06008540; // Graveyard boy skeleton
const ActorInit En_Cs_InitVars = {
ACTOR_EN_CS,
ACTORCAT_NPC,
@ -52,13 +51,46 @@ static ColliderCylinderInit sCylinderInit = {
static CollisionCheckInfoInit2 sColChkInfoInit2 = { 0, 0, 0, 0, MASS_IMMOVABLE };
static DamageTable sDamageTable = { 0 };
static DamageTable sDamageTable[] = {
/* Deku nut */ DMG_ENTRY(0, 0x0),
/* Deku stick */ DMG_ENTRY(0, 0x0),
/* Slingshot */ DMG_ENTRY(0, 0x0),
/* Explosive */ DMG_ENTRY(0, 0x0),
/* Boomerang */ DMG_ENTRY(0, 0x0),
/* Normal arrow */ DMG_ENTRY(0, 0x0),
/* Hammer swing */ DMG_ENTRY(0, 0x0),
/* Hookshot */ DMG_ENTRY(0, 0x0),
/* Kokiri sword */ DMG_ENTRY(0, 0x0),
/* Master sword */ DMG_ENTRY(0, 0x0),
/* Giant's Knife */ DMG_ENTRY(0, 0x0),
/* Fire arrow */ DMG_ENTRY(0, 0x0),
/* Ice arrow */ DMG_ENTRY(0, 0x0),
/* Light arrow */ DMG_ENTRY(0, 0x0),
/* Unk arrow 1 */ DMG_ENTRY(0, 0x0),
/* Unk arrow 2 */ DMG_ENTRY(0, 0x0),
/* Unk arrow 3 */ DMG_ENTRY(0, 0x0),
/* Fire magic */ DMG_ENTRY(0, 0x0),
/* Ice magic */ DMG_ENTRY(0, 0x0),
/* Light magic */ DMG_ENTRY(0, 0x0),
/* Shield */ DMG_ENTRY(0, 0x0),
/* Mirror Ray */ DMG_ENTRY(0, 0x0),
/* Kokiri spin */ DMG_ENTRY(0, 0x0),
/* Giant spin */ DMG_ENTRY(0, 0x0),
/* Master spin */ DMG_ENTRY(0, 0x0),
/* Kokiri jump */ DMG_ENTRY(0, 0x0),
/* Giant jump */ DMG_ENTRY(0, 0x0),
/* Master jump */ DMG_ENTRY(0, 0x0),
/* Unknown 1 */ DMG_ENTRY(0, 0x0),
/* Unblockable */ DMG_ENTRY(0, 0x0),
/* Hammer jump */ DMG_ENTRY(0, 0x0),
/* Unknown 2 */ DMG_ENTRY(0, 0x0),
};
static struct_D_80AA1678 sAnimations[] = {
{ 0x06000700, 1.0f, ANIMMODE_ONCE, -10.0f },
{ 0x06000E10, 1.0f, ANIMMODE_ONCE, -10.0f },
{ 0x06001588, 1.0f, ANIMMODE_ONCE, -10.0f },
{ 0x0600195C, 1.0f, ANIMMODE_ONCE, -10.0f },
{ &gGraveyardKidWalkAnim, 1.0f, ANIMMODE_ONCE, -10.0f },
{ &gGraveyardKidSwingStickUpAnim, 1.0f, ANIMMODE_ONCE, -10.0f },
{ &gGraveyardKidGrabStickTwoHandsAnim, 1.0f, ANIMMODE_ONCE, -10.0f },
{ &gGraveyardKidIdleAnim, 1.0f, ANIMMODE_ONCE, -10.0f },
};
void EnCs_SetAnimFromIndex(EnCs* this, s32 animIndex, s32* currentAnimIndex) {
@ -94,12 +126,12 @@ void EnCs_Init(Actor* thisx, GlobalContext* globalCtx) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 19.0f);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06008540, NULL, this->jointTable, this->morphTable, 16);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gGraveyardKidSkel, NULL, this->jointTable, this->morphTable, 16);
Collider_InitCylinder(globalCtx, &this->collider);
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit2);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, sDamageTable, &sColChkInfoInit2);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4);
Animation_Change(&this->skelAnime, sAnimations[0].animation, 1.0f, 0.0f,
@ -416,7 +448,11 @@ void EnCs_Update(Actor* thisx, GlobalContext* globalCtx) {
}
void EnCs_Draw(Actor* thisx, GlobalContext* globalCtx) {
static u64* eyeTextures[] = { 0x06002130, 0x06002930, 0x06003130 };
static u64* eyeTextures[] = {
gGraveyardKidEyesOpenTex,
gGraveyardKidEyesHalfTex,
gGraveyardKidEyesClosedTex,
};
EnCs* this = THIS;
s32 pad;

View File

@ -382,17 +382,6 @@ D_060003C0 = 0x060003C0;
D_060030A0 = 0x060030A0;
D_06003158 = 0x06003158;
// z_bg_haka_megane
D_06001250 = 0x06001250;
D_06001830 = 0x06001830;
D_06001AB8 = 0x06001AB8;
D_06004330 = 0x06004330;
D_060044D0 = 0x060044D0;
D_06004780 = 0x06004780;
D_06004940 = 0x06004940;
D_06004B00 = 0x06004B00;
D_06004CC0 = 0x06004CC0;
// z_bg_haka_meganebg
D_06000118 = 0x06000118;
D_06005334 = 0x06005334;
@ -1055,10 +1044,6 @@ D_06001000 = 0x06001000;
D_060011B8 = 0x060011B8;
D_06001040 = 0x06001040;
// z_bg_haka_water
D_06001E50 = 0x06001E50;
D_06002010 = 0x06002010;
// z_en_yukabyun
D_06000A60 = 0x06000A60;
D_06000970 = 0x06000970;
@ -1274,10 +1259,6 @@ D_06010E10 = 0x06010E10;
D_060131C4 = 0x060131C4;
D_0600A938 = 0x0600A938;
// z_bg_haka_huta
D_060006B0 = 0x060006B0;
D_06000870 = 0x06000870;
// z_bg_haka_sgami
D_0600BF20 = 0x0600BF20;
D_060021F0 = 0x060021F0;
@ -1290,10 +1271,8 @@ D_0600E910 = 0x0600E910;
D_0600ED7C = 0x0600ED7C;
// z_bg_haka_zou
D_06000A10 = 0x06000A10;
D_06005E30 = 0x06005E30;
D_06006F70 = 0x06006F70;
D_06000C2C = 0x06000C2C;
// z_bg_ice_objects
D_06000190 = 0x06000190;
@ -1637,11 +1616,6 @@ D_06005CB0 = 0x06005CB0;
// z_door_killer
D_06001BC8 = 0x06001BC8;
// z_door_warp1
D_060001A0 = 0x060001A0;
D_06001374 = 0x06001374;
D_06002CA8 = 0x06002CA8;
// z_efc_erupc
D_06001720 = 0x06001720;
D_06002570 = 0x06002570;
@ -1699,7 +1673,6 @@ D_060021A0 = 0x060021A0;
D_06002250 = 0x06002250;
// z_en_cs
D_06008540 = 0x06008540;
D_0602AF70 = 0x0602AF70;
// z_en_daiku_kakariko