Allocation

Chasersgaming

New member
Just curious,

From what I have found using nesmaker so far is that it ‘allocates’ the graphic banks to particulat things, such as monsters and the likes. Is it possible to allocate your own? Via a knowledge of assembly and custom scripts or is this how it has to work? Like for instance I could have a whole tile set bank un used, but need some space to add more to let’s say an animation character. Would this be possible to do?

Hope I explained that right.:)
 

Mugi

Member
you can reallocate it as you wish. By design the nes has a set of space for sprites, and another set of space for tiles.

in nesmaker, the spritebank is split in half, one side is the static gameobjects, which never reloads in this engine, and the other half is the monsters which you can reload per screen.
in the tile side, there's the bckchr (maintiles), SSbckchr (screentiles) paths, and HUD

in the tile side the paths make it a little tricky because of th eway the engine is coded to treat them in a special way, so to use the space for the path tiles for anything other than the paths, that code handling them has to be first disabled.
aside that, go nuts with it.

something to keep in mind though is that nesmaker's UI is designed to deal with the tiles and sprites in the exact way they are set up, and thats it.
Deviating from this layout means that you will lose any and all ability to use nesmaker for managing your graphics. (im doing this and it's far from fun.)
 

Chasersgaming

New member
Thanks for the response Mugi. Don’t worry, I have no intentions of doing so, I have not a clue about assembly, I was merely curious if it could be done. What’s a ‘special tile’? Can’t find anything on that.:)
 

Kasumi

New member
There are 512 tiles in memory on NES. One can consider them as two separate 256 tile sets. Usually one set is used for sprites, and one set is used for the background. (It's possible to use the first set for both sprites AND the background, and it's possible to use the second set for both sprites AND the background, but this isn't common. Why opt for 256 tiles for EVERYTHING when you can use 256 tiles for sprites, and 256 tiles for the background?) Which set is used for which thing can be set at ANY time.

You CANNOT access the sprite tiles when drawing the background AT ALL. Say the first set is the background set, and the second set is the sprite set. You CAN say, "set two is now the background set" to draw some sprite tiles in the background. But you can only render from the second set while that's true. You can't place say... your main character's head from the sprite set in between other background tiles in the same row. You'd need to duplicate your main character's head in the background set to do that.

Sprites CAN use the background side, but only if the NES is set to use 8x16 sprites. Then, any sprite can be drawn with two background tiles as well. Since an NES character is usually larger than a single sprite, it is possible to have one character use tiles from both the background and the sprite set. It's not even hard to do.

So if you were using only say... 100 background tiles in a level, and wanted to use the rest of the background set to store more sprite animation, you could, if you were using 8x16 sprites.

There are no "sets" the NES cares about beyond what's described above, there are no rules for where things must be beyond what's described above. Games copy (OR map) their graphical data into these sets. Before the data is copied into NES memory, it can be stored in any way, in any order. It can even be randomly generated rather than stored. Anything, truly anything. NES only cares about its 512 tiles in memory. How the tiles get there, or what bank they were in before they got there is not its concern at all.

(Technical caveat! If a game is using CHR ROM, graphical organization is less free. But NES Maker is NOT CHR ROM.)
 

Chasersgaming

New member
Thanks for the responses, but I’m still struggling to get my head around the nesmaker UI I suppose, I know how the NES uses sprites, tilesets and such. I have a 256 bmp for tile sets and for sprites, I haven’t dealt with the sprites yet, I’m still scratching my head over the ‘allocation’. My 256 tile set bmp, has all my tiles and design in a 8x8 meta tile structure. The trouble is with the nesmaker is I cannot use 8x8, I have to use 16x16, so this means I have to redesign the whole tile set to accommodate it. The down side to this is it takes the tileset well over 256 tiles, a lot more than I actually needed. Second to that the space allocated in nesmaker is only 48x128 main tiles, 32 x128 screen tiles and then the path tiles. I dont need path tiles.:) so not only has my tile set got bigger, my user space has gotten smaller!. So thinking il just split the set up and use the other banks, I turns out I can only use 1 main tiles and 1 screen tiles per room. Well, that’s far from ideal. Then there’s the pallets, I have to duplicate a tile because they are different on,y by colours, and make it available as an asset. So I now have to have 2 duplicated tiles that are the same causing more tiles than I need, then just a change of pallete could see to. This I find not only have I had to change my tile sets, To accommodate the ‘defaults’ of nesmaker, but I have had to completely redesign my levels as a result too. I find this baffling, because the nes can do what I intentially started with my original 256 tileset. it seems the nesmaker UI or the tool itself has created another limitation and one that the nes actually doesn’t have. Ideally I think being aloud to build levels in a 8x8 meta tile way(like the special screen) would be ideal, but I think they have hinted that this won’t happpy because of how the design is, which I get, just bit bummed by it, and hope they reconsider.:) so if I can’t have 8x8 tiles, I can at least change the size of the canvas that I can use, so I can fit all the tiles I need for my levels, from what I have read above it can be done, but how? If someone could point me in the right direction of where to look. I appreciate that I may loss space for other things, that’s fine, at least I may find a way to manage my graphics/code etc without nesmaker ‘defaulting’ it all for me. :)

