Git Product home page Git Product logo

swe1r-tools's Introduction

Gitter chat


Star Wars Episode 1: Racer - Tools (swe1r-tools)

A collection of tools to work with files of the 1999 Game "Star Wars Episode 1: Racer"

  • out_splineblock.py: Extract out_splineblock.bin to Wavefront OBJ files
  • out_spriteblock.py: Extract out_spriteblock.bin to PNG files
  • out_textureblock.py: Extract out_textureblock.bin to PNG files
  • scr2wav.py: Converts SCR audio files to WAV files (only found in webdemo)
  • extract-racer-tab.py: Extracts strings from swep1rcr.exe which are typically translated
  • parse-racer-tab.py: Validates racer.tab translation files
  • parse-savedata.py: Parses (tgfd.dat, 4056 bytes) and profile (*.sav, 84 bytes) files
  • decompress.c: Decompress "Comp" modelblock chunks (only found in N64 version)

Also check the OpenSWE1R Wiki for more projects and similar tools.

Installation

  • The Python scripts will require Python version 3 to run.

  • For some tools, you will need a C11 Toolchain and CMake to build them:

    git clone https://github.com/OpenSWE1R/swe1r-tools.git
    cd swe1r-tools
    mkdir build
    cd build
    cmake ..
    make
    

© 2017 - 2018 OpenSWE1R Maintainers

Source code licensed under GPLv2 or any later version.

swe1r-tools's People

Contributors

jayfoxrox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swe1r-tools's Issues

splineblock: not all control points are extracted

The spline tool should export more info. Currently only a part of the actual spline information is shown.
Maybe it makes sense to just export a blender python script to generate blender splines. I think OBJ might be too limited.
Collada output could also be an option.

Don't hardcode output path to "/tmp/"

All scripts should be reviewed so they don't use filesystem path which are not available on all platforms.

Instead, an output folder should be specified on the command line (or to current directory).

racer.tab: "/LNCH" strings

It seems that there is a "/LNCH" prefix for the launcher strings.

Example: "/LNCH099/Please insert the CD into your CD-ROM player and try again."

These were (to my knowledge) not translated in the french version of the game and my 1.1 version also does not contain them. This should be investigated further.

Sprite 145 is probably broken

Looks like pages are arranged wrong.

(Also Sprite 22 might be broken too. It's probably an N64 controller, but quality is poor?)

Sprite and Texture decoder should be merged

It appears that the fmt variable in out_spriteblock.py is the same as format_a and format_b combined from out_textureblock.py. The actual pixel decoder should be shared between the 2 tools.

The list of RE'd formats can be found here: Olganix/Sw_Racer#9

This will hopefully eventually close #3

Clarify README section about installation

You will need a C11 Toolchain and CMake to compile some of these tools. The Python scripts will require Python version 3.
(CMake instructions)

should be changed to something like

  • The Python scripts will require Python version 3.
  • For some tools, you will need a C11 Toolchain and CMake to build them:
    (CMake instructions)

Savedata: Add array for track order

While the races are unlocked in the order they appear in the tournament, the actual track order for the besttimes is different.
This is the same order as it appears in the binary which can be extracted using the extract-data tool.

Rewrite scripts in C/C++ and export data to XML and Collada

When unpacking binary data, they should be converted to XML, to make it easy to modify them.
This is already done for the model files by Sw_Racer.

Doing this for the texture, spline, sprite and savedata files would allow users to modify and repack these files more easily.

Data which is not easily modifieable by text editors, should be extractable to PNG (as it already happens for sprite and textures) or Collada from the XML.

Review texture flags 0x10 and 0x01

These texture flags from byte Section5b.unk3 in the modelblock have an impact on how the texture is loaded. It should be reviewed if data might be missing from exporting textures (out_textureblock.py) at this point.

Sprite exporter should also dump wxHexEditor tags

I currently suspect that not all bytes are properly exported:
I could not find sprites or textures for the fonts. I still suspect them in this file somewhere
Even if they can not be found here, this is still a useful feature to have for debugging.

Dump textures as new texture information is found

Currently, out_textureblock.py will first collect all texture information, and only start dumping textures once all XML files have been parsed.
This should be changed so it immediately starts output. This will feel more responsive and aid with debugging bugs in the tools, as we can get results quicker.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.