本帖最后由 猪百岁 于 2021-4-22 19:43 编辑  
NES 游戏模拟器
经典的 FC 红白机 游戏模拟器, 带我们回到小时候吧~~ 
警告,该模块只在标准固件(> 2m)中被编译包含,其他固件不带有,如有需求,请重新编译固件。 
初始化  NES  模拟器 
- 
tc_type: 遥控器类型, 键盘(nes.KEYBOARD)(注意是串口与电脑通信,而不是直接接USB键盘到开发板)或者手柄(nes.JOYSTICK)。 
建议使用PS2手柄,体验会更好, 键盘通过串口工具输入可能不能同时按多个按键,当然也可以通过自己在PC写一个脚本来转发键值就能解决(去这里找找?) 
 
 
- 
cs: 如果使用  SPI  接口的  PS2  手柄, 传入  cs  外设编号(注意不是引脚号,需要先映射引脚) 
 
- 
mosi: 如果使用  SPI  接口的  PS2  手柄, 传入  mosi  外设编号(注意不是引脚号,需要先映射引脚) 
 
- 
miso: 如果使用  SPI  接口的  PS2  手柄, 传入  miso  外设编号(注意不是引脚号,需要先映射引脚) 
 
- 
clk: 如果使用  SPI  接口的  PS2  手柄, 传入  clk  外设编号(注意不是引脚号,需要先映射引脚) 
 
- 
repeat: 这个参数只对使用键盘(/串口)时, 指按键的重复率 
 
- 
vol: 初始化时的音量, 后面可以通过按键调整 
 
 
运行  NES  游戏  ROM 
nes: 游戏  ROM  路径, 比如  /sd/mario.nes 
 
try:
  nes.init(nes.INPUT)
  nes.load("/sd/mario.nes")
  while True:
    nes.loop()
finally:
  nes.free()
 
nes.input  :  (①号机手柄, ②号机手柄, 菜单功能) 
 
移动  :  W A S D 
A  :  J 
B  :  K 
start  :  M  或者  Enter 
option:  N  或者  \ 
退出  :  ESC 
音量 -  :  - 
音量 +  :  = 
运行速度 -  :  R 
运行速度 +  :  F 
 
移动  : 方向键  <-  ^  V  -> 
A  :  □ 
B  :  × 
start  :  START 
select:  SELECT 
退出  : 暂无 
音量 -  :  R2 
音量 +  :  R1 
运行速度 -  :  L1 
运行速度 +  :  L2 
 
"mario.nes" 游戏文件请自行搜索下载 
 
2021年01月28日:现在建议使用 Maix handle (I2C 设备)进行游玩,如下代码注释  nes.input(p1, p2, 0)  表示输入两个手柄的数据。 
 
import nes, lcd
lcd.init(freq=15000000)
try:
  nes.init(nes.INPUT)
  nes.load("mario.nes")
  while True:
    # p1 = i2c.readfrom(66, 1) # handle i2c addr
    # p2 = i2c.readfrom(74, 1) # handle i2c addr
    # nes.input(p1, p2, 0)
    nes.loop()
finally:
  nes.free()
 
import nes, lcd
lcd.init(freq=15000000)
nes.init(nes.KEYBOARD)
nes.load("/sd/mario.nes")
while True:
    nes.loop()
 
import nes, lcd
from fpioa_manager import fm
fm.register(19, fm.fpioa.GPIOHS19)
fm.register(18, fm.fpioa.GPIOHS18)
fm.register(23, fm.fpioa.GPIOHS23)
fm.register(21, fm.fpioa.GPIOHS21)
lcd.init(freq=15000000)
nes.init(nes.JOYSTICK, cs=fm.fpioa.GPIOHS19, clk=fm.fpioa.GPIOHS18, mosi=fm.fpioa.GPIOHS23, miso=fm.fpioa.GPIOHS21)
nes.load("/sd/mario.nes")
while True:
    nes.loop()
  
 |