FMTownsのアプリケーションの動作報告用
2020-07-28 13:17:50
v20200729 : DAINOSAURの動作確認(こればっかりですが)
・タイトルロゴグラフィックが変 : ビットがずれているような状態? (背景の絵は正常、ロゴのみ)
・動作中にESCキーを押すと停止 : 0092:0B89 CALLF WORD PTR ES:[DI+02H] (ES=0A7E,DI=5C4B) 0A7E:5C4B以降はダンプで見ると明らかにコードでは無い様子
2020-07-30 23:29:23
了解しました!
BREAKキーのジャンプテーブルが↓で破壊されているようですね。多分RAM Diskに値を書き込んでいる箇所だと思うのですが。ジャンプテーブルの置き場所が悪いのか、RAM Diskの置き場所が悪いのかどっちかですね。ただ、CR0のPEビットが立っているのでUnrealモードを使っているのではないかと見ているのですが、だったらあえて物理の10000H台にRAM DISKを置く意味が無さそうなので、RAM Diskの位置のような気がしています。
Memory Write DWORD PTR PHYS:[00010428] (80818181)
4000:00004525 F366A5 REP MOVSD
それから、タイトルのロゴは、なんとなくXの奇数と偶数が入れ替わっているような感じがしていたのですが、やっぱりおかしいんですね?この二点調べてみます。
2020-07-31 10:22:59
Shadow of the Beastをなんとかしようとしていたのですが、またしてもPsygnosisはCD-ROMコマンド 02H (MODE1READ, Status Request無し, Int無し)を出してから Status を待つんですね。FM TOWNSテクニカルデータブックによると、コマンドのSRQビットが立っているとCDCがStatusを返すことになっていますが、このビットに意味は無いの鴨しれないという気がしてきてます。(確かに、ビットが立っているとStatusを返すとは書いてあるけど、立っていなかったらStatusは返さないとは書いていない鴨しれない。)
DINOSAURのタイトルロゴは直しました。ただBreakキーは謎のままです。RAM DiskがキーボードBIOSの一部を破壊する問題で多分RAMDISKの置き場を間違っているのだろう、と、思ったのですが、置き場はGDTに書いて合ってGDTは圧縮データを展開しているだけのようなので、10000H固定っぽいです。だとするとキーボードBIOS(ひょっとするとFalcom独自かも)の置き場ということになりますが。引き続き調査を続行します。
2020-08-01 02:20:45
まだリリースは出してないですが、Githubのソースをビルドすると、Shadow of the Beastも起動するようになりました。が、謎のCRTC設定を使っていて、画面が変です。左に歩くと画面が更新されなくなるし。CRTCの各レジスタの正しい解釈を知ってる人がいたら教えていただけると非常に助かります。ひょっとするとインタレースモードで画面が上半分に詰まってしまう現象が起こる鴨しれないですが、そういうの見かけたら教えていただけるとそれも助かります。鳥あえずAfterburnerなど試した範囲では大丈夫そうなんですがね。Vain DreamとVain Dream 2がプレイ開始までできることを確認しました。DMAのAUTOIモードは転送終了後カウントだけでなくアドレスも巻き戻すことが判明(データシートで確認)して修正したので、同じ問題でひっかかってたソフトはこれで動くようになった鴨しれません。
2020-08-01 10:30:44
>>4 DINOSAURの件
ふと、「キーのジャンプテーブルかぁー、でもスペースキーは正常だよなぁ?」「??? あのアドレス付近はジャンプテーブルっぽい内容ではなかったよなぁ???」「うんづではどうなんだろう????」「BREAKキーって押したこと無いような」と思いましたので、試しにうんづでBREAKキー(PAUSEに割り当て)を押してみました。見事に暴走します。
イメージの問題なのか、元々プロテクトが掛かっていたはずなのでそれの問題なのかは不明ですが、結果は同じアドレスでストップしますので間違いは無いと思います。
実機で実FDで試してみたら・・・・ まさかBREAKキーで止まることは無いとは思いますが・・・ それ以前に私のHCでFD起動出来るか?と言う問題が有りますが、試してみます。
2020-08-01 22:42:34
で、結果は判らずでした。
HCでは起動時にFDにしばらくアクセス後にダンマリ。TownsOS上からはProgramDiskを読み出すとIO.SYSのみが表示されるので一応はハードの故障では無いような反応ですが、以前にDOS6を起動しようとして起動できなかった記憶があるので信用できません。 model2ではTownsOS上からドライブ0側ではエラー,ドライブ1側ではIO.SYSのみが表示される状態からドライブ0側はFDDが故障している様子。 起動させてみましたが動いている様子は無く(モニターが31KHz以上なので、起動中やDINOSAURの実行中は画面が見えない)音楽も鳴らない状態です。 従ってタイトル画面までたどり着けませんでした。
model2に関してはドライブ0とドライブ1をスワップすれば起動できるかもしれませんが、HCは一部のFalcomソフトは自己書換えが有るので486以降のCPUではキャッシュの影響で動作しないと言う話を記憶しているので駄目かもしれません。
2020-08-01 23:18:17
すみません、ジャンプ「テーブル」ではないっぽいです。詳しくは見ていないのですが、Breakキー専用の飛び先っぽいですね。うんづでも暴走したということは、ひょっとすると当時から隠れたままのバグ(多分Breakキーを押して暴走しても何が起こったかわからなかった)だった鴨しれないですね。確認ありがとうございました!
2020-08-01 23:37:23
互換リストにも記入したのですが、スト2のPCMについてです。
・PCMの再生終了時にノイズが乗ることがある
タイトル画面のカーソル移動音で確認できます。他の場所でも起こります。起動直後はあまり気にならないのですが、一度ゲームプレイした後、目立つようになります。
・PCMが鳴らないことがある
バトル開始時の"FIGHT"の掛け声がたまに鳴りません。他では確認できませんでした。(気付いてないだけかも)
スト2は、長いPCMを再生するためにデータを転送しながら再生しているので、その関連かなと思います。
今回はソースを修正してCD-DAをオフにして確認しましたが、各音源の音量調整が出来るようになると便利ですね‥と、さりげなく要望など。
2020-08-02 12:48:16
了解しました。ボリューム調節機能を追加したらどのぐらいのボリュームで実機に近いか確認しやすくなっていいかもしれないですね。やりましょう!(そこまで額は後退してないけど、いや、あれは孫社長が前進してるんでしたか)
ちなみに、今は何やってるかと言うとShadow of the Beast 2でメニュー選択後の太ったドラゴン像のシーン(樽に翼とクビが生えてるようなやつ)をスキップしようとするとCD-ROMのDEI割り込みを取りこぼして無限DRY待ちという状況をなんとかしようとしてます。意図的にDEIを取りこぼさせてタイムアウトさせている可能性もあるのですが、確証が持てません。
しかしPsygnosisのCD-ROM読み取り方式は、あんなやり方でよくスピードが異なる各機種で動作したもんですね。もしもさらに新しい世代のより高速なTOWNSが開発されていたとしたら動かなかったかも。あんなリスクの高い書き方は僕にはできないと思いました。一応、スキップしなければゲームが始まるのですが、この部分をなんとかしておかないと次のイベントシーンでクラッシュするかもしれないし。
2020-08-03 23:48:42
リリースは出してないですが、GithubのソースではShadow of the Beast 2も動くようになりました。しかしもう昔のプログラムなので時効(?)鴨しれませんがMODE1READコマンドの止め方はどうかと思いました。平たく言うとMODE1READを止めるためにLost Dataエラーでコマンドが止まるまでひたすらステータスや割り込みをクリアし続けますが、その間のCD-ROMのステータスはほぼ放置で、正直CD-ROMドライブの状態はほとんど不定と言っていいように思います。無理やりエラーを起こして止めるというのは、僕はこういう書き方はできないですね。CD-ROMドライブにAbortコマンドが存在しなかったので仕方なかったのかもしれないですが。あと、コマンドか起動パラメータでFMVOL, PCMVOL指定できるようにしました。(コマンドパラメータで指定するときは -FMVOL, -PCMVOL) 値は4096がデフォルトで0~8192の値を指定できます。リリースは多分水曜か木曜に出します。
なお、作者が自分で動作確認に書き込むよりは誰か第三者の方に確認していただいた方が良いかと思って自分ではWikiに動作確認を書き込んでませんが、自分で言うのもなんですが、結構動くようになってきたと思います。PsygnosisのFM TOWNS用タイトルってFractal Engine Demo, Microcosm, Scavenger 4, Megamorph, Shadow of the Beast 1/2, Lemmings 1/2, Infestationと後何かありましたっけか?この中でまだ動作しない、または未確認なのはLemmings 2とInfestationだけになりました。僕はOriginの大ファンだったのでOrigin作品もすべて対応したいところなのですが、Wing Commander IIが厄介ですね。うんづでも動作しなかったし。うーん、あとDAPS系が試せてないか。
2020-08-04 10:16:06
最新版で、いくつかのタイトルをテストして、ソフトウェア互換リストの更新・追記しました。
私が見つけていないバグがあるかもしれません。気づかれた方は、追記して頂ければ幸いです。
2020-08-04 13:30:28
>>11
Shadow of the Beast2対応、有り難うございます。Psygnosisは結構無茶(と言うか無理やり)な事をやっていて大変では無かったでしょうか?お疲れさまです。
CRTC周りで変わったことをやっているタイトルで覚えが有るのはドラッケン辺りでしょうか?(たしか前に少しだけ試したような気がしますが・・・ もう一度試します)
ソフトウェアの互換性に関して、近頃少々怠けております。 申し訳ない。
私が挙げたリストは基本的に問題が有る物を書いている傾向があり、リスト外のタイトルで"動作した"または"動作しそうな"タイトルは除外している物も有ります。("98からのベタ移植は冒険的な事もあまりやっていないだろう"との個人的な観測から、その多くのタイトルが除外されていたりもします)
今はリストにソートが有るので、完全動作タイトルが多くなっても埋もれる事なく問題のあるタイトルが見つけられるので持っているタイトルを網羅的に埋め始めても良い時期かもしれません。
大物はDAPS系でしょうか? BIOSが改変されているとの事(確か割り込み優先度が違ったような)だったと思います。(全ては試していませんが、ほとんどタイトル以降で停止していたと思います)
思い入れの有る方も多いタイトルですので、対応が楽しみです。
2020-08-04 13:44:16
おおなるほど!割り込み優先度の変更というのは多分PICのSpecial Fully Nested Modeのことでしょうか?(多分それ以外優先順位変える方法は無い)SFNMを使っているのはShadow of the Beast 2で初めて見て対応したのですが、それに加えてRotationというのが入ってくると対応できているか自信がないですね。多分、試したらなんか変更が必要になってくるのだと思いますが、データシートというのも必ずしもわかりやすく書いてあるわけではないので、コードを見て何を期待しているか調べるのが一番良かったりしますね。引き続きよろしくお願いします!
2020-08-04 22:41:38
>>14
割り込み優先度の件に関しては、当時そんな話を耳にした程度で情報の正確性は判りませんのでそんな噂があった程度とお考えください。
私自身はその程度であれば仰る通りPICの設定を変えれば良いのでBIOSに手を加えてまでやる必要はないのではないかと思っています。
(BIOSのコードを変更する事はFJ2の許可無くして出来ない or してはいけない事だと思いますので、協力関係が有ってもしないのではと考えられる)
2020-08-04 23:08:16
>>14
連続ですみません。PICのプライオリティですが、DAPSシステムで使用しているかどうかは別としてOCW2のプライオリティコマンドを使用すれば特定の割り込みレベルを最低にする事が出来ると私は理解しているのですが・・・・ 試したことが無いので何とも言えませんが・・・・ もし、そう言うことであれば複数回のプライオリティコマンドを設定することにより好きな優先度を作り出すことが出来るのではないかと思います。
2020-08-05 10:22:47
自己レスです。
よくよく考えたら、上の発言の後半部分は間違いに近いような気がします。そもそもPICの割り込みレベルは任意の順にするような機能はなく、単に回転させて順番を変える事が出来る機能としてあるだけのような気がします。
Special Fully Nested Modeを使えば、レベルの引く割り込みを受けた後で自動的に回転する訳ですが上記のプライオリティコマンドでは任意のタイミングでコマンドを発行して回転を行うものだと思います。
2020-08-06 07:25:34
GithubのソースでThe 4th Unit Act4 Zeroは動作するようになったと思います。どうやらメモリマップI/OのCFFxxは普通のI/OのFFxxにも出ているのではないかと推測しているのですが、(FDxxがCFDxxに出ていないか心配) FF86 を IN AL,DX で読んでHSYNCをずっと待っていて止まってました。ゲームは開始してないですが、デモは見ました。マウスポインタを捕まえる必要がありますが、一応操作可能だと思います。Act 3 DUAL TARGETSの戦闘シーンでキャラクタのグラフィックが出ないのがひょっとして同じ原因ではないかと期待したのですが、違ったようですね。なんで描画しないんだろう。多分何かのタイミングでちょっとずつ描画するはずが信号が来なくて描いていないというパターンではないかと見ているのですが。
あと、ついさっきDOS6のEMM386環境でREIPLもできるようになりました。ARPLがUD例外を出してハンドルするようにしたら動くようになりました。DOS6はMODRV以外でデフォルトで入ってくるドライバはすべてインストールした状態で起動するようになりました。そのソースはまだPushしてないですが、多分こちらの晩にPushします。
2020-08-08 23:49:31
Brandishが起動しないのは、コピープロテクションでした。Raw Disk Imageでは再現できないですね。アメリカ国内でやる分にはDMCAは明示的にレトロゲームの動態保存のためのコピープロテクション解除は許可されているので僕は居住地の法律に基づいて解除しましたが、日本だと微妙なので、解除は各自の責任でお願いします。方法はここでは書きませんが、デバッガで簡単に見つかります。二か所あって、CF=1の場合無限ループとCF=0の場合無限ループになってる2か所のジャンプ命令、合計4バイトをNOP化すれば通過できます。(2バイトRETでも可)。僕はエミュレータ上で解除したのでディスクが暗号化されているかはわかりません。そこまでやってないような。それ以後は動いているように見えますが、「しまった、キー操作がわからない」に陥ってとりあえず開始直後のマップを歩き回っただけにとどまってます。なお、コピープロテクトの解除が違法なのであれば解除しなければよくて、ざっと見たところただのセクタの存在チェックのようなので、多分RAW binaryじゃなくてD77イメージを作ったら突破できそうに思います。なお、津軽はひそかにD77イメージ対応してます。そういうわけで今からタイトルのグラフィックが崩れる現象の捜査に当たりますね。
2020-08-11 10:07:51
Brandish解明しました。なお、多分UNZでも同じ方法で正常動作します。機種判別しているのですが、486のCPUコードを386SXと誤認して、GDTを386SX用に作ってます。津軽では、-PRETEND386DX オプションを追加して起動するとオープニングのグラフィックスは一切壊れませんでした。多分UNZでもCPUを386DX相当にして起動すると正常に動作すると思われます。
しかし、衝撃の事実で、386SX TownsはVRAMをA00000~にマップしてるんですね。でも、衝撃を受けたのは僕だけみたいで、FM Townsテクニカルデータブックの783ページにしっかい書いてました。うーん、これだとGUIにPretend 386DXオプション出した方がいい鴨しれない。そうしよう。
2020-08-12 08:42:05
当時、486機でファルコムゲーが動かないという話を聞いた覚えがありますが、これのことでしょうかね?ブランディッシュだけだったのかな。
2020-08-12 11:05:56
第4のユニット シリーズ 第5-7作は、"-PRETEND386DX"オプションで正常に動作するようになりました!
(うんづは、486のままでも動作します。)
ところで、皆さん、Brandishのマウスカーソルは操作できます?
私の場合、左上のRESTの上で、固まったままで、動きません。
環境の所為でしょうか。。。
2020-08-12 11:27:50
リリース出しました!昨日からの変更では、Star Cruiser 2の字が読めるようになり、Dual Targetsのバトル中のキャラクタが見えるようになりました。多分Zeroも見えるようになったのではないかと思います。マウスが暴れるタイトル用に、スピード調整ができるようになりました。Pretend 386DXオプションとマウススピード調節はGUIにも出しました。
2020-08-13 06:45:53
今、ソースを上げました。理論的にはFM Towns用ソフトの本数は有限なので僕が一本ずつ解析してマウスインテグレーションを追加していけば有限の時間内にすべてのソフトで快適にマウスが使えるようになるはずなのですが、僕の寿命が尽きる前にすべてのTowns用ソフトにインテグレーションを書けなかった場合を想定して(こんなにTBIOS使ってないソフトがあると思ってなかった) ゲームパッドのデジタル軸またはアナログ軸でマウスカーソルを移動するモードを追加しました。カーソルが振動するものや飛びまくるものはこれである程度対応できてくれると良いのですが。-GAMEPORT1の選択で、ANA0MOUSE または PHYS0MOUSE みたいな感じで指定するか、GUIでも指定可能です。
2020-08-14 11:07:26
山川機長さんの津軽へのVERR,VERW,BOUNDの実装で、IDES系のタイトルが軒並み動くようになりましたので、互換リストを更新しました。
大なり小なり、不具合のあるタイトルは、まだまだありますが、全然動かないタイトルは、もうわずかですね。
2020-08-14 12:49:19
ソースをPushしました。GameportのCOMの扱いが間違ってたので直しました。それから、PCMの割り込みですね。僕が持ってるデータシートにはなぜかバンク割り込みの記述が無いので、何が正しいのか推測するしかできないのですが、どうやら正しいIRQのタイミングはバンクが切り替わったタイミングではなく、バンクの最後のバイトを読んだとき、とすると良いようです。問題になるのはLoop-Stop Byteの扱いで、今までLoop-Stopはそのバンクが終わったとみなして必ずIRQを出していたのですが、Sim City 2000はPCMから割り込みが入るたびにバッファが終わったかどうか無視してWave Dataのポインタを進めるようでオーバーランしてしまいます。しかし、Loop-StopではIRQを出さないことにするとStrike CommanderのVoiceが壊れて永遠にIRQ待ちに入ります。それで、どうやら雰囲気として0x?FFFを読んだときIRQを出すものと仮定して、Loop-Stop Byteが0x?FFFにあったらIRQ、違うアドレスだったらIRQ出さない、ということにすると一応どっちも動くようになりました。Sim City 2000は、もうひとつI/O 4DCH を読んでビット7が0になるのを待ってる箇所がありましたが、ひょっとするとYM2612のI/Oのアドレスバスはビット2を無視してるのかもしれないですね。そういえば、同じ理由で、FM-7も公式にはFD0Fに書き込むことで裏RAMがオンになることになってますが、FD0Bでも裏RAMがオンになるんですね。手元のFM-7で確認しましたが、new7以降でもできるかどうかはわかりません。
2020-08-15 11:23:12
現在再度Wing Commander 2をなんとかしたいと思っているのですが、どなたかUNZで起動に成功した人っていますか?UNZでやってもクラッシュしてTowns MENUに戻ってくるので多分同じところで落ちているのではないかと見ているのですが。津軽だと今のバージョンではUnhandled ExceptionでAbortします。問題個所は↓で、
000C:0009367C FF153C9C0B00 CALL DWORD PTR [000B9C3CH]
ここでDS:[0B9C3CH]がゼロなんですよね。C/C++ではNULLポインタアクセスは禁止ですが、CPU自体にはPage Faultで無い限りExceptionを出す義理は無さそうですし。仮にPage Faultとしても、IDTはすべてデフォルトのDOS Extenderのハンドラっぽい(とび先セグメントが0008)ので、多分単にTMENUに戻るだけだと思うんですね。
間違った値が書き込んであるのであれば、書き込み箇所を特定して逆にたどっていけるのですが、この場合、起動時からここに到達するまで何の値も書き込まれてなくて捜査が難航してます。
2020-08-16 10:39:35
すみません、自己(半)完結ですが、Wing Commander II、クラッシュ前にINT 21H AH=40Hで"Not enough available memory"というテキストをプリントしていることが判明しました。メモリ32MBにして起動してもこのメッセージが出るのでおそらくなんらかの理由でメモリが無いと思い込んでるみたいなので、調べる手がかりができました。多分当時の標準だといくらなんでも8MBで起動できないはずは無いと思うのですが。引き続き調べてみます。
2020-08-16 22:08:53
>>28
うんづでの動作ですが、搭載RAM容量によるようです。RAMは最低5MB程度必要と思われます。
インストール時のRAM容量が自動的にアイテム設定の起動パラメータに設定されるようで、インストール時に4MB RAMで起動した状態だと"RAM=3"と登録されており、この状態ですとアイコンをダブルクリックしてもブラックアウト後、永遠に戻ってきません。
うんづのRAM容量を10MB等に設定しても、アイテム設定のパラメータ欄の"RAM=3"を"RAM=4"等に変更しないと、その後も起動できませんがパラメータを変更すると無事起動できるようになります。 時間の都合で起動後のサインコール登録までしか確認できていませんが、後は大丈夫でしょう。
※WC2はそう古くは有りませんが、初期のソフトはRAM容量を必要以上に上げると起動できないものが有ります。
16MBを超えると起動できないケースがあったと思いますので注意が必要です。
2020-08-16 23:14:30
>>28
津軽でのWing CommanderIIですが、こちらでは無事起動できています。
インストール時にRAMを8MBにしてインストールすると、アイテム登録内容は"RAM=7"となっていました。
起動できないケースではこの内容が"RAM=3"等になっていると容量不足で起動できないようですので、確認してください。
搭載RAMは自動的に認識するのではなく、インストール時のRAM容量-1が設定として登録されてしまう所がハマリ所のようです。
2020-08-16 23:29:48
おおなるほど!たった今僕も解明したとこです。RAM=4が最低のようです。この数字をSHL 14HしてADD FFDD0000Hしたものが001D0000H以上であることが必要でした。インストール時のメモリ容量は、今からチェック仕様としてたところですが、WINDYさんが確認していただいたのであれば、Wikiの方をそれに応じて修正します。ありがとうございました!
20年以上ぶりにWing Commander IIのオープニングを見て若かりし日々を思い出してました。あの頃はもっと髪があったなあ。あ、そういえばソースを見た感じだとこの数字が0だとチェック素通りになってるっぽかったのですが、一応確認してみようかな。
2020-08-17 05:27:05
ソースPUSHしました!Advantage Tennisが直ってます。今までF-29 Retaliatorが動くようにするとWing CommanderのイントロのCDDAが2秒早く始まってしまうという問題があったのですが、CDROMドライブのコードをいくら見ても何が悪いかわからなくて、ひょっとしてDisc Imageライブラリ?と、思って確認したらばっちり間違ってました。これでAdvantage Tennis, F-29 Retaliator, RAYXANBERが動いて、Wing Commanderのイントロも早くならなくなりました。それと、fuzzballさんのsprite.cppの修正をmergeしました。ありがとうございます!それから、ヒロさんのリクエストでキーボードでマウスを操作するオプションを追加しました。(-GAMEPORT1 KEYMOUSE) 一応、パッドもマウスもキーボードという場合に対応するために、ジョイパッドを矢印キーとZX、マウスはテンキーとテンキーのスラッシュとアスタリスクでボタンという組み合わせも可能になってます。(-GAMEPORT1 NUMPADMOUSE) コマンドパラメータ、GUIどちらからも選択可能です。
さっきRailroad Tycoonの起動ディスクをイメージ化してないことに気が付いてあわててイメージ化したところです(そして4重にバックアップした)。乾燥剤と一緒に保管していたのでカビとか発生してなくて無事読めたようです。あとで動作確認してみます!しかし、EDITDISKを使ったのでRAW Binaryはできたのですが、最近D77化って今難しいですよね。ファイルは一通り見えるのですが、プロテクトとかかかってないといいのですが。
2020-08-17 09:17:16
>>32
PC-6000シリーズエミュレータPC6001VのページにFD吸い出しツール「NDitt」が有ります。
http://papicom.net/p6v/tool.html
但し書きとして「PC-98フォーマットは未対応」と有りますが、ソースは公開されていますので手を加えれば何とかなるのかもしれません。
USB接続のFDDは非対応なので私の環境では試すことすら出来ませんが・・・・
2020-08-17 11:56:19
山川機長さん
-GAMEPORT1 KEYMOUSEオプション有り難う御座いました。
DORシリーズ、Brandish、Amaranth IIIが操作できるようになりました!!
(Amaranth IIIのオープニング後の本編の画面が激しく乱れていますが。。。)
2020-08-17 12:07:42
Release v20200812にて、アイ・オブ・ザ・ビホルダーIIが動作しました。
https://i.imgur.com/9KANvzr.png
https://i.imgur.com/V80lMee.png
https://i.imgur.com/Sspw6BQ.png
https://i.imgur.com/BhFL4be.png
https://i.imgur.com/EcW9QH3.png
https://i.imgur.com/ZVhTXd2.png
2020-08-18 01:50:49
YM-SHIMONDSさん、
動作テストありがとうございます!えーと、Wikiの互換リストに転載しても構わないでしょうか?
WINDYさん、
一応、NDittはあるのですが、Windows XPで内蔵FDを搭載した機種がだんだん無くなってしまって。大学に一台あるのですが、現在は入れなくなってるし、という状況です。
なお、昨日PUSHしたソースで多分Memoriesも動くようになってると思います。
2020-08-19 05:33:09
>>35,36
YM-SHIMONDSさん、
動作確認有り難うございます。WIKIの互換リストに追加しておきました。
こちらも巡回していますので、他のソフトでも確認が取れたものが有れば報告して頂けると助かります。
山川機長さん
了解です。HxC(または類似品)を使用した方が良いのかなと思っています。
2020-08-19 07:53:25
Release v20200812にて、あすか120%エクセレント BURNING Fest.が動作しました。
https://i.imgur.com/xo39wlL.png
https://i.imgur.com/sdEnvse.png
https://i.imgur.com/MQSFpK8.png
おかしい箇所
・サウンド面がPCMチャンネル(パーカッション)しか鳴らない
・タイトル後のモード選択画面から操作が効かない
山川機長さん
>Wikiの互換リストに転載しても構わないでしょうか?
全然構わないですよ。ありがとうございます。
WINDYさん
>WIKIの互換リストに追加しておきました。
追加ありがとうございます。
2020-08-19 21:03:28
YM-SHIMONDSさん
あすか120%エクセレント BURNING Fest.の動作確認、有り難うございます。
あすか120%エクセレント BURNING Fest.は私が所有していないので確認できませんのでWIKI登録にあたって1つだけ確認をさせてください。
"タイトル語のモード選択画面から操作が効かない"との事ですが、つまりは起動~モード選択までは動作するがそれ以降はモード選択画面から抜けれない為に確認できないとの事でしょうか?
※Release v20200819が公式リリースされていますのでそちらではどうでしょうか?(キーボード関連とPAD関連に修正が有りますので期待はできそうです)
2020-08-20 12:01:19
>YM=SHIMONDSさん
あすか120% Excellent BURNING Fest.でPCMパートの音しか鳴らないというのは、おそらく現状の津軽ではFM/PCMのバランスが適切に設定されていないからだと思われます。
こちらではGitHubからダウンロードしたソースを修正し、FMVOL:8192、PCMVOL:1024で調整したTsugaru_CUI.exeを使用していますが、正常にFMパートの音も鳴っています(あくまで津軽の現状の実装の範囲内では、ですが)。
また、Release v20200819ではパッド操作も正常に行えます…が、ポート1からマウスを抜いておかないとポート1側でRUNボタンを押したと誤認識されてポーズがかかりますので念の為。
>山川機長さん
ついでなのでお願いしてしまいますが、現状の津軽ではゲームパッドの十字キー入力のエミュレーションがハットスイッチ(POV)にしか対応していないため、普段使いしている6ボタンゲームパッドで十字キー操作による操作ができなくて不便なので、X軸/Y軸による入力にも対応していただけないでしょうか。もちろん強制ではありませんのでよろしくお願いいたします。
2020-08-20 14:53:39
PADに関しては、POVの無いものやボタンの数や位置の関係でユーザー毎に好みが有りますので、任意にアサイン出来ればベストなのですが、面倒ですかね?
2020-08-20 17:50:10
りうさん、
テストありがとうございます!なお、アナログ軸を十字ボタンとして使う機能はすでにありますが、GUIに出してませんでした。パラメータでは、
-GAMEPORT0 ANA0
みたいな感じで使えます。今GUIにも出しましたので、今日の晩のソースから利用できるようになります。
FM音源は、もう少しボリュームを上げた方が良いみたいですね。FMのデフォルトは全開ぐらいが良いでしょうか。
それから、ASKA 120%でPAUSEがかかりまくるということは、マウスのエミュレーションは、現在、ステートは4段階にしていて、COMオン・オフで次に進む(2ms読まなかったらステートゼロに戻る)みたいな感じにしているので、通常状態ではマウスのX軸移動量の上位4ビットが返るようになってるのですが、アイドルステートも追加して5段階にして、アイドルの場合は下位4ビットは0Fを返すみたいな感じが正しいのですかね?(くっ、実機にアクセスさえできれば。。。。というかUNZで実験すりゃいいのか。)
WINDYさん、
任意のアサインメントができれば、確かに便利そうですが、ちょっと考えます(^_^;)というか、ゲームによってはボタンにキーを割り当てられれば便利ですよね、とかいうことをWing Commander(こだわる)を快適にプレイするために考えています。
なお、多分15KHzモードで画面がずれる問題、手元のコートでは直ったと思います。またこちらの夕方PUSHする予定です。
2020-08-20 23:00:24
>山川機長さん
私自身は正直そんなに困っていませんが、多分有れば便利だろうなと思います。
確かにWingCommanderをやってると、何かとキーボードが必要になるのでTOWNSでは使わないボタンにキーコードなどが割り当てれれば便利ですね。
WingCommanderと言えばSecretMissionは確認出来ていませんので、(多分大丈夫だろうけど)確認しておきます。
2020-08-20 23:28:35
>山川機長さん
アナログ軸を十字キー操作に割り当てる機能、きちんとあったんですね(というかGUI実装前には使ってた気がしましたが、毎回入力しているとコマンドラインが長くなりすぎるのでバッチファイルを作ろうかと思った矢先にTsugaru_GUI.exeがリリースされたのでやめました)。次リリースよりGUIから使えるようになるとのことで、ありがとうございます。
あすか120%(以下略。CD-ROM版のほう)やマッドストーカー(最新版での動作検証が済んでいなくてすみません)でポーズがかかりまくる現象についてですが、これはゲームパッド(やマウス)のボタンがI/Oアクセス、TBIOS経由のどちらでも「0=押されている、1=押されていない」として取得されるのに対し、TOWNSマウス(=FM77AVのインテリジェントマウス等を含めた「MSX規格」のマウス)を接続した状態ではX方向/Y方向の移動距離がCOM信号のON/OFFで各4bitずつ取得される(ここがパッドと違い、マウスを移動していないなら十字キーに相当するbitは全て0となる)ため、マウスを接続した状態ではRUNボタンが押された状態(I/OアクセスとかTBIOS経由の「パッド入力1」、High CのTBIOSライブラリのSND_joy_in_1を使っていればSELECTボタンも、かも)だと誤認することによって起こっています(あすか120%でどのようにパッドの入力状態を調べているかはEXPファイル等を解析してみないと分かりませんが)。
また、「2ms読まなかったらステートゼロに戻る」という挙動はXM7のmouse.cと一緒なのですが(XM7ではこれでもマージンを取っている方で、インテリジェントマウス(FMMO-101A)のマニュアルにあるタイミングチャートに従って実装すると動作異常を起こすソフトがあります)、ステートは4段階(X上位→X下位→Y上位→Y下位)が正解で、下手にステートを追加すると、かえって誤動作の原因になります。
余談ですが、V-TOWNSではパッドを2個接続するとPS/2マウスによるマウスエミュレーションが無効になる(当時「凝ってるなぁ」と感心しました)ほか、キーボードから操作する隠し機能(Ctrl+Alt+ScrollLockによるTOWNSモード内リセットは結構知られている気もしますが)によってマウスエミュレーションを切り離すことが可能です。
2020-08-21 01:55:01
また↑に書くのを忘れてました(昨日からこればっかり)。
現状の津軽ではRTCの月の情報が1ヶ月前にずれています。試しにWindows側の時刻を1月にしてみたら不正な年月日と判定されたらしく、1987年2月1日に合わせられる実機での電池切れでおなじみの現象が起こりました(^^;
2020-08-21 02:08:30
おおなるほど!偶然XM7のmouse.cと同じタイミングになっていたとは。最初タイムアウトを200usにしていたのですが、マウスが飛びまくる現象を調べたら時間内に読んでないものが多かったので、2msぐらいにすれば大丈夫だろうと思って適当に選んだのですが。と、思って、コード見直したら2msにしたと思ったのは僕の記憶違いで1msにしてました(^_^;)でも、多分タイムアウトはミリセカンドのオーダーなんですね。
TBIOSがマウスを読むときは、COM On -> X-High -> COM Off -> X-Low .... と続いているようなので、一応、IDLE StateでCOM Onが来た時にX-Highを出し始めることにして、COMが何も来なかったらIDLE Stateにして下位4ビットを1にするように変えてみました。誤作動が大発生するようであれば元に戻そうと思います。TBIOSは普通に認識しているようなので、TBIOSを使ってないソフトでうまく動くかですね。一応LemmingsとLemmings2は起動してマウス操作が可能なことを確認しました。
マウスで覚えているのはサイバースティックをアナログモードにしたまま起動してしまうとTBIOSがサイバースティックをマウスだと誤認して操作できなくなったことですね。サイバースティック実装するときはつなぎっぱなしじゃなくてアナログモード・デジタルモード切り替えも追加しないといかんですね。
ちなみに僕は起動はPython Scriptからですね。GUIは積極的にテストしていないので、使ってテストしていただいて非常にありがたいです。
Pythonはあまり好きな言語では無いのですが、世の中に流されてたくさん使ってしまってます。500行ぐらいまではPythonが好きだったのですが、ある程度以上の長さのコードを書き始めたとき、まるで翼の上面の気流が剥離してストールするかのように突然いやになりました。C++が一番好きですね。Pythonよりアセンブリの方が好きかも。などということを言ってるからいつまでたっても出世しません(^_^;)
2020-08-21 02:49:44
Release v20200819にて、ジェノサイドスクウェアが動作しました。
https://i.imgur.com/doCTTI9.png
https://i.imgur.com/wVsYPxe.png
https://i.imgur.com/SxdBWAz.png
https://i.imgur.com/7BqbDT4.png
おかしい箇所
・ジェノサイド2の最初のステージでダメージを受けるとスプライト全体が固まり、以後背景だけが左右にスクロールする
https://dotup.org/uploda/dotup.org2235096.webm
WINDYさん
>※Release v20200819が公式リリースされていますのでそちらではどうでしょうか?(キーボード関連とPAD関連に修正が有りますので期待はできそうです)
Release v20200819で試したところ、モード選択で正常に操作可能になっていることを確認しました。ありがとうございます。
たけがみりうさん
>おそらく現状の津軽ではFM/PCMのバランスが適切に設定されていないからだと思われます。
なるほどそうだったんですね。ありがとうございます。
ポーズの件ですがこちらでも確認しました。
ポート0: Emulation by Keyboard
ポート1: None
の設定でも試合開始直後にポーズがかかるようです。
2020-08-22 06:03:06
ご確認ありがとうございます!Genocide Squareのスプライト問題確認しました。どうやら、僕が手抜きして、Sprite Busyは周期が合ってりゃいいだろう、と思ってBusy始まりのタイミングをVSYNCの始まりとしていたのですが、VSYNCの終了時点にするべきだったので、そのように修正したところ、スプライトが固まる現象はとりあえず起こらなくなったようです。(要するにVSYNCのタイミングとSprite Busyのタイミングが一致してると良くなかったらしい)。現在テストを流しているので、通ったらソースをPUSHします。大体今まで見たタイトルではVSYNCかSprite Busyかどっちかだけ見てタイミングを取ってるものが多かったのですが、きっとGeno2は両方見てるんですね。
ちなみに、Spriteはほかにも手抜きをしていて、厳密にはVRAM Layer 1の上半分と下半分でダブルバッファにするべきところを、常に上半分に書いてます。一応、今上半分か下半分かどっちに書いてるのかチェックするビットもあったと思ったので、それをチェックしてるタイトルがあったらどうしよう、とひやひやしています。(だったら真面目に実装しろという自分の脳内の声)
2020-08-22 09:31:12
>48 一応、今上半分か下半分かどっちに書いてるのかチェックするビットもあったと思ったので・・・
I/Oアドレス : 044Chのbit0(PAGE)かな? 最近WIKIの方で書いたので記憶に残っています。
ついでなので、ちょっとだけ細かな事が気になるのでお聞きしたいのですが、津軽はうんづや実機と比較してスプライトの動作(移動などの表示)が少々滑らかでない様な気がしますが、上記の影響などは考えられますでしょうか?
2020-08-23 07:38:05
やっぱりそう思います?多分何かのタイミングの問題なのだと思うのですが、スプライトに限らず、グラフィックの更新のタイミングの問題鴨しれません。pri timebalance とすると、実時間に対して実行が速かったか(プラス)、実行が遅れたか(マイナス)が見えるのですが、レンダリングのたびにかなり遅れてるんですね。これを速くするとちょっと良くなるかもしれません。レンダリング部分はまだぜんぜん最適化していないのでいずれ手を入れようと思っているのですが。ただ、Donald Knuth教授が"Premature optimization is axis of evil" (だったっけ?)と言ってるので、まずはもう少し動作が安定してからと思ってます。なお、一度だけ本物のDonald Knuth教授に会ったことがあります。今思えばサインをもらっておくべきでした。
2020-08-23 08:43:52
あ、そうだ。タイミングと言えば、昨日のソースでPCMのWAVE生成の頻度を20msから10msにしたのですが、Street Fighter IIのノイズ問題は少し改善してないですかね?fuzzballさんの解析によると、PCMのバンクが次に移って割り込みがかかってCPUがバンクを切り替えるまでの期間、本来再生されるべきではないバンクが再生されてしまっているとのことだったのですが、PCMの仕組みって本質的に絶対間に合わないんですね。だって、バンクの再生が終わったところでCPUに割り込みがかかるんだから、CPUが先回りして次のバンクを設定することはできないわけで。ただ、昨日の前の状態だと、20ms単位で再生終了をチェックしていたので、最悪39.9999...msの間間違ったバンクが鳴り続ける計算になります。これを10msにすると、単純に半分になると思います。
それで、ユーザがタイミングを指定できるようにして、その気になったら1msとかも指定できるようにしようかと思ったら、どうやらDirect Soundの解像度が10msっぽくて、19msとか21msにするとノイズが出るだけでなく音程が狂ってしまうことが判明して、だったら、10msにしよう、と、思って10ms単位にしてみました。これだと、多分Street Fighter 2でノイズが出るとしても期間は半分に減ってると思います。
PCMのバンク割り込みを先回りして実際より1msぐらい速く出すと、ノイズは出なくなる鴨しれません。ただ、再生時間のInquiryが比較的遅いっぽいんですよね。でも、そういうオプションは追加してもいいかもしれないですね。どうも、Street Fighter 2問題は自動的に解決するのは難しいような印象なので、ユーザがオプションでPCMを先回りさせると指定してもらえれば手があるかと思ってます。
2020-08-23 08:55:47
>50
スプライトの表示に関してはずいぶん前から気にはなっていましたが、私も最適化は最終であるべきと思うところが有りますので賛成します。
>51
StreetFighter2の構造に関しては全く知らないのですが、PCMとしてはデータを4KB読み込むと割り込みが発生出来るので波形データのサイズと格納場所を工夫する事により発生の途中で割り込みを発生させる事が出来るのでは有りませんでしたっけ?
(データサイズを8KBにして、再生させると真ん中で割り込みが発生するので割り込み処理で発生の終わった前半のバンクデータを更新する使い方)
2020-08-23 23:20:13
PCMについて、まったくその通りです。割り込みで手遅れになるのは、PCMのバンク割り込みのタイミングで直後に再生するべきバンクをセットアップあるいはセレクトするような書き方をする場合、です。大変失礼いたしました。他のプログラムで問題が出ないのは、PCMのバンク割り込みのタイミングでは直後に再生するバンクの次のバンクをセットアップするようにして、常に次のバンクは再生されても大丈夫な状態に保っているからではないかと思います。割と多く見かけた手は偶数番のバンクの末尾 (アドレス?FFFH)にリピートコード FFH を書いておいて、そのバンクのひとつ前のバンクに自動的に飛ぶように仕掛けるようにして、割り込みのタイミングではたった今再生が終わったバンクにデータを書き込むという方法のようです。
ただ、fuzzballさんの解析によるとStreet Fighter IIのノイズ問題はバンクのオーバーランによるものとのことなので、Street Fighter IIに関してはリピートコードを使わず、CPUでプレイ位置を巻き戻しているのではないかと思います。それだと、割り込みがかかった時点ですでに違うバンクの再生に突入してしまっているという感じなのではないかと思います。
なお、FM音源とPCM音源に少し手を入れました。現在FM音源は全部のスロットを同時にオンにしないと再生されなくなってますが、時間差でオンになったり一部だけオンになった場合にも対応できるようにしようとしてます。PCMのテストついでにChase HQをやったらステージクリアした時点でCD-ROMのステータスがクリアされるのを待ち続ける現象(どうやらDXが4C0Hのまま4度読み込んでステータスを読んだ気になっているらしい)が発生して、ということはこの待ちに入る時点ですでにステータスがクリアされていなくてはならないようで、どうやらCDDA Playコマンドが入ってきた時点で前のステータスはクリアする必要があるようなのでそのように修正しました。しかし、CD-ROMのステータスってQueue的な動作をしているような(I/Oは4バイトのQueueになってるけど、CDC内でもっと長いQueueを持ってそうな)気がするのですが、コマンドのたびにクリアするのが正しいのか、ちょっとよくわからんですね。とりあえずCDDA Playの場合はクリアするようにしたらChase HQは再度プレイできるようになりました。
ああ、そういえばChase HQと言えば、道路の分岐で画面が乱れますが、あれってLCDパネルをつなげた実機でも乱れたのですが、実はCRTモニタだったら乱れずに表示されるとかいう魔法だったんでしょうかね?VINGがあのグラフィックのままリリースしたんだろうか?と、疑問に思ってるのですが。誰か当時実機でプレイされた方いますか?
2020-08-24 10:02:05
>>山川機長、WINDYさん
最近ちょっと津軽を触れてなくて、PCM修正されたことは気付いていたのですがまだ試せていません。
スパ2のPCM問題ですが、バンク切り替えではなくキーオフの問題です。(バンク切り替えは少々遅れても問題ないはず)
issueに簡単な図を追加してみたので参照して下さい。 https://github.com/captainys/TOWNSEMU/issues/7
何かうまい回避策を思い付けるといいのですが‥。
2020-08-24 10:08:55
おおなるほど!他のアプリケーションでは、そういう場合はバンクの末尾に無限ループ(同じアドレスにループさせる)を仕掛けて次のバンクに進んでしまうのを回避しているようなのですが、Street Fighter IIはそれが入ってないんですね。多分、20~40msが聞こえてしまっているんですね。ただ、新しいバージョンだとそれが半分に減ってるので、ひょっとしたら目立たなく(耳立たなく?) なってるかもしれません。
ところで、Genocide Squared、スプライトのタイミングを直したら動くようになった、と、思ったら直す前の方が正しくVSYNCの終わりにSprite Busyになってました。しかし、今の最新版でGenocide Squaredが正しく動いてしまっているところを見ると、VSYNC終了からSprite Busyが出るまで少しラグがあるのが正しいのかもしれないですね。ひょっとすると、Sprite画面消去中はパターンやスプライト位置を変更してもとくに問題無さそうなので、I/OでSpriteがBusyになるのは、VSYNC終了から32us後かもしれません。いろいろ実験してみます。
2020-08-24 10:52:49
なるほど、理解しました。
メーカーが想定したであろう使用方法は恐らく2バンクを使って、途中で割り込みを受けてから読み込みが終わっているバンクに対して処理を行う方法立ったんでしょうけど
スパ2に関しては読み込みが完了した自身のバンクに対してキーオフに行っているので、当然ながらキーオフされるまでPCMが再生される訳ですね。
2020-08-24 11:21:12
>53
CHASE HQですが、「LCDパネルをつなげた実機でも乱れたのですが」と有りますが、どのように乱れましたでしょうか?
こちらはCRTですが、CHASE HQは分岐部分も含めて実機と比べても遜色有りませんでした。
2020-08-25 08:04:19
ChaseHQは、↓の42秒付近みたいな感じですね。左カーブと右カーブが重ね合わさったような感じというか。
https://www.youtube.com/watch?v=RFtJer0GKgg
YSSCSCCD.SYSを使ってパッチを当てて実機MXで外付けSCSIドライブから起動したのですが、SCSIから起動した影響は無いと思うのですが。
2020-08-25 08:40:05
>58
実機でも同じように偶数ラインと奇数ラインで左右に分かれて表示されます。
そうです、VINGがあのグラフィックのままリリースしたのです。(他に良い方法が見つからなかったのでしょう)
エミュレーションとしては正常ですのでご安心ください。
アーケードは↓の1分39秒辺りですが、「TOWNSで実現できるかと言われると無理なのかなぁ」と思われる処理ですがHSYNCタイミングでCRTCのパラメータを書き換えてもTOWNSではVSYNCタイミングでしか適用されないような書込を過去にどこかで見た覚えが有りますので、その辺りの制限上不可能なのでしょう。
https://www.youtube.com/watch?v=-nCKUE-1pvM
2020-08-25 09:52:44
なるほど!安心しました。16色モードなのにパレットを途中で切り替えて48色表示にしてる時点でマジックだと思ったのでひょっとしたら分岐も似たようなトリックを使っているのかと思ってました。
なお、動作確認にあるXak IIの問題をなんとかしようとしたのですが、これまでのところ、データディスク作成後に一度BIOSがDrive Not Readyを検出しないとディレクトリキャッシュを更新しないらしい、というところで詰まってますね。どうやらTowns OS V1.1のDisk BIOSのようで、Disk Changedフラグが無いものと思っているらしくタイマー割り込みで定期的にDrive Not Readyをチェックしてるバージョンです。どうも、Disk BIOS INT 93H AH=0EHは前回呼び出し時以降ディスクの入れ替えがあった場合DL=1を返すようなのですが、DL=0が返っていて、多分DOSはこのDLを見てビット0が立っていたらディレクトリキャッシュを更新するみたいな処理をしているっぽいです。一応、FDCはMB8876Aのデータシートは見つかったのですが、Towns 2F以降はMB89312と773ページで言ってますね。これ、Intelか何かの互換チップなのではないかと見ているのですが、データシートのありかなど知ってる人がいたら情報をいただけるとありがたいです。
Super大戦略は、一定時間Drive Not Readyになったことでディスクの入れ替えを検出していて、FD0LOADコマンドで一瞬でディスクを入れ替えるとデータディスクを読み込まないという問題があったので、たしか入れ替えた直後は一度必ずDrive Not Readyを出すんだかなんだかという修正で対応したことがありましたが、Xak IIの場合は入れ替えてないので現在謎ですね。
2020-08-25 11:00:11
>山川機長さん
MB89312はれっきとした富士通製のFDC(VFO内蔵型)です。残念ながらネット上にはデータシートは上がっていないようなのですが、挙動についてはCSPのソースがある程度参考になりそうですし、実はXM7ページからリンクを辿っていくとデータシートの表紙の画像がアップロードされているサイトもあったりします(^^;)。
2020-08-25 11:16:19
はりせんさんのTwitterによると、「トランジスタ技術 スペシャル No.11」に詳しく書かれているそうです。
https://twitter.com/haserin09/status/1228604723344789504
2020-08-25 15:14:53
>62
大変失礼しました、はせりんさんの間違いです
2020-08-25 15:17:27
>60
MB89312=MB89311+VFOとの事で、MB89311について調べました。
INTERNET ARCHIVEに該当のデータブックが1件あります。
2020-08-26 17:03:12
SUPER REAL MAHJONG PII&PIIIの動作報告です。
うんづ(Version 0.5 L30),津軽(v20200819)共にメニュー画面,ゲーム画面共に画面の右側1/5~1/6程度がはみ出して表示されずです
メニュー画面でのCRTCレジスタの設定値は以下の通り
HSW1:0090 VST1:0000 HDS0:00A0 HDE0:0380 VDS0:0046 VDE0:0406 FA0:0000 HAJ0:00A0 FO0:0000 LO0:0100
HSW2:02F0 VST2:0004 HDS1:00A0 HDE1:0380 VDS1:0046 VDE1:0406 FA1:0000 HAJ1:00A0 FO1:0000 LO1:0080
HST :037F EET :0000 VST :0419 EHAJ:0064 EVAJ:0001 ZOOM:1111 CR0:800D CR1 :000C CR2:0192 FR :0003
2020-08-26 23:43:30
テストありがとうございます!Super Real Mahjongは、720ピクセル画面モードを使ってると思います。多分Microcosmのタイトルの右が切れるのと同じ原因です。現在使ってるウィンドウライブラリ (fssimplewindow: もともとYS FLIGHT SIMULATOR用に作ったライブラリなので、Flight Simulator Window Library。)が、ウィンドウを開いた後でリサイズする関数が無い(手抜き)影響で、横方向640ピクセル固定になってます。考えてみるとこれは直し方がわかってる項目なので、直しましょう。
あと、いくつかBがついてるタイトルでマウスが変な理由は多分MOS_setposでTBIOSがカーソルを固定位置に動かしているが、津軽はカーソルをWindowsのカーソル位置に移動させようとして、取り合いになってるからではないか、と見ているのですが、MOS_setposを迎撃してマウス座標を移動してしまう機能を実装すると、Alt+Tabでウィンドウ切り替える人はいいのですが、ときどきマウスでウィンドウをクリックする以外のウィンドウ切り替え方を知らないユーザがパニックになるのではないかという危惧があって保留してます。画面下のステータスバーに余裕があるので、 MOS_setposを検出したら"Middle Button to Capture/Uncapture Mouse"みたいなメッセージを表示してもいいんですけどね。
2020-08-27 01:45:52
うんづと合わせるとホイールの回転でマウスのCputure/Uncaptureですが、センターボタンのクリックでのCputure/Uncaptureのトグル動作とホイールの回転でのCputure/Uncaptureにしてしまっても良いような気がします。
Townsにはセンターボタンもホイールも無いので問題ないし、マウスから手を離さずに切り替えれるのでうんづ方式ほ個人的にお気に入りなのです。
2020-08-27 09:52:35
そういえば、FM/PCMのボリューム問題は、結局どっちも音が小さすぎるんですかね?どっちもElectric Volumeは通ってないはずだし。デフォルトの音量と最大音量を少し上げてみようかな?
2020-08-28 22:26:43
>>68
v20200826で確認しましたが、PCMに関しては問題ないと思います。ちょっと大き過ぎるのかな?(CD-DAと比べて) トゲトゲしてる印象があります。
あとスパ2のノイズの件ですが、残念ながら変化無しでした。耳で聴いた限りではノイズの鳴り方も変わってないような気がしました。
2020-08-29 10:21:45
了解しました!動作確認の方を見た感じだとFM音源の音が小さいようなので、PCMは据え置きでFM音源のおボリュームを上げてみようと思います。
Super Street Fighter IIのノイズの件了解しました。改善してなかったですか。残念。先読みさせるという手はあるのですが、パフォーマンスの問題がありますね。あるいは、当初やってたみたいにPCM 1chにつきホストの1chを使うという方法もあるにはあるものの、今度は定期的にモニターするチャンネルが増えてやっぱりパフォーマンスに問題が出ますね。うーん、アプリケーションを識別して特別な処理をするしかないかもしれないですね。もう少し考えます。
2020-08-29 11:37:34
FM音源もなんとかせんで何をやってるのだ、と言われそうですが、Wing Commander IのVEGA星域キャンペーン、最初から最後まで通してクリアできることを確認しました!
二日半でクリアできるもんですね。寝る間を惜しんだわけでもぜんぜんなくて、プレイ時間は合計6時間ぐらいだったでしょうか。ジョイスティックインテグレーションを考えてたのですが、Wing Commander Iに関してはキーボードで余裕で操縦できますね。あとは、Towns版豪華声優のボイスをEnableするキーがわからなくて最初焦ったのですが、Sキーでした。銀河英雄伝説の世界になりますね。
2020-08-31 07:43:17
なお、富士通が最初に発売したWing Commander 1には、Secret Missionsのデータファイルも含まれてます。ただ、普通に起動すると、ファイルがありませんと言われてSecret Missions 1,2を開始することができません。
そこで、Aドライブのディスクにセーブしている場合は、Q:\GAMEDAT下のcamp.000,camp.001,camp.002の3本のファイルをセーブディスクにコピーすると、Secret Missionsが起動できます。
あるいは、Q:\WC.EXP と Q:\GAMEDAT をハードディスクにファイルをコピーして、パラメータを
kanji +m savepath=a:
としてWC.EXPをアイコン登録するとハードディスクから起動できるようになりますが、savepath=D:\GAMEDAT のようにコピー先に振ってやると、セーブパスにcamp.00?を見つけることができるので、Secret Missionsを起動できます。
なんで富士通がEnableしなかったのかは、やってみると明らかで、日本語化が全部済んでなかったり、ときどきクラッシュしたりします。だったら起動時のボタンも削除しておけばよかったと思うんですがね。でも、僕は両方ともこの方法でクリアしたので、最後までプレイ可能なはずです。僕はTownsを現役で主力機として使ってた時にこれを解明したはずなんですが、どうやって解明したんだったかよく覚えてません。386DEBUG使ったのかも。Towns Forumにもやりかた書いたんじゃなかったかなあ。今日は津軽のデバッガで見つけましたけどね。(自分で言うのもなんだけど、BRKON INT 21 AH=3Dは強力だった)
2020-08-31 09:55:46
>71
SecretMissionの動作確認をしようとしたのですがインストール中にCD-ROMを入れ換えろと言われて、「CUIから起動せねば」と思ったままです。
近いうちにSecretMissionI&IIも動作を確認しておきます。
また、SplatterHouseに関してはエンディングまで正常動作を確認しました。HI-RESO,LO-RESO共に問題は有りませんでしたが、背景グラフィックが縦にズレている(1~2ドット程度)現象が確認できましたが、支障は無いので気にはしていません。(飛翔鮫や達人王でも左へスクロールさせるとズレている箇所がありますが、原因は同じかもしれません)
2020-08-31 10:03:18
Splatter Houseクリアされたんですね!あのゲーム、難しくないですか?(^_^;)1ピクセルずれる現象確認したのですが、謎ですよね。実は、オープニングで洋館に走っていくシーンでも画面のその辺がプルプルしてるんですよ。
考えてみるとGUIにCD-ROM交換機能あった方がいいですね。追加しておきます。CD-ROMの入れ替えが必要ということは、Secret MissionsはWing Commander 1のアドオン(というかバグフィックス)になってるんですかね?だとするとCDDAとボイスはあるのかな。
2020-08-31 10:26:59
1ピクセルずれる現象は色々動かして見たのですが、VINGの物だけだったような気がします。飛翔鮫や達人王では殆ど気にもなりませんがSplatterHouseに関しては仰る通り、ピクピクとするので見つけやすいですよね。(気にはなりませんが)
ちなみに達人王に関してはステージ4位までは正常を確認しています。途中で心が折れたのですが、もう一度トライします。
CD-ROMの入替は通常はそれほど起こる事では無く、その都度津軽を立ち上げ直せば良いのですがLast Armageddonでは必須となりますので有れば助かります。
SecretMissionがWingCommanderに入っていた(中途半端では有るが)事は初めて気づきました。
どおりでSecretMissionのCD-ROMの容量が非常に小さいわけだわ。(8MB位だったと思います)
CDDAとボイスは確認しておきますが、上記の通りSecretMission自体のデータ量が少ないので期待は出来ないかも知れません。
2020-08-31 10:42:44
CD-ROMの入れ替えですが、まだその機能作ってなかったんだったっけ、と、思ったら、すでにメニューのCD-ROMからできるように作ってました。[CD-ROM]->[Select CD Image]です。Towns OS V2.1 L51のCDで起動してからAfterburner IIに入れ替えて起動できたので、多分機能していると思います。
心が折れるゲームの完走確認のためには、ぼちぼちステートセーブ機能が欲しくなってきましたね。頑張って書こうかな。
2020-08-31 12:25:47
>76
申し訳ありません、既に有ったのですね。確認が足りませんでした。
ステートセーブ機能に関してはあくまで補助的な機能と思われますので、個人的には最終段階でも構わないと思っています。
有ったら有ったでデバッグの際にも便利かもしれませんが。
2020-08-31 12:50:11
WingCommander SecretMissionですが、1も2も数回の出撃をしましたが問題はありません。CD-DAもボイスも有りです。(^o^)
久しぶりに猫に煽られてカチンと来ました。危うく最後までやるところでした。
2020-08-31 23:58:18
おおそうですか!確認ありがとうございます!ということは、パッチだったのか。僕はWing Commander Iが出てすぐ買っちゃったもんだから、Secret Missions 1,2無し版だったんですよ。たしかSecret Missions 1/2だけ単独って売ってくれなかったんじゃないかな。売ってくれたら買ったと思うのですが。
今Wing Commander IIのマウスインテグレーションをやってます。マウス座標が書いてある場所までは特定したのですが、あとは、起動時にマウスの両法のボタンを押してないとマウスを認識してくれない現象が起きているのですが、多分、今TRIGGER OUT (4D6H)を無視してるからじゃないかと思うんですよね。真面目に実装して変化を見てみます。あれは、本体からのTrigger Out(4D6H)が0のときは、ボタン押し状態にかかわらず04D0H, 04D2HのTriggerビットは0になるので多分合ってますよね。
2020-09-01 09:17:52
>79
SecretMissionとWingCommanderは別パッケージですよ。
記憶は定かでは有りませんが、CDはSecretMissionだけの物ですし。
↓を見る限りソフトコレクション海外編で番号も違うので間違いないでしょう。
https://page.auctions.yahoo.co.jp/jp/auction/x530302289
https://www.suruga-ya.jp/product/detail/127010527
マウスインテグレーションは非常に楽しみにしています。動作確認でSecretMissionを久しぶりにやったらなんだか通しでやりたくなりました。
TRIG出力の使い方は、それであっているはずです。(04D6Hのbit0-3をONさせて、04D0H,04D2HのTRIG1,TRIG2bitを読む必要が有る)
2020-09-01 09:58:40
なんと。僕はWing Commander 1を発売した後に、Wing Commander 1 + Secret Missions というパッケージが出たもんだとばかり思ってました。
なお、Wing Commander 2 のマウスインテグレーション成功して、間も無くソースをPUSHします。起動時のマウスチェックの間はマウスのデルタに0を返す必要があったので、仕方ないので CRTC設定が変わってからCDDAを開始するまでの間はデルタに0を返すようにしてます。Nav画面のみカーソルがずれますが、こればっかりはNav画面表示中かどうかは検出できなかったもんで、放置してあります。ただ、キーでも操作できるので問題ないと思います。
Wing Commander 2は1よりもしんどかった記憶があります。敵光学式ステルス機には散々苦労しました。僕は確か1995年の後半(前半だったか記憶が曖昧)にMicrosoftに降伏して主力機をDOS/Windowsを切り替えたので2はDOS用英語版でプレイしましたね。Wing Commander 3まで日本にいるうちにプレイして、4はピッツバーグに引っ越してからやったんだったかな?ネタバレになりますが4では最後に主人公に散々パワハラを続けてきたトルウィン提督に恨みを晴らすことができたので良かったのですが、最初のシリーズから続いた一大サーガの終わりとしてはやや寂しい幕切れだった感じがしました。でも、老後にもう一度一通りプレイするためにGood Old GamesからWing Commander 3, 4買ってあります。
2020-09-02 06:26:21
久しぶりにSecretMission1を3話程やっただけで結構厳しかったので、この腕のままIIは地獄かもしれません。(汗)
私はTOWNSで1,II,SecretMissionをやったけど、それ以降は出来てないのです。英語は聞き取れないだろうけど買ってみようかなぁ。
3か4あたりでマークハミルが出演していましたが、指を加えてました。(PCへの以降はGATAWAY G6-300からのなで1997~98年位)
Origin Systems社が(と言うよりギャリオット兄弟です)が好きで、Originと付くと必ず買っていました。
Origin Systems絡みで、Space Rogueの動作確認をしていましたがマニュアルが無い(実家)のでストーリーが進められず互換リストには未記載ですが
動作に問題は無いようです。(この位のポリゴンだったら当時の山川機長さんだったら出来たかもって気がします)
2020-09-02 11:03:09
このスレの展開からはだいぶ外れますが、Unzと津軽でのSCSI ID-0のハードディスクイメージ共有に成功しました…単に津軽のソースをこちらでいじって新CRTCのI/Oアクセスを無効にしただけなんですが。これでSSDの使用量が1GiB削減できましたw
2020-09-02 12:15:43
Wing Commander 3は、移動するたびにエレベーターに乗るアニメを毎回見なくてはならないのが苦痛だった記憶があります(^_^;)空中戦シーンは感動ものでしたね。今見ても通用するグラフィックだと思います。当時だと僕も渡米前で英語の聞き取りが大変だったので、アメリカに住んで22年の今ならもう少し何言ってるかわかるのではないか、と思ってるのですが。マークハミルは3と4通して出演でした。
なお、すでにさっきリリースをPUSHしてしまったのですが、Wing Commanderの中立位置発見しました。2も書いてあったので、そこから読むようにしました。それが、デバッガで見つけようとしたけどなかなか見つからず、BRKON MEMWじゃなくMONITOR MEMWみたいなのを追加してZキーを押した後で中立位置を書き込んでる場所を探さないとだめかなあ、と、思いながらZを押した後でマウス座標が何に変わってるか見たら、その直後に同じ値が書いてあって、なんとそれが中立位置でした。Wing Commander 1の方は何をやってるんだかわからないですが、ジョイスティックをぐらぐらっと動かした後でZキーを押すと以後安定するようです。明日の夕方のソースにはこれが入る予定です。なんかいい感じなのでGUIにもまもなく出します。
機関砲がおもしろいように当たるので、これだったらこの間1を通したとき唯一勝利できなかった鹵獲した敵艦の護衛ミッションも勝てるかな。2もテストがてらちょっと飛んでみましたが、2だと撃墜した敵機が完全に飛散するまで当たり判定があるんですね。空中衝突しまくってかなりのダメージを受けてしまいましたが。(Strike CommanderのテストしたときもMig-21と空中衝突した。なんか今日は空中衝突する日だった。)
2020-09-03 11:59:47
りうさん、
なるほど!それは、津軽がハイレゾモードを正式にサポートすればOKという感じでしょうか?りうさんに上げていただいたソースが非常に強力な情報源になりそうなので、Linuxのソースと合わせて参考にして対応を目指してみます。
2020-09-04 01:06:14
飛翔鮫ですが、v20200902よりCD-DAによるBGMが鳴らなくなっています。
他にも確認できた物としては達人王は1面BGMがループしなくなり、それ以降はボス面や次のステージになってもBGMは鳴らなくなります。
(つまり、開始時のBGMがループせずに終わるとそれ以降は鳴らない)
他にも何か有るかもしれませんが、原因は共通している可能性が高いので確認及びWikiの更新は行っていません。
2020-09-06 08:52:48
おおそうでしたか。CDDAで何を変えたっけかな?確認してみます。
2020-09-06 09:45:41
ああ、多分原因わかりました。ものすごく小さな音で鳴ってませんか?Electric Volumeを見るようにしたのですが、都合上再生開始時のボリュームがそのまま残ってしまうもんで、フェードインしているのではないかと思います。うーん、どうしよう。とりあえず、直近の修正としていったんElectric Volumeを無視します(^_^;)と、思ったらSetVolumeって関数すでにYsSimpleSoundに書いてあるし。いったんElevol無効にしてから、近いうちにそっちで対応するように修正しますね。多分それで直ると思います。(自分で書いた関数ぐらいおぼえておけ、と言っても趣味と仕事で書いてる分量が多すぎてどこに何を書いたか覚えきれない。)あ、初期のころのコメントにあったナディアの左右問題はこれでは直らない。うーん、なんか考えよう。
2020-09-06 09:59:39
>88
本当ですね、ホント小さな音で鳴っていました。
飛翔鮫で確認をしましたが、恐らく達人王でも同じでしょう。
2020-09-06 16:00:47
ふふふ、Strike Commanderクリア確認しましたよ!まだGUIに出してないですが、-STCMTHR joystickID axisID とすることによって、スロットルレバーの位置をフルキーの数字に割り当てるようにしました。さっきPUShしたソースでは使えるようになってます。これによってCH Pro Throttle USBでスロットルのコントロールができるようになり、-VIRTKEY key gameDevID button オプションによってゲームパッドやジョイスティックのボタンをキーボードに割り当てられるようになりました。GUIにどうやって出してやろうかと考えてるんですがね。Strike Commanderはこの拡張で無線の指示を出す時ぐらいしかキーに触らずに操縦できるようになりました。Thrustmaster Top Gun Joystickが接点不良でボタンの反応が悪くなっていたのですが、Pro Throttleに十分なボタンがあったので、よく使うキーを割り当てることができました。
一番難しかったミッションは中盤のドイツの城のミッションだったな。何度も撃墜されながら、やっとミッション成功して帰ってきたら、燃料タンクに弾食らってて最後燃料切れで自動着陸してくれなくて慌てて手動でおろしたんですが、操縦士免許持っててよかったと思いました。最後のミッションでは、メンデス機を撃墜して「勝った!」と思って帰投してきたら、ジャッカルのボスともう一戦あるのを忘れていて、いきなりミサイルを食ってエンジンがやられたものの、すれ違いざまに機関砲を何発か命中させて、最後に残ったAMRAAMが命中してくれて、あとは目の前の滑走路までなんとか緊急着陸を決められるか!?と、思ったらイベントシーンに切り替わってエンディングというなんともドラマチックな最後でした。
あとこれでフレームレートがあと2割ぐらい速かったらもっと快適だったんだろうな。高速化も考えないとなあ。
2020-09-07 12:26:05
>90
動作確認をしていないフライト物と言うと、後はAir Warriorですか・・・ 物は有りますが、サーバーが・・・
誰かサーバーを立てる猛者が居るのだろうか? 居ないでしょうね。
2020-09-07 23:18:38
Air Warriorですが後半のバージョンでは、COM機相手に飛ぶ自主トレモードが追加されていたと思います。また後半のバージョンではサイバースティック対応してたんですよね。FM音源も改善せずに何をやってるのか、と言われそうですがサイバースティック対応を検討してます(^_^;)
うちの2MXですが、どうもCD-ROMは2xモードにすると読めないようで、電源抜いてCMOSがまた飛んでからは何もなかったかのように(ゆっくり)読んでます。今日はこちらはLabor Dayの祝日なので、今朝は去年実家から回収してきたFDをかたっぱしからTownsOS起動フロッピー化しています。まずピンセットで回しながらカビてないことを確認してからやってますが、成功率は50%ぐらいですね。Aドライブはあいかわらず内側のセクタが読めないようで、CMUのComputer Clubの達人に修理できないか聞いてみようと思ってますが、バーチャル化をトライしてもいいかもしれないですね。
2020-09-07 23:56:56
>92
おお、そうでしたっけ? ではAirWarriorも動作確認を急ごうと思います。
サイバースティックも実は持ってたりするのですが、いつもの事ながら実家に置き去りです。
去年に制作したセガサターンの各種コントローラをUSBに変換する変換器を改造してサイバースティック対応に使用かなと思います。
FDDに関しては先週末にジャンクのFDDを2台ほど確保したので、こいつを実機に搭載する予定です。
そちらでは3モードFDDは入手困難でしょうから今のうちにバーチャル化しておいた方が良さそうですね。
2020-09-08 07:39:29
>93
FDが必要だった・・・ まずはFDDを治さないと駄目ですね。(汗)
因みにCDからの起動は出来て、FDを入れろとのメッセージまでは問題有りませんでした。
2020-09-08 08:01:05
ジャンクで買ってきたYE-DATAのドライブに交換してFDDは復活しました。と言うかひょっとしたら元のFDDは生きているかも。
元々HCはFDDが1台なのを、末期にFMT-FD304を買って2ドライブにしていたのですが、この前電池を外付けに改造した際に使い込んだドライブ0とほぼ使用していないドライブ1を入れ換えて組み立てたのですが、今日になって外したFDDを見ていてドライブセレクトのジャンパピンがDS1側になっているのを発見しました。
DS1に設定したFDDをドライブ0のケーブルにつないでいたのが原因なのではと思っています。
後はどうやってネットにあるイメージ化ソフトを持っていくか・・・・LANか?(色々と面倒くさい)
山川機長さんの発言を思い出して、互換モードでCD-Rを読んでみたら読めたので、CD-R経由で試してみようと思います。
ドライブセレクトの件も有るのでもう一度HCの蓋を開けるので、どのドライブで置き換えたかは確認してこちらとWIKIに情報として挙げておきます。
2020-09-08 23:16:19
うちのMXのAドライブは、FDクリーナーを2回かけたらTownsOS V2.1 L20のディスクから起動できるようになりました。ところで、MXのドライブは電源が矩形コネクタと一緒になっているので普通のDOSのドライブではコンバータを作らないと置き換えられないというようなことを聞いたのですが(確かに開けてみたら電源ケーブルっぽいのが見えない)、ピンアサインメントって解明されてますかね?実はこれがわからないとHxCとか持ってきても置き換えられない気がしてきてます。
2020-09-09 02:26:09
YD-702B-6036B D のピンアサインについてはMSXへの流用があったようで、ぽつぽつと情報が出てきます。
ピンアサイン資料 http://niga2.sytes.net/msx/FDD_READY.html
MSXにポン付けした方 http://usbsecretbase.michikusa.jp/70fd/fdd.html
そのMSXの資料 http://madscient.hatenablog.jp/entry/2016/12/25/153653
2020-09-09 04:16:19
おおなるほど!さすが!
ところで、githubのコメントにReplyしましたが、townsdef.hはできれば近いうちにHigh-Cからもそのまま#includeできるようにしようと思っているので、strongly-typed enumは回避したいところです。物理アドレスなので、High-Cからは使わなくてもいいかもしれないので、そのenumごと #ifdef __cplusplus で括ってしまうという手もあるにはあるんですがね。enumを#defineに切り替えたらなんとかなりませんかね。あと、stdint.hって2004年から存在してたんですね。いろんなライブラリが勝手なint型を定義して収集がつかなくなってるOpen Source Projectを結構見てきたので(見てきたって言ってもせいぜい2~3か)もう津軽はintが32、shortが16、long long intが64ビット決め打ち、ってことで始めたんですが、stdint.hが使えるなら徐々にintXX_tに置き換えていこうと思います。勉強になりました。
2020-09-09 05:54:50
DINOSAURなのですが、僕がやると町出て帰ってこれるのですが、すると町から出られなくなるようです。これ、町に戻れなくなります?
こちらの現象ですが、初期状態だと「扉は固く閉ざされている」というメッセージが出ますが、長老に話すと扉が開くのですが、いったん外に出て帰ってくると、メッセージは出なくて、画面が一瞬暗くなって外に出るかと思うのですが、結局出られないという現象が起きてます。現在どこにフラグがあるのか解明しようとしてます。
2020-09-10 09:55:05
DINOSAURですが、DS:106FHが扉通過回数のカウンタになってるっぽくて、値が1以下になると扉を通れないようです。僕は町から出てすぐ戻ったので入れましたが、再度出ようと思ったら出れなくなりました。ひょっとして、町から出て何かするうちにカウンタが減るイベントが発生している鴨しれません。お時間のあるときに、町に戻れなくなった時点で、試しに、
EMB PHYS:3106F 7F
と、やってみて、戻れるか試してみていただけますか?そうであれば同じ原因ということになりますね。あとは、何の拍子に値が減ってるのか解明すれば、扉が通れない問題は解決するのではないかと思うのですが。あ、違うや。減ってる箇所見つけちゃった。けど、これだと扉を通ると確実に1ずつ減っていくことになるな。。。。じゃあ回復する場所を解明しないと解決しないのか。
それから、長老にいちいち話に行くのが面倒だったら、
EMB PHYS:3EF01 5
これで話したことになります。
2020-09-10 11:18:25