Merge pull request #329 from hatal175/J3DJoint

J3DJoint OK
This commit is contained in:
hatal175 2023-05-09 17:11:49 +03:00 committed by GitHub
commit 68556c2278
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 111 additions and 370 deletions

View File

@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes)
.init | 97.972973% | 9280 | 9472
.extab | 100.000000% | 96 | 96
.extabindex | 100.000000% | 96 | 96
.text | 26.641576% | 958176 | 3596544
.text | 26.671605% | 959256 | 3596544
.ctors | 100.000000% | 448 | 448
.dtors | 100.000000% | 32 | 32
.rodata | 100.000000% | 193856 | 193856
.data | 100.000000% | 197632 | 197632
.sdata | 100.000000% | 1408 | 1408
.sdata2 | 100.000000% | 20832 | 20832
Total | 34.375149% | 1382112 | 4020672
Total | 34.402010% | 1383192 | 4020672
## Total
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 34.375149% | 1382112 | 4020672
main.dol | 34.402010% | 1383192 | 4020672
RELs | 33.562950% | 3859848 | 11500324
Total | 33.773348% | 5241960 | 15520996
Total | 33.780306% | 5243040 | 15520996
## RELs

View File

@ -1,59 +0,0 @@
lbl_8032F170:
/* 8032F170 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8032F174 38 80 00 00 */ li r4, 0
/* 8032F178 90 83 00 00 */ stw r4, 0(r3)
/* 8032F17C 90 83 00 04 */ stw r4, 4(r3)
/* 8032F180 90 83 00 08 */ stw r4, 8(r3)
/* 8032F184 90 83 00 0C */ stw r4, 0xc(r3)
/* 8032F188 90 83 00 10 */ stw r4, 0x10(r3)
/* 8032F18C B0 83 00 14 */ sth r4, 0x14(r3)
/* 8032F190 38 00 00 01 */ li r0, 1
/* 8032F194 98 03 00 16 */ stb r0, 0x16(r3)
/* 8032F198 98 83 00 17 */ stb r4, 0x17(r3)
/* 8032F19C 38 C3 00 14 */ addi r6, r3, 0x14
/* 8032F1A0 3C 80 80 3A */ lis r4, j3dDefaultTransformInfo@ha /* 0x803A1E30@ha */
/* 8032F1A4 38 84 1E 30 */ addi r4, r4, j3dDefaultTransformInfo@l /* 0x803A1E30@l */
/* 8032F1A8 38 A4 FF FC */ addi r5, r4, -4
/* 8032F1AC 38 00 00 04 */ li r0, 4
/* 8032F1B0 7C 09 03 A6 */ mtctr r0
lbl_8032F1B4:
/* 8032F1B4 80 85 00 04 */ lwz r4, 4(r5)
/* 8032F1B8 84 05 00 08 */ lwzu r0, 8(r5)
/* 8032F1BC 90 86 00 04 */ stw r4, 4(r6)
/* 8032F1C0 94 06 00 08 */ stwu r0, 8(r6)
/* 8032F1C4 42 00 FF F0 */ bdnz lbl_8032F1B4
/* 8032F1C8 C0 02 CA A4 */ lfs f0, lit_1220(r2)
/* 8032F1CC D0 03 00 38 */ stfs f0, 0x38(r3)
/* 8032F1D0 38 00 00 00 */ li r0, 0
/* 8032F1D4 90 03 00 54 */ stw r0, 0x54(r3)
/* 8032F1D8 90 03 00 58 */ stw r0, 0x58(r3)
/* 8032F1DC 3C 80 80 3A */ lis r4, lit_1257@ha /* 0x803A2080@ha */
/* 8032F1E0 38 A4 20 80 */ addi r5, r4, lit_1257@l /* 0x803A2080@l */
/* 8032F1E4 80 85 00 00 */ lwz r4, 0(r5)
/* 8032F1E8 80 05 00 04 */ lwz r0, 4(r5)
/* 8032F1EC 90 81 00 14 */ stw r4, 0x14(r1)
/* 8032F1F0 90 01 00 18 */ stw r0, 0x18(r1)
/* 8032F1F4 80 05 00 08 */ lwz r0, 8(r5)
/* 8032F1F8 90 01 00 1C */ stw r0, 0x1c(r1)
/* 8032F1FC C0 01 00 14 */ lfs f0, 0x14(r1)
/* 8032F200 D0 03 00 3C */ stfs f0, 0x3c(r3)
/* 8032F204 C0 01 00 18 */ lfs f0, 0x18(r1)
/* 8032F208 D0 03 00 40 */ stfs f0, 0x40(r3)
/* 8032F20C C0 01 00 1C */ lfs f0, 0x1c(r1)
/* 8032F210 D0 03 00 44 */ stfs f0, 0x44(r3)
/* 8032F214 3C 80 80 3A */ lis r4, lit_1259@ha /* 0x803A208C@ha */
/* 8032F218 38 A4 20 8C */ addi r5, r4, lit_1259@l /* 0x803A208C@l */
/* 8032F21C 80 85 00 00 */ lwz r4, 0(r5)
/* 8032F220 80 05 00 04 */ lwz r0, 4(r5)
/* 8032F224 90 81 00 08 */ stw r4, 8(r1)
/* 8032F228 90 01 00 0C */ stw r0, 0xc(r1)
/* 8032F22C 80 05 00 08 */ lwz r0, 8(r5)
/* 8032F230 90 01 00 10 */ stw r0, 0x10(r1)
/* 8032F234 C0 01 00 08 */ lfs f0, 8(r1)
/* 8032F238 D0 03 00 48 */ stfs f0, 0x48(r3)
/* 8032F23C C0 01 00 0C */ lfs f0, 0xc(r1)
/* 8032F240 D0 03 00 4C */ stfs f0, 0x4c(r3)
/* 8032F244 C0 01 00 10 */ lfs f0, 0x10(r1)
/* 8032F248 D0 03 00 50 */ stfs f0, 0x50(r3)
/* 8032F24C 38 21 00 20 */ addi r1, r1, 0x20
/* 8032F250 4E 80 00 20 */ blr

