|
KeybadeBlox
4db7f2a8d3
Remove old licence notice from inject.ld
I probably should add some licence as a formality (even if only to make good on Codeberg's requirement of code being open), but I haven't decided on what yet. If I haven't added a licence yet and someone wants to use this code for something... I guess consider it GPLv3+ for the moment and I may or may not relax it to WTFPL in the future. |
||
|---|---|---|
| include | Initial commit | |
| patches | Initial commit | |
| .gitignore | Initial commit | |
| chapterselect.cpp | Fix typo in comment | |
| inject.ld | Remove old licence notice from inject.ld | |
| Makefile | Initial commit | |
| readme.md | Fix another readme typo | |
Jet Set Radio Future Chapter Select Mod
XBE mod for Jet Set Radio Future (currently just the North American standalone release) that turns the tutorial menu into a chapter selection screen with the following options:
- Warp to opening tutorial
- Warp to chapter 1 (after prologue)
- Warp to chapter 2
- Warp to chapter 3
- Warp to chapter 4
- Warp to chapter 5
- Warp to chapter 6
- Warp to chapter 7
- Warp to chapter 8
- Warp to chapter 9
- Warp to credits
- Warp to unused Golden Rhino car fight
- Return to title screen
A demonstration video of the initial release can be seen on YouTube.
Some measures have been taken to ensure that the game functions normally despite the departure from the intended linear format. In particular, while save data is nearly fully retained (unlocked characters, collected graffiti souls, test run records, and so on), tags are unpainted for chapters that depend on them for progression. Other measures are more subtle, such as ensuring that travelling to another chapter while Clutch has all of the player's graffiti souls doesn't lead to said souls being lost forever.
Installation
From Releases
Releases are in the form of VCDIFF files that can be applied to JSRF's
default.xbe with e.g. xdelta3:
# Applying VCDIFF to default-original.xbe to create default-modded.xbe
$ xdelta3 -d -s default-original.xbe chapterselect-1.0_northamerica-standalone.vcdiff default-modded.xbe
After the patch is applied, the game can be run from its files in the usual ways (FTP'd to an Xbox, via Cxbx, etc.).
From Source
To compile and apply the mod from source, the following are required:
- A VCDIFF binary patching utility like
xdelta3 - A Unix-like environment with some common command line utilities (e.g.
POSIX-compliant
make,xxd) - A C++ compiler supporting 32-bit x86 output and the
sectionattribute (GCC and Clang have been tested)
The first step is to apply the appropriate patch for your region from the
patches/ directory to your default.xbe. This modifies UI strings and adds
a new section table with a new section named INJECT that will house the
injected code, and redirects a function responsible for initializing tutorials
to the new section. The patched .xbe should be left in the root directory of
the repository and named default.xbe.
Simply running make will compile the code to be injected from
chapterselect.cpp. Its contents are regular (freestanding) C++ code
referencing data and functions in the game as described in the appropriate
region's header in the include/ directory (TODO: implement a convenient way
of selecting which region's header to include). Linking is performed according
to the linker script inject.ld, which ensures correct memory layout.
Finally, running make inject will extract the machine code from the compiled
output and copy it into default.xbe, updating the INJECT section's checksum
as well. The end result is an .xbe that runs the injected code instead of
the regular tutorial handling (and passes all section checksum checks, but not
a signature check).