# HG changeset patch # User John Tsiombikas # Date 1498106688 -10800 # Node ID 403367d5df5a3a74bca3eb8dd37ca77885eb8ab5 # Parent 108ecc582a113a1f2dfbaac956359405c473f605 added 8x8 font data diff -r 108ecc582a11 -r 403367d5df5a src/dbgfont.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/dbgfont.h Thu Jun 22 07:44:48 2017 +0300 @@ -0,0 +1,868 @@ +#ifndef DBGFONT_H_ +#define DBGFONT_H_ + +#define ROM __attribute__((section(".rodata"))) + +#define FONT_FIRST 32 +#define FONT_COUNT (sizeof font / sizeof *font) + +static unsigned long font[][8] ROM = { + { + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 + }, { + 0x00ff0000, + 0x0ffff000, + 0x0ffff000, + 0x00ff0000, + 0x00ff0000, + 0x00000000, + 0x00ff0000, + 0x00000000 + }, { + 0x0ff0ff00, + 0x0ff0ff00, + 0x0ff0ff00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 + }, { + 0x0ff0ff00, + 0x0ff0ff00, + 0xfffffff0, + 0x0ff0ff00, + 0xfffffff0, + 0x0ff0ff00, + 0x0ff0ff00, + 0x00000000 + }, { + 0x00ff0000, + 0x0fffff00, + 0xff000000, + 0x0ffff000, + 0x0000ff00, + 0xfffff000, + 0x00ff0000, + 0x00000000 + }, { + 0x00000000, + 0xff000ff0, + 0xff00ff00, + 0x000ff000, + 0x00ff0000, + 0x0ff00ff0, + 0xff000ff0, + 0x00000000 + }, { + 0x00fff000, + 0x0ff0ff00, + 0x00fff000, + 0x0fff0ff0, + 0xff0fff00, + 0xff00ff00, + 0x0fff0ff0, + 0x00000000 + }, { + 0x0ff00000, + 0x0ff00000, + 0xff000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 + }, { + 0x000ff000, + 0x00ff0000, + 0x0ff00000, + 0x0ff00000, + 0x0ff00000, + 0x00ff0000, + 0x000ff000, + 0x00000000 + }, { + 0x0ff00000, + 0x00ff0000, + 0x000ff000, + 0x000ff000, + 0x000ff000, + 0x00ff0000, + 0x0ff00000, + 0x00000000 + }, { + 0x00000000, + 0x0ff00ff0, + 0x00ffff00, + 0xffffffff, + 0x00ffff00, + 0x0ff00ff0, + 0x00000000, + 0x00000000 + }, { + 0x00000000, + 0x00ff0000, + 0x00ff0000, + 0xffffff00, + 0x00ff0000, + 0x00ff0000, + 0x00000000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00ff0000, + 0x00ff0000, + 0x0ff00000 + }, { + 0x00000000, + 0x00000000, + 0x00000000, + 0xffffff00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00ff0000, + 0x00ff0000, + 0x00000000 + }, { + 0x00000ff0, + 0x0000ff00, + 0x000ff000, + 0x00ff0000, + 0x0ff00000, + 0xff000000, + 0xf0000000, + 0x00000000 + }, { + 0x0fffff00, + 0xff000ff0, + 0xff00fff0, + 0xff0ffff0, + 0xffff0ff0, + 0xfff00ff0, + 0x0fffff00, + 0x00000000 + }, { + 0x00ff0000, + 0x0fff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0xffffff00, + 0x00000000 + }, { + 0x0ffff000, + 0xff00ff00, + 0x0000ff00, + 0x00fff000, + 0x0ff00000, + 0xff000f00, + 0xffffff00, + 0x00000000 + }, { + 0x0ffff000, + 0xff00ff00, + 0x0000ff00, + 0x00fff000, + 0x0000ff00, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0x000fff00, + 0x00ffff00, + 0x0ff0ff00, + 0xff00ff00, + 0xfffffff0, + 0x0000ff00, + 0x000ffff0, + 0x00000000 + }, { + 0xffffff00, + 0xff000000, + 0xfffff000, + 0x0000ff00, + 0x0000ff00, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0x00fff000, + 0x0ff00000, + 0xff000000, + 0xfffff000, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0xffffff00, + 0xff00ff00, + 0x0000ff00, + 0x000ff000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x00000000 + }, { + 0x0ffff000, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0x0ffff000, + 0xff00ff00, + 0xff00ff00, + 0x0fffff00, + 0x0000ff00, + 0x000ff000, + 0x0fff0000, + 0x00000000 + }, { + 0x00000000, + 0x00ff0000, + 0x00ff0000, + 0x00000000, + 0x00000000, + 0x00ff0000, + 0x00ff0000, + 0x00000000 + }, { + 0x00000000, + 0x00ff0000, + 0x00ff0000, + 0x00000000, + 0x00ff0000, + 0x00ff0000, + 0x0ff00000, + 0x00000000 + }, { + 0x000ff000, + 0x00ff0000, + 0x0ff00000, + 0xff000000, + 0x0ff00000, + 0x00ff0000, + 0x000ff000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xffffff00, + 0x00000000, + 0x00000000, + 0xffffff00, + 0x00000000, + 0x00000000 + }, { + 0x0ff00000, + 0x00ff0000, + 0x000ff000, + 0x0000ff00, + 0x000ff000, + 0x00ff0000, + 0x0ff00000, + 0x00000000 + }, { + 0x0ffff000, + 0xff00ff00, + 0x0000ff00, + 0x000ff000, + 0x00ff0000, + 0x00000000, + 0x00ff0000, + 0x00000000 + }, { + 0x0fffff00, + 0xff000ff0, + 0xff0ffff0, + 0xff0ffff0, + 0xff0ffff0, + 0xff000000, + 0x0ffff000, + 0x00000000 + }, { + 0x00ff0000, + 0x0ffff000, + 0xff00ff00, + 0xff00ff00, + 0xffffff00, + 0xff00ff00, + 0xff00ff00, + 0x00000000 + }, { + 0xffffff00, + 0x0ff00ff0, + 0x0ff00ff0, + 0x0fffff00, + 0x0ff00ff0, + 0x0ff00ff0, + 0xffffff00, + 0x00000000 + }, { + 0x00ffff00, + 0x0ff00ff0, + 0xff000000, + 0xff000000, + 0xff000000, + 0x0ff00ff0, + 0x00ffff00, + 0x00000000 + }, { + 0xfffff000, + 0x0ff0ff00, + 0x0ff00ff0, + 0x0ff00ff0, + 0x0ff00ff0, + 0x0ff0ff00, + 0xfffff000, + 0x00000000 + }, { + 0xfffffff0, + 0x0ff000f0, + 0x0ff0f000, + 0x0ffff000, + 0x0ff0f000, + 0x0ff000f0, + 0xfffffff0, + 0x00000000 + }, { + 0xfffffff0, + 0x0ff000f0, + 0x0ff0f000, + 0x0ffff000, + 0x0ff0f000, + 0x0ff00000, + 0xffff0000, + 0x00000000 + }, { + 0x00ffff00, + 0x0ff00ff0, + 0xff000000, + 0xff000000, + 0xff00fff0, + 0x0ff00ff0, + 0x00fffff0, + 0x00000000 + }, { + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xffffff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x00000000 + }, { + 0x0ffff000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x0ffff000, + 0x00000000 + }, { + 0x000ffff0, + 0x0000ff00, + 0x0000ff00, + 0x0000ff00, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0xfff00ff0, + 0x0ff00ff0, + 0x0ff0ff00, + 0x0ffff000, + 0x0ff0ff00, + 0x0ff00ff0, + 0xfff00ff0, + 0x00000000 + }, { + 0xffff0000, + 0x0ff00000, + 0x0ff00000, + 0x0ff00000, + 0x0ff000f0, + 0x0ff00ff0, + 0xfffffff0, + 0x00000000 + }, { + 0xff000ff0, + 0xfff0fff0, + 0xfffffff0, + 0xfffffff0, + 0xff0f0ff0, + 0xff000ff0, + 0xff000ff0, + 0x00000000 + }, { + 0xff000ff0, + 0xfff00ff0, + 0xffff0ff0, + 0xff0ffff0, + 0xff00fff0, + 0xff000ff0, + 0xff000ff0, + 0x00000000 + }, { + 0x00fff000, + 0x0ff0ff00, + 0xff000ff0, + 0xff000ff0, + 0xff000ff0, + 0x0ff0ff00, + 0x00fff000, + 0x00000000 + }, { + 0xffffff00, + 0x0ff00ff0, + 0x0ff00ff0, + 0x0fffff00, + 0x0ff00000, + 0x0ff00000, + 0xffff0000, + 0x00000000 + }, { + 0x0ffff000, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff0fff00, + 0x0ffff000, + 0x000fff00, + 0x00000000 + }, { + 0xffffff00, + 0x0ff00ff0, + 0x0ff00ff0, + 0x0fffff00, + 0x0ff0ff00, + 0x0ff00ff0, + 0xfff00ff0, + 0x00000000 + }, { + 0x0ffff000, + 0xff00ff00, + 0xfff00000, + 0x0fff0000, + 0x000fff00, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0xffffff00, + 0xf0ff0f00, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x0ffff000, + 0x00000000 + }, { + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xffffff00, + 0x00000000 + }, { + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0x00ff0000, + 0x00000000 + }, { + 0xff000ff0, + 0xff000ff0, + 0xff000ff0, + 0xff0f0ff0, + 0xfffffff0, + 0xfff0fff0, + 0xff000ff0, + 0x00000000 + }, { + 0xff000ff0, + 0xff000ff0, + 0x0ff0ff00, + 0x00fff000, + 0x00fff000, + 0x0ff0ff00, + 0xff000ff0, + 0x00000000 + }, { + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0x00ff0000, + 0x00ff0000, + 0x0ffff000, + 0x00000000 + }, { + 0xfffffff0, + 0xff000ff0, + 0xf000ff00, + 0x000ff000, + 0x00ff00f0, + 0x0ff00ff0, + 0xfffffff0, + 0x00000000 + }, { + 0x0ffff000, + 0x0ff00000, + 0x0ff00000, + 0x0ff00000, + 0x0ff00000, + 0x0ff00000, + 0x0ffff000, + 0x00000000 + }, { + 0xff000000, + 0x0ff00000, + 0x00ff0000, + 0x000ff000, + 0x0000ff00, + 0x00000ff0, + 0x000000f0, + 0x00000000 + }, { + 0x0ffff000, + 0x000ff000, + 0x000ff000, + 0x000ff000, + 0x000ff000, + 0x000ff000, + 0x0ffff000, + 0x00000000 + }, { + 0x000f0000, + 0x00fff000, + 0x0ff0ff00, + 0xff000ff0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0xffffffff + }, { + 0x00ff0000, + 0x00ff0000, + 0x000ff000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x0ffff000, + 0x0000ff00, + 0x0fffff00, + 0xff00ff00, + 0x0fff0ff0, + 0x00000000 + }, { + 0xfff00000, + 0x0ff00000, + 0x0ff00000, + 0x0fffff00, + 0x0ff00ff0, + 0x0ff00ff0, + 0xff0fff00, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x0ffff000, + 0xff00ff00, + 0xff000000, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0x000fff00, + 0x0000ff00, + 0x0000ff00, + 0x0fffff00, + 0xff00ff00, + 0xff00ff00, + 0x0fff0ff0, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x0ffff000, + 0xff00ff00, + 0xffffff00, + 0xff000000, + 0x0ffff000, + 0x00000000 + }, { + 0x00fff000, + 0x0ff0ff00, + 0x0ff00000, + 0xffff0000, + 0x0ff00000, + 0x0ff00000, + 0xffff0000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x0fff0ff0, + 0xff00ff00, + 0xff00ff00, + 0x0fffff00, + 0x0000ff00, + 0xfffff000 + }, { + 0xfff00000, + 0x0ff00000, + 0x0ff0ff00, + 0x0fff0ff0, + 0x0ff00ff0, + 0x0ff00ff0, + 0xfff00ff0, + 0x00000000 + }, { + 0x00ff0000, + 0x00000000, + 0x0fff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x0ffff000, + 0x00000000 + }, { + 0x0000ff00, + 0x00000000, + 0x0000ff00, + 0x0000ff00, + 0x0000ff00, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000 + }, { + 0xfff00000, + 0x0ff00000, + 0x0ff00ff0, + 0x0ff0ff00, + 0x0ffff000, + 0x0ff0ff00, + 0xfff00ff0, + 0x00000000 + }, { + 0x0fff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x00ff0000, + 0x0ffff000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xff00ff00, + 0xfffffff0, + 0xfffffff0, + 0xff0f0ff0, + 0xff000ff0, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xfffff000, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x0ffff000, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xff0fff00, + 0x0ff00ff0, + 0x0ff00ff0, + 0x0fffff00, + 0x0ff00000, + 0xffff0000 + }, { + 0x00000000, + 0x00000000, + 0x0fff0ff0, + 0xff00ff00, + 0xff00ff00, + 0x0fffff00, + 0x0000ff00, + 0x000ffff0 + }, { + 0x00000000, + 0x00000000, + 0xff0fff00, + 0x0fff0ff0, + 0x0ff00ff0, + 0x0ff00000, + 0xffff0000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0x0fffff00, + 0xff000000, + 0x0ffff000, + 0x0000ff00, + 0xfffff000, + 0x00000000 + }, { + 0x000f0000, + 0x00ff0000, + 0x0fffff00, + 0x00ff0000, + 0x00ff0000, + 0x00ff0f00, + 0x000ff000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x0fff0ff0, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x0ffff000, + 0x00ff0000, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xff000ff0, + 0xff0f0ff0, + 0xfffffff0, + 0xfffffff0, + 0x0ff0ff00, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xff000ff0, + 0x0ff0ff00, + 0x00fff000, + 0x0ff0ff00, + 0xff000ff0, + 0x00000000 + }, { + 0x00000000, + 0x00000000, + 0xff00ff00, + 0xff00ff00, + 0xff00ff00, + 0x0fffff00, + 0x0000ff00, + 0xfffff000 + }, { + 0x00000000, + 0x00000000, + 0xffffff00, + 0xf00ff000, + 0x00ff0000, + 0x0ff00f00, + 0xffffff00, + 0x00000000 + }, { + 0x000fff00, + 0x00ff0000, + 0x00ff0000, + 0xfff00000, + 0x00ff0000, + 0x00ff0000, + 0x000fff00, + 0x00000000 + }, { + 0x000ff000, + 0x000ff000, + 0x000ff000, + 0x00000000, + 0x000ff000, + 0x000ff000, + 0x000ff000, + 0x00000000 + }, { + 0xfff00000, + 0x00ff0000, + 0x00ff0000, + 0x000fff00, + 0x00ff0000, + 0x00ff0000, + 0xfff00000, + 0x00000000 + }, { + 0x0fff0ff0, + 0xf00fff00, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 + } +}; + +#endif /* DBGFONT_H_ */ diff -r 108ecc582a11 -r 403367d5df5a src/debug.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/debug.c Thu Jun 22 07:44:48 2017 +0300 @@ -0,0 +1,17 @@ +#include "debug.h" +#include "dbgfont.h" + +static int init_done; + +static void init_font(void) +{ + /* TODO allocate tiles, prepare palette etc */ +} + +void dbg_print(const char *s) +{ + if(!init_done) { + init_font(); + init_done = 1; + } +} diff -r 108ecc582a11 -r 403367d5df5a src/debug.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/debug.h Thu Jun 22 07:44:48 2017 +0300 @@ -0,0 +1,6 @@ +#ifndef MD_DEBUG_H_ +#define MD_DEBUG_H_ + +void dbg_print(const char *s); + +#endif /* MD_DEBUG_H_ */ diff -r 108ecc582a11 -r 403367d5df5a src/io.h --- a/src/io.h Wed Jun 21 06:49:50 2017 +0300 +++ b/src/io.h Thu Jun 22 07:44:48 2017 +0300 @@ -22,6 +22,9 @@ #define IO_REG_LOCK *((volatile uint8_t*)0xa14000) #define IO_REG_TMSS *((volatile uint8_t*)0xa14101) +#define IO_REG_DATA(x) *((volatile uint8_t*)0xa10003 + ((x) << 1)) +#define IO_REG_CTRL(x) *((volatile uint8_t*)0xa10009 + ((x) << 1)) + enum { IO_VER_VERSION_MASK = 0x0f, @@ -30,4 +33,32 @@ IO_VER_NONJP = 0x80 }; +enum { + IO_PAD_UP = 1, + IO_PAD_DOWN = 2, + IO_PAD_LEFT = 4, + IO_PAD_RIGHT = 8, + IO_PAD_B = 16, + IO_PAD_C = 32, + IO_PAD_A = 64, + IO_PAD_START = 128 +}; + +static inline void io_setdir(int port, uint8_t dir) +{ + IO_REG_CTRL(port) = dir; +} + +static inline uint16_t io_readpad(int port) +{ + uint16_t bnstate; + + io_setdir(port, 0x40); /* pin 6 (multiplexer) output, 0-5 inputs */ + IO_REG_DATA(port) = 0x40; /* select mode 1 */ + 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; +} + #endif /* MEGADRIVE_IO_H_ */ diff -r 108ecc582a11 -r 403367d5df5a src/main.c --- a/src/main.c Wed Jun 21 06:49:50 2017 +0300 +++ b/src/main.c Thu Jun 22 07:44:48 2017 +0300 @@ -25,6 +25,8 @@ VDP_PACK_RGB(7, 0, 3) /* 15: fixed */ }; +static int running = 1; + int main(void) { @@ -58,7 +60,15 @@ //vdp_enable_hintr(12); vdp_enable_vintr(); - for(;;); + for(;;) { + uint16_t bnstate = io_readpad(0); + + if(bnstate & IO_PAD_START) { + running = !running; + } + + vdp_wait_vblank(); + } return 0; } @@ -89,7 +99,11 @@ void vblank_handler(void) { int idx = CYCLE_BEG; - uint16_t first = pal[idx]; + uint16_t first; + + if(!running) return; + + first = pal[idx]; vdp_begin_palette(0, idx); while(idx < CYCLE_END) { diff -r 108ecc582a11 -r 403367d5df5a src/vdp.h --- a/src/vdp.h Wed Jun 21 06:49:50 2017 +0300 +++ b/src/vdp.h Thu Jun 22 07:44:48 2017 +0300 @@ -247,6 +247,11 @@ vdp_setreg(VDP_REG_SCROLL_TAB, addr >> 10); } +static inline void vdp_wait_vblank(void) +{ + while(!(VDP_PORT_STATUS & 0x0008)); +} + void vdp_init(void); #endif /* VDP_H_ */