There isn't really a hard limit on tile animation. It depends on what you're trying to do, and how much else is going on.
You have 64 kB of VRAM to work with. Tilemaps are 2 kB (32x32) and can be doubled in the X and/or Y direction(s) for up to 8 kB per BG layer. Each tilemap can address up to 1024 tiles arranged linearly in VRAM, with each BG layer having a separate starting address. BG tiles can be either 8x8 or 16x16, selected separately for each layer. Sprite tiles are stored in 8 kB (16x16-tile) OBJ blocks similar to the NES, with two relocatable OBJ blocks in VRAM that can be accessed simultaneously; you can relocate these blocks (not the data, but where the PPU thinks the data is) not only between frames but also between scanlines (based on a simple experiment I did a bit ago).
The 6 kB limit Espozo is talking about is the approximate limit on DMA bandwidth per frame, so it only applies if the data you want to switch to is not already in VRAM. The SNES was designed to eliminate the overscan that wasted VBlank time on the NES, so unless you specifically set it to overscan mode, each frame is 224 scanlines, leaving you 38 blank ones at 165.5 bytes per line. (Mind you, this also generally includes OAM and CGRAM updates, so that's about a kilobyte gone if you need to fully update both.) You can also use force blank to turn the screen off early and/or turn it on late, allowing more time to transfer data. I'm trying to port a vertical shmup to the SNES, and my current design has only 206 active scanlines, leaving me roughly 9 kB of bandwidth per frame (I need it all...).
PAL systems have 312 scanlines per frame and no other relevant differences, so DMA bandwidth is huge; this dovetails nicely with the fact that the demoscene is bigger in Europe...
infidelity wrote:
When writing a tile to the screen, how does the snes differentiate that the tile being drawn is 2bpp, 4bpp, 8bpp?
It has to do with the PPU mode. The SNES has up to 4 separate BG planes, rather than just one as on the NES (and they can be independently scrolled, greatly attenuating a major source of tile animation requirements). Each plane has a separately designated tilemap and tile data range. The bit depth is fixed for a given BG layer in a given mode; for instance, in Mode 1, BG1 and BG2 are 4bpp, BG3 is 2bpp, and BG4 is unavailable.
The odd man out is Mode 7, which doesn't use bitplanes at all and is fixed to starting at $0000 and using the bottom half of VRAM. Each word is interpreted as an 8-bit tilemap entry followed by an 8-bit pixel. The result is a huge 128x128-tile map restricted to 256 tiles with no tile flipping, useful for allowing you to zoom out on a relatively expansive swath of terrain without eating all of VRAM. You can stick other data in the Mode 7 area as long as you can guarantee that the player will never see that part of the tilemap...
Sprites are locked to 4bpp.
Quote:
And is the reasoning behind compresses gfx, due to size issues back in the 90's, cost, etc? Like, can I get away with a romhack, using uncompressed gfx?
Compression was purely to save ROM space. If ROM space isn't an issue (and you don't have an S-DD1 or something like that), compression just wastes CPU time.