Commit graph

34 commits

Author SHA1 Message Date
KeybadeBlox
8eda56dcdf Change executable section flags to please objiff
objdiff assumes that all symbols in executable memory sections are code,
which led to misbehaviour due to .rdata and .data being marked as
executable in JSRF.  We now set these sections to non-executable in
Ghidra to work around this.
2025-12-21 19:36:09 -05:00
KeybadeBlox
70cc4ca688 Add stylistic consistency to contribution guide 2025-12-21 09:39:55 -05:00
KeybadeBlox
fe94d467df Update repository URLs 2025-12-18 22:41:08 -05:00
KeybadeBlox
115052d2a5 Rewrite readme for official decomp repository
I guess this isn't just notes anymore.
2025-12-18 22:38:21 -05:00
KeybadeBlox
5692ee9531 Minor code tidying
Mostly consistency with file headers and other such trifling things.
2025-12-18 22:09:47 -05:00
KeybadeBlox
b40e9a0c56 Rename Microsoft decompile directory to XDK
Felt more appropriate to name it after the library it's implementing
than the vendor.
2025-12-18 21:55:03 -05:00
KeybadeBlox
6ac4cdc5ed First-er draft of contributing.md
Some notes on keeping data structure definitions in decompiled source
files have been added, and a section was added for specific topics in
the future.
2025-12-18 21:53:53 -05:00
KeybadeBlox
83553a3d24 Remove padding from Jet2.obj address ranges 2025-12-18 09:30:29 -05:00
KeybadeBlox
070b2f9376 Finish first draft of contributing.md 2025-12-18 00:16:21 -05:00
KeybadeBlox
aabd8337b3 Complete "Setting Up Decompilation" documentation 2025-12-17 22:08:15 -05:00
KeybadeBlox
1c8eb137ee Arrange decompilation source/target in directories 2025-12-17 21:46:17 -05:00
KeybadeBlox
21c3864bb7 Begin contributing.md 2025-12-17 10:26:34 -05:00
KeybadeBlox
1a48d4323e Complete delink workflow; separate from decomp
We can now create a fresh Ghidra project, import the JSRF executable
into it, import symbols into it, delink object files from it, and then
decompile with objdiff.  Just needs some documentation.
2025-12-16 22:30:49 -05:00
KeybadeBlox
87c56f01d6 Update delink.sh for Windows
If you've cloned this repository on Windows, you have either a POSIX
environment or Git Bash and can run this script.  It just needs to call
the right headless Ghidra script depending on the OS (which it now tries
to do).
2025-12-14 23:55:08 -05:00
KeybadeBlox
8e62579f34 Point delink.sh at correct headless Ghidra script
The pitfalls of development on a Cygwin setup.
2025-12-14 22:57:14 -05:00
KeybadeBlox
fe20d64d27 Add delink POSIX script
Also reworked the directory structure a little.
2025-12-14 22:53:33 -05:00
KeybadeBlox
7e1785e466 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."
2025-12-14 19:27:11 -05:00
KeybadeBlox
10b3c8c273 Use $x prefix for exception portion of sections
The way the VC++7 compiler places exception-handling code and data at
the end of `.text` and `.rdata` is by putting them in sections named
`.text$x` and `.rdata$x`* that then get merged onto the ends of the
`$x`-free versions.  To better match what's seen in objdiff, we apply
the same naming convention here.

*It's actually `.xdata$x`, but we'll merge it into `.rdata` manually if
we have to.
2025-12-14 16:45:44 -05:00
KeybadeBlox
9ad0f2a807 Update matching status of main()
For whatever reason, it doesn't match on decomp.me, but using the same
compiler and options locally, it produces a perfect match.
2025-12-13 19:12:58 -05:00
KeybadeBlox
e9080510ab Finish XDK peripherals object(s) in objects.csv 2025-12-13 19:12:13 -05:00
KeybadeBlox
dd0428a340 Specify code section of MMatrix.cpp 2025-12-13 08:55:17 -05:00
KeybadeBlox
a968f475e8 Add g_game extern declaration to Core.hpp
Honestly not sure why it's not defined in there, but it's not up to me.
2025-12-13 08:54:22 -05:00
KeybadeBlox
e3687ac823 Add XDK peripherals to objects.csv
Forgot that one somehow.
2025-12-12 22:44:55 -05:00
KeybadeBlox
ce2ecd658f Further object updates
Some filled in addresses, plus adding new columns for the exception
portions at the end of .text and .rdata.
2025-12-12 22:25:08 -05:00
KeybadeBlox
ca748f4663 Finish major .text components in objects.csv
There's actually a chunk at the end of the section with static object
constructors and exception handling code, which might need to be paired
up with each component as well, but this covers the whole section
otherwise.
2025-12-12 12:55:55 -05:00
KeybadeBlox
aa4973217e Objects additions/updates
XDK now has its whole .text region mapped.  New additions include
partial mappings for Smilebit's in-house libraries and the C runtime.
2025-12-11 23:50:38 -05:00
KeybadeBlox
ff5d10a00b Sort objects.csv by address 2025-12-11 18:53:39 -05:00
KeybadeBlox
c34049e5ad Correct typo in Core.o end address
Left a 0 off the end.
2025-12-11 18:51:43 -05:00
KeybadeBlox
65f0860139 Add new object addresses (ADX, XDK, Xgraphics)
The former two are incomplete, however.
2025-12-11 18:48:18 -05:00
KeybadeBlox
52e8353421 Update GameObj data members 2025-12-11 17:32:18 -05:00
KeybadeBlox
0f1c561abb Inline DrawMode enum into Game definition
Wasn't much point in having it float around in global scope.
2025-12-10 23:02:28 -05:00
KeybadeBlox
ef64c9d683 Add g_matricesHead and g_matrices to MMatrix.cpp 2025-12-10 22:49:29 -05:00
KeybadeBlox
58a2dbb2fb Consistent capitalization
The release binary was called Jet2.exe (according to the XBE header), so
they were apparently capitalizing file names.  This was already
reflected in objects.csv, but not the source files.
2025-12-10 22:43:42 -05:00
KeybadeBlox
aaddf5213a Initial commit 2025-12-10 22:38:12 -05:00