i read lots of documentation and i read about bank switching... i read any demos in asm.. mys question is: what happen .. because any demos are 16 kb prg (1 bank?) and 8kb chr (1 bank?).... if nes header is 1 16kb prg means 1 bank of 16 kb prg???.. i am confused because demos with 1 16 kb prg have code for nesasm saying: .bank 0 xxx... .bank 1 xxx .bank2 xxxxx.. what happen?? if rom is only 1 bank 16 prg!!!.. what more banks than only 1??
Nesasm is really dumb with banks. One bank number is for the CHR data in a basic 8K CHR 16K PRG code in Nesasm. The other two are actually like this:
Bank 0: $8000-$BFFF
Bank 1: $C000-$FFFF
I believe it is like that. But I don't know exactly, I was having much trouble with that too. I never figured out how to use banks correctly with NESASM...
Banks in NESasm are 8KB each, not 16KB.
This can be a significant annoyance, however, especially when you are working with a mapper which uses 16KB or 32KB banks, since it will generate an error (and refuse to assemble the program) if code/data crosses a bank boundary.