Files
pspsdk/src/gu/sceGuEnable.c
Francisco Javier Trujillo Mata a47fce5a52 Fix missing regions
2025-05-13 17:36:50 +02:00

100 lines
2.2 KiB
C

/*
* PSP Software Development Kit - https://github.com/pspdev
* -----------------------------------------------------------------------
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
*
* Copyright (c) 2005 Jesper Svennevid
*/
#include "guInternal.h"
void sceGuEnable(int state)
{
switch (state)
{
case GU_ALPHA_TEST:
sendCommandi(ALPHA_TEST_ENABLE, 1);
break;
case GU_DEPTH_TEST:
sendCommandi(Z_TEST_ENABLE, 1);
break;
case GU_SCISSOR_TEST:
{
GuContext *context = &gu_contexts[gu_curr_context];
int orig = (context->scissor_start[1] << 10) | context->scissor_start[0];
int end = (context->scissor_end[1] << 10) | context->scissor_end[0];
context->scissor_enable = 1;
sendCommandi(SCISSOR1, orig);
sendCommandi(SCISSOR2, end);
sendCommandi(REGION1, orig);
sendCommandi(REGION2, end);
}
break;
case GU_STENCIL_TEST:
sendCommandi(STENCIL_TEST_ENABLE, 1);
break;
case GU_BLEND:
sendCommandi(ALPHA_BLEND_ENABLE, 1);
break;
case GU_CULL_FACE:
sendCommandi(CULL_FACE_ENABLE, 1);
break;
case GU_DITHER:
sendCommandi(DITHER_ENABLE, 1);
break;
case GU_FOG:
sendCommandi(FOG_ENABLE, 1);
break;
case GU_CLIP_PLANES:
sendCommandi(DEPTH_CLIP_ENABLE, 1);
break;
case GU_TEXTURE_2D:
sendCommandi(TEXTURE_ENABLE, 1);
break;
case GU_LIGHTING:
sendCommandi(LIGHTING_ENABLE, 1);
break;
case GU_LIGHT0:
sendCommandi(LIGHT_ENABLE0, 1);
break;
case GU_LIGHT1:
sendCommandi(LIGHT_ENABLE1, 1);
break;
case GU_LIGHT2:
sendCommandi(LIGHT_ENABLE2, 1);
break;
case GU_LIGHT3:
sendCommandi(LIGHT_ENABLE3, 1);
break;
case GU_LINE_SMOOTH:
sendCommandi(ANTI_ALIAS_ENABLE, 1);
break;
case GU_PATCH_CULL_FACE:
sendCommandi(PATCH_CULL_ENABLE, 1);
break;
case GU_COLOR_TEST:
sendCommandi(COLOR_TEST_ENABLE, 1);
break;
case GU_COLOR_LOGIC_OP:
sendCommandi(LOGIC_OP_ENABLE, 1);
break;
case GU_FACE_NORMAL_REVERSE:
sendCommandi(NORMAL_REVERSE, 1);
break;
case GU_PATCH_FACE:
sendCommandi(PATCH_FACING, 1);
break;
case GU_FRAGMENT_2X:
{
GuContext *context = &gu_contexts[gu_curr_context];
context->fragment_2x = 0x10000;
sendCommandi(TEX_FUNC, 0x10000 | context->texture_function);
}
break;
}
if (state < GU_MAX_STATUS)
gu_states |= (1 << state);
}