View File

@ -1,118 +0,0 @@
lbl_8032F254:
/* 8032F254 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8032F258 7C 08 02 A6 */ mflr r0
/* 8032F25C 90 01 00 24 */ stw r0, 0x24(r1)
/* 8032F260 39 61 00 20 */ addi r11, r1, 0x20
/* 8032F264 48 03 2F 71 */ bl _savegpr_27
/* 8032F268 3C 80 80 43 */ lis r4, j3dSys@ha /* 0x80434AC8@ha */
/* 8032F26C 3B E4 4A C8 */ addi r31, r4, j3dSys@l /* 0x80434AC8@l */
/* 8032F270 80 9F 00 38 */ lwz r4, 0x38(r31)
/* 8032F274 80 84 00 84 */ lwz r4, 0x84(r4)
/* 8032F278 80 84 00 0C */ lwz r4, 0xc(r4)
/* 8032F27C A0 03 00 14 */ lhz r0, 0x14(r3)
/* 8032F280 1C 00 00 30 */ mulli r0, r0, 0x30
/* 8032F284 7F C4 02 14 */ add r30, r4, r0
/* 8032F288 80 9F 00 48 */ lwz r4, 0x48(r31)
/* 8032F28C 93 C4 00 1C */ stw r30, 0x1c(r4)
/* 8032F290 80 9F 00 4C */ lwz r4, 0x4c(r31)
/* 8032F294 93 C4 00 1C */ stw r30, 0x1c(r4)
/* 8032F298 83 83 00 58 */ lwz r28, 0x58(r3)
/* 8032F29C 48 00 01 3C */ b lbl_8032F3D8
lbl_8032F2A0:
/* 8032F2A0 80 9C 00 08 */ lwz r4, 8(r28)
/* 8032F2A4 80 04 00 0C */ lwz r0, 0xc(r4)
/* 8032F2A8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8032F2AC 41 82 00 0C */ beq lbl_8032F2B8
/* 8032F2B0 83 9C 00 04 */ lwz r28, 4(r28)
/* 8032F2B4 48 00 01 24 */ b lbl_8032F3D8
lbl_8032F2B8:
/* 8032F2B8 A0 1C 00 14 */ lhz r0, 0x14(r28)
/* 8032F2BC 80 BF 00 38 */ lwz r5, 0x38(r31)
/* 8032F2C0 80 65 00 C0 */ lwz r3, 0xc0(r5)
/* 8032F2C4 54 00 32 B2 */ rlwinm r0, r0, 6, 0xa, 0x19
/* 8032F2C8 7F A3 02 14 */ add r29, r3, r0
/* 8032F2CC A0 04 00 08 */ lhz r0, 8(r4)
/* 8032F2D0 80 65 00 C4 */ lwz r3, 0xc4(r5)
/* 8032F2D4 1C 00 00 3C */ mulli r0, r0, 0x3c
/* 8032F2D8 7F 63 02 14 */ add r27, r3, r0
/* 8032F2DC 80 1D 00 10 */ lwz r0, 0x10(r29)
/* 8032F2E0 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8032F2E4 40 82 00 68 */ bne lbl_8032F34C
/* 8032F2E8 80 7C 00 3C */ lwz r3, 0x3c(r28)
/* 8032F2EC 3C 00 C0 00 */ lis r0, 0xc000
/* 8032F2F0 7C 03 00 40 */ cmplw r3, r0
/* 8032F2F4 40 80 00 0C */ bge lbl_8032F300
/* 8032F2F8 7C 60 1B 78 */ mr r0, r3
/* 8032F2FC 48 00 00 08 */ b lbl_8032F304
lbl_8032F300:
/* 8032F300 38 00 00 00 */ li r0, 0
lbl_8032F304:
/* 8032F304 28 00 00 00 */ cmplwi r0, 0
/* 8032F308 41 82 00 2C */ beq lbl_8032F334
/* 8032F30C 3C 00 C0 00 */ lis r0, 0xc000
/* 8032F310 7C 03 00 40 */ cmplw r3, r0
/* 8032F314 40 80 00 08 */ bge lbl_8032F31C
/* 8032F318 48 00 00 08 */ b lbl_8032F320
lbl_8032F31C:
/* 8032F31C 38 60 00 00 */ li r3, 0
lbl_8032F320:
/* 8032F320 7F 84 E3 78 */ mr r4, r28
/* 8032F324 81 83 00 00 */ lwz r12, 0(r3)
/* 8032F328 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 8032F32C 7D 89 03 A6 */ mtctr r12
/* 8032F330 4E 80 04 21 */ bctrl
lbl_8032F334:
/* 8032F334 7F 83 E3 78 */ mr r3, r28
/* 8032F338 7F C4 F3 78 */ mr r4, r30
/* 8032F33C 81 9C 00 00 */ lwz r12, 0(r28)
/* 8032F340 81 8C 00 08 */ lwz r12, 8(r12)
/* 8032F344 7D 89 03 A6 */ mtctr r12
/* 8032F348 4E 80 04 21 */ bctrl
lbl_8032F34C:
/* 8032F34C 7F 83 E3 78 */ mr r3, r28
/* 8032F350 4B FE 77 61 */ bl setCurrentMtx__11J3DMaterialFv
/* 8032F354 80 7C 00 3C */ lwz r3, 0x3c(r28)
/* 8032F358 3C 00 C0 00 */ lis r0, 0xc000
/* 8032F35C 7C 03 00 40 */ cmplw r3, r0
/* 8032F360 40 80 00 08 */ bge lbl_8032F368
/* 8032F364 48 00 00 08 */ b lbl_8032F36C
lbl_8032F368:
/* 8032F368 38 60 00 00 */ li r3, 0
lbl_8032F36C:
/* 8032F36C 90 7D 00 3C */ stw r3, 0x3c(r29)
/* 8032F370 93 7D 00 2C */ stw r27, 0x2c(r29)
/* 8032F374 80 1C 00 10 */ lwz r0, 0x10(r28)
/* 8032F378 54 00 07 BE */ clrlwi r0, r0, 0x1e
/* 8032F37C 7C 00 00 34 */ cntlzw r0, r0
/* 8032F380 54 04 ED BA */ rlwinm r4, r0, 0x1d, 0x16, 0x1d
/* 8032F384 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */
/* 8032F388 38 03 4A C8 */ addi r0, r3, j3dSys@l /* 0x80434AC8@l */
/* 8032F38C 7C 60 22 14 */ add r3, r0, r4
/* 8032F390 80 83 00 48 */ lwz r4, 0x48(r3)
/* 8032F394 7F A3 EB 78 */ mr r3, r29
/* 8032F398 81 9D 00 00 */ lwz r12, 0(r29)
/* 8032F39C 81 8C 00 08 */ lwz r12, 8(r12)
/* 8032F3A0 7D 89 03 A6 */ mtctr r12
/* 8032F3A4 4E 80 04 21 */ bctrl
/* 8032F3A8 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8032F3AC 41 82 00 28 */ beq lbl_8032F3D4
/* 8032F3B0 93 BF 00 3C */ stw r29, 0x3c(r31)
/* 8032F3B4 80 6D 90 60 */ lwz r3, entryNum__13J3DDrawBuffer(r13)
/* 8032F3B8 38 03 00 01 */ addi r0, r3, 1
/* 8032F3BC 90 0D 90 60 */ stw r0, entryNum__13J3DDrawBuffer(r13)
/* 8032F3C0 7F 83 E3 78 */ mr r3, r28
/* 8032F3C4 81 9C 00 00 */ lwz r12, 0(r28)
/* 8032F3C8 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 8032F3CC 7D 89 03 A6 */ mtctr r12
/* 8032F3D0 4E 80 04 21 */ bctrl
lbl_8032F3D4:
/* 8032F3D4 83 9C 00 04 */ lwz r28, 4(r28)
lbl_8032F3D8:
/* 8032F3D8 28 1C 00 00 */ cmplwi r28, 0
/* 8032F3DC 40 82 FE C4 */ bne lbl_8032F2A0
/* 8032F3E0 39 61 00 20 */ addi r11, r1, 0x20
/* 8032F3E4 48 03 2E 3D */ bl _restgpr_27
/* 8032F3E8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8032F3EC 7C 08 03 A6 */ mtlr r0
/* 8032F3F0 38 21 00 20 */ addi r1, r1, 0x20
/* 8032F3F4 4E 80 00 20 */ blr

