mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
sms vdp, support 224/240 line mode
This commit is contained in:
parent
b784d4a5f7
commit
3758124cb8
2 changed files with 15 additions and 6 deletions
17
pico/mode4.c
17
pico/mode4.c
|
@ -232,11 +232,13 @@ static void DrawDisplayM4(int scanline)
|
||||||
|
|
||||||
// Find the line in the name table
|
// Find the line in the name table
|
||||||
line = pv->reg[9] + scanline; // vscroll + scanline
|
line = pv->reg[9] + scanline; // vscroll + scanline
|
||||||
if (line >= 224)
|
line &= 0xff;
|
||||||
line -= 224;
|
|
||||||
|
|
||||||
// Find name table:
|
// Find name table:
|
||||||
nametab = PicoMem.vram;
|
nametab = PicoMem.vram;
|
||||||
|
if ((Pico.video.reg[0] & 6) == 6 && (Pico.video.reg[1] & 0x18))
|
||||||
|
nametab += ((pv->reg[2] & 0x0c) << (10-1)) + (0x700 >> 1);
|
||||||
|
else
|
||||||
nametab += (pv->reg[2] & 0x0e) << (10-1);
|
nametab += (pv->reg[2] & 0x0e) << (10-1);
|
||||||
nametab += (line>>3) << (6-1);
|
nametab += (line>>3) << (6-1);
|
||||||
|
|
||||||
|
@ -276,7 +278,7 @@ static void DrawDisplayM4(int scanline)
|
||||||
static void FinalizeLineRGB555M4(int line);
|
static void FinalizeLineRGB555M4(int line);
|
||||||
void PicoFrameStartMode4(void)
|
void PicoFrameStartMode4(void)
|
||||||
{
|
{
|
||||||
int lines = 192, coffs;
|
int lines = 192, columns = 256, coffs;
|
||||||
skip_next_line = 0;
|
skip_next_line = 0;
|
||||||
screen_offset = 24;
|
screen_offset = 24;
|
||||||
Pico.est.rendstatus = PDRAW_32_COLS;
|
Pico.est.rendstatus = PDRAW_32_COLS;
|
||||||
|
@ -291,13 +293,18 @@ void PicoFrameStartMode4(void)
|
||||||
lines = 224;
|
lines = 224;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
line_offset = PicoIn.opt & (POPT_DIS_32C_BORDER|POPT_EN_SOFTSCALE) ? 0 : 32;
|
if (PicoIn.opt & POPT_EN_SOFTSCALE) {
|
||||||
|
line_offset = 0;
|
||||||
|
columns = 320;
|
||||||
|
} else
|
||||||
|
line_offset = PicoIn.opt & POPT_DIS_32C_BORDER ? 0 : 32;
|
||||||
|
|
||||||
coffs = line_offset;
|
coffs = line_offset;
|
||||||
if (FinalizeLineM4 == FinalizeLineRGB555M4)
|
if (FinalizeLineM4 == FinalizeLineRGB555M4)
|
||||||
line_offset = 0 /* done in FinalizeLine */;
|
line_offset = 0 /* done in FinalizeLine */;
|
||||||
|
|
||||||
if (Pico.est.rendstatus != rendstatus_old || lines != rendlines) {
|
if (Pico.est.rendstatus != rendstatus_old || lines != rendlines) {
|
||||||
emu_video_mode_change(screen_offset, lines, coffs, 256);
|
emu_video_mode_change(screen_offset, lines, coffs, columns);
|
||||||
rendstatus_old = Pico.est.rendstatus;
|
rendstatus_old = Pico.est.rendstatus;
|
||||||
rendlines = lines;
|
rendlines = lines;
|
||||||
}
|
}
|
||||||
|
|
|
@ -380,6 +380,8 @@ void PicoFrameMS(void)
|
||||||
z80_nmi();
|
z80_nmi();
|
||||||
Pico.ms.nmi_state = nmi;
|
Pico.ms.nmi_state = nmi;
|
||||||
|
|
||||||
|
if ((Pico.video.reg[0] & 6) == 6 && (Pico.video.reg[1] & 0x18))
|
||||||
|
lines_vis = (Pico.video.reg[1] & 0x08) ? 240 : 224;
|
||||||
PicoFrameStartMode4();
|
PicoFrameStartMode4();
|
||||||
hint = pv->reg[0x0a];
|
hint = pv->reg[0x0a];
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue