Skip to content
Permalink
mecm
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
/*
* Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
*
* (c) Copyright 1996 - 2001 Gary Henderson (gary.henderson@ntlworld.com) and
* Jerremy Koot (jkoot@snes9x.com)
*
* Super FX C emulator code
* (c) Copyright 1997 - 1999 Ivar (ivar@snes9x.com) and
* Gary Henderson.
* Super FX assembler emulator code (c) Copyright 1998 zsKnight and _Demo_.
*
* DSP1 emulator code (c) Copyright 1998 Ivar, _Demo_ and Gary Henderson.
* C4 asm and some C emulation code (c) Copyright 2000 zsKnight and _Demo_.
* C4 C code (c) Copyright 2001 Gary Henderson (gary.henderson@ntlworld.com).
*
* DOS port code contains the works of other authors. See headers in
* individual files.
*
* Snes9x homepage: http://www.snes9x.com
*
* Permission to use, copy, modify and distribute Snes9x in both binary and
* source form, for non-commercial purposes, is hereby granted without fee,
* providing that this license information and copyright notice appear with
* all copies and any derived work.
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event shall the authors be held liable for any damages
* arising from the use of this software.
*
* Snes9x is freeware for PERSONAL USE only. Commercial users should
* seek permission of the copyright holders first. Commercial use includes
* charging money for Snes9x or software derived from Snes9x.
*
* The copyright holders request that bug fixes and improvements to the code
* should be forwarded to them so everyone can benefit from the modifications
* in future versions.
*
* Super NES and Super Nintendo Entertainment System are trademarks of
* Nintendo Co., Limited and its subsidiary companies.
*/
#ifndef _TILE_PSP_H_
#define _TILE_PSP_H_
#define NO_CPU_CACHE(a) (((u32)a)|0x40000000)
#define TILE_PREAMBLE
#define TILE_CACHE_RESET_ASK_MAX 0 //0 for never
#define TILE_CACHE_SIZE 4096
//#define TILE_CACHE_TEXTURES_SIZE (TILE_CACHE_SIZE/(64*64))
//exactly 12 bit, as max for TileNumber = Address(16bits) >> Shift(4,5 or 6)
//so it's faster to invalidate an entry in cache
//independantly of current colour palette & BG.BitShift
#define TILE_HASH_SIZE 4096
#define TILE_HASH_MASK (TILE_HASH_SIZE-1)
#define TILE_CACHE_MAX_DELAY 1
/***********************************/
typedef struct tile_cache_s{
u32 key;s32 used;
struct tile_cache_s *next;
u16 text_idx;
u16 tile_type;
}tile_cache_t;
struct Vertex
{
unsigned short u, v;
short x, y, z;
};
struct VertexCol
{
//unsigned short color;
unsigned short u, v;
short x, y, z;
};
/***********************************/
extern u8 *tile_texture[3]; //3 textures, for 3 bits mode (2,4,8 / pixels)
extern u32 tile_cache_reset,tile_cached[3],tile_resetask;
extern tile_cache_t *tile_cache_first_free[3];
/***********************************/
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" void tile_init_cache();
extern "C" void tile_reset_cache();
#else
void tile_init_cache();
void tile_reset_cache();
#endif
void tile_askforreset(s32 addr);
void tile_clean_cache(int cache_num,int delay);
/***********************************/
#undef GFX_TILE_ME
#ifdef GFX_TILE_ME
typedef struct
{
int TileAddress;
int TileShift;
int NameSelect;
int DirectColourMode;
int PaletteMask;
int PaletteShift;
int StartPalette;
struct Vertex *vertices_ptr[3];
int count;
int current_bitshift;
bool8 owner_order_end;
bool8 me_job_end;
char sp[2];
struct {
uint32 Tile; s32 x;s32 y;
uint32 StartPixel; uint32 Width;
uint32 StartLine; uint32 LineCount;int realZ2;
int type;
} ArgMent[1000];
}SME_GFX;
extern SME_GFX* ME_GFX;
//GPUPack.BG.TileAddress GPUPack.BG.TileShift;
//GPUPack.BG.NameSelect;
//GPUPack.BG.TileShift;
//GPUPack.BG.DirectColourMode;
//GPUPack.BG.PaletteMask GPUPack.BG.PaletteShift GPUPack.BG.StartPalette;
#endif
#endif