Log In  

Cart #hypercolor_paint-0 | 2019-07-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
12

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:

Cart #bunny-0 | 2019-07-18 | Code ▽ | Embed ▽ | No License
12

P#65915 2019-07-18 06:08 ( Edited 2019-07-18 06:18)

1

this is really rad! might wanna include a warning for those with photosensitive epilepsy, though.

P#66112 2019-07-26 12:42

Wow this is really impressive!

P#72711 2020-02-04 03:20
:: dw817

Agree with @DorkOrca.

@electricgryphon, You might be interested in what I wrote which has minimal flicker.

https://www.lexaloffle.com/bbs/?tid=35657

P#72714 2020-02-04 04:18

@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.

P#74137 2020-03-23 08:46

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.

P#74147 2020-03-23 15:54

[Please log in to post a comment]

Follow Lexaloffle:        
Generated 2020-05-31 22:46 | 0.070s | 2097k | Q:55