7 #include <string.h> // Why??? (for memset, etc... Lazy!) Dunno why, but this just strikes me as wrong...
8 #include <stdlib.h> // For exit()
28 // Exports from JAGUAR.CPP
30 extern int32 jaguar_cpu_in_exec;
31 extern uint32 jaguar_mainRom_crc32, jaguarRomSize, jaguarRunAddress;
32 extern char * jaguar_eeproms_path;
33 extern const char * whoName[9];
35 void jaguar_init(void);
36 void jaguar_reset(void);
37 void jaguar_done(void);
39 uint8 JaguarReadByte(uint32 offset, uint32 who = UNKNOWN);
40 uint16 JaguarReadWord(uint32 offset, uint32 who = UNKNOWN);
41 uint32 JaguarReadLong(uint32 offset, uint32 who = UNKNOWN);
42 void JaguarWriteByte(uint32 offset, uint8 data, uint32 who = UNKNOWN);
43 void JaguarWriteWord(uint32 offset, uint16 data, uint32 who = UNKNOWN);
44 void JaguarWriteLong(uint32 offset, uint32 data, uint32 who = UNKNOWN);
46 uint32 jaguar_interrupt_handler_is_valid(uint32 i);
47 void jaguar_dasm(uint32 offset, uint32 qt);
49 void JaguarExecute(uint32 * backbuffer, bool render);
50 //For testing the new system...
51 void JaguarExecuteNew(void);
53 // Some handy macros to help converting native endian to big endian (jaguar native)
56 #define SET64(r, a, v) r[(a)] = ((v) & 0xFF00000000000000) >> 56, r[(a)+1] = ((v) & 0x00FF000000000000) >> 48, \
57 r[(a)+2] = ((v) & 0x0000FF0000000000) >> 40, r[(a)+3] = ((v) & 0x000000FF00000000) >> 32, \
58 r[(a)+4] = ((v) & 0xFF000000) >> 24, r[(a)+5] = ((v) & 0x00FF0000) >> 16, \
59 r[(a)+6] = ((v) & 0x0000FF00) >> 8, r[(a)+7] = (v) & 0x000000FF
60 #define GET64(r, a) (((uint64)r[(a)] << 56) | ((uint64)r[(a)+1] << 48) | \
61 ((uint64)r[(a)+2] << 40) | ((uint64)r[(a)+3] << 32) | \
62 ((uint64)r[(a)+4] << 24) | ((uint64)r[(a)+5] << 16) | \
63 ((uint64)r[(a)+6] << 8) | (uint64)r[(a)+7])
64 #define SET32(r, a, v) r[(a)] = ((v) & 0xFF000000) >> 24, r[(a)+1] = ((v) & 0x00FF0000) >> 16, \
65 r[(a)+2] = ((v) & 0x0000FF00) >> 8, r[(a)+3] = (v) & 0x000000FF
66 #define GET32(r, a) ((r[(a)] << 24) | (r[(a)+1] << 16) | (r[(a)+2] << 8) | r[(a)+3])
67 #define SET16(r, a, v) r[(a)] = ((v) & 0xFF00) >> 8, r[(a)+1] = (v) & 0xFF
68 #define GET16(r, a) ((r[(a)] << 8) | r[(a)+1])
70 // Various clock rates
72 #define M68K_CLOCK_RATE_PAL 13296950
73 #define M68K_CLOCK_RATE_NTSC 13295453
74 #define RISC_CLOCK_RATE_PAL 26593900
75 #define RISC_CLOCK_RATE_NTSC 26590906
77 // Stuff for IRQ handling
82 //Temp debug stuff (will go away soon, so don't depend on these)
84 void DumpMainMemory(void);
85 uint8 * GetRamPtr(void);
87 #endif // __JAGUAR_H__