--- previous/src/cpu/memory.h 2018/04/24 19:25:47 1.1 +++ previous/src/cpu/memory.h 2018/04/24 19:31:47 1.1.1.4 @@ -21,16 +21,17 @@ extern int special_mem; #define S_READ 1 #define S_WRITE 2 -extern uae_u8 *cache_alloc (int); -extern void cache_free (uae_u8*); +uae_u8 *cache_alloc (int); +void cache_free (uae_u8*); #endif #define call_mem_get_func(func, addr) ((*func)(addr)) #define call_mem_put_func(func, addr, v) ((*func)(addr, v)) -#define NEXT_SCREEN_SIZE 0x00040000 extern uae_u8 NEXTVideo[256*1024]; +extern uae_u8 NEXTColorVideo[2*1024*1024]; + /* Enabling this adds one additional native memory reference per 68k memory * access, but saves one shift (on the x86). Enabling this is probably @@ -40,7 +41,7 @@ extern uae_u8 NEXTVideo[256*1024]; #define SAVE_MEMORY_BANKS #endif -extern void memory_hardreset (void); +void memory_hardreset (void); typedef uae_u32 (*mem_get_func)(uaecptr) REGPARAM; typedef void (*mem_put_func)(uaecptr, uae_u32) REGPARAM; @@ -49,43 +50,21 @@ typedef int (*check_func)(uaecptr, uae_u extern char *address_space, *good_address_map; -extern uae_u32 wait_cpu_cycle_read (uaecptr addr, int mode); -extern void wait_cpu_cycle_write (uaecptr addr, int mode, uae_u32 v); -extern uae_u32 wait_cpu_cycle_read_ce020 (uaecptr addr, int mode); -extern void wait_cpu_cycle_write_ce020 (uaecptr addr, int mode, uae_u32 v); +uae_u32 wait_cpu_cycle_read (uaecptr addr, int mode); +void wait_cpu_cycle_write (uaecptr addr, int mode, uae_u32 v); +uae_u32 wait_cpu_cycle_read_ce020 (uaecptr addr, int mode); +void wait_cpu_cycle_write_ce020 (uaecptr addr, int mode, uae_u32 v); enum { ABFLAG_UNK = 0, ABFLAG_RAM = 1, ABFLAG_ROM = 2, ABFLAG_ROMIN = 4, ABFLAG_IO = 8, ABFLAG_NONE = 16, ABFLAG_SAFE = 32 }; typedef struct { /* These ones should be self-explanatory... */ mem_get_func lget, wget, bget; mem_put_func lput, wput, bput; - /* Use xlateaddr to translate an Amiga address to a uae_u8 * that can - * be used to address memory without calling the wget/wput functions. - * This doesn't work for all memory banks, so this function may call - * abort(). */ - xlate_func xlateaddr; - /* To prevent calls to abort(), use check before calling xlateaddr. - * It checks not only that the memory bank can do xlateaddr, but also - * that the pointer points to an area of at least the specified size. - * This is used for example to translate bitplane pointers in custom.c */ - check_func check; - /* For those banks that refer to real memory, we can save the whole trouble - of going through function calls, and instead simply grab the memory - ourselves. This holds the memory address where the start of memory is - for this particular bank. */ - uae_u8 *baseaddr; - TCHAR *name; - /* for instruction opcode/operand fetches */ mem_get_func lgeti, wgeti; int flags; } addrbank; -#define CE_MEMBANK_FAST 0 -#define CE_MEMBANK_CHIP 1 -#define CE_MEMBANK_CIA 2 -#define CE_MEMBANK_FAST16BIT 3 -extern uae_u8 ce_banktype[65536], ce_cachable[65536]; - +extern uae_u8 ce_cachable[65536]; #define bankindex(addr) (((uaecptr)(addr)) >> 16) @@ -99,9 +78,9 @@ extern addrbank mem_banks[65536]; #define put_mem_bank(addr, b) (mem_banks[bankindex(addr)] = *(b)) #endif -extern void memory_init(uae_u32 nNewNEXTMemSize); -extern void memory_uninit (void); -extern void map_banks(addrbank *bank, int first, int count); +const char* memory_init(int *membanks); +void memory_uninit (void); +void map_banks(addrbank *bank, int first, int count); #ifndef NO_INLINE_MEMORY_ACCESS @@ -114,14 +93,14 @@ extern void map_banks(addrbank *bank, in #else -extern uae_u32 alongget(uaecptr addr); -extern uae_u32 awordget(uaecptr addr); -extern uae_u32 longget(uaecptr addr); -extern uae_u32 wordget(uaecptr addr); -extern uae_u32 byteget(uaecptr addr); -extern void longput(uaecptr addr, uae_u32 l); -extern void wordput(uaecptr addr, uae_u32 w); -extern void byteput(uaecptr addr, uae_u32 b); +uae_u32 alongget(uaecptr addr); +uae_u32 awordget(uaecptr addr); +uae_u32 longget(uaecptr addr); +uae_u32 wordget(uaecptr addr); +uae_u32 byteget(uaecptr addr); +void longput(uaecptr addr, uae_u32 l); +void wordput(uaecptr addr, uae_u32 w); +void byteput(uaecptr addr, uae_u32 b); #endif @@ -164,16 +143,6 @@ static inline void put_byte(uaecptr addr byteput(addr, b); } -static inline uae_u8 *get_real_address(uaecptr addr) -{ - return get_mem_bank(addr).xlateaddr(addr); -} - -static inline int valid_address(uaecptr addr, uae_u32 size) -{ - return get_mem_bank(addr).check(addr, size); -} - static inline uae_u32 get_longi(uaecptr addr) { return longgeti (addr);