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