Dreamcast Software Development Standards
Dreamcast Software Development Standards/Ver.1.00E
With Dreamcast, the controller is not controlled by an ID. Instead, controller ownership information is returned together with the key (or button) signal, indicating whether it is from a keyboard (system), gun (system) or control (system).
By providing key (or button) control instead of control by ID, we are considering the compatibility of different types of controllers that may appear in the future, as long as the required operating buttons are supported in existing applications.
In the following, a compatible controller refers to one that has the necessary keys (or buttons) for application operation.
Note: Functions of the A/B and START buttons, and the ten digital keys, are the guaranteed minimum controller functions. The X/Y buttons of the standard controller and the ten analog keys are not guaranteed to be present.
Note: The keys (or buttons) required for application operation are stored in the disc IP information as 16-bit data.
Note: A hardware keyboard is not currently a supported controller (system), so there is no specification assigning, for example, the Z key as the standard controller A button, as it is in Saturn. Operations with a hardware keyboard are limited to key input, with other operations performed by other controllers connected separately.
Required: Applications should not be allowed to "start" or operate from a control port that does not have a compatible controller connected.
Required: Despite the above rule, if "starting" or making operation possible with an incompatible controller, the functions of the missing keys (or buttons) must be provided by other buttons on the controller, and must work correctly.
2.1 Using a Control Port
(Confirm proper operation for all of the following types of applications.)
: An application where a single user uses a single controller.   (2.1.1)
(e.g., 1-player RPG, adventure, etc.)
: An application where multiple users use a single controller.   (2.1.2)
(e.g., 2-player fighting game, 4-player race competition, multi-person quiz, etc.)
: An application where one user uses multiple controllers     (2.1.3)
2.1.1 Single-User, Single-Controller Applications
Recommended: When starting a game, all of the A - D control ports (hereafter called ports) on the Main Unit should be usable whenever a compatible controller is connected. When compatible controllers are connected to multiple ports, they should start or operate in A-B-C-D order, and the other ports should then be disabled.
Example: If a gun is connected to port A, a racing controller to port B and standard controllers to ports C and D, then an application that does not support a gun or racing controller should start and operate from the standard controller on port C. As the devices at ports A and B are not supported and the same operations at port D are available at port C, the ports other than C should be disabled.
Recommended: As a rule, Main Unit port A should be used for player 1, port B for player 2, and so forth. When starting a game, startup and operation should begin with the first port having a compatible controller connected, from A to D.
Required: In conforming to the above recommendation, ports exceeding the number of players should not be allowed to start or operate.
Example: In a fighting game (normally for up to 2 players) intended for either one or two players, if standard controllers are connected to ports A, B and D, port A should be for player 1 to start and operate, and port B for player 2. Starting or playing from port D should not be possible.
Example: In a 4-player fighting game there are no extra ports, so start and play should be possible from all ports with compatible controllers.
Recommended: When starting a game, any of ports A through D to which a compatible controller is connected should be enabled for startup and operation (at the same time).
(For Internet Explorer, screen operations using a standard controller and character input by keyboard are envisaged, but there currently are no guidelines to specify which ports these should be connected to.)
2.2 Checking Control Ports
Required: Even though a compatible controller is not connected to a port when power is turned on, if it is connected before starting a game, it must be properly recognized and enabled for start and operation.
Check the ports frequently in the Title Loop before starting a game.
Recommended: Applications that can be joined in mid-play should frequently check the ports during game play, and enable ports when compatible controllers connected.
2.3 Case of Controller Removed from Port
Recommended: If a controller is removed from an active port after an application has started, display the caution notice "A Controller was removed, or a Memory Card is being recognized." on the screen after inserting a pause.
Not only when a controller is removed, but also when a memory card is inserted while an application is executing, the same status occurs for a certain time (about 0.5 seconds to recognize, and up to about 3 seconds if the Visual Memory battery is depleted).
The application side cannot determine if a controller is disconnected or VMS inserted, so the above caution message avoids the user misunderstanding that the controller has malfunctioned. It also appears when a VMS is inserted, but the above delays do not occur when a VMS is removed.
2.4 When a Controller is Removed and then Reconnected to the Same Port
Required: When a controller is removed from a port that has been used, and a compatible controller is then reconnected to that port, input must be resumed.
Connecting a different controller is okay as long as it is compatible. For an incompatible controller, input must not be resumed.
If a controller includes external memory, it must be recognized (refer to 15. Backup).
2.5 A Controller is Reconnected to a Different Port During the Game
Required: Input is not resumed in an application where multiple players us a single controller. (2.1.2).
Recommended: In the cases of 2.1.1 and 2.1.3, input should be resumed even on a different port as long as the controller is compatible.
Required: If an application is designed to take input from a hardware keyboard and no keyboard has been connected, a software keyboard (or character input screen) should be displayed to allow players to provide character input.
![]() |
![]() |
---|