Hey there, I am still working on the tools to create JSRF levels (nearly done) but I also have to prepare a tutorial, in the meantime here are some video tutorials on how to mod JSRF textures and models, thanks to YayoDeLaRiva and Lkymn for making these tutorials:
About a year ago I was trying to make custom levels for JSRF, I was able to build brand new visual models for the levels and compile the physics collision models too, but there was a part of the collision data I could not figure out, that needed to be calculated, and since it wasn't, in the new level, you'd just fall through the floor and clip through everything. So I sought help from others but we couldn't figure it out, at least not how we were trying, through binary/hexadecimal/statistical analysis.
His reverse engineer method is through disassembly, which means de-compiling the game's executable/program file aka turning the program's executable binary file into a (massive and convoluted) list of CPU instructions, then analyzing CPU instructions/functions to see how the game loads the files and how it processes the data, easier said than done though.
This technique definitely was the only way to reverse engineer this bit of data about the physics collision 3D meshes of JSRF and people who have the (dis)assembly reverse engineering skills, are hard to come by and they usually have better things to do, luckily Gurten was willing to take the time and help, and he did an amazing job.
Anyways here's the result of the first properly compiled JSRF level:
I may or may not make a blog post later on about the process of
how I tried to reverse engineering the level collision data(and failed)
+ with other people, and finally how Gurten went about it and
succeeded, but it'd be a pretty long blog post.
I didn't publish the second blog post part about "how I reverse engineered JSRF" because it quickly got too technical, long and would be boring and pedantic to the reader. Perhaps
I'll make a video with audio commentary and graphic animations explaining the reverse engineering process, the mod tool, and how
it evolved over a decade.
Video format with audio would definitely be a
more dynamic, concise and a fun format to watch rather than reading a
long blog post, but again, it would be a lot of work creating such video,
so we'll see.
For now, there's some more work to do on the tool and things to figure out about JSRF, on compiling levels, and also creating a level creator/editor
tool to make it more accessible to create levels for JSRF.
Hey there, I have still been working on the JSRF tool, mostly reverse engineering and experimenting recompiling levels(aka 'Stage') data, such features are not accessible in the tool's interface yet, if you're a developer and want to try it, it's all in the code.
While we're close to being able to create custom levels, we're stuck on figuring out part of the level collision 3D mesh data.
I have managed to recompile a custom visual mesh for the level, as well as part of the collision mesh data, but since part of the collision mesh is still unknown/not understood and has to be calculated, right now we just fall/go through the collision mesh.
In the following video, it's a new compiled visual mesh, while maintaining the original Garage's collision meshes:
This post is also about the JSRF Tool 2.7, where I have fixed MDLB model
importing, before, adding or removing material groups in the model(MDLB)
importing interface, would corrupt the materials groups, giving wrong
materials to the model.
It's finally fixed, if you're a developer
and have been using/modifying the source yourself, I recommend checking
out the GitHub repository where I might update the code, while I don't
make blog posts about it: https://github.com/neodoso/JSRF_ModTool, otherwise here's the tool with the fixes:
Hi there, I thought I would share the wonderful www.jsrfspeedruns.com website made by people from the jsrf speedrunning and modding scene, they put a lot of effort into documenting all sorts of details about the game and they also created a complete guide to speedrunning JSRF with all the techniques, tricks, bugs, so if you're interested in upping your game on JSRF, trying speedruning or even just learn more about JSRF, www.jsrfspeedruns.com is the place to go.
I am making the JSRF ModTool open source, I wanted to do this for a while but wasn't very confident about my code, either way its best to put it out there once and for all. If you're a programmer and are interested in modifying the tool for personal use, or contributing, I am all for it, I am also all ears if you have feedback on my coding, bad practices etc I would love to hear it so I can improve.
Hi there, here's how we can swap player models by almost any model, in this case we're going to take a non playable "enemy" model and paste it into a "player" (.dat) file. First let's choose which model we're going to take, for instance go to the "Enemy" folder and open Armed.dat, then inside NORM[3] and select the first MDLB.
Under the dark grey bar with text "Armed.dat"click the "copy" button, now what is selected is copied to the clipboard memory. Now on the list of folders and file(on the left) go to the "Player" folder and select the Beat.dat file. Thenselect the first MDLB as in the following image:
Then click "paste"
We've pasted the MDLB from Armed.dat into a Beat.dat's MDLB.
You'll notice we also need to replace the texture, but first we're going to make some parts of the Beat model, invisible, such as the head and hands models, because the model we're replacing already has those parts integrated in the first model. Here's how the contents of a player.dat file is structured:
Inside the NORM [13], go to each head and hand model (MDLB) and click "Collapse vertices", this button moves all the model's geometry points to the same position, making the model invisible.
If the player model you selected has "Jiggle" models(such as clothing, chains or hair that moves), you can remove those by selecting one and clicking the "empty" button, but using "empty" might cause the game to crash, as the game expects to find those model parts, it's original bone hierarchy and to apply animation or the "jiggle" effect.
So instead of using "empty" we use "collapse vertices" for the hands, head models and jiggle models.
Finally lets get the texture from the original model, copy and pasting within the JSRF Tool won't work for this, because the textures have a unique ID number, so instead we're going to replace the image data through an image editor so the texture ID is preserved as the original.
Load Enemy\Armed.dat, select the texture and click "Edit texture"
Now open Player\Beat.dat and select the second texture and click "Edit texture"
In your image editor, copy the texture of Armed.dat, into the window of Beat's texture, save and then go back to the JSRF Tool with the beat texture selected and click "save changes".
Hey Quick blog post just to let you know I have fixed some bugs in the model importer, for instance before when adding or removing materials from the list in a model, after recompiling it would always reset to the number of materials the original model had, there's some other small bug fixes that I can't remember off the top of my head. 3 May 2020: -fixed and added support for some models that have the materials defined in a different manner, that would cause an ingame crash after importing certain models. -fixed error message when trying to open a texture file with paint.net or Gimp -fixed imported models UVs being inverted or shifted on the V axis.