
#include <nitro/ctrdg.h>
void CTRDG_SetPulledOutCallback( CTRDGPulledOutCallback callback );
| callback | カートリッジ抜きを検出したときに呼び出されるコールバック関数 |
なし。
カートリッジ抜きを検出したときに呼び出されるコールバック関数を設定します。
CTRDGPulledOutCallback は
typedef BOOL ( *CTRDGPulledOutCallback )( void );
で定義されるコールバック関数 callback の型です。
callback に NULL が指定されると、コールバックの呼び出しは行いません。
コールバックの返り値には、コールバックから抜けてすぐに停止する場合 TRUE を指定してください。FALSEを指定すると停止しません。必要な処理の後停止する場合は後から
CTRDG_TerminateForPulledOut() を呼び出してください。ただし停止処理はPXIを使用してARM7に通達するので、割り込み禁止状態であるコールバックの中からは呼び出せません。
例えば、抜けを検出したときに「DON'T PULL OUT CARTRIDGE」と表示して停止するには以下のようにします。
(init処理など、多くの行を端折ってあります)
Example:
BOOL isPulledOut = FALSE;
void NitroMain( void )
{
initializeRoutine();
CTRDG_Init(); // maybe called in OS_Init()
CTRDG_SetPulledOutCallback( myCallback ); // set callback
while(1)
{
usualGameProcedure();
if ( isPulledOut == TRUE ) // check if cartridge is pulled out
{
drawMessageRoutine( "DON'T PULL OUT CARTRIDGE" );
CTRDG_TerminateForPulledOut(); // termination
// program halted. never reached.
}
}
}
//---- callback for cartridge pulled out
BOOL myCallback( void )
{
isPulledOut = TRUE; // remember that cartridge is pulled out
return FALSE; // means not to terminate
}
CTRDG_Init, CTRDG_TerminateForPulledOut
2004/09/15 初版