experimental ddraw code
[picodrive.git] / platform / win32 / GenaDrive / Emu.cpp
CommitLineData
cc68a136 1\r
2#include "app.h"\r
3\r
cc68a136 4unsigned short *EmuScreen=NULL;\r
cc68a136 5int EmuWidth=0,EmuHeight=0;\r
cc68a136 6static int EmuScan(unsigned int num, void *sdata);\r
4b2b67eb 7unsigned char *PicoDraw2FB = NULL;\r
cc68a136 8\r
9int EmuInit()\r
10{\r
11 int len=0;\r
12\r
cc68a136 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
8831ef19 19 PicoDraw2FB=(unsigned char *)malloc((8+320)*(8+224+8)*2);\r
cc68a136 20 memset(EmuScreen,0,len);\r
21\r
4b2b67eb 22 PicoDrawSetColorFormat(1);\r
cc68a136 23 PicoScan=EmuScan;\r
24\r
25 return 0;\r
26}\r
27\r
28void EmuExit()\r
29{\r
30 //RomFree();\r
31 free(EmuScreen); EmuScreen=NULL; // Deallocate screen\r
8831ef19 32 free(PicoDraw2FB);\r
cc68a136 33 EmuWidth=EmuHeight=0;\r
34\r
35 PicoExit();\r
36}\r
37\r
38// Megadrive scanline callback:\r
39static 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
7c9e6899 50 do { *pd++=*ps++; } while (pd<end);\r
cc68a136 51 \r
52 return 0;\r
53}\r
54\r
55int 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
cc68a136 69 PsndOut=(short *)DSoundNext; PicoFrame(); PsndOut=NULL;\r
70\r
4b2b67eb 71 return 0;\r
72}\r
cc68a136 73\r
cc68a136 74\r
cc68a136 75\r
4b2b67eb 76int mp3_get_offset(void) // 0-1023\r
77{\r
cc68a136 78 return 0;\r
79}\r
4b2b67eb 80\r
81void mp3_update(int *buffer, int length, int stereo)\r
82{\r
83}\r
84\r
85void mp3_start_play(FILE *f, int pos)\r
86{\r
87}\r
88\r
89int mp3_get_bitrate(FILE *f, int size)\r
90{\r
91 return -1;\r
92}\r
93\r