Skip to content

Instantly share code, notes, and snippets.

@videlais

videlais/main.c Secret

Created Jul 4, 2016
Embed
What would you like to do?
main.c for GBDK examples
#include <gb/gb.h>
#include "alpha.c"
#include "helloWorld.c"
#include "blankScreen.c"
#include "sprites.c"
void init();
void checkInput();
void updateSwitches();
// The player array will hold the player's position as X ([0]) and Y ([1])
UINT8 player[2];
void main() {
init();
while(1) {
checkInput(); // Check for user input (and act on it)
updateSwitches(); // Make sure the SHOW_SPRITES and SHOW_BKG switches are on each loop
wait_vbl_done(); // Wait until VBLANK to avoid corrupting memory
}
}
void init() {
DISPLAY_ON; // Turn on the display
set_bkg_data(0, 47, alpha); // Load 47 tiles into background memory
// Use the 'helloWorld' array to write background tiles starting at 0,6 (tile positions)
// and write for 10 tiles in width and 2 tiles in height
set_bkg_tiles(0,6,10,2,helloWorld);
// Load the the 'sprites' tiles into sprite memory
set_sprite_data(0, 1, sprites);
// Set the first movable sprite (0) to be the first tile in the sprite memory (0)
set_sprite_tile(0,0);
player[0] = 80;
player[1] = 72;
}
void updateSwitches() {
HIDE_WIN;
SHOW_SPRITES;
SHOW_BKG;
}
void checkInput() {
if (joypad() & J_B) {
// Use the 'blankScreen' array to write background tiles starting at 0,0 (tile positions)
// and for 20 tiles in width and 18 tiles in height
set_bkg_tiles(0,0,20,18,blankScreen);
}
// UP
if (joypad() & J_UP) {
player[1]--;
}
// DOWN
if (joypad() & J_DOWN) {
player[1]++;
}
// LEFT
if (joypad() & J_LEFT) {
player[0]--;
}
// RIGHT
if (joypad() & J_RIGHT) {
player[0]++;
}
// Move the sprite in the first movable sprite list (0)
// the the position of X (player[0]) and y (player[1])
move_sprite(0, player[0], player[1]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.