2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

PCエミュレーター統合スレッド Part7

1 :ナイコンさん:2015/05/05(火) 23:37:28.05 .net
古き良き、1970年代〜90年代のマイコンエミュレーター統合スレッドです。
基本、開発・人柱・新バージョンの報告や話題等で進行をお願いします
たまには上記の延長線上での脱線も可

※家庭用ゲーム機器は板違いです。(ぴゅう太はOK)
※ジェネレーターや其れに準ずる質問等はスレが荒れる原因になるので華麗にスルーして下さい
※上記の事柄に反応した場合その人も同じ池沼扱いされますので決して反応してはなりません
※このスレは如何にスルーできるか問われるスレですので肝に銘じておいて下さい
※禿しく空気読め

前スレ:PCエミュレーター統合スレッド Part6
http://hello.2ch.net/test/read.cgi/i4004/1364603890/

358 :武田 ◆bnZpPXJze51u :2015/12/17(木) 00:51:38.24 .net
原則として、VMクラス内では、Win32かQtかSDLかで処理を分けないようにします。

byteやbooleanなど変数の型の宣言、TRUE/FALSEなど値の宣言、
ld700.cpp内のstricmp()の置き換えなどは、common.cpp/hで吸収します。

例えば、tms9918a.cppのdraw_screen()で、_USE_QTの場合はスーパーインポーズの処理を
スキップするようになっていますが、こういったケースでは、
emu->osd_qt->get_video_buffer()の処理を空にするなど、OSDクラスで吸収してください。

#OPN(A)/OPMのmamefm.dllのサポートは例外として残っちゃいますが(苦笑)

EMUクラスも、例えばEMU::EMU()のように、環境毎にインタフェースが変わったり、
特定環境向けのインタフェースが(#ifdefで括って)用意されているのはOKですが、
変数(host_cpusなど)や具体的な処理は、OSDクラスの方で実装してください。
環境依存の#includeや#defineなども、emu.hではなくosd.hで宣言してください。

359 :武田 ◆bnZpPXJze51u :2015/12/17(木) 00:52:52.96 .net
VM::tape_position(), VM::set_disk_protected()は、USE_TAPE, USE_FD1が
宣言されていれば、標準で実装するようにしました。
USE_TAPE_PTR, USE_DISK_WRITE_PROTECTは廃止の方向でご検討ください。

SCREEN_WIDTH/HEIGHT_ASPECT, WINDOW_WIDTH/HEIGHTが#ifndefの場合に、
SCREEN_WIDTH/HEIGHTと同じ値に#defineする処理は、vm.h内でやってますので、
各仮想マシンの(vm name).hで宣言しなくてもOKです。

実解像度640x400を640x480で表示する件については、dot by dotとアスペクト比と、
どちらを重視するか、人によって好みが分かれるところです。
VM側で#define SCREEN_HEIGHT_ASPECT 480を宣言するやり方ではなく、
configにオプションを追加して、EMU/OSD側で処理するようにしたいと思いますので、
その辺の宣言も廃止の方向でお願いします。

360 :武田 ◆bnZpPXJze51u :2015/12/17(木) 00:54:10.54 .net
サウンドのボリューム調整は、write_signal()ではなく、専用のvirtual関数を用意します。
近々ひな形を用意するので、しばらくお待ちください。

なお、データレコーダの音ですが、PC-88など、SIOでバイナリデータを読み書きする
タイプについては取り込みを保留とさせてください。
DATARECクラスでt88ファイルから音の波形を生成して、それをI8251クラスや
Z80SIOクラスがガチンコでシリアルデータとして解釈するのが本筋かなと思います。
(実際にやるのは遠い将来ですが)

デバッガについてはちょっとイメージがわかないです。
VC++向けのコードもArtane.さんに弄って頂いて、それをこちらで取り込む形で
作業するのがいいかもしれません。

361 :武田 ◆bnZpPXJze51u :2015/12/17(木) 01:03:32.49 .net
細かい要望として、共有部分では、関数名などの名前空間は既存のコードに
あわせていただけると嬉しいかなーと思います。
(setMousePointer() -> set_mouse_pointer()など)

後、ソースの全比較をして、個別に気になった点ですが。

disk.cppの、special diskの判定部分が、diff/patchを機械的に
あてはめた結果か、変なことになっているみたいです。
また、get_track_size()ですが、ディスクが抜けた状態なのに、
挿入されているディスクの種類をチェックしているのは変かなと。

こういったことに気付く機会にもなるので、更新時の差分だけ
見るのではなく、時々はお互いのソースの全比較をするのも
必要ではないかなあと思います。
そのときの作業の手間を省くためにも、有意でないソースの違いは
なるたけ同期して無くしておきたいなあというのが、今回のお願いの
きっかけだったりします。

362 :武田 ◆bnZpPXJze51u :2015/12/17(木) 01:10:32.44 .net
取り敢えず、ソースの同期の作業については、適当なタイミングで、

私の方で(有意でない差分が発生している)対象のソース一覧を用意して、
Artane.さんの方で、そのまま取り込みが可能か判断をして頂く、

という形で進められればと思います。

総レス数 1000
355 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200