Implement MxVector2/3/4 and MxMatrix (#100)

* All of the MxVectors share an inheritance chain. MxVector4 inherits
  from MxVector3 which inherits from MxVector2.

* They all operate on a shared `float*` data member which points to the
  underlying storage.

* There are also MxVector3/4Data classes, which inherit from Vector3/4,
  but add concrete storage for the Vector data rather than just an
  abstract data pointer.

* The same is true for MxMatrix, with there being an abstract and a
  concrete variant of it.

* Also improve reccmp.py register matching algorithm. It previously
  could not recognize an effective match when a swap had to take place
  between two registers used on the same line. It turns out this happens
  a lot in floating point math code so I adjusted the implementation to
  break the disassembly lines on spaces rather than just linebreaks
  allowing the existing effective match code to handle that case too.
This commit is contained in:
Mark Langen
2023-08-03 11:25:29 -07:00
committed by GitHub
parent ee7c419be8
commit 694045abd8
6 changed files with 881 additions and 4 deletions

View File

@@ -128,6 +128,7 @@ add_library(lego1 SHARED
LEGO1/mxloopingflcpresenter.cpp
LEGO1/mxloopingmidipresenter.cpp
LEGO1/mxloopingsmkpresenter.cpp
LEGO1/mxmatrix.cpp
LEGO1/mxmediapresenter.cpp
LEGO1/mxmidipresenter.cpp
LEGO1/mxmusicpresenter.cpp
@@ -156,6 +157,7 @@ add_library(lego1 SHARED
LEGO1/mxunknown100dc6b0.cpp
LEGO1/mxunknown100dc6e0.cpp
LEGO1/mxvariabletable.cpp
LEGO1/mxvector.cpp
LEGO1/mxvideomanager.cpp
LEGO1/mxvideoparam.cpp
LEGO1/mxvideoparamflags.cpp