You can sign up to get a daily email of our articles, see the Mailing List page!

It was only recently that we picked up the news of both GTA III and Vice City getting a fully working reverse engineered game engine, along with plenty of upgrades. Sadly, and expectedly, it got nuked from orbit.

Even though it required you to own the game assets, so you would have needed to purchase a copy of either to use the re3 and reVC game reimplementations that wasn't enough to satisfy Take-Two Interactive Software, Inc., the parent company of Rockstar Games. They've now given it the DMCA treatment, with the main repository and all known forks at the time to be taken offline on GitHub.

Sad but fully expected. Big publishers really don't like these sorts of projects, even though they can help revive their older games and perhaps even get them more sales. Copyright and Intellectual Property Rights are a legal minefield at the best of times, so the only way we may get this treatment in future is a fully clean-room reimplementation more like OpenMW for Morrowind or OpenRA for classic Westwood RTS games.

Perhaps now someone can pick up OpenRW again.

Article taken from GamingOnLinux.com.
Tags: Game Engine, Misc
24 Likes, Who?
We do often include affiliate links to earn us some pennies. We are currently affiliated with GOG and Humble Store. See more here.
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly came back to check on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly.
See more from me
51 comments
Page: «3/6»
  Go to:

F.Ultra 22 Feb
Quoting: slaapliedje
Quoting: mirvIf it was a clean-room implementation there wouldn't be as much of a problem, however this was reverse engineered directly from the binaries it seems. That's a bit more of an issue as far as countries with dmca style laws go.
There was a point in time where reverse engineering was perfectly legal. I'm not sure if it is at this point. But for the most part there has to be some form of being able to read the data files to be able to recreate the game, and the term reverse engineering could technically be pinned to that. Pretty sure they weren't full on creating the engine through such means, were they?

I think the 'brings more sales' argument is shot down by sales, as they'd rather sell you new games instead of people being able to buy cheap old games. Plus with it being opened, they're afraid new content will be created for the old games, again hampering sales of new games.

Basically anti-consumer, pro-company thoughts.

Depends on if there are clauses against reverse engineering in the EULA of the original game since it was declared in [https://en.wikipedia.org/wiki/Bowers_v._Baystate_Technologies,_Inc.](https://en.wikipedia.org/wiki/Bowers_v._Baystate_Technologies,_Inc.) that such an EULA override the copyright law that expressly permits reverse engineering. However it has also to be said that Baystate did sell a competing application to Bowers and reverse engineered Bowers application to add new features to their own so that case is not 100% comparable with this situation.

However defending your position in court even if you are 100% sure that you will win is extremely expensive in the US so many smaller entities will not defend themselves even when they are in the right paving the way for big corporations to bully their way through the court system.
popsulfr 22 Feb
Quoting: scratchiNice! I want to give it a try now, can you zip up the code and upload it somewhere? Please help :)
You should be able to find a mirror of the repo by searching a bit. I already had it pulled from github before the takedown. Checkout the correct branch if you want to build for Vice City or 3.

This is on Manjaro KDE with Wayland.

At the root level I had to apply:

 diff --git a/premake5.lua b/premake5.lua
index 531f92ea..987e72b3 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -354,7 +354,7 @@ project "reVC"
 
  if _OPTIONS["with-opus"] then
  filter {}
- links { "libogg" }
+ links { "ogg" }
  links { "opus" }
  links { "opusfile" }
  end


libogg is wrong.

In vendor/librw apply:

diff --git a/src/gl/gl3device.cpp b/src/gl/gl3device.cpp
index b1036c0..5184e17 100644
--- a/src/gl/gl3device.cpp
+++ b/src/gl/gl3device.cpp
@@ -1689,8 +1689,8 @@ static struct {
  int gl;
  int major, minor;
 } profiles[] = {
- { GLFW_OPENGL_API, 3, 3 },
- { GLFW_OPENGL_API, 2, 1 },
+ //{ GLFW_OPENGL_API, 3, 3 },
+ //{ GLFW_OPENGL_API, 2, 1 },
  { GLFW_OPENGL_ES_API, 3, 1 },
  { GLFW_OPENGL_ES_API, 2, 0 },
  { 0, 0, 0 },


To force GLES selection.

I compile it like this:
premake5 --with-librw --with-opus --lto gmake2
cd build
// export your compiler flags like MAKEFLAGS=-j5
make verbose=1 O=. config=release_linux-arm64-librw_gl3_glfw-oal


The binary will be at the root level in bin/ and copy the content of gamefiles/ over your game directory.

I have an overclock for the pi 400:
arm_freq=2100
gpu_freq=750
v3d_freq=750
over_voltage=6

Also using the pure kms driver:
dtoverlay=vc4-kms-v3d-pi4

If I find some time I'd like to figure out how to force the use of wayland instead of xorg (using glfw for wayland). There's a small part that depends on X11 input constants which should be replaceable. Wondering if it would help performance.


Last edited by popsulfr on 22 February 2021 at 4:35 pm UTC
scratchi 3 years 22 Feb
Quoting: popsulfrYou should be able to find a mirror of the repo by searching a bit. I already had it pulled from github before the takedown. Checkout the correct branch if you want to build for Vice City or 3.

This is on Manjaro KDE with Wayland.

At the root level I had to apply:

 diff --git a/premake5.lua b/premake5.lua
index 531f92ea..987e72b3 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -354,7 +354,7 @@ project "reVC"
 
  if _OPTIONS["with-opus"] then
  filter {}
- links { "libogg" }
+ links { "ogg" }
  links { "opus" }
  links { "opusfile" }
  end


libogg is wrong.

In vendor/librw apply:

diff --git a/src/gl/gl3device.cpp b/src/gl/gl3device.cpp
index b1036c0..5184e17 100644
--- a/src/gl/gl3device.cpp
+++ b/src/gl/gl3device.cpp
@@ -1689,8 +1689,8 @@ static struct {
  int gl;
  int major, minor;
 } profiles[] = {
- { GLFW_OPENGL_API, 3, 3 },
- { GLFW_OPENGL_API, 2, 1 },
+ //{ GLFW_OPENGL_API, 3, 3 },
+ //{ GLFW_OPENGL_API, 2, 1 },
  { GLFW_OPENGL_ES_API, 3, 1 },
  { GLFW_OPENGL_ES_API, 2, 0 },
  { 0, 0, 0 },


To force GLES selection.

I compile it like this:
premake5 --with-librw --with-opus --lto gmake2
cd build
// export your compiler flags like MAKEFLAGS=-j5
make verbose=1 O=. config=release_linux-arm64-librw_gl3_glfw-oal


The binary will be at the root level in bin/ and copy the content of gamefiles/ over your game directory.

I have an overclock for the pi 400:
arm_freq=2100
gpu_freq=750
v3d_freq=750
over_voltage=6

Also using the pure kms driver:
dtoverlay=vc4-kms-v3d-pi4


Awesome, thank you!
mirv 22 Feb
View PC info
  • Supporter Plus
Just a recommendation....if it's code currently in a legally dubious position, perhaps do that via somewhere else other than highly visible on GOL. Not that I recommend doing it at all, of course.
Pangaea 22 Feb
Corporations being evil thunder**** non-shocker.
I'd promise to not buy any more of their games but with the DRM they load them with these days I had already done that years ago.
lqe5433 22 Feb
After some review, they can't put it back on?
slaapliedje 22 Feb
View PC info
  • Supporter Plus
Quoting: PangaeaCorporations being evil thunder**** non-shocker.
Ha, one of the reasons I enjoy this page a bit more than others is that there isn't a language filter. Sure, there are some people who overly use such colorful words, but occasionally it just needs to be said unfiltered, and I believe this is one of those times.
Cyril 22 Feb
Ah I hate that kind of moment, but I love it too when I see the community cloning everything everywhere.
Fuckers.
dpanter 22 Feb
I saw these "I saw this coming a mile away" comments coming a mile away, and I don't even use imperial units.
While you're here, please consider supporting GamingOnLinux on:

Patreon, Liberapay or PayPal Donation.

We have no adverts, no paywalls, no timed exclusive articles. Just good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register

Or login with...
Sign in with Steam Sign in with Twitter Sign in with Google
Social logins require cookies to stay logged in.

Livestreams & Videos
Community Livestreams
Latest Forum Posts