# Shinobi Library

English

### Ver 1.00

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関数一覧

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

### 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);

オーバービューに戻る