gpu: a bit better idle bit handling
[pcsx_rearmed.git] / libpcsxcore / gpu.c
diff --git a/libpcsxcore/gpu.c b/libpcsxcore/gpu.c
new file mode 100644 (file)
index 0000000..1eadf59
--- /dev/null
@@ -0,0 +1,32 @@
+/***************************************************************************
+ *   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.                          *
+ ***************************************************************************/
+
+#include "gpu.h"
+#include "psxdma.h"
+
+void gpu_state_change(int what)
+{
+       enum psx_gpu_state state = what;
+       switch (state)
+       {
+       case PGS_VRAM_TRANSFER_START:
+               HW_GPU_STATUS &= ~SWAP32(PSXGPU_nBUSY);
+               break;
+       case PGS_VRAM_TRANSFER_END:
+               HW_GPU_STATUS |= SWAP32(PSXGPU_nBUSY);
+               break;
+       case PGS_PRIMITIVE_START:
+               HW_GPU_STATUS &= ~SWAP32(PSXGPU_nBUSY);
+               GPUDMA_INT(200); // see gpuInterrupt
+               break;
+       }
+}