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]; }