From 4b10d951e5c463d86137025dea83f6e29dd313a4 Mon Sep 17 00:00:00 2001
From: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
Date: Sat, 29 Apr 2023 20:39:01 -0700
Subject: [PATCH] improved accuracy of library headers

---
 isle.mak                      |  66 +++++++++++++++++++++++++++++++---
 isle.mdp                      | Bin 36352 -> 36864 bytes
 lib/mxcore.h                  |  14 ++++++++
 lib/mxomnicreateparam.h       |   4 +--
 lib/mxomnicreateparambase.cpp |   6 ++++
 lib/mxomnicreateparambase.h   |  13 +++++++
 lib/mxstring.h                |  11 +++---
 lib/mxvideoparam.h            |   1 +
 8 files changed, 104 insertions(+), 11 deletions(-)
 create mode 100644 lib/mxcore.h
 create mode 100644 lib/mxomnicreateparambase.cpp
 create mode 100644 lib/mxomnicreateparambase.h

diff --git a/isle.mak b/isle.mak
index b066ca73..90ce7420 100644
--- a/isle.mak
+++ b/isle.mak
@@ -32,8 +32,8 @@ NULL=nul
 # Begin Project
 # PROP Target_Last_Scanned "isle - Win32 Debug"
 CPP=cl.exe
-RSC=rc.exe
 MTL=mktyplib.exe
+RSC=rc.exe
 
 !IF  "$(CFG)" == "isle - Win32 Release"
 
@@ -57,6 +57,7 @@ CLEAN :
 	-@erase "$(INTDIR)\isle.obj"
 	-@erase "$(INTDIR)\isle.res"
 	-@erase "$(INTDIR)\main.obj"
+	-@erase "$(INTDIR)\mxomnicreateparambase.obj"
 	-@erase "$(OUTDIR)\isle.exe"
 
 "$(OUTDIR)" :
@@ -92,7 +93,8 @@ LINK32_OBJS= \
 	"$(INTDIR)\define.obj" \
 	"$(INTDIR)\isle.obj" \
 	"$(INTDIR)\isle.res" \
-	"$(INTDIR)\main.obj"
+	"$(INTDIR)\main.obj" \
+	"$(INTDIR)\mxomnicreateparambase.obj"
 
 "$(OUTDIR)\isle.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
     $(LINK32) @<<
@@ -121,6 +123,7 @@ CLEAN :
 	-@erase "$(INTDIR)\isle.obj"
 	-@erase "$(INTDIR)\isle.res"
 	-@erase "$(INTDIR)\main.obj"
+	-@erase "$(INTDIR)\mxomnicreateparambase.obj"
 	-@erase "$(INTDIR)\vc40.idb"
 	-@erase "$(INTDIR)\vc40.pdb"
 	-@erase "$(OUTDIR)\isle.exe"
@@ -160,7 +163,8 @@ LINK32_OBJS= \
 	"$(INTDIR)\define.obj" \
 	"$(INTDIR)\isle.obj" \
 	"$(INTDIR)\isle.res" \
-	"$(INTDIR)\main.obj"
+	"$(INTDIR)\main.obj" \
+	"$(INTDIR)\mxomnicreateparambase.obj"
 
 "$(OUTDIR)\isle.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
     $(LINK32) @<<
@@ -233,11 +237,13 @@ DEP_CPP_ISLE_=\
 	".\lib\legoworldpresenter.h"\
 	".\lib\mxatomid.h"\
 	".\lib\mxbackgroundaudiomanager.h"\
+	".\lib\mxcore.h"\
 	".\lib\mxdirectdraw.h"\
 	".\lib\mxdsaction.h"\
 	".\lib\mxomni.h"\
 	".\lib\mxomnicreateflags.h"\
 	".\lib\mxomnicreateparam.h"\
+	".\lib\mxomnicreateparambase.h"\
 	".\lib\mxpalette.h"\
 	".\lib\mxrect32.h"\
 	".\lib\mxstreamcontroller.h"\
@@ -260,8 +266,39 @@ DEP_CPP_ISLE_=\
 # Begin Source File
 
 SOURCE=.\app\main.cpp
