Fix some JSUConvertOffsetToPtr issues (#2063)

* Fix some JSUConvertOffsetToPtr issues

* Match some J3DAnmLoader functions
This commit is contained in:
hatal175 2024-02-05 07:21:05 +02:00 committed by GitHub
parent f260221f43
commit e98d9c845c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
33 changed files with 161 additions and 907 deletions

View File

@ -1,25 +0,0 @@
lbl_802F4110:
/* 802F4110 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F4114 7C 08 02 A6 */ mflr r0
/* 802F4118 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F411C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802F4120 7C 7F 1B 78 */ mr r31, r3
/* 802F4124 4B FF D8 85 */ bl setTevStageInfo__11J2DTevStageFRC15J2DTevStageInfo
/* 802F4128 88 1F 00 07 */ lbz r0, 7(r31)
/* 802F412C 54 04 07 B6 */ rlwinm r4, r0, 0, 0x1e, 0x1b
/* 802F4130 38 62 C7 98 */ la r3, j2dDefaultTevSwapMode(r2) /* 80456198-_SDA2_BASE_ */
/* 802F4134 88 03 00 01 */ lbz r0, 1(r3)
/* 802F4138 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 802F413C 7C 80 03 78 */ or r0, r4, r0
/* 802F4140 98 1F 00 07 */ stb r0, 7(r31)
/* 802F4144 88 1F 00 07 */ lbz r0, 7(r31)
/* 802F4148 54 03 00 3A */ rlwinm r3, r0, 0, 0, 0x1d
/* 802F414C 88 02 C7 98 */ lbz r0, j2dDefaultTevSwapMode(r2)
/* 802F4150 7C 60 03 78 */ or r0, r3, r0
/* 802F4154 98 1F 00 07 */ stb r0, 7(r31)
/* 802F4158 7F E3 FB 78 */ mr r3, r31
/* 802F415C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802F4160 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F4164 7C 08 03 A6 */ mtlr r0
/* 802F4168 38 21 00 10 */ addi r1, r1, 0x10
/* 802F416C 4E 80 00 20 */ blr

View File

@ -1,116 +0,0 @@
lbl_802F2AD0:
/* 802F2AD0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802F2AD4 7C 08 02 A6 */ mflr r0
/* 802F2AD8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802F2ADC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802F2AE0 93 C1 00 08 */ stw r30, 8(r1)
/* 802F2AE4 7C 7E 1B 78 */ mr r30, r3
/* 802F2AE8 7C 9F 23 78 */ mr r31, r4
/* 802F2AEC A0 04 00 08 */ lhz r0, 8(r4)
/* 802F2AF0 B0 03 00 00 */ sth r0, 0(r3)
/* 802F2AF4 7F E3 FB 78 */ mr r3, r31
/* 802F2AF8 80 84 00 0C */ lwz r4, 0xc(r4)
/* 802F2AFC 48 00 17 DD */ bl func_802F42D8
/* 802F2B00 90 7E 00 04 */ stw r3, 4(r30)
/* 802F2B04 7F E3 FB 78 */ mr r3, r31
/* 802F2B08 80 9F 00 10 */ lwz r4, 0x10(r31)
/* 802F2B0C 48 00 17 B5 */ bl func_802F42C0
/* 802F2B10 90 7E 00 08 */ stw r3, 8(r30)
/* 802F2B14 80 9F 00 18 */ lwz r4, 0x18(r31)
/* 802F2B18 28 04 00 00 */ cmplwi r4, 0
/* 802F2B1C 41 82 00 24 */ beq lbl_802F2B40
/* 802F2B20 80 1F 00 14 */ lwz r0, 0x14(r31)
/* 802F2B24 7C 00 20 50 */ subf r0, r0, r4
/* 802F2B28 28 00 00 04 */ cmplwi r0, 4
/* 802F2B2C 40 81 00 14 */ ble lbl_802F2B40
/* 802F2B30 7F E3 FB 78 */ mr r3, r31
/* 802F2B34 48 00 17 75 */ bl func_802F42A8
/* 802F2B38 90 7E 00 0C */ stw r3, 0xc(r30)
/* 802F2B3C 48 00 00 0C */ b lbl_802F2B48
lbl_802F2B40:
/* 802F2B40 38 00 00 00 */ li r0, 0
/* 802F2B44 90 1E 00 0C */ stw r0, 0xc(r30)
lbl_802F2B48:
/* 802F2B48 7F E3 FB 78 */ mr r3, r31
/* 802F2B4C 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 802F2B50 48 00 17 41 */ bl func_802F4290
/* 802F2B54 90 7E 00 30 */ stw r3, 0x30(r30)
/* 802F2B58 7F E3 FB 78 */ mr r3, r31
/* 802F2B5C 80 9F 00 20 */ lwz r4, 0x20(r31)
/* 802F2B60 48 00 17 19 */ bl func_802F4278
/* 802F2B64 90 7E 00 10 */ stw r3, 0x10(r30)
/* 802F2B68 7F E3 FB 78 */ mr r3, r31
/* 802F2B6C 80 9F 00 24 */ lwz r4, 0x24(r31)
/* 802F2B70 48 00 16 F1 */ bl func_802F4260
/* 802F2B74 90 7E 00 14 */ stw r3, 0x14(r30)
/* 802F2B78 7F E3 FB 78 */ mr r3, r31
/* 802F2B7C 80 9F 00 28 */ lwz r4, 0x28(r31)
/* 802F2B80 48 00 16 C9 */ bl func_802F4248
/* 802F2B84 90 7E 00 18 */ stw r3, 0x18(r30)
/* 802F2B88 7F E3 FB 78 */ mr r3, r31
/* 802F2B8C 80 9F 00 2C */ lwz r4, 0x2c(r31)
/* 802F2B90 48 00 16 D1 */ bl func_802F4260
/* 802F2B94 90 7E 00 1C */ stw r3, 0x1c(r30)
/* 802F2B98 7F E3 FB 78 */ mr r3, r31
/* 802F2B9C 80 9F 00 30 */ lwz r4, 0x30(r31)
/* 802F2BA0 48 00 16 91 */ bl func_802F4230
/* 802F2BA4 90 7E 00 20 */ stw r3, 0x20(r30)
/* 802F2BA8 7F E3 FB 78 */ mr r3, r31
/* 802F2BAC 80 9F 00 34 */ lwz r4, 0x34(r31)
/* 802F2BB0 48 00 16 69 */ bl func_802F4218
/* 802F2BB4 90 7E 00 24 */ stw r3, 0x24(r30)
/* 802F2BB8 7F E3 FB 78 */ mr r3, r31
/* 802F2BBC 80 9F 00 38 */ lwz r4, 0x38(r31)
/* 802F2BC0 48 00 17 01 */ bl func_802F42C0
/* 802F2BC4 90 7E 00 28 */ stw r3, 0x28(r30)
/* 802F2BC8 7F E3 FB 78 */ mr r3, r31
/* 802F2BCC 80 9F 00 3C */ lwz r4, 0x3c(r31)
/* 802F2BD0 48 00 16 F1 */ bl func_802F42C0
/* 802F2BD4 90 7E 00 2C */ stw r3, 0x2c(r30)
/* 802F2BD8 7F E3 FB 78 */ mr r3, r31
/* 802F2BDC 80 9F 00 40 */ lwz r4, 0x40(r31)
/* 802F2BE0 48 00 16 21 */ bl func_802F4200
/* 802F2BE4 90 7E 00 34 */ stw r3, 0x34(r30)
/* 802F2BE8 7F E3 FB 78 */ mr r3, r31
/* 802F2BEC 80 9F 00 44 */ lwz r4, 0x44(r31)
/* 802F2BF0 48 00 15 F9 */ bl func_802F41E8
/* 802F2BF4 90 7E 00 38 */ stw r3, 0x38(r30)
/* 802F2BF8 7F E3 FB 78 */ mr r3, r31
/* 802F2BFC 80 9F 00 48 */ lwz r4, 0x48(r31)
/* 802F2C00 48 00 16 79 */ bl func_802F4278
/* 802F2C04 90 7E 00 3C */ stw r3, 0x3c(r30)
/* 802F2C08 7F E3 FB 78 */ mr r3, r31
/* 802F2C0C 80 9F 00 4C */ lwz r4, 0x4c(r31)
/* 802F2C10 48 00 16 51 */ bl func_802F4260
/* 802F2C14 90 7E 00 40 */ stw r3, 0x40(r30)
/* 802F2C18 7F E3 FB 78 */ mr r3, r31
/* 802F2C1C 80 9F 00 50 */ lwz r4, 0x50(r31)
/* 802F2C20 48 00 15 B1 */ bl func_802F41D0
/* 802F2C24 90 7E 00 44 */ stw r3, 0x44(r30)
/* 802F2C28 7F E3 FB 78 */ mr r3, r31
/* 802F2C2C 80 9F 00 54 */ lwz r4, 0x54(r31)
/* 802F2C30 48 00 15 89 */ bl func_802F41B8
/* 802F2C34 90 7E 00 48 */ stw r3, 0x48(r30)
/* 802F2C38 7F E3 FB 78 */ mr r3, r31
/* 802F2C3C 80 9F 00 58 */ lwz r4, 0x58(r31)
/* 802F2C40 48 00 15 61 */ bl func_802F41A0
/* 802F2C44 90 7E 00 4C */ stw r3, 0x4c(r30)
/* 802F2C48 7F E3 FB 78 */ mr r3, r31
/* 802F2C4C 80 9F 00 5C */ lwz r4, 0x5c(r31)
/* 802F2C50 48 00 15 39 */ bl func_802F4188
/* 802F2C54 90 7E 00 50 */ stw r3, 0x50(r30)
/* 802F2C58 7F E3 FB 78 */ mr r3, r31
/* 802F2C5C 80 9F 00 60 */ lwz r4, 0x60(r31)
/* 802F2C60 48 00 15 11 */ bl func_802F4170
/* 802F2C64 90 7E 00 54 */ stw r3, 0x54(r30)
/* 802F2C68 7F E3 FB 78 */ mr r3, r31
/* 802F2C6C 80 9F 00 64 */ lwz r4, 0x64(r31)
/* 802F2C70 48 00 15 F1 */ bl func_802F4260
/* 802F2C74 90 7E 00 58 */ stw r3, 0x58(r30)
/* 802F2C78 7F C3 F3 78 */ mr r3, r30
/* 802F2C7C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802F2C80 83 C1 00 08 */ lwz r30, 8(r1)
/* 802F2C84 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802F2C88 7C 08 03 A6 */ mtlr r0
/* 802F2C8C 38 21 00 10 */ addi r1, r1, 0x10
/* 802F2C90 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4170:
/* 802F4170 28 04 00 00 */ cmplwi r4, 0
/* 802F4174 40 82 00 0C */ bne lbl_802F4180
/* 802F4178 38 60 00 00 */ li r3, 0
/* 802F417C 4E 80 00 20 */ blr
lbl_802F4180:
/* 802F4180 7C 63 22 14 */ add r3, r3, r4
/* 802F4184 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4188:
/* 802F4188 28 04 00 00 */ cmplwi r4, 0
/* 802F418C 40 82 00 0C */ bne lbl_802F4198
/* 802F4190 38 60 00 00 */ li r3, 0
/* 802F4194 4E 80 00 20 */ blr
lbl_802F4198:
/* 802F4198 7C 63 22 14 */ add r3, r3, r4
/* 802F419C 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F41A0:
/* 802F41A0 28 04 00 00 */ cmplwi r4, 0
/* 802F41A4 40 82 00 0C */ bne lbl_802F41B0
/* 802F41A8 38 60 00 00 */ li r3, 0
/* 802F41AC 4E 80 00 20 */ blr
lbl_802F41B0:
/* 802F41B0 7C 63 22 14 */ add r3, r3, r4
/* 802F41B4 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F41B8:
/* 802F41B8 28 04 00 00 */ cmplwi r4, 0
/* 802F41BC 40 82 00 0C */ bne lbl_802F41C8
/* 802F41C0 38 60 00 00 */ li r3, 0
/* 802F41C4 4E 80 00 20 */ blr
lbl_802F41C8:
/* 802F41C8 7C 63 22 14 */ add r3, r3, r4
/* 802F41CC 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F41D0:
/* 802F41D0 28 04 00 00 */ cmplwi r4, 0
/* 802F41D4 40 82 00 0C */ bne lbl_802F41E0
/* 802F41D8 38 60 00 00 */ li r3, 0
/* 802F41DC 4E 80 00 20 */ blr
lbl_802F41E0:
/* 802F41E0 7C 63 22 14 */ add r3, r3, r4
/* 802F41E4 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F41E8:
/* 802F41E8 28 04 00 00 */ cmplwi r4, 0
/* 802F41EC 40 82 00 0C */ bne lbl_802F41F8
/* 802F41F0 38 60 00 00 */ li r3, 0
/* 802F41F4 4E 80 00 20 */ blr
lbl_802F41F8:
/* 802F41F8 7C 63 22 14 */ add r3, r3, r4
/* 802F41FC 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4200:
/* 802F4200 28 04 00 00 */ cmplwi r4, 0
/* 802F4204 40 82 00 0C */ bne lbl_802F4210
/* 802F4208 38 60 00 00 */ li r3, 0
/* 802F420C 4E 80 00 20 */ blr
lbl_802F4210:
/* 802F4210 7C 63 22 14 */ add r3, r3, r4
/* 802F4214 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4218:
/* 802F4218 28 04 00 00 */ cmplwi r4, 0
/* 802F421C 40 82 00 0C */ bne lbl_802F4228
/* 802F4220 38 60 00 00 */ li r3, 0
/* 802F4224 4E 80 00 20 */ blr
lbl_802F4228:
/* 802F4228 7C 63 22 14 */ add r3, r3, r4
/* 802F422C 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4230:
/* 802F4230 28 04 00 00 */ cmplwi r4, 0
/* 802F4234 40 82 00 0C */ bne lbl_802F4240
/* 802F4238 38 60 00 00 */ li r3, 0
/* 802F423C 4E 80 00 20 */ blr
lbl_802F4240:
/* 802F4240 7C 63 22 14 */ add r3, r3, r4
/* 802F4244 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4248:
/* 802F4248 28 04 00 00 */ cmplwi r4, 0
/* 802F424C 40 82 00 0C */ bne lbl_802F4258
/* 802F4250 38 60 00 00 */ li r3, 0
/* 802F4254 4E 80 00 20 */ blr
lbl_802F4258:
/* 802F4258 7C 63 22 14 */ add r3, r3, r4
/* 802F425C 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4260:
/* 802F4260 28 04 00 00 */ cmplwi r4, 0
/* 802F4264 40 82 00 0C */ bne lbl_802F4270
/* 802F4268 38 60 00 00 */ li r3, 0
/* 802F426C 4E 80 00 20 */ blr
lbl_802F4270:
/* 802F4270 7C 63 22 14 */ add r3, r3, r4
/* 802F4274 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4278:
/* 802F4278 28 04 00 00 */ cmplwi r4, 0
/* 802F427C 40 82 00 0C */ bne lbl_802F4288
/* 802F4280 38 60 00 00 */ li r3, 0
/* 802F4284 4E 80 00 20 */ blr
lbl_802F4288:
/* 802F4288 7C 63 22 14 */ add r3, r3, r4
/* 802F428C 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F4290:
/* 802F4290 28 04 00 00 */ cmplwi r4, 0
/* 802F4294 40 82 00 0C */ bne lbl_802F42A0
/* 802F4298 38 60 00 00 */ li r3, 0
/* 802F429C 4E 80 00 20 */ blr
lbl_802F42A0:
/* 802F42A0 7C 63 22 14 */ add r3, r3, r4
/* 802F42A4 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F42A8:
/* 802F42A8 28 04 00 00 */ cmplwi r4, 0
/* 802F42AC 40 82 00 0C */ bne lbl_802F42B8
/* 802F42B0 38 60 00 00 */ li r3, 0
/* 802F42B4 4E 80 00 20 */ blr
lbl_802F42B8:
/* 802F42B8 7C 63 22 14 */ add r3, r3, r4
/* 802F42BC 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F42C0:
/* 802F42C0 28 04 00 00 */ cmplwi r4, 0
/* 802F42C4 40 82 00 0C */ bne lbl_802F42D0
/* 802F42C8 38 60 00 00 */ li r3, 0
/* 802F42CC 4E 80 00 20 */ blr
lbl_802F42D0:
/* 802F42D0 7C 63 22 14 */ add r3, r3, r4
/* 802F42D4 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_802F42D8:
/* 802F42D8 28 04 00 00 */ cmplwi r4, 0
/* 802F42DC 40 82 00 0C */ bne lbl_802F42E8
/* 802F42E0 38 60 00 00 */ li r3, 0
/* 802F42E4 4E 80 00 20 */ blr
lbl_802F42E8:
/* 802F42E8 7C 63 22 14 */ add r3, r3, r4
/* 802F42EC 4E 80 00 20 */ blr

View File

@ -1,8 +0,0 @@
lbl_803341CC:
/* 803341CC 3C 80 80 3D */ lis r4, __vt__16J3DClusterLoader@ha /* 0x803CF0F8@ha */
/* 803341D0 38 04 F0 F8 */ addi r0, r4, __vt__16J3DClusterLoader@l /* 0x803CF0F8@l */
/* 803341D4 90 03 00 00 */ stw r0, 0(r3)
/* 803341D8 3C 80 80 3D */ lis r4, __vt__20J3DClusterLoader_v15@ha /* 0x803CF0E8@ha */
/* 803341DC 38 04 F0 E8 */ addi r0, r4, __vt__20J3DClusterLoader_v15@l /* 0x803CF0E8@l */
/* 803341E0 90 03 00 00 */ stw r0, 0(r3)
/* 803341E4 4E 80 00 20 */ blr

View File

@ -1,26 +0,0 @@
lbl_803341E8:
/* 803341E8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803341EC 7C 08 02 A6 */ mflr r0
/* 803341F0 90 01 00 14 */ stw r0, 0x14(r1)
/* 803341F4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803341F8 7C 7F 1B 79 */ or. r31, r3, r3
/* 803341FC 41 82 00 30 */ beq lbl_8033422C
/* 80334200 3C 60 80 3D */ lis r3, __vt__20J3DClusterLoader_v15@ha /* 0x803CF0E8@ha */
/* 80334204 38 03 F0 E8 */ addi r0, r3, __vt__20J3DClusterLoader_v15@l /* 0x803CF0E8@l */
/* 80334208 90 1F 00 00 */ stw r0, 0(r31)
/* 8033420C 41 82 00 10 */ beq lbl_8033421C
/* 80334210 3C 60 80 3D */ lis r3, __vt__16J3DClusterLoader@ha /* 0x803CF0F8@ha */
/* 80334214 38 03 F0 F8 */ addi r0, r3, __vt__16J3DClusterLoader@l /* 0x803CF0F8@l */
/* 80334218 90 1F 00 00 */ stw r0, 0(r31)
lbl_8033421C:
/* 8033421C 7C 80 07 35 */ extsh. r0, r4
/* 80334220 40 81 00 0C */ ble lbl_8033422C
/* 80334224 7F E3 FB 78 */ mr r3, r31
/* 80334228 4B F9 AB 15 */ bl __dl__FPv
lbl_8033422C:
/* 8033422C 7F E3 FB 78 */ mr r3, r31
/* 80334230 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80334234 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80334238 7C 08 03 A6 */ mtlr r0
/* 8033423C 38 21 00 10 */ addi r1, r1, 0x10
/* 80334240 4E 80 00 20 */ blr

View File

@ -1,52 +0,0 @@
lbl_80334244:
/* 80334244 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80334248 7C 08 02 A6 */ mflr r0
/* 8033424C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80334250 39 61 00 20 */ addi r11, r1, 0x20
/* 80334254 48 02 DF 7D */ bl _savegpr_26
/* 80334258 7C 7A 1B 78 */ mr r26, r3
/* 8033425C 7C 9F 23 78 */ mr r31, r4
/* 80334260 38 60 00 28 */ li r3, 0x28
/* 80334264 4B F9 A9 E9 */ bl __nw__FUl
/* 80334268 7C 60 1B 79 */ or. r0, r3, r3
/* 8033426C 41 82 00 0C */ beq lbl_80334278
/* 80334270 4B FF 9F 89 */ bl __ct__13J3DDeformDataFv
/* 80334274 7C 60 1B 78 */ mr r0, r3
lbl_80334278:
/* 80334278 90 1A 00 04 */ stw r0, 4(r26)
/* 8033427C 3B 9F 00 20 */ addi r28, r31, 0x20
/* 80334280 3B 60 00 00 */ li r27, 0
/* 80334284 3C 60 43 4C */ lis r3, 0x434C /* 0x434C5331@ha */
/* 80334288 3B A3 53 31 */ addi r29, r3, 0x5331 /* 0x434C5331@l */
/* 8033428C 3C 60 80 3A */ lis r3, J3DClusterLoader__stringBase0@ha /* 0x803A2098@ha */
/* 80334290 3B C3 20 98 */ addi r30, r3, J3DClusterLoader__stringBase0@l /* 0x803A2098@l */
/* 80334294 83 FF 00 0C */ lwz r31, 0xc(r31)
/* 80334298 48 00 00 3C */ b lbl_803342D4
lbl_8033429C:
/* 8033429C 80 1C 00 00 */ lwz r0, 0(r28)
/* 803342A0 7C 00 E8 00 */ cmpw r0, r29
/* 803342A4 41 82 00 08 */ beq lbl_803342AC
/* 803342A8 48 00 00 14 */ b lbl_803342BC
lbl_803342AC:
/* 803342AC 7F 43 D3 78 */ mr r3, r26
/* 803342B0 7F 84 E3 78 */ mr r4, r28
/* 803342B4 48 00 00 45 */ bl readCluster__20J3DClusterLoader_v15FPC15J3DClusterBlock
/* 803342B8 48 00 00 10 */ b lbl_803342C8
lbl_803342BC:
/* 803342BC 7F C3 F3 78 */ mr r3, r30
/* 803342C0 4C C6 31 82 */ crclr 6
/* 803342C4 4B CD 27 F9 */ bl OSReport
lbl_803342C8:
/* 803342C8 80 1C 00 04 */ lwz r0, 4(r28)
/* 803342CC 7F 9C 02 14 */ add r28, r28, r0
/* 803342D0 3B 7B 00 01 */ addi r27, r27, 1
lbl_803342D4:
/* 803342D4 7C 1B F8 40 */ cmplw r27, r31
/* 803342D8 41 80 FF C4 */ blt lbl_8033429C
/* 803342DC 80 7A 00 04 */ lwz r3, 4(r26)
/* 803342E0 39 61 00 20 */ addi r11, r1, 0x20
/* 803342E4 48 02 DF 39 */ bl _restgpr_26
/* 803342E8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803342EC 7C 08 03 A6 */ mtlr r0
/* 803342F0 38 21 00 20 */ addi r1, r1, 0x20
/* 803342F4 4E 80 00 20 */ blr

View File

@ -1,121 +0,0 @@
lbl_80336168:
/* 80336168 94 21 FF 60 */ stwu r1, -0xa0(r1)
/* 8033616C 7C 08 02 A6 */ mflr r0
/* 80336170 90 01 00 A4 */ stw r0, 0xa4(r1)
/* 80336174 39 61 00 A0 */ addi r11, r1, 0xa0
/* 80336178 48 02 C0 61 */ bl _savegpr_28
/* 8033617C 7C 7E 1B 78 */ mr r30, r3
/* 80336180 7C 9C 23 78 */ mr r28, r4
/* 80336184 7C BF 2B 78 */ mr r31, r5
/* 80336188 38 61 00 08 */ addi r3, r1, 8
/* 8033618C 4B FF A0 A9 */ bl __ct__18J3DMaterialFactoryFRC18J3DMaterialDLBlock
/* 80336190 80 7E 00 08 */ lwz r3, 8(r30)
/* 80336194 A0 03 00 04 */ lhz r0, 4(r3)
/* 80336198 28 00 00 00 */ cmplwi r0, 0
/* 8033619C 40 82 01 18 */ bne lbl_803362B4
/* 803361A0 38 00 00 01 */ li r0, 1
/* 803361A4 B0 03 00 1C */ sth r0, 0x1c(r3)
/* 803361A8 A0 1C 00 08 */ lhz r0, 8(r28)
/* 803361AC 80 7E 00 08 */ lwz r3, 8(r30)
/* 803361B0 B0 03 00 04 */ sth r0, 4(r3)
/* 803361B4 80 7E 00 08 */ lwz r3, 8(r30)
/* 803361B8 B0 03 00 06 */ sth r0, 6(r3)
/* 803361BC 80 1C 00 20 */ lwz r0, 0x20(r28)
/* 803361C0 28 00 00 00 */ cmplwi r0, 0
/* 803361C4 41 82 00 3C */ beq lbl_80336200
/* 803361C8 38 60 00 10 */ li r3, 0x10
/* 803361CC 4B F9 8A 81 */ bl __nw__FUl
/* 803361D0 7C 7D 1B 79 */ or. r29, r3, r3
/* 803361D4 41 82 00 20 */ beq lbl_803361F4
/* 803361D8 7F 83 E3 78 */ mr r3, r28
/* 803361DC 80 9C 00 20 */ lwz r4, 0x20(r28)
/* 803361E0 4B FD 43 51 */ bl func_8030A530
/* 803361E4 7C 64 1B 78 */ mr r4, r3
/* 803361E8 7F A3 EB 78 */ mr r3, r29
/* 803361EC 4B FA 87 F5 */ bl __ct__10JUTNameTabFPC7ResNTAB
/* 803361F0 7C 7D 1B 78 */ mr r29, r3
lbl_803361F4:
/* 803361F4 80 7E 00 08 */ lwz r3, 8(r30)
/* 803361F8 93 A3 00 0C */ stw r29, 0xc(r3)
/* 803361FC 48 00 00 10 */ b lbl_8033620C
lbl_80336200:
/* 80336200 38 00 00 00 */ li r0, 0
/* 80336204 80 7E 00 08 */ lwz r3, 8(r30)
/* 80336208 90 03 00 0C */ stw r0, 0xc(r3)
lbl_8033620C:
/* 8033620C 80 7E 00 08 */ lwz r3, 8(r30)
/* 80336210 A0 03 00 04 */ lhz r0, 4(r3)
/* 80336214 54 03 10 3A */ slwi r3, r0, 2
/* 80336218 4B F9 8A AD */ bl __nwa__FUl
/* 8033621C 80 9E 00 08 */ lwz r4, 8(r30)
/* 80336220 90 64 00 08 */ stw r3, 8(r4)
/* 80336224 38 00 00 00 */ li r0, 0
/* 80336228 80 7E 00 08 */ lwz r3, 8(r30)
/* 8033622C 90 03 00 10 */ stw r0, 0x10(r3)
/* 80336230 3B 80 00 00 */ li r28, 0
/* 80336234 7F FD FB 78 */ mr r29, r31
/* 80336238 48 00 00 30 */ b lbl_80336268
lbl_8033623C:
/* 8033623C 38 61 00 08 */ addi r3, r1, 8
/* 80336240 38 80 00 00 */ li r4, 0
/* 80336244 38 A0 00 01 */ li r5, 1
/* 80336248 57 86 04 3E */ clrlwi r6, r28, 0x10
/* 8033624C 7F A7 EB 78 */ mr r7, r29
/* 80336250 4B FF A1 75 */ bl create__18J3DMaterialFactoryCFP11J3DMaterialQ218J3DMaterialFactory12MaterialTypeiUl
/* 80336254 80 9E 00 08 */ lwz r4, 8(r30)
/* 80336258 80 84 00 08 */ lwz r4, 8(r4)
/* 8033625C 57 80 13 BA */ rlwinm r0, r28, 2, 0xe, 0x1d
/* 80336260 7C 64 01 2E */ stwx r3, r4, r0
/* 80336264 3B 9C 00 01 */ addi r28, r28, 1
lbl_80336268:
/* 80336268 57 84 04 3E */ clrlwi r4, r28, 0x10
/* 8033626C 80 7E 00 08 */ lwz r3, 8(r30)
/* 80336270 A0 03 00 04 */ lhz r0, 4(r3)
/* 80336274 7C 04 00 40 */ cmplw r4, r0
/* 80336278 41 80 FF C4 */ blt lbl_8033623C
/* 8033627C 38 C0 00 00 */ li r6, 0
/* 80336280 3C 80 C0 00 */ lis r4, 0xc000
/* 80336284 48 00 00 18 */ b lbl_8033629C
lbl_80336288:
/* 80336288 80 65 00 08 */ lwz r3, 8(r5)
/* 8033628C 54 C0 13 BA */ rlwinm r0, r6, 2, 0xe, 0x1d
/* 80336290 7C 63 00 2E */ lwzx r3, r3, r0
/* 80336294 90 83 00 20 */ stw r4, 0x20(r3)
/* 80336298 38 C6 00 01 */ addi r6, r6, 1
lbl_8033629C:
/* 8033629C 54 C3 04 3E */ clrlwi r3, r6, 0x10
/* 803362A0 80 BE 00 08 */ lwz r5, 8(r30)
/* 803362A4 A0 05 00 04 */ lhz r0, 4(r5)
/* 803362A8 7C 03 00 40 */ cmplw r3, r0
/* 803362AC 41 80 FF DC */ blt lbl_80336288
/* 803362B0 48 00 00 54 */ b lbl_80336304
lbl_803362B4:
/* 803362B4 3B 80 00 00 */ li r28, 0
/* 803362B8 7F FD FB 78 */ mr r29, r31
/* 803362BC 48 00 00 34 */ b lbl_803362F0
lbl_803362C0:
/* 803362C0 57 86 04 3E */ clrlwi r6, r28, 0x10
/* 803362C4 57 9F 13 BA */ rlwinm r31, r28, 2, 0xe, 0x1d
/* 803362C8 38 61 00 08 */ addi r3, r1, 8
/* 803362CC 80 84 00 08 */ lwz r4, 8(r4)
/* 803362D0 7C 84 F8 2E */ lwzx r4, r4, r31
/* 803362D4 38 A0 00 01 */ li r5, 1
/* 803362D8 7F A7 EB 78 */ mr r7, r29
/* 803362DC 4B FF A0 E9 */ bl create__18J3DMaterialFactoryCFP11J3DMaterialQ218J3DMaterialFactory12MaterialTypeiUl
/* 803362E0 80 9E 00 08 */ lwz r4, 8(r30)
/* 803362E4 80 84 00 08 */ lwz r4, 8(r4)
/* 803362E8 7C 64 F9 2E */ stwx r3, r4, r31
/* 803362EC 3B 9C 00 01 */ addi r28, r28, 1
lbl_803362F0:
/* 803362F0 57 83 04 3E */ clrlwi r3, r28, 0x10
/* 803362F4 80 9E 00 08 */ lwz r4, 8(r30)
/* 803362F8 A0 04 00 04 */ lhz r0, 4(r4)
/* 803362FC 7C 03 00 40 */ cmplw r3, r0
/* 80336300 41 80 FF C0 */ blt lbl_803362C0
lbl_80336304:
/* 80336304 39 61 00 A0 */ addi r11, r1, 0xa0
/* 80336308 48 02 BF 1D */ bl _restgpr_28
/* 8033630C 80 01 00 A4 */ lwz r0, 0xa4(r1)
/* 80336310 7C 08 03 A6 */ mtlr r0
/* 80336314 38 21 00 A0 */ addi r1, r1, 0xa0
/* 80336318 4E 80 00 20 */ blr

View File

@ -1,9 +1,46 @@
#ifndef J3DCLUSTERLOADER_H
#define J3DCLUSTERLOADER_H
#include "dolphin/types.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
struct J3DClusterLoaderDataBase {
/* 80334130 */ static void* load(void const*);
};
class J3DClusterBlock : public JUTDataBlockHeader {
public:
/* 0x08 */ u16 mClusterNum;
/* 0x0A */ u16 mClusterKeyNum;
/* 0x0C */ u16 mClusterVertexNum;
/* 0x0E */ u16 mVtxPosNum;
/* 0x10 */ u16 mVtxNrmNum;
/* 0x14 */ void* mClusterPointer;
/* 0x18 */ void* mClusterKeyPointer;
/* 0x1C */ void* mClusterVertex;
/* 0x20 */ void* mVtxPos;
/* 0x24 */ void* mVtxNrm;
/* 0x28 */ void* mClusterName;
/* 0x2C */ void* mClusterKeyName;
};
class J3DClusterLoader {
public:
virtual void* load(const void*) = 0;
/* 803345FC */ virtual ~J3DClusterLoader() {}
};
class J3DDeformData;
class J3DClusterLoader_v15 : public J3DClusterLoader {
public:
/* 803341CC */ J3DClusterLoader_v15();
/* 803342F8 */ void readCluster(J3DClusterBlock const*);
/* 80334244 */ virtual void* load(void const*);
/* 803341E8 */ virtual ~J3DClusterLoader_v15();
/* 0x04 */ J3DDeformData* mpDeformData;
};
#endif /* J3DCLUSTERLOADER_H */

View File

@ -1,6 +1,14 @@
#ifndef JSUPPORT_H
#define JSUPPORT_H
template <typename T>
T* JSUConvertOffsetToPtr(const void* ptr, u32 offset) {
if (offset == 0) {
return NULL;
} else {
return (T*)((s32)ptr + (s32)offset);
}
}
template <typename T>
T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) {

View File

@ -177,17 +177,17 @@ void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* p_data)
* setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData */
void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* p_anm,
J3DAnmTransformKeyData const* p_data) {
p_anm->field_0x22 = p_data->_C;
p_anm->field_0x22 = p_data->field_0xc;
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->_8;
p_anm->field_0x24 = p_data->_9;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->field_0x24 = p_data->field_0x9;
p_anm->mFrame = 0;
p_anm->mInfoTable =
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(p_data, (void*)p_data->mTableOffset);
p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->mScaleOffset);
p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->mRotationOffset);
p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x18);
p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->field_0x1c);
p_anm->mTranslateValues =
JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->mTranslateOffset);
JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x20);
}
/* 80309634-8030965C 303F74 0028+00 1/1 0/0 0/0 .text
@ -214,7 +214,7 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm,
p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mUpdateMatIDOffset);
p_anm->field_0x34.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, (void*)p_data->mNameTab1Offset));
p_anm->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mUpdateTexMtxIDOffset);
p_anm->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(p_data, p_data->mUpdateTexMtxIDOffset);
p_anm->field_0x44 = JSUConvertOffsetToPtr<Vec>(p_data, (void*)p_data->unkOffset);
p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->mScaleValOffset);
p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->mRotValOffset);
@ -230,8 +230,8 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm,
p_anm->field_0x5c =
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(p_data, (void*)p_data->mInfoTable2Offset);
p_anm->field_0x64 = JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->field_0x40);
p_anm->field_0x60 = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->field_0x48);
p_anm->field_0x78 = JSUConvertOffsetToPtr<Vec>(p_data, (void*)p_data->field_0x48);
p_anm->field_0x60 = JSUConvertOffsetToPtr<u8>(p_data, p_data->field_0x48);
p_anm->field_0x78 = JSUConvertOffsetToPtr<Vec>(p_data, (void*)p_data->field_0x4c);
p_anm->field_0x50 = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x50);
p_anm->field_0x54 = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->field_0x54);
p_anm->field_0x58 = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x58);
@ -415,10 +415,10 @@ void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* p_anm, J3DAnmColorFullDa
p_anm->mUpdateMaterialNum = p_data->mUpdateMaterialNum;
p_anm->mInfoTable =
JSUConvertOffsetToPtr<J3DAnmColorFullTable>(p_data, (void*)p_data->mTableOffset);
p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mRValuesOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mGValuesOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mBValuesOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mAValuesOffset);
p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mRValuesOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mGValuesOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mBValuesOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mAValuesOffset);
p_anm->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mUpdateMaterialIDOffset);
p_anm->field_0x20.setResource(
@ -510,7 +510,7 @@ void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* p_anm,
p_anm->field_0x12 = p_data->field_0xe;
p_anm->mTable =
JSUConvertOffsetToPtr<J3DAnmVisibilityFullTable>(p_data, (void*)p_data->mTableOffset);
p_anm->mValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mValuesOffset);
p_anm->mValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mValuesOffset);
}
/* 8030A234-8030A25C 304B74 0028+00 1/1 0/0 0/0 .text
@ -540,10 +540,10 @@ void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* p_anm,
JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mVtxColorIndexPointerOffsets[0]);
p_anm->mVtxColorIndexPointer[1] =
JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mVtxColorIndexPointerOffsets[1]);
p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mRValuesOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mGValuesOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mBValuesOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mAValuesOffset);
p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mRValuesOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mGValuesOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mBValuesOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mAValuesOffset);
}
/* 8030A358-8030A3B4 304C98 005C+00 1/0 0/0 0/0 .text __dt__14J2DAnmVtxColorFv */