Thanks :)
 

Mugi

Member
the thing with 8x8 tiles against 16x16 tiles is that this way, the attribute tables get MUCH smaller.
it's an engine decision and yes, it limits you to design your tiles as 16x16.
to use 8x8 tiles, first of all, half of the engine would need to be rewritten for that, and secondly, using 8x8's whould leave you only 128 screens to play with, instead of currently available 512 screens. (assuming no compression is used.)
so it's a tradeoff. There is currently also the matter that nesmaker's UI itself is programmed to only be able to display tiles in a 16x16 manner so even if the required assembly code to use 8x8 tiles was there, you would be unable to use nesmaker
to manage your screens anymore. it's simply not designed for that at the moment.

what can i say, welcome to nes development.

TL;DR version:
the limitations imposed on by nesmaker can be broken but that requires some really long sessions with writing assembly, at that point you're essentially doing your own engine instead of using nesmaker.
the 5.0 suggestions thread here on the forum briefly talks about these matters and i suggest you voice your opinion there to ensure that Joe hears it.
 

Chasersgaming

New member
Yeah I see, i get that had to do what they had to do to get this to work as is intended,Il just have to get over myself, nesmaker has done really well so far, shame I cant do the graphics as I wanted to, so Back to the drawing board for me, and il have to brush myself up on some assembly. Like you say, welcome to nes development, il have to compromise.:)
 

Mugi

Member
if it makes you feel any better, i'll just have you know that i designed 3 full tilesets for my project before buying nesmaker, and i had to scrap every single one of them due to the same thing
you ran into. I didnt know nesmaker couldn't handle 8x8 tiles :p
 

Chasersgaming

New member
Oh mate, you know the pain I’m feeling then! Yeah I have a lot of tile sets in 8x8, like you, wished I would of known earlier,never mind, what’s done is done. going forward from now il just have to bare it in mind and work 16 x16. “Nesmaker couldn’t handle 8x8 tiles” , that just sounds bonkers doesn’t it, lol.:) thanks for your responses and help.:)
 

Mugi

Member
yeah it sounds stupid and technically its inaccurate too, but then again, it's really not.
because the way nesmakers UI is programmed currently, it actually cannot handle them, as it's explicitly programmed to operate on a 16x16 grid.

it's one of those things that i hope will eventually be addressed because im sure that sooner or later someone WILL bake an engine capable of using 8x8 tiles (my sound test screen actually uses 8x8 tiles, but that's a whole different story for another day.) and at that point, nesmaker's screenpainter will have to keep up with it, which it currently cant. It's one of those things that limit creativity WITH nesmaker even when you're capable of solving the assembly side.
 

Chasersgaming

New member
How is it the ‘special screens’ manage 8x8 tiles? Or is it ‘start screen’? If you could set the rooms the same as them that would be perfect. All the code base stuff that goes into collision detections and room functions I suppose is the reason they had to change it.
 

Mugi

Member
the special screens do that because they have no attributes associated with them (there's no collision etc.) so they have more space for the nametable itself (the table is 4times larger when you use 8x8 tiles as opposed to 16x16)
 

Kasumi

New member
I made a previous post on this subject somewhere, but so long as your set is also less than 256 16x16 tiles, and so long as you reuse tilesets, the space used up by the set is fairly negligible. (A full 256 16x16 tile set costs five screens of space. But it's not that easy to make a full 256 16x16 tile set with 256 8x8 tiles anyway, so it's likely to be less.)

But as mentioned making the change means NES Maker's UI for whatever you change stops being useful. The Monkey's Paw!
 
Top Bottom