|
GBDK 2020 Docs
API Documentation for GBDK 2020
|
Go to the documentation of this file.
16 #if defined(__TARGET_ap)
17 #define ANALOGUEPOCKET
18 #elif defined(__TARGET_gb)
42 #define J_SELECT 0x40U
49 #define M_DRAWING 0x01U
50 #define M_TEXT_OUT 0x02U
51 #define M_TEXT_INOUT 0x03U
57 #define M_NO_SCROLL 0x04U
61 #define M_NO_INTERP 0x08U
67 #define S_PALETTE 0x10U
80 #define S_PRIORITY 0x80U
85 #define EMPTY_IFLAG 0x00U
91 #define VBL_IFLAG 0x01U
95 #define LCD_IFLAG 0x02U
99 #define TIM_IFLAG 0x04U
103 #define SIO_IFLAG 0x08U
107 #define JOY_IFLAG 0x10U
111 #define DMG_BLACK 0x03
112 #define DMG_DARK_GRAY 0x02
113 #define DMG_LITE_GRAY 0x01
114 #define DMG_WHITE 0x00
134 #define DMG_PALETTE(C0, C1, C2, C3) ((uint8_t)((((C3) & 0x03) << 6) | (((C2) & 0x03) << 4) | (((C1) & 0x03) << 2) | ((C0) & 0x03)))
139 #define SCREENWIDTH DEVICE_SCREEN_PX_WIDTH
142 #define SCREENHEIGHT DEVICE_SCREEN_PX_HEIGHT
145 #define MINWNDPOSX 0x07U
148 #define MINWNDPOSY 0x00U
151 #define MAXWNDPOSX 0xA6U
154 #define MAXWNDPOSY 0x8FU
334 #define DMG_TYPE 0x01
337 #define MGB_TYPE 0xFF
340 #define CGB_TYPE 0x11
350 #define GBA_NOT_DETECTED 0x00
353 #define GBA_DETECTED 0x01
357 #define DEVICE_SUPPORTS_COLOR (_cpu == CGB_TYPE)
400 #define IO_IDLE 0x00U
402 #define IO_SENDING 0x01U
404 #define IO_RECEIVING 0x02U
406 #define IO_ERROR 0x04U
415 #define CURRENT_BANK _current_bank
427 #define BANK(VARNAME) ( (uint8_t) & __bank_ ## VARNAME )
442 #define BANKREF(VARNAME) void __func_ ## VARNAME() __banked __naked { \
444 .local b___func_ ## VARNAME \
445 ___bank_ ## VARNAME = b___func_ ## VARNAME \
446 .globl ___bank_ ## VARNAME \
459 #define BANKREF_EXTERN(VARNAME) extern const void __bank_ ## VARNAME;
465 #define SWITCH_ROM_MBC1(b) \
466 _current_bank = (b), *(uint8_t *)0x2000 = (b)
473 #define SWITCH_ROM SWITCH_ROM_MBC1
478 #define SWITCH_RAM_MBC1(b) \
479 *(uint8_t *)0x4000 = (b)
486 #define SWITCH_RAM SWITCH_RAM_MBC1
490 #define ENABLE_RAM_MBC1 \
491 *(uint8_t *)0x0000 = 0x0A
493 #define ENABLE_RAM ENABLE_RAM_MBC1
497 #define DISABLE_RAM_MBC1 \
498 *(uint8_t *)0x0000 = 0x00
500 #define DISABLE_RAM DISABLE_RAM_MBC1
502 #define SWITCH_16_8_MODE_MBC1 \
503 *(uint8_t *)0x6000 = 0x00
505 #define SWITCH_4_32_MODE_MBC1 \
506 *(uint8_t *)0x6000 = 0x01
513 #define SWITCH_ROM_MBC5(b) \
514 _current_bank = (b), \
515 *(uint8_t *)0x3000 = 0, \
516 *(uint8_t *)0x2000 = (b)
524 #define SWITCH_ROM_MBC5_8M(b) \
525 *(uint8_t *)0x3000 = ((uint16_t)(b) >> 8), \
526 *(uint8_t *)0x2000 = (b)
531 #define SWITCH_RAM_MBC5(b) \
532 *(uint8_t *)0x4000 = (b)
536 #define ENABLE_RAM_MBC5 \
537 *(uint8_t *)0x0000 = 0x0A
541 #define DISABLE_RAM_MBC5 \
542 *(uint8_t *)0x0000 = 0x00
705 #define DISPLAY_OFF \
710 #define HIDE_LEFT_COLUMN
714 #define SHOW_LEFT_COLUMN
726 LCDC_REG&=~LCDCF_BGON
732 LCDC_REG|=LCDCF_WINON
738 LCDC_REG&=~LCDCF_WINON
743 #define SHOW_SPRITES \
744 LCDC_REG|=LCDCF_OBJON
749 #define HIDE_SPRITES \
750 LCDC_REG&=~LCDCF_OBJON
755 #define SPRITES_8x16 \
756 LCDC_REG|=LCDCF_OBJ16
761 #define SPRITES_8x8 \
762 LCDC_REG&=~LCDCF_OBJ16
788 #define COMPAT_PALETTE(C0,C1,C2,C3) ((uint8_t)(((C3) << 6) | ((C2) << 4) | ((C1) << 2) | (C0)))
820 #define set_bkg_2bpp_data set_bkg_data
909 #define set_tile_map set_bkg_tiles
941 #define set_tile_submap set_bkg_submap
972 #define set_tile_xy set_bkg_tile_xy
1218 #define set_sprite_2bpp_data set_sprite_data
1273 #define DISABLE_OAM_DMA \
1274 _shadow_OAM_base = 0
1278 #define DISABLE_VBL_TRANSFER DISABLE_OAM_DMA
1280 #define ENABLE_OAM_DMA \
1281 _shadow_OAM_base = (uint8_t)((uint16_t)&shadow_OAM >> 8)
1285 #define ENABLE_VBL_TRANSFER ENABLE_OAM_DMA
1289 #define MAX_HARDWARE_SPRITES 40
1404 itm->
y+=
y, itm->
x+=
x;
1545 if (first_tile < 256) {
1587 #define fill_rect fill_bkg_rect
uint8_t get_sprite_prop(uint8_t nb)
Definition: gb.h:1369
volatile uint8_t _io_status
unsigned char uint8_t
Definition: stdint.h:51
void waitpadup() __preserves_regs(a
uint8_t x
Definition: gb.h:1259
void move_bkg(uint8_t x, uint8_t y)
Definition: gb.h:996
signed char int8_t
Definition: stdint.h:43
void fill_bkg_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL __preserves_regs(b
void hiramcpy(uint8_t dst, const void *src, uint8_t n) OLDCALL __preserves_regs(b
volatile struct OAM_item_t shadow_OAM[]
uint8_t npads
Definition: gb.h:593
struct OAM_item_t OAM_item_t
void get_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL __preserves_regs(b
__REG _current_bank
Definition: gb.h:414
void get_data(uint8_t *data, uint8_t *vram_addr, uint16_t len) OLDCALL __preserves_regs(b
void set_sprite_prop(uint8_t nb, uint8_t prop)
Definition: gb.h:1359
#define __REG
Definition: hardware.h:14
__REG SCX_REG
Definition: hardware.h:261
void set_sprite_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
void set_bkg_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w) OLDCALL
Definition: sms.h:573
uint8_t joypad_init(uint8_t npads, joypads_t *joypads) OLDCALL
uint8_t * set_bkg_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL __preserves_regs(b
__REG _shadow_OAM_base
Definition: gb.h:1271
uint8_t waitpad(uint8_t mask) OLDCALL __preserves_regs(b
uint8_t get_bkg_tile_xy(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
void set_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL __preserves_regs(b
void mode(uint8_t m) OLDCALL
void disable_interrupts() __preserves_regs(a
unsigned short int uint16_t
Definition: stdint.h:52
uint8_t c
Definition: gb.h:324
uint8_t get_vram_byte(uint8_t *addr) OLDCALL __preserves_regs(b
void set_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL __preserves_regs(b
uint8_t joypad() OLDCALL __preserves_regs(b
void delay(uint16_t d) OLDCALL
void add_LCD(int_handler h) OLDCALL
__REG IF_REG
Definition: hardware.h:84
uint8_t l
Definition: gb.h:564
void nowait_int_handler()
void get_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, uint8_t *tiles) OLDCALL __preserves_regs(b
void add_JOY(int_handler h) OLDCALL
__REG WX_REG
Definition: hardware.h:277
void fill_win_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL __preserves_regs(b
void remove_SIO(int_handler h) OLDCALL
uint8_t * get_win_xy_addr(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
volatile uint16_t sys_time
void enable_interrupts() __preserves_regs(a
uint8_t cancel_pending_interrupts()
Definition: gb.h:308
void get_sprite_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b
void joypad_ex(joypads_t *joypads) OLDCALL __preserves_regs(b
void vmemset(void *s, uint8_t c, size_t n) OLDCALL __preserves_regs(b
void init_bkg(uint8_t c) OLDCALL __preserves_regs(b
void e
Definition: gb.h:585
void set_bkg_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
uint8_t get_win_tile_xy(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
uint8_t * set_win_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL __preserves_regs(b
void set_native_tile_data(uint16_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:1544
void add_SIO(int_handler h) OLDCALL
void set_bkg_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
void SET_SHADOW_OAM_ADDRESS(void *address)
Definition: gb.h:1293
void get_bkg_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b
void(* int_handler)(void) NONBANKED
Definition: gb.h:159
void display_off() __preserves_regs(b
uint16_t _current_1bpp_colors
void move_sprite(uint8_t nb, uint8_t x, uint8_t y)
Definition: gb.h:1386
void set_1bpp_colors_ex(uint8_t fgcolor, uint8_t bgcolor, uint8_t mode) OLDCALL
void b
Definition: gb.h:585
void scroll_sprite(uint8_t nb, int8_t x, int8_t y)
Definition: gb.h:1402
void set_win_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
#define OLDCALL
Definition: types.h:21
uint8_t h
Definition: gb.h:564
void d
Definition: gb.h:585
void set_data(uint8_t *vram_addr, const uint8_t *data, uint16_t len) OLDCALL __preserves_regs(b
void scroll_win(int8_t x, int8_t y)
Definition: gb.h:1196
void get_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL __preserves_regs(b
#define NONBANKED
Definition: types.h:12
void set_sprite_tile(uint8_t nb, uint8_t tile)
Definition: gb.h:1313
uint8_t tile
Definition: gb.h:1260
void scroll_bkg(int8_t x, int8_t y)
Definition: gb.h:1010
uint8_t * get_bkg_xy_addr(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
void add_TIM(int_handler h) OLDCALL
void set_tile_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data, uint8_t base) OLDCALL __preserves_regs(b
void wait_vbl_done() __preserves_regs(b
uint8_t get_sprite_tile(uint8_t nb)
Definition: gb.h:1324
void add_VBL(int_handler h) OLDCALL
void set_interrupts(uint8_t flags) OLDCALL __preserves_regs(b
__REG WY_REG
Definition: hardware.h:275
void remove_LCD(int_handler h) OLDCALL
void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len) OLDCALL __preserves_regs(b
void set_vram_byte(uint8_t *addr, uint8_t v) OLDCALL __preserves_regs(b
void remove_TIM(int_handler h) OLDCALL
void set_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles) OLDCALL __preserves_regs(b
void set_2bpp_palette(uint16_t palette)
Definition: gb.h:792
uint8_t y
Definition: gb.h:1259
void remove_VBL(int_handler h) OLDCALL
void move_win(uint8_t x, uint8_t y)
Definition: gb.h:1182
uint8_t prop
Definition: gb.h:1261
void remove_JOY(int_handler h) OLDCALL
void get_win_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b
void set_win_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w) OLDCALL
Definition: sms.h:576
__REG SCY_REG
Definition: hardware.h:259
void set_sprite_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
void hide_sprite(uint8_t nb)
Definition: gb.h:1412
uint8_t get_mode() OLDCALL __preserves_regs(b
void init_win(uint8_t c) OLDCALL __preserves_regs(b
uint8_t joy3
Definition: gb.h:596
void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor)
Definition: gb.h:798
void set_win_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b