kubilus1 / gendev

Genesis development environment for Linux.
BSD 3-Clause "New" or "Revised" License
208 stars 23 forks source link

GENDEV - Genesis development environment for Linux.

Gendev exists to setup a Linux (or presumably other Unix) system for Sega Genesis development. Gendev is not intended to replace, but to be a companion project to the SGDK (Sega Genesis Development Kit).

BASIC INSTRUCTIONS

INSTALLATION

The quickest way to get going would be to simply install one of the release packages for this project. Both a 'txz' and 'deb' package are provided.

To run SGDK or in our case, Gendev, you need following packages:

Latest Releases

SETUP

Set the GENDEV environment variable to the install location of the project. Typcially this should be '/opt/gendev'

$ export GENDEV=/opt/gendev

You may, perhaps, add this into your bash profile for ease of use.

USAGE

BUILDING SGDK PROJECTS

You may enter your project directory, or perhaps SGDK sample directory and build the projects by specifying the provided makefile.gen.

$ cd myaweseomeproject
$ make -f $GENDEV/sgdk/mkfiles/Makefile.rom clean all

You may wish, alternatively, to copy the makefile directly to your project.

PROJECT STRUCTURE

TOOLCHAIN BUILDING

The toolchain is now setup with CircleCI for continuous integration. This should ease porting and allow better validation of incoming patches.

You may decide to build the full toolchain by making sure you have the following package installed:

and then:

$ cd gendev
$ make

... and wait about 45 minutes or so.

The .circleci/config.yml script is a good place to look to see how the individual build stages are executed.

DESIGN PHILOSOPHY

Initally this project was a quick hack pulling together GCC build chain scripts from ChillyWilly, and slapping together some hacks to get SGDK to compile under linux.

In effect this was at least 2 projects in one:

  1. A m68k build chain geared towards Genesis/Megadrive development
  2. An SGDK port to linux.

The original approaches led to encouraging users to rebuild toolchains, long build times, and large file footprint. Plus it was very difficult to maintain.

I am attempting to:

  1. Not necessarilly require building everything
  2. Shorten the build time
  3. Hook up with continuous integration tools
  4. Reduce the footprint
  5. Organize better
  6. Minimize changes to SGDK to make porting version easier

NOTES: