Introducing Hypercolor Paint, a high-color painting application for the PICO-8.
Features:
Paint in either high color mode (flicker) or standard (dithered) mode.
While editing, pixels are treated as 56,535 level 3-channel color.
Use a variety of brushes, with control of color, size and pressure to achieve desired effects.
Save images (requires download)
Export images (requires download)
Example Images: (High color mode is simulated)
<b>Keyboard:</b>
Z: Switch between paint mode and palette mode
Tab: Switch between high color and standard color mode
Mouse: Paint with left mouse button
<b>Palette Screen:</b>
?: Show splash screen
Color: Switch between paint mode and palette mode
Save: Save image locally to hyper_color_save.p8 (image will be cropped)
Load: Load image locally from hyper_color_save.p8
Export: Export image to hyper_color_export.p8
For standard color images, the sprite sheet will capture the full image.
For high color images, data is stored in sprite sheet as well as map and sound effect locations.
In order to view images, paste the following code into hyper_color_export.p8:
<code>
k_display_adr=0x6000
k_screen_1_adr=0x0000
k_screen_2_adr=0x2000
k_screen_len=0x2000
cur_frame=0
function _update60()
end
function _draw()
cur_frame+=1
if(cur_frame%2==0)then
memcpy(k_display_adr,k_screen_1_adr,k_screen_len)
else
memcpy(k_display_adr,k_screen_2_adr,k_screen_len)
end
end
</code>
Technical notes:
Two different 16X16X16 color look up tables are used to achieve responsive paint effects with dithering at 60 fps. In order to avoid a massive slow down (it takes a number of minutes to build the color cube) the look up table is generated by a different cart and loaded into sprite, map and sound memory.
Example exported cart:
this is really rad! might wanna include a warning for those with photosensitive epilepsy, though.
Agree with @DorkOrca.
@electricgryphon, You might be interested in what I wrote which has minimal flicker.
@electricgryphon FYI, with the latest changes in 0.1.12d the initial raytracing code sometimes crashes with an out of memory error (about 1 time out of 5). This is due to an infinite recursion in render_ray() where the ray reflects against the same object forever. I was unable to find a proper fix but adding a depth limit to render_ray() worked.
The reason it only happens now is because Zep improved the precision of sqrt(), so the various vector length and normalisation functions behave slightly differently.
Thanks Samhocevar! I was always a little surprised that this didn’t fall into infinite recursion previously. Figured that the calculations just weren’t precise enough to be be stable in the worst possible way.
i booted up the cart and it said "out of memory". do you know what this means or how to fix this?
[Please log in to post a comment]