diff --git a/.gitignore b/.gitignore
index 38d0a99b52..17d9dc84cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,5 +42,5 @@ tools/asmsplitter/c/*
*.ci4.png
*.ci8.png
-#Per-user configuration
+# Per-user configuration
.python-version
diff --git a/README.md b/README.md
index 5ea993abbf..12d4232bc2 100644
--- a/README.md
+++ b/README.md
@@ -1,23 +1,174 @@
-# Legend of Zelda: Ocarina of Time Master Quest (debug)
+# The Legend of Zelda: Ocarina of Time
```diff
- WARNING! -
-The ROM this repository builds while has a matching checksum cannot be 'shifted' due
-to hardcoded pointers which have yet to be dumped. Thus this repository is currently
-in an experimental and research phase and cannot currently be used traditionally as a
-source code base for general changes.
+The ROM this repository builds cannot be 'shifted', primarily due to some hardcoded pointers which have yet
+to be dumped. Thus this repository is currently in an experimental and research phase and cannot yet be used
+traditionally as a source code base for general changes.
```
-This repo does not include all assets necessary for compiling the ROM. A prior copy of the game is required to extract the required assets.
-
-This is a disassembly and decompilation of Legend of Zelda: Ocarina of Time Master Quest (debug)
+This is a WIP decompilation of The Legend of Zelda: Ocarina of Time.
+The purpose of the project is to recreate a source code base for the game from scratch, using information found inside the game along with static and/or dynamic analysis.
+The only build currently supported is Master Quest (Debug), but other versions are planned to be supported.
It builds the following ROM:
+
* zelda_ocarina_mq_dbg.z64 `md5: f0b7f35375f9cc8ca1b2d59d78e35405`
-Please refer to the Getting Started guide in the Wiki for setup instructions.
+**Note:** This repository does not include any of the assets necessary to build the ROM.
+A prior copy of the game is required to extract the needed assets.
-Website: https://zelda64.dev/
+Website:
-Discord: https://discord.zelda64.dev
+Discord:
+
+## Installation
+
+### Windows
+
+For Windows 10, install WSL and a distribution by following this
+[Windows Subsystem for Linux Installation Guide](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
+We recommend using Debian or Ubuntu 18.04 Linux distributions.
+
+For older versions of Windows, install a Linux VM or refer to [Docker](#Docker) instructions.
+
+### macOS
+
+For macOS, install a Linux VM or refer to [Docker](#Docker) instructions.
+
+### Linux (Native or under WSL / VM)
+
+#### 1. Install build dependencies
+
+The build process has the following package requirements:
+
+* git
+* build-essential
+* binutils-mips-linux-gnu
+* python3
+
+Under Debian / Ubuntu (which we recommend using), you can install them with the following commands:
+
+```bash
+sudo apt-get update
+sudo apt-get install git build-essential binutils-mips-linux-gnu python3
+```
+
+#### 2. Download qemu-irix
+
+Download qemu-irix.zip from the Releases section in the repository. Extract it to a folder of your choosing.
+
+#### 3. Set environment variables
+
+Open up your .bashrc file (~/.bashrc), scroll to the bottom, and add the following, replacing the paths as necessary:
+
+```text
+export QEMU_IRIX="path/to/your/qemu-irix"
+export MIPS_BINUTILS_PREFIX=mips-linux-gnu-
+```
+
+Save and close/reopen your terminal window.
+
+#### 4. Clone the repository
+
+Clone `https://github.com/zeldaret/oot.git` where you wish to have the project, with a command such as:
+
+```bash
+git clone https://github.com/zeldaret/oot.git
+```
+
+#### 5. Prepare a base ROM
+
+Copy over your copy of the Master Quest (Debug) ROM inside the root of this new project directory.
+Rename the file to "baserom_original.z64" or "baserom_original.n64", depending on the original extension.
+
+#### 6. Setup the ROM and build process
+
+Setup and extract everything from your ROM with the following command:
+
+```bash
+make setup
+```
+
+This will generate a new ROM called "baserom.z64" that will have the overdump removed and the header patched.
+It will also extract the individual assets from the ROM.
+
+#### 7. Build the ROM
+
+Run make to build the ROM.
+Make sure your path to the project is not too long, otherwise this process may error.
+
+```bash
+make
+```
+
+If all goes well, a new ROM called "zelda_ocarina_mq_debug.z64" should be built and the following text should be printed:
+
+```bash
+zelda_ocarina_mq_dbg.z64: OK
+```
+
+If you instead see the following:
+
+```bash
+zelda_ocarina_mq_dbg.z64: FAILED
+md5sum: WARNING: 1 computed checksum did NOT match
+```
+
+This means that the built ROM isn't the same as the base one, so something went wrong or some part of the code doesn't match.
+
+### Docker
+
+#### 1. Setup requirements
+
+To use Docker, you'll need either Docker Desktop or Docker Toolbox installed and setup based on your system.
+
+You'll also need to prepare a local version of the project with a copied base ROM (see Step 4 and 5 of the Linux instructions).
+
+#### 2. Create the docker image
+
+From inside your local project, run the following command:
+
+```bash
+docker build . -t oot
+```
+
+#### 3. Start the container
+
+##### Option A: With docker run
+
+To start the container, you can mount your local filesystem into the docker container and run an interactive bash session.
+
+```bash
+docker run -it --rm --mount type=bind,source="$(pwd)",destination=/oot oot /bin/bash
+```
+
+##### Option B (only for macOS): With docker-sync
+
+Prerequisite for this option: Install docker-sync with `gem install docker-sync`
+
+To start docker-sync and the development container, use `docker-sync-stack start`
+
+After a lot of waiting, you'll see something like "Attaching to oot_oot_1".
+This means the container is ready.
+
+Then it's time to log into the container to begin working.
+Note that this will be done in another tab while you leave the docker-sync tab going.
+
+To get the container id, use `docker container ls` and use the ID from the container with image oot:latest in the following command:
+
+`docker exec-it /bin/bash` You're in.
+
+> Note: When done working, type Ctrl+c on the docker-sync tab to close the container and docker-sync.
+
+#### 4. Setup and Build the ROM
+
+Once inside the container, you can follow Step 6 and 7 of the Linux instructions to setup and build the ROM, or run any other command you need.
+
+## Contributing
+
+All contributions are welcome. This is a group effort, and even small contributions can make a difference.
+Some tasks also don't require much knowledge to get started.
+
+Most discussions happen on our [Discord Server](https://discord.zelda64.dev), where you are welcome to ask if you need help getting started, or if you have any questions regarding this project and other decompilation projects.
diff --git a/README_OSX.md b/README_OSX.md
deleted file mode 100644
index c0e962fb97..0000000000
--- a/README_OSX.md
+++ /dev/null
@@ -1,27 +0,0 @@
-## Developing on OSX
-
-#### Requirements
-* Docker Desktop (for OSX)
-* docker-sync (`gem install docker-sync`)
-* a set-up baserom (see general setup guide / wiki for more details)
-
-#### Build the docker image
-`docker build . -t oot`
-
-#### Start docker-sync and the development container
-
-`docker-sync-stack start`
-
-After a lot of waiting, you'll see something like "Attaching to oot_oot_1". This means the container is ready.
-
-#### Log into the container to begin working
-Note: this will be done in another tab while you leave the docker-sync tab going.
-
-To get the container id, use `docker container ls` and use the ID from the container with image oot:latest in the following command
-
-`docker exec-it /bin/bash` You're in.
-
-Run `make setup` followed by `make`, and you're off to the races!
-
-#### When done working
-Type Ctrl+c on the docker-cync tab to close the container and docker-sync.
\ No newline at end of file
diff --git a/THANKS.md b/THANKS.md
index 13b9dbc43e..0a66aa6dc7 100644
--- a/THANKS.md
+++ b/THANKS.md
@@ -1 +1 @@
-Thanks to z64me and CrookedPoe for their actor documentation. https://github.com/CrookedPoe/z64-rw
\ No newline at end of file
+Thanks to z64me and CrookedPoe for their actor documentation.