I-CHR: Turn an image sequence into bankswitched CHR

Well now I feel sheepish. I was up to the wee hours in the morning last night working on my splash screen. Just got it in game, using Shiru's tool and your help. And it's flipping half the size it needs to be. !!!! I made a 128x128, but looks like there's more than enough room to support a 256x256. It's good enough for now, I'll revisit it in the future.

But splash screen is in.

Here it is in it's minuscule glory:

game-3.png (SPACE FOR RENT)

Am I wrong in thinking it can support bigger? The NES Maker logo fills a lot more of the screen in the youtube video than mine does, so I'm thinking so. Ugh, so many wasted tiles... and pixel art is annoying to upscale.


New member
The NES generates a 256x240 picture.
It has room in memory for 256 background tiles.
These tiles are 8x8.
The square root of 256 (the number of background tiles in memory) is 16.
16 times 8 (the width or height of a single tile) is 128.
So if you lay out all the tiles in a square image, you get a 128x128 image.

But the screen itself is still 256x240. It's 32x30 tiles. Any of the 32x30 places you can put a tile can be any of the 256 tiles from the set. Edit: Put another way, the tileset limits how unique your screen/level can be, not how big.

Just be aware that you can only use one four color palette per 2x2 square of tiles rather than per tile.

See nesquickref.gif included with I-CHR, or this post for more detail: https://pixelation.org/index.php?topic=10784.msg115062#msg115062

If there's something not clear, feel free to ask!
Makes perfect sense, just growing pains of never having done it before. I have probably a little more than half of my tile sheet not being used. I'll scale it up to 256x240. Having gone through it once now, it should be a lot easier the second time. Going to work on some level design for now though.

Is using CHR files as backgrounds a common thing for nes games? I see that's what you did for Indivisible (I think?) . Seems like a more reasonable way to get detailed backgrounds while not getting caught up in 16x16 tiles.


New member
Anything the NES graphical hardware displays is always broken down into four color 8x8 CHR tiles, there's not another option. Anything different than that is a creation of the programmer rather than a function of the hardware.

Programmers introduce the concept of 16x16 tiles to their engines because each 16x16 region of the "map" can only be one of the four 4 color palettes anyway. But to the hardware, those are separate concepts. There's not a limit on the unique 16x16 pixel regions that's like the 256 8x8 tiles in memory limit. The entire screen can be unique 16x16s (so long as they are still made of only 256 unique 8x8 tiles altogether) without any tricks or special cartridge hardware.

I don't know if most games do what Indivisible does, but I would assume so. I think the costs of not doing so are greater than the benefits. (Obviously or I'd not have done it! :lol: )

I wrote a 600 word essay in response, and now I'm like, "Is this actually gonna be helpful?" So... let's try shorter. Indivisible stores four bytes for each 16x16 "tile" it has. A byte for the number of the 8x8 tile for each corner. So if it has a solid color 16x16 "tile", it stores one solid color 8x8 tile in the CHR tileset, and then it stores the same byte four times to define the 16x16 "tile". (The byte is whatever the number for the solid color 8x8 tile is.)

There's a way to not store the four bytes, by arranging your tileset in a pattern. This method basically treats its 128x128 pixel tileset as 64 16x16 tiles rather than 256 8x8 tiles. If you want to do that same solid color 16x16 "tile" with this method, you use 3 more tiles in your set than the Indivisible method (you end up storing four identical 8x8 tiles in the CHR sheet), but you save the four bytes. Saving four bytes at the cost of three unique tiles is definitely not a fair trade, I think method 1 wins for free in the solid color tile test.

Now, most tiles won't be solid color. And method 2 wins when the 16x16 tile is fully unique. But, to me, in the cases where method 2 wins, it barely wins. And when method 1 wins, it soundly wins. Method 2 is a commitment to less graphical versatility to save space, but the space saved to me isn't even a lot. Definitely not enough to be worth giving up the versatility. There are other ways to save space that give up less. Just one person's opinion!

Closing note: There aren't really just two methods, you can mix and match the two described here or do whatever since only the 8x8 tiles are a hardware concept. The rest is software.


New member
Thanks! I can't wait to release the more awesome version.

Elena from Third Strike on top of a Kirby background.

I've attached a ROM from it.
Press A to change the animation.
I didn't time her animations properly, but it IS possible in the tool.
And obviously she's HUUUGE so sprites are dropped.


  • elenaindreamland.zip
    164.3 KB · Views: 122
Top Bottom