public MOS6569(C64 c64, C64Display disp, MOS6510 CPU, SystemRam ram, CharacterRom characterRom, ColorRam colorRam)
{
_c64 = c64;
_display = disp;
_cpu = CPU;
_ram = ram;
_characterRom = characterRom;
_colorRam = colorRam;
int i;
matrix_base = 0;
char_base = 0;
bitmap_base = 0;
// Allocate GC Handles, to pin buffers
// AllocateHandles();
// Get bitmap info
//unsafe
//{
// chunky_ptr = chunky_line_start = _display.BitmapBase;
//}
_chunkyLineStartIndex = 0;
_chunkyIndex = 0;
xmod = disp.BitmapXMod;
// Initialize VIC registers
mx8 = 0;
ctrl1 = ctrl2 = 0;
lpx = lpy = 0;
me = mxe = mye = mdp = mmc = 0;
vbase = irq_flag = irq_mask = 0;
clx_spr = clx_bgr = 0;
cia_vabase = 0;
ec = b0c = b1c = b2c = b3c = mm0 = mm1 = 0;
// already 0 for .NET
//for (i = 0; i < 8; i++) mx[i] = my[i] = sc[i] = 0;
// Initialize other variables
raster_y = unchecked((UInt32)(TOTAL_RASTERS - 1));
rc = 7;
irq_raster = vc = vc_base = x_scroll = y_scroll = 0;
dy_start = ROW24_YSTART;
dy_stop = ROW24_YSTOP;
ml_index = 0;
cycle = 1;
display_idx = 0;
display_state = false;
border_on = ud_border_on = vblanking = false;
lp_triggered = draw_this_line = false;
spr_dma_on = spr_disp_on = 0;
for (i = 0; i < 8; i++)
{
mc[i] = 63;
spr_ptr[i] = 0;
}
frame_skipped = false;
skip_counter = 1;
// Preset colors
disp.InitColors(colors);
// default to black
ec_color = b0c_color = b1c_color = b2c_color = b3c_color = mm0_color = mm1_color = colors[0];
for (i = 0; i < spr_color.Length; i++) spr_color[i] = colors[0];
}