From e04cb171ee038280f543fe2e983e9fe9ba3dcb11 Mon Sep 17 00:00:00 2001 From: bladeoner Date: Wed, 14 Nov 2018 03:24:16 +0100 Subject: [PATCH] Get SuperFX Overclock working, APU hacks to fix Earthworm Jim 2, adjust SA1 settings to fix Super Mario RPG slowdowns * Get SuperFX Overclock working with core 1.57 * Get APU Hacks working with core 1.57 to fix Earthworm Jim 2 * Adjusted SA1 settings to fix Super Mario RPG slowdowns with core 1.57 --- Makefile.gc | 4 +- hbc/meta.xml | 4 +- readme.txt | 5 + source/menu.cpp | 2 +- source/preferences.cpp | 10 +- source/snes9x/fxemu.cpp | 6 +- source/snes9x/logger.cpp | 8 + source/snes9x/memmap.cpp | 19 ++- source/snes9x/msu1.cpp | 6 +- source/snes9x/reader.cpp | 353 --------------------------------------- source/snes9x/reader.h | 228 ------------------------- source/snes9x/sa1cpu.cpp | 8 +- source/snes9x/snes9x.h | 3 +- source/snes9xgx.cpp | 2 +- source/snes9xgx.h | 2 +- 15 files changed, 61 insertions(+), 599 deletions(-) delete mode 100644 source/snes9x/reader.cpp delete mode 100644 source/snes9x/reader.h diff --git a/Makefile.gc b/Makefile.gc index 7011cd3..bd02f10 100644 --- a/Makefile.gc +++ b/Makefile.gc @@ -19,8 +19,8 @@ TARGET := snes9xgx-gc TARGETDIR := executables BUILD := build_gc SOURCES := source source/images source/sounds source/fonts source/lang \ - source/gui source/utils source/utils/sz \ - source/snes9x source/snes9x/apu source/utils/vm + source/gui source/utils source/utils/sz source/utils/vm \ + source/snes9x source/snes9x/apu INCLUDES := source source/snes9x #--------------------------------------------------------------------------------- diff --git a/hbc/meta.xml b/hbc/meta.xml index e211737..691bdba 100644 --- a/hbc/meta.xml +++ b/hbc/meta.xml @@ -2,8 +2,8 @@ Snes9x GX Tantric, Zopenko, Askot - 4.3.9 - 20180824 + 4.4.0 + 20181113 Super Nintendo Emulator A port of Snes9x to the Wii. diff --git a/readme.txt b/readme.txt index 676de33..e2b4cbb 100644 --- a/readme.txt +++ b/readme.txt @@ -41,6 +41,11 @@ Wii homebrew is WiiBrew (www.wiibrew.org). * Fixed mangled image when switching between HQ2x and scanlines filters * Added Wii U GamePad support (thanks Fix94!) * Added BS-X BIOS loading +* Fixed Tengai Mekyou Zero black screen +* Fixed Chou Aniki black screen +* Get SuperFX Overclock working with core 1.57 +* Get APU Hacks working with core 1.57 to fix Earthworm Jim 2 +* Adjusted SA1 settings to fix Super Mario RPG slowdowns with core 1.57 [4.3.9 - August 24, 2018] diff --git a/source/menu.cpp b/source/menu.cpp index 2f1447c..10d0756 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -3256,7 +3256,7 @@ static int MenuSettingsVideo() } switch(GCSettings.sfxOverclock) { - case 0: Settings.SuperFXSpeedPerLine = 0.417 * 10.5e6; break; + case 0: Settings.SuperFXSpeedPerLine = 5823405; break; case 1: Settings.SuperFXSpeedPerLine = 0.417 * 40.5e6; break; case 2: Settings.SuperFXSpeedPerLine = 0.417 * 60.5e6; break; } diff --git a/source/preferences.cpp b/source/preferences.cpp index e9d8792..799568b 100644 --- a/source/preferences.cpp +++ b/source/preferences.cpp @@ -492,6 +492,7 @@ DefaultSettings () // Graphics Settings.Transparency = true; Settings.SupportHiRes = true; + Settings.MaxSpriteTilesPerLine = 34; Settings.SkipFrames = AUTO_FRAMERATE; Settings.TurboSkipFrames = 19; Settings.DisplayFrameRate = false; @@ -504,8 +505,13 @@ DefaultSettings () GCSettings.sfxOverclock = 0; /* Initialize SuperFX CPU to normal speed by default */ - Settings.SuperFXSpeedPerLine = 0.417 * 10.5e6; - + Settings.SuperFXSpeedPerLine = 5823405; + + Settings.SuperFXClockMultiplier = 100; + + Settings.OneClockCycle = 6; + Settings.OneSlowClockCycle = 8; + Settings.TwoClockCycles = 12; } /**************************************************************************** diff --git a/source/snes9x/fxemu.cpp b/source/snes9x/fxemu.cpp index 4c01a48..2ef97c3 100644 --- a/source/snes9x/fxemu.cpp +++ b/source/snes9x/fxemu.cpp @@ -215,7 +215,11 @@ void S9xResetSuperFX (void) { // FIXME: Snes9x only runs the SuperFX at the end of every line. // 5823405 is a magic number that seems to work for most games. - SuperFX.speedPerLine = (uint32) (5823405 * ((1.0 / (float) Memory.ROMFramesPerSecond) / ((float) (Timings.V_Max)))); + #ifdef GEKKO + SuperFX.speedPerLine = (uint32) (Settings.SuperFXSpeedPerLine * ((1.0f / Memory.ROMFramesPerSecond) / ((float) (Timings.V_Max)))); + #else + SuperFX.speedPerLine = (uint32) (5823405 * ((1.0 / (float) Memory.ROMFramesPerSecond) / ((float) (Timings.V_Max)))); + #endif SuperFX.oneLineDone = FALSE; SuperFX.vFlags = 0; CPU.IRQExternal = FALSE; diff --git a/source/snes9x/logger.cpp b/source/snes9x/logger.cpp index 12dc923..6a0edb4 100644 --- a/source/snes9x/logger.cpp +++ b/source/snes9x/logger.cpp @@ -189,6 +189,12 @@ Nintendo Co., Limited and its subsidiary companies. ***********************************************************************************/ +#ifdef GEKKO +void S9xResetLogger (void) { } +void S9xCloseLogger (void) { } +void S9xVideoLogger (void *pixels, int width, int height, int depth, int bytes_per_line) { } +void S9xAudioLogger (void *samples, int length) { } +#else #include "snes9x.h" #include "movie.h" @@ -280,3 +286,5 @@ void S9xAudioLogger (void *samples, int length) ignore = fwrite(samples, 1, length, audio); } } + +#endif diff --git a/source/snes9x/memmap.cpp b/source/snes9x/memmap.cpp index d5f3458..ab0d934 100644 --- a/source/snes9x/memmap.cpp +++ b/source/snes9x/memmap.cpp @@ -3819,6 +3819,9 @@ void CMemory::ApplyROMFixes (void) //// APU timing hacks :( Timings.APUSpeedup = 0; + #ifdef GEKKO + Timings.APUAllowTimeOverflow = FALSE; + #endif if (!Settings.DisableGameSpecificHacks) { @@ -3864,10 +3867,24 @@ void CMemory::ApplyROMFixes (void) match_na("HEIWA Parlor!Mini8") || // Parlor mini 8 match_nn("SANKYO Fever! \xCC\xA8\xB0\xCA\xDE\xB0!")) // SANKYO Fever! Fever! Timings.APUSpeedup = 1; */ + #ifdef GEKKO + 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; + #endif } S9xAPUTimingSetSpeedup(Timings.APUSpeedup); - + #ifdef GEKKO + S9xAPUAllowTimeOverflow(Timings.APUAllowTimeOverflow); + #endif //// Other timing hacks :( Timings.HDMAStart = SNES_HDMA_START_HC + Settings.HDMATimingHack - 100; diff --git a/source/snes9x/msu1.cpp b/source/snes9x/msu1.cpp index ceb7358..472b371 100644 --- a/source/snes9x/msu1.cpp +++ b/source/snes9x/msu1.cpp @@ -197,7 +197,6 @@ #include "display.h" #include "msu1.h" #include "apu/blargg_endian.h" -#include "snes9xgx.h" #include #include @@ -246,11 +245,12 @@ static int unzFindExtension(unzFile &file, const char *ext, bool restart = TRUE, STREAM S9xMSU1OpenFile(const char *msu_ext, bool skip_unpacked) { #ifdef GEKKO - char filename[MAXPATHLEN]; + char filename[1024]; sprintf(filename, "%s%s%s", Memory.ROMFilePath, Memory.ROMFilename, msu_ext); #else - const char *filename = S9xGetFilename(msu_ext, ROMFILENAME_DIR); + const char *filename = S9xGetFilename(msu_ext, ROMFILENAME_DIR); #endif + STREAM file = 0; if (!skip_unpacked) diff --git a/source/snes9x/reader.cpp b/source/snes9x/reader.cpp deleted file mode 100644 index fa7ba1e..0000000 --- a/source/snes9x/reader.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/*********************************************************************************** - Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. - - (c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com), - Jerremy Koot (jkoot@snes9x.com) - - (c) Copyright 2002 - 2004 Matthew Kendora - - (c) Copyright 2002 - 2005 Peter Bortas (peter@bortas.org) - - (c) Copyright 2004 - 2005 Joel Yliluoma (http://iki.fi/bisqwit/) - - (c) Copyright 2001 - 2006 John Weidman (jweidman@slip.net) - - (c) Copyright 2002 - 2006 funkyass (funkyass@spam.shaw.ca), - Kris Bleakley (codeviolation@hotmail.com) - - (c) Copyright 2002 - 2010 Brad Jorsch (anomie@users.sourceforge.net), - Nach (n-a-c-h@users.sourceforge.net), - zones (kasumitokoduck@yahoo.com) - - (c) Copyright 2006 - 2007 nitsuja - - (c) Copyright 2009 - 2010 BearOso, - OV2 - - - BS-X C emulator code - (c) Copyright 2005 - 2006 Dreamer Nom, - zones - - C4 x86 assembler and some C emulation code - (c) Copyright 2000 - 2003 _Demo_ (_demo_@zsnes.com), - Nach, - zsKnight (zsknight@zsnes.com) - - C4 C++ code - (c) Copyright 2003 - 2006 Brad Jorsch, - Nach - - DSP-1 emulator code - (c) Copyright 1998 - 2006 _Demo_, - Andreas Naive (andreasnaive@gmail.com), - Gary Henderson, - Ivar (ivar@snes9x.com), - John Weidman, - Kris Bleakley, - Matthew Kendora, - Nach, - neviksti (neviksti@hotmail.com) - - DSP-2 emulator code - (c) Copyright 2003 John Weidman, - Kris Bleakley, - Lord Nightmare (lord_nightmare@users.sourceforge.net), - Matthew Kendora, - neviksti - - DSP-3 emulator code - (c) Copyright 2003 - 2006 John Weidman, - Kris Bleakley, - Lancer, - z80 gaiden - - DSP-4 emulator code - (c) Copyright 2004 - 2006 Dreamer Nom, - John Weidman, - Kris Bleakley, - Nach, - z80 gaiden - - OBC1 emulator code - (c) Copyright 2001 - 2004 zsKnight, - pagefault (pagefault@zsnes.com), - Kris Bleakley - Ported from x86 assembler to C by sanmaiwashi - - SPC7110 and RTC C++ emulator code used in 1.39-1.51 - (c) Copyright 2002 Matthew Kendora with research by - zsKnight, - John Weidman, - Dark Force - - SPC7110 and RTC C++ emulator code used in 1.52+ - (c) Copyright 2009 byuu, - neviksti - - S-DD1 C emulator code - (c) Copyright 2003 Brad Jorsch with research by - Andreas Naive, - John Weidman - - S-RTC C emulator code - (c) Copyright 2001 - 2006 byuu, - John Weidman - - ST010 C++ emulator code - (c) Copyright 2003 Feather, - John Weidman, - Kris Bleakley, - Matthew Kendora - - Super FX x86 assembler emulator code - (c) Copyright 1998 - 2003 _Demo_, - pagefault, - zsKnight - - Super FX C emulator code - (c) Copyright 1997 - 1999 Ivar, - Gary Henderson, - John Weidman - - Sound emulator code used in 1.5-1.51 - (c) Copyright 1998 - 2003 Brad Martin - (c) Copyright 1998 - 2006 Charles Bilyue' - - Sound emulator code used in 1.52+ - (c) Copyright 2004 - 2007 Shay Green (gblargg@gmail.com) - - SH assembler code partly based on x86 assembler code - (c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se) - - 2xSaI filter - (c) Copyright 1999 - 2001 Derek Liauw Kie Fa - - HQ2x, HQ3x, HQ4x filters - (c) Copyright 2003 Maxim Stepin (maxim@hiend3d.com) - - NTSC filter - (c) Copyright 2006 - 2007 Shay Green - - GTK+ GUI code - (c) Copyright 2004 - 2010 BearOso - - Win32 GUI code - (c) Copyright 2003 - 2006 blip, - funkyass, - Matthew Kendora, - Nach, - nitsuja - (c) Copyright 2009 - 2010 OV2 - - Mac OS GUI code - (c) Copyright 1998 - 2001 John Stiles - (c) Copyright 2001 - 2010 zones - - - Specific ports contains the works of other authors. See headers in - individual files. - - - Snes9x homepage: http://www.snes9x.com/ - - Permission to use, copy, modify and/or distribute Snes9x in both binary - and source form, for non-commercial purposes, is hereby granted without - fee, providing that this license information and copyright notice appear - with all copies and any derived work. - - This software is provided 'as-is', without any express or implied - warranty. In no event shall the authors be held liable for any damages - arising from the use of this software or it's derivatives. - - Snes9x is freeware for PERSONAL USE only. Commercial users should - seek permission of the copyright holders first. Commercial use includes, - but is not limited to, charging money for Snes9x or software derived from - Snes9x, including Snes9x or derivatives in commercial game bundles, and/or - using Snes9x as a promotion for your commercial product. - - The copyright holders request that bug fixes and improvements to the code - should be forwarded to them so everyone can benefit from the modifications - in future versions. - - Super NES and Super Nintendo Entertainment System are trademarks of - Nintendo Co., Limited and its subsidiary companies. - ***********************************************************************************/ - - -// Abstract the details of reading from zip files versus FILE *'s. - -#include -#ifdef UNZIP_SUPPORT -#include "unzip.h" -#endif -#include "snes9x.h" -#include "reader.h" - - -// Generic constructor/destructor - -Reader::Reader (void) -{ - return; -} - -Reader::~Reader (void) -{ - return; -} - -// Generic getline function, based on gets. Reimlpement if you can do better. - -char * Reader::getline (void) -{ - bool eof; - std::string ret; - - ret = getline(eof); - if (ret.size() == 0 && eof) - return (NULL); - - return (strdup(ret.c_str())); -} - -std::string Reader::getline (bool &eof) -{ - char buf[1024]; - std::string ret; - - eof = false; - ret.clear(); - - do - { - if (gets(buf, sizeof(buf)) == NULL) - { - eof = true; - break; - } - - ret.append(buf); - } - while (*ret.rbegin() != '\n'); - - return (ret); -} - -// snes9x.h STREAM reader - -fReader::fReader (STREAM f) -{ - fp = f; -} - -fReader::~fReader (void) -{ - return; -} - -int fReader::get_char (void) -{ - return (GETC_STREAM(fp)); -} - -char * fReader::gets (char *buf, size_t len) -{ - return (GETS_STREAM(buf, len, fp)); -} - -size_t fReader::read (char *buf, size_t len) -{ - return (READ_STREAM(buf, len, fp)); -} - -// unzip reader - -#ifdef UNZIP_SUPPORT - -unzReader::unzReader (unzFile &v) -{ - file = v; - head = NULL; - numbytes = 0; -} - -unzReader::~unzReader (void) -{ - return; -} - -int unzReader::get_char (void) -{ - unsigned char c; - - if (numbytes <= 0) - { - numbytes = unzReadCurrentFile(file, buffer, unz_BUFFSIZ); - if (numbytes <= 0) - return (EOF); - head = buffer; - } - - c = *head; - head++; - numbytes--; - - return ((int) c); -} - -char * unzReader::gets (char *buf, size_t len) -{ - size_t i; - int c; - - for (i = 0; i < len - 1; i++) - { - c = get_char(); - if (c == EOF) - { - if (i == 0) - return (NULL); - break; - } - - buf[i] = (char) c; - if (buf[i] == '\n') - break; - } - - buf[i] = '\0'; - - return (buf); -} - -size_t unzReader::read (char *buf, size_t len) -{ - if (len == 0) - return (len); - - if (len <= numbytes) - { - memcpy(buf, head, len); - numbytes -= len; - head += len; - return (len); - } - - size_t numread = 0; - if (numbytes > 0) - { - memcpy(buf, head, numbytes); - numread += numbytes; - head = NULL; - numbytes = 0; - } - - int l = unzReadCurrentFile(file, buf + numread, len - numread); - if (l > 0) - numread += l; - - return (numread); -} - -#endif diff --git a/source/snes9x/reader.h b/source/snes9x/reader.h deleted file mode 100644 index 2019cc1..0000000 --- a/source/snes9x/reader.h +++ /dev/null @@ -1,228 +0,0 @@ -/*********************************************************************************** - Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. - - (c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com), - Jerremy Koot (jkoot@snes9x.com) - - (c) Copyright 2002 - 2004 Matthew Kendora - - (c) Copyright 2002 - 2005 Peter Bortas (peter@bortas.org) - - (c) Copyright 2004 - 2005 Joel Yliluoma (http://iki.fi/bisqwit/) - - (c) Copyright 2001 - 2006 John Weidman (jweidman@slip.net) - - (c) Copyright 2002 - 2006 funkyass (funkyass@spam.shaw.ca), - Kris Bleakley (codeviolation@hotmail.com) - - (c) Copyright 2002 - 2010 Brad Jorsch (anomie@users.sourceforge.net), - Nach (n-a-c-h@users.sourceforge.net), - zones (kasumitokoduck@yahoo.com) - - (c) Copyright 2006 - 2007 nitsuja - - (c) Copyright 2009 - 2010 BearOso, - OV2 - - - BS-X C emulator code - (c) Copyright 2005 - 2006 Dreamer Nom, - zones - - C4 x86 assembler and some C emulation code - (c) Copyright 2000 - 2003 _Demo_ (_demo_@zsnes.com), - Nach, - zsKnight (zsknight@zsnes.com) - - C4 C++ code - (c) Copyright 2003 - 2006 Brad Jorsch, - Nach - - DSP-1 emulator code - (c) Copyright 1998 - 2006 _Demo_, - Andreas Naive (andreasnaive@gmail.com), - Gary Henderson, - Ivar (ivar@snes9x.com), - John Weidman, - Kris Bleakley, - Matthew Kendora, - Nach, - neviksti (neviksti@hotmail.com) - - DSP-2 emulator code - (c) Copyright 2003 John Weidman, - Kris Bleakley, - Lord Nightmare (lord_nightmare@users.sourceforge.net), - Matthew Kendora, - neviksti - - DSP-3 emulator code - (c) Copyright 2003 - 2006 John Weidman, - Kris Bleakley, - Lancer, - z80 gaiden - - DSP-4 emulator code - (c) Copyright 2004 - 2006 Dreamer Nom, - John Weidman, - Kris Bleakley, - Nach, - z80 gaiden - - OBC1 emulator code - (c) Copyright 2001 - 2004 zsKnight, - pagefault (pagefault@zsnes.com), - Kris Bleakley - Ported from x86 assembler to C by sanmaiwashi - - SPC7110 and RTC C++ emulator code used in 1.39-1.51 - (c) Copyright 2002 Matthew Kendora with research by - zsKnight, - John Weidman, - Dark Force - - SPC7110 and RTC C++ emulator code used in 1.52+ - (c) Copyright 2009 byuu, - neviksti - - S-DD1 C emulator code - (c) Copyright 2003 Brad Jorsch with research by - Andreas Naive, - John Weidman - - S-RTC C emulator code - (c) Copyright 2001 - 2006 byuu, - John Weidman - - ST010 C++ emulator code - (c) Copyright 2003 Feather, - John Weidman, - Kris Bleakley, - Matthew Kendora - - Super FX x86 assembler emulator code - (c) Copyright 1998 - 2003 _Demo_, - pagefault, - zsKnight - - Super FX C emulator code - (c) Copyright 1997 - 1999 Ivar, - Gary Henderson, - John Weidman - - Sound emulator code used in 1.5-1.51 - (c) Copyright 1998 - 2003 Brad Martin - (c) Copyright 1998 - 2006 Charles Bilyue' - - Sound emulator code used in 1.52+ - (c) Copyright 2004 - 2007 Shay Green (gblargg@gmail.com) - - SH assembler code partly based on x86 assembler code - (c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se) - - 2xSaI filter - (c) Copyright 1999 - 2001 Derek Liauw Kie Fa - - HQ2x, HQ3x, HQ4x filters - (c) Copyright 2003 Maxim Stepin (maxim@hiend3d.com) - - NTSC filter - (c) Copyright 2006 - 2007 Shay Green - - GTK+ GUI code - (c) Copyright 2004 - 2010 BearOso - - Win32 GUI code - (c) Copyright 2003 - 2006 blip, - funkyass, - Matthew Kendora, - Nach, - nitsuja - (c) Copyright 2009 - 2010 OV2 - - Mac OS GUI code - (c) Copyright 1998 - 2001 John Stiles - (c) Copyright 2001 - 2010 zones - - - Specific ports contains the works of other authors. See headers in - individual files. - - - Snes9x homepage: http://www.snes9x.com/ - - Permission to use, copy, modify and/or distribute Snes9x in both binary - and source form, for non-commercial purposes, is hereby granted without - fee, providing that this license information and copyright notice appear - with all copies and any derived work. - - This software is provided 'as-is', without any express or implied - warranty. In no event shall the authors be held liable for any damages - arising from the use of this software or it's derivatives. - - Snes9x is freeware for PERSONAL USE only. Commercial users should - seek permission of the copyright holders first. Commercial use includes, - but is not limited to, charging money for Snes9x or software derived from - Snes9x, including Snes9x or derivatives in commercial game bundles, and/or - using Snes9x as a promotion for your commercial product. - - The copyright holders request that bug fixes and improvements to the code - should be forwarded to them so everyone can benefit from the modifications - in future versions. - - Super NES and Super Nintendo Entertainment System are trademarks of - Nintendo Co., Limited and its subsidiary companies. - ***********************************************************************************/ - - -#ifndef _READER_H_ -#define _READER_H_ - -class Reader -{ - public: - Reader (void); - virtual ~Reader (void); - virtual int get_char (void) = 0; - virtual char * gets (char *, size_t) = 0; - virtual char * getline (void); // free() when done - virtual std::string getline (bool &); - virtual size_t read (char *, size_t) = 0; -}; - -class fReader : public Reader -{ - public: - fReader (STREAM); - virtual ~fReader (void); - virtual int get_char (void); - virtual char * gets (char *, size_t); - virtual size_t read (char *, size_t); - - private: - STREAM fp; -}; - -#ifdef UNZIP_SUPPORT - -#define unz_BUFFSIZ 1024 - -class unzReader : public Reader -{ - public: - unzReader (unzFile &); - virtual ~unzReader (void); - virtual int get_char (void); - virtual char * gets (char *, size_t); - virtual size_t read (char *, size_t); - - private: - unzFile file; - char buffer[unz_BUFFSIZ]; - char *head; - size_t numbytes; -}; - -#endif - -#endif diff --git a/source/snes9x/sa1cpu.cpp b/source/snes9x/sa1cpu.cpp index a83c77b..cbadf9a 100644 --- a/source/snes9x/sa1cpu.cpp +++ b/source/snes9x/sa1cpu.cpp @@ -311,8 +311,12 @@ void S9xSA1MainLoop (void) S9xSA1Opcode_IRQ(); } } - - for (int i = 0; i < 5 && !(Memory.FillRAM[0x2200] & 0x60); i++) + + #ifdef GEKKO + for (int i = 0; i < 3 && !(Memory.FillRAM[0x2200] & 0x60); i++) + #else + for (int i = 0; i < 5 && !(Memory.FillRAM[0x2200] & 0x60); i++) + #endif { #ifdef DEBUGGER if (SA1.Flags & TRACE_FLAG) diff --git a/source/snes9x/snes9x.h b/source/snes9x/snes9x.h index 84696d4..8bd374c 100644 --- a/source/snes9x/snes9x.h +++ b/source/snes9x/snes9x.h @@ -485,14 +485,13 @@ struct SSettings bool8 UpAndDown; bool8 OpenGLEnable; + float SuperFXSpeedPerLine; uint32 SuperFXClockMultiplier; int OneClockCycle; int OneSlowClockCycle; int TwoClockCycles; int MaxSpriteTilesPerLine; - - float SuperFXSpeedPerLine; }; struct SSNESGameFixes diff --git a/source/snes9xgx.cpp b/source/snes9xgx.cpp index fe54c0c..a83cebc 100644 --- a/source/snes9xgx.cpp +++ b/source/snes9xgx.cpp @@ -480,7 +480,7 @@ int main(int argc, char *argv[]) switch (GCSettings.sfxOverclock) { - case 0: Settings.SuperFXSpeedPerLine = 0.417 * 10.5e6; break; + case 0: Settings.SuperFXSpeedPerLine = 5823405; break; case 1: Settings.SuperFXSpeedPerLine = 0.417 * 40.5e6; break; case 2: Settings.SuperFXSpeedPerLine = 0.417 * 60.5e6; break; S9xResetSuperFX(); diff --git a/source/snes9xgx.h b/source/snes9xgx.h index 553e273..469e0d8 100644 --- a/source/snes9xgx.h +++ b/source/snes9xgx.h @@ -20,7 +20,7 @@ #include "filelist.h" #define APPNAME "Snes9x GX" -#define APPVERSION "4.3.9" +#define APPVERSION "4.4.0" #define APPFOLDER "snes9xgx" #define PREF_FILE_NAME "settings.xml"