Index: emu/all.h
===================================================================
--- emu/all.h	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/all.h	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -31,4 +31,10 @@
 #define err(...) SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__);
 
+#define _ver(_v, _t, ...) { \
+	if (_v > _t) { \
+		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
+	} \
+}
+
 #define fail(...) { \
 	SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
@@ -38,16 +44,16 @@
 #define ARRAY_COUNT(_a) (int32_t)(sizeof (_a) / sizeof (_a)[0])
 
-extern bool sdl_verbose;
-extern bool cpu_verbose;
-extern bool fpu_verbose;
-extern bool vid_verbose;
-extern bool tim_verbose;
-extern bool lcd_verbose;
-extern bool ser_verbose;
-extern bool mid_verbose;
-extern bool fdd_verbose;
-extern bool snd_verbose;
-extern bool led_verbose;
-extern bool kbd_verbose;
+extern int32_t sdl_verbose;
+extern int32_t cpu_verbose;
+extern int32_t fpu_verbose;
+extern int32_t vid_verbose;
+extern int32_t tim_verbose;
+extern int32_t lcd_verbose;
+extern int32_t ser_verbose;
+extern int32_t mid_verbose;
+extern int32_t fdd_verbose;
+extern int32_t snd_verbose;
+extern int32_t led_verbose;
+extern int32_t kbd_verbose;
 
 extern void sdl_init(void);
Index: emu/cpu.c
===================================================================
--- emu/cpu.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/cpu.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (cpu_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
-
-bool cpu_verbose = false;
+#define ver(...) _ver(cpu_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(cpu_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(cpu_verbose, 2, __VA_ARGS__)
+
+int32_t cpu_verbose = 0;
 
 #define CPU_FREQ 7000000
@@ -195,5 +193,5 @@
 uint32_t m68k_read_memory_8(uint32_t addr)
 {
-	ver("mem rd 0x%08x:8", addr);
+	ver3("mem rd 0x%08x:8", addr);
 
 	if (addr >= ram_ro_beg && addr <= ram_ro_end - 1) {
@@ -229,5 +227,5 @@
 uint32_t m68k_read_memory_16(uint32_t addr)
 {
-	ver("mem rd 0x%08x:16", addr);
+	ver3("mem rd 0x%08x:16", addr);
 
 	if (addr >= ram_ro_beg && addr <= ram_ro_end - 2) {
@@ -273,5 +271,5 @@
 uint32_t m68k_read_memory_32(uint32_t addr)
 {
-	ver("mem rd 0x%08x:32", addr);
+	ver3("mem rd 0x%08x:32", addr);
 
 	if (reset) {
@@ -341,5 +339,5 @@
 void m68k_write_memory_8(uint32_t addr, uint32_t val)
 {
-	ver("mem wr 0x%08x:8 0x%02x", addr, val);
+	ver3("mem wr 0x%08x:8 0x%02x", addr, val);
 
 	if (addr >= ram_rw_beg && addr <= ram_rw_end - 1) {
@@ -371,5 +369,5 @@
 void m68k_write_memory_16(uint32_t addr, uint32_t val)
 {
-	ver("mem wr 0x%08x:16 0x%04x", addr, val);
+	ver3("mem wr 0x%08x:16 0x%04x", addr, val);
 
 	if (addr >= ram_rw_beg && addr <= ram_rw_end - 2) {
@@ -404,5 +402,5 @@
 void m68k_write_memory_32(uint32_t addr, uint32_t val)
 {
-	ver("mem wr 0x%08x:32 0x%08x", addr, val);
+	ver3("mem wr 0x%08x:32 0x%08x", addr, val);
 
 	if (addr >= ram_rw_beg && addr <= ram_rw_end - 4) {
Index: emu/fdd.c
===================================================================
--- emu/fdd.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/fdd.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (fdd_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(fdd_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(fdd_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(fdd_verbose, 2, __VA_ARGS__)
 
-bool fdd_verbose = false;
+int32_t fdd_verbose = 0;
 
 void fdd_init(void)
@@ -38,10 +36,10 @@
 void fdd_exec(void)
 {
-	ver("fdd exec");
+	ver3("fdd exec");
 }
 
 uint32_t fdd_read(uint32_t off, int32_t sz)
 {
-	ver("fdd rd %u:%d", off, sz * 8);
+	ver2("fdd rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void fdd_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("fdd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("fdd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/fpu.c
===================================================================
--- emu/fpu.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/fpu.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (fpu_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(fpu_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(fpu_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(fpu_verbose, 2, __VA_ARGS__)
 
-bool fpu_verbose = false;
+int32_t fpu_verbose = 0;
 
 void fpu_init(void)
@@ -38,10 +36,10 @@
 void fpu_exec(void)
 {
-	ver("fpu exec");
+	ver3("fpu exec");
 }
 
 uint32_t fpu_read(uint32_t off, int32_t sz)
 {
-	ver("fpu rd 0x%04x:%d", off, sz * 8);
+	ver2("fpu rd 0x%04x:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void fpu_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("fpu wr 0x%04x:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("fpu wr 0x%04x:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/kbd.c
===================================================================
--- emu/kbd.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/kbd.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (kbd_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(kbd_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(kbd_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(kbd_verbose, 2, __VA_ARGS__)
 
-bool kbd_verbose = false;
+int32_t kbd_verbose = 0;
 
 void kbd_init(void)
@@ -38,10 +36,10 @@
 void kbd_exec(void)
 {
-	ver("kbd exec");
+	ver3("kbd exec");
 }
 
 uint32_t kbd_read(uint32_t off, int32_t sz)
 {
-	ver("kbd rd %u:%d", off, sz * 8);
+	ver2("kbd rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void kbd_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("kbd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("kbd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/lcd.c
===================================================================
--- emu/lcd.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/lcd.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (lcd_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(lcd_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(lcd_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(lcd_verbose, 2, __VA_ARGS__)
 
-bool lcd_verbose = false;
+int32_t lcd_verbose = 0;
 
 void lcd_init(void)
@@ -38,10 +36,10 @@
 void lcd_exec(void)
 {
-	ver("lcd exec");
+	ver3("lcd exec");
 }
 
 uint32_t lcd_read(uint32_t off, int32_t sz)
 {
-	ver("lcd rd %u:%d", off, sz * 8);
+	ver2("lcd rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void lcd_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("lcd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("lcd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/led.c
===================================================================
--- emu/led.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/led.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (led_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(led_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(led_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(led_verbose, 2, __VA_ARGS__)
 
-bool led_verbose = false;
+int32_t led_verbose = 0;
 
 void led_init(void)
@@ -38,10 +36,10 @@
 void led_exec(void)
 {
-	ver("led exec");
+	ver3("led exec");
 }
 
 uint32_t led_read(uint32_t off, int32_t sz)
 {
-	ver("led rd %u:%d", off, sz * 8);
+	ver2("led rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void led_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("led wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("led wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/main.c
===================================================================
--- emu/main.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/main.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -20,5 +20,5 @@
 typedef struct {
 	const char *name;
-	bool *flag;
+	int32_t *flag;
 } verb_flag_t;
 
@@ -82,5 +82,5 @@
 			if (strcmp(argv[i], "all") == 0) {
 				for (k = 0; k < ARRAY_COUNT(verb_flags); ++k) {
-					*verb_flags[k].flag = true;
+					++*verb_flags[k].flag;
 				}
 
@@ -90,5 +90,5 @@
 			for (k = 0; k < ARRAY_COUNT(verb_flags); ++k) {
 				if (strcmp(argv[i], verb_flags[k].name) == 0) {
-					*verb_flags[k].flag = true;
+					++*verb_flags[k].flag;
 					break;
 				}
Index: emu/mid.c
===================================================================
--- emu/mid.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/mid.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (mid_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(mid_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(mid_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(mid_verbose, 2, __VA_ARGS__)
 
-bool mid_verbose = false;
+int32_t mid_verbose = 0;
 
 void mid_init(void)
@@ -38,10 +36,10 @@
 void mid_exec(void)
 {
-	ver("mid exec");
+	ver3("mid exec");
 }
 
 uint32_t mid_read(uint32_t off, int32_t sz)
 {
-	ver("mid rd %u:%d", off, sz * 8);
+	ver2("mid rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void mid_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("mid wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("mid wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/sdl.c
===================================================================
--- emu/sdl.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/sdl.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-bool sdl_verbose = false;
+int32_t sdl_verbose = false;
 
-#define ver(...) { \
-	if (sdl_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(sdl_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(sdl_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(sdl_verbose, 2, __VA_ARGS__)
 
 void sdl_init(void)
Index: emu/ser.c
===================================================================
--- emu/ser.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/ser.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (ser_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(ser_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(ser_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(ser_verbose, 2, __VA_ARGS__)
 
-bool ser_verbose = false;
+int32_t ser_verbose = 0;
 
 void ser_init(void)
@@ -38,10 +36,10 @@
 void ser_exec(void)
 {
-	ver("ser exec");
+	ver3("ser exec");
 }
 
 uint32_t ser_read(uint32_t off, int32_t sz)
 {
-	ver("ser rd %u:%d", off, sz * 8);
+	ver2("ser rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void ser_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("ser wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("ser wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/snd.c
===================================================================
--- emu/snd.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/snd.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (snd_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(snd_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(snd_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(snd_verbose, 2, __VA_ARGS__)
 
-bool snd_verbose = false;
+int32_t snd_verbose = 0;
 
 void snd_init(void)
@@ -38,10 +36,10 @@
 void snd_exec(void)
 {
-	ver("snd exec");
+	ver3("snd exec");
 }
 
 uint32_t snd_read(uint32_t off, int32_t sz)
 {
-	ver("snd rd %u:%d", off, sz * 8);
+	ver2("snd rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void snd_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("snd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("snd wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/tim.c
===================================================================
--- emu/tim.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/tim.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (tim_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(tim_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(tim_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(tim_verbose, 2, __VA_ARGS__)
 
-bool tim_verbose = false;
+int32_t tim_verbose = 0;
 
 void tim_init(void)
@@ -38,10 +36,10 @@
 void tim_exec(void)
 {
-	ver("tim exec");
+	ver3("tim exec");
 }
 
 uint32_t tim_read(uint32_t off, int32_t sz)
 {
-	ver("tim rd %u:%d", off, sz * 8);
+	ver2("tim rd %u:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void tim_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("tim wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("tim wr %u:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
Index: emu/vid.c
===================================================================
--- emu/vid.c	(revision ebc8f6995bded615353b05eef97258804ab37fe5)
+++ emu/vid.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
@@ -18,11 +18,9 @@
 #include <all.h>
 
-#define ver(...) { \
-	if (vid_verbose) { \
-		SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, __VA_ARGS__); \
-	} \
-}
+#define ver(...) _ver(vid_verbose, 0, __VA_ARGS__)
+#define ver2(...) _ver(vid_verbose, 1, __VA_ARGS__)
+#define ver3(...) _ver(vid_verbose, 2, __VA_ARGS__)
 
-bool vid_verbose = false;
+int32_t vid_verbose = 0;
 
 void vid_init(void)
@@ -38,10 +36,10 @@
 void vid_exec(void)
 {
-	ver("vid exec");
+	ver3("vid exec");
 }
 
 uint32_t vid_read(uint32_t off, int32_t sz)
 {
-	ver("vid rd 0x%05x:%d", off, sz * 8);
+	ver2("vid rd 0x%05x:%d", off, sz * 8);
 	return 0;
 }
@@ -49,4 +47,4 @@
 void vid_write(uint32_t off, int32_t sz, uint32_t val)
 {
-	ver("vid wr 0x%05x:%d 0x%0*x", off, sz * 8, sz * 2, val);
+	ver2("vid wr 0x%05x:%d 0x%0*x", off, sz * 8, sz * 2, val);
 }