+DEP_CPP_MAIN_=\
+	".\app\define.h"\
+	".\app\isle.h"\
+	".\lib\define.h"\
+	".\lib\legoanimationmanager.h"\
+	".\lib\legobuildingmanager.h"\
+	".\lib\legogamestate.h"\
+	".\lib\legoinputmanager.h"\
+	".\lib\legomodelpresenter.h"\
+	".\lib\legoomni.h"\
+	".\lib\legopartpresenter.h"\
+	".\lib\legoroi.h"\
+	".\lib\legovideomanager.h"\
+	".\lib\legoworldpresenter.h"\
+	".\lib\mxatomid.h"\
+	".\lib\mxbackgroundaudiomanager.h"\
+	".\lib\mxdsaction.h"\
+	".\lib\mxomnicreateflags.h"\
+	".\lib\mxomnicreateparam.h"\
+	".\lib\mxpalette.h"\
+	".\lib\mxrect32.h"\
+	".\lib\mxstreamcontroller.h"\
+	".\lib\mxstreamer.h"\
+	".\lib\mxstring.h"\
+	".\lib\mxticklemanager.h"\
+	".\lib\mxtimer.h"\
+	".\lib\mxtransitionmanager.h"\
+	".\lib\mxvariabletable.h"\
+	".\lib\mxvideoparam.h"\
+	".\lib\mxvideoparamflags.h"\
+	
 
-"$(INTDIR)\main.obj" : $(SOURCE) "$(INTDIR)"
+"$(INTDIR)\main.obj" : $(SOURCE) $(DEP_CPP_MAIN_) "$(INTDIR)"
    $(CPP) $(CPP_PROJ) $(SOURCE)
 
 
@@ -287,6 +324,27 @@ SOURCE=.\app\res\isle.rc
 
 !ENDIF 
 
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=.\lib\mxomnicreateparambase.cpp
+DEP_CPP_MXOMN=\
+	".\lib\mxomnicreateflags.h"\
+	".\lib\mxomnicreateparam.h"\
+	".\lib\mxomnicreateparambase.h"\
+	".\lib\mxpalette.h"\
+	".\lib\mxrect32.h"\
+	".\lib\mxstring.h"\
+	".\lib\mxvariabletable.h"\
+	".\lib\mxvideoparam.h"\
+	".\lib\mxvideoparamflags.h"\
+	
+
+"$(INTDIR)\mxomnicreateparambase.obj" : $(SOURCE) $(DEP_CPP_MXOMN) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 # End Source File
 # End Target
 # End Project
