MMC5, at last
One of the main limitations of NES emulation in MESS has always been the lack of MMC-5 support. It was not the only problem (many games suffer of 1-line glitches, a few games are broken, and Skulls & Crossbones IRQ handling does not like at all out PPU code), but still MMC-5 was probably the most annoying one, because Castlevania III is one of the favorite games of a lot of people (including myself) and it was a pain to admit that we were not able to support it properly in MESS.
I have written many times in the past that the culprit was our emulation of the NES video chip, too limited to handle all MMC-5 features, and that a full PPU rewrite was needed in order to properly fix CV3 and the various Koei games which run on this boards. And I have promised to many friends that eventually I would have been able to tackle the challenge of such a rewrite.
Unfortunately, a long series of real life events is keeping me 95% busy with non-emulation stuff, so that the actual rewrite I’ve been working on since last June is still faaaaar from completion. In conclusion, proper MMC-5 support in MESS seemed doomed…
…if it wasn’t for the fact that I was terribly nauseated by repeating over and over that MESS was very cool (thanks to the MAME debugger, to the number of supported pirate mappers, to the support for Game Genie, Famicom BASIC and Nantettatte Baseball subcarts), but not good enough to support MMC-5, despite MMC-5 was one of the most famous official Nintendo mappers and it was already supported by most other emus…
Thus, I’ve decided to hack around a little bit the PPU limitations and to cheat about the way real MMC-5 hardware monitors PPU reads (to figure out in real time whether sprite or background is being drawn, which kind of sprite it is drawing and which tiles is being fetched). As a result, I was able to fix a few mistakes in previous emulation, to add Extended Attribute Mode (Ex1), to add the separate CHR registers for 8×16 sprites, to improve PRG-RAM usage and now most games work! Hacks will be removed, of course, once the PPU rewrite is complete, but in the meanwhile the games can be tested (and hopefully, non-PPU problems identified and solved! 🙂 )
Here some pics NEVER seen before in MESS!
Castlevania III by Konami
Just Breed by Enix
Gemfire by Koei
and its Japanese original Royal Blood
Uncharted Waters by Koei
and its Japanese original Daikoukai Jidai
Romance of the Three Kingdoms II by Koei
and its Japanese original Sangokushi II
Nobunaga’s Ambition II by Koei
and its Japanese original Nobunaga no Yabou – Sengoku Gunyuuden
L’Empereur by Koei (both in US and Jpn flavors)
Nobunaga no Yabou – Bushou Fuuunroku by Koei
Ishin no Arashi by Koei
There are still some gfx glitches with some games, both among the above
(left: 1-frame glitch after the 2nd boss in CV3; right: wrong palette during L’Empereur fight)
and among the remaining ones like
Laser Invasion / Gunsight by Konami
Metal Slader Glory by HAL Kenkyuujo (which flickers a lot, even if it’s hard to capture it with the snap)
Uchuu Keibitai SDF by HAL Kenkyuujo (whose intro relies on the not-yet-implemented MMC-5 “split screen” feature)
Plus a few games don’t work yet
Shin 4-nin Uchi Mahjong – Yakuman Tengoku by Nintendo
or freezes/crashes the emulated game (most certainly due to some PRG-RAM issue, but I haven’t found the precise culprit yet)
Aoki Ookami to Shiroki Mejika – Genchou Hishi by Koei
Bandit Kings of Ancient China by Koei
and its Jpn counterpart Suikoden – Tenmei no Chikai
I hope to fix some of the remaining bugs soon, and to have time during spring for completing the PPU rewrite, but at least MESS is not anymore the only full-featured emu which doesn’t emulate any of these games 🙂
p.s. in other news, I have also added support in MESS for three new homebrew PCBs which got built in the past couple of years
- NROM-368, which is an extension to base NROM pcbs, capable to support up to 46Kb of PRG without any bankswitch logic (exploiting the CPU area in the 0x4800-0x7fff range, which is often used for WRAM). To my knowledge there is not much software for this, only Shiru’s conversion of a ZX Spectrum game by Denis Grachev (Alter Ego, included in the test archive you can find here)
- PRG-ONLY by nocash, which is a 1-chip-only pcb (+CIC if necessary) replacing VROM/VRAM with a smart usage of the NT-RAM 1K. This was a design discussed for quite some time on NESDev boards, but nocash was the first one to actually build it! Even in this case, I am only aware of a single game to test our implementation, that is Magic Floor by nocash (available, in several flavours, here), and it seems to work well in MESS
- ACTION-53 (aka Multi-discrete mapper designed by Tepples), a PCB designed for the production of the minicompo multicart Action 53 Function 16 Volume ONE “Streemerz Bundle” (from here), containing a lot of nice games
Maybe you won’t find these as exciting as the MMC-5 progress, but I definitely love that people keep creating new carts for NES 🙂
Leave a Reply
You must be logged in to post a comment.