mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 13:49:53 -06:00
Fix the video software backend. (closes issue 4269)
Some warning fixes and cleanup. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7361 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -19,62 +19,52 @@
|
||||
#include "CPMemLoader.h"
|
||||
#include "HW/Memmap.h"
|
||||
|
||||
// CP state
|
||||
static u8 *_cached_arraybases[16];
|
||||
|
||||
// STATE_TO_SAVE
|
||||
static u32 _arraybases[16];
|
||||
static u32 _arraystrides[16];
|
||||
static TMatrixIndexA _MatrixIndexA;
|
||||
static TMatrixIndexB _MatrixIndexB;
|
||||
static TVtxDesc _g_VtxDesc;
|
||||
static VAT _g_VtxAttr[8];
|
||||
|
||||
void SWLoadCPReg(u32 sub_cmd, u32 value)
|
||||
{
|
||||
switch (sub_cmd & 0xF0)
|
||||
{
|
||||
case 0x30:
|
||||
_MatrixIndexA.Hex = value;
|
||||
MatrixIndexA.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x40:
|
||||
_MatrixIndexB.Hex = value;
|
||||
MatrixIndexB.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x50:
|
||||
_g_VtxDesc.Hex &= ~0x1FFFF; // keep the Upper bits
|
||||
_g_VtxDesc.Hex |= value;
|
||||
g_VtxDesc.Hex &= ~0x1FFFF; // keep the Upper bits
|
||||
g_VtxDesc.Hex |= value;
|
||||
break;
|
||||
|
||||
case 0x60:
|
||||
_g_VtxDesc.Hex &= 0x1FFFF; // keep the lower 17Bits
|
||||
_g_VtxDesc.Hex |= (u64)value << 17;
|
||||
g_VtxDesc.Hex &= 0x1FFFF; // keep the lower 17Bits
|
||||
g_VtxDesc.Hex |= (u64)value << 17;
|
||||
break;
|
||||
|
||||
case 0x70:
|
||||
_assert_((sub_cmd & 0x0F) < 8);
|
||||
_g_VtxAttr[sub_cmd & 7].g0.Hex = value;
|
||||
g_VtxAttr[sub_cmd & 7].g0.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x80:
|
||||
_assert_((sub_cmd & 0x0F) < 8);
|
||||
_g_VtxAttr[sub_cmd & 7].g1.Hex = value;
|
||||
g_VtxAttr[sub_cmd & 7].g1.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x90:
|
||||
_assert_((sub_cmd & 0x0F) < 8);
|
||||
_g_VtxAttr[sub_cmd & 7].g2.Hex = value;
|
||||
g_VtxAttr[sub_cmd & 7].g2.Hex = value;
|
||||
break;
|
||||
|
||||
// Pointers to vertex arrays in GC RAM
|
||||
case 0xA0:
|
||||
_arraybases[sub_cmd & 0xF] = value;
|
||||
_cached_arraybases[sub_cmd & 0xF] = Memory::GetPointer(value);
|
||||
arraybases[sub_cmd & 0xF] = value;
|
||||
cached_arraybases[sub_cmd & 0xF] = Memory::GetPointer(value);
|
||||
break;
|
||||
|
||||
case 0xB0:
|
||||
_arraystrides[sub_cmd & 0xF] = value & 0xFF;
|
||||
arraystrides[sub_cmd & 0xF] = value & 0xFF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user