mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-09 10:54:06 -04:00
Copy JKernel (#126)
* start JSystem * JKRAram and JUTGamePad * started heap and thread * more JKernel * mostly finished JKernel * delete unused asm * JKRFileFinder * delete unused asm and match findNextFile * format * fix mtx_vec
This commit is contained in:
@@ -31,15 +31,6 @@ struct JUTDbPrint {
|
||||
static u8 sDebugPrint[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct JUTAssertion {
|
||||
/* 802E495C */ void create();
|
||||
/* 802E4960 */ void flush_subroutine();
|
||||
/* 802E499C */ void flushMessage();
|
||||
/* 802E4A54 */ void flushMessage_dbPrint();
|
||||
/* 802E4C34 */ void setVisible(bool);
|
||||
/* 802E4C3C */ void setMessageCount(int);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
@@ -11,14 +11,6 @@
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct __va_list_struct {};
|
||||
|
||||
struct _GXRenderModeObj {};
|
||||
|
||||
struct _GXGamma {};
|
||||
|
||||
struct OSContext {};
|
||||
|
||||
struct JUTGamePad {
|
||||
struct EPadPort {};
|
||||
|
||||
@@ -28,61 +20,6 @@ struct JUTGamePad {
|
||||
/* 802E0C6C */ void checkResetCallback(s64);
|
||||
};
|
||||
|
||||
struct JUTExternalFB {
|
||||
/* 802E40CC */ JUTExternalFB(_GXRenderModeObj*, _GXGamma, void*, u32);
|
||||
};
|
||||
|
||||
struct JUTDirectPrint {
|
||||
/* 802E456C */ void changeFrameBuffer(void*, u16, u16);
|
||||
};
|
||||
|
||||
struct JUTException {
|
||||
struct EInfoPage {};
|
||||
|
||||
/* 802E1D5C */ JUTException(JUTDirectPrint*);
|
||||
/* 802E1E40 */ void create(JUTDirectPrint*);
|
||||
/* 802E1EA8 */ void run();
|
||||
/* 802E1FCC */ void errorHandler(u16, OSContext*, u32, u32);
|
||||
/* 802E20C0 */ void panic_f_va(char const*, int, char const*, __va_list_struct*);
|
||||
/* 802E21FC */ void panic_f(char const*, int, char const*, ...);
|
||||
/* 802E227C */ void setFPException(u32);
|
||||
/* 802E22C4 */ void showFloatSub(int, f32);
|
||||
/* 802E2454 */ void showFloat(OSContext*);
|
||||
/* 802E2578 */ void searchPartialModule(u32, u32*, u32*, u32*, u32*);
|
||||
/* 802E26B0 */ void showStack(OSContext*);
|
||||
/* 802E27B0 */ void showMainInfo(u16, OSContext*, u32, u32);
|
||||
/* 802E2A84 */ void showGPR(OSContext*);
|
||||
/* 802E2B44 */ void showMapInfo_subroutine(u32, bool);
|
||||
/* 802E2CA0 */ void showGPRMap(OSContext*);
|
||||
/* 802E2DAC */ void showSRR0Map(OSContext*);
|
||||
/* 802E2E70 */ void printDebugInfo(JUTException::EInfoPage, u16, OSContext*, u32, u32);
|
||||
/* 802E2F18 */ void isEnablePad() const;
|
||||
/* 802E2F54 */ void readPad(u32*, u32*);
|
||||
/* 802E34C0 */ void printContext(u16, OSContext*, u32, u32);
|
||||
/* 802E3980 */ void waitTime(s32);
|
||||
/* 802E3A08 */ void createFB();
|
||||
/* 802E3AEC */ void setPreUserCallback(void (*)(u16, OSContext*, u32, u32));
|
||||
/* 802E3AFC */ void setPostUserCallback(void (*)(u16, OSContext*, u32, u32));
|
||||
/* 802E3B0C */ void appendMapFile(char const*);
|
||||
/* 802E3BA0 */ void queryMapAddress(char*, u32, s32, u32*, u32*, char*, u32, bool, bool);
|
||||
/* 802E3C90 */ void queryMapAddress_single(char*, u32, s32, u32*, u32*, char*, u32, bool, bool);
|
||||
/* 802E3FEC */ void createConsole(void*, u32);
|
||||
/* 802E40EC */ ~JUTException();
|
||||
|
||||
static u8 sMessageQueue[32];
|
||||
static void* sCpuExpName[17];
|
||||
static u8 sMapFileList[12 + 4 /* padding */];
|
||||
static u8 sMessageBuffer[4 + 4 /* padding */];
|
||||
static u8 sErrorManager[4];
|
||||
static u8 sPreUserCallback[4];
|
||||
static u8 sPostUserCallback[4];
|
||||
static u8 sConsoleBuffer[4];
|
||||
static u8 sConsoleBufferSize[4];
|
||||
static u8 sConsole[4];
|
||||
static u8 msr[4];
|
||||
static u8 fpscr[4];
|
||||
};
|
||||
|
||||
struct JUTDirectFile {
|
||||
/* 802E87F8 */ JUTDirectFile();
|
||||
/* 802E881C */ ~JUTDirectFile();
|
||||
@@ -191,8 +128,6 @@ extern "C" u8 fpscr__12JUTException[4];
|
||||
//
|
||||
|
||||
SECTION_INIT void memcpy();
|
||||
extern "C" void OSReport();
|
||||
extern "C" void OSPanic();
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void* __nw__FUlP7JKRHeapi();
|
||||
extern "C" void __dl__FPv();
|
||||
@@ -223,24 +158,11 @@ extern "C" void fclose__13JUTDirectFileFv();
|
||||
extern "C" void fgets__13JUTDirectFileFPvi();
|
||||
extern "C" void PPCMfmsr();
|
||||
extern "C" void PPCMtmsr();
|
||||
extern "C" void OSGetArenaHi();
|
||||
extern "C" void OSGetCurrentContext();
|
||||
extern "C" void OSGetStackPointer();
|
||||
extern "C" void OSFillFPUContext();
|
||||
extern "C" void OSSetErrorHandler();
|
||||
extern "C" void OSDisableInterrupts();
|
||||
extern "C" void OSEnableInterrupts();
|
||||
extern "C" void OSRestoreInterrupts();
|
||||
extern "C" void OSInitMessageQueue();
|
||||
extern "C" void OSSendMessage();
|
||||
extern "C" void OSReceiveMessage();
|
||||
extern "C" void OSProtectRange();
|
||||
extern "C" void OSGetCurrentThread();
|
||||
extern "C" void OSEnableScheduler();
|
||||
extern "C" void OSYieldThread();
|
||||
extern "C" void OSResumeThread();
|
||||
extern "C" void OSSuspendThread();
|
||||
extern "C" void OSGetTime();
|
||||
extern "C" void VISetPreRetraceCallback();
|
||||
extern "C" void VISetPostRetraceCallback();
|
||||
extern "C" void VIConfigure();
|
||||
|
||||
@@ -7,18 +7,6 @@
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JUTFont {
|
||||
/* 802DECF8 */ JUTFont();
|
||||
/* 802DED24 */ void initialize_state();
|
||||
/* 802DED70 */ void setCharColor(JUtility::TColor);
|
||||
/* 802DEDC4 */ void setGradColor(JUtility::TColor, JUtility::TColor);
|
||||
/* 802DEE28 */ void drawString_size_scale(f32, f32, f32, f32, char const*, u32, bool);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -42,54 +30,64 @@ extern "C" extern void* __vt__7JUTFont[17];
|
||||
//
|
||||
|
||||
/* 802DECF8-802DED24 2D9638 002C+00 0/0 2/2 0/0 .text __ct__7JUTFontFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JUTFont::JUTFont() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTFont/__ct__7JUTFontFv.s"
|
||||
JUTFont::JUTFont() : mColor1(), mColor2(), mColor3(), mColor4() {
|
||||
unk4 = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802DED24-802DED70 2D9664 004C+00 0/0 9/9 0/0 .text initialize_state__7JUTFontFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTFont::initialize_state() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTFont/initialize_state__7JUTFontFv.s"
|
||||
void JUTFont::initialize_state() {
|
||||
setCharColor(JUtility::TColor());
|
||||
unk5 = false;
|
||||
unk8 = 0;
|
||||
unk4 = false;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802DED70-802DEDC4 2D96B0 0054+00 1/1 3/3 0/0 .text setCharColor__7JUTFontFQ28JUtility6TColor */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTFont::setCharColor(JUtility::TColor param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTFont/setCharColor__7JUTFontFQ28JUtility6TColor.s"
|
||||
void JUTFont::setCharColor(JUtility::TColor col1) {
|
||||
mColor1 = col1;
|
||||
mColor2 = col1;
|
||||
mColor3 = col1;
|
||||
mColor4 = col1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802DEDC4-802DEE28 2D9704 0064+00 0/0 2/2 0/0 .text
|
||||
* setGradColor__7JUTFontFQ28JUtility6TColorQ28JUtility6TColor */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTFont::setGradColor(JUtility::TColor param_0, JUtility::TColor param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTFont/setGradColor__7JUTFontFQ28JUtility6TColorQ28JUtility6TColor.s"
|
||||
void JUTFont::setGradColor(JUtility::TColor col1, JUtility::TColor col2) {
|
||||
mColor1 = col1;
|
||||
mColor2 = col1;
|
||||
mColor3 = col2;
|
||||
mColor4 = col2;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802DEE28-802DEF48 2D9768 0120+00 0/0 3/3 0/0 .text drawString_size_scale__7JUTFontFffffPCcUlb
|
||||
*/
|
||||
#ifdef NON_MATCHING
|
||||
f32 JUTFont::drawString_size_scale(f32 a1, f32 a2, f32 a3, f32 a4, const char* str, u32 usz,
|
||||
bool a7) {
|
||||
f32 temp = a1;
|
||||
|
||||
for (; usz > 0; usz--, str++) {
|
||||
u32 b = *(u8*)str;
|
||||
if (isLeadByte(b)) {
|
||||
str++;
|
||||
b = (b << 8 | *(u8*)str);
|
||||
usz--;
|
||||
}
|
||||
|
||||
a1 += drawChar_scale(temp, a2, a3, a4, b, a7);
|
||||
a7 = 1;
|
||||
}
|
||||
|
||||
return a1 - temp;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTFont::drawString_size_scale(f32 param_0, f32 param_1, f32 param_2, f32 param_3,
|
||||
char const* param_4, u32 param_5, bool param_6) {
|
||||
asm f32 JUTFont::drawString_size_scale(f32 param_0, f32 param_1, f32 param_2, f32 param_3,
|
||||
char const* param_4, u32 param_5, bool param_6) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTFont/drawString_size_scale__7JUTFontFffffPCcUlb.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
@@ -7,127 +7,14 @@
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
// can't type mPadList correctly because of __sinit
|
||||
// remove this once __sinit is decompiled
|
||||
#define mPadListHack (*(JSUList<JUTGamePad>*)&mPadList)
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct PADStatus {};
|
||||
|
||||
struct JUTGamePadLongPress {
|
||||
/* 802E1AFC */ void checkCallback(int, u32);
|
||||
|
||||
static u8 sPatternList[12];
|
||||
};
|
||||
|
||||
struct JUTGamePad {
|
||||
struct EPadPort {};
|
||||
|
||||
struct CButton {
|
||||
/* 802E1050 */ void clear();
|
||||
/* 802E108C */ void update(PADStatus const*, u32);
|
||||
/* 802E1A7C */ void setRepeat(u32, u32, u32);
|
||||
/* 802E1CD8 */ CButton();
|
||||
};
|
||||
|
||||
struct EStickMode {};
|
||||
|
||||
struct EWhichStick {};
|
||||
|
||||
struct CStick {
|
||||
/* 802E121C */ void clear();
|
||||
/* 802E1238 */ void update(s8, s8, JUTGamePad::EStickMode, JUTGamePad::EWhichStick, u32);
|
||||
/* 802E1500 */ void getButton(u32);
|
||||
/* 802E1CA8 */ CStick();
|
||||
|
||||
static f32 sPressPoint;
|
||||
static f32 sReleasePoint;
|
||||
};
|
||||
|
||||
struct CRumble {
|
||||
struct ERumble {};
|
||||
|
||||
/* 802E15B4 */ void clear();
|
||||
/* 802E15D8 */ void clear(JUTGamePad*);
|
||||
/* 802E1634 */ void startMotor(int);
|
||||
/* 802E168C */ void stopMotor(int, bool);
|
||||
/* 802E1720 */ void update(s16);
|
||||
/* 802E18A4 */ void triggerPatternedRumble(u32);
|
||||
/* 802E18CC */ void startPatternedRumble(void*, JUTGamePad::CRumble::ERumble, u32);
|
||||
/* 802E1948 */ void stopPatternedRumble(s16);
|
||||
/* 802E1978 */ void stopPatternedRumbleAtThePeriod();
|
||||
/* 802E19D8 */ void setEnabled(u32);
|
||||
|
||||
static u8 sChannelMask[16];
|
||||
static u8 mStatus[4];
|
||||
static u8 mEnabled[4];
|
||||
};
|
||||
|
||||
struct C3ButtonReset {
|
||||
static u32 sResetPattern;
|
||||
static u32 sResetMaskPattern;
|
||||
static u8 sCallback[4];
|
||||
static u8 sCallbackArg[4 + 4 /* padding */];
|
||||
static u8 sThreshold[4];
|
||||
static u8 sResetOccurredPort[4];
|
||||
};
|
||||
|
||||
/* 802E06DC */ JUTGamePad(JUTGamePad::EPadPort);
|
||||
/* 802E07B0 */ ~JUTGamePad();
|
||||
/* 802E085C */ void initList();
|
||||
/* 802E0898 */ void init();
|
||||
/* 802E08D0 */ void clear();
|
||||
/* 802E08E4 */ void read();
|
||||
/* 802E0BBC */ void assign();
|
||||
/* 802E0C6C */ void checkResetCallback(s64);
|
||||
/* 802E0CD8 */ void update();
|
||||
/* 802E0FA4 */ void checkResetSwitch();
|
||||
/* 802E1024 */ void clearForReset();
|
||||
/* 802E199C */ void getGamePad(int);
|
||||
/* 802E1A98 */ void recalibrate(u32);
|
||||
|
||||
static u8 mPadList[12];
|
||||
static u8 mPadStatus[48];
|
||||
static u8 mPadButton[192];
|
||||
static u8 mPadMStick[64];
|
||||
static u8 mPadSStick[64];
|
||||
static u32 sStickMode;
|
||||
static u32 sClampMode;
|
||||
static u8 mPadAssign[4];
|
||||
static u8 sSuppressPadReset[4];
|
||||
static u8 sAnalogMode[4];
|
||||
static u8 sRumbleSupported[4];
|
||||
};
|
||||
|
||||
struct JSUPtrLink {
|
||||
/* 802DBDFC */ JSUPtrLink(void*);
|
||||
/* 802DBE14 */ ~JSUPtrLink();
|
||||
};
|
||||
|
||||
struct JSUPtrList {
|
||||
/* 802DBE74 */ JSUPtrList(bool);
|
||||
/* 802DBEAC */ ~JSUPtrList();
|
||||
/* 802DBF14 */ void initiate();
|
||||
/* 802DBF4C */ void append(JSUPtrLink*);
|
||||
/* 802DC15C */ void remove(JSUPtrLink*);
|
||||
};
|
||||
|
||||
template <typename A0>
|
||||
struct JSUList {};
|
||||
/* JSUList<JUTGamePadLongPress> */
|
||||
struct JSUList__template11 {
|
||||
/* 802E1C54 */ void func_802E1C54(void* _this);
|
||||
};
|
||||
|
||||
/* JSUList<JUTGamePad> */
|
||||
struct JSUList__template12 {
|
||||
/* 802E1D08 */ void func_802E1D08(void* _this);
|
||||
};
|
||||
|
||||
struct JKRDisposer {
|
||||
/* 802D147C */ JKRDisposer();
|
||||
/* 802D14E4 */ ~JKRDisposer();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -208,16 +95,6 @@ extern "C" void initiate__10JSUPtrListFv();
|
||||
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
|
||||
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
|
||||
extern "C" void OSGetResetSwitchState();
|
||||
extern "C" void OSGetTime();
|
||||
extern "C" void PADClamp();
|
||||
extern "C" void PADClampCircle();
|
||||
extern "C" void PADReset();
|
||||
extern "C" void PADRecalibrate();
|
||||
extern "C" void PADInit();
|
||||
extern "C" void PADRead();
|
||||
extern "C" void PADControlMotor();
|
||||
extern "C" void PADSetSpec();
|
||||
extern "C" void PADSetAnalogMode();
|
||||
extern "C" void __register_global_object();
|
||||
extern "C" void __construct_array();
|
||||
extern "C" void _savegpr_22();
|
||||
@@ -237,8 +114,11 @@ extern "C" extern u32 __float_nan;
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803CC5F0-803CC600 029710 0010+00 3/3 0/0 0/0 .data sChannelMask__Q210JUTGamePad7CRumble */
|
||||
SECTION_DATA u8 JUTGamePad::CRumble::sChannelMask[16] = {
|
||||
0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||
SECTION_DATA PADMask JUTGamePad::CRumble::sChannelMask[4] = {
|
||||
PAD_CHAN0_BIT,
|
||||
PAD_CHAN1_BIT,
|
||||
PAD_CHAN2_BIT,
|
||||
PAD_CHAN3_BIT,
|
||||
};
|
||||
|
||||
/* 803CC600-803CC610 029720 0010+00 2/2 0/0 0/0 .data channel_mask */
|
||||
@@ -262,13 +142,22 @@ static u8 lit_525[12];
|
||||
u8 JUTGamePad::mPadList[12];
|
||||
|
||||
/* 804514D0-804514D4 0009D0 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_804514D0[4];
|
||||
static bool data_804514D0;
|
||||
|
||||
/* 804514D4-804514D8 0009D4 0004+00 3/3 0/0 0/0 .sbss mPadAssign__10JUTGamePad */
|
||||
u8 JUTGamePad::mPadAssign[4];
|
||||
|
||||
/* 802E06DC-802E07B0 2DB01C 00D4+00 0/0 4/4 0/0 .text __ct__10JUTGamePadFQ210JUTGamePad8EPadPort
|
||||
*/
|
||||
#ifdef NONMATCHING
|
||||
// TODO(erin): probably ~easy to do, i just didn't do it yet :)
|
||||
JUTGamePad::JUTGamePad(EPadPort port) : ptr_link(this) {
|
||||
this->buttons.clear();
|
||||
this->control_stick.clear();
|
||||
this->c_stick.clear();
|
||||
this->rumble.clear();
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -277,6 +166,7 @@ asm JUTGamePad::JUTGamePad(JUTGamePad::EPadPort param_0) {
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/__ct__10JUTGamePadFQ210JUTGamePad8EPadPort.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802E07B0-802E085C 2DB0F0 00AC+00 1/0 2/2 0/0 .text __dt__10JUTGamePadFv */
|
||||
#pragma push
|
||||
@@ -289,45 +179,38 @@ asm JUTGamePad::~JUTGamePad() {
|
||||
#pragma pop
|
||||
|
||||
/* 802E085C-802E0898 2DB19C 003C+00 1/1 0/0 0/0 .text initList__10JUTGamePadFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::initList() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/initList__10JUTGamePadFv.s"
|
||||
void JUTGamePad::initList() {
|
||||
if (/* mIsPadListInitialized */ data_804514D0 == false) {
|
||||
mPadListHack.initiate();
|
||||
data_804514D0 = true;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804514D8-804514DC 0009D8 0004+00 2/2 0/0 0/0 .sbss sSuppressPadReset__10JUTGamePad */
|
||||
u8 JUTGamePad::sSuppressPadReset[4];
|
||||
|
||||
/* 804514DC-804514E0 0009DC 0004+00 1/1 1/1 0/0 .sbss sAnalogMode__10JUTGamePad */
|
||||
u8 JUTGamePad::sAnalogMode[4];
|
||||
s32 JUTGamePad::sAnalogMode;
|
||||
|
||||
/* 802E0898-802E08D0 2DB1D8 0038+00 0/0 1/1 0/0 .text init__10JUTGamePadFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::init() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/init__10JUTGamePadFv.s"
|
||||
s32 JUTGamePad::init() {
|
||||
PADSetSpec(5);
|
||||
sAnalogMode = 3;
|
||||
PADSetAnalogMode(3);
|
||||
|
||||
return PADInit();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802E08D0-802E08E4 2DB210 0014+00 1/1 0/0 0/0 .text clear__10JUTGamePadFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::clear() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/clear__10JUTGamePadFv.s"
|
||||
void JUTGamePad::clear() {
|
||||
this->field_0x98 = 0;
|
||||
this->field_0xa8 = 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804343F0-80434420 061110 0030+00 1/3 1/1 0/0 .bss mPadStatus__10JUTGamePad */
|
||||
u8 JUTGamePad::mPadStatus[48];
|
||||
PADStatus JUTGamePad::mPadStatus[4];
|
||||
|
||||
/* 80434420-804344E0 061140 00C0+00 1/4 0/0 0/0 .bss mPadButton__10JUTGamePad */
|
||||
u8 JUTGamePad::mPadButton[192];
|
||||
@@ -364,6 +247,27 @@ asm void JUTGamePad::read() {
|
||||
#pragma pop
|
||||
|
||||
/* 802E0BBC-802E0C6C 2DB4FC 00B0+00 1/1 0/0 0/0 .text assign__10JUTGamePadFv */
|
||||
#if 0
|
||||
// matches if all static variables have their proper type
|
||||
void JUTGamePad::assign() {
|
||||
s32 iVar3 = 0;
|
||||
|
||||
for (s32 i = 4; i > 0; i--) {
|
||||
if ((/* mPadStatus */ lbl_804343F0[iVar3].error == 0) &&
|
||||
(/* *puVar2 */ lbl_804514D4[iVar3] == 0)) {
|
||||
this->pad_port = iVar3;
|
||||
/* JUTGamePad::mPadAssign[iVar3] */ /* *puVar2 */ lbl_804514D4[iVar3] = 1;
|
||||
/* JUTGamePad::mPadButton */ lbl_80434420[iVar3].setRepeat(
|
||||
this->buttons.field_0x24, this->buttons.field_0x28, this->buttons.field_0x2c);
|
||||
this->rumble.clear(this);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
iVar3++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -372,47 +276,49 @@ asm void JUTGamePad::assign() {
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/assign__10JUTGamePadFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804514E4-804514E8 0009E4 0004+00 5/5 0/0 0/0 .sbss mStatus__Q210JUTGamePad7CRumble */
|
||||
u8 JUTGamePad::CRumble::mStatus[4];
|
||||
bool JUTGamePad::CRumble::mStatus[4];
|
||||
|
||||
/* 804514E8-804514EC 0009E8 0004+00 5/5 0/0 0/0 .sbss mEnabled__Q210JUTGamePad7CRumble */
|
||||
u8 JUTGamePad::CRumble::mEnabled[4];
|
||||
PADMask JUTGamePad::CRumble::mEnabled;
|
||||
|
||||
/* 804514EC-804514F0 0009EC 0004+00 2/2 4/4 0/0 .sbss sCallback__Q210JUTGamePad13C3ButtonReset */
|
||||
u8 JUTGamePad::C3ButtonReset::sCallback[4];
|
||||
callbackFn JUTGamePad::C3ButtonReset::sCallback;
|
||||
|
||||
/* 804514F0-804514F8 0009F0 0004+04 2/2 4/4 0/0 .sbss sCallbackArg__Q210JUTGamePad13C3ButtonReset
|
||||
*/
|
||||
u8 JUTGamePad::C3ButtonReset::sCallbackArg[4 + 4 /* padding */];
|
||||
void* JUTGamePad::C3ButtonReset::sCallbackArg;
|
||||
|
||||
/* 804514F8-804514FC 0009F8 0004+00 2/2 0/0 0/0 .sbss sThreshold__Q210JUTGamePad13C3ButtonReset */
|
||||
u8 JUTGamePad::C3ButtonReset::sThreshold[4];
|
||||
|
||||
/* 804514FC-80451500 0009FC 0004+00 2/2 0/0 0/0 .sbss None */
|
||||
static u8 data_804514FC[4];
|
||||
/* 804514F8-80451500 0009F8 0008+00 2/2 0/0 0/0 .sbss sThreshold__Q210JUTGamePad13C3ButtonReset */
|
||||
OSTime JUTGamePad::C3ButtonReset::sThreshold;
|
||||
|
||||
/* 80451500-80451504 -00001 0004+00 3/3 6/6 0/0 .sbss None */
|
||||
/* 80451500 0001+00 data_80451500 None */
|
||||
/* 80451501 0003+00 data_80451501 None */
|
||||
extern u8 struct_80451500[4];
|
||||
u8 struct_80451500[4];
|
||||
extern bool struct_80451500;
|
||||
bool struct_80451500;
|
||||
bool struct_80451501;
|
||||
|
||||
/* 80451504-80451508 000A04 0004+00 2/2 0/0 0/0 .sbss
|
||||
* sResetOccurredPort__Q210JUTGamePad13C3ButtonReset */
|
||||
u8 JUTGamePad::C3ButtonReset::sResetOccurredPort[4];
|
||||
s32 JUTGamePad::C3ButtonReset::sResetOccurredPort;
|
||||
|
||||
/* 802E0C6C-802E0CD8 2DB5AC 006C+00 1/1 1/1 0/0 .text checkResetCallback__10JUTGamePadFx
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::checkResetCallback(s64 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/checkResetCallback__10JUTGamePadFx.s"
|
||||
void JUTGamePad::checkResetCallback(OSTime unk) {
|
||||
if (unk < JUTGamePad::C3ButtonReset::sThreshold)
|
||||
return;
|
||||
|
||||
struct_80451501 = true;
|
||||
JUTGamePad::C3ButtonReset::sResetOccurredPort = this->pad_port;
|
||||
if (JUTGamePad::C3ButtonReset::sCallback != NULL) {
|
||||
JUTGamePad::C3ButtonReset::sCallback(this->pad_port,
|
||||
JUTGamePad::C3ButtonReset::sCallbackArg);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80434560-8043456C 061280 000C+00 0/1 0/0 0/0 .bss @1373 */
|
||||
@@ -496,7 +402,7 @@ SECTION_SDATA2 static f64 lit_1050 = 4503601774854144.0 /* cast s32 to float */;
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::CButton::update(PADStatus const* param_0, u32 param_1) {
|
||||
asm u32 JUTGamePad::CButton::update(PADStatus const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/update__Q210JUTGamePad7CButtonFPC9PADStatusUl.s"
|
||||
}
|
||||
@@ -543,8 +449,8 @@ SECTION_SDATA2 static f32 lit_1121 = 10430.37890625f;
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::CStick::update(s8 param_0, s8 param_1, JUTGamePad::EStickMode param_2,
|
||||
JUTGamePad::EWhichStick param_3, u32 param_4) {
|
||||
asm u32 JUTGamePad::CStick::update(s8 param_0, s8 param_1, JUTGamePad::EStickMode param_2,
|
||||
JUTGamePad::EWhichStick param_3, u32 param_4) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/func_802E1238.s"
|
||||
}
|
||||
@@ -555,7 +461,7 @@ asm void JUTGamePad::CStick::update(s8 param_0, s8 param_1, JUTGamePad::EStickMo
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::CStick::getButton(u32 param_0) {
|
||||
asm u32 JUTGamePad::CStick::getButton(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/getButton__Q210JUTGamePad6CStickFUl.s"
|
||||
}
|
||||
@@ -672,7 +578,7 @@ asm void JUTGamePad::CRumble::stopPatternedRumbleAtThePeriod() {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::getGamePad(int param_0) {
|
||||
asm JUTGamePad* JUTGamePad::getGamePad(int param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/getGamePad__10JUTGamePadFi.s"
|
||||
}
|
||||
@@ -702,7 +608,7 @@ asm void JUTGamePad::CButton::setRepeat(u32 param_0, u32 param_1, u32 param_2) {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTGamePad::recalibrate(u32 param_0) {
|
||||
asm bool JUTGamePad::recalibrate(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTGamePad/recalibrate__10JUTGamePadFUl.s"
|
||||
}
|
||||
|
||||
@@ -11,30 +11,10 @@
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct _GXRenderModeObj {};
|
||||
|
||||
struct JUTXfb {
|
||||
static u8 sManager[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct JUTVideo {
|
||||
/* 802E4C54 */ void createManager(_GXRenderModeObj const*);
|
||||
/* 802E4CAC */ void destroyManager();
|
||||
/* 802E4CF4 */ JUTVideo(_GXRenderModeObj const*);
|
||||
/* 802E4DE8 */ ~JUTVideo();
|
||||
/* 802E4E50 */ void preRetraceProc(u32);
|
||||
/* 802E5088 */ void drawDoneStart();
|
||||
/* 802E50B0 */ void dummyNoDrawWait();
|
||||
/* 802E50BC */ void drawDoneCallback();
|
||||
/* 802E5144 */ void postRetraceProc(u32);
|
||||
/* 802E5198 */ void setRenderMode(_GXRenderModeObj const*);
|
||||
/* 802E5210 */ void waitRetraceIfNeed();
|
||||
|
||||
static u8 sManager[4];
|
||||
static u8 sVideoLastTick[4];
|
||||
static u8 sVideoInterval[4];
|
||||
};
|
||||
|
||||
struct JUTDirectPrint {
|
||||
/* 802E456C */ void changeFrameBuffer(void*, u16, u16);
|
||||
|
||||
@@ -67,9 +47,6 @@ extern "C" u8 sVideoInterval__8JUTVideo[4];
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void changeFrameBuffer__14JUTDirectPrintFPvUsUs();
|
||||
extern "C" void OSInitMessageQueue();
|
||||
extern "C" void OSSendMessage();
|
||||
extern "C" void OSGetTick();
|
||||
extern "C" void VISetPreRetraceCallback();
|
||||
extern "C" void VISetPostRetraceCallback();
|
||||
extern "C" void VIInit();
|
||||
@@ -80,9 +57,7 @@ extern "C" void VISetNextFrameBuffer();
|
||||
extern "C" void VIGetNextFrameBuffer();
|
||||
extern "C" void VISetBlack();
|
||||
extern "C" void VIGetRetraceCount();
|
||||
extern "C" void GXFlush();
|
||||
extern "C" void GXSetDrawDone();
|
||||
extern "C" void GXSetDrawDoneCallback();
|
||||
extern "C" void GXCopyDisp();
|
||||
extern "C" u8 sDirectPrint__14JUTDirectPrint[4 + 4 /* padding */];
|
||||
extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */];
|
||||
@@ -93,7 +68,7 @@ extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */];
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451538-8045153C 000A38 0004+00 4/4 18/18 1/1 .sbss sManager__8JUTVideo */
|
||||
u8 JUTVideo::sManager[4];
|
||||
JUTVideo* JUTVideo::sManager;
|
||||
|
||||
/* 802E4C54-802E4CAC 2DF594 0058+00 0/0 1/1 0/0 .text
|
||||
* createManager__8JUTVideoFPC16_GXRenderModeObj */
|
||||
|
||||
Reference in New Issue
Block a user