tepples wrote: ↑Fri Jan 17, 2020 4:07 pm
MMC5 ExGrafix lets you use tiles from an entire 256 KiB block, but it doesn't let you compose glyphs at non-8x8-pixel boundaries. Thus if you want a proportional font with CHR ROM, you have to prerender all your strings when building the ROM.
I actually thought about this problem at some point in my 15+ years of wondering about NESdev. The conclusion is that you don't need to prerender all strings or anything.
You just need to "waste" a 4kb CHR-ROM bank, where each 256 tiles are such that #00 contains a line with the value #00, tile #01 a line with the value #01 and so on and so forth. You can then, on a single nametable line, represent anything. You then use timed code/IRQ to compress the nametable so that 1 tile = 1 line. It's possible to have variable width font and/or kanjis that way.
Since the MMC5 have more nametables than other mappers, and have large CHR-ROM sizes allowed, it's not a problem to use nametable and CHR-ROM space like that.
But that gets to the other bug: if the Y scroll is in that range, and the X scroill is ... some other unknown constraints ..., then it'll double-clock the MMC5's scanline counter, and IRQs will happen up to 8 scanlines higher than you wanted.
Oh that's a shame. It would have really been useful if ExAttributes could be used for a 32x32 nametable instead of 32x30. I still belive it can be done, but only if you don't use the scanline counter IRQ for other uses than reset the scroll to $F0 after line where it's $EF.
kept trying all the possible EX modes on 5104 to work with the Vertical split stuff, but it just never would no matter what I did. So i was like screw it, and just scroll the whole entire screen up normally ...no vertical split stuff.
I see no reason why this wouldn't be possible. As long as you don't use ExGraphics together with split-screen it should work fine.
Even if you use both at the same time the issue is that the data at $5c00-$5fff is used simultaneously for the split screen area (as nametable) and for the normal screen area (as palette/tile number extended attribute). But you shouldn't be prevented to do it, just like you're not prevented to use PPU $23C0-$23FF as nametable and attribute table simulaneously using scroll values $F0-$FF.