Compare commits

..

4 commits

Author SHA1 Message Date
KeybadeBlox
57fc53ebfb Add IMAGE_TLS_DIRECTORY32 struct
With this, everything is delinking again.
2026-03-21 22:35:37 -04:00
KeybadeBlox
da6865e5f6 Fix typo in Core.hpp
Was making builds fail.
2026-03-21 20:56:49 -04:00
KeybadeBlox
3e8622f369 Mention Wine for non-Windows OSs in documentation 2026-03-21 20:55:52 -04:00
KeybadeBlox
8fc7d8d918 Add recommended tool versions to Getting Started 2026-03-21 15:23:03 -04:00
5 changed files with 37 additions and 12 deletions

View file

@ -16,10 +16,10 @@
"source_path": "src/JSRF/Jet2.cpp"
},
"symbol_mappings": {
"?main_funcinfo@@3UFuncInfo@@A": "$T747",
"?main_handler@@YAXPAUEHExceptionRecord@@PAKPAXPAU_xDISPATCHER_CONTEXT@@@Z": "$L751",
"?main_handler_unwind1@@YAXXZ": "$L743",
"?main_unwindmap@@3PAUUnwindMapEntry@@A": "$T753",
"?main_funcinfo@@3UFuncInfo@@A": "$T1112",
"?main_handler@@YAXPAUEHExceptionRecord@@PAKPAXPAU_xDISPATCHER_CONTEXT@@@Z": "$L1116",
"?main_handler_unwind1@@YAXXZ": "$L1108",
"?main_unwindmap@@3PAUUnwindMapEntry@@A": "$T1118",
"[.rdata-0]": "[.xdata$x-0]"
}
},

View file

@ -78,7 +78,7 @@ struct UnknownStatic19 {
};
struct UnknownStatic24 {
UnknownStatic24();
virtual ~UnknownStatic19();
virtual ~UnknownStatic24();
};
struct UnknownStatic27 {
UnknownStatic27();

View file

@ -28,6 +28,7 @@ typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef void VOID;
typedef void * PVOID;
typedef void * LPVOID;
typedef unsigned long SIZE_T;
typedef float FLOAT;
@ -55,6 +56,18 @@ typedef long HRESULT;
#define ERROR_SUCCESS 0L
#define E_OUTOFMEMORY 0x8007000EL
// Low-level stuff
typedef void (*IMAGE_TLS_CALLBACK)(PVOID DllHandle, DWORD Reason, PVOID Reserved);
struct IMAGE_TLS_DIRECTORY32 {
DWORD StartAddressOfRawData;
DWORD EndAddressOfRawData;
DWORD * AddressOfIndex;
IMAGE_TLS_CALLBACK * * AddressOfCallBacks;
DWORD SizeOfZeroFill;
DWORD Characteristics;
};
// Standard Win32 functions
VOID __stdcall Sleep(DWORD dwMilliseconds);

View file

@ -22,14 +22,26 @@ You'll need a few things to get a decompilation workflow ready:
your C++ code
- You'll also want to add its `Bin/` directory to your `PATH` so that objdiff
can find it
- If not on Windows, `CL.EXE` and friends can be passed to
[Wine](https://www.winehq.org) to run the compiler on other platforms
- The [Git](https://git-scm.com/) version control tool to clone and work on
this repository
- [Java](https://jdk.java.net/archive/) 21 or later, as required by Ghidra.
You may already have it; Minecraft apparently provides Java 21, for instance.
Later versions should also work; 21 and 25 specifically have been confirmed
to work fine.
- The [Ghidra](https://github.com/NationalSecurityAgency/ghidra) reverse
engineering tool to analyze and browse the executable
engineering tool to analyze and browse the executable (version 12.0.3 is
strongly recommended, as the extensions have releases for this exact version)
- The [XBE extension](https://github.com/XboxDev/ghidra-xbe) for Ghidra to
import and analyze the JSRF executable
import and analyze the JSRF executable (version will depend on your Ghidra
version; ideally it will match your Ghidra version, like
[12.0.3](https://github.com/XboxDev/ghidra-xbe/releases/tag/build-202602250354))
- The [delinker extension](https://github.com/boricj/ghidra-delinker-extension)
for Ghidra to export object files from the executable
for Ghidra to export object files from the executable (version again depends
on Ghidra version;
[v0.8.0](https://github.com/boricj/ghidra-delinker-extension/releases/tag/v0.8.0)
provides a download for Ghidra 12.0.3 specifically)
- The [objdiff](https://github.com/encounter/objdiff) code diffing tool to
compare your C++ code's compiled output to the delinked object files

View file

@ -1105,7 +1105,7 @@
0x001d7b20 data undefined * SoundManager::vtable
0x001da300 data undefined * UnknownObj_0x1DE2::vtable
0x001da350 data undefined * UnknownObj_0x1DE4::vtable
0x001e0c2c data IMAGE_TLS_DIRECTORY_32 extern_"C"::_tls_used
0x001e0c2c data IMAGE_TLS_DIRECTORY32 extern_"C"::_tls_used
0x001e0ea0 data float g_radToU16Angle1
0x001e0ea4 data float g_radToU16Angle2
0x001e0ea8 data float g_radToU16Angle3

Can't render this file because it has a wrong number of fields in line 3.