// Game Boy Advance library for Logic Machines F'05 // Version 7, December 7, 2005 #ifndef __GBAIO__ #define __GBAIO__ #include "gbamath.h" // **************************************************************************************************** // Constants // Use these image size constants for the third parameter to load_image() #define IMAGE_8x8 0 #define IMAGE_16x16 1 #define IMAGE_32x32 2 #define IMAGE_64x64 3 #define IMAGE_16x8 4 #define IMAGE_32x8 5 #define IMAGE_32x16 6 #define IMAGE_64x32 7 #define IMAGE_8x16 8 #define IMAGE_8x32 9 #define IMAGE_16x32 10 #define IMAGE_32x64 11 // Use these constants as the parameter to button_pressed(), button_released() and button_held() #define A_BUTTON (1 << 0) // 1 #define B_BUTTON (1 << 1) // 2 #define SELECT_BUTTON (1 << 2) // 4 #define START_BUTTON (1 << 3) // 8 #define RIGHT_BUTTON (1 << 4) // 16 #define LEFT_BUTTON (1 << 5) // 32 #define UP_BUTTON (1 << 6) // 64 #define DOWN_BUTTON (1 << 7) // 128 #define R_BUTTON (1 << 8) // 256 #define L_BUTTON (1 << 9) // 512 // Use these constants in place of 0 and 1 to improve code legibility #define TRUE 1 #define FALSE 0 #define YES 1 #define NO 0 // gbaio uses some sprites for its own wise purposes. It reserves sprites numbered from 511 and down. // This is the last available sprite number that you can use. #define LAST_AVAILABLE_SPRITE_NUMBER 497 // **************************************************************************************************** // Miscellaneous functions // start up the gbaio library void start_game(void); // return a random number from min to max int rand(int min, int max); // **************************************************************************************************** // Input functions // get ready to check inputs void start_input(void); // did a button get pressed? int button_pressed(int which); // did a button get released? int button_released(int which); // is a button down? int button_held(int which); // **************************************************************************************************** // Drawing functions // load an image into sprite image memory void load_image(int image_number, const char *image, int size); // get ready to draw int start_drawing(void); // set the image for a sprite void set_sprite_image(int sprite_number, int image_number); // place a sprite on the screen void draw_sprite(int sprite_number, int x, int y); // set a color in the sprite palette void set_color(int color_number, int red, int green, int blue); // draw a dot on the screen void draw_dot(int x, int y, int r, int g, int b); // sets background to a single color void color_background( int r, int g, int b ); // set a transform to a rotation angle void set_transform_rotation(int transform_number, real angle); // now assign a transform to a sprite void set_sprite_transform(int sprite_number, int transform_number); void load_animation( int, int* ); void set_sprite_animation( int, int, int, int ); void animate_sprite( int ); struct sprite_anim make_sprite_anim( int, int, int, int, int ); // draw a number at x,y using a bunch of sprites (one sprite per character, usually less than 10) void draw_number(int number, int x, int y, int first_sprite_number, int max_sprites); // super version of draw_number void draw_number_advanced(int number, int x, int y, int first_sprite_number, int num_sprites, int force_sign, int draw_leading_zeroes, int max_digits); // aha! draw a real number, same idea as draw_number void draw_real(real number, int x, int y, int first_sprite_number, int num_sprites); // super version of draw_real void draw_real_advanced(real number, int x, int y, int first_sprite_number, int num_sprites, int precision); // oh yeah, this isn't obvious, but because numbers are drawn with sprites, you have to move the // sprites off the screen when you don't want the number drawn any more. void clear_number(int first_sprite_number, int num_sprites); // don't call this void video_mode(int mode); // same as RGB5 unsigned short rgb_color(int red, int green, int blue); #endif