mirror of
https://github.com/isledecomp/isle.git
synced 2026-02-28 15:07:38 +00:00
Merge branch 'master' into pr/30
This commit is contained in:
commit
f61bdb0647
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
@ -60,11 +60,14 @@ jobs:
|
||||
C:\msys64\usr\bin\wget.exe https://legoisland.org/download/ISLE.EXE
|
||||
C:\msys64\usr\bin\wget.exe https://legoisland.org/download/LEGO1.DLL
|
||||
pip install capstone
|
||||
python3 tools/reccomp/reccomp.py ISLE.EXE Release/ISLE.EXE Release/ISLE.PDB ISLE
|
||||
python3 tools/reccomp/reccomp.py LEGO1.DLL Release/LEGO1.DLL Release/LEGO1.PDB LEGO1
|
||||
python3 tools/reccomp/reccomp.py -h ISLEPROGRESS.HTML ISLE.EXE Release/ISLE.EXE Release/ISLE.PDB ISLE
|
||||
python3 tools/reccomp/reccomp.py -h LEGO1PROGRESS.HTML LEGO1.DLL Release/LEGO1.DLL Release/LEGO1.PDB LEGO1
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: Win32
|
||||
path: Release
|
||||
path: |
|
||||
Release
|
||||
ISLEPROGRESS.HTML
|
||||
LEGO1PROGRESS.HTML
|
||||
|
||||
@ -37,13 +37,7 @@ Isle::Isle()
|
||||
m_frameDelta = 10;
|
||||
m_windowActive = 1;
|
||||
|
||||
MxRect32 rect;
|
||||
rect.m_left = 0;
|
||||
rect.m_top = 0;
|
||||
rect.m_right = 639;
|
||||
rect.m_bottom = 479;
|
||||
|
||||
m_videoParam = MxVideoParam(rect, NULL, 1, MxVideoParamFlags());
|
||||
m_videoParam = MxVideoParam(MxRect32(0, 0, 639, 479), NULL, 1, MxVideoParamFlags());
|
||||
m_videoParam.flags().Enable16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16);
|
||||
|
||||
m_windowHandle = NULL;
|
||||
@ -116,7 +110,7 @@ void Isle::Close()
|
||||
}
|
||||
|
||||
// OFFSET: ISLE 0x402740
|
||||
BOOL ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize)
|
||||
BOOL Isle::ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize)
|
||||
{
|
||||
HKEY hKey;
|
||||
DWORD valueType;
|
||||
@ -135,7 +129,7 @@ BOOL ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize)
|
||||
}
|
||||
|
||||
// OFFSET: ISLE 0x4027b0
|
||||
int ReadRegBool(LPCSTR name, BOOL *out)
|
||||
int Isle::ReadRegBool(LPCSTR name, BOOL *out)
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
@ -143,28 +137,30 @@ int ReadRegBool(LPCSTR name, BOOL *out)
|
||||
if (read) {
|
||||
if (strcmp("YES", buffer) == 0) {
|
||||
*out = TRUE;
|
||||
return TRUE;
|
||||
return read;
|
||||
}
|
||||
|
||||
if (strcmp("NO", buffer) == 0) {
|
||||
*out = FALSE;
|
||||
return TRUE;
|
||||
return read;
|
||||
}
|
||||
|
||||
read = FALSE;
|
||||
}
|
||||
return FALSE;
|
||||
return read;
|
||||
}
|
||||
|
||||
// OFFSET: ISLE 0x402880
|
||||
int ReadRegInt(LPCSTR name, int *out)
|
||||
int Isle::ReadRegInt(LPCSTR name, int *out)
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
if (ReadReg(name, buffer, sizeof(buffer))) {
|
||||
BOOL read = ReadReg(name, buffer, sizeof(buffer));
|
||||
if (read) {
|
||||
*out = atoi(buffer);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return read;
|
||||
}
|
||||
|
||||
// OFFSET: ISLE 0x4028d0
|
||||
@ -256,16 +252,18 @@ void Isle::SetupVideoFlags(BOOL fullScreen, BOOL flipSurfaces, BOOL backBuffers,
|
||||
// OFFSET: ISLE 0x4013b0
|
||||
BOOL Isle::SetupLegoOmni()
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
char mediaPath[256];
|
||||
GetProfileStringA("LEGO Island", "MediaPath", "", mediaPath, sizeof(mediaPath));
|
||||
|
||||
if (Lego()->Create(MxOmniCreateParam(mediaPath, (struct HWND__ *) m_windowHandle, m_videoParam, MxOmniCreateFlags())) != FAILURE) {
|
||||
BOOL failure = Lego()->Create(MxOmniCreateParam(mediaPath, (struct HWND__ *) m_windowHandle, m_videoParam, MxOmniCreateFlags())) == FAILURE;
|
||||
if (!failure) {
|
||||
VariableTable()->SetVariable("ACTOR_01", "");
|
||||
TickleManager()->vtable1c(VideoManager(), 10);
|
||||
return TRUE;
|
||||
result = TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return result;
|
||||
}
|
||||
|
||||
// OFFSET: ISLE 0x402e80
|
||||
@ -283,6 +281,14 @@ void Isle::SetupCursor(WPARAM wParam)
|
||||
break;
|
||||
case 0xB:
|
||||
m_cursorCurrent = NULL;
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 0xA:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@ -12,7 +12,11 @@ class Isle
|
||||
Isle();
|
||||
~Isle();
|
||||
|
||||
static void Close();
|
||||
void Close();
|
||||
|
||||
BOOL ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize);
|
||||
int ReadRegBool(LPCSTR name, BOOL *out);
|
||||
int ReadRegInt(LPCSTR name, int *out);
|
||||
|
||||
MxResult SetupWindow(HINSTANCE hInstance);
|
||||
|
||||
|
||||
@ -4,6 +4,14 @@
|
||||
class MxRect32
|
||||
{
|
||||
public:
|
||||
MxRect32(int p_left, int p_top, int p_right, int p_bottom)
|
||||
{
|
||||
this->m_left = p_left;
|
||||
this->m_top = p_top;
|
||||
this->m_right = p_right;
|
||||
this->m_bottom = p_bottom;
|
||||
}
|
||||
|
||||
int m_left;
|
||||
int m_top;
|
||||
int m_right;
|
||||
|
||||
@ -11,6 +11,60 @@ MxString::MxString()
|
||||
this->m_length = 0;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae2a0
|
||||
MxString::MxString(const MxString &str)
|
||||
{
|
||||
this->m_length = str.m_length;
|
||||
this->m_data = (char *)malloc(this->m_length + 1);
|
||||
strcpy(this->m_data, str.m_data);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae350
|
||||
MxString::MxString(const char *str)
|
||||
{
|
||||
if (str) {
|
||||
this->m_length = strlen(str);
|
||||
this->m_data = (char *)malloc(this->m_length + 1);
|
||||
strcpy(this->m_data, str);
|
||||
} else {
|
||||
this->m_data = (char *)malloc(1);
|
||||
this->m_data[0] = 0;
|
||||
this->m_length = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae420
|
||||
MxString::~MxString()
|
||||
{
|
||||
free(this->m_data);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae490
|
||||
void MxString::ToUpperCase()
|
||||
{
|
||||
strupr(this->m_data);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae4a0
|
||||
void MxString::ToLowerCase()
|
||||
{
|
||||
strlwr(this->m_data);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae4b0
|
||||
const MxString &MxString::operator=(MxString *param)
|
||||
{
|
||||
if (this->m_data != param->m_data)
|
||||
{
|
||||
free(this->m_data);
|
||||
this->m_length = param->m_length;
|
||||
this->m_data = (char *)malloc(this->m_length + 1);
|
||||
strcpy(this->m_data, param->m_data);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
// TODO: this *mostly* matches, again weird with the comparison
|
||||
// OFFSET: LEGO1 0x100ae510
|
||||
const MxString &MxString::operator=(const char *param)
|
||||
@ -25,9 +79,3 @@ const MxString &MxString::operator=(const char *param)
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae420
|
||||
MxString::~MxString()
|
||||
{
|
||||
free(this->m_data);
|
||||
}
|
||||
|
||||
@ -11,6 +11,10 @@ class MxString : public MxCore
|
||||
__declspec(dllexport) const MxString &operator=(const char *);
|
||||
|
||||
MxString();
|
||||
MxString(const char *);
|
||||
void ToUpperCase();
|
||||
void ToLowerCase();
|
||||
const MxString &operator=(MxString *);
|
||||
|
||||
private:
|
||||
char *m_data;
|
||||
|
||||
@ -12,15 +12,16 @@ long MxTimer::s_LastTimeTimerStarted = 0;
|
||||
MxTimer::MxTimer()
|
||||
{
|
||||
this->m_isRunning = MX_FALSE;
|
||||
MxTimer::s_LastTimeCalculated = timeGetTime();
|
||||
this->m_startTime = MxTimer::s_LastTimeCalculated;
|
||||
m_startTime = timeGetTime();
|
||||
// yeah this is somehow what the asm is
|
||||
s_LastTimeCalculated = m_startTime;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae160
|
||||
void MxTimer::Start()
|
||||
{
|
||||
s_LastTimeTimerStarted = this->GetRealTime();
|
||||
this->m_isRunning = MX_TRUE;
|
||||
MxTimer::s_LastTimeTimerStarted = timeGetTime();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100ae180
|
||||
|
||||
Loading…
Reference in New Issue
Block a user