コード例 #1
0
ファイル: c_mapper90.c プロジェクト: ericmckean/nesemu
static void irqtick()
{
	u8 irqmask;

	//determine prescaler
	if(irqmode & 4)
		irqmask = 7;
	else
		irqmask = 0xFF;


	//count down
	if(irqmode & 0x80) {
		irqlo--;
		if((irqlo & irqmask) == irqmask) {
			irqhi--;
			if(irqhi == 0xFF)
				dead6502_irq();
		}
	}

	//count up
	if(irqmode & 0x40) {
		irqlo++;
		if((irqlo & irqmask) == 0) {
			irqhi++;
			if(irqhi == 0)
				dead6502_irq();
		}
	}
}
コード例 #2
0
ファイル: fme7.c プロジェクト: BruceJawn/FlashNES-nesemu
void fme7_line(int line,int pcycles)
{
	if((irqenabled & 0x80) == 0)
		return;
	irqcounter -= 113;
	if((irqcounter <= 0) && (irqenabled & 1))
		dead6502_irq();
}
コード例 #3
0
ファイル: mapper105.c プロジェクト: BruceJawn/FlashNES-nesemu
static void line(int line,int pcycles)
{
    if(irqenabled == 0)
        return;
    irqcounter += pcycles / 3;
    if(irqcounter >= irqmax)
        dead6502_irq();
}
コード例 #4
0
ファイル: ffe_mapper17.c プロジェクト: ericmckean/nesemu
static void line(int line,int pcycles)
{
	if(irqenabled == 0)
		return;
	irqcycles -= pcycles / 3;
	if(irqcycles < 0) {
		irqenabled = 0;
		dead6502_irq();
	}
}
コード例 #5
0
ファイル: c_vrc6.c プロジェクト: holodnak/nesemu
static void clockirq(int clocks)
{
    while(clocks--) {
        if(irqcounter >= 0xFF) {
            irqcounter = irqlatch;
            dead6502_irq();
        }
        else
            irqcounter++;
    }
}
コード例 #6
0
void irem_h3001_line(int line,int pcycles)
{
	if(irqenabled == 0)
	   return;
	if(irqcounter == 0) {
		irqenabled = 0;
		dead6502_irq();
	}
	else
	   irqcounter--;
}
コード例 #7
0
ファイル: mapper067.c プロジェクト: BruceJawn/FlashNES-nesemu
static void line(int line,int pcycles)
{
	if(irqenabled == 0)
		return;
	irqcounter -= 113;
	if(irqcounter > 0x10000) {
		irqcounter &= 0xFFFF;
		irqenabled = 0;
		dead6502_irq();
	}
}