In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch).

Related tags

Game re3
Overview

Intro

In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch).

It has been tested and works on Windows, Linux, MacOS and FreeBSD, on x86, amd64, arm and arm64.
Rendering is handled either by original RenderWare (D3D8) or the reimplementation librw (D3D9, OpenGL 2.1 or above, OpenGL ES 2.0 or above).
Audio is done with MSS (using dlls from original GTA) or OpenAL.

The project has also been ported to the Nintendo Switch, Playstation Vita and Nintendo Wii U.

We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in touch with us.

Installation

  • re3 requires PC game assets to work, so you must own a copy of GTA III (RIP).
  • Build re3
  • Extract the zip over your GTA 3 directory and run re3. The zip includes the binary, updated and additional gamefiles and in case of OpenAL the required dlls.

Screenshots

re3 2021-02-11 22-57-03-23 re3 2021-02-11 22-43-44-98 re3 2021-02-11 22-46-33-76 re3 2021-02-11 22-50-29-54

Improvements

We have implemented a number of changes and improvements to the original game. They can be configured in core/config.h. Some of them can be toggled at runtime, some cannot.

  • Fixed a lot of smaller and bigger bugs
  • User files (saves and settings) stored in GTA root directory
  • Settings stored in re3.ini file instead of gta3.set
  • Debug menu to do and change various things (Ctrl-M to open)
  • Debug camera (Ctrl-B to toggle)
  • Rotatable camera
  • XInput controller support (Windows)
  • No loading screens between islands ("map memory usage" in menu)
  • Skinned ped support (models from Xbox or Mobile)
  • Rendering
    • Widescreen support (properly scaled HUD, Menu and FOV)
    • PS2 MatFX (vehicle reflections)
    • PS2 alpha test (better rendering of transparency)
    • PS2 particles
    • Xbox vehicle rendering
    • Xbox world lightmap rendering (needs Xbox map)
    • Xbox ped rim light
    • Xbox screen rain droplets
    • More customizable colourfilter
  • Menu
    • Map
    • More options
    • Controller configuration menu
    • ...
  • Can load DFFs and TXDs from other platforms, possibly with a performance penalty
  • ...

To-Do

The following things would be nice to have/do:

  • Fix physics for high FPS
  • Improve performance on lower end devices, especially the OpenGL layer on the Raspberry Pi (if you have experience with this, please get in touch)
  • Compare code with PS2 code (tedious, no good decompiler)
  • PS2 port
  • Xbox port (not quite as important)
  • reverse remaining unused/debug functions
  • compare CodeWarrior build with original binary for more accurate code (very tedious)

Modding

Asset modifications (models, texture, handling, script, ...) should work the same way as with original GTA for the most part.

CLEO scripts work with CLEO Redux.

Mods that make changes to the code (dll/asi, limit adjusters) will not work. Some things these mods do are already implemented in re3 (much of SkyGFX, GInput, SilentPatch, Widescreen fix), others can easily be achieved (increasing limis, see config.h), others will simply have to be rewritten and integrated into the code directly. Sorry for the inconvenience.

Building from Source

When using premake, you may want to point GTA_III_RE_DIR environment variable to GTA3 root folder if you want the executable to be moved there via post-build script.

Clone the repository with git clone --recursive https://github.com/animeavi/re3.git. Then cd re3 into the cloned repository.

Linux Premake

For Linux using premake, proceed: Building on Linux

Linux Conan

Install python and conan, and then run build.

conan export vendor/librw librw/[email protected]
mkdir build
cd build
conan install .. re3/[email protected] -if build -o re3:audio=openal -o librw:platform=gl3 -o librw:gl3_gfxlib=glfw --build missing -s re3:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo
conan build .. -if build -bf build -pf package
MacOS Premake

For MacOS using premake, proceed: Building on MacOS

FreeBSD

For FreeBSD using premake, proceed: Building on FreeBSD

Windows

Assuming you have Visual Studio 2015/2017/2019:

  • Run one of the premake-vsXXXX.cmd variants on root folder.
  • Open build/re3.sln with Visual Studio and compile the solution.

