##### Shinobi Library - BootROMフォント関数

# syBtFntGet

フォントアドレスの取得

### 書式

> `void *syBtFntGet( num )
> Uint32 num
> `

### 引数

> num | 制御用番号

### 戻り値

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

### 解説

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

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

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

> 定義 | 意味
> SYD_BT_FNT_ASCII_24_OFS | ASCII 8ビットコード前半
> 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 8ビットコード前半
> 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 | ビジュアルメモリアイコンの最後のコード

### 用例

>     #define SMD_WRK_ADDR  (0x0c020000)
>     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( smWrkAddr, smTheFntAddr, SYD_BT_FNT_24_SIZE_HAN );
>     		/* font semaphore clear */
>     		syBtFntClrSmph();
>     	}
>     }

### 備考

> 制御用番号numには現在SYD_BT_FNTINIを入れて置く必要があります。

> セマフォを獲得せずにフォントデータの取得を行った場合には、不定の値が戻る可能性があります。

> この関数はアドレスを取得するものであって、フォントデータをアプリケーション内に取り込むものではありません。 フォントデータのアプリケ−ションへのコピーは、アプリケーション自身が行うようにしてください。

syBtFntGet

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000