プチコン 1画面プログラム

 古くから短いプログラムリストでいかに面白いゲームを作るかという試みはポケコンや8bitパソコンで非常に多く見られました。その1つのレギュレーションが「1画面プログラム」です。要するに1画面(プチコンの場合は編集画面で29文字×24行)にリストが収まるようなプログラムということです。

 プチコンはmkIIによって手軽にQRコード経由で入力が可能になりましたが、それまでは外部とのプログラムリストのやりとりは(実際に2台の本体を持ち寄って転送する場合を除けば)すべて手入力となっていました。そのためこういった短いプログラムリストは大きな意味がありました。
 QRコードによる公開が主流になったとはいえいかに小さいサイズで面白いものを作るかというのを考えたり29文字×24行にいかにして収めるのかというパズルのようなプログラミングの楽しさが1画面プログラムにはあります
 こちらにあるようなリスト短縮法を使って皆さんもぜひ1画面プログラム作りにチャレンジしてみてください。1行プログラムもまた別の楽しさがあります)

カッコ内の日付は各プログラムの最終更新日です。

mkII用にすべてのプログラムにQRコードを用意しました。(※音階演奏ソフトOMPに関してはMML演奏機能が標準機能にあるためQRコードは用意していません)
QRコードによるリストには末尾にREM文で簡易マニュアルを記しています。
QRコードの再配布は無改変の場合に限り自由に行ってもらって構いません。

プチコンはRUN(実行)は[START]ボタン、停止は[SELECT]ボタンで可能なので活用していきましょう。
あと[R][←][START]の同時押しでVRAM(画面表示) の初期化ができます。

《 注 意 》
mkIIの「ホームメニュー」から「作品を見る」で実行する場合において(ホームメニュー非対応)のゲームに関してはゲームオーバーと同時にメニュー画面に戻ってしまいます。そのためホーム画面から実行する場合は任意のキーを押した場合にゲームの先頭行を実行しそれまで時間待ちをするという処理を入れた方が良いでしょう。(※「プログラムを作る」で実行した場合は問題ありません。)
やり方が分からない場合は @START を先頭行に加えて、FOR B=0TO 1024:B=BUTTON():NEXT:GOTO @START を最終行に加えるとゲームオーバーの際に[START]ボタンでリトライができます。
1画面以外のゲームはすべて(ホームメニュー対応)となっているので問題ありません。
ちなみに1画面に収まらないプログラムはこちらの方で公開しています。


ゲーム


PETIT RUN mkII

【mkII専用】(ホームメニュー対応) 2012年9月16日 公開
2012年9月30日 追記

プログラムリスト QRコード(ファイル名:OCHAPRN2)

公式コンテスト「第1回プチコン大喜利」にて技術賞を戴いた作品です。

《 遊び方 》

タイムアタック専用の疑似3Dのレースゲームです。
十字ボタンで左右に移動しAボタンを押すと加速、離すと減速します。Aボタンでリトライができます。

ちなみにデフォのコースの私の最高タイムはこのver1.1では17秒95です。(初出のver1.0では20秒89)。

《 前作からの変更点 》

基本的なゲーム内容は前作のPETIT RUNと同じですが、以下の変更点が行われています。

PETIT RUNでは導入できなかったリトライとトップタイム表示機能が大きいです。
PETIT RUN Dでは視点変更は導入されましたがその代償として画面表示がかなりチープになってしまいました。このPETIT RUN mkIIは視点変更は左右のみですが画面表示はPETIT RUNを越えるものとなっています。
ここまでの改善ができたのは限界までのリスト短縮とリストの切り詰めのお陰です。最大で使用できる696文字(29文字x24行)の中でわずか空白部分は6文字(使用率99.1%)というのは今まで発表された1画面プログラムの中では最高でしょう。

コースデータは前作PETIT RUNと同じであるためこちらを参考にしてください。(5行目のC$の内容を書き換える)

《 更新情報 》

◎ver1.1にバージョンアップしました。(2012/9/30)

 変更点はゲームのプレイ速度アップとそれに伴うバランス調整です。
 リストの変更点 (上記のリストとQRコードはすでにver1.1に変更済みです)

 12行 X=X+R+S*S/265 → X=X+R+S*S/252
 22行 H=H-1+S/1200 → H=H-1+S/1024


《 プレイ動画 》


↑TOP


JUMPING ISLAND(1画面版)

【mkII専用】(ホームメニュー対応) 2012年5月20日 公開
2014年7月19日 更新

