コード例 #1
0
        private void StartTick_(StartTickEvent _)
        {
            this.pboCacheDirty_ = true;

            var doLog = false;

            var cpu         = this.cpu_;
            var memoryMap   = this.mmu_.MemoryMap;
            var ioAddresses = memoryMap.IoAddresses;
            var stat        = ioAddresses.Stat;

            var initialPpuMode = stat.Mode;

            int cyclesThisIteration = 0;

            if (!doLog)
            {
                cyclesThisIteration = this.cpu_.ExecuteCycles(70224); // 70221
            }
            else
            {
                var cyclesPerTick = 1000;

                var registers = this.mmu_.Registers;

                var    pc        = registers.Pc;
                ushort initialPc = 0;

                var lcdc = ioAddresses.Lcdc;
                var ly   = ioAddresses.Ly;

                var instruction = 0;
                var output      = new StringBuilder();

                try {
                    for (;;)
                    {
                        var ppuMode = cpu.PpuMode;
                        initialPc = pc.Value;

                        output.AppendFormat("0x{0:x4}:  ", initialPc);
                        output.AppendFormat("{0:x2} |", memoryMap[initialPc]);
                        output.AppendFormat(" af={0:x4}", registers.Af.Value);
                        output.AppendFormat(" bc={0:x4}", registers.Bc.Value);
                        output.AppendFormat(" de={0:x4}", registers.De.Value);
                        output.AppendFormat(" hl={0:x4}", registers.Hl.Value);
                        output.AppendFormat(" sp={0:x4}", registers.Sp.Value);
                        output.AppendFormat(" pc={0:x4} |", registers.Pc.Value);

                        output.AppendFormat(" scl={0}", cpu.UpwardScanlineCycleCounter);
                        output.AppendFormat(" st={0}", cpu.PpuModeCycleCount);
                        output.AppendFormat(" cnt={0} |", cpu.ScanlineCycleCounter / 2);

                        output.AppendFormat(" lcdc={0:x2}", lcdc.Value);
                        output.AppendFormat(" ly={0:x2}", ly.Value);
                        output.AppendFormat(" ppu={0:x1} |", ppuMode);

                        output.AppendFormat(" div={0:x2}", ioAddresses.Div.Value);
                        output.AppendFormat(" tima={0:x2}", ioAddresses.Tima.Value);
                        output.AppendFormat(" tma={0:x2}", ioAddresses.Tma.Value);
                        output.AppendFormat(" tac={0:x2}", ioAddresses.Tac.Value);

                        output.Append('\n');

                        var cycles = cpu.ExecuteInstructions(1);
                        cyclesThisIteration += cycles;

                        /*if (initialPc == 0x01c6) {
                         * Assert.Fail("How did we get here???");
                         * }*/

                        cyclesPerTick -= cycles;
                        if (cyclesPerTick <= 0)
                        {
                            break;
                        }
                    }
                } finally {
                    this.writer_.Write(output.ToString());
                }
            }

            this.apu_.Tick(cyclesThisIteration);
            ioAddresses.Joypad.Update(cpu);
        }
コード例 #2
0
ファイル: TestScene.cs プロジェクト: MeltyPlayer/FinCSharp
 private void StartTick_(StartTickEvent _)
 {
     this.circularProgress_.Radians += .02f;
 }
コード例 #3
0
 private void StartTick_(StartTickEvent _)
 {
     //this.streamSource_.PollForProcessedBuffers();
 }