aboutsummaryrefslogtreecommitdiff
path: root/source/sa1.h
diff options
context:
space:
mode:
authoraliaspider2014-10-30 00:23:30 +0100
committeraliaspider2014-10-30 00:23:30 +0100
commit804169dd621a3ad3eec1a32ce30350de667fee80 (patch)
tree5bce839a3652f6725d50639cccd3f589ee901515 /source/sa1.h
parent5382d193371c8db303d056b87b8ffd51316bf2e0 (diff)
downloadsnes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.tar.gz
snes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.tar.bz2
snes9x2005-804169dd621a3ad3eec1a32ce30350de667fee80.zip
apply a facelift
Diffstat (limited to 'source/sa1.h')
-rw-r--r--source/sa1.h207
1 files changed, 104 insertions, 103 deletions
diff --git a/source/sa1.h b/source/sa1.h
index fffb3b1..740d615 100644
--- a/source/sa1.h
+++ b/source/sa1.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.
*******************************************************************************/
@@ -93,57 +93,59 @@
#include "memmap.h"
#include "cpuexec.h"
-typedef struct {
- uint8 PB;
- uint8 DB;
- pair P;
- pair A;
- pair D;
- pair S;
- pair X;
- pair Y;
- uint16 PC;
-}SSA1Registers;
-
-typedef struct{
- SOpcodes *S9xOpcodes;
- uint8 _Carry;
- uint8 _Zero;
- uint8 _Negative;
- uint8 _Overflow;
- bool8 CPUExecuting;
- uint32 ShiftedPB;
- uint32 ShiftedDB;
- uint32 Flags;
- bool8 Executing;
- bool8 NMIActive;
- bool8 IRQActive;
- bool8 WaitingForInterrupt;
- bool8 Waiting;
-// uint8 WhichEvent;
- uint8 *PC;
- uint8 *PCBase;
- uint8 *BWRAM;
- uint8 *PCAtOpcodeStart;
- uint8 *WaitAddress;
- uint32 WaitCounter;
- uint8 *WaitByteAddress1;
- uint8 *WaitByteAddress2;
-// long Cycles;
-// long NextEvent;
-// long V_Counter;
- uint8 *Map [MEMMAP_NUM_BLOCKS];
- uint8 *WriteMap [MEMMAP_NUM_BLOCKS];
- int16 op1;
- int16 op2;
- int arithmetic_op;
- int64 sum;
- bool8 overflow;
- uint8 VirtualBitmapFormat;
- bool8 in_char_dma;
- uint8 variable_bit_pos;
- SSA1Registers Registers;
-}SSA1;
+typedef struct
+{
+ uint8 PB;
+ uint8 DB;
+ pair P;
+ pair A;
+ pair D;
+ pair S;
+ pair X;
+ pair Y;
+ uint16 PC;
+} SSA1Registers;
+
+typedef struct
+{
+ SOpcodes* S9xOpcodes;
+ uint8 _Carry;
+ uint8 _Zero;
+ uint8 _Negative;
+ uint8 _Overflow;
+ bool8 CPUExecuting;
+ uint32 ShiftedPB;
+ uint32 ShiftedDB;
+ uint32 Flags;
+ bool8 Executing;
+ bool8 NMIActive;
+ bool8 IRQActive;
+ bool8 WaitingForInterrupt;
+ bool8 Waiting;
+ // uint8 WhichEvent;
+ uint8* PC;
+ uint8* PCBase;
+ uint8* BWRAM;
+ uint8* PCAtOpcodeStart;
+ uint8* WaitAddress;
+ uint32 WaitCounter;
+ uint8* WaitByteAddress1;
+ uint8* WaitByteAddress2;
+ // long Cycles;
+ // long NextEvent;
+ // long V_Counter;
+ uint8* Map [MEMMAP_NUM_BLOCKS];
+ uint8* WriteMap [MEMMAP_NUM_BLOCKS];
+ int16 op1;
+ int16 op2;
+ int arithmetic_op;
+ int64 sum;
+ bool8 overflow;
+ uint8 VirtualBitmapFormat;
+ bool8 in_char_dma;
+ uint8 variable_bit_pos;
+ SSA1Registers Registers;
+} SSA1;
#define SA1CheckZero() (SA1._Zero == 0)
#define SA1CheckCarry() (SA1._Carry)
@@ -160,13 +162,13 @@ typedef struct{
#define SA1CheckFlag(f) (SA1.Registers.PL & (f))
-uint8 S9xSA1GetByte (uint32);
-uint16 S9xSA1GetWord (uint32);
-void S9xSA1SetByte (uint8, uint32);
-void S9xSA1SetWord (uint16, uint32);
-void S9xSA1SetPCBase (uint32);
-uint8 S9xGetSA1 (uint32);
-void S9xSetSA1 (uint8, uint32);
+uint8 S9xSA1GetByte(uint32);
+uint16 S9xSA1GetWord(uint32);
+void S9xSA1SetByte(uint8, uint32);
+void S9xSA1SetWord(uint16, uint32);
+void S9xSA1SetPCBase(uint32);
+uint8 S9xGetSA1(uint32);
+void S9xSetSA1(uint8, uint32);
extern SOpcodes S9xSA1OpcodesM1X1 [256];
extern SOpcodes S9xSA1OpcodesM1X0 [256];
@@ -174,49 +176,48 @@ extern SOpcodes S9xSA1OpcodesM0X1 [256];
extern SOpcodes S9xSA1OpcodesM0X0 [256];
extern SSA1 SA1;
-void S9xSA1MainLoop ();
-void S9xSA1Init ();
-void S9xFixSA1AfterSnapshotLoad ();
-void S9xSA1ExecuteDuringSleep ();
+void S9xSA1MainLoop();
+void S9xSA1Init();
+void S9xFixSA1AfterSnapshotLoad();
+void S9xSA1ExecuteDuringSleep();
-#define SNES_IRQ_SOURCE (1 << 7)
+#define SNES_IRQ_SOURCE (1 << 7)
#define TIMER_IRQ_SOURCE (1 << 6)
-#define DMA_IRQ_SOURCE (1 << 5)
+#define DMA_IRQ_SOURCE (1 << 5)
STATIC inline void S9xSA1UnpackStatus()
{
- 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;
+ 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()
{
- SA1.Registers.PL &= ~(Zero | Negative | Carry | Overflow);
- SA1.Registers.PL |= SA1._Carry | ((SA1._Zero == 0) << 1) |
- (SA1._Negative & 0x80) | (SA1._Overflow << 6);
+ SA1.Registers.PL &= ~(Zero | Negative | Carry | Overflow);
+ SA1.Registers.PL |= SA1._Carry | ((SA1._Zero == 0) << 1) |
+ (SA1._Negative & 0x80) | (SA1._Overflow << 6);
}
-STATIC inline void S9xSA1FixCycles ()
+STATIC inline void S9xSA1FixCycles()
{
- if (SA1CheckEmulation ())
- SA1.S9xOpcodes = S9xSA1OpcodesM1X1;
- else
- if (SA1CheckMemory ())
- {
- if (SA1CheckIndex ())
- SA1.S9xOpcodes = S9xSA1OpcodesM1X1;
- else
- SA1.S9xOpcodes = S9xSA1OpcodesM1X0;
- }
- else
- {
- if (SA1CheckIndex ())
- SA1.S9xOpcodes = S9xSA1OpcodesM0X1;
- else
- SA1.S9xOpcodes = S9xSA1OpcodesM0X0;
- }
+ if (SA1CheckEmulation())
+ SA1.S9xOpcodes = S9xSA1OpcodesM1X1;
+ else if (SA1CheckMemory())
+ {
+ if (SA1CheckIndex())
+ SA1.S9xOpcodes = S9xSA1OpcodesM1X1;
+ else
+ SA1.S9xOpcodes = S9xSA1OpcodesM1X0;
+ }
+ else
+ {
+ if (SA1CheckIndex())
+ SA1.S9xOpcodes = S9xSA1OpcodesM0X1;
+ else
+ SA1.S9xOpcodes = S9xSA1OpcodesM0X0;
+ }
}
#endif