Falling Blocks-type game rewritten in 'C' for PC-FX (based on PC Engine game written in Assembler in 1999).
This is a rewrite of the PCE_Blox game I wrote in assembler for the PC Engine back in 1998/1999, but this version is written in 'C' for the PC-FX. The original proof-of-concept game can be found here: https://github.com/dshadoff/PCE_Blox
Although I have had many thoughts over the years about how to implement this in alternative ways, I have tried to remain as faithful as possible to the original program's design, data layouts, variable names, etc., and make this as straightforward of a port as possible, so that people can compare the two works.
There are several reasons I undertook this rewrite:
-
There is very little PC-FX homebrew software available, even though some of the tools exist, such as a good 'C' compiler (gcc), a library (liberis) to interface with the lower-level hardware, and tools to package the generated executables into bootable discs.
-
The liberis library - however well-intentioned - wasn't sufficiently tested in real-world usage to determine whether the provided API is an appropriate API for general-purpose game development work. Through the creation of other programs, I have notied some weaknesses, and decided to take this opportunity to explore some of them, with an eye to improving (or possibly replacing) them.
-
Some of the required "non-compiler" tools (such as graphic data format converters) also didn't exist, so this was an opportunity to identify and create some of those as well.
This proof-of-concept has concentrated solely on the HuC6270 video processor and its various facilites, and perhaps touched upon joypad controller limitations. There was no sound in the original proof-of-concept game.
There are vast opportunities for ports of software created for the PC Engine and SuperGrafx to the PC-FX, so the logical starting point for that is to ensure that the analogous hardware (i.e. HuC6270, palette, sound generator, joypad, CDROM, ADPCM) is the initial focus of these tools.
-
Blox is working and complete, except that the piece selection is not yet random (pseudo-random number generator functions still need to be created, and made into part of the support libraries. The code is somewhat messy, as I have been required to include additional #define statements and other facilities which should be part of the base liberis functions; this refactoring will take place soon. The code is currently in a state where it could be compared against the original PC Engine code however.
-
Several tools have been written to support the palette and graphic data conversions required. These can be found at this (relatively) new repository: https://github.com/pcfx-devel/PC-FX_Programming_Tools