nesrocks wrote:I have one question, that is how does the MARIA chip work, I mean, what are the practical graphics limitations of the 7800?
Sure, and to be fair I don't think that documentation does a good job describing how Maria actually does her thing.
Much of the available literature describes Maria in terms of "sprites," but her architecture more closely resembles a traditional framebuffer drawing system… just without the framebuffer. You divide the screen into regions which can range from 1 - 16 scanlines in length and each of these regions is assigned a draw list. Each scanline Maria kicks Sally (6502) off the bus, picks up the draw list for the current region, and tries to parse and process as much of it as she can before the scanline ends. If she runs out of time you'll get draw tearing.
The result of this is optimizing for Maria is completely different than the PPU in the NES or VDP in the SMS, everything is about keeping the fillrate up on each scanline. In particular, minimizing the amount of unique draw commands and merging smaller draws into larger ones. So just by having an elaborate background you'll lose a good chunk of your fillrate and available CPU time. But this setup also lends itself well to drawing lots of large moving objects.
For example, Rikki & Vikki are both 32x32x2bpp sprites and are double-layered. So if the two of them are standing next to each other, that's 128 pixels. Not bad for 1984.
Overall I would not describe it as "better" or "worse" than the contemporaries, but rather different.
nesrocks wrote:I ask that because this game seems to utilize the chip to its fullest.
While I sincerely appreciate this, I would not word it so generously. In that, we don't have the equivalent of an MMC5 on the cartridge and there are a few little hardware assists that would nudge Maria further.
There seems to be a good amount of interest in how the game actually works, so I may do a multi-part writeup some time after release.
EDIT : Regarding overdraw, this depends both upon the particular drawing mode and (again) how optimized the draw list is. It takes Maria 3 cycles to fetch one byte of graphic data and she runs at 7.16MHz, so it's quite feasible to fill an entire line even in the high resolution modes. But you'll lose 8 - 10 cycles per draw command parse which can add up quickly.