Merge remote-tracking branch 'origin/main' into presets

# Conflicts:
#	files.cmake
#	src/d/actor/d_a_title.cpp
#	src/dusk/config.cpp
#	src/dusk/imgui/ImGuiConsole.cpp
#	src/dusk/imgui/ImGuiEngine.cpp
This commit is contained in:
MelonSpeedruns
2026-04-11 16:53:04 -04:00
15380 changed files with 4960 additions and 1354842 deletions
+6
View File
@@ -71,10 +71,16 @@ private:
/* 0xA30 */ dCcD_Sph mSphere2;
/* 0xB68 */ dCcD_Sph mAtSph;
/* 0xCA0 */ dCcU_AtInfo mAtInfo;
#if AVOID_UB
/* 0xCC4 */ u32 mKeys[8];
/* 0xCE4 */ u8 mHIOInit;
/* 0xCE5 */ u8 field_0xce5[0xCE8 - 0xCE5];
#else
// !@bug Seems that the orig developers didn't size mKeys correctly, as ideally it should be len=8, not len=7:
/* 0xCC4 */ u32 mKeys[7];
/* 0xCE0 */ u8 mHIOInit;
/* 0xCE1 */ u8 field_0xce1[0xCE8 - 0xCE1];
#endif
};
STATIC_ASSERT(sizeof(daE_FB_c) == 0xce8);
+1 -2
View File
@@ -39,8 +39,7 @@ public:
/* 0x680 */ s16 mPlayerAngleY;
/* 0x684 */ f32 mPlayerDistanceLimit;
/* 0x688 */ u8 field24_0x688[2];
/* 0x68A */ s16 mActionTimer[3];
/* 0x690 */ s16 mExecuteState;
/* 0x68A */ s16 mActionTimer[4];
/* 0x692 */ s16 mInvincibilityTimer;
/* 0x694 */ s8 mAttentionOFF;
/* 0x695 */ s8 mTKBallSpawned;
+1 -2
View File
@@ -159,8 +159,7 @@ private:
/* 0x00958 */ mDoExt_3DlineMat1_c mRope;
/* 0x00994 */ cXyz field_0x994[100];
/* 0x00E44 */ csXyz field_0xe44[100];
/* 0x0109C */ u8 mRopeCutStatus[10];
/* 0x010A6 */ u8 field_0x10A6[0x01100 - 0x010A6];
/* 0x0109C */ u8 mRopeCutStatus[100];
/* 0x01100 */ u8 mDrawRopes;
/* 0x01101 */ u8 field_0x1101[0x01104 - 0x01101];
/* 0x01104 */ f32 field_0x1104[10];
+6 -7
View File
@@ -128,10 +128,10 @@ public:
/* 0x0760 */ f32 field_0x760;
/* 0x0764 */ cXyz field_0x764;
/* 0x0770 */ mg_line_s mg_line; // below to mg_hook_s part of mg_line_s?
/* 0x0C20 */ f32 field_0xc20[98];
/* 0x0DA8 */ u8 field_0xDA8[0x0DB0 - 0x0DA8];
/* 0x0DB0 */ f32 field_0xdb0[98];
/* 0x0F38 */ u8 field_0xF38[0x0F40 - 0x0F38];
/* 0x0C20 */ f32 field_0xc20[99];
/* 0x0DA8 */ u8 field_0xDAC[0x0DB0 - 0x0DAC];
/* 0x0DB0 */ f32 field_0xdb0[99];
/* 0x0F3C */ u8 field_0xF38[0x0F40 - 0x0F3C];
/* 0x0F40 */ mDoExt_3DlineMat0_c linemat;
/* 0x0F5C */ f32 field_0xf5c;
/* 0x0F60 */ f32 field_0xf60;
@@ -183,9 +183,8 @@ public:
/* 0x102F */ u8 field_0x102f;
/* 0x1030 */ J3DModel* esa_model[2];
/* 0x1038 */ u8 field_0x1038[0x103C - 0x1038];
/* 0x103C */ s16 field_0x103c[8];
/* 0x104C */ u8 field_0x104C[0x104E - 0x104C];
/* 0x104E */ s16 field_0x104e[8];
/* 0x103C */ s16 field_0x103c[9];
/* 0x104E */ s16 field_0x104e[9];
/* 0x1060 */ cXyz hook_pos;
/* 0x106C */ cXyz field_0x106c;
/* 0x1078 */ cXyz field_0x1078;
+1 -4
View File
@@ -25,10 +25,7 @@ public:
/* 0x1C */ f32 max_speed; // 最大速度 - Maximum Speed
/* 0x20 */ f32 spring_constant; // バネ係数 - Spring Constant
/* 0x24 */ f32 damp_coeff[1]; // 減衰係数 - Damp Coefficient
/* 0x28 */ f32 field_0x28[1];
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x28 */ f32 field_0x28[4];
/* 0x38 */ f32 vert_swing_width; // 縦揺れ幅 - Vertical Swing Width
/* 0x3C */ f32 shake_dist; // 揺れ距離 - Shake Distance
/* 0x40 */ f32 jump_dist; // 跳ね距離 - Jump Distance
+1 -2
View File
@@ -32,8 +32,7 @@ public:
/* 0x620 */ s16 field_0x620;
/* 0x624 */ mDoExt_McaMorf* mpMorf;
/* 0x628 */ mDoExt_btkAnm* mpBtkAnms[3];
/* 0x634 */ mDoExt_btpAnm* mpBtpAnms[3];
/* 0x640 */ u8 field_0x640[0x654 - 0x640];
/* 0x634 */ mDoExt_btpAnm* mpBtpAnms[8];
/* 0x654 */ s32 field_0x654;
/* 0x658 */ s32 field_0x658;
/* 0x65C */ s32 mAnmResIndex;
+1 -2
View File
@@ -24,8 +24,7 @@ struct lf_s {
/* 0x44 */ f32 field_0x44;
/* 0x48 */ f32 field_0x48;
/* 0x4C */ s16 field_0x4c[2];
/* 0x50 */ s16 field_0x50[2];
/* 0x54 */ u8 field_0x54[4];
/* 0x50 */ s16 field_0x50[4];
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ f32 field_0x60;
+1 -3
View File
@@ -28,11 +28,9 @@ public:
/* 0x580 */ s16 field_0x580[2];
/* 0x584*/ dCcD_Stts mStts;
/* 0x5c0 */ dCcD_Sph mSph;
/* 0x6f8 */ u32 field_0x6f8[4];
/* 0x6fc */ u8 field_0x6fc[0x70c - 0x708]; // Undefined
/* 0x6f8 */ u32 field_0x6f8[5];
/* 0x70c */ LIGHT_INFLUENCE mLightObj;
/* 0x72c */ u8 field_0x72c;
/* 0x72d */ u8 field_0x72d[0x730 - 0x72d]; //Undefined
};
STATIC_ASSERT(sizeof(obj_maki_class) == 0x730);
+1 -2
View File
@@ -55,8 +55,7 @@ private:
/* 0x710 */ bool mIsHitByBoomerang;
/* 0x711 */ u8 mAction;
/* 0x712 */ u8 field_0x712;
/* 0x714 */ s16 field_0x714[2];
/* 0x718 */ s16 field_0x718;
/* 0x714 */ s16 field_0x714[3];
/* 0x71C */ f32 field_0x71c;
/* 0x720 */ f32 field_0x720;
/* 0x724 */ s16 field_0x724;
+57 -1
View File
@@ -17,6 +17,8 @@
#include "m_Do/m_Do_graphic.h"
#include <cstring>
#include "tracy/Tracy.hpp"
enum dComIfG_ButtonStatus {
/* 0x00 */ BUTTON_STATUS_NONE,
/* 0x01 */ BUTTON_STATUS_LET_GO,
@@ -3109,114 +3111,133 @@ inline void dComIfGp_particle_calcMenu() {
}
inline void dComIfGp_particle_draw(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawNormal(i_drawInfo);
}
}
inline void dComIfGp_particle_drawFog(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawNormalFog(i_drawInfo);
}
}
inline void dComIfGp_particle_drawP1(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawNormalP1(i_drawInfo);
}
}
inline void dComIfGp_particle_drawProjection(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawProjection(i_drawInfo);
}
}
inline void dComIfGp_particle_drawNormalPri0_A(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawNormalPri0_A(i_drawInfo);
}
}
inline void dComIfGp_particle_drawNormalPri0_B(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawNormalPri0_B(i_drawInfo);
}
}
inline void dComIfGp_particle_drawFogPri0_A(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawFogPri0_A(i_drawInfo);
}
}
inline void dComIfGp_particle_drawFogPri0_B(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawFogPri0_B(i_drawInfo);
}
}
inline void dComIfGp_particle_drawFogPri1(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawFogPri1(i_drawInfo);
}
}
inline void dComIfGp_particle_drawFogPri2(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawFogPri2(i_drawInfo);
}
}
inline void dComIfGp_particle_drawFogPri3(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawFogPri3(i_drawInfo);
}
}
inline void dComIfGp_particle_drawFogPri4(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawFogPri4(i_drawInfo);
}
}
inline void dComIfGp_particle_drawDarkworld(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawDarkworld(i_drawInfo);
}
}
inline void dComIfGp_particle_drawScreen(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->drawFogScreen(i_drawInfo);
}
}
inline void dComIfGp_particle_draw2Dgame(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->draw2Dgame(i_drawInfo);
}
}
inline void dComIfGp_particle_draw2Dfore(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->draw2Dfore(i_drawInfo);
}
}
inline void dComIfGp_particle_draw2Dback(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->draw2Dback(i_drawInfo);
}
}
inline void dComIfGp_particle_draw2DmenuFore(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->draw2DmenuFore(i_drawInfo);
}
}
inline void dComIfGp_particle_draw2DmenuBack(JPADrawInfo* i_drawInfo) {
ZoneScoped;
if (g_dComIfG_gameInfo.play.getParticle() != NULL) {
g_dComIfG_gameInfo.play.getParticle()->draw2DmenuBack(i_drawInfo);
}
@@ -4736,114 +4757,149 @@ inline void dComIfGd_setViewport(view_port_class* port) {
}
inline void dComIfGd_entryZSortListZxlu(J3DPacket* i_packet, cXyz& param_1) {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.entryZSortListZxlu(i_packet, param_1);
}
inline void dComIfGd_entryZSortXluList(J3DPacket* i_packet, cXyz& param_1) {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.entryZSortXluList(i_packet, param_1);
}
inline void dComIfGd_drawCopy2D() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawCopy2D();
}
inline void dComIfGd_drawOpaListSky() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListSky();
}
inline void dComIfGd_drawXluListSky() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluListSky();
}
inline void dComIfGd_drawOpaListBG() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListBG();
}
inline void dComIfGd_drawOpaListDarkBG() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListDarkBG();
}
inline void dComIfGd_drawOpaListMiddle() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListMiddle();
}
inline void dComIfGd_drawOpaList() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaList();
}
inline void dComIfGd_drawOpaListDark() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListDark();
}
inline void dComIfGd_drawOpaListPacket() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListPacket();
}
inline void dComIfGd_drawXluListBG() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluListBG();
}
inline void dComIfGd_drawXluListDarkBG() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluListDarkBG();
}
inline void dComIfGd_drawXluList() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluList();
}
inline void dComIfGd_drawXluListDark() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluListDark();
}
inline void dComIfGd_drawXluListInvisible() {
g_dComIfG_gameInfo.drawlist.drawXluListInvisible();
ZoneScoped;
#ifdef TARGET_PC
// FIXME: Water rendering hack for frame interpolation
if (!dusk::getSettings().game.enableFrameInterpolation) {
#endif
g_dComIfG_gameInfo.drawlist.drawXluListInvisible();
#ifdef TARGET_PC
}
#endif
}
inline void dComIfGd_drawOpaListInvisible() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListInvisible();
}
inline void dComIfGd_drawXluListZxlu() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluListZxlu();
}
inline void dComIfGd_drawXluList2DScreen() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluList2DScreen();
}
inline void dComIfGd_drawOpaList3Dlast() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaList3Dlast();
}
inline void dComIfGd_draw2DOpa() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.draw2DOpa();
}
inline void dComIfGd_draw2DOpaTop() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.draw2DOpaTop();
}
inline void dComIfGd_draw2DXlu() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.draw2DXlu();
}
inline void dComIfGd_drawOpaListFilter() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListFilter();
}
inline void dComIfGd_drawIndScreen() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawOpaListP0();
}
inline void dComIfGd_drawListZxlu() {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawXluListZxlu();
}
inline void dComIfGd_drawShadow(Mtx param_0) {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.drawShadow(param_0);
}
inline void dComIfGd_imageDrawShadow(Mtx param_0) {
ZoneScoped;
g_dComIfG_gameInfo.drawlist.imageDrawShadow(param_0);
}
+3 -8
View File
@@ -104,12 +104,8 @@ public:
/* 0x18 */ f32 mWindowPosX;
/* 0x1C */ f32 mWindowPosY;
/* 0x20 */ f32 mWindowScale;
/* 0x24 */ f32 mOptionTypeBGPosX[4];
/* 0x34 */ f32 mTVsettingPosX;
/* 0x38 */ f32 mPointerCalibrationPosX;
/* 0x3C */ f32 mOptionTypeBGPosY[4];
/* 0x4C */ f32 mTVsettingPosY;
/* 0x50 */ f32 mPointerCalibrationPosY;
/* 0x24 */ f32 mOptionTypeBGPosX[6];
/* 0x3C */ f32 mOptionTypeBGPosY[6];
/* 0x54 */ f32 mBarScale[2]; // 0: mSelectBarScale | 1: mUnselectBarScale
/* 0x5C */ f32 mBackgroundPosY;
/* 0x60 */ f32 mArrowOffsetX;
@@ -547,8 +543,7 @@ public:
/* 0x1C */ f32 mVesselTalkPosY;
/* 0x20 */ f32 mVesselPosX_4x3;
/* 0x24 */ f32 mVesselPosY_4x3;
/* 0x28 */ f32 mVesselAlpha[3];
/* 0x34 */ f32 mDropAlpha;
/* 0x28 */ f32 mVesselAlpha[4];
/* 0x38 */ JUtility::TColor mDropOnColorWhite;
/* 0x3C */ JUtility::TColor mDropOnColorBlack;
/* 0x40 */ JUtility::TColor mDropOffColorWhite;
-7
View File
@@ -111,13 +111,6 @@ void Save();
*/
ConfigVarBase* GetConfigVar(std::string_view name);
/**
* \brief Returns true if no config file was found on the last LoadFromUserPreferences() call.
*
* For detect first run to prompt the user to choose a preset.
*/
bool IsConfigFileMissing();
template <ConfigValue T>
const ConfigImplBase* GetConfigImpl() {
static ConfigImpl<T> config;
+1 -1
View File
@@ -165,7 +165,7 @@ public:
* @param arg Arguments to forward to construct the default value.
*/
template <typename... Args>
explicit ConfigVar(const char* name, Args&&... arg)
ConfigVar(const char* name, Args&&... arg)
: ConfigVarBase(name, GetConfigImpl<T>()), defaultValue(std::forward<Args>(arg)...),
value(), overrideValue() {}
+34
View File
@@ -0,0 +1,34 @@
#ifndef DUSK_FRAME_INTERP_H
#define DUSK_FRAME_INTERP_H
#include <dolphin/mtx.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
namespace dusk {
namespace frame_interp {
void ensure_initialized();
void begin_record();
void end_record();
void interpolate(float step);
void notify_sim_tick_complete();
uint32_t begin_presentation_ui_pass();
uint32_t get_presentation_ui_advance_ticks();
void end_presentation_ui_pass();
void open_child(const void* key, int32_t id);
void close_child();
void record_final_mtx_raw(const Mtx* dest, const Mtx src);
bool lookup_replacement(const void* source, Mtx out);
bool lookup_concat_replacement(const void* lhs, const void* rhs, Mtx out);
} // namespace frame_interp
} // namespace dusk
#endif
#endif
+3
View File
@@ -5,6 +5,7 @@
#include <dolphin/gx/GXAurora.h>
#include <dolphin/gx/GXExtra.h>
#include "tracy/Tracy.hpp"
#define GX_DEBUG_GROUP(name, ...) \
do { \
@@ -51,4 +52,6 @@ struct GXScopedDebugGroup {
}
};
#define GX_AND_TRACY_SCOPED(name) GXScopedDebugGroup scope(name); ZoneScopedN(name);
#endif // DUSK_GX_HELPER_H
+2
View File
@@ -2,7 +2,9 @@
#define DUSK_MAIN_H
namespace dusk {
extern bool IsRunning;
extern bool IsShuttingDown;
extern bool IsGameLaunched;
}
#endif // DUSK_MAIN_H
+9
View File
@@ -53,6 +53,7 @@ struct UserSettings {
// Graphics
ConfigVar<bool> enableBloom;
ConfigVar<bool> useWaterProjectionOffset;
ConfigVar<bool> enableFrameInterpolation;
// Audio
ConfigVar<bool> noLowHpSound;
@@ -70,6 +71,14 @@ struct UserSettings {
// Controls
ConfigVar<bool> enableTurboKeybind;
} game;
struct {
ConfigVar<std::string> isoPath;
ConfigVar<std::string> graphicsBackend;
ConfigVar<bool> skipPreLaunchUI;
ConfigVar<bool> showPipelineCompilation;
ConfigVar<bool> wasPresetChosen;
} backend;
};
UserSettings& getSettings();
+6 -1
View File
@@ -14,6 +14,7 @@
#endif
#include <Windows.h>
#include <shellapi.h>
#include <intrin.h>
#endif
#include "dusk/logging.h"
@@ -92,7 +93,11 @@ private:
}
do {
QueryPerformanceCounter(&current);
_mm_pause(); // Yield CPU
#if defined(_M_ARM64) || defined(_M_ARM)
__yield();
#else
_mm_pause();
#endif
} while (current.QuadPart - start.QuadPart < ticksToWait);
}
#else
+12 -4
View File
@@ -194,15 +194,12 @@ static const float INF = 2000000000.0f;
#endif
// potential fakematch?
#if DEBUG
#define FABSF fabsf
#else
#define FABSF std::fabsf
#endif
#ifndef __MWERKS__
#if __cplusplus
#include <cmath>
#include <math.h>
using std::isnan;
#endif
#endif
@@ -220,4 +217,15 @@ using std::isnan;
#define CRASH(msg, ...) OSPanic(__FILE__, __LINE__, "%s", msg, ##__VA_ARGS__)
// Some basic macros that are more convenient than putting down #if blocks for one-line changes.
#if TARGET_PC
#define IF_DUSK(statement) statement
#define IF_NOT_DUSK(statement)
#define DUSK_IF_ELSE(dusk, orig) dusk
#else
#define IF_DUSK(statement)
#define IF_NOT_DUSK(statement) statement
#define DUSK_IF_ELSE(dusk, orig) orig
#endif
#endif
+6 -3
View File
@@ -8,12 +8,14 @@
#include <aurora/aurora.h>
#endif
#define FB_WIDTH_BASE (608)
#define FB_HEIGHT_BASE (448)
#if WIDESCREEN_SUPPORT && !TARGET_PC
#define FB_WIDTH (640)
#define FB_HEIGHT (456)
#else
#define FB_WIDTH (608)
#define FB_HEIGHT (448)
#define FB_WIDTH FB_WIDTH_BASE
#define FB_HEIGHT FB_HEIGHT_BASE
#endif
int mDoGph_Create();
@@ -237,6 +239,7 @@ public:
static void* getZbufferTex() { return mZbufferTex; }
static void setFadeRate(f32 rate) { mFadeRate = rate; }
static f32 getFadeRate() { return mFadeRate; }
static f32 getFadeSpeed() { return mFadeSpeed; }
static bloom_c* getBloom() { return &m_bloom; }
static GXColor& getFadeColor() { return mFadeColor; }
static GXColor& getBackColor() { return mBackColor; }
@@ -275,7 +278,7 @@ public:
#if TARGET_PC
static void onWide(f32 width, f32 height);
#else
#else
static void onWide();
#endif