JFramework mostly ok

This commit is contained in:
TakaRikka 2022-01-09 17:33:14 -08:00
parent 035a24092e
commit 37146dfed1
17 changed files with 878 additions and 583 deletions

View File

@ -2,21 +2,45 @@
#define JFWDISPLAY_H
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "JSystem/JUtility/JUTFader.h"
#include "JSystem/JUtility/JUTProcBar.h"
#include "JSystem/JUtility/JUTXfb.h"
#include "JSystem/JUtility/TColor.h"
#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
typedef void (*UnkFunc)(void);
class JFWAlarm : public OSAlarm {
public:
JFWAlarm() : mLink(this) {}
~JFWAlarm() {}
void createAlarm() { OSCreateAlarm(this); }
void cancelAlarm() { OSCancelAlarm(this); }
void removeLink() { sList.remove(&mLink); }
void appendLink() { sList.append(&mLink); }
OSThread* getThread() const { return mThread; }
void setThread(OSThread* thread) { mThread = thread; }
static JSUList<JFWAlarm> sList;
public:
/* 0x28 */ OSThread* mThread;
/* 0x2C */ JSULink<JFWAlarm> mLink;
};
class JFWDisplay {
public:
enum EDrawDone {
/* 0x0 */ UNK_METHOD_0 = 0,
/* 0x1 */ UNK_METHOD_1 = 1
};
/* 80272040 */ void ctor_subroutine(bool);
/* 802720F8 */ JFWDisplay(JKRHeap*, JUTXfb::EXfbNumber, bool);
/* 802721DC */ void createManager(_GXRenderModeObj const*, JKRHeap*, JUTXfb::EXfbNumber, bool);
/* 802721DC */ static JFWDisplay* createManager(_GXRenderModeObj const*, JKRHeap*,
JUTXfb::EXfbNumber, bool);
/* 802722B8 */ void prepareCopyDisp();
/* 802723AC */ void drawendXfb_single();
/* 802723F4 */ void exchangeXfb_double();
@ -58,23 +82,34 @@ public:
private:
/* 0x04 */ JUTFader* mFader;
/* 0x08 */ JUtility::TColor mClearColor;
/* 0x0C */ u32 field_0xc;
/* 0x0C */ u32 mZClear;
/* 0x10 */ JUTXfb* mXfbManager;
/* 0x14 */ u16 field_0x14;
/* 0x14 */ u16 mGamma;
/* 0x18 */ EDrawDone mDrawDoneMethod;
/* 0x1C */ u16 mFrameRate;
/* 0x20 */ u32 mTickRate;
/* 0x24 */ bool field_0x24;
/* 0x24 */ bool mEnableAlpha;
/* 0x26 */ u16 mClamp;
/* 0x28 */ f32 mCombinationRatio;
/* 0x2C */ u32 field_0x2c;
/* 0x30 */ int field_0x30;
/* 0x34 */ int field_0x34;
/* 0x30 */ u32 field_0x30;
/* 0x34 */ u32 field_0x34;
/* 0x38 */ int field_0x38;
/* 0x3C */ int field_0x3c;
/* 0x40 */ u8 field_0x40;
/* 0x44 */ int field_0x44;
/* 0x48 */ u16 field_0x48;
/* 0x40 */ bool field_0x40;
/* 0x44 */ UnkFunc field_0x44;
/* 0x48 */ s16 field_0x48;
/* 0x4A */ u8 field_0x4a;
};
inline void JUTChangeFrameBuffer(void* buffer, u16 height, u16 width) {
JUTDirectPrint::getManager()->changeFrameBuffer(buffer, width, height);
}
static void JFWDrawDoneAlarm();
static void JFWThreadAlarmHandler(OSAlarm*, OSContext*);
static void JFWGXAbortAlarmHandler(OSAlarm*, OSContext*);
static void waitForTick(u32, u16);
static void diagnoseGpHang();
#endif /* JFWDISPLAY_H */

View File