View File

@ -1,116 +0,0 @@
lbl_8032F3F8:
/* 8032F3F8 94 21 FF 50 */ stwu r1, -0xb0(r1)
/* 8032F3FC 7C 08 02 A6 */ mflr r0
/* 8032F400 90 01 00 B4 */ stw r0, 0xb4(r1)
/* 8032F404 DB E1 00 A0 */ stfd f31, 0xa0(r1)
/* 8032F408 F3 E1 00 A8 */ psq_st f31, 168(r1), 0, 0 /* qr0 */
/* 8032F40C DB C1 00 90 */ stfd f30, 0x90(r1)
/* 8032F410 F3 C1 00 98 */ psq_st f30, 152(r1), 0, 0 /* qr0 */
/* 8032F414 DB A1 00 80 */ stfd f29, 0x80(r1)
/* 8032F418 F3 A1 00 88 */ psq_st f29, 136(r1), 0, 0 /* qr0 */
/* 8032F41C DB 81 00 70 */ stfd f28, 0x70(r1)
/* 8032F420 F3 81 00 78 */ psq_st f28, 120(r1), 0, 0 /* qr0 */
/* 8032F424 DB 61 00 60 */ stfd f27, 0x60(r1)
/* 8032F428 F3 61 00 68 */ psq_st f27, 104(r1), 0, 0 /* qr0 */
/* 8032F42C DB 41 00 50 */ stfd f26, 0x50(r1)
/* 8032F430 F3 41 00 58 */ psq_st f26, 88(r1), 0, 0 /* qr0 */
/* 8032F434 39 61 00 50 */ addi r11, r1, 0x50
/* 8032F438 48 03 2D 9D */ bl _savegpr_27
/* 8032F43C 7C 7E 1B 78 */ mr r30, r3
/* 8032F440 3B E0 00 00 */ li r31, 0
/* 8032F444 3C 60 80 43 */ lis r3, mCurrentMtx__6J3DSys@ha /* 0x80434BE4@ha */
/* 8032F448 38 63 4B E4 */ addi r3, r3, mCurrentMtx__6J3DSys@l /* 0x80434BE4@l */
/* 8032F44C 38 81 00 08 */ addi r4, r1, 8
/* 8032F450 48 01 70 61 */ bl PSMTXCopy
/* 8032F454 3C 60 80 43 */ lis r3, mCurrentS__6J3DSys@ha /* 0x80434C14@ha */
/* 8032F458 3B 83 4C 14 */ addi r28, r3, mCurrentS__6J3DSys@l /* 0x80434C14@l */
/* 8032F45C C3 FC 00 00 */ lfs f31, 0(r28)
/* 8032F460 C3 DC 00 04 */ lfs f30, 4(r28)
/* 8032F464 C3 BC 00 08 */ lfs f29, 8(r28)
/* 8032F468 3C 60 80 43 */ lis r3, mParentS__6J3DSys@ha /* 0x80434C20@ha */
/* 8032F46C 3B A3 4C 20 */ addi r29, r3, mParentS__6J3DSys@l /* 0x80434C20@l */
/* 8032F470 C3 9D 00 00 */ lfs f28, 0(r29)
/* 8032F474 C3 7D 00 04 */ lfs f27, 4(r29)
/* 8032F478 C3 5D 00 08 */ lfs f26, 8(r29)
/* 8032F47C 80 7E 00 54 */ lwz r3, 0x54(r30)
/* 8032F480 28 03 00 00 */ cmplwi r3, 0
/* 8032F484 41 82 00 24 */ beq lbl_8032F4A8
/* 8032F488 83 ED 90 78 */ lwz r31, mCurrentMtxCalc__8J3DJoint(r13)
/* 8032F48C 90 6D 90 78 */ stw r3, mCurrentMtxCalc__8J3DJoint(r13)
/* 8032F490 93 CD 90 74 */ stw r30, mJoint__10J3DMtxCalc(r13)
/* 8032F494 81 83 00 00 */ lwz r12, 0(r3)
/* 8032F498 81 8C 00 28 */ lwz r12, 0x28(r12)
/* 8032F49C 7D 89 03 A6 */ mtctr r12
/* 8032F4A0 4E 80 04 21 */ bctrl
/* 8032F4A4 48 00 00 24 */ b lbl_8032F4C8
lbl_8032F4A8:
/* 8032F4A8 80 6D 90 78 */ lwz r3, mCurrentMtxCalc__8J3DJoint(r13)
/* 8032F4AC 28 03 00 00 */ cmplwi r3, 0
/* 8032F4B0 41 82 00 18 */ beq lbl_8032F4C8
/* 8032F4B4 93 CD 90 74 */ stw r30, mJoint__10J3DMtxCalc(r13)
/* 8032F4B8 81 83 00 00 */ lwz r12, 0(r3)
/* 8032F4BC 81 8C 00 28 */ lwz r12, 0x28(r12)
/* 8032F4C0 7D 89 03 A6 */ mtctr r12
/* 8032F4C4 4E 80 04 21 */ bctrl
lbl_8032F4C8:
/* 8032F4C8 83 7E 00 04 */ lwz r27, 4(r30)
/* 8032F4CC 28 1B 00 00 */ cmplwi r27, 0
/* 8032F4D0 41 82 00 18 */ beq lbl_8032F4E8
/* 8032F4D4 7F C3 F3 78 */ mr r3, r30
/* 8032F4D8 38 80 00 00 */ li r4, 0
/* 8032F4DC 7F 6C DB 78 */ mr r12, r27
/* 8032F4E0 7D 89 03 A6 */ mtctr r12
/* 8032F4E4 4E 80 04 21 */ bctrl
lbl_8032F4E8:
/* 8032F4E8 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 8032F4EC 28 03 00 00 */ cmplwi r3, 0
/* 8032F4F0 41 82 00 08 */ beq lbl_8032F4F8
/* 8032F4F4 4B FF FF 05 */ bl recursiveCalc__8J3DJointFv
lbl_8032F4F8:
/* 8032F4F8 38 61 00 08 */ addi r3, r1, 8
/* 8032F4FC 3C 80 80 43 */ lis r4, mCurrentMtx__6J3DSys@ha /* 0x80434BE4@ha */
/* 8032F500 38 84 4B E4 */ addi r4, r4, mCurrentMtx__6J3DSys@l /* 0x80434BE4@l */
/* 8032F504 48 01 6F AD */ bl PSMTXCopy
/* 8032F508 3C 60 80 43 */ lis r3, mCurrentS__6J3DSys@ha /* 0x80434C14@ha */
/* 8032F50C D3 E3 4C 14 */ stfs f31, mCurrentS__6J3DSys@l(r3) /* 0x80434C14@l */
/* 8032F510 D3 DC 00 04 */ stfs f30, 4(r28)
/* 8032F514 D3 BC 00 08 */ stfs f29, 8(r28)
/* 8032F518 3C 60 80 43 */ lis r3, mParentS__6J3DSys@ha /* 0x80434C20@ha */
/* 8032F51C D3 83 4C 20 */ stfs f28, mParentS__6J3DSys@l(r3) /* 0x80434C20@l */
/* 8032F520 D3 7D 00 04 */ stfs f27, 4(r29)
/* 8032F524 D3 5D 00 08 */ stfs f26, 8(r29)
/* 8032F528 28 1F 00 00 */ cmplwi r31, 0
/* 8032F52C 41 82 00 08 */ beq lbl_8032F534
/* 8032F530 93 ED 90 78 */ stw r31, mCurrentMtxCalc__8J3DJoint(r13)
lbl_8032F534:
/* 8032F534 28 1B 00 00 */ cmplwi r27, 0
/* 8032F538 41 82 00 18 */ beq lbl_8032F550
/* 8032F53C 7F C3 F3 78 */ mr r3, r30
/* 8032F540 38 80 00 01 */ li r4, 1
/* 8032F544 7F 6C DB 78 */ mr r12, r27
/* 8032F548 7D 89 03 A6 */ mtctr r12
/* 8032F54C 4E 80 04 21 */ bctrl
lbl_8032F550:
/* 8032F550 80 7E 00 10 */ lwz r3, 0x10(r30)
/* 8032F554 28 03 00 00 */ cmplwi r3, 0
/* 8032F558 41 82 00 08 */ beq lbl_8032F560
/* 8032F55C 4B FF FE 9D */ bl recursiveCalc__8J3DJointFv
lbl_8032F560:
/* 8032F560 E3 E1 00 A8 */ psq_l f31, 168(r1), 0, 0 /* qr0 */
/* 8032F564 CB E1 00 A0 */ lfd f31, 0xa0(r1)
/* 8032F568 E3 C1 00 98 */ psq_l f30, 152(r1), 0, 0 /* qr0 */
/* 8032F56C CB C1 00 90 */ lfd f30, 0x90(r1)
/* 8032F570 E3 A1 00 88 */ psq_l f29, 136(r1), 0, 0 /* qr0 */
/* 8032F574 CB A1 00 80 */ lfd f29, 0x80(r1)
/* 8032F578 E3 81 00 78 */ psq_l f28, 120(r1), 0, 0 /* qr0 */
/* 8032F57C CB 81 00 70 */ lfd f28, 0x70(r1)
/* 8032F580 E3 61 00 68 */ psq_l f27, 104(r1), 0, 0 /* qr0 */
/* 8032F584 CB 61 00 60 */ lfd f27, 0x60(r1)
/* 8032F588 E3 41 00 58 */ psq_l f26, 88(r1), 0, 0 /* qr0 */
/* 8032F58C CB 41 00 50 */ lfd f26, 0x50(r1)
/* 8032F590 39 61 00 50 */ addi r11, r1, 0x50
/* 8032F594 48 03 2C 8D */ bl _restgpr_27
/* 8032F598 80 01 00 B4 */ lwz r0, 0xb4(r1)
/* 8032F59C 7C 08 03 A6 */ mtlr r0
/* 8032F5A0 38 21 00 B0 */ addi r1, r1, 0xb0
/* 8032F5A4 4E 80 00 20 */ blr

