mirror of
https://github.com/isledecomp/isle.git
synced 2026-02-28 15:07:38 +00:00
match Isle::Tick and FindExistingInstance
This commit is contained in:
parent
2644be3ca6
commit
2d577b556c
@ -38,6 +38,3 @@ int g_startupDelay = 200;
|
|||||||
|
|
||||||
// 0x4101c0
|
// 0x4101c0
|
||||||
long g_lastFrameTime = 0;
|
long g_lastFrameTime = 0;
|
||||||
|
|
||||||
// 0x4101dc
|
|
||||||
const char *WINDOW_TITLE = "LEGO\xAE";
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class Isle;
|
|||||||
extern Isle *g_isle;
|
extern Isle *g_isle;
|
||||||
extern int g_closed;
|
extern int g_closed;
|
||||||
#define WNDCLASS_NAME "Lego Island MainNoM App"
|
#define WNDCLASS_NAME "Lego Island MainNoM App"
|
||||||
extern const char *WINDOW_TITLE;
|
#define WINDOW_TITLE "LEGO\xAE"
|
||||||
extern unsigned char g_mousedown;
|
extern unsigned char g_mousedown;
|
||||||
extern unsigned char g_mousemoved;
|
extern unsigned char g_mousemoved;
|
||||||
extern RECT g_windowRect;
|
extern RECT g_windowRect;
|
||||||
|
|||||||
@ -78,7 +78,7 @@ Isle::~Isle()
|
|||||||
void Isle::Close()
|
void Isle::Close()
|
||||||
{
|
{
|
||||||
MxDSAction ds;
|
MxDSAction ds;
|
||||||
ds.SetUnknown24(0xFFFE);
|
ds.SetUnknown24(-2);
|
||||||
|
|
||||||
if (Lego()) {
|
if (Lego()) {
|
||||||
GameState()->Save(0);
|
GameState()->Save(0);
|
||||||
@ -615,7 +615,7 @@ void Isle::Tick(BOOL sleepIfNotNextFrame)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ds.SetAtomId(stream->atom);
|
ds.SetAtomId(stream->atom);
|
||||||
ds.SetUnknown24(0xFFFF);
|
ds.SetUnknown24(-1);
|
||||||
ds.SetUnknown1c(0);
|
ds.SetUnknown1c(0);
|
||||||
VideoManager()->EnableFullScreenMovie(TRUE, TRUE);
|
VideoManager()->EnableFullScreenMovie(TRUE, TRUE);
|
||||||
|
|
||||||
@ -624,7 +624,7 @@ void Isle::Tick(BOOL sleepIfNotNextFrame)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ds.SetAtomId(stream->atom);
|
ds.SetAtomId(stream->atom);
|
||||||
ds.SetUnknown24(0xFFFF);
|
ds.SetUnknown24(-1);
|
||||||
ds.SetUnknown1c(0);
|
ds.SetUnknown1c(0);
|
||||||
if (Start(&ds) != SUCCESS) {
|
if (Start(&ds) != SUCCESS) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
#include "mxdsobject.h"
|
#include "mxdsobject.h"
|
||||||
|
|
||||||
|
// This function exists both inlined and @ ISLE 0x00401c40
|
||||||
// OFFSET: ISLE 0x00401c40
|
// OFFSET: ISLE 0x00401c40
|
||||||
void MxDSObject::SetAtomId(MxAtomId p_atomId)
|
// void MxDSObject::SetAtomId(MxAtomId p_atomId)
|
||||||
{
|
// {
|
||||||
this->m_atomId = p_atomId;
|
// this->m_atomId = p_atomId;
|
||||||
}
|
// }
|
||||||
@ -6,14 +6,11 @@
|
|||||||
// OFFSET: LEGO1 0x100bf6a0
|
// OFFSET: LEGO1 0x100bf6a0
|
||||||
MxDSObject::MxDSObject()
|
MxDSObject::MxDSObject()
|
||||||
{
|
{
|
||||||
// The following code yields 100% matching assembly if m_unk24 is declared as (signed) short.
|
|
||||||
// However, in other areas m_unk24 (notably, ISLE.EXE) is treated as unsigned short.
|
|
||||||
// Since we don't have a proper solution yet, we are using a union to work around this discrepancy.
|
|
||||||
this->m_unk0c = 0;
|
this->m_unk0c = 0;
|
||||||
this->m_unk10 = 0;
|
this->m_unk10 = 0;
|
||||||
this->m_unk14 = 0;
|
this->m_unk14 = 0;
|
||||||
this->m_name = NULL;
|
this->m_name = NULL;
|
||||||
this->m_unk24signed = -1;
|
this->m_unk24 = -1;
|
||||||
this->m_unk1c = -1;
|
this->m_unk1c = -1;
|
||||||
this->m_unk28 = 0;
|
this->m_unk28 = 0;
|
||||||
}
|
}
|
||||||
@ -38,8 +35,9 @@ void MxDSObject::SetObjectName(const char *p_name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function exists both inlined and @ LEGO1 0x10005530
|
||||||
// OFFSET: LEGO1 0x10005530
|
// OFFSET: LEGO1 0x10005530
|
||||||
void MxDSObject::SetAtomId(MxAtomId p_atomId)
|
// void MxDSObject::SetAtomId(MxAtomId p_atomId)
|
||||||
{
|
// {
|
||||||
this->m_atomId = p_atomId;
|
// this->m_atomId = p_atomId;
|
||||||
}
|
// }
|
||||||
|
|||||||
@ -15,9 +15,10 @@ class MxDSObject : public MxCore
|
|||||||
inline int GetUnknown1c() { return this->m_unk1c; }
|
inline int GetUnknown1c() { return this->m_unk1c; }
|
||||||
|
|
||||||
inline void SetUnknown1c(int p_unk1c) { this->m_unk1c = p_unk1c; }
|
inline void SetUnknown1c(int p_unk1c) { this->m_unk1c = p_unk1c; }
|
||||||
inline void SetUnknown24(unsigned short p_unk24) { this->m_unk24 = p_unk24; }
|
inline void SetUnknown24(short p_unk24) { this->m_unk24 = p_unk24; }
|
||||||
|
|
||||||
void SetAtomId(MxAtomId p_atomId);
|
// void SetAtomId(MxAtomId p_atomId);
|
||||||
|
inline void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_unk08;
|
int m_unk08;
|
||||||
@ -27,13 +28,7 @@ class MxDSObject : public MxCore
|
|||||||
char *m_name;
|
char *m_name;
|
||||||
int m_unk1c;
|
int m_unk1c;
|
||||||
MxAtomId m_atomId;
|
MxAtomId m_atomId;
|
||||||
// So far, implementing MxDSObject::MxDSObject correctly required that m_unk24 is declared a (signed) short.
|
short m_unk24;
|
||||||
// Most of the other game's code appears to treat it as unsigned short, however.
|
|
||||||
// This union is a workaround until we have figured this out.
|
|
||||||
union {
|
|
||||||
unsigned short m_unk24;
|
|
||||||
short m_unk24signed;
|
|
||||||
};
|
|
||||||
unsigned short m_unk26;
|
unsigned short m_unk26;
|
||||||
int m_unk28;
|
int m_unk28;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user