public SingleSoundDMA(GBReg Enable_RIGHT, GBReg Enable_LEFT, GBReg Timer_Select, GBReg Reset_FIFO) { this.Enable_RIGHT = Enable_RIGHT; this.Enable_LEFT = Enable_LEFT; this.Timer_Select = Timer_Select; this.Reset_FIFO = Reset_FIFO; timerindex = 0; fifo = new List <UInt32>(); playfifo = new List <byte>(); any_on = false; outfifo = new List <byte>(); outfifo.Add(0); tickcount = 0; }
public static void write_reg(UInt32 value, GBReg reg) { if (reg.msb < 8) { GBRegs.data[reg.address] = (byte)value; } else if (reg.msb < 16) { GBRegs.data[reg.address] = (byte)(value & 0xFF); GBRegs.data[reg.address + 1] = (byte)((value >> 8) & 0xFF); } else { GBRegs.data[reg.address] = (byte)(value & 0xFF); GBRegs.data[reg.address + 1] = (byte)((value >> 8) & 0xFF); GBRegs.data[reg.address + 2] = (byte)((value >> 16) & 0xFF); GBRegs.data[reg.address + 3] = (byte)((value >> 24) & 0xFF); } }
public SingleTimer(UInt16 irpmask, GBReg CNT_L, GBReg Prescaler, GBReg Count_up, GBReg Timer_IRQ_Enable, GBReg Timer_Start_Stop) { this.irpmask = irpmask; this.CNT_L = CNT_L; this.Prescaler = Prescaler; this.Count_up = Count_up; this.Timer_IRQ_Enable = Timer_IRQ_Enable; this.Timer_Start_Stop = Timer_Start_Stop; on = false; startnow = false; stopnow = false; irp_on = false; reload = 0; value = -1; prescale = 0x10000; retval = 0; }
public SingleDMA(UInt16 irpmask, GBReg SAD, GBReg DAD, GBReg CNT_L, GBReg Dest_Addr_Control, GBReg Source_Adr_Control, GBReg DMA_Repeat, GBReg DMA_Transfer_Type, GBReg Game_Pak_DRQ, GBReg DMA_Start_Timing, GBReg IRQ_on, GBReg DMA_Enable) { this.irpmask = irpmask; this.SAD = SAD; this.DAD = DAD; this.CNT_L = CNT_L; this.Dest_Addr_Control = Dest_Addr_Control; this.Source_Adr_Control = Source_Adr_Control; this.DMA_Repeat = DMA_Repeat; this.DMA_Transfer_Type = DMA_Transfer_Type; this.Game_Pak_DRQ = Game_Pak_DRQ; this.DMA_Start_Timing = DMA_Start_Timing; this.IRQ_on = IRQ_on; this.DMA_Enable = DMA_Enable; running = false; waiting = false; }