Ich bin gerade dabei den Lynx-Emulator Handy auf den GP2x zu bringen (siehe auch http://forums.ngemu.com/sdlemu-official-forum/67232-handy-sdl-v0-1-opensource-based-upon-handy-v0-90-a.html).
Da Rendering mit SDL_Rects zu langsam ist, wollte ich direkt in den Framebuffer schreiben. Funktioniert von der Geschwindigkeit her zwar, allerdings ist die Ausgabe nicht so wie sie sein soll (siehe Bilder im ngemu-Thread).
Was an dem Code hier könnte falsch sein?
col enthält einen rgb888 Value, den ich zu einem rgb565 konvertiere (ich hoffe mal das die Umrechnung stimmt - die Farben sehen mal richtig aus)
Framebuffer wird vorher angelegt:
Leider produziert der Code das etwas zerstörte Bild...
Da Rendering mit SDL_Rects zu langsam ist, wollte ich direkt in den Framebuffer schreiben. Funktioniert von der Geschwindigkeit her zwar, allerdings ist die Ausgabe nicht so wie sie sein soll (siehe Bilder im ngemu-Thread).
Was an dem Code hier könnte falsch sein?
col enthält einen rgb888 Value, den ich zu einem rgb565 konvertiere (ich hoffe mal das die Umrechnung stimmt - die Farben sehen mal richtig aus)
Code:
for(y=0;y<(LynxHeight);y++)
{
for(x=0;x<(LynxWidth);x++)
{
col=*lstTemp++;
Uint16 dst = ((col&0x00F80000)>>8)|
((col&0x0000FC00)>>5)|
((col&0x000000F8)>>3);
gp2xfb[x+240*y]=(Uint16)dst;
Framebuffer wird vorher angelegt:
Code:
printf("open fbdev\n");
gp2xfbdev=open("/dev/fb0", O_RDWR);
printf("create blah\n");
gp2xfb=(Uint16 *)mmap(0, 320*240*sizeof(Uint16), PROT_WRITE, MAP_SHARED, gp2xfbdev, 0);
Leider produziert der Code das etwas zerstörte Bild...