diff --git a/BUILDING.md b/BUILDING.md new file mode 100644 index 0000000..ec39ecd --- /dev/null +++ b/BUILDING.md @@ -0,0 +1,66 @@ +# Requirements + * A Super Metroid rom (Make sure to rename it to `sm.smc`) + * libsdl2-dev + + For Linux/MacOS you must install these for your desired OS: + * Ubuntu/Debian: `sudo apt install libsdl2-dev` + * Fedora Linux: `sudo dnf in sdl2-devel` + * Arch Linux: `sudo pacman -S sdl2` + * macOS: `brew install sdl2` + +# Windows + +## Building with MSYS2 + +Dependencies and requirements: + +Note: *Make sure you're using MINGW64, otherwise it won't work.* + * The `libsdl2-dev` library + * [MSYS2](https://www.msys2.org) + +1. Install MSYS2 on your machine. +2. Clone the SM repository. `git clone https://github.com/snesrev/sm` +3. Place the copy of your rom in the main directory. +4. Install `libsdl2-dev` with `sdl2-config --cflags` +5. After that it outputs `-IC:/msys64/mingw64/include/SDL2 -Dmain=SDL_main`, type `sdl2-config --libs`, it should output `-LC:/msys64/mingw64/lib -lmingw32 -mwindows -lSDL2main -lSDL2` +6. Now install Make and GCC, type `pacman -S make && pacman -S mingw-w64-x86_64-gcc` + +NOTE: *Make sure you're in the `sm` directory.* + +After you've done installing everything, cd to `sm` folder. Type `make` +In order to speed up the compilation, type `make -j16` + +## Building with Visual Studio + +Dependencies and requirements: + * The `libsdl2-dev` library, which is automatically installed with NuGet. + * [Visual Studio Community 2022](https://visualstudio.microsoft.com) + +Download VS installer. On installer prompt, make sure you're on "Workloads" and check `Desktop Development with C++` this will install the necessary deps for compilation. + +1. Open `sm.sln` solution. +2. Change the build target from `Debug` to `Release` +3. Build the solution. + +## Building with Tiny C Compiler + + Dependencies and requirements: + * You'll need [TCC](https://github.com/FitzRoyX/tinycc/releases/download/tcc_20221020/tcc_20221020.zip) and [SDL2](https://github.com/libsdl-org/SDL/releases/download/release-2.24.1/SDL2-devel-2.24.1-VC.zip) in order to compile using TCC. + +1. Unzip both TCC and SDL and place them in `third_party` folder. +2. Double click `run_with_tcc.bat` +3. Wait for it to compile and the game will automatically boot-up. + +# Linux/MacOS + +Cd to your SM root folder and open the terminal and type: +```sh +make +``` + +For more advanced usage: +```sh +make -j$(nproc) # run on all core +make clean all # clear gen+obj and rebuild +CC=clang make # specify compiler +``` diff --git a/README.md b/README.md index 3471169..d72abf3 100644 --- a/README.md +++ b/README.md @@ -4,5 +4,7 @@ Our discord server is: https://discord.gg/AJJbJAzNNJ Early version. It has bugs and the code is messy. +For building instructions, see: https://github.com/snesrev/sm-BUILDING.MD/blob/main/BUILDING.MD + Put sm.smc (sha1 hash da957f0d63d14cb441d215462904c4fa8519c613) in the root folder. When running, it will run both versions and compare frame by frame. If it detects a mismatch, it saves a snapshot in saves/ and displays a counter on screen counting down from 300.