2010年12月22日 (水)

倉◎番プログラムのバグ修正

倉◎番プログラムにいくつかのバグがありましたので修正版をUPします

・ステージ14の荷物の数が足りない(他、MAPの数点のバグ)

・縮小表示の時、一時右端のブロック壁が表示されない

konyaさんより移植版のプログラム搭載要請を受け、以上の修正を行いました

修正版soukoban2.zipをダウンロード

修正箇所はfont.h内のconst  char map[540][23]={・・・・・} と

souko.c内のvoid move(void){ ・・・・・・} です

2010年12月10日 (金)

PIC32MXのプログラミング

こまった事に、PIC32MXはPICkit2では書き込みが出来ない

MPLABで調べるとPICkit3なら書き込みが出来るらしい?のでPICkit3を早速購入しテストボードも作成することにした

Pickit3

早速、電子工作の実験室さんのHPからLED点滅プログラムを拝借し、テストしてみる

ここで問題発生

PICkit3には専用のソフトが無く!MPLAB IDE上で認識させるようで、しかもなんだかエラーが出ている?

PICkit 3 detected
Connecting to PICkit 3...
Running self test...
Self test completed
Firmware Suite Version...... 01.26.33
Firmware type......................PIC32MX
PICkit 3 Connected.
PK3Err0045: You must connect to a target device to use PICkit3.

えー?認識しない??でも、PIC32MXは認識できてる?

基本的にマニュアルを見ない(英語わかりません)私はあわててググる

どうやら、ターゲットボードに電源が供給されていないと認識しないようだ

PICkit2の時はそんなこと無かったのに・・・

で、MPLABのpurogrmmerメニューのsettingのPowerをONすると見事認識してくれた

無事にLEDチカチカプログラム成功!

次回はLCDの動作確認をと思うけど、PMPを理解してないのでうまくいくか??

2010年12月 8日 (水)

PIC32MXの入手

PICミニゲーム作成でネックになるRAM容量ですが、最新のPICを入手しました

まるで婚約指輪みたいなケースに入っています

Pic32mx

スペックは以下の通り

  CAN    1 
  I2C    4 
  RAMサイズ    128kB 
  SPI    3 
  UART    6 
  USB    1 
  インストラクションセツトアーキテクチァ    RISC 
  インタフェースタイプ    CAN / I2C / SPI / UART / USB 
  オンチップADC    16-chx10-bit 
  サプライヤパッケージ    TQFP 
  タイマー数    5 
  デバイスコアー    PIC 
  データバス幅    32Bit 
  ピン数    64 
  ファミリ名    PIC32 
  プログラムI/O数    53 
  プログラムメモリサイズ    512kB 
  プログラムメモリタイプ    Flash 
  動作供給電圧 Typ    2.5, 3.3V 
  実装    表面実装 
  最大クロックレート    80MHz 
  最大動作供給電圧    3.6V 
  最大動作温度    85°C 
  最大拡張メモリサイズ    4GB 
  最大速度    80MHz 
  最小動作供給電圧    2.3V 
  最小動作温度    -40°C 
  機能    マイクロコントローラ 
  製品幅    10mm 
  製品長さ    10mm 
  製品高さ    1mm 

320×240LCDを256カラーでVRAMを確保してもまだ50kBも余裕がある

クロックレートもdsPIC33の倍の80MHz

夢が広がるチップです

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