d_a_e_fz work, doxygen revamp (#2127)

* initial freezard actor struct + setActionMode OK

* daE_FZ_Draw

* setReflectAngle

* mBoundSoundset

* daE_FZ_Execute & execute

* demoDelete

* daE_FZ_Delete & _delete

* CreateHeap

* useHeapInit

* cc_set

* mtx_set

* action WIP

* way_gake_check

* executeRollMove

* executeMove

* draw WIP

* executeDamage

* checkpoint

* create

* checkpoint

* daE_FZ_c::executeWait

* checkpoint

* daE_FZ_c::damage_check almost done

* rm asm

* rm headers

* setup_profile WIP + doxygen update

* fix merge issues

* docs fix?

* fix2

* doxygen updates

* setup g_profile_E_FZ, profile setup script WIP

* update github actions

* update progress.md
This commit is contained in:
Pheenoh 2024-04-12 00:10:30 -06:00 committed by GitHub
parent b36f0f9366
commit a61e3491f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1245 changed files with 16183 additions and 9396 deletions

View File

@ -1,22 +1,19 @@
name: run Doxygen to generate docs name: Generate Doxygen Static Site
on: on:
push: push:
branches: branches:
- main - main
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- name: generate docs - name: generate docs
uses: mattnotmitt/doxygen-action@v1 uses: mattnotmitt/doxygen-action@v1
with: with:
doxyfile-path: 'Doxyfile' doxyfile-path: 'Doxyfile'
- name: deploy docs to github pages - name: deploy docs to github pages
uses: peaceiris/actions-gh-pages@v3 uses: peaceiris/actions-gh-pages@v4
with: with:
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/doxygen publish_dir: ./docs/doxygen/html

867
Doxyfile

File diff suppressed because it is too large Load Diff

View File

@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes)
.init | 97.972973% | 9280 | 9472 .init | 97.972973% | 9280 | 9472
.extab | 100.000000% | 96 | 96 .extab | 100.000000% | 96 | 96
.extabindex | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96
.text | 48.455851% | 1742736 | 3596544 .text | 48.756584% | 1753552 | 3596544
.ctors | 100.000000% | 448 | 448 .ctors | 100.000000% | 448 | 448
.dtors | 100.000000% | 32 | 32 .dtors | 100.000000% | 32 | 32
.rodata | 100.000000% | 193856 | 193856 .rodata | 100.000000% | 193856 | 193856
.data | 100.000000% | 197632 | 197632 .data | 100.000000% | 197632 | 197632
.sdata | 100.000000% | 1408 | 1408 .sdata | 100.000000% | 1408 | 1408
.sdata2 | 100.000000% | 20832 | 20832 .sdata2 | 100.000000% | 20832 | 20832
Total | 53.888305% | 2166672 | 4020672 Total | 54.157315% | 2177488 | 4020672
## Total ## Total
Section | Percentage | Decompiled (bytes) | Total (bytes) Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|--- ---|---|---|---
main.dol | 53.888305% | 2166672 | 4020672 main.dol | 54.157315% | 2177488 | 4020672
RELs | 37.290880% | 4288572 | 11500324 RELs | 37.556090% | 4319072 | 11500324
Total | 41.590398% | 6455244 | 15520996 Total | 41.856592% | 6496560 | 15520996
## RELs ## RELs
@ -74,8 +74,8 @@ d_a_demo_item | 33.863165% | 3920 | 11576
d_a_disappear | 100.000000% | 2404 | 2404 d_a_disappear | 100.000000% | 2404 | 2404
d_a_dmidna | 100.000000% | 1888 | 1888 d_a_dmidna | 100.000000% | 1888 | 1888
d_a_do | 37.666220% | 14616 | 38804 d_a_do | 37.666220% | 14616 | 38804
d_a_door_boss | 66.342756% | 6008 | 9056 d_a_door_boss | 100.000000% | 9056 | 9056
d_a_door_bossL1 | 39.355114% | 7372 | 18732 d_a_door_bossL1 | 100.000000% | 18732 | 18732
d_a_door_bossL5 | 39.221790% | 4032 | 10280 d_a_door_bossL5 | 39.221790% | 4032 | 10280
d_a_door_dbdoor00 | 100.000000% | 7620 | 7620 d_a_door_dbdoor00 | 100.000000% | 7620 | 7620
d_a_door_knob00 | 37.500000% | 4608 | 12288 d_a_door_knob00 | 37.500000% | 4608 | 12288
@ -107,7 +107,7 @@ d_a_e_fb | 31.127328% | 4948 | 15896
d_a_e_fk | 32.965394% | 4420 | 13408 d_a_e_fk | 32.965394% | 4420 | 13408
d_a_e_fm | 24.588144% | 15164 | 61672 d_a_e_fm | 24.588144% | 15164 | 61672
d_a_e_fs | 31.823996% | 4976 | 15636 d_a_e_fs | 31.823996% | 4976 | 15636
d_a_e_fz | 30.508860% | 5372 | 17608 d_a_e_fz | 35.756474% | 6296 | 17608
d_a_e_ga | 43.014395% | 2032 | 4724 d_a_e_ga | 43.014395% | 2032 | 4724
d_a_e_gb | 26.939571% | 8292 | 30780 d_a_e_gb | 26.939571% | 8292 | 30780
d_a_e_ge | 24.669967% | 7176 | 29088 d_a_e_ge | 24.669967% | 7176 | 29088
@ -136,7 +136,7 @@ d_a_e_ms | 28.208138% | 5768 | 20448
d_a_e_nest | 100.000000% | 19932 | 19932 d_a_e_nest | 100.000000% | 19932 | 19932
d_a_e_nz | 32.041969% | 4764 | 14868 d_a_e_nz | 32.041969% | 4764 | 14868
d_a_e_oc | 22.586920% | 11148 | 49356 d_a_e_oc | 22.586920% | 11148 | 49356
d_a_e_oct_bg | 30.217151% | 6568 | 21736 d_a_e_oct_bg | 100.000000% | 21736 | 21736
d_a_e_ot | 32.497589% | 5392 | 16592 d_a_e_ot | 32.497589% | 5392 | 16592
d_a_e_ph | 100.000000% | 23872 | 23872 d_a_e_ph | 100.000000% | 23872 | 23872
d_a_e_pm | 21.505129% | 11236 | 52248 d_a_e_pm | 21.505129% | 11236 | 52248
@ -785,4 +785,4 @@ d_a_vrbox2 | 44.907111% | 2804 | 6244
d_a_warp_bug | 100.000000% | 2024 | 2024 d_a_warp_bug | 100.000000% | 2024 | 2024
d_a_ykgr | 44.400631% | 2252 | 5072 d_a_ykgr | 44.400631% | 2252 | 5072
f_pc_profile_lst | 100.000000% | 28156 | 28156 f_pc_profile_lst | 100.000000% | 28156 | 28156
Total | 37.290880% | 4288572 | 11500324 Total | 37.556090% | 4319072 | 11500324

View File

@ -1,37 +0,0 @@
lbl_806C0C28:
/* 806C0C28 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806C0C2C 7C 08 02 A6 */ mflr r0
/* 806C0C30 90 01 00 14 */ stw r0, 0x14(r1)
/* 806C0C34 93 E1 00 0C */ stw r31, 0xc(r1)
/* 806C0C38 7C 7F 1B 78 */ mr r31, r3
/* 806C0C3C 3C 60 80 6C */ lis r3, d_a_e_fz__stringBase0@ha /* 0x806C19F4@ha */
/* 806C0C40 38 63 19 F4 */ addi r3, r3, d_a_e_fz__stringBase0@l /* 0x806C19F4@l */
/* 806C0C44 38 80 00 03 */ li r4, 3
/* 806C0C48 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 806C0C4C 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 806C0C50 3C A5 00 02 */ addis r5, r5, 2
/* 806C0C54 38 C0 00 80 */ li r6, 0x80
/* 806C0C58 38 A5 C2 F8 */ addi r5, r5, -15624
/* 806C0C5C 4B 97 B6 91 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci
/* 806C0C60 38 80 00 00 */ li r4, 0
/* 806C0C64 3C A0 11 02 */ lis r5, 0x1102 /* 0x11020203@ha */
/* 806C0C68 38 A5 02 03 */ addi r5, r5, 0x0203 /* 0x11020203@l */
/* 806C0C6C 4B 95 3F E9 */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl
/* 806C0C70 90 7F 05 B4 */ stw r3, 0x5b4(r31)
/* 806C0C74 80 9F 05 B4 */ lwz r4, 0x5b4(r31)
/* 806C0C78 28 04 00 00 */ cmplwi r4, 0
/* 806C0C7C 40 82 00 0C */ bne lbl_806C0C88
/* 806C0C80 38 60 00 00 */ li r3, 0
/* 806C0C84 48 00 00 18 */ b lbl_806C0C9C
lbl_806C0C88:
/* 806C0C88 38 7F 05 B8 */ addi r3, r31, 0x5b8
/* 806C0C8C 38 A0 00 01 */ li r5, 1
/* 806C0C90 4B 94 D8 AD */ bl create__21mDoExt_invisibleModelFP8J3DModelUc
/* 806C0C94 30 03 FF FF */ addic r0, r3, -1
/* 806C0C98 7C 60 19 10 */ subfe r3, r0, r3
lbl_806C0C9C:
/* 806C0C9C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 806C0CA0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806C0CA4 7C 08 03 A6 */ mtlr r0
/* 806C0CA8 38 21 00 10 */ addi r1, r1, 0x10
/* 806C0CAC 4E 80 00 20 */ blr

View File

@ -1,32 +0,0 @@
lbl_806C0B94:
/* 806C0B94 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806C0B98 7C 08 02 A6 */ mflr r0
/* 806C0B9C 90 01 00 14 */ stw r0, 0x14(r1)
/* 806C0BA0 93 E1 00 0C */ stw r31, 0xc(r1)
/* 806C0BA4 7C 7F 1B 78 */ mr r31, r3
/* 806C0BA8 38 7F 05 AC */ addi r3, r31, 0x5ac
/* 806C0BAC 3C 80 80 6C */ lis r4, d_a_e_fz__stringBase0@ha /* 0x806C19F4@ha */
/* 806C0BB0 38 84 19 F4 */ addi r4, r4, d_a_e_fz__stringBase0@l /* 0x806C19F4@l */
/* 806C0BB4 4B 96 C4 55 */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc
/* 806C0BB8 88 1F 0C 21 */ lbz r0, 0xc21(r31)
/* 806C0BBC 28 00 00 00 */ cmplwi r0, 0
/* 806C0BC0 41 82 00 10 */ beq lbl_806C0BD0
/* 806C0BC4 38 00 00 00 */ li r0, 0
/* 806C0BC8 3C 60 80 6C */ lis r3, data_806C1BA0@ha /* 0x806C1BA0@ha */
/* 806C0BCC 98 03 1B A0 */ stb r0, data_806C1BA0@l(r3) /* 0x806C1BA0@l */
lbl_806C0BD0:
/* 806C0BD0 80 1F 00 F0 */ lwz r0, 0xf0(r31)
/* 806C0BD4 28 00 00 00 */ cmplwi r0, 0
/* 806C0BD8 41 82 00 18 */ beq lbl_806C0BF0
/* 806C0BDC 38 7F 05 C0 */ addi r3, r31, 0x5c0
/* 806C0BE0 81 9F 05 C0 */ lwz r12, 0x5c0(r31)
/* 806C0BE4 81 8C 00 08 */ lwz r12, 8(r12)
/* 806C0BE8 7D 89 03 A6 */ mtctr r12
/* 806C0BEC 4E 80 04 21 */ bctrl
lbl_806C0BF0:
/* 806C0BF0 38 60 00 01 */ li r3, 1
/* 806C0BF4 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 806C0BF8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806C0BFC 7C 08 03 A6 */ mtlr r0
/* 806C0C00 38 21 00 10 */ addi r1, r1, 0x10
/* 806C0C04 4E 80 00 20 */ blr

View File

@ -226,14 +226,14 @@ lbl_806C1020:
/* 806C102C 38 84 0F 38 */ addi r4, r4, 0xf38 /* 806C102C 38 84 0F 38 */ addi r4, r4, 0xf38
/* 806C1030 4B 9B 5A 7D */ bl CrrPos__9dBgS_AcchFR4dBgS /* 806C1030 4B 9B 5A 7D */ bl CrrPos__9dBgS_AcchFR4dBgS
/* 806C1034 38 7D 09 80 */ addi r3, r29, 0x980 /* 806C1034 38 7D 09 80 */ addi r3, r29, 0x980
/* 806C1038 3C 80 80 6C */ lis r4, data_806C1A38@ha /* 0x806C1A38@ha */ /* 806C1038 3C 80 80 6C */ lis r4, cc_fz_src@ha /* 0x806C1A38@ha */
/* 806C103C 38 84 1A 38 */ addi r4, r4, data_806C1A38@l /* 0x806C1A38@l */ /* 806C103C 38 84 1A 38 */ addi r4, r4, cc_fz_src@l /* 0x806C1A38@l */
/* 806C1040 4B 9C 39 F5 */ bl Set__8dCcD_SphFRC11dCcD_SrcSph /* 806C1040 4B 9C 39 F5 */ bl Set__8dCcD_SphFRC11dCcD_SrcSph
/* 806C1044 38 1D 09 44 */ addi r0, r29, 0x944 /* 806C1044 38 1D 09 44 */ addi r0, r29, 0x944
/* 806C1048 90 1D 09 C4 */ stw r0, 0x9c4(r29) /* 806C1048 90 1D 09 C4 */ stw r0, 0x9c4(r29)
/* 806C104C 38 7D 0A B8 */ addi r3, r29, 0xab8 /* 806C104C 38 7D 0A B8 */ addi r3, r29, 0xab8
/* 806C1050 3C 80 80 6C */ lis r4, data_806C1A78@ha /* 0x806C1A78@ha */ /* 806C1050 3C 80 80 6C */ lis r4, cc_fz_at_src@ha /* 0x806C1A78@ha */
/* 806C1054 38 84 1A 78 */ addi r4, r4, data_806C1A78@l /* 0x806C1A78@l */ /* 806C1054 38 84 1A 78 */ addi r4, r4, cc_fz_at_src@l /* 0x806C1A78@l */
/* 806C1058 4B 9C 39 DD */ bl Set__8dCcD_SphFRC11dCcD_SrcSph /* 806C1058 4B 9C 39 DD */ bl Set__8dCcD_SphFRC11dCcD_SrcSph
/* 806C105C 38 1D 09 44 */ addi r0, r29, 0x944 /* 806C105C 38 1D 09 44 */ addi r0, r29, 0x944
/* 806C1060 90 1D 0A FC */ stw r0, 0xafc(r29) /* 806C1060 90 1D 0A FC */ stw r0, 0xafc(r29)

View File

@ -1,9 +0,0 @@
lbl_806C13D8:
/* 806C13D8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806C13DC 7C 08 02 A6 */ mflr r0
/* 806C13E0 90 01 00 14 */ stw r0, 0x14(r1)
/* 806C13E4 4B FF F8 ED */ bl create__8daE_FZ_cFv
/* 806C13E8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806C13EC 7C 08 03 A6 */ mtlr r0
/* 806C13F0 38 21 00 10 */ addi r1, r1, 0x10
/* 806C13F4 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_806C0C08:
/* 806C0C08 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806C0C0C 7C 08 02 A6 */ mflr r0
/* 806C0C10 90 01 00 14 */ stw r0, 0x14(r1)
/* 806C0C14 4B FF FF 81 */ bl _delete__8daE_FZ_cFv
/* 806C0C18 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806C0C1C 7C 08 03 A6 */ mtlr r0
/* 806C0C20 38 21 00 10 */ addi r1, r1, 0x10
/* 806C0C24 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_806BEAD8:
/* 806BEAD8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806BEADC 7C 08 02 A6 */ mflr r0
/* 806BEAE0 90 01 00 14 */ stw r0, 0x14(r1)
/* 806BEAE4 4B FF FE F1 */ bl draw__8daE_FZ_cFv
/* 806BEAE8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806BEAEC 7C 08 03 A6 */ mtlr r0
/* 806BEAF0 38 21 00 10 */ addi r1, r1, 0x10
/* 806BEAF4 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_806C0B00:
/* 806C0B00 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806C0B04 7C 08 02 A6 */ mflr r0
/* 806C0B08 90 01 00 14 */ stw r0, 0x14(r1)
/* 806C0B0C 4B FF FD B9 */ bl execute__8daE_FZ_cFv
/* 806C0B10 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806C0B14 7C 08 03 A6 */ mtlr r0
/* 806C0B18 38 21 00 10 */ addi r1, r1, 0x10
/* 806C0B1C 4E 80 00 20 */ blr

View File

@ -1,29 +0,0 @@
lbl_806C0B20:
/* 806C0B20 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 806C0B24 7C 08 02 A6 */ mflr r0
/* 806C0B28 90 01 00 24 */ stw r0, 0x24(r1)
/* 806C0B2C 39 61 00 20 */ addi r11, r1, 0x20
/* 806C0B30 4B CA 16 A9 */ bl _savegpr_28
/* 806C0B34 7C 7C 1B 78 */ mr r28, r3
/* 806C0B38 3B A0 00 00 */ li r29, 0
/* 806C0B3C 3B E0 00 00 */ li r31, 0
/* 806C0B40 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 806C0B44 3B C3 61 C0 */ addi r30, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
lbl_806C0B48:
/* 806C0B48 80 7E 5D 3C */ lwz r3, 0x5d3c(r30)
/* 806C0B4C 38 63 02 10 */ addi r3, r3, 0x210
/* 806C0B50 38 1F 07 1C */ addi r0, r31, 0x71c
/* 806C0B54 7C 9C 00 2E */ lwzx r4, r28, r0
/* 806C0B58 4B 98 AD 5D */ bl forceOnEventMove__Q213dPa_control_c7level_cFUl
/* 806C0B5C 3B BD 00 01 */ addi r29, r29, 1
/* 806C0B60 2C 1D 00 03 */ cmpwi r29, 3
/* 806C0B64 3B FF 00 04 */ addi r31, r31, 4
/* 806C0B68 41 80 FF E0 */ blt lbl_806C0B48
/* 806C0B6C 7F 83 E3 78 */ mr r3, r28
/* 806C0B70 4B 95 91 0D */ bl fopAcM_delete__FP10fopAc_ac_c
/* 806C0B74 39 61 00 20 */ addi r11, r1, 0x20
/* 806C0B78 4B CA 16 AD */ bl _restgpr_28
/* 806C0B7C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 806C0B80 7C 08 03 A6 */ mtlr r0
/* 806C0B84 38 21 00 20 */ addi r1, r1, 0x20
/* 806C0B88 4E 80 00 20 */ blr

View File

@ -1,28 +0,0 @@
lbl_806BEBA0:
/* 806BEBA0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 806BEBA4 7C 08 02 A6 */ mflr r0
/* 806BEBA8 90 01 00 24 */ stw r0, 0x24(r1)
/* 806BEBAC 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 806BEBB0 7C 7F 1B 78 */ mr r31, r3
/* 806BEBB4 C0 23 05 2C */ lfs f1, 0x52c(r3)
/* 806BEBB8 4B CA 34 F5 */ bl __cvt_fp2unsigned
/* 806BEBBC 7C 65 1B 78 */ mr r5, r3
/* 806BEBC0 28 05 00 01 */ cmplwi r5, 1
/* 806BEBC4 40 80 00 08 */ bge lbl_806BEBCC
/* 806BEBC8 38 A0 00 01 */ li r5, 1
lbl_806BEBCC:
/* 806BEBCC 3C 60 00 07 */ lis r3, 0x0007 /* 0x00070320@ha */
/* 806BEBD0 38 03 03 20 */ addi r0, r3, 0x0320 /* 0x00070320@l */
/* 806BEBD4 90 01 00 08 */ stw r0, 8(r1)
/* 806BEBD8 38 7F 05 C0 */ addi r3, r31, 0x5c0
/* 806BEBDC 38 81 00 08 */ addi r4, r1, 8
/* 806BEBE0 38 C0 FF FF */ li r6, -1
/* 806BEBE4 81 9F 05 C0 */ lwz r12, 0x5c0(r31)
/* 806BEBE8 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 806BEBEC 7D 89 03 A6 */ mtctr r12
/* 806BEBF0 4E 80 04 21 */ bctrl
/* 806BEBF4 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 806BEBF8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 806BEBFC 7C 08 03 A6 */ mtlr r0
/* 806BEC00 38 21 00 20 */ addi r1, r1, 0x20
/* 806BEC04 4E 80 00 20 */ blr

View File

@ -1,34 +0,0 @@
lbl_806C06DC:
/* 806C06DC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806C06E0 7C 08 02 A6 */ mflr r0
/* 806C06E4 90 01 00 14 */ stw r0, 0x14(r1)
/* 806C06E8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 806C06EC 7C 7F 1B 78 */ mr r31, r3
/* 806C06F0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
/* 806C06F4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
/* 806C06F8 C0 3F 04 D0 */ lfs f1, 0x4d0(r31)
/* 806C06FC C0 5F 04 D4 */ lfs f2, 0x4d4(r31)
/* 806C0700 C0 7F 04 D8 */ lfs f3, 0x4d8(r31)
/* 806C0704 4B C8 61 E5 */ bl PSMTXTrans
/* 806C0708 38 7F 04 E4 */ addi r3, r31, 0x4e4
/* 806C070C 4B 94 C8 39 */ bl ZXYrotM__14mDoMtx_stack_cFRC5csXyz
/* 806C0710 3C 60 80 6C */ lis r3, l_HIO@ha /* 0x806C1BB0@ha */
/* 806C0714 38 63 1B B0 */ addi r3, r3, l_HIO@l /* 0x806C1BB0@l */
/* 806C0718 C0 23 00 0C */ lfs f1, 0xc(r3)
/* 806C071C FC 40 08 90 */ fmr f2, f1
/* 806C0720 FC 60 08 90 */ fmr f3, f1
/* 806C0724 4B 94 C7 15 */ bl scaleM__14mDoMtx_stack_cFfff
/* 806C0728 C0 3F 07 00 */ lfs f1, 0x700(r31)
/* 806C072C FC 40 08 90 */ fmr f2, f1
/* 806C0730 FC 60 08 90 */ fmr f3, f1
/* 806C0734 4B 94 C7 05 */ bl scaleM__14mDoMtx_stack_cFfff
/* 806C0738 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
/* 806C073C 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
/* 806C0740 80 9F 05 B4 */ lwz r4, 0x5b4(r31)
/* 806C0744 38 84 00 24 */ addi r4, r4, 0x24
/* 806C0748 4B C8 5D 69 */ bl PSMTXCopy
/* 806C074C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 806C0750 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806C0754 7C 08 03 A6 */ mtlr r0
/* 806C0758 38 21 00 10 */ addi r1, r1, 0x10
/* 806C075C 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_806BEAF8:
/* 806BEAF8 90 83 06 F4 */ stw r4, 0x6f4(r3)
/* 806BEAFC 90 A3 06 F8 */ stw r5, 0x6f8(r3)
/* 806BEB00 4E 80 00 20 */ blr

View File

@ -1,43 +0,0 @@
lbl_806BEB04:
/* 806BEB04 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806BEB08 7C 08 02 A6 */ mflr r0
/* 806BEB0C 90 01 00 14 */ stw r0, 0x14(r1)
/* 806BEB10 93 E1 00 0C */ stw r31, 0xc(r1)
/* 806BEB14 93 C1 00 08 */ stw r30, 8(r1)
/* 806BEB18 7C 7E 1B 78 */ mr r30, r3
/* 806BEB1C A8 63 07 08 */ lha r3, 0x708(r3)
/* 806BEB20 A8 1E 04 DE */ lha r0, 0x4de(r30)
/* 806BEB24 7C 03 00 50 */ subf r0, r3, r0
/* 806BEB28 7C 1F 07 34 */ extsh r31, r0
/* 806BEB2C 7F E3 FB 78 */ mr r3, r31
/* 806BEB30 4B CA 65 A1 */ bl abs
/* 806BEB34 2C 03 48 00 */ cmpwi r3, 0x4800
/* 806BEB38 40 81 00 24 */ ble lbl_806BEB5C
/* 806BEB3C A8 7E 04 DE */ lha r3, 0x4de(r30)
/* 806BEB40 3C 63 00 01 */ addis r3, r3, 1
/* 806BEB44 38 63 80 00 */ addi r3, r3, -32768
/* 806BEB48 A8 1E 07 08 */ lha r0, 0x708(r30)
/* 806BEB4C 54 00 08 3C */ slwi r0, r0, 1
/* 806BEB50 7C 03 00 50 */ subf r0, r3, r0
/* 806BEB54 B0 1E 04 DE */ sth r0, 0x4de(r30)
/* 806BEB58 48 00 00 30 */ b lbl_806BEB88
lbl_806BEB5C:
/* 806BEB5C 2C 1F 38 00 */ cmpwi r31, 0x3800
/* 806BEB60 40 81 00 14 */ ble lbl_806BEB74
/* 806BEB64 A8 7E 07 08 */ lha r3, 0x708(r30)
/* 806BEB68 38 03 38 00 */ addi r0, r3, 0x3800
/* 806BEB6C B0 1E 04 DE */ sth r0, 0x4de(r30)
/* 806BEB70 48 00 00 18 */ b lbl_806BEB88
lbl_806BEB74:
/* 806BEB74 2C 1F C8 00 */ cmpwi r31, -14336
/* 806BEB78 40 80 00 10 */ bge lbl_806BEB88
/* 806BEB7C A8 7E 07 08 */ lha r3, 0x708(r30)
/* 806BEB80 38 03 C8 00 */ addi r0, r3, -14336
/* 806BEB84 B0 1E 04 DE */ sth r0, 0x4de(r30)
lbl_806BEB88:
/* 806BEB88 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 806BEB8C 83 C1 00 08 */ lwz r30, 8(r1)
/* 806BEB90 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806BEB94 7C 08 03 A6 */ mtlr r0
/* 806BEB98 38 21 00 10 */ addi r1, r1, 0x10
/* 806BEB9C 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_806C0CB0:
/* 806C0CB0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 806C0CB4 7C 08 02 A6 */ mflr r0
/* 806C0CB8 90 01 00 14 */ stw r0, 0x14(r1)
/* 806C0CBC 4B FF FF 6D */ bl CreateHeap__8daE_FZ_cFv
/* 806C0CC0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 806C0CC4 7C 08 03 A6 */ mtlr r0
/* 806C0CC8 38 21 00 10 */ addi r1, r1, 0x10
/* 806C0CCC 4E 80 00 20 */ blr

View File

@ -0,0 +1,157 @@
/**
Doxygen Awesome
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2023 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
class DoxygenAwesomeDarkModeToggle extends HTMLElement {
// SVG icons from https://fonts.google.com/icons
// Licensed under the Apache 2.0 license:
// https://www.apache.org/licenses/LICENSE-2.0.html
static lightModeIcon = `<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#FCBF00"><rect fill="none" height="24" width="24"/><circle cx="12" cy="12" opacity=".3" r="3"/><path d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg>`
static darkModeIcon = `<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#FE9700"><rect fill="none" height="24" width="24"/><path d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27 C17.45,17.19,14.93,19,12,19c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z" opacity=".3"/><path d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg>`
static title = "Toggle Light/Dark Mode"
static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode"
static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode"
static _staticConstructor = function() {
DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference)
// Update the color scheme when the browsers preference changes
// without user interaction on the website.
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
})
// Update the color scheme when the tab is made visible again.
// It is possible that the appearance was changed in another tab
// while this tab was in the background.
document.addEventListener("visibilitychange", visibilityState => {
if (document.visibilityState === 'visible') {
DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
}
});
}()
static init() {
$(function() {
$(document).ready(function() {
const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
toggleButton.title = DoxygenAwesomeDarkModeToggle.title
toggleButton.updateIcon()
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
toggleButton.updateIcon()
})
document.addEventListener("visibilitychange", visibilityState => {
if (document.visibilityState === 'visible') {
toggleButton.updateIcon()
}
});
$(document).ready(function(){
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
})
$(window).resize(function(){
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
})
})
})
}
constructor() {
super();
this.onclick=this.toggleDarkMode
}
/**
* @returns `true` for dark-mode, `false` for light-mode system preference
*/
static get systemPreference() {
return window.matchMedia('(prefers-color-scheme: dark)').matches
}
/**
* @returns `true` for dark-mode, `false` for light-mode user preference
*/
static get userPreference() {
return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) ||
(DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey))
}
static set userPreference(userPreference) {
DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference
if(!userPreference) {
if(DoxygenAwesomeDarkModeToggle.systemPreference) {
localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true)
} else {
localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)
}
} else {
if(!DoxygenAwesomeDarkModeToggle.systemPreference) {
localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true)
} else {
localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)
}
}
DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged()
}
static enableDarkMode(enable) {
if(enable) {
DoxygenAwesomeDarkModeToggle.darkModeEnabled = true
document.documentElement.classList.add("dark-mode")
document.documentElement.classList.remove("light-mode")
} else {
DoxygenAwesomeDarkModeToggle.darkModeEnabled = false
document.documentElement.classList.remove("dark-mode")
document.documentElement.classList.add("light-mode")
}
}
static onSystemPreferenceChanged() {
DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference
DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)
}
static onUserPreferenceChanged() {
DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)
}
toggleDarkMode() {
DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference
this.updateIcon()
}
updateIcon() {
if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) {
this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon
} else {
this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon
}
}
}
customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle);

View File

