Method: MicroCisc::Vm::ColorLcdDisplay#initialize

Defined in:
lib/micro_cisc/vm/color_lcd_display.rb

#initialize(device_id, mem_blocks, width, height, bit_mode) ⇒ ColorLcdDisplay

Returns a new instance of ColorLcdDisplay.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/micro_cisc/vm/color_lcd_display.rb', line 10

def initialize(device_id, mem_blocks, width, height, bit_mode)
  super(device_id, Device::TYPE_BLOCK_MEMORY, mem_blocks)
  @w = width
  @h = height
  @bit_mode = COLOR_MODES.include?(bit_mode) ? bit_mode : COLOR_MODES.first
  @image_data = Array.new(@w * @h * 3).map { 0 }
  @scale =
    if @w <= 320
      4
    elsif @w <= 640
      2
    else
      1
    end
  @control_mem[6] = @w
  @control_mem[7] = @h
  @privileged_read = @privileged_read | 0x0C0

  Gtk.init

  @window = Gtk::Window.new.set_default_size(@w * @scale, @h * @scale)
  @window.set_title("uCISC Virtual Machine")
  @window.set_resizable(false)

  update_screen

  @window.signal_connect("destroy") do
    Gtk.main_quit
  end
  GLib::Timeout.add(5) do
    do_update
    true
  end
  @window.show

  @window_thread = Thread.new do
    Gtk.main
  end
end