@ -1,12 +1,16 @@
#ifndef JFWSYSTEM_H
#define JFWSYSTEM_H
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JKernel/JKRThread.h"
#include "JSystem/JUtility/JUTConsole.h"
#include "JSystem/JUtility/JUTDbPrint.h"
#include "JSystem/JUtility/JUTResFont.h"
#include "dolphin/types.h"
struct JFWSystem {
struct CSetUpParam {
static u32 maxStdHeaps;
static s32 maxStdHeaps;
static u32 sysHeapSize;
static u32 fifoBufSize;
static u32 aramAudioBufSize;
@ -14,22 +18,22 @@ struct JFWSystem {
static u32 streamPriority;
static u32 decompPriority;
static u32 aPiecePriority;
static void* systemFontRes;
static void* renderMode;
static u32 exConsoleBufferSize[1 + 1 /* padding */];
static ResFONT* systemFontRes;
static GXRenderModeObj* renderMode;
static u32 exConsoleBufferSize;
};
/* 80271CD0 */ void firstInit();
/* 80271D18 */ void init();
/* 80271CD0 */ static void firstInit();
/* 80271D18 */ static void init();
static JUTConsole* getSystemConsole() { return systemConsole; }
static u8 rootHeap[4];
static u8 systemHeap[4];
static u8 mainThread[4];
static u8 debugPrint[4];
static u8 systemFont[4];
static u8 systemConsoleManager[4];
static JKRExpHeap* rootHeap;
static JKRExpHeap* systemHeap;
static JKRThread* mainThread;
static JUTDbPrint* debugPrint;
static JUTResFont* systemFont;
static JUTConsoleManager* systemConsoleManager;
static JUTConsole* systemConsole;
};

View File

@ -14,6 +14,12 @@ public:
UNK_TYPE2 = 2,
};
enum OutputFlag {
/* 0x0 */ OUTPUT_NONE,
/* 0x1 */ OUTPUT_OSREPORT,
/* 0x2 */ OUTPUT_CONSOLE
};
/* 802E73E4 */ static JUTConsole* create(unsigned int, void*, u32);
/* 802E7354 */ static JUTConsole* create(unsigned int, unsigned int, JKRHeap*);
/* 802E746C */ JUTConsole(unsigned int, unsigned int, bool);
@ -46,6 +52,11 @@ public:
}
}
void setFont(JUTFont* p_font) {
mFont = p_font;
setFontSize(p_font->getWidth(), p_font->getHeight());
}
u32 getOutput() const { return mOutput; }
int getPositionY() const { return mPositionY; }
int getPositionX() const { return mPositionX; }
@ -115,10 +126,13 @@ private:
/* 0x10 */ JUTConsole* mDirectConsole;
}; // Size: 0x14
void JUTConsole_print_f_va_(JUTConsole*, const char*, va_list);
extern "C" {
void JUTSetReportConsole(JUTConsole*);
JUTConsole* JUTGetReportConsole();
void JUTSetWarningConsole(JUTConsole*);
};
void JUTConsole_print_f_va_(JUTConsole*, const char*, va_list);
JUTConsole* JUTGetReportConsole();
JUTConsole* JUTGetWarningConsole();
void JUTReportConsole_f_va(const char*, va_list);
void JUTReportConsole_f(const char*, ...);

View File

@ -1,6 +1,91 @@
#ifndef JUTPROCBAR_H
#define JUTPROCBAR_H
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/TColor.h"
#include "dolphin/types.h"
class JUTProcBar {
public:
class CTime {
public:
/* 802E7340 */ CTime();
void start(u8 param_0, u8 param_1, u8 param_2) {
field_0x10 = param_0;
field_0x11 = param_1;
field_0x12 = param_2;
mTick = OSGetTick();
}
void end() {
field_0x4 = ((OSGetTick() - mTick) * 8) / ((*(u32*)0x800000F8 >> 2) / 125000);
if (field_0x4 == 0) {
field_0x4 = 1;
}
}
/* 0x00 */ u32 mTick;
/* 0x04 */ u32 field_0x4;
/* 0x08 */ u32 field_0x8;
/* 0x0C */ u32 field_0xc;
/* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 field_0x11;
/* 0x12 */ u8 field_0x12;
};
class CParamSet {
public:
/* 0x00 */ int mBarWidth;
/* 0x04 */ int mPosX;
/* 0x08 */ int mPosY;
/* 0x0C */ int mWidth;
/* 0x10 */ int mUserPosition;
};
/* 802E5888 */ JUTProcBar();
/* 802E599C */ ~JUTProcBar();
/* 802E59E0 */ static void create();
/* 802E5A28 */ static void destroy();
/* 802E5A60 */ static void clear();
/* 802E5B30 */ void bar_subroutine(int, int, int, int, int, int, int, JUtility::TColor,
JUtility::TColor);
/* 802E5CC4 */ void adjustMeterLength(u32, f32*, f32, f32, int*);
/* 802E5E08 */ void draw();
/* 802E5E3C */ void drawProcessBar();
/* 802E6FA0 */ void drawHeapBar();
void cpuStart() { mCpu.start(255, 129, 30); }
void cpuEnd() { mCpu.end(); }
void gpWaitStart() { mGpWait.start(255, 129, 30); }
void gpWaitEnd() { mGpWait.end(); }
void gpStart() { mGp.start(255, 129, 30); }
void gpEnd() { mGp.end(); }
void wholeLoopStart() { mWholeLoop.start(255, 129, 30); }
void wholeLoopEnd() { mWholeLoop.end(); }
void idleStart() { mIdle.start(255, 129, 30); }
void idleEnd() { mIdle.end(); }
void setCostFrame(int frame) { mCostFrame = frame; }
static JUTProcBar* getManager() { return sManager; }
static JUTProcBar* sManager;
private:
/* 0x000 */ CTime mIdle;
/* 0x014 */ CTime mGp;
/* 0x028 */ CTime mCpu;
/* 0x03C */ CTime mGpWait;
/* 0x050 */ CTime mWholeLoop;
/* 0x064 */ CTime field_0x64[8];
/* 0x104 */ int mCostFrame;
/* 0x108 */ int field_0x108;
/* 0x10C */ bool mVisible;
/* 0x110 */ int field_0x110;
/* 0x114 */ CParamSet field_0x114;
/* 0x128 */ int field_0x128;
/* 0x12C */ JKRHeap* mWatchHeap;
/* 0x130 */ bool mHeapBarVisible;
};
#endif /* JUTPROCBAR_H */

