ギャラクティックストームの隠しコマンド入力と連射用の回路

 ギャラクティックストームというゲームの隠しコマンドと連射を行う回路という、需要全く無さそうな回路を作ってみて、無事に動いたので結果をまとめておきます。


 ギャラクティックストームというゲームがあるのですが、これはコインを入れると表示されるタイトル画面で以下のコマンドを入れると様々な効果があります。
2020年6月23日追記
 下記動画で今まで記載していた以外のコマンドが記載されていましたので、SHOT1を使うコマンドを追記しました。また、コマンド入力用の基板を作成していますので、必要な場合は問い合わせいただければ対応します。

  • SHOT1(右トリガー)*55 = 1面で終了
  • SHOT1(右トリガー)*66 = 3面突入時に6000万点加算
  • SHOT3(右ウェポン)*33 = 高速連射モード
  • SHOT2(左トリガー)*77 = ダメージ半減
  • SHOT4(左ウェポン)*44 = 機体サイズ縮小

 これを毎回入れるのは非常にかったるいので、PICを使って上記コマンドを入力出来るような回路と、トリガーに連射を追加する回路を作ってみました。

 仕様としては以下のような仕様となっています。

  • START+ボタンを押すと隠しコマンドを入力した後にSTARTが押される。
  • START+ボタンを押す前・押した後はゲームが始まるまでボタン類に触れないこと。
  • STARTを押せば隠しコマンド入力無しでスタート可能。
  • SHOT2を押しっぱなしで連射可能。
  • START+ボタンを外部に取り付ける場合はSTART_PLUSタグ部分にボタンを追加する。
  • SHOT2, SHOT3, SHOT4, STARTはそれぞれのボタンに配線する。
  • SHOT2_PCB, SHOT3_PCB, SHOT4_PCB, START_PCBはそれぞれ基板の対応した箇所に半田付けを行う。


 回路図は以下のような回路となります。

 デバッグがやりやすいように電源や入出力にコネクタを取り付けていますが、必要無ければコネクタ無しでそのまま半田付けしてしまっても問題ありません。
 実装例として今回作った物の表側は

表だけ見ると全然余裕のように見えますが

裏側を見ると「うわぁ」ですね。部品を何も考えず適当に置いたのが敗因です。抵抗は一つずつ取り付けるのは面倒だったため、集合抵抗を使っています。同じような回路になるように配線やピンアサインなどは好きにいじった方がいいでしょう。


 PICの中身ですが、今回はC言語で作成しています。環境としてはMPLAB X IDE v1.50にXC8を使ってコンパイルしています。デバイスとしてPIC12F683を選び、あとはプログラマで内部クロックを使う・マスタクリア(MCLR,4番ピン)を入力ピンとして使う設定にして書き込めば大丈夫なはずです。
 ソースコード

 コードの通り、START_PLUSが押されていれば順にコマンドを送ってスタートを押して、SHOT2が押されていると連射を行うようなソースになっています。ボタンを押す時間などは適当に大丈夫そうな値にしてありますので、これを変えてみたり、同時に押しても大丈夫そうなので同時に押すように改造すると待ち時間が減るかと思います。STARTを押す時間が短いとゲームが始まらないことがありましたので、長めにしてあります。


 MPLAB X IDEとXC8がインストールされている環境でmakeでhexファイルが作成出来るmakefileも置いておきます。

 ソースコードをgs_command.cというファイル名で保存し、makefileとして上記内容をファイルとして作成してcygwinやMPLAB X IDEにインストールされているmakeを動かせる環境を作って実行するとHEXファイルなどが生成されます。
 xc8の引数はMPLAB X IDEで使用されている引数をほとんどそのまま使っています。またコピペした後にtabがスペースになっていまっていますので、tabに変換してください。


 コンパイルを行った後のHEXファイルはこちらに置いてありますので、コンパイルするのが面倒な方はどうぞ。


 今回の回路はボタン数個にしか対応していませんが、シフトレジスタを使ったりIOが多いPICにしたりすることにより、ボタンとレバーに対応させればコマンドコントローラを作ることが出来るかと思いますので、いろいろと試してみるのも良いかもしれません。

githubソースコードなどをpushしました

 githubソースコードなどをpushしました。http://github.com/ghhin/galacticstorm-commandのurlから参照出来ます。