Where do I start porting Cave Story to the Saturn?

Greetings,
I want to start making Games for the Saturn and as a Learning Exercise I decided to port Cave Story to the Saturn.
The Game has been decompiled (https://github.com/gameblabla/CSE2) so the C++ code is available.
In the Portable Branch of the decomp it targets SDL2 and there is a SDL2 for Saturn (https://github.com/willll/SDL_Saturn) but it written in C so I don't know if it will work.

I started to try and remake the game in SRL but I can't get my head around the Tilemap to actually make the Levels but I'm pretty sure I'm doing something wrong.

Thanks in advance.
 
  • Like
Reactions: vbt
Greetings,
I want to start making Games for the Saturn and as a Learning Exercise I decided to port Cave Story to the Saturn.
The Game has been decompiled (https://github.com/gameblabla/CSE2) so the C++ code is available.
In the Portable Branch of the decomp it targets SDL2 and there is a SDL2 for Saturn (https://github.com/willll/SDL_Saturn) but it written in C so I don't know if it will work.

I started to try and remake the game in SRL but I can't get my head around the Tilemap to actually make the Levels but I'm pretty sure I'm doing something wrong.

Thanks in advance.
A port job seems quite massive of a project to start out with, you'd gonna need to start simpler than that to get to where you want to go!

I'd say first read through some samples in your library's repo, and mess around with them to do different things. Then I'd move onto reading through the SGL/SBL documentation considering you're library of choice is a wrapper for it. I'd recommend reading a bit through some of the hardware documents to understand the Saturn's hardware a bit better if you get stuck somewhere.

Remember to have patience! The Saturn is a machine full of technicalities and learning it is gonna take some time. For a port you're also going to need to know quite a bit about the game's rendering engine depending on how much translation is needed, but I'm sure you'll get around to being confident enough in your skills be able to pull off the port in no time!
 
Update:
I've created a GitHub Repo for the project so anyone can look at the code. Feel free to call me an Idiot when I make something stupid.
https://github.com/turradeira2/CaveStory4Saturn

"I can't get my head around the Tilemap to actually make the Levels"
This is me being used to Godot in wich you can just import a tile sheet and make levels with that but after looking at the VDP2 Users Manual and the code for Pixel Poppy Pong I just started to make the levels in Tiled, exporting as a PNG and then converting to TGA with GIMP.
And now I managed to do this:
1781626774878.png
 
Update:
I've created a GitHub Repo for the project so anyone can look at the code. Feel free to call me an Idiot when I make something stupid.
https://github.com/turradeira2/CaveStory4Saturn

"I can't get my head around the Tilemap to actually make the Levels"
This is me being used to Godot in wich you can just import a tile sheet and make levels with that but after looking at the VDP2 Users Manual and the code for Pixel Poppy Pong I just started to make the levels in Tiled, exporting as a PNG and then converting to TGA with GIMP.
That will technically work but you will be limited in tilemap size to only 512 pixels wide (maybe that's OK for this game, I have never played it). You can also use Aseprite to draw tilemaps and import them directly to VDP2 (there is a converter and loader for SRL), or you can also use the old Sega Map Editor tool. Maybe we should make a converter for tiled too...
 
That will technically work but you will be limited in tilemap size to only 512 pixels wide (maybe that's OK for this game, I have never played it). You can also use Aseprite to draw tilemaps and import them directly to VDP2 (there is a converter and loader for SRL), or you can also use the old Sega Map Editor tool. Maybe we should make a converter for tiled too...
Cave Story is a Metroid-Vania indie game from 2004 you can play it for free here: https://www.cavestory.one/download/cave-story.php

You are Right about it being limited. The reason I did that was mostly out of frustration and so I could test other things and let future me figure that out later, now I need to figure tiles and collisions out.

I cant get the saturn-asepreite (not even the one by @7shades) script to work something about the palette even though the colors are indexed. I thought that it was some difference between LibreSprite and AseSprite but not even exporting with Aseprite (with wine since I'm on Linux) it didn't work.

There is a Tiled to Saturn Converter but the author says it only works with yaul - https://github.com/hywelandrews/tiled2saturn

edit: I have to thank you because I am looking at the Pixel Poppy Pong SRL Branch's code for some reference and guidance even though some parts are useless to me due to the different genre
 
Last edited:
Update 2:
Figured out tile maps (its just a matrix) so I recreate the start cave and now I'm trying to implement collisions and physics.
After those Ill try to recreate more levels and level transitions.
 
Back
Top