悦楽舎 © 2002 hoshi
2019/05/31 (2020/05/31加筆)

ハロー、ココちゃん! for GB(自作ソフト)

悦楽舎10周年を記念して突然GB用自作ソフトを作って公開したりしたのを、11周年で突然Webアプリに移植しました。

(2020/10/07 微修正)

悦楽舎10周年記念!(当時)

ちょうどよかった(?)ので記事は悦楽舎11周年の日に合わせてみました。

最初、5/31?何の日だっけと素で悩んでしまった

おやくそく

自作ソフトの実行には、エミュレーター、ゲーム機の改造などが必要な場合があります。

開発者はいかなる責任を負いません。実行は自己責任で行ってください。

また、ココちゃんGBは個人開発の趣味の二次創作ソフトウェアです。公式に問い合わせることは確実に迷惑です。やめましょう。

つかいかた

基本操作

  • 十字キー: 選ぶ
  • A: 決定/進む
  • Select: 時刻設定リセットフラグON(ホーム画面に戻ったときに再設定)

仕様

ソフト仕様

  • MBC3(ROM 8バンク + RAM 4バンク + RTC)
  • ゲームボーイカラー専用
  • バックライト環境想定した色設定のみ(ライトなしやフロントライトだと色が薄いです)


動作確認済の実行環境

  • GB Flash Cart: EverDriveGBX7
  • Windows: bgb、KiGB、VBA(RTCなし)
  • MacOS: SameBoy


開発言語

  • C言語(GBDK 2.95-3)


ダウンロード (バージョン 1.0.1)

時計機能あり(22kb)

時計機能なし(21kb)


悦楽舎11周年記念!

ただ既存ページを書き直して終わるためにこのblogが設置されたわけじゃない!!


CreateJSを試しつつ、ココちゃんGBをWeb(HTML5 Canvas)に完全移植しました!


※ 注意: クリックすると音が出ます。


Webアプリを単体を開く(iframeが表示されない人もこちらからどうぞ)

(単体で開いたページをホーム画面に追加するとアプリっぽくなります、試してみてね)


Web版の基本操作

  • クリック/タップ: 選ぶ/決定/進む

OSが全部やってくれるので時刻設定の機能はありません。もう21世紀なので


(今更ですが)ココちゃんはアイドル活動をサポートしてくれるSiriのようなAIアシスタントキャラクターで、スマホで開いてホーム画面に追加すると一気にそれっぽくなります。どうしてもっと早くWeb移植しなかったのか


スマホで開いて友達に自慢しよう!(画像元)

開発後記2(ツー)

公開から1年だし最後の課題(VBAでRTC動作)を片付けよう!

-> 昨年これだけで1週間粘り、最後は総当たりもしたが動かなかったモノがそう簡単に動くわけがない


blogにGBエミュ埋め込むとかして遊んでもらえる敷居を下げよう!

-> (今の)wasmboyはRTC非対応、音のレイテンシーも大きい


てか、時計機能の実用性に問題あるよね?

-> ソフト側はどうしようもない(実機+EverDriveGBX7はジャンクのゼンマイ時計並にズレる、エミュは終了するとRTC動かない(当然))


というわけで、時計アプリとしてちゃんと使えて、敷居も下がるWeb版が出来ました。自分にしては珍しく解決方法が現代的ですね

GB版の開発後記(アプリ内参照)には開発に4週間かかったと書きましたが、web版は11周年当日まであと4日から作り始めて3日で何とかできました(

(最初から素材が全部揃っていたのが大きい)(ソースコードはぐちゃぐちゃ)


CreateJSの使い勝手が良くて、160x144で作って拡大出来たり、音関連の特有の面倒を回避できたり、口パクのアニメもついでに改善出来たりしてとても良かったと思いました(小並感)


あと、ドット絵を綺麗に4倍拡大するのと同じように、ココちゃんのボイスもGB用に変換した4bitPCMから綺麗に4k倍拡大(16bit Wavに変換)とかしました。

ポポポの方はレジスタの値を書き換えてるだけなので、エミュで録音して16bitWav→4bitPCM→16bitWavと再変換してます...これが正しいのかはココにもわかりません。(画像元)

(標準は4bit版ですが再変換なしの16bit版(bgb録音版)が隠し機能で選べるようになってたりなかったりします、探してみてね)

GBDKでのポポポ音再生処理(おまけ)
void playVoice(){ NR33_REG = 0x9D; // b7-0:周波数(11ビットの下位8ビット) delay(45); NR30_REG = 0x80; // b7:出力ON=1 NR34_REG = 0x87; // b7:開始フラグ=1 / b6:カウンタ再生フラグ=0 / b2-0:周波数(11ビットの上位3ビット) delay(60); NR32_REG = 0x20; // b6-5:音量 100%出力=1 ※ミュート(0%出力)=0、50%出力=2、25%出力=3 delay(60); NR30_REG = 0x00; // b7:出力ON=1 NR32_REG = 0x00; // b6-5:音量 100%出力=1 ※ミュート(0%出力)=0、50%出力=2、25%出力=3 }

というわけで、意外といい感じの移植にできました。(自画自賛)

次の自作ソフト(ゲーム)は最初にプロトタイプをjsで作ってから移植とかできるかも(最悪Web版だけ公開への逃げ道ではない)


だいたいなんとかなるWebと違って、C(GBDK)での開発は進んでからゲームとしてイマイチ面白くないと思った時、終わらない大改造全部作り直しの気がするので、かなり重要な工程を踏めるようになったはず...です。

もうこれさえあれば、最高に面白くて非常に素晴らしい誰もが遊ばずにはいられない究極のゲームが出来ることでしょう!!(


...たぶん

ではでは~(