図1 VRAMとデータの大きさの比較
┏━━━━━━━━━━━━━┓ ┌────────────────┐RBG0 ┃VRAM A0 ┃ │256色ビットマップデータ │ ┃ ┃ │(512×256) │ ┃ ┃ │1M bit │ ┃ ┃ │ │ ┃ ┃ │ │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥ ┃VRAM A1 ┃ │回転パラメータ係数テーブル │ ┃ ┃ │(1word) │ ┃ ┃ │ │ ┃ ┃ ├────────────────┤ ┃ ┃ │回転パラメータテーブル │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥NBG0 ┃VRAM B0 ┃ │16色ビットマップデータ │ ┃ ┃ │(512×256)0.5Mbit│ ┃ ┃ ├────────────────┤NBG2 ┃ ┃ │キャラクターパターンデータ │ ┃ ┃ │パターンネームデータ │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥NBG1 ┃VRAM B1 ┃ │16色ビットマップデータ │ ┃ ┃ │(512×256)0.5Mbit│ ┃ ┃ ├────────────────┤NBG3 ┃ ┃ │キャラクターパターンデータ │ ┃ ┃ │パターンネームデータ │ ┗━━━━━━━━━━━━━┛ └────────────────┘
┏━━━━━━━━━━━━━┓ ┌────────────────┐RBG0 ┃VRAM A0 ┃ │256色ビットマップデータ │ ┃ ┃ │(512×256) │ ┃ ┃ │1M bit │ ┃ ┃ │ │ ┃ ┃ │ │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥ ┃VRAM A1 ┃ │回転パラメータ係数テーブル │ ┃ ┃ │(1word) │ ┃ ┃ │ │ ┃ ┃ ├────────────────┤ ┃ ┃ │回転パラメータテーブル │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥RBG1 ┃VRAM B0 ┃ │キャラクターパターンデータ │ ┃ ┃ │1Mbit │ ┃ ┃ │ │ ┃ ┃ │ │ ┃ ┃ │ │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥ ┃VRAM B1 ┃ │パターンネームデータ │ ┃ ┃ │1Mbit │ ┃ ┃ │ │ ┃ ┃ │ │ ┃ ┃ │ │ ┗━━━━━━━━━━━━━┛ └────────────────┘
項 目 | NBG0 〜 NBG3 | RBG0 , RBG1 | ||
---|---|---|---|---|
縮小設定 | 1倍 | 1/2倍 | 1/4倍 | − |
1サイクルに必要なVRAMアクセス回数 | 1 | 2 | 4 | 8 |
項 目 | NBG0 〜 NBG3 | RBG0 , RBG1 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
TV画面モード | ノーマル | ハイレゾ | 専用 | ||||||||
キャラクタ色数 | 16 | 256 | 2048 | 32768 | 1677万 | − | − | − | |||
縮小設定(倍) | 1 | 1/2 | 1/4 | 1 | 1/2 | 1 | 1 | 1 | − | − | − |
1サイクルに必要なVRAMアクセス回数 | 1 | 2 | 4 | 2 | 4 | 4 | 4 | 8 | 8 | 4 | 4 |
┏━━━━━━━━━━━━━┓ ┌────────────────┐NBG0 1倍 ┃VRAM A ┃ │16色ビットマップデータ │ ┃ ┃ │ │ ┃ ┃ ├────────────────┤NBG1 1倍 ┃ ┃ │16色ビットマップデータ │ ┃ ┃ │ │ ┃ ┃ ├────────────────┤NBG2 1倍 ┃ ┃ │キャラクターパターンデータ │ ┃ ┃ │パターンネームデータ │ ┃ ┃ ├────────────────┤NBG3 1倍 ┃ ┃ │キャラクターパターンデータ │ ┃ ┃ │パターンネームデータ │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥NBG0 1/4倍 ┃VRAM B0 ┃ │16色ビットマップデータ │ ┃ ┃ │ │ ┃ ┃ ├────────────────┤NBG1 1/4倍 ┃ ┃ │16色ビットマップデータ │ ┃ ┃ │ │ ┣━━━━━━━━━━━━━┫ ┝━━━━━━━━━━━━━━━━┥NBG2 1倍 ┃VRAM B1 ┃ │キャラクターパターンデータ │ ┃ ┃ │パターンネームデータ │ ┃ ┃ ├────────────────┤NBG3 1倍 ┃ ┃ │キャラクターパターンデータ │ ┃ ┃ │パターンネームデータ │ ┗━━━━━━━━━━━━━┛ └────────────────┘
#include <machine.h> #include "sega_scl.h" /* サイクルパターンテーブルの設定 */ Uint16 n0_cycle[]={0x44ff, 0x0fff, /* VRAM A(A0)NBG0のキャラクタパターン とパターンネームテーブル有 */ 0xffff, 0xffff, /* VRAM A1 VRAM Aは分割していないので */ /* 未使用 */ 0xffff, 0xffff, /* VRAM B(B0) データなし */ 0xffff, 0xffff}; /* VRAM B1 VRAM Bは分割していないので */ /* 未使用 */ extern Uint16 ColData[]; /* パレットのデータのポインタ */ SclConfig scfg; main() { SCL_Vdp2Init(); /* VDP2ライブラリの初期化 */ SCL_SetDisplayMode(SCL_NON_INTER,SCL_224LINE,SCL_NOMAL_A); /* 画面モードの設定 */ SCL_SetColRamMode(SCL_CRM_2048); /* カラーRAMモードの設定 */ SCL_AllocColRam(SCL_NBG0,256,ON); /* パレット領域確保 */ SCL_SetColRam(SCL_NBG0,0,265,ColData); /* パレットデータの設定 */ .................. /* スクロールデータをVDP2のVRAMに格納します。 */ SCL_InitConfigTb(&scfg); /* スクロールNBG0コンフィグレーション初期化 */ scfg.dispenbl = ON; /* NBG0を画面表示する */ scfg.charsize = SCL_CHAR_SIZE_1X1; scfg.pnamesize = SCL_PN1WORD; scfg.platesize = SCL_PL_SIZE_1X1; scfg.coltype = SCL_COL_TYPE_256; scfg.flip = SCL_PN_12BIT; scfg.datatype = SCL_CELL; scfg.plate_addr[0] = SCL_VDP2_VRAM_A+0x0000; scfg.plate_addr[1] = SCL_VDP2_VRAM_A+0x2000; scfg.plate_addr[2] = SCL_VDP2_VRAM_A+0x4000; scfg.plate_addr[3] = SCL_VDP2_VRAM_A+0x6000; SCL_SetConfig(SCL_NBG0, &scfg); SCL_SetPriority(SCL_NBG0,7); /* プライオリティを最大に設定 */ SCL_SetCycleTable(n0_cycle); /* サイクルパターンの設定 */ INT_SetScuFunc(.....); /* V-Blankルーチンの登録 */ set_imask(0); /* 割り込みを有効にする。 */ SCL_Open(SCL_NBG0); /* NBG0オープン処理 */ SCL_Move(FIXED(1), FIXED(1), 0); /* 各種スクロール動作関数 */ . . . SCL_Close(SCL_NBG0); /* スクロール処理終了 */ SCL_DisplayFrame(); /* V_BLANKを待ちスクロール表示を行 */ }