BizHawk/waterbox/virtualjaguar/src/memory.h

66 lines
2.4 KiB
C

//
// MEMORY.H: Header file
//
// All Jaguar related memory and I/O locations are contained in this file
//
#ifndef __MEMORY_H__
#define __MEMORY_H__
#include <stdint.h>
extern uint8_t jagMemSpace[];
extern uint8_t * jaguarMainRAM;
extern uint8_t * jaguarMainROM;
extern uint8_t * gpuRAM;
extern uint8_t * dspRAM;
extern uint32_t & butch, & dscntrl;
extern uint16_t & ds_data;
extern uint32_t & i2cntrl, & sbcntrl, & subdata, & subdatb, & sb_time, & fifo_data, & i2sdat2, & unknown;
extern uint16_t & memcon1, & memcon2, & hc, & vc, & lph, & lpv;
extern uint64_t & obData;
extern uint32_t & olp;
extern uint16_t & obf, & vmode, & bord1, & bord2, & hp, & hbb, & hbe, & hs,
& hvs, & hdb1, & hdb2, & hde, & vp, & vbb, & vbe, & vs, & vdb, & vde,
& veb, & vee, & vi, & pit0, & pit1, & heq;
extern uint32_t & bg;
extern uint16_t & int1, & int2;
extern uint8_t * clut, * lbuf;
extern uint32_t & g_flags, & g_mtxc, & g_mtxa, & g_end, & g_pc, & g_ctrl,
& g_hidata, & g_divctrl;
extern uint32_t g_remain;
extern uint32_t & a1_base, & a1_flags, & a1_clip, & a1_pixel, & a1_step,
& a1_fstep, & a1_fpixel, & a1_inc, & a1_finc, & a2_base, & a2_flags,
& a2_mask, & a2_pixel, & a2_step, & b_cmd, & b_count;
extern uint64_t & b_srcd, & b_dstd, & b_dstz, & b_srcz1, & b_srcz2, & b_patd;
extern uint32_t & b_iinc, & b_zinc, & b_stop, & b_i3, & b_i2, & b_i1, & b_i0, & b_z3,
& b_z2, & b_z1, & b_z0;
extern uint16_t & jpit1, & jpit2, & jpit3, & jpit4, & clk1, & clk2, & clk3, & j_int,
& asidata, & asictrl;
extern uint16_t asistat;
extern uint16_t & asiclk, & joystick, & joybuts;
extern uint32_t & d_flags, & d_mtxc, & d_mtxa, & d_end, & d_pc, & d_ctrl,
& d_mod, & d_divctrl;
extern uint32_t d_remain;
extern uint32_t & d_machi;
extern uint16_t & ltxd, lrxd, & rtxd, rrxd;
extern uint8_t & sclk, sstat;
extern uint32_t & smode;
enum { UNKNOWN, JAGUAR, DSP, GPU, TOM, JERRY, M68K, BLITTER, OP, DEBUG };
// Some handy macros to help converting little endian to big endian (jaguar native)
// & vice versa
#define SET64(r, a, v) *(uint64_t*)&r[(a)] = __builtin_bswap64((v))
#define GET64(r, a) (__builtin_bswap64(*(uint64_t*)&r[(a)]))
#define SET32(r, a, v) *(uint32_t*)&r[(a)] = __builtin_bswap32((v))
#define GET32(r, a) (__builtin_bswap32(*(uint32_t*)&r[(a)]))
#define SET16(r, a, v) *(uint16_t*)&r[(a)] = __builtin_bswap16((v))
#define GET16(r, a) (__builtin_bswap16(*(uint16_t*)&r[(a)]))
#endif // __MEMORY_H__