User Tools

Site Tools


development:csdk:1.0:headers:drawing_funcs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
development:csdk:1.0:headers:drawing_funcs [2024/11/08 01:57] – removed - external edit (Unknown date) 127.0.0.1development:csdk:1.0:headers:drawing_funcs [2024/11/08 01:57] (current) – ↷ Page moved from development:csdk:headers:drawing_funcs to development:csdk:1.0:headers:drawing_funcs clyde
Line 1: Line 1:
 +====== drawing_funcs.h ======
  
 +drawing_funcs.h provides functions and macros related to putting stuff on the screen!
 +
 +===== Defines =====
 +==== Sprite flips ====
 +  * SPRITE_FLIP_NONE - Apply no sprite flip
 +  * SPRITE_FLIP_X - Apply horizontal sprite flipping
 +  * SPRITE_FLIP_Y - Apply vertical sprite flipping
 +  * SPRITE_FLIP_BOTH - Apply sprite flipping on both axes
 +
 +==== Sprite RAM Sections ====
 +  * QUADRANT_0 - Upper left quadrant of Sprite RAM page
 +  * QUADRANT_1 - Upper right quadrant of Sprite RAM page
 +  * QUADRANT_2 - Bottom left quadrant of Sprite RAM page
 +  * QUADRANT_3 - Bottom right quadrant of Sprite RAM page
 +
 +===== Functions =====
 +==== load_spritesheet ====
 +<code C>
 +void load_spritesheet(char* spriteData, char srcBank, char ramBank);
 +</code>
 +Decompresses sprite data and places it into Sprite RAM.
 +
 +  * spriteData - pointer to start of compressed sprite data
 +  * srcBank - bank number on flash cartridge
 +  * ramBank - section number of Sprite RAM to load into
 +
 +Can also be use with only two apparent arguments, using the asset macros generated by "make import".
 +<code C>load_spritesheet(&ASSET__gfx__mysprite_bmp, 0);</code>
 +
 +==== load_big_spritesheet ====
 +<code C>
 +#define load_big_spritesheet(NAME,BANK)
 +</code>
 +Macro that calls load_spritesheet four times to load an images that spans a full Sprite RAM page.
 +  * NAME - Use a generated asset macro from "make import", assumed to be larger than 128 pixels in both width and height.
 +  * BANK - section number of Sprite RAM to load into
 +==== clear_spritebank ====
 +<code C>
 +void clear_spritebank(char bank);
 +</code>
 +
 +*  bank - section number of Sprite RAM to zero out
 +
 +Fill a 128x128 Sprite RAM bank with zero-value pixels.
 +==== draw_sprite_frame ====
 +<code C>
 +void draw_sprite_frame(const Frame *sprite_table, char sprite_table_bank, char x, char y, char frame, char flip, char bank);
 +</code>
 +  * sprite_table - pointer to frame bounding boxes array
 +  * sprite_table_bank - bank number where sprite_table is stored
 +  * x - location on screen to place sprite center
 +  * y - location on screen to place sprite center
 +  * frame - frame number in bounding boxes list
 +  * flip - bitmask for sprite flipping
 +  * bank - (bitmask) which framebuffer page to draw on and which Sprite RAM page to use
 +
 +Draws a packed sprite as exported from Aseprite with a given X,Y position and frame number. Drawing operation is added to the drawing queue if a drawing is already in progress.
 +==== draw_sprite ====
 +<code C>
 +#define draw_sprite(X,Y,W,H,GX,GY,RAMBANK)
 +</code>
 +  * X, Y - position on screen to draw (upper left corner)
 +  * W, H - width and height to draw
 +  * GX,GY - position (upper left corner) of source in Sprite RAM
 +  * RAMBANK - Which Sprite RAM bank to use
 +
 +Macro that sets a temporary rect variable and then calls draw_sprite_rect(); 
 +==== draw_tile ====
 +<code C>
 +#define draw_tile(X,Y,W,H,GX,GY,RAMBANK)
 +</code>
 +  * X, Y - position on screen to draw (upper left corner)
 +  * W, H - width and height to draw
 +  * GX,GY - position (upper left corner) of source in Sprite RAM
 +  * RAMBANK - Which Sprite RAM bank to use
 +
 +Macro that sets a temporary rect variable and then calls draw_sprite_rect(), with tiling mode enabled.
 +Source data will repeat over a 16x16 square.
 +==== draw_box ====
 +<code C>
 +void draw_box(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c);
 +</code>
 +
 +  * x, y - position on screen to draw (upper left corner)
 +  * w, h - width and height to draw
 +  * c - color byte to use
 +
 +Draws a solid color box, submitting the operation to the drawing queue and starting it if the queue isn't already processing.
 +==== next_draw_queue ====
 +<code C>
 +void next_draw_queue();
 +</code>
 +
 +If there are draw operations in the queue but the queue is not running, this function starts the queue processing.
 +==== await_draw_queue ====
 +<code C>
 +void await_draw_queue();
 +</code>
 +
 +If the drawing queue is running then this function loops and returns when the drawing queue finishes.
 +==== clear_border ====
 +<code C>
 +void clear_border(char c);
 +</code>
 +
 +  * c - the color to use
 +
 +Draws a border color around the screen. Uses the draw queue.
 +==== clear_screen ====
 +<code C>
 +void clear_screen(char c);
 +</code>
 +
 +  * c - color to use
 +
 +Clear the screen to a background color. Uses the draw queue.
 +==== draw_box_now ====
 +<code C>
 +void draw_box_now(char x, char y, char w, char h, char c);
 +</code>
 +
 +Draws a colored box the same way as draw_box but skips/ignores/interrupts the draw queue.
 +==== draw_sprite_now ====
 +<code C>
 +void draw_sprite_now(char x, char y, char w, char h, char gx, char gy, char ramBank);
 +</code>
 +
 +Draw a sprite immediately, skipping/ignoring/interrupting the draw queue.
 +==== draw_tiles_now ====
 +<code C>
 +void draw_tiles_now(char x, char y, char w, char h, char gx, char gy, char ramBank);
 +</code>
 +==== draw_fade ====
 +<code C>
 +void draw_fade(unsigned char opacity);
 +</code>
 +
 +Draws a repeated dither fade pattern across the whole screen.
 +(Makes some very particular assumptions about what sprite data you've loaded and where? Need to check this)
 +==== printnum ====
 +<code C>
 +void printnum(int num);
 +</code>
 +==== print_hex_num ====
 +<code C>
 +void print_hex_num(char num);
 +</code>
 +==== print ====
 +<code C>
 +void print(char* str);
 +</code>