char dirtyPal; // 06 Is the palette dirty (1 - change @ this frame, 2 - some time before)\r
unsigned char hardware; // 07 Hardware value for country\r
unsigned char pal; // 08 1=PAL 0=NTSC\r
- unsigned char sram_status; // 09 SRAM status. See SRS_* below\r
+ unsigned char sram_reg; // 09 SRAM reg. See SRR_* below\r
unsigned short z80_bank68k; // 0a\r
unsigned short z80_lastaddr; // this is for Z80 faking\r
- unsigned char z80_fakeval;\r
+ unsigned char pad0;\r
unsigned char z80_reset; // z80 reset held\r
unsigned char padDelay[2]; // 10 gamepad phase time outs, so we count a delay\r
unsigned short eeprom_addr; // EEPROM address register\r
- unsigned char eeprom_cycle; // EEPROM SRAM cycle number\r
+ unsigned char eeprom_cycle; // EEPROM cycle number\r
unsigned char eeprom_slave; // EEPROM slave word for X24C02 and better SRAMs\r
- unsigned char prot_bytes[2]; // simple protection faking\r
+ unsigned char eeprom_status;\r
+ unsigned char pad1;\r
unsigned short dma_xfers; // 18\r
- unsigned char pad[2];\r
+ unsigned char eeprom_wb[2]; // EEPROM latch/write buffer\r
unsigned int frame_count; // 1c for movies and idle det\r
};\r
\r
};\r
\r
// sram\r
-#define SRS_MAPPED (1 << 0)\r
-#define SRS_READONLY (1 << 1)\r
-#define SRS_EEPROM (1 << 2)\r
-#define SRS_DETECTED (1 << 4)\r
+#define SRR_MAPPED (1 << 0)\r
+#define SRR_READONLY (1 << 1)\r
+\r
+#define SRF_ENABLED (1 << 0)\r
+#define SRF_EEPROM (1 << 1)\r
\r
struct PicoSRAM\r
{\r
unsigned char *data; // actual data\r
unsigned int start; // start address in 68k address space\r
unsigned int end;\r
- unsigned char unused1; // 0c: unused\r
+ unsigned char flags; // 0c: SRF_*\r
unsigned char unused2;\r
unsigned char changed;\r
- unsigned char eeprom_type; // eeprom type: 0: 7bit (24C01), 2: device with 2 addr words (X24C02+), 3: dev with 3 addr words\r
- unsigned char eeprom_abits; // eeprom access must be odd addr for: bit0 ~ cl, bit1 ~ out\r
+ unsigned char eeprom_type; // eeprom type: 0: 7bit (24C01), 2: 2 addr words (X24C02+), 3: 3 addr words\r
+ unsigned char unused3;\r
unsigned char eeprom_bit_cl; // bit number for cl\r
unsigned char eeprom_bit_in; // bit number for in\r
unsigned char eeprom_bit_out; // bit number for out\r
+ unsigned int size;\r
};\r
\r
// MCD\r
extern areaclose *areaClose;\r
\r
// cart.c\r
+extern void (*PicoCartMemSetup)(void);\r
extern void (*PicoCartUnloadHook)(void);\r
\r
// debug.c\r
PICO_INTERNAL void PicoInitPc(unsigned int pc);\r
PICO_INTERNAL unsigned int PicoCheckPc(unsigned int pc);\r
PICO_INTERNAL void PicoMemSetup(void);\r
-PICO_INTERNAL void PicoMemResetHooks(void);\r
-extern unsigned int (*PicoRead16Hook)(unsigned int a, int realsize);\r
-extern void (*PicoWrite8Hook) (unsigned int a,unsigned int d,int realsize);\r
-extern void (*PicoWrite16Hook)(unsigned int a,unsigned int d,int realsize);\r
unsigned int PicoRead8_io(unsigned int a);\r
unsigned int PicoRead16_io(unsigned int a);\r
void PicoWrite8_io(unsigned int a, unsigned int d);\r
extern int (*PicoDmaHook)(unsigned int source, int len, unsigned short **srcp, unsigned short **limitp);\r
\r
// misc.c\r
-PICO_INTERNAL void EEPROM_write(unsigned int d);\r
-PICO_INTERNAL void EEPROM_upd_pending(unsigned int a, unsigned int d);\r
-PICO_INTERNAL_ASM unsigned int EEPROM_read(void);\r
PICO_INTERNAL_ASM void memcpy16(unsigned short *dest, unsigned short *src, int count);\r
PICO_INTERNAL_ASM void memcpy16bswap(unsigned short *dest, void *src, int count);\r
PICO_INTERNAL_ASM void memcpy32(int *dest, int *src, int count); // 32bit word count\r
PICO_INTERNAL_ASM void memset32(int *dest, int c, int count);\r
\r
+// eeprom.c\r
+void EEPROM_write8(unsigned int a, unsigned int d);\r
+void EEPROM_write16(unsigned int d);\r
+unsigned int EEPROM_read(void);\r
+\r
// z80 functionality wrappers\r
PICO_INTERNAL void z80_init(void);\r
PICO_INTERNAL void z80_pack(unsigned char *data);\r
void PicoFrameMS(void);\r
void PicoFrameDrawOnlyMS(void);\r
\r
+/* avoid dependency on newer glibc */\r
+static __inline int isspace_(int c)\r
+{\r
+ return (0x09 <= c && c <= 0x0d) || c == ' ';\r
+}\r
+\r
// emulation event logging\r
#ifndef EL_LOGMASK\r
#define EL_LOGMASK 0\r