X680x0エミュレータXM6 TypeGの保守困難問題

16
PI. @xm6_original

レトロPCエミュレータXM6 & XM7 & XM8(原作者)、ソーサリアン for X680x0(移植者)。現有機 68:XVI(PhantomX)/SUPER,88:MA,98:UV11/DA/Xe10。 retropc.net/pi/

PI. @xm6_original

XM6 TypeGの保守がいよいよ待ったなしになった。今回検出したwindrvのFCBバグ以外に,これまでもHigh DPI対応やストレッチ設定の記憶/自動復元、ymfm組み込みなどやりたいアイテムがあったが、様々な理由で保守を後回しにしていた。この理由を説明したい。(続) twitter.com/xm6_original/s…

2022-07-10 09:47:34
PI. @xm6_original

@arith_rose 指摘頂いた問題はwindrv.cpp内の問題と特定できました。かなり過去のバージョンから存在する問題のようです。手元では期待動作通りになるよう修正できましたが、一般公開は少し先になりそうです。

2022-07-10 09:15:45
PI. @xm6_original

XM6は記述言語としてC++03とx86アセンブラ、GUIフレームワークとしてMFCを採用している。これは2001年の開発開始当時は妥当だったが、2022年現在にそぐわないのは明白であり、C++は少なくともC++14のレベルに移行させ、ARMアーキテクチャ等も考えアセンブラは全廃したい。(続)

2022-07-10 09:47:35
PI. @xm6_original

ただX680x0の世界を様々な拡張要素を含めて実現しているXM6 TypeGのソフト規模は大きく、「一つの世界」といえる状況になっている。私が開発していたversion 2.06の時点でソースファイル行数は(空行やコメント含め)約14万行あった。現在はおそらく20万行を超えているだろう(続)

2022-07-10 09:47:35
PI. @xm6_original

これだけのソフトウェアを一人で保守することは、殆どの方が想像している以上に大変であり、一部の保守は可能であるものの、内部構造を刷新することは(一から再開発するにしろ、代替部分を作りながら一部置換するにしろ)現実的なボリュームでない。さて、どうしたものか。(続)

2022-07-10 09:47:35
PI. @xm6_original

私が原作者となっているXMファミリのうち、内部刷新が一番容易なのがXM8で、XM8<XM7<XM6の順に難易度(ボリューム含め)が上がっていく。上記問題に対しどう対処すべきか、ユーザの方からのコメントを募集したい。

2022-07-10 09:47:35
金岩玲則 @moomu02

@xm6_original いつもお世話になっております。 XM6.XM8.XM7のお陰で過去の資産を楽しませてもらっている身としては、気長に待つので頑張ってくださいとしか言えないのが辛いです。

2022-07-10 11:41:53
たん @SiVps4J3XrbQi2P

@xm6_original エミュレータ使用でお世話になってます。 NIFTY-Serve FSHARPでのSHARP著作物公開経緯な頃を知ってる。80x86(プロテクトモード)アセンブラな物作りが出来る。Win32APIで物作りが出来る。MFCで物作り出来る。添付画な開発環境を残してる。これらを満たすユーザーの一人です。化石です😂 pic.twitter.com/mj0nw3xa55

2022-07-10 13:39:45
拡大
たん @SiVps4J3XrbQi2P

@xm6_original ボランティアで参加したいのはやまやまなのですが現実の実生活との兼ね合いで作業時間が限られてくると思います。PI.様の努力にすがるしかありませんm(__)m

2022-07-10 13:40:10
itoken(SND-L/KSND)⁧⁨【公式】🆗 @SNDR_SNDL

@kugimoto0715 @xm6_original (以前、少しだけTypeGのソースを元にデバッグのお手伝いや個人的な改造をしてました) XM6は改造に改造を重ね(特に描画)、複雑になりすぎててこれ以上の改造は厳しそうです GitHubあたりにスポンサーも付けプライベートなリポ作って有志募りほぼ1から再設計でしょうか…

2022-07-11 20:43:54
yasokada @yasokada2

@SNDR_SNDL @kugimoto0715 @xm6_original a. 中心人物, b. ボランティア (頻繁なやり取り可), c. ボランティア (たまのやり取り) A. aが仕様を整理 B. aがコア部分を設計、実装 C. bが周辺部分を設計、実装 (aと相談しながら) D. cが周辺部分を実装 (aが設計) E. 動作試験は作業した人以外で回す 技術、寄付、動作検証のボランティアあたり

2022-07-12 12:51:08
kani @kani7

XM6で常用してる機能は多分人それぞれで、私の場合はROMの差し替え機能(≒000/030の入れ替え機能)やTrueKey。TrueKeyは使ってる人にお会いした事が無い程にマイナーっぽいのだけど、これを削られてしまうと困るなあ...

2022-07-12 19:51:39