diff --git a/isle.mdp b/isle.mdp
index 23728fd59733324aaf0f35fcf6a29cd916009321..f6af68b76c017a77edbcef4b6598604021faaca0 100644
GIT binary patch
literal 36864
zcmeI4>vGdZ6vvN99PEVV>Oe~`q!fC`g_z#xg%+DoGIXXxI+ISv{jio6XB(}gS<B$Q
zNgtqnfV@CopfAvm{oI#mcjXHTI2$ocv626pv9%-rwY%rHXOHC7vA1__U7n#?`iAHP
zVVgPv|6-eJ0)J1n^)UVmdY^95d3uoyi^b#}RHlc(@PaozCd1Mcfmu2^bO97V00ck)
z1V8`;@=0K8`vko}Th6a^KtIeL<kLu41p*)d0w4eaAYdg>zm59=E1;ZzSfDw*0#u|D
z&C>#%()WhgriVa@X2=<sJ1h(iU=IQy00JNY0w9nN0$Bgc$2h_Y5C8!X009tq8Uk4V
zdm4Jr|G7)FOe?fXYgDFnI!$Muf0JNAW&$O>_B+#8|M^quv}7$X`9VnXu}K&-pU&#n
z+%AjVy(@#l=Acj=6s`{H`S#BCok1CU5C8!X009sHf$<T*`rr82qh$~P0T2KI5SSDK
zSpS=pkr+=uUZS(~GQC2t(ra{%Ht6;7bOWu9g+Pf`ej7B5^}hiL>_GqoKmY_lAa4Y)
z{+G8Ag*_ku0w4eaAn@b_u>SYt%<^=`8+3s#(wp=ay-n}XyYyb3jDs!55a_M{nPk7R
zX#0HQ(#Ea`s+${kxzAaf7swfI7k<3f*b60ZNEXM9wsIThj0TIMhR5%TfLGioa-8!=
z%Z&b5kz^w1i7p;plj7~9^@?&Gr#f2ai)KT1Lm3EHaTfE4DJGlRs9x=~ddT29Z+2RF
zHutC@E+(TQ*}kLy1fcev3V-HqJkl9P9yBSU{}hsJQC%9r^sr#ASl-#WaaaH5e1U4;
zGu7hp?U>8{;pNJs?xg>gptdD^o)RtgL_=pfS~7H{5t5Z&Eony@p_=h{<mklcTAfEc
z@Oa?<QVWAvyC_%vJ{SAWzvs|WT4#FQm&_%7wFu^QH^Po`dBq~i(9mh0w?Y;OJwrtp
zNEWabSGGFW%?Ztp@I4W<GU%6#zQrVO$9hKDYF;%;5k#FhL$zfimZ8V}NR!|}Z145F
zk(-Ha>%f{3={X-~s<LF%Dzw&^m~>xwJj`m+gHZWiruOG$m&KtJp3S7QvfE_teoKX&
zz+)XxWa-GF?0Q1!IqfO-z*hSyEo?K_c#ch0?8Q`@WGx+b@A<6N&a6&?v`xJryAktw
zZ1+Bm)0kY{v{hA>-FB=m4bs(9T7|xE_d3m|C%4OV(^{sdldb6$*^Py}@AC|vR5Ds=
zZ**O26bsrS<Gk1H-)Bm&rY33LY<<-ZlsNsdL!*cNq43yYKa+Nnhu3CX0F+%fRMx&0
ziskzDE~2)+PNl9th}wwSh}za0Aw=yY1dlUnpQ|+NU)e_7pZDT@?_GcWzy<;!00JNY
z0w4eaAOHd&00JNY0w4eaAn-VWOH`o`=rUcQO{&sW`j9@NkLeTol&;Zd^!ei_;7E=L
zEK?z|<^cI0$p1k8$D_F>c#?=GiNiD=<bRmdE#!aLQ!(%)aqLeL5w#Ju5w#Dc03m84
zYNwKzQ^{cyleLHZk7vHF@YnBuJo7fu;A9c_lCINN^fld}8rA70ZB179(3}62K#BeX
Db1-uz

literal 36352
zcmeI*O>^5s7zgmjaU5)?jhn;?P~HrsrKQv~PRdJwLhH~DnRcerl*z>$Hqyos(c4IC
zYHq#q3Ak`z3<r*!IQQNQ7mgT);X=Pak7ZZ3GRlmz(Sf{R|1}d^wjV#*{q1_AtR-c2
z?dIhyjnhq{F~Tx(0#C7ww7{PuU3*miLwbvD&};M@DT}G-7Am775dXq^FgjI6O%np+
z^i13Za1Q|pKmY;|fB*y_009U<00Izzz>o`MGc@+w>J)ALd~YmYx-)k1uYbOumv#Po
zeNBEZ^ziA`KYr@ShYuQ`hdc-yx0w))FfbZcX!8d1{YJpU=s`6w&ev)emMe9yWt$b(
z6O~QNH7jC^%N3hfP8O4tkGel}D3dntLh8J~c7N%}Z?saDcQJL|-@D&*HnVB-E~U=<
zxcgmab3AR{E2;B7>3-X3<@U~-qX{_!l&1m}X_8LR$z<bTeaHn0l$9U8{<5<YKY@D)
zKmY;|fB*y_009U<00Izz00f3h0P}z8<|~J7{;x!*XqskdmdZ3o^YrX+b!*f{D^QSg
zzuA7oqc0Mn(Oh73LP+$oI$%(}Ixc@E)|oK27UGp!ys{XtEX8?l-&(yDuj3v95P$##
zAOHafKmY;|fB*y_0D+?y!2I86&i_46r|AWHkzS&g=@qKbt4H4zQG!DgDA4qehqf_n
z2m%m*00bZa0SG_<0uX=z1Rwx`BNo8?-)PSNouSw1ES;k_=saDZH|gRL_d{&{Fa>(^
zf9hbrvO1B!a;dUzxr?>RU2bz0@*HJ$mb3NcJ<t6&xje<6R}J6KWX@>f)He2ya+u}z
zqRwe@C9XG+$<WNM;;-<HR`dT;_`Ue^k(a}^Gx7xe`klc0k{e=RLk)aV9lrTE7ahqd
z*9Hjf4w%T7*VeAzmFI&`QvDtanp}J)xYK|7R5iNFL!zbSB?Ia=<OLlPK~ue;oo3!U
zWT%Y>gk(+bXXN3?^%d@O*W|A8b=`A?>=iudmnPpY$5w_)$v9P>e#k^r3Qa(Y98*sF
zE6e1b&jRLDHMu68w$E%X1lL6sopvBwaIvNfnwHySfyFjtI(4IqolTZ+(`L<37hSY@
z)AJnH(gmG%+8fN+ZU$b<HCfBFJcqfg$phV+PB?8dWQMRjR~IJh&xGe#rY=a<NtMwE
zI1_wd_+8Qa3pnji1eV*>6+l)-265)->s*e*4B0mW&$jj9vRQ>?Y}-5qXF<j8v-vq0
z6EHWl6ncuB^Q!TgYdI|C8|Ks-Hd>Z#O0N_fD5?0SR11Y{I34heinLt6B~qj<t6;}7
zx$VmlpSwcOJgdTGuMw%D3o1JBv>%A50QbGXHdCdHDi;kJDJmz&7t>Nhf*G*;I<kE4
zL!k>PN*=Ej7+U&VzPz%!jsX?}ECyH%u+jb=23WP%``-?*)4l!R<ew-5_H%oKaqm{{
zpksjm1Rwwb2tWV=5P$##AOHafKmY;<BXEhT^fq0l1**{^EzuQvhu)?4=zUtI4-RIN
z$a-u9N|ZY`WkEq8009U<00Izz00bZa0SG_<0uVT8f%yC%{~`YWpYHz^4%_v=KccJj
YF?~YU=sMMDg+4v#j)wflNT5Lf0toR{4gdfE

diff --git a/lib/mxcore.h b/lib/mxcore.h
new file mode 100644
index 00000000..a3ec87c7
--- /dev/null
+++ b/lib/mxcore.h
@@ -0,0 +1,14 @@
+#ifndef MXCORE_H
+#define MXCORE_H
+
+class MxCore
+{
+public:
+  virtual ~MxCore();
+
+private:
+  unsigned int m_id;
+
+};
+
+#endif // MXCORE_H
diff --git a/lib/mxomnicreateparam.h b/lib/mxomnicreateparam.h
index 52a3a2bd..f72623aa 100644
--- a/lib/mxomnicreateparam.h
+++ b/lib/mxomnicreateparam.h
@@ -4,14 +4,14 @@
 #include <Windows.h>
 
 #include "mxomnicreateflags.h"
+#include "mxomnicreateparambase.h"
 #include "mxstring.h"
 #include "mxvideoparam.h"
 
-class MxOmniCreateParam
+class MxOmniCreateParam : public MxOmniCreateParamBase
 {
 public:
   __declspec(dllexport) MxOmniCreateParam(const char *mediaPath, struct HWND__ *windowHandle, MxVideoParam &vparam, MxOmniCreateFlags flags);
-
   virtual void vtable00();
 
 private:
diff --git a/lib/mxomnicreateparambase.cpp b/lib/mxomnicreateparambase.cpp
new file mode 100644
index 00000000..fe7c5836
--- /dev/null
+++ b/lib/mxomnicreateparambase.cpp
@@ -0,0 +1,6 @@
+#include "mxomnicreateparam.h"
+
+MxOmniCreateParamBase::~MxOmniCreateParamBase()
+{
+
+}
diff --git a/lib/mxomnicreateparambase.h b/lib/mxomnicreateparambase.h
new file mode 100644
index 00000000..fee0a488
--- /dev/null
+++ b/lib/mxomnicreateparambase.h
@@ -0,0 +1,13 @@
+#ifndef MXOMNICREATEPARAMBASE_H
+#define MXOMNICREATEPARAMBASE_H
+
+// FIXME: Clearly not its real name
+class MxOmniCreateParamBase
+{
+public:
+  ~MxOmniCreateParamBase();
+  virtual void vtable00(){}
+
+};
+
+#endif // MXOMNICREATEPARAMBASE_H
diff --git a/lib/mxstring.h b/lib/mxstring.h
index a28e446c..16878e94 100644
--- a/lib/mxstring.h
+++ b/lib/mxstring.h
@@ -1,15 +1,16 @@
 #ifndef MXSTRING_H
 #define MXSTRING_H
 
-class MxString
+#include "mxcore.h"
+
+class MxString : public MxCore
 {
 public:
+  __declspec(dllexport) virtual ~MxString();
 
 private:
-  int m_unk00;
-  int m_unk04;
-  int m_unk08;
-  int m_unk0c;
+  char *m_data;
+  unsigned short m_length;
 
 };
 
diff --git a/lib/mxvideoparam.h b/lib/mxvideoparam.h
index c5b7199f..836b7a9d 100644
--- a/lib/mxvideoparam.h
+++ b/lib/mxvideoparam.h
@@ -11,6 +11,7 @@ class MxVideoParam
 public:
   __declspec(dllexport) MxVideoParam();
   __declspec(dllexport) MxVideoParam(MxRect32 &rect, MxPalette *pal, unsigned long p3, MxVideoParamFlags &flags);
+  __declspec(dllexport) ~MxVideoParam();
 
   __declspec(dllexport) void SetDeviceName(char *id);