Discussion about software development for the old-school Gameboys, ranging from the "Gray brick" to Gameboy Color
(Launched in 2008)
You are not logged in.
Pages: 1
so I've just got into the Gameboy development scene and I've managed to code a simple gb app moving a simple box around the screen via the d-pad. Hurrah, beautiful delicious progress!
Problems?
1. the box leaves a black trail behind it indicating that there is no clearing the buffer of previous pixels. What would be gbdk equivalent of a simple CLS function here?
2. How would I go about moving my box in diagonals? I've tried combining joypad() readouts like J_UP && J_LEFT to move the box up and left at a diagonal but I cant seem to make that sort of thing work
Keep in mind I am also new to C programing altogether. My previous coding experience is in Blitz Basic, Blitz3D, Blitz Max, QBasic (that one was a good while back), some javascript. I dont know if many of you here are familiar with any of those coding languages but there ya go ![]()
PS: I tried joining your discord channel but it keeps throwing me to my main Discord front page here in my browser. Does your discord actually exist? The IRC chanel looks empty ![]()
edit: here's my code so far:
#include <gb/gb.h>
#include <gbdk/console.h>
#include <gb/drawing.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
int playerX=32, playerY=32;
int joyGet;
int main(void){
SHOW_BKG;
SHOW_SPRITES;
DISPLAY_ON;
while(1) {
joyGet = joypad();
if ( joyGet == J_UP ){playerY--;}
if ( joyGet == J_DOWN ){playerY++;}
if ( joyGet == J_LEFT ){playerX--;}
if ( joyGet == J_RIGHT ){playerX++;}
box(playerX,playerY,playerX+8,playerY+8,1);
delay(20);
gprintf("playerX: %d",playerX); gotogxy(0,0);
gprintf("playerY: %d",playerY); gotogxy(0,1);
vsync();
}
}Last edited by MisterBull92 (2023-08-11 23:43:38)
Offline
&& is logical AND, & is bitwise AND
To test just one button from the joypad input, do a bit test which masks out all other button bits such as (joyGet & J_UP) instead of (joyGet == J_UP). That way if multiple buttons are pressed the individual bit tests will still work, whereas the == test only works if just one single button is pressed and all others are released..
It will be easier to develop using sprites and/or background tiles/maps for graphics instead of APA graphics mode which is rather slow. There are some examples in the gbdk-2020 install,along with some tutorial links in the manual.
Not sure which discord link you are trying, but you can find them here:
gbdev: https://gbdev.io/chat.html
gbdk: https://github.com/gbdk-2020/gbdk-2020#discord-servers
Last edited by bbbbbr (2023-08-25 03:31:44)
Offline
bbbbbr wrote:
&& is logical AND, & is bitwise AND
To test just one button from the joypad input, do a bit test which masks out all other button bits such as (joyGet & J_UP) instead of (joyGet == J_UP). That way if multiple buttons are pressed the individual bit tests will still work, whereas the == test only works if just one single button is pressed and all others are released..
It will be easier to develop using sprites and/or background tiles/maps for graphics instead of APA graphics mode which is rather slow. There are some examples in the gbdk-2020 install,along with some tutorial links in the manual.
Not sure which discord link you are trying, but you can find them here:
gbdev: https://gbdev.io/chat.html
gbdk: https://github.com/gbdk-2020/gbdk-2020#discord-servers
Thanks for the post, yeah I've figured out the graphics mode was awful for a number of reasons. I've since "graduated" to using sprites and background data. Thanks for explaining the & / && / == stuff though, that's a new lesson for me to digest and use in my current project!
the discord links you sent me do work, I think the ones I followed before were old links posted somewhere on this forum. The guys on the discord have been some good help tonight with understanding some code.
Again, thanks! ![]()
Offline
Pages: 1