dustpg / BlogFM

Blog for Me
MIT License
155 stars 23 forks source link

Re: 从零开始的红白机模拟 - [18]Mapper 002 #22

Open dustpg opened 6 years ago

dustpg commented 6 years ago

STEP⑨: 实现部分Mapper

这一次继续吧: Mapper02.

Mapper002: UxROM

UxROM这就比较厉害了, 能够用到最高用到4MB的RPG-ROM.

但是没有CHR-ROM, 需要自己写入CHR-RAM.

根据数据库,UxROM(在自己看来)比较有名的游戏, 比如:

Banks

Bank select ($8000-$FFFF)

7  bit  0
---- ----
xxxx pPPP
     ||||
     ++++- Select 16 KB PRG ROM bank for CPU $8000-$BFFF
          (UNROM uses bits 2-0; UOROM uses bits 3-0)

完全可以实现为使用全部的8bit.

要使用全部8bit, 即4MB, 需要 NES 2.0的文件头, 为此自己特地更新了文件头让其支持4MB. 之前有一个搞事的就是用的4MB的Mapper002(自制ROM, 没有物理板子)

有些会有总线冲突, 需要使用副-Mapper来解决, 这里就不讨论了

这个Mapper简单暴力. 避免溢出, 可以膜一下: value % count_prgrom16kb

实现

这次感觉是Mapper上最简单的: STEP9-MAPPER002.c

魂斗罗模拟出现的问题

REF