FinalizeLine(sh);\r
\r
if (PicoScanEnd != NULL)\r
- PicoScanEnd(DrawScanline);\r
+ skip_next_line = PicoScanEnd(DrawScanline);\r
}\r
\r
void PicoDrawSync(int to, int blank_last_line)\r
return;
}
- if (binds == currentConfig.KeyBinds && !(keys_encountered & (1<<t))) { // hack
+ // unbind old, but only when key is first encountered
+ if (t < 32 && binds == currentConfig.KeyBinds && !(keys_encountered & (1<<t))) {
binds[t] = 0;
keys_encountered |= 1<<t;
}
iBufferSize *= bufferedFrames;\r
for (TInt i=0 ; i<KSoundBuffers ; i++)\r
{\r
- iSoundBuffers[i] = HBufC8::NewL(iBufferSize);\r
- iSoundBuffers[i]->Des().FillZ (iBufferSize);\r
+ // it seems .SetLength(max) throws USER:23 panic,\r
+ // so make them a bit larger\r
+ iSoundBuffers[i] = HBufC8::NewL(iBufferSize+4);\r
+ iSoundBuffers[i]->Des().FillZ (iBufferSize+4);\r
}\r
\r
iCurrentBuffer = 0;\r
static void vidBlitFit_0(int full)\r
{\r
if(Pico.video.reg[12]&1)\r
- vidConvCpy_center2_40c_0(screenbuff, PicoDraw2FB+328*8, localPal, 168);\r
+ vidConvCpy_center2_40c_0(screenbuff, PicoDraw2FB+328*8, localPal, 168);\r
else vidConvCpy_center2_32c_0(screenbuff, PicoDraw2FB+328*8, localPal, 168);\r
if(full) vidClear((unsigned long *)screenbuff + 168*256, 320-168);\r
}\r
// select suitable blitters\r
vidBlit = vidBlit_270;\r
PicoScanBegin = EmuScanBegin8;\r
+ PicoScanEnd = NULL;\r
drawTextFps = drawTextFps0;\r
drawTextNotice = drawTextNotice0;\r
\r
vidBlit = vidBlitFit_0;\r
drawTextFps = drawTextFpsFit0;\r
drawTextNotice = drawTextNoticeFit0;\r
+ PicoScanBegin = NULL;\r
PicoScanEnd = EmuScanEndFit0;\r
}\r
} else if (currentConfig.rotation == TPicoConfig::PRot90) {\r
vidBlit = vidBlitFit_180;\r
drawTextFps = drawTextFpsFit0;\r
drawTextNotice = drawTextNoticeFit0;\r
+ PicoScanBegin = NULL;\r
PicoScanEnd = EmuScanEndFit0;\r
}\r
}\r