and r4, r3, #0xff00
orr r3, r3, r4, lsr #8
mov r4, r4, lsr #7
and r4, r3, #0xff00
orr r3, r3, r4, lsr #8
mov r4, r4, lsr #7
mov r5, #320*2
add r5, r5, #2
mov r5, #320*2
add r5, r5, #2
sub r0, r0, r4
mov r5, #328
sub r0, r0, r4
mov r5, #328
+ @ FIXME FIXME FIXME
+ ldmfd sp!, {r4-r9,lr}
+ bx lr
+
vcloop_40_unaligned:
ldr r12, [r1], #4
ldr r7, [r1], #4
vcloop_40_unaligned:
ldr r12, [r1], #4
ldr r7, [r1], #4
and r4, lr, r7, lsr #23
ldrh r4, [r2, r6]
orr r12,r6, r12,lsl #16
and r4, lr, r7, lsr #23
ldrh r4, [r2, r6]
orr r12,r6, r12,lsl #16
stmia r0!, {r5,r8,r12}
strh r4, [r0]!
stmia r0!, {r5,r8,r12}
strh r4, [r0]!
- bne vcloop_40_unaligned
+ bpl vcloop_40_unaligned
add r1, r1, #336 @ skip a line and 1 col
add r0, r0, #320*2+2*2
add r1, r1, #336 @ skip a line and 1 col
add r0, r0, #320*2+2*2
currentConfig.PsndRate = 22050;
currentConfig.PicoRegion = 0; // auto
currentConfig.PicoAutoRgnOrder = 0x184; // US, EU, JP
currentConfig.PsndRate = 22050;
currentConfig.PicoRegion = 0; // auto
currentConfig.PicoAutoRgnOrder = 0x184; // US, EU, JP
- currentConfig.Frameskip = -1; // auto
+ currentConfig.Frameskip = 0;//-1; // auto
currentConfig.volume = 50;
currentConfig.KeyBinds[ 2] = 1<<0; // SACB RLDU
currentConfig.KeyBinds[ 3] = 1<<1;
currentConfig.volume = 50;
currentConfig.KeyBinds[ 2] = 1<<0; // SACB RLDU
currentConfig.KeyBinds[ 3] = 1<<1;
short localPal[0x100];
static void (*vidCpy8to16)(void *dest, void *src, short *pal, int lines) = NULL;
short localPal[0x100];
static void (*vidCpy8to16)(void *dest, void *src, short *pal, int lines) = NULL;
+// FIXME: rm
+static void vidCpy8to16_(void *dest, void *src, short *pal, int lines)
+{
+ vidCpy8to16(dest, src, pal, lines);
+}
+
static void blit(const char *fps, const char *notice)
{
int emu_opt = currentConfig.EmuOpt;
static void blit(const char *fps, const char *notice)
{
int emu_opt = currentConfig.EmuOpt;
Pico.m.dirtyPal = 0;
vidConvCpyRGB565(localPal, Pico.cram, 0x40);
}
Pico.m.dirtyPal = 0;
vidConvCpyRGB565(localPal, Pico.cram, 0x40);
}
- vidCpy8to16((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
+ vidCpy8to16_((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
} else if (!(emu_opt&0x80)) {
// 8bit accurate renderer
if (Pico.m.dirtyPal) {
} else if (!(emu_opt&0x80)) {
// 8bit accurate renderer
if (Pico.m.dirtyPal) {
- vidCpy8to16((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
+ //lprintf("vidCpy8to16 %p %p\n", (unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8);
+ vidCpy8to16_((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
+ //lprintf("after vidCpy8to16\n");
}
if (notice || (emu_opt & 2)) {
}
if (notice || (emu_opt & 2)) {
Framework2D_UnlockBuffer();
giz_screen = NULL;
}
Framework2D_UnlockBuffer();
giz_screen = NULL;
}
+ //lprintf("after unlock\n");
// check time
tval = GetTickCount();
// check time
tval = GetTickCount();