22
33#include "fxemu.h"
44#include "fxinst.h"
5+ #include "memmap.h"
56#include <stdlib.h>
67#include <string.h>
78
@@ -30,33 +31,27 @@ void fx_updateRamBank(uint8_t Byte)
3031
3132static INLINE void fx_readRegisterSpaceForCheck (void )
3233{
33- R15 = GSU .pvRegisters [30 ];
34- R15 |= ((uint32_t ) GSU .pvRegisters [31 ]) << 8 ;
34+ R15 = (uint32_t ) READ_WORD (& GSU .pvRegisters [30 ]);
3535}
3636
3737static void fx_readRegisterSpaceForUse (void )
3838{
39- static uint32_t avHeight [] = { 128 , 160 , 192 , 256 };
40- static uint32_t avMult [] = { 16 , 32 , 32 , 64 };
39+ static const uint32_t avHeight [] = { 128 , 160 , 192 , 256 };
40+ static const uint32_t avMult [] = { 16 , 32 , 32 , 64 };
4141 int32_t i ;
4242 uint8_t * p = GSU .pvRegisters ;
4343
4444 /* Update R0 - R14 */
45- for (i = 0 ; i < 15 ; i ++ )
46- {
47- GSU .avReg [i ] = * p ++ ;
48- GSU .avReg [i ] += ((uint32_t )(* p ++ )) << 8 ;
49- }
45+ for (i = 0 ; i < 15 ; i ++ , p += 2 )
46+ GSU .avReg [i ] = (uint32_t ) READ_WORD (p );
5047
5148 /* Update other registers */
5249 p = GSU .pvRegisters ;
53- GSU .vStatusReg = (uint32_t ) GSU .pvRegisters [GSU_SFR ];
54- GSU .vStatusReg |= ((uint32_t ) GSU .pvRegisters [GSU_SFR + 1 ]) << 8 ;
50+ GSU .vStatusReg = (uint32_t ) READ_WORD (& GSU .pvRegisters [GSU_SFR ]);
5551 GSU .vPrgBankReg = (uint32_t ) GSU .pvRegisters [GSU_PBR ];
5652 GSU .vRomBankReg = (uint32_t )p [GSU_ROMBR ];
5753 GSU .vRamBankReg = ((uint32_t )p [GSU_RAMBR ]) & (FX_RAM_BANKS - 1 );
58- GSU .vCacheBaseReg = (uint32_t )p [GSU_CBR ];
59- GSU .vCacheBaseReg |= ((uint32_t )p [GSU_CBR + 1 ]) << 8 ;
54+ GSU .vCacheBaseReg = (uint32_t ) READ_WORD (& p [GSU_CBR ]);
6055
6156 /* Update status register variables */
6257 GSU .vZero = !(GSU .vStatusReg & FLG_Z );
@@ -146,19 +141,15 @@ void fx_computeScreenPointers(void)
146141
147142static INLINE void fx_writeRegisterSpaceAfterCheck (void )
148143{
149- GSU .pvRegisters [30 ] = (uint8_t ) R15 ;
150- GSU .pvRegisters [31 ] = (uint8_t ) (R15 >> 8 );
144+ WRITE_WORD (& GSU .pvRegisters [30 ], R15 );
151145}
152146
153147static void fx_writeRegisterSpaceAfterUse (void )
154148{
155149 int32_t i ;
156150 uint8_t * p = GSU .pvRegisters ;
157- for (i = 0 ; i < 15 ; i ++ )
158- {
159- * p ++ = (uint8_t )GSU .avReg [i ];
160- * p ++ = (uint8_t )(GSU .avReg [i ] >> 8 );
161- }
151+ for (i = 0 ; i < 15 ; i ++ , p += 2 )
152+ WRITE_WORD (p , GSU .avReg [i ]);
162153
163154 /* Update status register */
164155 if (USEX16 (GSU .vZero ) == 0 )
@@ -179,13 +170,11 @@ static void fx_writeRegisterSpaceAfterUse(void)
179170 CF (CY );
180171
181172 p = GSU .pvRegisters ;
182- p [GSU_SFR ] = (uint8_t ) GSU .vStatusReg ;
183- p [GSU_SFR + 1 ] = (uint8_t ) (GSU .vStatusReg >> 8 );
173+ WRITE_WORD (& p [GSU_SFR ], GSU .vStatusReg );
184174 p [GSU_PBR ] = (uint8_t ) GSU .vPrgBankReg ;
185175 p [GSU_ROMBR ] = (uint8_t )GSU .vRomBankReg ;
186176 p [GSU_RAMBR ] = (uint8_t )GSU .vRamBankReg ;
187- p [GSU_CBR ] = (uint8_t )GSU .vCacheBaseReg ;
188- p [GSU_CBR + 1 ] = (uint8_t )(GSU .vCacheBaseReg >> 8 );
177+ WRITE_WORD (& p [GSU_CBR ], GSU .vCacheBaseReg );
189178}
190179
191180/* Reset the FxChip */
0 commit comments