プログラムリスト QRコード(ファイル名:OCHA1JMP)

《 遊び方 》

 縦スクロールジャンプアクションゲーム「JUMPING ISLAND」の1画面版です。フルバージョンと同じく全9ステージになっています。最初にプレイするときにはCLEARを実行してください(ホームメニューからプレイするときには不要です)。RUNをしたらキーボードの1〜9のいずれかを押してステージ選択を行います。
 キャラは下画面をタッチすることでアナログコントローラのように360度自由な方向に自由な速度で動かすことができます。タッチした画面から手を離すとジャンプします。ジャンプ中に下画面をタッチすることでジャンプの距離や方向を調整できます。
 島を足場にして向こう岸にたどり着けばクリアです。画面外や海の上に着地するとゲームオーバーです。クリアやゲームオーバーの時は再び[A]ボタンでリトライができるため再びプレイしたいステージを選択してください。

《 攻略法 》

 このゲームはジャンプしていない時のみスコアが入りますが、狭い隙間はジャンプせずに渡ることができるためジャンプ回数を減らせば高スコアが狙えます。またジャンプ回数が少なくなるルートを見つけ出すのも高スコアの鍵になります。
 フルバージョンと同じく全力で後ろ移動を行うことでスクロールに合わせてその場に静止することが可能になります。これを使わないとクリアは難しいでしょう。ただし、当たり判定は足場に身体の一部でも乗っていればセーフだったフルバージョンとは異なり足場に身体の中央部分が乗ってないとミスになります。
 なお、ステージ構成はフルバージョンとは異なっていますが、全ステージクリアできることを確認しているので頑張ってクリアしてください。

ちなみにステージ1の私の最高スコアは108379点です。

《 更新情報 》

◎ver.1.1 (2014/07/19)

ver.1.0からの主な変更点
ステージ1は非常に簡単ですが、10万点を狙おうとしたらかなりシビアなプレイが要求されてきます。

《 改造点 》

キャラ移動はタッチで問題ないけどジャンプだけはボタンでやりたいという人は21行を次のように変更してください。(どのボタンを押してもジャンプできます)

 PB=BT:BT=BUTTON()IF!PB*BT*!L THEN BEEP 8G=6L=G
  (※THEN 以下は変更はありません)

キャラ移動もボタンでやりたいという人は改造箇所が多くなるためフルバージョンの方をプレイしてみてください(ボタンでの移動はこのゲームの醍醐味を味わえないためあまりオススメできません)

《 プレイ動画 》


※この動画はver.1.0のプレイを撮影したものです。

↑TOP


PETIT RUN D(視点切り替え対応バージョン)

【プチコン/mkII 両対応】(ホームメニュー非対応) 2011年12月4日 公開

プログラムリスト QRコード(ファイル名:OCHAPRDC)

《 遊び方 》

タイムアタック専用の疑似3Dのレースゲームです。基本的には標準のPETIT RUNと同じであるためまずはこちらをご覧ください。
ただし、60fpsでの動作と1画面のプログラムサイズを維持するために標準のPETIT RUNと比べて表示はかなり簡素化されています。
画面表示は一番左上の数字がスピードでその下がタイムとゴールまでの残り距離となっています。

このゲームの特徴は私が考案した視点変更アルゴリズム(参考動画)[プログラムリストのQRコード(ファイル名:OCHAVIEW)]によってゲーム中に自由に視点変更ができることです。
[R]ボタンを押すことでドライバー視点から後方視点へと変わります。(本当はトグル切り替えにしたかったけど1画面では無理でした)
あとコースデータや攻略法などは標準のPETIT RUNと全く同じです。タイムアタックの記録狙いならば標準のPETIT RUNをプレイした方がいいかもしれません。(画面情報が少なすぎてドライバー視点ではちょっと厳しい)

《 プレイ動画 》



おまけ

ドライバー視点だけあれば十分という人のために「PETIT RUN D(ドライバー視点専用バージョン)QRコード(ファイル名:OCHAPRDN)も用意しました。
後方視点への切り替えが無くなった代わりに標準のPETIT RUNと同じ画面レイアウトになり、なおかつプログラムサイズは1行少ない23行なので多少は入力が楽になります。

↑TOP


PETIT RUN

【プチコン/mkII 両対応】(ホームメニュー非対応) 2011年12月4日 公開
2012年3月18日 追記

プログラムリスト QRコード(ファイル名:OCHAPRUN)

《 遊び方 》

