Software Porting Guidelines

It is easy to recompile a software title for the GCW Zero target and call it done, but it doesn't essencially mean the port is usable. We at GCW Zero development team believe that when porting software to GCW Zero, one of the most important aspects is the quality of the port.

This article is meant to introduce the most important features that a good software port should have.

Note that we might refuse to accept a software release into the official GCW Zero software repository if it doesn't meet some of the mentioned below criteria.

General features

 * the program is OPK ready
 * the program uses $HOME/.program folder for storing config/other writable data
 * in case 3rd party files are required for installation, it is clear where to put them
 * the program release fully complies to the source code/game data licenses (this includes also the game icon)
 * the framerate is stable and the program has no crashes
 * the default button mapping is adapted for the best playing experience on GCW Zero
 * any program options and other features not available for GCW Zero are disabled/removed from the program (ie. the screen resolution config should not list choices higher than 320x240 [Note: When the HDMI-out feature is implemented, it might be a good idea to detect and list the maximum available resolution.)
 * there is no way to break the program config by changing the options in a way the program refuses to start anymore

Game port related features

 * the game is playable from beginning until end (can complete the game in 100%)
 * the button naming in-game corresponds to the proper button labels printed on GCW Zero (ie. "Press A" instead of "Press Ctrl")
 * if the game offers a way to enter text (ie. player name, save state name), it is possible to do so using only the GCW Zero controls. Ways to achieve that might be an on-screen keyboard, or arcade style "UP for next letter, DOWN for previous letter". Note that an alternative solution for save state names is to automatically generate a proper name, ie. containing the level title and play time.
 * in case the game features a local multiplayer mode, players are able to control it using external gamepads connected via USB OTG
 * if the game features networking mode, it is possible to connect to other players by using only the GCW Zero controls (no commandline parameters, etc.)

Emulator port related features

 * if the emulator features quick save/quick load options, they are by default not mapped to any GCW Zero controls (To prevent accidental SRAM overwrite). If such a feature is desired by users, offer it as an optional feature, disabled by default.
 * if the emulated platform supports multiple controllers, it is possible to connect external controllers via USB OTG and customize the controls