忍者ブログ
ホムペもみてね。 かにかにクラブ http://kani.no.coocan.jp/
上段メニュー開閉(JAVAスクリプト有効時のみ)
カレンダー
03 2024/04 05
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新記事
最新コメント
タイトル横の画像は管理人から返信ありマークです
無題  [10/29 AWJ]
無題  [10/29 AWJ]
無題  [10/28 AWJ]
無題  [10/28 AWJ]
無題  [10/27 AWJ]
無題  [10/25 yasu]
無題  [07/15 まい''ん]
無題  [04/17 まい'ん]
無題  [03/13 km]
無題  [03/13 km]
アーカイブ
[3] [4] [5] [6] [7] [8] [9]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

3月12日付で公開したSYSTEM16用のソースファイルを修正した。
エミュレーション上は何も問題ないが、
入力設定のメニューで P2 側のボタンを「P1」と書いてしまっていた。
PR
なんかセガの説明書に書かれてないポートが全面的に封印されていたので改造した。
ソースファイルダウンロード(zip)

主にテトリス用。
ついでに未使用ポートを使った裏技を探せるように、
 ●SYSTEM16A または SYSTEM16B 用
 ●最大プレイ人数2人(交互1人プレイも含む)
 ●使用ボタンが1個または2個
この3つに該当するゲーム部分を手当たり次第に改造した。
どれも3つボタンまで、エミュレート中のゲームに渡すようにした。
全部のゲームを持ってるわけではないので動作確認は完璧ではない。

ちなみにテトリスの2ボタン目に関しては、
説明書に書いていないだけであって全然未使用ではない。
説明書に「そこには何もつながない」と書いているんだから、
封印するのは正しい判断ではあるのだけど。
ボタン1・2ともに、ブロック回しとして働く。
最近の他社製のテトリスと違って逆方向には回らない。
両方を交互に連打すると、ものすごい速さで回転可能。
同時押しは単品押しと同じ効果になってしまって意味無し。
ゲームに対する思い入れが
 基板>>>>>(越えられない壁)>MAME
なのですっかり忘れてた。

飲みに行ったらちょうど近い席にMAMEに詳しいっぽい人がいたので、
例のアナログ入力の件(7月7日の日記)でMAME作者に連絡取る前に、
単に自分がなんらかの設定ミスをしてる、
なんてことしてないか確かめてみようと話をふってみた。
そこに話が到達する前に二人がかりで、
まともに遊ぶのはあきらめろ、
的なことを言われておしまい。
あれー?w

古いバージョンじゃないときちんと動かないゲームがあるから、
そこまでさかのぼって使うようにするといいらしい。
これはこれで勉強になった。
でもナイストは入力部がまともなバージョンは過去にも一つもないのよね。
4月16日の日記に書いた変な動作(ナイストのみ)がver0.125まで。
5月15日の日記に書いた変な動作(アナログゲー全般)がver0.113から。

0.113からのほうは影響のあるゲームが多数だから、
MAMEいじりに集中できる時間ができたら作者とバトルしなきゃなあなんて思ってたけど、
もしも主張を受け入れてもらえたとしても完全に独りよがりの予感?
まだ作者に連絡を取ってないのに取り込まれてます。

取り込んで欲しかったので手間が省けたのはいいけど、
アナログスティック入力部分が全然ダメなのは修正されていません。
あと、ドキュメントを読んでも、バトルシャークも直っているのに
まったく触れられていません。

ギャプラスの記事とかに海外からの訪問が多いので、
日本語が苦手の人が作者に連絡してくれたのかもしれません。
というわけで、試しにここで連絡っぽいことを書いてみます。

------------------------------------------------

アナログスティック入力の誤動作の確認のしかた。
How to test "ANALOG JOYSTICK MOVES WRONG".

(1) ナイストを起動する。
Start "Night striker".
 DOS-PROMPT>> mame nightstr -joystick

(2) [F2]を押してから[F3]を押す。(テストスイッチを入れて再起動する)
Hit "F2" and "F3". (Switch ON test switch and reboot game.)

(3) クロスハッチが表示されたら[1]を押す。
After crosshatch screen appears, hit "1".

(4) ジョイスティック調整画面になる。
"ADJUST TEST" appears.

(5) ジョイスティックを動かす。
Move joystick.

試しに H:40 V:40 で止めてください。
Try to stop H:40 V:40.

できますか? 私にはできません。
Can you stop there? I can NEVER.

------------------------------------------------
報告用下書き(編集中)

file "inptport.c"
function "static void frame_update_analog_field(analog_field_state *analog)"
line 2165
 アナログスティックを動かしたかどうか判定
 Mame tests "Analog Joystick is moved?"
  この時、H:40で止めてあったとする
  Now, stop at "H:40".
line 2198
 動かしてなければ、この行以降の処理に入る
 If it is NOT Moved, Mame continues to below.
  H:40で止めている=動かしていない
  'Stop at "H:40"' = "Not Moved"
line 2218-2239
 デジタルスティックでアナログ値の上げ下げ処理
 Digital Joystick increases or decreases Analog Value.
  スティックが傾いていたら上げ下げする
  If Joystick is Leaned, Analog Value is increased or decreased.
   H:40で止めている=傾いている
   'Stop at "H:40"' = "Leaned"

「動かしていない」と「傾いている」が衝突
"Not Moved" and "Leaned" collide.
そして、アナログ値が暴れる。
So, Analog Value struggles.
0.125u1 がリリースされたので対応。
ビマニのファイナルが来たよ!!

ビートマニア改造ソース ダウンロード(zip)
ナイトストライカー改造ソース ダウンロード(zip)
アナログ入力ゲーム改造ソース ダウンロード(zip)

ナイストも影響のあるファイルが一個だけ更新されてたので、こっちも改造。

アナログ入力ゲーム改造ソース、というのが、昨日の日記に書いた改造。
コレを使うとナイストのレバーは改善されるけど、
ビマニのターンテーブルもキーボードで入力できなくなります。
マウスで代用するなら
 -dial_device mouse
アナログスティックで代用するなら
 -dial_device joystick
をつけて起動する必要があります。

あと、まだ確認はしてないけど、
怒のループレバーや、ワイルドウエスタンのロータリースイッチなんかも
ターンテーブルと同じ影響があるはず。

まあ、悪影響があるゲームが多いはずなので、
ナイストやスペハリなど、
アナログジョイスティックを使うゲーム専用の改造MAME作成用
であると割り切って使ってください。

公式作者へ連絡してみようという話は作文の段階で難航中。
単に動作ミスだったら修正箇所の指摘だけで簡単だけど、
導入しようとしたそのものがおかしいだろってのは、
(ジョイスティックの値を勝手に書き換えるとか
ディップスイッチを封印してしまうとか)
相手を説得しなきゃいけないし、
それを英語でとなると難易度高いっす。
怪しい所をだいぶ絞り込めた。

--------------------
と思う……。
起動オプションを付け忘れてるとか、そういう間違いがない前提なら……。
元々アナログスティックで操作するゲームを
アナログスティックでプレイする場合は、
 -joystick
 -adstick_device joystick
この2つのどっちかを付けるだけでいいんだよね?
--------------------

それでは、メモ程度に本題。

●関数 update_analog_port()
  (ファイル src\emu\inptport.c の 3058行目から )

まず、アナログスティックを監視している。
前回監視と比較して、スティックが動いていれば、新しい値をターゲットプログラムへ渡して、おしまい。
動いてなければ、スティックを繋いでない時のデジタル入力(キーボードとか)で代用する処理に移る。
この次が怪しい。

3140行目 座標値を減らすキーを押したかどうか監視している
  if (input_seq_pressed(input_port_seq(info->portentry, SEQ_TYPE_DECREMENT)))
3152行目 座標値を増やすキーを押したかどうか監視している
  if (input_seq_pressed(input_port_seq(info->portentry, SEQ_TYPE_INCREMENT)))

これら2箇所で呼ばれてる関数 input_seq_pressed() が、
スティックがニュートラル以外なら、押してなくても、押したという返答している気がする。
この判定の部分を、常に押してない状態に、無理矢理書き換えると期待通りの動きになった。
当然、前回の日記に書いた、一時しのぎの設定は解除して実験した。

--------------------
アナログスティックをちょっとだけ傾けて止める。
動かさないとデジタル処理に突入。
スティックは傾けてあるわけだからそこで反応してしまう。
座標が暴れる。
--------------------

こんな感じか?
あくまでも、起動オプションに間違いがないなら……。
MAME-v0.113以降のアナログゲーム全滅
この話の続き。

とりあえず、プレイする上で個人的に許せるレベルまで、
入力の暴走を抑えることが、設定を変えることでできた。
まだちょっとプルプル震えるけどね。

Tabキーを押して出たメニューの中の4段目
 Analog Controls
を選んで、次に出たメニューの4段目と8段目
 AD Stick X Sensitivity 60%
 AD Stick Y Sensitivity 60%
これら両方を 1% にしてメニューを閉じる。
以上。

スペースハリアーとかメタルホークとか
アナログスティックを使うゲームは全部
同じ作業をしましょう。
自分の使ってるレバーのせいの可能性も無くはないが……。

公式のv0.113以降のアナログスティックの入力が、どのゲームとか関係なしに挙動不審。
v0.112までは大丈夫。(なので、レバーのせいの可能性は低いと思う。)

ニュートラルの所と、最大・最小に傾けた所は、問題ない。
で、中途半端に傾けるとおかしい。
実際のゲーム内では、自機がブルブル震えまくり。
テストモードでは、数値が常に飛びまくり。
アナログには「ブレ」は付き物だが、もはやそういうレベルではない飛びっぷり。

わかりやすく数字で例えると、
 最小の傾き=-100 ニュートラル=0 最大の傾き=+100
として
 -20 くらいに傾けると -100 ~ -20 の範囲内で数字が大暴れ
って感じ。

というわけで、これまでナイスト用改造として公開していたソースを適用しても、
v0.99用の方しか、まともにプレイできないのでした。
ガッカリ。

一応、v0.105とv0.110の改造(非公開)はまともにプレイできたから、
それ以降は動作確認を手抜きしていたのよね。

最初、自分が作ったバグかと思ってびびった。

まあ、個人的には、処理の軽いv0.99の方がちゃんと動いてるからいいけど。
本物の基板持ってるし。
ナイスト改造ソースダウンロード(zip)
ビマニ改造ソースダウンロード(zip)

●ナイスト
今回(v0.125)の公式の変更はパソコンのスペックに余裕があるならオススメなのか?
前回まで、実機では前後2チャンネルのスピーカーを、仮に左右2チャンネルのスピーカーに割り当てて鳴らしていた部分を、
今回から、前後としてコーディングするようになった。(チェイスHQ・コンチネンタルサーカスも同様)
これにより、普通の左右のステレオの環境なら、前後をミックスしたモノラルとして、左右のスピーカーから音楽が鳴るようになった。
そのかわり、左右のスピーカーを前後に置くだけで実機と同じ音に、非常に簡単にできてたのが無理になったけどな。
よけて通り過ぎていった敵弾の風切り音が後ろでなったりする立体感がなくなる。
うちに環境がないから試せないけど、もしかして5.1チャンネルなら、前後できちんと分けて鳴るのか?
これで、ナイストは左右ステレオではない、と何度説明しても理解できずにバグバグ言ってた輩が黙ってくれるに違いない。

改造に関しては、前回とほぼ同じ内容。

●ビマニ
公式の変更は特にこれといって目新しいところ無し。

ビマニではなく、ポップンミュージックとポップンステージのディップスイッチ設定の部分を改造した。
 ●ポップン1修正
  全曲モード解禁
   誤{ DIPSW3-2=on } → 正{ DIPSW3-2=on }
  レイブ解禁
   誤{ DIPSW3-5=on } → 正{ DIPSW3-2=on DIPSW3-5=on }
  ボーナストラック解禁
   誤{ DIPSW3-6=on } → 正{ DIPSW3-2=on DIPSW3-5=on DIPSW3-6=on }
 ●ポップンステージ修正
  隠しモード解禁
   誤{ DIPSW3-1=on DIPSW3-3=on DIPSW3-5=on } → 正{ なし }
   (これは、「EX」専用であり、初代は除外)
ダウンロード(zip)

前回書いた、DIPSWをきちんと触れるようにした改造の、FINALまで対応。

と思ったけど……、

なんか3rdMIX(tribe groove修正版)とFINALの部分を
 #if 0 ~ #endif
で囲んでわざと認識しなくしてあった。
理由がありそうなので、その部分はそのままにしておいたから、7thMIXまで対応。
リンク
最新トラックバック
RSS
QRコード
プロフィール
HN:
かに凹・_・凹かに
下段メニュー開閉(JAVAスクリプト有効時のみ)
忍者ブログ [PR]