タイムアタック専用の疑似3Dのレースゲームです。60fpsで動作しているので動きはとてもなめらかです。
RUNをしたらすぐに開始します。
操作は簡単で十字ボタンが左右移動、[A]ボタンがアクセルです。アクセルを離せばブレーキになります。
画面表示は一番上に表示されている赤いバーがスピードメーターでタイムとゴールまでの残り距離となっています。

「別のコースをプレイしたい」という人は簡単にコースが書き換えられるのでオリジナルのコースを造ってみましょう。6行目のC$の内容を書き換えるだけです。
コースデータは下記のように構成されています。

コースデータ構成
急カーブ   直線   急カーブ
オプションとしてコース2〜コース4のデータも用意していますので活用ください。
個人的にはコース4の高速Zがおすすめです。

《 プレイ動画 》


《 攻略法 》

急カーブは十分に速度を落とせば簡単に曲がれます。万一、コースから大きくはみ出したときは一旦アクセルを離して十字ボタンで移動すれば簡単にコースへ復帰できます。
しかし、タイムを縮めるためにはいかに速度を落とさずにカーブを曲がれるかが重要になってきます。そのためにはコースのライン取りが重要になります。スローインファストアウトを心掛けると良いでしょう。
また、このゲームでは左右移動をしない時、つまり直進走行中は加速と最高速がアップするターボ状態になっています。タイム短縮のためにはこれを活用していきましょう。

ちなみにデフォのコースでの私のコースレコードは19.76秒です。ライン取りがほぼ完璧ならば最終コーナー以外はアクセル全開で曲がることができます。

コースレコード
コースNo.コース長コースデータコースレコード備考
コース1

25

556765434543457656431255

19.76秒

デフォのコース
コース2

16

1199119911991199

17.38秒

くねくね
コース3

21

314159265358979323846

21.91秒

パイ
コース4

23

55555559555555515555555

16.73秒

高速Z
※コース2以降は上記を参考にして別途データを入力してください

PETIT RUN for mkII

【mkII専用】

mkIIでは動作速度が大幅に高速化されているのでそれに合わせてコース表示の高精細化を行いました(コースの高精細化以外は同一内容)。すでにリスト入力済みの方は下記のように変更すれば良いだけです。
初代とmkIIの両方を持っている方は初代の方でこの変更を行って動作速度を比較すればmkIIの高速化具合がはっきりと分かると思います。

5行目P=0.9P=0.92
11行目E=7E=5
14行目FOR I=0TO 20FOR I=0TO 30

新規入力の方はこちらをどうぞ
プログラムリストQRコード(ファイル名:OCHAPRM2)
このfor mkIIは単なる高精細化のみですが、mkII用に完全にリメイクしたPETIT RUN mkIIも作りました。

↑TOP


プチコン スキー

【プチコン/mkII 両対応】(ホームメニュー非対応) 2011年11月27日 公開

プログラムリスト QRコード(ファイル名:OCHAPSKI)

《 遊び方 》

疑似3Dのスキーゲームです。
RUNをしたらすぐに開始します。
旗が遠くから迫って来るので[L][R]ボタン(もしくは十字ボタンの左右)で左右旋回をして2本の旗の間を通過してください。左右旋回を行うことで速度が落ちるため通過しやすくなります。
旗の間を通過できない時はMISSとなりゲームオーバーです。
10本通過するまでにかかったタイムを競います。画面左上に出ているLEFTの数が通過しなくてはならない残りの旗の本数となります。
あとプレイヤーから伸びている青い線は進行方向の目安となるガイドラインです。

《 プレイ動画 》


《 攻略法 》

操作に慣れるまでは上記の動画のようにタイミングよく[L]「R]を押して減速をしつつガイドラインの線を参考に旗の間を通すようにすればいいと思います。(ガイドラインはあくまで目安であり速度が速くなればなるほどガイドライン通りに動作しなくなる)
操作に慣れてきたら次第に減速する量を減らすことでタイムはどんどん縮まっていきますが旗の動きについて行けなくなるかもしれません。左右制御できる速さを維持できるかが重要です
また、旗は左右交互に出てくるのでただ通過するだけではなく最短ルートを通過することが高タイムを出すのに必要になります。
ちなみに私の自己最高タイムは15.76秒です。

おまけ

スキーゲームといえば昔ながらのPRINTによるスクロール機能を使ったものを想像する人もいると思うので「ワンキースキーゲーム」QRコード(ファイル名:OCHA1SKI)も作ってみました。
シンプルなので操作方法は説明不要でしょう。

