見出し画像

スーパーファミコンのEmulatorをC#で造ることはできる😏

SNES Development Manual


SnesDevManualCPU.pdf は、のCPU部分だけを抜き取ってpdfにしていて、
読みにくい点はありますが、w65c816s.pdf のほうが読みやすいです

SNESdev Wiki を閲覧しながらプログラムを作成するしかない……
C#でEmulatorを造れないかと探したときに参考になる

サンプルプログラムをみつけた❗❕❗❕😆


あとはどう造るかですが、まずはページが多い SNES Development Manual を読むより、WDC 65C816 CPU を読んだほうが早いと…

でも作成方法がわからない……🤔
やっと見つけた… サンプル👇

相当遅く FPS: 19 しか出ていない……
サウンドは出ている🔉🔊

どう勉強するかは、まずは

① Memory map 
 Overall(全体)・LoROM・HiROM・ExHiROM

② ROMヘッダー(ROM header)
 ゲームデータにゲームカートリッジに搭載されているハードウェアを
 記述するヘッダーを含めるよう要求しました。
 これはスーパーファミコンのハードウェアには必要ありませんが、
 ゲームソフトウェアはROMデータとしてアクセスできます。

 ヘッダーはCPUアドレス範囲$00FFC0~$00FFDF
 割り込みベクターの直前に配置され、
 オプションで2番目のヘッダーが $00FFB0~$00FFBF に配置されます。
 つまり、実際のROMファイル内のヘッダーの位置は、カートリッジの
 メモリマップモードによって異なります。
 LoROMゲームでは $ 007Fxx
 HiROMゲームでは $00FFxx
 ExHiROMゲームでは $40FFxx に配置されます。

③ CPUベクトル(CPU vectors)
 65C816 native mode vectors(65C816ネイティブモードベクトル)
 6502 emulation mode vectors(6502エミュレーションモードベクトル)
 SNES開発マニュアル
 65C816 - SNESのメインCPU、S-CPUの一部

Registers(レジスター)・PPU・Sound の順の流れになる


一から造るとなると大変だが、ある程度のサンプルがあれば解り易い
ただプログラムをしてゆくなかで、実機並みに動けば万々歳です
C#だけでは限界があるのかもしれないけれど、
遅さでいえば、DirectXWindows のコンポーネント)いずれ使う日が
来るかもです

あとは根気強く勉強しかないですし、バグを取り除くことが重要です
こんな感じにSNESマニュアルとサンプルを見つけたよで😁
では👋



いいなと思ったら応援しよう!

Yoshi ご支援で集めたチップは、「ゲーム雑誌」や「気になるレトロゲーム互換機の購入」にあてて、レビューしてゆく所存でございます。 何卒ご支援のほどお願い申し上げます。