aboutsummaryrefslogtreecommitdiff
path: root/source/cpuexec.h
diff options
context:
space:
mode:
authoraliaspider2014-10-30 00:23:30 +0100
committeraliaspider2014-10-30 00:23:30 +0100
commit804169dd621a3ad3eec1a32ce30350de667fee80 (patch)
tree5bce839a3652f6725d50639cccd3f589ee901515 /source/cpuexec.h
parent5382d193371c8db303d056b87b8ffd51316bf2e0 (diff)
downloadsnes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.tar.gz
snes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.tar.bz2
snes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.zip
apply a facelift
Diffstat (limited to 'source/cpuexec.h')
-rw-r--r--source/cpuexec.h210
1 files changed, 100 insertions, 110 deletions
diff --git a/source/cpuexec.h b/source/cpuexec.h
index 346b90e..3eb6064 100644
--- a/source/cpuexec.h
+++ b/source/cpuexec.h
@@ -1,6 +1,6 @@
/*******************************************************************************
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
-
+
(c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com) and
Jerremy Koot (jkoot@snes9x.com)
@@ -43,46 +43,46 @@
S-DD1 C emulator code
(c) Copyright 2003 Brad Jorsch with research by
Andreas Naive and John Weidman
-
+
S-RTC C emulator code
(c) Copyright 2001 John Weidman
-
+
ST010 C++ emulator code
(c) Copyright 2003 Feather, Kris Bleakley, John Weidman and Matthew Kendora
- Super FX x86 assembler emulator code
- (c) Copyright 1998 - 2003 zsKnight, _Demo_, and pagefault
+ Super FX x86 assembler emulator code
+ (c) Copyright 1998 - 2003 zsKnight, _Demo_, and pagefault
- Super FX C emulator code
+ Super FX C emulator code
(c) Copyright 1997 - 1999 Ivar, Gary Henderson and John Weidman
SH assembler code partly based on x86 assembler code
- (c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
+ (c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
+
-
Specific ports contains the works of other authors. See headers in
individual files.
-
+
Snes9x homepage: http://www.snes9x.com
-
+
Permission to use, copy, modify and distribute Snes9x in both binary and
source form, for non-commercial purposes, is hereby granted without fee,
providing that this license information and copyright notice appear with
all copies and any derived work.
-
+
This software is provided 'as-is', without any express or implied
warranty. In no event shall the authors be held liable for any damages
arising from the use of this software.
-
+
Snes9x is freeware for PERSONAL USE only. Commercial users should
seek permission of the copyright holders first. Commercial use includes
charging money for Snes9x or software derived from Snes9x.
-
+
The copyright holders request that bug fixes and improvements to the code
should be forwarded to them so everyone can benefit from the modifications
in future versions.
-
+
Super NES and Super Nintendo Entertainment System are trademarks of
Nintendo Co., Limited and its subsidiary companies.
*******************************************************************************/
@@ -95,44 +95,45 @@
#define DO_HBLANK_CHECK_SFX() \
if (CPU.Cycles >= CPU.NextEvent) \
- S9xDoHBlankProcessing_SFX ();
+ S9xDoHBlankProcessing_SFX ();
#define DO_HBLANK_CHECK_NoSFX() \
if (CPU.Cycles >= CPU.NextEvent) \
- S9xDoHBlankProcessing_NoSFX ();
+ S9xDoHBlankProcessing_NoSFX ();
-typedef struct {
+typedef struct
+{
#ifdef __WIN32__
- void (__cdecl *S9xOpcode)( void);
+ void (__cdecl* S9xOpcode)(void);
#else
- void (*S9xOpcode)( void);
+ void (*S9xOpcode)(void);
#endif
-}SOpcodes;
+} SOpcodes;
typedef struct
{
- uint8 *Speed;
- SOpcodes *S9xOpcodes;
- SRegisters Registers;
- uint8 _Carry;
- uint8 _Zero;
- uint8 _Negative;
- uint8 _Overflow;
- bool8 CPUExecuting;
- uint32 ShiftedPB;
- uint32 ShiftedDB;
- uint32 Frame;
- uint32 Scanline;
- uint32 FrameAdvanceCount;
-}SICPU;
-
-void S9xMainLoop (void);
-void S9xReset (void);
-void S9xSoftReset (void);
-void S9xDoHBlankProcessing_SFX ();
-void S9xDoHBlankProcessing_NoSFX ();
-void S9xClearIRQ (uint32);
-void S9xSetIRQ (uint32);
+ uint8* Speed;
+ SOpcodes* S9xOpcodes;
+ SRegisters Registers;
+ uint8 _Carry;
+ uint8 _Zero;
+ uint8 _Negative;
+ uint8 _Overflow;
+ bool8 CPUExecuting;
+ uint32 ShiftedPB;
+ uint32 ShiftedDB;
+ uint32 Frame;
+ uint32 Scanline;
+ uint32 FrameAdvanceCount;
+} SICPU;
+
+void S9xMainLoop(void);
+void S9xReset(void);
+void S9xSoftReset(void);
+void S9xDoHBlankProcessing_SFX();
+void S9xDoHBlankProcessing_NoSFX();
+void S9xClearIRQ(uint32);
+void S9xSetIRQ(uint32);
extern SOpcodes S9xOpcodesE1 [256];
extern SOpcodes S9xOpcodesM1X1 [256];
@@ -144,86 +145,75 @@ extern SICPU ICPU;
STATIC inline void S9xUnpackStatus()
{
- ICPU._Zero = (ICPU.Registers.PL & Zero) == 0;
- ICPU._Negative = (ICPU.Registers.PL & Negative);
- ICPU._Carry = (ICPU.Registers.PL & Carry);
- ICPU._Overflow = (ICPU.Registers.PL & Overflow) >> 6;
+ ICPU._Zero = (ICPU.Registers.PL & Zero) == 0;
+ ICPU._Negative = (ICPU.Registers.PL & Negative);
+ ICPU._Carry = (ICPU.Registers.PL & Carry);
+ ICPU._Overflow = (ICPU.Registers.PL & Overflow) >> 6;
}
STATIC inline void S9xPackStatus()
{
- ICPU.Registers.PL &= ~(Zero | Negative | Carry | Overflow);
- ICPU.Registers.PL |= ICPU._Carry | ((ICPU._Zero == 0) << 1) |
- (ICPU._Negative & 0x80) | (ICPU._Overflow << 6);
+ ICPU.Registers.PL &= ~(Zero | Negative | Carry | Overflow);
+ ICPU.Registers.PL |= ICPU._Carry | ((ICPU._Zero == 0) << 1) |
+ (ICPU._Negative & 0x80) | (ICPU._Overflow << 6);
}
-STATIC inline void CLEAR_IRQ_SOURCE (uint32 M)
+STATIC inline void CLEAR_IRQ_SOURCE(uint32 M)
{
- CPU.IRQActive &= ~M;
- if (!CPU.IRQActive)
- CPU.Flags &= ~IRQ_PENDING_FLAG;
+ CPU.IRQActive &= ~M;
+ if (!CPU.IRQActive)
+ CPU.Flags &= ~IRQ_PENDING_FLAG;
}
-
-STATIC inline void S9xFixCycles ()
+
+STATIC inline void S9xFixCycles()
{
- if (CheckEmulation ())
- {
- ICPU.S9xOpcodes = S9xOpcodesE1;
- }
- else
- if (CheckMemory ())
- {
- if (CheckIndex ())
- {
- ICPU.S9xOpcodes = S9xOpcodesM1X1;
- }
- else
- {
- ICPU.S9xOpcodes = S9xOpcodesM1X0;
- }
- }
- else
- {
- if (CheckIndex ())
- {
- ICPU.S9xOpcodes = S9xOpcodesM0X1;
- }
- else
- {
- ICPU.S9xOpcodes = S9xOpcodesM0X0;
- }
- }
+ if (CheckEmulation())
+ ICPU.S9xOpcodes = S9xOpcodesE1;
+ else if (CheckMemory())
+ {
+ if (CheckIndex())
+ ICPU.S9xOpcodes = S9xOpcodesM1X1;
+ else
+ ICPU.S9xOpcodes = S9xOpcodesM1X0;
+ }
+ else
+ {
+ if (CheckIndex())
+ ICPU.S9xOpcodes = S9xOpcodesM0X1;
+ else
+ ICPU.S9xOpcodes = S9xOpcodesM0X0;
+ }
}
-STATIC inline void S9xReschedule ()
+STATIC inline void S9xReschedule()
{
- uint8 which;
- long max;
-
- if (CPU.WhichEvent == HBLANK_START_EVENT ||
- CPU.WhichEvent == HTIMER_AFTER_EVENT)
- {
- which = HBLANK_END_EVENT;
- max = Settings.H_Max;
- }
- else
- {
- which = HBLANK_START_EVENT;
- max = Settings.HBlankStart;
- }
-
- if (PPU.HTimerEnabled &&
- (long) PPU.HTimerPosition < max &&
- (long) PPU.HTimerPosition > CPU.NextEvent &&
- (!PPU.VTimerEnabled ||
- (PPU.VTimerEnabled && CPU.V_Counter == PPU.IRQVBeamPos)))
- {
- which = (long) PPU.HTimerPosition < Settings.HBlankStart ?
- HTIMER_BEFORE_EVENT : HTIMER_AFTER_EVENT;
- max = PPU.HTimerPosition;
- }
- CPU.NextEvent = max;
- CPU.WhichEvent = which;
+ uint8 which;
+ long max;
+
+ if (CPU.WhichEvent == HBLANK_START_EVENT ||
+ CPU.WhichEvent == HTIMER_AFTER_EVENT)
+ {
+ which = HBLANK_END_EVENT;
+ max = Settings.H_Max;
+ }
+ else
+ {
+ which = HBLANK_START_EVENT;
+ max = Settings.HBlankStart;
+ }
+
+ if (PPU.HTimerEnabled &&
+ (long) PPU.HTimerPosition < max &&
+ (long) PPU.HTimerPosition > CPU.NextEvent &&
+ (!PPU.VTimerEnabled ||
+ (PPU.VTimerEnabled && CPU.V_Counter == PPU.IRQVBeamPos)))
+ {
+ which = (long) PPU.HTimerPosition < Settings.HBlankStart ?
+ HTIMER_BEFORE_EVENT : HTIMER_AFTER_EVENT;
+ max = PPU.HTimerPosition;
+ }
+ CPU.NextEvent = max;
+ CPU.WhichEvent = which;
}
#endif