知り合いの知り合いが中古のTOWNSを買ったらしく、何かソフトも買いたいから僕が一番おもしろかったTOWNSのソフトって何?できれば移植ものじゃなくてオリジナルがいいんだけど、と聞かれて、一番だったらWing CommanderとStrike Commanderなんだけど、TOWNSオリジナルだとVSGPだろうか、Super大戦略も最後発のTOWNS版がおもしろいと思うけどこれも移植だし、と、思って、結局最後に、一番楽しかったのは386ASMだと思う。って答えてしまった。
2023-10-16 05:30:28
"一番おもしろかったTOWNSのソフト","できればオリジナル"と言う縛りに対しての"386ASM"は良いですね。
386ASMもHigh-Cも移植と言えば移植だし、オリジナルを探すのって難しいですね。
私の場合はフリコレかなぁ、毎回楽しみにしていたし。
後はDATAWEST社のPDSシリーズですかね。
移植物だとWingCommander,StrikeCommander,SCYNDICATE,GUNSHIP・・・色々有りますね。
2023-10-17 09:35:28
>448 WINDYさん
386|ASMはDOS汎用みたいなので、移植ではないと思います…
2023-10-25 09:10:56
フォロー有り難うございます。
そうか、DOS汎用なんですね。すっかりその発想が抜けていました。(そういう意味ではHigh-Cもコンパイラ自体はDOS汎用ですかね)
2023-10-25 09:34:07
>450 WINDYさん
追加情報(?)です。
パッケージ製品としての「386|ASM TOOL KIT」を構成する4本のソフトのうち、機種依存しているのは386|DEBUGのみです。
2023-10-25 11:00:32
コンピュータアート、ミュージック、レトロゲームの祭典 Demosplash 2023 (https://demosplash.org)今年もやります!
アメリカ東部時間今週金曜18:00-24:00, 土曜日13:00-24:00 (日本時間土曜日午前7時から午後1時、日曜日午前2時~午後1時)で、会場はペンシルバニア州ピッツバーグ、カーネギーメロン大学ユニバーシティセンター2階ランゴスですが、オンライン配信もあるので、是非ご視聴ください。リンクは上のURLの「Chat」「Broadcast」タブをご参照ください。なるべく頻繁にレトロゲームルームの模様をチャットに流すようにします。
自分もFM TOWNSエミュレータ津軽、FM-7/77AVエミュレータ陸奥の開発について45分ほどプレゼンテーションが入っています。時間は多分金曜19:30のスロットになる予定です。あとJapanese Retro Platformのセッションが45分あるので、今回はFractal Engine Demo, Microcosm, Scavenger4, MegaMorphを流そうと思ってます。
2023-10-30 11:42:29
ふと思ったんですが、TOWNSのNMIって、赤本によるとキーボードから発生する場合があるようなことを書いていますが、津軽では完全に無視しててとりあえず問題なく動いているようなのですが、これってどういうタイミングでかかってくるんでしょうかねえ?発生するタイミングがわかれば一応エミュレートしようと思いますが、赤本の56ページに「RAS機能(キーボード)」とあるだけで、RASとは何なのか書いてないのでNMIによって何ができるのかわからんのですが。誰か知ってます?
2023-11-15 03:02:47
たしか D, U, M, P の4キー同時押しでメモリダンプが始まる機能があって
たぶんこれがNMIなんだろうなと思ったような記憶があります。違うかもしれませんが。
2023-11-15 03:26:05
私の知っているRAS機能は主にFAコンピュータなどに搭載されているもので、異常(FANの異常やメモリの異常など)を検出して外部に出力したり
外部からの信号を受け付けたりして、LED表示やロギング,OSへの通知などを行う拡張です。
ただし、どの機能が有ればRAS機能を搭載しているかは曖昧でメーカーにより出来ることは様々なのですが、要は異常時の障害対応の切り分けを
しやすくしたり、履歴を残すような機能です。
で、TOWNSのキーボードとの関連ですが正直何を目的にしているのかよく解らないのですが、キーボードによっては拡張キー(SYSREQ等)を備えた
物がありますのでそれらのキーと関連しているのかもしれません。
拡張キーは通常ではどれを押しても何も反応が無かった記憶がありますので、実際には使われていなかったのかもしれません。
2023-11-15 09:34:48
おおなるほど!D,U,M,P機能があったとは。しかし、それだとエミュレートしてなくても困らなかったわけですね。試しに津軽でコマンドからNMI出せるようにしてみようかな。
今、誰も使ってない可能性のあるディスクイメージツールのFDDUMPをEXP化して、DOS6からでも使えるようにしようと思ってて、その間プロテクテドモードから抜けられると困るので、大概のIRQはマスクしてしまえばいいもののNMIがかかってきてたらどうしよう?と、思ったんですが、大丈夫そうですね。実際、実機でプロテクテドモード版FDDUMP.EXPはとりあえず成功したようなので、ぼちぼち(今更)実機のSCSI2SDをDOS6ベースに更新して、ついでにWindows 3.1パーティションも追加してやろう、とか思っているところです。
FDDUMP、GUI版作ったら使う人いるだろうか。いや、いないかな。大体FM系のゲームをコピープロテクトまるごと再現してやろう、という需要が無いですよね。クラックしちゃえばいいじゃんという感じで。
2023-11-16 01:16:29
Free386開発しててTBIOS/RUN386.EXEのクソバグ見つけたので、津軽あんまり関係ないけどここで成仏させてください
Free386でハイレゾ画面に移行しようとすると、TBIOSがセグメンテーションフォールトで落ちるので調べていたら、TBIOS がハイレゾ画面初期化時、VRAMセレクタ 11ch の 0-512KB をゼロ初期化したあと、「8MB から 512KB をゼロ初期化する」というバグを発見しました。ハイレゾVRAMは1MBしかないので、そんなところにメモリはありません。
本来ならRUN386.EXEでも落ちるはずですが、RUN386はRUN386で「ハイレゾVRAMを示すセレクタ11ch, 124h, 12ch」に16MBのメモリ領域を割り当てるというバグがあり、合せ技で動くという……。両方とも16進数で1桁間違えなんですが、なんじゃこりゃという感じです。
追伸
Free386 Ver0.80開発に津軽のデバッガが大変役に立ちました。とても感謝しています。
2023-12-06 20:23:04
>437 nabeさん
RUN386がセレクタ0x11c,0x124,0x12cに16MBのメモリ領域を割り当てる件ですが、「バグではありません」。
赤本の白TOWNSのメモリマップを見れば分かるとおり、ハイレゾVRAM空間は16MBの空間を持っているのが正解で、実際に搭載されたメモリ量が1MBしかなかっただけに過ぎません。ま、I/OポートからハイレゾVRAMサイズを読み取って確保しろっていうならそれはそれで合ってますけど。
2023-12-07 13:20:23
>458(自爆)
おーっと、437じゃなくて457だった(汗
2023-12-07 13:21:08
Free386 Ver0.90を公開しました。
https://github.com/nabe-abk/free386
EIN / TMENUも問題なく動くようになったので、RUN386.EXEと置き換えると少しだけ速くなりますが、試す人いるかな……。
NASM Version 2.16.01のEXP版と、EXPを吐ける新作フリーリンカを収録しているので、この2つは役に立つかもしれません。
>>458
なるほど。
2023-12-28 19:09:58
まったく脈絡ないんですが、冬休みだったんで積んであったゲームを一本やろうと思ってドラゴンスレイヤー・英雄伝説クリアしました。ということで、津軽の動作確認リストに一本追加しました。しかし、これPC9801版のほとんどそのまんまの移植なんですね。開発コストを下げるためには合理的と言えば合理的ですが。起動時から画面モード変えてないっぽいし。
最後までやった感想は「どこにドラゴンスレイヤー要素が?」だったんですが。結局一匹しかドラゴン倒してないような。それも、ドラゴンっぽいけど本当にドラゴンだったのか。あと、このゲーム、リターンキーを連打または押しっぱなしにするとオートレベルアップできますね。津軽のイベントログ機能を使ってリターンキー連打させて一晩放置したらレベル40ぐらいに、もう一晩放置したら99まで上がってて、以後は安全に旅を進めることができました。多分実機でもテープか何かでリターンキー固定したら使えますね。
2024-01-11 13:03:03
> nabeさん
更新ありがとうございます!
前から思ってるのですが、Free386でRUN386は置き換えられるということは、既に互換ROMはあるので、がんばって互換IO.SYSと互換TBIOS書いたら実機ROM無しでフリーソフト実行する環境は可能なわけですよね。ちょっと先が長いかな。
2024-01-16 00:42:18
TOWNS実機でD77/RDD/BINをフロッピーディスクに書き戻すコマンドラインユーティリティ公開しました。
https://github.com/captainys/FM/tree/master/TOWNS/FDWRITE2
EXP形式の実行ファイルがダウンロードできます。
実機ではまだ一枚しか試してませんが(というか使えるディスクがそんなに残ってない)、Dragon Slayer Legend of Heroes 1のプログラムディスクという名のデータディスクは、セクタ番号が10H~17Hという変則的なフォーマットになっていますが、FDWRITE2で無事書き戻しに成功しました。このDragon Slayer Legend of Heroes 1のプログラムディスクですが、最後の力を振り絞って(?)一度だけ読み込みに成功してイメージファイルを作ったら以後読めなくなったという代物でした。
2D未対応なのですが、これ、もしも実機を使って2DDのディスクをまっさらな状態に戻せるのであれば、シリンダを2ステップずつ移動すればいいだけの話なので書き戻しの期待もあるのですが、Write Trackで全部ゼロを書いてもタイミングを取るためのパルスは出てしまうのでまっさらにはならないんですよね。
2024-01-18 03:08:37
津軽のデバッグ中すみません。
これも楽しみなプロジェクトですので、少し使ってみました。
RDDやBIN形式から書き戻したFDですが、どれも起動はしますが、読み始めにマスターディスクでは発生しない15秒程ゆっくり読む時間がありました。
機種はHCでメモリは40MB、OSはDドライブにインストールしたTOS V2.1L51です。
RDD形式はFDDUMP.EXPで、BIN形式はうんづ用ツールに含まれるFDIMGL.EXGで保存し、FDWRITE2でFDに書き戻しました。
コラムスではプロテクトに引っかかった画面まで行けました。
FDDUMPでコラムスをイメージ化した直後のメッセージは、
11CRC Errors
0 CRC Errors in NOT F5,F6,F7 Sectors
です。
2024-02-13 17:57:48
ご報告ありがとうございます!ゆっくり読んでいる時間は、多分セクタの連続読み込みが遅いんでしょうかね。TOWNSのコピープロテクトは今まで見た中ではほとんどが余計なセクタの存在をチェックするだけ、または存在していてCRCエラーが起きないことをチェックするぐらいだったので、セクタを多く詰め込むためにセクタ間ギャップを詰めた影響で、セクタを連続で読むとき、次のセクタの読み込みが間に合わなくてディスクが一周して戻ってくるまで待つ現象が起きるかもしれません。
コラムスは、メッセージから推測すると、11個のCRCエラーはすべてF5, F6, F7セクタから発生しているようなので、MB8877では完全な生成が不可能なナンバーのセクタが混じってるようですね。この手のプロテクトはFM-7時代は多かったのですが、TOWNS用ソフトではあまり多く見なかったので貴重(?)かもしれません。残念ながらTOWNSではそのまま再現するのは極めて難しいですね。なんでもFM-7用のコピーツールでは無理やりF7セクタを作る方法が編み出されていたようですが、TOWNSだとDMA経由でしか書き込むことができないので同じ技は使えないと思います。
この手のツールは、EXG形式にする需要ありますかね?自分がなんでもコマンドでやってしまう人なもので、いまいちGUIを作るモチベーションが沸かないのですが。
2024-02-15 02:05:36
解説までしてくださりありがとうございます。
F5,F6,F7セクタの無い物であれば保存しておくと良さそうですね。
最初の長めの読み込み時間は、Townsシステムソフトウェアで作成した起動ディスクをイメージ化してFDWRITE2で書き戻しただけの物でも発生しました。
EXPかEXGかとなると中々迷ってしまいますね。
フロッピーから起動して、セミIBMフォーマットしたSD(WindowsPCで読み書きできる)へ書き込むならEXPでしょうけど、
救済IPLがあると本体の電池が切れてもHDDの運用が出来ますし、EXGでの手軽な運用も魅力です。
今の所FDDUMP.EXPと同じディレクトリに、よく使いそうな使い方だけを書き込んだテキストファイルを置いていますので、EXP形式でそんなに困る事は無い気がします。
続けて保存する場合はF3キーでコマンドを結構省略できますし。
うんづのFDIMGL.EXGで便利だと思った部分は、
カビを取ったディスクですと不安定な部分があるらしく、イメージ化の際にしばし複数のトラックでCRCエラーが発生するのですが、
エラーの都度に再読み込みか空データの書き込みをするかを聞いてくるので、5回くらい再読み込みを繰り返すうちにCRCエラーが発生しない事があるのでそれを保存できる所ですね。
こういう対話式なのはEXG向けなのかなと思いました。
しかし、これだと不安定さをプロテクトとして使用しているディスクをイメージ化する場合、その目的と相反する感じもします。
2024-02-18 14:39:04
35周年おめでとう!
https://pc.watch.impress.co.jp/docs/column/gyokai/1572032.html
当時まだ学生でFM-77AV40EXが欲しくても買えず、FM-7で凌いでいました。
なんだか判らないが富士通が新しいホビーPCを出すらしいとの噂でワクワクしていたのを思い出します。
2024-02-28 09:20:54
35周年ですか。おめでとうございます。
自分は元MSXユーザーで、当時はFM-77AV系は勿論、88とかX1とかが羨ましかったのをよく覚えています。
富士通プラザまで遊びに行くこともよくありました。
あそこがあったからTownsを買ったと言っても過言ではありません。
Townsを買ってからはDATA WESTのゲームをよくプレイしていました。
サイキックシリーズは全部持っていますが、箱がでかくてかさばりますね(^-^;
2024-02-28 21:59:52
おおー、10年単位の区切りではないのに結構大きく取り上げてくれてますね。あの年の電脳遊園地、高校1年の終わりでしたが、津軽の田舎から東京さ出て見に行ったんですよね。山のようなアフターバーナーとTowns Illusionのデモは感動でした。TOWNSは今は亡き父が買ってくれると約束していてくれたのでこのすごいコンピュータが我が家に来るのかと待ち遠しい日々でした。
2024-02-29 03:11:23
>468 D-Typeさん
MSXは当時、METALGEARがやりたくて友人から本体を借りて遊んでました。
METALGEAR2も自腹で買って散々やり尽くしたので、両方のソフトと共に友人に返却しましたが・・・・・
今となってはプレミアが付いてて欲しくても買えないです -> METALGEAR2
最近、FS-A1をヤフオクで落としたので当時とは違う遊びをしようと思っています。(カートリッジスロットに自作のMCUカードを差して・・・と、訳の判らぬ妄想中です)
↑
FM-7やTOWNSにもこれで得た技術で何かしたいと考え中(取り敢えず最初はCD-ROMのエミュレータです)
>469 山川機長さん
電脳遊園地に行かれたのですね、ガッツが凄いなぁ。 私も行っとけば良かったなぁ。
TOWNSを買ったのは何時だったかなぁ? 2代目が出る前に買ったのでそう遅くは無かったけど。
初任給+αをぶっ込んで100万位は初期投資に使ったと思います。
(必要ないのにプリンターやコプロカードやメモリも足したので今考えると恐ろしい価格です。馬鹿だけど後悔は無い)
2024-02-29 12:01:30
>>470 WINDYさん
Townsのソフトも値段が上がってきてますが、メタルギア2の価格はやばいですね。
本体が買えてしまいそうです。
自分もメタルギア2は、当時自分で買ってクリアしましたが、
初代メタルギアの頃はMSX2がまだ高くてFC版でプレイしてました。
MSXは新しい機種も出るようなので楽しみです。
自分はWindowsPCにATARIパッドを繋ぐコンバータを作ってみたものの、
津軽で使おうとしたらファームウエアのGP2040-CEがStart/Selectを想定していないせいで、
ボタンが利かないというところで止まってました。惜しい。
2024-03-02 04:37:09
まだエミュ上ですがFree386を使ってワーズワースの起動が出来まして、動作環境はMS-DOS6.2+TownsOSV2.1L51で、ワーズワースの起動にはHIMEM.SYSとEMM386.EXEの組み込みが必須でした。
Free386をダウンロードしようとgithubへ進んだところ、COCOなどの貴重な情報があって私では理解できない部分が多いものの、ありがたく何度も読ませてもらっていました。
2024-03-10 21:21:31
FM TOWNS版Windows 95でWinQuakeがとりあえず動かせるのであれば、FM TOWNSネイティブ上で動くQuakeが動くのでは?ということで作ってみました。
https://bcc.hatenablog.com/entry/2024/03/11/112758
要FPU・ハイレゾPCM
486 CPUでは遅くてゲームにならないのでPentium機(HB・HC)かつオーバークロックやCPU換装が必須になってます。
2024-03-11 12:03:19
BCCさん、さすがです!そう、FM TOWNSの勝ちですね!
Windows 95対応が結果的にFM TOWNSの勝利につながることになるとは。やってよかった。というか、そもそもWindows 95対応の突破口が開けたのはWin32S情報からだったのでBCCさんMVPですよ。いつもありがとうございます!
2024-03-11 12:20:09
私もQuakeをダウンロードさせて貰いました。
ありがとうございます。
ノーマルのHCではデフォルトの画面サイズでやや重いものの、普通に遊べそうな感じでした。
180MHz動作のODPでは余裕でした。
TOWNSでこんなリッチな映像のゲームが動作するなんて、不思議な感じがします。
2024-03-13 07:06:36
凄いですねQuakeを移植されたのですね。公開ありがとうございます。
Ryzen3700XのPCの津軽ではちょっと重いようでしたがデモはまずまずでした。
このくらいならハイエンドクラスのWindows PCで普通に遊べそうですね。
2024-03-15 00:41:23
TOWNSと関係ないんですが、先々週日本に出張してまして、BeepでFM77AV用PSY-O-BLADEが3480円で売ってたので思わず買ってきて、メロディモジュールは半端に傷んでいたのですがなんとか曲名を解明して(ネットで調べればわかっただろうけど一応自力解明にこだわった)、陸奥でクリアに成功したんですが、クリア後に「B.N.Pと書かれたディスクが何だったのか最後までわからなくなかった?」ということに気が付いてしまったんですが、検索しても出てこないんですが、誰かPSY-O-BLADE当時プレイした人で、ゲーム中のこのディスクに何の意味があったのかわかった人いますか? 何かのメッセージを読み飛ばしたんだろうか? と思って途中ステートセーブしながらやってたんで、場面に戻っていろいろ試したものの、結局わかりませんでした。
しかし、8ビット機でよくあのレベルのアニメ作りましたね。当時は一度クリアしたらすべてわかってしまうアドベンチャーゲームに5000円も6000円も出せないと思ってあまりプレイしなかったんですが、大学に入って本嫌いが治ってからは、小説を買って読むようなものか、と、納得したもんでした。
2024-03-18 11:06:33
>477 山川機長さん
PSY-O-BLADEは持ってないのでご質問の答えではないのですが、アドベンチャーゲーム好きとしては折角なのでD-SIDEをお薦めします。
前作のLagrange L-2からの続き物ですので前作もお薦めしますが、このシリーズはメニュー選択式ではなくコマンド入力式のアドベンチャーゲームとしては一部を除き答えが論理的でよくありがちな不合理な答えが少なくて良いです。
派手なアニメーションなどは有りませんがペイント方式の描画としては高速な部類な点や、D-SIDEではローマ字入力が出来たりと地味なところで優れていると思います。
"一度クリアしたらすべてがわかってしまうアドベンチャーゲーム"でも繰り返し遊べる良作だと思います。
TOWNSではこういうコマンド入力方式のアドベンチャーゲームが記憶では出なかったので残念でした。 当時は"CD-ROMの大容量を生かして考えられるワードに対する返答を大規模に用意できるのでは?"と考えていましたがシーク速度等を考えると無謀な考えなのかも知れませんね
2024-03-21 09:39:59
いや、今は結構当時アドベンチャーゲームあんまりプレイしなかったのが心残りになってるので割と積極的にプレイしようかと思って、陸奥にはエミュレータでローマ字カナ入力するモードを追加したりしてあったんですが、PSY-O-BLADEはクリックで進んだのでこの機能は使わなかったですが。
Lagrange L-2とD-Sideは割と最近になってプレイしたんですが、画面のクオリティも高くてSF度も高くておもしろかったですね。ただ、攻略情報見ないとクリアできませんでした。
2024-03-22 11:38:42
Quakeを作って思い立ち、マーティーで動かそうとしていたのに手つかずだったWolfenstein 3Dをマーティーでも動くようにしました。
https://bcc.hatenablog.com/entry/2024/03/24/140432
TownsOS V1.1 L30とV2.1 L20の二つのOSが必要、フレームレートは平均一桁、初回ロード3分なので素直に486機・HDDインストールで動かしたほうがいいとは思います。
実機でWolfensteinを動かして津軽と実機で差異がある箇所がありました。該当ソフトはないと思いますし、該当していたWolfensteinも直してしまったので再現する必要性は薄いはずですが。
・RF5C68のコントロールレジスタ(04F7)で最上位ビットをオフにして再度オンにすると有効chがSTレジスタで設定した開始位置から全て鳴る(Wolf用に修正する前のほうが実機通りの挙動だった)
・256色モード時、32bit(4ピクセル)毎にレイヤ1側の設定レジスタに沿って画面表示位置が決まる。現在はレイヤ0側の設定値で一括に表示位置が設定される。
2024-03-28 14:31:34
了解しました!PCMは実機ではSTのOff->Onで再生位置がリセットされるという感じですね? Rocket Rangerのセリフがうまく再生できない原因が解明できずにいたので、実はこれが原因だったのかもしれません。というか、今の津軽の実装ではSTレジスタに値を書いたタイミングでプレイポインタを変更していたのですが、実は再生開始時に更新するのが正しいのかもしれないですね。そのように修正してみます。
256色モードについては1画面モードの場合、実機ではレイア0ではなくレイア1のレジスタで表示位置が決まるということでしょうか? 表示開始位置のみレイア1で、他のパラメータはレイア0の値を参照する感じですかね?
なお、Linuxのハードディスクインストールもできるようになりました。やってるとCD-ROMの読み込みにしくじることがあって、どうしてだろうと思ったらtowns_cd.cの中で律儀にコマンドにエラーがなかったコード(00 00 00 00)を確認しているのですが、他のデバイスの割り込みを禁止してないので、00 00 00 00を読みこむ前にData Ready(22 00 00 00)がステータスコードを上書きしてしまってエラーだと思う、というものだったので、Data Readyを出すときstatus queueをクリアして上書きではなく追加するようにして対応したのですが、内蔵CDのステータスは何バイトのqueueになってるのか、そもそもqueueなのかなどいまいち謎ですね。
2024-03-31 21:19:22
1画面でも4ピクセル毎にレイヤ0・1の設定で交互に表示に反映されるようです。
旧バージョンをMARTYで動かした際の動画(FA0側の初期値は62976で画面の更新のたびに増減、FA1は0のまま。現在のバージョンは両方変更)
https://www.youtube.com/watch?v=InqQTjcNXzU
画面が更新される度にレイヤ0側のレジスタのみ変更してトリプルバッファ表示しても、4ピクセル毎に更新されてないレジスタが参照されるため格子上な表示になってしまう。
一応自分もLinux入門という本に収録されていたSlackware(カーネル2.0)のインストール、X Windowの起動を確認したのですが、フルカラーモードで起動すると津軽そのものが落ちるようです。
デモンストレーション 93 冬のフルカラー切替時にも同じ症状のようなのでLinux特有の問題ではなくハイレゾCRTCそのもの(多分Fixing single-page high-resolution mode.あたりの修正?)の実装かと思います。
2024-03-31 22:01:52
ご報告ありがとうございます!確認して修正したソースをPUSHしました。24-bit colorモードのテストがひとつもなかったんですね。デモ93冬だとフルカラーにたどり着くまでちょっと時間がかかりすぎるんですよね。自分でなんか書くかな。
画面表示位置問題は、これ再現しようと思ったらちょっとレンダリングが大変になりそうです。physmem.hのSinglePageOffsetToLinearOffsetがシングルページモードのVRAMアドレス変換をやってるのですが、ビット2がビット18になり、4バイト単位で2画面モードのレイア0とレイア1のアドレスにマップされてるっぽいんですね。おそらくレイア1のVRAMアドレスに対してはFA1が適用されるということのようですが、この対応はとりあえず保留とさせてください。
2024-04-01 06:48:49
PCMですが、STレジスタ書き込み時と、チャンネルオフ→オンしたときにプレイポインタをSTレジスタの値にリセットするようにしてみました。STレジスタ書き込み時もプレイポインタを変更しないと変になるものがいくつかあったので、多分どっちもプレイポインタをリセットする効果があるのではないかと思います。タイミング的に厳しかったシャーロックホームズの探偵講座その他いくつか試してみたところ、これまで正しく再生できていたものは引き続き正しく再生できているようです。
2024-04-01 08:46:44
残念。この変更でロケットレンジャーのセリフの再生が直るのではないかという期待ははずれました。
2024-04-01 09:34:45
STレジスタは何かの条件で書き込み時にプレイポインタが変更されないケースが存在するようなのですが、その条件がはっきりしません。
MAMEのRF5C68ソースコードでは該当chが停止中のみSTレジスタ書き込み時にプレイポインタを変更するようにしているようですが、そのように変更すると音がおかしくなるEUPファイルが存在するので実際は違うはず。
一応テストした限りでは、津軽と実機で違うケースになったのは以下
実機で全く再生されないケース(津軽では再生されてしまう、旧Wolf3Dコード)
_outb(0x04f7, 0xc1); //該当ch選択
_outb(0x04f6, 0xc0); //STレジスタ変更
_outb(0x04f7, 0x80);
稀に再生されないもののとりあえず再生(津軽では確実に再生、現Wolf3Dコード)
_outb(0x04f8, 0xfe); //chオンオフレジスタで一旦該当chを無効化
_outb(0x4f7, 0x8f); //何故か無駄なRAM書き込みをした後でないとレジスタが正常に反映されない?
*waveram++ = 0x0;
~
_outb(0x04f7, 0xc1); //該当ch選択
_outb(0x04f6, 0xc0); //
_outb(0x04f8, 0xfc); //再度該当chを有効化
_outb(0x04f7, 0x80);
2024-04-01 10:57:45
なるほど!RF5C68はもう少しデータシートを詳しく見てみます。
ちなみにロケットレンジャーはソフトウェアのバグである可能性が僕の脳内では70%ぐらいになってます。調べたらオープニングデモの途中でFM音源割り込み中にクラッシュしてて、普通DOS Extenderはそのまま実行を中断してしまうのですが、ロケットレンジャーはGP Exceptionのハンドラが設定してあってクラッシュしたらそのままオープニングデモを中止してゲームのメインに飛ぶように作ってある、のですが割り込みハンドリング中のクラッシュなものでISRをクリアせずに先に進んでしまうので、以後サウンド割り込みが一切かからなくなるという現象が発生してました。まさかそんなはずは、と、思ったんですがさっき実機で試したら実機でも発生しました。
実機でも本来のオープニングの途中、津軽上とまったく同じタイミングででゲームのメインに移行していて、本来鳴るべきBGMもなってませんでした。(ゲーム中BGMが無くて随分地味なゲームだなと思ったら本来は鳴ってるはずだったらしい)
これは、オープニングデモが早く進み過ぎるのが原因なので、どうなっているのかと思ったらBusy waitでタイミングを取っていて、試しに-FREQ 8 -CDSPEED 1Xにしても早く終わりすぎる現象は変わらなくて、デバッガ使ってBGMが一区切りするまで無理やり止めて先に進めたら正常に進むんですよね。出荷前に誰も気が付かなかったのかと思うんですが。どうやら起動中AボタンとBボタンを両方押し続けて、クラッシュ箇所まで進まないようにするしか手が無いようです。テストする人がオープニングデモを見るのが面倒になっていつもABボタンを押してデモを飛ばしていた可能性ですかね。
2024-04-01 21:12:22
実機互換モードでやったら普通にオープニング最後まで見れた(が、なぜかロケットパックその他が転送されてきた画面でフリーズするのでやっぱりなんか変)ので、試しに津軽でFREQ 4まで下げたら普通に起動しますね。そうか。ビジーウェイトでタイミング取ってる上に386のJNEは486のJNEよりも遅いから影響が大きいのか。486だと3クロックが、386だと7クロック。DEC ECXも386が2クロック、486が1クロックか。だから待ち時間は倍以上の差が出るのか。TOWNSの互換モードってそこまで再現できているのだろうか。CPUの所要クロックまでは変えられないんじゃないかという気がするんだけど。互換モードだとCPUとメモリ間の信号を読んで特定の命令には追加でウェイトをかけてたりするのだろうか?
2024-04-01 22:24:52
互換モードはキャッシュメモリの無効化とメモリ・VRAMウェイトの値を増加させるものかと思います。
ロケットレンジャーは所有していないのでわかりませんが、津軽は現時点でFREQ 5で大体CPU演算・メモリ操作は初代機386DX 16MHz・メモリ3ウェイト相当とほぼ合っている(ベンチマークの結果やCPUの速度でスピードが変わるゲームの体感)ようなのですが、VRAMウェイト(初代機実機では6ウェイト)は反映されてない関係か実機より早く進行する(PSYCHIC DETECTIVE SERIES Vol.1「INVITATION」のデモなど)ものはありました。
2024-04-01 23:11:49
CD-ROMに関しては後悔されている情報が少ないので動きから再現するのが実情だと思うのですが、赤本上ではパラメータレジスタは8段FIFO,ステータスレジスタは4段FIFOとなっていますね。
SUBCPUCがステータスを通知する際に前のステータスが残っている場合の動作なので、より上の層での実装だと思うのですが・・・
コマンドを連続発行して、ステータスが何個まで取れるかを実験コードを書いてテストするしか方法が無いのかも知れません。
2024-04-02 09:20:12
Wolfenstein3D試してみました。
最初、PC-98版のファイルを使用したのですが起動してくれず、
GOGで購入してダウンロードした物だと起動してくれました。
USB接続のCDRドライブが壊れていたため、ICカードでの確認となり
BCCさんが指定してくださっている起動FDでは無い事を予めご承知おきください。
テスト環境は次の通りです。
CONFIG.WL6を除く8つのWL6ファイルと2MB版、4MB版のEXPを4MBのSRAMカードに書き込み。
TOSV2.1L20で起動FDを作成し、AUTOEXEC.BATからMSCDEXを削除、CONFIG.SYSにはTBIOSとICカードドライバ、SHELLのみ記述。
マーティー → 2MB版で起動し、デモが動作しました。メニュー画面操作中やゲームプレーを開始して数秒で止まりがちです。
20F RAM2MB → マーティーと同様でした。
20F RAM6MB → メニュー画面操作中に止まらなくなりました。2MB版、4M版共に画面サイズ変更を繰り返したり、ゲームプレー開始から30秒後あたりで止まります。
SN RAM4MB → 2MB版、4MB版共にゲームプレー開始から2~5分後あたりで止まります。ヌルヌル快適に動作しました。
HC RAM40MB → SN同様。
ICカードの使用を止めて、TOSV2.1L51をインストールしたHDDへゲームをコピーしました。
HC RAM40MB → SN同様でした。
2MBで止まるのはBCCさん指定の起動FDでは無いため、メモリ不足な気がします。
MSCDEXを外せばメモリが足りるかなと気になり試しました。
上位機種で止まる原因は分かりません。
ファイルコピー中にデータが壊れたり、こちらのTOWNS本体の故障の可能性もあります。
4MB以上の環境でゲームが止まるときは、止まる直前のグラフィックが面積1/4サイズで画面上部左右に赤、青、紫など原色に近い色で表示されます。
マーティーでこのデモ画面を拝めたのは感動でした。ありがとうございます。
2024-04-06 08:19:50
>aochanさん
停止する際はキーボードで操作していましたか?
デモは再生できて実操作だと停止する、CPU速度の早い上位機種だと数分は問題ない後状態は、キーボード操作時にフリーズする現象と一緒のようなので。
津軽側が問題かキーボード入力を割り込みで判定している実装の問題かわからず未修正、マーティー実機もキーボードが無かったので未確認でしたが、割り込みじゃなくてバッファ使った実装にしてみます。
2024-04-06 09:15:56
返信ありがとうございます。
停止する際は何れもキーボード操作中です。
矢印キーでメニュー画面のカーソルを操作している時や、
ゲームプレー中に矢印キーで移動や回転をしている最中ですね。
キーボードから指を離している場面では停止しなかったと思います。
2024-04-06 10:56:57
Wolfenstein3Dをパッド操作で行ったところ、投稿番号491のマーティーでも全く止まることなくプレー出来ました。
2024-04-08 21:29:10
津軽のキーボードの実装は、BIOSを見ながらBIOSが期待するような値を返すように書いて行ったので、きわどいところでは実機と動作が違うかもしれません。(ときどきTranslation ModeでShiftキーを取りこぼすのもそのせいかも)
なお、TOWNSとぜんぜん関係ないですが、皆既日食見てきました。http://ysflight.in.coocan.jp/aviation/logbook/j2024.html
2024-04-10 14:02:11
津軽でも実機でも同条件でフリーズするので違いはないと思います。
割り込みやめてバッファでやればいいんですけど、こっちの方がプログラムはスッキリしているし移植元のWOLF4GWが同じキーボード割り込み使ってるんでそのままにしておきたい、フリーズする原因がわからないのもなんか腑に落ちず、どうせパッドさえ使えばとりあえず問題はない状況なんで、もうちょっとだけ割り込みのままできないかとはやってます。
2024-04-10 19:28:21