Shinobiライブラリ - BootROMフォント関数

syBtFntGet

フォントアドレスの取得

書式

void *syBtFntGet( num ) 
Uint32 num 

引数

num   制御用番号

戻り値

BootROM内のフォントデータの先頭アドレス

解説

ブートロム内フォントデータの格納アドレスを取得します。

この関数で取得したフォントデータの先頭アドレスと以下の定数を用いて、 必要なフォントのアドレスを求める必要があります。

セクションの先頭データへのオフセット

 SYD_BT_FNT_ASCII_24_OFS   ASCII アスキー 
 SYD_BT_FNT_WEST_24_OFS   ISO 8859-1 海外用8ビットコード後半 
 SYD_BT_FNT_JISX_24_OFS   JIS X 0201 国内用8ビットコード後半 
 SYD_BT_FNT_KANA_24_OFS   Shift JIS part1 全角日本語非漢字部分 
 SYD_BT_FNT_LVL1_24_OFS   Shift JIS part2 日本語漢字第一水準部分 
 SYD_BT_FNT_LVL2_24_OFS   Shift JIS part3 日本語漢字第二水準部分 
 SYD_BT_FNT_GAIJ_24_OFS   GAIJI 特製外字 
 SYD_BT_FNT_VMSICON_OFS   VMデフォルトラベルアイコン 

セクションのデータサイズ

 SYD_BT_FNT_ASCII_24_SIZE   ASCII アスキー 
 SYD_BT_FNT_WEST_24_SIZE   ISO 8859-1 海外用8ビットコード後半 
 SYD_BT_FNT_JISX_24_SIZE   JIS X 0201 国内用8ビットコード後半 
 SYD_BT_FNT_KANA_24_SIZE   Shift JIS part1 全角日本語非漢字部分 
 SYD_BT_FNT_LVL1_24_SIZE   Shift JIS part2 日本語漢字第一水準部分 
 SYD_BT_FNT_LVL2_24_SIZE   Shift JIS part3 日本語漢字第二水準部分 
 SYD_BT_FNT_GAIJ_24_SIZE   GAIJI特製外字 
 SYD_BT_FNT_VMSICON_SIZE   VMデフォルトラベルアイコン 

各セクションでの代表的な文字コード(2バイト日本語はシフトJISコード)

 SYD_BT_FNT_CODE_ASCII_MIN   アスキーの初めのコード 
 SYD_BT_FNT_CODE_ASCII_MAX   アスキーの最後のコード 
 SYD_BT_FNT_CODE_8BIT_MIN   8ビットコードの初めのコード 
 SYD_BT_FNT_CODE_8BIT_MAX   8ビットコードの最後のコード 
 SYD_BT_FNT_CODE_KANA_MIN   2バイトコードの最初のコード 
 SYD_BT_FNT_CODE_KANA_MAX   日本語非漢字部分の最後のコード 
 SYD_BT_FNT_CODE_LVL1_MIN   漢字第一水準の最初のコード 
 SYD_BT_FNT_CODE_LVL1_MAX   漢字第一水準の最後のコード 
 SYD_BT_FNT_CODE_LVL2_MIN   漢字第二水準の最初のコード 
 SYD_BT_FNT_CODE_LVL2_MAX   漢字第二水準の最後のコード 
 SYD_BT_FNT_GAIJ_MIN   外字の最初のコード 
 SYD_BT_FNT_GAIJ_MAX   外字の最後のコード 
 SYD_BT_FNT_ICON_MIN   ビジュアルメモリアイコンの最初のコード 
 SYD_BT_FNT_ICON_MAX   ビジュアルメモリアイコンの最後のコード 


用例

main()
{
	void *smFntAddr, *smTheFntAddr;
	void *smWrkAddr;
	Uint8 smTheCode;

	smFntAddr = syBtFntGet(SYD_BT_FNTINI);
	smWrkAddr = (void *)SMD_WRK_ADDR;
	smTheCode = '?';

	/* evaluate the font address in Boot ROM */
	smTheFntAddr = (void *)((Uint8)smFntAddr
		+ SYD_BT_FNT_WORK_ASCII_24_OFS
		+ (smTheCode - SYD_BT_FNT_CODE_ASCII_MIN)
		* SYD_BT_FNT_24_SIZE_HAN );

	/* font semaphore check */
	if( syBtFntChkSmph() == SYD_BT_FNT_SMPH_SUCCESS ) {
		/* copy 1 letter to work RAM from Boot ROM */
		memcpy( smTheFntAddr, smWrkAddr, SYD_BT_FNT_24_SIZE_HAN );
		/* font semaphore clear */
		syBtFntClrSmph();
	}
}

備考

制御用番号numには現在SYD_BT_FNTINIを入れて置く必要があります。 セマフォを獲得せずに、フォントデータの取得を行った場合には、不定の値が戻る可能性があります。 この関数はアドレスを取得するものであって、フォントデータをアプリケーション内に取り込むものではありません。 フォントデータのアプリケ−ションへのコピーは、アプリケーション自身が行うようにしてください。

syBtFntGet
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999