mkIIの名に恥じない(はず)!
大型目玉機能
- SDカード保存とQRコード読み込み
- 前作でプログラムやデータ受け渡しの限界にいどんだつもりでしたが、もっと踏みこみました。
DSi付属のSDメモリーカードに保存したデータ(※)は、PCとブラウザを経由してQRコード形式の画像データとして出力されます。
もちろんプチコンmkIIとDSiのカメラでQRコードを読み取れば、そのDSiにプログラムが保存されます。つまり、QRコード画像をあなたのブログや写真共有サービスなどに貼り付ければ、多くの人に簡単にプログラムを公開できるのです。
※ SDカードに保存したデータは暗号化され、閲覧や改変はできません。またSDカードからプチコンへの読み込みも行なえません。このご時世、限界を踏みこえるわけにはいかなかったのです。前回も同じようなことを言っていたかもしれませんが。 - MML再生機能
- BASICなのにMMLがないなんて! と歯がみした日々も終わりです。本気のMMLは8チャンネル同時再生、16音同時発音可能。使える音色は基本128種類+ドラム68種類+PSG(デューティー比)8パターン+ユーザー定義波形32パターン+ノイズと、エンベロープも指定できます。
他にもトレモロ、ビブラート、ベロシティ、パンポット指定あり。3段まで入れ子可能なループや、コマンドを制御するMML用変数まであり、音キチテクノキッズ諸君要注目の仕様となっております。 - 音声合成機能
- 音声合成機能もついてきます。TALK”アイウエオ”と書くだけで「アイウエオ」と声が出る簡単設計。
スピードや音量はもちろん、老若男女など12種類の声質や、喜怒哀楽ほか17種類の感情表現、アクセントなど細かい設定にも対応しています。ピッチ(音の高低)も調整できるので、簡易的に歌わせることも。
自作ゲームの味付けからプログラマブルなDTMのおともまで、使い道が無限に広がったような気がします。もちろんレコードやカセットですでに持っている曲を楽譜片手にMMLで「演奏するだけのプログラム」を打ち込むという、→一見不毛な行為だってやるのは自由です。 - スプライト機能拡張
- 回転や拡大の基準点がスプライトの〈左上〉だったことで苦労をおかけしました。新しいSPHOME命令によって基準点を自分で設定できます。
スプライトの初期サイズも16×16px固定から、縦横それぞれ8,16,32のサイズが選択可能になりました。
となるといよいよ欲しくなるのが衝突判定ですが、こちらも強力に拡張。SPCOL命令ではスプライト管理番号別に開始位置・サイズはもちろんスケール値を考慮するかの有無、所属グループ(0~255)まで設定できます。最後のグループは、たとえばビット単位の重なり状態の判定に便利です。
衝突判定の対象は同グループ(SPHIT命令)、指定した相手(SPHITSP命令)、指定した矩形サイズ(SPHITRC命令)が選べ、それぞれ衝突した相手の情報はシステム変数として管理番号・座標・時刻が残されます。衝突判定の速度(移動量)を定義するSPCOLVEC命令も役に立つでしょう。
スプライトの状態を調べる命令も充実しました。スプライトは管理番号ごとに8つの変数が番号として用意されていて、ユーザーは自由に値を入れられます(SPSETV命令で定義、SPGETV命令で参照)。
さらにスプライトのアニメーション状態を調べるSPCHKも、従来の〈アニメーションならなんでも〉からより細かく、位置、回転、スケールのそれぞれをビット値で取得できるようになりました。そのため旧バージョンでTRUEで判定していたプログラムは修正が必要になってしまいましたが……。
加えて新規命令SPREAD命令ではスプライトごとに位置、角度、スケール値、現在のキャラIDの値を取得できます。
こういう機能が欲しかった!
ご要望にお答えします
- ELSE
- マイコン少年おなじみIF~THEN~ELSEの構文が使えるようになりました。ELSE @ラベル でGOTOも可能です。
- 高速化
- 機能拡張にとどめるはずが調子に乗って従来のコードも大幅見直し! 全体的に処理速度が高速になりました。
- 命令入力支援機能
- 命令の頭文字を打つと、候補が一覧表示されるようになりました。つまり最短2タッチでGDRAWMDなどとスペルミスもなく入力できます。
候補のページ送りや2文字目以降を入力する絞り込みにも対応。 - 検索機能
- 編集画面からプログラムリスト内の文字列が検索できます。十字ボタン上下で前・次を検索。長文プログラムに威力を発揮するのは、プチコンヘビーユーザーの皆さんならおわかりでしょう。
- @ラベル指定が柔軟に
- 〈@で始まる文字列〉も行き先のラベルに使えるようになりました。 A$=”@LOOP”:GOTO A$ なんて書けるわけで、変数によって簡単に行き先を変えることもできます。なかなかわくわくする機能でしょう。
- ACLS
- お待たせしました! 画面状態を一気に初期状態に戻す命令です。コンソール・SPRITE・BG・グラフィック面が消去され色などの設定(キャラ以外)もリセットされます。いままでVISIBLE命令やFOR~NEXTまで使っていた初期化処理が4文字に縮まります。
- APPEND命令
- 実行モード用命令です。「MERGE」といえばピンとくる人も多いかもしれませんが、プログラムをロードして編集中のプログラム末尾にそのまま足すことができます。
- パッケージ機能
- リソースデータをたくさん持つとファイルの読み書きが煩雑になるのがこれまで泣きどころでした。プチコンmkIIではPRGをセーブする際、他のリソースデータもPRGファイルにくっつけて保存できます。パッケージ化されたPRGはロード1回で、ファイル内の全リソースごと読み込まれます。
- 変数名・ラベル名が最大16文字に
- 8文字では足りないと思ったことはないでしょうか。ごもっともです。
- 変数の最大数が2048に
- 1024では足りなかったかもしれません。
- 配列バッファサイズが256K個に
- 32K個では足りないことでしょう。
- オールクリアコマンドにBGMも追加
- 隠しコマンドのくせにいまやプログラムに欠かせない「←ボタン+Rボタン+STARTボタン」の画面リセットコマンドですが、さらにBGMSTOP相当の機能も付きました。しかも隠しコマンドから説明書に載っている機能に昇格です。
- GPAGE
- 上画面と下画面1枚ずつ持っていたグラフィックページですが、よく考えればもっとフレキシブルでいいはずです。プチコンmkIIではスクリーン上下に関係なく計4画面をグラフィックページとして持ち、上下どちらのスクリーンでも自由に割り当てられます。
これらは目に見える「表示ページ」、GPAINT等でグラフィックが描かれる「描画ページ」の2概念があり(拡張したGPAGE命令で定義)、単純に共用することもできれば、あるページを表示している裏で別のページに描画することもできます。 - ICONCLR
- 引数を省略すると全アイコンがクリアされるようにしました。いちいち指定する手間がはぶけます。
- BGPUT, BGFILL, BGREAD
- 従来のBG情報の管理方法がぬるいとお嘆きの皆さんに朗報です。拡張されたBGPUT, BGFILL, BGREAD命令ではキャラ番号・パレット番号・反転情報をまとめてビットで管理、16進4桁でずばり指定できるようになりました。
- !演算子
- 論理反転(TRUE → FALSE, FALSE→TRUE)をする論理演算子!が加わりました。
- LEFT$, RIGHT$
- 文字列の端から×文字分を取り出す関数です。簡単かつ有名なところでは、スコアの数字の桁ぞろえがとても簡単になりました。
- INSTR
- 文字列の検索関数です。文字列内に検索対象文字列があればその位置を、なければ-1を返します。
- SUBST$
- 文字列の置換関数です。従来MID$とLENと多くの変数を駆使していたことのわかりづらい説明をはぶいて言うなら、A$=SUBST$(A$,開始位置,文字数,置換文字列) と書けるようになります。
- 文字列 * 数値
- 文字列のくり返しが、文字列*数値 の演算でできるようになりました。
- HEX$()に桁オプション引数
- 変換結果の桁数が指定できるようになりました。桁数揃えだけのためのルーチンを書く必要がもうなくなります。
- べき乗関数
- POW(数値,べき乗する数)の形式でべき乗計算ができます。なぜ演算子で実装しなかったのでしょうか? 速度に保証がもてなかったのです。
- SWAP
- 2つの変数の内容を入れ替える命令です。文字変数同士でもできますよ。
- SORT, RSORT
- 1次元配列の中味をソートします(SORTは昇順、RSORTは降順)。さらにオプションで2個以上の配列を指定すると、最初の配列のソート順通りにソートされます。
かゆいところに手が届く!
地味に便利なこの機能
- 初代プチコンからのファイルインポート
- これまで作ったプログラムやリソースは無駄にはしません。『プチコン』と『プチコンmkII』が共存しているDSiなら、ボタンタッチ数回でmkIIへのファイルコピーが完了します。
- 初代プチコンとのデータ形式(後方)互換
- 初代『プチコン』からワイヤレス通信でも『プチコンmkII』にプログラムやリソースファイルを送信できます。実は逆方向にmkIIのデータを初代に送信することも可能ですが、さすがに追加拡張された命令は初代プチコンではエラーになります。後方互換はニューマシンの華としてご容赦ください。
- VSYNC仕様変更とWAIT命令追加
- 従来の〈VSYNCを呼び出した時のMAINCNTLから指定Vだけ待つ〉から、〈前回VSYNC完了時のMAINCNTLから指定Vだけ待つ〉ようになりました。より柔軟な処理ができるようになります。
従来のVSYNCの動作(現時点から指定Vだけ待つ)はWAIT命令に置き換わります。旧プチコンver1.2からプログラムをコピーする際には、自動的にVSYNCがWAITに変換されるので安心です。 - GPAINT
- 従来は起点以外の色すべてが境界色でしたが、オプションで境界色が指定可能になりました。
- GDRAWMD
- 見慣れない名前でしょうか? この命令で描画色がXOR表示モードに変わります。つまり同じ場所を2度塗れば、1度目に描いた色が消せるということです。
- BGMVOL
- トラック単位でプリセットBGMの音量を調整できるようになりました。
- COLORの背景色オプション
- 文字単位で背景色が設定できます。つまりデフォルトならCOLOR 14,15で「白地に黒」の文字が出てきますし、CLSすればもちろん全画面が白く、OKの文字は黒くなるのです。
- ボタン関連の拡張
- BUTTON関数に引数が追加され、〈押した瞬間〉や〈放した瞬間〉といった細かい情報別に取得できるようになりました。また新しいBTRIG関数は、ボタンが押された瞬間だけボタンに対応したビットが立つ関数です。BREPEAT命令はボタンごとに〈連射〉の開始時間とインターバル間隔を設定でき(デフォルトはOFF)、この連射状態かどうかもBUTTONで調べられます。
- KEYBOARD
- INKEY$であのキーが取得できずに枕をぬらす日々ともお別れです。システム変数KEYBOARDは、キーのタッチ位置に対応したスキャンコードを返します(タッチされていない場合は0)。結局ESCキーを押すと当然動作はBREAKしますが。
- ファイルブラウザ機能
- 新設されたホームメニューに、ファイル選択(実行専用)画面とファイル管理画面を追加。名称変更や削除、送受信がぐっと楽になりました。
- REBOOT
- 実行モードで使える命令です。BASICを終了しmkIIのホームメニューに戻ります。OSっぽいですね!(古い認識)
- Enterキーのショートカット
- Yボタンがバックスペースキーのショートカットになっているのと同様、AボタンもEnterキーにしてみました。
徳間書店 (2013-12-21)
連載「プログラムを知れば、ゲームの見方が変わる。ハロー プチコン3号!」
28通りのプログラム道の始め方。その1つはプチコンmkIIです!
プチコンmkII+電子工作「DSiのタッチパネルを自動的にペンタッチするモータ基板の製作」!
日経BP社 (2012-10-22)
売り上げランキング: 6319
第4章 Part3は「ニンテンドーDSiのBASIC『プチコン』でゲームを作ろう!」
プチコンmkIIと電子工作の融合「画面の点滅を読み取ってデータを受信する光センサ基板の制作」! 謎の広告もあります
プログラミング入門第4回は「ドラクエ風RPGに挑戦」!
プログラミング入門第3回は「グラフィック画面を使って『マリオカート』風ゲームを作る」!
プログラミング入門第2回は「BG面を使って『グラディウスII』6面風の高速横スクロールゲームを作る」!
7月号のプチコンmkIIプログラミング入門は「スプライトを使いこなそう」、Reportにも登場「大進化したプチコンmkII」
6月号のプチコンmkIIプログラミング講座は「お手軽BASICを使って迷路で遊ぼう!」
アスキー・メディアワークス
売り上げランキング: 4514
初代プチコンの本ですが、プチコンmkIIでも使えます(VSYNC命令はWAIT命令に置き換えてご覧ください。詳しくはこちら)