エミュレータの作り方
■ このスレッドは過去ログ倉庫に格納されています
0001Z80
2005/10/07(金) 03:21:34作りたいのですが、エミュレータはどのようにして作ればよいですか?
0002デフォルトの名無しさん
2005/10/07(金) 03:23:36( ( ( ヽ ヽ ( )
. __ |ノ-、 -\ヽ | ヽ/
. (___)、 | ・|・ |-|__/ /
____ \ \i`- 。− ′ 6) /
/ \ \ ヽ、ヽ ̄ ̄) ノ>/
/ ノ -、 -ヽ ヽ \ ~ ▽▽ヽ /
/ , -|/‘|< |-、 | | ノ
○/ ` - ●-′ | | | 「クソスレ立てちゃ駄目だって
. | | 三 | 三 / )───| いつも言ってるでしょ!!」
| | /⌒\_|/^/ / |
| |━━━(t)━━、 | |
| /__ ヽ |_| i____|
. i l ヽ___/ノ j_) | | | |
ヽ ` ── ′/. | | | |
⊂二⊃⊂二⊃ ⊂二 ) ( 二⊃
完
0003デフォルトの名無しさん
2005/10/07(金) 11:31:15設計して、コードを書く
0004デフォルトの名無しさん
2005/10/07(金) 11:33:27な?馬鹿ども?
00051
2005/10/07(金) 12:21:03何をしたらいいのかさっぱり解らない感じです。
エミュレータ開発のノウハウなどはどこにあるのでしょうか?
0006デフォルトの名無しさん
2005/10/07(金) 12:26:31首括れば万事解決だと思われ
0007デフォルトの名無しさん
2005/10/07(金) 12:31:59禿同
0008デフォルトの名無しさん
2005/10/07(金) 13:11:37禿同
〜Infomation〜
ここは禿同で1000を目指すスレになりました
これ以降のルール遵守をお願い申し上げます
0009デフォルトの名無しさん
2005/10/07(金) 13:14:35.\\ /⌒\
\ ( 冫、)ウンチになぁれ
> ` ⌒ヽ
/ へ \
/ / \\
レ ノ ヽ_つ
/ / ・*.・:
/ /| :。 *.・
( ( 、 ★。:’*
| |、 \ 。・.*・; ・
| / \ ⌒l ;* ・。;*★ 人・
| | ) / ・ ★・ (_ );; * 。・
ノ ) し' ・ * (__) * ・。・
(_/ 。*.;; ・( ・∀・ ) >>8 ★.* ’★
0010デフォルトの名無しさん
2005/10/07(金) 14:01:22Z80エミュレータとは具体的に何をどうするものだ?
0011デフォルトの名無しさん
2005/10/07(金) 14:05:090012デフォルトの名無しさん
2005/10/07(金) 14:10:3901 00 20
11 30 00
CD 01 2F
C9
Z80ならばどういう動きをする?
0013デフォルトの名無しさん
2005/10/07(金) 16:16:36俺様専用単発質問スレ活性化御苦労。だが死ね。
0014デフォルトの名無しさん
2005/10/07(金) 17:05:44役に立たないデジタル土木の兄ちゃんこそ死ねや
0015デフォルトの名無しさん
2005/10/07(金) 17:09:22正直、あんま面白いもんでもない
0016デフォルトの名無しさん
2005/10/07(金) 17:47:09>役に立たないデジタル土木の兄ちゃん
のうたりん?
0017デフォルトの名無しさん
2005/10/07(金) 18:21:20コード表を見ずにディスアセンブル
LD BC,$2000
LD DE,$0030
CALL $2F01
RET
合ってる?
0018デフォルトの名無しさん
2005/10/07(金) 22:08:50合ってる
0019わ゙かもの
2005/10/08(土) 03:40:53それも悲しいな。人間ディスアセンブラ。カワイソス
ところでZ80ってのは16bitでビッグエンディアンなの?おもしろいね。
LDとかBCとかDEとかがさっぱりわからんが。
0020デフォルトの名無しさん
2005/10/08(土) 09:02:40基本的に2進数で書いてxxyyyzzzと書けるので簡単に覚えられる
0021デフォルトの名無しさん
2005/10/08(土) 11:28:550022デフォルトの名無しさん
2005/10/08(土) 18:06:2200231
2005/10/08(土) 18:11:510024デフォルトの名無しさん
2005/10/08(土) 18:24:29ttp://www.vector.co.jp/vpack/filearea/win/util/emulate/
使える資産は利用しよう。
無駄な実装は時間の無駄。
0025デフォルトの名無しさん
2005/10/08(土) 18:29:20Z80コアのソースが手に入るかもね。
0026デフォルトの名無しさん
2005/10/08(土) 22:51:50いまどきZ80のエミュレーターなど作ってどうする?
「Mac上でWinのソフトを動かす」ものとか、そのくらいの志を持った
方が世に必要とされる。これもMSによって実現されているが。
0027デフォルトの名無しさん
2005/10/08(土) 23:02:170028デフォルトの名無しさん
2005/10/09(日) 01:24:23狭い見識で物事を語るなや、ガキ。
0029わ゙かもの
2005/10/09(日) 19:12:56やべwwwバイト順序が逆になるのはリトルエンディアンでした。
>>23
おおお、ソース公開されてるZ80エミュレータありますね。
0030デフォルトの名無しさん
2005/10/10(月) 01:21:09まずは、Z80のアセンブラソースを追ってCPUの動きをトレースしてみろ
CPUの気持ちになるのがエミュレータのはじめだ。
一番の問題はM1ピンの動きだな。
あとインデックスレジスタ拡張命令はDD/FDを取得直後に割り込みを受け付けるぞ。
00311
2005/10/12(水) 19:19:360032デフォルトの名無しさん
2005/10/12(水) 19:35:54無料だが、日本語版を手に入れるいもちょっと外国のサイトに行かねばならん。
大変だとは思うが、これくらは乗り切れよ
2、byte型の配列の書き方を勉強しよう
3、後は配列をメモリに見立てて、アドレスを添字に見立てて、
1バイト読んでは命令コード表を引いて実行してゆく
メソッドポインタか関数ポインタの配列で分岐するといいだろう。
・・・・
これが一番早道だと思うぞ
0033デフォルトの名無しさん
2005/10/12(水) 21:25:000035デフォルトの名無しさん
2005/10/15(土) 20:45:21CPUの挙動を勉強する意味でも、
Delphiは言語仕様としてアセンブラを内蔵してるし、
アセンブラレベルでコードを追いかける事も出来て、
C言語とそう変わらんよ
その上、VB並にGUIが作れるしね
0036デフォルトの名無しさん
2005/10/15(土) 23:29:24基本的なところからいくよ
CPUって言うのは演算装置、つまりは計算機だよね
計算機と言うことは、+−×÷なんかの四則演算なんかを代表として、計算するための命令があるわけですよ
Z80のCPUにはZ80の計算命令が
Widnows(というかx86CPU)にはx86CPUの計算命令があるわけですよ
でも、CPUの命令というのは、種々の都合で、CPUごとに、命令するためのマシン語というのが違うわけです
これをz80CPUの命令からx86CPUの命令に変換するのが、つまりはエミュレーター
ここまでは何となく分かったかな?
003736
2005/10/15(土) 23:29:54http://www.atmarkit.co.jp/fjava/rensai3/javavm01/javavm01_2.html
これは、JavaのバイトコードをCPUごとに変換する基本の考え方なんだけど
JavaVMっていうのは、「JavaVMという仮想の仕様のCPU」を考えた後
JavaVM命令>x86CPU
と変換しているわけ、記事内部のコードではこうなっているね
while (true) {
bytecode = get_next_bytecode ();
switch (bytecode.opcode) {
case xx:
// xxと等価な処理
case yy:
// yyと等価な処理
: :
}
}
003836
2005/10/15(土) 23:40:221.z80のCPUの仕様を調べる
2.x86系CPUの仕様を調べる
3.z80CPUの命令と同じ意味を、x86CPUの命令を組み合わせて再現する
4.上のコードみたいなカンジでswitch分を使って命令を返還するプログラムを組む
という流れになる。
もちろん、その前に
0.アゼンブラの勉強をしてある程度、ニーモニックやマシン語に慣れておく
これが着いてくる。
1から話をするとこう言うことになる。多分分かったと思うし、その程度にかみ砕いたつもり。
一応、CPUに関して基礎的な話をするならこう言うことになる。
俺より前に、ここのスレに書き込んでいる人は、これくらいは当たり前に理解している(少なくともまともな返答をしている人は
正直な話、君のレベルから初めて、完成させようとすると、大概頓挫すると思うけど…。
0039デフォルトの名無しさん
2005/10/16(日) 00:15:02べつにx86のアセンブラは覚えんでもいいだろ
それにx86アセンブラでやるなら命令コードの分岐はテーブル使えば一発じゃん。switchなんぞ書くのあほらしい
0040デフォルトの名無しさん
2005/10/16(日) 00:19:48俺もよくそういうレス貰うから判るんだが、本人全力で書いたのにそんなレスもらって、ヘロヘロだろうよ
0041デフォルトの名無しさん
2005/10/16(日) 00:27:42糞くだらん講釈を披露するスレはここですか?
004236
2005/10/16(日) 02:00:31あはは、お耳が痛い…
書きながら「あー、言われるだろうなぁ…」とは思っていたのですが
正直、1さんの言動を見る限り、どーもこの次元まで議論を落としてからじゃないとダメっぽいなぁと思ったので
マジで議論できる次元の人間ではないので。ここらで退散
0043デフォルトの名無しさん
2005/10/16(日) 02:10:53全力で書くのは良いが俺様最高!の気分で書くから横から突込みが入るんだよ
本質的な所だけを抜き出して書くと突込みは無くなるよ
0044デフォルトの名無しさん
2005/10/16(日) 02:20:14> お耳が痛い…
それどころか、お前の存在自体が痛い
0045デフォルトの名無しさん
2005/10/16(日) 11:16:16+-<>,.
0046デフォルトの名無しさん
2005/10/18(火) 13:40:230047デフォルトの名無しさん
2005/10/18(火) 14:30:390048デフォルトの名無しさん
2005/10/18(火) 16:07:54それはC云々でなくてマシンの速度の話だろ
まあZ80なら2MHzしかでないから今のマシンじゃVBで作っても速度は出ると思うが
0049デフォルトの名無しさん
2005/10/18(火) 16:19:42005049
2005/10/18(火) 16:21:448086で8080エミュレータを作ったときはアセンブラで作ったにも関わらずCP/Mがのんびり動いた。
尤も、OSそのものはCP/M86で振り替えてたから妙に速かったけど。
0051デフォルトの名無しさん
2005/10/18(火) 20:22:208086対8080じゃ5MHz対2MHzだからな8080の1命令を2.5命令で処理できないと遅く感じる
テーブル駆動+レジスタ制御入れると1命令10〜20命令だと思われるので1/4〜1/10位のスピードだったんじゃね?
0052デフォルトの名無しさん
2005/10/18(火) 20:25:210053デフォルトの名無しさん
2005/10/19(水) 04:05:36へえ、ゲームボーイって4.19MHzなのか・・・・まあ電池の事考えるとコレくらいなんだろうな。
005449
2005/10/20(木) 10:35:12体感的にはそこまで遅くなかったと思うが、V30に差し替えていたからかも知らん。
#レジスタは8086のレジスタをそのまま割り当ててたし。
0055デフォルトの名無しさん
2005/10/24(月) 23:51:18使う言語(開発ツール)どれがいい?
やっぱりVisualC++じゃなきゃだめかな。
C++BuilderとDelphi持ってるんだけど(共にPro)
C++Builder製のエミュは結構見かけるけど
Delphi製のエミュってあまり無いような気が・・・
もしできたら公開します。
(多分、無理だと思うけど)
0056デフォルトの名無しさん
2005/10/25(火) 15:50:450057デフォルトの名無しさん
2005/10/25(火) 23:55:06一応、期待してるぞ、X1のファンとして。
ツールはVBみたいな遅いもんでなきゃ
だいたい良いと思うよ(VBだって出来ない事は無いと思うが、
遅すぎるんじゃ?)。
あと、確かにC++Builder製のエミュはあるが
Delphi製はあまり聞かない。
誰か知ってる?
0058デフォルトの名無しさん
2005/10/26(水) 00:34:10コンソールなら幾つかあるんじゃね?
0059デフォルトの名無しさん
2005/10/26(水) 23:44:46速度的な事を考えると
どうしても、アセンブラとかVC++とかが欲しくなる。
ただ、最近はマシンの性能も上がってきてるので
遅い(といわれる)言語でも大丈夫。
作り易さ(生産性)を取るかエミュの実行スピードを取るか。
俺も応援させてもらう。
0060デフォルトの名無しさん
2005/10/27(木) 06:28:04I・Oのエミュレートとかで
Cのソースを使いたくなったら BCC32を使ってobjを作れば、Delphiにリンクする事も出来るしね
0061デフォルトの名無しさん
2005/10/27(木) 23:23:36下手したらパクる奴も現れるだろうし・・・
俺はまだ技術的に浅いからよくソース読めないが。
ところで、このスレってエミュの作者さんとか
読んでいるんかな〜?
0062デフォルトの名無しさん
2005/10/28(金) 02:44:490063デフォルトの名無しさん
2005/10/29(土) 08:15:36だけど、エミュに使われるのってC++Builderの方が多いよね。
やっぱりC使いの方が多いってことかな?
あと、アセンブラのみでできた(フルアセンブラっていうのかな、違ってたらスマン)
エミュレータってどんなのがある?
0064デフォルトの名無しさん
2005/10/29(土) 09:26:360065デフォルトの名無しさん
2005/11/01(火) 07:28:57z80と6502のコアソースも公開してた気がする。
0066デフォルトの名無しさん
2005/11/01(火) 11:29:53それが理由でもう十年以上作ってない。
最後に作ったのがポケステエミュかな。
0067デフォルトの名無しさん
2005/11/01(火) 22:42:28ポケステの発売は1999年ですが、何か。
0068デフォルトの名無しさん
2005/11/02(水) 08:58:22一番、サイズの小さいNESエミュというのが載ってた。
EXEのサイズが6KB位とのこと。
こんなに小さいサイズのエミュってどうやって作るの?
0069デフォルトの名無しさん
2005/11/02(水) 15:32:42いまどきフルアセンブラはねーだろ
CPUコアやGPUコアくらいはアセンブラ使うかもしれんが
入出力やUI周りは別の言語使うだろ
host CPUが遅いGBA用とかはアセンブラ率高いかもよ
あとDOS時代の古いエミュとか
0070デフォルトの名無しさん
2005/11/02(水) 23:30:05いっぱいDLL呼ぶんじゃねの
0071デフォルトの名無しさん
2005/11/03(木) 11:25:57最近はフルアセンブラのエミュはあまり無いね。
昔は、遅いマシンで動かすためにそういうのもそこそこあったけど。
今のマシンは速いから、実行スピードよりも作り易さを重視してるんじゃない?
俺も素人だから詳しくはわからんけど・・・
0072デフォルトの名無しさん
2005/11/03(木) 15:52:36BrSMSとBrMSX。
作者はブラジル人の方らしい。それぞれマスターシステムとMSXのエミュ。
DOS上で動くらしい(多分)。
あとゲームボーイのエミュでNO$GMB。
これはDOSとWinのがあるみたい。
もっとあると思うけどとりあえず。
間違ってたらスマン。
0074デフォルトの名無しさん
2005/11/06(日) 14:38:21CPUのエミュはなんとかなるだろうが、カスタムチップとかのエミュができなくて力尽きてしまうだろうな。
仕様が見れる香具師でもまともに使いこなせないのがカスタムチップだし。
0075デフォルトの名無しさん
2005/11/07(月) 09:13:58動作を推測しつつ作ることもよくある話で。
0076デフォルトの名無しさん
2005/11/07(月) 17:36:370077デフォルトの名無しさん
2005/12/19(月) 12:00:154分割対戦で、自分の画面だけ拡大させるとか出来ないですかね
誰か作ってくれないかな
0078デフォルトの名無しさん
2005/12/19(月) 12:05:23虫眼鏡
0079デフォルトの名無しさん
2005/12/19(月) 20:52:20このCPUではこの命令サポートしてるけどエミュ実行するCPUではサポート無いから
同じ事するにはビット演算でこうやって代用して…とかでしょ?
かなり高度ですね。
ハッカーの楽しみに載ってるような知識マスターしてないといけないんでしょ?
0080デフォルトの名無しさん
2005/12/20(火) 07:44:40一番最初に実装するべきなのはプログラムカウンタ
そうだろ?
0081デフォルトの名無しさん
2005/12/29(木) 00:02:060082デフォルトの名無しさん
2005/12/29(木) 00:36:19命令数が多いから面倒なだけで、適当に書いてもネイティブの一桁下くらいの性能は出る。
GHzクラスのCPUぶん回してMHzクラスのCPUエミュレーションするなら余裕ありまくりだ。
大変なのはハードのエミュレーション。
たとえばスプライトひとつ動かすのに、実機なら数命令だがエミュレータだと数百〜数千命令を要する。
二桁から三桁、下手すると四桁落ちる訳だから、少々苦しい。
これがPSクラスになると、ソフトだけでは追いつかない。
このへんをどうするかでエミュレータの性能は大きく違ってくる。
0083デフォルトの名無しさん
2005/12/29(木) 13:22:060084デフォルトの名無しさん
2005/12/29(木) 13:23:480085デフォルトの名無しさん
2005/12/29(木) 18:22:57言う意味でのハードゲイだと
いっているのだろう。
0086デフォルトの名無しさん
2006/01/28(土) 21:54:55ージ化が完璧にできるものってないですよね?
それぞれ吸出しソフトやエミュレータごとに得意とするするコピープロテ
クトがあって、数種類を使い分けています。
そこで質問なんですが、あらゆるフォーマットやコピープロテクトに対応
し、実機を使っているのと同じ感覚で使えるエミュレータは開発可能なんで
しょうか?可能だとしたら、現在のエミュレータや吸出しソフトはどこに問
題点があるのでしょうか?
0087デフォルトの名無しさん
2006/01/28(土) 22:03:42FS関連スレ
http://pc8.2ch.net/test/read.cgi/os/1137387538/
0088デフォルトの名無しさん
2006/01/28(土) 22:11:59ではそっちで同じ質問を聞いてみます。
0089デフォルトの名無しさん
2006/02/12(日) 15:35:20それともお約束のソースを見ろって話?
やっぱり実機の動作見ながら、同じように動くプログラム組んでAPI呼ばれたら実行するようにこつこつ実装していくぐらい?
0090デフォルトの名無しさん
2006/02/14(火) 17:38:170091get ip > ****
2006/06/08(木) 01:21:550092デフォルトの名無しさん
2006/10/08(日) 17:55:45エミュレータの作り方
■ このスレッドは過去ログ倉庫に格納されています