Adrian Conlon 00e92c1621 More LR35902 blargg test debugging output corrections.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2019-07-27 14:19:23 +01:00

52 lines
1.7 KiB
C#

// <copyright file="Board.cs" company="Adrian Conlon">
// Copyright (c) Adrian Conlon. All rights reserved.
// </copyright>
namespace LR35902.BlarggTest
{
using System;
public class Board : EightBit.GameBoy.Bus
{
private readonly Configuration configuration;
private readonly EightBit.GameBoy.Disassembler disassembler;
public Board(Configuration configuration)
{
this.configuration = configuration;
this.disassembler = new EightBit.GameBoy.Disassembler(this);
}
public override void Initialize()
{
this.WrittenByte += this.Board_WrittenByte;
if (this.configuration.DebugMode)
{
this.CPU.ExecutingInstruction += this.CPU_ExecutingInstruction_Debug;
}
this.LoadBootRom(this.configuration.RomDirectory + "/DMG_ROM.bin");
}
public void Plug(string path) => this.LoadGameRom(this.configuration.RomDirectory + "/" + path);
private void Board_WrittenByte(object sender, System.EventArgs e)
{
switch (this.Address.Word)
{
case EightBit.GameBoy.IoRegisters.BASE + EightBit.GameBoy.IoRegisters.SB:
System.Console.Out.Write(Convert.ToChar(this.Data));
break;
}
}
private void CPU_ExecutingInstruction_Debug(object sender, System.EventArgs e)
{
if (this.IO.BootRomDisabled)
{
System.Console.Error.WriteLine($"{EightBit.GameBoy.Disassembler.State(this.CPU)} {this.disassembler.Disassemble(this.CPU)}");
}
}
}
}