SAHLI - Saturn High Level Interpreter

This project is one of my very ambituous but discontinued projects just like Rockin'-VR. Both try to make game development on the video game itself possible.

View some screenshots.

So what is SAHLI?

A complete console game development environment for classic consoles. The key fact is that it runs on the target console itself! For this, it has got some sort of own programming language, a powerful editor, which is ASCII based for good reasons. Well, sounds exaggerated and surely is, in this case ;-) .

It's initially targeted to enable you to make simple 2D games with it. With just less then 20 built in modules, it is already capable to create most of the games I want it to.

SAHLI is portable. It's main target platform is the SEGA Saturn, of course. But the current development is done on MacOS X using SDL and so it potentially runs on all computer systems that got a SDL port. This includes consoles like the GP32, Dreamcast and maybe others.

The games created with it are very small. The TicTacToe game, for example, is exactly 339 bytes small(the sprites are not included).

The SAHLI games will run on all platforms supported by SAHLI. This means you can create a game using SAHLI on your SEGA Saturn or your iBook, for example, and run it on your Windows or Linux PC or even Dreamcast without any change.

By creating an application with it, you define a new module in addition to the built in modules. Just like those, your app can be instantiated as a node in other apps. And so on. This creates a hierarchy and eases reusing and speeds up game creation.

How is a game developed with SAHLI?

You should know that such a game is nothing else than a graph consisting of nodes and edges.

1. Start the SAHLI editor on a supported platform.

2. Select nodes(high level modules) you want to use from the library.

3. Link those nodes together, define needed constants and parameters. You link both, programm control flow and variables.

4. The editor forces you to not link variables of wrong type. It also shows you which nodes have unset fields, and which nodes link to a certain node and in which way they link to it. This is important when you add in a new node.

5. Make a test run of your game.

6. If you want to, add more functionality to the game by adding new nodes. Proceed with 3.

7. Save your game. It is now a custom module or node, so that it can be used in other games or it can be directly executed and played.