/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
- * Copyright (C) 1998 BERO
+ * Copyright (C) 1998 BERO
* Copyright (C) 2002 Ben Parnell
*
* This program is free software; you can redistribute it and/or modify
uint32 MMC5HackVROMMask;
uint8 *MMC5HackExNTARAMPtr;
uint8 *MMC5HackVROMPTR;
-uint8 MMC5HackCHRMode=0;
+uint8 MMC5HackCHRMode=0;
uint8 MMC5HackSPMode;
uint8 MMC5HackSPScroll;
uint8 MMC5HackSPPage;
#define MMC5BGVRAMADR(V) &MMC5BGVPage[(V)>>10][(V)]
#define VRAMADR(V) &VPage[(V)>>10][(V)]
-
+
static DECLFW(BRAML)
-{
+{
RAM[A]=V;
}
return RAM[A&0x7FF];
}
-
+
static DECLFR(A2002)
{
uint8 ret;
PPUGenLatch=ret=VRAMBuffer;
if(PPU_hook) PPU_hook(tmp);
- if(tmp<0x2000)
+ if(tmp<0x2000)
{
VRAMBuffer=VPage[tmp>>10][tmp];
}
- else
+ else
{
VRAMBuffer=vnapage[(tmp>>10)&0x3][tmp&0x3FF];
}
}
static DECLFW(B2007)
-{
+{
uint32 tmp=RefreshAddr&0x3FFF;
PPUGenLatch=V;
VPage[tmp>>10][tmp]=V;
}
else
- {
+ {
if(PPUNTARAM&(1<<((tmp&0xF00)>>10)))
vnapage[((tmp&0xF00)>>10)][tmp&0x3FF]=V;
}
}
static DECLFW(B4014)
-{
+{
uint32 t=V<<8;
int x;
for(x=0;x<256;x++)
}
#ifdef FRAMESKIP
-extern int framesRendered;
+int FSkip_setting=-1; // auto
int FSkip=0;
void FCEUI_FrameSkip(int x)
{
{
#endif
if(PPU[1]&0x01)
- {
+ {
for(x=63;x>=0;x--)
*(uint32 *)&target[x<<2]=(*(uint32*)&target[x<<2])&0xF0F0F0F0;
}
{
tem=Pal[0]|(Pal[0]<<8)|(Pal[0]<<16)|(Pal[0]<<24);
FCEU_dwmemset(target,tem,256);
- }
+ }
if(InputScanlineHook)
InputScanlineHook(target, scanline);
}
{
uint32 vofs;
int X1;
- uint8 *P=target;
+ uint8 *P=target;
vofs=0;
-
+
Pal[0]|=64;
Pal[4]|=64;
Pal[8]|=64;
uint8 cc,zz,zz2;
uint32 vadr;
- if((tochange<=0 && MMC5HackSPMode&0x40) ||
+ if((tochange<=0 && MMC5HackSPMode&0x40) ||
(tochange>0 && !(MMC5HackSPMode&0x40)))
{
uint8 xs,ys;
- xs=33-X1;
+ xs=33-X1;
ys=((scanline>>3)+MMC5HackSPScroll)&0x1F;
if(ys>=0x1E) ys-=0x1E;
vadr=(MMC5HackExNTARAMPtr[xs|(ys<<5)]<<4)+(vofs&7);
{
uint8 xs,ys;
- xs=33-X1;
+ xs=33-X1;
ys=((scanline>>3)+MMC5HackSPScroll)&0x1F;
if(ys>=0x1E) ys-=0x1E;
vadr=(MMC5HackExNTARAMPtr[xs|(ys<<5)]<<4)+(vofs&7);
{
for(X1=33;X1;X1--,P+=8)
{
- uint8 *C;
+ uint8 *C;
uint8 cc;
uint8 zz2;
- uint32 vadr;
+ uint32 vadr;
C=MMC5HackVROMPTR;
zz2=(RefreshAddr>>10)&3;
vadr = (vnapage[zz2][RefreshAddr & 0x3ff] << 4) + vofs;
- C += (((MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff]) & 0x3f &
+ C += (((MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff]) & 0x3f &
MMC5HackVROMMask) << 12) + (vadr & 0xfff);
vadr = (MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff] & 0xC0)>> 4;
cc = vadr;
cc=((cc >> ((zz&2) + ((RefreshAddr&0x40)>>4))) &3) <<2;
#include "fceline.h"
-
+
if((RefreshAddr&0x1f)==0x1f)
RefreshAddr^=0x41F;
else
RefreshAddr++;
- }
+ }
}
- } // End if(MMC5Hack)
+ } // End if(MMC5Hack)
else if(PPU_hook)
{
for(X1=33;X1;X1--,P+=8)
{
- uint8 *C;
+ uint8 *C;
uint8 cc,zz,zz2;
- uint32 vadr;
+ uint32 vadr;
zz=RefreshAddr&0x1F;
zz2=(RefreshAddr>>10)&3;
}
}
else
- {
+ {
for(X1=33;X1;X1--,P+=8)
{
uint8 *C;
cc=vnapage[zz2][0x3c0+(zz>>2)+((RefreshAddr&0x380)>>4)];
cc=((cc >> ((zz&2) + ((RefreshAddr&0x40)>>4))) &3) <<2;
#include "fceline.h"
-
+
if((RefreshAddr&0x1f)==0x1f)
RefreshAddr^=0x41F;
else
FlushGameCheats();
#ifdef NETWORK
if(FSettings.NetworkPlay) KillNetplay();
- #endif
+ #endif
GameInterface(GI_CLOSE);
CloseGenie();
GameLoaded=0;
endlseq:
FCEU_fclose(fp);
- GameLoaded=1;
+ GameLoaded=1;
FCEU_ResetVidSys();
if(FCEUGameInfo.type!=GIT_NSF)
LoadGamePalette();
LoadGameCheats();
}
-
+
FCEU_ResetPalette();
Exit=0;
return(&FCEUGameInfo);
FSettings.FirstSLine=FSettings.UsrFirstSLine[0];
FSettings.LastSLine=FSettings.UsrLastSLine[0];
}
+ printf("PAL = %i\n", PAL);
SetSoundVariables();
}
Loop6502();
if(tosprite>=256)
- {
+ {
X6502_Run(256-harko);
Fixit1();
X6502_Run(harko);
breaks a Super Donkey Kong game. */
X6502_Run(12); /* I need to figure out the true nature and length
- of this delay.
+ of this delay.
*/
if(FCEUGameInfo.type==GIT_NSF)
TriggerNMINSF();
else if(VBlankON)
TriggerNMI();
- X6502_Run((scanlines_per_frame-242)*(256+85)-12);
+ X6502_Run((scanlines_per_frame-242)*(256+85)-12);
PPU_status&=0x1f;
{
FCEU_PutImageDummy();
FSkip--;
- framesRendered++;
FCEUD_Update(0,WaveFinalMono,ssize);
}
else
X6502_Reset();
}
-void PowerNES(void)
+void PowerNES(void)
{
if(!GameLoaded) return;