Nintendo Gateway 64 System Technical and Promotional Material Requirements
Overview
Before a game can be approved for use on the Gateway 64 System, some minor game programming modifications are required.
The following guidelines provide a brief description of the necessary modifications. Please refer to the subsequent pages in this document for further details on programming requirements.
Estimated Time for Software Modifications
Software Submission Procedures
Collateral Materials
Nintendo 64 Gateway Technical Requirements
Scope
Procedure
Multi-player modes, password functions, accessory options, and save functions are not supported on the Gateway 64 System. Feature operations relating to these modes need to be either removed or locked out. The following paragraphs describe the Gateway 64 game modification requirements for multi-player options, save data, and password functions, and accessories i.e., Rumble Pak, Controller Pak.
The following information provides examples of the methods that can be used to disable multi-player functions.
Note: All of the above methods of modification should take into consideration the frequency in which a particular screen or message appears throughout a game. Also, the method in which a player would be required to bypass or back out of a function should be considered-this method should be intuitive and not confusing to the player. Traditional menu nomenclature should be followed such as; `A' accept highlighted option and `B' go back one step in the menu.
The proposed method for halting a game is by detecting impossible combinations of keys in the controller data input (the data retrieved by osContGetReadData()). If the game is currently running (not halted) and the Up and Down keys of the Joy Pad are detected simultaneously (U_JPAD & D_JPAD), the video on the screen should freeze, game play should be suspended, and the game should not respond to normal controller input. Audio muting during halt is allowed, but is not mandatory. The game should remain in this state until the Right and Left keys of the Joy Pad are detected simultaneously (L_JPAD & R_JPAD), after which normal game play should resume.
When the above method of halt is invoked, it will be necessary to communicate the Halt Status to the Gateway 64 System controller. This status will be communicated via a hardware register that is mapped into unused cartridge memory space on the N64. Whenever a new game is downloaded the register will default to the unhalted status. Upon detecting the halt command (U_JPAD & D_JPAD) the game should halt as described above and bit 0 at address 0FF7 0000H should be set to a 1, all the other bits are a don't care. The Gateway 64 System controller will be polling this register and will stop requesting the halt upon reading a 1. When the unhalt (resume) command is detected (L_JPAD & R_JPAD), the game should resume and bit 0 at address 0FF7 0000H should be reset to a 0. The Gateway 64 System controller will again be polling this register and will quit requesting the resume command when a 0 is read.
In order to set and clear bit zero in the register at address 0FF7 0000H the osEPI function (Enhanced PI) osEPiWriteIo() must be used. (A detailed description of the EPI Manager can be found in Chapter 27 of the Online Nintendo 64 Programming Manual. A detailed description of the osEPi-WriteIo() function can be found in the Nintendo 64 Function Reference Manual.) A brief over-view is given here.
The osEPiWriteIo() routine performs 32-bit write operations to the PI device (In this case the device is the register at address 0FF7 0000H). The function requires a handle for the device being accessed. This handle is of type OSPiHandle. The details for procuring the handle are
described in Chapter 27 of the Online Nintendo 64 Programming Manual. The handle requires several parameters. The following parameters should be used:
Assume that a handle has been obtained using the method described in Chapter 27 of the Online Nintendo 64 Programming Manual. The osEPiWriteIo() function would be used as follows to set bit
0 at address 0FF7 0000H when the halt command is detected (U_JPAD & D_JPAD):
osEPiWriteIo(&handle, HALT_REG_START_ADDR, SET);
The recommended value of "SET" is 0xFFFFFFFF.
The osEPiWriteIo() function would be used as follows to clear bit 0 at address 0FF7 0000H when the unhalt (resume) command is detected (L_JPAD & R_JPAD):
osEPiWriteIo(&handle, HALT_REG_START_ADDR, CLEAR);
The recommended value of "CLEAR" is 0x0.
A problem arises for Nintendo 64 games developed using an operating system (O/S) before O/S 2.0H. The problem is that the EPI Manager does not exist in any O/S before O/S 2.0H. The consequence
of this is that the osEPiWriteIo() function is not available. In order for these games to set and clear bit zero in the register at address 0FF7 0000H a different procedure must be used.
The following example code is provided for use in this case:
This document describes additional requirements necessary for developers submitting games for use on the N64 Gateway System. Please be aware that games being submitted for testing approval must also meet the requirements laid out in the either the NTSC or PAL Software Submission Requirements documents.
____
Multi-player, accessory option screens, and Controller Pak save data options need to be removed or locked out
____
Stored passwords, not hard coded password screens, should be modified to allow a player to back out without the need to enter a valid password.
____
Implementation of special Gateway 64 game halt functions are required in the game software.
____
Remove any copy protection schemes.
____
The destination code (the fourth letter of the game code) must be changed from the N64 Game code to the Gateway 64 System code. The fourth letter of the game code becomes a "G" for NTSC and an "L" for PAL games.
Depending on the type of game play options available with each game title, it is estimated that approximately 2 to 4 days are required to make the necessary programming modifications, including testing, for application on the Nintendo Gateway 64 System. Any technical questions regarding game modifications should be directed to Nintendo Developer Tools Support at (425) 861-2607 or email: tools@noa.nintendo.com.
For Gateway 64 software submissions, Nintendo requires game artwork and other collateral materials for promotional use be provided upon approval of the software. The following collateral materials must be provided to the Gateway Program Manager at (425) 861-2732.
____ Packaging (Box Art)
____ Game Logo
____ Character Art
The artwork for the above items should be submitted to Nintendo via an electronic/ digital artwork file that can be used for print production. The preferred format is a TIFF file in Photoshop. However, a CMYK version of the file for print production is also acceptable. We will consider the artwork provided to be approved artwork that can be used by our Hotel and Airline customers so that they may create promotional/marketing materials. Any modification of this artwork will be sent to you for approval.
Please submit any artwork that is unique for the PAL version of the game.
For demonstration and promotional purposes, 2 complimentary copies each (NTSC and PAL versions) of the approved artwork for the consumer Game Pak must be provided.
This document applies to Nintendo 64 game titles being developed for the Gateway 64 System, and provides the required programming procedures by which games need to be modified. These criteria must be met before the game can be approved for use on the Gateway 64 System.
The following information describes the required programming modifications to an N64 game for use on the Gateway 64 System.
Remove the multi-player options from main menu screen.
The artwork is changed to remove all multi-player options from the main menu screen.
Leave the graphics the same but disable multi-player options.
Change the cursor movement routine so that the cursor is limited to select the 1 player mode only. No changes would be necessary to the 2 player routines, since the cursor will not allow them to be selected.
Leave the graphics the same but disable multi-player options.
If it is not convenient to modify the cursor routine to skip over 2 player games, the menu selection routine can be changed so that when a 2 player game is selected, the game loops back to the main menu screen. The user would know that a 2 player game is not a valid selection.
Disable or modify any password screens where a valid password must be entered. Stored passwords, not hard coded password screens, should be modified to allow a player to back out without the need to enter a valid password. In the past, problems have occurred when a player has accessed a password entry screen without knowing a valid password, and the game did not provide a way to exit the password screen. This situation required the game to be reset, which is not optimum for the Gateway 64 System. Therefore, a way to exit any password screens must be provided.
Any screens containing artwork or messaging relating to accessory options should be removed. Messages instructing players to take certain actions during the progress of a game could be confusing to players when options are not available.
Disable any user option screens relating to saving data to Controller Pak.
In order for Nintendo 64 games to be used with the new Gateway 64 System, the ability to suspend game play for an arbitrary period of time must be realized. The "game halt" feature allows the menus of the Gateway 64 System to be accessed (to buy more game-play time, in-flight announcements, emergency announcements) without losing one's place in the game. Since the Nintendo 64 hardware does not have a facility for halting the system, this function must be added to the game code itself.
#define
HALT_REG_START_ADDR
0x0ff70000
#define
HALT_REG_SIZE
0x32
#define
HALT_REG_latency
0x5
#define
HALT_REG_pulse
0x0c
#define
HALT_REG_pageSize
0xd
#define
HALT_REG_relDuration
0x2
/* Example */
#define HALT_REG_START_ADDR 0x0ff70000
#define HALT_REG_latency 0x5
#define HALT_REG_pulse 0x0c
#define HALT_REG_pageSize 0xd
#define HALT_REG_relDuration 0x2
extern void __osPiGetAccess(void);
extern void __osPiRelAccess(void);
/********************************************************
*This example function is used to write the halt status bit.*
*********************************************************/
static void WriteGatewayRegister (int active)
{
int status;
IO_WRITE(PI_BSD_DOM2_LAT_REG, HALT_REG_latency);
IO_WRITE(PI_BSD_DOM2_LAT_REG, HALT_REG_pulse);
IO_WRITE(PI_BSD_DOM2_LAT_REG, HALT_REG_pageSize);
IO_WRITE(PI_BSD_DOM2_LAT_REG, HALT_REG_relDuration);
__osPiGetAccess();
status = IO_READ(PI_STATUS_REG);
while (status & (PI_STATUS_IO_BUSY | PI_STATUS_DMA_BUSY))
{
status = IO_READ(PI_STATUS_REG);
}
if (active)
IO_WRITE(HALT_REG_START_ADDR,0xffffffff);
else
IO_WRITE(HALT_REG_START_ADDR,0x0);
__osPiRelAccess();
}
The WriteGatewayRegister() function would be used as follows to set bit 0 at address 0FF7 0000H when the halt command is detected (U_JPAD & D_JPAD):
WriteGatewayRegister(1);
The WriteGatewayRegister() function would be used as follows to clear bit 0 at address 0FF7 0000H when the unhalt (resume) command is detected (L_JPAD & R_JPAD):
WriteGatewayRegister(0);
Once the above changes have been made to your software programs, submit your software to the Nintendo Product Testing Department for approval. Please utilize the Nintendo Software Destination Declaration/Checklist to ensure that you have included all necessary items with your submission.
The Gateway 64 System closely emulates the N64 system. The following are the major differences in system features and functionality. The Gateway 64 Controller will have no Rumble Pak or Expansion Pak installed. The Gateway 64 System sends the appropriate command 0 or command 255 response, indicating that no Controller Pak is installed.
Copyright © 1999, 2000 Nintendo of America Inc. All Rights Reserved Nintendo and N64 are registered trademarks of Nintendo Last Updated September, 2000 |