That's possible as well. Layers would already share the same patterns. It's just that sprites got their own pattern memory. The reason for that is to parallelize processing of maps and sprites by giving each their own memory block. The sprite engine can then both read the attribute table and set up the pattern memory address while the map engine does the same. Basically allowing them two to work in parallel. The 'mixer' engine then produces the pixel output.
However, increasing the RAM size exponentially increases cost/resource of the FPGA. 256KB = 2048mbit blockram, that's gonna be a hefty FPGA. I doubt you will need 4096 8x8 patterns (256KB) simulataniously. Nothing stops you from loading a new tileset for the next level into the VDP. Not needed to have so many patterns sitting in VRAM.
As for updating patterns in-game I assume you refer to setting/modifying the nametable. Since the VRAM in my design-to-be is directly mapped into CPU address space, you can move 1.5KB using LDIR etc to update the screen for one layer in one go. 768x2 = 1536 bytes. Nametable updates will be as fast as the Z80 can update it. There will not be any access delay for this VDP.
MagicBox: take a look at V5Z80P project (gfx card) maybe it's a good starting point
...alpha blending... rotatating sprites... rotating layers... at least enough tiles for one screen per layer...
scaling... window masking... various sprite sizes... mirror... priority... scroll list (horizontal and vertical)...
lots of vram... (very fast) transfer commands...
If you go and design a chip then make it count. No hi-res crap, no insane amount of colors, just the things you need too make kick ass action game even on the poor z80 .
Different people different needs... anyway, I think the gfx9000 is fun enough for now.
Though a few additional things would have been nice, like:
- mirror bits in sprites (2 unused bits?)
- mirror bits or pallette select in tiles (I haven't decided yet wich one I prefer more)
- priority in tiles
(8159 tiles seems a bit overkill to me so lets make that 2048 so we can fit the prio and mir bits)
But I guess we are entering an age we design a video chip for a game istead of a game for a video chip.
Alphablending between layers is cool to create glassy effects. Rotating layers, I don't really see a need for that. Perhaps the one game where you see a topview race track for instance. Enough tiles for one screen per layer? Why that.. then go bitmap mode. Window masking I already sort of thought about too. Called a viewport, one for each layer to create split views which ever you prefer, next to each other, above each other etc.
Just think of a game like Ys III, how cool that would look with a smoothscroll, slick thin frame, no more 8 pixels with bound (just a top layer that's all transparant except for the border patterns). Dual background layer, the front map layer, have them scroll at separate speeds, the farthest back the slowest. Full color sprites, 8 frame stage smooth animations, Z-ordering (notice how Adol is coverd by certain tiles as if he walks behind them).
This would be possible to accomplish with the VDP specs I described initially. What more would you want? Just making a game the size of Ys III would be quite a feat in itself..
P.S. what do you mean with priority? I suppose just a different wording for Z-order..
I'm pretty sure that 2048 simultanious patterns (128KB) is way more than sufficient for any game you'd want to create in context to an MSX / Z80 environment. Games like MG2 en SD-S did with merely 256 tiles and just look at what Konami accomplished with that..
Question is.. is the MSX community wanting to embrace an upgraded video system whose halmarks are simple, fast, yet powerful? Assuming it would be available for a < $50 price.
Question is.. is the MSX community wanting to embrace an upgraded video system whose halmarks are simple, fast, yet powerful? Assuming it would be available for a < $50 price.
for sure...but it has to exceed the capabilities of the GFX9000 by FAR ...
what the GFX9000 has going for it(mainly) is it's large memory...fast vram to vram copies...which can be used for tile animation and many many smooth sprite-animations..as I discovered.
for example a smooth scrolling YSIII is perfectly doable on a GFX9000...31 colors for the tilegfx and 4x16 colors palettes for the sprites...
Question is.. is the MSX community wanting to embrace an upgraded video system whose halmarks are simple, fast, yet powerful? Assuming it would be available for a < $50 price.
For me even with features like the V5Z80P project it's a perfect choice, i would add only X-Y sprite flipping
...fast vram to vram copies... You mean 'only' 5kb in pattern mode ... good enough for most things I supose...
Having checked a quick reference of V9990's pattern mode screens, it's safe to say that my proposed specs by far exceed that of V9990, provided I increase the pattern buffer.
Gotta keep in mind though that on V9990 both pattern and sprite patterns are shared. In my design these would be separate memories.
V9990(P1) VDPX Res: 256x212 256x212 Map Patterns: 8160 2048 (8x8) Sprite Patterns: ^shared 256 (16x16) Sprites: 125/16scan 128 Map Layers: 2(ScA/B) 4 (or even 8) Map Size: 64x64 User defined Pattern Colors: 16/32 256 Sprite Colors: 16/48 256 Palette: 4x32K 16.7M
That's as far as pattern mode goes though. VRAM commands and additional modes are to be defined. My first goal would be to implement this screenmode, using a total of 256KB video memory. If we were to double VRAM to 512KB, we'd end up with 4096 256-color patterns and 512 256-color sprites.
No excotic trickery with palette bits in registers to somewhat create more than 16 colors on-screen, but straight forward 256-color patterns/sprites and one master palette.
I think this could have merit
Question is.. is the MSX community wanting to embrace an upgraded video system whose halmarks are simple, fast, yet powerful? Assuming it would be available for a < $50 price.
For me even with features like the V5Z80P project it's a perfect choice, i would add only X-Y sprite flipping
Yeah I checked some videos on that. You proposed scaling as well, I assume you refer to that ball in the Bouncer demo zooming in/out as it bounces. This graphics engine has no hardware scaling though. The guy just defined sprite animation frames for each level of zoom (counted like 4 zoom levels)
Edit: sorry for the spam in this thread though.. I just love this kind of stuff