28#define VDP_DATA_PORT 0xC00000
33#define VDP_CTRL_PORT 0xC00004
38#define VDP_HVCOUNTER_PORT 0xC00008
44#define GFX_DATA_PORT _Pragma("GCC error \"This definition is deprecated, use VDP_DATA_PORT instead.\"")
50#define GFX_CTRL_PORT _Pragma("GCC error \"This definition is deprecated, use VDP_CTRL_PORT instead.\"")
55#define GFX_HVCOUNTER_PORT _Pragma("GCC error \"This definition is deprecated, use VDP_HVCOUNTER_PORT instead.\"")
62#define VDP_FIFOEMPTY_FLAG (1 << 9)
67#define VDP_FIFOFULL_FLAG (1 << 8)
72#define VDP_VINTPENDING_FLAG (1 << 7)
77#define VDP_SPROVERFLOW_FLAG (1 << 6)
82#define VDP_SPRCOLLISION_FLAG (1 << 5)
87#define VDP_ODDFRAME_FLAG (1 << 4)
92#define VDP_VBLANK_FLAG (1 << 3)
97#define VDP_HBLANK_FLAG (1 << 2)
102#define VDP_DMABUSY_FLAG (1 << 1)
107#define VDP_PALMODE_FLAG (1 << 0)
113#define VDP_PLAN_A _Pragma("GCC error \"This definition is deprecated, use VDP_BG_A instead.\"")
118#define VDP_PLAN_B _Pragma("GCC error \"This definition is deprecated, use VDP_BG_B instead.\"")
123#define VDP_PLAN_WINDOW _Pragma("GCC error \"This definition is deprecated, use VDP_WINDOW instead.\"")
129#define VDP_BG_A bga_addr
134#define VDP_BG_B bgb_addr
139#define VDP_WINDOW window_addr
144#define VDP_HSCROLL_TABLE hscrl_addr
149#define VDP_SPRITE_TABLE slist_addr
154#define VDP_MAPS_START maps_addr
160#define HSCROLL_PLANE 0
165#define HSCROLL_TILE 2
170#define HSCROLL_LINE 3
176#define VSCROLL_PLANE 0
181#define VSCROLL_COLUMN 1
186#define VSCROLL_2TILE _Pragma("GCC error \"This definition is deprecated, use VSCROLL_COLUMN instead.\"")
193#define INTERLACED_NONE 0
199#define INTERLACED_MODE1 1
205#define INTERLACED_MODE2 2
218#define TILE_INDEX_MASK (0xFFFF / TILE_SIZE)
224#define TILE_SPACE VDP_MAPS_START
230#define TILE_MAX_NUM (TILE_SPACE / TILE_SIZE)
235#define TILE_MAX_INDEX (TILE_MAXNUM - 1)
240#define TILE_SYSTEM_INDEX 0x0000
245#define TILE_SYSTEM_LENGTH 16
250#define TILE_USER_INDEX (TILE_SYSTEM_INDEX + TILE_SYSTEM_LENGTH)
255#define TILE_FONT_INDEX (TILE_MAX_NUM - FONT_LEN)
260#define TILE_SPRITE_INDEX (TILE_FONT_INDEX - spriteVramSize)
265#define TILE_USER_LENGTH ((userTileMaxIndex - TILE_USER_INDEX) + 1)
270#define TILE_USER_MAX_INDEX userTileMaxIndex
276#define TILE_MAXNUM _Pragma("GCC error \"This definition is deprecated, use TILE_MAX_NUM instead.\"")
281#define TILE_MAXINDEX _Pragma("GCC error \"This definition is deprecated, use TILE_MAX_INDEX instead.\"")
285#define TILE_SYSTEM_LENGHT _Pragma("GCC error \"This definition is deprecated, use TILE_SYSTEM_LENGTH instead.\"")
290#define TILE_SYSTEMLENGTH _Pragma("GCC error \"This definition is deprecated, use TILE_SYSTEM_LENGTH instead.\"")
295#define TILE_SYSTEMINDEX _Pragma("GCC error \"This definition is deprecated, use TILE_SYSTEM_INDEX instead.\"")
300#define TILE_USERINDEX _Pragma("GCC error \"This definition is deprecated, use TILE_USER_INDEX instead.\"")
305#define TILE_FONTINDEX _Pragma("GCC error \"This definition is deprecated, use TILE_FONT_INDEX instead.\"")
310#define TILE_SPRITEINDEX _Pragma("GCC error \"This definition is deprecated, use TILE_SPRITE_INDEX instead.\"")
315#define TILE_USERLENGTH _Pragma("GCC error \"This definition is deprecated, use TILE_USER_LENGTH instead.\"")
320#define TILE_USERMAXINDEX _Pragma("GCC error \"This definition is deprecated, use TILE_USER_MAX_INDEX instead.\"")
326#define TILE_SYSTEM (TILE_SYSTEM_INDEX * TILE_SIZE)
331#define TILE_USER (TILE_USER_INDEX * TILE_SIZE)
336#define TILE_FONT (TILE_FONT_INDEX * TILE_SIZE)
363#define VDP_READ_VRAM_ADDR(adr) (((0x0000 + ((adr) & 0x3FFF)) << 16) + (((adr) >> 14) | 0x00))
368#define VDP_READ_CRAM_ADDR(adr) (((0x0000 + ((adr) & 0x7F)) << 16) + 0x20)
373#define VDP_READ_VSRAM_ADDR(adr) (((0x0000 + ((adr) & 0x7F)) << 16) + 0x10)
379#define VDP_WRITE_VRAM_ADDR(adr) (((0x4000 + ((adr) & 0x3FFF)) << 16) + (((adr) >> 14) | 0x00))
384#define VDP_WRITE_CRAM_ADDR(adr) (((0xC000 + ((adr) & 0x7F)) << 16) + 0x00)
389#define VDP_WRITE_VSRAM_ADDR(adr) (((0x4000 + ((adr) & 0x7F)) << 16) + 0x10)
395#define VDP_DMA_VRAM_ADDR(adr) (((0x4000 + ((adr) & 0x3FFF)) << 16) + (((adr) >> 14) | 0x80))
400#define VDP_DMA_CRAM_ADDR(adr) (((0xC000 + ((adr) & 0x7F)) << 16) + 0x80)
405#define VDP_DMA_VSRAM_ADDR(adr) (((0x4000 + ((adr) & 0x7F)) << 16) + 0x90)
411#define VDP_DMA_VRAMCOPY_ADDR(adr) (((0x4000 + ((adr) & 0x3FFF)) << 16) + (((adr) >> 14) | 0xC0))
417#define VDP_VERT_SCROLL(adr) VDP_WRITE_VSRAM_ADDR(adr)
422#define VDP_HORZ_SCROLL(adr) VDP_WRITE_VRAM_ADDR(VDP_SCROLL_H + (adr))
428#define GFX_READ_VRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_READ_VRAM_ADDR instead.\""))
433#define GFX_READ_CRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_READ_CRAM_ADDR instead.\"")
438#define GFX_READ_VSRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_READ_VSRAM_ADDR instead.\"")
443#define GFX_WRITE_VRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_WRITE_VRAM_ADDR instead.\"")
448#define GFX_WRITE_CRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_WRITE_CRAM_ADDR instead.\"")
453#define GFX_WRITE_VSRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_WRITE_VSRAM_ADDR instead.\"")
458#define GFX_DMA_VRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_DMA_VRAM_ADDR instead.\"")
463#define GFX_DMA_CRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_DMA_CRAM_ADDR instead.\"")
468#define GFX_DMA_VSRAM_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_DMA_VSRAM_ADDR instead.\"")
473#define GFX_DMA_VRAMCOPY_ADDR(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_DMA_VRAMCOPY_ADDR instead.\"")
478#define GFX_VERT_SCROLL(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_VERT_SCROLL instead.\"")
483#define GFX_HORZ_SCROLL(adr) _Pragma("GCC error \"This definition is deprecated, use VDP_HORZ_SCROLL instead.\"")
490#define GET_VDP_STATUS(flag) ((*(vu16*)(VDP_CTRL_PORT)) & (flag))
495#define IS_PAL_SYSTEM GET_VDP_STATUS(VDP_PALMODE_FLAG)
501#define GET_HVCOUNTER (*(vu16*)(VDP_HVCOUNTER_PORT))
506#define GET_HCOUNTER (GET_HVCOUNTER & 0xFF)
511#define GET_VCOUNTER (GET_HVCOUNTER >> 8)
520 BG_A = 0, BG_B = 1, WINDOW = 2
525extern u16 window_addr;
528extern u16 hscrl_addr;
529extern u16 slist_addr;
531extern u16 userTileMaxIndex;
537extern u16 screenWidth;
542extern u16 screenHeight;
549extern u16 planeWidth;
556extern u16 planeHeight;
563extern u16 windowWidth;
570extern u16 planeWidthSft;
577extern u16 planeHeightSft;
584extern u16 windowWidthSft;
719#define VDP_setPlanSize(w, h) _Pragma("GCC error \"This definition is deprecated, use VDP_setPlaneSize(..) instead.\"")
862#define VDP_getAPlanAddress() _Pragma("GCC error \"This definition is deprecated, use VDP_getBGAAddress() instead.\"")
867#define VDP_getBPlanAddress() _Pragma("GCC error \"This definition is deprecated, use VDP_getBGBAddress() instead.\"")
878#define VDP_getWindowPlanAddress() _Pragma("GCC error \"This definition is deprecated, use VDP_getWindowAddress() instead.\"")
914#define VDP_setAPlanAddress(value) \
915_Pragma("GCC error \"This definition is deprecated, use VDP_setBGAAddress(..) instead.\"")
920#define VDP_setBPlanAddress(value) \
921_Pragma("GCC error \"This definition is deprecated, use VDP_setBGBAddress(..) instead.\"")
936#define VDP_setWindowPlanAddress(value) _Pragma("GCC error \"This definition is deprecated, use VDP_setWindowAddress(..) instead.\"")
unsigned short u16
Definition types.h:100
unsigned char u8
Definition types.h:95
void VDP_setScanMode(u16 mode)
Sets the scan mode of the display.
Definition vdp.c:765
void VDP_setWindowOff()
Turns off the window.
Definition vdp.c:811
void VDP_setSpriteListAddress(u16 value)
Set VRAM address (location) of Sprite list. The address should be at multiple of $400 in H40 and $20...
Definition vdp.c:736
void VDP_setHIntCounter(u8 value)
Set Horizontal interrupt counter value.
Definition vdp.c:657
void VDP_setBGBAddress(u16 value)
Set VRAM address (location) of BG B tilemap. The address should be at multiple of $2000 Ex: VDP_...
Definition vdp.c:707
u8 VDP_getAutoInc(void)
Returns auto increment register value.
Definition vdp.c:559
void VDP_waitFIFOEmpty(void)
Wait for VDP FIFO to be empty.
Definition vdp.c:847
void VDP_setWindowOnBottom(u16 rows)
Positions the window from the bottom edge of the screen by the specified number of rows (tiles).
Definition vdp.c:822
void VDP_setWindowAddress(u16 value)
Set VRAM address (location) of Window tilemap. The address should be at multiple of $1000 in H40 and...
Definition vdp.c:720
void VDP_setHInterrupt(bool value)
Enable or Disable Horizontal interrupt.
Definition vdp.c:618
void VDP_resetScreen(void)
Reset background planes and palettes.
Definition vdp.c:134
VDPPlane
Type used to define on which plane to work (used by some methods).
Definition vdp.h:519
void VDP_setBGAAddress(u16 value)
Set VRAM address (location) of BG A tilemap. The address should be at multiple of $2000 Ex: VDP_s...
Definition vdp.c:694
u8 VDP_getBackgroundColor(void)
Returns the background color index.
Definition vdp.c:543
void VDP_setAutoInc(u8 value)
Set auto increment register value.
Definition vdp.c:564
void VDP_setHVLatching(bool value)
Set HV counter latching on INT2 (used for light gun)
Definition vdp.c:596
void VDP_waitVActive(bool forceNext)
Wait for next vertical active area (end of vertical blank period)
Definition vdp.c:935
void VDP_setVInterrupt(bool value)
Enable or Disable Vertical interrupt (it's strongly recommanded to keep it enabled).
Definition vdp.c:607
void VDP_setWindowOnTop(u16 rows)
Positions the window from the top edge of the screen by the specified number of rows (tiles).
Definition vdp.c:817
u16 VDP_getSpriteListAddress(void)
Get VRAM address (location) of Sprite list.
Definition vdp.c:683
void VDP_setScreenHeight224(void)
Set vertical resolution to 224 pixels.
Definition vdp.c:351
u8 VDP_getHVLatching(void)
Returns HV counter latching on INT2 (used for light gun)
Definition vdp.c:591
void VDP_setWindowOnRight(u16 cols)
Positions the window from the right edge of the screen by the specified number of columns,...
Definition vdp.c:832
u16 VDP_getScanlineNumber(void)
Returns number of total scanline.
Definition vdp.c:340
void VDP_init(void)
Initialize the whole VDP sub system.
Definition vdp.c:65
void VDP_setReg(u16 reg, u8 value)
Set VDP register value.
Definition vdp.c:200
void VDP_setWindowHPos(u16 right, u16 pos)
Sets the window Horizontal position.
Definition vdp.c:783
bool VDP_waitVSync(void)
Wait for Vertical Synchro.
Definition vdp.c:953
u16 VDP_getScreenHeight(void)
Returns vertical screen resolution.
Definition vdp.c:346
void VDP_setHScrollTableAddress(u16 value)
Set VRAM address (location) of H Scroll table. The address should be at multiple of $400 Ex: VDP...
Definition vdp.c:752
void VDP_setScreenWidth320(void)
Set horizontal resolution to 320 pixels.
Definition vdp.c:394
u16 VDP_getBGAAddress(void)
Get VRAM address (location) of BG A tilemap.
Definition vdp.c:668
void VDP_setWindowVPos(u16 down, u16 pos)
Sets the window Vertical position.
Definition vdp.c:797
u16 VDP_getAdjustedVCounter(void)
Return an enhanced V Counter representation.
Definition vdp.c:990
u16 VDP_getBGBAddress(void)
Get VRAM address (location) of BG B tilemap.
Definition vdp.c:673
u8 VDP_getHIntCounter(void)
Get Horizontal interrupt counter value.
Definition vdp.c:652
void VDP_setEnable(bool value)
Set VDP enable state.
Definition vdp.c:328
u8 VDP_getReg(u16 reg)
Get VDP register value.
Definition vdp.c:194
u8 VDP_getDMAEnabled(void)
Returns DMA enabled state.
Definition vdp.c:575
void VDP_showCPULoad(u16 x, u16 y)
Display the estimated CPU load (in %).
Definition vdp.c:1014
bool VDP_getEnable(void)
Returns VDP enable state.
Definition vdp.c:318
u16 VDP_getScreenWidth(void)
Returns horizontal screen resolution.
Definition vdp.c:376
void VDP_setExtInterrupt(bool value)
Enable or Disable External interrupt.
Definition vdp.c:629
void VDP_waitDMACompletion(void)
Wait for DMA operation to complete - same as DMA_waitCompletion()
Definition vdp.c:842
bool VDP_waitVBlank(bool forceNext)
Wait for next vertical blank period (same as VDP_waitVSync())
Definition vdp.c:887
void VDP_setBackgroundColor(u8 value)
Set the background color index.
Definition vdp.c:548
void VDP_setScrollingMode(u16 hscroll, u16 vscroll)
Set plane scrolling mode.
Definition vdp.c:531
void VDP_setScreenWidth256(void)
Set horizontal resolution to 256 pixels.
Definition vdp.c:381
u16 VDP_getPlaneHeight(void)
Return background plane height (in tile).
Definition vdp.c:413
void VDP_setDMAEnabled(bool value)
Set DMA enabled state.
Definition vdp.c:580
void VDP_setPlaneSize(u16 w, u16 h, bool setupVram)
Set background plane size (in tile). WARNING: take attention to properly setup VRAM so tilemaps has ...
Definition vdp.c:418
u16 VDP_getHScrollTableAddress(void)
Get VRAM address (location) of H SCroll table.
Definition vdp.c:688
u16 VDP_getWindowAddress(void)
Get VRAM address (location) of Window tilemap.
Definition vdp.c:678
u8 VDP_getHorizontalScrollingMode(void)
Returns plane horizontal scrolling mode.
Definition vdp.c:526
bool VDP_waitVInt(void)
Wait for next Vertical Interruption.
Definition vdp.c:853
void VDP_setHilightShadow(bool value)
Enable or Disable Hilight / Shadow effect.
Definition vdp.c:640
u16 VDP_getPlaneWidth(void)
Return background plane width (in tile).
Definition vdp.c:408
bool VDP_isEnable(void)
Returns VDP enable state.
Definition vdp.c:323
void VDP_showFPS(u16 asFloat, u16 x, u16 y)
Display number of Frame Per Second.
Definition vdp.c:996
u8 VDP_getVerticalScrollingMode(void)
Returns plane vertical scrolling mode.
Definition vdp.c:521
void VDP_setWindowOnLeft(u16 cols)
Positions the window from the left edge of the screen by the specified number of columns,...
Definition vdp.c:827
void VDP_setScreenHeight240(void)
Set vertical resolution to 240 pixels.
Definition vdp.c:362
void VDP_setWindowFullScreen()
Positions the window to full screen.
Definition vdp.c:837