How to use directBitmap()?

Maybe I’m wrong, but 220x176x4bit (16 colors) are about 20Kb.
We’ll still have about 12Kb of ram for game stuff, not so much but not so bad.

1 Like

I’m kind of doing that…however, that’s simply because I can’t seem to figure out how to disable full resolution. Whatever I do, it just wants to stay at 220x176…

What I’m really using it for is to have 16 colors per sprite, not just for the entire screen. Hopefully if I can get it into low-res mode, it’ll stop flashing…

Make sure you have PROJ_HIRES=0 in “project/build options/#defines” in CodeBlocks. Then use normal drawBitmap() for drawing and display.update(false) for your drawing loop.

Thx for the share Jonne :wink:

If the idea of my friend work as we espect this lib could be awesome for the pokitto :wink:

@epicdude312 please consider trying to fit your graphics to 16 colors. I know it can be done, with a careful selection of colors. Pico-8 games manage, and they have a fixed palette

If you use only 16 colors, you can use the ahem buffered mode that will soon be available :grin:

1 Like

I’m having a new problem. It has absolutely nothing to do with intersections, because I do not have any overlapping bitmaps on my new hotbar.

However, it seems that there are black lines flashing in my hotbar:

It happens frequently with the item selected, and occasionally with the energy bar…

The bar is NOT intersecting with the world. I made a special function called directBlockBitmap() that ensures that not blocks draw past where the hotbar is.

Do you have any idea what is going on? If you need the source code, I can release it, but I don’t want to have to upload everything to GitHub if I don’t need to…

EDIT: Fixed! Turned out I was drawing things in the wrong order :stuck_out_tongue:

1 Like

If possible, show me your code somehow. I have a feeling you’re using a lot of resources and I am not sure how it would work on the hardware. I will look at it 100% confidentially and you can release when/if you want. IMHO this project looks awesome and I want to support your efforts to get it done.

1 Like

I’m fairly confident that it’s using too much memory, but I know some ways to optimize it which I’ll do before I release the game.

I’m still very confused. Can anyone list a few steps to direct draw in its current state?

This is what I’m using. But it was flickering, so I made it draw once, but the framebuffer draws over, so I didn’t even see my pic drawn. I also put it into direct draw mode with the update(true) function, but nothing else is drawn. Do I need to follow this function up with a method to change the mode?

const uint16_t pal_me[] = {
    21527,12913,38331,0,63220,60973,33989,27554,22785,31300,46156,65535,47234,56704
};