@ -0,0 +1,85 @@
/**
Doxygen Awesome
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2022 - 2023 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
class DoxygenAwesomeFragmentCopyButton extends HTMLElement {
constructor() {
super();
this.onclick=this.copyContent
}
static title = "Copy to clipboard"
static copyIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
static successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
static successDuration = 980
static init() {
$(function() {
$(document).ready(function() {
if(navigator.clipboard) {
const fragments = document.getElementsByClassName("fragment")
for(const fragment of fragments) {
const fragmentWrapper = document.createElement("div")
fragmentWrapper.className = "doxygen-awesome-fragment-wrapper"
const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button")
fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon
fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title
fragment.parentNode.replaceChild(fragmentWrapper, fragment)
fragmentWrapper.appendChild(fragment)
fragmentWrapper.appendChild(fragmentCopyButton)
}
}
})
})
}
copyContent() {
const content = this.previousSibling.cloneNode(true)
// filter out line number from file listings
content.querySelectorAll(".lineno, .ttc").forEach((node) => {
node.remove()
})
let textContent = content.textContent
// remove trailing newlines that appear in file listings
let numberOfTrailingNewlines = 0
while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') {
numberOfTrailingNewlines++;
}
textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines)
navigator.clipboard.writeText(textContent);
this.classList.add("success")
this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon
window.setTimeout(() => {
this.classList.remove("success")
this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon
}, DoxygenAwesomeFragmentCopyButton.successDuration);
}
}
customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton)

View File

@ -0,0 +1,81 @@
/**
Doxygen Awesome
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2022 - 2023 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
class DoxygenAwesomeInteractiveToc {
static topOffset = 38
static hideMobileMenu = true
static headers = []
static init() {
window.addEventListener("load", () => {
let toc = document.querySelector(".contents > .toc")
if(toc) {
toc.classList.add("interactive")
if(!DoxygenAwesomeInteractiveToc.hideMobileMenu) {
toc.classList.add("open")
}
document.querySelector(".contents > .toc > h3")?.addEventListener("click", () => {
if(toc.classList.contains("open")) {
toc.classList.remove("open")
} else {
toc.classList.add("open")
}
})
document.querySelectorAll(".contents > .toc > ul a").forEach((node) => {
let id = node.getAttribute("href").substring(1)
DoxygenAwesomeInteractiveToc.headers.push({
node: node,
headerNode: document.getElementById(id)
})
document.getElementById("doc-content")?.addEventListener("scroll", () => {
DoxygenAwesomeInteractiveToc.update()
})
})
DoxygenAwesomeInteractiveToc.update()
}
})
}
static update() {
let active = DoxygenAwesomeInteractiveToc.headers[0]?.node
DoxygenAwesomeInteractiveToc.headers.forEach((header) => {
let position = header.headerNode.getBoundingClientRect().top
header.node.classList.remove("active")
header.node.classList.remove("aboveActive")
if(position < DoxygenAwesomeInteractiveToc.topOffset) {
active = header.node
active?.classList.add("aboveActive")
}
})
active?.classList.add("active")
active?.classList.remove("aboveActive")
}
}

View File

@ -0,0 +1,51 @@
/**
Doxygen Awesome
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2022 - 2023 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
class DoxygenAwesomeParagraphLink {
// Icon from https://fonts.google.com/icons
// Licensed under the Apache 2.0 license:
// https://www.apache.org/licenses/LICENSE-2.0.html
static icon = `<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8z"/></svg>`
static title = "Permanent Link"
static init() {
$(function() {
$(document).ready(function() {
document.querySelectorAll(".contents a.anchor[id], .contents .groupheader > a[id]").forEach((node) => {
let anchorlink = document.createElement("a")
anchorlink.setAttribute("href", `#${node.getAttribute("id")}`)
anchorlink.setAttribute("title", DoxygenAwesomeParagraphLink.title)
anchorlink.classList.add("anchorlink")
node.classList.add("anchor")
anchorlink.innerHTML = DoxygenAwesomeParagraphLink.icon
node.parentElement.appendChild(anchorlink)
})
})
})
}
}

View File

@ -0,0 +1,40 @@
/**
Doxygen Awesome
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2023 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
@media screen and (min-width: 768px) {
#MSearchBox {
width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px);
}
#MSearchField {
width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height));
}
}

View File

@ -0,0 +1,116 @@
/**
Doxygen Awesome
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2023 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
html {
/* side nav width. MUST be = `TREEVIEW_WIDTH`.
* Make sure it is wide enough to contain the page title (logo + title + version)
*/
--side-nav-fixed-width: 335px;
--menu-display: none;
--top-height: 120px;
--toc-sticky-top: -25px;
--toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px);
}
#projectname {
white-space: nowrap;
}
@media screen and (min-width: 768px) {
html {
--searchbar-background: var(--page-background-color);
}
#side-nav {
min-width: var(--side-nav-fixed-width);
max-width: var(--side-nav-fixed-width);
top: var(--top-height);
overflow: visible;
}
#nav-tree, #side-nav {
height: calc(100vh - var(--top-height)) !important;
}
#nav-tree {
padding: 0;
}
#top {
display: block;
border-bottom: none;
height: var(--top-height);
margin-bottom: calc(0px - var(--top-height));
max-width: var(--side-nav-fixed-width);
overflow: hidden;
background: var(--side-nav-background);
}
#main-nav {
float: left;
padding-right: 0;
}
.ui-resizable-handle {
cursor: default;
width: 1px !important;
background: var(--separator-color);
box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color);
}
#nav-path {
position: fixed;
right: 0;
left: var(--side-nav-fixed-width);
bottom: 0;
width: auto;
}
#doc-content {
height: calc(100vh - 31px) !important;
padding-bottom: calc(3 * var(--spacing-large));
padding-top: calc(var(--top-height) - 80px);
box-sizing: border-box;
margin-left: var(--side-nav-fixed-width) !important;
}
#MSearchBox {
width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)));
}
#MSearchField {
width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px);
}
#MSearchResultsWindow {
left: var(--spacing-medium) !important;
right: auto;
}
}

View File

@ -0,0 +1,90 @@
/**
Doxygen Awesome
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2023 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
class DoxygenAwesomeTabs {
static init() {
window.addEventListener("load", () => {
document.querySelectorAll(".tabbed:not(:empty)").forEach((tabbed, tabbedIndex) => {
let tabLinkList = []
tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => {
tab.id = "tab_" + tabbedIndex + "_" + tabIndex
let header = tab.querySelector(".tab-title")
let tabLink = document.createElement("button")
tabLink.classList.add("tab-button")
tabLink.appendChild(header)
header.title = header.textContent
tabLink.addEventListener("click", () => {
tabbed.querySelectorAll(":scope > ul > li").forEach((tab) => {
tab.classList.remove("selected")
})
tabLinkList.forEach((tabLink) => {
tabLink.classList.remove("active")
})
tab.classList.add("selected")
tabLink.classList.add("active")
})
tabLinkList.push(tabLink)
if(tabIndex == 0) {
tab.classList.add("selected")
tabLink.classList.add("active")
}
})
let tabsOverview = document.createElement("div")
tabsOverview.classList.add("tabs-overview")
let tabsOverviewContainer = document.createElement("div")
tabsOverviewContainer.classList.add("tabs-overview-container")
tabLinkList.forEach((tabLink) => {
tabsOverview.appendChild(tabLink)
})
tabsOverviewContainer.appendChild(tabsOverview)
tabbed.before(tabsOverviewContainer)
function resize() {
let maxTabHeight = 0
tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => {
let visibility = tab.style.display
tab.style.display = "block"
maxTabHeight = Math.max(tab.offsetHeight, maxTabHeight)
tab.style.display = visibility
})
tabbed.style.height = `${maxTabHeight + 10}px`
}
resize()
new ResizeObserver(resize).observe(tabbed)
})
})
}
static resize(tabbed) {
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,54 @@
html.alternative {
/* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */
--primary-color: #AF7FE4;
--primary-dark-color: #9270E4;
--primary-light-color: #7aabd6;
--primary-lighter-color: #cae1f1;
--primary-lightest-color: #e9f1f8;
/* page base colors */
--page-background-color: white;
--page-foreground-color: #2c3e50;
--page-secondary-foreground-color: #67727e;
--border-radius-large: 22px;
--border-radius-small: 9px;
--border-radius-medium: 14px;
--spacing-small: 8px;
--spacing-medium: 14px;
--spacing-large: 19px;
--top-height: 125px;
--side-nav-background: #324067;
--side-nav-foreground: #F1FDFF;
--header-foreground: var(--side-nav-foreground);
--searchbar-background: var(--side-nav-foreground);
--searchbar-border-radius: var(--border-radius-medium);
--header-background: var(--side-nav-background);
--header-foreground: var(--side-nav-foreground);
--toc-background: rgb(243, 240, 252);
--toc-foreground: var(--page-foreground-color);
}
html.alternative.dark-mode {
color-scheme: dark;
--primary-color: #AF7FE4;
--primary-dark-color: #9270E4;
--primary-light-color: #4779ac;
--primary-lighter-color: #191e21;
--primary-lightest-color: #191a1c;
--page-background-color: #1C1D1F;
--page-foreground-color: #d2dbde;
--page-secondary-foreground-color: #859399;
--separator-color: #3a3246;
--side-nav-background: #171D32;
--side-nav-foreground: #F1FDFF;
--toc-background: #20142C;
--searchbar-background: var(--page-background-color);
}

View File

@ -0,0 +1,57 @@
.github-corner svg {
fill: var(--primary-light-color);
color: var(--page-background-color);
width: 72px;
height: 72px;
}
@media screen and (max-width: 767px) {
.github-corner svg {
width: 50px;
height: 50px;
}
#projectnumber {
margin-right: 22px;
}
}
.alter-theme-button {
display: inline-block;
cursor: pointer;
background: var(--primary-color);
color: var(--page-background-color) !important;
border-radius: var(--border-radius-medium);
padding: var(--spacing-small) var(--spacing-medium);
text-decoration: none;
}
.alter-theme-button:hover {
background: var(--primary-dark-color);
}
html.dark-mode .darkmode_inverted_image img, /* < doxygen 1.9.3 */
html.dark-mode .darkmode_inverted_image object[type="image/svg+xml"] /* doxygen 1.9.3 */ {
filter: brightness(89%) hue-rotate(180deg) invert();
}
.bordered_image {
border-radius: var(--border-radius-small);
border: 1px solid var(--separator-color);
display: inline-block;
overflow: hidden;
}
html.dark-mode .bordered_image img, /* < doxygen 1.9.3 */
html.dark-mode .bordered_image object[type="image/svg+xml"] /* doxygen 1.9.3 */ {
border-radius: var(--border-radius-small);
}
.title_screenshot {
filter: drop-shadow(0px 3px 10px rgba(0,0,0,0.22));
max-width: 500px;
margin: var(--spacing-large) 0;
}
.title_screenshot .caption {
display: none;
}

View File

@ -0,0 +1,99 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen $doxygenversion"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!-- BEGIN opengraph metadata -->
<meta property="og:title" content="Doxygen Awesome" />
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
<meta property="og:description" content="Custom CSS theme for doxygen html-documentation with lots of customization parameters." />
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
<!-- END opengraph metadata -->
<!-- BEGIN twitter metadata -->
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
<meta name="twitter:title" content="Doxygen Awesome" />
<meta name="twitter:description" content="Custom CSS theme for doxygen html-documentation with lots of customization parameters." />
<!-- END twitter metadata -->
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
<script type="text/javascript" src="$relpath^jquery.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-paragraph-link.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-interactive-toc.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-tabs.js"></script>
<script type="text/javascript" src="$relpath^toggle-alternative-theme.js"></script>
<script type="text/javascript">
DoxygenAwesomeFragmentCopyButton.init()
DoxygenAwesomeDarkModeToggle.init()
DoxygenAwesomeParagraphLink.init()
DoxygenAwesomeInteractiveToc.init()
DoxygenAwesomeTabs.init()
</script>
$treeview
$search
$mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
$extrastylesheet
<!-- ... other metadata & script includes ... -->
<script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="$relpath^doxygen-awesome-interactive-toc.js"></script>
<script type="text/javascript">
DoxygenAwesomeInteractiveToc.init()
</script>
</head>
<body>
<!-- https://tholman.com/github-corners/ -->
<a href="https://github.com/jothepro/doxygen-awesome-css" class="github-corner" title="View source on GitHub" target="_blank" rel="noopener noreferrer">
<svg viewBox="0 0 250 250" width="40" height="40" style="position: absolute; top: 0; border: 0; right: 0; z-index: 99;" aria-hidden="true">
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!--BEGIN TITLEAREA-->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<!--BEGIN PROJECT_LOGO-->
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
<!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME-->
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">$projectname
<!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
</div>
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
</td>
<!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME-->
<!--BEGIN PROJECT_BRIEF-->
<td style="padding-left: 0.5em;">
<div id="projectbrief">$projectbrief</div>
</td>
<!--END PROJECT_BRIEF-->
<!--END !PROJECT_NAME-->
<!--BEGIN DISABLE_INDEX-->
<!--BEGIN SEARCHENGINE-->
<td>$searchbox</td>
<!--END SEARCHENGINE-->
<!--END DISABLE_INDEX-->
</tr>
</tbody>
</table>
</div>
<!--END TITLEAREA-->
<!-- end header part -->

View File

@ -0,0 +1,12 @@
let original_theme_active = true;
function toggle_alternative_theme() {
if(original_theme_active) {
document.documentElement.classList.add("alternative")
original_theme_active = false;
} else {
document.documentElement.classList.remove("alternative")
original_theme_active = true;
}
}

View File

@ -0,0 +1,117 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="491px" height="261px" viewBox="-0.5 -0.5 491 261" content="&lt;mxfile&gt;&lt;diagram id=&quot;6E4AiNPWWr3a8GvC3Ypl&quot; name=&quot;Page-1&quot;&gt;xZfLrpswEIafBqndIIzBwLK5tZt2k0pd+wQHrBqcOs6tT98xmABxmrYiUUEK+Pd1vhkPjofn1fmjorvys8yZ8MIgP3t44YVhihL4NcKlFZIkbYVC8byVUC+s+U9mxcCqB56z/aihllJovhuLG1nXbKNHGlVKnsbNtlKMZ93RgjnCekOFq37juS6tWXHQ658YL8puZhTYmop2ja2wL2kuTwMJLz08V1Lq9q06z5kw7Doubb/Vb2qvC1Os1n/ToVvHkYqDNc4uTF86awslDzsPz+BR58x0DKBE1cY6JoWSO69dypEpzc73vELfugl6wyFgmKyYVhdod+rRRpldZznAGhIrUuvO4tq3txherNH3AZA/2z+2+1RyzdY7ujG1Jwhv0EpdwfgLBK97reR3NpdCqqY3JktzQ00h6H5vBwEEmvKaKVt28V0dc8vvP3GKHE5zsMEs97m4ls09FUlXm6V+jNteNtVEkZ/a7DPgBi19Qlx0KI19hKfTCx16X7kW7I0qUN99oUdeUM1l7RkbwfRgzWB/le+nwd1yIQZoF8vlYrV6GKMvjcMGPUqyqPudzhU7XNfwZXCwPpfjKjH36zg+jFQUEj/Br4vU2CG6go8Ra4DOFKP5Rh2q3X4i0deSg4wHu3lwZQ7GuwGKsY9HF5nOM3EjtNnaD/ihKfy2kJUHekjM/aR0ihPkJ2GEcJJhFOAoHmVWdLu9Qzd4A+R3naM0TOLsTiDf+I6k052Q3vnIE6EtruZI0hEjPw7m7DXr2Q0kUphnk7q7AWDqdoy2znEroNWPfFfLmt2kGCtRwYsaioJtzQjGTRyOoB+sXPE8N5PcDZXxZjQLtGe1cPJp43x1U5qROEZdQIT/Ggyw24ahkJL4JcEAxf443dQN/pPg5S8=&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<rect x="0" y="0" width="490" height="260" fill="rgb(255, 255, 255)" stroke="#6e6e6e" pointer-events="none"/>
<rect x="198.53" y="44.87" width="219.66" height="185.13" fill="rgb(255, 255, 255)" stroke="#e3e3e3" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 137px; margin-left: 200px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Content
</div>
</div>
</div>
</foreignObject>
<text x="308" y="141" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
Content
</text>
</switch>
</g>
<rect x="0" y="0" width="490" height="44.87" fill="#deedff" stroke="#6e6e6e" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 488px; height: 1px; padding-top: 22px; margin-left: 1px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Titlebar (Navigation + Search)
</div>
</div>
</div>
</foreignObject>
<text x="245" y="26" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
Titlebar (Navigation + Search)
</text>
</switch>
</g>
<rect x="0" y="44.87" width="126.73" height="185.13" fill="#f7f7f7" stroke="#6e6e6e" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 125px; height: 1px; padding-top: 137px; margin-left: 1px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Sidebar (Navigation)
</div>
</div>
</div>
</foreignObject>
<text x="63" y="141" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
Sidebar (Navigation)
</text>
</switch>
</g>
<rect x="0" y="226.67" width="490" height="33.33" fill="rgb(255, 255, 255)" stroke="#6e6e6e" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 488px; height: 1px; padding-top: 243px; margin-left: 1px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Footer (Breadcrumps)
</div>
</div>
</div>
</foreignObject>
<text x="245" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
Footer (Breadcrumps)
</text>
</switch>
</g>
<rect x="371.72" y="14.87" width="101.38" height="16.67" rx="2.5" ry="2.5" fill="rgb(255, 255, 255)" stroke="#6e6e6e" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 99px; height: 1px; padding-top: 23px; margin-left: 373px;">
<div data-drawio-colors="color: #262626; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(38, 38, 38); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Search
</div>
</div>
</div>
</foreignObject>
<text x="422" y="27" fill="#262626" font-family="Helvetica" font-size="12px" text-anchor="middle">
Search
</text>
</switch>
</g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 32px; height: 1px; padding-top: 23px; margin-left: 19px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
<font color="#262626">
Title
</font>
</div>
</div>
</div>
</foreignObject>
<text x="19" y="29" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px">
Tit...
</text>
</switch>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -0,0 +1,102 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="491px" height="261px" viewBox="-0.5 -0.5 491 261" content="&lt;mxfile&gt;&lt;diagram id=&quot;6E4AiNPWWr3a8GvC3Ypl&quot; name=&quot;Page-1&quot;&gt;xZZNj5swEIZ/DdL2gjAGA8cmm7SX9pJKPTvBAasGU8f56q/vOJjFLOxqpbC7WIrMO/5gnhlP7OFldfmmaFP+kDkTXhjkFw8/emGYogR+jXBthSRJW6FQPG8l1Asb/o9ZMbDqkefsMBiopRSaN0NxJ+ua7fRAo0rJ83DYXorhrg0t2EjY7KgYq795rkvrVhz0+nfGi7LbGQXWUtFusBUOJc3l2ZHwysNLJaVue9VlyYRh13Fp561fsD59mGK1ftOErJ1xouJonbMfpq+dt4WSx2a8sN3rxJRmlynsdNut0HsGGcFkxbS6wrhzzy7KLJDS4RYSK1Ibr+Jpbu8SdKxX0x6+wUHwr86ZGR94eHEuuWabhu6M9Qz5C1qpK1j/EUH3oJX8w5ZSSHWbjcnKNLBMIMpeYPRJLLrz48BYylqb752XyerW7mXSWbPUj8Osf2z1sMUDEZ9YxYEIs3xCJjhi7GM8A0o0QrmBorSlyjPpTgTst9jCCylM7+EX14DWmIBJ8JOeeEE1l/WX+8jvuRAO93Vi2odkKQqJn4TvlajhiO4aaiIzcB8WitF8p45Vc7iT3jtRuriEIoSTDKMARzEe5C2Qggx1n1ESY4L9MIlTEgYkzUgcj3Hf0tl9yAz08Ti3GVW78hXa6B7aeyhCjh4S02aLApQHJwrpsHpEaBiEcSVBAfK7yVEK4cjGUUDPQ5nOEIVo4p+rrSuG1+1/tkNG/h7NjWHRw3OktgLZAtQuAHu3a7S2UVyBrX4teLWs2bPqYyUqeFHDq2B7s4KJE4eL01crVzzPzSaTuTI8u+YD7dUvDD4mGRCaDqN7JLHv5kJKJs7kDNkAr/0l8GZzbtJ49R8=&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<rect x="0" y="0" width="490" height="260" fill="rgb(255, 255, 255)" stroke="#6e6e6e" pointer-events="none"/>
<rect x="198.53" y="16.67" width="219.66" height="233.33" fill="rgb(255, 255, 255)" stroke="#e3e3e3" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 133px; margin-left: 200px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Content
</div>
</div>
</div>
</foreignObject>
<text x="308" y="137" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
Content
</text>
</switch>
</g>
<rect x="0" y="0" width="126.72" height="260" fill="#f7f7f7" stroke="#6e6e6e" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 125px; height: 1px; padding-top: 130px; margin-left: 1px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Sidebar
<br/>
(Title + Navigation)
</div>
</div>
</div>
</foreignObject>
<text x="63" y="134" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
Sidebar...
</text>
</switch>
</g>
<rect x="126.72" y="226.67" width="363.28" height="33.33" fill="rgb(255, 255, 255)" stroke="#6e6e6e" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 361px; height: 1px; padding-top: 243px; margin-left: 128px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Footer (Breadcrumps)
</div>
</div>
</div>
</foreignObject>
<text x="308" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">
Footer (Breadcrumps)
</text>
</switch>
</g>
<rect x="12.67" y="41.67" width="101.38" height="16.67" rx="2.5" ry="2.5" fill="rgb(255, 255, 255)" stroke="#6e6e6e" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 99px; height: 1px; padding-top: 50px; margin-left: 14px;">
<div data-drawio-colors="color: #262626; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(38, 38, 38); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
Search
</div>
</div>
</div>
</foreignObject>
<text x="63" y="54" fill="#262626" font-family="Helvetica" font-size="12px" text-anchor="middle">
Search
</text>
</switch>
</g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 32px; height: 1px; padding-top: 20px; margin-left: 15px;">
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">
<font color="#262626">
Title
</font>
</div>
</div>
</div>
</foreignObject>
<text x="15" y="26" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="20px">
Tit...
</text>
</switch>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -0,0 +1,17 @@
html {
--top-nav-height: 140px
}
@media screen and (min-width: 768px) {
#top {
height: var(--top-nav-height);
}
#nav-tree, #side-nav {
height: calc(100vh - var(--top-nav-height)) !important;
}
#side-nav {
top: var(--top-nav-height);
}
}

193
docs/mainpage.h Normal file
View File

@ -0,0 +1,193 @@
/*!
@mainpage About
@tableofcontents
@section intro Introduction
This site contains documentation for the Twilight Princess code base. It is a work in progress and will be updated as more code is decompiled and documented.
@section code Code
@subsection actors Actors
- @ref actors-doors "Doors"
- @ref actors-enemies "Enemies"
- @ref actors-items "Items"
- @ref actors-objects "Objects"
- @ref actors-npcs "NPCs"
- @ref actors-tags "Tags"
@subsection dolphin Dolphin
@subsection dolzel Dolzel
@subsection framework Framework
@subsection jsystem JSystem
- @ref jsystem-j2d "J2D"
- @ref jsystem-j3d "J3D"
- @ref jsystem-jaudio "JAudio"
- @ref jsystem-jframework "JFramework"
- @ref jsystem-jgadget "JGadget"
- @ref jsystem-jkernel "JKernel"
- @ref jsystem-jmath "JMath"
- @ref jsystem-jmessage "JMessage"
- @ref jsystem-jparticle "JParticle"
- @ref jsystem-jstage "JStage"
- @ref jsystem-jstudio "JStudio"
- @ref jsystem-jsupport "JSupport"
- @ref jsystem-jutility "JUtility"
@subsection m_do m_Do
@subsection misc Misc
@subsection msl_c MSL_C
@subsection runtime Runtime.PPCEABI.H
@subsection ssystem SSystem
@subsection trk TRK_MINNOW_DOLPHIN
@subsection z2audiolib Z2AudioLib
@section more-info More Information
For more information, visit [the decomp website](https://zsrtp.link).
*/
////////////////////////////////////////////////////////////////////////////////
// Group Definitions - Add new groups here for now
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Actors
////////////////////////////////////////////////////////////////////////////////
/**
* @defgroup actors Actors
* @brief All actor classes.
*/
/**
* @ingroup actors
* @defgroup actors-doors Doors
* @brief Doors are entities that block the player's path until certain conditions are met.
*/
/**
* @ingroup actors
* @defgroup actors-enemies Enemies
* @brief Enemies are hostile entities that attack the player.
*/
/**
* @ingroup actors
* @defgroup actors-items Items
* @brief Items are collectable objects that appear in the item wheel or pause menu.
*/
/**
* @ingroup actors
* @defgroup actors-objects Objects
* @brief Objects are interactable entities the player can interact with.
*/
/**
* @ingroup actors
* @defgroup actors-npcs NPCs
* @brief NPCs are non-playable characters that interact with the player.
*/
/**
* @ingroup actors
* @defgroup actors-tags Tags
* @brief Tags are various different types of triggers (NPC prompts, loading zones, Midna pop ups, environment changes, etc.).
*/
////////////////////////////////////////////////////////////////////////////////
// JSystem
////////////////////////////////////////////////////////////////////////////////
/**
* @defgroup jsystem JSystem
* @brief All JSystem classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-j2d J2D
* @brief All J2D classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-j3d J3D
* @brief All J3D classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jaudio JAudio
* @brief All JAudio classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jframework JFramework
* @brief All JFramework classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jgadget JGadget
* @brief All JGadget classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jkernel JKernel
* @brief All JKernel classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jmath JMath
* @brief All JMath classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jmessage JMessage
* @brief All JMessage classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jparticle JParticle
* @brief All JParticle classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jstage JStage
* @brief All JStage classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jstudio JStudio
* @brief All JStudio classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jsupport JSupport
* @brief All JSupport classes.
*/
/**
* @ingroup jsystem
* @defgroup jsystem-jutility JUtility
* @brief All JUtility classes.
*/

BIN
docs/midna.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

View File

