ダンプリスト入力用のツール(DumpListEditor)

→  ダンプリスト入力
→  ゲーム改造
→  E-mail















Yahoo!ジオシティーズ
→ Home    → Emulator    → AutoStart    → Software    → Download    → Link

目次

 

はじめに ダンプリスト入力用のツールについて

作業1 OCR入力

作業2 ダンプリストの縦横チェックサムを合わせる

作業3 BASICのグラフィックキャラクタ入力

作業4 マシン語とBASICを1つにまとめる

新機能1 データチェック/入力、視線移動軽減機能

新機能2 PC-6001用ゲームの入力

新機能3 MZ-80K用ゲームの入力

制限 DumpListEditorは、まだ作り中です

謝辞

   

ダンプリスト入力用のツールについて

 

 最近はOCRの性能が上がって、ダンプリスト入力(マシン語ゲームの入力)が非常に楽になりました。ただ、やっぱり間違いはあるので、 チェックサムを計算して修正作業は人間の手で必要です。

エミュ上でチェックサムを計算して、仮想プリンタに印刷してと、行ったり来たりの部分を効率化したいと考えてツールを作ってみました。

このツールを使うと、Windows上だけで、サムチェック、修正、cmt/d88/p6t/mztファイル作成までができるようになります。

 

DumpListEditor Ver0.17(PC-6001、MZ-80Kにも対応しました)

 

作業1 OCR入力

 

 最初、Googleドライブ(詳しくは、ここなど)のOCR機能を使うことを考えていたのですが、普通の文の認識率はすごいのですが、ダンプリストの認識となるとなかなか厳しいようです。(文字種を16進で使う文字に制限できれば、良いと思うのですが、やり方がわかりませんでした。)

今は、下記の2つをメインに使わせていただいてます。この部分は、例によって他力本願モードです。

 

1.読取革命Lite

 こちらは、昔のキヤノン製スキャナとスキャナ機能付きプリンタに無料でついていたものです。今は、読取革命(有料版)がPanasonicから購入可能です(1週間の無料お試し版もあります)。

いくつか使うのにコツがありますが、言葉では説明しにくいので、動画を作ってみました。最初から領域を手動で設定して、文字種を制限してしまうのが良いです。

間違った文字を修正する時に、同じ文字をまとめて修正できるのは、とても使いやすいと思います。動画では、1ブロック分だけの認識をさせていますが、1ページ分まとめて認識可能です。アドレスの順番になるように、2列とか3列とか順番に領域指定していって下さい。

 

2.Program List OCR(808 Midway)

 PC-6001のプログラム入力用ということで、P6X-BASICとダンプリストの2つのモードがあります。PC-6001用のツールなのですが、PC-8001用のダンプリスト入力でもそのまま使えます。作者様によるProgram List OCR自体の記事はこちらにあります

画面の解像度などをぴったり合わせた時の性能は、ものすごいので、ありがたく使わせていただきましょう(とりあえずResolutionを600に変換しておくと、認識時間は増えますが安定して認識できるように感じます)。使い方は、読取革命Liteと同様ですので、今まで読取革命を使っていた人なら、すぐに使えると思います。

ちなみに、BASICのOCR入力に関しては、このProgram List OCRの一択だと思います。BASICコマンド部分はほとんど完璧に認識されます。N-BASICでも問題なく使えてます。

 

作業2 ダンプリストの縦横チェックサムを合わせる

 

 ダンプリストのOCR結果が得られたら、OCR上でコピーして、DumpListEditorのダンプリストエリアに貼り付けます(チェックサムの部分もそのまま貼り付けて下さい)。

まずは、[チェック!]ボタンを押して下さい。問題がありそうな場所に色が付きます。エラーごとの数も表示されますので、それもヒントにして下さい。

 

 

最初は、ADRS(ADD)、SUMなどのキーワード部分を修正して下さい(ここが間違っていると構造が解析できません)。

次にアドレスエラーを修正してしまい、その後に、赤くなっている文字や、縦横チェックサムエラー(ピンク色)の交点になる場所のデータを修正していきます。OCR認識のため、チェックサム部分側が間違っている可能性もありますので、ご注意下さい。こちらも説明が難しいので、動画をご覧下さい

 

チェックサムを合わせていく作業は、結局、リストと画面を繰り返し見比べることにはなるのですが、数独パズルみたいで楽しい作業になります。また、誤認識パターンがわかってきたら置換機能を使って一気に修正してしまうことも可能です。ただ、データが消えてしまわないように、作業中はファイル書き込みやメモリ書き込みをこまめにして下さい。

 

修正と[チェック!]を繰り返し、最終的に、全てのエラーが0になったら完成です。[ファイル]メニューから、cmtファイルやd88ファイルに書き出して下さい。この際に、ファンクションキーを使った自動実行データを追加することが可能です。

 

なお、d88ファイルへの書き出しには、元のファイル(プログラムローダの入ったd88ファイル)が必要です。Thunderboltさん作成のDash-80を使わせていただきましょう。「Dash-80_10b1.d88」をDumpListEditorと同じフォルダに置いて下さい。ダウンロードは、Retro Computer Peopleから展示場→レトロプログラムのフロアと進んで下さい。

 

作業3 BASICのグラフィックキャラクタ入力

 

 Program List OCRのBASICプログラムの認識性能がすごいので、BASICもOCRで入力してしまいましょう。こちらは、最後に、コメント部分やグラフィックキャラクタの修正が必要になります。

ということで、DumpListEditorと言いながら、BASIC入力用画面も作ってあります。この画面では、PC-8001のグラフィックキャラクタの表示&入力が可能です。

OCR結果をコピペしたら、「変換」「コード補正」をして下さい。極力近いフォントに変換します。

まず最初に、Windows上でPC-8001のグラフィックキャラクタを表示できるフォント(N-Font)が、ニコ動のへたれパッチで有名なモ〜リンさんから公開されていますのでインストールして下さい(Out of STANDARDさん燕風さんの二ヶ所で公開中)。

インストールしないと使えません(表示できません)。

(2019/6/2追記)PC-6001にも対応しました。BASICの入力&表示には、P6-Fontが必要です。Hashi's HomePage様(P6プログラムのダウンロード)からインストールをお願いします。

(2019/7/3追記)MZ-80Kにも対応しました。DumpListEditorに同梱している2つのフォントをインストールしてください。

 

 

基本的に右上の「記号入力」「カナ入力」パネルから文字入力可能ですが、キーボードから記号やカタカナを入力した後(MS Gothicに切り替えないと見えてませんが)、[コード補正]ボタンで変換しても良いです。ALTキーを使って入力することも可能です(DLEキー配列.pdf)。

こちらも全て入力し終わったら、cmt/d88/p6t/mztファイルに書き出すことが可能です(この時点で、それぞれの機種に対応した中間言語に変換されます)。

 

作業4 マシン語とBASICを1つにまとめる

 

 当時は、BASICとマシン語を組み合わせたゲームが多かったです(BASICは単に画面設定だけというのも多かったですが)。cmtファイルの追記モードで対応可能なのですが、面倒なので、複数のファイルを整理できる画面も作りました。

この画面では、テキスト入力部分に、cmtファイル/BASファイル/BINファイルを直接ドラッグ&ドロップすることが可能です(フォルダからコピペしたり、ファイル読み込みメニューを使っても良いです)。また、「マシン語入力」「BASIC入力」画面から、[ファイル整理画面にPaste]ボタンでファイルを直接追加することも可能です。

順番に並べた状態で、cmt/d88/p6t/mztファイル書き出しを行って下さい。

 

 

逆に、テキスト入力部分以外(ボタンの並んでいるエリア)にcmt/d88/p6t/mztファイルをドロップすると、中身がテキスト入力部分に出てくるようになっています。さらに、BASファイルの中身を見たい時には、[選択BASファイルをBASIC入力画面に送る]ボタンを押して下さい(2番目以降のBASファイルを見たい時には、ファイルを選択してからボタンを押して下さい)。すでにあるd88ファイルの中身の確認などにも使えると思います。

 

また、同じやり方で、cmtファイルの連結や、マルチボリュームd88ファイルの分解、結合も可能です。

 

視線移動軽減機能(1行入力するごとにWindowが移動していきます)

 

 I/O形式の縦横チェックサムだと、間違い位置が簡単に特定できるのですが、横だけのチェックサムだと、結局、すべてのデータの確認が必要です。さらに、128バイト単位のチェックサムだったりすると、誤りを見つけるのもかなり大変で、入力しなおしてしまったほうが早いぐらいです。

ということで、ver0.09からデータ確認およびデータ入力時に、視線移動を最小にする機能を追加しました。

まず、ダンプリストの画像を表示して、その上にDumpListEditorを1行だけの表示にして載せて下さい。

画像と同じ文字間隔になるように、DumpListEditorのフォントサイズを調整します(CTRL+マウスホイールが便利です)。

画像のすぐ上側にDumpListEditorを置いて、両方を同時に見られるようにします。「設定」「共通設定」で「ステータスバー」のチェックをはずして、ぎりぎりまで近づけます。

 

(Program List OCRの上にDumpListEditorを載せた例)

Program List OCRは角度を微調整できるので便利です。

 

エラーが多い場合や手入力をする場合には、window自動移動の2つのチェックをオンにして、行移動に伴い自動的にwindowを移動するようにすると便利です。移動量はフォントの大きさに応じて、調整して下さい

 

 

実際の動きは、こちらの動画をご覧ください。ダンプリストを見ながらマシン語を手入力した後に、マシン語の修正を行っています。

 

PC-6001用ゲームを入力する

 

 ver0.07からPC-6001に対応しました。作業開始時に、モデルのリストからPC-6001を選択してください。フォントの設定や右上パネルのTAB最適化が行われます。

グラフィックキャラクタの表示には、P6-Fontが必要です。Hashi's HomePage様(P6プログラムのダウンロード)からインストールをお願いします。

 

 

PC-6001のマシン語の場合、チェックサムとして縦横チェックサム(I/O形式)はあまり使われていないようです。チェックサム形式のリストから、「横8列」などを選択してからお使い下さい。

PC-6001系の場合、起動後のBASICモードやページ数の入力が面倒です。「設定」「p6t出力設定」で、設定してからp6tファイルを書き出すことで、pc6001v.exeなどのエミュレータで自動で入力されるようになります。

 

 

すでに打ち込み済のゲームでも、ファイル整理画面に切り替えてから、「ファイル」「p6t(p6,cas)ファイル読み込み&ファイル抽出」で読み込んだ後(「Drag&Dropエリアはこのあたりに」へのDropでも可)、BASICモードや自動実行を設定してから、再度書き出すことで、自動化が可能です。

BASICプログラムがある場合には、「BASIC入力画面に送る」で、BASICプログラムをP6-Fontで閲覧できます。もちろん、BASICの修正もできます(修正後は、「ファイル整理画面にPaste」でファイル整理画面に戻して下さい)。

 

MZ-80K用ゲームを入力する

 

 ver0.09からMZ-80Kに対応しました。作業開始時に、モデルのリストからMZ-80Kを選択してください。フォントの設定や右上パネルのTAB最適化が行われます。

グラフィックキャラクタの表示には、MZ-Fontのインストールが必要です。Windows用のMZフォントが見つからなかったので、自分で作りました。DumpListEditorに同梱しておきますので、2つのフォント(MZ-FontとMZ-Font-Symbol)をインストールしてお使い下さい。

38年前に買った本(マイコン別冊MZ-80活用研究)のBASICゲームを全部入力してみました。25行の制限なくプログラムを自由にスクロールできるのは感動です。こちらに動画を置いておきます

 

 

グラフィックキャラの入力は、右上パネルの「記号」と「MZ記号」をお使い下さい。キーボードから入力することも可能です(DLEキー配列.pdfのMZ-80Kモードを参考にして下さい)。

 

 

MZ-80Kの場合、チェックサムとして縦横チェックサム(I/O形式)はあまり使われていないようです。チェックサム形式のリストから、「128バイトサム(横16)」などを選択してからお使い下さい。

すでに打ち込み済のゲームに対しても、自動スタートなどの設定が可能です。ファイル整理画面に切り替えてから、「ファイル」「mzt(mzf,m12)ファイル読み込み&ファイル抽出」で読み込んだ後(「Drag&Dropエリアはこのあたりに」へのDropでも可)、「設定」「mzt出力設定」で、autostartフラグを設定してから、書き出して下さい。

BASICプログラムがある場合には、「BASIC入力画面に送る」で、BASICプログラムをMZ-Fontで閲覧できます。もちろん、BASICの修正もできます(修正後は、「ファイル整理画面にPaste」でファイル整理画面に戻して下さい)。

 

MZ-80KのBASICゲームの場合、BASICシステムのロードとBASICプログラムのロードで2回のロードが必要です(さすがクリーンコンピュータ)。いろいろ面倒なので、無理やりですが、自動化を試みています。

起動直後のLOADまたはLの入力を省略する方法(ipl.romの改造)がこちらの動画にありますので興味がある方はご覧下さい。NEWMON.ROMを逆アセンブルして、一か所修正してから、ヘッダ無しバイナリファイルとして書き出しています。

ロードを一回で済ますには、「設定」「mzt出力設定」「BASICシステムファイルとプログラムを結合して一度にLOADする(旧SP-5030のみ対応)」をチェックして下さい。DumpListEditorと同じフォルダに「SP-5030.mzt」が存在すればそれと結合して保存されます。(Enriさんの解析情報に従いワークエリアを設定していますので、それ以外のバージョンでは動かないと思います)。

さらに、「SP-5030を改造して自動RUN」をチェックすると、LOAD後自動でRUNが実行されるようにSP-5030自体を強引に書き換えてから保存します。ちなみに、STOPキーはきかなくなります(STOPしてもすぐに自動でRUNされてしまう)。

 

 

その他、MZ-80K独自の作業については、下記にまとめます。

  ・FORMコンパイラ用ゲームの入力方法

 

制限 DumpListEditorは、まだ作り中です

 

 まだ、作り中なので、PC-8801などはほとんど対応できていません。d88ファイルのフォーマットもDISK-BASICとCP/Mのみ解析可能です。

 

また、このツールで生成したBASIC中間言語で、浮動小数点の下位のほうのビットが実際の中間言語と異なっています(C#の仮数部がN-BASICより3ビット少ないためです)。精度が重要なプログラムの場合には、テキストファイルの状態でエミュに流し込んで下さい(普通にゲームをする分には、全然問題ありません)。

 

こちらに置いておきます→DumpListEditor Ver0.17

使ってみて何かありましたら、メールでご連絡いただけるとうれしいです。ご要望等についてもできる範囲で対応したいと思います。

 

謝辞

 

下記のツール/情報を使わせていただきました。いつもありがとうございます。

 

eighttails様(Program List OCR作成&公開)

モ〜リン様(N-Font作成&公開)

Hashi様(P6-Font作成&公開)

HAL 8999様(j80作成&公開、PC-8001発掘隊運営、N-Font公開場所提供)

燕風様(N-Font公開場所提供)

Thunderbolt様(Dash-80作成&公開、BASIC中間言語コード情報公開)

おにたま放送局様(ALPHA-MINI DOS作成&公開)

P6つくろうブログ様(PC-6001ディスク情報公開)

Enri様(MZフォント画像公開、SP-1002、SP-5030解析情報公開)

kubo様(DumpListEditor試用&改善提案)