From 7a8e00e49d40a92275f53c878904977891c95ec7 Mon Sep 17 00:00:00 2001 From: emilybrooks Date: Thu, 1 Oct 2020 04:49:47 -0700 Subject: [PATCH] ovl_en_hs2 OK (#423) * Decompiled ovl_en_hs2 * Replaced skelAnime pointer with pad, changed some values to hex, replaced early return with else statment, removed unnecessary padding in the header, removed unneeded & on a function pointer * Replaced a tab with whitespace, removed address operator in front of ActorShadow_DrawFunc_Circle, moved vec3f inside the PostLimbDraw function * Changed 0xFFFE to ~1 --- .../actors/ovl_En_Hs2/EnHs2_Destroy.s | 12 -- .../overlays/actors/ovl_En_Hs2/EnHs2_Draw.s | 25 ---- .../overlays/actors/ovl_En_Hs2/EnHs2_Init.s | 71 ---------- .../overlays/actors/ovl_En_Hs2/EnHs2_Update.s | 102 ------------- .../actors/ovl_En_Hs2/func_80A6F0B4.s | 50 ------- .../actors/ovl_En_Hs2/func_80A6F164.s | 18 --- .../actors/ovl_En_Hs2/func_80A6F1A4.s | 21 --- .../actors/ovl_En_Hs2/func_80A6F358.s | 28 ---- .../actors/ovl_En_Hs2/func_80A6F390.s | 16 --- .../actors/ovl_En_Hs2/func_80A6F3C8.s | 8 -- .../actors/ovl_En_Hs2/func_80A6F3E0.s | 18 --- data/overlays/actors/z_en_hs2.data.s | 22 --- data/overlays/actors/z_en_hs2.reloc.s | 13 -- spec | 3 +- src/overlays/actors/ovl_En_Hs2/z_en_hs2.c | 134 ++++++++++++++++-- src/overlays/actors/ovl_En_Hs2/z_en_hs2.h | 11 +- undefined_syms.txt | 4 + 17 files changed, 136 insertions(+), 420 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Draw.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Update.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F0B4.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F164.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F1A4.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F358.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F390.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3C8.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3E0.s delete mode 100644 data/overlays/actors/z_en_hs2.data.s delete mode 100644 data/overlays/actors/z_en_hs2.reloc.s diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Destroy.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Destroy.s deleted file mode 100644 index e56cd62043..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Destroy.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel EnHs2_Destroy -/* 000EC 80A6F08C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 000F0 80A6F090 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000 -/* 000F4 80A6F094 AFBF0014 */ sw $ra, 0x0014($sp) -/* 000F8 80A6F098 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 000FC 80A6F09C 0C0170EB */ jal Collider_DestroyCylinder - -/* 00100 80A6F0A0 24C5014C */ addiu $a1, $a2, 0x014C ## $a1 = 0000014C -/* 00104 80A6F0A4 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00108 80A6F0A8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 0010C 80A6F0AC 03E00008 */ jr $ra -/* 00110 80A6F0B0 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Draw.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Draw.s deleted file mode 100644 index 4af2623adc..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Draw.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel EnHs2_Draw -/* 00480 80A6F420 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8 -/* 00484 80A6F424 AFBF0024 */ sw $ra, 0x0024($sp) -/* 00488 80A6F428 AFA40028 */ sw $a0, 0x0028($sp) -/* 0048C 80A6F42C AFA5002C */ sw $a1, 0x002C($sp) -/* 00490 80A6F430 0C0250F2 */ jal func_800943C8 -/* 00494 80A6F434 8CA40000 */ lw $a0, 0x0000($a1) ## 00000000 -/* 00498 80A6F438 8FA20028 */ lw $v0, 0x0028($sp) -/* 0049C 80A6F43C 3C0F80A7 */ lui $t7, %hi(func_80A6F358) ## $t7 = 80A70000 -/* 004A0 80A6F440 3C1880A7 */ lui $t8, %hi(func_80A6F3E0) ## $t8 = 80A70000 -/* 004A4 80A6F444 8C45019C */ lw $a1, 0x019C($v0) ## 0000019C -/* 004A8 80A6F448 8C4601B8 */ lw $a2, 0x01B8($v0) ## 000001B8 -/* 004AC 80A6F44C 9047019A */ lbu $a3, 0x019A($v0) ## 0000019A -/* 004B0 80A6F450 2718F3E0 */ addiu $t8, $t8, %lo(func_80A6F3E0) ## $t8 = 80A6F3E0 -/* 004B4 80A6F454 25EFF358 */ addiu $t7, $t7, %lo(func_80A6F358) ## $t7 = 80A6F358 -/* 004B8 80A6F458 AFAF0010 */ sw $t7, 0x0010($sp) -/* 004BC 80A6F45C AFB80014 */ sw $t8, 0x0014($sp) -/* 004C0 80A6F460 8FA4002C */ lw $a0, 0x002C($sp) -/* 004C4 80A6F464 0C0286B2 */ jal SkelAnime_DrawSV -/* 004C8 80A6F468 AFA20018 */ sw $v0, 0x0018($sp) -/* 004CC 80A6F46C 8FBF0024 */ lw $ra, 0x0024($sp) -/* 004D0 80A6F470 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000 -/* 004D4 80A6F474 03E00008 */ jr $ra -/* 004D8 80A6F478 00000000 */ nop -/* 004DC 80A6F47C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Init.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Init.s deleted file mode 100644 index 828bfff3a8..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Init.s +++ /dev/null @@ -1,71 +0,0 @@ -.rdata -glabel D_80A6F4E0 - .asciz "\x1b[36m ヒヨコの店(子人の時) \n\x1b[m" - .balign 4 - -.text -glabel EnHs2_Init -/* 00000 80A6EFA0 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0 -/* 00004 80A6EFA4 AFB00028 */ sw $s0, 0x0028($sp) -/* 00008 80A6EFA8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 0000C 80A6EFAC AFBF002C */ sw $ra, 0x002C($sp) -/* 00010 80A6EFB0 AFA50044 */ sw $a1, 0x0044($sp) -/* 00014 80A6EFB4 3C068003 */ lui $a2, %hi(ActorShadow_DrawFunc_Circle) -/* 00018 80A6EFB8 24C6B5EC */ addiu $a2, %lo(ActorShadow_DrawFunc_Circle) -/* 0001C 80A6EFBC 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000 -/* 00020 80A6EFC0 248400B4 */ addiu $a0, $a0, 0x00B4 ## $a0 = 000000B4 -/* 00024 80A6EFC4 0C00AC78 */ jal ActorShape_Init - -/* 00028 80A6EFC8 3C074210 */ lui $a3, 0x4210 ## $a3 = 42100000 -/* 0002C 80A6EFCC 26050198 */ addiu $a1, $s0, 0x0198 ## $a1 = 00000198 -/* 00030 80A6EFD0 3C060600 */ lui $a2, 0x0600 ## $a2 = 06000000 -/* 00034 80A6EFD4 3C070600 */ lui $a3, 0x0600 ## $a3 = 06000000 -/* 00038 80A6EFD8 260E01DC */ addiu $t6, $s0, 0x01DC ## $t6 = 000001DC -/* 0003C 80A6EFDC 260F023C */ addiu $t7, $s0, 0x023C ## $t7 = 0000023C -/* 00040 80A6EFE0 24180010 */ addiu $t8, $zero, 0x0010 ## $t8 = 00000010 -/* 00044 80A6EFE4 AFB80018 */ sw $t8, 0x0018($sp) -/* 00048 80A6EFE8 AFAF0014 */ sw $t7, 0x0014($sp) -/* 0004C 80A6EFEC AFAE0010 */ sw $t6, 0x0010($sp) -/* 00050 80A6EFF0 24E705C0 */ addiu $a3, $a3, 0x05C0 ## $a3 = 060005C0 -/* 00054 80A6EFF4 24C66260 */ addiu $a2, $a2, 0x6260 ## $a2 = 06006260 -/* 00058 80A6EFF8 AFA50034 */ sw $a1, 0x0034($sp) -/* 0005C 80A6EFFC 0C0291BE */ jal SkelAnime_InitSV -/* 00060 80A6F000 8FA40044 */ lw $a0, 0x0044($sp) -/* 00064 80A6F004 3C050600 */ lui $a1, 0x0600 ## $a1 = 06000000 -/* 00068 80A6F008 24A505C0 */ addiu $a1, $a1, 0x05C0 ## $a1 = 060005C0 -/* 0006C 80A6F00C 0C0294BE */ jal SkelAnime_ChangeAnimDefaultRepeat -/* 00070 80A6F010 8FA40034 */ lw $a0, 0x0034($sp) -/* 00074 80A6F014 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C -/* 00078 80A6F018 AFA50034 */ sw $a1, 0x0034($sp) -/* 0007C 80A6F01C 0C0170D9 */ jal Collider_InitCylinder - -/* 00080 80A6F020 8FA40044 */ lw $a0, 0x0044($sp) -/* 00084 80A6F024 3C0780A7 */ lui $a3, %hi(D_80A6F4A0) ## $a3 = 80A70000 -/* 00088 80A6F028 8FA50034 */ lw $a1, 0x0034($sp) -/* 0008C 80A6F02C 24E7F4A0 */ addiu $a3, $a3, %lo(D_80A6F4A0) ## $a3 = 80A6F4A0 -/* 00090 80A6F030 8FA40044 */ lw $a0, 0x0044($sp) -/* 00094 80A6F034 0C01712B */ jal Collider_SetCylinder - -/* 00098 80A6F038 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000 -/* 0009C 80A6F03C 241900FF */ addiu $t9, $zero, 0x00FF ## $t9 = 000000FF -/* 000A0 80A6F040 3C053C23 */ lui $a1, 0x3C23 ## $a1 = 3C230000 -/* 000A4 80A6F044 A21900AE */ sb $t9, 0x00AE($s0) ## 000000AE -/* 000A8 80A6F048 34A5D70A */ ori $a1, $a1, 0xD70A ## $a1 = 3C23D70A -/* 000AC 80A6F04C 0C00B58B */ jal Actor_SetScale - -/* 000B0 80A6F050 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 000B4 80A6F054 3C0480A7 */ lui $a0, %hi(D_80A6F4E0) ## $a0 = 80A70000 -/* 000B8 80A6F058 0C00084C */ jal osSyncPrintf - -/* 000BC 80A6F05C 2484F4E0 */ addiu $a0, $a0, %lo(D_80A6F4E0) ## $a0 = 80A6F4E0 -/* 000C0 80A6F060 3C0880A7 */ lui $t0, %hi(func_80A6F1A4) ## $t0 = 80A70000 -/* 000C4 80A6F064 2508F1A4 */ addiu $t0, $t0, %lo(func_80A6F1A4) ## $t0 = 80A6F1A4 -/* 000C8 80A6F068 24090006 */ addiu $t1, $zero, 0x0006 ## $t1 = 00000006 -/* 000CC 80A6F06C AE0802AC */ sw $t0, 0x02AC($s0) ## 000002AC -/* 000D0 80A6F070 A60002A8 */ sh $zero, 0x02A8($s0) ## 000002A8 -/* 000D4 80A6F074 A209001F */ sb $t1, 0x001F($s0) ## 0000001F -/* 000D8 80A6F078 8FBF002C */ lw $ra, 0x002C($sp) -/* 000DC 80A6F07C 8FB00028 */ lw $s0, 0x0028($sp) -/* 000E0 80A6F080 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000 -/* 000E4 80A6F084 03E00008 */ jr $ra -/* 000E8 80A6F088 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Update.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Update.s deleted file mode 100644 index 64a1073b5b..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Update.s +++ /dev/null @@ -1,102 +0,0 @@ -glabel EnHs2_Update -/* 00250 80A6F1F0 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0 -/* 00254 80A6F1F4 AFB00024 */ sw $s0, 0x0024($sp) -/* 00258 80A6F1F8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 0025C 80A6F1FC AFB10028 */ sw $s1, 0x0028($sp) -/* 00260 80A6F200 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000 -/* 00264 80A6F204 AFBF002C */ sw $ra, 0x002C($sp) -/* 00268 80A6F208 2606014C */ addiu $a2, $s0, 0x014C ## $a2 = 0000014C -/* 0026C 80A6F20C 00C02825 */ or $a1, $a2, $zero ## $a1 = 0000014C -/* 00270 80A6F210 0C0189B7 */ jal Collider_CylinderUpdate - -/* 00274 80A6F214 AFA60034 */ sw $a2, 0x0034($sp) -/* 00278 80A6F218 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 0027C 80A6F21C 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60 -/* 00280 80A6F220 8FA60034 */ lw $a2, 0x0034($sp) -/* 00284 80A6F224 02212821 */ addu $a1, $s1, $at -/* 00288 80A6F228 0C017713 */ jal CollisionCheck_SetOC - ## CollisionCheck_setOT -/* 0028C 80A6F22C 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000 -/* 00290 80A6F230 0C00B638 */ jal Actor_MoveForward - -/* 00294 80A6F234 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00298 80A6F238 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00 -/* 0029C 80A6F23C 240E0004 */ addiu $t6, $zero, 0x0004 ## $t6 = 00000004 -/* 002A0 80A6F240 AFAE0014 */ sw $t6, 0x0014($sp) -/* 002A4 80A6F244 44060000 */ mfc1 $a2, $f0 -/* 002A8 80A6F248 44070000 */ mfc1 $a3, $f0 -/* 002AC 80A6F24C 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000 -/* 002B0 80A6F250 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 002B4 80A6F254 0C00B92D */ jal func_8002E4B4 -/* 002B8 80A6F258 E7A00010 */ swc1 $f0, 0x0010($sp) -/* 002BC 80A6F25C 0C02927F */ jal SkelAnime_FrameUpdateMatrix - -/* 002C0 80A6F260 26040198 */ addiu $a0, $s0, 0x0198 ## $a0 = 00000198 -/* 002C4 80A6F264 50400005 */ beql $v0, $zero, .L80A6F27C -/* 002C8 80A6F268 8E1902AC */ lw $t9, 0x02AC($s0) ## 000002AC -/* 002CC 80A6F26C 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00 -/* 002D0 80A6F270 00000000 */ nop -/* 002D4 80A6F274 E60401B0 */ swc1 $f4, 0x01B0($s0) ## 000001B0 -/* 002D8 80A6F278 8E1902AC */ lw $t9, 0x02AC($s0) ## 000002AC -.L80A6F27C: -/* 002DC 80A6F27C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 002E0 80A6F280 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000 -/* 002E4 80A6F284 0320F809 */ jalr $ra, $t9 -/* 002E8 80A6F288 00000000 */ nop -/* 002EC 80A6F28C 960F02A8 */ lhu $t7, 0x02A8($s0) ## 000002A8 -/* 002F0 80A6F290 2604029C */ addiu $a0, $s0, 0x029C ## $a0 = 0000029C -/* 002F4 80A6F294 24053200 */ addiu $a1, $zero, 0x3200 ## $a1 = 00003200 -/* 002F8 80A6F298 31F80001 */ andi $t8, $t7, 0x0001 ## $t8 = 00000000 -/* 002FC 80A6F29C 13000010 */ beq $t8, $zero, .L80A6F2E0 -/* 00300 80A6F2A0 24060006 */ addiu $a2, $zero, 0x0006 ## $a2 = 00000006 -/* 00304 80A6F2A4 8E090038 */ lw $t1, 0x0038($s0) ## 00000038 -/* 00308 80A6F2A8 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000 -/* 0030C 80A6F2AC 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 00310 80A6F2B0 AFA90010 */ sw $t1, 0x0010($sp) -/* 00314 80A6F2B4 8E08003C */ lw $t0, 0x003C($s0) ## 0000003C -/* 00318 80A6F2B8 2606029C */ addiu $a2, $s0, 0x029C ## $a2 = 0000029C -/* 0031C 80A6F2BC 260702A2 */ addiu $a3, $s0, 0x02A2 ## $a3 = 000002A2 -/* 00320 80A6F2C0 AFA80014 */ sw $t0, 0x0014($sp) -/* 00324 80A6F2C4 8E090040 */ lw $t1, 0x0040($s0) ## 00000040 -/* 00328 80A6F2C8 0C00E0A4 */ jal func_80038290 -/* 0032C 80A6F2CC AFA90018 */ sw $t1, 0x0018($sp) -/* 00330 80A6F2D0 960A02A8 */ lhu $t2, 0x02A8($s0) ## 000002A8 -/* 00334 80A6F2D4 314BFFFE */ andi $t3, $t2, 0xFFFE ## $t3 = 00000000 -/* 00338 80A6F2D8 1000001A */ beq $zero, $zero, .L80A6F344 -/* 0033C 80A6F2DC A60B02A8 */ sh $t3, 0x02A8($s0) ## 000002A8 -.L80A6F2E0: -/* 00340 80A6F2E0 240C0064 */ addiu $t4, $zero, 0x0064 ## $t4 = 00000064 -/* 00344 80A6F2E4 AFAC0010 */ sw $t4, 0x0010($sp) -/* 00348 80A6F2E8 0C01E1A7 */ jal Math_SmoothScaleMaxMinS - -/* 0034C 80A6F2EC 24071838 */ addiu $a3, $zero, 0x1838 ## $a3 = 00001838 -/* 00350 80A6F2F0 240D0064 */ addiu $t5, $zero, 0x0064 ## $t5 = 00000064 -/* 00354 80A6F2F4 AFAD0010 */ sw $t5, 0x0010($sp) -/* 00358 80A6F2F8 2604029E */ addiu $a0, $s0, 0x029E ## $a0 = 0000029E -/* 0035C 80A6F2FC 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 00360 80A6F300 24060006 */ addiu $a2, $zero, 0x0006 ## $a2 = 00000006 -/* 00364 80A6F304 0C01E1A7 */ jal Math_SmoothScaleMaxMinS - -/* 00368 80A6F308 24071838 */ addiu $a3, $zero, 0x1838 ## $a3 = 00001838 -/* 0036C 80A6F30C 240E0064 */ addiu $t6, $zero, 0x0064 ## $t6 = 00000064 -/* 00370 80A6F310 AFAE0010 */ sw $t6, 0x0010($sp) -/* 00374 80A6F314 260402A2 */ addiu $a0, $s0, 0x02A2 ## $a0 = 000002A2 -/* 00378 80A6F318 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 0037C 80A6F31C 24060006 */ addiu $a2, $zero, 0x0006 ## $a2 = 00000006 -/* 00380 80A6F320 0C01E1A7 */ jal Math_SmoothScaleMaxMinS - -/* 00384 80A6F324 24071838 */ addiu $a3, $zero, 0x1838 ## $a3 = 00001838 -/* 00388 80A6F328 24190064 */ addiu $t9, $zero, 0x0064 ## $t9 = 00000064 -/* 0038C 80A6F32C AFB90010 */ sw $t9, 0x0010($sp) -/* 00390 80A6F330 260402A4 */ addiu $a0, $s0, 0x02A4 ## $a0 = 000002A4 -/* 00394 80A6F334 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 00398 80A6F338 24060006 */ addiu $a2, $zero, 0x0006 ## $a2 = 00000006 -/* 0039C 80A6F33C 0C01E1A7 */ jal Math_SmoothScaleMaxMinS - -/* 003A0 80A6F340 24071838 */ addiu $a3, $zero, 0x1838 ## $a3 = 00001838 -.L80A6F344: -/* 003A4 80A6F344 8FBF002C */ lw $ra, 0x002C($sp) -/* 003A8 80A6F348 8FB00024 */ lw $s0, 0x0024($sp) -/* 003AC 80A6F34C 8FB10028 */ lw $s1, 0x0028($sp) -/* 003B0 80A6F350 03E00008 */ jr $ra -/* 003B4 80A6F354 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F0B4.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F0B4.s deleted file mode 100644 index 84f04d8b6f..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F0B4.s +++ /dev/null @@ -1,50 +0,0 @@ -glabel func_80A6F0B4 -/* 00114 80A6F0B4 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00118 80A6F0B8 AFBF0014 */ sw $ra, 0x0014($sp) -/* 0011C 80A6F0BC AFA5001C */ sw $a1, 0x001C($sp) -/* 00120 80A6F0C0 AFA60020 */ sw $a2, 0x0020($sp) -/* 00124 80A6F0C4 AFA70024 */ sw $a3, 0x0024($sp) -/* 00128 80A6F0C8 0C00BC65 */ jal func_8002F194 -/* 0012C 80A6F0CC AFA40018 */ sw $a0, 0x0018($sp) -/* 00130 80A6F0D0 10400005 */ beq $v0, $zero, .L80A6F0E8 -/* 00134 80A6F0D4 8FA40018 */ lw $a0, 0x0018($sp) -/* 00138 80A6F0D8 8FAE0024 */ lw $t6, 0x0024($sp) -/* 0013C 80A6F0DC 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001 -/* 00140 80A6F0E0 1000001C */ beq $zero, $zero, .L80A6F154 -/* 00144 80A6F0E4 AC8E02AC */ sw $t6, 0x02AC($a0) ## 000002AC -.L80A6F0E8: -/* 00148 80A6F0E8 8498008A */ lh $t8, 0x008A($a0) ## 0000008A -/* 0014C 80A6F0EC 849900B6 */ lh $t9, 0x00B6($a0) ## 000000B6 -/* 00150 80A6F0F0 97AF0022 */ lhu $t7, 0x0022($sp) -/* 00154 80A6F0F4 03191023 */ subu $v0, $t8, $t9 -/* 00158 80A6F0F8 00021400 */ sll $v0, $v0, 16 -/* 0015C 80A6F0FC 00021403 */ sra $v0, $v0, 16 -/* 00160 80A6F100 04400003 */ bltz $v0, .L80A6F110 -/* 00164 80A6F104 A48F010E */ sh $t7, 0x010E($a0) ## 0000010E -/* 00168 80A6F108 10000002 */ beq $zero, $zero, .L80A6F114 -/* 0016C 80A6F10C 00401825 */ or $v1, $v0, $zero ## $v1 = 00000001 -.L80A6F110: -/* 00170 80A6F110 00021823 */ subu $v1, $zero, $v0 -.L80A6F114: -/* 00174 80A6F114 28612151 */ slti $at, $v1, 0x2151 -/* 00178 80A6F118 1020000D */ beq $at, $zero, .L80A6F150 -/* 0017C 80A6F11C 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000 -/* 00180 80A6F120 44810000 */ mtc1 $at, $f0 ## $f0 = 100.00 -/* 00184 80A6F124 C4840090 */ lwc1 $f4, 0x0090($a0) ## 00000090 -/* 00188 80A6F128 4600203C */ c.lt.s $f4, $f0 -/* 0018C 80A6F12C 00000000 */ nop -/* 00190 80A6F130 45020008 */ bc1fl .L80A6F154 -/* 00194 80A6F134 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 -/* 00198 80A6F138 948802A8 */ lhu $t0, 0x02A8($a0) ## 000002A8 -/* 0019C 80A6F13C 44060000 */ mfc1 $a2, $f0 -/* 001A0 80A6F140 35090001 */ ori $t1, $t0, 0x0001 ## $t1 = 00000001 -/* 001A4 80A6F144 A48902A8 */ sh $t1, 0x02A8($a0) ## 000002A8 -/* 001A8 80A6F148 0C00BCB3 */ jal func_8002F2CC -/* 001AC 80A6F14C 8FA5001C */ lw $a1, 0x001C($sp) -.L80A6F150: -/* 001B0 80A6F150 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 -.L80A6F154: -/* 001B4 80A6F154 8FBF0014 */ lw $ra, 0x0014($sp) -/* 001B8 80A6F158 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 001BC 80A6F15C 03E00008 */ jr $ra -/* 001C0 80A6F160 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F164.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F164.s deleted file mode 100644 index 079f158130..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F164.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_80A6F164 -/* 001C4 80A6F164 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 001C8 80A6F168 AFBF0014 */ sw $ra, 0x0014($sp) -/* 001CC 80A6F16C 0C00BCCD */ jal func_8002F334 -/* 001D0 80A6F170 AFA40018 */ sw $a0, 0x0018($sp) -/* 001D4 80A6F174 10400004 */ beq $v0, $zero, .L80A6F188 -/* 001D8 80A6F178 8FA40018 */ lw $a0, 0x0018($sp) -/* 001DC 80A6F17C 3C0E80A7 */ lui $t6, %hi(func_80A6F1A4) ## $t6 = 80A70000 -/* 001E0 80A6F180 25CEF1A4 */ addiu $t6, $t6, %lo(func_80A6F1A4) ## $t6 = 80A6F1A4 -/* 001E4 80A6F184 AC8E02AC */ sw $t6, 0x02AC($a0) ## 000002AC -.L80A6F188: -/* 001E8 80A6F188 948F02A8 */ lhu $t7, 0x02A8($a0) ## 000002A8 -/* 001EC 80A6F18C 35F80001 */ ori $t8, $t7, 0x0001 ## $t8 = 00000001 -/* 001F0 80A6F190 A49802A8 */ sh $t8, 0x02A8($a0) ## 000002A8 -/* 001F4 80A6F194 8FBF0014 */ lw $ra, 0x0014($sp) -/* 001F8 80A6F198 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 001FC 80A6F19C 03E00008 */ jr $ra -/* 00200 80A6F1A0 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F1A4.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F1A4.s deleted file mode 100644 index 892f02c6f1..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F1A4.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_80A6F1A4 -/* 00204 80A6F1A4 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00208 80A6F1A8 AFA40018 */ sw $a0, 0x0018($sp) -/* 0020C 80A6F1AC AFBF0014 */ sw $ra, 0x0014($sp) -/* 00210 80A6F1B0 AFA5001C */ sw $a1, 0x001C($sp) -/* 00214 80A6F1B4 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 00218 80A6F1B8 0C01B0D8 */ jal Text_GetFaceReaction -/* 0021C 80A6F1BC 24050009 */ addiu $a1, $zero, 0x0009 ## $a1 = 00000009 -/* 00220 80A6F1C0 14400002 */ bne $v0, $zero, .L80A6F1CC -/* 00224 80A6F1C4 3046FFFF */ andi $a2, $v0, 0xFFFF ## $a2 = 00000000 -/* 00228 80A6F1C8 24065069 */ addiu $a2, $zero, 0x5069 ## $a2 = 00005069 -.L80A6F1CC: -/* 0022C 80A6F1CC 3C0780A7 */ lui $a3, %hi(func_80A6F164) ## $a3 = 80A70000 -/* 00230 80A6F1D0 24E7F164 */ addiu $a3, $a3, %lo(func_80A6F164) ## $a3 = 80A6F164 -/* 00234 80A6F1D4 8FA40018 */ lw $a0, 0x0018($sp) -/* 00238 80A6F1D8 0C29BC2D */ jal func_80A6F0B4 -/* 0023C 80A6F1DC 8FA5001C */ lw $a1, 0x001C($sp) -/* 00240 80A6F1E0 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00244 80A6F1E4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00248 80A6F1E8 03E00008 */ jr $ra -/* 0024C 80A6F1EC 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F358.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F358.s deleted file mode 100644 index 0c4adb062b..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F358.s +++ /dev/null @@ -1,28 +0,0 @@ -.late_rodata -.late_rodata_alignment 8 - -glabel D_80A6F500 - .word func_80A6F390 -.word L80A6F3BC -.word func_80A6F3C8 -.word L80A6F384 -.word L80A6F384 -.word 0x00000000, 0x00000000, 0x00000000 - -.text -glabel func_80A6F358 -/* 003B8 80A6F358 24AEFFF7 */ addiu $t6, $a1, 0xFFF7 ## $t6 = FFFFFFF7 -/* 003BC 80A6F35C 2DC10005 */ sltiu $at, $t6, 0x0005 -/* 003C0 80A6F360 AFA40000 */ sw $a0, 0x0000($sp) -/* 003C4 80A6F364 1020001B */ beq $at, $zero, .L80A6F3D4 -/* 003C8 80A6F368 AFA7000C */ sw $a3, 0x000C($sp) -/* 003CC 80A6F36C 000E7080 */ sll $t6, $t6, 2 -/* 003D0 80A6F370 3C0180A7 */ lui $at, %hi(D_80A6F500) ## $at = 80A70000 -/* 003D4 80A6F374 002E0821 */ addu $at, $at, $t6 -/* 003D8 80A6F378 8C2EF500 */ lw $t6, %lo(D_80A6F500)($at) -/* 003DC 80A6F37C 01C00008 */ jr $t6 -/* 003E0 80A6F380 00000000 */ nop -glabel L80A6F384 -/* 003E4 80A6F384 ACC00000 */ sw $zero, 0x0000($a2) ## 00000000 -/* 003E8 80A6F388 03E00008 */ jr $ra -/* 003EC 80A6F38C 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F390.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F390.s deleted file mode 100644 index 7660473594..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F390.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_80A6F390 -/* 003F0 80A6F390 8FA20014 */ lw $v0, 0x0014($sp) -/* 003F4 80A6F394 8FA30010 */ lw $v1, 0x0010($sp) -/* 003F8 80A6F398 8458029E */ lh $t8, 0x029E($v0) ## 0000029E -/* 003FC 80A6F39C 846F0000 */ lh $t7, 0x0000($v1) ## 00000000 -/* 00400 80A6F3A0 84680004 */ lh $t0, 0x0004($v1) ## 00000004 -/* 00404 80A6F3A4 01F8C821 */ addu $t9, $t7, $t8 -/* 00408 80A6F3A8 A4790000 */ sh $t9, 0x0000($v1) ## 00000000 -/* 0040C 80A6F3AC 8449029C */ lh $t1, 0x029C($v0) ## 0000029C -/* 00410 80A6F3B0 01095021 */ addu $t2, $t0, $t1 -/* 00414 80A6F3B4 10000007 */ beq $zero, $zero, .L80A6F3D4 -/* 00418 80A6F3B8 A46A0004 */ sh $t2, 0x0004($v1) ## 00000004 -glabel L80A6F3BC -/* 0041C 80A6F3BC ACC00000 */ sw $zero, 0x0000($a2) ## 00000000 -/* 00420 80A6F3C0 03E00008 */ jr $ra -/* 00424 80A6F3C4 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3C8.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3C8.s deleted file mode 100644 index 44a44482a6..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3C8.s +++ /dev/null @@ -1,8 +0,0 @@ -glabel func_80A6F3C8 -/* 00428 80A6F3C8 ACC00000 */ sw $zero, 0x0000($a2) ## 00000000 -/* 0042C 80A6F3CC 03E00008 */ jr $ra -/* 00430 80A6F3D0 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 -.L80A6F3D4: -/* 00434 80A6F3D4 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 -/* 00438 80A6F3D8 03E00008 */ jr $ra -/* 0043C 80A6F3DC 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3E0.s b/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3E0.s deleted file mode 100644 index 6b6e759dfb..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3E0.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_80A6F3E0 -/* 00440 80A6F3E0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00444 80A6F3E4 24010009 */ addiu $at, $zero, 0x0009 ## $at = 00000009 -/* 00448 80A6F3E8 AFBF0014 */ sw $ra, 0x0014($sp) -/* 0044C 80A6F3EC AFA40018 */ sw $a0, 0x0018($sp) -/* 00450 80A6F3F0 AFA60020 */ sw $a2, 0x0020($sp) -/* 00454 80A6F3F4 14A10006 */ bne $a1, $at, .L80A6F410 -/* 00458 80A6F3F8 AFA70024 */ sw $a3, 0x0024($sp) -/* 0045C 80A6F3FC 8FA50028 */ lw $a1, 0x0028($sp) -/* 00460 80A6F400 3C0480A7 */ lui $a0, %hi(D_80A6F4CC) ## $a0 = 80A70000 -/* 00464 80A6F404 2484F4CC */ addiu $a0, $a0, %lo(D_80A6F4CC) ## $a0 = 80A6F4CC -/* 00468 80A6F408 0C0346BD */ jal Matrix_MultVec3f -/* 0046C 80A6F40C 24A50038 */ addiu $a1, $a1, 0x0038 ## $a1 = 00000038 -.L80A6F410: -/* 00470 80A6F410 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00474 80A6F414 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00478 80A6F418 03E00008 */ jr $ra -/* 0047C 80A6F41C 00000000 */ nop diff --git a/data/overlays/actors/z_en_hs2.data.s b/data/overlays/actors/z_en_hs2.data.s deleted file mode 100644 index 43daa8c3e7..0000000000 --- a/data/overlays/actors/z_en_hs2.data.s +++ /dev/null @@ -1,22 +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 purpose registers - -.section .data - -.balign 16 - -glabel En_Hs2_InitVars - .word 0x01A60400, 0x00000009, 0x01280000, 0x000002B0 -.word EnHs2_Init -.word EnHs2_Destroy -.word EnHs2_Update -.word EnHs2_Draw -glabel D_80A6F4A0 - .word 0x0A001139, 0x10010000, 0x00000000, 0x00000000, 0x00000000, 0xFFCFFFFF, 0x00000000, 0x00010100, 0x00280028, 0x00000000, 0x00000000 -glabel D_80A6F4CC - .word 0x43960000, 0x447A0000, 0x00000000, 0x00000000, 0x00000000 - diff --git a/data/overlays/actors/z_en_hs2.reloc.s b/data/overlays/actors/z_en_hs2.reloc.s deleted file mode 100644 index 4d8dde3762..0000000000 --- a/data/overlays/actors/z_en_hs2.reloc.s +++ /dev/null @@ -1,13 +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 purpose registers - -.section .rodata - -.balign 16 - -glabel D_80A6F520 - .incbin "baserom/ovl_En_Hs2", 0x580, 0x00000090 diff --git a/spec b/spec index abb6ded04b..ef4b566b01 100644 --- a/spec +++ b/spec @@ -2569,8 +2569,7 @@ endseg beginseg name "ovl_En_Hs2" include "build/src/overlays/actors/ovl_En_Hs2/z_en_hs2.o" - include "build/data/overlays/actors/z_en_hs2.data.o" - include "build/data/overlays/actors/z_en_hs2.reloc.o" + include "build/src/overlays/actors/ovl_En_Hs2/ovl_En_Hs2_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c index bea28ce966..a58fb00e0d 100644 --- a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c +++ b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c @@ -6,6 +6,8 @@ #include "z_en_hs2.h" +#include + #define FLAGS 0x00000009 #define THIS ((EnHs2*)thisx) @@ -14,8 +16,8 @@ void EnHs2_Init(Actor* thisx, GlobalContext* globalCtx); void EnHs2_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnHs2_Update(Actor* thisx, GlobalContext* globalCtx); void EnHs2_Draw(Actor* thisx, GlobalContext* globalCtx); +void func_80A6F1A4(EnHs2* this, GlobalContext* globalCtx); -/* const ActorInit En_Hs2_InitVars = { ACTOR_EN_HS2, ACTORTYPE_NPC, @@ -27,25 +29,131 @@ const ActorInit En_Hs2_InitVars = { (ActorFunc)EnHs2_Update, (ActorFunc)EnHs2_Draw, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Init.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Destroy.s") +static ColliderCylinderInit sCylinderInit = { + { COLTYPE_UNK10, 0x00, 0x11, 0x39, 0x10, COLSHAPE_CYLINDER }, + { 0x00, { 0x00000000, 0x00, 0x00 }, { 0xFFCFFFFF, 0x00, 0x00 }, 0x00, 0x01, 0x01 }, + { 40, 40, 0, { 0, 0, 0 } }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F0B4.s") +extern SkeletonHeader D_06006260; +extern AnimationHeader D_060005C0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F164.s") +void EnHs2_Init(Actor* thisx, GlobalContext* globalCtx) { + EnHs2* this = THIS; + s32 pad; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F1A4.s") + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFunc_Circle, 36.0f); + SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06006260, &D_060005C0, this->limbDrawTable, + this->transitionDrawTable, 16); + SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060005C0); + Collider_InitCylinder(globalCtx, &this->collider); + Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); + this->actor.colChkInfo.mass = 0xFF; + Actor_SetScale(&this->actor, 0.01f); + osSyncPrintf(VT_FGCOL(CYAN) " ヒヨコの店(子人の時) \n" VT_RST); + this->actionFunc = func_80A6F1A4; + this->unk_2A8 = 0; + this->actor.unk_1F = 6; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Update.s") +void EnHs2_Destroy(Actor* thisx, GlobalContext* globalCtx) { + EnHs2* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F358.s") + Collider_DestroyCylinder(globalCtx, &this->collider); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F390.s") +s32 func_80A6F0B4(EnHs2* this, GlobalContext* globalCtx, u16 textId, EnHs2ActionFunc actionFunc) { + if (func_8002F194(&this->actor, globalCtx)) { + this->actionFunc = actionFunc; + return 1; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3C8.s") + this->actor.textId = textId; + if (ABS((s16)(this->actor.yawTowardsLink - this->actor.shape.rot.y)) < 0x2151 && + this->actor.xzDistFromLink < 100.0f) { + this->unk_2A8 |= 0x1; + func_8002F2CC(&this->actor, globalCtx, 100.0f); + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/func_80A6F3E0.s") +void func_80A6F164(EnHs2* this, GlobalContext* globalCtx) { + if (func_8002F334(&this->actor, globalCtx)) { + this->actionFunc = func_80A6F1A4; + } + this->unk_2A8 |= 0x1; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Hs2/EnHs2_Draw.s") +void func_80A6F1A4(EnHs2* this, GlobalContext* globalCtx) { + u16 textId; + + textId = Text_GetFaceReaction(globalCtx, 9); + if (textId == 0) { + textId = 0x5069; + } + + func_80A6F0B4(this, globalCtx, textId, func_80A6F164); +} + +void EnHs2_Update(Actor* thisx, GlobalContext* globalCtx) { + EnHs2* this = THIS; + s32 pad; + + Collider_CylinderUpdate(&this->actor, &this->collider); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); + Actor_MoveForward(&this->actor); + func_8002E4B4(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4); + if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) != 0) { + this->skelAnime.animCurrentFrame = 0.0f; + } + this->actionFunc(this, globalCtx); + if (this->unk_2A8 & 0x1) { + func_80038290(globalCtx, &this->actor, &this->unk_29C, &this->unk_2A2, this->actor.posRot2.pos); + this->unk_2A8 &= ~1; + } else { + Math_SmoothScaleMaxMinS(&this->unk_29C.x, 12800, 6, 6200, 100); + Math_SmoothScaleMaxMinS(&this->unk_29C.y, 0, 6, 6200, 100); + Math_SmoothScaleMaxMinS(&this->unk_2A2.x, 0, 6, 6200, 100); + Math_SmoothScaleMaxMinS(&this->unk_2A2.y, 0, 6, 6200, 100); + } +} + +s32 EnHs2_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* pos, Vec3s* rot, Actor* thisx) { + EnHs2* this = THIS; + + switch (limbIndex) { + case 12: + case 13: + *dList = NULL; + return 0; + case 9: + rot->x += this->unk_29C.y; + rot->z += this->unk_29C.x; + break; + case 10: + *dList = NULL; + return 0; + case 11: + *dList = NULL; + return 0; + } + return 0; +} + +void EnHs2_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + static Vec3f D_80A6F4CC = { 300.0f, 1000.0f, 0.0f }; + EnHs2* this = THIS; + + if (limbIndex == 9) { + Matrix_MultVec3f(&D_80A6F4CC, &this->actor.posRot2.pos); + } +} + +void EnHs2_Draw(Actor* thisx, GlobalContext* globalCtx) { + EnHs2* this = THIS; + + func_800943C8(globalCtx->state.gfxCtx); + SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + EnHs2_OverrideLimbDraw, EnHs2_PostLimbDraw, &this->actor); +} diff --git a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h index 776088be33..fc44277e0f 100644 --- a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h +++ b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h @@ -6,9 +6,18 @@ struct EnHs2; +typedef void (*EnHs2ActionFunc)(struct EnHs2*, GlobalContext*); + typedef struct EnHs2 { /* 0x0000 */ Actor actor; - /* 0x014C */ char unk_14C[0x164]; + /* 0x014C */ ColliderCylinder collider; + /* 0x0198 */ SkelAnime skelAnime; + /* 0x01DC */ Vec3s limbDrawTable[16]; + /* 0x023C */ Vec3s transitionDrawTable[16]; + /* 0x029C */ Vec3s unk_29C; + /* 0x02A2 */ Vec3s unk_2A2; + /* 0x02A8 */ u16 unk_2A8; + /* 0x02AC */ EnHs2ActionFunc actionFunc; } EnHs2; // size = 0x02B0 extern const ActorInit En_Hs2_InitVars; diff --git a/undefined_syms.txt b/undefined_syms.txt index 01ac4a1946..6b88571da5 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -501,6 +501,10 @@ D_06000170 = 0x06000170; // z_eff_ss_kirakira D_04037880 = 0x04037880; +// z_en_hs2 +D_060005C0 = 0x60005C0; +D_06006260 = 0x6006260; + // z_en_bird D_0600006C = 0x0600006C; D_06002190 = 0x06002190;