GBDK 2020 Docs  4.2.0
API Documentation for GBDK 2020
gb.h
Go to the documentation of this file.
1 
4 #ifndef _GB_H
5 #define _GB_H
6 
7 #include <types.h>
8 #include <stdint.h>
9 #include <gbdk/version.h>
10 #include <gb/hardware.h>
11 
12 // Here NINTENDO means Game Boy & related clones
13 #define NINTENDO
14 
15 #ifdef SEGA
16 #undef SEGA
17 #endif
18 
19 #ifdef NINTENDO_NES
20 #undef NINTENDO_NES
21 #endif
22 
23 #ifdef MSX
24 #undef MSX
25 #endif
26 
27 #if defined(__TARGET_ap)
28 #define ANALOGUEPOCKET
29 #elif defined(__TARGET_gb)
30 #define GAMEBOY
31 #elif defined(__TARGET_duck)
32 #define MEGADUCK
33 #endif
34 
35 
49 #define J_UP 0x04U
50 #define J_DOWN 0x08U
51 #define J_LEFT 0x02U
52 #define J_RIGHT 0x01U
53 #define J_A 0x10U
54 #define J_B 0x20U
55 #define J_SELECT 0x40U
56 #define J_START 0x80U
57 
62 #define M_DRAWING 0x01U
63 #define M_TEXT_OUT 0x02U
64 #define M_TEXT_INOUT 0x03U
70 #define M_NO_SCROLL 0x04U
74 #define M_NO_INTERP 0x08U
75 
80 #define S_PALETTE 0x10U
84 #define S_FLIPX 0x20U
88 #define S_FLIPY 0x40U
93 #define S_PRIORITY 0x80U
97 #define S_PAL(n) n
98 
99 /* Interrupt flags */
102 #define EMPTY_IFLAG 0x00U
108 #define VBL_IFLAG 0x01U
112 #define LCD_IFLAG 0x02U
116 #define TIM_IFLAG 0x04U
120 #define SIO_IFLAG 0x08U
124 #define JOY_IFLAG 0x10U
125 
126 
127 /* DMG Palettes */
128 #define DMG_BLACK 0x03
129 #define DMG_DARK_GRAY 0x02
130 #define DMG_LITE_GRAY 0x01
131 #define DMG_WHITE 0x00
151 #define DMG_PALETTE(C0, C1, C2, C3) ((uint8_t)((((C3) & 0x03) << 6) | (((C2) & 0x03) << 4) | (((C1) & 0x03) << 2) | ((C0) & 0x03)))
152 
153 /* Limits */
156 #define SCREENWIDTH DEVICE_SCREEN_PX_WIDTH
159 #define SCREENHEIGHT DEVICE_SCREEN_PX_HEIGHT
162 #define MINWNDPOSX DEVICE_WINDOW_PX_OFFSET_X
165 #define MINWNDPOSY DEVICE_WINDOW_PX_OFFSET_Y
168 #define MAXWNDPOSX (DEVICE_WINDOW_PX_OFFSET_X + DEVICE_SCREEN_PX_WIDTH - 1)
171 #define MAXWNDPOSY (DEVICE_WINDOW_PX_OFFSET_Y + DEVICE_SCREEN_PX_HEIGHT - 1)
172 
173 
176 typedef void (*int_handler)(void) NONBANKED;
177 
186 
191 
196 
209 
214 
239 
279 
294 
311 
328 
329 
345 
346 
363 
364 
377 void wait_int_handler(void);
378 
382  return IF_REG = 0;
383 }
384 
391 void mode(uint8_t m);
392 
398 
403 extern uint8_t _cpu;
404 
407 #define DMG_TYPE 0x01
410 #define MGB_TYPE 0xFF
413 #define CGB_TYPE 0x11
414 
419 extern uint8_t _is_GBA;
420 
423 #define GBA_NOT_DETECTED 0x00
426 #define GBA_DETECTED 0x01
427 
430 #define DEVICE_SUPPORTS_COLOR (_cpu == CGB_TYPE)
431 
438 extern volatile uint16_t sys_time;
439 
440 
441 
449 void send_byte(void);
450 
458 void receive_byte(void);
459 
461 extern volatile uint8_t _io_status;
462 
465 extern volatile uint8_t _io_in;
466 
469 extern volatile uint8_t _io_out;
470 
471 /* Status codes */
473 #define IO_IDLE 0x00U
475 #define IO_SENDING 0x01U
477 #define IO_RECEIVING 0x02U
479 #define IO_ERROR 0x04U
480 
481 
482 
494 #define CURRENT_BANK _current_bank
495 
505 #ifndef BANK
506 #define BANK(VARNAME) ( (uint8_t) & __bank_ ## VARNAME )
507 #endif
508 
521 #define BANKREF(VARNAME) void __func_ ## VARNAME(void) __banked __naked { \
522 __asm \
523  .local b___func_ ## VARNAME \
524  ___bank_ ## VARNAME = b___func_ ## VARNAME \
525  .globl ___bank_ ## VARNAME \
526 __endasm; \
527 }
528 
538 #define BANKREF_EXTERN(VARNAME) extern const void __bank_ ## VARNAME;
539 
555 #define SWITCH_ROM(b) (_current_bank = (b), rROMB0 = (b))
556 
564 #define SWITCH_RAM(b) (rRAMB = (b))
565 
566 #define ENABLE_RAM (rRAMG = 0x0A)
567 
568 #define DISABLE_RAM (rRAMG = 0x00)
569 
573 #define SWITCH_ROM_MEGADUCK(b) SWITCH_ROM(b)
574 
583 #define SWITCH_ROM_MBC1(b) SWITCH_ROM(b)
584 
592 #define SWITCH_RAM_MBC1(b) SWITCH_RAM(b)
593 
596 #define ENABLE_RAM_MBC1 ENABLE_RAM
597 
600 #define DISABLE_RAM_MBC1 DISABLE_RAM
601 
602 #define SWITCH_16_8_MODE_MBC1 (*(volatile uint8_t *)0x6000 = 0x00)
603 
604 #define SWITCH_4_32_MODE_MBC1 (*(volatile uint8_t *)0x6000 = 0x01)
605 
618 #define SWITCH_ROM_MBC5(b) (_current_bank = (b), rROMB1 = 0, rROMB0 = (b))
619 
633 #define SWITCH_ROM_MBC5_8M(b) (rROMB1 = ((uint16_t)(b) >> 8), rROMB0 = (b))
634 
640 #define SWITCH_RAM_MBC5(b) SWITCH_RAM(b)
641 
644 #define ENABLE_RAM_MBC5 ENABLE_RAM
645 
648 #define DISABLE_RAM_MBC5 DISABLE_RAM
649 
650 
651 
657 
658 
659 
671 
685 
691 void waitpadup(void) PRESERVES_REGS(a, b, c, d, e, h, l);
692 
698 typedef struct {
700  union {
701  struct {
702  uint8_t joy0, joy1, joy2, joy3;
703  };
704  uint8_t joypads[4];
705  };
706 } joypads_t;
707 
718 
726 
727 
728 
737 inline void enable_interrupts(void) PRESERVES_REGS(a, b, c, d, e, h, l) {
738  __asm__("ei");
739 }
740 
753 inline void disable_interrupts(void) PRESERVES_REGS(a, b, c, d, e, h, l) {
754  __asm__("di");
755 }
756 
768 
772 void reset(void);
773 
785 void vsync(void) PRESERVES_REGS(b, c, d, e, h, l);
786 
790 void wait_vbl_done(void) PRESERVES_REGS(b, c, d, e, h, l);
791 
797 void display_off(void) PRESERVES_REGS(b, c, d, e, h, l);
798 
801 void refresh_OAM(void) PRESERVES_REGS(b, c, d, e, h, l);
802 
803 
809 void hiramcpy(uint8_t dst, const void *src, uint8_t n) OLDCALL PRESERVES_REGS(b, c);
810 
811 
815 #define DISPLAY_ON \
816  LCDC_REG|=LCDCF_ON
817 
821 #define DISPLAY_OFF \
822  display_off();
823 
826 #define HIDE_LEFT_COLUMN
827 
830 #define SHOW_LEFT_COLUMN
831 
835 #define SHOW_BKG \
836  LCDC_REG|=LCDCF_BGON
837 
841 #define HIDE_BKG \
842  LCDC_REG&=~LCDCF_BGON
843 
853 #define SHOW_WIN \
854  LCDC_REG|=LCDCF_WINON
855 
859 #define HIDE_WIN \
860  LCDC_REG&=~LCDCF_WINON
861 
865 #define SHOW_SPRITES \
866  LCDC_REG|=LCDCF_OBJON
867 
873 #define HIDE_SPRITES \
874  LCDC_REG&=~LCDCF_OBJON
875 
879 #define SPRITES_8x16 \
880  LCDC_REG|=LCDCF_OBJ16
881 
885 #define SPRITES_8x8 \
886  LCDC_REG&=~LCDCF_OBJ16
887 
888 
889 
897 
910 
911 
916 
917 #define COMPAT_PALETTE(C0,C1,C2,C3) ((uint8_t)(((C3) << 6) | ((C2) << 4) | ((C1) << 2) | (C0)))
918 
921 inline void set_2bpp_palette(uint16_t palette) {
922  palette;
923 }
924 
926 
935 
955 inline void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor) {
956  set_1bpp_colors_ex(fgcolor, bgcolor, 0);
957 }
958 
976 void set_bkg_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
977 #define set_bkg_2bpp_data set_bkg_data
978 
997 void set_bkg_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
998 
1019 void get_bkg_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1020 
1021 
1075 #define set_tile_map set_bkg_tiles
1076 
1077 
1078 extern uint8_t _map_tile_offset;
1079 
1098 inline void set_bkg_based_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles, uint8_t base_tile) {
1099  _map_tile_offset = base_tile;
1100  set_bkg_tiles(x, y, w, h, tiles);
1101  _map_tile_offset = 0;
1102 }
1103 
1104 
1153 inline void set_bkg_attributes(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles)
1154 {
1156  set_bkg_tiles(x, y, w, h, tiles);
1157  VBK_REG = VBK_TILES;
1158 }
1159 
1160 
1206 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;
1207 #define set_tile_submap set_bkg_submap
1208 
1209 
1211 
1231 inline void set_bkg_based_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w, uint8_t base_tile) {
1232  _submap_tile_offset = base_tile;
1233  set_bkg_submap(x, y, w, h, map, map_w);
1234  _submap_tile_offset = 0;
1235 }
1236 
1237 
1285 inline void set_bkg_submap_attributes(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w)
1286 {
1288  set_bkg_submap(x, y, w, h, map, map_w);
1289  VBK_REG = VBK_TILES;
1290 }
1291 
1292 
1317 
1318 
1327 #define set_tile_xy set_bkg_tile_xy
1328 
1338 {
1339  uint8_t* addr;
1341  addr = set_bkg_tile_xy(x, y, a);
1342  VBK_REG = VBK_TILES;
1343  return addr;
1344 }
1345 #define set_attribute_xy set_bkg_attribute_xy
1346 
1362 
1363 
1377 inline void move_bkg(uint8_t x, uint8_t y) {
1378  SCX_REG=x, SCY_REG=y;
1379 }
1380 
1381 
1391 inline void scroll_bkg(int8_t x, int8_t y) {
1392  SCX_REG+=x, SCY_REG+=y;
1393 }
1394 
1395 
1396 
1401 
1415 void set_win_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1416 
1417 
1436 void set_win_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1437 
1438 
1456 void get_win_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1457 
1458 
1491 
1492 
1511 inline void set_win_based_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles, uint8_t base_tile) {
1512  _map_tile_offset = base_tile;
1513  set_win_tiles(x, y, w, h, tiles);
1514  _map_tile_offset = 0;
1515 }
1516 
1564 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;
1565 
1566 
1586 inline void set_win_based_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w, uint8_t base_tile) {
1587  _submap_tile_offset = base_tile;
1588  set_win_submap(x, y, w, h, map, map_w);
1589  _submap_tile_offset = 0;
1590 }
1591 
1592 
1617 
1618 
1627 
1628 
1642 
1643 
1655 inline void move_win(uint8_t x, uint8_t y) {
1656  WX_REG=x, WY_REG=y;
1657 }
1658 
1659 
1669 inline void scroll_win(int8_t x, int8_t y) {
1670  WX_REG+=x, WY_REG+=y;
1671 }
1672 
1673 
1674 
1690 void set_sprite_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1691 #define set_sprite_2bpp_data set_sprite_data
1692 
1711 void set_sprite_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1712 
1731 void get_sprite_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1732 
1733 
1740 typedef struct OAM_item_t {
1741  uint8_t y, x; //< X, Y Coordinates of the sprite on screen
1742  uint8_t tile; //< Sprite tile number
1743  uint8_t prop; //< OAM Property Flags
1745 
1746 
1749 extern volatile struct OAM_item_t shadow_OAM[];
1750 
1754 
1755 #define DISABLE_OAM_DMA \
1756  _shadow_OAM_base = 0
1757 
1760 #define DISABLE_VBL_TRANSFER DISABLE_OAM_DMA
1761 
1762 #define ENABLE_OAM_DMA \
1763  _shadow_OAM_base = (uint8_t)((uint16_t)&shadow_OAM >> 8)
1764 
1767 #define ENABLE_VBL_TRANSFER ENABLE_OAM_DMA
1768 
1771 #define MAX_HARDWARE_SPRITES 40
1772 
1775 #define HARDWARE_SPRITE_CAN_FLIP_X 1
1776 
1779 #define HARDWARE_SPRITE_CAN_FLIP_Y 1
1780 
1783 inline void SET_SHADOW_OAM_ADDRESS(void * address) {
1784  _shadow_OAM_base = (uint8_t)((uint16_t)address >> 8);
1785 }
1786 
1804  shadow_OAM[nb].tile=tile;
1805 }
1806 
1807 
1815  return shadow_OAM[nb].tile;
1816 }
1817 
1818 
1850  shadow_OAM[nb].prop=prop;
1851 }
1852 
1853 
1860  return shadow_OAM[nb].prop;
1861 }
1862 
1863 
1876 inline void move_sprite(uint8_t nb, uint8_t x, uint8_t y) {
1877  OAM_item_t * itm = &shadow_OAM[nb];
1878  itm->y=y, itm->x=x;
1879 }
1880 
1881 
1892 inline void scroll_sprite(uint8_t nb, int8_t x, int8_t y) {
1893  OAM_item_t * itm = &shadow_OAM[nb];
1894  itm->y+=y, itm->x+=x;
1895 }
1896 
1897 
1904 inline void hide_sprite(uint8_t nb) {
1905  shadow_OAM[nb].y = 0;
1906 }
1907 
1908 
1909 
1925 void set_data(uint8_t *vram_addr, const uint8_t *data, uint16_t len);
1926 
1927 
1949 void get_data(uint8_t *data, uint8_t *vram_addr, uint16_t len);
1950 
1963 void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len);
1964 
1965 
1966 
1990 void set_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles) OLDCALL;
1991 
2002 void set_tile_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data, uint8_t base) OLDCALL PRESERVES_REGS(b, c);
2003 
2031 void get_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, uint8_t *tiles) OLDCALL;
2032 
2033 
2048 inline void set_native_tile_data(uint16_t first_tile, uint8_t nb_tiles, const uint8_t *data) {
2049  if (first_tile < 256) {
2050  set_bkg_data(first_tile, nb_tiles, data);
2051  } else {
2052  set_sprite_data(first_tile - 256, nb_tiles, data);
2053  }
2054 }
2055 
2071 inline void set_bkg_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) {
2072  set_bkg_data(first_tile, nb_tiles, data);
2073 }
2074 
2088 inline void set_sprite_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) {
2089  set_sprite_data(first_tile, nb_tiles, data);
2090 }
2091 
2098 
2105 
2113 void vmemset (void *s, uint8_t c, size_t n) OLDCALL PRESERVES_REGS(b, c);
2114 
2115 
2116 
2126 #define fill_rect fill_bkg_rect
2127 
2137 
2138 #endif /* _GB_H */
#define OLDCALL
Definition: types.h:21
#define NONBANKED
Definition: types.h:40
#define PRESERVES_REGS(...)
Definition: types.h:32
#define __REG
Definition: hardware.h:14
__REG WY_REG
Definition: hardware.h:301
__REG SCY_REG
Definition: hardware.h:285
__REG WX_REG
Definition: hardware.h:303
#define VBK_ATTRIBUTES
Definition: hardware.h:318
__REG IF_REG
Definition: hardware.h:84
__REG VBK_REG
Definition: hardware.h:312
#define VBK_TILES
Definition: hardware.h:316
__REG SCX_REG
Definition: hardware.h:287
volatile uint8_t _io_in
void set_sprite_tile(uint8_t nb, uint8_t tile)
Definition: gb.h:1803
uint8_t d
Definition: gb.h:397
uint8_t c
Definition: gb.h:397
void set_bkg_attributes(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles)
Definition: gb.h:1153
uint8_t * set_win_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL PRESERVES_REGS(b
void send_byte(void)
void scroll_win(int8_t x, int8_t y)
Definition: gb.h:1669
void refresh_OAM(void) PRESERVES_REGS(b
void set_win_based_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w, uint8_t base_tile)
Definition: gb.h:1586
void set_bkg_submap_attributes(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w)
Definition: gb.h:1285
void set_1bpp_colors_ex(uint8_t fgcolor, uint8_t bgcolor, uint8_t mode) OLDCALL
uint8_t h
Definition: gb.h:397
void set_bkg_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void scroll_bkg(int8_t x, int8_t y)
Definition: gb.h:1391
uint16_t _current_1bpp_colors
void set_vram_byte(uint8_t *addr, uint8_t v) PRESERVES_REGS(b
void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len)
uint8_t get_win_tile_xy(uint8_t x, uint8_t y) OLDCALL PRESERVES_REGS(b
volatile uint8_t _io_status
void remove_SIO(int_handler h)
void receive_byte(void)
volatile struct OAM_item_t shadow_OAM[]
void reset(void)
uint8_t * set_bkg_attribute_xy(uint8_t x, uint8_t y, uint8_t a)
Definition: gb.h:1337
uint8_t joypad(void) PRESERVES_REGS(b
void init_bkg(uint8_t c) OLDCALL PRESERVES_REGS(b
void b
Definition: gb.h:691
void wait_int_handler(void)
void nowait_int_handler(void)
uint8_t _is_GBA
uint8_t get_bkg_tile_xy(uint8_t x, uint8_t y) OLDCALL PRESERVES_REGS(b
void get_bkg_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) 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 set_data(uint8_t *vram_addr, const uint8_t *data, uint16_t len)
void add_low_priority_TIM(int_handler h)
void set_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles) OLDCALL
void remove_TIM(int_handler h)
void move_bkg(uint8_t x, uint8_t y)
Definition: gb.h:1377
void remove_JOY(int_handler h)
void remove_LCD(int_handler h)
void set_native_tile_data(uint16_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:2048
uint8_t get_sprite_prop(uint8_t nb)
Definition: gb.h:1859
void scroll_sprite(uint8_t nb, int8_t x, int8_t y)
Definition: gb.h:1892
void set_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL PRESERVES_REGS(b
void set_bkg_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void set_win_based_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles, uint8_t base_tile)
Definition: gb.h:1511
void fill_bkg_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL PRESERVES_REGS(b
uint8_t * set_bkg_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL PRESERVES_REGS(b
void get_data(uint8_t *data, uint8_t *vram_addr, uint16_t len)
volatile uint16_t sys_time
void delay(uint16_t d) PRESERVES_REGS(h
__REG _shadow_OAM_base
Definition: gb.h:1753
void SET_SHADOW_OAM_ADDRESS(void *address)
Definition: gb.h:1783
void get_win_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b
void set_bkg_based_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles, uint8_t base_tile)
Definition: gb.h:1098
void wait_vbl_done(void) PRESERVES_REGS(b
void add_VBL(int_handler h)
uint8_t _cpu
void get_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL PRESERVES_REGS(b
struct OAM_item_t OAM_item_t
uint8_t * get_bkg_xy_addr(uint8_t x, uint8_t y) OLDCALL PRESERVES_REGS(b
void(* int_handler)(void) NONBANKED
Definition: gb.h:176
void hiramcpy(uint8_t dst, const void *src, uint8_t n) OLDCALL PRESERVES_REGS(b
void vmemset(void *s, uint8_t c, size_t n) OLDCALL PRESERVES_REGS(b
__REG _current_bank
Definition: gb.h:493
void set_sprite_prop(uint8_t nb, uint8_t prop)
Definition: gb.h:1849
void add_TIM(int_handler h)
uint8_t get_mode(void) PRESERVES_REGS(b
void set_2bpp_palette(uint16_t palette)
Definition: gb.h:921
void get_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL PRESERVES_REGS(b
uint8_t * get_win_xy_addr(uint8_t x, uint8_t y) OLDCALL PRESERVES_REGS(b
uint8_t _map_tile_offset
void set_sprite_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:2088
void enable_interrupts(void) PRESERVES_REGS(a
void display_off(void) PRESERVES_REGS(b
void set_sprite_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void move_sprite(uint8_t nb, uint8_t x, uint8_t y)
Definition: gb.h:1876
uint8_t _submap_tile_offset
void joypad_ex(joypads_t *joypads) PRESERVES_REGS(b
uint8_t joypad_init(uint8_t npads, joypads_t *joypads) OLDCALL
uint8_t waitpad(uint8_t mask) PRESERVES_REGS(b
void set_bkg_based_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w, uint8_t base_tile)
Definition: gb.h:1231
void set_tile_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data, uint8_t base) OLDCALL PRESERVES_REGS(b
void set_win_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void remove_VBL(int_handler h)
volatile uint8_t _io_out
void set_bkg_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:2071
void set_win_1bpp_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:1904
void fill_win_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL PRESERVES_REGS(b
void waitpadup(void) PRESERVES_REGS(a
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: msx.h:562
void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor)
Definition: gb.h:955
void get_sprite_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b
uint8_t cancel_pending_interrupts(void)
Definition: gb.h:381
void add_LCD(int_handler h)
uint8_t get_vram_byte(uint8_t *addr) PRESERVES_REGS(b
void add_JOY(int_handler h)
void disable_interrupts(void) PRESERVES_REGS(a
void set_sprite_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void add_SIO(int_handler h)
void set_interrupts(uint8_t flags) PRESERVES_REGS(b
uint8_t e
Definition: gb.h:397
void move_win(uint8_t x, uint8_t y)
Definition: gb.h:1655
void vsync(void) PRESERVES_REGS(b
uint8_t get_sprite_tile(uint8_t nb)
Definition: gb.h:1814
void init_win(uint8_t c) OLDCALL PRESERVES_REGS(b
uint8_t l
Definition: gb.h:397
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: msx.h:565
void get_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, uint8_t *tiles) OLDCALL
void mode(uint8_t m)
unsigned char uint8_t
Definition: stdint.h:51
unsigned short int uint16_t
Definition: stdint.h:52
signed char int8_t
Definition: stdint.h:43
Definition: gb.h:1740
uint8_t x
Definition: gb.h:1741
uint8_t prop
Definition: gb.h:1743
uint8_t tile
Definition: gb.h:1742
uint8_t y
Definition: gb.h:1741
Definition: gb.h:698
uint8_t joy0
Definition: gb.h:702
uint8_t npads
Definition: gb.h:699