GBDK 2020 Docs  4.5.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#define SYSTEM_60HZ 0x00
28#define SYSTEM_50HZ 0x01
29
30#if defined(__TARGET_ap)
31#define ANALOGUEPOCKET
32#elif defined(__TARGET_gb)
33#define GAMEBOY
34#elif defined(__TARGET_duck)
35#define MEGADUCK
36#endif
37
38
52#define J_UP 0x04U
53#define J_DOWN 0x08U
54#define J_LEFT 0x02U
55#define J_RIGHT 0x01U
56#define J_A 0x10U
57#define J_B 0x20U
58#define J_SELECT 0x40U
59#define J_START 0x80U
60
65#define M_DRAWING 0x01U
66#define M_TEXT_OUT 0x02U
67#define M_TEXT_INOUT 0x03U
73#define M_NO_SCROLL 0x04U
77#define M_NO_INTERP 0x08U
78
83#define S_BANK 0x08U
88#define S_PALETTE 0x10U
92#define S_FLIPX 0x20U
96#define S_FLIPY 0x40U
101#define S_PRIORITY 0x80U
105#define S_PAL(n) n
106
107/* Interrupt flags */
110#define EMPTY_IFLAG 0x00U
116#define VBL_IFLAG 0x01U
120#define LCD_IFLAG 0x02U
124#define TIM_IFLAG 0x04U
128#define SIO_IFLAG 0x08U
132#define JOY_IFLAG 0x10U
133
134
135/* DMG Palettes */
136#define DMG_BLACK 0x03
137#define DMG_DARK_GRAY 0x02
138#define DMG_LITE_GRAY 0x01
139#define DMG_WHITE 0x00
159#define DMG_PALETTE(C0, C1, C2, C3) ((uint8_t)((((C3) & 0x03) << 6) | (((C2) & 0x03) << 4) | (((C1) & 0x03) << 2) | ((C0) & 0x03)))
160
161/* Limits */
164#define SCREENWIDTH DEVICE_SCREEN_PX_WIDTH
167#define SCREENHEIGHT DEVICE_SCREEN_PX_HEIGHT
170#define MINWNDPOSX DEVICE_WINDOW_PX_OFFSET_X
173#define MINWNDPOSY DEVICE_WINDOW_PX_OFFSET_Y
176#define MAXWNDPOSX (DEVICE_WINDOW_PX_OFFSET_X + DEVICE_SCREEN_PX_WIDTH - 1)
179#define MAXWNDPOSY (DEVICE_WINDOW_PX_OFFSET_Y + DEVICE_SCREEN_PX_HEIGHT - 1)
180
181
184typedef void (*int_handler)(void) NONBANKED;
185
194
199
204
217
222
247
287
307
324
341
342
367
368
385
386
400
404 return IF_REG = 0;
405}
406
413void mode(uint8_t m);
414
420
426inline uint8_t get_system(void) {
427 return SYSTEM_60HZ;
428}
429
434extern uint8_t _cpu;
435
438#define DMG_TYPE 0x01
441#define MGB_TYPE 0xFF
444#define CGB_TYPE 0x11
445
450extern uint8_t _is_GBA;
451
454#define GBA_NOT_DETECTED 0x00
457#define GBA_DETECTED 0x01
458
461#define DEVICE_SUPPORTS_COLOR (_cpu == CGB_TYPE)
462
469extern volatile uint16_t sys_time;
470
477#define VBL_DONE _vbl_done
478
479
487void send_byte(void);
488
496void receive_byte(void);
497
499extern volatile uint8_t _io_status;
500
503extern volatile uint8_t _io_in;
504
507extern volatile uint8_t _io_out;
508
509/* Status codes */
511#define IO_IDLE 0x00U
513#define IO_SENDING 0x01U
515#define IO_RECEIVING 0x02U
517#define IO_ERROR 0x04U
518
519
520
535#define CURRENT_BANK _current_bank
536
546#ifndef BANK
547#define BANK(VARNAME) ( (uint8_t) & __bank_ ## VARNAME )
548#endif
549
562#define BANKREF(VARNAME) void __func_ ## VARNAME(void) __banked __naked { \
563__asm \
564 .local b___func_ ## VARNAME \
565 ___bank_ ## VARNAME = b___func_ ## VARNAME \
566 .globl ___bank_ ## VARNAME \
567__endasm; \
568}
569
579#define BANKREF_EXTERN(VARNAME) extern const void __bank_ ## VARNAME;
580
596#define SWITCH_ROM(b) (_current_bank = (b), rROMB0 = (b))
597
598#if defined(__TARGET_duck)
599
600#define SWITCH_RAM(b) (0)
601
602#define ENABLE_RAM
603
604#define DISABLE_RAM
605
606#else
607
615#define SWITCH_RAM(b) (rRAMB = (b))
616
619#define ENABLE_RAM (rRAMG = 0x0A)
620
623#define DISABLE_RAM (rRAMG = 0x00)
624
625#endif
626
630#define SWITCH_ROM_MEGADUCK(b) SWITCH_ROM(b)
631
640#define SWITCH_ROM_MBC1(b) SWITCH_ROM(b)
641
649#define SWITCH_RAM_MBC1(b) SWITCH_RAM(b)
650
653#define ENABLE_RAM_MBC1 ENABLE_RAM
654
657#define DISABLE_RAM_MBC1 DISABLE_RAM
658
659#define SWITCH_16_8_MODE_MBC1 (*(volatile uint8_t *)0x6000 = 0x00)
660
661#define SWITCH_4_32_MODE_MBC1 (*(volatile uint8_t *)0x6000 = 0x01)
662
675#define SWITCH_ROM_MBC5(b) (_current_bank = (b), rROMB1 = 0, rROMB0 = (b))
676
690#define SWITCH_ROM_MBC5_8M(b) (rROMB1 = ((uint16_t)(b) >> 8), rROMB0 = (b))
691
697#define SWITCH_RAM_MBC5(b) SWITCH_RAM(b)
698
701#define ENABLE_RAM_MBC5 ENABLE_RAM
702
705#define DISABLE_RAM_MBC5 DISABLE_RAM
706
707
708
714
715
716
728
742
748void waitpadup(void) PRESERVES_REGS(a, b, c, d, e, h, l);
749
755typedef struct {
757 union {
758 struct {
759 uint8_t joy0, joy1, joy2, joy3;
760 };
761 uint8_t joypads[4];
762 };
763} joypads_t;
764
775
783
784
785
794inline void enable_interrupts(void) PRESERVES_REGS(a, b, c, d, e, h, l) {
795 __asm__("ei");
796}
797
810inline void disable_interrupts(void) PRESERVES_REGS(a, b, c, d, e, h, l) {
811 __asm__("di");
812}
813
825
837void reset(void);
838
850void vsync(void) PRESERVES_REGS(b, c, d, e, h, l);
851
855void wait_vbl_done(void) PRESERVES_REGS(b, c, d, e, h, l);
856
862void display_off(void) PRESERVES_REGS(b, c, d, e, h, l);
863
866void refresh_OAM(void) PRESERVES_REGS(b, c, d, e, h, l);
867
868
874void hiramcpy(uint8_t dst, const void *src, uint8_t n) OLDCALL PRESERVES_REGS(b, c);
875
876
880#define DISPLAY_ON \
881 LCDC_REG|=LCDCF_ON
882
888#define DISPLAY_OFF \
889 display_off();
890
893#define HIDE_LEFT_COLUMN
894
897#define SHOW_LEFT_COLUMN
898
901#define SET_BORDER_COLOR(C)
902
912#define SHOW_BKG \
913 LCDC_REG|=LCDCF_BGON
914
924#define HIDE_BKG \
925 LCDC_REG&=~LCDCF_BGON
926
936#define SHOW_WIN \
937 LCDC_REG|=LCDCF_WINON
938
942#define HIDE_WIN \
943 LCDC_REG&=~LCDCF_WINON
944
948#define SHOW_SPRITES \
949 LCDC_REG|=LCDCF_OBJON
950
956#define HIDE_SPRITES \
957 LCDC_REG&=~LCDCF_OBJON
958
962#define SPRITES_8x16 \
963 LCDC_REG|=LCDCF_OBJ16
964
968#define SPRITES_8x8 \
969 LCDC_REG&=~LCDCF_OBJ16
970
971
972
980
993
994
999
1000#define COMPAT_PALETTE(C0,C1,C2,C3) ((uint8_t)(((C3) << 6) | ((C2) << 4) | ((C1) << 2) | (C0)))
1001
1004inline void set_2bpp_palette(uint16_t palette) {
1005 palette;
1006}
1007
1009
1018
1038inline void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor) {
1039 set_1bpp_colors_ex(fgcolor, bgcolor, 0);
1040}
1041
1059void set_bkg_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1060#define set_bkg_2bpp_data set_bkg_data
1061
1080void set_bkg_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1081
1102void get_bkg_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1103
1104
1158#define set_tile_map set_bkg_tiles
1159
1160
1162
1181inline 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) {
1182 _map_tile_offset = base_tile;
1183 set_bkg_tiles(x, y, w, h, tiles);
1184 _map_tile_offset = 0;
1185}
1186
1187
1236inline void set_bkg_attributes(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles)
1237{
1239 set_bkg_tiles(x, y, w, h, tiles);
1241}
1242
1243
1289void set_bkg_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w) OLDCALL;
1290#define set_tile_submap set_bkg_submap
1291
1292
1294
1314inline 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) {
1315 _submap_tile_offset = base_tile;
1316 set_bkg_submap(x, y, w, h, map, map_w);
1318}
1319
1320
1369{
1371 set_bkg_submap(x, y, w, h, map, map_w);
1373}
1374
1375
1400
1401
1410#define set_tile_xy set_bkg_tile_xy
1411
1421{
1422 uint8_t* addr;
1424 addr = set_bkg_tile_xy(x, y, a);
1426 return addr;
1427}
1428#define set_attribute_xy set_bkg_attribute_xy
1429
1445
1446
1460inline void move_bkg(uint8_t x, uint8_t y) {
1461 SCX_REG=x, SCY_REG=y;
1462}
1463
1464
1474inline void scroll_bkg(int8_t x, int8_t y) {
1475 SCX_REG+=x, SCY_REG+=y;
1476}
1477
1478
1479
1484
1498void set_win_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1499
1500
1519void set_win_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1520
1521
1539void get_win_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1540
1541
1574
1575
1594inline 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) {
1595 _map_tile_offset = base_tile;
1596 set_win_tiles(x, y, w, h, tiles);
1597 _map_tile_offset = 0;
1598}
1599
1647void set_win_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w) OLDCALL;
1648
1649
1669inline 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) {
1670 _submap_tile_offset = base_tile;
1671 set_win_submap(x, y, w, h, map, map_w);
1673}
1674
1675
1700
1701
1710
1711
1725
1726
1738inline void move_win(uint8_t x, uint8_t y) {
1739 WX_REG=x, WY_REG=y;
1740}
1741
1742
1752inline void scroll_win(int8_t x, int8_t y) {
1753 WX_REG+=x, WY_REG+=y;
1754}
1755
1756
1757
1773void set_sprite_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1774#define set_sprite_2bpp_data set_sprite_data
1775
1794void set_sprite_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1795
1814void get_sprite_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b, c);
1815
1816
1823typedef struct OAM_item_t {
1824 uint8_t y, x; //< X, Y Coordinates of the sprite on screen
1825 uint8_t tile; //< Sprite tile number
1826 uint8_t prop; //< OAM Property Flags
1828
1829
1832extern volatile struct OAM_item_t shadow_OAM[];
1833
1837
1838#define DISABLE_OAM_DMA \
1839 _shadow_OAM_base = 0
1840
1843#define DISABLE_VBL_TRANSFER DISABLE_OAM_DMA
1844
1845#define ENABLE_OAM_DMA \
1846 _shadow_OAM_base = (uint8_t)((uint16_t)&shadow_OAM >> 8)
1847
1850#define ENABLE_VBL_TRANSFER ENABLE_OAM_DMA
1851
1854#define MAX_HARDWARE_SPRITES 40
1855
1858#define HARDWARE_SPRITE_CAN_FLIP_X 1
1859
1862#define HARDWARE_SPRITE_CAN_FLIP_Y 1
1863
1866inline void SET_SHADOW_OAM_ADDRESS(void * address) {
1867 _shadow_OAM_base = (uint8_t)((uint16_t)address >> 8);
1868}
1869
1887 shadow_OAM[nb].tile=tile;
1888}
1889
1890
1898 return shadow_OAM[nb].tile;
1899}
1900
1901
1946 shadow_OAM[nb].prop=prop;
1947}
1948
1949
1956 return shadow_OAM[nb].prop;
1957}
1958
1959
1973 OAM_item_t * itm = &shadow_OAM[nb];
1974 itm->y=y, itm->x=x;
1975}
1976
1977
1989 OAM_item_t * itm = &shadow_OAM[nb];
1990 itm->y+=y, itm->x+=x;
1991}
1992
1993
2000inline void hide_sprite(uint8_t nb) {
2001 shadow_OAM[nb].y = 0;
2002}
2003
2004
2005
2021void set_data(uint8_t *vram_addr, const uint8_t *data, uint16_t len);
2022
2023
2045void get_data(uint8_t *data, uint8_t *vram_addr, uint16_t len);
2046
2059void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len);
2060
2061
2062
2086void set_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles) OLDCALL;
2087
2098void set_tile_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data, uint8_t base) OLDCALL PRESERVES_REGS(b, c);
2099
2128
2129
2144inline void set_native_tile_data(uint16_t first_tile, uint8_t nb_tiles, const uint8_t *data) {
2145 if (first_tile < 256) {
2146 set_bkg_data(first_tile, nb_tiles, data);
2147 } else {
2148 set_sprite_data(first_tile - 256, nb_tiles, data);
2149 }
2150}
2151
2167inline void set_bkg_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) {
2168 set_bkg_data(first_tile, nb_tiles, data);
2169}
2170
2184inline void set_sprite_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) {
2185 set_sprite_data(first_tile, nb_tiles, data);
2186}
2187
2194
2201
2209void vmemset (void *s, uint8_t c, size_t n) OLDCALL PRESERVES_REGS(b, c);
2210
2211
2212
2222#define fill_rect fill_bkg_rect
2223
2233
2234#endif /* _GB_H */
#define NONBANKED
Definition: types.h:40
#define OLDCALL
Definition: types.h:21
#define PRESERVES_REGS(...)
Definition: types.h:32
__REG IF_REG
Definition: hardware.h:104
__REG SCX_REG
Definition: hardware.h:307
__REG SCY_REG
Definition: hardware.h:305
#define VBK_ATTRIBUTES
Definition: hardware.h:338
__REG VBK_REG
Definition: hardware.h:332
#define VBK_TILES
Definition: hardware.h:336
__REG WX_REG
Definition: hardware.h:323
__REG WY_REG
Definition: hardware.h:321
#define __REG
Definition: hardware.h:14
struct OAM_item_t OAM_item_t
void SET_SHADOW_OAM_ADDRESS(void *address)
Definition: gb.h:1866
#define SYSTEM_60HZ
Definition: gb.h:27
uint8_t _cpu
uint16_t _current_1bpp_colors
__REG _current_bank
Definition: gb.h:534
volatile uint8_t _io_in
volatile uint8_t _io_out
volatile uint8_t _io_status
uint8_t _is_GBA
uint8_t _map_tile_offset
__REG _shadow_OAM_base
Definition: gb.h:1836
uint8_t _submap_tile_offset
__REG _vbl_done
Definition: gb.h:476
void add_JOY(int_handler h)
void add_LCD(int_handler h)
void add_SIO(int_handler h)
void add_TIM(int_handler h)
void add_VBL(int_handler h)
void add_low_priority_TIM(int_handler h)
void b
Definition: gb.h:748
uint8_t c
Definition: gb.h:419
uint8_t cancel_pending_interrupts(void)
Definition: gb.h:403
uint8_t d
Definition: gb.h:419
void delay(uint16_t d) PRESERVES_REGS(h
void disable_interrupts(void) PRESERVES_REGS(a
void display_off(void) PRESERVES_REGS(b
uint8_t e
Definition: gb.h:419
void enable_interrupts(void) PRESERVES_REGS(a
void fill_bkg_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL PRESERVES_REGS(b
void fill_win_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL PRESERVES_REGS(b
void get_bkg_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b
uint8_t get_bkg_tile_xy(uint8_t x, uint8_t y) OLDCALL PRESERVES_REGS(b
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_bkg_xy_addr(uint8_t x, uint8_t y) PRESERVES_REGS(h
void get_data(uint8_t *data, uint8_t *vram_addr, uint16_t len)
uint8_t get_mode(void) PRESERVES_REGS(b
void get_sprite_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b
uint8_t get_sprite_prop(uint8_t nb)
Definition: gb.h:1955
uint8_t get_sprite_tile(uint8_t nb)
Definition: gb.h:1897
uint8_t get_system(void)
Definition: gb.h:426
void get_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, uint8_t *tiles) OLDCALL
uint8_t get_vram_byte(uint8_t *addr) PRESERVES_REGS(b
void get_win_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL PRESERVES_REGS(b
uint8_t get_win_tile_xy(uint8_t x, uint8_t y) OLDCALL PRESERVES_REGS(b
void get_win_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) PRESERVES_REGS(h
uint8_t h
Definition: gb.h:419
void hide_sprite(uint8_t nb)
Definition: gb.h:2000
void hiramcpy(uint8_t dst, const void *src, uint8_t n) OLDCALL PRESERVES_REGS(b
void init_bkg(uint8_t c) OLDCALL PRESERVES_REGS(b
void init_win(uint8_t c) OLDCALL PRESERVES_REGS(b
void(* int_handler)(void) NONBANKED
Definition: gb.h:184
uint8_t joypad(void) PRESERVES_REGS(b
void joypad_ex(joypads_t *joypads) PRESERVES_REGS(b
uint8_t joypad_init(uint8_t npads, joypads_t *joypads) OLDCALL
uint8_t l
Definition: gb.h:419
void mode(uint8_t m)
void move_bkg(uint8_t x, uint8_t y)
Definition: gb.h:1460
void move_sprite(uint8_t nb, uint8_t x, uint8_t y)
Definition: gb.h:1972
void move_win(uint8_t x, uint8_t y)
Definition: gb.h:1738
void nowait_int_handler(void)
void receive_byte(void)
void refresh_OAM(void) PRESERVES_REGS(b
void remove_JOY(int_handler h)
void remove_LCD(int_handler h)
void remove_SIO(int_handler h)
void remove_TIM(int_handler h)
void remove_VBL(int_handler h)
void reset(void)
Definition: nes.h:534
void scroll_bkg(int8_t x, int8_t y)
Definition: gb.h:1474
void scroll_sprite(uint8_t nb, int8_t x, int8_t y)
Definition: gb.h:1988
void scroll_win(int8_t x, int8_t y)
Definition: gb.h:1752
void send_byte(void)
void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor)
Definition: gb.h:1038
void set_1bpp_colors_ex(uint8_t fgcolor, uint8_t bgcolor, uint8_t mode) OLDCALL
void set_2bpp_palette(uint16_t palette)
Definition: gb.h:1004
void set_bkg_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
uint8_t * set_bkg_attribute_xy(uint8_t x, uint8_t y, uint8_t a)
Definition: gb.h:1420
void set_bkg_attributes(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles)
Definition: gb.h:1236
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:1314
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:1181
void set_bkg_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void set_bkg_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:2167
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:627
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:1368
uint8_t * set_bkg_tile_xy(uint8_t x, uint8_t y, uint8_t t)
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_data(uint8_t *vram_addr, const uint8_t *data, uint16_t len)
void set_interrupts(uint8_t flags) PRESERVES_REGS(b
void set_native_tile_data(uint16_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:2144
void set_sprite_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void set_sprite_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL PRESERVES_REGS(b
void set_sprite_native_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:2184
void set_sprite_prop(uint8_t nb, uint8_t prop)
Definition: gb.h:1945
void set_sprite_tile(uint8_t nb, uint8_t tile)
Definition: gb.h:1886
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_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles) OLDCALL
void set_vram_byte(uint8_t *addr, uint8_t v) PRESERVES_REGS(b
void set_win_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL 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:1669
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:1594
void set_win_data(uint8_t first_tile, uint8_t nb_tiles, const 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: msx.h:630
uint8_t * set_win_tile_xy(uint8_t x, uint8_t y, uint8_t t)
void set_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL PRESERVES_REGS(b
volatile struct OAM_item_t shadow_OAM[]
volatile uint16_t sys_time
void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len)
void vmemset(void *s, uint8_t c, size_t n) OLDCALL PRESERVES_REGS(b
void vsync(void) PRESERVES_REGS(b
void wait_int_handler(void)
void wait_vbl_done(void) PRESERVES_REGS(b
uint8_t waitpad(uint8_t mask) PRESERVES_REGS(b
void waitpadup(void) PRESERVES_REGS(a
signed char int8_t
Definition: stdint.h:43
unsigned short int uint16_t
Definition: stdint.h:52
unsigned char uint8_t
Definition: stdint.h:51
Definition: gb.h:1823
uint8_t prop
Definition: gb.h:1826
uint8_t tile
Definition: gb.h:1825
uint8_t x
Definition: gb.h:1824
uint8_t y
Definition: gb.h:1824
Definition: gb.h:755
uint8_t joy0
Definition: gb.h:759
uint8_t npads
Definition: gb.h:756