mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-11 18:41:14 +00:00
parent
dcd4262f76
commit
48fd42ea36
@ -468,6 +468,7 @@ if (ISLE_BUILD_APP)
|
|||||||
add_executable(isle WIN32
|
add_executable(isle WIN32
|
||||||
ISLE/res/isle.rc
|
ISLE/res/isle.rc
|
||||||
ISLE/isleapp.cpp
|
ISLE/isleapp.cpp
|
||||||
|
ISLE/islefiles.cpp
|
||||||
)
|
)
|
||||||
list(APPEND isle_targets isle)
|
list(APPEND isle_targets isle)
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
|||||||
@ -11,6 +11,8 @@
|
|||||||
static backend_t opfs = nullptr;
|
static backend_t opfs = nullptr;
|
||||||
static backend_t fetchfs = nullptr;
|
static backend_t fetchfs = nullptr;
|
||||||
|
|
||||||
|
extern const char* g_files[46];
|
||||||
|
|
||||||
void Emscripten_SetupConfig(const char* p_iniConfig)
|
void Emscripten_SetupConfig(const char* p_iniConfig)
|
||||||
{
|
{
|
||||||
if (!p_iniConfig || !*p_iniConfig) {
|
if (!p_iniConfig || !*p_iniConfig) {
|
||||||
@ -60,52 +62,9 @@ void Emscripten_SetupFilesystem()
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerFile("/LEGO/Scripts/CREDITS.SI");
|
for (const char* file : g_files) {
|
||||||
registerFile("/LEGO/Scripts/INTRO.SI");
|
registerFile(file);
|
||||||
registerFile("/LEGO/Scripts/NOCD.SI");
|
}
|
||||||
registerFile("/LEGO/Scripts/SNDANIM.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Act2/ACT2MAIN.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Act3/ACT3.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Build/COPTER.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Build/DUNECAR.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Build/JETSKI.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Build/RACECAR.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Garage/GARAGE.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Hospital/HOSPITAL.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Infocntr/ELEVBOTT.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Infocntr/HISTBOOK.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Infocntr/INFODOOR.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Infocntr/INFOMAIN.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Infocntr/INFOSCOR.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Infocntr/REGBOOK.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Isle/ISLE.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Isle/JUKEBOX.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Isle/JUKEBOXW.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Police/POLICE.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Race/CARRACE.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Race/CARRACER.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Race/JETRACE.SI");
|
|
||||||
registerFile("/LEGO/Scripts/Race/JETRACER.SI");
|
|
||||||
registerFile("/LEGO/data/ACT1INF.DTA");
|
|
||||||
registerFile("/LEGO/data/ACT2INF.DTA");
|
|
||||||
registerFile("/LEGO/data/ACT3INF.DTA");
|
|
||||||
registerFile("/LEGO/data/BLDDINF.DTA");
|
|
||||||
registerFile("/LEGO/data/BLDHINF.DTA");
|
|
||||||
registerFile("/LEGO/data/BLDJINF.DTA");
|
|
||||||
registerFile("/LEGO/data/BLDRINF.DTA");
|
|
||||||
registerFile("/LEGO/data/GMAININF.DTA");
|
|
||||||
registerFile("/LEGO/data/HOSPINF.DTA");
|
|
||||||
registerFile("/LEGO/data/ICUBEINF.DTA");
|
|
||||||
registerFile("/LEGO/data/IELEVINF.DTA");
|
|
||||||
registerFile("/LEGO/data/IISLEINF.DTA");
|
|
||||||
registerFile("/LEGO/data/IMAININF.DTA");
|
|
||||||
registerFile("/LEGO/data/IREGINF.DTA");
|
|
||||||
registerFile("/LEGO/data/OBSTINF.DTA");
|
|
||||||
registerFile("/LEGO/data/PMAININF.DTA");
|
|
||||||
registerFile("/LEGO/data/RACCINF.DTA");
|
|
||||||
registerFile("/LEGO/data/RACJINF.DTA");
|
|
||||||
registerFile("/LEGO/data/WORLD.WDB");
|
|
||||||
registerFile("/LEGO/data/testinf.dta");
|
|
||||||
|
|
||||||
if (GameState()->GetSavePath() && *GameState()->GetSavePath()) {
|
if (GameState()->GetSavePath() && *GameState()->GetSavePath()) {
|
||||||
if (!opfs) {
|
if (!opfs) {
|
||||||
|
|||||||
@ -87,6 +87,8 @@ MxS32 g_reqEnableRMDevice = FALSE;
|
|||||||
|
|
||||||
SDL_Window* window;
|
SDL_Window* window;
|
||||||
|
|
||||||
|
extern const char* g_files[46];
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x401000
|
// FUNCTION: ISLE 0x401000
|
||||||
IsleApp::IsleApp()
|
IsleApp::IsleApp()
|
||||||
{
|
{
|
||||||
@ -689,9 +691,9 @@ MxResult IsleApp::SetupWindow()
|
|||||||
|
|
||||||
GameState()->SetSavePath(m_savePath);
|
GameState()->SetSavePath(m_savePath);
|
||||||
|
|
||||||
#ifdef __EMSCRIPTEN__
|
if (VerifyFilesystem() != SUCCESS) {
|
||||||
Emscripten_SetupFilesystem();
|
return FAILURE;
|
||||||
#endif
|
}
|
||||||
|
|
||||||
GameState()->SerializePlayersInfo(LegoStorage::c_read);
|
GameState()->SerializePlayersInfo(LegoStorage::c_read);
|
||||||
GameState()->SerializeScoreHistory(LegoStorage::c_read);
|
GameState()->SerializeScoreHistory(LegoStorage::c_read);
|
||||||
@ -1048,6 +1050,35 @@ MxResult IsleApp::ParseArguments(int argc, char** argv)
|
|||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MxResult IsleApp::VerifyFilesystem()
|
||||||
|
{
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
Emscripten_SetupFilesystem();
|
||||||
|
#else
|
||||||
|
for (const char* file : g_files) {
|
||||||
|
MxString path(&file[1]);
|
||||||
|
path.MapPathToFilesystem();
|
||||||
|
|
||||||
|
if (!SDL_GetPathInfo(path.GetData(), NULL)) {
|
||||||
|
char buffer[512];
|
||||||
|
SDL_snprintf(
|
||||||
|
buffer,
|
||||||
|
sizeof(buffer),
|
||||||
|
"\"LEGO® Island\" failed to start.\nPlease make sure the file %s is located in either diskpath or "
|
||||||
|
"cdpath.\nSDL error: %s",
|
||||||
|
file,
|
||||||
|
SDL_GetError()
|
||||||
|
);
|
||||||
|
|
||||||
|
Any_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "LEGO® Island Error", buffer, NULL);
|
||||||
|
return FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
IDirect3DRMMiniwinDevice* GetD3DRMMiniwinDevice()
|
IDirect3DRMMiniwinDevice* GetD3DRMMiniwinDevice()
|
||||||
{
|
{
|
||||||
LegoVideoManager* videoManager = LegoOmni::GetInstance()->GetVideoManager();
|
LegoVideoManager* videoManager = LegoOmni::GetInstance()->GetVideoManager();
|
||||||
|
|||||||
@ -55,6 +55,7 @@ class IsleApp {
|
|||||||
void SetGameStarted(MxS32 p_gameStarted) { m_gameStarted = p_gameStarted; }
|
void SetGameStarted(MxS32 p_gameStarted) { m_gameStarted = p_gameStarted; }
|
||||||
|
|
||||||
MxResult ParseArguments(int argc, char** argv);
|
MxResult ParseArguments(int argc, char** argv);
|
||||||
|
MxResult VerifyFilesystem();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char* m_hdPath; // 0x00
|
char* m_hdPath; // 0x00
|
||||||
|
|||||||
48
ISLE/islefiles.cpp
Normal file
48
ISLE/islefiles.cpp
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
const char* g_files[46] = {
|
||||||
|
"/LEGO/Scripts/CREDITS.SI",
|
||||||
|
"/LEGO/Scripts/INTRO.SI",
|
||||||
|
"/LEGO/Scripts/NOCD.SI",
|
||||||
|
"/LEGO/Scripts/SNDANIM.SI",
|
||||||
|
"/LEGO/Scripts/Act2/ACT2MAIN.SI",
|
||||||
|
"/LEGO/Scripts/Act3/ACT3.SI",
|
||||||
|
"/LEGO/Scripts/Build/COPTER.SI",
|
||||||
|
"/LEGO/Scripts/Build/DUNECAR.SI",
|
||||||
|
"/LEGO/Scripts/Build/JETSKI.SI",
|
||||||
|
"/LEGO/Scripts/Build/RACECAR.SI",
|
||||||
|
"/LEGO/Scripts/Garage/GARAGE.SI",
|
||||||
|
"/LEGO/Scripts/Hospital/HOSPITAL.SI",
|
||||||
|
"/LEGO/Scripts/Infocntr/ELEVBOTT.SI",
|
||||||
|
"/LEGO/Scripts/Infocntr/HISTBOOK.SI",
|
||||||
|
"/LEGO/Scripts/Infocntr/INFODOOR.SI",
|
||||||
|
"/LEGO/Scripts/Infocntr/INFOMAIN.SI",
|
||||||
|
"/LEGO/Scripts/Infocntr/INFOSCOR.SI",
|
||||||
|
"/LEGO/Scripts/Infocntr/REGBOOK.SI",
|
||||||
|
"/LEGO/Scripts/Isle/ISLE.SI",
|
||||||
|
"/LEGO/Scripts/Isle/JUKEBOX.SI",
|
||||||
|
"/LEGO/Scripts/Isle/JUKEBOXW.SI",
|
||||||
|
"/LEGO/Scripts/Police/POLICE.SI",
|
||||||
|
"/LEGO/Scripts/Race/CARRACE.SI",
|
||||||
|
"/LEGO/Scripts/Race/CARRACER.SI",
|
||||||
|
"/LEGO/Scripts/Race/JETRACE.SI",
|
||||||
|
"/LEGO/Scripts/Race/JETRACER.SI",
|
||||||
|
"/LEGO/data/ACT1INF.DTA",
|
||||||
|
"/LEGO/data/ACT2INF.DTA",
|
||||||
|
"/LEGO/data/ACT3INF.DTA",
|
||||||
|
"/LEGO/data/BLDDINF.DTA",
|
||||||
|
"/LEGO/data/BLDHINF.DTA",
|
||||||
|
"/LEGO/data/BLDJINF.DTA",
|
||||||
|
"/LEGO/data/BLDRINF.DTA",
|
||||||
|
"/LEGO/data/GMAININF.DTA",
|
||||||
|
"/LEGO/data/HOSPINF.DTA",
|
||||||
|
"/LEGO/data/ICUBEINF.DTA",
|
||||||
|
"/LEGO/data/IELEVINF.DTA",
|
||||||
|
"/LEGO/data/IISLEINF.DTA",
|
||||||
|
"/LEGO/data/IMAININF.DTA",
|
||||||
|
"/LEGO/data/IREGINF.DTA",
|
||||||
|
"/LEGO/data/OBSTINF.DTA",
|
||||||
|
"/LEGO/data/PMAININF.DTA",
|
||||||
|
"/LEGO/data/RACCINF.DTA",
|
||||||
|
"/LEGO/data/RACJINF.DTA",
|
||||||
|
"/LEGO/data/WORLD.WDB",
|
||||||
|
"/LEGO/data/testinf.dta",
|
||||||
|
};
|
||||||
@ -11,7 +11,7 @@ class MxString : public MxCore {
|
|||||||
public:
|
public:
|
||||||
MxString();
|
MxString();
|
||||||
MxString(const MxString& p_str);
|
MxString(const MxString& p_str);
|
||||||
MxString(const char* p_str);
|
LEGO1_EXPORT MxString(const char* p_str);
|
||||||
MxString(const char* p_str, MxU16 p_maxlen);
|
MxString(const char* p_str, MxU16 p_maxlen);
|
||||||
LEGO1_EXPORT ~MxString() override;
|
LEGO1_EXPORT ~MxString() override;
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ class MxString : public MxCore {
|
|||||||
MxString& operator+=(const char* p_str);
|
MxString& operator+=(const char* p_str);
|
||||||
|
|
||||||
static void CharSwap(char* p_a, char* p_b);
|
static void CharSwap(char* p_a, char* p_b);
|
||||||
static void MapPathToFilesystem(char* p_path);
|
LEGO1_EXPORT static void MapPathToFilesystem(char* p_path);
|
||||||
|
|
||||||
// FUNCTION: BETA10 0x10017c50
|
// FUNCTION: BETA10 0x10017c50
|
||||||
char* GetData() const { return m_data; }
|
char* GetData() const { return m_data; }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user