diff options
author | smf- <smf-@users.noreply.github.com> | 2008-04-11 23:10:07 +0000 |
---|---|---|
committer | smf- <smf-@users.noreply.github.com> | 2008-04-11 23:10:07 +0000 |
commit | 5f75c62fb90e09a3fa7fcf818adb00cfe869180a (patch) | |
tree | 738d39936d1af0b13f266e0650c2bcbada65cd55 | |
parent | 2aac02a8d713a6c62bac05278e30e946e001f824 (diff) |
fixed avsz3 & avsz4 flag & otz calculation.
-rw-r--r-- | src/emu/cpu/mips/psx.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/emu/cpu/mips/psx.c b/src/emu/cpu/mips/psx.c index 7810f71fdca..fef2f900c97 100644 --- a/src/emu/cpu/mips/psx.c +++ b/src/emu/cpu/mips/psx.c @@ -3280,6 +3280,7 @@ static void docop2( int gteop ) static const UINT32 *const p_n_fc[] = { &RFC, &GFC, &BFC }; static const UINT32 *const p_n_zc[] = { &n_zc, &n_zc, &n_zc }; static const UINT32 *const *const p_p_n_cv[] = { p_n_tr, p_n_bk, p_n_fc, p_n_zc }; + INT64 mac0; switch( GTE_FUNCT( gteop ) ) { @@ -3725,28 +3726,27 @@ static void docop2( int gteop ) return; } break; + case 0x2d: - if( gteop == 0x158002d ) - { - GTELOG( "AVSZ3" ); - FLAG = 0; + GTELOG( "AVSZ3" ); + FLAG = 0; + + mac0 = F( (INT64)( ZSF3 * SZ1 ) + ( ZSF3 * SZ2 ) + ( ZSF3 * SZ3 ) ); + OTZ = Lm_D( mac0 >> 12 ); + + MAC0 = mac0; + return; - MAC0 = F( ( (INT64)(INT16)ZSF3 * SZ1 ) + ( (INT16)ZSF3 * SZ2 ) + ( (INT16)ZSF3 * SZ3 ) ); - OTZ = Lm_D( (INT32)MAC0 >> 12 ); - return; - } - break; case 0x2e: - if( gteop == 0x168002e ) - { - GTELOG( "AVSZ4" ); - FLAG = 0; + GTELOG( "AVSZ4" ); + FLAG = 0; + + mac0 = F( (INT64)( ZSF4 * SZ0 ) + ( ZSF4 * SZ1 ) + ( ZSF4 * SZ2 ) + ( ZSF4 * SZ3 ) ); + OTZ = Lm_D( mac0 >> 12 ); + + MAC0 = mac0; + return; - MAC0 = F( ( (INT64)(INT16)ZSF4 * SZ0 ) + ( (INT16)ZSF4 * SZ1 ) + ( (INT16)ZSF4 * SZ2 ) + ( (INT16)ZSF4 * SZ3 ) ); - OTZ = Lm_D( (INT32)MAC0 >> 12 ); - return; - } - break; case 0x30: if( gteop == 0x0280030 ) { |