Giter Site home page Giter Site logo

re3's Introduction

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

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

re3's People

Stargazers

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

re3's Issues

[macOS] [Arm] [Miami Branch] Screen cut in half or Mouse not working

Describe the bug
When starting reVC with default rescaled desktop resolution 2560x1440 the screen is cut in half. When starting with 1080p or 4k resolution the screen is fine, but the mouse doesn't work in menus and ingame.

To Reproduce
You need a current MacOS with atleast one native 4K screen downscaled to 2560x1440

Expected behavior
Screen is not cut in half or if a custom resolution is needed: a working mouse :)

Version
reVC Branch commit: [a16fcd8]

RE3 Assert Failed m_numCarPathLinks <= NUM_CARPATHLINKS

Hello

I am able to launch the game fine and get into the main menu and navigate.
However whenever I start a game, the below assertion is thrown then crashes to desktop.

PreparePathData

RE3 ASSERT FAILED
File: ../src/control/PathFind.cpp
Line: 782
Function: PreparePathDataForType
Expression: m_numCarPathLinks <= NUM_CARPATHLINKS

I am running the Linux build on arch linux.

Thank you

Unable to build on intel macOS

OS : Intel macOS 12.7

Describe the bug
Prebuild re3 works perfectly but reVC is not working. #23
I wanted to fix it but I can't build either re3 or reVC on macOS.

Error occurs when ld is trying to link librw (this file especially: ../vendor/librw/lib/macosx-amd64-librw_gl3_glfw-oal/Debug/librw.a)
ld is telling me the lib was not built for x86_64:
unknown-unsupported file format (0x21 0x3C 0x61 0x72 0x63 0x68 0x3E 0x0A 0x2F 0x20 0x20 0x20 0x20 0x20 0x20 0x20)

I don't know but I suggest it can be due to premake5 & make that building librw for mac arm instead of intel... ?

I also tried to build librw separately but have issues like @halpz had about 'RWDEVICE' so I'm stuck. aap/librw#58

Version
latest miami branch

