tag:blogger.com,1999:blog-52488078761487059712024-03-21T21:42:29.372-07:00JSRF Inside - The art of Jet Set Radio Future and ModdingJSRF - Jet Set Radio Future - Reverse engineering the game file format to get a closer look at the wonderful art of JSRF.neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.comBlogger65125tag:blogger.com,1999:blog-5248807876148705971.post-88309077670542395752023-01-15T10:54:00.011-08:002023-04-06T01:18:44.077-07:00JSRF ModTool 2.8.8 - Added support to import/export sounds<p style="text-align: left;"><span style="font-family: verdana;"> Hey there, I finally added a tool to export and import sounds for characters and other things for the sound files found in the game's folder: Media\Sounds\SE\<br /><b><br /></b></span></p><p style="text-align: center;"><span style="font-family: verdana;"><a href="https://github.com/neodoso/JSRF_ModTool/releases/download/2.8.8/JSRF_ModTool_2.8.8.zip" target="_blank"><span style="font-size: large;"><b>Click here to download the JSRF ModTool 2.8.</b></span></a><a href="https://github.com/neodoso/JSRF_ModTool/releases/download/2.8.8/JSRF_ModTool_2.8.8.zip" target="_blank"><span style="font-size: large;"><b>8</b></span></a><br /></span></p><p><span style="font-family: verdana;"></span></p><p><span style="font-family: verdana;"></span></p><p><span style="font-family: verdana;"></span></p><p><span style="font-family: verdana;"></span></p><p><span style="font-family: verdana;"> <br /><b><u>How to import custom sounds:</u><br /></b></span></p><p><span style="font-family: verdana;">In the Mod Tool, open a sound file such as: Media\Sounds\SE\pv_boog.dat</span></p><p><span style="font-family: verdana;"> </span><br /><span style="font-family: verdana;">Go to the "Sound Editor" tab and click "Export all as .wav" and choose a folder where the .wav sound files will be exported.<br /><br />You can use </span><span style="font-family: verdana;"><a href="https://www.audacityteam.org/" target="_blank">Audacity</a> (free) to record, edit and save sound files.<br /></span></p><p><span style="font-family: verdana;">The custom audio files need to be saved as .wav with the encoding: Signed </span><span style="font-family: verdana;">16 Bit</span><span style="font-family: verdana;"> PCM<br /><br />Also the audio must be mono, if you have two tracks(stereo), to turn it into mono, in audacity right click on the left of the audio track and click "Split stereo to mono" then delete the second bottom track by clicking on the [x]<br /><br />To save a file as such in Audacity, go to File > Export > Export as WAV<br /><br />Then in the Export Audio window, in Encoding, select "Signed 16-bit PCM" and save.<br /><br /><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidx2kHffu0XEji80LliSvbYdKTlcdiSQ7wuStKb_62FfBqqQ3zN89YPkEbuMcBe1TkZ72K05XUilqYELe6DCfyxBzvIAMudTaaLDds_d1s3dUBGHGUkj8osbNSeW9P8V0R337Dqp2YB3QIj-E-P3-LtUM6_ejG3DfyRWllhEF5CfNG9HqCaVigqWWd/s762/Audacity_RnglgaEwdv.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="583" data-original-width="762" height="490" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidx2kHffu0XEji80LliSvbYdKTlcdiSQ7wuStKb_62FfBqqQ3zN89YPkEbuMcBe1TkZ72K05XUilqYELe6DCfyxBzvIAMudTaaLDds_d1s3dUBGHGUkj8osbNSeW9P8V0R337Dqp2YB3QIj-E-P3-LtUM6_ejG3DfyRWllhEF5CfNG9HqCaVigqWWd/w640-h490/Audacity_RnglgaEwdv.png" width="640" /></a></div><br /><br /><span style="font-family: verdana;"><br />When importing custom sounds, the wav files should be named as how the Mod Tool names them when exporting all the sounds of the .dat file (with "Export all as .wav"), so for instance with pv_boog.dat the sound files are exported as </span><span style="font-family: verdana;"> "pv_boog_1.wav" </span><span style="font-family: verdana;">"pv_boog_2.wav" </span><span style="font-family: verdana;">"pv_boog_3.wav" etc and you should keep those names for importing.</span><br /><span style="font-family: verdana;"><br /></span><p></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyrriOA5rnPrgkI6-k7Kf7M59sCg8fTmlRTIuil2NV6BTKyygvYjKZJZswYZjDqB__iw2bdp2hrgfz5Ml92efYioapQDQIydDMlGqKvZW6ByL61Q-5v0DORJa1UBpnXRgEZQ1573LU9ezlP1oJQcg0HvKSRhNjB5YEBAWHkjwFEIOvLX1gc3gD8-ef/s1227/jsrf_modtool_soundeditor.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="764" data-original-width="1227" height="399" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyrriOA5rnPrgkI6-k7Kf7M59sCg8fTmlRTIuil2NV6BTKyygvYjKZJZswYZjDqB__iw2bdp2hrgfz5Ml92efYioapQDQIydDMlGqKvZW6ByL61Q-5v0DORJa1UBpnXRgEZQ1573LU9ezlP1oJQcg0HvKSRhNjB5YEBAWHkjwFEIOvLX1gc3gD8-ef/w640-h399/jsrf_modtool_soundeditor.png" width="640" /></a></span></div><p></p><div style="text-align: center;"><span style="font-family: verdana;">If you have any questions, feel free to ask in the comments.<br /></span></div><span style="font-family: verdana;"><br /></span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com8tag:blogger.com,1999:blog-5248807876148705971.post-57767798394202605372022-09-19T21:18:00.004-07:002022-09-19T22:03:51.887-07:00Creating JSRF Levels - Mission compiler and level tools update<p><span style="font-family: verdana;"> Hi, I have been working on level creation tools, so far we can create levels but we also needed to be able to create custom 'mission' files to have custom spray can placements, player spawning and death warps.<br /><br />So I have created a second add-on for Blender which exports and compiles the mission data and added a collection with the mission stuff in the Blender sample scene file.<br /><br />I have also updated the Stage Exporter blender add-on with improvements/fixes and also added an option "Visual as Collision" so that the Visual models are used as Collision models in case you're just working with the physics materials so you don't need to copy and paste the Visual models into the Collision every time you add new meshes and want to export, just check the box "Visual as Collision" and the exporter will automatically use the Visual meshes as Collision.<br /><br /></span></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400;"><b><a href="https://www.dropbox.com/s/sl20jctculqyf2y/JSRF_Stage_creation_tools_v1.zip?dl=1" target="_blank"><span style="font-size: medium;"><span style="font-size: large;">Click here to download the Stage creation tools v1</span></span></a></b></span></span></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400;"><b><span style="font-size: medium;"><span style="font-size: large;"> </span><br /></span></b></span></span></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400;"><b></b></span></span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400;"><b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgko06ruF1cqpGAr3PQquDjLyt96pGgZYimy5QgQdCupDRJTKNDtyLFYlq0pGFnPqDPjQ6dsCsNp1vCDoW8rjZbHTmLE8Dl7mufLtCqMMSNI8dCIRDL5ovXbD3yXBWDUtBaggl7YDAXpmGvFQVs7xUdIU5gw-5-FH8QoJbUqsUKJHLbYODejEIaX4-A/s2562/jsrf_stage_creation.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1400" data-original-width="2562" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgko06ruF1cqpGAr3PQquDjLyt96pGgZYimy5QgQdCupDRJTKNDtyLFYlq0pGFnPqDPjQ6dsCsNp1vCDoW8rjZbHTmLE8Dl7mufLtCqMMSNI8dCIRDL5ovXbD3yXBWDUtBaggl7YDAXpmGvFQVs7xUdIU5gw-5-FH8QoJbUqsUKJHLbYODejEIaX4-A/w640-h350/jsrf_stage_creation.png" width="640" /></a></b></span></span></div><span style="font-family: verdana;"><span style="color: #ffa400;"><b><br /></b></span></span><p></p><p style="text-align: center;"><span style="font-family: verdana;">In the previous linked file you will find the blender scene file, add-ons and tools used to compile the level, see <a href="https://jsrf-inside.blogspot.com/2022/07/creating-levels-for-jsrf-overview.html">this post</a> for how to setup the Stage exporter in Blender.<br /><br />For the mission exporter, there's a blender add-on to install and it's panel will appear in the Scene Properties panel, same as the stage exporter:<br /></span></p><p style="text-align: center;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPhcF1JaD1joFAHhzsLd0ZAqFBn2CwLTHdmmb-_L22ltXL1jWDCgmdCSng5dq7FZcI9txIJctMWNzdrhPApwl3AtALx4EvUCgNlNbpS3I3ANlJzXJvQQbn8kJvhEnNH3HWpzDNYtkBoy7yn-VnODFB8OEaEV3Gt2yj47Te5VJiSpWaPYrkKveCk_C-/s776/jsrf_mission_exporter.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="776" data-original-width="715" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPhcF1JaD1joFAHhzsLd0ZAqFBn2CwLTHdmmb-_L22ltXL1jWDCgmdCSng5dq7FZcI9txIJctMWNzdrhPApwl3AtALx4EvUCgNlNbpS3I3ANlJzXJvQQbn8kJvhEnNH3HWpzDNYtkBoy7yn-VnODFB8OEaEV3Gt2yj47Te5VJiSpWaPYrkKveCk_C-/w590-h640/jsrf_mission_exporter.png" width="590" /></a></div><p></p><p style="text-align: center;"><span style="font-family: verdana;">You will need to setup the Stage export path (same as in the stage exporter settings), the game's Media directory and finally the JSRF_Mission_Compiler.exe tool provided in the Stage creation tools v1<br /></span></p><p style="text-align: center;"><span style="font-family: verdana;"><br />Now for how it works, you will find a "Mission" collection in the outliner that contains various items for the mission data.<br /><br /> Inside, the 'PlayerSpawnPosition' is just a model of Beat that is where the player will appear in the level.<br /><br />The 'Items' collection contains the spray cans, just duplicate them and keep the same name (+ ending with some number) to place more cans.<br /><br /> Finally the 'Death Warps' that are the areas where if you cross the plane you will be teleported back to the spawn location, for which you want to have a 'dw_plane' and a 'dw_spawn' with the same name and ending with an underscore and a number such as </span><span style="font-family: verdana;"><span style="font-family: verdana;">"dw_plane_0"</span> "dw_spawn_0" </span><span style="font-family: verdana;"><span style="font-family: verdana;">"dw_plane_1" </span></span><span style="font-family: verdana;"><span style="font-family: verdana;"><span style="font-family: verdana;"><span style="font-family: verdana;">"dw_plane_2" etc<br /><br /></span></span></span><br />When you click "Export Mission" the mission data will be exported to the Stage Export path and the mission will be compiled, it saves the mission file as the tutorial mission, so to load the custom mission and level simply go to "New Game" in JSRF's main menu.<br /><br /><br />That's pretty much it for now, have fun!<br /></span><br /><span style="font-family: verdana;"><br /></span></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-62036478360767575832022-08-07T15:35:00.007-07:002022-08-07T15:35:59.619-07:00JSRF Graffiti Tool v1.0.0.5 - Added clear cache support for Cxbx<p><span style="font-family: verdana;"><span style="font-size: medium;"><span style="font-size: small;">Hey there, small update for the Graffiti Tool, I have added a setting for the Cxbx app folder, so the cache(changes) gets automatically cleared when modding graffitis.</span><b><br /></b></span></span></p><p><span style="font-family: verdana;"><span style="font-size: medium;"><b> </b></span></span></p><p style="text-align: center;"><span style="color: #ffa400;"><span style="font-family: verdana;"><span style="font-size: medium;"><a href="https://www.dropbox.com/s/7ys4sephfgaclzc/JSRF_Graffiti_Tool_v1.0.0.5.zip?dl=1" target="_blank"><b>Click here to download the JSRF Graffiti Tool v1.0.0.5</b></a></span></span></span><br /></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-81125850446292550312022-08-02T14:53:00.002-07:002022-09-09T05:41:12.753-07:00JSRF Mod Manager - Browse, download and manage mods easily<p><span style="font-family: verdana;">Hey there,<br /></span></p><p><span style="font-family: verdana;">I have created a tool that acts as a platform to browse, share, download and install/manage JSRF mods easily.</span></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="font-size: medium;"><b><span style="color: #ffa400;"><a href="http://neodos.net/JSRFMM" target="_blank">Here's the download link for the JSRF Mod Manager v1.0.1</a></span></b></span><br /></span></p><p><span style="font-family: verdana;"></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_HVc5jeU914jpOdUdKjfRgBx1zBTmp83tfI1Tj-kLL1bDC4o4JSnYzB8DFP_m43aPaW5QXToSRtBlDYGa_oocCAVwuysJrRJh40KkdcOkrGEQyvFzaZJruxTyUeFvNYy8kAYAxKK-gZmwvYZg1HKKb5gTw7H04WjoF6iDq8jvOzL0zhyvKX8S9O_V/s1037/jsrf_mod_manager_prev.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="748" data-original-width="1037" height="462" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_HVc5jeU914jpOdUdKjfRgBx1zBTmp83tfI1Tj-kLL1bDC4o4JSnYzB8DFP_m43aPaW5QXToSRtBlDYGa_oocCAVwuysJrRJh40KkdcOkrGEQyvFzaZJruxTyUeFvNYy8kAYAxKK-gZmwvYZg1HKKb5gTw7H04WjoF6iDq8jvOzL0zhyvKX8S9O_V/w640-h462/jsrf_mod_manager_prev.png" width="640" /></a></div><span style="font-family: verdana;"><br /><b>If you already have some mods installed (without this tool) make a backup copy of your Media folder so your mods don't get lost.</b><br /><br />The configuration should be pretty straigth forward, just go to the settings tab, choose the platform (PC - cxbx) or (Xbox)<br /><br />Then select the folder of the JSRF Media folder, and also a copy of the original game files in another Media folder (so original files can be restored when uninstalling mods)<br />And finally the cxbx app folder, or the xbox FTP settings.<br /><br /><br />For now mod submissions are closed, and you need to contact me if you want to be granted access to upload mods, if you wish to do so, contact me on Discord: neodos#5090<br /><br />Let me know in the comments if you have any questions or issues with the app.<br /><br />Cheers!</span><br /><p></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com10tag:blogger.com,1999:blog-5248807876148705971.post-84907116778521511342022-07-02T11:51:00.017-07:002022-09-19T22:04:07.223-07:00Creating levels for JSRF - an overview<p><span style="font-family: verdana;">Hey,<br />so for the past few months I have been working on the JSRF level compiler and also an add-on for <a href="http://www.blender.org" target="_blank">Blender</a> to export levels for JSRF, also the latest version of the JSRF Mod Tool processes and compiles the data into the game's level file format and <i>boom!</i> custom levels.</span></p><p><span style="font-family: verdana;"></span></p><p><span style="color: #ffa400;"><br /></span><span style="font-family: verdana;"><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"><span style="color: #ffa400;"><b>Once again huge thanks to Gurten, Daft, Demo, Fuse, Duck
from the JSRF Reverse Engineering community & the Cxbx team who made this possible.</b></span><br /></span></span></p><p><span style="font-family: verdana;"><span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"> </span><br />This post is an overview of the process, </span><span style="font-family: verdana;">however I will not be covering the topic of the 3D modelling process since it would be too long to cover, it's a subject on it's own and there's already plenty of tutorials out there for Blender, the focus of this post is on how the JSRF levels work and the tools to create them.<br /></span></p><p><span style="color: #ffaa00;"><span style="font-family: verdana;"><br /></span></span></p><p style="text-align: center;"><span style="color: #ffaa00;"><a href="https://www.dropbox.com/s/sl20jctculqyf2y/JSRF_Stage_creation_tools_v1.zip?dl=1" target="_blank"><span style="font-family: verdana;"><span style="font-size: medium;"><b>Click here to download the JSRF Mod Tool and the Blender JSRF Stage exporter addon</b></span></span></a></span><br /></p><p><span style="font-family: verdana;">In this zip file you will find a Blender scene file with a test level, the dev textures for the collision materials, the Blender JSRF Stage Exporter addon an the JSRF ModTool which compiles the level data exported from Blender, and lastly a Mission file which loads when you select "new game", the level will be empty, only corn is standing around, place this file in the "Media\Mission\" folder.<br /></span></p><p><span style="font-family: verdana;"> </span></p><p style="text-align: center;"><span style="font-family: verdana;">You can find the source code for the JSRF ModTool <a href="https://github.com/neodoso/JSRF_ModTool" target="_blank">here</a></span></p><p style="text-align: center;"><span style="font-family: verdana;"> </span></p><p style="text-align: center;"><span style="font-family: verdana;"> </span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><iframe allowfullscreen="" class="BLOG_video_class" height="363" src="https://www.youtube.com/embed/mMjHYOstMNM" width="437" youtube-src-id="mMjHYOstMNM"></iframe></span></div><span style="font-family: verdana;"><br /></span><p></p><p style="text-align: center;"><span style="font-family: verdana;"> <br /></span></p><p><span style="font-family: verdana;"><br /></span></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400; font-size: x-large;"><span><u><b>Composition of a JSRF level</b></u></span></span><br /></span></p><p><span style="font-family: verdana;">A JSRF level is mainly composed of 3D models, of two kinds, one for the visuals that we see and uses textures (top left picture), and another, invisible in-game which is used for the physics simulation(top right pic) and how the player controller interacts with the environment's surfaces.</span></p><p><span style="font-family: verdana;"></span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJGvrSDyEPL4ut24gM2IApuUbh5_rTq7neYWfp6Nf_3B4e-_99VYCRF1l5uizX-h8nrErbpq3rSsKhscxytA_tca3r96PCml6ZWoef9dr6RVYwIG4KbCmtVpl8OoX3t_CM7iL7U8UBx7jPvBpeJHj25Tl-6lxfGPZtYtZrV_bwDlpqsNOhzIdIoAwK/s4237/jsrf_stage_parts_1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2453" data-original-width="4237" height="370" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJGvrSDyEPL4ut24gM2IApuUbh5_rTq7neYWfp6Nf_3B4e-_99VYCRF1l5uizX-h8nrErbpq3rSsKhscxytA_tca3r96PCml6ZWoef9dr6RVYwIG4KbCmtVpl8OoX3t_CM7iL7U8UBx7jPvBpeJHj25Tl-6lxfGPZtYtZrV_bwDlpqsNOhzIdIoAwK/w640-h370/jsrf_stage_parts_1.png" width="640" /></a></span></div><span style="font-family: verdana;"><br /></span><p></p><p><span style="font-family: verdana;">On the left the visual models, on the right the physics collision model, notice how the collision model has less detail, it's simplified, for instance the stairs become a flat ramp but in the game the yellow surfaces act as stairs and the character takes steps as if there were stairs.<br />The colors on the surfaces of the physics models help us recognize what type of physics material the faces of the model are assigned.<br /><br />Lastly, the level also contains curves data for the rails we can grind in-game.</span></p><p><span style="font-family: verdana;"></span></p><p><br /></p><p style="text-align: center;"><span style="font-family: verdana; font-size: x-large;"><span><u><b><span style="color: #ffa400;">Setting up the Blender JSRF Stage Exporter</span></b></u></span></span></p><p style="text-align: left;"><span style="font-family: verdana;">First
let's install the JSRF Exporter addon for Blender, make sure you have
<a href="https://www.dropbox.com/s/dlmofj8a1tarj3n/JSRF_Stage_Demo.zip?dl=1" target="_blank">downloaded the files</a>, and have "JSRF_Stage_Exporter.py"<br /><br />In Blender go to Edit >> Preferences >> Add-ons then </span><span style="font-family: verdana;"><span style="font-family: verdana;">click Install<br /><br /></span></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRhik9uG8iGoz1YeB-JKljlOYD1vthRTY2ymuvMnaIvEcTt7fYqx1I8GuVSZHbPj0A4lKzQOLpoWevMh1CMDV3IYjARb1PRKRvMCJe0MCK-J6Ry2V5VPbB63l20nDVBotYEnQXHEjuT5xGoZJOTOs0-VWQsGBHRfXFLvB-ph8fCyB95tei0To-Zmyl/s660/blender_addons.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="549" data-original-width="660" height="532" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRhik9uG8iGoz1YeB-JKljlOYD1vthRTY2ymuvMnaIvEcTt7fYqx1I8GuVSZHbPj0A4lKzQOLpoWevMh1CMDV3IYjARb1PRKRvMCJe0MCK-J6Ry2V5VPbB63l20nDVBotYEnQXHEjuT5xGoZJOTOs0-VWQsGBHRfXFLvB-ph8fCyB95tei0To-Zmyl/w640-h532/blender_addons.png" width="640" /></a></div><p></p><p style="text-align: left;"><span style="font-family: verdana;">Browse to and select "</span><span style="font-family: verdana;"><span style="font-family: verdana;">JSRF_Stage_exporter.py</span>" and don't forget to tick </span><span style="font-family: verdana;"><span style="font-family: verdana;">the checkbox</span>(highlighted in red here) to enable the add-on:<br /><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5fUYN5Rc0db7HTBNbyD0cqtPtUj01czeeeKHO1O2x2VeRZatHOWP1CARAHuAo9TXsC_j_q1ReGnfdD1A158nHbqQW-vGTw0CwFbYIpMlEZ_gESm6hNGscBl9Jh7U7J72aXWV2_v2jpnxs72lkMhazCeGjEdbUOea0uF9cDiHvF-dbqNH3SQrBrDaU/s500/blender_addon_on.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="146" data-original-width="500" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5fUYN5Rc0db7HTBNbyD0cqtPtUj01czeeeKHO1O2x2VeRZatHOWP1CARAHuAo9TXsC_j_q1ReGnfdD1A158nHbqQW-vGTw0CwFbYIpMlEZ_gESm6hNGscBl9Jh7U7J72aXWV2_v2jpnxs72lkMhazCeGjEdbUOea0uF9cDiHvF-dbqNH3SQrBrDaU/w640-h186/blender_addon_on.png" width="640" /></a></div><p><br /><br /><span style="font-family: verdana;">You can the find the JSRF Stage exporter menu at the bottom of the 'Scene' panel:</span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMNz3hAaa6gSfDk_G0zjhdCu07sDwNjZSm-lHbJaiSLzuIuBa-m7TH6_WsMQYMqbe3nc3QNnUeJJQMsWvEt0pzjxZya8v026UuGQDkKvZ6JKlx1zwsVEag7JjL0Y12rmKziFfSpjtJN_CIg8fI-_ucKnDDSMawFIv7-0SDDTo7yJQz4mrtpy2ClVub/s730/scene.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="730" data-original-width="474" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMNz3hAaa6gSfDk_G0zjhdCu07sDwNjZSm-lHbJaiSLzuIuBa-m7TH6_WsMQYMqbe3nc3QNnUeJJQMsWvEt0pzjxZya8v026UuGQDkKvZ6JKlx1zwsVEag7JjL0Y12rmKziFfSpjtJN_CIg8fI-_ucKnDDSMawFIv7-0SDDTo7yJQz4mrtpy2ClVub/w416-h640/scene.png" width="416" /></a></div><p></p><p><span style="font-family: verdana;"><u>You will first need to setup the paths as follows</u>:<b><br /></b></span></p><p><span style="font-family: verdana;"><b>Stage ID</b> is the name of the stage it will be exported as in the Media\Stage\ directory</span></p><p><span style="font-family: verdana;"><b>Stage Export Path</b> is the folder where the Stage data will be exported</span></p><p><span style="font-family: verdana;"><b>Media Directory</b> should point to the JSRF Media folder</span></p><p><span style="font-family: verdana;"><b>ModTool filepath</b> should point to the JSRF_ModTool.exe</span></p><p><span style="font-family: verdana;">When
you press Export Stage, the stage data from blender will be exported,
then the JSRF ModTool will run and compile the stage (by default) as the Garage
(stg00)</span></p><p><span style="font-family: verdana;"><br /><br /></span></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400;"><span style="font-size: medium;"><b><span style="font-size: x-large;"><u>Creating the visual model & using it as a base for the collision</u></span> </b></span></span><br /></span></p><p><span style="font-family: verdana;"><br /></span><span style="font-family: verdana;"><span style="font-family: verdana;">When we start to</span> make a level, we're not going to work on the fancy visuals, instead we roughly model the shape of the level and objects, assigning the physics materials as the default material/texture for the visual models since that's what we're going to use as temporary collision models.<br /><br />So you'll want to assign the materials that come with the demo scene.<br /><br /><u>Here's what a test stage looks like</u>:<br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUFPaaZoSlIqKcU3kVC63FK8LSuIpiNdOghSqg1psH5zgZ8F3FO2cbNsZy4E3XN61MRYZITDIVfoLuUDvmkKNtOhG-6Fpg046Im61MlBSVX2Jb0F_jCDOsLD4FBaymIXu63LEr_z_pNcaDBCfZ7IPM45aLfQLF02hwgCG33AoWX9fj52_irdNFS-ex/s1627/blender_stg_demo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1326" data-original-width="1627" height="522" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUFPaaZoSlIqKcU3kVC63FK8LSuIpiNdOghSqg1psH5zgZ8F3FO2cbNsZy4E3XN61MRYZITDIVfoLuUDvmkKNtOhG-6Fpg046Im61MlBSVX2Jb0F_jCDOsLD4FBaymIXu63LEr_z_pNcaDBCfZ7IPM45aLfQLF02hwgCG33AoWX9fj52_irdNFS-ex/w640-h522/blender_stg_demo.png" width="640" /></a></div><br /><p></p><p style="text-align: left;"><span style="font-family: verdana;">This is just a test map but that's all you need to know to get started making and testing levels for JSRF, if you're going to do the proper visuals.<br /> You might want to use the old mod tool (download top right) to extract the game's models and textures to re-use them.<br /><br /><br />Here's what the scene in Blender should look like:<br /><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNo1jalUIxQ1keHR8mIOA0rG0yyJanxErzSe6bwIbRFTfGtuJcyC3AOuKRQgFiuj-iGeWn1dVtJhp6EOwFkc4VQm7oGu8dNPnNEn6uujxxAJI06G9DJ_vP0d_ulZV_kZWe0A27pQraUSql56T0C-9QRkvJgwtuZlwh2pSHDeen874iFcYQF5I09e_p/s483/blende_scene_view.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="483" data-original-width="447" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNo1jalUIxQ1keHR8mIOA0rG0yyJanxErzSe6bwIbRFTfGtuJcyC3AOuKRQgFiuj-iGeWn1dVtJhp6EOwFkc4VQm7oGu8dNPnNEn6uujxxAJI06G9DJ_vP0d_ulZV_kZWe0A27pQraUSql56T0C-9QRkvJgwtuZlwh2pSHDeen874iFcYQF5I09e_p/w370-h400/blende_scene_view.png" width="370" /></a></div><br /><p></p><p style="text-align: left;"><span style="font-family: verdana;">The main "Stage" collection contains "Visual" "Collision" and "GrindPaths", and the those three collections should contain other collections that contain the meshes, and curves for the GrindPaths collection, check how the demo scene is setup if you're not sure.<br /><br />You must use this structure and naming (except for "Model_group_0" you can name those whatever you like) as that's how the JSRF Stage Exporter addon can process and export the level data.<br /><br />As for collision models, you can have <span style="color: #cc0000;"><b>up to 1023 triangles <i>per </i>collision model group</b></span>, that's just how the game engine works.<br /><br /><br />When you have blocked out your level's visual meshes(with the collision materials), as a shortcut you can copy paste the model groups from Visual collection into the Collision collection.<br />For a finished level the collision models should be modeled separately or you can use part of the visual models as a base, but the models should be simplified as much as possible, for instance, for a set of buildings as collision model, you wouldn't have multiple buildings/boxes for collision, but simply a big wall joining the ground with more or less the same scale as the buildings, in some cases it can be boxes or skewed shapes, in general just try to simplify as much as possible.<br /><br /></span></p><p style="text-align: left;"><span style="font-family: verdana;"><b>The textures</b> must be in .png format and their resolution must be square and of power of two (i.e: 128x128 or 256x256 or 512x512) the minimum resolution is 8x8 pixels, maximum 2048 (untested), generally recommend sticking to 512x512 as the maximum.<br /></span></p><p style="text-align: left;"><span style="font-family: verdana;"><br /></span></p><p style="text-align: center;"><u><span style="color: #ffa400;"><span style="font-family: verdana;"><span style="font-size: medium;"><b><span style="font-size: x-large;">Limitations of JSRF's levels visual models</span><br /><br /></b></span></span></span></u><span style="font-family: verdana;">JSRF Level Visual models only support one UV per vertex, which means you have to treat the model so there aren't multiple UVs per vertex and you need to be very mindful about it, otherwise if you make a complex mesh and once compiled you see it in-game with messed up UVs, it might be tricky(in Blender) to find which part of the mesh is causing the issue.<br /><br />Ok here's an example (the box in orange) of the issue and how it's solved:<br /> </span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoPWjWKsCfuu5lpSRTAJxLcfOR2ZW8GXZJ6KiIWh5pPNQ7vEJEm994y1XotAc69HLVFfTMh_f-f5QzxizJY62yl2wD7EhT-omM6m0WyxZ4dzrwf8sxPgEoObMB0iVUFVY5Jh3j0UwXaQF_1HcVmyIgDNiPe1MvMikHxrfWHCFQp39KcmMabI6apGOH/s2718/jsrf_stage_uv_coords_fix.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2718" data-original-width="1677" height="956" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoPWjWKsCfuu5lpSRTAJxLcfOR2ZW8GXZJ6KiIWh5pPNQ7vEJEm994y1XotAc69HLVFfTMh_f-f5QzxizJY62yl2wD7EhT-omM6m0WyxZ4dzrwf8sxPgEoObMB0iVUFVY5Jh3j0UwXaQF_1HcVmyIgDNiPe1MvMikHxrfWHCFQp39KcmMabI6apGOH/w590-h956/jsrf_stage_uv_coords_fix.png" width="590" /></a></div><p></p><p><span style="color: #ffa400;"><br /></span></p><div style="text-align: center;"><span style="color: #ffa400;"><u><span style="font-size: large;"><span style="font-family: verdana;"><b>Grind Paths</b></span></span></u></span><br /></div><div><p><span style="font-family: verdana;">Grind paths can be created by extracting the edges of a mesh as curves, you then need to add them on the "GrindPaths" collection, inside it's own collection/group.<br /><br />Also once you're done editing the grind path, make sure to do this for the curve objects: Object >> Apply >> All transforms<br />Not ideal, but for now that'll be necessary.<br /><br />To extract edges as a curve, you can use the <span style="color: #ffa400;"><a href="https://github.com/Stromberg90/Scripts/blob/master/Blender/Edge_To_Curve.py">following addon</a></span>, note: in the script change the version from </span><span style="font-family: verdana;"> <span class="pl-s">"blender"</span>: (<span class="pl-c1">2</span>, <span class="pl-c1">80</span>, <span class="pl-c1">0</span>), to whatever version of Blender you're using so it loads up.<br />In blender you'll find the button while in Edit mode (edges) right click and at the bottom "Edges to curve"<br /><br />Note: right now bezier or other types of curves are not supported, or at least I don't know Blender well enough to tell you which type of curves the exporter would support, so try starting from extracting edges as a curve with the add-on I just mentioned, unless you know a way to manually make "curves" that are just point to point without smoothing.<br /><br /></span></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400;"><span style="font-size: large;"><b>Part 2: </b></span><a href="https://jsrf-inside.blogspot.com/2022/09/creating-jsrf-levels-mission-compiler.html" target="_blank"><span style="font-size: large;"><b>to setup and compile the mission file(for custom spray can placement, player spawn location and death warps) see the tutorial on this link</b></span></a></span><br /></span></p><p style="text-align: center;"><span style="font-family: verdana;"><br /></span></p><p><span style="font-family: verdana;"><br /></span></p><p><span style="font-family: verdana;"> </span></p><p><br /></p><p><br /></p><p></p><p style="text-align: center;"><span style="font-family: verdana;"><span style="color: #ffa400;"></span></span></p></div>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com4tag:blogger.com,1999:blog-5248807876148705971.post-45802489664833590922022-06-13T14:40:00.005-07:002023-03-18T12:23:40.592-07:00JSRF Graffiti Tool - Fixed: Golden Rhino and Police graffitis missing<p><span style="font-family: verdana;">Hey there,</span></p><p><span style="font-family: verdana;">Just a quick fix for the JSRF Graffiti tool which wasn't listing the Golden Rhino nor Police graffitis before.<br /><br /></span></p><p style="text-align: center;"><a href="https://github.com/neodoso/JSRF_Graffiti_Tool/releases/download/v1.0.0.5/JSRF_Graffiti_Tool_v1.0.0.5.zip"><span style="color: #ffa400;"><span style="font-family: verdana;"><b>Click here to download the JSRF Graffiti Tool v1.0.0.5</b></span></span><br /></a></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYq1T1g8CbbC0m8jXuKmkHjwGlHszydBXQJtus_2evI3d7Yj8E_Xdd07-xaTlA5-IKtrshznQyD9p41EftjhB_sa9XIDo_ZikXR58WCpNJ_ncaoDRJUKS2u5fKLhzCWi_Fy95TYEhsnvQY-YvfQBGbEWuzrX-8XCf1h01m4lrfsaW_30elEpA-0b4b/s933/jsrf_graffiti_tool_v1.0.0.4.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="472" data-original-width="933" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYq1T1g8CbbC0m8jXuKmkHjwGlHszydBXQJtus_2evI3d7Yj8E_Xdd07-xaTlA5-IKtrshznQyD9p41EftjhB_sa9XIDo_ZikXR58WCpNJ_ncaoDRJUKS2u5fKLhzCWi_Fy95TYEhsnvQY-YvfQBGbEWuzrX-8XCf1h01m4lrfsaW_30elEpA-0b4b/w639-h324/jsrf_graffiti_tool_v1.0.0.4.png" width="639" /></a></div><br /><p style="text-align: center;"><br /><br /></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-20292462328045234782022-05-31T12:53:00.005-07:002022-05-31T13:13:45.844-07:00JSRF modding tutorials<p> 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:<br /></p><p> </p><p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="446" src="https://www.youtube.com/embed/c6G-pZnvRoU" width="536" youtube-src-id="c6G-pZnvRoU"></iframe></div><p><br /><br /></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="447" src="https://www.youtube.com/embed/_yvJ1feqOOY" width="538" youtube-src-id="_yvJ1feqOOY"></iframe><br /><br /><br /></div><iframe allowfullscreen="" class="BLOG_video_class" height="448" src="https://www.youtube.com/embed/cXRiEmvVo24" width="539" youtube-src-id="cXRiEmvVo24"></iframe></div><br /><br /><p></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-75074198234352503452022-04-17T02:03:00.004-07:002022-04-24T03:07:02.759-07:00JSRF - custom test level and messing around with the level physics<p> Hey, short post, the other day we were on stream testing the level surfaces to see if we could make loops and whatnot, watch here:<br /></p><p><a href="https://www.twitch.tv/videos/1451203978" target="_blank">https://www.twitch.tv/videos/1451203978</a><br /></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-33629262749065081152022-03-01T08:29:00.001-08:002022-03-01T08:29:47.993-08:00First JSRF Custom Level<p> Hey there,<br /><br />About a year ago I was trying to make custom levels for JSRF,<a href="https://twitter.com/neodos_/status/1365335142932377602" target="_blank"> I was able to build brand new visual models for the levels and compile the physics collision models too</a>, 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.<br />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.<br /><br />So I recently reached out to Gurten (<a href="https://github.com/Gurten/Blender-JSRF-Player-Animation-Importer" target="_blank">who made the amazing Blender character model/animation importer</a>) and he figured out the collision mesh triangle data in less than two weeks 😮 <br /><br />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.<br /><br /> 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.<br /><br />Anyways here's the result of the first properly compiled JSRF level:<br /></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="322" src="https://www.youtube.com/embed/Dfut3089oeY" width="501" youtube-src-id="Dfut3089oeY"></iframe></div><br /><br /><br />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.<br /><br /> I didn't publish the second blog post part about "<a href="https://jsrf-inside.blogspot.com/2017/03/how-i-reverse-engineered-jsrf-file.html" target="_blank">how I reverse engineered JSRF</a>" because it quickly got too technical, long and would be boring and pedantic to the reader.<br />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.<br /><br />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.<br /><br />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.neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-69615582130389278342022-02-03T23:18:00.008-08:002022-02-08T03:03:39.175-08:00JSRF ModTool 2.7 - model importing: fixed material groups corruption when adding/removing materials<p style="text-align: center;"> <br /><a href="https://www.dropbox.com/s/2wx3hwauli512xv/JSRF%20ModTool%202.7.zip?dl=1"><span style="font-size: large;"><span style="color: #ffa400;"><b>Download the JSRF ModTool 2.7 here</b></span></span></a></p><p>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.<br /><br />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.<br /><br />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.<br /><br />In the following video, it's a new compiled visual mesh, while maintaining the original Garage's collision meshes:<br /><a href="https://github.com/neodoso/JSRF_ModTool"><br /></a></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='611' height='413' src='https://www.blogger.com/video.g?token=AD6v5dyAlGdhOzM_7MykNMorqJqukYft9vebWDBYMq9aflse-qR-DErDUyLa_Rl9pQHPYmeIiSlFuUGI89ZKvTfbkQ' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div><p></p><br /><p></p><p>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.<br /><br />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: <a href="https://github.com/neodoso/JSRF_ModTool">https://github.com/neodoso/JSRF_ModTool</a>, otherwise here's the tool with the fixes:<br /><br /></p><p style="text-align: center;"><a href="https://www.dropbox.com/s/2wx3hwauli512xv/JSRF%20ModTool%202.7.zip?dl=1"><span style="font-size: large;"><span style="color: #ffa400;"><b>Download the JSRF ModTool 2.7 here</b></span></span></a><br /></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com4tag:blogger.com,1999:blog-5248807876148705971.post-55570746263148411542021-02-03T03:58:00.005-08:002021-02-03T03:58:42.249-08:00JSRF speedruning tutorials, tips and tricks and more at www.jsrfspeedruns.com<p><span style="font-family: verdana;">Hi there, I thought I would share the wonderful <a href="http://www.jsrfspeedruns.com">www.jsrfspeedruns.com</a> 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, </span><span style="font-family: verdana;"><span style="font-family: verdana;"><a href="http://www.jsrfspeedruns.com">www.jsrfspeedruns.com</a> is the place to go.<br /></span></span></p><p><span style="font-family: verdana;"></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8UM-hoSOuVj4uDImfpS1TrkXBr4_-OymYs4X7WVTC3vYjOIs58OTrsgyB6AyinH4FX4bubPuJ3-jZbYOHH5gkkaFUWOUUWriHiudwU2gOlR2xRB5vd2_J0lwrQ19IMMdf7UYUtp7narU/s1392/jsrfspeedruns_banner.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="630" data-original-width="1392" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8UM-hoSOuVj4uDImfpS1TrkXBr4_-OymYs4X7WVTC3vYjOIs58OTrsgyB6AyinH4FX4bubPuJ3-jZbYOHH5gkkaFUWOUUWriHiudwU2gOlR2xRB5vd2_J0lwrQ19IMMdf7UYUtp7narU/w640-h290/jsrfspeedruns_banner.png" width="640" /></a></div><br /> <p></p>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-46451892077794349472020-06-20T07:18:00.000-07:002020-06-20T07:18:32.543-07:00JSRF ModTool: Open Source<span style="font-family: Verdana, sans-serif;">Hey,</span><br />
<br />
<span style="font-family: Verdana, sans-serif;">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.</span><br />
<span style="font-family: Verdana, sans-serif;"><br />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.</span><br />
<br />
<div style="text-align: center;">
<span style="font-size: large;"><b><a href="https://github.com/neodoso/JSRF_ModTool"><span style="color: orange;"><span style="font-family: Verdana, sans-serif;">Here's the GitHub page for the tool: <br />https://github.com/neodoso/JSRF_ModTool</span></span></a></b></span></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: Verdana, sans-serif;"> Cheers!</span></span><span style="font-family: Verdana, sans-serif;"></span></div>
neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com6tag:blogger.com,1999:blog-5248807876148705971.post-16919753337526693922020-05-30T09:15:00.003-07:002023-03-18T12:35:08.986-07:00JSRF ModTool 2.6 - Model importing fixes<br />
<span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">Hi, </span>here's a new version of the tool with fixes for model importing.</span><br />
<br />
<div style="text-align: center;">
<a href="https://github.com/neodoso/JSRF_ModTool/releases" target="_blank"><span style="color: orange;"><span face=""verdana" , sans-serif"> </span></span></a><span face=""verdana" , sans-serif"><span style="color: orange;"><span face=""verdana" , sans-serif"><b><a href="https://github.com/neodoso/JSRF_ModTool/releases" target="_blank"><span style="color: orange;">Download JSRF ModTool here</span></a> </b></span></span></span></div>
<br />
<span face=""verdana" , sans-serif"><u><b>Changelog:</b></u> </span><br />
<b><span face=""verdana" , sans-serif">-Fixed support for new materials manually added when importing, before it would not load nor add the new materials to the imported model.</span></b><br />
<br />
<span face=""verdana" , sans-serif"><b>-Fixed UVs getting messed up when importing.</b></span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com6tag:blogger.com,1999:blog-5248807876148705971.post-28805433896813337242020-05-21T00:52:00.004-07:002022-02-04T14:05:06.203-08:00Tutorial: character model swapping<span face=""verdana" , sans-serif">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.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">First let's choose which model we're going to take, for instance go to the "Enemy" folder and open Armed.dat, then </span><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">inside NORM[3]</span> and select the first MDLB.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span face=""verdana" , sans-serif"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs6nBa-Z8nOtt82dwvMAwlrAqKKRwdevAru96K4T8LLD0IMspMpnz2c5JzDuYbY8snECS5qsvd1X2I7oFlfxJICnGsaKBHOWMvqU1fjU9PovjHaISOIwT4inMxuJNvSrHhAzSv9IwpEbI/s1600/1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="766" data-original-width="1228" height="396" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs6nBa-Z8nOtt82dwvMAwlrAqKKRwdevAru96K4T8LLD0IMspMpnz2c5JzDuYbY8snECS5qsvd1X2I7oFlfxJICnGsaKBHOWMvqU1fjU9PovjHaISOIwT4inMxuJNvSrHhAzSv9IwpEbI/s640/1.png" width="640" /></a></span></div>
<span face=""verdana" , sans-serif"><br /></span><span face=""verdana" , sans-serif">Under the dark grey bar with text "Armed.dat"click the "copy" button, now what is selected is copied to the clipboard memory.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">Now on the list of folders and file(on the left) go to the "Player" folder and select the Beat.dat file.</span><br />
<span face=""verdana" , sans-serif">Thenselect the first MDLB as in the following image: </span><br />
<div class="separator" style="clear: both; text-align: center;">
<span face=""verdana" , sans-serif"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhEAufD95Toc11GtLVdkYRD_0IS4iP1urZUeYTcOts_XY14jj_oMQJMf0Kb81NNutJ8u_R0NEIib2uAKCYfBw7nIa8S8P_srcQnW0htL_P9g0aH2hOdZ5Ty6UaKasB9e3rGgjAgLzcfcE/s1600/2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="769" data-original-width="1228" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhEAufD95Toc11GtLVdkYRD_0IS4iP1urZUeYTcOts_XY14jj_oMQJMf0Kb81NNutJ8u_R0NEIib2uAKCYfBw7nIa8S8P_srcQnW0htL_P9g0aH2hOdZ5Ty6UaKasB9e3rGgjAgLzcfcE/s640/2.png" width="640" /></a></span></div><p>
<span face=""verdana" , sans-serif"></span></p><p><span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">Then click "paste"</span><br />
<br />
</p><div class="separator" style="clear: both; text-align: center;">
<span face=""verdana" , sans-serif"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPNRQcI__3twpvIa9Q2tEBl0b6-VQnFQujtmCh_JfvDt-7_y32ybEiewAIl5kksniq-Z28U97AZyusiw_fTZQwDzfospr_d0CV8xNMd5Q-BZhnHDD4KKFOV0y7OXTuGE8okWViz5axXng/s1600/3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="763" data-original-width="1228" height="396" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPNRQcI__3twpvIa9Q2tEBl0b6-VQnFQujtmCh_JfvDt-7_y32ybEiewAIl5kksniq-Z28U97AZyusiw_fTZQwDzfospr_d0CV8xNMd5Q-BZhnHDD4KKFOV0y7OXTuGE8okWViz5axXng/s640/3.png" width="640" /></a></span></div><p>
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">We've pasted the MDLB from </span><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">Armed.dat into a Beat.dat's MDLB.</span><br /><br />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.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">Here's how the contents of a player.dat file is structured:</span><br />
</p><div class="separator" style="clear: both; text-align: center;">
<span face=""verdana" , sans-serif"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhExfg2ndN4fF0vJE_EDZzXE12raJUK3cLj99jXseERuK0xK48jnACHpRky-5jV5j5HMbg4E257R9cOaa8XXOp5VyIurnqaZOcgeR04JftlHSxtFl6fsb1qCJqNr23MHOMgX0vsl3tGMzI/s1600/4.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="746" data-original-width="702" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhExfg2ndN4fF0vJE_EDZzXE12raJUK3cLj99jXseERuK0xK48jnACHpRky-5jV5j5HMbg4E257R9cOaa8XXOp5VyIurnqaZOcgeR04JftlHSxtFl6fsb1qCJqNr23MHOMgX0vsl3tGMzI/s640/4.png" width="602" /></a></span></div>
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">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. </span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span face=""verdana" , sans-serif"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5sNtQIE_lG2naTI8cmZ24PdCCfaBpCs7qCXfoQHVphH78zooMPslgBLW6kwokHMX5XN91Cwp1VlB25VH99MeTSZsv40z9NJZQRy_OHNgnzmGyoKfd5voEN37R4bNkdxiulLhLXiwWvTI/s1600/5.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="769" data-original-width="1231" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5sNtQIE_lG2naTI8cmZ24PdCCfaBpCs7qCXfoQHVphH78zooMPslgBLW6kwokHMX5XN91Cwp1VlB25VH99MeTSZsv40z9NJZQRy_OHNgnzmGyoKfd5voEN37R4bNkdxiulLhLXiwWvTI/s640/5.png" width="640" /></a></span></div>
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">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.<br /><br />So instead of using "empty" we use "collapse vertices" for the hands, head models and jiggle models.</span><br />
<span face=""verdana" , sans-serif"><br /><br /></span>
<span face=""verdana" , sans-serif">Finally lets get the texture from the original model, <b>copy and pasting within the JSRF Tool won't work for this</b>, 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.</span><br />
<br />
<span face=""verdana" , sans-serif">Load Enemy\Armed.dat, select the texture and click "Edit texture"</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitA_DKO9zVXUkaiWytFVyaGUC26VEkECLPF1eBQYrty0xYUcdbc9y5VoANLQri22V81-El3H3Xg09Oc18Hgq9Du_C6yAO3WtUYBj9O_aCD47JP1Uo54EWgr9sO7npvh8QrNCuUHN6RZWc/s1600/6.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1228" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitA_DKO9zVXUkaiWytFVyaGUC26VEkECLPF1eBQYrty0xYUcdbc9y5VoANLQri22V81-El3H3Xg09Oc18Hgq9Du_C6yAO3WtUYBj9O_aCD47JP1Uo54EWgr9sO7npvh8QrNCuUHN6RZWc/s640/6.png" width="640" /></a></div>
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">Now open Player\Beat.dat and select the second texture </span><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">and click "Edit texture"</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_rqITb0TJkzCbsBitu-1N5yLU96FVqVXCqWdObB4_q6jRPifskiy1w7Mp1f8qssRM02PoMnph845ppDT3IlVQYt1yPM1hJUL2JE7W4vGjQYiPR5X7KT1XsGpRFwEN-BcdSI_ekVGQMhA/s1600/7.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="767" data-original-width="1227" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_rqITb0TJkzCbsBitu-1N5yLU96FVqVXCqWdObB4_q6jRPifskiy1w7Mp1f8qssRM02PoMnph845ppDT3IlVQYt1yPM1hJUL2JE7W4vGjQYiPR5X7KT1XsGpRFwEN-BcdSI_ekVGQMhA/s640/7.png" width="640" /></a></div>
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">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".</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJkvlqmpdY-htByXFWU8kEunlVZG9GBxRjD0oB_lieIP51Wniqj5W0bCAfPV6CrLQ-SpDvrL62IeL9-m7W7JO5fTJovePrsd9vFB7boKbtBAyJ7v-cgYxcPGCu8_ZsxL__peBY8UCxBIY/s1600/8.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="763" data-original-width="1226" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJkvlqmpdY-htByXFWU8kEunlVZG9GBxRjD0oB_lieIP51Wniqj5W0bCAfPV6CrLQ-SpDvrL62IeL9-m7W7JO5fTJovePrsd9vFB7boKbtBAyJ7v-cgYxcPGCu8_ZsxL__peBY8UCxBIY/s640/8.png" width="640" /></a></div><p>
<span face=""verdana" , sans-serif"></span></p><p><span face=""verdana" , sans-serif"> </span></p><p><span face=""verdana" , sans-serif">That's all! <br /></span>
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">And the result ingame:</span><br />
</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9EKLzD3lkyiAhUIj5ceEFeh1XHc_fO_Zy-599FcUbqANUC2GS1lksETUGw7m1rnYMuPj39zGd22IDkEUCJCPIyZ-RhMRncTadsd2cdDruAPNlr6Me5Bkhs_Dl0Q4UWteKkwP3IPJyY1A/s1600/9.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1168" data-original-width="1600" height="466" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9EKLzD3lkyiAhUIj5ceEFeh1XHc_fO_Zy-599FcUbqANUC2GS1lksETUGw7m1rnYMuPj39zGd22IDkEUCJCPIyZ-RhMRncTadsd2cdDruAPNlr6Me5Bkhs_Dl0Q4UWteKkwP3IPJyY1A/s640/9.png" width="640" /></a></div>
<span face=""verdana" , sans-serif"><br /></span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com14tag:blogger.com,1999:blog-5248807876148705971.post-21018719488638731802020-04-12T08:14:00.004-07:002020-04-12T08:14:54.094-07:00JSRF Modding: how to import custom songs, by Yayo de la Riva<span style="font-family: Verdana, sans-serif;">Hey all, here's a tutorial on how to change the music/songs in JSRF done by <a href="https://www.youtube.com/user/Y4y07">Yayo de la Riva</a></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/mrcm7cjn8q0/0.jpg" src="https://www.youtube.com/embed/mrcm7cjn8q0?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
<br />
<span style="font-family: Verdana, sans-serif;"><a href="https://www.youtube.com/user/Y4y07">Click here to check out his channel</a> for all kinds of tricks and JSRF speedruns.</span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-74240809106005280682020-03-16T10:47:00.003-07:002023-03-18T12:34:24.515-07:00JSRF ModTool 2.5.9 (Model importing fixes)<span face=""verdana" , sans-serif" style="font-family: verdana;">Hey </span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">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.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><u><b><span face=""verdana" , sans-serif">3 May 2020: </span></b></u><br /></span>
<span style="font-family: verdana;"><b><span face=""verdana" , sans-serif">-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.</span></b><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><b>-fixed error message when trying to open a texture file with paint.net or Gimp </b></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><b>-fixed imported models UVs being inverted or shifted on the V axis.</b></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: center;">
<a href="https://github.com/neodoso/JSRF_ModTool/releases" style="font-family: verdana;" target="_blank"><span style="color: orange;"><span face=""verdana" , sans-serif"><b>Download JSRF ModTool here </b></span></span></a></div>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">Also <a href="https://twitter.com/neodos_/status/1238848705647837198">here</a>'s a little mod in an attempt to get SEGA to get us a proper JSRF HD port.</span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">And a panoramic of the Garage</span><span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRZrSNTBted9oeUsrFuq9zbeKfYGj19xtS7wH7LrpQE7el7DYDm1iBvIK0ah6k94E4cc6tvN2mjl0M242SDHwCA4hT3Lsw6TnqTcqC9Njm9RPmvAhZMaS1nps9GqgImwyOzW77eEbh1is/s1600/garage_pano.jpg" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="205" data-original-width="1600" height="82" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRZrSNTBted9oeUsrFuq9zbeKfYGj19xtS7wH7LrpQE7el7DYDm1iBvIK0ah6k94E4cc6tvN2mjl0M242SDHwCA4hT3Lsw6TnqTcqC9Njm9RPmvAhZMaS1nps9GqgImwyOzW77eEbh1is/s640/garage_pano.jpg" width="640" /></a></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com0tag:blogger.com,1999:blog-5248807876148705971.post-60659379474205255212020-02-01T04:27:00.002-08:002021-12-15T01:26:40.677-08:00JSRF - Artstyle analysis<div><br />
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-size: large;"><u><b>Deconstructing the JSRF Artstyle</b></u></span></div><p>
<br />
<span face=""verdana" , sans-serif">JSRF is known for its <a href="https://en.wikipedia.org/wiki/Cel_shading">"cell-shaded"</a> style, which is achieved through texture, shading, lighting as well as post-process screen effects.</span><br />
<br />
<span face=""verdana" , sans-serif">I believe JSRF uses a technique called <a href="https://developer.valvesoftware.com/wiki/$lightwarptexture">lightwarp-shading</a> to shade the models.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">The lightwarp shades the 3D model with a gradient of different </span><span face=""verdana" , sans-serif"><span class="ILfuVd"><span class="hgKElc">brightnesses </span></span>and color tones.<br />Here is a </span><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">similar </span> example of this shading technique as seen in the game Team Fortress 2.</span><br />
</p><div style="text-align: center;">
<span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">The right side is the lightwarp shading.</span><br />
<br />TF2 pyro lightwarp texture:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyrjOKBpzFiEdrRxjyRwCX1SxJyH4te3lZPW7tzAHBMDzV7BKaaph6-n0FIdbvfksA1PDuHr-VPMNARGPYudFZ9Czdvg039oIolfWbGaCBJASJHlIk_y2rCqUogCivPgUDSytt0Rw0-38/s1600/Pyro_lightwarp.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="16" data-original-width="256" height="20" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyrjOKBpzFiEdrRxjyRwCX1SxJyH4te3lZPW7tzAHBMDzV7BKaaph6-n0FIdbvfksA1PDuHr-VPMNARGPYudFZ9Czdvg039oIolfWbGaCBJASJHlIk_y2rCqUogCivPgUDSytt0Rw0-38/s320/Pyro_lightwarp.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span face=""verdana" , sans-serif"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3C_g0TorwqmLl_kVZkfL-lGa2C6LF9DdO4Y38wuLRlzA-sax2GKeVb8S1C-vdkQ80cn0Q83UVQExhGroZNkaj7YA6tNDxxOVp4Ki6s3owii713bkIW-yRCyVxUh1D1L7liekcUHGKfMU/s1600/Lightwarp_heavy.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="516" data-original-width="392" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3C_g0TorwqmLl_kVZkfL-lGa2C6LF9DdO4Y38wuLRlzA-sax2GKeVb8S1C-vdkQ80cn0Q83UVQExhGroZNkaj7YA6tNDxxOVp4Ki6s3owii713bkIW-yRCyVxUh1D1L7liekcUHGKfMU/s400/Lightwarp_heavy.png" width="303" /></a></span></div>
<br />
<span face=""verdana" , sans-serif"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span face=""verdana" , sans-serif"><br /></span>
<br />
<div style="text-align: center;">
<span face=""verdana" , sans-serif"><b>JSRF lightwarp:</b><br /><br /> </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpD2kTOeRfie8qC4VZ0FVN3QxU-sBtKPiCNSx7WzISrwoWZroLb80rxaGWJ0ZnEnNJXty-Yu9LFFmXj9BqfMu6U-xoFCu6EfIGJ8T8ZArdGiFh1XKHylCS-MLpC9yn4hQedry9KVgNqOc/s1600/JSRF_lightwarp.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="32" data-original-width="128" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpD2kTOeRfie8qC4VZ0FVN3QxU-sBtKPiCNSx7WzISrwoWZroLb80rxaGWJ0ZnEnNJXty-Yu9LFFmXj9BqfMu6U-xoFCu6EfIGJ8T8ZArdGiFh1XKHylCS-MLpC9yn4hQedry9KVgNqOc/s400/JSRF_lightwarp.png" width="400" /></a></div>
<div style="text-align: center;">
<br />
<span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">This is the JSRF main lightwarp texture, actually the lightwarp in JSRF is stored in (the following) larger texture
file which appears to have more images that are likely used to fake
reflections and/or <a href="https://en.wikipedia.org/wiki/Specular_highlight">specular highlights</a>.</span></span></div>
<span face=""verdana" , sans-serif"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy_jYk1Kf6Jzs6yQJG7DYLKaSJPC618U3lDLD9Jw9_dsI5efNaqHbYbpgBrpSPleJXTjKABefAjJyqFrp1odZ0XAhT34VM0pC_m1Nd1RDP8ErG1C06A5K64u1sy_RdYSIGVEpcUj8qlj0/s1600/Stg00_t_799296.bmp" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="256" data-original-width="256" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy_jYk1Kf6Jzs6yQJG7DYLKaSJPC618U3lDLD9Jw9_dsI5efNaqHbYbpgBrpSPleJXTjKABefAjJyqFrp1odZ0XAhT34VM0pC_m1Nd1RDP8ErG1C06A5K64u1sy_RdYSIGVEpcUj8qlj0/s400/Stg00_t_799296.bmp" width="400" /></a></div>
<br />
<br />
<span face=""verdana" , sans-serif"> To get a better idea of how models are shaded, on the left image I have made the textures of the character Corn almost white, so we can clearly distinguish some parts of the body using a different shading, color and reflectivity.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5pfsqRolHbFgjkO-ZjUF5TYFyTvdVeLp94EN36_fvOD2Fud6_oGT6ql8Bf94dToeGuXz0wGTM0j1m9GLaIiDeqHVV6IiF-agEcJDODrxLlgdow-fwj63AMZPCMjPBWKOdpIA6zlOk9Qk/s1600/flat_mat_corn.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="615" data-original-width="829" height="474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5pfsqRolHbFgjkO-ZjUF5TYFyTvdVeLp94EN36_fvOD2Fud6_oGT6ql8Bf94dToeGuXz0wGTM0j1m9GLaIiDeqHVV6IiF-agEcJDODrxLlgdow-fwj63AMZPCMjPBWKOdpIA6zlOk9Qk/s640/flat_mat_corn.jpg" width="640" /></a></div>
<br /><br />
<span face=""verdana" , sans-serif"> Here is what Corn's textures for the body and face/hat look like:</span><span face=""verdana" , sans-serif"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9SfYtA1LCFfKMaC5QslxkpowDdaKvENASM-o5ouxhp_6ybv1d864vrsYsd9oXu95wyZjeRehkY_KqwLL1O9q6x4UY5o91ZixiJBwSMKbC5M7z4pgYvBXYsa6vAM7_xfs17NhmRRFItsg/s1600/corn_textures.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1047" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9SfYtA1LCFfKMaC5QslxkpowDdaKvENASM-o5ouxhp_6ybv1d864vrsYsd9oXu95wyZjeRehkY_KqwLL1O9q6x4UY5o91ZixiJBwSMKbC5M7z4pgYvBXYsa6vAM7_xfs17NhmRRFItsg/s640/corn_textures.jpg" width="640" /></a></div>
<span face=""verdana" , sans-serif"><br /></span>
<br />
<span face=""verdana" , sans-serif"> Here is another comparison, shaders only (with a white flat texture) vs shaded + texture:</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmVGILwYv2hi7ci9ha-k66hmkHkoZDmhXkiWAh-murwzX_en4bsIQs8w2JYvzHqqRm46q7ZpaqVIPdO_4tgpgSvKnOC-JmvNNoizUBhD8hOXqpRTt8LyJ7aEvhsiC3gqkQ3qTL_LdY2LU/s1600/gum_shader_compa.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1095" data-original-width="910" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmVGILwYv2hi7ci9ha-k66hmkHkoZDmhXkiWAh-murwzX_en4bsIQs8w2JYvzHqqRm46q7ZpaqVIPdO_4tgpgSvKnOC-JmvNNoizUBhD8hOXqpRTt8LyJ7aEvhsiC3gqkQ3qTL_LdY2LU/s640/gum_shader_compa.jpg" width="530" /></a></div>
<span face=""verdana" , sans-serif"><br /></span>
<br />
<span face=""verdana" , sans-serif"><br /></span>
<br />
<span face=""verdana" , sans-serif">JSRF player models use various materials, to get a better look at the materials in the following picture I have turned the player model into spheres each with a different material.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguxqvwNLktbGecj_Ko5PRXqSohGLousvx2StqyeIGUtPWIadVxjDFthcfFdkHo8R1bkTxBZO1ZYuY0Z6R084ihy5_qfN8qxT4GY9Vd03Ar1l2cB_LypNnCOyxg1Wi2f-_BJSQu2ax2G2A/s1600/jsrf_player_materials.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="334" data-original-width="833" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguxqvwNLktbGecj_Ko5PRXqSohGLousvx2StqyeIGUtPWIadVxjDFthcfFdkHo8R1bkTxBZO1ZYuY0Z6R084ihy5_qfN8qxT4GY9Vd03Ar1l2cB_LypNnCOyxg1Wi2f-_BJSQu2ax2G2A/s640/jsrf_player_materials.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<br />
<br />
<div style="text-align: center;">
<span face=""verdana" , sans-serif"><span style="font-size: large;"><u><b>Shadows </b></u></span></span></div>
<br />
<span face=""verdana" , sans-serif">The game uses multiple ways to render shadows: real time shadows, pre-baked <a href="https://en.wikipedia.org/wiki/Shadow_volume">shadow volumes</a>, flat 3D meshes as shadows and decal texture shadows.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">Its unclear and I can only speculate on if the shadow techniques were chosen for</span><span face=""verdana" , sans-serif"> performance optimization purposes and/or was an artistic choice, as for instance the level's shadows volumes are simplified, that might have been deliberate to avoid visually noisy shadows that more realistic shadows would cause and/or also a less performance demanding technique to cast shadows.</span><br />
<br />
<span face=""verdana" , sans-serif">Let's go through the different types of shadows.</span><br />
<u><span face=""verdana" , sans-serif"><br /></span></u>
<span face=""verdana" , sans-serif" style="font-size: large;"><u><b>Decal casted shadows</b></u></span><span face=""verdana" , sans-serif"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcQJ5ImkqfPllfHKHWsXQI7bhe6SeDCaBzLDi4x2_Z0k1nU9V6m7DblFDHi4Wa2u2KqrcinTIK9_T7Sxgg1yfh8oXALwYfOSuZ-3M14Ir34jZMDgJ7Ll7MS98r_m7yIBDy7DcSK_0xLDQ/s1600/jsrf_people_wires.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1117" data-original-width="1600" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcQJ5ImkqfPllfHKHWsXQI7bhe6SeDCaBzLDi4x2_Z0k1nU9V6m7DblFDHi4Wa2u2KqrcinTIK9_T7Sxgg1yfh8oXALwYfOSuZ-3M14Ir34jZMDgJ7Ll7MS98r_m7yIBDy7DcSK_0xLDQ/s400/jsrf_people_wires.png" width="400" /></a></div>
<br />
<br />
<span face=""verdana" , sans-serif">On average the level of detail for pedestrian models are all around 200 triangles per model.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<span face=""verdana" , sans-serif">The crowds of people in JSRF use a faked decal shadow that is projected over the floor and stretched/oriented depending on the direction of the sunlight and animation, its just a rectangle (using two triangles) with the shadow texture on it and using opacity to blend it with the surface its projected on.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsPRS3zvamRSenjsZgpe7SjTvUsGd4xkJqbIgqoTGsLhssRAb87aAI2L-cbZy7r1JZz7oaCUcHHskmsU36lMo7M9ObwrO35AZBccVKZzAeJU2QUeGrC9uhyphenhyphen3RGG_-XpgstBqObJV-KRTM/s1600/decal_shadow.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="877" data-original-width="1600" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsPRS3zvamRSenjsZgpe7SjTvUsGd4xkJqbIgqoTGsLhssRAb87aAI2L-cbZy7r1JZz7oaCUcHHskmsU36lMo7M9ObwrO35AZBccVKZzAeJU2QUeGrC9uhyphenhyphen3RGG_-XpgstBqObJV-KRTM/s640/decal_shadow.jpg" width="640" /></a><br /></div><p>
<span> </span>As you can see, the blue texture on the bottom of this picture is what gets projected underneath the pedestrians to fake a shadow, its simple, cheap, elegant and effective.<br /> After all there's so many pedestrians in JSRF that using real time shadows would definitely tank the framerate on an original xbox.<br />
<br />
</p><p></p><p><br />
</p><div style="text-align: center;">
<span style="font-size: large;"><u><span face=""verdana" , sans-serif"><b>Real time shadows</b></span></u></span></div>
<br />
<span face=""verdana" , sans-serif">Real time shadows are mainly used on playable characters, important characters models or animated objects.</span><br />
<span face=""verdana" , sans-serif">The player's model file contains a simplified version of the visual model that is used to cast the shadow.</span></div><div><span face=""verdana" , sans-serif"> </span></div><div><span face=""verdana" , sans-serif"> </span></div><div><span face=""verdana" , sans-serif"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgNZaJeRZV-GzgbGNFi9IHnoaMWfPZaueGsZEsN-N_4oy_YqK753xc3FkeGowcmO-1Jhqc9gmAqbVqUmQ6YaEGyf1AyqDS7F3dvwWsBqkt-iYZGEq1wiQmCa4n2Gy6nYnjpEPx-SxSDODXASWs32s41y55TRFGprzUotd8UkDejlEcD4k7j1mdfyMLj=s1334" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1334" data-original-width="1069" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgNZaJeRZV-GzgbGNFi9IHnoaMWfPZaueGsZEsN-N_4oy_YqK753xc3FkeGowcmO-1Jhqc9gmAqbVqUmQ6YaEGyf1AyqDS7F3dvwWsBqkt-iYZGEq1wiQmCa4n2Gy6nYnjpEPx-SxSDODXASWs32s41y55TRFGprzUotd8UkDejlEcD4k7j1mdfyMLj=w512-h640" width="512" /></a></div></span><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjex0n2F0ed7NhdlfoB3JL5ooysVXeRH_EDZZSsObXzKDNW_8Znz_gknPTBpiOa-CrJ3RVJzSJ1RWUKd26OB5c86hNOMGm4JvesuGFJXq4w2vUeFh5NmL9JS2gQh8HFTDVK1q4rvankNP4/s1600/player_shadow_yoyo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="404" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjex0n2F0ed7NhdlfoB3JL5ooysVXeRH_EDZZSsObXzKDNW_8Znz_gknPTBpiOa-CrJ3RVJzSJ1RWUKd26OB5c86hNOMGm4JvesuGFJXq4w2vUeFh5NmL9JS2gQh8HFTDVK1q4rvankNP4/s400/player_shadow_yoyo.png" width="380" /></a></div>
<br />
<br />
<span face=""verdana" , sans-serif">There's Yoyo, his shadow is a bit more "blocky" than the visual model, though this is not really noticeable while playing and a nice optimization.</span><span face=""verdana" , sans-serif" style="font-size: large;"></span></div><div><span face=""verdana" , sans-serif" style="font-size: large;"><br /></span></div><br /><div style="text-align: center;"><span style="font-size: large;"><span face=""verdana" , sans-serif"><u><b>Shadow volume meshes</b></u></span></span><br /></div><div>
<br />
<span face=""verdana" , sans-serif">For the levels, JSRF uses pre-baked aka pre-calculated shadow volumes.</span><br />
<span face=""verdana" , sans-serif">The volumes of the shadows are baked into a 3D model that are overlay-ed over the level's visual models and darkens/tints the areas it covers or any moving object that goes inside it.<br /><br />In the following image you can see the shadow volumes in blue for the garage level, on the top right image I have made the shadow volumes semi transparent so you can get a better idea of how these shadow volumes overlay over the level's visual mesh and darken+tint the areas inside the shadow volume model.<br /><br /></span></div><div><div class="separator" style="clear: both; text-align: center;">
<br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJlC5OcClGLKDjM8B4BzZvCqmpQAmJezsCyf9LeTtscP1beyukvxpdLufM_UtXzR0wnm9eHIJZMyxYocz5xgtqkmc9xawJ91e3xOCu05BqEw53_-33v2hhkqbhZt3pzUjJQZj2I_3ZrXOsByGgmYhRS9IGUFvEGk_4uKtmpFp7oxnpYe-mpkcMkNOW=s1600" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="945" data-original-width="1600" height="378" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJlC5OcClGLKDjM8B4BzZvCqmpQAmJezsCyf9LeTtscP1beyukvxpdLufM_UtXzR0wnm9eHIJZMyxYocz5xgtqkmc9xawJ91e3xOCu05BqEw53_-33v2hhkqbhZt3pzUjJQZj2I_3ZrXOsByGgmYhRS9IGUFvEGk_4uKtmpFp7oxnpYe-mpkcMkNOW=w640-h378" width="640" /></a></div><br /><span face=""verdana" , sans-serif"> </span><br />Casting real time shadows for the scenery is most likely too taxing performance wise (at least for the original xbox) so instead it seems the developers decided to use shadow volumes which are far less expensive for the game to run.<br />
<br />
<span face=""verdana" , sans-serif">Its unclear if the shadow volumes were auto generated, or made manually, or a mix of both, because the shadow volumes seem to have been simplified since they do not contain all the shadows</span><span face=""verdana" , sans-serif"> for every object in the level, it's mainly only buildings and medium sized objects that are in the shadow volumes.<br /></span></div><div><br /><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">Besides the performance/optimization boost by using shadow volumes instead of real time shadows,</span></span><span face=""verdana" , sans-serif"> much of the shadow detail is
simplified with this technique and lends itself to a far less noisy and
more readable environment than if every tiny shadow was cast for the
smaller details.</span><br />
<span face=""verdana" , sans-serif"><br /></span>
<br />
<span face=""verdana" , sans-serif"></span><br />
<span face=""verdana" , sans-serif"></span><br />
<span style="font-size: small;"><span face=""verdana" , sans-serif">Well, I think that covers the main things and its only a little glimpse into the many things that make this game a piece of art.</span></span><br />
<br />
<span style="font-size: small;"><span face=""verdana" , sans-serif">That's it for now, I am sure more could be said about the game as it is full of details I might have glossed over, if so feel free to let me know and I can edit this post or make a second part.</span></span></div>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com5tag:blogger.com,1999:blog-5248807876148705971.post-54909640148527148822019-08-27T23:30:00.003-07:002023-03-18T12:33:57.872-07:00JSRF ModTool 2.5 - Model importer improvements + High resolution texture importing<span face=""verdana" , sans-serif" style="font-family: verdana;">Hey, here's an update for the tool, I have improved the model importing, fixed some bugs, and added support for a model type(player character head models) that are different from the common model setup.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><b>For learning the basics on how to use the tool, see <a href="http://jsrf-inside.blogspot.com/2016/05/jsrf-tool-20b-model-viewer-texture.html">this post</a> and <a href="http://jsrf-inside.blogspot.com/2017/01/jsrf-tool-21-level-texture-modding.html">also this post</a></b></span></span> </span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">It is now possible to import scaled up textures, meaning you can for instance edit a 512x512 texture, scale it up to 1024x1024 in the image editor, save, and then import with "Save changes" in the JSRF ModTool Texture Viewer tab, the tool will import the texture with the new resolution.<br /></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">This will be useful for some of you out there who want to re-create some of the UI textures which are quite pixelated and low resolution and could use an HD remake, looking forward to those mods.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">The tool maximum texture resolution import is limited to 2048x2048, I haven't tested higher resolutions and really for JSRF I would recommend sticking to 1024 as the maximum in general.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><b><span style="color: #e06666;">And as always, don't forget to clear (delete the files) in the cache, that is the X Y Z, HDD partitions, so the game reloads your modded files.</span></b></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif"><span style="font-family: verdana;"><a href="https://github.com/neodoso/JSRF_ModTool/releases" target="_blank"><span style="color: orange;"><span face=""verdana" , sans-serif"><span style="font-size: large;"><u><b>Click here to download JSRF ModTool</b></u></span></span></span></a></span> </span></div>
neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com4tag:blogger.com,1999:blog-5248807876148705971.post-28587259961951596362019-08-27T10:51:00.002-07:002019-08-27T10:51:41.151-07:00JSRF now playable in HD on PC with the cxbx-reloaded emulator<span style="font-family: Verdana, sans-serif;">You can now play JSRF in high resolution with the emulator <a href="https://github.com/Cxbx-Reloaded/Cxbx-Reloaded">cxbx-reloaded</a></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsgryRpZKutYi3AFFSv7xJfzJw9wRuluxgxzwMA4fjjjVJOoECKm1P02i-_X6f4wljPggXTCJw2Q6MLZna91Dxz108aB3FfAqc4FOdK4lpekCm4QO-F3Jov7UOaljwdoHQoWFPs8RtZak/s1600/cxbx_jsrf.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1042" data-original-width="1600" height="416" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsgryRpZKutYi3AFFSv7xJfzJw9wRuluxgxzwMA4fjjjVJOoECKm1P02i-_X6f4wljPggXTCJw2Q6MLZna91Dxz108aB3FfAqc4FOdK4lpekCm4QO-F3Jov7UOaljwdoHQoWFPs8RtZak/s640/cxbx_jsrf.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpLK1XLSo1cOzwL86ZacopvMAljsa2tDycCkqPvSz1_MBt97duTWPmHtUbV05cNfDVuJq4AW3GtamwulAcNCoLR1wrjzLzzeMmk2B_UXI9AiABhbRWAKdm18FhoVZFyyy1CZEs_9Javpw/s1600/cxbx_jsrf_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1042" data-original-width="1600" height="416" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpLK1XLSo1cOzwL86ZacopvMAljsa2tDycCkqPvSz1_MBt97duTWPmHtUbV05cNfDVuJq4AW3GtamwulAcNCoLR1wrjzLzzeMmk2B_UXI9AiABhbRWAKdm18FhoVZFyyy1CZEs_9Javpw/s640/cxbx_jsrf_1.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">The emulator runs JSRF flawlessly, you might need a fairly powerful CPU and/or GPU to run it at a good frame-rate depending on the resolution you chose in the options "Settings > Config Video".</span><br />
<br />
<span style="font-family: Verdana, sans-serif;">To run at higher resolutions set the "Display resolution</span><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;">"</span> and </span><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;">"</span>Render Resolution</span><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;">"</span> to something higher than the default.</span><br />
<br />
<br />
<span style="font-family: Verdana, sans-serif;">You can download the latest version of cxbx-reloaded by clicking on "</span><span style="font-family: Verdana, sans-serif;">Latest Development Build" in </span><span style="font-family: Verdana, sans-serif;"><a href="https://github.com/Cxbx-Reloaded/Cxbx-Reloaded">this page</a>.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">I of course own a DVD copy of the original JSRF game (and an original xbox) and so should you if you're going to play on the emulator, </span><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;">as I don't advocate piracy,</span> you'll have to figure out on your own how to get the files of the game to run it on cxbx-reloaded.</span><br />
<br />
<br />
<span style="font-family: Verdana, sans-serif;">You can support the development on cxbx-reloaded <a href="https://www.patreon.com/LukeUsher">here on Patreon</a></span><span style="font-family: Verdana, sans-serif;"> as while it may </span><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;">very well run</span> JSRF, there's still lots of work to be done to get other xbox games running and the amazing developers could use our support.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOgReUi99oWMX8c6GIKoncYEQT9BCTNh6kW14TSr-5dr_30IHdkSFbSx6032PRU_K-ov4d5yJRtbaC5NbN6gib55EH45TfkZBb8yIqUBUCnDhUtn6wdePTGdeY6j6Q2fRLX_9-lan0ayg/s1600/cxbx_jsrf_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1042" data-original-width="1600" height="416" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOgReUi99oWMX8c6GIKoncYEQT9BCTNh6kW14TSr-5dr_30IHdkSFbSx6032PRU_K-ov4d5yJRtbaC5NbN6gib55EH45TfkZBb8yIqUBUCnDhUtn6wdePTGdeY6j6Q2fRLX_9-lan0ayg/s640/cxbx_jsrf_2.jpg" width="640" /></a></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">We might not have gotten an official JSRF port, but we have this amazing emulator now, have fun!</span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com7tag:blogger.com,1999:blog-5248807876148705971.post-52635067728268479232019-07-18T14:05:00.001-07:002023-03-18T12:29:39.569-07:00JSRF ModTool 2.4 - And character model importing<span face=""verdana" , sans-serif" style="font-family: verdana;">Hey there, here's the new version of the tool that can import models of the type named "MDLB" (characters and objects).</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<a href="https://github.com/neodoso/JSRF_ModTool/releases" style="font-family: verdana;" target="_blank"><span style="color: orange;"><span face=""verdana" , sans-serif"><span style="font-size: large;"><u><b>Click here to download JSRF ModTool </b></u></span></span></span></a></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span></div>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><b>For learning the basics on how to use the tool, see <a href="http://jsrf-inside.blogspot.com/2016/05/jsrf-tool-20b-model-viewer-texture.html">this post</a> and <a href="http://jsrf-inside.blogspot.com/2017/01/jsrf-tool-21-level-texture-modding.html">also this post</a></b></span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">While its now possible to import models, keep in mind if you want to do so you will need to have some 3D modelling, uv mapping and rigging skills if you want to make a brand new character and import it.<br /><br />Therefore this is not going to be a tutorial on how to do 3D modelling as that's a separate gigantic topic, you can find various 3D modelling apps and tutorials online, you might however be able to try doing simple edits on models like changing proportions of the body if you follow this example.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHA7o25r4xb06ae6Zj12_Jf_s43_2HP7yv9jnW9fNGL_iF-EwZbfNfh2hxjdeNoXrHHRIeub8m4KWphuVQibZOsVujzjXhRT3hUHB2EakIgry78_6z6WdL8tgLbDSjcKgSs3MlkHClC14/s1600/ui_model.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="770" data-original-width="1231" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHA7o25r4xb06ae6Zj12_Jf_s43_2HP7yv9jnW9fNGL_iF-EwZbfNfh2hxjdeNoXrHHRIeub8m4KWphuVQibZOsVujzjXhRT3hUHB2EakIgry78_6z6WdL8tgLbDSjcKgSs3MlkHClC14/s640/ui_model.png" width="640" /></a></div>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">Three new buttons have been added to the top right of the model viewer to import/export models.<br />The JSRF ModTool will export and import models as .<a href="https://developer.valvesoftware.com/wiki/Studiomdl_Data">SMD</a> model file format.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">The "Collapse vertices" button will move all the model's points to the origin position (0 0 0) making the model invisible, this can be useful to hide parts of the original model such as the different facial expressions the game switches through as the character is animated.<br />If you don't want to bother making separate models for each facial expression, you can have the body and head model all contained in the first imported MDLB and then you could just make all the other original head models invisible by using the "Collapse vertices" button.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">As for the tiny buttons "Expt." and "Impt." they let you export or import the selected item(block of data) as a binary file if you want to take a look with a hexadecimal editor to mod some particular data manually. </span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span style="font-family: verdana; font-size: large;"><span face=""verdana" , sans-serif"><u><b>Anatomy of a JSRF character .dat file</b></u></span></span></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">Here's how playable character models are organized in the .dat file </span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWKI-72UXQtQWUpxkoGGUFPnYJ5EoXgwPDUD8JbFEhuSX3oOCJrFEaobta6GoomrZZ26AduzARj_X5ZLFMQ-7GCqgm3sKaGoAQVVBmyFv_gdPrpxqbTUiaayDxh1-7M7lxZWB8_tIBDvw/s1600/player_model_explained_3.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="746" data-original-width="702" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWKI-72UXQtQWUpxkoGGUFPnYJ5EoXgwPDUD8JbFEhuSX3oOCJrFEaobta6GoomrZZ26AduzARj_X5ZLFMQ-7GCqgm3sKaGoAQVVBmyFv_gdPrpxqbTUiaayDxh1-7M7lxZWB8_tIBDvw/s640/player_model_explained_3.png" width="602" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><u><b><span face=""verdana" , sans-serif"><br /></span></b></u><b><span face=""verdana" , sans-serif"><span style="font-size: large;"> </span></span></b><u><b><span face=""verdana" , sans-serif"><span style="font-size: large;">Exporting a model</span></span></b></u><br /></span>
<span style="font-family: verdana;"><u><b><span face=""verdana" , sans-serif"><br /></span></b></u></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">Just select an MDLB item and click "Extract MDL", it will let you select a folder where you want the model to be exported as .smd files, give it a name and click Save.<br /><br /> The tool also exports the lower level parts of the model which have to have the same naming as the main model so when importing the tool can find the lower parts of the model to import as well to rebuild the model properly.</span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Cz9uSxqkaC6GzU1vbzqjbypBEplWlPoV2aI3hjHMFodG0okbtP2vywm5cgechpHzSiCQNHN04zjhw8ddWVGSwk7bhkTirDvB0wPCr0CWhHhhEHVQkvQJ4AMDjTpQ3ZUsRbKZxXOBHtU/s1600/exported_smds.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="679" data-original-width="1220" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Cz9uSxqkaC6GzU1vbzqjbypBEplWlPoV2aI3hjHMFodG0okbtP2vywm5cgechpHzSiCQNHN04zjhw8ddWVGSwk7bhkTirDvB0wPCr0CWhHhhEHVQkvQJ4AMDjTpQ3ZUsRbKZxXOBHtU/s640/exported_smds.png" width="640" /></a></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span style="font-family: verdana; font-size: large;"><span face=""verdana" , sans-serif"><u><b>Using Blender (2.79) to edit a model</b></u></span></span></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif">Since the JSRF ModTool exports the models in .smd file format, for Blender you will need the <a href="http://steamreview.org/BlenderSourceTools/">Source Tools here </a> to import the model(s).</span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif">Installation instructions for the plugin are on <a href="https://developer.valvesoftware.com/wiki/Blender_Source_Tools">this page</a>. </span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif">Once the plugin is installed and enabled you should be able to import .smd files by going into the menu File > Import > Source Engine</span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB4JXWRgdtlTAlKxWMQBJNMjMf4zCrZhywyONlR8nzjc7yh0EtXs5OgeTtFVRykof0JfdN9fLD58TSwZJQgX8r79RxjP9S5CRhSE4bpJkr-DiWw_JpVk_x7sukIn4131un5v0TrA5cJzU/s1600/blender_smd_import.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="679" data-original-width="1220" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB4JXWRgdtlTAlKxWMQBJNMjMf4zCrZhywyONlR8nzjc7yh0EtXs5OgeTtFVRykof0JfdN9fLD58TSwZJQgX8r79RxjP9S5CRhSE4bpJkr-DiWw_JpVk_x7sukIn4131un5v0TrA5cJzU/s640/blender_smd_import.png" width="640" /></a></div>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif">In this example I am going to make a small edit to the body of Beat, which I exported as "beat_body.smd"</span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif">First thing you'll notice is you need to rotate the model 90 degrees on the X axis.<br />Also note that the models comes inverted on the X axis, unfortunately I don't have the math/trigonometry etc knowledge and skills to code something so the JSRF Tool would sort these issues,luckily you won't need to turn it front 90 degrees again as the SMD exoprting tool can manage that for you.</span></span></span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6YTGqPN1YMJlv6gNaQVmQf2-_2D33r8nZ0-EQHUyaLUKbgVJ3lreMthso0zlYiI-gFPC2xeorENB4PaQ2WEEedkSLUF8g7VjYj6owqcMSz16eX109h2SP4awDFcfVvuzzOkryzStrlKY/s1600/beat_body_imported.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="876" data-original-width="1600" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6YTGqPN1YMJlv6gNaQVmQf2-_2D33r8nZ0-EQHUyaLUKbgVJ3lreMthso0zlYiI-gFPC2xeorENB4PaQ2WEEedkSLUF8g7VjYj6owqcMSz16eX109h2SP4awDFcfVvuzzOkryzStrlKY/s640/beat_body_imported.png" width="640" /></a></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ0TJJIKToZfhe2XacFE3wtAOQ1nuPxpaA68pmTAOSbLqGQJ2GUzipVkMfSlJ9l-IqU8rVJoAJkuDtULRYkMyJQs-nxujMYuu5xvnrBGPIec5q_h7_YZNIrdl_6OqGgB0NIlXZXS1yZVE/s1600/beat_body_imported_rotated.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="876" data-original-width="1600" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ0TJJIKToZfhe2XacFE3wtAOQ1nuPxpaA68pmTAOSbLqGQJ2GUzipVkMfSlJ9l-IqU8rVJoAJkuDtULRYkMyJQs-nxujMYuu5xvnrBGPIec5q_h7_YZNIrdl_6OqGgB0NIlXZXS1yZVE/s640/beat_body_imported_rotated.png" width="640" /></a></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif">Unfortunately with the SMD file format I haven't searched a way to have the models export with its texture(s), so you'll need to export them, select a texture and click "Edit texture", the texture will be extracted in the JSRF ModTool folder "resources\tmp"<br /> Then assign the texture(s) manually in blender.</span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><b>Made some edits to the model here: </b></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzGZqo_EpgrhMrE1sqmzhWCEHmHzHhIroo8yLxeTGrBq5xv8ZxFEDO36TZ3G7T6BVsk3f1mVhyU9Vr04yKMWCto818aJe7XpBWaN4_Aeo6xqTWT6GlWjY0sDTHng95_CfE5vhyJO6u6I0/s1600/beat_body_edited.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="876" data-original-width="1600" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzGZqo_EpgrhMrE1sqmzhWCEHmHzHhIroo8yLxeTGrBq5xv8ZxFEDO36TZ3G7T6BVsk3f1mVhyU9Vr04yKMWCto818aJe7XpBWaN4_Aeo6xqTWT6GlWjY0sDTHng95_CfE5vhyJO6u6I0/s640/beat_body_edited.png" width="640" /></a></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif">Since I am barely familiar with blender, I just make some simple edits for demonstration, making his skates tubes ridiculously long and his shoulder spikes longer.</span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif">Once you are done with your edits, go to the top right panel where you see the list of the objects in the scene, right click on "beat_body_skeleton" and "Selected Hierarchy"</span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnZEOAEB1KLwNXc4RBfzcFHiiX7P3Z_Aq_0zIU48jVQK2OfFeIDvJrFV2-t0vMIBIAm6T2wKy9QU6ZcKy076PyjhiZTWu2oW7zqPTVKl0_SdeYfV6Lwv8UOqophfGvSzXqBvmdA1SXf24/s1600/select_high.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="404" data-original-width="402" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnZEOAEB1KLwNXc4RBfzcFHiiX7P3Z_Aq_0zIU48jVQK2OfFeIDvJrFV2-t0vMIBIAm6T2wKy9QU6ZcKy076PyjhiZTWu2oW7zqPTVKl0_SdeYfV6Lwv8UOqophfGvSzXqBvmdA1SXf24/s400/select_high.png" width="397" /></a></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><br /></span></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: large;"><u><b>Blender and SMD export settings</b></u></span></span></span></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;">Now before exporting we need to setup a few things in the Source Engine export panel.</span></span></span></div>
<div style="text-align: left;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;">Click on the third button highlighted by the red circle, to display the </span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;">Source Engine export panel with which we can export the model back to SMD format.</span></span></span></span></span></span></div>
<div style="text-align: left;">
<span style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW26sqs6DKcfG1iKcryTuz1aVeZCoStFE77JgH0O7-LAhaXP-WznzMXYDUFiwF_XNu-xAKjH2FxmtgrjnNld4lX3ZPuqcR0x5rSE_6-fT82fX3jmljhr6exL22po6ohfn2wI-1fkcOGLY/s1600/sourtools.png" style="clear: left; float: left; font-family: verdana; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="777" data-original-width="340" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW26sqs6DKcfG1iKcryTuz1aVeZCoStFE77JgH0O7-LAhaXP-WznzMXYDUFiwF_XNu-xAKjH2FxmtgrjnNld4lX3ZPuqcR0x5rSE_6-fT82fX3jmljhr6exL22po6ohfn2wI-1fkcOGLY/s640/sourtools.png" width="280" /></a></div>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;">Under "Source Engine Export" there's a few things to setup.</span></span></span></span></span></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><br /></span></span></span></span></span></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><b>1</b>-Set the export path, to the folder where you extracted the models (same folder where you extracted with the JSRF Tool)<br /><br /><b>2</b>-Set the export format to SMD</span></span></span></span></span></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><br /></span></span></span></span></span></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><b>3</b>-Set the Target Up axis to Y</span></span></span></span></span></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><br /></span></span></span></span></span></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><br /></span></span></span></span></span></span></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><b>4</b>-Now click the "Export</span></span></span></span></span></span><span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;">"</span></span></span></span></span></span> button, that's it!</span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><u><b>Importing a model on the JSRF ModTool</b></u></span></span></span></span></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span style="font-size: small;">Go back to the JSRf ModTool and with the original MDLB selected click "Import MDL"</span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span style="font-size: small;">Select the first model on the list, in my case "beat_body.smd" and click Open.</span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span style="font-size: small;">This window should show up if there are no errors with the model files.<br />The lower level models (p_0 p_1 p_2) should be also loaded automatically if the naming is as on this example.</span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: verdana; font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2xb3fFujhz22a8rrU6Fkxyzt7Q0W5_JpI6w7WdWvUaNP3EDqRd9jLJo4-c_FCiT0ycZNg9dfXuJTlLRZe5xGcGT0PzLF07R9k3ySFsp-HRi7OcF97Gp9v3cU1WHlSD5ckOuSfeyVkSN4/s1600/mdl_import_window.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="761" data-original-width="1117" height="436" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2xb3fFujhz22a8rrU6Fkxyzt7Q0W5_JpI6w7WdWvUaNP3EDqRd9jLJo4-c_FCiT0ycZNg9dfXuJTlLRZe5xGcGT0PzLF07R9k3ySFsp-HRi7OcF97Gp9v3cU1WHlSD5ckOuSfeyVkSN4/s640/mdl_import_window.png" width="640" /></a></span></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span style="font-size: small;"><span style="font-size: large;"><u><b> </b></u></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">There are many settings here that you'll most likely never will need to modify but I am going to explain them anyways:<br /><br />-<b>Vertex definition size</b>: size of the block of data defining a vertex(point) and other properties depending on the size, such as UV, Normals, sekeleton/bone ID, </span></span></span></span></span><span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">bone deformation factor etc</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><b><br />-Global draw distance</b>: distance at which the model disappears (for performance optimization)</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><b>Materials</b></span></span></span></span></span></span></span></span></span></span></span></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">A JSRF player model usually has multiple materials/shaders that define the shading style. </span></span></span></span></span></span></span></span></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRJZGkaLQBaGlizBceZlaTNxCtk1B2oWrwF3TRG5afGlhfQPCWA4VKDXgr7f5Dfb4OuwzhGLVI_e6E9u8E9k-qCjnJJVxQi4aKzOVItfpw1D7X84YEC5q0tCqnrVRxZFY_NNBV1A8g3bo/s1600/mat.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="86" data-original-width="614" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRJZGkaLQBaGlizBceZlaTNxCtk1B2oWrwF3TRG5afGlhfQPCWA4VKDXgr7f5Dfb4OuwzhGLVI_e6E9u8E9k-qCjnJJVxQi4aKzOVItfpw1D7X84YEC5q0tCqnrVRxZFY_NNBV1A8g3bo/s640/mat.png" width="640" /></a></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Your model's materials groups should be named "mat_" and the corresponding number you want the material to be.<br /><br />You can change the color and transparency of the material with the RGBA values, though this might depend on the type of "Material ID", this seems to be mostly used on models for the menus where they used a flat/solid color, and so the RGBA seems to work mainly on materials types dedicated to menu/UI models.</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><b>Material ID</b>: this defines the type of shading for this material group (mat_0), there are many many more material IDs in other models that will show up as a number since I haven't researched them all to give them a name.</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><b>Float</b>: this is an unknown parameter, it rarely changes, if you figure out what it does, don't hesitate to post in the comments.</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">You can remove materials by clicking the [x] box on the top right, and add materials from the button on the top right.</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><b>Importing</b></span></span></span></span></span></span></span></span></span></span></span></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Now that all is setup click "Import", if everything about the model is properly setup it should import without giving any error messages.<br /><br /><b>Please note that JSRF models are limited to 2 deformers(bones) per vertex</b></span></span></span></span></span></span></span></span></span></span></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIx_etb7S7WGv9XPaHHlILflnODP-iQQKFFhx77Agel09kNs1WIPOklsrzQoEyXG8HbFEYOVE39pMStGQiiCiKUiKniwU4qMYRAsjv3aK8XOFSMkHFXsbvpZfcGQ-DJWZ7kPzMcVNtfyg/s1600/beat_model_mod.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="771" data-original-width="1233" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIx_etb7S7WGv9XPaHHlILflnODP-iQQKFFhx77Agel09kNs1WIPOklsrzQoEyXG8HbFEYOVE39pMStGQiiCiKUiKniwU4qMYRAsjv3aK8XOFSMkHFXsbvpZfcGQ-DJWZ7kPzMcVNtfyg/s640/beat_model_mod.png" width="640" /></a></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">There's the modified model imported, recompiled and ready for the game. </span></span></span></span></span></span></span></span></span></span></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtScZNF9Fh1R8IyCm_kMNzY3ZtD_Jq0w5vnw9vWE51QAtlceE95jyhXq7K_J14rJ5Zag48rFAWNeSrdQ7JDHpkuukVKiRUkOgUT5FX8Hk00_oWfitOdq1M0TJYmmEGu1x4ZzzBy-VR47A/s1600/beat_mod.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="532" data-original-width="642" height="530" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtScZNF9Fh1R8IyCm_kMNzY3ZtD_Jq0w5vnw9vWE51QAtlceE95jyhXq7K_J14rJ5Zag48rFAWNeSrdQ7JDHpkuukVKiRUkOgUT5FX8Hk00_oWfitOdq1M0TJYmmEGu1x4ZzzBy-VR47A/s640/beat_mod.png" width="640" /></a></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">And there it is ingame.</span></span></span></span></span></span></span></span></span></span></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span></div>
<div style="text-align: center;">
<span style="font-family: verdana; font-size: large;"><b><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><br /></span></span></span></span></b></span></div>
<div style="text-align: center;">
<span style="font-family: verdana; font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><u><b>Some info and tips for full custom character mods</b></u></span></span></span></span></span></div>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> You must keep the original bone hierarchy, modifying it or replacing it might cause animations to get messed up or even cause a crash.</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">If you're going to rig a different model, a new model, or ported mesh from some other game, note that you can move the bones around quite a bit(if the proportions differ from the JSRF's original character model) and the game engine will tolerate and will compensate for it anyways, so you can make a character shorter or taller moving bones around.</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">As you might notice, the exported character model's bones do not have a rotation, they are set to 0 0 0, it seems the rotation is completely dependent and applied by the animation data(which I haven't reverse engineered), some animations seem to be shared between characters and they all share the same or very similar rig(bone hierarchy and placement). </span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Well, I think that's more or less all there is to it, if you have any questions don't hesitate to ask in the comments.</span></span></span></span></span></span></span></span></span></span><span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><br /></span></span></span></span></span></span></span></span></span></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"><span face=""verdana" , sans-serif"><span face=""verdana" , sans-serif"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Cheers</span></span></span></span></span></span></span></span></span></span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com25tag:blogger.com,1999:blog-5248807876148705971.post-37810573946411603732019-06-04T11:08:00.003-07:002019-06-04T11:08:58.631-07:00JSRF : model importing, custom character models now possible<span style="font-family: "verdana" , sans-serif;">Hey everyone, so I reverse engineered more of the model format and managed to code a model importer for JSRF (for characters and objects).</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;">Here's some examples of custom player model imports:</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/xopet_U1sKY/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/xopet_U1sKY?feature=player_embedded" width="640"></iframe> </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/tL1GSH1rzOc/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/tL1GSH1rzOc?feature=player_embedded" width="640"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/atUri_aLr6c/0.jpg" frameborder="0" height="532" src="https://www.youtube.com/embed/atUri_aLr6c?feature=player_embedded" width="640"></iframe> </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;">I still have more work to do on the Mod Tool for model importing, I will post the tool as soon as its ready.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;">That's all for now, see ya! </span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com1tag:blogger.com,1999:blog-5248807876148705971.post-2969576980705970942018-11-12T09:41:00.002-08:002023-03-18T12:33:06.467-07:00JSRF Tool 2.3b and mods<span face=""verdana" , sans-serif" style="font-family: verdana;">Hello everyone, here's a new version of the JSRF tool which allows you to copy/past add/remove data blocks within a JSRF file, </span><span face=""verdana" , sans-serif" style="font-family: verdana;">you can copy and paste model parts from
one file to another, that is what I did for the player model swaps I showed earlier.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">Note that this version of the tool isn't finished so many models in model viewer are displayed without textures, if you need to preview models you're better off with previous versions of the tool.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><span style="font-size: large;"><a href="https://github.com/neodoso/JSRF_ModTool/releases" target="_blank"><b>Click here to download the JSRF ModTool </b></a></span></span></div>
<span style="font-family: verdana;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgts0TkdCUgMW3d4h1IQwwxh6gnzBqIXDWqnmUDYwOaOeW_JXSqcUKtEv8tza8tc8VYApwbYgXmGbYEoPr4Gx7W44YGvotWEbeTAxdSnddel-pA4Qi8xUgvtX7MLb0InB1o9VDlfk-4AoA/s1600/jsrf_modtool_23b.png" style="font-family: verdana; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="764" data-original-width="1231" height="395" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgts0TkdCUgMW3d4h1IQwwxh6gnzBqIXDWqnmUDYwOaOeW_JXSqcUKtEv8tza8tc8VYApwbYgXmGbYEoPr4Gx7W44YGvotWEbeTAxdSnddel-pA4Qi8xUgvtX7MLb0InB1o9VDlfk-4AoA/s640/jsrf_modtool_23b.png" width="640" /></a></div>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;"><b>For how to use the tool, see <a href="http://jsrf-inside.blogspot.com/2016/05/jsrf-tool-20b-model-viewer-texture.html">this post</a> and <a href="http://jsrf-inside.blogspot.com/2017/01/jsrf-tool-21-level-texture-modding.html">also this post</a></b></span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">Regarding the new features, its mainly the ability to, add/remove copy/paste, insert, delete blocks of data within the JSRF file container structure.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span face=""verdana" , sans-serif" style="font-family: verdana;">For example you can select a model or texture from and click "copy", open a different file, select a texture and click "paste" to overwrite by whatever you copied earlier.</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<div style="text-align: center;">
<u style="font-family: verdana;"><span face=""verdana" , sans-serif"><b>Also, here's some mods:</b></span></u></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><a href="https://www.dropbox.com/s/qmewifrua2zdouz/JSRF_player_model_swaps_Mods.zip?dl=1"><b>Player model swaps</b></a></span></div>
<div style="text-align: center;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"><a href="https://www.dropbox.com/s/nn908k8237p56r1/jsrf_modded_player_stats.zip?dl=1"><b>Player modded stats </b></a></span></div>
<div style="text-align: center;">
<b style="font-family: verdana;"><a href="https://www.dropbox.com/s/10scs0fma5vb8cp/JSRF_Cinematics_skip_MOD.zip?dl=1"><span face=""verdana" , sans-serif">No cinematics mod</span></a></b></div>
<div style="text-align: center;">
<span style="font-family: verdana;"><br /></span></div>
<div style="text-align: left;">
<span face=""verdana" , sans-serif" style="font-family: verdana;"> That's all for now ;)</span><span style="font-family: verdana;"><b><span face=""verdana" , sans-serif"><br /></span></b></span></div>
<span face=""verdana" , sans-serif" style="font-family: verdana;">-neodos</span><span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>
<span style="font-family: verdana;"><br /></span>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com10tag:blogger.com,1999:blog-5248807876148705971.post-18297307632315720082018-05-17T09:42:00.001-07:002018-05-17T12:04:30.006-07:00JSRF Song Mod Tool by ChrisderWahre<span style="font-family: "verdana" , sans-serif;">Hey all,</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Here's a tool </span><span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;">created by ChrisdeWahre</span></span> that lets you easily modify/replace the JSRF songs</span><br />
<span style="font-family: "verdana" , sans-serif;"></span><a href="https://github.com/chrisderwahre/JSRF_Song_Mod_Tool/releases"><span style="font-family: "verdana" , sans-serif;">Donwload on the .zip file in the GitHub page here.</span></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjggtljcLAXHCPKNGfucTTFJVC-vALDJjPTd7cdPeT_tMfXl0-7iVMw-HcNSeA_VWS7fK3ohcle90y51pExgRjgXfqshmalc_31D7Tg1CQepOF4IzCZYfTez-FPDAfriaJwrwvcoNXwUcQ/s1600/JSRF_song_mod_tool.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="459" data-original-width="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjggtljcLAXHCPKNGfucTTFJVC-vALDJjPTd7cdPeT_tMfXl0-7iVMw-HcNSeA_VWS7fK3ohcle90y51pExgRjgXfqshmalc_31D7Tg1CQepOF4IzCZYfTez-FPDAfriaJwrwvcoNXwUcQ/s1600/JSRF_song_mod_tool.jpg" /></a></div>
<br />
<br />
<span style="font-family: "verdana" , sans-serif;"></span><br />neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com3tag:blogger.com,1999:blog-5248807876148705971.post-18052367790342748772018-03-20T11:58:00.002-07:002018-03-20T12:02:44.805-07:00JSRF emulated at good framerate (minus sound) by Cxbx-Reloaded<span style="font-family: "verdana" , sans-serif;">This time its another app and its emulating the game at a good framerate and even high resolutions, though sound doesn't still work, it seems to run fairly well overall, aside from some visual glitches here and there and some rare crashes.</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;">You can find the emulator (download under "Automated Builds") and the repo <a href="https://github.com/Cxbx-Reloaded/Cxbx-Reloaded">here</a></span><br />
<br />
<b><span style="font-family: "verdana" , sans-serif;">Support the developer on <a href="https://www.patreon.com/LukeUsher">Patreon</a> </span></b><br />
<br />
<span style="font-family: "verdana" , sans-serif;">PS:don't
bug the developers just about JSRF, they get enough of that already,
their focus is on emulating as many games as possible first, so keep
that in mind ;)
</span><br />
<br />
<br />
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/anq1gi8Tnz4/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/jc-RgYZORAk?feature=player_embedded" width="600"></iframe>neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com1tag:blogger.com,1999:blog-5248807876148705971.post-59390136735469483362018-02-19T02:12:00.001-08:002018-02-19T02:16:01.029-08:00Character model swaps - rebuilding main file structure<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/anq1gi8Tnz4/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/anq1gi8Tnz4?feature=player_embedded" width="600"></iframe></div>
<br />
<br />
<span style="font-family: "verdana" , sans-serif;">So I have re-coded a core part of the JSRF Mod Tool, so it loads
files differently and can now entirely re-build the base container
structure of the files, allowing for adding, removing or resizing of
blocks of data contained within the main structure.</span><br />
<span style="font-family: "verdana" , sans-serif;">And of course
the first thing in mind to try was copying non-playable character models
onto the player files annnnnd it works! (in most cases).</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;">I still have to finish re-coding parts of the tool before release so it can handle different types of files.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ASQkYvpyH_c/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/ASQkYvpyH_c?feature=player_embedded" width="600"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/WE95jPqJu3U/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/WE95jPqJu3U?feature=player_embedded" width="600"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/1IH-iN9dNOk/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/1IH-iN9dNOk?feature=player_embedded" width="600"></iframe></div>
<br />
<span style="font-family: "verdana" , sans-serif;">The pedestrians models, unfortunately use a different bone structure
than the player models, so the bones of the model won’t match with the
original animation<br />…but we could say this is totally fine…<br />
look at him go!
<br /> he’s got quite the moves!<br />like a smooth gentleman!</span><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/q0nEHJFp_KA/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/q0nEHJFp_KA?feature=player_embedded" width="600"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/awHI7Ctsr0I/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/awHI7Ctsr0I?feature=player_embedded" width="600"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;">As if skating on the sidewalk in JSRF didn’t scare the pederastrians
enough already, we’re getting on the levels of crazy taxi here:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;"> </span><iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/RQ3_Wgtl7tQ/0.jpg" frameborder="0" height="400" src="https://www.youtube.com/embed/RQ3_Wgtl7tQ?feature=player_embedded" width="600"></iframe></div>
neodoshttp://www.blogger.com/profile/08297250876206455498noreply@blogger.com5