問題タブ [gameboy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
emulation - エミュレーションに関して、ゲームボーイとゲームボーイカラーの違いは何ですか?
ゲームボーイカラーのエミュレーターを書いています(楽しみのために)。元のゲーム ボーイのハードウェア、つまり Imran Nazar のチュートリアル ( http://imrannazar.com/GameBoy-Emulation-in-JavaScript ) と Zak の本 (Z80 命令リファレンス) に関する大量のリソースとリファレンスを見つけました。同様に、空白を埋めるためにいくつかのオープンソースエミュレーターを調べてきました。
私が理解できない、またはリソースを見つけることができないことの1つは、GBCのメモリレイアウトとそのgpuです。GBC はゲーム ボーイの 3 倍のメモリを搭載し、LCD ディスプレイは 2 ビットではなく 15 ビット カラーをサポートします。したがって、説明する必要があることは間違いありません。
どんな助けでも大歓迎です。:)
assembly - LR35902 アセンブリを使用して、独自の非 ASCII チャームマップを 10 進数として使用して、符号なし 16 ビット整数を HL からテキストに変換する
LR35902 (ゲームボーイの Z80 に似た CPU) のルーチンを作成する方法を理解する必要があります。これは HL の内容 (それが指す場所ではなく、格納されている実際の数値) を取得し、それを 1 から 5 に変換します。 (HL は 16 ビットであるため、実際の値は 0 から 65,535 の範囲になります) 10 進法を使用した非 ASCII* 文字。印刷するルーチンがあり、先頭のゼロを切り取る方法を簡単に見つけることができます。
必要なのは、少なくともこの関数の疑似コードと、せいぜい実際のRGBDS LR35902 ASM ルーチンだけです。
*ASCII の代わりに、私は独自の 1 文字あたり 1 バイトのチャームマップを使用します。このマップでは、文字 0 は 16 進バイト $17 で、9 まで増加すると $20 になります。
lua - Lua: Bizhawk エミュレーターで未署名の DWORD が機能しないことを読み取る
コードを実行すると、次の行にエラーが表示されます。
これは、コンソールから表示されるエラー メッセージです。
私はしばらくこれについていくつかのテストと調査を行ってきましたが、この概念が次のような他のいくつかのプロジェクトで使用されているにもかかわらず、機能させることができません: https://projectpokemon.org/forums/showthread.php?16681-Gen -3-Lua スクリプト
その他の情報:
1. BizHawk エミュレーターで lua スクリプトを実行しています。
2. 行を memory.readbyte() に変更すると、別のメッセージが表示され、コンソールが memory.readdwordunsigned() を機能として認識していないと思われます。
3. スクリプトはエミュレータの実行ファイルと同じフォルダにあります。
事前に助けてくれてありがとう
c# - ゲームボーイエミュレーターに NAudio を使用する
GB エミュレーターにオーディオの実装を開始しました。このために、NAudio を使用しています。エミュレーターは出力をバイト配列に計算し、フレームごとにそれを BufferedWaveProvider にロードします。出力には、最初のバイト配列が BufferedWaveProvider にロードされた後に開始する WaveOut を使用します。
かなりうまくいっているようですが、オーディオを扱うのはこれが初めてなので、これが正しいことかどうか知りたいです。
また、四角波の音を良くする方法などをご存知でしたら教えてください。
assembly - 命令の長さ LD A,(C) ゲームボーイ ~Z80 プロセッサ
こんにちは、ゲームボーイ用のエミュレーターを書いています。
私はこのリファレンスを使用します:ゲームボーイCPU(LR35902)命令セット
このドキュメントでは、オペコードについて次のように述べています。
と
長さは 2 です。
Game Boy CPU Manualには、これらの命令がそれぞれ次のように記載されています。
アドレス $FF00 + レジスタ C の値を A に入れます。
と
A をアドレス $FF00 + レジスタ C に入れます。
オペコードは自己完結型であり、別の値を解釈する必要がないため、長さは 1 だと思います。長さが 2 の場合、2 番目のバイトの目的は何ですか?