↑TOP


ピョン子

【プチコン/mkII 両対応】(ホームメニュー非対応) 2011年11月20日 公開

プログラムリスト QRコード(ファイル名:OCHAPYON)

《 遊び方 》

ポケコン用の「2LINEピョンコ」のプチコン移植です。
RUNをしたらすぐに開始します。
下画面のみを使ってジャンプさせて右隅にある赤いゴールラインにちょうど乗ればステージクリアです。ステージ5までクリアしたらゲーム終了になるのでそこまでかかったSTEP数の小ささを競ってください。
穴に落ちたりゴールラインを超えたらスタート位置からやり直しとなります。当たり判定は身体の中央真下(足先)の1ドット分なのでそれが地面に付いていればセーフです。
操作は、下画面のどの部分を使ってもいいので素早くこするように直線を描けばその速度や方向でジャンプする速度や方向が決まります。素早くこすれば高く(遠く)ジャンプできます。真上(もしくは真下)に向かってこすれば真上にジャンプすることも可能です。(※下画面には何も表示されません)

あとキーを押した時のシステム音が気になると思うので事前にSYSBEEP=0としてシステム音を消しておくことを推奨します。(元に戻すにはSYSBEEP=1とすれば良い)

《 プレイ動画 》

↑TOP


プチコン100m走

【プチコン/mkII 両対応】(ホームメニュー対応) 2011年11月6日 公開

プログラムリスト QRコード(ファイル名:OCHA100M)

《 遊び方 》

RUNをしたらすぐに開始します。[A][B]ボタンを交互に押してゴールまで走ってください。
[START]ボタンでリトライができます。

《 プレイ動画 》



初のスプライト使用ゲームです。プチコンのスプライトは高速なので速度面を気にすることなくプログラミングできましたけど1画面に収めるのには苦労しました。
ちなみに私の自己最高は9.82秒です。

↑TOP


ドットよけゲーム

【プチコン/mkII 両対応】(ホームメニュー対応) 2011年11月1日 公開

プログラムリスト QRコード(ファイル名:OCHADOTG)

《 遊び方 》

RUNをしたらすぐに開始します。[A]ボタンを押している時は画面上に進み押してない時は下に進みます。
隕石(黄色いドット)や自分の軌跡に当たったり、画面の上下にから出ないようにうまくコントロールして画面右まで進めばクリアです。
クリアしても軌跡は消えないためステージが進む毎に移動できるエリアは狭くなって難しくなります。
[START]ボタンでリトライができます。

↑TOP


プチコン50m走

2011年11月1日 公開

プログラムリスト QRコード(ファイル名:OCHA050M)

《 遊び方 》

初のプチコン用ゲームです。
RUNをしたらすぐに開始します。[A][B]ボタンを交互に押してゴール(G)まで走ってください。
[START]ボタンでリトライができます。
私は新しいマシンを触ったら100m走の類は必ず作っています(笑)

《注意》
このゲームはmkIIでも一応動作はしますがVSYNCが使用されてないためmkIIで実行するとタイムの進み方が速くなってしまいます。

↑TOP


ツール


PETIT KEYBOARD mkII

【mkII専用】(ホームメニュー対応) 2012年10月28日 公開

プログラムリスト QRコード(ファイル名:OCHAPKB2)


《 使用方法 》

鍵盤のサイズや位置を自由に調整可能なキーボードプログラムです。
上画面に出ている数字は左から順に鍵盤数(白鍵の数)、鍵盤の位置、音色No.を示します。ボタン操作によって鍵盤数を変える(つまり鍵盤サイズを変える)ことができ、必要な音域になるように鍵盤の位置を白鍵1つ単位で変えられるためプチコン用の鍵盤演奏プログラムにありがちな鍵盤サイズが小さくてタッチペンでないと演奏できないという問題点を改善でき指によって手軽な演奏を可能にしてくれます
また、プチコンmkIIに標準で備わっているGM音源互換の音色をすべて使えるし、押した鍵盤は赤く光るため正しく押されているかというのも一目で分かります。

◎ボタン操作
[B] [A] ボタン鍵盤数の増減 (4〜25の範囲)
十字ボタン [←] [→]鍵盤数の位置調整 (-35〜+14の範囲)
十字ボタン [↑] [↓]音色No.の増減 (0〜129の範囲、ループあり)
[L] ボタン音色No.を+25する (0〜129の範囲、ループあり)
[R] ボタン鍵盤の位置、音色No.をデフォ設定に戻す。 
(左端の鍵盤がC4、音色は0番のグランドピアノになる)
画面タッチをしている間は音が鳴るため画面にタッチした状態で次に弾く鍵盤の位置まで指を持っていってその鍵盤を改めて押さえるとなめらかな演奏が可能になります。


《 更新情報 》

◎ver.1.01 (2012/10/29)

 タッチしながら鍵盤の移動をするとまれに鍵盤が消えてしまう不具合の修正。
 あと初出時にQRコードとリストが未完成版のものだったのでそれを差し替えました。

《 改造点 》

1画面のサイズで必要な機能は粗方入っているのですがあと需要があるとすれば録音、再生機能くらいでしょう。
Tipsコーナーにあるリプレイデータの記録をする方法を参考に1フレームごとに押したボタンではなく変数Zの値(0〜127の値をとり音の高さを示す)をGRPに記録すれば簡単に実現可能です。(もちろん、押したボタンとタッチした座標を記録しておいてもいいけどすべての設定がデフォの状態から録音開始しないと正確に再生できないので注意)

《 実行動画 》



このプログラムの鍵盤演奏部分は私の「棒歌ロイドキーボード」がベースになっています。この鍵盤演奏部分をより使いやすくしてリスト短縮によって1画面に収めたものが当プログラムとなります。したがって、1年前にテスト用に作った「PETIT KEYBOARD」とはまるで別物になっています。

↑TOP


棒歌ロイドキーボード(1画面版)

【mkII専用】(ホームメニュー対応) 2012年4月2日 公開

プログラムリスト QRコード(ファイル名:OCHA1BKB)


《 使用方法 》

リアルタイムで文字入力をしながら歌わせることができる演奏プログラムです。
プチコン標準のカナ入力モードを使いボタン操作で演奏します。
音階は十字ボタンで決定し、[R]ボタンで1オクターブ上がり、[A][B][X][Y]いずれかのボタンを押せば半音上がります。(十字ボタンを押した時点で音が出て、十字ボタンを離すか一定時間経過で音が止まる)
終了は[START]+[L](もしくは[START]+[R])ボタンです。

音階の割り当て
ファ
右下
左下
左上

《 注 意 》
拗音と「ヲ」は発音できません。(「オ」で代用してください)
濁音、半濁音は発音できますが、画面表記上は清音となっています。

1画面ではないより快適に演奏できる高性能版「棒歌ロイドキーボード」も作りました。


↑TOP


棒歌ロイド OSP2

【mkII 専用】 2012年3月25日 公開

プログラムリスト QRコード(ファイル名:OCHAOSP2)

旧バージョンはこちら→プログラムリスト / QRコード(ファイル名:OCHAOSP)

《 使用方法 》

ボーカロイドならぬ棒歌ロイドです。
パラメータを手動設定する必要が無く曲に合わせて自動的に歌わせることができます。
ver.1では私の独自MML演奏プログラム「OMP」と一体型となっていましたが、ver.2は歌唱エンジンが独立したものになったので自分の好きなMML演奏プログラムと組み合わせることが可能になっています。(※OSP2単体では使用できないためMML演奏プログラムが別途必要です)

あらかじめK$に歌詞データを入れておいてMML演奏プログラムでBEEPで音を鳴らす代わりにGOSUB @OSPとすれば良いです。
歌詞データに関しては1つの音符ごとに「:(コロン)」で区切ります。(※歌詞の最後にも「:」は必要です。)
その際にはあらかじめ変数T、X、Y、Zに指定された値を入れておく必要があります。

変数T(テンポ)その曲のテンポ
(1分あたり四分音符いくつ分かという一般的なもの)
変数X(歌詞データの位置)その歌詞データの最初から歌う場合はOSPを呼び出す前にX=0<とする
(※基本的にX=0以外にすることはないと思います。)
変数Y(音長)全音符=1、二分音符=2、四分音符=4、八分音符=8
(※小数による指定も可能ですが、MML演奏プログラムの方に音ずれ対策の必要性があります)
付点をサポートしているMMLで音長が変数L、付点の有無が変数Fに入っているならばY=L/(F/2+1)とすればよい
変数Z(音高)「低いド(C3)が0」で半音上がるごとに1大きくなります。
(※Zの値は -24≦Z≦35 の範囲で指定できますが、あまり高い音や低い音は音程がずれる可能性があります)
MML演奏ルーチンへの組み込み方がよく分からない人のためにOMPとOSP2を組み合わせたものも用意したので参考にしてみてください。

 OMP with OSP2
