mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
renderers (interlace and stuff)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@267 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
f3d1de29da
commit
a8869ad1e8
5 changed files with 58 additions and 27 deletions
|
@ -140,6 +140,7 @@ void emu_setDefaultConfig(void)
|
|||
currentConfig.KeyBinds[ 6] = 1<<5;
|
||||
currentConfig.KeyBinds[ 7] = 1<<6;
|
||||
currentConfig.KeyBinds[ 4] = 1<<7;
|
||||
currentConfig.KeyBinds[13] = 1<<26; // switch rend
|
||||
currentConfig.KeyBinds[ 8] = 1<<27; // save state
|
||||
currentConfig.KeyBinds[ 9] = 1<<28; // load state
|
||||
currentConfig.KeyBinds[12] = 1<<29; // vol up
|
||||
|
@ -154,6 +155,9 @@ static int EmuScan16(unsigned int num, void *sdata)
|
|||
if (!(Pico.video.reg[1]&8)) num += 8;
|
||||
DrawLineDest = (unsigned short *) giz_screen + 321*(num+1);
|
||||
|
||||
if ((currentConfig.EmuOpt&0x4000) && (num&1) == (Pico.m.frame_count&1))
|
||||
return 1; // skip next line
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -216,7 +220,9 @@ static void blit(const char *fps, const char *notice)
|
|||
Pico.m.dirtyPal = 0;
|
||||
vidConvCpyRGB565(localPal, Pico.cram, 0x40);
|
||||
}
|
||||
if (!(Pico.video.reg[12]&1)) lines_flags|=0x100;
|
||||
if (!(Pico.video.reg[12]&1)) lines_flags|=0x10000;
|
||||
if (currentConfig.EmuOpt&0x4000)
|
||||
lines_flags|=(Pico.m.frame_count&1)?0x20000:0x40000;
|
||||
vidCpy8to16((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, lines_flags);
|
||||
}
|
||||
else if (!(emu_opt&0x80))
|
||||
|
@ -242,7 +248,9 @@ static void blit(const char *fps, const char *notice)
|
|||
} */
|
||||
}
|
||||
lines_flags = (Pico.video.reg[1]&8) ? 240 : 224;
|
||||
if (!(Pico.video.reg[12]&1)) lines_flags|=0x100;
|
||||
if (!(Pico.video.reg[12]&1)) lines_flags|=0x10000;
|
||||
if (currentConfig.EmuOpt&0x4000)
|
||||
lines_flags|=(Pico.m.frame_count&1)?0x20000:0x40000;
|
||||
vidCpy8to16((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, lines_flags);
|
||||
}
|
||||
|
||||
|
@ -360,9 +368,12 @@ static void RunEvents(unsigned int which)
|
|||
if (which & 0x1800) { // save or load (but not both)
|
||||
int do_it = 1;
|
||||
if ( emu_checkSaveFile(state_slot) &&
|
||||
(( (which & 0x1000) && (currentConfig.EmuOpt & 0x800)) || // load
|
||||
(!(which & 0x1000) && (currentConfig.EmuOpt & 0x200))) ) { // save
|
||||
(( (which & 0x1000) && (currentConfig.EmuOpt & 0x800)) || // load
|
||||
(!(which & 0x1000) && (currentConfig.EmuOpt & 0x200))) ) // save
|
||||
{
|
||||
int keys;
|
||||
if (giz_screen == NULL)
|
||||
giz_screen = Framework2D_LockBuffer();
|
||||
blit("", (which & 0x1000) ? "LOAD STATE? (PLAY=yes, STOP=no)" : "OVERWRITE SAVE? (PLAY=yes, STOP=no)");
|
||||
while( !((keys = Framework_PollGetButtons()) & (BTN_PLAY|BTN_STOP)) )
|
||||
Sleep(50);
|
||||
|
@ -379,9 +390,8 @@ static void RunEvents(unsigned int which)
|
|||
reset_timing = 1;
|
||||
}
|
||||
if (which & 0x0400) { // switch renderer
|
||||
if ( PicoOpt&0x10) { PicoOpt&=~0x10; currentConfig.EmuOpt |= 0x80; }
|
||||
else if (!(currentConfig.EmuOpt&0x80)) PicoOpt|= 0x10;
|
||||
else currentConfig.EmuOpt &= ~0x80;
|
||||
if (PicoOpt&0x10) { PicoOpt&=~0x10; currentConfig.EmuOpt |= 0x80; }
|
||||
else { PicoOpt|= 0x10; currentConfig.EmuOpt &= ~0x80; }
|
||||
|
||||
vidResetMode();
|
||||
|
||||
|
@ -716,6 +726,9 @@ void emu_Loop(void)
|
|||
|
||||
PicoFrame();
|
||||
|
||||
if (currentConfig.EmuOpt&0x2000)
|
||||
Framework2D_WaitVSync();
|
||||
|
||||
if (giz_screen == NULL)
|
||||
giz_screen = Framework2D_LockBuffer();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue