summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-04-28 13:58:43 -0700
committerGitHub <noreply@github.com>2022-04-28 16:58:43 -0400
commitd91b1294bbe8bbe802bb49e0db9019ca26bbefbd (patch)
treeafa001295c4a119e68225e9d6a26fe9584dbf504 /include
parent07c5152e5acff18c08a92b3c773583ae0114c5f4 (diff)
d_name / d_s_name (#194)
* d_name * scnname
Diffstat (limited to 'include')
-rw-r--r--include/d/com/d_com_inf_game.h76
-rw-r--r--include/d/d_drawlist.h17
-rw-r--r--include/d/d_name.h143
-rw-r--r--include/d/kankyo/d_kankyo.h2
-rw-r--r--include/d/meter/d_meter2_info.h4
-rw-r--r--include/d/pane/d_pane_class.h7
-rw-r--r--include/d/s/d_s_logo.h1
-rw-r--r--include/d/s/d_s_play.h1
-rw-r--r--include/d/save/d_save.h6
-rw-r--r--include/dolphin/gd/GDBase.h1
-rw-r--r--include/dolphin/gd/GDGeometry.h3
-rw-r--r--include/dolphin/gx/GX.h11
-rw-r--r--include/f_op/f_op_camera_mng.h50
-rw-r--r--include/f_op/f_op_msg_mng.h1
-rw-r--r--include/f_op/f_op_scene.h1
-rw-r--r--include/f_op/f_op_view.h29
-rw-r--r--include/m_Do/m_Do_audio.h12
-rw-r--r--include/m_Do/m_Do_graphic.h4
-rw-r--r--include/m_Do/m_Do_machine.h2
-rw-r--r--include/m_Do/m_Do_mtx.h2
20 files changed, 343 insertions, 30 deletions
diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h
index bea6fd06c7..115a7a4bf7 100644
--- a/include/d/com/d_com_inf_game.h
+++ b/include/d/com/d_com_inf_game.h
@@ -332,6 +332,7 @@ public:
JKRArchive* getAnmArchive() { return mAnmArchive; }
JKRArchive* getCollectResArchive() { return mCollectResArchive; }
JKRArchive* getItemIconArchive() { return mItemIconArchive; }
+ JKRArchive* getNameResArchive() { return mNameResArchive; }
JKRAramArchive* getFieldMapArchive2() { return (JKRAramArchive*)mFieldMapArchive2; }
void setFieldMapArchive2(JKRArchive* arc) { mFieldMapArchive2 = arc; }
@@ -355,12 +356,14 @@ public:
void setMain2DArchive(JKRArchive* arc) { mMain2DArchive = arc; }
void setItemTable(void* data) { mItemTable = data; }
+ void setPlayer(int i, fopAc_ac_c* player) { mPlayer[i] = (daAlink_c*)player; }
void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] |= flag; }
void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] &= ~flag; }
bool checkPlayerStatus(int param_0, int i, u32 flag) { return flag & mPlayerStatus[i]; }
s8 getPlayerCameraID(int i) { return mPlayerCameraID[i]; }
void setCameraParamFileName(int i, char* name) { mCameraInfo[i].mCameraParamFileName = name; }
+ void setCamera(int i, camera_class* cam) { mCameraInfo[i].mCamera = cam; }
const char* getCameraParamFileName(int i) { return mCameraInfo[i].mCameraParamFileName; }
BOOL checkCameraAttentionStatus(int i, u32 flag) {
return mCameraInfo[i].mCameraAttentionStatus & flag;
@@ -376,6 +379,16 @@ public:
void setMesgCancelButton(u8 button) { mMesgCancelButton = button; }
int getMessageCountNumber() { return mMessageCountNum; }
+ void setWindowNum(u8 num) { mWindowNum = num; }
+ dDlst_window_c* getWindow(int i) { return &mWindow[i]; }
+ void setWindow(int i, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5,
+ f32 param_6, int camID, int mode) {
+ mWindow[i].setViewPort(param_1, param_2, param_3, param_4, param_5, param_6);
+ mWindow[i].setScissor(param_1, param_2, param_3, param_4);
+ mWindow[i].setCameraID(camID);
+ mWindow[i].setMode(mode);
+ }
+
public:
/* 0x00000 */ dBgS mBgs;
/* 0x01404 */ dCcS mCcs;
@@ -741,6 +754,7 @@ void dComIfGs_onOneZoneSwitch(int param_0, int param_1);
void dComIfGs_offZoneSwitch(int param_0, int param_1);
void dComIfGs_offOneZoneSwitch(int param_0, int param_1);
s8 dComIfGp_getReverb(int roomNo);
+void dComIfGs_gameStart();
inline void dComIfGs_onDungeonItemMap() {
g_dComIfG_gameInfo.info.getMemory().getBit().onDungeonItemMap();
@@ -1289,6 +1303,10 @@ inline void dComIfGs_initDan(s8 i_stageNo) {
g_dComIfG_gameInfo.info.initDan(i_stageNo);
}
+inline void dComIfGs_resetDan() {
+ g_dComIfG_gameInfo.info.resetDan();
+}
+
inline u16 dComIfGs_getRupeeMax() {
return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getRupeeMax();
}
@@ -1321,6 +1339,22 @@ inline u8 dComIfGs_checkBombBag(u8 i_itemNo) {
return g_dComIfG_gameInfo.info.getPlayer().getItem().checkBombBag(i_itemNo);
}
+inline s64 dComIfGs_getTotalTime() {
+ return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getTotalTime();
+}
+
+inline void dComIfGs_setSaveTotalTime(s64 time) {
+ g_dComIfG_gameInfo.info.setSaveTotalTime(time);
+}
+
+inline void dComIfGs_setSaveStartTime(s64 time) {
+ g_dComIfG_gameInfo.info.setStartTime(time);
+}
+
+inline void dComIfGs_setNoFile(u8 file) {
+ g_dComIfG_gameInfo.info.setNoFile(file);
+}
+
void dComIfGp_setItemLifeCount(f32 amount, u8 type);
void dComIfGp_setItemRupeeCount(long amount);
void dComIfGp_setSelectItem(int index);
@@ -1400,6 +1434,10 @@ inline JKRArchive* dComIfGp_getItemIconArchive() {
return g_dComIfG_gameInfo.play.getItemIconArchive();
}
+inline JKRArchive* dComIfGp_getNameResArchive() {
+ return g_dComIfG_gameInfo.play.getNameResArchive();
+}
+
inline JKRArchive* dComIfGp_getMsgDtArchive(int idx) {
return g_dComIfG_gameInfo.play.getMsgDtArchive(idx);
}
@@ -1772,6 +1810,10 @@ inline void dComIfGp_setStatus(u16 status) {
g_dComIfG_gameInfo.play.setStatus(status);
}
+inline void dComIfGp_setPlayer(int i, fopAc_ac_c* player) {
+ g_dComIfG_gameInfo.play.setPlayer(i, player);
+}
+
inline void dComIfGp_setPlayerStatus0(int param_0, u32 flag) {
g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 0, flag);
}
@@ -1908,10 +1950,28 @@ inline void dComIfGp_setCameraParamFileName(int i, char* name) {
g_dComIfG_gameInfo.play.setCameraParamFileName(i, name);
}
+inline void dComIfGp_setCamera(int i, camera_class* cam) {
+ g_dComIfG_gameInfo.play.setCamera(i, cam);
+}
+
inline const char* dComIfGp_getCameraParamFileName(int i) {
return g_dComIfG_gameInfo.play.getCameraParamFileName(i);
}
+inline void dComIfGp_setWindowNum(int num) {
+ g_dComIfG_gameInfo.play.setWindowNum(num);
+}
+
+inline dDlst_window_c* dComIfGp_getWindow(int i) {
+ return g_dComIfG_gameInfo.play.getWindow(i);
+}
+
+inline void dComIfGp_setWindow(u8 i, f32 param_1, f32 param_2, f32 param_3, f32 param_4,
+ f32 param_5, f32 param_6, int camID, int mode) {
+ g_dComIfG_gameInfo.play.setWindow(i, param_1, param_2, param_3, param_4, param_5, param_6,
+ camID, mode);
+}
+
inline s8 dComIfGp_getLayerOld() {
return g_dComIfG_gameInfo.play.getLayerOld();
}
@@ -2040,6 +2100,10 @@ inline void dComIfGp_particle_cleanup() {
g_dComIfG_gameInfo.play.getParticle()->cleanup();
}
+inline void dComIfGp_particle_removeScene(bool param_0) {
+ g_dComIfG_gameInfo.play.getParticle()->removeScene(param_0);
+}
+
inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2,
const dKy_tevstr_c* param_3, const csXyz* param_4,
const cXyz* param_5, u8 param_6, dPa_levelEcallBack* param_7,
@@ -2158,6 +2222,18 @@ inline void dComIfGd_peekZdata() {
g_dComIfG_gameInfo.drawlist.peekZdata();
}
+inline void dComIfGd_setView(view_class* view) {
+ g_dComIfG_gameInfo.drawlist.setView(view);
+}
+
+inline void dComIfGd_setWindow(dDlst_window_c* window) {
+ g_dComIfG_gameInfo.drawlist.setWindow(window);
+}
+
+inline void dComIfGd_setViewport(view_port_class* port) {
+ g_dComIfG_gameInfo.drawlist.setViewport(port);
+}
+
inline daPy_py_c* daPy_getLinkPlayerActorClass() {
return dComIfGp_getLinkPlayer();
}
diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h
index 54908ab78e..93df763497 100644
--- a/include/d/d_drawlist.h
+++ b/include/d/d_drawlist.h
@@ -191,6 +191,10 @@ public:
/* 80051AC0 */ void setViewPort(f32, f32, f32, f32, f32, f32);
/* 80051ADC */ void setScissor(f32, f32, f32, f32);
+ void setCameraID(int id) { mCameraID = id; }
+ void setMode(int mode) { mMode = mode; }
+ f32 getViewPort() { return mViewport; }
+
private:
/* 0x00 */ f32 mViewport;
/* 0x04 */ f32 field_0x04;
@@ -208,15 +212,11 @@ private:
STATIC_ASSERT(sizeof(dDlst_window_c) == 0x2C);
-struct view_port_class {};
-
-struct view_class {
- /* 0x00 */ u8 field_0x0[0xD0];
- /* 0xD0 */ f32 field_0xd0;
-};
-
extern u8 data_80450ED0; // Wipe
+struct view_port_class;
+struct view_class;
+
class dDlst_list_c {
public:
/* 800560F0 */ dDlst_list_c();
@@ -237,6 +237,9 @@ public:
void set2DOpa(dDlst_base_c* dlst) { set(field_0x1b4, field_0x1b8, dlst); }
void set2DOpaTop(dDlst_base_c* dlst) { set(field_0xac, field_0xb0, dlst); }
view_class* getView() { return mView; }
+ void setView(view_class* view) { mView = view; }
+ void setWindow(dDlst_window_c* window) { mWindow = window; }
+ void setViewport(view_port_class* port) { mViewport = port; }
J3DDrawBuffer* getOpaListFilter() { return mListFilter; }
J3DDrawBuffer* getOpaListP0() { return mListP0; }
J3DDrawBuffer* getOpaListPacket() { return mOpaListPacket; }
diff --git a/include/d/d_name.h b/include/d/d_name.h
index aa8be77dd7..b2a4101efd 100644
--- a/include/d/d_name.h
+++ b/include/d/d_name.h
@@ -1,6 +1,149 @@
#ifndef D_D_NAME_H
#define D_D_NAME_H
+#include "d/com/d_com_inf_game.h"
#include "dolphin/types.h"
+class dNm_HIO_c {
+public:
+ /* 8024E3E0 */ dNm_HIO_c();
+ /* 802511A4 */ virtual ~dNm_HIO_c();
+
+ /* 0x04 */ s8 field_0x4;
+ /* 0x08 */ f32 mMenuScale;
+ /* 0x0C */ f32 mSelCharScale;
+ /* 0x10 */ u8 field_0x10;
+};
+
+class dDlst_NameIN_c : public dDlst_base_c {
+public:
+ dDlst_NameIN_c() {}
+
+ /* 80251094 */ virtual void draw();
+ /* 8025115C */ virtual ~dDlst_NameIN_c();
+
+ /* 0x04 */ J2DScreen* NameInScr;
+ /* 0x08 */ JUTFont* font;
+ /* 0x0C */ J2DPane* field_0xc;
+ /* 0x10 */ J2DPane* field_0x10;
+};
+
+class ChrInfo_c {
+public:
+ /* 0x0 */ u8 mColumn;
+ /* 0x1 */ u8 mRow;
+ /* 0x2 */ u8 mMojiSet;
+ /* 0x3 */ u8 field_0x3;
+ /* 0x4 */ int mCharacter;
+}; // Size: 0x8
+
+class dName_c {
+public:
+ enum {
+ PROC_MOJI_SELECT,
+ PROC_MOJI_SEL_ANM,
+ PROC_MOJI_SEL_ANM2,
+ PROC_MOJI_SEL_ANM3,
+ PROC_MENU_SELECT,
+ PROC_MENU_SEL_ANM,
+ PROC_MENU_SEL_ANM2,
+ PROC_MENU_SEL_ANM3,
+ PROC_WAIT
+ };
+
+ enum {
+ MOJI_HIRA,
+ MOJI_KATA,
+ MOJI_EIGO,
+ };
+
+ enum {
+ MENU_HIRA,
+ MENU_KATA,
+ MENU_EIGO,
+ MENU_END,
+ };
+
+ /* 8024E408 */ dName_c(J2DPane*);
+ /* 8024E62C */ void _create();
+ /* 8024E6D4 */ void init();
+ /* 8024E7A4 */ void initial();
+ /* 8024E7EC */ void showIcon();
+ /* 8024E9A0 */ void _move();
+ /* 8024EC10 */ int nameCheck();
+ /* 8024EC4C */ void playNameSet(int);
+ /* 8024EC84 */ void cursorAnm();
+ /* 8024ED48 */ void Wait();
+ /* 8024ED4C */ void MojiSelect();
+ /* 8024F034 */ void MojiSelectAnmInit();
+ /* 8024F0E0 */ void MojiSelectAnm();
+ /* 8024F164 */ void MojiSelectAnm2();
+ /* 8024F1E8 */ void MojiSelectAnm3();
+ /* 8024F1EC */ int mojiChange(u8);
+ /* 8024F55C */ void selectMojiSet();
+ /* 8024F59C */ int getMoji();
+ /* 8024F634 */ void setMoji(int);
+ /* 8024F88C */ void setNameText();
+ /* 8024F914 */ void nameCursorMove();
+ /* 8024F994 */ void selectCursorMove();
+ /* 8024FAF4 */ void menuCursorPosSet();
+ /* 8024FB08 */ void MenuSelect();
+ /* 8024FDA0 */ void MenuSelectAnmInit();
+ /* 8024FDF4 */ void MenuSelectAnm();
+ /* 8024FEB4 */ void MenuSelectAnm2();
+ /* 8024FFA0 */ void MenuSelectAnm3();
+ /* 8024FFA4 */ void menuAbtnSelect();
+ /* 80250074 */ void backSpace();
+ /* 802501B0 */ void mojiListChange();
+ /* 80250284 */ void menuCursorMove();
+ /* 80250380 */ void menuCursorMove2();
+ /* 802504A0 */ void selectCursorPosSet(int);
+ /* 80250560 */ void _draw();
+ /* 802505CC */ void screenSet();
+ /* 80250CEC */ void displayInit();
+ /* 80250E54 */ void NameStrSet();
+ /* 80251048 */ s32 getMenuPosIdx(u8);
+
+ /* 8024E468 */ virtual ~dName_c();
+
+private:
+ /* 0x004 */ STControl* stick;
+ /* 0x008 */ JKRArchive* archive;
+ /* 0x00C */ dDlst_NameIN_c nameIn;
+ /* 0x020 */ dSelect_cursor_c* mSelIcon;
+ /* 0x024 */ J2DAnmColorKey* mCursorColorKey;
+ /* 0x028 */ int mCurColAnmF;
+ /* 0x02C */ J2DAnmTextureSRTKey* mCursorTexKey;
+ /* 0x030 */ int mCurTexAnmF;
+ /* 0x034 */ CPaneMgrAlpha* mNameCursor[8];
+ /* 0x054 */ char* mNameText[8];
+ /* 0x074 */ CPaneMgr* mMojiIcon[65];
+ /* 0x178 */ char* mMojiText[65];
+ /* 0x27C */ J2DPane* mMojiPane;
+ /* 0x280 */ J2DPane* mMenuPane;
+ /* 0x284 */ CPaneMgr* mMenuIcon[4];
+ /* 0x294 */ J2DTextBox* mMenuText[4];
+ /* 0x2A4 */ u8 mCursorDelay;
+ /* 0x2A5 */ u8 mCharColumn;
+ /* 0x2A6 */ u8 mPrevColumn;
+ /* 0x2A7 */ u8 mCharRow;
+ /* 0x2A8 */ u8 mPrevRow;
+ /* 0x2A9 */ u8 mMojiSet;
+ /* 0x2AA */ u8 mPrevMojiSet;
+ /* 0x2AB */ u8 mSelProc;
+ /* 0x2AC */ u8 field_0x2ac;
+ /* 0x2AD */ u8 field_0x2ad;
+ /* 0x2AE */ u8 field_0x2ae;
+ /* 0x2AF */ u8 mSelMenu;
+ /* 0x2B0 */ u8 mPrevSelMenu;
+ /* 0x2B1 */ u8 mCurPos;
+ /* 0x2B2 */ u8 mLastCurPos;
+ /* 0x2B3 */ u8 field_0x2b3;
+ /* 0x2B4 */ u8 mIsInputEnd;
+ /* 0x2B5 */ char mInputStr[23];
+ /* 0x2CC */ ChrInfo_c mChrInfo[8];
+ /* 0x30C */ u8 field_0x30c[4][4]; // ?
+ /* 0x31C */ char mNextNameStr[28];
+}; // Size: 0x338
+
#endif /* D_D_NAME_H */
diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h
index 0adb1a27c1..093709a7c2 100644
--- a/include/d/kankyo/d_kankyo.h
+++ b/include/d/kankyo/d_kankyo.h
@@ -18,6 +18,8 @@ BOOL dKy_darkworld_spot_check(char const* stageName, int roomNo);
void dKy_darkworld_Area_set(char const* stageName, int roomNo);
void dKy_FiveSenses_fullthrottle_dark();
s32 dKy_daynight_check();
+void dKy_clear_game_init();
+void dKy_setLight_init();
struct LIGHT_INFLUENCE {
/* 800CFC7C */ ~LIGHT_INFLUENCE();
diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h
index 58d9bdff40..0a052d2e5a 100644
--- a/include/d/meter/d_meter2_info.h
+++ b/include/d/meter/d_meter2_info.h
@@ -454,6 +454,10 @@ inline void dMeter2Info_setTableMapRegionNo(u8 regionNo) {
g_meter2_info.setTableMapRegionNo(regionNo);
}
+inline void dMeter2Info_changeWater(u8 bottleIdx) {
+ g_meter2_info.changeWater(bottleIdx);
+}
+
char* dMeter2Info_getNumberTextureName(int pIndex);
void dMeter2Info_recieveLetter();
u8 dMeter2Info_getNewLetterNum();
diff --git a/include/d/pane/d_pane_class.h b/include/d/pane/d_pane_class.h
index f77aafc09b..9b948d2588 100644
--- a/include/d/pane/d_pane_class.h
+++ b/include/d/pane/d_pane_class.h
@@ -28,12 +28,17 @@ public:
/* 802548BC */ void colorAnime(s16, JUtility::TColor, JUtility::TColor, JUtility::TColor,
JUtility::TColor, u8);
/* 80254C90 */ void getGlobalVtx(J2DPane*, f32 (*)[3][4], u8, bool, s16);
- /* 80254EBC */ void getGlobalVtxCenter(J2DPane*, bool, s16);
+ /* 80254EBC */ Vec getGlobalVtxCenter(J2DPane*, bool, s16);
/* 80254FB8 */ void getBounds(J2DPane*);
+ Vec getGlobalVtxCenter(bool param_0, s16 param_1) {
+ return getGlobalVtxCenter(getPanePtr(), param_0, param_1);
+ }
+
void translate(f32 x, f32 y) { getPanePtr()->translate(x, y); }
void scale(f32 h, f32 v) { getPanePtr()->scale(h, v); }
+ void scaleAnimeStart(s16 v) { mScaleAnime = v; }
f32 getPosX() { return getPanePtr()->getBounds().i.x; }
f32 getPosY() { return getPanePtr()->getBounds().i.y; }
diff --git a/include/d/s/d_s_logo.h b/include/d/s/d_s_logo.h
index 6c8d2e1b91..086b209115 100644
--- a/include/d/s/d_s_logo.h
+++ b/include/d/s/d_s_logo.h
@@ -62,6 +62,7 @@ public:
/* 8025854C */ void setRenderMode();
public:
+ /* 0x1CC */ mDoDvdThd_toMainRam_c* sceneCommand;
/* 0x1D0 */ JKRExpHeap* field_0x1d0;
/* 0x1D4 */ JKRExpHeap* field_0x1d4;
/* 0x1D8 */ JKRHeap* mpHeap;
diff --git a/include/d/s/d_s_play.h b/include/d/s/d_s_play.h
index fb812dbf8d..e75bc46f51 100644
--- a/include/d/s/d_s_play.h
+++ b/include/d/s/d_s_play.h
@@ -69,6 +69,7 @@ public:
static bool isPause() { return struct_80451124 == 0; }
static void setPauseTimer(s8 time) { data_80451125 = time; }
+ /* 0x1CC */ mDoDvdThd_toMainRam_c* sceneCommand;
/* 0x1D0 */ mDoDvdThd_mountXArchive_c* field_0x1d0;
/* 0x1D4 */ u8 field_0x1d4;
};
diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h
index ea631aa5ef..7cccd00ae6 100644
--- a/include/d/save/d_save.h
+++ b/include/d/save/d_save.h
@@ -888,6 +888,8 @@ public:
void onItem(int i_no);
BOOL isItem(int i_no) const;
+ void reset() { mStageNo = -1; }
+
private:
/* 0x00 */ s8 mStageNo;
/* 0x01 */ u8 unk1;
@@ -1074,9 +1076,13 @@ public:
dSv_danBit_c& getDan() { return mDan; }
s64 getStartTime() const { return mStartTime; }
s64 getSaveTotalTime() const { return mSaveTotalTime; }
+ void setStartTime(s64 time) { mStartTime = time; }
+ void setSaveTotalTime(s64 time) { mSaveTotalTime = time; }
void initDan(s8 i_stage) { mDan.init(i_stage); }
+ void resetDan() { mDan.reset(); }
u8 getDataNum() const { return mDataNum; }
void removeZone(int zoneNo) { mZone[zoneNo].reset(); }
+ void setNoFile(u8 file) { mNoFile = file; }
static const int MEMORY_SWITCH = 0x80;
static const int DAN_SWITCH = 0x40;
diff --git a/include/dolphin/gd/GDBase.h b/include/dolphin/gd/GDBase.h
index 121f2f6ce9..31f61bf11a 100644
--- a/include/dolphin/gd/GDBase.h
+++ b/include/dolphin/gd/GDBase.h
@@ -25,7 +25,6 @@ extern "C" {
void GDInitGDLObj(GDLObj*, u8*, u32);
void GDFlushCurrToMem();
void GDPadCurr32();
-
}
#endif /* GDBASE_H */
diff --git a/include/dolphin/gd/GDGeometry.h b/include/dolphin/gd/GDGeometry.h
index e3f59751a2..2d09d0f246 100644
--- a/include/dolphin/gd/GDGeometry.h
+++ b/include/dolphin/gd/GDGeometry.h
@@ -1,15 +1,14 @@
#ifndef GDGEOMETRY_H
#define GDGEOMETRY_H
-#include "dolphin/types.h"
#include "dolphin/gx/GX.h"
+#include "dolphin/types.h"
extern "C" {
void GDSetVtxDescv(GXVtxDescList*);
void GDSetArray(GXAttr attr, const void* data, u8 stride);
void GDSetArrayRaw(GXAttr attr, u32 data, u8 stride);
-
}
#endif /* GDGEOMETRY_H */
diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h
index 1951f2bd43..19091b9b21 100644
--- a/include/dolphin/gx/GX.h
+++ b/include/dolphin/gx/GX.h
@@ -83,7 +83,7 @@ typedef struct _GXFifoObj {
typedef struct _GXTexRegion {
/* 0x00 */ u8 dummy[0x10];
-} GXTexRegion; // Size: 0x10
+} GXTexRegion; // Size: 0x10
typedef enum _GXPrimitive {
/* 0x80 */ GX_QUADS = 0x80,
@@ -821,14 +821,14 @@ typedef enum _GXPTTexMtx {
typedef struct _GXVtxDescList {
/* 0x0 */ GXAttr attr;
/* 0x4 */ GXAttrType type;
-} GXVtxDescList; // Size: 0x08
+} GXVtxDescList; // Size: 0x08
typedef struct _GXVtxAttrFmtList {
/* 0x00 */ GXAttr mAttrib;
/* 0x04 */ GXCompCnt mCompCnt;
/* 0x08 */ GXCompType mCompType;
/* 0x0C */ u8 mCompShift;
-} GXVtxAttrFmtList; // Size: 0x10
+} GXVtxAttrFmtList; // Size: 0x10
typedef enum _GXFBClamp {
/* 0x0 */ GX_CLAMP_NONE,
@@ -854,8 +854,7 @@ typedef enum _GXZFmt16 {
/* 0x3 */ GX_ZC_FAR,
} GXZFmt16;
-typedef enum _GXCommand
-{
+typedef enum _GXCommand {
GX_CMD_LOAD_INDX_A = 0x20,
GX_CMD_LOAD_INDX_B = 0x28,
GX_CMD_LOAD_INDX_C = 0x30,
@@ -978,7 +977,7 @@ void GXInitFifoBase(GXFifoObj*, void*, u32);
void GXInitFifoPtrs(GXFifoObj*, void*, void*);
void GXSaveCPUFifo(GXFifoObj*);
void GXSetMisc(u32 opt, u32 val);
-void GXInitTexCacheRegion(GXTexRegion *region, GXBool, u32, GXTexCacheSize, u32, GXTexCacheSize);
+void GXInitTexCacheRegion(GXTexRegion* region, GXBool, u32, GXTexCacheSize, u32, GXTexCacheSize);
#define GFX_FIFO(T) (*(volatile T*)0xCC008000)
diff --git a/include/f_op/f_op_camera_mng.h b/include/f_op/f_op_camera_mng.h
index 0822e21425..4e488b58c3 100644
--- a/include/f_op/f_op_camera_mng.h
+++ b/include/f_op/f_op_camera_mng.h
@@ -1,23 +1,59 @@
#ifndef F_F_OP_CAMERA_MNG_H_
#define F_F_OP_CAMERA_MNG_H_
+#include "SSystem/SComponent/c_phase.h"
+#include "SSystem/SComponent/c_sxyz.h"
#include "SSystem/SComponent/c_xyz.h"
#include "dolphin/types.h"
#include "f_op/f_op_draw_tag.h"
+#include "f_op/f_op_view.h"
#include "f_pc/f_pc_leaf.h"
-class camera_class {
+class camera_class : public view_class {
public:
- /* 0x000 */ u8 field_0x00[0xB0];
- /* 0x0B0 */ u32 parameter;
- /* 0x0B4 */ u8 field_0xB4[0x24];
- /* 0x0D8 */ cXyz field_0xd8;
- /* 0x0E4 */ cXyz field_0xe4;
- /* 0x0F0 */ u8 field_0xf0[0x120];
+ /* 0x170 */ Mtx field_0x170;
+ /* 0x1A0 */ Mtx field_0x1a0;
+ /* 0x1D0 */ u8 field_0x1d0[0x10];
+ /* 0x1E0 */ Mtx field_0x1e0;
/* 0x210 */ create_tag_class pCreateTag;
/* 0x224 */ leafdraw_method_class* pMthd;
+ /* 0x228 */ u8 field_0x228[4];
+ /* 0x22C */ s8 mPrm1;
+ /* 0x22D */ s8 mPrm2;
+ /* 0x22E */ s8 mPrm3;
+ /* 0x22F */ u8 field_0x22f;
+ /* 0x230 */ csXyz mAngle;
+ /* 0x238 */ int field_0x238;
};
+/* void fopCamM_SetNear(camera_class* cam, f32 near) {
+ cam->mNear = near;
+}
+
+void fopCamM_SetFar(camera_class* cam, f32 far) {
+ cam->mFar = far;
+}
+
+void fopCamM_SetFovy(camera_class* cam, f32 fovy) {
+ cam->mFovy = fovy;
+}
+
+void fopCamM_SetAspect(camera_class* cam, f32 aspect) {
+ cam->mAspect = aspect;
+}
+
+void fopCamM_SetEye(camera_class* cam, f32 x, f32 y, f32 z) {
+ cam->field_0xd8.mEye.set(x, y, z);
+}
+
+void fopCamM_SetCenter(camera_class* cam, f32 x, f32 y, f32 z) {
+ cam->field_0xd8.mCenter.set(x, y, z);
+}
+
+void fopCamM_SetBank(camera_class* cam, s16 bank) {
+ cam->mBank = bank;
+} */
+
u32 fopCamM_Create(int i_cameraIdx, s16 pProcName, void* param_3);
void fopCamM_Management(void);
u32 fopCamM_GetParam(camera_class* pCamera);
diff --git a/include/f_op/f_op_msg_mng.h b/include/f_op/f_op_msg_mng.h
index d78edf381b..85c00e2f5b 100644
--- a/include/f_op/f_op_msg_mng.h
+++ b/include/f_op/f_op_msg_mng.h
@@ -38,5 +38,6 @@ void fopMsgM_destroyExpHeap(JKRExpHeap*);
s32 fopMsgM_setStageLayer(void*);
void fopMsgM_messageSetDemo(u32 param_0);
msg_class* fopMsgM_SearchByID(unsigned int param_0);
+char* fopMsgM_messageGet(char* msg, u32 string_id);
#endif \ No newline at end of file
diff --git a/include/f_op/f_op_scene.h b/include/f_op/f_op_scene.h
index 9efba5f2c1..16bda2d579 100644
--- a/include/f_op/f_op_scene.h
+++ b/include/f_op/f_op_scene.h
@@ -21,7 +21,6 @@ public:
/* 0x1B0 */ scene_tag_class* field_0x1b0;
/* 0x1B4 */ u8 field_0x1b4[0x10];
/* 0x1C4 */ request_of_phase_process_class field_0x1c4;
- /* 0x1CC */ mDoDvdThd_toMainRam_c* sceneCommand;
};
#endif \ No newline at end of file
diff --git a/include/f_op/f_op_view.h b/include/f_op/f_op_view.h
index 5ab7d8c7ee..4efd9ee670 100644
--- a/include/f_op/f_op_view.h
+++ b/include/f_op/f_op_view.h
@@ -1,15 +1,34 @@
#ifndef F_F_OP_VIEW_H_
#define F_F_OP_VIEW_H_
+#include "SSystem/SComponent/c_xyz.h"
+#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
#include "f_pc/f_pc_leaf.h"
-class view_class {
+class lookat_class {
public:
- /* 0x00 */ u8 field_0x00[0x10];
- /* 0x10 */ leafdraw_class* pLeafdraw;
- /* 0x14 */ u8 field_0x14[0xac];
- /* 0xC0 */ process_method_class* pmProcessMtd;
+ /* 0x00 */ cXyz mEye;
+ /* 0x0C */ cXyz mCenter;
+ /* 0x18 */ cXyz mUp;
+};
+
+struct view_port_class {
+ f32 field_0x0;
+};
+
+struct view_class : public leafdraw_class {
+ /* 0x0C0 */ leafdraw_method_class* mpLeafdrawMtd;
+ /* 0x0C4 */ u8 field_0xc4[4];
+ /* 0x0C8 */ f32 mNear;
+ /* 0x0CC */ f32 mFar;
+ /* 0x0D0 */ f32 mFovy;
+ /* 0x0D4 */ f32 mAspect;
+ /* 0x0D8 */ lookat_class field_0xd8;
+ /* 0x0FC */ s16 mBank;
+ /* 0x100 */ Mtx field_0x100;
+ /* 0x130 */ u8 field_0x130[0x10];
+ /* 0x140 */ Mtx field_0x140;
};
#endif \ No newline at end of file
diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h
index c5ee806886..c589030a83 100644
--- a/include/m_Do/m_Do_audio.h
+++ b/include/m_Do/m_Do_audio.h
@@ -44,6 +44,18 @@ inline void mDoAud_bgmSetSwordUsing(s32 id) {
Z2AudioMgr::getInterface()->mSeqMgr.bgmSetSwordUsing(id);
}
+inline void mDoAud_bgmStart(u32 id) {
+ Z2AudioMgr::getInterface()->mSeqMgr.bgmStart(id, 0, 0);
+}
+
+inline void mDoAud_bgmStreamPrepare(u32 param_0) {
+ Z2AudioMgr::getInterface()->mSeqMgr.bgmStreamPrepare(param_0);
+}
+
+inline void mDoAud_bgmStreamPlay() {
+ Z2AudioMgr::getInterface()->mSeqMgr.bgmStreamPlay();
+}
+
inline void mDoAud_setHour(s32 hour) {
Z2AudioMgr::getInterface()->mStatusMgr.setHour(hour);
}
diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h
index dee9991aa0..57222b1de9 100644
--- a/include/m_Do/m_Do_graphic.h
+++ b/include/m_Do/m_Do_graphic.h
@@ -10,6 +10,7 @@ int mDoGph_Create();
extern u8 struct_80450BE4; // Blure
extern u8 data_80450BE6; // Fade
+extern bool data_80450BE7; // AutoForcus
struct ResTIMG;
class mDoGph_gInf_c {
@@ -47,8 +48,11 @@ public:
static void endFrame() { JFWDisplay::getManager()->endFrame(); }
static void offFade() { data_80450BE6 = 0; }
static void offBlure() { struct_80450BE4 = 0; }
+ static void offAutoForcus() { data_80450BE7 = 0; }
static void setTickRate(u32 rate) { JFWDisplay::getManager()->setTickRate(rate); }
static void waitBlanking(int wait) { JFWDisplay::getManager()->waitBlanking(wait); }
+ static f32 getWidthF() { return 608.0f; }
+ static f32 getHeightF() { return 448.0f; }
static GXTexObj mFrameBufferTexObj;
static GXTexObj mZbufferTexObj;
diff --git a/include/m_Do/m_Do_machine.h b/include/m_Do/m_Do_machine.h
index 5871f47a9c..8ea5888795 100644
--- a/include/m_Do/m_Do_machine.h
+++ b/include/m_Do/m_Do_machine.h
@@ -21,6 +21,8 @@ class mDoMch_render_c {
public:
static void setRenderModeObj(GXRenderModeObj* obj) { mRenderModeObj = obj; }
static void setProgressiveMode() { setRenderModeObj(&g_ntscZeldaProg); }
+ static u16 getEfbHeight() { return mRenderModeObj->efb_height; }
+ static u16 getFbWidth() { return mRenderModeObj->fb_width; }
static GXRenderModeObj* getRenderModeObj() { return mRenderModeObj; }
diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h
index df5699d1f5..1a238d69b3 100644
--- a/include/m_Do/m_Do_mtx.h
+++ b/include/m_Do/m_Do_mtx.h
@@ -16,6 +16,8 @@ void mDoMtx_YrotS(Mtx, s16);
void mDoMtx_XrotS(Mtx, s16);
void mDoMtx_YrotM(Mtx, s16);
void mDoMtx_MtxToRot(CMtxP, csXyz*);
+void mDoMtx_lookAt(f32 (*param_0)[4], Vec const* param_1, Vec const* param_2, s16 param_3);
+void mDoMtx_concatProjView(f32 const (*param_0)[4], f32 const (*param_1)[4], f32 (*param_2)[4]);
class mDoMtx_stack_c {
public: