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:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: generate docs
uses: mattnotmitt/doxygen-action@v1
with:
doxyfile-path: 'Doxyfile'
- name: deploy docs to github pages
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
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
.extab | 100.000000% | 96 | 96
.extabindex | 100.000000% | 96 | 96
.text | 48.455851% | 1742736 | 3596544
.text | 48.756584% | 1753552 | 3596544
.ctors | 100.000000% | 448 | 448
.dtors | 100.000000% | 32 | 32
.rodata | 100.000000% | 193856 | 193856
.data | 100.000000% | 197632 | 197632
.sdata | 100.000000% | 1408 | 1408
.sdata2 | 100.000000% | 20832 | 20832
Total | 53.888305% | 2166672 | 4020672
Total | 54.157315% | 2177488 | 4020672
## Total
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 53.888305% | 2166672 | 4020672
RELs | 37.290880% | 4288572 | 11500324
Total | 41.590398% | 6455244 | 15520996
main.dol | 54.157315% | 2177488 | 4020672
RELs | 37.556090% | 4319072 | 11500324
Total | 41.856592% | 6496560 | 15520996
## RELs
@ -74,8 +74,8 @@ d_a_demo_item | 33.863165% | 3920 | 11576
d_a_disappear | 100.000000% | 2404 | 2404
d_a_dmidna | 100.000000% | 1888 | 1888
d_a_do | 37.666220% | 14616 | 38804
d_a_door_boss | 66.342756% | 6008 | 9056
d_a_door_bossL1 | 39.355114% | 7372 | 18732
d_a_door_boss | 100.000000% | 9056 | 9056
d_a_door_bossL1 | 100.000000% | 18732 | 18732
d_a_door_bossL5 | 39.221790% | 4032 | 10280
d_a_door_dbdoor00 | 100.000000% | 7620 | 7620
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_fm | 24.588144% | 15164 | 61672
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_gb | 26.939571% | 8292 | 30780
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_nz | 32.041969% | 4764 | 14868
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_ph | 100.000000% | 23872 | 23872
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_ykgr | 44.400631% | 2252 | 5072
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
/* 806C1030 4B 9B 5A 7D */ bl CrrPos__9dBgS_AcchFR4dBgS
/* 806C1034 38 7D 09 80 */ addi r3, r29, 0x980
/* 806C1038 3C 80 80 6C */ lis r4, data_806C1A38@ha /* 0x806C1A38@ha */
/* 806C103C 38 84 1A 38 */ addi r4, r4, data_806C1A38@l /* 0x806C1A38@l */
/* 806C1038 3C 80 80 6C */ lis r4, cc_fz_src@ha /* 0x806C1A38@ha */
/* 806C103C 38 84 1A 38 */ addi r4, r4, cc_fz_src@l /* 0x806C1A38@l */
/* 806C1040 4B 9C 39 F5 */ bl Set__8dCcD_SphFRC11dCcD_SrcSph
/* 806C1044 38 1D 09 44 */ addi r0, r29, 0x944
/* 806C1048 90 1D 09 C4 */ stw r0, 0x9c4(r29)
/* 806C104C 38 7D 0A B8 */ addi r3, r29, 0xab8
/* 806C1050 3C 80 80 6C */ lis r4, data_806C1A78@ha /* 0x806C1A78@ha */
/* 806C1054 38 84 1A 78 */ addi r4, r4, data_806C1A78@l /* 0x806C1A78@l */
/* 806C1050 3C 80 80 6C */ lis r4, cc_fz_at_src@ha /* 0x806C1A78@ha */
/* 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
/* 806C105C 38 1D 09 44 */ addi r0, r29, 0x944
/* 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
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "global.h"
typedef struct _GXColor GXColor;
typedef struct _GXColorS10 GXColorS10;
@ -20,6 +19,10 @@ enum J2DAnmKind {
KIND_VTX_COLOR = 7
};
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmBase {
public:
J2DAnmBase() {
@ -42,6 +45,10 @@ public:
/* 0xC */ J2DAnmKind mKind;
}; // Size: 0x10
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVtxColor : public J2DAnmBase {
public:
J2DAnmVtxColor() {
@ -67,6 +74,10 @@ public:
struct J3DTransformInfo;
struct J3DTextureSRTInfo;
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVtxColorKey : public J2DAnmVtxColor {
public:
J2DAnmVtxColorKey() {
@ -84,6 +95,10 @@ public:
/* 0x38 */ s16* mAValues;
}; // Size: 0x3C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVtxColorFull : public J2DAnmVtxColor {
public:
J2DAnmVtxColorFull() {
@ -101,6 +116,10 @@ public:
/* 0x38 */ u8* mAValues;
}; // Size: 0x3C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmVisibilityFull : public J2DAnmBase {
public:
J2DAnmVisibilityFull() {
@ -119,6 +138,10 @@ public:
/* 0x18 */ u8* mValues;
}; // Size: 0x1C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTransform : public J2DAnmBase {
public:
J2DAnmTransform(f32* pScaleValues, s16* pRotationValues, f32* pTranslateValues) {
@ -139,6 +162,10 @@ public:
/* 0x18 */ f32* mTranslateValues;
}; // Size: 0x1C
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTransformKey : public J2DAnmTransform {
public:
J2DAnmTransformKey() : J2DAnmTransform(NULL, NULL, NULL) {
@ -157,6 +184,10 @@ public:
/* 0x28 */ J3DAnmTransformKeyTable* mInfoTable;
};
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTransformFull : public J2DAnmTransform {
public:
J2DAnmTransformFull() : J2DAnmTransform(NULL, NULL, NULL) { mTableInfo = NULL; }
@ -168,6 +199,10 @@ public:
/* 0x24 */ J3DAnmTransformFullTable* mTableInfo;
};
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTextureSRTKey : public J2DAnmBase {
public:
J2DAnmTextureSRTKey() {
@ -227,6 +262,10 @@ public:
/* 0x7C */ int field_0x7c;
};
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTexPattern : public J2DAnmBase {
public:
struct J2DAnmTexPatternTIMGPointer {
@ -265,6 +304,10 @@ public:
/* 0x30 */ J2DAnmTexPatternTIMGPointer* mTIMGPtrArray;
};
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmTevRegKey : public J2DAnmBase {
public:
J2DAnmTevRegKey() {
@ -331,6 +374,10 @@ public:
/* 0x70 */ s16* mKAValues;
};
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmColor : public J2DAnmBase {
public:
J2DAnmColor() {
@ -357,6 +404,10 @@ public:
/* 0x20 */ JUTNameTab field_0x20;
}; // Size: 0x30
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmColorKey : public J2DAnmColor {
public:
J2DAnmColorKey() {
@ -376,6 +427,10 @@ public:
/* 0x40 */ J3DAnmColorKeyTable* mInfoTable;
};
/**
* @ingroup jsystem-j2d
*
*/
struct J2DAnmColorFullInfo {
/* 0x00 */ u16 mRMaxFrame;
/* 0x02 */ u16 mROffset;
@ -387,6 +442,10 @@ struct J2DAnmColorFullInfo {
/* 0x0E */ u16 mAOffset;
}; // Size = 0x10
/**
* @ingroup jsystem-j2d
*
*/
class J2DAnmColorFull : public J2DAnmColor {
public:
J2DAnmColorFull() {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,107 +1,114 @@
#ifndef J3DMATERIALFACTORY_V21_H
#define J3DMATERIALFACTORY_V21_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "dolphin/gx/GXEnum.h"
#include "dolphin/gx/GXStruct.h"
class J3DMaterial;
struct J3DTexCoord2Info;
struct J3DCurrentMtxInfo;
struct J3DMaterialInitData_v21 {
/* 0x000 */ u8 mMaterialMode;
/* 0x001 */ u8 mCullModeIdx;
/* 0x002 */ u8 mColorChanNumIdx;
/* 0x003 */ u8 mTexGenNumIdx;
/* 0x004 */ u8 mTevStageNumIdx;
/* 0x005 */ u8 mZCompLocIdx;
/* 0x006 */ u8 mZModeIdx;
/* 0x007 */ u8 mDitherIdx;
/* 0x008 */ u16 mMatColorIdx[2];
/* 0x00C */ u16 mColorChanIdx[4];
/* 0x014 */ u16 mTexCoordIdx[8];
/* 0x024 */ u8 field_0x038[0x10];
/* 0x034 */ u16 mTexMtxIdx[8];
/* 0x044 */ u8 field_0x058[0x2c];
/* 0x070 */ u16 mTexNoIdx[8];
/* 0x080 */ u16 mTevKColorIdx[4];
/* 0x088 */ u8 mTevKColorSel[0x10];
/* 0x098 */ u8 mTevKAlphaSel[0x10];
/* 0x0A8 */ u16 mTevOrderIdx[0x10];
/* 0x0C8 */ u16 mTevColorIdx[4];
/* 0x0D0 */ u16 mTevStageIdx[0x10];
/* 0x0F0 */ u16 mTevSwapModeIdx[0x10];
/* 0x110 */ u16 mTevSwapModeTableIdx[4];
/* 0x118 */ u8 field_0x12c[0x18];
/* 0x130 */ u16 mFogIdx;
/* 0x132 */ u16 mAlphaCompIdx;
/* 0x134 */ u16 mBlendIdx;
/* 0x136 */ u16 mNBTScaleIdx;
}; // size 0x138
class J3DMaterialFactory_v21 {
public:
/* 80332DA4 */ J3DMaterialFactory_v21(J3DMaterialBlock_v21 const&);
/* 80332F84 */ u16 countUniqueMaterials();
/* 80332FA8 */ u32 countTexGens(int) const;
/* 80332FE0 */ u32 countStages(int) const;
/* 80333068 */ J3DMaterial* create(J3DMaterial*, int, u32) const;
/* 803337D8 */ J3DGXColor newMatColor(int, int) const;
/* 80333834 */ u8 newColorChanNum(int) const;
/* 8033386C */ J3DColorChan newColorChan(int, int) const;
/* 80333A10 */ u32 newTexGenNum(int) const;
/* 80333A48 */ J3DTexCoord newTexCoord(int, int) const;
/* 80333AA8 */ J3DTexMtx* newTexMtx(int, int) const;
/* 80333B30 */ u8 newCullMode(int) const;
/* 80333B70 */ u16 newTexNo(int, int) const;
/* 80333BB8 */ J3DTevOrder newTevOrder(int, int) const;
/* 80333C04 */ J3DGXColorS10 newTevColor(int, int) const;
/* 80333C74 */ J3DGXColor newTevKColor(int, int) const;
/* 80333CD0 */ u8 newTevStageNum(int) const;
/* 80333D08 */ J3DTevStage newTevStage(int, int) const;
/* 80333D68 */ J3DTevSwapModeTable newTevSwapModeTable(int, int) const;
/* 80333E04 */ J3DFog newFog(int) const;
/* 80333EE0 */ J3DAlphaComp newAlphaComp(int) const;
/* 80333F60 */ J3DBlend newBlend(int) const;
/* 80333FA4 */ J3DZMode newZMode(int) const;
/* 80334004 */ u8 newZCompLoc(int) const;
/* 8033403C */ u8 newDither(int) const;
/* 80334074 */ J3DNBTScale newNBTScale(int) const;
u16 getMaterialID(u16 idx) { return mpMaterialID[idx]; }
/* 0x00 */ u16 mMaterialNum;
/* 0x04 */ J3DMaterialInitData_v21* mpMaterialInitData;
/* 0x08 */ u16* mpMaterialID;
/* 0x0C */ GXColor* mpMatColor;
/* 0x10 */ u8* mpColorChanNum;
/* 0x14 */ J3DColorChanInfo* mpColorChanInfo;
/* 0x18 */ u8* mpTexGenNum;
/* 0x1C */ J3DTexCoordInfo* mpTexCoordInfo;
/* 0x20 */ J3DTexCoord2Info* mpTexCoord2Info;
/* 0x24 */ J3DTexMtxInfo* mpTexMtxInfo;
/* 0x28 */ J3DTexMtxInfo* field_0x28;
/* 0x2C */ u16* mpTexNo;
/* 0x30 */ GXCullMode* mpCullMode;
/* 0x34 */ J3DTevOrderInfo* mpTevOrderInfo;
/* 0x38 */ GXColorS10* mpTevColor;
/* 0x3C */ GXColor* mpTevKColor;
/* 0x40 */ u8* mpTevStageNum;
/* 0x44 */ J3DTevStageInfo* mpTevStageInfo;
/* 0x48 */ J3DTevSwapModeInfo* mpTevSwapModeInfo;
/* 0x4C */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo;
/* 0x50 */ J3DFogInfo* mpFogInfo;
/* 0x54 */ J3DAlphaCompInfo* mpAlphaCompInfo;
/* 0x58 */ J3DBlendInfo* mpBlendInfo;
/* 0x5C */ J3DZModeInfo* mpZModeInfo;
/* 0x60 */ u8* mpZCompLoc;
/* 0x64 */ u8* mpDither;
/* 0x68 */ J3DNBTScaleInfo* mpNBTScaleInfo;
/* 0x6C */ u16 field_0x6c;
/* 0x6E */ u8 field_0x6e;
/* 0x6F */ u8 field_0x6f;
};
#endif /* J3DMATERIALFACTORY_V21_H */
#ifndef J3DMATERIALFACTORY_V21_H
#define J3DMATERIALFACTORY_V21_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "dolphin/gx/GXStruct.h"
class J3DMaterial;
struct J3DTexCoord2Info;
struct J3DCurrentMtxInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialInitData_v21 {
/* 0x000 */ u8 mMaterialMode;
/* 0x001 */ u8 mCullModeIdx;
/* 0x002 */ u8 mColorChanNumIdx;
/* 0x003 */ u8 mTexGenNumIdx;
/* 0x004 */ u8 mTevStageNumIdx;
/* 0x005 */ u8 mZCompLocIdx;
/* 0x006 */ u8 mZModeIdx;
/* 0x007 */ u8 mDitherIdx;
/* 0x008 */ u16 mMatColorIdx[2];
/* 0x00C */ u16 mColorChanIdx[4];
/* 0x014 */ u16 mTexCoordIdx[8];
/* 0x024 */ u8 field_0x038[0x10];
/* 0x034 */ u16 mTexMtxIdx[8];
/* 0x044 */ u8 field_0x058[0x2c];
/* 0x070 */ u16 mTexNoIdx[8];
/* 0x080 */ u16 mTevKColorIdx[4];
/* 0x088 */ u8 mTevKColorSel[0x10];
/* 0x098 */ u8 mTevKAlphaSel[0x10];
/* 0x0A8 */ u16 mTevOrderIdx[0x10];
/* 0x0C8 */ u16 mTevColorIdx[4];
/* 0x0D0 */ u16 mTevStageIdx[0x10];
/* 0x0F0 */ u16 mTevSwapModeIdx[0x10];
/* 0x110 */ u16 mTevSwapModeTableIdx[4];
/* 0x118 */ u8 field_0x12c[0x18];
/* 0x130 */ u16 mFogIdx;
/* 0x132 */ u16 mAlphaCompIdx;
/* 0x134 */ u16 mBlendIdx;
/* 0x136 */ u16 mNBTScaleIdx;
}; // size 0x138
/**
* @ingroup jsystem-j3d
*
*/
class J3DMaterialFactory_v21 {
public:
/* 80332DA4 */ J3DMaterialFactory_v21(J3DMaterialBlock_v21 const&);
/* 80332F84 */ u16 countUniqueMaterials();
/* 80332FA8 */ u32 countTexGens(int) const;
/* 80332FE0 */ u32 countStages(int) const;
/* 80333068 */ J3DMaterial* create(J3DMaterial*, int, u32) const;
/* 803337D8 */ J3DGXColor newMatColor(int, int) const;
/* 80333834 */ u8 newColorChanNum(int) const;
/* 8033386C */ J3DColorChan newColorChan(int, int) const;
/* 80333A10 */ u32 newTexGenNum(int) const;
/* 80333A48 */ J3DTexCoord newTexCoord(int, int) const;
/* 80333AA8 */ J3DTexMtx* newTexMtx(int, int) const;
/* 80333B30 */ u8 newCullMode(int) const;
/* 80333B70 */ u16 newTexNo(int, int) const;
/* 80333BB8 */ J3DTevOrder newTevOrder(int, int) const;
/* 80333C04 */ J3DGXColorS10 newTevColor(int, int) const;
/* 80333C74 */ J3DGXColor newTevKColor(int, int) const;
/* 80333CD0 */ u8 newTevStageNum(int) const;
/* 80333D08 */ J3DTevStage newTevStage(int, int) const;
/* 80333D68 */ J3DTevSwapModeTable newTevSwapModeTable(int, int) const;
/* 80333E04 */ J3DFog newFog(int) const;
/* 80333EE0 */ J3DAlphaComp newAlphaComp(int) const;
/* 80333F60 */ J3DBlend newBlend(int) const;
/* 80333FA4 */ J3DZMode newZMode(int) const;
/* 80334004 */ u8 newZCompLoc(int) const;
/* 8033403C */ u8 newDither(int) const;
/* 80334074 */ J3DNBTScale newNBTScale(int) const;
u16 getMaterialID(u16 idx) { return mpMaterialID[idx]; }
/* 0x00 */ u16 mMaterialNum;
/* 0x04 */ J3DMaterialInitData_v21* mpMaterialInitData;
/* 0x08 */ u16* mpMaterialID;
/* 0x0C */ GXColor* mpMatColor;
/* 0x10 */ u8* mpColorChanNum;
/* 0x14 */ J3DColorChanInfo* mpColorChanInfo;
/* 0x18 */ u8* mpTexGenNum;
/* 0x1C */ J3DTexCoordInfo* mpTexCoordInfo;
/* 0x20 */ J3DTexCoord2Info* mpTexCoord2Info;
/* 0x24 */ J3DTexMtxInfo* mpTexMtxInfo;
/* 0x28 */ J3DTexMtxInfo* field_0x28;
/* 0x2C */ u16* mpTexNo;
/* 0x30 */ GXCullMode* mpCullMode;
/* 0x34 */ J3DTevOrderInfo* mpTevOrderInfo;
/* 0x38 */ GXColorS10* mpTevColor;
/* 0x3C */ GXColor* mpTevKColor;
/* 0x40 */ u8* mpTevStageNum;
/* 0x44 */ J3DTevStageInfo* mpTevStageInfo;
/* 0x48 */ J3DTevSwapModeInfo* mpTevSwapModeInfo;
/* 0x4C */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo;
/* 0x50 */ J3DFogInfo* mpFogInfo;
/* 0x54 */ J3DAlphaCompInfo* mpAlphaCompInfo;
/* 0x58 */ J3DBlendInfo* mpBlendInfo;
/* 0x5C */ J3DZModeInfo* mpZModeInfo;
/* 0x60 */ u8* mpZCompLoc;
/* 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
#define J3DMODELLOADER_H
#include "dolphin/types.h"
#include "dolphin/mtx.h"
class J3DModelData;
class J3DMaterialTable;
class J3DModelHierarchy;
struct J3DModelBlock {
/* 0x00 */ u32 mBlockType;
/* 0x04 */ u32 mBlockSize;
};
struct J3DModelFileData {
/* 0x00 */ u32 mMagic1;
/* 0x04 */ u32 mMagic2;
/* 0x08 */ u8 field_0x08[4];
/* 0x0C */ u32 mBlockNum;
/* 0x10 */ u8 field_0x10[0x10];
/* 0x20 */ J3DModelBlock mBlocks[1];
};
struct J3DModelInfoBlock : public J3DModelBlock {
/* 0x08 */ u16 mFlags;
/* 0x0C */ u32 mPacketNum;
/* 0x10 */ u32 mVtxNum;
/* 0x14 */ void* mpHierarchy;
}; // size 0x18
struct J3DVertexBlock : public J3DModelBlock {
/* 0x08 */ void* mpVtxAttrFmtList;
/* 0x0C */ void* mpVtxPosArray;
/* 0x10 */ void* mpVtxNrmArray;
/* 0x14 */ void* mpVtxNBTArray;
/* 0x18 */ void* mpVtxColorArray[2];
/* 0x20 */ void* mpVtxTexCoordArray[8];
}; // size 0x40
struct J3DEnvelopeBlock : public J3DModelBlock {
/* 0x08 */ u16 mWEvlpMtxNum;
/* 0x0C */ void* mpWEvlpMixMtxNum;
/* 0x10 */ void* mpWEvlpMixIndex;
/* 0x14 */ void* mpWEvlpMixWeight;
/* 0x18 */ void* mpInvJointMtx;
}; // size 0x1C
struct J3DDrawBlock : public J3DModelBlock {
/* 0x08 */ u16 mMtxNum;
/* 0x0C */ void* mpDrawMtxFlag;
/* 0x10 */ void* mpDrawMtxIndex;
}; // size 0x14
struct J3DJointBlock : public J3DModelBlock {
/* 0x08 */ u16 mJointNum;
/* 0x0C */ void* mpJointInitData;
/* 0x10 */ void* mpIndexTable;
/* 0x14 */ void* mpNameTable;
}; // size 0x18
struct J3DMaterialBlock : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpMaterialInitData;
/* 0x10 */ void* mpMaterialID;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpIndInitData;
/* 0x1C */ void* mpCullMode;
/* 0x20 */ void* mpMatColor;
/* 0x24 */ void* mpColorChanNum;
/* 0x28 */ void* mpColorChanInfo;
/* 0x2C */ void* mpAmbColor;
/* 0x30 */ void* mpLightInfo;
/* 0x34 */ void* mpTexGenNum;
/* 0x38 */ void* mpTexCoordInfo;
/* 0x3C */ void* mpTexCoord2Info;
/* 0x40 */ void* mpTexMtxInfo;
/* 0x44 */ void* field_0x44;
/* 0x48 */ void* mpTexNo;
/* 0x4C */ void* mpTevOrderInfo;
/* 0x50 */ void* mpTevColor;
/* 0x54 */ void* mpTevKColor;
/* 0x58 */ void* mpTevStageNum;
/* 0x5C */ void* mpTevStageInfo;
/* 0x60 */ void* mpTevSwapModeInfo;
/* 0x64 */ void* mpTevSwapModeTableInfo;
/* 0x68 */ void* mpFogInfo;
/* 0x6C */ void* mpAlphaCompInfo;
/* 0x70 */ void* mpBlendInfo;
/* 0x74 */ void* mpZModeInfo;
/* 0x78 */ void* mpZCompLoc;
/* 0x7C */ void* mpDither;
/* 0x80 */ void* mpNBTScaleInfo;
};
struct J3DMaterialBlock_v21 : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpMaterialInitData;
/* 0x10 */ void* mpMaterialID;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpCullMode;
/* 0x1C */ void* mpMatColor;
/* 0x20 */ void* mpColorChanNum;
/* 0x24 */ void* mpColorChanInfo;
/* 0x28 */ void* mpTexGenNum;
/* 0x2C */ void* mpTexCoordInfo;
/* 0x30 */ void* mpTexCoord2Info;
/* 0x34 */ void* mpTexMtxInfo;
/* 0x38 */ void* field_0x38;
/* 0x3C */ void* mpTexNo;
/* 0x40 */ void* mpTevOrderInfo;
/* 0x44 */ void* mpTevColor;
/* 0x48 */ void* mpTevKColor;
/* 0x4C */ void* mpTevStageNum;
/* 0x50 */ void* mpTevStageInfo;
/* 0x54 */ void* mpTevSwapModeInfo;
/* 0x58 */ void* mpTevSwapModeTableInfo;
/* 0x5C */ void* mpFogInfo;
/* 0x60 */ void* mpAlphaCompInfo;
/* 0x64 */ void* mpBlendInfo;
/* 0x68 */ void* mpZModeInfo;
/* 0x6C */ void* mpZCompLoc;
/* 0x70 */ void* mpDither;
/* 0x74 */ void* mpNBTScaleInfo;
};
struct J3DMaterialDLBlock : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpDisplayListInit;
/* 0x10 */ void* mpPatchingInfo;
/* 0x14 */ void* mpCurrentMtxInfo;
/* 0x18 */ void* mpMaterialMode;
/* 0x1C */ void* field_0x1c;
/* 0x20 */ void* mpNameTable;
};
struct J3DShapeBlock : public J3DModelBlock {
/* 0x08 */ u16 mShapeNum;
/* 0x0C */ void* mpShapeInitData;
/* 0x10 */ void* mpIndexTable;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpVtxDescList;
/* 0x1C */ void* mpMtxTable;
/* 0x20 */ void* mpDisplayListData;
/* 0x24 */ void* mpMtxInitData;
/* 0x28 */ void* mpDrawInitData;
}; // size 0x2C
struct J3DTextureBlock : public J3DModelBlock {
/* 0x08 */ u16 mTextureNum;
/* 0x0C */ void* mpTextureRes;
/* 0x10 */ void* mpNameTable;
};
class J3DModelLoader {
public:
/* 8033468C */ J3DModelLoader();
/* 80335048 */ void readInformation(J3DModelInfoBlock const*, u32);
/* 803351D0 */ void readVertex(J3DVertexBlock const*);
/* 803353F0 */ void readEnvelop(J3DEnvelopeBlock const*);
/* 80335480 */ void readDraw(J3DDrawBlock const*);
/* 80335530 */ void readJoint(J3DJointBlock const*);
/* 80335AF4 */ void readShape(J3DShapeBlock const*, u32);
/* 80335C18 */ void readTexture(J3DTextureBlock const*);
/* 80335F5C */ void readTextureTable(J3DTextureBlock const*);
/* 80336028 */ void readPatchedMaterial(J3DMaterialBlock const*, u32);
/* 80336168 */ void readMaterialDL(J3DMaterialDLBlock const*, u32);
/* 8033631C */ void modifyMaterial(u32);
/* 80336CD8 */ u32 calcSizeInformation(J3DModelInfoBlock const*, u32);
/* 80336D64 */ u32 calcSizeJoint(J3DJointBlock const*);
/* 80336D90 */ u32 calcSizeEnvelope(J3DEnvelopeBlock const*);
/* 80336DA0 */ u32 calcSizeDraw(J3DDrawBlock const*);
/* 80336EA0 */ u32 calcSizeShape(J3DShapeBlock const*, u32);
/* 80336F44 */ u32 calcSizeTexture(J3DTextureBlock const*);
/* 80336FF0 */ u32 calcSizeTextureTable(J3DTextureBlock const*);
/* 80337010 */ u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32);
/* 803370A0 */ u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32);
// virtuals
/* 803347E0 */ J3DModelData* load(void const*, u32);
/* 80334ABC */ J3DMaterialTable* loadMaterialTable(void const*);
/* 80334C20 */ J3DModelData* loadBinaryDisplayList(void const*, u32);
/* 803367D4 */ u32 calcLoadSize(void const*, u32);
/* 803369A0 */ u32 calcLoadMaterialTableSize(void const*);
/* 80336A98 */ u32 calcLoadBinaryDisplayListSize(void const*, u32);
/* 80336794 */ u16 countMaterialNum(void const*);
/* 80334EE0 */ void setupBBoardInfo();
/* 80336450 */ ~J3DModelLoader();
/* 8033649C */ void readMaterial(J3DMaterialBlock const*, u32);
/* 80336498 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
/* 803364A0 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A8 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 803364B0 */ 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;
};
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;
};
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;
};
class J3DModelLoaderDataBase {
public:
/* 803346BC */ static J3DModelData* load(void const* i_data, u32 i_flags);
};
#endif /* J3DMODELLOADER_H */
#ifndef J3DMODELLOADER_H
#define J3DMODELLOADER_H
#include "dolphin/mtx.h"
class J3DModelData;
class J3DMaterialTable;
class J3DModelHierarchy;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DModelBlock {
/* 0x00 */ u32 mBlockType;
/* 0x04 */ u32 mBlockSize;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DModelFileData {
/* 0x00 */ u32 mMagic1;
/* 0x04 */ u32 mMagic2;
/* 0x08 */ u8 field_0x08[4];
/* 0x0C */ u32 mBlockNum;
/* 0x10 */ u8 field_0x10[0x10];
/* 0x20 */ J3DModelBlock mBlocks[1];
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DModelInfoBlock : public J3DModelBlock {
/* 0x08 */ u16 mFlags;
/* 0x0C */ u32 mPacketNum;
/* 0x10 */ u32 mVtxNum;
/* 0x14 */ void* mpHierarchy;
}; // size 0x18
/**
* @ingroup jsystem-j3d
*
*/
struct J3DVertexBlock : public J3DModelBlock {
/* 0x08 */ void* mpVtxAttrFmtList;
/* 0x0C */ void* mpVtxPosArray;
/* 0x10 */ void* mpVtxNrmArray;
/* 0x14 */ void* mpVtxNBTArray;
/* 0x18 */ void* mpVtxColorArray[2];
/* 0x20 */ void* mpVtxTexCoordArray[8];
}; // size 0x40
/**
* @ingroup jsystem-j3d
*
*/
struct J3DEnvelopeBlock : public J3DModelBlock {
/* 0x08 */ u16 mWEvlpMtxNum;
/* 0x0C */ void* mpWEvlpMixMtxNum;
/* 0x10 */ void* mpWEvlpMixIndex;
/* 0x14 */ void* mpWEvlpMixWeight;
/* 0x18 */ void* mpInvJointMtx;
}; // size 0x1C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DDrawBlock : public J3DModelBlock {
/* 0x08 */ u16 mMtxNum;
/* 0x0C */ void* mpDrawMtxFlag;
/* 0x10 */ void* mpDrawMtxIndex;
}; // size 0x14
/**
* @ingroup jsystem-j3d
*
*/
struct J3DJointBlock : public J3DModelBlock {
/* 0x08 */ u16 mJointNum;
/* 0x0C */ void* mpJointInitData;
/* 0x10 */ void* mpIndexTable;
/* 0x14 */ void* mpNameTable;
}; // size 0x18
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialBlock : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpMaterialInitData;
/* 0x10 */ void* mpMaterialID;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpIndInitData;
/* 0x1C */ void* mpCullMode;
/* 0x20 */ void* mpMatColor;
/* 0x24 */ void* mpColorChanNum;
/* 0x28 */ void* mpColorChanInfo;
/* 0x2C */ void* mpAmbColor;
/* 0x30 */ void* mpLightInfo;
/* 0x34 */ void* mpTexGenNum;
/* 0x38 */ void* mpTexCoordInfo;
/* 0x3C */ void* mpTexCoord2Info;
/* 0x40 */ void* mpTexMtxInfo;
/* 0x44 */ void* field_0x44;
/* 0x48 */ void* mpTexNo;
/* 0x4C */ void* mpTevOrderInfo;
/* 0x50 */ void* mpTevColor;
/* 0x54 */ void* mpTevKColor;
/* 0x58 */ void* mpTevStageNum;
/* 0x5C */ void* mpTevStageInfo;
/* 0x60 */ void* mpTevSwapModeInfo;
/* 0x64 */ void* mpTevSwapModeTableInfo;
/* 0x68 */ void* mpFogInfo;
/* 0x6C */ void* mpAlphaCompInfo;
/* 0x70 */ void* mpBlendInfo;
/* 0x74 */ void* mpZModeInfo;
/* 0x78 */ void* mpZCompLoc;
/* 0x7C */ void* mpDither;
/* 0x80 */ void* mpNBTScaleInfo;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialBlock_v21 : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpMaterialInitData;
/* 0x10 */ void* mpMaterialID;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpCullMode;
/* 0x1C */ void* mpMatColor;
/* 0x20 */ void* mpColorChanNum;
/* 0x24 */ void* mpColorChanInfo;
/* 0x28 */ void* mpTexGenNum;
/* 0x2C */ void* mpTexCoordInfo;
/* 0x30 */ void* mpTexCoord2Info;
/* 0x34 */ void* mpTexMtxInfo;
/* 0x38 */ void* field_0x38;
/* 0x3C */ void* mpTexNo;
/* 0x40 */ void* mpTevOrderInfo;
/* 0x44 */ void* mpTevColor;
/* 0x48 */ void* mpTevKColor;
/* 0x4C */ void* mpTevStageNum;
/* 0x50 */ void* mpTevStageInfo;
/* 0x54 */ void* mpTevSwapModeInfo;
/* 0x58 */ void* mpTevSwapModeTableInfo;
/* 0x5C */ void* mpFogInfo;
/* 0x60 */ void* mpAlphaCompInfo;
/* 0x64 */ void* mpBlendInfo;
/* 0x68 */ void* mpZModeInfo;
/* 0x6C */ void* mpZCompLoc;
/* 0x70 */ void* mpDither;
/* 0x74 */ void* mpNBTScaleInfo;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialDLBlock : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpDisplayListInit;
/* 0x10 */ void* mpPatchingInfo;
/* 0x14 */ void* mpCurrentMtxInfo;
/* 0x18 */ void* mpMaterialMode;
/* 0x1C */ void* field_0x1c;
/* 0x20 */ void* mpNameTable;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeBlock : public J3DModelBlock {
/* 0x08 */ u16 mShapeNum;
/* 0x0C */ void* mpShapeInitData;
/* 0x10 */ void* mpIndexTable;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpVtxDescList;
/* 0x1C */ void* mpMtxTable;
/* 0x20 */ void* mpDisplayListData;
/* 0x24 */ void* mpMtxInitData;
/* 0x28 */ void* mpDrawInitData;
}; // size 0x2C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTextureBlock : public J3DModelBlock {
/* 0x08 */ u16 mTextureNum;
/* 0x0C */ void* mpTextureRes;
/* 0x10 */ void* mpNameTable;
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader {
public:
/* 8033468C */ J3DModelLoader();
/* 80335048 */ void readInformation(J3DModelInfoBlock const*, u32);
/* 803351D0 */ void readVertex(J3DVertexBlock const*);
/* 803353F0 */ void readEnvelop(J3DEnvelopeBlock const*);
/* 80335480 */ void readDraw(J3DDrawBlock const*);
/* 80335530 */ void readJoint(J3DJointBlock const*);
/* 80335AF4 */ void readShape(J3DShapeBlock const*, u32);
/* 80335C18 */ void readTexture(J3DTextureBlock const*);
/* 80335F5C */ void readTextureTable(J3DTextureBlock const*);
/* 80336028 */ void readPatchedMaterial(J3DMaterialBlock const*, u32);
/* 80336168 */ void readMaterialDL(J3DMaterialDLBlock const*, u32);
/* 8033631C */ void modifyMaterial(u32);
/* 80336CD8 */ u32 calcSizeInformation(J3DModelInfoBlock const*, u32);
/* 80336D64 */ u32 calcSizeJoint(J3DJointBlock const*);
/* 80336D90 */ u32 calcSizeEnvelope(J3DEnvelopeBlock const*);
/* 80336DA0 */ u32 calcSizeDraw(J3DDrawBlock const*);
/* 80336EA0 */ u32 calcSizeShape(J3DShapeBlock const*, u32);
/* 80336F44 */ u32 calcSizeTexture(J3DTextureBlock const*);
/* 80336FF0 */ u32 calcSizeTextureTable(J3DTextureBlock const*);
/* 80337010 */ u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32);
/* 803370A0 */ u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32);
// virtuals
/* 803347E0 */ J3DModelData* load(void const*, u32);
/* 80334ABC */ J3DMaterialTable* loadMaterialTable(void const*);
/* 80334C20 */ J3DModelData* loadBinaryDisplayList(void const*, u32);
/* 803367D4 */ u32 calcLoadSize(void const*, u32);
/* 803369A0 */ u32 calcLoadMaterialTableSize(void const*);
/* 80336A98 */ u32 calcLoadBinaryDisplayListSize(void const*, u32);
/* 80336794 */ u16 countMaterialNum(void const*);
/* 80334EE0 */ void setupBBoardInfo();
/* 80336450 */ ~J3DModelLoader();
/* 8033649C */ void readMaterial(J3DMaterialBlock const*, u32);
/* 80336498 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
/* 803364A0 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A8 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 803364B0 */ 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 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 "dolphin/gx/GXAttr.h"
#include "dolphin/mtx/vec.h"
class J3DShape;
class J3DShapeMtx;
class J3DShapeDraw;
struct ResNTAB;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeInitData {
/* 0x00 */ u8 mShapeMtxType;
/* 0x02 */ u16 mMtxGroupNum;
@ -21,17 +24,29 @@ struct J3DShapeInitData {
/* 0x1C */ Vec mMax;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeMtxInitData {
/* 0x00 */ u16 mUseMtxIndex;
/* 0x02 */ u16 mUseMtxCount;
/* 0x04 */ u32 mFirstUseMtxIndex;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeDrawInitData {
/* 0x00 */ u32 mDisplayListSize;
/* 0x04 */ u32 mDisplayListIndex;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeFactory {
/* 80337350 */ J3DShapeFactory(J3DShapeBlock const&);
/* 80337400 */ J3DShape* create(int, u32, GXVtxDescList*);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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