Microsoft recently discontinued its downloads of the DX9 SDK. You can download an archived version here: https://archive.org/details/dxsdk_jun10

If you choose OpenAL on Windows You must read Running OpenAL build on Windows.

ℹ️ premake has an --with-lto option if you want the project to be compiled with Link Time Optimization.

ℹ️ There are various settings in config.h, you may want to take a look there.

ℹ️ re3 uses completely homebrew RenderWare-replacement rendering engine; librw. librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw.

If you feel the need, you can also use CodeWarrior 7 to compile re3 using the supplied codewarrior/re3.mcp project - this requires the original RW33 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference.

Contributing

As long as it's not linux/cross-platform skeleton/compatibility layer, all of the code on the repo that's not behind a preprocessor condition(like FIX_BUGS) are completely reversed code from original binaries.

We don't accept custom codes, as long as it's not wrapped via preprocessor conditions, or it's linux/cross-platform skeleton/compatibility layer.

We accept only these kinds of PRs;

  • A new feature that exists in at least one of the GTAs (if it wasn't in III/VC then it doesn't have to be decompilation)
  • Game, UI or UX bug fixes (if it's a fix to original code, it should be behind FIX_BUGS)
  • Platform-specific and/or unused code that's not been reversed yet
  • Makes reversed code more understandable/accurate, as in "which code would produce this assembly".
  • A new cross-platform skeleton/compatibility layer, or improvements to them
  • Translation fixes, for languages original game supported
  • Code that increase maintainability

We have a Coding Style document that isn't followed or enforced very well.

Do not use features from C++11 or later.

History

re3 was started sometime in the spring of 2018, initially as a way to test reversed collision and physics code inside the game. This was done by replacing single functions of the game with their reversed counterparts using a dll.

After a bit of work the project lay dormant for about a year and was picked up again and pushed to github in May 2019. At the time I (aap) had reversed around 10k lines of code and estimated the final game to have around 200-250k. Others quickly joined the effort (Fire_Head, shfil, erorcun and Nick007J in time order, and Serge a bit later) and we made very quick progress throughout the summer of 2019 after which the pace slowed down a bit.

Due to everyone staying home during the start of the Corona pandemic everybody had a lot of time to work on re3 again and we finally got a standalone exe in April 2020 (around 180k lines by then).

After the initial excitement and fixing and polishing the code further, reVC was started in early May 2020 by starting from re3 code, not by starting from scratch replacing functions with a dll. After a few months of mostly steady progress we considered reVC finished in December.

Since then we have started reLCS, which is currently work in progress.

License

We don't feel like we're in a position to give this code a license.
The code should only be used for educational, documentation and modding purposes.
We do not encourage piracy or commercial use.
Please keep derivate work open source and give proper credit.

Issues
  • Some things I've noticed while playing re3:

    Some things I've noticed while playing re3:

    1. When using black boxes for cutscenes, there is 1 pixel of space around the edges of the black box which through which the background scene can be seen through. So, the black boxes don't extend all the way to the edges of the screen.

    2. When looking at the map while driving in a car, the direction the player is facing isn't shown, and the player indicator direction is locked facing south.

    3. When sprinting across a downward slope, if the slope is angled enough (and it doesn't need to be too sloped), the player slingshots off of it and receives fall damage when they land on a surface - even if the surface they land on is only slightly lower than the slope they're slingshotted off of.

    4. When doing payphone missions that require NPCs to be dropped-off at Bitchin' Dog Food Factory, while dropping them off to complete the missions, the camera switches to cinematic mode (so the player can't move their car) and the NPCs can be blocked by the player's car and so can't enter the warehouse to complete the missions. A similar issue can happen in other missions, such as Cipriani's Chauffeur.

    5. It would be convenient if, when starting re3 for the first time, the controls were defaulted to something that utilises keyboard and mouse properly. For example, having 'shoot' set to 'left mouse button', having 'target' set to 'right mouse button', having the weapon select set to the mousewheel, having 'zoom in' and 'zoom out' set to 'q' and 'e'.

    6. It would likewise be convenient if, when starting re3 for the first time, the frame limiter graphics settings defaulted to being set to 'off'.

    opened by Delicieuxz 0
Owner
Zero
Zero
Engine being created for homeworks in UPC Master's Degree in Advanced Programming for AAA Video Games.

Strawhat Engine Strawhat Engine is a game engine under construction that has model loading and camera movement features along with an editor. Reposito

I. Baran Surucu 12 May 18, 2022
Simple Directmedia Layer, 1.2 branch ... ***DEPRECATED***, please use https://github.com/libsdl-org/SDL for new projects!

DEPRECATED The 1.2 branch of SDL is deprecated. While we occasionally collect fixes in revision control, there has not been a formal release since 201

Simple Directmedia Layer 37 Jun 2, 2022
🎮 Fully featured terminal version of the game

?? Fully featured terminal version of the game "2048" written in C++

Mihir Chaturvedi 2k Jul 3, 2022
A fully-featured Minecraft server startup script

A fully-featured Minecraft server startup script suite that offers a friendly user interface, blazing fast speeds, and wide compatibility.

null 75 Jun 21, 2022
A fully-featured Falling-Sand game in the browser - Powered by WebAssembly

PLOP A fully-featured Falling-Sand game powered by WebAssembly! Try it out here Building Required Dev-Dependencies: clang uglifyjs $ git clone https:/

Caltrop 44 Jun 27, 2022
Open-source repository of Orbiter Space Flight Simulator

Orbiter Space Flight Simulator Orbiter is a spaceflight simulator based on Newtonian mechanics. Its playground is our solar system with many of its ma

Orbiter Space Flight Simulator 1.3k Jul 1, 2022
Part copy from the Google Code repository by Shiru, part fork of SNES Game Sound System by Shiru

Part copy from the Google Code repository by Shiru, part fork of SNES Game Sound System by Shiru

null 4 Dec 10, 2021
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 79 Jun 27, 2022
My 3D game engine source code.

Rogy-Engine Development My 3D game engine source code. (NOT THE FINAL VERSION) Features: PBR shading and reflection probes with parallax correction. S

AlaX 92 Jun 18, 2022
Full source code for WarriOrb, a Dark-Souls like action platformer - using Unreal Engine 4

WarriOrb source code WarriOrb is a hardcore action platformer where you play as a demon who is trapped in an unlikely body. The game mixes the difficu

Not Yet 213 Jun 23, 2022
Rogy-Engine- - My 3D game engine source code.

Rogy-Engine Development My 3D game engine. (NOT THE FINAL VERSION- Windows only) Features: PBR shading and reflection probes with parallax correction.

AlaX 92 Jun 18, 2022
Source code for Game Physics Cookbook

Game Physics Cookbook Website Facebook Twitter This book is a comprehensive guide to the linear algebra and collision detection games commonly use, bu

Gabor Szauer 612 Jun 27, 2022
This is the source code for Serious Engine

Serious Sam Classic This is the source code for Serious Engine v.1.10, including the following projects: DedicatedServer Ecc The Entity Class Compiler

null 43 Jun 24, 2022
A repository of gate-level simulators and tools for the original Game Boy.

GateBoy is a gate-level simulation of the original Game Boy hardware that was reverse-engineered from die shots of the original DMG-01 chip.

null 968 Jun 15, 2022
This repository is about a school project about games with physics, written in C++.

Eight Ball Pool ?? A game about playing physics-based eight ball pool. ?? Table of Contents About Getting Started Usage Built Using About the creators

Valeri Ivanov 17 May 22, 2022
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

Panda3D Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for a

Panda3D 3.4k Jul 2, 2022
Source and data to build Sonic 3 A.I.R. (Angel Island Revisited) and the Oxygen Engine

Sonic 3 A.I.R. Source code incl. dependencies for "Sonic 3 - Angel Island Revisited", a fan-made remaster of Sonic 3 & Knuckles. Project homepage: htt

Eukaryot 110 Jun 23, 2022
Free, open-source, game engine and a 3D sandbox.

Work-in-Progress The official "early alpha" release should be available around April 2021 SGEEngine SGEEngine is an open source (MIT License), C++ cen

ongamex 65 Jun 13, 2022