Mercurial > audlegacy-plugins
diff src/sexypsf/PsxMem.h @ 12:3da1b8942b8b trunk
[svn] - remove src/Input src/Output src/Effect src/General src/Visualization src/Container
author | nenolod |
---|---|
date | Mon, 18 Sep 2006 03:14:20 -0700 |
parents | src/Input/sexypsf/PsxMem.h@13389e613d67 |
children | 8a4fbe599b05 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/sexypsf/PsxMem.h Mon Sep 18 03:14:20 2006 -0700 @@ -0,0 +1,89 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#ifndef __PSXMEMORY_H__ +#define __PSXMEMORY_H__ + +#ifdef WORDS_BIGENDIAN +static INLINE u16 BFLIP16(u16 x) +{ + return( ((x>>8)&0xFF)| ((x&0xFF)<<8) ); +} + +static INLINE u32 BFLIP32(u32 x) +{ + return ( ((x>>24)&0xFF) | ((x>>8)&0xFF00) | ((x<<8)&0xFF0000) | ((x<<24)&0xFF000000) ); +} +#else +static INLINE u16 BFLIP16(u16 x) +{ + return x; +} + +static INLINE u32 BFLIP32(u32 x) +{ + return x; +} +#endif + +static INLINE s32 BFLIP32S(s32 x) +{ return (s32)BFLIP32((u32)x); } + +static INLINE s16 BFLIP16S(s16 x) +{ return (s16)BFLIP16((u16)x); } + +char *psxM; +#define psxMu32(mem) (*(u32*)&psxM[(mem) & 0x1fffff]) + +char *psxP; +char *psxR; +#define psxRu32(mem) (*(u32*)&psxR[(mem) & 0x7ffff]) + +char *psxH; + +#define psxHu8(mem) (*(u8*) &psxH[(mem) & 0xffff]) + +#define psxHu16(mem) (*(u16*)&psxH[(mem) & 0xffff]) +#define psxHu32(mem) (*(u32*)&psxH[(mem) & 0xffff]) + +char **psxMemLUT; + +#define PSXM(mem) (psxMemLUT[(mem) >> 16] == 0 ? NULL : (void*)(psxMemLUT[(mem) >> 16] + ((mem) & 0xffff))) + +#define PSXMu8(mem) (*(u8 *)PSXM(mem)) +#define PSXMu32(mem) (*(u32*)PSXM(mem)) + +#define PSXMuR8(mem) (PSXM(mem)?PSXMu8(mem):0) +#define PSXMuW8(mem,val) (PSXM(mem)?PSXMu8(mem)=val:;) + +int psxMemInit(); +void psxMemReset(); +void psxMemShutdown(); + +u8 psxMemRead8 (u32 mem); +u16 psxMemRead16(u32 mem); +u32 psxMemRead32(u32 mem); +void psxMemWrite8 (u32 mem, u8 value); +void psxMemWrite16(u32 mem, u16 value); +void psxMemWrite32(u32 mem, u32 value); + +void LoadPSXMem(u32 address, s32 length, unsigned char *data); + +#endif /* __PSXMEMORY_H__ */