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;
--
⑨