Go to file
2021-02-12 00:06:54 +01:00
.github/workflows and a space 2021-02-03 20:26:59 +01:00
.vscode .vscode/settings: fix include path 2020-10-09 02:01:53 -04:00
cmake cmake: install files ready for copying in game folder 2021-01-11 11:24:25 +01:00
codewarrior cw: remove extras folder 2021-01-22 20:44:11 +01:00
gamefiles Use VEHICLE_FIREWEAPON in GXTs 2021-02-09 14:50:21 +02:00
src imrove readme; enable screenshots with F12 2021-02-12 00:06:54 +01:00
utils/gxt Use VEHICLE_FIREWEAPON in GXTs 2021-02-09 14:50:21 +02:00
vendor imrove readme; enable screenshots with F12 2021-02-12 00:06:54 +01:00
.clang-format Add basic clang format file 2020-12-08 18:38:49 +01:00
.gitattributes Add .gitattributes for better language stats 2020-09-23 16:08:35 +03:00
.gitignore make building with Codewarrior 7 possible 2021-01-21 03:18:15 +01:00
.gitmodules Move stuff to vendor 2020-08-14 14:22:50 +03:00
CMakeLists.txt Update CMakeLists.txt 2021-01-28 23:19:12 +01:00
CODING_STYLE.md Separate Coding Style out into its own Document, and mention it from the Readme. 2020-09-30 06:54:57 -04:00
conanfile.py Fix 2021-01-12 23:46:11 +01:00
logo.png Changed outline to black 2020-12-23 19:00:15 +02:00
logo.svg Changed outline to black 2020-12-23 19:00:15 +02:00
premake5.exe premake: add startrpoject; add lto option; fix copying of binary to gamedir; update premake5.exe 2021-01-10 20:55:40 +01:00
premake5.lua startproject now depends on librw 2021-02-10 18:46:54 +01:00
premake5Linux premake: add startrpoject; add lto option; fix copying of binary to gamedir; update premake5.exe 2021-01-10 20:55:40 +01:00
premake-vs2015.cmd
premake-vs2017.cmd
premake-vs2019.cmd
README.md imrove readme; enable screenshots with F12 2021-02-12 00:06:54 +01:00

re3 logo

Build Status

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

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

Mods that make changes to the code (dll/asi, CLEO, 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 executable to be moved there via post-build script.

Linux Premake

For Linux using premake, proceed: Building on Linux

Linux Conan

Obtain source code.

git clone https://github.com/GTAmodding/re3.git
cd re3
git submodule init
git submodule update --recursive

Install python and conan, and then run build.

conan export vendor/librw librw/master@
mkdir build
cd build
conan install .. re3/master@ -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
FreeBSD

For FreeBSD using premake, proceed: Building on FreeBSD

Windows

Assuming you have Visual Studio:

  • Clone the repo using the argument --recursive.
  • Run one of the premake-vsXXXX.cmd variants on root folder.
  • Open the project via Visual Studio

If you use 64-bit D3D9: We don't ship 64-bit Dx9 SDK. You need to download it from Microsoft if you don't have it(although it should come pre-installed after some Windows version)

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

There are various settings in config.h, you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across.

Did you notice librw? 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.

Contributing

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

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

License

We don't feel like we're in a position to give this code a license. If we were, it would be MIT licensed.