328 lines
5.8 KiB
C#
328 lines
5.8 KiB
C#
namespace BizHawk.Emulation.Computers.Commodore64.MOS
|
|
{
|
|
// vic pal
|
|
public class MOS6569 : Vic
|
|
{
|
|
static int[][] pipeline = new int[][]
|
|
{
|
|
new int[] // 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 int[] // 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 int[] // BA
|
|
{
|
|
0x0843, 0x0843,
|
|
0x0543, 0x0543,
|
|
0x0548, 0x0548,
|
|
0x0546, 0x0546,
|
|
0x0586, 0x0586,
|
|
|
|
0x0576, 0x0576,
|
|
0x0876, 0x0876,
|
|
0x0876, 0x0876,
|
|
0x0878, 0x0878,
|
|
0x0878, 0x0878,
|
|
|
|
0x0000, 0x0000,
|
|
0x1000, 0x1000, // 12: badline
|
|
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, // 55: sprites
|
|
|
|
0x0880, 0x0880,
|
|
0x0810, 0x0810,
|
|
0x0810, 0x0810,
|
|
0x0210, 0x0210,
|
|
0x0218, 0x0218,
|
|
|
|
0x0213, 0x0213,
|
|
0x0283, 0x0283,
|
|
0x0243, 0x0243
|
|
},
|
|
new int[] // 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()
|
|
: base(63, 312, pipeline, 17734472 / 18)
|
|
{
|
|
}
|
|
}
|
|
}
|