Piccolo Game Console
本项目计划设计一款游戏机, 能够运行pico-8卡带, 使用pico的可编程io功能进行视频/音频加速.
标签
raspberyp pi pico
树莓派pico创意活动
james
更新2021-02-10
880

介绍

本项目计划设计一款掌上游戏机, 性能类似梦幻主机pico-8, 使用pico的可编程io功能进行视频/音频加速.

背景

Raspberry Pi Pico(以下简称pico)是一款搭载RP2040芯片的开发板, 个人认为最特别是拥有可编程IO模块(PIO), 初步研究觉得这个类似于CPU微码, 指令非常简单, 但是具备图灵完备性, 拥有一般编程语言的计算能力. 由于PIO可以独立计算, 并拥有较高的数据处理速度, 所以可以辅助单片机进行大量简单重复计算, 分担mcu计算压力, 可以类比PC系统中的显卡/声卡/网卡之类的外设.

除了PIO, pico使用了statelss设计, rp2040芯片没有内置flash, 而是将宝贵的片上空间留给了sram, 拥有264KB的超大ram(期待单位是MB/GB的小伙伴, 考虑价格啊, $4). 大ram是运行解释型语言必不可少的优势.

PIO + 大RAM是我愿意选择pico实现游戏机开发的原因. 我要实现的游戏机是一款能够运行pico-8游戏的游戏机.

pico-8是Lexaloffle Games开发的一款虚拟机+游戏引擎. 虚拟机部分的配置如下:

Display   128x128 16 colours
Cartridge Size   32k
Sound   4 channel chip blerps
Code   Lua
Sprites   256 8x8 sprites
Map   128x32 cels

游戏引擎方面, 基于Lua语言, 配备8位游戏开发常用的API.

比较知名的游戏 蔚蓝(celeste)最早便是在pico-8上开发的, 游戏节奏流畅, 音乐好听, 获得过很多奖项. 下面是通关视频:

https://www.bilibili.com/video/BV1Fp411Z7yf?from=search&seid=1588204756762211513

所以, 8位游戏表现能力还是很强的, 当然前提是你得先是一名牛x的游戏开发者.

内容 硬件开发

pico-8是所谓的梦幻主机, 也就是为8bit游戏开发者屏蔽了硬件细节, 让开发者能够集中精力到游戏创作中. 但是硬件其实是提升游戏体验很重要的一部分, 不考虑硬件也就无法提升硬件相关的游戏体验. 所以我准备开发的游戏机在给游戏开发者一个清晰简单的API的同时, 会持续改进硬件部分体验, 弥补pico-8缺失的一环.

我准备将硬件开发分为5个阶段, 面包板阶段, hack阶段, 原型阶段, 测试改进阶段, 量产阶段.

在面包板阶段, 我会在面包板上对相关功能模块进行开发测试.

在hack阶段, 我会选择一款量产游戏机进行改装, 用pico替换量产游戏机的cpu.

在原型阶段, 我会进行打样, 完成硬件设计的原型

在测试改进阶段, 我会对原型进行测试和改进

在量产阶段, 物料采购, 选择工厂进行生产.

面包板和hack阶段我会同时开始.

这个是我提前买的一个超便宜的量产fc游戏机:

FuDJQB5icfRh5vzp0JeeJIdVM07B

我会对它进行hack, 拆解, 然后将pico塞进去, 由于这个机器很便宜, 所以hack成本比较低.

顺便说明下为什么我选择pico-8作为实现的目标, 而不是nes/fc模拟器的原因:

  1. fc模拟器很多, 克隆的硬件也很多, 几十块就能买到硬件模拟器, 比如上面我准备hack的就是.
  2. 我认为nes上面的游戏不开源, 也很难在上面继续开发游戏, 我是不太愿意去移植一块砖头的. 

硬件开发的时候我会参考硬禾学堂推荐的开源游戏机openhandheld-mx:

https://www.eetree.cn/project/detail/6

里面的简单的电路会进行复用, 节省开发时间.

软件开发

软件开发分为下面几个阶段:

  1. lua移植
  2. 通过pio初步优化视频和音频效率
  3. 开发测试游戏, 比如贪吃蛇
  4. 开发测试用例, 用来测试pico-8 api兼容性
  5. pico-8 api实现, 也就是游戏引擎

其中lua移植由于lua是个小语言, 使用标准c实现, 所以应该不会遇到难题. 利用pio优化可能会花费大量时间, 所以实现初步优化即可. pico-8 api实现可能会花费大量时间, 另外游戏引擎的指令实现可能会遇到问题.

框图

FjkfpbzCPtCfDIIbcMLY0ei1U4O3

计划

  1. 移植Lua脚本引擎到pico
  2. 使用Lua驱动音频speaker
  3. 使用Lua驱动显示SPI显示屏
  4. 在驱动的过程中发现性能可优化点, 尝试使用PIO提升性能.
  5. 挑选并实现典型的pico-8 api
  6. 实现贪吃蛇游戏
  7. 继续实现pico-8 api
  8. 读取pico-8卡带
  9. 运行celeste游戏

进度

pico板子已到货.

 

团队介绍
团队成员
james
for dream
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号