#include "fce.h"
#include "ppu098.h"
#include "nsf.h"
-#include "sound098.h"
+#include "sound.h"
#include "memory.h"
#include "cart.h"
#include "video.h"
#include "input.h"
+#ifdef GP2X
+#include "drivers/gp2x/asmutils.h"
+#endif
+
#define Pal (PALRAM)
static void FetchSpriteData098(void);
}
}
-// TODO: make this compatible with the new sound code
-#ifdef ASM_6502
-#define asmcpu_update(c) \
- FCEU_SoundCPUHook098((((c) >> 4) * 43) >> 7)
+#if defined(ASM_6502) && !defined(DEBUG_ASM_6502)
+static void asmcpu_update(int32 cycles)
+{
+ // some code from x6502.c
+ fhcnt-=cycles;
+ if(fhcnt<=0)
+ {
+ FrameSoundUpdate();
+ fhcnt+=fhinc;
+ }
+
+ if(PCMIRQCount>0)
+ {
+ PCMIRQCount-=cycles;
+ if(PCMIRQCount<=0)
+ {
+ vdis=1;
+ if((PSG[0x10]&0x80) && !(PSG[0x10]&0x40))
+ {
+ extern uint8 SIRQStat;
+ SIRQStat|=0x80;
+ X6502_IRQBegin(FCEU_IQDPCM);
+ }
+ }
+ }
+}
#endif
extern int ppudead;
{
// FCEU_printf("Trigger NMI, %d, %d\n",timestamp,ppudead);
// TriggerNMI2();
- TriggerNMI(); // TODO
+ TriggerNMI(); // TODO?
}
PPU[0]=V;
TempAddr&=0xF3FF;
static void ResetRL(uint8 *target)
{
- memset(target,0xFF,256);
+ FCEU_dwmemset(target,0xffffffff,256);
if(InputScanlineHook)
InputScanlineHook(0,0,0,0);
Plinef=target;
void MMC5_hb(int); /* Ugh ugh ugh. */
static void DoLine(void)
{
+#ifndef GP2X
int x;
+#endif
uint8 *target=XBuf+scanline*320+32;
if(MMC5Hack && (ScreenON || SpriteON)) MMC5_hb(scanline);
if(SpriteON)
CopySprites098(target);
+#ifdef GP2X
+ if(ScreenON || SpriteON) // Yes, very el-cheapo.
+ {
+ if(PPU[1]&0x01)
+ block_and(target, 256, 0x30);
+ }
+ if((PPU[1]>>5)==0x7)
+ block_or(target, 256, 0xc0);
+ else if(PPU[1]&0xE0)
+ block_or(target, 256, 0x40);
+ else
+ block_andor(target, 256, 0x3f, 0x80);
+#else
if(ScreenON || SpriteON) // Yes, very el-cheapo.
{
if(PPU[1]&0x01)
else
for(x=63;x>=0;x--)
*(uint32 *)&target[x<<2]=((*(uint32*)&target[x<<2])&0x3f3f3f3f)|0x80808080;
+#endif
sphitx=0x100;