ゲーセン近況
ゲーセンというかクリクロ近況になってるけど…
ついに最終決戦?EXBOSS2来たぞ。5面入ったとき残0、道中でエクステンドしてそのままボスまでノーミス(初かも)、ボス発狂で1ミスしてEX突入。ノーミスで倒してEX2開幕で殺られた。ビックリして焦ったちくしょう!
5面道中ノーミスが大きかったのかスコアを3000億近く更新できたのも嬉しい。クリアするまで止めとくつもりだったけど思わず撮影してしまった。クリアしてもこのスコア出せないかもしれないから。(クリアボーナス1兆とかだったら知らんw
にしてもランキングトップの6兆7兆とかどうなってんだろう。残機ボーナスで1機1兆くらい入るの?自分もそれなりに稼いでるつもりだけど、全ノーミスで上手くいってもあそこまでいきそうにないぞ。まだ知らない稼ぎ方があるんだろう。
とりあえずクリア目指してるけど、ダブルブレイクが心地よすぎて稼ぎに走ってしまう…
ただもうクリアはもうすぐだと思いたい!次の近況はクリア報告にしたい!
キーボードマニア専用コントローラの入力を取得する
2019-05-19 追記:JoyToKey Ver6.2 でホイール取れるようになってます。
通知で前のツイートRTされてて思い出したけど、キーマニの専コンのホイールJoyToKeyで取れるようになってるのよ!Ver6.2設定でボタン数増やすことができてButton33と34に割り当てられてる pic.twitter.com/eRojIcYMxy
— K-s (@skymonsters_Ks) 2019年5月19日
以前、ピスコラ動かしたときキーマニの専コン思い出してPCに繋いだら認識してるみたいで、楽しくなってちょっと遊んでた。
久々にピスコラ起動してMIDIキーボード使えるみたいだったから押入れにあるキーマニ専コンいけるか試してみたけどダメだった。予想はしてたけどゲームコントローラの扱いみたい。ptVoice+JoyToKeyならなんとか遊べた pic.twitter.com/B1jQtJzQqI
— K-s (@skymonsters_Ks) 2016年7月3日
セレクトとスタートボタンはButton20と27の妙なところに入ってる。そこにスコープの上下移動割り当て。Button1~6は押しっぱなし状態だった。ホイールにも何か割り当てたかったけど反応無し… pic.twitter.com/I34aMIyUdl
— K-s (@skymonsters_Ks) 2016年7月3日
ただホイールの入力が取れなくて、なんとか取得できないかと色々調べてたらUSBの入出力を直接扱うような方法で取ることができた。
それでモジュール作ったりソフトシンセ的なもの作っていたとき、win10の無料アップデート期間が過ぎかけていたから更新したら専コンが認識しなくなった…他のゲームパッドは認識してるのになんでや…
せっかく作ったモジュールやソフトシンセもったいなかったから、ソフトシンセは(PCの)キーボードで操作できるようにした (Mk-Synth)。モジュールも初めは公開しておこうと思ってたけど自分のPCでも動かないもの上げても…結局そのまま放置した。
しばらく忘れてたころ、windowsの更新で思い出してモジュール動かしてみたら認識した!?更新で不具合が解消されたのか、あのときはたまたま認識しなかっただけなのか…専コン繋げたままPCを再起動したりスリープ復帰すると接続が切れてるけど、繋ぎ直せば認識する。
ということでモジュールも公開。HSP使ってて専コン持ってる人が他にいるかとか考えない!
鍵盤とスタート・セレクトボタンだけならHSPに標準で入ってる mod_joystick.as(winmmのjoyGetPosEx)でも取得はできる。ホイール取得するためだけにこんな面倒なことしなくても、他の簡単な方法ありそうな気もする。
あとホイールはアナログ値じゃなくてデジタル。左右のホイールは共有してるから、左右別々には取れない。アナログだったら使い幅もっと広がりそうだったのが残念…
モジュール作る際に、HSPに付属の mod_usbio.as と USB for HSP | GHP(仮) は大変参考になりました。あと、ReadFile のオーバーラップ処理はほんと手こずった…入力に変更があるまで関数から帰ってこない現象に悩みまくってた。
リアルタイムにサウンドを生成・再生する
Mk-Synth、サウンドの再生にwaveOut系のAPIを使っているのだけど、スクリプトがHSPTV部門用に詰めてて自分でも分かりにくいので、再生部分だけでも分かりやすくなるようにサンプル書いた。
実行するといきなり音が鳴るので音量注意!マウス左ボタンで波形の形を変えれる。
; HSP3.5b4 #include "winmm.as" ; 基になる波形の準備 bwsize = 100 ; 一周期の長さ ddim bwbuf, bwsize repeat bwsize if (cnt < bwsize / 2) { bwbuf(cnt) = 0.2 } else { bwbuf(cnt) = -0.2 } loop bwpos = 0 boxsize = 3 asprate = 0.5 winsx = bwsize * boxsize winsy = asprate * winsx screen 0, winsx, winsy gosub *drawBaseWave channels = 1 bits = 16 samples = 44100 blockalign = channels * bits / 8 wbufnum = 5 wbufblock = 1000 wbufsize = wbufblock * blockalign ; 小さい程反応が早いが音が途切れやすい dim wfx, 4 ; WAVEFORMATEX wfx(0) = 1 | (channels << 16) ; WAVE_FORMAT_PCM wfx(1) = samples wfx(2) = samples * blockalign wfx(3) = blockalign | (bits << 16) ; デバイス オープン dim hwo waveOutOpen varptr(hwo), $ffffffff, varptr(wfx), 0, 0, 0 ; WAVE_MAPPER if stat { dialog "デバイスのオープンに失敗しました" end } ; マルチバッファリング用のバッファ準備 sdim wavBuf, wbufsize * wbufnum dim whd, 8, wbufnum ; WAVEHDR ptwhd = varptr(whd) repeat wbufnum whd(0, cnt) = varptr(wavBuf) + wbufsize * cnt, wbufsize pt = ptwhd + cnt * 32 waveOutPrepareHeader hwo, pt, 32 waveOutWrite hwo, pt, 32 loop nowbuf = 0 onexit goto *bye *mainLoop await 1 stick key, 256 if (key & 256) { ; マウス左ボタン bwbuf(mousex / boxsize) = double((mousey - winsy / 2) / boxsize) * boxsize / winsy * 2 gosub *drawBaseWave } if (whd(4, nowbuf) & 1) { ; WHDR_DONE(1): バッファの再生が終了している gosub *writeWave } goto *mainLoop *drawBaseWave redraw 0 color 255, 255, 255 boxf color 0, 0, 0 repeat bwsize x = cnt * boxsize y = (bwbuf(cnt) + 1) / 2 * winsy boxf x, y, x + boxsize - 1, y + boxsize - 1 loop redraw 1 return *writeWave p = nowbuf * wbufsize repeat wbufblock wpoke wavBuf, cnt * 2 + p, int(bwbuf(bwpos) * $7fff) bwpos = (bwpos + 1) \ bwsize loop waveOutWrite hwo, ptwhd + nowbuf * 32, 32 nowbuf = (nowbuf + 1) \ wbufnum return *bye waveOutReset hwo repeat wbufnum waveOutUnprepareHeader hwo, ptwhd + cnt * 32, 32 loop waveOutClose hwo end end
サウンドのバッファを複数用意しておいて再生が終わったバッファに波形を書くの繰り返し。再生が終わったのを知るのは oncmd で MM_WOM_DONE を受け取る方法もある(こっちが普通?)けど、今回は WAVEHDR構造体 の dwFlags をループでチェックしてる。
波形の作り方で色々音が変わるのが結構楽しい。キーマニ専コンで弾きたかった(Win10に更新したら動かなくなった…
ゲーセン近況
クリクロようやっと5ボス撃破できた!1面で2ミスして諦め全開だったのに何故かそのまま5ボス発狂まで行けて、しかも残一という初記録。ブレイク、ボムぶっ放しで撃破しましたよ。それに発狂の動きもだいぶ分かってきたのもある。バウンドの大小があって大きい時に抜ける感じ。初めはコレ絶対無理って思ってたけど、なんとかなるもんだ。
撃破してよっしゃクリアー!!とはいかないわけで。やっぱりいたよ、二体目が…接近してきてビーム撃ってくる攻撃で終わった。こいつ開幕から嫌らしいバラマキやってくるな。というかこのゲーム全般的になんか弾避けづらい気が…(言い訳
ボチボチ三年以上経つけどクリアはまだ遠そう。まだあのボスもう一回くらい変形隠してそうだし。あとちょっと気分転換に一号機と三号機でもやってみたけど、ロックが遅くて自機スピードが速い三号機が結構辛かった。一号機は二号機とあまり変わらない感じ。どっちも一応5ボスまでは行けた。Z機は、後で出てきた機体だから他のでクリア出来たら使ってみようかな。クリアできるか分からんがw