semiversus / jeg

NES emulator with focus at hardware abstraction, testability and performance
MIT License
9 stars 2 forks source link

Missing support for four screen mirroring #14

Closed GorgonMeducer closed 6 years ago

GorgonMeducer commented 6 years ago

It looks like we don’t support Four-screen mirroring uses an additional 2 KB of RAM in the cartridge itself to allow logical name tables to each map to separate physical name tables. Do we have plan?

semiversus commented 6 years ago

Catridge implementation is quite hacky at the moment - it's somehow filling the gaps but is not really structured. As soon as other mappers than #0 are implemented this will have a rework and this should also add the 2kB for four screen mirroring. Mapper #0 isn't supporting four screen mirroring, is it?

GorgonMeducer commented 6 years ago

So far, from your implementation, I don’t even find a room for the extra 2K RAM. I ask this because next step, I will optimise ppu aggressively (rather than equivilant refactory), this new optimisation requiring buffers for all the physical name tables.

semiversus commented 6 years ago

Should we separate the two ppu implementations? Having two files will be easier as soon as ppu implementation is differing a lot. When compiling in your project you could just choose your ppu implementation.

GorgonMeducer commented 6 years ago

Separate two files will be a good idea. I will find a proper chance to do that. My next pull request is still an equivalent refactory.