/* * 黒PSを贅沢に使うプログラム1 超アホCDプレイヤー * */ #include #include #include "pad.h" #include "util.h" /* みった氏の util.h 利用 */ #define CD_DATA_ADDR 0x80100000 /* CDの曲順をおいておく場所 */ static u_long padd; /* コントローラのデータを保持する */ #define INDEX_MAX 100 /* 登録曲数のMAX */ int CDtracks[INDEX_MAX]; /* 曲順データ */ /* * 曲順データの初期化 * */ void initCDdata( void ) { int i; for( i = 0; i < INDEX_MAX; i++ ){ CDtracks[i] = 0; } } /* * 曲順データをメモリより読み取り作成 * */ void makeCDdata( void ) { char buf[256]; char *addr; int index; int track; int i; addr = (char *)CD_DATA_ADDR; index = 0; while( ( addr = _fgets( addr, buf ) ) != NULL ){ /* メモリより1行分のデータ取得 */ if( ( track = _atoi( buf ) ) > 0 && index < INDEX_MAX - 1 ){ CDtracks[index++] = track; } else{ break; } } CDtracks[index] = 0; #ifdef DEBUG for( i = 0; i < index + 1; i++ ){ printf( "CDtracks[%d] = %d\n", i, CDtracks[i] ); } #endif } void main( void ) { int flag; int index; PadInit( 0 ); /* パッド初期化 みった氏の関数利用 */ initCDdata(); /* 曲順データ初期化 */ padd = 0; flag = 0; index = 0; makeCDdata(); /* 曲順データの作成 */ /* これを設定しないとCDからの音がうまくでなかった */ SsSetSerialVol( SS_CD, 60, 60 ); /* CD音声ボリューム設定 */ SsSetSerialAttr( SS_CD, SS_MIX, SS_SON ); /* CD音声属性設定 */ CdPlay( 2, CDtracks, index ); /* 曲順通り演奏開始 */ while( !flag ){ VSync( 1 ); /* 1Sync待つ */ #ifdef DEBUG printf( "index=%d\r", index ); #endif index = CdPlay( 3, CDtracks, index ); /* 演奏中のindexを取得 */ padd = PadRead2( 0 ); if( padd & PADRdown ){ /* CDプレイヤーを終了 */ flag = 1; } if( padd & PADRright ){ /* 1曲スキップさせる */ index++; CdPlay( 2, CDtracks, index ); /* 演奏開始 */ } } CdPlay( 0, CDtracks, index ); /* 演奏停止 */ }