mirror of https://github.com/snes9xgit/snes9x.git
Clean things up slightly. Switch CYCLE_ACCURATE off, since things seem
to work fine without it.
This commit is contained in:
parent
5d5eaedd5e
commit
1af39f3845
16
apu/apu.cpp
16
apu/apu.cpp
|
@ -464,8 +464,7 @@ bool8 S9xInitSound (int buffer_ms, int lag_ms)
|
||||||
|
|
||||||
void S9xSetSoundControl (uint8 voice_switch)
|
void S9xSetSoundControl (uint8 voice_switch)
|
||||||
{
|
{
|
||||||
/*
|
SNES::dsp.spc_dsp.set_stereo_switch (voice_switch << 8 | voice_switch);
|
||||||
spc_core->dsp_set_stereo_switch(voice_switch << 8 | voice_switch); */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void S9xSetSoundMute (bool8 mute)
|
void S9xSetSoundMute (bool8 mute)
|
||||||
|
@ -477,7 +476,7 @@ void S9xSetSoundMute (bool8 mute)
|
||||||
|
|
||||||
void S9xDumpSPCSnapshot (void)
|
void S9xDumpSPCSnapshot (void)
|
||||||
{
|
{
|
||||||
/* No SPC dumping ATM in byuu SMP */
|
/* TODO: SPC dumping */
|
||||||
/* spc_core->dsp_dump_spc_snapshot(); */
|
/* spc_core->dsp_dump_spc_snapshot(); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -578,14 +577,6 @@ void S9xAPUTimingSetSpeedup (int ticks)
|
||||||
UpdatePlaybackRate();
|
UpdatePlaybackRate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void S9xAPUAllowTimeOverflow (bool allow)
|
|
||||||
{
|
|
||||||
if (allow)
|
|
||||||
printf("APU time overflow allowed\n");
|
|
||||||
|
|
||||||
/* spc_core->spc_allow_time_overflow(allow); */
|
|
||||||
}
|
|
||||||
|
|
||||||
void S9xResetAPU (void)
|
void S9xResetAPU (void)
|
||||||
{
|
{
|
||||||
spc::reference_time = 0;
|
spc::reference_time = 0;
|
||||||
|
@ -614,6 +605,7 @@ void S9xSoftResetAPU (void)
|
||||||
|
|
||||||
void S9xAPUSaveState (uint8 *block)
|
void S9xAPUSaveState (uint8 *block)
|
||||||
{
|
{
|
||||||
|
// TODO: Save states
|
||||||
/* uint8 *ptr = block;
|
/* uint8 *ptr = block;
|
||||||
|
|
||||||
spc_core->copy_state(&ptr, from_apu_to_state);
|
spc_core->copy_state(&ptr, from_apu_to_state);
|
||||||
|
@ -625,7 +617,7 @@ void S9xAPUSaveState (uint8 *block)
|
||||||
|
|
||||||
void S9xAPULoadState (uint8 *block)
|
void S9xAPULoadState (uint8 *block)
|
||||||
{
|
{
|
||||||
/*uint8 *ptr = block;
|
/* uint8 *ptr = block;
|
||||||
|
|
||||||
S9xResetAPU();
|
S9xResetAPU();
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ void SMP::tick() {
|
||||||
timer1.tick();
|
timer1.tick();
|
||||||
timer2.tick();
|
timer2.tick();
|
||||||
|
|
||||||
#ifdef BSNES
|
#ifndef SNES9X
|
||||||
clock += cycle_step_cpu;
|
clock += cycle_step_cpu;
|
||||||
#else
|
#else
|
||||||
clock++;
|
clock++;
|
||||||
|
@ -75,7 +75,7 @@ void SMP::op_step() {
|
||||||
timer1.tick(cycle_count_table[opcode]);
|
timer1.tick(cycle_count_table[opcode]);
|
||||||
timer2.tick(cycle_count_table[opcode]);
|
timer2.tick(cycle_count_table[opcode]);
|
||||||
|
|
||||||
#ifdef BSNES
|
#ifndef SNES9X
|
||||||
clock += cycle_table_cpu[opcode];
|
clock += cycle_table_cpu[opcode];
|
||||||
#else
|
#else
|
||||||
clock += cycle_count_table[opcode];
|
clock += cycle_count_table[opcode];
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
|
#ifndef SNES9X
|
||||||
#define CYCLE_ACCURATE
|
#define CYCLE_ACCURATE
|
||||||
|
#else
|
||||||
|
#undef CYCLE_ACCURATE
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <snes/snes.hpp>
|
#include <snes/snes.hpp>
|
||||||
|
|
||||||
|
@ -20,7 +24,7 @@ namespace SNES {
|
||||||
#include "timing.cpp"
|
#include "timing.cpp"
|
||||||
|
|
||||||
void SMP::synchronize_cpu() {
|
void SMP::synchronize_cpu() {
|
||||||
#ifdef BSNES
|
#ifndef SNES9X
|
||||||
if(CPU::Threaded == true) {
|
if(CPU::Threaded == true) {
|
||||||
//if(clock >= 0 && scheduler.sync != Scheduler::SynchronizeMode::All) co_switch(cpu.thread);
|
//if(clock >= 0 && scheduler.sync != Scheduler::SynchronizeMode::All) co_switch(cpu.thread);
|
||||||
} else {
|
} else {
|
||||||
|
@ -42,7 +46,7 @@ void SMP::enter() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMP::power() {
|
void SMP::power() {
|
||||||
#ifdef BSNES
|
#ifndef SNES9X
|
||||||
Processor::frequency = system.apu_frequency();
|
Processor::frequency = system.apu_frequency();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -92,7 +96,7 @@ void SMP::reset() {
|
||||||
timer0.stage3_ticks = timer1.stage3_ticks = timer2.stage3_ticks = 0;
|
timer0.stage3_ticks = timer1.stage3_ticks = timer2.stage3_ticks = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BSNES
|
#ifndef SNES9X
|
||||||
void SMP::serialize(serializer &s) {
|
void SMP::serialize(serializer &s) {
|
||||||
Processor::serialize(s);
|
Processor::serialize(s);
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ public:
|
||||||
void power();
|
void power();
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
#ifdef BSNES
|
#ifndef SNES9X
|
||||||
void serialize(serializer&);
|
void serialize(serializer&);
|
||||||
#endif
|
#endif
|
||||||
SMP();
|
SMP();
|
||||||
|
@ -35,7 +35,7 @@ public:
|
||||||
alwaysinline unsigned operator=(unsigned data) {
|
alwaysinline unsigned operator=(unsigned data) {
|
||||||
n = data & 0x80; v = data & 0x40; p = data & 0x20; b = data & 0x10;
|
n = data & 0x80; v = data & 0x40; p = data & 0x20; b = data & 0x10;
|
||||||
h = data & 0x08; i = data & 0x04; z = data & 0x02; c = data & 0x01;
|
h = data & 0x08; i = data & 0x04; z = data & 0x02; c = data & 0x01;
|
||||||
return *this;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
alwaysinline unsigned operator|=(unsigned data) { return operator=(operator unsigned() | data); }
|
alwaysinline unsigned operator|=(unsigned data) { return operator=(operator unsigned() | data); }
|
||||||
|
|
|
@ -1,11 +1,21 @@
|
||||||
#ifndef __SNES_HPP
|
#ifndef __SNES_HPP
|
||||||
#define __SNES_HPP
|
#define __SNES_HPP
|
||||||
|
|
||||||
#define CYCLE_ACCURATE
|
|
||||||
|
|
||||||
#include "snes9x.h"
|
#include "snes9x.h"
|
||||||
|
|
||||||
#define alwaysinline inline
|
#define SNES9X
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#define inline inline
|
||||||
|
#define alwaysinline inline __attribute__((always_inline))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#define inline inline
|
||||||
|
#define alwaysinline inline __forceinline
|
||||||
|
#else
|
||||||
|
#define inline inline
|
||||||
|
#define alwaysinline inline
|
||||||
|
#endif
|
||||||
|
|
||||||
#define debugvirtual
|
#define debugvirtual
|
||||||
|
|
||||||
namespace SNES
|
namespace SNES
|
||||||
|
@ -27,22 +37,17 @@ public:
|
||||||
int frequency;
|
int frequency;
|
||||||
uint8 registers[4];
|
uint8 registers[4];
|
||||||
|
|
||||||
inline void enter ()
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void reset ()
|
inline void reset ()
|
||||||
{
|
{
|
||||||
registers[0] = registers[1] = registers[2] = registers[3] = 0;
|
registers[0] = registers[1] = registers[2] = registers[3] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void port_write (uint8 port, uint8 data)
|
alwaysinline void port_write (uint8 port, uint8 data)
|
||||||
{
|
{
|
||||||
registers[port & 3] = data;
|
registers[port & 3] = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline uint8 port_read (uint8 port)
|
alwaysinline uint8 port_read (uint8 port)
|
||||||
{
|
{
|
||||||
// printf ("APU Read %2x from port %d\n", registers[port & 3], port & 3);
|
// printf ("APU Read %2x from port %d\n", registers[port & 3], port & 3);
|
||||||
return registers[port & 3];
|
return registers[port & 3];
|
||||||
|
|
25
memmap.cpp
25
memmap.cpp
|
@ -1502,7 +1502,7 @@ bool8 CMemory::LoadROM (const char *filename)
|
||||||
|
|
||||||
ZeroMemory(ROM, MAX_ROM_SIZE);
|
ZeroMemory(ROM, MAX_ROM_SIZE);
|
||||||
ZeroMemory(&Multi, sizeof(Multi));
|
ZeroMemory(&Multi, sizeof(Multi));
|
||||||
|
|
||||||
again:
|
again:
|
||||||
Settings.DisplayColor = BUILD_PIXEL(31, 31, 31);
|
Settings.DisplayColor = BUILD_PIXEL(31, 31, 31);
|
||||||
SET_UI_COLOR(255, 255, 255);
|
SET_UI_COLOR(255, 255, 255);
|
||||||
|
@ -2254,7 +2254,7 @@ void CMemory::InitROM (void)
|
||||||
Settings.SETA = 0;
|
Settings.SETA = 0;
|
||||||
Settings.SRTC = FALSE;
|
Settings.SRTC = FALSE;
|
||||||
Settings.BS = FALSE;
|
Settings.BS = FALSE;
|
||||||
|
|
||||||
SuperFX.nRomBanks = CalculatedSize >> 15;
|
SuperFX.nRomBanks = CalculatedSize >> 15;
|
||||||
|
|
||||||
//// Parse ROM header and read ROM informatoin
|
//// Parse ROM header and read ROM informatoin
|
||||||
|
@ -3204,7 +3204,7 @@ void CMemory::Map_SPC7110HiROMMap (void)
|
||||||
map_System();
|
map_System();
|
||||||
|
|
||||||
map_index(0x00, 0x00, 0x6000, 0x7fff, MAP_HIROM_SRAM, MAP_TYPE_RAM);
|
map_index(0x00, 0x00, 0x6000, 0x7fff, MAP_HIROM_SRAM, MAP_TYPE_RAM);
|
||||||
map_hirom(0x00, 0x0f, 0x8000, 0xffff, CalculatedSize);
|
map_hirom(0x00, 0x0f, 0x8000, 0xffff, CalculatedSize);
|
||||||
map_index(0x30, 0x30, 0x6000, 0x7fff, MAP_HIROM_SRAM, MAP_TYPE_RAM);
|
map_index(0x30, 0x30, 0x6000, 0x7fff, MAP_HIROM_SRAM, MAP_TYPE_RAM);
|
||||||
map_index(0x50, 0x50, 0x0000, 0xffff, MAP_SPC7110_DRAM, MAP_TYPE_ROM);
|
map_index(0x50, 0x50, 0x0000, 0xffff, MAP_SPC7110_DRAM, MAP_TYPE_ROM);
|
||||||
map_hirom(0x80, 0x8f, 0x8000, 0xffff, CalculatedSize);
|
map_hirom(0x80, 0x8f, 0x8000, 0xffff, CalculatedSize);
|
||||||
|
@ -3499,14 +3499,13 @@ void CMemory::ApplyROMFixes (void)
|
||||||
//// APU timing hacks :(
|
//// APU timing hacks :(
|
||||||
|
|
||||||
Timings.APUSpeedup = 0;
|
Timings.APUSpeedup = 0;
|
||||||
Timings.APUAllowTimeOverflow = FALSE;
|
|
||||||
|
|
||||||
if (!Settings.DisableGameSpecificHacks)
|
if (!Settings.DisableGameSpecificHacks)
|
||||||
{
|
{
|
||||||
if (match_id("AVCJ")) // Rendering Ranger R2
|
if (match_id("AVCJ")) // Rendering Ranger R2
|
||||||
Timings.APUSpeedup = 4;
|
Timings.APUSpeedup = 2;
|
||||||
|
|
||||||
if (match_na("GAIA GENSOUKI 1 JPN") || // Gaia Gensouki
|
/* if (match_na("GAIA GENSOUKI 1 JPN") || // Gaia Gensouki
|
||||||
match_id("JG ") || // Illusion of Gaia
|
match_id("JG ") || // Illusion of Gaia
|
||||||
match_id("CQ ") || // Stunt Race FX
|
match_id("CQ ") || // Stunt Race FX
|
||||||
match_na("SOULBLADER - 1") || // Soul Blader
|
match_na("SOULBLADER - 1") || // Soul Blader
|
||||||
|
@ -3540,22 +3539,10 @@ void CMemory::ApplyROMFixes (void)
|
||||||
match_nn("Parlor") || // Parlor mini/2/3/4/5/6/7, Parlor Parlor!/2/3/4/5
|
match_nn("Parlor") || // Parlor mini/2/3/4/5/6/7, Parlor Parlor!/2/3/4/5
|
||||||
match_na("HEIWA Parlor!Mini8") || // Parlor mini 8
|
match_na("HEIWA Parlor!Mini8") || // Parlor mini 8
|
||||||
match_nn("SANKYO Fever! \xCC\xA8\xB0\xCA\xDE\xB0!")) // SANKYO Fever! Fever!
|
match_nn("SANKYO Fever! \xCC\xA8\xB0\xCA\xDE\xB0!")) // SANKYO Fever! Fever!
|
||||||
Timings.APUSpeedup = 1;
|
Timings.APUSpeedup = 1; */
|
||||||
|
|
||||||
if (match_na ("EARTHWORM JIM 2") || // Earthworm Jim 2
|
|
||||||
match_na ("NBA Hangtime") || // NBA Hang Time
|
|
||||||
match_na ("MSPACMAN") || // Ms Pacman
|
|
||||||
match_na ("THE MASK") || // The Mask
|
|
||||||
match_na ("PRIMAL RAGE") || // Primal Rage
|
|
||||||
match_na ("PORKY PIGS HAUNTED") || // Porky Pig's Haunted Holiday
|
|
||||||
match_na ("Big Sky Trooper") || // Big Sky Trooper
|
|
||||||
match_id ("A35") || // Mechwarrior 3050 / Battle Tech 3050
|
|
||||||
match_na ("DOOM TROOPERS")) // Doom Troopers
|
|
||||||
Timings.APUAllowTimeOverflow = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
S9xAPUTimingSetSpeedup(Timings.APUSpeedup);
|
S9xAPUTimingSetSpeedup(Timings.APUSpeedup);
|
||||||
S9xAPUAllowTimeOverflow(Timings.APUAllowTimeOverflow);
|
|
||||||
|
|
||||||
//// Other timing hacks :(
|
//// Other timing hacks :(
|
||||||
|
|
||||||
|
|
|
@ -2278,7 +2278,7 @@ static void UnfreezeStructFromCopy (void *sbase, FreezeData *fields, int num_fie
|
||||||
|
|
||||||
bool8 S9xSPCDump (const char *filename)
|
bool8 S9xSPCDump (const char *filename)
|
||||||
{
|
{
|
||||||
/* No SPC dumping in byuu SMP */
|
/* TODO: No SPC dumping in byuu SMP */
|
||||||
/*
|
/*
|
||||||
FILE *fs;
|
FILE *fs;
|
||||||
uint8 buf[SNES_SPC::spc_file_size];
|
uint8 buf[SNES_SPC::spc_file_size];
|
||||||
|
|
Loading…
Reference in New Issue