X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Fwin32%2FGenaDrive%2FEmu.cpp;h=46fa27ab6dbafe947502c21bd373d27606226f9c;hb=490eb4805c9dd8fd358c96dc7e646a6db74e2dfb;hp=5294d7aff13f6c76d4b50ae24dee65152de59432;hpb=cc68a136aa179a5f32fe40208371eb9c2b0aadae;p=picodrive.git diff --git a/platform/win32/GenaDrive/Emu.cpp b/platform/win32/GenaDrive/Emu.cpp index 5294d7a..46fa27a 100644 --- a/platform/win32/GenaDrive/Emu.cpp +++ b/platform/win32/GenaDrive/Emu.cpp @@ -1,49 +1,29 @@ #include "app.h" -extern "C" { -struct Pico -{ - unsigned char ram[0x10000]; // 0x00000 scratch ram - unsigned short vram[0x8000]; // 0x10000 - unsigned char zram[0x2000]; // 0x20000 Z80 ram - unsigned char ioports[0x10]; - unsigned int pad[0x3c]; // unused - unsigned short cram[0x40]; // 0x22100 - unsigned short vsram[0x40]; // 0x22180 - - unsigned char *rom; // 0x22200 - unsigned int romsize; // 0x22204 - -// struct PicoMisc m; -// struct PicoVideo video; -}; - extern struct Pico Pico; -} - unsigned short *EmuScreen=NULL; -extern "C" unsigned short *framebuff=NULL; -int EmuWidth=0,EmuHeight=0; -static int frame=0; -static int EmuScan(unsigned int num, void *sdata); +int EmuWidth=320,EmuHeight=224; +RECT EmuScreenRect = { 0, 0, 320, 224 }; +int PicoPadAdd = 0; + +static int EmuScan(unsigned int num); +unsigned char *PicoDraw2FB = NULL; int EmuInit() { int len=0; -// PicoOpt=-1; -// PsndRate=44100; PsndLen=DSoundSeg; - PicoInit(); // Allocate screen: EmuWidth=320; EmuHeight=224; len=EmuWidth*EmuHeight; len<<=1; EmuScreen=(unsigned short *)malloc(len); if (EmuScreen==NULL) return 1; - framebuff=(unsigned short *)malloc((8+320)*(8+224+8)*2); + PicoDraw2FB=(unsigned char *)malloc((8+320)*(8+224+8)*2); memset(EmuScreen,0,len); - PicoScan=EmuScan; + PicoDrawSetColorFormat(1); + PicoScanBegin=EmuScan; return 0; } @@ -52,25 +32,16 @@ void EmuExit() { //RomFree(); free(EmuScreen); EmuScreen=NULL; // Deallocate screen - free(framebuff); + free(PicoDraw2FB); EmuWidth=EmuHeight=0; PicoExit(); } // Megadrive scanline callback: -static int EmuScan(unsigned int num, void *sdata) +static int EmuScan(unsigned int num) { - unsigned short *pd=NULL,*end=NULL; - unsigned short *ps=NULL; - - if (num>=(unsigned int)EmuHeight) return 0; - - // Copy scanline to screen buffer: - pd=EmuScreen+(num<<8)+(num<<6); end=pd+320; - ps=(unsigned short *)sdata; - - do { *pd++=(unsigned short)PicoCram(*ps++); } while (pd