独自規格PCのエミュレータを作っています
独自規格PCのエミュレータを作っています
OSを作ってきてPC/ATのレジスタの少なさにびっくりしたので独自のPC規格(DSC-100)を作り
そのエミュレータを制作しています。
ですが余りにも遅すぎるので誰か速くする方法を教えてください。
ソースは
http://www1.axfc.net/u/3163798
です。
(1)やりたいこと
・一瞬で画面全フィル(16色で)
・Windows並みのOSが作れる実用的な早さ
(2)出来たらしたいこと
・アセンブラの作成
お願いします。
そのエミュレータを制作しています。
ですが余りにも遅すぎるので誰か速くする方法を教えてください。
ソースは
http://www1.axfc.net/u/3163798
です。
(1)やりたいこと
・一瞬で画面全フィル(16色で)
・Windows並みのOSが作れる実用的な早さ
(2)出来たらしたいこと
・アセンブラの作成
お願いします。
Re: 独自規格PCのエミュレータを作っています
col.cppの49行目、DrawPixelが遅いようですね。
描画命令をDrawPixelしか使用しないのでしたら、わざわざDXライブラリを使用せずにWindows APIを用いてプログラムを作成し、
SetDIBits関数またはStretchDIBits関数を利用して描画するのがいいと思います。
(後者なら直接デバイスコンテキストに描画できて簡単)
描画命令をDrawPixelしか使用しないのでしたら、わざわざDXライブラリを使用せずにWindows APIを用いてプログラムを作成し、
SetDIBits関数またはStretchDIBits関数を利用して描画するのがいいと思います。
(後者なら直接デバイスコンテキストに描画できて簡単)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 独自規格PCのエミュレータを作っています
じゃあちょっとWindowsAPIでのプログラムの組み方教えてくれませんか?
メッセージボックスすら出したことないので・・・
メッセージボックスすら出したことないので・・・
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 独自規格PCのエミュレータを作っています
こことかが参考になると思います。
「標準 Windows API」
http://wisdom.sakura.ne.jp/system/winapi/win32/
DIB を使ってピクセル単位で処理しましょう。
「標準 Windows API」
http://wisdom.sakura.ne.jp/system/winapi/win32/
DIB を使ってピクセル単位で処理しましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 独自規格PCのエミュレータを作っています
つい先日、他のトピックに投稿したコードが参考になるのでは?
WindowsAPI GetPixelについて
ベタな配列で持ったピクセル情報をウィンドウに表示するサンプルコードです。
拡縮を行わないならSetDIBitsToDeviceを使ったほうが高速かもしれません。
WindowsAPI GetPixelについて
ベタな配列で持ったピクセル情報をウィンドウに表示するサンプルコードです。
拡縮を行わないならSetDIBitsToDeviceを使ったほうが高速かもしれません。
Re: 独自規格PCのエミュレータを作っています
すみません、どうにもわかりませんでした・・・
SDLの方が簡単ならそちらを使いたいですし、
誰か共同でグラフィック部分を作ってくれる方がいるならその方と協力したいです。
どちらもダメならCPU部分だけ作って終わりにしたいと思います。
SDLの方が簡単ならそちらを使いたいですし、
誰か共同でグラフィック部分を作ってくれる方がいるならその方と協力したいです。
どちらもダメならCPU部分だけ作って終わりにしたいと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 独自規格PCのエミュレータを作っています
そこを作ることを楽しめなかったら、せっかくのPCエミュレータが勿体無いと思いますが。
SDLのピクセル操作はこんなかんじみたいですが、試したことないので遅いか早いかは分かりません。
「SDL」
http://www.me.tokushima-u.ac.jp/~miw/wa ... 6/7/7.html
SDLのピクセル操作はこんなかんじみたいですが、試したことないので遅いか早いかは分かりません。
「SDL」
http://www.me.tokushima-u.ac.jp/~miw/wa ... 6/7/7.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 独自規格PCのエミュレータを作っています
適当に作ってみました。taka さんが書きました:誰か共同でグラフィック部分を作ってくれる方がいるならその方と協力したいです。
まずはこれを使用してCPUの開発を行い、CPUの開発が一段落したらUIの開発を行うのがいいと思います。
- 添付ファイル
-
- DSC-100_ui.zip
- 表示とファイル読み込みの部分を改造したプログラム
- (43.93 KiB) ダウンロード数: 112 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 独自規格PCのエミュレータを作っています
みけCATさんありがとうございます!
SDL版がダメだったのでこのまま使ってもいいですか?(リリース版に)
SDL版がダメだったのでこのまま使ってもいいですか?(リリース版に)
Re: 独自規格PCのエミュレータを作っています
いいですよ。taka さんが書きました:SDL版がダメだったのでこのまま使ってもいいですか?(リリース版に)
改造もご自由に。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 独自規格PCのエミュレータを作っています
みけCATさんありがとうございます!
CPUの開発に行き詰ったらまた質問させていただきます!
今回の質問はこれで解決にさせていただきます!
みけCATさん、softyaさん、ISLeさん、ありがとうございました!
CPUの開発に行き詰ったらまた質問させていただきます!
今回の質問はこれで解決にさせていただきます!
みけCATさん、softyaさん、ISLeさん、ありがとうございました!
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 独自規格PCのエミュレータを作っています
そういえば、どうSDLがダメだったのか教えて下さい。taka さんが書きました:みけCATさんありがとうございます!
CPUの開発に行き詰ったらまた質問させていただきます!
今回の質問はこれで解決にさせていただきます!
みけCATさん、softyaさん、ISLeさん、ありがとうございました!
掲示板的にダメ理由も情報を残したいのです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 独自規格PCのエミュレータを作っています
描画速度がかなり遅かったので、結局みけCATさんのものを採用しました。softya(ソフト屋) さんが書きました: そういえば、どうSDLがダメだったのか教えて下さい。
掲示板的にダメ理由も情報を残したいのです。
ソースファイルも添付しておきます。
SDLは
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\SDL
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\SDL
にある設定なのでそこを変えればビルド可能かと思います。
- 添付ファイル
-
- DSC-100_sdl.zip
- VC10用のプロジェクトです(SDL版)
- (1.53 MiB) ダウンロード数: 123 回
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 独自規格PCのエミュレータを作っています
ご協力う有難うございます。taka さんが書きました:描画速度がかなり遅かったので、結局みけCATさんのものを採用しました。softya(ソフト屋) さんが書きました: そういえば、どうSDLがダメだったのか教えて下さい。
掲示板的にダメ理由も情報を残したいのです。
ソースファイルも添付しておきます。
SDLは
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\SDL
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\SDL
にある設定なのでそこを変えればビルド可能かと思います。
SDLの中で何をしているかは調べていませんが、これ以外の方法じゃないと無理ってことですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 独自規格PCのエミュレータを作っています
1命令実行ごとに画面の更新処理をしているってのも遅い原因の1つです。
みけCATさんのコードでは、タイマーで17ms毎に画面の更新を行うようになっているため、この問題は改善されています。
みけCATさんのコードでは、タイマーで17ms毎に画面の更新を行うようになっているため、この問題は改善されています。
Re: 独自規格PCのエミュレータを作っています
SDLの名誉のために書いておくと、わたしは過去にSDLでアーケードゲーム等のエミュレータもどきを作ったことがあります。
仕事で作ったのを個人的な趣味でLinuxに移植したものですが。
ちゃんと作れば問題ありません。
仕事で作ったのを個人的な趣味でLinuxに移植したものですが。
ちゃんと作れば問題ありません。