草庐IT

基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程

一、环境与硬件介绍开发环境:keil5代码风格:寄存器风格,没有采用库函数,底层代码全部寄存器方式编写,运行效率高,注释清楚。MCU型号:STM32F103ZET6开发板:正常的一块STM32开发板,带LCD插槽,带4颗独立按键。游戏模拟器: NES游戏模拟器LCD: ALIENTEK的3.5寸屏幕。(屏幕型号不重要,随便一款都可以的,把屏幕底层驱动代码写好,适配即可)声音输出设备:采用VS1053(SPI接口,操作方便)游戏手柄:支持FC游戏手柄

NES 系统架构

主机NES(FC、红白机、小霸王)的系统架构可用下图表示:系统中最核心的组件是CPU,其它组件都可以算作CPU的外设。CPU的外设包括:PPU(图像处理器)、APU(音频处理器)、WRAM(内存)、IO设备(手柄、键盘等)、CART(卡带)。这些外设分别占据CPU地址空间中的一部分,CPU通过设置CPU地址总线选中相应的外设,然后通过CPU数据总线与外设交换数据。CPU与外设的这种通信方式也叫“内存映射IO”,外设占用的地址空间可以到nesdev上查阅。系统中第二核心的组件是PPU。PPU也有外设,它的外设包括:VRAM(视频内存)和卡带。PPU和它的外设之间也采用“内存映射IO”方式通信,P

NES APU

前言NES(小霸王、FC、红白机)模拟器开发中,各部分其实都不简单。而APU和声音系统的难点在于,我们可能缺乏相关的知识。desdev上虽然有硬件各部分的详细说明,却不成系统,很零散。本文将围绕“声音的产生”、“NESAPU的组成”、“播放APU声音”三个知识点并结合代码的方式介绍如何实现NESAPU,希望对你编写自己的模拟器有帮助。声音的基本知识我们知道声音是由振动产生的。物体的振动会激发波,这种波我们称之为声波。声波通过介质传播到达我们的耳朵,我们就听到了声音。如同一切波,声波同样具有频率、振幅属性,声波的频率、振幅决定了声音的音高(Pitch)和音量(Volume)。频率为261.63H
12