const uint8_t me[] =
{
80,80,
0,1,0,0,0,16,0,0,0,16,0,0,0,16,0,3,0,3,57,153,153,153,153,153,153,147,0,0,0,0,16,0,0,1,0,0,0,0,0,1,
0,0,16,0,0,1,0,0,0,17,0,0,0,0,0,51,3,57,153,153,153,153,153,153,153,147,51,0,0,1,0,0,0,16,0,0,0,0,0,16,
0,0,1,0,0,1,0,0,0,1,0,0,0,1,3,153,57,153,153,153,153,153,153,153,153,51,131,0,0,1,0,0,0,16,0,0,0,0,1,0,
0,0,1,16,0,0,16,0,0,1,16,0,0,3,57,153,153,153,153,153,153,153,153,153,153,56,147,0,0,16,0,0,1,0,0,0,0,0,16,0,
0,0,0,17,0,0,1,0,0,0,17,0,0,57,153,153,154,169,153,153,153,153,153,153,153,153,147,0,1,16,0,0,16,0,0,0,0,1,0,1,
16,0,0,1,16,0,1,16,0,0,51,51,51,153,153,153,153,170,170,153,169,147,153,153,153,153,48,0,1,0,0,0,16,0,0,0,0,16,0,16,
17,0,0,0,16,0,0,16,0,3,137,153,153,153,153,153,153,153,154,170,169,153,153,169,154,153,48,0,17,0,0,1,0,0,0,0,1,0,1,0,
1,16,0,0,17,0,0,1,0,0,58,169,153,153,153,153,153,153,153,154,153,58,154,169,170,147,0,0,16,0,0,1,0,0,0,0,16,0,16,0,
0,16,0,0,1,16,0,1,16,3,51,170,153,153,153,153,147,153,153,169,147,170,170,170,170,163,0,1,16,0,0,16,0,0,0,1,0,1,0,0,
0,1,0,0,0,17,0,0,17,57,153,153,153,153,153,153,57,153,153,153,51,153,169,154,153,51,48,17,0,0,1,0,0,0,0,16,0,16,0,0,
0,0,16,0,0,1,16,0,1,57,153,153,153,153,153,153,57,153,153,147,57,153,153,57,153,153,48,17,0,0,17,0,0,0,1,0,1,0,0,1,
16,0,1,0,0,1,16,0,1,57,153,153,153,147,56,136,56,137,153,147,153,153,152,51,137,131,1,16,0,1,16,0,0,0,16,0,16,0,0,16,
1,0,0,16,0,0,17,0,0,57,153,153,153,52,67,51,51,51,136,51,136,136,131,68,56,48,17,16,0,1,0,0,0,1,0,1,0,0,1,0,
0,16,0,1,0,0,1,16,0,57,153,153,153,52,68,68,68,68,51,51,51,51,52,68,67,0,17,0,0,17,0,0,0,16,0,16,0,1,16,0,
0,1,0,1,16,0,0,17,0,56,136,137,147,68,68,68,68,68,68,68,68,68,68,68,67,1,17,0,1,16,0,0,1,0,1,0,0,17,0,0,
0,0,16,0,17,0,0,17,16,57,153,152,147,68,68,68,68,68,68,68,68,68,68,68,67,1,16,0,1,16,0,0,16,0,16,0,1,16,0,0,
0,0,1,0,1,16,0,1,16,56,136,137,131,68,68,68,68,136,136,68,69,68,136,136,67,17,16,0,17,0,0,1,16,1,0,0,17,0,0,0,
16,0,0,16,0,17,0,0,17,57,153,152,52,68,68,68,136,136,136,132,84,72,136,136,131,17,0,1,16,0,0,17,0,16,0,1,16,0,0,1,
17,0,0,1,0,1,16,0,1,19,153,147,68,68,68,72,132,68,68,68,68,68,68,68,131,17,0,17,16,0,1,16,1,0,0,17,0,0,1,16,
1,16,0,0,16,0,17,0,1,19,153,52,68,68,68,68,68,68,68,68,68,68,68,68,67,17,17,17,0,0,17,0,16,0,17,16,0,0,16,0,
0,17,16,0,1,0,1,16,0,3,136,52,68,68,68,68,68,68,68,68,68,68,68,68,67,17,17,17,0,1,16,1,0,1,17,0,0,1,0,0,
0,0,17,0,0,16,0,17,0,3,153,52,68,68,68,68,67,51,52,68,68,68,51,51,67,17,17,17,0,17,0,16,0,17,16,0,1,0,0,0,
0,0,1,16,0,1,0,1,16,3,153,52,68,68,68,68,59,187,179,68,68,67,187,187,51,17,17,17,1,16,1,1,17,17,0,0,16,0,0,1,
0,0,0,17,0,0,16,0,17,3,153,52,68,68,68,67,187,187,187,52,68,59,187,187,179,17,17,17,17,0,16,17,17,16,0,17,0,0,1,16,
17,0,0,0,17,0,1,0,17,19,57,147,68,68,68,67,187,51,187,52,68,59,179,59,179,17,17,17,16,1,0,17,17,0,1,0,0,0,16,0,
17,17,0,0,1,16,0,16,1,17,57,147,68,68,68,67,187,51,187,52,68,59,179,59,179,17,17,17,0,16,1,17,17,1,16,0,0,17,0,0,
1,17,17,0,0,17,0,1,0,17,56,131,68,68,68,67,187,187,187,52,68,59,187,187,179,51,49,16,1,0,17,17,17,16,1,17,1,0,0,1,
0,1,17,17,0,0,16,0,16,3,57,147,68,68,68,68,59,187,179,68,68,83,187,187,52,52,67,16,16,1,17,17,17,16,1,17,16,0,0,16,
0,0,17,17,17,0,1,16,1,52,67,153,52,68,68,68,67,51,52,68,68,52,51,51,68,53,67,1,0,17,17,17,17,16,0,16,0,0,16,0,
17,0,0,17,17,17,0,17,3,68,84,57,52,68,68,68,68,68,68,68,68,52,68,68,68,53,67,17,17,16,1,17,17,16,17,0,0,16,0,0,
1,16,0,0,17,17,16,17,19,69,85,67,52,68,68,68,68,68,68,68,68,67,68,68,68,51,67,17,17,17,17,17,17,17,0,0,17,0,0,17,
0,1,17,0,1,17,17,17,19,69,83,67,52,68,68,68,68,68,68,68,68,67,68,68,68,53,67,17,17,17,16,17,17,0,0,1,0,0,17,0,
16,0,1,17,0,17,17,17,19,68,51,68,68,68,68,68,68,68,68,68,68,68,52,68,68,53,49,17,17,17,16,1,16,0,1,0,0,17,0,0,
1,16,0,1,17,0,1,17,17,52,83,68,68,68,68,68,68,68,68,68,68,68,67,68,68,53,49,17,17,17,16,16,0,1,0,0,17,0,0,0,
0,1,16,0,1,17,0,1,16,52,69,84,67,68,68,68,68,68,68,68,68,68,68,52,68,67,49,17,17,17,17,0,1,16,0,17,0,0,0,17,
0,0,1,16,0,1,17,1,17,19,69,67,68,69,68,68,68,68,68,67,68,68,67,68,68,67,17,17,17,17,17,1,16,0,17,0,0,0,17,0,
0,0,0,1,17,17,17,17,17,17,52,67,68,52,68,68,67,51,52,68,53,85,52,68,68,67,17,17,34,17,17,16,1,16,0,0,1,16,0,0,
17,0,0,17,17,17,17,17,17,17,19,51,67,68,52,68,60,59,179,68,68,68,68,68,68,67,17,17,34,33,17,17,16,0,0,1,16,0,0,0,
0,1,17,17,17,17,17,17,17,17,17,17,52,67,68,68,60,195,187,51,68,68,68,68,68,67,17,17,34,34,33,17,0,0,1,16,0,0,0,17,
0,0,1,17,17,17,17,34,33,17,17,17,19,84,67,68,60,204,59,187,51,68,68,68,67,67,33,17,18,34,33,17,0,17,17,16,0,17,17,0,
16,0,1,17,17,17,17,34,34,17,17,34,35,68,52,68,67,204,195,187,187,52,68,68,68,51,34,17,17,34,17,17,17,17,17,17,17,17,0,0,
0,17,17,17,17,17,17,18,34,17,18,34,34,51,68,67,67,204,204,51,51,68,68,67,68,83,34,33,17,17,17,17,17,17,17,17,17,16,0,0,
0,0,0,17,17,17,17,17,17,17,18,34,34,34,51,52,68,60,204,204,52,68,67,68,53,83,34,34,17,17,17,16,1,51,51,17,17,17,0,0,
16,0,0,0,17,17,17,17,17,17,34,34,34,35,51,83,52,67,51,51,68,69,68,52,83,50,34,34,33,17,17,0,3,68,68,49,17,17,1,17,
17,17,17,16,1,17,17,17,17,17,34,34,34,54,115,69,83,52,68,68,69,67,68,51,51,34,34,34,33,17,17,0,52,68,68,49,17,17,16,0,
0,0,17,17,17,17,17,17,51,51,51,51,51,54,52,68,85,83,51,51,51,51,51,55,99,34,35,51,51,49,17,3,68,68,68,49,17,17,16,0,
0,0,0,0,17,17,17,19,54,102,102,102,102,54,52,68,69,85,85,85,85,85,85,54,99,51,54,102,102,51,17,19,68,68,67,17,17,17,17,17,
16,0,0,0,17,17,34,54,54,102,102,102,102,54,52,68,68,69,85,85,85,85,84,54,102,54,102,102,102,54,49,19,85,68,67,17,17,17,16,0,
1,17,0,0,17,18,34,54,54,102,102,102,99,102,99,68,68,68,68,68,68,68,68,54,102,54,102,102,103,102,99,17,53,84,67,17,17,16,0,0,
17,16,17,1,17,18,35,102,54,102,102,102,99,102,102,52,68,68,68,68,68,68,67,102,102,54,102,102,103,102,102,49,52,68,67,17,17,16,0,0,
17,16,0,17,17,17,35,102,118,102,102,102,99,102,102,99,52,67,51,51,68,67,54,102,102,54,102,102,103,99,51,51,51,68,67,17,17,16,17,17,
17,16,17,17,17,17,54,102,99,102,102,102,99,102,102,102,99,51,204,204,52,60,54,102,102,54,102,102,118,52,68,68,68,68,68,49,17,17,16,0,
17,17,17,17,17,17,54,102,102,118,102,102,99,102,102,99,51,55,60,204,195,60,195,51,54,54,102,102,118,52,68,68,68,68,68,49,17,17,17,0,
16,17,17,17,17,19,102,102,102,118,102,102,99,102,51,55,119,51,51,204,204,204,204,55,115,102,102,102,118,52,68,68,68,68,68,49,17,17,17,0,
0,17,17,17,17,19,102,102,102,103,102,102,102,51,119,102,99,204,204,204,195,60,204,54,102,102,102,102,118,51,84,68,68,68,68,67,17,17,17,0,
0,17,17,17,17,54,102,102,102,103,102,102,102,102,102,102,51,51,60,204,56,60,60,195,51,54,102,103,102,52,68,68,68,68,68,67,17,17,17,17,
0,17,17,17,17,54,102,102,102,103,102,102,102,102,102,102,102,51,204,195,147,195,3,204,195,211,102,103,102,52,68,68,68,68,68,67,17,17,17,0,
1,17,17,17,19,102,102,102,102,103,102,102,102,102,102,102,99,204,204,57,147,195,51,204,61,221,54,103,102,51,84,68,68,68,68,68,49,17,17,16,
1,17,17,17,19,102,102,102,102,102,118,102,102,102,102,102,60,204,51,153,153,60,204,195,221,51,54,103,102,52,68,68,68,68,68,68,49,17,17,17,
17,17,17,17,54,102,102,102,102,102,118,102,102,102,102,102,51,51,99,153,153,147,51,56,51,102,102,118,102,52,68,68,68,68,68,68,49,17,17,17,
17,17,17,17,51,102,102,102,102,102,118,102,102,102,102,102,102,102,57,152,153,153,153,152,60,54,102,118,102,99,68,68,68,68,68,68,49,17,17,17,
17,17,17,17,54,54,102,102,102,102,118,102,102,102,102,102,102,102,56,137,153,153,153,147,204,54,102,118,102,99,85,85,84,68,68,68,49,17,17,17,
17,17,17,34,54,99,102,102,102,102,103,102,102,102,102,102,102,99,137,153,153,153,153,60,204,54,102,118,102,102,53,85,85,84,68,68,67,17,17,17,
17,17,18,34,51,102,54,102,102,102,103,102,102,102,102,102,102,99,153,153,153,153,147,204,195,102,102,55,102,102,99,51,51,51,68,68,67,17,17,17,
17,17,18,34,52,54,99,102,102,102,99,102,102,102,102,102,102,57,153,153,153,153,54,60,54,102,103,55,102,102,102,99,52,68,68,68,67,17,17,17,
17,17,18,34,52,67,102,51,102,102,115,102,102,102,102,102,99,153,153,153,153,153,54,99,102,102,103,55,118,102,51,52,52,68,68,68,67,17,17,17,
17,17,18,34,52,68,54,102,51,103,115,118,102,102,102,102,57,153,153,153,153,147,102,102,102,102,103,55,119,99,68,68,67,68,68,68,68,49,17,17,
17,17,17,34,52,68,67,54,102,51,51,51,51,51,51,51,153,153,152,153,153,147,102,102,102,102,103,115,119,52,68,68,67,68,68,68,68,49,17,17,
17,17,17,19,68,68,68,67,54,119,51,137,153,153,153,153,153,153,153,152,153,147,102,102,102,102,103,115,115,84,68,68,67,68,68,68,68,67,17,17,
17,17,17,19,68,68,68,68,67,51,153,57,136,153,153,153,153,153,153,153,153,153,51,102,102,102,102,119,51,85,68,68,67,68,68,68,68,67,17,17,
1,17,17,19,68,68,68,68,69,51,57,153,153,137,153,153,153,153,153,153,153,153,153,54,102,102,102,119,53,85,68,68,67,68,68,68,68,68,49,17,
1,17,17,19,68,68,68,68,51,153,147,153,153,152,153,153,153,153,153,147,57,153,153,147,102,102,102,119,53,85,84,68,67,68,68,68,68,68,49,17,
1,17,17,19,68,68,68,67,137,153,153,147,153,137,152,153,153,153,147,52,67,152,152,53,54,102,102,103,51,85,84,68,52,68,68,68,68,68,83,17,
1,17,17,19,68,68,68,51,136,153,153,153,57,152,137,153,137,51,52,68,67,153,131,85,54,102,102,103,51,85,85,68,52,68,68,68,68,68,83,17,
1,17,17,52,68,68,68,68,51,51,153,153,147,153,153,136,147,68,68,69,57,153,53,68,54,102,102,102,51,85,85,67,68,68,68,68,68,68,85,49,
17,17,17,52,68,68,68,68,68,68,57,153,153,153,153,153,52,68,68,51,153,51,68,68,54,102,102,102,50,53,85,83,68,68,68,68,68,69,85,49,
17,17,17,52,68,68,68,68,68,68,67,56,153,153,153,147,68,68,67,51,51,68,68,68,54,102,102,102,50,35,85,53,68,68,68,68,68,69,85,49,
17,17,19,68,68,68,68,68,68,68,68,67,136,153,153,147,68,68,68,68,68,68,68,67,102,102,102,102,50,35,85,53,68,68,68,68,68,69,85,49,
17,17,19,84,68,68,68,68,68,68,68,68,51,51,51,52,68,68,68,68,68,68,67,53,54,102,102,102,50,17,53,85,84,68,68,68,68,85,83,17,
17,17,17,53,85,85,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,67,52,68,54,102,102,102,49,17,53,85,84,68,68,68,69,85,83,17,
};

