Shinobi Library

1998/10/4


LCD関数

0. 概要

本関数群は、コントローラに接続されたVMSのモノクロ液晶をコントロールする機能を提供します。

1. データ仕様

1.1 VMS液晶のスペック

項目内容
解像度横48x縦32ピクセル
階調数2階調(モノクロ)
液晶のベース色
コントラスト調整なし

1.1 ピクセルデータ形式

ピクセルデータは、ソフトウェアで取り扱いやすいように、1ピクセルを8ビット(1バイト)で表現します。
下位4ビットで階調を表現しますが、本ライブラリでは、ビット3のみを参照します。
白(液晶のベース色)にするピクセルにはビット3を0にしたデータ
(0x00、0x07等)、黒にするピクセルにはビット3を1にしたデータ
(0x0f、0x08等)を格納してください。

7
6
5
4
3
2
1
0
アプリケーション依存階調データ(0〜15)
<ピクセルデータフォーマット>

液晶画面全体では48x32=1536バイトのデータとなります。
ピクセルデータは左から右、上から下に連続して格納します。
メモリイメージは下図のようになります。
0x8C100000( 0, 0 )( 1, 0 )( 2, 0 ) ... ( 47, 0 )
0x8C100030( 0, 1 )( 1, 1 )( 2, 1 ) ... ( 47, 1 )
::
0x8C1005D0( 0, 31 )( 1, 31 )( 2, 31 ) ... ( 47, 31 )
ピクセルデータのメモリイメージ(アドレスは一例)

ソフトウェアでの記述には以下のような方法を用いることができます。

  const Uint8 cgdata[48 * 32] = {
    0x00, 0x00, 0x0f, 0x0f, ...
            ...
  };

1.2 液晶の向き

コントローラの拡張コネクタの向きによって、ユーザーから見た場合液晶画面が逆さまに見えたり、横を向いていたりする場合があります。
例えば、標準コントローラにVMSを接続した場合、液晶画面は逆さまになってしまいます。
通常PDD_LCD_DIRECTION_NORMAL
逆さまPDD_LCD_DIRECTION_FLIP
左向きPDD_LCD_DIRECTION_LEFT
右向きPDD_LCD_DIRECTION_RIGHT

1. 関数仕様

2.1関数一覧

関数 機能
pdVmsLcdWriteVMSの液晶にデータを表示する
pdLcdGetDirection液晶の向きを取得する
pdVmsLcdIsReadyVMSが接続されているかどうか調べる

2.2 関数API

pdVmsLcdWrite

[関数]
Sint32 pdVmsLcdWrite(Uint32 port, const void* data, Uint32 flag)
[入力]
port
ポート番号(PDD_PORT_A1/A2/B1/B2/C1/C2/D1/D2)
data
ピクセルデータアドレス
flag
フラグ
PDD_LCD_FLAG_NOFLIP
データをそのまま表示
PDD_LCD_FLAG_HFLIP
左右反転して表示
PDD_LCD_FLAG_VFLIP
上下反転して表示
PDD_LCD_FLAG_HVFLIP
上下左右反転して表示
[出力]
なし
[戻り値]
PDD_LCDERR_OK
成功
PDD_LCDERR_NO_LCD
VMSが接続されていない
PDD_LCDERR_BUSY
VMSはアクセス中
[機能]
VMSの液晶にグラフィックを表示します。
[参照]
[使用例]
  const Uint8 cgdata[48 * 32] = {
    0x00, 0xff, ...
         ...
  };

  ret = pdVmsLcdWrite(PDD_PORT_A1, cgdata, PDD_LCD_HVFLIP);

  if (ret != PDD_LCDERR_OK) {
    /* 表示できなかった */
  }

pdLcdGetDirection

[関数]
Sint32 pdLcdGetDirection(Uint32 port)
[入力]
port
ポート番号(PDD_PORT_A1/A2/B1/B2/C1/C2/D1/D2)
[出力]
なし
[戻り値]
PDD_LCD_DIRECTION_NORMAL
通常
PDD_LCD_DIRECTION_FLIP
逆さま
PDD_LCD_DIRECTION_LEFT
左90度回転
PDD_LCD_DIRECTION_RIGHT
右90度回転
[機能]
液晶画面がコントローラに対してどのような向きに接続されているかを 返します。
[参照]
Katana標準コントローラとVMSの組み合わせでは逆さまになります。
[使用例]
  Sint32 dir;
  Uint32 flag;

  dir = pdLcdGetDirection(PDD_PORT_A1);

  switch (dir) {
  case PDD_LCD_DIRECTION_NORMAL:     /* 通常 */
    flag = PDD_LCD_FLAG_NOFLIP;
    break;
  case PDD_LCD_DIRECTION_FLIP:       /* 液晶が逆さまなので   */
    flag = PDD_LCD_FLAG_HVFLIP;    /* データも逆さまに送る */
    break;
  default:                           /* 横を向いてたら       */
    flag = PDD_LCD_FLAG_NOFLIP;    /* しょうがないので     */
    return;                        /* そのまま送る         */
  }

  pdVmsLcdWrite(PDD_PORT_A1, cgdata, flag);

pdVmdLcdIsReady

[関数]
Sint32 pdVmsLcdIsReady(Uint32 port)
[入力]
port
ポート番号(PDD_PORT_A1/A2/B1/B2/C1/C2/D1/D2)
[出力]
なし
[戻り値]
TRUE
VMSが接続されている
FALSE
VMSが接続されていない
[機能]
VMSが接続されているかどうかを調べます。
[参照]
[使用例]
  if (!pdVmsLcdIsReady(PDD_PORT_A1)) return;

  pdVmsLcdWrite(PDD_PORT_A1, cgdata, PDD_LCD_FLAG_HVFLIP);

オーバービューに戻る

TOPに戻る
Copyright 1998 SEGA Enterprises, LTD.