X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=fce.c;h=a21e5f53ed9992750d400fd47c4469ac9d1e6583;hp=2e4af6d6367668ce539971018ef77e9c4d45bab5;hb=890deff8bad82ef88678ac9c9cb7373677faf77a;hpb=6244011fd85a10400accd6d8e7d941144f92aa5b diff --git a/fce.c b/fce.c index 2e4af6d..a21e5f5 100644 --- a/fce.c +++ b/fce.c @@ -28,7 +28,7 @@ #include "fce.h" #include "fceu098.h" #include "sound.h" -#include "svga.h" +#include "svga.h" #include "netplay.h" #include "general.h" #include "endian.h" @@ -49,6 +49,7 @@ #include "file.h" #include "crc32.h" #include "ppu.h" +#include "ppu098.h" #include "palette.h" #include "movie.h" @@ -111,6 +112,7 @@ static writefunc *BWriteG; static int RWWrap=0; #ifdef ASM_6502 +#ifndef DEBUG_ASM_6502 static void asmcpu_update(int32 cycles) { // some code from x6502.c @@ -136,6 +138,7 @@ static void asmcpu_update(int32 cycles) } } } +#endif void asmcpu_unpack(void) { @@ -1265,22 +1268,21 @@ void FCEUI_Kill(void) static void EmLoop(void); +int use098code = 0; void (*ResetNES)(void) = 0; -void (*PowerNES)(void) = 0; void (*FCEUI_Emulate)(void) = 0; void FCEUI_SetEmuMode(int is_new) { + use098code = is_new; if (is_new) { ResetNES=ResetNES098; - PowerNES=PowerNES098; FCEUI_Emulate=FCEUI_Emulate098; } else { ResetNES=ResetNES081; - PowerNES=PowerNES081; FCEUI_Emulate=EmLoop; } } @@ -1355,7 +1357,10 @@ static void EmLoop(void) if(ppudead) /* Needed for Knight Rider, possibly others. */ { //memset(XBuf, 0, 320*240); - X6502_Run(scanlines_per_frame*(256+85)); + //X6502_Run(scanlines_per_frame*(256+85)); + int lines; + for (lines=scanlines_per_frame;lines;lines--) + X6502_Run(256+85); ppudead--; goto update; } @@ -1509,6 +1514,7 @@ void ResetNES081(void) X6502_Reset(); } +#ifndef DEBUG_ASM_6502 static void FCEU_MemoryRand(uint8 *ptr, uint32 size) { int x=0; @@ -1520,8 +1526,9 @@ static void FCEU_MemoryRand(uint8 *ptr, uint32 size) ptr++; } } +#endif -void PowerNES081(void) +void PowerNES(void) { if(!GameLoaded) return; @@ -1538,6 +1545,13 @@ void PowerNES081(void) ResetMapping(); PowerSound(); PowerPPU(); + + if (use098code) + FCEUPPU_Power(); + + /* Have the external game hardware "powered" after the internal NES stuff. + Needed for the NSF code and VS System code. + */ GameInterface(GI_POWER, 0); if(FCEUGameInfo.type==GIT_VSUNI) FCEU_VSUniPower();