From c31a6f988c3489f15a640cf798d26846302cd0b0 Mon Sep 17 00:00:00 2001 From: hatal175 Date: Sat, 18 Nov 2023 09:02:12 +0200 Subject: [PATCH] Some work on m_do_ext (#1988) * Some work on m_do_ext * Work on m_do_ext --- asm/m_Do/m_Do_ext/func_80011348.s | 46 --- ...__14mDoExt_McaMorfFUsP16J3DTransformInfo.s | 51 --- ...16mDoExt_McaMorfSOFUsP16J3DTransformInfo.s | 51 --- asm/m_Do/m_Do_ext/mDoExt_initFont0__Fv.s | 24 -- asm/m_Do/m_Do_ext/mDoExt_initFont1__Fv.s | 25 -- asm/m_Do/m_Do_ext/mDoExt_initFont2__Fv.s | 25 -- ...Texture__FP12J3DModelDataP12J3DModelData.s | 157 --------- include/JSystem/JKernel/JKRArchive.h | 4 + include/d/com/d_com_inf_game.h | 10 + include/m_Do/m_Do_ext.h | 18 +- libs/JSystem/J2DGraph/J2DMaterialFactory.cpp | 1 + src/m_Do/m_Do_ext.cpp | 323 ++++++++++++++---- 12 files changed, 280 insertions(+), 455 deletions(-) delete mode 100644 asm/m_Do/m_Do_ext/func_80011348.s delete mode 100644 asm/m_Do/m_Do_ext/getTransform__14mDoExt_McaMorfFUsP16J3DTransformInfo.s delete mode 100644 asm/m_Do/m_Do_ext/getTransform__16mDoExt_McaMorfSOFUsP16J3DTransformInfo.s delete mode 100644 asm/m_Do/m_Do_ext/mDoExt_initFont0__Fv.s delete mode 100644 asm/m_Do/m_Do_ext/mDoExt_initFont1__Fv.s delete mode 100644 asm/m_Do/m_Do_ext/mDoExt_initFont2__Fv.s delete mode 100644 asm/m_Do/m_Do_ext/mDoExt_setupShareTexture__FP12J3DModelDataP12J3DModelData.s diff --git a/asm/m_Do/m_Do_ext/func_80011348.s b/asm/m_Do/m_Do_ext/func_80011348.s deleted file mode 100644 index 0b8ec99feb6..00000000000 --- a/asm/m_Do/m_Do_ext/func_80011348.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_80011348: -/* 80011348 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 8001134C 7C 08 02 A6 */ mflr r0 -/* 80011350 90 01 00 54 */ stw r0, 0x54(r1) -/* 80011354 DB E1 00 48 */ stfd f31, 0x48(r1) -/* 80011358 39 61 00 48 */ addi r11, r1, 0x48 -/* 8001135C 48 35 0E 5D */ bl _savegpr_20 -/* 80011360 7C 74 1B 78 */ mr r20, r3 -/* 80011364 7C 95 23 78 */ mr r21, r4 -/* 80011368 7C B6 2B 78 */ mr r22, r5 -/* 8001136C 7C D7 33 78 */ mr r23, r6 -/* 80011370 7C F8 3B 78 */ mr r24, r7 -/* 80011374 7D 19 43 78 */ mr r25, r8 -/* 80011378 7D 3A 4B 78 */ mr r26, r9 -/* 8001137C FF E0 08 90 */ fmr f31, f1 -/* 80011380 7D 5B 53 78 */ mr r27, r10 -/* 80011384 83 81 00 58 */ lwz r28, 0x58(r1) -/* 80011388 83 A1 00 5C */ lwz r29, 0x5c(r1) -/* 8001138C 83 C1 00 60 */ lwz r30, 0x60(r1) -/* 80011390 83 E1 00 64 */ lwz r31, 0x64(r1) -/* 80011394 4B FF E5 BD */ bl __ct__13mDoExt_morf_cFv -/* 80011398 3C 60 80 3A */ lis r3, __vt__15mDoExt_McaMorf2@ha /* 0x803A3284@ha */ -/* 8001139C 38 03 32 84 */ addi r0, r3, __vt__15mDoExt_McaMorf2@l /* 0x803A3284@l */ -/* 800113A0 90 14 00 00 */ stw r0, 0(r20) -/* 800113A4 93 81 00 08 */ stw r28, 8(r1) -/* 800113A8 93 A1 00 0C */ stw r29, 0xc(r1) -/* 800113AC 93 C1 00 10 */ stw r30, 0x10(r1) -/* 800113B0 93 E1 00 14 */ stw r31, 0x14(r1) -/* 800113B4 7E 83 A3 78 */ mr r3, r20 -/* 800113B8 7E A4 AB 78 */ mr r4, r21 -/* 800113BC 7E C5 B3 78 */ mr r5, r22 -/* 800113C0 7E E6 BB 78 */ mr r6, r23 -/* 800113C4 7F 07 C3 78 */ mr r7, r24 -/* 800113C8 7F 28 CB 78 */ mr r8, r25 -/* 800113CC 7F 49 D3 78 */ mr r9, r26 -/* 800113D0 FC 20 F8 90 */ fmr f1, f31 -/* 800113D4 7F 6A DB 78 */ mr r10, r27 -/* 800113D8 48 00 00 8D */ bl create__15mDoExt_McaMorf2FP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformP15J3DAnmTransformifiiP10Z2CreatureUlUl -/* 800113DC 7E 83 A3 78 */ mr r3, r20 -/* 800113E0 CB E1 00 48 */ lfd f31, 0x48(r1) -/* 800113E4 39 61 00 48 */ addi r11, r1, 0x48 -/* 800113E8 48 35 0E 1D */ bl _restgpr_20 -/* 800113EC 80 01 00 54 */ lwz r0, 0x54(r1) -/* 800113F0 7C 08 03 A6 */ mtlr r0 -/* 800113F4 38 21 00 50 */ addi r1, r1, 0x50 -/* 800113F8 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_ext/getTransform__14mDoExt_McaMorfFUsP16J3DTransformInfo.s b/asm/m_Do/m_Do_ext/getTransform__14mDoExt_McaMorfFUsP16J3DTransformInfo.s deleted file mode 100644 index 47c24479955..00000000000 --- a/asm/m_Do/m_Do_ext/getTransform__14mDoExt_McaMorfFUsP16J3DTransformInfo.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_80010710: -/* 80010710 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80010714 7C 08 02 A6 */ mflr r0 -/* 80010718 90 01 00 24 */ stw r0, 0x24(r1) -/* 8001071C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80010720 48 35 1A BD */ bl _savegpr_29 -/* 80010724 7C 7D 1B 78 */ mr r29, r3 -/* 80010728 7C 9E 23 78 */ mr r30, r4 -/* 8001072C 7C BF 2B 78 */ mr r31, r5 -/* 80010730 80 63 00 08 */ lwz r3, 8(r3) -/* 80010734 81 83 00 00 */ lwz r12, 0(r3) -/* 80010738 81 8C 00 10 */ lwz r12, 0x10(r12) -/* 8001073C 7D 89 03 A6 */ mtctr r12 -/* 80010740 4E 80 04 21 */ bctrl -/* 80010744 88 1D 00 51 */ lbz r0, 0x51(r29) -/* 80010748 28 00 00 00 */ cmplwi r0, 0 -/* 8001074C 41 82 00 6C */ beq lbl_800107B8 -/* 80010750 57 C0 04 3F */ clrlwi. r0, r30, 0x10 -/* 80010754 40 82 00 38 */ bne lbl_8001078C -/* 80010758 C0 3F 00 14 */ lfs f1, 0x14(r31) -/* 8001075C C0 1D 00 40 */ lfs f0, 0x40(r29) -/* 80010760 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80010764 D0 1F 00 14 */ stfs f0, 0x14(r31) -/* 80010768 C0 3F 00 18 */ lfs f1, 0x18(r31) -/* 8001076C C0 1D 00 44 */ lfs f0, 0x44(r29) -/* 80010770 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80010774 D0 1F 00 18 */ stfs f0, 0x18(r31) -/* 80010778 C0 3F 00 1C */ lfs f1, 0x1c(r31) -/* 8001077C C0 1D 00 48 */ lfs f0, 0x48(r29) -/* 80010780 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80010784 D0 1F 00 1C */ stfs f0, 0x1c(r31) -/* 80010788 48 00 00 30 */ b lbl_800107B8 -lbl_8001078C: -/* 8001078C 80 7D 00 04 */ lwz r3, 4(r29) -/* 80010790 80 63 00 04 */ lwz r3, 4(r3) -/* 80010794 80 63 00 28 */ lwz r3, 0x28(r3) -/* 80010798 57 C0 13 BA */ rlwinm r0, r30, 2, 0xe, 0x1d -/* 8001079C 7C 63 00 2E */ lwzx r3, r3, r0 -/* 800107A0 C0 03 00 2C */ lfs f0, 0x2c(r3) -/* 800107A4 D0 1F 00 14 */ stfs f0, 0x14(r31) -/* 800107A8 C0 03 00 30 */ lfs f0, 0x30(r3) -/* 800107AC D0 1F 00 18 */ stfs f0, 0x18(r31) -/* 800107B0 C0 03 00 34 */ lfs f0, 0x34(r3) -/* 800107B4 D0 1F 00 1C */ stfs f0, 0x1c(r31) -lbl_800107B8: -/* 800107B8 39 61 00 20 */ addi r11, r1, 0x20 -/* 800107BC 48 35 1A 6D */ bl _restgpr_29 -/* 800107C0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800107C4 7C 08 03 A6 */ mtlr r0 -/* 800107C8 38 21 00 20 */ addi r1, r1, 0x20 -/* 800107CC 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_ext/getTransform__16mDoExt_McaMorfSOFUsP16J3DTransformInfo.s b/asm/m_Do/m_Do_ext/getTransform__16mDoExt_McaMorfSOFUsP16J3DTransformInfo.s deleted file mode 100644 index 6453258a329..00000000000 --- a/asm/m_Do/m_Do_ext/getTransform__16mDoExt_McaMorfSOFUsP16J3DTransformInfo.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_80011250: -/* 80011250 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80011254 7C 08 02 A6 */ mflr r0 -/* 80011258 90 01 00 24 */ stw r0, 0x24(r1) -/* 8001125C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80011260 48 35 0F 7D */ bl _savegpr_29 -/* 80011264 7C 7D 1B 78 */ mr r29, r3 -/* 80011268 7C 9E 23 78 */ mr r30, r4 -/* 8001126C 7C BF 2B 78 */ mr r31, r5 -/* 80011270 80 63 00 08 */ lwz r3, 8(r3) -/* 80011274 81 83 00 00 */ lwz r12, 0(r3) -/* 80011278 81 8C 00 10 */ lwz r12, 0x10(r12) -/* 8001127C 7D 89 03 A6 */ mtctr r12 -/* 80011280 4E 80 04 21 */ bctrl -/* 80011284 88 1D 00 54 */ lbz r0, 0x54(r29) -/* 80011288 28 00 00 00 */ cmplwi r0, 0 -/* 8001128C 41 82 00 6C */ beq lbl_800112F8 -/* 80011290 57 C0 04 3F */ clrlwi. r0, r30, 0x10 -/* 80011294 40 82 00 38 */ bne lbl_800112CC -/* 80011298 C0 3F 00 14 */ lfs f1, 0x14(r31) -/* 8001129C C0 1D 00 40 */ lfs f0, 0x40(r29) -/* 800112A0 EC 01 00 32 */ fmuls f0, f1, f0 -/* 800112A4 D0 1F 00 14 */ stfs f0, 0x14(r31) -/* 800112A8 C0 3F 00 18 */ lfs f1, 0x18(r31) -/* 800112AC C0 1D 00 44 */ lfs f0, 0x44(r29) -/* 800112B0 EC 01 00 32 */ fmuls f0, f1, f0 -/* 800112B4 D0 1F 00 18 */ stfs f0, 0x18(r31) -/* 800112B8 C0 3F 00 1C */ lfs f1, 0x1c(r31) -/* 800112BC C0 1D 00 48 */ lfs f0, 0x48(r29) -/* 800112C0 EC 01 00 32 */ fmuls f0, f1, f0 -/* 800112C4 D0 1F 00 1C */ stfs f0, 0x1c(r31) -/* 800112C8 48 00 00 30 */ b lbl_800112F8 -lbl_800112CC: -/* 800112CC 80 7D 00 04 */ lwz r3, 4(r29) -/* 800112D0 80 63 00 04 */ lwz r3, 4(r3) -/* 800112D4 80 63 00 28 */ lwz r3, 0x28(r3) -/* 800112D8 57 C0 13 BA */ rlwinm r0, r30, 2, 0xe, 0x1d -/* 800112DC 7C 63 00 2E */ lwzx r3, r3, r0 -/* 800112E0 C0 03 00 2C */ lfs f0, 0x2c(r3) -/* 800112E4 D0 1F 00 14 */ stfs f0, 0x14(r31) -/* 800112E8 C0 03 00 30 */ lfs f0, 0x30(r3) -/* 800112EC D0 1F 00 18 */ stfs f0, 0x18(r31) -/* 800112F0 C0 03 00 34 */ lfs f0, 0x34(r3) -/* 800112F4 D0 1F 00 1C */ stfs f0, 0x1c(r31) -lbl_800112F8: -/* 800112F8 39 61 00 20 */ addi r11, r1, 0x20 -/* 800112FC 48 35 0F 2D */ bl _restgpr_29 -/* 80011300 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80011304 7C 08 03 A6 */ mtlr r0 -/* 80011308 38 21 00 20 */ addi r1, r1, 0x20 -/* 8001130C 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_ext/mDoExt_initFont0__Fv.s b/asm/m_Do/m_Do_ext/mDoExt_initFont0__Fv.s deleted file mode 100644 index 4b047202ad8..00000000000 --- a/asm/m_Do/m_Do_ext/mDoExt_initFont0__Fv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80014994: -/* 80014994 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80014998 7C 08 02 A6 */ mflr r0 -/* 8001499C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800149A0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800149A4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800149A8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800149AC 83 E3 5C A4 */ lwz r31, 0x5ca4(r3) -/* 800149B0 4B FF A3 D1 */ bl mDoExt_getZeldaHeap__Fv -/* 800149B4 7C 65 1B 78 */ mr r5, r3 -/* 800149B8 38 6D 86 C4 */ la r3, mDoExt_font0(r13) /* 80450C44-_SDA_BASE_ */ -/* 800149BC 38 8D 86 CC */ la r4, mDoExt_resfont0(r13) /* 80450C4C-_SDA_BASE_ */ -/* 800149C0 3C C0 80 37 */ lis r6, fontdata_8224@ha /* 0x803740C0@ha */ -/* 800149C4 38 C6 40 C0 */ addi r6, r6, fontdata_8224@l /* 0x803740C0@l */ -/* 800149C8 7F E7 FB 78 */ mr r7, r31 -/* 800149CC 39 00 00 01 */ li r8, 1 -/* 800149D0 39 20 00 00 */ li r9, 0 -/* 800149D4 39 40 00 00 */ li r10, 0 -/* 800149D8 4B FF FE 2D */ bl mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl -/* 800149DC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800149E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800149E4 7C 08 03 A6 */ mtlr r0 -/* 800149E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800149EC 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_ext/mDoExt_initFont1__Fv.s b/asm/m_Do/m_Do_ext/mDoExt_initFont1__Fv.s deleted file mode 100644 index 6dfd959c242..00000000000 --- a/asm/m_Do/m_Do_ext/mDoExt_initFont1__Fv.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80014AA4: -/* 80014AA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80014AA8 7C 08 02 A6 */ mflr r0 -/* 80014AAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80014AB0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80014AB4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80014AB8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80014ABC 83 E3 5C A8 */ lwz r31, 0x5ca8(r3) -/* 80014AC0 4B FF A2 C1 */ bl mDoExt_getZeldaHeap__Fv -/* 80014AC4 7C 65 1B 78 */ mr r5, r3 -/* 80014AC8 38 6D 86 D0 */ la r3, mDoExt_font1(r13) /* 80450C50-_SDA_BASE_ */ -/* 80014ACC 38 8D 86 D8 */ la r4, mDoExt_resfont1(r13) /* 80450C58-_SDA_BASE_ */ -/* 80014AD0 3C C0 80 37 */ lis r6, fontdata_8253@ha /* 0x803740D4@ha */ -/* 80014AD4 38 C6 40 D4 */ addi r6, r6, fontdata_8253@l /* 0x803740D4@l */ -/* 80014AD8 7F E7 FB 78 */ mr r7, r31 -/* 80014ADC 39 00 00 01 */ li r8, 1 -/* 80014AE0 39 20 00 01 */ li r9, 1 -/* 80014AE4 3D 40 00 01 */ lis r10, 0x0001 /* 0x00008000@ha */ -/* 80014AE8 39 4A 80 00 */ addi r10, r10, 0x8000 /* 0x00008000@l */ -/* 80014AEC 4B FF FD 19 */ bl mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl -/* 80014AF0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80014AF4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80014AF8 7C 08 03 A6 */ mtlr r0 -/* 80014AFC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80014B00 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_ext/mDoExt_initFont2__Fv.s b/asm/m_Do/m_Do_ext/mDoExt_initFont2__Fv.s deleted file mode 100644 index a340165ff6f..00000000000 --- a/asm/m_Do/m_Do_ext/mDoExt_initFont2__Fv.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80014B40: -/* 80014B40 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80014B44 7C 08 02 A6 */ mflr r0 -/* 80014B48 90 01 00 14 */ stw r0, 0x14(r1) -/* 80014B4C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80014B50 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80014B54 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80014B58 83 E3 5C A8 */ lwz r31, 0x5ca8(r3) -/* 80014B5C 4B FF A2 25 */ bl mDoExt_getZeldaHeap__Fv -/* 80014B60 7C 65 1B 78 */ mr r5, r3 -/* 80014B64 38 6D 86 DC */ la r3, mDoExt_font2(r13) /* 80450C5C-_SDA_BASE_ */ -/* 80014B68 38 8D 86 E4 */ la r4, mDoExt_resfont2(r13) /* 80450C64-_SDA_BASE_ */ -/* 80014B6C 3C C0 80 37 */ lis r6, fontdata_8287@ha /* 0x803740E8@ha */ -/* 80014B70 38 C6 40 E8 */ addi r6, r6, fontdata_8287@l /* 0x803740E8@l */ -/* 80014B74 7F E7 FB 78 */ mr r7, r31 -/* 80014B78 39 00 00 01 */ li r8, 1 -/* 80014B7C 39 20 00 01 */ li r9, 1 -/* 80014B80 3D 40 00 01 */ lis r10, 0x0001 /* 0x00008000@ha */ -/* 80014B84 39 4A 80 00 */ addi r10, r10, 0x8000 /* 0x00008000@l */ -/* 80014B88 4B FF FC 7D */ bl mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl -/* 80014B8C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80014B90 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80014B94 7C 08 03 A6 */ mtlr r0 -/* 80014B98 38 21 00 10 */ addi r1, r1, 0x10 -/* 80014B9C 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_ext/mDoExt_setupShareTexture__FP12J3DModelDataP12J3DModelData.s b/asm/m_Do/m_Do_ext/mDoExt_setupShareTexture__FP12J3DModelDataP12J3DModelData.s deleted file mode 100644 index 0c26301832d..00000000000 --- a/asm/m_Do/m_Do_ext/mDoExt_setupShareTexture__FP12J3DModelDataP12J3DModelData.s +++ /dev/null @@ -1,157 +0,0 @@ -lbl_8000E834: -/* 8000E834 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8000E838 7C 08 02 A6 */ mflr r0 -/* 8000E83C 90 01 00 34 */ stw r0, 0x34(r1) -/* 8000E840 39 61 00 30 */ addi r11, r1, 0x30 -/* 8000E844 48 35 39 7D */ bl _savegpr_22 -/* 8000E848 7C 78 1B 78 */ mr r24, r3 -/* 8000E84C 83 E3 00 6C */ lwz r31, 0x6c(r3) -/* 8000E850 83 C3 00 70 */ lwz r30, 0x70(r3) -/* 8000E854 83 A4 00 6C */ lwz r29, 0x6c(r4) -/* 8000E858 83 84 00 70 */ lwz r28, 0x70(r4) -/* 8000E85C 3A C0 00 00 */ li r22, 0 -/* 8000E860 3B 40 00 00 */ li r26, 0 -/* 8000E864 48 00 01 68 */ b lbl_8000E9CC -lbl_8000E868: -/* 8000E868 80 1F 00 04 */ lwz r0, 4(r31) -/* 8000E86C 57 5B 2A F4 */ rlwinm r27, r26, 5, 0xb, 0x1a -/* 8000E870 7C 60 DA 14 */ add r3, r0, r27 -/* 8000E874 80 03 00 1C */ lwz r0, 0x1c(r3) -/* 8000E878 28 00 00 00 */ cmplwi r0, 0 -/* 8000E87C 40 82 01 4C */ bne lbl_8000E9C8 -/* 8000E880 3B 20 00 00 */ li r25, 0 -/* 8000E884 48 00 01 34 */ b lbl_8000E9B8 -lbl_8000E888: -/* 8000E888 7F 83 E3 78 */ mr r3, r28 -/* 8000E88C 7F 24 CB 78 */ mr r4, r25 -/* 8000E890 48 2D 02 69 */ bl getName__10JUTNameTabCFUs -/* 8000E894 7C 77 1B 78 */ mr r23, r3 -/* 8000E898 7F C3 F3 78 */ mr r3, r30 -/* 8000E89C 7F 44 D3 78 */ mr r4, r26 -/* 8000E8A0 48 2D 02 59 */ bl getName__10JUTNameTabCFUs -/* 8000E8A4 7E E4 BB 78 */ mr r4, r23 -/* 8000E8A8 48 35 A0 ED */ bl strcmp -/* 8000E8AC 2C 03 00 00 */ cmpwi r3, 0 -/* 8000E8B0 40 82 01 04 */ bne lbl_8000E9B4 -/* 8000E8B4 80 7D 00 04 */ lwz r3, 4(r29) -/* 8000E8B8 57 20 2A F4 */ rlwinm r0, r25, 5, 0xb, 0x1a -/* 8000E8BC 7C 83 02 14 */ add r4, r3, r0 -/* 8000E8C0 80 1F 00 04 */ lwz r0, 4(r31) -/* 8000E8C4 7C 60 DA 14 */ add r3, r0, r27 -/* 8000E8C8 88 04 00 00 */ lbz r0, 0(r4) -/* 8000E8CC 98 03 00 00 */ stb r0, 0(r3) -/* 8000E8D0 88 04 00 01 */ lbz r0, 1(r4) -/* 8000E8D4 98 03 00 01 */ stb r0, 1(r3) -/* 8000E8D8 A0 04 00 02 */ lhz r0, 2(r4) -/* 8000E8DC B0 03 00 02 */ sth r0, 2(r3) -/* 8000E8E0 A0 04 00 04 */ lhz r0, 4(r4) -/* 8000E8E4 B0 03 00 04 */ sth r0, 4(r3) -/* 8000E8E8 88 04 00 06 */ lbz r0, 6(r4) -/* 8000E8EC 98 03 00 06 */ stb r0, 6(r3) -/* 8000E8F0 88 04 00 07 */ lbz r0, 7(r4) -/* 8000E8F4 98 03 00 07 */ stb r0, 7(r3) -/* 8000E8F8 88 04 00 08 */ lbz r0, 8(r4) -/* 8000E8FC 98 03 00 08 */ stb r0, 8(r3) -/* 8000E900 88 04 00 09 */ lbz r0, 9(r4) -/* 8000E904 98 03 00 09 */ stb r0, 9(r3) -/* 8000E908 A0 04 00 0A */ lhz r0, 0xa(r4) -/* 8000E90C B0 03 00 0A */ sth r0, 0xa(r3) -/* 8000E910 80 04 00 0C */ lwz r0, 0xc(r4) -/* 8000E914 90 03 00 0C */ stw r0, 0xc(r3) -/* 8000E918 88 04 00 10 */ lbz r0, 0x10(r4) -/* 8000E91C 98 03 00 10 */ stb r0, 0x10(r3) -/* 8000E920 88 04 00 11 */ lbz r0, 0x11(r4) -/* 8000E924 98 03 00 11 */ stb r0, 0x11(r3) -/* 8000E928 88 04 00 12 */ lbz r0, 0x12(r4) -/* 8000E92C 98 03 00 12 */ stb r0, 0x12(r3) -/* 8000E930 88 04 00 13 */ lbz r0, 0x13(r4) -/* 8000E934 98 03 00 13 */ stb r0, 0x13(r3) -/* 8000E938 88 04 00 14 */ lbz r0, 0x14(r4) -/* 8000E93C 98 03 00 14 */ stb r0, 0x14(r3) -/* 8000E940 88 04 00 15 */ lbz r0, 0x15(r4) -/* 8000E944 98 03 00 15 */ stb r0, 0x15(r3) -/* 8000E948 88 04 00 16 */ lbz r0, 0x16(r4) -/* 8000E94C 98 03 00 16 */ stb r0, 0x16(r3) -/* 8000E950 88 04 00 17 */ lbz r0, 0x17(r4) -/* 8000E954 98 03 00 17 */ stb r0, 0x17(r3) -/* 8000E958 88 04 00 18 */ lbz r0, 0x18(r4) -/* 8000E95C 98 03 00 18 */ stb r0, 0x18(r3) -/* 8000E960 88 04 00 19 */ lbz r0, 0x19(r4) -/* 8000E964 98 03 00 19 */ stb r0, 0x19(r3) -/* 8000E968 A8 04 00 1A */ lha r0, 0x1a(r4) -/* 8000E96C B0 03 00 1A */ sth r0, 0x1a(r3) -/* 8000E970 80 04 00 1C */ lwz r0, 0x1c(r4) -/* 8000E974 90 03 00 1C */ stw r0, 0x1c(r3) -/* 8000E978 80 7F 00 04 */ lwz r3, 4(r31) -/* 8000E97C 38 A3 00 1C */ addi r5, r3, 0x1c -/* 8000E980 7C 63 DA 14 */ add r3, r3, r27 -/* 8000E984 7C 1B 28 2E */ lwzx r0, r27, r5 -/* 8000E988 7C 04 02 14 */ add r0, r4, r0 -/* 8000E98C 7C 03 00 50 */ subf r0, r3, r0 -/* 8000E990 7C 1B 29 2E */ stwx r0, r27, r5 -/* 8000E994 80 7F 00 04 */ lwz r3, 4(r31) -/* 8000E998 38 A3 00 0C */ addi r5, r3, 0xc -/* 8000E99C 7C 63 DA 14 */ add r3, r3, r27 -/* 8000E9A0 7C 1B 28 2E */ lwzx r0, r27, r5 -/* 8000E9A4 7C 04 02 14 */ add r0, r4, r0 -/* 8000E9A8 7C 03 00 50 */ subf r0, r3, r0 -/* 8000E9AC 7C 1B 29 2E */ stwx r0, r27, r5 -/* 8000E9B0 3A C0 00 01 */ li r22, 1 -lbl_8000E9B4: -/* 8000E9B4 3B 39 00 01 */ addi r25, r25, 1 -lbl_8000E9B8: -/* 8000E9B8 57 23 04 3E */ clrlwi r3, r25, 0x10 -/* 8000E9BC A0 1D 00 00 */ lhz r0, 0(r29) -/* 8000E9C0 7C 03 00 40 */ cmplw r3, r0 -/* 8000E9C4 41 80 FE C4 */ blt lbl_8000E888 -lbl_8000E9C8: -/* 8000E9C8 3B 5A 00 01 */ addi r26, r26, 1 -lbl_8000E9CC: -/* 8000E9CC 57 43 04 3E */ clrlwi r3, r26, 0x10 -/* 8000E9D0 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8000E9D4 7C 03 00 40 */ cmplw r3, r0 -/* 8000E9D8 41 80 FE 90 */ blt lbl_8000E868 -/* 8000E9DC 56 C0 06 3F */ clrlwi. r0, r22, 0x18 -/* 8000E9E0 41 82 00 88 */ beq lbl_8000EA68 -/* 8000E9E4 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 8000E9E8 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 8000E9EC 93 E3 00 58 */ stw r31, 0x58(r3) -/* 8000E9F0 3A C0 00 00 */ li r22, 0 -/* 8000E9F4 3C 60 80 43 */ lis r3, sGDLObj__17J3DDisplayListObj@ha /* 0x80434C70@ha */ -/* 8000E9F8 3B 23 4C 70 */ addi r25, r3, sGDLObj__17J3DDisplayListObj@l /* 0x80434C70@l */ -/* 8000E9FC 48 00 00 5C */ b lbl_8000EA58 -lbl_8000EA00: -/* 8000EA00 80 78 00 60 */ lwz r3, 0x60(r24) -/* 8000EA04 56 C0 13 BA */ rlwinm r0, r22, 2, 0xe, 0x1d -/* 8000EA08 7C 63 00 2E */ lwzx r3, r3, r0 -/* 8000EA0C 82 E3 00 2C */ lwz r23, 0x2c(r3) -/* 8000EA10 83 43 00 48 */ lwz r26, 0x48(r3) -/* 8000EA14 48 32 EC E1 */ bl OSDisableInterrupts -/* 8000EA18 7C 7B 1B 78 */ mr r27, r3 -/* 8000EA1C 7F 23 CB 78 */ mr r3, r25 -/* 8000EA20 80 9A 00 00 */ lwz r4, 0(r26) -/* 8000EA24 80 BA 00 08 */ lwz r5, 8(r26) -/* 8000EA28 48 35 25 71 */ bl GDInitGDLObj -/* 8000EA2C 93 2D 94 00 */ stw r25, __GDCurrentDL(r13) -/* 8000EA30 7E E3 BB 78 */ mr r3, r23 -/* 8000EA34 81 97 00 00 */ lwz r12, 0(r23) -/* 8000EA38 81 8C 00 34 */ lwz r12, 0x34(r12) -/* 8000EA3C 7D 89 03 A6 */ mtctr r12 -/* 8000EA40 4E 80 04 21 */ bctrl -/* 8000EA44 7F 63 DB 78 */ mr r3, r27 -/* 8000EA48 48 32 EC D5 */ bl OSRestoreInterrupts -/* 8000EA4C 38 00 00 00 */ li r0, 0 -/* 8000EA50 90 0D 94 00 */ stw r0, __GDCurrentDL(r13) -/* 8000EA54 3A D6 00 01 */ addi r22, r22, 1 -lbl_8000EA58: -/* 8000EA58 56 C3 04 3E */ clrlwi r3, r22, 0x10 -/* 8000EA5C A0 18 00 5C */ lhz r0, 0x5c(r24) -/* 8000EA60 7C 03 00 40 */ cmplw r3, r0 -/* 8000EA64 41 80 FF 9C */ blt lbl_8000EA00 -lbl_8000EA68: -/* 8000EA68 39 61 00 30 */ addi r11, r1, 0x30 -/* 8000EA6C 48 35 37 A1 */ bl _restgpr_22 -/* 8000EA70 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8000EA74 7C 08 03 A6 */ mtlr r0 -/* 8000EA78 38 21 00 30 */ addi r1, r1, 0x30 -/* 8000EA7C 4E 80 00 20 */ blr diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index ecd5e2b1b29..c7800b7359e 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -222,4 +222,8 @@ inline void* JKRGetTypeResource(u32 tag, const char* name, JKRArchive* arc) { return JKRArchive::getGlbResource(tag, name, arc); } +inline bool JKRRemoveResource(void* resource, JKRFileLoader* fileLoader) { + return JKRFileLoader::removeResource(resource, fileLoader); +} + #endif \ No newline at end of file diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index b4a2b67e08f..97bc429e188 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -421,6 +421,8 @@ public: JKRAramArchive* getFieldMapArchive2() { return (JKRAramArchive*)mFieldMapArchive2; } JKRArchive* getOptionResArchive() { return mOptionResArchive; } JKRArchive* getRingResArchive() { return mRingResArchive; } + JKRArchive* getFontArchive() { return mFontArchive; } + JKRArchive* getRubyArchive() { return mRubyArchive; } void setFieldMapArchive2(JKRArchive* arc) { mFieldMapArchive2 = arc; } void setAnmArchive(JKRArchive* arc) { mAnmArchive = arc; } @@ -2016,6 +2018,14 @@ inline void dComIfGp_setRubyArchive(JKRArchive* arc) { g_dComIfG_gameInfo.play.setRubyArchive(arc); } +inline JKRArchive* dComIfGp_getFontArchive() { + return g_dComIfG_gameInfo.play.getFontArchive(); +} + +inline JKRArchive* dComIfGp_getRubyArchive() { + return g_dComIfG_gameInfo.play.getRubyArchive(); +} + inline void dComIfGp_setMain2DArchive(JKRArchive* arc) { g_dComIfG_gameInfo.play.setMain2DArchive(arc); } diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 05926d090e4..3d7647553a1 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -275,7 +275,11 @@ public: u8 getPlayMode() { return mFrameCtrl.getAttribute(); } void setPlayMode(int mode) { mFrameCtrl.setAttribute(mode); } bool isStop() { - return mFrameCtrl.checkState(1) || mFrameCtrl.getRate() == 0.0f; + bool stopped = true; + if (!mFrameCtrl.checkState(1) && mFrameCtrl.getRate() != 0.0f) { + stopped = false; + } + return stopped; } bool isLoop() { return mFrameCtrl.checkState(2); } f32 getStartFrame() { return mFrameCtrl.getStart(); } @@ -343,7 +347,7 @@ public: mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32); /* 8001037C */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32, void*); - /* 800105C8 */ void play(Vec*, u32, s8); + /* 800105C8 */ u32 play(Vec*, u32, s8); /* 80010680 */ void entryDL(); /* 800106AC */ void modelCalc(); /* 80010710 */ void getTransform(u16, J3DTransformInfo*); @@ -468,7 +472,13 @@ public: class mDoExt_3DlineMat_c { public: + #ifdef NONMATCHING + virtual int getMaterialID(); + virtual void setMaterial(); + virtual void draw(); + #else /* 0x0 */ void* field_0x0; + #endif /* 0x4 */ mDoExt_3DlineMat_c* field_0x4; }; @@ -490,11 +500,11 @@ class dKy_tevstr_c; class mDoExt_3DlineMat1_c : public mDoExt_3DlineMat_c { public: /* 80013360 */ void init(u16, u16, ResTIMG*, int); - /* 800134F8 */ void setMaterial(); - /* 800135D0 */ void draw(); /* 80013FB0 */ void update(int, GXColor&, dKy_tevstr_c*); /* 8001373C */ void update(int, f32, GXColor&, u16, dKy_tevstr_c*); /* 80014E7C */ int getMaterialID(); + /* 800134F8 */ void setMaterial(); + /* 800135D0 */ void draw(); private: /* 0x08 */ GXTexObj field_0x8; diff --git a/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp b/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp index 87e6368b823..1ffc1862a09 100644 --- a/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp +++ b/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp @@ -5,6 +5,7 @@ #include "JSystem/J2DGraph/J2DMaterialFactory.h" #include "JSystem/J2DGraph/J2DMaterial.h" +#include "JSystem/JSupport/JSupport.h" #include "MSL_C/string.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index bbfb89e3d53..8daa75692c7 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -9,6 +9,8 @@ #include "JSystem/JKernel/JKRAssertHeap.h" #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/JKernel/JKRSolidHeap.h" +//#include "JSystem/JUtility/JUTResFont.h" +//#include "JSystem/JUtility/JUTCacheFont.h" #include "MSL_C/stdio.h" #include "Z2AudioLib/Z2Creature.h" #include "d/com/d_com_inf_game.h" @@ -330,6 +332,10 @@ extern "C" void func_80015084(void* _this); extern "C" void func_800150AC(void* _this); extern "C" extern char const* const m_Do_m_Do_ext__stringBase0; +static void mDoExt_initFontCommon(JUTFont** param_0, ResFONT** param_1, JKRHeap* param_2, + char const* param_3, JKRArchive* param_4, u8 param_5, u32 param_6, + u32 param_7); + // // External References: // @@ -2158,7 +2164,6 @@ void mDoExt_invisibleModel::entryDL(cXyz* param_0) { /* 8000E834-8000EA80 009174 024C+00 0/0 0/0 7/7 .text * mDoExt_setupShareTexture__FP12J3DModelDataP12J3DModelData */ -#ifdef NONMATCHING void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareModelData) { JUT_ASSERT(1547, i_modelData != 0 && i_shareModelData != 0); J3DTexture* texture = i_modelData->getTexture(); @@ -2172,7 +2177,8 @@ void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareMo bool bvar = false; for (u16 i = 0; i < texture->getNum(); i++) { - if (texture->getResTIMG(i)->imageOffset == 0) { + ResTIMG* res = texture->getResTIMG(i); + if (res->imageOffset == 0) { for (u16 j = 0; j < shareTexture->getNum(); j++) { if (!strcmp(textureName->getName(i), shareTextureName->getName(j))) { JUT_ASSERT(1564, shareTexture->getResTIMG(j)->imageOffset != 0); @@ -2202,16 +2208,6 @@ void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareMo } } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareModelData) { - nofralloc -#include "asm/m_Do/m_Do_ext/mDoExt_setupShareTexture__FP12J3DModelDataP12J3DModelData.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 803740FC-803740FC 00075C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -2676,6 +2672,28 @@ asm void mDoExt_MtxCalcAnmBlendTblOld::calc() { /* 8000F848-8000F8CC 00A188 0084+00 0/0 26/26 8/8 .text * initOldFrameMorf__22mDoExt_MtxCalcOldFrameFfUsUs */ +// Matches with literals +#ifdef NONMATCHING +void mDoExt_MtxCalcOldFrame::initOldFrameMorf(f32 param_0, u16 frameStartJoint, u16 frameEndJoint) { + if (param_0 > 0.0f) { + mOldFrameMorfCounter = param_0; + field_0x8 = 1.0f / param_0; + mOldFrameRate = 1.0f; + field_0x10 = 1.0f; + field_0x14 = 1.0f; + decOldFrameMorfCounter(); + } else { + mOldFrameMorfCounter = 0.0f; + field_0x8 = 0.0f; + mOldFrameRate = 0.0f; + field_0x10 = 0.0f; + field_0x14 = 0.0f; + } + + mOldFrameStartJoint = frameStartJoint; + mOldFrameEndJoint = frameEndJoint; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2684,9 +2702,32 @@ asm void mDoExt_MtxCalcOldFrame::initOldFrameMorf(f32 param_0, u16 param_1, u16 #include "asm/m_Do/m_Do_ext/initOldFrameMorf__22mDoExt_MtxCalcOldFrameFfUsUs.s" } #pragma pop +#endif /* 8000F8CC-8000F950 00A20C 0084+00 2/2 0/0 0/0 .text * decOldFrameMorfCounter__22mDoExt_MtxCalcOldFrameFv */ +#ifdef NONMATCHING +void mDoExt_MtxCalcOldFrame::decOldFrameMorfCounter() { + if (mOldFrameMorfCounter > 0.0f) { + + mOldFrameMorfCounter -= 1.0f; + if (mOldFrameMorfCounter <= 0.0f) { + mOldFrameMorfCounter = 0.0f; + field_0x8 = 0.0f; + mOldFrameRate = 0.0f; + } + + field_0x14 = field_0x10; + field_0x10 = mOldFrameMorfCounter * field_0x8; + + if (field_0x14 > 0.0f) { + mOldFrameRate = 1.0f - (field_0x14 - field_0x10) / field_0x14; + } else { + mOldFrameRate = 0.0f; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2695,8 +2736,18 @@ asm void mDoExt_MtxCalcOldFrame::decOldFrameMorfCounter() { #include "asm/m_Do/m_Do_ext/decOldFrameMorfCounter__22mDoExt_MtxCalcOldFrameFv.s" } #pragma pop +#endif /* 8000F950-8000F9D8 00A290 0088+00 3/3 0/0 0/0 .text __ct__13mDoExt_morf_cFv */ +// vtable issues +#ifdef NONMATCHING +mDoExt_morf_c::mDoExt_morf_c() { + mpModel = NULL; + mpAnm = NULL; + mpTransformInfo = NULL; + mpQuat = NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2705,6 +2756,7 @@ asm mDoExt_morf_c::mDoExt_morf_c() { #include "asm/m_Do/m_Do_ext/__ct__13mDoExt_morf_cFv.s" } #pragma pop +#endif /* 8000F9D8-8000FA20 00A318 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ #pragma push @@ -3059,14 +3111,27 @@ asm void mDoExt_McaMorf::setAnm(J3DAnmTransform* param_0, int param_1, f32 param /* 800105C8-80010680 00AF08 00B8+00 0/0 1/1 37/37 .text play__14mDoExt_McaMorfFP3VecUlSc */ +// Matches with literals +#ifdef NONMATCHING +u32 mDoExt_McaMorf::play(Vec* param_0, u32 param_1, s8 param_2) { + frameUpdate(); + if (mpSound != NULL && mpSound->field_0x48 != NULL && param_0 != NULL) { + mpSound->updateAnime(getFrame(), getPlaySpeed()); + mpSound->framework(param_1, param_2); + field_0x50 = true; + } + return isStop(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoExt_McaMorf::play(Vec* param_0, u32 param_1, s8 param_2) { +asm u32 mDoExt_McaMorf::play(Vec* param_0, u32 param_1, s8 param_2) { nofralloc #include "asm/m_Do/m_Do_ext/play__14mDoExt_McaMorfFP3VecUlSc.s" } #pragma pop +#endif /* 80010680-800106AC 00AFC0 002C+00 0/0 0/0 33/33 .text entryDL__14mDoExt_McaMorfFv */ void mDoExt_McaMorf::entryDL() { @@ -3089,14 +3154,21 @@ void mDoExt_McaMorf::modelCalc() { /* 80010710-800107D0 00B050 00C0+00 1/1 0/0 0/0 .text * getTransform__14mDoExt_McaMorfFUsP16J3DTransformInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoExt_McaMorf::getTransform(u16 param_0, J3DTransformInfo* param_1) { - nofralloc -#include "asm/m_Do/m_Do_ext/getTransform__14mDoExt_McaMorfFUsP16J3DTransformInfo.s" +void mDoExt_McaMorf::getTransform(u16 param_0, J3DTransformInfo* param_1) { + mpAnm->getTransform(param_0, param_1); + if (field_0x51) { + if (param_0 == 0) { + param_1->mTranslate.x *= mTranslateScale.x; + param_1->mTranslate.y *= mTranslateScale.y; + param_1->mTranslate.z *= mTranslateScale.z; + } else { + J3DTransformInfo& info = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo(); + param_1->mTranslate.x = info.mTranslate.x; + param_1->mTranslate.y = info.mTranslate.y; + param_1->mTranslate.z = info.mTranslate.z; + } + } } -#pragma pop /* 800107D0-80010888 00B110 00B8+00 0/0 2/2 222/222 .text * __ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl @@ -3125,6 +3197,7 @@ extern "C" asm void __dt__16mDoExt_McaMorfSOFv() { /* 800108F0-80010B68 00B230 0278+00 1/1 0/0 0/0 .text * create__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl */ +// Matches with literals #ifdef NONMATCHING int mDoExt_McaMorfSO::create(J3DModelData* i_modelData, mDoExt_McaMorfCallBack1_c* param_1, mDoExt_McaMorfCallBack2_c* param_2, J3DAnmTransform* param_3, @@ -3141,9 +3214,9 @@ int mDoExt_McaMorfSO::create(J3DModelData* i_modelData, mDoExt_McaMorfCallBack1_ if (i_modelData->getMaterialNodePointer(0)->getSharedDisplayListObj() != NULL && param_9 == 0) { if (i_modelData->isLocked()) { - param_10 = 0x20000; + param_9 = 0x20000; } else { - param_10 = 0x80000; + param_9 = 0x80000; } } @@ -3173,9 +3246,10 @@ int mDoExt_McaMorfSO::create(J3DModelData* i_modelData, mDoExt_McaMorfCallBack1_ J3DTransformInfo* transInfo = mpTransformInfo; Quaternion* quat = mpQuat; J3DModelData* modelData = mpModel->getModelData(); + u16 jointNum = modelData->getJointNum(); - for (int i = 0; i < modelData->getJointNum(); i++) { - transInfo = &modelData->getJointNodePointer(i)->getTransformInfo(); + for (int i = 0; i < jointNum; i++) { + *transInfo = modelData->getJointNodePointer(i)->getTransformInfo(); JMAEulerToQuat(transInfo->mRotation.x, transInfo->mRotation.y, transInfo->mRotation.z, quat); @@ -3303,14 +3377,21 @@ void mDoExt_McaMorfSO::modelCalc() { /* 80011250-80011310 00BB90 00C0+00 1/1 0/0 1/1 .text * getTransform__16mDoExt_McaMorfSOFUsP16J3DTransformInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoExt_McaMorfSO::getTransform(u16 param_0, J3DTransformInfo* param_1) { - nofralloc -#include "asm/m_Do/m_Do_ext/getTransform__16mDoExt_McaMorfSOFUsP16J3DTransformInfo.s" +void mDoExt_McaMorfSO::getTransform(u16 param_0, J3DTransformInfo* param_1) { + mpAnm->getTransform(param_0, param_1); + if (mTranslate) { + if (param_0 == 0) { + param_1->mTranslate.x *= mTranslateScale.x; + param_1->mTranslate.y *= mTranslateScale.y; + param_1->mTranslate.z *= mTranslateScale.z; + } else { + J3DTransformInfo& info = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo(); + param_1->mTranslate.x = info.mTranslate.x; + param_1->mTranslate.y = info.mTranslate.y; + param_1->mTranslate.z = info.mTranslate.z; + } + } } -#pragma pop /* 80011310-80011348 00BC50 0038+00 1/1 2/2 260/260 .text stopZelAnime__16mDoExt_McaMorfSOFv */ void mDoExt_McaMorfSO::stopZelAnime() { @@ -3322,18 +3403,13 @@ void mDoExt_McaMorfSO::stopZelAnime() { /* 80011348-800113FC 00BC88 00B4+00 0/0 0/0 1/1 .text * __ct__15mDoExt_McaMorf2FP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformP15J3DAnmTransformifiiP10Z2CreatureUlUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoExt_McaMorf2::mDoExt_McaMorf2(J3DModelData* param_0, mDoExt_McaMorfCallBack1_c* param_1, - mDoExt_McaMorfCallBack2_c* param_2, J3DAnmTransform* param_3, - J3DAnmTransform* param_4, int param_5, f32 param_6, - int param_7, int param_8, Z2Creature* param_9, u32 param_10, - u32 param_11) { - nofralloc -#include "asm/m_Do/m_Do_ext/func_80011348.s" +mDoExt_McaMorf2::mDoExt_McaMorf2(J3DModelData* param_0, mDoExt_McaMorfCallBack1_c* param_1, + mDoExt_McaMorfCallBack2_c* param_2, J3DAnmTransform* param_3, + J3DAnmTransform* param_4, int param_5, f32 param_6, int param_7, + int param_8, Z2Creature* param_9, u32 param_10, u32 param_11) { + create(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9, + param_10, param_11); } -#pragma pop /* 800113FC-80011464 00BD3C 0068+00 1/0 0/0 0/0 .text __dt__15mDoExt_McaMorf2Fv */ #pragma push @@ -3403,6 +3479,30 @@ asm void mDoExt_McaMorf2::setAnm(J3DAnmTransform* param_0, J3DAnmTransform* para #pragma pop /* 80011FCC-800120A0 00C90C 00D4+00 0/0 0/0 2/2 .text setAnmRate__15mDoExt_McaMorf2Ff */ +// Matches with literals +#ifdef NONMATCHING +void mDoExt_McaMorf2::setAnmRate(f32 param_0) { + void* pBas = NULL; + field_0x44 = param_0; + if (mpSound != NULL) { + if (field_0x44 < 0.5f) { + if (mpAnm != NULL) { + pBas = ((mDoExt_transAnmBas*)mpAnm)->getBas(); + } + } else if (field_0x40 != NULL) { + pBas = ((mDoExt_transAnmBas*)field_0x40)->getBas(); + } + if (pBas != mpBas) { + if (pBas != NULL) { + mpBas = pBas; + mpSound->initAnime(mpBas, getPlaySpeed() >= 0.0f, getLoopFrame(), getFrame()); + } else { + mpBas = NULL; + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3411,6 +3511,7 @@ asm void mDoExt_McaMorf2::setAnmRate(f32 param_0) { #include "asm/m_Do/m_Do_ext/setAnmRate__15mDoExt_McaMorf2Ff.s" } #pragma pop +#endif /* 800120A0-80012144 00C9E0 00A4+00 0/0 0/0 1/1 .text play__15mDoExt_McaMorf2FUlSc */ // matches with literals @@ -3679,6 +3780,18 @@ asm void mDoExt_3DlineMatSortPacket::setMat(mDoExt_3DlineMat_c* param_0) { #pragma pop /* 8001479C-80014804 00F0DC 0068+00 1/0 0/0 0/0 .text draw__26mDoExt_3DlineMatSortPacketFv */ +// Matches with mDoExt_3DlineMat_c virtual function defs +#ifdef NONMATCHING +void mDoExt_3DlineMatSortPacket::draw() { + mp3DlineMat->setMaterial(); + mDoExt_3DlineMat_c* lineMat = mp3DlineMat; + do { + lineMat->draw(); + lineMat = lineMat->field_0x4; + } while (lineMat != NULL); + J3DShape::resetVcdVatCache(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3688,6 +3801,7 @@ extern "C" asm void draw__26mDoExt_3DlineMatSortPacketFv() { #include "asm/m_Do/m_Do_ext/draw__26mDoExt_3DlineMatSortPacketFv.s" } #pragma pop +#endif void drawCube(MtxP mtx, cXyz* pos, const GXColor& color) { GXSetArray(GX_VA_POS, pos, sizeof(cXyz)); @@ -3791,6 +3905,37 @@ SECTION_DEAD static char const* const stringBase_8037416B = /* 80014804-8001494C 00F144 0148+00 3/3 0/0 0/0 .text * mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl */ +// Matches with FontCache include +#ifdef NONMATCHING +static void mDoExt_initFontCommon(JUTFont** mDoExt_font, ResFONT** mDoExt_resfont, JKRHeap* param_2, + char const* param_3, JKRArchive* param_4, u8 param_5, + u32 param_6, u32 param_7) { + JUT_ASSERT(7141, mDoExt_font == 0); + JUT_ASSERT(7142, mDoExt_resfont == 0); + *mDoExt_resfont = (ResFONT*)JKRGetResource('ROOT', param_3, param_4); + JUT_ASSERT(7144, *mDoExt_resfont != 0); + if (param_5 == 0) { + u32 cacheSize = JUTCacheFont::calcCacheSize(param_7, param_6); + JUTCacheFont* cacheFont = new (param_2, 0) JUTCacheFont(*mDoExt_resfont, cacheSize, param_2); + if (cacheFont->isValid()) { + *mDoExt_font = cacheFont; + cacheFont->setPagingType(JUTCacheFont::PAGE_TYPE_1); + } + JKRRemoveResource(*mDoExt_resfont, NULL); + *mDoExt_resfont = NULL; + } else { + JUTResFont* local_28 = new JUTResFont(*mDoExt_resfont, param_2); + *mDoExt_font = local_28; + } + if (*mDoExt_font != NULL && !(*mDoExt_font)->isValid()) { + // Failed to create cache font class + OSReport_FatalError("\nキャッシュフォントクラス作成に失敗しました\n"); + delete *mDoExt_font; + *mDoExt_font = NULL; + } + JUT_ASSERT(7183, mDoExt_font != 0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3801,12 +3946,14 @@ static asm void mDoExt_initFontCommon(JUTFont** param_0, ResFONT** param_1, JKRH #include "asm/m_Do/m_Do_ext/mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl.s" } #pragma pop +#endif /* 8001494C-80014994 00F28C 0048+00 1/0 0/0 0/0 .text __dt__7JUTFontFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JUTFont::~JUTFont() { +//asm JUTFont::~JUTFont() { +extern "C" asm void __dt__7JUTFontFv() { nofralloc #include "asm/m_Do/m_Do_ext/__dt__7JUTFontFv.s" } @@ -3814,8 +3961,7 @@ asm JUTFont::~JUTFont() { /* ############################################################################################## */ /* 803740C0-803740D4 000720 0012+02 1/1 0/0 0/0 .rodata fontdata$8224 */ -SECTION_RODATA static char const fontdata_8224[] = "rodan_b_24_22.bfn"; -COMPILER_STRIP_GATE(0x803740C0, &fontdata_8224); +static char const fontdata_8224[] = "rodan_b_24_22.bfn"; /* 80450C44-80450C48 000144 0004+00 3/3 0/0 0/0 .sbss mDoExt_font0 */ static JUTFont* mDoExt_font0; @@ -3827,14 +3973,10 @@ static int mDoExt_font0_getCount; static ResFONT* mDoExt_resfont0; /* 80014994-800149F0 00F2D4 005C+00 1/1 0/0 0/0 .text mDoExt_initFont0__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void mDoExt_initFont0() { - nofralloc -#include "asm/m_Do/m_Do_ext/mDoExt_initFont0__Fv.s" +static void mDoExt_initFont0() { + mDoExt_initFontCommon(&mDoExt_font0, &mDoExt_resfont0, mDoExt_getZeldaHeap(), + fontdata_8224, dComIfGp_getFontArchive(), 1, 0, 0); } -#pragma pop /* 800149F0-80014A2C 00F330 003C+00 0/0 51/51 2/2 .text mDoExt_getMesgFont__Fv */ JUTFont* mDoExt_getMesgFont() { @@ -3847,6 +3989,24 @@ JUTFont* mDoExt_getMesgFont() { } /* 80014A2C-80014AA4 00F36C 0078+00 0/0 6/6 0/0 .text mDoExt_removeMesgFont__Fv */ +// Matches with JUTFont include +#ifdef NONMATCHING +void mDoExt_removeMesgFont() { + JUT_ASSERT(7238, mDoExt_font0_getCount > 0); + if (mDoExt_font0_getCount > 0) { + mDoExt_font0_getCount--; + JUT_ASSERT(7241, mDoExt_font0_getCount > 0); + if (mDoExt_font0_getCount == 0) { + delete mDoExt_font0; + mDoExt_font0 = NULL; + if (mDoExt_resfont0 != NULL) { + i_JKRFree(mDoExt_resfont0); + mDoExt_resfont0 = NULL; + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3855,11 +4015,11 @@ asm void mDoExt_removeMesgFont() { #include "asm/m_Do/m_Do_ext/mDoExt_removeMesgFont__Fv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803740D4-803740E8 000734 0014+00 1/1 0/0 0/0 .rodata fontdata$8253 */ -SECTION_RODATA static char const fontdata_8253[] = "reishotai_24_22.bfn"; -COMPILER_STRIP_GATE(0x803740D4, &fontdata_8253); +static char const fontdata_8253[] = "reishotai_24_22.bfn"; /* 80450C50-80450C54 000150 0004+00 2/2 0/0 0/0 .sbss mDoExt_font1 */ static JUTFont* mDoExt_font1; @@ -3871,14 +4031,10 @@ static int mDoExt_font1_getCount; static ResFONT* mDoExt_resfont1; /* 80014AA4-80014B04 00F3E4 0060+00 1/1 0/0 0/0 .text mDoExt_initFont1__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void mDoExt_initFont1() { - nofralloc -#include "asm/m_Do/m_Do_ext/mDoExt_initFont1__Fv.s" +static void mDoExt_initFont1() { + mDoExt_initFontCommon(&mDoExt_font1, &mDoExt_resfont1, mDoExt_getZeldaHeap(), + fontdata_8253, dComIfGp_getRubyArchive(), 1, 1, 0x8000); } -#pragma pop /* 80014B04-80014B40 00F444 003C+00 0/0 8/8 0/0 .text mDoExt_getRubyFont__Fv */ JUTFont* mDoExt_getRubyFont() { @@ -3892,8 +4048,7 @@ JUTFont* mDoExt_getRubyFont() { /* ############################################################################################## */ /* 803740E8-803740FC 000748 0014+00 1/1 0/0 0/0 .rodata fontdata$8287 */ -SECTION_RODATA static char const fontdata_8287[] = "reishotai_24_22.bfn"; -COMPILER_STRIP_GATE(0x803740E8, &fontdata_8287); +static char const fontdata_8287[] = "reishotai_24_22.bfn"; /* 80450C5C-80450C60 00015C 0004+00 3/3 0/0 0/0 .sbss mDoExt_font2 */ static JUTFont* mDoExt_font2; @@ -3905,14 +4060,10 @@ static int mDoExt_font2_getCount; static ResFONT* mDoExt_resfont2; /* 80014B40-80014BA0 00F480 0060+00 1/1 0/0 0/0 .text mDoExt_initFont2__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void mDoExt_initFont2() { - nofralloc -#include "asm/m_Do/m_Do_ext/mDoExt_initFont2__Fv.s" +static void mDoExt_initFont2() { + mDoExt_initFontCommon(&mDoExt_font2, &mDoExt_resfont2, mDoExt_getZeldaHeap(), + fontdata_8287, dComIfGp_getRubyArchive(), 1, 1, 0x8000); } -#pragma pop /* 80014BA0-80014BDC 00F4E0 003C+00 0/0 11/11 0/0 .text mDoExt_getSubFont__Fv */ JUTFont* mDoExt_getSubFont() { @@ -3925,6 +4076,24 @@ JUTFont* mDoExt_getSubFont() { } /* 80014BDC-80014C54 00F51C 0078+00 0/0 2/2 0/0 .text mDoExt_removeSubFont__Fv */ +// Matches with JUTFont +#ifdef NONMATCHING +void mDoExt_removeSubFont() { + JUT_ASSERT(7354, mDoExt_font2_getCount > 0); + if (mDoExt_font2_getCount > 0) { + mDoExt_font2_getCount--; + JUT_ASSERT(7357, mDoExt_font2_getCount > 0); + if (mDoExt_font2_getCount == 0) { + delete mDoExt_font2; + mDoExt_font2 = NULL; + if (mDoExt_resfont2 != NULL) { + i_JKRFree(mDoExt_resfont2); + mDoExt_resfont2 = NULL; + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3933,6 +4102,7 @@ asm void mDoExt_removeSubFont() { #include "asm/m_Do/m_Do_ext/mDoExt_removeSubFont__Fv.s" } #pragma pop +#endif /* 80014C54-80014D5C 00F594 0108+00 3/3 14/14 445/445 .text * mDoExt_J3DModel__create__FP12J3DModelDataUlUl */ @@ -4004,7 +4174,8 @@ asm void JUTFont::setGX(JUtility::TColor param_0, JUtility::TColor param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JUTFont::getCellWidth() const { +//asm void JUTFont::getCellWidth() const { +asm void getCellWidth__7JUTFontCFv() { nofralloc #include "asm/m_Do/m_Do_ext/getCellWidth__7JUTFontCFv.s" } @@ -4014,7 +4185,8 @@ asm void JUTFont::getCellWidth() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JUTFont::getCellHeight() const { +//asm void JUTFont::getCellHeight() const { +asm void getCellHeight__7JUTFontCFv() { nofralloc #include "asm/m_Do/m_Do_ext/getCellHeight__7JUTFontCFv.s" } @@ -4158,6 +4330,12 @@ void J3DMtxCalcNoAnm::cal /* 800150AC-8001513C 00F9EC 0090+00 1/0 0/0 0/0 .text * calc__114J3DMtxCalcAnimation<64J3DMtxCalcAnimationAdaptorDefault<27J3DMtxCalcCalcTransformMaya>,24J3DMtxCalcJ3DSysInitMaya>Fv */ +// Matching with J3DMtxCalcAnmBase inheritance +#ifdef NONMATCHING +void J3DMtxCalcAnimation, J3DMtxCalcJ3DSysInitMaya>::calc() { + J3DMtxCalcCalcTransformMaya::calcTransform(getJoint()->getTransformInfo()); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -4166,5 +4344,6 @@ extern "C" asm void func_800150AC(void* _this) { #include "asm/m_Do/m_Do_ext/func_800150AC.s" } #pragma pop +#endif /* 803740FC-803740FC 00075C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */