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/

342 :武田 ◆bnZpPXJze51u :2015/11/30(月) 20:26:08.16 .net
>>341
再アップしました。
common/config/fileio周りを弄っています。
この辺りはなるたけ環境によらず纏めておきたいなあと。

Artane.さんのcommon.hの型宣言も、極力取り込んでます。
*_s()な文字列関数は、my_*_s()という名前にして、
VC++以外はcommon.cppの方で標準関数に置き替える実装にしました。
tchar周りの#defineも弄ってます。

config.cppのiniファイルの読み書きのAPIもcommonの方に移しました。
Artane.さんの実装だとQt周り前提になっていますが、
可能でしたらStandardなC/C++にして頂けると取り込みやすいです。
(XM8のようにSDLベースの実装もありますので)
確かGPLなini parserが公開されていたと思うので、
その辺をそのまま組み込んでしまうのが簡単かもしれません。

343 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/30(月) 23:10:57.81 .net
>>338
他力を借りて解決しました。
http://katahiromz.bbs.fc2.com/reply/10466094/34/

344 :ナイコンさん:2015/11/30(月) 23:43:28.18 .net
ところでアル種さんって読むの?

345 :Artane. ◆1o3c8RYIzjU0 :2015/12/01(火) 13:09:20.87 .net
>>342

お疲れ様です。
作業内容了解しました。
とりあえず、必要最小限のマージをした上でQt依存部分を共通部から追い出していきますね。
デバッガの対応は少し後になりそうですが。