プログラムリスト QRコード(ファイル名:OCHAOMPS)


OMPとの組み合わせであればMML演奏ルーチンを込みでも1画面に収まります。
K$に歌詞データ、M$にMMLデータを入れてGOSUB @OMPとするだけで自動的に曲に合わせて歌ってくれます。
例 童謡「春が来た」より最初の4小節
MMLデータ$9:4H2EF4HJH2EF4HMJH6E2A<C4*
歌詞データハ:ル:ガ:キ:タ:ハ:ル:ガ:キ:タ:ド:コ:ニ:キ:タ:

《 データ形式の説明 》

音階データは「音長・音高」という組み合わせになっています。(※音長を省略時には前回指定したものが維持される)
休符は「*」です。

 4A ・・・ 4の長さAの高さの音を鳴らす
 8* ・・・ 8の長さ休む

音長は指定した数字に比例した長さが鳴ります。(4が四分音符ならば2が八分音符、8が二分音符になる)
音高は「A」が「低いド(C3)で半音上がるごとにB、C・・・とアスキーコードが1ずつ増えます。 テンポは「$」と「:」で挟んでください。(※曲の最初に必ずテンポ指定が必要)
テンポ1で音長1の音が1秒間鳴り、テンポに比例して曲が速くなります。

MMLデータそのものはポケコン用のOMPと同じであるため詳しくはこちらを見てください。
あと歌詞データ内でTALKコマンドはすべて使えるので活用してください。

OMPは使いにくいという人もいるかもしれません。
そこで今度は一般的なMMLに近い「プチコンMML」と組み合わせてみました。

 プチコンMML with OSP2

いつも使っているMML演奏プログラムにOSPを組み込む場合の詳細な方法も書いているので参考にしてみてください。
複数トラックをサポートしている演奏プログラムならば1トラックをOSP用にすれば和音演奏しながら歌わせることができます。また制御用に適当なMML演奏プログラムを用いてBGMPLAYで定義した曲を伴奏代わりにして歌わせることもできます。

《 BGMPLAYを使用して上手く歌わせるためには 》
◎制御用のMML演奏プログラムにはWAITではなくVSYNCを使う。(WAITでは音がずれてしまう)
◎最初のVSYNCのウエイトの前に必ず1回はVSYNCを実行しておく。
◎VSYNCによるウエイト値が小数にならないようなテンポや音長にする。
◎TALKはタイムラグが大きいのでBGMPLAYのMMLの先頭に16分休符や32分休符を付けるとタイミングが合いやすい。

《 実行動画 》


《注意》この動画ではBGMPLAYとの対応を分かりやすくするためにOMPを一般的な値のテンポで使用可能にしたものを使っています。

ちなみにOSPはOchame's Song Programの略であり、Otegaru Song Programの略でもあります。

ver.1からの主な改良点
◎OMP以外のMML演奏プログラムが使用可能になった。
◎長い音符もほぼ正確な長さで歌えるようになった。
◎長い音符の発声タイムラグが減った。

※このOSPは自作プログラムに自由に使用してもらって構いません。
自作ゲーム内で歌わせたりするのはいかがですか?


このプログラムの簡単な仕組みや自分でTALK命令を使って歌わせたいという人はTipsコーナーの
「TALKを使って歌わせる方法」に書いているので参考にしてみてください。

↑TOP


PETIT KEYBOARD

【プチコン/mkII 両対応】 2011年11月16日 公開

プログラムリスト QRコード(ファイル名:OCHAPTKB)

《 使い方 》

超シンプルなキーボードプログラムです。
プチコンのソフトウェアキーボードを押せばそれに設定された音が出ます。
簡易キーボードならプチコン内蔵のSAMPLE3があるからわざわざ入力する価値があるかは微妙ですがキーの追加が容易なのと処理速度が速いというメリットがあります。(プチコンは速いから速度面のメリットは体感できないけど)
キーを押した時のシステム音が気になると思うので事前にSYSBEEP=0としてシステム音を消しておくことを推奨します。(元に戻すにはSYSBEEP=1とすれば良い)
あと、デフォの設定は下記のようになっています。

     [W][E]   [T][Y][U]   [O][P]   [*][(][)]
     #ド #レ    #ファ#ソ #ラ    #ド #レ    #ファ#ソ #ラ
[!][A][S][D][F][G][H][J][K][L][;][:][<][>]
 シ  ド  レ  ミ  ファ ソ  ラ  シ  ド  レ  ミ  ファ ソ  ラ

《 改造点 》

1行目の変数Oの値を変えるとオクターブを変えることができます。(デフォのキー設定だと1〜2に設定可能)
使用するキーも設定変更可能です。2行目の変数K$に「ド、#ド、レ、#レ、ミ、ファ、#ファ、ソ、#ソ、ラ、#ラ、シ、ド」の順に書き込んでください。プチコンで出せる音域分だけ使用するキーは増やせます。
なお、「ド」からではなく別の音から設定する場合は1行目の変数Pの値を変えればできます。

P=0
P=2、もしくは、P=-10
P=4、もしくは、P=-8
ファP=5、もしくは、P=-7
P=7、もしくは、P=-5
P=9、もしくは、P=-3
P=11、もしくは、P=-1

BEEPの引数の「22」を変えれば別の音色が鳴らせますが、任意のボタンを押すことで実行中に音色を変えられるようにするのもいいかもしれません。

ちなみにこのプログラムはポケコン用の1行プログラムを移植したものです。ポケコン用の方は2行で録音再生機能を付けた「2LINEオルガン」を公開しています。

mkII用にリメイクした(というか、完全に別物となった)PETIT KEYBOARD mkIIも作りました。

↑TOP


音階演奏ソフト OMP for BGM

【プチコン/mkII 両対応】 2011年11月13日 公開
2011年11月14日 追記

プログラムリスト

《 使用方法 》

この音階演奏ルーチンは自作ゲームなどへの組み込みを前提にしたものです。
基本的な使用方法はOMP和音対応バージョンと同じです。ただし、BGMとして使用するためにはメインルーチンから常にGOSUB @OMPとする必要があります。
BGMは自動ループ設定となっているため途中てやめたり別の曲に変えたりして再び最初から鳴らしたい場合にはGOSUBを実行する前に FOR I=0 N-1:Z(I)=0:NEXT として演奏を初期化してください。

《 注意点 》

ウエイトにMAINCNTLを使用している関係上、1/60秒単位でしかウエイトを入れることができずW(I)の値が小数になった場合はメインルーチン1回分の処理時間(もしくは1/60秒)だけ音ずれしてしまう可能性があります。
またメインルーチンが60fpsよりも遅いゲームのBGMに使用する場合には音ずれの可能性があります。20fpsでなおかつ高速な演奏をした場合にはこの動画のようになります。遅いゲームのBGMに使う場合は個別対策をしてカバーするか、和音は諦めて単音演奏にするといいでしょう。

あと重大な注意点としてプチコンで扱える数字に上限があるためMAINCNTLにウエイト値を合算した場合に8738秒に1回オーバーフローになってしまいます。実際にゲームに組み込む場合にはフラグ処理をしてオーバーフローにならないようにする方が良いでしょう。(この処理を加えると1画面に収まらなかったのでごめんなさい)
メインルーチンが十分に速いならばMAINCNTLではなくOMP和音対応バージョンと同じくVSYNCでウエイトをとればテンポは若干狂ってしまうもののオーバーフロー対策が不要になります。

※このOMPは自作プログラムに自由に使用してもらって構いません。

このOMP for BGMでも「リストが長い」という人のためにさらに機能縮小版を作ってみました。

《 OMP mini 》

プログラムリストはこちら

機能縮小に伴い、若干MML表記方法は変わっています。
主な仕様変更は音長指定機能、区切り機能の削減です。(アスキーコード64以下はすべて休符として機能している)
曲頭から演奏する場合にはあらかじめV=0を実行して演奏を初期化しておいてください。
音長指定が無くなっているため音長を表記したい場合は「*」を入れてウエイト調整をしてください。(従来のOMP用のMMLデータを変換する場合は、長さ指定からマイナス1つ分だけ「*」を入れる)

《使用例》
通常のOMPの場合 2MO4Q → OMP miniの場合 M*O*Q***


MMLの表記方法は変わっていますが、通常のOMPでもそのまま再生可能です。(ただし、最初に音長1を指定する必要がある)
MMLのデータサイズは通常のOMPよりも大きくなりますが、基本的には音ずれが無いというメリットがあります。

※上記のように音長指定値がすべて2の倍数のデータならばMOQ*としてテンポを2分の1にすれば良いので一概にデータサイズが大きくなるとは限らない。

