File:  [RetroPC.NET] / np2 / readme.txt
Revision 1.3: download - view: text, annotated - select for diffs
Fri Nov 14 16:37:28 2003 JST (21 years, 11 months ago) by yui
Branches: MAIN
CVS tags: VER_0_71, HEAD
code collection... (T.Yui)



// ---- screen

 PC-9801シリーズの画面サイズは標準で 641x400。
 VGAでは収まらないので 強制的にVGAに収める為に 画面横サイズは width + extend
とする。
 8 < width < 640
  8 < height < 480
  extend = 0 or 1

typedef struct {
	BYTE	*ptr;		// VRAMポインタ
	int		xalign;		// x方向オフセット
	int		yalign;		// y方向オフセット
	int		width;		// 横幅
	int		height;		// 縦幅
	UINT	bpp;		// スクリーン色ビット
	int		extend;		// 幅拡張
} SCRNSURF;

 サーフェスサイズは (width + extern) x height。


const SCRNSURF *scrnmng_surflock(void);
 画面描画開始

void scrnmng_surfunlock(const SCRNSURF *surf);
 画面描画終了(このタイミングで描画)


void scrnmng_setwidth(int posx, int width)
void scrnmng_setextend(int extend)
void scrnmng_setheight(int posy, int height)
 描画サイズの変更
 ウィンドウサイズの変更する
 フルスクリーン中であれば 表示領域を変更。
 SCRNSURFではこの値を返すようにする
 posx, widthは 8の倍数

BOOL scrnmng_isfullscreen(void)
 フルスクリーン状態の取得
  return: 非0でフルスクリーン

BOOL scrnmng_haveextend(void)
 横幅状態の取得
  return: 非0で 横幅拡張サポート

UINT scrnmng_getbpp(void)
 スクリーン色ビット数の取得
  return: ビット数(8/16/24/32)

void scrnmng_palchanged(void)
 パレット更新の通知(8bitスクリーンサポート時のみ)

RGB16 scrnmng_makepal16(RGB32 pal32)
 RGB32から 16bit色を作成する。(16bitスクリーンにサポート時のみ)



// ---- sound

NP2のサウンドデータは sound.cの以下の関数より取得
  const SINT32 *sound_pcmlock(void)
  void sound_pcmunlock(const SINT32 *hdl)


SOUND_CRITICAL  セマフォを入れる(see sndcsec.c)
SOUNDRESERVE    予約バッファのサイズ(ミリ秒)
 サウンドを割り込み処理する場合の指定。
 割り込みの最大延滞時間をSOUNDRESERVEで指定。
 (Win9xの場合、自前でリングバッファを見張るので 割り込み無し・指定時間通りに
 サウンドライトが来るので、この処理は不要だった)


UINT soundmng_create(UINT rate, UINT ms)
 サウンドストリームの確保
    input:  rate    サンプリングレート(11025/22050/44100)
            ms      サンプリングバッファサイズ(ミリ秒)
  return: 獲得したバッファのサンプリング数

            msに従う必要はない(SDLとかバッファサイズが限定されるので)
            NP2のサウンドバッファ操作は 返り値のみを利用しています。


void soundmng_destroy(void)
 サウンドストリームの終了

void soundmng_reset(void)
 サウンドストリームのリセット

void soundmng_play(void)
 サウンドストリームの再生

void soundmng_stop(void)
 サウンドストリームの停止

void soundmng_sync(void)
 サウンドストリームのコールバック

void soundmng_setreverse(BOOL reverse)
 サウンドストリームの出力反転設定
    input:  reverse 非0で左右反転

BOOL soundmng_pcmplay(UINT num, BOOL loop)
 PCM再生
    input:  num     PCM番号
            loop    非0でループ

void soundmng_pcmstop(UINT num)
 PCM停止
    input:  num     PCM番号



// ---- mouse

BYTE mousemng_getstat(SINT16 *x, SINT16 *y, int clear)
  マウスの状態取得
    input:  clear   非0で 状態を取得後にカウンタをリセットする
    output: *x      clearからのx方向カウント
            *y      clearからのy方向カウント
    return: bit7    左ボタンの状態 (0:押下)
            bit5    右ボタンの状態 (0:押下)



// ---- serial/parallel/midi

COMMNG commng_create(UINT device)
  シリアルオープン
    input:  デバイス番号
    return: ハンドル (失敗時NULL)


void commng_destroy(COMMNG hdl)
  シリアルクローズ
    input:  ハンドル (失敗時NULL)



// ---- joy stick

BYTE joymng_getstat(void)
 ジョイスティックの状態取得

  return: bit0    上ボタンの状態 (0:押下)
            bit1    下ボタンの状態
            bit2    左ボタンの状態
            bit3    右ボタンの状態
            bit4    連射ボタン1の状態
            bit5    連射ボタン2の状態
            bit6    ボタン1の状態
            bit7    ボタン2の状態



// ----

void sysmng_update(UINT bitmap)
 状態が変化した場合にコールされる。

void sysmng_cpureset(void)
 リセット時にコールされる



void taskmng_exit(void)
 システムを終了する。



// ----

 改行コードの扱い

 以下のソースコード内で個別に設定しています。
  (Windowsが APIによって \r\nの場合と\nの場合があるので…)
 ・common/_memory.c
 ・debugsub.c
 ・statsave.c



RetroPC.NET-CVS <cvs@retropc.net>