reticulatedpines / magiclantern_simplified

A Git based version of Magic Lantern, for those unwilling or unable to work using Mercurial. The vast majority of branches have been removed, with those thought to be important brought in individually and merged.
GNU General Public License v2.0
147 stars 51 forks source link

D678: Arkanoid erase background with transparent color #32

Open kitor opened 2 years ago

kitor commented 2 years ago

Connected with #31 (visible due to that).

Arkanoid uses index 0 as background color. For example

         // erase elements that changed their position (to minimize flicker)
         if (e->old_x != e->x || e->old_y != e->y)
         {
            //kitor: color index 0 is transparent on D45, we draw it as #00000000
            arkanoid_draw_elem(e, e->old_x, e->old_y, 0); 

This works on D45 and allows to play over LV.

With how we implemented opacity handling I see no easy way out for D678. Only thing that comes to mind so far is replace hardcoded index 0 with constant: COLOR_TRANSPARENT for D45 and COLOR_BLACK for D6+ and replace clrscr() on D6+ with COLOR_BLACK fill. Feature to play over LV won't work anymore (it will be always black background) but at least it would work properly.