==== Building reVC (debug_macosx-amd64-librw_gl3_glfw-oal) ====
Running prebuild commands
"./../printHash.sh" "./../src/extras/GitSHA1.cpp"
GitSHA1.cpp
Linking reVC
ld: warning: directory not found for option '-L/usr/local/opt/openal-soft/lib'
ld: warning: ignoring file ../vendor/librw/lib/macosx-amd64-librw_gl3_glfw-oal/Debug/librw.a, building for macOS-x86_64 but attempting to link with file built for unknown-unsupported file format ( 0x21 0x3C 0x61 0x72 0x63 0x68 0x3E 0x0A 0x2F 0x20 0x20 0x20 0x20 0x20 0x20 0x20 )
Undefined symbols for architecture x86_64:
  "_GLAD_GL_KHR_debug", referenced from:
      PushRendergroup(char const*) in RwHelper.o
      PopRendergroup() in RwHelper.o
  "rw::FrameList_::streamRead(rw::Stream*)", referenced from:
      rwFrameListStreamRead(rw::Stream*, rw::FrameList_*) in fake.o
  "rw::PluginList::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int))", referenced from:
      rw::Material::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in custompipes.o
      rw::Frame::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in fake.o
      rw::Clump::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in fake.o
      rw::Atomic::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in fake.o
  "rw::PluginList::registerStream(unsigned int, rw::Stream* (*)(rw::Stream*, int, void*, int, int), rw::Stream* (*)(rw::Stream*, int, void*, int, int), int (*)(void*, int, int))", referenced from:
      rw::Frame::registerPluginStream(unsigned int, rw::Stream* (*)(rw::Stream*, int, void*, int, int), rw::Stream* (*)(rw::Stream*, int, void*, int, int), int (*)(void*, int, int)) in fake.o
      rw::Clump::registerPluginStream(unsigned int, rw::Stream* (*)(rw::Stream*, int, void*, int, int), rw::Stream* (*)(rw::Stream*, int, void*, int, int), int (*)(void*, int, int)) in fake.o
  "rw::StreamFile::open(char const*, char const*)", referenced from:
      RwStreamOpen(RwStreamType, RwStreamAccessType, void const*) in fake.o
  "rw::ObjPipeline::destroy()", referenced from:
      CustomPipes::DestroyVehiclePipe() in custompipes_gl.o
      CustomPipes::DestroyWorldPipe() in custompipes_gl.o
      CustomPipes::DestroyGlossPipe() in custompipes_gl.o
      CustomPipes::DestroyRimLightPipes() in custompipes_gl.o
  "rw::skinGlobals", referenced from:
      attachPipe(rw::Atomic*) in RwHelper.o
      switchPipes(rw::Atomic*, int) in RwHelper.o
      rw::Skin::get(rw::Geometry const*) in custompipes.o
      rw::Skin::get(rw::Geometry const*) in fake.o
      rw::Skin::setHierarchy(rw::Atomic*, rw::HAnimHierarchy*) in fake.o
      rw::Skin::getHierarchy(rw::Atomic const*) in fake.o
  "rw::MaterialList::appendMaterial(rw::Material*)", referenced from:
      RpGeometryTriangleSetMaterial(rw::Geometry*, rw::Triangle*, rw::Material*) in fake.o
  "rw::MaterialList::findIndex(rw::Material*)", referenced from:
      RpGeometryTriangleSetMaterial(rw::Geometry*, rw::Triangle*, rw::Material*) in fake.o
  "rw::StreamMemory::open(unsigned char*, unsigned int, unsigned int)", referenced from:
      RwStreamOpen(RwStreamType, RwStreamAccessType, void const*) in fake.o
  "rw::matFXGlobals", referenced from:
      switchPipes(rw::Atomic*, int) in RwHelper.o
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
  "rw::TexDictionary::getCurrent()", referenced from:
      RwTexDictionaryGetCurrent() in fake.o
  "rw::TexDictionary::setCurrent(rw::TexDictionary*)", referenced from:
      RwTexDictionarySetCurrent(rw::TexDictionary*) in fake.o
  "rw::TexDictionary::streamWrite(rw::Stream*)", referenced from:
      RwTexDictionaryStreamWrite(rw::TexDictionary const*, rw::Stream*) in fake.o
  "rw::TexDictionary::find(char const*)", referenced from:
      CustomPipes::GetGlossTex(rw::Material*) in custompipes.o
      CustomPipes::EnvMapInit() in custompipes.o
      CustomPipes::customFindCB(char const*) in custompipes.o
      RwTexDictionaryFindNamedTexture(rw::TexDictionary*, char const*) in fake.o
  "rw::TexDictionary::create()", referenced from:
      RwTexDictionaryCreate() in fake.o
  "rw::TexDictionary::destroy()", referenced from:
      CustomPipes::CustomPipeShutdown() in custompipes.o
      RwTexDictionaryDestroy(rw::TexDictionary*) in fake.o
  "rw::TexDictionary::addFront(rw::Texture*)", referenced from:
      RwTexDictionaryAddTexture(rw::TexDictionary*, rw::Texture*) in fake.o
  "rw::allocLocation", referenced from:
      rw::mustmalloc_LOC(unsigned long, unsigned int, char const*) in fake.o
  "rw::GetRenderState(int)", referenced from:
      SetAlphaTest(unsigned int) in RwHelper.o
      RwRenderStateGet(RwRenderState, void*) in fake.o
  "rw::HAnimHierarchy::updateMatrices()", referenced from:
      RpHAnimHierarchyUpdateMatrices(rw::HAnimHierarchy*) in fake.o
  "rw::HAnimHierarchy::get(rw::Frame*)", referenced from:
      RpHAnimFrameGetHierarchy(rw::Frame*) in fake.o
  "rw::HAnimHierarchy::getIndex(int)", referenced from:
      RpHAnimIDGetIndex(rw::HAnimHierarchy*, int) in fake.o
  "rw::SetRenderState(int, unsigned int)", referenced from:
      CMBlur::OverlayRenderFx(rw::Camera*, rw::Raster*) in MBlur.o
      SetStencilState(int) in Renderer.o
      DefinedState() in RwHelper.o
      SetAlphaTest(unsigned int) in RwHelper.o
      RestoreAlphaTest() in RwHelper.o
      CustomPipes::EnvMapRender() in custompipes.o
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      ...
  "rw::AnimInterpolator::setCurrentAnim(rw::Animation*)", referenced from:
      RpHAnimHierarchySetCurrentAnim(rw::HAnimHierarchy*, rw::Animation*) in fake.o
  "rw::AnimInterpolator::addTime(float)", referenced from:
      RpHAnimHierarchyAddAnimTime(rw::HAnimHierarchy*, float) in fake.o
  "rw::GetRenderStatePtr(int)", referenced from:
      RwRenderStateGet(RwRenderState, void*) in fake.o
  "rw::SetRenderStatePtr(int, void*)", referenced from:
      CustomPipes::EnvMapRender() in custompipes.o
      RwRenderStateSet(RwRenderState, void*) in fake.o
  "rw::registerMeshPlugin()", referenced from:
      RpWorldPluginAttach() in fake.o
  "rw::registerSkinPlugin()", referenced from:
      RpSkinPluginAttach() in fake.o
  "rw::registerHAnimPlugin()", referenced from:
      RpHAnimPluginAttach() in fake.o
  "rw::registerMatFXPlugin()", referenced from:
      RpMatFXPluginAttach() in fake.o
  "rw::AnimInterpolatorInfo::find(int)", referenced from:
      RpHAnimAnimationCreate(int, int, int, float) in fake.o
  "rw::registerAnisotropyPlugin()", referenced from:
      RpAnisotPluginAttach() in fake.o
  "rw::registerNativeDataPlugin()", referenced from:
      RpWorldPluginAttach() in fake.o
  "rw::registerAtomicRightsPlugin()", referenced from:
      RpWorldPluginAttach() in fake.o
  "rw::getMaxSupportedMaxAnisotropy()", referenced from:
      RpAnisotGetMaxSupportedMaxAnisotropy() in fake.o
  "rw::registerMaterialRightsPlugin()", referenced from:
      RpWorldPluginAttach() in fake.o
  "rw::V3d::transformPoints(rw::V3d*, rw::V3d const*, int, rw::Matrix const*)", referenced from:
      RwV3dTransformPoints(rw::V3d*, rw::V3d const*, int, rw::Matrix const*) in fake.o
  "rw::d3d::isP8supported", referenced from:
      RwEngineStart() in fake.o
  "rw::gl3::flushCache()", referenced from:
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "rw::gl3::lightingCB(rw::Atomic*)", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
  "rw::gl3::setTexture(int, rw::Texture*)", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
      ...
  "rw::gl3::setUniform(int, void*)", referenced from:
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "rw::gl3::shaderDecl", referenced from:
      CustomPipes::CreateVehiclePipe() in custompipes_gl.o
      CustomPipes::CreateWorldPipe() in custompipes_gl.o
      CustomPipes::CreateGlossPipe() in custompipes_gl.o
      CustomPipes::CreateRimLightPipes() in custompipes_gl.o
      CPostFX::Open(rw::Camera*) in postfx.o
      ScreenDroplets::InitDraw() in screendroplets.o
  "rw::gl3::ObjPipeline::create()", referenced from:
      CustomPipes::CreateVehiclePipe() in custompipes_gl.o
      CustomPipes::CreateWorldPipe() in custompipes_gl.o
      CustomPipes::CreateGlossPipe() in custompipes_gl.o
      CustomPipes::CreateRimLightPipes() in custompipes_gl.o
  "rw::gl3::setMaterial(rw::RGBA const&, rw::SurfaceProperties const&, float)", referenced from:
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      rw::gl3::setMaterial(unsigned int, rw::RGBA const&, rw::SurfaceProperties const&, float) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
  "rw::gl3::skinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*)", referenced from:
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
  "rw::gl3::currentShader", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::uploadSpecLights() in custompipes_gl.o
      CustomPipes::uploadRimData(bool) in custompipes_gl.o
  "rw::gl3::defaultShader", referenced from:
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
  "rw::gl3::setWorldMatrix(rw::Matrix*)", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
  "rw::gl3::skinInstanceCB(rw::Geometry*, rw::gl3::InstanceDataHeader*, int)", referenced from:
      CustomPipes::CreateRimLightPipes() in custompipes_gl.o
  "rw::gl3::defaultRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*)", referenced from:
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
  "rw::gl3::header_frag_src", referenced from:
      CustomPipes::CreateVehiclePipe() in custompipes_gl.o
      CustomPipes::CreateWorldPipe() in custompipes_gl.o
      CustomPipes::CreateGlossPipe() in custompipes_gl.o
      CustomPipes::CreateRimLightPipes() in custompipes_gl.o
      CPostFX::Open(rw::Camera*) in postfx.o
      ScreenDroplets::InitDraw() in screendroplets.o
  "rw::gl3::header_vert_src", referenced from:
      CustomPipes::CreateVehiclePipe() in custompipes_gl.o
      CustomPipes::CreateWorldPipe() in custompipes_gl.o
      CustomPipes::CreateGlossPipe() in custompipes_gl.o
      CustomPipes::CreateRimLightPipes() in custompipes_gl.o
      CPostFX::Open(rw::Camera*) in postfx.o
      ScreenDroplets::InitDraw() in screendroplets.o
  "rw::gl3::registerUniform(char const*, rw::gl3::UniformType, int)", referenced from:
      CustomPipes::CustomPipeRegisterGL() in custompipes_gl.o
      CPostFX::InitOnce() in postfx.o
      openim2d_uv2() in screendroplets.o
  "rw::gl3::setupVertexInput(rw::gl3::InstanceDataHeader*)", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
      ...
  "rw::gl3::defaultInstanceCB(rw::Geometry*, rw::gl3::InstanceDataHeader*, int)", referenced from:
      CustomPipes::CreateVehiclePipe() in custompipes_gl.o
      CustomPipes::CreateWorldPipe() in custompipes_gl.o
      CustomPipes::CreateGlossPipe() in custompipes_gl.o
      CustomPipes::CreateRimLightPipes() in custompipes_gl.o
  "rw::gl3::setAttribPointers(rw::gl3::AttribDesc*, int)", referenced from:
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "rw::gl3::im2dOverrideShader", referenced from:
      CPostFX::RenderOverlayShader(rw::Camera*, int, int, int, int) in postfx.o
      ScreenDroplets::Render() in screendroplets.o
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "rw::gl3::nativeRasterOffset", referenced from:
      WorldRender::IsTextureTransparent(rw::Texture*) in custompipes_gl.o
  "rw::gl3::uploadSkinMatrices(rw::Atomic*)", referenced from:
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
  "rw::gl3::teardownVertexInput(rw::gl3::InstanceDataHeader*)", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
      ...
  "rw::gl3::disableAttribPointers(rw::gl3::AttribDesc*, int)", referenced from:
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "rw::gl3::needToReadBackTextures", referenced from:
      CreateTxdImageForVideoCard() in TexRead.o
  "rw::gl3::Shader::use()", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
      ...
  "rw::gl3::Shader::create(char const**, char const**)", referenced from:
      CustomPipes::CreateVehiclePipe() in custompipes_gl.o
      CustomPipes::CreateWorldPipe() in custompipes_gl.o
      CustomPipes::CreateGlossPipe() in custompipes_gl.o
      CustomPipes::CreateRimLightPipes() in custompipes_gl.o
      CPostFX::Open(rw::Camera*) in postfx.o
      ScreenDroplets::InitDraw() in screendroplets.o
  "rw::gl3::Shader::destroy()", referenced from:
      CustomPipes::DestroyVehiclePipe() in custompipes_gl.o
      CustomPipes::DestroyWorldPipe() in custompipes_gl.o
      CustomPipes::DestroyGlossPipe() in custompipes_gl.o
      CustomPipes::DestroyRimLightPipes() in custompipes_gl.o
      CPostFX::Close() in postfx.o
      ScreenDroplets::Shutdown() in screendroplets.o
  "rw::gl3::gl3Caps", referenced from:
      GetGPUcaps(GPUcaps*) in TexRead.o
  "rw::gl3::drawInst(rw::gl3::InstanceDataHeader*, rw::gl3::InstanceData*)", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
      ...
  "rw::gl3::setLights(rw::WorldLights*)", referenced from:
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::RenderBlendPass(int) in custompipes_gl.o
  "rw::Quat::rotate(rw::V3d const*, float, rw::CombineOp)", referenced from:
      RtQuatRotate(RtQuat*, rw::V3d const*, float, RwOpCombineType) in fake.o
  "rw::im2d::RenderLine(void*, int, int, int)", referenced from:
      RwIm2DRenderLine(rw::gl3::Im2DVertex*, int, int, int) in fake.o
  "rw::im2d::RenderTriangle(void*, int, int, int, int)", referenced from:
      RwIm2DRenderTriangle(rw::gl3::Im2DVertex*, int, int, int, int) in fake.o
  "rw::im2d::RenderPrimitive(rw::PrimitiveType, void*, int)", referenced from:
      RwIm2DRenderPrimitive(RwPrimitiveType, rw::gl3::Im2DVertex*, int) in fake.o
  "rw::im2d::RenderIndexedPrimitive(rw::PrimitiveType, void*, int, void*, int)", referenced from:
      CustomPipes::EnvMapRender() in custompipes.o
      RwIm2DRenderIndexedPrimitive(RwPrimitiveType, rw::gl3::Im2DVertex*, int, unsigned short*, int) in fake.o
  "rw::im2d::GetFarZ()", referenced from:
      RwIm2DGetFarScreenZ() in fake.o
  "rw::im2d::GetNearZ()", referenced from:
      RwIm2DGetNearScreenZ() in fake.o
  "rw::im3d::RenderIndexedPrimitive(rw::PrimitiveType, void*, int)", referenced from:
      RwIm3DRenderLine(int, int) in fake.o
      RwIm3DRenderIndexedPrimitive(RwPrimitiveType, unsigned short*, int) in fake.o
  "rw::im3d::End()", referenced from:
      RwIm3DEnd() in fake.o
  "rw::im3d::Transform(void*, int, rw::Matrix*, unsigned int)", referenced from:
      RwIm3DTransform(rw::gl3::Im3DVertex*, unsigned int, rw::Matrix*, unsigned int) in fake.o
  "rw::xbox::registerVertexFormatPlugin()", referenced from:
      RpWorldPluginAttach() in fake.o
  "rw::Clump::streamRead(rw::Stream*)", referenced from:
      RpClumpStreamRead(rw::Stream*) in fake.o
  "rw::Clump::removeAtomic(rw::Atomic*)", referenced from:
      RpClumpRemoveAtomic(rw::Clump*, rw::Atomic*) in fake.o
  "rw::Clump::clone()", referenced from:
      RpClumpClone(rw::Clump*) in fake.o
  "rw::Clump::create()", referenced from:
      RpClumpCreate() in fake.o
  "rw::Clump::render()", referenced from:
      RpClumpRender(rw::Clump*) in fake.o
  "rw::Clump::destroy()", referenced from:
      RpClumpDestroy(rw::Clump*) in fake.o
  "rw::Clump::addAtomic(rw::Atomic*)", referenced from:
      RpClumpAddAtomic(rw::Clump*, rw::Atomic*) in fake.o
  "rw::Clump::s_plglist", referenced from:
      rw::Clump::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in fake.o
      rw::Clump::registerPluginStream(unsigned int, rw::Stream* (*)(rw::Stream*, int, void*, int, int), rw::Stream* (*)(rw::Stream*, int, void*, int, int), int (*)(void*, int, int)) in fake.o
  "rw::Frame::removeChild()", referenced from:
      RwFrameRemoveChild(rw::Frame*) in fake.o
  "rw::Frame::updateObjects()", referenced from:
      rw::ObjectWithFrame::setFrame(rw::Frame*) in custompipes.o
      RwFrameSetIdentity(rw::Frame*) in fake.o
      RwFrameUpdateObjects(rw::Frame*) in fake.o
      rw::ObjectWithFrame::setFrame(rw::Frame*) in fake.o
  "rw::Frame::forAllChildren(rw::Frame* (*)(rw::Frame*, void*), void*)", referenced from:
      RwFrameForAllChildren(rw::Frame*, rw::Frame* (*)(rw::Frame*, void*), void*) in fake.o
  "rw::Frame::scale(rw::V3d const*, rw::CombineOp)", referenced from:
      RwFrameScale(rw::Frame*, rw::V3d const*, RwOpCombineType) in fake.o
  "rw::Frame::create()", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RwFrameCreate() in fake.o
  "rw::Frame::getLTM()", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::rimSkinRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::AtomicFullyTransparent(rw::Atomic*, int, int) in custompipes_gl.o
      ...
  "rw::Frame::rotate(rw::V3d const*, float, rw::CombineOp)", referenced from:
      RwFrameRotate(rw::Frame*, rw::V3d const*, float, RwOpCombineType) in fake.o
  "rw::Frame::destroy()", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      CustomPipes::DestroyCam(rw::Camera*) in custompipes.o
      RwFrameDestroy(rw::Frame*) in fake.o
  "rw::Frame::addChild(rw::Frame*, int)", referenced from:
      RwFrameAddChild(rw::Frame*, rw::Frame*) in fake.o
  "rw::Frame::s_plglist", referenced from:
      rw::Frame::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in fake.o
      rw::Frame::registerPluginStream(unsigned int, rw::Stream* (*)(rw::Stream*, int, void*, int, int), rw::Stream* (*)(rw::Stream*, int, void*, int, int), int (*)(void*, int, int)) in fake.o
  "rw::Frame::transform(rw::Matrix const*, rw::CombineOp)", referenced from:
      CustomPipes::EnvMapRender() in custompipes.o
      RwFrameTransform(rw::Frame*, rw::Matrix const*, RwOpCombineType) in fake.o
  "rw::Frame::translate(rw::V3d const*, rw::CombineOp)", referenced from:
      RwFrameTranslate(rw::Frame*, rw::V3d const*, RwOpCombineType) in fake.o
  "rw::Image::removeMask()", referenced from:
      _psGrabScreen in glfw.o
  "rw::Image::setSearchPath(char const*)", referenced from:
      RwImageSetPath(char const*) in fake.o
  "rw::Image::free()", referenced from:
      RwImageFreePixels(rw::Image*) in fake.o
  "rw::Image::create(int, int, int)", referenced from:
      RwImageCreate(int, int, int) in fake.o
  "rw::Image::destroy()", referenced from:
      RwImageDestroy(rw::Image*) in fake.o
  "rw::Image::allocate()", referenced from:
      RwImageAllocatePixels(rw::Image*) in fake.o
  "rw::Light::create(int)", referenced from:
      RpLightCreate(int) in fake.o
  "rw::Light::destroy()", referenced from:
      RpLightDestroy(rw::Light*) in fake.o
  "rw::Light::setColor(float, float, float)", referenced from:
      RpLightSetColor(rw::Light*, rw::RGBAf const*) in fake.o
  "rw::MatFX::getEffects(rw::Material const*)", referenced from:
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      RpMatFXMaterialGetEffects(rw::Material const*) in fake.o
  "rw::MatFX::setEffects(rw::Material*, unsigned int)", referenced from:
      RpMatFXMaterialSetEffects(rw::Material*, RpMatFXMaterialFlags) in fake.o
  "rw::MatFX::envMapColor", referenced from:
      CGame::InitialiseRenderWare() in Game.o
  "rw::MatFX::envMapFlipU", referenced from:
      CGame::InitialiseRenderWare() in Game.o
      DebugMenuPopulate() in re3.o
  "rw::MatFX::setEnvFrame(rw::Frame*)", referenced from:
      RpMatFXMaterialSetupEnvMap(rw::Material*, rw::Texture*, rw::Frame*, int, float) in fake.o
      RpMatFXMaterialSetEnvMapFrame(rw::Material*, rw::Frame*) in fake.o
  "rw::MatFX::enableEffects(rw::Atomic*)", referenced from:
      RpMatFXAtomicEnableEffects(rw::Atomic*) in fake.o
  "rw::MatFX::setEnvFBAlpha(int)", referenced from:
      RpMatFXMaterialSetEnvMapFrameBufferAlpha(rw::Material*, int) in fake.o
  "rw::MatFX::setEnvTexture(rw::Texture*)", referenced from:
      RpMatFXMaterialSetupEnvMap(rw::Material*, rw::Texture*, rw::Frame*, int, float) in fake.o
  "rw::MatFX::getDualTexture()", referenced from:
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
  "rw::MatFX::envMapApplyLight", referenced from:
      CGame::InitialiseRenderWare() in Game.o
      DebugMenuPopulate() in re3.o
  "rw::MatFX::envMapUseMatColor", referenced from:
      CGame::InitialiseRenderWare() in Game.o
      DebugMenuPopulate() in re3.o
  "rw::MatFX::getEnvCoefficient()", referenced from:
      RpMatFXMaterialGetEnvMapCoefficient(rw::Material const*) in fake.o
  "rw::MatFX::setEnvCoefficient(float)", referenced from:
      RpMatFXMaterialSetupEnvMap(rw::Material*, rw::Texture*, rw::Frame*, int, float) in fake.o
      RpMatFXMaterialSetEnvMapCoefficient(rw::Material*, float) in fake.o
  "rw::MatFX::get(rw::Material const*)", referenced from:
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      RpMatFXMaterialSetupEnvMap(rw::Material*, rw::Texture*, rw::Frame*, int, float) in fake.o
      RpMatFXMaterialSetEnvMapFrame(rw::Material*, rw::Frame*) in fake.o
      RpMatFXMaterialSetEnvMapFrameBufferAlpha(rw::Material*, int) in fake.o
      RpMatFXMaterialSetEnvMapCoefficient(rw::Material*, float) in fake.o
      RpMatFXMaterialGetEnvMapCoefficient(rw::Material const*) in fake.o
  "rw::World::removeLight(rw::Light*)", referenced from:
      RpWorldRemoveLight(rw::World*, rw::Light*) in fake.o
  "rw::World::removeCamera(rw::Camera*)", referenced from:
      CustomPipes::DestroyCam(rw::Camera*) in custompipes.o
      RpWorldRemoveCamera(rw::World*, rw::Camera*) in fake.o
  "rw::World::create(rw::BBox*)", referenced from:
      RpWorldCreate(rw::BBox*) in fake.o
  "rw::World::destroy()", referenced from:
      RpWorldDestroy(rw::World*) in fake.o
  "rw::World::addLight(rw::Light*)", referenced from:
      RpWorldAddLight(rw::World*, rw::Light*) in fake.o
  "rw::World::addCamera(rw::Camera*)", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RpWorldAddCamera(rw::World*, rw::Camera*) in fake.o
  "rw::Atomic::uninstance()", referenced from:
      ConvertPlatformAtomic(rw::Atomic*, void*) in RwHelper.o
  "rw::Atomic::getPipeline()", referenced from:
      WorldRender::AtomicFirstPass(rw::Atomic*, int) in custompipes_gl.o
      WorldRender::AtomicFullyTransparent(rw::Atomic*, int, int) in custompipes_gl.o
  "rw::Atomic::setGeometry(rw::Geometry*, unsigned int)", referenced from:
      RpAtomicSetGeometry(rw::Atomic*, rw::Geometry*, unsigned int) in fake.o
  "rw::Atomic::defaultRenderCB(rw::Atomic*)", referenced from:
      rw::Atomic::setRenderCB(void (*)(rw::Atomic*)) in fake.o
      AtomicDefaultRenderCallBack(rw::Atomic*) in fake.o
  "rw::Atomic::clone()", referenced from:
      RpAtomicClone(rw::Atomic*) in fake.o
  "rw::Atomic::create()", referenced from:
      RpAtomicCreate() in fake.o
  "rw::Atomic::destroy()", referenced from:
      RpAtomicDestroy(rw::Atomic*) in fake.o
  "rw::Atomic::s_plglist", referenced from:
      rw::Atomic::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in fake.o
  "rw::Camera::showRaster(unsigned int)", referenced from:
      RwCameraShowRaster(rw::Camera*, void*, unsigned int) in fake.o
  "rw::Camera::setFarPlane(float)", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RwCameraSetFarClipPlane(rw::Camera*, float) in fake.o
  "rw::Camera::setNearPlane(float)", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RwCameraSetNearClipPlane(rw::Camera*, float) in fake.o
  "rw::Camera::setViewOffset(rw::V2d const*)", referenced from:
      RwCameraSetViewOffset(rw::Camera*, rw::V2d const*) in fake.o
  "rw::Camera::setViewWindow(rw::V2d const*)", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RwCameraSetViewWindow(rw::Camera*, rw::V2d const*) in fake.o
  "rw::Camera::clear(rw::RGBA*, unsigned int)", referenced from:
      CustomPipes::EnvMapRender() in custompipes.o
      RwCameraClear(rw::Camera*, rw::RGBA*, int) in fake.o
  "rw::Camera::clone()", referenced from:
      RwCameraClone(rw::Camera*) in fake.o
  "rw::Camera::create()", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RwCameraCreate() in fake.o
  "rw::Camera::destroy()", referenced from:
      CustomPipes::DestroyCam(rw::Camera*) in custompipes.o
      RwCameraDestroy(rw::Camera*) in fake.o
  "rw::Engine::setSubSystem(int)", referenced from:
      RwEngineSetSubSystem(int) in fake.o
  "rw::Engine::setVideoMode(int)", referenced from:
      RwEngineSetVideoMode(int) in fake.o
  "rw::Engine::getNumSubSystems()", referenced from:
      RwEngineGetNumSubSystems() in fake.o
  "rw::Engine::getNumVideoModes()", referenced from:
      RwEngineGetNumVideoModes() in fake.o
  "rw::Engine::getSubSystemInfo(rw::SubSystemInfo*, int)", referenced from:
      RwEngineGetSubSystemInfo(rw::SubSystemInfo*, int) in fake.o
  "rw::Engine::getVideoModeInfo(rw::VideoMode*, int)", referenced from:
      RwEngineGetVideoModeInfo(rw::VideoMode*, int) in fake.o
  "rw::Engine::getCurrentSubSystem()", referenced from:
      RwEngineGetCurrentSubSystem() in fake.o
  "rw::Engine::getCurrentVideoMode()", referenced from:
      RwEngineGetCurrentVideoMode() in fake.o
  "rw::Engine::setMultiSamplingLevels(unsigned int)", referenced from:
      RwD3D8EngineSetMultiSamplingLevels(unsigned int) in fake.o
  "rw::Engine::getMaxMultiSamplingLevels()", referenced from:
      RwD3D8EngineGetMaxMultiSamplingLevels() in fake.o
  "rw::Engine::init(rw::MemoryFunctions*)", referenced from:
      RwEngineInit(RwMemoryFunctions*, unsigned int, unsigned int) in fake.o
  "rw::Engine::open(rw::EngineOpenParams*)", referenced from:
      RwEngineOpen(RwEngineOpenParams*) in fake.o
  "rw::Engine::stop()", referenced from:
      RwEngineStop() in fake.o
  "rw::Engine::term()", referenced from:
      RwEngineTerm() in fake.o
  "rw::Engine::close()", referenced from:
      RwEngineClose() in fake.o
  "rw::Engine::start()", referenced from:
      RwEngineStart() in fake.o
  "rw::Engine::memfuncs", referenced from:
      RwMalloc(unsigned long) in fake.o
      RwFree(void*) in fake.o
      rwFrameListDeinitialize(rw::FrameList_*) in fake.o
      RwStreamOpen(RwStreamType, RwStreamAccessType, void const*) in fake.o
      rw::mustmalloc_LOC(unsigned long, unsigned int, char const*) in fake.o
      RwStreamClose(rw::Stream*, void*) in fake.o
  "rw::Matrix::setIdentity()", referenced from:
      RwMatrixSetIdentity(rw::Matrix*) in fake.o
      RwFrameSetIdentity(rw::Frame*) in fake.o
  "rw::Matrix::scale(rw::V3d const*, rw::CombineOp)", referenced from:
      RwMatrixScale(rw::Matrix*, rw::V3d const*, RwOpCombineType) in fake.o
  "rw::Matrix::create()", referenced from:
      RwMatrixCreate() in fake.o
  "rw::Matrix::invert(rw::Matrix*, rw::Matrix const*)", referenced from:
      RwMatrixInvert(rw::Matrix*, rw::Matrix const*) in fake.o
  "rw::Matrix::rotate(rw::V3d const*, float, rw::CombineOp)", referenced from:
      RwMatrixRotate(rw::Matrix*, rw::V3d const*, float, RwOpCombineType) in fake.o
  "rw::Matrix::rotate(rw::Quat const&, rw::CombineOp)", referenced from:
      RtQuatConvertToMatrix(RtQuat const*, rw::Matrix*) in fake.o
  "rw::Matrix::destroy()", referenced from:
      RwMatrixDestroy(rw::Matrix*) in fake.o
  "rw::Matrix::transform(rw::Matrix const*, rw::CombineOp)", referenced from:
      RwMatrixTransform(rw::Matrix*, rw::Matrix const*, RwOpCombineType) in fake.o
  "rw::Matrix::translate(rw::V3d const*, rw::CombineOp)", referenced from:
      RwMatrixTranslate(rw::Matrix*, rw::V3d const*, RwOpCombineType) in fake.o
  "rw::Raster::popContext()", referenced from:
      RwRasterPopContext() in fake.o
  "rw::Raster::renderFast(int, int)", referenced from:
      RwRasterRenderFast(rw::Raster*, int, int) in fake.o
  "rw::Raster::pushContext(rw::Raster*)", referenced from:
      RwRasterPushContext(rw::Raster*) in fake.o
  "rw::Raster::setFromImage(rw::Image*, int)", referenced from:
      RwRasterSetFromImage(rw::Raster*, rw::Image*) in fake.o
  "rw::Raster::getCurrentContext()", referenced from:
      RwRasterGetCurrentContext() in fake.o
  "rw::Raster::imageFindRasterFormat(rw::Image*, int, int*, int*, int*, int*, int)", referenced from:
      RwImageFindRasterFormat(rw::Image*, int, int*, int*, int*, int*) in fake.o
  "rw::Raster::convertTexToCurrentPlatform(rw::Raster*)", referenced from:
      rwNativeTextureHackRead(rw::Stream*, rw::Texture**, int) in fake.o
  "rw::Raster::lock(int, int)", referenced from:
      RwRasterLock(rw::Raster*, unsigned char, int) in fake.o
  "rw::Raster::create(int, int, int, int, int)", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RwRasterCreate(int, int, int, int) in fake.o
  "rw::Raster::unlock(int)", referenced from:
      RwRasterUnlock(rw::Raster*) in fake.o
  "rw::Raster::destroy()", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      CustomPipes::DestroyCam(rw::Camera*) in custompipes.o
      RwRasterDestroy(rw::Raster*) in fake.o
  "rw::Raster::toImage()", referenced from:
      _psGrabScreen in glfw.o
  "rw::engine", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::uploadRimData(bool) in custompipes_gl.o
      RwCameraGetCurrentCamera() in fake.o
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "rw::Charset::flushBuffer()", referenced from:
      RtCharsetBufferFlush() in fake.o
  "rw::Charset::printBuffered(char const*, int, int, int)", referenced from:
      RtCharsetPrintBuffered(rw::Charset*, char const*, int, int, int) in fake.o
  "rw::Charset::open()", referenced from:
      RtCharsetOpen() in fake.o
  "rw::Charset::close()", referenced from:
      RtCharsetClose() in fake.o
  "rw::Charset::print(char const*, int, int, int)", referenced from:
      RtCharsetPrint(rw::Charset*, char const*, int, int) in fake.o
  "rw::Charset::create(rw::RGBA const*, rw::RGBA const*)", referenced from:
      RtCharsetCreate(rw::RGBA const*, rw::RGBA const*) in fake.o
  "rw::Charset::destroy()", referenced from:
      RtCharsetDestroy(rw::Charset*) in fake.o
  "rw::Charset::setColors(rw::RGBA const*, rw::RGBA const*)", referenced from:
      RtCharsetSetColors(rw::Charset*, rw::RGBA const*, rw::RGBA const*) in fake.o
  "rw::Texture::getMaxAnisotropy()", referenced from:
      RpAnisotTextureGetMaxAnisotropy(rw::Texture*) in fake.o
  "rw::Texture::setMaxAnisotropy(int)", referenced from:
      RpAnisotTextureSetMaxAnisotropy(rw::Texture*, signed char) in fake.o
  "rw::Texture::streamReadNative(rw::Stream*)", referenced from:
      rwNativeTextureHackRead(rw::Stream*, rw::Texture**, int) in fake.o
  "rw::Texture::read(char const*, char const*)", referenced from:
      RwTextureRead(char const*, char const*) in fake.o
  "rw::Texture::create(rw::Raster*)", referenced from:
      CustomPipes::CreateEnvMapCam(rw::World*) in custompipes.o
      RwTextureCreate(rw::Raster*) in fake.o
  "rw::Texture::findCB", referenced from:
      CustomPipes::SetTxdFindCallback() in custompipes.o
  "rw::Texture::destroy()", referenced from:
      CustomPipes::EnvMapShutdown() in custompipes.o
      RwTextureDestroy(rw::Texture*) in fake.o
  "rw::readBMP(char const*)", referenced from:
      RtBMPImageRead(char const*) in fake.o
  "rw::readPNG(char const*)", referenced from:
      RtPNGImageRead(char const*) in fake.o
  "rw::Geometry::streamRead(rw::Stream*)", referenced from:
      RpGeometryStreamRead(rw::Stream*) in fake.o
  "rw::Geometry::addMorphTargets(int)", referenced from:
      RpGeometryAddMorphTargets(rw::Geometry*, int) in fake.o
  "rw::Geometry::lock(int)", referenced from:
      RpGeometryLock(rw::Geometry*, int) in fake.o
  "rw::Geometry::create(int, int, unsigned int)", referenced from:
      RpGeometryCreate(int, int, unsigned int) in fake.o
  "rw::Geometry::unlock()", referenced from:
      RpGeometryUnlock(rw::Geometry*) in fake.o
  "rw::Geometry::destroy()", referenced from:
      RpGeometryDestroy(rw::Geometry*) in fake.o
  "rw::Material::setTexture(rw::Texture*)", referenced from:
      RpMaterialSetTexture(rw::Material*, rw::Texture*) in fake.o
  "rw::Material::create()", referenced from:
      RpMaterialCreate() in fake.o
  "rw::Material::destroy()", referenced from:
      RpMaterialDestroy(rw::Material*) in fake.o
  "rw::Material::s_plglist", referenced from:
      rw::Material::registerPlugin(int, unsigned int, void* (*)(void*, int, int), void* (*)(void*, int, int), void* (*)(void*, void*, int, int)) in custompipes.o
  "rw::platform", referenced from:
      attachPipe(rw::Atomic*) in RwHelper.o
      ConvertPlatformAtomic(rw::Atomic*, void*) in RwHelper.o
      GetGPUcaps(GPUcaps*) in TexRead.o
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
  "rw::writeBMP(rw::Image*, char const*)", referenced from:
      RtBMPImageWrite(rw::Image*, char const*) in fake.o
  "rw::writePNG(rw::Image*, char const*)", referenced from:
      RtPNGImageWrite(rw::Image*, char const*) in fake.o
  "rw::Animation::streamRead(rw::Stream*)", referenced from:
      RpHAnimAnimationStreamRead(rw::Stream*) in fake.o
  "rw::Animation::create(rw::AnimInterpolatorInfo*, int, int, float)", referenced from:
      RpHAnimAnimationCreate(int, int, int, float) in fake.o
  "rw::Animation::destroy()", referenced from:
      RpHAnimAnimationDestroy(rw::Animation*) in fake.o
  "rw::HAnimData::get(rw::Frame*)", referenced from:
      RpHAnimFrameGetID(rw::Frame*) in fake.o
      RpHAnimFrameSetHierarchy(rw::Frame*, rw::HAnimHierarchy*) in fake.o
  "rw::findChunk(rw::Stream*, unsigned int, unsigned int*, unsigned int*)", referenced from:
      RwStreamFindChunk(rw::Stream*, unsigned int, unsigned int*, unsigned int*) in fake.o
  "rw::MorphTarget::calculateBoundingSphere() const", referenced from:
      RpMorphTargetCalcBoundingSphere(rw::MorphTarget const*, rw::Sphere*) in fake.o
  "rw::Camera::frustumTestSphere(rw::Sphere const*) const", referenced from:
      RwCameraFrustumTestSphere(rw::Camera const*, rw::Sphere const*) in fake.o
  "vtable for rw::StreamFile", referenced from:
      rw::StreamFile::StreamFile() in fake.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for rw::StreamMemory", referenced from:
      rw::StreamMemory::StreamMemory() in fake.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "_alBufferData", referenced from:
      CChannel::Start() in channel.o
      CStream::FillBuffer(unsigned int*) in stream.o
  "_alBufferiv", referenced from:
      CChannel::Start() in channel.o
  "_alDeleteBuffers", referenced from:
      CChannel::DestroyChannels() in channel.o
      cSampleManager::Terminate() in sampman_oal.o
  "_alDeleteSources", referenced from:
      ALDeviceList::GetMaxNumSources() in aldlist.o
      CChannel::DestroyChannels() in channel.o
      cSampleManager::Terminate() in sampman_oal.o
  "_alDistanceModel", referenced from:
      cSampleManager::Initialise() in sampman_oal.o
  "_alGenBuffers", referenced from:
      CChannel::InitChannels() in channel.o
      cSampleManager::Initialise() in sampman_oal.o
  "_alGenSources", referenced from:
      ALDeviceList::GetMaxNumSources() in aldlist.o
      CChannel::InitChannels() in channel.o
      cSampleManager::Initialise() in sampman_oal.o
  "_alGetEnumValue", referenced from:
      add_providers() in sampman_oal.o
  "_alGetError", referenced from:
      ALDeviceList::GetMaxNumSources() in aldlist.o
  "_alGetProcAddress", referenced from:
      EFXInit() in oal_utils.o
  "_alGetSourcei", referenced from:
      CChannel::IsUsed() in channel.o
      CChannel::Update() in channel.o
      CStream::SetPlay(bool) in stream.o
      CStream::ClearBuffers() in stream.o
      CStream::IsPlaying() in stream.o
      CStream::Pause() in stream.o
      CStream::GetPosMS() in stream.o
      ...
  "_alGetString", referenced from:
      cSampleManager::Initialise() in sampman_oal.o
  "_alIsExtensionPresent", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
  "_alListener3f", referenced from:
      cSampleManager::Initialise() in sampman_oal.o
  "_alListenerf", referenced from:
      cSampleManager::Initialise() in sampman_oal.o
  "_alListenerfv", referenced from:
      cSampleManager::Initialise() in sampman_oal.o
  "_alSource3f", referenced from:
      CChannel::Init(unsigned int, bool) in channel.o
      CChannel::SetPosition(float, float, float) in channel.o
      cSampleManager::Initialise() in sampman_oal.o
      CStream::SetPosition(int, float, float, float) in stream.o
  "_alSource3i", referenced from:
      CChannel::Init(unsigned int, bool) in channel.o
      CChannel::Term() in channel.o
      CChannel::SetReverbMix(unsigned int, float) in channel.o
      CChannel::UpdateReverb(unsigned int) in channel.o
  "_alSourcePause", referenced from:
      CStream::Pause() in stream.o
  "_alSourcePlay", referenced from:
      CChannel::Start() in channel.o
      CStream::SetPlay(bool) in stream.o
  "_alSourceQueueBuffers", referenced from:
      CStream::FillBuffers() in stream.o
      CStream::BufferShouldBeFilledAndQueued(std::__1::pair<unsigned int, unsigned int>*) in stream.o
      CStream::QueueBuffers() in stream.o
  "_alSourceStop", referenced from:
      CChannel::Stop() in channel.o
      CStream::SetPlay(bool) in stream.o
  "_alSourceUnqueueBuffers", referenced from:
      CStream::ClearBuffers() in stream.o
      CStream::Update() in stream.o
  "_alSourcef", referenced from:
      CChannel::Init(unsigned int, bool) in channel.o
      CChannel::SetPitch(float) in channel.o
      CChannel::SetGain(float) in channel.o
      CChannel::SetDistances(float, float) in channel.o
      cSampleManager::Initialise() in sampman_oal.o
      CStream::SetPitch(float) in stream.o
      CStream::SetGain(float) in stream.o
      ...
  "_alSourcei", referenced from:
      CChannel::ClearBuffer() in channel.o
      CChannel::Init(unsigned int, bool) in channel.o
      CChannel::Start() in channel.o
      CChannel::SetLoopCount(int) in channel.o
      CChannel::Update() in channel.o
      cSampleManager::Initialise() in sampman_oal.o
  "_alcCloseDevice", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
      cSampleManager::Terminate() in sampman_oal.o
  "_alcCreateContext", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
      cSampleManager::Initialise() in sampman_oal.o
  "_alcDestroyContext", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
      cSampleManager::Terminate() in sampman_oal.o
  "_alcGetIntegerv", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
  "_alcGetString", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
  "_alcIsExtensionPresent", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
      set_new_provider(int) in sampman_oal.o
      cSampleManager::Initialise() in sampman_oal.o
  "_alcMakeContextCurrent", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
      cSampleManager::Initialise() in sampman_oal.o
      cSampleManager::Terminate() in sampman_oal.o
  "_alcOpenDevice", referenced from:
      ALDeviceList::ALDeviceList() in aldlist.o
      cSampleManager::Initialise() in sampman_oal.o
  "_alcSuspendContext", referenced from:
      cSampleManager::Terminate() in sampman_oal.o
  "_glad_glBindBuffer", referenced from:
      openim2d_uv2() in screendroplets.o
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "_glad_glBufferData", referenced from:
      openim2d_uv2() in screendroplets.o
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "_glad_glBufferSubData", referenced from:
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "_glad_glDeleteBuffers", referenced from:
      closeim2d_uv2() in screendroplets.o
  "_glad_glDrawElements", referenced from:
      RenderIndexedPrimitive_UV2(RwPrimitiveType, Im2DVertexUV2*, int, unsigned short*, int) in screendroplets.o
  "_glad_glGenBuffers", referenced from:
      openim2d_uv2() in screendroplets.o
  "_glad_glPopDebugGroup", referenced from:
      PopRendergroup() in RwHelper.o
  "_glad_glPushDebugGroup", referenced from:
      PushRendergroup(char const*) in RwHelper.o
  "_glad_glUniform3fv", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::uploadRimData(bool) in custompipes_gl.o
      CPostFX::RenderOverlayShader(rw::Camera*, int, int, int, int) in postfx.o
  "_glad_glUniform4fv", referenced from:
      CustomPipes::vehicleRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::worldRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::glossRenderCB(rw::Atomic*, rw::gl3::InstanceDataHeader*) in custompipes_gl.o
      CustomPipes::uploadSpecLights() in custompipes_gl.o
      CustomPipes::uploadRimData(bool) in custompipes_gl.o
      CPostFX::RenderOverlayShader(rw::Camera*, int, int, int, int) in postfx.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [../bin/macosx-amd64-librw_gl3_glfw-oal/Debug/reVC.app] Error 1
make: *** [reVC] Error 2

Issue building re3 miami branch

I have an issue compiling the miami branch under Manjaro linux. I have all the dependencies installed, I'm just stuck at linking. It doesn't want to link my libraries because they are supposedly incompatible. Is there an easy fix to this? I attached my make error below. For reference, I used premake5 to make the makefile.

[alex@alex-zephy build]$ make
==== Building reVC (debug_linux-x86-librw_gl3_glfw-oal) ====
Running prebuild commands
"./../printHash.sh" "./../src/extras/GitSHA1.cpp"
GitSHA1.cpp
Linking reVC
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/../../../libopenal.so when searching for -lopenal
/usr/bin/ld: skipping incompatible /usr/lib/libopenal.so when searching for -lopenal
/usr/bin/ld: cannot find -lopenal: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/../../../libopenal.so when searching for -lopenal
/usr/bin/ld: skipping incompatible /usr/lib/libopenal.so when searching for -lopenal
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/../../../libmpg123.so when searching for -lmpg123
/usr/bin/ld: skipping incompatible /usr/lib/libmpg123.so when searching for -lmpg123
/usr/bin/ld: cannot find -lmpg123: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/../../../libmpg123.so when searching for -lmpg123
/usr/bin/ld: skipping incompatible /usr/lib/libmpg123.so when searching for -lmpg123
/usr/bin/ld: cannot find -lrw: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/../../../libglfw.so when searching for -lglfw
/usr/bin/ld: skipping incompatible /usr/lib/libglfw.so when searching for -lglfw
/usr/bin/ld: cannot find -lglfw: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/../../../libglfw.so when searching for -lglfw
/usr/bin/ld: skipping incompatible /usr/lib/libglfw.so when searching for -lglfw
collect2: error: ld returned 1 exit status
make[1]: *** [reVC.make:629: ../bin/linux-x86-librw_gl3_glfw-oal/Debug/reVC] Error 1
make: *** [Makefile:48: reVC] Error 2
[alex@alex-zephy build]$ ls
Makefile  obj  reVC.make

I fixed building instructions for macOS, I suggest you to copy my wiki to your repo.

I imported the wiki in my repo then updated instructions for macOS witch was faulty + added some useful informations for macOS users.
You can find it here: https://github.com/joyel24/re3/wiki/Building-on-MacOS

I really suggest you to add the wiki to this repo.

All you have to do is:

  • Create a new empty wiki then clone it to your computer
  • clone mine to another directory git clone https://github.com/joyel24/re3.wiki.git re3_joyel.wiki
  • copy all .md files from re3_joyel.wiki directory to your empty re3.wiki (You can do something like cp ./re3_joyel.wiki/*.md ./re3.wiki/

re3 - Not able to launch (Arch Linux - i3-gaps)

when I try to launch the game, it doesn't start and prints out an error
(LOG)

[DBG]: cdvd_stream: read info 0x562ecc634df0
[DBG]: Using one streaming thread for all channels
[DBG]: Created cdstream thread
[DBG-2]: [../src/skel/glfw/glfw.cpp.psInitialize:484]: gGameState = GS_START_UP
casepath couldn't find dir/file "gta3.set", full path was gta3.set
[DBG-2]: Default skin set as no other skins are available OR saved skin not found!
[DBG]: Physical memory size 3477565440
[DBG]: Available physical memory 586686464
../vendor/librw/src/gl/gl3device.cpp:1666: Error: glfwInit() failed
[DBG]: Shutting down CPedStats...
[DBG]: CPedStats shut down

Both games dont work

The games are just on the loading screens for 10-30s and then the game crashes

Mac PowerPC Port possible?

How possible would it be to port this over to a Mac PowerPC binary?

I have a G3 machine that I want to attempt to port this to.

[macOS] [Arm] GLFW fails to create viewport/window on retina displays

Describe the bug

I have built an arm64 binary and am trying to get it to run on an M1 MacBook Pro. It fails at launch with the warning:
WARNING: Cannot find desired video mode, selecting device cancelled

I have also built an amd64 binary and ran it on an old 2015 MacBook Air (non-retina display), and it works fine.

I read online that the Retina display is the issue. (Obviously this may not be accurate, because internets...). It may also affect Intel Macs with retina displays, but I can't test this.

The warning is called from here after a check for bestFsMode. The comments say Find the videomode that best fits what we got from the settings file, but I guess this inference from the settings file is not working...

To Reproduce
Build an arm64 binary and try to run on an M1 Mac with Retina display.

Expected behavior
Game boots

"gta_vc.set" is not found!

Describe the bug & To Reproduce*
This bug happens when I launch reVC , it fails to create a window. Then I cd to Grand Theft Auto Vice City's directory and launch it from there and I get this output. I'm currently on FreeBSD but this also happens on Mac OS as a friend tried to play it recently, and he had the same output.

Expected behavior
Launch and play the game normally.

Output

  • Gamer@BSD:~/Documents/GTAVC/GTAVC $ ./reVC
  • [DBG]: cdvd_stream: read info 0x51e6b865000
  • [DBG]: Using one streaming thread for all channels
  • [DBG]: size of matrix 80
  • [DBG]: size of matrix 80
  • [DBG]: size of placeable 80
  • [DBG]: size of entity 120
  • [DBG]: size of building 120
  • [DBG]: size of dummy 128
  • [DBG-2]: [../src/skel/glfw/glfw.cpp.psInitialize:484]: gGameState = GS_START_UP
  • casepath couldn't find dir/file "gta_vc.set", full path was gta_vc.set
  • Segmentation fault (core dumped)
  • Gamer@BSD:~/Documents/GTAVC/GTAVC $

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.