2023年12月31日日曜日

New City Hero @ j80/mac

はじめに 

という事で、せっかくお時間いただいて助けていただいたので、しっかり情報として残していきたいと思います。

まず、New City Heroの現在の入手方法については内藤さん御自身のアナウンスを御覧ください。無条件で入手できるわけではなく、 最初に配布していた頃の条件「動作可能な実機を所有している人」、または「PC-8001miniとパッケージ版を買ったけどダウンロードしそびれた人」への救済措置となっているので御注意を。後者の条件を今から揃えるのは難しいですが、前者はPCG互換ハードを自作するという道が残されており、この手のソフトに興味を持つ人にとっては比較的難易度の低い条件となってるかと思います。

この件は内藤さんが定期的にツイートしており、自分は比較的最近「大変言いにくいのですが、実は買ったまま積んでいて……」と白状して配布して頂きました。バージョンが最終版のv1.2.3ですが、これはビルドツールが変更になっただけで、コード的にはv1.2.2と同一だそうです。なので、v1.2.2の方も安心してこのブログを参考にできるはず。

事前準備

エミュレータでの動作に必要なROMの手配については、内藤さんのPC-8001開発環境整備/ハードウェア編を読んで実機を入手し、PC-8001開発環境整備/ソフトウェア編を参考に、TINY野郎さんのツールを使って読み出します。ビデオキャプチャ環境を用意するか、しっかり固定すればスマホでの撮影でも大丈夫そう。たぶん内藤さんのブログの時点からさらに更新されてるかな?付属のcmtは動作しますし、実機ではwavファイルから直接持ってけば大丈夫かと。あとプログラム名が変わっていて、読み込むには「cload"b2mv8」です。
ただ、フォントデータはCPUから見えないし、今から実機でPCGを……とか考えてる人なら、直接ROM引っこ抜いて読む方が手っ取り早くて楽って人は多そう(笑)今どき5,000円前後でROMライター買えるので、これを気に手を出すのもあり。

j80

j80は内藤さんのソフトウェア編にかかれている通り、HAL 8999さんのOut of STANDARD内にあるPC-8001のページにて配布されています。最新版のj80_r6_122のみが公開されており、内藤さんが元々検証していたバージョンとは違います。最初は動作せず、このバージョンの違いを疑ったのですが、濡れ衣でした。

ここれは解説例の少ないmacを例に手順と勘所を記録しておきます。

まずはインストール先を決めます。自分は~/opt/rpc/8001としました。以降ではこれを$(P8)と呼称して進めます。

$ cd $(P8)
$ mkdir -p app/res
$ cd app
$ lha x <ダウンロードしたパス>/j80_r6_122.lzh

lhaコマンドはbrewとかで入れるか、他の手段でlzhを展開するかしてください。mac使いでもこの手のをいじってる人なら何かしら環境を持ってるかと思います。

これで、以下のようなファイル構成になるはず。
$(P8)
  + app
    + j80_r6_122
    |  _j80.bat
    |  _j80.choice.bat
    |  _j80.setup.bat
    |  _j80.twins.bat
    |  + config
    |  + debug
    |  + display
    |  + doc
    |  j80.cfg
    |  j80.cmd
    |  j80.jar
    |  + keyboard
    |  pc-8001_test_cmu800.cfg
    |  pc-8001_test_hsync.cfg
    |  pc-8801_test_cmu800.cfg
    |  pc-8801_test_hsync.cfg
    |  + touchpanel
    |  + util
    + res
これをベースに設定ファイルの修正とROMの追加を行っていきます。

ROMの配置は、ベースとなるj80.cfgの修正を最小限にするために以下のようにします。
$(P8)
  + res
    + j80
    |  PC-8001.257073260.rom
    |  PC-8001.636.fon
この名前はデフォルトで有効になっているv1.1ROM向けの配置ですが、他のバージョンをこの名前で置いても問題ないと思いますし、気持ち悪ければ別ファイル名で置いて、cfgファイルを適切に修正すればOKです。

次にj80.cfgをベースにしたnch.cfgを作成します。ここでは設定差分だけ例に上げます。

$ diff j80.cfg nch.cfg|iconv -f sjis
340c340
<       DISK    ../res/j80/PC-8031-2.rom
---
> //    DISK    ../res/j80/PC-8031-2.rom
347c347
< //    ENHANCE 1        // 32K :「Full Dot Color PCG」改造なし
---
>       ENHANCE 1        // 32K :「Full Dot Color PCG」改造なし
そうそう、最近あまりお目にかからないSJISなので編集時は注意が必要。たぶんコメントだけだから壊しても大丈夫かとは思うけど、SJISはエスケープコードが怖いので、SJISのまま編集しつつ行末の日本語はいじらない、またはUTF-8なりに変換してから編集しましょう。

この設定で大切なのは2点で(そりゃ2箇所しか修正してないしね)
  1. DISKは無効化しましょう
  2. メインメモリの設定は32Kにしましょう
です。1に関してはROMがなければフォールバックで無効化されるみたいなので、無視しても大丈夫そうですが、後々足した時にトラブルの元になるので、覚えてるうちにコメントアウトしちゃいましょう。2は重要で、これを忘れるとテープから読み出し後にハングアップします。具体的には*G8001と表示されたところで止まる。自分は最初これを忘れてました。

この件に関しては、Wikipediaによれば
発売当初は搭載メモリ16Kモデルのみの販売であった。さらに16Kの増設が可能で、増設して購入するユーザが大半であったため、32Kモデルも後に販売された。
との事なので、実機で挑戦する際には搭載メモリは要注意。これとは別に更に8KBの拡張にも対応しているようですが、そっちは必須ではなさそう。M.K.さん販売のPSA基板にはNCH用とされた初代80向けの増設メモリー用端子が出てるんですが、ちょっと関係よく理解してないかも。要問合せになってるので聞いてみようかな。

これが出来たらあとは起動コマンドをshell script化するだけ。自分は$(P8)/j80_r67_122_nch.shとして以下のようなスクリプトを配置。以降はこいつに実効属性付けといて叩けば楽ちん&確実に起動。

#!/bin/sh
#

cd `dirname $0`/bin/j80_r6_122
echo OK | java -jar -Dsun.java2d.d3d=false \
-Dswing.boldMetal=false j80.jar nch.cfg

最初にスクリプトの起動名から相対なり絶対なりのパスを取得しておいて、展開したj80_r6_122のディレクトリに移動してます。あとはそこからの相対パスで設定ファイルのnch.cfgなり、その中で指定してるROMなりを読む感じ。

起動

この先もまぁ、昔のパソコンなのでそれなりに手間なので書いときます。

まずはPOWER ON、そしてPCG8100を有効化。

Okの後ろが化ければ正しく設定できた。

続けてテープを読ませるために指定して……

「mon」でモニタを起動して「L」で読み込み開始。エミュレータだと一瞬で読み込んで起動画面に。ここでもしメモリの設定を忘れてると以下のように「*G8001」と表示されて固まります。


という事で、macでも動いたよ、という報告とともに、自分がハマったポイントをまとめました。似たような道を通る人の参考になれば。

というわけで、自分は実機に向けてPSA向け部品手配に入ります。

参考情報

内藤さんのPC-8001関連のブログ一覧

ハードの準備から開発環境、技術詳細と幅広く丁寧に解説されていて流石です。


追記

起動時の自動電源ONとPCGの有効化も設定ファイルで指定できるそうです。

この設定、慣れてくると色々と便利そうです。引数でどの設定を使えるか選べるので、用途別にカスタマイズできますね。ちなみOPTIONはTAB区切りじゃないと認識しないようです。 

0 件のコメント: