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

View file

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

View file

@ -28,6 +28,7 @@ typedef unsigned short WORD;
typedef unsigned long DWORD; typedef unsigned long DWORD;
typedef void VOID; typedef void VOID;
typedef void * PVOID;
typedef void * LPVOID; typedef void * LPVOID;
typedef unsigned long SIZE_T; typedef unsigned long SIZE_T;
typedef float FLOAT; typedef float FLOAT;
@ -55,14 +56,26 @@ typedef long HRESULT;
#define ERROR_SUCCESS 0L #define ERROR_SUCCESS 0L
#define E_OUTOFMEMORY 0x8007000EL #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 // Standard Win32 functions
VOID __stdcall Sleep(DWORD dwMilliseconds); VOID __stdcall Sleep(DWORD dwMilliseconds);
LPVOID __stdcall VirtualAlloc( LPVOID __stdcall VirtualAlloc(
LPVOID lpAddress, LPVOID lpAddress,
SIZE_T dwSize, SIZE_T dwSize,
DWORD flAllocationType, DWORD flAllocationType,
DWORD flProtect DWORD flProtect
); );

View file

@ -22,14 +22,26 @@ You'll need a few things to get a decompilation workflow ready:
your C++ code your C++ code
- You'll also want to add its `Bin/` directory to your `PATH` so that objdiff - You'll also want to add its `Bin/` directory to your `PATH` so that objdiff
can find it 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 - The [Git](https://git-scm.com/) version control tool to clone and work on
this repository 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 - 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 - 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) - 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 - The [objdiff](https://github.com/encounter/objdiff) code diffing tool to
compare your C++ code's compiled output to the delinked object files compare your C++ code's compiled output to the delinked object files

View file

@ -1105,7 +1105,7 @@
0x001d7b20 data undefined * SoundManager::vtable 0x001d7b20 data undefined * SoundManager::vtable
0x001da300 data undefined * UnknownObj_0x1DE2::vtable 0x001da300 data undefined * UnknownObj_0x1DE2::vtable
0x001da350 data undefined * UnknownObj_0x1DE4::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 0x001e0ea0 data float g_radToU16Angle1
0x001e0ea4 data float g_radToU16Angle2 0x001e0ea4 data float g_radToU16Angle2
0x001e0ea8 data float g_radToU16Angle3 0x001e0ea8 data float g_radToU16Angle3

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