Compile XDK code as C

It appears to be all C code (especially the non-C++ parts of the C
runtime, of course), so we'll compile it as such.
This commit is contained in:
KeybadeBlox 2026-02-17 10:27:50 -05:00
parent 149af27b9c
commit d435282a8b
9 changed files with 48 additions and 23 deletions

View file

@ -31,17 +31,19 @@ src/JSRF/Jet2.exe: $(OBJ) $(LIB)
LIB.EXE /NOLOGO /MACHINE:X86 /DEF:$< /OUT:$@ LIB.EXE /NOLOGO /MACHINE:X86 /DEF:$< /OUT:$@
# Compile object files from source # Compile object files from source
.c.obj:
CL.EXE /nologo /Wall /W4 /Ogityb0 /GfX /Fo$@ /c $<
.cpp.obj: .cpp.obj:
CL.EXE /nologo /Wall /W4 /Ogityb0 /GfX /Fo$@ /c $< CL.EXE /nologo /Wall /W4 /Ogityb0 /GfX /Fo$@ /c $<
# Header files used for each object # Header files used for each object
src/JSRF/Jet2.obj: src/JSRF/Core.hpp src/Std.hpp src/XDK/D3D.hpp\ src/JSRF/Jet2.obj: src/JSRF/Core.hpp src/Std.hpp src/XDK/D3D.h\
src/XDK/Win32.hpp src/XDK/Win32.h
src/JSRF/Core.obj: src/JSRF/Core.hpp src/Smilebit/MMatrix.hpp src/Std.hpp\ src/JSRF/Core.obj: src/JSRF/Core.hpp src/Smilebit/MMatrix.hpp src/Std.hpp\
src/XDK/D3D.hpp src/XDK/Win32.hpp src/XDK/D3D.h src/XDK/Win32.h
src/JSRF/GameData.obj: src/JSRF/GameData.hpp src/JSRF/GameData.obj: src/JSRF/GameData.hpp
src/XDK/CRT/CRT0.obj: src/XDK/Win32.hpp src/XDK/CRT/CRT0.obj: src/XDK/Win32.h

View file

@ -7,8 +7,8 @@ Game and GameObj classes that form the foundation of the JSRF game code.
#include "../Smilebit/MMatrix.hpp" #include "../Smilebit/MMatrix.hpp"
#include "../Std.hpp" #include "../Std.hpp"
#include "../XDK/D3D.hpp" #include "../XDK/D3D.h"
#include "../XDK/Win32.hpp" #include "../XDK/Win32.h"
// TODO; move to header for Graphics COM object in Smilebit libraries // TODO; move to header for Graphics COM object in Smilebit libraries

View file

@ -4,7 +4,7 @@ Save data and closely-related runtime data.
#pragma bss_seg(".data") #pragma bss_seg(".data")
#include "../XDK/Win32.hpp" #include "../XDK/Win32.h"
#include "GameData.hpp" #include "GameData.hpp"

View file

@ -5,7 +5,7 @@ Save data and closely-related runtime data.
#ifndef GAMEDATA_HPP #ifndef GAMEDATA_HPP
#define GAMEDATA_HPP #define GAMEDATA_HPP
#include "../XDK/Win32.hpp" #include "../XDK/Win32.h"
// Data structure actually saved to disk // Data structure actually saved to disk

View file

@ -7,7 +7,7 @@ Smilebit's stack-based matrix math library.
#include "../Std.hpp" #include "../Std.hpp"
#include "../XDK/Win32.hpp" #include "../XDK/Win32.h"
#include "MMatrix.hpp" #include "MMatrix.hpp"

View file

@ -5,7 +5,7 @@ Smilebit's stack-based matrix math library.
#ifndef MMATRIX_HPP #ifndef MMATRIX_HPP
#define MMATRIX_HPP #define MMATRIX_HPP
#include "../XDK/D3D.hpp" #include "../XDK/D3D.h"
// 4x4 matrix type // 4x4 matrix type

View file

@ -1,24 +1,24 @@
/* JSRF Decompilation: XDK/CRT0.cpp /* JSRF Decompilation: XDK/CRT0.c
C runtime initialization. C runtime initialization.
Like other CRT code, there's some magic here with symbols that get special Like other CRT code, there's some magic here with symbols that get special
treatment from the compiler and linker. treatment from the compiler and linker.
*/ */
#include "../Win32.hpp" #include "../Win32.h"
// Every program is supposed to have a main(), so we can just assume its // Every program is supposed to have a main(), so we can just assume its
// existence with a declaration here // existence with a declaration here
int main(); int main(void);
void __cdecl mainCRTStartup (); void __cdecl mainCRTStartup (void);
static DWORD __stdcall mainXapiStartup(LPVOID lpThreadParameter); DWORD __stdcall mainXapiStartup(LPVOID lpThreadParameter);
// Address: 0x00148023 // Address: 0x00148023
// Matching: no // Matching: no
void __cdecl mainCRTStartup() { void __cdecl mainCRTStartup(void) {
/* The true entrypoint of the game, spawning a thread for the rest to run in /* The true entrypoint of the game, spawning a thread for the rest to run in
The linker automatically sets this function to the entrypoint. The linker automatically sets this function to the entrypoint.
*/ */

View file

@ -1,11 +1,16 @@
/* JSRF Decompilation: XDK/D3D.hpp /* JSRF Decompilation: XDK/D3D.h
Direct3D8 declarations. Direct3D8 declarations.
*/ */
#ifndef D3D_HPP #ifndef D3D_H
#define D3D_HPP #define D3D_H
#include "Win32.hpp" #include "Win32.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef DWORD D3DCOLOR; typedef DWORD D3DCOLOR;
@ -21,4 +26,10 @@ struct D3DRECT {
LONG x1, y1, x2, y2; LONG x1, y1, x2, y2;
}; };
#ifdef __cplusplus
}
#endif
#endif #endif

View file

@ -1,9 +1,15 @@
/* JSRF Decompilation: XDK/Win32.hpp /* JSRF Decompilation: XDK/Win32.h
Definitions normally provided by Windows headers. Definitions normally provided by Windows headers.
*/ */
#ifndef WIN32_HPP #ifndef WIN32_H
#define WIN32_HPP #define WIN32_H
#ifdef __cplusplus
extern "C" {
#endif
// The famous Win32 typedefs // The famous Win32 typedefs
typedef unsigned char UCHAR; typedef unsigned char UCHAR;
@ -55,4 +61,10 @@ LPVOID __stdcall VirtualAlloc(
DWORD flProtect DWORD flProtect
); );
#ifdef __cplusplus
}
#endif
#endif #endif