# eFMTOwns 現状 (Sorry, Written in Japanese Only)
# --- If you can translate to another language, please do this and "PULL REQUEST" to my GITHUB.
## May 08, 2020 K.Ohta <whatisthis.sowhat _at_ gmail.com>
## --- 追記 May 21, 2020 K.Ohta
## --- 追記 June 26, 2020 K.Ohta
## --- 追記 November 15, 2020 K.Ohta
## --- 追記 December 09, 2020 K.Ohta
## --- 追記 June 29, 2021 K.Ohta
## --- 追記 June 31, 2021 K.Ohta
## --- 追記 October 24, 2021 K.Ohta

## 実装状況
- 本体：i386周りはOK?ただし、パワー/リセット関係の実装が不十分？
  - CPUID/MACHINE IDは実装した。
  - DMACはADDRESS BOUNDARYでHR以降の挙動が違うことはまだ実装してない。
  - ~~TownsOS (v2.1)で16bit DMA転送を使うと最初の１バイトが化けることが判明したので、当面使えなくした（I/O 0034h:bit7 = '1')~~**DMACの16bit転送は、インチキ実装で凌ぐ。改善はToDo扱い**。
  - ウエイト設定及びクロック設定は実装してみてるが、AB.COMが動かない(Townsと認識してくれない)機種がある。
  - キャッシュ周りの実装が今後必須になるかも？
- メモリ:Towns2H程度？可変拡張メモリやウエイト機能(i386も)は機能としては実装済み。
  - **うんず用互換BIOSを使うと、永久にリセットを繰り返す→BIOSのメモリアドレス的な問題。なぜうんずで上手く行くのか確認中。**
- シリアルROM: **いい加減にしか実装してない**
- VRAM: **512KB部分とFM-R互換機能のみ実装。**
  - 16色複数画面@MS-DOSで非表示がうまく出来てない。(PI.EXEで画像を表示し終えた後画像が表示されたまま）
  - アクセス高速化に関する最適化はほぼ出来た？(´・ω・｀)まだまだ出来る余地がなくもないけど(´・ω・｀)
  - ~~レンダリング周りは256色がダメっぽい？~~
- CRTC: ほぼ実装。多分実装した。きっと実装したと思う。**多分実装したんじゃないかな**。
  - インタレース表示が上手く行ってない。
  - はっちゃけあやよさん4(A4)とかでテキストレンダリングがうまく行かない
  - フラクタルエンジンを進めていくと、画面の下の方にゴミが出たりなどする
- スプライト:**ほぼ大丈夫になった？縮小/回転表示に問題**まだ高速化は必要(GPUオフロードできるといいのに…)。
- CDROM:
  - CD-DA: ほぼ実装
    - 多分PAUSE周りうまく行ってる~~PAUSE周りが上手く行ってない（PAUSEから復帰しない）~~
	- ~~CUEファイルのCD-DAトラックの再生音声が壊れてる~~
  - SEEK: ほぼ実装(まずはフラクタルエンジン・デモ向け)
  - MODE1 READ: ほぼ実装
  - MODE2 READ: 一応実装
  - RAW READ  : 一応実装
  - SUB FIELD (SUB CODE; 04CCH, 04CDh): レジスタは実装したがP-Wフィールド設定は殆ど未実装。**Qフィールドのみ一応実装した**
  - ~~TownsOS 1.xをCDブートすると、なぜかハングアップ(BIOSが00007DD4hに落ちる)。~~HDDブートだと大丈夫？
  - ~~TownsOS v1.xのCDブート（と言うか、v1.xについてるIO.SYS)で、CD-ROMコマンドA0h (80h+reply) PARAM=08 01 xx xx xx xx xx xxが期待する値を返さずブートが止まる。~~v2.1系は大丈夫っぽい。
  - ~~TownsOS 2.x系のCDからのブートは大丈夫っぽいが、挙動が不審。~~
  - **Towns OS v1.1L20/L30がブートできるようになりました(2020926)**。が、Towns Menuでアイコンクリックができない。
  - ~~Towns Linux (Slackware+JE4)のインストール中に、インストールファイル(*.tgzなど)が壊れる。~~
  - ~~TownsOS v2.1をCD-ROMからインストールすると、最終段階でconfig.sys等が壊れる＆ブートセクタが不正になる~~
  - ~~i486以降のマシンでTownsOS v2.1をインストールすると、最後のカスタマイズでハングアップする。~~
  - ~~MS-DOS+MSCDEXでも大体は動くが、時折転送に失敗する(解消した?)  。~~
  
- SCSI: 2バイトDMA転送を（**インチキで**)実装したので、殆どのものが動くはず。~~←書き込み時の最初の1バイトが壊れるケースが見つかったので、当面使わない~~
- OPN2(YM2612): だいたい実装できたと思う。
  - 同級生でゲーム中、リズム隊以外が発音しない。
- ADPCM(RF5C68): だいたい実装できた。ローパスフィルタ絡みは要調整。
  - ~~スタークルーザーのデモでテストしたが、朗読もちゃんとするけどデモ途中でハングアップする。~~(解決した？)
  - スタークルーザーでの効果音部分や楽器部分はうまく鳴ってるっぽい。
  - ~~スーパーリアル麻雀 PIVなどのPCMが途中からしか鳴らない(本当に途中からなのか？)~~。
- BEEP: 実装したが、音がプチプチ言ってる（何故？）
- 電子ミキサー: **一応実装。DEVICE::のAPIを追加して、TOWNS_CDROM::のボリュームに介入することで対処**
- サンプリング用A/Dコンバータ: とりあえずの実装はしてあるが、まだ試験etcしてない。**OSD側の対応が必要**
- キーボード: 
  - ~~オートリピート関係が非実装。(ホストマシンのWindow System側の問題なので、対応策を考え中)~~たぶんできた。
  - ~~リセット時の同時押し（"CD"など）を実装する必要がある→"DEBUG"以外、何故か上手く動作しない。~~
- ジョイパッド: 
  - ~~2ボタンパッドのみ実装~~
  - ~~6ボタンパッドは実装していない~~
  - ジョイポート含めて、実装形態を一から見直した~~→パッドに関しては多分うまく出来てる。~~
  - 電波新聞社のアナログスティックも実装したいけど、プロトコルがわからない。
  - リブルラブル用のスティックも実装してみたい…けど、どうしたものか。
- マウス: 実装はしたが、まだ精度に問題あり。
  - ~~最悪の場合、取り込みタイミングが1frame (≒13mSec)単位なのを変える必要がある。~~
  - ~~event.cppに手を入れて、0.5frame単位でのエミュレーションにしてみた。~~
  - 1から実装し直して~~、挙動がまだ不安定。~~
- UART: 乗っけてはいるけど動作未確認。
- MIDI: UARTだけ乗せてるのになぜかカードが認識されてる(??)

## 動いてるっぽい（確認済み）ソフト
- Towns OS v1.3 (CD-ROMからでもOK)~~(マウスが動いてないけどリリースまでに解決する）~~
- Towns OS v2.1 (CD-ROMからでもOK)~~(マウスが動いてないけどリリースまでに解決する）~~
- MS-DOS v6.2
- MS-DOS v3.1
- ランス２
- ランス3 
- Dr.STOP!
- フラクタルエンジン・デモ
- スタークルーザー２(**ほぼ問題なく動いてる**が、画面の乱れが多少残ってる）
- ぷよぷよ~~(CDからのブート可能？CD-DAに問題あり)~~
- Viper V10 RS
- スーパーリアル麻雀PIV
- 雷電伝説
- 究極タイガー
- 達人王
- View Point
- After Burner2 (**画面に問題あり**)
- Turbo Outrun (**画面に問題あり**)
- リブルラブル (**描画に問題あり**)

## 動かない(ブートしない)ソフト
- TownsOS v1.1 ~~(メニューまでは行くが、アイコンをクリックすると先に進まない)~~
- ~~After Burnerなど、CRI系のゲーム~~
- ライザンバーなど、**データウェストのゲーム**
- Bubble Bobble (**デモ画面中やゲーム開始時にクラッシュ**)
- 同級生(ブートセクタを読んだ後、「読み込みエラー」扱いになる。ただし、**別口でTowns OSをブートし、そちら側のRUN386.EXEを使うと音以外はほぼ問題なくゲームできる**）
- 魔法大作戦~~(ゲームデモ開始直前にクラッシュ)~~(画面がでない)
- A4-Ayayo\'s\ Live\ Affection- (**文字表示周りに問題あり。**)
- その他は確認中
  - RUN386.EXEのヴァージョンによっては、正当なデータが読み込まれないことがある。
  
