shithub: sms

Download patch

ref: f7586fdd640283d9d7aa909e2055d5f578572ae3
parent: 96bb44290d4c7f3d6719cfcb877954c4cedc7976
author: Jean-André Santoni <jean.andre.santoni@gmail.com>
date: Sun Aug 31 02:56:26 EDT 2025

code cleaning

--- a/dat.h
+++ b/dat.h
@@ -7,7 +7,7 @@
 
 extern u16int ram[32768];
 extern u8int *prg;
-extern u8int *rom;
+extern u8int rom[0x40000];
 extern u8int *mem;
 
 extern u8int vram[32768], vsram[40];
--- a/sms.c
+++ b/sms.c
@@ -11,7 +11,7 @@
 u32int r[16];
 extern u16int pc, curpc, sp;
 u32int irq;
-u8int *rom = nil;
+u8int rom[0x40000];
 u8int *mem = nil;
 u8int *pic = nil;
 int vdpclock = 0;
@@ -26,9 +26,6 @@
 	if(fd < 0)
 		sysfatal("open: %r");
 
-	pic = malloc(320 * 224 * 4);
-	rom = malloc(0x40000);
-	//memcpy(rom, data, 0x40000);
 	if(readn(fd, rom, 0x40000) < 0x40000)
 		sysfatal("read: %r");
 	mem = malloc(0xC000+0x8000);
@@ -37,6 +34,8 @@
 
 	psginit(RATE, PSGCLOCK);
 	vdpmode();
+
+	close(fd);
 }
 
 void
@@ -46,19 +45,16 @@
 	exits("usage");
 }
 
-void
-process_inputs()
+static void
+process_inputs(void)
 {
-	/*for(int p = 0; p < 2; p++)
-	{
-		keys[p] = 0xff;
-		for(int id = 0; id < RETRO_DEVICE_ID_JOYPAD_X; id++)
-			if(input_state_cb(p, RETRO_DEVICE_JOYPAD, 0, id))
-				keys[p] = keys[p] & ~retro_bind[id];
-	}
+	u16int v1, v2;
 
-	portDC = (keys[0] & 0x3f) + ((keys[1] << 6) & 0xc0);
-	portDD = ((keys[1] >> 2) & 0x0f) | 0xf0;*/
+	v1 = ~(keys & 0xffff);
+	v2 = ~(keys2 & 0xffff);
+
+	portDC = (v1 & 0x3f) + ((v2 << 6) & 0xc0);
+	portDD = ((v2 >> 2) & 0x0f) | 0xf0;
 }
 
 void
@@ -91,21 +87,14 @@
 	vdpmode();
 	//ymreset();
 	for(;;){
-		//process_inputs();
+		process_inputs();
 		t = z80step();
 		vdpclock -= t * Z80DIV;
-		//total += t;
 
 		while(vdpclock < 0){
 			vdpstep();
 			vdpclock += 8;
 		}
-		/*if(total > 702240){
-			flush();
-			total = 0;
-			vdpx = 0;
-			vdpy = 0;
-		}*/
 	}
 }
 
--- a/vdp.c
+++ b/vdp.c
@@ -80,7 +80,7 @@
 spritesinit(void)
 {
 	u16int t1 = (reg[SPRTAB] << 7 & 0x3f00);
-	u16int t2 = t1 + 0x80;
+	// u16int t2 = t1 + 0x80;
 
 	int bufidx = 0;
 	for(int i = bufidx; i < 8; i++)
@@ -143,10 +143,10 @@
 void
 vdpctrl(u8int v)
 {
-	// printf("	vdp write to control port %x\n", v);
+	// print("	vdp write to control port %x", v);
 
 	if(first){
-		// printf("first\n");
+		// print("first");
 		first = 0;
 		vdpaddr = (vdpaddr & 0xff00) | v;
 		return;
@@ -155,7 +155,7 @@
 	vdpcode = (v >> 6) & 0x03;
 	vdpaddr = (vdpaddr & 0x00ff) | ((v & 0x3f) << 8);
 
-	// printf("vdp code and address %x %x\n", vdpcode, vdpaddr);
+	// print("vdp code and address %x %x", vdpcode, vdpaddr);
 	first = 1;
 
 	switch(vdpcode){
@@ -171,13 +171,13 @@
 void
 vdpdata(u8int v)
 {
-	// printf("	vdp (code: %x) write to data port %x\n", vdpcode, v);
+	// print("	vdp (code: %x) write to data port %x", vdpcode, v);
 	first = 1;
 	vdpbuf = v;
 	switch(vdpcode){
 		case 0: case 1: case 2:
 			vram[vdpaddr] = v;
-			// printf("vramwrite %x %x\n", vdpaddr, v);
+			// print("vramwrite %x %x", vdpaddr, v);
 		break;
 		case 3: cramwrite(vdpaddr, v); break;
 	}
@@ -192,7 +192,7 @@
 	vdpbuf = vram[vdpaddr];
 	vdpaddr++;
 	vdpaddr &= 0x3fff;
-	// printf("    vdp read from data port %x\n", v);
+	// print("    vdp read from data port %x", v);
 	first = 1;
 	return v;
 }
@@ -203,7 +203,7 @@
 	u8int v = vdpstat | 0x1f;
 	vdpstat = 0;
 	z80irq = 0;
-	// printf("    vdp read status flags %x\n", v);
+	// print("    vdp read status flags %x", v);
 	first = 1;
 	return v;
 }
@@ -211,7 +211,7 @@
 u8int
 vdphcounter(void)
 {
-	// printf("    vdp read hcounter %x\n", vdpx);
+	// print("    vdp read hcounter %x", vdpx);
 	return vdpx;
 }
 
@@ -218,7 +218,7 @@
 u8int
 vdpvcounter(void)
 {
-	// printf("    vdp read hcounter %y\n", vdpy);
+	// print("    vdp read hcounter %y", vdpy);
 	if (vdpy > 0xda)
 		return vdpy - 0x06;
 	return vdpy;
--