1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-14 05:19:36 +00:00

Decompile most of ovl_En_Horse_Ganon (#108)

* Work on horse ganon

* Match destroy, init matches but need mv data -> .c

* Match EnHorseGanon_Draw and func_80A68E14

* Move some data to .c

* Decomp func_80A68870

* EnHorseGanon_Update nearly matches

* func_80A68FA8 and func_80A686A8 match

* Fix EnHorseGanon_Init, start on func_80A68B20

* match func_80A68B20

* Migrate data but something doesn't match

* Matches with migrated data, fix most warnings

* Rename some variables, some clean up

* A little more cleanup before PR

* Move commented out code to NON_MATCHING blocks

* Run formatter and delete unused line, char -> u8

* Update function was matched
Also imports another type from z_skin.Seeing as they are somewhat
tentative I decided not to put them in any global file.

* Update src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c

Co-authored-by: Random <28494085+Random06457@users.noreply.github.com>

* PR Changes

* Apply suggestions from code review

Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com>

* PR Changes round 2

Co-authored-by: Random <28494085+Random06457@users.noreply.github.com>
Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com>
This commit is contained in:
Nathan Faltermeier 2020-05-04 10:43:04 -05:00 committed by GitHub
parent 10d45ed7ea
commit a65554d586
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 307 additions and 791 deletions

View file

@ -1,22 +0,0 @@
glabel EnHorseGanon_Destroy
/* 00414 80A68A74 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00418 80A68A78 AFA40018 */ sw $a0, 0x0018($sp)
/* 0041C 80A68A7C AFA5001C */ sw $a1, 0x001C($sp)
/* 00420 80A68A80 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00424 80A68A84 8FA50018 */ lw $a1, 0x0018($sp)
/* 00428 80A68A88 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0042C 80A68A8C 0C029A22 */ jal func_800A6888
/* 00430 80A68A90 24A50154 */ addiu $a1, $a1, 0x0154 ## $a1 = 00000154
/* 00434 80A68A94 8FA50018 */ lw $a1, 0x0018($sp)
/* 00438 80A68A98 8FA4001C */ lw $a0, 0x001C($sp)
/* 0043C 80A68A9C 0C0170EB */ jal Collider_DestroyCylinder
/* 00440 80A68AA0 24A501FC */ addiu $a1, $a1, 0x01FC ## $a1 = 000001FC
/* 00444 80A68AA4 8FA50018 */ lw $a1, 0x0018($sp)
/* 00448 80A68AA8 8FA4001C */ lw $a0, 0x001C($sp)
/* 0044C 80A68AAC 0C016F32 */ jal Collider_DestroyJntSph
/* 00450 80A68AB0 24A50248 */ addiu $a1, $a1, 0x0248 ## $a1 = 00000248
/* 00454 80A68AB4 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00458 80A68AB8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 0045C 80A68ABC 03E00008 */ jr $ra
/* 00460 80A68AC0 00000000 */ nop

View file

@ -1,24 +0,0 @@
glabel EnHorseGanon_Draw
/* 00AD4 80A69134 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00AD8 80A69138 AFBF001C */ sw $ra, 0x001C($sp)
/* 00ADC 80A6913C AFA40020 */ sw $a0, 0x0020($sp)
/* 00AE0 80A69140 0C29A385 */ jal func_80A68E14
/* 00AE4 80A69144 AFA50024 */ sw $a1, 0x0024($sp)
/* 00AE8 80A69148 8FAE0024 */ lw $t6, 0x0024($sp)
/* 00AEC 80A6914C 0C024F46 */ jal func_80093D18
/* 00AF0 80A69150 8DC40000 */ lw $a0, 0x0000($t6) ## 00000000
/* 00AF4 80A69154 8FA40020 */ lw $a0, 0x0020($sp)
/* 00AF8 80A69158 3C0780A7 */ lui $a3, %hi(func_80A68FA8) ## $a3 = 80A70000
/* 00AFC 80A6915C 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
/* 00B00 80A69160 AFAF0010 */ sw $t7, 0x0010($sp)
/* 00B04 80A69164 24E78FA8 */ addiu $a3, $a3, %lo(func_80A68FA8) ## $a3 = 80A68FA8
/* 00B08 80A69168 8FA50024 */ lw $a1, 0x0024($sp)
/* 00B0C 80A6916C 0C0298CC */ jal func_800A6330
/* 00B10 80A69170 24860154 */ addiu $a2, $a0, 0x0154 ## $a2 = 00000154
/* 00B14 80A69174 8FBF001C */ lw $ra, 0x001C($sp)
/* 00B18 80A69178 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00B1C 80A6917C 03E00008 */ jr $ra
/* 00B20 80A69180 00000000 */ nop
/* 00B24 80A69184 00000000 */ nop
/* 00B28 80A69188 00000000 */ nop
/* 00B2C 80A6918C 00000000 */ nop

View file

@ -1,88 +0,0 @@
glabel EnHorseGanon_Init
/* 002CC 80A6892C 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 002D0 80A68930 AFB10020 */ sw $s1, 0x0020($sp)
/* 002D4 80A68934 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 002D8 80A68938 AFBF0024 */ sw $ra, 0x0024($sp)
/* 002DC 80A6893C AFB0001C */ sw $s0, 0x001C($sp)
/* 002E0 80A68940 3C0580A7 */ lui $a1, %hi(D_80A692C0) ## $a1 = 80A70000
/* 002E4 80A68944 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 002E8 80A68948 0C01E037 */ jal Actor_ProcessInitChain
/* 002EC 80A6894C 24A592C0 */ addiu $a1, $a1, %lo(D_80A692C0) ## $a1 = 80A692C0
/* 002F0 80A68950 3C053C3C */ lui $a1, 0x3C3C ## $a1 = 3C3C0000
/* 002F4 80A68954 34A56A7F */ ori $a1, $a1, 0x6A7F ## $a1 = 3C3C6A7F
/* 002F8 80A68958 0C00B58B */ jal Actor_SetScale
/* 002FC 80A6895C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00300 80A68960 3C01C060 */ lui $at, 0xC060 ## $at = C0600000
/* 00304 80A68964 44812000 */ mtc1 $at, $f4 ## $f4 = -3.50
/* 00308 80A68968 3C068003 */ lui $a2, %hi(ActorShadow_DrawFunc_Squiggly)
/* 0030C 80A6896C 24C6B644 */ addiu $a2, %lo(ActorShadow_DrawFunc_Squiggly)
/* 00310 80A68970 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4
/* 00314 80A68974 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000
/* 00318 80A68978 3C0741A0 */ lui $a3, 0x41A0 ## $a3 = 41A00000
/* 0031C 80A6897C 0C00AC78 */ jal ActorShape_Init
/* 00320 80A68980 E604006C */ swc1 $f4, 0x006C($s0) ## 0000006C
/* 00324 80A68984 8E0E0028 */ lw $t6, 0x0028($s0) ## 00000028
/* 00328 80A68988 3C01428C */ lui $at, 0x428C ## $at = 428C0000
/* 0032C 80A6898C 8E0F0024 */ lw $t7, 0x0024($s0) ## 00000024
/* 00330 80A68990 AE0E003C */ sw $t6, 0x003C($s0) ## 0000003C
/* 00334 80A68994 C608003C */ lwc1 $f8, 0x003C($s0) ## 0000003C
/* 00338 80A68998 44815000 */ mtc1 $at, $f10 ## $f10 = 70.00
/* 0033C 80A6899C AE0F0038 */ sw $t7, 0x0038($s0) ## 00000038
/* 00340 80A689A0 44803000 */ mtc1 $zero, $f6 ## $f6 = 0.00
/* 00344 80A689A4 460A4400 */ add.s $f16, $f8, $f10
/* 00348 80A689A8 8E0F002C */ lw $t7, 0x002C($s0) ## 0000002C
/* 0034C 80A689AC 3C060601 */ lui $a2, 0x0601 ## $a2 = 06010000
/* 00350 80A689B0 3C070600 */ lui $a3, 0x0600 ## $a3 = 06000000
/* 00354 80A689B4 AE00014C */ sw $zero, 0x014C($s0) ## 0000014C
/* 00358 80A689B8 E610003C */ swc1 $f16, 0x003C($s0) ## 0000003C
/* 0035C 80A689BC 24E74AA4 */ addiu $a3, $a3, 0x4AA4 ## $a3 = 06004AA4
/* 00360 80A689C0 24C68668 */ addiu $a2, $a2, 0x8668 ## $a2 = 06008668
/* 00364 80A689C4 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00368 80A689C8 26050154 */ addiu $a1, $s0, 0x0154 ## $a1 = 00000154
/* 0036C 80A689CC E6060068 */ swc1 $f6, 0x0068($s0) ## 00000068
/* 00370 80A689D0 0C02998F */ jal func_800A663C
/* 00374 80A689D4 AE0F0040 */ sw $t7, 0x0040($s0) ## 00000040
/* 00378 80A689D8 AE000150 */ sw $zero, 0x0150($s0) ## 00000150
/* 0037C 80A689DC 3C0580A7 */ lui $a1, %hi(D_80A691B0) ## $a1 = 80A70000
/* 00380 80A689E0 8CA591B0 */ lw $a1, %lo(D_80A691B0)($a1)
/* 00384 80A689E4 0C02947A */ jal SkelAnime_ChangeAnimDefaultStop
/* 00388 80A689E8 260401A0 */ addiu $a0, $s0, 0x01A0 ## $a0 = 000001A0
/* 0038C 80A689EC 260501FC */ addiu $a1, $s0, 0x01FC ## $a1 = 000001FC
/* 00390 80A689F0 AFA50028 */ sw $a1, 0x0028($sp)
/* 00394 80A689F4 0C0170D9 */ jal Collider_InitCylinder
/* 00398 80A689F8 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 0039C 80A689FC 3C0780A7 */ lui $a3, %hi(D_80A691E0) ## $a3 = 80A70000
/* 003A0 80A68A00 8FA50028 */ lw $a1, 0x0028($sp)
/* 003A4 80A68A04 24E791E0 */ addiu $a3, $a3, %lo(D_80A691E0) ## $a3 = 80A691E0
/* 003A8 80A68A08 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 003AC 80A68A0C 0C01712B */ jal Collider_SetCylinder
/* 003B0 80A68A10 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 003B4 80A68A14 26050248 */ addiu $a1, $s0, 0x0248 ## $a1 = 00000248
/* 003B8 80A68A18 AFA50028 */ sw $a1, 0x0028($sp)
/* 003BC 80A68A1C 0C016EFE */ jal Collider_InitJntSph
/* 003C0 80A68A20 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 003C4 80A68A24 3C0780A7 */ lui $a3, %hi(D_80A69230) ## $a3 = 80A70000
/* 003C8 80A68A28 26180268 */ addiu $t8, $s0, 0x0268 ## $t8 = 00000268
/* 003CC 80A68A2C 8FA50028 */ lw $a1, 0x0028($sp)
/* 003D0 80A68A30 AFB80010 */ sw $t8, 0x0010($sp)
/* 003D4 80A68A34 24E79230 */ addiu $a3, $a3, %lo(D_80A69230) ## $a3 = 80A69230
/* 003D8 80A68A38 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 003DC 80A68A3C 0C017014 */ jal Collider_SetJntSph
/* 003E0 80A68A40 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 003E4 80A68A44 3C0680A7 */ lui $a2, %hi(D_80A69240) ## $a2 = 80A70000
/* 003E8 80A68A48 24C69240 */ addiu $a2, $a2, %lo(D_80A69240) ## $a2 = 80A69240
/* 003EC 80A68A4C 26040098 */ addiu $a0, $s0, 0x0098 ## $a0 = 00000098
/* 003F0 80A68A50 0C0187B5 */ jal func_80061ED4
/* 003F4 80A68A54 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 003F8 80A68A58 0C29A2B1 */ jal func_80A68AC4
/* 003FC 80A68A5C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00400 80A68A60 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00404 80A68A64 8FB0001C */ lw $s0, 0x001C($sp)
/* 00408 80A68A68 8FB10020 */ lw $s1, 0x0020($sp)
/* 0040C 80A68A6C 03E00008 */ jr $ra
/* 00410 80A68A70 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000

View file

@ -1,55 +0,0 @@
glabel EnHorseGanon_Update
/* 0087C 80A68EDC 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 00880 80A68EE0 AFB00020 */ sw $s0, 0x0020($sp)
/* 00884 80A68EE4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00888 80A68EE8 AFBF0024 */ sw $ra, 0x0024($sp)
/* 0088C 80A68EEC AFA5003C */ sw $a1, 0x003C($sp)
/* 00890 80A68EF0 8E0E014C */ lw $t6, 0x014C($s0) ## 0000014C
/* 00894 80A68EF4 3C1980A7 */ lui $t9, %hi(D_80A692C4) ## $t9 = 80A70000
/* 00898 80A68EF8 000E7880 */ sll $t7, $t6, 2
/* 0089C 80A68EFC 032FC821 */ addu $t9, $t9, $t7
/* 008A0 80A68F00 8F3992C4 */ lw $t9, %lo(D_80A692C4)($t9)
/* 008A4 80A68F04 0320F809 */ jalr $ra, $t9
/* 008A8 80A68F08 00000000 */ nop
/* 008AC 80A68F0C 0C00B638 */ jal Actor_MoveForward
/* 008B0 80A68F10 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 008B4 80A68F14 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
/* 008B8 80A68F18 44812000 */ mtc1 $at, $f4 ## $f4 = 100.00
/* 008BC 80A68F1C 2418001D */ addiu $t8, $zero, 0x001D ## $t8 = 0000001D
/* 008C0 80A68F20 AFB80014 */ sw $t8, 0x0014($sp)
/* 008C4 80A68F24 8FA4003C */ lw $a0, 0x003C($sp)
/* 008C8 80A68F28 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 008CC 80A68F2C 3C0641A0 */ lui $a2, 0x41A0 ## $a2 = 41A00000
/* 008D0 80A68F30 3C07425C */ lui $a3, 0x425C ## $a3 = 425C0000
/* 008D4 80A68F34 0C00B92D */ jal func_8002E4B4
/* 008D8 80A68F38 E7A40010 */ swc1 $f4, 0x0010($sp)
/* 008DC 80A68F3C 8E080028 */ lw $t0, 0x0028($s0) ## 00000028
/* 008E0 80A68F40 3C01428C */ lui $at, 0x428C ## $at = 428C0000
/* 008E4 80A68F44 8E090024 */ lw $t1, 0x0024($s0) ## 00000024
/* 008E8 80A68F48 AE08003C */ sw $t0, 0x003C($s0) ## 0000003C
/* 008EC 80A68F4C C606003C */ lwc1 $f6, 0x003C($s0) ## 0000003C
/* 008F0 80A68F50 44814000 */ mtc1 $at, $f8 ## $f8 = 70.00
/* 008F4 80A68F54 AE090038 */ sw $t1, 0x0038($s0) ## 00000038
/* 008F8 80A68F58 8E09002C */ lw $t1, 0x002C($s0) ## 0000002C
/* 008FC 80A68F5C 46083280 */ add.s $f10, $f6, $f8
/* 00900 80A68F60 260601FC */ addiu $a2, $s0, 0x01FC ## $a2 = 000001FC
/* 00904 80A68F64 AE090040 */ sw $t1, 0x0040($s0) ## 00000040
/* 00908 80A68F68 00C02825 */ or $a1, $a2, $zero ## $a1 = 000001FC
/* 0090C 80A68F6C E60A003C */ swc1 $f10, 0x003C($s0) ## 0000003C
/* 00910 80A68F70 AFA6002C */ sw $a2, 0x002C($sp)
/* 00914 80A68F74 0C0189B7 */ jal Collider_CylinderUpdate
/* 00918 80A68F78 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0091C 80A68F7C 8FA4003C */ lw $a0, 0x003C($sp)
/* 00920 80A68F80 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 00924 80A68F84 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 00928 80A68F88 8FA6002C */ lw $a2, 0x002C($sp)
/* 0092C 80A68F8C 0C017713 */ jal CollisionCheck_SetOC
## CollisionCheck_setOT
/* 00930 80A68F90 00812821 */ addu $a1, $a0, $at
/* 00934 80A68F94 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00938 80A68F98 8FB00020 */ lw $s0, 0x0020($sp)
/* 0093C 80A68F9C 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 00940 80A68FA0 03E00008 */ jr $ra
/* 00944 80A68FA4 00000000 */ nop

View file

@ -1,19 +0,0 @@
glabel func_80A68660
/* 00000 80A68660 000570C0 */ sll $t6, $a1, 3
/* 00004 80A68664 008E1021 */ addu $v0, $a0, $t6
/* 00008 80A68668 844F0000 */ lh $t7, 0x0000($v0) ## 00000000
/* 0000C 80A6866C 448F2000 */ mtc1 $t7, $f4 ## $f4 = 0.00
/* 00010 80A68670 00000000 */ nop
/* 00014 80A68674 468021A0 */ cvt.s.w $f6, $f4
/* 00018 80A68678 E4C60000 */ swc1 $f6, 0x0000($a2) ## 00000000
/* 0001C 80A6867C 84580002 */ lh $t8, 0x0002($v0) ## 00000002
/* 00020 80A68680 44984000 */ mtc1 $t8, $f8 ## $f8 = 0.00
/* 00024 80A68684 00000000 */ nop
/* 00028 80A68688 468042A0 */ cvt.s.w $f10, $f8
/* 0002C 80A6868C E4CA0004 */ swc1 $f10, 0x0004($a2) ## 00000004
/* 00030 80A68690 84590004 */ lh $t9, 0x0004($v0) ## 00000004
/* 00034 80A68694 44998000 */ mtc1 $t9, $f16 ## $f16 = 0.00
/* 00038 80A68698 00000000 */ nop
/* 0003C 80A6869C 468084A0 */ cvt.s.w $f18, $f16
/* 00040 80A686A0 03E00008 */ jr $ra
/* 00044 80A686A4 E4D20008 */ swc1 $f18, 0x0008($a2) ## 00000008

View file

@ -1,126 +0,0 @@
glabel func_80A686A8
/* 00048 80A686A8 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 0004C 80A686AC AFB00018 */ sw $s0, 0x0018($sp)
/* 00050 80A686B0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00054 80A686B4 AFBF001C */ sw $ra, 0x001C($sp)
/* 00058 80A686B8 AFA5003C */ sw $a1, 0x003C($sp)
/* 0005C 80A686BC 3C0480A7 */ lui $a0, %hi(D_80A69248) ## $a0 = 80A70000
/* 00060 80A686C0 24849248 */ addiu $a0, $a0, %lo(D_80A69248) ## $a0 = 80A69248
/* 00064 80A686C4 8E0501EC */ lw $a1, 0x01EC($s0) ## 000001EC
/* 00068 80A686C8 0C29A198 */ jal func_80A68660
/* 0006C 80A686CC 27A60028 */ addiu $a2, $sp, 0x0028 ## $a2 = FFFFFFF0
/* 00070 80A686D0 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
/* 00074 80A686D4 AFA50020 */ sw $a1, 0x0020($sp)
/* 00078 80A686D8 0C032D9E */ jal Math3D_Vec3f_DistXYZ
/* 0007C 80A686DC 27A40028 */ addiu $a0, $sp, 0x0028 ## $a0 = FFFFFFF0
/* 00080 80A686E0 3C0143C8 */ lui $at, 0x43C8 ## $at = 43C80000
/* 00084 80A686E4 44812000 */ mtc1 $at, $f4 ## $f4 = 400.00
/* 00088 80A686E8 00000000 */ nop
/* 0008C 80A686EC 4604003E */ c.le.s $f0, $f4
/* 00090 80A686F0 00000000 */ nop
/* 00094 80A686F4 4502000D */ bc1fl .L80A6872C
/* 00098 80A686F8 8FA40020 */ lw $a0, 0x0020($sp)
/* 0009C 80A686FC 8E0E01EC */ lw $t6, 0x01EC($s0) ## 000001EC
/* 000A0 80A68700 3C0480A7 */ lui $a0, %hi(D_80A69248) ## $a0 = 80A70000
/* 000A4 80A68704 24849248 */ addiu $a0, $a0, %lo(D_80A69248) ## $a0 = 80A69248
/* 000A8 80A68708 25CF0001 */ addiu $t7, $t6, 0x0001 ## $t7 = 00000001
/* 000AC 80A6870C 29E1000E */ slti $at, $t7, 0x000E
/* 000B0 80A68710 14200005 */ bne $at, $zero, .L80A68728
/* 000B4 80A68714 AE0F01EC */ sw $t7, 0x01EC($s0) ## 000001EC
/* 000B8 80A68718 AE0001EC */ sw $zero, 0x01EC($s0) ## 000001EC
/* 000BC 80A6871C 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 000C0 80A68720 0C29A198 */ jal func_80A68660
/* 000C4 80A68724 27A60028 */ addiu $a2, $sp, 0x0028 ## $a2 = FFFFFFF0
.L80A68728:
/* 000C8 80A68728 8FA40020 */ lw $a0, 0x0020($sp)
.L80A6872C:
/* 000CC 80A6872C 0C01E01A */ jal Math_Vec3f_Yaw
/* 000D0 80A68730 27A50028 */ addiu $a1, $sp, 0x0028 ## $a1 = FFFFFFF0
/* 000D4 80A68734 86030032 */ lh $v1, 0x0032($s0) ## 00000032
/* 000D8 80A68738 00432023 */ subu $a0, $v0, $v1
/* 000DC 80A6873C 00042400 */ sll $a0, $a0, 16
/* 000E0 80A68740 00042403 */ sra $a0, $a0, 16
/* 000E4 80A68744 2881012D */ slti $at, $a0, 0x012D
/* 000E8 80A68748 14200003 */ bne $at, $zero, .L80A68758
/* 000EC 80A6874C 2479012C */ addiu $t9, $v1, 0x012C ## $t9 = 0000012C
/* 000F0 80A68750 10000008 */ beq $zero, $zero, .L80A68774
/* 000F4 80A68754 A6190032 */ sh $t9, 0x0032($s0) ## 00000032
.L80A68758:
/* 000F8 80A68758 2881FED4 */ slti $at, $a0, 0xFED4
/* 000FC 80A6875C 10200004 */ beq $at, $zero, .L80A68770
/* 00100 80A68760 00644821 */ addu $t1, $v1, $a0
/* 00104 80A68764 2468FED4 */ addiu $t0, $v1, 0xFED4 ## $t0 = FFFFFED4
/* 00108 80A68768 10000002 */ beq $zero, $zero, .L80A68774
/* 0010C 80A6876C A6080032 */ sh $t0, 0x0032($s0) ## 00000032
.L80A68770:
/* 00110 80A68770 A6090032 */ sh $t1, 0x0032($s0) ## 00000032
.L80A68774:
/* 00114 80A68774 860A0032 */ lh $t2, 0x0032($s0) ## 00000032
/* 00118 80A68778 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0011C 80A6877C A60A00B6 */ sh $t2, 0x00B6($s0) ## 000000B6
/* 00120 80A68780 8FAB003C */ lw $t3, 0x003C($sp)
/* 00124 80A68784 0C00B6E3 */ jal func_8002DB8C
/* 00128 80A68788 8D651C44 */ lw $a1, 0x1C44($t3) ## 00001C44
/* 0012C 80A6878C 3C014396 */ lui $at, 0x4396 ## $at = 43960000
/* 00130 80A68790 44813000 */ mtc1 $at, $f6 ## $f6 = 300.00
/* 00134 80A68794 3C014140 */ lui $at, 0x4140 ## $at = 41400000
/* 00138 80A68798 4606003E */ c.le.s $f0, $f6
/* 0013C 80A6879C 00000000 */ nop
/* 00140 80A687A0 45020014 */ bc1fl .L80A687F4
/* 00144 80A687A4 8E0C01EC */ lw $t4, 0x01EC($s0) ## 000001EC
/* 00148 80A687A8 C6000068 */ lwc1 $f0, 0x0068($s0) ## 00000068
/* 0014C 80A687AC 44814000 */ mtc1 $at, $f8 ## $f8 = 12.00
/* 00150 80A687B0 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 00154 80A687B4 4608003C */ c.lt.s $f0, $f8
/* 00158 80A687B8 00000000 */ nop
/* 0015C 80A687BC 45020008 */ bc1fl .L80A687E0
/* 00160 80A687C0 44819000 */ mtc1 $at, $f18 ## $f18 = 1.00
/* 00164 80A687C4 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 00168 80A687C8 44815000 */ mtc1 $at, $f10 ## $f10 = 1.00
/* 0016C 80A687CC 00000000 */ nop
/* 00170 80A687D0 460A0400 */ add.s $f16, $f0, $f10
/* 00174 80A687D4 10000021 */ beq $zero, $zero, .L80A6885C
/* 00178 80A687D8 E6100068 */ swc1 $f16, 0x0068($s0) ## 00000068
/* 0017C 80A687DC 44819000 */ mtc1 $at, $f18 ## $f18 = 1.00
.L80A687E0:
/* 00180 80A687E0 00000000 */ nop
/* 00184 80A687E4 46120101 */ sub.s $f4, $f0, $f18
/* 00188 80A687E8 1000001C */ beq $zero, $zero, .L80A6885C
/* 0018C 80A687EC E6040068 */ swc1 $f4, 0x0068($s0) ## 00000068
/* 00190 80A687F0 8E0C01EC */ lw $t4, 0x01EC($s0) ## 000001EC
.L80A687F4:
/* 00194 80A687F4 3C0E80A7 */ lui $t6, %hi(D_80A6924E) ## $t6 = 80A70000
/* 00198 80A687F8 C6000068 */ lwc1 $f0, 0x0068($s0) ## 00000068
/* 0019C 80A687FC 000C68C0 */ sll $t5, $t4, 3
/* 001A0 80A68800 01CD7021 */ addu $t6, $t6, $t5
/* 001A4 80A68804 91CE924E */ lbu $t6, %lo(D_80A6924E)($t6)
/* 001A8 80A68808 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
/* 001AC 80A6880C 448E3000 */ mtc1 $t6, $f6 ## $f6 = -0.00
/* 001B0 80A68810 05C10004 */ bgez $t6, .L80A68824
/* 001B4 80A68814 46803220 */ cvt.s.w $f8, $f6
/* 001B8 80A68818 44815000 */ mtc1 $at, $f10 ## $f10 = 4294967296.00
/* 001BC 80A6881C 00000000 */ nop
/* 001C0 80A68820 460A4200 */ add.s $f8, $f8, $f10
.L80A68824:
/* 001C4 80A68824 4608003C */ c.lt.s $f0, $f8
/* 001C8 80A68828 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 001CC 80A6882C 45020008 */ bc1fl .L80A68850
/* 001D0 80A68830 44812000 */ mtc1 $at, $f4 ## $f4 = 0.50
/* 001D4 80A68834 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 001D8 80A68838 44818000 */ mtc1 $at, $f16 ## $f16 = 0.50
/* 001DC 80A6883C 00000000 */ nop
/* 001E0 80A68840 46100480 */ add.s $f18, $f0, $f16
/* 001E4 80A68844 10000005 */ beq $zero, $zero, .L80A6885C
/* 001E8 80A68848 E6120068 */ swc1 $f18, 0x0068($s0) ## 00000068
/* 001EC 80A6884C 44812000 */ mtc1 $at, $f4 ## $f4 = 0.50
.L80A68850:
/* 001F0 80A68850 00000000 */ nop
/* 001F4 80A68854 46040181 */ sub.s $f6, $f0, $f4
/* 001F8 80A68858 E6060068 */ swc1 $f6, 0x0068($s0) ## 00000068
.L80A6885C:
/* 001FC 80A6885C 8FBF001C */ lw $ra, 0x001C($sp)
/* 00200 80A68860 8FB00018 */ lw $s0, 0x0018($sp)
/* 00204 80A68864 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 00208 80A68868 03E00008 */ jr $ra
/* 0020C 80A6886C 00000000 */ nop

View file

@ -1,12 +0,0 @@
glabel func_80A68AC4
/* 00464 80A68AC4 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00468 80A68AC8 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0046C 80A68ACC AC80014C */ sw $zero, 0x014C($a0) ## 0000014C
/* 00470 80A68AD0 3C0580A7 */ lui $a1, %hi(D_80A691C0) ## $a1 = 80A70000
/* 00474 80A68AD4 8CA591C0 */ lw $a1, %lo(D_80A691C0)($a1)
/* 00478 80A68AD8 0C0294BE */ jal SkelAnime_ChangeAnimDefaultRepeat
/* 0047C 80A68ADC 248401A0 */ addiu $a0, $a0, 0x01A0 ## $a0 = 000001A0
/* 00480 80A68AE0 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00484 80A68AE4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00488 80A68AE8 03E00008 */ jr $ra
/* 0048C 80A68AEC 00000000 */ nop

View file

@ -1,14 +0,0 @@
glabel func_80A68AF0
/* 00490 80A68AF0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00494 80A68AF4 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 00498 80A68AF8 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0049C 80A68AFC AFA40018 */ sw $a0, 0x0018($sp)
/* 004A0 80A68B00 AFA5001C */ sw $a1, 0x001C($sp)
/* 004A4 80A68B04 248401A0 */ addiu $a0, $a0, 0x01A0 ## $a0 = 000001A0
/* 004A8 80A68B08 0C02927F */ jal SkelAnime_FrameUpdateMatrix
/* 004AC 80A68B0C E484FEC8 */ swc1 $f4, -0x0138($a0) ## 00000068
/* 004B0 80A68B10 8FBF0014 */ lw $ra, 0x0014($sp)
/* 004B4 80A68B14 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 004B8 80A68B18 03E00008 */ jr $ra
/* 004BC 80A68B1C 00000000 */ nop

View file

@ -1,182 +0,0 @@
glabel func_80A68B20
/* 004C0 80A68B20 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 004C4 80A68B24 AFBF002C */ sw $ra, 0x002C($sp)
/* 004C8 80A68B28 AFB00028 */ sw $s0, 0x0028($sp)
/* 004CC 80A68B2C 3C014040 */ lui $at, 0x4040 ## $at = 40400000
/* 004D0 80A68B30 44811000 */ mtc1 $at, $f2 ## $f2 = 3.00
/* 004D4 80A68B34 C4800068 */ lwc1 $f0, 0x0068($a0) ## 00000068
/* 004D8 80A68B38 240E0001 */ addiu $t6, $zero, 0x0001 ## $t6 = 00000001
/* 004DC 80A68B3C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 004E0 80A68B40 4602003E */ c.le.s $f0, $f2
/* 004E4 80A68B44 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
/* 004E8 80A68B48 AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C
/* 004EC 80A68B4C 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 004F0 80A68B50 45000009 */ bc1f .L80A68B78
/* 004F4 80A68B54 3C0140C0 */ lui $at, 0x40C0 ## $at = 40C00000
/* 004F8 80A68B58 8E0F0150 */ lw $t7, 0x0150($s0) ## 00000150
/* 004FC 80A68B5C 24040002 */ addiu $a0, $zero, 0x0002 ## $a0 = 00000002
/* 00500 80A68B60 24050003 */ addiu $a1, $zero, 0x0003 ## $a1 = 00000003
/* 00504 80A68B64 108F0002 */ beq $a0, $t7, .L80A68B70
/* 00508 80A68B68 00000000 */ nop
/* 0050C 80A68B6C 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
.L80A68B70:
/* 00510 80A68B70 10000016 */ beq $zero, $zero, .L80A68BCC
/* 00514 80A68B74 AE040150 */ sw $a0, 0x0150($s0) ## 00000150
.L80A68B78:
/* 00518 80A68B78 44812000 */ mtc1 $at, $f4 ## $f4 = 6.00
/* 0051C 80A68B7C 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 00520 80A68B80 24050003 */ addiu $a1, $zero, 0x0003 ## $a1 = 00000003
/* 00524 80A68B84 4604003E */ c.le.s $f0, $f4
/* 00528 80A68B88 24040002 */ addiu $a0, $zero, 0x0002 ## $a0 = 00000002
/* 0052C 80A68B8C 4502000A */ bc1fl .L80A68BB8
/* 00530 80A68B90 8E190150 */ lw $t9, 0x0150($s0) ## 00000150
/* 00534 80A68B94 8E180150 */ lw $t8, 0x0150($s0) ## 00000150
/* 00538 80A68B98 24050003 */ addiu $a1, $zero, 0x0003 ## $a1 = 00000003
/* 0053C 80A68B9C 24040002 */ addiu $a0, $zero, 0x0002 ## $a0 = 00000002
/* 00540 80A68BA0 10B80002 */ beq $a1, $t8, .L80A68BAC
/* 00544 80A68BA4 00000000 */ nop
/* 00548 80A68BA8 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
.L80A68BAC:
/* 0054C 80A68BAC 10000007 */ beq $zero, $zero, .L80A68BCC
/* 00550 80A68BB0 AE050150 */ sw $a1, 0x0150($s0) ## 00000150
/* 00554 80A68BB4 8E190150 */ lw $t9, 0x0150($s0) ## 00000150
.L80A68BB8:
/* 00558 80A68BB8 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 0055C 80A68BBC 50D90003 */ beql $a2, $t9, .L80A68BCC
/* 00560 80A68BC0 AE060150 */ sw $a2, 0x0150($s0) ## 00000150
/* 00564 80A68BC4 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
/* 00568 80A68BC8 AE060150 */ sw $a2, 0x0150($s0) ## 00000150
.L80A68BCC:
/* 0056C 80A68BCC 8E020150 */ lw $v0, 0x0150($s0) ## 00000150
/* 00570 80A68BD0 14820005 */ bne $a0, $v0, .L80A68BE8
/* 00574 80A68BD4 00000000 */ nop
/* 00578 80A68BD8 C6060068 */ lwc1 $f6, 0x0068($s0) ## 00000068
/* 0057C 80A68BDC 46023203 */ div.s $f8, $f6, $f2
/* 00580 80A68BE0 1000002D */ beq $zero, $zero, .L80A68C98
/* 00584 80A68BE4 E7A80030 */ swc1 $f8, 0x0030($sp)
.L80A68BE8:
/* 00588 80A68BE8 14A20013 */ bne $a1, $v0, .L80A68C38
/* 0058C 80A68BEC 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 00590 80A68BF0 C60A0068 */ lwc1 $f10, 0x0068($s0) ## 00000068
/* 00594 80A68BF4 44818000 */ mtc1 $at, $f16 ## $f16 = 5.00
/* 00598 80A68BF8 3C078013 */ lui $a3, %hi(D_801333E0)
/* 0059C 80A68BFC 3C088013 */ lui $t0, %hi(D_801333E8)
/* 005A0 80A68C00 46105483 */ div.s $f18, $f10, $f16
/* 005A4 80A68C04 24E733E0 */ addiu $a3, %lo(D_801333E0)
/* 005A8 80A68C08 250833E8 */ addiu $t0, %lo(D_801333E8)
/* 005AC 80A68C0C AFA80014 */ sw $t0, 0x0014($sp)
/* 005B0 80A68C10 AFA70010 */ sw $a3, 0x0010($sp)
/* 005B4 80A68C14 AFA30034 */ sw $v1, 0x0034($sp)
/* 005B8 80A68C18 24042804 */ addiu $a0, $zero, 0x2804 ## $a0 = 00002804
/* 005BC 80A68C1C 260500E4 */ addiu $a1, $s0, 0x00E4 ## $a1 = 000000E4
/* 005C0 80A68C20 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 005C4 80A68C24 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 005C8 80A68C28 E7B20030 */ swc1 $f18, 0x0030($sp)
/* 005CC 80A68C2C 8FA30034 */ lw $v1, 0x0034($sp)
/* 005D0 80A68C30 10000019 */ beq $zero, $zero, .L80A68C98
/* 005D4 80A68C34 8E020150 */ lw $v0, 0x0150($s0) ## 00000150
.L80A68C38:
/* 005D8 80A68C38 14C20014 */ bne $a2, $v0, .L80A68C8C
/* 005DC 80A68C3C 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 005E0 80A68C40 3C0140E0 */ lui $at, 0x40E0 ## $at = 40E00000
/* 005E4 80A68C44 44813000 */ mtc1 $at, $f6 ## $f6 = 7.00
/* 005E8 80A68C48 C6040068 */ lwc1 $f4, 0x0068($s0) ## 00000068
/* 005EC 80A68C4C 3C078013 */ lui $a3, %hi(D_801333E0)
/* 005F0 80A68C50 3C098013 */ lui $t1, %hi(D_801333E8)
/* 005F4 80A68C54 46062203 */ div.s $f8, $f4, $f6
/* 005F8 80A68C58 24E733E0 */ addiu $a3, %lo(D_801333E0)
/* 005FC 80A68C5C 252933E8 */ addiu $t1, %lo(D_801333E8)
/* 00600 80A68C60 AFA90014 */ sw $t1, 0x0014($sp)
/* 00604 80A68C64 AFA70010 */ sw $a3, 0x0010($sp)
/* 00608 80A68C68 AFA30034 */ sw $v1, 0x0034($sp)
/* 0060C 80A68C6C 24042804 */ addiu $a0, $zero, 0x2804 ## $a0 = 00002804
/* 00610 80A68C70 260500E4 */ addiu $a1, $s0, 0x00E4 ## $a1 = 000000E4
/* 00614 80A68C74 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 00618 80A68C78 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 0061C 80A68C7C E7A80030 */ swc1 $f8, 0x0030($sp)
/* 00620 80A68C80 8FA30034 */ lw $v1, 0x0034($sp)
/* 00624 80A68C84 10000004 */ beq $zero, $zero, .L80A68C98
/* 00628 80A68C88 8E020150 */ lw $v0, 0x0150($s0) ## 00000150
.L80A68C8C:
/* 0062C 80A68C8C 44815000 */ mtc1 $at, $f10 ## $f10 = 0.00
/* 00630 80A68C90 00000000 */ nop
/* 00634 80A68C94 E7AA0030 */ swc1 $f10, 0x0030($sp)
.L80A68C98:
/* 00638 80A68C98 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 0063C 80A68C9C 14610022 */ bne $v1, $at, .L80A68D28
/* 00640 80A68CA0 00026080 */ sll $t4, $v0, 2
/* 00644 80A68CA4 00025080 */ sll $t2, $v0, 2
/* 00648 80A68CA8 3C0480A7 */ lui $a0, %hi(D_80A691B0) ## $a0 = 80A70000
/* 0064C 80A68CAC 008A2021 */ addu $a0, $a0, $t2
/* 00650 80A68CB0 0C028800 */ jal SkelAnime_GetFrameCount
/* 00654 80A68CB4 8C8491B0 */ lw $a0, %lo(D_80A691B0)($a0)
/* 00658 80A68CB8 8E030150 */ lw $v1, 0x0150($s0) ## 00000150
/* 0065C 80A68CBC 3C0180A7 */ lui $at, %hi(D_80A691C8) ## $at = 80A70000
/* 00660 80A68CC0 C7B20030 */ lwc1 $f18, 0x0030($sp)
/* 00664 80A68CC4 00031880 */ sll $v1, $v1, 2
/* 00668 80A68CC8 00230821 */ addu $at, $at, $v1
/* 0066C 80A68CCC C43091C8 */ lwc1 $f16, %lo(D_80A691C8)($at)
/* 00670 80A68CD0 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000
/* 00674 80A68CD4 44813000 */ mtc1 $at, $f6 ## $f6 = 1.50
/* 00678 80A68CD8 46128102 */ mul.s $f4, $f16, $f18
/* 0067C 80A68CDC 44825000 */ mtc1 $v0, $f10 ## $f10 = 0.00
/* 00680 80A68CE0 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00684 80A68CE4 3C01C040 */ lui $at, 0xC040 ## $at = C0400000
/* 00688 80A68CE8 44819000 */ mtc1 $at, $f18 ## $f18 = -3.00
/* 0068C 80A68CEC 3C0580A7 */ lui $a1, %hi(D_80A691B0) ## $a1 = 80A70000
/* 00690 80A68CF0 46805420 */ cvt.s.w $f16, $f10
/* 00694 80A68CF4 46062202 */ mul.s $f8, $f4, $f6
/* 00698 80A68CF8 00A32821 */ addu $a1, $a1, $v1
/* 0069C 80A68CFC 240B0002 */ addiu $t3, $zero, 0x0002 ## $t3 = 00000002
/* 006A0 80A68D00 44070000 */ mfc1 $a3, $f0
/* 006A4 80A68D04 AFAB0014 */ sw $t3, 0x0014($sp)
/* 006A8 80A68D08 8CA591B0 */ lw $a1, %lo(D_80A691B0)($a1)
/* 006AC 80A68D0C E7B00010 */ swc1 $f16, 0x0010($sp)
/* 006B0 80A68D10 44064000 */ mfc1 $a2, $f8
/* 006B4 80A68D14 260401A0 */ addiu $a0, $s0, 0x01A0 ## $a0 = 000001A0
/* 006B8 80A68D18 0C029468 */ jal SkelAnime_ChangeAnim
/* 006BC 80A68D1C E7B20018 */ swc1 $f18, 0x0018($sp)
/* 006C0 80A68D20 1000001F */ beq $zero, $zero, .L80A68DA0
/* 006C4 80A68D24 8FBF002C */ lw $ra, 0x002C($sp)
.L80A68D28:
/* 006C8 80A68D28 3C0480A7 */ lui $a0, %hi(D_80A691B0) ## $a0 = 80A70000
/* 006CC 80A68D2C 008C2021 */ addu $a0, $a0, $t4
/* 006D0 80A68D30 0C028800 */ jal SkelAnime_GetFrameCount
/* 006D4 80A68D34 8C8491B0 */ lw $a0, %lo(D_80A691B0)($a0)
/* 006D8 80A68D38 8E030150 */ lw $v1, 0x0150($s0) ## 00000150
/* 006DC 80A68D3C 3C0180A7 */ lui $at, %hi(D_80A691C8) ## $at = 80A70000
/* 006E0 80A68D40 C7A60030 */ lwc1 $f6, 0x0030($sp)
/* 006E4 80A68D44 00031880 */ sll $v1, $v1, 2
/* 006E8 80A68D48 00230821 */ addu $at, $at, $v1
/* 006EC 80A68D4C C42491C8 */ lwc1 $f4, %lo(D_80A691C8)($at)
/* 006F0 80A68D50 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000
/* 006F4 80A68D54 44815000 */ mtc1 $at, $f10 ## $f10 = 1.50
/* 006F8 80A68D58 46062202 */ mul.s $f8, $f4, $f6
/* 006FC 80A68D5C 44829000 */ mtc1 $v0, $f18 ## $f18 = 0.00
/* 00700 80A68D60 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00704 80A68D64 3C0580A7 */ lui $a1, %hi(D_80A691B0) ## $a1 = 80A70000
/* 00708 80A68D68 00A32821 */ addu $a1, $a1, $v1
/* 0070C 80A68D6C 240D0002 */ addiu $t5, $zero, 0x0002 ## $t5 = 00000002
/* 00710 80A68D70 46809120 */ cvt.s.w $f4, $f18
/* 00714 80A68D74 460A4402 */ mul.s $f16, $f8, $f10
/* 00718 80A68D78 44070000 */ mfc1 $a3, $f0
/* 0071C 80A68D7C AFAD0014 */ sw $t5, 0x0014($sp)
/* 00720 80A68D80 8CA591B0 */ lw $a1, %lo(D_80A691B0)($a1)
/* 00724 80A68D84 260401A0 */ addiu $a0, $s0, 0x01A0 ## $a0 = 000001A0
/* 00728 80A68D88 E7A40010 */ swc1 $f4, 0x0010($sp)
/* 0072C 80A68D8C E7A00018 */ swc1 $f0, 0x0018($sp)
/* 00730 80A68D90 44068000 */ mfc1 $a2, $f16
/* 00734 80A68D94 0C029468 */ jal SkelAnime_ChangeAnim
/* 00738 80A68D98 00000000 */ nop
/* 0073C 80A68D9C 8FBF002C */ lw $ra, 0x002C($sp)
.L80A68DA0:
/* 00740 80A68DA0 8FB00028 */ lw $s0, 0x0028($sp)
/* 00744 80A68DA4 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 00748 80A68DA8 03E00008 */ jr $ra
/* 0074C 80A68DAC 00000000 */ nop

View file

@ -1,29 +0,0 @@
glabel func_80A68DB0
/* 00750 80A68DB0 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00754 80A68DB4 AFBF001C */ sw $ra, 0x001C($sp)
/* 00758 80A68DB8 AFB00018 */ sw $s0, 0x0018($sp)
/* 0075C 80A68DBC AFA50024 */ sw $a1, 0x0024($sp)
/* 00760 80A68DC0 8C8E0150 */ lw $t6, 0x0150($a0) ## 00000150
/* 00764 80A68DC4 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002
/* 00768 80A68DC8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0076C 80A68DCC 55C10004 */ bnel $t6, $at, .L80A68DE0
/* 00770 80A68DD0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00774 80A68DD4 0C29A21C */ jal func_80A68870
/* 00778 80A68DD8 00000000 */ nop
/* 0077C 80A68DDC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80A68DE0:
/* 00780 80A68DE0 0C29A1AA */ jal func_80A686A8
/* 00784 80A68DE4 8FA50024 */ lw $a1, 0x0024($sp)
/* 00788 80A68DE8 0C02927F */ jal SkelAnime_FrameUpdateMatrix
/* 0078C 80A68DEC 260401A0 */ addiu $a0, $s0, 0x01A0 ## $a0 = 000001A0
/* 00790 80A68DF0 50400004 */ beql $v0, $zero, .L80A68E04
/* 00794 80A68DF4 8FBF001C */ lw $ra, 0x001C($sp)
/* 00798 80A68DF8 0C29A2C8 */ jal func_80A68B20
/* 0079C 80A68DFC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 007A0 80A68E00 8FBF001C */ lw $ra, 0x001C($sp)
.L80A68E04:
/* 007A4 80A68E04 8FB00018 */ lw $s0, 0x0018($sp)
/* 007A8 80A68E08 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 007AC 80A68E0C 03E00008 */ jr $ra
/* 007B0 80A68E10 00000000 */ nop

View file

@ -1,58 +0,0 @@
.late_rodata
glabel D_80A692D0
.float 10430.378
.text
glabel func_80A68E14
/* 007B4 80A68E14 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
/* 007B8 80A68E18 AFB00018 */ sw $s0, 0x0018($sp)
/* 007BC 80A68E1C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 007C0 80A68E20 AFBF001C */ sw $ra, 0x001C($sp)
/* 007C4 80A68E24 AFA50044 */ sw $a1, 0x0044($sp)
/* 007C8 80A68E28 0C01DE1C */ jal Math_Sins
## sins?
/* 007CC 80A68E2C 848400B6 */ lh $a0, 0x00B6($a0) ## 000000B6
/* 007D0 80A68E30 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
/* 007D4 80A68E34 44812000 */ mtc1 $at, $f4 ## $f4 = 30.00
/* 007D8 80A68E38 C6080024 */ lwc1 $f8, 0x0024($s0) ## 00000024
/* 007DC 80A68E3C 3C014270 */ lui $at, 0x4270 ## $at = 42700000
/* 007E0 80A68E40 46040182 */ mul.s $f6, $f0, $f4
/* 007E4 80A68E44 44819000 */ mtc1 $at, $f18 ## $f18 = 60.00
/* 007E8 80A68E48 46083280 */ add.s $f10, $f6, $f8
/* 007EC 80A68E4C E7AA0028 */ swc1 $f10, 0x0028($sp)
/* 007F0 80A68E50 C6100028 */ lwc1 $f16, 0x0028($s0) ## 00000028
/* 007F4 80A68E54 46128100 */ add.s $f4, $f16, $f18
/* 007F8 80A68E58 E7A4002C */ swc1 $f4, 0x002C($sp)
/* 007FC 80A68E5C 0C01DE0D */ jal Math_Coss
## coss?
/* 00800 80A68E60 860400B6 */ lh $a0, 0x00B6($s0) ## 000000B6
/* 00804 80A68E64 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
/* 00808 80A68E68 44813000 */ mtc1 $at, $f6 ## $f6 = 30.00
/* 0080C 80A68E6C C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C
/* 00810 80A68E70 8FA40044 */ lw $a0, 0x0044($sp)
/* 00814 80A68E74 46060202 */ mul.s $f8, $f0, $f6
/* 00818 80A68E78 27A50038 */ addiu $a1, $sp, 0x0038 ## $a1 = FFFFFFF8
/* 0081C 80A68E7C 27A60024 */ addiu $a2, $sp, 0x0024 ## $a2 = FFFFFFE4
/* 00820 80A68E80 27A70028 */ addiu $a3, $sp, 0x0028 ## $a3 = FFFFFFE8
/* 00824 80A68E84 248407C0 */ addiu $a0, $a0, 0x07C0 ## $a0 = 000007C0
/* 00828 80A68E88 460A4400 */ add.s $f16, $f8, $f10
/* 0082C 80A68E8C 0C00F250 */ jal func_8003C940
/* 00830 80A68E90 E7B00030 */ swc1 $f16, 0x0030($sp)
/* 00834 80A68E94 C6120028 */ lwc1 $f18, 0x0028($s0) ## 00000028
/* 00838 80A68E98 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
/* 0083C 80A68E9C 44817000 */ mtc1 $at, $f14 ## $f14 = 30.00
/* 00840 80A68EA0 E60001F4 */ swc1 $f0, 0x01F4($s0) ## 000001F4
/* 00844 80A68EA4 0C03F494 */ jal Math_atan2f
/* 00848 80A68EA8 46009301 */ sub.s $f12, $f18, $f0
/* 0084C 80A68EAC 3C0180A7 */ lui $at, %hi(D_80A692D0) ## $at = 80A70000
/* 00850 80A68EB0 C42492D0 */ lwc1 $f4, %lo(D_80A692D0)($at)
/* 00854 80A68EB4 46040182 */ mul.s $f6, $f0, $f4
/* 00858 80A68EB8 4600320D */ trunc.w.s $f8, $f6
/* 0085C 80A68EBC 440F4000 */ mfc1 $t7, $f8
/* 00860 80A68EC0 00000000 */ nop
/* 00864 80A68EC4 A60F00B4 */ sh $t7, 0x00B4($s0) ## 000000B4
/* 00868 80A68EC8 8FBF001C */ lw $ra, 0x001C($sp)
/* 0086C 80A68ECC 8FB00018 */ lw $s0, 0x0018($sp)
/* 00870 80A68ED0 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000
/* 00874 80A68ED4 03E00008 */ jr $ra
/* 00878 80A68ED8 00000000 */ nop

View file

@ -1,103 +0,0 @@
glabel func_80A68FA8
/* 00948 80A68FA8 27BDFFA8 */ addiu $sp, $sp, 0xFFA8 ## $sp = FFFFFFA8
/* 0094C 80A68FAC AFBF002C */ sw $ra, 0x002C($sp)
/* 00950 80A68FB0 AFB50028 */ sw $s5, 0x0028($sp)
/* 00954 80A68FB4 AFB40024 */ sw $s4, 0x0024($sp)
/* 00958 80A68FB8 AFB30020 */ sw $s3, 0x0020($sp)
/* 0095C 80A68FBC AFB2001C */ sw $s2, 0x001C($sp)
/* 00960 80A68FC0 AFB10018 */ sw $s1, 0x0018($sp)
/* 00964 80A68FC4 AFB00014 */ sw $s0, 0x0014($sp)
/* 00968 80A68FC8 AFA5005C */ sw $a1, 0x005C($sp)
/* 0096C 80A68FCC 8C8E0260 */ lw $t6, 0x0260($a0) ## 00000260
/* 00970 80A68FD0 00808825 */ or $s1, $a0, $zero ## $s1 = 00000000
/* 00974 80A68FD4 00C09825 */ or $s3, $a2, $zero ## $s3 = 00000000
/* 00978 80A68FD8 19C00047 */ blez $t6, .L80A690F8
/* 0097C 80A68FDC 00009025 */ or $s2, $zero, $zero ## $s2 = 00000000
/* 00980 80A68FE0 00008025 */ or $s0, $zero, $zero ## $s0 = 00000000
/* 00984 80A68FE4 27B50040 */ addiu $s5, $sp, 0x0040 ## $s5 = FFFFFFE8
/* 00988 80A68FE8 27B4004C */ addiu $s4, $sp, 0x004C ## $s4 = FFFFFFF4
/* 0098C 80A68FEC 8E2F0264 */ lw $t7, 0x0264($s1) ## 00000264
.L80A68FF0:
/* 00990 80A68FF0 02602025 */ or $a0, $s3, $zero ## $a0 = 00000000
/* 00994 80A68FF4 02803025 */ or $a2, $s4, $zero ## $a2 = FFFFFFF4
/* 00998 80A68FF8 01F0C021 */ addu $t8, $t7, $s0
/* 0099C 80A68FFC 87190028 */ lh $t9, 0x0028($t8) ## 00000028
/* 009A0 80A69000 02A03825 */ or $a3, $s5, $zero ## $a3 = FFFFFFE8
/* 009A4 80A69004 44992000 */ mtc1 $t9, $f4 ## $f4 = 0.00
/* 009A8 80A69008 00000000 */ nop
/* 009AC 80A6900C 468021A0 */ cvt.s.w $f6, $f4
/* 009B0 80A69010 E7A6004C */ swc1 $f6, 0x004C($sp)
/* 009B4 80A69014 8E280264 */ lw $t0, 0x0264($s1) ## 00000264
/* 009B8 80A69018 01104821 */ addu $t1, $t0, $s0
/* 009BC 80A6901C 852A002A */ lh $t2, 0x002A($t1) ## 0000002A
/* 009C0 80A69020 448A4000 */ mtc1 $t2, $f8 ## $f8 = 0.00
/* 009C4 80A69024 00000000 */ nop
/* 009C8 80A69028 468042A0 */ cvt.s.w $f10, $f8
/* 009CC 80A6902C E7AA0050 */ swc1 $f10, 0x0050($sp)
/* 009D0 80A69030 8E2B0264 */ lw $t3, 0x0264($s1) ## 00000264
/* 009D4 80A69034 01706021 */ addu $t4, $t3, $s0
/* 009D8 80A69038 858D002C */ lh $t5, 0x002C($t4) ## 0000002C
/* 009DC 80A6903C 448D8000 */ mtc1 $t5, $f16 ## $f16 = 0.00
/* 009E0 80A69040 00000000 */ nop
/* 009E4 80A69044 468084A0 */ cvt.s.w $f18, $f16
/* 009E8 80A69048 E7B20054 */ swc1 $f18, 0x0054($sp)
/* 009EC 80A6904C 8E2E0264 */ lw $t6, 0x0264($s1) ## 00000264
/* 009F0 80A69050 01D07821 */ addu $t7, $t6, $s0
/* 009F4 80A69054 0C029902 */ jal func_800A6408
/* 009F8 80A69058 91E5003C */ lbu $a1, 0x003C($t7) ## 0000003C
/* 009FC 80A6905C C7A40040 */ lwc1 $f4, 0x0040($sp)
/* 00A00 80A69060 8E280264 */ lw $t0, 0x0264($s1) ## 00000264
/* 00A04 80A69064 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000001
/* 00A08 80A69068 4600218D */ trunc.w.s $f6, $f4
/* 00A0C 80A6906C 01104821 */ addu $t1, $t0, $s0
/* 00A10 80A69070 44193000 */ mfc1 $t9, $f6
/* 00A14 80A69074 00000000 */ nop
/* 00A18 80A69078 A5390030 */ sh $t9, 0x0030($t1) ## 00000030
/* 00A1C 80A6907C C7A80044 */ lwc1 $f8, 0x0044($sp)
/* 00A20 80A69080 8E2C0264 */ lw $t4, 0x0264($s1) ## 00000264
/* 00A24 80A69084 4600428D */ trunc.w.s $f10, $f8
/* 00A28 80A69088 01906821 */ addu $t5, $t4, $s0
/* 00A2C 80A6908C 440B5000 */ mfc1 $t3, $f10
/* 00A30 80A69090 00000000 */ nop
/* 00A34 80A69094 A5AB0032 */ sh $t3, 0x0032($t5) ## 00000032
/* 00A38 80A69098 C7B00048 */ lwc1 $f16, 0x0048($sp)
/* 00A3C 80A6909C 8E380264 */ lw $t8, 0x0264($s1) ## 00000264
/* 00A40 80A690A0 4600848D */ trunc.w.s $f18, $f16
/* 00A44 80A690A4 03104021 */ addu $t0, $t8, $s0
/* 00A48 80A690A8 440F9000 */ mfc1 $t7, $f18
/* 00A4C 80A690AC 00000000 */ nop
/* 00A50 80A690B0 A50F0034 */ sh $t7, 0x0034($t0) ## 00000034
/* 00A54 80A690B4 8E390264 */ lw $t9, 0x0264($s1) ## 00000264
/* 00A58 80A690B8 03301021 */ addu $v0, $t9, $s0
/* 00A5C 80A690BC 8449002E */ lh $t1, 0x002E($v0) ## 0000002E
/* 00A60 80A690C0 C4440038 */ lwc1 $f4, 0x0038($v0) ## 00000038
/* 00A64 80A690C4 26100040 */ addiu $s0, $s0, 0x0040 ## $s0 = 00000040
/* 00A68 80A690C8 44893000 */ mtc1 $t1, $f6 ## $f6 = 0.00
/* 00A6C 80A690CC 00000000 */ nop
/* 00A70 80A690D0 46803220 */ cvt.s.w $f8, $f6
/* 00A74 80A690D4 46082282 */ mul.s $f10, $f4, $f8
/* 00A78 80A690D8 4600540D */ trunc.w.s $f16, $f10
/* 00A7C 80A690DC 440C8000 */ mfc1 $t4, $f16
/* 00A80 80A690E0 00000000 */ nop
/* 00A84 80A690E4 A44C0036 */ sh $t4, 0x0036($v0) ## 00000036
/* 00A88 80A690E8 8E2B0260 */ lw $t3, 0x0260($s1) ## 00000260
/* 00A8C 80A690EC 024B082A */ slt $at, $s2, $t3
/* 00A90 80A690F0 5420FFBF */ bnel $at, $zero, .L80A68FF0
/* 00A94 80A690F4 8E2F0264 */ lw $t7, 0x0264($s1) ## 00000264
.L80A690F8:
/* 00A98 80A690F8 8FA4005C */ lw $a0, 0x005C($sp)
/* 00A9C 80A690FC 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 00AA0 80A69100 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 00AA4 80A69104 26260248 */ addiu $a2, $s1, 0x0248 ## $a2 = 00000248
/* 00AA8 80A69108 0C017713 */ jal CollisionCheck_SetOC
## CollisionCheck_setOT
/* 00AAC 80A6910C 00812821 */ addu $a1, $a0, $at
/* 00AB0 80A69110 8FBF002C */ lw $ra, 0x002C($sp)
/* 00AB4 80A69114 8FB00014 */ lw $s0, 0x0014($sp)
/* 00AB8 80A69118 8FB10018 */ lw $s1, 0x0018($sp)
/* 00ABC 80A6911C 8FB2001C */ lw $s2, 0x001C($sp)
/* 00AC0 80A69120 8FB30020 */ lw $s3, 0x0020($sp)
/* 00AC4 80A69124 8FB40024 */ lw $s4, 0x0024($sp)
/* 00AC8 80A69128 8FB50028 */ lw $s5, 0x0028($sp)
/* 00ACC 80A6912C 03E00008 */ jr $ra
/* 00AD0 80A69130 27BD0058 */ addiu $sp, $sp, 0x0058 ## $sp = 00000000

View file

@ -1,43 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .data
glabel En_Horse_Ganon_InitVars
.word 0x00420100, 0x00000010, 0x002D0000, 0x000002A8
.word EnHorseGanon_Init
.word EnHorseGanon_Destroy
.word EnHorseGanon_Update
.word EnHorseGanon_Draw
glabel D_80A691B0
.word 0x06004AA4, 0x06005264, 0x06005B78, 0x06002CE4
glabel D_80A691C0
.word 0x06002650, 0x06003858
glabel D_80A691C8
.word 0x3F2AAAAB, 0x3F2AAAAB, 0x3F800000, 0x3F800000, 0x3F800000, 0x3F2AAAAB
glabel D_80A691E0
.word 0x0A000039, 0x12010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00280064, 0x00000000, 0x00000000
glabel D_80A6920C
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x0D000000, 0x00000000, 0x00140064
glabel D_80A69230
.word 0x0A000939, 0x12000000, 0x00000001
.word D_80A6920C
glabel D_80A69240
.word 0x0A000023, 0x0064FE00
glabel D_80A69248
.byte 0x09, 0xB8, 0x01, 0x26, 0x0E, 0x2C
glabel D_80A6924E
.byte 0x07, 0x00, 0x0C, 0x11, 0x01, 0x7A, 0x12, 0x69, 0x07, 0x00, 0x06, 0x4E, 0xFE, 0xFB, 0x1D, 0xAC, 0x07, 0x00, 0x02, 0xF2, 0xFF, 0x45, 0x24, 0x4F, 0x07, 0x00, 0xF9, 0x6E, 0xFE, 0x0C, 0x31, 0x22, 0x07, 0x00, 0xF3, 0x28, 0xFE, 0x0C, 0x32, 0xD5, 0x07, 0x00, 0xEB, 0xEA, 0xFE, 0x5F, 0x2D, 0x6E, 0x07, 0x00, 0xE9, 0x5E, 0xFE, 0x27, 0x25, 0x65, 0x07, 0x00, 0xE5, 0x93, 0xFE, 0x0C, 0x20, 0xAC, 0x07, 0x00, 0xE6, 0x25, 0xFE, 0x77, 0x1B, 0x07, 0x07, 0x00, 0xEB, 0xB7, 0x00, 0x7C, 0x15, 0x39, 0x07, 0x00, 0xF4, 0x66, 0x00, 0x02, 0x11, 0xB9, 0x07, 0x00, 0xF4, 0x7B, 0xFF, 0xDD, 0x11, 0xAF, 0x07, 0x00, 0xF8, 0x8D, 0xFF, 0xD1, 0x0B, 0xA2, 0x07, 0x00
glabel D_80A692B8
.word 0x00000000, 0x00000010
glabel D_80A692C0
.word 0x30F804B0
glabel D_80A692C4
.word func_80A68AF0
.word func_80A68DB0
.word 0x00000000

View file

@ -1236,7 +1236,10 @@ void SkelAnime_Free(SkelAnime* skelAnime, GlobalContext* globalCtx);
// ? func_800A5E28(?); // ? func_800A5E28(?);
// ? func_800A5F60(?); // ? func_800A5F60(?);
// ? func_800A60D8(?); // ? func_800A60D8(?);
void func_800A6330(Actor* this, GlobalContext* globalCtx, PSkinAwb*, void* callback, s32);
// ? func_800A6460(?); // ? func_800A6460(?);
void func_800A663C(GlobalContext* globalCtx, PSkinAwb*, SkeletonHeader*, AnimationHeader*);
void func_800A6888(GlobalContext*, PSkinAwb*);
// ? func_800A698C(?); // ? func_800A698C(?);
// ? func_800A6AC4(?); // ? func_800A6AC4(?);
// ? func_800A6E10(?); // ? func_800A6E10(?);

View file

@ -1641,4 +1641,10 @@ typedef struct {
/* 0x10D */ u8 unk_10D; /* 0x10D */ u8 unk_10D;
} UnkRumbleStruct; // size = 0x10E } UnkRumbleStruct; // size = 0x10E
typedef struct {
char unk_00[0x48];
void* avbTbl;
SkelAnime skelAnime;
} PSkinAwb; // size = 0x90
#endif #endif

1
spec
View file

@ -2710,7 +2710,6 @@ endseg
beginseg beginseg
name "ovl_En_Horse_Ganon" name "ovl_En_Horse_Ganon"
include "build/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.o" include "build/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.o"
include "build/data/overlays/actors/z_en_horse_ganon.data.o"
include "build/data/overlays/actors/z_en_horse_ganon.reloc.o" include "build/data/overlays/actors/z_en_horse_ganon.reloc.o"
endseg endseg

View file

@ -13,7 +13,16 @@ void EnHorseGanon_Destroy(EnHorseGanon* this, GlobalContext* globalCtx);
void EnHorseGanon_Update(EnHorseGanon* this, GlobalContext* globalCtx); void EnHorseGanon_Update(EnHorseGanon* this, GlobalContext* globalCtx);
void EnHorseGanon_Draw(EnHorseGanon* this, GlobalContext* globalCtx); void EnHorseGanon_Draw(EnHorseGanon* this, GlobalContext* globalCtx);
/* void func_80A68660(unk_D_80A69248* data, s32 index, Vec3f* vec);
void func_80A686A8(EnHorseGanon* this, GlobalContext* globalCtx);
void func_80A68870(EnHorseGanon* this);
void func_80A68AC4(EnHorseGanon* this);
void func_80A68AF0(EnHorseGanon* this, GlobalContext* globalCtx);
void func_80A68B20(EnHorseGanon* this);
void func_80A68DB0(EnHorseGanon* this, GlobalContext* globalCtx);
void func_80A68E14(EnHorseGanon* this, GlobalContext* globalCtx);
void func_80A68FA8(EnHorseGanon* this, GlobalContext* globalCtx, ColliderJntSphItem* colliderSphereItem);
const ActorInit En_Horse_Ganon_InitVars = { const ActorInit En_Horse_Ganon_InitVars = {
ACTOR_EN_HORSE_GANON, ACTOR_EN_HORSE_GANON,
ACTORTYPE_BG, ACTORTYPE_BG,
@ -25,29 +34,278 @@ const ActorInit En_Horse_Ganon_InitVars = {
(ActorFunc)EnHorseGanon_Update, (ActorFunc)EnHorseGanon_Update,
(ActorFunc)EnHorseGanon_Draw, (ActorFunc)EnHorseGanon_Draw,
}; };
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68660.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A686A8.s") extern SkeletonHeader D_06008668;
extern AnimationHeader D_06004AA4;
extern AnimationHeader D_06005264;
extern AnimationHeader D_06005B78;
extern AnimationHeader D_06002CE4;
extern AnimationHeader D_06002650;
extern AnimationHeader D_06003858;
AnimationHeader* D_80A691B0[] = { &D_06004AA4, &D_06005264, &D_06005B78, &D_06002CE4 };
AnimationHeader* D_80A691C0[] = { &D_06002650, &D_06003858 };
static f32 animPlaybackSpeed[] = { 0.66666666f, 0.66666666f, 1.0f, 1.0f, 1.0f, 0.66666666f };
static ColliderCylinderInit cylinderInit = {
{ COLTYPE_UNK10, 0x00, 0x00, 0x39, 0x12, COLSHAPE_CYLINDER },
{ 0x00, { 0x00000000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, 0x00, 0x00, 0x01 },
{ 40, 100, 0, { 0, 0, 0 } },
};
static ColliderJntSphItemInit jntsphItemsInit[1] = {
{
{ 0x00, { 0x00000000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, 0x00, 0x00, 0x01 },
{ 13, { { 0, 0, 0 }, 20 }, 100 },
},
};
static ColliderJntSphInit jntsphInit = {
{ COLTYPE_UNK10, 0x00, 0x09, 0x39, 0x12, COLSHAPE_JNTSPH },
1,
jntsphItemsInit,
};
static CollisionCheckInfoInit collisionCheckInfoInit = {
0x0A,
0x0023,
0x0064,
0xFE,
};
unk_D_80A69248 D_80A69248[] = { { 0x09B8, 0x0126, 0x0E2C, 0x07 }, { 0x0C11, 0x017A, 0x1269, 0x07 },
{ 0x064E, 0xFEFB, 0x1DAC, 0x07 }, { 0x02F2, 0xFF45, 0x244F, 0x07 },
{ 0xF96E, 0xFE0C, 0x3122, 0x07 }, { 0xF328, 0xFE0C, 0x32D5, 0x07 },
{ 0xEBEA, 0xFE5F, 0x2D6E, 0x07 }, { 0xE95E, 0xFE27, 0x2565, 0x07 },
{ 0xE593, 0xFE0C, 0x20AC, 0x07 }, { 0xE625, 0xFE77, 0x1B07, 0x07 },
{ 0xEBB7, 0x007C, 0x1539, 0x07 }, { 0xF466, 0x0002, 0x11B9, 0x07 },
{ 0xF47B, 0xFFDD, 0x11AF, 0x07 }, { 0xF88D, 0xFFD1, 0x0BA2, 0x07 } };
s32 D_80A692B8[] = { 0, 0x00000010 };
static InitChainEntry initChain[] = {
ICHAIN_F32(unk_F8, 1200, ICHAIN_STOP),
};
static void (*actionFuncs[])(EnHorseGanon*, GlobalContext*) = { func_80A68AF0, func_80A68DB0, NULL };
const f32 D_80A692D0 = 10430.3779f;
void func_80A68660(unk_D_80A69248* data, s32 index, Vec3f* vec) {
vec->x = data[index].unk_0.x;
vec->y = data[index].unk_0.y;
vec->z = data[index].unk_0.z;
}
void func_80A686A8(EnHorseGanon* this, GlobalContext* globalCtx) {
Vec3f* tempPos;
Vec3f vec;
s16 y;
func_80A68660(D_80A69248, this->unk_1EC, &vec);
if (Math3D_Vec3f_DistXYZ(&vec, &this->actor.posRot.pos) <= 400.0f) {
this->unk_1EC += 1;
if (this->unk_1EC >= 14) {
this->unk_1EC = 0;
func_80A68660(D_80A69248, 0, &vec);
}
}
tempPos = &this->actor.posRot.pos;
y = Math_Vec3f_Yaw(tempPos, &vec) - this->actor.posRot.rot.y;
if (y >= 301) {
this->actor.posRot.rot.y += 300;
} else if (y < -300) {
this->actor.posRot.rot.y -= 300;
} else {
this->actor.posRot.rot.y += y;
}
this->actor.shape.rot.y = this->actor.posRot.rot.y;
if (func_8002DB8C(&this->actor, &PLAYER->actor) <= 300.0f) {
if (this->actor.speedXZ < 12.0f) {
this->actor.speedXZ += 1.0f;
} else {
this->actor.speedXZ -= 1.0f;
}
} else if (this->actor.speedXZ < D_80A69248[this->unk_1EC].unk_6) {
this->actor.speedXZ += 0.5f;
} else {
this->actor.speedXZ -= 0.5f;
}
}
#ifdef NON_MATCHING
// regalloc mismatch
void func_80A68870(EnHorseGanon* this) {
if (this->skin.skelAnime.animCurrentFrame > D_80A692B8[this->soundCount]) {
if (D_80A692B8[this->soundCount] != 0 || !(this->skin.skelAnime.animCurrentFrame > D_80A692B8[1])) {
Audio_PlaySoundGeneral(NA_SE_EV_HORSE_WALK, &this->actor.unk_E4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
this->soundCount += 1;
if (this->soundCount >= 2) {
this->soundCount = 0;
}
}
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68870.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68870.s")
#endif
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/EnHorseGanon_Init.s") void EnHorseGanon_Init(EnHorseGanon* this, GlobalContext* globalCtx) {
ColliderCylinder* colliderCylinder = &this->colliderCylinder;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/EnHorseGanon_Destroy.s") Actor_ProcessInitChain(&this->actor, initChain);
Actor_SetScale(&this->actor, 0.0115f);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68AC4.s") this->actor.gravity = -3.5f;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68AF0.s") ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFunc_Squiggly, 20.0f);
this->actor.speedXZ = 0.0f;
this->actor.posRot2.pos = this->actor.posRot.pos;
this->action = 0;
this->actor.posRot2.pos.y += 70.0f;
func_800A663C(globalCtx, &this->skin, &D_06008668, &D_06004AA4);
this->currentAnimation = 0;
SkelAnime_ChangeAnimDefaultStop(&this->skin.skelAnime, D_80A691B0[0]);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68B20.s") Collider_InitCylinder(globalCtx, colliderCylinder);
Collider_SetCylinder(globalCtx, colliderCylinder, &this->actor, &cylinderInit);
Collider_InitJntSph(globalCtx, &this->colliderSphere);
Collider_SetJntSph(globalCtx, &this->colliderSphere, &this->actor, &jntsphInit, &this->colliderSphereItem);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68DB0.s") func_80061ED4(&this->actor.colChkInfo, 0, &collisionCheckInfoInit);
func_80A68AC4(this);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68E14.s") void EnHorseGanon_Destroy(EnHorseGanon* this, GlobalContext* globalCtx) {
func_800A6888(globalCtx, &this->skin);
Collider_DestroyCylinder(globalCtx, &this->colliderCylinder);
Collider_DestroyJntSph(globalCtx, &this->colliderSphere);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/EnHorseGanon_Update.s") void func_80A68AC4(EnHorseGanon* this) {
this->action = 0;
SkelAnime_ChangeAnimDefaultRepeat(&this->skin.skelAnime, D_80A691C0[0]);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/func_80A68FA8.s") void func_80A68AF0(EnHorseGanon* this, GlobalContext* globalCtx) {
this->actor.speedXZ = 0.0f;
SkelAnime_FrameUpdateMatrix(&this->skin.skelAnime);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Horse_Ganon/EnHorseGanon_Draw.s") void func_80A68B20(EnHorseGanon* this) {
s32 animationChanged;
f32 sp30;
animationChanged = 0;
this->action = 1;
if (this->actor.speedXZ <= 3.0f) {
if (this->currentAnimation != 2) {
animationChanged = 1;
}
this->currentAnimation = 2;
} else if (this->actor.speedXZ <= 6.0f) {
if (this->currentAnimation != 3) {
animationChanged = 1;
}
this->currentAnimation = 3;
} else {
if (this->currentAnimation != 4) {
animationChanged = 1;
}
this->currentAnimation = 4;
}
if (this->currentAnimation == 2) {
sp30 = this->actor.speedXZ / 3.0f;
} else if (this->currentAnimation == 3) {
sp30 = this->actor.speedXZ / 5.0f;
Audio_PlaySoundGeneral(NA_SE_EV_HORSE_RUN, &this->actor.unk_E4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
} else if (this->currentAnimation == 4) {
sp30 = this->actor.speedXZ / 7.0f;
Audio_PlaySoundGeneral(NA_SE_EV_HORSE_RUN, &this->actor.unk_E4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
} else {
sp30 = 1.0f;
}
if (animationChanged == 1) {
SkelAnime_ChangeAnim(&this->skin.skelAnime, D_80A691B0[this->currentAnimation],
animPlaybackSpeed[this->currentAnimation] * sp30 * 1.5f, 0.0f,
SkelAnime_GetFrameCount(&D_80A691B0[this->currentAnimation]->genericHeader), 2, -3.0f);
} else {
SkelAnime_ChangeAnim(&this->skin.skelAnime, D_80A691B0[this->currentAnimation],
animPlaybackSpeed[this->currentAnimation] * sp30 * 1.5f, 0.0f,
SkelAnime_GetFrameCount(&D_80A691B0[this->currentAnimation]->genericHeader), 2, 0.0f);
}
}
void func_80A68DB0(EnHorseGanon* this, GlobalContext* globalCtx) {
if (this->currentAnimation == 2) {
func_80A68870(this);
}
func_80A686A8(this, globalCtx);
if (SkelAnime_FrameUpdateMatrix(&this->skin.skelAnime) != 0) {
func_80A68B20(this);
}
}
void func_80A68E14(EnHorseGanon* this, GlobalContext* globalCtx) {
u32 padding;
CollisionPoly* col;
f32 temp_ret;
Vec3f v;
s32 temp1;
v.x = Math_Sins(this->actor.shape.rot.y) * 30.0f + this->actor.posRot.pos.x;
v.y = this->actor.posRot.pos.y + 60.0f;
v.z = Math_Coss(this->actor.shape.rot.y) * 30.0f + this->actor.posRot.pos.z;
temp_ret = func_8003C940(&globalCtx->colCtx, &col, &temp1, &v);
this->unk_1F4 = temp_ret;
this->actor.shape.rot.x = D_80A692D0 * Math_atan2f(this->actor.posRot.pos.y - temp_ret, 30.0f);
}
void EnHorseGanon_Update(EnHorseGanon* this, GlobalContext* globalCtx) {
u32 padding[2];
actionFuncs[this->action](this, globalCtx);
Actor_MoveForward(&this->actor);
func_8002E4B4(globalCtx, &this->actor, 20.0f, 55.0f, 100.0f, 29);
this->actor.posRot2.pos = this->actor.posRot.pos;
this->actor.posRot2.pos.y += 70.0f;
Collider_CylinderUpdate(&this->actor, &this->colliderCylinder);
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->colliderCylinder.base);
}
void func_80A68FA8(EnHorseGanon* this, GlobalContext* globalCtx, ColliderJntSphItem* colliderSphereItem) {
Vec3f sp4C;
Vec3f sp40;
ColliderJntSphItem* temp_v0;
s32 index;
for (index = 0; index < this->colliderSphere.count; index += 1) {
sp4C.x = this->colliderSphere.list[index].dim.modelSphere.center.x;
sp4C.y = this->colliderSphere.list[index].dim.modelSphere.center.y;
sp4C.z = this->colliderSphere.list[index].dim.modelSphere.center.z;
func_800A6408(colliderSphereItem, this->colliderSphere.list[index].dim.joint, &sp4C, &sp40);
this->colliderSphere.list[index].dim.worldSphere.center.x = sp40.x;
this->colliderSphere.list[index].dim.worldSphere.center.y = sp40.y;
this->colliderSphere.list[index].dim.worldSphere.center.z = sp40.z;
temp_v0 = &this->colliderSphere.list[index];
temp_v0->dim.worldSphere.radius = temp_v0->dim.scale * temp_v0->dim.modelSphere.radius;
}
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->colliderSphere.base);
}
void EnHorseGanon_Draw(EnHorseGanon* this, GlobalContext* globalCtx) {
func_80A68E14(this, globalCtx);
func_80093D18(globalCtx->state.gfxCtx);
func_800A6330(&this->actor, globalCtx, &this->skin, func_80A68FA8, 1);
}

View file

@ -4,9 +4,25 @@
#include <ultra64.h> #include <ultra64.h>
#include <global.h> #include <global.h>
typedef struct {
/* 0x0 */ Vec3s unk_0;
/* 0x6 */ u8 unk_6;
} unk_D_80A69248; // size = 0x8
typedef struct { typedef struct {
/* 0x0000 */ Actor actor; /* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x15C]; /* 0x014C */ s32 action;
/* 0x0150 */ s32 currentAnimation;
/* 0x0154 */ PSkinAwb skin;
/* 0x01E4 */ u8 unk_1E4[0x04];
/* 0x01E8 */ s32 soundCount;
/* 0x01EC */ s32 unk_1EC;
/* 0x01F0 */ u8 unk_1F0[0x04];
/* 0x01F4 */ f32 unk_1F4;
/* 0x01F8 */ u8 unk_1F8[0x04];
/* 0x01FC */ ColliderCylinder colliderCylinder;
/* 0x0248 */ ColliderJntSph colliderSphere;
/* 0x0268 */ ColliderJntSphItem colliderSphereItem;
} EnHorseGanon; // size = 0x02A8 } EnHorseGanon; // size = 0x02A8
extern const ActorInit En_Horse_Ganon_InitVars; extern const ActorInit En_Horse_Ganon_InitVars;

View file

@ -520,3 +520,12 @@ D_060000F0 = 0x060000F0;
D_060067B8 = 0x060067B8; D_060067B8 = 0x060067B8;
D_060076EC = 0x060076EC; D_060076EC = 0x060076EC;
D_060070F0 = 0x060070F0; D_060070F0 = 0x060070F0;
// z_en_horse_ganon
D_06008668 = 0x06008668;
D_06004AA4 = 0x06004AA4;
D_06005264 = 0x06005264;
D_06005B78 = 0x06005B78;
D_06002CE4 = 0x06002CE4;
D_06002650 = 0x06002650;
D_06003858 = 0x06003858;