Пример #1
0
    public void reset(string rom, int stage)
    {
        switch (stage)
        {
        case 1:
            //SpaceGameboy.Echo("Resetting gpu");
            gPU.reset(this.z80, this.mMU);
            break;

        case 2:
            gPU.reset2();
            break;

        case 3:
            gPU.reset3();
            break;

        case 4:
            gPU.reset4();
            break;

        case 5:
            // SpaceGameboy.Echo("Resetting mmu");
            mMU.reset(gPU, /*tIMER,*/ kEY, z80);
            //   SpaceGameboy.Echo("Resetting z80");
            z80.reset(mMU);
            //   SpaceGameboy.Echo("Resetting key");
            kEY.reset();
            //     SpaceGameboy.Echo("Resetting timer");
            //	tIMER.reset(mMU, z80);
            z80.r.pc = 0x100; z80.r.sp = 0xFFFE; /*z80.r.hl=0x014D;*/ z80.r.c = 0x13; z80.r.e = 0xD8; z80.r.a = 1;
            //TODO:                                              ^ this was missing, I don't know if it is supposed to be set
            break;

        case 6:
            // SpaceGameboy.Echo("Loading ROM!");
            byte[] r;
            if (rom.Substring(0, 13) == "data:;base64,")
            {
                r = Convert.FromBase64String(rom.Substring(13));
            }
            else
            {
                r = Convert.FromBase64String(rom);
            }
            mMU.load(r);
            this.run();
            break;
        }

        startTime = hblankTime = System.DateTime.Now.Ticks;

        //    Echo("MAIN: Reset.");
    }