diff -Nur a/core/hw/maple/maple_cfg.cpp b/core/hw/maple/maple_cfg.cpp
--- a/core/hw/maple/maple_cfg.cpp	2015-08-27 12:17:34.718561243 -0300
+++ b/core/hw/maple/maple_cfg.cpp	2015-08-27 15:57:10.233166402 -0300
@@ -22,10 +22,12 @@
 */
 void UpdateInputState(u32 port);
 
-extern u16 kcode[4];
-extern u32 vks[4];
-extern s8 joyx[4],joyy[4];
-extern u8 rt[4],lt[4];
+#define NUM_PORTS 4
+
+extern u16 kcode[NUM_PORTS];
+extern u32 vks[NUM_PORTS];
+extern s8 joyx[NUM_PORTS],joyy[NUM_PORTS];
+extern u8 rt[NUM_PORTS],lt[NUM_PORTS];
 
 u8 GetBtFromSgn(s8 val)
 {
@@ -69,10 +71,13 @@
 void mcfg_CreateDevices()
 {
 #if DC_PLATFORM == DC_PLATFORM_DREAMCAST
-	mcfg_Create(MDT_SegaController,0,5);
+	for (int i = 0; i < NUM_PORTS; i++)	
+	{
+		mcfg_Create(MDT_SegaController,i,5);
 
-	mcfg_Create(MDT_SegaVMU,0,0);
-	mcfg_Create(MDT_SegaVMU,0,1);
+		mcfg_Create(MDT_SegaVMU,i,0);
+		mcfg_Create(MDT_SegaVMU,i,1);
+	}
 #else
 	mcfg_Create(MDT_NaomiJamma, 0, 5);
 #endif