2 // This file is part of the PicoDrive Megadrive Emulator
\r
4 // This code is licensed under the GNU General Public License version 2.0 and the MAME License.
\r
5 // You can choose the license that has the most advantages for you.
\r
7 // SVN repository can be found at http://code.google.com/p/cyclone68000/
\r
14 #if defined(__GNUC__) || defined(_WIN32_WCE)
\r
15 #define EMU_C68K // Use the Cyclone 68000 emulator
\r
17 #define EMU_A68K // Use the 'A68K' (Make68K) Assembler 68000 emulator
\r
22 // Disa.h also defines CPU_CALL to be fastcall or normal call
\r
26 // ----------------------- 68000 CPU -----------------------
\r
28 // The format of the data in a68k.asm (at the _M68000_regs location)
\r
31 unsigned int d[8],a[8];
\r
32 unsigned int isp,srh,ccr,xc,pc,irq,sr;
\r
33 int (*IrqCallback) (int nIrq);
\r
35 void *pResetCallback;
\r
36 unsigned int sfc,dfc,usp,vbr;
\r
37 unsigned int AsmBank,CpuVersion;
\r
39 extern "C" struct A68KContext M68000_regs;
\r
43 #include "../Cyclone/Cyclone.h"
\r
44 extern struct Cyclone PicoCpu;
\r
53 // ---------------------------------------------------------
\r
57 unsigned char reg[0x20];
\r
58 unsigned int command; // 32-bit Command
\r
59 unsigned char pending; // 1 if waiting for second half of 32-bit command
\r
60 unsigned char type; // Command type (v/c/vsram read/write)
\r
61 unsigned short addr; // Read/Write address
\r
62 int status; // Status bits
\r
63 unsigned char pad[0x14];
\r
68 unsigned char rotate;
\r
69 unsigned char z80Run;
\r
70 unsigned char padSelect[2]; // Select high or low bit from joypad
\r
71 short scanline; // -38 to 223
\r
72 char dirtyPal; // Is the palette dirty
\r
73 unsigned char hardware; // Hardware value for country
\r
74 unsigned char pal; // 1=PAL 0=NTSC
\r
75 unsigned char pad[0x16];
\r
80 unsigned char fmsel[2]; // FM selected register
\r
81 unsigned char reg[0x100];
\r
82 unsigned char pad[0x3e];
\r
87 unsigned char ram[0x10000]; // scratch ram
\r
88 unsigned short vram[0x8000];
\r
89 unsigned char zram[0x2000]; // Z80 ram
\r
90 unsigned int highpal[0x40];
\r
91 unsigned short cram[0x40];
\r
92 unsigned short vsram[0x40];
\r
95 unsigned int romsize;
\r
98 struct PicoVideo video;
\r
103 int PicoLine(int scan);
\r
109 int PicoInitPc(unsigned int pc);
\r
110 unsigned short CPU_CALL PicoRead16(unsigned int a);
\r
111 unsigned int CPU_CALL PicoRead32(unsigned int a);
\r
113 void PicoDasm(int start,int len);
\r
116 extern struct Pico Pico;
\r
121 int SekRun(int cyc);
\r
122 int SekInterrupt(int irq);
\r
124 void SekState(unsigned char *data);
\r
127 extern short Sine[];
\r
131 int PsndFm(int a,int d);
\r
135 void PicoVideoWrite(unsigned int a,unsigned int d);
\r
136 unsigned int PicoVideoRead(unsigned int a);
\r
139 extern "C" int dprintf(char *Format, ...);
\r