mirror of https://github.com/PrimeDecomp/prime.git
parent
95ea39c9cc
commit
6b27aee58d
|
@ -345,8 +345,8 @@ lbl_803766F0:
|
|||
/* 80376718 00373678 7C 08 03 A6 */ mtlr r0
|
||||
/* 8037671C 0037367C 4E 80 00 20 */ blr
|
||||
|
||||
.global __GXSaveCPUFifoAux
|
||||
__GXSaveCPUFifoAux:
|
||||
.global GXGetFifoPtrs
|
||||
GXGetFifoPtrs:
|
||||
/* 80376720 00373680 80 0D AC 88 */ lwz r0, lbl_805A9848@sda21(r13)
|
||||
/* 80376724 00373684 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 80376728 00373688 40 82 00 18 */ bne lbl_80376740
|
||||
|
@ -829,4 +829,3 @@ lbl_80376DA0:
|
|||
/* 80376DB4 00373D14 38 21 00 18 */ addi r1, r1, 0x18
|
||||
/* 80376DB8 00373D18 7C 08 03 A6 */ mtlr r0
|
||||
/* 80376DBC 00373D1C 4E 80 00 20 */ blr
|
||||
|
||||
|
|
|
@ -125,8 +125,8 @@ sub_8036cb78:
|
|||
/* 8036CB88 00369AE8 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 8036CB8C 00369AEC 4E 80 00 20 */ blr
|
||||
|
||||
.global sub_8036cb90
|
||||
sub_8036cb90:
|
||||
.global sub_8036cb90__19CFrameDelayedKillerFv
|
||||
sub_8036cb90__19CFrameDelayedKillerFv:
|
||||
/* 8036CB90 00369AF0 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 8036CB94 00369AF4 7C 08 02 A6 */ mflr r0
|
||||
/* 8036CB98 00369AF8 3C 60 80 54 */ lis r3, lbl_80540A4C@ha
|
||||
|
@ -250,7 +250,7 @@ sub_8036cd20:
|
|||
/* 8036CD2C 00369C8C 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 8036CD30 00369C90 3B E0 00 00 */ li r31, 0
|
||||
lbl_8036CD34:
|
||||
/* 8036CD34 00369C94 4B FF FE 5D */ bl sub_8036cb90
|
||||
/* 8036CD34 00369C94 4B FF FE 5D */ bl sub_8036cb90__19CFrameDelayedKillerFv
|
||||
/* 8036CD38 00369C98 3B FF 00 01 */ addi r31, r31, 1
|
||||
/* 8036CD3C 00369C9C 2C 1F 00 02 */ cmpwi r31, 2
|
||||
/* 8036CD40 00369CA0 41 80 FF F4 */ blt lbl_8036CD34
|
||||
|
|
|
@ -2456,7 +2456,7 @@ MyTHPGXYuv2RgbSetup__Fb:
|
|||
/* 8035D2EC 0035A24C 90 E1 00 68 */ stw r7, 0x68(r1)
|
||||
/* 8035D2F0 0035A250 90 C1 00 6C */ stw r6, 0x6c(r1)
|
||||
/* 8035D2F4 0035A254 90 01 00 70 */ stw r0, 0x70(r1)
|
||||
/* 8035D2F8 0035A258 4B FA B5 85 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8035D2F8 0035A258 4B FA B5 85 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8035D2FC 0035A25C 38 60 00 00 */ li r3, 0
|
||||
/* 8035D300 0035A260 38 80 00 01 */ li r4, 1
|
||||
/* 8035D304 0035A264 38 A0 00 00 */ li r5, 0
|
||||
|
@ -2771,7 +2771,7 @@ MyTHPGXRestore__Fv:
|
|||
/* 8035D7BC 0035A71C 38 80 00 07 */ li r4, 7
|
||||
/* 8035D7C0 0035A720 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8035D7C4 0035A724 38 A0 00 00 */ li r5, 0
|
||||
/* 8035D7C8 0035A728 4B FA B0 B5 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8035D7C8 0035A728 4B FA B0 B5 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8035D7CC 0035A72C 38 60 00 00 */ li r3, 0
|
||||
/* 8035D7D0 0035A730 38 80 00 01 */ li r4, 1
|
||||
/* 8035D7D4 0035A734 38 A0 00 00 */ li r5, 0
|
||||
|
|
|
@ -951,8 +951,8 @@ lbl_80308868:
|
|||
/* 80308874 003057D4 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80308878 003057D8 4E 80 00 20 */ blr
|
||||
|
||||
.global SetZMode__3CGXFb10_GXCompareb
|
||||
SetZMode__3CGXFb10_GXCompareb:
|
||||
.global SetZMode__3CGXFUi10_GXCompareUi
|
||||
SetZMode__3CGXFUi10_GXCompareUi:
|
||||
/* 8030887C 003057DC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80308880 003057E0 7C 08 02 A6 */ mflr r0
|
||||
/* 80308884 003057E4 3C C0 80 5A */ lis r6, sGXState__3CGX@ha
|
||||
|
@ -1465,4 +1465,3 @@ lbl_803D73B8:
|
|||
.4byte 0x00000003
|
||||
.4byte 0x000000FF
|
||||
.4byte 0
|
||||
|
||||
|
|
|
@ -3159,7 +3159,7 @@ SetDepthWriteMode__9CGraphicsFb8ERglEnumb:
|
|||
/* 8030BAA0 00308A00 54 A5 06 3E */ clrlwi r5, r5, 0x18
|
||||
/* 8030BAA4 00308A04 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8030BAA8 00308A08 90 8D 9C 70 */ stw r4, mDepthFunc__9CGraphics@sda21(r13)
|
||||
/* 8030BAAC 00308A0C 4B FF CD D1 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8030BAAC 00308A0C 4B FF CD D1 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8030BAB0 00308A10 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8030BAB4 00308A14 7C 08 03 A6 */ mtlr r0
|
||||
/* 8030BAB8 00308A18 38 21 00 10 */ addi r1, r1, 0x10
|
||||
|
@ -3176,7 +3176,7 @@ EndScene__9CGraphicsFv:
|
|||
/* 8030BAD8 00308A38 93 E1 00 9C */ stw r31, 0x9c(r1)
|
||||
/* 8030BADC 00308A3C 93 C1 00 98 */ stw r30, 0x98(r1)
|
||||
/* 8030BAE0 00308A40 93 A1 00 94 */ stw r29, 0x94(r1)
|
||||
/* 8030BAE4 00308A44 4B FF CD 99 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8030BAE4 00308A44 4B FF CD 99 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8030BAE8 00308A48 3B AD A8 0C */ addi r29, r13, mNumBreakpointsWaiting__9CGraphics@sda21
|
||||
/* 8030BAEC 00308A4C 48 00 00 08 */ b lbl_8030BAF4
|
||||
lbl_8030BAF0:
|
||||
|
@ -3311,7 +3311,7 @@ lbl_8030BB40:
|
|||
/* 8030BCE8 00308C48 48 06 AE 45 */ bl GXGetGPFifo
|
||||
/* 8030BCEC 00308C4C 38 81 00 0C */ addi r4, r1, 0xc
|
||||
/* 8030BCF0 00308C50 38 A1 00 08 */ addi r5, r1, 8
|
||||
/* 8030BCF4 00308C54 48 06 AA 2D */ bl __GXSaveCPUFifoAux
|
||||
/* 8030BCF4 00308C54 48 06 AA 2D */ bl GXGetFifoPtrs
|
||||
/* 8030BCF8 00308C58 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8030BCFC 00308C5C 48 06 AB 01 */ bl GXEnableBreakPt
|
||||
/* 8030BD00 00308C60 80 6D A8 00 */ lwz r3, mFrameCounter__9CGraphics@sda21(r13)
|
||||
|
@ -3319,7 +3319,7 @@ lbl_8030BB40:
|
|||
/* 8030BD08 00308C68 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 8030BD0C 00308C6C 98 8D A8 14 */ stb r4, mLastFrameUsedAbove__9CGraphics@sda21(r13)
|
||||
/* 8030BD10 00308C70 90 0D A8 00 */ stw r0, mFrameCounter__9CGraphics@sda21(r13)
|
||||
/* 8030BD14 00308C74 48 06 0E 7D */ bl sub_8036cb90
|
||||
/* 8030BD14 00308C74 48 06 0E 7D */ bl sub_8036cb90__19CFrameDelayedKillerFv
|
||||
/* 8030BD18 00308C78 80 01 00 A4 */ lwz r0, 0xa4(r1)
|
||||
/* 8030BD1C 00308C7C 83 E1 00 9C */ lwz r31, 0x9c(r1)
|
||||
/* 8030BD20 00308C80 83 C1 00 98 */ lwz r30, 0x98(r1)
|
||||
|
|
|
@ -2197,7 +2197,7 @@ RenderParticlesIndirectTexture__11CElementGenFv:
|
|||
/* 80319408 00316368 38 60 00 01 */ li r3, 1
|
||||
/* 8031940C 0031636C 38 80 00 03 */ li r4, 3
|
||||
/* 80319410 00316370 38 A0 00 00 */ li r5, 0
|
||||
/* 80319414 00316374 4B FE F4 69 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80319414 00316374 4B FE F4 69 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80319418 00316378 38 60 00 01 */ li r3, 1
|
||||
/* 8031941C 0031637C 38 80 00 04 */ li r4, 4
|
||||
/* 80319420 00316380 38 A0 00 01 */ li r5, 1
|
||||
|
@ -2208,7 +2208,7 @@ lbl_80319430:
|
|||
/* 80319430 00316390 54 65 E7 FE */ rlwinm r5, r3, 0x1c, 0x1f, 0x1f
|
||||
/* 80319434 00316394 38 60 00 01 */ li r3, 1
|
||||
/* 80319438 00316398 38 80 00 03 */ li r4, 3
|
||||
/* 8031943C 0031639C 4B FE F4 41 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8031943C 0031639C 4B FE F4 41 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80319440 003163A0 38 60 00 01 */ li r3, 1
|
||||
/* 80319444 003163A4 38 80 00 04 */ li r4, 4
|
||||
/* 80319448 003163A8 38 A0 00 05 */ li r5, 5
|
||||
|
|
|
@ -939,7 +939,7 @@ lbl_802B6568:
|
|||
/* 802B6700 002B3660 38 60 00 00 */ li r3, 0
|
||||
/* 802B6704 002B3664 38 80 00 07 */ li r4, 7
|
||||
/* 802B6708 002B3668 38 A0 00 00 */ li r5, 0
|
||||
/* 802B670C 002B366C 48 05 21 71 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B670C 002B366C 48 05 21 71 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B6710 002B3670 38 60 00 00 */ li r3, 0
|
||||
/* 802B6714 002B3674 48 0C 24 45 */ bl GXSetCullMode
|
||||
/* 802B6718 002B3678 38 60 00 01 */ li r3, 1
|
||||
|
@ -2684,7 +2684,7 @@ lbl_802B801C:
|
|||
/* 802B8030 002B4F90 38 80 00 03 */ li r4, 3
|
||||
lbl_802B8034:
|
||||
/* 802B8034 002B4F94 54 A5 FF FE */ rlwinm r5, r5, 0x1f, 0x1f, 0x1f
|
||||
/* 802B8038 002B4F98 48 05 08 45 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B8038 002B4F98 48 05 08 45 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B803C 002B4F9C 38 60 00 01 */ li r3, 1
|
||||
/* 802B8040 002B4FA0 48 05 0C 51 */ bl SetNumTevStages__3CGXFUc
|
||||
/* 802B8044 002B4FA4 38 60 00 01 */ li r3, 1
|
||||
|
@ -2992,7 +2992,7 @@ DrawModelDisintegrate__13CCubeRendererFRC6CModelRC8CTextureRC6CColorPCfPCf:
|
|||
/* 802B84EC 002B544C 38 60 00 01 */ li r3, 1
|
||||
/* 802B84F0 002B5450 38 80 00 03 */ li r4, 3
|
||||
/* 802B84F4 002B5454 38 A0 00 01 */ li r5, 1
|
||||
/* 802B84F8 002B5458 48 05 03 85 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B84F8 002B5458 48 05 03 85 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B84FC 002B545C 7F A3 EB 78 */ mr r3, r29
|
||||
/* 802B8500 002B5460 48 09 CC 21 */ bl UpdateLastFrame__6CModelFv
|
||||
/* 802B8504 002B5464 80 7D 00 28 */ lwz r3, 0x28(r29)
|
||||
|
@ -3162,7 +3162,7 @@ sub_802b85cc:
|
|||
/* 802B877C 002B56DC 7C 00 00 34 */ cntlzw r0, r0
|
||||
/* 802B8780 002B56E0 54 63 D9 7E */ srwi r3, r3, 5
|
||||
/* 802B8784 002B56E4 54 05 D9 7E */ srwi r5, r0, 5
|
||||
/* 802B8788 002B56E8 48 05 00 F5 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B8788 002B56E8 48 05 00 F5 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B878C 002B56EC A0 1F 00 02 */ lhz r0, 2(r31)
|
||||
/* 802B8790 002B56F0 7F 83 E3 78 */ mr r3, r28
|
||||
/* 802B8794 002B56F4 7F A4 EB 78 */ mr r4, r29
|
||||
|
@ -4515,7 +4515,7 @@ lbl_802B9A98:
|
|||
/* 802B9AC8 002B6A28 38 60 00 01 */ li r3, 1
|
||||
/* 802B9ACC 002B6A2C 38 80 00 03 */ li r4, 3
|
||||
/* 802B9AD0 002B6A30 38 A0 00 01 */ li r5, 1
|
||||
/* 802B9AD4 002B6A34 48 04 ED A9 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B9AD4 002B6A34 48 04 ED A9 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B9AD8 002B6A38 38 60 00 01 */ li r3, 1
|
||||
/* 802B9ADC 002B6A3C 48 04 F1 B5 */ bl SetNumTevStages__3CGXFUc
|
||||
/* 802B9AE0 002B6A40 38 60 00 01 */ li r3, 1
|
||||
|
@ -4548,7 +4548,7 @@ lbl_802B9A98:
|
|||
/* 802B9B4C 002B6AAC 38 60 00 00 */ li r3, 0
|
||||
/* 802B9B50 002B6AB0 38 80 00 07 */ li r4, 7
|
||||
/* 802B9B54 002B6AB4 38 A0 00 00 */ li r5, 0
|
||||
/* 802B9B58 002B6AB8 48 04 ED 25 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B9B58 002B6AB8 48 04 ED 25 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B9B5C 002B6ABC 7F 43 D3 78 */ mr r3, r26
|
||||
/* 802B9B60 002B6AC0 7F 64 DB 78 */ mr r4, r27
|
||||
/* 802B9B64 002B6AC4 7F E6 FB 78 */ mr r6, r31
|
||||
|
@ -4558,7 +4558,7 @@ lbl_802B9A98:
|
|||
/* 802B9B74 002B6AD4 38 60 00 01 */ li r3, 1
|
||||
/* 802B9B78 002B6AD8 38 80 00 03 */ li r4, 3
|
||||
/* 802B9B7C 002B6ADC 38 A0 00 01 */ li r5, 1
|
||||
/* 802B9B80 002B6AE0 48 04 EC FD */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B9B80 002B6AE0 48 04 EC FD */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
lbl_802B9B84:
|
||||
/* 802B9B84 002B6AE4 38 60 00 01 */ li r3, 1
|
||||
/* 802B9B88 002B6AE8 38 80 00 00 */ li r4, 0
|
||||
|
@ -4586,7 +4586,7 @@ lbl_802B9B84:
|
|||
/* 802B9BE0 002B6B40 38 60 00 01 */ li r3, 1
|
||||
/* 802B9BE4 002B6B44 38 80 00 04 */ li r4, 4
|
||||
/* 802B9BE8 002B6B48 38 A0 00 00 */ li r5, 0
|
||||
/* 802B9BEC 002B6B4C 48 04 EC 91 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B9BEC 002B6B4C 48 04 EC 91 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B9BF0 002B6B50 7F 43 D3 78 */ mr r3, r26
|
||||
/* 802B9BF4 002B6B54 7F 64 DB 78 */ mr r4, r27
|
||||
/* 802B9BF8 002B6B58 7F E6 FB 78 */ mr r6, r31
|
||||
|
@ -4596,7 +4596,7 @@ lbl_802B9B84:
|
|||
/* 802B9C08 002B6B68 38 60 00 01 */ li r3, 1
|
||||
/* 802B9C0C 002B6B6C 38 80 00 03 */ li r4, 3
|
||||
/* 802B9C10 002B6B70 38 A0 00 01 */ li r5, 1
|
||||
/* 802B9C14 002B6B74 48 04 EC 69 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B9C14 002B6B74 48 04 EC 69 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
lbl_802B9C18:
|
||||
/* 802B9C18 002B6B78 80 61 03 28 */ lwz r3, 0x328(r1)
|
||||
/* 802B9C1C 002B6B7C 38 80 00 00 */ li r4, 0
|
||||
|
@ -4691,7 +4691,7 @@ lbl_802B9C18:
|
|||
/* 802B9D80 002B6CE0 38 60 00 00 */ li r3, 0
|
||||
/* 802B9D84 002B6CE4 38 80 00 07 */ li r4, 7
|
||||
/* 802B9D88 002B6CE8 38 A0 00 00 */ li r5, 0
|
||||
/* 802B9D8C 002B6CEC 48 04 EA F1 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802B9D8C 002B6CEC 48 04 EA F1 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802B9D90 002B6CF0 38 60 00 00 */ li r3, 0
|
||||
/* 802B9D94 002B6CF4 48 0B ED C5 */ bl GXSetCullMode
|
||||
/* 802B9D98 002B6CF8 38 60 00 00 */ li r3, 0
|
||||
|
@ -5205,7 +5205,7 @@ DoThermalBlendHot__13CCubeRendererFv:
|
|||
/* 802BA4F8 002B7458 38 A0 00 01 */ li r5, 1
|
||||
/* 802BA4FC 002B745C 83 E6 00 08 */ lwz r31, 8(r6)
|
||||
/* 802BA500 002B7460 83 C6 00 0C */ lwz r30, 0xc(r6)
|
||||
/* 802BA504 002B7464 48 04 E3 79 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802BA504 002B7464 48 04 E3 79 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802BA508 002B7468 57 A3 04 3E */ clrlwi r3, r29, 0x10
|
||||
/* 802BA50C 002B746C 57 84 04 3E */ clrlwi r4, r28, 0x10
|
||||
/* 802BA510 002B7470 57 E5 04 3E */ clrlwi r5, r31, 0x10
|
||||
|
@ -5269,7 +5269,7 @@ DoThermalBlendHot__13CCubeRendererFv:
|
|||
/* 802BA5F8 002B7558 38 60 00 00 */ li r3, 0
|
||||
/* 802BA5FC 002B755C 38 80 00 03 */ li r4, 3
|
||||
/* 802BA600 002B7560 38 A0 00 00 */ li r5, 0
|
||||
/* 802BA604 002B7564 48 04 E2 79 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802BA604 002B7564 48 04 E2 79 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802BA608 002B7568 3C 60 80 3D */ lis r3, lbl_803D6654@ha
|
||||
/* 802BA60C 002B756C 38 63 66 54 */ addi r3, r3, lbl_803D6654@l
|
||||
/* 802BA610 002B7570 48 04 D8 19 */ bl SetVtxDescv__3CGXFPC14_GXVtxDescList
|
||||
|
@ -5426,7 +5426,7 @@ DoThermalBlendCold__13CCubeRendererFv:
|
|||
/* 802BA860 002B77C0 38 A0 00 00 */ li r5, 0
|
||||
/* 802BA864 002B77C4 83 C6 00 08 */ lwz r30, 8(r6)
|
||||
/* 802BA868 002B77C8 83 A6 00 0C */ lwz r29, 0xc(r6)
|
||||
/* 802BA86C 002B77CC 48 04 E0 11 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802BA86C 002B77CC 48 04 E0 11 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802BA870 002B77D0 57 E3 04 3E */ clrlwi r3, r31, 0x10
|
||||
/* 802BA874 002B77D4 57 64 04 3E */ clrlwi r4, r27, 0x10
|
||||
/* 802BA878 002B77D8 57 C5 04 3E */ clrlwi r5, r30, 0x10
|
||||
|
@ -5664,7 +5664,7 @@ lbl_802BAA1C:
|
|||
/* 802BAC08 002B7B68 38 60 00 00 */ li r3, 0
|
||||
/* 802BAC0C 002B7B6C 38 80 00 07 */ li r4, 7
|
||||
/* 802BAC10 002B7B70 38 A0 00 00 */ li r5, 0
|
||||
/* 802BAC14 002B7B74 48 04 DC 69 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802BAC14 002B7B74 48 04 DC 69 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802BAC18 002B7B78 3C 60 80 3D */ lis r3, lbl_803D6624@ha
|
||||
/* 802BAC1C 002B7B7C 38 63 66 24 */ addi r3, r3, lbl_803D6624@l
|
||||
/* 802BAC20 002B7B80 48 04 D2 09 */ bl SetVtxDescv__3CGXFPC14_GXVtxDescList
|
||||
|
@ -7128,7 +7128,7 @@ lbl_802BBEB8:
|
|||
/* 802BC198 002B90F8 38 60 00 00 */ li r3, 0
|
||||
/* 802BC19C 002B90FC 38 80 00 07 */ li r4, 7
|
||||
/* 802BC1A0 002B9100 38 A0 00 00 */ li r5, 0
|
||||
/* 802BC1A4 002B9104 48 04 C6 D9 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802BC1A4 002B9104 48 04 C6 D9 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802BC1A8 002B9108 38 60 00 00 */ li r3, 0
|
||||
/* 802BC1AC 002B910C 48 0B C9 AD */ bl GXSetCullMode
|
||||
/* 802BC1B0 002B9110 38 60 00 A0 */ li r3, 0xa0
|
||||
|
@ -7332,7 +7332,7 @@ lbl_802BC424:
|
|||
/* 802BC4A0 002B9400 38 60 00 01 */ li r3, 1
|
||||
/* 802BC4A4 002B9404 38 80 00 03 */ li r4, 3
|
||||
/* 802BC4A8 002B9408 38 A0 00 01 */ li r5, 1
|
||||
/* 802BC4AC 002B940C 48 04 C3 D1 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802BC4AC 002B940C 48 04 C3 D1 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802BC4B0 002B9410 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802BC4B4 002B9414 38 80 00 01 */ li r4, 1
|
||||
/* 802BC4B8 002B9418 48 0B D0 7D */ bl GXCopyTex
|
||||
|
@ -7350,7 +7350,7 @@ lbl_802BC424:
|
|||
/* 802BC4E8 002B9448 7C 1B 03 78 */ mr r27, r0
|
||||
/* 802BC4EC 002B944C 38 80 00 03 */ li r4, 3
|
||||
/* 802BC4F0 002B9450 38 A0 00 01 */ li r5, 1
|
||||
/* 802BC4F4 002B9454 48 04 C3 89 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 802BC4F4 002B9454 48 04 C3 89 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 802BC4F8 002B9458 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802BC4FC 002B945C 57 E4 06 3E */ clrlwi r4, r31, 0x18
|
||||
/* 802BC500 002B9460 48 0B D0 35 */ bl GXCopyTex
|
||||
|
|
|
@ -2294,7 +2294,7 @@ lbl_8019B99C:
|
|||
/* 8019B99C 001988FC 38 60 00 01 */ li r3, 1
|
||||
/* 8019B9A0 00198900 38 80 00 03 */ li r4, 3
|
||||
/* 8019B9A4 00198904 38 A0 00 00 */ li r5, 0
|
||||
/* 8019B9A8 00198908 48 16 CE D5 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8019B9A8 00198908 48 16 CE D5 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8019B9AC 0019890C 38 60 00 07 */ li r3, 7
|
||||
/* 8019B9B0 00198910 38 80 00 00 */ li r4, 0
|
||||
/* 8019B9B4 00198914 38 A0 00 00 */ li r5, 0
|
||||
|
|
|
@ -576,7 +576,7 @@ lbl_8019DBA4:
|
|||
/* 8019DBB4 0019AB14 38 60 00 01 */ li r3, 1
|
||||
/* 8019DBB8 0019AB18 38 80 00 03 */ li r4, 3
|
||||
/* 8019DBBC 0019AB1C 38 A0 00 00 */ li r5, 0
|
||||
/* 8019DBC0 0019AB20 48 16 AC BD */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8019DBC0 0019AB20 48 16 AC BD */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8019DBC4 0019AB24 38 60 00 07 */ li r3, 7
|
||||
/* 8019DBC8 0019AB28 38 80 00 00 */ li r4, 0
|
||||
/* 8019DBCC 0019AB2C 38 A0 00 00 */ li r5, 0
|
||||
|
@ -718,4 +718,3 @@ lbl_803D1300:
|
|||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
|
||||
|
|
|
@ -387,7 +387,7 @@ sub_80293e2c:
|
|||
/* 80294044 00290FA4 38 60 00 01 */ li r3, 1
|
||||
/* 80294048 00290FA8 38 80 00 07 */ li r4, 7
|
||||
/* 8029404C 00290FAC 38 A0 00 00 */ li r5, 0
|
||||
/* 80294050 00290FB0 48 07 48 2D */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80294050 00290FB0 48 07 48 2D */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80294054 00290FB4 7F A4 EB 78 */ mr r4, r29
|
||||
/* 80294058 00290FB8 38 60 00 00 */ li r3, 0
|
||||
/* 8029405C 00290FBC 48 07 4B E9 */ bl SetTevKColor__3CGXF14_GXTevKColorIDRC8_GXColor
|
||||
|
|
|
@ -186,7 +186,7 @@ lbl_8029D928:
|
|||
/* 8029D930 0029A890 38 60 00 01 */ li r3, 1
|
||||
/* 8029D934 0029A894 38 80 00 02 */ li r4, 2
|
||||
/* 8029D938 0029A898 38 A0 00 00 */ li r5, 0
|
||||
/* 8029D93C 0029A89C 48 06 AF 41 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8029D93C 0029A89C 48 06 AF 41 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8029D940 0029A8A0 38 60 00 01 */ li r3, 1
|
||||
/* 8029D944 0029A8A4 38 80 00 04 */ li r4, 4
|
||||
/* 8029D948 0029A8A8 38 A0 00 05 */ li r5, 5
|
||||
|
@ -354,7 +354,7 @@ lbl_8029DB80:
|
|||
/* 8029DBC4 0029AB24 38 60 00 01 */ li r3, 1
|
||||
/* 8029DBC8 0029AB28 38 80 00 03 */ li r4, 3
|
||||
/* 8029DBCC 0029AB2C 38 A0 00 01 */ li r5, 1
|
||||
/* 8029DBD0 0029AB30 48 06 AC AD */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8029DBD0 0029AB30 48 06 AC AD */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8029DBD4 0029AB34 38 60 00 07 */ li r3, 7
|
||||
/* 8029DBD8 0029AB38 38 80 00 00 */ li r4, 0
|
||||
/* 8029DBDC 0029AB3C 38 A0 00 00 */ li r5, 0
|
||||
|
@ -716,7 +716,7 @@ RenderShadowBuffer__16CProjectedShadowFR13CStateManagerRC10CModelDataRC12CTransf
|
|||
/* 8029E13C 0029B09C 38 60 00 01 */ li r3, 1
|
||||
/* 8029E140 0029B0A0 38 80 00 03 */ li r4, 3
|
||||
/* 8029E144 0029B0A4 38 A0 00 01 */ li r5, 1
|
||||
/* 8029E148 0029B0A8 48 06 A7 35 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8029E148 0029B0A8 48 06 A7 35 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8029E14C 0029B0AC 57 A5 04 3E */ clrlwi r5, r29, 0x10
|
||||
/* 8029E150 0029B0B0 57 86 04 3E */ clrlwi r6, r28, 0x10
|
||||
/* 8029E154 0029B0B4 38 60 00 00 */ li r3, 0
|
||||
|
|
|
@ -442,7 +442,7 @@ DoDraw__20CRainSplashGeneratorCFRC12CTransform4f:
|
|||
/* 8026A2A0 00267200 38 60 00 01 */ li r3, 1
|
||||
/* 8026A2A4 00267204 38 80 00 03 */ li r4, 3
|
||||
/* 8026A2A8 00267208 38 A0 00 00 */ li r5, 0
|
||||
/* 8026A2AC 0026720C 48 09 E5 D1 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 8026A2AC 0026720C 48 09 E5 D1 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8026A2B0 00267210 80 8D 9C 68 */ lwz r4, kEnvPassthru__9CGraphics@sda21(r13)
|
||||
/* 8026A2B4 00267214 38 60 00 00 */ li r3, 0
|
||||
/* 8026A2B8 00267218 48 0A 00 01 */ bl SetTevOp__9CGraphicsF12ERglTevStageRCQ213CTevCombiners8CTevPass
|
||||
|
@ -1328,4 +1328,3 @@ lbl_803D5410:
|
|||
# ROM: 0x3D2410
|
||||
.asciz "??(??)"
|
||||
.balign 4
|
||||
|
||||
|
|
|
@ -1052,7 +1052,7 @@ lbl_80209B80:
|
|||
/* 80209BD8 00206B38 38 60 00 01 */ li r3, 1
|
||||
/* 80209BDC 00206B3C 38 80 00 03 */ li r4, 3
|
||||
/* 80209BE0 00206B40 38 A0 00 01 */ li r5, 1
|
||||
/* 80209BE4 00206B44 48 0F EC 99 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80209BE4 00206B44 48 0F EC 99 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80209BE8 00206B48 57 E3 04 3E */ clrlwi r3, r31, 0x10
|
||||
/* 80209BEC 00206B4C 57 C4 04 3E */ clrlwi r4, r30, 0x10
|
||||
/* 80209BF0 00206B50 38 A0 00 04 */ li r5, 4
|
||||
|
@ -1158,7 +1158,7 @@ lbl_80209B80:
|
|||
/* 80209D80 00206CE0 38 60 00 00 */ li r3, 0
|
||||
/* 80209D84 00206CE4 38 80 00 07 */ li r4, 7
|
||||
/* 80209D88 00206CE8 38 A0 00 00 */ li r5, 0
|
||||
/* 80209D8C 00206CEC 48 0F EA F1 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80209D8C 00206CEC 48 0F EA F1 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80209D90 00206CF0 38 60 00 A0 */ li r3, 0xa0
|
||||
/* 80209D94 00206CF4 38 80 00 00 */ li r4, 0
|
||||
/* 80209D98 00206CF8 38 A0 00 04 */ li r5, 4
|
||||
|
|
|
@ -320,7 +320,7 @@ lbl_80295F84:
|
|||
/* 80295F90 00292EF0 38 80 00 02 */ li r4, 2
|
||||
/* 80295F94 00292EF4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80295F98 00292EF8 38 A0 00 00 */ li r5, 0
|
||||
/* 80295F9C 00292EFC 48 07 28 E1 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80295F9C 00292EFC 48 07 28 E1 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80295FA0 00292F00 38 60 00 01 */ li r3, 1
|
||||
/* 80295FA4 00292F04 38 80 00 04 */ li r4, 4
|
||||
/* 80295FA8 00292F08 38 A0 00 05 */ li r5, 5
|
||||
|
@ -718,7 +718,7 @@ lbl_802963B0:
|
|||
/* 8029658C 002934EC 38 60 00 01 */ li r3, 1
|
||||
/* 80296590 002934F0 38 80 00 07 */ li r4, 7
|
||||
/* 80296594 002934F4 38 A0 00 01 */ li r5, 1
|
||||
/* 80296598 002934F8 48 07 22 E5 */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80296598 002934F8 48 07 22 E5 */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 8029659C 002934FC 38 60 00 00 */ li r3, 0
|
||||
/* 802965A0 00293500 48 07 54 D1 */ bl SetCullMode__9CGraphicsF12ERglCullMode
|
||||
/* 802965A4 00293504 3C 60 80 5A */ lis r3, sIdentity__12CTransform4f@ha
|
||||
|
@ -808,7 +808,7 @@ lbl_802963B0:
|
|||
/* 802966F4 00293654 38 60 00 01 */ li r3, 1
|
||||
/* 802966F8 00293658 38 80 00 03 */ li r4, 3
|
||||
/* 802966FC 0029365C 38 A0 00 01 */ li r5, 1
|
||||
/* 80296700 00293660 48 07 21 7D */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80296700 00293660 48 07 21 7D */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80296704 00293664 48 07 62 79 */ bl DisableAllLights__9CGraphicsFv
|
||||
/* 80296708 00293668 38 60 00 01 */ li r3, 1
|
||||
/* 8029670C 0029366C 48 0A F0 DD */ bl SetRenderModelBlack__10CCubeModelFb
|
||||
|
@ -975,7 +975,7 @@ lbl_80296888:
|
|||
/* 80296974 002938D4 38 60 00 01 */ li r3, 1
|
||||
/* 80296978 002938D8 38 80 00 03 */ li r4, 3
|
||||
/* 8029697C 002938DC 38 A0 00 01 */ li r5, 1
|
||||
/* 80296980 002938E0 48 07 1E FD */ bl SetZMode__3CGXFb10_GXCompareb
|
||||
/* 80296980 002938E0 48 07 1E FD */ bl SetZMode__3CGXFUi10_GXCompareUi
|
||||
/* 80296984 002938E4 38 61 01 A0 */ addi r3, r1, 0x1a0
|
||||
/* 80296988 002938E8 48 07 5D C5 */ bl SetViewPointMatrix__9CGraphicsFRC12CTransform4f
|
||||
/* 8029698C 002938EC 38 61 00 94 */ addi r3, r1, 0x94
|
||||
|
|
|
@ -1190,4 +1190,3 @@ lbl_803D6550:
|
|||
.4byte 0x00000001
|
||||
.4byte 0x000000FF
|
||||
.4byte 0
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@ class CFrameDelayedKiller {
|
|||
public:
|
||||
static void Initialize();
|
||||
static void ShutDown();
|
||||
|
||||
static void sub_8036cb90();
|
||||
};
|
||||
|
||||
#endif // _CFRAMEDELAYEDKILLER
|
||||
|
|
|
@ -107,7 +107,8 @@ public:
|
|||
GXChannelID color);
|
||||
static void SetBlendMode(GXBlendMode mode, GXBlendFactor srcFac, GXBlendFactor dstFac,
|
||||
GXLogicOp op);
|
||||
static void SetZMode(bool compareEnable, GXCompare func, bool updateEnable);
|
||||
// TODO: GXBool doesn't work, why?
|
||||
static void SetZMode(uint compareEnable, GXCompare func, uint updateEnable);
|
||||
static void SetAlphaCompare(GXCompare comp0, uchar ref0, GXAlphaOp op, GXCompare comp1,
|
||||
uchar ref1);
|
||||
static void SetTevIndirect(GXTevStageID stageId, GXIndTexStageID indStage, GXIndTexFormat fmt,
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "Kyoto/Graphics/CColor.hpp"
|
||||
#include "Kyoto/Graphics/CLight.hpp"
|
||||
#include "Kyoto/Graphics/CTevCombiners.hpp"
|
||||
#include "Kyoto/Math/CMatrix4f.hpp"
|
||||
#include "Kyoto/Math/CTransform4f.hpp"
|
||||
#include "Kyoto/Math/CVector3f.hpp"
|
||||
|
||||
|
@ -158,8 +159,10 @@ struct CViewport {
|
|||
};
|
||||
|
||||
class COsContext;
|
||||
class CTexture;
|
||||
class CTimeProvider;
|
||||
|
||||
// TODO
|
||||
typedef struct {
|
||||
float x;
|
||||
float y;
|
||||
|
@ -189,6 +192,11 @@ public:
|
|||
, x14_near(near)
|
||||
, x18_far(far) {}
|
||||
|
||||
bool IsPerspective() const { return x0_persp; }
|
||||
float GetLeft() const { return x4_left; }
|
||||
float GetRight() const { return x8_right; }
|
||||
float GetTop() const { return xc_top; }
|
||||
float GetBottom() const { return x10_bottom; }
|
||||
float GetNear() const { return x14_near; }
|
||||
float GetFar() const { return x18_far; }
|
||||
|
||||
|
@ -212,20 +220,26 @@ public:
|
|||
static void LoadLight(ERglLight light, const CLight& info);
|
||||
static void SetLightState(uchar lights);
|
||||
static void SetViewMatrix();
|
||||
static void SetScissor(int left, int bottom, int width, int height);
|
||||
static void ClearBackAndDepthBuffers();
|
||||
|
||||
static void SetIdentityViewPointMatrix();
|
||||
static void SetIdentityModelMatrix();
|
||||
static void SetViewport(int left, int bottom, int width, int height);
|
||||
static void SetPerspective(float fovy, float aspect, float znear, float zfar);
|
||||
static void SetCopyClear(const CColor& color, float depth);
|
||||
static void SetClearColor(const CColor& color);
|
||||
static void SetDepthRange(float near, float far);
|
||||
static void FlushProjection();
|
||||
static void SetDefaultVtxAttrFmt();
|
||||
static CMatrix4f GetPerspectiveProjectionMatrix();
|
||||
static CMatrix4f CalculatePerspectiveMatrix(float fovy, float aspect, float znear, float zfar);
|
||||
|
||||
static bool IsBeginSceneClearFb();
|
||||
static void SetIsBeginSceneClearFb(bool);
|
||||
static void BeginScene();
|
||||
static void EndScene();
|
||||
static void SwapBuffers();
|
||||
static void SetTevOp(ERglTevStage stage, const CTevCombiners::CTevPass& pass);
|
||||
static void StreamBegin(ERglPrimitive primitive);
|
||||
static void StreamColor(uint color);
|
||||
|
@ -234,7 +248,13 @@ public:
|
|||
static void StreamVertex(float, float, float);
|
||||
static void StreamVertex(const CVector3f& vtx);
|
||||
static void StreamVertex(const float*);
|
||||
static void StreamNormal(const float*);
|
||||
static void StreamEnd();
|
||||
static void Render2D(const CTexture& tex, int x, int y, int w, int h, const CColor& col);
|
||||
static void DrawPrimitive(ERglPrimitive primitive, const float* pos, const CVector3f& normal, const CColor& col, int numVerts);
|
||||
|
||||
static void VideoPreCallback(u32 retraceCount);
|
||||
static void VideoPostCallback(u32 retraceCount);
|
||||
|
||||
static const CViewport& GetViewport() { return mViewport; }
|
||||
static const CVector3f& GetViewPoint() { return mViewPoint; }
|
||||
|
@ -252,11 +272,13 @@ public:
|
|||
static void SetFog(ERglFogMode mode, float startz, float endz, const CColor& color);
|
||||
|
||||
static void SetModelMatrix(const CTransform4f& xf);
|
||||
static void SetAlphaCompare(ERglAlphaFunc comp0, u8 ref0, ERglAlphaOp op, ERglAlphaFunc comp1,
|
||||
u8 ref1);
|
||||
static void SetAlphaCompare(ERglAlphaFunc comp0, uchar ref0, ERglAlphaOp op, ERglAlphaFunc comp1,
|
||||
uchar ref1);
|
||||
static void SetDepthWriteMode(bool test, ERglEnum comp, bool write);
|
||||
static void SetBlendMode(ERglBlendMode, ERglBlendFactor, ERglBlendFactor, ERglLogicOp);
|
||||
static void SetCullMode(ERglCullMode);
|
||||
static void SetBlendMode(ERglBlendMode mode, ERglBlendFactor src, ERglBlendFactor dst,
|
||||
ERglLogicOp op);
|
||||
static void SetCullMode(ERglCullMode cullMode);
|
||||
static void SetTevStates(uchar);
|
||||
|
||||
// Screen Position
|
||||
static void sub_80309564(uint* stretch, uint* xOffset, uint* yOffset);
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
#include "types.h"
|
||||
|
||||
class CMatrix4f {
|
||||
public:
|
||||
CMatrix4f(float, float, float, float, float, float, float, float, float, float, float, float,
|
||||
float, float, float, float);
|
||||
|
||||
private:
|
||||
float m00;
|
||||
float m01;
|
||||
|
|
|
@ -43,6 +43,9 @@ CHECK_SIZEOF(CRelAngle, 0x4)
|
|||
// __mi__FRC9CRelAngleRC9CRelAngle
|
||||
// __pl__FRC9CRelAngleRC9CRelAngle
|
||||
// __dv__FRC9CRelAnglef
|
||||
// static inline CRelAngle operator/(const CRelAngle& ang, float f) {
|
||||
// return CRelAngle::FromRadians(ang.AsRadians() / f);
|
||||
// }
|
||||
static inline float sine(const CRelAngle& angle) { return sin(angle.AsRadians()); }
|
||||
static inline float cosine(const CRelAngle& angle) { return cos(angle.AsRadians()); }
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ typedef struct {
|
|||
u8 pad[128];
|
||||
} GXFifoObj;
|
||||
|
||||
typedef void (*GXBreakPtCallback)(void);
|
||||
|
||||
void GXInitFifoBase(GXFifoObj* fifo, void* base, u32 size);
|
||||
void GXInitFifoPtrs(GXFifoObj* fifo, void* readPtr, void* writePtr);
|
||||
void GXGetFifoPtrs(GXFifoObj* fifo, void** readPtr, void** writePtr);
|
||||
|
@ -24,6 +26,9 @@ void GXGetFifoStatus(GXFifoObj* fifo, GXBool* overhi, GXBool* underlow, u32* fif
|
|||
void GXGetGPStatus(GXBool* overhi, GXBool* underlow, GXBool* readIdle, GXBool* cmdIdle,
|
||||
GXBool* brkpt);
|
||||
void GXInitFifoLimits(GXFifoObj* fifo, u32 hiWaterMark, u32 loWaterMark);
|
||||
GXBreakPtCallback GXSetBreakPtCallback(GXBreakPtCallback cb);
|
||||
void GXEnableBreakPt(void* breakPt);
|
||||
void GXDisableBreakPt(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -3,11 +3,15 @@
|
|||
|
||||
#include <dolphin/types.h>
|
||||
|
||||
#include <dolphin/vitypes.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
u32 VIGetNextField(void);
|
||||
VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback callback);
|
||||
VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef _DOLPHIN_VITYPES
|
||||
#define _DOLPHIN_VITYPES
|
||||
|
||||
#include <dolphin/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void (*VIRetraceCallback)(u32 retraceCount);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _DOLPHIN_VITYPES
|
|
@ -72,6 +72,7 @@ double sin(double x);
|
|||
double cos(double x);
|
||||
double atan(double x);
|
||||
double atan2(double y, double x);
|
||||
double tan(double x);
|
||||
|
||||
_MATH_INLINE float fabsf(float x) { return (float)fabs((double)x); }
|
||||
_MATH_INLINE float sinf(float x) { return (float)sin((double)x); }
|
||||
|
|
|
@ -177,9 +177,10 @@ void CGX::SetBlendMode(GXBlendMode mode, GXBlendFactor srcFac, GXBlendFactor dst
|
|||
}
|
||||
}
|
||||
|
||||
void CGX::SetZMode(bool compareEnable, GXCompare func, bool updateEnable) {
|
||||
// ??
|
||||
uchar flags = compareEnable | MaskAndShiftLeft(updateEnable, 0xFF, 1) | (func & 0xFF) << 2;
|
||||
// TODO: GXBool doesn't work, why?
|
||||
void CGX::SetZMode(uint compareEnable, GXCompare func, uint updateEnable) {
|
||||
uchar flags = MaskAndShiftLeft(compareEnable, 0xFF, 0) | MaskAndShiftLeft(updateEnable, 0xFF, 1) |
|
||||
MaskAndShiftLeft(func, 0xFF, 2);
|
||||
if (flags != sGXState.x52_zmode) {
|
||||
sGXState.x52_zmode = flags;
|
||||
GXSetZMode(compareEnable, func, updateEnable);
|
||||
|
|
|
@ -2,8 +2,11 @@
|
|||
|
||||
#include "Kyoto/Basics/COsContext.hpp"
|
||||
#include "Kyoto/Basics/CStopwatch.hpp"
|
||||
#include "Kyoto/CFrameDelayedKiller.hpp"
|
||||
#include "Kyoto/Graphics/CGX.hpp"
|
||||
#include "Kyoto/Graphics/CGraphicsSys.hpp"
|
||||
#include "Kyoto/Graphics/CTexture.hpp"
|
||||
#include "Kyoto/Math/CRelAngle.hpp"
|
||||
|
||||
#include "dolphin/vi.h"
|
||||
|
||||
|
@ -250,7 +253,7 @@ bool CGraphics::mIsGXModelMatrixIdentity = true;
|
|||
bool CGraphics::mFirstFrame = true;
|
||||
bool CGraphics::mUseVideoFilter = true;
|
||||
float CGraphics::mBrightness = 1.f;
|
||||
Vec2 CGraphics::mBrightnessRange = {0.f, 2.f};
|
||||
// Vec2 CGraphics::mBrightnessRange = {0.f, 2.f};
|
||||
|
||||
bool CGraphics::Startup(const COsContext& osContext, uint fifoSize, void* fifoBase) {
|
||||
mpFifo = fifoBase;
|
||||
|
@ -384,6 +387,7 @@ void CGraphics::EnableLight(ERglLight light) {
|
|||
|
||||
static inline GXLightID get_hw_light_index(ERglLight light) {
|
||||
#if NONMATCHING
|
||||
// one instruction, no branches
|
||||
return static_cast< GXLightID >((light << 1) & (GX_MAX_LIGHT - 1));
|
||||
#else
|
||||
if (light == kLight0) {
|
||||
|
@ -527,19 +531,18 @@ void CGraphics::SetViewPointMatrix(const CTransform4f& xf) {
|
|||
void CGraphics::SetIdentityViewPointMatrix() {
|
||||
mViewMatrix = CTransform4f::Identity();
|
||||
MTXIdentity(mGXViewPointMatrix);
|
||||
mGXViewPointMatrix[2][2] = 0.0;
|
||||
mGXViewPointMatrix[1][1] = 0.0;
|
||||
mGXViewPointMatrix[1][2] = 1.0;
|
||||
mGXViewPointMatrix[2][1] = -1.0;
|
||||
mGXViewPointMatrix[2][2] = 0.f;
|
||||
mGXViewPointMatrix[1][1] = 0.f;
|
||||
mGXViewPointMatrix[1][2] = 1.f;
|
||||
mGXViewPointMatrix[2][1] = -1.f;
|
||||
mViewPoint = CVector3f::Zero();
|
||||
SetViewMatrix();
|
||||
}
|
||||
|
||||
// TODO: non-matching
|
||||
void CGraphics::SetModelMatrix(const CTransform4f& xf) {
|
||||
if (&xf == &CTransform4f::Identity()) {
|
||||
if (!mIsGXModelMatrixIdentity) {
|
||||
mModelMatrix = CTransform4f::Identity();
|
||||
mModelMatrix = xf;
|
||||
mIsGXModelMatrixIdentity = true;
|
||||
SetViewMatrix();
|
||||
}
|
||||
|
@ -570,3 +573,294 @@ void CGraphics::SetIdentityModelMatrix() {
|
|||
SetViewMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
void CGraphics::SetOrtho(float left, float right, float top, float bottom, float znear,
|
||||
float zfar) {
|
||||
mProj = CProjectionState(false, left, right, top, bottom, znear, zfar);
|
||||
FlushProjection();
|
||||
}
|
||||
|
||||
// TODO non-matching (regswaps)
|
||||
void CGraphics::SetPerspective(float fovy, float aspect, float znear, float zfar) {
|
||||
float t = tan(CRelAngle::FromDegrees(fovy).AsRadians() / 2.f);
|
||||
float top = znear * 2.f * t * 0.5f;
|
||||
float right = aspect * 2.f * znear * t * 0.5f;
|
||||
mProj = CProjectionState(true, -right, right, top, -top, znear, zfar);
|
||||
FlushProjection();
|
||||
}
|
||||
|
||||
CMatrix4f CGraphics::GetPerspectiveProjectionMatrix() {
|
||||
#if NONMATCHING
|
||||
// construct in place
|
||||
return CMatrix4f(
|
||||
#else
|
||||
CMatrix4f mtx(
|
||||
#endif
|
||||
// clang-format off
|
||||
(mProj.GetNear() * 2.f) / (mProj.GetRight() - mProj.GetLeft()),
|
||||
-(mProj.GetRight() + mProj.GetLeft()) / (mProj.GetRight() - mProj.GetLeft()),
|
||||
0.f,
|
||||
0.f,
|
||||
0.f,
|
||||
-(mProj.GetTop() + mProj.GetBottom()) / (mProj.GetTop() - mProj.GetBottom()),
|
||||
(mProj.GetNear() * 2.f) / (mProj.GetTop() - mProj.GetBottom()),
|
||||
0.f,
|
||||
0.f,
|
||||
(mProj.GetFar() + mProj.GetNear()) / (mProj.GetFar() - mProj.GetNear()),
|
||||
0.f,
|
||||
-(mProj.GetFar() * 2.f * mProj.GetNear()) / (mProj.GetFar() - mProj.GetNear()),
|
||||
0.f,
|
||||
1.f,
|
||||
0.f,
|
||||
0.f
|
||||
// clang-format on
|
||||
);
|
||||
#if !NONMATCHING
|
||||
return mtx;
|
||||
#endif
|
||||
}
|
||||
|
||||
CMatrix4f CGraphics::CalculatePerspectiveMatrix(float fovy, float aspect, float znear, float zfar) {
|
||||
float t = tan(CRelAngle::FromDegrees(fovy).AsRadians() / 2.f);
|
||||
float right = aspect * 2.f * znear * t * 0.5f;
|
||||
float left = -right;
|
||||
float top = znear * 2.f * t * 0.5f;
|
||||
float bottom = -top;
|
||||
#if NONMATCHING
|
||||
// construct in place
|
||||
return CMatrix4f(
|
||||
#else
|
||||
CMatrix4f mtx(
|
||||
#endif
|
||||
// clang-format off
|
||||
(2.f * znear) / (right - left),
|
||||
-(right + left) / (right - left),
|
||||
0.f,
|
||||
0.f,
|
||||
0.f,
|
||||
-(top + bottom) / (top - bottom),
|
||||
(2.f * znear) / (top - bottom),
|
||||
0.f,
|
||||
0.f,
|
||||
(zfar + znear) / (zfar - znear),
|
||||
0.f,
|
||||
-(2.f * zfar * znear) / (zfar - znear),
|
||||
0.f,
|
||||
1.f,
|
||||
0.f,
|
||||
0.f
|
||||
// clang-format on
|
||||
);
|
||||
#if !NONMATCHING
|
||||
return mtx;
|
||||
#endif
|
||||
}
|
||||
|
||||
void CGraphics::SetViewport(int left, int bottom, int width, int height) {
|
||||
mViewport.mLeft = left;
|
||||
mViewport.mTop = mRenderModeObj.efbHeight - (bottom + height);
|
||||
mViewport.mWidth = width;
|
||||
mViewport.mHeight = height;
|
||||
mViewport.mHalfWidth = static_cast< float >(width / 2);
|
||||
mViewport.mHalfHeight = static_cast< float >(height / 2);
|
||||
GXSetViewport(static_cast< float >(mViewport.mLeft), static_cast< float >(mViewport.mTop),
|
||||
static_cast< float >(mViewport.mWidth), static_cast< float >(mViewport.mHeight),
|
||||
mDepthNear, mDepthFar);
|
||||
}
|
||||
|
||||
void CGraphics::SetScissor(int left, int bottom, int width, int height) {
|
||||
GXSetScissor(left, mRenderModeObj.efbHeight - (bottom + height), width, height);
|
||||
}
|
||||
|
||||
void CGraphics::SetAmbientColor(const CColor& color) {
|
||||
CGX::SetChanAmbColor(CGX::Channel0, color.GetGXColor());
|
||||
CGX::SetChanAmbColor(CGX::Channel1, color.GetGXColor());
|
||||
}
|
||||
|
||||
void CGraphics::SetCopyClear(const CColor& color, float depth) {
|
||||
mClearColor = color;
|
||||
mClearDepthValue = static_cast< u32 >(depth * GX_MAX_Z24);
|
||||
GXSetCopyClear(color.GetGXColor(), mClearDepthValue);
|
||||
}
|
||||
|
||||
void CGraphics::SetClearColor(const CColor& color) {
|
||||
mClearColor = color;
|
||||
GXSetCopyClear(color.GetGXColor(), mClearDepthValue);
|
||||
}
|
||||
|
||||
void CGraphics::ClearBackAndDepthBuffers() {
|
||||
GXInvalidateTexAll();
|
||||
if (mRenderModeObj.field_rendering) {
|
||||
GXSetViewportJitter(0.f, 0.f, static_cast< float >(mRenderModeObj.fbWidth),
|
||||
static_cast< float >(mRenderModeObj.xfbHeight), 0.f, 1.f, VIGetNextField());
|
||||
} else {
|
||||
GXSetViewport(0.f, 0.f, static_cast< float >(mRenderModeObj.fbWidth),
|
||||
static_cast< float >(mRenderModeObj.xfbHeight), 0.f, 1.f);
|
||||
}
|
||||
GXInvalidateVtxCache();
|
||||
}
|
||||
|
||||
void CGraphics::BeginScene() { ClearBackAndDepthBuffers(); }
|
||||
|
||||
void CGraphics::SwapBuffers() {
|
||||
GXDisableBreakPt();
|
||||
mFlippingState = 1;
|
||||
}
|
||||
|
||||
void CGraphics::VideoPreCallback(u32 retraceCount) {
|
||||
if (mNumBreakpointsWaiting != 0 && mFlippingState == 1) {
|
||||
if (mFirstFrame) {
|
||||
VISetBlack(GX_FALSE);
|
||||
mFirstFrame = false;
|
||||
}
|
||||
VISetNextFrameBuffer(mpCurrenFrameBuf);
|
||||
VIFlush();
|
||||
void* frameBuf = mpCurrenFrameBuf == mpFrameBuf1 ? mpFrameBuf2 : mpFrameBuf1;
|
||||
mFlippingState = 2;
|
||||
mpCurrenFrameBuf = frameBuf;
|
||||
}
|
||||
}
|
||||
|
||||
void CGraphics::VideoPostCallback(u32 retraceCount) {
|
||||
if (mNumBreakpointsWaiting != 0) {
|
||||
if (mFlippingState == 2) {
|
||||
--mNumBreakpointsWaiting;
|
||||
mFlippingState = 0;
|
||||
CStopwatch& timer = sFPSTimer;
|
||||
float elapsed = timer.GetElapsedTime();
|
||||
mLastFramesPerSecond = mFramesPerSecond;
|
||||
mFramesPerSecond = 1.f / elapsed;
|
||||
timer.Reset();
|
||||
mInterruptLastFrameUsedAbove = VIGetNextField() == 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CGraphics::EndScene() {
|
||||
CGX::SetZMode(true, GX_LEQUAL, true);
|
||||
volatile int& numBreakPt = const_cast< volatile int& >(mNumBreakpointsWaiting);
|
||||
while (numBreakPt > 0) {
|
||||
OSYieldThread();
|
||||
}
|
||||
++mNumBreakpointsWaiting;
|
||||
void*& frameBuf = mpCurrenFrameBuf;
|
||||
float brightness = CMath::Clamp(0.f, mBrightness, 2.f);
|
||||
static const u8 copyFilter[7] = {0x00, 0x00, 0x15, 0x16, 0x15, 0x00, 0x00};
|
||||
const u8* inFilter = mUseVideoFilter ? mRenderModeObj.vfilter : copyFilter;
|
||||
u8 vfilter[7];
|
||||
for (int i = 0; i < 7; i++) {
|
||||
vfilter[i] = static_cast< u8 >(static_cast< float >(inFilter[i]) * brightness);
|
||||
}
|
||||
GXSetCopyFilter(mRenderModeObj.aa, mRenderModeObj.sample_pattern, true, vfilter);
|
||||
GXCopyDisp(frameBuf, mIsBeginSceneClearFb ? GX_TRUE : GX_FALSE);
|
||||
GXSetCopyFilter(mRenderModeObj.aa, mRenderModeObj.sample_pattern,
|
||||
mUseVideoFilter ? GX_TRUE : GX_FALSE, mRenderModeObj.vfilter);
|
||||
GXSetBreakPtCallback(SwapBuffers);
|
||||
VISetPreRetraceCallback(VideoPreCallback);
|
||||
VISetPostRetraceCallback(VideoPostCallback);
|
||||
GXFlush();
|
||||
GXFifoObj* fifo = GXGetGPFifo();
|
||||
void* readPtr;
|
||||
void* writePtr;
|
||||
GXGetFifoPtrs(fifo, &readPtr, &writePtr);
|
||||
GXEnableBreakPt(writePtr);
|
||||
mLastFrameUsedAbove = mInterruptLastFrameUsedAbove;
|
||||
++mFrameCounter;
|
||||
CFrameDelayedKiller::sub_8036cb90();
|
||||
}
|
||||
|
||||
void CGraphics::SetDepthWriteMode(bool test, ERglEnum comp, bool write) {
|
||||
mDepthFunc = comp;
|
||||
CGX::SetZMode(static_cast< uchar >(test), static_cast< GXCompare >(comp),
|
||||
static_cast< uchar >(write));
|
||||
}
|
||||
|
||||
void CGraphics::SetCullMode(ERglCullMode cullMode) {
|
||||
mCullMode = cullMode;
|
||||
GXSetCullMode(static_cast< GXCullMode >(cullMode));
|
||||
}
|
||||
|
||||
void CGraphics::SetBlendMode(ERglBlendMode mode, ERglBlendFactor src, ERglBlendFactor dst,
|
||||
ERglLogicOp op) {
|
||||
CGX::SetBlendMode(static_cast< GXBlendMode >(mode), static_cast< GXBlendFactor >(src),
|
||||
static_cast< GXBlendFactor >(dst), static_cast< GXLogicOp >(op));
|
||||
}
|
||||
|
||||
void CGraphics::SetAlphaCompare(ERglAlphaFunc comp0, uchar ref0, ERglAlphaOp op,
|
||||
ERglAlphaFunc comp1, uchar ref1) {
|
||||
CGX::SetAlphaCompare(static_cast< GXCompare >(comp0), static_cast< uchar >(ref0),
|
||||
static_cast< GXAlphaOp >(op), static_cast< GXCompare >(comp1),
|
||||
static_cast< uchar >(ref1));
|
||||
}
|
||||
|
||||
static const GXVtxDescList skPosColorTexDirect[] = {
|
||||
{GX_VA_POS, GX_DIRECT},
|
||||
{GX_VA_CLR0, GX_DIRECT},
|
||||
{GX_VA_TEX0, GX_DIRECT},
|
||||
{GX_VA_NULL, GX_DIRECT},
|
||||
};
|
||||
|
||||
// TODO non-matching (regswaps)
|
||||
void CGraphics::Render2D(const CTexture& tex, int x, int y, int w, int h, const CColor& col) {
|
||||
Mtx44 proj;
|
||||
MTXOrtho(proj, mViewport.mHeight / 2, -mViewport.mHeight / 2, -mViewport.mWidth / 2,
|
||||
mViewport.mWidth / 2, -1.f, -10.f);
|
||||
GXSetProjection(proj, GX_ORTHOGRAPHIC);
|
||||
uint c = col.GetColor_u32();
|
||||
|
||||
Mtx mtx;
|
||||
MTXIdentity(mtx);
|
||||
GXLoadPosMtxImm(mtx, GX_PNMTX0);
|
||||
|
||||
float x1 = x - mViewport.mWidth / 2;
|
||||
float y1 = y - mViewport.mHeight / 2;
|
||||
float x2 = x1 + w;
|
||||
float y2 = y1 + h;
|
||||
|
||||
// Save state + setup
|
||||
CGX::SetVtxDescv(skPosColorTexDirect);
|
||||
SetTevStates(6);
|
||||
mLightsWereOn = mLightActive;
|
||||
if (mLightActive != 0) {
|
||||
DisableAllLights();
|
||||
}
|
||||
ERglCullMode cullMode = mCullMode;
|
||||
SetCullMode(kCM_None);
|
||||
tex.Load(GX_TEXMAP0, CTexture::kCM_Repeat);
|
||||
|
||||
// Draw
|
||||
CGX::Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
|
||||
GXPosition3f32(x1, y1, 1.f);
|
||||
GXColor1u32(c);
|
||||
GXTexCoord2f32(0.f, 0.f);
|
||||
GXPosition3f32(x2, y1, 1.f);
|
||||
GXColor1u32(c);
|
||||
GXTexCoord2f32(1.f, 0.f);
|
||||
GXPosition3f32(x1, y2, 1.f);
|
||||
GXColor1u32(c);
|
||||
GXTexCoord2f32(0.f, 1.f);
|
||||
GXPosition3f32(x2, y2, 1.f);
|
||||
GXColor1u32(c);
|
||||
GXTexCoord2f32(1.f, 1.f);
|
||||
CGX::End();
|
||||
|
||||
// Restore state
|
||||
if (mLightsWereOn != 0) {
|
||||
SetLightState(mLightsWereOn);
|
||||
}
|
||||
FlushProjection();
|
||||
mIsGXModelMatrixIdentity = false;
|
||||
SetModelMatrix(mModelMatrix);
|
||||
SetCullMode(cullMode);
|
||||
}
|
||||
|
||||
void CGraphics::DrawPrimitive(ERglPrimitive primitive, const float* pos, const CVector3f& normal,
|
||||
const CColor& col, int numVerts) {
|
||||
StreamBegin(primitive);
|
||||
StreamNormal(reinterpret_cast< const float* >(&normal));
|
||||
StreamColor(col);
|
||||
for (int i = 0; i < numVerts; ++i) {
|
||||
StreamVertex(pos + i * 3);
|
||||
}
|
||||
StreamEnd();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue