プチコン4 まとめWiki

投稿プログラム : PC8801_エミュ for プチコン4号

パンくずリスト

2019年10月23日投稿 / 2020年05月04日更新 / 投稿者 : つかさ / タグ : 投稿プログラム エミュレータ Z80 PC8801

概要

このプログラムは,Z80エミュレータに,CRTCやキーボードなどを付加して,日本電気殿が発売していたパソコン,PC8801mk2っぽいような感じの動きをするプログラムです。実行には,N88-BASIC等のROMデータが必要ですが,同梱されておりません。各自で用意して下さい。また,このプログラムはプチコン4号専用となっており,プチコン3号やBIGでは動作いたしません。実機の2/3程度の速度で動作いたします。

PC8801_emu.jpg
  • 2019.10.23 初公開(S52V)
  • 2019.10.29 CMTテープのn88モードのモニタでセーブしたマシン語頭出し対応(S54V)
  • 2019.12.01 VSYNCバグ修正、FDDシーク音、ヘッドロード、アンロード音の追加(S60V)
  • 2019.12.15 FM音源簡易実装、SSG音源実装(S71V)
  • 2019.12.20 メインCPUとサブCPUの動作のタイミングを決めるcpuタイミングを実装(S74V)
  • 2020.03.15 個別高速化ルーチンが追加されました(S102V)
  • 2020.04.22 英語対応(S112V)
  • 2020.04.30 PCG-8100のPSGを3声化(S118V)
  • 2020.05.03 ステートセーブ機能を追加,PC88.ROMサポート(S122V)
  • 2020.05.06 V1, V2モードでも、IMGファイルを読み込めるようにした(S123V)
  • 2020.10.11 PCG8200機能OFFの場合、OUT 0,0(]o0,0)でCMTよりマシン語ロード

動作環境

プチコン4号専用です。USBキーボードでの入力も対応しています。ゲームプレイにもそこそ使用できます。プログラムのロードや、ちょっとした操作には便利に使えると思います。カーソルキーもバッチリです。

遊び方

  • 同梱のREADMEに従って,プロジェクト内にROMデータを置きます。
    N88.ROMN88-BASIC ROM(32k)
    N88N.ROMN-BASIC ROM(32k)
    N88EXT0.ROMROM 4th拡張ROM 0バンク目(8k)
    N88EXT1.ROMROM 4th拡張ROM 1バンク目(8k)
    N88EXT2.ROMROM 4th拡張ROM 2バンク目(8k)
    N88EXT3.ROMROM 4th拡張ROM 3バンク目(8k)
    N88SUB.ROMディスクサブシステムROM(2k)
    N88SUB.ROMディスクサブシステムROM(2k)
    FONT.ROMTVRAMで表示するフォント(2k)
    N88KNJ1.ROMJIS第一水準漢字ROM(128k)
    N88KNJ2.ROMJIS第二水準漢字ROM(128k)
  • N88.ROM〜N88SUB.ROM の代わりに、これらのファイルを固めた,PC88SRエミュのPC88.ROM を利用することも可能です。
    N88-BASKC(0000H-7FFFH)32kbytes
    N-BASIC(6000H-7FFFH))8kbytes
    N88-BASIC(6000H-7FFFH))8kbytes
    E0-ROM(6000H-7FFFH)8kbytes
    E1-ROM(6000H-7FFFH)8kbytes
    E2-ROM(6000H-7FFFH)8kbytes
    E3-ROM(6000H-7FFFH)8kbytes
    SUBCPU-ROM(0000H-1FFFH)8kbytes
    N-BASIC(0000H-5FFFH)24kbytes

Petit4Send(http://rei.to/petit4send.html)等でPCからSwitchにファイルを転送できます。

  • Petit4Sendを用いたファイルの転送方法およびケーブルの作成方法は、以下の動画が参考になります。

もしくは、プチコン3号、プチコンBig等でROMを音声で読み出し、サーバ経由で読み込んでください。

  1. ROMデータがない場合は、pbios の DISK.ROM、N88.ROM(N88_pbios.ROMとリネームされています)で代用されます。
  2. プロジェクトを選択すると、PC8801_S122V.PRGが実行されます。

操作方法

  • X 簡易ローダ呼び出し (F12)
  • ZL+X ディスク操作画面表示 (F6)
  • A リターンキー
  • B スペースキー
  • Y デリートキー
  • L,R1 SHIFTキー
  • L+X モニタ機能呼び出し(デフォルトではディスエーブル)
  • L+Y コンフィグ画面表示 (F7)
  • R+X ボタン設定変更機能
  • ZR リターンキー(FANFANでのゲームスタートに利用することを想定)
  • ZL Graphキー。(Luna City SOSでバリアを張り直すことを想定)
  • ZL+Y サウンド方式切り替え (F8)
  • ZL+右スティック押込 リセット (Home + End)
  • L+右スティック押込 画面のズーム機能のON/OFF
  • L+左スティック押込 PC8001 40周年記念イラスト インポーズモード切替

キーボードパネル

SHIFTキー、カナ、CAPS, GRAPHは一度タップするとロックし、もう一度タップするとロック 解除されます。CTRLキーは、キーが押されるまではロックされ,キーが押されるとロックが解除されます。

DISKの取り扱い

簡易ローダーで(X)で .D88 ファイルを選択する
  • 簡易ローダーを使って D88ファイルを選択すると、ドライブ1にディスクが挿入され、リセットがかかります。ゲームが自動起動するように .D88 フォーマットにコンバートされたファイルを実行する際には,ディスクの取り出し操作無しに利用可能なこの手順が便利です。
DISK選択メニュー(ZL+X)で.D88ファイルを選択。
  • 選択するとドライブ1から順にディスクが挿入されます。ドライブにディスクが挿入されると、ライトプロテクトされているディスクイメージは、 「🔑」のマークが前につきます。
  • (X)ボタンもしくは,キーボードの["Scroll Lock"]をディスクが挿入されているドライブで押すと,挿入中のディスクイメージのプロテクト状態を変更できます。物理的には、5インチフロッピーでは銀色のシールを貼ったり剥がしたりすることに相当します。
  • 既にディスクが挿入されているドライブで(A)ボタンを押すと、ディスクが取り出されます。その際に,ディスクに書き込みが行われていた場合,イメージ ファイルを保存するか尋ねられます。保存しない場合,変更は捨て去れれます。
  • ブランクディスクは,FDDドライブが空の状態で(A)ボタンを押すと作成できます。作成終了時にファイルに保存するかの確認がでますが,保存しないとディスク作成が無かった事になります。作成されたディスクは,N88-BASICのデータディスクとしてフォーマットされています。
  • リセットを選択すると、リセットがかかります。
  • ディスクサブシステムが有効な場合、キーボードのエンブレムの左側にFDDのアクセスランプが表示されます。
  • アクセスランプの色は,通常は緑色ですがディスクへの書き込みが行われると,以降は赤で表示されます。書き込み結果を残すには、明示的にDISK選択メニューから[取出]を選択し,変更の保存を行って下さい。
  • (+)ボタンでエミュレータを終了させた場合、内容が変更されているディスクがあると、保存するかどうか尋ねてきます。
  • ディスクサブシステムが無効な場合、FDDランプは表示されません。また、簡易ファイル選択に.D88ファイルが現れず、DISK選択メニューも利用できません。
  • ディスクサブシステムを有効にするためには、サブシステムROMデータがプロジェクト内に"N88SUB.ROM"という名前で保存しておく必要があります。pbiosの代用"DISK.ROM"を同梱しているため、単純な読込み&起動は動きますが、EMMYなどは、動作しませんでした。

CPUタイミング

  • cpuタイミングは、FDDサブシステムでメインCPU処理に戻るまでに実行する命令数。大きい程動作が早くなるが、動かなくなるソフトも増える。0の時は、従来と同じ動作を行ないます。通常は0のまま使用します。起動しないディスクがあったばあい、まずは cpuタイミング=3を試してみてください。それでも上手くいかない場合は、値を少しずつ変えながら動作する値を探ってください。0〜6までの値が設定できます。
  • cpuタイミングに0以外を設定しなければならなかったソフトを以下に示す。
    蒼き狼と白き牝鹿(mk2)V1S,cpu=4
    デゼニワールド(mk2)V1S,cpu=4 (予告編を見ようとすると止まる)
    ギャンブラー自己中心派V2, cpu=3
    シルフィードV2, cpu=3
    スタークルーザーV2, cpu=3
    テグザーV2, cpu=6
    Wizardry IV1S,cpu=3
    Wizardry IIV2S,cpu=3

簡易ローダ

  • (X)ボタンを単体で押すと,簡易ローダが呼びだされ,ファイルの読み込み,生成のメニューが出てきます。
  • (B)ボタンを押すと,簡易ローダから抜けます
  • サポートしているファイルは以下のとおり。
    • N80ファイル (読み込みのみ)
    • T88ファイル (読み込みのみ)
    • D88フォーマット(読み書き可能,要サブシステムROM)
      • D88フロッピーイメージファイルが使用できます。内部的には、複数イメージを含むファイルもサポートしているのですが、GUIができていません。もっとも, PC8001で複数イメージを含んだ D88 ファイルは見たことないです。
      • https://github.com/jpzm/wii88/blob/master/document/FORMAT.TXT
    • CMTファイル (読み書き可)
      • テープのセーブデータをそのまま保存する形式。 CLOADやMONコマンドのLで読み込む。 CMTファイルを選択した場合、ファイルに含まれるプログラムの頭出しが可能。CMTファイルを指定するだけでは読み込みは行われません。プログラムの読み込みは,CLOAD や MONコマンドのLなどで自分で行う必要があります。
      • また,CSAVEやMONのWコマンドでファイルを追記することができます。デフォルトでは,00MY_TAPE.CMT というファイルに追記されます。 いったんCMTファイルを読み込み指定すると,次からそのファイルの後ろに追記されます。セーブするCMTファイルを変えたい場合は、簡易ローダから追記したいCMTファイルを指定してください。新たなCMTファイルに保存したい場合は「新規テープの作成」を選んで下さい。
      • セーブ時は,必ず追記の形で保存されます。
    • 独自のIMGファイル (読み込み) Nモードの時のみ。
      • モードがNの時のみ読み込み可能。Nモード以外ではリストにも表示されません。
      • &H8000〜&HFFFFのRAMのデータの後ろに,レジスタの値を格納した形式。簡易ローダを呼び出した時点での状態を、新規イメージの作成」で保存することができます。
      • PCGによって変更されたフォント情報があるばあい、最後に1024byteのPCGデータが付加されるようになりました。
      • Nモード時のステート保存も.I88で行うようにしたため、PC8001エミュレータとの互換性のため、デフォルトでは読み込みのみです。ENABLE_ALWAYS_I88を #FALSEに設定すると、Nモード時に .IMGファイルで保存できるよう鳴ります。ただし、.IMGファイルはNモード時のみしか読み込むことが出来ません。
      • 詳細は、README.TXTをご参照下さい。
    • 独自のステートファイル(.I88)ファイル (読み込み・生成)
      • エミュレータの全ステートをセーブします。起動に時間のかかるソフトの一発起動や、簡易的なセーブ機能としてお使いいただけます。
      • セーブ機能として使う間合いは、SimConfigから、イメージ上書可を設定しておくと、同じイメージ名で保存できるようになるので、便利です。
      • PC88モードも保存されるステートに含まれているので、現在のPC88モードにかかわらず、NモードやN88モードのステートを読み込めます。
      • PCGの状態も保存されるので、PCGで定義された文字も崩れません。

独自のステートファイル(.I88)仕様

  • 内部のステートをまるっと保存したファイル形式。Nモード時にも、無駄になっちゃうステートは多いですが、利用出来ます。
  • ROMエリア、拡張RAMエリア(灰色)は保存されていない(現在頒布されているバージョンでは、ENABLE_ROM_STATE_STORE, ext_ram_bankが0になっている)
  • 背景が水色で塗られている部分はディスクサブシステム関連
  • 背景が黄色で塗られている部分は、N-Basicモードでは保存されない部分。
  • long int配列なので、左側の番地を4倍すると、バイト単位番地に
  • PCG_USAGEが非ゼロの時のみ、17E00以降のPCG_FONT[]の内容を0x80以降の半角文字のフォントに読み込む。
  • 所々に値が設定されていない部分は、拡張用。(結構保存し忘れで後から追加したりしてます。文字が水色になっている物は、実は最初のころ保存し忘れていた)
    state_file_format2.png

USBキーボード

PC8801とUSBキーボードでは違いがあります。

カナカタカナひらがな, ALTキー
GraphWindowsキー
StopPause Breakキー
CLSNumロックキー
Ins・DelDeleteキー

モニタ

モニタ機能は、Simコンフィグでイネーブルにしておく必要があります。X+L を押し,離すとモニタに入れます。モニタは,メモリのダンプ,逆アセンブル,メモリの書き換えができます。

モニタから抜け、エミュレータに戻る
Dnnnn逆アセンブル (B)で抜ける
Mnnnnメモリダンプ (B)で抜ける
Ennnnメモリのエディット
16進以外の入力で抜ける
R    レジスタの値を表示

スクリーンショット・動画

  • インストール方法
  • プレイ画面

公開キー

プチコン4用の公開キーです。トップメニューの「作品を見る」から公開キーを入力すると、作品をダウンロードできます。

プチコン4 公開キー
4EDKE2EAV

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)


メニュー 【4】

過去シリーズWiki

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 1 人がこのサイトを見ています
  • このページはこれまでに 2864 回、本日は 3 回、昨日は 7 回閲覧されました

ページの先頭に戻る

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.044 秒 | このページの最終更新 : 2020/05/29 (金) 04:23:21 (182d) | ログイン
Copyright(C) 2011-2019 プチコンまとめWiki