GBDK 2020 Docs  4.3.0
API Documentation for GBDK 2020
msx.h
Go to the documentation of this file.
1 
4 #ifndef _MSX_H
5 #define _MSX_H
6 
7 #include <types.h>
8 #include <stdint.h>
9 #include <gbdk/version.h>
10 #include <msx/hardware.h>
11 
12 #define MSX
13 
14 // Here NINTENDO means Game Boy & related clones
15 #ifdef NINTENDO
16 #undef NINTENDO
17 #endif
18 
19 #ifdef NINTENDO_NES
20 #undef NINTENDO_NES
21 #endif
22 
23 #ifdef SEGA
24 #undef SEGA
25 #endif
26 
27 #if defined(__TARGET_msxdos)
28 #define MSXDOS
29 #endif
30 
31 extern const uint8_t _SYSTEM;
32 
33 #define SYSTEM_60HZ 0x00
34 #define SYSTEM_50HZ 0x01
35 
36 #define VBK_REG VDP_ATTR_SHIFT
37 
51 #define J_UP 0b00100000
52 #define J_DOWN 0b01000000
53 #define J_LEFT 0b00010000
54 #define J_RIGHT 0b10000000
55 #define J_A 0b00000001
56 #define J_B 0b00000100
57 #define J_SELECT 0b00001000
58 #define J_START 0b00000010
59 
64 #define M_TEXT_OUT 0x02U
65 #define M_TEXT_INOUT 0x03U
71 #define M_NO_SCROLL 0x04U
75 #define M_NO_INTERP 0x08U
76 
79 #define S_BANK 0x01U
82 #define S_FLIPX 0x02U
85 #define S_FLIPY 0x04U
88 #define S_PALETTE 0x08U
91 #define S_PRIORITY 0x10U
95 #define S_PAL(n) (((n) & 0x01U) << 3)
96 
97 // VDP helper macros
98 #define __WRITE_VDP_REG_UNSAFE(REG, v) shadow_##REG=(v),VDP_CMD=(shadow_##REG),VDP_CMD=REG
99 #define __WRITE_VDP_REG(REG, v) shadow_##REG=(v);__asm__("di");VDP_CMD=(shadow_##REG);VDP_CMD=REG;__asm__("ei")
100 #define __READ_VDP_REG(REG) shadow_##REG
101 
104 
112 
118 
122 inline uint8_t get_system(void) {
123  return _SYSTEM;
124 }
125 
126 /* Interrupt flags */
129 #define EMPTY_IFLAG 0x00U
135 #define VBL_IFLAG 0x01U
139 #define LCD_IFLAG 0x02U
142 #define TIM_IFLAG 0x04U
145 #define SIO_IFLAG 0x08U
148 #define JOY_IFLAG 0x10U
149 
151 
152 /* Limits */
155 #define SCREENWIDTH DEVICE_SCREEN_PX_WIDTH
158 #define SCREENHEIGHT DEVICE_SCREEN_PX_HEIGHT
161 #define MINWNDPOSX 0x00U
164 #define MINWNDPOSY 0x00U
167 #define MAXWNDPOSX 0x00U
170 #define MAXWNDPOSY 0x00U
171 
172 
175 typedef void (*int_handler)(void) NONBANKED;
176 
181 
186 
190 
194 
198 
202 
206 
210 
214  return VDP_STATUS;
215 }
216 
217 inline void move_bkg(uint8_t x, uint8_t y) {
220 }
221 
222 inline void scroll_bkg(int8_t x, int8_t y) {
224  int16_t tmp = __READ_VDP_REG(VDP_RSCY) + y;
225  __WRITE_VDP_REG(VDP_RSCY, (tmp < 0) ? 224 + tmp : tmp % 224u);
226 }
227 
238 void vsync(void) PRESERVES_REGS(b, c, d, e, h, l, iyh, iyl);
239 
242 void wait_vbl_done(void) PRESERVES_REGS(b, c, d, e, h, l, iyh, iyl);
243 
248 inline void display_off(void) {
250 }
251 
255 #define DISPLAY_ON \
256  __WRITE_VDP_REG(VDP_R1, __READ_VDP_REG(VDP_R1) |= R1_DISP_ON)
257 
261 #define DISPLAY_OFF \
262  display_off();
263 
266 void refresh_OAM(void);
267 
271 #define HIDE_LEFT_COLUMN \
272  __WRITE_VDP_REG(VDP_R0, __READ_VDP_REG(VDP_R0) |= R0_LCB)
273 
277 #define SHOW_LEFT_COLUMN \
278  __WRITE_VDP_REG(VDP_R0, __READ_VDP_REG(VDP_R0) &= (~R0_LCB))
279 
282 #define SET_BORDER_COLOR(C) __WRITE_VDP_REG(VDP_R7, ((C) | 0xf0u))
283 
287 #define SHOW_BKG
288 
292 #define HIDE_BKG
293 
297 #define SHOW_WIN
298 
302 #define HIDE_WIN
303 
307 #define SHOW_SPRITES
308 
312 #define HIDE_SPRITES
313 
316 #define SPRITES_16x16 \
317  __WRITE_VDP_REG(VDP_R1, __READ_VDP_REG(VDP_R1) |= R1_SPR_16X16)
318 
321 #define SPRITES_8x8 \
322  __WRITE_VDP_REG(VDP_R1, __READ_VDP_REG(VDP_R1) &= (~R1_SPR_16X16))
323 
327 #define DEVICE_SUPPORTS_COLOR (TRUE)
328 
335 extern volatile uint16_t sys_time;
336 
343 
344 #define DIV_REG get_r_reg()
345 
348 extern volatile uint8_t _current_bank;
349 #define CURRENT_BANK _current_bank
350 
360 #ifndef BANK
361 #define BANK(VARNAME) ( (uint8_t) & __bank_ ## VARNAME )
362 #endif
363 
376 #define BANKREF(VARNAME) void __func_ ## VARNAME(void) __banked __naked { \
377 __asm \
378  .local b___func_ ## VARNAME \
379  ___bank_ ## VARNAME = b___func_ ## VARNAME \
380  .globl ___bank_ ## VARNAME \
381 __endasm; \
382 }
383 
393 #define BANKREF_EXTERN(VARNAME) extern const void __bank_ ## VARNAME;
394 
395 
401 #define SWITCH_ROM1 SWITCH_ROM
402 
407 #define SWITCH_ROM2(b) MAP_FRAME2=(b)
408 
413 #define SWITCH_RAM(b) RAM_CONTROL=((b)&1)?RAM_CONTROL|RAMCTL_BANK:RAM_CONTROL&(~RAMCTL_BANK)
414 
418 #define ENABLE_RAM RAM_CONTROL|=RAMCTL_RAM
419 
423 #define DISABLE_RAM RAM_CONTROL&=(~RAMCTL_RAM)
424 
425 
431 
432 
436 
440 
446 void waitpadup(void) PRESERVES_REGS(b, c, d, e, iyh, iyl);
447 
453 typedef struct {
454  uint8_t npads;
455  union {
456  struct {
457  uint8_t joy0, joy1, joy2, joy3;
458  };
459  uint8_t joypads[4];
460  };
461 } joypads_t;
462 
472 
480 
481 
490 inline void enable_interrupts(void) PRESERVES_REGS(a, b, c, d, e, h, l, iyh, iyl) {
491  __asm__("ei");
492 }
493 
506 inline void disable_interrupts(void) PRESERVES_REGS(a, b, c, d, e, h, l, iyh, iyl) {
507  __asm__("di");
508 }
509 
510 
511 #if defined(__TARGET_msxdos)
512 
513 #define RGB(r,g,b) ((r) | ((g) << 2) | ((b) << 4))
514 #define RGB8(r,g,b) (((r) >> 6) | (((g) >> 6) << 2) | (((b) >> 6) << 4))
515 #define RGBHTML(RGB24bit) (((RGB24bit) >> 22) | ((((RGB24bit) & 0xFFFF) >> 14) << 2) | ((((RGB24bit) & 0xFF) >> 6) << 4))
516 
519 #define RGB_RED RGB( 3, 0, 0)
520 #define RGB_DARKRED RGB( 2, 0, 0)
521 #define RGB_GREEN RGB( 0, 3, 0)
522 #define RGB_DARKGREEN RGB( 0, 2, 0)
523 #define RGB_BLUE RGB( 0, 0, 3)
524 #define RGB_DARKBLUE RGB( 0, 0, 2)
525 #define RGB_YELLOW RGB( 3, 3, 0)
526 #define RGB_DARKYELLOW RGB( 2, 2, 0)
527 #define RGB_CYAN RGB( 0, 3, 3)
528 #define RGB_AQUA RGB( 3, 1, 2)
529 #define RGB_PINK RGB( 3, 0, 3)
530 #define RGB_PURPLE RGB( 2, 0, 2)
531 #define RGB_BLACK RGB( 0, 0, 0)
532 #define RGB_DARKGRAY RGB( 1, 1, 1)
533 #define RGB_LIGHTGRAY RGB( 2, 2, 2)
534 #define RGB_WHITE RGB( 3, 3, 3)
535 
536 typedef uint8_t palette_color_t;
537 
538 #else
539 #error Unrecognized port
540 #endif
541 
543 inline void cpu_fast(void) {}
544 
546 #define set_bkg_palette_entry set_palette_entry
547 #define set_sprite_palette_entry(palette,entry,rgb_data) set_palette_entry(1,entry,rgb_data)
548 void set_palette(uint8_t first_palette, uint8_t nb_palettes, const palette_color_t *rgb_data) Z88DK_CALLEE;
549 #define set_bkg_palette set_palette
550 #define set_sprite_palette(first_palette,nb_palettes,rgb_data) set_palette(1,1,rgb_data)
551 
552 void set_native_tile_data(uint16_t start, uint16_t ntiles, const void *src) Z88DK_CALLEE;
553 inline void set_bkg_4bpp_data(uint16_t start, uint16_t ntiles, const void *src) {
554  set_native_tile_data(start, ntiles, src);
555 }
556 void set_sprite_1bpp_data(uint16_t start, uint16_t ntiles, const void *src) Z88DK_CALLEE;
557 inline void set_native_sprite_data(uint16_t start, uint16_t ntiles, const void *src) {
558  set_sprite_1bpp_data(start, ntiles, src);
559 }
560 
561 #define COMPAT_PALETTE(C0,C1,C2,C3) (((uint16_t)(C3) << 12) | ((uint16_t)(C2) << 8) | ((uint16_t)(C1) << 4) | (uint16_t)(C0))
563 inline void set_2bpp_palette(uint16_t palette) {
564  _current_2bpp_palette = palette;
565 }
566 //void set_tile_2bpp_data(uint16_t start, uint16_t ntiles, const void *src, uint16_t palette) Z88DK_CALLEE PRESERVES_REGS(iyh, iyl);
567 inline void set_bkg_data(uint16_t start, uint16_t ntiles, const void *src) {
568  set_native_tile_data(start, ntiles, src);
569 }
570 inline void set_sprite_data(uint16_t start, uint16_t ntiles, const void *src) {
571  set_sprite_1bpp_data(start, ntiles, src);
572 }
573 //inline void set_bkg_2bpp_data(uint16_t start, uint16_t ntiles, const void *src) {
574 // set_tile_2bpp_data(start, ntiles, src, _current_2bpp_palette);
575 //}
576 //inline void set_sprite_2bpp_data(uint16_t start, uint16_t ntiles, const void *src) {
577 // set_tile_2bpp_data((uint8_t)(start) + 0x100u, ntiles, src, _current_2bpp_palette);
578 //}
579 
581 inline void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor) {
582  _current_1bpp_colors = ((uint16_t)bgcolor << 8) | fgcolor;
583 }
584 void set_tile_1bpp_data(uint16_t start, uint16_t ntiles, const void *src, uint16_t colors) Z88DK_CALLEE PRESERVES_REGS(iyh, iyl);
585 inline void set_bkg_1bpp_data(uint16_t start, uint16_t ntiles, const void *src) {
586  set_tile_1bpp_data(start, ntiles, src, _current_1bpp_colors);
587 }
588 
589 
598 void set_data(uint16_t dst, const void *src, uint16_t size) Z88DK_CALLEE PRESERVES_REGS(iyh, iyl);
599 void vmemcpy(uint16_t dst, const void *src, uint16_t size) Z88DK_CALLEE PRESERVES_REGS(iyh, iyl);
600 
602 #define set_bkg_tiles set_tile_map
603 #define set_win_tiles set_tile_map
604 
606 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) {
607  _map_tile_offset = base_tile;
608  set_tile_map(x, y, w, h, tiles);
609  _map_tile_offset = 0;
610 }
611 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) {
612  _map_tile_offset = base_tile;
613  set_tile_map(x, y, w, h, tiles);
614  _map_tile_offset = 0;
615 }
616 
619 inline void set_bkg_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w) {
620  set_tile_submap_compat(x, y, w, h, map_w, map);
621 }
622 inline void set_win_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w) {
623  set_tile_submap_compat(x, y, w, h, map_w, map);
624 }
625 
627 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) {
628  _submap_tile_offset = base_tile;
629  set_tile_submap_compat(x, y, w, h, map_w, map);
631 }
632 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) {
633  _submap_tile_offset = base_tile;
634  set_tile_submap_compat(x, y, w, h, map_w, map);
636 }
637 
639 #define fill_bkg_rect fill_rect
640 #define fill_win_rect fill_rect
641 
648 typedef struct OAM_item_t {
649  uint8_t y, x; //< X, Y Coordinates of the sprite on screen
650  uint8_t tile; //< Sprite tile number
651  uint8_t prop; //< OAM Property Flags
653 
654 
657 extern volatile struct OAM_item_t shadow_OAM[];
658 
661 extern volatile uint8_t _shadow_OAM_base;
662 
687 extern volatile uint8_t _shadow_OAM_OFF;
688 
691 #define DISABLE_VBL_TRANSFER \
692  _shadow_OAM_base = 0
693 
696 #define ENABLE_VBL_TRANSFER \
697  _shadow_OAM_base = (uint8_t)((uint16_t)&shadow_OAM >> 8)
698 
701 #define MAX_HARDWARE_SPRITES 32
702 
705 #define HARDWARE_SPRITE_CAN_FLIP_X 0
706 
709 #define HARDWARE_SPRITE_CAN_FLIP_Y 0
710 
713 inline void SET_SHADOW_OAM_ADDRESS(void * address) {
714  _shadow_OAM_base = (uint8_t)((uint16_t)address >> 8);
715 }
716 
734  shadow_OAM[nb].tile=tile;
735 }
736 
737 
745  return shadow_OAM[nb].tile;
746 }
747 
749  shadow_OAM[nb].prop = prop;
750 }
751 
753  return shadow_OAM[nb].prop;
754 }
755 
768 inline void move_sprite(uint8_t nb, uint8_t x, uint8_t y) {
769  OAM_item_t * itm = &shadow_OAM[nb];
770  itm->y=y, itm->x=x;
771 }
772 
773 
784 inline void scroll_sprite(uint8_t nb, int8_t x, int8_t y) {
785  OAM_item_t * itm = &shadow_OAM[nb];
786  itm->y+=y, itm->x+=x;
787 }
788 
789 
794 inline void hide_sprite(uint8_t nb) {
795  shadow_OAM[nb].y = 0xC0;
796 }
797 
805 
814 
823 #define set_bkg_tile_xy set_tile_xy
824 #define set_win_tile_xy set_tile_xy
825 
830 #define get_win_xy_addr get_bkg_xy_addr
831 
832 #endif /* _MSX_H */
#define OLDCALL
Definition: types.h:21
#define NONBANKED
Definition: types.h:40
#define PRESERVES_REGS(...)
Definition: types.h:32
#define Z88DK_CALLEE
Definition: types.h:46
#define Z88DK_FASTCALL
Definition: types.h:47
uint16_t palette_color_t
Definition: cgb.h:85
#define VDP_RSCY
Definition: hardware.h:113
#define VDP_R1
Definition: hardware.h:53
#define VDP_RSCX
Definition: hardware.h:108
#define R1_DISP_ON
Definition: hardware.h:58
void set_sprite_tile(uint8_t nb, uint8_t tile)
Definition: msx.h:733
volatile uint8_t _current_bank
Definition: gb.h:522
void d
Definition: msx.h:102
void c
Definition: msx.h:102
void set_bkg_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w)
Definition: msx.h:619
void set_tile_map(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *tiles) Z88DK_CALLEE PRESERVES_REGS(iyh
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: msx.h:632
void joypad_ex(joypads_t *joypads) Z88DK_FASTCALL PRESERVES_REGS(iyh
void scroll_bkg(int8_t x, int8_t y)
Definition: msx.h:222
void set_sprite_data(uint16_t start, uint16_t ntiles, const void *src)
Definition: msx.h:570
void delay(uint16_t d) Z88DK_FASTCALL
uint16_t _current_2bpp_palette
uint16_t _current_1bpp_colors
void set_default_palette(void)
void set_palette_entry(uint8_t palette, uint8_t entry, uint16_t rgb_data) Z88DK_CALLEE PRESERVES_REGS(iyh
void add_SIO(int_handler h) Z88DK_FASTCALL
void vmemcpy(uint16_t dst, const void *src, uint16_t size) Z88DK_CALLEE PRESERVES_REGS(iyh
void remove_JOY(int_handler h) Z88DK_FASTCALL
volatile struct OAM_item_t shadow_OAM[]
volatile uint8_t _shadow_OAM_OFF
void mode(uint8_t m) OLDCALL
void set_native_sprite_data(uint16_t start, uint16_t ntiles, const void *src)
Definition: msx.h:557
uint8_t get_system(void)
Definition: msx.h:122
uint8_t * set_attributed_tile_xy(uint8_t x, uint8_t y, uint16_t t) Z88DK_CALLEE PRESERVES_REGS(iyh
void add_JOY(int_handler h) Z88DK_FASTCALL
void WRITE_VDP_CMD(uint16_t cmd) Z88DK_FASTCALL PRESERVES_REGS(b
void b
Definition: msx.h:490
void set_bkg_1bpp_data(uint16_t start, uint16_t ntiles, const void *src)
Definition: msx.h:585
void add_LCD(int_handler h) Z88DK_FASTCALL PRESERVES_REGS(b
volatile uint8_t _shadow_OAM_base
Definition: gb.h:1824
uint8_t * set_tile_xy(uint8_t x, uint8_t y, uint8_t t) Z88DK_CALLEE PRESERVES_REGS(iyh
void set_sprite_1bpp_data(uint16_t start, uint16_t ntiles, const void *src) Z88DK_CALLEE
Definition: sms.h:653
uint8_t joypad(void) OLDCALL PRESERVES_REGS(b
void move_bkg(uint8_t x, uint8_t y)
Definition: msx.h:217
uint8_t * get_bkg_xy_addr(uint8_t x, uint8_t y) Z88DK_CALLEE PRESERVES_REGS(iyh
uint8_t get_sprite_prop(uint8_t nb)
Definition: msx.h:752
void scroll_sprite(uint8_t nb, int8_t x, int8_t y)
Definition: msx.h:784
void add_TIM(int_handler h) Z88DK_FASTCALL
uint8_t get_mode(void) OLDCALL
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: msx.h:611
void set_tile_1bpp_data(uint16_t start, uint16_t ntiles, const void *src, uint16_t colors) Z88DK_CALLEE PRESERVES_REGS(iyh
volatile uint16_t sys_time
const uint8_t _SYSTEM
uint8_t waitpad(uint8_t mask) Z88DK_FASTCALL PRESERVES_REGS(b
void SET_SHADOW_OAM_ADDRESS(void *address)
Definition: msx.h:713
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: msx.h:606
void set_bkg_data(uint16_t start, uint16_t ntiles, const void *src)
Definition: msx.h:567
void wait_vbl_done(void) PRESERVES_REGS(b
void set_tile_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t map_w, const uint8_t *map) Z88DK_CALLEE PRESERVES_REGS(iyh
void cpu_fast(void)
Definition: msx.h:543
uint8_t get_r_reg(void) PRESERVES_REGS(b
struct OAM_item_t OAM_item_t
void set_data(uint16_t dst, const void *src, uint16_t size) Z88DK_CALLEE PRESERVES_REGS(iyh
void(* int_handler)(void) NONBANKED
Definition: msx.h:175
#define __READ_VDP_REG(REG)
Definition: msx.h:100
void remove_TIM(int_handler h) Z88DK_FASTCALL
void remove_SIO(int_handler h) Z88DK_FASTCALL
void remove_VBL(int_handler h) Z88DK_FASTCALL PRESERVES_REGS(iyh
void set_sprite_prop(uint8_t nb, uint8_t prop)
Definition: msx.h:748
void set_2bpp_palette(uint16_t palette)
Definition: msx.h:563
void WRITE_VDP_DATA(uint16_t data) Z88DK_FASTCALL PRESERVES_REGS(b
#define __WRITE_VDP_REG(REG, v)
Definition: msx.h:99
uint8_t _map_tile_offset
void remove_LCD(int_handler h) Z88DK_FASTCALL PRESERVES_REGS(b
void enable_interrupts(void) PRESERVES_REGS(a
void iyh
Definition: msx.h:102
void move_sprite(uint8_t nb, uint8_t x, uint8_t y)
Definition: msx.h:768
uint8_t _submap_tile_offset
void set_tile_submap_compat(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t map_w, const uint8_t *map) Z88DK_CALLEE PRESERVES_REGS(iyh
void h
Definition: msx.h:238
void fill_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint16_t tile) Z88DK_CALLEE PRESERVES_REGS(iyh
void set_win_submap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *map, uint8_t map_w)
Definition: msx.h:622
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: msx.h:627
uint8_t joypad_init(uint8_t npads, joypads_t *joypads) Z88DK_CALLEE
void refresh_OAM(void)
void waitpadup(void) PRESERVES_REGS(b
void SWITCH_ROM(uint8_t bank) Z88DK_FASTCALL PRESERVES_REGS(b
void hide_sprite(uint8_t nb)
Definition: msx.h:794
void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor)
Definition: msx.h:581
uint8_t cancel_pending_interrupts(void)
Definition: msx.h:213
void disable_interrupts(void) PRESERVES_REGS(a
void add_VBL(int_handler h) Z88DK_FASTCALL PRESERVES_REGS(d
void set_native_tile_data(uint16_t start, uint16_t ntiles, const void *src) Z88DK_CALLEE
void e
Definition: msx.h:102
void set_interrupts(uint8_t flags) Z88DK_FASTCALL
void set_bkg_4bpp_data(uint16_t start, uint16_t ntiles, const void *src)
Definition: msx.h:553
void iyl
Definition: msx.h:102
void set_palette(uint8_t first_palette, uint8_t nb_palettes, const palette_color_t *rgb_data) Z88DK_CALLEE
void vsync(void) PRESERVES_REGS(b
uint8_t get_sprite_tile(uint8_t nb)
Definition: msx.h:744
void l
Definition: msx.h:238
void set_vram_byte(uint8_t *addr, uint8_t v) Z88DK_CALLEE PRESERVES_REGS(iyh
void display_off(void)
Definition: msx.h:248
short int int16_t
Definition: stdint.h:44
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:1811
uint8_t x
Definition: gb.h:1812
uint8_t prop
Definition: gb.h:1814
uint8_t tile
Definition: gb.h:1813
uint8_t y
Definition: gb.h:1812
Definition: gb.h:743