View File

@ -5,15 +5,13 @@
#include "JSystem/J2DGraph/J2DMaterialFactory.h"
#include "JSystem/J2DGraph/J2DMaterial.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/JSupport/JSupport.h"
#include "JSystem/JUtility/JUTResource.h"
#include "string.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
//
// Forward References:
//
@ -56,7 +54,7 @@ extern "C" void func_802F4200(void* _this, void const*, void const*);
extern "C" void func_802F4218(void* _this, void const*, void const*);
extern "C" void func_802F4230(void* _this, void const*, void const*);
extern "C" void func_802F4248(void* _this, void const*, void const*);
extern "C" void func_802F4260(void* _this, void const*, void const*);
extern "C" u8* func_802F4260(void const*, void const*);
extern "C" void func_802F4278(void* _this, void const*, void const*);
extern "C" void func_802F4290(void* _this, void const*, void const*);
extern "C" void func_802F42A8(void* _this, void const*, void const*);
@ -83,14 +81,8 @@ extern "C" void _restgpr_19();
extern "C" void _restgpr_29();
extern "C" u8 mDataManage__9J2DScreen[4 + 4 /* padding */];
//
// Declarations:
//
/* 802F2AD0-802F2C94 2ED410 01C4+00 0/0 1/1 0/0 .text
* __ct__18J2DMaterialFactoryFRC16J2DMaterialBlock */
// JSUConvertOffsetToPtr issues. Probably function order.
#ifdef NONMATCHING
J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) {
field_0x0 = param_0.field_0x8;
field_0x4 = JSUConvertOffsetToPtr<J2DMaterialInitData>(&param_0, (void*)param_0.field_0xc);
@ -121,16 +113,6 @@ J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) {
field_0x54 = JSUConvertOffsetToPtr<J2DBlendInfo>(&param_0, (void*)param_0.field_0x60);
field_0x58 = JSUConvertOffsetToPtr<u8>(&param_0, (void*)param_0.field_0x64);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/__ct__18J2DMaterialFactoryFRC16J2DMaterialBlock.s"
}
#pragma pop
#endif
/* 802F2C94-802F2D1C 2ED5D4 0088+00 1/1 0/0 0/0 .text countStages__18J2DMaterialFactoryCFi */
u32 J2DMaterialFactory::countStages(int param_0) const {
@ -230,8 +212,8 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
J2DMaterialInitData* local_38c = &field_0x4[field_0x8[index]];
param_0->getTevBlock()->setTevStage(i, newTevStage(index, i));
if (local_38c->field_0xba[i] != 0xffff) {
param_0->getTevBlock()->getTevStage(i)->setTexSel(field_0x48[local_38c->field_0xba[i]].field_0x1);
param_0->getTevBlock()->getTevStage(i)->setRasSel(field_0x48[local_38c->field_0xba[i]].field_0x0);
param_0->getTevBlock()->getTevStage(i)->setTexSel(field_0x48[local_38c->field_0xba[i]].mTexSel);
param_0->getTevBlock()->getTevStage(i)->setRasSel(field_0x48[local_38c->field_0xba[i]].mRasSel);
}
}
for (u8 i = 0; i < 4; i++) {
@ -401,8 +383,7 @@ SECTION_SBSS2 static GXColorS10 lit_2018;
// J2DGXColorS10 init issues
#ifdef NONMATCHING
J2DGXColorS10 J2DMaterialFactory::newTevColor(int param_0, int param_1) const {
GXColorS10 x = lit_2018;
J2DGXColorS10 rv = J2DGXColorS10(x);
J2DGXColorS10 rv = J2DGXColorS10(GXColorS10());
J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]];
if (iVar2->field_0x92[param_1] != 0xffff) {
return field_0x38[iVar2->field_0x92[param_1]];
@ -547,184 +528,7 @@ u8 J2DMaterialFactory::newDither(int param_0) const {
}
/* 802F4110-802F4170 2EEA50 0060+00 1/1 0/0 0/0 .text __ct__11J2DTevStageFRC15J2DTevStageInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J2DTevStage::J2DTevStage(J2DTevStageInfo const& param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/__ct__11J2DTevStageFRC15J2DTevStageInfo.s"
J2DTevStage::J2DTevStage(J2DTevStageInfo const& param_0) {
setTevStageInfo(param_0);
setTevSwapModeInfo(j2dDefaultTevSwapMode);
}
#pragma pop
/* 802F4170-802F4188 2EEAB0 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<12J2DBlendInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4170(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4170.s"
}
#pragma pop
/* 802F4188-802F41A0 2EEAC8 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<16J2DAlphaCompInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4188(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4188.s"
}
#pragma pop
/* 802F41A0-802F41B8 2EEAE0 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<23J2DTevSwapModeTableInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F41A0(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41A0.s"
}
#pragma pop
/* 802F41B8-802F41D0 2EEAF8 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<18J2DTevSwapModeInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F41B8(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41B8.s"
}
#pragma pop
/* 802F41D0-802F41E8 2EEB10 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<15J2DTevStageInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F41D0(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41D0.s"
}
#pragma pop
/* 802F41E8-802F4200 2EEB28 0018+00 1/1 2/2 0/0 .text
* JSUConvertOffsetToPtr<11_GXColorS10>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F41E8(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41E8.s"
}
#pragma pop
/* 802F4200-802F4218 2EEB40 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<15J2DTevOrderInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4200(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4200.s"
}
#pragma pop
/* 802F4218-802F4230 2EEB58 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<13J2DTexMtxInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4218(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4218.s"
}
#pragma pop
/* 802F4230-802F4248 2EEB70 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<15J2DTexCoordInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4230(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4230.s"
}
#pragma pop
/* 802F4248-802F4260 2EEB88 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<16J2DColorChanInfo>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4248(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4248.s"
}
#pragma pop
/* 802F4260-802F4278 2EEBA0 0018+00 1/1 13/13 0/0 .text JSUConvertOffsetToPtr<Uc>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4260(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4260.s"
}
#pragma pop
/* 802F4278-802F4290 2EEBB8 0018+00 1/1 2/2 0/0 .text JSUConvertOffsetToPtr<8_GXColor>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4278(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4278.s"
}
#pragma pop
/* 802F4290-802F42A8 2EEBD0 0018+00 1/1 2/2 0/0 .text
* JSUConvertOffsetToPtr<11_GXCullMode>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F4290(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4290.s"
}
#pragma pop
/* 802F42A8-802F42C0 2EEBE8 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<14J2DIndInitData>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F42A8(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F42A8.s"
}
#pragma pop
/* 802F42C0-802F42D8 2EEC00 0018+00 1/1 19/19 0/0 .text JSUConvertOffsetToPtr<Us>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F42C0(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F42C0.s"
}
#pragma pop
/* 802F42D8-802F42F0 2EEC18 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<19J2DMaterialInitData>__FPCvPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802F42D8(void* _this, void const* param_0, void const* param_1) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F42D8.s"
}
#pragma pop

View File

@ -591,10 +591,10 @@ void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_1,
param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum;
param_1->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmColorFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mColorR = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mRValuesOffset);
param_1->mColorG = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mGValuesOffset);
param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mBValuesOffset);
param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mAValuesOffset);
param_1->mColorR = JSUConvertOffsetToPtr<u8>(param_2, param_2->mRValuesOffset);
param_1->mColorG = JSUConvertOffsetToPtr<u8>(param_2, param_2->mGValuesOffset);
param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, param_2->mBValuesOffset);
param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, param_2->mAValuesOffset);
param_1->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(
@ -668,7 +668,7 @@ void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* param_1,
param_1->field_0xe = param_2->field_0xe;
param_1->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmVisibilityFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mVisibility = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mValuesOffset);
param_1->mVisibility = JSUConvertOffsetToPtr<u8>(param_2, param_2->mValuesOffset);
}
#else
#pragma push
@ -750,10 +750,10 @@ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst,
dst->mAnmVtxColorIndexData[1][i].mpData =
(void*)((s32)indexPtr1 + (s32)dst->mAnmVtxColorIndexData[1][i].mpData * 2);
dst->mColorR = JSUConvertOffsetToPtr<u8>(data, (void*)data->mRValuesOffset);
dst->mColorG = JSUConvertOffsetToPtr<u8>(data, (void*)data->mGValuesOffset);
dst->mColorB = JSUConvertOffsetToPtr<u8>(data, (void*)data->mBValuesOffset);
dst->mColorA = JSUConvertOffsetToPtr<u8>(data, (void*)data->mAValuesOffset);
dst->mColorR = JSUConvertOffsetToPtr<u8>(data, data->mRValuesOffset);
dst->mColorG = JSUConvertOffsetToPtr<u8>(data, data->mGValuesOffset);
dst->mColorB = JSUConvertOffsetToPtr<u8>(data, data->mBValuesOffset);
dst->mColorA = JSUConvertOffsetToPtr<u8>(data, data->mAValuesOffset);
}
#else
#pragma push
@ -909,7 +909,7 @@ void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1,
param_1->mUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTab1Offset));
param_1->mUpdateTexMtxID =
JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mUpdateTexMtxIDOffset);
JSUConvertOffsetToPtr<u8>(param_2, param_2->mUpdateTexMtxIDOffset);
param_1->mSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->unkOffset);
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mScaleValOffset);
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRotValOffset);
@ -926,7 +926,7 @@ void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1,
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mInfoTable2Offset);
param_1->mPostUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->field_0x40);
param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->field_0x48);
param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, param_2->field_0x48);
param_1->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->field_0x4c);
param_1->field_0x4c = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x50);
param_1->field_0x50 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x54);

View File

@ -4,50 +4,14 @@
//
#include "JSystem/J3DGraphLoader/J3DClusterLoader.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "JSystem/J3DGraphAnimator/J3DCluster.h"
#include "JSystem/J3DGraphAnimator/J3DSkinDeform.h"
#include "JSystem/JSupport/JSupport.h"
#include "JSystem/JUtility/JUTNameTab.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "dol2asm.h"
#include "dolphin/os.h"
//
// Types:
//
class J3DClusterBlock : public JUTDataBlockHeader {
public:
/* 0x08 */ u16 mClusterNum;
/* 0x0A */ u16 mClusterKeyNum;
/* 0x0C */ u16 mClusterVertexNum;
/* 0x0E */ u16 mVtxPosNum;
/* 0x10 */ u16 mVtxNrmNum;
/* 0x14 */ void* mClusterPointer;
/* 0x18 */ void* mClusterKeyPointer;
/* 0x1C */ void* mClusterVertex;
/* 0x20 */ void* mVtxPos;
/* 0x24 */ void* mVtxNrm;
/* 0x28 */ void* mClusterName;
/* 0x2C */ void* mClusterKeyName;
};
class J3DClusterLoader {
public:
virtual void* load(const void*) = 0;
/* 803345FC */ virtual ~J3DClusterLoader();
};
class J3DClusterLoader_v15 : public J3DClusterLoader {
public:
/* 803341CC */ J3DClusterLoader_v15();
/* 803342F8 */ void readCluster(J3DClusterBlock const*);
/* 80334244 */ virtual void* load(void const*);
/* 803341E8 */ virtual ~J3DClusterLoader_v15();
/* 0x04 */ J3DDeformData* mpDeformData;
};
#include "string.h"
//
// Forward References:
@ -68,7 +32,6 @@ extern "C" extern char const* const J3DClusterLoader__stringBase0;
// External References:
//
SECTION_INIT void memcpy();
extern "C" void* __nw__FUl();
extern "C" void* __nwa__FUl();
extern "C" void* __nwa__FUli();
@ -118,47 +81,12 @@ SECTION_DATA extern void* __vt__16J3DClusterLoader[4] = {
};
/* 803341CC-803341E8 32EB0C 001C+00 1/1 0/0 0/0 .text __ct__20J3DClusterLoader_v15Fv */
// matches with weak order
#ifdef NONMATCHING
J3DClusterLoader_v15::J3DClusterLoader_v15() {}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DClusterLoader_v15::J3DClusterLoader_v15() {
nofralloc
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/__ct__20J3DClusterLoader_v15Fv.s"
}
#pragma pop
#endif
/* 803341E8-80334244 32EB28 005C+00 2/1 0/0 0/0 .text __dt__20J3DClusterLoader_v15Fv */
// matches with weak order
#ifdef NONMATCHING
J3DClusterLoader_v15::~J3DClusterLoader_v15() {}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DClusterLoader_v15::~J3DClusterLoader_v15() {
nofralloc
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/__dt__20J3DClusterLoader_v15Fv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803A2098-803A2098 02E6F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803A2098 = "Unknown data block\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_803A20AC = "\0\0\0";
#pragma pop
/* 80334244-803342F8 32EB84 00B4+00 2/1 0/0 0/0 .text load__20J3DClusterLoader_v15FPCv */
// matches with vtable data
#ifdef NONMATCHING
void* J3DClusterLoader_v15::load(const void* i_data) {
mpDeformData = new J3DDeformData();
@ -178,20 +106,10 @@ void* J3DClusterLoader_v15::load(const void* i_data) {
return mpDeformData;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm void* J3DClusterLoader_v15::load(void const* param_0) {
extern "C" asm void load__20J3DClusterLoader_v15FPCv() {
nofralloc
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/load__20J3DClusterLoader_v15FPCv.s"
}
#pragma pop
#endif
/* 803342F8-803345FC 32EC38 0304+00 1/1 0/0 0/0 .text
* readCluster__20J3DClusterLoader_v15FPC15J3DClusterBlock */
// Matches with some weak JSUConvertOffsetToPtr in other files
#ifdef NONMATCHING
void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
mpDeformData->mClusterNum = block->mClusterNum;
@ -216,34 +134,22 @@ void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
mpDeformData->mVtxPos = JSUConvertOffsetToPtr<f32>(block, block->mVtxPos);
mpDeformData->mVtxNrm = JSUConvertOffsetToPtr<f32>(block, block->mVtxNrm);
mpDeformData->mClusterPointer = new J3DCluster[mpDeformData->getClusterNum()];
J3DCluster* blockCluster = JSUConvertOffsetToPtr<J3DCluster>(block, block->mClusterPointer);
for (int i = 0; i < mpDeformData->getClusterNum(); i++) {
mpDeformData->mClusterPointer[i] = blockCluster[i];
}
mpDeformData->mClusterKeyPointer = new J3DClusterKey[mpDeformData->getClusterKeyNum()];
J3DClusterKey* blockClusterKey =
JSUConvertOffsetToPtr<J3DClusterKey>(block, block->mClusterKeyPointer);
for (int i = 0; i < mpDeformData->getClusterKeyNum(); i++) {
mpDeformData->mClusterKeyPointer[i] = blockClusterKey[i];
}
mpDeformData->mClusterVertex = new J3DClusterVertex[mpDeformData->mClusterVertexNum];
J3DClusterVertex* blockClusterVertex =
JSUConvertOffsetToPtr<J3DClusterVertex>(block, block->mClusterVertex);
for (int i = 0; i < mpDeformData->mClusterVertexNum; i++) {
mpDeformData->mClusterVertex[i] = blockClusterVertex[i];
}
void* clusterPointer = block->mClusterPointer;
int clusterKeyPointerSize = (int)block->mClusterKeyPointer - (int)clusterPointer;
int clusterVertexPointerSize = (int)block->mClusterVertex - (int)clusterPointer;
int vtxPosSize = (int)block->mVtxPos - (int)clusterPointer;
u8* arr = new (0x20) u8[vtxPosSize];
memcpy(arr, JSUConvertOffsetToPtr<J3DCluster>(block, clusterPointer), vtxPosSize);
mpDeformData->mClusterPointer = (J3DCluster*)arr;
mpDeformData->mClusterKeyPointer = (J3DClusterKey*)&arr[clusterKeyPointerSize];
mpDeformData->mClusterVertex = (J3DClusterVertex*)&arr[clusterVertexPointerSize];
for (int i = 0; i < mpDeformData->getClusterNum(); i++) {
J3DCluster* cluster = &mpDeformData->mClusterPointer[i];
cluster->mClusterKey = JSUConvertOffsetToPtr<J3DClusterKey>(block, cluster->mClusterKey);
cluster->mClusterKey = JSUConvertOffsetToPtr<J3DClusterKey>(arr - (int)clusterPointer, cluster->mClusterKey);
cluster->field_0x18 = JSUConvertOffsetToPtr<u16>(block, cluster->field_0x18);
J3DClusterVertex* clusterVertex =
JSUConvertOffsetToPtr<J3DClusterVertex>(block, cluster->mClusterVertex);
u32 vertexIdx = (clusterVertex - blockClusterVertex) / sizeof(J3DClusterVertex);
cluster->mClusterVertex = &mpDeformData->mClusterVertex[vertexIdx];
cluster->mClusterVertex =
JSUConvertOffsetToPtr<J3DClusterVertex>(arr - (int)clusterPointer, cluster->mClusterVertex);
J3DDeformer* deformer = new J3DDeformer(mpDeformData);
if (cluster->field_0x14 != 0) {
deformer->field_0xc = new f32[cluster->field_0x14 * 3];
@ -266,6 +172,8 @@ void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
clusterVertex->field_0x4 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x4);
clusterVertex->field_0x8 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x8);
}
DCStoreRange(arr, vtxPosSize);
}
#else
#pragma push
@ -279,10 +187,12 @@ asm void J3DClusterLoader_v15::readCluster(J3DClusterBlock const* param_0) {
#endif
/* 803345FC-80334644 32EF3C 0048+00 1/0 0/0 0/0 .text __dt__16J3DClusterLoaderFv */
// Remove when JSUConvertOffsetToPtr is ok
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DClusterLoader::~J3DClusterLoader() {
asm void __dt__16J3DClusterLoaderFv() {
//asm J3DClusterLoader::~J3DClusterLoader() {
nofralloc
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/__dt__16J3DClusterLoaderFv.s"
}

View File

@ -291,38 +291,29 @@ extern "C" extern void* __vt__11J3DTevBlock[55];
J3DMaterialFactory::J3DMaterialFactory(J3DMaterialBlock const& i_block) {
mMaterialNum = i_block.mMaterialNum;
mpMaterialInitData = JSUConvertOffsetToPtr<J3DMaterialInitData>(&i_block, i_block.mpMaterialInitData);
// mpMaterialID = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpMaterialID);
mpMaterialID = func_802F42C0(&i_block, i_block.mpMaterialID);
mpMaterialID = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpMaterialID);
if (i_block.mpIndInitData != NULL && (u32)i_block.mpIndInitData - (u32)i_block.mpNameTable > 4) {
mpIndInitData = JSUConvertOffsetToPtr<J3DIndInitData>(&i_block, i_block.mpIndInitData);
} else {
mpIndInitData = NULL;
}
// mpCullMode = JSUConvertOffsetToPtr<GXCullMode>(&i_block, i_block.mpCullMode);
mpCullMode = func_802F4290(&i_block, i_block.mpCullMode);
// mpMatColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpMatColor);
mpMatColor = func_802F4278(&i_block, i_block.mpMatColor);
// mpColorChanNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpColorChanNum);
mpColorChanNum = func_802F4260(&i_block, i_block.mpColorChanNum);
mpCullMode = JSUConvertOffsetToPtr<GXCullMode>(&i_block, i_block.mpCullMode);
mpMatColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpMatColor);
mpColorChanNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpColorChanNum);
mpColorChanInfo = JSUConvertOffsetToPtr<J3DColorChanInfo>(&i_block, i_block.mpColorChanInfo);
// mpAmbColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpAmbColor);
mpAmbColor = func_802F4278(&i_block, i_block.mpAmbColor);
mpAmbColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpAmbColor);
mpLightInfo = JSUConvertOffsetToPtr<J3DLightInfo>(&i_block, i_block.mpLightInfo);
// mpTexGenNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTexGenNum);
mpTexGenNum = func_802F4260(&i_block, i_block.mpTexGenNum);
mpTexGenNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTexGenNum);
mpTexCoordInfo = JSUConvertOffsetToPtr<J3DTexCoordInfo>(&i_block, i_block.mpTexCoordInfo);
mpTexCoord2Info = JSUConvertOffsetToPtr<J3DTexCoord2Info>(&i_block, i_block.mpTexCoord2Info);
mpTexMtxInfo = JSUConvertOffsetToPtr<J3DTexMtxInfo>(&i_block, i_block.mpTexMtxInfo);
field_0x34 = JSUConvertOffsetToPtr<J3DTexMtxInfo>(&i_block, i_block.field_0x44);
// mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
mpTexNo = func_802F42C0(&i_block, i_block.mpTexNo);
mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
mpTevOrderInfo = JSUConvertOffsetToPtr<J3DTevOrderInfo>(&i_block, i_block.mpTevOrderInfo);
// mpTevColor = JSUConvertOffsetToPtr<GXColorS10>(&i_block, i_block.mpTevColor);
mpTevColor = func_802F41E8(&i_block, i_block.mpTevColor);
// mpTevKColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpTevKColor);
mpTevKColor = func_802F4278(&i_block, i_block.mpTevKColor);
// mpTevStageNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTevStageNum);
mpTevStageNum = func_802F4260(&i_block, i_block.mpTevStageNum);
mpTevKColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpTevKColor);
mpTevStageNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTevStageNum);
mpTevStageInfo = JSUConvertOffsetToPtr<J3DTevStageInfo>(&i_block, i_block.mpTevStageInfo);
mpTevSwapModeInfo = JSUConvertOffsetToPtr<J3DTevSwapModeInfo>(&i_block, i_block.mpTevSwapModeInfo);
mpTevSwapModeTableInfo = JSUConvertOffsetToPtr<J3DTevSwapModeTableInfo>(&i_block, i_block.mpTevSwapModeTableInfo);
@ -330,10 +321,8 @@ J3DMaterialFactory::J3DMaterialFactory(J3DMaterialBlock const& i_block) {
mpAlphaCompInfo = JSUConvertOffsetToPtr<J3DAlphaCompInfo>(&i_block, i_block.mpAlphaCompInfo);
mpBlendInfo = JSUConvertOffsetToPtr<J3DBlendInfo>(&i_block, i_block.mpBlendInfo);
mpZModeInfo = JSUConvertOffsetToPtr<J3DZModeInfo>(&i_block, i_block.mpZModeInfo);
// mpZCompLoc = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpZCompLoc);
mpZCompLoc = func_802F4260(&i_block, i_block.mpZCompLoc);
// mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
mpDither = func_802F4260(&i_block, i_block.mpDither);
mpZCompLoc = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpZCompLoc);
mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
mpNBTScaleInfo = JSUConvertOffsetToPtr<J3DNBTScaleInfo>(&i_block, i_block.mpNBTScaleInfo);
mpDisplayListInit = NULL;
mpPatchingInfo = NULL;
@ -349,8 +338,7 @@ J3DMaterialFactory::J3DMaterialFactory(J3DMaterialDLBlock const& i_block) {
mpDisplayListInit = JSUConvertOffsetToPtr<J3DDisplayListInit>(&i_block, i_block.mpDisplayListInit);
mpPatchingInfo = JSUConvertOffsetToPtr<J3DPatchingInfo>(&i_block, i_block.mpPatchingInfo);
mpCurrentMtxInfo = JSUConvertOffsetToPtr<J3DCurrentMtxInfo>(&i_block, i_block.mpCurrentMtxInfo);
// mpMaterialMode = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpMaterialMode);
mpMaterialMode = func_802F4260(&i_block, i_block.mpMaterialMode);
mpMaterialMode = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpMaterialMode);
}
/* 803302BC-80330304 32ABFC 0048+00 0/0 3/3 0/0 .text countUniqueMaterials__18J3DMaterialFactoryFv

View File

@ -88,30 +88,22 @@ extern "C" extern void* __vt__11J3DMaterial[12];
J3DMaterialFactory_v21::J3DMaterialFactory_v21(J3DMaterialBlock_v21 const& i_block) {
mMaterialNum = i_block.mMaterialNum;
mpMaterialInitData = JSUConvertOffsetToPtr<J3DMaterialInitData_v21>(&i_block, i_block.mpMaterialInitData);
// mpMaterialID = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpMaterialID);
mpMaterialID = func_802F42C0(&i_block, i_block.mpMaterialID);
// mpCullMode = JSUConvertOffsetToPtr<GXCullMode>(&i_block, i_block.mpCullMode);
mpCullMode = func_802F4290(&i_block, i_block.mpCullMode);
// mpMatColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpMatColor);
mpMatColor = func_802F4278(&i_block, i_block.mpMatColor);
// mpColorChanNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpColorChanNum);
mpColorChanNum = func_802F4260(&i_block, i_block.mpColorChanNum);
mpMaterialID = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpMaterialID);
mpCullMode = JSUConvertOffsetToPtr<GXCullMode>(&i_block, i_block.mpCullMode);
mpMatColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpMatColor);
mpColorChanNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpColorChanNum);
mpColorChanInfo = JSUConvertOffsetToPtr<J3DColorChanInfo>(&i_block, i_block.mpColorChanInfo);
// mpTexGenNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTexGenNum);
mpTexGenNum = func_802F4260(&i_block, i_block.mpTexGenNum);
mpTexGenNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTexGenNum);
mpTexCoordInfo = JSUConvertOffsetToPtr<J3DTexCoordInfo>(&i_block, i_block.mpTexCoordInfo);
mpTexCoord2Info = JSUConvertOffsetToPtr<J3DTexCoord2Info>(&i_block, i_block.mpTexCoord2Info);
mpTexMtxInfo = JSUConvertOffsetToPtr<J3DTexMtxInfo>(&i_block, i_block.mpTexMtxInfo);
field_0x28 = JSUConvertOffsetToPtr<J3DTexMtxInfo>(&i_block, i_block.field_0x38);
// mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
mpTexNo = func_802F42C0(&i_block, i_block.mpTexNo);
mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
mpTevOrderInfo = JSUConvertOffsetToPtr<J3DTevOrderInfo>(&i_block, i_block.mpTevOrderInfo);
// mpTevColor = JSUConvertOffsetToPtr<GXColorS10>(&i_block, i_block.mpTevColor);
mpTevColor = func_802F41E8(&i_block, i_block.mpTevColor);
// mpTevKColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpTevKColor);
mpTevKColor = func_802F4278(&i_block, i_block.mpTevKColor);
// mpTevStageNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTevStageNum);
mpTevStageNum = func_802F4260(&i_block, i_block.mpTevStageNum);
mpTevKColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpTevKColor);
mpTevStageNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTevStageNum);
mpTevStageInfo = JSUConvertOffsetToPtr<J3DTevStageInfo>(&i_block, i_block.mpTevStageInfo);
mpTevSwapModeInfo = JSUConvertOffsetToPtr<J3DTevSwapModeInfo>(&i_block, i_block.mpTevSwapModeInfo);
mpTevSwapModeTableInfo = JSUConvertOffsetToPtr<J3DTevSwapModeTableInfo>(&i_block, i_block.mpTevSwapModeTableInfo);
@ -119,10 +111,8 @@ J3DMaterialFactory_v21::J3DMaterialFactory_v21(J3DMaterialBlock_v21 const& i_blo
mpAlphaCompInfo = JSUConvertOffsetToPtr<J3DAlphaCompInfo>(&i_block, i_block.mpAlphaCompInfo);
mpBlendInfo = JSUConvertOffsetToPtr<J3DBlendInfo>(&i_block, i_block.mpBlendInfo);
mpZModeInfo = JSUConvertOffsetToPtr<J3DZModeInfo>(&i_block, i_block.mpZModeInfo);
// mpZCompLoc = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpZCompLoc);
mpZCompLoc = func_802F4260(&i_block, i_block.mpZCompLoc);
// mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
mpDither = func_802F4260(&i_block, i_block.mpDither);
mpZCompLoc = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpZCompLoc);
mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
mpNBTScaleInfo = JSUConvertOffsetToPtr<J3DNBTScaleInfo>(&i_block, i_block.mpNBTScaleInfo);
}

View File

@ -321,8 +321,8 @@ SECTION_DEAD static char const* const stringBase_803A20B0 = "Unknown data block\
#pragma pop
/* 803347E0-80334ABC 32F120 02DC+00 4/1 0/0 0/0 .text load__14J3DModelLoaderFPCvUl */
// Matches with virtual functions
#ifdef NONMATCHING
// regalloc
J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
JKRGetCurrentHeap()->getTotalFreeSize();
mpModelData = new J3DModelData();
@ -335,7 +335,7 @@ J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) {
switch (block->mBlockType) {
case 'INF1':
readInformation((J3DModelInfoBlock*)block, i_flags);
readInformation((J3DModelInfoBlock*)block, (s32)i_flags);
break;
case 'VTX1':
readVertex((J3DVertexBlock*)block);
@ -350,13 +350,13 @@ J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
readJoint((J3DJointBlock*)block);
break;
case 'MAT3':
readMaterial((J3DMaterialBlock*)block, i_flags);
readMaterial((J3DMaterialBlock*)block, (s32)i_flags);
break;
case 'MAT2':
readMaterial_v21((J3DMaterialBlock_v21*)block, i_flags);
readMaterial_v21((J3DMaterialBlock_v21*)block, (s32)i_flags);
break;
case 'SHP1':
readShape((J3DShapeBlock*)block, i_flags);
readShape((J3DShapeBlock*)block, (s32)i_flags);
break;
case 'TEX1':
readTexture((J3DTextureBlock*)block);
@ -433,8 +433,8 @@ asm J3DMaterialTable* J3DModelLoader::loadMaterialTable(void const* param_0) {
/* 80334C20-80334EE0 32F560 02C0+00 3/0 0/0 0/0 .text
* loadBinaryDisplayList__14J3DModelLoaderFPCvUl */
// Matches with virtual functions
#ifdef NONMATCHING
// regalloc
J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_flags) {
mpModelData = new J3DModelData();
mpModelData->clear();
@ -446,7 +446,8 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_fl
for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) {
switch (block->mBlockType) {
case 'INF1':
readInformation((J3DModelInfoBlock*)block, i_flags);
s32 flags2 = i_flags;
readInformation((J3DModelInfoBlock*)block, flags2);
break;
case 'VTX1':
readVertex((J3DVertexBlock*)block);
@ -471,11 +472,13 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_fl
modifyMaterial(i_flags);
break;
case 'MAT3':
s32 flags = 0x50100000;
flags |= (i_flags & 0x3000000);
mpMaterialBlock = (J3DMaterialBlock*)block;
if ((i_flags & 0x3000) == 0) {
readMaterial((J3DMaterialBlock*)block, i_flags & 0x3000000 | 0x50100000);
} else if ((i_flags & 0x3000) == 0x2000) {
readPatchedMaterial((J3DMaterialBlock*)block, i_flags & 0x3000000 | 0x50100000);
if (((u32)i_flags & 0x3000) == 0) {
readMaterial((J3DMaterialBlock*)block, flags);
} else if (((u32)i_flags & 0x3000) == 0x2000) {
readPatchedMaterial((J3DMaterialBlock*)block, flags);
}
break;
default:
@ -667,11 +670,9 @@ void J3DModelLoader::readVertex(J3DVertexBlock const* i_block) {
void J3DModelLoader::readEnvelop(J3DEnvelopeBlock const* i_block) {
mpModelData->getJointTree().mWEvlpMtxNum = i_block->mWEvlpMtxNum;
mpModelData->getJointTree().mWEvlpMixMtxNum =
// JSUConvertOffsetToPtr<u8>(i_block, i_block->mpWEvlpMixMtxNum);
func_802F4260(i_block, i_block->mpWEvlpMixMtxNum);
JSUConvertOffsetToPtr<u8>(i_block, i_block->mpWEvlpMixMtxNum);
mpModelData->getJointTree().mWEvlpMixIndex =
// JSUConvertOffsetToPtr<u16>(i_block, i_block->mpWEvlpMixIndex);
func_802F42C0(i_block, i_block->mpWEvlpMixIndex);
JSUConvertOffsetToPtr<u16>(i_block, i_block->mpWEvlpMixIndex);
mpModelData->getJointTree().mWEvlpMixWeight =
// JSUConvertOffsetToPtr<f32>(i_block, i_block->mpWEvlpMixWeight);
func_8030A560(i_block, i_block->mpWEvlpMixWeight);
@ -685,10 +686,8 @@ void J3DModelLoader::readEnvelop(J3DEnvelopeBlock const* i_block) {
void J3DModelLoader::readDraw(J3DDrawBlock const* i_block) {
J3DJointTree& joint_tree = mpModelData->getJointTree();
joint_tree.mDrawMtxData.mEntryNum = i_block->mMtxNum - mpModelData->getJointTree().mWEvlpMtxNum;
// joint_tree.mDrawMtxData.mDrawMtxFlag = JSUConvertOffsetToPtr<u8>(i_block, i_block->mpDrawMtxFlag);
joint_tree.mDrawMtxData.mDrawMtxFlag = func_802F4260(i_block, i_block->mpDrawMtxFlag);
// joint_tree.mDrawMtxData.mDrawMtxIndex = JSUConvertOffsetToPtr<u16>(i_block, i_block->mpDrawMtxIndex);
joint_tree.mDrawMtxData.mDrawMtxIndex = func_802F42C0(i_block, i_block->mpDrawMtxIndex);
joint_tree.mDrawMtxData.mDrawMtxFlag = JSUConvertOffsetToPtr<u8>(i_block, i_block->mpDrawMtxFlag);
joint_tree.mDrawMtxData.mDrawMtxIndex = JSUConvertOffsetToPtr<u16>(i_block, i_block->mpDrawMtxIndex);
u16 i;
for (i = 0; i < joint_tree.mDrawMtxData.mEntryNum; i++) {
if (joint_tree.mDrawMtxData.mDrawMtxFlag[i] == 1) {
@ -960,10 +959,9 @@ void J3DModelLoader::readPatchedMaterial(J3DMaterialBlock const* i_block, u32 i_
/* 80336168-8033631C 330AA8 01B4+00 1/1 0/0 0/0 .text
* readMaterialDL__14J3DModelLoaderFPC18J3DMaterialDLBlockUl */
#ifdef NONMATCHING
// regalloc
void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* i_block, u32 i_flags) {
J3DMaterialFactory factory(*i_block);
s32 flags;
if (mpMaterialTable->mMaterialNum == 0) {
mpMaterialTable->field_0x1c = 1;
mpMaterialTable->mMaterialNum = i_block->mMaterialNum;
@ -978,30 +976,22 @@ void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* i_block, u32 i_fla
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->field_0x10 = NULL;
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
flags = i_flags;
mpMaterialTable->mMaterialNodePointer[i] =
factory.create(NULL, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, i_flags);
factory.create(NULL, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, flags);
}
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
mpMaterialTable->mMaterialNodePointer[i]->mDiffFlag = 0xc0000000;
}
} else {
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
flags = i_flags;
mpMaterialTable->mMaterialNodePointer[i] =
factory.create(mpMaterialTable->mMaterialNodePointer[i],
J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, i_flags);
J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, flags);
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphLoader/J3DModelLoader/readMaterialDL__14J3DModelLoaderFPC18J3DMaterialDLBlockUl.s"
}
#pragma pop
#endif
/* 8033631C-80336398 330C5C 007C+00 1/1 0/0 0/0 .text modifyMaterial__14J3DModelLoaderFUl
*/

View File

@ -28,16 +28,16 @@ extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToP
/* 80337350-80337400 331C90 00B0+00 0/0 2/2 0/0 .text __ct__15J3DShapeFactoryFRC13J3DShapeBlock */
J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& block) {
// mShapeInitData = JSUConvertOffsetToPtr<J3DShapeInitData>(&block, block.mpShapeInitData);
mShapeInitData = func_80336764(&block, block.mpShapeInitData);
// mIndexTable = JSUConvertOffsetToPtr<u16>(&block, block.mpIndexTable);
mIndexTable = func_8033677C(&block, block.mpIndexTable);
mVtxDescList = JSUConvertOffsetToPtr<GXVtxDescList>(&block, block.mpVtxDescList);
// mMtxTable = JSUConvertOffsetToPtr<u16>(&block, block.mpMtxTable);
mMtxTable = func_8033677C(&block, block.mpMtxTable);
mDisplayListData = JSUConvertOffsetToPtr<u8>(&block, block.mpDisplayListData);
mMtxInitData = JSUConvertOffsetToPtr<J3DShapeMtxInitData>(&block, block.mpMtxInitData);
mDrawInitData = JSUConvertOffsetToPtr<J3DShapeDrawInitData>(&block, block.mpDrawInitData);
//mShapeInitData = JSUConvertOffsetToPtr<J3DShapeInitData>(&block, (u32)block.mpShapeInitData);
mShapeInitData = func_80336764(&block, block.mpShapeInitData),
//mIndexTable = JSUConvertOffsetToPtr<u16>(&block, (u32)block.mpIndexTable);
mIndexTable = func_8033677C(&block, block.mpIndexTable),
mVtxDescList = JSUConvertOffsetToPtr<GXVtxDescList>(&block, (u32)block.mpVtxDescList),
//mMtxTable = JSUConvertOffsetToPtr<u16>(&block, (u32)block.mpMtxTable);
mMtxTable = func_8033677C(&block, block.mpMtxTable),
mDisplayListData = JSUConvertOffsetToPtr<u8>(&block, (u32)block.mpDisplayListData),
mMtxInitData = JSUConvertOffsetToPtr<J3DShapeMtxInitData>(&block, (u32)block.mpMtxInitData),
mDrawInitData = JSUConvertOffsetToPtr<J3DShapeDrawInitData>(&block, (u32)block.mpDrawInitData),
mVcdVatCmdBuffer = NULL;
}

View File

@ -1051,8 +1051,11 @@ O_FILES_SYM_ON := \
$(BUILD_DIR)/libs/JSystem/JAudio2/JAUAudioArcLoader.o \
$(BUILD_DIR)/libs/JSystem/J2DGraph/J2DAnmLoader.o \
$(BUILD_DIR)/libs/JSystem/J2DGraph/J2DPicture.o \
$(BUILD_DIR)/libs/JSystem/J2DGraph/J2DMaterialFactory.o \
$(BUILD_DIR)/libs/JSystem/JUtility/JUTProcBar.o \
$(BUILD_DIR)/libs/JSystem/JKernel/JKRAramArchive.o \
$(BUILD_DIR)/libs/JSystem/J3DGraphLoader/J3DClusterLoader.o \
$(BUILD_DIR)/libs/JSystem/J3DGraphLoader/J3DShapeFactory.o \
$(BUILD_DIR)/libs/Z2AudioLib/Z2AudioArcLoader.o \
$(BUILD_DIR)/src/c/c_dylink.o \
$(BUILD_DIR)/src/d/a/d_a_alink.o \