/* * PSP Software Development Kit - https://github.com/pspdev * ----------------------------------------------------------------------- * Licensed under the BSD license, see LICENSE in PSPSDK root for details. * * Copyright (c) 2010 Dan Peori */ #include #include #define ALIGNMENT 16 static unsigned int staticOffset = 0; static unsigned int getMemorySize(unsigned int width, unsigned int height, unsigned int psm) { switch (psm) { case GU_PSM_T4: return (width * height) >> 1; case GU_PSM_T8: return width * height; case GU_PSM_5650: case GU_PSM_5551: case GU_PSM_4444: case GU_PSM_T16: return 2 * width * height; case GU_PSM_8888: case GU_PSM_T32: return 4 * width * height; default: return 0; } } void *guGetStaticVramBuffer(unsigned int width, unsigned int height, unsigned int psm) { unsigned int memSize = getMemorySize(width, height, psm); staticOffset = (staticOffset + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1); void *result = (void *)staticOffset; staticOffset += memSize; return result; } void *guGetStaticVramTexture(unsigned int width, unsigned int height, unsigned int psm) { void *result = guGetStaticVramBuffer(width, height, psm); return (void *)(((unsigned int)result) + ((unsigned int)sceGeEdramGetAddr())); }