(GX) Inlined and simplified version of GXLoadTexObj

This commit is contained in:
twinaphex 2014-06-04 05:34:47 +02:00
parent 19cbaaeba4
commit 3abff4c01f
2 changed files with 22 additions and 1 deletions

View File

@ -66,6 +66,11 @@ size_t display_list_size;
GXRModeObj gx_mode; GXRModeObj gx_mode;
unsigned gx_old_width, gx_old_height; unsigned gx_old_width, gx_old_height;
static u8 _gxtexmode0ids[8] = {0x80,0x81,0x82,0x83,0xA0,0xA1,0xA2,0xA3};
static u8 _gxtexmode1ids[8] = {0x84,0x85,0x86,0x87,0xA4,0xA5,0xA6,0xA7};
static u8 _gxteximg0ids[8] = {0x88,0x89,0x8A,0x8B,0xA8,0xA9,0xAA,0xAB};
static u8 _gxteximg3ids[8] = {0x94,0x95,0x96,0x97,0xB4,0xB5,0xB6,0xB7};
float verts[16] ATTRIBUTE_ALIGN(32) = { float verts[16] ATTRIBUTE_ALIGN(32) = {
-1, 1, -0.5, -1, 1, -0.5,
1, 1, -0.5, 1, 1, -0.5,
@ -942,7 +947,7 @@ static bool gx_frame(void *data, const void *frame,
__GX_InvalidateTexAll(__gx); __GX_InvalidateTexAll(__gx);
__GX_SetCurrentMtx(__gx, GX_PNMTX0); __GX_SetCurrentMtx(__gx, GX_PNMTX0);
GX_LoadTexObj(&g_tex.obj, GX_TEXMAP0); __GX_LoadTexObj(&g_tex.obj, GX_TEXMAP0);
__GX_CallDispList(__gx, display_list, display_list_size); __GX_CallDispList(__gx, display_list, display_list_size);
if (gx->rgui_texture_enable) if (gx->rgui_texture_enable)

View File

@ -727,6 +727,22 @@ static void __GX_SendFlushPrim(struct __gx_regdef *__gx)
__gx->peZMode = (__gx->peZMode&~0x10)|(_SHIFTL(update_enable,4,1)); \ __gx->peZMode = (__gx->peZMode&~0x10)|(_SHIFTL(update_enable,4,1)); \
GX_LOAD_BP_REG(__gx->peZMode) GX_LOAD_BP_REG(__gx->peZMode)
#define __GX_LoadTexObj(obj, mapid) \
{ \
struct __gx_texobj *ptr = (struct __gx_texobj*)obj; \
ptr->tex_filt = (ptr->tex_filt&~0xff000000)|(_SHIFTL(_gxtexmode0ids[mapid],24,8)); \
ptr->tex_lod = (ptr->tex_lod&~0xff000000)|(_SHIFTL(_gxtexmode1ids[mapid],24,8)); \
ptr->tex_size = (ptr->tex_size&~0xff000000)|(_SHIFTL(_gxteximg0ids[mapid],24,8)); \
ptr->tex_maddr = (ptr->tex_maddr&~0xff000000)|(_SHIFTL(_gxteximg3ids[mapid],24,8)); \
GX_LOAD_BP_REG(ptr->tex_filt); \
GX_LOAD_BP_REG(ptr->tex_lod); \
GX_LOAD_BP_REG(ptr->tex_size); \
GX_LOAD_BP_REG(ptr->tex_maddr); \
__gx->texMapSize[mapid] = ptr->tex_size; \
__gx->texMapWrap[mapid] = ptr->tex_filt; \
__gx->dirtyState |= 0x0001; \
}
#define X_FACTOR 0.5 #define X_FACTOR 0.5
#define Y_FACTOR 342.0 #define Y_FACTOR 342.0
#define ZFACTOR 16777215.0 #define ZFACTOR 16777215.0