Add objdiff setup

This is intended more as a proof of concept as we figure things out
than the start of an actual decompilation in this repository.  Target
object files are currently "bring your own."
This commit is contained in:
KeybadeBlox 2025-12-14 19:27:11 -05:00
parent 10b3c8c273
commit 7e1785e466
12 changed files with 151 additions and 27 deletions

View file

@ -1,56 +0,0 @@
#pragma code_seg("MMATRIX")
// Address: 0x00264C04
Mat4 * * g_matricesHead;
// Address: 0x00264C08
Mat4 * g_matrices[3];
// Address: 0x001BB690
// Matching: yes
HRESULT __stdcall initMatrices(unsigned const count) {
/* Initialize the matrix stack with the given number of matrices.
The requested number of matrices is rounded up to the nearest multiple of two.
The initialized matrices are accessible through g_matrices.
*/
// Allocate matrices
unsigned i = (count + 1) & 0xFFFFFFFE; // Round up
Mat4 * const mats = (Mat4 *)VirtualAlloc(
NULL,
(i + 2) * sizeof *mats,
MEM_COMMIT|MEM_RESERVE,
PAGE_READWRITE
);
if (mats != NULL) {
Mat4 * mat = mats + 2;
// Initialize each matrix to identity
if (i > 0) for (; i > 0; i--) {
float * entry = (float *)mat;
for (unsigned j = 0; j < sizeof *mat/sizeof *entry; j++) {
*entry = 0;
entry += 1;
}
(*mat)[3].w = 1;
(*mat)[2].z = 1;
(*mat)[1].y = 1;
(*mat)[0].x = 1;
mat++;
}
// Assign to g_matrices for later access
mat = mats + 2;
g_matrices[1] = mats;
g_matrices[2] = mat;
g_matrices[0] = mats;
g_matricesHead = g_matrices + 2;
return ERROR_SUCCESS;
}
return E_OUTOFMEMORY;
}