mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-21 07:11:16 +00:00
Merge branch 'master' into pr/93
This commit is contained in:
commit
500f1fc4db
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
Debug/
|
Debug/
|
||||||
Release/
|
Release/
|
||||||
*.ncb
|
*.ncb
|
||||||
|
/.vs
|
||||||
ISLE.EXE
|
ISLE.EXE
|
||||||
LEGO1.DLL
|
LEGO1.DLL
|
||||||
build/
|
build/
|
||||||
|
|||||||
@ -47,6 +47,7 @@ add_library(lego1 SHARED
|
|||||||
LEGO1/legoact2state.cpp
|
LEGO1/legoact2state.cpp
|
||||||
LEGO1/legoactor.cpp
|
LEGO1/legoactor.cpp
|
||||||
LEGO1/legoactioncontrolpresenter.cpp
|
LEGO1/legoactioncontrolpresenter.cpp
|
||||||
|
LEGO1/legoactor.cpp
|
||||||
LEGO1/legoanimactor.cpp
|
LEGO1/legoanimactor.cpp
|
||||||
LEGO1/legoanimationmanager.cpp
|
LEGO1/legoanimationmanager.cpp
|
||||||
LEGO1/legoanimmmpresenter.cpp
|
LEGO1/legoanimmmpresenter.cpp
|
||||||
|
|||||||
@ -4,6 +4,10 @@
|
|||||||
#define DECOMP_STATIC_ASSERT(V) namespace { typedef int foo[(V)?1:-1]; }
|
#define DECOMP_STATIC_ASSERT(V) namespace { typedef int foo[(V)?1:-1]; }
|
||||||
#define DECOMP_SIZE_ASSERT(T, S) DECOMP_STATIC_ASSERT(sizeof(T) == S)
|
#define DECOMP_SIZE_ASSERT(T, S) DECOMP_STATIC_ASSERT(sizeof(T) == S)
|
||||||
|
|
||||||
|
#ifndef _countof
|
||||||
|
#define _countof(arr) sizeof(arr) / sizeof(arr[0])
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef unsigned char undefined;
|
typedef unsigned char undefined;
|
||||||
typedef unsigned short undefined2;
|
typedef unsigned short undefined2;
|
||||||
typedef unsigned int undefined4;
|
typedef unsigned int undefined4;
|
||||||
|
|||||||
@ -1 +1,4 @@
|
|||||||
#include "isleactor.h"
|
#include "isleactor.h"
|
||||||
|
|
||||||
|
// NOTE: This is copied from base class LegoActor. IsleActor may in fact be larger but we don't know yet.
|
||||||
|
DECOMP_SIZE_ASSERT(IsleActor, 0x78)
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
#ifndef LEGOACTOR_H
|
#ifndef LEGOACTOR_H
|
||||||
#define LEGOACTOR_H
|
#define LEGOACTOR_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "legoentity.h"
|
#include "legoentity.h"
|
||||||
|
|
||||||
// VTABLE 0x100d6d68
|
// VTABLE 0x100d6d68
|
||||||
|
|||||||
0
LEGO1/mxdirect3d.cpp
Normal file
0
LEGO1/mxdirect3d.cpp
Normal file
0
LEGO1/mxdirect3d.h
Normal file
0
LEGO1/mxdirect3d.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,130 @@
|
|||||||
|
|
||||||
#ifndef MXDIRECTDRAW_H
|
#ifndef MXDIRECTDRAW_H
|
||||||
#define MXDIRECTDRAW_H
|
#define MXDIRECTDRAW_H
|
||||||
|
|
||||||
|
#include <ddraw.h>
|
||||||
|
#include <Windows.h>
|
||||||
|
|
||||||
|
extern BOOL g_is_PALETTEINDEXED8;
|
||||||
|
|
||||||
|
//size 0x880
|
||||||
class MxDirectDraw
|
class MxDirectDraw
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
typedef void (*ErrorHandler)(const char*, HRESULT, void*);
|
||||||
|
|
||||||
|
//size 0x0c
|
||||||
|
struct Mode
|
||||||
|
{
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
int bitsPerPixel;
|
||||||
|
|
||||||
|
int operator==(const Mode& rMode) const
|
||||||
|
{
|
||||||
|
return ((width == rMode.width) &&
|
||||||
|
(height == rMode.height) &&
|
||||||
|
(bitsPerPixel == rMode.bitsPerPixel));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//size 0x17c
|
||||||
|
struct DeviceModesInfo
|
||||||
|
{
|
||||||
|
GUID* p_guid;
|
||||||
|
Mode* m_mode_ARRAY;
|
||||||
|
int count;
|
||||||
|
DDCAPS m_ddcaps;
|
||||||
|
void* a_178;
|
||||||
|
|
||||||
|
~DeviceModesInfo();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
BOOL m_bOnlySoftRender;
|
||||||
|
BOOL m_bFlipSurfaces;
|
||||||
|
IDirectDraw* m_pDirectDraw;
|
||||||
|
IDirectDrawSurface* m_pFrontBuffer;
|
||||||
|
IDirectDrawSurface* m_pBackBuffer;
|
||||||
|
IDirectDrawSurface* m_pZBuffer;
|
||||||
|
IDirectDrawSurface* m_pText1Surface;
|
||||||
|
IDirectDrawSurface* m_pText2Surface;
|
||||||
|
IDirectDrawClipper* m_pClipper;
|
||||||
|
IDirectDrawPalette* m_pPalette;
|
||||||
|
PALETTEENTRY m_paletteEntries[256];
|
||||||
|
PALETTEENTRY m_originalPaletteEntries[256];
|
||||||
|
SIZE m_text1SizeOnSurface;
|
||||||
|
SIZE m_text2SizeOnSurface;
|
||||||
|
HWND m_hWndMain;
|
||||||
|
HFONT m_hFont;
|
||||||
|
BOOL m_bIgnoreWM_SIZE;
|
||||||
|
BOOL m_bPrimaryPalettized;
|
||||||
|
BOOL m_bFullScreen;
|
||||||
|
void* a_850;
|
||||||
|
BOOL m_bOnlySystemMemory;
|
||||||
|
BOOL m_bIsOnPrimaryDevice;
|
||||||
|
ErrorHandler m_pErrorHandler;
|
||||||
|
ErrorHandler m_pFatalErrorHandler;
|
||||||
|
void* m_pErrorHandlerArg;
|
||||||
|
void* m_pFatalErrorHandlerArg;
|
||||||
|
int m_pauseCount;
|
||||||
|
DeviceModesInfo* m_pCurrentDeviceModesList;
|
||||||
|
Mode m_currentMode;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
__declspec(dllexport) int FlipToGDISurface();
|
__declspec(dllexport) int FlipToGDISurface();
|
||||||
__declspec(dllexport) static int GetPrimaryBitDepth();
|
__declspec(dllexport) static int GetPrimaryBitDepth();
|
||||||
__declspec(dllexport) int Pause(int);
|
__declspec(dllexport) int Pause(int);
|
||||||
|
|
||||||
|
MxDirectDraw();
|
||||||
|
|
||||||
|
virtual ~MxDirectDraw();
|
||||||
|
virtual BOOL Create(
|
||||||
|
HWND hWnd,
|
||||||
|
BOOL fullscreen_1,
|
||||||
|
BOOL surface_fullscreen,
|
||||||
|
BOOL onlySystemMemory,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
int bpp,
|
||||||
|
const PALETTEENTRY* pPaletteEntries,
|
||||||
|
int paletteEntryCount);
|
||||||
|
virtual void Destroy();
|
||||||
|
virtual void DestroyButNotDirectDraw();
|
||||||
|
virtual const char* ErrorToString(HRESULT error);
|
||||||
|
|
||||||
|
private:
|
||||||
|
BOOL CacheOriginalPaletteEntries();
|
||||||
|
HRESULT CreateDDSurface(
|
||||||
|
LPDDSURFACEDESC a2,
|
||||||
|
LPDIRECTDRAWSURFACE* a3,
|
||||||
|
IUnknown* a4);
|
||||||
|
BOOL CreateTextSurfaces();
|
||||||
|
BOOL CreateZBuffer(DWORD memorytype, DWORD depth);
|
||||||
|
BOOL DDCreateSurfaces();
|
||||||
|
BOOL DDInit(BOOL fullscreen);
|
||||||
|
BOOL DDSetMode(int width, int height, int bpp);
|
||||||
|
void Error(const char* message, int error);
|
||||||
|
|
||||||
|
BOOL GetDDSurfaceDesc(LPDDSURFACEDESC lpDDSurfDesc, LPDIRECTDRAWSURFACE lpDDSurf);
|
||||||
|
BOOL IsSupportedMode(int width, int height, int bpp);
|
||||||
|
BOOL RecreateDirectDraw(GUID** a2);
|
||||||
|
BOOL RestoreOriginalPaletteEntries();
|
||||||
|
BOOL RestorePaletteEntries();
|
||||||
|
BOOL RestoreSurfaces();
|
||||||
|
BOOL SetPaletteEntries(
|
||||||
|
const PALETTEENTRY* pPaletteEntries,
|
||||||
|
int paletteEntryCount,
|
||||||
|
BOOL fullscreen);
|
||||||
|
BOOL TextToTextSurface(
|
||||||
|
const char* text,
|
||||||
|
IDirectDrawSurface* pSurface,
|
||||||
|
SIZE& textSizeOnSurface);
|
||||||
|
BOOL TextToTextSurface1(const char* text);
|
||||||
|
BOOL TextToTextSurface2(const char* lpString);
|
||||||
|
void FUN_1009E020();
|
||||||
|
void FUN_1009D920();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MXDIRECTDRAW_H
|
#endif // MXDIRECTDRAW_H
|
||||||
|
|||||||
34
LEGO1/mxdisplaysurface.h
Normal file
34
LEGO1/mxdisplaysurface.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#ifndef MXDISPLAYSURFACE_H
|
||||||
|
#define MXDISPLAYSURFACE_H
|
||||||
|
|
||||||
|
#include <ddraw.h>
|
||||||
|
|
||||||
|
#include "mxcore.h"
|
||||||
|
#include "mxpalette.h"
|
||||||
|
#include "mxvideoparam.h"
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
// VTABLE 0x100dc768
|
||||||
|
class MxDisplaySurface : public MxCore
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MxDisplaySurface();
|
||||||
|
virtual ~MxDisplaySurface() override;
|
||||||
|
|
||||||
|
virtual MxResult Init(MxVideoParam *p_videoParam, LPDIRECTDRAWSURFACE p_surface1, LPDIRECTDRAWSURFACE p_surface2, LPDIRECTDRAWCLIPPER p_clipper);
|
||||||
|
virtual MxResult Create(MxVideoParam *p_videoParam);
|
||||||
|
virtual void Clear();
|
||||||
|
virtual void SetPalette(MxPalette *p_palette);
|
||||||
|
virtual void vtable24(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||||
|
virtual MxBool vtable28(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||||
|
virtual MxBool vtable2c(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, MxBool);
|
||||||
|
virtual MxBool vtable30(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, undefined4, MxBool);
|
||||||
|
virtual undefined4 vtable34(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||||
|
virtual void Display(undefined4, undefined4, undefined4, undefined4, undefined4, undefined4);
|
||||||
|
virtual undefined4 vtable3c(undefined4*);
|
||||||
|
virtual undefined4 vtable40(undefined4);
|
||||||
|
virtual undefined4 vtable44(undefined4, undefined4*, undefined4, undefined4);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MXDISPLAYSURFACE_H
|
||||||
@ -25,7 +25,7 @@ int MxVideoManager::Init()
|
|||||||
{
|
{
|
||||||
this->m_pDirectDraw = NULL;
|
this->m_pDirectDraw = NULL;
|
||||||
this->m_unk54 = NULL;
|
this->m_unk54 = NULL;
|
||||||
this->m_unk58 = NULL;
|
this->m_displaySurface = NULL;
|
||||||
this->m_unk5c = 0;
|
this->m_unk5c = 0;
|
||||||
this->m_videoParam.SetPalette(NULL);
|
this->m_videoParam.SetPalette(NULL);
|
||||||
this->m_unk60 = FALSE;
|
this->m_unk60 = FALSE;
|
||||||
@ -45,10 +45,10 @@ MxLong MxVideoManager::RealizePalette(MxPalette *p_palette)
|
|||||||
|
|
||||||
this->m_criticalSection.Enter();
|
this->m_criticalSection.Enter();
|
||||||
|
|
||||||
if (p_palette && this->m_videoParam.GetPalette())
|
if (p_palette && this->m_videoParam.GetPalette()) {
|
||||||
{
|
|
||||||
p_palette->GetEntries(paletteEntries);
|
p_palette->GetEntries(paletteEntries);
|
||||||
// TODO
|
this->m_videoParam.GetPalette()->SetEntries(paletteEntries);
|
||||||
|
this->m_displaySurface->SetPalette(this->m_videoParam.GetPalette());
|
||||||
}
|
}
|
||||||
|
|
||||||
this->m_criticalSection.Leave();
|
this->m_criticalSection.Leave();
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#define MXVIDEOMANAGER_H
|
#define MXVIDEOMANAGER_H
|
||||||
|
|
||||||
#include "mxunknown100dc6b0.h"
|
#include "mxunknown100dc6b0.h"
|
||||||
|
#include "mxdisplaysurface.h"
|
||||||
#include "mxvideoparam.h"
|
#include "mxvideoparam.h"
|
||||||
|
|
||||||
// VTABLE 0x100dc810
|
// VTABLE 0x100dc810
|
||||||
@ -26,7 +27,7 @@ class MxVideoManager : public MxUnknown100dc6b0
|
|||||||
MxVideoParam m_videoParam;
|
MxVideoParam m_videoParam;
|
||||||
LPDIRECTDRAW m_pDirectDraw;
|
LPDIRECTDRAW m_pDirectDraw;
|
||||||
LPDIRECTDRAWSURFACE m_unk54;
|
LPDIRECTDRAWSURFACE m_unk54;
|
||||||
void* m_unk58;
|
MxDisplaySurface *m_displaySurface;
|
||||||
int m_unk5c;
|
int m_unk5c;
|
||||||
MxBool m_unk60;
|
MxBool m_unk60;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,13 +1,30 @@
|
|||||||
#include "pizza.h"
|
#include "pizza.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10037ef0 STUB
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(Pizza, 0x9c);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10037ef0
|
||||||
Pizza::Pizza()
|
Pizza::Pizza()
|
||||||
{
|
{
|
||||||
// TODO
|
// FIXME: This inherits from LegoActor, probably why this isn't matching
|
||||||
|
this->m_unk80 = 0;
|
||||||
|
this->m_unk84 = 0;
|
||||||
|
this->m_unk88 = 0;
|
||||||
|
this->m_unk8c = -1;
|
||||||
|
this->m_unk98 = 0;
|
||||||
|
this->m_unk90 = 0x80000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10038100 STUB
|
// OFFSET: LEGO1 0x10038100
|
||||||
Pizza::~Pizza()
|
Pizza::~Pizza()
|
||||||
{
|
{
|
||||||
// TODO
|
TickleManager()->Unregister(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x100388a0
|
||||||
|
MxResult Pizza::Tickle()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,10 @@
|
|||||||
#define PIZZA_H
|
#define PIZZA_H
|
||||||
|
|
||||||
#include "isleactor.h"
|
#include "isleactor.h"
|
||||||
|
#include "mxcore.h"
|
||||||
|
#include "mxomni.h"
|
||||||
|
#include "mxticklemanager.h"
|
||||||
|
#include "mxtypes.h"
|
||||||
|
|
||||||
// VTABLE 0x100d7380
|
// VTABLE 0x100d7380
|
||||||
// SIZE 0x9c
|
// SIZE 0x9c
|
||||||
@ -11,6 +15,30 @@ class Pizza : public IsleActor
|
|||||||
Pizza();
|
Pizza();
|
||||||
virtual ~Pizza() override;
|
virtual ~Pizza() override;
|
||||||
|
|
||||||
|
virtual MxResult Tickle() override; // vtable+08
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10037f90
|
||||||
|
inline const char *ClassName() const //vtable+0c
|
||||||
|
{
|
||||||
|
// 0x100f038c
|
||||||
|
return "Pizza";
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10037fa0
|
||||||
|
inline MxBool Pizza::IsA(const char *name) const override //vtable+10
|
||||||
|
{
|
||||||
|
return !strcmp(name, Pizza::ClassName()) || IsleActor::IsA(name);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
MxS32 m_unk78;
|
||||||
|
MxS32 m_unk7c;
|
||||||
|
MxS32 m_unk80;
|
||||||
|
MxS32 m_unk84;
|
||||||
|
MxS32 m_unk88;
|
||||||
|
MxS32 m_unk8c;
|
||||||
|
MxU32 m_unk90;
|
||||||
|
MxS32 m_unk94;
|
||||||
|
MxS32 m_unk98;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PIZZA_H
|
#endif // PIZZA_H
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user