View File

@ -6,6 +6,8 @@
#include "dolphin/types.h"
#include "dolphin/vi/vi.h"
typedef u8 (*Pattern)[2];
class JUTVideo {
public:
typedef void (*Callback)(u32);
@ -16,8 +18,8 @@ public:
// TODO: return types not confirmed
/* 802E4C54 */ static JUTVideo* createManager(GXRenderModeObj const*);
/* 802E4CAC */ static void destroyManager();
/* 802E5088 */ void drawDoneStart();
/* 802E50B0 */ void dummyNoDrawWait();
/* 802E5088 */ static void drawDoneStart();
/* 802E50B0 */ static void dummyNoDrawWait();
/* 802E5198 */ void setRenderMode(GXRenderModeObj const*);
/* 802E5210 */ void waitRetraceIfNeed();
@ -25,10 +27,22 @@ public:
/* 802E5144 */ static void postRetraceProc(u32);
/* 802E50BC */ static void drawDoneCallback();
u32 getFbWidth() const { return mRenderObj->fb_width; }
u32 getEfbHeight() const { return mRenderObj->efb_height; }
u16 getFbWidth() const { return mRenderObj->fb_width; }
u16 getEfbHeight() const { return mRenderObj->efb_height; }
void getBounds(u16& width, u16& height) const {
width = (u16)getFbWidth();
height = (u16)getEfbHeight();
}
u16 getXfbHeight() const { return mRenderObj->xfb_height; }
u32 isAntiAliasing() const { return mRenderObj->antialiasing; }
Pattern getSamplePattern() const { return mRenderObj->sample_pattern; }
u8* getVFilter() const { return mRenderObj->vfilter; }
OSMessageQueue* getMessageQueue() { return &mMessageQueue; }
static JUTVideo* getManager() { return sManager; }
static OSTick getVideoInterval() { return sVideoInterval; }
static OSTick getVideoLastTick() { return sVideoLastTick; }
GXRenderModeObj* getRenderMode() const { return mRenderObj; }
private:

View File

@ -25,7 +25,7 @@ public:
s32 getBufferNum() const { return mBufferNum; }
s16 getDrawnXfbIndex() const { return mDrawnXfbIndex; }
s16 getDrawningXfbIndex() const { return mDrawingXfbIndex; }
s16 getDrawingXfbIndex() const { return mDrawingXfbIndex; }
s16 getDisplayingXfbIndex() const { return mDisplayingXfbIndex; }
s32 getSDrawingFlag() const { return mSDrawingFlag; }
@ -35,7 +35,7 @@ public:
return NULL;
}
void* getDrawningXfb() const {
void* getDrawingXfb() const {
if (mDrawingXfbIndex >= 0)
return mBuffer[mDrawingXfbIndex];
return NULL;
@ -49,6 +49,8 @@ public:
void setDisplayingXfbIndex(s16 index) { mDisplayingXfbIndex = index; }
void setSDrawingFlag(s32 flag) { mSDrawingFlag = flag; }
void setDrawnXfbIndex(s16 index) { mDrawnXfbIndex = index; }
void setDrawingXfbIndex(s16 index) { mDrawingXfbIndex = index; }
static JUTXfb* getManager() { return sManager; }

View File

@ -40,7 +40,7 @@ typedef struct _GXRenderModeObj {
u16 vi_height;
s32 xfb_mode;
u8 field_rendering;
u8 antialiasing;
bool antialiasing;
u8 sample_pattern[12][2];
u8 vfilter[7];
} GXRenderModeObj;
@ -74,6 +74,21 @@ typedef struct _GXFogAdjTable {
/* 0x0 */ u16 r[10];
} GXFogAdjTable;
typedef struct _GXFifoObj {
/* 0x00 */ void* base;
/* 0x04 */ u32 end;
/* 0x08 */ u32 size;
/* 0x0C */ u32 high_wtrmark;
/* 0x10 */ u32 low_wtrmark;
/* 0x14 */ void* read_ptr;
/* 0x18 */ void* write_ptr;
/* 0x1C */ void* rw_dst;
/* 0x20 */ u8 fifo_wrap;
/* 0x21 */ bool cpu_fifo_ready;
/* 0x22 */ bool gp_fifo_ready;
/* 0x23 */ u8 field_0x23[93];
} GXFifoObj; // Size: 0x80
typedef enum _GXPrimitive {
/* 0x80 */ GX_QUADS = 0x80,
/* 0x90 */ GX_TRIANGLES = 0x90,
@ -416,9 +431,15 @@ typedef enum _GXTexFmt {
/* 0x8 */ GX_TF_CI8,
/* 0x9 */ GX_TF_CI14,
/* 0xE */ GX_TF_CMPR = 14,
/* 0x10 */ _GX_TF_ZTF = 0x10,
/* 0x20 */ _GX_TF_CTF = 0x20
/* 0x11 */ GX_TF_Z8 = (0x1 | _GX_TF_ZTF),
/* 0x13 */ GX_TF_Z16 = (0x3 | _GX_TF_ZTF),
/* 0x16 */ GX_TF_Z24X8 = (0x6 | _GX_TF_ZTF),
/* 0x20 */ _GX_TF_CTF = 0x20,
/* 0x30 */ GX_CTF_Z4 = (0x0 | _GX_TF_ZTF | _GX_TF_CTF),
/* 0x39 */ GX_CTF_Z8M = (0x9 | _GX_TF_ZTF | _GX_TF_CTF),
/* 0x3A */ GX_CTF_Z8L = (0xA | _GX_TF_ZTF | _GX_TF_CTF),
/* 0x3C */ GX_CTF_Z16L = (0xC | _GX_TF_ZTF | _GX_TF_CTF),
} GXTexFmt;
typedef enum _GXGamma {
@ -470,16 +491,6 @@ typedef enum _GXTexFmt8 {
/* 0x2C */ GX_CTF_GB8 = (0xC | _GX_TF_CTF),
} GXTexFmt8;
typedef enum _GXZTexFmt {
/* 0x11 */ GX_TF_Z8 = (0x1 | _GX_TF_ZTF),
/* 0x13 */ GX_TF_Z16 = (0x3 | _GX_TF_ZTF),
/* 0x16 */ GX_TF_Z24X8 = (0x6 | _GX_TF_ZTF),
/* 0x30 */ GX_CTF_Z4 = (0x0 | _GX_TF_ZTF | _GX_TF_CTF),
/* 0x39 */ GX_CTF_Z8M = (0x9 | _GX_TF_ZTF | _GX_TF_CTF),
/* 0x3A */ GX_CTF_Z8L = (0xA | _GX_TF_ZTF | _GX_TF_CTF),
/* 0x3C */ GX_CTF_Z16L = (0xC | _GX_TF_ZTF | _GX_TF_CTF),
} GXZTexFmt;
typedef enum _GXTexWrapMode {
/* 0x0 */ GX_CLAMP,
/* 0x1 */ GX_REPEAT,
@ -816,6 +827,30 @@ typedef struct _GXVtxDescList {
GXAttrType type;
} GXVtxDescList;
typedef enum _GXFBClamp {
/* 0x0 */ GX_CLAMP_NONE,
/* 0x1 */ GX_CLAMP_TOP,
/* 0x2 */ GX_CLAMP_BOTTOM,
} GXFBClamp;
typedef enum _GXPixelFmt {
/* 0x0 */ GX_PF_RGB8_Z24,
/* 0x1 */ GX_PF_RGBA6_Z24,
/* 0x2 */ GX_PF_RGB565_Z16,
/* 0x3 */ GX_PF_Z24,
/* 0x4 */ GX_PF_Y8,
/* 0x5 */ GX_PF_U8,
/* 0x6 */ GX_PF_V8,
/* 0x7 */ GX_PF_YUV420,
} GXPixelFmt;
typedef enum _GXZFmt16 {
/* 0x0 */ GX_ZC_LINEAR,
/* 0x1 */ GX_ZC_NEAR,
/* 0x2 */ GX_ZC_MID,
/* 0x3 */ GX_ZC_FAR,
} GXZFmt16;
extern "C" {
f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height);
u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale);
@ -852,6 +887,14 @@ void GXSetDrawDoneCallback(GXDrawDoneCallback);
void GXDrawDone(void);
void GXAbortFrame(void);
void GXFlush(void);
void GXSetCopyClear(GXColor, u32);
void GXSetDispCopySrc(u16, u16, u16, u16);
void GXSetDispCopyDst(u16, u16);
u32 GXSetDispCopyYScale(f32);
void GXSetCopyClamp(GXFBClamp);
void GXSetDispCopyGamma(GXGamma);
void GXCopyDisp(void*, GXBool);
void GXSetPixelFmt(GXPixelFmt, GXZFmt16);
struct OSThread;
OSThread* GXSetCurrentGXThread(void);
@ -898,7 +941,7 @@ void GXSetTexCopySrc(u16, u16, u16, u16);
void GXSetViewport(f32, f32, f32, f32, f32, f32);
void GXSetZCompLoc(GXBool);
void GXSetZMode(GXBool, GXCompare, GXBool);
void GXSetZTexture(GXZTexOp, GXZTexFmt, u32);
void GXSetZTexture(GXZTexOp, GXTexFmt, u32);
void GXSetPointSize(u8, GXTexOffset);
void GXSetLineWidth(u8, GXTexOffset);
void GXSetTevDirect(GXTevStageID);
@ -909,6 +952,13 @@ void GXSetIndTexMtx(GXIndTexMtxID, Mtx23, s8);
void GXSetIndTexCoordScale(GXIndTexStageID, GXIndTexScale, GXIndTexScale);
void GXSetIndTexOrder(GXIndTexStageID, GXTexCoordID, GXTexMapID);
void GXEnableTexOffsets(GXTexCoordID, GXBool, GXBool);
void GXSetDstAlpha(GXBool, u8);
u32 GXGetFifoSize(GXFifoObj*);
void* GXGetFifoBase(GXFifoObj*);
GXFifoObj* GXInit(void*, u32);
GXFifoObj* GXGetCPUFifo(void);
void GXGetGPStatus(GXBool*, GXBool*, GXBool*, GXBool*, GXBool*);
void GXReadXfRasMetric(u32*, u32*, u32*, u32*);
#define GFX_FIFO(T) (*(volatile T*)0xCC008000)
@ -927,6 +977,16 @@ inline void GXTexCoord2f32(f32 s, f32 t) {
GFX_FIFO(f32) = t;
}
inline void GXTexCoord2u8(u8 s, u8 t) {
GFX_FIFO(u8) = s;
GFX_FIFO(u8) = t;
}
inline void GXPosition2u16(u16 x, u16 y) {
GFX_FIFO(u16) = x;
GFX_FIFO(u16) = y;
}
inline void GXEnd() {}
};

View File

@ -131,6 +131,23 @@ struct OSThread {
void* data[2];
};
struct OSAlarm;
struct OSAlarmLink {
/* 0x0 */ OSAlarm* prev;
/* 0x4 */ OSAlarm* next;
};
typedef void (*OSAlarmHandler)(OSAlarm*, OSContext*);
struct OSAlarm {
/* 0x00 */ OSAlarmHandler handler;
/* 0x04 */ u32 tag;
/* 0x08 */ OSTime fire_time;
/* 0x10 */ OSAlarmLink link;
/* 0x18 */ OSTime period_time;
/* 0x20 */ OSTime start_time;
}; // Size: 0x28
extern "C" {
s32 OSEnableScheduler(void);
s32 OSDisableScheduler(void);
@ -205,6 +222,10 @@ void LCDisable(void);
void OSReportInit__Fv(void); // needed for inline asm
u8* OSGetStackPointer(void);
void OSCreateAlarm(OSAlarm*);
void OSCancelAlarm(OSAlarm*);
void OSSetAlarm(OSAlarm*, OSTime, OSAlarmHandler);
}; // extern "C"
void OSSwitchFiberEx(u32, u32, u32, u32, u32, u32);

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,12 @@
//
#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "JSystem/JUtility/JUTException.h"
#include "JSystem/JUtility/JUTGamePad.h"
#include "JSystem/JUtility/JUTVideo.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@ -11,57 +17,10 @@
// Types:
//
struct OSThread {};
struct JUTVideo {
/* 802E4C54 */ void createManager(_GXRenderModeObj const*);
};
struct JKRHeap {
/* 802CE4D4 */ void alloc(u32, int);
};
struct JUTResFont {
/* 802DEF94 */ JUTResFont(ResFONT const*, JKRHeap*);
};
struct JUTGraphFifo {
/* 802DEB58 */ JUTGraphFifo(u32);
};
struct JUTGamePad {
/* 802E0898 */ void init();
};
struct JUTDirectPrint {
/* 802E4240 */ void start();
};
struct JUTException {
/* 802E1E40 */ void create(JUTDirectPrint*);
/* 802E3FEC */ void createConsole(void*, u32);
};
struct JUTDbPrint {
/* 802E0190 */ void start(JUTFont*, JKRHeap*);
/* 802E0204 */ void changeFont(JUTFont*);
};
struct JUTAssertion {
/* 802E495C */ void create();
};
struct JKRThread {
/* 802D16B8 */ JKRThread(OSThread*, int);
};
struct JKRExpHeap {
/* 802CEDB4 */ void createRoot(int, bool);
/* 802CEE2C */ void create(u32, JKRHeap*, bool);
};
struct JKRAram {
/* 802D1FA4 */ void create(u32, u32, s32, s32, s32);
u8 field_0x0[0x1C];
};
//
@ -111,10 +70,7 @@ extern "C" void create__12JUTAssertionFv();
extern "C" void createManager__8JUTVideoFPC16_GXRenderModeObj();
extern "C" void create__10JUTConsoleFUiUiP7JKRHeap();
extern "C" void createManager__17JUTConsoleManagerFP7JKRHeap();
extern "C" void JUTSetReportConsole();
extern "C" void JUTSetWarningConsole();
extern "C" void OSInit();
extern "C" void OSGetCurrentThread();
extern "C" void DVDInit();
extern "C" extern u8 const JUTResFONT_Ascfont_fix12[16736];
extern "C" extern u8 GXNtsc480IntDf[60];
@ -125,82 +81,78 @@ extern "C" extern u8 GXNtsc480IntDf[60];
/* ############################################################################################## */
/* 80450770-80450774 0001F0 0004+00 1/1 1/1 0/0 .sdata maxStdHeaps__Q29JFWSystem11CSetUpParam */
SECTION_SDATA u32 JFWSystem::CSetUpParam::maxStdHeaps = 0x00000002;
SECTION_SDATA s32 JFWSystem::CSetUpParam::maxStdHeaps = 2;
/* 80450774-80450778 0001F4 0004+00 1/1 1/1 0/0 .sdata sysHeapSize__Q29JFWSystem11CSetUpParam */
SECTION_SDATA u32 JFWSystem::CSetUpParam::sysHeapSize = 0x00400000;
SECTION_SDATA u32 JFWSystem::CSetUpParam::sysHeapSize = 0x400000;
/* 804511A0-804511A4 0006A0 0004+00 2/2 0/0 0/0 .sbss rootHeap__9JFWSystem */
u8 JFWSystem::rootHeap[4];
JKRExpHeap* JFWSystem::rootHeap;
/* 804511A4-804511A8 0006A4 0004+00 2/2 1/1 0/0 .sbss systemHeap__9JFWSystem */
u8 JFWSystem::systemHeap[4];
JKRExpHeap* JFWSystem::systemHeap;
/* 80271CD0-80271D18 26C610 0048+00 1/1 1/1 0/0 .text firstInit__9JFWSystemFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JFWSystem::firstInit() {
nofralloc
#include "asm/JSystem/JFramework/JFWSystem/firstInit__9JFWSystemFv.s"
void JFWSystem::firstInit() {
OSInit();
DVDInit();
rootHeap = JKRExpHeap::createRoot(CSetUpParam::maxStdHeaps, false);
systemHeap = JKRExpHeap::create(CSetUpParam::sysHeapSize, rootHeap, false);
}
#pragma pop
/* ############################################################################################## */
/* 80450778-8045077C 0001F8 0004+00 1/1 1/1 0/0 .sdata fifoBufSize__Q29JFWSystem11CSetUpParam */
SECTION_SDATA u32 JFWSystem::CSetUpParam::fifoBufSize = 0x00040000;
SECTION_SDATA u32 JFWSystem::CSetUpParam::fifoBufSize = 0x40000;
/* 8045077C-80450780 0001FC 0004+00 1/1 1/1 0/0 .sdata aramAudioBufSize__Q29JFWSystem11CSetUpParam
*/
SECTION_SDATA u32 JFWSystem::CSetUpParam::aramAudioBufSize = 0x00800000;
SECTION_SDATA u32 JFWSystem::CSetUpParam::aramAudioBufSize = 0x800000;
/* 80450780-80450784 000200 0004+00 1/1 1/1 0/0 .sdata aramGraphBufSize__Q29JFWSystem11CSetUpParam
*/
SECTION_SDATA u32 JFWSystem::CSetUpParam::aramGraphBufSize = 0x00600000;
SECTION_SDATA u32 JFWSystem::CSetUpParam::aramGraphBufSize = 0x600000;
/* 80450784-80450788 000204 0004+00 1/1 0/0 0/0 .sdata streamPriority__Q29JFWSystem11CSetUpParam
*/
SECTION_SDATA u32 JFWSystem::CSetUpParam::streamPriority = 0x00000008;
SECTION_SDATA u32 JFWSystem::CSetUpParam::streamPriority = 8;
/* 80450788-8045078C 000208 0004+00 1/1 0/0 0/0 .sdata decompPriority__Q29JFWSystem11CSetUpParam
*/
SECTION_SDATA u32 JFWSystem::CSetUpParam::decompPriority = 0x00000007;
SECTION_SDATA u32 JFWSystem::CSetUpParam::decompPriority = 7;
/* 8045078C-80450790 00020C 0004+00 1/1 0/0 0/0 .sdata aPiecePriority__Q29JFWSystem11CSetUpParam
*/
SECTION_SDATA u32 JFWSystem::CSetUpParam::aPiecePriority = 0x00000006;
SECTION_SDATA u32 JFWSystem::CSetUpParam::aPiecePriority = 6;
/* 80450790-80450794 -00001 0004+00 1/1 0/0 0/0 .sdata systemFontRes__Q29JFWSystem11CSetUpParam */
SECTION_SDATA void* JFWSystem::CSetUpParam::systemFontRes = (void*)&JUTResFONT_Ascfont_fix12;
SECTION_SDATA ResFONT* JFWSystem::CSetUpParam::systemFontRes = (ResFONT*)&JUTResFONT_Ascfont_fix12;
/* 80450794-80450798 -00001 0004+00 1/1 1/1 0/0 .sdata renderMode__Q29JFWSystem11CSetUpParam */
SECTION_SDATA void* JFWSystem::CSetUpParam::renderMode = (void*)&GXNtsc480IntDf;
SECTION_SDATA GXRenderModeObj* JFWSystem::CSetUpParam::renderMode =
(GXRenderModeObj*)&GXNtsc480IntDf;
/* 80450798-804507A0 000218 0004+04 1/1 0/0 0/0 .sdata
* exConsoleBufferSize__Q29JFWSystem11CSetUpParam */
SECTION_SDATA u32 JFWSystem::CSetUpParam::exConsoleBufferSize[1 + 1 /* padding */] = {
0x000024FC,
/* padding */
0x00000000,
};
SECTION_SDATA u32 JFWSystem::CSetUpParam::exConsoleBufferSize = 0x24FC;
/* 804511A8-804511AC 0006A8 0004+00 1/1 0/0 0/0 .sbss mainThread__9JFWSystem */
u8 JFWSystem::mainThread[4];
JKRThread* JFWSystem::mainThread;
/* 804511AC-804511B0 0006AC 0004+00 1/1 0/0 0/0 .sbss debugPrint__9JFWSystem */
u8 JFWSystem::debugPrint[4];
JUTDbPrint* JFWSystem::debugPrint;
/* 804511B0-804511B4 0006B0 0004+00 1/1 0/0 0/0 .sbss systemFont__9JFWSystem */
u8 JFWSystem::systemFont[4];
JUTResFont* JFWSystem::systemFont;
/* 804511B4-804511B8 0006B4 0004+00 1/1 0/0 0/0 .sbss systemConsoleManager__9JFWSystem */
u8 JFWSystem::systemConsoleManager[4];
JUTConsoleManager* JFWSystem::systemConsoleManager;
/* 804511B8-804511BC 0006B8 0004+00 1/1 7/7 0/0 .sbss systemConsole__9JFWSystem */
JUTConsole* JFWSystem::systemConsole;
/* 804511BC-804511C0 0006BC 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_804511BC[4];
static u8 data_804511BC;
// static bool sInitCalled
/* 80455240-80455244 003840 0004+00 1/1 0/0 0/0 .sdata2 @2242 */
SECTION_SDATA2 static f32 lit_2242 = 0.5f;
@ -212,6 +164,60 @@ SECTION_SDATA2 static f32 lit_2243 = 17.0f / 20.0f;
SECTION_SDATA2 static f64 lit_2245 = 4503601774854144.0 /* cast s32 to float */;
/* 80271D18-80272040 26C658 0328+00 0/0 1/1 0/0 .text init__9JFWSystemFv */
// just regalloc in the beginning
#ifdef NONMATCHING
void JFWSystem::init() {
if (rootHeap == NULL) {
firstInit();
}
sInitCalled = true;
JKRAram::create(CSetUpParam::aramAudioBufSize, CSetUpParam::aramGraphBufSize,
CSetUpParam::streamPriority, CSetUpParam::decompPriority,
CSetUpParam::aPiecePriority);
mainThread = new JKRThread(OSGetCurrentThread(), 4);
JUTVideo::createManager(CSetUpParam::renderMode);
u32 fifoSize = CSetUpParam::fifoBufSize;
JUTGraphFifo* fifo = new JUTGraphFifo(fifoSize);
JUTGamePad::init();
JUTDirectPrint* dbPrint = JUTDirectPrint::start();
JUTAssertion::create();
JUTException::create(dbPrint);
systemFont = new JUTResFont(CSetUpParam::systemFontRes, NULL);
debugPrint = JUTDbPrint::start(NULL, NULL);
debugPrint->changeFont(systemFont);
systemConsoleManager = JUTConsoleManager::createManager(NULL);
systemConsole = JUTConsole::create(60, 200, NULL);
systemConsole->setFont(systemFont);
if (CSetUpParam::renderMode->efb_height < 300) {
systemConsole->setFontSize(systemFont->getWidth() * 0.85f, systemFont->getHeight() * 0.5f);
systemConsole->setPosition(20, 25);
} else {
systemConsole->setFontSize(systemFont->getWidth(), systemFont->getHeight());
systemConsole->setPosition(20, 50);
}
systemConsole->setHeight(25);
systemConsole->setVisible(false);
systemConsole->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE);
JUTSetReportConsole(systemConsole);
JUTSetWarningConsole(systemConsole);
void* buffer = systemHeap->alloc(CSetUpParam::exConsoleBufferSize, 4);
JUTException::createConsole(buffer, CSetUpParam::exConsoleBufferSize);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -220,3 +226,4 @@ asm void JFWSystem::init() {
#include "asm/JSystem/JFramework/JFWSystem/init__9JFWSystemFv.s"
}
#pragma pop
#endif

View File

@ -180,7 +180,7 @@ JPAResource::JPAResource() {
/* ############################################################################################## */
/* 803C40C0-803C4220 0211E0 0144+1C 2/2 0/0 0/0 .data jpa_pos */
SECTION_DATA static u8 jpa_pos[324 + 28 /* padding */] = {
SECTION_DATA static u8 jpa_pos[324 + 28 /* padding */] ALIGN_DECL(32) = {
0x00,
0x00,
0x00,

View File

@ -1126,7 +1126,7 @@ void JUTException::createConsole(void* console_buffer, u32 console_buffer_size)
sConsole->setPosition(15, 26);
sConsole->setHeight(23);
sConsole->setVisible(true);
sConsole->setOutput(3);
sConsole->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE);
}
}

View File

@ -11,47 +11,10 @@
// Types:
//
struct JUtility {
struct TColor {};
};
struct JUTVideo {
static u8 sManager[4];
};
struct JUTProcBar {
struct CTime {
/* 802E7340 */ CTime();
};
/* 802E5888 */ JUTProcBar();
/* 802E599C */ ~JUTProcBar();
/* 802E59E0 */ void create();
/* 802E5A28 */ void destroy();
/* 802E5A60 */ void clear();
/* 802E5B30 */ void bar_subroutine(int, int, int, int, int, int, int, JUtility::TColor,
JUtility::TColor);
/* 802E5CC4 */ void adjustMeterLength(u32, f32*, f32, f32, int*);
/* 802E5E08 */ void draw();
/* 802E5E3C */ void drawProcessBar();
/* 802E6FA0 */ void drawHeapBar();
static u8 sManager[4];
};
struct JKRHeap {
/* 802CE784 */ void getTotalFreeSize();
static u8 sSystemHeap[4];
static u8 sCurrentHeap[4];
static u8 sRootHeap[4];
static u8 mCodeStart[4];
static u8 mCodeEnd[4];
static u8 mUserRamStart[4];
static u8 mUserRamEnd[4];
static u8 mMemorySize[4];
};
//
// Forward References:
//
@ -82,7 +45,6 @@ extern "C" void __dl__FPv();
extern "C" void J2DDrawLine__FffffQ28JUtility6TColori();
extern "C" void J2DFillBox__FffffQ28JUtility6TColor();
extern "C" void J2DDrawFrame__FffffQ28JUtility6TColorUc();
extern "C" void OSGetTick();
extern "C" void __construct_array();
extern "C" void _savegpr_21();
extern "C" void _savegpr_25();
@ -118,7 +80,7 @@ asm JUTProcBar::JUTProcBar() {
/* ############################################################################################## */
/* 80451558-8045155C 000A58 0004+00 4/4 6/6 0/0 .sbss sManager__10JUTProcBar */
u8 JUTProcBar::sManager[4];
JUTProcBar* JUTProcBar::sManager;
/* 802E599C-802E59E0 2E02DC 0044+00 1/1 0/0 0/0 .text __dt__10JUTProcBarFv */
#pragma push

View File

@ -15,7 +15,6 @@
//
extern "C" void GXSetDrawDone();
extern "C" void GXCopyDisp(void*, BOOL);
//
// Declarations:
@ -156,7 +155,7 @@ void JUTVideo::preRetraceProc(u32 retrace_count) {
s16 index = xfb->getDrawnXfbIndex();
if (index >= 0) {
xfb->setDisplayingXfbIndex(index);
GXCopyDisp(xfb->getDisplayingXfb(), 1);
GXCopyDisp(xfb->getDisplayingXfb(), GX_TRUE);
GXFlush();
xfb->setSDrawingFlag(2);
frameBuffer = xfb->getDisplayingXfb();

View File

@ -68,10 +68,6 @@ struct cXyz {
static f32 Zero[3];
};
struct JUTProcBar {
static u8 sManager[4];
};
struct JUTGamePad {
static u8 mPadStatus[48];
};

View File

@ -356,7 +356,8 @@ void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param
OSReport("JUTAssertionを可視化しました\n");
JUTAssertion::setVisible(true);
JUTDbPrint::getManager()->setVisible(true);
JFWSystem::getSystemConsole()->setOutput(3);
JFWSystem::getSystemConsole()->setOutput(JUTConsole::OUTPUT_OSREPORT |
JUTConsole::OUTPUT_CONSOLE);
} else {
PPCHalt();
}

View File

@ -544,7 +544,7 @@ bool Debug_console(u32 i_padNo) {
if (mDoCPd_c::getTrig(i_padNo) & CButton::A) {
console->dumpToTerminal(0xFFFFFFFF);
console->setOutput(3);
console->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE);
}
JUTReport(0x1E, 0x186, 1, "Press X+Y+START to CLEAR console.");
@ -709,7 +709,7 @@ void main01(void) {
JUTConsole* console = JFWSystem::getSystemConsole();
if (data_80450580 != 0) {
console->setOutput(3);
console->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE);
}
console->setPosition(32, 42);