megadrive_test2

diff src/vdp.h @ 1:2560a8be8cb8

hblank interrupt test
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 14 Mar 2017 09:02:43 +0200
parents ce1b05082ac4
children 72ab63f262bf
line diff
     1.1 --- a/src/vdp.h	Tue Mar 14 05:59:33 2017 +0200
     1.2 +++ b/src/vdp.h	Tue Mar 14 09:02:43 2017 +0200
     1.3 @@ -20,7 +20,7 @@
     1.4  	VDP_REG_NAMETAB_B		= 4,
     1.5  	VDP_REG_SPRITE_TAB		= 5,
     1.6  	VDP_REG_BGCOL			= 7,
     1.7 -	VDP_REG_INTR			= 10,
     1.8 +	VDP_REG_HINTR			= 10,
     1.9  	VDP_REG_MODE3			= 11,
    1.10  	VDP_REG_MODE4			= 12,
    1.11  	VDP_REG_SCROLL_TAB		= 13,
    1.12 @@ -120,7 +120,7 @@
    1.13  
    1.14  static inline void vdp_setreg(int reg, uint8_t value)
    1.15  {
    1.16 -	/*vdp_reg_shadow[reg] = value;*/
    1.17 +	vdp_reg_shadow[reg] = value;
    1.18  	VDP_PORT_CTL = (uint16_t)value | (reg << 8) | (uint16_t)0x8000;
    1.19  }
    1.20  
    1.21 @@ -152,6 +152,27 @@
    1.22  	VDP_PORT_DATA = VDP_PACK_RGB(r, g, b);
    1.23  }
    1.24  
    1.25 +static inline void vdp_enable_vintr(void)
    1.26 +{
    1.27 +	vdp_setreg(VDP_REG_MODE2, vdp_getreg(VDP_REG_MODE2) | VDP_MODE2_VINTR);
    1.28 +}
    1.29 +
    1.30 +static inline void vdp_disable_vintr(void)
    1.31 +{
    1.32 +	vdp_setreg(VDP_REG_MODE2, vdp_getreg(VDP_REG_MODE2) & ~VDP_MODE2_VINTR);
    1.33 +}
    1.34 +
    1.35 +static inline void vdp_enable_hintr(int counter)
    1.36 +{
    1.37 +	vdp_setreg(VDP_REG_HINTR, counter);
    1.38 +	vdp_setreg(VDP_REG_MODE1, vdp_getreg(VDP_REG_MODE1) | VDP_MODE1_HINTR);
    1.39 +}
    1.40 +
    1.41 +static inline void vdp_disable_hintr(void)
    1.42 +{
    1.43 +	vdp_setreg(VDP_REG_MODE1, vdp_getreg(VDP_REG_MODE1) & ~VDP_MODE1_HINTR);
    1.44 +}
    1.45 +
    1.46  void vdp_init(void);
    1.47  
    1.48  #endif	/* VDP_H_ */