あとMAINCNTLではなくVSYNCを使用したバージョンも用意しました。
MAINCNTLで「オーバーフロー対策をしたらリストが長くなる」と敬遠している人はこちらのバージョンを使用ください。
VSYNCを使用している関係上、演奏速度はメインルーチンの実行速度に依存してしまうためテンポは微調整が必要です。
※60fpsのゲームならばテンポは2倍、30fpsのゲームならばテンポは3倍に設定する必要がありますが、60fpsのゲームでメインルーチン内でVSYNC 1を使用している場合はメインルーチンかOMPで使用しているVSYNCのどちらかを削ることで補正は不要になります。



このminiを見てもまだ「一番小さいプログラムを頼む」と言っている人のためにさらにコンパクトサイズの「OMPプチ」を作ってみました。
テンポ設定機能を省き単音演奏のみに限定した超シンプルなBGM演奏ルーチンです。(演奏速度は完全にメインルーチンに依存するため「*」を適当に使って速度調整してください)

「そんなプログラムで大丈夫か?」「大丈夫だ、問題ない」

↑TOP


音階演奏ソフト OMP 和音対応バージョン

【プチコン/mkII 両対応】 2011年11月13日 公開

プログラムリスト

《 使用方法 》

この音階演奏ルーチンはは自作ゲームなどへの組み込みを前提にしたものです。
あらかじめ配列変数M$配列変数W配列変数Zを演奏するトラック数の分だけ確保しておいてください。配列変数M$に音階データを入れてGOSUB @OMPとすれば和音で音階演奏ができます。(変数Nにも演奏するトラック数を入れておいてください)
データ形式はポケコン用と同じなので詳しくはこちらを見てください。

《 注意点 》

単音版OMPにはあったテンポ指定機能は省かれているためGOSUBを実行する前に変数Tにテンポを入れておいてください。これは1画面に収まらなかったと言う理由ともう1つテンポ指定による音ずれ問題があるからです。
ウエイトにVSYNCを使用している関係上、1/60秒単位でしかウエイトを入れることができずW(I)の値が小数になった場合は1/60秒ほど音ずれしてしまう可能性があります。(テンポは極力60の約数で指定してください)
とはいえ、和音演奏にもかかわらずMMLをリアルタイム解析し、リストも短いためゲームに組み込むのは容易でしょう。
各トラックの演奏時間が異なる場合は短いトラックが演奏し終わった時点で終了します。

※このOMPは自作プログラムに自由に使用してもらって構いません。

ver1.0とver2.0のデータ互換性について

ver1.0である単音バージョンはポケコン版と完全互換となっていましたがver2.0は和音に対応するために下記の2つの点においてポケコン版のデータと差異があります。

(1)テンポ指定がMMLでできない
  • これは和音演奏で行うと音ずれが発生してしまう可能性が高いためです。

(2)1オクターブ低い

  • ポケコン版と同じ高さだと3オクターブしか出せないためです。
    これによってプチコンのスペックである4オクターブ分が出せるようになりました。


↑TOP


音階演奏ソフト OMP

【プチコン/mkII 両対応】 2011年11月1日 公開

プログラムリスト

《 使用方法 》

このソフトは自作ゲームなどへの組み込みを前提にしたものです。変数M$に音階データを入れてGOSUB @OMPとすれば音階演奏ができます。
データ形式はポケコン用と同じなので詳しくはこちらを見てください。
すでに和音演奏ルーチンが存在する中であまり意味があるとは思えないですが、プログラムサイズおよびMMLデータのサイズが小さいため手入力がメインのプチコンではそれなりに価値はあると思います。

隠し機能 簡易和音演奏機能

この単音版OMPは「プチコンMML」と同じ簡易和音演奏機能を備えています。
使い方は簡単で音長0を指定して一度に鳴らしたい音を羅列するだけです。(0AEHでコードCとなる)
あとは必要に応じて休符を使って時間調整すれば簡単な楽曲なら問題なく和音演奏できます。

 例1 $8:0AE4H0AEH4K0ADH C、C7、Cm(一般的なMMLでテンポ120の四分音符相当の速度)
 例2 $8:0AE4TQ8Q0FH4O8O0AE4MOQR0H4TT8T童謡「ちょうちょ」(最初の4小節)

※ポケコン版OMPとデータ完全互換性を謳うため隠し機能とさせていただきました。

※このOMPは自作プログラムに自由に使用してもらって構いません。

↑TOP


このページは2011年11月〜2012年10月に初公開した1画面プログラムを記載しています。
1画面プログラムのページ → 1page 2page プチコンオリンピック


RETURN/RETURN *MAIN

inserted by FC2 system