TETRIS with M5STACK の改造メモ

スケッチサンプルにある”TETRIS with M5STACK”を改造し、
ゲームシステム、操作方法の改良及び、画像、音声を追加したモノを作りました。

次項目の改良をした、バイナリとソースを公開していましたが、
ふと思い立って、現状を調べた所(2012の判例含めて)、
クローンゲーの氾濫の認識から想像したより、著作権的に不味そうなので、公開を取り下げました。

回避の為に枠サイズの調整などは可能ですが、
元のソースにテトリスの名前が有り、これは変更できない事もあります。

公式サンプルに有った為、バイナリ、ソースの一般的な公開も問題ないと判断してしまいました。
割と遊べる形(ガラケーアプリ前期なら売れるレベル)にしてしまったという事もありますが……
ま、現実的にそう大きな問題もないでしょうが、私も別の所では著作権者ですので、念の為。

GPL界隈や、諸々の調査/認識不足に関する反省は別として、
それなりに遊べるゲームも作れる端末で有る事の検証、
バイナリ公開の問題点の把握を含めた実験、
自身のシステム把握と、環境構築という目的は達していますので、作った事は良しとします。
(私的(フォロワー様)にでしたら、ソース他を出すことも構いませんので、TWで連絡ください)

改造のポイントだけ、増加して記載しておきます。
ご参考になれば幸いです。

*改良点

・MP3複数トラック再生実装。
+音質は極めて悪く、ノイズも問題なので何とかしたいが、ライブラリ/ハード的には無理っぽい?
+スレッド化でなんとかならないか?
 +後日、何とかした。下記にソース追加。
・効果音及びBGMを実装。
+SD/SPIFFS両対応。
・SDメニュー(M5Stack-SD-Menu)対応
・起動時にBボタン同時押しで、BGM再生追加 (デフォルトはSEのみ)
・同、Cボタンで同時押しで、全ミュート追加
・Aボタンで左移動、Cボタンで右移動。移動ボタン長押しで、連続移動可。
・Bボタンで回転。Bボタン長押し後に離すと、瞬時落下。
・レベル及びスコア実装。
・『http://shikarunochi.matrix.jp/?p=2296』(しかるのち)様のソースより、
 ネクストブロック表示部分を移植。スコア表示部も引用。
・ブロックデザインを変更。
●2018/10/11
・ソースにコメントを追加し、すこし整理。
・スコアを変更時のみ描画するように改修。
・Bボタン長押し時に、ブロックが光る要素追加。
 +落下モードがわかりやすくなった筈。
・ブート時に、Aボタンと、他の何れかのボタンを同時押しで、
 キーチェーンゲームっぽい見た目になる要素を追加。
 +Sound選択も有効、全押しで、SEのみのモードとなる。

*改造のポイント

・ボタン長押で落下/連続移動
・冒頭変数宣言

・void loop()内

・キー判定部

・落下受付時フラッシュ
・冒頭変数宣言

・void loop()内ラスト

・void setup(void)内

・bool ReviseScreen(Point next_pos, int next_rot)内

・ブロックパターン設定/モノクロモード対応
 +元の色コードの解釈は反転している?
 縦ブロックが赤指定だとすると、コメントアウトした色の方が正しいが……

・冒頭変数宣言

・make_block( int n , uint16_t color )置き換え。

*音周り+調速変更
 +別タスク版に変更。音質、安定性共に向上。
 +使用するMP3は、16bit44MHzモノラルデータをビットレート48kbpsに変換。
  +レートなどの仕様は全てのMP3で統一すること。
  +50%でノーマライズすると音割れしない。
 +SPIFFSにデータがあれば其方を優先、無ければSDに探しに行く。
  +複数トラックを再生する場合は、基本SPIFFSに置く事を推奨。

・冒頭 インクルード/変数宣言
 +BGMは、snd_play(0,”/km_bgm_01.mp3″,0.3f);
  SEは、snd_play(1,”/fall.mp3″,0.4f);という形で発声させる。

・void setup()ラスト

・void loop()冒頭

・void loop()内ラスト近辺
 +delay(25);を削除
 +下記追加

・効果音発声サンプル GetNextPosRot(Point* pnext_pos, int* pnext_rot) 内

・追加コード