Skyways Project Announcement


The Idea

With the development of Nobelia, I gained a lot of knowledge on how the CD-i worked internally, and began pondering if there were ways to use the strengths of the hardware to make a game. After some consideration I thought that it should be possible to create a CD-i version of the MS-DOS game SkyRoads.

Before I fully committed to this project, there were two things I needed to get working, and experiment with.

The Road

The first important thing is the rendering of the road. The CD-i isn’t really suited to do 3D rendering or fast graphics drawing. There have been games in the past that did some 3D like “Atlantis: The Last Resort” and “Ram Raid”, but those were made by developers with very deep knowledge and (assembly) programming skills of the CD-i to get every last bit of performance out of the system. Going that route would take a lot of work and effort, and is not really my style.

So I “cheated” a bit. In a future DevLog I’ll go deeper in the details of how it works, but on a basic level I prerender the whole level on my PC, so the CD-i just needs to display this. While this is very fast, it does take up a lot of memory and introduces limits on the size and complexity of the levels.

The Background

The CD-i graphics system supports only two layers (planes) with graphics. One layer will be used for the road, and one layer for the ship and UI. This means I can’t really have a background, other than a solid color from a very limited (16 color) palette.

One way around this is to use the DVC to play a video file, which replaces the solid background color. This was quite a challenge because the documentation and examples of the DVC are lacking, and there is only rudimentary support of the DVC in the CDiEmu emulator (MAME does not emulate the DVC at all).

The Result

The result of these explorations can be seen in the Tech Demo video at the top of this post.

Next Steps

The next steps for this project are:

  • Refactor the Tech Demo code into a format more suitable for game development
  • Formalize the level format and implement saving and loading functionality
  • Implement basic controls

Leave a comment

Log in with itch.io to leave a comment.