GTA III, Vice City
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 
Go to file
IlDucci 0ea483aafb [Miami] Minor pass of the Spanish translation
I wanted to do a full pass of the translation, but since I found out the issue with the opening exclamation mark in Pricedown and with the public announcement of re3/VC, I thought on importing some of the changes I'm planning to do right now.
 - Swapped all instances of an opening exclamation mark on strings that exclusively use the Pricedown font with a lowercase i to camouflage the fact.
 - Pasted a few strings from the current status of RE3's Spanish translation. These include mostly menus, but also include Donald Love's reference from GTA3 in Avery's Two Bit Hit mission (they were not in sync).
 - Added a few comments I used to know where I was. It's not all of them.
 - Other fixes and changes.
 - Lowercased some instances of non-RAE title uppercasing, like in the Colonel's name.
 - Who the heck thought "Sun Auto" was a "Solarium"?
 - Shortened "Invert First Person View" string, as it was touching the right-hand text.
4 years ago
.github/workflows add gamefiles and dlls to premake workflows 4 years ago
.vscode .vscode/settings: fix include path 4 years ago
cmake Cmake version for hash 4 years ago
codewarrior make building with Codewarrior 7 possible 4 years ago
gamefiles [Miami] Minor pass of the Spanish translation 4 years ago
src Merge pull request #1024 from IlDucci/miami 4 years ago
utils/gxt [Miami] Minor pass of the Spanish translation 4 years ago
vendor update librw 4 years ago
.clang-format Add basic clang format file 4 years ago
.gitattributes Add .gitattributes for better language stats 4 years ago
.gitignore Remove version text, add toggleable debug info(with commit hash!) 4 years ago
.gitmodules Move stuff to vendor 4 years ago
CMakeLists.txt Cmake version for hash 4 years ago
CODING_STYLE.md Separate Coding Style out into its own Document, and mention it from the Readme. 4 years ago
README.md optimize performance -> readme to-do 4 years ago
conanfile.py Port conan to miami 4 years ago
logo.png reVC logo 4 years ago
logo.svg reVC logo 4 years ago
premake-vs2015.cmd improvements (?) to premakefile 5 years ago
premake-vs2017.cmd improvements (?) to premakefile 5 years ago
premake-vs2019.cmd improvements (?) to premakefile 5 years ago
premake5.exe premake: add startrpoject; add lto option; fix copying of binary to gamedir; update premake5.exe 4 years ago
premake5.lua Fix sha1 on premake linux 4 years ago
premake5Linux premake: add startrpoject; add lto option; fix copying of binary to gamedir; update premake5.exe 4 years ago
printHash.bat Remove version text, add toggleable debug info(with commit hash!) 4 years ago
printHash.sh Fix sha1 on premake linux 4 years ago

README.md

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

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

How can I try it?

Screenshots

screen_ 1613087332 screen_ 1613086852 screen_ 1613086989 screen_ 1613087193

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 reVC.ini file instead of gta_vc.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)
  • Rendering
    • Widescreen support (properly scaled HUD, Menu and FOV)
    • PS2 MatFX (vehicle reflections)
    • PS2 alpha test (better rendering of transparency)
    • Xbox vehicle rendering
    • Xbox world lightmap rendering (needs Xbox map)
    • Xbox ped rim light
    • Xbox screen rain droplets
    • More customizable colourfilter
  • Menu
    • 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)
  • 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_VC_RE_DIR environment variable to GTA Vice City root folder if you want the executable to be moved there via post-build script.

Clone the repository with git clone --recursive -b miami https://github.com/GTAmodding/re3.git reVC. Then cd reVC 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/master@
mkdir build
cd build
conan install .. reVC/master@ -if build -o reVC:audio=openal -o librw:platform=gl3 -o librw:gl3_gfxlib=glfw --build missing -s reVC: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 2015/2017/2019:

  • Run one of the premake-vsXXXX.cmd variants on root folder.
  • Open build/reVC.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 --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.

reVC 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 reVC using the supplied codewarrior/reVC.mcp project - this requires the original RW34 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

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