メイン | 2010年12月 »

2010年11月

2010年11月12日 (金)

VRAM確保での多色表示の思案

28pinのdsPICのRAM容量は16kですが、VRAMを確保する場合1ドット16色が通常ですが何とか色を増やせないか思案してみます

128*128のLCDのドット数は16384ドットになりますが、すでにRAM容量いっぱいになってしまいます
で、1バイト2ドット構成にすれば半分の128*64で8192バイトで確保できます
しかし、1ドットあたりの色は16色になってしまいます

1111ビットに11ビットを足せば64色が保管できる

1バイト=11ビット+11ビット+11ビット+11ビットで4ドット分が確保できるので

単純に計算すれば

8192バイト+4096バイト=12288あれば64色表示が出来るのではないか?

ではどうやってプログラムを実現するか

16色のパレットを4バンクに分けて登録する

PRAM[128][64] //パレット用RAM

BRAM[128][32] //バンク用RAM

BCOL[4][16] //バンク別カラーパレット

ただし、一つのキャラクタに64色使おうとすればかなり複雑になり速度低下の原因になる

一つのキャラクタにつき16色限定し、4種類の16色カラーパレットを用意するようにすればかなり表現力が向上するのではないか?

たとえば、メインキャラクタ用にバンク1を使用し、サブキャラクタ用にバンク2を、で残りの2バンクを背景用のキャラクタに使うようにする

それぞれのバンク専用に関数を用意すればシンプルにプログラミングが出来るのではないか

まだ思考段階なので実際のプログラミングはこれからです

2010年11月10日 (水)

倉◎番もどきプログラム

時間があればプログラムの解説もちょっとやろうかな?

開発言語はMPALB C30です

オリジナル基板用ですが、PICデバイス、LCDインターフェイスと、入力ボタンポートをへんこうすれば動くと思います

soukoban.zipをダウンロード

簡易マップエディタ(倉◎番もどき専用)

mapedit.zipをダウンロード

2010年11月 7日 (日)

PICマイコンで倉◎番もどきの作成

PICマイコン :dsPIC33F64GP802-SO
カラーLCD :ZY-FGD1442701V1(128*128 26kColor)

開発言語 :MPALB C32

参考資料(私が師匠と勝手に思っている方)
電子工作の実験室HP (後藤さん)PICマイコンの師匠
エレ玩 Konyaの開発記録Blog (konyaさん)PICミニゲームの師匠

簡単なフロー

1.ステージマップ情報読み込み、表示(荷物の数設定)
2.作業員表示
3.作業員移動処理
     進行方向が床なら作業員移動
        荷物なら
          2進行先が床か荷物置き場なら作業員+荷物移動
4.荷物が荷物置き場と同じなら荷物カウント+1し荷物の色を変更
5.荷物置き場がすべて埋まったらクリアー
6.マップの拡大、縮小表示切替
7.割り込みメニューの処理
     ステージ最初からやり直し
     ステージの選択
     初期画面へ
     ゲーム再開
8.次のステージへ(1.から繰り返し)

まずは、表示文字、キャラクタ、背景のグラフィック作成

8*8チップ(縮小画面用)

8_8

16*16チップ(拡大画面用)

16_16

壁のグラフィックのデータ変換

数値はカラー番号

{4,4,4,4,4,4,4,4},
{4,5,5,5,4,5,5,5},
{4,5,5,5,4,5,5,5},
{4,5,5,5,4,5,5,5},
{4,4,4,4,4,4,4,4},
{5,5,4,5,5,5,4,5},
{5,5,4,5,5,5,4,5},
{5,5,4,5,5,5,4,5},

ステージ1のマップ

Smap

ステージ1のマップデータ変換

数値はチップ番号

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,2,0,4,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,2,2,2,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,2,0,0,0,2,3,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,2,0,3,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,2,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

実際のLCDに表示した画像

Smap00

回路図

Sc_sokoban_2

2010年11月 6日 (土)

テスト運用中

まだ準備中です

画像をちょっとだけ

ミニ倉◎番(初期画面)

Soko01_3

PLAY画面

Soko02_2

ステージ選択画面

Soko03_2

基板の様子

Soko04_2

エレ玩 KonyaさんのP◎CMANもどき

Pac01_2