For those who thought Color a Dinosaur wasn't shitty enough.

In this ROM you color a deer and then you close your emulator and wish you were doing something better with your life.
Moderator: Moderators
Sure did.tokumaru wrote:Color a Dinosaur offered a lot of silly patterns to compensate for the lack of color, didn't it?
Yes, this could be done by modifying the preprocessor program, but I'm not interested in doing it.Could "too many small areas with ambiguous color" be filled by defining regions that are linked together? If a region is linked to other regions, and you fill one region, it'd automatically fill the others. A user who doesn't want linking could disable it later in the menu.
This is possible by changing the regions to be 16x16 (and finding a simpler outline image), but I'm not interested in doing it.Bregalad wrote:I challenge you to do the same with at least 4 colours (black not included), and on NES
Adding a single pattern crayon would be easy because there's room for it, but adding more would require shrinking my RAM buffers which is kinda a pain and so I'm not interested in doing it.Guilty wrote:So, Pubby? Where's our silly pattern crayon?
http://www.fsa.usda.gov/Internet/FSA_Fi ... lrbook.pdftepples wrote:Nice tech demo. Where'd you get the outline?
Interesting. Would it be equivalent to say "each 8x8 pixel tile may contain pixels from no more than three connected regions"? Or is the RGB a tighter bound?pubby wrote:To briefly describe the technique, I'll say it first begins by hand-coloring the outline image to look like this:
The requirements of this coloration is that each 8x8 tile contains at most 1 red-colored region, 1 blue-colored region, and 1 green-colored region. This allows the ROM's flood-fill algorithm to work with precomputed 8x8 tiles instead of checking pixel-by-pixel.
Do you plan on releasing source code so that other interested people can do it?pubby wrote:Yes, this could be done by modifying the preprocessor program, but I'm not interested in doing it.tepples wrote:Could "too many small areas with ambiguous color" be filled by defining regions that are linked together?
Thank you. Now other developers of coloring book engines will at least have a data set to test against. I seem to remember bunnyboy mentioning a Color a Dinosaur sequel called Power Coloring, for instance.pubby wrote:http://www.fsa.usda.gov/Internet/FSA_Fi ... lrbook.pdftepples wrote:Where'd you get the outline?
It's public domain.
Does this mean you're changing all instances of a specific color in each tile using bitwise operations? What about detecting whether the paint should spill to adjacent tiles?pubby wrote:The requirements of this coloration is that each 8x8 tile contains at most 1 red-colored region, 1 blue-colored region, and 1 green-colored region. This allows the ROM's flood-fill algorithm to work with precomputed 8x8 tiles instead of checking pixel-by-pixel.
You'd need 3 palettes to hold all possible 3-color combinations out of the total of 4 colors (+ black), but if painting a block causes a different palette to be assigned to it, other colors in the same pattern might need to be changed to match the new palette.This is possible by changing the regions to be 16x16 (and finding a simpler outline image), but I'm not interested in doing it.Bregalad wrote:I challenge you to do the same with at least 4 colours (black not included), and on NES
Personally, I'd implement the silly patterns by having the flood fill algorithm always consult the original flat image (which would be uncompressed in the ROM) to decide what colors to change and to build the bit masks necessary to manipulate the dynamic patterns. A simpler option might be to remember in RAM what each color of each tile has been recolored to, and apply all 3 transformations on top of the original tile data every time a tile is processed. This is more straightforward and has the benefit of not needing to read from VRAM. You can even implement a pop-up GUI by overwriting part of the picture, and restoring it once the interface is closed.Adding a single pattern crayon would be easy because there's room for it, but adding more would require shrinking my RAM buffers which is kinda a pain and so I'm not interested in doing it.Guilty wrote:So, Pubby? Where's our silly pattern crayon?
Here: https://github.com/pubby/coloradeertepples wrote:Do you plan on releasing source code so that other interested people can do it?
The colored image gets converted to CHR data in a very straightforward way. CHR data can have 4 different colors and that is why my coloration uses 4 colors; R, G, B, and black. I would say that RGB is a tighter bound.tepples wrote:Interesting. Would it be equivalent to say "each 8x8 pixel tile may contain pixels from no more than three connected regions"? Or is the RGB a tighter bound?
This is what I'm doing. VRAM is not read from at all in the demo. By "buffer" I really meant "array"; each 8x8 tile takes up 1 byte of RAM, and since there are 1024 tiles this takes up 1024 bytes of space. Colors are encoded in 2 bits segments of these bytes, meaning only 4 colors are possible (3 solid and 1 pattern). However, you could increase the bits-per-color to 8 and still have enough room by combining duplicate tiles.tokumaru wrote:A simpler option might be to remember in RAM what each color of each tile has been recolored to, and apply all 3 transformations on top of the original tile data every time a tile is processed. This is more straightforward and has the benefit of not needing to read from VRAM. You can even implement a pop-up GUI by overwriting part of the picture, and restoring it once the interface is closed.
Changes to the pattern tables are done using bitwise masks against the uncompressed 3-colored image. The inputs are three replacements:Does this mean you're changing all instances of a specific color in each tile using bitwise operations? What about detecting whether the paint should spill to adjacent tiles?
Adjacent tiles of the same color are precomputed and stored in lookup tables (nbor_r.bin, nbor_g.bin, nbor_b.bin)What about detecting whether the paint should spill to adjacent tiles?
Hmm...so we need images that are three-colorable (as opposed to the guaranteed four-colorable). [well, if we had freer paletting...]pubby wrote:To briefly describe the technique, I'll say it first begins by hand-coloring the outline image to look like this: