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/

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以降で動くように変えて見ます。

442 :武田 ◆bnZpPXJze51u :2016/01/10(日) 17:00:50.73 .net
MZ-1P17のMZ/X1各機種への横展界が完了しました。
結局X1シリーズもまとめてやることに(苦笑)

>Artane.さん
キーバッファをconstに、の件は、私の実装した機種です。
例えば「SHIFT+右」で「左」になるような機種で、
「左」が押されていたら、「SHIFT」「右」をオンにするような処理で、
手抜きしてキーバッファの方を弄ってたりします。

自動入力とかDirectInput対応とかSHIFT+10キーとか、
OSD側でキーバッファを操作する処理が増えてきていますので、
そちらに変な悪影響がいかないように保証したい、ということで。

443 :武田 ◆bnZpPXJze51u :2016/01/10(日) 17:01:44.69 .net
>武田さん、わざと煽ってるだろw

えーそんなー(棒

444 :Artane. ◆1o3c8RYIzjU0 :2016/01/10(日) 22:25:03.59 .net
>>440
ちょっと調べてみたのですが、FedoraとUbuntuでみる限り、今も入手できて一定のサポートもされてるディストリでは、Ubuntu 14.04 LTSのQtが一番マイナーヴァージョンが小さい感じですね。
で、考えたのですが、Qt5.1以降ならば動く。と言う方向にして行こうと思います。
glXgetProcAddress()などでGL関数を引っ張ってくることも考えたのですが、それだといろいろ厄介なので。
# GLES固定だとWindowsがどうなるか(VirtualBox上のWindowsだとAngleが動かない可能性が…)。

>>442
了解ですー。

445 :ナイコンさん:2016/01/12(火) 20:42:40.57 .net
サポートが長いといえばCentOS。
でも、Qt5やSDL2は標準のパッケージとして用意されてないんですかね。Qt4やSDL1はあるみたいですが。
ttp://mirror.centos.org/centos/7/os/x86_64/Packages/
そもそも、CentOSで8bitマシンをエミュレーションしたい人がいるかどうか……?

446 :ナイコンさん:2016/01/12(火) 23:10:18.13 .net
ないな。

447 :Artane. ◆1o3c8RYIzjU0 :2016/01/15(金) 03:36:27.71 .net
FM-8を(仮)実装してみました。
githubの commit ac474b9e0fc2c5a2ad1e490cb3f329df71928cb1 .
バブルカセットとか8インチディスク関連とかは未実装。
おまけ機能で、FD0Fの読書きで自動的にバンク切り替えする機能(昔雑誌に出た改造)と、FM-7互換のPSG(これも拡張ボードが出てた)を選択出来るようにしました。

>>434 でバグレポートのありました、Qt5 < 5.3 だとコンパイルできない問題も、一応解決しました。
# OpenGL ESだとコンパイルができなくなる副作用が。

Qt5 >= 5.1でコンパイル可能なはずです。
もうひとつのWindowsでクラッシュ云々はまだ未検証…

後、業務連絡ですが、src/vm/{foo}/{foo}.h のマシン記述に、 USE_CRT_MONITOR_4_3 と言うフラグを追加してみました。
これは、4:3のディスプレイをOSD以下の画面表示側でシミュレートするためのフラグです。
WindowsでOpenGLを使わないなら、多分DirectXのBitBlt関数でのハードウェアスケーリングで何とかやってくれるはずです。やってくれないかも知れない。

# やはり、4:3画面がないと気分の悪い物がありまして…申しわけない。
# …スケーリング方法はqt/common/qt_gl*.cpp・特にresizeGL()とFM-7を見ていただきたいのですが、
# 「ドット比1:1」「ドットの横が整数倍」「ドットの縦が整数倍」と言う3つを用意して見ました。

448 :Artane. ◆1o3c8RYIzjU0 :2016/01/20(水) 03:03:03.84 .net
久々にリリース掛けました
https://github.com/Artanejp/common_source_project-fm7/releases/tag/SNAPSHOT_20160119

色々弄っていて、FM-7の漢字ロム無しでの起動を可能にしたとか(単純にリセットすると落ちますが…)、OpenGL描画で予想される消費電力を大きく減らしてみた(はず)とか…
後、ひょっとしたら不正確かも知れないけどFM-8を実装してみました。
色々問題含みな気もしますが、とりあえず…

449 :ナイコンさん:2016/01/20(水) 21:32:30.62 .net
>>447-448
縦横比の調整をオフオン切り替えできるのは良いことだと思いますが、「4:3への補正」と決めうちするのではなく、
WINDOW_HEIGHT_ASPECTとかSCREEN_WIDTH_ASPECTとか、そんな感じの値を元に補正したほうが良いと思います。

例えばTMS9918Aクラスでは256x192か、その縦横2倍ずつで画面を作っているので元から4:3です。
しかし、MSX1の実機を当時の家庭用テレビに繋いだ場合、
横は256ドットのうち、端の数ドットずつが表示されない。
縦は192ドット全て表示されるのに加えて、上下に周辺色が表示される。
というのがありふれた日常だったと思います。
ttp://blogs.yahoo.co.jp/naonori_msx/32401975.html
ttp://hp.vector.co.jp/authors/VA030421/msx302.htm
ttp://www.kagami.org/diary/2006-01-01-1.html
正確な数値はわかりませんが、MSXの場合は横方向に1.1〜1.2倍拡大するぐらいが妥当でしょうか。

450 :ナイコンさん:2016/01/20(水) 21:34:41.52 .net
また、VMware上のUbuntu14.04LTS(64bit)ゲストではSegmentation fault (core dumped)でした。
OpenGLが3.0未満だからダメなのね、と思って新しいカーネルを入れてみたり ttp://www.mesa3d.org/vmware-guest.html に従ってみたりするとSegmentation faultは出なくなりましたが、画面は真っ黒のままです。
VMware上のUbuntu15.10(32bit)ゲストでは、自前でビルドすれば表示にも問題ないみたいです。

451 :Artane. ◆1o3c8RYIzjU0 :2016/01/20(水) 22:27:56.95 .net
ありがとうございます。 >>449 については後で検討します。
>>450
バイナリの問題なのかビルドすればうまく行くのか切り分ける必要がありそうですね。
色々試して少しやり方を考えてみます(ひょっとしたら、事実上gcc5系の新しいABIでビルドするしか無いというDebian/sidの状態に依存してる問題かもしれないので…)
後、ビルド時のGLのバイナリの問題もあるかも知れないですしね。

452 :武田 ◆bnZpPXJze51u :2016/01/20(水) 22:51:30.56 .net
画面のアスペクト比周りの件は、ちょっと私の方で預からせてください。

#本業が忙しすぎて、いつ対応できるか不透明なのですが(苦笑)
#今日一つのヤマを越えたので、なるたけ近いうちにでも。

453 :ナイコンさん:2016/01/20(水) 23:58:02.78 .net
VMware上のUbuntu14.04LTS(64bit)ゲストでは、リリースされたバイナリでも自前ビルドでも同じ現象です。
画面は真っ黒ですが、音を鳴らすことは可能です。
念のため、あらかじめ export QT_OPENGL=software を実行してみても変化なしのようです。

まあ、Ubuntu14.04LTSで動かさなきゃいけない理由もないんですけどね。
# 気が向いたら、14.04LTS(32bit)や15.10(64bit)もVMwareで試してみるかのぉ

454 :Artane. ◆1o3c8RYIzjU0 :2016/01/21(木) 04:44:42.52 .net
OpenGLとUbuntu14.04LTSの件ですが、これ、OpenGLが標準だと2.1までしか実装されてないのが問題の根本っぽいですね。
多分かなり汚いコードになりますが、対策出来なくはないので暫しお待ちを。
とは言え、音声関連の問題(MinGWだとプチプチ切れる)の対策を先にやりたいのでちょっとお時間かかります。

>>452
了解です。お預けします。

455 :Artane. ◆1o3c8RYIzjU0 :2016/01/21(木) 04:54:20.51 .net
>>454
追伸。
件の二つの事については多分他の似たもの書く人の参考になりそうなので、備忘録を書いておきます、すいませんm(_ _)m

描画問題は基本的に、
・GL3.0以上なら消費電力節約
・それが無理なら消費電力喰うのを我慢してもらう
の二択にします(^_^;) 

後、音声ですが、SDLの内部挙動の差異の問題っぽいです。
・Linuxだと設定したバッファサイズの1/偶数なサイズで、音声出力関数を一回コールバックするので、1/2サイズでバッファを切り替えても音が切れない
・Windowsだと1/奇数なサイズでコールバックする?ので、時折音が切れる臭い 

これがわかった時は、爆笑しましたが、何とか実装換えていきますね。

456 :ナイコンさん:2016/01/23(土) 10:54:40.69 .net
根拠の全く無い1/2サイズで決め打ちってぶっちゃけバグだよね。

SDLってわりと有名なライブラリだと思ってたけど、
結構適当な実装してるんだなぁ。

457 :ナイコンさん:2016/01/23(土) 14:04:39.73 .net
デバイスドライバの挙動に左右されたりする可能性もあるのよね

458 :Artane. ◆1o3c8RYIzjU0 :2016/01/23(土) 16:52:37.60 .net
音声の方は直し入れました。バッファサイズとチャンクサイズの設定を最大公約数にしてみました。

GLの方は、GL3以上が使えるか使えないかで色々切り替えるようにしました。
が、問題の(?)Ubuntu 14.04LTSでは用意されてるOpenGLのソフトウェアレンダラが腐ってるのと、それと同時にVirtualBoxやVMWareのドライバとの相性問題があって画面が真っ黒になりますね(;´Д`)
ソフトウェアレンダラについては、DebianのStable(8.0以降)だと問題はないです(が、VM側ドライバとの相性が…)
# 後、Ubuntuだとappmenu-qt5がバグってて、インスコされたままだとメニューが出てこないという問題も。

非Windowsでメニューが出ないで吹っ飛ぶ場合は、環境変数にLIBGL_ALWAYS_SOFTWAREを適当な値で設定してみてください。
# ソフトウェアレンダラをやめるには、この環境変数をunsetする。

githubのcommit 51df420284c56c1fed6ec43372859226427e7fad です。

459 :ナイコンさん:2016/01/24(日) 01:32:01.79 .net
Ubuntu14.04LTS(32bit)だと>>450みたいなことをしなくても最初からOpenGL3.0に対応している、とglxinfoで自称してるけど
VMwareでもVirtualBoxでも画面は真っ黒のようですな。
VMware ToolsやGuest Additionsを入れた状態でどうなるかは試してないけど。

460 :Artane. ◆1o3c8RYIzjU0 :2016/01/24(日) 19:43:40.99 .net
と言う事で、Qt版のバイナリリリース掛けました。
https://github.com/Artanejp/common_source_project-fm7/releases/tag/SNAPSHOT_20160124
から。FAQに追加した方がいい項目があったらレスお願いしますm(_ _)m

461 :ナイコンさん:2016/01/25(月) 00:45:20.56 .net
VMware上のUbuntu15.10(64bit)は表示に問題なしですね。
Fedora23(32bit)にVMware Toolsを入れると、「3Dグラフィックスのアクセラレーション」オフではOpenGL2.0、オンではOpenGL3.0を使って特に問題なく表示されるようです。

FAQに書くことじゃないけど、MinGWを使ったビルド方法がアホでもわかるように書かれてたら嬉しいかもしれない

462 :PI. ◆5XUo.OyiQc :2016/01/27(水) 21:47:16.25 .net
SDLはオーディオドライバ(WindowsならDirectSound or Wave, LinuxならOSSとかPulseAudioとか)
によって挙動がかなり変わってくるようですね。XM8ではコールバックされたときのバッファの
空き具合を見て、かなり空いているようであれば多めにサンプルをつくる、少ししか空いていない
ようであれば少なめにサンプルをつくる、といった工夫を入れています。

上記の工夫+デフォルトのバッファを大きめに取ることで、レイテンシを犠牲にしながらも
音が切れにくくなっています。

463 :ナイコンさん:2016/01/27(水) 22:26:45.33 .net
PI氏から見て、武田のコードはどうなの?

464 :ナイコンさん:2016/01/28(木) 09:14:57.00 .net
一方は敬称有り一方は敬称無し
あからさまw

465 :PI. ◆5XUo.OyiQc :2016/01/28(木) 21:29:56.04 .net
失礼ながら思ったことを正直に書いてしまうと、「どちらかといえば読みにくい、良くないコード」という評価になります。

分かりやすい理由としては設計・実装に不均質な部分が多々見られること、実ソースに対してコメントがあまりにも少なすぎること、長いswitch〜case散見されることあたりです。
最後に関して言うと、たとえばWndProcでは実際にやることを直接書かない(case WM_XXX:だけ書いて、実体は極力サブ関数に逃がす)方が見通しがよくなるはずなのですが。

ただし12年もの長きにわたりモチベーションを維持しつつ、多数の機種を共通ソースで実現されてきたことは敬意を表します。これだけの期間モチベーションを維持し続けることは並大抵ではありません。

最後に、>>421氏のような「言語マニア」は私もOut of 眼中です。メモリ・CPUパワーに余裕のあるシステムがターゲットなら、C++に拘る理由が乏しい(なぜ、いとも簡単にバグを生み出せる言語であるC/C++にこだわるの?Java/C#に行けば?)だし、
メモリに余裕のないシステムがターゲット(私も仕事ではそうです)なら、templateは絶対禁止(=Boostは関係なし)だからです。

466 :ナイコンさん:2016/01/28(木) 23:27:32.16 .net
涙拭けよ

467 :ナイコンさん:2016/01/29(金) 00:02:23.66 .net
なんで、そんなうんこソースコードをわざわざ使ったの

468 :ナイコンさん:2016/01/29(金) 00:27:49.69 .net
M88の方が良かったよな

469 :Artane. ◆1o3c8RYIzjU0 :2016/01/29(金) 01:26:55.58 .net
>>467
想像ですが、GPLだからじゃないですかね(;´Д`)

470 :ナイコンさん:2016/01/29(金) 09:07:06.03 .net
XPERIAで88、98ゲームやりたいんだけどどうやるの?
ググってもやり方分からん

471 :ナイコンさん:2016/01/29(金) 09:26:10.00 .net
ググってもわからないようなら、あんたにゃ無理ってことだよ

472 :PI. ◆5XUo.OyiQc :2016/01/29(金) 21:43:27.01 .net
M88のソースも、それなりに研究していますよ。採用しなかった理由としてはWin32(MFCじゃないですよ、今風にいえばPlatform SDK)とVC++に依存しすぎていて
XM8の最終ターゲットとして想定していたAndroidプラットフォームへの移植が却って困難と考えたたためです。

ライセンス云々は、ほぼ関係ないです。私はciscさんと机を並べて共に仕事をしていた時期もありますから、承諾を得るのはまあ簡単だろうと勝手に思っています。

武田さんのCommon Source Code Projectは性質上デバイス別にきっちり分かれていることや、pc8801.cppやpc88.cppの構造が比較的シンプルで手を入れやすいことから採用しました。

ただ実際に動かしてみて、当初の予想以上の「重さ」に驚きました。まあ44100Hzで仮想マシンを切って、その度ごとにfmgenで1サンプル作っているなら、そうなりますよね。
私がXM7を最初に作っていた頃は(M88も同じころ)K6-IIIやCeleron300A@450の時代でしたから、リアルタイム性を確保するためにそれなりに気を遣ったものです。(遠い目)

473 :ナイコンさん:2016/01/29(金) 21:53:20.45 .net
PIさんはもうXM6の開発はしないんですか?

474 :ナイコンさん:2016/01/30(土) 13:16:17.52 .net
竹田の話はもうやめて差し上げろ

475 :ナイコンさん:2016/01/30(土) 17:34:06.54 .net
つまり、いいとこなしってことだな

476 :ナイコンさん:2016/01/30(土) 18:37:08.87 .net
ここもワッチョイ必要だな

477 :ナイコンさん:2016/01/31(日) 18:08:28.56 .net
コードの書き方はうんこだけど、構造はそれなりなのかな?

478 :ナイコンさん:2016/01/31(日) 21:04:09.36 .net
XM8は糞SDLじゃなければ良いのになぁ

479 :武田 ◆bnZpPXJze51u :2016/02/07(日) 16:35:43.45 .net
>Artane.さん
サウンドの左右のバランスを調整する機能を実装してみました。
次は画面のアスペクトの調整ですね。

>PI.さん
おおう、ご無沙汰です。
コードについては今後も精進します。

480 :ナイコンさん:2016/02/07(日) 22:53:21.37 .net
>>479
fmgenを使用している音源では、2つあるコントロールのうち1つは動かないダミーで、左右同じ音量になっているのでしょうか。外見の印象と内部動作との違いが気になります。
MSXでBeepの音量を一番右端にすると、キークリック音が変になります。同時にPSGを鳴らすと、よりわかりやすいです。オーバーフロー?(音量を大きくしなければ済む話ですが。)
東芝のMSXの一部機種ではステレオとモノラルの切り替えスイッチが存在しており、ステレオの場合はPSGのチャンネルBは右だけ、Cは左だけから出力になるわけですが、そんな切り替えスイッチに対応する予定は無し、でしょうか。

481 :武田 ◆bnZpPXJze51u :2016/02/09(火) 00:10:29.00 .net
>Artane.さん
すみません、サウンドの件の取り込みはちょっとお待ちください。
もうちょっと弄ろうかと思います。

>>480
すみません、回答はまた後日。

482 :Artane. ◆1o3c8RYIzjU0 :2016/02/09(火) 09:30:27.01 .net
>>481
はーい、わかりました。
多分、早くて今週一杯はロクに動けないと思いますので…(^_^;)

483 :ナイコンさん:2016/02/09(火) 19:51:52.68 .net
X68Kエミュのくだらない質問はどこですればいいんですか?

484 :武田 ◆bnZpPXJze51u :2016/02/10(水) 00:52:33.19 .net
ボリューム周りのコードを整理しました。
ついでにジョイスティックの設定をサポートしました。

#リソースファイルを直書きするのってどうなんだろう(苦笑)

485 :武田 ◆bnZpPXJze51u :2016/02/11(木) 01:37:37.44 .net
>Artane.さん
今晩のリリースで、MB8877のタイミングを再々修正しました。

FM7関係の、特定ソフト向けの例外処理のうち、外せるものも
あるかもしれません。
お時間のあるときにでも、ご確認いただければと。

486 :Artane. ◆1o3c8RYIzjU0 :2016/02/16(火) 02:51:18.50 .net
とりあえず、2/13版までマージしました。
が、ジョイスティック関係のOSD/GUI側での実装がまだです。
キーボード→ジョイスティックの変換も怪しい。

YM2203の音量関連のwrite_signal()は、*一時的に*残してあります。
特にWHGやTHGを活用してるソフトウェアでは複数のスピーカを置いた形にして、ステレオ音声を実装しておきので…音量を左右で個別に設定できればこんなんやらずに済むのですが、その為にはなんかの細工が必要になる。
githubか↓の commit 2fc3688fce9d88e48aebd26b694fd2bb143a2574 .

後、セカンダリのGITリポジトリを作っておきました。
https://pikacode.com/Artanejp/common_source_project-fm7/

>>485
お疲れ様です。
MB8877の例外処理の件は、後で見てみます、力尽きました…_| ̄|●

487 :武田 ◆bnZpPXJze51u :2016/02/17(水) 01:53:05.77 .net
YM2151,YM2203の左右のボリュームを独立して調整できるようにしました。
fmgenをもりっと書き換えてます。
mamefm.dllを使っている場合は、左のボリュームが左右両方に反映されます。

画面のアスペクト比を4:3に変更できるようにしました。
画面の縦を伸ばすか横を伸ばすかの選択は保留とさせてください。

取り敢えず、宿題になっていた案件はこれで全部だったでしょうか。

488 :武田 ◆bnZpPXJze51u :2016/02/19(金) 03:00:42.81 .net
>Artane.さん
もりっとソースを整理しました。
マージ大変かもしれません、ごめんなさいです。

Publicなメソッド名を、一定の命名規則に沿うように変更したり、
自動キー入力やジョイスティック周りの、環境非依存部分を
EMUクラスに移動したり、といった辺りが中心です。

今回から、ビルド環境をVC++2013にしてみました。
IncludeやLibのディレクトリを、プロジェクト毎に指定する
必要があるなど、どうも勝手が違って面倒ですね。

489 :ナイコンさん:2016/02/19(金) 22:14:24.76 .net
ついにWindows2000で動かなくなってしまいましたな
2000対応が欲しけりゃで自分でVC++2008でビルドすればいいだろうけど

490 :ナイコンさん:2016/02/23(火) 18:51:40.15 .net
Win2000マシンには重すぎだろ

491 :ナイコンさん:2016/02/23(火) 21:09:41.30 .net
W2Kだとマルチコアは動きが怪しいからもう使ってる人いないだろう。

492 :ナイコンさん:2016/02/24(水) 05:31:05.95 .net
EmuZ2500
レイドックを修正したとあるけど
レイドック起動後(とりあえずSTAGE1開始時)、IPLリセットするとディスクが全く読めなくなりますよ

493 :ナイコンさん:2016/02/24(水) 09:39:44.74 .net
うちは2000現役だなぁ
Xp以降は無駄なエフェクト多いし裏で余計なサービス動いてて重すぎ

494 :ナイコンさん:2016/02/24(水) 13:00:19.48 .net
無駄なエフェクトを禁止して不要なサービスは手動で停止すればよい

495 :ナイコンさん:2016/02/24(水) 15:26:44.27 .net
XPが余計なサービスで遅いと言うほど速さが気になるのに
XPマシンより遙かに古く遅いPCでの2000は気にならないんだな

496 :ナイコンさん:2016/02/24(水) 18:01:01.08 .net
古いPC+W2K と 最新PC+W10 じゃ体感速度変わらないと思うよ。ネットで動画とか3Dゲームしない限り。

497 :Artane. ◆1o3c8RYIzjU0 :2016/02/24(水) 18:40:12.02 .net
エラくややこしい仕事だった(;´Д`)
やっと、こちらの方の作業が出来ます(^_^;

と言う事で、やっとキーコードとジョイスティックのアサインダイアログを作りました。
まだ不十分ですが…
GITのcommit a65f269dc2cbab8f73cebfec42ecdd5cd5dd109b 以降です。
# まだ、YM2203のステレオ化とデバッガがおかしくなってる問題が積み残しです…

>>武田さん
お疲れ様です。
今のところ2/13分まで取り込んでありますが、これからコードを見ていきます。

場合によっては、こちら担当分のコードをざっくりいじります。

498 :武田 ◆bnZpPXJze51u :2016/02/25(木) 02:45:39.26 .net
>>492
次のリリースで修正します。

>>Artane,さん
よろしくお願いいたします。
こっちもFM8の取り込みしないとなあ。

499 :ナイコンさん:2016/02/25(木) 13:41:54.09 .net
Xpとか使ってると200の時にはなかった遅延とか気になるんだよねぇ
気にならない人はいいのかもしれんけど

500 :ナイコンさん:2016/02/25(木) 15:24:08.20 .net
コア間の同期まわりはXPのほうが最適化されて速いけど。HTとかオンにしちゃうと2kは2CPUと解釈して動きがギクシャクするよ。
その遅延の理由はちゃんと調べたの?フォントのアンチエイリアスとかファイアウォールとかXPはいろいろやってるから。

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

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