@ -2,7 +2,6 @@
#define J2DANIMATION_H #define J2DANIMATION_H
#include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "global.h"
typedef struct _GXColor GXColor; typedef struct _GXColor GXColor;
typedef struct _GXColorS10 GXColorS10; typedef struct _GXColorS10 GXColorS10;
@ -20,6 +19,10 @@ enum J2DAnmKind {
KIND_VTX_COLOR = 7 KIND_VTX_COLOR = 7
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmBase { class J2DAnmBase {
public: public:
J2DAnmBase() { J2DAnmBase() {
@ -42,6 +45,10 @@ public:
/* 0xC */ J2DAnmKind mKind; /* 0xC */ J2DAnmKind mKind;
}; // Size: 0x10 }; // Size: 0x10
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVtxColor : public J2DAnmBase { class J2DAnmVtxColor : public J2DAnmBase {
public: public:
J2DAnmVtxColor() { J2DAnmVtxColor() {
@ -67,6 +74,10 @@ public:
struct J3DTransformInfo; struct J3DTransformInfo;
struct J3DTextureSRTInfo; struct J3DTextureSRTInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVtxColorKey : public J2DAnmVtxColor { class J2DAnmVtxColorKey : public J2DAnmVtxColor {
public: public:
J2DAnmVtxColorKey() { J2DAnmVtxColorKey() {
@ -84,6 +95,10 @@ public:
/* 0x38 */ s16* mAValues; /* 0x38 */ s16* mAValues;
}; // Size: 0x3C }; // Size: 0x3C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVtxColorFull : public J2DAnmVtxColor { class J2DAnmVtxColorFull : public J2DAnmVtxColor {
public: public:
J2DAnmVtxColorFull() { J2DAnmVtxColorFull() {
@ -101,6 +116,10 @@ public:
/* 0x38 */ u8* mAValues; /* 0x38 */ u8* mAValues;
}; // Size: 0x3C }; // Size: 0x3C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVisibilityFull : public J2DAnmBase { class J2DAnmVisibilityFull : public J2DAnmBase {
public: public:
J2DAnmVisibilityFull() { J2DAnmVisibilityFull() {
@ -119,6 +138,10 @@ public:
/* 0x18 */ u8* mValues; /* 0x18 */ u8* mValues;
}; // Size: 0x1C }; // Size: 0x1C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTransform : public J2DAnmBase { class J2DAnmTransform : public J2DAnmBase {
public: public:
J2DAnmTransform(f32* pScaleValues, s16* pRotationValues, f32* pTranslateValues) { J2DAnmTransform(f32* pScaleValues, s16* pRotationValues, f32* pTranslateValues) {
@ -139,6 +162,10 @@ public:
/* 0x18 */ f32* mTranslateValues; /* 0x18 */ f32* mTranslateValues;
}; // Size: 0x1C }; // Size: 0x1C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTransformKey : public J2DAnmTransform { class J2DAnmTransformKey : public J2DAnmTransform {
public: public:
J2DAnmTransformKey() : J2DAnmTransform(NULL, NULL, NULL) { J2DAnmTransformKey() : J2DAnmTransform(NULL, NULL, NULL) {
@ -157,6 +184,10 @@ public:
/* 0x28 */ J3DAnmTransformKeyTable* mInfoTable; /* 0x28 */ J3DAnmTransformKeyTable* mInfoTable;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTransformFull : public J2DAnmTransform { class J2DAnmTransformFull : public J2DAnmTransform {
public: public:
J2DAnmTransformFull() : J2DAnmTransform(NULL, NULL, NULL) { mTableInfo = NULL; } J2DAnmTransformFull() : J2DAnmTransform(NULL, NULL, NULL) { mTableInfo = NULL; }
@ -168,6 +199,10 @@ public:
/* 0x24 */ J3DAnmTransformFullTable* mTableInfo; /* 0x24 */ J3DAnmTransformFullTable* mTableInfo;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTextureSRTKey : public J2DAnmBase { class J2DAnmTextureSRTKey : public J2DAnmBase {
public: public:
J2DAnmTextureSRTKey() { J2DAnmTextureSRTKey() {
@ -227,6 +262,10 @@ public:
/* 0x7C */ int field_0x7c; /* 0x7C */ int field_0x7c;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTexPattern : public J2DAnmBase { class J2DAnmTexPattern : public J2DAnmBase {
public: public:
struct J2DAnmTexPatternTIMGPointer { struct J2DAnmTexPatternTIMGPointer {
@ -265,6 +304,10 @@ public:
/* 0x30 */ J2DAnmTexPatternTIMGPointer* mTIMGPtrArray; /* 0x30 */ J2DAnmTexPatternTIMGPointer* mTIMGPtrArray;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTevRegKey : public J2DAnmBase { class J2DAnmTevRegKey : public J2DAnmBase {
public: public:
J2DAnmTevRegKey() { J2DAnmTevRegKey() {
@ -331,6 +374,10 @@ public:
/* 0x70 */ s16* mKAValues; /* 0x70 */ s16* mKAValues;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmColor : public J2DAnmBase { class J2DAnmColor : public J2DAnmBase {
public: public:
J2DAnmColor() { J2DAnmColor() {
@ -357,6 +404,10 @@ public:
/* 0x20 */ JUTNameTab field_0x20; /* 0x20 */ JUTNameTab field_0x20;
}; // Size: 0x30 }; // Size: 0x30
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmColorKey : public J2DAnmColor { class J2DAnmColorKey : public J2DAnmColor {
public: public:
J2DAnmColorKey() { J2DAnmColorKey() {
@ -376,6 +427,10 @@ public:
/* 0x40 */ J3DAnmColorKeyTable* mInfoTable; /* 0x40 */ J3DAnmColorKeyTable* mInfoTable;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DAnmColorFullInfo { struct J2DAnmColorFullInfo {
/* 0x00 */ u16 mRMaxFrame; /* 0x00 */ u16 mRMaxFrame;
/* 0x02 */ u16 mROffset; /* 0x02 */ u16 mROffset;
@ -387,6 +442,10 @@ struct J2DAnmColorFullInfo {
/* 0x0E */ u16 mAOffset; /* 0x0E */ u16 mAOffset;
}; // Size = 0x10 }; // Size = 0x10
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmColorFull : public J2DAnmColor { class J2DAnmColorFull : public J2DAnmColor {
public: public:
J2DAnmColorFull() { J2DAnmColorFull() {

View File

@ -3,10 +3,18 @@
#include "JSystem/J2DGraph/J2DAnimation.h" #include "JSystem/J2DGraph/J2DAnimation.h"
/**
* @ingroup jsystem-j2d
*
*/
struct J2DAnmLoaderDataBase { struct J2DAnmLoaderDataBase {
/* 80308A6C */ static J2DAnmBase* load(void const*); /* 80308A6C */ static J2DAnmBase* load(void const*);
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmLoader { class J2DAnmLoader {
public: public:
virtual void* load(void const*) = 0; virtual void* load(void const*) = 0;
@ -27,6 +35,10 @@ struct J3DAnmVisibilityFullData;
struct J3DAnmVtxColorFullData; struct J3DAnmVtxColorFullData;
struct J3DAnmTransformKeyData; struct J3DAnmTransformKeyData;
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmKeyLoader_v15 : public J2DAnmLoader { class J2DAnmKeyLoader_v15 : public J2DAnmLoader {
public: public:
/* 80309290 */ J2DAnmKeyLoader_v15(); /* 80309290 */ J2DAnmKeyLoader_v15();
@ -48,6 +60,10 @@ public:
// /* 0x04 */ void* _4; // /* 0x04 */ void* _4;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmFullLoader_v15 : public J2DAnmLoader { class J2DAnmFullLoader_v15 : public J2DAnmLoader {
public: public:
/* 80309CE8 */ J2DAnmFullLoader_v15(); /* 80309CE8 */ J2DAnmFullLoader_v15();

View File

@ -4,8 +4,11 @@
#include "JSystem/JGeometry.h" #include "JSystem/JGeometry.h"
#include "JSystem/JUtility/TColor.h" #include "JSystem/JUtility/TColor.h"
#include "dolphin/mtx.h" #include "dolphin/mtx.h"
#include "dolphin/types.h"
/**
* @ingroup jsystem-j2d
*
*/
class J2DGrafContext { class J2DGrafContext {
public: public:
struct Blend { struct Blend {

View File

@ -5,6 +5,10 @@
class JSUInputStream; class JSUInputStream;
/**
* @ingroup jsystem-j2d
*
*/
struct J2DResReference { struct J2DResReference {
/* 0x00 */ u16 mCount; /* 0x00 */ u16 mCount;
/* 0x02 */ u16 mOffsets[1]; /* 0x02 */ u16 mOffsets[1];
@ -13,12 +17,20 @@ struct J2DResReference {
/* 8030CF44 */ char* getName(u16) const; /* 8030CF44 */ char* getName(u16) const;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DataManageLink { struct J2DataManageLink {
/* 0x00 */ void* mData; /* 0x00 */ void* mData;
/* 0x04 */ char* mName; /* 0x04 */ char* mName;
/* 0x08 */ J2DataManageLink* mNext; /* 0x08 */ J2DataManageLink* mNext;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DDataManage { class J2DDataManage {
private: private:
/* 0x00 */ J2DataManageLink* mList; /* 0x00 */ J2DataManageLink* mList;

View File

@ -3,7 +3,6 @@
#include "JSystem/J2DGraph/J2DTevs.h" #include "JSystem/J2DGraph/J2DTevs.h"
#include "JSystem/JUtility/TColor.h" #include "JSystem/JUtility/TColor.h"
#include "dolphin/types.h"
class JUTFont; class JUTFont;
class JUTPalette; class JUTPalette;
@ -13,6 +12,10 @@ struct ResFONT;
struct ResTIMG; struct ResTIMG;
struct ResTLUT; struct ResTLUT;
/**
* @ingroup jsystem-j2d
*
*/
struct J2DGXColorS10 : public GXColorS10 { struct J2DGXColorS10 : public GXColorS10 {
/* 802F1B90 */ J2DGXColorS10() {} /* 802F1B90 */ J2DGXColorS10() {}
J2DGXColorS10(const J2DGXColorS10& other) { J2DGXColorS10(const J2DGXColorS10& other) {
@ -39,6 +42,10 @@ struct J2DGXColorS10 : public GXColorS10 {
struct J2DTevSwapModeInfo; struct J2DTevSwapModeInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevBlock { class J2DTevBlock {
public: public:
/* 802F2A40 */ virtual void initialize(); /* 802F2A40 */ virtual void initialize();
@ -88,6 +95,10 @@ public:
/* 802EB184 */ virtual ~J2DTevBlock() {} /* 802EB184 */ virtual ~J2DTevBlock() {}
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevBlock1 : public J2DTevBlock { class J2DTevBlock1 : public J2DTevBlock {
public: public:
/* 802EB88C */ J2DTevBlock1(); /* 802EB88C */ J2DTevBlock1();
@ -155,6 +166,10 @@ private:
/* 0x05C */ u8 mUndeleteFlag; /* 0x05C */ u8 mUndeleteFlag;
}; // Size: 0x60 }; // Size: 0x60
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevBlock2 : public J2DTevBlock { class J2DTevBlock2 : public J2DTevBlock {
public: public:
/* 802EC5B8 */ J2DTevBlock2(); /* 802EC5B8 */ J2DTevBlock2();
@ -224,6 +239,10 @@ private:
/* 0x078 */ u8 mUndeleteFlag; /* 0x078 */ u8 mUndeleteFlag;
}; // Size: 0x7C }; // Size: 0x7C
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevBlock4 : public J2DTevBlock { class J2DTevBlock4 : public J2DTevBlock {
public: public:
/* 802ED8BC */ J2DTevBlock4(); /* 802ED8BC */ J2DTevBlock4();
@ -293,6 +312,10 @@ private:
/* 0x0B0 */ u8 mUndeleteFlag; /* 0x0B0 */ u8 mUndeleteFlag;
}; // Size: 0xB4 }; // Size: 0xB4
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevBlock8 : public J2DTevBlock { class J2DTevBlock8 : public J2DTevBlock {
public: public:
/* 802EED64 */ J2DTevBlock8(); /* 802EED64 */ J2DTevBlock8();
@ -363,6 +386,10 @@ private:
/* 0x121 */ bool mFontUndeleteFlag; /* 0x121 */ bool mFontUndeleteFlag;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevBlock16 : public J2DTevBlock { class J2DTevBlock16 : public J2DTevBlock {
public: public:
/* 802F01E4 */ J2DTevBlock16(); /* 802F01E4 */ J2DTevBlock16();
@ -433,6 +460,10 @@ public:
/* 0x1B1 */ bool mFontUndeleteFlag; /* 0x1B1 */ bool mFontUndeleteFlag;
}; // Size: 0x1B4 }; // Size: 0x1B4
/**
* @ingroup jsystem-j2d
*
*/
struct J2DAlphaCompInfo { struct J2DAlphaCompInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1; /* 0x1 */ u8 field_0x1;
@ -448,6 +479,10 @@ inline u16 J2DCalcAlphaCmp(s32 param_1, u32 param_2, u32 param_3) {
return ((param_1) << 5) | ((param_2 & 0xff) << 3) | (param_3 & 0xff); return ((param_1) << 5) | ((param_2 & 0xff) << 3) | (param_3 & 0xff);
} }
/**
* @ingroup jsystem-j2d
*
*/
struct J2DAlphaComp { struct J2DAlphaComp {
J2DAlphaComp() { J2DAlphaComp() {
mAlphaCmp = j2dDefaultAlphaCmp; mAlphaCmp = j2dDefaultAlphaCmp;
@ -470,6 +505,10 @@ struct J2DAlphaComp {
/* 0x3 */ u8 mRef1; /* 0x3 */ u8 mRef1;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DBlendInfo { struct J2DBlendInfo {
void operator=(J2DBlendInfo const& other) { void operator=(J2DBlendInfo const& other) {
mType = other.mType; mType = other.mType;
@ -486,6 +525,10 @@ struct J2DBlendInfo {
extern const J2DBlendInfo j2dDefaultBlendInfo; extern const J2DBlendInfo j2dDefaultBlendInfo;
/**
* @ingroup jsystem-j2d
*
*/
struct J2DBlend { struct J2DBlend {
J2DBlend() { mBlendInfo = j2dDefaultBlendInfo; } J2DBlend() { mBlendInfo = j2dDefaultBlendInfo; }
J2DBlend(const J2DBlendInfo& info) { mBlendInfo = info; } J2DBlend(const J2DBlendInfo& info) { mBlendInfo = info; }
@ -498,6 +541,10 @@ struct J2DBlend {
/* 0x0 */ J2DBlendInfo mBlendInfo; /* 0x0 */ J2DBlendInfo mBlendInfo;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DPEBlock { class J2DPEBlock {
public: public:
J2DPEBlock() { initialize(); } J2DPEBlock() { initialize(); }
@ -514,6 +561,10 @@ private:
/* 0x8 */ u8 mDither; /* 0x8 */ u8 mDither;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DIndBlock { class J2DIndBlock {
public: public:
/* 802EB24C */ virtual void initialize(); /* 802EB24C */ virtual void initialize();
@ -530,6 +581,10 @@ public:
/* 802EB13C */ virtual ~J2DIndBlock() {} /* 802EB13C */ virtual ~J2DIndBlock() {}
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DIndBlockFull : public J2DIndBlock { class J2DIndBlockFull : public J2DIndBlock {
public: public:
J2DIndBlockFull() { initialize(); } J2DIndBlockFull() { initialize(); }
@ -554,6 +609,10 @@ private:
/* 0x64 */ J2DIndTexCoordScale mTexCoordScale[4]; /* 0x64 */ J2DIndTexCoordScale mTexCoordScale[4];
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DIndBlockNull : public J2DIndBlock { class J2DIndBlockNull : public J2DIndBlock {
public: public:
J2DIndBlockNull() {} J2DIndBlockNull() {}
@ -563,6 +622,10 @@ public:
/* 802EB1F0 */ virtual ~J2DIndBlockNull(); /* 802EB1F0 */ virtual ~J2DIndBlockNull();
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DTexGenBlock { class J2DTexGenBlock {
private: private:
/* 0x00 */ u32 mTexGenNum; /* 0x00 */ u32 mTexGenNum;
@ -585,6 +648,10 @@ public:
/* 802EB620 */ virtual ~J2DTexGenBlock(); /* 802EB620 */ virtual ~J2DTexGenBlock();
}; // Size: 0x48 }; // Size: 0x48
/**
* @ingroup jsystem-j2d
*
*/
struct J2DColorChanInfo { struct J2DColorChanInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x0 */ u8 field_0x1; /* 0x0 */ u8 field_0x1;
@ -595,6 +662,10 @@ struct J2DColorChanInfo {
inline u8 J2DCalcColorChanID(u8 param_1) { return param_1; } inline u8 J2DCalcColorChanID(u8 param_1) { return param_1; }
extern const J2DColorChanInfo j2dDefaultColorChanInfo; extern const J2DColorChanInfo j2dDefaultColorChanInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DColorChan { class J2DColorChan {
public: public:
/* 802EB280 */ J2DColorChan() { /* 802EB280 */ J2DColorChan() {
@ -613,6 +684,10 @@ private:
/* 0x0 */ u16 mColorChan; /* 0x0 */ u16 mColorChan;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DColorBlock { class J2DColorBlock {
private: private:
/* 0x00 */ JUtility::TColor mMatColor[2]; /* 0x00 */ JUtility::TColor mMatColor[2];

View File

@ -4,6 +4,10 @@
#include "JSystem/J2DGraph/J2DAnimation.h" #include "JSystem/J2DGraph/J2DAnimation.h"
#include "JSystem/J2DGraph/J2DMatBlock.h" #include "JSystem/J2DGraph/J2DMatBlock.h"
/**
* @ingroup jsystem-j2d
*
*/
class J2DMaterial { class J2DMaterial {
public: public:
struct J2DMaterialAnmPointer { struct J2DMaterialAnmPointer {

View File

@ -3,8 +3,11 @@
#include "JSystem/J2DGraph/J2DManage.h" #include "JSystem/J2DGraph/J2DManage.h"
#include "JSystem/J2DGraph/J2DMatBlock.h" #include "JSystem/J2DGraph/J2DMatBlock.h"
#include "dolphin/types.h"
/**
* @ingroup jsystem-j2d
*
*/
struct J2DMaterialBlock { struct J2DMaterialBlock {
u32 field_0x0; u32 field_0x0;
u32 field_0x4; u32 field_0x4;
@ -42,6 +45,10 @@ struct J2DBlendInfo;
struct J2DColorChanInfo; struct J2DColorChanInfo;
class J2DMaterial; class J2DMaterial;
/**
* @ingroup jsystem-j2d
*
*/
struct J2DIndInitData { struct J2DIndInitData {
u8 field_0x0; u8 field_0x0;
u8 field_0x1; u8 field_0x1;
@ -53,6 +60,10 @@ struct J2DIndInitData {
u8 field_0xac[0x90]; u8 field_0xac[0x90];
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DMaterialInitData { struct J2DMaterialInitData {
u8 field_0x0; u8 field_0x0;
u8 field_0x1; u8 field_0x1;
@ -88,6 +99,10 @@ struct J2DTexCoordInfo;
struct J2DTexMtxInfo; struct J2DTexMtxInfo;
class JKRArchive; class JKRArchive;
/**
* @ingroup jsystem-j2d
*
*/
class J2DMaterialFactory { class J2DMaterialFactory {
public: public:
/* 802F2AD0 */ J2DMaterialFactory(J2DMaterialBlock const&); /* 802F2AD0 */ J2DMaterialFactory(J2DMaterialBlock const&);

View File

@ -3,6 +3,10 @@
#include "JSystem/J2DGraph/J2DGrafContext.h" #include "JSystem/J2DGraph/J2DGrafContext.h"
/**
* @ingroup jsystem-j2d
*
*/
class J2DOrthoGraph : public J2DGrafContext { class J2DOrthoGraph : public J2DGrafContext {
public: public:
/* 802E9670 */ J2DOrthoGraph(); /* 802E9670 */ J2DOrthoGraph();

View File

@ -35,11 +35,19 @@ enum J2DBasePosition {
J2DBasePosition_4, J2DBasePosition_4,
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DPaneHeader { struct J2DPaneHeader {
/* 0x0 */ u32 mKind; /* 0x0 */ u32 mKind;
/* 0x4 */ u32 mSize; /* 0x4 */ u32 mSize;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DPane { class J2DPane {
public: public:
J2DPane(); J2DPane();

View File

@ -3,7 +3,6 @@
#include "JSystem/J2DGraph/J2DPane.h" #include "JSystem/J2DGraph/J2DPane.h"
#include "JSystem/JUtility/TColor.h" #include "JSystem/JUtility/TColor.h"
#include "dolphin/types.h"
class J2DMaterial; class J2DMaterial;
class JUTPalette; class JUTPalette;
@ -26,11 +25,19 @@ enum J2DBinding {
/* 0xF */ BIND15 = 15, // temp, figure out later /* 0xF */ BIND15 = 15, // temp, figure out later
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DPicHeader { struct J2DPicHeader {
/* 0x0 */ u32 mTag; /* 0x0 */ u32 mTag;
/* 0x4 */ u32 mSize; /* 0x4 */ u32 mSize;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DScrnBlockPictureParameter { struct J2DScrnBlockPictureParameter {
/* 0x00 */ u16 field_0x0; /* 0x00 */ u16 field_0x0;
/* 0x02 */ u16 mMaterialNum; /* 0x02 */ u16 mMaterialNum;
@ -41,6 +48,10 @@ struct J2DScrnBlockPictureParameter {
/* 0x20 */ u32 mCornerColor[4]; /* 0x20 */ u32 mCornerColor[4];
}; // Size: 0x30 }; // Size: 0x30
/**
* @ingroup jsystem-j2d
*
*/
class J2DPicture : public J2DPane { class J2DPicture : public J2DPane {
public: public:
/* 802FCFF0 */ virtual ~J2DPicture(); /* 802FCFF0 */ virtual ~J2DPicture();

View File

@ -3,10 +3,13 @@
#include "JSystem/J2DGraph/J2DPicture.h" #include "JSystem/J2DGraph/J2DPicture.h"
#include "JSystem/J2DGraph/J2DTevs.h" #include "JSystem/J2DGraph/J2DTevs.h"
#include "dolphin/types.h"
class J2DMaterial; class J2DMaterial;
/**
* @ingroup jsystem-j2d
*
*/
class J2DPictureEx : public J2DPicture { class J2DPictureEx : public J2DPicture {
public: public:
enum stage_enum {}; enum stage_enum {};

View File

@ -3,10 +3,13 @@
#include "JSystem/J2DGraph/J2DTextBox.h" #include "JSystem/J2DGraph/J2DTextBox.h"
#include "__va_arg.h" #include "__va_arg.h"
#include "dolphin/types.h"
class JUTFont; class JUTFont;
/**
* @ingroup jsystem-j2d
*
*/
class J2DPrint { class J2DPrint {
public: public:
struct TSize { struct TSize {

View File

@ -8,6 +8,10 @@
class J2DMaterial; class J2DMaterial;
class JUTNameTab; class JUTNameTab;
/**
* @ingroup jsystem-j2d
*
*/
struct J2DScrnHeader { struct J2DScrnHeader {
/* 0x00 */ u32 mTag; /* 0x00 */ u32 mTag;
/* 0x04 */ u32 mType; /* 0x04 */ u32 mType;
@ -16,6 +20,10 @@ struct J2DScrnHeader {
/* 0x10 */ u8 padding[0x10]; /* 0x10 */ u8 padding[0x10];
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DScrnInfoHeader { struct J2DScrnInfoHeader {
/* 0x0 */ u32 mTag; /* 0x0 */ u32 mTag;
/* 0x4 */ u32 mSize; /* 0x4 */ u32 mSize;
@ -24,11 +32,19 @@ struct J2DScrnInfoHeader {
/* 0xC */ u32 mColor; /* 0xC */ u32 mColor;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DScrnBlockHeader { struct J2DScrnBlockHeader {
/* 0x00 */ u32 mTag; /* 0x00 */ u32 mTag;
/* 0x04 */ s32 mSize; /* 0x04 */ s32 mSize;
}; };
/**
* @ingroup jsystem-j2d
*
*/
class J2DScreen : public J2DPane { class J2DScreen : public J2DPane {
public: public:
/* 802F8540 */ virtual ~J2DScreen(); /* 802F8540 */ virtual ~J2DScreen();

View File

@ -1,10 +1,13 @@
#ifndef J2DTEVS_H #ifndef J2DTEVS_H
#define J2DTEVS_H #define J2DTEVS_H
#include "dolphin/gx/GXEnum.h"
#include "dolphin/gx/GXStruct.h" #include "dolphin/gx/GXStruct.h"
#include "dolphin/mtx.h" #include "dolphin/mtx.h"
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTextureSRTInfo { struct J2DTextureSRTInfo {
/* 0x00 */ f32 field_0x0; /* 0x00 */ f32 field_0x0;
/* 0x04 */ f32 field_0x4; /* 0x04 */ f32 field_0x4;
@ -13,6 +16,10 @@ struct J2DTextureSRTInfo {
/* 0x10 */ f32 field_0x10; /* 0x10 */ f32 field_0x10;
}; // Size: 0x14 }; // Size: 0x14
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTexMtxInfo { struct J2DTexMtxInfo {
enum { enum {
/* 0x0 */ DCC_NONE, /* 0x0 */ DCC_NONE,
@ -39,6 +46,10 @@ struct J2DTexMtxInfo {
extern J2DTexMtxInfo const j2dDefaultTexMtxInfo; extern J2DTexMtxInfo const j2dDefaultTexMtxInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DTexMtx { class J2DTexMtx {
public: public:
J2DTexMtx() { mInfo = j2dDefaultTexMtxInfo; } J2DTexMtx() { mInfo = j2dDefaultTexMtxInfo; }
@ -55,6 +66,10 @@ private:
/* 0x24 */ Mtx mTexMtx; /* 0x24 */ Mtx mTexMtx;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DIndTexOrderInfo { struct J2DIndTexOrderInfo {
/* 0x0 */ u8 mTexCoordID; /* 0x0 */ u8 mTexCoordID;
/* 0x1 */ u8 mTexMapID; /* 0x1 */ u8 mTexMapID;
@ -70,6 +85,10 @@ struct J2DIndTexOrderInfo {
extern const J2DIndTexOrderInfo j2dDefaultIndTexOrderNull; extern const J2DIndTexOrderInfo j2dDefaultIndTexOrderNull;
/**
* @ingroup jsystem-j2d
*
*/
class J2DIndTexOrder { class J2DIndTexOrder {
public: public:
/* 802EB378 */ J2DIndTexOrder() { /* 802EB378 */ J2DIndTexOrder() {
@ -84,6 +103,10 @@ private:
/* 0x0 */ J2DIndTexOrderInfo mInfo; /* 0x0 */ J2DIndTexOrderInfo mInfo;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DIndTexMtxInfo { struct J2DIndTexMtxInfo {
/* 0x00 */ Mtx23 mMtx; /* 0x00 */ Mtx23 mMtx;
/* 0x18 */ s8 mScaleExp; /* 0x18 */ s8 mScaleExp;
@ -101,6 +124,10 @@ struct J2DIndTexMtxInfo {
extern J2DIndTexMtxInfo const j2dDefaultIndTexMtxInfo; extern J2DIndTexMtxInfo const j2dDefaultIndTexMtxInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DIndTexMtx { class J2DIndTexMtx {
public: public:
/* 802EB2E4 */ ~J2DIndTexMtx() {} /* 802EB2E4 */ ~J2DIndTexMtx() {}
@ -118,6 +145,10 @@ private:
/* 0x0 */ J2DIndTexMtxInfo mIndTexMtxInfo; /* 0x0 */ J2DIndTexMtxInfo mIndTexMtxInfo;
}; // Size: 0x1C }; // Size: 0x1C
/**
* @ingroup jsystem-j2d
*
*/
struct J2DIndTexCoordScaleInfo { struct J2DIndTexCoordScaleInfo {
/* 0x0 */ u8 mScaleS; /* 0x0 */ u8 mScaleS;
/* 0x1 */ u8 mScaleT; /* 0x1 */ u8 mScaleT;
@ -133,6 +164,10 @@ struct J2DIndTexCoordScaleInfo {
extern const J2DIndTexCoordScaleInfo j2dDefaultIndTexCoordScaleInfo; extern const J2DIndTexCoordScaleInfo j2dDefaultIndTexCoordScaleInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DIndTexCoordScale { class J2DIndTexCoordScale {
public: public:
/* 802EB290 */ ~J2DIndTexCoordScale() {} /* 802EB290 */ ~J2DIndTexCoordScale() {}
@ -148,6 +183,10 @@ private:
/* 0x0 */ J2DIndTexCoordScaleInfo mInfo; /* 0x0 */ J2DIndTexCoordScaleInfo mInfo;
}; // Size: 0x2 }; // Size: 0x2
/**
* @ingroup jsystem-j2d
*
*/
struct J2DIndTevStageInfo { struct J2DIndTevStageInfo {
/* 0x0 */ u8 mIndStage; /* 0x0 */ u8 mIndStage;
/* 0x1 */ u8 mIndFormat; /* 0x1 */ u8 mIndFormat;
@ -171,6 +210,10 @@ inline u32 J2DCalcIndTevStage(J2DIndTevStageInfo info) {
extern const J2DIndTevStageInfo j2dDefaultIndTevStageInfo; extern const J2DIndTevStageInfo j2dDefaultIndTevStageInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DIndTevStage { class J2DIndTevStage {
public: public:
/* 802EA044 */ void load(u8); /* 802EA044 */ void load(u8);
@ -197,6 +240,10 @@ private:
GXIndTexAlphaSel getAlphaSel() const { return (GXIndTexAlphaSel)((mFlags >> 22) & 0x03); } GXIndTexAlphaSel getAlphaSel() const { return (GXIndTexAlphaSel)((mFlags >> 22) & 0x03); }
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTexCoordInfo { struct J2DTexCoordInfo {
/* 0x0 */ u8 mTexGenType; /* 0x0 */ u8 mTexGenType;
/* 0x1 */ u8 mTexGenSrc; /* 0x1 */ u8 mTexGenSrc;
@ -213,6 +260,10 @@ struct J2DTexCoordInfo {
extern J2DTexCoordInfo const j2dDefaultTexCoordInfo[8]; extern J2DTexCoordInfo const j2dDefaultTexCoordInfo[8];
/**
* @ingroup jsystem-j2d
*
*/
class J2DTexCoord { class J2DTexCoord {
public: public:
/* 802EB260 */ inline J2DTexCoord() { /* 802EB260 */ inline J2DTexCoord() {
@ -231,6 +282,10 @@ private:
/* 0x0 */ J2DTexCoordInfo mTexCoordInfo; /* 0x0 */ J2DTexCoordInfo mTexCoordInfo;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTevOrderInfo { struct J2DTevOrderInfo {
/* 0x0 */ u8 mTexCoord; /* 0x0 */ u8 mTexCoord;
/* 0x1 */ u8 mTexMap; /* 0x1 */ u8 mTexMap;
@ -247,6 +302,10 @@ struct J2DTevOrderInfo {
extern const J2DTevOrderInfo j2dDefaultTevOrderInfoNull; extern const J2DTevOrderInfo j2dDefaultTevOrderInfoNull;
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevOrder { class J2DTevOrder {
public: public:
/* 802F1B70 */ J2DTevOrder() { /* 802F1B70 */ J2DTevOrder() {
@ -265,6 +324,10 @@ public:
/* 0x0 */ J2DTevOrderInfo mTevOrderInfo; /* 0x0 */ J2DTevOrderInfo mTevOrderInfo;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTevStageInfo { struct J2DTevStageInfo {
/* 0x00 */ u8 field_0x0; /* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 mColorA; /* 0x01 */ u8 mColorA;
@ -288,6 +351,10 @@ struct J2DTevStageInfo {
/* 0x13 */ u8 field_0x13; /* 0x13 */ u8 field_0x13;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTevSwapModeInfo { struct J2DTevSwapModeInfo {
/* 0x0 */ u8 mRasSel; /* 0x0 */ u8 mRasSel;
/* 0x1 */ u8 mTexSel; /* 0x1 */ u8 mTexSel;
@ -297,6 +364,10 @@ struct J2DTevSwapModeInfo {
extern const J2DTevSwapModeInfo j2dDefaultTevSwapMode; extern const J2DTevSwapModeInfo j2dDefaultTevSwapMode;
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevStage { class J2DTevStage {
public: public:
/* 802F4110 */ J2DTevStage(J2DTevStageInfo const&); /* 802F4110 */ J2DTevStage(J2DTevStageInfo const&);
@ -426,6 +497,10 @@ private:
/* 0x7 */ u8 field_0x7; /* 0x7 */ u8 field_0x7;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTevSwapModeTableInfo { struct J2DTevSwapModeTableInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1; /* 0x1 */ u8 field_0x1;
@ -439,6 +514,10 @@ inline u8 J2DCalcTevSwapTable(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
extern const J2DTevSwapModeTableInfo j2dDefaultTevSwapModeTable; extern const J2DTevSwapModeTableInfo j2dDefaultTevSwapModeTable;
/**
* @ingroup jsystem-j2d
*
*/
class J2DTevSwapModeTable { class J2DTevSwapModeTable {
public: public:
/* 802F1934 */ J2DTevSwapModeTable(); /* 802F1934 */ J2DTevSwapModeTable();

View File

@ -19,11 +19,19 @@ enum J2DTextBoxHBinding {
/* 0x2 */ HBIND_LEFT /* 0x2 */ HBIND_LEFT
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTbxBlockHeader { struct J2DTbxBlockHeader {
/* 0x00 */ u32 mTag; /* 0x00 */ u32 mTag;
/* 0x04 */ s32 mSize; /* 0x04 */ s32 mSize;
}; };
/**
* @ingroup jsystem-j2d
*
*/
struct J2DTextBoxInfo { struct J2DTextBoxInfo {
/* 0x00 */ u16 field_0x0; /* 0x00 */ u16 field_0x0;
/* 0x02 */ u16 field_0x2; /* 0x02 */ u16 field_0x2;
@ -42,6 +50,10 @@ struct J2DTextBoxInfo {
/* 0x1E */ u16 field_0x1e; /* 0x1E */ u16 field_0x1e;
}; // Size: 0x20 }; // Size: 0x20
/**
* @ingroup jsystem-j2d
*
*/
class J2DTextBox : public J2DPane { class J2DTextBox : public J2DPane {
public: public:
struct TFontSize { struct TFontSize {

View File

@ -2,10 +2,13 @@
#define J2DTEXTBOXEX_H #define J2DTEXTBOXEX_H
#include "JSystem/J2DGraph/J2DTextBox.h" #include "JSystem/J2DGraph/J2DTextBox.h"
#include "dolphin/types.h"
class J2DMaterial; class J2DMaterial;
/**
* @ingroup jsystem-j2d
*
*/
class J2DTextBoxEx : public J2DTextBox { class J2DTextBoxEx : public J2DTextBox {
public: public:
enum stage_enum { enum stage_enum {

View File

@ -7,6 +7,10 @@
class JSURandomInputStream; class JSURandomInputStream;
class JUTTexture; class JUTTexture;
/**
* @ingroup jsystem-j2d
*
*/
class J2DWindow : public J2DPane { class J2DWindow : public J2DPane {
public: public:
struct TMaterial { struct TMaterial {

View File

@ -2,8 +2,11 @@
#define J2DWINDOWEX_H #define J2DWINDOWEX_H
#include "JSystem/J2DGraph/J2DWindow.h" #include "JSystem/J2DGraph/J2DWindow.h"
#include "dolphin/types.h"
/**
* @ingroup jsystem-j2d
*
*/
class J2DWindowEx : public J2DWindow { class J2DWindowEx : public J2DWindow {
public: public:
enum stage_enum { enum stage_enum {

View File

@ -3,7 +3,6 @@
#include "JSystem/J3DGraphAnimator/J3DModelData.h" #include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/JUtility/JUTNameTab.h" #include "JSystem/JUtility/JUTNameTab.h"
#include "global.h"
struct JUTDataBlockHeader { struct JUTDataBlockHeader {
/* 0x0 */ u32 mType; /* 0x0 */ u32 mType;
@ -28,12 +27,20 @@ struct JUTDataFileHeader { // actual struct name unknown
typedef struct _GXColor GXColor; typedef struct _GXColor GXColor;
typedef struct _GXColorS10 GXColorS10; typedef struct _GXColorS10 GXColorS10;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmKeyTableBase { struct J3DAnmKeyTableBase {
/* 0x00 */ u16 mMaxFrame; /* 0x00 */ u16 mMaxFrame;
/* 0x02 */ u16 mOffset; /* 0x02 */ u16 mOffset;
/* 0x04 */ u16 mType; /* 0x04 */ u16 mType;
}; // Size = 0x6 }; // Size = 0x6
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmColorKeyTable { struct J3DAnmColorKeyTable {
J3DAnmKeyTableBase mRInfo; J3DAnmKeyTableBase mRInfo;
J3DAnmKeyTableBase mGInfo; J3DAnmKeyTableBase mGInfo;
@ -41,11 +48,19 @@ struct J3DAnmColorKeyTable {
J3DAnmKeyTableBase mAInfo; J3DAnmKeyTableBase mAInfo;
}; // Size = 0x18 }; // Size = 0x18
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmVtxColorIndexData { struct J3DAnmVtxColorIndexData {
/* 0x00 */ u16 mNum; /* 0x00 */ u16 mNum;
/* 0x04 */ void* mpData; /* 0x04 */ void* mpData;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmColorFullTable { struct J3DAnmColorFullTable {
/* 0x00 */ u16 mRMaxFrame; /* 0x00 */ u16 mRMaxFrame;
/* 0x02 */ u16 mROffset; /* 0x02 */ u16 mROffset;
@ -57,17 +72,29 @@ struct J3DAnmColorFullTable {
/* 0x0E */ u16 mAOffset; /* 0x0E */ u16 mAOffset;
}; // Size = 0x10 }; // Size = 0x10
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmVisibilityFullTable { struct J3DAnmVisibilityFullTable {
u16 _0; u16 _0;
u16 _2; u16 _2;
}; // Size = 0x4 }; // Size = 0x4
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTransformKeyTable { struct J3DAnmTransformKeyTable {
J3DAnmKeyTableBase mScaleInfo; J3DAnmKeyTableBase mScaleInfo;
J3DAnmKeyTableBase mRotationInfo; J3DAnmKeyTableBase mRotationInfo;
J3DAnmKeyTableBase mTranslateInfo; J3DAnmKeyTableBase mTranslateInfo;
}; // Size = 0x12 }; // Size = 0x12
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTransformFullTable { struct J3DAnmTransformFullTable {
/* 0x00 */ u16 mScaleMaxFrame; /* 0x00 */ u16 mScaleMaxFrame;
/* 0x02 */ u16 mScaleOffset; /* 0x02 */ u16 mScaleOffset;
@ -77,6 +104,10 @@ struct J3DAnmTransformFullTable {
/* 0x0A */ u16 mTranslateOffset; /* 0x0A */ u16 mTranslateOffset;
}; // Size = 0xC }; // Size = 0xC
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTexPatternFullTable { struct J3DAnmTexPatternFullTable {
/* 0x00 */ u16 mMaxFrame; /* 0x00 */ u16 mMaxFrame;
/* 0x02 */ u16 mOffset; /* 0x02 */ u16 mOffset;
@ -84,6 +115,10 @@ struct J3DAnmTexPatternFullTable {
/* 0x06 */ u16 _6; /* 0x06 */ u16 _6;
}; // Size = 0x8 }; // Size = 0x8
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmCRegKeyTable { struct J3DAnmCRegKeyTable {
/* 0x00 */ J3DAnmKeyTableBase mRTable; /* 0x00 */ J3DAnmKeyTableBase mRTable;
/* 0x06 */ J3DAnmKeyTableBase mGTable; /* 0x06 */ J3DAnmKeyTableBase mGTable;
@ -93,6 +128,10 @@ struct J3DAnmCRegKeyTable {
u8 padding[3]; u8 padding[3];
}; // Size = 0x1C }; // Size = 0x1C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmKRegKeyTable { struct J3DAnmKRegKeyTable {
/* 0x00 */ J3DAnmKeyTableBase mRTable; /* 0x00 */ J3DAnmKeyTableBase mRTable;
/* 0x06 */ J3DAnmKeyTableBase mGTable; /* 0x06 */ J3DAnmKeyTableBase mGTable;
@ -102,11 +141,19 @@ struct J3DAnmKRegKeyTable {
u8 padding[3]; u8 padding[3];
}; // Size = 0x1C }; // Size = 0x1C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmDataBlockHeader { // actual name unknown struct J3DAnmDataBlockHeader { // actual name unknown
/* 0x0 */ u32 mType; /* 0x0 */ u32 mType;
/* 0x4 */ u32 mNextOffset; /* 0x4 */ u32 mNextOffset;
}; // Size = 0x8 }; // Size = 0x8
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmDataHeader { // actual name unknown struct J3DAnmDataHeader { // actual name unknown
/* 0x00 */ u32 mMagic; /* 0x00 */ u32 mMagic;
/* 0x04 */ u32 mType; /* 0x04 */ u32 mType;
@ -116,6 +163,10 @@ struct J3DAnmDataHeader { // actual name unknown
/* 0x20 */ J3DAnmDataBlockHeader mFirst; /* 0x20 */ J3DAnmDataBlockHeader mFirst;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmVtxColorFullData { struct J3DAnmVtxColorFullData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -134,6 +185,10 @@ struct J3DAnmVtxColorFullData {
STATIC_ASSERT(sizeof(J3DAnmVtxColorFullData) == 0x40); STATIC_ASSERT(sizeof(J3DAnmVtxColorFullData) == 0x40);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmVisibilityFullData { struct J3DAnmVisibilityFullData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -147,6 +202,10 @@ struct J3DAnmVisibilityFullData {
STATIC_ASSERT(sizeof(J3DAnmVisibilityFullData) == 0x18); STATIC_ASSERT(sizeof(J3DAnmVisibilityFullData) == 0x18);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTransformFullData { struct J3DAnmTransformFullData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -162,6 +221,10 @@ struct J3DAnmTransformFullData {
STATIC_ASSERT(sizeof(J3DAnmTransformFullData) == 0x24); STATIC_ASSERT(sizeof(J3DAnmTransformFullData) == 0x24);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmColorKeyData { struct J3DAnmColorKeyData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -183,6 +246,10 @@ struct J3DAnmColorKeyData {
STATIC_ASSERT(sizeof(J3DAnmColorKeyData) == 0x34); STATIC_ASSERT(sizeof(J3DAnmColorKeyData) == 0x34);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTextureSRTKeyData { struct J3DAnmTextureSRTKeyData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -217,6 +284,10 @@ struct J3DAnmTextureSRTKeyData {
STATIC_ASSERT(sizeof(J3DAnmTextureSRTKeyData) == 0x60); STATIC_ASSERT(sizeof(J3DAnmTextureSRTKeyData) == 0x60);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmVtxColorKeyData { struct J3DAnmVtxColorKeyData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -235,6 +306,10 @@ struct J3DAnmVtxColorKeyData {
STATIC_ASSERT(sizeof(J3DAnmVtxColorKeyData) == 0x40); STATIC_ASSERT(sizeof(J3DAnmVtxColorKeyData) == 0x40);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTexPatternFullData { struct J3DAnmTexPatternFullData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -250,6 +325,10 @@ struct J3DAnmTexPatternFullData {
STATIC_ASSERT(sizeof(J3DAnmTexPatternFullData) == 0x20); STATIC_ASSERT(sizeof(J3DAnmTexPatternFullData) == 0x20);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTevRegKeyData { struct J3DAnmTevRegKeyData {
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -283,6 +362,10 @@ struct J3DAnmTevRegKeyData {
STATIC_ASSERT(sizeof(J3DAnmTevRegKeyData) == 0x58); STATIC_ASSERT(sizeof(J3DAnmTevRegKeyData) == 0x58);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmColorFullData { /* PlaceHolder Structure */ struct J3DAnmColorFullData { /* PlaceHolder Structure */
/* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x00 */ J3DAnmDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -301,10 +384,18 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */
STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34); STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34);
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmClusterKeyTable { struct J3DAnmClusterKeyTable {
/* 0x00 */ J3DAnmKeyTableBase mWeightTable; /* 0x00 */ J3DAnmKeyTableBase mWeightTable;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmTransformKeyData { struct J3DAnmTransformKeyData {
/* 0x00 */ JUTDataBlockHeader mHeader; /* 0x00 */ JUTDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -318,6 +409,10 @@ struct J3DAnmTransformKeyData {
/* 0x20 */ s32 field_0x20; /* 0x20 */ s32 field_0x20;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmClusterKeyData { struct J3DAnmClusterKeyData {
/* 0x00 */ JUTDataBlockHeader mHeader; /* 0x00 */ JUTDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -327,6 +422,10 @@ struct J3DAnmClusterKeyData {
/* 0x14 */ s32 mWeightOffset; /* 0x14 */ s32 mWeightOffset;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmClusterFullData { struct J3DAnmClusterFullData {
/* 0x00 */ JUTDataBlockHeader mHeader; /* 0x00 */ JUTDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8; /* 0x08 */ u8 field_0x8;
@ -336,11 +435,19 @@ struct J3DAnmClusterFullData {
/* 0x14 */ s32 mWeightOffset; /* 0x14 */ s32 mWeightOffset;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmClusterFullTable { struct J3DAnmClusterFullTable {
u16 mMaxFrame; u16 mMaxFrame;
u16 mOffset; u16 mOffset;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmBase { class J3DAnmBase {
public: public:
J3DAnmBase() { J3DAnmBase() {
@ -371,6 +478,10 @@ public:
/* 0x8 */ f32 mFrame; /* 0x8 */ f32 mFrame;
}; // Size: 0xC }; // Size: 0xC
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmTransform : public J3DAnmBase { class J3DAnmTransform : public J3DAnmBase {
public: public:
/* 80328E40 */ J3DAnmTransform(s16, f32*, s16*, f32*); /* 80328E40 */ J3DAnmTransform(s16, f32*, s16*, f32*);
@ -388,6 +499,10 @@ public:
/* 0x1E */ s16 field_0x1e; /* 0x1E */ s16 field_0x1e;
}; // Size: 0x20 }; // Size: 0x20
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmTransformKey : public J3DAnmTransform { class J3DAnmTransformKey : public J3DAnmTransform {
public: public:
J3DAnmTransformKey() : J3DAnmTransform(0, NULL, NULL, NULL) { J3DAnmTransformKey() : J3DAnmTransform(0, NULL, NULL, NULL) {
@ -405,6 +520,10 @@ public:
/* 0x24 */ J3DAnmTransformKeyTable* mAnmTable; /* 0x24 */ J3DAnmTransformKeyTable* mAnmTable;
}; // Size: 0x28 }; // Size: 0x28
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmTransformFull : public J3DAnmTransform { class J3DAnmTransformFull : public J3DAnmTransform {
public: public:
J3DAnmTransformFull() : J3DAnmTransform(0, NULL, NULL, NULL) { mAnmTable = NULL; } J3DAnmTransformFull() : J3DAnmTransform(0, NULL, NULL, NULL) { mAnmTable = NULL; }
@ -416,6 +535,10 @@ public:
/* 0x20 */ J3DAnmTransformFullTable* mAnmTable; /* 0x20 */ J3DAnmTransformFullTable* mAnmTable;
}; // Size: 0x24 }; // Size: 0x24
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmTransformFullWithLerp : public J3DAnmTransformFull { class J3DAnmTransformFullWithLerp : public J3DAnmTransformFull {
public: public:
/* 8032C228 */ virtual ~J3DAnmTransformFullWithLerp(); /* 8032C228 */ virtual ~J3DAnmTransformFullWithLerp();
@ -427,6 +550,10 @@ struct J3DTextureSRTInfo;
class J3DModelData; class J3DModelData;
class J3DMaterialTable; class J3DMaterialTable;
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmTextureSRTKey : public J3DAnmBase { class J3DAnmTextureSRTKey : public J3DAnmBase {
public: public:
/* 80329E5C */ J3DAnmTextureSRTKey(); /* 80329E5C */ J3DAnmTextureSRTKey();
@ -477,6 +604,10 @@ public:
/* 0x78 */ u32 mTexMtxCalcType; /* 0x78 */ u32 mTexMtxCalcType;
}; // Size: 0x7C }; // Size: 0x7C
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmTexPattern : public J3DAnmBase { class J3DAnmTexPattern : public J3DAnmBase {
public: public:
/* 8032AED8 */ J3DAnmTexPattern(); /* 8032AED8 */ J3DAnmTexPattern();
@ -500,6 +631,10 @@ public:
/* 0x1C */ JUTNameTab mUpdateMaterialName; /* 0x1C */ JUTNameTab mUpdateMaterialName;
}; // Size: 0x2C }; // Size: 0x2C
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmTevRegKey : public J3DAnmBase { class J3DAnmTevRegKey : public J3DAnmBase {
public: public:
/* 8032AE18 */ J3DAnmTevRegKey(); /* 8032AE18 */ J3DAnmTevRegKey();
@ -549,6 +684,10 @@ public:
/* 0x6C */ s16* mAnmKRegDataA; /* 0x6C */ s16* mAnmKRegDataA;
}; // Size: 0x70 }; // Size: 0x70
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmColor : public J3DAnmBase { class J3DAnmColor : public J3DAnmBase {
public: public:
/* 8032A828 */ J3DAnmColor(); /* 8032A828 */ J3DAnmColor();
@ -571,6 +710,10 @@ public:
/* 0x1C */ JUTNameTab mUpdateMaterialName; /* 0x1C */ JUTNameTab mUpdateMaterialName;
}; // Size: 0x2C }; // Size: 0x2C
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmColorKey : public J3DAnmColor { class J3DAnmColorKey : public J3DAnmColor {
public: public:
/* 8032AB00 */ J3DAnmColorKey(); /* 8032AB00 */ J3DAnmColorKey();
@ -586,6 +729,10 @@ public:
/* 0x3C */ J3DAnmColorKeyTable* field_0x3c; /* 0x3C */ J3DAnmColorKeyTable* field_0x3c;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmColorFull : public J3DAnmColor { class J3DAnmColorFull : public J3DAnmColor {
public: public:
/* 8032AB00 */ J3DAnmColorFull(); /* 8032AB00 */ J3DAnmColorFull();
@ -601,6 +748,10 @@ public:
/* 0x3C */ J3DAnmColorFullTable* mAnmTable; /* 0x3C */ J3DAnmColorFullTable* mAnmTable;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmVtxColor : public J3DAnmBase { class J3DAnmVtxColor : public J3DAnmBase {
public: public:
J3DAnmVtxColor(); J3DAnmVtxColor();
@ -613,6 +764,10 @@ public:
/* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2]; /* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2];
}; // Size: 0x18 }; // Size: 0x18
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmVtxColorKey : public J3DAnmVtxColor { class J3DAnmVtxColorKey : public J3DAnmVtxColor {
public: public:
/* 8032A4E0 */ J3DAnmVtxColorKey(); /* 8032A4E0 */ J3DAnmVtxColorKey();
@ -628,6 +783,10 @@ public:
/* 0x30 */ s16* mColorA; /* 0x30 */ s16* mColorA;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmVtxColorFull : public J3DAnmVtxColor { class J3DAnmVtxColorFull : public J3DAnmVtxColor {
public: public:
/* 8032A30C */ J3DAnmVtxColorFull(); /* 8032A30C */ J3DAnmVtxColorFull();
@ -643,6 +802,10 @@ public:
/* 0x30 */ u8* mColorA; /* 0x30 */ u8* mColorA;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmCluster : public J3DAnmBase { class J3DAnmCluster : public J3DAnmBase {
public: public:
J3DAnmCluster(s16 param_1, f32* param_2) : J3DAnmBase(param_1) { mWeight = param_2; } J3DAnmCluster(s16 param_1, f32* param_2) : J3DAnmBase(param_1) { mWeight = param_2; }
@ -654,6 +817,10 @@ public:
/* 0x0C */ f32* mWeight; /* 0x0C */ f32* mWeight;
}; // Size: 0x10 }; // Size: 0x10
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmClusterFull : public J3DAnmCluster { class J3DAnmClusterFull : public J3DAnmCluster {
public: public:
J3DAnmClusterFull() : J3DAnmCluster(0, 0) { mAnmTable = NULL; } J3DAnmClusterFull() : J3DAnmCluster(0, 0) { mAnmTable = NULL; }
@ -665,6 +832,10 @@ public:
/* 0x10 */ J3DAnmClusterFullTable* mAnmTable; /* 0x10 */ J3DAnmClusterFullTable* mAnmTable;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmClusterKey : public J3DAnmCluster { class J3DAnmClusterKey : public J3DAnmCluster {
public: public:
J3DAnmClusterKey() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; } J3DAnmClusterKey() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; }
@ -676,6 +847,10 @@ public:
/* 0x10 */ J3DAnmClusterKeyTable* mAnmTable; /* 0x10 */ J3DAnmClusterKeyTable* mAnmTable;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DAnmVisibilityFull : public J3DAnmBase { class J3DAnmVisibilityFull : public J3DAnmBase {
public: public:
J3DAnmVisibilityFull() : J3DAnmBase(0) { J3DAnmVisibilityFull() : J3DAnmBase(0) {
@ -694,6 +869,10 @@ public:
/* 0x14 */ u8* mVisibility; /* 0x14 */ u8* mVisibility;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DFrameCtrl { class J3DFrameCtrl {
public: public:
enum Attribute_e { enum Attribute_e {

View File

@ -11,6 +11,10 @@ class J3DModel;
class J3DAnmCluster; class J3DAnmCluster;
class JUTNameTab; class JUTNameTab;
/**
* @ingroup jsystem-j3d
*
*/
class J3DCluster { class J3DCluster {
public: public:
void operator=(const J3DCluster& other) { void operator=(const J3DCluster& other) {
@ -44,6 +48,10 @@ public:
/* 0x20 */ J3DDeformer* mDeformer; /* 0x20 */ J3DDeformer* mDeformer;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterKey { class J3DClusterKey {
public: public:
void operator=(const J3DClusterKey& other) { void operator=(const J3DClusterKey& other) {
@ -59,6 +67,10 @@ public:
/* 0x08 */ void* field_0x8; /* 0x08 */ void* field_0x8;
}; // Size: 0x0C }; // Size: 0x0C
/**
* @ingroup jsystem-j3d
*
*/
class J3DDeformData { class J3DDeformData {
public: public:
/* 8032E1F8 */ J3DDeformData(); /* 8032E1F8 */ J3DDeformData();
@ -88,6 +100,10 @@ public:
/* 0x24 */ JUTNameTab* mClusterKeyName; /* 0x24 */ JUTNameTab* mClusterKeyName;
}; // Size: 0x28 }; // Size: 0x28
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterVertex { class J3DClusterVertex {
public: public:
void operator=(const J3DClusterVertex& other) { void operator=(const J3DClusterVertex& other) {

View File

@ -8,6 +8,10 @@ class J3DJoint;
class J3DMaterial; class J3DMaterial;
class J3DMtxBuffer; class J3DMtxBuffer;
/**
* @ingroup jsystem-j3d
*
*/
class J3DMtxCalc { class J3DMtxCalc {
public: public:
/* 80325D1C */ static void setMtxBuffer(J3DMtxBuffer*); /* 80325D1C */ static void setMtxBuffer(J3DMtxBuffer*);
@ -30,11 +34,19 @@ public:
static J3DJoint* mJoint; static J3DJoint* mJoint;
}; // Size: 0x4 }; // Size: 0x4
/**
* @ingroup jsystem-j3d
*
*/
class J3DMtxCalcNoAnmBase : public J3DMtxCalc { class J3DMtxCalcNoAnmBase : public J3DMtxCalc {
public: public:
/* 8000FA8C */ virtual ~J3DMtxCalcNoAnmBase(); /* 8000FA8C */ virtual ~J3DMtxCalcNoAnmBase();
}; };
/**
* @ingroup jsystem-j3d
*
*/
template <class A, class B> template <class A, class B>
class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase { class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase {
public: public:
@ -47,6 +59,10 @@ public:
class J3DJoint; class J3DJoint;
typedef int (*J3DJointCallBack)(J3DJoint*, int); typedef int (*J3DJointCallBack)(J3DJoint*, int);
/**
* @ingroup jsystem-j3d
*
*/
class J3DJoint { class J3DJoint {
public: public:
/* 8032F13C */ void appendChild(J3DJoint*); /* 8032F13C */ void appendChild(J3DJoint*);
@ -93,22 +109,42 @@ private:
/* 0x58 */ J3DMaterial* mMesh; /* 0x58 */ J3DMaterial* mMesh;
}; // Size: 0x5C }; // Size: 0x5C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMtxCalcJ3DSysInitMaya { struct J3DMtxCalcJ3DSysInitMaya {
/* 8032ECAC */ static void init(const Vec&, const Mtx& param_1); /* 8032ECAC */ static void init(const Vec&, const Mtx& param_1);
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMtxCalcJ3DSysInitBasic { struct J3DMtxCalcJ3DSysInitBasic {
/* 8032EC28 */ static void init(const Vec&, const Mtx& param_1); /* 8032EC28 */ static void init(const Vec&, const Mtx& param_1);
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMtxCalcCalcTransformSoftimage { struct J3DMtxCalcCalcTransformSoftimage {
/* 8032EE50 */ static void calcTransform(J3DTransformInfo const&); /* 8032EE50 */ static void calcTransform(J3DTransformInfo const&);
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMtxCalcCalcTransformMaya { struct J3DMtxCalcCalcTransformMaya {
/* 8032EFBC */ static void calcTransform(J3DTransformInfo const&); /* 8032EFBC */ static void calcTransform(J3DTransformInfo const&);
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMtxCalcCalcTransformBasic { struct J3DMtxCalcCalcTransformBasic {
/* 8032ED30 */ static void calcTransform(J3DTransformInfo const&); /* 8032ED30 */ static void calcTransform(J3DTransformInfo const&);
}; };

View File

@ -2,10 +2,13 @@
#define J3DJOINTTREE_H #define J3DJOINTTREE_H
#include "JSystem/J3DGraphAnimator/J3DJoint.h" #include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "dolphin/types.h"
class JUTNameTab; class JUTNameTab;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DModelHierarchy { struct J3DModelHierarchy {
/* 0x0 */ u16 mType; /* 0x0 */ u16 mType;
/* 0x2 */ u16 mValue; /* 0x2 */ u16 mValue;
@ -13,6 +16,10 @@ struct J3DModelHierarchy {
class J3DMaterialTable; class J3DMaterialTable;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DDrawMtxData { struct J3DDrawMtxData {
/* 803115E0 */ J3DDrawMtxData(); /* 803115E0 */ J3DDrawMtxData();
/* 803115F4 */ ~J3DDrawMtxData(); /* 803115F4 */ ~J3DDrawMtxData();
@ -25,6 +32,10 @@ struct J3DDrawMtxData {
class J3DShapeTable; class J3DShapeTable;
/**
* @ingroup jsystem-j3d
*
*/
class J3DJointTree { class J3DJointTree {
public: public:
/* 80325A18 */ J3DJointTree(); /* 80325A18 */ J3DJointTree();

View File

@ -6,6 +6,10 @@
typedef struct _GXColor GXColor; typedef struct _GXColor GXColor;
typedef struct _GXColorS10 GXColorS10; typedef struct _GXColorS10 GXColorS10;
/**
* @ingroup jsystem-j3d
*
*/
class J3DMatColorAnm { class J3DMatColorAnm {
public: public:
/* 8003B2B8 */ ~J3DMatColorAnm() {}; /* 8003B2B8 */ ~J3DMatColorAnm() {};
@ -32,6 +36,10 @@ private:
/* 0x4 */ J3DAnmColor* mAnmColor; /* 0x4 */ J3DAnmColor* mAnmColor;
}; // Size: 0x8 }; // Size: 0x8
/**
* @ingroup jsystem-j3d
*
*/
class J3DTexNoAnm { class J3DTexNoAnm {
public: public:
/* 8003B1F8 */ ~J3DTexNoAnm() {}; /* 8003B1F8 */ ~J3DTexNoAnm() {};
@ -59,6 +67,10 @@ private:
/* 0x8 */ J3DAnmTexPattern* mAnmTexPattern; /* 0x8 */ J3DAnmTexPattern* mAnmTexPattern;
}; // Size: 0xC }; // Size: 0xC
/**
* @ingroup jsystem-j3d
*
*/
class J3DTexMtxAnm { class J3DTexMtxAnm {
public: public:
/* 8003B264 */ ~J3DTexMtxAnm() {}; /* 8003B264 */ ~J3DTexMtxAnm() {};
@ -87,6 +99,10 @@ private:
/* 0x4 */ J3DAnmTextureSRTKey* mAnmTransform; /* 0x4 */ J3DAnmTextureSRTKey* mAnmTransform;
}; // Size: 0x8 }; // Size: 0x8
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevKColorAnm { class J3DTevKColorAnm {
public: public:
/* 8003B150 */ ~J3DTevKColorAnm() {} /* 8003B150 */ ~J3DTevKColorAnm() {}
@ -113,6 +129,10 @@ private:
/* 0x4 */ J3DAnmTevRegKey* mAnmTevReg; /* 0x4 */ J3DAnmTevRegKey* mAnmTevReg;
}; // Size: 0x8 }; // Size: 0x8
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevColorAnm { class J3DTevColorAnm {
public: public:
/* 8003B1A4 */ ~J3DTevColorAnm() {} /* 8003B1A4 */ ~J3DTevColorAnm() {}
@ -139,6 +159,10 @@ private:
/* 0x4 */ J3DAnmTevRegKey* mAnmTevReg; /* 0x4 */ J3DAnmTevRegKey* mAnmTevReg;
}; // Size: 0x8 }; // Size: 0x8
/**
* @ingroup jsystem-j3d
*
*/
class J3DMaterialAnm { class J3DMaterialAnm {
public: public:
J3DMaterialAnm() { initialize(); } J3DMaterialAnm() { initialize(); }

View File

@ -11,6 +11,10 @@ class J3DAnmTextureSRTKey;
class J3DAnmTevRegKey; class J3DAnmTevRegKey;
class JUTNameTab; class JUTNameTab;
/**
* @ingroup jsystem-j3d
*
*/
class J3DMaterialTable { class J3DMaterialTable {
public: public:
/* 8032F5A8 */ void clear(); /* 8032F5A8 */ void clear();

View File

@ -3,8 +3,6 @@
#include "JSystem/J3DGraphAnimator/J3DSkinDeform.h" #include "JSystem/J3DGraphAnimator/J3DSkinDeform.h"
#include "JSystem/J3DGraphBase/J3DPacket.h" #include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DVertex.h"
#include "dolphin/mtx.h"
#include "dolphin/types.h" #include "dolphin/types.h"
enum J3DMdlFlag { enum J3DMdlFlag {
@ -18,10 +16,18 @@ enum J3DMdlFlag {
/* 0x80000 */ J3DMdlFlag_Unk80000 = 0x80000, /* 0x80000 */ J3DMdlFlag_Unk80000 = 0x80000,
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DUnkCalc1 { struct J3DUnkCalc1 {
virtual void calc(J3DModel* model); virtual void calc(J3DModel* model);
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DUnkCalc2 { struct J3DUnkCalc2 {
virtual void unk(); virtual void unk();
virtual void calc(J3DModelData* mpModelData); virtual void calc(J3DModelData* mpModelData);
@ -29,6 +35,10 @@ struct J3DUnkCalc2 {
typedef void (*J3DCalcCallBack)(J3DModel*, u32 timing); typedef void (*J3DCalcCallBack)(J3DModel*, u32 timing);
/**
* @ingroup jsystem-j3d
*
*/
class J3DModel { class J3DModel {
public: public:
J3DModel() { J3DModel() {

View File

@ -10,6 +10,10 @@
typedef struct _GXColor GXColor; typedef struct _GXColor GXColor;
class JUTNameTab; class JUTNameTab;
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelData { class J3DModelData {
public: public:
/* 80325D88 */ void clear(); /* 80325D88 */ void clear();

View File

@ -2,10 +2,13 @@
#define J3DMTXBUFFER_H #define J3DMTXBUFFER_H
#include "JSystem/J3DGraphAnimator/J3DModelData.h" #include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "dolphin/types.h"
class J3DModelData; class J3DModelData;
/**
* @ingroup jsystem-j3d
*
*/
class J3DMtxBuffer { class J3DMtxBuffer {
public: public:
J3DMtxBuffer() { initialize(); } J3DMtxBuffer() { initialize(); }

View File

@ -2,10 +2,13 @@
#define J3DSHAPETABLE_H #define J3DSHAPETABLE_H
#include "JSystem/J3DGraphBase/J3DShape.h" #include "JSystem/J3DGraphBase/J3DShape.h"
#include "dolphin/types.h"
class JUTNameTab; class JUTNameTab;
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeTable { class J3DShapeTable {
public: public:
J3DShapeTable() { J3DShapeTable() {

View File

@ -3,7 +3,6 @@
#include "JSystem/J3DGraphAnimator/J3DCluster.h" #include "JSystem/J3DGraphAnimator/J3DCluster.h"
#include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h" #include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h"
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "dolphin/types.h" #include "dolphin/types.h"
class J3DModel; class J3DModel;
@ -11,6 +10,10 @@ class J3DAnmCluster;
class J3DClusterVertex; class J3DClusterVertex;
class JUTNameTab; class JUTNameTab;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DSkinNList { struct J3DSkinNList {
/* 8032C6E4 */ J3DSkinNList(); /* 8032C6E4 */ J3DSkinNList();
/* 8032C85C */ void calcSkin_VtxPosF32(f32 (*)[4], void*, void*); /* 8032C85C */ void calcSkin_VtxPosF32(f32 (*)[4], void*, void*);
@ -24,6 +27,10 @@ struct J3DSkinNList {
/* 0x12 */ u16 field_0x12; /* 0x12 */ u16 field_0x12;
}; // Size: 0x14 }; // Size: 0x14
/**
* @ingroup jsystem-j3d
*
*/
class J3DSkinDeform { class J3DSkinDeform {
public: public:
/* 8032C96C */ J3DSkinDeform(); /* 8032C96C */ J3DSkinDeform();
@ -68,6 +75,10 @@ private:
/* 0x24 */ J3DSkinNList* mSkinNList; /* 0x24 */ J3DSkinNList* mSkinNList;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DDeformer { class J3DDeformer {
public: public:
/* 8032E39C */ J3DDeformer(J3DDeformData*); /* 8032E39C */ J3DDeformer(J3DDeformData*);

View File

@ -2,7 +2,6 @@
#define J3DDRAWBUFFER_H #define J3DDRAWBUFFER_H
#include "JSystem/J3DGraphBase/J3DSys.h" #include "JSystem/J3DGraphBase/J3DSys.h"
#include "dolphin/types.h"
// matches debug // matches debug
inline f32 J3DCalcZValue(register MtxP m, register Vec v) { inline f32 J3DCalcZValue(register MtxP m, register Vec v) {
@ -37,6 +36,10 @@ class J3DShapePacket;
typedef int (J3DDrawBuffer::*sortFunc)(J3DMatPacket*); typedef int (J3DDrawBuffer::*sortFunc)(J3DMatPacket*);
typedef void (J3DDrawBuffer::*drawFunc)() const; typedef void (J3DDrawBuffer::*drawFunc)() const;
/**
* @ingroup jsystem-j3d
*
*/
class J3DDrawBuffer { class J3DDrawBuffer {
public: public:
enum EDrawType { enum EDrawType {

View File

@ -2,7 +2,6 @@
#define J3DGD_H #define J3DGD_H
#include "dolphin/gd/GDBase.h" #include "dolphin/gd/GDBase.h"
#include "dolphin/gx.h"
inline void J3DGDWrite_u8(u8 param) { inline void J3DGDWrite_u8(u8 param) {
__GDWrite(param); __GDWrite(param);

View File

@ -1,23 +1,34 @@
#ifndef J3DMATBLOCK_H #ifndef J3DMATBLOCK_H
#define J3DMATBLOCK_H #define J3DMATBLOCK_H
#include "JSystem/J3DGraphBase/J3DStruct.h"
#include "JSystem/J3DGraphBase/J3DTevs.h" #include "JSystem/J3DGraphBase/J3DTevs.h"
#include "JSystem/J3DGraphBase/J3DTexture.h" #include "JSystem/J3DGraphBase/J3DTexture.h"
#include "dolphin/types.h" #include "dolphin/types.h"
/**
* @ingroup jsystem-j3d
*
*/
struct J3DGXColorS10 : public GXColorS10 { struct J3DGXColorS10 : public GXColorS10 {
/* 8000E460 */ J3DGXColorS10() {} /* 8000E460 */ J3DGXColorS10() {}
J3DGXColorS10(J3DGXColorS10 const& other) { __memcpy(this, &other, sizeof(J3DGXColorS10)); } J3DGXColorS10(J3DGXColorS10 const& other) { __memcpy(this, &other, sizeof(J3DGXColorS10)); }
J3DGXColorS10(GXColorS10 const& color) : GXColorS10(color) {} J3DGXColorS10(GXColorS10 const& color) : GXColorS10(color) {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DGXColor : public GXColor { struct J3DGXColor : public GXColor {
/* 8000E538 */ J3DGXColor() {} /* 8000E538 */ J3DGXColor() {}
J3DGXColor(J3DGXColor const& other) { __memcpy(this, &other, sizeof(J3DGXColor)); } J3DGXColor(J3DGXColor const& other) { __memcpy(this, &other, sizeof(J3DGXColor)); }
J3DGXColor(GXColor const& color) : GXColor(color) {} J3DGXColor(GXColor const& color) : GXColor(color) {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DNBTScale : public J3DNBTScaleInfo { struct J3DNBTScale : public J3DNBTScaleInfo {
J3DNBTScale() {} J3DNBTScale() {}
J3DNBTScale(J3DNBTScaleInfo const& info) { J3DNBTScale(J3DNBTScaleInfo const& info) {
@ -29,6 +40,10 @@ struct J3DNBTScale : public J3DNBTScaleInfo {
extern const J3DNBTScaleInfo j3dDefaultNBTScaleInfo; extern const J3DNBTScaleInfo j3dDefaultNBTScaleInfo;
/**
* @ingroup jsystem-j3d
*
*/
class J3DTexGenBlock { class J3DTexGenBlock {
public: public:
/* 80317354 */ virtual void reset(J3DTexGenBlock*); /* 80317354 */ virtual void reset(J3DTexGenBlock*);
@ -72,6 +87,10 @@ struct J3DTexGenBlockNull : public J3DTexGenBlock {
/* 80332AD0 */ virtual ~J3DTexGenBlockNull(); // {} /* 80332AD0 */ virtual ~J3DTexGenBlockNull(); // {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DTexGenBlockPatched : public J3DTexGenBlock { class J3DTexGenBlockPatched : public J3DTexGenBlock {
public: public:
J3DTexGenBlockPatched() { J3DTexGenBlockPatched() {
@ -108,6 +127,10 @@ public:
/* 0x58 */ u32 mTexMtxOffset; /* 0x58 */ u32 mTexMtxOffset;
}; // Size: 0x5C }; // Size: 0x5C
/**
* @ingroup jsystem-j3d
*
*/
class J3DTexGenBlockBasic : public J3DTexGenBlockPatched { class J3DTexGenBlockBasic : public J3DTexGenBlockPatched {
public: public:
J3DTexGenBlockBasic() : mNBTScale(j3dDefaultNBTScaleInfo) { J3DTexGenBlockBasic() : mNBTScale(j3dDefaultNBTScaleInfo) {
@ -128,6 +151,10 @@ public:
/* 0x5C */ J3DNBTScale mNBTScale; /* 0x5C */ J3DNBTScale mNBTScale;
}; // Size: 0x6C }; // Size: 0x6C
/**
* @ingroup jsystem-j3d
*
*/
class J3DTexGenBlock4 : public J3DTexGenBlockPatched { class J3DTexGenBlock4 : public J3DTexGenBlockPatched {
public: public:
J3DTexGenBlock4() : mNBTScale(j3dDefaultNBTScaleInfo) { J3DTexGenBlock4() : mNBTScale(j3dDefaultNBTScaleInfo) {
@ -148,6 +175,10 @@ public:
/* 0x5C */ J3DNBTScale mNBTScale; /* 0x5C */ J3DNBTScale mNBTScale;
}; // Size: 0x6C }; // Size: 0x6C
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevBlock { class J3DTevBlock {
public: public:
/* 80317350 */ virtual void reset(J3DTevBlock*); /* 80317350 */ virtual void reset(J3DTevBlock*);
@ -210,6 +241,10 @@ protected:
/* 0x4 */ u32 mTexNoOffset; /* 0x4 */ u32 mTexNoOffset;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevBlockNull : public J3DTevBlock { class J3DTevBlockNull : public J3DTevBlock {
public: public:
J3DTevBlockNull() { initialize(); } J3DTevBlockNull() { initialize(); }
@ -221,6 +256,10 @@ public:
/* 80332A44 */ virtual ~J3DTevBlockNull(); // {} /* 80332A44 */ virtual ~J3DTevBlockNull(); // {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevBlockPatched : public J3DTevBlock { class J3DTevBlockPatched : public J3DTevBlock {
public: public:
J3DTevBlockPatched() { J3DTevBlockPatched() {
@ -283,6 +322,10 @@ public:
/* 0xD4 */ u32 mTevRegOffset; /* 0xD4 */ u32 mTevRegOffset;
}; // Size: 0xD8 }; // Size: 0xD8
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevBlock4 : public J3DTevBlock { class J3DTevBlock4 : public J3DTevBlock {
public: public:
J3DTevBlock4() { J3DTevBlock4() {
@ -355,6 +398,10 @@ public:
/* 0x90 */ u32 mTevRegOffset; /* 0x90 */ u32 mTevRegOffset;
}; // Size: 0x94 }; // Size: 0x94
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevBlock2 : public J3DTevBlock { class J3DTevBlock2 : public J3DTevBlock {
public: public:
J3DTevBlock2() { J3DTevBlock2() {
@ -427,6 +474,10 @@ public:
/* 0x68 */ u32 mTevRegOffset; /* 0x68 */ u32 mTevRegOffset;
}; // Size: 0x6C }; // Size: 0x6C
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevBlock16 : public J3DTevBlock { class J3DTevBlock16 : public J3DTevBlock {
public: public:
J3DTevBlock16() { J3DTevBlock16() {
@ -499,6 +550,10 @@ public:
/* 0x170 */ u32 mTevRegOffset; /* 0x170 */ u32 mTevRegOffset;
}; // Size: 0x174 }; // Size: 0x174
/**
* @ingroup jsystem-j3d
*
*/
class J3DTevBlock1 : public J3DTevBlock { class J3DTevBlock1 : public J3DTevBlock {
public: public:
J3DTevBlock1() { J3DTevBlock1() {
@ -551,6 +606,10 @@ inline u16 calcZModeID(u8 param_0, u8 param_1, u8 param_2) {
return param_1 * 2 + param_0 * 0x10 + param_2; return param_1 * 2 + param_0 * 0x10 + param_2;
} }
/**
* @ingroup jsystem-j3d
*
*/
struct J3DZModeInfo { struct J3DZModeInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1; /* 0x1 */ u8 field_0x1;
@ -558,6 +617,10 @@ struct J3DZModeInfo {
/* 0x3 */ u8 pad; /* 0x3 */ u8 pad;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DZMode { struct J3DZMode {
J3DZMode() : mZModeID(j3dDefaultZModeID) {} J3DZMode() : mZModeID(j3dDefaultZModeID) {}
J3DZMode(J3DZModeInfo const& info) : mZModeID(calcZModeID(info.field_0x0, info.field_0x1, info.field_0x2)) {} J3DZMode(J3DZModeInfo const& info) : mZModeID(calcZModeID(info.field_0x0, info.field_0x1, info.field_0x2)) {}
@ -569,6 +632,10 @@ struct J3DZMode {
/* 0x0 */ u16 mZModeID; /* 0x0 */ u16 mZModeID;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DBlendInfo { struct J3DBlendInfo {
void operator=(J3DBlendInfo const& other) { void operator=(J3DBlendInfo const& other) {
*(int*)&mType = *(int*)&other.mType; *(int*)&mType = *(int*)&other.mType;
@ -581,6 +648,10 @@ struct J3DBlendInfo {
extern const J3DBlendInfo j3dDefaultBlendInfo; extern const J3DBlendInfo j3dDefaultBlendInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DBlend : public J3DBlendInfo { struct J3DBlend : public J3DBlendInfo {
J3DBlend() : J3DBlendInfo(j3dDefaultBlendInfo) {} J3DBlend() : J3DBlendInfo(j3dDefaultBlendInfo) {}
J3DBlend(J3DBlendInfo const& info) : J3DBlendInfo(info) {} J3DBlend(J3DBlendInfo const& info) : J3DBlendInfo(info) {}
@ -588,12 +659,20 @@ struct J3DBlend : public J3DBlendInfo {
extern const J3DFogInfo j3dDefaultFogInfo; extern const J3DFogInfo j3dDefaultFogInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DFog : public J3DFogInfo { struct J3DFog : public J3DFogInfo {
J3DFog() { *(J3DFogInfo*)this = j3dDefaultFogInfo; } J3DFog() { *(J3DFogInfo*)this = j3dDefaultFogInfo; }
J3DFogInfo* getFogInfo() { return this; } J3DFogInfo* getFogInfo() { return this; }
void setFogInfo(J3DFogInfo info) { *(J3DFogInfo*)this = info; } void setFogInfo(J3DFogInfo info) { *(J3DFogInfo*)this = info; }
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAlphaCompInfo { struct J3DAlphaCompInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1; /* 0x1 */ u8 field_0x1;
@ -616,6 +695,10 @@ inline u32 calcAlphaCmpID(u32 param_1, u32 param_2, u32 param_3) {
// return param_1 * 0x20 + param_2 * 8 + param_3; // return param_1 * 0x20 + param_2 * 8 + param_3;
// } // }
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAlphaComp { struct J3DAlphaComp {
J3DAlphaComp() : mID(j3dDefaultAlphaCmpID), mRef0(0), mRef1(0) {} J3DAlphaComp() : mID(j3dDefaultAlphaCmpID), mRef0(0), mRef1(0) {}
J3DAlphaComp(u16 id) : mID(id), mRef0(0), mRef1(0) {} J3DAlphaComp(u16 id) : mID(id), mRef0(0), mRef1(0) {}
@ -641,6 +724,10 @@ struct J3DAlphaComp {
/* 0x03 */ u8 mRef1; /* 0x03 */ u8 mRef1;
}; // Size: 0x4 }; // Size: 0x4
/**
* @ingroup jsystem-j3d
*
*/
class J3DPEBlock { class J3DPEBlock {
public: public:
/* 80317348 */ virtual void reset(J3DPEBlock*); /* 80317348 */ virtual void reset(J3DPEBlock*);
@ -674,12 +761,20 @@ public:
virtual ~J3DPEBlock() {} virtual ~J3DPEBlock() {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DPEBlockNull : public J3DPEBlock { struct J3DPEBlockNull : public J3DPEBlock {
/* 803329A0 */ virtual void load(); // {} /* 803329A0 */ virtual void load(); // {}
/* 803329A4 */ virtual u32 getType(); // { return 'PENL'; } /* 803329A4 */ virtual u32 getType(); // { return 'PENL'; }
/* 803329B0 */ virtual ~J3DPEBlockNull(); // {} /* 803329B0 */ virtual ~J3DPEBlockNull(); // {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DPEBlockXlu : public J3DPEBlock { class J3DPEBlockXlu : public J3DPEBlock {
public: public:
/* 8031E98C */ virtual void load(); /* 8031E98C */ virtual void load();
@ -688,6 +783,10 @@ public:
/* 80323264 */ virtual ~J3DPEBlockXlu(); /* 80323264 */ virtual ~J3DPEBlockXlu();
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DPEBlockTexEdge : public J3DPEBlock { class J3DPEBlockTexEdge : public J3DPEBlock {
public: public:
/* 8031E6C8 */ virtual void load(); /* 8031E6C8 */ virtual void load();
@ -696,6 +795,10 @@ public:
/* 803232CC */ virtual ~J3DPEBlockTexEdge(); /* 803232CC */ virtual ~J3DPEBlockTexEdge();
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DPEBlockOpa : public J3DPEBlock { class J3DPEBlockOpa : public J3DPEBlock {
public: public:
/* 8031E408 */ virtual void load(); /* 8031E408 */ virtual void load();
@ -704,6 +807,10 @@ public:
/* 80323334 */ virtual ~J3DPEBlockOpa(); /* 80323334 */ virtual ~J3DPEBlockOpa();
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DPEBlockFull : public J3DPEBlock { class J3DPEBlockFull : public J3DPEBlock {
public: public:
J3DPEBlockFull() { J3DPEBlockFull() {
@ -750,6 +857,10 @@ public:
/* 0x3C */ u32 mFogOffset; /* 0x3C */ u32 mFogOffset;
}; // Size: 0x40 }; // Size: 0x40
/**
* @ingroup jsystem-j3d
*
*/
class J3DPEBlockFogOff : public J3DPEBlock { class J3DPEBlockFogOff : public J3DPEBlock {
public: public:
J3DPEBlockFogOff() { J3DPEBlockFogOff() {
@ -787,6 +898,10 @@ public:
/* 0x0F */ u8 mDither; /* 0x0F */ u8 mDither;
}; // Size: 0x10 }; // Size: 0x10
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTexCoordScaleInfo { struct J3DIndTexCoordScaleInfo {
/* 0x0 */ u8 mScaleS; /* 0x0 */ u8 mScaleS;
/* 0x1 */ u8 mScaleT; /* 0x1 */ u8 mScaleT;
@ -796,6 +911,10 @@ struct J3DIndTexCoordScaleInfo {
extern const J3DIndTexCoordScaleInfo j3dDefaultIndTexCoordScaleInfo; extern const J3DIndTexCoordScaleInfo j3dDefaultIndTexCoordScaleInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTexCoordScale : public J3DIndTexCoordScaleInfo { struct J3DIndTexCoordScale : public J3DIndTexCoordScaleInfo {
/* 8000E0E4 */ J3DIndTexCoordScale() : J3DIndTexCoordScaleInfo(j3dDefaultIndTexCoordScaleInfo) {} /* 8000E0E4 */ J3DIndTexCoordScale() : J3DIndTexCoordScaleInfo(j3dDefaultIndTexCoordScaleInfo) {}
J3DIndTexCoordScale(J3DIndTexCoordScaleInfo const& info) : J3DIndTexCoordScaleInfo(info) {} J3DIndTexCoordScale(J3DIndTexCoordScaleInfo const& info) : J3DIndTexCoordScaleInfo(info) {}
@ -804,12 +923,20 @@ struct J3DIndTexCoordScale : public J3DIndTexCoordScaleInfo {
extern J3DIndTexMtxInfo const j3dDefaultIndTexMtxInfo; extern J3DIndTexMtxInfo const j3dDefaultIndTexMtxInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTexMtx : public J3DIndTexMtxInfo { struct J3DIndTexMtx : public J3DIndTexMtxInfo {
/* 8000E0F0 */ J3DIndTexMtx() { *(J3DIndTexMtxInfo*)this = j3dDefaultIndTexMtxInfo; } /* 8000E0F0 */ J3DIndTexMtx() { *(J3DIndTexMtxInfo*)this = j3dDefaultIndTexMtxInfo; }
J3DIndTexMtx(J3DIndTexMtxInfo const& info) { *(J3DIndTexMtxInfo*)this = info; } J3DIndTexMtx(J3DIndTexMtxInfo const& info) { *(J3DIndTexMtxInfo*)this = info; }
/* 8000E064 */ ~J3DIndTexMtx() {} /* 8000E064 */ ~J3DIndTexMtx() {}
}; // Size: 0x1C }; // Size: 0x1C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTexOrderInfo { struct J3DIndTexOrderInfo {
/* 0x0 */ u8 mMap; /* 0x0 */ u8 mMap;
/* 0x1 */ u8 mCoord; /* 0x1 */ u8 mCoord;
@ -819,11 +946,19 @@ struct J3DIndTexOrderInfo {
extern const J3DIndTexOrderInfo j3dDefaultIndTexOrderNull; extern const J3DIndTexOrderInfo j3dDefaultIndTexOrderNull;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTexOrder : public J3DIndTexOrderInfo { struct J3DIndTexOrder : public J3DIndTexOrderInfo {
/* 8000E128 */ J3DIndTexOrder() : J3DIndTexOrderInfo(j3dDefaultIndTexOrderNull) {} /* 8000E128 */ J3DIndTexOrder() : J3DIndTexOrderInfo(j3dDefaultIndTexOrderNull) {}
J3DIndTexOrder(J3DIndTexOrderInfo const& info) : J3DIndTexOrderInfo(info) {} J3DIndTexOrder(J3DIndTexOrderInfo const& info) : J3DIndTexOrderInfo(info) {}
}; // Size: 0x04 }; // Size: 0x04
/**
* @ingroup jsystem-j3d
*
*/
class J3DIndBlock { class J3DIndBlock {
public: public:
/* 8031734C */ virtual void reset(J3DIndBlock*); /* 8031734C */ virtual void reset(J3DIndBlock*);
@ -845,6 +980,10 @@ public:
/* 8031726C */ virtual ~J3DIndBlock(); /* 8031726C */ virtual ~J3DIndBlock();
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DIndBlockNull : public J3DIndBlock { class J3DIndBlockNull : public J3DIndBlock {
public: public:
/* 803173A0 */ virtual void reset(J3DIndBlock*); /* 803173A0 */ virtual void reset(J3DIndBlock*);
@ -854,6 +993,10 @@ public:
/* 803173B0 */ virtual ~J3DIndBlockNull(); /* 803173B0 */ virtual ~J3DIndBlockNull();
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DIndBlockFull : public J3DIndBlock { class J3DIndBlockFull : public J3DIndBlock {
public: public:
J3DIndBlockFull() { J3DIndBlockFull() {
@ -885,6 +1028,10 @@ public:
/* 0x6C */ J3DIndTexCoordScale mIndTexCoordScale[4]; /* 0x6C */ J3DIndTexCoordScale mIndTexCoordScale[4];
}; // Size: 0x7C }; // Size: 0x7C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DColorChanInfo { struct J3DColorChanInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1; /* 0x1 */ u8 field_0x1;
@ -901,6 +1048,10 @@ extern const J3DColorChanInfo j3dDefaultColorChanInfo;
} */ } */
/**
* @ingroup jsystem-j3d
*
*/
struct J3DColorChan { struct J3DColorChan {
/* 8000E47C */ J3DColorChan() { /* 8000E47C */ J3DColorChan() {
setColorChanInfo(j3dDefaultColorChanInfo); setColorChanInfo(j3dDefaultColorChanInfo);
@ -940,6 +1091,10 @@ struct J3DColorChan {
/* 0x0 */ u16 mColorChanID; /* 0x0 */ u16 mColorChanID;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DColorBlock { class J3DColorBlock {
public: public:
/* 80317324 */ virtual void load(); /* 80317324 */ virtual void load();
@ -978,11 +1133,19 @@ public:
/* 80317138 */ virtual ~J3DColorBlock() {} /* 80317138 */ virtual ~J3DColorBlock() {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DColorBlockNull : public J3DColorBlock { struct J3DColorBlockNull : public J3DColorBlock {
/* 80332B2C */ virtual u32 getType(); // { return 'CLNL'; } /* 80332B2C */ virtual u32 getType(); // { return 'CLNL'; }
/* 80332B38 */ virtual ~J3DColorBlockNull(); // {} /* 80332B38 */ virtual ~J3DColorBlockNull(); // {}
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DColorBlockLightOn : public J3DColorBlock { class J3DColorBlockLightOn : public J3DColorBlock {
public: public:
J3DColorBlockLightOn() { J3DColorBlockLightOn() {
@ -1035,6 +1198,10 @@ public:
/* 0x48 */ u32 mColorChanOffset; /* 0x48 */ u32 mColorChanOffset;
}; // Size: 0x4C }; // Size: 0x4C
/**
* @ingroup jsystem-j3d
*
*/
class J3DColorBlockLightOff : public J3DColorBlock { class J3DColorBlockLightOff : public J3DColorBlock {
public: public:
J3DColorBlockLightOff() { J3DColorBlockLightOff() {
@ -1078,6 +1245,10 @@ public:
/* 0x1C */ u32 mColorChanOffset; /* 0x1C */ u32 mColorChanOffset;
}; // Size: 0x20 }; // Size: 0x20
/**
* @ingroup jsystem-j3d
*
*/
class J3DColorBlockAmbientOn : public J3DColorBlockLightOff { class J3DColorBlockAmbientOn : public J3DColorBlockLightOff {
public: public:
J3DColorBlockAmbientOn() { J3DColorBlockAmbientOn() {

View File

@ -1,131 +1,142 @@
#ifndef J3DMATERIAL_H #ifndef J3DMATERIAL_H
#define J3DMATERIAL_H #define J3DMATERIAL_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h" #include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphBase/J3DPacket.h" #include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DShape.h" #include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DTexture.h" #include "dolphin/types.h"
#include "dolphin/types.h"
class J3DJoint;
class J3DJoint; class J3DMaterialAnm;
class J3DMaterialAnm;
/**
class J3DMaterial { * @ingroup jsystem-j3d
public: *
/* 803157A0 */ static J3DColorBlock* createColorBlock(u32); */
/* 803159A0 */ static J3DTexGenBlock* createTexGenBlock(u32); class J3DMaterial {
/* 80315B04 */ static J3DTevBlock* createTevBlock(int); public:
/* 80315E78 */ static J3DIndBlock* createIndBlock(int); /* 803157A0 */ static J3DColorBlock* createColorBlock(u32);
/* 80315F60 */ static J3DPEBlock* createPEBlock(u32, u32); /* 803159A0 */ static J3DTexGenBlock* createTexGenBlock(u32);
/* 80316100 */ static u32 calcSizeColorBlock(u32); /* 80315B04 */ static J3DTevBlock* createTevBlock(int);
/* 80316150 */ static u32 calcSizeTexGenBlock(u32); /* 80315E78 */ static J3DIndBlock* createIndBlock(int);
/* 8031617C */ static u32 calcSizeTevBlock(int); /* 80315F60 */ static J3DPEBlock* createPEBlock(u32, u32);
/* 803161C4 */ static u32 calcSizeIndBlock(int); /* 80316100 */ static u32 calcSizeColorBlock(u32);
/* 803161D8 */ static u32 calcSizePEBlock(u32, u32); /* 80316150 */ static u32 calcSizeTexGenBlock(u32);
/* 80316240 */ void initialize(); /* 8031617C */ static u32 calcSizeTevBlock(int);
/* 80316290 */ u32 countDLSize(); /* 803161C4 */ static u32 calcSizeIndBlock(int);
/* 80316344 */ void makeDisplayList_private(J3DDisplayListObj*); /* 803161D8 */ static u32 calcSizePEBlock(u32, u32);
/* 80316AB0 */ void setCurrentMtx(); /* 80316240 */ void initialize();
/* 80316AC8 */ void calcCurrentMtx(); /* 80316290 */ u32 countDLSize();
/* 80316D68 */ void copy(J3DMaterial*); /* 80316344 */ void makeDisplayList_private(J3DDisplayListObj*);
/* 80316E90 */ s32 newSharedDisplayList(u32); /* 80316AB0 */ void setCurrentMtx();
/* 80316F24 */ s32 newSingleSharedDisplayList(u32); /* 80316AC8 */ void calcCurrentMtx();
/* 80316D68 */ void copy(J3DMaterial*);
/* 803169DC */ virtual void calc(f32 const (*)[4]); /* 80316E90 */ s32 newSharedDisplayList(u32);
/* 80316A54 */ virtual void calcDiffTexMtx(f32 const (*)[4]); /* 80316F24 */ s32 newSingleSharedDisplayList(u32);
/* 80316620 */ virtual void makeDisplayList();
/* 80316668 */ virtual void makeSharedDisplayList(); /* 803169DC */ virtual void calc(f32 const (*)[4]);
/* 8031668C */ virtual void load(); /* 80316A54 */ virtual void calcDiffTexMtx(f32 const (*)[4]);
/* 803166DC */ virtual void loadSharedDL(); /* 80316620 */ virtual void makeDisplayList();
/* 80316740 */ virtual void patch(); /* 80316668 */ virtual void makeSharedDisplayList();
/* 803167D8 */ virtual void diff(u32); /* 8031668C */ virtual void load();
/* 80316E14 */ virtual void reset(); /* 803166DC */ virtual void loadSharedDL();
/* 80316E70 */ virtual void change(); /* 80316740 */ virtual void patch();
/* 803167D8 */ virtual void diff(u32);
J3DMaterial() { initialize(); } /* 80316E14 */ virtual void reset();
~J3DMaterial() {} /* 80316E70 */ virtual void change();
J3DMaterial* getNext() const { return mNext; }
J3DShape* getShape() const { return mShape; } J3DMaterial() { initialize(); }
J3DTevBlock* getTevBlock() const { return mTevBlock; } ~J3DMaterial() {}
J3DColorBlock* getColorBlock() const { return mColorBlock; } J3DMaterial* getNext() const { return mNext; }
J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; } J3DShape* getShape() const { return mShape; }
J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; } J3DTevBlock* getTevBlock() const { return mTevBlock; }
J3DIndBlock* getIndBlock() const { return mIndBlock; } J3DColorBlock* getColorBlock() const { return mColorBlock; }
J3DShape* getShape() { return mShape; } J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; }
J3DJoint* getJoint() { return mJoint; } J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; }
J3DMaterialAnm* getMaterialAnm() const { J3DIndBlock* getIndBlock() const { return mIndBlock; }
if ((u32)mMaterialAnm < 0xC0000000) { J3DShape* getShape() { return mShape; }
return mMaterialAnm; J3DJoint* getJoint() { return mJoint; }
} else { J3DMaterialAnm* getMaterialAnm() const {
return NULL; if ((u32)mMaterialAnm < 0xC0000000) {
} return mMaterialAnm;
} } else {
J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); } return NULL;
u16 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); } }
GXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); } }
GXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); } J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); }
J3DFog* getFog() { return mPEBlock->getFog(); } u16 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); }
J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); } GXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); }
u16 getIndex() { return mIndex; } GXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); }
bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; } J3DFog* getFog() { return mPEBlock->getFog(); }
J3DPEBlock* getPEBlock() { return mPEBlock; } J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); }
void onInvalid() { mInvalid = 1; } u16 getIndex() { return mIndex; }
u32 getTexGenNum() const { return mTexGenBlock->getTexGenNum(); } bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; }
u8 getTevStageNum() const { return mTevBlock->getTevStageNum(); } J3DPEBlock* getPEBlock() { return mPEBlock; }
J3DTexCoord* getTexCoord(u32 idx) { return mTexGenBlock->getTexCoord(idx); } void onInvalid() { mInvalid = 1; }
u32 getTexGenNum() const { return mTexGenBlock->getTexGenNum(); }
void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); } u8 getTevStageNum() const { return mTevBlock->getTevStageNum(); }
void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); } J3DTexCoord* getTexCoord(u32 idx) { return mTexGenBlock->getTexCoord(idx); }
void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; }
void setCullMode(u8 i_mode) { mColorBlock->setCullMode(i_mode); } void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); }
void setTexMtx(u32 idx, J3DTexMtx* mtx) { mTexGenBlock->setTexMtx(idx, mtx); } void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); }
void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; }
public: void setCullMode(u8 i_mode) { mColorBlock->setCullMode(i_mode); }
/* 0x04 */ J3DMaterial* mNext; void setTexMtx(u32 idx, J3DTexMtx* mtx) { mTexGenBlock->setTexMtx(idx, mtx); }
/* 0x08 */ J3DShape* mShape;
/* 0x0C */ J3DJoint* mJoint; public:
/* 0x10 */ u32 mMaterialMode; /* 0x04 */ J3DMaterial* mNext;
/* 0x14 */ u16 mIndex; /* 0x08 */ J3DShape* mShape;
/* 0x18 */ u32 mInvalid; /* 0x0C */ J3DJoint* mJoint;
/* 0x1C */ u32 field_0x1c; /* 0x10 */ u32 mMaterialMode;
/* 0x20 */ u32 mDiffFlag; /* 0x14 */ u16 mIndex;
/* 0x24 */ J3DColorBlock* mColorBlock; /* 0x18 */ u32 mInvalid;
/* 0x28 */ J3DTexGenBlock* mTexGenBlock; /* 0x1C */ u32 field_0x1c;
/* 0x2C */ J3DTevBlock* mTevBlock; /* 0x20 */ u32 mDiffFlag;
/* 0x30 */ J3DIndBlock* mIndBlock; /* 0x24 */ J3DColorBlock* mColorBlock;
/* 0x34 */ J3DPEBlock* mPEBlock; /* 0x28 */ J3DTexGenBlock* mTexGenBlock;
/* 0x38 */ J3DMaterial* mpOrigMaterial; /* 0x2C */ J3DTevBlock* mTevBlock;
/* 0x3C */ J3DMaterialAnm* mMaterialAnm; /* 0x30 */ J3DIndBlock* mIndBlock;
/* 0x40 */ J3DCurrentMtx mCurrentMtx; /* 0x34 */ J3DPEBlock* mPEBlock;
/* 0x48 */ J3DDisplayListObj* mSharedDLObj; /* 0x38 */ J3DMaterial* mpOrigMaterial;
}; /* 0x3C */ J3DMaterialAnm* mMaterialAnm;
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
class J3DPatchedMaterial : public J3DMaterial { /* 0x48 */ J3DDisplayListObj* mSharedDLObj;
public: };
/* 80316FB8 */ void initialize();
/**
/* 80316FD8 */ virtual void makeDisplayList(); * @ingroup jsystem-j3d
/* 80316FDC */ virtual void makeSharedDisplayList(); *
/* 80316FE0 */ virtual void load(); */
/* 80316FFC */ virtual void loadSharedDL(); class J3DPatchedMaterial : public J3DMaterial {
/* 8031703C */ virtual void reset(); public:
/* 80317040 */ virtual void change(); /* 80316FB8 */ void initialize();
};
/* 80316FD8 */ virtual void makeDisplayList();
class J3DLockedMaterial : public J3DMaterial { /* 80316FDC */ virtual void makeSharedDisplayList();
public: /* 80316FE0 */ virtual void load();
J3DLockedMaterial() { initialize(); } /* 80316FFC */ virtual void loadSharedDL();
/* 80317044 */ void initialize(); /* 8031703C */ virtual void reset();
/* 80317040 */ virtual void change();
/* 803170D0 */ virtual void calc(f32 const (*)[4]); };
/* 80317064 */ virtual void makeDisplayList();
/* 80317068 */ virtual void makeSharedDisplayList(); /**
/* 8031706C */ virtual void load(); * @ingroup jsystem-j3d
/* 80317088 */ virtual void loadSharedDL(); *
/* 803170C8 */ virtual void patch(); */
/* 803170CC */ virtual void diff(u32); class J3DLockedMaterial : public J3DMaterial {
/* 803170D4 */ virtual void reset(); public:
/* 803170D8 */ virtual void change(); J3DLockedMaterial() { initialize(); }
}; /* 80317044 */ void initialize();
#endif /* J3DMATERIAL_H */ /* 803170D0 */ virtual void calc(f32 const (*)[4]);
/* 80317064 */ virtual void makeDisplayList();
/* 80317068 */ virtual void makeSharedDisplayList();
/* 8031706C */ virtual void load();
/* 80317088 */ virtual void loadSharedDL();
/* 803170C8 */ virtual void patch();
/* 803170CC */ virtual void diff(u32);
/* 803170D4 */ virtual void reset();
/* 803170D8 */ virtual void change();
};
#endif /* J3DMATERIAL_H */

View File

@ -3,7 +3,6 @@
#include "JSystem/J3DGraphBase/J3DSys.h" #include "JSystem/J3DGraphBase/J3DSys.h"
#include "dolphin/gd/GDBase.h" #include "dolphin/gd/GDBase.h"
#include "dolphin/types.h"
class J3DMatPacket; class J3DMatPacket;
@ -59,6 +58,10 @@ inline int calcDifferedBufferSize_TevStageDirectSize(int param_1) {
return param_1 * 5; return param_1 * 5;
} }
/**
* @ingroup jsystem-j3d
*
*/
class J3DDisplayListObj { class J3DDisplayListObj {
public: public:
J3DDisplayListObj() { J3DDisplayListObj() {
@ -90,6 +93,10 @@ public:
/* 0xC */ u32 mCapacity; /* 0xC */ u32 mCapacity;
}; // Size: 0x10 }; // Size: 0x10
/**
* @ingroup jsystem-j3d
*
*/
class J3DPacket { class J3DPacket {
public: public:
J3DPacket() { J3DPacket() {
@ -121,6 +128,10 @@ public:
/* 0x0C */ void* mpUserData; /* 0x0C */ void* mpUserData;
}; // Size: 0x10 }; // Size: 0x10
/**
* @ingroup jsystem-j3d
*
*/
class J3DDrawPacket : public J3DPacket { class J3DDrawPacket : public J3DPacket {
public: public:
J3DDrawPacket(); J3DDrawPacket();
@ -156,6 +167,10 @@ public:
/* 0x24 */ J3DTexMtxObj* mpTexMtxObj; /* 0x24 */ J3DTexMtxObj* mpTexMtxObj;
}; // Size: 0x28 }; // Size: 0x28
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapePacket : public J3DDrawPacket { class J3DShapePacket : public J3DDrawPacket {
public: public:
J3DShapePacket(); J3DShapePacket();
@ -184,6 +199,10 @@ public:
/* 0x38 */ J3DModel* mpModel; /* 0x38 */ J3DModel* mpModel;
}; // Size: 0x3C }; // Size: 0x3C
/**
* @ingroup jsystem-j3d
*
*/
class J3DMatPacket : public J3DDrawPacket { class J3DMatPacket : public J3DDrawPacket {
public: public:
J3DMatPacket(); J3DMatPacket();

View File

@ -1,158 +1,169 @@
#ifndef J3DSHAPE_H #ifndef J3DSHAPE_H
#define J3DSHAPE_H #define J3DSHAPE_H
#include "JSystem/J3DGraphBase/J3DShapeDraw.h" #include "JSystem/J3DGraphBase/J3DShapeDraw.h"
#include "JSystem/J3DGraphBase/J3DShapeMtx.h" #include "JSystem/J3DGraphBase/J3DShapeMtx.h"
#include "dolphin/gx.h" #include "dolphin/gx.h"
#include "dolphin/types.h"
/**
class J3DCurrentMtxInfo { * @ingroup jsystem-j3d
public: *
u32 mMtxIdxRegA; */
u32 mMtxIdxRegB; class J3DCurrentMtxInfo {
}; public:
u32 mMtxIdxRegA;
static inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) { u32 mMtxIdxRegB;
GXWGFifo.u8 = GX_CMD_LOAD_CP_REG; };
GXWGFifo.u8 = cmd;
GXWGFifo.u32 = param; static inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) {
} GXWGFifo.u8 = GX_CMD_LOAD_CP_REG;
GXWGFifo.u8 = cmd;
static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) { GXWGFifo.u32 = param;
GXWGFifo.u8 = GX_CMD_LOAD_XF_REG; }
GXWGFifo.u16 = (len - 1);
GXWGFifo.u16 = cmd; static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
} GXWGFifo.u8 = GX_CMD_LOAD_XF_REG;
GXWGFifo.u16 = (len - 1);
class J3DCurrentMtx : public J3DCurrentMtxInfo { GXWGFifo.u16 = cmd;
public: }
J3DCurrentMtx() {
mMtxIdxRegA = 0x3cf3cf00; /**
mMtxIdxRegB = 0x00f3cf3c; * @ingroup jsystem-j3d
} *
*/
J3DCurrentMtx& operator=(J3DCurrentMtxInfo const& info) { class J3DCurrentMtx : public J3DCurrentMtxInfo {
mMtxIdxRegA = info.mMtxIdxRegA; public:
mMtxIdxRegB = info.mMtxIdxRegB; J3DCurrentMtx() {
return *this; mMtxIdxRegA = 0x3cf3cf00;
} mMtxIdxRegB = 0x00f3cf3c;
}
u32 getMtxIdxRegA() const { return mMtxIdxRegA; }
u32 getMtxIdxRegB() const { return mMtxIdxRegB; } J3DCurrentMtx& operator=(J3DCurrentMtxInfo const& info) {
mMtxIdxRegA = info.mMtxIdxRegA;
inline void load() const { mMtxIdxRegB = info.mMtxIdxRegB;
J3DFifoWriteCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A return *this;
J3DFifoWriteCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B }
J3DFifoWriteXFCmd(0x1018, 2);
GXWGFifo.u32 = getMtxIdxRegA(); u32 getMtxIdxRegA() const { return mMtxIdxRegA; }
GXWGFifo.u32 = getMtxIdxRegB(); u32 getMtxIdxRegB() const { return mMtxIdxRegB; }
}
inline void load() const {
void setCurrentTexMtx(u8 param_1, u8 param_2, u8 param_3, u8 param_4, J3DFifoWriteCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A
u8 param_5, u8 param_6, u8 param_7, u8 param_8) { J3DFifoWriteCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B
mMtxIdxRegA = ((param_1 & 0xff) << 6) | (param_2 << 0xc)| (param_3 << 0x12) | (param_4 << 0x18); J3DFifoWriteXFCmd(0x1018, 2);
mMtxIdxRegB = (param_5) | param_6 << 6 | param_7 << 0xc | param_8 << 0x12; GXWGFifo.u32 = getMtxIdxRegA();
} GXWGFifo.u32 = getMtxIdxRegB();
}; }
class J3DMaterial; void setCurrentTexMtx(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
class J3DVertexData; u8 param_5, u8 param_6, u8 param_7, u8 param_8) {
class J3DDrawMtxData; mMtxIdxRegA = ((param_1 & 0xff) << 6) | (param_2 << 0xc)| (param_3 << 0x12) | (param_4 << 0x18);
mMtxIdxRegB = (param_5) | param_6 << 6 | param_7 << 0xc | param_8 << 0x12;
enum J3DShpFlag { }
J3DShpFlag_Visible = 0x0001, };
J3DShpFlag_SkinPosCpu = 0x0004,
J3DShpFlag_SkinNrmCpu = 0x0008, class J3DMaterial;
J3DShpFlag_Hidden = 0x0010, class J3DVertexData;
J3DShpFlag_EnableLod = 0x0100, class J3DDrawMtxData;
J3DShpFlag_NoMtx = 0x0200,
}; enum J3DShpFlag {
J3DShpFlag_Visible = 0x0001,
class J3DShape { J3DShpFlag_SkinPosCpu = 0x0004,
public: J3DShpFlag_SkinNrmCpu = 0x0008,
J3DShape() { J3DShpFlag_Hidden = 0x0010,
initialize(); J3DShpFlag_EnableLod = 0x0100,
} J3DShpFlag_NoMtx = 0x0200,
};
enum {
kVcdVatDLSize = 0xC0, /**
}; * @ingroup jsystem-j3d
*
/* 80314B48 */ void initialize(); */
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32); class J3DShape {
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr); public:
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]); J3DShape() {
/* 80314E28 */ u32 countBumpMtxNum() const; initialize();
/* 80314EEC */ void loadVtxArray() const; }
/* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
/* 80314F98 */ void makeVtxArrayCmd(); enum {
/* 80315260 */ void makeVcdVatCmd(); kVcdVatDLSize = 0xC0,
/* 80315300 */ void loadPreDrawSetting() const; };
/* 80315398 */ void setArrayAndBindPipeline() const;
/* 80314B48 */ void initialize();
/* 803155E0 */ virtual void draw() const; /* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
/* 8031544C */ virtual void drawFast() const; /* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
/* 80315628 */ virtual void simpleDraw() const; /* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
/* 803156AC */ virtual void simpleDrawCache() const; /* 80314E28 */ u32 countBumpMtxNum() const;
/* 80314EEC */ void loadVtxArray() const;
void onFlag(u32 flag) { mFlags |= flag; } /* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
void offFlag(u32 flag) { mFlags &= ~flag; } /* 80314F98 */ void makeVtxArrayCmd();
bool checkFlag(u32 flag) const { return !!(mFlags & flag); } /* 80315260 */ void makeVcdVatCmd();
void setDrawMtxDataPointer(J3DDrawMtxData* pMtxData) { mDrawMtxData = pMtxData; } /* 80315300 */ void loadPreDrawSetting() const;
void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; } /* 80315398 */ void setArrayAndBindPipeline() const;
void* getVcdVatCmd() const { return mVcdVatCmd; }
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = (u8*)pVatCmd; } /* 803155E0 */ virtual void draw() const;
void show() { offFlag(J3DShpFlag_Visible); } /* 8031544C */ virtual void drawFast() const;
void hide() { onFlag(J3DShpFlag_Visible); } /* 80315628 */ virtual void simpleDraw() const;
void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; } /* 803156AC */ virtual void simpleDrawCache() const;
void setCurrentMtx(J3DCurrentMtx& mtx) { mCurrentMtx = mtx; }
void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; } void onFlag(u32 flag) { mFlags |= flag; }
void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; } void offFlag(u32 flag) { mFlags &= ~flag; }
void setNrmMtx(Mtx33** pNrmMtx) { mNrmMtx = pNrmMtx; } bool checkFlag(u32 flag) const { return !!(mFlags & flag); }
void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; } void setDrawMtxDataPointer(J3DDrawMtxData* pMtxData) { mDrawMtxData = pMtxData; }
bool getNBTFlag() const { return mHasNBT; } void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
u32 getBumpMtxOffset() const { return mBumpMtxOffset; } void* getVcdVatCmd() const { return mVcdVatCmd; }
GXVtxDescList* getVtxDesc() const { return mVtxDesc; } void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = (u8*)pVatCmd; }
void show() { offFlag(J3DShpFlag_Visible); }
J3DMaterial* getMaterial() const { return mMaterial; } void hide() { onFlag(J3DShpFlag_Visible); }
u32 getIndex() const { return mIndex; } void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; }
u32 getPipeline() const { return (mFlags >> 2) & 0x07; } void setCurrentMtx(J3DCurrentMtx& mtx) { mCurrentMtx = mtx; }
u32 getTexMtxLoadType() const { return mFlags & 0xF000; } void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; }
u32 getMtxGroupNum() const { return mMtxGroupNum; } void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; }
J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; } void setNrmMtx(Mtx33** pNrmMtx) { mNrmMtx = pNrmMtx; }
J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; } void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; }
Vec* getMin() { return &mMin; } bool getNBTFlag() const { return mHasNBT; }
Vec* getMax() { return &mMax; } u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
GXVtxDescList* getVtxDesc() const { return mVtxDesc; }
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
J3DMaterial* getMaterial() const { return mMaterial; }
static void* sOldVcdVatCmd; u32 getIndex() const { return mIndex; }
u32 getPipeline() const { return (mFlags >> 2) & 0x07; }
private: u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
friend struct J3DShapeFactory; u32 getMtxGroupNum() const { return mMtxGroupNum; }
friend class J3DJointTree; J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; }
J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; }
/* 0x04 */ J3DMaterial* mMaterial; Vec* getMin() { return &mMin; }
/* 0x08 */ u16 mIndex; Vec* getMax() { return &mMax; }
/* 0x0A */ u16 mMtxGroupNum;
/* 0x0C */ u32 mFlags; static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
/* 0x10 */ f32 mRadius;
/* 0x14 */ Vec mMin; static void* sOldVcdVatCmd;
/* 0x20 */ Vec mMax;
/* 0x2C */ u8* mVcdVatCmd; private:
/* 0x30 */ GXVtxDescList* mVtxDesc; friend struct J3DShapeFactory;
/* 0x34 */ bool mHasNBT; friend class J3DJointTree;
/* 0x38 */ J3DShapeMtx** mShapeMtx;
/* 0x3C */ J3DShapeDraw** mShapeDraw; /* 0x04 */ J3DMaterial* mMaterial;
/* 0x40 */ J3DCurrentMtx mCurrentMtx; /* 0x08 */ u16 mIndex;
/* 0x48 */ bool mHasPNMTXIdx; /* 0x0A */ u16 mMtxGroupNum;
/* 0x4C */ J3DVertexData* mVertexData; /* 0x0C */ u32 mFlags;
/* 0x50 */ J3DDrawMtxData* mDrawMtxData; /* 0x10 */ f32 mRadius;
/* 0x54 */ u8* mScaleFlagArray; /* 0x14 */ Vec mMin;
/* 0x58 */ Mtx** mDrawMtx; /* 0x20 */ Vec mMax;
/* 0x5C */ Mtx33** mNrmMtx; /* 0x2C */ u8* mVcdVatCmd;
/* 0x60 */ u32* mCurrentViewNo; /* 0x30 */ GXVtxDescList* mVtxDesc;
/* 0x64 */ u32 mBumpMtxOffset; /* 0x34 */ bool mHasNBT;
}; /* 0x38 */ J3DShapeMtx** mShapeMtx;
/* 0x3C */ J3DShapeDraw** mShapeDraw;
#endif /* J3DSHAPE_H */ /* 0x40 */ J3DCurrentMtx mCurrentMtx;
/* 0x48 */ bool mHasPNMTXIdx;
/* 0x4C */ J3DVertexData* mVertexData;
/* 0x50 */ J3DDrawMtxData* mDrawMtxData;
/* 0x54 */ u8* mScaleFlagArray;
/* 0x58 */ Mtx** mDrawMtx;
/* 0x5C */ Mtx33** mNrmMtx;
/* 0x60 */ u32* mCurrentViewNo;
/* 0x64 */ u32 mBumpMtxOffset;
};
#endif /* J3DSHAPE_H */

View File

@ -3,6 +3,10 @@
#include "dolphin/types.h" #include "dolphin/types.h"
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeDraw { class J3DShapeDraw {
public: public:
/* 80314924 */ u32 countVertex(u32); /* 80314924 */ u32 countVertex(u32);

View File

@ -6,6 +6,10 @@
class J3DTexMtx; class J3DTexMtx;
class J3DTexGenBlock; class J3DTexGenBlock;
/**
* @ingroup jsystem-j3d
*
*/
class J3DTexMtxObj { class J3DTexMtxObj {
public: public:
Mtx& getMtx(u16 idx) { return mpTexMtx[idx]; } Mtx& getMtx(u16 idx) { return mpTexMtx[idx]; }
@ -17,6 +21,10 @@ public:
/* 0x08 */ u16 mTexMtxNum; /* 0x08 */ u16 mTexMtxNum;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DDifferedTexMtx { class J3DDifferedTexMtx {
public: public:
/* 8031322C */ static void loadExecute(f32 const (*)[4]); /* 8031322C */ static void loadExecute(f32 const (*)[4]);
@ -33,6 +41,10 @@ public:
class J3DShapeMtx; class J3DShapeMtx;
typedef void (J3DShapeMtx::*J3DShapeMtx_LoadFunc)(int, u16) const; typedef void (J3DShapeMtx::*J3DShapeMtx_LoadFunc)(int, u16) const;
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeMtx { class J3DShapeMtx {
public: public:
J3DShapeMtx(u16 useMtxIndex) J3DShapeMtx(u16 useMtxIndex)
@ -71,6 +83,10 @@ protected:
class J3DShapeMtxConcatView; class J3DShapeMtxConcatView;
typedef void (J3DShapeMtxConcatView::*J3DShapeMtxConcatView_LoadFunc)(int, u16) const; typedef void (J3DShapeMtxConcatView::*J3DShapeMtxConcatView_LoadFunc)(int, u16) const;
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeMtxConcatView : public J3DShapeMtx { class J3DShapeMtxConcatView : public J3DShapeMtx {
public: public:
J3DShapeMtxConcatView(u16 useMtxIndex) J3DShapeMtxConcatView(u16 useMtxIndex)
@ -94,6 +110,10 @@ public:
static MtxP sMtxPtrTbl[2]; static MtxP sMtxPtrTbl[2];
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView { class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView {
public: public:
J3DShapeMtxYBBoardConcatView(u16 useMtxIndex) J3DShapeMtxYBBoardConcatView(u16 useMtxIndex)
@ -105,6 +125,10 @@ public:
/* 803143E4 */ virtual void load() const; /* 803143E4 */ virtual void load() const;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView { class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView {
public: public:
J3DShapeMtxBBoardConcatView(u16 useMtxIndex) J3DShapeMtxBBoardConcatView(u16 useMtxIndex)
@ -116,6 +140,10 @@ public:
/* 803142D4 */ virtual void load() const; /* 803142D4 */ virtual void load() const;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeMtxMulti : public J3DShapeMtx { class J3DShapeMtxMulti : public J3DShapeMtx {
public: public:
J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable) J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
@ -136,6 +164,10 @@ private:
/* 0xC */ u16* mUseMtxIndexTable; /* 0xC */ u16* mUseMtxIndexTable;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DShapeMtxMultiConcatView : public J3DShapeMtxConcatView { class J3DShapeMtxMultiConcatView : public J3DShapeMtxConcatView {
public: public:
J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable) J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)

View File

@ -3,9 +3,12 @@
#include "dolphin/gx/GXStruct.h" #include "dolphin/gx/GXStruct.h"
#include "dolphin/mtx.h" #include "dolphin/mtx.h"
#include "dolphin/mtx/mtx44.h"
#include "dolphin/mtx/vec.h" #include "dolphin/mtx/vec.h"
/**
* @ingroup jsystem-j3d
*
*/
class J3DLightInfo { class J3DLightInfo {
public: public:
/* 803256C4 */ J3DLightInfo& operator=(J3DLightInfo const&); /* 803256C4 */ J3DLightInfo& operator=(J3DLightInfo const&);
@ -19,6 +22,10 @@ public:
extern "C" extern J3DLightInfo const j3dDefaultLightInfo; extern "C" extern J3DLightInfo const j3dDefaultLightInfo;
/**
* @ingroup jsystem-j3d
*
*/
class J3DLightObj { class J3DLightObj {
public: public:
/* 80018C0C */ J3DLightObj() { mInfo = j3dDefaultLightInfo; } /* 80018C0C */ J3DLightObj() { mInfo = j3dDefaultLightInfo; }
@ -34,6 +41,10 @@ public:
/* 0x34 */ GXLightObj mLightObj; /* 0x34 */ GXLightObj mLightObj;
}; // Size = 0x74 }; // Size = 0x74
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTextureSRTInfo { struct J3DTextureSRTInfo {
/* 0x00 */ f32 mScaleX; /* 0x00 */ f32 mScaleX;
/* 0x04 */ f32 mScaleY; /* 0x04 */ f32 mScaleY;
@ -60,6 +71,10 @@ struct J3DTextureSRTInfo {
} }
}; // Size: 0x14 }; // Size: 0x14
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTexMtxInfo { struct J3DTexMtxInfo {
/* 80325718 */ J3DTexMtxInfo& operator=(J3DTexMtxInfo const&); /* 80325718 */ J3DTexMtxInfo& operator=(J3DTexMtxInfo const&);
/* 80325794 */ void setEffectMtx(Mtx); /* 80325794 */ void setEffectMtx(Mtx);
@ -73,12 +88,20 @@ struct J3DTexMtxInfo {
/* 0x24 */ Mtx44 mEffectMtx; /* 0x24 */ Mtx44 mEffectMtx;
}; // Size: 0x64 }; // Size: 0x64
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTexMtxInfo { struct J3DIndTexMtxInfo {
J3DIndTexMtxInfo& operator=(J3DIndTexMtxInfo const&); J3DIndTexMtxInfo& operator=(J3DIndTexMtxInfo const&);
/* 0x00 */ Mtx23 field_0x0; /* 0x00 */ Mtx23 field_0x0;
/* 0x18 */ u8 field_0x18; /* 0x18 */ u8 field_0x18;
}; // Size: 0x1C }; // Size: 0x1C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DFogInfo { struct J3DFogInfo {
/* 80325800 */ J3DFogInfo& operator=(J3DFogInfo const&); /* 80325800 */ J3DFogInfo& operator=(J3DFogInfo const&);
@ -93,6 +116,10 @@ struct J3DFogInfo {
/* 0x18 */ GXFogAdjTable field_0x18; /* 0x18 */ GXFogAdjTable field_0x18;
}; // Size: 0x2C }; // Size: 0x2C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DNBTScaleInfo { struct J3DNBTScaleInfo {
/* 8032587C */ J3DNBTScaleInfo& operator=(J3DNBTScaleInfo const&); /* 8032587C */ J3DNBTScaleInfo& operator=(J3DNBTScaleInfo const&);

View File

@ -2,7 +2,6 @@
#define J3DSYS_H #define J3DSYS_H
#include "dolphin/gx.h" #include "dolphin/gx.h"
#include "dolphin/types.h"
// Perhaps move to a new J3DEnum.h? // Perhaps move to a new J3DEnum.h?
enum J3DError { enum J3DError {
@ -23,6 +22,10 @@ class J3DShape;
class J3DDrawBuffer; class J3DDrawBuffer;
class J3DTexture; class J3DTexture;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTexCoordScaleInfo { struct J3DTexCoordScaleInfo {
/* 0x0 */ u16 field_0x00; /* 0x0 */ u16 field_0x00;
/* 0x2 */ u16 field_0x02; /* 0x2 */ u16 field_0x02;
@ -36,6 +39,10 @@ enum J3DSysFlag {
J3DSysFlag_PostTexMtx = 0x40000000, J3DSysFlag_PostTexMtx = 0x40000000,
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DSys { struct J3DSys {
/* 0x000 */ Mtx mViewMtx; /* 0x000 */ Mtx mViewMtx;
/* 0x030 */ J3DMtxCalc* mCurrentMtxCalc; /* 0x030 */ J3DMtxCalc* mCurrentMtxCalc;

View File

@ -3,6 +3,10 @@
#include "dolphin/types.h" #include "dolphin/types.h"
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTevStageInfo { struct J3DTevStageInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 mTevColorOp; /* 0x1 */ u8 mTevColorOp;
@ -28,6 +32,10 @@ struct J3DTevStageInfo {
extern J3DTevStageInfo const j3dDefaultTevStageInfo; extern J3DTevStageInfo const j3dDefaultTevStageInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTevSwapModeTableInfo { struct J3DTevSwapModeTableInfo {
/* 0x0 */ u8 field_0x0; /* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1; /* 0x1 */ u8 field_0x1;
@ -37,6 +45,10 @@ struct J3DTevSwapModeTableInfo {
extern const J3DTevSwapModeTableInfo j3dDefaultTevSwapModeTable; extern const J3DTevSwapModeTableInfo j3dDefaultTevSwapModeTable;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTevSwapModeInfo { struct J3DTevSwapModeInfo {
/* 0x0 */ u8 mRasSel; /* 0x0 */ u8 mRasSel;
/* 0x1 */ u8 mTexSel; /* 0x1 */ u8 mTexSel;
@ -46,6 +58,10 @@ struct J3DTevSwapModeInfo {
extern J3DTevSwapModeInfo const j3dDefaultTevSwapMode; extern J3DTevSwapModeInfo const j3dDefaultTevSwapMode;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTevStage { struct J3DTevStage {
/* 8000E230 */ J3DTevStage(); /* 8000E230 */ J3DTevStage();
void setTevColorOp(u8 param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5) { void setTevColorOp(u8 param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5) {
@ -120,6 +136,10 @@ struct J3DTevStage {
/* 0x7 */ u8 mTevSwapModeInfo; /* 0x7 */ u8 mTevSwapModeInfo;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTevStageInfo { struct J3DIndTevStageInfo {
/* 0x0 */ u8 mIndStage; /* 0x0 */ u8 mIndStage;
/* 0x1 */ u8 mIndFormat; /* 0x1 */ u8 mIndFormat;
@ -135,6 +155,10 @@ struct J3DIndTevStageInfo {
extern J3DIndTevStageInfo const j3dDefaultIndTevStageInfo; extern J3DIndTevStageInfo const j3dDefaultIndTevStageInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndTevStage { struct J3DIndTevStage {
/* 8000E14C */ J3DIndTevStage() : mInfo(0) { setIndTevStageInfo(j3dDefaultIndTevStageInfo); } /* 8000E14C */ J3DIndTevStage() : mInfo(0) { setIndTevStageInfo(j3dDefaultIndTevStageInfo); }
J3DIndTevStage(J3DIndTevStageInfo const& info) : mInfo(0) { setIndTevStageInfo(info); } J3DIndTevStage(J3DIndTevStageInfo const& info) : mInfo(0) { setIndTevStageInfo(info); }
@ -162,6 +186,10 @@ struct J3DIndTevStage {
/* 0x0 */ u32 mInfo; /* 0x0 */ u32 mInfo;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTevOrderInfo { struct J3DTevOrderInfo {
void operator=(const J3DTevOrderInfo& other) { void operator=(const J3DTevOrderInfo& other) {
*(u32*) this = *(u32*)&other; *(u32*) this = *(u32*)&other;
@ -175,6 +203,10 @@ struct J3DTevOrderInfo {
extern const J3DTevOrderInfo j3dDefaultTevOrderInfoNull; extern const J3DTevOrderInfo j3dDefaultTevOrderInfoNull;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTevOrder : public J3DTevOrderInfo { struct J3DTevOrder : public J3DTevOrderInfo {
/* 8000E140 */ J3DTevOrder() : J3DTevOrderInfo(j3dDefaultTevOrderInfoNull) {} /* 8000E140 */ J3DTevOrder() : J3DTevOrderInfo(j3dDefaultTevOrderInfoNull) {}
J3DTevOrder(const J3DTevOrderInfo& info) : J3DTevOrderInfo(info) {} J3DTevOrder(const J3DTevOrderInfo& info) : J3DTevOrderInfo(info) {}
@ -182,6 +214,10 @@ struct J3DTevOrder : public J3DTevOrderInfo {
u8 getTexMap() { return mTexMap; } u8 getTexMap() { return mTexMap; }
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTevSwapModeTable { struct J3DTevSwapModeTable {
/* 8000E134 */ J3DTevSwapModeTable(); /* 8000E134 */ J3DTevSwapModeTable();
J3DTevSwapModeTable(J3DTevSwapModeTableInfo const& info) { J3DTevSwapModeTable(J3DTevSwapModeTableInfo const& info) {

View File

@ -1,92 +1,107 @@
#ifndef J3DTEXTURE_H #ifndef J3DTEXTURE_H
#define J3DTEXTURE_H #define J3DTEXTURE_H
#include "JSystem/J3DGraphBase/J3DStruct.h" #include "JSystem/J3DGraphBase/J3DStruct.h"
#include "JSystem/JUtility/JUTTexture.h" #include "JSystem/JUtility/JUTTexture.h"
#include "dolphin/mtx.h" #include "dolphin/types.h"
#include "dolphin/types.h"
/**
class J3DTexture { * @ingroup jsystem-j3d
private: *
/* 0x0 */ u16 mNum; */
/* 0x2 */ u16 field_0x2; class J3DTexture {
/* 0x4 */ ResTIMG* mpRes; private:
/* 0x0 */ u16 mNum;
public: /* 0x2 */ u16 field_0x2;
J3DTexture(u16 num, ResTIMG* res) : mNum(num), field_0x2(0), mpRes(res) {} /* 0x4 */ ResTIMG* mpRes;
/* 8031204C */ void loadGX(u16, _GXTexMapID) const;
/* 803121A4 */ void entryNum(u16); public:
/* 8031221C */ void addResTIMG(u16, ResTIMG const*); J3DTexture(u16 num, ResTIMG* res) : mNum(num), field_0x2(0), mpRes(res) {}
/* 803366A4 */ virtual ~J3DTexture() {} /* 8031204C */ void loadGX(u16, _GXTexMapID) const;
/* 803121A4 */ void entryNum(u16);
u16 getNum() const { return mNum; } /* 8031221C */ void addResTIMG(u16, ResTIMG const*);
ResTIMG* getResTIMG(u16 entry) const { return &mpRes[entry]; } /* 803366A4 */ virtual ~J3DTexture() {}
void setResTIMG(u16 entry, const ResTIMG& timg) {
mpRes[entry] = timg; u16 getNum() const { return mNum; }
mpRes[entry].imageOffset = ((mpRes[entry].imageOffset + (u32)&timg - (u32)(mpRes + entry))); ResTIMG* getResTIMG(u16 entry) const { return &mpRes[entry]; }
mpRes[entry].paletteOffset = ((mpRes[entry].paletteOffset + (u32)&timg - (u32)(mpRes + entry))); void setResTIMG(u16 entry, const ResTIMG& timg) {
} mpRes[entry] = timg;
}; mpRes[entry].imageOffset = ((mpRes[entry].imageOffset + (u32)&timg - (u32)(mpRes + entry)));
mpRes[entry].paletteOffset = ((mpRes[entry].paletteOffset + (u32)&timg - (u32)(mpRes + entry)));
extern J3DTexMtxInfo const j3dDefaultTexMtxInfo; }
};
class J3DTexMtx {
public: extern J3DTexMtxInfo const j3dDefaultTexMtxInfo;
J3DTexMtx() {
mTexMtxInfo = j3dDefaultTexMtxInfo; /**
} * @ingroup jsystem-j3d
J3DTexMtx(const J3DTexMtxInfo& info) { *
mTexMtxInfo = info; */
} class J3DTexMtx {
/* 803238C4 */ void load(u32) const; public:
/* 80323900 */ void calc(const Mtx); J3DTexMtx() {
/* 80323920 */ void calcTexMtx(const Mtx); mTexMtxInfo = j3dDefaultTexMtxInfo;
/* 80323C0C */ void calcPostTexMtx(const Mtx); }
/* 80324358 */ void loadTexMtx(u32) const; J3DTexMtx(const J3DTexMtxInfo& info) {
/* 803243BC */ void loadPostTexMtx(u32) const; mTexMtxInfo = info;
}
J3DTexMtxInfo& getTexMtxInfo() { return mTexMtxInfo; } /* 803238C4 */ void load(u32) const;
Mtx& getMtx() { return mMtx; } /* 80323900 */ void calc(const Mtx);
void setEffectMtx(Mtx effectMtx) { mTexMtxInfo.setEffectMtx(effectMtx); } /* 80323920 */ void calcTexMtx(const Mtx);
/* 80323C0C */ void calcPostTexMtx(const Mtx);
private: /* 80324358 */ void loadTexMtx(u32) const;
/* 0x00 */ J3DTexMtxInfo mTexMtxInfo; /* 803243BC */ void loadPostTexMtx(u32) const;
/* 0x64 */ Mtx mMtx;
}; // Size: 0x94 J3DTexMtxInfo& getTexMtxInfo() { return mTexMtxInfo; }
Mtx& getMtx() { return mMtx; }
struct J3DTexCoordInfo { void setEffectMtx(Mtx effectMtx) { mTexMtxInfo.setEffectMtx(effectMtx); }
/* 0x0 */ u8 mTexGenType;
/* 0x1 */ u8 mTexGenSrc; private:
/* 0x2 */ u8 mTexGenMtx; /* 0x00 */ J3DTexMtxInfo mTexMtxInfo;
/* 0x3 */ u8 pad; /* 0x64 */ Mtx mMtx;
}; }; // Size: 0x94
extern J3DTexCoordInfo const j3dDefaultTexCoordInfo[8]; /**
* @ingroup jsystem-j3d
struct J3DTexCoord : public J3DTexCoordInfo { *
/* 8000E464 */ J3DTexCoord() { */
setTexCoordInfo(j3dDefaultTexCoordInfo[0]); struct J3DTexCoordInfo {
resetTexMtxReg(); /* 0x0 */ u8 mTexGenType;
} /* 0x1 */ u8 mTexGenSrc;
J3DTexCoord(J3DTexCoordInfo const& info) { /* 0x2 */ u8 mTexGenMtx;
setTexCoordInfo(info); /* 0x3 */ u8 pad;
resetTexMtxReg(); };
}
void setTexCoordInfo(J3DTexCoordInfo const& info) { extern J3DTexCoordInfo const j3dDefaultTexCoordInfo[8];
__memcpy(this, &info, sizeof(J3DTexCoordInfo));
} /**
* @ingroup jsystem-j3d
u8 getTexGenType() { return mTexGenType; } *
u8 getTexGenSrc() { return mTexGenSrc; } */
u8 getTexGenMtx() { return mTexGenMtx & 0xff; } struct J3DTexCoord : public J3DTexCoordInfo {
u16 getTexMtxReg() { return mTexMtxReg & 0xff; } /* 8000E464 */ J3DTexCoord() {
void setTexGenMtx(u8 param_1) { mTexGenMtx = param_1; } setTexCoordInfo(j3dDefaultTexCoordInfo[0]);
resetTexMtxReg();
void resetTexMtxReg() { }
mTexMtxReg = mTexGenMtx; J3DTexCoord(J3DTexCoordInfo const& info) {
} setTexCoordInfo(info);
resetTexMtxReg();
/* 0x4 */ u16 mTexMtxReg; }
}; // Size: 0x6 void setTexCoordInfo(J3DTexCoordInfo const& info) {
__memcpy(this, &info, sizeof(J3DTexCoordInfo));
#endif /* J3DTEXTURE_H */ }
u8 getTexGenType() { return mTexGenType; }
u8 getTexGenSrc() { return mTexGenSrc; }
u8 getTexGenMtx() { return mTexGenMtx & 0xff; }
u16 getTexMtxReg() { return mTexMtxReg & 0xff; }
void setTexGenMtx(u8 param_1) { mTexGenMtx = param_1; }
void resetTexMtxReg() {
mTexMtxReg = mTexGenMtx;
}
/* 0x4 */ u16 mTexMtxReg;
}; // Size: 0x6
#endif /* J3DTEXTURE_H */

View File

@ -6,6 +6,10 @@
struct J3DTextureSRTInfo; struct J3DTextureSRTInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTransformInfo { struct J3DTransformInfo {
/* 0x00 */ JGeometry::TVec3<f32> mScale; /* 0x00 */ JGeometry::TVec3<f32> mScale;
/* 0x0C */ JGeometry::TVec3<s16> mRotation; /* 0x0C */ JGeometry::TVec3<s16> mRotation;

View File

@ -3,13 +3,16 @@
#include "dolphin/gx/GXAttr.h" #include "dolphin/gx/GXAttr.h"
#include "dolphin/mtx/vec.h" #include "dolphin/mtx/vec.h"
#include "dolphin/types.h"
typedef struct _GXColor GXColor; typedef struct _GXColor GXColor;
class J3DModel; class J3DModel;
class J3DAnmVtxColor; class J3DAnmVtxColor;
class J3DVertexBuffer; class J3DVertexBuffer;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DVtxColorCalc { struct J3DVtxColorCalc {
/* 8032E180 */ void calc(J3DModel*); /* 8032E180 */ void calc(J3DModel*);
virtual void calc(J3DVertexBuffer*); virtual void calc(J3DVertexBuffer*);
@ -19,6 +22,10 @@ struct J3DVtxColorCalc {
/* 0x8 */ J3DAnmVtxColor* mpVtxColor; /* 0x8 */ J3DAnmVtxColor* mpVtxColor;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DVertexData { class J3DVertexData {
public: public:
J3DVertexData(); J3DVertexData();
@ -61,6 +68,10 @@ private:
/* 0x58 */ GXCompType mVtxNrmType; /* 0x58 */ GXCompType mVtxNrmType;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DVertexBuffer { class J3DVertexBuffer {
public: public:
J3DVertexBuffer() { init(); } J3DVertexBuffer() { init(); }

View File

@ -1,7 +1,6 @@
#ifndef J3DANMLOADER_H #ifndef J3DANMLOADER_H
#define J3DANMLOADER_H #define J3DANMLOADER_H
#include "dolphin/types.h"
enum J3DAnmLoaderDataBaseFlag { enum J3DAnmLoaderDataBaseFlag {
J3DLOADER_UNK_FLAG0, J3DLOADER_UNK_FLAG0,
@ -10,6 +9,10 @@ enum J3DAnmLoaderDataBaseFlag {
class J3DAnmBase; class J3DAnmBase;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmLoaderDataBase { struct J3DAnmLoaderDataBase {
/* 80337B40 */ static J3DAnmBase* load(void const*, J3DAnmLoaderDataBaseFlag); /* 80337B40 */ static J3DAnmBase* load(void const*, J3DAnmLoaderDataBaseFlag);
/* 80338134 */ static void setResource(J3DAnmBase*, void const*); /* 80338134 */ static void setResource(J3DAnmBase*, void const*);

View File

@ -1,13 +1,20 @@
#ifndef J3DCLUSTERLOADER_H #ifndef J3DCLUSTERLOADER_H
#define J3DCLUSTERLOADER_H #define J3DCLUSTERLOADER_H
#include "dolphin/types.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "JSystem/J3DGraphAnimator/J3DAnimation.h"
/**
* @ingroup jsystem-j3d
*
*/
struct J3DClusterLoaderDataBase { struct J3DClusterLoaderDataBase {
/* 80334130 */ static void* load(void const*); /* 80334130 */ static void* load(void const*);
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterBlock : public JUTDataBlockHeader { class J3DClusterBlock : public JUTDataBlockHeader {
public: public:
/* 0x08 */ u16 mClusterNum; /* 0x08 */ u16 mClusterNum;
@ -24,6 +31,10 @@ public:
/* 0x2C */ void* mClusterKeyName; /* 0x2C */ void* mClusterKeyName;
}; };
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterLoader { class J3DClusterLoader {
public: public:
virtual void* load(const void*) = 0; virtual void* load(const void*) = 0;
@ -32,6 +43,10 @@ public:
class J3DDeformData; class J3DDeformData;
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterLoader_v15 : public J3DClusterLoader { class J3DClusterLoader_v15 : public J3DClusterLoader {
public: public:
/* 803341CC */ J3DClusterLoader_v15(); /* 803341CC */ J3DClusterLoader_v15();

View File

@ -2,11 +2,14 @@
#define J3DJOINTFACTORY_H #define J3DJOINTFACTORY_H
#include "JSystem/J3DGraphBase/J3DTransform.h" #include "JSystem/J3DGraphBase/J3DTransform.h"
#include "dolphin/types.h"
class J3DJoint; class J3DJoint;
struct J3DJointBlock; struct J3DJointBlock;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DJointInitData { struct J3DJointInitData {
/* 0x00 */ u16 mKind; /* 0x00 */ u16 mKind;
/* 0x02 */ bool mScaleCompensate; /* 0x02 */ bool mScaleCompensate;
@ -16,6 +19,10 @@ struct J3DJointInitData {
/* 0x2C */ Vec mMax; /* 0x2C */ Vec mMax;
}; // Size: 0x30 }; // Size: 0x30
/**
* @ingroup jsystem-j3d
*
*/
struct J3DJointFactory { struct J3DJointFactory {
/* 80337178 */ J3DJointFactory(J3DJointBlock const&); /* 80337178 */ J3DJointFactory(J3DJointBlock const&);
/* 803371D0 */ J3DJoint* create(int); /* 803371D0 */ J3DJoint* create(int);

View File

@ -3,11 +3,14 @@
#include "JSystem/J3DGraphBase/J3DMatBlock.h" #include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h" #include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "dolphin/gx/GXEnum.h"
#include "dolphin/gx/GXStruct.h" #include "dolphin/gx/GXStruct.h"
class J3DMaterial; class J3DMaterial;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialInitData { struct J3DMaterialInitData {
/* 0x000 */ u8 mMaterialMode; /* 0x000 */ u8 mMaterialMode;
/* 0x001 */ u8 mCullModeIdx; /* 0x001 */ u8 mCullModeIdx;
@ -41,6 +44,10 @@ struct J3DMaterialInitData {
/* 0x14A */ u16 mNBTScaleIdx; /* 0x14A */ u16 mNBTScaleIdx;
}; // size 0x14C }; // size 0x14C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndInitData { struct J3DIndInitData {
/* 0x000 */ bool mEnabled; /* 0x000 */ bool mEnabled;
/* 0x001 */ u8 mIndTexStageNum; /* 0x001 */ u8 mIndTexStageNum;
@ -53,6 +60,10 @@ struct J3DIndInitData {
/* 0x078 */ J3DIndTevStageInfo mIndTevStageInfo[0x10]; /* 0x078 */ J3DIndTevStageInfo mIndTevStageInfo[0x10];
}; // size 0x138 }; // size 0x138
/**
* @ingroup jsystem-j3d
*
*/
struct J3DPatchingInfo { struct J3DPatchingInfo {
/* 0x0 */ u16 mMatColorOffset; /* 0x0 */ u16 mMatColorOffset;
/* 0x2 */ u16 mColorChanOffset; /* 0x2 */ u16 mColorChanOffset;
@ -63,6 +74,10 @@ struct J3DPatchingInfo {
/* 0xC */ u8 field_0xc[4]; /* 0xC */ u8 field_0xc[4];
}; // size 0x10 }; // size 0x10
/**
* @ingroup jsystem-j3d
*
*/
struct J3DDisplayListInit { struct J3DDisplayListInit {
/* 0x0 */ u32 mOffset; /* 0x0 */ u32 mOffset;
/* 0x4 */ u32 field_0x4; /* 0x4 */ u32 field_0x4;
@ -71,6 +86,10 @@ struct J3DDisplayListInit {
struct J3DTexCoord2Info; struct J3DTexCoord2Info;
struct J3DCurrentMtxInfo; struct J3DCurrentMtxInfo;
/**
* @ingroup jsystem-j3d
*
*/
class J3DMaterialFactory { class J3DMaterialFactory {
public: public:
enum MaterialType { enum MaterialType {

View File

@ -1,107 +1,114 @@
#ifndef J3DMATERIALFACTORY_V21_H #ifndef J3DMATERIALFACTORY_V21_H
#define J3DMATERIALFACTORY_V21_H #define J3DMATERIALFACTORY_V21_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h" #include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h" #include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "dolphin/gx/GXEnum.h" #include "dolphin/gx/GXStruct.h"
#include "dolphin/gx/GXStruct.h"
class J3DMaterial;
class J3DMaterial; struct J3DTexCoord2Info;
struct J3DTexCoord2Info; struct J3DCurrentMtxInfo;
struct J3DCurrentMtxInfo;
/**
struct J3DMaterialInitData_v21 { * @ingroup jsystem-j3d
/* 0x000 */ u8 mMaterialMode; *
/* 0x001 */ u8 mCullModeIdx; */
/* 0x002 */ u8 mColorChanNumIdx; struct J3DMaterialInitData_v21 {
/* 0x003 */ u8 mTexGenNumIdx; /* 0x000 */ u8 mMaterialMode;
/* 0x004 */ u8 mTevStageNumIdx; /* 0x001 */ u8 mCullModeIdx;
/* 0x005 */ u8 mZCompLocIdx; /* 0x002 */ u8 mColorChanNumIdx;
/* 0x006 */ u8 mZModeIdx; /* 0x003 */ u8 mTexGenNumIdx;
/* 0x007 */ u8 mDitherIdx; /* 0x004 */ u8 mTevStageNumIdx;
/* 0x008 */ u16 mMatColorIdx[2]; /* 0x005 */ u8 mZCompLocIdx;
/* 0x00C */ u16 mColorChanIdx[4]; /* 0x006 */ u8 mZModeIdx;
/* 0x014 */ u16 mTexCoordIdx[8]; /* 0x007 */ u8 mDitherIdx;
/* 0x024 */ u8 field_0x038[0x10]; /* 0x008 */ u16 mMatColorIdx[2];
/* 0x034 */ u16 mTexMtxIdx[8]; /* 0x00C */ u16 mColorChanIdx[4];
/* 0x044 */ u8 field_0x058[0x2c]; /* 0x014 */ u16 mTexCoordIdx[8];
/* 0x070 */ u16 mTexNoIdx[8]; /* 0x024 */ u8 field_0x038[0x10];
/* 0x080 */ u16 mTevKColorIdx[4]; /* 0x034 */ u16 mTexMtxIdx[8];
/* 0x088 */ u8 mTevKColorSel[0x10]; /* 0x044 */ u8 field_0x058[0x2c];
/* 0x098 */ u8 mTevKAlphaSel[0x10]; /* 0x070 */ u16 mTexNoIdx[8];
/* 0x0A8 */ u16 mTevOrderIdx[0x10]; /* 0x080 */ u16 mTevKColorIdx[4];
/* 0x0C8 */ u16 mTevColorIdx[4]; /* 0x088 */ u8 mTevKColorSel[0x10];
/* 0x0D0 */ u16 mTevStageIdx[0x10]; /* 0x098 */ u8 mTevKAlphaSel[0x10];
/* 0x0F0 */ u16 mTevSwapModeIdx[0x10]; /* 0x0A8 */ u16 mTevOrderIdx[0x10];
/* 0x110 */ u16 mTevSwapModeTableIdx[4]; /* 0x0C8 */ u16 mTevColorIdx[4];
/* 0x118 */ u8 field_0x12c[0x18]; /* 0x0D0 */ u16 mTevStageIdx[0x10];
/* 0x130 */ u16 mFogIdx; /* 0x0F0 */ u16 mTevSwapModeIdx[0x10];
/* 0x132 */ u16 mAlphaCompIdx; /* 0x110 */ u16 mTevSwapModeTableIdx[4];
/* 0x134 */ u16 mBlendIdx; /* 0x118 */ u8 field_0x12c[0x18];
/* 0x136 */ u16 mNBTScaleIdx; /* 0x130 */ u16 mFogIdx;
}; // size 0x138 /* 0x132 */ u16 mAlphaCompIdx;
/* 0x134 */ u16 mBlendIdx;
class J3DMaterialFactory_v21 { /* 0x136 */ u16 mNBTScaleIdx;
public: }; // size 0x138
/* 80332DA4 */ J3DMaterialFactory_v21(J3DMaterialBlock_v21 const&);
/* 80332F84 */ u16 countUniqueMaterials(); /**
/* 80332FA8 */ u32 countTexGens(int) const; * @ingroup jsystem-j3d
/* 80332FE0 */ u32 countStages(int) const; *
/* 80333068 */ J3DMaterial* create(J3DMaterial*, int, u32) const; */
/* 803337D8 */ J3DGXColor newMatColor(int, int) const; class J3DMaterialFactory_v21 {
/* 80333834 */ u8 newColorChanNum(int) const; public:
/* 8033386C */ J3DColorChan newColorChan(int, int) const; /* 80332DA4 */ J3DMaterialFactory_v21(J3DMaterialBlock_v21 const&);
/* 80333A10 */ u32 newTexGenNum(int) const; /* 80332F84 */ u16 countUniqueMaterials();
/* 80333A48 */ J3DTexCoord newTexCoord(int, int) const; /* 80332FA8 */ u32 countTexGens(int) const;
/* 80333AA8 */ J3DTexMtx* newTexMtx(int, int) const; /* 80332FE0 */ u32 countStages(int) const;
/* 80333B30 */ u8 newCullMode(int) const; /* 80333068 */ J3DMaterial* create(J3DMaterial*, int, u32) const;
/* 80333B70 */ u16 newTexNo(int, int) const; /* 803337D8 */ J3DGXColor newMatColor(int, int) const;
/* 80333BB8 */ J3DTevOrder newTevOrder(int, int) const; /* 80333834 */ u8 newColorChanNum(int) const;
/* 80333C04 */ J3DGXColorS10 newTevColor(int, int) const; /* 8033386C */ J3DColorChan newColorChan(int, int) const;
/* 80333C74 */ J3DGXColor newTevKColor(int, int) const; /* 80333A10 */ u32 newTexGenNum(int) const;
/* 80333CD0 */ u8 newTevStageNum(int) const; /* 80333A48 */ J3DTexCoord newTexCoord(int, int) const;
/* 80333D08 */ J3DTevStage newTevStage(int, int) const; /* 80333AA8 */ J3DTexMtx* newTexMtx(int, int) const;
/* 80333D68 */ J3DTevSwapModeTable newTevSwapModeTable(int, int) const; /* 80333B30 */ u8 newCullMode(int) const;
/* 80333E04 */ J3DFog newFog(int) const; /* 80333B70 */ u16 newTexNo(int, int) const;
/* 80333EE0 */ J3DAlphaComp newAlphaComp(int) const; /* 80333BB8 */ J3DTevOrder newTevOrder(int, int) const;
/* 80333F60 */ J3DBlend newBlend(int) const; /* 80333C04 */ J3DGXColorS10 newTevColor(int, int) const;
/* 80333FA4 */ J3DZMode newZMode(int) const; /* 80333C74 */ J3DGXColor newTevKColor(int, int) const;
/* 80334004 */ u8 newZCompLoc(int) const; /* 80333CD0 */ u8 newTevStageNum(int) const;
/* 8033403C */ u8 newDither(int) const; /* 80333D08 */ J3DTevStage newTevStage(int, int) const;
/* 80334074 */ J3DNBTScale newNBTScale(int) const; /* 80333D68 */ J3DTevSwapModeTable newTevSwapModeTable(int, int) const;
/* 80333E04 */ J3DFog newFog(int) const;
u16 getMaterialID(u16 idx) { return mpMaterialID[idx]; } /* 80333EE0 */ J3DAlphaComp newAlphaComp(int) const;
/* 80333F60 */ J3DBlend newBlend(int) const;
/* 0x00 */ u16 mMaterialNum; /* 80333FA4 */ J3DZMode newZMode(int) const;
/* 0x04 */ J3DMaterialInitData_v21* mpMaterialInitData; /* 80334004 */ u8 newZCompLoc(int) const;
/* 0x08 */ u16* mpMaterialID; /* 8033403C */ u8 newDither(int) const;
/* 0x0C */ GXColor* mpMatColor; /* 80334074 */ J3DNBTScale newNBTScale(int) const;
/* 0x10 */ u8* mpColorChanNum;
/* 0x14 */ J3DColorChanInfo* mpColorChanInfo; u16 getMaterialID(u16 idx) { return mpMaterialID[idx]; }
/* 0x18 */ u8* mpTexGenNum;
/* 0x1C */ J3DTexCoordInfo* mpTexCoordInfo; /* 0x00 */ u16 mMaterialNum;
/* 0x20 */ J3DTexCoord2Info* mpTexCoord2Info; /* 0x04 */ J3DMaterialInitData_v21* mpMaterialInitData;
/* 0x24 */ J3DTexMtxInfo* mpTexMtxInfo; /* 0x08 */ u16* mpMaterialID;
/* 0x28 */ J3DTexMtxInfo* field_0x28; /* 0x0C */ GXColor* mpMatColor;
/* 0x2C */ u16* mpTexNo; /* 0x10 */ u8* mpColorChanNum;
/* 0x30 */ GXCullMode* mpCullMode; /* 0x14 */ J3DColorChanInfo* mpColorChanInfo;
/* 0x34 */ J3DTevOrderInfo* mpTevOrderInfo; /* 0x18 */ u8* mpTexGenNum;
/* 0x38 */ GXColorS10* mpTevColor; /* 0x1C */ J3DTexCoordInfo* mpTexCoordInfo;
/* 0x3C */ GXColor* mpTevKColor; /* 0x20 */ J3DTexCoord2Info* mpTexCoord2Info;
/* 0x40 */ u8* mpTevStageNum; /* 0x24 */ J3DTexMtxInfo* mpTexMtxInfo;
/* 0x44 */ J3DTevStageInfo* mpTevStageInfo; /* 0x28 */ J3DTexMtxInfo* field_0x28;
/* 0x48 */ J3DTevSwapModeInfo* mpTevSwapModeInfo; /* 0x2C */ u16* mpTexNo;
/* 0x4C */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo; /* 0x30 */ GXCullMode* mpCullMode;
/* 0x50 */ J3DFogInfo* mpFogInfo; /* 0x34 */ J3DTevOrderInfo* mpTevOrderInfo;
/* 0x54 */ J3DAlphaCompInfo* mpAlphaCompInfo; /* 0x38 */ GXColorS10* mpTevColor;
/* 0x58 */ J3DBlendInfo* mpBlendInfo; /* 0x3C */ GXColor* mpTevKColor;
/* 0x5C */ J3DZModeInfo* mpZModeInfo; /* 0x40 */ u8* mpTevStageNum;
/* 0x60 */ u8* mpZCompLoc; /* 0x44 */ J3DTevStageInfo* mpTevStageInfo;
/* 0x64 */ u8* mpDither; /* 0x48 */ J3DTevSwapModeInfo* mpTevSwapModeInfo;
/* 0x68 */ J3DNBTScaleInfo* mpNBTScaleInfo; /* 0x4C */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo;
/* 0x6C */ u16 field_0x6c; /* 0x50 */ J3DFogInfo* mpFogInfo;
/* 0x6E */ u8 field_0x6e; /* 0x54 */ J3DAlphaCompInfo* mpAlphaCompInfo;
/* 0x6F */ u8 field_0x6f; /* 0x58 */ J3DBlendInfo* mpBlendInfo;
}; /* 0x5C */ J3DZModeInfo* mpZModeInfo;
/* 0x60 */ u8* mpZCompLoc;
#endif /* J3DMATERIALFACTORY_V21_H */ /* 0x64 */ u8* mpDither;
/* 0x68 */ J3DNBTScaleInfo* mpNBTScaleInfo;
/* 0x6C */ u16 field_0x6c;
/* 0x6E */ u8 field_0x6e;
/* 0x6F */ u8 field_0x6f;
};
#endif /* J3DMATERIALFACTORY_V21_H */

View File

@ -1,249 +1,312 @@
#ifndef J3DMODELLOADER_H #ifndef J3DMODELLOADER_H
#define J3DMODELLOADER_H #define J3DMODELLOADER_H
#include "dolphin/types.h" #include "dolphin/mtx.h"
#include "dolphin/mtx.h"
class J3DModelData;
class J3DModelData; class J3DMaterialTable;
class J3DMaterialTable; class J3DModelHierarchy;
class J3DModelHierarchy;
/**
struct J3DModelBlock { * @ingroup jsystem-j3d
/* 0x00 */ u32 mBlockType; *
/* 0x04 */ u32 mBlockSize; */
}; struct J3DModelBlock {
/* 0x00 */ u32 mBlockType;
struct J3DModelFileData { /* 0x04 */ u32 mBlockSize;
/* 0x00 */ u32 mMagic1; };
/* 0x04 */ u32 mMagic2;
/* 0x08 */ u8 field_0x08[4]; /**
/* 0x0C */ u32 mBlockNum; * @ingroup jsystem-j3d
/* 0x10 */ u8 field_0x10[0x10]; *
/* 0x20 */ J3DModelBlock mBlocks[1]; */
}; struct J3DModelFileData {
/* 0x00 */ u32 mMagic1;
struct J3DModelInfoBlock : public J3DModelBlock { /* 0x04 */ u32 mMagic2;
/* 0x08 */ u16 mFlags; /* 0x08 */ u8 field_0x08[4];
/* 0x0C */ u32 mPacketNum; /* 0x0C */ u32 mBlockNum;
/* 0x10 */ u32 mVtxNum; /* 0x10 */ u8 field_0x10[0x10];
/* 0x14 */ void* mpHierarchy; /* 0x20 */ J3DModelBlock mBlocks[1];
}; // size 0x18 };
struct J3DVertexBlock : public J3DModelBlock { /**
/* 0x08 */ void* mpVtxAttrFmtList; * @ingroup jsystem-j3d
/* 0x0C */ void* mpVtxPosArray; *
/* 0x10 */ void* mpVtxNrmArray; */
/* 0x14 */ void* mpVtxNBTArray; struct J3DModelInfoBlock : public J3DModelBlock {
/* 0x18 */ void* mpVtxColorArray[2]; /* 0x08 */ u16 mFlags;
/* 0x20 */ void* mpVtxTexCoordArray[8]; /* 0x0C */ u32 mPacketNum;
}; // size 0x40 /* 0x10 */ u32 mVtxNum;
/* 0x14 */ void* mpHierarchy;
struct J3DEnvelopeBlock : public J3DModelBlock { }; // size 0x18
/* 0x08 */ u16 mWEvlpMtxNum;
/* 0x0C */ void* mpWEvlpMixMtxNum; /**
/* 0x10 */ void* mpWEvlpMixIndex; * @ingroup jsystem-j3d
/* 0x14 */ void* mpWEvlpMixWeight; *
/* 0x18 */ void* mpInvJointMtx; */
}; // size 0x1C struct J3DVertexBlock : public J3DModelBlock {
/* 0x08 */ void* mpVtxAttrFmtList;
struct J3DDrawBlock : public J3DModelBlock { /* 0x0C */ void* mpVtxPosArray;
/* 0x08 */ u16 mMtxNum; /* 0x10 */ void* mpVtxNrmArray;
/* 0x0C */ void* mpDrawMtxFlag; /* 0x14 */ void* mpVtxNBTArray;
/* 0x10 */ void* mpDrawMtxIndex; /* 0x18 */ void* mpVtxColorArray[2];
}; // size 0x14 /* 0x20 */ void* mpVtxTexCoordArray[8];
}; // size 0x40
struct J3DJointBlock : public J3DModelBlock {
/* 0x08 */ u16 mJointNum; /**
/* 0x0C */ void* mpJointInitData; * @ingroup jsystem-j3d
/* 0x10 */ void* mpIndexTable; *
/* 0x14 */ void* mpNameTable; */
}; // size 0x18 struct J3DEnvelopeBlock : public J3DModelBlock {
/* 0x08 */ u16 mWEvlpMtxNum;
struct J3DMaterialBlock : public J3DModelBlock { /* 0x0C */ void* mpWEvlpMixMtxNum;
/* 0x08 */ u16 mMaterialNum; /* 0x10 */ void* mpWEvlpMixIndex;
/* 0x0C */ void* mpMaterialInitData; /* 0x14 */ void* mpWEvlpMixWeight;
/* 0x10 */ void* mpMaterialID; /* 0x18 */ void* mpInvJointMtx;
/* 0x14 */ void* mpNameTable; }; // size 0x1C
/* 0x18 */ void* mpIndInitData;
/* 0x1C */ void* mpCullMode; /**
/* 0x20 */ void* mpMatColor; * @ingroup jsystem-j3d
/* 0x24 */ void* mpColorChanNum; *
/* 0x28 */ void* mpColorChanInfo; */
/* 0x2C */ void* mpAmbColor; struct J3DDrawBlock : public J3DModelBlock {
/* 0x30 */ void* mpLightInfo; /* 0x08 */ u16 mMtxNum;
/* 0x34 */ void* mpTexGenNum; /* 0x0C */ void* mpDrawMtxFlag;
/* 0x38 */ void* mpTexCoordInfo; /* 0x10 */ void* mpDrawMtxIndex;
/* 0x3C */ void* mpTexCoord2Info; }; // size 0x14
/* 0x40 */ void* mpTexMtxInfo;
/* 0x44 */ void* field_0x44; /**
/* 0x48 */ void* mpTexNo; * @ingroup jsystem-j3d
/* 0x4C */ void* mpTevOrderInfo; *
/* 0x50 */ void* mpTevColor; */
/* 0x54 */ void* mpTevKColor; struct J3DJointBlock : public J3DModelBlock {
/* 0x58 */ void* mpTevStageNum; /* 0x08 */ u16 mJointNum;
/* 0x5C */ void* mpTevStageInfo; /* 0x0C */ void* mpJointInitData;
/* 0x60 */ void* mpTevSwapModeInfo; /* 0x10 */ void* mpIndexTable;
/* 0x64 */ void* mpTevSwapModeTableInfo; /* 0x14 */ void* mpNameTable;
/* 0x68 */ void* mpFogInfo; }; // size 0x18
/* 0x6C */ void* mpAlphaCompInfo;
/* 0x70 */ void* mpBlendInfo; /**
/* 0x74 */ void* mpZModeInfo; * @ingroup jsystem-j3d
/* 0x78 */ void* mpZCompLoc; *
/* 0x7C */ void* mpDither; */
/* 0x80 */ void* mpNBTScaleInfo; struct J3DMaterialBlock : public J3DModelBlock {
}; /* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpMaterialInitData;
struct J3DMaterialBlock_v21 : public J3DModelBlock { /* 0x10 */ void* mpMaterialID;
/* 0x08 */ u16 mMaterialNum; /* 0x14 */ void* mpNameTable;
/* 0x0C */ void* mpMaterialInitData; /* 0x18 */ void* mpIndInitData;
/* 0x10 */ void* mpMaterialID; /* 0x1C */ void* mpCullMode;
/* 0x14 */ void* mpNameTable; /* 0x20 */ void* mpMatColor;
/* 0x18 */ void* mpCullMode; /* 0x24 */ void* mpColorChanNum;
/* 0x1C */ void* mpMatColor; /* 0x28 */ void* mpColorChanInfo;
/* 0x20 */ void* mpColorChanNum; /* 0x2C */ void* mpAmbColor;
/* 0x24 */ void* mpColorChanInfo; /* 0x30 */ void* mpLightInfo;
/* 0x28 */ void* mpTexGenNum; /* 0x34 */ void* mpTexGenNum;
/* 0x2C */ void* mpTexCoordInfo; /* 0x38 */ void* mpTexCoordInfo;
/* 0x30 */ void* mpTexCoord2Info; /* 0x3C */ void* mpTexCoord2Info;
/* 0x34 */ void* mpTexMtxInfo; /* 0x40 */ void* mpTexMtxInfo;
/* 0x38 */ void* field_0x38; /* 0x44 */ void* field_0x44;
/* 0x3C */ void* mpTexNo; /* 0x48 */ void* mpTexNo;
/* 0x40 */ void* mpTevOrderInfo; /* 0x4C */ void* mpTevOrderInfo;
/* 0x44 */ void* mpTevColor; /* 0x50 */ void* mpTevColor;
/* 0x48 */ void* mpTevKColor; /* 0x54 */ void* mpTevKColor;
/* 0x4C */ void* mpTevStageNum; /* 0x58 */ void* mpTevStageNum;
/* 0x50 */ void* mpTevStageInfo; /* 0x5C */ void* mpTevStageInfo;
/* 0x54 */ void* mpTevSwapModeInfo; /* 0x60 */ void* mpTevSwapModeInfo;
/* 0x58 */ void* mpTevSwapModeTableInfo; /* 0x64 */ void* mpTevSwapModeTableInfo;
/* 0x5C */ void* mpFogInfo; /* 0x68 */ void* mpFogInfo;
/* 0x60 */ void* mpAlphaCompInfo; /* 0x6C */ void* mpAlphaCompInfo;
/* 0x64 */ void* mpBlendInfo; /* 0x70 */ void* mpBlendInfo;
/* 0x68 */ void* mpZModeInfo; /* 0x74 */ void* mpZModeInfo;
/* 0x6C */ void* mpZCompLoc; /* 0x78 */ void* mpZCompLoc;
/* 0x70 */ void* mpDither; /* 0x7C */ void* mpDither;
/* 0x74 */ void* mpNBTScaleInfo; /* 0x80 */ void* mpNBTScaleInfo;
}; };
struct J3DMaterialDLBlock : public J3DModelBlock { /**
/* 0x08 */ u16 mMaterialNum; * @ingroup jsystem-j3d
/* 0x0C */ void* mpDisplayListInit; *
/* 0x10 */ void* mpPatchingInfo; */
/* 0x14 */ void* mpCurrentMtxInfo; struct J3DMaterialBlock_v21 : public J3DModelBlock {
/* 0x18 */ void* mpMaterialMode; /* 0x08 */ u16 mMaterialNum;
/* 0x1C */ void* field_0x1c; /* 0x0C */ void* mpMaterialInitData;
/* 0x20 */ void* mpNameTable; /* 0x10 */ void* mpMaterialID;
}; /* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpCullMode;
struct J3DShapeBlock : public J3DModelBlock { /* 0x1C */ void* mpMatColor;
/* 0x08 */ u16 mShapeNum; /* 0x20 */ void* mpColorChanNum;
/* 0x0C */ void* mpShapeInitData; /* 0x24 */ void* mpColorChanInfo;
/* 0x10 */ void* mpIndexTable; /* 0x28 */ void* mpTexGenNum;
/* 0x14 */ void* mpNameTable; /* 0x2C */ void* mpTexCoordInfo;
/* 0x18 */ void* mpVtxDescList; /* 0x30 */ void* mpTexCoord2Info;
/* 0x1C */ void* mpMtxTable; /* 0x34 */ void* mpTexMtxInfo;
/* 0x20 */ void* mpDisplayListData; /* 0x38 */ void* field_0x38;
/* 0x24 */ void* mpMtxInitData; /* 0x3C */ void* mpTexNo;
/* 0x28 */ void* mpDrawInitData; /* 0x40 */ void* mpTevOrderInfo;
}; // size 0x2C /* 0x44 */ void* mpTevColor;
/* 0x48 */ void* mpTevKColor;
struct J3DTextureBlock : public J3DModelBlock { /* 0x4C */ void* mpTevStageNum;
/* 0x08 */ u16 mTextureNum; /* 0x50 */ void* mpTevStageInfo;
/* 0x0C */ void* mpTextureRes; /* 0x54 */ void* mpTevSwapModeInfo;
/* 0x10 */ void* mpNameTable; /* 0x58 */ void* mpTevSwapModeTableInfo;
}; /* 0x5C */ void* mpFogInfo;
/* 0x60 */ void* mpAlphaCompInfo;
class J3DModelLoader { /* 0x64 */ void* mpBlendInfo;
public: /* 0x68 */ void* mpZModeInfo;
/* 8033468C */ J3DModelLoader(); /* 0x6C */ void* mpZCompLoc;
/* 80335048 */ void readInformation(J3DModelInfoBlock const*, u32); /* 0x70 */ void* mpDither;
/* 803351D0 */ void readVertex(J3DVertexBlock const*); /* 0x74 */ void* mpNBTScaleInfo;
/* 803353F0 */ void readEnvelop(J3DEnvelopeBlock const*); };
/* 80335480 */ void readDraw(J3DDrawBlock const*);
/* 80335530 */ void readJoint(J3DJointBlock const*); /**
/* 80335AF4 */ void readShape(J3DShapeBlock const*, u32); * @ingroup jsystem-j3d
/* 80335C18 */ void readTexture(J3DTextureBlock const*); *
/* 80335F5C */ void readTextureTable(J3DTextureBlock const*); */
/* 80336028 */ void readPatchedMaterial(J3DMaterialBlock const*, u32); struct J3DMaterialDLBlock : public J3DModelBlock {
/* 80336168 */ void readMaterialDL(J3DMaterialDLBlock const*, u32); /* 0x08 */ u16 mMaterialNum;
/* 8033631C */ void modifyMaterial(u32); /* 0x0C */ void* mpDisplayListInit;
/* 0x10 */ void* mpPatchingInfo;
/* 80336CD8 */ u32 calcSizeInformation(J3DModelInfoBlock const*, u32); /* 0x14 */ void* mpCurrentMtxInfo;
/* 80336D64 */ u32 calcSizeJoint(J3DJointBlock const*); /* 0x18 */ void* mpMaterialMode;
/* 80336D90 */ u32 calcSizeEnvelope(J3DEnvelopeBlock const*); /* 0x1C */ void* field_0x1c;
/* 80336DA0 */ u32 calcSizeDraw(J3DDrawBlock const*); /* 0x20 */ void* mpNameTable;
/* 80336EA0 */ u32 calcSizeShape(J3DShapeBlock const*, u32); };
/* 80336F44 */ u32 calcSizeTexture(J3DTextureBlock const*);
/* 80336FF0 */ u32 calcSizeTextureTable(J3DTextureBlock const*); /**
/* 80337010 */ u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32); * @ingroup jsystem-j3d
/* 803370A0 */ u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32); *
*/
// virtuals struct J3DShapeBlock : public J3DModelBlock {
/* 803347E0 */ J3DModelData* load(void const*, u32); /* 0x08 */ u16 mShapeNum;
/* 80334ABC */ J3DMaterialTable* loadMaterialTable(void const*); /* 0x0C */ void* mpShapeInitData;
/* 80334C20 */ J3DModelData* loadBinaryDisplayList(void const*, u32); /* 0x10 */ void* mpIndexTable;
/* 803367D4 */ u32 calcLoadSize(void const*, u32); /* 0x14 */ void* mpNameTable;
/* 803369A0 */ u32 calcLoadMaterialTableSize(void const*); /* 0x18 */ void* mpVtxDescList;
/* 80336A98 */ u32 calcLoadBinaryDisplayListSize(void const*, u32); /* 0x1C */ void* mpMtxTable;
/* 80336794 */ u16 countMaterialNum(void const*); /* 0x20 */ void* mpDisplayListData;
/* 80334EE0 */ void setupBBoardInfo(); /* 0x24 */ void* mpMtxInitData;
/* 80336450 */ ~J3DModelLoader(); /* 0x28 */ void* mpDrawInitData;
/* 8033649C */ void readMaterial(J3DMaterialBlock const*, u32); }; // size 0x2C
/* 80336498 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A4 */ void readMaterialTable(J3DMaterialBlock const*, u32); /**
/* 803364A0 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32); * @ingroup jsystem-j3d
/* 803364A8 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32); *
/* 803364B0 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32); */
struct J3DTextureBlock : public J3DModelBlock {
/* 0x00 */ void* _vtable; /* 0x08 */ u16 mTextureNum;
/* 0x04 */ J3DModelData* mpModelData; /* 0x0C */ void* mpTextureRes;
/* 0x08 */ J3DMaterialTable* mpMaterialTable; /* 0x10 */ void* mpNameTable;
/* 0x0C */ J3DShapeBlock const* mpShapeBlock; };
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy; /**
/* 0x18 */ u8 field_0x18; * @ingroup jsystem-j3d
/* 0x19 */ u8 field_0x19; *
/* 0x1A */ u16 mEnvelopeSize; */
}; class J3DModelLoader {
public:
class J3DModelLoader_v21 { // : public J3DModelLoader { /* 8033468C */ J3DModelLoader();
public: /* 80335048 */ void readInformation(J3DModelInfoBlock const*, u32);
/* 803363F4 */ ~J3DModelLoader_v21() {} /* 803351D0 */ void readVertex(J3DVertexBlock const*);
/* 80335890 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32); /* 803353F0 */ void readEnvelop(J3DEnvelopeBlock const*);
/* 80335E20 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32); /* 80335480 */ void readDraw(J3DDrawBlock const*);
/* 80335530 */ void readJoint(J3DJointBlock const*);
/* 0x00 */ void* _vtable; /* 80335AF4 */ void readShape(J3DShapeBlock const*, u32);
/* 0x04 */ J3DModelData* mpModelData; /* 80335C18 */ void readTexture(J3DTextureBlock const*);
/* 0x08 */ J3DMaterialTable* mpMaterialTable; /* 80335F5C */ void readTextureTable(J3DTextureBlock const*);
/* 0x0C */ J3DShapeBlock const* mpShapeBlock; /* 80336028 */ void readPatchedMaterial(J3DMaterialBlock const*, u32);
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock; /* 80336168 */ void readMaterialDL(J3DMaterialDLBlock const*, u32);
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy; /* 8033631C */ void modifyMaterial(u32);
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19; /* 80336CD8 */ u32 calcSizeInformation(J3DModelInfoBlock const*, u32);
/* 0x1A */ u16 mEnvelopeSize; /* 80336D64 */ u32 calcSizeJoint(J3DJointBlock const*);
}; /* 80336D90 */ u32 calcSizeEnvelope(J3DEnvelopeBlock const*);
/* 80336DA0 */ u32 calcSizeDraw(J3DDrawBlock const*);
class J3DModelLoader_v26 { // : public J3DModelLoader { /* 80336EA0 */ u32 calcSizeShape(J3DShapeBlock const*, u32);
public: /* 80336F44 */ u32 calcSizeTexture(J3DTextureBlock const*);
/* 80336398 */ ~J3DModelLoader_v26() {} /* 80336FF0 */ u32 calcSizeTextureTable(J3DTextureBlock const*);
/* 80335614 */ void readMaterial(J3DMaterialBlock const*, u32); /* 80337010 */ u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32);
/* 80335CE4 */ void readMaterialTable(J3DMaterialBlock const*, u32); /* 803370A0 */ u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32);
/* 80336DB4 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 80336F60 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32); // virtuals
/* 803347E0 */ J3DModelData* load(void const*, u32);
/* 0x00 */ void* _vtable; /* 80334ABC */ J3DMaterialTable* loadMaterialTable(void const*);
/* 0x04 */ J3DModelData* mpModelData; /* 80334C20 */ J3DModelData* loadBinaryDisplayList(void const*, u32);
/* 0x08 */ J3DMaterialTable* mpMaterialTable; /* 803367D4 */ u32 calcLoadSize(void const*, u32);
/* 0x0C */ J3DShapeBlock const* mpShapeBlock; /* 803369A0 */ u32 calcLoadMaterialTableSize(void const*);
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock; /* 80336A98 */ u32 calcLoadBinaryDisplayListSize(void const*, u32);
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy; /* 80336794 */ u16 countMaterialNum(void const*);
/* 0x18 */ u8 field_0x18; /* 80334EE0 */ void setupBBoardInfo();
/* 0x19 */ u8 field_0x19; /* 80336450 */ ~J3DModelLoader();
/* 0x1A */ u16 mEnvelopeSize; /* 8033649C */ void readMaterial(J3DMaterialBlock const*, u32);
}; /* 80336498 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
class J3DModelLoaderDataBase { /* 803364A0 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
public: /* 803364A8 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 803346BC */ static J3DModelData* load(void const* i_data, u32 i_flags); /* 803364B0 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
};
/* 0x00 */ void* _vtable;
#endif /* J3DMODELLOADER_H */ /* 0x04 */ J3DModelData* mpModelData;
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u16 mEnvelopeSize;
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader_v21 { // : public J3DModelLoader {
public:
/* 803363F4 */ ~J3DModelLoader_v21() {}
/* 80335890 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 80335E20 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
/* 0x00 */ void* _vtable;
/* 0x04 */ J3DModelData* mpModelData;
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u16 mEnvelopeSize;
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader_v26 { // : public J3DModelLoader {
public:
/* 80336398 */ ~J3DModelLoader_v26() {}
/* 80335614 */ void readMaterial(J3DMaterialBlock const*, u32);
/* 80335CE4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
/* 80336DB4 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 80336F60 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
/* 0x00 */ void* _vtable;
/* 0x04 */ J3DModelData* mpModelData;
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u16 mEnvelopeSize;
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoaderDataBase {
public:
/* 803346BC */ static J3DModelData* load(void const* i_data, u32 i_flags);
};
#endif /* J3DMODELLOADER_H */

View File

@ -3,13 +3,16 @@
#include "JSystem/J3DGraphLoader/J3DModelLoader.h" #include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "dolphin/gx/GXAttr.h" #include "dolphin/gx/GXAttr.h"
#include "dolphin/mtx/vec.h"
class J3DShape; class J3DShape;
class J3DShapeMtx; class J3DShapeMtx;
class J3DShapeDraw; class J3DShapeDraw;
struct ResNTAB; struct ResNTAB;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeInitData { struct J3DShapeInitData {
/* 0x00 */ u8 mShapeMtxType; /* 0x00 */ u8 mShapeMtxType;
/* 0x02 */ u16 mMtxGroupNum; /* 0x02 */ u16 mMtxGroupNum;
@ -21,17 +24,29 @@ struct J3DShapeInitData {
/* 0x1C */ Vec mMax; /* 0x1C */ Vec mMax;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeMtxInitData { struct J3DShapeMtxInitData {
/* 0x00 */ u16 mUseMtxIndex; /* 0x00 */ u16 mUseMtxIndex;
/* 0x02 */ u16 mUseMtxCount; /* 0x02 */ u16 mUseMtxCount;
/* 0x04 */ u32 mFirstUseMtxIndex; /* 0x04 */ u32 mFirstUseMtxIndex;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeDrawInitData { struct J3DShapeDrawInitData {
/* 0x00 */ u32 mDisplayListSize; /* 0x00 */ u32 mDisplayListSize;
/* 0x04 */ u32 mDisplayListIndex; /* 0x04 */ u32 mDisplayListIndex;
}; };
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeFactory { struct J3DShapeFactory {
/* 80337350 */ J3DShapeFactory(J3DShapeBlock const&); /* 80337350 */ J3DShapeFactory(J3DShapeBlock const&);
/* 80337400 */ J3DShape* create(int, u32, GXVtxDescList*); /* 80337400 */ J3DShape* create(int, u32, GXVtxDescList*);

View File

@ -2,8 +2,11 @@
#define J3DUCLIPPER_H #define J3DUCLIPPER_H
#include "dolphin/mtx.h" #include "dolphin/mtx.h"
#include "dolphin/types.h"
/**
* @ingroup jsystem-j3d
*
*/
class J3DUClipper { class J3DUClipper {
public: public:
J3DUClipper() { init(); } J3DUClipper() { init(); }

View File

@ -1,7 +1,6 @@
#ifndef J3DUD_H #ifndef J3DUD_H
#define J3DUD_H #define J3DUD_H
#include "math.h"
#include "dolphin/types.h" #include "dolphin/types.h"
namespace J3DUD { namespace J3DUD {

View File

@ -5,6 +5,10 @@
struct JASSoundParams; struct JASSoundParams;
/**
* @ingroup jsystem-jaudio
*
*/
class JAIAudible { class JAIAudible {
public: public:
virtual ~JAIAudible(); virtual ~JAIAudible();

View File

@ -7,6 +7,10 @@ class JAIAudible;
class JAISoundID; class JAISoundID;
struct JASSoundParams; struct JASSoundParams;
/**
* @ingroup jsystem-jaudio
*
*/
struct JAIAudience { struct JAIAudience {
virtual ~JAIAudience(); virtual ~JAIAudience();
virtual JAIAudible* newAudible(JGeometry::TVec3<f32> const&, JAISoundID, virtual JAIAudible* newAudible(JGeometry::TVec3<f32> const&, JAISoundID,

View File

@ -3,10 +3,13 @@
#include "JSystem/JAudio2/JAISeqDataMgr.h" #include "JSystem/JAudio2/JAISeqDataMgr.h"
#include "JSystem/JAudio2/JASTrack.h" #include "JSystem/JAudio2/JASTrack.h"
#include "JSystem/JSupport/JSUList.h"
class JAISeMgr; class JAISeMgr;
/**
* @ingroup jsystem-jaudio
*
*/
class JAISe : public JSULink<JAISe>, public JAISound { class JAISe : public JSULink<JAISe>, public JAISound {
public: public:
class TInner { class TInner {

View File

@ -2,28 +2,42 @@
#define JAISEMGR_H #define JAISEMGR_H
#include "JSystem/JAudio2/JAISe.h" #include "JSystem/JAudio2/JAISe.h"
#include "JSystem/JAudio2/JASHeapCtrl.h"
#include "JSystem/JSupport/JSUList.h"
#include "global.h" #include "global.h"
struct JAIAudience; struct JAIAudience;
struct JASSoundParams; struct JASSoundParams;
/**
* @ingroup jsystem-jaudio
*
*/
struct JASNonCopyable { struct JASNonCopyable {
/* 0x0 */ int field_0x0; /* 0x0 */ int field_0x0;
}; // Size: 0x4 }; // Size: 0x4
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISeCategoryArrangementItem { struct JAISeCategoryArrangementItem {
u8 mMaxActiveSe; u8 mMaxActiveSe;
u8 mMaxInactiveSe; u8 mMaxInactiveSe;
}; };
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISeCategoryArrangement { struct JAISeCategoryArrangement {
JAISeCategoryArrangementItem mItems[16]; JAISeCategoryArrangementItem mItems[16];
}; };
class JAISeMgr; class JAISeMgr;
/**
* @ingroup jsystem-jaudio
*
*/
class JAISeCategoryMgr : public JAISeqDataUser { class JAISeCategoryMgr : public JAISeqDataUser {
public: public:
/* 8029F9C4 */ void JAISeMgr_calc_(); /* 8029F9C4 */ void JAISeMgr_calc_();
@ -59,6 +73,10 @@ public:
/* 0x68 */ int mMaxActiveSe; /* 0x68 */ int mMaxActiveSe;
}; // Size: 0x6C }; // Size: 0x6C
/**
* @ingroup jsystem-jaudio
*
*/
class JAISeMgr : public JASGlobalInstance<JAISeMgr>, class JAISeMgr : public JASGlobalInstance<JAISeMgr>,
public JAISeqDataUser, public JAISeqDataUser,
public JAISoundActivity { public JAISoundActivity {

View File

@ -2,13 +2,16 @@
#define JAISEQ_H #define JAISEQ_H
#include "JSystem/JAudio2/JAISeqDataMgr.h" #include "JSystem/JAudio2/JAISeqDataMgr.h"
#include "JSystem/JAudio2/JASHeapCtrl.h"
#include "JSystem/JAudio2/JASTrack.h" #include "JSystem/JAudio2/JASTrack.h"
#include "JSystem/JSupport/JSUList.h" #include "JSystem/JSupport/JSUList.h"
class JAISeqMgr; class JAISeqMgr;
class JAISoundChild; class JAISoundChild;
/**
* @ingroup jsystem-jaudio
*
*/
class JAISeq : public JASPoolAllocObject<JAISeq>, public JAISound, public JSULink<JAISeq> { class JAISeq : public JASPoolAllocObject<JAISeq>, public JAISound, public JSULink<JAISeq> {
public: public:
class TInner { class TInner {

View File

@ -3,6 +3,10 @@
#include "JSystem/JAudio2/JAISound.h" #include "JSystem/JAudio2/JAISound.h"
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISeqData { struct JAISeqData {
JAISeqData(void* param_0, u32 param_1) { JAISeqData(void* param_0, u32 param_1) {
field_0x0 = param_0; field_0x0 = param_0;
@ -18,6 +22,10 @@ struct JAISeqData {
/* 0x04 */ u32 field_0x4; /* 0x04 */ u32 field_0x4;
}; };
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISeqDataRegion { struct JAISeqDataRegion {
bool intersects(JAISeqData& seqData) const { bool intersects(JAISeqData& seqData) const {
if ((u32)addr + size < (u32)seqData.field_0x0) { if ((u32)addr + size < (u32)seqData.field_0x0) {
@ -33,13 +41,20 @@ struct JAISeqDataRegion {
/* 0x04 */ u32 size; /* 0x04 */ u32 size;
}; };
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISeqDataUser { struct JAISeqDataUser {
virtual ~JAISeqDataUser(); virtual ~JAISeqDataUser();
virtual bool isUsingSeqData(JAISeqDataRegion const&) = 0; virtual bool isUsingSeqData(JAISeqDataRegion const&) = 0;
virtual int releaseSeqData(JAISeqDataRegion const&) = 0; virtual int releaseSeqData(JAISeqDataRegion const&) = 0;
}; };
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISeqDataMgr { struct JAISeqDataMgr {
enum SeqDataReturnValue{ SeqDataReturnValue_0 = 0, SeqDataReturnValue_1 = 1, SeqDataReturnValue_2 = 2}; enum SeqDataReturnValue{ SeqDataReturnValue_0 = 0, SeqDataReturnValue_1 = 1, SeqDataReturnValue_2 = 2};
virtual ~JAISeqDataMgr(); virtual ~JAISeqDataMgr();

View File

@ -4,11 +4,14 @@
#include "JSystem/JAudio2/JAISeqDataMgr.h" #include "JSystem/JAudio2/JAISeqDataMgr.h"
#include "JSystem/JAudio2/JASGadget.h" #include "JSystem/JAudio2/JASGadget.h"
#include "JSystem/JSupport/JSUList.h" #include "JSystem/JSupport/JSUList.h"
#include "JSystem/JUtility/JUTAssert.h"
struct JAIAudience; struct JAIAudience;
class JAISeq; class JAISeq;
/**
* @ingroup jsystem-jaudio
*
*/
class JAISeqMgr : public JASGlobalInstance<JAISeqMgr>, public JAISeqDataUser { class JAISeqMgr : public JASGlobalInstance<JAISeqMgr>, public JAISeqDataUser {
public: public:
enum ReleaseSeqResult { enum ReleaseSeqResult {

View File

@ -5,6 +5,10 @@
#include "JSystem/JAudio2/JAIAudible.h" #include "JSystem/JAudio2/JAIAudible.h"
#include "global.h" #include "global.h"
/**
* @ingroup jsystem-jaudio
*
*/
class JAISoundID { class JAISoundID {
public: public:
operator u32() const { return this->mId.mFullId; } operator u32() const { return this->mId.mFullId; }
@ -36,6 +40,10 @@ public:
class JASTrack; class JASTrack;
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundStatus_ { struct JAISoundStatus_ {
/* 802A2220 */ s32 lockWhenPrepared(); /* 802A2220 */ s32 lockWhenPrepared();
/* 802A2244 */ s32 unlockIfLocked(); /* 802A2244 */ s32 unlockIfLocked();
@ -99,6 +107,10 @@ struct JAISoundStatus_ {
/* 0x4 */ u32 user_data; /* 0x4 */ u32 user_data;
}; // Size: 0x8 }; // Size: 0x8
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundFader { struct JAISoundFader {
void forceIn() { void forceIn() {
mIntensity = 1.0f; mIntensity = 1.0f;
@ -135,6 +147,11 @@ struct JAISoundFader {
/* 0x00 */ f32 mIntensity; /* 0x00 */ f32 mIntensity;
/* 0x04 */ JAISoundParamsTransition::TTransition mTransition; /* 0x04 */ JAISoundParamsTransition::TTransition mTransition;
}; // Size: 0x10 }; // Size: 0x10
/**
* @ingroup jsystem-jaudio
*
*/
template <typename A0> template <typename A0>
struct JAISoundStrategyMgr__unknown { struct JAISoundStrategyMgr__unknown {
virtual void virtual2(); virtual void virtual2();
@ -142,6 +159,10 @@ struct JAISoundStrategyMgr__unknown {
virtual void virtual4(A0*, const JASSoundParams&); virtual void virtual4(A0*, const JASSoundParams&);
}; };
/**
* @ingroup jsystem-jaudio
*
*/
template <typename A0> template <typename A0>
struct JAISoundStrategyMgr { struct JAISoundStrategyMgr {
virtual void virtual2(); virtual void virtual2();
@ -155,6 +176,10 @@ struct JAISoundStrategyMgr__template1 {};
/* JAISoundStrategyMgr<JAIStream> */ /* JAISoundStrategyMgr<JAIStream> */
struct JAISoundStrategyMgr__template2 {}; struct JAISoundStrategyMgr__template2 {};
/**
* @ingroup jsystem-jaudio
*
*/
class JAISoundActivity { class JAISoundActivity {
public: public:
void init() { field_0x0.value = 0; } void init() { field_0x0.value = 0; }
@ -174,6 +199,10 @@ public:
} field_0x0; } field_0x0;
}; };
/**
* @ingroup jsystem-jaudio
*
*/
class JAITempoMgr { class JAITempoMgr {
public: public:
/* 0x00 */ f32 mTempo; /* 0x00 */ f32 mTempo;
@ -197,6 +226,11 @@ class JAISeq;
class JAISoundChild; class JAISoundChild;
class JAIStream; class JAIStream;
class JAITempoMgr; class JAITempoMgr;
/**
* @ingroup jsystem-jaudio
*
*/
class JAISound { class JAISound {
public: public:
/* 802A21A0 */ void releaseHandle(); /* 802A21A0 */ void releaseHandle();

View File

@ -5,6 +5,10 @@
struct JASTrack; struct JASTrack;
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundChild { struct JAISoundChild {
/* 802A2AB0 */ void init(); /* 802A2AB0 */ void init();
/* 802A2B28 */ void mixOut(JASTrack*); /* 802A2B28 */ void mixOut(JASTrack*);

View File

@ -7,6 +7,10 @@
class JAISound; class JAISound;
class JAISoundID; class JAISoundID;
/**
* @ingroup jsystem-jaudio
*
*/
class JAISoundHandle { class JAISoundHandle {
public: public:
JAISoundHandle() {sound_ = NULL;}; JAISoundHandle() {sound_ = NULL;};
@ -28,6 +32,10 @@ public:
JAISound* sound_; // member from assert in operator->() JAISound* sound_; // member from assert in operator->()
}; };
/**
* @ingroup jsystem-jaudio
*
*/
class JAISoundHandles { class JAISoundHandles {
public: public:
JAISoundHandles(JAISoundHandle* pHandle, int param_1) { JAISoundHandles(JAISoundHandle* pHandle, int param_1) {

View File

@ -4,6 +4,10 @@
#include "JSystem/JAudio2/JAISound.h" #include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASGadget.h" #include "JSystem/JAudio2/JASGadget.h"
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundInfo : public JASGlobalInstance<JAISoundInfo> { struct JAISoundInfo : public JASGlobalInstance<JAISoundInfo> {
/* 802A2D34 */ JAISoundInfo(bool); /* 802A2D34 */ JAISoundInfo(bool);
virtual int getSoundType(JAISoundID) const = 0; virtual int getSoundType(JAISoundID) const = 0;

View File

@ -3,6 +3,10 @@
#include "JSystem/JAudio2/JASSoundParams.h" #include "JSystem/JAudio2/JASSoundParams.h"
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundParamsProperty { struct JAISoundParamsProperty {
void init() { void init() {
field_0x0 = 1.0f; field_0x0 = 1.0f;
@ -15,6 +19,10 @@ struct JAISoundParamsProperty {
/* 0x08 */ f32 field_0x8; /* 0x08 */ f32 field_0x8;
}; // Size: 0xC }; // Size: 0xC
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundParamsTransition { struct JAISoundParamsTransition {
struct TTransition { struct TTransition {
void zero() { void zero() {
@ -70,6 +78,10 @@ struct JAISoundParamsTransition {
/* 0x30 */ TTransition mDolby; /* 0x30 */ TTransition mDolby;
}; // Size: 0x3C }; // Size: 0x3C
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundParamsMove { struct JAISoundParamsMove {
JAISoundParamsMove() : mParams() {} JAISoundParamsMove() : mParams() {}
@ -90,6 +102,10 @@ struct JAISoundParamsMove {
/* 0x14 */ JAISoundParamsTransition mTransition; /* 0x14 */ JAISoundParamsTransition mTransition;
}; // Size: 0x50 }; // Size: 0x50
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundParams { struct JAISoundParams {
JAISoundParams() : mMove() {} JAISoundParams() : mMove() {}
void mixOutAll(JASSoundParams const&, JASSoundParams*, f32); void mixOutAll(JASSoundParams const&, JASSoundParams*, f32);

View File

@ -4,6 +4,10 @@
#include "JSystem/JAudio2/JAISound.h" #include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASGadget.h" #include "JSystem/JAudio2/JASGadget.h"
/**
* @ingroup jsystem-jaudio
*
*/
struct JAISoundStarter : public JASGlobalInstance<JAISoundStarter> { struct JAISoundStarter : public JASGlobalInstance<JAISoundStarter> {
/* 802A2F6C */ JAISoundStarter(bool); /* 802A2F6C */ JAISoundStarter(bool);

View File

@ -3,11 +3,14 @@
#include "JSystem/JAudio2/JAISound.h" #include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASAramStream.h" #include "JSystem/JAudio2/JASAramStream.h"
#include "JSystem/JAudio2/JASHeapCtrl.h"
#include "JSystem/JSupport/JSUList.h" #include "JSystem/JSupport/JSUList.h"
class JAIStreamMgr; class JAIStreamMgr;
/**
* @ingroup jsystem-jaudio
*
*/
class JAIStream : public JASPoolAllocObject<JAIStream>, public JAISound, public JSULink<JAIStream> { class JAIStream : public JASPoolAllocObject<JAIStream>, public JAISound, public JSULink<JAIStream> {
public: public:
struct TInner { struct TInner {

View File

@ -3,11 +3,19 @@
#include "JSystem/JAudio2/JAISound.h" #include "JSystem/JAudio2/JAISound.h"
/**
* @ingroup jsystem-jaudio
*
*/
struct JAIStreamDataMgr { struct JAIStreamDataMgr {
virtual s32 getStreamFileEntry(JAISoundID) = 0; virtual s32 getStreamFileEntry(JAISoundID) = 0;
virtual ~JAIStreamDataMgr(); virtual ~JAIStreamDataMgr();
}; };
/**
* @ingroup jsystem-jaudio
*
*/
struct JAIStreamAramMgr { struct JAIStreamAramMgr {
virtual void* newStreamAram(u32*) = 0; virtual void* newStreamAram(u32*) = 0;
virtual void deleteStreamAram(u32) = 0; virtual void deleteStreamAram(u32) = 0;

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