Sega Saturn Development: Where do I start

Hello everyone and welcome to my first Sega Saturn post:

As you can imagine, the most difficult part about starting your Homebrew video games journey is... how do I start? how do I setup a development environment? Where do I get information or some help?

Before jumping crazily to start coding... let's go step by step and first learn some of the terminology used in Sega Saturn development

Pre-requisites

Yes, most of the development for Sega Saturn is in C/C++ language. (Unless you wanna do some Assembly code).
I totally recommend to you to do a basic tutorial on C/C++ even if you understand or you know the programming paradigm making emphasis on:
  • Makefile
  • GCC and compilation
  • How linking libraries works
Most of the problems comes on compilation or linking existing libraries, or Saturn code with your code :).

SGL vs Jo Engine vs Yaul

Probably you have heard about these 3 above or even more and now you are confuse what to use or where to start. Let's describe briefly what are each one.
  • SGL (Sega Saturn Graphics Library) is the official SDK provided by Sega for developing Sega Saturn games.
  • Jo Engine: It is a wrapper of SGL to simplify the development of Sega Saturn games. It can be convenient for beginners as it hides SGL complexity, and it is easier than Yaul
  • Yaul: It is a completely SDK for Sega Saturn (not based in SGL)

Sega Saturn Graphics Library (SGL)

You can find the official SGL documentation here: 
Note: The Manual tutorial will make use step by step of the most important routines of the SGL library, but always have a look into the Manual Reference for a further understanding.

Personal Feedback: I have the feeling there are many bugs and errors in the Manual Tutorial specially in the calculation of the normal vertices. I tried to correct them in my repository.

Videos:

If you do not want start from zero, you can clone my repository and continue the learning. I added many README.MD to explain every example as an addition to the official documentation.


Note: It only works for now in Windows machine, but read the README if you want to do it in Linux or MacOS

Jo Engine

As mentioned before, this is a good wrapper for SGL and simplified way to do your first 2D/3D game for Sega Saturn. It also includes plenty of demos of code.
This is a very good starting point, you have a compiler setup for Windows and Linux (you can copy them to my repository of the previous section if you wanna compile my projects in Linux).

In addition, there are plenty of executable examples in the Samples folder.

Yaul

Yaul is a more advanced Sega Saturn SDK which gives to you more access to the low level (juice) if needed. Maybe it can be a bit more complicated than Jo Engine at the beginning, but if you are already familiar with videogames programming and confident enough, then you can skip Jo Engine and start directly with Yaul.
Same as Jo Engine, the Yaul repo also includes ton of examples you can check and learn from. In addition, it has many examples about VDP1, VDP2 and ton of core things you need to learn about Sega Saturn CPUs and memory usage.

Videos:
If you are really excited of Sega Saturn development or any other Sega video console development then you should definitely join Sega Xtreme here you can find the most useful POSTS / FORUM and also DISCORD server where many incredible people and enthusiast will help you.

As mentioned, this is an initial post. Let's go into details in the future posts. 

Comments

Popular posts from this blog

Why do I chose Camunda BPM?