So what you mean is its using these tables it takes 4 pattern tiles and arranging them into 16x16 blocks?
say like small mario is 4 tiles and using these tables somehow create a 16x16 block from these 4 tiles?
Yes, but Mario is a sprite so he wouldn't be represented here. This would be more for things like [?] blocks -- things in the background.
Can you explain why there are 16 bytes for each set?
There's not. There are 4 tables, in each table there is 1 byte for each "block" ("block" = 16x16 game-tile).
256 bytes in each table
256 available blocks.
So say a [?] block is block ID 05.
When the game wants to draw a [?] block, it has to draw 4 tiles (because tiles are 8x8). So the game will look at entry 05 in each of those four tables, and use the value to draw the appropriate patterns to the screen.
Ill definitely look up TSA tables, any links?
Nah I don't have any reference links -- but there isn't really much else to it. I mean any doc you find is pretty much just going to say what I said above and maybe give a few more examples.
Screenshot for reference:
EDIT 2 - messed up tile numbers in image originally -- reuploaded with fix.