2021-06-12 22:35:55 +02:00
|
|
|
# Development
|
|
|
|
|
|
|
|
This document is intended for developers interested in contributing to segatools. Please read this document before
|
|
|
|
you start developing/contributing.
|
|
|
|
|
|
|
|
## Goals
|
|
|
|
|
|
|
|
We want you to understand what this project is about and its goals. The following list serves as a guidance for all
|
2021-06-20 18:02:00 +02:00
|
|
|
developers to identify valuable contributions for this project. As the project evolves, these goals might do as well.
|
2021-06-12 22:35:55 +02:00
|
|
|
|
|
|
|
* Allow running Sega arcade (rhythm) games on arbitrary hardware
|
|
|
|
* Emulate required software and hardware features
|
|
|
|
* Provide means to cope with incompatibility issues resulting from using a different software platform (e.g. version of Windows).
|
|
|
|
* Provide an API for custom interfaces and configuring fundamental application features
|
|
|
|
|
|
|
|
## Development environment
|
|
|
|
|
|
|
|
The following tooling is required in order to build this project.
|
|
|
|
|
|
|
|
### Tooling
|
|
|
|
|
|
|
|
#### Linux / MacOSX
|
|
|
|
|
|
|
|
* git
|
|
|
|
* make
|
|
|
|
* mingw-w64
|
|
|
|
* docker (optional)
|
|
|
|
|
|
|
|
On MacOSX, you can use homebrew or macports to install these packages.
|
|
|
|
|
|
|
|
#### Windows
|
|
|
|
|
|
|
|
TODO
|
|
|
|
|
|
|
|
### IDE
|
|
|
|
|
|
|
|
Ultimately, you are free to use whatever you feel comfortable with for development. The following is our preferred
|
|
|
|
development environment which we run on a Linux distribution of our choice:
|
|
|
|
|
|
|
|
* Visual Studio Code with the following extensions
|
|
|
|
* C/C++
|
|
|
|
* C++ Intellisense
|
|
|
|
|
|
|
|
### Further tools for testing and debugging
|
|
|
|
|
|
|
|
* Debugger: Can be part of your reverse engineering IDE of your choice or stand-along like
|
|
|
|
[OllyDbg](http://www.ollydbg.de/)
|
|
|
|
* [apitrace](https://apitrace.github.io/): Trace render calls to graphics APIs like D3D and OpenGL.
|
|
|
|
This tool allows you to record and re-play render calls of an application with frame-by-frame
|
|
|
|
debugging. Very useful to analyze the render pipeline or debug graphicial glitches
|
|
|
|
|
|
|
|
## Building
|
|
|
|
|
|
|
|
The root `Makefile` contains various targets that allow you to build the project easily.
|
|
|
|
|
|
|
|
### Local build
|
|
|
|
|
|
|
|
For a local build, you need to install Meson and a recent build of MinGW-w64. Then you can start the
|
|
|
|
build process:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
make build
|
|
|
|
```
|
|
|
|
|
|
|
|
Build output will be located in `build/build32` and `build/build64` folders.
|
|
|
|
|
|
|
|
### Cleanup local build
|
|
|
|
|
|
|
|
```shell
|
|
|
|
make clean
|
|
|
|
```
|
|
|
|
|
|
|
|
### Create distribution package (zip file)
|
|
|
|
|
|
|
|
```shell
|
|
|
|
make dist
|
|
|
|
```
|
|
|
|
|
|
|
|
The output will be located in `build/zip`.
|
|
|
|
|
|
|
|
### Build and create distribution package using docker
|
|
|
|
|
|
|
|
You can also build using docker which avoids having to setup a full development environment if you
|
|
|
|
are just interested in building binaries of the latest changes. Naturally, this requires you to
|
|
|
|
have the docker daemon installed.
|
|
|
|
|
|
|
|
```shell
|
|
|
|
make build-docker
|
|
|
|
```
|
|
|
|
|
|
|
|
Once completed successfully, the build output is located in the `build/docker/zip` sub-folder.
|
|
|
|
|
|
|
|
### Building with Docker Desktop on Windows
|
|
|
|
|
|
|
|
* [Install WSL2](https://docs.microsoft.com/en-us/windows/wsl/install-win10)
|
|
|
|
* [Install Docker Desktop](https://docs.docker.com/docker-for-windows/install/)
|
|
|
|
* Run Docker Desktop to start the Docker Engine
|
|
|
|
* Open a command prompt (`cmd.exe`) and `cd` to your `segatools` folder
|
|
|
|
* Run `docker-build.bat`
|
|
|
|
* Once completed successfully, build output is located in the `build/docker/zip` sub-folder.
|
|
|
|
|
|
|
|
### Building with Docker on Windows using WSL2
|
|
|
|
|
|
|
|
* [Install WSL2](https://docs.microsoft.com/en-us/windows/wsl/install-win10)
|
|
|
|
* Regarding Linux distribution, we recommend using Ubuntu 20.04
|
|
|
|
* Run the "Ubuntu 20.04 LTS" App which opens a Linux shell
|
|
|
|
* Install `make` and `docker` by running
|
|
|
|
* `sudo apt-get update`
|
|
|
|
* `sudo apt-get install make docker.io`
|
|
|
|
* Add the current user to the docker group that you don't have to run docker commands with root:
|
|
|
|
`sudo usermod -a -G docker $USER`
|
|
|
|
* Run the docker daemon in the background: `sudo dockerd > /dev/null 2>&1 &`
|
|
|
|
* Navigate to your segatools folder. If it is located on the `C:` drive, WSL automatically provides
|
|
|
|
a mountpoint for that under `/mnt/c`, e.g. `cd /mnt/c/segatools` (if the folder `segatools` is
|
|
|
|
located under `C:\segatools` on Windows).
|
|
|
|
* Build segatools: `make build-docker`
|
|
|
|
* Once completed successfully, build output is located in the `build/docker/zip` sub-folder
|