tokumaru wrote:
not only OAM updates like you mentioned, but also NT/AT updates for scrolling and erasing destroyed stuff, pattern updates for character animations, and so on.
After uploading 128 bytes of pattern updates for parallax scrolling, I have room for one more row or column of nametable. But I acknowledge that I don't have room for character animations or replacing no-longer-visible background tiles with tiles for the coming area.
tokumaru wrote:
you can't double buffer the tiles
You can if you bankswitch CHR RAM $0C00-$0FFF, as Gilbert pointed out. But then uploading tiles for newly reached parts of the level becomes more complex because you have to upload them in both banks. And on MIMIC or MMC3 (not MMC5/VRC/FME/whatever), using the 1K banks for your backgrounds means you have to use 2K banks for your sprites, with all its drawbacks. And scrolling would still need to be slow (1 pixel or less per frame on average) so that double buffering can keep up.
Bregalad wrote:
That's where TQROM comes to the rescue...
Advantage: It should be possible to get 64K of CHR ROM and 32K of CHR RAM this way.
Disadvantage: I imagine TQROM is a bit more expensive to replicate than the board used for
The Curse of Possum Hollow, which is a TGROM (MMC3 + CHR RAM) clone with CHR RAM expanded to 32K. Its engine emulates TQROM semantics on top of an oversize-TGROM board because one memory is cheaper than two. Look at other topics where people unironically recommend using otherwise unused CHR RAM as work RAM.
Bregalad wrote:
tepples wrote:
To avoid this, you can either extend blanking or use a 32x16 pixel pattern, possibly using a brick wall tessellation.
So why don't you do it with less tiles?
In some cases, you can indeed get away with eight tiles, as I hinted with "32x16". But that's not big enough for the blue mountain background in
the first level of Sword Master, which appears to be 32x32 and which inspired this whole effort.
Gilbert wrote:
I think if mapper complexity is not the greatest concern, maybe bank switchable CHR-RAM is quite good for parallax effects (among many other things)?
It'd practically need to be a 128K CHR RAM. A 32K CHR RAM has only 32 1K banks, which would require
every 1K bank to contain a frame of the animation. This would severely cut down on the RAM available to other background and sprite elements.
Gilbert wrote:
In this way, you don't need very large ROM for all the bankable patterns, as the tiles can be compressed and loaded before each level (you may even generate the patterns on the fly before each level, if you think the players can wait a little)
And this is an example of such generation. It might not even be a perceptible wait, as the game could generate a couple patterns on a blank screen, start the action, and freeze the camera for a second while generating the rest of the patterns in the background.
Gilbert wrote:
Considering that "large" RAM chips won't be much more expensive nowadays I think the only thing that matters is which mapper supports this (I think there were some discussion here before, like a dinosaur colouring game or something use bank switched CHR-RAM?).
It was
Videomation, by the same developer (FarSight) who later went on to make
Color a Dinosaur and the official, much-improved sequel to
Action 52 for the Mega Drive.
But even though large RAM has become cheaper, it still isn't free. Another constraint we ran into for
Curse was available logic elements in the CPLD we were using to clone the MMC3. To save 7 macrocells, we had to route PA12 directly to CHR A14 the way
mapper 88 routes it CHR A16. This hardcoded the background (PPU $0000-$0FFF) to use banks 0-15 and the sprites (PPU $1000-$1FFF) to use banks 16-31, but it freed up one macrocell from bit 4 of each of six CHR windows and one more from the multiplexed A14 output.