mirror of
https://codeberg.org/KeybadeBlox/JSRF-Decompilation.git
synced 2026-02-20 10:17:03 +03:00
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:
parent
10b3c8c273
commit
7e1785e466
12 changed files with 151 additions and 27 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
*.obj
|
||||
10
objdiff/Makefile
Normal file
10
objdiff/Makefile
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
all: src/Jet2.obj
|
||||
|
||||
# Simple inference rule for producing object files
|
||||
.SUFFIXES: .cpp .obj
|
||||
.cpp.obj:
|
||||
CL.EXE /nologo /Wall /TP /W3 /O2 /G6 /MT /GX /Fo$@ /c $<
|
||||
|
||||
# Header files used for each object
|
||||
src/Jet2.obj: src/Core.hpp src/D3D.hpp src/MMatrix.hpp src/Std.hpp\
|
||||
src/Win32.hpp
|
||||
22
objdiff/objdiff.json
Normal file
22
objdiff/objdiff.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"custom_make": "NMAKE.EXE",
|
||||
"watch_patterns": [
|
||||
"*.cpp",
|
||||
"*.hpp"
|
||||
],
|
||||
"units": [
|
||||
{
|
||||
"name": "Jet2",
|
||||
"target_path": "target/Jet2.obj",
|
||||
"base_path": "src/Jet2.obj",
|
||||
"complete": true,
|
||||
"metadata": {
|
||||
"source_path": "src/Jet2.cpp"
|
||||
},
|
||||
"symbol_mappings": {
|
||||
"FUN_00187710": "$L514",
|
||||
"FUN_0018771b": "$L522"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,20 +1,27 @@
|
|||
/* JSRF Decompilation: Core.hpp
|
||||
Game and GameObj classes that form the foundation of the JSRF game code.
|
||||
*/
|
||||
|
||||
#ifndef CORE_HPP
|
||||
#define CORE_HPP
|
||||
|
||||
#include "D3D.hpp"
|
||||
#include "MMatrix.hpp"
|
||||
#include "Std.hpp"
|
||||
#include "Win32.hpp"
|
||||
|
||||
|
||||
typedef bool32 unsigned; // Need to find a clean way of representing this
|
||||
|
||||
typedef Mat4 D3DVECTOR4[4]; // Should probably be defined somewhere else
|
||||
|
||||
struct GraphicsPerformanceCounters { // Would come from header with Graphics COM object
|
||||
// TODO; move to header for Graphics COM object in Smilebit libraries
|
||||
struct GraphicsPerformanceCounters {
|
||||
unsigned fps;
|
||||
unsigned trianglesPerSecond;
|
||||
unsigned frameTriangleCnt;
|
||||
unsigned unknown0xC;
|
||||
unsigned unknown0x10;
|
||||
unsigned unknown0x14;
|
||||
}
|
||||
};
|
||||
|
||||
// Base class of most objects
|
||||
// Base class of most objects (and everything in g_game->objects)
|
||||
class GameObj {
|
||||
enum GameObjFlags {
|
||||
GOF_SOMETHINGLINKED_ALTLIST = 1 << 0,
|
||||
|
|
@ -93,38 +100,38 @@ extern class Game {
|
|||
unsigned * unknown0xC;
|
||||
int initState;
|
||||
unsigned unknown0x14;
|
||||
bool32 drawProfilingInfo;
|
||||
BOOL drawProfilingInfo;
|
||||
int unknown0x1C;
|
||||
bool32 logosStarted;
|
||||
bool32 fatalErr;
|
||||
BOOL logosStarted;
|
||||
BOOL fatalErr;
|
||||
|
||||
D3DCOLOR colour;
|
||||
D3DCOLOR ambientColour;
|
||||
D3DCOLOR shadowColour;
|
||||
D3DCOLOR bgColour;
|
||||
D3DCOLOR bgColourFallback;
|
||||
bool32 useFallbackBgColour;
|
||||
BOOL useFallbackBgColour;
|
||||
|
||||
// Game state used to select GameObj methods to call in main loop
|
||||
// If multiple states are acivated, the precedence is
|
||||
// coveredPause > Event > FreezeCam > UncoveredPause > Default
|
||||
bool32 coveredPause; // Game paused with world not visible
|
||||
bool32 event; // Events (cutscenes)
|
||||
bool32 freezeCam; // Time-frozen camera shots
|
||||
bool32 uncoveredPause; // Game paused with world visible, or
|
||||
BOOL coveredPause; // Game paused with world not visible
|
||||
BOOL event; // Events (cutscenes)
|
||||
BOOL freezeCam; // Time-frozen camera shots
|
||||
BOOL uncoveredPause; // Game paused with world visible, or
|
||||
// automatic pause at start of mission
|
||||
|
||||
bool32 setCoveredPauseNextFrame;
|
||||
bool32 unsetCoveredPauseNextFrame;
|
||||
bool32 setEventNextFrame;
|
||||
bool32 unsetEventNextFrame;
|
||||
bool32 setFreezeCamNextFrame;
|
||||
bool32 unsetFreezeCamNextFrame;
|
||||
bool32 setUncoveredPauseNextFrame;
|
||||
bool32 unsetUncoveredPauseNextFrame;
|
||||
BOOL setCoveredPauseNextFrame;
|
||||
BOOL unsetCoveredPauseNextFrame;
|
||||
BOOL setEventNextFrame;
|
||||
BOOL unsetEventNextFrame;
|
||||
BOOL setFreezeCamNextFrame;
|
||||
BOOL unsetFreezeCamNextFrame;
|
||||
BOOL setUncoveredPauseNextFrame;
|
||||
BOOL unsetUncoveredPauseNextFrame;
|
||||
|
||||
unsigned unknown0x70;
|
||||
bool32 skipDraw;
|
||||
BOOL skipDraw;
|
||||
int zeroedByExec;
|
||||
GraphicsPerformanceCounters perfCounters;
|
||||
|
||||
|
|
@ -150,8 +157,6 @@ extern class Game {
|
|||
GameObj * linkedListsByKeyHeads [256];
|
||||
GameObj * * linkedListByKeyEndNexts[256];
|
||||
|
||||
unsigned unknown0x87B4;
|
||||
|
||||
LARGE_INTEGER execPerfCount;
|
||||
LARGE_INTEGER drawPerfCount;
|
||||
|
||||
|
|
@ -175,7 +180,9 @@ public:
|
|||
Game(unsigned *, unsigned);
|
||||
virtual ~Game();
|
||||
|
||||
// TODO: methods
|
||||
void initExecRootObj();
|
||||
void mainLoop();
|
||||
// TODO: other methods
|
||||
} * g_game;
|
||||
|
||||
|
||||
16
objdiff/src/D3D.hpp
Normal file
16
objdiff/src/D3D.hpp
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/* JSRF Decompilation: D3D.hpp
|
||||
Direct3D8 declarations.
|
||||
*/
|
||||
|
||||
#ifndef D3D_HPP
|
||||
#define D3D_HPP
|
||||
|
||||
#include "Win32.hpp"
|
||||
|
||||
|
||||
typedef DWORD D3DCOLOR;
|
||||
|
||||
struct D3DVECTOR { float x, y, z ; };
|
||||
struct D3DVECTOR4 { float x, y, z, w; };
|
||||
|
||||
#endif
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
#pragma bss_seg(".data")
|
||||
|
||||
#include "Core.hpp"
|
||||
|
||||
|
||||
14
objdiff/src/MMatrix.hpp
Normal file
14
objdiff/src/MMatrix.hpp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
/* JSRF Decompilation: MMatrix.hpp
|
||||
Smilebit's stack-based matrix math library.
|
||||
*/
|
||||
|
||||
#ifndef MMATRIX_HPP
|
||||
#define MMATRIX_HPP
|
||||
|
||||
#include "D3D.hpp"
|
||||
|
||||
|
||||
// 4x4 matrix type
|
||||
typedef D3DVECTOR4 Mat4[4];
|
||||
|
||||
#endif
|
||||
12
objdiff/src/Std.hpp
Normal file
12
objdiff/src/Std.hpp
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/* JSRF Decompilation: Std.hpp
|
||||
C(++) standard library definitions. Implemented in the repository instead of
|
||||
linking to an outside stdlib to ensure consistency (this may not actually be
|
||||
possible to accomplish, but we'll go for it for now).
|
||||
*/
|
||||
|
||||
#ifndef STD_HPP
|
||||
#define STD_HPP
|
||||
|
||||
#define NULL 0
|
||||
|
||||
#endif
|
||||
40
objdiff/src/Win32.hpp
Normal file
40
objdiff/src/Win32.hpp
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
/* JSRF Decompilation: Win32.hpp
|
||||
Definitions normally provided by Windows headers.
|
||||
*/
|
||||
|
||||
#ifndef WIN32_HPP
|
||||
#define WIN32_HPP
|
||||
|
||||
// The famous Win32 typedefs
|
||||
typedef unsigned char UCHAR;
|
||||
typedef char CHAR;
|
||||
typedef unsigned short USHORT;
|
||||
typedef short SHORT;
|
||||
typedef unsigned int UINT;
|
||||
typedef int INT;
|
||||
typedef unsigned long ULONG;
|
||||
typedef long LONG;
|
||||
typedef unsigned __int64 ULONGLONG;
|
||||
typedef __int64 LONGLONG;
|
||||
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned short WORD;
|
||||
typedef unsigned long DWORD;
|
||||
|
||||
typedef int BOOL;
|
||||
typedef float FLOAT;
|
||||
|
||||
// 64-bit integer compatibility type
|
||||
union LARGE_INTEGER {
|
||||
struct {
|
||||
DWORD LowPart;
|
||||
LONG HighPart;
|
||||
};
|
||||
struct {
|
||||
DWORD LowPart;
|
||||
LONG HighPart;
|
||||
} u;
|
||||
LONGLONG QuadPart;
|
||||
};
|
||||
|
||||
#endif
|
||||
0
objdiff/target/.gitkeep
Normal file
0
objdiff/target/.gitkeep
Normal file
Loading…
Add table
Add a link
Reference in a new issue