aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTwinaphex2017-08-16 06:04:43 +0200
committerGitHub2017-08-16 06:04:43 +0200
commite2cffaea148cfb79cc3546642acb61245b96069e (patch)
treec0a7c48d53a52641d6451aef386b7c2b73c0752a
parent4b70a73bcdb09e7f96a1e5696a512f4d33667f40 (diff)
parentb3711dfa5041d08490a8603fe221f267c0da290a (diff)
downloadsnes9x2005-e2cffaea148cfb79cc3546642acb61245b96069e.tar.gz
snes9x2005-e2cffaea148cfb79cc3546642acb61245b96069e.tar.bz2
snes9x2005-e2cffaea148cfb79cc3546642acb61245b96069e.zip
Merge pull request #41 from jamsilva/master
SA1 fixes and Brunnis' lagfix port
-rw-r--r--Makefile7
-rw-r--r--libretro.c20
-rw-r--r--source/cpuexec.c416
-rw-r--r--source/gfx.c3
-rw-r--r--source/globals.c68
-rw-r--r--source/memmap.c389
-rw-r--r--source/ppu.c227
-rw-r--r--source/sa1.c179
-rw-r--r--source/seta010.c156
-rw-r--r--source/seta011.c28
-rw-r--r--source/seta018.c32
-rw-r--r--source/snes9x.h4
-rw-r--r--source/soundux.c34
-rw-r--r--source/spc700.c420
-rw-r--r--source/spc7110.c240
-rw-r--r--source/spc7110dec.c16
-rw-r--r--source/srtc.c48
17 files changed, 1214 insertions, 1073 deletions
diff --git a/Makefile b/Makefile
index 9d6b5c4..fe0080b 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,7 @@ DEBUG = 0
PERF_TEST = 0
LOAD_FROM_MEMORY_TEST = 1
USE_BLARGG_APU = 0
+LAGFIX = 1
ifeq ($(platform),)
platform = unix
@@ -264,6 +265,10 @@ ifeq ($(PERF_TEST),1)
FLAGS += -DPERF_TEST
endif
+ifeq ($(LAGFIX),1)
+ FLAGS += -DLAGFIX
+endif
+
ifeq ($(platform), psp1)
INCFLAGS += -I$(shell psp-config --pspsdk-path)/include
endif
@@ -283,7 +288,7 @@ ifneq (,$(findstring msvc,$(platform)))
LD = link.exe
else
OBJOUT = -o
- LINKOUT = -o
+ LINKOUT = -o
LD = $(CC)
endif
diff --git a/libretro.c b/libretro.c
index 107dbfd..ac33b0c 100644
--- a/libretro.c
+++ b/libretro.c
@@ -305,7 +305,7 @@ void retro_init(void)
else
log_cb = NULL;
- // State that the core supports achievements.
+ /* State that the core supports achievements. */
bool achievements = true;
environ_cb(RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS, &achievements);
@@ -319,7 +319,7 @@ void retro_init(void)
S9xInitDisplay();
S9xInitGFX();
#ifdef USE_BLARGG_APU
- S9xInitSound(1000, 0); //just give it a 1 second buffer
+ S9xInitSound(1000, 0); /* just give it a 1 second buffer */
S9xSetSamplesAvailableCallback(S9xAudioCallback);
#else
S9xInitSound();
@@ -431,7 +431,7 @@ void retro_run(void)
#ifdef PSP
static unsigned int __attribute__((aligned(16))) d_list[32];
- void* const texture_vram_p = (void*)(0x44200000 - (512 * 512)); // max VRAM address - frame size
+ void* const texture_vram_p = (void*)(0x44200000 - (512 * 512)); /* max VRAM address - frame size */
sceKernelDcacheWritebackRange(GFX.Screen, GFX.Pitch * IPPU.RenderedScreenHeight);
sceGuStart(GU_DIRECT, d_list);
sceGuCopyImage(GU_PSM_4444, 0, 0, IPPU.RenderedScreenWidth, IPPU.RenderedScreenHeight, GFX.Pitch >> 1, GFX.Screen, 0, 0, 512, texture_vram_p);
@@ -538,6 +538,12 @@ size_t retro_serialize_size(void)
bool retro_serialize(void* data, size_t size)
{
int32_t i;
+#ifdef LAGFIX
+ S9xPackStatus();
+#ifndef USE_BLARGG_APU
+ S9xAPUPackStatus();
+#endif
+#endif
S9xUpdateRTC();
S9xSRTCPreSaveState();
uint8_t* buffer = data;
@@ -667,19 +673,19 @@ void retro_cheat_set(unsigned index, bool enabled, const char* code)
uint8_t val;
bool sram;
- uint8_t bytes[3];//used only by GoldFinger, ignored for now
+ uint8_t bytes[3];/* used only by GoldFinger, ignored for now */
if (S9xGameGenieToRaw(code, &address, &val) && S9xProActionReplayToRaw(code, &address, &val) && S9xGoldFingerToRaw(code, &address, &sram, &val, bytes))
- return; // bad code, ignore
+ return; /* bad code, ignore */
if (index > Cheat.num_cheats)
- return; // cheat added in weird order, ignore
+ return; /* cheat added in weird order, ignore */
if (index == Cheat.num_cheats)
Cheat.num_cheats++;
Cheat.c[index].address = address;
Cheat.c[index].byte = val;
Cheat.c[index].enabled = enabled;
- Cheat.c[index].saved = false; // it'll be saved next time cheats run anyways
+ Cheat.c[index].saved = false; /* it'll be saved next time cheats run anyways */
Settings.ApplyCheats = true;
S9xApplyCheats();
diff --git a/source/cpuexec.c b/source/cpuexec.c
index e031483..2bbf90a 100644
--- a/source/cpuexec.c
+++ b/source/cpuexec.c
@@ -46,248 +46,348 @@ void S9xMainLoop()
void S9xMainLoop_SA1_SFX()
{
- for (;;)
+#ifdef LAGFIX
+ do
{
- APU_EXECUTE();
- if (CPU.Flags)
+#endif
+ do
{
- if (CPU.Flags & NMI_FLAG)
+ APU_EXECUTE();
+ if (CPU.Flags)
{
- if (--CPU.NMICycleCount == 0)
+ if (CPU.Flags & NMI_FLAG)
{
- CPU.Flags &= ~NMI_FLAG;
- if (CPU.WaitingForInterrupt)
+ if (--CPU.NMICycleCount == 0)
{
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
+ CPU.Flags &= ~NMI_FLAG;
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ S9xOpcode_NMI();
}
- S9xOpcode_NMI();
}
- }
- if (CPU.Flags & IRQ_PENDING_FLAG)
- {
- if (CPU.IRQCycleCount == 0)
+ if (CPU.Flags & IRQ_PENDING_FLAG)
{
- if (CPU.WaitingForInterrupt)
- {
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
- }
- if (CPU.IRQActive && !Settings.DisableIRQ)
+ if (CPU.IRQCycleCount == 0)
{
- if (!CheckFlag(IRQ))
- S9xOpcode_IRQ();
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ if (CPU.IRQActive && !Settings.DisableIRQ)
+ {
+ if (!CheckFlag(IRQ))
+ S9xOpcode_IRQ();
+ }
+ else
+ CPU.Flags &= ~IRQ_PENDING_FLAG;
}
- else
- CPU.Flags &= ~IRQ_PENDING_FLAG;
+ else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
+ CPU.IRQCycleCount = 1;
}
- else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
- CPU.IRQCycleCount = 1;
+ if (CPU.Flags & SCAN_KEYS_FLAG)
+ break;
}
- if (CPU.Flags & SCAN_KEYS_FLAG)
- break;
- }
- CPU.PCAtOpcodeStart = CPU.PC;
- CPU.Cycles += CPU.MemSpeed;
- (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
+ CPU.PCAtOpcodeStart = CPU.PC;
+ CPU.Cycles += CPU.MemSpeed;
+ (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
- if (SA1.Executing)
- S9xSA1MainLoop();
- DO_HBLANK_CHECK_SFX();
- }
+ if (SA1.Executing)
+ S9xSA1MainLoop();
+ DO_HBLANK_CHECK_SFX();
+
+#ifdef LAGFIX
+ if(finishedFrame)
+ break;
+#endif
+ } while(true);
- ICPU.Registers.PC = CPU.PC - CPU.PCBase;
- S9xPackStatus();
+ ICPU.Registers.PC = CPU.PC - CPU.PCBase;
+#ifndef USE_BLARGG_APU
+ IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
+#endif
+
+#ifdef LAGFIX
+ if(!finishedFrame)
+ {
+#endif
+ S9xPackStatus();
#ifndef USE_BLARGG_APU
- IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
- S9xAPUPackStatus();
+ S9xAPUPackStatus();
+#endif
+ CPU.Flags &= ~SCAN_KEYS_FLAG;
+#ifdef LAGFIX
+ }
+ else
+ {
+ finishedFrame = false;
+ break;
+ }
+ } while(!finishedFrame);
#endif
- CPU.Flags &= ~SCAN_KEYS_FLAG;
}
void S9xMainLoop_SA1_NoSFX()
{
- for (;;)
+#ifdef LAGFIX
+ do
{
- APU_EXECUTE();
- if (CPU.Flags)
+#endif
+ do
{
- if (CPU.Flags & NMI_FLAG)
+ APU_EXECUTE();
+ if (CPU.Flags)
{
- if (--CPU.NMICycleCount == 0)
+ if (CPU.Flags & NMI_FLAG)
{
- CPU.Flags &= ~NMI_FLAG;
- if (CPU.WaitingForInterrupt)
+ if (--CPU.NMICycleCount == 0)
{
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
+ CPU.Flags &= ~NMI_FLAG;
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ S9xOpcode_NMI();
}
- S9xOpcode_NMI();
}
- }
- if (CPU.Flags & IRQ_PENDING_FLAG)
- {
- if (CPU.IRQCycleCount == 0)
+ if (CPU.Flags & IRQ_PENDING_FLAG)
{
- if (CPU.WaitingForInterrupt)
- {
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
- }
- if (CPU.IRQActive && !Settings.DisableIRQ)
+ if (CPU.IRQCycleCount == 0)
{
- if (!CheckFlag(IRQ))
- S9xOpcode_IRQ();
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ if (CPU.IRQActive && !Settings.DisableIRQ)
+ {
+ if (!CheckFlag(IRQ))
+ S9xOpcode_IRQ();
+ }
+ else
+ CPU.Flags &= ~IRQ_PENDING_FLAG;
}
- else
- CPU.Flags &= ~IRQ_PENDING_FLAG;
+ else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
+ CPU.IRQCycleCount = 1;
}
- else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
- CPU.IRQCycleCount = 1;
+ if (CPU.Flags & SCAN_KEYS_FLAG)
+ break;
}
- if (CPU.Flags & SCAN_KEYS_FLAG)
- break;
- }
- CPU.PCAtOpcodeStart = CPU.PC;
- CPU.Cycles += CPU.MemSpeed;
- (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
+ CPU.PCAtOpcodeStart = CPU.PC;
+ CPU.Cycles += CPU.MemSpeed;
+ (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
- if (SA1.Executing)
- S9xSA1MainLoop();
- DO_HBLANK_CHECK_NoSFX();
- }
+ if (SA1.Executing)
+ S9xSA1MainLoop();
+ DO_HBLANK_CHECK_NoSFX();
+
+#ifdef LAGFIX
+ if(finishedFrame)
+ break;
+#endif
+ } while(true);
+
+ ICPU.Registers.PC = CPU.PC - CPU.PCBase;
+#ifndef USE_BLARGG_APU
+ IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
+#endif
- ICPU.Registers.PC = CPU.PC - CPU.PCBase;
- S9xPackStatus();
+#ifdef LAGFIX
+ if(!finishedFrame)
+ {
+#endif
+ S9xPackStatus();
#ifndef USE_BLARGG_APU
- IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
- S9xAPUPackStatus();
+ S9xAPUPackStatus();
+#endif
+ CPU.Flags &= ~SCAN_KEYS_FLAG;
+#ifdef LAGFIX
+ }
+ else
+ {
+ finishedFrame = false;
+ break;
+ }
+ } while(!finishedFrame);
#endif
- CPU.Flags &= ~SCAN_KEYS_FLAG;
}
void S9xMainLoop_NoSA1_SFX()
{
- for (;;)
+#ifdef LAGFIX
+ do
{
- APU_EXECUTE();
- if (CPU.Flags)
+#endif
+ do
{
- if (CPU.Flags & NMI_FLAG)
+ APU_EXECUTE();
+ if (CPU.Flags)
{
- if (--CPU.NMICycleCount == 0)
+ if (CPU.Flags & NMI_FLAG)
{
- CPU.Flags &= ~NMI_FLAG;
- if (CPU.WaitingForInterrupt)
+ if (--CPU.NMICycleCount == 0)
{
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
+ CPU.Flags &= ~NMI_FLAG;
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ S9xOpcode_NMI();
}
- S9xOpcode_NMI();
}
- }
- if (CPU.Flags & IRQ_PENDING_FLAG)
- {
- if (CPU.IRQCycleCount == 0)
+ if (CPU.Flags & IRQ_PENDING_FLAG)
{
- if (CPU.WaitingForInterrupt)
+ if (CPU.IRQCycleCount == 0)
{
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ if (CPU.IRQActive && !Settings.DisableIRQ)
+ {
+ if (!CheckFlag(IRQ))
+ S9xOpcode_IRQ();
+ }
+ else
+ CPU.Flags &= ~IRQ_PENDING_FLAG;
}
- if (CPU.IRQActive && !Settings.DisableIRQ)
- {
- if (!CheckFlag(IRQ))
- S9xOpcode_IRQ();
- }
- else
- CPU.Flags &= ~IRQ_PENDING_FLAG;
+ else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
+ CPU.IRQCycleCount = 1;
}
- else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
- CPU.IRQCycleCount = 1;
+ if (CPU.Flags & SCAN_KEYS_FLAG)
+ break;
}
- if (CPU.Flags & SCAN_KEYS_FLAG)
+
+ CPU.PCAtOpcodeStart = CPU.PC;
+ CPU.Cycles += CPU.MemSpeed;
+ (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
+ DO_HBLANK_CHECK_SFX();
+
+#ifdef LAGFIX
+ if(finishedFrame)
break;
- }
+#endif
+ } while(true);
- CPU.PCAtOpcodeStart = CPU.PC;
- CPU.Cycles += CPU.MemSpeed;
- (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
- DO_HBLANK_CHECK_SFX();
- }
+ ICPU.Registers.PC = CPU.PC - CPU.PCBase;
+#ifndef USE_BLARGG_APU
+ IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
+#endif
- ICPU.Registers.PC = CPU.PC - CPU.PCBase;
- S9xPackStatus();
+#ifdef LAGFIX
+ if(!finishedFrame)
+ {
+#endif
+ S9xPackStatus();
#ifndef USE_BLARGG_APU
- IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
- S9xAPUPackStatus();
+ S9xAPUPackStatus();
+#endif
+ CPU.Flags &= ~SCAN_KEYS_FLAG;
+#ifdef LAGFIX
+ }
+ else
+ {
+ finishedFrame = false;
+ break;
+ }
+ } while(!finishedFrame);
#endif
- CPU.Flags &= ~SCAN_KEYS_FLAG;
}
void S9xMainLoop_NoSA1_NoSFX()
{
- for (;;)
+#ifdef LAGFIX
+ do
{
- APU_EXECUTE();
- if (CPU.Flags)
+#endif
+ do
{
- if (CPU.Flags & NMI_FLAG)
+ APU_EXECUTE();
+ if (CPU.Flags)
{
- if (--CPU.NMICycleCount == 0)
+ if (CPU.Flags & NMI_FLAG)
{
- CPU.Flags &= ~NMI_FLAG;
- if (CPU.WaitingForInterrupt)
+ if (--CPU.NMICycleCount == 0)
{
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
+ CPU.Flags &= ~NMI_FLAG;
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ S9xOpcode_NMI();
}
- S9xOpcode_NMI();
}
- }
- if (CPU.Flags & IRQ_PENDING_FLAG)
- {
- if (CPU.IRQCycleCount == 0)
+ if (CPU.Flags & IRQ_PENDING_FLAG)
{
- if (CPU.WaitingForInterrupt)
- {
- CPU.WaitingForInterrupt = false;
- CPU.PC++;
- }
- if (CPU.IRQActive && !Settings.DisableIRQ)
+ if (CPU.IRQCycleCount == 0)
{
- if (!CheckFlag(IRQ))
- S9xOpcode_IRQ();
+ if (CPU.WaitingForInterrupt)
+ {
+ CPU.WaitingForInterrupt = false;
+ CPU.PC++;
+ }
+ if (CPU.IRQActive && !Settings.DisableIRQ)
+ {
+ if (!CheckFlag(IRQ))
+ S9xOpcode_IRQ();
+ }
+ else
+ CPU.Flags &= ~IRQ_PENDING_FLAG;
}
- else
- CPU.Flags &= ~IRQ_PENDING_FLAG;
+ else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
+ CPU.IRQCycleCount = 1;
}
- else if (--CPU.IRQCycleCount == 0 && CheckFlag(IRQ))
- CPU.IRQCycleCount = 1;
+ if (CPU.Flags & SCAN_KEYS_FLAG)
+ break;
}
- if (CPU.Flags & SCAN_KEYS_FLAG)
+
+ CPU.PCAtOpcodeStart = CPU.PC;
+ CPU.Cycles += CPU.MemSpeed;
+ (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
+ DO_HBLANK_CHECK_NoSFX();
+
+#ifdef LAGFIX
+ if(finishedFrame)
break;
- }
+#endif
+ } while(true);
- CPU.PCAtOpcodeStart = CPU.PC;
- CPU.Cycles += CPU.MemSpeed;
- (*ICPU.S9xOpcodes [*CPU.PC++].S9xOpcode)();
- DO_HBLANK_CHECK_NoSFX();
- }
+ ICPU.Registers.PC = CPU.PC - CPU.PCBase;
+#ifndef USE_BLARGG_APU
+ IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
+#endif
- ICPU.Registers.PC = CPU.PC - CPU.PCBase;
- S9xPackStatus();
+#ifdef LAGFIX
+ if(!finishedFrame)
+ {
+#endif
+ S9xPackStatus();
#ifndef USE_BLARGG_APU
- IAPU.Registers.PC = IAPU.PC - IAPU.RAM;
- S9xAPUPackStatus();
+ S9xAPUPackStatus();
+#endif
+ CPU.Flags &= ~SCAN_KEYS_FLAG;
+#ifdef LAGFIX
+ }
+ else
+ {
+ finishedFrame = false;
+ break;
+ }
+ } while(!finishedFrame);
#endif
- CPU.Flags &= ~SCAN_KEYS_FLAG;
}
void S9xSetIRQ(uint32_t source)
diff --git a/source/gfx.c b/source/gfx.c
index 0059d63..9d077ac 100644
--- a/source/gfx.c
+++ b/source/gfx.c
@@ -474,6 +474,9 @@ void S9xEndScreenRefresh(void)
GFX.Pitch = GFX.Pitch2 = GFX.RealPitch;
GFX.PPL = GFX.PPLx2 >> 1;
+#ifdef LAGFIX
+ finishedFrame = true;
+#endif
}
S9xApplyCheats();
diff --git a/source/globals.c b/source/globals.c
index 14b8a64..f7cdb85 100644
--- a/source/globals.c
+++ b/source/globals.c
@@ -69,6 +69,10 @@ uint32_t even_low[4][16];
SCheatData Cheat;
+#ifdef LAGFIX
+bool finishedFrame = false;
+#endif
+
#ifndef USE_BLARGG_APU
SoundStatus so;
@@ -103,47 +107,47 @@ uint8_t BitShifts[8][4] =
};
uint8_t TileShifts[8][4] =
{
- {4, 4, 4, 4}, // 0
- {5, 5, 4, 0}, // 1
- {5, 5, 0, 0}, // 2
- {6, 5, 0, 0}, // 3
- {6, 4, 0, 0}, // 4
- {5, 4, 0, 0}, // 5
- {5, 0, 0, 0}, // 6
- {6, 0, 0, 0} // 7
+ {4, 4, 4, 4}, /* 0 */
+ {5, 5, 4, 0}, /* 1 */
+ {5, 5, 0, 0}, /* 2 */
+ {6, 5, 0, 0}, /* 3 */
+ {6, 4, 0, 0}, /* 4 */
+ {5, 4, 0, 0}, /* 5 */
+ {5, 0, 0, 0}, /* 6 */
+ {6, 0, 0, 0} /* 7 */
};
uint8_t PaletteShifts[8][4] =
{
- {2, 2, 2, 2}, // 0
- {4, 4, 2, 0}, // 1
- {4, 4, 0, 0}, // 2
- {0, 4, 0, 0}, // 3
- {0, 2, 0, 0}, // 4
- {4, 2, 0, 0}, // 5
- {4, 0, 0, 0}, // 6
- {0, 0, 0, 0} // 7
+ {2, 2, 2, 2}, /* 0 */
+ {4, 4, 2, 0}, /* 1 */
+ {4, 4, 0, 0}, /* 2 */
+ {0, 4, 0, 0}, /* 3 */
+ {0, 2, 0, 0}, /* 4 */
+ {4, 2, 0, 0}, /* 5 */
+ {4, 0, 0, 0}, /* 6 */
+ {0, 0, 0, 0} /* 7 */
};
uint8_t PaletteMasks[8][4] =
{
- {7, 7, 7, 7}, // 0
- {7, 7, 7, 0}, // 1
- {7, 7, 0, 0}, // 2
- {0, 7, 0, 0}, // 3
- {0, 7, 0, 0}, // 4
- {7, 7, 0, 0}, // 5
- {7, 0, 0, 0}, // 6
- {0, 0, 0, 0} // 7
+ {7, 7, 7, 7}, /* 0 */
+ {7, 7, 7, 0}, /* 1 */
+ {7, 7, 0, 0}, /* 2 */
+ {0, 7, 0, 0}, /* 3 */
+ {0, 7, 0, 0}, /* 4 */
+ {7, 7, 0, 0}, /* 5 */
+ {7, 0, 0, 0}, /* 6 */
+ {0, 0, 0, 0} /* 7 */
};
uint8_t Depths[8][4] =
{
- {TILE_2BIT, TILE_2BIT, TILE_2BIT, TILE_2BIT}, // 0
- {TILE_4BIT, TILE_4BIT, TILE_2BIT, 0}, // 1
- {TILE_4BIT, TILE_4BIT, 0, 0}, // 2
- {TILE_8BIT, TILE_4BIT, 0, 0}, // 3
- {TILE_8BIT, TILE_2BIT, 0, 0}, // 4
- {TILE_4BIT, TILE_2BIT, 0, 0}, // 5
- {TILE_4BIT, 0, 0, 0}, // 6
- {0, 0, 0, 0} // 7
+ {TILE_2BIT, TILE_2BIT, TILE_2BIT, TILE_2BIT}, /* 0 */
+ {TILE_4BIT, TILE_4BIT, TILE_2BIT, 0}, /* 1 */
+ {TILE_4BIT, TILE_4BIT, 0, 0}, /* 2 */
+ {TILE_8BIT, TILE_4BIT, 0, 0}, /* 3 */
+ {TILE_8BIT, TILE_2BIT, 0, 0}, /* 4 */
+ {TILE_4BIT, TILE_2BIT, 0, 0}, /* 5 */
+ {TILE_4BIT, 0, 0, 0}, /* 6 */
+ {0, 0, 0, 0} /* 7 */
};
uint8_t BGSizes [2] =
{
diff --git a/source/memmap.c b/source/memmap.c
index 87cfc32..6f5b726 100644
--- a/source/memmap.c
+++ b/source/memmap.c
@@ -50,7 +50,7 @@ void S9xDeinterleaveType1(int32_t TotalFileSize, uint8_t* base)
blocks [i * 2] = i + nblocks;
blocks [i * 2 + 1] = i;
}
- // DS2 DMA notes: base may or may not be 32-byte aligned
+ /* DS2 DMA notes: base may or may not be 32-byte aligned */
uint8_t* tmp = (uint8_t*) malloc(0x8000);
if (tmp)
{
@@ -61,13 +61,13 @@ void S9xDeinterleaveType1(int32_t TotalFileSize, uint8_t* base)
{
if (blocks [j] == i)
{
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(tmp, &base [blocks [j] * 0x8000], 0x8000);
- // memmove converted: Different addresses, or identical for blocks[i] == blocks[j] [Neb]
- // DS2 DMA notes: Don't do DMA at all if blocks[i] == blocks[j]
+ /* memmove converted: Different addresses, or identical for blocks[i] == blocks[j] [Neb] */
+ /* DS2 DMA notes: Don't do DMA at all if blocks[i] == blocks[j] */
memcpy(&base [blocks [j] * 0x8000],
&base [blocks [i] * 0x8000], 0x8000);
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(&base [blocks [i] * 0x8000], tmp, 0x8000);
uint8_t b = blocks [j];
blocks [j] = blocks [i];
@@ -85,17 +85,17 @@ void S9xDeinterleaveGD24(int32_t TotalFileSize, uint8_t* base)
if (TotalFileSize != 0x300000)
return;
- // DS2 DMA notes: base may or may not be 32-byte aligned
+ /* DS2 DMA notes: base may or may not be 32-byte aligned */
uint8_t* tmp = (uint8_t*) malloc(0x80000);
if (tmp)
{
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(tmp, &base[0x180000], 0x80000);
- // memmove converted: Different addresses [Neb]
+ /* memmove converted: Different addresses [Neb] */
memcpy(&base[0x180000], &base[0x200000], 0x80000);
- // memmove converted: Different addresses [Neb]
+ /* memmove converted: Different addresses [Neb] */
memcpy(&base[0x200000], &base[0x280000], 0x80000);
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(&base[0x280000], tmp, 0x80000);
free(tmp);
@@ -122,7 +122,7 @@ static int32_t ScoreHiROM(bool skip_header, int32_t romoff)
if (Memory.ROM [o + 0xd5] & 0x1)
score += 2;
- //Mode23 is SA-1
+ /* Mode23 is SA-1 */
if (Memory.ROM [o + 0xd5] == 0x23)
score -= 2;
@@ -143,7 +143,7 @@ static int32_t ScoreHiROM(bool skip_header, int32_t romoff)
if (!(Memory.ROM [o + 0xfd] & 0x80))
score -= 6;
if ((Memory.ROM [o + 0xfc] | (Memory.ROM [o + 0xfd] << 8)) > 0xFFB0)
- score -= 2; //reduced after looking at a scan by Cowering
+ score -= 2; /* reduced after looking at a scan by Cowering */
if (Memory.CalculatedSize > 1024 * 1024 * 3)
score += 4;
if ((1 << (Memory.ROM [o + 0xd7] - 7)) > 48)
@@ -166,7 +166,7 @@ static int32_t ScoreLoROM(bool skip_header, int32_t romoff)
if (!(Memory.ROM [o + 0xd5] & 0x1))
score += 3;
- //Mode23 is SA-1
+ /* Mode23 is SA-1 */
if (Memory.ROM [o + 0xd5] == 0x23)
score += 2;
@@ -186,7 +186,7 @@ static int32_t ScoreLoROM(bool skip_header, int32_t romoff)
if (!(Memory.ROM [o + 0xfd] & 0x80))
score -= 6;
if ((Memory.ROM [o + 0xfc] | (Memory.ROM [o + 0xfd] << 8)) > 0xFFB0)
- score -= 2; //reduced per Cowering suggestion
+ score -= 2; /* reduced per Cowering suggestion */
if ((1 << (Memory.ROM [o + 0xd7] - 7)) > 48)
score -= 1;
if (!AllASCII(&Memory.ROM [o + 0xb0], 6))
@@ -237,13 +237,13 @@ static char* Safe(const char* s)
/**********************************************************************************************/
bool S9xInitMemory(void)
{
- // DS2 DMA notes: These would do well to be allocated with 32 extra bytes
- // so they can be 32-byte aligned. [Neb]
+ /* DS2 DMA notes: These would do well to be allocated with 32 extra bytes
+ so they can be 32-byte aligned. [Neb] */
Memory.RAM = (uint8_t*) calloc(0x20000, 1);
Memory.SRAM = (uint8_t*) calloc(0x20000, 1);
Memory.VRAM = (uint8_t*) calloc(0x10000, 1);
Memory.BSRAM = (uint8_t*) calloc(0x80000, 1);
- // Don't bother initializing ROM, we will load a game anyway.
+ /* Don't bother initializing ROM, we will load a game anyway. */
#ifdef DS2_DMA
Memory.ROM = (uint8_t*) AlignedMalloc(MAX_ROM_SIZE + 0x200 + 0x8000, 32, &PtrAdj.ROM);
#else
@@ -265,16 +265,16 @@ bool S9xInitMemory(void)
return false;
}
- // FillRAM uses first 32K of ROM image area, otherwise space just
- // wasted. Might be read by the SuperFX code.
+ /* FillRAM uses first 32K of ROM image area, otherwise space just
+ wasted. Might be read by the SuperFX code. */
Memory.FillRAM = Memory.ROM;
- // Add 0x8000 to ROM image pointer to stop SuperFX code accessing
- // unallocated memory (can cause crash on some ports).
- Memory.ROM += 0x8000; // still 32-byte aligned
+ /* Add 0x8000 to ROM image pointer to stop SuperFX code accessing
+ unallocated memory (can cause crash on some ports). */
+ Memory.ROM += 0x8000; /* still 32-byte aligned */
SuperFX.pvRegisters = &Memory.FillRAM [0x3000];
- SuperFX.nRamBanks = 2; // Most only use 1. 1 = 64KB, 2 = 128KB = 1024Mb
+ SuperFX.nRamBanks = 2; /* Most only use 1. 1 = 64KB, 2 = 128KB = 1024Mb */
SuperFX.pvRam = Memory.SRAM;
SuperFX.nRomBanks = (2 * 1024 * 1024) / (32 * 1024);
SuperFX.pvRom = (uint8_t*) Memory.ROM;
@@ -431,10 +431,10 @@ static void CheckForIPSPatch(const char* rom_filename, bool header, int32_t* rom
}
}
- // Check if ROM image needs to be truncated
+ /* Check if ROM image needs to be truncated */
ofs = ReadInt(patch_file, 3);
if (ofs != -1 && ofs - offset < *rom_size)
- *rom_size = ofs - offset; // Need to truncate ROM image
+ *rom_size = ofs - offset; /* Need to truncate ROM image */
fclose(patch_file);
return;
@@ -461,7 +461,7 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
_makepath(fname, drive, dir, name, ext);
#ifdef __WIN32__
- // memmove required: Overlapping addresses [Neb]
+ /* memmove required: Overlapping addresses [Neb] */
memmove(&ext [0], &ext[1], 4);
#endif
@@ -479,12 +479,12 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
int32_t calc_size;
FileSize = fread(ptr, 1, maxsize + 0x200 - (ptr - Memory.ROM), ROMFile);
fclose(ROMFile);
- calc_size = FileSize & ~0x1FFF; // round to the lower 0x2000
+ calc_size = FileSize & ~0x1FFF; /* round to the lower 0x2000 */
if ((FileSize - calc_size == 512 && !Settings.ForceNoHeader) || Settings.ForceHeader)
{
- // memmove required: Overlapping addresses [Neb]
- // DS2 DMA notes: Can be split into 512-byte DMA blocks [Neb]
+ /* memmove required: Overlapping addresses [Neb] */
+ /* DS2 DMA notes: Can be split into 512-byte DMA blocks [Neb] */
#ifdef DS2_DMA
__dcache_writeback_all();
{
@@ -507,14 +507,14 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
TotalFileSize += FileSize;
- // check for multi file roms
+ /* check for multi file roms */
if ((ptr - Memory.ROM) < (maxsize + 0x200) && (isdigit(ext [0]) && ext [1] == 0 && ext [0] < '9'))
{
more = true;
ext [0]++;
#ifdef __WIN32__
- // memmove required: Overlapping addresses [Neb]
+ /* memmove required: Overlapping addresses [Neb] */
memmove(&ext [1], &ext [0], 4);
ext [0] = '.';
#endif
@@ -525,7 +525,7 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
more = true;
name [len - 1]++;
#ifdef __WIN32__
- // memmove required: Overlapping addresses [Neb]
+ /* memmove required: Overlapping addresses [Neb] */
memmove(&ext [1], &ext [0], 4);
ext [0] = '.';
#endif
@@ -597,10 +597,10 @@ again:
TotalFileSize = FileLoader(Memory.ROM, filename, MAX_ROM_SIZE);
if (!TotalFileSize)
- return false; // it ends here
+ return false; /* it ends here */
CheckForIPSPatch(filename, Memory.HeaderCount != 0, &TotalFileSize);
#endif
- //fix hacked games here.
+ /* fix hacked games here. */
if ((strncmp("HONKAKUHA IGO GOSEI", (char*)&Memory.ROM[0x7FC0], 19) == 0) && (Memory.ROM[0x7FD5] != 0x31))
{
Memory.ROM[0x7FD5] = 0x31;
@@ -608,7 +608,7 @@ again:
}
#ifndef NO_SPEEDHACKS
- // SNESAdvance speed hacks (from the speed-hacks branch of CatSFC)
+ /* SNESAdvance speed hacks (from the speed-hacks branch of CatSFC) */
if (strncmp("YOSHI'S ISLAND", (char *) &Memory.ROM[0x7FC0], 14) == 0)
{
Memory.ROM[0x0000F4] = 0x42;
@@ -674,26 +674,26 @@ again:
}
}
#else
- // memmove required: Overlapping addresses [Neb]
+ /* memmove required: Overlapping addresses [Neb] */
memmove(Memory.ROM, Memory.ROM + 512, TotalFileSize - 512);
#endif
TotalFileSize -= 512;
}
- Memory.CalculatedSize = TotalFileSize & ~0x1FFF; // round down to lower 0x2000
+ Memory.CalculatedSize = TotalFileSize & ~0x1FFF; /* round down to lower 0x2000 */
memset(Memory.ROM + Memory.CalculatedSize, 0, MAX_ROM_SIZE - Memory.CalculatedSize);
if (Memory.CalculatedSize > 0x400000 &&
- !(Memory.ROM[0x7FD5] == 0x32 && ((Memory.ROM[0x7FD6] & 0xF0) == 0x40)) && //exclude S-DD1
- !(Memory.ROM[0xFFD5] == 0x3A && ((Memory.ROM[0xFFD6] & 0xF0) == 0xF0))) //exclude SPC7110
- Memory.ExtendedFormat = YEAH; //you might be a Jumbo!
+ !(Memory.ROM[0x7FD5] == 0x32 && ((Memory.ROM[0x7FD6] & 0xF0) == 0x40)) && /* exclude S-DD1 */
+ !(Memory.ROM[0xFFD5] == 0x3A && ((Memory.ROM[0xFFD6] & 0xF0) == 0xF0))) /* exclude SPC7110 */
+ Memory.ExtendedFormat = YEAH; /* you might be a Jumbo! */
- //If both vectors are invalid, it's type 1 LoROM
+ /* If both vectors are invalid, it's type 1 LoROM */
if(Memory.ExtendedFormat == NOPE && strncmp((char *) &Memory.ROM[0], "BANDAI SFC-ADX", 14) && ((Memory.ROM[0x7ffc] | (Memory.ROM[0x7ffd] << 8)) < 0x8000) && ((Memory.ROM[0xfffc] | (Memory.ROM[0xFffd] << 8)) < 0x8000) && !Settings.ForceInterleaved)
S9xDeinterleaveType1(TotalFileSize, Memory.ROM);
- //CalculatedSize is now set, so rescore
+ /* CalculatedSize is now set, so rescore */
hi_score = ScoreHiROM(false, 0);
lo_score = ScoreLoROM(false, 0);
@@ -705,7 +705,7 @@ again:
swappedlorom = ScoreLoROM(false, 0x400000);
swappedhirom = ScoreHiROM(false, 0x400000);
- //set swapped here.
+ /* set swapped here. */
if (MAX(swappedlorom, swappedhirom) >= MAX(loromscore, hiromscore))
{
Memory.ExtendedFormat = BIGFIRST;
@@ -728,7 +728,7 @@ again:
Memory.LoROM = true;
Memory.HiROM = false;
- // Ignore map type byte if not 0x2x or 0x3x
+ /* Ignore map type byte if not 0x2x or 0x3x */
if ((RomHeader [0x7fd5] & 0xf0) == 0x20 || (RomHeader [0x7fd5] & 0xf0) == 0x30)
{
switch (RomHeader [0x7fd5] & 0xf)
@@ -759,7 +759,7 @@ again:
Memory.HiROM = true;
}
- // More
+ /* More */
if (!Settings.ForceHiROM &&
!Settings.ForceLoROM &&
!Settings.ForceInterleaved &&
@@ -973,11 +973,11 @@ void S9xDeinterleaveType2(bool reset)
ds2_DMA_wait(2);
ds2_DMA_stop(2);
#else
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(tmp, &Memory.ROM [blocks [j] * 0x10000], 0x10000);
- // memmove converted: Different addresses, or identical if blocks[i] == blocks[j] [Neb]
+ /* memmove converted: Different addresses, or identical if blocks[i] == blocks[j] [Neb] */
memcpy(&Memory.ROM [blocks [j] * 0x10000], &Memory.ROM [blocks [i] * 0x10000], 0x10000);
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(&Memory.ROM [blocks [i] * 0x10000], tmp, 0x10000);
#endif
b = blocks [j];
@@ -1055,41 +1055,41 @@ void InitROM(bool Interleaved)
ParseSNESHeader(RomHeader);
- //// Detect and initialize chips - detection codes are compatible with NSRT
+ /* Detect and initialize chips - detection codes are compatible with NSRT */
- // DSP1/2/3/4
+ /* DSP1/2/3/4 */
if (Memory.ROMType == 0x03)
{
if (Memory.ROMSpeed == 0x30)
- Settings.DSP = 4; // DSP4
+ Settings.DSP = 4; /* DSP4 */
else
- Settings.DSP = 1; // DSP1
+ Settings.DSP = 1; /* DSP1 */
}
else if (Memory.ROMType == 0x05)
{
if (Memory.ROMSpeed == 0x20)
- Settings.DSP = 2; // DSP2
+ Settings.DSP = 2; /* DSP2 */
else if (Memory.ROMSpeed == 0x30 && RomHeader[0x2a] == 0xb2)
- Settings.DSP = 3; // DSP3
+ Settings.DSP = 3; /* DSP3 */
else
- Settings.DSP = 1; // DSP1
+ Settings.DSP = 1; /* DSP1 */
}
switch (Settings.DSP)
{
- case 1: // DSP1
+ case 1: /* DSP1 */
SetDSP = &DSP1SetByte;
GetDSP = &DSP1GetByte;
break;
- case 2: // DSP2
+ case 2: /* DSP2 */
SetDSP = &DSP2SetByte;
GetDSP = &DSP2GetByte;
break;
- case 3: // DSP3
- //SetDSP = &DSP3SetByte;
- //GetDSP = &DSP3GetByte;
+ case 3: /* DSP3 */
+ /* SetDSP = &DSP3SetByte; */
+ /* GetDSP = &DSP3GetByte; */
break;
- case 4: // DSP4
+ case 4: /* DSP4 */
SetDSP = &DSP4SetByte;
GetDSP = &DSP4GetByte;
break;
@@ -1104,7 +1104,7 @@ void InitROM(bool Interleaved)
if (Memory.HiROM)
{
- // Enable S-RTC (Real Time Clock) emulation for Dai Kaijyu Monogatari 2
+ /* Enable S-RTC (Real Time Clock) emulation for Dai Kaijyu Monogatari 2 */
Settings.SRTC = ((Memory.ROMType & 0xf0) >> 4) == 5;
if (((Memory.ROMSpeed & 0x0F) == 0x0A) && ((Memory.ROMType & 0xF0) == 0xF0))
@@ -1128,14 +1128,14 @@ void InitROM(bool Interleaved)
if (Memory.ROMType == 0x25)
Settings.OBC1 = true;
- //BS-X BIOS
+ /* BS-X BIOS */
if (Memory.ROMType == 0xE5)
Settings.BS = true;
if ((Memory.ROMType & 0xf0) == 0x10)
Settings.SuperFX = !Settings.ForceNoSuperFX;
- //OBC1 hack ROM
+ /* OBC1 hack ROM */
if (strncmp(Memory.ROMName, "METAL COMBAT", 12) == 0 && Memory.ROMType == 0x13 && Memory.ROMSpeed == 0x42)
{
Settings.OBC1 = true;
@@ -1282,7 +1282,7 @@ void InitROM(bool Interleaved)
Settings.PAL = true;
else
{
- //Korea refers to South Korea, which uses NTSC
+ /* Korea refers to South Korea, which uses NTSC */
switch (Memory.ROMRegion)
{
case 13:
@@ -1399,7 +1399,7 @@ void map_index(uint32_t bank_s, uint32_t bank_e, uint32_t addr_s, uint32_t addr_
void WriteProtectROM(void)
{
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(Memory.WriteMap, Memory.Map, sizeof(Memory.Map));
int32_t c;
for (c = 0; c < 0x1000; c++)
@@ -1413,7 +1413,7 @@ void MapRAM(void)
if (Memory.LoROM && !Settings.SDD1)
{
- // Banks 70->7d and f0->fe 0x0000-0x7FFF, S-RAM
+ /* Banks 70->7d and f0->fe 0x0000-0x7FFF, S-RAM */
for (c = 0; c < 0x0f; c++)
{
for (i = 0; i < 8; i++)
@@ -1425,7 +1425,7 @@ void MapRAM(void)
}
if(Memory.CalculatedSize <= 0x200000)
{
- // Banks 70->7d 0x8000-0xffff S-RAM
+ /* Banks 70->7d 0x8000-0xffff S-RAM */
for (c = 0; c < 0x0e; c++)
{
for(i = 8; i < 16; i++)
@@ -1439,7 +1439,7 @@ void MapRAM(void)
}
else if(Memory.LoROM && Settings.SDD1)
{
- // Banks 70->7d 0x0000-0x7FFF, S-RAM
+ /* Banks 70->7d 0x0000-0x7FFF, S-RAM */
for (c = 0; c < 0x0f; c++)
{
for (i = 0; i < 8; i++)
@@ -1450,7 +1450,7 @@ void MapRAM(void)
}
}
}
- // Banks 7e->7f, RAM
+ /* Banks 7e->7f, RAM */
for (c = 0; c < 16; c++)
{
Memory.Map [c + 0x7e0] = Memory.RAM;
@@ -1467,7 +1467,7 @@ void MapExtraRAM(void)
{
int32_t c;
- // Banks 7e->7f, RAM
+ /* Banks 7e->7f, RAM */
for (c = 0; c < 16; c++)
{
Memory.Map [c + 0x7e0] = Memory.RAM;
@@ -1478,7 +1478,7 @@ void MapExtraRAM(void)
Memory.BlockIsROM [c + 0x7f0] = false;
}
- // Banks 70->73, S-RAM
+ /* Banks 70->73, S-RAM */
for (c = 0; c < 16; c++)
{
Memory.Map [c + 0x700] = Memory.SRAM;
@@ -1502,7 +1502,7 @@ void LoROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -1540,7 +1540,7 @@ void LoROMMap(void)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
@@ -1605,7 +1605,7 @@ void SetaDSPMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -1627,13 +1627,13 @@ void SetaDSPMap(void)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c + 8; i < c + 16; i++)
Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [((c << 11) + 0x200000) % Memory.CalculatedSize] - 0x8000;
- //only upper half is ROM
+ /* only upper half is ROM */
for (i = c + 8; i < c + 16; i++)
Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = true;
}
@@ -1643,7 +1643,7 @@ void SetaDSPMap(void)
{
for (i = 0; i < 0x08; i++)
{
- // Where does the SETA chip access, anyway? Please confirm this.
+ /* Where does the SETA chip access, anyway? Please confirm this. */
Memory.Map[c + 0x80 + i] = (uint8_t*)MAP_SETA_DSP;
Memory.BlockIsROM [c + 0x80 + i] = false;
Memory.BlockIsRAM [c + 0x80 + i] = true;
@@ -1651,7 +1651,7 @@ void SetaDSPMap(void)
for (i = 0; i < 0x04; i++)
{
- //and this!
+ /* and this! */
Memory.Map[c + i] = (uint8_t*)MAP_SETA_DSP;
Memory.BlockIsROM [c + i] = false;
}
@@ -1666,7 +1666,7 @@ void HiROMMap(void)
int32_t i;
int32_t c;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -1688,7 +1688,7 @@ void HiROMMap(void)
}
}
- // Banks 30->3f and b0->bf, address ranges 6000->7fff is S-RAM.
+ /* Banks 30->3f and b0->bf, address ranges 6000->7fff is S-RAM. */
for (c = 0; c < 16; c++)
{
Memory.Map [0x306 + (c << 4)] = MAP_HIROM_SRAM_OR_NONE;
@@ -1701,7 +1701,7 @@ void HiROMMap(void)
Memory.BlockIsRAM [0xb07 + (c << 4)] = true;
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 16; i++)
@@ -1731,10 +1731,10 @@ void TalesROMMap(bool Interleaved)
{
OFFSET0 = 0x000000;
OFFSET1 = 0x000000;
- OFFSET2 = Memory.CalculatedSize - 0x400000; //changed to work with interleaved DKJM2.
+ OFFSET2 = Memory.CalculatedSize - 0x400000; /* changed to work with interleaved DKJM2. */
}
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -1747,8 +1747,8 @@ void TalesROMMap(bool Interleaved)
Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8_t*) MAP_CPU;
Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8_t*) MAP_CPU;
- //makes more sense to map the range here.
- //ToP seems to use sram to skip intro???
+ /* makes more sense to map the range here. */
+ /* ToP seems to use sram to skip intro??? */
if (c >= 0x300)
{
Memory.Map [c + 6] = Memory.Map [c + 0x806] = MAP_HIROM_SRAM_OR_NONE;
@@ -1769,7 +1769,7 @@ void TalesROMMap(bool Interleaved)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
@@ -1810,7 +1810,7 @@ void AlphaROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -1832,7 +1832,7 @@ void AlphaROMMap(void)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
@@ -1865,7 +1865,7 @@ void SuperFXROMMap(void)
DetectSuperFxRamSize();
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -1888,7 +1888,7 @@ void SuperFXROMMap(void)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 16; i++)
@@ -1898,7 +1898,7 @@ void SuperFXROMMap(void)
}
}
- // Banks 7e->7f, RAM
+ /* Banks 7e->7f, RAM */
for (c = 0; c < 16; c++)
{
Memory.Map [c + 0x7e0] = Memory.RAM;
@@ -1909,7 +1909,7 @@ void SuperFXROMMap(void)
Memory.BlockIsROM [c + 0x7f0] = false;
}
- // Banks 70->71, S-RAM
+ /* Banks 70->71, S-RAM */
for (c = 0; c < 32; c++)
{
Memory.Map [c + 0x700] = Memory.SRAM + (((c >> 4) & 1) << 16);
@@ -1917,8 +1917,8 @@ void SuperFXROMMap(void)
Memory.BlockIsROM [c + 0x700] = false;
}
- // Replicate the first 2Mb of the ROM at ROM + 2MB such that each 32K
- // block is repeated twice in each 64K block.
+ /* Replicate the first 2Mb of the ROM at ROM + 2MB such that each 32K
+ block is repeated twice in each 64K block. */
#ifdef DS2_DMA
__dcache_writeback_all();
#endif
@@ -1932,9 +1932,9 @@ void SuperFXROMMap(void)
ds2_DMA_stop(2);
ds2_DMA_stop(3);
#else
- // memmove converted: Different addresses [Neb]
+ /* memmove converted: Different addresses [Neb] */
memcpy(&Memory.ROM [0x200000 + c * 0x10000], &Memory.ROM [c * 0x8000], 0x8000);
- // memmove converted: Different addresses [Neb]
+ /* memmove converted: Different addresses [Neb] */
memcpy(&Memory.ROM [0x208000 + c * 0x10000], &Memory.ROM [c * 0x8000], 0x8000);
#endif
}
@@ -1947,7 +1947,7 @@ void SA1ROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -1968,7 +1968,7 @@ void SA1ROMMap(void)
}
}
- // Banks 40->7f
+ /* Banks 40->7f */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 16; i++)
@@ -1978,7 +1978,7 @@ void SA1ROMMap(void)
Memory.BlockIsROM [i + 0x400] = false;
}
- // c0->ff
+ /* c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 16; i++)
@@ -1999,13 +1999,13 @@ void SA1ROMMap(void)
}
WriteProtectROM();
- // Now copy the map and correct it for the SA1 CPU.
- // memmove converted: Different mallocs [Neb]
+ /* Now copy the map and correct it for the SA1 CPU. */
+ /* memmove converted: Different mallocs [Neb] */
memcpy((void*) SA1.WriteMap, (void*) Memory.WriteMap, sizeof(Memory.WriteMap));
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy((void*) SA1.Map, (void*) Memory.Map, sizeof(Memory.Map));
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
SA1.Map [c + 0] = SA1.Map [c + 0x800] = &Memory.FillRAM [0x3000];
@@ -2014,7 +2014,7 @@ void SA1ROMMap(void)
SA1.WriteMap [c + 1] = SA1.WriteMap [c + 0x801] = (uint8_t*) MAP_NONE;
}
- // Banks 60->6f
+ /* Banks 60->6f */
for (c = 0; c < 0x100; c++)
SA1.Map [c + 0x600] = SA1.WriteMap [c + 0x600] = (uint8_t*) MAP_BWRAM_BITMAP;
@@ -2026,7 +2026,7 @@ void LoROM24MBSMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -2048,7 +2048,7 @@ void LoROM24MBSMap(void)
}
}
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x200; c += 16)
{
Memory.Map [c + 0x800] = Memory.RAM;
@@ -2070,7 +2070,7 @@ void LoROM24MBSMap(void)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
@@ -2092,7 +2092,7 @@ void SufamiTurboLoROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -2113,7 +2113,7 @@ void SufamiTurboLoROMMap(void)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
@@ -2135,7 +2135,7 @@ void SufamiTurboLoROMMap(void)
}
}
- // Banks 7e->7f, RAM
+ /* Banks 7e->7f, RAM */
for (c = 0; c < 16; c++)
{
Memory.Map [c + 0x7e0] = Memory.RAM;
@@ -2146,7 +2146,7 @@ void SufamiTurboLoROMMap(void)
Memory.BlockIsROM [c + 0x7f0] = false;
}
- // Banks 60->67, S-RAM
+ /* Banks 60->67, S-RAM */
for (c = 0; c < 0x80; c++)
{
Memory.Map [c + 0x600] = MAP_LOROM_SRAM_OR_NONE;
@@ -2162,7 +2162,7 @@ void SRAM512KLoROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -2183,7 +2183,7 @@ void SRAM512KLoROMMap(void)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
@@ -2205,7 +2205,7 @@ void SRAM1024KLoROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -2235,7 +2235,7 @@ void CapcomProtectLoROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.Map [c + 0x400] = Memory.Map [c + 0xc00] = Memory.RAM;
@@ -2271,9 +2271,9 @@ void JumboLoROMMap(bool Interleaved)
if (Interleaved)
{
OFFSET0 = 0x000000;
- OFFSET2 = Memory.CalculatedSize - 0x400000; //changed to work with interleaved DKJM2.
+ OFFSET2 = Memory.CalculatedSize - 0x400000; /* changed to work with interleaved DKJM2. */
}
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -2311,7 +2311,7 @@ void JumboLoROMMap(bool Interleaved)
if (Settings.DSP1Master)
{
- // Banks 30->3f and b0->bf
+ /* Banks 30->3f and b0->bf */
for (c = 0x300; c < 0x400; c += 16)
{
for (i = c + 8; i < c + 16; i++)
@@ -2322,10 +2322,10 @@ void JumboLoROMMap(bool Interleaved)
}
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0x400; c < 0x800; c += 16)
{
- //updated mappings to correct A15 mirroring
+ /* updated mappings to correct A15 mirroring */
for (i = c; i < c + 8; i++)
{
Memory.Map [i] = &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) + OFFSET0];
@@ -2342,11 +2342,11 @@ void JumboLoROMMap(bool Interleaved)
Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = true;
}
- //ROM type has to be 64 Mbit header!
+ /* ROM type has to be 64 Mbit header! */
int32_t sum = 0, k, l;
for (k = 0; k < 256; k++)
{
- uint8_t* bank = 0x8000 + Memory.Map[8 + (k << 4)]; //use upper half of the banks, and adjust for LoROM.
+ uint8_t* bank = 0x8000 + Memory.Map[8 + (k << 4)]; /* use upper half of the banks, and adjust for LoROM. */
for (l = 0; l < 0x8000; l++)
sum += bank[l];
}
@@ -2360,7 +2360,7 @@ void SPC7110HiROMMap(void)
int32_t c;
int32_t i;
- // Banks 00->3f and 80->bf
+ /* Banks 00->3f and 80->bf */
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 0] = Memory.Map [c + 0x800] = Memory.RAM;
@@ -2384,7 +2384,7 @@ void SPC7110HiROMMap(void)
}
}
- // Banks 30->3f and b0->bf, address ranges 6000->7fff is S-RAM.
+ /* Banks 30->3f and b0->bf, address ranges 6000->7fff is S-RAM. */
for (c = 0; c < 16; c++)
{
Memory.Map [0x306 + (c << 4)] = MAP_HIROM_SRAM_OR_NONE;
@@ -2395,7 +2395,7 @@ void SPC7110HiROMMap(void)
Memory.BlockIsRAM [0x307 + (c << 4)] = true;
}
- // Banks 40->7f and c0->ff
+ /* Banks 40->7f and c0->ff */
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 16; i++)
@@ -2564,16 +2564,16 @@ void ApplyROMFixes(void)
{
/*
HACKS NSRT can fix that we hadn't detected before.
- [14:25:13] <@Nach> case 0x0c572ef0: //So called Hook (US)(2648)
- [14:25:13] <@Nach> case 0x6810aa95: //Bazooka Blitzkreig swapped sizes hack -handled
- [14:25:17] <@Nach> case 0x61E29C06: //The Tick region hack
- [14:25:19] <@Nach> case 0x1EF90F74: //Jikkyou Keiba Simulation Stable Star PAL hack
- [14:25:23] <@Nach> case 0x4ab225b5: //So called Krusty's Super Fun House (E)
- [14:25:25] <@Nach> case 0x77fd806a: //Donkey Kong Country 2 (E) v1.1 bad dump -handled
- [14:25:27] <@Nach> case 0x340f23e5: //Donkey Kong Country 3 (U) copier hack - handled
+ [14:25:13] <@Nach> case 0x0c572ef0: So called Hook (US)(2648)
+ [14:25:13] <@Nach> case 0x6810aa95: Bazooka Blitzkreig swapped sizes hack -handled
+ [14:25:17] <@Nach> case 0x61E29C06: The Tick region hack
+ [14:25:19] <@Nach> case 0x1EF90F74: Jikkyou Keiba Simulation Stable Star PAL hack
+ [14:25:23] <@Nach> case 0x4ab225b5: So called Krusty's Super Fun House (E)
+ [14:25:25] <@Nach> case 0x77fd806a: Donkey Kong Country 2 (E) v1.1 bad dump -handled
+ [14:25:27] <@Nach> case 0x340f23e5: Donkey Kong Country 3 (U) copier hack - handled
*/
- //not MAD-1 compliant
+ /* not MAD-1 compliant */
if (match_na("WANDERERS FROM YS"))
{
int32_t c;
@@ -2593,14 +2593,14 @@ void ApplyROMFixes(void)
Memory.BlockIsROM [0x005] = false;
}
- //NMI hacks
+ /* NMI hacks */
CPU.NMITriggerPoint = 4;
if (match_na("CACOMA KNIGHT"))
CPU.NMITriggerPoint = 25;
- //Disabling a speed-up
- // Games which spool sound samples between the SNES and sound CPU using
- // H-DMA as the sample is playing.
+ /* Disabling a speed-up:
+ Games which spool sound samples between the SNES and sound CPU using
+ H-DMA as the sample is playing. */
if (match_na("EARTHWORM JIM 2") ||
match_na("PRIMAL RAGE") ||
match_na("CLAY FIGHTER") ||
@@ -2611,43 +2611,43 @@ void ApplyROMFixes(void)
strncmp(Memory.ROMName, "WAR 2410", 8) == 0)
Settings.Shutdown = false;
- //APU timing hacks
+ /* APU timing hacks */
#ifndef USE_BLARGG_APU
- // Stunt Racer FX
+ /* Stunt Racer FX */
if (match_id("CQ ") ||
- // Illusion of Gaia
+ /* Illusion of Gaia */
strncmp(Memory.ROMId, "JG", 2) == 0 ||
match_na("GAIA GENSOUKI 1 JPN"))
IAPU.OneCycle = 13;
else if (strcmp (Memory.ROMName, "UMIHARAKAWASE") == 0)
IAPU.OneCycle = 20;
- // RENDERING RANGER R2
+ /* RENDERING RANGER R2 */
else if (match_id("AVCJ") ||
- //Mark Davis
- strncmp(Memory.ROMName, "THE FISHING MASTER", 18) == 0 || //needs >= actual APU timing. (21 is .002 Mhz slower)
- // Star Ocean
+ /* Mark Davis */
+ strncmp(Memory.ROMName, "THE FISHING MASTER", 18) == 0 || /* needs >= actual APU timing. (21 is .002 Mhz slower) */
+ /* Star Ocean */
strncmp(Memory.ROMId, "ARF", 3) == 0 ||
- // Tales of Phantasia
+ /* Tales of Phantasia */
strncmp(Memory.ROMId, "ATV", 3) == 0 ||
- // Act Raiser 1 & 2
+ /* Act Raiser 1 & 2 */
strncasecmp(Memory.ROMName, "ActRaiser", 9) == 0 ||
- // Soulblazer
+ /* Soulblazer */
match_na("SOULBLAZER - 1 USA") ||
match_na("SOULBLADER - 1") ||
- // Terranigma
+ /* Terranigma */
strncmp(Memory.ROMId, "AQT", 3) == 0 ||
- // Robotrek
+ /* Robotrek */
strncmp(Memory.ROMId, "E9 ", 3) == 0 ||
match_na("SLAP STICK 1 JPN") ||
- // ZENNIHON PURORESU2
+ /* ZENNIHON PURORESU2 */
strncmp(Memory.ROMId, "APR", 3) == 0 ||
- // Bomberman 4
+ /* Bomberman 4 */
strncmp(Memory.ROMId, "A4B", 3) == 0 ||
- // UFO KAMEN YAKISOBAN
+ /* UFO KAMEN YAKISOBAN */
strncmp(Memory.ROMId, "Y7 ", 3) == 0 ||
strncmp(Memory.ROMId, "Y9 ", 3) == 0 ||
- // Panic Bomber World
+ /* Panic Bomber World */
strncmp(Memory.ROMId, "APB", 3) == 0 ||
((strncmp(Memory.ROMName, "Parlor", 6) == 0 ||
match_na("HEIWA Parlor!Mini8") ||
@@ -2656,52 +2656,52 @@ void ApplyROMFixes(void)
match_na("DARK KINGDOM") ||
match_na("ZAN3 SFC") ||
match_na("HIOUDEN") ||
- match_na("\xC3\xDD\xBC\xC9\xB3\xC0") || //Tenshi no Uta
+ match_na("\xC3\xDD\xBC\xC9\xB3\xC0") || /* Tenshi no Uta */
match_na("FORTUNE QUEST") ||
match_na("FISHING TO BASSING") ||
strncmp(Memory.ROMName, "TokyoDome '95Battle 7", 21) == 0 ||
match_na("OHMONO BLACKBASS") ||
strncmp(Memory.ROMName, "SWORD WORLD SFC", 15) == 0 ||
- match_na("MASTERS") || //Augusta 2 J
- match_na("SFC \xB6\xD2\xDD\xD7\xB2\xC0\xDE\xB0") || //Kamen Rider
- strncmp(Memory.ROMName, "LETs PACHINKO(", 14) == 0) //A set of BS games
+ match_na("MASTERS") || /* Augusta 2 J */
+ match_na("SFC \xB6\xD2\xDD\xD7\xB2\xC0\xDE\xB0") || /* Kamen Rider */
+ strncmp(Memory.ROMName, "LETs PACHINKO(", 14) == 0) /* A set of BS games */
IAPU.OneCycle = 15;
#endif
- //Specific game fixes
+ /* Specific game fixes */
Settings.StarfoxHack = match_na("STAR FOX") || match_na("STAR WING");
Settings.WinterGold = match_na("FX SKIING NINTENDO 96") || match_na("DIRT RACER") || Settings.StarfoxHack;
Settings.HBlankStart = (256 * Settings.H_Max) / SNES_HCOUNTER_MAX;
- //CPU timing hacks
+ /* CPU timing hacks */
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * Settings.CyclesPercentage) / 100;
- // A Couple of HDMA related hacks - Lantus
+ /* A Couple of HDMA related hacks - Lantus */
if ((match_na("SFX SUPERBUTOUDEN2")) || (match_na("ALIEN vs. PREDATOR")) || (match_na("STONE PROTECTORS")) || (match_na("SUPER BATTLETANK 2")))
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 130) / 100;
else if (match_na("HOME IMPROVEMENT"))
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 200) / 100;
else if (match_id("ASRJ") && Settings.CyclesPercentage == 100)
- // Street Racer
+ /* Street Racer */
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 95) / 100;
- // Power Rangers Fight
+ /* Power Rangers Fight */
else if (strncmp(Memory.ROMId, "A3R", 3) == 0 ||
- // Clock Tower
+ /* Clock Tower */
strncmp(Memory.ROMId, "AJE", 3) == 0)
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 103) / 100;
else if (strncmp(Memory.ROMId, "A3M", 3) == 0 && Settings.CyclesPercentage == 100)
- // Mortal Kombat 3. Fixes cut off speech sample
+ /* Mortal Kombat 3. Fixes cut off speech sample */
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 110) / 100;
else if (match_na("\x0bd\x0da\x0b2\x0d4\x0b0\x0bd\x0de") &&
Settings.CyclesPercentage == 100)
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 101) / 100;
else if (match_na("WILD TRAX") || match_na("STAR FOX 2") || match_na("YOSSY'S ISLAND") || match_na("YOSHI'S ISLAND"))
CPU.TriedInterleavedMode2 = true;
- // Start Trek: Deep Sleep 9
+ /* Start Trek: Deep Sleep 9 */
else if (strncmp(Memory.ROMId, "A9D", 3) == 0 && Settings.CyclesPercentage == 100)
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 110) / 100;
- //SA-1 Speedup settings
+ /* SA-1 Speedup settings */
SA1.WaitAddress = NULL;
SA1.WaitByteAddress1 = NULL;
SA1.WaitByteAddress2 = NULL;
@@ -2876,10 +2876,10 @@ void ApplyROMFixes(void)
SA1.WaitAddress = SA1.Map [0x00F669 >> MEMMAP_SHIFT] + 0xF669;
}
- //Other
+ /* Other */
- // Additional game fixes by sanmaiwashi ...
- // Gundam Knight Story
+ /* Additional game fixes by sanmaiwashi ... */
+ /* Gundam Knight Story */
if (match_na("SFX \xC5\xB2\xC4\xB6\xDE\xDD\xC0\xDE\xD1\xD3\xC9\xB6\xDE\xC0\xD8 1"))
{
bytes0x2000 [0xb18] = 0x4c;
@@ -2891,38 +2891,37 @@ void ApplyROMFixes(void)
match_na("F-ZERO") &&
Memory.ROMChecksum == 0xb10d &&
Memory.ROMComplementChecksum == 0x4ef2)
- Memory.ROM[0x7fd0] = 0xFF; // fix memory pack position bits
+ Memory.ROM[0x7fd0] = 0xFF; /* fix memory pack position bits */
}
-// 7FC0h or FFC0h
-//
-// FFC0h - FFCFh: CartName
-// FFD0h : Memory pack location
-// FFD1h - FFD5 : 00:00:00:00:00 (??)
-// FFD6h : Month 10h, 20h, 30h...
-// FFD7h : Day This byte / 8 low 3bits is unknown.
-// FFD8h : ROMSpeed
-// FFD9h : Satellaview ROM Type
-// FFDAh : Maker ID
-// FFDBh : ROM Version
-
-static bool is_bsx(uint8_t *p) // p == "0xFFC0" or "0x7FC0" ROM offset pointer
+/* 7FC0h or FFC0h */
+/* FFC0h - FFCFh: CartName */
+/* FFD0h : Memory pack location */
+/* FFD1h - FFD5 : 00:00:00:00:00 (??) */
+/* FFD6h : Month 10h, 20h, 30h... */
+/* FFD7h : Day This byte / 8 low 3bits is unknown. */
+/* FFD8h : ROMSpeed */
+/* FFD9h : Satellaview ROM Type */
+/* FFDAh : Maker ID */
+/* FFDBh : ROM Version */
+
+static bool is_bsx(uint8_t *p) /* p == "0xFFC0" or "0x7FC0" ROM offset pointer */
{
uint32_t c;
int32_t i;
bool b = false;
bool bb = false;
- // Satellaview ROM Type
+ /* Satellaview ROM Type */
if (p[0x19] & 0x4f)
return false;
- // Maker ID
+ /* Maker ID */
c = p[0x1a];
- if ((c != 0x33) && (c != 0xff)) // 0x33 = Manufacturer: Nintendo
+ if ((c != 0x33) && (c != 0xff)) /* 0x33 = Manufacturer: Nintendo */
return false;
- // Month, Day
+ /* Month, Day */
c = (p[0x17] << 8) | p[0x16];
if ((c != 0x0000) && (c != 0xffff))
{
@@ -2932,12 +2931,12 @@ static bool is_bsx(uint8_t *p) // p == "0xFFC0" or "0x7FC0" ROM offset pointer
return false;
}
- // ROMSpeed
+ /* ROMSpeed */
c = p[0x18];
if ((c & 0xce) || ((c & 0x30) == 0))
return false;
- // Memory pack location
+ /* Memory pack location */
if(p[0x10] == 0)
return false;
@@ -2969,7 +2968,7 @@ static bool bs_name(uint8_t* p)
int32_t lcount;
for(lcount = 16; lcount > 0; lcount--)
{
- //null strings
+ /* null strings */
if(*p == 0)
{
if(lcount != 16)
@@ -2977,10 +2976,10 @@ static bool bs_name(uint8_t* p)
else
return false;
}
- //SJIS single byte char
+ /* SJIS single byte char */
else if((*p >= 0x20 && *p <= 0x7f) || (*p >= 0xa0 && *p <= 0xdf))
p++;
- //SJIS multi byte char
+ /* SJIS multi byte char */
else if(lcount >= 2)
{
if(((*p >= 0x81 && *p <= 0x9f) || (*p >= 0xe0 && *p <= 0xfc)) && ((*(p + 1) >= 0x40 && *(p + 1) <= 0x7e) || (*(p + 1) >= 0x80 && *(p + 1) <= 0xfc)))
@@ -3023,10 +3022,10 @@ void ParseSNESHeader(uint8_t* RomHeader)
Memory.ROMChecksum = RomHeader [0x2e] + (RomHeader [0x2f] << 8);
Memory.ROMComplementChecksum = RomHeader [0x2c] + (RomHeader [0x2d] << 8);
Memory.ROMRegion = RomHeader[0x29];
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(Memory.ROMId, &RomHeader [0x2], 4);
if (RomHeader[0x2A] == 0x33)
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(Memory.CompanyId, &RomHeader [0], 2);
else
sprintf(Memory.CompanyId, "%02X", RomHeader[0x2A]);
diff --git a/source/ppu.c b/source/ppu.c
index 4ef83ad..07d32f4 100644
--- a/source/ppu.c
+++ b/source/ppu.c
@@ -47,7 +47,7 @@ void S9xUpdateHTimer()
{
if (PPU.HTimerPosition < CPU.Cycles)
{
- // Missed the IRQ on this line already
+ /* Missed the IRQ on this line already */
if (CPU.WhichEvent == HBLANK_END_EVENT || CPU.WhichEvent == HTIMER_AFTER_EVENT)
{
CPU.WhichEvent = HBLANK_END_EVENT;
@@ -65,7 +65,7 @@ void S9xUpdateHTimer()
{
if (PPU.HTimerPosition > Settings.HBlankStart)
{
- // HTimer was to trigger before h-blank start, now triggers after start of h-blank
+ /* HTimer was to trigger before h-blank start, now triggers after start of h-blank */
CPU.NextEvent = Settings.HBlankStart;
CPU.WhichEvent = HBLANK_START_EVENT;
}
@@ -113,7 +113,7 @@ static void S9xSetSuperFX(uint8_t Byte, uint16_t Address)
if ((old_fill_ram ^ Byte) & FLG_G)
{
Memory.FillRAM [Address] = Byte;
- if (Byte & FLG_G) // Go flag has been changed
+ if (Byte & FLG_G) /* Go flag has been changed */
S9xSuperFXExec();
else
FxFlushCache();
@@ -148,7 +148,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
{
switch (Address)
{
- case 0x2100: // Brightness and screen blank bit
+ case 0x2100: /* Brightness and screen blank bit */
if (Byte != Memory.FillRAM [0x2100])
{
FLUSH_REDRAW();
@@ -166,7 +166,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
}
}
break;
- case 0x2101: // Sprite (OBJ) tile address
+ case 0x2101: /* Sprite (OBJ) tile address */
if (Byte != Memory.FillRAM [0x2101])
{
FLUSH_REDRAW();
@@ -176,7 +176,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
IPPU.OBJChanged = true;
}
break;
- case 0x2102: // Sprite write address (low)
+ case 0x2102: /* Sprite write address (low) */
PPU.OAMAddr = ((Memory.FillRAM[0x2103] & 1) << 8) | Byte;
PPU.OAMFlip = 2;
PPU.SavedOAMAddr = PPU.OAMAddr;
@@ -186,7 +186,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
IPPU.OBJChanged = true;
}
break;
- case 0x2103: // Sprite register write address (high), sprite priority rotation bit.
+ case 0x2103: /* Sprite register write address (high), sprite priority rotation bit. */
PPU.OAMAddr = ((Byte & 1) << 8) | Memory.FillRAM[0x2102];
PPU.OAMPriorityRotation = (Byte & 0x80) ? 1 : 0;
@@ -209,10 +209,10 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.OAMFlip = 0;
PPU.SavedOAMAddr = PPU.OAMAddr;
break;
- case 0x2104: // Sprite register write
+ case 0x2104: /* Sprite register write */
REGISTER_2104(Byte);
break;
- case 0x2105: // Screen mode (0 - 7), background tile sizes and background 3 priority
+ case 0x2105: /* Screen mode (0 - 7), background tile sizes and background 3 priority */
if (Byte != Memory.FillRAM [0x2105])
{
FLUSH_REDRAW();
@@ -221,13 +221,13 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.BG[2].BGSize = (Byte >> 6) & 1;
PPU.BG[3].BGSize = (Byte >> 7) & 1;
PPU.BGMode = Byte & 7;
- // BJ: BG3Priority only takes effect if BGMode==1 and the bit is set
+ /* BJ: BG3Priority only takes effect if BGMode==1 and the bit is set */
PPU.BG3Priority = ((Byte & 0x0f) == 0x09);
if (PPU.BGMode == 5 || PPU.BGMode == 6)
IPPU.Interlace = (bool) (Memory.FillRAM[0x2133] & 1);
}
break;
- case 0x2106: // Mosaic pixel size and enable
+ case 0x2106: /* Mosaic pixel size and enable */
if (Byte != Memory.FillRAM [0x2106])
{
FLUSH_REDRAW();
@@ -238,10 +238,10 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.BGMosaic [3] = (Byte & 8) && PPU.Mosaic > 1;
}
break;
- case 0x2107: // [BG0SC]
- case 0x2108: // [BG1SC]
- case 0x2109: // [BG2SC]
- case 0x210A: // [BG3SC]
+ case 0x2107: /* [BG0SC] */
+ case 0x2108: /* [BG1SC] */
+ case 0x2109: /* [BG2SC] */
+ case 0x210A: /* [BG3SC] */
if (Byte != Memory.FillRAM [Address])
{
FLUSH_REDRAW();
@@ -249,7 +249,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.BG[Address - 0x2107].SCBase = (Byte & 0x7c) << 8;
}
break;
- case 0x210B: // [BG01NBA]
+ case 0x210B: /* [BG01NBA] */
if (Byte != Memory.FillRAM [0x210b])
{
FLUSH_REDRAW();
@@ -257,7 +257,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.BG[1].NameBase = ((Byte >> 4) & 7) << 12;
}
break;
- case 0x210C: // [BG23NBA]
+ case 0x210C: /* [BG23NBA] */
if (Byte != Memory.FillRAM [0x210c])
{
FLUSH_REDRAW();
@@ -297,7 +297,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.BG[3].VOffset = (Byte << 8) | PPU.BGnxOFSbyte;
PPU.BGnxOFSbyte = Byte;
break;
- case 0x2115: // VRAM byte/word access flag and increment
+ case 0x2115: /* VRAM byte/word access flag and increment */
PPU.VMA.High = (bool) (Byte & 0x80);
switch (Byte & 3)
{
@@ -324,26 +324,25 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
else
PPU.VMA.FullGraphicCount = 0;
break;
- case 0x2116: // VRAM read/write address (low)
+ case 0x2116: /* VRAM read/write address (low) */
PPU.VMA.Address &= 0xFF00;
PPU.VMA.Address |= Byte;
IPPU.FirstVRAMRead = true;
break;
- case 0x2117: // VRAM read/write address (high)
+ case 0x2117: /* VRAM read/write address (high) */
PPU.VMA.Address &= 0x00FF;
PPU.VMA.Address |= Byte << 8;
IPPU.FirstVRAMRead = true;
break;
- case 0x2118:
- // VRAM write data (low)
+ case 0x2118: /* VRAM write data (low) */
IPPU.FirstVRAMRead = true;
REGISTER_2118(Byte);
break;
- case 0x2119: // VRAM write data (high)
+ case 0x2119: /* VRAM write data (high) */
IPPU.FirstVRAMRead = true;
REGISTER_2119(Byte);
break;
- case 0x211a: // Mode 7 outside rotation area display mode and flipping
+ case 0x211a: /* Mode 7 outside rotation area display mode and flipping */
if (Byte != Memory.FillRAM [0x211a])
{
FLUSH_REDRAW();
@@ -354,27 +353,27 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.Mode7HFlip = (bool) (Byte & 1);
}
break;
- case 0x211b: // Mode 7 matrix A (low & high)
+ case 0x211b: /* Mode 7 matrix A (low & high) */
PPU.MatrixA = ((PPU.MatrixA >> 8) & 0xff) | (Byte << 8);
PPU.Need16x8Multiply = true;
break;
- case 0x211c: // Mode 7 matrix B (low & high)
+ case 0x211c: /* Mode 7 matrix B (low & high) */
PPU.MatrixB = ((PPU.MatrixB >> 8) & 0xff) | (Byte << 8);
PPU.Need16x8Multiply = true;
break;
- case 0x211d: // Mode 7 matrix C (low & high)
+ case 0x211d: /* Mode 7 matrix C (low & high) */
PPU.MatrixC = ((PPU.MatrixC >> 8) & 0xff) | (Byte << 8);
break;
- case 0x211e: // Mode 7 matrix D (low & high)
+ case 0x211e: /* Mode 7 matrix D (low & high) */
PPU.MatrixD = ((PPU.MatrixD >> 8) & 0xff) | (Byte << 8);
break;
- case 0x211f: // Mode 7 centre of rotation X (low & high)
+ case 0x211f: /* Mode 7 centre of rotation X (low & high) */
PPU.CentreX = ((PPU.CentreX >> 8) & 0xff) | (Byte << 8);
break;
- case 0x2120: // Mode 7 centre of rotation Y (low & high)
+ case 0x2120: /* Mode 7 centre of rotation Y (low & high) */
PPU.CentreY = ((PPU.CentreY >> 8) & 0xff) | (Byte << 8);
break;
- case 0x2121: // CG-RAM address
+ case 0x2121: /* CG-RAM address */
PPU.CGFLIP = false;
PPU.CGFLIPRead = false;
PPU.CGADD = Byte;
@@ -382,7 +381,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
case 0x2122:
REGISTER_2122(Byte);
break;
- case 0x2123: // Window 1 and 2 enable for backgrounds 1 and 2
+ case 0x2123: /* Window 1 and 2 enable for backgrounds 1 and 2 */
if (Byte != Memory.FillRAM [0x2123])
{
FLUSH_REDRAW();
@@ -397,7 +396,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x2124: // Window 1 and 2 enable for backgrounds 3 and 4
+ case 0x2124: /* Window 1 and 2 enable for backgrounds 3 and 4 */
if (Byte != Memory.FillRAM [0x2124])
{
FLUSH_REDRAW();
@@ -412,7 +411,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x2125: // Window 1 and 2 enable for objects and colour window
+ case 0x2125: /* Window 1 and 2 enable for objects and colour window */
if (Byte != Memory.FillRAM [0x2125])
{
FLUSH_REDRAW();
@@ -427,7 +426,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x2126: // Window 1 left position
+ case 0x2126: /* Window 1 left position */
if (Byte != Memory.FillRAM [0x2126])
{
FLUSH_REDRAW();
@@ -435,7 +434,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x2127: // Window 1 right position
+ case 0x2127: /* Window 1 right position */
if (Byte != Memory.FillRAM [0x2127])
{
FLUSH_REDRAW();
@@ -443,7 +442,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x2128: // Window 2 left position
+ case 0x2128: /* Window 2 left position */
if (Byte != Memory.FillRAM [0x2128])
{
FLUSH_REDRAW();
@@ -451,7 +450,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x2129: // Window 2 right position
+ case 0x2129: /* Window 2 right position */
if (Byte != Memory.FillRAM [0x2129])
{
FLUSH_REDRAW();
@@ -459,7 +458,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x212a: // Windows 1 & 2 overlap logic for backgrounds 1 - 4
+ case 0x212a: /* Windows 1 & 2 overlap logic for backgrounds 1 - 4 */
if (Byte != Memory.FillRAM [0x212a])
{
FLUSH_REDRAW();
@@ -470,7 +469,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x212b: // Windows 1 & 2 overlap logic for objects and colour window
+ case 0x212b: /* Windows 1 & 2 overlap logic for objects and colour window */
if (Byte != Memory.FillRAM [0x212b])
{
FLUSH_REDRAW();
@@ -479,7 +478,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.RecomputeClipWindows = true;
}
break;
- case 0x212c: // Main screen designation (backgrounds 1 - 4 and objects)
+ case 0x212c: /* Main screen designation (backgrounds 1 - 4 and objects) */
if (Byte != Memory.FillRAM [0x212c])
{
FLUSH_REDRAW();
@@ -488,7 +487,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
return;
}
break;
- case 0x212d: // Sub-screen designation (backgrounds 1 - 4 and objects)
+ case 0x212d: /* Sub-screen designation (backgrounds 1 - 4 and objects) */
if (Byte != Memory.FillRAM [0x212d])
{
FLUSH_REDRAW();
@@ -497,20 +496,20 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
return;
}
break;
- case 0x212e: // Window mask designation for main screen ?
- case 0x212f: // Window mask designation for sub-screen ?
- case 0x2130: // Fixed colour addition or screen addition
+ case 0x212e: /* Window mask designation for main screen ? */
+ case 0x212f: /* Window mask designation for sub-screen ? */
+ case 0x2130: /* Fixed colour addition or screen addition */
if (Byte != Memory.FillRAM [Address])
{
FLUSH_REDRAW();
PPU.RecomputeClipWindows = true;
}
break;
- case 0x2131: // Colour addition or subtraction select
+ case 0x2131: /* Colour addition or subtraction select */
if (Byte != Memory.FillRAM[0x2131])
{
FLUSH_REDRAW();
- // Backgrounds 1 - 4, objects and backdrop colour add/sub enable
+ /* Backgrounds 1 - 4, objects and backdrop colour add/sub enable */
Memory.FillRAM[0x2131] = Byte;
}
break;
@@ -518,7 +517,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
if (Byte != Memory.FillRAM [0x2132])
{
FLUSH_REDRAW();
- // Colour data for fixed colour addition/subtraction
+ /* Colour data for fixed colour addition/subtraction */
if (Byte & 0x80)
PPU.FixedColourBlue = Byte & 0x1f;
if (Byte & 0x40)
@@ -527,7 +526,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
PPU.FixedColourRed = Byte & 0x1f;
}
break;
- case 0x2133: // Screen settings
+ case 0x2133: /* Screen settings */
if (Byte != Memory.FillRAM [0x2133])
{
if (Byte & 0x04)
@@ -553,16 +552,16 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
break;
case 0x2134:
case 0x2135:
- case 0x2136: // Matrix 16bit x 8bit multiply result (read-only)
- case 0x2137: // Software latch for horizontal and vertical timers (read-only)
- case 0x2138: // OAM read data (read-only)
+ case 0x2136: /* Matrix 16bit x 8bit multiply result (read-only) */
+ case 0x2137: /* Software latch for horizontal and vertical timers (read-only) */
+ case 0x2138: /* OAM read data (read-only) */
case 0x2139:
- case 0x213a: // VRAM read data (read-only)
- case 0x213b: // CG-RAM read data (read-only)
+ case 0x213a: /* VRAM read data (read-only) */
+ case 0x213b: /* CG-RAM read data (read-only) */
case 0x213c:
- case 0x213d: // Horizontal and vertical (low/high) read counter (read-only)
- case 0x213e: // PPU status (time over and range over)
- case 0x213f: // NTSC/PAL select and field (read-only)
+ case 0x213d: /* Horizontal and vertical (low/high) read counter (read-only) */
+ case 0x213e: /* PPU status (time over and range over) */
+ case 0x213f: /* NTSC/PAL select and field (read-only) */
return;
case 0x2140:
case 0x2141:
@@ -635,7 +634,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
IAPU.WaitCounter++;
#else
S9xAPUWritePort(Address & 3, Byte);
-#endif // #ifndef USE_BLARGG_APU
+#endif /* #ifndef USE_BLARGG_APU */
break;
case 0x2180:
REGISTER_2180(Byte);
@@ -665,7 +664,7 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
Memory.FillRAM [Address] = Byte;
return;
}
- else if (Address == 0x2801 && Settings.SRTC) // Dai Kaijyu Monogatari II
+ else if (Address == 0x2801 && Settings.SRTC) /* Dai Kaijyu Monogatari II */
S9xSetSRTC(Byte, Address);
else if (Address >= 0x3000 && Address < 0x3300)
{
@@ -683,8 +682,8 @@ void S9xSetPPU(uint8_t Byte, uint16_t Address)
uint8_t S9xGetPPU(uint16_t Address)
{
uint8_t byte;
- if (Address < 0x2100) //not a real PPU reg
- return OpenBus; //treat as unmapped memory returning last byte on the bus
+ if (Address < 0x2100) /* not a real PPU reg */
+ return OpenBus; /* treat as unmapped memory returning last byte on the bus */
if (Address <= 0x2190)
{
switch (Address)
@@ -710,7 +709,7 @@ uint8_t S9xGetPPU(uint16_t Address)
return PPU.OpenBus1;
case 0x2134:
case 0x2135:
- case 0x2136: // 16bit x 8bit multiply read result.
+ case 0x2136: /* 16bit x 8bit multiply read result. */
if (PPU.Need16x8Multiply)
{
int32_t r = (int32_t) PPU.MatrixA * (int32_t)(PPU.MatrixB >> 8);
@@ -723,7 +722,7 @@ uint8_t S9xGetPPU(uint16_t Address)
case 0x2137:
S9xLatchCounters(0);
return OpenBus;
- case 0x2138: // Read OAM (sprite) control data
+ case 0x2138: /* Read OAM (sprite) control data */
if (PPU.OAMAddr & 0x100)
{
if (!(PPU.OAMFlip & 1))
@@ -756,7 +755,7 @@ uint8_t S9xGetPPU(uint16_t Address)
}
PPU.OAMFlip ^= 1;
return (PPU.OpenBus1 = byte);
- case 0x2139: // Read vram low byte
+ case 0x2139: /* Read vram low byte */
if (IPPU.FirstVRAMRead)
byte = Memory.VRAM[(PPU.VMA.Address << 1) & 0xffff];
else if (PPU.VMA.FullGraphicCount)
@@ -775,7 +774,7 @@ uint8_t S9xGetPPU(uint16_t Address)
IPPU.FirstVRAMRead = false;
}
return (PPU.OpenBus1 = byte);
- case 0x213A: // Read vram high byte
+ case 0x213A: /* Read vram high byte */
if (IPPU.FirstVRAMRead)
byte = Memory.VRAM[((PPU.VMA.Address << 1) + 1) & 0xffff];
else if (PPU.VMA.FullGraphicCount)
@@ -793,7 +792,7 @@ uint8_t S9xGetPPU(uint16_t Address)
IPPU.FirstVRAMRead = false;
}
return (PPU.OpenBus1 = byte);
- case 0x213B: // Read palette data
+ case 0x213B: /* Read palette data */
if (PPU.CGFLIPRead)
byte = (PPU.OpenBus2 & 0x80) | ((PPU.CGDATA[PPU.CGADD++] >> 8) & 0x7f);
else
@@ -801,25 +800,25 @@ uint8_t S9xGetPPU(uint16_t Address)
PPU.CGFLIPRead = !PPU.CGFLIPRead;
return (PPU.OpenBus2 = byte);
- case 0x213C: // Horizontal counter value 0-339
+ case 0x213C: /* Horizontal counter value 0-339 */
if (PPU.HBeamFlip)
byte = (PPU.OpenBus2 & 0xfe) | ((PPU.HBeamPosLatched >> 8) & 0x01);
else
byte = (uint8_t)PPU.HBeamPosLatched;
PPU.HBeamFlip ^= 1;
return (PPU.OpenBus2 = byte);
- case 0x213D: // Vertical counter value 0-262
+ case 0x213D: /* Vertical counter value 0-262 */
if (PPU.VBeamFlip)
byte = (PPU.OpenBus2 & 0xfe) | ((PPU.VBeamPosLatched >> 8) & 0x01);
else
byte = (uint8_t)PPU.VBeamPosLatched;
PPU.VBeamFlip ^= 1;
return (PPU.OpenBus2 = byte);
- case 0x213E: // PPU time and range over flags
+ case 0x213E: /* PPU time and range over flags */
FLUSH_REDRAW();
byte = (PPU.OpenBus1 & 0x10) | PPU.RangeTimeOver | Model->_5C77;
return (PPU.OpenBus1 = byte);
- case 0x213F: // NTSC/PAL and which field flags
+ case 0x213F: /* NTSC/PAL and which field flags */
PPU.VBeamFlip = PPU.HBeamFlip = 0;
byte = (PPU.OpenBus2 & 0x20) | (Memory.FillRAM[0x213f] & 0xc0) | (Settings.PAL ? 0x10 : 0) | Model->_5C78;
Memory.FillRAM[0x213f] &= ~0x40;
@@ -917,8 +916,8 @@ uint8_t S9xGetPPU(uint16_t Address)
return Memory.FillRAM[Address];
#else
return S9xAPUReadPort(Address & 3);
-#endif //#ifndef USE_BLARGG_APU
- case 0x2180: // Read WRAM
+#endif /* #ifndef USE_BLARGG_APU */
+ case 0x2180: /* Read WRAM */
byte = Memory.RAM [PPU.WRAM++];
PPU.WRAM &= 0x1FFFF;
return byte;
@@ -980,7 +979,7 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
CPU.Cycles += ONE_CYCLE;
switch (Address)
{
- case 0x4016: // S9xReset reading of old-style joypads
+ case 0x4016: /* S9xReset reading of old-style joypads */
if ((byte & 1) && !(Memory.FillRAM [Address] & 1))
{
PPU.Joypad1ButtonReadPos = 0;
@@ -997,7 +996,7 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
else
switch (Address)
{
- case 0x4200: // NMI, V & H IRQ and joypad reading enable flags
+ case 0x4200: /* NMI, V & H IRQ and joypad reading enable flags */
if (byte & 0x20)
{
if (!PPU.VTimerEnabled)
@@ -1022,8 +1021,8 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
}
else
{
- // No need to check for HTimer being disabled as the scanline
- // event trigger code won't trigger an H-IRQ unless its enabled.
+ /* No need to check for HTimer being disabled as the scanline
+ event trigger code won't trigger an H-IRQ unless its enabled. */
PPU.HTimerEnabled = false;
PPU.HTimerPosition = Settings.H_Max + 1;
}
@@ -1033,10 +1032,10 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
if ((byte & 0x80) &&
!(Memory.FillRAM [0x4200] & 0x80) &&
CPU.V_Counter >= PPU.ScreenHeight + FIRST_VISIBLE_LINE &&
- // NMI can trigger during VBlank as long as NMI_read ($4210) wasn't cleared.
- // Panic Bomberman clears the NMI pending flag @ scanline 230 before enabling
- // NMIs again. The NMI routine crashes the CPU if it is called without the NMI
- // pending flag being set...
+ /* NMI can trigger during VBlank as long as NMI_read ($4210) wasn't cleared. */
+ /* Panic Bomberman clears the NMI pending flag @ scanline 230 before enabling
+ NMIs again. The NMI routine crashes the CPU if it is called without the NMI
+ pending flag being set... */
(Memory.FillRAM [0x4210] & 0x80) &&
!CPU.NMIActive)
{
@@ -1050,14 +1049,14 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
S9xLatchCounters(1);
Memory.FillRAM[0x4201] = Memory.FillRAM[0x4213] = byte;
break;
- case 0x4202: // Multiplier (for multiply)
+ case 0x4202: /* Multiplier (for multiply) */
break;
- case 0x4203: // Multiplicand
+ case 0x4203: /* Multiplicand */
{
uint32_t res = Memory.FillRAM[0x4202] * byte;
#if defined FAST_LSB_WORD_ACCESS || defined FAST_ALIGNED_LSB_WORD_ACCESS
- // assume malloc'd memory is 2-byte aligned
+ /* assume malloc'd memory is 2-byte aligned */
* ((uint16_t*) &Memory.FillRAM[0x4216]) = res;
#else
Memory.FillRAM[0x4216] = (uint8_t) res;
@@ -1066,12 +1065,12 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
break;
}
case 0x4204:
- case 0x4205: // Low and high muliplier (for divide)
+ case 0x4205: /* Low and high muliplier (for divide) */
break;
case 0x4206:
{
#if defined FAST_LSB_WORD_ACCESS || defined FAST_ALIGNED_LSB_WORD_ACCESS
- // assume malloc'd memory is 2-byte aligned
+ /* assume malloc'd memory is 2-byte aligned */
uint16_t a = *((uint16_t*) &Memory.FillRAM[0x4204]);
#else
uint16_t a = Memory.FillRAM[0x4204] + (Memory.FillRAM[0x4205] << 8);
@@ -1080,7 +1079,7 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
uint16_t rem = byte ? a % byte : a;
#if defined FAST_LSB_WORD_ACCESS || defined FAST_ALIGNED_LSB_WORD_ACCESS
- // assume malloc'd memory is 2-byte aligned
+ /* assume malloc'd memory is 2-byte aligned */
* ((uint16_t*) &Memory.FillRAM[0x4214]) = div;
* ((uint16_t*) &Memory.FillRAM[0x4216]) = rem;
#else
@@ -1150,7 +1149,7 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
Memory.FillRAM[0x420c] = byte;
IPPU.HDMA = byte;
break;
- case 0x420d: // Cycle speed 0 - 2.68Mhz, 1 - 3.58Mhz (banks 0x80 +)
+ case 0x420d: /* Cycle speed 0 - 2.68Mhz, 1 - 3.58Mhz (banks 0x80 +) */
if ((byte & 1) != (Memory.FillRAM [0x420d] & 1))
{
if (byte & 1)
@@ -1162,20 +1161,20 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
}
break;
case 0x420e:
- case 0x420f: // --->>> Unknown
+ case 0x420f: /* --->>> Unknown */
break;
- case 0x4210: // NMI ocurred flag (reset on read or write)
+ case 0x4210: /* NMI ocurred flag (reset on read or write) */
Memory.FillRAM[0x4210] = Model->_5A22;
return;
- case 0x4211: // IRQ ocurred flag (reset on read or write)
+ case 0x4211: /* IRQ ocurred flag (reset on read or write) */
CLEAR_IRQ_SOURCE(PPU_V_BEAM_IRQ_SOURCE | PPU_H_BEAM_IRQ_SOURCE);
break;
- case 0x4212: // v-blank, h-blank and joypad being scanned flags (read-only)
- case 0x4213: // I/O Port (read-only)
+ case 0x4212: /* v-blank, h-blank and joypad being scanned flags (read-only) */
+ case 0x4213: /* I/O Port (read-only) */
case 0x4214:
- case 0x4215: // Quotent of divide (read-only)
+ case 0x4215: /* Quotent of divide (read-only) */
case 0x4216:
- case 0x4217: // Multiply product (read-only)
+ case 0x4217: /* Multiply product (read-only) */
case 0x4218:
case 0x4219:
case 0x421a:
@@ -1183,7 +1182,7 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
case 0x421c:
case 0x421d:
case 0x421e:
- case 0x421f: // Joypad values (read-only)
+ case 0x421f: /* Joypad values (read-only) */
return;
case 0x4300:
case 0x4310:
@@ -1353,7 +1352,7 @@ void S9xSetCPU(uint8_t byte, uint16_t Address)
case 0x4804:
case 0x4805:
case 0x4806:
- case 0x4807: //These registers are used by both the S-DD1 and the SPC7110
+ case 0x4807: /* These registers are used by both the S-DD1 and the SPC7110 */
if (Settings.SPC7110)
S9xSetSPC7110(byte, Address);
else
@@ -1424,7 +1423,7 @@ uint8_t S9xGetCPU(uint16_t Address)
if (Memory.FillRAM [0x4016] & 1)
return 0;
- if (PPU.Joypad1ButtonReadPos >= 16) // Joypad 1 is enabled
+ if (PPU.Joypad1ButtonReadPos >= 16) /* Joypad 1 is enabled */
return 1;
return (IPPU.Joypads[0] >> (PPU.Joypad1ButtonReadPos++ ^ 15)) & 1;
@@ -1433,7 +1432,7 @@ uint8_t S9xGetCPU(uint16_t Address)
{
if (Memory.FillRAM [0x4016] & 1)
{
- if (IPPU.Controller == SNES_MULTIPLAYER5) // MultiPlayer5 adaptor is only allowed to be plugged into port 2
+ if (IPPU.Controller == SNES_MULTIPLAYER5) /* MultiPlayer5 adaptor is only allowed to be plugged into port 2 */
return 2;
return 0;
}
@@ -1462,7 +1461,7 @@ uint8_t S9xGetCPU(uint16_t Address)
return rv;
}
- if (PPU.Joypad2ButtonReadPos >= 16) // Joypad 2 is enabled
+ if (PPU.Joypad2ButtonReadPos >= 16) /* Joypad 2 is enabled */
return 1;
return (IPPU.Joypads[1] >> (PPU.Joypad2ButtonReadPos++ ^ 15)) & 1;
@@ -1494,21 +1493,21 @@ uint8_t S9xGetCPU(uint16_t Address)
case 0x4210:
CPU.WaitAddress = CPU.PCAtOpcodeStart;
byte = Memory.FillRAM[0x4210];
- Memory.FillRAM[0x4210] = Model->_5A22; //SNEeSe returns 2 for 5A22 version.
+ Memory.FillRAM[0x4210] = Model->_5A22; /* SNEeSe returns 2 for 5A22 version. */
return (byte & 0x80) | (OpenBus & 0x70) | Model->_5A22;
case 0x4211:
byte = (CPU.IRQActive & (PPU_V_BEAM_IRQ_SOURCE | PPU_H_BEAM_IRQ_SOURCE)) ? 0x80 : 0;
CLEAR_IRQ_SOURCE(PPU_V_BEAM_IRQ_SOURCE | PPU_H_BEAM_IRQ_SOURCE);
byte |= OpenBus & 0x7f;
return byte;
- case 0x4212: // V-blank, h-blank and joypads being read flags (read-only)
+ case 0x4212: /* V-blank, h-blank and joypads being read flags (read-only) */
CPU.WaitAddress = CPU.PCAtOpcodeStart;
return REGISTER_4212() | (OpenBus & 0x3E);
- case 0x4213: // I/O port input - returns 0 wherever $4201 is 0, and 1 elsewhere unless something else pulls it down (i.e. a gun)
+ case 0x4213: /* I/O port input - returns 0 wherever $4201 is 0, and 1 elsewhere unless something else pulls it down (i.e. a gun) */
case 0x4214:
- case 0x4215: // Quotient of divide result
+ case 0x4215: /* Quotient of divide result */
case 0x4216:
- case 0x4217: // Multiplcation result (for multiply) or remainder of divison.
+ case 0x4217: /* Multiplcation result (for multiply) or remainder of divison. */
case 0x4218:
case 0x4219:
case 0x421a:
@@ -1516,7 +1515,7 @@ uint8_t S9xGetCPU(uint16_t Address)
case 0x421c:
case 0x421d:
case 0x421e:
- case 0x421f: // Joypads 1-4 button and direction state.
+ case 0x421f: /* Joypads 1-4 button and direction state. */
return Memory.FillRAM [Address];
case 0x4300:
case 0x4310:
@@ -1808,14 +1807,14 @@ void S9xResetPPU()
{
if (!Settings.SuperFX)
memset(&Memory.FillRAM [c], c >> 8, 0x100);
- else if ((uint32_t) c < 0x3000 || (uint32_t) c >= 0x3300) // Don't overwrite SFX pvRegisters at 0x3000-0x32FF, they were set in FxReset.
+ else if ((uint32_t) c < 0x3000 || (uint32_t) c >= 0x3300) /* Don't overwrite SFX pvRegisters at 0x3000-0x32FF, they were set in FxReset. */
memset(&Memory.FillRAM [c], c >> 8, 0x100);
}
memset(&Memory.FillRAM [0x2100], 0, 0x100);
memset(&Memory.FillRAM [0x4200], 0, 0x100);
memset(&Memory.FillRAM [0x4000], 0, 0x100);
- // For BS Suttehakkun 2...
+ /* For BS Suttehakkun 2... */
memset(&Memory.FillRAM [0x1000], 0, 0x1000);
Memory.FillRAM[0x4201] = Memory.FillRAM[0x4213] = 0xFF;
@@ -1832,7 +1831,7 @@ void S9xSoftResetPPU()
memset(&Memory.FillRAM [0x2100], 0, 0x100);
memset(&Memory.FillRAM [0x4200], 0, 0x100);
memset(&Memory.FillRAM [0x4000], 0, 0x100);
- // For BS Suttehakkun 2...
+ /* For BS Suttehakkun 2... */
memset(&Memory.FillRAM [0x1000], 0, 0x1000);
Memory.FillRAM[0x4201] = Memory.FillRAM[0x4213] = 0xFF;
@@ -2006,7 +2005,7 @@ void S9xUpdateJustifiers()
{
Memory.FillRAM [0x213F] = Model->_5C78;
- if (Settings.SecondJustifier) //process latch as Justifier 2
+ if (Settings.SecondJustifier) /* process latch as Justifier 2 */
{
if (IPPU.Controller == SNES_JUSTIFIER_2)
{
@@ -2023,7 +2022,7 @@ void S9xUpdateJustifiers()
{
Memory.FillRAM [0x213F] = Model->_5C78;
- if (IPPU.Controller == SNES_JUSTIFIER) //emulate player 1.
+ if (IPPU.Controller == SNES_JUSTIFIER) /* emulate player 1. */
{
if (!offscreen)
{
@@ -2034,7 +2033,7 @@ void S9xUpdateJustifiers()
}
}
- if (!offscreen) //needs restructure
+ if (!offscreen) /* needs restructure */
{
if ((!last_p1 && IPPU.Controller == SNES_JUSTIFIER) || (last_p1 && IPPU.Controller == SNES_JUSTIFIER_2))
{
@@ -2069,11 +2068,11 @@ void S9xUpdateJoypads()
if (IPPU.Joypads [i])
IPPU.Joypads [i] |= 0xffff0000;
- if (Settings.MouseMaster) // Read mouse position if enabled
+ if (Settings.MouseMaster) /* Read mouse position if enabled */
for (i = 0; i < 2; i++)
S9xProcessMouse(i);
- if (Settings.SuperScopeMaster) // Read SuperScope if enabled
+ if (Settings.SuperScopeMaster) /* Read SuperScope if enabled */
ProcessSuperScope();
if (Memory.FillRAM [0x4200] & 1)
@@ -2129,7 +2128,7 @@ void S9xSuperFXExec()
FxEmulate((Memory.FillRAM [0x3000 + GSU_CLSR] & 1) ? 700 : 350);
int32_t GSUStatus = Memory.FillRAM [0x3000 + GSU_SFR] | (Memory.FillRAM [0x3000 + GSU_SFR + 1] << 8);
if ((GSUStatus & (FLG_G | FLG_IRQ)) == FLG_IRQ)
- S9xSetIRQ(GSU_IRQ_SOURCE); // Trigger a GSU IRQ.
+ S9xSetIRQ(GSU_IRQ_SOURCE); /* Trigger a GSU IRQ. */
}
}
}
diff --git a/source/sa1.c b/source/sa1.c
index 005a9c7..1666e17 100644
--- a/source/sa1.c
+++ b/source/sa1.c
@@ -277,31 +277,39 @@ uint8_t S9xGetSA1(uint32_t address)
{
switch (address)
{
- case 0x2300:
- return (uint8_t)((Memory.FillRAM [0x2209] & 0x5f) | (CPU.IRQActive & (SA1_IRQ_SOURCE | SA1_DMA_IRQ_SOURCE)));
- case 0x2301:
- return (Memory.FillRAM [0x2200] & 0xf) | (Memory.FillRAM [0x2301] & 0xf0);
- case 0x2306:
- return (uint8_t) SA1.sum;
- case 0x2307:
- return (uint8_t) (SA1.sum >> 8);
- case 0x2308:
- return (uint8_t) (SA1.sum >> 16);
- case 0x2309:
- return (uint8_t) (SA1.sum >> 24);
- case 0x230a:
- return (uint8_t) (SA1.sum >> 32);
- case 0x230d:
- {
- uint8_t byte = Memory.FillRAM [0x230d];
+ case 0x2300:
+ return (Memory.FillRAM[0x2209] & 0x5f) | (Memory.FillRAM[0x2300] & 0xa0);
+ case 0x2301:
+ return (Memory.FillRAM[0x2200] & 0x0f) | (Memory.FillRAM[0x2301] & 0xf0);
+ case 0x2306:
+ return (uint8_t) SA1.sum;
+ case 0x2307:
+ return (uint8_t) (SA1.sum >> 8);
+ case 0x2308:
+ return (uint8_t) (SA1.sum >> 16);
+ case 0x2309:
+ return (uint8_t) (SA1.sum >> 24);
+ case 0x230a:
+ return (uint8_t) (SA1.sum >> 32);
+ case 0x230b:
+ return SA1.overflow ? 0x80 : 0;
+ case 0x230c:
+ return Memory.FillRAM[0x230c];
+ case 0x230d:
+ {
+ uint8_t byte = Memory.FillRAM[0x230d];
- if (Memory.FillRAM [0x2258] & 0x80)
- S9xSA1ReadVariableLengthData(true, false);
- return byte;
- }
+ if (Memory.FillRAM[0x2258] & 0x80)
+ S9xSA1ReadVariableLengthData(true, false);
+ return byte;
+ }
+ case 0x230e: /* version code register */
+ return 0x01;
+ default:
+ break;
}
- return Memory.FillRAM [address];
+ return Memory.FillRAM[address];
}
void S9xSetSA1(uint8_t byte, uint32_t address)
@@ -314,26 +322,37 @@ void S9xSetSA1(uint8_t byte, uint32_t address)
case 0x2200:
SA1.Waiting = (byte & 0x60) != 0;
- if (!(byte & 0x20) && (Memory.FillRAM [0x2200] & 0x20))
+ if (!(byte & 0x80) && (Memory.FillRAM[0x2200] & 0x20))
S9xSA1Reset();
if (byte & 0x80)
{
- Memory.FillRAM [0x2301] |= 0x80;
- if (Memory.FillRAM [0x220a] & 0x80)
+ Memory.FillRAM[0x2301] |= 0x80;
+ if (Memory.FillRAM[0x220a] & 0x80)
{
+ Memory.FillRAM[0x220b] &= ~0x80;
SA1.Flags |= IRQ_PENDING_FLAG;
SA1.IRQActive |= SNES_IRQ_SOURCE;
SA1.Executing = !SA1.Waiting && SA1.S9xOpcodes;
}
}
if (byte & 0x10)
- Memory.FillRAM [0x2301] |= 0x10;
+ {
+ Memory.FillRAM[0x2301] |= 0x10;
+ if (Memory.FillRAM[0x220a] & 0x10)
+ Memory.FillRAM[0x220b] &= ~0x10;
+ }
break;
case 0x2201:
- if (((byte ^ Memory.FillRAM [0x2201]) & 0x80) && (Memory.FillRAM [0x2300] & byte & 0x80))
+ if (((byte ^ Memory.FillRAM[0x2201]) & 0x80) && (Memory.FillRAM[0x2300] & byte & 0x80))
+ {
+ Memory.FillRAM[0x2202] &= ~0x80;
S9xSetIRQ(SA1_IRQ_SOURCE);
- if (((byte ^ Memory.FillRAM [0x2201]) & 0x20) && (Memory.FillRAM [0x2300] & byte & 0x20))
+ }
+ if (((byte ^ Memory.FillRAM[0x2201]) & 0x20) && (Memory.FillRAM[0x2300] & byte & 0x20))
+ {
+ Memory.FillRAM[0x2202] &= ~0x20;
S9xSetIRQ(SA1_DMA_IRQ_SOURCE);
+ }
break;
case 0x2202:
if (byte & 0x80)
@@ -348,29 +367,37 @@ void S9xSetSA1(uint8_t byte, uint32_t address)
}
break;
case 0x2209:
- Memory.FillRAM [0x2209] = byte;
if (byte & 0x80)
- Memory.FillRAM [0x2300] |= 0x80;
-
- if (byte & Memory.FillRAM [0x2201] & 0x80)
- S9xSetIRQ(SA1_IRQ_SOURCE);
- return;
+ {
+ Memory.FillRAM[0x2300] |= 0x80;
+ if (Memory.FillRAM[0x2201] & 0x80)
+ {
+ Memory.FillRAM[0x2202] &= ~0x80;
+ S9xSetIRQ(SA1_IRQ_SOURCE);
+ }
+ }
+ break;
case 0x220a:
- if (((byte ^ Memory.FillRAM [0x220a]) & 0x80) && (Memory.FillRAM [0x2301] & byte & 0x80))
+ if (((byte ^ Memory.FillRAM[0x220a]) & 0x80) && (Memory.FillRAM[0x2301] & byte & 0x80))
{
+ Memory.FillRAM[0x220b] &= ~0x80;
SA1.Flags |= IRQ_PENDING_FLAG;
SA1.IRQActive |= SNES_IRQ_SOURCE;
}
- if (((byte ^ Memory.FillRAM [0x220a]) & 0x40) && (Memory.FillRAM [0x2301] & byte & 0x40))
+ if (((byte ^ Memory.FillRAM[0x220a]) & 0x40) && (Memory.FillRAM[0x2301] & byte & 0x40))
{
+ Memory.FillRAM[0x220b] &= ~0x40;
SA1.Flags |= IRQ_PENDING_FLAG;
SA1.IRQActive |= TIMER_IRQ_SOURCE;
}
- if (((byte ^ Memory.FillRAM [0x220a]) & 0x20) && (Memory.FillRAM [0x2301] & byte & 0x20))
+ if (((byte ^ Memory.FillRAM[0x220a]) & 0x20) && (Memory.FillRAM[0x2301] & byte & 0x20))
{
+ Memory.FillRAM[0x220b] &= ~0x20;
SA1.Flags |= IRQ_PENDING_FLAG;
SA1.IRQActive |= DMA_IRQ_SOURCE;
}
+ if (((byte ^ Memory.FillRAM[0x220a]) & 0x10) && (Memory.FillRAM[0x2301] & byte & 0x10))
+ Memory.FillRAM[0x220b] &= ~0x10;
break;
case 0x220b:
if (byte & 0x80)
@@ -389,7 +416,7 @@ void S9xSetSA1(uint8_t byte, uint32_t address)
Memory.FillRAM [0x2301] &= ~0x20;
}
if (byte & 0x10)
- Memory.FillRAM [0x2301] &= ~0x10; // Clear NMI
+ Memory.FillRAM [0x2301] &= ~0x10;
if (!SA1.IRQActive)
SA1.Flags &= ~IRQ_PENDING_FLAG;
break;
@@ -410,23 +437,26 @@ void S9xSetSA1(uint8_t byte, uint32_t address)
if (byte & 0x80)
SA1.in_char_dma = 0;
break;
- case 0x2236:
- Memory.FillRAM [address] = byte;
- if ((Memory.FillRAM [0x2230] & 0xa4) == 0x80)
- S9xSA1DMA(); // Normal DMA to I-RAM
- else if ((Memory.FillRAM [0x2230] & 0xb0) == 0xb0)
+ case 0x2236: /* DMA destination start address (LH) */
+ Memory.FillRAM[address] = byte;
+ if ((Memory.FillRAM[0x2230] & 0xa4) == 0x80) /* Normal DMA to I-RAM */
+ S9xSA1DMA(); /* Normal DMA to I-RAM */
+ else if ((Memory.FillRAM[0x2230] & 0xb0) == 0xb0)
{
- Memory.FillRAM [0x2300] |= 0x20;
- if (Memory.FillRAM [0x2201] & 0x20)
- S9xSetIRQ(SA1_DMA_IRQ_SOURCE);
SA1.in_char_dma = 1;
+ Memory.FillRAM[0x2300] |= 0x20;
+ if (Memory.FillRAM[0x2201] & 0x20)
+ {
+ Memory.FillRAM[0x2202] &= ~0x20;
+ S9xSetIRQ(SA1_DMA_IRQ_SOURCE);
+ }
}
- return;
+ break;
case 0x2237:
Memory.FillRAM [address] = byte;
if ((Memory.FillRAM [0x2230] & 0xa4) == 0x84)
S9xSA1DMA(); // Normal DMA to BW-RAM
- return;
+ break;
case 0x223f:
SA1.VirtualBitmapFormat = (byte & 0x80) ? 2 : 4;
break;
@@ -434,14 +464,14 @@ void S9xSetSA1(uint8_t byte, uint32_t address)
Memory.FillRAM [address] = byte;
if ((Memory.FillRAM [0x2230] & 0xb0) == 0xa0)
{
- // Char conversion 2 DMA enabled
- // memmove converted: Same malloc but constant non-overlapping addresses [Neb]
+ /* Char conversion 2 DMA enabled */
+ /* memmove converted: Same malloc but constant non-overlapping addresses [Neb] */
memcpy(&Memory.ROM [MAX_ROM_SIZE - 0x10000] + (SA1.in_char_dma << 4), &Memory.FillRAM [0x2240], 16);
SA1.in_char_dma = (SA1.in_char_dma + 1) & 7;
if ((SA1.in_char_dma & 3) == 0)
S9xSA1CharConv2();
}
- return;
+ break;
case 0x2250:
if (byte & 2)
SA1.sum = 0;
@@ -451,48 +481,55 @@ void S9xSetSA1(uint8_t byte, uint32_t address)
SA1.op1 = (SA1.op1 & 0xff00) | byte;
break;
case 0x2252:
- SA1.op1 = (SA1.op1 & 0xff) | (byte << 8);
+ SA1.op1 = (SA1.op1 & 0x00ff) | (byte << 8);
break;
case 0x2253:
SA1.op2 = (SA1.op2 & 0xff00) | byte;
break;
case 0x2254:
- SA1.op2 = (SA1.op2 & 0xff) | (byte << 8);
+ SA1.op2 = (SA1.op2 & 0x00ff) | (byte << 8);
switch (SA1.arithmetic_op)
{
- case 0: // multiply
- SA1.sum = SA1.op1 * SA1.op2;
+ case 0: /* multiply */
+ SA1.sum = (int16_t) SA1.op1 * (int16_t) SA1.op2;
+ SA1.op2 = 0;
break;
- case 1: // divide
+ case 1: /* divide */
if (SA1.op2 == 0)
- SA1.sum = SA1.op1 << 16;
+ SA1.sum = 0;
else
{
- uint32_t x = (SA1.op1 / (uint16_t) SA1.op2);
- SA1.sum = x | ((SA1.op1 - (x * (uint16_t) SA1.op2)) << 16);
+ int16_t quotient = (int16_t) SA1.op1 / (uint16_t) SA1.op2;
+ uint16_t remainder = (int16_t) SA1.op1 % (uint16_t) SA1.op2;
+ SA1.sum = (remainder << 16) | quotient;
}
+ SA1.op1 = 0;
+ SA1.op2 = 0;
break;
- default: // cumulative sum
- SA1.sum += SA1.op1 * SA1.op2;
- if (SA1.sum & ((int64_t) 0xffffff << 32))
- SA1.overflow = true;
+ default: /* cumulative sum */
+ SA1.sum += (int16_t) SA1.op1 * (int16_t) SA1.op2;
+ SA1.overflow = (SA1.sum >= (1ULL << 40));
+ SA1.sum &= (1ULL << 40) - 1;
+ SA1.op2 = 0;
break;
}
break;
- case 0x2258: // Variable bit-field length/auto inc/start.
- Memory.FillRAM [0x2258] = byte;
+ case 0x2258: /* Variable bit-field length/auto inc/start. */
+ Memory.FillRAM[0x2258] = byte;
S9xSA1ReadVariableLengthData(true, false);
return;
case 0x2259:
case 0x225a:
- case 0x225b: // Variable bit-field start address
- Memory.FillRAM [address] = byte;
+ case 0x225b: /* Variable bit-field start address */
+ Memory.FillRAM[address] = byte;
SA1.variable_bit_pos = 0;
S9xSA1ReadVariableLengthData(false, true);
return;
+ default:
+ break;
}
- Memory.FillRAM [address] = byte;
+ Memory.FillRAM[address] = byte;
}
static void S9xSA1CharConv2()
@@ -537,14 +574,14 @@ static void S9xSA1DMA()
switch (Memory.FillRAM [0x2230] & 3)
{
- case 0: // ROM
+ case 0: /* ROM */
s = SA1.Map [(src >> MEMMAP_SHIFT) & MEMMAP_MASK];
if (s >= (uint8_t*) MAP_LAST)
s += (src & 0xffff);
else
s = Memory.ROM + (src & 0xffff);
break;
- case 1: // BW-RAM
+ case 1: /* BW-RAM */
src &= Memory.SRAMMask;
len &= Memory.SRAMMask;
s = Memory.SRAM + src;
@@ -568,7 +605,7 @@ static void S9xSA1DMA()
len &= 0x3ff;
d = &Memory.FillRAM [0x3000] + dst;
}
- // memmove required: Can overlap arbitrarily [Neb]
+ /* memmove required: Can overlap arbitrarily [Neb] */
memmove(d, s, len);
Memory.FillRAM [0x2301] |= 0x20;
diff --git a/source/seta010.c b/source/seta010.c
index ca6f121..d452cd9 100644
--- a/source/seta010.c
+++ b/source/seta010.c
@@ -3,7 +3,7 @@
#include "seta.h"
#include "memmap.h"
-// Mode 7 scaling constants for all raster lines
+/* Mode 7 scaling constants for all raster lines */
const int16_t ST010_M7Scale[176] =
{
0x0380, 0x0325, 0x02da, 0x029c, 0x0268, 0x023b, 0x0215, 0x01f3,
@@ -331,16 +331,14 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
{
switch (ST010.op_reg)
{
- // Sorts Driver Placements
- //
- // Input
- // 0x0024-0x0025 : Positions
- // 0x0040-0x007f : Places
- // 0x0080-0x00ff : Drivers
- // Output
- // 0x0040-0x007f : Places
- // 0x0080-0x00ff : Drivers
- //
+ /* Sorts Driver Placements
+ Input
+ 0x0024-0x0025 : Positions
+ 0x0040-0x007f : Places
+ 0x0080-0x00ff : Drivers
+ Output
+ 0x0040-0x007f : Places
+ 0x0080-0x00ff : Drivers */
case 0x02:
{
#if defined(FAST_LSB_WORD_ACCESS) && !defined(ANDROID)
@@ -374,16 +372,14 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
}
- // Two Dimensional Coordinate Scale
- //
- // Input
- // 0x0000-0x0001 : X0 (signed)
- // 0x0002-0x0003 : Y0 (signed)
- // 0x0004-0x0005 : Multiplier (signed)
- // Output
- // 0x0010-0x0013 : X1 (signed)
- // 0x0014-0x0017 : Y1 (signed)
- //
+ /* Two Dimensional Coordinate Scale
+ Input
+ 0x0000-0x0001 : X0 (signed)
+ 0x0002-0x0003 : Y0 (signed)
+ 0x0004-0x0005 : Multiplier (signed)
+ Output
+ 0x0010-0x0013 : X1 (signed)
+ 0x0014-0x0017 : Y1 (signed) */
case 0x03:
{
#if defined(FAST_LSB_WORD_ACCESS) && !defined(ANDROID)
@@ -407,14 +403,12 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
break;
}
- // 16-bit Multiplication
- //
- // Input
- // 0x0000-0x0001 : Multiplcand (signed)
- // 0x0002-0x0003 : Multiplier (signed)
- // Output
- // 0x0010-0x0013 : Product (signed)
- //
+ /* 16-bit Multiplication
+ Input
+ 0x0000-0x0001 : Multiplcand (signed)
+ 0x0002-0x0003 : Multiplier (signed)
+ Output
+ 0x0010-0x0013 : Product (signed) */
case 0x06:
{
#if defined(FAST_LSB_WORD_ACCESS) && !defined(ANDROID)
@@ -433,16 +427,14 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
break;
}
- // Mode 7 Raster Data Calculation
- //
- // Input
- // 0x0000-0x0001 : Angle (signed)
- // Output
- // 0x00f0-0x024f : Mode 7 Matrix A
- // 0x0250-0x03af : Mode 7 Matrix B
- // 0x03b0-0x050f : Mode 7 Matrix C
- // 0x0510-0x066f : Mode 7 Matrix D
- //
+ /* Mode 7 Raster Data Calculation
+ Input
+ 0x0000-0x0001 : Angle (signed)
+ Output
+ 0x00f0-0x024f : Mode 7 Matrix A
+ 0x0250-0x03af : Mode 7 Matrix B
+ 0x03b0-0x050f : Mode 7 Matrix C
+ 0x0510-0x066f : Mode 7 Matrix D */
case 0x07:
{
int16_t data;
@@ -452,7 +444,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
int32_t line;
for (line = 0; line < 176; line++)
{
- // Calculate Mode 7 Matrix A/D data
+ /* Calculate Mode 7 Matrix A/D data */
data = ST010_M7Scale[line] * ST010_Cos(Theta) >> 15;
Memory.SRAM[0x00f0 + offset] = (uint8_t)(data);
@@ -460,7 +452,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
Memory.SRAM[0x0510 + offset] = (uint8_t)(data);
Memory.SRAM[0x0511 + offset] = (uint8_t)(data >> 8);
- // Calculate Mode 7 Matrix B/C data
+ /* Calculate Mode 7 Matrix B/C data */
data = ST010_M7Scale[line] * ST010_Sin(Theta) >> 15;
Memory.SRAM[0x0250 + offset] = (uint8_t)(data);
@@ -475,23 +467,21 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
offset += 2;
}
- // Shift Angle for use with Lookup table
+ /* Shift Angle for use with Lookup table */
Memory.SRAM[0x00] = Memory.SRAM[0x01];
Memory.SRAM[0x01] = 0x00;
break;
}
- // Two dimensional Coordinate Rotation
- //
- // Input
- // 0x0000-0x0001 : X0 (signed)
- // 0x0002-0x0003 : Y0 (signed)
- // 0x0004-0x0005 : Angle (signed)
- // Output
- // 0x0010-0x0011 : X1 (signed)
- // 0x0012-0x0013 : Y1 (signed)
- //
+ /* Two dimensional Coordinate Rotation
+ Input
+ 0x0000-0x0001 : X0 (signed)
+ 0x0002-0x0003 : Y0 (signed)
+ 0x0004-0x0005 : Angle (signed)
+ Output
+ 0x0010-0x0011 : X1 (signed)
+ 0x0012-0x0013 : Y1 (signed) */
case 0x08:
{
#if defined(FAST_LSB_WORD_ACCESS) && !defined(ANDROID)
@@ -511,12 +501,11 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
break;
}
- // Input
- // 0x0000-0x0001 : DX (signed)
- // 0x0002-0x0003 : DY (signed)
- // Output
- // 0x0010-0x0011 : Angle (signed)
- //
+ /* Input
+ 0x0000-0x0001 : DX (signed)
+ 0x0002-0x0003 : DY (signed)
+ Output
+ 0x0010-0x0011 : Angle (signed) */
case 0x01:
{
Memory.SRAM[0x0006] = Memory.SRAM[0x0002];
@@ -544,7 +533,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
break;
}
- // calculate the vector length of (x,y)
+ /* calculate the vector length of (x,y) */
case 0x04:
{
int16_t square, x, y;
@@ -568,7 +557,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
break;
}
- // calculate AI orientation based on specific guidelines
+ /* calculate AI orientation based on specific guidelines */
case 0x05:
{
int32_t dx, dy;
@@ -577,45 +566,45 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
bool wrap = false;
- // target (x,y) coordinates
+ /* target (x,y) coordinates */
int16_t ypos_max = ST010_WORD(0x00C0);
int16_t xpos_max = ST010_WORD(0x00C2);
- // current coordinates and direction
+ /* current coordinates and direction */
int32_t ypos = Memory.SRAM[0xC4] | (Memory.SRAM[0xC5] << 8) | (Memory.SRAM[0xC6] << 16) | (Memory.SRAM[0xC7] << 24);
int32_t xpos = Memory.SRAM[0xC8] | (Memory.SRAM[0xC9] << 8) | (Memory.SRAM[0xCA] << 16) | (Memory.SRAM[0xCB] << 24);
uint16_t rot = Memory.SRAM[0xCC] | (Memory.SRAM[0xCD] << 8);
- // physics
+ /* physics */
uint16_t speed = ST010_WORD(0x00D4);
uint16_t accel = ST010_WORD(0x00D6);
uint16_t speed_max = ST010_WORD(0x00D8);
- // special condition acknowledgment
+ /* special condition acknowledgment */
int16_t system = ST010_WORD(0x00DA);
int16_t flags = ST010_WORD(0x00DC);
- // new target coordinates
+ /* new target coordinates */
int16_t ypos_new = ST010_WORD(0x00DE);
int16_t xpos_new = ST010_WORD(0x00E0);
- // mask upper bit
+ /* mask upper bit */
xpos_new &= 0x7FFF;
- // get the current distance
+ /* get the current distance */
dx = xpos_max - (xpos >> 16);
dy = ypos_max - (ypos >> 16);
- // quirk: clear and move in9
+ /* quirk: clear and move in9 */
Memory.SRAM[0xD2] = 0xFF;
Memory.SRAM[0xD3] = 0xFF;
Memory.SRAM[0xDA] = 0;
Memory.SRAM[0xDB] = 0;
- // grab the target angle
+ /* grab the target angle */
ST010_OP01(dy, dx, &a1, &b1, &c1, (int16_t*)&o1);
- // check for wrapping
+ /* check for wrapping */
if (ABS(o1 - rot) > 0x8000)
{
o1 += 0x8000;
@@ -625,22 +614,22 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
uint16_t old_speed = speed;
- if (ABS(o1 - rot) == 0x8000) // special case
+ if (ABS(o1 - rot) == 0x8000) /* special case */
speed = 0x100;
- else if (ABS(o1 - rot) >= 0x1000) // slow down for sharp curves
+ else if (ABS(o1 - rot) >= 0x1000) /* slow down for sharp curves */
{
uint32_t slow = ABS(o1 - rot);
- slow >>= 4; // scaling
+ slow >>= 4; /* scaling */
speed -= slow;
}
- else // otherwise accelerate
+ else /* otherwise accelerate */
{
speed += accel;
if (speed > speed_max)
- speed = speed_max; // clip speed
+ speed = speed_max; /* clip speed */
}
- // prevent negative/positive overflow
+ /* prevent negative/positive overflow */
if (ABS(old_speed - speed) > 0x8000)
{
if(old_speed < speed)
@@ -649,8 +638,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
speed = 0xff00;
}
- // adjust direction by so many degrees
- // be careful of negative adjustments
+ /* adjust direction by so many degrees; be careful of negative adjustments */
if((o1 > rot && (o1 - rot) > 0x80) || (o1 < rot && (rot - o1) >= 0x80))
{
if(o1 < rot)
@@ -663,26 +651,26 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
if(wrap)
rot -= 0x8000;
- // now check the distances (store for later)
+ /* now check the distances (store for later) */
dx = (xpos_max << 16) - xpos;
dy = (ypos_max << 16) - ypos;
dx >>= 16;
dy >>= 16;
- // if we're in so many units of the target, signal it
+ /* if we're in so many units of the target, signal it */
if ((system && (dy <= 6 && dy >= -8) && (dx <= 126 && dx >= -128)) || (!system && (dx <= 6 && dx >= -8) && (dy <= 126 && dy >= -128)))
{
- // announce our new destination and flag it
+ /* announce our new destination and flag it */
xpos_max = xpos_new & 0x7FFF;
ypos_max = ypos_new;
flags |= 0x08;
}
- // update position
+ /* update position */
xpos -= (ST010_Cos(rot) * 0x400 >> 15) * (speed >> 8) << 1;
ypos -= (ST010_Sin(rot) * 0x400 >> 15) * (speed >> 8) << 1;
- // quirk: mask upper byte
+ /* quirk: mask upper byte */
xpos &= 0x1FFFFFFF;
ypos &= 0x1FFFFFFF;
@@ -708,7 +696,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
}
}
- // lower signal: op processed
+ /* lower signal: op processed */
ST010.op_reg = 0;
ST010.execute = 0;
}
diff --git a/source/seta011.c b/source/seta011.c
index 10cd40b..027f8ab 100644
--- a/source/seta011.c
+++ b/source/seta011.c
@@ -4,16 +4,16 @@
#include "memmap.h"
ST011_Regs ST011;
-uint8_t board[9][9]; // shougi playboard
+uint8_t board[9][9]; /* shougi playboard */
uint8_t S9xGetST011(uint32_t Address)
{
uint8_t t;
uint16_t address = (uint16_t) Address & 0xFFFF;
- if (address == 0x01) // status check
+ if (address == 0x01) /* status check */
t = 0xFF;
- else // read directly from s-ram
+ else /* read directly from s-ram */
t = Memory.SRAM[address];
return t;
@@ -24,7 +24,7 @@ void S9xSetST011(uint32_t Address, uint8_t Byte)
uint16_t address = (uint16_t) Address & 0xFFFF;
static bool reset = false;
- if (!reset) // bootup values
+ if (!reset) /* bootup values */
{
ST011.waiting4command = true;
reset = true;
@@ -32,9 +32,9 @@ void S9xSetST011(uint32_t Address, uint8_t Byte)
Memory.SRAM[address] = Byte;
- if (address == 0x00) // op commands/data goes through this address
+ if (address == 0x00) /* op commands/data goes through this address */
{
- if (ST011.waiting4command) // check for new commands
+ if (ST011.waiting4command) /* check for new commands */
{
ST011.waiting4command = false;
ST011.command = Byte;
@@ -67,32 +67,32 @@ void S9xSetST011(uint32_t Address, uint8_t Byte)
}
}
- if (ST011.in_count == ST011.in_index) // Actually execute the command
+ if (ST011.in_count == ST011.in_index) /* Actually execute the command */
{
ST011.waiting4command = true;
ST011.out_index = 0;
switch (ST011.command)
{
- case 0x01: // unknown: download playboard
+ case 0x01: /* unknown: download playboard */
{
- // 9x9 board data: top to bottom, left to right
- // Values represent piece types and ownership
+ /* 9x9 board data: top to bottom, left to right */
+ /* Values represent piece types and ownership */
int32_t lcv;
for (lcv = 0; lcv < 9; lcv++)
memcpy(board[lcv], ST011.parameters + lcv * 10, 9 * 1);
break;
}
- case 0x04: // unknown
+ case 0x04: /* unknown */
case 0x05:
{
- // outputs
+ /* outputs */
Memory.SRAM[0x12C] = 0x00;
Memory.SRAM[0x12E] = 0x00;
break;
}
- case 0x0E: // unknown
+ case 0x0E: /* unknown */
{
- // outputs
+ /* outputs */
Memory.SRAM[0x12C] = 0x00;
Memory.SRAM[0x12D] = 0x00;
break;
diff --git a/source/seta018.c b/source/seta018.c
index a608960..7cf0c80 100644
--- a/source/seta018.c
+++ b/source/seta018.c
@@ -7,11 +7,11 @@ ST018_Regs ST018;
uint8_t S9xGetST018(uint32_t Address)
{
- uint8_t t = 0; // Initialise to some value for the compiler
+ uint8_t t = 0; /* Initialise to some value for the compiler */
uint16_t address = (uint16_t) Address & 0xFFFF;
- // these roles may be flipped
- // op output
+ /* these roles may be flipped */
+ /* op output */
if (address == 0x3804)
{
if (ST018.out_count)
@@ -24,7 +24,7 @@ uint8_t S9xGetST018(uint32_t Address)
else
t = 0x81;
}
- else if (address == 0x3800) // status register
+ else if (address == 0x3800) /* status register */
t = ST018.status;
return t;
@@ -35,7 +35,7 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
uint16_t address = (uint16_t) Address & 0xFFFF;
static bool reset = false;
- if (!reset) // bootup values
+ if (!reset) /* bootup values */
{
ST018.waiting4command = true;
ST018.part_command = 0;
@@ -43,19 +43,19 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
}
Memory.SRAM[address] = Byte;
- ST018.status = 0x00; // default status for now
+ ST018.status = 0x00; /* default status for now */
- if (address == 0x3804) // op data goes through this address
+ if (address == 0x3804) /* op data goes through this address */
{
- if (ST018.waiting4command && ST018.part_command == 2) // check for new commands: 3 bytes length
+ if (ST018.waiting4command && ST018.part_command == 2) /* check for new commands: 3 bytes length */
{
ST018.waiting4command = false;
ST018.command <<= 8;
ST018.command |= Byte;
ST018.in_index = 0;
ST018.out_index = 0;
- ST018.part_command = 0; // 3-byte commands
- ST018.pass = 0; // data streams into the chip
+ ST018.part_command = 0; /* 3-byte commands */
+ ST018.pass = 0; /* data streams into the chip */
switch (ST018.command & 0xFFFFFF)
{
case 0x0100:
@@ -67,20 +67,20 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
break;
}
}
- else if (ST018.waiting4command) // 3-byte commands
+ else if (ST018.waiting4command) /* 3-byte commands */
{
ST018.part_command++;
ST018.command <<= 8;
ST018.command |= Byte;
}
}
- else if (address == 0x3802) // extra parameters
+ else if (address == 0x3802) /* extra parameters */
{
ST018.parameters[ST018.in_index] = Byte;
ST018.in_index++;
}
- if (ST018.in_count == ST018.in_index) // Actually execute the command
+ if (ST018.in_count == ST018.in_index) /* Actually execute the command */
{
ST018.waiting4command = true;
ST018.in_index = 0;
@@ -88,7 +88,7 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
switch (ST018.command)
{
case 0x0100:
- case 0xFF00: // hardware check?
+ case 0xFF00: /* hardware check? */
ST018.waiting4command = false;
ST018.pass++;
if (ST018.pass == 1)
@@ -96,7 +96,7 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
ST018.in_count = 1;
ST018.out_count = 2;
- // Overload's research
+ /* Overload's research */
ST018.output[0x00] = 0x81;
ST018.output[0x01] = 0x81;
}
@@ -105,7 +105,7 @@ void S9xSetST018(uint8_t Byte, uint32_t Address)
ST018.out_count = 3;
ST018.output[0x02] = 0x81;
- // done processing requests
+ /* done processing requests */
if (ST018.pass == 3)
ST018.waiting4command = true;
}
diff --git a/source/snes9x.h b/source/snes9x.h
index fdeae61..9e7d91d 100644
--- a/source/snes9x.h
+++ b/source/snes9x.h
@@ -217,6 +217,10 @@ extern SSettings Settings;
extern SCPUState CPU;
extern char String [513];
+#ifdef LAGFIX
+extern bool finishedFrame;
+#endif
+
void S9xSetPause(uint32_t mask);
void S9xClearPause(uint32_t mask);
#endif
diff --git a/source/soundux.c b/source/soundux.c
index 90cf18e..967ac10 100644
--- a/source/soundux.c
+++ b/source/soundux.c
@@ -127,22 +127,22 @@ void S9xSetEnvRate(Channel* ch, uint32_t rate, int32_t direction, int32_t target
{
switch (mode >> 28)
{
- case 0: // Attack
+ case 0: /* Attack */
ch->erate = AttackERate[ch->env_ind_attack][ch->state];
break;
- case 1: // Decay
+ case 1: /* Decay */
ch->erate = DecayERate[ch->env_ind_decay][ch->state];
break;
- case 2: // Sustain
+ case 2: /* Sustain */
ch->erate = SustainERate[ch->env_ind_sustain][ch->state];
break;
- case 3: // Increase
+ case 3: /* Increase */
ch->erate = IncreaseERate[mode & 0x1f][ch->state];
break;
- case 4: // DecreaseExp
+ case 4: /* DecreaseExp */
ch->erate = DecreaseERateExp[mode & 0x1f][ch->state];
break;
- case 5: // KeyOff
+ case 5: /* KeyOff */
ch->erate = KeyOffERate[ch->state];
break;
}
@@ -279,8 +279,8 @@ void S9xSetSoundADSR(int32_t channel, int32_t attack_ind, int32_t decay_ind, int
int32_t decay_rate = DecayRate [decay_ind];
int32_t sustain_rate = SustainRate [sustain_ind];
- // Hack for ROMs that use a very short attack rate, key on a
- // channel, then switch to decay mode. e.g. Final Fantasy II.
+ /* Hack for ROMs that use a very short attack rate, key on a
+ channel, then switch to decay mode. e.g. Final Fantasy II. */
if(attack_rate == 1)
attack_rate = 0;
@@ -322,7 +322,7 @@ void S9xSetEnvelopeHeight(int32_t channel, int32_t level)
S9xAPUSetEndOfSample(channel, ch);
}
-void S9xSetSoundFrequency(int32_t channel, int32_t hertz) // hertz [0~64K<<1]
+void S9xSetSoundFrequency(int32_t channel, int32_t hertz) /* hertz [0~64K<<1] */
{
if (SoundData.channels[channel].type == SOUND_NOISE)
hertz = NoiseFreq [APU.DSP [APU_FLG] & 0x1f];
@@ -686,7 +686,7 @@ static inline void MixStereo(int32_t sample_count)
}
else
{
- // Snes9x 1.53's SPC_DSP.cpp, by blargg
+ /* Snes9x 1.53's SPC_DSP.cpp, by blargg */
int32_t feedback = (so.noise_gen << 13) ^ (so.noise_gen << 14);
so.noise_gen = (feedback & 0x4000) ^ (so.noise_gen >> 1);
ch->sample = (so.noise_gen << 17) >> 17;
@@ -738,10 +738,10 @@ void S9xMixSamples(int16_t* buffer, int32_t sample_count)
/* Mix and convert waveforms */
if (SoundData.echo_enable && SoundData.echo_buffer_size)
{
- // 16-bit stereo sound with echo enabled ...
+ /* 16-bit stereo sound with echo enabled ... */
if (FilterTapDefinitionBitfield == 0)
{
- // ... but no filter defined.
+ /* ... but no filter defined. */
for (J = 0; J < sample_count; J++)
{
int32_t E = Echo [SoundData.echo_ptr];
@@ -757,7 +757,7 @@ void S9xMixSamples(int16_t* buffer, int32_t sample_count)
}
else
{
- // ... with filter defined.
+ /* ... with filter defined. */
for (J = 0; J < sample_count; J++)
{
Loop [(Z - 0) & 15] = Echo [SoundData.echo_ptr];
@@ -785,7 +785,7 @@ void S9xMixSamples(int16_t* buffer, int32_t sample_count)
}
else
{
- // 16-bit mono or stereo sound, no echo
+ /* 16-bit mono or stereo sound, no echo */
for (J = 0; J < sample_count; J++)
{
I = (MixBuffer[J] * SoundData.master_volume [J & 1]) / VOL_DIV16;
@@ -821,7 +821,7 @@ void S9xResetSound(bool full)
SoundData.channels[i].sustain_rate = 0;
SoundData.channels[i].release_rate = 0;
SoundData.channels[i].sustain_level = 0;
- // notaz
+ /* notaz */
SoundData.channels[i].env_ind_attack = 0;
SoundData.channels[i].env_ind_decay = 0;
SoundData.channels[i].env_ind_sustain = 0;
@@ -862,9 +862,9 @@ void S9xSetPlaybackRate(uint32_t playback_rate)
if (playback_rate)
{
- // notaz: calculate a value (let's call it freqbase) to simplify channel freq calculations later.
+ /* notaz: calculate a value (let's call it freqbase) to simplify channel freq calculations later. */
so.freqbase = (FIXED_POINT << 11) / (playback_rate * 33 / 32);
- // now precalculate env rates for S9xSetEnvRate
+ /* now precalculate env rates for S9xSetEnvRate */
static int32_t steps [] =
{
0, 64, 619, 619, 128, 1, 64, 55, 64, 619
diff --git a/source/spc700.c b/source/spc700.c
index fed54ff..eaf5467 100644
--- a/source/spc700.c
+++ b/source/spc700.c
@@ -197,7 +197,7 @@ uint32_t Work32 = 0;
IAPU.Registers.YA.B.Y;
#endif
-void Apu00(void) // NOP
+void Apu00(void) /* NOP */
{
IAPU.PC++;
}
@@ -282,15 +282,15 @@ void ApuF1(void)
TCALL(15);
}
-void Apu3F(void) // CALL absolute
+void Apu3F(void) /* CALL absolute */
{
Absolute();
- // 0xB6f for Star Fox 2
+ /* 0xB6f for Star Fox 2 */
PushW(IAPU.PC + 3 - IAPU.RAM);
IAPU.PC = IAPU.RAM + IAPU.Address;
}
-void Apu4F(void) // PCALL $XX
+void Apu4F(void) /* PCALL $XX */
{
Work8 = OP1;
PushW(IAPU.PC + 2 - IAPU.RAM);
@@ -489,7 +489,7 @@ void ApuF3(void)
void Apu04(void)
{
- // OR A,dp
+ /* OR A,dp */
IAPU.Registers.YA.B.A |= S9xAPUGetByteZ(OP1);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -497,7 +497,7 @@ void Apu04(void)
void Apu05(void)
{
- // OR A,abs
+ /* OR A,abs */
Absolute();
IAPU.Registers.YA.B.A |= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -506,7 +506,7 @@ void Apu05(void)
void Apu06(void)
{
- // OR A,(X)
+ /* OR A,(X) */
IAPU.Registers.YA.B.A |= S9xAPUGetByteZ(IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -514,7 +514,7 @@ void Apu06(void)
void Apu07(void)
{
- // OR A,(dp+X)
+ /* OR A,(dp+X) */
IndexedXIndirect();
IAPU.Registers.YA.B.A |= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -523,7 +523,7 @@ void Apu07(void)
void Apu08(void)
{
- // OR A,#00
+ /* OR A,#00 */
IAPU.Registers.YA.B.A |= OP1;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -531,7 +531,7 @@ void Apu08(void)
void Apu09(void)
{
- // OR dp(dest),dp(src)
+ /* OR dp(dest),dp(src) */
Work8 = S9xAPUGetByteZ(OP1);
Work8 |= S9xAPUGetByteZ(OP2);
S9xAPUSetByteZ(Work8, OP2);
@@ -541,7 +541,7 @@ void Apu09(void)
void Apu14(void)
{
- // OR A,dp+X
+ /* OR A,dp+X */
IAPU.Registers.YA.B.A |= S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -549,7 +549,7 @@ void Apu14(void)
void Apu15(void)
{
- // OR A,abs+X
+ /* OR A,abs+X */
AbsoluteX();
IAPU.Registers.YA.B.A |= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -558,7 +558,7 @@ void Apu15(void)
void Apu16(void)
{
- // OR A,abs+Y
+ /* OR A,abs+Y */
AbsoluteY();
IAPU.Registers.YA.B.A |= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -567,7 +567,7 @@ void Apu16(void)
void Apu17(void)
{
- // OR A,(dp)+Y
+ /* OR A,(dp)+Y */
IndirectIndexedY();
IAPU.Registers.YA.B.A |= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -576,7 +576,7 @@ void Apu17(void)
void Apu18(void)
{
- // OR dp,#00
+ /* OR dp,#00 */
Work8 = OP1;
Work8 |= S9xAPUGetByteZ(OP2);
S9xAPUSetByteZ(Work8, OP2);
@@ -586,7 +586,7 @@ void Apu18(void)
void Apu19(void)
{
- // OR (X),(Y)
+ /* OR (X),(Y) */
Work8 = S9xAPUGetByteZ(IAPU.Registers.X) | S9xAPUGetByteZ(IAPU.Registers.YA.B.Y);
APUSetZN8(Work8);
S9xAPUSetByteZ(Work8, IAPU.Registers.X);
@@ -595,7 +595,7 @@ void Apu19(void)
void Apu0A(void)
{
- // OR1 C,membit
+ /* OR1 C,membit */
MemBit();
if (!APUCheckCarry())
if (S9xAPUGetByte(IAPU.Address) & (1 << IAPU.Bit))
@@ -605,7 +605,7 @@ void Apu0A(void)
void Apu2A(void)
{
- // OR1 C,not membit
+ /* OR1 C,not membit */
MemBit();
if (!APUCheckCarry())
if (!(S9xAPUGetByte(IAPU.Address) & (1 << IAPU.Bit)))
@@ -615,7 +615,7 @@ void Apu2A(void)
void Apu4A(void)
{
- // AND1 C,membit
+ /* AND1 C,membit */
MemBit();
if (APUCheckCarry())
if (!(S9xAPUGetByte(IAPU.Address) & (1 << IAPU.Bit)))
@@ -625,7 +625,7 @@ void Apu4A(void)
void Apu6A(void)
{
- // AND1 C, not membit
+ /* AND1 C, not membit */
MemBit();
if (APUCheckCarry())
if ((S9xAPUGetByte(IAPU.Address) & (1 << IAPU.Bit)))
@@ -635,7 +635,7 @@ void Apu6A(void)
void Apu8A(void)
{
- // EOR1 C, membit
+ /* EOR1 C, membit */
MemBit();
if (S9xAPUGetByte(IAPU.Address) & (1 << IAPU.Bit))
{
@@ -649,7 +649,7 @@ void Apu8A(void)
void ApuAA(void)
{
- // MOV1 C,membit
+ /* MOV1 C,membit */
MemBit();
if (S9xAPUGetByte(IAPU.Address) & (1 << IAPU.Bit))
APUSetCarry();
@@ -660,7 +660,7 @@ void ApuAA(void)
void ApuCA(void)
{
- // MOV1 membit,C
+ /* MOV1 membit,C */
MemBit();
if (APUCheckCarry())
S9xAPUSetByte(S9xAPUGetByte(IAPU.Address) | (1 << IAPU.Bit), IAPU.Address);
@@ -671,7 +671,7 @@ void ApuCA(void)
void ApuEA(void)
{
- // NOT1 membit
+ /* NOT1 membit */
MemBit();
S9xAPUSetByte(S9xAPUGetByte(IAPU.Address) ^ (1 << IAPU.Bit), IAPU.Address);
IAPU.PC += 3;
@@ -679,7 +679,7 @@ void ApuEA(void)
void Apu0B(void)
{
- // ASL dp
+ /* ASL dp */
Work8 = S9xAPUGetByteZ(OP1);
ASL(Work8);
S9xAPUSetByteZ(Work8, OP1);
@@ -688,7 +688,7 @@ void Apu0B(void)
void Apu0C(void)
{
- // ASL abs
+ /* ASL abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
ASL(Work8);
@@ -698,7 +698,7 @@ void Apu0C(void)
void Apu1B(void)
{
- // ASL dp+X
+ /* ASL dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
ASL(Work8);
S9xAPUSetByteZ(Work8, OP1 + IAPU.Registers.X);
@@ -707,14 +707,14 @@ void Apu1B(void)
void Apu1C(void)
{
- // ASL A
+ /* ASL A */
ASL(IAPU.Registers.YA.B.A);
IAPU.PC++;
}
void Apu0D(void)
{
- // PUSH PSW
+ /* PUSH PSW */
S9xAPUPackStatus();
Push(IAPU.Registers.P);
IAPU.PC++;
@@ -722,28 +722,28 @@ void Apu0D(void)
void Apu2D(void)
{
- // PUSH A
+ /* PUSH A */
Push(IAPU.Registers.YA.B.A);
IAPU.PC++;
}
void Apu4D(void)
{
- // PUSH X
+ /* PUSH X */
Push(IAPU.Registers.X);
IAPU.PC++;
}
void Apu6D(void)
{
- // PUSH Y
+ /* PUSH Y */
Push(IAPU.Registers.YA.B.Y);
IAPU.PC++;
}
void Apu8E(void)
{
- // POP PSW
+ /* POP PSW */
Pop(IAPU.Registers.P);
S9xAPUUnpackStatus();
if (APUCheckDirectPage())
@@ -755,28 +755,28 @@ void Apu8E(void)
void ApuAE(void)
{
- // POP A
+ /* POP A */
Pop(IAPU.Registers.YA.B.A);
IAPU.PC++;
}
void ApuCE(void)
{
- // POP X
+ /* POP X */
Pop(IAPU.Registers.X);
IAPU.PC++;
}
void ApuEE(void)
{
- // POP Y
+ /* POP Y */
Pop(IAPU.Registers.YA.B.Y);
IAPU.PC++;
}
void Apu0E(void)
{
- // TSET1 abs
+ /* TSET1 abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
S9xAPUSetByte(Work8 | IAPU.Registers.YA.B.A, IAPU.Address);
@@ -787,7 +787,7 @@ void Apu0E(void)
void Apu4E(void)
{
- // TCLR1 abs
+ /* TCLR1 abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
S9xAPUSetByte(Work8 & ~IAPU.Registers.YA.B.A, IAPU.Address);
@@ -798,7 +798,7 @@ void Apu4E(void)
void Apu0F(void)
{
- // BRK
+ /* BRK */
PushW(IAPU.PC + 1 - IAPU.RAM);
S9xAPUPackStatus();
Push(IAPU.Registers.P);
@@ -809,22 +809,22 @@ void Apu0F(void)
void ApuEF(void)
{
- // SLEEP
+ /* SLEEP */
APU.TimerEnabled[0] = APU.TimerEnabled[1] = APU.TimerEnabled[2] = false;
IAPU.APUExecuting = false;
}
void ApuFF(void)
{
- // STOP
+ /* STOP */
APU.TimerEnabled[0] = APU.TimerEnabled[1] = APU.TimerEnabled[2] = false;
IAPU.APUExecuting = false;
- Settings.APUEnabled = false; // re-enabled on next APU reset
+ Settings.APUEnabled = false; /* re-enabled on next APU reset */
}
void Apu10(void)
{
- // BPL
+ /* BPL */
Relative();
if (!APUCheckNegative())
{
@@ -838,7 +838,7 @@ void Apu10(void)
void Apu30(void)
{
- // BMI
+ /* BMI */
Relative();
if (APUCheckNegative())
{
@@ -852,7 +852,7 @@ void Apu30(void)
void Apu90(void)
{
- // BCC
+ /* BCC */
Relative();
if (!APUCheckCarry())
{
@@ -866,7 +866,7 @@ void Apu90(void)
void ApuB0(void)
{
- // BCS
+ /* BCS */
Relative();
if (APUCheckCarry())
{
@@ -880,7 +880,7 @@ void ApuB0(void)
void ApuD0(void)
{
- // BNE
+ /* BNE */
Relative();
if (!APUCheckZero())
{
@@ -894,7 +894,7 @@ void ApuD0(void)
void ApuF0(void)
{
- // BEQ
+ /* BEQ */
Relative();
if (APUCheckZero())
{
@@ -908,7 +908,7 @@ void ApuF0(void)
void Apu50(void)
{
- // BVC
+ /* BVC */
Relative();
if (!APUCheckOverflow())
{
@@ -921,7 +921,7 @@ void Apu50(void)
void Apu70(void)
{
- // BVS
+ /* BVS */
Relative();
if (APUCheckOverflow())
{
@@ -934,28 +934,28 @@ void Apu70(void)
void Apu2F(void)
{
- // BRA
+ /* BRA */
Relative();
IAPU.PC = IAPU.RAM + (uint16_t) Int16;
}
void Apu80(void)
{
- // SETC
+ /* SETC */
APUSetCarry();
IAPU.PC++;
}
void ApuED(void)
{
- // NOTC
+ /* NOTC */
IAPU._Carry ^= 1;
IAPU.PC++;
}
void Apu40(void)
{
- // SETP
+ /* SETP */
APUSetDirectPage();
IAPU.DirectPage = IAPU.RAM + 0x100;
IAPU.PC++;
@@ -963,7 +963,7 @@ void Apu40(void)
void Apu1A(void)
{
- // DECW dp
+ /* DECW dp */
Work16 = S9xAPUGetByteZ(OP1) + (S9xAPUGetByteZ(OP1 + 1) << 8) - 1;
S9xAPUSetByteZ((uint8_t) Work16, OP1);
S9xAPUSetByteZ(Work16 >> 8, OP1 + 1);
@@ -973,7 +973,7 @@ void Apu1A(void)
void Apu5A(void)
{
- // CMPW YA,dp
+ /* CMPW YA,dp */
Work16 = S9xAPUGetByteZ(OP1) + (S9xAPUGetByteZ(OP1 + 1) << 8);
Int32 = (int32_t) IAPU.Registers.YA.W - (int32_t) Work16;
IAPU._Carry = Int32 >= 0;
@@ -983,7 +983,7 @@ void Apu5A(void)
void Apu3A(void)
{
- // INCW dp
+ /* INCW dp */
Work16 = S9xAPUGetByteZ(OP1) + (S9xAPUGetByteZ(OP1 + 1) << 8) + 1;
S9xAPUSetByteZ((uint8_t) Work16, OP1);
S9xAPUSetByteZ(Work16 >> 8, OP1 + 1);
@@ -993,7 +993,7 @@ void Apu3A(void)
void Apu7A(void)
{
- // ADDW YA,dp
+ /* ADDW YA,dp */
Work16 = S9xAPUGetByteZ(OP1) + (S9xAPUGetByteZ(OP1 + 1) << 8);
Work32 = (uint32_t) IAPU.Registers.YA.W + Work16;
IAPU._Carry = Work32 >= 0x10000;
@@ -1011,7 +1011,7 @@ void Apu7A(void)
void Apu9A(void)
{
- // SUBW YA,dp
+ /* SUBW YA,dp */
Work16 = S9xAPUGetByteZ(OP1) + (S9xAPUGetByteZ(OP1 + 1) << 8);
Int32 = (int32_t) IAPU.Registers.YA.W - (int32_t) Work16;
APUClearHalfCarry();
@@ -1030,7 +1030,7 @@ void Apu9A(void)
void ApuBA(void)
{
- // MOVW YA,dp
+ /* MOVW YA,dp */
IAPU.Registers.YA.B.A = S9xAPUGetByteZ(OP1);
IAPU.Registers.YA.B.Y = S9xAPUGetByteZ(OP1 + 1);
APUSetZN16(IAPU.Registers.YA.W);
@@ -1039,7 +1039,7 @@ void ApuBA(void)
void ApuDA(void)
{
- // MOVW dp,YA
+ /* MOVW dp,YA */
S9xAPUSetByteZ(IAPU.Registers.YA.B.A, OP1);
S9xAPUSetByteZ(IAPU.Registers.YA.B.Y, OP1 + 1);
IAPU.PC += 2;
@@ -1047,7 +1047,7 @@ void ApuDA(void)
void Apu64(void)
{
- // CMP A,dp
+ /* CMP A,dp */
Work8 = S9xAPUGetByteZ(OP1);
CMP(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -1055,7 +1055,7 @@ void Apu64(void)
void Apu65(void)
{
- // CMP A,abs
+ /* CMP A,abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
CMP(IAPU.Registers.YA.B.A, Work8);
@@ -1064,7 +1064,7 @@ void Apu65(void)
void Apu66(void)
{
- // CMP A,(X)
+ /* CMP A,(X) */
Work8 = S9xAPUGetByteZ(IAPU.Registers.X);
CMP(IAPU.Registers.YA.B.A, Work8);
IAPU.PC++;
@@ -1072,7 +1072,7 @@ void Apu66(void)
void Apu67(void)
{
- // CMP A,(dp+X)
+ /* CMP A,(dp+X) */
IndexedXIndirect();
Work8 = S9xAPUGetByte(IAPU.Address);
CMP(IAPU.Registers.YA.B.A, Work8);
@@ -1081,7 +1081,7 @@ void Apu67(void)
void Apu68(void)
{
- // CMP A,#00
+ /* CMP A,#00 */
Work8 = OP1;
CMP(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -1089,7 +1089,7 @@ void Apu68(void)
void Apu69(void)
{
- // CMP dp(dest), dp(src)
+ /* CMP dp(dest), dp(src) */
W1 = S9xAPUGetByteZ(OP1);
Work8 = S9xAPUGetByteZ(OP2);
CMP(Work8, W1);
@@ -1098,7 +1098,7 @@ void Apu69(void)
void Apu74(void)
{
- // CMP A, dp+X
+ /* CMP A, dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
CMP(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -1106,7 +1106,7 @@ void Apu74(void)
void Apu75(void)
{
- // CMP A,abs+X
+ /* CMP A,abs+X */
AbsoluteX();
Work8 = S9xAPUGetByte(IAPU.Address);
CMP(IAPU.Registers.YA.B.A, Work8);
@@ -1115,7 +1115,7 @@ void Apu75(void)
void Apu76(void)
{
- // CMP A, abs+Y
+ /* CMP A, abs+Y */
AbsoluteY();
Work8 = S9xAPUGetByte(IAPU.Address);
CMP(IAPU.Registers.YA.B.A, Work8);
@@ -1124,7 +1124,7 @@ void Apu76(void)
void Apu77(void)
{
- // CMP A,(dp)+Y
+ /* CMP A,(dp)+Y */
IndirectIndexedY();
Work8 = S9xAPUGetByte(IAPU.Address);
CMP(IAPU.Registers.YA.B.A, Work8);
@@ -1133,7 +1133,7 @@ void Apu77(void)
void Apu78(void)
{
- // CMP dp,#00
+ /* CMP dp,#00 */
Work8 = OP1;
W1 = S9xAPUGetByteZ(OP2);
CMP(W1, Work8);
@@ -1142,7 +1142,7 @@ void Apu78(void)
void Apu79(void)
{
- // CMP (X),(Y)
+ /* CMP (X),(Y) */
W1 = S9xAPUGetByteZ(IAPU.Registers.X);
Work8 = S9xAPUGetByteZ(IAPU.Registers.YA.B.Y);
CMP(W1, Work8);
@@ -1151,7 +1151,7 @@ void Apu79(void)
void Apu1E(void)
{
- // CMP X,abs
+ /* CMP X,abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
CMP(IAPU.Registers.X, Work8);
@@ -1160,7 +1160,7 @@ void Apu1E(void)
void Apu3E(void)
{
- // CMP X,dp
+ /* CMP X,dp */
Work8 = S9xAPUGetByteZ(OP1);
CMP(IAPU.Registers.X, Work8);
IAPU.PC += 2;
@@ -1168,14 +1168,14 @@ void Apu3E(void)
void ApuC8(void)
{
- // CMP X,#00
+ /* CMP X,#00 */
CMP(IAPU.Registers.X, OP1);
IAPU.PC += 2;
}
void Apu5E(void)
{
- // CMP Y,abs
+ /* CMP Y,abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
CMP(IAPU.Registers.YA.B.Y, Work8);
@@ -1184,7 +1184,7 @@ void Apu5E(void)
void Apu7E(void)
{
- // CMP Y,dp
+ /* CMP Y,dp */
Work8 = S9xAPUGetByteZ(OP1);
CMP(IAPU.Registers.YA.B.Y, Work8);
IAPU.PC += 2;
@@ -1192,7 +1192,7 @@ void Apu7E(void)
void ApuAD(void)
{
- // CMP Y,#00
+ /* CMP Y,#00 */
Work8 = OP1;
CMP(IAPU.Registers.YA.B.Y, Work8);
IAPU.PC += 2;
@@ -1200,21 +1200,21 @@ void ApuAD(void)
void Apu1F(void)
{
- // JMP (abs+X)
+ /* JMP (abs+X) */
Absolute();
IAPU.PC = IAPU.RAM + S9xAPUGetByte(IAPU.Address + IAPU.Registers.X) + (S9xAPUGetByte(IAPU.Address + IAPU.Registers.X + 1) << 8);
}
void Apu5F(void)
{
- // JMP abs
+ /* JMP abs */
Absolute();
IAPU.PC = IAPU.RAM + IAPU.Address;
}
void Apu20(void)
{
- // CLRP
+ /* CLRP */
APUClearDirectPage();
IAPU.DirectPage = IAPU.RAM;
IAPU.PC++;
@@ -1222,14 +1222,14 @@ void Apu20(void)
void Apu60(void)
{
- // CLRC
+ /* CLRC */
APUClearCarry();
IAPU.PC++;
}
void ApuE0(void)
{
- // CLRV
+ /* CLRV */
APUClearHalfCarry();
APUClearOverflow();
IAPU.PC++;
@@ -1237,7 +1237,7 @@ void ApuE0(void)
void Apu24(void)
{
- // AND A,dp
+ /* AND A,dp */
IAPU.Registers.YA.B.A &= S9xAPUGetByteZ(OP1);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -1245,7 +1245,7 @@ void Apu24(void)
void Apu25(void)
{
- // AND A,abs
+ /* AND A,abs */
Absolute();
IAPU.Registers.YA.B.A &= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1254,7 +1254,7 @@ void Apu25(void)
void Apu26(void)
{
- // AND A,(X)
+ /* AND A,(X) */
IAPU.Registers.YA.B.A &= S9xAPUGetByteZ(IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -1262,7 +1262,7 @@ void Apu26(void)
void Apu27(void)
{
- // AND A,(dp+X)
+ /* AND A,(dp+X) */
IndexedXIndirect();
IAPU.Registers.YA.B.A &= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1271,7 +1271,7 @@ void Apu27(void)
void Apu28(void)
{
- // AND A,#00
+ /* AND A,#00 */
IAPU.Registers.YA.B.A &= OP1;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -1279,7 +1279,7 @@ void Apu28(void)
void Apu29(void)
{
- // AND dp(dest),dp(src)
+ /* AND dp(dest),dp(src) */
Work8 = S9xAPUGetByteZ(OP1);
Work8 &= S9xAPUGetByteZ(OP2);
S9xAPUSetByteZ(Work8, OP2);
@@ -1289,7 +1289,7 @@ void Apu29(void)
void Apu34(void)
{
- // AND A,dp+X
+ /* AND A,dp+X */
IAPU.Registers.YA.B.A &= S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -1297,7 +1297,7 @@ void Apu34(void)
void Apu35(void)
{
- // AND A,abs+X
+ /* AND A,abs+X */
AbsoluteX();
IAPU.Registers.YA.B.A &= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1306,7 +1306,7 @@ void Apu35(void)
void Apu36(void)
{
- // AND A,abs+Y
+ /* AND A,abs+Y */
AbsoluteY();
IAPU.Registers.YA.B.A &= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1315,7 +1315,7 @@ void Apu36(void)
void Apu37(void)
{
- // AND A,(dp)+Y
+ /* AND A,(dp)+Y */
IndirectIndexedY();
IAPU.Registers.YA.B.A &= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1324,7 +1324,7 @@ void Apu37(void)
void Apu38(void)
{
- // AND dp,#00
+ /* AND dp,#00 */
Work8 = OP1;
Work8 &= S9xAPUGetByteZ(OP2);
S9xAPUSetByteZ(Work8, OP2);
@@ -1334,7 +1334,7 @@ void Apu38(void)
void Apu39(void)
{
- // AND (X),(Y)
+ /* AND (X),(Y) */
Work8 = S9xAPUGetByteZ(IAPU.Registers.X) & S9xAPUGetByteZ(IAPU.Registers.YA.B.Y);
APUSetZN8(Work8);
S9xAPUSetByteZ(Work8, IAPU.Registers.X);
@@ -1343,7 +1343,7 @@ void Apu39(void)
void Apu2B(void)
{
- // ROL dp
+ /* ROL dp */
Work8 = S9xAPUGetByteZ(OP1);
ROL(Work8);
S9xAPUSetByteZ(Work8, OP1);
@@ -1352,7 +1352,7 @@ void Apu2B(void)
void Apu2C(void)
{
- // ROL abs
+ /* ROL abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
ROL(Work8);
@@ -1362,7 +1362,7 @@ void Apu2C(void)
void Apu3B(void)
{
- // ROL dp+X
+ /* ROL dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
ROL(Work8);
S9xAPUSetByteZ(Work8, OP1 + IAPU.Registers.X);
@@ -1371,14 +1371,14 @@ void Apu3B(void)
void Apu3C(void)
{
- // ROL A
+ /* ROL A */
ROL(IAPU.Registers.YA.B.A);
IAPU.PC++;
}
void Apu2E(void)
{
- // CBNE dp,rel
+ /* CBNE dp,rel */
Work8 = OP1;
Relative2();
@@ -1394,7 +1394,7 @@ void Apu2E(void)
void ApuDE(void)
{
- // CBNE dp+X,rel
+ /* CBNE dp+X,rel */
Work8 = OP1 + IAPU.Registers.X;
Relative2();
@@ -1410,7 +1410,7 @@ void ApuDE(void)
void Apu3D(void)
{
- // INC X
+ /* INC X */
IAPU.Registers.X++;
APUSetZN8(IAPU.Registers.X);
IAPU.WaitCounter++;
@@ -1419,7 +1419,7 @@ void Apu3D(void)
void ApuFC(void)
{
- // INC Y
+ /* INC Y */
IAPU.Registers.YA.B.Y++;
APUSetZN8(IAPU.Registers.YA.B.Y);
IAPU.WaitCounter++;
@@ -1428,7 +1428,7 @@ void ApuFC(void)
void Apu1D(void)
{
- // DEC X
+ /* DEC X */
IAPU.Registers.X--;
APUSetZN8(IAPU.Registers.X);
IAPU.WaitCounter++;
@@ -1437,7 +1437,7 @@ void Apu1D(void)
void ApuDC(void)
{
- // DEC Y
+ /* DEC Y */
IAPU.Registers.YA.B.Y--;
APUSetZN8(IAPU.Registers.YA.B.Y);
IAPU.WaitCounter++;
@@ -1446,7 +1446,7 @@ void ApuDC(void)
void ApuAB(void)
{
- // INC dp
+ /* INC dp */
Work8 = S9xAPUGetByteZ(OP1) + 1;
S9xAPUSetByteZ(Work8, OP1);
APUSetZN8(Work8);
@@ -1456,7 +1456,7 @@ void ApuAB(void)
void ApuAC(void)
{
- // INC abs
+ /* INC abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address) + 1;
S9xAPUSetByte(Work8, IAPU.Address);
@@ -1467,7 +1467,7 @@ void ApuAC(void)
void ApuBB(void)
{
- // INC dp+X
+ /* INC dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X) + 1;
S9xAPUSetByteZ(Work8, OP1 + IAPU.Registers.X);
APUSetZN8(Work8);
@@ -1477,7 +1477,7 @@ void ApuBB(void)
void ApuBC(void)
{
- // INC A
+ /* INC A */
IAPU.Registers.YA.B.A++;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.WaitCounter++;
@@ -1486,7 +1486,7 @@ void ApuBC(void)
void Apu8B(void)
{
- // DEC dp
+ /* DEC dp */
Work8 = S9xAPUGetByteZ(OP1) - 1;
S9xAPUSetByteZ(Work8, OP1);
APUSetZN8(Work8);
@@ -1496,7 +1496,7 @@ void Apu8B(void)
void Apu8C(void)
{
- // DEC abs
+ /* DEC abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address) - 1;
S9xAPUSetByte(Work8, IAPU.Address);
@@ -1507,7 +1507,7 @@ void Apu8C(void)
void Apu9B(void)
{
- // DEC dp+X
+ /* DEC dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X) - 1;
S9xAPUSetByteZ(Work8, OP1 + IAPU.Registers.X);
APUSetZN8(Work8);
@@ -1517,7 +1517,7 @@ void Apu9B(void)
void Apu9C(void)
{
- // DEC A
+ /* DEC A */
IAPU.Registers.YA.B.A--;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.WaitCounter++;
@@ -1526,7 +1526,7 @@ void Apu9C(void)
void Apu44(void)
{
- // EOR A,dp
+ /* EOR A,dp */
IAPU.Registers.YA.B.A ^= S9xAPUGetByteZ(OP1);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -1534,7 +1534,7 @@ void Apu44(void)
void Apu45(void)
{
- // EOR A,abs
+ /* EOR A,abs */
Absolute();
IAPU.Registers.YA.B.A ^= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1543,7 +1543,7 @@ void Apu45(void)
void Apu46(void)
{
- // EOR A,(X)
+ /* EOR A,(X) */
IAPU.Registers.YA.B.A ^= S9xAPUGetByteZ(IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -1551,7 +1551,7 @@ void Apu46(void)
void Apu47(void)
{
- // EOR A,(dp+X)
+ /* EOR A,(dp+X) */
IndexedXIndirect();
IAPU.Registers.YA.B.A ^= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1560,7 +1560,7 @@ void Apu47(void)
void Apu48(void)
{
- // EOR A,#00
+ /* EOR A,#00 */
IAPU.Registers.YA.B.A ^= OP1;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -1568,7 +1568,7 @@ void Apu48(void)
void Apu49(void)
{
- // EOR dp(dest),dp(src)
+ /* EOR dp(dest),dp(src) */
Work8 = S9xAPUGetByteZ(OP1);
Work8 ^= S9xAPUGetByteZ(OP2);
S9xAPUSetByteZ(Work8, OP2);
@@ -1578,7 +1578,7 @@ void Apu49(void)
void Apu54(void)
{
- // EOR A,dp+X
+ /* EOR A,dp+X */
IAPU.Registers.YA.B.A ^= S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -1586,7 +1586,7 @@ void Apu54(void)
void Apu55(void)
{
- // EOR A,abs+X
+ /* EOR A,abs+X */
AbsoluteX();
IAPU.Registers.YA.B.A ^= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1595,7 +1595,7 @@ void Apu55(void)
void Apu56(void)
{
- // EOR A,abs+Y
+ /* EOR A,abs+Y */
AbsoluteY();
IAPU.Registers.YA.B.A ^= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1604,7 +1604,7 @@ void Apu56(void)
void Apu57(void)
{
- // EOR A,(dp)+Y
+ /* EOR A,(dp)+Y */
IndirectIndexedY();
IAPU.Registers.YA.B.A ^= S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -1613,7 +1613,7 @@ void Apu57(void)
void Apu58(void)
{
- // EOR dp,#00
+ /* EOR dp,#00 */
Work8 = OP1;
Work8 ^= S9xAPUGetByteZ(OP2);
S9xAPUSetByteZ(Work8, OP2);
@@ -1623,7 +1623,7 @@ void Apu58(void)
void Apu59(void)
{
- // EOR (X),(Y)
+ /* EOR (X),(Y) */
Work8 = S9xAPUGetByteZ(IAPU.Registers.X) ^ S9xAPUGetByteZ(IAPU.Registers.YA.B.Y);
APUSetZN8(Work8);
S9xAPUSetByteZ(Work8, IAPU.Registers.X);
@@ -1632,7 +1632,7 @@ void Apu59(void)
void Apu4B(void)
{
- // LSR dp
+ /* LSR dp */
Work8 = S9xAPUGetByteZ(OP1);
LSR(Work8);
S9xAPUSetByteZ(Work8, OP1);
@@ -1641,7 +1641,7 @@ void Apu4B(void)
void Apu4C(void)
{
- // LSR abs
+ /* LSR abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
LSR(Work8);
@@ -1651,7 +1651,7 @@ void Apu4C(void)
void Apu5B(void)
{
- // LSR dp+X
+ /* LSR dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
LSR(Work8);
S9xAPUSetByteZ(Work8, OP1 + IAPU.Registers.X);
@@ -1660,14 +1660,14 @@ void Apu5B(void)
void Apu5C(void)
{
- // LSR A
+ /* LSR A */
LSR(IAPU.Registers.YA.B.A);
IAPU.PC++;
}
void Apu7D(void)
{
- // MOV A,X
+ /* MOV A,X */
IAPU.Registers.YA.B.A = IAPU.Registers.X;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -1675,7 +1675,7 @@ void Apu7D(void)
void ApuDD(void)
{
- // MOV A,Y
+ /* MOV A,Y */
IAPU.Registers.YA.B.A = IAPU.Registers.YA.B.Y;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -1683,7 +1683,7 @@ void ApuDD(void)
void Apu5D(void)
{
- // MOV X,A
+ /* MOV X,A */
IAPU.Registers.X = IAPU.Registers.YA.B.A;
APUSetZN8(IAPU.Registers.X);
IAPU.PC++;
@@ -1691,7 +1691,7 @@ void Apu5D(void)
void ApuFD(void)
{
- // MOV Y,A
+ /* MOV Y,A */
IAPU.Registers.YA.B.Y = IAPU.Registers.YA.B.A;
APUSetZN8(IAPU.Registers.YA.B.Y);
IAPU.PC++;
@@ -1699,7 +1699,7 @@ void ApuFD(void)
void Apu9D(void)
{
- //MOV X,SP
+ /* MOV X,SP */
IAPU.Registers.X = IAPU.Registers.S;
APUSetZN8(IAPU.Registers.X);
IAPU.PC++;
@@ -1707,14 +1707,14 @@ void Apu9D(void)
void ApuBD(void)
{
- // MOV SP,X
+ /* MOV SP,X */
IAPU.Registers.S = IAPU.Registers.X;
IAPU.PC++;
}
void Apu6B(void)
{
- // ROR dp
+ /* ROR dp */
Work8 = S9xAPUGetByteZ(OP1);
ROR(Work8);
S9xAPUSetByteZ(Work8, OP1);
@@ -1723,7 +1723,7 @@ void Apu6B(void)
void Apu6C(void)
{
- // ROR abs
+ /* ROR abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
ROR(Work8);
@@ -1733,7 +1733,7 @@ void Apu6C(void)
void Apu7B(void)
{
- // ROR dp+X
+ /* ROR dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
ROR(Work8);
S9xAPUSetByteZ(Work8, OP1 + IAPU.Registers.X);
@@ -1742,14 +1742,14 @@ void Apu7B(void)
void Apu7C(void)
{
- // ROR A
+ /* ROR A */
ROR(IAPU.Registers.YA.B.A);
IAPU.PC++;
}
void Apu6E(void)
{
- // DBNZ dp,rel
+ /* DBNZ dp,rel */
Work8 = OP1;
Relative2();
W1 = S9xAPUGetByteZ(Work8) - 1;
@@ -1765,7 +1765,7 @@ void Apu6E(void)
void ApuFE(void)
{
- // DBNZ Y,rel
+ /* DBNZ Y,rel */
Relative();
IAPU.Registers.YA.B.Y--;
if (IAPU.Registers.YA.B.Y != 0)
@@ -1779,14 +1779,14 @@ void ApuFE(void)
void Apu6F(void)
{
- // RET
+ /* RET */
PopW(IAPU.Registers.PC);
IAPU.PC = IAPU.RAM + IAPU.Registers.PC;
}
void Apu7F(void)
{
- // RETI
+ /* RETI */
Pop(IAPU.Registers.P);
S9xAPUUnpackStatus();
PopW(IAPU.Registers.PC);
@@ -1795,7 +1795,7 @@ void Apu7F(void)
void Apu84(void)
{
- // ADC A,dp
+ /* ADC A,dp */
Work8 = S9xAPUGetByteZ(OP1);
ADC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -1803,7 +1803,7 @@ void Apu84(void)
void Apu85(void)
{
- // ADC A, abs
+ /* ADC A, abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
ADC(IAPU.Registers.YA.B.A, Work8);
@@ -1812,7 +1812,7 @@ void Apu85(void)
void Apu86(void)
{
- // ADC A,(X)
+ /* ADC A,(X) */
Work8 = S9xAPUGetByteZ(IAPU.Registers.X);
ADC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC++;
@@ -1820,7 +1820,7 @@ void Apu86(void)
void Apu87(void)
{
- // ADC A,(dp+X)
+ /* ADC A,(dp+X) */
IndexedXIndirect();
Work8 = S9xAPUGetByte(IAPU.Address);
ADC(IAPU.Registers.YA.B.A, Work8);
@@ -1829,7 +1829,7 @@ void Apu87(void)
void Apu88(void)
{
- // ADC A,#00
+ /* ADC A,#00 */
Work8 = OP1;
ADC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -1837,7 +1837,7 @@ void Apu88(void)
void Apu89(void)
{
- // ADC dp(dest),dp(src)
+ /* ADC dp(dest),dp(src) */
Work8 = S9xAPUGetByteZ(OP1);
W1 = S9xAPUGetByteZ(OP2);
ADC(W1, Work8);
@@ -1847,7 +1847,7 @@ void Apu89(void)
void Apu94(void)
{
- // ADC A,dp+X
+ /* ADC A,dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
ADC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -1855,7 +1855,7 @@ void Apu94(void)
void Apu95(void)
{
- // ADC A, abs+X
+ /* ADC A, abs+X */
AbsoluteX();
Work8 = S9xAPUGetByte(IAPU.Address);
ADC(IAPU.Registers.YA.B.A, Work8);
@@ -1864,7 +1864,7 @@ void Apu95(void)
void Apu96(void)
{
- // ADC A, abs+Y
+ /* ADC A, abs+Y */
AbsoluteY();
Work8 = S9xAPUGetByte(IAPU.Address);
ADC(IAPU.Registers.YA.B.A, Work8);
@@ -1873,7 +1873,7 @@ void Apu96(void)
void Apu97(void)
{
- // ADC A, (dp)+Y
+ /* ADC A, (dp)+Y */
IndirectIndexedY();
Work8 = S9xAPUGetByte(IAPU.Address);
ADC(IAPU.Registers.YA.B.A, Work8);
@@ -1882,7 +1882,7 @@ void Apu97(void)
void Apu98(void)
{
- // ADC dp,#00
+ /* ADC dp,#00 */
Work8 = OP1;
W1 = S9xAPUGetByteZ(OP2);
ADC(W1, Work8);
@@ -1892,7 +1892,7 @@ void Apu98(void)
void Apu99(void)
{
- // ADC (X),(Y)
+ /* ADC (X),(Y) */
W1 = S9xAPUGetByteZ(IAPU.Registers.X);
Work8 = S9xAPUGetByteZ(IAPU.Registers.YA.B.Y);
ADC(W1, Work8);
@@ -1902,7 +1902,7 @@ void Apu99(void)
void Apu8D(void)
{
- // MOV Y,#00
+ /* MOV Y,#00 */
IAPU.Registers.YA.B.Y = OP1;
APUSetZN8(IAPU.Registers.YA.B.Y);
IAPU.PC += 2;
@@ -1910,7 +1910,7 @@ void Apu8D(void)
void Apu8F(void)
{
- // MOV dp,#00
+ /* MOV dp,#00 */
Work8 = OP1;
S9xAPUSetByteZ(Work8, OP2);
IAPU.PC += 3;
@@ -1918,7 +1918,7 @@ void Apu8F(void)
void Apu9E(void)
{
- // DIV YA,X
+ /* DIV YA,X */
if ((IAPU.Registers.X & 0x0f) <= (IAPU.Registers.YA.B.Y & 0x0f))
APUSetHalfCarry();
else
@@ -1952,7 +1952,7 @@ void Apu9E(void)
void Apu9F(void)
{
- // XCN A
+ /* XCN A */
IAPU.Registers.YA.B.A = (IAPU.Registers.YA.B.A >> 4) | (IAPU.Registers.YA.B.A << 4);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -1960,7 +1960,7 @@ void Apu9F(void)
void ApuA4(void)
{
- // SBC A, dp
+ /* SBC A, dp */
Work8 = S9xAPUGetByteZ(OP1);
SBC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -1968,7 +1968,7 @@ void ApuA4(void)
void ApuA5(void)
{
- // SBC A, abs
+ /* SBC A, abs */
Absolute();
Work8 = S9xAPUGetByte(IAPU.Address);
SBC(IAPU.Registers.YA.B.A, Work8);
@@ -1977,7 +1977,7 @@ void ApuA5(void)
void ApuA6(void)
{
- // SBC A, (X)
+ /* SBC A, (X) */
Work8 = S9xAPUGetByteZ(IAPU.Registers.X);
SBC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC++;
@@ -1985,7 +1985,7 @@ void ApuA6(void)
void ApuA7(void)
{
- // SBC A,(dp+X)
+ /* SBC A,(dp+X) */
IndexedXIndirect();
Work8 = S9xAPUGetByte(IAPU.Address);
SBC(IAPU.Registers.YA.B.A, Work8);
@@ -1994,7 +1994,7 @@ void ApuA7(void)
void ApuA8(void)
{
- // SBC A,#00
+ /* SBC A,#00 */
Work8 = OP1;
SBC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -2002,7 +2002,7 @@ void ApuA8(void)
void ApuA9(void)
{
- // SBC dp(dest), dp(src)
+ /* SBC dp(dest), dp(src) */
Work8 = S9xAPUGetByteZ(OP1);
W1 = S9xAPUGetByteZ(OP2);
SBC(W1, Work8);
@@ -2012,7 +2012,7 @@ void ApuA9(void)
void ApuB4(void)
{
- // SBC A, dp+X
+ /* SBC A, dp+X */
Work8 = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
SBC(IAPU.Registers.YA.B.A, Work8);
IAPU.PC += 2;
@@ -2020,7 +2020,7 @@ void ApuB4(void)
void ApuB5(void)
{
- // SBC A,abs+X
+ /* SBC A,abs+X */
AbsoluteX();
Work8 = S9xAPUGetByte(IAPU.Address);
SBC(IAPU.Registers.YA.B.A, Work8);
@@ -2029,7 +2029,7 @@ void ApuB5(void)
void ApuB6(void)
{
- // SBC A,abs+Y
+ /* SBC A,abs+Y */
AbsoluteY();
Work8 = S9xAPUGetByte(IAPU.Address);
SBC(IAPU.Registers.YA.B.A, Work8);
@@ -2038,7 +2038,7 @@ void ApuB6(void)
void ApuB7(void)
{
- // SBC A,(dp)+Y
+ /* SBC A,(dp)+Y */
IndirectIndexedY();
Work8 = S9xAPUGetByte(IAPU.Address);
SBC(IAPU.Registers.YA.B.A, Work8);
@@ -2047,7 +2047,7 @@ void ApuB7(void)
void ApuB8(void)
{
- // SBC dp,#00
+ /* SBC dp,#00 */
Work8 = OP1;
W1 = S9xAPUGetByteZ(OP2);
SBC(W1, Work8);
@@ -2057,7 +2057,7 @@ void ApuB8(void)
void ApuB9(void)
{
- // SBC (X),(Y)
+ /* SBC (X),(Y) */
W1 = S9xAPUGetByteZ(IAPU.Registers.X);
Work8 = S9xAPUGetByteZ(IAPU.Registers.YA.B.Y);
SBC(W1, Work8);
@@ -2067,14 +2067,14 @@ void ApuB9(void)
void ApuAF(void)
{
- // MOV (X)+, A
+ /* MOV (X)+, A */
S9xAPUSetByteZ(IAPU.Registers.YA.B.A, IAPU.Registers.X++);
IAPU.PC++;
}
void ApuBE(void)
{
- // DAS
+ /* DAS */
if (IAPU.Registers.YA.B.A > 0x99 || !IAPU._Carry)
{
IAPU.Registers.YA.B.A -= 0x60;
@@ -2092,7 +2092,7 @@ void ApuBE(void)
void ApuBF(void)
{
- // MOV A,(X)+
+ /* MOV A,(X)+ */
IAPU.Registers.YA.B.A = S9xAPUGetByteZ(IAPU.Registers.X++);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -2100,28 +2100,28 @@ void ApuBF(void)
void ApuC0(void)
{
- // DI
+ /* DI */
APUClearInterrupt();
IAPU.PC++;
}
void ApuA0(void)
{
- // EI
+ /* EI */
APUSetInterrupt();
IAPU.PC++;
}
void ApuC4(void)
{
- // MOV dp,A
+ /* MOV dp,A */
S9xAPUSetByteZ(IAPU.Registers.YA.B.A, OP1);
IAPU.PC += 2;
}
void ApuC5(void)
{
- // MOV abs,A
+ /* MOV abs,A */
Absolute();
S9xAPUSetByte(IAPU.Registers.YA.B.A, IAPU.Address);
IAPU.PC += 3;
@@ -2129,14 +2129,14 @@ void ApuC5(void)
void ApuC6(void)
{
- // MOV (X), A
+ /* MOV (X), A */
S9xAPUSetByteZ(IAPU.Registers.YA.B.A, IAPU.Registers.X);
IAPU.PC++;
}
void ApuC7(void)
{
- // MOV (dp+X),A
+ /* MOV (dp+X),A */
IndexedXIndirect();
S9xAPUSetByte(IAPU.Registers.YA.B.A, IAPU.Address);
IAPU.PC += 2;
@@ -2144,7 +2144,7 @@ void ApuC7(void)
void ApuC9(void)
{
- // MOV abs,X
+ /* MOV abs,X */
Absolute();
S9xAPUSetByte(IAPU.Registers.X, IAPU.Address);
IAPU.PC += 3;
@@ -2152,14 +2152,14 @@ void ApuC9(void)
void ApuCB(void)
{
- // MOV dp,Y
+ /* MOV dp,Y */
S9xAPUSetByteZ(IAPU.Registers.YA.B.Y, OP1);
IAPU.PC += 2;
}
void ApuCC(void)
{
- // MOV abs,Y
+ /* MOV abs,Y */
Absolute();
S9xAPUSetByte(IAPU.Registers.YA.B.Y, IAPU.Address);
IAPU.PC += 3;
@@ -2167,7 +2167,7 @@ void ApuCC(void)
void ApuCD(void)
{
- // MOV X,#00
+ /* MOV X,#00 */
IAPU.Registers.X = OP1;
APUSetZN8(IAPU.Registers.X);
IAPU.PC += 2;
@@ -2175,7 +2175,7 @@ void ApuCD(void)
void ApuCF(void)
{
- // MUL YA
+ /* MUL YA */
IAPU.Registers.YA.W = (uint16_t) IAPU.Registers.YA.B.A * IAPU.Registers.YA.B.Y;
APUSetZN8(IAPU.Registers.YA.B.Y);
IAPU.PC++;
@@ -2183,14 +2183,14 @@ void ApuCF(void)
void ApuD4(void)
{
- // MOV dp+X, A
+ /* MOV dp+X, A */
S9xAPUSetByteZ(IAPU.Registers.YA.B.A, OP1 + IAPU.Registers.X);
IAPU.PC += 2;
}
void ApuD5(void)
{
- // MOV abs+X,A
+ /* MOV abs+X,A */
AbsoluteX();
S9xAPUSetByte(IAPU.Registers.YA.B.A, IAPU.Address);
IAPU.PC += 3;
@@ -2198,7 +2198,7 @@ void ApuD5(void)
void ApuD6(void)
{
- // MOV abs+Y,A
+ /* MOV abs+Y,A */
AbsoluteY();
S9xAPUSetByte(IAPU.Registers.YA.B.A, IAPU.Address);
IAPU.PC += 3;
@@ -2206,7 +2206,7 @@ void ApuD6(void)
void ApuD7(void)
{
- // MOV (dp)+Y,A
+ /* MOV (dp)+Y,A */
IndirectIndexedY();
S9xAPUSetByte(IAPU.Registers.YA.B.A, IAPU.Address);
IAPU.PC += 2;
@@ -2214,28 +2214,28 @@ void ApuD7(void)
void ApuD8(void)
{
- // MOV dp,X
+ /* MOV dp,X */
S9xAPUSetByteZ(IAPU.Registers.X, OP1);
IAPU.PC += 2;
}
void ApuD9(void)
{
- // MOV dp+Y,X
+ /* MOV dp+Y,X */
S9xAPUSetByteZ(IAPU.Registers.X, OP1 + IAPU.Registers.YA.B.Y);
IAPU.PC += 2;
}
void ApuDB(void)
{
- // MOV dp+X,Y
+ /* MOV dp+X,Y */
S9xAPUSetByteZ(IAPU.Registers.YA.B.Y, OP1 + IAPU.Registers.X);
IAPU.PC += 2;
}
void ApuDF(void)
{
- // DAA
+ /* DAA */
if (IAPU.Registers.YA.B.A > 0x99 || IAPU._Carry)
{
IAPU.Registers.YA.B.A += 0x60;
@@ -2253,7 +2253,7 @@ void ApuDF(void)
void ApuE4(void)
{
- // MOV A, dp
+ /* MOV A, dp */
IAPU.Registers.YA.B.A = S9xAPUGetByteZ(OP1);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -2261,7 +2261,7 @@ void ApuE4(void)
void ApuE5(void)
{
- // MOV A,abs
+ /* MOV A,abs */
Absolute();
IAPU.Registers.YA.B.A = S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -2270,7 +2270,7 @@ void ApuE5(void)
void ApuE6(void)
{
- // MOV A,(X)
+ /* MOV A,(X) */
IAPU.Registers.YA.B.A = S9xAPUGetByteZ(IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC++;
@@ -2278,7 +2278,7 @@ void ApuE6(void)
void ApuE7(void)
{
- // MOV A,(dp+X)
+ /* MOV A,(dp+X) */
IndexedXIndirect();
IAPU.Registers.YA.B.A = S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -2287,7 +2287,7 @@ void ApuE7(void)
void ApuE8(void)
{
- // MOV A,#00
+ /* MOV A,#00 */
IAPU.Registers.YA.B.A = OP1;
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -2295,7 +2295,7 @@ void ApuE8(void)
void ApuE9(void)
{
- // MOV X, abs
+ /* MOV X, abs */
Absolute();
IAPU.Registers.X = S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.X);
@@ -2304,7 +2304,7 @@ void ApuE9(void)
void ApuEB(void)
{
- // MOV Y,dp
+ /* MOV Y,dp */
IAPU.Registers.YA.B.Y = S9xAPUGetByteZ(OP1);
APUSetZN8(IAPU.Registers.YA.B.Y);
IAPU.PC += 2;
@@ -2312,7 +2312,7 @@ void ApuEB(void)
void ApuEC(void)
{
- // MOV Y,abs
+ /* MOV Y,abs */
Absolute();
IAPU.Registers.YA.B.Y = S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.Y);
@@ -2321,7 +2321,7 @@ void ApuEC(void)
void ApuF4(void)
{
- // MOV A, dp+X
+ /* MOV A, dp+X */
IAPU.Registers.YA.B.A = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.A);
IAPU.PC += 2;
@@ -2329,7 +2329,7 @@ void ApuF4(void)
void ApuF5(void)
{
- // MOV A, abs+X
+ /* MOV A, abs+X */
AbsoluteX();
IAPU.Registers.YA.B.A = S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -2338,7 +2338,7 @@ void ApuF5(void)
void ApuF6(void)
{
- // MOV A, abs+Y
+ /* MOV A, abs+Y */
AbsoluteY();
IAPU.Registers.YA.B.A = S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -2347,7 +2347,7 @@ void ApuF6(void)
void ApuF7(void)
{
- // MOV A, (dp)+Y
+ /* MOV A, (dp)+Y */
IndirectIndexedY();
IAPU.Registers.YA.B.A = S9xAPUGetByte(IAPU.Address);
APUSetZN8(IAPU.Registers.YA.B.A);
@@ -2356,7 +2356,7 @@ void ApuF7(void)
void ApuF8(void)
{
- // MOV X,dp
+ /* MOV X,dp */
IAPU.Registers.X = S9xAPUGetByteZ(OP1);
APUSetZN8(IAPU.Registers.X);
IAPU.PC += 2;
@@ -2364,7 +2364,7 @@ void ApuF8(void)
void ApuF9(void)
{
- // MOV X,dp+Y
+ /* MOV X,dp+Y */
IAPU.Registers.X = S9xAPUGetByteZ(OP1 + IAPU.Registers.YA.B.Y);
APUSetZN8(IAPU.Registers.X);
IAPU.PC += 2;
@@ -2372,14 +2372,14 @@ void ApuF9(void)
void ApuFA(void)
{
- // MOV dp(dest),dp(src)
+ /* MOV dp(dest),dp(src) */
S9xAPUSetByteZ(S9xAPUGetByteZ(OP1), OP2);
IAPU.PC += 3;
}
void ApuFB(void)
{
- // MOV Y,dp+X
+ /* MOV Y,dp+X */
IAPU.Registers.YA.B.Y = S9xAPUGetByteZ(OP1 + IAPU.Registers.X);
APUSetZN8(IAPU.Registers.YA.B.Y);
IAPU.PC += 2;
diff --git a/source/spc7110.c b/source/spc7110.c
index 7ed339d..ac8e0a8 100644
--- a/source/spc7110.c
+++ b/source/spc7110.c
@@ -7,14 +7,14 @@
const char* S9xGetFilename(const char*);
-SPC7110Regs s7r; // SPC7110 registers, about 33KB
-S7RTC rtc_f9; // FEOEZ (and Shounen Jump no SHou) RTC
-void S9xUpdateRTC(void); // S-RTC function hacked to work with the RTC
+SPC7110Regs s7r; /* SPC7110 registers, about 33KB */
+S7RTC rtc_f9; /* FEOEZ (and Shounen Jump no SHou) RTC */
+void S9xUpdateRTC(void); /* S-RTC function hacked to work with the RTC */
-void S9xSpc7110Init(void) // Emulate power on state
+void S9xSpc7110Init(void) /* Emulate power on state */
{
spc7110dec_init();
- s7r.DataRomOffset = 0x00100000; //handy constant!
+ s7r.DataRomOffset = 0x00100000; /* handy constant! */
s7r.DataRomSize = Memory.CalculatedSize - s7r.DataRomOffset;
s7r.reg4800 = 0;
s7r.reg4801 = 0;
@@ -68,17 +68,17 @@ void S9xSpc7110Init(void) // Emulate power on state
memset(s7r.bank50, 0x00, DECOMP_BUFFER_SIZE);
}
-//reads SPC7110 and RTC registers.
+/* reads SPC7110 and RTC registers. */
uint8_t S9xGetSPC7110(uint16_t Address)
{
switch (Address)
{
- //decompressed data read port. decrements 4809-A (with wrap)
- //4805-6 is the offset into the bank
- //AlignBy is set (afaik) at decompression time, and is the offset multiplier
- //bank50internal is an internal pointer to the actual byte to read.
- //so you read from offset*multiplier + bank50internal
- //the offset registers cannot be incremented due to the offset multiplier.
+ /* decompressed data read port. decrements 4809-A (with wrap) */
+ /* 4805-6 is the offset into the bank */
+ /* AlignBy is set (afaik) at decompression time, and is the offset multiplier */
+ /* bank50internal is an internal pointer to the actual byte to read. */
+ /* so you read from offset*multiplier + bank50internal */
+ /* the offset registers cannot be incremented due to the offset multiplier. */
case 0x4800:
{
uint16_t count = s7r.reg4809 | (s7r.reg480A << 8);
@@ -91,44 +91,44 @@ uint8_t S9xGetSPC7110(uint16_t Address)
s7r.reg4800 = spc7110dec_read();
return s7r.reg4800;
}
- case 0x4801: //table register low
+ case 0x4801: /* table register low */
return s7r.reg4801;
- case 0x4802: //table register middle
+ case 0x4802: /* table register middle */
return s7r.reg4802;
- case 0x4803: //table register high
+ case 0x4803: /* table register high */
return s7r.reg4803;
- case 0x4804: //index of pointer in table (each entry is 4 bytes)
+ case 0x4804: /* index of pointer in table (each entry is 4 bytes) */
return s7r.reg4804;
- case 0x4805: //offset register low
+ case 0x4805: /* offset register low */
return s7r.reg4805;
- case 0x4806: //offset register high
+ case 0x4806: /* offset register high */
return s7r.reg4806;
- //DMA channel (not that I see this usually set,
- //regardless of what channel DMA is on)
+ /* DMA channel (not that I see this usually set, */
+ /* regardless of what channel DMA is on) */
case 0x4807:
return s7r.reg4807;
- //C r/w option, unknown, defval:00 is what Dark Force says
- //afaict, Snes9x doesn't use this at all.
+ /* C r/w option, unknown, defval:00 is what Dark Force says */
+ /* afaict, Snes9x doesn't use this at all. */
case 0x4808:
return s7r.reg4808;
- //C-Length low
- //counts down the number of bytes left to read from the decompression buffer.
- //this is set by the ROM, and wraps on bounds.
+ /* C-Length low */
+ /* counts down the number of bytes left to read from the decompression buffer. */
+ /* this is set by the ROM, and wraps on bounds. */
case 0x4809:
return s7r.reg4809;
- case 0x480A: //C Length high
+ case 0x480A: /* C Length high */
return s7r.reg480A;
- //Offset enable.
- //if this is zero, 4805-6 are useless. Emulated by setting AlignBy to 0
+ /* Offset enable. */
+ /* if this is zero, 4805-6 are useless. Emulated by setting AlignBy to 0 */
case 0x480B:
return s7r.reg480B;
- case 0x480C: //decompression finished: just emulated by switching each read.
+ case 0x480C: /* decompression finished: just emulated by switching each read. */
s7r.reg480C ^= 0x80;
return s7r.reg480C ^ 0x80;
- //Data access port
- //reads from the data ROM (anywhere over the first 8 mbits
- //behavior is complex, will document later,
- //possibly missing cases, because of the number of switches in play
+ /* Data access port */
+ /* reads from the data ROM (anywhere over the first 8 mbits */
+ /* behavior is complex, will document later, */
+ /* possibly missing cases, because of the number of switches in play */
case 0x4810:
if (s7r.written == 0)
return 0;
@@ -196,7 +196,7 @@ uint8_t S9xGetSPC7110(uint16_t Address)
}
}
- //is signed
+ /* is signed */
}
else
{
@@ -260,26 +260,26 @@ uint8_t S9xGetSPC7110(uint16_t Address)
}
else
return 0;
- case 0x4811: //direct read address low
+ case 0x4811: /* direct read address low */
return s7r.reg4811;
- case 0x4812: //direct read address middle
+ case 0x4812: /* direct read address middle */
return s7r.reg4812;
- case 0x4813: //direct read access high
+ case 0x4813: /* direct read access high */
return s7r.reg4813;
- case 0x4814: //read adjust low
+ case 0x4814: /* read adjust low */
return s7r.reg4814;
- case 0x4815: //read adjust high
+ case 0x4815: /* read adjust high */
return s7r.reg4815;
- case 0x4816: //read increment low
+ case 0x4816: /* read increment low */
return s7r.reg4816;
- case 0x4817: //read increment high
+ case 0x4817: /* read increment high */
return s7r.reg4817;
- case 0x4818: //Data ROM command mode; essentially, this controls the insane code of $4810 and $481A
+ case 0x4818: /* Data ROM command mode; essentially, this controls the insane code of $4810 and $481A */
return s7r.reg4818;
- //read after adjust port
- //what this does, besides more nasty stuff like 4810,
- //I don't know. Just assume it is a different implementation of $4810,
- //if it helps your sanity
+ /* read after adjust port */
+ /* what this does, besides more nasty stuff like 4810, */
+ /* I don't know. Just assume it is a different implementation of $4810, */
+ /* if it helps your sanity */
case 0x481A:
if (s7r.written == 0x1F)
{
@@ -337,58 +337,58 @@ uint8_t S9xGetSPC7110(uint16_t Address)
}
else
return 0;
- case 0x4820: //multiplicand low or dividend lowest
+ case 0x4820: /* multiplicand low or dividend lowest */
return s7r.reg4820;
- case 0x4821: //multiplicand high or divdend lower
+ case 0x4821: /* multiplicand high or divdend lower */
return s7r.reg4821;
- case 0x4822: //dividend higher
+ case 0x4822: /* dividend higher */
return s7r.reg4822;
- case 0x4823: //dividend highest
+ case 0x4823: /* dividend highest */
return s7r.reg4823;
- case 0x4824: //multiplier low
+ case 0x4824: /* multiplier low */
return s7r.reg4824;
- case 0x4825: //multiplier high
+ case 0x4825: /* multiplier high */
return s7r.reg4825;
- case 0x4826: //divisor low
+ case 0x4826: /* divisor low */
return s7r.reg4826;
- case 0x4827: //divisor high
+ case 0x4827: /* divisor high */
return s7r.reg4827;
- case 0x4828: //result lowest
+ case 0x4828: /* result lowest */
return s7r.reg4828;
- case 0x4829: //result lower
+ case 0x4829: /* result lower */
return s7r.reg4829;
- case 0x482A: //result higher
+ case 0x482A: /* result higher */
return s7r.reg482A;
- case 0x482B: //result highest
+ case 0x482B: /* result highest */
return s7r.reg482B;
- case 0x482C: //remainder (division) low
+ case 0x482C: /* remainder (division) low */
return s7r.reg482C;
- case 0x482D: //remainder (division) high
+ case 0x482D: /* remainder (division) high */
return s7r.reg482D;
- case 0x482E: //signed/unsigned
+ case 0x482E: /* signed/unsigned */
return s7r.reg482E;
- case 0x482F: //finished flag, emulated as an on-read toggle.
+ case 0x482F: /* finished flag, emulated as an on-read toggle. */
if (s7r.reg482F)
{
s7r.reg482F = 0;
return 0x80;
}
return 0;
- case 0x4830: //SRAM toggle
+ case 0x4830: /* SRAM toggle */
return s7r.reg4830;
- case 0x4831: //DX bank mapping
+ case 0x4831: /* DX bank mapping */
return s7r.reg4831;
- case 0x4832: //EX bank mapping
+ case 0x4832: /* EX bank mapping */
return s7r.reg4832;
- case 0x4833: //FX bank mapping
+ case 0x4833: /* FX bank mapping */
return s7r.reg4833;
- case 0x4834: //SRAM mapping? We have no clue!
+ case 0x4834: /* SRAM mapping? We have no clue! */
return s7r.reg4834;
- case 0x4840: //RTC enable
+ case 0x4840: /* RTC enable */
if (!Settings.SPC7110RTC)
return Address >> 8;
return s7r.reg4840;
- case 0x4841: //command/index/value of RTC (essentially, zero unless we're in read mode
+ case 0x4841: /* command/index/value of RTC (essentially, zero unless we're in read mode */
if (!Settings.SPC7110RTC)
return Address >> 8;
if (rtc_f9.init)
@@ -401,7 +401,7 @@ uint8_t S9xGetSPC7110(uint16_t Address)
}
else
return 0;
- case 0x4842: //RTC done flag
+ case 0x4842: /* RTC done flag */
if (!Settings.SPC7110RTC)
return Address >> 8;
s7r.reg4842 ^= 0x80;
@@ -424,8 +424,8 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
{
switch (Address)
{
- //Writes to $4800 are undefined.
- case 0x4801: //table low, middle, and high.
+ /* Writes to $4800 are undefined. */
+ case 0x4801: /* table low, middle, and high. */
s7r.reg4801 = data;
break;
case 0x4802:
@@ -434,13 +434,13 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
case 0x4803:
s7r.reg4803 = data;
break;
- case 0x4804: //table index (4 byte entries, bigendian with a multiplier byte)
+ case 0x4804: /* table index (4 byte entries, bigendian with a multiplier byte) */
s7r.reg4804 = data;
break;
- case 0x4805: //offset low
+ case 0x4805: /* offset low */
s7r.reg4805 = data;
break;
- case 0x4806: //offset high, starts decompression
+ case 0x4806: /* offset high, starts decompression */
{
uint32_t table = (s7r.reg4801 + (s7r.reg4802 << 8) + (s7r.reg4803 << 16));
uint32_t index = (s7r.reg4804 << 2);
@@ -453,21 +453,21 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
s7r.reg480C &= 0x7F;
break;
}
- case 0x4807: //DMA channel register (Is it used??)
+ case 0x4807: /* DMA channel register (Is it used??) */
s7r.reg4807 = data;
break;
- //C r/w? I have no idea. If you get weird values written here before a bug,
- //The Dumper should probably be contacted about running a test.
+ /* C r/w? I have no idea. If you get weird values written here before a bug, */
+ /* The Dumper should probably be contacted about running a test. */
case 0x4808:
s7r.reg4808 = data;
break;
- case 0x4809: //C-Length low
+ case 0x4809: /* C-Length low */
s7r.reg4809 = data;
break;
- case 0x480A: //C-Length high
+ case 0x480A: /* C-Length high */
s7r.reg480A = data;
break;
- case 0x480B: //Offset enable
+ case 0x480B: /* Offset enable */
{
s7r.reg480B = data;
int32_t table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
@@ -496,19 +496,19 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
}
break;
}
- case 0x4811: //Data port address low
+ case 0x4811: /* Data port address low */
s7r.reg4811 = data;
s7r.written |= 0x01;
break;
- case 0x4812: //data port address middle
+ case 0x4812: /* data port address middle */
s7r.reg4812 = data;
s7r.written |= 0x02;
break;
- case 0x4813: //data port address high
+ case 0x4813: /* data port address high */
s7r.reg4813 = data;
s7r.written |= 0x04;
break;
- case 0x4814: //data port adjust low (has a funky immediate increment mode)
+ case 0x4814: /* data port adjust low (has a funky immediate increment mode) */
s7r.reg4814 = data;
if (s7r.reg4818 & 0x02)
{
@@ -554,7 +554,7 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
s7r.written |= 0x08;
break;
- case 0x4815: //data port adjust high (has a funky immediate increment mode)
+ case 0x4815: /* data port adjust high (has a funky immediate increment mode) */
s7r.reg4815 = data;
if (s7r.reg4818 & 0x02)
{
@@ -600,36 +600,36 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
}
s7r.written |= 0x10;
break;
- case 0x4816: //data port increment low
+ case 0x4816: /* data port increment low */
s7r.reg4816 = data;
break;
- case 0x4817: //data port increment high
+ case 0x4817: /* data port increment high */
s7r.reg4817 = data;
break;
- //data port mode switches
- //note that it starts inactive.
+ /* data port mode switches */
+ /* note that it starts inactive. */
case 0x4818:
if ((s7r.written & 0x18) != 0x18)
break;
s7r.offset_add = 0;
s7r.reg4818 = data;
break;
- case 0x4820: //multiplicand low or dividend lowest
+ case 0x4820: /* multiplicand low or dividend lowest */
s7r.reg4820 = data;
break;
- case 0x4821: //multiplicand high or dividend lower
+ case 0x4821: /* multiplicand high or dividend lower */
s7r.reg4821 = data;
break;
- case 0x4822: //dividend higher
+ case 0x4822: /* dividend higher */
s7r.reg4822 = data;
break;
- case 0x4823: //dividend highest
+ case 0x4823: /* dividend highest */
s7r.reg4823 = data;
break;
- case 0x4824: //multiplier low
+ case 0x4824: /* multiplier low */
s7r.reg4824 = data;
break;
- case 0x4825: //multiplier high (triggers operation)
+ case 0x4825: /* multiplier high (triggers operation) */
s7r.reg4825 = data;
if (s7r.reg482E & 0x01)
{
@@ -653,10 +653,10 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
}
s7r.reg482F = 0x80;
break;
- case 0x4826: //divisor low
+ case 0x4826: /* divisor low */
s7r.reg4826 = data;
break;
- case 0x4827: //divisor high (triggers operation)
+ case 0x4827: /* divisor high (triggers operation) */
s7r.reg4827 = data;
if (s7r.reg482E & 0x01)
{
@@ -706,32 +706,32 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
}
s7r.reg482F = 0x80;
break;
- //result registers are possibly read-only
+ /* result registers are possibly read-only */
- //reset: writes here nuke the whole math unit
- //Zero indicates unsigned math, resets with non-zero values turn on signed math
+ /* reset: writes here nuke the whole math unit */
+ /* Zero indicates unsigned math, resets with non-zero values turn on signed math */
case 0x482E:
s7r.reg4820 = s7r.reg4821 = s7r.reg4822 = s7r.reg4823 = s7r.reg4824 = s7r.reg4825 = s7r.reg4826 = s7r.reg4827 = s7r.reg4828 = s7r.reg4829 = s7r.reg482A = s7r.reg482B = s7r.reg482C = s7r.reg482D = 0;
s7r.reg482E = data;
break;
- //math status register possibly read only
- case 0x4830: //SRAM toggle
+ /* math status register possibly read only */
+ case 0x4830: /* SRAM toggle */
SPC7110Sram(data);
s7r.reg4830 = data;
break;
- case 0x4831: //Bank DX mapping
+ case 0x4831: /* Bank DX mapping */
s7r.reg4831 = data;
break;
- case 0x4832: //Bank EX mapping
+ case 0x4832: /* Bank EX mapping */
s7r.reg4832 = data;
break;
- case 0x4833: //Bank FX mapping
+ case 0x4833: /* Bank FX mapping */
s7r.reg4833 = data;
break;
- case 0x4834: //S-RAM mapping? who knows?
+ case 0x4834: /* S-RAM mapping? who knows? */
s7r.reg4834 = data;
break;
- case 0x4840: //RTC Toggle
+ case 0x4840: /* RTC Toggle */
if(!data)
S9xUpdateRTC();
else if(data & 0x01)
@@ -742,7 +742,7 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
}
s7r.reg4840 = data;
break;
- case 0x4841: //RTC init/command/index register
+ case 0x4841: /* RTC init/command/index register */
if (rtc_f9.init)
{
if (rtc_f9.index == -1)
@@ -824,7 +824,7 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
}
}
-//emulate the SPC7110's ability to remap banks Dx, Ex, and Fx.
+/* emulate the SPC7110's ability to remap banks Dx, Ex, and Fx. */
uint8_t S9xGetSPC7110Byte(uint32_t Address)
{
uint32_t i;
@@ -857,7 +857,7 @@ int32_t S9xRTCDaysInMonth(int32_t month, int32_t year)
switch(month)
{
case 2:
- if(year % 4 == 0) // DKJM2 only uses 199x - 22xx
+ if(year % 4 == 0) /* DKJM2 only uses 199x - 22xx */
return 29;
return 28;
case 4:
@@ -865,7 +865,7 @@ int32_t S9xRTCDaysInMonth(int32_t month, int32_t year)
case 9:
case 11:
return 30;
- default: // months 1,3,5,7,8,10,12
+ default: /* months 1,3,5,7,8,10,12 */
return 31;
}
}
@@ -884,18 +884,14 @@ void S9xUpdateRTC(void)
time_t cur_systime;
int32_t time_diff;
- // Keep track of game time by computing the number of seconds that pass on the system
- // clock and adding the same number of seconds to the RTC clock structure.
+ /* Keep track of game time by computing the number of seconds that pass on the system */
+ /* clock and adding the same number of seconds to the RTC clock structure. */
if (rtc_f9.init && 0 == (rtc_f9.reg[0x0D] & 0x01) && 0 == (rtc_f9.reg[0x0F] & 0x03))
{
cur_systime = time(NULL);
- // This method assumes one time_t clock tick is one second
- // which should work on PCs and GNU systems.
- // If your tick interval is different adjust the
- // DAYTICK, HOURTICK, and MINUTETICK defines
-
+ /* This method assumes one time_t clock tick is one second */
time_diff = (int32_t)(cur_systime - rtc_f9.last_used);
rtc_f9.last_used = cur_systime;
@@ -1003,7 +999,7 @@ void S9xUpdateRTC(void)
}
}
-//allows DMA from the ROM (is this even possible on the SPC7110?
+/* allows DMA from the ROM (is this even possible on the SPC7110? */
uint8_t* Get7110BasePtr(uint32_t Address)
{
uint32_t i;
@@ -1025,7 +1021,7 @@ uint8_t* Get7110BasePtr(uint32_t Address)
return &Memory.ROM[i];
}
-//Cache 1 clean up function
+/* Cache 1 clean up function */
void Del7110Gfx(void)
{
spc7110dec_deinit();
@@ -1033,7 +1029,7 @@ void Del7110Gfx(void)
Settings.SPC7110RTC = false;
}
-//emulate a reset.
+/* emulate a reset. */
void S9xSpc7110Reset(void)
{
s7r.reg4800 = 0;
diff --git a/source/spc7110dec.c b/source/spc7110dec.c
index f5dc963..9adb4d6 100644
--- a/source/spc7110dec.c
+++ b/source/spc7110dec.c
@@ -119,7 +119,7 @@ void spc7110dec_clear(uint32_t mode, uint32_t offset, uint32_t index)
decomp.buffer_length = 0;
uint32_t i;
- for(i = 0; i < 32; i++) // reset decomp.context states
+ for(i = 0; i < 32; i++) /* reset decomp.context states */
{
decomp.context[i].index = 0;
decomp.context[i].invert = 0;
@@ -138,7 +138,7 @@ void spc7110dec_clear(uint32_t mode, uint32_t offset, uint32_t index)
break;
}
- while(index--) // decompress up to requested output data index
+ while(index--) /* decompress up to requested output data index */
spc7110dec_read();
decomp.read_counter = 0;
@@ -178,13 +178,13 @@ void spc7110dec_mode0(bool init)
/* Get bit */
uint32_t flag_lps;
- if(val <= span - prob) // mps
+ if(val <= span - prob) /* mps */
{
span = span - prob;
out = (out << 1) + mps;
flag_lps = 0;
}
- else // lps
+ else /* lps */
{
val = val - (span - (prob - 1));
span = prob - 1;
@@ -316,12 +316,12 @@ void spc7110dec_mode1(bool init)
/* Get symbol */
uint32_t flag_lps;
- if(val <= span - prob) // mps
+ if(val <= span - prob) /* mps */
{
span = span - prob;
flag_lps = 0;
}
- else // lps
+ else /* lps */
{
val = val - (span - (prob - 1));
span = prob - 1;
@@ -466,12 +466,12 @@ void spc7110dec_mode2(bool init)
/* Get symbol */
uint32_t flag_lps;
- if(val <= span - prob) // mps
+ if(val <= span - prob) /* mps */
{
span = span - prob;
flag_lps = 0;
}
- else // lps
+ else /* lps */
{
val = val - (span - (prob - 1));
span = prob - 1;
diff --git a/source/srtc.c b/source/srtc.c
index 6427f0b..bdb2970 100644
--- a/source/srtc.c
+++ b/source/srtc.c
@@ -64,7 +64,7 @@ void S9xHardResetSRTC(void)
rtc.mode = MODE_READ;
rtc.count_enable = false;
rtc.needs_init = true;
- rtc.system_timestamp = time(NULL); // Get system timestamp
+ rtc.system_timestamp = time(NULL); /* Get system timestamp */
}
/**********************************************************************************************/
@@ -79,7 +79,7 @@ uint32_t S9xSRTCComputeDayOfWeek(void)
uint32_t day_of_week;
year += (rtc.data[11] - 9) * 100;
- // Range check the month for valid array indices
+ /* Range check the month for valid array indices */
if (month > 12)
month = 1;
@@ -130,9 +130,9 @@ void S9xUpdateSrtcTime(void)
time_t cur_systime;
int32_t time_diff;
- // Keep track of game time by computing the number of seconds that pass on the system
- // clock and adding the same number of seconds to the S-RTC clock structure.
- // Note: Dai Kaijyu Monogatari II only allows dates in the range 1996-21xx.
+ /* Keep track of game time by computing the number of seconds that pass on the system */
+ /* clock and adding the same number of seconds to the S-RTC clock structure. */
+ /* Note: Dai Kaijyu Monogatari II only allows dates in the range 1996-21xx. */
if (rtc.count_enable && !rtc.needs_init)
{
@@ -251,9 +251,9 @@ void S9xUpdateSrtcTime(void)
/**********************************************************************************************/
void S9xSetSRTC(uint8_t data, uint16_t Address)
{
- data &= 0x0F; // Data is only 4-bits, mask out unused bits.
+ data &= 0x0F; /* Data is only 4-bits, mask out unused bits. */
- if (data >= 0xD) // It's an RTC command
+ if (data >= 0xD) /* It's an RTC command */
{
switch (data)
{
@@ -277,12 +277,12 @@ void S9xSetSRTC(uint8_t data, uint16_t Address)
{
rtc.data[rtc.index++] = data;
- if (rtc.index == MAX_RTC_INDEX) // We have all the data for the RTC load
+ if (rtc.index == MAX_RTC_INDEX) /* We have all the data for the RTC load */
{
- rtc.system_timestamp = time(NULL); // Get local system time
- rtc.data[rtc.index++] = S9xSRTCComputeDayOfWeek(); // Get the day of the week
+ rtc.system_timestamp = time(NULL); /* Get local system time */
+ rtc.data[rtc.index++] = S9xSRTCComputeDayOfWeek(); /* Get the day of the week */
- // Start RTC counting again
+ /* Start RTC counting again */
rtc.count_enable = true;
rtc.needs_init = false;
}
@@ -295,18 +295,18 @@ void S9xSetSRTC(uint8_t data, uint16_t Address)
switch (data)
{
case COMMAND_CLEAR_RTC:
- rtc.count_enable = false; // Disable RTC counter
+ rtc.count_enable = false; /* Disable RTC counter */
memset(rtc.data, 0, MAX_RTC_INDEX + 1);
rtc.index = -1;
rtc.mode = MODE_COMMAND_DONE;
break;
case COMMAND_LOAD_RTC:
- rtc.count_enable = false; // Disable RTC counter
- rtc.index = 0; // Setup for writing
+ rtc.count_enable = false; /* Disable RTC counter */
+ rtc.index = 0; /* Setup for writing */
rtc.mode = MODE_LOAD_RTC;
break;
default:
- rtc.mode = MODE_COMMAND_DONE; // unrecognized command - need to implement.
+ rtc.mode = MODE_COMMAND_DONE; /* unrecognized command - need to implement. */
}
return;
@@ -323,17 +323,17 @@ uint8_t S9xGetSRTC(uint16_t Address)
{
if (rtc.index < 0)
{
- S9xUpdateSrtcTime(); // Only update it if the game reads it
+ S9xUpdateSrtcTime(); /* Only update it if the game reads it */
rtc.index++;
- return 0x0f; // Send start marker.
+ return 0x0f; /* Send start marker. */
}
else if (rtc.index > MAX_RTC_INDEX)
{
- rtc.index = -1; // Setup for next set of reads
- return 0x0f; // Data done marker.
+ rtc.index = -1; /* Setup for next set of reads */
+ return 0x0f; /* Data done marker. */
}
else
- return rtc.data[rtc.index++]; // Feed out the data
+ return rtc.data[rtc.index++]; /* Feed out the data */
}
else
return 0x0;
@@ -351,7 +351,7 @@ void S9xSRTCPreSaveState()
Memory.SRAM [s + 0] = rtc.needs_init;
Memory.SRAM [s + 1] = rtc.count_enable;
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(&Memory.SRAM [s + 2], rtc.data, MAX_RTC_INDEX + 1);
Memory.SRAM [s + 3 + MAX_RTC_INDEX] = rtc.index;
Memory.SRAM [s + 4 + MAX_RTC_INDEX] = rtc.mode;
@@ -366,7 +366,7 @@ void S9xSRTCPreSaveState()
Memory.SRAM [s + 11 + MAX_RTC_INDEX] = (uint8_t)(rtc.system_timestamp >> 48);
Memory.SRAM [s + 12 + MAX_RTC_INDEX] = (uint8_t)(rtc.system_timestamp >> 56);
#else
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(&Memory.SRAM [s + 5 + MAX_RTC_INDEX], &rtc.system_timestamp, 8);
#endif
}
@@ -382,7 +382,7 @@ void S9xSRTCPostLoadState()
rtc.needs_init = Memory.SRAM [s + 0];
rtc.count_enable = Memory.SRAM [s + 1];
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(rtc.data, &Memory.SRAM [s + 2], MAX_RTC_INDEX + 1);
rtc.index = Memory.SRAM [s + 3 + MAX_RTC_INDEX];
rtc.mode = Memory.SRAM [s + 4 + MAX_RTC_INDEX];
@@ -397,7 +397,7 @@ void S9xSRTCPostLoadState()
rtc.system_timestamp |= (Memory.SRAM [s + 11 + MAX_RTC_INDEX] << 48);
rtc.system_timestamp |= (Memory.SRAM [s + 12 + MAX_RTC_INDEX] << 56);
#else
- // memmove converted: Different mallocs [Neb]
+ /* memmove converted: Different mallocs [Neb] */
memcpy(&rtc.system_timestamp, &Memory.SRAM [s + 5 + MAX_RTC_INDEX], 8);
#endif
S9xUpdateSrtcTime();