main.c 1.97 KB
/*
   main.c

   NuSYSTEM sample nu3 

   Copyright (C) 1997-1999, NINTENDO Co,Ltd.			
*/

#include <nusys.h>
#include "main.h"
#include "segment.h"

#ifdef N_AUDIO
#include <nualsgi_n.h>
#else
#include <nualsgi.h>
#endif

/* プロトタイプ宣言 */
void stage00(int);
void setAudioData(void);

/* 外部関数宣言 */
void initStage00(void);
void makeDL00(void);
void updateGame00(void);

/* グローバル変数 */
NUContData contdata[1];		/* 1コントローラ読取データ */
u8 contPattern;	     /* 接続されているコントローラのビットパターン */

/*------------------------
	メイン
--------------------------*/
void mainproc(void)
{
  /* グラフィックの初期化 */
  nuGfxInit();

  /* コントローラマネージャの初期化 */
  contPattern = nuContInit();

  /* オーディオの初期化 */
  nuAuInit();
  /* ROM上のオーディオデータを登録 */
  setAudioData();

  /* stage00() のための初期化 */
  initStage00();
  /* コールバック登録 */
  nuGfxFuncSet((NUGfxFunc)stage00);
  /* 画面表示ON*/
  nuGfxDisplayOn();

  while(1)
    ;
}

/* オーディオデータのセット */
void setAudioData(void)
{
  /* シーケンスプレーヤーにバンクを登録 */
  nuAuSeqPlayerBankSet(_midibankSegmentRomStart,
		       _midibankSegmentRomEnd - _midibankSegmentRomStart,
		       _miditableSegmentRomStart);
  /* シーケンスプレーヤーにMIDIシーケンスデータを登録 */
  nuAuSeqPlayerSeqSet(_seqSegmentRomStart);
  /* サウンドプレーヤーにバンクを登録 */
  nuAuSndPlayerBankSet(_sfxbankSegmentRomStart,
		       _sfxbankSegmentRomEnd - _sfxbankSegmentRomStart,
		       _sfxtableSegmentRomStart);
}

/*-----------------------------------------------------------------------------
  コールバック関数

  Nusystem からコールバック関数の引数として渡される pendingGfx は 
  現在処理中および処理待ちの RCPタスクの合計数です。
-----------------------------------------------------------------------------*/
void stage00(int pendingGfx)
{
  /* 処理中/処理待ちのRCPタスクが2つ以下場合、表示処理行う */
  if(pendingGfx < 3)
    makeDL00();		

  /* ゲーム進行処理 */
  updateGame00(); 
}