From e5869adc4469115c7eac9abf70145fc178e017de Mon Sep 17 00:00:00 2001 From: Nebuleon Fumika Date: Wed, 26 Dec 2012 14:42:02 -0500 Subject: Merge Registers structures into their respective CPUs to avoid additional memory addresses being loaded every opcode. --- source/sa1.h | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'source/sa1.h') diff --git a/source/sa1.h b/source/sa1.h index 21353d5..708fb68 100644 --- a/source/sa1.h +++ b/source/sa1.h @@ -141,21 +141,22 @@ struct SSA1 { uint8 VirtualBitmapFormat; bool8 in_char_dma; uint8 variable_bit_pos; + struct SSA1Registers Registers; }; #define SA1CheckZero() (SA1._Zero == 0) #define SA1CheckCarry() (SA1._Carry) -#define SA1CheckIRQ() (SA1Registers.PL & IRQ) -#define SA1CheckDecimal() (SA1Registers.PL & Decimal) -#define SA1CheckIndex() (SA1Registers.PL & IndexFlag) -#define SA1CheckMemory() (SA1Registers.PL & MemoryFlag) +#define SA1CheckIRQ() (SA1.Registers.PL & IRQ) +#define SA1CheckDecimal() (SA1.Registers.PL & Decimal) +#define SA1CheckIndex() (SA1.Registers.PL & IndexFlag) +#define SA1CheckMemory() (SA1.Registers.PL & MemoryFlag) #define SA1CheckOverflow() (SA1._Overflow) #define SA1CheckNegative() (SA1._Negative & 0x80) -#define SA1CheckEmulation() (SA1Registers.P.W & Emulation) +#define SA1CheckEmulation() (SA1.Registers.P.W & Emulation) -#define SA1ClearFlags(f) (SA1Registers.P.W &= ~(f)) -#define SA1SetFlags(f) (SA1Registers.P.W |= (f)) -#define SA1CheckFlag(f) (SA1Registers.PL & (f)) +#define SA1ClearFlags(f) (SA1.Registers.P.W &= ~(f)) +#define SA1SetFlags(f) (SA1.Registers.P.W |= (f)) +#define SA1CheckFlag(f) (SA1.Registers.PL & (f)) START_EXTERN_C @@ -171,7 +172,6 @@ extern struct SOpcodes S9xSA1OpcodesM1X1 [256]; extern struct SOpcodes S9xSA1OpcodesM1X0 [256]; extern struct SOpcodes S9xSA1OpcodesM0X1 [256]; extern struct SOpcodes S9xSA1OpcodesM0X0 [256]; -extern struct SSA1Registers SA1Registers; extern struct SSA1 SA1; void S9xSA1MainLoop (); @@ -186,16 +186,16 @@ END_EXTERN_C STATIC inline void S9xSA1UnpackStatus() { - SA1._Zero = (SA1Registers.PL & Zero) == 0; - SA1._Negative = (SA1Registers.PL & Negative); - SA1._Carry = (SA1Registers.PL & Carry); - SA1._Overflow = (SA1Registers.PL & Overflow) >> 6; + SA1._Zero = (SA1.Registers.PL & Zero) == 0; + SA1._Negative = (SA1.Registers.PL & Negative); + SA1._Carry = (SA1.Registers.PL & Carry); + SA1._Overflow = (SA1.Registers.PL & Overflow) >> 6; } STATIC inline void S9xSA1PackStatus() { - SA1Registers.PL &= ~(Zero | Negative | Carry | Overflow); - SA1Registers.PL |= SA1._Carry | ((SA1._Zero == 0) << 1) | + SA1.Registers.PL &= ~(Zero | Negative | Carry | Overflow); + SA1.Registers.PL |= SA1._Carry | ((SA1._Zero == 0) << 1) | (SA1._Negative & 0x80) | (SA1._Overflow << 6); } -- cgit v1.2.3