# HG changeset patch # User John Tsiombikas # Date 1498253590 -10800 # Node ID 6ecf2f3ff05ad732c09d8995332d1e037d2d2b40 # Parent 403367d5df5a3a74bca3eb8dd37ca77885eb8ab5 - better pad input handling - switch between 28 and 30 vertical tiles by pressing C diff -r 403367d5df5a -r 6ecf2f3ff05a Makefile --- a/Makefile Thu Jun 22 07:44:48 2017 +0300 +++ b/Makefile Sat Jun 24 00:33:10 2017 +0300 @@ -2,6 +2,7 @@ asrc = $(wildcard src/*.s) aSsrc = $(wildcard src/*.S) obj = $(asrc:.s=.o) $(aSsrc:.S=.o) $(csrc:.c=.o) +dep = $(csrc:.c=.d) name = test2 elf = $(name).elf @@ -38,10 +39,19 @@ tunnel.ppm: tools/tunnel >$@ +-include $(dep) + +%.d: %.c + @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@ + .PHONY: clean clean: rm -f $(obj) $(elf) $(bin) tun_data.h tunnel.ppm +.PHONY: cleandep +cleandep: + rm -f $(dep) + .PHONY: run run: $(bin) gens-sdl $< diff -r 403367d5df5a -r 6ecf2f3ff05a src/intr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/intr.h Sat Jun 24 00:33:10 2017 +0300 @@ -0,0 +1,7 @@ +#ifndef INTR_H_ +#define INTR_H_ + +void enable_intr(void); +void disable_intr(void); + +#endif /* INTR_H_ */ diff -r 403367d5df5a -r 6ecf2f3ff05a src/io.h --- a/src/io.h Thu Jun 22 07:44:48 2017 +0300 +++ b/src/io.h Sat Jun 24 00:33:10 2017 +0300 @@ -58,7 +58,7 @@ bnstate = IO_REG_DATA(port); IO_REG_DATA(port) = 0; /* select mode 0 */ bnstate |= (IO_REG_DATA(port) << 2) & (IO_PAD_A | IO_PAD_START); - return bnstate; + return ~bnstate; } #endif /* MEGADRIVE_IO_H_ */ diff -r 403367d5df5a -r 6ecf2f3ff05a src/main.c --- a/src/main.c Thu Jun 22 07:44:48 2017 +0300 +++ b/src/main.c Sat Jun 24 00:33:10 2017 +0300 @@ -1,6 +1,8 @@ #include #include "vdp.h" #include "io.h" +#include "pad.h" +#include "intr.h" #include "tun_data.h" #define NAMETAB_A 6 @@ -25,8 +27,6 @@ VDP_PACK_RGB(7, 0, 3) /* 15: fixed */ }; -static int running = 1; - int main(void) { @@ -42,7 +42,6 @@ for(i=0; i<16; i++) { VDP_PORT_DATA = pal[i]; } - vdp_set_bgcolor(0, 0); for(i=0; i> 10); } +static inline void vdp_wait_vblank_start(void) +{ + while(!(VDP_PORT_STATUS & VDP_STAT_VBLANK)); +} + +static inline void vdp_wait_vblank_end(void) +{ + while(VDP_PORT_STATUS & VDP_STAT_VBLANK); +} + static inline void vdp_wait_vblank(void) { - while(!(VDP_PORT_STATUS & 0x0008)); + vdp_wait_vblank_start(); + vdp_wait_vblank_end(); } void vdp_init(void);