GBDK 2020 Docs
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 #define NINTENDO
13 #ifdef SEGA
14 #undef SEGA
15 #endif
16 #if defined(__TARGET_ap)
17 #define ANALOGUEPOCKET
18 #elif defined(__TARGET_gb)
19 #define GAMEBOY
20 #endif
21 
22 
36 #define J_UP 0x04U
37 #define J_DOWN 0x08U
38 #define J_LEFT 0x02U
39 #define J_RIGHT 0x01U
40 #define J_A 0x10U
41 #define J_B 0x20U
42 #define J_SELECT 0x40U
43 #define J_START 0x80U
44 
49 #define M_DRAWING 0x01U
50 #define M_TEXT_OUT 0x02U
51 #define M_TEXT_INOUT 0x03U
52 
57 #define M_NO_SCROLL 0x04U
58 
61 #define M_NO_INTERP 0x08U
62 
67 #define S_PALETTE 0x10U
68 
71 #define S_FLIPX 0x20U
72 
75 #define S_FLIPY 0x40U
76 
80 #define S_PRIORITY 0x80U
81 
82 /* Interrupt flags */
85 #define EMPTY_IFLAG 0x00U
86 
91 #define VBL_IFLAG 0x01U
92 
95 #define LCD_IFLAG 0x02U
96 
99 #define TIM_IFLAG 0x04U
100 
103 #define SIO_IFLAG 0x08U
104 
107 #define JOY_IFLAG 0x10U
108 
109 
110 /* DMG Palettes */
111 #define DMG_BLACK 0x03
112 #define DMG_DARK_GRAY 0x02
113 #define DMG_LITE_GRAY 0x01
114 #define DMG_WHITE 0x00
115 
134 #define DMG_PALETTE(C0, C1, C2, C3) ((uint8_t)((((C3) & 0x03) << 6) | (((C2) & 0x03) << 4) | (((C1) & 0x03) << 2) | ((C0) & 0x03)))
135 
136 /* Limits */
139 #define SCREENWIDTH DEVICE_SCREEN_PX_WIDTH
140 
142 #define SCREENHEIGHT DEVICE_SCREEN_PX_HEIGHT
143 
145 #define MINWNDPOSX 0x07U
146 
148 #define MINWNDPOSY 0x00U
149 
151 #define MAXWNDPOSX 0xA6U
152 
154 #define MAXWNDPOSY 0x8FU
155 
156 
159 typedef void (*int_handler)(void) NONBANKED;
160 
169 
174 
179 
193 
198 
216 
234 
245 
246 
257 
258 
272 
273 
290 
291 
305 
309  return IF_REG = 0;
310 }
311 
319 
324 uint8_t get_mode() OLDCALL __preserves_regs(b, c);
325 
330 extern uint8_t _cpu;
331 
334 #define DMG_TYPE 0x01
335 
337 #define MGB_TYPE 0xFF
338 
340 #define CGB_TYPE 0x11
341 
346 extern uint8_t _is_GBA;
347 
350 #define GBA_NOT_DETECTED 0x00
351 
353 #define GBA_DETECTED 0x01
354 
357 #define DEVICE_SUPPORTS_COLOR (_cpu == CGB_TYPE)
358 
365 extern volatile uint16_t sys_time;
366 
367 
368 
376 void send_byte();
377 
386 
388 extern volatile uint8_t _io_status;
389 
392 extern volatile uint8_t _io_in;
393 
396 extern volatile uint8_t _io_out;
397 
398 /* Status codes */
400 #define IO_IDLE 0x00U
401 
402 #define IO_SENDING 0x01U
403 
404 #define IO_RECEIVING 0x02U
405 
406 #define IO_ERROR 0x04U
407 
408 
409 
415 #define CURRENT_BANK _current_bank
416 
426 #ifndef BANK
427 #define BANK(VARNAME) ( (uint8_t) & __bank_ ## VARNAME )
428 #endif
429 
442 #define BANKREF(VARNAME) void __func_ ## VARNAME() __banked __naked { \
443 __asm \
444  .local b___func_ ## VARNAME \
445  ___bank_ ## VARNAME = b___func_ ## VARNAME \
446  .globl ___bank_ ## VARNAME \
447 __endasm; \
448 }
449 
459 #define BANKREF_EXTERN(VARNAME) extern const void __bank_ ## VARNAME;
460 
461 
465 #define SWITCH_ROM_MBC1(b) \
466  _current_bank = (b), *(uint8_t *)0x2000 = (b)
467 
473 #define SWITCH_ROM SWITCH_ROM_MBC1
474 
478 #define SWITCH_RAM_MBC1(b) \
479  *(uint8_t *)0x4000 = (b)
480 
486 #define SWITCH_RAM SWITCH_RAM_MBC1
487 
490 #define ENABLE_RAM_MBC1 \
491  *(uint8_t *)0x0000 = 0x0A
492 
493 #define ENABLE_RAM ENABLE_RAM_MBC1
494 
497 #define DISABLE_RAM_MBC1 \
498  *(uint8_t *)0x0000 = 0x00
499 
500 #define DISABLE_RAM DISABLE_RAM_MBC1
501 
502 #define SWITCH_16_8_MODE_MBC1 \
503  *(uint8_t *)0x6000 = 0x00
504 
505 #define SWITCH_4_32_MODE_MBC1 \
506  *(uint8_t *)0x6000 = 0x01
507 
513 #define SWITCH_ROM_MBC5(b) \
514  _current_bank = (b), \
515  *(uint8_t *)0x3000 = 0, \
516  *(uint8_t *)0x2000 = (b)
517 
524 #define SWITCH_ROM_MBC5_8M(b) \
525  *(uint8_t *)0x3000 = ((uint16_t)(b) >> 8), \
526  *(uint8_t *)0x2000 = (b)
527 
531 #define SWITCH_RAM_MBC5(b) \
532  *(uint8_t *)0x4000 = (b)
533 
536 #define ENABLE_RAM_MBC5 \
537  *(uint8_t *)0x0000 = 0x0A
538 
541 #define DISABLE_RAM_MBC5 \
542  *(uint8_t *)0x0000 = 0x00
543 
544 
545 
551 
552 
553 
564 uint8_t joypad() OLDCALL __preserves_regs(b, c, h, l);
565 
578 uint8_t waitpad(uint8_t mask) OLDCALL __preserves_regs(b, c);
579 
585 void waitpadup() __preserves_regs(a, b, c, d, e, h, l);
586 
592 typedef struct {
594  union {
595  struct {
596  uint8_t joy0, joy1, joy2, joy3;
597  };
598  uint8_t joypads[4];
599  };
600 } joypads_t;
601 
612 
619 void joypad_ex(joypads_t * joypads) OLDCALL __preserves_regs(b, c);
620 
621 
622 
631 inline void enable_interrupts() __preserves_regs(a, b, c, d, e, h, l) {
632  __asm__("ei");
633 }
634 
647 inline void disable_interrupts() __preserves_regs(a, b, c, d, e, h, l) {
648  __asm__("di");
649 }
650 
657 void set_interrupts(uint8_t flags) OLDCALL __preserves_regs(b, c, d, e);
658 
662 void reset();
663 
674 void wait_vbl_done() __preserves_regs(b, c, d, e, h, l);
675 
681 void display_off() __preserves_regs(b, c, d, e, h, l);
682 
685 void refresh_OAM();
686 
687 
693 void hiramcpy(uint8_t dst, const void *src, uint8_t n) OLDCALL __preserves_regs(b, c);
694 
695 
699 #define DISPLAY_ON \
700  LCDC_REG|=LCDCF_ON
701 
705 #define DISPLAY_OFF \
706  display_off();
707 
710 #define HIDE_LEFT_COLUMN
711 
714 #define SHOW_LEFT_COLUMN
715 
719 #define SHOW_BKG \
720  LCDC_REG|=LCDCF_BGON
721 
725 #define HIDE_BKG \
726  LCDC_REG&=~LCDCF_BGON
727 
731 #define SHOW_WIN \
732  LCDC_REG|=LCDCF_WINON
733 
737 #define HIDE_WIN \
738  LCDC_REG&=~LCDCF_WINON
739 
743 #define SHOW_SPRITES \
744  LCDC_REG|=LCDCF_OBJON
745 
749 #define HIDE_SPRITES \
750  LCDC_REG&=~LCDCF_OBJON
751 
755 #define SPRITES_8x16 \
756  LCDC_REG|=LCDCF_OBJ16
757 
761 #define SPRITES_8x8 \
762  LCDC_REG&=~LCDCF_OBJ16
763 
764 
765 
772 void set_vram_byte(uint8_t * addr, uint8_t v) OLDCALL __preserves_regs(b, c);
773 
780 uint8_t get_vram_byte(uint8_t * addr) OLDCALL __preserves_regs(b, c);
781 
782 
786 uint8_t * get_bkg_xy_addr(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b, c);
787 
788 #define COMPAT_PALETTE(C0,C1,C2,C3) ((uint8_t)(((C3) << 6) | ((C2) << 4) | ((C1) << 2) | (C0)))
789 
792 inline void set_2bpp_palette(uint16_t palette) {
793  palette;
794 }
795 
798 inline void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor) {
799  set_1bpp_colors_ex(fgcolor, bgcolor, 0);
800 }
801 
819 void set_bkg_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b, c);
820 #define set_bkg_2bpp_data set_bkg_data
821 
837 void set_bkg_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b, c);
838 
853 void get_bkg_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b, c);
854 
855 
908 void set_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL __preserves_regs(b, c);
909 #define set_tile_map set_bkg_tiles
910 
911 
940 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;
941 #define set_tile_submap set_bkg_submap
942 
961 void get_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL __preserves_regs(b, c);
962 
963 
971 uint8_t * set_bkg_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL __preserves_regs(b, c);
972 #define set_tile_xy set_bkg_tile_xy
973 
980 uint8_t get_bkg_tile_xy(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b, c);
981 
982 
996 inline void move_bkg(uint8_t x, uint8_t y) {
997  SCX_REG=x, SCY_REG=y;
998 }
999 
1000 
1010 inline void scroll_bkg(int8_t x, int8_t y) {
1011  SCX_REG+=x, SCY_REG+=y;
1012 }
1013 
1014 
1015 
1019 uint8_t * get_win_xy_addr(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b, c);
1020 
1034 void set_win_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b, c);
1035 
1036 
1048 void set_win_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b, c);
1049 
1050 
1062 void get_win_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b, c);
1063 
1064 
1096 void set_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL __preserves_regs(b, c);
1097 
1098 
1129 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;
1130 
1131 
1149 void get_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL __preserves_regs(b, c);
1150 
1151 
1159 uint8_t * set_win_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL __preserves_regs(b, c);
1160 
1161 
1168 uint8_t get_win_tile_xy(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b, c);
1169 
1170 
1182 inline void move_win(uint8_t x, uint8_t y) {
1183  WX_REG=x, WY_REG=y;
1184 }
1185 
1186 
1196 inline void scroll_win(int8_t x, int8_t y) {
1197  WX_REG+=x, WY_REG+=y;
1198 }
1199 
1200 
1201 
1217 void set_sprite_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b, c);
1218 #define set_sprite_2bpp_data set_sprite_data
1219 
1235 void set_sprite_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b, c);
1236 
1249 void get_sprite_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b, c);
1250 
1251 
1258 typedef struct OAM_item_t {
1259  uint8_t y, x; //< X, Y Coordinates of the sprite on screen
1260  uint8_t tile; //< Sprite tile number
1261  uint8_t prop; //< OAM Property Flags
1263 
1264 
1267 extern volatile struct OAM_item_t shadow_OAM[];
1268 
1272 
1273 #define DISABLE_OAM_DMA \
1274  _shadow_OAM_base = 0
1275 
1278 #define DISABLE_VBL_TRANSFER DISABLE_OAM_DMA
1279 
1280 #define ENABLE_OAM_DMA \
1281  _shadow_OAM_base = (uint8_t)((uint16_t)&shadow_OAM >> 8)
1282 
1285 #define ENABLE_VBL_TRANSFER ENABLE_OAM_DMA
1286 
1289 #define MAX_HARDWARE_SPRITES 40
1290 
1293 inline void SET_SHADOW_OAM_ADDRESS(void * address) {
1294  _shadow_OAM_base = (uint8_t)((uint16_t)address >> 8);
1295 }
1296 
1314  shadow_OAM[nb].tile=tile;
1315 }
1316 
1317 
1325  return shadow_OAM[nb].tile;
1326 }
1327 
1328 
1360  shadow_OAM[nb].prop=prop;
1361 }
1362 
1363 
1370  return shadow_OAM[nb].prop;
1371 }
1372 
1373 
1386 inline void move_sprite(uint8_t nb, uint8_t x, uint8_t y) {
1387  OAM_item_t * itm = &shadow_OAM[nb];
1388  itm->y=y, itm->x=x;
1389 }
1390 
1391 
1402 inline void scroll_sprite(uint8_t nb, int8_t x, int8_t y) {
1403  OAM_item_t * itm = &shadow_OAM[nb];
1404  itm->y+=y, itm->x+=x;
1405 }
1406 
1407 
1412 inline void hide_sprite(uint8_t nb) {
1413  shadow_OAM[nb].y = 0;
1414 }
1415 
1416 
1417 
1433 void set_data(uint8_t *vram_addr, const uint8_t *data, uint16_t len) OLDCALL __preserves_regs(b, c);
1434 
1435 
1451 void get_data(uint8_t *data, uint8_t *vram_addr, uint16_t len) OLDCALL __preserves_regs(b, c);
1452 
1465 void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len) OLDCALL __preserves_regs(b, c);
1466 
1467 
1468 
1492 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, c);
1493 
1504 void set_tile_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data, uint8_t base) OLDCALL __preserves_regs(b, c);
1505 
1527 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, c);
1528 
1529 
1544 inline void set_native_tile_data(uint16_t first_tile, uint8_t nb_tiles, const uint8_t *data) {
1545  if (first_tile < 256) {
1546  set_bkg_data(first_tile, nb_tiles, data);
1547  } else {
1548  set_sprite_data(first_tile - 256, nb_tiles, data);
1549  }
1550 }
1551 
1552 
1558 void init_win(uint8_t c) OLDCALL __preserves_regs(b, c);
1559 
1565 void init_bkg(uint8_t c) OLDCALL __preserves_regs(b, c);
1566 
1574 void vmemset (void *s, uint8_t c, size_t n) OLDCALL __preserves_regs(b, c);
1575 
1576 
1577 
1586 void fill_bkg_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL __preserves_regs(b, c);
1587 #define fill_rect fill_bkg_rect
1588 
1597 void fill_win_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL __preserves_regs(b, c);
1598 
1599 #endif /* _GB_H */
get_sprite_prop
uint8_t get_sprite_prop(uint8_t nb)
Definition: gb.h:1369
_io_status
volatile uint8_t _io_status
uint8_t
unsigned char uint8_t
Definition: stdint.h:51
waitpadup
void waitpadup() __preserves_regs(a
OAM_item_t::x
uint8_t x
Definition: gb.h:1259
move_bkg
void move_bkg(uint8_t x, uint8_t y)
Definition: gb.h:996
_io_in
volatile uint8_t _io_in
int8_t
signed char int8_t
Definition: stdint.h:43
fill_bkg_rect
void fill_bkg_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL __preserves_regs(b
hiramcpy
void hiramcpy(uint8_t dst, const void *src, uint8_t n) OLDCALL __preserves_regs(b
shadow_OAM
volatile struct OAM_item_t shadow_OAM[]
joypads_t::npads
uint8_t npads
Definition: gb.h:593
OAM_item_t
struct OAM_item_t OAM_item_t
get_win_tiles
void get_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL __preserves_regs(b
_current_bank
__REG _current_bank
Definition: gb.h:414
get_data
void get_data(uint8_t *data, uint8_t *vram_addr, uint16_t len) OLDCALL __preserves_regs(b
joypads_t
Definition: gb.h:592
set_sprite_prop
void set_sprite_prop(uint8_t nb, uint8_t prop)
Definition: gb.h:1359
__REG
#define __REG
Definition: hardware.h:14
SCX_REG
__REG SCX_REG
Definition: hardware.h:261
refresh_OAM
void refresh_OAM()
set_sprite_1bpp_data
void set_sprite_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
set_bkg_submap
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
_io_out
volatile uint8_t _io_out
joypad_init
uint8_t joypad_init(uint8_t npads, joypads_t *joypads) OLDCALL
set_bkg_tile_xy
uint8_t * set_bkg_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL __preserves_regs(b
_shadow_OAM_base
__REG _shadow_OAM_base
Definition: gb.h:1271
waitpad
uint8_t waitpad(uint8_t mask) OLDCALL __preserves_regs(b
get_bkg_tile_xy
uint8_t get_bkg_tile_xy(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
set_win_tiles
void set_win_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL __preserves_regs(b
mode
void mode(uint8_t m) OLDCALL
disable_interrupts
void disable_interrupts() __preserves_regs(a
uint16_t
unsigned short int uint16_t
Definition: stdint.h:52
c
uint8_t c
Definition: gb.h:324
get_vram_byte
uint8_t get_vram_byte(uint8_t *addr) OLDCALL __preserves_regs(b
set_bkg_tiles
void set_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) OLDCALL __preserves_regs(b
joypad
uint8_t joypad() OLDCALL __preserves_regs(b
version.h
delay
void delay(uint16_t d) OLDCALL
add_LCD
void add_LCD(int_handler h) OLDCALL
IF_REG
__REG IF_REG
Definition: hardware.h:84
l
uint8_t l
Definition: gb.h:564
nowait_int_handler
void nowait_int_handler()
get_tiles
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
add_JOY
void add_JOY(int_handler h) OLDCALL
WX_REG
__REG WX_REG
Definition: hardware.h:277
fill_win_rect
void fill_win_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t tile) OLDCALL __preserves_regs(b
remove_SIO
void remove_SIO(int_handler h) OLDCALL
get_win_xy_addr
uint8_t * get_win_xy_addr(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
sys_time
volatile uint16_t sys_time
enable_interrupts
void enable_interrupts() __preserves_regs(a
reset
void reset()
cancel_pending_interrupts
uint8_t cancel_pending_interrupts()
Definition: gb.h:308
get_sprite_data
void get_sprite_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b
joypad_ex
void joypad_ex(joypads_t *joypads) OLDCALL __preserves_regs(b
vmemset
void vmemset(void *s, uint8_t c, size_t n) OLDCALL __preserves_regs(b
init_bkg
void init_bkg(uint8_t c) OLDCALL __preserves_regs(b
e
void e
Definition: gb.h:585
wait_int_handler
void wait_int_handler()
set_bkg_data
void set_bkg_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
get_win_tile_xy
uint8_t get_win_tile_xy(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
set_win_tile_xy
uint8_t * set_win_tile_xy(uint8_t x, uint8_t y, uint8_t t) OLDCALL __preserves_regs(b
set_native_tile_data
void set_native_tile_data(uint16_t first_tile, uint8_t nb_tiles, const uint8_t *data)
Definition: gb.h:1544
add_SIO
void add_SIO(int_handler h) OLDCALL
set_bkg_1bpp_data
void set_bkg_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
SET_SHADOW_OAM_ADDRESS
void SET_SHADOW_OAM_ADDRESS(void *address)
Definition: gb.h:1293
stdint.h
receive_byte
void receive_byte()
get_bkg_data
void get_bkg_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b
int_handler
void(* int_handler)(void) NONBANKED
Definition: gb.h:159
_cpu
uint8_t _cpu
display_off
void display_off() __preserves_regs(b
_current_1bpp_colors
uint16_t _current_1bpp_colors
move_sprite
void move_sprite(uint8_t nb, uint8_t x, uint8_t y)
Definition: gb.h:1386
set_1bpp_colors_ex
void set_1bpp_colors_ex(uint8_t fgcolor, uint8_t bgcolor, uint8_t mode) OLDCALL
b
void b
Definition: gb.h:585
scroll_sprite
void scroll_sprite(uint8_t nb, int8_t x, int8_t y)
Definition: gb.h:1402
_is_GBA
uint8_t _is_GBA
set_win_data
void set_win_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
OLDCALL
#define OLDCALL
Definition: types.h:21
h
uint8_t h
Definition: gb.h:564
d
void d
Definition: gb.h:585
set_data
void set_data(uint8_t *vram_addr, const uint8_t *data, uint16_t len) OLDCALL __preserves_regs(b
scroll_win
void scroll_win(int8_t x, int8_t y)
Definition: gb.h:1196
hardware.h
get_bkg_tiles
void get_bkg_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *tiles) OLDCALL __preserves_regs(b
NONBANKED
#define NONBANKED
Definition: types.h:12
set_sprite_tile
void set_sprite_tile(uint8_t nb, uint8_t tile)
Definition: gb.h:1313
OAM_item_t::tile
uint8_t tile
Definition: gb.h:1260
scroll_bkg
void scroll_bkg(int8_t x, int8_t y)
Definition: gb.h:1010
get_bkg_xy_addr
uint8_t * get_bkg_xy_addr(uint8_t x, uint8_t y) OLDCALL __preserves_regs(b
add_TIM
void add_TIM(int_handler h) OLDCALL
set_tile_data
void set_tile_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data, uint8_t base) OLDCALL __preserves_regs(b
wait_vbl_done
void wait_vbl_done() __preserves_regs(b
get_sprite_tile
uint8_t get_sprite_tile(uint8_t nb)
Definition: gb.h:1324
add_VBL
void add_VBL(int_handler h) OLDCALL
set_interrupts
void set_interrupts(uint8_t flags) OLDCALL __preserves_regs(b
WY_REG
__REG WY_REG
Definition: hardware.h:275
remove_LCD
void remove_LCD(int_handler h) OLDCALL
vmemcpy
void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len) OLDCALL __preserves_regs(b
set_vram_byte
void set_vram_byte(uint8_t *addr, uint8_t v) OLDCALL __preserves_regs(b
remove_TIM
void remove_TIM(int_handler h) OLDCALL
set_tiles
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
OAM_item_t
Definition: gb.h:1258
set_2bpp_palette
void set_2bpp_palette(uint16_t palette)
Definition: gb.h:792
OAM_item_t::y
uint8_t y
Definition: gb.h:1259
send_byte
void send_byte()
remove_VBL
void remove_VBL(int_handler h) OLDCALL
move_win
void move_win(uint8_t x, uint8_t y)
Definition: gb.h:1182
OAM_item_t::prop
uint8_t prop
Definition: gb.h:1261
remove_JOY
void remove_JOY(int_handler h) OLDCALL
get_win_data
void get_win_data(uint8_t first_tile, uint8_t nb_tiles, uint8_t *data) OLDCALL __preserves_regs(b
set_win_submap
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
SCY_REG
__REG SCY_REG
Definition: hardware.h:259
set_sprite_data
void set_sprite_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b
hide_sprite
void hide_sprite(uint8_t nb)
Definition: gb.h:1412
get_mode
uint8_t get_mode() OLDCALL __preserves_regs(b
init_win
void init_win(uint8_t c) OLDCALL __preserves_regs(b
joypads_t::joy3
uint8_t joy3
Definition: gb.h:596
set_1bpp_colors
void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor)
Definition: gb.h:798
set_win_1bpp_data
void set_win_1bpp_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data) OLDCALL __preserves_regs(b