View File

@ -24,6 +24,7 @@ public:
static J3DMtxBuffer* getMtxBuffer() { return mMtxBuffer; }
static J3DJoint* getJoint() { return mJoint; }
static void setJoint(J3DJoint* joint) { mJoint = joint; }
static J3DMtxBuffer* mMtxBuffer;
static J3DJoint* mJoint;
@ -63,7 +64,11 @@ public:
Vec* getMax() { return &mMax; }
Vec* getMin() { return &mMin; }
void setCallBack(J3DJointCallBack callback) { mCallBack = callback; }
J3DJointCallBack getCallBack() { return mCallBack; }
void setMtxCalc(J3DMtxCalc* i_mtxCalc) { mMtxCalc = i_mtxCalc; }
J3DMtxCalc* getMtxCalc() { return mMtxCalc; }
J3DMtxCalc* getCurrentMtxCalc() { return mCurrentMtxCalc; };
J3DJoint* getChild() { return mChild; }
static J3DMtxCalc* mCurrentMtxCalc;

View File

@ -75,6 +75,7 @@ public:
inline void calcZRatio();
void setNonSort() { mSortType = 5; }
void setZSort() { mSortType = 2; }
void setZMtx(MtxP mtx) { mpZMtx = mtx; }
public:
/* 0x00 */ J3DPacket** mpBuf;

