⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spc700.cpp

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    CMP (APURegisters.YA.B.Y, Work8);    IAPU.PC += 2;}void ApuAD (){// CMP Y,#00    Work8 = OP1;    CMP (APURegisters.YA.B.Y, Work8);    IAPU.PC += 2;}void Apu1F (){// JMP (abs+X)    Absolute ();    IAPU.PC = IAPU.RAM + S9xAPUGetByte (IAPU.Address + APURegisters.X) +	(S9xAPUGetByte (IAPU.Address + APURegisters.X + 1) << 8);// XXX: HERE:    // APU.Flags |= TRACE_FLAG;}void Apu5F (){// JMP abs    Absolute ();    IAPU.PC = IAPU.RAM + IAPU.Address;}void Apu20 (){// CLRP    APUClearDirectPage ();    IAPU.DirectPage = IAPU.RAM;    IAPU.PC++;}void Apu60 (){// CLRC    APUClearCarry ();    IAPU.PC++;}void ApuE0 (){// CLRV    APUClearHalfCarry ();    APUClearOverflow ();    IAPU.PC++;}void Apu24 (){// AND A,dp    APURegisters.YA.B.A &= S9xAPUGetByteZ (OP1);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu25 (){// AND A,abs    Absolute ();    APURegisters.YA.B.A &= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 3;}void Apu26 (){// AND A,(X)    APURegisters.YA.B.A &= S9xAPUGetByteZ (APURegisters.X);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC++;}void Apu27 (){// AND A,(dp+X)    IndexedXIndirect ();    APURegisters.YA.B.A &= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu28 (){// AND A,#00    APURegisters.YA.B.A &= OP1;    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu29 (){// AND dp(dest),dp(src)    Work8 = S9xAPUGetByteZ (OP1);    Work8 &= S9xAPUGetByteZ (OP2);    S9xAPUSetByteZ (Work8, OP2);    APUSetZN8 (Work8);    IAPU.PC += 3;}void Apu34 (){// AND A,dp+X    APURegisters.YA.B.A &= S9xAPUGetByteZ (OP1 + APURegisters.X);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu35 (){// AND A,abs+X    AbsoluteX ();    APURegisters.YA.B.A &= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 3;}void Apu36 (){// AND A,abs+Y    AbsoluteY ();    APURegisters.YA.B.A &= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 3;}void Apu37 (){// AND A,(dp)+Y    IndirectIndexedY ();    APURegisters.YA.B.A &= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu38 (){// AND dp,#00    Work8 = OP1;    Work8 &= S9xAPUGetByteZ (OP2);    S9xAPUSetByteZ (Work8, OP2);    APUSetZN8 (Work8);    IAPU.PC += 3;}void Apu39 (){// AND (X),(Y)    Work8 = S9xAPUGetByteZ (APURegisters.X) & S9xAPUGetByteZ (APURegisters.YA.B.Y);    APUSetZN8 (Work8);    S9xAPUSetByteZ (Work8, APURegisters.X);    IAPU.PC++;}void Apu2B (){// ROL dp    Work8 = S9xAPUGetByteZ (OP1);    ROL (Work8);    S9xAPUSetByteZ (Work8, OP1);    IAPU.PC += 2;}void Apu2C (){// ROL abs    Absolute ();    Work8 = S9xAPUGetByte (IAPU.Address);    ROL (Work8);    S9xAPUSetByte (Work8, IAPU.Address);    IAPU.PC += 3;}void Apu3B (){// ROL dp+X    Work8 = S9xAPUGetByteZ (OP1 + APURegisters.X);    ROL (Work8);    S9xAPUSetByteZ (Work8, OP1 + APURegisters.X);    IAPU.PC += 2;}void Apu3C (){// ROL A    ROL (APURegisters.YA.B.A);    IAPU.PC++;}void Apu2E (){// CBNE dp,rel    Work8 = OP1;    Relative2 ();        if (S9xAPUGetByteZ (Work8) != APURegisters.YA.B.A)    {	IAPU.PC = IAPU.RAM + (uint16) Int16;	APU.Cycles += IAPU.TwoCycles;	APUShutdown ();    }    else	IAPU.PC += 3;}void ApuDE (){// CBNE dp+X,rel    Work8 = OP1 + APURegisters.X;    Relative2 ();    if (S9xAPUGetByteZ (Work8) != APURegisters.YA.B.A)    {	IAPU.PC = IAPU.RAM + (uint16) Int16;	APU.Cycles += IAPU.TwoCycles;	APUShutdown ();    }    else	IAPU.PC += 3;}void Apu3D (){// INC X    APURegisters.X++;    APUSetZN8 (APURegisters.X);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC++;}void ApuFC (){// INC Y    APURegisters.YA.B.Y++;    APUSetZN8 (APURegisters.YA.B.Y);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC++;}void Apu1D (){// DEC X    APURegisters.X--;    APUSetZN8 (APURegisters.X);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC++;}void ApuDC (){// DEC Y    APURegisters.YA.B.Y--;    APUSetZN8 (APURegisters.YA.B.Y);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC++;}void ApuAB (){// INC dp    Work8 = S9xAPUGetByteZ (OP1) + 1;    S9xAPUSetByteZ (Work8, OP1);    APUSetZN8 (Work8);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC += 2;}void ApuAC (){// INC abs    Absolute ();    Work8 = S9xAPUGetByte (IAPU.Address) + 1;    S9xAPUSetByte (Work8, IAPU.Address);    APUSetZN8 (Work8);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC += 3;}void ApuBB (){// INC dp+X    Work8 = S9xAPUGetByteZ (OP1 + APURegisters.X) + 1;    S9xAPUSetByteZ (Work8, OP1 + APURegisters.X);    APUSetZN8 (Work8);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC += 2;}void ApuBC (){// INC A    APURegisters.YA.B.A++;    APUSetZN8 (APURegisters.YA.B.A);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC++;}void Apu8B (){// DEC dp    Work8 = S9xAPUGetByteZ (OP1) - 1;    S9xAPUSetByteZ (Work8, OP1);    APUSetZN8 (Work8);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC += 2;}void Apu8C (){// DEC abs    Absolute ();    Work8 = S9xAPUGetByte (IAPU.Address) - 1;    S9xAPUSetByte (Work8, IAPU.Address);    APUSetZN8 (Work8);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC += 3;}void Apu9B (){// DEC dp+X    Work8 = S9xAPUGetByteZ (OP1 + APURegisters.X) - 1;    S9xAPUSetByteZ (Work8, OP1 + APURegisters.X);    APUSetZN8 (Work8);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC += 2;}void Apu9C (){// DEC A    APURegisters.YA.B.A--;    APUSetZN8 (APURegisters.YA.B.A);#ifdef SPC700_SHUTDOWN    IAPU.WaitCounter++;#endif    IAPU.PC++;}void Apu44 (){// EOR A,dp    APURegisters.YA.B.A ^= S9xAPUGetByteZ (OP1);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu45 (){// EOR A,abs    Absolute ();    APURegisters.YA.B.A ^= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 3;}void Apu46 (){// EOR A,(X)    APURegisters.YA.B.A ^= S9xAPUGetByteZ (APURegisters.X);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC++;}void Apu47 (){// EOR A,(dp+X)    IndexedXIndirect ();    APURegisters.YA.B.A ^= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu48 (){// EOR A,#00    APURegisters.YA.B.A ^= OP1;    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu49 (){// EOR dp(dest),dp(src)    Work8 = S9xAPUGetByteZ (OP1);    Work8 ^= S9xAPUGetByteZ (OP2);    S9xAPUSetByteZ (Work8, OP2);    APUSetZN8 (Work8);    IAPU.PC += 3;}void Apu54 (){// EOR A,dp+X    APURegisters.YA.B.A ^= S9xAPUGetByteZ (OP1 + APURegisters.X);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu55 (){// EOR A,abs+X    AbsoluteX ();    APURegisters.YA.B.A ^= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 3;}void Apu56 (){// EOR A,abs+Y    AbsoluteY ();    APURegisters.YA.B.A ^= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 3;}void Apu57 (){// EOR A,(dp)+Y    IndirectIndexedY ();    APURegisters.YA.B.A ^= S9xAPUGetByte (IAPU.Address);    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC += 2;}void Apu58 (){// EOR dp,#00    Work8 = OP1;    Work8 ^= S9xAPUGetByteZ (OP2);    S9xAPUSetByteZ (Work8, OP2);    APUSetZN8 (Work8);    IAPU.PC += 3;}void Apu59 (){// EOR (X),(Y)    Work8 = S9xAPUGetByteZ (APURegisters.X) ^ S9xAPUGetByteZ (APURegisters.YA.B.Y);    APUSetZN8 (Work8);    S9xAPUSetByteZ (Work8, APURegisters.X);    IAPU.PC++;}void Apu4B (){// LSR dp    Work8 = S9xAPUGetByteZ (OP1);    LSR (Work8);    S9xAPUSetByteZ (Work8, OP1);    IAPU.PC += 2;}void Apu4C (){// LSR abs    Absolute ();    Work8 = S9xAPUGetByte (IAPU.Address);    LSR (Work8);    S9xAPUSetByte (Work8, IAPU.Address);    IAPU.PC += 3;}void Apu5B (){// LSR dp+X    Work8 = S9xAPUGetByteZ (OP1 + APURegisters.X);    LSR (Work8);    S9xAPUSetByteZ (Work8, OP1 + APURegisters.X);    IAPU.PC += 2;}void Apu5C (){// LSR A    LSR (APURegisters.YA.B.A);    IAPU.PC++;}void Apu7D (){// MOV A,X    APURegisters.YA.B.A = APURegisters.X;    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC++;}void ApuDD (){// MOV A,Y    APURegisters.YA.B.A = APURegisters.YA.B.Y;    APUSetZN8 (APURegisters.YA.B.A);    IAPU.PC++;}void Apu5D (){// MOV X,A    APURegisters.X = APURegisters.YA.B.A;    APUSetZN8 (APURegisters.X);    IAPU.PC++;}void ApuFD (){// MOV Y,A    APURegisters.YA.B.Y = APURegisters.YA.B.A;    APUSetZN8 (APURegisters.YA.B.Y);    IAPU.PC++;}void Apu9D (){//MOV X,SP    APURegisters.X = APURegisters.S;    APUSetZN8 (APURegisters.X);    IAPU.PC++;}void ApuBD (){// MOV SP,X    APURegisters.S = APURegisters.X;    IAPU.PC++;}void Apu6B (){// ROR dp    Work8 = S9xAPUGetByteZ (OP1);    ROR (Work8);    S9xAPUSetByteZ (Work8, OP1);    IAPU.PC += 2;}void Apu6C (){// ROR abs    Absolute ();    Work8 = S9xAPUGetByte (IAPU.Address);    ROR (Work8);    S9xAPUSetByte (Work8, IAPU.Address);    IAPU.PC += 3;}void Apu7B (){// ROR dp+X    Work8 = S9xAPUGetByteZ (OP1 + APURegisters.X);    ROR (Work8);    S9xAPUSetByteZ (Work8, OP1 + APURegisters.X);    IAPU.PC += 2;}void Apu7C (){// ROR A    ROR (APURegisters.YA.B.A);    IAPU.PC++;}void Apu6E (){// DBNZ dp,rel    Work8 = OP1;    Relative2 ();    W1 = S9xAPUGetByteZ (Work8) - 1;    S9xAPUSetByteZ (W1, Work8);    if (W1 != 0)    {	IAPU.PC = IAPU.RAM + (uint16) Int16;	APU.Cycles += IAPU.TwoCycles;    }    else	IAPU.PC += 3;}void ApuFE (){// DBNZ Y,rel    Relative ();    APURegisters.YA.B.Y--;    if (APURegisters.YA.B.Y != 0)    {	IAPU.PC = IAPU.RAM + (uint16) Int16;	APU.Cycles += IAPU.TwoCycles;    }    else	IAPU.PC += 2;}void Apu6F ()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -