333 lines
5.9 KiB
C#
333 lines
5.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace BizHawk.Emulation.Computers.Commodore64.MOS
|
|
{
|
|
// vic pal
|
|
public class MOS6569 : Vic, IStandardIO
|
|
{
|
|
static uint[][] pipeline = new uint[][]
|
|
{
|
|
new uint[] // xposition
|
|
{
|
|
0x0194, 0x0198,
|
|
0x019C, 0x01A0,
|
|
0x01A4, 0x01A8,
|
|
0x01AC, 0x01B0,
|
|
0x01B4, 0x01B8,
|
|
|
|
0x01BC, 0x01C0,
|
|
0x01C4, 0x01C8,
|
|
0x01CC, 0x01D0,
|
|
0x01D4, 0x01D8,
|
|
0x01DC, 0x01E0,
|
|
|
|
0x01E4, 0x01E8,
|
|
0x01EC, 0x01F0,
|
|
0x01F4, 0x0000,
|
|
0x0004, 0x0008,
|
|
0x000C, 0x0010,
|
|
|
|
0x0014, 0x0018,
|
|
0x001C, 0x0020,
|
|
0x0024, 0x0028,
|
|
0x002C, 0x0030,
|
|
0x0034, 0x0038,
|
|
|
|
0x003C, 0x0040,
|
|
0x0044, 0x0048,
|
|
0x004C, 0x0050,
|
|
0x0054, 0x0058,
|
|
0x005C, 0x0060,
|
|
|
|
0x0064, 0x0068,
|
|
0x006C, 0x0070,
|
|
0x0074, 0x0078,
|
|
0x007C, 0x0080,
|
|
0x0084, 0x0088,
|
|
|
|
0x008C, 0x0090,
|
|
0x0094, 0x0098,
|
|
0x009C, 0x00A0,
|
|
0x00A4, 0x00A8,
|
|
0x00AC, 0x00B0,
|
|
|
|
0x00B4, 0x00B8,
|
|
0x00BC, 0x00C0,
|
|
0x00C4, 0x00C8,
|
|
0x00CC, 0x00D0,
|
|
0x00D4, 0x00D8,
|
|
|
|
0x00DC, 0x00E0,
|
|
0x00E4, 0x00E8,
|
|
0x00EC, 0x00F0,
|
|
0x00F4, 0x00F8,
|
|
0x00FC, 0x0100,
|
|
|
|
0x0104, 0x0108,
|
|
0x010C, 0x0110,
|
|
0x0114, 0x0118,
|
|
0x011C, 0x0120,
|
|
0x0124, 0x0128,
|
|
|
|
0x012C, 0x0130,
|
|
0x0134, 0x0138,
|
|
0x013C, 0x0140,
|
|
0x0144, 0x0148,
|
|
0x014C, 0x0150,
|
|
|
|
0x0154, 0x0158,
|
|
0x015C, 0x0160,
|
|
0x0164, 0x0168,
|
|
0x016C, 0x0170,
|
|
0x0174, 0x0178,
|
|
|
|
0x017C, 0x0180,
|
|
0x0184, 0x0188,
|
|
0x018C, 0x0190
|
|
},
|
|
new uint[] // fetch (100=ref 200=c 300=g 400=i 500=none)
|
|
{
|
|
0x0003, 0x0013,
|
|
0x0023, 0x0033,
|
|
0x0004, 0x0014,
|
|
0x0024, 0x0034,
|
|
0x0005, 0x0015,
|
|
|
|
0x0025, 0x0035,
|
|
0x0006, 0x0016,
|
|
0x0026, 0x0036,
|
|
0x0007, 0x0017,
|
|
0x0027, 0x0037,
|
|
|
|
0x0100, 0x0500,
|
|
0x0100, 0x0500,
|
|
0x0100, 0x0500,
|
|
0x0100, 0x0500,
|
|
0x0100, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0200,
|
|
0x0300, 0x0500,
|
|
|
|
0x0400, 0x0500,
|
|
0x0400, 0x0500,
|
|
0x0000, 0x0010,
|
|
0x0020, 0x0030,
|
|
0x0001, 0x0011,
|
|
|
|
0x0021, 0x0031,
|
|
0x0002, 0x0012,
|
|
0x0022, 0x0032
|
|
},
|
|
new uint[] // BA
|
|
{
|
|
0x0834, 0x0834,
|
|
0x0345, 0x0345,
|
|
0x0845, 0x0845,
|
|
0x0456, 0x0456,
|
|
0x0856, 0x0856,
|
|
|
|
0x0567, 0x0567,
|
|
0x0867, 0x0867,
|
|
0x0887, 0x0887,
|
|
0x0887, 0x0887,
|
|
0x0000, 0x0000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
0x1000, 0x1000,
|
|
|
|
0x0880, 0x0880,
|
|
0x0880, 0x0880,
|
|
0x0801, 0x0801,
|
|
0x0012, 0x0012,
|
|
0x0812, 0x0812,
|
|
|
|
0x0123, 0x0123,
|
|
0x0823, 0x0823,
|
|
0x0234, 0x0234
|
|
},
|
|
new uint[] // actions
|
|
{
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, pipelineUpdateVc,
|
|
0, pipelineChkSprChunch,
|
|
|
|
0, pipelineUpdateMcBase,
|
|
0, pipelineChkBrdL1,
|
|
0, pipelineChkBrdL0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
0, 0,
|
|
pipelineChkSprDma, 0,
|
|
|
|
pipelineChkSprDma, pipelineChkBrdR0 | pipelineChkSprExp,
|
|
0, pipelineChkBrdR1,
|
|
pipelineChkSprDisp, pipelineUpdateRc,
|
|
0, 0,
|
|
0, 0,
|
|
|
|
0, 0,
|
|
0, 0,
|
|
0, 0
|
|
}
|
|
};
|
|
|
|
public MOS6569(C64Chips newChips)
|
|
: base(newChips, 63, 312, pipeline, 17734472 / 18)
|
|
{
|
|
}
|
|
}
|
|
}
|