From: notaz Date: Sun, 23 Sep 2007 16:42:22 +0000 (+0000) Subject: giz port wip X-Git-Tag: v1.85~658 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fd34fdd0f4f7e0883be4944738b55419a066dab4;p=picodrive.git giz port wip git-svn-id: file:///home/notaz/opt/svn/PicoDrive@258 be3aeb3a-fb24-0410-a615-afba39da0efa --- diff --git a/platform/gizmondo/asm_utils.s b/platform/gizmondo/asm_utils.s index 4676e1e..8f168e9 100644 --- a/platform/gizmondo/asm_utils.s +++ b/platform/gizmondo/asm_utils.s @@ -54,15 +54,19 @@ vcloop_40_aligned: and r4, r3, #0xff00 orr r3, r3, r4, lsr #8 mov r4, r4, lsr #7 - sub r4, r4, #1 + sub r6, r4, #1 mov r5, #320*2 add r5, r5, #2 - mul r4, r5, r4 + mul r4, r5, r6 sub r0, r0, r4 mov r5, #328 - mul r4, r5, r4 + mul r4, r5, r6 sub r1, r1, r4 + @ FIXME FIXME FIXME + ldmfd sp!, {r4-r9,lr} + bx lr + vcloop_40_unaligned: ldr r12, [r1], #4 ldr r7, [r1], #4 @@ -92,11 +96,11 @@ vcloop_40_unaligned: and r4, lr, r7, lsr #23 ldrh r4, [r2, r6] orr r12,r6, r12,lsl #16 - subs r3, r3, #1 + subs r3, r3, #1<<24 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 diff --git a/platform/gizmondo/emu.c b/platform/gizmondo/emu.c index a3cf057..f0732bb 100644 --- a/platform/gizmondo/emu.c +++ b/platform/gizmondo/emu.c @@ -118,7 +118,7 @@ void emu_setDefaultConfig(void) 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; @@ -172,6 +172,12 @@ static void osd_text(int x, int y, const char *text) 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; @@ -182,7 +188,7 @@ static void blit(const char *fps, const char *notice) 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) { @@ -204,7 +210,9 @@ static void blit(const char *fps, const char *notice) } */ } // TODO... - 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)) { @@ -463,6 +471,7 @@ void emu_Loop(void) Framework2D_UnlockBuffer(); giz_screen = NULL; } + //lprintf("after unlock\n"); // check time tval = GetTickCount();