![Project Midas](port/include/presskit/PM%20thin%201%20-%20full.png) # Project Midas This is a video game about Jimothy's presumed-dead best friend Jarvis turns out to be alive, and in possession of a space laser he intends to point at a city - so Jimothy goes to the Cuban jungle and drops Jarvis off a satellite dish. Project Midas is a work-in-progress PC port of GE, built from the N64 decompilation. It runs on Windows and Linux and reads its game data from your own copy of the US cart. ## Playing 1. Put your GE (USA) cart image in the `Data` folder next to the executable. See `Data/README.txt` for the accepted formats and other ways to point the game at it. 2. Run `ProjectMidas.exe` (Windows) or `ProjectMidas` (Linux). Files next to the executable: | Path | What it is | | --- | --- | | `midas.ini` | Settings. Written on first run; delete it to restore the defaults. See `midas_ini_help.txt`. | | `Data/` | Your cart image goes here. | | `Data/Saves/eeprom.bin` | Save file. | | `Data/Profiles/` | Player profiles (`.geprofile`) and lifetime multiplayer stats (`.gestats`). | | `Data/WeaponSets/` | Custom multiplayer weapon sets (`.gewset`). | | `Data/MatchSettings/` | Saved multiplayer settings (`.gemp`), from Load / Save Settings. | | `Data/Devices/` | Per-device settings (`.gedevice`). Keyboard and mouse binds are in `kbm.gedevice`. | | `gamecontrollerdb.txt` | SDL controller mappings. | | `gamecontrollerdefault.txt` | Built-in controller layouts. | | `gamecontrolleruser.txt` | Your saved controller layouts. | | `Data/Logs/ge_direct.log` | The run log on Windows (the game opens no console window). | | `Data/Logs/crash.log` | Written if the game crashes. | | `Mods/` | Reserved for modded carts. This build loads the stock cart only. | An older `ge.ini` is renamed to `midas.ini` automatically on first run. ## Building The build runs in Docker, which has every tool and library both builds need. You also need the GE (USA) cart as `baserom.u.z64` in the repository root: ``` sha1: abe01e4aeb033b6c0836819f549c791b26cfde83 ``` ### On Windows: use WSL The commands below are for a Linux shell. On Windows, run them in WSL: 1. Install WSL with Ubuntu (`wsl --install` in PowerShell), and turn on WSL integration in Docker Desktop (Settings > Resources > WSL integration). 2. Open the Ubuntu terminal and clone the repository inside WSL, not under `/mnt/c` (much faster): ``` cd ~ git clone https://github.com/murkantor/Project-Midas.git cd Project-Midas ``` 3. Copy your cart in, for example from your Windows Downloads folder: ``` cp /mnt/c/Users//Downloads/baserom.u.z64 . ``` ### Build steps 1. Build the image (once): ``` docker build --network=host --build-arg HOST_UID=$(id -u) --build-arg HOST_GID=$(id -g) -t goldeneye . ``` 2. Start a container in the repository: ``` docker run --rm -it -v $(pwd):/home/dev/project goldeneye ``` 3. Extract the assets (once): ``` ./scripts/extract_baserom.u.sh make convert_props convert_chrs convert_guns combine_images ``` 4. Build for Windows (x86): ``` cmake -B build_win -DCMAKE_TOOLCHAIN_FILE=cmake/mingw-i686.cmake -DCMAKE_BUILD_TYPE=Debug -DGE_VIDEO=ON -DSDL2_MINGW_ROOT=$HOME/sdl2-mingw/SDL2-2.30.11/i686-w64-mingw32 cmake --build build_win -j$(nproc) ``` 5. Build for Linux: ``` cmake -B build_pc -DCMAKE_BUILD_TYPE=Debug -DGE_VIDEO=ON -DSDL2_LINUX_ROOT=$HOME/sdl2-linux-i686 cmake --build build_pc -j$(nproc) ``` | Build | Game | Next to it | | --- | --- | --- | | Windows | `build_win/ProjectMidas.exe` | `SDL2.dll`, the controller files, `Data/` | | Linux | `build_pc/ProjectMidas` | the controller files, `Data/` | To play, put a copy of `baserom.u.z64` in that build's `Data/` folder. On Windows, copy the whole `build_win` folder somewhere in Windows (from WSL: `explorer.exe build_win`) and run `ProjectMidas.exe` there. The Linux build needs 32-bit SDL2 and OpenGL on the machine that runs it. On Ubuntu or Debian: ``` sudo dpkg --add-architecture i386 sudo apt update sudo apt install libsdl2-2.0-0:i386 libgl1:i386 ``` ## Known issues - On some Linux systems, levels draw as a few large blank triangles. Starting the game with these environment variables works around it: ``` GE_FULLHEIGHT=0 GE_EDGEINSET=1 ./ProjectMidas ``` ## Contributing Co-op, netplay and mod loading are already in progress. Please contribute here rather than forking; see [CONTRIBUTING.md](CONTRIBUTING.md) for what a good pull request looks like, including the rules for AI-assisted changes. ## License The Project Midas port code is MIT licensed; see [LICENSE](LICENSE). The license does not cover the decompiled game code, GE itself or its assets. Bundled third-party code keeps its own license; see `tools/THIRD_PARTY_NOTICES.txt`. ## Acknowledgements Project Midas builds on the work of many people and projects. - [GoldenEye decompilation](https://github.com/n64decomp/007) by KholdFuzion and contributors - [GoldenEye docs](https://github.com/kholdfuzion/goldeneye_docs) - [Perfect Dark decompilation](https://github.com/n64decomp/perfect_dark) by Ryan Dwyer and contributors - [Perfect Dark PC port](https://github.com/fgsfdsfgs/perfect_dark) by fgsfds - [Perfect Dark netplay](https://github.com/murkantor/perfect_dark_netplay) (fork of fgsfds' `port-net`) - [GE Plus](https://github.com/Joshua-1248/GoldenEye-007-Plus) by Joshua - *The DOOM III Network Architecture* by J.M.P. van Waveren (id Software, 2006) - Fast3D renderer by Emill and MaikelChan (MIT) - [SDL2](https://github.com/libsdl-org/SDL) and [glad](https://github.com/Dav1dde/glad) - [SDL_GameControllerDB](https://github.com/mdqinc/SDL_GameControllerDB) - [ENet](https://github.com/lsalzman/enet) - [xdelta3](https://github.com/jmacd/xdelta) - [ido-static-recomp](https://github.com/decompals/ido-static-recomp), [rabbitizer](https://github.com/Decompollaboration/rabbitizer), [qemu-irix](https://github.com/n64decomp/qemu-irix) and [armips](https://github.com/Kingcom/armips) - The 1964 emulator and its GE/Perfect Dark mouse injector - [pj64raphnetraw](https://github.com/raphnet/pj64raphnetraw) by Raphael Assenat ([raphnet-tech](https://www.raphnet-tech.com)), the reference for the raphnet adapter protocol GE is owned by Rare, Nintendo and the Bond rights holders. This project contains no game assets.