more various JSystem work (#2046)

* most of J3DAnmLoader done

* J3D / JKernel / JUTConsole work

* remove asm

* fix build

* dol 50%
This commit is contained in:
TakaRikka
2024-01-24 04:00:46 -08:00
committed by GitHub
parent b2310b84b6
commit ba44ade90c
122 changed files with 2330 additions and 5261 deletions
+4 -4
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 | 43.718414% | 1572352 | 3596544
.text | 44.112237% | 1586516 | 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 | 49.650606% | 1996288 | 4020672
Total | 50.002885% | 2010452 | 4020672
## Total
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 49.650606% | 1996288 | 4020672
main.dol | 50.002885% | 2010452 | 4020672
RELs | 35.505434% | 4083240 | 11500324
Total | 39.169703% | 6079528 | 15520996
Total | 39.260960% | 6093692 | 15520996
## RELs
@@ -1,157 +0,0 @@
lbl_803273CC:
/* 803273CC 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803273D0 7C 08 02 A6 */ mflr r0
/* 803273D4 90 01 00 34 */ stw r0, 0x34(r1)
/* 803273D8 39 61 00 30 */ addi r11, r1, 0x30
/* 803273DC 48 03 AD E9 */ bl _savegpr_23
/* 803273E0 7C 78 1B 78 */ mr r24, r3
/* 803273E4 7C 99 23 78 */ mr r25, r4
/* 803273E8 7C BA 2B 78 */ mr r26, r5
/* 803273EC A0 04 00 5C */ lhz r0, 0x5c(r4)
/* 803273F0 28 00 00 00 */ cmplwi r0, 0
/* 803273F4 41 82 00 48 */ beq lbl_8032743C
/* 803273F8 54 17 04 3E */ clrlwi r23, r0, 0x10
/* 803273FC 54 03 32 B2 */ rlwinm r3, r0, 6, 0xa, 0x19
/* 80327400 38 63 00 10 */ addi r3, r3, 0x10
/* 80327404 4B FA 78 C1 */ bl __nwa__FUl
/* 80327408 3C 80 80 31 */ lis r4, __ct__12J3DMatPacketFv@ha /* 0x80312948@ha */
/* 8032740C 38 84 29 48 */ addi r4, r4, __ct__12J3DMatPacketFv@l /* 0x80312948@l */
/* 80327410 3C A0 80 31 */ lis r5, __dt__12J3DMatPacketFv@ha /* 0x803129A4@ha */
/* 80327414 38 A5 29 A4 */ addi r5, r5, __dt__12J3DMatPacketFv@l /* 0x803129A4@l */
/* 80327418 38 C0 00 40 */ li r6, 0x40
/* 8032741C 7E E7 BB 78 */ mr r7, r23
/* 80327420 48 03 AA F5 */ bl __construct_new_array
/* 80327424 90 78 00 C0 */ stw r3, 0xc0(r24)
/* 80327428 80 18 00 C0 */ lwz r0, 0xc0(r24)
/* 8032742C 28 00 00 00 */ cmplwi r0, 0
/* 80327430 40 82 00 0C */ bne lbl_8032743C
/* 80327434 38 60 00 04 */ li r3, 4
/* 80327438 48 00 01 AC */ b lbl_803275E4
lbl_8032743C:
/* 8032743C A2 F9 00 5C */ lhz r23, 0x5c(r25)
/* 80327440 3B 60 00 00 */ li r27, 0
/* 80327444 57 5E 03 18 */ rlwinm r30, r26, 0, 0xc, 0xc
/* 80327448 57 5D 03 5A */ rlwinm r29, r26, 0, 0xd, 0xd
/* 8032744C 57 5C 03 9C */ rlwinm r28, r26, 0, 0xe, 0xe
/* 80327450 48 00 01 84 */ b lbl_803275D4
lbl_80327454:
/* 80327454 80 79 00 60 */ lwz r3, 0x60(r25)
/* 80327458 57 60 13 BA */ rlwinm r0, r27, 2, 0xe, 0x1d
/* 8032745C 7F E3 00 2E */ lwzx r31, r3, r0
/* 80327460 80 78 00 C0 */ lwz r3, 0xc0(r24)
/* 80327464 57 60 32 B2 */ rlwinm r0, r27, 6, 0xa, 0x19
/* 80327468 7F 43 02 14 */ add r26, r3, r0
/* 8032746C 80 7F 00 08 */ lwz r3, 8(r31)
/* 80327470 A0 03 00 08 */ lhz r0, 8(r3)
/* 80327474 80 78 00 C4 */ lwz r3, 0xc4(r24)
/* 80327478 1C 00 00 3C */ mulli r0, r0, 0x3c
/* 8032747C 7C 83 02 14 */ add r4, r3, r0
/* 80327480 93 FA 00 30 */ stw r31, 0x30(r26)
/* 80327484 90 9A 00 28 */ stw r4, 0x28(r26)
/* 80327488 7F 43 D3 78 */ mr r3, r26
/* 8032748C 4B FE B5 79 */ bl addShapePacket__12J3DMatPacketFP14J3DShapePacket
/* 80327490 80 19 00 6C */ lwz r0, 0x6c(r25)
/* 80327494 90 1A 00 38 */ stw r0, 0x38(r26)
/* 80327498 80 1F 00 20 */ lwz r0, 0x20(r31)
/* 8032749C 90 1A 00 34 */ stw r0, 0x34(r26)
/* 803274A0 80 19 00 1C */ lwz r0, 0x1c(r25)
/* 803274A4 28 00 00 01 */ cmplwi r0, 1
/* 803274A8 40 82 00 10 */ bne lbl_803274B8
/* 803274AC 80 1A 00 10 */ lwz r0, 0x10(r26)
/* 803274B0 60 00 00 01 */ ori r0, r0, 1
/* 803274B4 90 1A 00 10 */ stw r0, 0x10(r26)
lbl_803274B8:
/* 803274B8 28 1E 00 00 */ cmplwi r30, 0
/* 803274BC 41 82 00 10 */ beq lbl_803274CC
/* 803274C0 80 1F 00 48 */ lwz r0, 0x48(r31)
/* 803274C4 90 1A 00 20 */ stw r0, 0x20(r26)
/* 803274C8 48 00 01 08 */ b lbl_803275D0
lbl_803274CC:
/* 803274CC 80 19 00 1C */ lwz r0, 0x1c(r25)
/* 803274D0 28 00 00 01 */ cmplwi r0, 1
/* 803274D4 40 82 00 38 */ bne lbl_8032750C
/* 803274D8 28 1D 00 00 */ cmplwi r29, 0
/* 803274DC 41 82 00 10 */ beq lbl_803274EC
/* 803274E0 80 1F 00 48 */ lwz r0, 0x48(r31)
/* 803274E4 90 1A 00 20 */ stw r0, 0x20(r26)
/* 803274E8 48 00 00 E8 */ b lbl_803275D0
lbl_803274EC:
/* 803274EC 83 FF 00 48 */ lwz r31, 0x48(r31)
/* 803274F0 7F E3 FB 78 */ mr r3, r31
/* 803274F4 4B FE B0 79 */ bl single_To_Double__17J3DDisplayListObjFv
/* 803274F8 2C 03 00 00 */ cmpwi r3, 0
/* 803274FC 41 82 00 08 */ beq lbl_80327504
/* 80327500 48 00 00 E4 */ b lbl_803275E4
lbl_80327504:
/* 80327504 93 FA 00 20 */ stw r31, 0x20(r26)
/* 80327508 48 00 00 C8 */ b lbl_803275D0
lbl_8032750C:
/* 8032750C 28 1C 00 00 */ cmplwi r28, 0
/* 80327510 41 82 00 78 */ beq lbl_80327588
/* 80327514 28 1D 00 00 */ cmplwi r29, 0
/* 80327518 41 82 00 30 */ beq lbl_80327548
/* 8032751C 7F E3 FB 78 */ mr r3, r31
/* 80327520 4B FE ED 71 */ bl countDLSize__11J3DMaterialFv
/* 80327524 7C 64 1B 78 */ mr r4, r3
/* 80327528 7F E3 FB 78 */ mr r3, r31
/* 8032752C 4B FE F9 F9 */ bl newSingleSharedDisplayList__11J3DMaterialFUl
/* 80327530 2C 03 00 00 */ cmpwi r3, 0
/* 80327534 41 82 00 08 */ beq lbl_8032753C
/* 80327538 48 00 00 AC */ b lbl_803275E4
lbl_8032753C:
/* 8032753C 80 1F 00 48 */ lwz r0, 0x48(r31)
/* 80327540 90 1A 00 20 */ stw r0, 0x20(r26)
/* 80327544 48 00 00 8C */ b lbl_803275D0
lbl_80327548:
/* 80327548 7F E3 FB 78 */ mr r3, r31
/* 8032754C 4B FE ED 45 */ bl countDLSize__11J3DMaterialFv
/* 80327550 7C 64 1B 78 */ mr r4, r3
/* 80327554 7F E3 FB 78 */ mr r3, r31
/* 80327558 4B FE F9 39 */ bl newSharedDisplayList__11J3DMaterialFUl
/* 8032755C 2C 03 00 00 */ cmpwi r3, 0
/* 80327560 41 82 00 08 */ beq lbl_80327568
/* 80327564 48 00 00 80 */ b lbl_803275E4
lbl_80327568:
/* 80327568 83 FF 00 48 */ lwz r31, 0x48(r31)
/* 8032756C 7F E3 FB 78 */ mr r3, r31
/* 80327570 4B FE AF FD */ bl single_To_Double__17J3DDisplayListObjFv
/* 80327574 2C 03 00 00 */ cmpwi r3, 0
/* 80327578 41 82 00 08 */ beq lbl_80327580
/* 8032757C 48 00 00 68 */ b lbl_803275E4
lbl_80327580:
/* 80327580 93 FA 00 20 */ stw r31, 0x20(r26)
/* 80327584 48 00 00 4C */ b lbl_803275D0
lbl_80327588:
/* 80327588 28 1D 00 00 */ cmplwi r29, 0
/* 8032758C 41 82 00 24 */ beq lbl_803275B0
/* 80327590 7F E3 FB 78 */ mr r3, r31
/* 80327594 4B FE EC FD */ bl countDLSize__11J3DMaterialFv
/* 80327598 7C 64 1B 78 */ mr r4, r3
/* 8032759C 7F 43 D3 78 */ mr r3, r26
/* 803275A0 4B FE B2 F9 */ bl newSingleDisplayList__13J3DDrawPacketFUl
/* 803275A4 2C 03 00 00 */ cmpwi r3, 0
/* 803275A8 41 82 00 28 */ beq lbl_803275D0
/* 803275AC 48 00 00 38 */ b lbl_803275E4
lbl_803275B0:
/* 803275B0 7F E3 FB 78 */ mr r3, r31
/* 803275B4 4B FE EC DD */ bl countDLSize__11J3DMaterialFv
/* 803275B8 7C 64 1B 78 */ mr r4, r3
/* 803275BC 7F 43 D3 78 */ mr r3, r26
/* 803275C0 4B FE B2 4D */ bl newDisplayList__13J3DDrawPacketFUl
/* 803275C4 2C 03 00 00 */ cmpwi r3, 0
/* 803275C8 41 82 00 08 */ beq lbl_803275D0
/* 803275CC 48 00 00 18 */ b lbl_803275E4
lbl_803275D0:
/* 803275D0 3B 7B 00 01 */ addi r27, r27, 1
lbl_803275D4:
/* 803275D4 57 60 04 3E */ clrlwi r0, r27, 0x10
/* 803275D8 7C 00 B8 40 */ cmplw r0, r23
/* 803275DC 41 80 FE 78 */ blt lbl_80327454
/* 803275E0 38 60 00 00 */ li r3, 0
lbl_803275E4:
/* 803275E4 39 61 00 30 */ addi r11, r1, 0x30
/* 803275E8 48 03 AC 29 */ bl _restgpr_23
/* 803275EC 80 01 00 34 */ lwz r0, 0x34(r1)
/* 803275F0 7C 08 03 A6 */ mtlr r0
/* 803275F4 38 21 00 30 */ addi r1, r1, 0x30
/* 803275F8 4E 80 00 20 */ blr
@@ -1,192 +0,0 @@
lbl_8030EB30:
/* 8030EB30 94 21 FF A0 */ stwu r1, -0x60(r1)
/* 8030EB34 7C 08 02 A6 */ mflr r0
/* 8030EB38 90 01 00 64 */ stw r0, 0x64(r1)
/* 8030EB3C 39 61 00 60 */ addi r11, r1, 0x60
/* 8030EB40 48 05 36 89 */ bl _savegpr_24
/* 8030EB44 7C B8 2B 78 */ mr r24, r5
/* 8030EB48 2C 03 00 08 */ cmpwi r3, 8
/* 8030EB4C 41 82 00 44 */ beq lbl_8030EB90
/* 8030EB50 40 80 00 1C */ bge lbl_8030EB6C
/* 8030EB54 2C 03 00 04 */ cmpwi r3, 4
/* 8030EB58 41 82 00 38 */ beq lbl_8030EB90
/* 8030EB5C 40 80 00 24 */ bge lbl_8030EB80
/* 8030EB60 2C 03 00 01 */ cmpwi r3, 1
/* 8030EB64 40 80 00 14 */ bge lbl_8030EB78
/* 8030EB68 48 00 00 28 */ b lbl_8030EB90
lbl_8030EB6C:
/* 8030EB6C 2C 03 00 0C */ cmpwi r3, 0xc
/* 8030EB70 40 80 00 20 */ bge lbl_8030EB90
/* 8030EB74 48 00 00 14 */ b lbl_8030EB88
lbl_8030EB78:
/* 8030EB78 3B 23 FF FF */ addi r25, r3, -1
/* 8030EB7C 48 00 00 18 */ b lbl_8030EB94
lbl_8030EB80:
/* 8030EB80 3B 23 FF FB */ addi r25, r3, -5
/* 8030EB84 48 00 00 10 */ b lbl_8030EB94
lbl_8030EB88:
/* 8030EB88 3B 23 FF F7 */ addi r25, r3, -9
/* 8030EB8C 48 00 00 08 */ b lbl_8030EB94
lbl_8030EB90:
/* 8030EB90 3B 20 00 00 */ li r25, 0
lbl_8030EB94:
/* 8030EB94 C0 22 C9 30 */ lfs f1, lit_1233(r2)
/* 8030EB98 C0 04 00 00 */ lfs f0, 0(r4)
/* 8030EB9C EC 01 00 32 */ fmuls f0, f1, f0
/* 8030EBA0 FC 00 00 1E */ fctiwz f0, f0
/* 8030EBA4 D8 01 00 08 */ stfd f0, 8(r1)
/* 8030EBA8 80 01 00 0C */ lwz r0, 0xc(r1)
/* 8030EBAC 54 1F 05 7E */ clrlwi r31, r0, 0x15
/* 8030EBB0 C0 04 00 0C */ lfs f0, 0xc(r4)
/* 8030EBB4 EC 01 00 32 */ fmuls f0, f1, f0
/* 8030EBB8 FC 00 00 1E */ fctiwz f0, f0
/* 8030EBBC D8 01 00 10 */ stfd f0, 0x10(r1)
/* 8030EBC0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8030EBC4 54 1E 05 7E */ clrlwi r30, r0, 0x15
/* 8030EBC8 C0 04 00 04 */ lfs f0, 4(r4)
/* 8030EBCC EC 01 00 32 */ fmuls f0, f1, f0
/* 8030EBD0 FC 00 00 1E */ fctiwz f0, f0
/* 8030EBD4 D8 01 00 18 */ stfd f0, 0x18(r1)
/* 8030EBD8 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 8030EBDC 54 1D 05 7E */ clrlwi r29, r0, 0x15
/* 8030EBE0 C0 04 00 10 */ lfs f0, 0x10(r4)
/* 8030EBE4 EC 01 00 32 */ fmuls f0, f1, f0
/* 8030EBE8 FC 00 00 1E */ fctiwz f0, f0
/* 8030EBEC D8 01 00 20 */ stfd f0, 0x20(r1)
/* 8030EBF0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8030EBF4 54 1C 05 7E */ clrlwi r28, r0, 0x15
/* 8030EBF8 C0 04 00 08 */ lfs f0, 8(r4)
/* 8030EBFC EC 01 00 32 */ fmuls f0, f1, f0
/* 8030EC00 FC 00 00 1E */ fctiwz f0, f0
/* 8030EC04 D8 01 00 28 */ stfd f0, 0x28(r1)
/* 8030EC08 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 8030EC0C 54 1B 05 7E */ clrlwi r27, r0, 0x15
/* 8030EC10 C0 04 00 14 */ lfs f0, 0x14(r4)
/* 8030EC14 EC 01 00 32 */ fmuls f0, f1, f0
/* 8030EC18 FC 00 00 1E */ fctiwz f0, f0
/* 8030EC1C D8 01 00 30 */ stfd f0, 0x30(r1)
/* 8030EC20 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8030EC24 54 1A 05 7E */ clrlwi r26, r0, 0x15
/* 8030EC28 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030EC2C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030EC30 38 63 00 0F */ addi r3, r3, 0xf
/* 8030EC34 80 04 00 0C */ lwz r0, 0xc(r4)
/* 8030EC38 7C 03 00 40 */ cmplw r3, r0
/* 8030EC3C 40 81 00 08 */ ble lbl_8030EC44
/* 8030EC40 48 05 24 95 */ bl GDOverflowed
lbl_8030EC44:
/* 8030EC44 38 18 00 11 */ addi r0, r24, 0x11
/* 8030EC48 7C 03 07 74 */ extsb r3, r0
/* 8030EC4C 54 64 B2 12 */ rlwinm r4, r3, 0x16, 8, 9
/* 8030EC50 57 C0 58 28 */ slwi r0, r30, 0xb
/* 8030EC54 7F E0 03 78 */ or r0, r31, r0
/* 8030EC58 7C 85 03 78 */ or r5, r4, r0
/* 8030EC5C 1C 99 00 03 */ mulli r4, r25, 3
/* 8030EC60 38 04 00 06 */ addi r0, r4, 6
/* 8030EC64 54 00 C0 0E */ slwi r0, r0, 0x18
/* 8030EC68 7C A9 03 78 */ or r9, r5, r0
/* 8030EC6C 38 00 00 61 */ li r0, 0x61
/* 8030EC70 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030EC74 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030EC78 38 A6 00 01 */ addi r5, r6, 1
/* 8030EC7C 90 A7 00 08 */ stw r5, 8(r7)
/* 8030EC80 98 06 00 00 */ stb r0, 0(r6)
/* 8030EC84 55 28 46 3E */ srwi r8, r9, 0x18
/* 8030EC88 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030EC8C 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030EC90 38 A6 00 01 */ addi r5, r6, 1
/* 8030EC94 90 A7 00 08 */ stw r5, 8(r7)
/* 8030EC98 99 06 00 00 */ stb r8, 0(r6)
/* 8030EC9C 55 28 86 3E */ rlwinm r8, r9, 0x10, 0x18, 0x1f
/* 8030ECA0 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ECA4 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ECA8 38 A6 00 01 */ addi r5, r6, 1
/* 8030ECAC 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ECB0 99 06 00 00 */ stb r8, 0(r6)
/* 8030ECB4 55 28 C6 3E */ rlwinm r8, r9, 0x18, 0x18, 0x1f
/* 8030ECB8 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ECBC 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ECC0 38 A6 00 01 */ addi r5, r6, 1
/* 8030ECC4 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ECC8 99 06 00 00 */ stb r8, 0(r6)
/* 8030ECCC 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ECD0 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ECD4 38 A6 00 01 */ addi r5, r6, 1
/* 8030ECD8 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ECDC 99 26 00 00 */ stb r9, 0(r6)
/* 8030ECE0 54 66 A2 12 */ rlwinm r6, r3, 0x14, 8, 9
/* 8030ECE4 57 85 58 28 */ slwi r5, r28, 0xb
/* 8030ECE8 7F A5 2B 78 */ or r5, r29, r5
/* 8030ECEC 7C C6 2B 78 */ or r6, r6, r5
/* 8030ECF0 38 A4 00 07 */ addi r5, r4, 7
/* 8030ECF4 54 A5 C0 0E */ slwi r5, r5, 0x18
/* 8030ECF8 7C C9 2B 78 */ or r9, r6, r5
/* 8030ECFC 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ED00 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ED04 38 A6 00 01 */ addi r5, r6, 1
/* 8030ED08 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ED0C 98 06 00 00 */ stb r0, 0(r6)
/* 8030ED10 55 28 46 3E */ srwi r8, r9, 0x18
/* 8030ED14 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ED18 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ED1C 38 A6 00 01 */ addi r5, r6, 1
/* 8030ED20 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ED24 99 06 00 00 */ stb r8, 0(r6)
/* 8030ED28 55 28 86 3E */ rlwinm r8, r9, 0x10, 0x18, 0x1f
/* 8030ED2C 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ED30 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ED34 38 A6 00 01 */ addi r5, r6, 1
/* 8030ED38 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ED3C 99 06 00 00 */ stb r8, 0(r6)
/* 8030ED40 55 28 C6 3E */ rlwinm r8, r9, 0x18, 0x18, 0x1f
/* 8030ED44 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ED48 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ED4C 38 A6 00 01 */ addi r5, r6, 1
/* 8030ED50 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ED54 99 06 00 00 */ stb r8, 0(r6)
/* 8030ED58 80 ED 94 00 */ lwz r7, __GDCurrentDL(r13)
/* 8030ED5C 80 C7 00 08 */ lwz r6, 8(r7)
/* 8030ED60 38 A6 00 01 */ addi r5, r6, 1
/* 8030ED64 90 A7 00 08 */ stw r5, 8(r7)
/* 8030ED68 99 26 00 00 */ stb r9, 0(r6)
/* 8030ED6C 54 65 92 12 */ rlwinm r5, r3, 0x12, 8, 9
/* 8030ED70 57 43 58 28 */ slwi r3, r26, 0xb
/* 8030ED74 7F 63 1B 78 */ or r3, r27, r3
/* 8030ED78 7C A5 1B 78 */ or r5, r5, r3
/* 8030ED7C 38 64 00 08 */ addi r3, r4, 8
/* 8030ED80 54 63 C0 0E */ slwi r3, r3, 0x18
/* 8030ED84 7C A6 1B 78 */ or r6, r5, r3
/* 8030ED88 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030ED8C 80 85 00 08 */ lwz r4, 8(r5)
/* 8030ED90 38 64 00 01 */ addi r3, r4, 1
/* 8030ED94 90 65 00 08 */ stw r3, 8(r5)
/* 8030ED98 98 04 00 00 */ stb r0, 0(r4)
/* 8030ED9C 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030EDA0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030EDA4 80 64 00 08 */ lwz r3, 8(r4)
/* 8030EDA8 38 03 00 01 */ addi r0, r3, 1
/* 8030EDAC 90 04 00 08 */ stw r0, 8(r4)
/* 8030EDB0 98 A3 00 00 */ stb r5, 0(r3)
/* 8030EDB4 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030EDB8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030EDBC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030EDC0 38 03 00 01 */ addi r0, r3, 1
/* 8030EDC4 90 04 00 08 */ stw r0, 8(r4)
/* 8030EDC8 98 A3 00 00 */ stb r5, 0(r3)
/* 8030EDCC 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030EDD0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030EDD4 80 64 00 08 */ lwz r3, 8(r4)
/* 8030EDD8 38 03 00 01 */ addi r0, r3, 1
/* 8030EDDC 90 04 00 08 */ stw r0, 8(r4)
/* 8030EDE0 98 A3 00 00 */ stb r5, 0(r3)
/* 8030EDE4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030EDE8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030EDEC 38 03 00 01 */ addi r0, r3, 1
/* 8030EDF0 90 04 00 08 */ stw r0, 8(r4)
/* 8030EDF4 98 C3 00 00 */ stb r6, 0(r3)
/* 8030EDF8 39 61 00 60 */ addi r11, r1, 0x60
/* 8030EDFC 48 05 34 19 */ bl _restgpr_24
/* 8030EE00 80 01 00 64 */ lwz r0, 0x64(r1)
/* 8030EE04 7C 08 03 A6 */ mtlr r0
/* 8030EE08 38 21 00 60 */ addi r1, r1, 0x60
/* 8030EE0C 4E 80 00 20 */ blr
@@ -1,192 +0,0 @@
lbl_8030D364:
/* 8030D364 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8030D368 7C 60 00 34 */ cntlzw r0, r3
/* 8030D36C 20 00 00 1F */ subfic r0, r0, 0x1f
/* 8030D370 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 8030D374 28 00 00 07 */ cmplwi r0, 7
/* 8030D378 40 81 00 08 */ ble lbl_8030D380
/* 8030D37C 38 00 00 00 */ li r0, 0
lbl_8030D380:
/* 8030D380 54 03 24 36 */ rlwinm r3, r0, 4, 0x10, 0x1b
/* 8030D384 38 C3 06 04 */ addi r6, r3, 0x604
/* 8030D388 38 A0 00 10 */ li r5, 0x10
/* 8030D38C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D390 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D394 38 03 00 01 */ addi r0, r3, 1
/* 8030D398 90 04 00 08 */ stw r0, 8(r4)
/* 8030D39C 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D3A0 38 A0 00 00 */ li r5, 0
/* 8030D3A4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D3A8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D3AC 38 03 00 01 */ addi r0, r3, 1
/* 8030D3B0 90 04 00 08 */ stw r0, 8(r4)
/* 8030D3B4 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D3B8 38 A0 00 05 */ li r5, 5
/* 8030D3BC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D3C0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D3C4 38 03 00 01 */ addi r0, r3, 1
/* 8030D3C8 90 04 00 08 */ stw r0, 8(r4)
/* 8030D3CC 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D3D0 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D3D4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D3D8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D3DC 38 03 00 01 */ addi r0, r3, 1
/* 8030D3E0 90 04 00 08 */ stw r0, 8(r4)
/* 8030D3E4 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D3E8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D3EC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D3F0 38 03 00 01 */ addi r0, r3, 1
/* 8030D3F4 90 04 00 08 */ stw r0, 8(r4)
/* 8030D3F8 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D3FC D0 21 00 1C */ stfs f1, 0x1c(r1)
/* 8030D400 80 C1 00 1C */ lwz r6, 0x1c(r1)
/* 8030D404 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D408 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D40C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D410 38 03 00 01 */ addi r0, r3, 1
/* 8030D414 90 04 00 08 */ stw r0, 8(r4)
/* 8030D418 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D41C 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D420 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D424 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D428 38 03 00 01 */ addi r0, r3, 1
/* 8030D42C 90 04 00 08 */ stw r0, 8(r4)
/* 8030D430 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D434 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D438 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D43C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D440 38 03 00 01 */ addi r0, r3, 1
/* 8030D444 90 04 00 08 */ stw r0, 8(r4)
/* 8030D448 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D44C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D450 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D454 38 03 00 01 */ addi r0, r3, 1
/* 8030D458 90 04 00 08 */ stw r0, 8(r4)
/* 8030D45C 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D460 D0 41 00 18 */ stfs f2, 0x18(r1)
/* 8030D464 80 C1 00 18 */ lwz r6, 0x18(r1)
/* 8030D468 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D46C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D470 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D474 38 03 00 01 */ addi r0, r3, 1
/* 8030D478 90 04 00 08 */ stw r0, 8(r4)
/* 8030D47C 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D480 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D484 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D488 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D48C 38 03 00 01 */ addi r0, r3, 1
/* 8030D490 90 04 00 08 */ stw r0, 8(r4)
/* 8030D494 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D498 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D49C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D4A0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D4A4 38 03 00 01 */ addi r0, r3, 1
/* 8030D4A8 90 04 00 08 */ stw r0, 8(r4)
/* 8030D4AC 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D4B0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D4B4 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D4B8 38 03 00 01 */ addi r0, r3, 1
/* 8030D4BC 90 04 00 08 */ stw r0, 8(r4)
/* 8030D4C0 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D4C4 D0 61 00 14 */ stfs f3, 0x14(r1)
/* 8030D4C8 80 C1 00 14 */ lwz r6, 0x14(r1)
/* 8030D4CC 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D4D0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D4D4 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D4D8 38 03 00 01 */ addi r0, r3, 1
/* 8030D4DC 90 04 00 08 */ stw r0, 8(r4)
/* 8030D4E0 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D4E4 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D4E8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D4EC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D4F0 38 03 00 01 */ addi r0, r3, 1
/* 8030D4F4 90 04 00 08 */ stw r0, 8(r4)
/* 8030D4F8 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D4FC 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D500 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D504 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D508 38 03 00 01 */ addi r0, r3, 1
/* 8030D50C 90 04 00 08 */ stw r0, 8(r4)
/* 8030D510 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D514 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D518 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D51C 38 03 00 01 */ addi r0, r3, 1
/* 8030D520 90 04 00 08 */ stw r0, 8(r4)
/* 8030D524 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D528 D0 81 00 10 */ stfs f4, 0x10(r1)
/* 8030D52C 80 C1 00 10 */ lwz r6, 0x10(r1)
/* 8030D530 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D534 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D538 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D53C 38 03 00 01 */ addi r0, r3, 1
/* 8030D540 90 04 00 08 */ stw r0, 8(r4)
/* 8030D544 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D548 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D54C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D550 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D554 38 03 00 01 */ addi r0, r3, 1
/* 8030D558 90 04 00 08 */ stw r0, 8(r4)
/* 8030D55C 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D560 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D564 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D568 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D56C 38 03 00 01 */ addi r0, r3, 1
/* 8030D570 90 04 00 08 */ stw r0, 8(r4)
/* 8030D574 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D578 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D57C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D580 38 03 00 01 */ addi r0, r3, 1
/* 8030D584 90 04 00 08 */ stw r0, 8(r4)
/* 8030D588 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D58C D0 A1 00 0C */ stfs f5, 0xc(r1)
/* 8030D590 80 C1 00 0C */ lwz r6, 0xc(r1)
/* 8030D594 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D598 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D59C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D5A0 38 03 00 01 */ addi r0, r3, 1
/* 8030D5A4 90 04 00 08 */ stw r0, 8(r4)
/* 8030D5A8 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D5AC 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D5B0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D5B4 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D5B8 38 03 00 01 */ addi r0, r3, 1
/* 8030D5BC 90 04 00 08 */ stw r0, 8(r4)
/* 8030D5C0 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D5C4 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D5C8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D5CC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D5D0 38 03 00 01 */ addi r0, r3, 1
/* 8030D5D4 90 04 00 08 */ stw r0, 8(r4)
/* 8030D5D8 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D5DC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D5E0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D5E4 38 03 00 01 */ addi r0, r3, 1
/* 8030D5E8 90 04 00 08 */ stw r0, 8(r4)
/* 8030D5EC 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D5F0 D0 C1 00 08 */ stfs f6, 8(r1)
/* 8030D5F4 80 C1 00 08 */ lwz r6, 8(r1)
/* 8030D5F8 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D5FC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D600 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D604 38 03 00 01 */ addi r0, r3, 1
/* 8030D608 90 04 00 08 */ stw r0, 8(r4)
/* 8030D60C 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D610 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D614 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D618 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D61C 38 03 00 01 */ addi r0, r3, 1
/* 8030D620 90 04 00 08 */ stw r0, 8(r4)
/* 8030D624 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D628 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D62C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D630 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D634 38 03 00 01 */ addi r0, r3, 1
/* 8030D638 90 04 00 08 */ stw r0, 8(r4)
/* 8030D63C 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D640 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D644 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D648 38 03 00 01 */ addi r0, r3, 1
/* 8030D64C 90 04 00 08 */ stw r0, 8(r4)
/* 8030D650 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D654 38 21 00 20 */ addi r1, r1, 0x20
/* 8030D658 4E 80 00 20 */ blr
@@ -1,70 +0,0 @@
lbl_8030D65C:
/* 8030D65C 88 E4 00 03 */ lbz r7, 3(r4)
/* 8030D660 88 C4 00 02 */ lbz r6, 2(r4)
/* 8030D664 88 A4 00 00 */ lbz r5, 0(r4)
/* 8030D668 88 04 00 01 */ lbz r0, 1(r4)
/* 8030D66C 54 00 80 1E */ slwi r0, r0, 0x10
/* 8030D670 50 A0 C0 0E */ rlwimi r0, r5, 0x18, 0, 7
/* 8030D674 50 C0 44 2E */ rlwimi r0, r6, 8, 0x10, 0x17
/* 8030D678 7C E0 03 78 */ or r0, r7, r0
/* 8030D67C 7C 63 00 34 */ cntlzw r3, r3
/* 8030D680 20 63 00 1F */ subfic r3, r3, 0x1f
/* 8030D684 54 63 04 3E */ clrlwi r3, r3, 0x10
/* 8030D688 28 03 00 07 */ cmplwi r3, 7
/* 8030D68C 40 81 00 08 */ ble lbl_8030D694
/* 8030D690 38 60 00 00 */ li r3, 0
lbl_8030D694:
/* 8030D694 54 63 24 36 */ rlwinm r3, r3, 4, 0x10, 0x1b
/* 8030D698 38 E3 06 03 */ addi r7, r3, 0x603
/* 8030D69C 38 C0 00 10 */ li r6, 0x10
/* 8030D6A0 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D6A4 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D6A8 38 64 00 01 */ addi r3, r4, 1
/* 8030D6AC 90 65 00 08 */ stw r3, 8(r5)
/* 8030D6B0 98 C4 00 00 */ stb r6, 0(r4)
/* 8030D6B4 38 C0 00 00 */ li r6, 0
/* 8030D6B8 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D6BC 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D6C0 38 64 00 01 */ addi r3, r4, 1
/* 8030D6C4 90 65 00 08 */ stw r3, 8(r5)
/* 8030D6C8 98 C4 00 00 */ stb r6, 0(r4)
/* 8030D6CC 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D6D0 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D6D4 38 64 00 01 */ addi r3, r4, 1
/* 8030D6D8 90 65 00 08 */ stw r3, 8(r5)
/* 8030D6DC 98 C4 00 00 */ stb r6, 0(r4)
/* 8030D6E0 54 E6 C6 3E */ rlwinm r6, r7, 0x18, 0x18, 0x1f
/* 8030D6E4 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D6E8 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D6EC 38 64 00 01 */ addi r3, r4, 1
/* 8030D6F0 90 65 00 08 */ stw r3, 8(r5)
/* 8030D6F4 98 C4 00 00 */ stb r6, 0(r4)
/* 8030D6F8 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D6FC 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D700 38 64 00 01 */ addi r3, r4, 1
/* 8030D704 90 65 00 08 */ stw r3, 8(r5)
/* 8030D708 98 E4 00 00 */ stb r7, 0(r4)
/* 8030D70C 54 06 46 3E */ srwi r6, r0, 0x18
/* 8030D710 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D714 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D718 38 64 00 01 */ addi r3, r4, 1
/* 8030D71C 90 65 00 08 */ stw r3, 8(r5)
/* 8030D720 98 C4 00 00 */ stb r6, 0(r4)
/* 8030D724 54 06 86 3E */ rlwinm r6, r0, 0x10, 0x18, 0x1f
/* 8030D728 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D72C 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D730 38 64 00 01 */ addi r3, r4, 1
/* 8030D734 90 65 00 08 */ stw r3, 8(r5)
/* 8030D738 98 C4 00 00 */ stb r6, 0(r4)
/* 8030D73C 54 06 C6 3E */ rlwinm r6, r0, 0x18, 0x18, 0x1f
/* 8030D740 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D744 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D748 38 64 00 01 */ addi r3, r4, 1
/* 8030D74C 90 65 00 08 */ stw r3, 8(r5)
/* 8030D750 98 C4 00 00 */ stb r6, 0(r4)
/* 8030D754 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13)
/* 8030D758 80 85 00 08 */ lwz r4, 8(r5)
/* 8030D75C 38 64 00 01 */ addi r3, r4, 1
/* 8030D760 90 65 00 08 */ stw r3, 8(r5)
/* 8030D764 98 04 00 00 */ stb r0, 0(r4)
/* 8030D768 4E 80 00 20 */ blr
@@ -1,117 +0,0 @@
lbl_8030D938:
/* 8030D938 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8030D93C 7C 60 00 34 */ cntlzw r0, r3
/* 8030D940 20 00 00 1F */ subfic r0, r0, 0x1f
/* 8030D944 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 8030D948 28 00 00 07 */ cmplwi r0, 7
/* 8030D94C 40 81 00 08 */ ble lbl_8030D954
/* 8030D950 38 00 00 00 */ li r0, 0
lbl_8030D954:
/* 8030D954 54 03 24 36 */ rlwinm r3, r0, 4, 0x10, 0x1b
/* 8030D958 38 C3 06 0D */ addi r6, r3, 0x60d
/* 8030D95C 38 A0 00 10 */ li r5, 0x10
/* 8030D960 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D964 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D968 38 03 00 01 */ addi r0, r3, 1
/* 8030D96C 90 04 00 08 */ stw r0, 8(r4)
/* 8030D970 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D974 38 A0 00 00 */ li r5, 0
/* 8030D978 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D97C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D980 38 03 00 01 */ addi r0, r3, 1
/* 8030D984 90 04 00 08 */ stw r0, 8(r4)
/* 8030D988 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D98C 38 A0 00 02 */ li r5, 2
/* 8030D990 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D994 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D998 38 03 00 01 */ addi r0, r3, 1
/* 8030D99C 90 04 00 08 */ stw r0, 8(r4)
/* 8030D9A0 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D9A4 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D9A8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D9AC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D9B0 38 03 00 01 */ addi r0, r3, 1
/* 8030D9B4 90 04 00 08 */ stw r0, 8(r4)
/* 8030D9B8 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D9BC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D9C0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D9C4 38 03 00 01 */ addi r0, r3, 1
/* 8030D9C8 90 04 00 08 */ stw r0, 8(r4)
/* 8030D9CC 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D9D0 D0 21 00 10 */ stfs f1, 0x10(r1)
/* 8030D9D4 80 C1 00 10 */ lwz r6, 0x10(r1)
/* 8030D9D8 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D9DC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D9E0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D9E4 38 03 00 01 */ addi r0, r3, 1
/* 8030D9E8 90 04 00 08 */ stw r0, 8(r4)
/* 8030D9EC 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D9F0 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D9F4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D9F8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D9FC 38 03 00 01 */ addi r0, r3, 1
/* 8030DA00 90 04 00 08 */ stw r0, 8(r4)
/* 8030DA04 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DA08 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030DA0C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DA10 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DA14 38 03 00 01 */ addi r0, r3, 1
/* 8030DA18 90 04 00 08 */ stw r0, 8(r4)
/* 8030DA1C 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DA20 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DA24 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DA28 38 03 00 01 */ addi r0, r3, 1
/* 8030DA2C 90 04 00 08 */ stw r0, 8(r4)
/* 8030DA30 98 C3 00 00 */ stb r6, 0(r3)
/* 8030DA34 D0 41 00 0C */ stfs f2, 0xc(r1)
/* 8030DA38 80 C1 00 0C */ lwz r6, 0xc(r1)
/* 8030DA3C 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030DA40 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DA44 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DA48 38 03 00 01 */ addi r0, r3, 1
/* 8030DA4C 90 04 00 08 */ stw r0, 8(r4)
/* 8030DA50 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DA54 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030DA58 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DA5C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DA60 38 03 00 01 */ addi r0, r3, 1
/* 8030DA64 90 04 00 08 */ stw r0, 8(r4)
/* 8030DA68 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DA6C 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030DA70 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DA74 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DA78 38 03 00 01 */ addi r0, r3, 1
/* 8030DA7C 90 04 00 08 */ stw r0, 8(r4)
/* 8030DA80 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DA84 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DA88 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DA8C 38 03 00 01 */ addi r0, r3, 1
/* 8030DA90 90 04 00 08 */ stw r0, 8(r4)
/* 8030DA94 98 C3 00 00 */ stb r6, 0(r3)
/* 8030DA98 D0 61 00 08 */ stfs f3, 8(r1)
/* 8030DA9C 80 C1 00 08 */ lwz r6, 8(r1)
/* 8030DAA0 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030DAA4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DAA8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DAAC 38 03 00 01 */ addi r0, r3, 1
/* 8030DAB0 90 04 00 08 */ stw r0, 8(r4)
/* 8030DAB4 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DAB8 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030DABC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DAC0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DAC4 38 03 00 01 */ addi r0, r3, 1
/* 8030DAC8 90 04 00 08 */ stw r0, 8(r4)
/* 8030DACC 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DAD0 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030DAD4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DAD8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DADC 38 03 00 01 */ addi r0, r3, 1
/* 8030DAE0 90 04 00 08 */ stw r0, 8(r4)
/* 8030DAE4 98 A3 00 00 */ stb r5, 0(r3)
/* 8030DAE8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030DAEC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030DAF0 38 03 00 01 */ addi r0, r3, 1
/* 8030DAF4 90 04 00 08 */ stw r0, 8(r4)
/* 8030DAF8 98 C3 00 00 */ stb r6, 0(r3)
/* 8030DAFC 38 21 00 20 */ addi r1, r1, 0x20
/* 8030DB00 4E 80 00 20 */ blr
@@ -1,117 +0,0 @@
lbl_8030D76C:
/* 8030D76C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8030D770 7C 60 00 34 */ cntlzw r0, r3
/* 8030D774 20 00 00 1F */ subfic r0, r0, 0x1f
/* 8030D778 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 8030D77C 28 00 00 07 */ cmplwi r0, 7
/* 8030D780 40 81 00 08 */ ble lbl_8030D788
/* 8030D784 38 00 00 00 */ li r0, 0
lbl_8030D788:
/* 8030D788 54 03 24 36 */ rlwinm r3, r0, 4, 0x10, 0x1b
/* 8030D78C 38 C3 06 0A */ addi r6, r3, 0x60a
/* 8030D790 38 A0 00 10 */ li r5, 0x10
/* 8030D794 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D798 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D79C 38 03 00 01 */ addi r0, r3, 1
/* 8030D7A0 90 04 00 08 */ stw r0, 8(r4)
/* 8030D7A4 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D7A8 38 A0 00 00 */ li r5, 0
/* 8030D7AC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D7B0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D7B4 38 03 00 01 */ addi r0, r3, 1
/* 8030D7B8 90 04 00 08 */ stw r0, 8(r4)
/* 8030D7BC 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D7C0 38 A0 00 02 */ li r5, 2
/* 8030D7C4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D7C8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D7CC 38 03 00 01 */ addi r0, r3, 1
/* 8030D7D0 90 04 00 08 */ stw r0, 8(r4)
/* 8030D7D4 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D7D8 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D7DC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D7E0 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D7E4 38 03 00 01 */ addi r0, r3, 1
/* 8030D7E8 90 04 00 08 */ stw r0, 8(r4)
/* 8030D7EC 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D7F0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D7F4 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D7F8 38 03 00 01 */ addi r0, r3, 1
/* 8030D7FC 90 04 00 08 */ stw r0, 8(r4)
/* 8030D800 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D804 D0 21 00 10 */ stfs f1, 0x10(r1)
/* 8030D808 80 C1 00 10 */ lwz r6, 0x10(r1)
/* 8030D80C 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D810 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D814 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D818 38 03 00 01 */ addi r0, r3, 1
/* 8030D81C 90 04 00 08 */ stw r0, 8(r4)
/* 8030D820 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D824 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D828 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D82C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D830 38 03 00 01 */ addi r0, r3, 1
/* 8030D834 90 04 00 08 */ stw r0, 8(r4)
/* 8030D838 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D83C 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D840 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D844 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D848 38 03 00 01 */ addi r0, r3, 1
/* 8030D84C 90 04 00 08 */ stw r0, 8(r4)
/* 8030D850 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D854 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D858 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D85C 38 03 00 01 */ addi r0, r3, 1
/* 8030D860 90 04 00 08 */ stw r0, 8(r4)
/* 8030D864 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D868 D0 41 00 0C */ stfs f2, 0xc(r1)
/* 8030D86C 80 C1 00 0C */ lwz r6, 0xc(r1)
/* 8030D870 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D874 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D878 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D87C 38 03 00 01 */ addi r0, r3, 1
/* 8030D880 90 04 00 08 */ stw r0, 8(r4)
/* 8030D884 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D888 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D88C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D890 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D894 38 03 00 01 */ addi r0, r3, 1
/* 8030D898 90 04 00 08 */ stw r0, 8(r4)
/* 8030D89C 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D8A0 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D8A4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D8A8 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D8AC 38 03 00 01 */ addi r0, r3, 1
/* 8030D8B0 90 04 00 08 */ stw r0, 8(r4)
/* 8030D8B4 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D8B8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D8BC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D8C0 38 03 00 01 */ addi r0, r3, 1
/* 8030D8C4 90 04 00 08 */ stw r0, 8(r4)
/* 8030D8C8 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D8CC D0 61 00 08 */ stfs f3, 8(r1)
/* 8030D8D0 80 C1 00 08 */ lwz r6, 8(r1)
/* 8030D8D4 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8030D8D8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D8DC 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D8E0 38 03 00 01 */ addi r0, r3, 1
/* 8030D8E4 90 04 00 08 */ stw r0, 8(r4)
/* 8030D8E8 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D8EC 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8030D8F0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D8F4 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D8F8 38 03 00 01 */ addi r0, r3, 1
/* 8030D8FC 90 04 00 08 */ stw r0, 8(r4)
/* 8030D900 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D904 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8030D908 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D90C 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D910 38 03 00 01 */ addi r0, r3, 1
/* 8030D914 90 04 00 08 */ stw r0, 8(r4)
/* 8030D918 98 A3 00 00 */ stb r5, 0(r3)
/* 8030D91C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8030D920 80 64 00 08 */ lwz r3, 8(r4)
/* 8030D924 38 03 00 01 */ addi r0, r3, 1
/* 8030D928 90 04 00 08 */ stw r0, 8(r4)
/* 8030D92C 98 C3 00 00 */ stb r6, 0(r3)
/* 8030D930 38 21 00 20 */ addi r1, r1, 0x20
/* 8030D934 4E 80 00 20 */ blr
@@ -1,97 +0,0 @@
lbl_8031A1DC:
/* 8031A1DC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A1E0 7C 08 02 A6 */ mflr r0
/* 8031A1E4 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A1E8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8031A1EC 7C 7F 1B 78 */ mr r31, r3
/* 8031A1F0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A1F4 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A1F8 80 0D 83 E4 */ lwz r0, SizeOfLoadAmbColors(r13)
/* 8031A1FC 7C 63 02 14 */ add r3, r3, r0
/* 8031A200 80 04 00 0C */ lwz r0, 0xc(r4)
/* 8031A204 7C 03 00 40 */ cmplw r3, r0
/* 8031A208 40 81 00 08 */ ble lbl_8031A210
/* 8031A20C 48 04 6E C9 */ bl GDOverflowed
lbl_8031A210:
/* 8031A210 38 C0 00 10 */ li r6, 0x10
/* 8031A214 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A218 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A21C 38 03 00 01 */ addi r0, r3, 1
/* 8031A220 90 04 00 08 */ stw r0, 8(r4)
/* 8031A224 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A228 38 A0 00 00 */ li r5, 0
/* 8031A22C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A230 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A234 38 03 00 01 */ addi r0, r3, 1
/* 8031A238 90 04 00 08 */ stw r0, 8(r4)
/* 8031A23C 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A240 38 A0 00 01 */ li r5, 1
/* 8031A244 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A248 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A24C 38 03 00 01 */ addi r0, r3, 1
/* 8031A250 90 04 00 08 */ stw r0, 8(r4)
/* 8031A254 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A258 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A25C 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A260 38 03 00 01 */ addi r0, r3, 1
/* 8031A264 90 04 00 08 */ stw r0, 8(r4)
/* 8031A268 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A26C 38 A0 00 0A */ li r5, 0xa
/* 8031A270 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A274 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A278 38 03 00 01 */ addi r0, r3, 1
/* 8031A27C 90 04 00 08 */ stw r0, 8(r4)
/* 8031A280 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A284 80 DF 00 0C */ lwz r6, 0xc(r31)
/* 8031A288 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8031A28C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A290 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A294 38 03 00 01 */ addi r0, r3, 1
/* 8031A298 90 04 00 08 */ stw r0, 8(r4)
/* 8031A29C 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A2A0 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8031A2A4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A2A8 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A2AC 38 03 00 01 */ addi r0, r3, 1
/* 8031A2B0 90 04 00 08 */ stw r0, 8(r4)
/* 8031A2B4 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A2B8 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8031A2BC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A2C0 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A2C4 38 03 00 01 */ addi r0, r3, 1
/* 8031A2C8 90 04 00 08 */ stw r0, 8(r4)
/* 8031A2CC 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A2D0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A2D4 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A2D8 38 03 00 01 */ addi r0, r3, 1
/* 8031A2DC 90 04 00 08 */ stw r0, 8(r4)
/* 8031A2E0 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A2E4 80 DF 00 10 */ lwz r6, 0x10(r31)
/* 8031A2E8 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8031A2EC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A2F0 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A2F4 38 03 00 01 */ addi r0, r3, 1
/* 8031A2F8 90 04 00 08 */ stw r0, 8(r4)
/* 8031A2FC 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A300 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8031A304 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A308 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A30C 38 03 00 01 */ addi r0, r3, 1
/* 8031A310 90 04 00 08 */ stw r0, 8(r4)
/* 8031A314 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A318 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8031A31C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A320 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A324 38 03 00 01 */ addi r0, r3, 1
/* 8031A328 90 04 00 08 */ stw r0, 8(r4)
/* 8031A32C 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A330 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A334 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A338 38 03 00 01 */ addi r0, r3, 1
/* 8031A33C 90 04 00 08 */ stw r0, 8(r4)
/* 8031A340 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A344 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8031A348 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031A34C 7C 08 03 A6 */ mtlr r0
/* 8031A350 38 21 00 10 */ addi r1, r1, 0x10
/* 8031A354 4E 80 00 20 */ blr
@@ -1,97 +0,0 @@
lbl_8031A358:
/* 8031A358 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A35C 7C 08 02 A6 */ mflr r0
/* 8031A360 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A364 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8031A368 7C 7F 1B 78 */ mr r31, r3
/* 8031A36C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A370 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A374 80 0D 83 E0 */ lwz r0, SizeOfLoadMatColors(r13)
/* 8031A378 7C 63 02 14 */ add r3, r3, r0
/* 8031A37C 80 04 00 0C */ lwz r0, 0xc(r4)
/* 8031A380 7C 03 00 40 */ cmplw r3, r0
/* 8031A384 40 81 00 08 */ ble lbl_8031A38C
/* 8031A388 48 04 6D 4D */ bl GDOverflowed
lbl_8031A38C:
/* 8031A38C 38 C0 00 10 */ li r6, 0x10
/* 8031A390 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A394 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A398 38 03 00 01 */ addi r0, r3, 1
/* 8031A39C 90 04 00 08 */ stw r0, 8(r4)
/* 8031A3A0 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A3A4 38 A0 00 00 */ li r5, 0
/* 8031A3A8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A3AC 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A3B0 38 03 00 01 */ addi r0, r3, 1
/* 8031A3B4 90 04 00 08 */ stw r0, 8(r4)
/* 8031A3B8 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A3BC 38 A0 00 01 */ li r5, 1
/* 8031A3C0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A3C4 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A3C8 38 03 00 01 */ addi r0, r3, 1
/* 8031A3CC 90 04 00 08 */ stw r0, 8(r4)
/* 8031A3D0 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A3D4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A3D8 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A3DC 38 03 00 01 */ addi r0, r3, 1
/* 8031A3E0 90 04 00 08 */ stw r0, 8(r4)
/* 8031A3E4 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A3E8 38 A0 00 0C */ li r5, 0xc
/* 8031A3EC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A3F0 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A3F4 38 03 00 01 */ addi r0, r3, 1
/* 8031A3F8 90 04 00 08 */ stw r0, 8(r4)
/* 8031A3FC 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A400 80 DF 00 04 */ lwz r6, 4(r31)
/* 8031A404 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8031A408 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A40C 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A410 38 03 00 01 */ addi r0, r3, 1
/* 8031A414 90 04 00 08 */ stw r0, 8(r4)
/* 8031A418 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A41C 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8031A420 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A424 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A428 38 03 00 01 */ addi r0, r3, 1
/* 8031A42C 90 04 00 08 */ stw r0, 8(r4)
/* 8031A430 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A434 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8031A438 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A43C 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A440 38 03 00 01 */ addi r0, r3, 1
/* 8031A444 90 04 00 08 */ stw r0, 8(r4)
/* 8031A448 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A44C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A450 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A454 38 03 00 01 */ addi r0, r3, 1
/* 8031A458 90 04 00 08 */ stw r0, 8(r4)
/* 8031A45C 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A460 80 DF 00 08 */ lwz r6, 8(r31)
/* 8031A464 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8031A468 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A46C 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A470 38 03 00 01 */ addi r0, r3, 1
/* 8031A474 90 04 00 08 */ stw r0, 8(r4)
/* 8031A478 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A47C 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 8031A480 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A484 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A488 38 03 00 01 */ addi r0, r3, 1
/* 8031A48C 90 04 00 08 */ stw r0, 8(r4)
/* 8031A490 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A494 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8031A498 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A49C 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A4A0 38 03 00 01 */ addi r0, r3, 1
/* 8031A4A4 90 04 00 08 */ stw r0, 8(r4)
/* 8031A4A8 98 A3 00 00 */ stb r5, 0(r3)
/* 8031A4AC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A4B0 80 64 00 08 */ lwz r3, 8(r4)
/* 8031A4B4 38 03 00 01 */ addi r0, r3, 1
/* 8031A4B8 90 04 00 08 */ stw r0, 8(r4)
/* 8031A4BC 98 C3 00 00 */ stb r6, 0(r3)
/* 8031A4C0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8031A4C4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031A4C8 7C 08 03 A6 */ mtlr r0
/* 8031A4CC 38 21 00 10 */ addi r1, r1, 0x10
/* 8031A4D0 4E 80 00 20 */ blr
@@ -1,97 +0,0 @@
lbl_80319BB4:
/* 80319BB4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80319BB8 7C 08 02 A6 */ mflr r0
/* 80319BBC 90 01 00 14 */ stw r0, 0x14(r1)
/* 80319BC0 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80319BC4 7C 7F 1B 78 */ mr r31, r3
/* 80319BC8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319BCC 80 64 00 08 */ lwz r3, 8(r4)
/* 80319BD0 80 0D 83 E0 */ lwz r0, SizeOfLoadMatColors(r13)
/* 80319BD4 7C 63 02 14 */ add r3, r3, r0
/* 80319BD8 80 04 00 0C */ lwz r0, 0xc(r4)
/* 80319BDC 7C 03 00 40 */ cmplw r3, r0
/* 80319BE0 40 81 00 08 */ ble lbl_80319BE8
/* 80319BE4 48 04 74 F1 */ bl GDOverflowed
lbl_80319BE8:
/* 80319BE8 38 C0 00 10 */ li r6, 0x10
/* 80319BEC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319BF0 80 64 00 08 */ lwz r3, 8(r4)
/* 80319BF4 38 03 00 01 */ addi r0, r3, 1
/* 80319BF8 90 04 00 08 */ stw r0, 8(r4)
/* 80319BFC 98 C3 00 00 */ stb r6, 0(r3)
/* 80319C00 38 A0 00 00 */ li r5, 0
/* 80319C04 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319C08 80 64 00 08 */ lwz r3, 8(r4)
/* 80319C0C 38 03 00 01 */ addi r0, r3, 1
/* 80319C10 90 04 00 08 */ stw r0, 8(r4)
/* 80319C14 98 A3 00 00 */ stb r5, 0(r3)
/* 80319C18 38 A0 00 01 */ li r5, 1
/* 80319C1C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319C20 80 64 00 08 */ lwz r3, 8(r4)
/* 80319C24 38 03 00 01 */ addi r0, r3, 1
/* 80319C28 90 04 00 08 */ stw r0, 8(r4)
/* 80319C2C 98 A3 00 00 */ stb r5, 0(r3)
/* 80319C30 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319C34 80 64 00 08 */ lwz r3, 8(r4)
/* 80319C38 38 03 00 01 */ addi r0, r3, 1
/* 80319C3C 90 04 00 08 */ stw r0, 8(r4)
/* 80319C40 98 C3 00 00 */ stb r6, 0(r3)
/* 80319C44 38 A0 00 0C */ li r5, 0xc
/* 80319C48 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319C4C 80 64 00 08 */ lwz r3, 8(r4)
/* 80319C50 38 03 00 01 */ addi r0, r3, 1
/* 80319C54 90 04 00 08 */ stw r0, 8(r4)
/* 80319C58 98 A3 00 00 */ stb r5, 0(r3)
/* 80319C5C 80 DF 00 04 */ lwz r6, 4(r31)
/* 80319C60 54 C5 46 3E */ srwi r5, r6, 0x18
/* 80319C64 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319C68 80 64 00 08 */ lwz r3, 8(r4)
/* 80319C6C 38 03 00 01 */ addi r0, r3, 1
/* 80319C70 90 04 00 08 */ stw r0, 8(r4)
/* 80319C74 98 A3 00 00 */ stb r5, 0(r3)
/* 80319C78 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 80319C7C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319C80 80 64 00 08 */ lwz r3, 8(r4)
/* 80319C84 38 03 00 01 */ addi r0, r3, 1
/* 80319C88 90 04 00 08 */ stw r0, 8(r4)
/* 80319C8C 98 A3 00 00 */ stb r5, 0(r3)
/* 80319C90 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 80319C94 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319C98 80 64 00 08 */ lwz r3, 8(r4)
/* 80319C9C 38 03 00 01 */ addi r0, r3, 1
/* 80319CA0 90 04 00 08 */ stw r0, 8(r4)
/* 80319CA4 98 A3 00 00 */ stb r5, 0(r3)
/* 80319CA8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319CAC 80 64 00 08 */ lwz r3, 8(r4)
/* 80319CB0 38 03 00 01 */ addi r0, r3, 1
/* 80319CB4 90 04 00 08 */ stw r0, 8(r4)
/* 80319CB8 98 C3 00 00 */ stb r6, 0(r3)
/* 80319CBC 80 DF 00 08 */ lwz r6, 8(r31)
/* 80319CC0 54 C5 46 3E */ srwi r5, r6, 0x18
/* 80319CC4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319CC8 80 64 00 08 */ lwz r3, 8(r4)
/* 80319CCC 38 03 00 01 */ addi r0, r3, 1
/* 80319CD0 90 04 00 08 */ stw r0, 8(r4)
/* 80319CD4 98 A3 00 00 */ stb r5, 0(r3)
/* 80319CD8 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 80319CDC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319CE0 80 64 00 08 */ lwz r3, 8(r4)
/* 80319CE4 38 03 00 01 */ addi r0, r3, 1
/* 80319CE8 90 04 00 08 */ stw r0, 8(r4)
/* 80319CEC 98 A3 00 00 */ stb r5, 0(r3)
/* 80319CF0 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 80319CF4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319CF8 80 64 00 08 */ lwz r3, 8(r4)
/* 80319CFC 38 03 00 01 */ addi r0, r3, 1
/* 80319D00 90 04 00 08 */ stw r0, 8(r4)
/* 80319D04 98 A3 00 00 */ stb r5, 0(r3)
/* 80319D08 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319D0C 80 64 00 08 */ lwz r3, 8(r4)
/* 80319D10 38 03 00 01 */ addi r0, r3, 1
/* 80319D14 90 04 00 08 */ stw r0, 8(r4)
/* 80319D18 98 C3 00 00 */ stb r6, 0(r3)
/* 80319D1C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80319D20 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80319D24 7C 08 03 A6 */ mtlr r0
/* 80319D28 38 21 00 10 */ addi r1, r1, 0x10
/* 80319D2C 4E 80 00 20 */ blr
@@ -1,45 +0,0 @@
lbl_8031A13C:
/* 8031A13C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A140 7C 08 02 A6 */ mflr r0
/* 8031A144 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A148 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8031A14C 93 C1 00 08 */ stw r30, 8(r1)
/* 8031A150 7C 7E 1B 78 */ mr r30, r3
/* 8031A154 7C 9F 23 78 */ mr r31, r4
/* 8031A158 54 80 07 7B */ rlwinm. r0, r4, 0, 0x1d, 0x1d
/* 8031A15C 41 82 00 14 */ beq lbl_8031A170
/* 8031A160 81 83 00 00 */ lwz r12, 0(r3)
/* 8031A164 81 8C 00 20 */ lwz r12, 0x20(r12)
/* 8031A168 7D 89 03 A6 */ mtctr r12
/* 8031A16C 4E 80 04 21 */ bctrl
lbl_8031A170:
/* 8031A170 57 E0 07 FF */ clrlwi. r0, r31, 0x1f
/* 8031A174 41 82 00 18 */ beq lbl_8031A18C
/* 8031A178 7F C3 F3 78 */ mr r3, r30
/* 8031A17C 81 9E 00 00 */ lwz r12, 0(r30)
/* 8031A180 81 8C 00 24 */ lwz r12, 0x24(r12)
/* 8031A184 7D 89 03 A6 */ mtctr r12
/* 8031A188 4E 80 04 21 */ bctrl
lbl_8031A18C:
/* 8031A18C 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e
/* 8031A190 41 82 00 18 */ beq lbl_8031A1A8
/* 8031A194 7F C3 F3 78 */ mr r3, r30
/* 8031A198 81 9E 00 00 */ lwz r12, 0(r30)
/* 8031A19C 81 8C 00 28 */ lwz r12, 0x28(r12)
/* 8031A1A0 7D 89 03 A6 */ mtctr r12
/* 8031A1A4 4E 80 04 21 */ bctrl
lbl_8031A1A8:
/* 8031A1A8 57 E4 E7 3F */ rlwinm. r4, r31, 0x1c, 0x1c, 0x1f
/* 8031A1AC 41 82 00 18 */ beq lbl_8031A1C4
/* 8031A1B0 7F C3 F3 78 */ mr r3, r30
/* 8031A1B4 81 9E 00 00 */ lwz r12, 0(r30)
/* 8031A1B8 81 8C 00 2C */ lwz r12, 0x2c(r12)
/* 8031A1BC 7D 89 03 A6 */ mtctr r12
/* 8031A1C0 4E 80 04 21 */ bctrl
lbl_8031A1C4:
/* 8031A1C4 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8031A1C8 83 C1 00 08 */ lwz r30, 8(r1)
/* 8031A1CC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031A1D0 7C 08 03 A6 */ mtlr r0
/* 8031A1D4 38 21 00 10 */ addi r1, r1, 0x10
/* 8031A1D8 4E 80 00 20 */ blr
@@ -1,29 +0,0 @@
lbl_80319B4C:
/* 80319B4C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80319B50 7C 08 02 A6 */ mflr r0
/* 80319B54 90 01 00 14 */ stw r0, 0x14(r1)
/* 80319B58 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80319B5C 93 C1 00 08 */ stw r30, 8(r1)
/* 80319B60 7C 7E 1B 78 */ mr r30, r3
/* 80319B64 7C 9F 23 78 */ mr r31, r4
/* 80319B68 54 80 07 FF */ clrlwi. r0, r4, 0x1f
/* 80319B6C 41 82 00 14 */ beq lbl_80319B80
/* 80319B70 81 83 00 00 */ lwz r12, 0(r3)
/* 80319B74 81 8C 00 24 */ lwz r12, 0x24(r12)
/* 80319B78 7D 89 03 A6 */ mtctr r12
/* 80319B7C 4E 80 04 21 */ bctrl
lbl_80319B80:
/* 80319B80 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e
/* 80319B84 41 82 00 18 */ beq lbl_80319B9C
/* 80319B88 7F C3 F3 78 */ mr r3, r30
/* 80319B8C 81 9E 00 00 */ lwz r12, 0(r30)
/* 80319B90 81 8C 00 28 */ lwz r12, 0x28(r12)
/* 80319B94 7D 89 03 A6 */ mtctr r12
/* 80319B98 4E 80 04 21 */ bctrl
lbl_80319B9C:
/* 80319B9C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80319BA0 83 C1 00 08 */ lwz r30, 8(r1)
/* 80319BA4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80319BA8 7C 08 03 A6 */ mtlr r0
/* 80319BAC 38 21 00 10 */ addi r1, r1, 0x10
/* 80319BB0 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_803177E8:
/* 803177E8 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FFFF@ha */
/* 803177EC 38 04 FF FF */ addi r0, r4, 0xFFFF /* 0x0000FFFF@l */
/* 803177F0 B0 03 00 08 */ sth r0, 8(r3)
/* 803177F4 38 00 00 C0 */ li r0, 0xc0
/* 803177F8 98 03 00 0E */ stb r0, 0xe(r3)
/* 803177FC 38 00 00 C1 */ li r0, 0xc1
/* 80317800 98 03 00 12 */ stb r0, 0x12(r3)
/* 80317804 38 00 00 00 */ li r0, 0
/* 80317808 90 03 00 04 */ stw r0, 4(r3)
/* 8031780C 4E 80 00 20 */ blr
@@ -1,12 +0,0 @@
lbl_80317B58:
/* 80317B58 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FFFF@ha */
/* 80317B5C 38 04 FF FF */ addi r0, r4, 0xFFFF /* 0x0000FFFF@l */
/* 80317B60 B0 03 00 30 */ sth r0, 0x30(r3)
/* 80317B64 B0 03 00 38 */ sth r0, 0x38(r3)
/* 80317B68 38 00 00 FF */ li r0, 0xff
/* 80317B6C 98 03 00 3A */ stb r0, 0x3a(r3)
/* 80317B70 38 00 00 01 */ li r0, 1
/* 80317B74 98 03 00 3B */ stb r0, 0x3b(r3)
/* 80317B78 38 00 00 00 */ li r0, 0
/* 80317B7C 90 03 00 3C */ stw r0, 0x3c(r3)
/* 80317B80 4E 80 00 20 */ blr
@@ -1,4 +0,0 @@
lbl_80317B28:
/* 80317B28 38 00 00 00 */ li r0, 0
/* 80317B2C 98 03 00 04 */ stb r0, 4(r3)
/* 80317B30 4E 80 00 20 */ blr
@@ -1,4 +0,0 @@
lbl_803176D4:
/* 803176D4 38 00 00 00 */ li r0, 0
/* 803176D8 90 03 00 04 */ stw r0, 4(r3)
/* 803176DC 4E 80 00 20 */ blr
@@ -1,14 +0,0 @@
lbl_80317674:
/* 80317674 38 A0 00 00 */ li r5, 0
/* 80317678 90 A3 00 04 */ stw r5, 4(r3)
/* 8031767C 7C A4 2B 78 */ mr r4, r5
/* 80317680 38 00 00 04 */ li r0, 4
/* 80317684 7C 09 03 A6 */ mtctr r0
lbl_80317688:
/* 80317688 38 04 00 38 */ addi r0, r4, 0x38
/* 8031768C 7C A3 01 2E */ stwx r5, r3, r0
/* 80317690 38 84 00 04 */ addi r4, r4, 4
/* 80317694 42 00 FF F4 */ bdnz lbl_80317688
/* 80317698 38 00 00 00 */ li r0, 0
/* 8031769C 90 03 00 58 */ stw r0, 0x58(r3)
/* 803176A0 4E 80 00 20 */ blr
@@ -1,10 +0,0 @@
lbl_80317B34:
/* 80317B34 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FFFF@ha */
/* 80317B38 38 04 FF FF */ addi r0, r4, 0xFFFF /* 0x0000FFFF@l */
/* 80317B3C B0 03 00 04 */ sth r0, 4(r3)
/* 80317B40 B0 03 00 0C */ sth r0, 0xc(r3)
/* 80317B44 38 00 00 FF */ li r0, 0xff
/* 80317B48 98 03 00 0E */ stb r0, 0xe(r3)
/* 80317B4C 38 00 00 01 */ li r0, 1
/* 80317B50 98 03 00 0F */ stb r0, 0xf(r3)
/* 80317B54 4E 80 00 20 */ blr
@@ -1,14 +0,0 @@
lbl_803176A4:
/* 803176A4 38 A0 00 00 */ li r5, 0
/* 803176A8 90 A3 00 04 */ stw r5, 4(r3)
/* 803176AC 7C A4 2B 78 */ mr r4, r5
/* 803176B0 38 00 00 08 */ li r0, 8
/* 803176B4 7C 09 03 A6 */ mtctr r0
lbl_803176B8:
/* 803176B8 38 04 00 38 */ addi r0, r4, 0x38
/* 803176BC 7C A3 01 2E */ stwx r5, r3, r0
/* 803176C0 38 84 00 04 */ addi r4, r4, 4
/* 803176C4 42 00 FF F4 */ bdnz lbl_803176B8
/* 803176C8 38 00 00 00 */ li r0, 0
/* 803176CC 90 03 00 58 */ stw r0, 0x58(r3)
/* 803176D0 4E 80 00 20 */ blr
@@ -1,14 +0,0 @@
lbl_80317644:
/* 80317644 38 A0 00 00 */ li r5, 0
/* 80317648 90 A3 00 04 */ stw r5, 4(r3)
/* 8031764C 7C A4 2B 78 */ mr r4, r5
/* 80317650 38 00 00 08 */ li r0, 8
/* 80317654 7C 09 03 A6 */ mtctr r0
lbl_80317658:
/* 80317658 38 04 00 38 */ addi r0, r4, 0x38
/* 8031765C 7C A3 01 2E */ stwx r5, r3, r0
/* 80317660 38 84 00 04 */ addi r4, r4, 4
/* 80317664 42 00 FF F4 */ bdnz lbl_80317658
/* 80317668 38 00 00 00 */ li r0, 0
/* 8031766C 90 03 00 58 */ stw r0, 0x58(r3)
/* 80317670 4E 80 00 20 */ blr
@@ -1,44 +0,0 @@
lbl_8031A948:
/* 8031A948 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031A94C 7C 08 02 A6 */ mflr r0
/* 8031A950 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031A954 39 61 00 20 */ addi r11, r1, 0x20
/* 8031A958 48 04 78 81 */ bl _savegpr_28
/* 8031A95C 7C 7C 1B 78 */ mr r28, r3
/* 8031A960 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031A964 80 64 00 00 */ lwz r3, 0(r4)
/* 8031A968 80 04 00 08 */ lwz r0, 8(r4)
/* 8031A96C 7C 03 00 50 */ subf r0, r3, r0
/* 8031A970 90 1C 00 58 */ stw r0, 0x58(r28)
/* 8031A974 3B A0 00 00 */ li r29, 0
/* 8031A978 3B E0 00 00 */ li r31, 0
/* 8031A97C 3B C0 00 00 */ li r30, 0
lbl_8031A980:
/* 8031A980 38 1E 00 38 */ addi r0, r30, 0x38
/* 8031A984 7C 7C 00 2E */ lwzx r3, r28, r0
/* 8031A988 28 03 00 00 */ cmplwi r3, 0
/* 8031A98C 41 82 00 1C */ beq lbl_8031A9A8
/* 8031A990 38 1F 00 0A */ addi r0, r31, 0xa
/* 8031A994 7C 1C 00 AE */ lbzx r0, r28, r0
/* 8031A998 28 00 00 3C */ cmplwi r0, 0x3c
/* 8031A99C 41 82 00 0C */ beq lbl_8031A9A8
/* 8031A9A0 7F A4 EB 78 */ mr r4, r29
/* 8031A9A4 48 00 8F 21 */ bl load__9J3DTexMtxCFUl
lbl_8031A9A8:
/* 8031A9A8 3B BD 00 01 */ addi r29, r29, 1
/* 8031A9AC 28 1D 00 04 */ cmplwi r29, 4
/* 8031A9B0 3B FF 00 06 */ addi r31, r31, 6
/* 8031A9B4 3B DE 00 04 */ addi r30, r30, 4
/* 8031A9B8 41 80 FF C8 */ blt lbl_8031A980
/* 8031A9BC 80 7C 00 04 */ lwz r3, 4(r28)
/* 8031A9C0 28 03 00 00 */ cmplwi r3, 0
/* 8031A9C4 41 82 00 0C */ beq lbl_8031A9D0
/* 8031A9C8 38 9C 00 08 */ addi r4, r28, 8
/* 8031A9CC 48 00 8C 79 */ bl loadTexCoordGens__FUlP11J3DTexCoord
lbl_8031A9D0:
/* 8031A9D0 39 61 00 20 */ addi r11, r1, 0x20
/* 8031A9D4 48 04 78 51 */ bl _restgpr_28
/* 8031A9D8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031A9DC 7C 08 03 A6 */ mtlr r0
/* 8031A9E0 38 21 00 20 */ addi r1, r1, 0x20
/* 8031A9E4 4E 80 00 20 */ blr
@@ -1,44 +0,0 @@
lbl_8031A9E8:
/* 8031A9E8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031A9EC 7C 08 02 A6 */ mflr r0
/* 8031A9F0 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031A9F4 39 61 00 20 */ addi r11, r1, 0x20
/* 8031A9F8 48 04 77 E1 */ bl _savegpr_28
/* 8031A9FC 7C 7C 1B 78 */ mr r28, r3
/* 8031AA00 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031AA04 80 64 00 00 */ lwz r3, 0(r4)
/* 8031AA08 80 04 00 08 */ lwz r0, 8(r4)
/* 8031AA0C 7C 03 00 50 */ subf r0, r3, r0
/* 8031AA10 90 1C 00 58 */ stw r0, 0x58(r28)
/* 8031AA14 3B A0 00 00 */ li r29, 0
/* 8031AA18 3B E0 00 00 */ li r31, 0
/* 8031AA1C 3B C0 00 00 */ li r30, 0
lbl_8031AA20:
/* 8031AA20 38 1E 00 38 */ addi r0, r30, 0x38
/* 8031AA24 7C 7C 00 2E */ lwzx r3, r28, r0
/* 8031AA28 28 03 00 00 */ cmplwi r3, 0
/* 8031AA2C 41 82 00 1C */ beq lbl_8031AA48
/* 8031AA30 38 1F 00 0A */ addi r0, r31, 0xa
/* 8031AA34 7C 1C 00 AE */ lbzx r0, r28, r0
/* 8031AA38 28 00 00 3C */ cmplwi r0, 0x3c
/* 8031AA3C 41 82 00 0C */ beq lbl_8031AA48
/* 8031AA40 7F A4 EB 78 */ mr r4, r29
/* 8031AA44 48 00 8E 81 */ bl load__9J3DTexMtxCFUl
lbl_8031AA48:
/* 8031AA48 3B BD 00 01 */ addi r29, r29, 1
/* 8031AA4C 28 1D 00 08 */ cmplwi r29, 8
/* 8031AA50 3B FF 00 06 */ addi r31, r31, 6
/* 8031AA54 3B DE 00 04 */ addi r30, r30, 4
/* 8031AA58 41 80 FF C8 */ blt lbl_8031AA20
/* 8031AA5C 80 7C 00 04 */ lwz r3, 4(r28)
/* 8031AA60 28 03 00 00 */ cmplwi r3, 0
/* 8031AA64 41 82 00 0C */ beq lbl_8031AA70
/* 8031AA68 38 9C 00 08 */ addi r4, r28, 8
/* 8031AA6C 48 00 8B D9 */ bl loadTexCoordGens__FUlP11J3DTexCoord
lbl_8031AA70:
/* 8031AA70 39 61 00 20 */ addi r11, r1, 0x20
/* 8031AA74 48 04 77 B1 */ bl _restgpr_28
/* 8031AA78 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031AA7C 7C 08 03 A6 */ mtlr r0
/* 8031AA80 38 21 00 20 */ addi r1, r1, 0x20
/* 8031AA84 4E 80 00 20 */ blr
@@ -1,109 +0,0 @@
lbl_80319534:
/* 80319534 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80319538 7C 08 02 A6 */ mflr r0
/* 8031953C 90 01 00 14 */ stw r0, 0x14(r1)
/* 80319540 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80319544 93 C1 00 08 */ stw r30, 8(r1)
/* 80319548 7C 7E 1B 78 */ mr r30, r3
/* 8031954C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319550 80 64 00 00 */ lwz r3, 0(r4)
/* 80319554 80 1E 00 44 */ lwz r0, 0x44(r30)
/* 80319558 7C 03 02 14 */ add r0, r3, r0
/* 8031955C 90 04 00 08 */ stw r0, 8(r4)
/* 80319560 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319564 83 E4 00 08 */ lwz r31, 8(r4)
/* 80319568 80 0D 83 E0 */ lwz r0, SizeOfLoadMatColors(r13)
/* 8031956C 7C 7F 02 14 */ add r3, r31, r0
/* 80319570 80 04 00 0C */ lwz r0, 0xc(r4)
/* 80319574 7C 03 00 40 */ cmplw r3, r0
/* 80319578 40 81 00 08 */ ble lbl_80319580
/* 8031957C 48 04 7B 59 */ bl GDOverflowed
lbl_80319580:
/* 80319580 38 C0 00 10 */ li r6, 0x10
/* 80319584 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319588 80 64 00 08 */ lwz r3, 8(r4)
/* 8031958C 38 03 00 01 */ addi r0, r3, 1
/* 80319590 90 04 00 08 */ stw r0, 8(r4)
/* 80319594 98 C3 00 00 */ stb r6, 0(r3)
/* 80319598 38 A0 00 00 */ li r5, 0
/* 8031959C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 803195A0 80 64 00 08 */ lwz r3, 8(r4)
/* 803195A4 38 03 00 01 */ addi r0, r3, 1
/* 803195A8 90 04 00 08 */ stw r0, 8(r4)
/* 803195AC 98 A3 00 00 */ stb r5, 0(r3)
/* 803195B0 38 A0 00 01 */ li r5, 1
/* 803195B4 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 803195B8 80 64 00 08 */ lwz r3, 8(r4)
/* 803195BC 38 03 00 01 */ addi r0, r3, 1
/* 803195C0 90 04 00 08 */ stw r0, 8(r4)
/* 803195C4 98 A3 00 00 */ stb r5, 0(r3)
/* 803195C8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 803195CC 80 64 00 08 */ lwz r3, 8(r4)
/* 803195D0 38 03 00 01 */ addi r0, r3, 1
/* 803195D4 90 04 00 08 */ stw r0, 8(r4)
/* 803195D8 98 C3 00 00 */ stb r6, 0(r3)
/* 803195DC 38 A0 00 0C */ li r5, 0xc
/* 803195E0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 803195E4 80 64 00 08 */ lwz r3, 8(r4)
/* 803195E8 38 03 00 01 */ addi r0, r3, 1
/* 803195EC 90 04 00 08 */ stw r0, 8(r4)
/* 803195F0 98 A3 00 00 */ stb r5, 0(r3)
/* 803195F4 80 DE 00 04 */ lwz r6, 4(r30)
/* 803195F8 54 C5 46 3E */ srwi r5, r6, 0x18
/* 803195FC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319600 80 64 00 08 */ lwz r3, 8(r4)
/* 80319604 38 03 00 01 */ addi r0, r3, 1
/* 80319608 90 04 00 08 */ stw r0, 8(r4)
/* 8031960C 98 A3 00 00 */ stb r5, 0(r3)
/* 80319610 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 80319614 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319618 80 64 00 08 */ lwz r3, 8(r4)
/* 8031961C 38 03 00 01 */ addi r0, r3, 1
/* 80319620 90 04 00 08 */ stw r0, 8(r4)
/* 80319624 98 A3 00 00 */ stb r5, 0(r3)
/* 80319628 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8031962C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319630 80 64 00 08 */ lwz r3, 8(r4)
/* 80319634 38 03 00 01 */ addi r0, r3, 1
/* 80319638 90 04 00 08 */ stw r0, 8(r4)
/* 8031963C 98 A3 00 00 */ stb r5, 0(r3)
/* 80319640 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319644 80 64 00 08 */ lwz r3, 8(r4)
/* 80319648 38 03 00 01 */ addi r0, r3, 1
/* 8031964C 90 04 00 08 */ stw r0, 8(r4)
/* 80319650 98 C3 00 00 */ stb r6, 0(r3)
/* 80319654 80 DE 00 08 */ lwz r6, 8(r30)
/* 80319658 54 C5 46 3E */ srwi r5, r6, 0x18
/* 8031965C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319660 80 64 00 08 */ lwz r3, 8(r4)
/* 80319664 38 03 00 01 */ addi r0, r3, 1
/* 80319668 90 04 00 08 */ stw r0, 8(r4)
/* 8031966C 98 A3 00 00 */ stb r5, 0(r3)
/* 80319670 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 80319674 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319678 80 64 00 08 */ lwz r3, 8(r4)
/* 8031967C 38 03 00 01 */ addi r0, r3, 1
/* 80319680 90 04 00 08 */ stw r0, 8(r4)
/* 80319684 98 A3 00 00 */ stb r5, 0(r3)
/* 80319688 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 8031968C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319690 80 64 00 08 */ lwz r3, 8(r4)
/* 80319694 38 03 00 01 */ addi r0, r3, 1
/* 80319698 90 04 00 08 */ stw r0, 8(r4)
/* 8031969C 98 A3 00 00 */ stb r5, 0(r3)
/* 803196A0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 803196A4 80 64 00 08 */ lwz r3, 8(r4)
/* 803196A8 38 03 00 01 */ addi r0, r3, 1
/* 803196AC 90 04 00 08 */ stw r0, 8(r4)
/* 803196B0 98 C3 00 00 */ stb r6, 0(r3)
/* 803196B4 80 6D 94 00 */ lwz r3, __GDCurrentDL(r13)
/* 803196B8 80 03 00 08 */ lwz r0, 8(r3)
/* 803196BC 7F E3 FB 78 */ mr r3, r31
/* 803196C0 7C 9F 00 50 */ subf r4, r31, r0
/* 803196C4 48 02 1F 19 */ bl DCStoreRange
/* 803196C8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 803196CC 83 C1 00 08 */ lwz r30, 8(r1)
/* 803196D0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803196D4 7C 08 03 A6 */ mtlr r0
/* 803196D8 38 21 00 10 */ addi r1, r1, 0x10
/* 803196DC 4E 80 00 20 */ blr
@@ -1,109 +0,0 @@
lbl_80318F00:
/* 80318F00 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80318F04 7C 08 02 A6 */ mflr r0
/* 80318F08 90 01 00 14 */ stw r0, 0x14(r1)
/* 80318F0C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80318F10 93 C1 00 08 */ stw r30, 8(r1)
/* 80318F14 7C 7E 1B 78 */ mr r30, r3
/* 80318F18 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318F1C 80 64 00 00 */ lwz r3, 0(r4)
/* 80318F20 80 1E 00 18 */ lwz r0, 0x18(r30)
/* 80318F24 7C 03 02 14 */ add r0, r3, r0
/* 80318F28 90 04 00 08 */ stw r0, 8(r4)
/* 80318F2C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318F30 83 E4 00 08 */ lwz r31, 8(r4)
/* 80318F34 80 0D 83 E0 */ lwz r0, SizeOfLoadMatColors(r13)
/* 80318F38 7C 7F 02 14 */ add r3, r31, r0
/* 80318F3C 80 04 00 0C */ lwz r0, 0xc(r4)
/* 80318F40 7C 03 00 40 */ cmplw r3, r0
/* 80318F44 40 81 00 08 */ ble lbl_80318F4C
/* 80318F48 48 04 81 8D */ bl GDOverflowed
lbl_80318F4C:
/* 80318F4C 38 C0 00 10 */ li r6, 0x10
/* 80318F50 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318F54 80 64 00 08 */ lwz r3, 8(r4)
/* 80318F58 38 03 00 01 */ addi r0, r3, 1
/* 80318F5C 90 04 00 08 */ stw r0, 8(r4)
/* 80318F60 98 C3 00 00 */ stb r6, 0(r3)
/* 80318F64 38 A0 00 00 */ li r5, 0
/* 80318F68 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318F6C 80 64 00 08 */ lwz r3, 8(r4)
/* 80318F70 38 03 00 01 */ addi r0, r3, 1
/* 80318F74 90 04 00 08 */ stw r0, 8(r4)
/* 80318F78 98 A3 00 00 */ stb r5, 0(r3)
/* 80318F7C 38 A0 00 01 */ li r5, 1
/* 80318F80 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318F84 80 64 00 08 */ lwz r3, 8(r4)
/* 80318F88 38 03 00 01 */ addi r0, r3, 1
/* 80318F8C 90 04 00 08 */ stw r0, 8(r4)
/* 80318F90 98 A3 00 00 */ stb r5, 0(r3)
/* 80318F94 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318F98 80 64 00 08 */ lwz r3, 8(r4)
/* 80318F9C 38 03 00 01 */ addi r0, r3, 1
/* 80318FA0 90 04 00 08 */ stw r0, 8(r4)
/* 80318FA4 98 C3 00 00 */ stb r6, 0(r3)
/* 80318FA8 38 A0 00 0C */ li r5, 0xc
/* 80318FAC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318FB0 80 64 00 08 */ lwz r3, 8(r4)
/* 80318FB4 38 03 00 01 */ addi r0, r3, 1
/* 80318FB8 90 04 00 08 */ stw r0, 8(r4)
/* 80318FBC 98 A3 00 00 */ stb r5, 0(r3)
/* 80318FC0 80 DE 00 04 */ lwz r6, 4(r30)
/* 80318FC4 54 C5 46 3E */ srwi r5, r6, 0x18
/* 80318FC8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318FCC 80 64 00 08 */ lwz r3, 8(r4)
/* 80318FD0 38 03 00 01 */ addi r0, r3, 1
/* 80318FD4 90 04 00 08 */ stw r0, 8(r4)
/* 80318FD8 98 A3 00 00 */ stb r5, 0(r3)
/* 80318FDC 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 80318FE0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318FE4 80 64 00 08 */ lwz r3, 8(r4)
/* 80318FE8 38 03 00 01 */ addi r0, r3, 1
/* 80318FEC 90 04 00 08 */ stw r0, 8(r4)
/* 80318FF0 98 A3 00 00 */ stb r5, 0(r3)
/* 80318FF4 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 80318FF8 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80318FFC 80 64 00 08 */ lwz r3, 8(r4)
/* 80319000 38 03 00 01 */ addi r0, r3, 1
/* 80319004 90 04 00 08 */ stw r0, 8(r4)
/* 80319008 98 A3 00 00 */ stb r5, 0(r3)
/* 8031900C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319010 80 64 00 08 */ lwz r3, 8(r4)
/* 80319014 38 03 00 01 */ addi r0, r3, 1
/* 80319018 90 04 00 08 */ stw r0, 8(r4)
/* 8031901C 98 C3 00 00 */ stb r6, 0(r3)
/* 80319020 80 DE 00 08 */ lwz r6, 8(r30)
/* 80319024 54 C5 46 3E */ srwi r5, r6, 0x18
/* 80319028 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031902C 80 64 00 08 */ lwz r3, 8(r4)
/* 80319030 38 03 00 01 */ addi r0, r3, 1
/* 80319034 90 04 00 08 */ stw r0, 8(r4)
/* 80319038 98 A3 00 00 */ stb r5, 0(r3)
/* 8031903C 54 C5 86 3E */ rlwinm r5, r6, 0x10, 0x18, 0x1f
/* 80319040 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319044 80 64 00 08 */ lwz r3, 8(r4)
/* 80319048 38 03 00 01 */ addi r0, r3, 1
/* 8031904C 90 04 00 08 */ stw r0, 8(r4)
/* 80319050 98 A3 00 00 */ stb r5, 0(r3)
/* 80319054 54 C5 C6 3E */ rlwinm r5, r6, 0x18, 0x18, 0x1f
/* 80319058 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031905C 80 64 00 08 */ lwz r3, 8(r4)
/* 80319060 38 03 00 01 */ addi r0, r3, 1
/* 80319064 90 04 00 08 */ stw r0, 8(r4)
/* 80319068 98 A3 00 00 */ stb r5, 0(r3)
/* 8031906C 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 80319070 80 64 00 08 */ lwz r3, 8(r4)
/* 80319074 38 03 00 01 */ addi r0, r3, 1
/* 80319078 90 04 00 08 */ stw r0, 8(r4)
/* 8031907C 98 C3 00 00 */ stb r6, 0(r3)
/* 80319080 80 6D 94 00 */ lwz r3, __GDCurrentDL(r13)
/* 80319084 80 03 00 08 */ lwz r0, 8(r3)
/* 80319088 7F E3 FB 78 */ mr r3, r31
/* 8031908C 7C 9F 00 50 */ subf r4, r31, r0
/* 80319090 48 02 25 4D */ bl DCStoreRange
/* 80319094 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80319098 83 C1 00 08 */ lwz r30, 8(r1)
/* 8031909C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803190A0 7C 08 03 A6 */ mtlr r0
/* 803190A4 38 21 00 10 */ addi r1, r1, 0x10
/* 803190A8 4E 80 00 20 */ blr
@@ -1,20 +0,0 @@
lbl_803194E8:
/* 803194E8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803194EC 7C 08 02 A6 */ mflr r0
/* 803194F0 90 01 00 14 */ stw r0, 0x14(r1)
/* 803194F4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803194F8 7C 7F 1B 78 */ mr r31, r3
/* 803194FC 81 83 00 00 */ lwz r12, 0(r3)
/* 80319500 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 80319504 7D 89 03 A6 */ mtctr r12
/* 80319508 4E 80 04 21 */ bctrl
/* 8031950C 7F E3 FB 78 */ mr r3, r31
/* 80319510 81 9F 00 00 */ lwz r12, 0(r31)
/* 80319514 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 80319518 7D 89 03 A6 */ mtctr r12
/* 8031951C 4E 80 04 21 */ bctrl
/* 80319520 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80319524 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80319528 7C 08 03 A6 */ mtlr r0
/* 8031952C 38 21 00 10 */ addi r1, r1, 0x10
/* 80319530 4E 80 00 20 */ blr
@@ -1,39 +0,0 @@
lbl_8031AA88:
/* 8031AA88 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031AA8C 7C 08 02 A6 */ mflr r0
/* 8031AA90 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031AA94 39 61 00 20 */ addi r11, r1, 0x20
/* 8031AA98 48 04 77 41 */ bl _savegpr_28
/* 8031AA9C 7C 7C 1B 78 */ mr r28, r3
/* 8031AAA0 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 8031AAA4 80 64 00 00 */ lwz r3, 0(r4)
/* 8031AAA8 80 1C 00 58 */ lwz r0, 0x58(r28)
/* 8031AAAC 7C 03 02 14 */ add r0, r3, r0
/* 8031AAB0 90 04 00 08 */ stw r0, 8(r4)
/* 8031AAB4 80 6D 94 00 */ lwz r3, __GDCurrentDL(r13)
/* 8031AAB8 83 C3 00 08 */ lwz r30, 8(r3)
/* 8031AABC 3B A0 00 00 */ li r29, 0
/* 8031AAC0 3B E0 00 00 */ li r31, 0
lbl_8031AAC4:
/* 8031AAC4 38 1F 00 38 */ addi r0, r31, 0x38
/* 8031AAC8 7C 7C 00 2E */ lwzx r3, r28, r0
/* 8031AACC 28 03 00 00 */ cmplwi r3, 0
/* 8031AAD0 41 82 00 0C */ beq lbl_8031AADC
/* 8031AAD4 7F A4 EB 78 */ mr r4, r29
/* 8031AAD8 48 00 8D ED */ bl load__9J3DTexMtxCFUl
lbl_8031AADC:
/* 8031AADC 3B BD 00 01 */ addi r29, r29, 1
/* 8031AAE0 28 1D 00 08 */ cmplwi r29, 8
/* 8031AAE4 3B FF 00 04 */ addi r31, r31, 4
/* 8031AAE8 41 80 FF DC */ blt lbl_8031AAC4
/* 8031AAEC 80 6D 94 00 */ lwz r3, __GDCurrentDL(r13)
/* 8031AAF0 80 03 00 08 */ lwz r0, 8(r3)
/* 8031AAF4 7F C3 F3 78 */ mr r3, r30
/* 8031AAF8 7C 9E 00 50 */ subf r4, r30, r0
/* 8031AAFC 48 02 0A E1 */ bl DCStoreRange
/* 8031AB00 39 61 00 20 */ addi r11, r1, 0x20
/* 8031AB04 48 04 77 21 */ bl _restgpr_28
/* 8031AB08 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031AB0C 7C 08 03 A6 */ mtlr r0
/* 8031AB10 38 21 00 20 */ addi r1, r1, 0x20
/* 8031AB14 4E 80 00 20 */ blr
@@ -1,111 +0,0 @@
lbl_80315F60:
/* 80315F60 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80315F64 7C 08 02 A6 */ mflr r0
/* 80315F68 90 01 00 14 */ stw r0, 0x14(r1)
/* 80315F6C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80315F70 3B E0 00 00 */ li r31, 0
/* 80315F74 28 03 00 00 */ cmplwi r3, 0
/* 80315F78 40 82 00 A0 */ bne lbl_80316018
/* 80315F7C 54 80 07 FF */ clrlwi. r0, r4, 0x1f
/* 80315F80 41 82 00 30 */ beq lbl_80315FB0
/* 80315F84 38 60 00 04 */ li r3, 4
/* 80315F88 4B FB 8C C5 */ bl __nw__FUl
/* 80315F8C 28 03 00 00 */ cmplwi r3, 0
/* 80315F90 41 82 01 5C */ beq lbl_803160EC
/* 80315F94 3C 80 80 3D */ lis r4, __vt__10J3DPEBlock@ha /* 0x803CDD20@ha */
/* 80315F98 38 04 DD 20 */ addi r0, r4, __vt__10J3DPEBlock@l /* 0x803CDD20@l */
/* 80315F9C 90 03 00 00 */ stw r0, 0(r3)
/* 80315FA0 3C 80 80 3D */ lis r4, __vt__13J3DPEBlockOpa@ha /* 0x803CE890@ha */
/* 80315FA4 38 04 E8 90 */ addi r0, r4, __vt__13J3DPEBlockOpa@l /* 0x803CE890@l */
/* 80315FA8 90 03 00 00 */ stw r0, 0(r3)
/* 80315FAC 48 00 01 40 */ b lbl_803160EC
lbl_80315FB0:
/* 80315FB0 54 80 07 BD */ rlwinm. r0, r4, 0, 0x1e, 0x1e
/* 80315FB4 41 82 00 30 */ beq lbl_80315FE4
/* 80315FB8 38 60 00 04 */ li r3, 4
/* 80315FBC 4B FB 8C 91 */ bl __nw__FUl
/* 80315FC0 28 03 00 00 */ cmplwi r3, 0
/* 80315FC4 41 82 01 28 */ beq lbl_803160EC
/* 80315FC8 3C 80 80 3D */ lis r4, __vt__10J3DPEBlock@ha /* 0x803CDD20@ha */
/* 80315FCC 38 04 DD 20 */ addi r0, r4, __vt__10J3DPEBlock@l /* 0x803CDD20@l */
/* 80315FD0 90 03 00 00 */ stw r0, 0(r3)
/* 80315FD4 3C 80 80 3D */ lis r4, __vt__17J3DPEBlockTexEdge@ha /* 0x803CE814@ha */
/* 80315FD8 38 04 E8 14 */ addi r0, r4, __vt__17J3DPEBlockTexEdge@l /* 0x803CE814@l */
/* 80315FDC 90 03 00 00 */ stw r0, 0(r3)
/* 80315FE0 48 00 01 0C */ b lbl_803160EC
lbl_80315FE4:
/* 80315FE4 54 80 07 7B */ rlwinm. r0, r4, 0, 0x1d, 0x1d
/* 80315FE8 41 82 00 30 */ beq lbl_80316018
/* 80315FEC 38 60 00 04 */ li r3, 4
/* 80315FF0 4B FB 8C 5D */ bl __nw__FUl
/* 80315FF4 28 03 00 00 */ cmplwi r3, 0
/* 80315FF8 41 82 00 F4 */ beq lbl_803160EC
/* 80315FFC 3C 80 80 3D */ lis r4, __vt__10J3DPEBlock@ha /* 0x803CDD20@ha */
/* 80316000 38 04 DD 20 */ addi r0, r4, __vt__10J3DPEBlock@l /* 0x803CDD20@l */
/* 80316004 90 03 00 00 */ stw r0, 0(r3)
/* 80316008 3C 80 80 3D */ lis r4, __vt__13J3DPEBlockXlu@ha /* 0x803CE798@ha */
/* 8031600C 38 04 E7 98 */ addi r0, r4, __vt__13J3DPEBlockXlu@l /* 0x803CE798@l */
/* 80316010 90 03 00 00 */ stw r0, 0(r3)
/* 80316014 48 00 00 D8 */ b lbl_803160EC
lbl_80316018:
/* 80316018 3C 03 F0 00 */ addis r0, r3, 0xf000
/* 8031601C 28 00 00 00 */ cmplwi r0, 0
/* 80316020 40 82 00 6C */ bne lbl_8031608C
/* 80316024 38 60 00 40 */ li r3, 0x40
/* 80316028 4B FB 8C 25 */ bl __nw__FUl
/* 8031602C 7C 7F 1B 79 */ or. r31, r3, r3
/* 80316030 41 82 00 B8 */ beq lbl_803160E8
/* 80316034 3C 60 80 3D */ lis r3, __vt__10J3DPEBlock@ha /* 0x803CDD20@ha */
/* 80316038 38 03 DD 20 */ addi r0, r3, __vt__10J3DPEBlock@l /* 0x803CDD20@l */
/* 8031603C 90 1F 00 00 */ stw r0, 0(r31)
/* 80316040 3C 60 80 3D */ lis r3, __vt__14J3DPEBlockFull@ha /* 0x803CDFF0@ha */
/* 80316044 38 03 DF F0 */ addi r0, r3, __vt__14J3DPEBlockFull@l /* 0x803CDFF0@l */
/* 80316048 90 1F 00 00 */ stw r0, 0(r31)
/* 8031604C 38 7F 00 04 */ addi r3, r31, 4
/* 80316050 3C 80 80 3A */ lis r4, j3dDefaultFogInfo@ha /* 0x803A1FBC@ha */
/* 80316054 38 84 1F BC */ addi r4, r4, j3dDefaultFogInfo@l /* 0x803A1FBC@l */
/* 80316058 48 00 F7 A9 */ bl __as__10J3DFogInfoFRC10J3DFogInfo
/* 8031605C A0 02 C9 FA */ lhz r0, j3dDefaultAlphaCmpID(r2)
/* 80316060 B0 1F 00 30 */ sth r0, 0x30(r31)
/* 80316064 38 00 00 00 */ li r0, 0
/* 80316068 98 1F 00 32 */ stb r0, 0x32(r31)
/* 8031606C 98 1F 00 33 */ stb r0, 0x33(r31)
/* 80316070 80 02 C9 EC */ lwz r0, j3dDefaultBlendInfo(r2)
/* 80316074 90 1F 00 34 */ stw r0, 0x34(r31)
/* 80316078 A0 02 C9 FC */ lhz r0, j3dDefaultZModeID(r2)
/* 8031607C B0 1F 00 38 */ sth r0, 0x38(r31)
/* 80316080 7F E3 FB 78 */ mr r3, r31
/* 80316084 48 00 1A D5 */ bl initialize__14J3DPEBlockFullFv
/* 80316088 48 00 00 60 */ b lbl_803160E8
lbl_8031608C:
/* 8031608C 3C 03 E0 00 */ addis r0, r3, 0xe000
/* 80316090 28 00 00 00 */ cmplwi r0, 0
/* 80316094 40 82 00 54 */ bne lbl_803160E8
/* 80316098 38 60 00 10 */ li r3, 0x10
/* 8031609C 4B FB 8B B1 */ bl __nw__FUl
/* 803160A0 7C 7F 1B 79 */ or. r31, r3, r3
/* 803160A4 41 82 00 44 */ beq lbl_803160E8
/* 803160A8 3C 80 80 3D */ lis r4, __vt__10J3DPEBlock@ha /* 0x803CDD20@ha */
/* 803160AC 38 04 DD 20 */ addi r0, r4, __vt__10J3DPEBlock@l /* 0x803CDD20@l */
/* 803160B0 90 1F 00 00 */ stw r0, 0(r31)
/* 803160B4 3C 80 80 3D */ lis r4, __vt__16J3DPEBlockFogOff@ha /* 0x803CE06C@ha */
/* 803160B8 38 04 E0 6C */ addi r0, r4, __vt__16J3DPEBlockFogOff@l /* 0x803CE06C@l */
/* 803160BC 90 1F 00 00 */ stw r0, 0(r31)
/* 803160C0 A0 02 C9 FA */ lhz r0, j3dDefaultAlphaCmpID(r2)
/* 803160C4 B0 1F 00 04 */ sth r0, 4(r31)
/* 803160C8 38 00 00 00 */ li r0, 0
/* 803160CC 98 1F 00 06 */ stb r0, 6(r31)
/* 803160D0 98 1F 00 07 */ stb r0, 7(r31)
/* 803160D4 80 02 C9 EC */ lwz r0, j3dDefaultBlendInfo(r2)
/* 803160D8 90 1F 00 08 */ stw r0, 8(r31)
/* 803160DC A0 02 C9 FC */ lhz r0, j3dDefaultZModeID(r2)
/* 803160E0 B0 1F 00 0C */ sth r0, 0xc(r31)
/* 803160E4 48 00 1A 51 */ bl initialize__16J3DPEBlockFogOffFv
lbl_803160E8:
/* 803160E8 7F E3 FB 78 */ mr r3, r31
lbl_803160EC:
/* 803160EC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 803160F0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803160F4 7C 08 03 A6 */ mtlr r0
/* 803160F8 38 21 00 10 */ addi r1, r1, 0x10
/* 803160FC 4E 80 00 20 */ blr
@@ -1,47 +0,0 @@
lbl_80323590:
/* 80323590 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80323594 7C 08 02 A6 */ mflr r0
/* 80323598 90 01 00 24 */ stw r0, 0x24(r1)
/* 8032359C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803235A0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803235A4 7C 7E 1B 78 */ mr r30, r3
/* 803235A8 7C 9F 23 78 */ mr r31, r4
/* 803235AC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13)
/* 803235B0 80 64 00 08 */ lwz r3, 8(r4)
/* 803235B4 38 63 00 48 */ addi r3, r3, 0x48
/* 803235B8 80 04 00 0C */ lwz r0, 0xc(r4)
/* 803235BC 7C 03 00 40 */ cmplw r3, r0
/* 803235C0 40 81 00 08 */ ble lbl_803235C8
/* 803235C4 48 03 DB 11 */ bl GDOverflowed
lbl_803235C8:
/* 803235C8 38 00 00 01 */ li r0, 1
/* 803235CC 7C 1F F8 30 */ slw r31, r0, r31
/* 803235D0 7F E3 FB 78 */ mr r3, r31
/* 803235D4 C0 3E 00 00 */ lfs f1, 0(r30)
/* 803235D8 C0 5E 00 04 */ lfs f2, 4(r30)
/* 803235DC C0 7E 00 08 */ lfs f3, 8(r30)
/* 803235E0 4B FE A1 8D */ bl J3DGDSetLightPos__F10_GXLightIDfff
/* 803235E4 7F E3 FB 78 */ mr r3, r31
/* 803235E8 C0 3E 00 1C */ lfs f1, 0x1c(r30)
/* 803235EC C0 5E 00 20 */ lfs f2, 0x20(r30)
/* 803235F0 C0 7E 00 24 */ lfs f3, 0x24(r30)
/* 803235F4 C0 9E 00 28 */ lfs f4, 0x28(r30)
/* 803235F8 C0 BE 00 2C */ lfs f5, 0x2c(r30)
/* 803235FC C0 DE 00 30 */ lfs f6, 0x30(r30)
/* 80323600 4B FE 9D 65 */ bl J3DGDSetLightAttn__F10_GXLightIDffffff
/* 80323604 80 1E 00 18 */ lwz r0, 0x18(r30)
/* 80323608 90 01 00 08 */ stw r0, 8(r1)
/* 8032360C 7F E3 FB 78 */ mr r3, r31
/* 80323610 38 81 00 08 */ addi r4, r1, 8
/* 80323614 4B FE A0 49 */ bl J3DGDSetLightColor__F10_GXLightID8_GXColor
/* 80323618 7F E3 FB 78 */ mr r3, r31
/* 8032361C C0 3E 00 0C */ lfs f1, 0xc(r30)
/* 80323620 C0 5E 00 10 */ lfs f2, 0x10(r30)
/* 80323624 C0 7E 00 14 */ lfs f3, 0x14(r30)
/* 80323628 4B FE A3 11 */ bl J3DGDSetLightDir__F10_GXLightIDfff
/* 8032362C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80323630 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80323634 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80323638 7C 08 03 A6 */ mtlr r0
/* 8032363C 38 21 00 20 */ addi r1, r1, 0x20
/* 80323640 4E 80 00 20 */ blr
@@ -1,46 +0,0 @@
lbl_80324194:
/* 80324194 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80324198 3C 60 80 3A */ lis r3, lit_1197@ha /* 0x803A1FF8@ha */
/* 8032419C 38 83 1F F8 */ addi r4, r3, lit_1197@l /* 0x803A1FF8@l */
/* 803241A0 80 64 00 00 */ lwz r3, 0(r4)
/* 803241A4 80 04 00 04 */ lwz r0, 4(r4)
/* 803241A8 90 61 00 08 */ stw r3, 8(r1)
/* 803241AC 90 01 00 0C */ stw r0, 0xc(r1)
/* 803241B0 A0 04 00 08 */ lhz r0, 8(r4)
/* 803241B4 B0 01 00 10 */ sth r0, 0x10(r1)
/* 803241B8 88 04 00 0A */ lbz r0, 0xa(r4)
/* 803241BC 98 01 00 12 */ stb r0, 0x12(r1)
/* 803241C0 3C 60 80 43 */ lis r3, j3dTexCoordTable@ha /* 0x80434C98@ha */
/* 803241C4 38 C3 4C 98 */ addi r6, r3, j3dTexCoordTable@l /* 0x80434C98@l */
/* 803241C8 39 20 00 00 */ li r9, 0
/* 803241CC 38 60 00 00 */ li r3, 0
lbl_803241D0:
/* 803241D0 39 40 00 00 */ li r10, 0
/* 803241D4 38 80 00 00 */ li r4, 0
lbl_803241D8:
/* 803241D8 39 60 00 00 */ li r11, 0
/* 803241DC 7C E4 1A 14 */ add r7, r4, r3
/* 803241E0 38 A1 00 08 */ addi r5, r1, 8
/* 803241E4 38 00 00 0B */ li r0, 0xb
/* 803241E8 7C 09 03 A6 */ mtctr r0
lbl_803241EC:
/* 803241EC 7C 0B 3A 14 */ add r0, r11, r7
/* 803241F0 1C 00 00 03 */ mulli r0, r0, 3
/* 803241F4 7D 06 02 14 */ add r8, r6, r0
/* 803241F8 99 28 00 00 */ stb r9, 0(r8)
/* 803241FC 99 48 00 01 */ stb r10, 1(r8)
/* 80324200 88 05 00 00 */ lbz r0, 0(r5)
/* 80324204 98 08 00 02 */ stb r0, 2(r8)
/* 80324208 39 6B 00 01 */ addi r11, r11, 1
/* 8032420C 38 A5 00 01 */ addi r5, r5, 1
/* 80324210 42 00 FF DC */ bdnz lbl_803241EC
/* 80324214 39 4A 00 01 */ addi r10, r10, 1
/* 80324218 28 0A 00 15 */ cmplwi r10, 0x15
/* 8032421C 38 84 00 0B */ addi r4, r4, 0xb
/* 80324220 41 80 FF B8 */ blt lbl_803241D8
/* 80324224 39 29 00 01 */ addi r9, r9, 1
/* 80324228 28 09 00 0B */ cmplwi r9, 0xb
/* 8032422C 38 63 00 E7 */ addi r3, r3, 0xe7
/* 80324230 41 80 FF A0 */ blt lbl_803241D0
/* 80324234 38 21 00 20 */ addi r1, r1, 0x20
/* 80324238 4E 80 00 20 */ blr
@@ -1,31 +0,0 @@
lbl_803242A8:
/* 803242A8 3C 60 80 43 */ lis r3, j3dZModeTable@ha /* 0x80437160@ha */
/* 803242AC 38 A3 71 60 */ addi r5, r3, j3dZModeTable@l /* 0x80437160@l */
/* 803242B0 39 00 00 00 */ li r8, 0
/* 803242B4 38 60 00 00 */ li r3, 0
lbl_803242B8:
/* 803242B8 39 20 00 00 */ li r9, 0
/* 803242BC 38 80 00 00 */ li r4, 0
lbl_803242C0:
/* 803242C0 39 40 00 00 */ li r10, 0
/* 803242C4 7C C4 1A 14 */ add r6, r4, r3
/* 803242C8 38 00 00 02 */ li r0, 2
/* 803242CC 7C 09 03 A6 */ mtctr r0
lbl_803242D0:
/* 803242D0 7C 0A 32 14 */ add r0, r10, r6
/* 803242D4 1C 00 00 03 */ mulli r0, r0, 3
/* 803242D8 7C E5 02 14 */ add r7, r5, r0
/* 803242DC 99 07 00 00 */ stb r8, 0(r7)
/* 803242E0 99 27 00 01 */ stb r9, 1(r7)
/* 803242E4 99 47 00 02 */ stb r10, 2(r7)
/* 803242E8 39 4A 00 01 */ addi r10, r10, 1
/* 803242EC 42 00 FF E4 */ bdnz lbl_803242D0
/* 803242F0 39 29 00 01 */ addi r9, r9, 1
/* 803242F4 28 09 00 08 */ cmplwi r9, 8
/* 803242F8 38 84 00 02 */ addi r4, r4, 2
/* 803242FC 41 80 FF C4 */ blt lbl_803242C0
/* 80324300 39 08 00 01 */ addi r8, r8, 1
/* 80324304 2C 08 00 02 */ cmpwi r8, 2
/* 80324308 38 63 00 10 */ addi r3, r3, 0x10
/* 8032430C 41 80 FF AC */ blt lbl_803242B8
/* 80324310 4E 80 00 20 */ blr
@@ -1,15 +0,0 @@
lbl_80311638:
/* 80311638 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031163C 7C 08 02 A6 */ mflr r0
/* 80311640 90 01 00 14 */ stw r0, 0x14(r1)
/* 80311644 54 60 40 2E */ slwi r0, r3, 8
/* 80311648 7C 00 22 14 */ add r0, r0, r4
/* 8031164C 54 03 80 1E */ slwi r3, r0, 0x10
/* 80311650 54 A0 40 2E */ slwi r0, r5, 8
/* 80311654 7C 00 32 14 */ add r0, r0, r6
/* 80311658 7C 63 03 78 */ or r3, r3, r0
/* 8031165C 4B FF FF D5 */ bl __MTGQR7__FUl
/* 80311660 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80311664 7C 08 03 A6 */ mtlr r0
/* 80311668 38 21 00 10 */ addi r1, r1, 0x10
/* 8031166C 4E 80 00 20 */ blr
@@ -1,49 +0,0 @@
lbl_80311964:
/* 80311964 A8 03 00 0C */ lha r0, 0xc(r3)
/* 80311968 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c
/* 8031196C 3C A0 80 44 */ lis r5, sincosTable___5JMath@ha /* 0x80439A20@ha */
/* 80311970 38 A5 9A 20 */ addi r5, r5, sincosTable___5JMath@l /* 0x80439A20@l */
/* 80311974 7C 25 04 2E */ lfsx f1, r5, r0
/* 80311978 38 C5 00 04 */ addi r6, r5, 4
/* 8031197C 7C 46 04 2E */ lfsx f2, r6, r0
/* 80311980 A8 03 00 0E */ lha r0, 0xe(r3)
/* 80311984 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c
/* 80311988 7C 65 04 2E */ lfsx f3, r5, r0
/* 8031198C 7C 86 04 2E */ lfsx f4, r6, r0
/* 80311990 A8 03 00 10 */ lha r0, 0x10(r3)
/* 80311994 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c
/* 80311998 7C A5 04 2E */ lfsx f5, r5, r0
/* 8031199C 7C C6 04 2E */ lfsx f6, r6, r0
/* 803119A0 FC 00 18 50 */ fneg f0, f3
/* 803119A4 D0 04 00 20 */ stfs f0, 0x20(r4)
/* 803119A8 EC 06 01 32 */ fmuls f0, f6, f4
/* 803119AC D0 04 00 00 */ stfs f0, 0(r4)
/* 803119B0 EC 05 01 32 */ fmuls f0, f5, f4
/* 803119B4 D0 04 00 10 */ stfs f0, 0x10(r4)
/* 803119B8 EC 04 00 72 */ fmuls f0, f4, f1
/* 803119BC D0 04 00 24 */ stfs f0, 0x24(r4)
/* 803119C0 EC 04 00 B2 */ fmuls f0, f4, f2
/* 803119C4 D0 04 00 28 */ stfs f0, 0x28(r4)
/* 803119C8 EC 82 01 72 */ fmuls f4, f2, f5
/* 803119CC EC E1 01 B2 */ fmuls f7, f1, f6
/* 803119D0 EC 07 00 F2 */ fmuls f0, f7, f3
/* 803119D4 EC 00 20 28 */ fsubs f0, f0, f4
/* 803119D8 D0 04 00 04 */ stfs f0, 4(r4)
/* 803119DC EC 04 00 F2 */ fmuls f0, f4, f3
/* 803119E0 EC 00 38 28 */ fsubs f0, f0, f7
/* 803119E4 D0 04 00 18 */ stfs f0, 0x18(r4)
/* 803119E8 EC 21 01 72 */ fmuls f1, f1, f5
/* 803119EC EC 42 01 B2 */ fmuls f2, f2, f6
/* 803119F0 EC 02 00 F2 */ fmuls f0, f2, f3
/* 803119F4 EC 01 00 2A */ fadds f0, f1, f0
/* 803119F8 D0 04 00 08 */ stfs f0, 8(r4)
/* 803119FC EC 01 00 F2 */ fmuls f0, f1, f3
/* 80311A00 EC 02 00 2A */ fadds f0, f2, f0
/* 80311A04 D0 04 00 14 */ stfs f0, 0x14(r4)
/* 80311A08 C0 03 00 14 */ lfs f0, 0x14(r3)
/* 80311A0C D0 04 00 0C */ stfs f0, 0xc(r4)
/* 80311A10 C0 03 00 18 */ lfs f0, 0x18(r3)
/* 80311A14 D0 04 00 1C */ stfs f0, 0x1c(r4)
/* 80311A18 C0 03 00 1C */ lfs f0, 0x1c(r3)
/* 80311A1C D0 04 00 2C */ stfs f0, 0x2c(r4)
/* 80311A20 4E 80 00 20 */ blr
@@ -1,43 +0,0 @@
lbl_80311A24:
/* 80311A24 54 60 04 38 */ rlwinm r0, r3, 0, 0x10, 0x1c
/* 80311A28 3C 60 80 44 */ lis r3, sincosTable___5JMath@ha /* 0x80439A20@ha */
/* 80311A2C 38 63 9A 20 */ addi r3, r3, sincosTable___5JMath@l /* 0x80439A20@l */
/* 80311A30 7C 83 04 2E */ lfsx f4, r3, r0
/* 80311A34 38 E3 00 04 */ addi r7, r3, 4
/* 80311A38 7C A7 04 2E */ lfsx f5, r7, r0
/* 80311A3C 54 80 04 38 */ rlwinm r0, r4, 0, 0x10, 0x1c
/* 80311A40 7C C3 04 2E */ lfsx f6, r3, r0
/* 80311A44 7C E7 04 2E */ lfsx f7, r7, r0
/* 80311A48 54 A0 04 38 */ rlwinm r0, r5, 0, 0x10, 0x1c
/* 80311A4C 7D 03 04 2E */ lfsx f8, r3, r0
/* 80311A50 7D 27 04 2E */ lfsx f9, r7, r0
/* 80311A54 FC 00 30 50 */ fneg f0, f6
/* 80311A58 D0 06 00 20 */ stfs f0, 0x20(r6)
/* 80311A5C EC 09 01 F2 */ fmuls f0, f9, f7
/* 80311A60 D0 06 00 00 */ stfs f0, 0(r6)
/* 80311A64 EC 08 01 F2 */ fmuls f0, f8, f7
/* 80311A68 D0 06 00 10 */ stfs f0, 0x10(r6)
/* 80311A6C EC 07 01 32 */ fmuls f0, f7, f4
/* 80311A70 D0 06 00 24 */ stfs f0, 0x24(r6)
/* 80311A74 EC 07 01 72 */ fmuls f0, f7, f5
/* 80311A78 D0 06 00 28 */ stfs f0, 0x28(r6)
/* 80311A7C EC E5 02 32 */ fmuls f7, f5, f8
/* 80311A80 ED 44 02 72 */ fmuls f10, f4, f9
/* 80311A84 EC 0A 01 B2 */ fmuls f0, f10, f6
/* 80311A88 EC 00 38 28 */ fsubs f0, f0, f7
/* 80311A8C D0 06 00 04 */ stfs f0, 4(r6)
/* 80311A90 EC 07 01 B2 */ fmuls f0, f7, f6
/* 80311A94 EC 00 50 28 */ fsubs f0, f0, f10
/* 80311A98 D0 06 00 18 */ stfs f0, 0x18(r6)
/* 80311A9C EC 84 02 32 */ fmuls f4, f4, f8
/* 80311AA0 EC A5 02 72 */ fmuls f5, f5, f9
/* 80311AA4 EC 05 01 B2 */ fmuls f0, f5, f6
/* 80311AA8 EC 04 00 2A */ fadds f0, f4, f0
/* 80311AAC D0 06 00 08 */ stfs f0, 8(r6)
/* 80311AB0 EC 04 01 B2 */ fmuls f0, f4, f6
/* 80311AB4 EC 05 00 2A */ fadds f0, f5, f0
/* 80311AB8 D0 06 00 14 */ stfs f0, 0x14(r6)
/* 80311ABC D0 26 00 0C */ stfs f1, 0xc(r6)
/* 80311AC0 D0 46 00 1C */ stfs f2, 0x1c(r6)
/* 80311AC4 D0 66 00 2C */ stfs f3, 0x2c(r6)
/* 80311AC8 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_803393C4:
/* 803393C4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803393C8 7C 08 02 A6 */ mflr r0
/* 803393CC 90 01 00 14 */ stw r0, 0x14(r1)
/* 803393D0 7C 85 23 78 */ mr r5, r4
/* 803393D4 80 83 00 04 */ lwz r4, 4(r3)
/* 803393D8 48 00 00 15 */ bl setAnmCluster__19J3DAnmKeyLoader_v15FP16J3DAnmClusterKeyPC20J3DAnmClusterKeyData
/* 803393DC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803393E0 7C 08 03 A6 */ mtlr r0
/* 803393E4 38 21 00 10 */ addi r1, r1, 0x10
/* 803393E8 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_80338B20:
/* 80338B20 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80338B24 7C 08 02 A6 */ mflr r0
/* 80338B28 90 01 00 14 */ stw r0, 0x14(r1)
/* 80338B2C 7C 85 23 78 */ mr r5, r4
/* 80338B30 80 83 00 04 */ lwz r4, 4(r3)
/* 80338B34 48 00 00 15 */ bl setAnmCluster__20J3DAnmFullLoader_v15FP17J3DAnmClusterFullPC21J3DAnmClusterFullData
/* 80338B38 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80338B3C 7C 08 03 A6 */ mtlr r0
/* 80338B40 38 21 00 10 */ addi r1, r1, 0x10
/* 80338B44 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_803392B0:
/* 803392B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803392B4 7C 08 02 A6 */ mflr r0
/* 803392B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 803392BC 7C 85 23 78 */ mr r5, r4
/* 803392C0 80 83 00 04 */ lwz r4, 4(r3)
/* 803392C4 48 00 00 15 */ bl setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData
/* 803392C8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803392CC 7C 08 03 A6 */ mtlr r0
/* 803392D0 38 21 00 10 */ addi r1, r1, 0x10
/* 803392D4 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_803388BC:
/* 803388BC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803388C0 7C 08 02 A6 */ mflr r0
/* 803388C4 90 01 00 14 */ stw r0, 0x14(r1)
/* 803388C8 7C 85 23 78 */ mr r5, r4
/* 803388CC 80 83 00 04 */ lwz r4, 4(r3)
/* 803388D0 48 00 00 15 */ bl setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData
/* 803388D4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803388D8 7C 08 03 A6 */ mtlr r0
/* 803388DC 38 21 00 10 */ addi r1, r1, 0x10
/* 803388E0 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_80339458:
/* 80339458 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8033945C 7C 08 02 A6 */ mflr r0
/* 80339460 90 01 00 14 */ stw r0, 0x14(r1)
/* 80339464 7C 85 23 78 */ mr r5, r4
/* 80339468 80 83 00 04 */ lwz r4, 4(r3)
/* 8033946C 48 00 00 15 */ bl setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData
/* 80339470 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80339474 7C 08 03 A6 */ mtlr r0
/* 80339478 38 21 00 10 */ addi r1, r1, 0x10
/* 8033947C 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_803389B0:
/* 803389B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803389B4 7C 08 02 A6 */ mflr r0
/* 803389B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 803389BC 7C 85 23 78 */ mr r5, r4
/* 803389C0 80 83 00 04 */ lwz r4, 4(r3)
/* 803389C4 48 00 00 15 */ bl setAnmTexPattern__20J3DAnmFullLoader_v15FP16J3DAnmTexPatternPC24J3DAnmTexPatternFullData
/* 803389C8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803389CC 7C 08 03 A6 */ mtlr r0
/* 803389D0 38 21 00 10 */ addi r1, r1, 0x10
/* 803389D4 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_803390B0:
/* 803390B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803390B4 7C 08 02 A6 */ mflr r0
/* 803390B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 803390BC 7C 85 23 78 */ mr r5, r4
/* 803390C0 80 83 00 04 */ lwz r4, 4(r3)
/* 803390C4 48 00 00 15 */ bl setAnmTextureSRT__19J3DAnmKeyLoader_v15FP19J3DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData
/* 803390C8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803390CC 7C 08 03 A6 */ mtlr r0
/* 803390D0 38 21 00 10 */ addi r1, r1, 0x10
/* 803390D4 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_80338FEC:
/* 80338FEC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80338FF0 7C 08 02 A6 */ mflr r0
/* 80338FF4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80338FF8 7C 85 23 78 */ mr r5, r4
/* 80338FFC 80 83 00 04 */ lwz r4, 4(r3)
/* 80339000 48 00 00 15 */ bl setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData
/* 80339004 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80339008 7C 08 03 A6 */ mtlr r0
/* 8033900C 38 21 00 10 */ addi r1, r1, 0x10
/* 80339010 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_80338800:
/* 80338800 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80338804 7C 08 02 A6 */ mflr r0
/* 80338808 90 01 00 14 */ stw r0, 0x14(r1)
/* 8033880C 7C 85 23 78 */ mr r5, r4
/* 80338810 80 83 00 04 */ lwz r4, 4(r3)
/* 80338814 48 00 00 15 */ bl setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData
/* 80338818 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8033881C 7C 08 03 A6 */ mtlr r0
/* 80338820 38 21 00 10 */ addi r1, r1, 0x10
/* 80338824 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_80338A7C:
/* 80338A7C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80338A80 7C 08 02 A6 */ mflr r0
/* 80338A84 90 01 00 14 */ stw r0, 0x14(r1)
/* 80338A88 7C 85 23 78 */ mr r5, r4
/* 80338A8C 80 83 00 04 */ lwz r4, 4(r3)
/* 80338A90 48 00 00 15 */ bl setAnmVisibility__20J3DAnmFullLoader_v15FP20J3DAnmVisibilityFullPC24J3DAnmVisibilityFullData
/* 80338A94 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80338A98 7C 08 03 A6 */ mtlr r0
/* 80338A9C 38 21 00 10 */ addi r1, r1, 0x10
/* 80338AA0 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_8033960C:
/* 8033960C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80339610 7C 08 02 A6 */ mflr r0
/* 80339614 90 01 00 14 */ stw r0, 0x14(r1)
/* 80339618 7C 85 23 78 */ mr r5, r4
/* 8033961C 80 83 00 04 */ lwz r4, 4(r3)
/* 80339620 48 00 00 15 */ bl setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData
/* 80339624 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80339628 7C 08 03 A6 */ mtlr r0
/* 8033962C 38 21 00 10 */ addi r1, r1, 0x10
/* 80339630 4E 80 00 20 */ blr
@@ -1,11 +0,0 @@
lbl_80338BB4:
/* 80338BB4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80338BB8 7C 08 02 A6 */ mflr r0
/* 80338BBC 90 01 00 14 */ stw r0, 0x14(r1)
/* 80338BC0 7C 85 23 78 */ mr r5, r4
/* 80338BC4 80 83 00 04 */ lwz r4, 4(r3)
/* 80338BC8 48 00 00 15 */ bl setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData
/* 80338BCC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80338BD0 7C 08 03 A6 */ mtlr r0
/* 80338BD4 38 21 00 10 */ addi r1, r1, 0x10
/* 80338BD8 4E 80 00 20 */ blr
@@ -1,101 +0,0 @@
lbl_80338E8C:
/* 80338E8C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80338E90 7C 08 02 A6 */ mflr r0
/* 80338E94 90 01 00 24 */ stw r0, 0x24(r1)
/* 80338E98 39 61 00 20 */ addi r11, r1, 0x20
/* 80338E9C 48 02 93 35 */ bl _savegpr_26
/* 80338EA0 7C 7B 1B 78 */ mr r27, r3
/* 80338EA4 7C 9C 23 78 */ mr r28, r4
/* 80338EA8 3B C5 00 20 */ addi r30, r5, 0x20
/* 80338EAC 3B A0 00 00 */ li r29, 0
/* 80338EB0 3C 60 54 52 */ lis r3, 0x5452 /* 0x54524B31@ha */
/* 80338EB4 3B E3 4B 31 */ addi r31, r3, 0x4B31 /* 0x54524B31@l */
/* 80338EB8 83 45 00 0C */ lwz r26, 0xc(r5)
/* 80338EBC 48 00 01 10 */ b lbl_80338FCC
lbl_80338EC0:
/* 80338EC0 80 9E 00 00 */ lwz r4, 0(r30)
/* 80338EC4 7C 04 F8 00 */ cmpw r4, r31
/* 80338EC8 41 82 00 BC */ beq lbl_80338F84
/* 80338ECC 40 80 00 40 */ bge lbl_80338F0C
/* 80338ED0 3C 60 43 4C */ lis r3, 0x434C /* 0x434C4B31@ha */
/* 80338ED4 38 03 4B 31 */ addi r0, r3, 0x4B31 /* 0x434C4B31@l */
/* 80338ED8 7C 04 00 00 */ cmpw r4, r0
/* 80338EDC 41 82 00 80 */ beq lbl_80338F5C
/* 80338EE0 40 80 00 18 */ bge lbl_80338EF8
/* 80338EE4 3C 60 41 4E */ lis r3, 0x414E /* 0x414E4B31@ha */
/* 80338EE8 38 03 4B 31 */ addi r0, r3, 0x4B31 /* 0x414E4B31@l */
/* 80338EEC 7C 04 00 00 */ cmpw r4, r0
/* 80338EF0 41 82 00 44 */ beq lbl_80338F34
/* 80338EF4 48 00 00 B8 */ b lbl_80338FAC
lbl_80338EF8:
/* 80338EF8 3C 60 50 41 */ lis r3, 0x5041 /* 0x50414B31@ha */
/* 80338EFC 38 03 4B 31 */ addi r0, r3, 0x4B31 /* 0x50414B31@l */
/* 80338F00 7C 04 00 00 */ cmpw r4, r0
/* 80338F04 41 82 00 44 */ beq lbl_80338F48
/* 80338F08 48 00 00 A4 */ b lbl_80338FAC
lbl_80338F0C:
/* 80338F0C 3C 60 56 43 */ lis r3, 0x5643 /* 0x56434B31@ha */
/* 80338F10 38 03 4B 31 */ addi r0, r3, 0x4B31 /* 0x56434B31@l */
/* 80338F14 7C 04 00 00 */ cmpw r4, r0
/* 80338F18 41 82 00 80 */ beq lbl_80338F98
/* 80338F1C 40 80 00 90 */ bge lbl_80338FAC
/* 80338F20 3C 60 54 54 */ lis r3, 0x5454 /* 0x54544B31@ha */
/* 80338F24 38 03 4B 31 */ addi r0, r3, 0x4B31 /* 0x54544B31@l */
/* 80338F28 7C 04 00 00 */ cmpw r4, r0
/* 80338F2C 41 82 00 44 */ beq lbl_80338F70
/* 80338F30 48 00 00 7C */ b lbl_80338FAC
lbl_80338F34:
/* 80338F34 7F 63 DB 78 */ mr r3, r27
/* 80338F38 7F 84 E3 78 */ mr r4, r28
/* 80338F3C 7F C5 F3 78 */ mr r5, r30
/* 80338F40 48 00 00 D5 */ bl setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData
/* 80338F44 48 00 00 7C */ b lbl_80338FC0
lbl_80338F48:
/* 80338F48 7F 63 DB 78 */ mr r3, r27
/* 80338F4C 7F 84 E3 78 */ mr r4, r28
/* 80338F50 7F C5 F3 78 */ mr r5, r30
/* 80338F54 48 00 03 85 */ bl setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData
/* 80338F58 48 00 00 68 */ b lbl_80338FC0
lbl_80338F5C:
/* 80338F5C 7F 63 DB 78 */ mr r3, r27
/* 80338F60 7F 84 E3 78 */ mr r4, r28
/* 80338F64 7F C5 F3 78 */ mr r5, r30
/* 80338F68 48 00 04 85 */ bl setAnmCluster__19J3DAnmKeyLoader_v15FP16J3DAnmClusterKeyPC20J3DAnmClusterKeyData
/* 80338F6C 48 00 00 54 */ b lbl_80338FC0
lbl_80338F70:
/* 80338F70 7F 63 DB 78 */ mr r3, r27
/* 80338F74 7F 84 E3 78 */ mr r4, r28
/* 80338F78 7F C5 F3 78 */ mr r5, r30
/* 80338F7C 48 00 01 5D */ bl setAnmTextureSRT__19J3DAnmKeyLoader_v15FP19J3DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData
/* 80338F80 48 00 00 40 */ b lbl_80338FC0
lbl_80338F84:
/* 80338F84 7F 63 DB 78 */ mr r3, r27
/* 80338F88 7F 84 E3 78 */ mr r4, r28
/* 80338F8C 7F C5 F3 78 */ mr r5, r30
/* 80338F90 48 00 04 F1 */ bl setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData
/* 80338F94 48 00 00 2C */ b lbl_80338FC0
lbl_80338F98:
/* 80338F98 7F 63 DB 78 */ mr r3, r27
/* 80338F9C 7F 84 E3 78 */ mr r4, r28
/* 80338FA0 7F C5 F3 78 */ mr r5, r30
/* 80338FA4 48 00 06 91 */ bl setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData
/* 80338FA8 48 00 00 18 */ b lbl_80338FC0
lbl_80338FAC:
/* 80338FAC 3C 60 80 3A */ lis r3, J3DAnmLoader__stringBase0@ha /* 0x803A2130@ha */
/* 80338FB0 38 63 21 30 */ addi r3, r3, J3DAnmLoader__stringBase0@l /* 0x803A2130@l */
/* 80338FB4 38 63 00 29 */ addi r3, r3, 0x29
/* 80338FB8 4C C6 31 82 */ crclr 6
/* 80338FBC 4B CC DB 01 */ bl OSReport
lbl_80338FC0:
/* 80338FC0 80 1E 00 04 */ lwz r0, 4(r30)
/* 80338FC4 7F DE 02 14 */ add r30, r30, r0
/* 80338FC8 3B BD 00 01 */ addi r29, r29, 1
lbl_80338FCC:
/* 80338FCC 7C 1D D0 40 */ cmplw r29, r26
/* 80338FD0 41 80 FE F0 */ blt lbl_80338EC0
/* 80338FD4 39 61 00 20 */ addi r11, r1, 0x20
/* 80338FD8 48 02 92 45 */ bl _restgpr_26
/* 80338FDC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80338FE0 7C 08 03 A6 */ mtlr r0
/* 80338FE4 38 21 00 20 */ addi r1, r1, 0x20
/* 80338FE8 4E 80 00 20 */ blr
@@ -1,101 +0,0 @@
lbl_803386A0:
/* 803386A0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803386A4 7C 08 02 A6 */ mflr r0
/* 803386A8 90 01 00 24 */ stw r0, 0x24(r1)
/* 803386AC 39 61 00 20 */ addi r11, r1, 0x20
/* 803386B0 48 02 9B 21 */ bl _savegpr_26
/* 803386B4 7C 7B 1B 78 */ mr r27, r3
/* 803386B8 7C 9C 23 78 */ mr r28, r4
/* 803386BC 3B C5 00 20 */ addi r30, r5, 0x20
/* 803386C0 3B A0 00 00 */ li r29, 0
/* 803386C4 3C 60 54 50 */ lis r3, 0x5450 /* 0x54505431@ha */
/* 803386C8 3B E3 54 31 */ addi r31, r3, 0x5431 /* 0x54505431@l */
/* 803386CC 83 45 00 0C */ lwz r26, 0xc(r5)
/* 803386D0 48 00 01 10 */ b lbl_803387E0
lbl_803386D4:
/* 803386D4 80 9E 00 00 */ lwz r4, 0(r30)
/* 803386D8 7C 04 F8 00 */ cmpw r4, r31
/* 803386DC 41 82 00 94 */ beq lbl_80338770
/* 803386E0 40 80 00 40 */ bge lbl_80338720
/* 803386E4 3C 60 43 4C */ lis r3, 0x434C /* 0x434C4631@ha */
/* 803386E8 38 03 46 31 */ addi r0, r3, 0x4631 /* 0x434C4631@l */
/* 803386EC 7C 04 00 00 */ cmpw r4, r0
/* 803386F0 41 82 00 94 */ beq lbl_80338784
/* 803386F4 40 80 00 18 */ bge lbl_8033870C
/* 803386F8 3C 60 41 4E */ lis r3, 0x414E /* 0x414E4631@ha */
/* 803386FC 38 03 46 31 */ addi r0, r3, 0x4631 /* 0x414E4631@l */
/* 80338700 7C 04 00 00 */ cmpw r4, r0
/* 80338704 41 82 00 44 */ beq lbl_80338748
/* 80338708 48 00 00 B8 */ b lbl_803387C0
lbl_8033870C:
/* 8033870C 3C 60 50 41 */ lis r3, 0x5041 /* 0x50414631@ha */
/* 80338710 38 03 46 31 */ addi r0, r3, 0x4631 /* 0x50414631@l */
/* 80338714 7C 04 00 00 */ cmpw r4, r0
/* 80338718 41 82 00 44 */ beq lbl_8033875C
/* 8033871C 48 00 00 A4 */ b lbl_803387C0
lbl_80338720:
/* 80338720 3C 60 56 43 */ lis r3, 0x5643 /* 0x56434631@ha */
/* 80338724 38 03 46 31 */ addi r0, r3, 0x4631 /* 0x56434631@l */
/* 80338728 7C 04 00 00 */ cmpw r4, r0
/* 8033872C 41 82 00 80 */ beq lbl_803387AC
/* 80338730 40 80 00 90 */ bge lbl_803387C0
/* 80338734 3C 60 56 41 */ lis r3, 0x5641 /* 0x56414631@ha */
/* 80338738 38 03 46 31 */ addi r0, r3, 0x4631 /* 0x56414631@l */
/* 8033873C 7C 04 00 00 */ cmpw r4, r0
/* 80338740 41 82 00 58 */ beq lbl_80338798
/* 80338744 48 00 00 7C */ b lbl_803387C0
lbl_80338748:
/* 80338748 7F 63 DB 78 */ mr r3, r27
/* 8033874C 7F 84 E3 78 */ mr r4, r28
/* 80338750 7F C5 F3 78 */ mr r5, r30
/* 80338754 48 00 00 D5 */ bl setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData
/* 80338758 48 00 00 7C */ b lbl_803387D4
lbl_8033875C:
/* 8033875C 7F 63 DB 78 */ mr r3, r27
/* 80338760 7F 84 E3 78 */ mr r4, r28
/* 80338764 7F C5 F3 78 */ mr r5, r30
/* 80338768 48 00 01 7D */ bl setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData
/* 8033876C 48 00 00 68 */ b lbl_803387D4
lbl_80338770:
/* 80338770 7F 63 DB 78 */ mr r3, r27
/* 80338774 7F 84 E3 78 */ mr r4, r28
/* 80338778 7F C5 F3 78 */ mr r5, r30
/* 8033877C 48 00 02 5D */ bl setAnmTexPattern__20J3DAnmFullLoader_v15FP16J3DAnmTexPatternPC24J3DAnmTexPatternFullData
/* 80338780 48 00 00 54 */ b lbl_803387D4
lbl_80338784:
/* 80338784 7F 63 DB 78 */ mr r3, r27
/* 80338788 7F 84 E3 78 */ mr r4, r28
/* 8033878C 7F C5 F3 78 */ mr r5, r30
/* 80338790 48 00 03 B9 */ bl setAnmCluster__20J3DAnmFullLoader_v15FP17J3DAnmClusterFullPC21J3DAnmClusterFullData
/* 80338794 48 00 00 40 */ b lbl_803387D4
lbl_80338798:
/* 80338798 7F 63 DB 78 */ mr r3, r27
/* 8033879C 7F 84 E3 78 */ mr r4, r28
/* 803387A0 7F C5 F3 78 */ mr r5, r30
/* 803387A4 48 00 03 01 */ bl setAnmVisibility__20J3DAnmFullLoader_v15FP20J3DAnmVisibilityFullPC24J3DAnmVisibilityFullData
/* 803387A8 48 00 00 2C */ b lbl_803387D4
lbl_803387AC:
/* 803387AC 7F 63 DB 78 */ mr r3, r27
/* 803387B0 7F 84 E3 78 */ mr r4, r28
/* 803387B4 7F C5 F3 78 */ mr r5, r30
/* 803387B8 48 00 04 25 */ bl setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData
/* 803387BC 48 00 00 18 */ b lbl_803387D4
lbl_803387C0:
/* 803387C0 3C 60 80 3A */ lis r3, J3DAnmLoader__stringBase0@ha /* 0x803A2130@ha */
/* 803387C4 38 63 21 30 */ addi r3, r3, J3DAnmLoader__stringBase0@l /* 0x803A2130@l */
/* 803387C8 38 63 00 29 */ addi r3, r3, 0x29
/* 803387CC 4C C6 31 82 */ crclr 6
/* 803387D0 4B CC E2 ED */ bl OSReport
lbl_803387D4:
/* 803387D4 80 1E 00 04 */ lwz r0, 4(r30)
/* 803387D8 7F DE 02 14 */ add r30, r30, r0
/* 803387DC 3B BD 00 01 */ addi r29, r29, 1
lbl_803387E0:
/* 803387E0 7C 1D D0 40 */ cmplw r29, r26
/* 803387E4 41 80 FE F0 */ blt lbl_803386D4
/* 803387E8 39 61 00 20 */ addi r11, r1, 0x20
/* 803387EC 48 02 9A 31 */ bl _restgpr_26
/* 803387F0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803387F4 7C 08 03 A6 */ mtlr r0
/* 803387F8 38 21 00 20 */ addi r1, r1, 0x20
/* 803387FC 4E 80 00 20 */ blr
@@ -1,225 +0,0 @@
lbl_80338134:
/* 80338134 94 21 FF 90 */ stwu r1, -0x70(r1)
/* 80338138 7C 08 02 A6 */ mflr r0
/* 8033813C 90 01 00 74 */ stw r0, 0x74(r1)
/* 80338140 93 E1 00 6C */ stw r31, 0x6c(r1)
/* 80338144 93 C1 00 68 */ stw r30, 0x68(r1)
/* 80338148 7C 7E 1B 78 */ mr r30, r3
/* 8033814C 7C 9F 23 79 */ or. r31, r4, r4
/* 80338150 41 82 03 00 */ beq lbl_80338450
/* 80338154 80 7F 00 00 */ lwz r3, 0(r31)
/* 80338158 3C 03 B5 CD */ addis r0, r3, 0xb5cd
/* 8033815C 28 00 44 31 */ cmplwi r0, 0x4431
/* 80338160 40 82 02 F0 */ bne lbl_80338450
/* 80338164 80 BF 00 04 */ lwz r5, 4(r31)
/* 80338168 3C 60 62 72 */ lis r3, 0x6272 /* 0x62726B31@ha */
/* 8033816C 38 03 6B 31 */ addi r0, r3, 0x6B31 /* 0x62726B31@l */
/* 80338170 7C 05 00 00 */ cmpw r5, r0
/* 80338174 41 82 01 70 */ beq lbl_803382E4
/* 80338178 40 80 00 70 */ bge lbl_803381E8
/* 8033817C 3C 80 62 6C */ lis r4, 0x626C /* 0x626C6B31@ha */
/* 80338180 38 04 6B 31 */ addi r0, r4, 0x6B31 /* 0x626C6B31@l */
/* 80338184 7C 05 00 00 */ cmpw r5, r0
/* 80338188 41 82 01 0C */ beq lbl_80338294
/* 8033818C 40 80 00 38 */ bge lbl_803381C4
/* 80338190 3C 60 62 63 */ lis r3, 0x6263 /* 0x62636B31@ha */
/* 80338194 38 03 6B 31 */ addi r0, r3, 0x6B31 /* 0x62636B31@l */
/* 80338198 7C 05 00 00 */ cmpw r5, r0
/* 8033819C 41 82 00 A8 */ beq lbl_80338244
/* 803381A0 40 80 00 14 */ bge lbl_803381B4
/* 803381A4 38 03 61 31 */ addi r0, r3, 0x6131
/* 803381A8 7C 05 00 00 */ cmpw r5, r0
/* 803381AC 41 82 01 A4 */ beq lbl_80338350
/* 803381B0 48 00 02 90 */ b lbl_80338440
lbl_803381B4:
/* 803381B4 38 04 61 31 */ addi r0, r4, 0x6131
/* 803381B8 7C 05 00 00 */ cmpw r5, r0
/* 803381BC 41 82 02 0C */ beq lbl_803383C8
/* 803381C0 48 00 02 80 */ b lbl_80338440
lbl_803381C4:
/* 803381C4 3C 60 62 70 */ lis r3, 0x6270 /* 0x62706B31@ha */
/* 803381C8 38 03 6B 31 */ addi r0, r3, 0x6B31 /* 0x62706B31@l */
/* 803381CC 7C 05 00 00 */ cmpw r5, r0
/* 803381D0 41 82 00 9C */ beq lbl_8033826C
/* 803381D4 40 80 02 6C */ bge lbl_80338440
/* 803381D8 38 03 61 31 */ addi r0, r3, 0x6131
/* 803381DC 7C 05 00 00 */ cmpw r5, r0
/* 803381E0 41 82 01 98 */ beq lbl_80338378
/* 803381E4 48 00 02 5C */ b lbl_80338440
lbl_803381E8:
/* 803381E8 3C 60 62 76 */ lis r3, 0x6276 /* 0x62766131@ha */
/* 803381EC 38 03 61 31 */ addi r0, r3, 0x6131 /* 0x62766131@l */
/* 803381F0 7C 05 00 00 */ cmpw r5, r0
/* 803381F4 41 82 02 24 */ beq lbl_80338418
/* 803381F8 40 80 00 28 */ bge lbl_80338220
/* 803381FC 3C 60 62 74 */ lis r3, 0x6274 /* 0x62747031@ha */
/* 80338200 38 03 70 31 */ addi r0, r3, 0x7031 /* 0x62747031@l */
/* 80338204 7C 05 00 00 */ cmpw r5, r0
/* 80338208 41 82 01 98 */ beq lbl_803383A0
/* 8033820C 40 80 02 34 */ bge lbl_80338440
/* 80338210 38 03 6B 31 */ addi r0, r3, 0x6b31
/* 80338214 7C 05 00 00 */ cmpw r5, r0
/* 80338218 41 82 00 A4 */ beq lbl_803382BC
/* 8033821C 48 00 02 24 */ b lbl_80338440
lbl_80338220:
/* 80338220 3C 60 62 78 */ lis r3, 0x6278 /* 0x62786B31@ha */
/* 80338224 38 03 6B 31 */ addi r0, r3, 0x6B31 /* 0x62786B31@l */
/* 80338228 7C 05 00 00 */ cmpw r5, r0
/* 8033822C 41 82 00 FC */ beq lbl_80338328
/* 80338230 40 80 02 10 */ bge lbl_80338440
/* 80338234 38 03 61 31 */ addi r0, r3, 0x6131
/* 80338238 7C 05 00 00 */ cmpw r5, r0
/* 8033823C 41 82 01 B4 */ beq lbl_803383F0
/* 80338240 48 00 02 00 */ b lbl_80338440
lbl_80338244:
/* 80338244 38 61 00 60 */ addi r3, r1, 0x60
/* 80338248 48 00 02 99 */ bl __ct__19J3DAnmKeyLoader_v15Fv
/* 8033824C 38 61 00 60 */ addi r3, r1, 0x60
/* 80338250 7F C4 F3 78 */ mr r4, r30
/* 80338254 7F E5 FB 78 */ mr r5, r31
/* 80338258 48 00 0C 35 */ bl setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv
/* 8033825C 38 61 00 60 */ addi r3, r1, 0x60
/* 80338260 38 80 FF FF */ li r4, -1
/* 80338264 48 00 02 99 */ bl __dt__19J3DAnmKeyLoader_v15Fv
/* 80338268 48 00 01 E8 */ b lbl_80338450
lbl_8033826C:
/* 8033826C 38 61 00 58 */ addi r3, r1, 0x58
/* 80338270 48 00 02 71 */ bl __ct__19J3DAnmKeyLoader_v15Fv
/* 80338274 38 61 00 58 */ addi r3, r1, 0x58
/* 80338278 7F C4 F3 78 */ mr r4, r30
/* 8033827C 7F E5 FB 78 */ mr r5, r31
/* 80338280 48 00 0C 0D */ bl setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv
/* 80338284 38 61 00 58 */ addi r3, r1, 0x58
/* 80338288 38 80 FF FF */ li r4, -1
/* 8033828C 48 00 02 71 */ bl __dt__19J3DAnmKeyLoader_v15Fv
/* 80338290 48 00 01 C0 */ b lbl_80338450
lbl_80338294:
/* 80338294 38 61 00 50 */ addi r3, r1, 0x50
/* 80338298 48 00 02 49 */ bl __ct__19J3DAnmKeyLoader_v15Fv
/* 8033829C 38 61 00 50 */ addi r3, r1, 0x50
/* 803382A0 7F C4 F3 78 */ mr r4, r30
/* 803382A4 7F E5 FB 78 */ mr r5, r31
/* 803382A8 48 00 0B E5 */ bl setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv
/* 803382AC 38 61 00 50 */ addi r3, r1, 0x50
/* 803382B0 38 80 FF FF */ li r4, -1
/* 803382B4 48 00 02 49 */ bl __dt__19J3DAnmKeyLoader_v15Fv
/* 803382B8 48 00 01 98 */ b lbl_80338450
lbl_803382BC:
/* 803382BC 38 61 00 48 */ addi r3, r1, 0x48
/* 803382C0 48 00 02 21 */ bl __ct__19J3DAnmKeyLoader_v15Fv
/* 803382C4 38 61 00 48 */ addi r3, r1, 0x48
/* 803382C8 7F C4 F3 78 */ mr r4, r30
/* 803382CC 7F E5 FB 78 */ mr r5, r31
/* 803382D0 48 00 0B BD */ bl setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv
/* 803382D4 38 61 00 48 */ addi r3, r1, 0x48
/* 803382D8 38 80 FF FF */ li r4, -1
/* 803382DC 48 00 02 21 */ bl __dt__19J3DAnmKeyLoader_v15Fv
/* 803382E0 48 00 01 70 */ b lbl_80338450
lbl_803382E4:
/* 803382E4 38 61 00 40 */ addi r3, r1, 0x40
/* 803382E8 48 00 01 F9 */ bl __ct__19J3DAnmKeyLoader_v15Fv
/* 803382EC 7F C3 F3 78 */ mr r3, r30
/* 803382F0 81 9E 00 00 */ lwz r12, 0(r30)
/* 803382F4 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 803382F8 7D 89 03 A6 */ mtctr r12
/* 803382FC 4E 80 04 21 */ bctrl
/* 80338300 2C 03 00 05 */ cmpwi r3, 5
/* 80338304 40 82 00 14 */ bne lbl_80338318
/* 80338308 38 61 00 40 */ addi r3, r1, 0x40
/* 8033830C 7F C4 F3 78 */ mr r4, r30
/* 80338310 7F E5 FB 78 */ mr r5, r31
/* 80338314 48 00 0B 79 */ bl setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv
lbl_80338318:
/* 80338318 38 61 00 40 */ addi r3, r1, 0x40
/* 8033831C 38 80 FF FF */ li r4, -1
/* 80338320 48 00 01 DD */ bl __dt__19J3DAnmKeyLoader_v15Fv
/* 80338324 48 00 01 2C */ b lbl_80338450
lbl_80338328:
/* 80338328 38 61 00 38 */ addi r3, r1, 0x38
/* 8033832C 48 00 01 B5 */ bl __ct__19J3DAnmKeyLoader_v15Fv
/* 80338330 38 61 00 38 */ addi r3, r1, 0x38
/* 80338334 7F C4 F3 78 */ mr r4, r30
/* 80338338 7F E5 FB 78 */ mr r5, r31
/* 8033833C 48 00 0B 51 */ bl setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv
/* 80338340 38 61 00 38 */ addi r3, r1, 0x38
/* 80338344 38 80 FF FF */ li r4, -1
/* 80338348 48 00 01 B5 */ bl __dt__19J3DAnmKeyLoader_v15Fv
/* 8033834C 48 00 01 04 */ b lbl_80338450
lbl_80338350:
/* 80338350 38 61 00 30 */ addi r3, r1, 0x30
/* 80338354 48 00 01 15 */ bl __ct__20J3DAnmFullLoader_v15Fv
/* 80338358 38 61 00 30 */ addi r3, r1, 0x30
/* 8033835C 7F C4 F3 78 */ mr r4, r30
/* 80338360 7F E5 FB 78 */ mr r5, r31
/* 80338364 48 00 03 3D */ bl setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv
/* 80338368 38 61 00 30 */ addi r3, r1, 0x30
/* 8033836C 38 80 FF FF */ li r4, -1
/* 80338370 48 00 01 15 */ bl __dt__20J3DAnmFullLoader_v15Fv
/* 80338374 48 00 00 DC */ b lbl_80338450
lbl_80338378:
/* 80338378 38 61 00 28 */ addi r3, r1, 0x28
/* 8033837C 48 00 00 ED */ bl __ct__20J3DAnmFullLoader_v15Fv
/* 80338380 38 61 00 28 */ addi r3, r1, 0x28
/* 80338384 7F C4 F3 78 */ mr r4, r30
/* 80338388 7F E5 FB 78 */ mr r5, r31
/* 8033838C 48 00 03 15 */ bl setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv
/* 80338390 38 61 00 28 */ addi r3, r1, 0x28
/* 80338394 38 80 FF FF */ li r4, -1
/* 80338398 48 00 00 ED */ bl __dt__20J3DAnmFullLoader_v15Fv
/* 8033839C 48 00 00 B4 */ b lbl_80338450
lbl_803383A0:
/* 803383A0 38 61 00 20 */ addi r3, r1, 0x20
/* 803383A4 48 00 00 C5 */ bl __ct__20J3DAnmFullLoader_v15Fv
/* 803383A8 38 61 00 20 */ addi r3, r1, 0x20
/* 803383AC 7F C4 F3 78 */ mr r4, r30
/* 803383B0 7F E5 FB 78 */ mr r5, r31
/* 803383B4 48 00 02 ED */ bl setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv
/* 803383B8 38 61 00 20 */ addi r3, r1, 0x20
/* 803383BC 38 80 FF FF */ li r4, -1
/* 803383C0 48 00 00 C5 */ bl __dt__20J3DAnmFullLoader_v15Fv
/* 803383C4 48 00 00 8C */ b lbl_80338450
lbl_803383C8:
/* 803383C8 38 61 00 18 */ addi r3, r1, 0x18
/* 803383CC 48 00 00 9D */ bl __ct__20J3DAnmFullLoader_v15Fv
/* 803383D0 38 61 00 18 */ addi r3, r1, 0x18
/* 803383D4 7F C4 F3 78 */ mr r4, r30
/* 803383D8 7F E5 FB 78 */ mr r5, r31
/* 803383DC 48 00 02 C5 */ bl setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv
/* 803383E0 38 61 00 18 */ addi r3, r1, 0x18
/* 803383E4 38 80 FF FF */ li r4, -1
/* 803383E8 48 00 00 9D */ bl __dt__20J3DAnmFullLoader_v15Fv
/* 803383EC 48 00 00 64 */ b lbl_80338450
lbl_803383F0:
/* 803383F0 38 61 00 10 */ addi r3, r1, 0x10
/* 803383F4 48 00 00 75 */ bl __ct__20J3DAnmFullLoader_v15Fv
/* 803383F8 38 61 00 10 */ addi r3, r1, 0x10
/* 803383FC 7F C4 F3 78 */ mr r4, r30
/* 80338400 7F E5 FB 78 */ mr r5, r31
/* 80338404 48 00 02 9D */ bl setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv
/* 80338408 38 61 00 10 */ addi r3, r1, 0x10
/* 8033840C 38 80 FF FF */ li r4, -1
/* 80338410 48 00 00 75 */ bl __dt__20J3DAnmFullLoader_v15Fv
/* 80338414 48 00 00 3C */ b lbl_80338450
lbl_80338418:
/* 80338418 38 61 00 08 */ addi r3, r1, 8
/* 8033841C 48 00 00 4D */ bl __ct__20J3DAnmFullLoader_v15Fv
/* 80338420 38 61 00 08 */ addi r3, r1, 8
/* 80338424 7F C4 F3 78 */ mr r4, r30
/* 80338428 7F E5 FB 78 */ mr r5, r31
/* 8033842C 48 00 02 75 */ bl setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv
/* 80338430 38 61 00 08 */ addi r3, r1, 8
/* 80338434 38 80 FF FF */ li r4, -1
/* 80338438 48 00 00 4D */ bl __dt__20J3DAnmFullLoader_v15Fv
/* 8033843C 48 00 00 14 */ b lbl_80338450
lbl_80338440:
/* 80338440 3C 60 80 3A */ lis r3, J3DAnmLoader__stringBase0@ha /* 0x803A2130@ha */
/* 80338444 38 63 21 30 */ addi r3, r3, J3DAnmLoader__stringBase0@l /* 0x803A2130@l */
/* 80338448 4C C6 31 82 */ crclr 6
/* 8033844C 4B CC E6 71 */ bl OSReport
lbl_80338450:
/* 80338450 83 E1 00 6C */ lwz r31, 0x6c(r1)
/* 80338454 83 C1 00 68 */ lwz r30, 0x68(r1)
/* 80338458 80 01 00 74 */ lwz r0, 0x74(r1)
/* 8033845C 7C 08 03 A6 */ mtlr r0
/* 80338460 38 21 00 70 */ addi r1, r1, 0x70
/* 80338464 4E 80 00 20 */ blr
@@ -1,43 +0,0 @@
lbl_80334130:
/* 80334130 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80334134 7C 08 02 A6 */ mflr r0
/* 80334138 90 01 00 24 */ stw r0, 0x24(r1)
/* 8033413C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80334140 7C 7F 1B 78 */ mr r31, r3
/* 80334144 80 83 00 00 */ lwz r4, 0(r3)
/* 80334148 3C 04 B5 CD */ addis r0, r4, 0xb5cd
/* 8033414C 28 00 44 31 */ cmplwi r0, 0x4431
/* 80334150 40 82 00 40 */ bne lbl_80334190
/* 80334154 80 7F 00 04 */ lwz r3, 4(r31)
/* 80334158 3C 03 9D 94 */ addis r0, r3, 0x9d94
/* 8033415C 28 00 73 31 */ cmplwi r0, 0x7331
/* 80334160 40 82 00 30 */ bne lbl_80334190
/* 80334164 38 61 00 08 */ addi r3, r1, 8
/* 80334168 48 00 00 65 */ bl __ct__20J3DClusterLoader_v15Fv
/* 8033416C 38 61 00 08 */ addi r3, r1, 8
/* 80334170 7F E4 FB 78 */ mr r4, r31
/* 80334174 48 00 00 D1 */ bl load__20J3DClusterLoader_v15FPCv
/* 80334178 7C 7F 1B 78 */ mr r31, r3
/* 8033417C 38 61 00 08 */ addi r3, r1, 8
/* 80334180 38 80 FF FF */ li r4, -1
/* 80334184 48 00 00 65 */ bl __dt__20J3DClusterLoader_v15Fv
/* 80334188 7F E3 FB 78 */ mr r3, r31
/* 8033418C 48 00 00 2C */ b lbl_803341B8
lbl_80334190:
/* 80334190 3C 04 B5 CD */ addis r0, r4, 0xb5cd
/* 80334194 28 00 44 32 */ cmplwi r0, 0x4432
/* 80334198 40 82 00 1C */ bne lbl_803341B4
/* 8033419C 80 7F 00 04 */ lwz r3, 4(r31)
/* 803341A0 3C 03 9D 94 */ addis r0, r3, 0x9d94
/* 803341A4 28 00 73 32 */ cmplwi r0, 0x7332
/* 803341A8 40 82 00 0C */ bne lbl_803341B4
/* 803341AC 38 60 00 00 */ li r3, 0
/* 803341B0 48 00 00 08 */ b lbl_803341B8
lbl_803341B4:
/* 803341B4 38 60 00 00 */ li r3, 0
lbl_803341B8:
/* 803341B8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803341BC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803341C0 7C 08 03 A6 */ mtlr r0
/* 803341C4 38 21 00 20 */ addi r1, r1, 0x20
/* 803341C8 4E 80 00 20 */ blr
@@ -1,43 +0,0 @@
lbl_802DCB08:
/* 802DCB08 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 802DCB0C 7C 08 02 A6 */ mflr r0
/* 802DCB10 90 01 00 44 */ stw r0, 0x44(r1)
/* 802DCB14 39 61 00 40 */ addi r11, r1, 0x40
/* 802DCB18 48 08 56 C5 */ bl _savegpr_29
/* 802DCB1C 7C 7D 1B 78 */ mr r29, r3
/* 802DCB20 7C 9E 23 78 */ mr r30, r4
/* 802DCB24 80 C6 00 00 */ lwz r6, 0(r6)
/* 802DCB28 90 C1 00 2C */ stw r6, 0x2c(r1)
/* 802DCB2C 80 66 00 00 */ lwz r3, 0(r6)
/* 802DCB30 90 61 00 08 */ stw r3, 8(r1)
/* 802DCB34 90 C1 00 24 */ stw r6, 0x24(r1)
/* 802DCB38 80 04 00 00 */ lwz r0, 0(r4)
/* 802DCB3C 90 01 00 0C */ stw r0, 0xc(r1)
/* 802DCB40 90 01 00 28 */ stw r0, 0x28(r1)
/* 802DCB44 7C 00 30 40 */ cmplw r0, r6
/* 802DCB48 41 82 00 48 */ beq lbl_802DCB90
/* 802DCB4C 90 61 00 1C */ stw r3, 0x1c(r1)
/* 802DCB50 90 01 00 20 */ stw r0, 0x20(r1)
/* 802DCB54 7C 00 18 40 */ cmplw r0, r3
/* 802DCB58 40 82 00 08 */ bne lbl_802DCB60
/* 802DCB5C 48 00 00 34 */ b lbl_802DCB90
lbl_802DCB60:
/* 802DCB60 7C DF 33 78 */ mr r31, r6
/* 802DCB64 38 61 00 18 */ addi r3, r1, 0x18
/* 802DCB68 7C A4 2B 78 */ mr r4, r5
/* 802DCB6C 7C C5 33 78 */ mr r5, r6
/* 802DCB70 48 00 00 65 */ bl Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode
/* 802DCB74 80 1E 00 00 */ lwz r0, 0(r30)
/* 802DCB78 90 01 00 10 */ stw r0, 0x10(r1)
/* 802DCB7C 38 61 00 14 */ addi r3, r1, 0x14
/* 802DCB80 7F A4 EB 78 */ mr r4, r29
/* 802DCB84 38 A1 00 10 */ addi r5, r1, 0x10
/* 802DCB88 7F E6 FB 78 */ mr r6, r31
/* 802DCB8C 48 00 00 1D */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
lbl_802DCB90:
/* 802DCB90 39 61 00 40 */ addi r11, r1, 0x40
/* 802DCB94 48 08 56 95 */ bl _restgpr_29
/* 802DCB98 80 01 00 44 */ lwz r0, 0x44(r1)
/* 802DCB9C 7C 08 03 A6 */ mtlr r0
/* 802DCBA0 38 21 00 40 */ addi r1, r1, 0x40
/* 802DCBA4 4E 80 00 20 */ blr
@@ -1,75 +0,0 @@
lbl_802D76F4:
/* 802D76F4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D76F8 7C 08 02 A6 */ mflr r0
/* 802D76FC 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D7700 39 61 00 20 */ addi r11, r1, 0x20
/* 802D7704 48 08 AA D1 */ bl _savegpr_27
/* 802D7708 7C 9B 23 78 */ mr r27, r4
/* 802D770C 7C BC 2B 78 */ mr r28, r5
/* 802D7710 7C DD 33 78 */ mr r29, r6
/* 802D7714 7C FE 3B 78 */ mr r30, r7
/* 802D7718 83 E6 00 0C */ lwz r31, 0xc(r6)
/* 802D771C 7C 1F E0 40 */ cmplw r31, r28
/* 802D7720 40 81 00 08 */ ble lbl_802D7728
/* 802D7724 7F 9F E3 78 */ mr r31, r28
lbl_802D7728:
/* 802D7728 80 1D 00 04 */ lwz r0, 4(r29)
/* 802D772C 54 04 46 3E */ srwi r4, r0, 0x18
/* 802D7730 54 00 47 7B */ rlwinm. r0, r0, 8, 0x1d, 0x1d
/* 802D7734 40 82 00 0C */ bne lbl_802D7740
/* 802D7738 38 E0 00 00 */ li r7, 0
/* 802D773C 48 00 00 18 */ b lbl_802D7754
lbl_802D7740:
/* 802D7740 54 80 06 31 */ rlwinm. r0, r4, 0, 0x18, 0x18
/* 802D7744 41 82 00 0C */ beq lbl_802D7750
/* 802D7748 38 E0 00 02 */ li r7, 2
/* 802D774C 48 00 00 08 */ b lbl_802D7754
lbl_802D7750:
/* 802D7750 38 E0 00 01 */ li r7, 1
lbl_802D7754:
/* 802D7754 80 1D 00 10 */ lwz r0, 0x10(r29)
/* 802D7758 28 00 00 00 */ cmplwi r0, 0
/* 802D775C 40 82 00 30 */ bne lbl_802D778C
/* 802D7760 57 9C 00 34 */ rlwinm r28, r28, 0, 0, 0x1a
/* 802D7764 80 63 00 64 */ lwz r3, 0x64(r3)
/* 802D7768 80 63 00 14 */ lwz r3, 0x14(r3)
/* 802D776C 80 1D 00 08 */ lwz r0, 8(r29)
/* 802D7770 7C 60 1A 14 */ add r3, r0, r3
/* 802D7774 7F E4 FB 78 */ mr r4, r31
/* 802D7778 7F 65 DB 78 */ mr r5, r27
/* 802D777C 7F 86 E3 78 */ mr r6, r28
/* 802D7780 48 00 00 D9 */ bl fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli
/* 802D7784 7C 7F 1B 78 */ mr r31, r3
/* 802D7788 48 00 00 48 */ b lbl_802D77D0
lbl_802D778C:
/* 802D778C 2C 07 00 02 */ cmpwi r7, 2
/* 802D7790 40 82 00 24 */ bne lbl_802D77B4
/* 802D7794 7F A4 EB 78 */ mr r4, r29
/* 802D7798 81 83 00 00 */ lwz r12, 0(r3)
/* 802D779C 81 8C 00 4C */ lwz r12, 0x4c(r12)
/* 802D77A0 7D 89 03 A6 */ mtctr r12
/* 802D77A4 4E 80 04 21 */ bctrl
/* 802D77A8 28 03 00 00 */ cmplwi r3, 0
/* 802D77AC 41 82 00 08 */ beq lbl_802D77B4
/* 802D77B0 7C 7F 1B 78 */ mr r31, r3
lbl_802D77B4:
/* 802D77B4 7C 1F E0 40 */ cmplw r31, r28
/* 802D77B8 40 81 00 08 */ ble lbl_802D77C0
/* 802D77BC 7F 9F E3 78 */ mr r31, r28
lbl_802D77C0:
/* 802D77C0 7F 63 DB 78 */ mr r3, r27
/* 802D77C4 80 9D 00 10 */ lwz r4, 0x10(r29)
/* 802D77C8 7F E5 FB 78 */ mr r5, r31
/* 802D77CC 4B FF 73 4D */ bl copyMemory__7JKRHeapFPvPvUl
lbl_802D77D0:
/* 802D77D0 28 1E 00 00 */ cmplwi r30, 0
/* 802D77D4 41 82 00 08 */ beq lbl_802D77DC
/* 802D77D8 93 FE 00 00 */ stw r31, 0(r30)
lbl_802D77DC:
/* 802D77DC 7F 63 DB 78 */ mr r3, r27
/* 802D77E0 39 61 00 20 */ addi r11, r1, 0x20
/* 802D77E4 48 08 AA 3D */ bl _restgpr_27
/* 802D77E8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D77EC 7C 08 03 A6 */ mtlr r0
/* 802D77F0 38 21 00 20 */ addi r1, r1, 0x20
/* 802D77F4 4E 80 00 20 */ blr
@@ -1,89 +0,0 @@
lbl_802D7914:
/* 802D7914 94 21 FF 90 */ stwu r1, -0x70(r1)
/* 802D7918 7C 08 02 A6 */ mflr r0
/* 802D791C 90 01 00 74 */ stw r0, 0x74(r1)
/* 802D7920 39 61 00 70 */ addi r11, r1, 0x70
/* 802D7924 48 08 A8 AD */ bl _savegpr_26
/* 802D7928 7C 7C 1B 78 */ mr r28, r3
/* 802D792C 7C 9A 23 78 */ mr r26, r4
/* 802D7930 7C BD 2B 78 */ mr r29, r5
/* 802D7934 7C FE 3B 78 */ mr r30, r7
/* 802D7938 38 1A 00 1F */ addi r0, r26, 0x1f
/* 802D793C 54 1F 00 34 */ rlwinm r31, r0, 0, 0, 0x1a
/* 802D7940 2C 06 00 00 */ cmpwi r6, 0
/* 802D7944 41 82 00 14 */ beq lbl_802D7958
/* 802D7948 41 80 00 E4 */ blt lbl_802D7A2C
/* 802D794C 2C 06 00 03 */ cmpwi r6, 3
/* 802D7950 40 80 00 DC */ bge lbl_802D7A2C
/* 802D7954 48 00 00 44 */ b lbl_802D7998
lbl_802D7958:
/* 802D7958 7F E3 FB 78 */ mr r3, r31
/* 802D795C 38 80 00 20 */ li r4, 0x20
/* 802D7960 4B FF 6B 15 */ bl alloc__7JKRHeapFUliP7JKRHeap
/* 802D7964 7C 7B 1B 78 */ mr r27, r3
/* 802D7968 7F 83 E3 78 */ mr r3, r28
/* 802D796C 7F 64 DB 78 */ mr r4, r27
/* 802D7970 7F E5 FB 78 */ mr r5, r31
/* 802D7974 38 C0 00 00 */ li r6, 0
/* 802D7978 7F E7 FB 78 */ mr r7, r31
/* 802D797C 39 00 00 00 */ li r8, 0
/* 802D7980 39 20 FF FF */ li r9, -1
/* 802D7984 39 40 00 00 */ li r10, 0
/* 802D7988 4B FF AC 2D */ bl aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl
/* 802D798C 93 7E 00 00 */ stw r27, 0(r30)
/* 802D7990 7F 43 D3 78 */ mr r3, r26
/* 802D7994 48 00 00 B8 */ b lbl_802D7A4C
lbl_802D7998:
/* 802D7998 38 01 00 2B */ addi r0, r1, 0x2b
/* 802D799C 54 1B 00 34 */ rlwinm r27, r0, 0, 0, 0x1a
/* 802D79A0 7F 64 DB 78 */ mr r4, r27
/* 802D79A4 38 A0 00 20 */ li r5, 0x20
/* 802D79A8 38 C0 00 00 */ li r6, 0
/* 802D79AC 38 E0 00 00 */ li r7, 0
/* 802D79B0 39 00 00 00 */ li r8, 0
/* 802D79B4 39 20 FF FF */ li r9, -1
/* 802D79B8 39 40 00 00 */ li r10, 0
/* 802D79BC 4B FF AB F9 */ bl aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl
/* 802D79C0 88 BB 00 07 */ lbz r5, 7(r27)
/* 802D79C4 88 9B 00 06 */ lbz r4, 6(r27)
/* 802D79C8 88 7B 00 04 */ lbz r3, 4(r27)
/* 802D79CC 88 1B 00 05 */ lbz r0, 5(r27)
/* 802D79D0 54 00 80 1E */ slwi r0, r0, 0x10
/* 802D79D4 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
/* 802D79D8 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
/* 802D79DC 7C A3 03 78 */ or r3, r5, r0
/* 802D79E0 38 03 00 1F */ addi r0, r3, 0x1f
/* 802D79E4 54 1A 00 34 */ rlwinm r26, r0, 0, 0, 0x1a
/* 802D79E8 7F 43 D3 78 */ mr r3, r26
/* 802D79EC 38 80 00 20 */ li r4, 0x20
/* 802D79F0 7F A5 EB 78 */ mr r5, r29
/* 802D79F4 4B FF 6A 81 */ bl alloc__7JKRHeapFUliP7JKRHeap
/* 802D79F8 7C 7B 1B 78 */ mr r27, r3
/* 802D79FC 7F 83 E3 78 */ mr r3, r28
/* 802D7A00 7F 64 DB 78 */ mr r4, r27
/* 802D7A04 7F E5 FB 78 */ mr r5, r31
/* 802D7A08 38 C0 00 01 */ li r6, 1
/* 802D7A0C 7F 47 D3 78 */ mr r7, r26
/* 802D7A10 7F A8 EB 78 */ mr r8, r29
/* 802D7A14 39 20 FF FF */ li r9, -1
/* 802D7A18 39 41 00 08 */ addi r10, r1, 8
/* 802D7A1C 4B FF AB 99 */ bl aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl
/* 802D7A20 93 7E 00 00 */ stw r27, 0(r30)
/* 802D7A24 80 61 00 08 */ lwz r3, 8(r1)
/* 802D7A28 48 00 00 24 */ b lbl_802D7A4C
lbl_802D7A2C:
/* 802D7A2C 3C 60 80 3A */ lis r3, JKRAramArchive__stringBase0@ha /* 0x8039D188@ha */
/* 802D7A30 38 63 D1 88 */ addi r3, r3, JKRAramArchive__stringBase0@l /* 0x8039D188@l */
/* 802D7A34 38 80 02 C9 */ li r4, 0x2c9
/* 802D7A38 38 A3 00 13 */ addi r5, r3, 0x13
/* 802D7A3C 38 C3 00 16 */ addi r6, r3, 0x16
/* 802D7A40 4C C6 31 82 */ crclr 6
/* 802D7A44 48 00 A7 B9 */ bl panic_f__12JUTExceptionFPCciPCce
/* 802D7A48 38 60 00 00 */ li r3, 0
lbl_802D7A4C:
/* 802D7A4C 39 61 00 70 */ addi r11, r1, 0x70
/* 802D7A50 48 08 A7 CD */ bl _restgpr_26
/* 802D7A54 80 01 00 74 */ lwz r0, 0x74(r1)
/* 802D7A58 7C 08 03 A6 */ mtlr r0
/* 802D7A5C 38 21 00 70 */ addi r1, r1, 0x70
/* 802D7A60 4E 80 00 20 */ blr
@@ -1,18 +0,0 @@
lbl_802DB5E8:
/* 802DB5E8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB5EC 7C 08 02 A6 */ mflr r0
/* 802DB5F0 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB5F4 3C 60 80 43 */ lis r3, sDvdAramAsyncList__16JKRDvdAramRipper@ha /* 0x804343B4@ha */
/* 802DB5F8 38 63 43 B4 */ addi r3, r3, sDvdAramAsyncList__16JKRDvdAramRipper@l /* 0x804343B4@l */
/* 802DB5FC 48 00 09 19 */ bl initiate__10JSUPtrListFv
/* 802DB600 3C 60 80 43 */ lis r3, sDvdAramAsyncList__16JKRDvdAramRipper@ha /* 0x804343B4@ha */
/* 802DB604 38 63 43 B4 */ addi r3, r3, sDvdAramAsyncList__16JKRDvdAramRipper@l /* 0x804343B4@l */
/* 802DB608 3C 80 80 2E */ lis r4, func_802DB62C@ha /* 0x802DB62C@ha */
/* 802DB60C 38 84 B6 2C */ addi r4, r4, func_802DB62C@l /* 0x802DB62C@l */
/* 802DB610 3C A0 80 43 */ lis r5, lit_301@ha /* 0x804343A8@ha */
/* 802DB614 38 A5 43 A8 */ addi r5, r5, lit_301@l /* 0x804343A8@l */
/* 802DB618 48 08 66 0D */ bl __register_global_object
/* 802DB61C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB620 7C 08 03 A6 */ mtlr r0
/* 802DB624 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB628 4E 80 00 20 */ blr
@@ -1,243 +0,0 @@
lbl_802DAA74:
/* 802DAA74 94 21 FF 90 */ stwu r1, -0x70(r1)
/* 802DAA78 7C 08 02 A6 */ mflr r0
/* 802DAA7C 90 01 00 74 */ stw r0, 0x74(r1)
/* 802DAA80 39 61 00 70 */ addi r11, r1, 0x70
/* 802DAA84 48 08 77 49 */ bl _savegpr_25
/* 802DAA88 7C 7D 1B 78 */ mr r29, r3
/* 802DAA8C 3B E0 00 01 */ li r31, 1
/* 802DAA90 83 C3 00 28 */ lwz r30, 0x28(r3)
/* 802DAA94 3B 40 00 00 */ li r26, 0
/* 802DAA98 38 7E 00 34 */ addi r3, r30, 0x34
/* 802DAA9C 48 06 45 A5 */ bl OSLockMutex
/* 802DAAA0 80 7D 00 44 */ lwz r3, 0x44(r29)
/* 802DAAA4 28 03 00 00 */ cmplwi r3, 0
/* 802DAAA8 41 82 00 0C */ beq lbl_802DAAB4
/* 802DAAAC 38 00 00 00 */ li r0, 0
/* 802DAAB0 90 03 00 00 */ stw r0, 0(r3)
lbl_802DAAB4:
/* 802DAAB4 80 1E 00 50 */ lwz r0, 0x50(r30)
/* 802DAAB8 28 00 00 00 */ cmplwi r0, 0
/* 802DAABC 41 82 00 0C */ beq lbl_802DAAC8
/* 802DAAC0 3B E0 00 00 */ li r31, 0
/* 802DAAC4 48 00 02 DC */ b lbl_802DADA0
lbl_802DAAC8:
/* 802DAAC8 48 06 61 BD */ bl OSGetCurrentThread
/* 802DAACC 90 7E 00 50 */ stw r3, 0x50(r30)
/* 802DAAD0 38 60 00 10 */ li r3, 0x10
/* 802DAAD4 80 8D 8D F0 */ lwz r4, sSystemHeap__7JKRHeap(r13)
/* 802DAAD8 38 A0 FF FC */ li r5, -4
/* 802DAADC 4B FF 41 BD */ bl __nw__FUlP7JKRHeapi
/* 802DAAE0 7C 7C 1B 79 */ or. r28, r3, r3
/* 802DAAE4 41 82 00 10 */ beq lbl_802DAAF4
/* 802DAAE8 7F C4 F3 78 */ mr r4, r30
/* 802DAAEC 48 00 1B 4D */ bl __ct__18JSUFileInputStreamFP7JKRFile
/* 802DAAF0 7C 7C 1B 78 */ mr r28, r3
lbl_802DAAF4:
/* 802DAAF4 93 9E 00 54 */ stw r28, 0x54(r30)
/* 802DAAF8 7F C3 F3 78 */ mr r3, r30
/* 802DAAFC 81 9E 00 00 */ lwz r12, 0(r30)
/* 802DAB00 81 8C 00 1C */ lwz r12, 0x1c(r12)
/* 802DAB04 7D 89 03 A6 */ mtctr r12
/* 802DAB08 4E 80 04 21 */ bctrl
/* 802DAB0C 80 1D 00 40 */ lwz r0, 0x40(r29)
/* 802DAB10 28 00 00 00 */ cmplwi r0, 0
/* 802DAB14 41 82 00 10 */ beq lbl_802DAB24
/* 802DAB18 7C 03 00 40 */ cmplw r3, r0
/* 802DAB1C 40 81 00 08 */ ble lbl_802DAB24
/* 802DAB20 7C 03 03 78 */ mr r3, r0
lbl_802DAB24:
/* 802DAB24 38 03 00 1F */ addi r0, r3, 0x1f
/* 802DAB28 54 1B 00 34 */ rlwinm r27, r0, 0, 0, 0x1a
/* 802DAB2C 80 1D 00 34 */ lwz r0, 0x34(r29)
/* 802DAB30 2C 00 00 01 */ cmpwi r0, 1
/* 802DAB34 40 82 00 C8 */ bne lbl_802DABFC
/* 802DAB38 38 01 00 27 */ addi r0, r1, 0x27
/* 802DAB3C 54 19 00 34 */ rlwinm r25, r0, 0, 0, 0x1a
lbl_802DAB40:
/* 802DAB40 38 7E 00 5C */ addi r3, r30, 0x5c
/* 802DAB44 7F 24 CB 78 */ mr r4, r25
/* 802DAB48 38 A0 00 20 */ li r5, 0x20
/* 802DAB4C 38 C0 00 00 */ li r6, 0
/* 802DAB50 38 E0 00 02 */ li r7, 2
/* 802DAB54 48 06 E2 F1 */ bl DVDReadPrio
/* 802DAB58 2C 03 00 00 */ cmpwi r3, 0
/* 802DAB5C 40 80 00 40 */ bge lbl_802DAB9C
/* 802DAB60 88 0D 83 50 */ lbz r0, data_804508D0(r13)
/* 802DAB64 28 00 00 00 */ cmplwi r0, 0
/* 802DAB68 40 82 00 2C */ bne lbl_802DAB94
/* 802DAB6C 28 1C 00 00 */ cmplwi r28, 0
/* 802DAB70 41 82 00 1C */ beq lbl_802DAB8C
/* 802DAB74 7F 83 E3 78 */ mr r3, r28
/* 802DAB78 38 80 00 01 */ li r4, 1
/* 802DAB7C 81 9C 00 00 */ lwz r12, 0(r28)
/* 802DAB80 81 8C 00 08 */ lwz r12, 8(r12)
/* 802DAB84 7D 89 03 A6 */ mtctr r12
/* 802DAB88 4E 80 04 21 */ bctrl
lbl_802DAB8C:
/* 802DAB8C 38 60 00 00 */ li r3, 0
/* 802DAB90 48 00 02 30 */ b lbl_802DADC0
lbl_802DAB94:
/* 802DAB94 48 07 1E 31 */ bl VIWaitForRetrace
/* 802DAB98 4B FF FF A8 */ b lbl_802DAB40
lbl_802DAB9C:
/* 802DAB9C 7F 23 CB 78 */ mr r3, r25
/* 802DABA0 38 80 00 20 */ li r4, 0x20
/* 802DABA4 48 06 09 DD */ bl DCInvalidateRange
/* 802DABA8 7F 23 CB 78 */ mr r3, r25
/* 802DABAC 48 00 11 4D */ bl checkCompressed__9JKRDecompFPUc
/* 802DABB0 2C 03 00 03 */ cmpwi r3, 3
/* 802DABB4 40 82 00 08 */ bne lbl_802DABBC
/* 802DABB8 38 60 00 00 */ li r3, 0
lbl_802DABBC:
/* 802DABBC 7C 7A 1B 78 */ mr r26, r3
/* 802DABC0 88 B9 00 07 */ lbz r5, 7(r25)
/* 802DABC4 88 99 00 06 */ lbz r4, 6(r25)
/* 802DABC8 88 79 00 04 */ lbz r3, 4(r25)
/* 802DABCC 88 19 00 05 */ lbz r0, 5(r25)
/* 802DABD0 54 00 80 1E */ slwi r0, r0, 0x10
/* 802DABD4 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
/* 802DABD8 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
/* 802DABDC 7C A0 03 78 */ or r0, r5, r0
/* 802DABE0 7C 19 03 78 */ mr r25, r0
/* 802DABE4 80 7D 00 40 */ lwz r3, 0x40(r29)
/* 802DABE8 28 03 00 00 */ cmplwi r3, 0
/* 802DABEC 41 82 00 10 */ beq lbl_802DABFC
/* 802DABF0 7C 00 18 40 */ cmplw r0, r3
/* 802DABF4 40 81 00 08 */ ble lbl_802DABFC
/* 802DABF8 7C 79 1B 78 */ mr r25, r3
lbl_802DABFC:
/* 802DABFC 2C 1A 00 00 */ cmpwi r26, 0
/* 802DAC00 40 82 00 0C */ bne lbl_802DAC0C
/* 802DAC04 38 00 00 00 */ li r0, 0
/* 802DAC08 90 1D 00 34 */ stw r0, 0x34(r29)
lbl_802DAC0C:
/* 802DAC0C 80 1D 00 34 */ lwz r0, 0x34(r29)
/* 802DAC10 2C 00 00 01 */ cmpwi r0, 1
/* 802DAC14 40 82 00 80 */ bne lbl_802DAC94
/* 802DAC18 80 1D 00 2C */ lwz r0, 0x2c(r29)
/* 802DAC1C 28 00 00 00 */ cmplwi r0, 0
/* 802DAC20 40 82 00 44 */ bne lbl_802DAC64
/* 802DAC24 80 1D 00 30 */ lwz r0, 0x30(r29)
/* 802DAC28 28 00 00 00 */ cmplwi r0, 0
/* 802DAC2C 40 82 00 38 */ bne lbl_802DAC64
/* 802DAC30 80 6D 8E 48 */ lwz r3, sAramObject__7JKRAram(r13)
/* 802DAC34 80 63 00 94 */ lwz r3, 0x94(r3)
/* 802DAC38 7F 24 CB 78 */ mr r4, r25
/* 802DAC3C 38 A0 00 00 */ li r5, 0
/* 802DAC40 4B FF 83 7D */ bl alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode
/* 802DAC44 90 7D 00 30 */ stw r3, 0x30(r29)
/* 802DAC48 80 7D 00 30 */ lwz r3, 0x30(r29)
/* 802DAC4C 28 03 00 00 */ cmplwi r3, 0
/* 802DAC50 41 82 00 0C */ beq lbl_802DAC5C
/* 802DAC54 80 03 00 14 */ lwz r0, 0x14(r3)
/* 802DAC58 90 1D 00 2C */ stw r0, 0x2c(r29)
lbl_802DAC5C:
/* 802DAC5C 80 1D 00 30 */ lwz r0, 0x30(r29)
/* 802DAC60 90 1E 00 4C */ stw r0, 0x4c(r30)
lbl_802DAC64:
/* 802DAC64 80 7D 00 30 */ lwz r3, 0x30(r29)
/* 802DAC68 28 03 00 00 */ cmplwi r3, 0
/* 802DAC6C 41 82 00 0C */ beq lbl_802DAC78
/* 802DAC70 80 03 00 14 */ lwz r0, 0x14(r3)
/* 802DAC74 90 1D 00 2C */ stw r0, 0x2c(r29)
lbl_802DAC78:
/* 802DAC78 80 1D 00 2C */ lwz r0, 0x2c(r29)
/* 802DAC7C 28 00 00 00 */ cmplwi r0, 0
/* 802DAC80 40 82 00 74 */ bne lbl_802DACF4
/* 802DAC84 38 00 00 00 */ li r0, 0
/* 802DAC88 90 1E 00 50 */ stw r0, 0x50(r30)
/* 802DAC8C 38 60 00 00 */ li r3, 0
/* 802DAC90 48 00 01 30 */ b lbl_802DADC0
lbl_802DAC94:
/* 802DAC94 80 1D 00 2C */ lwz r0, 0x2c(r29)
/* 802DAC98 28 00 00 00 */ cmplwi r0, 0
/* 802DAC9C 40 82 00 28 */ bne lbl_802DACC4
/* 802DACA0 80 1D 00 30 */ lwz r0, 0x30(r29)
/* 802DACA4 28 00 00 00 */ cmplwi r0, 0
/* 802DACA8 40 82 00 1C */ bne lbl_802DACC4
/* 802DACAC 80 6D 8E 48 */ lwz r3, sAramObject__7JKRAram(r13)
/* 802DACB0 80 63 00 94 */ lwz r3, 0x94(r3)
/* 802DACB4 7F 64 DB 78 */ mr r4, r27
/* 802DACB8 38 A0 00 00 */ li r5, 0
/* 802DACBC 4B FF 83 01 */ bl alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode
/* 802DACC0 90 7D 00 30 */ stw r3, 0x30(r29)
lbl_802DACC4:
/* 802DACC4 80 7D 00 30 */ lwz r3, 0x30(r29)
/* 802DACC8 28 03 00 00 */ cmplwi r3, 0
/* 802DACCC 41 82 00 0C */ beq lbl_802DACD8
/* 802DACD0 80 03 00 14 */ lwz r0, 0x14(r3)
/* 802DACD4 90 1D 00 2C */ stw r0, 0x2c(r29)
lbl_802DACD8:
/* 802DACD8 80 1D 00 2C */ lwz r0, 0x2c(r29)
/* 802DACDC 28 00 00 00 */ cmplwi r0, 0
/* 802DACE0 40 82 00 14 */ bne lbl_802DACF4
/* 802DACE4 38 00 00 00 */ li r0, 0
/* 802DACE8 90 1E 00 50 */ stw r0, 0x50(r30)
/* 802DACEC 38 60 00 00 */ li r3, 0
/* 802DACF0 48 00 00 D0 */ b lbl_802DADC0
lbl_802DACF4:
/* 802DACF4 2C 1A 00 00 */ cmpwi r26, 0
/* 802DACF8 40 82 00 24 */ bne lbl_802DAD1C
/* 802DACFC 80 9D 00 2C */ lwz r4, 0x2c(r29)
/* 802DAD00 80 DD 00 3C */ lwz r6, 0x3c(r29)
/* 802DAD04 7F 83 E3 78 */ mr r3, r28
/* 802DAD08 7C A6 D8 50 */ subf r5, r6, r27
/* 802DAD0C 80 FD 00 44 */ lwz r7, 0x44(r29)
/* 802DAD10 4B FF 91 C1 */ bl write_StreamToAram_Async__13JKRAramStreamFP18JSUFileInputStreamUlUlUlPUl
/* 802DAD14 90 7D 00 50 */ stw r3, 0x50(r29)
/* 802DAD18 48 00 00 5C */ b lbl_802DAD74
lbl_802DAD1C:
/* 802DAD1C 2C 1A 00 01 */ cmpwi r26, 1
/* 802DAD20 40 82 00 24 */ bne lbl_802DAD44
/* 802DAD24 80 9D 00 2C */ lwz r4, 0x2c(r29)
/* 802DAD28 80 DD 00 3C */ lwz r6, 0x3c(r29)
/* 802DAD2C 7F 83 E3 78 */ mr r3, r28
/* 802DAD30 7C A6 D8 50 */ subf r5, r6, r27
/* 802DAD34 80 FD 00 44 */ lwz r7, 0x44(r29)
/* 802DAD38 4B FF 91 99 */ bl write_StreamToAram_Async__13JKRAramStreamFP18JSUFileInputStreamUlUlUlPUl
/* 802DAD3C 90 7D 00 50 */ stw r3, 0x50(r29)
/* 802DAD40 48 00 00 34 */ b lbl_802DAD74
lbl_802DAD44:
/* 802DAD44 2C 1A 00 02 */ cmpwi r26, 2
/* 802DAD48 40 82 00 2C */ bne lbl_802DAD74
/* 802DAD4C 38 00 00 00 */ li r0, 0
/* 802DAD50 90 1D 00 50 */ stw r0, 0x50(r29)
/* 802DAD54 80 7D 00 28 */ lwz r3, 0x28(r29)
/* 802DAD58 80 9D 00 2C */ lwz r4, 0x2c(r29)
/* 802DAD5C 7F 65 DB 78 */ mr r5, r27
/* 802DAD60 7F 26 CB 78 */ mr r6, r25
/* 802DAD64 80 FD 00 3C */ lwz r7, 0x3c(r29)
/* 802DAD68 39 00 00 00 */ li r8, 0
/* 802DAD6C 81 3D 00 44 */ lwz r9, 0x44(r29)
/* 802DAD70 48 00 02 79 */ bl JKRDecompressFromDVDToAram__FP10JKRDvdFileUlUlUlUlUlPUl
lbl_802DAD74:
/* 802DAD74 81 9D 00 38 */ lwz r12, 0x38(r29)
/* 802DAD78 28 0C 00 00 */ cmplwi r12, 0
/* 802DAD7C 40 82 00 18 */ bne lbl_802DAD94
/* 802DAD80 3C 60 80 43 */ lis r3, sDvdAramAsyncList__16JKRDvdAramRipper@ha /* 0x804343B4@ha */
/* 802DAD84 38 63 43 B4 */ addi r3, r3, sDvdAramAsyncList__16JKRDvdAramRipper@l /* 0x804343B4@l */
/* 802DAD88 7F A4 EB 78 */ mr r4, r29
/* 802DAD8C 48 00 11 C1 */ bl append__10JSUPtrListFP10JSUPtrLink
/* 802DAD90 48 00 00 10 */ b lbl_802DADA0
lbl_802DAD94:
/* 802DAD94 7F A3 EB 78 */ mr r3, r29
/* 802DAD98 7D 89 03 A6 */ mtctr r12
/* 802DAD9C 4E 80 04 21 */ bctrl
lbl_802DADA0:
/* 802DADA0 38 7E 00 34 */ addi r3, r30, 0x34
/* 802DADA4 48 06 43 79 */ bl OSUnlockMutex
/* 802DADA8 57 E0 06 3E */ clrlwi r0, r31, 0x18
/* 802DADAC 28 00 00 01 */ cmplwi r0, 1
/* 802DADB0 40 82 00 0C */ bne lbl_802DADBC
/* 802DADB4 7F A3 EB 78 */ mr r3, r29
/* 802DADB8 48 00 00 08 */ b lbl_802DADC0
lbl_802DADBC:
/* 802DADBC 38 60 00 00 */ li r3, 0
lbl_802DADC0:
/* 802DADC0 39 61 00 70 */ addi r11, r1, 0x70
/* 802DADC4 48 08 74 55 */ bl _restgpr_25
/* 802DADC8 80 01 00 74 */ lwz r0, 0x74(r1)
/* 802DADCC 7C 08 03 A6 */ mtlr r0
/* 802DADD0 38 21 00 70 */ addi r1, r1, 0x70
/* 802DADD4 4E 80 00 20 */ blr
@@ -1,183 +0,0 @@
lbl_802DB160:
/* 802DB160 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 802DB164 7C 08 02 A6 */ mflr r0
/* 802DB168 90 01 00 34 */ stw r0, 0x34(r1)
/* 802DB16C 39 61 00 30 */ addi r11, r1, 0x30
/* 802DB170 48 08 70 55 */ bl _savegpr_23
/* 802DB174 7C 98 23 78 */ mr r24, r4
/* 802DB178 3B A0 00 00 */ li r29, 0
/* 802DB17C 3B 80 00 00 */ li r28, 0
/* 802DB180 3B 40 00 00 */ li r26, 0
/* 802DB184 7F 19 C3 78 */ mr r25, r24
/* 802DB188 88 03 00 00 */ lbz r0, 0(r3)
/* 802DB18C 2C 00 00 59 */ cmpwi r0, 0x59
/* 802DB190 40 82 00 28 */ bne lbl_802DB1B8
/* 802DB194 88 03 00 01 */ lbz r0, 1(r3)
/* 802DB198 2C 00 00 61 */ cmpwi r0, 0x61
/* 802DB19C 40 82 00 1C */ bne lbl_802DB1B8
/* 802DB1A0 88 03 00 02 */ lbz r0, 2(r3)
/* 802DB1A4 2C 00 00 7A */ cmpwi r0, 0x7a
/* 802DB1A8 40 82 00 10 */ bne lbl_802DB1B8
/* 802DB1AC 88 03 00 03 */ lbz r0, 3(r3)
/* 802DB1B0 2C 00 00 30 */ cmpwi r0, 0x30
/* 802DB1B4 41 82 00 0C */ beq lbl_802DB1C0
lbl_802DB1B8:
/* 802DB1B8 38 60 FF FF */ li r3, -1
/* 802DB1BC 48 00 02 14 */ b lbl_802DB3D0
lbl_802DB1C0:
/* 802DB1C0 80 8D 8F 18 */ lwz r4, fileOffset(r13)
/* 802DB1C4 80 03 00 04 */ lwz r0, 4(r3)
/* 802DB1C8 7C 04 00 50 */ subf r0, r4, r0
/* 802DB1CC 7F F8 02 14 */ add r31, r24, r0
/* 802DB1D0 80 0D 8F 20 */ lwz r0, maxDest(r13)
/* 802DB1D4 7C 18 02 14 */ add r0, r24, r0
/* 802DB1D8 7C 1F 00 40 */ cmplw r31, r0
/* 802DB1DC 40 81 00 08 */ ble lbl_802DB1E4
/* 802DB1E0 7C 1F 03 78 */ mr r31, r0
lbl_802DB1E4:
/* 802DB1E4 3A E3 00 10 */ addi r23, r3, 0x10
lbl_802DB1E8:
/* 802DB1E8 2C 1D 00 00 */ cmpwi r29, 0
/* 802DB1EC 40 82 00 34 */ bne lbl_802DB220
/* 802DB1F0 80 0D 8F 10 */ lwz r0, srcLimit(r13)
/* 802DB1F4 7C 17 00 40 */ cmplw r23, r0
/* 802DB1F8 40 81 00 1C */ ble lbl_802DB214
/* 802DB1FC 80 0D 8F 0C */ lwz r0, transLeft(r13)
/* 802DB200 28 00 00 00 */ cmplwi r0, 0
/* 802DB204 41 82 00 10 */ beq lbl_802DB214
/* 802DB208 7E E3 BB 78 */ mr r3, r23
/* 802DB20C 48 00 02 91 */ bl nextSrcData__FPUc
/* 802DB210 7C 77 1B 78 */ mr r23, r3
lbl_802DB214:
/* 802DB214 8B 97 00 00 */ lbz r28, 0(r23)
/* 802DB218 3B A0 00 08 */ li r29, 8
/* 802DB21C 3A F7 00 01 */ addi r23, r23, 1
lbl_802DB220:
/* 802DB220 57 80 06 31 */ rlwinm. r0, r28, 0, 0x18, 0x18
/* 802DB224 41 82 00 94 */ beq lbl_802DB2B8
/* 802DB228 80 6D 8F 1C */ lwz r3, readCount(r13)
/* 802DB22C 80 0D 8F 18 */ lwz r0, fileOffset(r13)
/* 802DB230 7C 03 00 40 */ cmplw r3, r0
/* 802DB234 41 80 00 44 */ blt lbl_802DB278
/* 802DB238 88 97 00 00 */ lbz r4, 0(r23)
/* 802DB23C 80 6D 8F 04 */ lwz r3, dmaCurrent(r13)
/* 802DB240 38 03 00 01 */ addi r0, r3, 1
/* 802DB244 90 0D 8F 04 */ stw r0, dmaCurrent(r13)
/* 802DB248 98 83 00 00 */ stb r4, 0(r3)
/* 802DB24C 80 6D 8F 04 */ lwz r3, dmaCurrent(r13)
/* 802DB250 80 0D 8F 00 */ lwz r0, dmaEnd(r13)
/* 802DB254 7C 03 00 40 */ cmplw r3, r0
/* 802DB258 3B 18 00 01 */ addi r24, r24, 1
/* 802DB25C 3B 5A 00 01 */ addi r26, r26, 1
/* 802DB260 40 82 00 10 */ bne lbl_802DB270
/* 802DB264 7F 23 CB 78 */ mr r3, r25
/* 802DB268 48 00 03 19 */ bl dmaBufferFlush__FUl
/* 802DB26C 7F 39 1A 14 */ add r25, r25, r3
lbl_802DB270:
/* 802DB270 7C 18 F8 40 */ cmplw r24, r31
/* 802DB274 41 82 01 48 */ beq lbl_802DB3BC
lbl_802DB278:
/* 802DB278 88 97 00 00 */ lbz r4, 0(r23)
/* 802DB27C 80 6D 8E F8 */ lwz r3, refCurrent(r13)
/* 802DB280 38 03 00 01 */ addi r0, r3, 1
/* 802DB284 90 0D 8E F8 */ stw r0, refCurrent(r13)
/* 802DB288 98 83 00 00 */ stb r4, 0(r3)
/* 802DB28C 80 6D 8E F8 */ lwz r3, refCurrent(r13)
/* 802DB290 80 0D 8E F4 */ lwz r0, refEnd(r13)
/* 802DB294 7C 03 00 40 */ cmplw r3, r0
/* 802DB298 40 82 00 0C */ bne lbl_802DB2A4
/* 802DB29C 80 0D 8E F0 */ lwz r0, refBuf(r13)
/* 802DB2A0 90 0D 8E F8 */ stw r0, refCurrent(r13)
lbl_802DB2A4:
/* 802DB2A4 80 6D 8F 1C */ lwz r3, readCount(r13)
/* 802DB2A8 38 03 00 01 */ addi r0, r3, 1
/* 802DB2AC 90 0D 8F 1C */ stw r0, readCount(r13)
/* 802DB2B0 3A F7 00 01 */ addi r23, r23, 1
/* 802DB2B4 48 00 00 F8 */ b lbl_802DB3AC
lbl_802DB2B8:
/* 802DB2B8 88 77 00 00 */ lbz r3, 0(r23)
/* 802DB2BC 88 97 00 01 */ lbz r4, 1(r23)
/* 802DB2C0 50 64 45 2E */ rlwimi r4, r3, 8, 0x14, 0x17
/* 802DB2C4 7C 7B 26 70 */ srawi r27, r3, 4
/* 802DB2C8 80 0D 8E F8 */ lwz r0, refCurrent(r13)
/* 802DB2CC 7C 64 00 50 */ subf r3, r4, r0
/* 802DB2D0 3B C3 FF FF */ addi r30, r3, -1
/* 802DB2D4 80 6D 8E F0 */ lwz r3, refBuf(r13)
/* 802DB2D8 7C 1E 18 40 */ cmplw r30, r3
/* 802DB2DC 3A F7 00 02 */ addi r23, r23, 2
/* 802DB2E0 40 80 00 10 */ bge lbl_802DB2F0
/* 802DB2E4 80 0D 8E F4 */ lwz r0, refEnd(r13)
/* 802DB2E8 7C 03 00 50 */ subf r0, r3, r0
/* 802DB2EC 7F DE 02 14 */ add r30, r30, r0
lbl_802DB2F0:
/* 802DB2F0 2C 1B 00 00 */ cmpwi r27, 0
/* 802DB2F4 40 82 00 14 */ bne lbl_802DB308
/* 802DB2F8 88 77 00 00 */ lbz r3, 0(r23)
/* 802DB2FC 3B 63 00 12 */ addi r27, r3, 0x12
/* 802DB300 3A F7 00 01 */ addi r23, r23, 1
/* 802DB304 48 00 00 08 */ b lbl_802DB30C
lbl_802DB308:
/* 802DB308 3B 7B 00 02 */ addi r27, r27, 2
lbl_802DB30C:
/* 802DB30C 80 6D 8F 1C */ lwz r3, readCount(r13)
/* 802DB310 80 0D 8F 18 */ lwz r0, fileOffset(r13)
/* 802DB314 7C 03 00 40 */ cmplw r3, r0
/* 802DB318 41 80 00 44 */ blt lbl_802DB35C
/* 802DB31C 88 9E 00 00 */ lbz r4, 0(r30)
/* 802DB320 80 6D 8F 04 */ lwz r3, dmaCurrent(r13)
/* 802DB324 38 03 00 01 */ addi r0, r3, 1
/* 802DB328 90 0D 8F 04 */ stw r0, dmaCurrent(r13)
/* 802DB32C 98 83 00 00 */ stb r4, 0(r3)
/* 802DB330 80 6D 8F 04 */ lwz r3, dmaCurrent(r13)
/* 802DB334 80 0D 8F 00 */ lwz r0, dmaEnd(r13)
/* 802DB338 7C 03 00 40 */ cmplw r3, r0
/* 802DB33C 3B 18 00 01 */ addi r24, r24, 1
/* 802DB340 3B 5A 00 01 */ addi r26, r26, 1
/* 802DB344 40 82 00 10 */ bne lbl_802DB354
/* 802DB348 7F 23 CB 78 */ mr r3, r25
/* 802DB34C 48 00 02 35 */ bl dmaBufferFlush__FUl
/* 802DB350 7F 39 1A 14 */ add r25, r25, r3
lbl_802DB354:
/* 802DB354 7C 18 F8 40 */ cmplw r24, r31
/* 802DB358 41 82 00 54 */ beq lbl_802DB3AC
lbl_802DB35C:
/* 802DB35C 88 9E 00 00 */ lbz r4, 0(r30)
/* 802DB360 80 6D 8E F8 */ lwz r3, refCurrent(r13)
/* 802DB364 38 03 00 01 */ addi r0, r3, 1
/* 802DB368 90 0D 8E F8 */ stw r0, refCurrent(r13)
/* 802DB36C 98 83 00 00 */ stb r4, 0(r3)
/* 802DB370 80 0D 8E F8 */ lwz r0, refCurrent(r13)
/* 802DB374 80 6D 8E F4 */ lwz r3, refEnd(r13)
/* 802DB378 7C 00 18 40 */ cmplw r0, r3
/* 802DB37C 40 82 00 0C */ bne lbl_802DB388
/* 802DB380 80 0D 8E F0 */ lwz r0, refBuf(r13)
/* 802DB384 90 0D 8E F8 */ stw r0, refCurrent(r13)
lbl_802DB388:
/* 802DB388 3B DE 00 01 */ addi r30, r30, 1
/* 802DB38C 7C 1E 18 40 */ cmplw r30, r3
/* 802DB390 40 82 00 08 */ bne lbl_802DB398
/* 802DB394 83 CD 8E F0 */ lwz r30, refBuf(r13)
lbl_802DB398:
/* 802DB398 80 6D 8F 1C */ lwz r3, readCount(r13)
/* 802DB39C 38 03 00 01 */ addi r0, r3, 1
/* 802DB3A0 90 0D 8F 1C */ stw r0, readCount(r13)
/* 802DB3A4 37 7B FF FF */ addic. r27, r27, -1
/* 802DB3A8 40 82 FF 64 */ bne lbl_802DB30C
lbl_802DB3AC:
/* 802DB3AC 57 9C 08 3C */ slwi r28, r28, 1
/* 802DB3B0 7C 18 F8 40 */ cmplw r24, r31
/* 802DB3B4 3B BD FF FF */ addi r29, r29, -1
/* 802DB3B8 41 80 FE 30 */ blt lbl_802DB1E8
lbl_802DB3BC:
/* 802DB3BC 7F 23 CB 78 */ mr r3, r25
/* 802DB3C0 48 00 01 C1 */ bl dmaBufferFlush__FUl
/* 802DB3C4 80 6D 8F 28 */ lwz r3, tsPtr(r13)
/* 802DB3C8 93 43 00 00 */ stw r26, 0(r3)
/* 802DB3CC 38 60 00 00 */ li r3, 0
lbl_802DB3D0:
/* 802DB3D0 39 61 00 30 */ addi r11, r1, 0x30
/* 802DB3D4 48 08 6E 3D */ bl _restgpr_23
/* 802DB3D8 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802DB3DC 7C 08 03 A6 */ mtlr r0
/* 802DB3E0 38 21 00 30 */ addi r1, r1, 0x30
/* 802DB3E4 4E 80 00 20 */ blr
@@ -1,29 +0,0 @@
lbl_802DB580:
/* 802DB580 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB584 7C 08 02 A6 */ mflr r0
/* 802DB588 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB58C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB590 7C 65 1B 78 */ mr r5, r3
/* 802DB594 80 0D 8F 04 */ lwz r0, dmaCurrent(r13)
/* 802DB598 80 8D 8E FC */ lwz r4, dmaBuf(r13)
/* 802DB59C 7C 00 20 40 */ cmplw r0, r4
/* 802DB5A0 40 82 00 0C */ bne lbl_802DB5AC
/* 802DB5A4 38 60 00 00 */ li r3, 0
/* 802DB5A8 48 00 00 2C */ b lbl_802DB5D4
lbl_802DB5AC:
/* 802DB5AC 7C 64 00 50 */ subf r3, r4, r0
/* 802DB5B0 38 03 00 1F */ addi r0, r3, 0x1f
/* 802DB5B4 54 1F 00 34 */ rlwinm r31, r0, 0, 0, 0x1a
/* 802DB5B8 38 60 00 00 */ li r3, 0
/* 802DB5BC 7F E6 FB 78 */ mr r6, r31
/* 802DB5C0 38 E0 00 00 */ li r7, 0
/* 802DB5C4 4B FF 82 75 */ bl orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock
/* 802DB5C8 80 0D 8E FC */ lwz r0, dmaBuf(r13)
/* 802DB5CC 90 0D 8F 04 */ stw r0, dmaCurrent(r13)
/* 802DB5D0 7F E3 FB 78 */ mr r3, r31
lbl_802DB5D4:
/* 802DB5D4 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB5D8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB5DC 7C 08 03 A6 */ mtlr r0
/* 802DB5E0 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB5E4 4E 80 00 20 */ blr
@@ -1,50 +0,0 @@
lbl_802DB3E8:
/* 802DB3E8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB3EC 7C 08 02 A6 */ mflr r0
/* 802DB3F0 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB3F4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB3F8 93 C1 00 08 */ stw r30, 8(r1)
/* 802DB3FC 80 6D 8E EC */ lwz r3, szpEnd(r13)
/* 802DB400 38 03 FF E7 */ addi r0, r3, -25
/* 802DB404 90 0D 8F 10 */ stw r0, srcLimit(r13)
/* 802DB408 80 0D 8E E8 */ lwz r0, szpBuf(r13)
/* 802DB40C 7C 1E 03 78 */ mr r30, r0
/* 802DB410 7C 60 18 50 */ subf r3, r0, r3
/* 802DB414 80 0D 8F 0C */ lwz r0, transLeft(r13)
/* 802DB418 7C 00 18 40 */ cmplw r0, r3
/* 802DB41C 7C 7F 1B 78 */ mr r31, r3
/* 802DB420 40 80 00 08 */ bge lbl_802DB428
/* 802DB424 7C 1F 03 78 */ mr r31, r0
lbl_802DB428:
/* 802DB428 80 6D 8F 14 */ lwz r3, srcFile(r13)
/* 802DB42C 38 63 00 5C */ addi r3, r3, 0x5c
/* 802DB430 7F C4 F3 78 */ mr r4, r30
/* 802DB434 7F E5 FB 78 */ mr r5, r31
/* 802DB438 38 C0 00 00 */ li r6, 0
/* 802DB43C 38 E0 00 02 */ li r7, 2
/* 802DB440 48 06 DA 05 */ bl DVDReadPrio
/* 802DB444 2C 03 00 00 */ cmpwi r3, 0
/* 802DB448 40 80 00 20 */ bge lbl_802DB468
/* 802DB44C 88 0D 83 50 */ lbz r0, data_804508D0(r13)
/* 802DB450 28 00 00 00 */ cmplwi r0, 0
/* 802DB454 40 82 00 0C */ bne lbl_802DB460
/* 802DB458 38 60 00 00 */ li r3, 0
/* 802DB45C 48 00 00 28 */ b lbl_802DB484
lbl_802DB460:
/* 802DB460 48 07 15 65 */ bl VIWaitForRetrace
/* 802DB464 4B FF FF C4 */ b lbl_802DB428
lbl_802DB468:
/* 802DB468 80 0D 8F 08 */ lwz r0, srcOffset(r13)
/* 802DB46C 7C 00 FA 14 */ add r0, r0, r31
/* 802DB470 90 0D 8F 08 */ stw r0, srcOffset(r13)
/* 802DB474 80 0D 8F 0C */ lwz r0, transLeft(r13)
/* 802DB478 7C 1F 00 50 */ subf r0, r31, r0
/* 802DB47C 90 0D 8F 0C */ stw r0, transLeft(r13)
/* 802DB480 7F C3 F3 78 */ mr r3, r30
lbl_802DB484:
/* 802DB484 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB488 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB48C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB490 7C 08 03 A6 */ mtlr r0
/* 802DB494 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB498 4E 80 00 20 */ blr
@@ -1,23 +0,0 @@
lbl_802DB62C:
/* 802DB62C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB630 7C 08 02 A6 */ mflr r0
/* 802DB634 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB638 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB63C 93 C1 00 08 */ stw r30, 8(r1)
/* 802DB640 7C 7E 1B 79 */ or. r30, r3, r3
/* 802DB644 7C 9F 23 78 */ mr r31, r4
/* 802DB648 41 82 00 1C */ beq lbl_802DB664
/* 802DB64C 38 80 00 00 */ li r4, 0
/* 802DB650 48 00 08 5D */ bl __dt__10JSUPtrListFv
/* 802DB654 7F E0 07 35 */ extsh. r0, r31
/* 802DB658 40 81 00 0C */ ble lbl_802DB664
/* 802DB65C 7F C3 F3 78 */ mr r3, r30
/* 802DB660 4B FF 36 DD */ bl __dl__FPv
lbl_802DB664:
/* 802DB664 7F C3 F3 78 */ mr r3, r30
/* 802DB668 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB66C 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB670 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB674 7C 08 03 A6 */ mtlr r0
/* 802DB678 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB67C 4E 80 00 20 */ blr
@@ -36,7 +36,7 @@ lbl_802DB500:
/* 802DB518 48 06 D9 2D */ bl DVDReadPrio
/* 802DB51C 2C 03 00 00 */ cmpwi r3, 0
/* 802DB520 40 80 00 20 */ bge lbl_802DB540
/* 802DB524 88 0D 83 50 */ lbz r0, data_804508D0(r13)
/* 802DB524 88 0D 83 50 */ lbz r0, errorRetry__16JKRDvdAramRipper(r13)
/* 802DB528 28 00 00 00 */ cmplwi r0, 0
/* 802DB52C 40 82 00 0C */ bne lbl_802DB538
/* 802DB530 38 60 00 00 */ li r3, 0
@@ -1,58 +0,0 @@
lbl_802DAE48:
/* 802DAE48 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DAE4C 7C 08 02 A6 */ mflr r0
/* 802DAE50 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DAE54 39 61 00 20 */ addi r11, r1, 0x20
/* 802DAE58 48 08 73 85 */ bl _savegpr_29
/* 802DAE5C 7C 7D 1B 78 */ mr r29, r3
/* 802DAE60 7C 9E 23 78 */ mr r30, r4
/* 802DAE64 83 E3 00 28 */ lwz r31, 0x28(r3)
/* 802DAE68 38 7F 00 34 */ addi r3, r31, 0x34
/* 802DAE6C 48 06 41 D5 */ bl OSLockMutex
/* 802DAE70 80 7D 00 50 */ lwz r3, 0x50(r29)
/* 802DAE74 28 03 00 00 */ cmplwi r3, 0
/* 802DAE78 41 82 00 38 */ beq lbl_802DAEB0
/* 802DAE7C 7F C4 F3 78 */ mr r4, r30
/* 802DAE80 4B FF 91 21 */ bl sync__13JKRAramStreamFP20JKRAramStreamCommandi
/* 802DAE84 30 03 FF FF */ addic r0, r3, -1
/* 802DAE88 7C 00 01 10 */ subfe r0, r0, r0
/* 802DAE8C 90 1D 00 48 */ stw r0, 0x48(r29)
/* 802DAE90 2C 1E 00 00 */ cmpwi r30, 0
/* 802DAE94 41 82 00 1C */ beq lbl_802DAEB0
/* 802DAE98 28 03 00 00 */ cmplwi r3, 0
/* 802DAE9C 40 82 00 14 */ bne lbl_802DAEB0
/* 802DAEA0 38 7F 00 34 */ addi r3, r31, 0x34
/* 802DAEA4 48 06 42 79 */ bl OSUnlockMutex
/* 802DAEA8 38 60 00 00 */ li r3, 0
/* 802DAEAC 48 00 00 58 */ b lbl_802DAF04
lbl_802DAEB0:
/* 802DAEB0 3C 60 80 43 */ lis r3, sDvdAramAsyncList__16JKRDvdAramRipper@ha /* 0x804343B4@ha */
/* 802DAEB4 38 63 43 B4 */ addi r3, r3, sDvdAramAsyncList__16JKRDvdAramRipper@l /* 0x804343B4@l */
/* 802DAEB8 7F A4 EB 78 */ mr r4, r29
/* 802DAEBC 48 00 12 A1 */ bl remove__10JSUPtrListFP10JSUPtrLink
/* 802DAEC0 80 7D 00 50 */ lwz r3, 0x50(r29)
/* 802DAEC4 28 03 00 00 */ cmplwi r3, 0
/* 802DAEC8 41 82 00 08 */ beq lbl_802DAED0
/* 802DAECC 4B FF 3E 71 */ bl __dl__FPv
lbl_802DAED0:
/* 802DAED0 80 7F 00 54 */ lwz r3, 0x54(r31)
/* 802DAED4 28 03 00 00 */ cmplwi r3, 0
/* 802DAED8 41 82 00 18 */ beq lbl_802DAEF0
/* 802DAEDC 38 80 00 01 */ li r4, 1
/* 802DAEE0 81 83 00 00 */ lwz r12, 0(r3)
/* 802DAEE4 81 8C 00 08 */ lwz r12, 8(r12)
/* 802DAEE8 7D 89 03 A6 */ mtctr r12
/* 802DAEEC 4E 80 04 21 */ bctrl
lbl_802DAEF0:
/* 802DAEF0 38 00 00 00 */ li r0, 0
/* 802DAEF4 90 1F 00 50 */ stw r0, 0x50(r31)
/* 802DAEF8 38 7F 00 34 */ addi r3, r31, 0x34
/* 802DAEFC 48 06 42 21 */ bl OSUnlockMutex
/* 802DAF00 38 60 00 01 */ li r3, 1
lbl_802DAF04:
/* 802DAF04 39 61 00 20 */ addi r11, r1, 0x20
/* 802DAF08 48 08 73 21 */ bl _restgpr_29
/* 802DAF0C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802DAF10 7C 08 03 A6 */ mtlr r0
/* 802DAF14 38 21 00 20 */ addi r1, r1, 0x20
/* 802DAF18 4E 80 00 20 */ blr
@@ -1,74 +0,0 @@
lbl_802D8168:
/* 802D8168 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D816C 7C 08 02 A6 */ mflr r0
/* 802D8170 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D8174 39 61 00 20 */ addi r11, r1, 0x20
/* 802D8178 48 08 A0 5D */ bl _savegpr_27
/* 802D817C 7C 69 1B 78 */ mr r9, r3
/* 802D8180 7C 9B 23 78 */ mr r27, r4
/* 802D8184 7C BC 2B 78 */ mr r28, r5
/* 802D8188 7C DD 33 78 */ mr r29, r6
/* 802D818C 7C FE 3B 78 */ mr r30, r7
/* 802D8190 80 A6 00 0C */ lwz r5, 0xc(r6)
/* 802D8194 7C BF 2B 78 */ mr r31, r5
/* 802D8198 80 06 00 04 */ lwz r0, 4(r6)
/* 802D819C 54 03 46 3E */ srwi r3, r0, 0x18
/* 802D81A0 54 00 47 7B */ rlwinm. r0, r0, 8, 0x1d, 0x1d
/* 802D81A4 40 82 00 0C */ bne lbl_802D81B0
/* 802D81A8 39 00 00 00 */ li r8, 0
/* 802D81AC 48 00 00 18 */ b lbl_802D81C4
lbl_802D81B0:
/* 802D81B0 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
/* 802D81B4 41 82 00 0C */ beq lbl_802D81C0
/* 802D81B8 39 00 00 02 */ li r8, 2
/* 802D81BC 48 00 00 08 */ b lbl_802D81C4
lbl_802D81C0:
/* 802D81C0 39 00 00 01 */ li r8, 1
lbl_802D81C4:
/* 802D81C4 80 1D 00 10 */ lwz r0, 0x10(r29)
/* 802D81C8 28 00 00 00 */ cmplwi r0, 0
/* 802D81CC 40 82 00 30 */ bne lbl_802D81FC
/* 802D81D0 57 9C 00 34 */ rlwinm r28, r28, 0, 0, 0x1a
/* 802D81D4 80 69 00 40 */ lwz r3, 0x40(r9)
/* 802D81D8 80 89 00 64 */ lwz r4, 0x64(r9)
/* 802D81DC 80 1D 00 08 */ lwz r0, 8(r29)
/* 802D81E0 7C 84 02 14 */ add r4, r4, r0
/* 802D81E4 7F 66 DB 78 */ mr r6, r27
/* 802D81E8 7F 87 E3 78 */ mr r7, r28
/* 802D81EC 81 29 00 5C */ lwz r9, 0x5c(r9)
/* 802D81F0 48 00 00 7D */ bl fetchResource_subroutine__13JKRDvdArchiveFlUlUlPUcUlii
/* 802D81F4 7C 7F 1B 78 */ mr r31, r3
/* 802D81F8 48 00 00 4C */ b lbl_802D8244
lbl_802D81FC:
/* 802D81FC 2C 08 00 02 */ cmpwi r8, 2
/* 802D8200 40 82 00 28 */ bne lbl_802D8228
/* 802D8204 7D 23 4B 78 */ mr r3, r9
/* 802D8208 7F A4 EB 78 */ mr r4, r29
/* 802D820C 81 89 00 00 */ lwz r12, 0(r9)
/* 802D8210 81 8C 00 4C */ lwz r12, 0x4c(r12)
/* 802D8214 7D 89 03 A6 */ mtctr r12
/* 802D8218 4E 80 04 21 */ bctrl
/* 802D821C 28 03 00 00 */ cmplwi r3, 0
/* 802D8220 41 82 00 08 */ beq lbl_802D8228
/* 802D8224 7C 7F 1B 78 */ mr r31, r3
lbl_802D8228:
/* 802D8228 7C 1F E0 40 */ cmplw r31, r28
/* 802D822C 40 81 00 08 */ ble lbl_802D8234
/* 802D8230 7F 9F E3 78 */ mr r31, r28
lbl_802D8234:
/* 802D8234 7F 63 DB 78 */ mr r3, r27
/* 802D8238 80 9D 00 10 */ lwz r4, 0x10(r29)
/* 802D823C 7F E5 FB 78 */ mr r5, r31
/* 802D8240 4B FF 68 D9 */ bl copyMemory__7JKRHeapFPvPvUl
lbl_802D8244:
/* 802D8244 28 1E 00 00 */ cmplwi r30, 0
/* 802D8248 41 82 00 08 */ beq lbl_802D8250
/* 802D824C 93 FE 00 00 */ stw r31, 0(r30)
lbl_802D8250:
/* 802D8250 7F 63 DB 78 */ mr r3, r27
/* 802D8254 39 61 00 20 */ addi r11, r1, 0x20
/* 802D8258 48 08 9F C9 */ bl _restgpr_27
/* 802D825C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D8260 7C 08 03 A6 */ mtlr r0
/* 802D8264 38 21 00 20 */ addi r1, r1, 0x20
/* 802D8268 4E 80 00 20 */ blr
@@ -1,30 +0,0 @@
lbl_802E8240:
/* 802E8240 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 802E8244 7C 08 02 A6 */ mflr r0
/* 802E8248 90 01 00 34 */ stw r0, 0x34(r1)
/* 802E824C 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 802E8250 93 C1 00 28 */ stw r30, 0x28(r1)
/* 802E8254 7C 7E 1B 78 */ mr r30, r3
/* 802E8258 7C 9F 23 78 */ mr r31, r4
/* 802E825C 38 1E 00 04 */ addi r0, r30, 4
/* 802E8260 90 01 00 0C */ stw r0, 0xc(r1)
/* 802E8264 90 01 00 08 */ stw r0, 8(r1)
/* 802E8268 90 01 00 1C */ stw r0, 0x1c(r1)
/* 802E826C 90 01 00 18 */ stw r0, 0x18(r1)
/* 802E8270 38 DF 00 18 */ addi r6, r31, 0x18
/* 802E8274 90 01 00 14 */ stw r0, 0x14(r1)
/* 802E8278 38 61 00 10 */ addi r3, r1, 0x10
/* 802E827C 7F C4 F3 78 */ mr r4, r30
/* 802E8280 38 A1 00 14 */ addi r5, r1, 0x14
/* 802E8284 4B FF 49 25 */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
/* 802E8288 80 1E 00 0C */ lwz r0, 0xc(r30)
/* 802E828C 28 00 00 00 */ cmplwi r0, 0
/* 802E8290 40 82 00 08 */ bne lbl_802E8298
/* 802E8294 93 FE 00 0C */ stw r31, 0xc(r30)
lbl_802E8298:
/* 802E8298 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 802E829C 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 802E82A0 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802E82A4 7C 08 03 A6 */ mtlr r0
/* 802E82A8 38 21 00 30 */ addi r1, r1, 0x30
/* 802E82AC 4E 80 00 20 */ blr
@@ -1,60 +0,0 @@
lbl_802E82B0:
/* 802E82B0 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 802E82B4 7C 08 02 A6 */ mflr r0
/* 802E82B8 90 01 00 34 */ stw r0, 0x34(r1)
/* 802E82BC 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 802E82C0 93 C1 00 28 */ stw r30, 0x28(r1)
/* 802E82C4 7C 7E 1B 78 */ mr r30, r3
/* 802E82C8 7C 9F 23 78 */ mr r31, r4
/* 802E82CC 80 03 00 0C */ lwz r0, 0xc(r3)
/* 802E82D0 7C 00 F8 40 */ cmplw r0, r31
/* 802E82D4 40 82 00 64 */ bne lbl_802E8338
/* 802E82D8 80 1E 00 00 */ lwz r0, 0(r30)
/* 802E82DC 28 00 00 01 */ cmplwi r0, 1
/* 802E82E0 41 81 00 10 */ bgt lbl_802E82F0
/* 802E82E4 38 00 00 00 */ li r0, 0
/* 802E82E8 90 1E 00 0C */ stw r0, 0xc(r30)
/* 802E82EC 48 00 00 4C */ b lbl_802E8338
lbl_802E82F0:
/* 802E82F0 38 7E 00 04 */ addi r3, r30, 4
/* 802E82F4 90 61 00 18 */ stw r3, 0x18(r1)
/* 802E82F8 90 61 00 14 */ stw r3, 0x14(r1)
/* 802E82FC 90 61 00 20 */ stw r3, 0x20(r1)
/* 802E8300 80 63 00 04 */ lwz r3, 4(r3)
/* 802E8304 90 61 00 08 */ stw r3, 8(r1)
/* 802E8308 38 03 FF E8 */ addi r0, r3, -24
/* 802E830C 7C 1F 00 40 */ cmplw r31, r0
/* 802E8310 41 82 00 10 */ beq lbl_802E8320
/* 802E8314 80 7F 00 18 */ lwz r3, 0x18(r31)
/* 802E8318 38 03 FF E8 */ addi r0, r3, -24
/* 802E831C 48 00 00 18 */ b lbl_802E8334
lbl_802E8320:
/* 802E8320 80 7E 00 04 */ lwz r3, 4(r30)
/* 802E8324 90 61 00 10 */ stw r3, 0x10(r1)
/* 802E8328 90 61 00 0C */ stw r3, 0xc(r1)
/* 802E832C 90 61 00 1C */ stw r3, 0x1c(r1)
/* 802E8330 38 03 FF E8 */ addi r0, r3, -24
lbl_802E8334:
/* 802E8334 90 1E 00 0C */ stw r0, 0xc(r30)
lbl_802E8338:
/* 802E8338 48 00 02 01 */ bl JUTGetWarningConsole
/* 802E833C 7C 03 F8 40 */ cmplw r3, r31
/* 802E8340 40 82 00 0C */ bne lbl_802E834C
/* 802E8344 38 60 00 00 */ li r3, 0
/* 802E8348 48 00 01 E9 */ bl JUTSetWarningConsole
lbl_802E834C:
/* 802E834C 48 00 01 DD */ bl JUTGetReportConsole
/* 802E8350 7C 03 F8 40 */ cmplw r3, r31
/* 802E8354 40 82 00 0C */ bne lbl_802E8360
/* 802E8358 38 60 00 00 */ li r3, 0
/* 802E835C 48 00 01 C5 */ bl JUTSetReportConsole
lbl_802E8360:
/* 802E8360 38 9F 00 18 */ addi r4, r31, 0x18
/* 802E8364 7F C3 F3 78 */ mr r3, r30
/* 802E8368 4B FF 48 91 */ bl Remove__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode
/* 802E836C 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 802E8370 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 802E8374 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802E8378 7C 08 03 A6 */ mtlr r0
/* 802E837C 38 21 00 30 */ addi r1, r1, 0x30
/* 802E8380 4E 80 00 20 */ blr
+1 -1
View File
@@ -56,7 +56,7 @@ public:
/* 8030A358 */ virtual ~J2DAnmVtxColor() {}
/* 8030363C */ virtual void getColor(u8, u16, _GXColor*) const;
u16 getAnmTableNum(u8 param_0) const { return mAnmTableNum[param_0]; }
J3DAnmVtxColorIndexDataItem* getAnmVtxColorIndexData(u8 param_0, u16 param_1) const { return mVtxColorIndexData[param_0]->field_0x0 + param_1; }
J3DAnmVtxColorIndexData* getAnmVtxColorIndexData(u8 param_0, u16 param_1) const { return &mVtxColorIndexData[param_0][param_1]; }
u16* getVtxColorIndexPointer(u8 param_0) const { return mVtxColorIndexPointer[param_0]; }
/* 0x10 */ u16 mAnmTableNum[2];
+1 -12
View File
@@ -16,18 +16,6 @@ public:
void* mpResource;
};
struct J3DAnmTransformKeyData {
/* 0x00 */ u8 _0[0x8];
/* 0x08 */ u8 _8;
/* 0x09 */ u8 _9;
/* 0x0A */ s16 mFrameMax;
/* 0x0C */ u16 _C;
/* 0x0E */ u8 _E[0x14 - 0xE];
/* 0x14 */ s32 mTableOffset;
/* 0x18 */ s32 mScaleOffset;
/* 0x1C */ s32 mRotationOffset;
/* 0x20 */ s32 mTranslateOffset;
};
struct J3DAnmTextureSRTKeyData;
struct J3DAnmColorKeyData;
struct J3DAnmVtxColorKeyData;
@@ -37,6 +25,7 @@ struct J3DAnmColorFullData;
struct J3DAnmTexPatternFullData;
struct J3DAnmVisibilityFullData;
struct J3DAnmVtxColorFullData;
struct J3DAnmTransformKeyData;
class J2DAnmKeyLoader_v15 : public J2DAnmLoader {
public:
+8 -1
View File
@@ -12,10 +12,17 @@ struct ResTIMG;
struct ResTLUT;
enum J2DMirror {
/* 0x0 */ MIRROR0, // temp, figure out later
/* 0 */ MIRROR0, // temp, figure out later
/* 1 */ J2DMirror_Y = (1 << 0),
/* 2 */ J2DMirror_X = (1 << 1),
};
enum J2DBinding {
/* 1 */ J2DBind_Bottom = (1 << 0),
/* 2 */ J2DBind_Top = (1 << 1),
/* 4 */ J2DBind_Right = (1 << 2),
/* 8 */ J2DBind_Left = (1 << 3),
/* 0xF */ BIND15 = 15, // temp, figure out later
};
+174 -92
View File
@@ -5,6 +5,26 @@
#include "JSystem/JUtility/JUTNameTab.h"
#include "global.h"
struct JUTDataBlockHeader {
/* 0x0 */ u32 mType;
/* 0x4 */ u32 mSize;
const JUTDataBlockHeader* getNext() const { // fake inline
return reinterpret_cast<const JUTDataBlockHeader*>(reinterpret_cast<const u8*>(this) +
mSize);
}
};
struct JUTDataFileHeader { // actual struct name unknown
/* 0x00 */ u32 mMagic;
/* 0x04 */ u32 mType;
/* 0x08 */ u32 mFileSize;
/* 0x0C */ u32 mBlockNum;
/* 0x10 */ u8 _10[0x1C - 0x10];
/* 0x1C */ u32 mSeAnmOffset; // Only exists for some BCKs
/* 0x20 */ JUTDataBlockHeader mFirstBlock;
};
typedef struct _GXColor GXColor;
typedef struct _GXColorS10 GXColorS10;
@@ -21,13 +41,9 @@ struct J3DAnmColorKeyTable {
J3DAnmKeyTableBase mAInfo;
}; // Size = 0x18
struct J3DAnmVtxColorIndexDataItem {
u16 count;
u32 offset;
};
struct J3DAnmVtxColorIndexData {
J3DAnmVtxColorIndexDataItem field_0x0[4];
/* 0x00 */ u16 mNum;
/* 0x04 */ void* mpData;
};
struct J3DAnmColorFullTable {
@@ -285,8 +301,55 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */
STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34);
struct J3DAnmClusterKeyTable {
/* 0x00 */ J3DAnmKeyTableBase mWeightTable;
};
struct J3DAnmTransformKeyData {
/* 0x00 */ JUTDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8;
/* 0x09 */ u8 field_0x9;
/* 0x0A */ s16 mFrameMax;
/* 0x0C */ u16 field_0xc;
/* 0x10 */ int field_0x10;
/* 0x14 */ s32 mTableOffset;
/* 0x18 */ s32 field_0x18;
/* 0x1c */ s32 field_0x1c;
/* 0x20 */ s32 field_0x20;
};
struct J3DAnmClusterKeyData {
/* 0x00 */ JUTDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8;
/* 0x0A */ s16 mFrameMax;
/* 0x0C */ s32 field_0xc;
/* 0x10 */ s32 mTableOffset;
/* 0x14 */ s32 mWeightOffset;
};
struct J3DAnmClusterFullData {
/* 0x00 */ JUTDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8;
/* 0x0A */ s16 mFrameMax;
/* 0x0C */ s32 field_0xc;
/* 0x10 */ s32 mTableOffset;
/* 0x14 */ s32 mWeightOffset;
};
struct J3DAnmClusterFullTable {
u16 mMaxFrame;
u16 mOffset;
};
class J3DAnmBase {
public:
J3DAnmBase() {
mAttribute = 0;
field_0x5 = 0;
mFrameMax = 0;
mFrame = 0.0f;
}
J3DAnmBase(s16 i_frameMax) {
mAttribute = 0;
field_0x5 = 0;
@@ -295,13 +358,13 @@ public:
}
virtual ~J3DAnmBase();
virtual s32 getKind() const = 0;
u8 getAttribute() const { return mAttribute; }
s16 getFrameMax() const { return mFrameMax; }
f32 getFrame() const { return mFrame; }
void setFrame(f32 frame) { mFrame = frame; }
private:
/* 0x4 */ u8 mAttribute;
/* 0x5 */ u8 field_0x5;
/* 0x6 */ s16 mFrameMax;
@@ -316,21 +379,20 @@ public:
/* 8003C77C */ virtual s32 getKind() const;
virtual void getTransform(u16, J3DTransformInfo*) const = 0;
private:
/* 0x0C */ f32* field_0xc;
/* 0x10 */ s16* field_0x10;
/* 0x14 */ f32* field_0x14;
/* 0x0C */ f32* mScaleData;
/* 0x10 */ s16* mRotData;
/* 0x14 */ f32* mTransData;
/* 0x18 */ s16 field_0x18;
/* 0x1A */ s16 field_0x1a;
/* 0x1C */ s16 field_0x1c;
/* 0x1C */ u16 field_0x1c;
/* 0x1E */ s16 field_0x1e;
}; // Size: 0x20
class J3DAnmTransformKey : public J3DAnmTransform {
public:
J3DAnmTransformKey() : J3DAnmTransform(0, NULL, NULL, NULL) {
field_0x20 = 0;
field_0x24 = 0;
mDecShift = 0;
mAnmTable = 0;
}
/* 80329A34 */ void calcTransform(f32, u16, J3DTransformInfo*) const;
@@ -339,19 +401,19 @@ public:
/* 8003C800 */ virtual s32 getKind() const;
/* 8003C808 */ virtual void getTransform(u16, J3DTransformInfo*) const;
private:
/* 0x20 */ int field_0x20;
/* 0x24 */ int field_0x24;
/* 0x20 */ int mDecShift;
/* 0x24 */ J3DAnmTransformKeyTable* mAnmTable;
}; // Size: 0x28
class J3DAnmTransformFull : public J3DAnmTransform {
public:
J3DAnmTransformFull() : J3DAnmTransform(0, NULL, NULL, NULL) { mAnmTable = NULL; }
/* 8032C2AC */ virtual ~J3DAnmTransformFull();
/* 8032C318 */ virtual s32 getKind() const;
/* 80328E90 */ virtual void getTransform(u16, J3DTransformInfo*) const;
private:
/* 0x20 */ int field_0x20;
/* 0x20 */ J3DAnmTransformFullTable* mAnmTable;
}; // Size: 0x24
class J3DAnmTransformFullWithLerp : public J3DAnmTransformFull {
@@ -380,34 +442,33 @@ public:
}
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
u16 getUpdateMaterialNum() const { return field_0x14 / 3; }
u16 getUpdateMaterialNum() const { return mTrackNum / 3; }
private:
/* 0x0C */ int field_0xc;
/* 0x10 */ int field_0x10;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 field_0x16;
/* 0x18 */ u16 field_0x18;
/* 0x1A */ u16 field_0x1a;
/* 0x1C */ int field_0x1c;
/* 0x20 */ int field_0x20;
/* 0x24 */ int field_0x24;
/* 0x28 */ u8 mUpdateTexMtxID[4];
/* 0x0C */ int mDecShift;
/* 0x10 */ J3DAnmTransformKeyTable* mAnmTable;
/* 0x14 */ u16 mTrackNum;
/* 0x16 */ u16 mScaleNum;
/* 0x18 */ u16 mRotNum;
/* 0x1A */ u16 mTransNum;
/* 0x1C */ f32* mScaleData;
/* 0x20 */ s16* mRotData;
/* 0x24 */ f32* mTransData;
/* 0x28 */ u8* mUpdateTexMtxID;
/* 0x2C */ u16* mUpdateMaterialID;
/* 0x30 */ JUTNameTab field_0x30;
/* 0x40 */ int field_0x40;
/* 0x30 */ JUTNameTab mUpdateMaterialName;
/* 0x40 */ Vec* mSRTCenter;
/* 0x44 */ u16 field_0x44;
/* 0x46 */ u16 field_0x46;
/* 0x48 */ u16 field_0x48;
/* 0x4A */ u16 field_0x4a;
/* 0x4C */ int field_0x4c;
/* 0x50 */ int field_0x50;
/* 0x54 */ int field_0x54;
/* 0x58 */ int field_0x58;
/* 0x5C */ u8 field_0x5c[4];
/* 0x60 */ u16* field_0x60;
/* 0x64 */ JUTNameTab field_0x64;
/* 0x74 */ u8 field_0x74[4];
/* 0x4C */ void* field_0x4c;
/* 0x50 */ void* field_0x50;
/* 0x54 */ void* field_0x54;
/* 0x58 */ void* field_0x58;
/* 0x5C */ u8* mPostUpdateTexMtxID;
/* 0x60 */ u16* mPostUpdateMaterialID;
/* 0x64 */ JUTNameTab mPostUpdateMaterialName;
/* 0x74 */ Vec* mPostSRTCenter;
/* 0x78 */ u32 mTexMtxCalcType;
}; // Size: 0x7C
@@ -426,8 +487,7 @@ public:
bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; }
J3DAnmTexPatternFullTable* getAnmTable() { return mAnmTable; }
private:
/* 0x0C */ void* field_0xc;
/* 0x0C */ u16* mTextureIndex;
/* 0x10 */ J3DAnmTexPatternFullTable* mAnmTable;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 mUpdateMaterialNum;
@@ -452,31 +512,30 @@ public:
u16 getCRegUpdateMaterialID(u16 idx) const { return mCRegUpdateMaterialID[idx]; }
u16 getKRegUpdateMaterialID(u16 idx) const { return mKRegUpdateMaterialID[idx]; }
private:
/* 0x0C */ u16 mCRegUpdateMaterialNum;
/* 0x0E */ u16 mKRegUpdateMaterialNum;
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 field_0x16;
/* 0x18 */ u16 field_0x18;
/* 0x1A */ u16 field_0x1a;
/* 0x1C */ u16 field_0x1c;
/* 0x1E */ u16 field_0x1e;
/* 0x10 */ u16 mCRegDataCountR;
/* 0x12 */ u16 mCRegDataCountG;
/* 0x14 */ u16 mCRegDataCountB;
/* 0x16 */ u16 mCRegDataCountA;
/* 0x18 */ u16 mKRegDataCountR;
/* 0x1A */ u16 mKRegDataCountG;
/* 0x1C */ u16 mKRegDataCountB;
/* 0x1E */ u16 mKRegDataCountA;
/* 0x20 */ u16* mCRegUpdateMaterialID;
/* 0x24 */ JUTNameTab field_0x24;
/* 0x24 */ JUTNameTab mCRegUpdateMaterialName;
/* 0x34 */ u16* mKRegUpdateMaterialID;
/* 0x38 */ JUTNameTab field_0x38;
/* 0x48 */ void* field_0x48;
/* 0x4C */ void* field_0x4c;
/* 0x50 */ int field_0x50;
/* 0x54 */ int field_0x54;
/* 0x58 */ int field_0x58;
/* 0x5C */ int field_0x5c;
/* 0x60 */ int field_0x60;
/* 0x64 */ int field_0x64;
/* 0x68 */ int field_0x68;
/* 0x6C */ int field_0x6c;
/* 0x38 */ JUTNameTab mKRegUpdateMaterialName;
/* 0x48 */ J3DAnmCRegKeyTable* mAnmCRegKeyTable;
/* 0x4C */ J3DAnmKRegKeyTable* mAnmKRegKeyTable;
/* 0x50 */ s16* mAnmCRegDataR;
/* 0x54 */ s16* mAnmCRegDataG;
/* 0x58 */ s16* mAnmCRegDataB;
/* 0x5C */ s16* mAnmCRegDataA;
/* 0x60 */ s16* mAnmKRegDataR;
/* 0x64 */ s16* mAnmKRegDataG;
/* 0x68 */ s16* mAnmKRegDataB;
/* 0x6C */ s16* mAnmKRegDataA;
}; // Size: 0x70
class J3DAnmColor : public J3DAnmBase {
@@ -492,14 +551,13 @@ public:
bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; }
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
private:
/* 0x0C */ u16 field_0xc;
/* 0x0E */ u16 field_0xe;
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ u16 mUpdateMaterialNum;
/* 0x18 */ u16* mUpdateMaterialID;
/* 0x1C */ JUTNameTab field_0x1c;
/* 0x1C */ JUTNameTab mUpdateMaterialName;
}; // Size: 0x2C
class J3DAnmColorKey : public J3DAnmColor {
@@ -510,12 +568,11 @@ public:
/* 8032BEB0 */ virtual s32 getKind() const;
/* 8032AB54 */ virtual void getColor(u16, _GXColor*) const;
private:
/* 0x2C */ int field_0x2c;
/* 0x30 */ int field_0x30;
/* 0x34 */ int field_0x34;
/* 0x38 */ int field_0x38;
/* 0x3C */ int field_0x3c;
/* 0x2C */ s16* field_0x2c;
/* 0x30 */ s16* field_0x30;
/* 0x34 */ s16* field_0x34;
/* 0x38 */ s16* field_0x38;
/* 0x3C */ J3DAnmColorKeyTable* field_0x3c;
};
class J3DAnmColorFull : public J3DAnmColor {
@@ -526,12 +583,11 @@ public:
/* 8032BEB0 */ virtual s32 getKind() const;
/* 8032AB54 */ virtual void getColor(u16, _GXColor*) const;
private:
/* 0x2C */ int field_0x2c;
/* 0x30 */ int field_0x30;
/* 0x34 */ int field_0x34;
/* 0x38 */ int field_0x38;
/* 0x3C */ int field_0x3c;
/* 0x2C */ u8* mColorR;
/* 0x30 */ u8* mColorG;
/* 0x34 */ u8* mColorB;
/* 0x38 */ u8* mColorA;
/* 0x3C */ J3DAnmColorFullTable* mAnmTable;
};
class J3DAnmVtxColor : public J3DAnmBase {
@@ -542,9 +598,8 @@ public:
virtual s32 getKind() const;
virtual void getColor(u8, u16, _GXColor*) const;
private:
/* 0x0C */ s16 mAnmTableNum[2];
/* 0x10 */ int mAnmVtxColorIndexData[2];
/* 0x0C */ u16 mAnmTableNum[2];
/* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2];
}; // Size: 0x18
class J3DAnmVtxColorKey : public J3DAnmVtxColor {
@@ -555,49 +610,77 @@ public:
/* 8032BFBC */ virtual s32 getKind() const;
/* 8032A53C */ virtual void getColor(u8, u16, _GXColor*) const;
private:
/* 0x18 */ int field_0x18[2];
/* 0x1C */ J3DAnmColorKeyTable* mpTable[2];
/* 0x24 */ s16* mColorR;
/* 0x28 */ s16* mColorG;
/* 0x2C */ s16* mColorB;
/* 0x30 */ s16* mColorA;
};
class J3DAnmVtxColorFull : public J3DAnmVtxColor {
public:
/* 8032A30C */ J3DAnmVtxColorFull();
/* 8032BFC4 */ virtual ~J3DAnmVtxColorFull();
/* 8032C030 */ virtual s32 getKind() const;
/* 8032A368 */ virtual void getColor(u8, u16, _GXColor*) const;
private:
/* 0x18 */ int field_0x18[2];
/* 0x1C */ J3DAnmColorFullTable* mpTable[2];
/* 0x24 */ u8* mColorR;
/* 0x28 */ u8* mColorG;
/* 0x2C */ u8* mColorB;
/* 0x30 */ u8* mColorA;
};
class J3DAnmCluster : public J3DAnmBase {
public:
J3DAnmCluster(s16 param_1, f32* param_2) : J3DAnmBase(param_1) { mWeight = param_2; }
/* 8032BCAC */ virtual ~J3DAnmCluster();
/* 8032BF44 */ virtual s32 getKind() const;
/* 8032BF4C */ virtual f32 getWeight(u16) const;
private:
/* 0x0C */ f32* field_0xc;
/* 0x0C */ f32* mWeight;
}; // Size: 0x10
class J3DAnmClusterFull : public J3DAnmCluster {
public:
J3DAnmClusterFull() : J3DAnmCluster(0, 0) { mAnmTable = NULL; }
/* 8032BCAC */ virtual ~J3DAnmClusterFull();
/* 8032BF44 */ virtual s32 getKind() const;
/* 8032BF4C */ virtual f32 getWeight(u16) const;
private:
/* 0x10 */ int field_0x10;
/* 0x10 */ J3DAnmClusterFullTable* mAnmTable;
};
class J3DAnmClusterKey : public J3DAnmCluster {
public:
J3DAnmClusterKey() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; }
/* 8032C044 */ virtual ~J3DAnmClusterKey();
/* 8032C0B0 */ virtual s32 getKind() const;
/* 8032A218 */ virtual f32 getWeight(u16) const;
private:
/* 0x10 */ int field_0x10;
/* 0x10 */ J3DAnmClusterKeyTable* mAnmTable;
};
class J3DAnmVisibilityFull : public J3DAnmBase {
public:
J3DAnmVisibilityFull() : J3DAnmBase(0) {
mUpdateMaterialNum = 0;
field_0xe = 0;
mAnmTable = NULL;
mVisibility = NULL;
}
/* 8033979C */ virtual ~J3DAnmVisibilityFull();
/* 803397F8 */ virtual s32 getKind() const;
/* 0x0C */ u16 mUpdateMaterialNum;
/* 0x0E */ u16 field_0xe;
/* 0x10 */ J3DAnmVisibilityFullTable* mAnmTable;
/* 0x14 */ u8* mVisibility;
};
class J3DFrameCtrl {
@@ -639,7 +722,6 @@ public:
mState = 0;
}
private:
/* 0x04 */ u8 mAttribute;
/* 0x05 */ u8 mState;
/* 0x06 */ s16 mStart;
+47 -5
View File
@@ -13,6 +13,20 @@ class JUTNameTab;
class J3DCluster {
public:
void operator=(const J3DCluster& other) {
mMaxAngle = other.mMaxAngle;
mMinAngle = other.mMinAngle;
mClusterKey = other.mClusterKey;
mFlags = other.mFlags;
mKeyNum = other.mKeyNum;
mPosNum = other.mPosNum;
field_0x14 = other.field_0x14;
field_0x16 = other.field_0x16;
field_0x18 = other.field_0x18;
mClusterVertex = other.mClusterVertex;
mDeformer = other.mDeformer;
}
J3DDeformer* getDeformer() { return mDeformer; }
void setDeformer(J3DDeformer* deformer) { mDeformer = deformer; }
@@ -30,7 +44,20 @@ public:
/* 0x20 */ J3DDeformer* mDeformer;
};
struct J3DClusterKey {};
class J3DClusterKey {
public:
void operator=(const J3DClusterKey& other) {
mPosNum = other.mPosNum;
mNrmNum = other.mNrmNum;
field_0x4 = other.field_0x4;
field_0x8 = other.field_0x8;
}
/* 0x00 */ u16 mPosNum;
/* 0x02 */ u16 mNrmNum;
/* 0x04 */ void* field_0x4;
/* 0x08 */ void* field_0x8;
}; // Size: 0x0C
class J3DDeformData {
public:
@@ -40,11 +67,13 @@ public:
/* 8032E274 */ void deform(J3DModel*);
/* 8032E364 */ void setAnm(J3DAnmCluster*);
J3DCluster* getClusterPointer(u16 index) {
return &mClusterPointer[index];
}
J3DCluster* getClusterPointer(u16 index) { return &mClusterPointer[index]; }
u16 getClusterNum() const { return mClusterNum; }
u16 getClusterKeyNum() const { return mClusterKeyNum; }
J3DClusterKey* getClusterKeyPointer(u16 i) { return &mClusterKeyPointer[i]; }
f32* getVtxPos() { return mVtxPos; }
f32* getVtxNrm() { return mVtxNrm; }
private:
/* 0x00 */ u16 mClusterNum;
/* 0x02 */ u16 mClusterKeyNum;
/* 0x04 */ u16 mClusterVertexNum;
@@ -59,4 +88,17 @@ private:
/* 0x24 */ JUTNameTab* mClusterKeyName;
}; // Size: 0x28
class J3DClusterVertex {
public:
void operator=(const J3DClusterVertex& other) {
mNum = other.mNum;
field_0x4 = other.field_0x4;
field_0x8 = other.field_0x8;
}
/* 0x00 */ u16 mNum;
/* 0x04 */ u16* field_0x4;
/* 0x08 */ u16* field_0x8;
}; // Size: 0x0C
#endif /* J3DCLUSTER_H */
@@ -80,7 +80,6 @@ public:
void offFlag(u32 i_flag) { mFlags &= ~i_flag; }
void setAnmCluster(J3DAnmCluster* anm) { mAnmCluster = anm; }
private:
/* 0x00 */ J3DDeformData* mDeformData;
/* 0x04 */ J3DAnmCluster* mAnmCluster;
/* 0x08 */ f32* field_0x8;
+4 -14
View File
@@ -102,7 +102,6 @@ public:
/* 80322DA0 */ virtual void setTexMtxOffset(u32);
/* 80317180 */ virtual ~J3DTexGenBlockPatched();
private:
/* 0x04 */ u32 mTexGenNum;
/* 0x08 */ J3DTexCoord mTexCoord[8];
/* 0x38 */ J3DTexMtx* mTexMtx[8];
@@ -126,7 +125,6 @@ public:
/* 80322CC0 */ virtual J3DNBTScale* getNBTScale();
/* 80322CC8 */ virtual ~J3DTexGenBlockBasic();
private:
/* 0x5C */ J3DNBTScale mNBTScale;
}; // Size: 0x6C
@@ -147,7 +145,6 @@ public:
/* 80322DFC */ virtual J3DNBTScale* getNBTScale();
/* 80322E04 */ virtual ~J3DTexGenBlock4();
private:
/* 0x5C */ J3DNBTScale mNBTScale;
}; // Size: 0x6C
@@ -275,7 +272,6 @@ public:
/* 80322C08 */ virtual void setTevRegOffset(u32);
/* 80322C10 */ virtual ~J3DTevBlockPatched();
private:
/* 0x08 */ u16 mTexNo[8];
/* 0x18 */ J3DTevOrder mTevOrder[8];
/* 0x38 */ J3DTevStage mTevStage[8];
@@ -346,7 +342,6 @@ public:
/* 80322348 */ virtual void setTevRegOffset(u32);
/* 80322350 */ virtual ~J3DTevBlock4();
private:
/* 0x08 */ u16 mTexNo[4];
/* 0x10 */ J3DTevOrder mTevOrder[4];
/* 0x20 */ u8 mTevStageNum;
@@ -419,7 +414,6 @@ public:
/* 8032270C */ virtual void setTevRegOffset(u32);
/* 80322714 */ virtual ~J3DTevBlock2();
private:
/* 0x08 */ u16 mTexNo[2];
/* 0x0C */ J3DTevOrder mTevOrder[2];
/* 0x14 */ J3DGXColorS10 mTevColor[4];
@@ -492,7 +486,6 @@ public:
/* 80321F7C */ virtual void setTevRegOffset(u32);
/* 80321F84 */ virtual ~J3DTevBlock16();
private:
/* 0x008 */ u16 mTexNo[8];
/* 0x018 */ J3DTevOrder mTevOrder[16];
/* 0x058 */ u8 mTevStageNum;
@@ -546,7 +539,6 @@ public:
/* 803228EC */ virtual bool getTexNoOffset() const;
/* 803228F4 */ virtual ~J3DTevBlock1();
private:
/* 0x08 */ u16 mTexNo[1];
/* 0x0A */ J3DTevOrder mTevOrder[1];
/* 0x0E */ J3DTevStage mTevStage[1];
@@ -749,7 +741,6 @@ public:
/* 80321A68 */ virtual void setFogOffset(u32);
/* 80321A70 */ virtual ~J3DPEBlockFull();
private:
/* 0x04 */ J3DFog mFog;
/* 0x30 */ J3DAlphaComp mAlphaComp;
/* 0x34 */ J3DBlend mBlend;
@@ -789,7 +780,6 @@ public:
/* 80321BBC */ virtual bool getDither() const;
/* 80321BC4 */ virtual ~J3DPEBlockFogOff();
private:
/* 0x04 */ J3DAlphaComp mAlphaComp;
/* 0x08 */ J3DBlend mBlend;
/* 0x0C */ J3DZMode mZMode;
@@ -889,7 +879,6 @@ public:
/* 8032348C */ virtual bool getIndTexCoordScale(u32);
/* 803234A0 */ virtual ~J3DIndBlockFull();
private:
/* 0x04 */ u8 mIndTexStageNum;
/* 0x05 */ J3DIndTexOrder mIndTexOrder[4];
/* 0x18 */ J3DIndTexMtx mIndTexMtx[3];
@@ -908,6 +897,10 @@ struct J3DColorChanInfo {
extern J3DColorChanInfo j3dDefaultColorChanInfo;
/* static inline u32 setChanCtrlMacro(u8 param_0, GXColorSrc param_1, GXColorSrc param_2, u32 param_3, GXDiffuseFn param_4, GXAttnFn param_5) {
} */
struct J3DColorChan {
/* 8000E47C */ J3DColorChan() {
setColorChanInfo(j3dDefaultColorChanInfo);
@@ -1032,7 +1025,6 @@ public:
/* 80323010 */ virtual void setColorChanOffset(u32);
/* 80323018 */ virtual ~J3DColorBlockLightOn();
private:
/* 0x04 */ J3DGXColor mMatColor[2];
/* 0x0C */ J3DGXColor mAmbColor[2];
/* 0x14 */ u8 mColorChanNum;
@@ -1078,7 +1070,6 @@ public:
/* 80323250 */ virtual void setColorChanOffset(u32);
/* 803170DC */ virtual ~J3DColorBlockLightOff();
private:
/* 0x04 */ J3DGXColor mMatColor[2];
/* 0x0C */ u8 mColorChanNum;
/* 0x0E */ J3DColorChan mColorChan[4];
@@ -1103,7 +1094,6 @@ public:
/* 803230D8 */ virtual bool getAmbColor(u32);
/* 803230EC */ virtual ~J3DColorBlockAmbientOn();
private:
/* 0x20 */ J3DGXColor mAmbColor[2];
}; // Size: 0x28
+3
View File
@@ -194,7 +194,10 @@ public:
J3DMaterial* getMaterial() const { return mpMaterial; }
J3DShapePacket* getShapePacket() const { return mpShapePacket; }
void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
void setMaterial(J3DMaterial* pMaterial) { mpMaterial = pMaterial; }
void setTexture(J3DTexture* pTexture) { mpTexture = pTexture; }
void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; }
void setMaterialID(u32 id) { mDiffFlag = id; }
void setMaterialAnmID(J3DMaterialAnm* materialAnm) { mpMaterialAnm = materialAnm; }
bool isChanged() const { return mDiffFlag & 0x80000000; }
bool isEnabled_Diff() const { return mpInitShapePacket->getDisplayListObj() != NULL; }
+2
View File
@@ -126,6 +126,8 @@ struct J3DTevSwapModeInfo {
}; // Size: 0x4
struct J3DNBTScale;
struct J3DTexCoord;
void loadNBTScale(J3DNBTScale& param_0);
void loadTexCoordGens(u32 param_0, J3DTexCoord* param_1);
#endif /* J3DTEVS_H */
@@ -3,15 +3,18 @@
#include "dolphin/types.h"
enum J3DAnmLoaderDataBaseFlag { J3DLOADER_UNK_FLAG0 };
enum J3DAnmLoaderDataBaseFlag {
J3DLOADER_UNK_FLAG0,
J3DLOADER_UNK_FLAG1,
};
class J3DAnmBase;
struct J3DAnmLoaderDataBase {
/* 80337B40 */ static void* load(void const*, J3DAnmLoaderDataBaseFlag);
/* 80337B40 */ static J3DAnmBase* load(void const*, J3DAnmLoaderDataBaseFlag);
/* 80338134 */ static void setResource(J3DAnmBase*, void const*);
static void* load(void const* param_0) { return load(param_0, J3DLOADER_UNK_FLAG0); }
static J3DAnmBase* load(void const* param_0) { return load(param_0, J3DLOADER_UNK_FLAG0); }
};
#endif /* J3DANMLOADER_H */
+173 -123
View File
@@ -2,7 +2,6 @@
#define LINKLIST_H
#include "dolphin/types.h"
#include "JSystem/JUtility/JUTAssert.h"
namespace JGadget {
struct TLinkListNode {
@@ -11,46 +10,84 @@ struct TLinkListNode {
mPrev = NULL;
}
TLinkListNode* getNext() { return mNext; }
TLinkListNode* getPrev() { return mPrev; }
TLinkListNode* getNext() const { return mNext; }
TLinkListNode* getPrev() const { return mPrev; }
public:
/* 0x0 */ TLinkListNode* mNext;
/* 0x4 */ TLinkListNode* mPrev;
}; // Size: 0x8
struct TNodeLinkList {
struct iterator {
iterator(TLinkListNode* pNode) { node = pNode; }
iterator(const iterator& iter) { *this = iter; }
explicit iterator(TLinkListNode* pNode) { node = pNode; }
iterator& operator++() {
node = node->getNext();
return *this;
return *this;
}
iterator& operator--() {
node = node->getPrev();
return *this;
return *this;
}
TLinkListNode* operator->() { return node; }
iterator operator++(int) {
const iterator old(*this);
(void)++*this;
return old;
}
iterator operator--(int) {
const iterator old(*this);
(void)--*this;
return old;
}
friend bool operator==(iterator a, iterator b) { return a.node == b.node; }
friend bool operator!=(iterator a, iterator b) { return !(a == b); }
inline friend bool operator==(iterator a, iterator b) { return a.node == b.node; }
TLinkListNode* operator->() const { return node; }
TLinkListNode& operator*() const { return *node; }
TLinkListNode* node;
public:
/* 0x00 */ TLinkListNode* node;
};
struct const_iterator {
const_iterator(TLinkListNode* pNode) { node = pNode; }
explicit const_iterator(TLinkListNode* pNode) { node = pNode; }
const_iterator(const const_iterator& iter) { *this = iter; }
const_iterator(iterator iter) { *this = iter; }
TLinkListNode* operator->() const { return node; }
explicit const_iterator(iterator it) { node = it.node; }
const_iterator& operator++() {
node = node->getNext();
return *this;
return *this;
}
const_iterator& operator--() {
node = node->getPrev();
return *this;
}
const_iterator operator++(int) {
const const_iterator old(*this);
(void)++*this;
return old;
}
const_iterator operator--(int) {
const const_iterator old(*this);
(void)--*this;
return old;
}
friend bool operator==(const_iterator a, const_iterator b) { return a.node == b.node; }
friend bool operator!=(const_iterator a, const_iterator b) { return !(a == b); }
TLinkListNode* node;
friend bool operator==(const_iterator a, iterator b) { return a.node == b.node; }
friend bool operator!=(const_iterator a, iterator b) { return !(a == b); }
const TLinkListNode* operator->() const { return node; }
const TLinkListNode& operator*() const { return *node; }
public:
/* 0x00 */ TLinkListNode* node;
};
TNodeLinkList() : ocObject_() { Initialize_(); }
~TNodeLinkList();
void Initialize_() {
count = 0;
@@ -58,31 +95,47 @@ struct TNodeLinkList {
ocObject_.mPrev = &ocObject_;
}
iterator end() {
iterator iter(&ocObject_);
return iter;
}
iterator begin() {
return iterator(ocObject_.getNext());
}
iterator begin() { return iterator(ocObject_.getNext()); }
const_iterator begin() const { return const_iterator(ocObject_.getNext()); }
iterator end() { return iterator(&ocObject_); }
const_iterator end() const { return const_iterator((TLinkListNode*)(&ocObject_)); }
u32 size() { return count; }
bool empty() { return size() == 0; }
iterator pop_front() {
return erase(begin());
iterator pop_front() { return erase(begin()); }
iterator erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator);
iterator erase(JGadget::TNodeLinkList::iterator);
void splice(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList&,
JGadget::TNodeLinkList::iterator);
iterator Find(const JGadget::TLinkListNode*);
iterator Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
iterator Erase(JGadget::TLinkListNode*);
void Remove(JGadget::TLinkListNode*);
bool Iterator_isEnd_(const_iterator it) const { return it.node == &ocObject_; }
template <typename Predicate>
void Remove_if(Predicate predicate, TNodeLinkList& tList) {
iterator it = begin();
while (!Iterator_isEnd_(const_iterator(it))) {
if (predicate(*it)) {
iterator itPrev = it;
++it;
tList.splice(tList.end(), *this, itPrev);
} else {
++it;
}
}
}
/* 802DCA1C */ ~TNodeLinkList();
/* 802DCAA0 */ iterator erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator);
/* 802DCA58 */ iterator erase(JGadget::TNodeLinkList::iterator);
/* 802DCB08 */ void splice(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList&,
JGadget::TNodeLinkList::iterator);
/* 802DCBA8 */ iterator Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
/* 802DCBD4 */ iterator Erase(JGadget::TLinkListNode*);
/* 802DCBF8 */ void Remove(JGadget::TLinkListNode*);
template <typename Predicate>
void remove_if(Predicate predicate) {
TNodeLinkList list;
Remove_if(predicate, list);
}
/* 0x00 */ int count;
public:
/* 0x00 */ u32 count;
/* 0x04 */ TLinkListNode ocObject_;
}; // Size: 0xC
@@ -90,108 +143,105 @@ template <typename T, int I>
struct TLinkList : public TNodeLinkList {
TLinkList() : TNodeLinkList() {}
struct iterator : TNodeLinkList::iterator {
iterator(TNodeLinkList::iterator iter) : TNodeLinkList::iterator(iter) {}
T& operator*() { return *operator->(); }
T* operator->() {
TLinkListNode* node = TNodeLinkList::iterator::operator->();
JUT_ASSERT(541, node != 0);
return Element_toValue(node);
struct iterator {
explicit iterator(TNodeLinkList::iterator iter) : base(iter) {}
iterator& operator++() {
++base;
return *this;
}
iterator& operator--() {
TNodeLinkList::iterator::operator--();
--base;
return *this;
}
// Stack issues. See JStudio::ctb::TControl::getObject
inline friend bool operator==(iterator a, iterator b) {
TNodeLinkList::iterator ita = a;
TNodeLinkList::iterator itb = b;
return operator==(ita,itb);
iterator operator++(int) {
const iterator old(*this);
++*this;
return old;
}
inline friend bool operator!=(iterator a, iterator b) { return !(a == b); }
iterator operator--(int) {
const iterator old(*this);
--*this;
return old;
}
friend bool operator==(iterator a, iterator b) { return a.base == b.base; }
friend bool operator!=(iterator a, iterator b) { return !(a == b); }
T* operator->() const { return Element_toValue(base.operator->()); }
T& operator*() const { return *operator->(); }
public:
/* 0x00 */ TNodeLinkList::iterator base;
};
struct const_iterator : TNodeLinkList::const_iterator {
const_iterator(TNodeLinkList::const_iterator iter) : TNodeLinkList::const_iterator(iter) {}
const_iterator(iterator iter) : TNodeLinkList::const_iterator(iter) {}
const T* operator->() const {
return Element_toValue(TNodeLinkList::const_iterator::operator->());
}
const T& operator*() const { return *operator->(); }
struct const_iterator {
explicit const_iterator(TNodeLinkList::const_iterator iter) : base(iter) {}
explicit const_iterator(iterator iter) : base(iter.base) {}
const_iterator& operator++() {
TNodeLinkList::const_iterator::operator++();
++base;
return *this;
}
friend bool operator==(const_iterator a, const_iterator b) { return a == b; }
const_iterator& operator--() {
--base;
return *this;
}
const_iterator operator++(int) {
const const_iterator old(*this);
++*this;
return old;
}
const_iterator operator--(int) {
const const_iterator old(*this);
--*this;
return old;
}
friend bool operator==(const_iterator a, const_iterator b) { return a.base == b.base; }
friend bool operator!=(const_iterator a, const_iterator b) { return !(a == b); }
const T* operator->() const { return Element_toValue(base.operator->()); }
const T& operator*() const { return *operator->(); }
public:
/* 0x00 */ TNodeLinkList::const_iterator base;
};
TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; }
static T* Element_toValue(TLinkListNode* node) { return (T*)((char*)node - offsetof(T, ocObject_)); }
iterator Insert(TLinkList::iterator iter, T* element) {
TLinkListNode* node = Element_toNode(element);
return TNodeLinkList::Insert(iter, node);
static const TLinkListNode* Element_toNode(const T* element) {
(void)element; // Debug-only assert
return reinterpret_cast<const TLinkListNode*>(reinterpret_cast<const char*>(element) - I);
}
static TLinkListNode* Element_toNode(T* element) {
(void)element; // Debug-only assert
return reinterpret_cast<TLinkListNode*>(reinterpret_cast<char*>(element) - I);
}
static const T* Element_toValue(const TLinkListNode* node) {
(void)node; // Debug-only assert
return reinterpret_cast<const T*>(reinterpret_cast<const char*>(node) + I);
}
static T* Element_toValue(TLinkListNode* node) {
(void)node; // Debug-only assert
return reinterpret_cast<T*>(reinterpret_cast<char*>(node) + I);
}
iterator Erase(T* element) {
TLinkListNode* node = Element_toNode(element);
return ((TNodeLinkList*)this)->Erase(node);
iterator Insert(iterator iter, T* element) {
return iterator(TNodeLinkList::Insert(iter.base, Element_toNode(element)));
}
iterator Erase(T* element) { return iterator(TNodeLinkList::Erase(Element_toNode(element))); }
TLinkList::iterator end() {
return iterator(TNodeLinkList::end());
}
TLinkList::const_iterator end() const {
return TLinkList::const_iterator(((TLinkList*)this)->end());
}
TLinkList::iterator begin() {
return iterator(TNodeLinkList::begin());
}
TLinkList::const_iterator begin() const {
return TLinkList::const_iterator(((TLinkList*)this)->begin());
}
void Push_back(T* element) {
TLinkList::iterator iter = TLinkList::end();
this->Insert(iter, element);
}
T& front() {
JUT_ASSERT(642, !empty());
return *begin();
}
T& back() {
JUT_ASSERT(652, !empty());
return *--TLinkList::end();
iterator begin() { return iterator(TNodeLinkList::begin()); }
const_iterator begin() const { return const_iterator(const_cast<TLinkList*>(this)->begin()); }
iterator end() { return iterator(TNodeLinkList::end()); }
const_iterator end() const { return const_iterator(const_cast<TLinkList*>(this)->end()); }
T& front() { return *begin(); }
T& back() { return *--end(); }
void Push_front(T* element) { Insert(begin(), element); }
void Push_back(T* element) { Insert(end(), element); }
iterator Find(const T* element) {
return iterator(TNodeLinkList::Find(Element_toNode(element)));
}
void Remove(T* element) { TNodeLinkList::Remove(Element_toNode(element)); }
};
template<typename T, int I>
bool operator==(const typename TLinkList<T, I>::const_iterator iter1, const typename TLinkList<T, I>::const_iterator iter2) {
return iter1->node == iter2->node;
}
template<typename T, int I>
bool operator!=(const typename TLinkList<T, I>::const_iterator iter1, const typename TLinkList<T, I>::const_iterator iter2) {
return !(iter1 == iter2);
}
// template<typename T, int I>
// inline bool operator==(typename TLinkList<T, I>::iterator iter1, typename TLinkList<T, I>::iterator iter2) {
// return iter1->node == iter2->node;
// }
// template<typename T, int I>
// inline bool operator!=(typename TLinkList<T, I>::iterator iter1, typename TLinkList<T, I>::iterator iter2) {
// return !(iter1 == iter2);
// }
template <typename T, int I>
struct TLinkList_factory : public TLinkList<T, I> {
virtual ~TLinkList_factory() {}
@@ -208,14 +258,14 @@ struct TLinkList_factory : public TLinkList<T, I> {
template <typename T, int I>
struct TEnumerator {
inline TEnumerator(typename TLinkList<T,I>::const_iterator _current, typename TLinkList<T,I>::const_iterator _end) :
current(_current), end(_end)
{}
inline TEnumerator(typename TLinkList<T, I>::const_iterator _current,
typename TLinkList<T, I>::const_iterator _end)
: current(_current), end(_end) {}
bool isEnd() const { return current.node == end.node; }
operator bool() const { return isEnd(); }
T& operator*() {
T& rv = (T&)*current;
T& rv = (T&)*current;
++current;
return rv;
}
@@ -226,8 +276,8 @@ struct TEnumerator {
template <typename T, int I>
struct TContainerEnumerator_const : public TEnumerator<T, I> {
inline TContainerEnumerator_const(const T* param_0) : TEnumerator<T,I>(param_0->begin(), param_0->end())
{}
inline TContainerEnumerator_const(const T* param_0)
: TEnumerator<T, I>(param_0->begin(), param_0->end()) {}
};
}; // namespace JGadget
+2 -1
View File
@@ -45,8 +45,9 @@ public:
static void setSZSBufferSize(u32 size) { sSZSBufferSize = size; }
// TODO: fix type
static u8 sDvdAramAsyncList[12];
static JSUList<JKRADCommand> sDvdAramAsyncList;
static u32 sSZSBufferSize;
static bool errorRetry;
};
inline JKRAramBlock *JKRDvdToAram(s32 entrynum, u32 p2, JKRExpandSwitch expSwitch, u32 p4, u32 p5, u32 *p6) {
+1 -1
View File
@@ -23,7 +23,7 @@ public:
private:
/* 0x00 */ // vtable
/* 0x04 */ // JKRArchive
/* 0x64 */ s32 field_0x64;
/* 0x64 */ s32 mDataOffset;
/* 0x68 */ JKRDvdFile* mDvdFile;
};
+2 -1
View File
@@ -4,6 +4,7 @@
#include "JSystem/JGadget/binary.h"
#include "JSystem/JGadget/linklist.h"
#include "JSystem/JStudio/JStudio/object-id.h"
#include "JSystem/JUtility/JUTAssert.h"
namespace JStudio {
namespace ctb {
@@ -134,7 +135,7 @@ struct TControl {
TFactory* getFactory() { return pFactory_; }
/* 0x4 */ TFactory* pFactory_;
/* 0x8 */ JGadget::TLinkList<TObject, 2> mList;
/* 0x8 */ JGadget::TLinkList<TObject, -12> mList;
};
struct TParse : public JGadget::binary::TParse_header_block {
+1 -1
View File
@@ -146,7 +146,7 @@ private:
/* 0x04 */ u32 _4;
/* 0x08 */ u32 _8;
/* 0x0C */ TFactory* pFactory;
/* 0x10 */ JGadget::TLinkList<TObject, 12> mObjectContainer;
/* 0x10 */ JGadget::TLinkList<TObject, -12> mObjectContainer;
/* 0x1C */ u32 mStatus;
/* 0x20 */ TObject_control mObject_control;
/* 0x54 */ s32 _54;
+3 -4
View File
@@ -89,10 +89,7 @@ public:
void scrollToLastLine() { scroll(mMaxLines); }
void scrollToFirstLine() { scroll(-mMaxLines); }
private:
/* 0x18 */ JGadget::TLinkListNode mListNode;
private:
/* 0x20 */ u32 field_0x20;
/* 0x24 */ int mMaxLines;
/* 0x28 */ u8* mBuf;
@@ -133,8 +130,10 @@ public:
static JUTConsoleManager* sManager;
typedef JGadget::TLinkList<JUTConsole, -offsetof(JUTConsole, mListNode)> ConsoleList;
private:
/* 0x00 */ JGadget::TLinkList<JUTConsole, 4> mLinkList;
/* 0x00 */ ConsoleList soLink_;
/* 0x0C */ JUTConsole* mActiveConsole;
/* 0x10 */ JUTConsole* mDirectConsole;
}; // Size: 0x14
+1
View File
@@ -27,6 +27,7 @@ public:
const cXyz& GetEndP(void) const { return mEnd; }
cXyz& GetEndP(void) { return mEnd; }
cXyz& GetEnd() { return mEnd; }
const cXyz& GetEnd() const { return mEnd; }
}; // Size = 0x1C
STATIC_ASSERT(0x1C == sizeof(cM3dGLin));
+19
View File
@@ -4,4 +4,23 @@
#include "dolphin/gd/GDBase.h"
#include "dolphin/gd/GDGeometry.h"
#ifdef __cplusplus
extern "C" {
#endif
static inline u16 __GDLightID2Index(GXLightID id) {
u16 lightIdx = (31 - __cntlzw(id));
if (lightIdx > 7)
lightIdx = 0;
return lightIdx;
}
static inline u16 __GDLightID2Offset(GXLightID id) {
return __GDLightID2Index(id) * 0x10;
}
#ifdef __cplusplus
};
#endif
#endif /* GD_H */
+82 -79
View File
@@ -1392,110 +1392,113 @@ SECTION_SDATA2 static f32 lit_2933 = 0.5f;
/* 802FED84-802FF09C 2F96C4 0318+00 2/2 0/0 0/0 .text
* setTexCoord__10J2DPictureFPQ29JGeometry8TVec2<s>PC10JUTTexture10J2DBinding9J2DMirrorb */
// matches with literals
#ifdef NONMATCHING
void J2DPicture::setTexCoord(JGeometry::TVec2<s16>* param_0, JUTTexture const* param_1,
J2DBinding param_2, J2DMirror param_3, bool param_4) {
u8 var_r0;
u8 var_r4;
u8 var_r7;
u8 var_r9;
J2DBinding binding, J2DMirror mirror, bool rotate90) {
bool bindLeft;
bool bindRight;
bool bindTop;
bool bindBottom;
f32 sp14;
f32 sp10;
f32 spC;
f32 sp8;
if (!rotate90) {
if (mirror & J2DMirror_X)
bindLeft = binding & J2DBind_Right;
else
bindLeft = binding & J2DBind_Left;
f32 var_f0;
f32 var_f2;
f32 var_f3;
f32 var_f4;
f32 var_f5;
if (mirror & J2DMirror_X)
bindRight = binding & J2DBind_Left;
else
bindRight = binding & J2DBind_Right;
if (!param_4) {
var_r0 = (param_3 & 2) ? (param_2 & 4) : (param_2 & 8);
var_r4 = (param_3 & 2) ? (param_2 & 8) : (param_2 & 4);
var_r7 = (param_3 & 1) ? (param_2 & 1) : (param_2 & 2);
var_r9 = (param_3 & 1) ? (param_2 & 1) : (param_2 & 2);
if (mirror & J2DMirror_Y)
bindTop = binding & J2DBind_Bottom;
else
bindTop = binding & J2DBind_Top;
if (mirror & J2DMirror_Y)
bindBottom = binding & J2DBind_Top;
else
bindBottom = binding & J2DBind_Bottom;
} else {
var_r0 = (param_3 & 2) ? (param_2 & 1) : (param_2 & 2);
var_r4 = (param_3 & 2) ? (param_2 & 2) : (param_2 & 1);
var_r7 = (param_3 & 1) ? (param_2 & 8) : (param_2 & 4);
var_r9 = (param_3 & 1) ? (param_2 & 4) : (param_2 & 8);
if (mirror & J2DMirror_X)
bindLeft = binding & J2DBind_Bottom;
else
bindLeft = binding & J2DBind_Top;
if (mirror & J2DMirror_X)
bindRight = binding & J2DBind_Top;
else
bindRight = binding & J2DBind_Bottom;
if (mirror & J2DMirror_Y)
bindTop = binding & J2DBind_Left;
else
bindTop = binding & J2DBind_Right;
if (mirror & J2DMirror_Y)
bindBottom = binding & J2DBind_Right;
else
bindBottom = binding & J2DBind_Left;
}
if (!param_4) {
var_f2 = getHeight();
} else {
var_f2 = getWidth();
}
f32 rectWidth;
f32 rectHeight;
if (!param_4) {
var_f3 = getWidth();
} else {
var_f3 = getHeight();
}
rectWidth = !rotate90 ? getWidth() : getHeight();
rectHeight = !rotate90 ? getHeight() : getWidth();
f32 texWidth;
f32 texHeight;
if (param_1 == NULL) {
var_f4 = var_f2;
var_f5 = var_f3;
texWidth = rectWidth;
texHeight = rectHeight;
} else {
var_f4 = param_1->getWidth();
var_f5 = param_1->getHeight();
texWidth = param_1->getWidth();
texHeight = param_1->getHeight();
}
if (var_r0 != 0) {
sp14 = 0.0f;
if (var_r4 != 0) {
var_f0 = 1.0f;
} else {
var_f0 = var_f2 / var_f4;
}
spC = var_f0;
} else if (var_r4 != 0) {
sp14 = 1.0f - (var_f2 / var_f4);
spC = 1.0f;
f32 s0, t0, s1, t1;
if (bindLeft) {
s0 = 0.0f;
s1 = bindRight ? 1.0f : (rectWidth / texWidth);
} else if (bindRight) {
s0 = 1.0f - (rectWidth / texWidth);
s1 = 1.0f;
} else {
sp14 = 0.5f - ((var_f2 / var_f4) * 0.5f);
spC = 0.5f + ((var_f2 / var_f4) * 0.5f);
s0 = 0.5f - (rectWidth / texWidth) / 2.0f;
s1 = 0.5f + (rectWidth / texWidth) / 2.0f;
}
if (var_r7 != 0) {
sp10 = 0.0f;
f32 var_f0_2;
if (var_r9 != 0) {
var_f0_2 = 1.0f;
} else {
var_f0_2 = var_f3 / var_f5;
}
sp8 = var_f0_2;
} else if (var_r9 != 0) {
sp10 = 1.0f - (var_f3 / var_f5);
sp8 = 1.0f;
if (bindTop) {
t0 = 0.0f;
t1 = bindBottom ? 1.0f : (rectHeight / texHeight);
} else if (bindBottom) {
t0 = 1.0f - (rectHeight / texHeight);
t1 = 1.0f;
} else {
sp10 = 0.5f - ((var_f3 / var_f5) * 0.5f);
sp8 = 0.5f + ((var_f3 / var_f5) * 0.5f);
t0 = 0.5f - (rectHeight / texHeight) / 2.0f;
t1 = 0.5f + (rectHeight / texHeight) / 2.0f;
}
if (param_3 & 2) {
swap(sp14, spC);
if (mirror & J2DMirror_X) {
swap(s0, s1);
}
if (mirror & J2DMirror_Y) {
swap(t0, t1);
}
if (param_3 & 1) {
swap(sp10, sp8);
}
s16 temp_r27 = J2DCast_F32_to_S16(s0, 8);
s16 temp_r28 = J2DCast_F32_to_S16(s1, 8);
s16 temp_r30 = J2DCast_F32_to_S16(t0, 8);
s16 temp_r31 = J2DCast_F32_to_S16(t1, 8);
s16 temp_r27 = J2DCast_F32_to_S16(sp14, 8);
s16 temp_r28 = J2DCast_F32_to_S16(spC, 8);
s16 temp_r30 = J2DCast_F32_to_S16(sp10, 8);
s16 temp_r31 = J2DCast_F32_to_S16(sp8, 8);
if (!param_4) {
if (!rotate90) {
param_0[0].set(temp_r27, temp_r30);
param_0[1].set(temp_r28, temp_r30);
param_0[2].set(temp_r28, temp_r31);
param_0[3].set(temp_r27, temp_r31);
param_0[2].set(temp_r27, temp_r31);
param_0[3].set(temp_r28, temp_r31);
} else {
param_0[0].set(temp_r27, temp_r31);
param_0[1].set(temp_r27, temp_r30);
+6 -6
View File
@@ -965,10 +965,10 @@ void J2DWindowEx::setAnimation(J2DAnmVtxColor* param_0) {
for (u8 i = 0; i < 4; i++) {
if (field_0x168[i] != 0xffff) {
for (u16 j = 0; j < uVar3; j++) {
J3DAnmVtxColorIndexDataItem* puVar1 = param_0->getAnmVtxColorIndexData(0, j);
J3DAnmVtxColorIndexData* puVar1 = param_0->getAnmVtxColorIndexData(0, j);
u16* indexPointer = param_0->getVtxColorIndexPointer(0);
u16* indexPointer2 = indexPointer + puVar1->offset;
for (u16 k = 0; k < puVar1->count; k++) {
u16* indexPointer2 = indexPointer + (u32)puVar1->mpData;
for (u16 k = 0; k < puVar1->mNum; k++) {
if (indexPointer2[k] == field_0x168[i]) {
mAnmVtxColor = param_0;
field_0x17c |= 1 << i;
@@ -1143,10 +1143,10 @@ const J2DAnmTransform* J2DWindowEx::animationPane(J2DAnmTransform const* param_0
for (u8 i = 0; i < 4; i++) {
if ((field_0x17c & (1 << i))) {
for (u16 j = 0; j < uVar3; j++) {
J3DAnmVtxColorIndexDataItem* puVar1 = mAnmVtxColor->getAnmVtxColorIndexData(0, j);
J3DAnmVtxColorIndexData* puVar1 = mAnmVtxColor->getAnmVtxColorIndexData(0, j);
u16* indexPointer = mAnmVtxColor->getVtxColorIndexPointer(0);
u16* indexPointer2 = indexPointer + puVar1->offset;
for (u16 k = 0; k < puVar1->count; k++) {
u16* indexPointer2 = indexPointer + (u32)puVar1->mpData;
for (u16 k = 0; k < puVar1->mNum; k++) {
if (indexPointer2[k] == field_0x168[i]) {
mAnmVtxColor->getColor(0, j, local_38[i]);
goto nexti;
+12 -12
View File
@@ -620,7 +620,7 @@ asm J3DAnmVtxColor::J3DAnmVtxColor() {
/* 8032A30C-8032A368 324C4C 005C+00 0/0 1/1 0/0 .text __ct__18J3DAnmVtxColorFullFv */
J3DAnmVtxColorFull::J3DAnmVtxColorFull() {
for (int i = 0; i < 2; i++) {
field_0x18[i] = 0;
mpTable[i] = 0;
}
}
@@ -638,7 +638,7 @@ asm void J3DAnmVtxColorFull::getColor(u8 param_0, u16 param_1, _GXColor* param_2
/* 8032A4E0-8032A53C 324E20 005C+00 0/0 1/1 0/0 .text __ct__17J3DAnmVtxColorKeyFv */
J3DAnmVtxColorKey::J3DAnmVtxColorKey() {
for (int i = 0; i < 2; i++) {
field_0x18[i] = 0;
mpTable[i] = 0;
}
}
@@ -685,11 +685,11 @@ asm void J3DAnmColor::searchUpdateMaterialID(J3DMaterialTable* param_0) {
/* 8032A93C-8032A990 32527C 0054+00 0/0 1/1 0/0 .text __ct__15J3DAnmColorFullFv */
J3DAnmColorFull::J3DAnmColorFull() {
field_0x2c = 0;
field_0x30 = 0;
field_0x34 = 0;
field_0x38 = 0;
field_0x3c = 0;
mColorR = 0;
mColorG = 0;
mColorB = 0;
mColorA = 0;
mAnmTable = 0;
}
/* 8032A990-8032AB00 3252D0 0170+00 1/0 0/0 0/0 .text getColor__15J3DAnmColorFullCFUsP8_GXColor */
@@ -804,8 +804,8 @@ void J3DAnmTexPattern::searchUpdateMaterialID(J3DModelData* param_0) {
/* 8032B0C0-8032B1D4 325A00 0114+00 1/1 1/1 0/0 .text
* searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP16J3DMaterialTable */
void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DMaterialTable* param_0) {
for (u16 i = 0; i < u16(field_0x14 / 3); i++) {
s32 r3 = param_0->getMaterialName()->getIndex(field_0x30.getName(i));
for (u16 i = 0; i < u16(mTrackNum / 3); i++) {
s32 r3 = param_0->getMaterialName()->getIndex(mUpdateMaterialName.getName(i));
if (r3 != -1) {
mUpdateMaterialID[i] = r3;
} else {
@@ -813,11 +813,11 @@ void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DMaterialTable* param_0) {
}
}
for (u16 i = 0; i < u16(field_0x4a / 3); i++) {
s32 r3 = param_0->getMaterialName()->getIndex(field_0x64.getName(i));
s32 r3 = param_0->getMaterialName()->getIndex(mPostUpdateMaterialName.getName(i));
if (r3 != -1) {
field_0x60[i] = r3;
mPostUpdateMaterialID[i] = r3;
} else {
field_0x60[i] = -1;
mPostUpdateMaterialID[i] = -1;
}
}
}
+18 -25
View File
@@ -230,9 +230,7 @@ s32 J3DModel::createShapePacket(J3DModelData* p_modelData) {
/* 803273CC-803275FC 321D0C 0230+00 1/1 0/0 0/0 .text createMatPacket__8J3DModelFP12J3DModelDataUl
*/
#if defined NON_MATCHING
s32 J3DModel::createMatPacket(J3DModelData* p_modelData, u32 flag) {
// regalloc
if (p_modelData->getMaterialNum() != 0) {
mMatPacket = new J3DMatPacket[p_modelData->getMaterialNum()];
@@ -243,19 +241,20 @@ s32 J3DModel::createMatPacket(J3DModelData* p_modelData, u32 flag) {
s32 ret;
u16 matNum = p_modelData->getMaterialNum();
u16 i = 0;
u32 singleDLFlag = flag & 0x40000;
for (; i < matNum; i++) {
for (u16 i = 0; i < matNum; i++) {
J3DMaterial* materialNode = p_modelData->getMaterialNodePointer(i);
J3DMatPacket* pkt = getMatPacket(i);
J3DMatPacket* pkt = mMatPacket + i;
u16 shapeIndex = materialNode->getShape()->getIndex();
J3DShapePacket* shapePacket = getShapePacket(shapeIndex);
pkt->mpMaterial = materialNode;
pkt->mpInitShapePacket = shapePacket;
J3DShapePacket* shapePacket = mShapePacket + shapeIndex;
pkt->setMaterial(materialNode);
pkt->setInitShapePacket(shapePacket);
pkt->addShapePacket(shapePacket);
pkt->mpTexture = p_modelData->getMaterialTable().getTexture();
pkt->mDiffFlag = materialNode->mDiffFlag;
pkt->setTexture(p_modelData->getTexture());
pkt->setMaterialID(materialNode->mDiffFlag);
if (p_modelData->getModelDataType() == 1) {
pkt->mFlags |= 0x01;
@@ -310,16 +309,6 @@ s32 J3DModel::createMatPacket(J3DModelData* p_modelData, u32 flag) {
return kJ3DError_Success;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 J3DModel::createMatPacket(J3DModelData* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/createMatPacket__8J3DModelFP12J3DModelDataUl.s"
}
#pragma pop
#endif
/* 803275FC-8032767C 321F3C 0080+00 0/0 1/1 0/0 .text newDifferedDisplayList__8J3DModelFUl */
s32 J3DModel::newDifferedDisplayList(u32 flag) {
@@ -373,7 +362,7 @@ void J3DModel::calcMaterial() {
u16 matNum = mModelData->getMaterialNum();
for (u16 i = 0; i < matNum; i++) {
j3dSys.setMatPacket(&mMatPacket[i]);
J3DMaterial* material = mModelData->getMaterialNodePointer(i);
if (material->getMaterialAnm() != NULL) {
material->getMaterialAnm()->calc(material);
@@ -401,7 +390,8 @@ void J3DModel::calcDiffTexMtx() {
num = getModelData()->getShapeNum();
for (u16 i = 0; i < num; i++) {
J3DShapePacket* shapePacket = getShapePacket(i);
J3DTexGenBlock* texGenBlock = getModelData()->getShapeNodePointer(i)->getMaterial()->getTexGenBlock();
J3DTexGenBlock* texGenBlock =
getModelData()->getShapeNodePointer(i)->getMaterial()->getTexGenBlock();
for (u16 j = 0; (int)j < 8; j++) {
J3DTexMtx* texMtxNode = texGenBlock->getTexMtx(j);
J3DTexMtxObj* texMtxObj = shapePacket->getTexMtxObj();
@@ -620,11 +610,13 @@ void J3DModel::viewCalc() {
if (mModelData->checkFlag(0x10)) {
if (getMtxCalcMode() == 2) {
J3DCalcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx, (MtxP)&mInternalView);
J3DCalcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx,
(MtxP)&mInternalView);
}
} else if (isCpuSkinningOn()) {
if (getMtxCalcMode() == 2) {
J3DCalcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx, (MtxP)&mInternalView);
J3DCalcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx,
(MtxP)&mInternalView);
}
} else if (checkFlag(J3DMdlFlag_SkinPosCpu)) {
mMtxBuffer->calcDrawMtx(getMtxCalcMode(), mBaseScale, mBaseTransformMtx);
@@ -663,7 +655,8 @@ void J3DModel::calcBumpMtx() {
for (; i < materialNum; i++) {
J3DMaterial* material = getModelData()->getMaterialNodePointer(i);
if (material->getNBTScale()->mbHasScale == 1) {
material->getShape()->calcNBTScale(*material->getNBTScale()->getScale(), getNrmMtxPtr(), getBumpMtxPtr(bumpMtxIdx));
material->getShape()->calcNBTScale(*material->getNBTScale()->getScale(),
getNrmMtxPtr(), getBumpMtxPtr(bumpMtxIdx));
DCStoreRange(getBumpMtxPtr(bumpMtxIdx), getModelData()->getDrawMtxNum() * 0x24);
bumpMtxIdx++;
}
+108 -118
View File
@@ -5,6 +5,7 @@
#include "JSystem/J3DGraphBase/J3DGD.h"
#include "dol2asm.h"
#include "dolphin/gd.h"
#include "dolphin/os.h"
//
@@ -74,8 +75,8 @@ void J3DGDSetGenMode(u8 texGenNum, u8 colorChanNum, u8 tevStageNum, u8 indTexSta
GDOverflowCheck(0xa);
J3DGDWriteBPCmd(0xfe07fc3f);
static u8 cm2hw[4] = {0, 2, 1, 3};
J3DGDWriteBPCmd(texGenNum | colorChanNum << 4 | (tevStageNum - 1) << 0xa
| cm2hw[cullMode] << 0xe | indTexStageNum << 0x10);
J3DGDWriteBPCmd(texGenNum | colorChanNum << 4 | (tevStageNum - 1) << 0xa |
cm2hw[cullMode] << 0xe | indTexStageNum << 0x10);
}
/* 8030D210-8030D364 307B50 0154+00 0/0 1/1 0/0 .text J3DGDSetGenMode_3Param__FUcUcUc */
@@ -86,48 +87,40 @@ void J3DGDSetGenMode_3Param(u8 texGenNum, u8 tevStageNum, u8 indTexStageNum) {
}
/* 8030D364-8030D65C 307CA4 02F8+00 0/0 1/1 0/0 .text J3DGDSetLightAttn__F10_GXLightIDffffff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGDSetLightAttn(_GXLightID param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4,
f32 param_5, f32 param_6) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DGD/J3DGDSetLightAttn__F10_GXLightIDffffff.s"
void J3DGDSetLightAttn(GXLightID id, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2) {
J3DGDWriteXFCmdHdr(0x0604 + __GDLightID2Offset(id), 6);
J3DGDWrite_f32(a0);
J3DGDWrite_f32(a1);
J3DGDWrite_f32(a2);
J3DGDWrite_f32(k0);
J3DGDWrite_f32(k1);
J3DGDWrite_f32(k2);
}
#pragma pop
/* 8030D65C-8030D76C 307F9C 0110+00 0/0 1/1 0/0 .text J3DGDSetLightColor__F10_GXLightID8_GXColor
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGDSetLightColor(_GXLightID param_0, _GXColor param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DGD/J3DGDSetLightColor__F10_GXLightID8_GXColor.s"
void J3DGDSetLightColor(GXLightID id, GXColor color) {
J3DGDWriteXFCmd(0x0603 + __GDLightID2Offset(id),
(color.r << 24) | (color.g << 16) | (color.b << 8) | (color.a << 0));
}
#pragma pop
/* 8030D76C-8030D938 3080AC 01CC+00 0/0 1/1 0/0 .text J3DGDSetLightPos__F10_GXLightIDfff
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGDSetLightPos(_GXLightID param_0, f32 param_1, f32 param_2, f32 param_3) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DGD/J3DGDSetLightPos__F10_GXLightIDfff.s"
void J3DGDSetLightPos(GXLightID id, f32 x, f32 y, f32 z) {
J3DGDWriteXFCmdHdr(0x060A + __GDLightID2Offset(id), 3);
J3DGDWrite_f32(x);
J3DGDWrite_f32(y);
J3DGDWrite_f32(z);
}
#pragma pop
/* 8030D938-8030DB04 308278 01CC+00 0/0 1/1 0/0 .text J3DGDSetLightDir__F10_GXLightIDfff
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGDSetLightDir(_GXLightID param_0, f32 param_1, f32 param_2, f32 param_3) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DGD/J3DGDSetLightDir__F10_GXLightIDfff.s"
void J3DGDSetLightDir(GXLightID id, f32 x, f32 y, f32 z) {
J3DGDWriteXFCmdHdr(0x060D + __GDLightID2Offset(id), 3);
J3DGDWrite_f32(x);
J3DGDWrite_f32(y);
J3DGDWrite_f32(z);
}
#pragma pop
/* 8030DB04-8030E064 308444 0560+00 1/0 1/1 0/0 .text
* J3DGDSetVtxAttrFmtv__F9_GXVtxFmtPC17_GXVtxAttrFmtListb */
@@ -239,17 +232,19 @@ void J3DGDSetVtxAttrFmtv(GXVtxFmt fmt, GXVtxAttrFmtList const* fmtList, bool par
}
}
GDOverflowCheck(0x12);
J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP0 + fmt, pos_cnt | pos_type << 1 | pos_shift << 4
| nrm_cnt << 9 | nrm_type << 0xa | clr0_cnt << 0xd | clr0_type << 0xe | clr1_cnt << 0x11
| clr1_type << 0x12 | tex0_cnt << 0x15 | tex0_type << 0x16 | tex0_shift << 0x19
| 0x40000000 | local_34 << 0x1f);
J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP1 + fmt, tex1_cnt | tex1_type << 1 | tex1_shift << 4
| tex2_cnt << 9 | tex2_type << 0xa | tex2_shift << 0xd | tex3_cnt << 0x12
| tex3_type << 0x13 | tex3_shift << 0x16 | tex4_cnt << 0x1b | tex4_type << 0x1c
| 0x80000000);
J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP2 + fmt, tex4_shift | tex5_cnt << 5 | tex5_type << 6
| tex5_shift << 9 | tex6_cnt << 0xe | tex6_type << 0xf | tex6_shift << 0x12
| tex7_cnt << 0x17 | tex7_type << 0x18 | tex7_shift << 0x1b);
J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP0 + fmt,
pos_cnt | pos_type << 1 | pos_shift << 4 | nrm_cnt << 9 | nrm_type << 0xa |
clr0_cnt << 0xd | clr0_type << 0xe | clr1_cnt << 0x11 | clr1_type << 0x12 |
tex0_cnt << 0x15 | tex0_type << 0x16 | tex0_shift << 0x19 | 0x40000000 |
local_34 << 0x1f);
J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP1 + fmt,
tex1_cnt | tex1_type << 1 | tex1_shift << 4 | tex2_cnt << 9 | tex2_type << 0xa |
tex2_shift << 0xd | tex3_cnt << 0x12 | tex3_type << 0x13 |
tex3_shift << 0x16 | tex4_cnt << 0x1b | tex4_type << 0x1c | 0x80000000);
J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP2 + fmt,
tex4_shift | tex5_cnt << 5 | tex5_type << 6 | tex5_shift << 9 |
tex6_cnt << 0xe | tex6_type << 0xf | tex6_shift << 0x12 | tex7_cnt << 0x17 |
tex7_type << 0x18 | tex7_shift << 0x1b);
}
/* 8030E064-8030E234 3089A4 01D0+00 1/0 1/1 0/0 .text
@@ -358,23 +353,22 @@ void J3DGDSetTexCoordGen(GXTexGenType texGenType, GXTexGenSrc texGenSrc) {
break;
}
J3DGDWrite_u32(
proj_type << (31 - GX_XF_TEX_PROJTYPE_END)
| input_form << (31 - GX_XF_TEX_INPUTFORM_END)
| texgen_type << (31 - GX_XF_TEX_TEXGENTYPE_END)
| src_row << (31 - GX_XF_TEX_SRCROW_END)
| bump_src_tex << (31 - GX_XF_TEX_BUMPSRCTEX_END)
| bump_src_light << (31 - GX_XF_TEX_BUMPSRCLIGHT_END)
);
proj_type << (31 - GX_XF_TEX_PROJTYPE_END) | input_form << (31 - GX_XF_TEX_INPUTFORM_END) |
texgen_type << (31 - GX_XF_TEX_TEXGENTYPE_END) | src_row << (31 - GX_XF_TEX_SRCROW_END) |
bump_src_tex << (31 - GX_XF_TEX_BUMPSRCTEX_END) |
bump_src_light << (31 - GX_XF_TEX_BUMPSRCLIGHT_END));
}
/* 8030E234-8030E438 308B74 0204+00 0/0 16/16 0/0 .text
* J3DGDSetTexCoordScale2__F13_GXTexCoordIDUsUcUcUsUcUc */
void J3DGDSetTexCoordScale2(GXTexCoordID param_0, u16 param_1, u8 param_2, u8 param_3,
u16 param_4, u8 param_5, u8 param_6) {
void J3DGDSetTexCoordScale2(GXTexCoordID param_0, u16 param_1, u8 param_2, u8 param_3, u16 param_4,
u8 param_5, u8 param_6) {
GDOverflowCheck(0xf);
J3DGDWriteBPCmd(0xfe03ffff);
J3DGDWriteBPCmd((param_1 - 1) | param_2 << 0x10 | param_3 << 0x11 | (param_0 * 2 + 0x30) << 0x18);
J3DGDWriteBPCmd((param_4 - 1) | param_5 << 0x10 | param_6 << 0x11 | (param_0 * 2 + 0x31) << 0x18);
J3DGDWriteBPCmd((param_1 - 1) | param_2 << 0x10 | param_3 << 0x11 |
(param_0 * 2 + 0x30) << 0x18);
J3DGDWriteBPCmd((param_4 - 1) | param_5 << 0x10 | param_6 << 0x11 |
(param_0 * 2 + 0x31) << 0x18);
}
/* 8045090C-80450914 00038C 0008+00 1/1 0/0 0/0 .sdata J3DGDTexMode0Ids */
@@ -413,18 +407,19 @@ static u8 GX2HWFiltConv[6] = {
void J3DGDSetTexLookupMode(GXTexMapID param_0, GXTexWrapMode param_1, GXTexWrapMode param_2,
GXTexFilter param_3, GXTexFilter param_4, f32 param_5, f32 param_6,
f32 param_7, u8 param_8, u8 param_9, GXAnisotropy param_10) {
J3DGDWriteBPCmd(param_1 | param_2 << 2 | (param_4 == GX_LINEAR) << 4
| GX2HWFiltConv[param_3] << 5 | (param_9 == 0) << 8 | ((int)(param_7 * 32.0f) & 0xff) << 9
| param_10 << 0x13 | param_8 << 0x15 | J3DGDTexMode0Ids[param_0] << 0x18);
J3DGDWriteBPCmd(((int)(param_5 * 16.0f) & 0xff) | ((int)(param_6 * 16.0f) & 0xff) << 8
| J3DGDTexMode1Ids[param_0] << 0x18);
J3DGDWriteBPCmd(param_1 | param_2 << 2 | (param_4 == GX_LINEAR) << 4 |
GX2HWFiltConv[param_3] << 5 | (param_9 == 0) << 8 |
((int)(param_7 * 32.0f) & 0xff) << 9 | param_10 << 0x13 | param_8 << 0x15 |
J3DGDTexMode0Ids[param_0] << 0x18);
J3DGDWriteBPCmd(((int)(param_5 * 16.0f) & 0xff) | ((int)(param_6 * 16.0f) & 0xff) << 8 |
J3DGDTexMode1Ids[param_0] << 0x18);
}
/* 8030E5D4-8030E67C 308F14 00A8+00 0/0 1/1 0/0 .text
* J3DGDSetTexImgAttr__F11_GXTexMapIDUsUs9_GXTexFmt */
void J3DGDSetTexImgAttr(GXTexMapID param_0, u16 param_1, u16 param_2, GXTexFmt param_3) {
J3DGDWriteBPCmd((param_1 - 1) | (param_2 - 1) << 0xa | param_3 << 0x14
| J3DGDTexImage0Ids[param_0] << 0x18);
J3DGDWriteBPCmd((param_1 - 1) | (param_2 - 1) << 0xa | param_3 << 0x14 |
J3DGDTexImage0Ids[param_0] << 0x18);
}
/* 8030E67C-8030E70C 308FBC 0090+00 0/0 1/1 0/0 .text J3DGDSetTexImgPtr__F11_GXTexMapIDPv
@@ -456,58 +451,53 @@ void J3DGDLoadTlut(void* param_0, u32 param_1, GXTlutSize param_2) {
J3DGDWriteBPCmd(0x0f000000);
}
/* ############################################################################################## */
/* 80456330-80456334 004930 0004+00 1/1 0/0 0/0 .sdata2 @1233 */
SECTION_SDATA2 static f32 lit_1233 = 1024.0f;
/* 8030EB30-8030EE10 309470 02E0+00 0/0 2/2 0/0 .text J3DGDSetIndTexMtx__F14_GXIndTexMtxIDPA3_fSc
*/
#ifdef NONMATCHING
void J3DGDSetIndTexMtx(GXIndTexMtxID mtxID, Mtx3P mtx, s8 param_2) {
void J3DGDSetIndTexMtx(GXIndTexMtxID id, Mtx3P mtx, s8 exp) {
s32 mtx32[6];
u32 idx;
switch (mtxID) {
switch (id) {
case GX_ITM_0:
case GX_ITM_1:
case GX_ITM_2:
idx = mtxID - GX_ITM_0;
idx = (u32)(id - GX_ITM_0);
break;
case GX_ITM_S0:
case GX_ITM_S1:
case GX_ITM_S2:
idx = mtxID - GX_ITM_S0;
idx = (u32)(id - GX_ITM_S0);
break;
case GX_ITM_T0:
case GX_ITM_T1:
case GX_ITM_T2:
idx = mtxID - GX_ITM_T0;
idx = (u32)(id - GX_ITM_T0);
break;
case GX_ITM_3:
case GX_ITM_S3:
default:
idx = 0;
break;
}
u32 m00 = (int)(mtx[0][0] * 1024.0f) & 0x7ff;
u32 m10 = (int)(mtx[1][0] * 1024.0f) & 0x7ff;
u32 m01 = (int)(mtx[0][1] * 1024.0f) & 0x7ff;
u32 m11 = (int)(mtx[1][1] * 1024.0f) & 0x7ff;
u32 m02 = (int)(mtx[0][2] * 1024.0f) & 0x7ff;
u32 m12 = (int)(mtx[1][2] * 1024.0f) & 0x7ff;
GDOverflowCheck(0xf);
J3DGDWriteBPCmd(m00 | m10 << 0xb | ((param_2 + 0x11) & 3) << 0x16 | (idx * 3 + GX_BP_REG_INDMTX0A) << 0x18);
J3DGDWriteBPCmd(m01 | m11 << 0xb | ((param_2 + 0x11) >> 2 & 3) << 0x16 | (idx * 3 + GX_BP_REG_INDMTX0B) << 0x18);
J3DGDWriteBPCmd(m02 | m12 << 0xb | ((param_2 + 0x11) >> 4 & 3) << 0x16 | (idx * 3 + GX_BP_REG_INDMTX0C) << 0x18);
exp += 17;
mtx32[0] = (s32)(mtx[0][0] * 1024.0f) & 0x7FF;
mtx32[1] = (s32)(mtx[1][0] * 1024.0f) & 0x7FF;
mtx32[2] = (s32)(mtx[0][1] * 1024.0f) & 0x7FF;
mtx32[3] = (s32)(mtx[1][1] * 1024.0f) & 0x7FF;
mtx32[4] = (s32)(mtx[0][2] * 1024.0f) & 0x7FF;
mtx32[5] = (s32)(mtx[1][2] * 1024.0f) & 0x7FF;
GDOverflowCheck(15);
J3DGDWriteBPCmd((mtx32[0] << 0) | (mtx32[1] << 11) | (((exp >> 0) & 0x03) << 22) |
(0x06 + idx * 3) << 24);
J3DGDWriteBPCmd((mtx32[2] << 0) | (mtx32[3] << 11) | (((exp >> 2) & 0x03) << 22) |
(0x07 + idx * 3) << 24);
J3DGDWriteBPCmd((mtx32[4] << 0) | (mtx32[5] << 11) | (((exp >> 4) & 0x03) << 22) |
(0x08 + idx * 3) << 24);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGDSetIndTexMtx(_GXIndTexMtxID param_0, f32 (*param_1)[3], s8 param_2) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DGD/J3DGDSetIndTexMtx__F14_GXIndTexMtxIDPA3_fSc.s"
}
#pragma pop
#endif
/* 8030EE10-8030EF08 309750 00F8+00 0/0 2/2 0/0 .text
* J3DGDSetIndTexCoordScale__F16_GXIndTexStageID14_GXIndTexScale14_GXIndTexScale14_GXIndTexScale14_GXIndTexScale
@@ -515,20 +505,20 @@ asm void J3DGDSetIndTexMtx(_GXIndTexMtxID param_0, f32 (*param_1)[3], s8 param_2
void J3DGDSetIndTexCoordScale(GXIndTexStageID stage, GXIndTexScale scale0, GXIndTexScale scale1,
GXIndTexScale scale2, GXIndTexScale scale3) {
GDOverflowCheck(5);
J3DGDWriteBPCmd(scale0 | scale1 << 4 | scale2 << 8 | scale3 << 0xc
| ((stage >> 1) + GX_BP_REG_RAS1_SS0) << 0x18);
J3DGDWriteBPCmd(scale0 | scale1 << 4 | scale2 << 8 | scale3 << 0xc |
((stage >> 1) + GX_BP_REG_RAS1_SS0) << 0x18);
}
/* 8030EF08-8030F108 309848 0200+00 0/0 2/2 0/0 .text
* J3DGDSetIndTexOrder__FUl13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID
*/
void J3DGDSetIndTexOrder(u32 count, GXTexCoordID coord0, GXTexMapID map0,
GXTexCoordID coord1, GXTexMapID map1, GXTexCoordID coord2,
GXTexMapID map2, GXTexCoordID coord3, GXTexMapID map3) {
void J3DGDSetIndTexOrder(u32 count, GXTexCoordID coord0, GXTexMapID map0, GXTexCoordID coord1,
GXTexMapID map1, GXTexCoordID coord2, GXTexMapID map2, GXTexCoordID coord3,
GXTexMapID map3) {
GDOverflowCheck(0xa);
J3DGDWriteBPCmd(map0 & 7 | (coord0 & 7) << 3 | (map1 & 7) << 6 | (coord1 & 7) << 9
| (map2 & 7) << 0xc | (coord2 & 7) << 0xf | (map3 & 7) << 0x12 | (coord3 & 7) << 0x15
| GX_BP_REG_RAS1_IREF << 0x18);
J3DGDWriteBPCmd(map0 & 7 | (coord0 & 7) << 3 | (map1 & 7) << 6 | (coord1 & 7) << 9 |
(map2 & 7) << 0xc | (coord2 & 7) << 0xf | (map3 & 7) << 0x12 |
(coord3 & 7) << 0x15 | GX_BP_REG_RAS1_IREF << 0x18);
u32 imask = 0;
for (u32 i = 0; i < count; i++) {
switch (i) {
@@ -559,12 +549,12 @@ void J3DGDSetTevOrder(GXTevStageID stage, GXTexCoordID coord0, GXTexMapID map0,
coord1 = coord1 >= GX_MAXCOORD ? GX_TEXCOORD0 : coord1;
GDOverflowCheck(5);
static u8 c2r[32] = {0, 1, 0, 1, 0, 1, 7, 5, 6, 0, 0, 0, 0, 0, 0, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
J3DGDWriteBPCmd((map0 & 7) | coord0 << 3
| (map0 != GX_TEXMAP_NULL && !(map0 & GX_TEXMAP_DISABLE)) << 6 | c2r[channel0 & 0xf] << 7
| (map1 & 7) << 0xc | coord1 << 0xf
| (map1 != GX_TEXMAP_NULL && !(map1 & GX_TEXMAP_DISABLE)) << 0x12
| c2r[channel1 & 0xf] << 0x13 | (stage / 2 + GX_BP_REG_RAS1_TREF0) << 0x18);
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
J3DGDWriteBPCmd((map0 & 7) | coord0 << 3 |
(map0 != GX_TEXMAP_NULL && !(map0 & GX_TEXMAP_DISABLE)) << 6 |
c2r[channel0 & 0xf] << 7 | (map1 & 7) << 0xc | coord1 << 0xf |
(map1 != GX_TEXMAP_NULL && !(map1 & GX_TEXMAP_DISABLE)) << 0x12 |
c2r[channel1 & 0xf] << 0x13 | (stage / 2 + GX_BP_REG_RAS1_TREF0) << 0x18);
}
/* 8030F294-8030F3FC 309BD4 0168+00 0/0 11/11 0/0 .text
@@ -580,10 +570,10 @@ void J3DGDSetTevKColor(GXTevKColorID id, GXColor color) {
/* 8030F3FC-8030F630 309D3C 0234+00 0/0 11/11 0/0 .text
* J3DGDSetTevColorS10__F11_GXTevRegID11_GXColorS10 */
void J3DGDSetTevColorS10(GXTevRegID id, GXColorS10 color) {
u32 cmd0 = (color.r & 0x7ff) | (color.a & 0x7ff) << 0xc
| (id * 2 + GX_BP_REG_TEVREG0LO) << 0x18;
u32 cmd1 = (color.b & 0x7ff) | (color.g & 0x7ff) << 0xc
| (id * 2 + GX_BP_REG_TEVREG0HI) << 0x18;
u32 cmd0 =
(color.r & 0x7ff) | (color.a & 0x7ff) << 0xc | (id * 2 + GX_BP_REG_TEVREG0LO) << 0x18;
u32 cmd1 =
(color.b & 0x7ff) | (color.g & 0x7ff) << 0xc | (id * 2 + GX_BP_REG_TEVREG0HI) << 0x18;
GDOverflowCheck(0x14);
J3DGDWriteBPCmd(cmd0);
J3DGDWriteBPCmd(cmd1);
@@ -626,8 +616,8 @@ void J3DGDSetFog(GXFogType fogType, f32 param_1, f32 param_2, f32 nearZ, f32 far
void J3DGDSetFogRangeAdj(u8 param_0, u16 param_1, GXFogAdjTable* table) {
if (param_0 != 0) {
for (int i = 0; i < 0xa; i += 2) {
J3DGDWriteBPCmd((i / 2 + GX_BP_REG_FOGRANGEK0) << 0x18
| table->fogVals[i + 1] << 0xc | table->fogVals[i]);
J3DGDWriteBPCmd((i / 2 + GX_BP_REG_FOGRANGEK0) << 0x18 | table->fogVals[i + 1] << 0xc |
table->fogVals[i]);
}
}
u32 cmd = GX_BP_REG_FOGRANGE << 0x18 | (param_1 + 0x156) | param_0 << 0xa;
@@ -728,13 +718,13 @@ SECTION_SDATA static u8 J3DTexImage2Ids[8] = {
/* 8030FD68-8030FDE8 30A6A8 0080+00 0/0 1/1 0/0 .text
* J3DFifoLoadTexCached__F11_GXTexMapIDUl15_GXTexCacheSizeUl15_GXTexCacheSize */
#ifdef NONMATCHING
void J3DFifoLoadTexCached(GXTexMapID id, u32 param_1, GXTexCacheSize param_2,
u32 param_3, GXTexCacheSize param_4) {
J3DFifoLoadBPCmd(param_1 >> 5 | (param_2 + 3) << 0xf | (param_2 + 3) << 0x12
| J3DTexImage1Ids[id] << 0x18);
void J3DFifoLoadTexCached(GXTexMapID id, u32 param_1, GXTexCacheSize param_2, u32 param_3,
GXTexCacheSize param_4) {
J3DFifoLoadBPCmd(param_1 >> 5 | (param_2 + 3) << 0xf | (param_2 + 3) << 0x12 |
J3DTexImage1Ids[id] << 0x18);
if (param_4 != GX_TEXCACHE_NONE && param_3 < 0x100000) {
J3DFifoLoadBPCmd(param_3 >> 5 | (param_4 + 3) << 0xf | (param_4 + 3) << 0x12
| J3DTexImage2Ids[id] << 0x18);
J3DFifoLoadBPCmd(param_3 >> 5 | (param_4 + 3) << 0xf | (param_4 + 3) << 0x12 |
J3DTexImage2Ids[id] << 0x18);
}
}
#else
+133 -141
View File
@@ -4,16 +4,35 @@
//
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "dolphin/gd.h"
#include "JSystem/J3DGraphBase/J3DGD.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/os.h"
//
// Types:
//
inline void loadMatColors(const J3DGXColor* color) {
J3DGDWriteXFCmdHdr(0x100C, 2);
J3DGDWrite_u32(*(u32*)color);
J3DGDWrite_u32(*(u32*)(color + 1));
}
struct J3DSys {
static u8 sTexCoordScaleTable[64 + 4 /* padding */];
};
inline void loadAmbColors(const J3DGXColor* color) {
J3DGDWriteXFCmdHdr(0x100A, 2);
J3DGDWrite_u32(*(u32*)color);
J3DGDWrite_u32(*(u32*)(color + 1));
}
inline void loadTexCoordScale(GXTexCoordID coord, const J3DTexCoordScaleInfo& info) {
J3DGDSetTexCoordScale2(coord, info.field_0x00, info.field_0x04 == 1, 0, info.field_0x02, info.field_0x06 == 1, 0);
}
inline void loadTevColor(u32 reg, const J3DGXColorS10& color) {
J3DGDSetTevColorS10(GXTevRegID(reg + 1), color);
}
inline void loadTevKColor(u32 reg, const J3DGXColor& color) {
J3DGDSetTevKColor(GXTevKColorID(reg), color);
}
//
// Forward References:
@@ -591,12 +610,10 @@ extern "C" extern void* __vt__10J3DPEBlock[31];
extern "C" extern void* __vt__11J3DIndBlock[19];
extern "C" extern void* __vt__14J3DTexGenBlock[27];
extern "C" extern void* __vt__13J3DColorBlock[36];
extern "C" extern u8 j3dSys[284];
extern "C" u8 sTexCoordScaleTable__6J3DSys[64 + 4 /* padding */];
extern "C" extern u8 j3dTevSwapTableTable[1024];
extern "C" extern u8 j3dAlphaCmpTable[768];
extern "C" extern u8 j3dZModeTable[96];
extern "C" extern u8 __GDCurrentDL[4];
extern "C" extern GXColor j3dDefaultColInfo;
extern "C" extern u32 j3dDefaultAmbInfo;
extern "C" extern GXColorS10 j3dDefaultTevColor;
@@ -637,45 +654,34 @@ asm void J3DColorBlockLightOn::initialize() {
#pragma pop
/* 80317644-80317674 311F84 0030+00 0/0 2/2 0/0 .text initialize__21J3DTexGenBlockPatchedFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockPatched::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__21J3DTexGenBlockPatchedFv.s"
void J3DTexGenBlockPatched::initialize() {
mTexGenNum = 0;
for (u32 i = 0; i < 8; i++)
mTexMtx[i] = NULL;
mTexMtxOffset = 0;
}
#pragma pop
/* 80317674-803176A4 311FB4 0030+00 0/0 1/1 0/0 .text initialize__15J3DTexGenBlock4Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlock4::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__15J3DTexGenBlock4Fv.s"
void J3DTexGenBlock4::initialize() {
mTexGenNum = 0;
for (u32 i = 0; i < 4; i++)
mTexMtx[i] = NULL;
mTexMtxOffset = 0;
}
#pragma pop
/* 803176A4-803176D4 311FE4 0030+00 0/0 1/1 0/0 .text initialize__19J3DTexGenBlockBasicFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockBasic::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__19J3DTexGenBlockBasicFv.s"
void J3DTexGenBlockBasic::initialize() {
mTexGenNum = 0;
for (u32 i = 0; i < 8; i++)
mTexMtx[i] = NULL;
mTexMtxOffset = 0;
}
#pragma pop
/* 803176D4-803176E0 312014 000C+00 0/0 1/1 0/0 .text initialize__15J3DTevBlockNullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlockNull::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__15J3DTevBlockNullFv.s"
void J3DTevBlockNull::initialize() {
mTexNoOffset = 0;
}
#pragma pop
/* 803176E0-803177E8 312020 0108+00 0/0 1/1 0/0 .text initialize__18J3DTevBlockPatchedFv
*/
@@ -689,14 +695,12 @@ asm void J3DTevBlockPatched::initialize() {
#pragma pop
/* 803177E8-80317810 312128 0028+00 0/0 1/1 0/0 .text initialize__12J3DTevBlock1Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock1::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__12J3DTevBlock1Fv.s"
void J3DTevBlock1::initialize() {
mTexNo[0] = 0xFFFF;
mTevStage[0].field_0x0 = 0xC0;
mTevStage[0].field_0x4 = 0xC1;
mTexNoOffset = 0;
}
#pragma pop
/* 80317810-803178EC 312150 00DC+00 0/0 1/1 0/0 .text initialize__12J3DTevBlock2Fv */
#pragma push
@@ -729,34 +733,26 @@ asm void J3DTevBlock16::initialize() {
#pragma pop
/* 80317B28-80317B34 312468 000C+00 0/0 1/1 0/0 .text initialize__15J3DIndBlockFullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DIndBlockFull::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__15J3DIndBlockFullFv.s"
void J3DIndBlockFull::initialize() {
mIndTexStageNum = 0;
}
#pragma pop
/* 80317B34-80317B58 312474 0024+00 0/0 1/1 0/0 .text initialize__16J3DPEBlockFogOffFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockFogOff::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__16J3DPEBlockFogOffFv.s"
void J3DPEBlockFogOff::initialize() {
mAlphaComp.mID = 0xFFFF;
mZMode.mZModeID = 0xFFFF;
mZCompLoc = 0xFF;
mDither = 1;
}
#pragma pop
/* 80317B58-80317B84 312498 002C+00 0/0 1/1 0/0 .text initialize__14J3DPEBlockFullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockFull::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/initialize__14J3DPEBlockFullFv.s"
void J3DPEBlockFull::initialize() {
mAlphaComp.mID = 0xFFFF;
mZMode.mZModeID = 0xFFFF;
mZCompLoc = 0xFF;
mDither = 1;
mFogOffset = 0;
}
#pragma pop
/* 80317B84-80317B8C 3124C4 0008+00 1/0 0/0 0/0 .text countDLSize__21J3DColorBlockLightOffFv */
s32 J3DColorBlockLightOff::countDLSize() {
@@ -905,14 +901,14 @@ asm void J3DColorBlockLightOff::patch() {
SECTION_SDATA static u32 SizeOfLoadMatColors = 0x0000000D;
/* 80318F00-803190AC 313840 01AC+00 2/0 0/0 0/0 .text patchMatColor__21J3DColorBlockLightOffFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOff::patchMatColor() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/patchMatColor__21J3DColorBlockLightOffFv.s"
void J3DColorBlockLightOff::patchMatColor() {
GDSetCurrOffset(mMatColorOffset);
u8* start = GDGetCurrPointer();
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
u8* end = GDGetCurrPointer();
DCStoreRange(start, end - start);
}
#pragma pop
/* ############################################################################################## */
/* 80450964-80450968 0003E4 0004+00 2/2 0/0 0/0 .sdata SizeOfLoadAmbColors */
@@ -936,24 +932,20 @@ asm void J3DColorBlockLightOff::patchLight() {
#pragma pop
/* 803194E8-80319534 313E28 004C+00 1/0 0/0 0/0 .text patch__20J3DColorBlockLightOnFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOn::patch() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/patch__20J3DColorBlockLightOnFv.s"
void J3DColorBlockLightOn::patch() {
patchMatColor();
patchLight();
}
#pragma pop
/* 80319534-803196E0 313E74 01AC+00 1/0 0/0 0/0 .text patchMatColor__20J3DColorBlockLightOnFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOn::patchMatColor() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/patchMatColor__20J3DColorBlockLightOnFv.s"
void J3DColorBlockLightOn::patchMatColor() {
GDSetCurrOffset(mMatColorOffset);
u8* start = GDGetCurrPointer();
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
u8* end = GDGetCurrPointer();
DCStoreRange(start, end - start);
}
#pragma pop
/* 803196E0-80319B4C 314020 046C+00 1/0 0/0 0/0 .text patchLight__20J3DColorBlockLightOnFv */
#pragma push
@@ -966,24 +958,18 @@ asm void J3DColorBlockLightOn::patchLight() {
#pragma pop
/* 80319B4C-80319BB4 31448C 0068+00 2/0 0/0 0/0 .text diff__21J3DColorBlockLightOffFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOff::diff(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/diff__21J3DColorBlockLightOffFUl.s"
void J3DColorBlockLightOff::diff(u32 flag) {
if (flag & 0x1)
diffMatColor();
if (flag & 0x2)
diffColorChan();
}
#pragma pop
/* 80319BB4-80319D30 3144F4 017C+00 2/0 0/0 0/0 .text diffMatColor__21J3DColorBlockLightOffFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOff::diffMatColor() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/diffMatColor__21J3DColorBlockLightOffFv.s"
void J3DColorBlockLightOff::diffMatColor() {
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
}
#pragma pop
/* 80319D30-8031A13C 314670 040C+00 2/0 0/0 0/0 .text diffColorChan__21J3DColorBlockLightOffFv */
#pragma push
@@ -996,34 +982,31 @@ asm void J3DColorBlockLightOff::diffColorChan() {
#pragma pop
/* 8031A13C-8031A1DC 314A7C 00A0+00 1/0 0/0 0/0 .text diff__20J3DColorBlockLightOnFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOn::diff(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/diff__20J3DColorBlockLightOnFUl.s"
void J3DColorBlockLightOn::diff(u32 flag) {
if (flag & 4)
diffAmbColor();
if (flag & 1)
diffMatColor();
if (flag & 2)
diffColorChan();
if ((flag >> 4) & 0x0f)
diffLightObj((flag >> 4) & 0x0f);
}
#pragma pop
/* 8031A1DC-8031A358 314B1C 017C+00 1/0 0/0 0/0 .text diffAmbColor__20J3DColorBlockLightOnFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOn::diffAmbColor() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/diffAmbColor__20J3DColorBlockLightOnFv.s"
void J3DColorBlockLightOn::diffAmbColor() {
GDOverflowCheck(SizeOfLoadAmbColors);
loadAmbColors(mAmbColor);
}
#pragma pop
/* 8031A358-8031A4D4 314C98 017C+00 1/0 0/0 0/0 .text diffMatColor__20J3DColorBlockLightOnFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOn::diffMatColor() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/diffMatColor__20J3DColorBlockLightOnFv.s"
void J3DColorBlockLightOn::diffMatColor() {
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
}
#pragma pop
/* 8031A4D4-8031A8E0 314E14 040C+00 1/0 0/0 0/0 .text diffColorChan__20J3DColorBlockLightOnFv */
#pragma push
@@ -1046,34 +1029,43 @@ asm void J3DColorBlockLightOn::diffLightObj(u32 param_0) {
#pragma pop
/* 8031A948-8031A9E8 315288 00A0+00 1/0 0/0 0/0 .text load__15J3DTexGenBlock4Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlock4::load() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/load__15J3DTexGenBlock4Fv.s"
void J3DTexGenBlock4::load() {
mTexMtxOffset = GDGetCurrOffset();
for (u32 i = 0; i < 4; i++) {
if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) {
mTexMtx[i]->load(i);
}
}
if (mTexGenNum != 0) {
loadTexCoordGens(mTexGenNum, mTexCoord);
}
}
#pragma pop
/* 8031A9E8-8031AA88 315328 00A0+00 1/0 0/0 0/0 .text load__19J3DTexGenBlockBasicFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockBasic::load() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/load__19J3DTexGenBlockBasicFv.s"
void J3DTexGenBlockBasic::load() {
mTexMtxOffset = GDGetCurrOffset();
for (u32 i = 0; i < 8; i++) {
if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) {
mTexMtx[i]->load(i);
}
}
if (mTexGenNum != 0) {
loadTexCoordGens(mTexGenNum, mTexCoord);
}
}
#pragma pop
/* 8031AA88-8031AB18 3153C8 0090+00 1/0 0/0 0/0 .text patch__21J3DTexGenBlockPatchedFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockPatched::patch() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/patch__21J3DTexGenBlockPatchedFv.s"
void J3DTexGenBlockPatched::patch() {
GDSetCurrOffset(mTexMtxOffset);
u8* start = GDGetCurrPointer();
for (u32 i = 0; i < 8; i++) {
if (mTexMtx[i]) {
mTexMtx[i]->load(i);
}
}
u8* end = GDGetCurrPointer();
DCStoreRange(start, end - start);
}
#pragma pop
/* 8031AB18-8031ABC0 315458 00A8+00 1/0 0/0 0/0 .text patch__15J3DTexGenBlock4Fv */
#pragma push
+15 -22
View File
@@ -491,37 +491,30 @@ J3DIndBlock* J3DMaterial::createIndBlock(int param_0) {
/* 80315F60-80316100 3108A0 01A0+00 0/0 3/3 0/0 .text createPEBlock__11J3DMaterialFUlUl
*/
// rv is in r5 for some reason
#ifdef NONMATCHING
J3DPEBlock* J3DMaterial::createPEBlock(u32 param_0, u32 param_1) {
J3DPEBlock* J3DMaterial::createPEBlock(u32 createFlag, u32 materialMode) {
J3DPEBlock* rv = NULL;
if (param_0 == 0) {
if (param_1 & 1) {
return new J3DPEBlockOpa();
} else if (param_1 & 2) {
return new J3DPEBlockTexEdge();
} else if (param_1 & 4) {
return new J3DPEBlockXlu();
if (createFlag == 0) {
if (materialMode & 1) {
rv = new J3DPEBlockOpa();
return rv;
} else if (materialMode & 2) {
rv = new J3DPEBlockTexEdge();
return rv;
} else if (materialMode & 4) {
rv = new J3DPEBlockXlu();
return rv;
}
}
if (param_0 == 0x10000000) {
if (createFlag == 0x10000000) {
rv = new J3DPEBlockFull();
} else if (param_0 == 0x20000000) {
} else if (createFlag == 0x20000000) {
rv = new J3DPEBlockFogOff();
}
return rv;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DPEBlock* J3DMaterial::createPEBlock(u32 param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/createPEBlock__11J3DMaterialFUlUl.s"
}
#pragma pop
#endif
/* 80316100-80316150 310A40 0050+00 0/0 2/2 0/0 .text calcSizeColorBlock__11J3DMaterialFUl */
u32 J3DMaterial::calcSizeColorBlock(u32 param_0) {
+6 -24
View File
@@ -1,31 +1,11 @@
//
// Generated By: dol2asm
// Translation Unit: J3DPacket
//
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "string.h"
#include "dol2asm.h"
#include "dolphin/os/OSCache.h"
#include "dolphin/os/OSInterrupt.h"
#include "dolphin/types.h"
#include "global.h"
//
// Forward References:
//
//
// External References:
//
//
// Declarations:
//
#include "string.h"
J3DError J3DDisplayListObj::newDisplayList(u32 capacity) {
mCapacity = ALIGN_NEXT(capacity, 0x20);
@@ -138,12 +118,12 @@ void J3DPacket::addChildPacket(J3DPacket* pPacket) {
/* ############################################################################################## */
/* 803CD900-803CD920 02AA20 0020+00 1/1 0/0 0/0 .data sDifferedRegister */
SECTION_DATA static u32 sDifferedRegister[8] = {
static u32 sDifferedRegister[8] = {
0x00000004, 0x00000001, 0x00000002, 0x01000000, 0x10000000, 0x20000000, 0x02000000, 0x08000000,
};
/* 803CD920-803CD940 02AA40 0020+00 1/1 0/0 0/0 .data sSizeOfDiffered */
SECTION_DATA static s32 sSizeOfDiffered[8] = {
static s32 sSizeOfDiffered[8] = {
13, 13, 21, 120, 55, 15, 19, 45,
};
@@ -353,7 +333,9 @@ void J3DShapePacket::prepareDraw() const {
mpShape->offFlag(J3DShpFlag_SkinPosCpu);
}
if (mpModel->checkFlag(J3DMdlFlag_SkinNrmCpu) && mpShape->checkFlag(J3DShpFlag_EnableLod) == false) {
if (mpModel->checkFlag(J3DMdlFlag_SkinNrmCpu) &&
mpShape->checkFlag(J3DShpFlag_EnableLod) == false)
{
mpShape->onFlag(J3DShpFlag_SkinNrmCpu);
} else {
mpShape->offFlag(J3DShpFlag_SkinNrmCpu);
+1 -18
View File
@@ -1,30 +1,13 @@
//
// Generated By: dol2asm
// Translation Unit: J3DShape
//
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DVertex.h"
#include "dolphin/gd/GDGeometry.h"
#include "dolphin/gd.h"
#include "dolphin/os.h"
#include "dolphin/types.h"
//
// Forward References:
//
//
// External References:
//
void J3DGDSetVtxAttrFmtv(_GXVtxFmt, GXVtxAttrFmtList const*, bool);
void J3DFifoLoadPosMtxImm(Mtx, u32);
void J3DFifoLoadNrmMtxImm(Mtx, u32);
//
// Declarations:
//
enum {
kVcdVatDLSize = 0xC0,
+24 -48
View File
@@ -80,25 +80,13 @@ extern "C" u8 sTexCoordScaleTable__6J3DSys[64 + 4 /* padding */];
//
/* 80323590-80323644 31DED0 00B4+00 0/0 3/3 0/0 .text load__11J3DLightObjCFUl */
// missing instruction
#ifdef NONMATCHING
void J3DLightObj::load(u32 param_0) const {
void J3DLightObj::load(u32 lightIdx) const {
GDOverflowCheck(0x48);
J3DGDSetLightPos(GXLightID(param_0 * 2), mInfo.mLightPosition.x, mInfo.mLightPosition.y, mInfo.mLightPosition.z);
J3DGDSetLightAttn(GXLightID(param_0 * 2), mInfo.mCosAtten.x, mInfo.mCosAtten.y, mInfo.mCosAtten.z, mInfo.mDistAtten.x, mInfo.mDistAtten.y, mInfo.mDistAtten.z);
J3DGDSetLightColor(GXLightID(param_0 * 2), mInfo.mColor);
J3DGDSetLightDir(GXLightID(param_0 * 2), mInfo.mLightDirection.x, mInfo.mLightDirection.y, mInfo.mLightDirection.z);
J3DGDSetLightPos(GXLightID(1 << lightIdx), mInfo.mLightPosition.x, mInfo.mLightPosition.y, mInfo.mLightPosition.z);
J3DGDSetLightAttn(GXLightID(1 << lightIdx), mInfo.mCosAtten.x, mInfo.mCosAtten.y, mInfo.mCosAtten.z, mInfo.mDistAtten.x, mInfo.mDistAtten.y, mInfo.mDistAtten.z);
J3DGDSetLightColor(GXLightID(1 << lightIdx), mInfo.mColor);
J3DGDSetLightDir(GXLightID(1 << lightIdx), mInfo.mLightDirection.x, mInfo.mLightDirection.y, mInfo.mLightDirection.z);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DLightObj::load(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/load__11J3DLightObjCFUl.s"
}
#pragma pop
#endif
/* 80323644-803238C4 31DF84 0280+00 0/0 3/3 0/0 .text loadTexCoordGens__FUlP11J3DTexCoord
*/
@@ -489,33 +477,33 @@ COMPILER_STRIP_GATE(0x803A1FF8, &lit_1197);
static u8 j3dTexCoordTable[7623 + 1 /* padding */];
/* 80324194-8032423C 31EAD4 00A8+00 0/0 1/1 0/0 .text makeTexCoordTable__Fv */
// regswap
#ifdef NONMATCHING
void makeTexCoordTable() {
u8 bytes[] = { 0x1e, 0x21, 0x24, 0x27, 0x2a, 0x2d, 0x30, 0x33, 0x36, 0x39, 0x3c };
u8 texMtx[] = {
GX_TEXMTX0,
GX_TEXMTX1,
GX_TEXMTX2,
GX_TEXMTX3,
GX_TEXMTX4,
GX_TEXMTX5,
GX_TEXMTX6,
GX_TEXMTX7,
GX_TEXMTX8,
GX_TEXMTX9,
GX_IDENTITY,
};
u8* table = j3dTexCoordTable;
for (u32 i = 0; i < 11; i++) {
for (u32 j = 0; j < 21; j++) {
for (int k = 0; k < 11; k++) {
u32 idx = i * 0xe7 + j * 11 + k;
table[idx * 3] = i;
for (int k = 0; k < ARRAY_SIZE(texMtx); k++) {
u32 idx = j * 11 + i * 0xe7 + k;
table[idx * 3 + 0] = i;
table[idx * 3 + 1] = j;
table[idx * 3 + 2] = bytes[k];
table[idx * 3 + 2] = texMtx[k];
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void makeTexCoordTable() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/makeTexCoordTable__Fv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80436A60-80436E60 063780 0400+00 1/1 3/3 0/0 .bss j3dTevSwapTableTable */
@@ -547,31 +535,19 @@ extern u8 j3dZModeTable[96];
u8 j3dZModeTable[96];
/* 803242A8-80324314 31EBE8 006C+00 0/0 1/1 0/0 .text makeZModeTable__Fv */
// regswap
#ifdef NONMATCHING
void makeZModeTable() {
u8* table = j3dZModeTable;
for (int i = 0; i < 2; i++) {
for (u32 j = 0; j < 8; j++) {
for (int k = 0; k < 2; k++) {
u32 idx = i * 16 + j * 2 + k;
table[idx * 3] = i;
u32 idx = j * 2 + i * 16 + k;
table[idx * 3 + 0] = i;
table[idx * 3 + 1] = j;
table[idx * 3 + 2] = k;
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void makeZModeTable() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/makeZModeTable__Fv.s"
}
#pragma pop
#endif
/* 80324314-80324358 31EC54 0044+00 0/0 1/1 0/0 .text makeTevSwapTable__Fv */
void makeTevSwapTable() {
+239 -33
View File
@@ -4,13 +4,10 @@
//
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "JSystem/J3DGraphBase/J3DStruct.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "dol2asm.h"
//
// Types:
//
struct J3DTextureSRTInfo {};
#include "dolphin/base/PPCArch.h"
//
// Forward References:
@@ -44,23 +41,19 @@ extern "C" u8 sincosTable___5JMath[65536];
//
/* 80311630-80311638 -00001 0008+00 0/0 0/0 0/0 .text __MTGQR7__FUl */
asm void __MTGQR7(u32 param_0) {
void __MTGQR7(register u32 v) {
// clang-format off
nofralloc
mtspr 0x397, r3
blr
asm {
mtspr GQR7, v
}
// clang-format on
}
/* 80311638-80311670 30BF78 0038+00 0/0 2/2 0/0 .text J3DGQRSetup7__FUlUlUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGQRSetup7(u32 param_0, u32 param_1, u32 param_2, u32 param_3) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DGQRSetup7__FUlUlUlUl.s"
void J3DGQRSetup7(u32 r0, u32 r1, u32 r2, u32 r3) {
u32 v = (((r0 << 8) + r1) << 16) | ((r2 << 8) + r3);
__MTGQR7(v);
}
#pragma pop
/* ############################################################################################## */
/* 80456378-8045637C 004978 0004+00 6/6 0/0 0/0 .sdata2 @435 */
@@ -72,6 +65,44 @@ SECTION_SDATA2 static u8 lit_435[4] = {
};
/* 80311670-80311760 30BFB0 00F0+00 0/0 2/2 0/0 .text J3DCalcBBoardMtx__FPA4_f */
// this uses a non-standard sqrtf, not sure why or how its supposed to be setup
#ifdef NONMATCHING
static inline f32 sqrtf2(f32 x) {
if (x > 0.0f) {
f32 guess = (f32)__frsqrte(x);
return (f32)(x * guess);
}
return x;
}
void J3DCalcBBoardMtx(Mtx mtx) {
f32 x = (mtx[0][0] * mtx[0][0]) + (mtx[1][0] * mtx[1][0]) + (mtx[2][0] * mtx[2][0]);
f32 y = (mtx[0][1] * mtx[0][1]) + (mtx[1][1] * mtx[1][1]) + (mtx[2][1] * mtx[2][1]);
f32 z = (mtx[0][2] * mtx[0][2]) + (mtx[1][2] * mtx[1][2]) + (mtx[2][2] * mtx[2][2]);
if (x > 0.0f) {
x *= sqrtf2(x);
}
if (y > 0.0f) {
y *= sqrtf2(y);
}
if (z > 0.0f) {
z *= sqrtf2(z);
}
mtx[0][0] = x;
mtx[0][1] = 0.0f;
mtx[0][2] = 0.0f;
mtx[1][0] = 0.0f;
mtx[1][1] = y;
mtx[1][2] = 0.0f;
mtx[2][0] = 0.0f;
mtx[2][1] = 0.0f;
mtx[2][2] = z;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -80,6 +111,7 @@ asm void J3DCalcBBoardMtx(f32 (*param_0)[4]) {
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DCalcBBoardMtx__FPA4_f.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803A1E30-803A1E50 02E490 0020+00 0/0 1/1 0/0 .rodata j3dDefaultTransformInfo */
@@ -121,25 +153,58 @@ asm void J3DPSCalcInverseTranspose(f32 (*param_0)[4], f32 (*param_1)[3]) {
/* 80311964-80311A24 30C2A4 00C0+00 0/0 2/2 2/2 .text
* J3DGetTranslateRotateMtx__FRC16J3DTransformInfoPA4_f */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGetTranslateRotateMtx(J3DTransformInfo const& param_0, f32 (*param_1)[4]) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DGetTranslateRotateMtx__FRC16J3DTransformInfoPA4_f.s"
void J3DGetTranslateRotateMtx(const J3DTransformInfo& tx, Mtx dst) {
f32 sx = JMASSin(tx.mRotation.x), cx = JMASCos(tx.mRotation.x);
f32 sy = JMASSin(tx.mRotation.y), cy = JMASCos(tx.mRotation.y);
f32 sz = JMASSin(tx.mRotation.z), cz = JMASCos(tx.mRotation.z);
dst[2][0] = -sy;
dst[0][0] = cz * cy;
dst[1][0] = sz * cy;
dst[2][1] = cy * sx;
dst[2][2] = cy * cx;
f32 cxsz = cx * sz;
f32 sxcz = sx * cz;
dst[0][1] = sxcz * sy - cxsz;
dst[1][2] = cxsz * sy - sxcz;
f32 sxsz = sx * sz;
f32 cxcz = cx * cz;
dst[0][2] = cxcz * sy + sxsz;
dst[1][1] = sxsz * sy + cxcz;
dst[0][3] = tx.mTranslate.x;
dst[1][3] = tx.mTranslate.y;
dst[2][3] = tx.mTranslate.z;
}
#pragma pop
/* 80311A24-80311ACC 30C364 00A8+00 0/0 1/1 0/0 .text J3DGetTranslateRotateMtx__FsssfffPA4_f */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DGetTranslateRotateMtx(s16 param_0, s16 param_1, s16 param_2, f32 param_3, f32 param_4,
f32 param_5, f32 (*param_6)[4]) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DGetTranslateRotateMtx__FsssfffPA4_f.s"
void J3DGetTranslateRotateMtx(s16 rx, s16 ry, s16 rz, f32 tx, f32 ty, f32 tz, Mtx dst) {
f32 sx = JMASSin(rx), cx = JMASCos(rx);
f32 sy = JMASSin(ry), cy = JMASCos(ry);
f32 sz = JMASSin(rz), cz = JMASCos(rz);
dst[2][0] = -sy;
dst[0][0] = cz * cy;
dst[1][0] = sz * cy;
dst[2][1] = cy * sx;
dst[2][2] = cy * cx;
f32 cxsz = cx * sz;
f32 sxcz = sx * cz;
dst[0][1] = sxcz * sy - cxsz;
dst[1][2] = cxsz * sy - sxcz;
f32 sxsz = sx * sz;
f32 cxcz = cx * cz;
dst[0][2] = cxcz * sy + sxsz;
dst[1][1] = sxsz * sy + cxcz;
dst[0][3] = tx;
dst[1][3] = ty;
dst[2][3] = tz;
}
#pragma pop
/* ############################################################################################## */
/* 8045637C-80456380 00497C 0004+00 4/4 0/0 0/0 .sdata2 @526 */
@@ -147,6 +212,32 @@ SECTION_SDATA2 static f32 lit_526 = 1.0f;
/* 80311ACC-80311B80 30C40C 00B4+00 0/0 3/3 0/0 .text
* J3DGetTextureMtx__FRC17J3DTextureSRTInfoRC3VecPA4_f */
// matches with literals
#ifdef NONMATCHING
void J3DGetTextureMtx(const J3DTextureSRTInfo& srt, const Vec& center, Mtx dst) {
f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation);
f32 cx = srt.mScaleX * cr;
f32 sx = srt.mScaleX * sr;
f32 sy = srt.mScaleY * sr;
f32 cy = srt.mScaleY * cr;
dst[0][0] = cx;
dst[0][1] = -sx;
dst[0][2] = (-cx * center.x + sx * center.y) + center.x + srt.mTranslationX;
dst[1][0] = sy;
dst[1][1] = cy;
dst[1][2] = (-sy * center.x - cy * center.y) + center.y + srt.mTranslationY;
dst[2][3] = 0.0f;
dst[2][1] = 0.0f;
dst[2][0] = 0.0f;
dst[1][3] = 0.0f;
dst[0][3] = 0.0f;
dst[2][2] = 1.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -155,9 +246,36 @@ asm void J3DGetTextureMtx(J3DTextureSRTInfo const& param_0, Vec const& param_1,
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DGetTextureMtx__FRC17J3DTextureSRTInfoRC3VecPA4_f.s"
}
#pragma pop
#endif
/* 80311B80-80311C34 30C4C0 00B4+00 0/0 3/3 0/0 .text
* J3DGetTextureMtxOld__FRC17J3DTextureSRTInfoRC3VecPA4_f */
// matches with literals
#ifdef NONMATCHING
void J3DGetTextureMtxOld(const J3DTextureSRTInfo& srt, const Vec& center, Mtx dst) {
f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation);
f32 cx = srt.mScaleX * cr;
f32 sx = srt.mScaleX * sr;
f32 sy = srt.mScaleY * sr;
f32 cy = srt.mScaleY * cr;
dst[0][0] = cx;
dst[0][1] = -sx;
dst[0][3] = (-cx * center.x + sx * center.y) + center.x + srt.mTranslationX;
dst[1][0] = sy;
dst[1][1] = cy;
dst[1][3] = (-sy * center.x - cy * center.y) + center.y + srt.mTranslationY;
dst[2][3] = 0.0f;
dst[2][1] = 0.0f;
dst[2][0] = 0.0f;
dst[1][2] = 0.0f;
dst[0][2] = 0.0f;
dst[2][2] = 1.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -167,6 +285,7 @@ asm void J3DGetTextureMtxOld(J3DTextureSRTInfo const& param_0, Vec const& param_
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DGetTextureMtxOld__FRC17J3DTextureSRTInfoRC3VecPA4_f.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80456380-80456388 004980 0004+04 2/2 0/0 0/0 .sdata2 @557 */
@@ -178,6 +297,29 @@ SECTION_SDATA2 static f32 lit_557[1 + 1 /* padding */] = {
/* 80311C34-80311CE4 30C574 00B0+00 0/0 3/3 0/0 .text
* J3DGetTextureMtxMaya__FRC17J3DTextureSRTInfoPA4_f */
// matches with literals
#ifdef NONMATCHING
void J3DGetTextureMtxMaya(const J3DTextureSRTInfo& srt, Mtx dst) {
f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation);
f32 tx = srt.mTranslationX - 0.5f;
f32 ty = srt.mTranslationY - 0.5f;
dst[0][0] = srt.mScaleX * cr;
dst[0][1] = srt.mScaleY * sr;
dst[0][2] = tx * cr - sr * (ty + srt.mScaleY) + 0.5f;
dst[1][0] = -srt.mScaleX * sr;
dst[1][1] = srt.mScaleY * cr;
dst[1][2] = -tx * sr - cr * (ty + srt.mScaleY) + 0.5f;
dst[2][3] = 0.0f;
dst[2][1] = 0.0f;
dst[2][0] = 0.0f;
dst[1][3] = 0.0f;
dst[0][3] = 0.0f;
dst[2][2] = 1.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -186,9 +328,33 @@ asm void J3DGetTextureMtxMaya(J3DTextureSRTInfo const& param_0, f32 (*param_1)[4
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DGetTextureMtxMaya__FRC17J3DTextureSRTInfoPA4_f.s"
}
#pragma pop
#endif
/* 80311CE4-80311D94 30C624 00B0+00 0/0 3/3 0/0 .text
* J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f */
// matches with literals
#ifdef NONMATCHING
void J3DGetTextureMtxMayaOld(const J3DTextureSRTInfo& srt, Mtx dst) {
f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation);
f32 tx = srt.mTranslationX - 0.5f;
f32 ty = srt.mTranslationY - 0.5f;
dst[0][0] = srt.mScaleX * cr;
dst[0][1] = srt.mScaleY * sr;
dst[0][3] = tx * cr - sr * (ty + srt.mScaleY) + 0.5f;
dst[1][0] = -srt.mScaleX * sr;
dst[1][1] = srt.mScaleY * cr;
dst[1][3] = -tx * sr - cr * (ty + srt.mScaleY) + 0.5f;
dst[2][3] = 0.0f;
dst[2][1] = 0.0f;
dst[2][0] = 0.0f;
dst[1][2] = 0.0f;
dst[0][2] = 0.0f;
dst[2][2] = 1.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -197,8 +363,46 @@ asm void J3DGetTextureMtxMayaOld(J3DTextureSRTInfo const& param_0, f32 (*param_1
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f.s"
}
#pragma pop
#endif
/* 80311D94-80311DF8 30C6D4 0064+00 0/0 2/2 0/0 .text J3DScaleNrmMtx__FPA4_fRC3Vec */
#ifdef NONMATCHING
void J3DScaleNrmMtx(register Mtx mtx, const register Vec& scl) {
register f32 mtx_xy, mtx_z_, scl_xy, scl_z_;
asm {
/* Row 0 */
psq_l scl_xy, 0(scl), 0, 0
psq_l mtx_xy, 0(mtx), 0, 0
lfs scl_z_, 8(scl)
lfs mtx_z_, 8(mtx)
ps_mul f4, mtx_xy, scl_xy
psq_st f4, 0(mtx), 0, 0
fmuls f4, mtx_z_, scl_z_
stfs f4, 8(mtx)
/* Row 1 */
psq_l scl_xy, 0(scl), 0, 0
psq_l mtx_xy, 16(mtx), 0, 0
lfs scl_z_, 8(scl)
lfs mtx_z_, 24(mtx)
ps_mul f4, mtx_xy, scl_xy
psq_st f4, 16(mtx), 0, 0
fmuls f4, mtx_z_, scl_z_
stfs f4, 24(mtx)
/* Row 2 */
psq_l scl_xy, 0(scl), 0, 0
psq_l mtx_xy, 32(mtx), 0, 0
lfs scl_z_, 8(scl)
lfs mtx_z_, 40(mtx)
ps_mul f4, mtx_xy, scl_xy
psq_st f4, 32(mtx), 0, 0
fmuls f4, mtx_z_, scl_z_
stfs f4, 40(mtx)
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -207,6 +411,7 @@ asm void J3DScaleNrmMtx(f32 (*param_0)[4], Vec const& param_1) {
#include "asm/JSystem/J3DGraphBase/J3DTransform/J3DScaleNrmMtx__FPA4_fRC3Vec.s"
}
#pragma pop
#endif
/* 80311DF8-80311E4C 30C738 0054+00 0/0 5/5 0/0 .text J3DScaleNrmMtx33__FPA3_fRC3Vec */
#pragma push
@@ -248,5 +453,6 @@ asm void J3DPSMtxArrayConcat(f32 (*param_0)[4], f32 (*param_1)[4], f32 (*param_2
/* ############################################################################################## */
/* 803CD8F8-803CD900 02AA18 0008+00 0/0 2/2 0/0 .data PSMulUnit01 */
SECTION_DATA extern f32 PSMulUnit01[2] = {
0.0f, -1.0f,
0.0f,
-1.0f,
};
File diff suppressed because it is too large Load Diff
+150 -26
View File
@@ -4,6 +4,11 @@
//
#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 "dol2asm.h"
#include "dolphin/os.h"
@@ -11,31 +16,37 @@
// Types:
//
struct ResNTAB {};
struct JUTNameTab {
/* 802DE9E0 */ JUTNameTab(ResNTAB 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;
};
struct J3DDeformData {
/* 8032E1F8 */ J3DDeformData();
class J3DClusterLoader {
public:
virtual void* load(const void*) = 0;
/* 803345FC */ virtual ~J3DClusterLoader();
};
struct J3DDeformer {
/* 8032E39C */ J3DDeformer(J3DDeformData*);
};
struct J3DClusterBlock {};
struct J3DClusterLoader_v15 {
class J3DClusterLoader_v15 : public J3DClusterLoader {
public:
/* 803341CC */ J3DClusterLoader_v15();
/* 803341E8 */ ~J3DClusterLoader_v15();
/* 80334244 */ void load(void const*);
/* 803342F8 */ void readCluster(J3DClusterBlock const*);
};
struct J3DClusterLoader {
/* 803345FC */ ~J3DClusterLoader();
/* 80334244 */ virtual void* load(void const*);
/* 803341E8 */ virtual ~J3DClusterLoader_v15();
/* 0x04 */ J3DDeformData* mpDeformData;
};
//
@@ -78,14 +89,16 @@ extern "C" void _restgpr_26();
//
/* 80334130-803341CC 32EA70 009C+00 0/0 1/1 0/0 .text load__24J3DClusterLoaderDataBaseFPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void* J3DClusterLoaderDataBase::load(void const* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/load__24J3DClusterLoaderDataBaseFPCv.s"
void* J3DClusterLoaderDataBase::load(const void* i_data) {
const JUTDataFileHeader* fileHeader = (JUTDataFileHeader*)i_data;
if (fileHeader->mMagic == 'J3D1' && fileHeader->mType == 'bls1') {
J3DClusterLoader_v15 loader;
return loader.load(i_data);
} else if (fileHeader->mMagic == 'J3D2' && fileHeader->mType == 'bls2') {
return NULL;
}
return NULL;
}
#pragma pop
/* ############################################################################################## */
/* 803CF0E8-803CF0F8 02C208 0010+00 2/2 0/0 0/0 .data __vt__20J3DClusterLoader_v15 */
@@ -105,6 +118,10 @@ 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
@@ -113,8 +130,13 @@ asm J3DClusterLoader_v15::J3DClusterLoader_v15() {
#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
@@ -123,6 +145,7 @@ asm J3DClusterLoader_v15::~J3DClusterLoader_v15() {
#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 */
@@ -134,17 +157,117 @@ 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();
const JUTDataFileHeader* fileHeader = (JUTDataFileHeader*)i_data;
const JUTDataBlockHeader* block = &fileHeader->mFirstBlock;
for (int i = 0; i < fileHeader->mBlockNum; i++) {
switch (block->mType) {
case 'CLS1':
readCluster((J3DClusterBlock*)block);
break;
default:
OSReport("Unknown data block\n");
break;
}
block = block->getNext();
}
return mpDeformData;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DClusterLoader_v15::load(void const* param_0) {
// 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 */
#ifdef NONMATCHING
void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
mpDeformData->mClusterNum = block->mClusterNum;
mpDeformData->mClusterKeyNum = block->mClusterKeyNum;
mpDeformData->mVtxPosNum = block->mVtxPosNum;
mpDeformData->mVtxNrmNum = block->mVtxNrmNum;
mpDeformData->mClusterVertexNum = block->mClusterVertexNum;
if (block->mClusterName != NULL) {
mpDeformData->mClusterName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterName));
} else {
mpDeformData->mClusterName = NULL;
}
if (block->mClusterKeyName != NULL) {
mpDeformData->mClusterKeyName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterKeyName));
} else {
mpDeformData->mClusterKeyName = NULL;
}
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];
}
for (int i = 0; i < mpDeformData->getClusterNum(); i++) {
J3DCluster* cluster = &mpDeformData->mClusterPointer[i];
cluster->mClusterKey = JSUConvertOffsetToPtr<J3DClusterKey>(block, 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];
J3DDeformer* deformer = new J3DDeformer(mpDeformData);
if (cluster->field_0x14 != 0) {
deformer->field_0xc = new f32[cluster->field_0x14 * 3];
} else {
deformer->field_0xc = NULL;
}
deformer->mFlags = cluster->mFlags;
deformer->field_0x8 = new f32[cluster->mKeyNum];
cluster->setDeformer(deformer);
}
for (int i = 0; i < mpDeformData->getClusterKeyNum(); i++) {
J3DClusterKey* clusterKey = &mpDeformData->mClusterKeyPointer[i];
clusterKey->field_0x4 = JSUConvertOffsetToPtr<u16>(block, clusterKey->field_0x4);
clusterKey->field_0x8 = JSUConvertOffsetToPtr<u16>(block, clusterKey->field_0x8);
}
for (int i = 0; i < mpDeformData->mClusterVertexNum; i++) {
J3DClusterVertex* clusterVertex = &mpDeformData->mClusterVertex[i];
clusterVertex->field_0x4 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x4);
clusterVertex->field_0x8 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x8);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -153,6 +276,7 @@ asm void J3DClusterLoader_v15::readCluster(J3DClusterBlock const* param_0) {
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/readCluster__20J3DClusterLoader_v15FPC15J3DClusterBlock.s"
}
#pragma pop
#endif
/* 803345FC-80334644 32EF3C 0048+00 1/0 0/0 0/0 .text __dt__16J3DClusterLoaderFv */
#pragma push
-21
View File
@@ -1,30 +1,11 @@
//
// Generated By: dol2asm
// Translation Unit: JFWDisplay
//
#include "JSystem/JFramework/JFWDisplay.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTConsole.h"
#include "JSystem/JUtility/JUTDbPrint.h"
#include "JSystem/JUtility/JUTProcBar.h"
#include "dol2asm.h"
#include "dolphin/gx.h"
#include "dolphin/os.h"
#include "dolphin/types.h"
//
// Forward References:
//
//
// External References:
//
//
// Declarations:
//
/* 80272040-802720F8 26C980 00B8+00 1/1 0/0 0/0 .text ctor_subroutine__10JFWDisplayFb */
void JFWDisplay::ctor_subroutine(bool enableAlpha) {
@@ -637,5 +618,3 @@ static void diagnoseGpHang() {
OSReport("GP is in unknown state.\n");
}
}
/* 8039A878-8039A878 026ED8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+55 -49
View File
@@ -6,6 +6,17 @@
#include "JSystem/JGadget/linklist.h"
#include "dolphin/types.h"
template <typename T>
class TPRIsEqual_pointer_ {
public:
TPRIsEqual_pointer_<T>(const T* p) { this->p_ = p; }
bool operator()(const T& rSrc) const { return &rSrc == this->p_; }
private:
const T* p_;
};
//
// Forward References:
//
@@ -39,85 +50,80 @@ extern "C" void _restgpr_29();
/* 802DCA1C-802DCA58 2D735C 003C+00 1/1 6/6 0/0 .text __dt__Q27JGadget13TNodeLinkListFv
*/
JGadget::TNodeLinkList::~TNodeLinkList() {
}
JGadget::TNodeLinkList::~TNodeLinkList() {}
/* 802DCA58-802DCAA0 2D7398 0048+00 0/0 2/2 0/0 .text
* erase__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iterator */
JGadget::TNodeLinkList::iterator
JGadget::TNodeLinkList::erase(JGadget::TNodeLinkList::iterator it) {
iterator it2 = JGadget::TNodeLinkList::iterator(it);
iterator next = ++it2;
iterator next = it;
++next;
return erase(it, next);
}
/* 802DCAA0-802DCB08 2D73E0 0068+00 1/1 0/0 0/0 .text
* erase__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorQ37JGadget13TNodeLinkList8iterator
*/
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::erase(iterator start, iterator end) {
TLinkListNode* startNode = start.node;
TLinkListNode* endNode = end.node;
while (startNode != endNode) {
TLinkListNode* nextNode = startNode->mNext;
Erase(startNode);
startNode = nextNode;
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::erase(iterator a, iterator b) {
TLinkListNode* cur = a.node;
TLinkListNode* end = b.node;
TLinkListNode* next;
for (; cur != end; cur = next) {
next = cur->mNext;
Erase(cur);
}
return iterator(end.node);
return b;
}
/* 802DCB08-802DCBA8 2D7448 00A0+00 1/1 0/0 0/0 .text
* splice__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorRQ27JGadget13TNodeLinkListQ37JGadget13TNodeLinkList8iterator
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JGadget::TNodeLinkList::splice(JGadget::TNodeLinkList::iterator param_0,
JGadget::TNodeLinkList& param_1,
JGadget::TNodeLinkList::iterator param_2) {
nofralloc
#include "asm/JSystem/JGadget/linklist/func_802DCB08.s"
void JGadget::TNodeLinkList::splice(iterator it, TNodeLinkList& rSrc, iterator itSrc) {
iterator itSrcNext = itSrc;
++itSrcNext;
if ((it == itSrc) || (it == itSrcNext)) {
return;
} else {
TLinkListNode* const node = &(*itSrc);
rSrc.Erase(node);
Insert(it, node);
}
}
#pragma pop
/* 802DCBA8-802DCBD4 2D74E8 002C+00 1/1 7/7 0/0 .text
* Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode */
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::Insert(iterator it, TLinkListNode* node) {
TLinkListNode* itNode = it.node;
TLinkListNode* prev = itNode->mPrev;
node->mNext = itNode;
node->mPrev = prev;
itNode->mPrev = node;
prev->mNext = node;
this->count++;
return iterator(node);
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::Insert(iterator it, TLinkListNode* p) {
TLinkListNode* pIt = it.node;
TLinkListNode* pItPrev = pIt->mPrev;
p->mNext = pIt;
p->mPrev = pItPrev;
pIt->mPrev = p;
pItPrev->mNext = p;
count++;
return iterator(p);
}
/* 802DCBD4-802DCBF8 2D7514 0024+00 2/2 4/4 0/0 .text
* Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode */
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::Erase(TLinkListNode* node) {
TLinkListNode* next = node->mNext;
TLinkListNode* prev = node->mPrev;
next->mPrev = prev;
prev->mNext = next;
this->count--;
return iterator(next);
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::Erase(TLinkListNode* p) {
TLinkListNode* pNext = p->mNext;
TLinkListNode* pPrev = p->mPrev;
pNext->mPrev = pPrev;
pPrev->mNext = pNext;
count--;
return iterator(pNext);
}
/* 802DCBF8-802DCCC8 2D7538 00D0+00 0/0 2/2 0/0 .text
* Remove__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode */
// missing stack
#ifdef NONMATCHING
void JGadget::TNodeLinkList::Remove(TLinkListNode* node) {
TNodeLinkList trashList;
TLinkListNode* myNode = this->ocObject_.mNext;
while (myNode != end().node) {
if (myNode == node) {
TLinkListNode* next = myNode->mNext;
trashList.splice(&trashList.ocObject_, *this, myNode);
myNode = next;
} else {
myNode = myNode->mNext;
}
}
void JGadget::TNodeLinkList::Remove(TLinkListNode* p) {
remove_if(TPRIsEqual_pointer_<TLinkListNode>(p));
}
#else
#pragma push
+56 -82
View File
@@ -1,46 +1,27 @@
//
// Generated By: dol2asm
// Translation Unit: JKRAram
//
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JKernel/JKRAramPiece.h"
#include "JSystem/JKernel/JKRAramStream.h"
#include "JSystem/JKernel/JKRDecomp.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JUtility/JUTException.h"
#include "string.h"
#include "dolphin/ar.h"
#include "dolphin/os/OSCache.h"
#include "dolphin/os/OSInterrupt.h"
#include "global.h"
//
// Forward References:
//
#include "string.h"
static u8* firstSrcData();
static u8* nextSrcData(u8* param_0);
static int JKRDecompressFromAramToMainRam(u32 src, void* dst, u32 srcLength, u32 dstLength, u32 offset,
u32* resourceSize);
int decompSZS_subroutine(u8 *src, u8 *dest);
static int JKRDecompressFromAramToMainRam(u32 src, void* dst, u32 srcLength, u32 dstLength,
u32 offset, u32* resourceSize);
int decompSZS_subroutine(u8* src, u8* dest);
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 804513C8-804513CC 0008C8 0004+00 3/3 9/9 0/0 .sbss sAramObject__7JKRAram */
JKRAram* JKRAram::sAramObject;
/* 802D1FA4-802D2040 2CC8E4 009C+00 0/0 1/1 0/0 .text create__7JKRAramFUlUllll */
JKRAram* JKRAram::create(u32 aram_audio_buffer_size, u32 aram_audio_graph_size,
s32 stream_priority, s32 decomp_priority, s32 piece_priority) {
JKRAram* JKRAram::create(u32 aram_audio_buffer_size, u32 aram_audio_graph_size, s32 stream_priority,
s32 decomp_priority, s32 piece_priority) {
if (!sAramObject) {
sAramObject = new (JKRHeap::getSystemHeap(), 0)
JKRAram(aram_audio_buffer_size, aram_audio_graph_size, piece_priority);
@@ -144,11 +125,15 @@ void JKRAram::changeGroupIdIfNeed(u8* data, int groupId) {
/* 802D233C-802D25B4 2CCC7C 0278+00 0/0 3/3 0/0 .text
* mainRamToAram__7JKRAramFPUcUlUl15JKRExpandSwitchUlP7JKRHeapiPUl */
JKRAramBlock *JKRAram::mainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRExpandSwitch expandSwitch, u32 fileSize, JKRHeap *heap, int id, u32 *pSize) {
JKRAramBlock *block = NULL;
JKRAramBlock* JKRAram::mainRamToAram(u8* buf, u32 bufSize, u32 alignedSize,
JKRExpandSwitch expandSwitch, u32 fileSize, JKRHeap* heap,
int id, u32* pSize) {
JKRAramBlock* block = NULL;
checkOkAddress(buf, bufSize, NULL, 0);
if (expandSwitch == EXPAND_SWITCH_UNKNOWN1) {
expandSwitch = (JKRCheckCompressed_noASR(buf) == COMPRESSION_NONE) ? EXPAND_SWITCH_UNKNOWN0 : EXPAND_SWITCH_UNKNOWN1;
expandSwitch = (JKRCheckCompressed_noASR(buf) == COMPRESSION_NONE) ?
EXPAND_SWITCH_UNKNOWN0 :
EXPAND_SWITCH_UNKNOWN1;
}
if (expandSwitch == EXPAND_SWITCH_UNKNOWN1) {
u32 expandSize = JKRDecompExpandSize(buf);
@@ -156,7 +141,8 @@ JKRAramBlock *JKRAram::mainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRE
fileSize = ALIGN_NEXT(expandSize, 32);
}
if (bufSize == 0) {
JKRAramBlock* allocatedBlock = (JKRAramBlock*)JKRAllocFromAram(fileSize, JKRAramHeap::HEAD);
JKRAramBlock* allocatedBlock =
(JKRAramBlock*)JKRAllocFromAram(fileSize, JKRAramHeap::HEAD);
block = (JKRAramBlock*)allocatedBlock;
if (allocatedBlock == NULL)
return NULL;
@@ -170,29 +156,27 @@ JKRAramBlock *JKRAram::mainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRE
if (alignedSize > fileSize)
alignedSize = fileSize;
void *allocatedMem = JKRAllocFromHeap(heap, fileSize, -32);
void* allocatedMem = JKRAllocFromHeap(heap, fileSize, -32);
if (allocatedMem == NULL) {
if (block != NULL) {
JKRFreeToAram(block);
}
block = NULL;
}
else {
JKRDecompress(buf, (u8 *)allocatedMem, fileSize, 0);
} else {
JKRDecompress(buf, (u8*)allocatedMem, fileSize, 0);
JKRAramPcs(0, (u32)allocatedMem, bufSize, alignedSize, block);
JKRFreeToHeap(heap, allocatedMem);
block = block == NULL ? (JKRAramBlock *)-1 : block;
block = block == NULL ? (JKRAramBlock*)-1 : block;
if (pSize != NULL) {
*pSize = alignedSize;
}
}
}
else {
} else {
if (fileSize != 0 && alignedSize > fileSize)
alignedSize = fileSize;
if (bufSize == 0) {
JKRAramBlock* allocatedBlock = (JKRAramBlock*)JKRAllocFromAram(alignedSize, JKRAramHeap::HEAD);
JKRAramBlock* allocatedBlock =
(JKRAramBlock*)JKRAllocFromAram(alignedSize, JKRAramHeap::HEAD);
block = allocatedBlock;
block->newGroupID(decideAramGroupId(id));
if (block == NULL)
@@ -202,7 +186,7 @@ JKRAramBlock *JKRAram::mainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRE
}
JKRAramPcs(0, (u32)buf, bufSize, alignedSize, block);
block = block == NULL ? (JKRAramBlock *)-1 : block;
block = block == NULL ? (JKRAramBlock*)-1 : block;
if (pSize != NULL)
*pSize = alignedSize;
}
@@ -211,7 +195,8 @@ JKRAramBlock *JKRAram::mainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRE
/* 802D25B4-802D2830 2CCEF4 027C+00 0/0 6/6 0/0 .text
* aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl */
u8 *JKRAram::aramToMainRam(u32 address, u8 *buf, u32 p3, JKRExpandSwitch expandSwitch, u32 p5, JKRHeap *heap, int id, u32 *pSize) {
u8* JKRAram::aramToMainRam(u32 address, u8* buf, u32 p3, JKRExpandSwitch expandSwitch, u32 p5,
JKRHeap* heap, int id, u32* pSize) {
JKRCompression compression = COMPRESSION_NONE;
if (pSize != NULL)
*pSize = 0;
@@ -221,18 +206,19 @@ u8 *JKRAram::aramToMainRam(u32 address, u8 *buf, u32 p3, JKRExpandSwitch expandS
u32 expandSize;
if (expandSwitch == EXPAND_SWITCH_UNKNOWN1) {
u8 buffer[64];
u8 *bufPtr = (u8 *)ALIGN_NEXT((u32)buffer, 32);
JKRAramPcs(1, address, (u32)bufPtr, sizeof(buffer) / 2, NULL); // probably change sizeof(buffer) / 2 to 32
u8* bufPtr = (u8*)ALIGN_NEXT((u32)buffer, 32);
JKRAramPcs(1, address, (u32)bufPtr, sizeof(buffer) / 2,
NULL); // probably change sizeof(buffer) / 2 to 32
compression = JKRCheckCompressed_noASR(bufPtr);
expandSize = JKRDecompExpandSize(bufPtr);
}
if (compression == COMPRESSION_YAZ0) { // SZS
if (compression == COMPRESSION_YAZ0) { // SZS
if (p5 != 0 && p5 < expandSize)
expandSize = p5;
if (buf == NULL)
buf = (u8 *)JKRAllocFromHeap(heap, expandSize, 32);
buf = (u8*)JKRAllocFromHeap(heap, expandSize, 32);
if (buf == NULL)
return NULL;
else {
@@ -240,20 +226,18 @@ u8 *JKRAram::aramToMainRam(u32 address, u8 *buf, u32 p3, JKRExpandSwitch expandS
JKRDecompressFromAramToMainRam(address, buf, p3, expandSize, 0, pSize);
return buf;
}
}
else if (compression == COMPRESSION_YAY0) { // SZP
u8 *szpSpace = (u8 *)JKRAllocFromHeap(heap, p3, -32);
} else if (compression == COMPRESSION_YAY0) { // SZP
u8* szpSpace = (u8*)JKRAllocFromHeap(heap, p3, -32);
if (szpSpace == NULL) {
return NULL;
}
else {
} else {
JKRAramPcs(1, address, (u32)szpSpace, p3, NULL);
if (p5 != 0 && p5 < expandSize)
expandSize = p5;
u8* rv;
if (buf == NULL) {
rv = (u8 *)JKRAllocFromHeap(heap, expandSize, 32);
rv = (u8*)JKRAllocFromHeap(heap, expandSize, 32);
} else {
rv = buf;
}
@@ -261,8 +245,7 @@ u8 *JKRAram::aramToMainRam(u32 address, u8 *buf, u32 p3, JKRExpandSwitch expandS
if (rv == NULL) {
i_JKRFree(szpSpace);
return NULL;
}
else {
} else {
changeGroupIdIfNeed(rv, id);
JKRDecompress(szpSpace, rv, expandSize, 0);
JKRFreeToHeap(heap, szpSpace);
@@ -272,14 +255,12 @@ u8 *JKRAram::aramToMainRam(u32 address, u8 *buf, u32 p3, JKRExpandSwitch expandS
return rv;
}
}
}
else { // Not compressed or ASR
} else { // Not compressed or ASR
if (buf == NULL)
buf = (u8 *)JKRAllocFromHeap(heap, p3, 32);
buf = (u8*)JKRAllocFromHeap(heap, p3, 32);
if (buf == NULL) {
return NULL;
}
else {
} else {
changeGroupIdIfNeed(buf, id);
JKRAramPcs(1, address, (u32)buf, p3, NULL);
if (pSize != NULL) {
@@ -346,8 +327,8 @@ static u32 tsArea;
/* 802D2830-802D29A0 2CD170 0170+00 1/1 0/0 0/0 .text
* JKRDecompressFromAramToMainRam__FUlPvUlUlUlPUl */
static int JKRDecompressFromAramToMainRam(u32 src, void* dst, u32 srcLength, u32 dstLength, u32 offset,
u32* resourceSize) {
static int JKRDecompressFromAramToMainRam(u32 src, void* dst, u32 srcLength, u32 dstLength,
u32 offset, u32* resourceSize) {
BOOL interrupts = OSDisableInterrupts();
if (s_is_decompress_mutex_initialized == false) {
OSInitMutex(&decompMutex);
@@ -357,15 +338,14 @@ static int JKRDecompressFromAramToMainRam(u32 src, void* dst, u32 srcLength, u32
OSLockMutex(&decompMutex);
u32 szsBufferSize = JKRAram::getSZSBufferSize();
szpBuf = (u8 *)JKRAllocFromSysHeap(szsBufferSize, 32);
szpBuf = (u8*)JKRAllocFromSysHeap(szsBufferSize, 32);
szpEnd = szpBuf + szsBufferSize;
if (offset != 0) {
refBuf = (u8 *)JKRAllocFromSysHeap(0x1120, 0);
refBuf = (u8*)JKRAllocFromSysHeap(0x1120, 0);
refEnd = refBuf + 0x1120;
refCurrent = refBuf;
}
else {
} else {
refBuf = NULL;
}
srcAddress = src;
@@ -377,7 +357,7 @@ static int JKRDecompressFromAramToMainRam(u32 src, void* dst, u32 srcLength, u32
tsPtr = (resourceSize != 0) ? resourceSize : &tsArea;
*tsPtr = 0;
decompSZS_subroutine(firstSrcData(), (u8 *)dst);
decompSZS_subroutine(firstSrcData(), (u8*)dst);
i_JKRFree(szpBuf);
if (refBuf) {
i_JKRFree(refBuf);
@@ -390,8 +370,8 @@ static int JKRDecompressFromAramToMainRam(u32 src, void* dst, u32 srcLength, u32
}
/* 802D29A0-802D2C40 2CD2E0 02A0+00 1/1 0/0 0/0 .text decompSZS_subroutine__FPUcPUc */
int decompSZS_subroutine(u8 *src, u8 *dest) {
u8 *endPtr;
int decompSZS_subroutine(u8* src, u8* dest) {
u8* endPtr;
s32 validBitCount = 0;
s32 currCodeByte = 0;
u32 ts = 0;
@@ -400,7 +380,7 @@ int decompSZS_subroutine(u8 *src, u8 *dest) {
return -1;
}
SYaz0Header *header = (SYaz0Header *)src;
SYaz0Header* header = (SYaz0Header*)src;
endPtr = dest + (header->length - fileOffset);
if (endPtr > dest + maxDest) {
endPtr = dest + maxDest;
@@ -422,8 +402,7 @@ int decompSZS_subroutine(u8 *src, u8 *dest) {
*dest = *src;
dest++;
ts++;
if (dest == endPtr)
{
if (dest == endPtr) {
break;
}
}
@@ -432,8 +411,7 @@ int decompSZS_subroutine(u8 *src, u8 *dest) {
refCurrent = refBuf;
}
src++;
}
else {
} else {
*dest = *src;
dest++;
src++;
@@ -443,26 +421,23 @@ int decompSZS_subroutine(u8 *src, u8 *dest) {
}
}
readCount++;
}
else {
} else {
u32 dist = ((src[0] & 0x0f) << 8) | src[1];
s32 numBytes = src[0] >> 4;
src += 2;
u8 *copySource;
u8* copySource;
if (fileOffset != 0) {
copySource = refCurrent - dist - 1;
if (copySource < refBuf) {
copySource += refEnd - refBuf;
}
}
else {
} else {
copySource = dest - dist - 1;
}
if (numBytes == 0) {
numBytes = *src + 0x12;
src += 1;
}
else {
} else {
numBytes += 2;
}
if (fileOffset != 0) {
@@ -486,8 +461,7 @@ int decompSZS_subroutine(u8 *src, u8 *dest) {
readCount++;
numBytes--;
} while (numBytes != 0);
}
else {
} else {
do {
*dest = *copySource;
dest++;
@@ -536,8 +510,8 @@ static u8* firstSrcData() {
}
/* 802D2CE4-802D2DAC 2CD624 00C8+00 1/1 0/0 0/0 .text nextSrcData__FPUc */
static u8 *nextSrcData(u8 *current) {
u8 *dest;
static u8* nextSrcData(u8* current) {
u8* dest;
u32 left = (u32)(szpEnd - current);
if (IS_NOT_ALIGNED(left, 0x20))
dest = szpBuf + 0x20 - (left & (0x20 - 1));
+67 -95
View File
@@ -10,11 +10,11 @@
#include "JSystem/JKernel/JKRDvdFile.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTException.h"
#include "math.h"
#include "string.h"
#include "dol2asm.h"
#include "dolphin/os/OSCache.h"
#include "global.h"
#include "math.h"
#include "string.h"
//
// Forward References:
@@ -162,54 +162,52 @@ bool JKRAramArchive::open(s32 entryNum) {
mStringTable = NULL;
mBlock = NULL;
mDvdFile = new (JKRGetSystemHeap(), mMountDirection == MOUNT_DIRECTION_HEAD ? 4 : -4) JKRDvdFile(entryNum);
if (mDvdFile == NULL)
{
mDvdFile = new (JKRGetSystemHeap(), mMountDirection == MOUNT_DIRECTION_HEAD ? 4 : -4)
JKRDvdFile(entryNum);
if (mDvdFile == NULL) {
mMountMode = 0;
return 0;
}
// NOTE: a different struct is used here for sure, unfortunately i can't get any hits on this address, so gonna leave it like this for now
SArcHeader *mem = (SArcHeader *)JKRAllocFromSysHeap(32, -32);
if (mem == NULL) {
// NOTE: a different struct is used here for sure, unfortunately i can't get any hits on this
// address, so gonna leave it like this for now
SArcHeader* mem = (SArcHeader*)JKRAllocFromSysHeap(32, -32);
if (mem == NULL) {
mMountMode = 0;
}
else {
JKRDvdToMainRam(entryNum, (u8 *)mem, EXPAND_SWITCH_UNKNOWN1, 32, NULL, JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0, &mCompression, NULL);
} else {
JKRDvdToMainRam(entryNum, (u8*)mem, EXPAND_SWITCH_UNKNOWN1, 32, NULL,
JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0, &mCompression, NULL);
DCInvalidateRange(mem, 32);
int alignment = mMountDirection == MOUNT_DIRECTION_HEAD ? 32 : -32;
u32 alignedSize = ALIGN_NEXT(mem->file_data_offset, 32);
mArcInfoBlock = (SArcDataInfo *)JKRAllocFromHeap(mHeap, alignedSize, alignment);
mArcInfoBlock = (SArcDataInfo*)JKRAllocFromHeap(mHeap, alignedSize, alignment);
if (mArcInfoBlock == NULL) {
mMountMode = 0;
}
else {
JKRDvdToMainRam(entryNum, (u8 *)mArcInfoBlock, EXPAND_SWITCH_UNKNOWN1, alignedSize, NULL, JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 32, NULL, NULL);
} else {
JKRDvdToMainRam(entryNum, (u8*)mArcInfoBlock, EXPAND_SWITCH_UNKNOWN1, alignedSize, NULL,
JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 32, NULL, NULL);
DCInvalidateRange(mArcInfoBlock, alignedSize);
mNodes = (SDIDirEntry *)((u8 *)mArcInfoBlock + mArcInfoBlock->node_offset);
mFiles = (SDIFileEntry *)((u8 *)mArcInfoBlock + mArcInfoBlock->file_entry_offset);
mStringTable = (char *)((u8 *)mArcInfoBlock + mArcInfoBlock->string_table_offset);
mNodes = (SDIDirEntry*)((u8*)mArcInfoBlock + mArcInfoBlock->node_offset);
mFiles = (SDIFileEntry*)((u8*)mArcInfoBlock + mArcInfoBlock->file_entry_offset);
mStringTable = (char*)((u8*)mArcInfoBlock + mArcInfoBlock->string_table_offset);
mExpandedSize = NULL;
u8 compressedFiles = 0; // maybe a check for if the last file is compressed?
u8 compressedFiles = 0; // maybe a check for if the last file is compressed?
SDIFileEntry *fileEntry = mFiles;
for (int i = 0; i < mArcInfoBlock->num_file_entries; i++)
{
SDIFileEntry* fileEntry = mFiles;
for (int i = 0; i < mArcInfoBlock->num_file_entries; i++) {
u8 flag = fileEntry->type_flags_and_name_offset >> 24;
if ((flag & 1))
{
if ((flag & 1)) {
compressedFiles |= (flag & JKRARCHIVE_ATTR_COMPRESSION);
}
fileEntry++;
}
if (compressedFiles != 0)
{
mExpandedSize = (s32 *)JKRAllocFromHeap(mHeap, mArcInfoBlock->num_file_entries << 2, abs(alignment));
if (mExpandedSize == NULL)
{
if (compressedFiles != 0) {
mExpandedSize = (s32*)JKRAllocFromHeap(mHeap, mArcInfoBlock->num_file_entries << 2,
abs(alignment));
if (mExpandedSize == NULL) {
i_JKRFree(mArcInfoBlock);
mMountMode = 0;
goto cleanup;
@@ -218,34 +216,32 @@ bool JKRAramArchive::open(s32 entryNum) {
}
u32 aramSize = ALIGN_NEXT(mem->file_data_length, 32);
mBlock = (JKRAramBlock*) JKRAllocFromAram(aramSize, mMountDirection == MOUNT_DIRECTION_HEAD ? JKRAramHeap::HEAD : JKRAramHeap::TAIL);
if(mBlock == NULL) {
mBlock = (JKRAramBlock*)JKRAllocFromAram(
aramSize,
mMountDirection == MOUNT_DIRECTION_HEAD ? JKRAramHeap::HEAD : JKRAramHeap::TAIL);
if (mBlock == NULL) {
if (mArcInfoBlock) {
i_JKRFree(mArcInfoBlock);
}
if(mExpandedSize) {
if (mExpandedSize) {
i_JKRFree(mExpandedSize);
}
mMountMode = 0;
} else {
JKRDvdToAram(entryNum, mBlock->getAddress(), EXPAND_SWITCH_UNKNOWN1,
mem->header_length + mem->file_data_offset, 0, NULL);
}
else {
JKRDvdToAram(entryNum, mBlock->getAddress(), EXPAND_SWITCH_UNKNOWN1, mem->header_length + mem->file_data_offset, 0, NULL);
}
}
}
cleanup:
if (mem != NULL)
{
if (mem != NULL) {
JKRFreeToSysHeap(mem);
}
if (mMountMode == 0)
{
if (mMountMode == 0) {
#ifdef DEBUG
OSReport(":::[%s: %d] Cannot alloc memory\n", __FILE__, 415);
#endif
if (mDvdFile != NULL)
{
if (mDvdFile != NULL) {
delete mDvdFile;
}
return false;
@@ -291,7 +287,6 @@ void* JKRAramArchive::fetchResource(SDIFileEntry* pEntry, u32* pOutSize) {
/* 802D76F4-802D77F8 2D2034 0104+00 1/0 0/0 0/0 .text
* fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl */
#ifdef NONMATCHING
void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* pEntry,
u32* resourceSize) {
JUT_ASSERT(515, isMounted());
@@ -299,10 +294,10 @@ void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry*
if (size > bufferSize) {
size = bufferSize;
}
JKRCompression compression = JKRConvertAttrToCompressionType(pEntry->getFlags());
if (pEntry->data == NULL) {
// can't get it to store the result in r28
bufferSize &= ~(0x20 - 1);
bufferSize = (s32)ALIGN_PREV(bufferSize, 0x20);
size = JKRAramArchive::fetchResource_subroutine(pEntry->data_offset + mBlock->getAddress(),
size, (u8*)buffer, bufferSize, compression);
} else {
@@ -317,22 +312,12 @@ void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry*
}
JKRHeap::copyMemory(buffer, pEntry->data, size);
}
if (resourceSize != NULL) {
*resourceSize = size;
}
return buffer;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void* JKRAramArchive::fetchResource(void* param_0, u32 param_1,
JKRArchive::SDIFileEntry* param_2, u32* param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl.s"
}
#pragma pop
#endif
/* 802D77F8-802D781C 2D2138 0024+00 1/1 0/0 0/0 .text
* getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry */
@@ -354,7 +339,7 @@ u32 JKRAramArchive::getAramAddress(char const* name) {
* fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli */
u32 JKRAramArchive::fetchResource_subroutine(u32 srcAram, u32 srcLength, u8* dst, u32 dstLength,
int compression) {
JUT_ASSERT(628, ( srcAram & 0x1f ) == 0);
JUT_ASSERT(628, (srcAram & 0x1f) == 0);
u32 outLen;
u32 srcSize = ALIGN_NEXT(srcLength, 0x20);
u32 dstSize = ALIGN_PREV(dstLength, 0x20);
@@ -364,13 +349,11 @@ u32 JKRAramArchive::fetchResource_subroutine(u32 srcAram, u32 srcLength, u8* dst
if (srcSize > dstSize) {
srcSize = dstSize;
}
JKRAramToMainRam(srcAram, dst, srcSize, EXPAND_SWITCH_UNKNOWN0, dstSize, NULL, -1,
&outLen);
JKRAramToMainRam(srcAram, dst, srcSize, EXPAND_SWITCH_UNKNOWN0, dstSize, NULL, -1, &outLen);
return outLen;
case COMPRESSION_YAY0:
case COMPRESSION_YAZ0:
JKRAramToMainRam(srcAram, dst, srcSize, EXPAND_SWITCH_UNKNOWN1, dstSize, NULL, -1,
&outLen);
JKRAramToMainRam(srcAram, dst, srcSize, EXPAND_SWITCH_UNKNOWN1, dstSize, NULL, -1, &outLen);
return outLen;
default:
JUTException::panic(__FILE__, 655, "??? bad sequence\n");
@@ -380,50 +363,39 @@ u32 JKRAramArchive::fetchResource_subroutine(u32 srcAram, u32 srcLength, u8* dst
/* 802D7914-802D7A64 2D2254 0150+00 1/1 1/1 0/0 .text
* fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc */
#ifdef NONMATCHING
u32 JKRAramArchive::fetchResource_subroutine(u32 entryNum, u32 length, JKRHeap* pHeap,
int compression, u8** out) {
// r28 -> r29, r29 -> r30, r30 -> r31, r31 -> r28
u32 readLen;
u32 alignedLen = alignNext(length, 0x20);
u32 alignedLen = ALIGN_NEXT(length, 0x20);
u8* buffer;
switch (compression) {
case COMPRESSION_NONE:
buffer = static_cast<u8*>(JKRAllocFromHeap(pHeap, alignedLen, 0x20));
JUT_ASSERT(677, buffer != 0);
JKRAramToMainRam(entryNum, buffer, alignedLen, EXPAND_SWITCH_UNKNOWN0, alignedLen,
NULL, -1, NULL);
*out = buffer;
return length;
{
buffer = (u8*)(JKRAllocFromHeap(pHeap, alignedLen, 0x20));
JUT_ASSERT(677, buffer != 0);
JKRAramToMainRam(entryNum, buffer, alignedLen, EXPAND_SWITCH_UNKNOWN0, alignedLen, NULL, -1, NULL);
*out = buffer;
return length;
}
case COMPRESSION_YAY0:
case COMPRESSION_YAZ0:
u8 tmpBuf[0x40];
u8* buf = (u8*)ALIGN_PREV((s32)&tmpBuf[0x1F], sizeof(SArcHeader));
JKRAramToMainRam(entryNum, buf, sizeof(SArcHeader), EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL);
length = alignNext(JKRDecompExpandSize(buf), sizeof(SArcHeader));
buffer = static_cast<u8*>(JKRAllocFromHeap(pHeap, length, sizeof(SArcHeader)));
JUT_ASSERT(703, buffer);
JKRAramToMainRam(entryNum, buffer, alignedLen, EXPAND_SWITCH_UNKNOWN1, length, pHeap,
-1, &readLen);
*out = buffer;
return readLen;
{
u8 headerBuf[0x40];
u8* alignHeader = (u8*)ALIGN_NEXT((s32)&headerBuf[0], sizeof(SArcHeader));
JKRAramToMainRam(entryNum, alignHeader, sizeof(SArcHeader), EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL);
u32 decompressedLen = ALIGN_NEXT(JKRDecompExpandSize(alignHeader), sizeof(SArcHeader));
buffer = (u8*)(JKRAllocFromHeap(pHeap, decompressedLen, sizeof(SArcHeader)));
JUT_ASSERT(703, buffer);
u32 readLen;
JKRAramToMainRam(entryNum, buffer, alignedLen, EXPAND_SWITCH_UNKNOWN1, decompressedLen, pHeap, -1, &readLen);
*out = buffer;
return readLen;
}
default:
JUTException::panic(__FILE__, 713, "??? bad sequence\n");
return 0;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 JKRAramArchive::fetchResource_subroutine(u32 param_0, u32 param_1, JKRHeap* param_2,
int param_3, u8** param_4) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc.s"
}
#pragma pop
#endif
/* 802D7A64-802D7B90 2D23A4 012C+00 1/0 0/0 0/0 .text getExpandedResSize__14JKRAramArchiveCFPCv */
u32 JKRAramArchive::getExpandedResSize(const void* ptr) const {
@@ -447,8 +419,8 @@ u32 JKRAramArchive::getExpandedResSize(const void* ptr) const {
u8 tmpBuf[0x40];
u8* buf = (u8*)ALIGN_PREV((s32)&tmpBuf[0x1F], 0x20);
JKRAramToMainRam(entry->data_offset + mBlock->getAddress(), buf, 0x20,
EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL);
JKRAramToMainRam(entry->data_offset + mBlock->getAddress(), buf, 0x20, EXPAND_SWITCH_UNKNOWN0,
0, NULL, -1, NULL);
expandSize = JKRDecompExpandSize(buf);
// ??? casting away const?
((JKRArchive*)this)->setExpandSize(entry, expandSize);
-5
View File
@@ -1,8 +1,3 @@
//
// Generated By: dol2asm
// Translation Unit: JKRAramBlock
//
#include "JSystem/JKernel/JKRAramBlock.h"
#include "JSystem/JKernel/JKRAramHeap.h"
#include "JSystem/JKernel/JKRHeap.h"
-17
View File
@@ -1,24 +1,7 @@
//
// Generated By: dol2asm
// Translation Unit: JKRAramHeap
//
#include "JSystem/JKernel/JKRAramHeap.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "global.h"
//
// Forward References:
//
//
// External References:
//
//
// Declarations:
//
/* 8043430C-80434318 06102C 000C+00 8/8 0/0 0/0 .bss sAramList__11JKRAramHeap */
JSUList<JKRAramBlock> JKRAramHeap::sAramList;

Some files were not shown because too many files have changed in this diff Show More