mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-12 05:28:43 -04:00
Merge branch 'main' into pjb-audio
This commit is contained in:
@@ -2862,7 +2862,7 @@ JSystem/JAHostIO/JAHVirtualNode.cpp:
|
||||
.text start:0x804B0490 end:0x804B0A80
|
||||
.data start:0x80704000 end:0x80704048
|
||||
.sdata start:0x807490E0 end:0x80749108
|
||||
.sbss start:0x8074CDA0 end:0x8074CDAC
|
||||
.sbss start:0x8074CDA0 end:0x8074CDA8
|
||||
|
||||
JSystem/JAHostIO/JAHUAsnData.cpp:
|
||||
.text start:0x804B0A80 end:0x804B15A0
|
||||
@@ -2926,7 +2926,7 @@ JSystem/JMessage/locale.cpp:
|
||||
|
||||
Z2AudioLib/Z2Calc.cpp:
|
||||
.text start:0x804BAF50 end:0x804BB4D0
|
||||
.sbss start:0x8074CDAC end:0x8074CDB0
|
||||
.sbss start:0x8074CDA8 end:0x8074CDB0
|
||||
.sdata2 start:0x80751EC0 end:0x80751ED8
|
||||
|
||||
Z2AudioLib/Z2Param.cpp:
|
||||
|
||||
@@ -63143,8 +63143,8 @@ __RTTI__24JAUStreamAramMgrBase_<1> = .sdata:0x8074A600; // type:object size:0x8
|
||||
@STRING@__ct__32JASGlobalInstance<11Z2SoundInfo>Fb@2 = .sdata:0x8074A634; // type:object size:0x5 scope:local data:string hash:0x20DA3ACD dhash:0x94E062D9
|
||||
@122994 = .sdata:0x8074A640; // type:object size:0x5 scope:local data:string hash:0xACC96C60
|
||||
@122997 = .sdata:0x8074A648; // type:object size:0x7 scope:local data:string hash:0xACC96C63
|
||||
lbl_8074A64F = .sdata:0x8074A64F; // type:object size:0x1 data:byte hash:0x132ED010
|
||||
lbl_8074A650 = .sdata:0x8074A650; // type:object size:0x8 data:byte hash:0x6496B168
|
||||
gMicOn = .sdata:0x8074A64F; // type:object size:0x1 data:byte hash:0x132ED010
|
||||
gMicOffWhenOutOfSight = .sdata:0x8074A650; // type:object size:0x1 data:byte hash:0x6496B168
|
||||
__RTTI__11Z2ParamNode = .sdata:0x8074A658; // type:object size:0x8 scope:global hash:0x427C3879 dhash:0xA49E2699
|
||||
__RTTI__17Z2HioSeSeqDataMgr = .sdata:0x8074A660; // type:object size:0x8 scope:global hash:0x9E17CBE7 dhash:0x4E4A5DC1
|
||||
@STRING@newInstance__27JAHSingletonBase<8JAHioMgr>Fv@6 = .sdata:0x8074A668; // type:object size:0x5 scope:local data:string hash:0x8DC98438 dhash:0x0A5C4CFA
|
||||
@@ -64708,7 +64708,7 @@ sBusTransactionMax__14J3DUMemRequest = .sbss:0x8074CBA8; // type:object size:0x4
|
||||
soOutput_none___Q27JStudio14TVariableValue = .sbss:0x8074CBB0; // type:object size:0x4 scope:global hash:0x0D4DD37E dhash:0xBE028BCF
|
||||
lbl_8074CBB8 = .sbss:0x8074CBB8; // type:object size:0x1 data:byte hash:0xD1337E25 dhash:0xE17C2A90
|
||||
sInstance__38JASGlobalInstance<17JAUSoundNameTable> = .sbss:0x8074CBBC; // type:object size:0x4 scope:global data:4byte hash:0xC9602A2E dhash:0x8CFDFF83
|
||||
lbl_8074CBC0 = .sbss:0x8074CBC0; // type:object size:0x1 data:byte hash:0xD7A40583 dhash:0x59B8D7B7
|
||||
@GUARD@adaptor_do_prepare__Q217JStudio_JParticle17TAdaptor_particleFv@aoData = .sbss:0x8074CBC0; // type:object size:0x1 data:byte hash:0xD7A40583 dhash:0x59B8D7B7
|
||||
oColor_default_frame___Q218JStudioToolLibrary15TScroll_drawBar = .sbss:0x8074CBC8; // type:object size:0x4 scope:global hash:0x21F3055A dhash:0xF4CA98D4
|
||||
oColor_default_background___Q218JStudioToolLibrary15TScroll_drawBar = .sbss:0x8074CBCC; // type:object size:0x4 scope:global hash:0x7BF46BA9 dhash:0x05043C07
|
||||
oColor_default_foreground___Q218JStudioToolLibrary15TScroll_drawBar = .sbss:0x8074CBD0; // type:object size:0x4 scope:global hash:0xE3363F1C dhash:0xF78E1792
|
||||
@@ -64824,7 +64824,7 @@ data_80451358 = .sbss:0x8074CDD8; // type:object size:0x1 data:byte hash:0xA31DF
|
||||
data_80451359 = .sbss:0x8074CDD9; // type:object size:0x1 data:byte hash:0xE4CA1432 dhash:0x0157E254
|
||||
mLinkPtr__14Z2CreatureLink = .sbss:0x8074CDE0; // type:object size:0x4 scope:global data:4byte hash:0x696E3950 dhash:0xD016AAD5
|
||||
mAudioMgrPtr__10Z2AudioMgr = .sbss:0x8074CDE8; // type:object size:0x4 scope:global data:4byte hash:0x54526A77 dhash:0x71D35736
|
||||
lbl_8074CDF0 = .sbss:0x8074CDF0; // type:object size:0x1 data:byte hash:0xBB7CA6C8
|
||||
gMuffleOutOfRangeMic = .sbss:0x8074CDF0; // type:object size:0x1 data:byte hash:0xBB7CA6C8
|
||||
sF1_Pan_Width = .sbss:0x8074CDF8; // type:object size:0x4 scope:global align:4 data:float hash:0x38037A38
|
||||
sMixingBuffer = .sbss:0x8074CE00; // type:object size:0x4 scope:global data:4byte hash:0xFB6CB64A
|
||||
sInstance__29JASGlobalInstance<9SpkSystem> = .sbss:0x8074CE08; // type:object size:0x4 scope:global data:4byte hash:0xA09FFFD8 dhash:0x0F2938EA
|
||||
|
||||
+1
-1
@@ -1236,7 +1236,7 @@ config.libs = [
|
||||
JSystemLib(
|
||||
"JAHNodeLib",
|
||||
[
|
||||
Object(NonMatching, "JSystem/JAHNodeLib/JAHAudienceSettingNode.cpp"),
|
||||
Object(Matching, "JSystem/JAHNodeLib/JAHAudienceSettingNode.cpp"),
|
||||
Object(NonMatching, "JSystem/JAHNodeLib/JAHConductNode.cpp"),
|
||||
Object(NonMatching, "JSystem/JAHNodeLib/JAHIDSwapNode.cpp"),
|
||||
Object(NonMatching, "JSystem/JAHNodeLib/JAHSoundPlayerNode.cpp"),
|
||||
|
||||
Vendored
+1
-1
Submodule extern/aurora updated: 156f9a65e3...d76b70fc72
@@ -543,8 +543,17 @@ set(JSYSTEM_DEBUG_FILES
|
||||
libs/JSystem/src/JGadget/binary.cpp
|
||||
libs/JSystem/src/JGadget/define.cpp
|
||||
libs/JSystem/src/JGadget/linklist.cpp
|
||||
libs/JSystem/src/JGadget/search.cpp
|
||||
libs/JSystem/src/JGadget/std-vector.cpp
|
||||
libs/JSystem/src/JAHostIO/JAHFrameNode.cpp
|
||||
libs/JSystem/src/JAHostIO/JAHioMessage.cpp
|
||||
libs/JSystem/src/JAHostIO/JAHioMgr.cpp
|
||||
libs/JSystem/src/JAHostIO/JAHioNode.cpp
|
||||
libs/JSystem/src/JAHostIO/JAHioUtil.cpp
|
||||
libs/JSystem/src/JAHostIO/JAHVirtualNode.cpp
|
||||
libs/JSystem/src/JHostIO/JORFile.cpp
|
||||
libs/JSystem/src/JHostIO/JORHostInfo.cpp
|
||||
libs/JSystem/src/JHostIO/JORMessageBox.cpp
|
||||
libs/JSystem/src/JHostIO/JORServer.cpp
|
||||
libs/JSystem/src/JHostIO/JHIhioASync.cpp
|
||||
libs/JSystem/src/JHostIO/JHIRMcc.cpp
|
||||
|
||||
@@ -31,7 +31,17 @@ struct cXyz : Vec {
|
||||
z = vec.z;
|
||||
}
|
||||
#else
|
||||
cXyz() = default;
|
||||
cXyz() {
|
||||
if (std::isnan(x)) {
|
||||
x = 0.0f;
|
||||
}
|
||||
if (std::isnan(y)) {
|
||||
y = 0.0f;
|
||||
}
|
||||
if (std::isnan(z)) {
|
||||
z = 0.0f;
|
||||
}
|
||||
}
|
||||
~cXyz() = default;
|
||||
cXyz(const cXyz& vec) = default;
|
||||
#endif
|
||||
|
||||
@@ -33,7 +33,7 @@ struct Z2AudioCamera {
|
||||
f32 getVolCenterZ() const { return mVolCenterZ; }
|
||||
void setMainCamera(bool param_0) { mSetMainCamera = param_0; }
|
||||
|
||||
void setTargetVolume(f32 vol) {
|
||||
void setTargetVolume(f32 vol) {
|
||||
JUT_ASSERT(281, vol <= 1.f);
|
||||
if (vol < 0.0f) {
|
||||
vol = 0.0f;
|
||||
@@ -45,6 +45,10 @@ struct Z2AudioCamera {
|
||||
f32 getFovySin() const { return mFovySin; }
|
||||
const JGeometry::TVec3<f32>* getVel() const { return &mVel; }
|
||||
|
||||
f32 getTargetVolume() const { return mTargetVolume; }
|
||||
f32 getCamDist() const { return mCamDist; }
|
||||
|
||||
|
||||
/* 0x00 */ JGeometry::TPosition3f32 field_0x0;
|
||||
/* 0x30 */ JGeometry::TVec3<f32> mVel;
|
||||
/* 0x3C */ JGeometry::TVec3<f32> mPos;
|
||||
@@ -68,6 +72,10 @@ struct Z2SpotMic {
|
||||
u32 calcMicPriority(f32);
|
||||
f32 calcMicVolume(f32, int camID, f32);
|
||||
|
||||
void calcPriorityFactor();
|
||||
void setIgnoreIfOut(bool value) { mIgnoreIfOut = value; }
|
||||
void setMicOn(bool value) { mMicOn = value; }
|
||||
|
||||
void setPosPtr(Vec* posPtr) { mPosPtr = posPtr; }
|
||||
bool isOn() { return mMicOn; }
|
||||
|
||||
@@ -231,6 +239,8 @@ struct Z2Audience : public JAIAudience, public JASGlobalInstance<Z2Audience> {
|
||||
|
||||
const Z2AudioCamera* getAudioCamera(int camID) const { return &mAudioCamera[camID]; }
|
||||
|
||||
void setUsingOffMicVol(bool value) { mUsingOffMicVol = value; }
|
||||
|
||||
/* 0x004 */ f32 field_0x4;
|
||||
/* 0x008 */ u8 field_0x8;
|
||||
/* 0x00C */ Z2Audience3DSetting mSetting;
|
||||
|
||||
@@ -12,9 +12,8 @@ class Z2ParamNode : public JAHFrameNode {
|
||||
public:
|
||||
Z2ParamNode() : JAHFrameNode("サウンド各種パラメータ") {}
|
||||
|
||||
/* vt[07] */ virtual ~Z2ParamNode() {}
|
||||
/* vt[08] */ virtual void message(JAHControl& control);
|
||||
/* vt[0F] */ virtual void propertyEvent(JAH_P_Event, u32);
|
||||
/* vt[0F] */ virtual void propertyEvent(JAH_P_Event, uintptr_t);
|
||||
/* vt[12] */ virtual void onFrame();
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef Z2F1TESTWINDOW_H
|
||||
#define Z2F1TESTWINDOW_H
|
||||
|
||||
#include "JSystem/JAHostIO/JAHFrameNode.h"
|
||||
#include "JSystem/JAHostIO/JAHUTableEdit.h"
|
||||
#include "JSystem/JAWExtSystem/JAWWindow.h"
|
||||
|
||||
@@ -8,6 +9,21 @@ class Z2F1TestWindow : public JAWWindow {
|
||||
public:
|
||||
Z2F1TestWindow();
|
||||
|
||||
virtual void onDraw(JAWGraphContext*);
|
||||
virtual void frameWork();
|
||||
virtual void onPadProc(const JUTGamePad&);
|
||||
virtual void onTrigY(const JUTGamePad&);
|
||||
virtual void onTrigMenu(const JUTGamePad&);
|
||||
|
||||
void calcF1();
|
||||
f32 tau(f32);
|
||||
static f32 calcThreshold(int);
|
||||
f32 getRawX() const;
|
||||
f32 calcNoise();
|
||||
void setValue(f32, f32);
|
||||
f32 getValue2();
|
||||
f32 getValue();
|
||||
|
||||
/* 0x3F0 */ f32 field_0x3f0;
|
||||
/* 0x3F4 */ f32 field_0x3f4;
|
||||
/* 0x3F8 */ f32 field_0x3f8[500];
|
||||
@@ -21,12 +37,15 @@ class Z2F1SwingTestNode : public JAHFrameNode, public Z2F1TestWindow {
|
||||
public:
|
||||
Z2F1SwingTestNode();
|
||||
|
||||
virtual void message(JAHControl&);
|
||||
virtual void onFrame();
|
||||
|
||||
/* 0xC48 */ JAHUSeBox field_0xc48;
|
||||
/* 0xCD0 */ JAHUSeBox field_0xcd0;
|
||||
/* 0xD58 */ u8 field_0xd58;
|
||||
/* 0xD59 */ u8 field_0xd59;
|
||||
/* 0xD5A */ u8 field_0xd5a;
|
||||
/* 0xD5B */ u8 field_0xd5b;
|
||||
/* 0xD58 */ u8 mModulateVolume;
|
||||
/* 0xD59 */ u8 mModulatePitch;
|
||||
/* 0xD5A */ u8 mModulatePan;
|
||||
/* 0xD5B */ u8 mModulateDolby;
|
||||
/* 0xD5C */ f32 field_0xd5c;
|
||||
/* 0xD60 */ f32 field_0xd60;
|
||||
/* 0xD64 */ f32 field_0xd64;
|
||||
@@ -37,11 +56,15 @@ public:
|
||||
class Z2AudSettingView : public JAWWindow {
|
||||
public:
|
||||
Z2AudSettingView();
|
||||
|
||||
virtual void onDraw(JAWGraphContext*);
|
||||
};
|
||||
|
||||
class Z2DSPCheck : public JAWWindow {
|
||||
public:
|
||||
Z2DSPCheck() : JAWWindow("Z2DSPCheck", 500, 450) {}
|
||||
|
||||
virtual void onDraw(JAWGraphContext*);
|
||||
};
|
||||
|
||||
#endif /* Z2F1TESTWINDOW_H */
|
||||
|
||||
@@ -1,35 +1,92 @@
|
||||
#ifndef Z2FXLINEMGR_H
|
||||
#define Z2FXLINEMGR_H
|
||||
|
||||
#include "JSystem/JAudio2/JASGadget.h"
|
||||
#include "JSystem/JAHostIO/JAHFrameNode.h"
|
||||
#include "JSystem/JAudio2/JASDSPInterface.h"
|
||||
#include "JSystem/JAudio2/JASGadget.h"
|
||||
|
||||
class JKRArchive;
|
||||
class JKRExpHeap;
|
||||
class JKRHeap;
|
||||
|
||||
class Z2FxLineEditNode : public JAHFrameNode {
|
||||
public:
|
||||
Z2FxLineEditNode(JKRExpHeap*);
|
||||
struct Z2FxLineConfigSingle {
|
||||
/* 0x00 */ u8 unk0;
|
||||
/* 0x01 */ u8 unk1;
|
||||
/* 0x02 */ u8 unk2;
|
||||
/* 0x03 */ u8 unk3;
|
||||
/* 0x04 */ s16 unk4;
|
||||
/* 0x06 */ s16 unk6;
|
||||
/* 0x08 */ s16 unk8[8];
|
||||
};
|
||||
|
||||
struct Z2FxLineConfig {
|
||||
/* 0x00 */ u8 field_0x0;
|
||||
/* 0x01 */ u8 field_0x1;
|
||||
/* 0x02 */ u8 field_0x2;
|
||||
/* 0x03 */ u8 field_0x3;
|
||||
/* 0x04 */ s16 field_0x4;
|
||||
/* 0x06 */ s16 field_0x6;
|
||||
/* 0x08 */ s16 field_0x8[8];
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u8 field_0x1a;
|
||||
/* 0x1B */ u8 field_0x1b;
|
||||
/* 0x1C */ s16 field_0x1c;
|
||||
/* 0x1E */ s16 field_0x1e;
|
||||
/* 0x20 */ s16 field_0x20[8];
|
||||
/* 0x00 */ Z2FxLineConfigSingle unk0;
|
||||
/* 0x18 */ Z2FxLineConfigSingle unk18;
|
||||
}; // Size: 0x30
|
||||
|
||||
class Z2FxLineEditNode : public JAHFrameNode {
|
||||
public:
|
||||
class LineStereo : public JAHFrameNode {
|
||||
public:
|
||||
LineStereo(bool dolby) : JAHFrameNode(NULL) {
|
||||
unk70.unk0.unk0 = 1;
|
||||
unk70.unk0.unk1 = 0;
|
||||
unk70.unk0.unk4 = 0x6000;
|
||||
unk70.unk0.unk2 = 1;
|
||||
unk70.unk0.unk6 = 0;
|
||||
unk70.unk0.unk3 = 0x40;
|
||||
unk70.unk0.unk8[0] = 0;
|
||||
unk70.unk0.unk8[1] = 0;
|
||||
unk70.unk0.unk8[2] = 0;
|
||||
unk70.unk0.unk8[3] = 0;
|
||||
unk70.unk0.unk8[4] = 0;
|
||||
unk70.unk0.unk8[5] = 0;
|
||||
unk70.unk0.unk8[6] = 0x3fff;
|
||||
unk70.unk0.unk8[7] = 0;
|
||||
|
||||
unk70.unk18.unk0 = 1;
|
||||
unk70.unk18.unk1 = 0;
|
||||
unk70.unk18.unk4 = 0;
|
||||
unk70.unk18.unk2 = 1;
|
||||
unk70.unk18.unk6 = 0x6000;
|
||||
unk70.unk18.unk3 = 0x40;
|
||||
unk70.unk18.unk8[0] = 0;
|
||||
unk70.unk18.unk8[1] = 0;
|
||||
unk70.unk18.unk8[2] = 0;
|
||||
unk70.unk18.unk8[3] = 0;
|
||||
unk70.unk18.unk8[4] = 0;
|
||||
unk70.unk18.unk8[5] = 0;
|
||||
unk70.unk18.unk8[6] = 0x3fff;
|
||||
unk70.unk18.unk8[7] = 0;
|
||||
|
||||
if (dolby)
|
||||
setNodeName("Dolby Stereo");
|
||||
else
|
||||
setNodeName("Norma Stereo");
|
||||
mIsDolby = dolby;
|
||||
}
|
||||
|
||||
void message(JAHControl&);
|
||||
void propertyEvent(JAH_P_Event, uintptr_t);
|
||||
void lineEditSingle(Z2FxLineConfigSingle*, JAHControl&);
|
||||
|
||||
/* 0x70 */ Z2FxLineConfig unk70;
|
||||
/* 0xA0 */ bool mIsDolby;
|
||||
};
|
||||
|
||||
Z2FxLineEditNode(JKRExpHeap*);
|
||||
|
||||
void message(JAHControl&);
|
||||
void syncSetting(u8, JASDsp::FxlineConfig_*);
|
||||
void update(bool);
|
||||
void saveLine(LineStereo*);
|
||||
void loadLine(LineStereo*);
|
||||
|
||||
/* 0x70 */ JKRExpHeap* mHeap;
|
||||
/* 0x74 */ LineStereo* unk74;
|
||||
/* 0x78 */ LineStereo* unk78;
|
||||
};
|
||||
|
||||
struct Z2FxLineMgr : public JASGlobalInstance<Z2FxLineMgr> {
|
||||
Z2FxLineMgr();
|
||||
void initDataArc(JKRArchive* arc, JKRHeap* heap);
|
||||
@@ -39,6 +96,8 @@ struct Z2FxLineMgr : public JASGlobalInstance<Z2FxLineMgr> {
|
||||
void setUnderWaterFx(bool isUnderWaterFx);
|
||||
void setSceneFx(s32 sceneNo);
|
||||
|
||||
void setHIOEdit(Z2FxLineEditNode* hioEdit) { mHIOEdit = hioEdit; }
|
||||
|
||||
/* 0x00 */ Z2FxLineConfig* mConfig;
|
||||
/* 0x04 */ void* mFxLineBuffer[4];
|
||||
/* 0x14 */ s8 mLineID;
|
||||
|
||||
@@ -14,8 +14,8 @@ public:
|
||||
void setFadeOutStart(u8 fadeType);
|
||||
void setFadeInStart(u8 fadeType);
|
||||
void setSceneName(char* spot, s32 room, s32 layer);
|
||||
void sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2,
|
||||
u8 demoWave, bool);
|
||||
void sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2, u8 demoWave,
|
||||
bool);
|
||||
void framework();
|
||||
void load1stDynamicWave();
|
||||
void _load1stWaveInner_1();
|
||||
@@ -31,9 +31,9 @@ public:
|
||||
bool loadSeWave(u32 wave);
|
||||
bool loadBgmWave(u32 wave);
|
||||
|
||||
#if PLATFORM_SHIELD
|
||||
#if PLATFORM_SHIELD
|
||||
bool loadSceneWave(u32 wave, u32 bank);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
bool isSceneExist() { return sceneExist; }
|
||||
int getCurrentSceneNum() { return sceneNum; }
|
||||
|
||||
@@ -30,6 +30,9 @@ struct Z2SpeechMgr2 : public JASGlobalInstance<Z2SpeechMgr2> {
|
||||
void playOneShotVoice(u8, u16, Vec*, s8);
|
||||
bool isMidnaSpeak();
|
||||
|
||||
u16* getStylePtr() { return &mMood; }
|
||||
u8* getTalkerPtr() { return &mVoice; }
|
||||
|
||||
/* 0x000 */ JAISoundHandle field_0x0;
|
||||
/* 0x004 */ JAISoundHandle field_0x4;
|
||||
/* 0x008 */ JMath::TRandom_<JMath::TRandom_fast_> random;
|
||||
|
||||
@@ -73,6 +73,20 @@ private:
|
||||
/* 0x8 */ f32 m_offsetXZ;
|
||||
}; // Size: 0xC
|
||||
|
||||
#if TARGET_PC
|
||||
#define PLAYER_CREATE_ANM_HEAP_F(heap, type, fmt, ...) \
|
||||
{ \
|
||||
char pcah_name_buf[32]; \
|
||||
sprintf(pcah_name_buf, fmt, ##__VA_ARGS__); \
|
||||
(heap).createHeap(type, pcah_name_buf); \
|
||||
\
|
||||
}
|
||||
#define PLAYER_CREATE_ANM_HEAP(heap, type, name) (heap).createHeap(type, name)
|
||||
#else
|
||||
#define PLAYER_CREATE_ANM_HEAP_F(heap, type, name, ...) (heap).createHeap(type)
|
||||
#define PLAYER_CREATE_ANM_HEAP(heap, type, name) (heap).createHeap(type)
|
||||
#endif
|
||||
|
||||
class daPy_anmHeap_c {
|
||||
public:
|
||||
enum daAlinkHEAP_TYPE {
|
||||
@@ -87,7 +101,11 @@ public:
|
||||
~daPy_anmHeap_c();
|
||||
void initData();
|
||||
void* mallocBuffer();
|
||||
#if TARGET_PC
|
||||
void createHeap(daAlinkHEAP_TYPE i_heapType, const char* name);
|
||||
#else
|
||||
void createHeap(daAlinkHEAP_TYPE i_heapType);
|
||||
#endif
|
||||
void* loadData(u16 i_resId);
|
||||
void* loadDataIdx(u16 i_resId);
|
||||
void* loadDataPriIdx(u16 i_resId);
|
||||
|
||||
@@ -32,6 +32,10 @@ public:
|
||||
|
||||
J3DModel* getModel() { return mpModel; }
|
||||
|
||||
#if TARGET_PC
|
||||
void setIdx(u8 idx) { this->idx = idx; }
|
||||
#endif
|
||||
|
||||
private:
|
||||
/* 0x00 */ JKRSolidHeap* mpHeap;
|
||||
/* 0x04 */ J3DModel* mpModel;
|
||||
@@ -40,6 +44,9 @@ private:
|
||||
/* 0x10 */ u8 mDrawBG;
|
||||
/* 0x11 */ s8 mRoomNo;
|
||||
/* 0x12 */ u8 field_0x12;
|
||||
#if TARGET_PC
|
||||
u8 idx;
|
||||
#endif
|
||||
}; // Size: 0x14
|
||||
|
||||
class dSmplMdl_draw_c {
|
||||
|
||||
@@ -179,6 +179,7 @@ static const float INF = 2000000000.0f;
|
||||
#ifdef __MWERKS__
|
||||
#define MULTI_CHAR(x) (x)
|
||||
#else
|
||||
#if __cplusplus
|
||||
template <int N>
|
||||
inline constexpr unsigned long long MultiCharLiteral(const char (&buf)[N]) {
|
||||
static_assert(N - 1 >= 3 && N - 1 <= 10, "MULTI_CHAR literal must be 1-8 characters");
|
||||
@@ -190,6 +191,7 @@ static const float INF = 2000000000.0f;
|
||||
}
|
||||
#define MULTI_CHAR(x) MultiCharLiteral(#x)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// potential fakematch?
|
||||
#if DEBUG
|
||||
@@ -199,9 +201,11 @@ static const float INF = 2000000000.0f;
|
||||
#endif
|
||||
|
||||
#ifndef __MWERKS__
|
||||
#if __cplusplus
|
||||
#include <cmath>
|
||||
using std::isnan;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Comparing a non-volatile reference type to NULL is tautological
|
||||
// and triggers a warning on modern compilers, but in some cases is
|
||||
|
||||
@@ -2,10 +2,43 @@
|
||||
#define JAHSOUNDPLAYERNODE_H
|
||||
|
||||
#include "JSystem/JAHostIO/JAHFrameNode.h"
|
||||
#include "JSystem/JAHostIO/JAHUAsnData.h"
|
||||
#include "JSystem/JAHostIO/JAHUTableEdit.h"
|
||||
|
||||
class JAHPlayBox : public JAHUSeBox {
|
||||
public:
|
||||
JAHPlayBox();
|
||||
|
||||
virtual void onCurrentNodeFrame();
|
||||
|
||||
public:
|
||||
/* 0x85 */ u8 unk85;
|
||||
};
|
||||
|
||||
class JAHSoundPlayerNode : public JAHFrameNode {
|
||||
public:
|
||||
JAHSoundPlayerNode();
|
||||
|
||||
virtual void message(JAHControl&);
|
||||
virtual void onCurrentNodeFrame();
|
||||
|
||||
u8 getContMode() const;
|
||||
|
||||
public:
|
||||
/* 0x70 */ s32 unk70;
|
||||
/* 0x74 */ s32 unk74;
|
||||
/* 0x78 */ s32 unk78;
|
||||
/* 0x7C */ u8 unk7C;
|
||||
/* 0x7D */ u8 unk7D;
|
||||
/* 0x7E */ u8 unk7E;
|
||||
/* 0x7F */ u8 unk7F;
|
||||
/* 0x80 */ s32 unk80;
|
||||
/* 0x84 */ s32 unk84;
|
||||
/* 0x88 */ s64 unk88;
|
||||
/* 0x90 */ s64 unk90;
|
||||
/* 0x98 */ JAHPlayBox unk98;
|
||||
/* 0x120 */ bool unk120;
|
||||
/* 0x122 */ JAHUAsn unk122;
|
||||
};
|
||||
|
||||
#endif /* JAHSOUNDPLAYERNODE_H */
|
||||
|
||||
@@ -9,17 +9,19 @@ class JAHVirtualNode;
|
||||
class JAHFrameNode : public JAHioNode {
|
||||
public:
|
||||
JAHFrameNode(const char*);
|
||||
/* vt[07] */ virtual ~JAHFrameNode();
|
||||
/* vt[02] */ virtual void listenPropertyEvent(const JORPropertyEvent*);
|
||||
/* vt[05] */ virtual void genMessage(JORMContext*);
|
||||
/* vt[06] */ virtual void listenNodeEvent(const JORNodeEvent*);
|
||||
/* vt[0C] */ virtual s32 getNodeType();
|
||||
/* vt[0C] */ virtual s32 getNodeType() { return 1; }
|
||||
/* vt[11] */ virtual void onCurrentNodeFrame();
|
||||
/* vt[12] */ virtual void onFrame();
|
||||
|
||||
void framework();
|
||||
void currentFramework();
|
||||
|
||||
void callAllVirtualMessages(JAHControl&);
|
||||
void appendVirNode(JAHVirtualNode*);
|
||||
|
||||
JSULink<JAHFrameNode>* getFrameNodeLink() { return &mFrameNodeLink; }
|
||||
|
||||
/* 0x44 */ JSUTree<JAHVirtualNode> mTree;
|
||||
|
||||
@@ -4,18 +4,22 @@
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
template<class T>
|
||||
template <class T>
|
||||
class JAHSingletonBase {
|
||||
public:
|
||||
JAHSingletonBase() { sInstance = (T*)this; }
|
||||
virtual ~JAHSingletonBase() { sInstance = NULL; }
|
||||
|
||||
static T* newInstance() {
|
||||
// clang-format off
|
||||
JUT_ASSERT(82, sInstance==NULL);
|
||||
// clang-format on
|
||||
if (!sInstance) {
|
||||
sInstance = JKR_NEW T();
|
||||
}
|
||||
// clang-format off
|
||||
JUT_ASSERT(85, sInstance!=NULL);
|
||||
// clang-format on
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
#ifndef JAHUASNNDATA_H
|
||||
#define JAHUASNNDATA_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
class JORReflexible;
|
||||
class JAHControl;
|
||||
|
||||
class JAHUAsn {
|
||||
public:
|
||||
JAHUAsn(u16 param_1) : unk0(param_1) {}
|
||||
|
||||
u8 getAttribute(u32);
|
||||
u16 getSubNum(s32, s32);
|
||||
u16 getDataNum(s32, s32, s32);
|
||||
const char* getName(s32, s32, s32, s32);
|
||||
u32 getDataId(s32, s32, s32, s32);
|
||||
u8 getCategory(u32);
|
||||
u8 getSub(u32);
|
||||
u16 getDataPerCat(u32);
|
||||
u16 getDataPerSub(u32);
|
||||
u32 getNextId(u32, bool);
|
||||
|
||||
void createComboBoxCategory(JAHControl&);
|
||||
void createComboBoxSub(JAHControl&, s32, s32);
|
||||
void createComboBoxData(JAHControl&, s32, s32, s32);
|
||||
void checkAndUpdateNameBox(s32*, s32*, s32*, s32*, s32, s32, s32, JORReflexible*);
|
||||
void updateNameBoxAll(s32*, s32*, s32*, s32*, JORReflexible*);
|
||||
|
||||
private:
|
||||
void __updateNameBoxCategory(s32*, JORReflexible*);
|
||||
void __updateNameBoxSub(s32, s32, s32*, JORReflexible*);
|
||||
void __updateNameBoxData(s32, s32, s32, s32*, JORReflexible*);
|
||||
u32 __GetSubNo(s32);
|
||||
u32 __GetDataNo(s32);
|
||||
|
||||
/* 0x0 */ u16 unk0;
|
||||
};
|
||||
|
||||
#endif /* JAHUASNNDATA_H */
|
||||
@@ -0,0 +1,30 @@
|
||||
#ifndef JAHUGLOBAL_H
|
||||
#define JAHUGLOBAL_H
|
||||
|
||||
#include <cstring>
|
||||
#include "JSystem/JHostIO/JORServer.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
inline void JAHUDialog_CatComment(char* param_1, const char* param_2, const char* param_3) {
|
||||
if (param_3) {
|
||||
std::strcpy(param_1, param_3);
|
||||
std::strcat(param_1, "\n\n");
|
||||
}
|
||||
std::strcat(param_1, param_2);
|
||||
}
|
||||
|
||||
inline void JAHUDialog_OK(const char* mes, const char* param_2, const char* param_3) {
|
||||
char buffer[128];
|
||||
if (param_3) {
|
||||
JAHUDialog_CatComment(buffer, mes, param_3);
|
||||
} else {
|
||||
// clang-format off
|
||||
JUT_ASSERT(144, std::strlen(mes)<128-1)
|
||||
// clang-format on
|
||||
std::strcpy(buffer, mes);
|
||||
}
|
||||
|
||||
JORMessageBox(buffer, param_2, 0x30);
|
||||
}
|
||||
|
||||
#endif /* JAHUGLOBAL_H */
|
||||
@@ -2,10 +2,47 @@
|
||||
#define JAHUTABLEDIT_H
|
||||
|
||||
#include "JSystem/JAHostIO/JAHVirtualNode.h"
|
||||
#include "JSystem/JAudio2/JAISound.h"
|
||||
|
||||
class JAHUAsn;
|
||||
|
||||
class JAHUSeBox : public JAHVirtualNode {
|
||||
public:
|
||||
JAHUSeBox();
|
||||
JAHUSeBox(u32, u32*);
|
||||
|
||||
virtual void message(JAHControl&);
|
||||
virtual void onCurrentNodeFrame();
|
||||
virtual void propertyEvent(JAH_P_Event, uintptr_t);
|
||||
virtual void nodeEvent(JAH_N_Event);
|
||||
virtual void trigPlayButton();
|
||||
virtual void trigStopButton();
|
||||
virtual void soundPlay();
|
||||
virtual void soundStop();
|
||||
|
||||
u8 checkNameSetChange();
|
||||
void updateNameSet(JORReflexible*);
|
||||
void setId(u32, bool, JORReflexible*);
|
||||
u32 getId() const { return unk58; }
|
||||
|
||||
public:
|
||||
/* 0x40 */ JAISoundHandle unk40;
|
||||
/* 0x44 */ JAISoundHandle unk44;
|
||||
/* 0x48 */ bool unk48;
|
||||
/* 0x4C */ u32 unk4C;
|
||||
/* 0x50 */ u32 unk50;
|
||||
/* 0x54 */ u32 unk54;
|
||||
/* 0x58 */ u32 unk58;
|
||||
/* 0x5C */ u32* unk5C;
|
||||
/* 0x60 */ JAHUAsn* mAsnCalc;
|
||||
/* 0x64 */ s32 unk64;
|
||||
/* 0x68 */ s32 unk68;
|
||||
/* 0x6C */ s32 unk6C;
|
||||
/* 0x70 */ s32 unk70;
|
||||
/* 0x74 */ s32 unk74;
|
||||
/* 0x78 */ s32 unk78;
|
||||
/* 0x7C */ s32 unk7C;
|
||||
/* 0x80 */ s32 unk80;
|
||||
/* 0x84 */ bool unk84;
|
||||
};
|
||||
|
||||
#endif /* JAHUTABLEDIT_H */
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
#ifndef JAHUPDATE_H
|
||||
#define JAHUPDATE_H
|
||||
|
||||
#include "JSystem/JAHostIO/JAHioNode.h"
|
||||
#include "JSystem/JHostIO/JORMContext.h"
|
||||
#include "JSystem/JHostIO/JORServer.h"
|
||||
#include "types.h"
|
||||
|
||||
namespace JAHUpdate {
|
||||
|
||||
extern JAHioNode* spNode;
|
||||
extern JORMContext* spMc;
|
||||
|
||||
inline void startUpdateNode(JAHioNode* param_1) {
|
||||
spMc = attachJORMContext(8);
|
||||
spNode = param_1;
|
||||
spMc->startUpdateNode(spNode);
|
||||
}
|
||||
|
||||
inline void endUpdateNode() {
|
||||
spMc->endUpdateNode();
|
||||
releaseJORMContext(spMc);
|
||||
spMc = NULL;
|
||||
spNode = NULL;
|
||||
}
|
||||
|
||||
inline void buttonOn(JAHioNode* param_1, u32 param_2) {
|
||||
bool b = false;
|
||||
if (spMc != NULL)
|
||||
b = true;
|
||||
|
||||
if (!b)
|
||||
startUpdateNode(param_1);
|
||||
|
||||
spMc->updateButton(1, param_2, 0);
|
||||
|
||||
if (!b)
|
||||
endUpdateNode();
|
||||
}
|
||||
|
||||
inline void buttonOff(JAHioNode* param_1, u32 param_2) {
|
||||
bool b = false;
|
||||
if (spMc != NULL)
|
||||
b = true;
|
||||
|
||||
if (!b)
|
||||
startUpdateNode(param_1);
|
||||
|
||||
spMc->updateButton(1, param_2, 0x40000000);
|
||||
|
||||
if (!b)
|
||||
endUpdateNode();
|
||||
}
|
||||
|
||||
} // namespace JAHUpdate
|
||||
|
||||
#endif /* JAHUPDATE_H */
|
||||
@@ -8,13 +8,28 @@ class JAHControl;
|
||||
|
||||
class JAHVirtualNode {
|
||||
public:
|
||||
JAHVirtualNode();
|
||||
JAHVirtualNode(const char*);
|
||||
|
||||
virtual void updateNode();
|
||||
virtual void message(JAHControl&);
|
||||
virtual void message(JAHControl&) {}
|
||||
virtual void onFrame();
|
||||
virtual void onCurrentNodeFrame();
|
||||
virtual void propertyEvent(JAH_P_Event, u32);
|
||||
virtual void propertyEvent(JAH_P_Event, uintptr_t);
|
||||
virtual void nodeEvent(JAH_N_Event);
|
||||
virtual void virtualMessage(JAHControl&);
|
||||
|
||||
void callAllVirtualMessages(JAHControl&);
|
||||
JAHioNode* getMaster();
|
||||
void framework();
|
||||
void currentFramework();
|
||||
void listenVirtualPropertyEvent(JAH_P_Event, uintptr_t);
|
||||
void listenVirtualNodeEvent(JAH_N_Event);
|
||||
void setVirNodeName(const char*);
|
||||
|
||||
JSUTree<JAHVirtualNode>* getVirTree() { return &mTree; }
|
||||
static u32 getVirNodeNum() { return smVirNodeNum; }
|
||||
|
||||
static u32 smVirNodeNum;
|
||||
|
||||
/* 0x04 */ JSUTree<JAHVirtualNode> mTree;
|
||||
/* 0x20 */ char mName[32];
|
||||
|
||||
@@ -1,22 +1,42 @@
|
||||
#ifndef JAHIOMESSAGE_H
|
||||
#define JAHIOMESSAGE_H
|
||||
|
||||
#include <JSystem/JHostIO/JORMContext.h>
|
||||
#include <types.h>
|
||||
|
||||
class JAHioNode;
|
||||
class JORMContext;
|
||||
class JAHControl;
|
||||
|
||||
class JAHControl {
|
||||
public:
|
||||
JAHControl(JORMContext*, JAHioNode*);
|
||||
void returnY(u16);
|
||||
void indent(s8);
|
||||
void makeComment(const char*, u32, u8, u32);
|
||||
|
||||
void makeComment(const char*, u32, u8, u32);
|
||||
void makeButtonL(const char*, u32, u16, u32);
|
||||
void makeCommentL(const char*, u32, u16, u32);
|
||||
void endComboBox();
|
||||
void startComboBoxL(const char*, s32*, u16, u16, u32);
|
||||
void makeSlider(const char*, s32*, s32, s32, u32);
|
||||
void makeSlider(const char*, s16*, s16, s16, u32);
|
||||
void makeSlider(const char*, f32*, f32, f32, u32);
|
||||
void makeButton(const char*, u32, u8, u32);
|
||||
void endRadioButton();
|
||||
void makeRadioButtonItem(const char*, u8);
|
||||
void startRadioButton(const char*, u8*, u8, u32);
|
||||
void makeCheckBox(const char*, u8*, u8, bool, u32);
|
||||
void makeSlider(const char*, u8*, u8, u8, u32);
|
||||
void makeComboBoxItem(const char*, u8);
|
||||
void makeComboBoxItem(const char*, s32);
|
||||
void startComboBox(const char*, u8*, u8, u32);
|
||||
|
||||
static u16 getComboWidth(u8 itemNo) { return smComboWidth[itemNo]; }
|
||||
static u16 getLineHeight() { return smLineHeight; }
|
||||
static u16 getContWidth() { return smContWidth; }
|
||||
static u16 getIntervalX() { return smIntX; }
|
||||
static u16 getNameWidth() { return smNameWidth; }
|
||||
static u32 getContWidth() { return smContWidth; }
|
||||
static u32 getIntervalX() { return smIntX; }
|
||||
static u32 getNameWidth() { return smNameWidth; }
|
||||
|
||||
static u16 smButtonWidth[];
|
||||
static u16 smCommentWidth[];
|
||||
@@ -34,9 +54,7 @@ public:
|
||||
u16 getY() { return mY; }
|
||||
JORMContext* getContext() { return mContext; }
|
||||
|
||||
void tabX(u16 param_1) {
|
||||
mX += param_1 + smIntX;
|
||||
}
|
||||
void tabX(u16 param_1) { mX += smIntX + param_1; }
|
||||
void returnYDirectSize(u16 param_1) {
|
||||
mY += param_1;
|
||||
mX = smXLeft + field_0x4 * smIndentSize;
|
||||
@@ -49,4 +67,164 @@ public:
|
||||
/* 0x0C */ JAHioNode* mNode;
|
||||
};
|
||||
|
||||
// There's a funky dependency loop between JAHControl and JAHContTemplate, which must be resolved
|
||||
// THIS way, as makeSlider etc functions must be defined NOT out-of-line for their string literal
|
||||
// symbols to get the correct mangling.
|
||||
|
||||
class JAHContTemplate {
|
||||
public:
|
||||
template <class T>
|
||||
static void startComboBox(JAHControl* param_1, const char* param_2, T* param_3, u16 param_4,
|
||||
u16 param_5, u32 param_6) {
|
||||
if (param_2) {
|
||||
param_1->getContext()->genLabel(param_2, 0, param_6, NULL, param_1->getX(),
|
||||
param_1->getY(), param_4, param_1->getLineHeight());
|
||||
param_1->tabX(param_4);
|
||||
}
|
||||
|
||||
param_1->getContext()->startComboBox(param_2, param_3, param_6, NULL, param_1->getX(),
|
||||
param_1->getY() - 7, param_5,
|
||||
param_1->getLineHeight());
|
||||
param_1->tabX(param_5);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
static void makeSlider(JAHControl* param_1, const char* param_2, T* param_3, T param_4,
|
||||
T param_5, u32 param_6) {
|
||||
if (param_2) {
|
||||
param_1->getContext()->genLabel(param_2, 0, param_6, NULL, param_1->getX(),
|
||||
param_1->getY(), param_1->getNameWidth(),
|
||||
param_1->getLineHeight());
|
||||
}
|
||||
|
||||
param_1->getContext()->genSlider(
|
||||
"---", param_3, param_4, param_5, param_6, NULL,
|
||||
(u32)param_1->getX() + param_1->getNameWidth() + param_1->getIntervalX(),
|
||||
param_1->getY() - 3, param_1->getContWidth(), param_1->getLineHeight());
|
||||
param_1->returnY(1);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
static void startRadioButton(JAHControl* param_1, const char* param_2, T* param_3, T param_4,
|
||||
u32 param_5) {
|
||||
if (param_2) {
|
||||
param_1->getContext()->genLabel(param_2, 0, param_5, NULL, param_1->getX(),
|
||||
param_1->getY(), param_1->getNameWidth() + 48,
|
||||
param_1->getLineHeight());
|
||||
}
|
||||
param_1->getContext()->startRadioButton(
|
||||
param_2, param_3, param_5, NULL,
|
||||
(u32)param_1->getX() + param_1->getNameWidth() + param_1->getIntervalX() + 48,
|
||||
param_1->getY(), param_1->getContWidth() + 250, param_4 * 18);
|
||||
|
||||
param_1->returnYDirectSize(param_4 * 18);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
static void makeCheckBox(JAHControl* param_1, const char* param_2, T* param_3, T param_4,
|
||||
bool param_5, u32 param_6) {
|
||||
if (!param_5) {
|
||||
param_1->getContext()->genCheckBox(param_2, param_3, param_4, param_6, NULL,
|
||||
param_1->getX(), param_1->getY(), 1000,
|
||||
param_1->getLineHeight());
|
||||
} else {
|
||||
param_1->getContext()->genCheckBox(param_2, param_3, param_4, param_6, NULL,
|
||||
param_1->getX() + param_1->getNameWidth() +
|
||||
param_1->getIntervalX() + 52,
|
||||
param_1->getY(), 1000, param_1->getLineHeight());
|
||||
}
|
||||
param_1->returnY(1);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
static void startComboBox(JAHControl* param_1, const char* param_2, T* param_3, T param_4,
|
||||
u32 param_5) {
|
||||
if (param_2) {
|
||||
param_1->getContext()->genLabel(param_2, 0, param_5, NULL, param_1->getX(),
|
||||
param_1->getY(), param_1->getNameWidth() + 48,
|
||||
param_1->getLineHeight());
|
||||
}
|
||||
|
||||
param_1->getContext()->startComboBox(
|
||||
param_2, param_3, param_5, NULL,
|
||||
param_1->getX() + param_1->getNameWidth() + param_1->getIntervalX() + 48,
|
||||
param_1->getY() - 7, param_1->getComboWidth(param_4), param_1->getLineHeight());
|
||||
}
|
||||
};
|
||||
|
||||
inline void JAHControl::makeButtonL(const char* param_1, u32 param_2, u16 param_3, u32 param_4) {
|
||||
mContext->genButton(param_1, param_2, param_4, NULL, mX, mY - 5, param_3, smLineHeight);
|
||||
tabX(param_3);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeCommentL(const char* param_1, u32 param_2, u16 param_3, u32 param_4) {
|
||||
mContext->genLabel(param_1, param_2, param_4, NULL, mX, mY, param_3, smLineHeight);
|
||||
tabX(param_3);
|
||||
}
|
||||
|
||||
inline void JAHControl::endComboBox() {
|
||||
mContext->endComboBox();
|
||||
}
|
||||
|
||||
inline void JAHControl::startComboBoxL(const char* param_1, s32* param_2, u16 param_3, u16 param_4,
|
||||
u32 param_5) {
|
||||
JAHContTemplate::startComboBox(this, param_1, param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeSlider(const char* param_1, s32* param_2, s32 param_3, s32 param_4,
|
||||
u32 param_5) {
|
||||
JAHContTemplate::makeSlider(this, param_1, param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeSlider(const char* param_1, s16* param_2, s16 param_3, s16 param_4,
|
||||
u32 param_5) {
|
||||
JAHContTemplate::makeSlider(this, param_1, param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeSlider(const char* param_1, f32* param_2, f32 param_3, f32 param_4,
|
||||
u32 param_5) {
|
||||
JAHContTemplate::makeSlider(this, param_1, param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeSlider(const char* param_1, u8* param_2, u8 param_3, u8 param_4,
|
||||
u32 param_5) {
|
||||
JAHContTemplate::makeSlider(this, param_1, param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeButton(const char* param_1, u32 param_2, u8 param_3, u32 param_4) {
|
||||
mContext->genButton(param_1, param_2, param_4, NULL, mX, mY - 5, smButtonWidth[param_3],
|
||||
smLineHeight);
|
||||
returnY(1);
|
||||
}
|
||||
|
||||
inline void JAHControl::endRadioButton() {
|
||||
mContext->endRadioButton();
|
||||
}
|
||||
|
||||
inline void JAHControl::makeRadioButtonItem(const char* param_1, u8 param_2) {
|
||||
mContext->genRadioButtonItem(param_1, param_2, 0, -1, -1, 128, 16);
|
||||
}
|
||||
|
||||
inline void JAHControl::startRadioButton(const char* param_1, u8* param_2, u8 param_3,
|
||||
u32 param_4) {
|
||||
JAHContTemplate::startRadioButton(this, param_1, param_2, param_3, param_4);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeCheckBox(const char* param_1, u8* param_2, u8 param_3, bool param_4,
|
||||
u32 param_5) {
|
||||
JAHContTemplate::makeCheckBox(this, param_1, param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeComboBoxItem(const char* label, u8 itemNo) {
|
||||
makeComboBoxItem(label, (s32)itemNo);
|
||||
}
|
||||
|
||||
inline void JAHControl::makeComboBoxItem(const char* label, s32 itemNo) {
|
||||
mContext->genComboBoxItem(label, itemNo);
|
||||
}
|
||||
|
||||
inline void JAHControl::startComboBox(const char* label, u8* param_2, u8 param_3, u32 param_4) {
|
||||
JAHContTemplate::startComboBox(this, label, param_2, param_3, param_4);
|
||||
}
|
||||
|
||||
#endif /* JAHIOMESSAGE_H */
|
||||
|
||||
@@ -31,7 +31,7 @@ public:
|
||||
/* vt[0C] */ virtual s32 getNodeType() { return 0; }
|
||||
/* vt[0D] */ virtual u32 getNodeKind() const;
|
||||
/* vt[0E] */ virtual u32 getNodeIcon() const { return 0; }
|
||||
/* vt[0F] */ virtual void propertyEvent(JAH_P_Event, u32) {}
|
||||
/* vt[0F] */ virtual void propertyEvent(JAH_P_Event, uintptr_t) {}
|
||||
/* vt[10] */ virtual void nodeEvent(JAH_N_Event) {}
|
||||
void updateNode();
|
||||
void setNodeName(const char*);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef JASDSPINTERFACE_H
|
||||
#define JASDSPINTERFACE_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <types.h>
|
||||
|
||||
/**
|
||||
|
||||
@@ -193,7 +193,11 @@ struct JAUSoundNameTable : public JASGlobalInstance<JAUSoundNameTable> {
|
||||
JAUSoundNameTable(bool param_0) : JASGlobalInstance<JAUSoundNameTable>(param_0) {
|
||||
}
|
||||
~JAUSoundNameTable() {}
|
||||
int getNumGroups_inSection(u8) const;
|
||||
int getNumItems_inGroup(u8, u8) const;
|
||||
void init(void const*);
|
||||
const char* getName(JAISoundID) const;
|
||||
const char* getGroupName(JAISoundID) const;
|
||||
|
||||
JAUSoundTable_<JAUSoundNameTableRoot,JAUSoundNameTableSection,JAUSoundNameTableGroup,void> field_0x0;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef JOREVENT_H
|
||||
#define JOREVENT_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
class JORReflexible;
|
||||
|
||||
struct JOREvent {};
|
||||
|
||||
struct JORPropertyEvent : JOREvent {
|
||||
enum EKind {
|
||||
EKind_HasListener = (1 << 30),
|
||||
EKind_ValueID = (1 << 29),
|
||||
EKind_FloatValue = (1 << 9),
|
||||
};
|
||||
|
||||
/* 0x00 */ u8 field_0x0[0x4 - 0x0];
|
||||
/* 0x04 */ u32 type;
|
||||
/* 0x08 */ u32 kind;
|
||||
/* 0x0C */ char* id; // id?
|
||||
/* 0x10 */ JORReflexible* field_0x10; // ?
|
||||
/* 0x14 */ u32 field_0x14;
|
||||
union {
|
||||
u32 U32;
|
||||
u16 U16[2];
|
||||
}
|
||||
/* 0x18 */ field_0x18;
|
||||
};
|
||||
|
||||
struct JORGenEvent : JOREvent {};
|
||||
|
||||
struct JORNodeEvent : JOREvent {
|
||||
/* 0x00 */ u32 field_0x0;
|
||||
};
|
||||
|
||||
#endif /* JOREVENT_H */
|
||||
@@ -18,7 +18,7 @@ public:
|
||||
/* 0x08 */ u32 m_fileAttribute;
|
||||
/* 0x0C */ u32 m_lowDateTime;
|
||||
/* 0x10 */ u32 m_highDateTime;
|
||||
/* 0x14 */ char* m_filename;
|
||||
/* 0x14 */ char m_filename[];
|
||||
};
|
||||
|
||||
class JORFile {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#endif
|
||||
#include <stdint.h>
|
||||
#include <global.h>
|
||||
#include "JSystem/JHostIO/JORReflexible.h"
|
||||
#include "JSystem/JHostIO/JOREvent.h"
|
||||
#include "JSystem/JSupport/JSUMemoryStream.h"
|
||||
|
||||
#define MCTX_MSG_RESET 0
|
||||
@@ -195,9 +195,7 @@ public:
|
||||
void startUpdateNode(JORReflexible* obj) { putNode(obj); }
|
||||
|
||||
void genNodeSub(const char* label, JORReflexible* i_node, u32, u32);
|
||||
void putNode(JORReflexible* obj) {
|
||||
mOutputStream << (uintptr_t)obj;
|
||||
}
|
||||
void putNode(JORReflexible* obj) { mOutputStream << (uintptr_t)obj; }
|
||||
void invalidNode(JORReflexible* i_node, u32);
|
||||
|
||||
void genControl(u32 type, u32 kind, const char* label, u32 style, u32 id,
|
||||
@@ -222,6 +220,10 @@ public:
|
||||
u16 posX = -1, u16 posY = -1, u16 width = JORM_DEFAULT_WIDTH,
|
||||
u16 height = JORM_DEFAULT_HEIGHT);
|
||||
|
||||
void updateButton(u32 param_1, u32 param_2, u32 param_3) {
|
||||
updateControl(param_1, param_2, param_3);
|
||||
}
|
||||
|
||||
void genLabel(const char* label, u32 id, u32 style = 0, JOREventListener* pListener = NULL,
|
||||
u16 posX = -1, u16 posY = -1, u16 width = JORM_DEFAULT_WIDTH,
|
||||
u16 height = JORM_DEFAULT_HEIGHT);
|
||||
@@ -271,6 +273,7 @@ public:
|
||||
DEFINE_START_COMBO_BOX_ID(s32, JORPropertyEvent::EKind_ValueID)
|
||||
|
||||
DEFINE_UPDATE_COMBO_BOX(u8)
|
||||
DEFINE_UPDATE_COMBO_BOX(s32)
|
||||
|
||||
DEFINE_UPDATE_COMBO_BOX_ID(s32)
|
||||
|
||||
@@ -280,6 +283,16 @@ public:
|
||||
genSelectorItemSub(label, itemNo, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
void editComboBoxItem(u32 param_0, u32 param_1, const char* param_2, s32 param_3, u32 param_4);
|
||||
|
||||
void addComboBoxItem(u32 param_1, s32* param_2, const char* param_3, s32 param_4, u32 param_5) {
|
||||
editComboBoxItem(param_1, (uintptr_t)param_2, param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
void removeComboBoxItem(u32 param_1, s32* param_2, u32 param_3) {
|
||||
editComboBoxItem(param_1, (uintptr_t)param_2, NULL, 0, param_3);
|
||||
}
|
||||
|
||||
/**
|
||||
* === RADIO BUTTON ===
|
||||
*/
|
||||
@@ -314,8 +327,6 @@ public:
|
||||
updateSelectorSub(mode, (uintptr_t)pSrc, *pSrc, param_3);
|
||||
}
|
||||
|
||||
void editComboBoxItem(u32 param_0, u32 param_1, const char* param_2, s32 param_3, u32 param_4);
|
||||
|
||||
void openMessageBox(void* param_0, u32 style, const char* message, const char* title);
|
||||
|
||||
/* 0x00000 */ u8 mBuffer[0x10000];
|
||||
|
||||
@@ -2,36 +2,12 @@
|
||||
#define JORREFLEXIBLE_H
|
||||
|
||||
#include <types.h>
|
||||
#include "JSystem/JHostIO/JORServer.h"
|
||||
|
||||
class JORReflexible;
|
||||
|
||||
struct JOREvent {};
|
||||
|
||||
struct JORPropertyEvent : JOREvent {
|
||||
enum EKind {
|
||||
EKind_HasListener = (1 << 30),
|
||||
EKind_ValueID = (1 << 29),
|
||||
EKind_FloatValue = (1 << 9),
|
||||
};
|
||||
|
||||
/* 0x00 */ u8 field_0x0[0x4 - 0x0];
|
||||
/* 0x04 */ u32 type;
|
||||
/* 0x08 */ u32 kind;
|
||||
/* 0x0C */ char* id; // id?
|
||||
/* 0x10 */ JORReflexible* field_0x10; // ?
|
||||
/* 0x14 */ u32 field_0x14;
|
||||
union {
|
||||
u32 U32;
|
||||
u16 U16[2];
|
||||
}
|
||||
/* 0x18 */ field_0x18;
|
||||
};
|
||||
|
||||
struct JORGenEvent : JOREvent {};
|
||||
|
||||
struct JORNodeEvent : JOREvent {
|
||||
/* 0x00 */ u32 field_0x0;
|
||||
};
|
||||
struct JOREvent;
|
||||
struct JORPropertyEvent;
|
||||
struct JORGenEvent;
|
||||
struct JORNodeEvent;
|
||||
|
||||
class JORMContext;
|
||||
class JORServer;
|
||||
@@ -46,16 +22,11 @@ public:
|
||||
|
||||
class JORReflexible : public JOREventListener {
|
||||
public:
|
||||
static JORServer* getJORServer() { return JORServer::getInstance(); }
|
||||
|
||||
#if DEBUG
|
||||
JORReflexible() {}
|
||||
#if TARGET_PC
|
||||
static JORServer* getJORServer() {
|
||||
OSPanic(__FILE__, __LINE__, "getJORServer is unimplemented");
|
||||
}
|
||||
#else
|
||||
static JORServer* getJORServer();
|
||||
#endif
|
||||
|
||||
|
||||
virtual void listenPropertyEvent(const JORPropertyEvent*);
|
||||
virtual void listen(u32, const JOREvent*);
|
||||
virtual void genObjectInfo(const JORGenEvent*);
|
||||
|
||||
@@ -81,7 +81,7 @@ public:
|
||||
|
||||
bool setErrorFlag(bool errorFlag);
|
||||
bool isSubHeap(JKRHeap* heap) const;
|
||||
void* getAltAramStartAdr();
|
||||
static void* getAltAramStartAdr();
|
||||
|
||||
/* vt[03] */ virtual void callAllDisposer();
|
||||
/* vt[04] */ virtual u32 getHeapType() = 0;
|
||||
@@ -222,9 +222,13 @@ public:
|
||||
|
||||
#define JKRHEAP_NAME(heap, name) (heap)->setName(name)
|
||||
#define JKRHEAP_NAMEF(heap, name, ...) (heap)->setNamef(name, __VA_ARGS__)
|
||||
#define JKRHEAP_CURRENT_NAME(heap, name) JKRHEAP_NAME(mDoExt_getCurrentHeap(), name)
|
||||
#define JKRHEAP_CURRENT_NAMEF(heap, name, ...) JKRHEAP_NAMEF(mDoExt_getCurrentHeap(), name, __VA_ARGS__)
|
||||
#else
|
||||
#define JKRHEAP_NAME(heap, name)
|
||||
#define JKRHEAP_NAMEF(heap, name)
|
||||
#define JKRHEAP_NAMEF(heap, name, ...)
|
||||
#define JKRHEAP_CURRENT_NAME(heap, name)
|
||||
#define JKRHEAP_CURRENT_NAMEF(heap, name, ...)
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -64,9 +64,9 @@ struct data {
|
||||
};
|
||||
|
||||
struct TBlockData {
|
||||
u32 size;
|
||||
u16 scheme;
|
||||
u16 IDSize;
|
||||
BE(u32) size;
|
||||
BE(u16) scheme;
|
||||
BE(u16) IDSize;
|
||||
u32 field_0x8[0];
|
||||
};
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ struct TCreateObject : public JStudio::TCreateObject {
|
||||
createObject_JPA_PARTICLE_(JStudio::stb::data::TParse_TBlock_object const&,
|
||||
JStudio_JParticle::TCreateObject*);
|
||||
|
||||
const JStage::TSystem* get_pJSGSystem_() { return pJSGSystem_; }
|
||||
const JStage::TSystem* get_pJSGSystem_() const { return pJSGSystem_; }
|
||||
bool isPermit_onExit_notEnd() { return mPermit_onExit_notEnd; }
|
||||
|
||||
/* 0x0C */ JPAEmitterManager* pJPAEmitterManager_;
|
||||
@@ -35,107 +35,6 @@ struct TCreateObject : public JStudio::TCreateObject {
|
||||
/* 0x14 */ bool mPermit_onExit_notEnd;
|
||||
};
|
||||
|
||||
struct TAdaptor_particle : public JStudio::TAdaptor_particle {
|
||||
typedef JStudio::TObject_particle ObjectType;
|
||||
|
||||
struct TJPACallback_emitter_ : public JPAEmitterCallBack {
|
||||
TJPACallback_emitter_(TAdaptor_particle* param_1) {
|
||||
pThis_ = param_1;
|
||||
pOld = NULL;
|
||||
JUT_ASSERT(113, pThis_!=NULL);
|
||||
}
|
||||
virtual void execute(JPABaseEmitter*);
|
||||
virtual void executeAfter(JPABaseEmitter*);
|
||||
virtual void draw(JPABaseEmitter*);
|
||||
virtual void drawAfter(JPABaseEmitter*);
|
||||
|
||||
JPAEmitterCallBack* getOld() { return pOld; }
|
||||
void setOld(JPAEmitterCallBack* cb) { pOld = cb; }
|
||||
|
||||
/* 0x4 */ TAdaptor_particle* pThis_;
|
||||
/* 0x8 */ JPAEmitterCallBack* pOld;
|
||||
};
|
||||
|
||||
struct TJPAEmitter_stopDrawParticle_ {
|
||||
TJPAEmitter_stopDrawParticle_(JPABaseEmitter* emitter) : pJPAEmitter_(emitter) {}
|
||||
~TJPAEmitter_stopDrawParticle_() {
|
||||
if (pJPAEmitter_ != NULL) {
|
||||
pJPAEmitter_->stopDrawParticle();
|
||||
}
|
||||
}
|
||||
void set(JPABaseEmitter* emitter) { pJPAEmitter_ = emitter; }
|
||||
/* 0x0 */ JPABaseEmitter* pJPAEmitter_;
|
||||
};
|
||||
|
||||
TAdaptor_particle(JStudio_JParticle::TCreateObject*);
|
||||
void beginParticle_fadeIn_();
|
||||
void endParticle_fadeOut_(u32);
|
||||
|
||||
virtual ~TAdaptor_particle();
|
||||
virtual void adaptor_do_prepare();
|
||||
virtual void adaptor_do_end();
|
||||
virtual void adaptor_do_update(u32);
|
||||
virtual void adaptor_do_PARTICLE(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_BEGIN(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_BEGIN_FADE_IN(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_END(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_END_FADE_OUT(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_PARENT(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_REPEAT(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
|
||||
static bool state_isFade_(u8 param_1) {
|
||||
return param_1 == 1 || param_1 == 3;
|
||||
}
|
||||
|
||||
bool state_isFade_() {
|
||||
return state_isFade_(field_0x1b8);
|
||||
}
|
||||
|
||||
void beginParticle_fadeIn_(u32 param_1) {
|
||||
field_0x1c8 = param_1;
|
||||
beginParticle_fadeIn_();
|
||||
}
|
||||
|
||||
void beginParticle_() {
|
||||
beginParticle_fadeIn_(0);
|
||||
}
|
||||
|
||||
void endParticle_() {
|
||||
if (pJPAEmitter_ != NULL) {
|
||||
pJPAEmitter_->becomeInvalidEmitter();
|
||||
}
|
||||
}
|
||||
|
||||
void set_bPermit_onExit_notEnd_(bool param_1) { field_0x1b4 = param_1; }
|
||||
|
||||
/* 0x1A0 */ TCreateObject* pCreateObject_;
|
||||
/* 0x1A4 */ JPABaseEmitter* pJPAEmitter_;
|
||||
/* 0x1A8 */ TJPACallback_emitter_ field_0x1a8;
|
||||
/* 0x1B4 */ u8 field_0x1b4;
|
||||
/* 0x1B5 */ u8 field_0x1b5;
|
||||
/* 0x1B6 */ u8 field_0x1b6;
|
||||
/* 0x1B7 */ u8 field_0x1b7;
|
||||
/* 0x1B8 */ u8 field_0x1b8;
|
||||
/* 0x1BC */ u32 field_0x1bc;
|
||||
/* 0x1C0 */ u32 u32FadeTime_end;
|
||||
/* 0x1C4 */ u32 field_0x1c4;
|
||||
/* 0x1C8 */ u32 field_0x1c8;
|
||||
/* 0x1CC */ u32 field_0x1cc;
|
||||
/* 0x1D0 */ JStage::TObject* field_0x1d0;
|
||||
/* 0x1D4 */ u32 field_0x1d4;
|
||||
/* 0x1D8 */ u8 field_0x1d8;
|
||||
};
|
||||
|
||||
}; // namespace JStudio_JParticle
|
||||
|
||||
#endif /* JSTUDIO_JPARTICLE_CONTROL_H */
|
||||
|
||||
@@ -3,4 +3,100 @@
|
||||
|
||||
#include "JSystem/JStudio/JStudio_JParticle/control.h"
|
||||
|
||||
namespace JStudio_JParticle {
|
||||
|
||||
struct TAdaptor_particle : public JStudio::TAdaptor_particle {
|
||||
typedef JStudio::TObject_particle ObjectType;
|
||||
|
||||
struct TJPACallback_emitter_ : public JPAEmitterCallBack {
|
||||
TJPACallback_emitter_(TAdaptor_particle* param_1) {
|
||||
pThis_ = param_1;
|
||||
pOld = NULL;
|
||||
JUT_ASSERT(113, pThis_!=NULL);
|
||||
}
|
||||
virtual void execute(JPABaseEmitter*);
|
||||
virtual void executeAfter(JPABaseEmitter*);
|
||||
virtual void draw(JPABaseEmitter*);
|
||||
virtual void drawAfter(JPABaseEmitter*);
|
||||
|
||||
JPAEmitterCallBack* getOld() const { return pOld; }
|
||||
void setOld(JPAEmitterCallBack* cb) { pOld = cb; }
|
||||
|
||||
/* 0x4 */ TAdaptor_particle* pThis_;
|
||||
/* 0x8 */ JPAEmitterCallBack* pOld;
|
||||
};
|
||||
|
||||
TAdaptor_particle(JStudio_JParticle::TCreateObject*);
|
||||
void beginParticle_fadeIn_();
|
||||
void endParticle_fadeOut_(u32);
|
||||
|
||||
virtual ~TAdaptor_particle();
|
||||
virtual void adaptor_do_prepare();
|
||||
virtual void adaptor_do_end();
|
||||
virtual void adaptor_do_update(u32);
|
||||
virtual void adaptor_do_PARTICLE(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_BEGIN(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_BEGIN_FADE_IN(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_END(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_END_FADE_OUT(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_PARENT(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
virtual void adaptor_do_REPEAT(JStudio::data::TEOperationData, void const*, u32);
|
||||
virtual void adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData, void const*,
|
||||
u32);
|
||||
|
||||
static const char* toString_state_(int param_1);
|
||||
|
||||
static bool state_isFade_(u8 param_1) {
|
||||
return param_1 == 1 || param_1 == 3;
|
||||
}
|
||||
|
||||
bool state_isFade_() const {
|
||||
return state_isFade_(field_0x1b8);
|
||||
}
|
||||
|
||||
void beginParticle_fadeIn_(u32 param_1) {
|
||||
field_0x1c8 = param_1;
|
||||
beginParticle_fadeIn_();
|
||||
}
|
||||
|
||||
void beginParticle_() {
|
||||
beginParticle_fadeIn_(0);
|
||||
}
|
||||
|
||||
void endParticle_() {
|
||||
if (pJPAEmitter_ != NULL) {
|
||||
pJPAEmitter_->becomeInvalidEmitter();
|
||||
}
|
||||
}
|
||||
|
||||
void set_bPermit_onExit_notEnd_(bool param_1) { field_0x1b4 = param_1; }
|
||||
|
||||
/* 0x1A0 */ TCreateObject* pCreateObject_;
|
||||
/* 0x1A4 */ JPABaseEmitter* pJPAEmitter_;
|
||||
/* 0x1A8 */ TJPACallback_emitter_ field_0x1a8;
|
||||
/* 0x1B4 */ u8 field_0x1b4;
|
||||
/* 0x1B5 */ bool field_0x1b5;
|
||||
/* 0x1B6 */ bool field_0x1b6;
|
||||
/* 0x1B7 */ u8 field_0x1b7;
|
||||
/* 0x1B8 */ u8 field_0x1b8;
|
||||
/* 0x1BC */ u32 field_0x1bc;
|
||||
/* 0x1C0 */ u32 u32FadeTime_end_;
|
||||
/* 0x1C4 */ u32 u32FadeTime_current_;
|
||||
/* 0x1C8 */ u32 field_0x1c8;
|
||||
/* 0x1CC */ u32 field_0x1cc;
|
||||
/* 0x1D0 */ JStage::TObject* field_0x1d0;
|
||||
/* 0x1D4 */ u32 field_0x1d4;
|
||||
/* 0x1D8 */ bool field_0x1d8;
|
||||
};
|
||||
|
||||
} // namespace JStudio_JParticle
|
||||
|
||||
#endif /* OBJECT_PARTICLE_H */
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
#include "dusk/endian.h"
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-jsupport
|
||||
*
|
||||
*/
|
||||
* @ingroup jsystem-jsupport
|
||||
*
|
||||
*/
|
||||
class JSUInputStream : public JSUIosBase {
|
||||
public:
|
||||
JSUInputStream() {}
|
||||
@@ -93,13 +93,9 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
s32 read(bool& val) {
|
||||
return read(&val, sizeof(bool));
|
||||
}
|
||||
s32 read(bool& val) { return read(&val, sizeof(bool)); }
|
||||
|
||||
s32 read(u8& val) {
|
||||
return read(&val, sizeof(u8));
|
||||
}
|
||||
s32 read(u8& val) { return read(&val, sizeof(u8)); }
|
||||
|
||||
s32 read(u32& param_0) {
|
||||
auto ret = read(¶m_0, 4);
|
||||
@@ -114,9 +110,9 @@ public:
|
||||
|
||||
// move?
|
||||
/**
|
||||
* @ingroup jsystem-jsupport
|
||||
*
|
||||
*/
|
||||
* @ingroup jsystem-jsupport
|
||||
*
|
||||
*/
|
||||
template <typename T>
|
||||
T* JSUConvertOffsetToPtr(const void*, const void*);
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
#include "JSystem/JSupport/JSURandomOutputStream.h"
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-jsupport
|
||||
*
|
||||
*/
|
||||
* @ingroup jsystem-jsupport
|
||||
*
|
||||
*/
|
||||
class JSUMemoryInputStream : public JSURandomInputStream {
|
||||
public:
|
||||
JSUMemoryInputStream(const void* res, s32 size) { setBuffer(res, size); }
|
||||
@@ -19,9 +19,7 @@ public:
|
||||
s32 getLength() const;
|
||||
s32 getPosition() const;
|
||||
|
||||
void* getPointer() const {
|
||||
return (u8*)mBuffer + mPosition;
|
||||
}
|
||||
void* getPointer() const { return (u8*)mBuffer + mPosition; }
|
||||
|
||||
private:
|
||||
/* 0x08 */ const void* mBuffer;
|
||||
@@ -39,7 +37,7 @@ public:
|
||||
virtual ~JSUMemoryOutputStream() {}
|
||||
virtual s32 writeData(const void*, s32);
|
||||
virtual s32 getLength() const;
|
||||
virtual s32 getPosition() const;
|
||||
virtual s32 getPosition() const { return mPosition; }
|
||||
virtual s32 seek(s32, JSUStreamSeekFrom);
|
||||
virtual s32 getAvailable() const;
|
||||
virtual s32 seekPos(s32, JSUStreamSeekFrom);
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#include <JSystem/JAHostIO/JAHioMessage.h>
|
||||
|
||||
void dummy(JAHControl* cont) {
|
||||
cont->makeSlider(NULL, (f32*)NULL, (f32)0, (f32)0, 0);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#include <JSystem/JAHostIO/JAHioMessage.h>
|
||||
|
||||
void dummy(JAHControl* cont, u16 s) {
|
||||
cont->startRadioButton(NULL, (u8*)NULL, (u8)0, 0);
|
||||
cont->makeRadioButtonItem(NULL, (u8)0);
|
||||
cont->endRadioButton();
|
||||
cont->makeButton(NULL, 0, (u8)0, 0);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "JSystem/JAHostIO/JAHUTableEdit.h"
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
|
||||
static void dummy(JAHUSeBox* box, JAHControl* ctrl) {
|
||||
box->getId();
|
||||
ctrl->makeCheckBox(NULL, (u8*)NULL, 0, false, 0);
|
||||
box->~JAHUSeBox();
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
#include "JSystem/JAHNodeLib/JAHSoundPlayerNode.h"
|
||||
#include "JSystem/JAHostIO/JAHUpdate.h"
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JAudio2/JAISoundStarter.h"
|
||||
|
||||
void JAHPlayBox::onCurrentNodeFrame() {
|
||||
JAHSoundPlayerNode* master = (JAHSoundPlayerNode*)getMaster();
|
||||
if (!master)
|
||||
return;
|
||||
u8 b = master->getContMode() & 2;
|
||||
if (!b) {
|
||||
JAHUSeBox::onCurrentNodeFrame();
|
||||
} else if (unk48 != unk85) {
|
||||
if (unk48) {
|
||||
JAHUpdate::buttonOff(getMaster(), unk4C);
|
||||
JAHUpdate::buttonOn(getMaster(), unk50);
|
||||
} else {
|
||||
JAHUpdate::buttonOn(getMaster(), unk4C);
|
||||
JAHUpdate::buttonOff(getMaster(), unk50);
|
||||
}
|
||||
}
|
||||
|
||||
unk85 = unk48;
|
||||
}
|
||||
|
||||
u8 JAHSoundPlayerNode::getContMode() const {
|
||||
return unk7C;
|
||||
}
|
||||
|
||||
JAHSoundPlayerNode::JAHSoundPlayerNode() : JAHFrameNode("SOUND PLAYER"), unk122(16) {
|
||||
unk70 = 30;
|
||||
unk74 = 60;
|
||||
unk78 = 10;
|
||||
unk7C = 0;
|
||||
unk7D = 0;
|
||||
unk7E = 1;
|
||||
unk80 = 0;
|
||||
unk84 = 0;
|
||||
unk7F = 2;
|
||||
unk120 = 0;
|
||||
appendVirNode(&unk98);
|
||||
}
|
||||
|
||||
JAHPlayBox::JAHPlayBox() : JAHUSeBox(-1, NULL) {
|
||||
unk85 = 0;
|
||||
}
|
||||
|
||||
void JAHSoundPlayerNode::message(JAHControl& param_1) {
|
||||
param_1.returnY(1);
|
||||
param_1.makeCheckBox("ID順に連続再生する", &unk7C, 2, false, 0);
|
||||
param_1.returnY(1);
|
||||
param_1.makeComment("--連続再生モード設定--", 0, 5, 0);
|
||||
param_1.indent(1);
|
||||
param_1.makeSlider("最大再生時間(1=0.1sec)", &unk70, 0, 60000, 0);
|
||||
param_1.makeSlider("空白時間(1=0.1sec)", &unk78, 0, 6000, 0);
|
||||
param_1.returnY(1);
|
||||
param_1.startRadioButton("ダミーデータの挙動", &unk7E, 2, 0);
|
||||
param_1.makeRadioButtonItem("スキップする", 1);
|
||||
param_1.makeRadioButtonItem("再生する", 0);
|
||||
param_1.endRadioButton();
|
||||
param_1.startRadioButton("トリガーSEまたはBGM系の挙動", &unk7D, 2, 0);
|
||||
param_1.makeRadioButtonItem("フル再生", 0);
|
||||
param_1.makeRadioButtonItem("最大再生時間以上はフェードアウト", 1);
|
||||
param_1.endRadioButton();
|
||||
param_1.returnY(1);
|
||||
param_1.makeSlider("フェードアウト時間(単位:ゲームフレーム)", &unk74, 0, 3600, 0);
|
||||
}
|
||||
|
||||
void JAHSoundPlayerNode::onCurrentNodeFrame() {
|
||||
if (!(unk7C & 2))
|
||||
return;
|
||||
|
||||
u8 attr = unk122.getAttribute(unk98.getId());
|
||||
|
||||
switch (unk98.unk48) {
|
||||
case true:
|
||||
switch (unk7F) {
|
||||
case 0:
|
||||
if (!unk98.unk40) {
|
||||
unk90 = OSGetTime();
|
||||
unk84 = 0;
|
||||
unk7F = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (unk80 > unk70) {
|
||||
unk84 = 0;
|
||||
unk7F = 2;
|
||||
} else {
|
||||
JASGlobalInstance<JAISoundStarter>::getInstance()->startSound(unk98.getId(),
|
||||
&unk98.unk40, NULL);
|
||||
unk80 = OSTicksToMilliseconds(OSGetTime() - unk88) / 100;
|
||||
}
|
||||
|
||||
if (unk7D == 1) {
|
||||
if (unk80 > unk70) {
|
||||
unk98.unk40->stop(unk74);
|
||||
unk84 = 0;
|
||||
unk90 = OSGetTime();
|
||||
unk7F = 1;
|
||||
} else {
|
||||
unk80 = OSTicksToMilliseconds(OSGetTime() - unk88) / 100;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (!unk98.unk40) {
|
||||
unk7F = 2;
|
||||
unk90 = OSGetTime();
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (unk120) {
|
||||
if (unk84 <= unk78) {
|
||||
if (unk84 < 0)
|
||||
JASGlobalInstance<JAISoundStarter>::getInstance()->startSound(
|
||||
unk98.getId(), &unk98.unk40, NULL);
|
||||
|
||||
unk84 = OSTicksToMilliseconds(OSGetTime() - unk90) / 100;
|
||||
break;
|
||||
}
|
||||
|
||||
u32 id = unk122.getNextId(unk98.getId(), unk7E != 0 ? true : false);
|
||||
unk98.setId(id, true, this);
|
||||
}
|
||||
|
||||
JASGlobalInstance<JAISoundStarter>::getInstance()->startSound(unk98.getId(),
|
||||
&unk98.unk40, NULL);
|
||||
unk7F = 0;
|
||||
unk80 = 0;
|
||||
unk88 = OSGetTime();
|
||||
unk84 = 0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case false:
|
||||
if (unk120) {
|
||||
unk80 = 0;
|
||||
unk84 = 0;
|
||||
unk7F = 2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
unk120 = unk98.unk48;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JSupport/JSUMemoryStream.h"
|
||||
#include "JSystem/JSupport/JSUOutputStream.h"
|
||||
|
||||
static void dummy(JSUMemoryInputStream& in, JSUOutputStream& out, JAHControl& ctrl) {
|
||||
out << s16(0);
|
||||
s16 b;
|
||||
in >> b;
|
||||
ctrl.makeSlider("", (u8*)NULL, (u8)0, (u8)0, 0);
|
||||
u16 a;
|
||||
in >> a;
|
||||
in.getPointer();
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
#include "JSystem/JAHostIO/JAHUGlobal.h"
|
||||
|
||||
static void dummy(JSUInputStream& input) {
|
||||
JSUMemoryOutputStream stream(NULL, 0);
|
||||
stream.getPosition();
|
||||
stream << u8(0);
|
||||
u8 b;
|
||||
input >> b;
|
||||
u32 a;
|
||||
input >> a;
|
||||
JAHUDialog_OK("", "", "");
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
#include <JSystem/JAHostIO/JAHFrameNode.h>
|
||||
#include <JSystem/JAHostIO/JAHVirtualNode.h>
|
||||
#include <JSystem/JAHostIO/JAHioMessage.h>
|
||||
#include <JSystem/JAHostIO/JAHioMgr.h>
|
||||
|
||||
JAHFrameNode::JAHFrameNode(const char* name)
|
||||
: JAHioNode(name), mTree((JAHVirtualNode*)this), mFrameNodeLink(this) {}
|
||||
|
||||
void JAHFrameNode::genMessage(JORMContext* context) {
|
||||
JAHControl control(context, this);
|
||||
callAllVirtualMessages(control);
|
||||
message(control);
|
||||
if (JAHSingletonBase<JAHioMgr>::getIns()->getNodeSysType() == 0)
|
||||
generateTempChildren(context);
|
||||
else
|
||||
generateRealChildren(context);
|
||||
}
|
||||
|
||||
void JAHFrameNode::callAllVirtualMessages(JAHControl& control) {
|
||||
if (mTree.getNumChildren() == 0)
|
||||
return;
|
||||
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
|
||||
++iter)
|
||||
{
|
||||
iter->message(control);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHFrameNode::appendVirNode(JAHVirtualNode* node) {
|
||||
mTree.appendChild(node->getVirTree());
|
||||
}
|
||||
|
||||
void JAHFrameNode::listenPropertyEvent(const JORPropertyEvent* event) {
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
|
||||
++iter)
|
||||
{
|
||||
iter->listenVirtualPropertyEvent(JAH_P_EVENT0, (uintptr_t)event->id);
|
||||
}
|
||||
|
||||
JAHioNode::listenPropertyEvent(event);
|
||||
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
|
||||
++iter)
|
||||
{
|
||||
iter->listenVirtualPropertyEvent(JAH_P_EVENT1, (uintptr_t)event->id);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHFrameNode::listenNodeEvent(const JORNodeEvent* event) {
|
||||
JAHioNode::listenNodeEvent(event);
|
||||
if (event->field_0x0 == 3) {
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
|
||||
iter != mTree.getEndChild(); ++iter)
|
||||
iter->listenVirtualNodeEvent(JAH_N_EVENT0);
|
||||
} else if (event->field_0x0 == 4) {
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
|
||||
iter != mTree.getEndChild(); ++iter)
|
||||
iter->listenVirtualNodeEvent(JAH_N_EVENT1);
|
||||
} else if (event->field_0x0 == 5) {
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
|
||||
iter != mTree.getEndChild(); ++iter)
|
||||
iter->listenVirtualNodeEvent(JAH_N_EVENT2);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHFrameNode::framework() {
|
||||
onFrame();
|
||||
if (mTree.getNumChildren() != 0) {
|
||||
int i = 0; // unused?
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
|
||||
iter != mTree.getEndChild(); ++iter)
|
||||
{
|
||||
iter->framework();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JAHFrameNode::onFrame() {}
|
||||
|
||||
void JAHFrameNode::currentFramework() {
|
||||
onCurrentNodeFrame();
|
||||
if (mTree.getNumChildren() != 0) {
|
||||
int i = 0; // unused?
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild();
|
||||
iter != mTree.getEndChild(); ++iter)
|
||||
{
|
||||
iter->currentFramework();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JAHFrameNode::onCurrentNodeFrame() {}
|
||||
@@ -0,0 +1,172 @@
|
||||
#include <JSystem/JAHostIO/JAHUAsnData.h>
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JAudio2/JAUSoundTable.h"
|
||||
#include "JSystem/JHostIO/JORServer.h"
|
||||
|
||||
u8 JAHUAsn::getAttribute(u32 param_1) {
|
||||
u8 a = (param_1 & 0x800) >> 11;
|
||||
u8 b = (param_1 & 0xC0000000) >> 24;
|
||||
return a | (b << 4);
|
||||
}
|
||||
|
||||
u16 JAHUAsn::getSubNum(s32 param_1, s32 param_2) {
|
||||
JAUSoundNameTable* table = JASGlobalInstance<JAUSoundNameTable>::getInstance();
|
||||
int num = table->getNumItems_inGroup(param_1, param_2);
|
||||
int uVar2 = (u16)(num / unk0);
|
||||
if (num % unk0 > 0)
|
||||
uVar2++;
|
||||
return uVar2 <= 64 ? (u16)uVar2 : (u16)64;
|
||||
}
|
||||
|
||||
u16 JAHUAsn::getDataNum(s32 param_1, s32 param_2, s32 param_3) {
|
||||
JAUSoundNameTable* table = JASGlobalInstance<JAUSoundNameTable>::getInstance();
|
||||
int uVar1 = getSubNum(param_1, param_2);
|
||||
int iVar2 = table->getNumItems_inGroup(param_1, param_2);
|
||||
|
||||
if (iVar2 == 0)
|
||||
return 0;
|
||||
|
||||
if (iVar2 % unk0 == 0)
|
||||
return unk0;
|
||||
|
||||
if (param_3 == uVar1 - 1)
|
||||
return iVar2 % unk0;
|
||||
|
||||
return unk0;
|
||||
}
|
||||
|
||||
const char* JAHUAsn::getName(s32 param_1, s32 param_2, s32 param_3, s32 param_4) {
|
||||
JAUSoundNameTable* table = JASGlobalInstance<JAUSoundNameTable>::getInstance();
|
||||
return table->getName((param_1 << 24) + (param_2 << 16) + (param_4 + param_3 * unk0));
|
||||
}
|
||||
|
||||
u32 JAHUAsn::getDataId(s32 param_1, s32 param_2, s32 param_3, s32 param_4) {
|
||||
return (param_1 << 24) + (param_2 << 16) + (param_4 + param_3 * unk0);
|
||||
}
|
||||
|
||||
void JAHUAsn::createComboBoxCategory(JAHControl& control) {
|
||||
int totalItems = 0;
|
||||
|
||||
JAUSoundNameTable* table = JASGlobalInstance<JAUSoundNameTable>::getInstance();
|
||||
for (u32 i = 0; i < 3; ++i) {
|
||||
for (u32 j = 0; j < table->getNumGroups_inSection(i); ++j) {
|
||||
if (table->getNumItems_inGroup(i, j) > 0) {
|
||||
const char* name = table->getGroupName((i << 24) + (j << 16));
|
||||
control.getContext()->genComboBoxItem(name, totalItems);
|
||||
++totalItems;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JAHUAsn::createComboBoxSub(JAHControl& control, s32 param_2, s32 param_3) {
|
||||
int uVar1 = getSubNum(param_2, param_3);
|
||||
for (int i = 0; i < uVar1; ++i) {
|
||||
char buffer[4];
|
||||
sprintf(buffer, "%2x\0", i);
|
||||
control.getContext()->genComboBoxItem(buffer, i);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHUAsn::createComboBoxData(JAHControl& control, s32 param_2, s32 param_3, s32 param_4) {
|
||||
int uVar1 = getDataNum(param_2, param_3, param_4);
|
||||
for (int i = 0; i < uVar1; ++i) {
|
||||
const char* name = getName(param_2, param_3, param_4, i);
|
||||
control.getContext()->genComboBoxItem(name, i);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHUAsn::checkAndUpdateNameBox(s32* param_1, s32* param_2, s32* param_3, s32* param_4,
|
||||
s32 param_5, s32 param_6, s32 param_7, JORReflexible* param_8) {
|
||||
if (*param_1 != param_5 || *param_2 != param_6 || *param_3 != param_7) {
|
||||
if (*param_2 != param_6 || *param_1 != param_5) {
|
||||
*param_3 = 0;
|
||||
__updateNameBoxSub(*param_1, *param_2, param_3, param_8);
|
||||
}
|
||||
|
||||
if (*param_3 != param_7 || *param_2 != param_6 || *param_1 != param_5) {
|
||||
*param_4 = 0;
|
||||
__updateNameBoxData(*param_1, *param_2, *param_3, param_4, param_8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JAHUAsn::updateNameBoxAll(s32* param_1, s32* param_2, s32* param_3, s32* param_4,
|
||||
JORReflexible* param_5) {
|
||||
__updateNameBoxCategory(param_2, param_5);
|
||||
__updateNameBoxSub(*param_1, *param_2, param_3, param_5);
|
||||
__updateNameBoxData(*param_1, *param_2, *param_3, param_4, param_5);
|
||||
}
|
||||
|
||||
void JAHUAsn::__updateNameBoxCategory(s32* param_1, JORReflexible* param_2) {
|
||||
JORMContext* ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(param_2);
|
||||
ctx->updateComboBox(2, param_1, 0);
|
||||
ctx->endUpdateNode();
|
||||
releaseJORMContext(ctx);
|
||||
}
|
||||
|
||||
void JAHUAsn::__updateNameBoxSub(s32 param_1, s32 param_2, s32* param_3, JORReflexible* param_4) {
|
||||
JORMContext* ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(param_4);
|
||||
ctx->removeComboBoxItem(5, param_3, 0);
|
||||
int num = getSubNum(param_1, param_2);
|
||||
for (int i = 0; i < num; ++i) {
|
||||
char buf[4];
|
||||
sprintf(buf, "%2x\0", i);
|
||||
ctx->addComboBoxItem(1, param_3, buf, i, 0);
|
||||
}
|
||||
ctx->updateComboBox(2, param_3, 0);
|
||||
ctx->endUpdateNode();
|
||||
releaseJORMContext(ctx);
|
||||
}
|
||||
|
||||
void JAHUAsn::__updateNameBoxData(s32 param_1, s32 param_2, s32 param_3, s32* param_4,
|
||||
JORReflexible* param_5) {
|
||||
JORMContext* ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(param_5);
|
||||
ctx->removeComboBoxItem(5, param_4, 0);
|
||||
ctx->endUpdateNode();
|
||||
releaseJORMContext(ctx);
|
||||
|
||||
ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(param_5);
|
||||
int num = getDataNum(param_1, param_2, param_3);
|
||||
for (int i = 0; i < num; ++i) {
|
||||
ctx->addComboBoxItem(1, param_4, getName(param_1, param_2, param_3, i), i, 0);
|
||||
}
|
||||
ctx->updateComboBox(2, param_4, 0);
|
||||
ctx->endUpdateNode();
|
||||
releaseJORMContext(ctx);
|
||||
}
|
||||
|
||||
u32 JAHUAsn::__GetSubNo(s32 param_1) {
|
||||
return param_1 / unk0;
|
||||
}
|
||||
|
||||
u32 JAHUAsn::__GetDataNo(s32 param_1) {
|
||||
return param_1 % unk0;
|
||||
}
|
||||
|
||||
u8 JAHUAsn::getCategory(u32 param_1) {
|
||||
return (param_1 & 0xF0000) >> 0x10;
|
||||
}
|
||||
|
||||
u8 JAHUAsn::getSub(u32 param_1) {
|
||||
int perCat = getDataPerCat(param_1);
|
||||
return __GetSubNo(perCat);
|
||||
}
|
||||
|
||||
u16 JAHUAsn::getDataPerCat(u32 param_1) {
|
||||
return param_1;
|
||||
}
|
||||
|
||||
u16 JAHUAsn::getDataPerSub(u32 param_1) {
|
||||
u16 perCat = getDataPerCat(param_1);
|
||||
return __GetDataNo(perCat);
|
||||
}
|
||||
|
||||
u32 JAHUAsn::getNextId(u32 param_1, bool param_2) {
|
||||
JUT_ASSERT(490, 0L);
|
||||
return param_1;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#include <JSystem/JAHostIO/JAHioMessage.h>
|
||||
|
||||
void dummy(JAHControl* cont, u16 s) {
|
||||
cont->makeSlider(NULL, (s16*)NULL, (s16)0, (s16)0, 0);
|
||||
cont->makeSlider(NULL, (s32*)NULL, (s32)0, (s32)0, 0);
|
||||
cont->returnYDirectSize(s);
|
||||
cont->startRadioButton(NULL, (u8*)NULL, (u8)0, 0);
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
#include "JSystem/JAHostIO/JAHUTableEdit.h"
|
||||
#include "JSystem/JAHostIO/JAHUAsnData.h"
|
||||
#include "JSystem/JAHostIO/JAHUpdate.h"
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JAHostIO/JAHioUtil.h"
|
||||
#include "JSystem/JAudio2/JAISoundStarter.h"
|
||||
#include "JSystem/JAudio2/JAUSoundTable.h"
|
||||
|
||||
JAHUSeBox::JAHUSeBox(u32 param_1, u32* param_2) : JAHVirtualNode(NULL) {
|
||||
unk4C = getVirNodeNum() | 0x12000000;
|
||||
unk50 = getVirNodeNum() | 0x13000000;
|
||||
unk54 = getVirNodeNum() | 0x14000000;
|
||||
unk5C = param_2;
|
||||
mAsnCalc = NULL;
|
||||
|
||||
mAsnCalc = new JAHUAsn(0x10);
|
||||
JUT_ASSERT(611, mAsnCalc);
|
||||
|
||||
unk48 = false;
|
||||
if (param_1 == -1)
|
||||
unk58 = mAsnCalc->getDataId(0, 0, 0, 0);
|
||||
else
|
||||
unk58 = param_1;
|
||||
|
||||
unk84 = 0;
|
||||
}
|
||||
|
||||
void JAHUSeBox::trigPlayButton() {
|
||||
unk48 = true;
|
||||
JAHUpdate::buttonOff(getMaster(), unk4C);
|
||||
JAHUpdate::buttonOn(getMaster(), unk50);
|
||||
}
|
||||
|
||||
void JAHUSeBox::trigStopButton() {
|
||||
unk48 = false;
|
||||
JAHUpdate::buttonOn(getMaster(), unk4C);
|
||||
JAHUpdate::buttonOff(getMaster(), unk50);
|
||||
soundStop();
|
||||
}
|
||||
|
||||
void JAHUSeBox::soundStop() {
|
||||
if (unk40)
|
||||
unk40->stop();
|
||||
}
|
||||
|
||||
void JAHUSeBox::onCurrentNodeFrame() {
|
||||
if (unk48) {
|
||||
soundPlay();
|
||||
unk48 = false;
|
||||
}
|
||||
|
||||
if (unk44 && !unk40) {
|
||||
JAHUpdate::buttonOn(getMaster(), unk4C);
|
||||
JAHUpdate::buttonOff(getMaster(), unk50);
|
||||
} else if (!unk44 && unk40) {
|
||||
JAHUpdate::buttonOff(getMaster(), unk4C);
|
||||
JAHUpdate::buttonOn(getMaster(), unk50);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHUSeBox::soundPlay() {
|
||||
JAISoundStarter* starter = JASGlobalInstance<JAISoundStarter>::getInstance();
|
||||
if (starter) {
|
||||
starter->startSound(unk58, &unk40, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHUSeBox::message(JAHControl& control) {
|
||||
if (!unk84 && JASGlobalInstance<JAUSoundNameTable>::getInstance()) {
|
||||
if (unk58 == -1) {
|
||||
unk64 = 0;
|
||||
unk68 = 0;
|
||||
unk6C = 0;
|
||||
unk70 = 0;
|
||||
unk74 = 0;
|
||||
unk78 = 0;
|
||||
unk7C = 0;
|
||||
unk80 = 0;
|
||||
unk58 = 0;
|
||||
} else {
|
||||
unk64 = unk58 >> 24;
|
||||
unk68 = mAsnCalc->getCategory(unk58);
|
||||
unk6C = mAsnCalc->getSub(unk58);
|
||||
unk70 = mAsnCalc->getDataPerSub(unk58);
|
||||
unk74 = unk64;
|
||||
unk78 = unk68;
|
||||
unk7C = unk6C;
|
||||
unk80 = unk70;
|
||||
}
|
||||
|
||||
unk84 = true;
|
||||
}
|
||||
|
||||
control.startComboBoxL(NULL, &unk68, 0, 200, 0);
|
||||
mAsnCalc->createComboBoxCategory(control);
|
||||
control.endComboBox();
|
||||
control.startComboBoxL(NULL, &unk6C, 0, 0x2d, 0);
|
||||
mAsnCalc->createComboBoxSub(control, unk64, unk68);
|
||||
control.endComboBox();
|
||||
control.startComboBoxL(NULL, &unk70, 0, 200, 0);
|
||||
mAsnCalc->createComboBoxData(control, unk64, unk68, unk6C);
|
||||
control.endComboBox();
|
||||
control.makeCommentL(JAHioUtil::getString("%08x", unk58), unk54, 0x37, 0);
|
||||
control.makeButtonL(">", unk4C, 0x32, 0);
|
||||
control.makeButtonL("■", unk50, 0x32, 0x40000000);
|
||||
control.returnY(1);
|
||||
}
|
||||
|
||||
void JAHUSeBox::nodeEvent(JAH_N_Event) {}
|
||||
|
||||
void JAHUSeBox::propertyEvent(JAH_P_Event param_1, u32 param_2) {
|
||||
if (param_1 == 0) {
|
||||
unk74 = unk64;
|
||||
unk78 = unk68;
|
||||
unk7C = unk6C;
|
||||
unk80 = unk70;
|
||||
return;
|
||||
}
|
||||
|
||||
if (param_2 != unk4C && param_2 != unk50 &&
|
||||
((unk7C == unk6C && unk80 == unk70) || unk68 != unk78))
|
||||
{
|
||||
JAUSoundNameTable* table = JASGlobalInstance<JAUSoundNameTable>::getInstance();
|
||||
int groups = table->getNumGroups_inSection(0);
|
||||
if (unk68 >= groups) {
|
||||
groups += table->getNumGroups_inSection(1);
|
||||
if (unk68 < groups) {
|
||||
unk64 = 1;
|
||||
unk68 -= table->getNumGroups_inSection(0);
|
||||
} else {
|
||||
unk64 = 2;
|
||||
unk68 -= groups;
|
||||
}
|
||||
} else {
|
||||
unk64 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
mAsnCalc->checkAndUpdateNameBox(&unk64, &unk68, &unk6C, &unk70, unk74, unk78, unk7C,
|
||||
getMaster());
|
||||
if (checkNameSetChange()) {
|
||||
unk58 = mAsnCalc->getDataId(unk64, unk68, unk6C, unk70);
|
||||
if (unk5C != NULL)
|
||||
*unk5C = unk58;
|
||||
char buf[9];
|
||||
sprintf(buf, "%08x", unk58);
|
||||
JORMContext* ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(getMaster());
|
||||
ctx->updateLabel(2, unk54, buf);
|
||||
ctx->endUpdateNode();
|
||||
releaseJORMContext(ctx);
|
||||
}
|
||||
|
||||
if (param_2 == unk4C) {
|
||||
trigPlayButton();
|
||||
} else if (param_2 == unk50) {
|
||||
trigStopButton();
|
||||
}
|
||||
}
|
||||
|
||||
u8 JAHUSeBox::checkNameSetChange() {
|
||||
u8 iVar1 = 0;
|
||||
|
||||
if (unk74 != unk64)
|
||||
iVar1++;
|
||||
|
||||
if (unk78 != unk68)
|
||||
iVar1++;
|
||||
|
||||
if (unk7C != unk6C)
|
||||
iVar1++;
|
||||
|
||||
if (unk80 != unk70)
|
||||
iVar1++;
|
||||
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void JAHUSeBox::updateNameSet(JORReflexible* param_1) {
|
||||
mAsnCalc->updateNameBoxAll(&unk64, &unk68, &unk6C, &unk70, param_1);
|
||||
JORMContext* ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(param_1);
|
||||
ctx->updateLabel(2, unk54, JAHioUtil::getString("%08x", unk58));
|
||||
ctx->endUpdateNode();
|
||||
releaseJORMContext(ctx);
|
||||
}
|
||||
|
||||
void JAHUSeBox::setId(u32 param_1, bool param_2, JORReflexible* param_3) {
|
||||
unk58 = param_1;
|
||||
unk64 = unk58 >> 24;
|
||||
unk68 = (param_1 >> 16) & 0xff;
|
||||
unk6C = mAsnCalc->getSub(param_1);
|
||||
unk70 = mAsnCalc->getDataPerSub(param_1);
|
||||
if (param_2)
|
||||
updateNameSet(param_3);
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
#include <JSystem/JAHostIO/JAHVirtualNode.h>
|
||||
#include <JSystem/JUtility/JUTAssert.h>
|
||||
#include <cstring>
|
||||
|
||||
u32 JAHVirtualNode::smVirNodeNum;
|
||||
|
||||
void JAHVirtualNode::virtualMessage(JAHControl& control) {
|
||||
message(control);
|
||||
callAllVirtualMessages(control);
|
||||
}
|
||||
|
||||
void JAHVirtualNode::callAllVirtualMessages(JAHControl& control) {
|
||||
if (mTree.getNumChildren() == 0)
|
||||
return;
|
||||
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
|
||||
++iter)
|
||||
{
|
||||
iter->message(control);
|
||||
}
|
||||
}
|
||||
|
||||
JAHioNode* JAHVirtualNode::getMaster() {
|
||||
JSUTree<JAHVirtualNode>* it = mTree.getParent();
|
||||
while (it->getParent())
|
||||
it = it->getParent();
|
||||
return (JAHioNode*)it->getObject();
|
||||
}
|
||||
|
||||
void JAHVirtualNode::framework() {
|
||||
onFrame();
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = getVirTree()->getFirstChild();
|
||||
iter != getVirTree()->getEndChild(); ++iter)
|
||||
{
|
||||
iter->framework();
|
||||
}
|
||||
}
|
||||
|
||||
void JAHVirtualNode::onFrame() {}
|
||||
|
||||
void JAHVirtualNode::currentFramework() {
|
||||
onCurrentNodeFrame();
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = getVirTree()->getFirstChild();
|
||||
iter != getVirTree()->getEndChild(); ++iter)
|
||||
{
|
||||
iter->framework();
|
||||
}
|
||||
}
|
||||
|
||||
void JAHVirtualNode::onCurrentNodeFrame() {}
|
||||
|
||||
void JAHVirtualNode::listenVirtualPropertyEvent(JAH_P_Event param_1, uintptr_t param_2) {
|
||||
propertyEvent(param_1, param_2);
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
|
||||
++iter)
|
||||
{
|
||||
iter->listenVirtualPropertyEvent(param_1, param_2);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHVirtualNode::propertyEvent(JAH_P_Event, uintptr_t) {}
|
||||
|
||||
void JAHVirtualNode::listenVirtualNodeEvent(JAH_N_Event param_1) {
|
||||
nodeEvent(param_1);
|
||||
for (JSUTreeIterator<JAHVirtualNode> iter = mTree.getFirstChild(); iter != mTree.getEndChild();
|
||||
++iter)
|
||||
{
|
||||
iter->listenVirtualNodeEvent(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
void JAHVirtualNode::nodeEvent(JAH_N_Event) {}
|
||||
|
||||
void JAHVirtualNode::setVirNodeName(const char* name) {
|
||||
JUT_ASSERT(139, name);
|
||||
size_t size = strlen(name) + 1;
|
||||
// clang-format off
|
||||
JUT_ASSERT(141, size<32);
|
||||
// clang-format on
|
||||
strcpy(mName, name);
|
||||
}
|
||||
|
||||
JAHVirtualNode::JAHVirtualNode(const char* name) : mTree(this) {
|
||||
if (name)
|
||||
setVirNodeName(name);
|
||||
else
|
||||
setVirNodeName("no name");
|
||||
smVirNodeNum += 1;
|
||||
}
|
||||
|
||||
void JAHVirtualNode::updateNode() {
|
||||
getMaster()->updateNode();
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JAHostIO/JAHioNode.h"
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
u16 JAHControl::smButtonWidth[] = {20, 50, 100, 150, 300, 600};
|
||||
u16 JAHControl::smCommentWidth[] = {20, 50, 100, 200, 400, 800};
|
||||
u16 JAHControl::smComboWidth[] = { 50, 100, 150, 200, 300, 600};
|
||||
u16 JAHControl::smComboWidth[] = {50, 100, 150, 200, 300, 600};
|
||||
u16 JAHControl::smYTop = 5;
|
||||
u16 JAHControl::smXLeft = 5;
|
||||
u16 JAHControl::smIndentSize = 30;
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JAHostIO/JAHioMgr.h"
|
||||
#include "JSystem/JAHostIO/JAHFrameNode.h"
|
||||
#include "JSystem/JAHostIO/JAHioMgr.h"
|
||||
#include "JSystem/JHostIO/JORServer.h"
|
||||
|
||||
template <>
|
||||
JAHioMgr* JAHSingletonBase<JAHioMgr>::sInstance = NULL;
|
||||
|
||||
JAHioMgr::JAHioMgr() : field_0x4(0), field_0x8(0) {}
|
||||
|
||||
void JAHioMgr::init_OnGame() {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JAHostIO/JAHioNode.h"
|
||||
#include <cstring>
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JAHostIO/JAHioMgr.h"
|
||||
#include "JSystem/JAHostIO/JAHioNode.h"
|
||||
#include "JSystem/JHostIO/JORServer.h"
|
||||
#include <cstring>
|
||||
|
||||
JAHioNode* JAHioNode::smCurrentNode;
|
||||
|
||||
JAHioNode::JAHioNode(const char* name) : mTree(this) {
|
||||
mLastChild = NULL;
|
||||
@@ -86,7 +88,9 @@ void JAHioNode::generateTempChildren(JORMContext* mctx) {
|
||||
}
|
||||
}
|
||||
|
||||
u32 JAHioNode::getNodeKind() const { return 0; }
|
||||
u32 JAHioNode::getNodeKind() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
JAHioNode* JAHioNode::getParent() {
|
||||
if (mTree.getParent()) {
|
||||
@@ -96,9 +100,9 @@ JAHioNode* JAHioNode::getParent() {
|
||||
}
|
||||
|
||||
void JAHioNode::listenPropertyEvent(const JORPropertyEvent* event) {
|
||||
propertyEvent(JAH_P_EVENT0, (u32)event->id);
|
||||
propertyEvent(JAH_P_EVENT0, (uintptr_t)event->id);
|
||||
JORReflexible::listenPropertyEvent(event);
|
||||
propertyEvent(JAH_P_EVENT1, (u32)event->id);
|
||||
propertyEvent(JAH_P_EVENT1, (uintptr_t)event->id);
|
||||
}
|
||||
|
||||
void JAHioNode::listenNodeEvent(const JORNodeEvent* event) {
|
||||
|
||||
@@ -1,13 +1,23 @@
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JAHostIO/JAHioUtil.h"
|
||||
#include <cstdarg>
|
||||
#include <cstdio>
|
||||
#include "JSystem/JAHostIO/JAHUpdate.h"
|
||||
#include "JSystem/JAHostIO/JAHioUtil.h"
|
||||
#include "JSystem/JHostIO/JORFile.h"
|
||||
|
||||
char JAHioUtil::mStringBuffer[256];
|
||||
|
||||
JAHioNode* JAHUpdate::spNode;
|
||||
JORMContext* JAHUpdate::spMc;
|
||||
|
||||
static char* dummy(JORDir* dir) {
|
||||
return std::strrchr(dir->getFilename(), '\n');
|
||||
}
|
||||
|
||||
char* JAHioUtil::getString(const char* msg, ...) {
|
||||
va_list args;
|
||||
va_start(msg, args);
|
||||
va_start(args, msg);
|
||||
vsprintf(mStringBuffer, msg, args);
|
||||
va_end(args);
|
||||
return mStringBuffer;
|
||||
|
||||
@@ -214,7 +214,9 @@ void* JKRExpHeap::do_alloc(u32 size, int alignment) {
|
||||
#endif
|
||||
|
||||
#if TARGET_PC
|
||||
JUT_ASSERT_MSG_F(__LINE__, ptr != nullptr, "failed to alloc memory! (0x%x byte).\n", size);
|
||||
JUT_ASSERT_MSG_F(__LINE__, ptr != nullptr,
|
||||
"Failed to alloc memory! (%s) (0x%X bytes).\n Heap size: %u\n Used size: %u",
|
||||
this->getName(), size, getSize(), getTotalUsedSize());
|
||||
#else
|
||||
if (ptr == NULL) {
|
||||
JUTWarningConsole_f(":::cannot alloc memory (0x%x byte).\n", size);
|
||||
|
||||
@@ -68,7 +68,7 @@ JStudio::ctb::TObject* JStudio::ctb::TControl::getObject_index(u32 param_0) {
|
||||
JStudio::ctb::TFactory::~TFactory() {}
|
||||
|
||||
JStudio::ctb::TObject* JStudio::ctb::TFactory::create(JStudio::ctb::data::TParse_TBlock const& param_0) {
|
||||
switch(BSWAP16(param_0.get_scheme())) {
|
||||
switch(param_0.get_scheme()) {
|
||||
case 1:
|
||||
return JKR_NEW TObject_TxyzRy(param_0);
|
||||
default:
|
||||
|
||||
@@ -49,7 +49,7 @@ int JStudio::TControl::transformOnGet_setOrigin_TxyzRy(Vec const& param_0, f32 p
|
||||
int JStudio::TControl::transform_setOrigin_ctb(JStudio::ctb::TObject const& param_0) {
|
||||
switch (param_0.getScheme()) {
|
||||
case 1: {
|
||||
const f32* pfVar4 = (const f32*)param_0.getData();
|
||||
const BE(f32)* pfVar4 = (const BE(f32)*)param_0.getData();
|
||||
Vec local_144 = {0.0f, 0.0f, 0.0f};
|
||||
local_144.x = pfVar4[0];
|
||||
local_144.y = pfVar4[1];
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JStudio/JStudio_JParticle/control.h"
|
||||
#include "JSystem/JParticle/JPAEmitterManager.h"
|
||||
#include "JSystem/JGadget/pointer.h"
|
||||
#include "JSystem/JParticle/JPAEmitterManager.h"
|
||||
#include "JSystem/JStudio/JStudio_JParticle/control.h"
|
||||
#include "JSystem/JStudio/JStudio_JParticle/object-particle.h"
|
||||
|
||||
JStudio_JParticle::TCreateObject::~TCreateObject() {}
|
||||
|
||||
|
||||
@@ -7,8 +7,36 @@
|
||||
#include "JSystem/JStudio/JStudio_JParticle/object-particle.h"
|
||||
#include "JSystem/JStudio/JStudio_JStage/control.h"
|
||||
|
||||
JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(
|
||||
JStudio_JParticle::TCreateObject* param_1) :
|
||||
namespace JStudio_JParticle {
|
||||
namespace {
|
||||
|
||||
struct TJPAEmitter_stopDrawParticle_ {
|
||||
TJPAEmitter_stopDrawParticle_(JPABaseEmitter* emitter) : pJPAEmitter_(emitter) {}
|
||||
~TJPAEmitter_stopDrawParticle_() {
|
||||
if (pJPAEmitter_ != NULL) {
|
||||
pJPAEmitter_->stopDrawParticle();
|
||||
}
|
||||
}
|
||||
void set(JPABaseEmitter* emitter) { pJPAEmitter_ = emitter; }
|
||||
/* 0x0 */ JPABaseEmitter* pJPAEmitter_;
|
||||
};
|
||||
|
||||
class TToString_u32ID_ {
|
||||
public:
|
||||
TToString_u32ID_() {}
|
||||
|
||||
const char* operator()(u32 param_1) {
|
||||
snprintf(buf, sizeof(buf), "0x%08x", param_1);
|
||||
return buf;
|
||||
}
|
||||
|
||||
private:
|
||||
char buf[11];
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
TAdaptor_particle::TAdaptor_particle(TCreateObject* param_1) :
|
||||
pCreateObject_(param_1),
|
||||
pJPAEmitter_(NULL),
|
||||
field_0x1a8(this) {
|
||||
@@ -18,8 +46,8 @@ JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(
|
||||
field_0x1b7 = 0;
|
||||
field_0x1b8 = 0;
|
||||
field_0x1bc = -1;
|
||||
u32FadeTime_end = 0;
|
||||
field_0x1c4 = 0;
|
||||
u32FadeTime_end_ = 0;
|
||||
u32FadeTime_current_ = 0;
|
||||
field_0x1c8 = 0;
|
||||
field_0x1cc = 0;
|
||||
field_0x1d0 = NULL;
|
||||
@@ -28,7 +56,7 @@ JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(
|
||||
JUT_ASSERT(90, pCreateObject_!=NULL);
|
||||
}
|
||||
|
||||
JStudio_JParticle::TAdaptor_particle::~TAdaptor_particle() {
|
||||
TAdaptor_particle::~TAdaptor_particle() {
|
||||
if (pJPAEmitter_ != NULL) {
|
||||
if (field_0x1b6 == 0) {
|
||||
pCreateObject_->emitter_destroy(pJPAEmitter_);
|
||||
@@ -36,48 +64,65 @@ JStudio_JParticle::TAdaptor_particle::~TAdaptor_particle() {
|
||||
pJPAEmitter_->setEmitterCallBackPtr(field_0x1a8.getOld());
|
||||
pJPAEmitter_->quitImmortalEmitter();
|
||||
} else {
|
||||
JGADGET_WARNMSG(116, "not permitted : not-end on exit\n demo-object : " << adaptor_getID_string());
|
||||
pCreateObject_->emitter_destroy(pJPAEmitter_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_prepare() {
|
||||
static JStudio::TAdaptor::TSetVariableValue_immediate aoData[18] = {
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(0, 0.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(1, 0.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(2, 0.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(3, 0.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(4, 0.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(5, 0.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(6, 1.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(7, 1.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(8, 1.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(9, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(10, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(11, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(12, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(13, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(14, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(15, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(16, 255.0f),
|
||||
JStudio::TAdaptor::TSetVariableValue_immediate(),
|
||||
void TAdaptor_particle::adaptor_do_prepare() {
|
||||
static TSetVariableValue_immediate aoData[18] = {
|
||||
TSetVariableValue_immediate(0, 0.0f),
|
||||
TSetVariableValue_immediate(1, 0.0f),
|
||||
TSetVariableValue_immediate(2, 0.0f),
|
||||
TSetVariableValue_immediate(3, 0.0f),
|
||||
TSetVariableValue_immediate(4, 0.0f),
|
||||
TSetVariableValue_immediate(5, 0.0f),
|
||||
TSetVariableValue_immediate(6, 1.0f),
|
||||
TSetVariableValue_immediate(7, 1.0f),
|
||||
TSetVariableValue_immediate(8, 1.0f),
|
||||
TSetVariableValue_immediate(9, 255.0f),
|
||||
TSetVariableValue_immediate(10, 255.0f),
|
||||
TSetVariableValue_immediate(11, 255.0f),
|
||||
TSetVariableValue_immediate(12, 255.0f),
|
||||
TSetVariableValue_immediate(13, 255.0f),
|
||||
TSetVariableValue_immediate(14, 255.0f),
|
||||
TSetVariableValue_immediate(15, 255.0f),
|
||||
TSetVariableValue_immediate(16, 255.0f),
|
||||
TSetVariableValue_immediate(),
|
||||
};
|
||||
adaptor_setVariableValue_immediate(aoData);
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_end() {
|
||||
void TAdaptor_particle::adaptor_do_end() {
|
||||
#if DEBUG
|
||||
if (field_0x1b8 == 0) {
|
||||
JUT_ASSERT(160, pJPAEmitter_==NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
JUT_ASSERT(163, pJPAEmitter_!=NULL);
|
||||
|
||||
if (!state_isFade_()) {
|
||||
return;
|
||||
}
|
||||
|
||||
JUT_ASSERT(166, u32FadeTime_current_<u32FadeTime_end_);
|
||||
|
||||
JGADGET_WARNMSG(169, "particle not finished : " << toString_state_(field_0x1b8) << "\n demo-object : " << adaptor_getID_string());
|
||||
#endif
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(u32 param_1) {
|
||||
void TAdaptor_particle::adaptor_do_update(u32 param_1) {
|
||||
const JStudio::TObject* pObject = adaptor_getObject();
|
||||
JUT_ASSERT(179, pObject != NULL);
|
||||
JUT_ASSERT(179, pObject!=NULL);
|
||||
const JStudio::TControl* pControl = pObject->getControl();
|
||||
JUT_ASSERT(181, pControl != NULL);
|
||||
if (u32FadeTime_end != 0 && field_0x1c4 < u32FadeTime_end) {
|
||||
JUT_ASSERT(181, pControl!=NULL);
|
||||
if (u32FadeTime_end_ != 0 && u32FadeTime_current_ < u32FadeTime_end_) {
|
||||
JUT_ASSERT(187, state_isFade_());
|
||||
JUT_ASSERT(188, pJPAEmitter_ != NULL);
|
||||
field_0x1c4 += param_1;
|
||||
if (field_0x1c4 >= u32FadeTime_end) {
|
||||
JUT_ASSERT(188, pJPAEmitter_!=NULL);
|
||||
u32FadeTime_current_ += param_1;
|
||||
if (u32FadeTime_current_ >= u32FadeTime_end_) {
|
||||
switch (field_0x1b8) {
|
||||
case 1:
|
||||
field_0x1b8 = 2;
|
||||
@@ -87,9 +132,11 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(u32 param_1) {
|
||||
pJPAEmitter_ = NULL;
|
||||
field_0x1b8 = 0;
|
||||
break;
|
||||
default:
|
||||
JUT_ASSERT(203, false);
|
||||
}
|
||||
u32FadeTime_end = 0;
|
||||
field_0x1c4 = 0;
|
||||
u32FadeTime_end_ = 0;
|
||||
u32FadeTime_current_ = 0;
|
||||
}
|
||||
} else {
|
||||
JUT_ASSERT(210, !state_isFade_());
|
||||
@@ -99,139 +146,206 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(u32 param_1) {
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARTICLE(
|
||||
void TAdaptor_particle::adaptor_do_PARTICLE(
|
||||
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
|
||||
if (param_1 == JStudio::data::UNK_0x19) {
|
||||
JUT_ASSERT(232, uSize==4);
|
||||
JUT_ASSERT(233, pContent!=NULL);
|
||||
field_0x1bc = *(BE(u32)*)pContent;
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x19: {
|
||||
JUT_ASSERT(232, pContent!=NULL);
|
||||
JUT_ASSERT(233, uSize==4);
|
||||
u32 var_r29 = *(BE(u32)*)pContent;
|
||||
field_0x1bc = var_r29;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(241, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_BEGIN(JStudio::data::TEOperationData param_1,
|
||||
void TAdaptor_particle::adaptor_do_BEGIN(JStudio::data::TEOperationData param_1,
|
||||
const void* pContent, u32 uSize) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x1:
|
||||
JUT_ASSERT(253, uSize==0);
|
||||
beginParticle_();
|
||||
break;
|
||||
default:
|
||||
JGADGET_WARNMSG(259, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_BEGIN_FADE_IN(
|
||||
void TAdaptor_particle::adaptor_do_BEGIN_FADE_IN(
|
||||
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x2:
|
||||
case JStudio::data::UNK_0x2: {
|
||||
JUT_ASSERT(272, pContent!=NULL);
|
||||
JUT_ASSERT(273, uSize==4);
|
||||
beginParticle_fadeIn_(*(BE(f32)*)pContent);
|
||||
u32 var_r29 = *(BE(f32)*)pContent;
|
||||
beginParticle_fadeIn_(var_r29);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(282, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_END(JStudio::data::TEOperationData param_1,
|
||||
void TAdaptor_particle::adaptor_do_END(JStudio::data::TEOperationData param_1,
|
||||
const void* pContent, u32 uSize) {
|
||||
if (param_1 == JStudio::data::UNK_0x1) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x1:
|
||||
JUT_ASSERT(294, uSize==0);
|
||||
endParticle_();
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_END_FADE_OUT(
|
||||
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(336, pContent!=NULL);
|
||||
JUT_ASSERT(337, uSize==4);
|
||||
endParticle_fadeOut_(*(BE(f32)*)pContent);
|
||||
break;
|
||||
default:
|
||||
JGADGET_WARNMSG(300, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT(
|
||||
void TAdaptor_particle::adaptor_do_END_FADE_OUT(
|
||||
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x18:
|
||||
case JStudio::data::UNK_0x2: {
|
||||
JUT_ASSERT(313, pContent!=NULL);
|
||||
JUT_ASSERT(314, uSize==4);
|
||||
u32 var_r29 = *(BE(f32)*)pContent;
|
||||
endParticle_fadeOut_(var_r29);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(323, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void TAdaptor_particle::adaptor_do_PARENT(
|
||||
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x18: {
|
||||
JUT_ASSERT(336, pContent!=NULL);
|
||||
JUT_ASSERT(337, uSize>0);
|
||||
|
||||
const char* szID = (const char*)pContent;
|
||||
JGADGET_ASSERTWARN(339, szID[uSize-1]=='\0');
|
||||
|
||||
field_0x1d0 = NULL;
|
||||
const JStage::TSystem* pJSGSystem = pCreateObject_->get_pJSGSystem_();
|
||||
JUT_ASSERT(345, pJSGSystem!=NULL);
|
||||
JStage::TObject* pJSGObject;
|
||||
if (pJSGSystem->JSGFindObject(&pJSGObject, (const char*)pContent, JStage::OBJECT_UNDEFINED) == 0) {
|
||||
JUT_ASSERT(354, pJSGObject!=NULL);
|
||||
field_0x1d0 = pJSGObject;
|
||||
if (pJSGSystem->JSGFindObject(&pJSGObject, szID, JStage::OBJECT_UNDEFINED) != 0) {
|
||||
JGADGET_WARNMSG(351, "object not found as parent : " << szID << "\n demo-object : " << adaptor_getID_string());
|
||||
break;
|
||||
}
|
||||
|
||||
JUT_ASSERT(354, pJSGObject!=NULL);
|
||||
field_0x1d0 = pJSGObject;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(361, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_NODE(
|
||||
void TAdaptor_particle::adaptor_do_PARENT_NODE(
|
||||
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x18:
|
||||
if (field_0x1d0 != NULL) {
|
||||
JUT_ASSERT(380, pContent!=NULL);
|
||||
JUT_ASSERT(381, uSize==4);
|
||||
field_0x1d4 = field_0x1d0->JSGFindNodeID((const char*)pContent);
|
||||
if (field_0x1d4 == -1) {
|
||||
return;
|
||||
}
|
||||
case JStudio::data::UNK_0x18: {
|
||||
if (field_0x1d0 == NULL) {
|
||||
JGADGET_WARNMSG(377, "object not specified as parent\n demo-object : " << adaptor_getID_string());
|
||||
break;
|
||||
}
|
||||
break;
|
||||
JUT_ASSERT(380, pContent!=NULL);
|
||||
JUT_ASSERT(381, uSize>0);
|
||||
const char* szID = (const char*)pContent;
|
||||
JGADGET_ASSERTWARN(383, szID[uSize-1]=='\0');
|
||||
field_0x1d4 = field_0x1d0->JSGFindNodeID(szID);
|
||||
if (field_0x1d4 != -1) {
|
||||
return;
|
||||
} else {
|
||||
JGADGET_WARNMSG(388, "node not found about parent : " << szID << "\n demo-object : " << adaptor_getID_string());
|
||||
return;
|
||||
}
|
||||
}
|
||||
case JStudio::data::UNK_0x19:
|
||||
JUT_ASSERT(397, uSize==4);
|
||||
JUT_ASSERT(396, pContent!=NULL);
|
||||
JUT_ASSERT(396, uSize==4);
|
||||
JUT_ASSERT(397, pContent!=NULL);
|
||||
field_0x1d4 = *(BE(u32)*)pContent;
|
||||
break;
|
||||
default:
|
||||
JGADGET_WARNMSG(404, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData param_1,
|
||||
const char* TAdaptor_particle::toString_state_(int param_1) {
|
||||
static const char* const asz[] = {"none", "begin", "stable", "end"};
|
||||
return JGadget::toStringFromIndex(param_1, asz, ARRAY_SIZE(asz), "(undefined)");
|
||||
}
|
||||
|
||||
void TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData param_1,
|
||||
const void* pContent, u32 uSize) {
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x2: {
|
||||
JUT_ASSERT(417, uSize==4);
|
||||
JUT_ASSERT(418, pContent!=NULL);
|
||||
field_0x1d8 = *(BE(u32)*)pContent ? 1 : 0;
|
||||
u32 var_r29 = *(BE(u32)*)pContent;
|
||||
field_0x1d8 = var_r29 != 0;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(426, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData param_1,
|
||||
void TAdaptor_particle::adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData param_1,
|
||||
const void* pContent, u32 uSize) {
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x2: {
|
||||
JUT_ASSERT(439, uSize==4);
|
||||
JUT_ASSERT(439, pContent!=NULL);
|
||||
field_0x1cc = *(BE(u32)*)pContent;
|
||||
JUT_ASSERT(440, pContent!=NULL);
|
||||
u32 var_r29 = *(BE(u32)*)pContent;
|
||||
field_0x1cc = var_r29;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(447, "unknown data-type : " << param_1);
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_REPEAT(JStudio::data::TEOperationData param_1,
|
||||
void TAdaptor_particle::adaptor_do_REPEAT(JStudio::data::TEOperationData param_1,
|
||||
const void* pContent, u32 uSize) {
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x2: {
|
||||
JUT_ASSERT(460, uSize==4);
|
||||
JUT_ASSERT(461, pContent!=NULL);
|
||||
field_0x1b5 = *(BE(u32)*)pContent ? 1 : 0;
|
||||
u32 var_r29 = *(BE(u32)*)pContent;
|
||||
field_0x1b5 = var_r29 != 0;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(469, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData param_1,
|
||||
void TAdaptor_particle::adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData param_1,
|
||||
const void* pContent, u32 uSize) {
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(460, uSize==4);
|
||||
JUT_ASSERT(461, pContent!=NULL);
|
||||
field_0x1b6 = *(BE(u32)*)pContent ? 1 : 0;
|
||||
switch (param_1) {
|
||||
case JStudio::data::UNK_0x2: {
|
||||
JUT_ASSERT(482, uSize==4);
|
||||
JUT_ASSERT(483, pContent!=NULL);
|
||||
u32 var_r29 = *(BE(u32)*)pContent;
|
||||
field_0x1b6 = var_r29 != 0;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
JGADGET_WARNMSG(491, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmitter* pJPAEmitter) {
|
||||
void TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmitter* pJPAEmitter) {
|
||||
JUT_ASSERT(518, pJPAEmitter==pThis_->pJPAEmitter_);
|
||||
if (pJPAEmitter->isEnableDeleteEmitter()) {
|
||||
pThis_->pCreateObject_->emitter_destroy(pJPAEmitter);
|
||||
pThis_->pJPAEmitter_ = NULL;
|
||||
pThis_->field_0x1b8 = 0;
|
||||
pThis_->u32FadeTime_end = 0;
|
||||
pThis_->field_0x1c4 = 0;
|
||||
pThis_->u32FadeTime_end_ = 0;
|
||||
pThis_->u32FadeTime_current_ = 0;
|
||||
return;
|
||||
}
|
||||
const JStudio::TObject* pObject = pThis_->adaptor_getObject();
|
||||
@@ -258,34 +372,45 @@ JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmit
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
default:
|
||||
JUT_ASSERT(566, false);
|
||||
}
|
||||
pJPAEmitter->setGlobalTranslation(pVVar9->translation);
|
||||
int rotx = 65536.0 * (pVVar9->rotation.x / 360.0);
|
||||
int roty = 65536.0 * (pVVar9->rotation.y / 360.0);
|
||||
int rotz = 65536.0 * (pVVar9->rotation.z / 360.0);
|
||||
pJPAEmitter->setGlobalRotation(JGeometry::TVec3<s16>(rotx, roty, rotz));
|
||||
pJPAEmitter->setGlobalRotation(JGeometry::TVec3<s16>(
|
||||
65536.0 * (pVVar9->rotation.x / 360.0),
|
||||
65536.0 * (pVVar9->rotation.y / 360.0),
|
||||
65536.0 * (pVVar9->rotation.z / 360.0)
|
||||
));
|
||||
pJPAEmitter->setGlobalScale(pVVar9->scaling);
|
||||
} else {
|
||||
Mtx afStack_1f0;
|
||||
if (JStudio_JStage::transform_toGlobalFromLocal(afStack_1f0, VStack_19c, pThis_->field_0x1d0,
|
||||
pThis_->field_0x1d4) == 0)
|
||||
{
|
||||
JGADGET_WARNMSG(583, "can\'t transform about parent\n demo-object : " << pThis_->adaptor_getID_string());
|
||||
return;
|
||||
}
|
||||
pJPAEmitter->setGlobalSRTMatrix(afStack_1f0);
|
||||
}
|
||||
|
||||
f64 alpha = 1.0;
|
||||
u32 u32FadeTime_end = pThis_->u32FadeTime_end;
|
||||
f64 dVar16 = u32FadeTime_end;
|
||||
f64 dVar15 = pThis_->field_0x1c4;
|
||||
switch(pThis_->field_0x1b8) {
|
||||
u32 u32FadeTime_end = pThis_->u32FadeTime_end_;
|
||||
u32 u32FadeTime_current = pThis_->u32FadeTime_current_;
|
||||
f64 var_f30 = u32FadeTime_end;
|
||||
f64 var_f29 = u32FadeTime_current;
|
||||
switch (pThis_->field_0x1b8) {
|
||||
case 1:
|
||||
JUT_ASSERT(606, u32FadeTime_end>0);
|
||||
alpha = dVar15 / dVar16;
|
||||
alpha = var_f29 / var_f30;
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
JUT_ASSERT(611, u32FadeTime_end>0);
|
||||
alpha = (dVar16 - dVar15) / dVar16;
|
||||
alpha = (var_f30 - var_f29) / var_f30;
|
||||
break;
|
||||
default:
|
||||
JUT_ASSERT(619, false);
|
||||
}
|
||||
|
||||
u8 globalAlpha = 255;
|
||||
@@ -302,48 +427,53 @@ JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmit
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::executeAfter(JPABaseEmitter* pJPAEmitter) {
|
||||
void TAdaptor_particle::TJPACallback_emitter_::executeAfter(JPABaseEmitter* pJPAEmitter) {
|
||||
if (pOld != NULL) {
|
||||
pOld->executeAfter(pJPAEmitter);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::draw(JPABaseEmitter* pJPAEmitter) {
|
||||
void TAdaptor_particle::TJPACallback_emitter_::draw(JPABaseEmitter* pJPAEmitter) {
|
||||
if (pOld != NULL) {
|
||||
pOld->draw(pJPAEmitter);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::drawAfter(JPABaseEmitter* pJPAEmitter) {
|
||||
void TAdaptor_particle::TJPACallback_emitter_::drawAfter(JPABaseEmitter* pJPAEmitter) {
|
||||
if (pOld != NULL) {
|
||||
pOld->drawAfter(pJPAEmitter);
|
||||
}
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::beginParticle_fadeIn_() {
|
||||
void TAdaptor_particle::beginParticle_fadeIn_() {
|
||||
if (pJPAEmitter_ != NULL) {
|
||||
JGADGET_WARNMSG(686,
|
||||
"past emitter already exist\n demo-object : " << adaptor_getID_string() <<
|
||||
"\n begin prepare particle-ID : " << TToString_u32ID_()(field_0x1bc));
|
||||
pCreateObject_->emitter_destroy(pJPAEmitter_);
|
||||
}
|
||||
JPABaseEmitter* pEmitter = pCreateObject_->emitter_create(field_0x1bc);
|
||||
pJPAEmitter_ = pEmitter;
|
||||
if (pEmitter != NULL) {
|
||||
field_0x1a8.setOld(pEmitter->getEmitterCallBackPtr());
|
||||
pEmitter->setEmitterCallBackPtr(&field_0x1a8);
|
||||
pEmitter->becomeImmortalEmitter();
|
||||
field_0x1b7 = 1;
|
||||
field_0x1b8 = 1;
|
||||
if (field_0x1c8 == 0) {
|
||||
field_0x1b8 = 2;
|
||||
}
|
||||
u32FadeTime_end = field_0x1c8;
|
||||
field_0x1c4 = 0;
|
||||
if (pEmitter == NULL) {
|
||||
JGADGET_WARNMSG(696,
|
||||
"can\'t create emitter : " << TToString_u32ID_()(field_0x1bc) <<
|
||||
"\n demo-object : " << adaptor_getID_string());
|
||||
return;
|
||||
}
|
||||
|
||||
field_0x1a8.setOld(pEmitter->getEmitterCallBackPtr());
|
||||
pEmitter->setEmitterCallBackPtr(&field_0x1a8);
|
||||
pEmitter->becomeImmortalEmitter();
|
||||
field_0x1b7 = 1;
|
||||
field_0x1b8 = 1;
|
||||
if (field_0x1c8 == 0) {
|
||||
field_0x1b8 = 2;
|
||||
}
|
||||
u32FadeTime_end_ = field_0x1c8;
|
||||
u32FadeTime_current_ = 0;
|
||||
}
|
||||
|
||||
void JStudio_JParticle::TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
|
||||
void TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
|
||||
if (pJPAEmitter_ == NULL) {
|
||||
return;
|
||||
}
|
||||
@@ -351,14 +481,15 @@ void JStudio_JParticle::TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
|
||||
pCreateObject_->emitter_destroy(pJPAEmitter_);
|
||||
pJPAEmitter_ = NULL;
|
||||
field_0x1b8 = 0;
|
||||
u32FadeTime_end = 0;
|
||||
field_0x1c4 = 0;
|
||||
u32FadeTime_end_ = 0;
|
||||
u32FadeTime_current_ = 0;
|
||||
return;
|
||||
}
|
||||
u8 eState_old = field_0x1b8 & 0xff;
|
||||
field_0x1b8 = 3;
|
||||
if (field_0x1c4 == 0) {
|
||||
u32FadeTime_end = param_1;
|
||||
if (u32FadeTime_current_ == 0) {
|
||||
JUT_ASSERT(731, !state_isFade_(eState_old));
|
||||
u32FadeTime_end_ = param_1;
|
||||
return;
|
||||
}
|
||||
JUT_ASSERT(735, state_isFade_(eState_old));
|
||||
@@ -366,13 +497,17 @@ void JStudio_JParticle::TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
|
||||
|
||||
switch(eState_old) {
|
||||
case 1:
|
||||
u32Denominator = field_0x1c4;
|
||||
u32Denominator = u32FadeTime_current_;
|
||||
break;
|
||||
case 3:
|
||||
u32Denominator = u32FadeTime_end - field_0x1c4;
|
||||
u32Denominator = u32FadeTime_end_ - u32FadeTime_current_;
|
||||
break;
|
||||
default:
|
||||
JUT_ASSERT(791, false);
|
||||
}
|
||||
JUT_ASSERT(793, u32Denominator!=0);
|
||||
u32FadeTime_end = ((f64)param_1 * (f64)u32FadeTime_end) / u32Denominator;
|
||||
field_0x1c4 = u32FadeTime_end - param_1;
|
||||
u32FadeTime_end_ = ((f64)param_1 * (f64)u32FadeTime_end_) / u32Denominator;
|
||||
u32FadeTime_current_ = u32FadeTime_end_ - param_1;
|
||||
}
|
||||
|
||||
} // namespace JStudio_JParticle
|
||||
|
||||
@@ -10,7 +10,6 @@ using ::memcmp;
|
||||
using ::memchr;
|
||||
using ::memmove;
|
||||
|
||||
using ::strrchr;
|
||||
using ::strlen;
|
||||
using ::strncmp;
|
||||
using ::strcmp;
|
||||
@@ -25,6 +24,11 @@ using ::wcslen;
|
||||
inline char* strchr(char* str, int c) {
|
||||
return ::strchr(str, c);
|
||||
}
|
||||
|
||||
inline char* strrchr(char* str, int c) {
|
||||
return ::strrchr(str, c);
|
||||
}
|
||||
|
||||
}; // namespace std
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
#include <revolution/types.h>
|
||||
#include <revolution/esp.h>
|
||||
#include "global.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -188,15 +187,16 @@ typedef struct DVDGameTOC {
|
||||
|
||||
typedef struct DVDPartitionParams DVDPartitionParams;
|
||||
|
||||
#define ROUND_HACK(n, a) (((u32)(n) + (a)-1) & ~((a)-1))
|
||||
struct DVDPartitionParams {
|
||||
ESTicket ticket;
|
||||
u8 padding0[ROUND(sizeof(ESTicket), 32) - sizeof(ESTicket)];
|
||||
u8 padding0[ROUND_HACK(sizeof(ESTicket), 32) - sizeof(ESTicket)];
|
||||
ESTicketView ticketView;
|
||||
u8 padding1[ROUND(sizeof(ESTicketView), 32) - sizeof(ESTicketView)];
|
||||
u8 padding1[ROUND_HACK(sizeof(ESTicketView), 32) - sizeof(ESTicketView)];
|
||||
u32 numTmdBytes;
|
||||
u8 padding2[28];
|
||||
ESTitleMeta tmd;
|
||||
u8 padding3[ROUND(sizeof(ESTitleMeta), 32) - sizeof(ESTitleMeta)];
|
||||
u8 padding3[ROUND_HACK(sizeof(ESTitleMeta), 32) - sizeof(ESTitleMeta)];
|
||||
u32 numCertBytes;
|
||||
u8 padding4[28];
|
||||
u8 certificates[4096];
|
||||
@@ -204,6 +204,7 @@ struct DVDPartitionParams {
|
||||
u8 padding5[28];
|
||||
u8 h3Hash[98304];
|
||||
};
|
||||
#undef ROUND_HACK
|
||||
|
||||
typedef struct diRegVals {
|
||||
u32 ImmRegVal;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <revolution.h>
|
||||
#include "global.h"
|
||||
#include <cstring>
|
||||
|
||||
#if SDK_AUG2010
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <revolution.h>
|
||||
#include <revolution/pad.h>
|
||||
#include <revolution/si.h>
|
||||
#include "global.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <revolution/os.h>
|
||||
#include <revolution/wpad.h>
|
||||
#include "global.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef SPOTNAME_H
|
||||
#define SPOTNAME_H
|
||||
|
||||
// This symbol has polluted multiple TUs in the lib, hence,
|
||||
// it probably was defined in the header as static by accident
|
||||
static const char* sSpotName[] = {
|
||||
"F_SP00", "F_SP103", "R_SP01", "F_SP104", "R_SP107", "F_SP108", "R_SP108", "F_SP117",
|
||||
"F_SP109", "R_SP109", "R_SP209", "F_SP110", "R_SP110", "F_SP111", "F_SP128", "R_SP128",
|
||||
"F_SP115", "F_SP112", "F_SP126", "F_SP127", "R_SP127", "F_SP113", "F_SP116", "R_SP116",
|
||||
"R_SP160", "R_SP161", "F_SP114", "F_SP118", "F_SP124", "F_SP125", "F_SP121", "F_SP122",
|
||||
"F_SP123", "F_SP200", "F_SP102", "", "R_SP300", "R_SP301", "T_ENEMY", "D_MN54",
|
||||
"D_MN05", "D_MN05B", "D_MN05A", "D_MN04", "D_MN04B", "D_MN04A", "D_MN01", "D_MN01B",
|
||||
"D_MN01A", "D_MN10", "D_MN10B", "D_MN10A", "D_MN11", "D_MN11B", "D_MN11A", "D_MN06",
|
||||
"D_MN06B", "D_MN06A", "D_MN07", "D_MN07B", "D_MN07A", "D_MN08", "D_MN08B", "D_MN08C",
|
||||
"D_MN08A", "D_MN08D", "D_MN09", "D_MN09A", "D_MN09B", "D_MN09C", "D_SB00", "D_SB01",
|
||||
"D_SB02", "D_SB03", "D_SB04", "D_SB05", "D_SB06", "D_SB07", "D_SB08", "D_SB09",
|
||||
"D_SB10",
|
||||
};
|
||||
|
||||
#endif /* SPOTNAME_H */
|
||||
@@ -20,6 +20,7 @@
|
||||
#endif
|
||||
|
||||
Z2AudioMgr* Z2AudioMgr::mAudioMgrPtr;
|
||||
u8 gMuffleOutOfRangeMic = false;
|
||||
|
||||
Z2AudioMgr::Z2AudioMgr() : mSoundStarter(true) {
|
||||
mAudioMgrPtr = this;
|
||||
|
||||
@@ -14,14 +14,15 @@
|
||||
#include "JSystem/JKernel/JKRExpHeap.h"
|
||||
#include "Z2AudioLib/Z2F1TestWindow.h"
|
||||
#include "Z2AudioLib/Z2FxLineMgr.h"
|
||||
#include "Z2AudioLib/Z2Param.h"
|
||||
#include "Z2AudioLib/Z2SeView.h"
|
||||
#include "Z2AudioLib/Z2SoundPlayer.h"
|
||||
#include "Z2AudioLib/Z2TrackView.h"
|
||||
#include "Z2AudioLib/Z2WaveArcLoader.h"
|
||||
#include "m_Do/m_Do_hostIO.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "m_Do/m_Do_hostIO.h"
|
||||
|
||||
Z2DebugSys::Z2DebugSys() : JASGlobalInstance<Z2DebugSys>(true) { }
|
||||
Z2DebugSys::Z2DebugSys() : JASGlobalInstance<Z2DebugSys>(true) {}
|
||||
|
||||
void Z2DebugSys::initJAW() {
|
||||
JKRHeap* oldHeap = JKRHeap::getCurrentHeap();
|
||||
@@ -117,3 +118,108 @@ JAISeqDataMgr* Z2DebugSys::initSeSeqDataMgr(const void* param_1) {
|
||||
JKRSetCurrentHeap(oldHeap);
|
||||
return seqDataMgr;
|
||||
}
|
||||
|
||||
u8 gMicOn = true;
|
||||
u8 gMicOffWhenOutOfSight = true;
|
||||
extern u8 gMuffleOutOfRangeMic;
|
||||
|
||||
void Z2ParamNode::message(JAHControl& ctrl) {
|
||||
ctrl.makeComment("**** 各種パラメータ編集用ノード ****", 0, 5, 0);
|
||||
ctrl.returnY(1);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeCheckBox("BGM強制ボリュームON", &Z2GetSeqMgr()->field_0x04_debug, 1, false, 0);
|
||||
ctrl.makeSlider("BGM強制ボリューム", &Z2GetSeqMgr()->field_0x00_debug, 0.0f, 1.0f, 0);
|
||||
ctrl.returnY(1);
|
||||
ctrl.makeComment("-- ミドナボイス --", 0, 5, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeSlider("発話スタイル", (s16*)Z2GetSpeechMgr2()->getStylePtr(), 0, 0x10, 0);
|
||||
ctrl.makeSlider("語尾(1=UP)", Z2GetSpeechMgr2()->getTalkerPtr(), 0, 1, 0);
|
||||
ctrl.indent(-1);
|
||||
ctrl.makeComment("-- BGM汎用パラメータ --", 0, 5, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeSlider("シーンチェンジ時のBGMフェードアウトタイム",
|
||||
&Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("BGMクロスフェードインタイム", &Z2Param::BGM_CROSS_FADEIN_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("BGMクロスフェードアウトタイム", &Z2Param::BGM_CROSS_FADEOUT_TIME, 0, 0xff,
|
||||
0);
|
||||
ctrl.indent(-1);
|
||||
ctrl.makeComment("-- 戦闘BGMパラメータ --", 0, 5, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeSlider("戦闘BGMスタート禁止時間", &Z2Param::BATTLE_BGM_WAIT_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("戦闘BGMスタート距離", &Z2Param::BATTLE_FADEIN_DIST, 0.0f, 5000.0f, 0);
|
||||
ctrl.makeSlider("戦闘BGMフェードアウト距離", &Z2Param::BATTLE_FADEOUT_DIST, 0.0f, 5000.0f,
|
||||
0);
|
||||
ctrl.makeSlider("接近戦状態距離", &Z2Param::ENEMY_NEARBY_DIST, 0.0f, 5000.0f, 0);
|
||||
ctrl.makeSlider("接近戦トラックFIタイム", &Z2Param::CLOSE_BATTLE_TRACK_FI_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("接近戦トラックFOタイム", &Z2Param::CLOSE_BATTLE_TRACK_FO_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("見つかりトラックFIタイム", &Z2Param::FOUND_TRACK_FI_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("見つかりトラックFOタイム", &Z2Param::FOUND_TRACK_FO_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("最後の一撃音量下げ範囲", &Z2Param::ENEMY_LASTHIT_MUTE_VOLUME, 0.0f, 1.0f, 0);
|
||||
ctrl.makeSlider("最後の一撃音量下げ時間", &Z2Param::ENDING_BLOW_VOL_DOWN_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("最後の一撃音量下げ持続時間", &Z2Param::ENDING_BLOW_VOL_LOWER_TIME, 0, 0xff, 0);
|
||||
ctrl.makeSlider("最後の一撃音量下げ復帰時間", &Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME, 0,
|
||||
0xff, 0);
|
||||
ctrl.makeSlider("最後の一撃〜フィニッシュ最低時間", &Z2Param::ENDING_BLOW_MIN_FINISH_TIME, 0,
|
||||
0xff, 0);
|
||||
ctrl.indent(-1);
|
||||
ctrl.returnY(1);
|
||||
ctrl.makeComment("-- オーディブル演算パラメータ --", 0, 5, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeSlider("ボリューム変化許容範囲(+-)", &Z2Param::AUDIBLE_DELTA_RANGE_VOLUME, 0.0f, 1.0f,
|
||||
0);
|
||||
ctrl.makeSlider("パン変化許容範囲(+-)", &Z2Param::AUDIBLE_DELTA_RANGE_PAN, 0.0f, 1.0f, 0);
|
||||
ctrl.makeSlider("ドルビー変化許容範囲(+-)", &Z2Param::AUDIBLE_DELTA_RANGE_DOLBY, 0.0f, 1.0f, 0);
|
||||
ctrl.makeSlider("ドップラーピッチ変化許容範囲(*/)", &Z2GetAudience()->getSetting()->field_0x60,
|
||||
1.0f, 2.0f, 0);
|
||||
ctrl.indent(-1);
|
||||
ctrl.returnY(1);
|
||||
Z2SpotMic* pfVar2 = Z2GetAudience()->getLinkMic();
|
||||
if (pfVar2 != NULL) {
|
||||
ctrl.makeComment("-- リンクスポットマイク設定 --", 0, 5, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeCheckBox("マイクON?", &gMicOn, 1, false, 0);
|
||||
ctrl.makeCheckBox("視野外でマイクオフ?", &gMicOffWhenOutOfSight, 1, false, 0);
|
||||
ctrl.makeSlider("マイク音量最大距離", &pfVar2->field_0x0, 0.0f, 1000.0f, 0);
|
||||
ctrl.makeSlider("マイク音量最小距離", &pfVar2->field_0x4, 0.0f, 1000.0f, 0);
|
||||
ctrl.makeSlider("最小音量", &pfVar2->field_0x8, 0.0f, 1.0f, 0);
|
||||
ctrl.makeSlider("最大音量の最小値", &pfVar2->field_0xc, 0.0f, 1.0f, 0);
|
||||
ctrl.makeButton("マイク設定更新", 3, 3, 0);
|
||||
ctrl.returnY(1);
|
||||
ctrl.makeCheckBox("マイク圏外をボリュームダウン", &gMuffleOutOfRangeMic, 1, false, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeSlider("マイク圏外の音量比", &Z2GetAudience()->field_0x4, 0.0f, 1.0f, 0);
|
||||
ctrl.indent(-1);
|
||||
ctrl.indent(-1);
|
||||
}
|
||||
ctrl.makeComment("-- 闇のSEフィルタ実験 --", 0, 5, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeButton("フィルタリセット", 2, 3, 0);
|
||||
ctrl.makeCheckBox("フィルタON", &Z2Param::DARK_SE_FILTER_ON, 1, false, 0);
|
||||
ctrl.makeCheckBox("システムSEにも適用", &Z2Param::SYSTEM_SE_USE_DARK_SE_SETTING, 1, false, 0);
|
||||
ctrl.makeSlider("ローパスフィルタ設定(強→弱)", &Z2Param::DARK_SE_LOW_PASS_FILTER_SETTING, 0,
|
||||
0x7f, 0);
|
||||
}
|
||||
|
||||
void Z2ParamNode::propertyEvent(JAH_P_Event param_1, u32 param_2) {
|
||||
if (param_1 == JAH_P_EVENT0)
|
||||
return;
|
||||
|
||||
switch (param_2) {
|
||||
case 2:
|
||||
Z2GetSoundMgr()->resetFilterAll();
|
||||
break;
|
||||
case 3:
|
||||
Z2GetAudience()->getLinkMic()->calcPriorityFactor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Z2ParamNode::onFrame() {
|
||||
Z2SpotMic* mic = Z2GetAudience()->getLinkMic();
|
||||
if (!mic)
|
||||
return;
|
||||
|
||||
mic->setMicOn(gMicOn != 0);
|
||||
mic->setIgnoreIfOut(gMicOffWhenOutOfSight != 0);
|
||||
Z2GetAudience()->setUsingOffMicVol(gMuffleOutOfRangeMic != 0);
|
||||
}
|
||||
|
||||
@@ -3,92 +3,7 @@
|
||||
#include "JSystem/JAudio2/JASCalc.h"
|
||||
#include "d/d_save.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
|
||||
#if DEBUG
|
||||
static const char* sSpotName[] = {
|
||||
"F_SP00",
|
||||
"F_SP103",
|
||||
"R_SP01",
|
||||
"F_SP104",
|
||||
"R_SP107",
|
||||
"F_SP108",
|
||||
"R_SP108",
|
||||
"F_SP117",
|
||||
"F_SP109",
|
||||
"R_SP109",
|
||||
"R_SP209",
|
||||
"F_SP110",
|
||||
"R_SP110",
|
||||
"F_SP111",
|
||||
"F_SP128",
|
||||
"R_SP128",
|
||||
"F_SP115",
|
||||
"F_SP112",
|
||||
"F_SP126",
|
||||
"F_SP127",
|
||||
"R_SP127",
|
||||
"F_SP113",
|
||||
"F_SP116",
|
||||
"R_SP116",
|
||||
"R_SP160",
|
||||
"R_SP161",
|
||||
"F_SP114",
|
||||
"F_SP118",
|
||||
"F_SP124",
|
||||
"F_SP125",
|
||||
"F_SP121",
|
||||
"F_SP122",
|
||||
"F_SP123",
|
||||
"F_SP200",
|
||||
"F_SP102",
|
||||
"",
|
||||
"R_SP300",
|
||||
"R_SP301",
|
||||
"T_ENEMY",
|
||||
"D_MN54",
|
||||
"D_MN05",
|
||||
"D_MN05B",
|
||||
"D_MN05A",
|
||||
"D_MN04",
|
||||
"D_MN04B",
|
||||
"D_MN04A",
|
||||
"D_MN01",
|
||||
"D_MN01B",
|
||||
"D_MN01A",
|
||||
"D_MN10",
|
||||
"D_MN10B",
|
||||
"D_MN10A",
|
||||
"D_MN11",
|
||||
"D_MN11B",
|
||||
"D_MN11A",
|
||||
"D_MN06",
|
||||
"D_MN06B",
|
||||
"D_MN06A",
|
||||
"D_MN07",
|
||||
"D_MN07B",
|
||||
"D_MN07A",
|
||||
"D_MN08",
|
||||
"D_MN08B",
|
||||
"D_MN08C",
|
||||
"D_MN08A",
|
||||
"D_MN08D",
|
||||
"D_MN09",
|
||||
"D_MN09A",
|
||||
"D_MN09B",
|
||||
"D_MN09C",
|
||||
"D_SB00",
|
||||
"D_SB01",
|
||||
"D_SB02",
|
||||
"D_SB03",
|
||||
"D_SB04",
|
||||
"D_SB05",
|
||||
"D_SB06",
|
||||
"D_SB07",
|
||||
"D_SB08",
|
||||
"D_SB09",
|
||||
"D_SB10",
|
||||
};
|
||||
#endif
|
||||
#include "Z2AudioLib/SpotName.h"
|
||||
|
||||
Z2EnvSeBase::Z2EnvSeBase(Vec* posPtr) {
|
||||
mPos = posPtr;
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
#include "Z2AudioLib/Z2F1TestWindow.h"
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JAudio2/JASAudioThread.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "Z2AudioLib/Z2Audience.h"
|
||||
|
||||
f32 sF1_Diff = 0.01f;
|
||||
f32 sF1_i = 0.1f;
|
||||
f32 sF1_Geta = 0.2f;
|
||||
s32 sF1_Frame = 200;
|
||||
f32 sF1_Pitch_Width = 0.2f;
|
||||
f32 sF1_Pan_Width;
|
||||
|
||||
Z2F1TestWindow::Z2F1TestWindow() : JAWWindow("Z2F1TestWindow", 500, 450) {}
|
||||
|
||||
void Z2F1TestWindow::onDraw(JAWGraphContext*) {}
|
||||
|
||||
void Z2F1TestWindow::frameWork() {}
|
||||
|
||||
void Z2F1TestWindow::calcF1() {}
|
||||
|
||||
void Z2F1TestWindow::onPadProc(const JUTGamePad&) {}
|
||||
|
||||
f32 Z2F1TestWindow::tau(f32) {}
|
||||
|
||||
f32 Z2F1TestWindow::calcThreshold(int) {}
|
||||
|
||||
f32 Z2F1TestWindow::getRawX() const {
|
||||
return field_0x3f0;
|
||||
}
|
||||
|
||||
f32 Z2F1TestWindow::calcNoise() {
|
||||
field_0x3f0 = field_0x3f4;
|
||||
field_0x3f4 = tau(field_0x3f0);
|
||||
return field_0x3f0;
|
||||
}
|
||||
|
||||
void Z2F1TestWindow::setValue(f32 param_1, f32 param_2) {
|
||||
field_0x3f0 = param_1;
|
||||
field_0x3f4 = param_1;
|
||||
field_0xbd4 = param_2;
|
||||
}
|
||||
|
||||
void Z2F1TestWindow::onTrigY(const JUTGamePad&) {
|
||||
for (u16 i = 0; i < 500; ++i)
|
||||
field_0x3f8[i] = 0.0f;
|
||||
|
||||
field_0x3f0 = tau(sF1_i);
|
||||
field_0x3f4 = tau(field_0x3f0);
|
||||
field_0xbd4 = calcThreshold(sF1_Frame);
|
||||
}
|
||||
|
||||
void Z2F1TestWindow::onTrigMenu(const JUTGamePad&) {
|
||||
if (field_0xbd0)
|
||||
field_0xbd0 = 0;
|
||||
else
|
||||
field_0xbd0 = 1;
|
||||
}
|
||||
|
||||
Z2F1SwingTestNode::Z2F1SwingTestNode()
|
||||
: JAHFrameNode("1/fゆらぎテスト"), field_0xc48(-1, NULL), field_0xcd0(-1, NULL) {
|
||||
appendVirNode(&field_0xc48);
|
||||
appendVirNode(&field_0xcd0);
|
||||
mModulateVolume = 0;
|
||||
mModulatePitch = 0;
|
||||
mModulatePan = 0;
|
||||
mModulateDolby = 0;
|
||||
field_0xd5c = 0.0f;
|
||||
field_0xd60 = 0.0f;
|
||||
field_0xd64 = 0.0f;
|
||||
field_0xd68 = 0.0f;
|
||||
}
|
||||
|
||||
void Z2F1SwingTestNode::message(JAHControl& ctrl) {
|
||||
ctrl.makeComment("--1/fゆらぎテスト--", 0, 5, 0);
|
||||
ctrl.indent(1);
|
||||
ctrl.makeSlider("Diff値", &sF1_Diff, 0.0, 0.1, 0);
|
||||
ctrl.makeSlider("i値", &sF1_i, 0.0f, 1.0f, 0);
|
||||
ctrl.makeSlider("Geta値", &sF1_Geta, 0.0f, 1.0f, 0);
|
||||
ctrl.makeSlider("frame値", &sF1_Frame, 2, 200, 0);
|
||||
ctrl.returnY(1);
|
||||
ctrl.makeCheckBox("ボリューム変調", &mModulateVolume, 1, false, 0);
|
||||
ctrl.makeCheckBox("ピッチ変調", &mModulatePitch, 1, false, 0);
|
||||
ctrl.makeSlider("Pitch ゆらぎ幅", &sF1_Pitch_Width, 0.0f, 1.0f, 0);
|
||||
ctrl.makeCheckBox("パン変調", &mModulatePan, 1, false, 0);
|
||||
ctrl.makeSlider("パン移動幅", &sF1_Pan_Width, 0.0f, 1.0f, 0);
|
||||
ctrl.makeCheckBox("ドルビー変調", &mModulateDolby, 1, false, 0);
|
||||
}
|
||||
|
||||
void Z2F1SwingTestNode::onFrame() {
|
||||
f32 fVar1 = 1.0;
|
||||
f32 fVar2 = getValue() * (1.0f - sF1_Geta) + sF1_Geta;
|
||||
f32 fVar3 = getValue2() * (1.0f - sF1_Geta) + sF1_Geta;
|
||||
if (field_0xc48.unk40.isSoundAttached() && field_0xcd0.unk40.isSoundAttached()) {
|
||||
fVar1 = 0.5f;
|
||||
field_0xc48.unk40->getAuxiliary().moveVolume(fVar2 * fVar1, 0);
|
||||
field_0xcd0.unk40->getAuxiliary().moveVolume(fVar3 * fVar1, 0);
|
||||
} else if (field_0xc48.unk40.isSoundAttached()) {
|
||||
fVar1 = 1.0f;
|
||||
field_0xc48.unk40->getAuxiliary().moveVolume(fVar2 * fVar1, 0);
|
||||
} else if (field_0xcd0.unk40.isSoundAttached()) {
|
||||
fVar1 = 1.0f;
|
||||
field_0xcd0.unk40->getAuxiliary().moveVolume(fVar3 * fVar1, 0);
|
||||
}
|
||||
|
||||
if (field_0xc48.unk40.isSoundAttached()) {
|
||||
if (mModulateVolume)
|
||||
field_0xc48.unk40->getAuxiliary().moveVolume(fVar3 * fVar1, 0);
|
||||
else
|
||||
field_0xc48.unk40->getAuxiliary().moveVolume(0.5f, 0);
|
||||
|
||||
if (mModulatePitch)
|
||||
field_0xc48.unk40->getAuxiliary().movePitch(
|
||||
getValue2() * sF1_Pitch_Width + (1.0f - sF1_Pitch_Width), 0);
|
||||
else
|
||||
field_0xc48.unk40->getAuxiliary().movePitch(1.0f, 0);
|
||||
|
||||
if (mModulatePan)
|
||||
field_0xc48.unk40->getAuxiliary().movePan(0.5f - getValue2() * sF1_Pan_Width / 2, 0);
|
||||
else
|
||||
field_0xc48.unk40->getAuxiliary().movePan(0.5f, 0);
|
||||
|
||||
if (mModulateDolby)
|
||||
field_0xc48.unk40->getAuxiliary().moveDolby(fVar3, 0);
|
||||
else
|
||||
field_0xc48.unk40->getAuxiliary().moveDolby(0.0f, 0);
|
||||
} else if (field_0xcd0.unk40.isSoundAttached()) {
|
||||
if (mModulateVolume)
|
||||
field_0xcd0.unk40->getAuxiliary().moveVolume(fVar3 * fVar1, 0);
|
||||
else
|
||||
field_0xcd0.unk40->getAuxiliary().moveVolume(0.5f, 0);
|
||||
|
||||
if (mModulatePitch)
|
||||
field_0xcd0.unk40->getAuxiliary().movePitch(
|
||||
getValue2() * sF1_Pitch_Width + (1.0f - sF1_Pitch_Width), 0);
|
||||
else
|
||||
field_0xcd0.unk40->getAuxiliary().movePitch(1.0f, 0);
|
||||
|
||||
if (mModulatePan)
|
||||
field_0xcd0.unk40->getAuxiliary().movePan(0.5f + getValue2() * sF1_Pan_Width / 2, 0);
|
||||
else
|
||||
field_0xcd0.unk40->getAuxiliary().movePan(0.5f, 0);
|
||||
|
||||
if (mModulateDolby)
|
||||
field_0xcd0.unk40->getAuxiliary().moveDolby(fVar3, 0);
|
||||
else
|
||||
field_0xcd0.unk40->getAuxiliary().moveDolby(0.0f, 0);
|
||||
}
|
||||
}
|
||||
|
||||
f32 Z2F1TestWindow::getValue2() {
|
||||
return field_0x3f8[field_0xbcc];
|
||||
}
|
||||
|
||||
f32 Z2F1TestWindow::getValue() {
|
||||
return field_0x3f8[field_0xbc8];
|
||||
}
|
||||
|
||||
Z2AudSettingView::Z2AudSettingView() : JAWWindow("Z2AudSettingView", 400, 300) {}
|
||||
|
||||
void Z2AudSettingView::onDraw(JAWGraphContext* param_1) {
|
||||
const Z2AudioCamera* this_00 = Z2GetAudience()->getAudioCamera(0);
|
||||
Z2Audience3DSetting* pfVar2 = Z2GetAudience()->getSetting();
|
||||
int l = 0;
|
||||
param_1->print(0, l++, "<SETTING>");
|
||||
param_1->print(0, l++, "far dist %.3f", pfVar2->field_0x0[0]);
|
||||
param_1->print(0, l++, "near dist %.3f", pfVar2->field_0x3c);
|
||||
param_1->print(0, l++, "frontDolbyZ %.3f", pfVar2->field_0x44);
|
||||
param_1->print(0, l++, "behindDolbyZ %.3f", pfVar2->field_0x48);
|
||||
param_1->print(0, l++, "centerDolby %.3f", pfVar2->field_0x4c);
|
||||
++l;
|
||||
param_1->print(0, l++, "<AUD CAMERA>");
|
||||
param_1->print(0, l++, "CamDist %.3f", this_00->getCamDist());
|
||||
param_1->print(0, l++, "vel.x %.3f", this_00->getVel()->x);
|
||||
param_1->print(0, l++, "vel.y %.3f", this_00->getVel()->y);
|
||||
param_1->print(0, l++, "vel.z %.3f", this_00->getVel()->z);
|
||||
param_1->print(0, l++, "TargetVolume %.3f", this_00->getTargetVolume());
|
||||
param_1->print(0, l++, "VolCenterZ %.3f", this_00->getVolCenterZ());
|
||||
param_1->print(0, l++, "DolbyCenterZ %.3f", this_00->getDolbyCenterZ());
|
||||
param_1->print(0, l++, "getFovySin %.3f", this_00->getFovySin());
|
||||
}
|
||||
|
||||
void Z2DSPCheck::onDraw(JAWGraphContext* param_1) {
|
||||
u8* puVar1 = (u8*)JKRHeap::getAltAramStartAdr();
|
||||
DCInvalidateRange(puVar1, 0x20);
|
||||
int l = 0;
|
||||
param_1->print(0, l++, "<DISP INFO>");
|
||||
param_1->print(0, l++, "VARAM_TOP %08X", puVar1);
|
||||
param_1->print(0, l++, "DSP state %04X", *(u16*)(puVar1 + 0));
|
||||
param_1->print(0, l++, "DSP channel %04X", *(u8*)(puVar1 + 2));
|
||||
param_1->print(0, l++, "DSP sub-fr %04X", *(u8*)(puVar1 + 3));
|
||||
param_1->print(0, l++, "DSP cmd wr %04X", *(u16*)(puVar1 + 4));
|
||||
param_1->print(0, l++, "DSP sub-rd %04X", *(u16*)(puVar1 + 6));
|
||||
param_1->print(0, l++, "DSP cmd rest %04X", *(u16*)(puVar1 + 8));
|
||||
l++;
|
||||
param_1->print(0, l++, "<CPU AUDIO THREAD INFO>");
|
||||
param_1->print(0, l++, "DSPSyncCount %2d", JASAudioThread::getDSPSyncCount());
|
||||
}
|
||||
+382
-61
@@ -1,9 +1,15 @@
|
||||
#include "Z2AudioLib/Z2FxLineMgr.h"
|
||||
#include "Z2AudioLib/Z2SceneMgr.h"
|
||||
#include "JSystem/JAHostIO/JAHUGlobal.h"
|
||||
#include "JSystem/JAHostIO/JAHioMessage.h"
|
||||
#include "JSystem/JAHostIO/JAHioUtil.h"
|
||||
#include "JSystem/JAudio2/JASDSPInterface.h"
|
||||
#include "JSystem/JHostIO/JORFile.h"
|
||||
#include "JSystem/JKernel/JKRArchive.h"
|
||||
#include "JSystem/JKernel/JKRExpHeap.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JSupport/JSUMemoryStream.h"
|
||||
#include "Z2AudioLib/SpotName.h"
|
||||
#include "Z2AudioLib/Z2SceneMgr.h"
|
||||
#include "os_report.h"
|
||||
|
||||
Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance<Z2FxLineMgr>(true) {
|
||||
@@ -12,9 +18,9 @@ Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance<Z2FxLineMgr>(true) {
|
||||
mFxDataNum = 0;
|
||||
mSetUnderWaterFx = false;
|
||||
|
||||
#if DEBUG
|
||||
#if DEBUG
|
||||
mHIOEdit = NULL;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) {
|
||||
@@ -36,42 +42,49 @@ void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) {
|
||||
|
||||
for (u8 i = 0; i < mFxDataNum; i++) {
|
||||
void* res = arc->getResource(i);
|
||||
u32 size = (arc->getResSize(res) + 0x1f) & ~0x1f;
|
||||
u32 size = ALIGN_NEXT(arc->getResSize(res), 32);
|
||||
|
||||
JSUMemoryInputStream stream(res, size);
|
||||
stream >> mConfig[i].field_0x0;
|
||||
stream >> mConfig[i].field_0x1;
|
||||
stream >> mConfig[i].field_0x2;
|
||||
stream >> mConfig[i].field_0x3;
|
||||
stream >> mConfig[i].field_0x4;
|
||||
stream >> mConfig[i].field_0x6;
|
||||
stream >> mConfig[i].field_0x8[0];
|
||||
stream >> mConfig[i].field_0x8[1];
|
||||
stream >> mConfig[i].field_0x8[2];
|
||||
stream >> mConfig[i].field_0x8[3];
|
||||
stream >> mConfig[i].field_0x8[4];
|
||||
stream >> mConfig[i].field_0x8[5];
|
||||
stream >> mConfig[i].field_0x8[6];
|
||||
stream >> mConfig[i].field_0x8[7];
|
||||
stream >> mConfig[i].field_0x18;
|
||||
stream >> mConfig[i].field_0x19;
|
||||
stream >> mConfig[i].field_0x1a;
|
||||
stream >> mConfig[i].field_0x1b;
|
||||
stream >> mConfig[i].field_0x1c;
|
||||
stream >> mConfig[i].field_0x1e;
|
||||
stream >> mConfig[i].field_0x20[0];
|
||||
stream >> mConfig[i].field_0x20[1];
|
||||
stream >> mConfig[i].field_0x20[2];
|
||||
stream >> mConfig[i].field_0x20[3];
|
||||
stream >> mConfig[i].field_0x20[4];
|
||||
stream >> mConfig[i].field_0x20[5];
|
||||
stream >> mConfig[i].field_0x20[6];
|
||||
stream >> mConfig[i].field_0x20[7];
|
||||
stream >> mConfig[i].unk0.unk0;
|
||||
stream >> mConfig[i].unk0.unk1;
|
||||
stream >> mConfig[i].unk0.unk2;
|
||||
stream >> mConfig[i].unk0.unk3;
|
||||
stream >> mConfig[i].unk0.unk4;
|
||||
stream >> mConfig[i].unk0.unk6;
|
||||
stream >> mConfig[i].unk0.unk8[0];
|
||||
stream >> mConfig[i].unk0.unk8[1];
|
||||
stream >> mConfig[i].unk0.unk8[2];
|
||||
stream >> mConfig[i].unk0.unk8[3];
|
||||
stream >> mConfig[i].unk0.unk8[4];
|
||||
stream >> mConfig[i].unk0.unk8[5];
|
||||
stream >> mConfig[i].unk0.unk8[6];
|
||||
stream >> mConfig[i].unk0.unk8[7];
|
||||
stream >> mConfig[i].unk18.unk0;
|
||||
stream >> mConfig[i].unk18.unk1;
|
||||
stream >> mConfig[i].unk18.unk2;
|
||||
stream >> mConfig[i].unk18.unk3;
|
||||
stream >> mConfig[i].unk18.unk4;
|
||||
stream >> mConfig[i].unk18.unk6;
|
||||
stream >> mConfig[i].unk18.unk8[0];
|
||||
stream >> mConfig[i].unk18.unk8[1];
|
||||
stream >> mConfig[i].unk18.unk8[2];
|
||||
stream >> mConfig[i].unk18.unk8[3];
|
||||
stream >> mConfig[i].unk18.unk8[4];
|
||||
stream >> mConfig[i].unk18.unk8[5];
|
||||
stream >> mConfig[i].unk18.unk8[6];
|
||||
stream >> mConfig[i].unk18.unk8[7];
|
||||
JKRFree(res);
|
||||
}
|
||||
|
||||
setLineID(-1, false, false);
|
||||
setLineID(-1, true, false);
|
||||
|
||||
#if DEBUG
|
||||
if (mHIOEdit)
|
||||
mHIOEdit->update(false);
|
||||
if (mHIOEdit)
|
||||
mHIOEdit->update(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Z2FxLineMgr::setLineID(s8 fxID, bool param_1, bool param_2) {
|
||||
@@ -102,51 +115,60 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) {
|
||||
}
|
||||
|
||||
JASDsp::FxlineConfig_ dsp_config;
|
||||
dsp_config.field_0x0 = config->field_0x0;
|
||||
dsp_config.field_0x2 = config->field_0x1;
|
||||
dsp_config.field_0x6 = config->field_0x2;
|
||||
dsp_config.field_0x0 = config->unk0.unk0;
|
||||
dsp_config.field_0x2 = config->unk0.unk1;
|
||||
dsp_config.field_0x6 = config->unk0.unk2;
|
||||
|
||||
if (param_2) {
|
||||
dsp_config.field_0x4 = 0;
|
||||
dsp_config.field_0x8 = 0;
|
||||
} else {
|
||||
dsp_config.field_0x4 = config->field_0x4;
|
||||
dsp_config.field_0x8 = config->field_0x6;
|
||||
dsp_config.field_0x4 = config->unk0.unk4;
|
||||
dsp_config.field_0x8 = config->unk0.unk6;
|
||||
}
|
||||
|
||||
dsp_config.field_0xc = config->field_0x3;
|
||||
dsp_config.field_0x10[0] = config->field_0x8[0];
|
||||
dsp_config.field_0x10[1] = config->field_0x8[1];
|
||||
dsp_config.field_0x10[2] = config->field_0x8[2];
|
||||
dsp_config.field_0x10[3] = config->field_0x8[3];
|
||||
dsp_config.field_0x10[4] = config->field_0x8[4];
|
||||
dsp_config.field_0x10[5] = config->field_0x8[5];
|
||||
dsp_config.field_0x10[6] = config->field_0x8[6];
|
||||
dsp_config.field_0x10[7] = config->field_0x8[7];
|
||||
dsp_config.field_0xc = config->unk0.unk3;
|
||||
dsp_config.field_0x10[0] = config->unk0.unk8[0];
|
||||
dsp_config.field_0x10[1] = config->unk0.unk8[1];
|
||||
dsp_config.field_0x10[2] = config->unk0.unk8[2];
|
||||
dsp_config.field_0x10[3] = config->unk0.unk8[3];
|
||||
dsp_config.field_0x10[4] = config->unk0.unk8[4];
|
||||
dsp_config.field_0x10[5] = config->unk0.unk8[5];
|
||||
dsp_config.field_0x10[6] = config->unk0.unk8[6];
|
||||
dsp_config.field_0x10[7] = config->unk0.unk8[7];
|
||||
JASDsp::setFXLine(buf1, (s16*)mFxLineBuffer[buf1], &dsp_config);
|
||||
#if DEBUG
|
||||
if (mHIOEdit)
|
||||
mHIOEdit->syncSetting(buf1, &dsp_config);
|
||||
#endif
|
||||
|
||||
dsp_config.field_0x0 = config->field_0x18;
|
||||
dsp_config.field_0x2 = config->field_0x19;
|
||||
dsp_config.field_0x6 = config->field_0x1a;
|
||||
dsp_config.field_0x0 = config->unk18.unk0;
|
||||
dsp_config.field_0x2 = config->unk18.unk1;
|
||||
dsp_config.field_0x6 = config->unk18.unk2;
|
||||
|
||||
if (param_2) {
|
||||
dsp_config.field_0x4 = 0;
|
||||
dsp_config.field_0x8 = 0;
|
||||
} else {
|
||||
dsp_config.field_0x4 = config->field_0x1c;
|
||||
dsp_config.field_0x8 = config->field_0x1e;
|
||||
dsp_config.field_0x4 = config->unk18.unk4;
|
||||
dsp_config.field_0x8 = config->unk18.unk6;
|
||||
}
|
||||
|
||||
dsp_config.field_0xc = config->field_0x1b;
|
||||
dsp_config.field_0x10[0] = config->field_0x20[0];
|
||||
dsp_config.field_0x10[1] = config->field_0x20[1];
|
||||
dsp_config.field_0x10[2] = config->field_0x20[2];
|
||||
dsp_config.field_0x10[3] = config->field_0x20[3];
|
||||
dsp_config.field_0x10[4] = config->field_0x20[4];
|
||||
dsp_config.field_0x10[5] = config->field_0x20[5];
|
||||
dsp_config.field_0x10[6] = config->field_0x20[6];
|
||||
dsp_config.field_0x10[7] = config->field_0x20[7];
|
||||
dsp_config.field_0xc = config->unk18.unk3;
|
||||
dsp_config.field_0x10[0] = config->unk18.unk8[0];
|
||||
dsp_config.field_0x10[1] = config->unk18.unk8[1];
|
||||
dsp_config.field_0x10[2] = config->unk18.unk8[2];
|
||||
dsp_config.field_0x10[3] = config->unk18.unk8[3];
|
||||
dsp_config.field_0x10[4] = config->unk18.unk8[4];
|
||||
dsp_config.field_0x10[5] = config->unk18.unk8[5];
|
||||
dsp_config.field_0x10[6] = config->unk18.unk8[6];
|
||||
dsp_config.field_0x10[7] = config->unk18.unk8[7];
|
||||
JASDsp::setFXLine(buf2, (s16*)mFxLineBuffer[buf2], &dsp_config);
|
||||
|
||||
#if DEBUG
|
||||
if (mHIOEdit)
|
||||
mHIOEdit->syncSetting(buf2, &dsp_config);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Z2FxLineMgr::setFxForceOff(bool param_0) {
|
||||
@@ -158,6 +180,11 @@ void Z2FxLineMgr::setUnderWaterFx(bool isUnderWaterFx) {
|
||||
if (isUnderWaterFx) {
|
||||
OS_REPORT("[Z2FxLineMgr::setUnderWaterFx] → underWaterFx!\n");
|
||||
setLineID(12, true, false);
|
||||
|
||||
#if DEBUG
|
||||
if (mHIOEdit)
|
||||
mHIOEdit->update(true);
|
||||
#endif
|
||||
} else {
|
||||
OS_REPORT("[Z2FxLineMgr::setUnderWaterFx] → sceneFx!\n");
|
||||
setSceneFx(Z2GetSceneMgr()->getCurrentSceneNum());
|
||||
@@ -189,7 +216,7 @@ void Z2FxLineMgr::setSceneFx(s32 sceneNo) {
|
||||
case Z2SCENE_LAKE_LANTERN_CAVE:
|
||||
case Z2SCENE_FARON_WOODS_CAVE:
|
||||
if (Z2GetSceneMgr()->getCurrentRoomNum() == 2) {
|
||||
return;
|
||||
break;
|
||||
}
|
||||
// fallthrough
|
||||
case Z2SCENE_FARON_WOODS:
|
||||
@@ -239,4 +266,298 @@ void Z2FxLineMgr::setSceneFx(s32 sceneNo) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
#if DEBUG
|
||||
if (mHIOEdit)
|
||||
mHIOEdit->update(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
Z2FxLineEditNode::Z2FxLineEditNode(JKRExpHeap* heap) : JAHFrameNode("FxLineEdit"), mHeap(heap) {
|
||||
JUT_ASSERT(340, mHeap);
|
||||
unk74 = JKR_NEW_ARGS(mHeap, 0) LineStereo(false);
|
||||
appendNode(unk74, NULL);
|
||||
unk78 = JKR_NEW_ARGS(mHeap, 0) LineStereo(true);
|
||||
appendNode(unk78, NULL);
|
||||
Z2GetFxLineMgr()->setHIOEdit(this);
|
||||
}
|
||||
|
||||
void Z2FxLineEditNode::message(JAHControl& control) {
|
||||
control.makeComment("Line0 : normal_mixing L", 0, 5, 0);
|
||||
control.makeComment("Line1 : normal_mixing R", 0, 5, 0);
|
||||
control.makeComment("Line2 : auto_mixing L", 0, 5, 0);
|
||||
control.makeComment("Line3 : auto_mixing R", 0, 5, 0);
|
||||
control.returnY(1);
|
||||
control.makeComment("-- ミックスモード --", 0, 5, 0);
|
||||
control.indent(1);
|
||||
control.makeComment("DFX_MIX_STOP 非動作", 0, 5, 0);
|
||||
control.makeComment("DFX_MIX_BEFORE 出力前にミキシング(第1反射音もFx効果あり)", 0, 5, 0);
|
||||
control.makeComment("DFX_MIX_AFTER 出力後にミキシング(第1反射音はFx効果なし)", 0, 5, 0);
|
||||
control.indent(-1);
|
||||
control.makeComment("-- センド先 --", 0, 5, 0);
|
||||
control.indent(1);
|
||||
control.makeComment("DFXS_MAIN_L", 0, 5, 0);
|
||||
control.makeComment("DFXS_MAIN_R", 0, 5, 0);
|
||||
control.makeComment("DFXS_FX1", 0, 5, 0);
|
||||
control.makeComment("DFXS_FX2", 0, 5, 0);
|
||||
control.makeComment("DFXS_FX3", 0, 5, 0);
|
||||
control.makeComment("DFXS_FX4", 0, 5, 0);
|
||||
control.makeComment("DFXS_FM", 0, 5, 0);
|
||||
control.makeComment("DFXS_DOLBY", 0, 5, 0);
|
||||
control.makeComment("DFXS_REV", 0, 5, 0);
|
||||
control.makeComment("DFXS_CHORUS", 0, 5, 0);
|
||||
control.makeComment("DFXS_MONO", 0, 5, 0);
|
||||
control.makeComment("DFXS_NONE", 0, 5, 0);
|
||||
control.indent(-1);
|
||||
}
|
||||
|
||||
void Z2FxLineEditNode::syncSetting(u8 param_1, JASDsp::FxlineConfig_* config) {
|
||||
JUT_ASSERT(387, config);
|
||||
Z2FxLineConfigSingle* line_HIO;
|
||||
switch (param_1) {
|
||||
case 0:
|
||||
line_HIO = &unk74->unk70.unk0;
|
||||
break;
|
||||
case 1:
|
||||
line_HIO = &unk74->unk70.unk18;
|
||||
break;
|
||||
case 2:
|
||||
line_HIO = &unk78->unk70.unk0;
|
||||
break;
|
||||
case 3:
|
||||
line_HIO = &unk78->unk70.unk18;
|
||||
break;
|
||||
}
|
||||
JUT_ASSERT(407, line_HIO);
|
||||
line_HIO->unk0 = config->field_0x0;
|
||||
line_HIO->unk1 = config->field_0x2;
|
||||
line_HIO->unk4 = config->field_0x4;
|
||||
line_HIO->unk2 = config->field_0x6;
|
||||
line_HIO->unk6 = config->field_0x8;
|
||||
line_HIO->unk3 = config->field_0xc;
|
||||
line_HIO->unk8[0] = config->field_0x10[0];
|
||||
line_HIO->unk8[1] = config->field_0x10[1];
|
||||
line_HIO->unk8[2] = config->field_0x10[2];
|
||||
line_HIO->unk8[3] = config->field_0x10[3];
|
||||
line_HIO->unk8[4] = config->field_0x10[4];
|
||||
line_HIO->unk8[5] = config->field_0x10[5];
|
||||
line_HIO->unk8[6] = config->field_0x10[6];
|
||||
line_HIO->unk8[7] = config->field_0x10[7];
|
||||
}
|
||||
|
||||
void Z2FxLineEditNode::update(bool param_1) {
|
||||
if (param_1)
|
||||
unk78->updateNode();
|
||||
else
|
||||
unk74->updateNode();
|
||||
}
|
||||
|
||||
static const char* cBfcMask = "bfcファイル(*.bfc)\0*.bfc\0";
|
||||
|
||||
void Z2FxLineEditNode::saveLine(LineStereo* node) {
|
||||
JUT_ASSERT(436, node);
|
||||
JORFile file;
|
||||
if (file.open(NULL, 0x6, cBfcMask, NULL, NULL, NULL)) {
|
||||
// clang-format off
|
||||
JUT_ASSERT(441, mHeap!=0);
|
||||
// clang-format on
|
||||
u32 size = ALIGN_PREV(mHeap->getFreeSize(), 0x20);
|
||||
JKRHeap* backup = JKRGetCurrentHeap();
|
||||
JKRSetCurrentHeap(mHeap);
|
||||
void* saveBuffer = JKRAlloc(size, -1);
|
||||
JUT_ASSERT(452, saveBuffer);
|
||||
JKRSetCurrentHeap(backup);
|
||||
|
||||
JSUMemoryOutputStream JStack_15c(saveBuffer, size);
|
||||
JStack_15c << node->unk70.unk0.unk0;
|
||||
JStack_15c << node->unk70.unk0.unk1;
|
||||
JStack_15c << node->unk70.unk0.unk2;
|
||||
JStack_15c << node->unk70.unk0.unk3;
|
||||
JStack_15c << node->unk70.unk0.unk4;
|
||||
JStack_15c << node->unk70.unk0.unk6;
|
||||
JStack_15c << node->unk70.unk0.unk8[0];
|
||||
JStack_15c << node->unk70.unk0.unk8[1];
|
||||
JStack_15c << node->unk70.unk0.unk8[2];
|
||||
JStack_15c << node->unk70.unk0.unk8[3];
|
||||
JStack_15c << node->unk70.unk0.unk8[4];
|
||||
JStack_15c << node->unk70.unk0.unk8[5];
|
||||
JStack_15c << node->unk70.unk0.unk8[6];
|
||||
JStack_15c << node->unk70.unk0.unk8[7];
|
||||
JStack_15c << node->unk70.unk18.unk0;
|
||||
JStack_15c << node->unk70.unk18.unk1;
|
||||
JStack_15c << node->unk70.unk18.unk2;
|
||||
JStack_15c << node->unk70.unk18.unk3;
|
||||
JStack_15c << node->unk70.unk18.unk4;
|
||||
JStack_15c << node->unk70.unk18.unk6;
|
||||
JStack_15c << node->unk70.unk18.unk8[0];
|
||||
JStack_15c << node->unk70.unk18.unk8[1];
|
||||
JStack_15c << node->unk70.unk18.unk8[2];
|
||||
JStack_15c << node->unk70.unk18.unk8[3];
|
||||
JStack_15c << node->unk70.unk18.unk8[4];
|
||||
JStack_15c << node->unk70.unk18.unk8[5];
|
||||
JStack_15c << node->unk70.unk18.unk8[6];
|
||||
JStack_15c << node->unk70.unk18.unk8[7];
|
||||
file.writeData(saveBuffer, JStack_15c.getPosition());
|
||||
file.close();
|
||||
JKRFree(saveBuffer);
|
||||
} else {
|
||||
JAHUDialog_OK("セーブに失敗しました.", "save", NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void Z2FxLineEditNode::loadLine(LineStereo* node) {
|
||||
JUT_ASSERT(436, node);
|
||||
JORFile file;
|
||||
void* dataArray = NULL;
|
||||
u32 length = 0;
|
||||
if (file.open(NULL, 0x1, cBfcMask, NULL, NULL, NULL)) {
|
||||
length = ALIGN_NEXT(file.getFileSize(), 0x20);
|
||||
dataArray = JKRAllocFromHeap(mHeap, length, 0x20);
|
||||
JUT_ASSERT(517, dataArray);
|
||||
u32 readSize = file.readData(dataArray, 0);
|
||||
file.close();
|
||||
if (readSize < 1) {
|
||||
JAHUDialog_OK("読み込み失敗。JORFile::readData()がfalseを返しました", "読み込み", NULL);
|
||||
JKRFreeToHeap(mHeap, dataArray);
|
||||
}
|
||||
} else {
|
||||
file.close();
|
||||
JAHUDialog_OK(JAHioUtil::getString("%s を読み込めません", file.getFilename()),
|
||||
"データを読み込む", NULL);
|
||||
}
|
||||
|
||||
JSUMemoryInputStream stream(dataArray, length);
|
||||
|
||||
stream >> node->unk70.unk0.unk0;
|
||||
stream >> node->unk70.unk0.unk1;
|
||||
stream >> node->unk70.unk0.unk2;
|
||||
stream >> node->unk70.unk0.unk3;
|
||||
stream >> node->unk70.unk0.unk4;
|
||||
stream >> node->unk70.unk0.unk6;
|
||||
stream >> node->unk70.unk0.unk8[0];
|
||||
stream >> node->unk70.unk0.unk8[1];
|
||||
stream >> node->unk70.unk0.unk8[2];
|
||||
stream >> node->unk70.unk0.unk8[3];
|
||||
stream >> node->unk70.unk0.unk8[4];
|
||||
stream >> node->unk70.unk0.unk8[5];
|
||||
stream >> node->unk70.unk0.unk8[6];
|
||||
stream >> node->unk70.unk0.unk8[7];
|
||||
stream >> node->unk70.unk18.unk0;
|
||||
stream >> node->unk70.unk18.unk1;
|
||||
stream >> node->unk70.unk18.unk2;
|
||||
stream >> node->unk70.unk18.unk3;
|
||||
stream >> node->unk70.unk18.unk4;
|
||||
stream >> node->unk70.unk18.unk6;
|
||||
stream >> node->unk70.unk18.unk8[0];
|
||||
stream >> node->unk70.unk18.unk8[1];
|
||||
stream >> node->unk70.unk18.unk8[2];
|
||||
stream >> node->unk70.unk18.unk8[3];
|
||||
stream >> node->unk70.unk18.unk8[4];
|
||||
stream >> node->unk70.unk18.unk8[5];
|
||||
stream >> node->unk70.unk18.unk8[6];
|
||||
stream >> node->unk70.unk18.unk8[7];
|
||||
|
||||
JKRFree(dataArray);
|
||||
node->updateNode();
|
||||
}
|
||||
|
||||
void Z2FxLineEditNode::LineStereo::message(JAHControl& control) {
|
||||
control.makeButton("reset", 0, 3, 0);
|
||||
control.makeButton("save file", 2, 3, 0);
|
||||
control.makeButton("load file", 3, 3, 0);
|
||||
control.returnY(1);
|
||||
control.makeComment("----- Line L -----", 0, 5, 0);
|
||||
control.indent(1);
|
||||
lineEditSingle(&unk70.unk0, control);
|
||||
control.indent(-1);
|
||||
control.returnY(1);
|
||||
control.makeComment("----- Line R -----", 0, 5, 0);
|
||||
control.indent(1);
|
||||
lineEditSingle(&unk70.unk18, control);
|
||||
control.indent(-1);
|
||||
}
|
||||
|
||||
void Z2FxLineEditNode::LineStereo::propertyEvent(JAH_P_Event param_1, uintptr_t param_2) {
|
||||
if (param_1 == JAH_P_EVENT0)
|
||||
return;
|
||||
|
||||
Z2FxLineEditNode* parent = (Z2FxLineEditNode*)getParent();
|
||||
switch (param_2) {
|
||||
case 0:
|
||||
Z2GetFxLineMgr()->setLineID(-1, mIsDolby, false);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
parent->saveLine(this);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
parent->loadLine(this);
|
||||
break;
|
||||
}
|
||||
|
||||
Z2GetFxLineMgr()->setLine(&unk70, mIsDolby, false);
|
||||
}
|
||||
|
||||
void Z2FxLineEditNode::LineStereo::lineEditSingle(Z2FxLineConfigSingle* param_1,
|
||||
JAHControl& param_2) {
|
||||
if (param_1 == NULL)
|
||||
return;
|
||||
|
||||
param_2.startComboBox("mixmode", ¶m_1->unk0, 3, 0);
|
||||
param_2.makeComboBoxItem("DFX_MIX_STOP", (u8)0);
|
||||
param_2.makeComboBoxItem("DFX_MIX_BEFORE", (u8)1);
|
||||
param_2.makeComboBoxItem("DFX_MIX_AFTER", (u8)2);
|
||||
param_2.endComboBox();
|
||||
|
||||
param_2.returnY(1);
|
||||
|
||||
param_2.startComboBox("send1", ¶m_1->unk1, 3, 0);
|
||||
param_2.makeComboBoxItem("DFXS_MAIN_L", (u8)0);
|
||||
param_2.makeComboBoxItem("DFXS_MAIN_R", (u8)1);
|
||||
param_2.makeComboBoxItem("DFXS_FX1", (u8)2);
|
||||
param_2.makeComboBoxItem("DFXS_FX2", (u8)3);
|
||||
param_2.makeComboBoxItem("DFXS_FX3", (u8)4);
|
||||
param_2.makeComboBoxItem("DFXS_FX4", (u8)5);
|
||||
param_2.makeComboBoxItem("DFXS_FM", (u8)6);
|
||||
param_2.makeComboBoxItem("DFXS_DOLBY", (u8)7);
|
||||
param_2.makeComboBoxItem("DFXS_REV", (u8)8);
|
||||
param_2.makeComboBoxItem("DFXS_CHORUS", (u8)9);
|
||||
param_2.makeComboBoxItem("DFXS_MONO", (u8)10);
|
||||
param_2.makeComboBoxItem("DFXS_NONE", (u8)11);
|
||||
param_2.endComboBox();
|
||||
|
||||
param_2.returnY(1);
|
||||
param_2.makeSlider("mix1", ¶m_1->unk4, 0, 0x7fff, 0);
|
||||
|
||||
param_2.startComboBox("send2", ¶m_1->unk2, 3, 0);
|
||||
param_2.makeComboBoxItem("DFXS_MAIN_L", (u8)0);
|
||||
param_2.makeComboBoxItem("DFXS_MAIN_R", (u8)1);
|
||||
param_2.makeComboBoxItem("DFXS_FX1", (u8)2);
|
||||
param_2.makeComboBoxItem("DFXS_FX2", (u8)3);
|
||||
param_2.makeComboBoxItem("DFXS_FX3", (u8)4);
|
||||
param_2.makeComboBoxItem("DFXS_FX4", (u8)5);
|
||||
param_2.makeComboBoxItem("DFXS_FM", (u8)6);
|
||||
param_2.makeComboBoxItem("DFXS_DOLBY", (u8)7);
|
||||
param_2.makeComboBoxItem("DFXS_REV", (u8)8);
|
||||
param_2.makeComboBoxItem("DFXS_CHORUS", (u8)9);
|
||||
param_2.makeComboBoxItem("DFXS_MONO", (u8)10);
|
||||
param_2.makeComboBoxItem("DFXS_NONE", (u8)11);
|
||||
param_2.endComboBox();
|
||||
|
||||
param_2.returnY(1);
|
||||
param_2.makeSlider("mix2", ¶m_1->unk6, 0, 0x7fff, 0);
|
||||
|
||||
if (mIsDolby)
|
||||
param_2.makeSlider("feedback_frame", ¶m_1->unk3, 0, 120, 0);
|
||||
else
|
||||
param_2.makeSlider("feedback_frame", ¶m_1->unk3, 0, 64, 0);
|
||||
|
||||
param_2.makeSlider("feedback_filter 0", ¶m_1->unk8[0], -0x7fff, 0x7fff, 0);
|
||||
param_2.makeSlider("feedback_filter 1", ¶m_1->unk8[1], -0x7fff, 0x7fff, 0);
|
||||
param_2.makeSlider("feedback_filter 2", ¶m_1->unk8[2], -0x7fff, 0x7fff, 0);
|
||||
param_2.makeSlider("feedback_filter 3", ¶m_1->unk8[3], -0x7fff, 0x7fff, 0);
|
||||
param_2.makeSlider("feedback_filter 4", ¶m_1->unk8[4], -0x7fff, 0x7fff, 0);
|
||||
param_2.makeSlider("feedback_filter 5", ¶m_1->unk8[5], -0x7fff, 0x7fff, 0);
|
||||
param_2.makeSlider("feedback_filter 6", ¶m_1->unk8[6], -0x7fff, 0x7fff, 0);
|
||||
param_2.makeSlider("feedback_filter 7", ¶m_1->unk8[7], -0x7fff, 0x7fff, 0);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "Z2AudioLib/Z2StatusMgr.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include <cstring>
|
||||
#include "Z2AudioLib/SpotName.h"
|
||||
|
||||
Z2SceneMgr::Z2SceneMgr() : JASGlobalInstance<Z2SceneMgr>(true) {
|
||||
sceneNum = -1;
|
||||
@@ -46,90 +47,6 @@ void Z2SceneMgr::setInDarkness(bool inDarkness) {
|
||||
}
|
||||
}
|
||||
|
||||
static char* sSpotName[81] = {
|
||||
"F_SP00",
|
||||
"F_SP103",
|
||||
"R_SP01",
|
||||
"F_SP104",
|
||||
"R_SP107",
|
||||
"F_SP108",
|
||||
"R_SP108",
|
||||
"F_SP117",
|
||||
"F_SP109",
|
||||
"R_SP109",
|
||||
"R_SP209",
|
||||
"F_SP110",
|
||||
"R_SP110",
|
||||
"F_SP111",
|
||||
"F_SP128",
|
||||
"R_SP128",
|
||||
"F_SP115",
|
||||
"F_SP112",
|
||||
"F_SP126",
|
||||
"F_SP127",
|
||||
"R_SP127",
|
||||
"F_SP113",
|
||||
"F_SP116",
|
||||
"R_SP116",
|
||||
"R_SP160",
|
||||
"R_SP161",
|
||||
"F_SP114",
|
||||
"F_SP118",
|
||||
"F_SP124",
|
||||
"F_SP125",
|
||||
"F_SP121",
|
||||
"F_SP122",
|
||||
"F_SP123",
|
||||
"F_SP200",
|
||||
"F_SP102",
|
||||
"",
|
||||
"R_SP300",
|
||||
"R_SP301",
|
||||
"T_ENEMY",
|
||||
"D_MN54",
|
||||
"D_MN05",
|
||||
"D_MN05B",
|
||||
"D_MN05A",
|
||||
"D_MN04",
|
||||
"D_MN04B",
|
||||
"D_MN04A",
|
||||
"D_MN01",
|
||||
"D_MN01B",
|
||||
"D_MN01A",
|
||||
"D_MN10",
|
||||
"D_MN10B",
|
||||
"D_MN10A",
|
||||
"D_MN11",
|
||||
"D_MN11B",
|
||||
"D_MN11A",
|
||||
"D_MN06",
|
||||
"D_MN06B",
|
||||
"D_MN06A",
|
||||
"D_MN07",
|
||||
"D_MN07B",
|
||||
"D_MN07A",
|
||||
"D_MN08",
|
||||
"D_MN08B",
|
||||
"D_MN08C",
|
||||
"D_MN08A",
|
||||
"D_MN08D",
|
||||
"D_MN09",
|
||||
"D_MN09A",
|
||||
"D_MN09B",
|
||||
"D_MN09C",
|
||||
"D_SB00",
|
||||
"D_SB01",
|
||||
"D_SB02",
|
||||
"D_SB03",
|
||||
"D_SB04",
|
||||
"D_SB05",
|
||||
"D_SB06",
|
||||
"D_SB07",
|
||||
"D_SB08",
|
||||
"D_SB09",
|
||||
"D_SB10",
|
||||
};
|
||||
|
||||
void Z2SceneMgr::setSceneExist(bool isSceneExist) {
|
||||
sceneExist = isSceneExist;
|
||||
timer = 0;
|
||||
|
||||
@@ -8,94 +8,11 @@
|
||||
#include "Z2AudioLib/Z2Calc.h"
|
||||
#include "JSystem/JAudio2/JAISoundChild.h"
|
||||
#include "JSystem/JAudio2/JAISeq.h"
|
||||
#include "Z2AudioLib/SpotName.h"
|
||||
#include "os_report.h"
|
||||
|
||||
#include "dusk/audio.h"
|
||||
|
||||
static const char* sSpotName[] = {
|
||||
"F_SP00",
|
||||
"F_SP103",
|
||||
"R_SP01",
|
||||
"F_SP104",
|
||||
"R_SP107",
|
||||
"F_SP108",
|
||||
"R_SP108",
|
||||
"F_SP117",
|
||||
"F_SP109",
|
||||
"R_SP109",
|
||||
"R_SP209",
|
||||
"F_SP110",
|
||||
"R_SP110",
|
||||
"F_SP111",
|
||||
"F_SP128",
|
||||
"R_SP128",
|
||||
"F_SP115",
|
||||
"F_SP112",
|
||||
"F_SP126",
|
||||
"F_SP127",
|
||||
"R_SP127",
|
||||
"F_SP113",
|
||||
"F_SP116",
|
||||
"R_SP116",
|
||||
"R_SP160",
|
||||
"R_SP161",
|
||||
"F_SP114",
|
||||
"F_SP118",
|
||||
"F_SP124",
|
||||
"F_SP125",
|
||||
"F_SP121",
|
||||
"F_SP122",
|
||||
"F_SP123",
|
||||
"F_SP200",
|
||||
"F_SP102",
|
||||
"",
|
||||
"R_SP300",
|
||||
"R_SP301",
|
||||
"T_ENEMY",
|
||||
"D_MN54",
|
||||
"D_MN05",
|
||||
"D_MN05B",
|
||||
"D_MN05A",
|
||||
"D_MN04",
|
||||
"D_MN04B",
|
||||
"D_MN04A",
|
||||
"D_MN01",
|
||||
"D_MN01B",
|
||||
"D_MN01A",
|
||||
"D_MN10",
|
||||
"D_MN10B",
|
||||
"D_MN10A",
|
||||
"D_MN11",
|
||||
"D_MN11B",
|
||||
"D_MN11A",
|
||||
"D_MN06",
|
||||
"D_MN06B",
|
||||
"D_MN06A",
|
||||
"D_MN07",
|
||||
"D_MN07B",
|
||||
"D_MN07A",
|
||||
"D_MN08",
|
||||
"D_MN08B",
|
||||
"D_MN08C",
|
||||
"D_MN08A",
|
||||
"D_MN08D",
|
||||
"D_MN09",
|
||||
"D_MN09A",
|
||||
"D_MN09B",
|
||||
"D_MN09C",
|
||||
"D_SB00",
|
||||
"D_SB01",
|
||||
"D_SB02",
|
||||
"D_SB03",
|
||||
"D_SB04",
|
||||
"D_SB05",
|
||||
"D_SB06",
|
||||
"D_SB07",
|
||||
"D_SB08",
|
||||
"D_SB09",
|
||||
"D_SB10",
|
||||
};
|
||||
|
||||
Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(true) {
|
||||
mMainBgmMaster.forceIn();
|
||||
mSubBgmMaster.forceIn();
|
||||
|
||||
@@ -3,90 +3,7 @@
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_s_play.h"
|
||||
#include <cstring>
|
||||
|
||||
static const char* sSpotName[] = {
|
||||
"F_SP00",
|
||||
"F_SP103",
|
||||
"R_SP01",
|
||||
"F_SP104",
|
||||
"R_SP107",
|
||||
"F_SP108",
|
||||
"R_SP108",
|
||||
"F_SP117",
|
||||
"F_SP109",
|
||||
"R_SP109",
|
||||
"R_SP209",
|
||||
"F_SP110",
|
||||
"R_SP110",
|
||||
"F_SP111",
|
||||
"F_SP128",
|
||||
"R_SP128",
|
||||
"F_SP115",
|
||||
"F_SP112",
|
||||
"F_SP126",
|
||||
"F_SP127",
|
||||
"R_SP127",
|
||||
"F_SP113",
|
||||
"F_SP116",
|
||||
"R_SP116",
|
||||
"R_SP160",
|
||||
"R_SP161",
|
||||
"F_SP114",
|
||||
"F_SP118",
|
||||
"F_SP124",
|
||||
"F_SP125",
|
||||
"F_SP121",
|
||||
"F_SP122",
|
||||
"F_SP123",
|
||||
"F_SP200",
|
||||
"F_SP102",
|
||||
"",
|
||||
"R_SP300",
|
||||
"R_SP301",
|
||||
"T_ENEMY",
|
||||
"D_MN54",
|
||||
"D_MN05",
|
||||
"D_MN05B",
|
||||
"D_MN05A",
|
||||
"D_MN04",
|
||||
"D_MN04B",
|
||||
"D_MN04A",
|
||||
"D_MN01",
|
||||
"D_MN01B",
|
||||
"D_MN01A",
|
||||
"D_MN10",
|
||||
"D_MN10B",
|
||||
"D_MN10A",
|
||||
"D_MN11",
|
||||
"D_MN11B",
|
||||
"D_MN11A",
|
||||
"D_MN06",
|
||||
"D_MN06B",
|
||||
"D_MN06A",
|
||||
"D_MN07",
|
||||
"D_MN07B",
|
||||
"D_MN07A",
|
||||
"D_MN08",
|
||||
"D_MN08B",
|
||||
"D_MN08C",
|
||||
"D_MN08A",
|
||||
"D_MN08D",
|
||||
"D_MN09",
|
||||
"D_MN09A",
|
||||
"D_MN09B",
|
||||
"D_MN09C",
|
||||
"D_SB00",
|
||||
"D_SB01",
|
||||
"D_SB02",
|
||||
"D_SB03",
|
||||
"D_SB04",
|
||||
"D_SB05",
|
||||
"D_SB06",
|
||||
"D_SB07",
|
||||
"D_SB08",
|
||||
"D_SB09",
|
||||
"D_SB10",
|
||||
};
|
||||
#include "Z2AudioLib/SpotName.h"
|
||||
|
||||
Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(true) {
|
||||
mHour = 0;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "Z2AudioLib/Z2SoundMgr.h"
|
||||
#include "Z2AudioLib/Z2Audience.h"
|
||||
#include "d/d_demo.h"
|
||||
#include "Z2AudioLib/SpotName.h"
|
||||
#include "os_report.h"
|
||||
|
||||
static f32 cPitchDown = 0.8909f;
|
||||
|
||||
@@ -4453,7 +4453,7 @@ void daAlink_c::playerInit() {
|
||||
mAtSph.StartCAt(current.pos);
|
||||
|
||||
mAnmHeap3.setBufferSize(0x20000);
|
||||
mAnmHeap3.createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
|
||||
PLAYER_CREATE_ANM_HEAP(mAnmHeap3, daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mAnmHeap3");
|
||||
|
||||
if (checkWolf()) {
|
||||
changeWolf();
|
||||
@@ -4462,7 +4462,7 @@ void daAlink_c::playerInit() {
|
||||
}
|
||||
|
||||
mAnmHeap4.setBufferSize(0xB00);
|
||||
mAnmHeap4.createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
|
||||
PLAYER_CREATE_ANM_HEAP(mAnmHeap4, daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mAnmHeap4");
|
||||
setShieldModel();
|
||||
|
||||
#if DEBUG
|
||||
@@ -4507,24 +4507,24 @@ void daAlink_c::playerInit() {
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
mUnderAnmHeap[i].setBuffer(mUnderAnmHeap[0].getBuffer() + (i * 0x2C00));
|
||||
mUnderAnmHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
|
||||
PLAYER_CREATE_ANM_HEAP_F(mUnderAnmHeap[i], daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mUnderAnmHeap[%d]", i);
|
||||
}
|
||||
mUpperAnmHeap[0].setBuffer(mUnderAnmHeap[0].getBuffer() + 0x8400);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
mUpperAnmHeap[i].setBuffer(mUpperAnmHeap[0].getBuffer() + (i * 0x2C00));
|
||||
mUpperAnmHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
|
||||
PLAYER_CREATE_ANM_HEAP_F(mUpperAnmHeap[i], daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mUpperAnmHeap[%d]", i);
|
||||
}
|
||||
|
||||
mFaceBtpHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_1);
|
||||
mFaceBtkHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_2);
|
||||
mFaceBckHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
|
||||
PLAYER_CREATE_ANM_HEAP(mFaceBtpHeap, daPy_anmHeap_c::HEAP_TYPE_1, "daAlink_c::mFaceBtpHeap");
|
||||
PLAYER_CREATE_ANM_HEAP(mFaceBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daAlink_c::mFaceBtkHeap");
|
||||
PLAYER_CREATE_ANM_HEAP(mFaceBckHeap, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mFaceBckHeap");
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
mItemHeap[i].setBufferSize(0x13200);
|
||||
mItemHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
|
||||
PLAYER_CREATE_ANM_HEAP_F(mItemHeap[i], daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mItemHeap[%d]", i);
|
||||
}
|
||||
mAnmHeap9.createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
|
||||
PLAYER_CREATE_ANM_HEAP(mAnmHeap9, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mAnmHeap9");
|
||||
resetBasAnime();
|
||||
|
||||
mZ2Link.init(¤t.pos, &eyePos, &field_0x3720);
|
||||
|
||||
@@ -532,6 +532,7 @@ int daBg_c::create() {
|
||||
if (room_heap != NULL) {
|
||||
this->heap = JKRCreateSolidHeap(-1, room_heap, false);
|
||||
JUT_ASSERT(471, heap != NULL);
|
||||
JKRHEAP_NAME(heap, "d_a_bg Anms");
|
||||
|
||||
JKRHeap* old = mDoExt_setCurrentHeap(this->heap);
|
||||
int rt = createHeap();
|
||||
|
||||
@@ -1578,11 +1578,17 @@ bool daE_DT_c::pointInSight(cXyz* i_point) {
|
||||
f32 width = scissor->width;
|
||||
f32 height = scissor->height;
|
||||
mDoLib_project(i_point, &proj);
|
||||
|
||||
#if TARGET_PC
|
||||
view_port_class* viewport = dComIfGp_getWindow(dComIfGp_getCameraWinID(idx))->getViewPort();
|
||||
return proj.x > 0.0f && proj.x < width && proj.y > (30.0f * viewport->height / FB_HEIGHT) && -(30.0f * viewport->height / FB_HEIGHT) < height;
|
||||
#else
|
||||
if (proj.x > 0.0f && proj.x < width && proj.y > 30.0f && -30.0f < height) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void daE_DT_c::executeOpening() {
|
||||
|
||||
@@ -527,7 +527,7 @@ static void search_ground_1(e_yg_class* i_this) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
|
||||
dBgS_LinChk lin_chk;
|
||||
cXyz start, end, work;
|
||||
cXyz pos[16];
|
||||
cXyz pos[16]{};
|
||||
s16 y_rot = actor->shape_angle.y;
|
||||
s8 line_cross_flag = false;
|
||||
|
||||
@@ -560,6 +560,14 @@ static void search_ground_1(e_yg_class* i_this) {
|
||||
pos[i] = actor->current.pos;
|
||||
pos[i].x += 10000.0f;
|
||||
}
|
||||
} else {
|
||||
// Ensure all elements are initialized. This function is buggy and
|
||||
// blows up if pos[0].x or pos[0].z is NaN, but for some reason this
|
||||
// never happens on hardware - probably just dumb luck.
|
||||
#if AVOID_UB
|
||||
pos[i] = actor->current.pos;
|
||||
pos[i].x += 10000.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
ANGLE_ADD(y_rot, 0x1000);
|
||||
|
||||
@@ -565,12 +565,12 @@ cPhs_Step daMidna_c::create() {
|
||||
mpFunc = &daMidna_c::checkMetamorphoseEnableBase;
|
||||
|
||||
for (u16 i = 0; i < 3; i++) {
|
||||
mBckHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
|
||||
PLAYER_CREATE_ANM_HEAP_F(mBckHeap[i], daPy_anmHeap_c::HEAP_TYPE_3, "daMidna_c::mBckHeap[%d]", i);
|
||||
}
|
||||
|
||||
mBtpHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_1);
|
||||
mBtkHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_2);
|
||||
|
||||
PLAYER_CREATE_ANM_HEAP_F(mBtpHeap, daPy_anmHeap_c::HEAP_TYPE_1, "daMidna_c::mBtpHeap");
|
||||
PLAYER_CREATE_ANM_HEAP_F(mBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daMidna_c::mBtkHeap");
|
||||
|
||||
mSound.init(¤t.pos, &eyePos, 3, 1);
|
||||
mpShadowModel = mpMorf->getModel();
|
||||
mpShadowModel->setUserArea((uintptr_t)this);
|
||||
|
||||
@@ -823,7 +823,15 @@ void daNpcTks_c::playMotion() {
|
||||
daNpcF_anmPlayData dat4a = {ANM_JUMP_S, 4.0f, 1};
|
||||
daNpcF_anmPlayData dat4b = {ANM_FLY, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
|
||||
|
||||
#if TARGET_PC
|
||||
// Note: this fixes a crash in the cutscene after entering city and likely needs to be revisited as its
|
||||
// unclear why this was 1 in the first place and unclear why this fixes it
|
||||
daNpcF_anmPlayData dat5 = {ANM_JUMP_E, 0.0f, 0};
|
||||
#else
|
||||
daNpcF_anmPlayData dat5 = {ANM_JUMP_E, 0.0f, 1};
|
||||
#endif
|
||||
|
||||
daNpcF_anmPlayData* pDat5[1] = {&dat5};
|
||||
daNpcF_anmPlayData dat6a = {ANM_LAND, 0.0f, 1};
|
||||
daNpcF_anmPlayData dat6b = {ANM_WAIT_A, 4.0f, 0};
|
||||
|
||||
@@ -1008,6 +1008,7 @@ int daPeru_c::_cutAppear_Init(int const& param_1) {
|
||||
initTalk(mFlowNodeNo, NULL);
|
||||
break;
|
||||
case 140:
|
||||
{
|
||||
static cXyz see_pos;
|
||||
see_pos.set(0.0f, -300.0f, 300.0f);
|
||||
mDoMtx_stack_c::ZXYrotS(shape_angle);
|
||||
@@ -1016,6 +1017,7 @@ int daPeru_c::_cutAppear_Init(int const& param_1) {
|
||||
mJntAnm.lookPos(&see_pos, 0);
|
||||
setCnt(80);
|
||||
break;
|
||||
}
|
||||
case 150:
|
||||
mJntAnm.lookNone(0);
|
||||
setAction(&daPeru_c::demo_walk_to_window, 0);
|
||||
|
||||
@@ -237,7 +237,11 @@ void* daPy_anmHeap_c::mallocBuffer() {
|
||||
return mBuffer;
|
||||
}
|
||||
|
||||
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) {
|
||||
#if TARGET_PC
|
||||
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType, const char* name) {
|
||||
#else
|
||||
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType, const char* name) {
|
||||
#endif
|
||||
u32 size;
|
||||
|
||||
if (i_heapType == 4) {
|
||||
@@ -260,8 +264,8 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) {
|
||||
|
||||
JKRHeap* tmp;
|
||||
mAnimeHeap = mDoExt_createSolidHeapFromGameToCurrent(&tmp, size, 0x20);
|
||||
JKRHEAP_NAMEF(mAnimeHeap, "Alink anime type %d", i_heapType);
|
||||
|
||||
JKRHEAP_NAME(mAnimeHeap, name);
|
||||
|
||||
if (i_heapType == 4) {
|
||||
tmpWork = JKR_NEW_ARRAY(char, size);
|
||||
JUT_ASSERT(669, tmpWork != NULL);
|
||||
|
||||
@@ -10997,7 +10997,14 @@ static int camera_draw(camera_process_class* i_this) {
|
||||
#endif
|
||||
|
||||
int trim_height = body->TrimHeight();
|
||||
|
||||
#if TARGET_PC
|
||||
trim_height *= viewport->height / FB_HEIGHT;
|
||||
window->setScissor(0.0f, trim_height, viewport->width, viewport->height - trim_height * 2.0f);
|
||||
#else
|
||||
window->setScissor(0.0f, trim_height, FB_WIDTH, FB_HEIGHT - trim_height * 2.0f);
|
||||
#endif
|
||||
|
||||
C_MTXPerspective(process->view.projMtx, process->view.fovy, process->view.aspect, process->view.near_, process->view.far_);
|
||||
mDoMtx_lookAt(process->view.viewMtx, &process->view.lookat.eye, &process->view.lookat.center,
|
||||
&process->view.lookat.up, process->view.bank);
|
||||
|
||||
@@ -5195,6 +5195,7 @@ void dFile_select3D_c::_create(u8 i_mirrorIdx, u8 i_maskIdx) {
|
||||
if (mpSolidHeap == NULL) {
|
||||
JUT_ASSERT(5189, mpSolidHeap != NULL);
|
||||
}
|
||||
JKRHEAP_NAME(mpSolidHeap, "dFile_select3D_c::mpSolidHeap");
|
||||
|
||||
field_0x03c4 = 0.0f;
|
||||
field_0x03c8 = 0.0f;
|
||||
|
||||
@@ -35,6 +35,7 @@ int dkWmark_c::create() {
|
||||
|
||||
mpHeap = mDoExt_createSolidHeapFromGameToCurrent(0x880, 0x20);
|
||||
if (mpHeap != NULL) {
|
||||
JKRHEAP_NAME(mpHeap, "dkWmark_c::mpHeap");
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Alink", 0x23);
|
||||
JUT_ASSERT(60, modelData != NULL);
|
||||
|
||||
|
||||
+9
-1
@@ -31,6 +31,9 @@
|
||||
#include "JSystem/JKernel/JKRSolidHeap.h"
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#if TARGET_PC
|
||||
#include "dusk/imgui/ImGuiConsole.hpp"
|
||||
#endif
|
||||
|
||||
static void GxXFog_set();
|
||||
|
||||
@@ -11376,7 +11379,12 @@ void dKy_bg_MAxx_proc(void* bg_model_p) {
|
||||
Mtx sp1D8;
|
||||
if (mat_name[6] == '2') {
|
||||
C_MTXLightPerspective(sp1D8, dComIfGd_getView()->fovy,
|
||||
camera_p->view.aspect, 1.0f, 1.0f, -0.01f, 0.0f);
|
||||
camera_p->view.aspect, 1.0f, 1.0f,
|
||||
#if TARGET_PC
|
||||
dusk::g_imguiConsole.isWaterProjectionOffsetEnabled() ? -0.01f : 0.0f, 0.0f);
|
||||
#else
|
||||
-0.01f, 0.0f);
|
||||
#endif
|
||||
} else {
|
||||
C_MTXLightPerspective(sp1D8, dComIfGd_getView()->fovy,
|
||||
camera_p->view.aspect, 0.49f, -0.49f, 0.5f, 0.5f);
|
||||
|
||||
@@ -26,6 +26,8 @@ int dThunder_c::createHeap() {
|
||||
if (mpHeap == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
JKRHEAP_NAME(mpHeap, "dThunder_c::mpHeap");
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -2222,6 +2222,7 @@ dMenu_Collect3D_c::~dMenu_Collect3D_c() {
|
||||
void dMenu_Collect3D_c::_create() {
|
||||
mpHeap->getTotalFreeSize();
|
||||
mpSolidHeap = mDoExt_createSolidHeapToCurrent(0x25800, mpHeap, 0x20);
|
||||
JKRHEAP_NAME(mpSolidHeap, "dMenu_Collect3D_c::mpSolidHeap");
|
||||
mDoExt_setCurrentHeap((JKRHeap*)mpSolidHeap);
|
||||
daAlink_c* linkActor = daAlink_getAlinkActorClass();
|
||||
if (linkActor != NULL) {
|
||||
|
||||
@@ -1649,6 +1649,7 @@ void dMenu_Dmap_c::_create() {
|
||||
|
||||
mDmapHeap = JKRCreateExpHeap(field_0xe8->getFreeSize() - 0x10, field_0xe8, false);
|
||||
JUT_ASSERT(3732, mDmapHeap != NULL);
|
||||
JKRHEAP_NAME(mDmapHeap, "dMenu_Dmap_c::mDmapHeap");
|
||||
JKRHeap* heap = mDoExt_setCurrentHeap(mDmapHeap);
|
||||
u32 sp28 = mDmapHeap->getTotalFreeSize();
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ static void dSmplMdl_modelUpdateDL(J3DModel* i_model) {
|
||||
dSmplMdl_draw_c::dSmplMdl_draw_c() {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
mModel[i].init();
|
||||
mModel[i].setIdx(i);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 500; i++) {
|
||||
@@ -128,6 +129,7 @@ BOOL diff_model_c::create(J3DModelData* i_modelData, int roomNo, u8 drawBG) {
|
||||
JUT_ASSERT(397, i_modelData != NULL);
|
||||
if (mpHeap == NULL) {
|
||||
mpHeap = mDoExt_createSolidHeapFromGameToCurrent(0x2000, 0x20);
|
||||
JKRHEAP_NAMEF(mpHeap, "Simple model (%d)", idx);
|
||||
|
||||
if (mpHeap != NULL) {
|
||||
mpModel = mDoExt_J3DModel__create(i_modelData, 0x80000, 0x11000084);
|
||||
|
||||
@@ -393,6 +393,7 @@ static void dummy1(dStage_roomControl_c* roomControl) {
|
||||
JKRExpHeap* dStage_roomControl_c::createMemoryBlock(int i_blockIdx, u32 i_heapSize) {
|
||||
if (mMemoryBlock[i_blockIdx] == NULL) {
|
||||
mMemoryBlock[i_blockIdx] = JKRCreateExpHeap(i_heapSize, mDoExt_getArchiveHeap(), false);
|
||||
JKRHEAP_NAMEF(mMemoryBlock[i_blockIdx], "Room control memory block %d", i_blockIdx);
|
||||
}
|
||||
|
||||
return mMemoryBlock[i_blockIdx];
|
||||
|
||||
@@ -40,6 +40,7 @@ int dTimer_c::_create() {
|
||||
dComIfGp_setAllMapArchive(resInfo->getArchive());
|
||||
|
||||
mp_heap = fopMsgM_createExpHeap(0x11000, NULL);
|
||||
JKRHEAP_NAME(mp_heap, "dTimer_c::mp_heap");
|
||||
JKRHeap* prev_heap = mDoExt_setCurrentHeap(mp_heap);
|
||||
if (mp_heap != NULL) {
|
||||
mp_heap->getTotalFreeSize();
|
||||
|
||||
+2
-12
@@ -616,24 +616,14 @@ s32 OSEnableScheduler(void) {
|
||||
// ============================================================================
|
||||
|
||||
BOOL OSDisableInterrupts(void) {
|
||||
GetInterruptMutex().lock();
|
||||
sInterruptLockCount++;
|
||||
return (BOOL)(sInterruptLockCount > 1); // TRUE if was already locked
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL OSRestoreInterrupts(BOOL level) {
|
||||
if (sInterruptLockCount > 0) {
|
||||
sInterruptLockCount--;
|
||||
GetInterruptMutex().unlock();
|
||||
}
|
||||
return level;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL OSEnableInterrupts(void) {
|
||||
if (sInterruptLockCount > 0) {
|
||||
sInterruptLockCount--;
|
||||
GetInterruptMutex().unlock();
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace dusk {
|
||||
void draw();
|
||||
|
||||
bool isBloomEnabled() { return m_menuGame.isBloomEnabled(); }
|
||||
bool isWaterProjectionOffsetEnabled() { return m_menuGame.isWaterProjectionOffsetEnabled(); }
|
||||
ImGuiMenuTools::CollisionViewSettings& getCollisionViewSettings() { return m_menuTools.getCollisionViewSettings(); }
|
||||
|
||||
static bool CheckMenuViewToggle(ImGuiKey key, bool& active);
|
||||
|
||||
@@ -36,6 +36,8 @@ namespace dusk {
|
||||
if (ImGui::Selectable(region.regionName)) {
|
||||
if (m_mapLoaderInfo.regionIdx != idx) {
|
||||
m_mapLoaderInfo.mapIdx = 0;
|
||||
m_mapLoaderInfo.roomNoIdx = 0;
|
||||
m_mapLoaderInfo.pointNoIdx = 0;
|
||||
}
|
||||
m_mapLoaderInfo.regionIdx = idx;
|
||||
}
|
||||
@@ -68,7 +70,7 @@ namespace dusk {
|
||||
m_mapLoaderInfo.pointNoIdx = 0;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
ImGui::Text("No region selected.");
|
||||
}
|
||||
|
||||
@@ -97,6 +99,24 @@ namespace dusk {
|
||||
}
|
||||
}
|
||||
|
||||
constexpr int MAX_LAYER = 14;
|
||||
|
||||
ImGui::Text("Selected Layer: %3d", m_mapLoaderInfo.layer);
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("-###layerDec")) {
|
||||
m_mapLoaderInfo.layer--;
|
||||
if (m_mapLoaderInfo.layer < -1) {
|
||||
m_mapLoaderInfo.layer = MAX_LAYER;
|
||||
}
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("+###layerInc")) {
|
||||
m_mapLoaderInfo.layer++;
|
||||
if (m_mapLoaderInfo.layer > MAX_LAYER) {
|
||||
m_mapLoaderInfo.layer = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (room.numPoints > 1) {
|
||||
ImGui::Text("Selected Point: %3d", room.roomPoints[m_mapLoaderInfo.pointNoIdx]);
|
||||
ImGui::SameLine();
|
||||
@@ -116,7 +136,7 @@ namespace dusk {
|
||||
}
|
||||
|
||||
if (ImGui::Button("Warp")) {
|
||||
dComIfGp_setNextStage(map.mapFile, room.roomPoints[m_mapLoaderInfo.pointNoIdx], room.roomNo, -1);
|
||||
dComIfGp_setNextStage(map.mapFile, room.roomPoints[m_mapLoaderInfo.pointNoIdx], room.roomNo, m_mapLoaderInfo.layer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,11 @@ namespace dusk {
|
||||
|
||||
if (ImGui::BeginMenu("Graphics")) {
|
||||
ImGui::Checkbox("Native Bloom", &m_graphicsSettings.m_enableBloom);
|
||||
ImGui::Checkbox("Water Projection Offset", &m_graphicsSettings.m_waterProjectionOffset);
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip("Adds GC-specific -0.01 transS offset\n"
|
||||
"that causes ~6px ghost artifacts in water reflections");
|
||||
}
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace dusk {
|
||||
ImGuiMenuGame();
|
||||
void draw();
|
||||
bool isBloomEnabled() { return m_graphicsSettings.m_enableBloom; }
|
||||
bool isWaterProjectionOffsetEnabled() { return m_graphicsSettings.m_waterProjectionOffset; }
|
||||
|
||||
void windowInputViewer();
|
||||
void windowControllerConfig();
|
||||
@@ -35,6 +36,7 @@ namespace dusk {
|
||||
|
||||
struct {
|
||||
bool m_enableBloom = 1;
|
||||
bool m_waterProjectionOffset = false;
|
||||
} m_graphicsSettings;
|
||||
|
||||
bool m_showControllerConfig = false;
|
||||
|
||||
+297
-264
@@ -11,263 +11,273 @@
|
||||
#include <map>
|
||||
|
||||
namespace dusk {
|
||||
std::map<int, std::string> itemMap = {
|
||||
{dItemNo_HEART_e, "Heart"},
|
||||
{dItemNo_GREEN_RUPEE_e, "Green Rupee"},
|
||||
{dItemNo_BLUE_RUPEE_e, "Blue Rupee"},
|
||||
{dItemNo_YELLOW_RUPEE_e, "Yellow Rupee"},
|
||||
{dItemNo_RED_RUPEE_e, "Red Rupee"},
|
||||
{dItemNo_PURPLE_RUPEE_e, "Purple Rupee"},
|
||||
{dItemNo_ORANGE_RUPEE_e, "Orange Rupee"},
|
||||
{dItemNo_SILVER_RUPEE_e, "Silver Rupee"},
|
||||
{dItemNo_S_MAGIC_e, "Small Magic"},
|
||||
{dItemNo_L_MAGIC_e, "Large Magic"},
|
||||
{dItemNo_BOMB_5_e, "Bombs (5)"},
|
||||
{dItemNo_BOMB_10_e, "Bombs (10)"},
|
||||
{dItemNo_BOMB_20_e, "Bombs (20)"},
|
||||
{dItemNo_BOMB_30_e, "Bombs (30)"},
|
||||
{dItemNo_ARROW_10_e, "Arrows (10)"},
|
||||
{dItemNo_ARROW_20_e, "Arrows (20)"},
|
||||
{dItemNo_ARROW_30_e, "Arrows (30)"},
|
||||
{dItemNo_ARROW_1_e, "Arrows (1)"},
|
||||
{dItemNo_PACHINKO_SHOT_e, "Pumpkin Seeds"},
|
||||
{dItemNo_NOENTRY_19_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_20_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_21_e, "Unknown"},
|
||||
{dItemNo_WATER_BOMB_5_e, "Water Bombs (5)"},
|
||||
{dItemNo_WATER_BOMB_10_e, "Water Bombs (10)"},
|
||||
{dItemNo_WATER_BOMB_20_e, "Water Bombs (20)"},
|
||||
{dItemNo_WATER_BOMB_30_e, "Water Bombs (30)"},
|
||||
{dItemNo_BOMB_INSECT_5_e, "Bomblings (5)"},
|
||||
{dItemNo_BOMB_INSECT_10_e, "Bomblings (10)"},
|
||||
{dItemNo_BOMB_INSECT_20_e, "Bomblings (20)"},
|
||||
{dItemNo_BOMB_INSECT_30_e, "Bomblings (30)"},
|
||||
{dItemNo_RECOVERY_FAILY_e, "Fairy"},
|
||||
{dItemNo_TRIPLE_HEART_e, "Triple Hearts"},
|
||||
{dItemNo_SMALL_KEY_e, "Small Key"},
|
||||
{dItemNo_KAKERA_HEART_e, "Piece of Heart"},
|
||||
{dItemNo_UTAWA_HEART_e, "Heart Container"},
|
||||
{dItemNo_MAP_e, "Map"},
|
||||
{dItemNo_COMPUS_e, "Compass"},
|
||||
{dItemNo_DUNGEON_EXIT_e, "Ooccoo Sr."},
|
||||
{dItemNo_BOSS_KEY_e, "Boss Key"},
|
||||
{dItemNo_DUNGEON_BACK_e, "Ooccoo Jr."},
|
||||
{dItemNo_SWORD_e, "Ordon Sword"},
|
||||
{dItemNo_MASTER_SWORD_e, "Master Sword"},
|
||||
{dItemNo_WOOD_SHIELD_e, "Wooden Shield"},
|
||||
{dItemNo_SHIELD_e, "Ordon Shield"},
|
||||
{dItemNo_HYLIA_SHIELD_e, "Hylian Shield"},
|
||||
{dItemNo_TKS_LETTER_e, "Ooccoo's Letter"},
|
||||
{dItemNo_WEAR_CASUAL_e, "Ordon Clothes"},
|
||||
{dItemNo_WEAR_KOKIRI_e, "Hero's Clothes"},
|
||||
{dItemNo_ARMOR_e, "Magic Armor"},
|
||||
{dItemNo_WEAR_ZORA_e, "Zora Armor"},
|
||||
{dItemNo_MAGIC_LV1_e, "Magic Level 1"},
|
||||
{dItemNo_DUNGEON_EXIT_2_e, "Ooccoo Sr."},
|
||||
{dItemNo_WALLET_LV1_e, "Wallet"},
|
||||
{dItemNo_WALLET_LV2_e, "Big Wallet"},
|
||||
{dItemNo_WALLET_LV3_e, "Giant Wallet"},
|
||||
{dItemNo_NOENTRY_55_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_56_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_57_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_58_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_59_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_60_e, "Unknown"},
|
||||
{dItemNo_ZORAS_JEWEL_e, "Coral Earring"},
|
||||
{dItemNo_HAWK_EYE_e, "Hawkeye"},
|
||||
{dItemNo_WOOD_STICK_e, "Wooden Sword"},
|
||||
{dItemNo_BOOMERANG_e, "Gale Boomerang"},
|
||||
{dItemNo_SPINNER_e, "Spinner"},
|
||||
{dItemNo_IRONBALL_e, "Ball and Chain"},
|
||||
{dItemNo_BOW_e, "Hero's Bow"},
|
||||
{dItemNo_HOOKSHOT_e, "Clawshot"},
|
||||
{dItemNo_HVY_BOOTS_e, "Iron Boots"},
|
||||
{dItemNo_COPY_ROD_e, "Dominion Rod"},
|
||||
{dItemNo_W_HOOKSHOT_e, "Double Clawshots"},
|
||||
{dItemNo_KANTERA_e, "Lantern"},
|
||||
{dItemNo_LIGHT_SWORD_e, "Light Sword"},
|
||||
{dItemNo_FISHING_ROD_1_e, "Fishing Rod"},
|
||||
{dItemNo_PACHINKO_e, "Slingshot"},
|
||||
{dItemNo_COPY_ROD_2_e, "Dominion Rod"},
|
||||
{dItemNo_NOENTRY_77_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_78_e, "Unknown"},
|
||||
{dItemNo_BOMB_BAG_LV2_e, "Giant Bomb Bag"},
|
||||
{dItemNo_BOMB_BAG_LV1_e, "Bomb Bag"},
|
||||
{dItemNo_BOMB_IN_BAG_e, "Bomb Bag"},
|
||||
{dItemNo_NOENTRY_82_e, "Unknown"},
|
||||
{dItemNo_LIGHT_ARROW_e, "Light Arrow"},
|
||||
{dItemNo_ARROW_LV1_e, "Quiver"},
|
||||
{dItemNo_ARROW_LV2_e, "Big Quiver"},
|
||||
{dItemNo_ARROW_LV3_e, "Giant Quiver"},
|
||||
{dItemNo_NOENTRY_87_e, "Unknown"},
|
||||
{dItemNo_LURE_ROD_e, "Fishing Rod (Lure)"},
|
||||
{dItemNo_BOMB_ARROW_e, "Bomb Arrow"},
|
||||
{dItemNo_HAWK_ARROW_e, "Hawk Arrow"},
|
||||
{dItemNo_BEE_ROD_e, "Fishing Rod (Bee Larva)"},
|
||||
{dItemNo_JEWEL_ROD_e, "Fishing Rod (Earring)"},
|
||||
{dItemNo_WORM_ROD_e, "Fishing Rod (Worm)"},
|
||||
{dItemNo_JEWEL_BEE_ROD_e, "Fishing Rod (Earring + Bee Larva)"},
|
||||
{dItemNo_JEWEL_WORM_ROD_e, "Fishing Rod (Earring + Worm)"},
|
||||
{dItemNo_EMPTY_BOTTLE_e, "Empty Bottle"},
|
||||
{dItemNo_RED_BOTTLE_e, "Red Potion"},
|
||||
{dItemNo_GREEN_BOTTLE_e, "Green Potion"},
|
||||
{dItemNo_BLUE_BOTTLE_e, "Blue Potion"},
|
||||
{dItemNo_MILK_BOTTLE_e, "Milk Bottle"},
|
||||
{dItemNo_HALF_MILK_BOTTLE_e, "Half Milk Bottle"},
|
||||
{dItemNo_OIL_BOTTLE_e, "Lantern Oil"},
|
||||
{dItemNo_WATER_BOTTLE_e, "Water Bottle"},
|
||||
{dItemNo_OIL_BOTTLE_2_e, "Oil Bottle"},
|
||||
{dItemNo_RED_BOTTLE_2_e, "Red Potion"},
|
||||
{dItemNo_UGLY_SOUP_e, "Nasty Soup"},
|
||||
{dItemNo_HOT_SPRING_e, "Hotspring Water"},
|
||||
{dItemNo_FAIRY_e, "Fairy"},
|
||||
{dItemNo_HOT_SPRING_2_e, "Hotspring Water"},
|
||||
{dItemNo_OIL2_e, "Lantern Oil"},
|
||||
{dItemNo_OIL_e, "Lantern Oil"},
|
||||
{dItemNo_NORMAL_BOMB_e, "Bombs"},
|
||||
{dItemNo_WATER_BOMB_e, "Water Bombs"},
|
||||
{dItemNo_POKE_BOMB_e, "Bomblings"},
|
||||
{dItemNo_FAIRY_DROP_e, "Great Fairy's Tears"},
|
||||
{dItemNo_WORM_e, "Worm"},
|
||||
{dItemNo_DROP_BOTTLE_e, ""},
|
||||
{dItemNo_BEE_CHILD_e, ""},
|
||||
{dItemNo_CHUCHU_RARE_e, "Rare Chu Jelly"},
|
||||
{dItemNo_CHUCHU_RED_e, "Red Chu Jelly"},
|
||||
{dItemNo_CHUCHU_BLUE_e, "Blue Chu Jelly"},
|
||||
{dItemNo_CHUCHU_GREEN_e, "Green Chu Jelly"},
|
||||
{dItemNo_CHUCHU_YELLOW_e, "Yellow Chu Jelly"},
|
||||
{dItemNo_CHUCHU_PURPLE_e, "Purple Chu Jelly"},
|
||||
{dItemNo_LV1_SOUP_e, "Simple Soup"},
|
||||
{dItemNo_LV2_SOUP_e, "Good Soup"},
|
||||
{dItemNo_LV3_SOUP_e, "Superb Soup"},
|
||||
{dItemNo_LETTER_e, "Renado's Letter"},
|
||||
{dItemNo_BILL_e, "Invoice"},
|
||||
{dItemNo_WOOD_STATUE_e, "Wooden Statue"},
|
||||
{dItemNo_IRIAS_PENDANT_e, "Ilia's Charm"},
|
||||
{dItemNo_HORSE_FLUTE_e, "Horse Call"},
|
||||
{dItemNo_NOENTRY_133_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_134_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_135_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_136_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_137_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_138_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_139_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_140_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_141_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_142_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_143_e, "Unknown"},
|
||||
{dItemNo_RAFRELS_MEMO_e, "Auru's Memo"},
|
||||
{dItemNo_ASHS_SCRIBBLING_e, "Ashei's Sketch"},
|
||||
{dItemNo_NOENTRY_146_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_147_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_148_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_149_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_150_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_151_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_152_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_153_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_154_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_155_e, "Unknown"},
|
||||
{dItemNo_CHUCHU_YELLOW2_e, "Yellow Chu Jelly"},
|
||||
{dItemNo_OIL_BOTTLE3_e, "Lantern Oil"},
|
||||
{dItemNo_SHOP_BEE_CHILD_e, ""},
|
||||
{dItemNo_CHUCHU_BLACK_e, "Black Chu Jelly"},
|
||||
{dItemNo_LIGHT_DROP_e, "Tear of Light"},
|
||||
{dItemNo_DROP_CONTAINER_e, "Vessel of Light (Faron)"},
|
||||
{dItemNo_DROP_CONTAINER02_e, "Vessel of Light (Eldin)"},
|
||||
{dItemNo_DROP_CONTAINER03_e, "Vessel of Light (Lanayru)"},
|
||||
{dItemNo_FILLED_CONTAINER_e, "Vessel of Light (Filled)"},
|
||||
{dItemNo_MIRROR_PIECE_2_e, "Mirror Shard (Snowpeak Ruins)"},
|
||||
{dItemNo_MIRROR_PIECE_3_e, "Mirror Shard (Temple of Time)"},
|
||||
{dItemNo_MIRROR_PIECE_4_e, "Mirror Shard (City in the Sky)"},
|
||||
{dItemNo_NOENTRY_168_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_169_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_170_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_171_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_172_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_173_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_174_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_175_e, "Unknown"},
|
||||
{dItemNo_SMELL_YELIA_POUCH_e, "Scent of Ilia"},
|
||||
{dItemNo_SMELL_PUMPKIN_e, "Pumpkin Scent"},
|
||||
{dItemNo_SMELL_POH_e, "Poe Scent"},
|
||||
{dItemNo_SMELL_FISH_e, "Reekfish Scent"},
|
||||
{dItemNo_SMELL_CHILDREN_e, "Youth's Scent"},
|
||||
{dItemNo_SMELL_MEDICINE_e, "Medicine Scent"},
|
||||
{dItemNo_NOENTRY_182_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_183_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_184_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_185_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_186_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_187_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_188_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_189_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_190_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_191_e, "Unknown"},
|
||||
{dItemNo_M_BEETLE_e, "Beetle ♂"},
|
||||
{dItemNo_F_BEETLE_e, "Beetle ♀"},
|
||||
{dItemNo_M_BUTTERFLY_e, "Butterfly ♂"},
|
||||
{dItemNo_F_BUTTERFLY_e, "Butterfly ♀"},
|
||||
{dItemNo_M_STAG_BEETLE_e, "Stag Beetle ♂"},
|
||||
{dItemNo_F_STAG_BEETLE_e, "Stag Beetle ♀"},
|
||||
{dItemNo_M_GRASSHOPPER_e, "Grasshopper ♂"},
|
||||
{dItemNo_F_GRASSHOPPER_e, "Grasshopper ♀"},
|
||||
{dItemNo_M_NANAFUSHI_e, "Phasmid ♂"},
|
||||
{dItemNo_F_NANAFUSHI_e, "Phasmid ♀"},
|
||||
{dItemNo_M_DANGOMUSHI_e, "Pill Bug ♂"},
|
||||
{dItemNo_F_DANGOMUSHI_e, "Pill Bug ♀"},
|
||||
{dItemNo_M_MANTIS_e, "Mantis ♂"},
|
||||
{dItemNo_F_MANTIS_e, "Mantis ♀"},
|
||||
{dItemNo_M_LADYBUG_e, "Ladybug ♂"},
|
||||
{dItemNo_F_LADYBUG_e, "Ladybug ♀"},
|
||||
{dItemNo_M_SNAIL_e, "Snail ♂"},
|
||||
{dItemNo_F_SNAIL_e, "Snail ♀"},
|
||||
{dItemNo_M_DRAGONFLY_e, "Dragonfly ♂"},
|
||||
{dItemNo_F_DRAGONFLY_e, "Dragonfly ♀"},
|
||||
{dItemNo_M_ANT_e, "Ant ♂"},
|
||||
{dItemNo_F_ANT_e, "Ant ♀"},
|
||||
{dItemNo_M_MAYFLY_e, "Mayfly ♂"},
|
||||
{dItemNo_F_MAYFLY_e, "Mayfly ♀"},
|
||||
{dItemNo_NOENTRY_216_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_217_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_218_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_219_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_220_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_221_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_222_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_223_e, "Unknown"},
|
||||
{dItemNo_POU_SPIRIT_e, ""},
|
||||
{dItemNo_NOENTRY_225_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_226_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_227_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_228_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_229_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_230_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_231_e, "Unknown"},
|
||||
{dItemNo_NOENTRY_232_e, "Unknown"},
|
||||
{dItemNo_ANCIENT_DOCUMENT_e, "Ancient Sky Book"},
|
||||
{dItemNo_AIR_LETTER_e, "Sky Character"},
|
||||
{dItemNo_ANCIENT_DOCUMENT2_e, "Ancient Sky Book (Filled)"},
|
||||
{dItemNo_LV7_DUNGEON_EXIT_e, "Ooccoo Sr. (City in the Sky)"},
|
||||
{dItemNo_LINKS_SAVINGS_e, "Link's Savings"},
|
||||
{dItemNo_SMALL_KEY2_e, ""},
|
||||
{dItemNo_POU_FIRE1_e, ""},
|
||||
{dItemNo_POU_FIRE2_e, ""},
|
||||
{dItemNo_POU_FIRE3_e, ""},
|
||||
{dItemNo_POU_FIRE4_e, ""},
|
||||
{dItemNo_BOSSRIDER_KEY_e, ""},
|
||||
{dItemNo_TOMATO_PUREE_e, ""},
|
||||
{dItemNo_TASTE_e, ""},
|
||||
{dItemNo_LV5_BOSS_KEY_e, "Bedroom Key"},
|
||||
{dItemNo_SURFBOARD_e, ""},
|
||||
{dItemNo_KANTERA2_e, ""},
|
||||
{dItemNo_L2_KEY_PIECES1_e, "Key Shard (1)"},
|
||||
{dItemNo_L2_KEY_PIECES2_e, "Key Shard (2)"},
|
||||
{dItemNo_L2_KEY_PIECES3_e, "Key Shard (3)"},
|
||||
{dItemNo_KEY_OF_CARAVAN_e, "Bulblin Camp Key"},
|
||||
{dItemNo_LV2_BOSS_KEY_e, "Key Shard (Completed)"},
|
||||
{dItemNo_KEY_OF_FILONE_e, "Faron Gate Key"},
|
||||
{dItemNo_NONE_e, "None"},
|
||||
enum ItemType {
|
||||
ITEMTYPE_DEFAULT_e,
|
||||
ITEMTYPE_EQUIP_e,
|
||||
};
|
||||
|
||||
struct itemInfo {
|
||||
std::string m_name;
|
||||
u8 m_type = ITEMTYPE_DEFAULT_e;
|
||||
};
|
||||
|
||||
std::map<int, itemInfo> itemMap = {
|
||||
{ dItemNo_HEART_e, {"Heart"} },
|
||||
{ dItemNo_GREEN_RUPEE_e, {"Green Rupee"} },
|
||||
{ dItemNo_BLUE_RUPEE_e, {"Blue Rupee"} },
|
||||
{ dItemNo_YELLOW_RUPEE_e, {"Yellow Rupee"} },
|
||||
{ dItemNo_RED_RUPEE_e, {"Red Rupee"} },
|
||||
{ dItemNo_PURPLE_RUPEE_e, {"Purple Rupee"} },
|
||||
{ dItemNo_ORANGE_RUPEE_e, {"Orange Rupee"} },
|
||||
{ dItemNo_SILVER_RUPEE_e, {"Silver Rupee"} },
|
||||
{ dItemNo_S_MAGIC_e, {"Small Magic"} },
|
||||
{ dItemNo_L_MAGIC_e, {"Large Magic"} },
|
||||
{ dItemNo_BOMB_5_e, {"Bombs (5)"} },
|
||||
{ dItemNo_BOMB_10_e, {"Bombs (10)"} },
|
||||
{ dItemNo_BOMB_20_e, {"Bombs (20)"} },
|
||||
{ dItemNo_BOMB_30_e, {"Bombs (30)"} },
|
||||
{ dItemNo_ARROW_10_e, {"Arrows (10)"} },
|
||||
{ dItemNo_ARROW_20_e, {"Arrows (20)"} },
|
||||
{ dItemNo_ARROW_30_e, {"Arrows (30)"} },
|
||||
{ dItemNo_ARROW_1_e, {"Arrows (1)"} },
|
||||
{ dItemNo_PACHINKO_SHOT_e, {"Pumpkin Seeds"} },
|
||||
{ dItemNo_NOENTRY_19_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_20_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_21_e, {"Reserved"} },
|
||||
{ dItemNo_WATER_BOMB_5_e, {"Water Bombs (5)"} },
|
||||
{ dItemNo_WATER_BOMB_10_e, {"Water Bombs (10)"} },
|
||||
{ dItemNo_WATER_BOMB_20_e, {"Water Bombs (20)"} },
|
||||
{ dItemNo_WATER_BOMB_30_e, {"Water Bombs (30)"} },
|
||||
{ dItemNo_BOMB_INSECT_5_e, {"Bomblings (5)"} },
|
||||
{ dItemNo_BOMB_INSECT_10_e, {"Bomblings (10)"} },
|
||||
{ dItemNo_BOMB_INSECT_20_e, {"Bomblings (20)"} },
|
||||
{ dItemNo_BOMB_INSECT_30_e, {"Bomblings (30)"} },
|
||||
{ dItemNo_RECOVERY_FAILY_e, {"Fairy"} },
|
||||
{ dItemNo_TRIPLE_HEART_e, {"Triple Hearts"} },
|
||||
{ dItemNo_SMALL_KEY_e, {"Small Key"} },
|
||||
{ dItemNo_KAKERA_HEART_e, {"Piece of Heart"} },
|
||||
{ dItemNo_UTAWA_HEART_e, {"Heart Container"} },
|
||||
{ dItemNo_MAP_e, {"Dungeon Map"} },
|
||||
{ dItemNo_COMPUS_e, {"Compass"} },
|
||||
{ dItemNo_DUNGEON_EXIT_e, {"Ooccoo Sr. (First Time)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_BOSS_KEY_e, {"Boss Key"} },
|
||||
{ dItemNo_DUNGEON_BACK_e, {"Ooccoo Jr.", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_SWORD_e, {"Ordon Sword"} },
|
||||
{ dItemNo_MASTER_SWORD_e, {"Master Sword"} },
|
||||
{ dItemNo_WOOD_SHIELD_e, {"Wooden Shield"} },
|
||||
{ dItemNo_SHIELD_e, {"Ordon Shield"} },
|
||||
{ dItemNo_HYLIA_SHIELD_e, {"Hylian Shield"} },
|
||||
{ dItemNo_TKS_LETTER_e, {"Ooccoo's Note", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WEAR_CASUAL_e, {"Ordon Clothes"} },
|
||||
{ dItemNo_WEAR_KOKIRI_e, {"Hero's Clothes"} },
|
||||
{ dItemNo_ARMOR_e, {"Magic Armor"} },
|
||||
{ dItemNo_WEAR_ZORA_e, {"Zora Armor"} },
|
||||
{ dItemNo_MAGIC_LV1_e, {"Magic Level 1"} },
|
||||
{ dItemNo_DUNGEON_EXIT_2_e, {"Ooccoo Sr.", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WALLET_LV1_e, {"Wallet"} },
|
||||
{ dItemNo_WALLET_LV2_e, {"Big Wallet"} },
|
||||
{ dItemNo_WALLET_LV3_e, {"Giant Wallet"} },
|
||||
{ dItemNo_NOENTRY_55_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_56_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_57_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_58_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_59_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_60_e, {"Reserved"} },
|
||||
{ dItemNo_ZORAS_JEWEL_e, {"Coral Earring", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_HAWK_EYE_e, {"Hawkeye", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WOOD_STICK_e, {"Wooden Sword"} },
|
||||
{ dItemNo_BOOMERANG_e, {"Gale Boomerang", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_SPINNER_e, {"Spinner", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_IRONBALL_e, {"Ball and Chain", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_BOW_e, {"Hero's Bow", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_HOOKSHOT_e, {"Clawshot", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_HVY_BOOTS_e, {"Iron Boots", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_COPY_ROD_e, {"Dominion Rod", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_W_HOOKSHOT_e, {"Double Clawshots", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_KANTERA_e, {"Lantern", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LIGHT_SWORD_e, {"Light Sword"} },
|
||||
{ dItemNo_FISHING_ROD_1_e, {"Fishing Rod", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_PACHINKO_e, {"Slingshot", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_COPY_ROD_2_e, {"Dominion Rod (Uncharged)"} },
|
||||
{ dItemNo_NOENTRY_77_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_78_e, {"Reserved"} },
|
||||
{ dItemNo_BOMB_BAG_LV2_e, {"Giant Bomb Bag"} },
|
||||
{ dItemNo_BOMB_BAG_LV1_e, {"Empty Bomb Bag", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_BOMB_IN_BAG_e, {"Bomb Bag"} },
|
||||
{ dItemNo_NOENTRY_82_e, {"Reserved"} },
|
||||
{ dItemNo_LIGHT_ARROW_e, {"Light Arrow"} },
|
||||
{ dItemNo_ARROW_LV1_e, {"Quiver"} },
|
||||
{ dItemNo_ARROW_LV2_e, {"Big Quiver"} },
|
||||
{ dItemNo_ARROW_LV3_e, {"Giant Quiver"} },
|
||||
{ dItemNo_NOENTRY_87_e, {"Reserved"} },
|
||||
{ dItemNo_LURE_ROD_e, {"Fishing Rod (Lure)"} },
|
||||
{ dItemNo_BOMB_ARROW_e, {"Bomb Arrow"} },
|
||||
{ dItemNo_HAWK_ARROW_e, {"Hawk Arrow"} },
|
||||
{ dItemNo_BEE_ROD_e, {"Fishing Rod (Bee Larva)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_JEWEL_ROD_e, {"Fishing Rod (Earring)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WORM_ROD_e, {"Fishing Rod (Worm)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_JEWEL_BEE_ROD_e, {"Fishing Rod (Earring + Bee Larva)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_JEWEL_WORM_ROD_e, {"Fishing Rod (Earring + Worm)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_EMPTY_BOTTLE_e, {"Empty Bottle", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_RED_BOTTLE_e, {"Red Potion", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_GREEN_BOTTLE_e, {"Green Potion", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_BLUE_BOTTLE_e, {"Blue Potion", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_MILK_BOTTLE_e, {"Milk Bottle", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_HALF_MILK_BOTTLE_e, {"Half Milk Bottle", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_OIL_BOTTLE_e, {"Lantern Oil", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WATER_BOTTLE_e, {"Water Bottle", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_OIL_BOTTLE_2_e, {"Lantern Oil (Scooped)"} },
|
||||
{ dItemNo_RED_BOTTLE_2_e, {"Red Potion (Scooped)"} },
|
||||
{ dItemNo_UGLY_SOUP_e, {"Nasty Soup", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_HOT_SPRING_e, {"Hotspring Water", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_FAIRY_e, {"Fairy", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_HOT_SPRING_2_e, {"Hotspring Water (Shop)"} },
|
||||
{ dItemNo_OIL2_e, {"Lantern Refill (Scooped)"} },
|
||||
{ dItemNo_OIL_e, {"Lantern Refill (Shop)"} },
|
||||
{ dItemNo_NORMAL_BOMB_e, {"Bombs", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WATER_BOMB_e, {"Water Bombs", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_POKE_BOMB_e, {"Bomblings", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_FAIRY_DROP_e, {"Great Fairy's Tears", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WORM_e, {"Worm", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_DROP_BOTTLE_e, {"Great Fairy Tears (Jovani)"} },
|
||||
{ dItemNo_BEE_CHILD_e, {"Bee Larva", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_CHUCHU_RARE_e, {"Rare Chu Jelly", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_CHUCHU_RED_e, {"Red Chu Jelly", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_CHUCHU_BLUE_e, {"Blue Chu Jelly", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_CHUCHU_GREEN_e, {"Green Chu Jelly", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_CHUCHU_YELLOW_e, {"Yellow Chu Jelly", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_CHUCHU_PURPLE_e, {"Purple Chu Jelly", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LV1_SOUP_e, {"Simple Soup", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LV2_SOUP_e, {"Good Soup", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LV3_SOUP_e, {"Superb Soup", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LETTER_e, {"Renado's Letter", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_BILL_e, {"Invoice", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_WOOD_STATUE_e, {"Wooden Statue", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_IRIAS_PENDANT_e, {"Ilia's Charm", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_HORSE_FLUTE_e, {"Horse Call", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_NOENTRY_133_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_134_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_135_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_136_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_137_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_138_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_139_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_140_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_141_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_142_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_143_e, {"Reserved"} },
|
||||
{ dItemNo_RAFRELS_MEMO_e, {"Auru's Memo", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_ASHS_SCRIBBLING_e, {"Ashei's Sketch", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_NOENTRY_146_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_147_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_148_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_149_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_150_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_151_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_152_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_153_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_154_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_155_e, {"Reserved"} },
|
||||
{ dItemNo_CHUCHU_YELLOW2_e, {"Lantern Refill (Yellow Chu)"} },
|
||||
{ dItemNo_OIL_BOTTLE3_e, {"Lantern Oil (Coro)"} },
|
||||
{ dItemNo_SHOP_BEE_CHILD_e, {"Bee Larve (Shop)"} },
|
||||
{ dItemNo_CHUCHU_BLACK_e, {"Black Chu Jelly", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LIGHT_DROP_e, {"Tear of Light"} },
|
||||
{ dItemNo_DROP_CONTAINER_e, {"Vessel of Light (Faron)"} },
|
||||
{ dItemNo_DROP_CONTAINER02_e, {"Vessel of Light (Eldin)"} },
|
||||
{ dItemNo_DROP_CONTAINER03_e, {"Vessel of Light (Lanayru)"} },
|
||||
{ dItemNo_FILLED_CONTAINER_e, {"Vessel of Light (Filled)"} },
|
||||
{ dItemNo_MIRROR_PIECE_2_e, {"Mirror Shard (Snowpeak Ruins)"} },
|
||||
{ dItemNo_MIRROR_PIECE_3_e, {"Mirror Shard (Temple of Time)"} },
|
||||
{ dItemNo_MIRROR_PIECE_4_e, {"Mirror Shard (City in the Sky)"} },
|
||||
{ dItemNo_NOENTRY_168_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_169_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_170_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_171_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_172_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_173_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_174_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_175_e, {"Reserved"} },
|
||||
{ dItemNo_SMELL_YELIA_POUCH_e, {"Scent of Ilia"} },
|
||||
{ dItemNo_SMELL_PUMPKIN_e, {"Pumpkin Scent"} },
|
||||
{ dItemNo_SMELL_POH_e, {"Poe Scent"} },
|
||||
{ dItemNo_SMELL_FISH_e, {"Reekfish Scent"} },
|
||||
{ dItemNo_SMELL_CHILDREN_e, {"Youth's Scent"} },
|
||||
{ dItemNo_SMELL_MEDICINE_e, {"Medicine Scent"} },
|
||||
{ dItemNo_NOENTRY_182_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_183_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_184_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_185_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_186_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_187_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_188_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_189_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_190_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_191_e, {"Reserved"} },
|
||||
{ dItemNo_M_BEETLE_e, {"Beetle (M)"} },
|
||||
{ dItemNo_F_BEETLE_e, {"Beetle (F)"} },
|
||||
{ dItemNo_M_BUTTERFLY_e, {"Butterfly (M)"} },
|
||||
{ dItemNo_F_BUTTERFLY_e, {"Butterfly (F)"} },
|
||||
{ dItemNo_M_STAG_BEETLE_e, {"Stag Beetle (M)"} },
|
||||
{ dItemNo_F_STAG_BEETLE_e, {"Stag Beetle (F)"} },
|
||||
{ dItemNo_M_GRASSHOPPER_e, {"Grasshopper (M)"} },
|
||||
{ dItemNo_F_GRASSHOPPER_e, {"Grasshopper (F)"} },
|
||||
{ dItemNo_M_NANAFUSHI_e, {"Phasmid (M)"} },
|
||||
{ dItemNo_F_NANAFUSHI_e, {"Phasmid (F)"} },
|
||||
{ dItemNo_M_DANGOMUSHI_e, {"Pill Bug (M)"} },
|
||||
{ dItemNo_F_DANGOMUSHI_e, {"Pill Bug (F)"} },
|
||||
{ dItemNo_M_MANTIS_e, {"Mantis (M)"} },
|
||||
{ dItemNo_F_MANTIS_e, {"Mantis (F)"} },
|
||||
{ dItemNo_M_LADYBUG_e, {"Ladybug (M)"} },
|
||||
{ dItemNo_F_LADYBUG_e, {"Ladybug (F)"} },
|
||||
{ dItemNo_M_SNAIL_e, {"Snail (M)"} },
|
||||
{ dItemNo_F_SNAIL_e, {"Snail (F)"} },
|
||||
{ dItemNo_M_DRAGONFLY_e, {"Dragonfly (M)"} },
|
||||
{ dItemNo_F_DRAGONFLY_e, {"Dragonfly (F)"} },
|
||||
{ dItemNo_M_ANT_e, {"Ant (M)"} },
|
||||
{ dItemNo_F_ANT_e, {"Ant (F)"} },
|
||||
{ dItemNo_M_MAYFLY_e, {"Mayfly (M)"} },
|
||||
{ dItemNo_F_MAYFLY_e, {"Mayfly (F)"} },
|
||||
{ dItemNo_NOENTRY_216_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_217_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_218_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_219_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_220_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_221_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_222_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_223_e, {"Reserved"} },
|
||||
{ dItemNo_POU_SPIRIT_e, {"Poe Soul"} },
|
||||
{ dItemNo_NOENTRY_225_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_226_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_227_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_228_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_229_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_230_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_231_e, {"Reserved"} },
|
||||
{ dItemNo_NOENTRY_232_e, {"Reserved"} },
|
||||
{ dItemNo_ANCIENT_DOCUMENT_e, {"Ancient Sky Book", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_AIR_LETTER_e, {"Ancient Sky Book (Partial)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_ANCIENT_DOCUMENT2_e, {"Ancient Sky Book (Filled)", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LV7_DUNGEON_EXIT_e, {"Ooccoo Sr. (City in the Sky)"} },
|
||||
{ dItemNo_LINKS_SAVINGS_e, {"Purple Rupee (Link's Savings)"} },
|
||||
{ dItemNo_SMALL_KEY2_e, {"Small Key (North Faron Gate)"} },
|
||||
{ dItemNo_POU_FIRE1_e, {"Poe Fire 1"} },
|
||||
{ dItemNo_POU_FIRE2_e, {"Poe Fire 2"} },
|
||||
{ dItemNo_POU_FIRE3_e, {"Poe Fire 3"} },
|
||||
{ dItemNo_POU_FIRE4_e, {"Poe Fire 4"} },
|
||||
{ dItemNo_BOSSRIDER_KEY_e, {"Hyrule Field Keys"} },
|
||||
{ dItemNo_TOMATO_PUREE_e, {"Ordon Pumpkin", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_TASTE_e, {"Ordon Goat Cheese", ITEMTYPE_EQUIP_e} },
|
||||
{ dItemNo_LV5_BOSS_KEY_e, {"Bedroom Key"} },
|
||||
{ dItemNo_SURFBOARD_e, {"Surf Leaf"} },
|
||||
{ dItemNo_KANTERA2_e, {"Lantern (Reclaimed)"} },
|
||||
{ dItemNo_L2_KEY_PIECES1_e, {"Key Shard (1)"} },
|
||||
{ dItemNo_L2_KEY_PIECES2_e, {"Key Shard (2)"} },
|
||||
{ dItemNo_L2_KEY_PIECES3_e, {"Key Shard (3)"} },
|
||||
{ dItemNo_KEY_OF_CARAVAN_e, {"Bulblin Camp Key"} },
|
||||
{ dItemNo_LV2_BOSS_KEY_e, {"Goron Mines Boss Key"} },
|
||||
{ dItemNo_KEY_OF_FILONE_e, {"South Faron Gate Key"} },
|
||||
{ dItemNo_NONE_e, {"None"} },
|
||||
};
|
||||
|
||||
ImGuiSaveEditor::ImGuiSaveEditor() {}
|
||||
@@ -292,7 +302,7 @@ namespace dusk {
|
||||
}
|
||||
|
||||
if (ImGui::BeginTabItem("Inventory")) {
|
||||
//DrawInventoryTab();
|
||||
drawInventoryTab();
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
|
||||
@@ -384,7 +394,7 @@ namespace dusk {
|
||||
int currentSlotNo = selectItemData;
|
||||
std::string defaultLabel =
|
||||
currentSlotNo != 0xFF
|
||||
? fmt::format("Slot {0} ({1})", currentSlotNo, itemMap.find(item.mItems[currentSlotNo])->second)
|
||||
? fmt::format("Slot {0} ({1})", currentSlotNo, itemMap.find(item.mItems[currentSlotNo])->second.m_name)
|
||||
: "None";
|
||||
|
||||
// TODO: live update equips
|
||||
@@ -395,7 +405,7 @@ namespace dusk {
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
u8 itemNo = item.mItems[i];
|
||||
if (ImGui::Selectable(fmt::format("Slot {0} ({1})", i, itemMap.find(itemNo)->second).c_str())) {
|
||||
if (ImGui::Selectable(fmt::format("Slot {0} ({1})", i, itemMap.find(itemNo)->second.m_name).c_str())) {
|
||||
selectItemData = i;
|
||||
}
|
||||
}
|
||||
@@ -439,7 +449,7 @@ namespace dusk {
|
||||
genSelectItemComboBox("Combo Equip Y", statusA.mMixItem[1]);
|
||||
|
||||
|
||||
if (ImGui::BeginCombo("Clothes", itemMap.find(statusA.mSelectEquip[0])->second.c_str())) {
|
||||
if (ImGui::BeginCombo("Clothes", itemMap.find(statusA.mSelectEquip[0])->second.m_name.c_str())) {
|
||||
if (ImGui::Selectable("None")) {
|
||||
statusA.mSelectEquip[0] = dItemNo_NONE_e;
|
||||
}
|
||||
@@ -458,7 +468,7 @@ namespace dusk {
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
|
||||
if (ImGui::BeginCombo("Sword", itemMap.find(statusA.mSelectEquip[1])->second.c_str())) {
|
||||
if (ImGui::BeginCombo("Sword", itemMap.find(statusA.mSelectEquip[1])->second.m_name.c_str())) {
|
||||
if (ImGui::Selectable("None")) {
|
||||
statusA.mSelectEquip[1] = dItemNo_NONE_e;
|
||||
}
|
||||
@@ -477,7 +487,7 @@ namespace dusk {
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
|
||||
if (ImGui::BeginCombo("Shield", itemMap.find(statusA.mSelectEquip[2])->second.c_str())) {
|
||||
if (ImGui::BeginCombo("Shield", itemMap.find(statusA.mSelectEquip[2])->second.m_name.c_str())) {
|
||||
if (ImGui::Selectable("None")) {
|
||||
statusA.mSelectEquip[2] = dItemNo_NONE_e;
|
||||
}
|
||||
@@ -493,7 +503,7 @@ namespace dusk {
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
|
||||
if (ImGui::BeginCombo("Scent", itemMap.find(statusA.mSelectEquip[3])->second.c_str())) {
|
||||
if (ImGui::BeginCombo("Scent", itemMap.find(statusA.mSelectEquip[3])->second.m_name.c_str())) {
|
||||
if (ImGui::Selectable("None")) {
|
||||
statusA.mSelectEquip[3] = dItemNo_NONE_e;
|
||||
}
|
||||
@@ -666,6 +676,29 @@ namespace dusk {
|
||||
}
|
||||
|
||||
void ImGuiSaveEditor::drawInventoryTab() {
|
||||
dSv_player_item_c& item = dComIfGs_getSaveData()->getPlayer().getItem();
|
||||
|
||||
ImGuiBeginGroupPanel("Items", { 200, 100 });
|
||||
for (int slot = 0; slot < 24; slot++) {
|
||||
ImGui::Text("Slot %02d: ", slot);
|
||||
ImGui::SameLine();
|
||||
if (ImGui::BeginCombo(fmt::format("##ItemComboBox{}", slot).c_str(), itemMap.find(item.mItems[slot])->second.m_name.c_str())) {
|
||||
if (ImGui::Selectable("None")) {
|
||||
dComIfGs_setItem(slot, dItemNo_NONE_e);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 254; i++) {
|
||||
if (itemMap.find(i)->second.m_type != ITEMTYPE_EQUIP_e) continue;
|
||||
|
||||
if (ImGui::Selectable(fmt::format("{0}##item_{1}{2}", itemMap.find(i)->second.m_name, slot, i).c_str())) {
|
||||
dComIfGs_setItem(slot, itemMap.find(i)->first);
|
||||
}
|
||||
}
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
}
|
||||
ImGuiEndGroupPanel();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -389,10 +389,6 @@ s32 JSUMemoryOutputStream::getAvailable() const {
|
||||
return mLength - mPosition;
|
||||
}
|
||||
|
||||
s32 JSUMemoryOutputStream::getPosition() const {
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
#pragma mark JSURandomOutputStream
|
||||
#include <JSystem/JSupport/JSURandomOutputStream.h>
|
||||
s32 JSUMemoryOutputStream::seek(s32 offset, JSUStreamSeekFrom origin) {
|
||||
|
||||
@@ -524,6 +524,7 @@ bool fopAcM_entrySolidHeap_(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback
|
||||
OSReport_Error("最大空きヒープサイズで確保失敗。[%s]\n", procNameString);
|
||||
return false;
|
||||
}
|
||||
JKRHEAP_NAMEF(heap, "Actor mng (%s)", procNameString);
|
||||
#if DEBUG
|
||||
if (!fopAcM::HeapAdjustQuiet) {
|
||||
// Attempting registration with max heap size. %08x
|
||||
@@ -625,6 +626,7 @@ bool fopAcM_entrySolidHeap_(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback
|
||||
|
||||
if (alignedSize + adjOffset + 0x10 < freeSize) {
|
||||
newHeap = mDoExt_createSolidHeapFromGame(alignedSize, 0x20);
|
||||
JKRHEAP_NAMEF(newHeap, "Actor mng (%s)", procNameString);
|
||||
}
|
||||
|
||||
if (fopAcM::HeapAdjustVerbose) {
|
||||
|
||||
@@ -1081,7 +1081,13 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
|
||||
GXSetDither(GX_TRUE);
|
||||
GXSetNumIndStages(0);
|
||||
Mtx44 ortho;
|
||||
|
||||
#if TARGET_PC
|
||||
C_MTXOrtho(ortho, 0.0f, param_1->height, 0.0f, param_1->width, 0.0f, 10.0f);
|
||||
#else
|
||||
C_MTXOrtho(ortho, 0.0f, FB_HEIGHT, 0.0f, FB_WIDTH, 0.0f, 10.0f);
|
||||
#endif
|
||||
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), 0);
|
||||
GXClearVtxDesc();
|
||||
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||
@@ -1089,6 +1095,17 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
|
||||
GXSetProjection(ortho, GX_ORTHOGRAPHIC);
|
||||
GXSetCurrentMtx(0);
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
|
||||
|
||||
#if TARGET_PC
|
||||
GXPosition3s16(0, 0, -5);
|
||||
GXPosition3s16(param_1->width, 0, -5);
|
||||
GXPosition3s16(param_1->width, sc_top, -5);
|
||||
GXPosition3s16(0, sc_top, -5);
|
||||
GXPosition3s16(0, sc_bottom, -5);
|
||||
GXPosition3s16(param_1->width, sc_bottom, -5);
|
||||
GXPosition3s16(param_1->width, param_1->height, -5);
|
||||
GXPosition3s16(0, param_1->height, -5);
|
||||
#else
|
||||
GXPosition3s16(0, 0, -5);
|
||||
GXPosition3s16(FB_WIDTH, 0, -5);
|
||||
GXPosition3s16(FB_WIDTH, sc_top, -5);
|
||||
@@ -1097,6 +1114,8 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
|
||||
GXPosition3s16(FB_WIDTH, sc_bottom, -5);
|
||||
GXPosition3s16(FB_WIDTH, FB_HEIGHT, -5);
|
||||
GXPosition3s16(0, FB_HEIGHT, -5);
|
||||
#endif
|
||||
|
||||
GXEnd();
|
||||
}
|
||||
GXSetScissor(param_1->scissor.x_orig, param_1->scissor.y_orig, param_1->scissor.width,
|
||||
|
||||
@@ -277,6 +277,7 @@ int game_main(int argc, char* argv[]) {
|
||||
config.logLevel = (AuroraLogLevel)parsed_arg_options["log-level"].as<uint8_t>();
|
||||
config.mem1Size = 256 * 1024 * 1024;
|
||||
config.mem2Size = 24 * 1024 * 1024;
|
||||
config.allowJoystickBackgroundEvents = true;
|
||||
|
||||
auroraInfo = aurora_initialize(argc, argv, &config);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user