copy dolsdk2004 to tp / b_bh + e_mb done (#2299)

* move dolsdk2004 over

* cleanup some temp work

* finish and cleanup gf

* b_bh done

* d_a_e_mb done
This commit is contained in:
TakaRikka
2025-02-10 11:20:42 -08:00
committed by GitHub
parent a38e2bfeee
commit eda175afc8
540 changed files with 68042 additions and 22075 deletions
+1
View File
@@ -8,6 +8,7 @@
#include "JSystem/JUtility/JUTDbPrint.h"
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "stdio.h"
#include <dolphin/vi.h>
/* 804508F8-80450900 000378 0008+00 0/0 3/3 0/0 .sdata None */
bool sAssertVisible = true;
+2
View File
@@ -4,7 +4,9 @@
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "JSystem/JUtility/JUTVideo.h"
#include <dolphin/vi.h>
#include <stdio.h>
#include "global.h"
/* 80451570-80451574 000A70 0004+00 4/4 7/7 0/0 .sbss sManager__17JUTConsoleManager */
JUTConsoleManager* JUTConsoleManager::sManager;
+3 -3
View File
@@ -4,7 +4,7 @@
//
#include "JSystem/JUtility/JUTDirectFile.h"
#include "dolphin/os/OSInterrupt.h"
#include <dolphin/os.h>
#include "global.h"
//
@@ -34,7 +34,7 @@ int JUTDirectFile::fetch32byte() {
return -1;
} else {
interrupts = OSEnableInterrupts();
while (DVDGetCommandBlockStatus(&mFileInfo.block)) {
while (DVDGetCommandBlockStatus(&mFileInfo.cb)) {
;
}
OSRestoreInterrupts(interrupts);
@@ -181,4 +181,4 @@ int JUTDirectFile::fgets(void* buf, int len) {
}
return readCount;
}
}
+3 -2
View File
@@ -5,7 +5,8 @@
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "stdio.h"
#include "dolphin/os/OSCache.h"
#include <dolphin/os.h>
#include "global.h"
//
// Forward References:
@@ -265,4 +266,4 @@ void JUTDirectPrint::setCharColor(u8 r, u8 g, u8 b) {
mCharColor_Cr = Cr;
mCharColor_Cr2 = (Cr >> 1) & 0x7fff;
mCharColor_Cr4 = (Cr >> 2) & 0x3fff;
}
}
+22 -22
View File
@@ -43,20 +43,20 @@ const char* JUTException::sCpuExpName[17] = {
JUTException* JUTException::sErrorManager;
/* 8045150C-80451510 000A0C 0004+00 4/4 0/0 0/0 .sbss sPreUserCallback__12JUTException */
OSErrorHandler JUTException::sPreUserCallback;
JUTExceptionUserCallback JUTException::sPreUserCallback;
/* 80451510-80451514 000A10 0004+00 3/3 0/0 0/0 .sbss sPostUserCallback__12JUTException
*/
OSErrorHandler JUTException::sPostUserCallback;
JUTExceptionUserCallback JUTException::sPostUserCallback;
/* 802E1D5C-802E1E40 2DC69C 00E4+00 1/1 0/0 0/0 .text __ct__12JUTExceptionFP14JUTDirectPrint */
JUTException::JUTException(JUTDirectPrint* directPrint)
: JKRThread(0x1C00, 0x10, 0), mDirectPrint(directPrint) {
OSSetErrorHandler(EXCEPTION_DSI, errorHandler);
OSSetErrorHandler(EXCEPTION_ISI, errorHandler);
OSSetErrorHandler(EXCEPTION_PROGRAM, errorHandler);
OSSetErrorHandler(EXCEPTION_ALIGNMENT, errorHandler);
OSSetErrorHandler(EXCEPTION_MEMORY_PROTECTION, errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_DSI, (OSErrorHandler)errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_ISI, (OSErrorHandler)errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_PROGRAM, (OSErrorHandler)errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_ALIGNMENT, (OSErrorHandler)errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_MEMORY_PROTECTION, (OSErrorHandler)errorHandler);
setFPException(0);
sPreUserCallback = NULL;
@@ -87,7 +87,7 @@ JUTException* JUTException::create(JUTDirectPrint* directPrint) {
OSMessage JUTException::sMessageBuffer[1] = {0};
struct CallbackObject {
/* 0x00 */ OSErrorHandler callback;
/* 0x00 */ JUTExceptionUserCallback callback;
/* 0x04 */ u16 error;
/* 0x06 */ u16 pad_0x06;
/* 0x08 */ OSContext* context;
@@ -106,7 +106,7 @@ void* JUTException::run() {
VISetPreRetraceCallback(NULL);
VISetPostRetraceCallback(NULL);
CallbackObject* cb = (CallbackObject*)message;
OSErrorHandler callback = cb->callback;
JUTExceptionUserCallback callback = cb->callback;
u16 error = cb->error;
OSContext* context = cb->context;
int r24 = cb->param_3;
@@ -156,7 +156,7 @@ void JUTException::errorHandler(OSError error, OSContext* context, u32 param_3,
fpscr = context->fpscr;
OSFillFPUContext(context);
OSSetErrorHandler(error, NULL);
if (error == OS_ERROR_MEMORY_PROTECTION) {
if (error == __OS_EXCEPTION_MEMORY_PROTECTION) {
OSProtectRange(0, NULL, 0, 3);
OSProtectRange(1, NULL, 0, 3);
OSProtectRange(2, NULL, 0, 3);
@@ -226,9 +226,9 @@ void JUTException::panic_f(char const* file, int line, char const* format, ...)
void JUTException::setFPException(u32 fpscr_enable_bits) {
__OSFpscrEnableBits = fpscr_enable_bits;
if (fpscr_enable_bits) {
OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_FLOATING_POINT_EXCEPTION, (OSErrorHandler)errorHandler);
} else {
OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, NULL);
OSSetErrorHandler(__OS_EXCEPTION_FLOATING_POINT_EXCEPTION, NULL);
}
}
@@ -362,13 +362,13 @@ void JUTException::showMainInfo(u16 error, OSContext* context, u32 dsisr, u32 da
return;
}
if (error < (OS_ERROR_MACHINE_CHECK | OS_ERROR_FLOATING_POINT_EXCEPTION)) {
if (error < (OS_ERROR_MACHINE_CHECK | __OS_EXCEPTION_FLOATING_POINT_EXCEPTION)) {
sConsole->print_f("CONTEXT:%08XH (%s EXCEPTION)\n", context, sCpuExpName[error]);
} else {
sConsole->print_f("CONTEXT:%08XH\n", context);
}
if (error == OS_ERROR_FLOATING_POINT_EXCEPTION) {
if (error == __OS_EXCEPTION_FLOATING_POINT_EXCEPTION) {
u32 flags = fpscr & (((fpscr & 0xf8) << 0x16) | 0x1f80700);
if ((flags & 0x20000000) != 0) {
sConsole->print_f(" FPE: Invalid operation\n");
@@ -659,7 +659,7 @@ void JUTException::printContext(OSError error, OSContext* context, u32 dsisr, u3
return;
}
if (error < (OS_ERROR_MACHINE_CHECK | OS_ERROR_FLOATING_POINT_EXCEPTION)) {
if (error < (OS_ERROR_MACHINE_CHECK | __OS_EXCEPTION_FLOATING_POINT_EXCEPTION)) {
sConsole->print_f("******** EXCEPTION OCCURRED! ********\nFrameMemory:%XH\n",
getFrameMemory());
} else {
@@ -821,8 +821,8 @@ void JUTException::waitTime(s32 timeout_ms) {
void JUTException::createFB() {
_GXRenderModeObj* renderMode = &GXNtsc480Int;
void* end = (void*)OSGetArenaHi();
u16 width = ALIGN_NEXT(renderMode->fb_width, 16);
u16 height = renderMode->xfb_height;
u16 width = ALIGN_NEXT(renderMode->fbWidth, 16);
u16 height = renderMode->xfbHeight;
u32 pixel_count = width * height;
u32 size = pixel_count * 2;
@@ -830,7 +830,7 @@ void JUTException::createFB() {
void* object = (void*)ALIGN_PREV((s32)begin - sizeof(JUTExternalFB), 32);
new (object) JUTExternalFB(renderMode, GX_GM_1_7, begin, size);
mDirectPrint->changeFrameBuffer(begin, renderMode->fb_width, renderMode->efb_height);
mDirectPrint->changeFrameBuffer(begin, renderMode->fbWidth, renderMode->efbHeight);
VIConfigure(renderMode);
VISetNextFrameBuffer(begin);
VISetBlack(FALSE);
@@ -848,16 +848,16 @@ void JUTException::createFB() {
/* 802E3AEC-802E3AFC 2DE42C 0010+00 0/0 1/1 0/0 .text
* setPreUserCallback__12JUTExceptionFPFUsP9OSContextUlUl_v */
OSErrorHandler JUTException::setPreUserCallback(OSErrorHandler callback) {
OSErrorHandler previous = sPreUserCallback;
JUTExceptionUserCallback JUTException::setPreUserCallback(JUTExceptionUserCallback callback) {
JUTExceptionUserCallback previous = sPreUserCallback;
sPreUserCallback = callback;
return previous;
}
/* 802E3AFC-802E3B0C 2DE43C 0010+00 0/0 1/1 0/0 .text
* setPostUserCallback__12JUTExceptionFPFUsP9OSContextUlUl_v */
OSErrorHandler JUTException::setPostUserCallback(OSErrorHandler callback) {
OSErrorHandler previous = sPostUserCallback;
JUTExceptionUserCallback JUTException::setPostUserCallback(JUTExceptionUserCallback callback) {
JUTExceptionUserCallback previous = sPostUserCallback;
sPostUserCallback = callback;
return previous;
}
@@ -1,4 +1,5 @@
#include <dolphin.h>
#include "global.h"
/* 8039DA20-803A1B80 02A080 4160+00 0/0 1/0 0/0 .rodata JUTResFONT_Ascfont_fix12 */
extern u8 const JUTResFONT_Ascfont_fix12[16736] ALIGN_DECL(32) = {
+13 -13
View File
@@ -113,13 +113,13 @@ u32 JUTGamePad::read() {
for (int i = 0; i < 4; i++) {
bittest = PAD_CHAN0_BIT >> i;
if (mPadStatus[i].error == 0) {
if (mPadStatus[i].err == 0) {
u32 stick_status;
stick_status = mPadMStick[i].update(mPadStatus[i].stick_x, mPadStatus[i].stick_y, sStickMode, EMainStick, mPadButton[i].mButton) << 0x18;
stick_status |= (mPadSStick[i].update(mPadStatus[i].substick_x, mPadStatus[i].substick_y, sStickMode, ESubStick, mPadButton[i].mButton) << 0x10);
stick_status = mPadMStick[i].update(mPadStatus[i].stickX, mPadStatus[i].stickY, sStickMode, EMainStick, mPadButton[i].mButton) << 0x18;
stick_status |= (mPadSStick[i].update(mPadStatus[i].substickX, mPadStatus[i].substickY, sStickMode, ESubStick, mPadButton[i].mButton) << 0x10);
mPadButton[i].update(&mPadStatus[i], stick_status);
} else if (mPadStatus[i].error == -1) {
} else if (mPadStatus[i].err == -1) {
mPadMStick[i].update(0, 0, sStickMode, EMainStick, 0);
mPadSStick[i].update(0, 0, sStickMode, ESubStick, 0);
mPadButton[i].update(NULL, 0);
@@ -140,9 +140,9 @@ u32 JUTGamePad::read() {
pad->getPadReplay()->getStatus(&status);
u32 stick_status;
stick_status = pad->mMainStick.update(status.stick_x, status.stick_y, sStickMode,
stick_status = pad->mMainStick.update(status.stickX, status.stickY, sStickMode,
EMainStick, pad->mButton.mButton) << 0x18;
stick_status |= pad->mSubStick.update(status.substick_x, status.substick_y, sStickMode,
stick_status |= pad->mSubStick.update(status.substickX, status.substickY, sStickMode,
ESubStick, pad->mButton.mButton) << 0x10;
pad->mButton.update(&status, stick_status);
@@ -155,7 +155,7 @@ u32 JUTGamePad::read() {
if (pad->getPadRecord() != NULL && pad->getPadRecord()->isActive()) {
int port = pad->mPortNum;
if (port >= 0 && mPadStatus[port].error == 0) {
if (port >= 0 && mPadStatus[port].err == 0) {
pad->getPadRecord()->write(&mPadStatus[port]);
}
}
@@ -172,7 +172,7 @@ u32 JUTGamePad::read() {
/* 802E0BBC-802E0C6C 2DB4FC 00B0+00 1/1 0/0 0/0 .text assign__10JUTGamePadFv */
void JUTGamePad::assign() {
for (int i = 0; i < 4; i++) {
if (mPadStatus[i].error == 0 && mPadAssign[i] == 0) {
if (mPadStatus[i].err == 0 && mPadAssign[i] == 0) {
mPortNum = i;
mPadAssign[i] = 1;
mPadButton[i].setRepeat(mButton.mRepeatMask, mButton.mRepeatDelay, mButton.mRepeatRate);
@@ -243,7 +243,7 @@ void JUTGamePad::update() {
mButton = mPadButton[mPortNum];
mMainStick = mPadMStick[mPortNum];
mSubStick = mPadSStick[mPortNum];
mErrorStatus = mPadStatus[mPortNum].error;
mErrorStatus = mPadStatus[mPortNum].err;
}
if (field_0xa8 == 0 || C3ButtonReset::sResetPattern != (mButton.mButton & C3ButtonReset::sResetMaskPattern)) {
@@ -369,10 +369,10 @@ void JUTGamePad::CButton::update(const PADStatus* padStatus, u32 stickStatus) {
mRepeat |= (mRepeatMask ^ 0xFFFFFFFF) & mTrigger;
if (padStatus != NULL) {
mAnalogA = padStatus->analog_a;
mAnalogB = padStatus->analog_b;
mAnalogL = padStatus->trigger_left;
mAnalogR = padStatus->trigger_right;
mAnalogA = padStatus->analogA;
mAnalogB = padStatus->analogB;
mAnalogL = padStatus->triggerLeft;
mAnalogR = padStatus->triggerRight;
} else {
mAnalogA = 0;
mAnalogB = 0;
+2 -2
View File
@@ -124,7 +124,7 @@ void JUTProcBar::draw() {
void JUTProcBar::drawProcessBar() {
if (mVisible) {
int frameDuration = 16666; // duration in miliseconds? for how long a frame takes,
if (JUTVideo::getManager() && ((JUTVideo::getManager()->getRenderMode()->vi_tv_mode >> 2) &
if (JUTVideo::getManager() && ((JUTVideo::getManager()->getRenderMode()->viTVmode >> 2) &
0x0f) == 1) // possibly a define
frameDuration = 20000; // duration for PAL
@@ -324,4 +324,4 @@ void JUTProcBar::drawHeapBar() {
}
}
}
}
}
+2 -2
View File
@@ -187,7 +187,7 @@ void JUTResFont::setGX() {
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 15);
@@ -220,7 +220,7 @@ void JUTResFont::setGX(JUtility::TColor col1, JUtility::TColor col2) {
GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_APREV, GX_CA_RASA, GX_CA_ZERO);
GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 15);
+4 -3
View File
@@ -7,6 +7,7 @@
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "JSystem/JUtility/JUTXfb.h"
#include "dolphin/gx.h"
#include <dolphin/vi.h>
/* 80451538-8045153C 000A38 0004+00 4/4 18/18 1/1 .sbss sManager__8JUTVideo */
JUTVideo* JUTVideo::sManager;
@@ -93,7 +94,7 @@ void JUTVideo::preRetraceProc(u32 retrace_count) {
JUTVideo* videoManager = JUTGetVideoManager();
const GXRenderModeObj* renderMode = videoManager->getRenderMode();
JUTDirectPrint* directPrint = JUTDirectPrint::getManager();
directPrint->changeFrameBuffer(frameBuffer, renderMode->fb_width, renderMode->efb_height);
directPrint->changeFrameBuffer(frameBuffer, renderMode->fbWidth, renderMode->efbHeight);
}
if (sManager->mSetBlack == 1) {
@@ -198,7 +199,7 @@ void JUTVideo::postRetraceProc(u32 retrace_count) {
/* 802E5198-802E5210 2DFAD8 0078+00 1/1 2/2 0/0 .text
* setRenderMode__8JUTVideoFPC16_GXRenderModeObj */
void JUTVideo::setRenderMode(GXRenderModeObj const* pObj) {
if (mRenderObj != NULL && pObj->vi_tv_mode != mRenderObj->vi_tv_mode) {
if (mRenderObj != NULL && pObj->viTVmode != mRenderObj->viTVmode) {
mSetBlack = true;
mSetBlackFrameCount = 4;
}
@@ -213,4 +214,4 @@ void JUTVideo::setRenderMode(GXRenderModeObj const* pObj) {
}
/* 802E5210-802E5214 2DFB50 0004+00 0/0 1/1 0/0 .text waitRetraceIfNeed__8JUTVideoFv */
void JUTVideo::waitRetraceIfNeed() {}
void JUTVideo::waitRetraceIfNeed() {}
+7 -7
View File
@@ -59,15 +59,15 @@ JUTXfb::JUTXfb(GXRenderModeObj const* pObj, JKRHeap* pHeap, JUTXfb::EXfbNumber x
common_init(xfbNum);
if (pObj) {
initiate(pObj->fb_width, pObj->xfb_height, pHeap, xfbNum);
initiate(pObj->fbWidth, pObj->xfbHeight, pHeap, xfbNum);
} else {
u16 fb_width = JUTVideo::getManager()->getRenderMode()->fb_width;
u16 efb_height = (u32)JUTVideo::getManager()->getRenderMode()->efb_height;
u16 xfb_height = JUTVideo::getManager()->getRenderMode()->xfb_height;
f32 scale_factor = GXGetYScaleFactor(efb_height, xfb_height);
u16 xfb_lines = GXGetNumXfbLines(efb_height, scale_factor);
u16 fbWidth = JUTVideo::getManager()->getRenderMode()->fbWidth;
u16 efbHeight = (u32)JUTVideo::getManager()->getRenderMode()->efbHeight;
u16 xfb_height = JUTVideo::getManager()->getRenderMode()->xfbHeight;
f32 scale_factor = GXGetYScaleFactor(efbHeight, xfb_height);
u16 xfb_lines = GXGetNumXfbLines(efbHeight, scale_factor);
initiate(fb_width, xfb_lines, pHeap, xfbNum);
initiate(fbWidth, xfb_lines, pHeap, xfbNum);
}
}