プチコン! | TINY野郎のブログ

TINY野郎のブログ

PC-6001、MSX、ぴゅう太など、昔のPCが大好きな人のブログ。

お久しぶりです。

プロジェクトが終わったので
たまった有給をまとめて消化したと思ったら、
震災関連で急に休暇になったりで、
気がつけば30連休中のTINY野郎です。

今、私の中では、
3/9にDSiWareとして配信された「プチコン」がアツいです。
http://smileboom.com/special/petitcom/index.html

初めて触れた言語がBASICだった
アラフォー世代にはたまりません。

早速、プチコン関連の動画をニコ動にアップしました。
http://www.nicovideo.jp/mylist/24407540

これがBASICで動くというのが感動です!




さて。

プチコンには、サンプルツールとして、
"CHRED"というキャラクターエディタが付属しており、
このツールを使うことで
簡単にゲームのキャラクターなどを作成することができます。

ツールの使い勝手自体は悪くはないのですが、
いくつか仕様上の問題点があり、
特にスプライトを使う場合は致命的だったりします(;_;)

というわけで、
せっかくリストが公開されているので、
使いやすく変更してしまいましょう。

■SPRITE用カラーパレットが変更および保存できない
→パレットデータは、BG用とSPRITE用のリソースを分け、
 編集・保存・読み込みが別々にできるようにします。

■パレット変更が上画面のキャラクターに即座に反映されない
→パレットを編集しても実物大でチェックできないのは不便なので、
 上画面にもリアルタイムに反映されるようにします。

■その他
→ページ切り替え忘れなど、バグと思わしき場所を修正します。





そんな感じで修正したのが以下の箇所になります。

公式サイトの"CHRED2"への修正は終わっていることを前提として、
赤字が新規追加部分、青字が修正部分です。



BGとSPRITEのパレットを別に扱うための準備。
色バンク名の文字列を定義する。

13 DIM CBANK(2),CBMAX(2),CSTR$(2),CBK$(2)
16 DATA "BGU",4,"BG"
17 DATA "SPU",8,"SP"
19 READ CSTR$(I),CBMAX(I),CBK$(I)


BGモードとSPRITEモードを切り替えた際に
パレットも切り替えて画面に反映する。
3行をコメントアウトすることでRETURNをスルーし、
モードを切り替えるたびに@SETCOLORするように。

577 'IF SBIX>9 GOTO @SETCOLOR
578 'GOSUB @CHRALL
579 'RETURN


ページ切り替え忘れ修正。

586 C$="":BGPAGE 0:SPPAGE 0


下画面のエディタには必ずBG用パレットが読み込まれていたので、
SPRITEモードの場合はSPRITE用パレットを読むように修正。

587 COLREAD(CBK$(CTYPE),P),RGB(0),RGB(1),RGB(2)



上画面にもリアルタイムにパレットを反映させるために、
GRP面(上画面のキャラはここに描いている)のページも
切り替えるように修正と、SPRITE対応。

603 SPPAGE 0:BGPAGE 0:GPAGE 0
604 COLSET CBK$(CTYPE),P,C$
606 SPPAGE 1:BGPAGE 1:GPAGE 1


BG用パレットとSPRITE用パレットを
別々に保存・読み込みができるように修正。
現在のモードのデータを保存・読み込みする。
ちなみに、COL0はBG用、COL1はSPRITE用。

669 PRINT"ヨミコムナマエ(COL";CTYPE;"):";:INPUT K$
670 K$="COL"+CHR$(CTYPE+48)+":"+K$:PRINT K$
679 PRINT"ホゾンスルナマエ(COL";CTYPE;"):";:INPUT K$
680 K$="COL"+CHR$(CTYPE+48)+":"+K$:PRINT K$
681 BGPAGE 0:SPPAGE 0:SAVE K$




ソースを解析しながら修正したので、
あまり自信はないです。
不具合がある可能性はおおいにあります(^_^;)
バグ等を見つけた方はぜひコメントください。

それにしても、プチコン、楽しいです!

3DSがDSiWareに対応するのは5月とのことですが、
DSi/LLをお持ちの方で、
昔BASICを触っていたような方は、
ぜひダウンロードしてみてください!