extern uint8 * jaguarMainRAM;
extern uint8 * jaguarMainROM;
-extern uint8 jaguarBootROM[];
-extern uint8 jaguarCDBootROM[];
+//extern uint8 jaguarBootROM[];
+//extern uint8 jaguarCDBootROM[];
+//extern uint8 jaguarDevBootROM1[];
+//extern uint8 jaguarDevBootROM2[];
+//extern uint8 jaguarDevCDBootROM[];
extern uint8 * gpuRAM;
extern uint8 * dspRAM;
enum { UNKNOWN, JAGUAR, DSP, GPU, TOM, JERRY, M68K, BLITTER, OP };
extern const char * whoName[9];
+// BIOS identification enum
+
+//enum { BIOS_NORMAL=0x01, BIOS_CD=0x02, BIOS_STUB1=0x04, BIOS_STUB2=0x08, BIOS_DEV_CD=0x10 };
+//extern int biosAvailable;
+
// Some handy macros to help converting native endian to big endian (jaguar native)
// & vice versa
#define SET16(r, a, v) r[(a)] = ((v) & 0xFF00) >> 8, r[(a)+1] = (v) & 0xFF
#define GET16(r, a) ((r[(a)] << 8) | r[(a)+1])
+//This doesn't seem to work on OSX. So have to figure something else out. :-(
+//byteswap.h doesn't exist on OSX.
+#if 0
// This is GCC specific, but we can fix that if we need to...
// Big plus of this approach is that these compile down to single instructions on little
// endian machines while one big endian machines we don't have any overhead. :-)
#define ESAFE32(x) (x)
#define ESAFE64(x) (x)
#endif
+#endif
+
+#if 0
+Stuff ripped out of Hatari, that may be useful:
+
+/* Can the actual CPU access unaligned memory? */
+#ifndef CPU_CAN_ACCESS_UNALIGNED
+# if defined(__i386__) || defined(powerpc) || defined(__mc68020__)
+# define CPU_CAN_ACCESS_UNALIGNED 1
+# else
+# define CPU_CAN_ACCESS_UNALIGNED 0
+# endif
+#endif
+
+
+/* If the CPU can access unaligned memory, use these accelerated functions: */
+#if CPU_CAN_ACCESS_UNALIGNED
+
+#include <SDL_endian.h>
+
+
+static inline uae_u32 do_get_mem_long(void *a)
+{
+ return SDL_SwapBE32(*(uae_u32 *)a);
+}
+
+static inline uae_u16 do_get_mem_word(void *a)
+{
+ return SDL_SwapBE16(*(uae_u16 *)a);
+}
+
+
+static inline void do_put_mem_long(void *a, uae_u32 v)
+{
+ *(uae_u32 *)a = SDL_SwapBE32(v);
+}
+
+static inline void do_put_mem_word(void *a, uae_u16 v)
+{
+ *(uae_u16 *)a = SDL_SwapBE16(v);
+}
+
+
+#else /* Cpu can not access unaligned memory: */
+
+
+static inline uae_u32 do_get_mem_long(void *a)
+{
+ uae_u8 *b = (uae_u8 *)a;
+
+ return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
+}
+
+static inline uae_u16 do_get_mem_word(void *a)
+{
+ uae_u8 *b = (uae_u8 *)a;
+
+ return (b[0] << 8) | b[1];
+}
+
+
+static inline void do_put_mem_long(void *a, uae_u32 v)
+{
+ uae_u8 *b = (uae_u8 *)a;
+
+ b[0] = v >> 24;
+ b[1] = v >> 16;
+ b[2] = v >> 8;
+ b[3] = v;
+}
+
+static inline void do_put_mem_word(void *a, uae_u16 v)
+{
+ uae_u8 *b = (uae_u8 *)a;
+
+ b[0] = v >> 8;
+ b[1] = v;
+}
+
+
+#endif /* CPU_CAN_ACCESS_UNALIGNED */
+
+
+/* These are same for all architectures: */
+
+static inline uae_u8 do_get_mem_byte(uae_u8 *a)
+{
+ return *a;
+}
+
+static inline void do_put_mem_byte(uae_u8 *a, uae_u8 v)
+{
+ *a = v;
+}
+#endif
#endif // __MEMORY_H__