View File

@ -64,6 +64,8 @@ public:
GXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); }
J3DFog* getFog() { return mPEBlock->getFog(); }
J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); }
u16 getIndex() { return mIndex; }
bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; }
void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); }
void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); }

View File

@ -102,6 +102,7 @@ public:
void lock() { onFlag(LOCKED); }
void unlock() { offFlag(LOCKED); }
J3DTexMtxObj* getTexMtxObj() const { return mpTexMtxObj; }
bool isLocked() const { return checkFlag(1); }
public:
/* 0x10 */ u32 mFlags;
@ -150,6 +151,7 @@ public:
J3DShapePacket* getShapePacket() const { return mpShapePacket; }
void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; }
void setMaterialAnmID(J3DMaterialAnm* materialAnm) { mpMaterialAnm = materialAnm; }
bool isChanged() const { return mDiffFlag & 0x80000000; }
virtual ~J3DMatPacket();

View File

@ -4,54 +4,29 @@
//
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JMath/JMath.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_mtx.h"
//
// Types:
//
struct J3DDrawBuffer {
static u8 entryNum[4 + 4 /* padding */];
};
//
// Forward References:
//
extern "C" void init__25J3DMtxCalcJ3DSysInitBasicFRC3VecRA3_A4_Cf();
extern "C" void init__24J3DMtxCalcJ3DSysInitMayaFRC3VecRA3_A4_Cf();
extern "C" void calcTransform__28J3DMtxCalcCalcTransformBasicFRC16J3DTransformInfo();
extern "C" void calcTransform__32J3DMtxCalcCalcTransformSoftimageFRC16J3DTransformInfo();
extern "C" void calcTransform__27J3DMtxCalcCalcTransformMayaFRC16J3DTransformInfo();
extern "C" void appendChild__8J3DJointFP8J3DJoint();
extern "C" void __ct__8J3DJointFv();
extern "C" void entryIn__8J3DJointFv();
extern "C" void recursiveCalc__8J3DJointFv();
extern "C" u8 mMtxBuffer__10J3DMtxCalc[4];
extern "C" u8 mJoint__10J3DMtxCalc[4];
extern "C" u8 mCurrentMtxCalc__8J3DJoint[4 + 4 /* padding */];
//
// External References:
//
extern "C" void
J3DGetTranslateRotateMtx__FRC16J3DTransformInfoPA4_f(J3DTransformInfo const& param_0,
f32 (*param_1)[4]);
extern "C" void J3DGetTranslateRotateMtx__FsssfffPA4_f();
extern "C" void setCurrentMtx__11J3DMaterialFv();
extern "C" void JMAMTXApplyScale__FPA4_CfPA4_ffff(const Mtx*, Mtx*, f32, f32, f32);
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" f32 mCurrentS__6J3DSys[3];
extern "C" f32 mParentS__6J3DSys[3];
extern "C" u8 entryNum__13J3DDrawBuffer[4 + 4 /* padding */];
//
// Declarations:
//
@ -204,28 +179,18 @@ void J3DJoint::appendChild(J3DJoint* pChild) {
}
/* ############################################################################################## */
/* 803A2080-803A208C 02E6E0 000C+00 1/1 0/0 0/0 .rodata @1257 */
SECTION_RODATA static u8 const lit_1257[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A2080, &lit_1257);
/* 803A208C-803A2098 02E6EC 000C+00 1/1 0/0 0/0 .rodata @1259 */
SECTION_RODATA static u8 const lit_1259[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A208C, &lit_1259);
#pragma push
#pragma force_active on
/* dead data */
SECTION_DEAD static u32 const pad_803A2080[2] = {0,0};
#pragma pop
/* 804564A4-804564A8 004AA4 0004+00 1/1 0/0 0/0 .sdata2 @1220 */
SECTION_SDATA2 static u8 lit_1220[4] = {
0x00,
0x00,
0x00,
0x00,
struct copyhelper {
u32 x[8];
};
/* 8032F170-8032F254 329AB0 00E4+00 0/0 1/1 0/0 .text __ct__8J3DJointFv */
#ifdef NONMATCHING
J3DJoint::J3DJoint() {
mCallBackUserData = NULL;
mCallBack = NULL;
@ -235,46 +200,105 @@ J3DJoint::J3DJoint() {
mJntNo = 0;
mKind = 1;
mScaleCompensate = false;
mTransformInfo = j3dDefaultTransformInfo;
*(copyhelper*)&mTransformInfo = *(copyhelper*)&j3dDefaultTransformInfo;
mBoundingSphereRadius = 0.0f;
mMtxCalc = NULL;
mMesh = NULL;
Vec init = {0.0f, 0.0f, 0.0f};
mMin = init;
mMax = init;
Vec init2 = {0.0f, 0.0f, 0.0f};
mMax = init2;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DJoint::J3DJoint() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/__ct__8J3DJointFv.s"
}
#pragma pop
#endif
/* 8032F254-8032F3F8 329B94 01A4+00 0/0 1/1 0/0 .text entryIn__8J3DJointFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DJoint::entryIn() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/entryIn__8J3DJointFv.s"
void J3DJoint::entryIn() {
MtxP anmMtx = j3dSys.getModel()->i_getAnmMtx(mJntNo);
j3dSys.getDrawBuffer(0)->setZMtx(anmMtx);
j3dSys.getDrawBuffer(1)->setZMtx(anmMtx);
for (J3DMaterial* mesh = mMesh; mesh != NULL; ) {
if (mesh->getShape()->checkFlag(1)) {
mesh = mesh->getNext();
} else {
J3DMatPacket* matPacket = j3dSys.getModel()->getMatPacket(mesh->getIndex());
J3DShapePacket* shapePacket = j3dSys.getModel()->getShapePacket(mesh->getShape()->getIndex());
if (!matPacket->isLocked()) {
if (mesh->getMaterialAnm()) {
J3DMaterialAnm* piVar8 = mesh->getMaterialAnm();
piVar8->calc(mesh);
}
mesh->calc(anmMtx);
}
mesh->setCurrentMtx();
matPacket->setMaterialAnmID(mesh->getMaterialAnm());
matPacket->setShapePacket(shapePacket);
J3DDrawBuffer* drawBuffer = j3dSys.getDrawBuffer(mesh->isDrawModeOpaTexEdge());
if ((u8)matPacket->entry(drawBuffer)) {
j3dSys.setMatPacket(matPacket);
J3DDrawBuffer::entryNum++;
mesh->makeDisplayList();
}
mesh = mesh->getNext();
}
}
}
#pragma pop
/* ############################################################################################## */
/* 804515F8-80451600 000AF8 0004+04 1/1 1/1 0/0 .sbss mCurrentMtxCalc__8J3DJoint */
J3DMtxCalc* J3DJoint::mCurrentMtxCalc;
/* 8032F3F8-8032F5A8 329D38 01B0+00 0/0 1/1 0/0 .text recursiveCalc__8J3DJointFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DJoint::recursiveCalc() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/recursiveCalc__8J3DJointFv.s"
void J3DJoint::recursiveCalc() {
J3DMtxCalc* prevMtxCalc = NULL;
Mtx prevCurrentMtx;
mDoMtx_copy(J3DSys::mCurrentMtx, prevCurrentMtx);
f32 currentX = J3DSys::mCurrentS.x;
f32 currentY = J3DSys::mCurrentS.y;
f32 currentZ = J3DSys::mCurrentS.z;
f32 parentX = J3DSys::mParentS.x;
f32 parentY = J3DSys::mParentS.y;
f32 parentZ = J3DSys::mParentS.z;
if (getMtxCalc() != NULL) {
prevMtxCalc = getCurrentMtxCalc();
J3DMtxCalc* piVar2 = this->getMtxCalc();
setCurrentMtxCalc(piVar2);
J3DMtxCalc::setJoint(this);
piVar2->calc();
} else {
if (getCurrentMtxCalc() != NULL) {
J3DMtxCalc* uVar6 = getCurrentMtxCalc();
J3DMtxCalc::setJoint(this);
uVar6->calc();
}
}
J3DJointCallBack jointCallback = getCallBack();
if (jointCallback != NULL) {
(*jointCallback)(this, 0);
}
J3DJoint* child = getChild();
if (child != NULL) {
child->recursiveCalc();
}
mDoMtx_copy(prevCurrentMtx, J3DSys::mCurrentMtx);
J3DSys::mCurrentS.x = currentX;
J3DSys::mCurrentS.y = currentY;
J3DSys::mCurrentS.z = currentZ;
J3DSys::mParentS.x = parentX;
J3DSys::mParentS.y = parentY;
J3DSys::mParentS.z = parentZ;
if (prevMtxCalc != NULL) {
setCurrentMtxCalc(prevMtxCalc);
}
if (jointCallback != NULL) {
(*jointCallback)(this, 1);
}
J3DJoint* younger = getYounger();
if (younger != NULL) {
younger->recursiveCalc();
}
}
#pragma pop