stevenshepherd said:
I want to get started on making assets for the gsme that I ultimately want to make. The survival horror demo I've been working on has been useful and through trial and error have learned a bit about efficency. Any best practices for managing graphics banks etc while one is developing a game?
A quick look under the hood demonstrates how they took great care managing where all the data goes and gives a lot of wiggle room and flexibility to making your game with UNROM-512 in mind. Poking around in the ASM and studying where everything goes, it's fairly cleanly laid out with banks usually dedicated entirely to a single purpose.
Each bank is 16k in size but some of it is already used by engine data.
Bank00 - Bank07 is dedicated to the overworld screens, though as of version 3.1.4(Pi) seems to have some extra data at the end of Bank00 I need to investigate the purpose of.
Bank08 - Bank0F are dedicated to the underworld screens.
Bank10 - Bank12 are the Tileset banks for BG tiles, path tiles, and screen tiles.
Bank13 is Monster Bank 1 Graphics.
Bank14 is for the engine data. Mostly Monster AI and Tile Types.
Bank15 is Monster Bank 0 Graphics.
Bank16 contains Palette data, nametable pointers, collision tables, and attributes.
Bank17 is commented as string data but doesn't seem to contain hud information or anything else. Assuming it's where NPC text goes.
Bank18 - Bank19 are blank and don't ever seem to store any data.
Bank1A is blank but I assume this will be the save data bank.
Bank1B is the music and sfx bank, both the sound engine code and audio data for play goes in here.
Ban1C is fairly important and handles object data, solid edge routine, and handling of sprite drawing.
Bank1D also important as it contains the CHR data for the HUD, Start Screen, Player/gameobjects, win screen, and something new to (Pi) version called BoxTiles.
Bank1E is dedicated to the Win and start screen nametables and attributes. I need to play around and find out why these aren't in the normal NT/ATT banks.
Bank1F is the most important bank of all, the last bank containing main game loop, NMI, and Reset code and vectors required for the NES to boot normally.
This should give you a better idea of what you have to work with and the free space allocated to each bank on a blank project. Not sure how helpful it will be in the grand scheme of things but may give an understanding of why the tool does what it does.