2 // This file is part of the PicoDrive Megadrive Emulator
\r
4 // Copyright (c) 2011 FinalDave (emudave (at) gmail.com)
\r
6 // This code is licensed under the GNU General Public License version 2.0 and the MAME License.
\r
7 // You can choose the license that has the most advantages for you.
\r
9 // SVN repository can be found at http://code.google.com/p/cyclone68000/
\r
16 #if defined(__GNUC__) || defined(_WIN32_WCE)
\r
17 #define EMU_C68K // Use the Cyclone 68000 emulator
\r
19 #define EMU_A68K // Use the 'A68K' (Make68K) Assembler 68000 emulator
\r
24 // Disa.h also defines CPU_CALL to be fastcall or normal call
\r
28 // ----------------------- 68000 CPU -----------------------
\r
30 // The format of the data in a68k.asm (at the _M68000_regs location)
\r
33 unsigned int d[8],a[8];
\r
34 unsigned int isp,srh,ccr,xc,pc,irq,sr;
\r
35 int (*IrqCallback) (int nIrq);
\r
37 void *pResetCallback;
\r
38 unsigned int sfc,dfc,usp,vbr;
\r
39 unsigned int AsmBank,CpuVersion;
\r
41 extern "C" struct A68KContext M68000_regs;
\r
45 #include "../Cyclone/Cyclone.h"
\r
46 extern struct Cyclone PicoCpu;
\r
55 // ---------------------------------------------------------
\r
59 unsigned char reg[0x20];
\r
60 unsigned int command; // 32-bit Command
\r
61 unsigned char pending; // 1 if waiting for second half of 32-bit command
\r
62 unsigned char type; // Command type (v/c/vsram read/write)
\r
63 unsigned short addr; // Read/Write address
\r
64 int status; // Status bits
\r
65 unsigned char pad[0x14];
\r
70 unsigned char rotate;
\r
71 unsigned char z80Run;
\r
72 unsigned char padSelect[2]; // Select high or low bit from joypad
\r
73 short scanline; // -38 to 223
\r
74 char dirtyPal; // Is the palette dirty
\r
75 unsigned char hardware; // Hardware value for country
\r
76 unsigned char pal; // 1=PAL 0=NTSC
\r
77 unsigned char pad[0x16];
\r
82 unsigned char fmsel[2]; // FM selected register
\r
83 unsigned char reg[0x100];
\r
84 unsigned char pad[0x3e];
\r
89 unsigned char ram[0x10000]; // scratch ram
\r
90 unsigned short vram[0x8000];
\r
91 unsigned char zram[0x2000]; // Z80 ram
\r
92 unsigned int highpal[0x40];
\r
93 unsigned short cram[0x40];
\r
94 unsigned short vsram[0x40];
\r
97 unsigned int romsize;
\r
100 struct PicoVideo video;
\r
101 struct PicoSound s;
\r
105 int PicoLine(int scan);
\r
111 int PicoInitPc(unsigned int pc);
\r
112 unsigned short CPU_CALL PicoRead16(unsigned int a);
\r
113 unsigned int CPU_CALL PicoRead32(unsigned int a);
\r
115 void PicoDasm(int start,int len);
\r
118 extern struct Pico Pico;
\r
123 int SekRun(int cyc);
\r
124 int SekInterrupt(int irq);
\r
126 void SekState(unsigned char *data);
\r
129 extern short Sine[];
\r
133 int PsndFm(int a,int d);
\r
137 void PicoVideoWrite(unsigned int a,unsigned int d);
\r
138 unsigned int PicoVideoRead(unsigned int a);
\r
141 extern "C" int dprintf(char *Format, ...);
\r