libretro-meowPC98/readme.txt
2016-03-06 11:11:17 +00:00

263 lines
6.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ---- 定義
最適化の為のメモリ使用量の抑制
MEMOPTIMIZE = 02
CPUにより以下の数値をセットされることを期待している
MEMOPTIMIZE未定義 … Celeron333A以降のセカンドキャッシュ有効機
MEMOPTIMIZE = 0 … x86
MEMOPTIMIZE = 1 … PowerPC等のデスクトップ用RISC
MEMOPTIMIZE = 2 … StrongARM等の組み込み用RISC
コンパイラの引き数・戻り値の最適化
引き数・戻り値でint型以外を指定した場合に、最適化が有効に働かない
コンパイラ向けの定義です。
通常は common.h の物を使用します。
REG8 … UINT8型 / (sizeof(REG8) != 1)の場合 上位ビットを0fillする事
REG16 … UINT16型 / (sizeof(REG16) != 2)の場合 上位ビットを0fillする事
   いずれも値をセットする側が0fillし、参照側は0fillしたものと見なします。
OSの言語の選択
OSLANG_SJIS … Shift-JISの漢字コードを解釈する
OSLANG_EUC … EUCの漢字コードを解釈する
OSLINEBREAK_CR … MacOS "\r"
OSLINEBREAK_LF … Unix "\n"
OSLINEBREAK_CRLF … Windows "\r\n"
※現在は以下のソースコード内で個別に設定しています。
(Windowsが APIによって \r\nの場合と\nの場合があるので…)
・common/_memory.c
・debugsub.c
・statsave.c
(milstr.h選択用)
SUPPORT_ANK … ANK文字列操作関数をリンクする
SUPPORT_SJIS … SJIS文字列操作関数をリンクする
SUPPORT_EUC … EUC文字列操作関数をリンクする
※現在milstr.hですべて定義されたままになっています。
ver0.73でmilstr.hの定義を外し compiler.hで指定した物となります。
 CPUCORE_IA32
  IA32アーキテクチャを採用
   i386cを使用する場合の注意点
   ・CPU panic や警告表示時に msgbox() という API を使用します。
    compiler.h あたりで適当に定義してください。
   ・sigsetjmp(3), siglongjmp(3) が無いアーキテクチャは以下の define を
    compiler.h あたりに追加してください。
    ----------------------------------------------------------------------
#define sigjmp_buf jmp_buf
#define sigsetjmp(env, mask) setjmp(env)
#define siglongjmp(env, val) longjmp(env, val)
    ----------------------------------------------------------------------
CPUSTRUC_MEMWAIT
   cpucore構造体にメモリウェイト値を移動する(vramop)
 SUPPORT_CRT15KHZ
   水平走査15.98kHzをサポートする(DIPSW1-1)
 SUPPORT_CRT31KHZ
   水平走査31.47kHzをサポートする
   Fellowタイプはこれ
 SUPPORT_PC9821
   PC-9821拡張のサポート
   当然ですが 386必須です。
   また SUPPORT_CRT31KHZも必要です(ハイレゾBIOSを使用する為)
 SUPPORT_PC9861K
   PC-9861K(RS-232C拡張I/F)をサポート
 SUPPORT_IDEIO
   IDEの I/Oレベルでのサポート
   でも ATAのリード程度しかできない…
 SUPPORT_SASI
   SASI HDDをサポート
   定義がなければ常時IDEとして作動します。
 SUPPORT_SCSI
   SCSI HDDをサポート…全然動かない
 SUPPORT_S98
   S98ログを取得
 SUPPORT_WAVEREC
  Soundレベルで waveファイルの書き出し関数をサポート
  但し書き出し中は サウンド出力が止まるので ほぼデバグ用
// ---- 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) … NP2コアでは未使用
フルスクリーン状態の取得
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)
システムを終了する。