mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Merge pull request #162 from Cuyler36/jsyswrap
Implement & link jsyswrap.cpp
This commit is contained in:
@@ -342,6 +342,7 @@ BOOT_CFLAGS = CFLAGS + [
|
||||
] + DOL_DEFINES
|
||||
DOL_CFLAGS_NO_SDATA = CFLAGS + [
|
||||
"-inline on",
|
||||
"-enum int",
|
||||
"-sdata 0",
|
||||
"-sdata2 0"
|
||||
] + DOL_DEFINES
|
||||
|
||||
@@ -16,6 +16,11 @@ boot.c:
|
||||
.rodata: [0x800a97e0, 0x800a97e8]
|
||||
.data: [0x800af860, 0x800afe50]
|
||||
.bss: [0x800e2280, 0x800e2318]
|
||||
jsyswrap.cpp:
|
||||
.text: [0x8000663c, 0x80007188]
|
||||
.ctors: [0x800a9784, 0x800a9788]
|
||||
.data: [0x800afe50, 0x800b05e8]
|
||||
.bss: [0x800e2318, 0x800e2640]
|
||||
version.c:
|
||||
.data: [0x800b05e8, 0x800b0608]
|
||||
initial_menu.c:
|
||||
|
||||
@@ -3709,6 +3709,7 @@ global:
|
||||
0x802185b0: __GBAReset
|
||||
0x802185b8: texture_cache_num
|
||||
0x802185bc: texture_cache_data_entry_num
|
||||
0x8021860a: FrameCansel
|
||||
0x8021861c: __OSReport_MonopolyThread
|
||||
0x80218620: __OSReport_disable
|
||||
0x80218628: this
|
||||
|
||||
@@ -636,6 +636,9 @@ class CSource(Source):
|
||||
elif path.startswith("src/TRK") and not path.startswith("src/TRK/init"):
|
||||
self.cc = c.CC
|
||||
self.cflags = c.DOL_TRK_CFLAGS
|
||||
elif os.path.dirname(path).endswith("src"):
|
||||
self.cflags = c.DOL_CFLAGS_SDATA0_CFLAGS
|
||||
self.cc = c.CC
|
||||
else:
|
||||
self.cflags = ctx.cflags
|
||||
self.cc = c.CC_R
|
||||
|
||||
@@ -288,7 +288,7 @@ inline void JKRFreeToAram(JKRAramBlock* block)
|
||||
|
||||
inline u8* JKRAramToMainRam(u32 address, u8* buf, u32 bufSize, JKRExpandSwitch expandSwitch, u32 p5, JKRHeap* heap, int id, u32* pSize)
|
||||
{
|
||||
JKRAram::aramToMainRam(address, buf, bufSize, expandSwitch, p5, heap, id, pSize);
|
||||
return JKRAram::aramToMainRam(address, buf, bufSize, expandSwitch, p5, heap, id, pSize);
|
||||
}
|
||||
|
||||
inline JKRAramBlock* JKRMainRamToAram(u8* buf, u32 bufSize, u32 alignedSize, JKRExpandSwitch expandSwitch, u32 fileSize, JKRHeap* heap, int id, u32)
|
||||
|
||||
@@ -2,9 +2,12 @@
|
||||
#define JKRDISPOSER_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "JSystem/JSupport/JSUList.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
class JKRHeap;
|
||||
|
||||
class JKRDisposer
|
||||
@@ -18,4 +21,8 @@ public:
|
||||
JSULink<JKRDisposer> mPointerLinks; // _8
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
class JSUPtrLink;
|
||||
|
||||
class JSUPtrList
|
||||
@@ -220,4 +224,8 @@ private:
|
||||
JSUTree<T> *mTree;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* JSULIST_H */
|
||||
@@ -0,0 +1,210 @@
|
||||
#ifndef JUTGAMEPAD_H
|
||||
#define JUTGAMEPAD_H
|
||||
|
||||
#include "types.h"
|
||||
#include "dolphin/os.h"
|
||||
#include "dolphin/os/OSTime.h"
|
||||
#include "dolphin/pad.h"
|
||||
#include "JSystem/JKernel/JKRDisposer.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void (*JUTResetBtnCb)(int, void*);
|
||||
class JUTGamePad : public JKRDisposer
|
||||
{
|
||||
public:
|
||||
enum EPadPort
|
||||
{
|
||||
Port_unknown = -999,
|
||||
Port_Invalid = -1,
|
||||
Port1 = 0,
|
||||
Port2,
|
||||
Port3,
|
||||
Port4,
|
||||
PortRecorder
|
||||
};
|
||||
|
||||
enum EButtons
|
||||
{
|
||||
MAINSTICK_UP = 0x8000000,
|
||||
MAINSTICK_DOWN = 0x4000000,
|
||||
MAINSTICK_RIGHT = 0x2000000,
|
||||
MAINSTICK_LEFT = 0x1000000,
|
||||
CSTICK_UP = 0x80000,
|
||||
CSTICK_DOWN = 0x40000,
|
||||
CSTICK_RIGHT = 0x20000,
|
||||
CSTICK_LEFT = 0x10000,
|
||||
START = 0x1000,
|
||||
Y = 0x800,
|
||||
X = 0x400,
|
||||
B = 0x200,
|
||||
A = 0x100,
|
||||
L = 0x40,
|
||||
R = 0x20,
|
||||
Z = 0x10,
|
||||
DPAD_UP = 0x8,
|
||||
DPAD_DOWN = 0x4,
|
||||
DPAD_RIGHT = 0x2,
|
||||
DPAD_LEFT = 0x1
|
||||
};
|
||||
|
||||
enum EStickMode
|
||||
{
|
||||
NonClamped,
|
||||
Clamped
|
||||
};
|
||||
|
||||
enum EWhichStick
|
||||
{
|
||||
WhichStick_MainStick,
|
||||
WhichStick_SubStick
|
||||
};
|
||||
|
||||
JUTGamePad();
|
||||
JUTGamePad(EPadPort port);
|
||||
virtual ~JUTGamePad();
|
||||
|
||||
void assign();
|
||||
void checkResetSwitch();
|
||||
void clearForReset();
|
||||
static void init();
|
||||
void initList();
|
||||
void read();
|
||||
static bool recalibrate(u32);
|
||||
void setButtonRepeat(u32, u32, u32);
|
||||
void update();
|
||||
|
||||
static void setResetCallback(JUTResetBtnCb callback, void *param_0)
|
||||
{
|
||||
C3ButtonReset::sCallback = callback;
|
||||
C3ButtonReset::sCallbackArg = param_0;
|
||||
}
|
||||
|
||||
|
||||
bool testButton(u32 mask) const {
|
||||
return mButtons.mButton & mask;
|
||||
}
|
||||
|
||||
bool testTrigger(u32 mask) const {
|
||||
return mButtons.mTrigger & mask;
|
||||
}
|
||||
|
||||
class CButton
|
||||
{
|
||||
public:
|
||||
CButton();
|
||||
|
||||
void clear();
|
||||
void update(const PADStatus*, u32);
|
||||
void setRepeat(u32, u32, u32);
|
||||
|
||||
u32 mButton; // _0
|
||||
u32 mTrigger;
|
||||
u32 mRelease;
|
||||
u8 mAnalogA; // _C
|
||||
u8 mAnalogB; // _D
|
||||
u8 mAnalogL; // _E
|
||||
u8 mAnalogR; // _F
|
||||
f32 mAnalogLf; // _10
|
||||
f32 mAnalogRf; // _14
|
||||
u32 mRepeat;
|
||||
u32 _1C;
|
||||
u32 _20;
|
||||
u32 _24;
|
||||
u32 _28;
|
||||
u32 _2C;
|
||||
};
|
||||
|
||||
class CStick
|
||||
{
|
||||
public:
|
||||
CStick();
|
||||
|
||||
void clear();
|
||||
u32 update(s8 x, s8 y, JUTGamePad::EStickMode, JUTGamePad::EWhichStick);
|
||||
u32 update(s8 x, s8 y, JUTGamePad::EStickMode, JUTGamePad::EWhichStick, u32);
|
||||
u32 getButton();
|
||||
|
||||
f32 mStickX;
|
||||
f32 mStickY;
|
||||
f32 mValue;
|
||||
s16 mAngle;
|
||||
};
|
||||
|
||||
class CRumble
|
||||
{
|
||||
public:
|
||||
void clear(JUTGamePad*);
|
||||
static void stopMotor(s32);
|
||||
static void stopMotorHard(s32);
|
||||
void update(u16);
|
||||
void setEnable(u32);
|
||||
|
||||
u32 _0;
|
||||
u32 _4;
|
||||
u32 _8;
|
||||
u32 _C;
|
||||
};
|
||||
|
||||
class C3ButtonReset {
|
||||
public:
|
||||
C3ButtonReset() { mReset = false; }
|
||||
|
||||
static u32 sResetPattern;
|
||||
static u32 sResetMaskPattern;
|
||||
static JUTResetBtnCb sCallback;
|
||||
static void *sCallbackArg;
|
||||
static OSTime sThreshold;
|
||||
static s32 sResetOccurredPort;
|
||||
static bool sResetOccurred;
|
||||
static bool sResetSwitchPushing;
|
||||
|
||||
private:
|
||||
bool mReset;
|
||||
};
|
||||
|
||||
static bool isPadOk() { // fabricated
|
||||
bool ret = false;
|
||||
switch(mPadStatus[0].err) {
|
||||
case -1:
|
||||
case 0:
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static PADStatus *getPadStatus(int idx) { return &mPadStatus[idx]; }
|
||||
|
||||
static EStickMode sStickMode;
|
||||
|
||||
static PADStatus mPadStatus[4];
|
||||
|
||||
CButton mButtons; // _18
|
||||
CStick mMainStick; // _48
|
||||
CStick mSubStick; // _58
|
||||
CRumble mRumble; // _68
|
||||
u16 mPort; // _78
|
||||
s8 mErrorStatus; // _7A
|
||||
JSULink<JUTGamePad> mPtrLink; // _7C
|
||||
u32 _8C;
|
||||
u32 _90;
|
||||
u32 _94;
|
||||
C3ButtonReset mButtonReset; // _98
|
||||
u8 _99;
|
||||
u8 _9A;
|
||||
u8 _9B;
|
||||
u8 _9C;
|
||||
u8 _9D; // padding?
|
||||
u8 _9E; // ^^
|
||||
u8 _9F; // ^^
|
||||
OSTime mResetTime; // _A0
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,76 @@
|
||||
#ifndef TCOLOR_H
|
||||
#define TCOLOR_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "types.h"
|
||||
#include <dolphin/gx.h>
|
||||
|
||||
#define TCOLOR_WHITE JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF)
|
||||
#define TCOLOR_BLACK JUtility::TColor(0, 0, 0, 0)
|
||||
|
||||
namespace JUtility {
|
||||
struct TColor : public GXColor {
|
||||
TColor() { set(0xFFFFFFFF); }
|
||||
|
||||
TColor(u8 _r, u8 _g, u8 _b, u8 _a) { set(_r, _g, _b, _a); }
|
||||
|
||||
TColor(u32 u32Color) { set(u32Color); }
|
||||
|
||||
TColor(GXColor color) { set(color); }
|
||||
|
||||
TColor &operator=(const TColor &other) {
|
||||
((GXColor *)this)->operator=(other);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** @fabricated */
|
||||
TColor &operator=(const GXColorS10 &other) {
|
||||
r = other.r;
|
||||
g = other.g;
|
||||
b = other.b;
|
||||
a = other.a;
|
||||
return *this;
|
||||
}
|
||||
|
||||
operator u32() const { return toUInt32(); }
|
||||
u32 toUInt32() const { return *(u32 *)&r; }
|
||||
|
||||
void set(u8 cR, u8 cG, u8 cB, u8 cA) {
|
||||
r = cR;
|
||||
g = cG;
|
||||
b = cB;
|
||||
a = cA;
|
||||
}
|
||||
|
||||
void set(u32 u32Color) { *(u32 *)&r = u32Color; }
|
||||
|
||||
void set(GXColor gxColor) { *(GXColor *)&r = gxColor; }
|
||||
void set(TColor color) { *this = color; }
|
||||
|
||||
void setRGB(u8 cR, u8 cG, u8 cB) {
|
||||
r = cR;
|
||||
g = cG;
|
||||
b = cB;
|
||||
}
|
||||
|
||||
void setRGB(const TColor &other) { setRGB(other.r, other.g, other.b); }
|
||||
|
||||
void setRGBA(const TColor &other) {
|
||||
r = other.r;
|
||||
g = other.g;
|
||||
b = other.b;
|
||||
a = other.a;
|
||||
}
|
||||
|
||||
// _00 = GXColor (_00 = r, _01 = g, _02 = b, _03 = a)
|
||||
};
|
||||
} // namespace JUtility
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+16
-16
@@ -25,22 +25,22 @@ typedef union {
|
||||
|
||||
typedef THA_GA_t THA_GA;
|
||||
|
||||
extern void THA_GA_ct(THA_GA* this, Gfx* p, size_t n);
|
||||
extern void THA_GA_dt(THA_GA* this); /* @unused */
|
||||
extern int THA_GA_isCrash(THA_GA* this);
|
||||
extern void THA_GA_init(THA_GA* this); /* @unused*/
|
||||
extern int THA_GA_getFreeBytes(THA_GA* this);
|
||||
extern void* THA_GA_getTailPtr(THA_GA* this); /* @unused */
|
||||
extern void* THA_GA_nextPtrN(THA_GA* this, size_t n); /* @unused */
|
||||
extern void* THA_GA_nextPtr1(THA_GA* this); /* @unused */
|
||||
extern Gfx* THA_GA_NEXT_DISP(THA_GA* this); /* @unused */
|
||||
extern void* THA_GA_getHeadPtr(THA_GA* this); /* @unused */
|
||||
extern void THA_GA_setHeadPtr(THA_GA* this, void *p); /* @unused */
|
||||
extern Mtx* THA_GA_alloc(THA_GA* this, size_t n); /* @unused */
|
||||
extern Mtx* THA_GA_allocMtxN(THA_GA* this, size_t n); /* @unused */
|
||||
extern Mtx* THA_GA_allocMtx1(THA_GA* this); /* @unused */
|
||||
extern Vtx* THA_GA_allocVtxN(THA_GA* this, size_t n); /* @unused */
|
||||
extern Vtx* THA_GA_allocVtx1(THA_GA* this); /* @unused */
|
||||
extern void THA_GA_ct(THA_GA* tha_ga, Gfx* p, size_t n);
|
||||
extern void THA_GA_dt(THA_GA* tha_ga); /* @unused */
|
||||
extern int THA_GA_isCrash(THA_GA* tha_ga);
|
||||
extern void THA_GA_init(THA_GA* tha_ga); /* @unused*/
|
||||
extern int THA_GA_getFreeBytes(THA_GA* tha_ga);
|
||||
extern void* THA_GA_getTailPtr(THA_GA* tha_ga); /* @unused */
|
||||
extern void* THA_GA_nextPtrN(THA_GA* tha_ga, size_t n); /* @unused */
|
||||
extern void* THA_GA_nextPtr1(THA_GA* tha_ga); /* @unused */
|
||||
extern Gfx* THA_GA_NEXT_DISP(THA_GA* tha_ga); /* @unused */
|
||||
extern void* THA_GA_getHeadPtr(THA_GA* tha_ga); /* @unused */
|
||||
extern void THA_GA_setHeadPtr(THA_GA* tha_ga, void *p); /* @unused */
|
||||
extern Mtx* THA_GA_alloc(THA_GA* tha_ga, size_t n); /* @unused */
|
||||
extern Mtx* THA_GA_allocMtxN(THA_GA* tha_ga, size_t n); /* @unused */
|
||||
extern Mtx* THA_GA_allocMtx1(THA_GA* tha_ga); /* @unused */
|
||||
extern Vtx* THA_GA_allocVtxN(THA_GA* tha_ga, size_t n); /* @unused */
|
||||
extern Vtx* THA_GA_allocVtx1(THA_GA* tha_ga); /* @unused */
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
|
||||
+15
-15
@@ -16,21 +16,21 @@ typedef struct {
|
||||
typedef TwoHeadArena_t TwoHeadArena;
|
||||
typedef TwoHeadArena_t THA;
|
||||
|
||||
extern void THA_ct(TwoHeadArena* this, char* p, size_t n);
|
||||
extern void THA_dt(TwoHeadArena* this);
|
||||
extern void* THA_getHeadPtr(TwoHeadArena* this); /* @unused */
|
||||
extern void THA_setHeadPtr(TwoHeadArena* this, void* p); /* @unused */
|
||||
extern void* THA_getTailPtr(TwoHeadArena* this); /* @unused */
|
||||
extern void* THA_nextPtrN(TwoHeadArena* this, size_t n); /* @unused */
|
||||
extern void* THA_nextPtr1(TwoHeadArena* this); /* @unused */
|
||||
extern void* THA_alloc(TwoHeadArena* this, size_t siz);
|
||||
extern void* THA_alloc16(TwoHeadArena* this, size_t siz);
|
||||
extern void* THA_allocAlign(TwoHeadArena* this, size_t siz, int mask);
|
||||
extern int THA_isCrash(TwoHeadArena* this);
|
||||
extern void THA_init(TwoHeadArena* this);
|
||||
extern int THA_getFreeBytes16(TwoHeadArena* this);
|
||||
extern int THA_getFreeBytes(TwoHeadArena* this);
|
||||
extern int THA_getFreeBytesAlign(TwoHeadArena* this, int mask);
|
||||
extern void THA_ct(TwoHeadArena* tha, char* p, size_t n);
|
||||
extern void THA_dt(TwoHeadArena* tha);
|
||||
extern void* THA_getHeadPtr(TwoHeadArena* tha); /* @unused */
|
||||
extern void THA_setHeadPtr(TwoHeadArena* tha, void* p); /* @unused */
|
||||
extern void* THA_getTailPtr(TwoHeadArena* tha); /* @unused */
|
||||
extern void* THA_nextPtrN(TwoHeadArena* tha, size_t n); /* @unused */
|
||||
extern void* THA_nextPtr1(TwoHeadArena* tha); /* @unused */
|
||||
extern void* THA_alloc(TwoHeadArena* tha, size_t siz);
|
||||
extern void* THA_alloc16(TwoHeadArena* tha, size_t siz);
|
||||
extern void* THA_allocAlign(TwoHeadArena* tha, size_t siz, int mask);
|
||||
extern int THA_isCrash(TwoHeadArena* tha);
|
||||
extern void THA_init(TwoHeadArena* tha);
|
||||
extern int THA_getFreeBytes16(TwoHeadArena* tha);
|
||||
extern int THA_getFreeBytes(TwoHeadArena* tha);
|
||||
extern int THA_getFreeBytesAlign(TwoHeadArena* tha, int mask);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
|
||||
@@ -193,6 +193,8 @@ void DVDDumpWaitingQueue();
|
||||
|
||||
#define DVD_AIS_SUCCESS 0
|
||||
|
||||
DVDDiskID DiskID AT_ADDRESS(0x80000000);
|
||||
|
||||
//////////////////////////////////
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -25,6 +25,33 @@ extern "C" {
|
||||
#define PAD_BUTTON_MENU 0x1000
|
||||
#define PAD_BUTTON_START 0x1000
|
||||
|
||||
typedef void (*PADSamplingCallback)(void);
|
||||
|
||||
typedef struct PADStatus {
|
||||
u16 button;
|
||||
s8 stickX;
|
||||
s8 stickY;
|
||||
s8 substickX;
|
||||
s8 substickY;
|
||||
u8 triggerLeft;
|
||||
u8 triggerRight;
|
||||
u8 analogA;
|
||||
u8 analogB;
|
||||
s8 err;
|
||||
} PADStatus;
|
||||
|
||||
BOOL PADInit();
|
||||
u32 PADRead(PADStatus *status);
|
||||
BOOL PADReset(u32 mask);
|
||||
BOOL PADRecalibrate(u32 mask);
|
||||
void PADClamp(PADStatus *status);
|
||||
void PADClampCircle(PADStatus *status);
|
||||
void PADControlMotor(s32 chan, u32 cmd);
|
||||
void PADSetSpec(u32 spec);
|
||||
void PADControlAllMotors(const u32 *cmdArr);
|
||||
void PADSetAnalogMode(u32 mode);
|
||||
PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+12
-12
@@ -57,23 +57,23 @@ do { \
|
||||
GAME_NEXT_GAME(t_game, init_name, class_name); \
|
||||
} while (0)
|
||||
|
||||
extern void game_debug_draw_last(GAME* this, GRAPH* graph);
|
||||
extern void game_debug_draw_last(GAME* game, GRAPH* graph);
|
||||
extern void game_draw_last(GRAPH* graph);
|
||||
extern void game_get_controller(GAME* this);
|
||||
extern void game_get_controller(GAME* game);
|
||||
extern void SetGameFrame(int frame);
|
||||
extern void game_main(GAME* this);
|
||||
extern void game_resize_hyral(GAME* this, int size);
|
||||
extern void game_ct(GAME* this, void (*init)(GAME*), GRAPH* graph);
|
||||
extern void game_dt(GAME* this);
|
||||
extern void (*game_get_next_game_init(GAME* this))(GAME*);
|
||||
extern void game_main(GAME* game);
|
||||
extern void game_resize_hyral(GAME* game, int size);
|
||||
extern void game_ct(GAME* game, void (*init)(GAME*), GRAPH* graph);
|
||||
extern void game_dt(GAME* game);
|
||||
extern void (*game_get_next_game_init(GAME* game))(GAME*);
|
||||
#ifndef MUST_MATCH
|
||||
extern size_t game_get_next_game_class_size(GAME* this);
|
||||
extern size_t game_get_next_game_class_size(GAME* game);
|
||||
#endif
|
||||
extern int game_is_doing(GAME* this);
|
||||
extern int game_getFreeBytes(GAME* this);
|
||||
extern void game_goto_next_game_play(GAME* this);
|
||||
extern int game_is_doing(GAME* game);
|
||||
extern int game_getFreeBytes(GAME* game);
|
||||
extern void game_goto_next_game_play(GAME* game);
|
||||
#ifndef MUST_MATCH
|
||||
extern void game_goto_next_game_famicom_emu(GAME* this);
|
||||
extern void game_goto_next_game_famicom_emu(GAME* game);
|
||||
#endif
|
||||
|
||||
extern GAME* gamePT;
|
||||
|
||||
+2
-2
@@ -88,8 +88,8 @@ typedef struct graph_s {
|
||||
} GRAPH ATTRIBUTE_ALIGN(8); // one of the missing structs is likely aligned to 8 bytes.
|
||||
|
||||
extern void graph_proc(void* arg);
|
||||
extern void graph_ct(GRAPH* this);
|
||||
extern void graph_dt(GRAPH* this);
|
||||
extern void graph_ct(GRAPH* graph);
|
||||
extern void graph_dt(GRAPH* graph);
|
||||
|
||||
#define GRAPH_SET_DOING_POINT(g, point) ((g)->doing_point = GRAPH_DOING_##point)
|
||||
|
||||
|
||||
+105
-11
@@ -2,25 +2,119 @@
|
||||
#define JSYSWRAP_H
|
||||
|
||||
#include "types.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "dolphin/gx.h"
|
||||
#include "dolphin/dvd.h"
|
||||
#include "dolphin/pad.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void JW_JUTReport(int pos_x, int pos_y, int show_count, const char* fmt, ...);
|
||||
extern void JC_JFWDisplay_startFadeOut(void*, int);
|
||||
extern void* JC_JFWDisplay_getManager();
|
||||
extern void JC_JFWDisplay_clearEfb(void*, GXColor*);
|
||||
extern GXRenderModeObj* JC_JFWDisplay_getRenderMode(void*);
|
||||
extern void* JC_JFWDisplay_changeToSingleXfb(void*, int);
|
||||
enum resource_index {
|
||||
RESOURCE_FGDATA,
|
||||
RESOURCE_MAIL,
|
||||
RESOURCE_MAIL_TABLE,
|
||||
RESOURCE_MAILA,
|
||||
RESOURCE_MAILA_TABLE,
|
||||
RESOURCE_MAILB,
|
||||
RESOURCE_MAILB_TABLE,
|
||||
RESOURCE_MAILC,
|
||||
RESOURCE_MAILC_TABLE,
|
||||
RESOURCE_PALLET_BOY,
|
||||
RESOURCE_PS,
|
||||
RESOURCE_PS_TABLE,
|
||||
RESOURCE_PSZ,
|
||||
RESOURCE_PSZ_TABLE,
|
||||
RESOURCE_SELECT,
|
||||
RESOURCE_SELECT_TABLE,
|
||||
RESOURCE_STRING,
|
||||
RESOURCE_STRING_TABLE,
|
||||
RESOURCE_SUPERZ,
|
||||
RESOURCE_SUPERZ_TABLE,
|
||||
RESOURCE_SUPER,
|
||||
RESOURCE_SUPER_TABLE,
|
||||
RESOURCE_TEX_BOY,
|
||||
RESOURCE_FACE_BOY,
|
||||
RESOURCE_FGNPCDATA,
|
||||
RESOURCE_MESSAGE,
|
||||
RESOURCE_MESSAGE_TABLE,
|
||||
RESOURCE_MY_ORIGINAL,
|
||||
RESOURCE_NEEDLEWORK_JOYBOOT,
|
||||
RESOURCE_PLAYER_ROOM_FLOOR,
|
||||
RESOURCE_PLAYER_ROOM_WALL,
|
||||
RESOURCE_NPC_NAME_STR_TABLE,
|
||||
RESOURCE_D_OBJ_NPC_STOCK_SCH,
|
||||
RESOURCE_D_OBJ_NPC_STOCK_SCL,
|
||||
RESOURCE_TITLE,
|
||||
RESOURCE_MURA_SPRING,
|
||||
RESOURCE_MURA_SUMMER,
|
||||
RESOURCE_MURA_FALL,
|
||||
RESOURCE_MURA_WINTER,
|
||||
RESOURCE_ODEKAKE,
|
||||
RESOURCE_OMAKE,
|
||||
RESOURCE_EKI1,
|
||||
RESOURCE_EKI1_2,
|
||||
RESOURCE_EKI1_3,
|
||||
RESOURCE_EKI1_4,
|
||||
RESOURCE_EKI1_5,
|
||||
RESOURCE_EKI2,
|
||||
RESOURCE_EKI2_2,
|
||||
RESOURCE_EKI2_3,
|
||||
RESOURCE_EKI2_4,
|
||||
RESOURCE_EKI2_5,
|
||||
RESOURCE_EKI3,
|
||||
RESOURCE_EKI3_2,
|
||||
RESOURCE_EKI3_3,
|
||||
RESOURCE_EKI3_4,
|
||||
RESOURCE_EKI3_5,
|
||||
RESOURCE_TEGAMI,
|
||||
RESOURCE_TEGAMI2,
|
||||
RESOURCE_FAMIKON,
|
||||
RESOURCE_BOY1,
|
||||
RESOURCE_BOY2,
|
||||
RESOURCE_BOY3,
|
||||
RESOURCE_BOY4,
|
||||
RESOURCE_BOY5,
|
||||
RESOURCE_BOY6,
|
||||
RESOURCE_BOY7,
|
||||
RESOURCE_BOY8,
|
||||
RESOURCE_GIRL11,
|
||||
RESOURCE_GIRL12,
|
||||
RESOURCE_GIRL13,
|
||||
RESOURCE_GIRL14,
|
||||
RESOURCE_GIRL15,
|
||||
RESOURCE_GIRL16,
|
||||
RESOURCE_GIRL17,
|
||||
RESOURCE_GIRL18,
|
||||
RESOURCE_D_BG_ISLAND_SCH,
|
||||
|
||||
extern void JC_JFWDisplay_startFadeIn(void*, int);
|
||||
extern void JC_JFWDisplay_changeToDoubleXfb(void*);
|
||||
extern u32 JC__JKRGetResource(char*);
|
||||
extern int JC__JKRGetMemBlockSize(int, u32);
|
||||
RESOURCE_NUM
|
||||
};
|
||||
|
||||
extern void JC__JKRRemoveResource(void*);
|
||||
extern void JW_UpdateVideoMode();
|
||||
extern void JW_SetProgressiveMode(int enabled);
|
||||
extern void JW_SetLowResoMode(int enabled);
|
||||
extern void JW_SetFamicomMode(int enabled);
|
||||
extern void JW_SetVideoPan(u16 origin_x, u16 origin_y, u16 width, u16 height);
|
||||
extern void JW_SetLogoMode(int enabled);
|
||||
extern void JW_JUTGamePad_read();
|
||||
extern void JW_getPadStatus(PADStatus* padStatus);
|
||||
extern int JW_JUTGamepad_getErrorStatus();
|
||||
extern u32 JW_JUTGamepad_getButton();
|
||||
extern u32 JW_JUTGamepad_getTrigger();
|
||||
extern f32 JW_JUTGamepad_getSubStickValue();
|
||||
extern int JW_JUTGamepad_getSubStickAngle();
|
||||
extern void JW_BeginFrame();
|
||||
extern void JW_EndFrame();
|
||||
extern int JW_setClearColor(u8 r, u8 g, u8 b);
|
||||
extern u32 JW_GetAramAddress(int res_no);
|
||||
extern u8* _JW_GetResourceAram(u32 aram_addr, u8* dst, u32 size);
|
||||
extern u32 JW_GetResSizeFileNo(int res_no);
|
||||
extern void JW_Init();
|
||||
extern void JW_Init2();
|
||||
extern void JW_Init3();
|
||||
extern void JW_Cleanup();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef JSYSWRAP_CPP_H
|
||||
#define JSYSWRAP_CPP_H
|
||||
|
||||
#include "types.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "JSystem/JUtility/JUTGamePad.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern JUTGamePad gamePad[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -7,6 +7,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern u8 FrameCansel;
|
||||
|
||||
/* These might be signed */
|
||||
extern void emu64_set_aflags(u32 idx, u32 value);
|
||||
extern int emu64_get_aflags(u32 idx);
|
||||
|
||||
+73
-102
@@ -5,123 +5,45 @@
|
||||
#include "JSystem/JKernel/JKREnum.h"
|
||||
#include "JSystem/JUtility/JUTEnum.h"
|
||||
#include "va_args.h"
|
||||
#include "dolphin/gx.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum resource_index {
|
||||
RESOURCE_FGDATA,
|
||||
RESOURCE_MAIL,
|
||||
RESOURCE_MAIL_TABLE,
|
||||
RESOURCE_MAILA,
|
||||
RESOURCE_MAILA_TABLE,
|
||||
RESOURCE_MAILB,
|
||||
RESOURCE_MAILB_TABLE,
|
||||
RESOURCE_MAILC,
|
||||
RESOURCE_MAILC_TABLE,
|
||||
RESOURCE_PALLET_BOY,
|
||||
RESOURCE_PS,
|
||||
RESOURCE_PS_TABLE,
|
||||
RESOURCE_PSZ,
|
||||
RESOURCE_PSZ_TABLE,
|
||||
RESOURCE_SELECT,
|
||||
RESOURCE_SELECT_TABLE,
|
||||
RESOURCE_STRING,
|
||||
RESOURCE_STRING_TABLE,
|
||||
RESOURCE_SUPERZ,
|
||||
RESOURCE_SUPERZ_TABLE,
|
||||
RESOURCE_SUPER,
|
||||
RESOURCE_SUPER_TABLE,
|
||||
RESOURCE_TEX_BOY,
|
||||
RESOURCE_FACE_BOY,
|
||||
RESOURCE_FGNPCDATA,
|
||||
RESOURCE_MESSAGE,
|
||||
RESOURCE_MESSAGE_TABLE,
|
||||
RESOURCE_MY_ORIGINAL,
|
||||
RESOURCE_NEEDLEWORK_JOYBOOT,
|
||||
RESOURCE_PLAYER_ROOM_FLOOR,
|
||||
RESOURCE_PLAYER_ROOM_WALL,
|
||||
RESOURCE_NPC_NAME_STR_TABLE,
|
||||
RESOURCE_D_OBJ_NPC_STOCK_SCH,
|
||||
RESOURCE_D_OBJ_NPC_STOCK_SCL,
|
||||
RESOURCE_TITLE,
|
||||
RESOURCE_MURA_SPRING,
|
||||
RESOURCE_MURA_SUMMER,
|
||||
RESOURCE_MURA_FALL,
|
||||
RESOURCE_MURA_WINTER,
|
||||
RESOURCE_ODEKAKE,
|
||||
RESOURCE_OMAKE,
|
||||
RESOURCE_EKI1,
|
||||
RESOURCE_EKI1_2,
|
||||
RESOURCE_EKI1_3,
|
||||
RESOURCE_EKI1_4,
|
||||
RESOURCE_EKI1_5,
|
||||
RESOURCE_EKI2,
|
||||
RESOURCE_EKI2_2,
|
||||
RESOURCE_EKI2_3,
|
||||
RESOURCE_EKI2_4,
|
||||
RESOURCE_EKI2_5,
|
||||
RESOURCE_EKI3,
|
||||
RESOURCE_EKI3_2,
|
||||
RESOURCE_EKI3_3,
|
||||
RESOURCE_EKI3_4,
|
||||
RESOURCE_EKI3_5,
|
||||
RESOURCE_TEGAMI,
|
||||
RESOURCE_TEGAMI2,
|
||||
RESOURCE_FAMIKON,
|
||||
RESOURCE_BOY1,
|
||||
RESOURCE_BOY2,
|
||||
RESOURCE_BOY3,
|
||||
RESOURCE_BOY4,
|
||||
RESOURCE_BOY5,
|
||||
RESOURCE_BOY6,
|
||||
RESOURCE_BOY7,
|
||||
RESOURCE_BOY8,
|
||||
RESOURCE_GIRL11,
|
||||
RESOURCE_GIRL12,
|
||||
RESOURCE_GIRL13,
|
||||
RESOURCE_GIRL14,
|
||||
RESOURCE_GIRL15,
|
||||
RESOURCE_GIRL16,
|
||||
RESOURCE_GIRL17,
|
||||
RESOURCE_GIRL18,
|
||||
RESOURCE_D_BG_ISLAND_SCH,
|
||||
|
||||
RESOURCE_NUM
|
||||
};
|
||||
|
||||
extern void JW_Init();
|
||||
extern void JW_Init2();
|
||||
extern void JW_Init3();
|
||||
extern void* JW_Alloc(size_t size, int align);
|
||||
extern void JW_Free(void* ptr);
|
||||
extern s32 JW_Resize(void* ptr, size_t new_size);
|
||||
extern size_t JW_GetMemBlockSize(void* ptr);
|
||||
extern size_t JW_GetResSizeFileNo(int file_no);
|
||||
extern void JW_BeginFrame();
|
||||
extern void JW_EndFrame();
|
||||
extern void JW_JUTReport(int x, int y, int show_count, const char* fmt, ...);
|
||||
extern void JW_SetLowResoMode(BOOL enable);
|
||||
extern void JW_SetProgressiveMode(BOOL enable);
|
||||
extern u32 JW_GetAramAddress(int resource_no);
|
||||
extern u8* _JW_GetResourceAram(u32 aram_addr, u8* dst, size_t size);
|
||||
extern void JW_SetFamicomMode(int enabled);
|
||||
extern void JW_SetLogoMode(int mode);
|
||||
extern void JW_Cleanup();
|
||||
typedef struct {
|
||||
u16 mFileID; // _00
|
||||
u16 mHash; // _02
|
||||
u32 mFlag; // _04
|
||||
u32 mDataOffset; // _08
|
||||
u32 mSize; // _0C
|
||||
void* mData; // _10
|
||||
} CSDIFileEntry;
|
||||
|
||||
extern void* JC_JFWSystem_getSystemConsole();
|
||||
extern void* JC_JFWSystem_getRootHeap();
|
||||
extern void* JC_JFWSystem_getSystemHeap();
|
||||
|
||||
extern void* JC_JUTVideo_getManager();
|
||||
extern u16 JC_JUTVideo_getFbWidth(void* manager);
|
||||
extern u16 JC_JUTVideo_getEfbHeight(void* manager);
|
||||
extern void JC_JUTVideo_setRenderMode(void* manager, GXRenderModeObj* renderMode);
|
||||
|
||||
extern void* JC_JFWDisplay_getManager();
|
||||
extern void JC_JFWDisplay_startFadeOut(void* manager, int len);
|
||||
extern void JC_JFWDisplay_startFadeIn(void* manager, int len);
|
||||
extern void JC_JFWDisplay_setFrameRate(void* manager, u16 framerate);
|
||||
extern void JC_JFWDisplay_endFrame(void* manager);
|
||||
extern void JC_JFWDisplay_beginRender(void* manager);
|
||||
extern void JC_JFWDisplay_endRender(void* manager);
|
||||
extern void JC_JFWDisplay_setClearColor(void* manager, GXColor color);
|
||||
|
||||
extern void JC_JKRAramHeap_dump(void* heap);
|
||||
extern void* JC_JKRAram_getAramHeap();
|
||||
|
||||
extern u32 JC_JKRAramArchive_getAramAddress_byName(void* archive, u32 root_name, const char* res_name);
|
||||
extern CSDIFileEntry* JC__JKRGetResourceEntry_byName(u32 root_name, const char* res_name, void* archive);
|
||||
|
||||
extern int JC_JKRHeap_dump(void* heap);
|
||||
extern s32 JC_JKRHeap_getTotalFreeSize(void* heap);
|
||||
|
||||
@@ -146,6 +68,7 @@ extern void JC_JUTConsole_scroll(void* console, int amount);
|
||||
extern u32 JC_JUTConsole_getHeight(void* console);
|
||||
extern u32 JC_JUTConsole_getUsedLine(void* console);
|
||||
extern void JC_JUTConsole_print_f_va(void* console, const char* fmt, va_list arg);
|
||||
extern void JC_JUTConsole_print_f(void* console, const char* fmt, ...);
|
||||
|
||||
extern void* JC_JUTConsoleManager_getManager();
|
||||
extern void JC_JUTConsoleManager_drawDirect(void* manager, int direct);
|
||||
@@ -169,10 +92,58 @@ extern void JC_JUTAssertion_changeDevice(int device);
|
||||
extern void JC_JUTAssertion_changeDisplayTime(int displayTime);
|
||||
|
||||
extern void JC_JUTGamePad_read();
|
||||
extern void JC_JFWDisplay_startFadeOut(void* manager, int fadeout);
|
||||
extern void JC_JFWDisplay_clearEfb(void* manager, GXColor* color);
|
||||
extern GXRenderModeObj* JC_JFWDisplay_getRenderMode(void* manager);
|
||||
extern void* JC_JFWDisplay_changeToSingleXfb(void* manager, int param);
|
||||
extern u16 JC_JFWDisplay_getEfbWidth(void* manager);
|
||||
extern u16 JC_JFWDisplay_getEfbHeight(void* manager);
|
||||
extern void JC_JFWSystem_setMaxStdHeap(int max);
|
||||
extern void JC_JFWSystem_setSysHeapSize(u32 size);
|
||||
extern void JC_JFWSystem_setFifoBufSize(u32 size);
|
||||
extern void JC_JFWSystem_setAramAudioBufSize(u32 size);
|
||||
extern void JC_JFWSystem_setAramGraphBufSize(u32 size);
|
||||
extern void JC_JFWSystem_init();
|
||||
extern void* JC_JFWDisplay_createManager_0(GXRenderModeObj* renderMode, void* heap, int param0, int param1);
|
||||
extern void JC_JFWDisplay_setFader(void* manager, void* fader);
|
||||
extern void JC_JFWDisplay_setGamma(void* manager, int gamma);
|
||||
extern void JC_JFWDisplay_destroyManager();
|
||||
|
||||
extern u32 JW_JUTGamepad_getButton();
|
||||
extern u32 JW_JUTGamepad_getTrigger();
|
||||
extern u32 JW_JUTGamepad_getErrorStatus();
|
||||
extern void* JC_J2DOrthoGraph_new();
|
||||
extern void JC_J2DOrthoGraph_delete(void* orthograph);
|
||||
|
||||
extern void* JC_JUTFader_new(int ul_x, int ul_y, int br_x, int br_y, u32* color);
|
||||
extern void JC_JUTFader_delete(void* fader);
|
||||
|
||||
extern void JC_JFWDisplay_changeToDoubleXfb(void* manager);
|
||||
extern u32 JC__JKRGetResource(char* resourceName);
|
||||
extern int JC__JKRGetMemBlockSize(int, u32);
|
||||
|
||||
extern void JC__JKRRemoveResource(void* res);
|
||||
|
||||
extern void JC_J2DOrthoGraph_setOrtho(void* gport, u16 ul_x, u16 ul_y, u16 br_x, u16 br_y);
|
||||
extern void JC_J2DOrthoGraph_setPort(void* gport);
|
||||
|
||||
extern void* JC_JKRAramArchive_new();
|
||||
extern BOOL JC__JKRMountFixedAramArchive(void* aram_archive, const char* file);
|
||||
extern BOOL JC__JKRUnmountFixedAramArchive(void* aram_archive);
|
||||
extern void JC_JKRAramArchive_delete(void* aram_archive);
|
||||
|
||||
extern u32 JC_JKRHeap_getFreeSize(void* heap);
|
||||
extern void* JC_JKRHeap_alloc(void* heap, u32 size, int align);
|
||||
extern void JC_JKRHeap_free(void* heap, void* mem);
|
||||
|
||||
extern void* JW_Alloc(size_t size, int align);
|
||||
extern void JW_Free(void* ptr);
|
||||
extern s32 JW_Resize(void* ptr, size_t new_size);
|
||||
extern size_t JW_GetMemBlockSize(void* ptr);
|
||||
extern void JW_JUTReport(int x, int y, int show_count, const char* fmt, ...);
|
||||
|
||||
#ifdef JSYSWRAPPER_DEBUG
|
||||
#define JSYSWRAPPER_PRINTF(console, fmt, ...) JC_JUTConsole_print_f(console, fmt, ...)
|
||||
#else
|
||||
#define JSYSWRAPPER_PRINTF(console, fmt, ...)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
#include "gfxalloc.h"
|
||||
#include "gamealloc.h"
|
||||
#include "THA_GA.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
|
||||
GAME* gamePT = NULL;
|
||||
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
#include "irqmgr.h"
|
||||
#include "libc64/malloc.h"
|
||||
#include "libforest/emu64/emu64_wrapper.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "libu64/debug.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "m_bgm.h"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "m_debug.h"
|
||||
#include "libu64/u64types.h"
|
||||
#include "dolphin/os.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "libc64/__osMalloc.h"
|
||||
#include "m_rcp.h"
|
||||
#include "main.h"
|
||||
|
||||
+22
-22
@@ -24,7 +24,7 @@
|
||||
#include "m_card.h"
|
||||
#include "m_flashrom.h"
|
||||
#include "dolphin/dvd.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "boot.h"
|
||||
#include "m_common_data.h"
|
||||
|
||||
@@ -145,7 +145,7 @@ static void Debug_Print2_output(gfxprint_t* gfxprint) {
|
||||
}
|
||||
}
|
||||
|
||||
#define PAD_BUTTON_DOWN(buttons, button) (((int)(buttons) | (~(int)(button))) == -1)
|
||||
#define PAD_BUTTON_IS_DOWN(buttons, button) (((int)(buttons) | (~(int)(button))) == -1)
|
||||
|
||||
static int Debug_console(pad_t* pad) {
|
||||
static f32 console_scroll;
|
||||
@@ -161,7 +161,7 @@ static int Debug_console(pad_t* pad) {
|
||||
|
||||
if (sys_console != NULL) {
|
||||
/* Toggle console visiblity when Z button is released */
|
||||
if (PAD_BUTTON_DOWN(pad->on.button, BUTTON_Z) && (pad->now.button & (~BUTTON_Z)) == 0) {
|
||||
if (PAD_BUTTON_IS_DOWN(pad->on.button, BUTTON_Z) && (pad->now.button & (~BUTTON_Z)) == 0) {
|
||||
JC_JUTConsole_setVisible(sys_console, !JC_JUTConsole_isVisible(sys_console));
|
||||
}
|
||||
|
||||
@@ -171,12 +171,12 @@ static int Debug_console(pad_t* pad) {
|
||||
f32 log_stick_y = (f32)pad->off.stick_y / 60.0f;
|
||||
|
||||
/* B button clears console */
|
||||
if (PAD_BUTTON_DOWN(pad->on.button, BUTTON_B)) {
|
||||
if (PAD_BUTTON_IS_DOWN(pad->on.button, BUTTON_B)) {
|
||||
JC_JUTConsole_clear(sys_console);
|
||||
}
|
||||
|
||||
/* L button to scroll */
|
||||
if (PAD_BUTTON_DOWN(pad->now.button, BUTTON_L)) {
|
||||
if (PAD_BUTTON_IS_DOWN(pad->now.button, BUTTON_L)) {
|
||||
console_scroll -= log_stick_y;
|
||||
|
||||
if (console_scroll > 1.0f) {
|
||||
@@ -221,7 +221,7 @@ static int Debug_console(pad_t* pad) {
|
||||
}
|
||||
|
||||
/* R button re-prints console */
|
||||
if (PAD_BUTTON_DOWN(pad->on.button, BUTTON_R)) {
|
||||
if (PAD_BUTTON_IS_DOWN(pad->on.button, BUTTON_R)) {
|
||||
JC_JUTConsole_dumpToTerminal(sys_console, -1); /* -1 is probably a define */
|
||||
JC_JUTConsole_setOutput(sys_console, 3); /* Again, 3 is probably a define */
|
||||
}
|
||||
@@ -257,7 +257,7 @@ extern void Debug_mode_input(pad_t* pad) {
|
||||
int dpad = now_button & (BUTTON_DRIGHT | BUTTON_DLEFT | BUTTON_DDOWN | BUTTON_DUP);
|
||||
|
||||
/* L + R held shows the disk info, copy date, and zurumode/appNMI buffer state */
|
||||
if (PAD_BUTTON_DOWN(now_button, BUTTON_L) && PAD_BUTTON_DOWN(now_button, BUTTON_R)) {
|
||||
if (PAD_BUTTON_IS_DOWN(now_button, BUTTON_L) && PAD_BUTTON_IS_DOWN(now_button, BUTTON_R)) {
|
||||
DVDDiskID* diskid = DVDGetCurrentDiskID();
|
||||
if (diskid != NULL) {
|
||||
JW_JUTReport(50, 50, 1, "%.4s %.2s 0x%02x(%d)", diskid->gameName, diskid->company, diskid->gameVersion, diskid->gameVersion);
|
||||
@@ -270,7 +270,7 @@ extern void Debug_mode_input(pad_t* pad) {
|
||||
JW_JUTReport(50, 60, 1, "Z=%d Z2=%d ANB=%08x", zurumode_flag != 0, zurumode_flag >= 2, APPNMI_GETVAL());
|
||||
|
||||
/* Additionally, pressing Z after L + R will print out each bit in debug appNMI buffer */
|
||||
if (PAD_BUTTON_DOWN(pad->now.button, BUTTON_Z)) {
|
||||
if (PAD_BUTTON_IS_DOWN(pad->now.button, BUTTON_Z)) {
|
||||
int i;
|
||||
for (i = 0; i < 32; i++) {
|
||||
JW_JUTReport(50 + i * 12, 70, 1, "%1x", (APPNMI_GETVAL() >> (31 - i)) & 1);
|
||||
@@ -278,7 +278,7 @@ extern void Debug_mode_input(pad_t* pad) {
|
||||
}
|
||||
}
|
||||
|
||||
if (zurumode_flag >= 2 && (PAD_BUTTON_DOWN(pad->now.button, BUTTON_L) || PAD_BUTTON_DOWN(pad->now.button, BUTTON_R) || PAD_BUTTON_DOWN(pad->now.button, BUTTON_START))) {
|
||||
if (zurumode_flag >= 2 && (PAD_BUTTON_IS_DOWN(pad->now.button, BUTTON_L) || PAD_BUTTON_IS_DOWN(pad->now.button, BUTTON_R) || PAD_BUTTON_IS_DOWN(pad->now.button, BUTTON_START))) {
|
||||
/* Button combos to get to each register */
|
||||
static debug_reg_keycombo_t key_data[DEBUG_REG_MAX] = {
|
||||
{BUTTON_L, BUTTON_CUP}, /* REG */
|
||||
@@ -324,8 +324,8 @@ extern void Debug_mode_input(pad_t* pad) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < DEBUG_REG_MAX; i++) {
|
||||
if (PAD_BUTTON_DOWN(pad->now.button, key_data[i].held) &&
|
||||
PAD_BUTTON_DOWN(pad->on.button, key_data[i].pressed)) {
|
||||
if (PAD_BUTTON_IS_DOWN(pad->now.button, key_data[i].held) &&
|
||||
PAD_BUTTON_IS_DOWN(pad->on.button, key_data[i].pressed)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -379,37 +379,37 @@ extern void Debug_mode_input(pad_t* pad) {
|
||||
**/
|
||||
if (dpad & BUTTON_DRIGHT) {
|
||||
u16 btn = pad->now.button;
|
||||
if (PAD_BUTTON_DOWN(btn, BUTTON_CUP)) {
|
||||
if (PAD_BUTTON_IS_DOWN(btn, BUTTON_CUP)) {
|
||||
increment = 0x1000;
|
||||
} else if (PAD_BUTTON_DOWN(btn, BUTTON_CDOWN)) {
|
||||
} else if (PAD_BUTTON_IS_DOWN(btn, BUTTON_CDOWN)) {
|
||||
increment = 0x100;
|
||||
} else if (PAD_BUTTON_DOWN(btn, BUTTON_A | BUTTON_B)) {
|
||||
} else if (PAD_BUTTON_IS_DOWN(btn, BUTTON_A | BUTTON_B)) {
|
||||
increment = 1000;
|
||||
} else if (PAD_BUTTON_DOWN(btn, BUTTON_A)) {
|
||||
} else if (PAD_BUTTON_IS_DOWN(btn, BUTTON_A)) {
|
||||
increment = 100;
|
||||
} else {
|
||||
increment = 1;
|
||||
if (PAD_BUTTON_DOWN(btn, BUTTON_B)) {
|
||||
if (PAD_BUTTON_IS_DOWN(btn, BUTTON_B)) {
|
||||
increment = 10;
|
||||
}
|
||||
}
|
||||
} else if (dpad & BUTTON_DLEFT) {
|
||||
u16 btn = pad->now.button;
|
||||
if (PAD_BUTTON_DOWN(btn, BUTTON_CUP)) {
|
||||
if (PAD_BUTTON_IS_DOWN(btn, BUTTON_CUP)) {
|
||||
increment = -0x1000;
|
||||
} else if (PAD_BUTTON_DOWN(btn, BUTTON_CDOWN)) {
|
||||
} else if (PAD_BUTTON_IS_DOWN(btn, BUTTON_CDOWN)) {
|
||||
increment = -0x100;
|
||||
} else if (PAD_BUTTON_DOWN(btn, BUTTON_A | BUTTON_B)) {
|
||||
} else if (PAD_BUTTON_IS_DOWN(btn, BUTTON_A | BUTTON_B)) {
|
||||
increment = -1000;
|
||||
}
|
||||
/* lol the missed duplicated case */
|
||||
else if (PAD_BUTTON_DOWN(btn, BUTTON_A | BUTTON_B)) {
|
||||
else if (PAD_BUTTON_IS_DOWN(btn, BUTTON_A | BUTTON_B)) {
|
||||
increment = -1000;
|
||||
} else if (PAD_BUTTON_DOWN(btn, BUTTON_A)) {
|
||||
} else if (PAD_BUTTON_IS_DOWN(btn, BUTTON_A)) {
|
||||
increment = -100;
|
||||
} else {
|
||||
increment = -1;
|
||||
if (PAD_BUTTON_DOWN(btn, BUTTON_B)) {
|
||||
if (PAD_BUTTON_IS_DOWN(btn, BUTTON_B)) {
|
||||
increment = -10;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
#include "lb_rtc.h"
|
||||
#include "m_scene_table.h"
|
||||
#include "m_malloc.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
|
||||
#define CRC32_POLYNOMIAL 0xEDB88320
|
||||
#define CRC32_START_VALUE 0xAA478422
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
#include "m_scene_table.h"
|
||||
#include "m_random_field.h"
|
||||
#include "m_soncho.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "m_malloc.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "m_bg_tex.h"
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
#include "m_handbill.h"
|
||||
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "m_msg.h"
|
||||
#include "m_string.h"
|
||||
#include "m_font.h"
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
#include "m_random_field.h"
|
||||
#include "m_malloc.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
|
||||
static Island_c l_keepIsland;
|
||||
static u16 l_keepIslandComb[mISL_FG_BLOCK_X_NUM * mISL_FG_BLOCK_Z_NUM];
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#include "m_string.h"
|
||||
#include "m_private.h"
|
||||
#include "m_common_data.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "m_lib.h"
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
#include "ac_my_room.h"
|
||||
#include "m_mail_password_check.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
|
||||
extern mNpc_Default_Data_c npc_def_list[];
|
||||
extern s8 npc_grow_list[];
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
#include "game.h"
|
||||
#include "m_house.h"
|
||||
#include "dolphin/os/OSCache.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "m_player_lib.h"
|
||||
|
||||
typedef struct ftr_place_data_s {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
#include "m_player_lib.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "m_play.h"
|
||||
#include "m_common_data.h"
|
||||
#include "m_npc.h"
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
#include "m_string.h"
|
||||
|
||||
#include "m_msg.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "m_lib.h"
|
||||
#include "m_font.h"
|
||||
#include "m_mail.h"
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@
|
||||
#include "m_vibctl.h"
|
||||
#include "sys_matrix.h"
|
||||
#include "sys_vimgr.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "libc64/qrand.h"
|
||||
#include "m_common_data.h"
|
||||
#include "m_play.h"
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
#include "graph.h"
|
||||
#include "libultra/osMesg.h"
|
||||
#include "libultra/os_thread.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "m_card.h"
|
||||
#include "_mem.h"
|
||||
#include "padmgr.h"
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
#include "libc64/sleep.h"
|
||||
#include "libforest/osreport.h"
|
||||
#include "libforest/emu64/emu64_wrapper.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "libultra/initialize.h"
|
||||
#include "libultra/contreaddata.h"
|
||||
#include "libultra/libultra.h"
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
#include "dolphin/dvd.h"
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "libforest/emu64/emu64_wrapper.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "dolphin/vi.h"
|
||||
#include "dolphin/gx.h"
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#include "libforest/gbi_extensions.h"
|
||||
#include "m_nmibuf.h"
|
||||
#include "dolphin/dvd.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "boot.h"
|
||||
#include "dolphin/os/OSFont.h"
|
||||
#include "bootdata.h"
|
||||
|
||||
@@ -0,0 +1,588 @@
|
||||
#include "jsyswrap_cpp.h"
|
||||
|
||||
#include "JSystem/JSystem.h"
|
||||
#include "JSystem/JUtility/JUTGamePad.h"
|
||||
#include "JSystem/JUtility/TColor.h"
|
||||
#include "libforest/emu64.h"
|
||||
#include "_mem.h"
|
||||
#include "m_lib.h"
|
||||
#include "dolphin/os/OSArena.h"
|
||||
#include "libc64/malloc.h"
|
||||
|
||||
/* These bytes are probably generated by an unused function that got stripped... thanks mwcc */
|
||||
#ifdef MUST_MATCH
|
||||
#pragma force_active on
|
||||
u8 _jsyswrap_autogen_match[0x40];
|
||||
#pragma force_active reset
|
||||
#endif
|
||||
|
||||
JUTGamePad gamePad[4];
|
||||
static void* jc_fader = nullptr;
|
||||
static void* forest_arc_aram_p = nullptr;
|
||||
static void* forest_arc_aram2_p = nullptr;
|
||||
static void* gameheap_base;
|
||||
static void* jc_gport = nullptr;
|
||||
static void* jc_sysConsole = nullptr;
|
||||
static u8 video_progressive = 0;
|
||||
static u8 video_lowreso = 0;
|
||||
static u8 video_famicom = 0;
|
||||
static u8 video_logo = 0;
|
||||
static u8 video_pan_enable = 0;
|
||||
static u16 video_pan_xorg = 0;
|
||||
static u16 video_pan_yorg = 0;
|
||||
static u16 video_pan_width = 0;
|
||||
static u16 video_pan_height = 0;
|
||||
|
||||
static u32 SystemHeapSize = 0x16C7000;
|
||||
static u32 gameheap_len = 0x380000;
|
||||
static GXRenderModeObj customized_GXNtsc240Ds = {
|
||||
VI_TVMODE_NTSC_DS,
|
||||
640,
|
||||
240,
|
||||
240,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_SF,
|
||||
FALSE,
|
||||
FALSE,
|
||||
{
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 }
|
||||
},
|
||||
{ 0, 0, 21, 22, 21, 0, 0 }
|
||||
};
|
||||
static GXRenderModeObj customized_GXNtsc240Prog = {
|
||||
VI_TVMODE_NTSC_PROG,
|
||||
640,
|
||||
240,
|
||||
480,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_SF,
|
||||
FALSE,
|
||||
FALSE,
|
||||
{
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 }
|
||||
},
|
||||
{ 0, 0, 21, 22, 21, 0, 0 }
|
||||
};
|
||||
static GXRenderModeObj customized_GXNtsc240IntDf = {
|
||||
VI_TVMODE_NTSC_INT,
|
||||
640,
|
||||
240,
|
||||
480,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_DF,
|
||||
FALSE,
|
||||
FALSE,
|
||||
{
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 }
|
||||
},
|
||||
{ 8, 8, 10, 12, 10, 8, 8 }
|
||||
};
|
||||
static GXRenderModeObj customized_GXNtsc480Ds = {
|
||||
VI_TVMODE_NTSC_DS,
|
||||
640,
|
||||
480,
|
||||
240,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_SF,
|
||||
FALSE,
|
||||
FALSE,
|
||||
{
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 }
|
||||
},
|
||||
{ 0, 0, 21, 22, 21, 0, 0 }
|
||||
};
|
||||
static GXRenderModeObj customized_GXNtsc480IntDf = {
|
||||
VI_TVMODE_NTSC_INT,
|
||||
640,
|
||||
480,
|
||||
480,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_DF,
|
||||
FALSE,
|
||||
FALSE,
|
||||
{
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 }
|
||||
},
|
||||
{ 8, 8, 10, 12, 10, 8, 8 }
|
||||
};
|
||||
static GXRenderModeObj customized_GXNtsc480Prog = {
|
||||
VI_TVMODE_NTSC_PROG,
|
||||
640,
|
||||
480,
|
||||
480,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_SF,
|
||||
FALSE,
|
||||
FALSE,
|
||||
{
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 },
|
||||
{ 6, 6 }
|
||||
},
|
||||
{ 0, 0, 21, 22, 21, 0, 0 }
|
||||
};
|
||||
|
||||
static void ReportDiskID() {
|
||||
DVDDiskID* disk_id = DVDGetCurrentDiskID();
|
||||
|
||||
/* @NOTE: taken from e+ */
|
||||
JSYSWRAPPER_PRINTF(jc_sysConsole, "DiskID %.4s %.2s %d 0x%02x(%d)\n", disk_id->gameName, disk_id->company, disk_id->diskNumber, disk_id->gameVersion);
|
||||
}
|
||||
|
||||
extern void JW_UpdateVideoMode() {
|
||||
GXRenderModeObj* renderMode;
|
||||
|
||||
if (video_famicom) {
|
||||
video_pan_xorg = 32;
|
||||
video_pan_yorg = 8;
|
||||
video_pan_width = 256;
|
||||
video_pan_height = 232;
|
||||
|
||||
if (video_lowreso != FALSE && video_progressive == FALSE) {
|
||||
renderMode = &customized_GXNtsc240Ds;
|
||||
}
|
||||
else {
|
||||
video_pan_yorg *= 2;
|
||||
video_pan_height *= 2;
|
||||
|
||||
if (video_progressive != FALSE) {
|
||||
renderMode = &customized_GXNtsc240Prog;
|
||||
}
|
||||
else {
|
||||
renderMode = &customized_GXNtsc240IntDf;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (video_logo) {
|
||||
video_pan_xorg = 0;
|
||||
video_pan_yorg = 0;
|
||||
video_pan_width = 640;
|
||||
video_pan_height = 480;
|
||||
}
|
||||
else {
|
||||
video_pan_xorg = 20;
|
||||
video_pan_yorg = 6;
|
||||
video_pan_width = 598;
|
||||
video_pan_height = 464;
|
||||
}
|
||||
|
||||
if (video_progressive) {
|
||||
renderMode = &customized_GXNtsc480Prog;
|
||||
}
|
||||
else {
|
||||
renderMode = &customized_GXNtsc480IntDf;
|
||||
}
|
||||
}
|
||||
|
||||
if (renderMode != NULL) {
|
||||
VIWaitForRetrace();
|
||||
JC_JUTVideo_setRenderMode(JC_JUTVideo_getManager(), renderMode);
|
||||
}
|
||||
|
||||
if (video_pan_enable) {
|
||||
VIConfigurePan(video_pan_xorg, video_pan_yorg, video_pan_width, video_pan_height);
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_SetProgressiveMode(int enabled) {
|
||||
if (video_progressive != enabled) {
|
||||
video_progressive = enabled;
|
||||
JW_UpdateVideoMode();
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_SetLowResoMode(int enabled) {
|
||||
if (video_lowreso != enabled) {
|
||||
video_lowreso = enabled;
|
||||
JW_UpdateVideoMode();
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_SetFamicomMode(int enabled) {
|
||||
if (video_famicom != enabled) {
|
||||
video_famicom = enabled;
|
||||
JW_UpdateVideoMode();
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_SetVideoPan(u16 origin_x, u16 origin_y, u16 width, u16 height) {
|
||||
if (video_pan_xorg != origin_x || video_pan_yorg != origin_y || video_pan_width != width || video_pan_height != height) {
|
||||
video_pan_enable = TRUE;
|
||||
video_pan_xorg = origin_x;
|
||||
video_pan_yorg = origin_y;
|
||||
video_pan_width = width;
|
||||
video_pan_height = height;
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_SetLogoMode(int enabled) {
|
||||
if (video_logo != enabled) {
|
||||
video_logo = enabled;
|
||||
JW_UpdateVideoMode();
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_JUTGamePad_read() {
|
||||
static OSTime last_pad_read;
|
||||
OSTime now = OSGetTime();
|
||||
|
||||
if (now > last_pad_read + OSMillisecondsToTicks(16) || now < last_pad_read) {
|
||||
last_pad_read = now;
|
||||
JC_JUTGamePad_read();
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_getPadStatus(PADStatus* padStatus) {
|
||||
memcpy(&padStatus[0], &JUTGamePad::mPadStatus[0], sizeof(PADStatus));
|
||||
memcpy(&padStatus[1], &JUTGamePad::mPadStatus[1], sizeof(PADStatus));
|
||||
memcpy(&padStatus[2], &JUTGamePad::mPadStatus[2], sizeof(PADStatus));
|
||||
memcpy(&padStatus[3], &JUTGamePad::mPadStatus[3], sizeof(PADStatus));
|
||||
}
|
||||
|
||||
extern int JW_JUTGamepad_getErrorStatus() {
|
||||
return (s8)gamePad[0].mErrorStatus;
|
||||
}
|
||||
|
||||
extern u32 JW_JUTGamepad_getButton() {
|
||||
return gamePad[0].mButtons.mButton;
|
||||
}
|
||||
|
||||
extern u32 JW_JUTGamepad_getTrigger() {
|
||||
return gamePad[0].mButtons.mTrigger;
|
||||
}
|
||||
|
||||
extern f32 JW_JUTGamepad_getSubStickValue() {
|
||||
return gamePad[0].mSubStick.mValue;
|
||||
}
|
||||
|
||||
extern int JW_JUTGamepad_getSubStickAngle() {
|
||||
return gamePad[0].mSubStick.mAngle;
|
||||
}
|
||||
|
||||
static bool FrameDrawing = false;
|
||||
|
||||
extern void JW_BeginFrame() {
|
||||
while (FrameCansel) {
|
||||
VIWaitForRetrace();
|
||||
}
|
||||
|
||||
FrameDrawing = true;
|
||||
void* displayManager = JC_JFWDisplay_getManager();
|
||||
JC_JFWDisplay_endFrame(displayManager);
|
||||
JC_JFWDisplay_beginRender(displayManager);
|
||||
JC_J2DOrthoGraph_setOrtho(jc_gport, 0, 0, JC_JFWDisplay_getEfbWidth(displayManager), JC_JFWDisplay_getEfbHeight(displayManager));
|
||||
JC_J2DOrthoGraph_setPort(jc_gport);
|
||||
}
|
||||
|
||||
extern void JW_EndFrame() {
|
||||
JC_JFWDisplay_endRender(JC_JFWDisplay_getManager());
|
||||
FrameDrawing = false;
|
||||
}
|
||||
|
||||
extern int JW_setClearColor(u8 r, u8 g, u8 b) {
|
||||
static GXColor clear_color;
|
||||
|
||||
if (clear_color.r != r || clear_color.g != g || clear_color.b != b) {
|
||||
void* manager = JC_JFWDisplay_getManager();
|
||||
|
||||
clear_color.r = r;
|
||||
clear_color.g = g;
|
||||
clear_color.b = b;
|
||||
|
||||
JC_JFWDisplay_setClearColor(manager, clear_color);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static const char* aram_resName[] = {
|
||||
"fgdata.bin",
|
||||
"mail_data.bin",
|
||||
"mail_data_table.bin",
|
||||
"maila_data.bin",
|
||||
"maila_data_table.bin",
|
||||
"mailb_data.bin",
|
||||
"mailb_data_table.bin",
|
||||
"mailc_data.bin",
|
||||
"mailc_data_table.bin",
|
||||
"pallet_boy.bin",
|
||||
"ps_data.bin",
|
||||
"ps_data_table.bin",
|
||||
"psz_data.bin",
|
||||
"psz_data_table.bin",
|
||||
"select_data.bin",
|
||||
"select_data_table.bin",
|
||||
"string_data.bin",
|
||||
"string_data_table.bin",
|
||||
"superz_data.bin",
|
||||
"superz_data_table.bin",
|
||||
"super_data.bin",
|
||||
"super_data_table.bin",
|
||||
"tex_boy.bin",
|
||||
"face_boy.bin",
|
||||
"fgnpcdata.bin",
|
||||
"message_data.bin",
|
||||
"message_data_table.bin",
|
||||
"my_original.bin",
|
||||
"needlework.bin",
|
||||
"player_room_floor.bin",
|
||||
"player_room_wall.bin",
|
||||
"npc_name_str_table.bin",
|
||||
"d_obj_npc_stock_sch.bin",
|
||||
"d_obj_npc_stock_scl.bin",
|
||||
"title.bti",
|
||||
"mura_spring.bti",
|
||||
"mura_summer.bti",
|
||||
"mura_fall.bti",
|
||||
"mura_winter.bti",
|
||||
"odekake.bti",
|
||||
"omake.bti",
|
||||
"eki1.bti",
|
||||
"eki1_2.bti",
|
||||
"eki1_3.bti",
|
||||
"eki1_4.bti",
|
||||
"eki1_5.bti",
|
||||
"eki2.bti",
|
||||
"eki2_2.bti",
|
||||
"eki2_3.bti",
|
||||
"eki2_4.bti",
|
||||
"eki2_5.bti",
|
||||
"eki3.bti",
|
||||
"eki3_2.bti",
|
||||
"eki3_3.bti",
|
||||
"eki3_4.bti",
|
||||
"eki3_5.bti",
|
||||
"tegami.bti",
|
||||
"tegami2.bti",
|
||||
"famikon.bti",
|
||||
"boy1.bti",
|
||||
"boy2.bti",
|
||||
"boy3.bti",
|
||||
"boy4.bti",
|
||||
"boy5.bti",
|
||||
"boy6.bti",
|
||||
"boy7.bti",
|
||||
"boy8.bti",
|
||||
"girl1.bti",
|
||||
"girl2.bti",
|
||||
"girl3.bti",
|
||||
"girl4.bti",
|
||||
"girl5.bti",
|
||||
"girl6.bti",
|
||||
"girl7.bti",
|
||||
"girl8.bti",
|
||||
"d_bg_island_sch.bin"
|
||||
};
|
||||
|
||||
extern u32 JW_GetAramAddress(int res_no) {
|
||||
int address = 0;
|
||||
|
||||
if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) {
|
||||
address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram_p, (u32)'DATA', aram_resName[res_no]);
|
||||
}
|
||||
else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) {
|
||||
address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram2_p, (u32)'DATA', aram_resName[res_no]);
|
||||
}
|
||||
|
||||
return address;
|
||||
}
|
||||
|
||||
extern u8* _JW_GetResourceAram(u32 aram_addr, u8* dst, u32 size) {
|
||||
return JKRAramToMainRam(aram_addr, dst, size, EXPAND_SWITCH_DEFAULT, 0, nullptr, -1, nullptr);
|
||||
}
|
||||
|
||||
extern u32 JW_GetResSizeFileNo(int res_no) {
|
||||
int res_size = 0;
|
||||
|
||||
if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) {
|
||||
CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram_p);
|
||||
|
||||
if (entry != nullptr) {
|
||||
res_size = entry->mSize;
|
||||
}
|
||||
}
|
||||
else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) {
|
||||
CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram2_p);
|
||||
|
||||
if (entry != nullptr) {
|
||||
res_size = entry->mSize;
|
||||
}
|
||||
}
|
||||
|
||||
return res_size;
|
||||
}
|
||||
|
||||
extern void JW_Init() {
|
||||
const u32 soundAramSize = 0x810000;
|
||||
const u32 graphAramSize = 0x6A3780;
|
||||
|
||||
void* arena_hi = OSGetArenaHi();
|
||||
void* arena_lo = OSGetArenaLo();
|
||||
|
||||
SystemHeapSize = (u32)arena_hi - (u32)arena_lo - 0xD0;
|
||||
JC_JFWSystem_setMaxStdHeap(1);
|
||||
JC_JFWSystem_setSysHeapSize(SystemHeapSize);
|
||||
JC_JFWSystem_setFifoBufSize(0x10001);
|
||||
OSReport("soundAramSize=%08x graphAramSize=%08x totalAramSize=%08x\n", soundAramSize, graphAramSize, soundAramSize + graphAramSize);
|
||||
JC_JFWSystem_setAramAudioBufSize(soundAramSize);
|
||||
JC_JFWSystem_setAramGraphBufSize(graphAramSize);
|
||||
JC_JFWSystem_init();
|
||||
JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 1);
|
||||
jc_sysConsole = JC_JFWSystem_getSystemConsole();
|
||||
JC_JUTConsole_setOutput(jc_sysConsole, 3);
|
||||
JC_JUTConsole_setPosition(jc_sysConsole, 32, 42);
|
||||
void* display_manager = JC_JFWDisplay_createManager_0(&GXNtsc480IntDf, JC_JFWSystem_getSystemHeap(), 2, 1);
|
||||
JC_JUTProcBar_setVisible(JC_JUTProcBar_getManager(), FALSE);
|
||||
JC_JUTProcBar_setVisibleHeapBar(JC_JUTProcBar_getManager(), FALSE);
|
||||
jc_gport = JC_J2DOrthoGraph_new();
|
||||
u32 color = TCOLOR_BLACK;
|
||||
jc_fader = JC_JUTFader_new(0, 0, JC_JUTVideo_getFbWidth(JC_JUTVideo_getManager()), JC_JUTVideo_getEfbHeight(JC_JUTVideo_getManager()), &color);
|
||||
JC_JFWDisplay_setFader(display_manager, jc_fader);
|
||||
JC_JFWDisplay_setClearColor(display_manager, TCOLOR_BLACK);
|
||||
JC_JFWDisplay_setGamma(display_manager, 0);
|
||||
JW_SetVideoPan(20, 6, 598, 464);
|
||||
JW_SetLogoMode(1);
|
||||
JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 2);
|
||||
}
|
||||
|
||||
extern void JW_Init2() {
|
||||
JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 3);
|
||||
ReportDiskID();
|
||||
|
||||
if (forest_arc_aram_p == nullptr) {
|
||||
forest_arc_aram_p = JC_JKRAramArchive_new();
|
||||
|
||||
if (forest_arc_aram_p == nullptr || JC__JKRMountFixedAramArchive(forest_arc_aram_p, "forest_1st.arc") == FALSE) {
|
||||
OSDVDFatalError();
|
||||
}
|
||||
}
|
||||
|
||||
gameheap_len = JC_JKRHeap_getFreeSize(JC_JFWSystem_getSystemHeap()) - 0x10000;
|
||||
gameheap_base = JC_JKRHeap_alloc(JC_JFWSystem_getSystemHeap(), gameheap_len, 32);
|
||||
MallocInit(gameheap_base, gameheap_len);
|
||||
JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 4);
|
||||
}
|
||||
|
||||
extern void JW_Init3() {
|
||||
if (forest_arc_aram2_p == nullptr) {
|
||||
forest_arc_aram2_p = JC_JKRAramArchive_new();
|
||||
|
||||
if (forest_arc_aram2_p == nullptr || JC__JKRMountFixedAramArchive(forest_arc_aram2_p, "forest_2nd.arc") == FALSE) {
|
||||
OSDVDFatalError();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern void JW_Cleanup() {
|
||||
MallocCleanup();
|
||||
JC_JKRHeap_free(JC_JFWSystem_getSystemHeap(), gameheap_base);
|
||||
gameheap_base = nullptr;
|
||||
|
||||
if (forest_arc_aram_p != nullptr) {
|
||||
JC__JKRUnmountFixedAramArchive(forest_arc_aram_p);
|
||||
JC_JKRAramArchive_delete(forest_arc_aram_p);
|
||||
forest_arc_aram_p = nullptr;
|
||||
}
|
||||
|
||||
if (forest_arc_aram2_p != nullptr) {
|
||||
JC__JKRUnmountFixedAramArchive(forest_arc_aram2_p);
|
||||
JC_JKRAramArchive_delete(forest_arc_aram2_p);
|
||||
forest_arc_aram2_p = nullptr;
|
||||
}
|
||||
|
||||
JC_JFWDisplay_destroyManager();
|
||||
|
||||
if (jc_fader != nullptr) {
|
||||
JC_JUTFader_delete(jc_fader);
|
||||
jc_fader = nullptr;
|
||||
}
|
||||
|
||||
if (jc_gport != nullptr) {
|
||||
JC_J2DOrthoGraph_delete(jc_gport);
|
||||
jc_gport = nullptr;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "libforest/fault.h"
|
||||
#include "terminal.h"
|
||||
#include "va_args.h"
|
||||
#include "libjsys/jsyswrapper.h"
|
||||
#include "jsyswrap.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
static fault* this = NULL;
|
||||
|
||||
Reference in New Issue
Block a user