call game.update() like this:

game.update(true);

What it does is it prevents the framebuffer from drawing on top of your direct draw images

When I do that, all that is drawn is the directBitmap() …

Side note, but aren’t I cute? :smiley:

1 Like

use game.display.update(); to force buffer draw before you do the directdraws

Do I need to call game.display.update() at the top of each loop, now?

oh wait. it wont work like that. you will still get flicker

Yeah, I just realized that. How would I be able to get this working right?

I think you could look at how @spinal did the Sensitive game. I am still too tied to the shipping jamboree

1 Like

what you want to do? clear the screen?
draw a rectangle or whatever you want as you base background one time and you golden
just don’t forget to draw the background back where the image was or you are going to get the old windows solitaire effect :smiley:

3 Likes

I was thinking about this issue. Perhaps we could add hardware style sprites to the screen update routines? Basically we could have a hand full of pointers to graphics, they could be 16bit or paletted and add them during the scanline creation in the various render modes. Would it slow down the rendering by much?

2 Likes

you mean a scanline buffer?
thing is we dont realy have a scanline with the direct draw we only update a rectangle sector of the screen

thought eh idea of a rect scanline buffer could still work if you know all the sprites positions

I have several ‘pages’ in my program, and on one of those, I want to draw a picture, but nothing else is drawn except for that picture. Whenever I use game.display.fillScreen(0) or game.display.fillRect(0, 0, 220, 180), however, the image flickers. If I display the image once, then it just flickers. I’m confused because I thought there was some way to direct draw and not have anything draw over what I’ve directly drawn…

I think if I directly draw my 4bit image to the screen and then don’t display anything until the user goes to the next ‘page,’ then nothing should overwrite it. Is there a way to prevent the screen from refreshing until I allow it to?