Giter VIP home page Giter VIP logo

swe1r-tools's Introduction

Gitter chat CLA assistant Travis build Status AppVeyor Build status


OpenSWE1R

An Open-Source port of the 1999 Game "Star Wars: Episode 1 Racer"

Screenshot of OpenSWE1R running on Linux

Details

This project is a mix of console emulation and something like WINE. It implements the subset of Windows functions used by the game. OpenSWE1R also contains x86 CPU emulation. The original games code is replaced by open-source code which is patched into the game at runtime. This is similar to the approach used by OpenRCT2, but more emphasis is put on emulation and platform independence.

Currently, not all functions are implemented in the open-source portion. Therefore, this project also still relies on the original games binary. Even if not all code is patched, the game will still work cross-platform due to the API and CPU abstraction.

You will still need the original game for its art assets: levels, sounds, ...

Goals

The goal is to eventually replace all of the original code with an open-source equivalent. The code is supposed to be clean, accurate and portable.

It's possible that support for other versions (Mac / Dreamcast / N64) will be added later. For now, the goal is to support the x86 Windows Version of the game.

Requirements

System

  • OpenGL 3.3 Core

Toolchain

Libraries

Getting Started

Read our "Getting Started" guide on the wiki to learn how to build and run OpenSWE1R.

Development

Development happens on GitHub at https://github.com/OpenSWE1R/openswe1r You can help by reviewing or submitting Pull-Requests.

If you want to contribute, you'll have to sign our Contributor License Agreement (CLA). The CLA allows us to easily switch to other licenses the FSF classifies as Free Software License and which are approved by the OSI as Open Source licenses, if the need should ever arise (more information).


© 2017 - 2018 OpenSWE1R Maintainers

Source code licensed under GPLv2 or any later version. Binaries which link against the default Unicorn-Engine backend must be licensed under GPLv2.

OpenSWE1R is not affiliated with, endorsed by, or sponsored by The Walt Disney Company, Twenty-First Century Fox, the games original developers, publishers or any of their affiliates or subsidiaries. All product and company names are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

Reverse engineering of the original software is done to achieve interoperability with other computing platforms. In the process, excerpts of the reverse engineered source code might be shown for educational purposes.

No copyright infringement is intended at any stage during development of OpenSWE1R.

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

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.

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 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

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).

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.

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)

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.

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.

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?)

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.

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.