>>344
アーテンですね(^_^;
古いハンドルネームだから(^_^;

346 :Artane. ◆1o3c8RYIzjU0 :2015/12/01(火) 19:08:35.97 .net
とりあえず、Qt (多分Windows以外)で最低限のビルドが可能なようにしました。
githubのbabe250a86799b3b8bfd6f221239e2cf2dfc7ba4で。
・デバッガを統合できてません
・幾つかの関数をEMUに追加してありますが、#if defined(_USE_QT)で括ってて、
尚且つ関数の場合はかなりがQtのオブジェクト間通信に置き換わります。
 置き換えられない関数は数えるほどになる…筈。
・とりあえず、Get/WritePrivateProfile*()はEvilな事をやってラッパをでっち上げました。
 もう少しEvilさをなくしたい。
・source/src/*.cpp から、Qt依存部分を(emu.cpp内で他のクラスとの兼ね合いでなくせないもの以外は)たぶんすべてなくしました(^_^;
 基本的に、C++の標準ライブラリに置き換えた。

現状、FM77AV40EXがビルドできて基本的な動作はなんとかなってます。が、バグが潜んでると思うので排除していきます(;´Д`)
FM7系以外は未だビルド定義が不十分です(;´Д`)
でも、疲れたよパトラッシュ…(´・ω・`)

347 :Artane. ◆1o3c8RYIzjU0 :2015/12/01(火) 22:59:37.24 .net
BABBAGE2ndやBMJr,MASTER SYSTEMなど幾つかのVMが動くようにしましたが、X1系が起動時にスイッチをゆっくり入れろと出てきますね。
githubの d89562f93404aa069216098692567cf9b41844ce

348 :ナイコンさん:2015/12/02(水) 03:10:44.83 .net
あぁ、X1の例の表示かぁ...

349 :武田 ◆bnZpPXJze51u :2015/12/06(日) 23:56:03.86 .net
>>347
お疲れ様です。
こちらの大規模変更でお手数おかけして申し訳ないです。

1週間の長期出張から帰ってきました。
ぼちぼち取り込み作業に取り掛かります。

350 :Artane. ◆1o3c8RYIzjU0 :2015/12/10(木) 19:35:59.47 .net
Linux版 Common Source Code Projectリリースしました
http://github.com/Artanejp/common_source_project-fm7/releases/tag/SNAPSHOT_20151210
未だ、Windowsはビルドすら出来てませんが (^_^;

351 :ナイコンさん:2015/12/12(土) 17:47:56.96 .net
テスト

352 :Artane. ◆1o3c8RYIzjU0 :2015/12/12(土) 19:56:44.07 .net
>>348
なんとか解決できました(;´Д`)

353 :武田 ◆bnZpPXJze51u :2015/12/16(水) 00:46:38.13 .net
>>350
お疲れ様です。
今晩のリリースで、2015/12/13のコミットまで取り込みました。

各VMのNOT,ANDクラスのインスタンス名をnot,and以外に変更しました。
(変数名の名前空間の都合で、Artane.さんとは違う名前にしています、すみません)
また、min/maxの型キャストを取り込みました。
ld700.cpp, mc6809.cpp, upd765a.cppをMSVC以外向けに修正しました。

config, common, fileioをMSVC以外向けに修正しました。
_WIN32と_MSC_VERの使い分けが不適切だった箇所を修正しました。
common.hでboolean, byteの型の定義を追加しました。
なお、common.cppのget_file_path_without_extension()は、
ファイル名のみ取り出すのではなく、フルパス中の拡張子のみ取り除く関数です。

win32では実際には使っていませんが、emu/osdのlock_vm(), unlock_vm()を
ネストする場合を想定した実装にしてみました。
また、深いネストから一気に抜けるために、force_unlock_vm()を追加しました。

354 :武田 ◆bnZpPXJze51u :2015/12/16(水) 00:48:23.12 .net
そろそろ、一旦ソースの同期を取れないかと思っています。

特に各機種の仮想マシン周りのソースで、意味のない差分が発生しています。
変数の型やmin/maxなど、common.hで解決ついている(筈?の)問題の修正とか、
#ifdef _MSC_VERで括られている__assume(0);の削除とか、
コメントアウトされて、もう元に戻されるあてがなさそうな過去の変更とか、
空白や改行位置などの単純な差違とか、etc,etc

#勿論、改行コードの違いは現状のままでいいかと思います。

お時間に余裕があるときで構いませんので、この辺りの作業も少しずつ
進めて頂けますとうれしいです。
DIFFで差分も取りやすくなりますし、お互いのバイナリで挙動が違う、
という問題も、より発生しにくくなるかと思います。

ソースの同期のために、私の方で必要な変更がありましたらお知らせください。
common/emu辺りも、出来るだけArtane.さんにとって統合に抵抗がないような形で、
かつ出来るだけシンプルに纏めていければと考えております。

355 :武田 ◆bnZpPXJze51u :2015/12/16(水) 00:51:43.51 .net
eFM7/77/77AVですが、set_vm_screen_size()の使い方を修正しています。

第1,2引数はVMの描画画素数、
第3,4引数は表示するときの画面サイズ(アスペクト比込み)、
第5,6引数はウィンドウサイズの基準サイズ、
となります。

元のコードだと、ウィンドウが横長になったり小さくなったりするので、
第3〜6の値を変更しています。
また、display_modeの値と、set_vm_screen_size()で指定した画面サイズの
整合性が取れない場合があるので、draw_screen()の処理内で、
毎回set_vm_screen_size()するように修正しました。

#数日ほど2chに書き込めなかったため、自サイトの方に書きましたが、
#念のためこちらでも投稿しておきます。

356 :Artane. ◆1o3c8RYIzjU0 :2015/12/16(水) 06:42:52.69 .net
>>354
お疲れ様です。
とりあえず、少しお時間下さい…同期を取るのにはコードを見直さないと拙い気がしますので。
確かにcommonやemuがカオスになりつつありますし、対策は打たないといけないですね。
基本的に、FM-7の方には当分これ以上は手を入れない(バグフィックスや微調整とFM-8対応を除く)つもりではいますので、
色々と考えて行きたいと思います。
問題の叩くAPIが違う部分は、極力武田さんの方に合わせます。

確実に欲しい構造としては、
・音を出すデバイスについて、write_signal()で左右の音量を調整するAPIをデフォルトにする。
・VM/OSDから、EMUに任意のenum型のコマンド(システムコール)とvoid *型かva_list型での引数を打てるようにするAPIを構築する。
と言う所でしょうか。 

後は、現状最新のコミットにあるように、デバッガに関して、スレッド立ち上げてループ廻しても廻さなくても出来るようにして頂けると非常に助かります。
と言うのも、マルチスレッドかつイベントドリブンのUIと、今のデバッガの構造って相性悪いんですよね。
コマンドインタプリタ本体とコマンドをコンソール等から受け取る部分が分離されてると、問題がほぼ解決出来ますので。

357 :武田 ◆bnZpPXJze51u :2015/12/17(木) 00:49:58.62 .net
ソースの同期の件ですが、ちょっとお待ちください。
OS依存処理のうち、エミュレーションに関係ないサービス的なものを、
EMU/OSDからCOMMONに移すことを含めて、
ちょっと大規模なソースの整理を先にやりたいと思います。

ソースの同期については、Artane.さんに変更をお願いする点も
多くなるかと思いますので、先に方針の摺合せを出来ればと。

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.さんの方で、そのまま取り込みが可能か判断をして頂く、

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

363 :Artane. ◆1o3c8RYIzjU0 :2015/12/17(木) 13:17:43.44 .net
>>357
よろしくお願いします(^ω^)
場合によっては私の方のソースコードにあるアドレスまでメール下さいませm(_ _)m

364 :ナイコンさん:2015/12/17(木) 21:45:04.91 .net
新しい機種が増えるたびに vm/vm.h や res/resource.h に追記しないといけないのは面倒っぽい気もするのですが
うまい解決法は無いものですかね

365 :Artane. ◆1o3c8RYIzjU0 :2015/12/17(木) 22:58:57.42 .net
>>364
スクリプト使うとか…暇見て試してみますわ。

366 :武田 ◆bnZpPXJze51u :2015/12/17(木) 23:29:43.10 .net
面倒ってほど機種数が増えるかなあ(苦笑)
というか、common source code projectにかかわってくださる開発者が
そんなに増えるかなあ…増えると嬉しいなあ。

今晩の更新で、application_path(), bios_path(), create_date_file_name(),
get_host_time()を、EMU/OSDクラスからcommon.cpp/hに移しました。

OS依存の処理だけど、エミュレーションに関係ない処理を、
EMUクラス経由で実行するのがどうにも違和感があったのと、
EMUクラスが初期化される前にiniファイルのパスを取得するために、
winmainの方でもapplication_pathを取得しているのがアホらしくって。

で、こういうインフラを変更すると、全仮想マシン側でも修正が必要で、
大量のソースに変更が入って、Artane.さんに迷惑をお掛けする、と。

こっちの方が余程面倒ですよね、ごめんなさいです。

367 :武田 ◆bnZpPXJze51u :2015/12/17(木) 23:36:03.47 .net
今晩の更新で、というか、今バイナリのビルド中なので、
今晩予定の更新で、というのが正しいですね(を

そういえば、プリンタ周りも現在はEMU/OSDクラスに入れていますが、
やっぱりVM側に戻すことになりそうです。

仮想プリンタで、ビットマップやフォント作ったり、という処理が入るのと、
プリンタDLLをとっかえひっかえ、とか考えるとOSDっぽいんだけど。
でも、プリンタというマシンのエミュレーションをすると考えると、
やっぱりVM側だよなあと。

ビットマップの生成やファイルへの出力とかフォントの生成とか、
そういうサービスをEMU/OSD経由で呼び出せればいいんだし、
DLLを使うのも、mamefm.dllという前例があるんだし、という感じで。

368 :Artane. ◆1o3c8RYIzjU0 :2015/12/18(金) 19:50:42.55 .net
>>358-362
大まかに変更を取り込みました。
まだ、構造的に差異が出てきてそれを潰す作業が続きそうですが…
最低限、FM-7系だけはビルドできるようにしておきました
commit 26f3ced80a6b679371975e68318d3348697e2fe6
disk.cppの重複部分はなくしました。

但し、以下は未だ残してあります(変更要件が固まった時に移行する)。
・音量をwrite_signal()で調整する機能
・ダミーデバイスでLEDを表示できるようにするDUMMYDEVICE クラス(要は、入出力の終端を表現している訳です)
他にもあった気がしますが、まぁ、後からやっていきます(かなり頭が疲れてる)。
とりあえず、ソースコードをきちんと見直していくにも、一定程度動かせないと捗らないので…(^_^;

369 :Artane. ◆1o3c8RYIzjU0 :2015/12/18(金) 20:00:33.69 .net
>>366
>で、こういうインフラを変更すると、全仮想マシン側でも修正が必要で、
>大量のソースに変更が入って、Artane.さんに迷惑をお掛けする、と。
>こっちの方が余程面倒ですよね、ごめんなさいです。

いえいえ全然…最終的にそういうのはお互い様というか、私の方でも色々使いやすくすると称して訳のわからない機能を突っ込んだりしてる訳ですから…

>>367
プリンターの件、了解です。
DLLを使う前提にするか、どうするかはおいおい考えていきましょう。

>>364-365
この件ですが、仮想クラスで(要は殆どの関数をvirtualで定義しちゃう)VMを定義してメタクラスとして、
それぞれの仮想マシンの実体(?)は、そのメタクラスを継承するクラスにしたらどうでしょうね。
↓みたいな感じ
class METAVM → class FOO : public METAVM
で、METAVMには必要最低限かつ多くのVMで共通化出来そうなVM機能を入れる。
# 但し、こうしておくと、gnu ldでのリンクが厄介になりそうな気がしなくもないのですが…はてさて。

## リンカでの.aファイルの相互依存関係の解決ってなんでこんなややこしいんだか…
## ここだけは、VCが羨ましいです(;´Д`)

370 :ナイコンさん:2015/12/21(月) 14:54:48.29 .net
http://akiba-pc.watch.impress.co.jp/docs/wakiba/find/20151221_736240.html
http://akiba-pc.watch.impress.co.jp/img/ah/docs/736/240/mx68000xvihd1.jpg
http://akiba-pc.watch.impress.co.jp/img/ah/docs/736/240/mx68000xvihd5.jpg
http://akiba-pc.watch.impress.co.jp/img/ah/docs/736/240/mx68000xvihd3.jpg
http://akiba-pc.watch.impress.co.jp/img/ah/docs/736/240/mx68000xvihd7.jpg
http://akiba-pc.watch.impress.co.jp/img/ah/docs/736/240/mx68000xvihd8.jpg
http://akiba-pc.watch.impress.co.jp/img/ah/docs/736/240/mx68000xvihd9.jpg

保存状態良好でワラタ

371 :ナイコンさん:2015/12/21(月) 15:23:40.47 .net
キーボード別売りという足元見てんなぁ

372 :ナイコンさん:2015/12/21(月) 15:36:54.92 .net
おつかれさまです。
>>368続き
12/17のヴァージョンと、ほぼ同期をとりました。
今の所、CMakeの同期を取ってるのがX1とかFM7とかEX80とかBABBAge2nd程度です。

>>360
>サウンドのボリューム調整は、write_signal()ではなく、専用のvirtual関数を用意します。
>近々ひな形を用意するので、しばらくお待ちください。
わかりました。

雛形が出来しだい、移行していきますね。

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

了解です。
基本的にこちらでもコメントアウトしておきました。

現状は、githubの a3901d1d33172ad63008d79dcc2cbc1d734c1c1aです。
幾つか独自の変更点を>>368で書いた事以外に残してあります。

・X1でCG(PCG)とテキストVRAMをレンダリングするとき、
 1Lineごとにシャドー領域に仮レンダリングして、それを
 draw_screen()で合成するようにしてみた。
 →非同期描画モデルだと、PCG/文字が非常にちらつくので。
・PC8801では、ダミーCPUを登録してダミー側のクロックを落としている。
 →そうしないと、HOST CPU側のCPU使用量が跳ね上がるので、
  なるべく落とすようにした。

373 :Artane. ◆1o3c8RYIzjU0 :2015/12/21(月) 15:46:46.46 .net
>>372 は私でした。
デバッガですが、私の側のsrc/debugger.cpp を参照願います。
 基では、debugger_thread()の中でデバッガの
コマンドインタプリタをスレッド立ちあげて廻してるのですが、
これを、コマンド処理部分をdebugger_command()に廻してます。(作業中)
こうする事で、Qtのようにイベントドリブンかつ元々マルチスレッド保障のUIからデバッガの
コマンドを呼び出すときに、
[Widget:テキスト入力イベント]→[デバッガ側受け皿]→[デバッガコマンド実行]→[VM側での解釈]→[Widget:入力待機]
と言う感じの流れでも動くようになります。
# と言うか、Widgetはテキスト入力イベントを投げたら、すぐに入力待機してリプライ文字列の表示待ちになりますが。

Qtでいろいろ管理してると、pthreadでのスレッド立ちあげ/終了と言うのは却って使い勝手が悪いのですね(^_^;
こういう流れは、コマンドコンソール上でデバッガ廻す分には*全く*要らないのですが、
GNU/Linuxや(多分)BSDなどのデスクトップ環境だと、別プロセスでターミナルを立ちあげて、
そこで何かやる。と言うのは却ってややこしいんですよね。mkfifoしてターミナル側でダミープログラム立ちあげて入出力任せて…みたいな。
# もしくは、ターミナルウイジェットを新しく作るか(;´Д`)

374 :Artane. ◆1o3c8RYIzjU0 :2015/12/21(月) 22:42:13.41 .net
>>373のように書いてしまいましたが、撤回します(^_^;
なんとか、独立したスレッド内のループでデバッガ廻せるように出来ました。
もし、作業に取り掛かられていたら、お詫び申し上げます。>武田さん

375 :Artane. ◆1o3c8RYIzjU0 :2015/12/22(火) 22:41:06.13 .net
Common Source Code Project のQt版、武田さんの12/17版を基に2015-12-22-1としてリリースしました。
https://github.com/Artanejp/common_source_project-fm7/releases/tag/SNAPSHOT_20151222
WindowsとLinux (AMD64)のバイナリへのリンクがあります。

376 :武田 ◆bnZpPXJze51u :2015/12/23(水) 01:25:33.72 .net
お疲れ様です。

統合を進める前に色々やっておこうということで、またモリッと書き換えてます(苦笑)
今回はUNICODEでビルドしたときの問題を色々修正しました。

プリンタ向けのEMU/OSDの実装も、今回で概ね一段落です。
基本的には、Win32のDIBSection,FONT,PENにラッパを被せただけです。
できれば年内に、MZ-1P17辺りを実装できればいいなと思っています。

377 :武田 ◆bnZpPXJze51u :2015/12/23(水) 01:26:40.66 .net
プリンタ向けのサービスの使い方はこんな感じです。

bitmap_t bitmap;
font_t font;
pen_t pen;

emu->create_bitmap(&bitmap, 64, 64, 255, 255, 255);
emu->create_font(&font, _T("Mincho"), 8, 16, false, false);
emu->create_pen(&pen, 3, 255, 0, 0);

emu->draw_line_to_bitmap(&bitmap, &pen, 63, 0, 0, 63);
emu->draw_text_to_bitmap(&bitmap, &font, 0, 0, _T("MZ太郎"), 6, 0, 0, 0);

emu->write_bitmap_to_file(&bitmap, _T("misoko.png"));

emu->release_pen(&pen);
emu->release_font(&font);
emu->release_bitmap(&bitmap);

378 :ナイコンさん:2015/12/23(水) 15:33:59.31 .net
>377
昔のプリンターのような画像を出力しようと思ったら、小さい黒丸か塗りつぶした正方形のような描画が必要だと
思うのですが、それはpenとlineでやっちゃえ、ということでしょうか。
小さいfontで●や■を書くのは何か間違ってますよね。

379 :Artane. ◆1o3c8RYIzjU0 :2015/12/23(水) 15:35:31.41 .net
>>377
お疲れ様です。
プリンターですが、中間の文字エンコーディングはどうしますか?
JISにするかシフトJISにするかUTF-8にするかで色々実装に足す物が出てきますので…

380 :ナイコンさん:2015/12/27(日) 01:55:17.53 .net
同じコモンソースだし
BM L3のほうを参考にしてみたら?

381 :ナイコンさん:2015/12/29(火) 02:28:05.06 .net
昔 ア スキーでPC-8001シミュレーター出してたな。
¥16,8000と高額だが、PC-8001 周辺機器にも完全対応の優れものだった。

382 :ナイコンさん:2015/12/29(火) 16:44:54.92 .net
>>381
カンマの付け方がおかしい
やり直し

383 :ナイコンさん:2015/12/29(火) 17:09:57.06 .net
PC,8001

384 :ナイコンさん:2015/12/29(火) 17:12:09.12 .net
「カンマは3桁で区切るもの」
と教えられてきてないから仕方がない

385 :ナイコンさん:2015/12/29(火) 19:53:48.66 .net
ワロタ

386 :Artane. ◆1o3c8RYIzjU0 :2015/12/29(火) 20:02:53.23 .net
明日で移植作業始めて一周年ですね。
ありがとうございますm(_ _)m>皆様
ちょっと考えてる事がありますが、明日は1日用事なので、忘れていなければその後。

387 :武田 ◆bnZpPXJze51u :2015/12/30(水) 15:06:44.96 .net
今日のリリースで、漢字プリンタ MZ-1P17をサポートしました。
EMU/OSDのプリンタ周りの実装もこれで一段落になる筈です。
MZ-1P17のMZ/X1シリーズへの横展界が完了したら、PC-PR201についても
同様に作業したいと思います。

年内の大きな作業はこれで終わりの予定です。
(横展界くらいはやるかもしれませんが)
それではよいお年を。

388 :ナイコンさん:2015/12/31(木) 17:17:17.66 .net
any2d88みたいにプリンタ部分だけを独立した実行ファイルにできるかな、と思ったら
フォントROMの扱いが本体機種別になっているんですな
例えばyaMSX1にMZ-1P17エミュレーションを内蔵したようなバイナリを作るとしたら
どうするべきなんだろうか
わざわざ他機種向けのプリンタを接続してプリンタフォントのGRAPH文字を印字するような需要は
ほぼ無いだろうけど

389 :武田 ◆.bfc.PoUs4fG :2015/12/31(木) 21:38:33.03 .net
どの機種でもなければ、MZ1P17.ROMを読み込む、とかでしょうか。

390 :388:2016/01/01(金) 00:57:26.50 .net
・MZ1P17.ROMが存在すれば、それを使う
・MZ1P17.ROMが存在しなければ
 ・(MZ2500等の場合)本体のROMを使う
 ・(それ以外の場合)フォントROM無し
でも良さそうな気がしてきました。
けど、それより先に「他機種向けのプリンタを接続してプリンタフォント依存のデータを印字するケースが
あんまり無いんだったらどうでもいいんじゃね?」ですかね。

391 :ナイコンさん:2016/01/01(金) 10:07:30.10 .net
別アプリに成りそうだけどPDF化とか。
用紙サイズとプリンタフォントを選び画像展開にすればコンビニ出力でもかなり使えるかも。
画面系のフォントフェチはよくいるが実印刷にもいるかな?

392 :Artane. ◆1o3c8RYIzjU0 :2016/01/01(金) 15:26:36.77 .net
武田さん、お疲れ様です。
昨年中は皆様ありがとうございました、今年もよろしくお願いします m(.. )m

# 年末は予想以上にバタバタしててレスできませんでした…(^_^;

さて、こんな物をお年玉で書きました。
http://github.com/Artanejp/common_source_project-fm7/blob/master/ABOUT_eFM7_1.txt
http://pastebin.com/r3UMmdkn

爆弾文書かも知れないですが、各位の承諾取ってないですし(-_-;
取れるとも思ってない中身ですので(-_-;

393 :ナイコンさん:2016/01/01(金) 18:05:33.90 .net
読んだ。
XM7本家絡みについてはソース引用している箇所が具体的に明記してあれば、「表沙汰は」問題ないんじゃないかなー。

気になったのはRyu.Takegami氏の件についてはすごく言葉遣いまで注意して無難に済むような単語を選んで記載してるが…
本家本元であるPI.氏に対する礼儀が見当たらない点はどうなんだ?と思った。

394 :Artane. ◆1o3c8RYIzjU0 :2016/01/01(金) 18:32:53.69 .net
>>393
お読みいただきありがとうございます。
PI.さんとは一度メール交わしたかどうかという程度のお付き合いしかないので、ご指摘頂くまで気づきませんでした。
たけがみさんのソフトになってる。という意識が強かったので…はてさて文章かえるにしてもどうしたものか。

395 :ナイコンさん:2016/01/04(月) 13:36:16.42 .net
エミュレータ作者って、みんなどこかおかしいよね

396 :ナイコンさん:2016/01/04(月) 15:49:25.60 .net
とか言い出すお前の方がおかしいと思うが

397 :ナイコンさん:2016/01/04(月) 17:35:52.38 .net
人の事をおかしい呼ばわりするなら
コテつけて書き込んでみろ

398 :ナイコンさん:2016/01/04(月) 18:24:18.27 .net
図星突かれて養護沸きすぎだろw

399 :ナイコンさん:2016/01/04(月) 18:42:18.03 .net
むしろアンチはオマエだけでは?

400 :Artane. ◆1o3c8RYIzjU0 :2016/01/05(火) 10:43:56.56 .net
ここはひどいインターネッツですね。
とりあえず、ご指摘の関係多少見直しました。後、おまけ分も。
http://pastebin.com/ekKc2hH4

401 :ナイコンさん:2016/01/05(火) 13:41:44.22 .net
>>395
おかしいとは思わないけど、cppなのに中身cで書いてあったり、
いまどきc++98やc++03だったり、オブジェクト指向が理解できてないソース見ると、
「なんだかなー」って思う。
規格の話になると「対応してない環境もある」とか言い出す奴
居るけど、「c++11すら対応してない環境に移植する可能性あるのか?
今後必要が出たら、そのときにその部分だけ書き換えろよ」って思う。

402 :393:2016/01/05(火) 13:41:49.39 .net
>>400
「時分秒フォーマット」じゃなくて「時分秒プロテクト」じゃ?

まぁ、ここ数年、2chでFM-7系エミュレータの話題が挙がると
妙におかしいコメントが出没するので、あまりここで指摘したくはないな。

403 :Artane. ◆1o3c8RYIzjU0 :2016/01/05(火) 13:55:40.61 .net
>>402
どもですー。
githubのissuesに投稿して頂ければ、善処(必ず変更するかどうかは不明)します( ・∀・)ノシ

私の周囲のプロテクト潰し界隈の人達は、「時分秒フォーマット」と言ってました(記憶のみ)。

確かにザベ辺りでは「時分秒プロテクト」と言っていた気がするからそちらが正しいのかも(自信をなくした)

404 :ナイコンさん:2016/01/05(火) 13:56:02.22 .net
>>401
おかしいのは395なので、まじめに回答する必要無いと思うが。

強いていえば、フリー版Borland C++ Compiler 5.5.1のリリースが2000年だから、
C++14どころかC++03やC++11にすら対応出来てないソースがあるのは
やむを得ないこともあるんじゃないか?

もちろんビルド環境がBCC5.5.1ならばの話だが。
%未だにBCC5.5.1なんか使ってんじゃねーよ、って言われたらどうしようもないがw

405 :393:2016/01/05(火) 14:15:36.08 .net
>>403
MB8877のフォーマットに言及した文章なのか、
フォーマットを利用したプロテクト技術に言及した文章なのかで
書き方が変わるんじゃないかと思う。

[16]の元文は時分秒フォーマットでも悪くはないが、解説部があの書き方なら
「この手のプロテクトは「時分秒プロテクト」と呼ばれていました」
が正解だと思う。
そうなると[16]の元文も時分秒プロテクトと記載すべきでは?と思う。

2chがイヤなんじゃなくて匿名でコメントするのがイヤなだけ。
しかしここで正体明かしてコメントするといろいろ面倒くさいので、やむなく匿名にしてる。

406 :ナイコンさん:2016/01/05(火) 15:11:42.48 .net
F5F6F7フォーマットっていえよ、もう

407 :ナイコンさん:2016/01/05(火) 16:18:42.10 .net
もう一生半角の時分秒なんて見ることないだろな


"時分秒フォーマット"約 138 件
"時分秒プロテクト"約 103 件
わりとどうでもいいなw

408 :ナイコンさん:2016/01/05(火) 17:00:39.79 .net
他に参加できないけど言葉の違いなら俺でも参加できる
何もできない一番うざいバカによくある勘違いでした

409 :ナイコンさん:2016/01/05(火) 19:20:24.66 .net
>>404
>やむを得ないこともあるんじゃないか?

古いソースを引き継いでる場合もあるだろうから、やむを得ない点もあるけど、
結局はソースメンテしてないって事でしょ。「動いてるから良いじゃん」みたいな。

>%未だにBCC5.5.1なんか使ってんじゃねーよ、って言われたらどうしようもないがw

まさしく、未だにBCC5.5.1なんか使ってんじゃねーよw
そんなやつはLSI C-86 試食版とかも使ってそう。

実際のところ、Visual Studioとかgccとかが最も多いだろうし、
それらの環境では使える(当然バージョンによるが)。

あ、実際のところVisual Studioは2015でもC++11に完全対応はしてないんだけど。

410 :Artane. ◆1o3c8RYIzjU0 :2016/01/05(火) 20:40:58.43 .net
>>405
ちょっと文章を練り直しますが、所謂「時分秒フォーマット」(プロテクトではない)を、昔のvm/disk.cpp,vm/mb8877.cppだと比較的楽に書けてしまうという問題が確かあったんですよ。
で、そこら辺の言及のついでに30年位先の人たちに「時分秒フォーマットをプロテクトに使ってたんですよ」と、30年先の人がΩヾ(´ェ`*)ヘェヘェヘェとなって欲しかった仕掛け程度のつもりなんですけどね(^_^;

この件が問題?になったんで薀蓄少し書いておくと、所謂不安定プロテクトとか呼ばれるものが出てくる前は、時分秒フォーマットをチェックするものが多くて、これは不安定フォーマット全盛になっても続いたのですが、
これ自体はまごうことなき「時分秒プロテクト」だったんですよね。
単純に物理的なID番号に細工しただけなら「フォーマット」ですが、それが意図通りに入ってるかどうかチェックし始めたら「プロテクト」ですので。

セクタ番号に「時分秒」が入ってるとかなると、リードセクタするだけでコピーできない(はずの)フォーマットをしてるかどうかチェックできた(これが初期)。
更に、幾つか見たのではギャップにある時分秒をチェックするものがありました。要は、コピーツールの幾つかは時分秒セクタを作る機能を持ったので…という話。只、これはディスクドライブによっては読むことが出来ないという問題を抱えてました。
これも破られた頃に不安定ビットずれと組み合わされて、「時分秒」IDのセクタのデータ部分が(規則的に)不安定だというのが出てきた訳です。これが、8ビット時代のプロテクトとしては完成形と言ってよかった。

# などと意味不明なことを繰り返しており…

411 :武田 ◆bnZpPXJze51u :2016/01/05(火) 21:48:48.74 .net
前にも書きましたが、体系的なC/C++の教育を受けていない人なので、
コードが色々ちぐはぐなのはごめんなさいです。
というか、活動内容からして、開発者があからさまにN88-BASIC世代の
プログラマなのだ!というやつです(苦笑)

私なりに、きれいな設計、きれいなコードになるよう努めています。
ただ、「きれい」の基準が、簡潔で見通しが良く、正規化されていて、
生産性が高いということだという点はご了解ください。

C++の最新規格を追いかけようとか、C++の機能をフルに使おうとか、
そういう方向は興味ないです。(言語マニアじゃないですし)

#職業プログラマのくせに不勉強な奴だと思われるかもしれませんが、
#業界的に、最先端のプログラミング技術は余り要求されてなくて、
#業務知識とか制御とか数学とか、そっちの方が要求されるんですよ。

#今日が仕事始めでしたが、今日のお仕事はK&Rの古式ゆかしい
#Cのソースの調査でした(苦笑)

412 :武田 ◆bnZpPXJze51u :2016/01/05(火) 21:54:11.24 .net
>そんなやつはLSI C-86 試食版とかも使ってそう。

使ってますが何か?(を
MS-DOS Playerは正にそのために開発したブツですし。

私のエミュレータの原型はnester由来なので、
ある意味では2000年からソースを引っ張ってきてますね。
当時の開発環境はVC++6でした。

413 :ナイコンさん:2016/01/05(火) 23:01:57.98 .net
人様のコードにケチをつけるお方のコードとやらを参考までに見てみたいですわ

414 :ナイコンさん:2016/01/05(火) 23:13:24.60 .net
言い訳が多いな

415 :ナイコンさん:2016/01/05(火) 23:28:25.79 .net
エミュはアンチというか粘着してくるやついるから
まあ気にせず頑張ってください

416 :ナイコンさん:2016/01/06(水) 19:04:31.92 .net
エミュはかなり上位な技術力とハードに対する理解を求められるから
嫉妬の対象になりやすいんだよね

417 :ナイコンさん:2016/01/06(水) 19:10:50.97 .net
Cもまともに書けない技術力(笑)

418 :ナイコンさん:2016/01/06(水) 21:11:55.99 .net
たぶん、日本語よりCの方が打ち込んでるな…

419 :ナイコンさん:2016/01/06(水) 21:47:44.17 .net
まあ!エッチね

420 :ナイコンさん:2016/01/06(水) 22:08:39.72 .net
>>417
それは技術とは全く別の話なんじゃね?

421 :ナイコンさん:2016/01/06(水) 22:12:02.63 .net
>>411
>ただ、「きれい」の基準が、簡潔で見通しが良く、正規化されていて、
>生産性が高いということだという点はご了解ください。

「私なりに」って付いてるって事は、あなたが「きれい」と思っている
ソースってことですよね?

簡潔・正規化・生産性すべて、新しい規格への対応やオブジェクト指向
導入したほうが実現できますよ。

>#業界的に、最先端のプログラミング技術は余り要求されてなくて

「あなたの周りでは」でしょ?
私のかかわってるプロジェクトは、日本・中国・アメリカ・ドイツ・
フランス・フィンランドのメンバーで構成されてますが、ドイツ・フランス・
フィンランドのヨーロッパメンバーはC++11やboostバリバリです。
ただプロジェクトとしてC++11必須なわけでもなく、そういう意味では
「要求されてない」んですけど、全社的にC++11導入という流れになってきてます。
ちなみに、C++11は最先端じゃないですよ。最先端はC++17じゃないですかね。

>#業務知識とか制御とか数学とか、そっちの方が要求されるんですよ。

ちなみに、私は船舶関係なので数学知識もガンガン出てきます。

422 :ナイコンさん:2016/01/06(水) 22:13:05.98 .net
ならおまえがやれよ
また口先だけか

423 :武田 ◆bnZpPXJze51u :2016/01/06(水) 23:41:53.77 .net
えーと、適当なところでフォークして、試しに1機種くらい、
「あなたなり」の「きれい」なコードに修正して頂けるなら大歓迎です。

それを見て、他のソースに横展界する手間をかけるだけの価値があると
「私なり」に感じれば、是非取り込ませて頂きたいと思います。
(生産性が倍位になりそうだ、とか)

まああれだ、バズワードじゃなくてコードで語ろうぜ、ということで。

#(少なくともホームローン返すまでは)転職する予定はないので、
#「私の周り」で要求されている勉強を優先したいと思います。
#FAの組み込み界隈で、C++11とかBoostとか言われても、ねえ(苦笑)

424 :ナイコンさん:2016/01/06(水) 23:48:28.26 .net
おまえレッドラムだろ

425 :ナイコンさん:2016/01/07(木) 00:21:22.51 .net
口だけカスは相手にするな
長文書いて悦に浸ることしか出来ない無能など

426 :Artane. ◆1o3c8RYIzjU0 :2016/01/07(木) 00:36:09.77 .net
>>武田さん
こういう煽りの人は相手にしないほうがいいですよ(´・ω・`)


>>417
Boostは個人的には使ってみてもいいのかも知れませんが、リソース喰いそうのが今二つなので(-_-;
と言うか、そこら辺にオフロードするシチュエーションがいまいちわからないのですが、エミュレータで。
# 仮にARM系のスマホやタブレットをホストにした時に使うなら、いっそOpenCLなどのHSA技術に転んだほうがいい気がしなくもないですし。

流石に、00年代以降のゲームマシン(PS2/3/4とかXBOX系とか)ならば使わないとダメな局面もあるでしょうけど、そこまでの能力がないマシンをエミュレーションするのにBoostは却って使えないですね。
C++11も、使えりゃ確かに使い勝手いいのですが、別に無いからと言ってそんなに不便とも思わない。と言うのが、書いてみて思うことですね。

個人的に着目した技術は惜しみなく投入していきますが、それが見いだせないのも事実。

427 :ナイコンさん:2016/01/07(木) 23:16:42.89 .net
>えーと、適当なところでフォークして、試しに1機種くらい、
>「あなたなり」の「きれい」なコードに修正して頂けるなら大歓迎です。

クラス設計からやり直すことになるんで、丸ごと新規作成になります。
で、ただでさえ少ない自分が自由になる時間をエミュレータ製作につぎ込みたくないです。
それほどの情熱はもてないですし。

>#FAの組み込み界隈で、C++11とかBoostとか言われても、ねえ(苦笑)

>>411の「業界的に」は「あなたのいる業界的に」って事か。紛らわしい。
IT業界全般のことかと思ったわ。

428 :とあるエミュ開発者:2016/01/07(木) 23:52:36.87 .net
やる気もないなら口出す必要無いな。
何しにここに来ているんだか。

…こういう奴の次のセリフは「アドバイスしに来ているんだ」とか言いそうだわw
実績示せない輩ははい退場!

429 :ナイコンさん:2016/01/08(金) 00:08:26.03 .net
開発者各位 スルー耐性つけようず

430 :ナイコンさん:2016/01/08(金) 00:39:34.05 .net
つけようず のところからもうスルーできないんだけど、狙ってのことか!

431 :武田 ◆bnZpPXJze51u :2016/01/08(金) 02:14:42.40 .net
>>427
そうですか、残念です。ご縁がなかったということで。
アドバイスありがとうございました。

432 :武田 ◆bnZpPXJze51u :2016/01/08(金) 02:21:00.23 .net
MZ-1P17のMZ-2/3モードの実装に時間が掛かってしまいましたが、
MZ各機種への横展開が一段落したところでリリースします。
X1シリーズはその後にでも。

それが終わったら、ゲーム機関係で、ジョイスティックを
キーボードに割り当てているのをOSDに持って行って汎用化するのと、
サウンドボリュームの調整のインタフェースを整備するのと、
それくらいでEMU/OSDクラスの一連の整備が一応完了でしょうか。

#キーバッファなどのポインタをconstにしようか思案中。
#VM内でバッファを弄ってる機種があるのが気持ち悪いもので。

433 :ナイコンさん:2016/01/08(金) 09:52:44.82 .net
武田さん、わざと煽ってるだろw

434 :Artane. ◆1o3c8RYIzjU0 :2016/01/08(金) 12:42:21.60 .net
とりあえず、バイナリリリース掛けました。
https://github.com/Artanejp/common_source_project-fm7/releases/tag/SNAPSHOT_20160107_3a
武田さんの12/31版をベースにしています。
Credit関係の日付がちょっとおかしいかも知れないけどゆるして(´・ω・`)

>>432
私の方でキーバッファとかいじってましたっけヽ(д`ヽ)オロオロ。。(ノ´д)ノおろ

435 :ナイコンさん:2016/01/08(金) 14:55:14.57 .net
>クラス設計からやり直すことになるんで、丸ごと新規作成になります。

生産性実現できてねえwwwwww

436 :ナイコンさん:2016/01/08(金) 19:23:57.05 .net
なんか幻滅した

437 :ナイコンさん:2016/01/08(金) 21:20:09.87 .net
>>435
え?

438 :Artane. ◆1o3c8RYIzjU0 :2016/01/09(土) 00:41:32.69 .net
>>437
車輪の再生産って奴ですな。
今ある物を細かく変えるのではなく、みだりに一から作り直すのはFOSS界隈ではそう呼ばれとります。
構造が詰んでるとかパフォーマンスが出ないから作り直すのは別ね。

439 :ナイコンさん:2016/01/09(土) 21:37:24.70 .net
>>434に入ってるWindows用バイナリなんですが、
HELP→Aboutなどで子ウィンドウを表示させて右上の[×]クリックで閉じる。を何度か繰り返す。
エミュレータのメインウィンドウを右上の[×]クリックで閉じる。
の順に操作すると、Win7ではほぼ毎回「○○は動作を停止しました」になりそうな感じです。ほとんどの機種で。BIOSファイルは無しでも確認可能。
と思いきや、他の環境では出なかったりするので私の環境がおかしいだけかもしれません。

あと、Ubuntu14.04LTSだとQtが古いせいなのか、ビルド済みのバイナリもソースからのmakeも駄目でした。
ttp://packages.ubuntu.com/trusty/libqt5opengl5-dev 5.2.1。Ubuntu15.10ではもっと新しい。
ttp://doc.qt.io/qt-5/qopenglfunctions.html source/src/qt/common/qt_gldraw.cpp ではglDisableなど、

440 :439の続き:2016/01/09(土) 21:40:43.15 .net
"This function was introduced in Qt 5.3"の機能が使われているようです。
なので、Qt5というだけではなく、小数点以下も書いていただければ、と。

441 :Artane. ◆1o3c8RYIzjU0 :2016/01/09(土) 23:26:32.53 .net
>>440
レポートありがとうございます。
Windowsの方は再現するかどうか後で試しますね。
GL周りに関しては、なるべくQt5.0以降で動くように変えて見ます。

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

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