X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=gp2x%2Fgp2x.c;h=4995f08b6be7a3925758a083dff75f99869c80fa;hb=677b5dd8142b2f98b22a26e4d1757355cba4bdc5;hp=d6a701c97801ec529ccc681f899531d0e4e5c6a4;hpb=59d0f042a1bf325213ca8da779d89bb969881952;p=libpicofe.git diff --git a/gp2x/gp2x.c b/gp2x/gp2x.c index d6a701c..4995f08 100644 --- a/gp2x/gp2x.c +++ b/gp2x/gp2x.c @@ -34,7 +34,7 @@ #include "gp2x.h" #include "usbjoy.h" -#include "asmutils.h" +#include "../common/arm_utils.h" volatile unsigned short *gp2x_memregs; //static @@ -157,12 +157,22 @@ void gp2x_video_wait_vsync(void) } +void gp2x_video_flush_cache(void) +{ + // since we are using the mmu hack, we must flush the cache first + // (the params are most likely wrong, but they seem to work somehow) + //flushcache(addr, addr + 320*240*2, 0); + flushcache(gp2x_screen, (char *)gp2x_screen + 320*240*2, 0); +} + + void gp2x_memcpy_buffers(int buffers, void *data, int offset, int len) { - if (buffers & (1<<0)) memcpy((char *)gp2x_screens[0] + offset, data, len); - if (buffers & (1<<1)) memcpy((char *)gp2x_screens[1] + offset, data, len); - if (buffers & (1<<2)) memcpy((char *)gp2x_screens[2] + offset, data, len); - if (buffers & (1<<3)) memcpy((char *)gp2x_screens[3] + offset, data, len); + char *dst; + if (buffers & (1<<0)) { dst = (char *)gp2x_screens[0] + offset; if (dst != data) memcpy(dst, data, len); } + if (buffers & (1<<1)) { dst = (char *)gp2x_screens[1] + offset; if (dst != data) memcpy(dst, data, len); } + if (buffers & (1<<2)) { dst = (char *)gp2x_screens[2] + offset; if (dst != data) memcpy(dst, data, len); } + if (buffers & (1<<3)) { dst = (char *)gp2x_screens[3] + offset; if (dst != data) memcpy(dst, data, len); } } @@ -183,9 +193,7 @@ void gp2x_memset_all_buffers(int offset, int byte, int len) void gp2x_pd_clone_buffer2(void) { - memcpy(gp2x_screen, gp2x_screens[2], 320*240); - memset(gp2x_screen, 0xe0, 320*8); - memset(gp2x_screen + 320*232, 0xe0, 320*8); + memcpy(gp2x_screen, gp2x_screens[2], 320*240*2); }