示例#1
0
 private void updateTimer()
 {
     if (GameBoyCPU.getBit(6, RTCRegisters[4]) == 0)
     {
         DateTime curr     = System.DateTime.Now;
         TimeSpan currSpan = curr - start;
         RTCRegisters[0] = (byte)(currSpan.Seconds);
         RTCRegisters[1] = (byte)(currSpan.Minutes);
         RTCRegisters[2] = (byte)(currSpan.Hours);
         RTCRegisters[3] = (byte)(currSpan.Days);
         if (currSpan.Days > 255)
         {
             //Rollover
             RTCRegisters[4] = GameBoyCPU.setBit(0, RTCRegisters[4]);
         }
         if (currSpan.Days > 511)
         {
             //Set overflow bit.
             RTCRegisters[4] = GameBoyCPU.setBit(7, RTCRegisters[4]);
             //Unset rollover
             RTCRegisters[4] = GameBoyCPU.resetBit(0, RTCRegisters[4]);
             start           = start.AddDays(512);
         }
     }
 }
示例#2
0
 private void setSpeedBit()
 {
     memory[KEY1] = GameBoyCPU.setBit(7, memory[KEY1]);
 }
示例#3
0
 public void SetJoyPadBit(byte key)
 {
     joypadState = GameBoyCPU.setBit(key, GameBoyMemory.joypadState);
 }
示例#4
0
    public void RequestInterrupt(byte bit)
    {
        byte ifReg = memory.ReadFromMemory(IF);

        memory.WriteToMemory(IF, GameBoyCPU.setBit(bit, ifReg));
    }