macsbug

NES GAME with M5STACK

leave a comment »

M5STACK で NES GAME を 動かしてみました。        2018.05.07

Mac ( マック) での方法を記載します。
FACES を購入しますと マリオ風のゲームがインストールされています。
ゲームは エミュレーターで動いています。

NES EMULATOR と GAME の ソースは

m5stack/M5Stack-nesemu にあります。

M5Stack-nesemu-master を DL し、

中にある firmware.zip を解凍します。

4つのファイルを転送すると動きます。

1. bootloader.bin

2. partitions.bin

3. nesemu.bin

4. SuperMario4.nes


m5stack/M5Stack-nesemu:(SuperMario4.nes) をインストールする方法。
_ デスクトップに rom フォルダーを作成し bootloader.bin, partitions.bin,
_ nesemu.bin, SuperMario4.nes を入れておきます。
以下の4つを Terminalへ入力します。
1. esptool.py –port /dev/tty.SLAB_USBtoUART write_flash 0x1000 ~/Desktop/rom/bootloader.bin
2. esptool.py –port /dev/tty.SLAB_USBtoUART write_flash 0x8000 ~/Desktop/rom/partitions.bin
3. esptool.py –port /dev/tty.SLAB_USBtoUART write_flash 0x10000 ~/Desktop/rom/nesemu.bin
4. esptool.py –port /dev/tty.SLAB_USBtoUART write_flash 0x100000 ~/Desktop/rom/SuperMario4.nes

M5Stack-nesemu には、Controller、ROM,Copyright について書かれており
通常 FACES GAME Controller で操作できますが 他に NES, Playstation 1, 2
controller の接続方法が書かれています。(CLK=14,DAT=27,ATT=16,CMD=2)


Terminal入力の説明:
esptool.py –port /dev/tty.SLAB_USBtoUART write_flash 0x100000 ~/Desktop/rom/galaxian.nes
1. Python 2.7 又は Python 3.4以上がシステムにインストールされている事。
2. esptool.py:esptool.py がマックにある事が条件です。
_ 無い場合: esptool.py の Read.me に書かれています。
_ Terminal に 「pip install esptool」 を入力しますと動きます。
_ パーミッションエラーの場合は 「sudo pip install esptool 」を入力します。
3. –port /dev/tty.SLAB_USBtoUART:接続したM5STACKの USBの名前です。
_ 異なる USB デバイスの場合は 接続する USBの名前にします。
_ USBの名前の確認は Terminal に ls -l /dev/tty.* を入力しますと
_ usb デバイス名が表示されます。 ( /dev/tty.SLAB_USBtoUART )

crw-rw-rw-  1 root  wheel   19,   8  5  7 05:18 /dev/tty.SLAB_USBtoUART

4. write_flash:M5STACK の FLASH Memory へ書き込みます。
_ memo : 読み込みの場合は read_flash になります。
5. 0x100000:16進の100000番地に書き込みます。
6. ~/Desktop:デスクトップの場所です。他に書類の場所は Document です。
7. /rom:rom というフォルダーを作り nes ROM データーを入れておきます。
8. /galaxian.nes:galaxian の ROM DATA です。

MEMO:データーを読み込む方法:
_ write_flash を read_flash にし 読み込む長さを追加します。
例:esptool.py –port /dev/tty.SLAB_USBtoUART read_flash 0x1000 0x0010 ~/Desktop/data.bin
_ read_flash 開始番地 (0x000000)  長さ(0x0010 : 16byte)


使用方法は M5Stack Community の M5Stack Russia
_ Урок 13. FACES. Запуск игр от Dendy (NES) に記載されています。
_ 内容を お読み下さい。( 参考になる 検索先が書かれています ) 。

データーの構成:以下の4つで構成されています。
_ M5Stack-nesemu-master の中にある firmware.zip を解凍した
_ ものと同じで 0x100000 は ゲームのデーター です。

0x1000   bootloader.bin
0x8000   partitions.bin
0x10000  nesemu.bin
0x100000 Baltron.nes

配置:それぞれの bin は バイナリー表示の番地へ配置されます。
例:0x1000 bootloader.bin:bootloader.bin は 0x1000番地へ配置されます。
注意:書き込み番地を間違えますと 動かなくなるかもしれません。
_  各自の責任で行ってください。


解説は ESP32 DOWNLOAD TOOL を使用し Windows の方法が書かれています。
ここでは Mac ( マック) での方法を解説します。
使用環境は iMac 27 MacOS Sierra を使用。古いOSでは出来ない場合があります。

Mac の Terminal (ターミナル) を使用する方法です。
Terminal は アプリケーション フォルダー /  ユーティリティフォルダーにあります。
ゲームのデーター「galaxian.nes」(購入したデーター等) を用意します。
Desktop に rom フォルダーを作り、この中に「galaxian.nes」を入れます。
FACES (又は M5STACK ) と マックを USB接続します。
Terminal を起動し、以下の様に入力(1行です) しますと
esptool.py –port /dev/tty.SLAB_USBtoUART write_flash 0x100000 ~/Desktop/rom/galaxian.nes

esptool.py v2.2
Connecting........_____....._____.
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 40976 bytes to 10231...
Wrote 40976 bytes (10231 compressed) at 0x00100000 in 0.9 seconds (effective 363.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting...

と表示され「galaxian」が動きます。


Windows の方法:MY氏から方法を教えて頂きました。感謝致します。
_ Windowsの場合は、以下の内容を “flash.cmd” という名前で各FWファイルを
_ 同じ場所に保存し、同じフォルダに “esptool.exe”を置けば、あとは NES
_ ファイルをドラッグ ドロップすると書き込めます。
—–
@echo off
SET COM_PORT=COM3
SET NES_IMAGE=%1
esptool.exe –chip esp32 –port %COM_PORT% –baud 921600 –before default_reset –after hard_reset write_flash -z –flash_mode dio –flash_freq 40m –flash_size detect 0x1000 bootloader.bin 0x10000 nesemu.bin 0x8000 partitions.bin 0x100000 %NES_IMAGE%
—–


自作データー集:
NES ROM は 購入した物や 怪しい所とか 幾つか方法があります。
ゲームを自作したデーターが公開されてます。
1. NES研究室 – 自作ゲーム
_ 「tkrpg100」、「tkshoot100」があります。
2. ど~もeagle0wlです:正規公開されているゲーム専用機のROMイメージ
_ 「2048」、「ブレイドバスター」があります。

3. 野うさぎ亭 – NESプログラミング
_ 「RevolvingGems」があります。


感想:
Terminal 操作:解りにくさや 難さがありますが 今回の方法で 出来ると
_ 便利かと思います。
自作ゲーム: asm で書かれており 開発時の熱意を感じます。
期待する機能:M5Stack-SD-Updater の様に SD に NES-EMU, NES DATA を
_ 入れ M5STACK のメニューリストから LOAD 出来ると便利かと思います。
_ 私の力量では無理ですので どなたか よろしくお願い致します。
掘り出し物:ファミコン時代にゲームを遊び、購入したゲームのROMを
_ 読み出して勉強した人もいるかと思います。M5STACKで再び再現でき
_ 保存したデーターが生き返る事になったかと思います。
_ NES EMULATOR を公開された M5STACK TEAM に感謝致します。


Written by macsbug

5月 7, 2018 @ 12:00 pm

カテゴリー: ESP32, M5STACK

コメントを残す