updating win32 port
[picodrive.git] / platform / win32 / GenaDrive / Emu.cpp
CommitLineData
cc68a136 1\r
2#include "app.h"\r
3\r
cc68a136 4unsigned short *EmuScreen=NULL;\r
5extern "C" unsigned short *framebuff=NULL;\r
6int EmuWidth=0,EmuHeight=0;\r
7static int frame=0;\r
8static int EmuScan(unsigned int num, void *sdata);\r
4b2b67eb 9unsigned char *PicoDraw2FB = NULL;\r
cc68a136 10\r
11int EmuInit()\r
12{\r
13 int len=0;\r
14\r
cc68a136 15 PicoInit();\r
16\r
17 // Allocate screen:\r
18 EmuWidth=320; EmuHeight=224;\r
19 len=EmuWidth*EmuHeight; len<<=1;\r
20 EmuScreen=(unsigned short *)malloc(len); if (EmuScreen==NULL) return 1;\r
21 framebuff=(unsigned short *)malloc((8+320)*(8+224+8)*2);\r
22 memset(EmuScreen,0,len);\r
23\r
4b2b67eb 24 PicoDraw2FB = (unsigned char *)framebuff;\r
25 PicoDrawSetColorFormat(1);\r
cc68a136 26 PicoScan=EmuScan;\r
27\r
28 return 0;\r
29}\r
30\r
31void EmuExit()\r
32{\r
33 //RomFree();\r
34 free(EmuScreen); EmuScreen=NULL; // Deallocate screen\r
35 free(framebuff);\r
36 EmuWidth=EmuHeight=0;\r
37\r
38 PicoExit();\r
39}\r
40\r
41// Megadrive scanline callback:\r
42static int EmuScan(unsigned int num, void *sdata)\r
43{\r
44 unsigned short *pd=NULL,*end=NULL;\r
45 unsigned short *ps=NULL;\r
46\r
47 if (num>=(unsigned int)EmuHeight) return 0;\r
48\r
49 // Copy scanline to screen buffer:\r
50 pd=EmuScreen+(num<<8)+(num<<6); end=pd+320;\r
51 ps=(unsigned short *)sdata;\r
52\r
4b2b67eb 53 do { *pd++=*ps++; } while (pd<end);\r
cc68a136 54 \r
55 return 0;\r
56}\r
57\r
58int EmuFrame()\r
59{\r
60 char map[12]={0,1,2,3,8,9,10,4,11,12,13,14}; // Joypads, format is UDLR BCAS ZYXM\r
61 int a=0,input=0;\r
62 \r
63 // Set Megadrive buttons:\r
64 for (a=0;a<12;a++)\r
65 {\r
66 int m=map[a];\r
67 if (m>=0) if (Inp.button[m]>30) input|=1<<a;\r
68 }\r
69\r
70 PicoPad[0]=input;\r
71\r
72 frame++;\r
73 PsndOut=(short *)DSoundNext; PicoFrame(); PsndOut=NULL;\r
74\r
4b2b67eb 75 return 0;\r
76}\r
cc68a136 77\r
cc68a136 78\r
cc68a136 79\r
4b2b67eb 80int mp3_get_offset(void) // 0-1023\r
81{\r
cc68a136 82 return 0;\r
83}\r
4b2b67eb 84\r
85void mp3_update(int *buffer, int length, int stereo)\r
86{\r
87}\r
88\r
89void mp3_start_play(FILE *f, int pos)\r
90{\r
91}\r
92\r
93int mp3_get_bitrate(FILE *f, int size)\r
94{\r
95 return -1;\r
96}\r
97\r