mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-11 18:51:16 +00:00
Start on MxDirectDraw
This commit is contained in:
parent
6843216dfa
commit
216332e64d
110
LEGO1/mxdirectdraw.cpp
Normal file
110
LEGO1/mxdirectdraw.cpp
Normal file
@ -0,0 +1,110 @@
|
||||
#pragma comment(lib, "ddraw")
|
||||
|
||||
#include "mxdirectdraw.h"
|
||||
|
||||
HRESULT MxDirectDraw::SetEntries()
|
||||
{
|
||||
HRESULT ret;
|
||||
|
||||
if (m_unk848) {
|
||||
if (m_ddpal) {
|
||||
ret = m_ddpal->SetEntries(0, 0, 256, m_pal1);
|
||||
if (ret != DD_OK) {
|
||||
FUN_1009e830("SetEntries failed", ret);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
HRESULT MxDirectDraw::FlipToGDISurface()
|
||||
{
|
||||
HRESULT ret;
|
||||
|
||||
if (m_ddraw) {
|
||||
ret = m_ddraw->FlipToGDISurface();
|
||||
if (ret != DD_OK) {
|
||||
FUN_1009e830("FlipToGDISurface failed", ret);
|
||||
}
|
||||
return !ret;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void MxDirectDraw::FUN_1009e830(char *error_msg, HRESULT ret)
|
||||
{
|
||||
if (!DAT_10100c70) {
|
||||
DAT_10100c70 = 1;
|
||||
vtable08();
|
||||
if (m_unk85c) {
|
||||
m_unk85c(error_msg, ret, m_unk864);
|
||||
}
|
||||
}
|
||||
|
||||
DAT_10100c70 = 0;
|
||||
}
|
||||
|
||||
int MxDirectDraw::GetPrimaryBitDepth()
|
||||
{
|
||||
LPDIRECTDRAW pDDraw;
|
||||
|
||||
DirectDrawCreate(NULL, &pDDraw, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int MxDirectDraw::Pause(int param_1)
|
||||
{
|
||||
if (param_1) {
|
||||
m_unk86c++;
|
||||
|
||||
if (m_unk86c > 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!SetEntries()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (m_unk84c) {
|
||||
if (!FlipToGDISurface()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
DrawMenuBar(hWindow);
|
||||
RedrawWindow(hWindow, NULL, NULL, RDW_FRAME);
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
m_unk86c--;
|
||||
if (m_unk86c > 0) {
|
||||
return 1;
|
||||
} else if (m_unk86c < 0) {
|
||||
m_unk86c = 0;
|
||||
}
|
||||
FUN_1009e750();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
HRESULT MxDirectDraw::FUN_1009e750()
|
||||
{
|
||||
HRESULT ret;
|
||||
|
||||
if (m_unk84c && m_unk848) {
|
||||
if (m_ddpal) {
|
||||
ret = m_ddpal->SetEntries(0, 0, 256, m_pal0);
|
||||
if (ret != DD_OK) {
|
||||
FUN_1009e830("SetEntries failed", ret);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -1,12 +1,37 @@
|
||||
#ifndef MXDIRECTDRAW_H
|
||||
#define MXDIRECTDRAW_H
|
||||
|
||||
#include <ddraw.h>
|
||||
#include <Windows.h>
|
||||
|
||||
class MxDirectDraw
|
||||
{
|
||||
public:
|
||||
__declspec(dllexport) int FlipToGDISurface();
|
||||
HRESULT SetEntries();
|
||||
__declspec(dllexport) HRESULT FlipToGDISurface();
|
||||
void FUN_1009e830(char *, HRESULT);
|
||||
__declspec(dllexport) static int GetPrimaryBitDepth();
|
||||
__declspec(dllexport) int Pause(int);
|
||||
HRESULT FUN_1009e750();
|
||||
|
||||
virtual ~MxDirectDraw();
|
||||
virtual void vtable04();
|
||||
virtual void vtable08();
|
||||
|
||||
private:
|
||||
IDirectDraw *m_ddraw; // +0xc
|
||||
IDirectDrawPalette *m_ddpal; // +0x28
|
||||
PALETTEENTRY m_pal0[256]; // +0x2c
|
||||
PALETTEENTRY m_pal1[256]; // +0x42c
|
||||
HWND hWindow; // +0x83c
|
||||
long m_unk848;
|
||||
long m_unk84c;
|
||||
void (*m_unk85c)(char *, HRESULT, long); // error handler or logger?
|
||||
long m_unk864;
|
||||
long m_unk86c;
|
||||
|
||||
};
|
||||
|
||||
BOOL DAT_10100c70 = 0;
|
||||
|
||||
#endif // MXDIRECTDRAW_H
|
||||
|
||||
44
isle.mak
44
isle.mak
@ -59,6 +59,7 @@ CLEAN :
|
||||
-@erase "$(INTDIR)\legoomni.obj"
|
||||
-@erase "$(INTDIR)\mxcore.obj"
|
||||
-@erase "$(INTDIR)\mxcriticalsection.obj"
|
||||
-@erase "$(INTDIR)\mxdirectdraw.obj"
|
||||
-@erase ".\Release\LEGO1.DLL"
|
||||
-@erase ".\Release\LEGO1.EXP"
|
||||
-@erase ".\Release\LEGO1.LIB"
|
||||
@ -108,11 +109,11 @@ BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /pdb:"Release/LEGO1.PDB" /map:"Release/LEGO1.MAP" /machine:I386 /out:"Release/LEGO1.DLL" /implib:"Release/LEGO1.LIB"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ddraw.lib /nologo /subsystem:windows /dll /pdb:"Release/LEGO1.PDB" /map:"Release/LEGO1.MAP" /machine:I386 /out:"Release/LEGO1.DLL" /implib:"Release/LEGO1.LIB"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
|
||||
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
|
||||
odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\
|
||||
odbccp32.lib ddraw.lib /nologo /subsystem:windows /dll /incremental:no\
|
||||
/pdb:"Release/LEGO1.PDB" /map:"Release/LEGO1.MAP" /machine:I386\
|
||||
/out:"Release/LEGO1.DLL" /implib:"Release/LEGO1.LIB"
|
||||
LINK32_OBJS= \
|
||||
@ -120,7 +121,8 @@ LINK32_OBJS= \
|
||||
"$(INTDIR)\legonavcontroller.obj" \
|
||||
"$(INTDIR)\legoomni.obj" \
|
||||
"$(INTDIR)\mxcore.obj" \
|
||||
"$(INTDIR)\mxcriticalsection.obj"
|
||||
"$(INTDIR)\mxcriticalsection.obj" \
|
||||
"$(INTDIR)\mxdirectdraw.obj"
|
||||
|
||||
".\Release\LEGO1.DLL" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
@ -150,6 +152,7 @@ CLEAN :
|
||||
-@erase "$(INTDIR)\legoomni.obj"
|
||||
-@erase "$(INTDIR)\mxcore.obj"
|
||||
-@erase "$(INTDIR)\mxcriticalsection.obj"
|
||||
-@erase "$(INTDIR)\mxdirectdraw.obj"
|
||||
-@erase "$(INTDIR)\vc40.idb"
|
||||
-@erase "$(INTDIR)\vc40.pdb"
|
||||
-@erase "$(OUTDIR)\LEGO1.exp"
|
||||
@ -203,11 +206,11 @@ BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /out:"Debug/LEGO1.DLL"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ddraw.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /out:"Debug/LEGO1.DLL"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
|
||||
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
|
||||
odbccp32.lib /nologo /subsystem:windows /dll /incremental:yes\
|
||||
odbccp32.lib ddraw.lib /nologo /subsystem:windows /dll /incremental:yes\
|
||||
/pdb:"$(OUTDIR)/LEGO1.pdb" /map:"$(INTDIR)/LEGO1.map" /debug /machine:I386\
|
||||
/out:"Debug/LEGO1.DLL" /implib:"$(OUTDIR)/LEGO1.lib"
|
||||
LINK32_OBJS= \
|
||||
@ -215,7 +218,8 @@ LINK32_OBJS= \
|
||||
"$(INTDIR)\legonavcontroller.obj" \
|
||||
"$(INTDIR)\legoomni.obj" \
|
||||
"$(INTDIR)\mxcore.obj" \
|
||||
"$(INTDIR)\mxcriticalsection.obj"
|
||||
"$(INTDIR)\mxcriticalsection.obj" \
|
||||
"$(INTDIR)\mxdirectdraw.obj"
|
||||
|
||||
".\Debug\LEGO1.DLL" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
@ -516,6 +520,34 @@ DEP_CPP_LEGON=\
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
# End Source File
|
||||
################################################################################
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\LEGO1\mxdirectdraw.cpp
|
||||
|
||||
!IF "$(CFG)" == "LEGO1 - Win32 Release"
|
||||
|
||||
DEP_CPP_MXDIR=\
|
||||
".\LEGO1\mxdirectdraw.h"\
|
||||
|
||||
|
||||
"$(INTDIR)\mxdirectdraw.obj" : $(SOURCE) $(DEP_CPP_MXDIR) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "LEGO1 - Win32 Debug"
|
||||
|
||||
DEP_CPP_MXDIR=\
|
||||
".\LEGO1\mxdirectdraw.h"\
|
||||
|
||||
|
||||
"$(INTDIR)\mxdirectdraw.obj" : $(SOURCE) $(DEP_CPP_MXDIR) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Target
|
||||
################################################################################
|
||||
|
||||
Loading…
Reference in New Issue
Block a user