diff options
| author | iCatButler <i.am.catbutler@gmail.com> | 2016-07-04 11:48:00 +0100 |
|---|---|---|
| committer | iCatButler <i.am.catbutler@gmail.com> | 2016-07-04 11:48:00 +0100 |
| commit | 97105b26f2194dcfb50addf0a421db9debd797d5 (patch) | |
| tree | c8a5b710d10c3568d754d54c07b8fc80711cbc44 /libpcsxcore/pgxp_mem.c | |
| parent | 03cfe9e6c22044c5b6e333b90c2b0021842fffad (diff) | |
| download | pcsxr-97105b26f2194dcfb50addf0a421db9debd797d5.tar.gz | |
Change "valid" flag to multiple bit flags
Validity of a pgxp value can now be set for any of four components using individual bit flags. This also allows the potential expansion of more flag data for each component.
Diffstat (limited to 'libpcsxcore/pgxp_mem.c')
| -rw-r--r-- | libpcsxcore/pgxp_mem.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libpcsxcore/pgxp_mem.c b/libpcsxcore/pgxp_mem.c index c3fdc9eb..1613ebed 100644 --- a/libpcsxcore/pgxp_mem.c +++ b/libpcsxcore/pgxp_mem.c @@ -141,6 +141,7 @@ void ValidateAndCopyMem(PGXP_value* dest, u32 addr, u32 value) void ValidateAndCopyMem16(PGXP_value* dest, u32 addr, u32 value) { + u32 validMask = 0; psx_value val, mask; PGXP_value* pMem = GetPtr(addr); if (pMem != NULL) @@ -151,15 +152,17 @@ void ValidateAndCopyMem16(PGXP_value* dest, u32 addr, u32 value) { val.w.h = value; mask.w.h = 0xFFFF; + validMask = VALID_1; } else { val.w.l = value; mask.w.l = 0xFFFF; + validMask = VALID_0; } // validate and copy whole value - MaskValidate(pMem, val.d, mask.d); + MaskValidate(pMem, val.d, mask.d, validMask); *dest = *pMem; // if high word then shift @@ -167,12 +170,14 @@ void ValidateAndCopyMem16(PGXP_value* dest, u32 addr, u32 value) { dest->x = dest->y; dest->lFlags = dest->hFlags; + dest->compFlags[0] = dest->compFlags[1]; } // truncate value dest->y = 0.f; dest->hFlags = 0; dest->value = value; + dest->compFlags[1] = VALID; // iCB: High word is valid, just 0 return; } @@ -200,16 +205,18 @@ void WriteMem16(PGXP_value* src, u32 addr) { dest->y = src->x; dest->hFlags = src->lFlags; + dest->compFlags[1] = src->compFlags[0]; pVal->w.h = (u16)src->value; } else { dest->x = src->x; dest->lFlags = src->lFlags; + dest->compFlags[0] = src->compFlags[0]; pVal->w.l = (u16)src->value; } - dest->valid = dest->valid && src->valid; + //dest->valid = dest->valid && src->valid; dest->gFlags |= src->gFlags; // inherit flags from both values (?) } } |
