File: _raster_view.tcl

package info (click to toggle)
openmsx 20.0%2Bdfsg-1.2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 27,544 kB
  • sloc: cpp: 236,922; xml: 49,948; tcl: 15,056; python: 5,385; perl: 281; sh: 77; makefile: 53
file content (55 lines) | stat: -rw-r--r-- 1,659 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
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
49
50
51
52
53
54
55
namespace eval raster_view {

variable raster_view_enabled false
variable raster_view_after_id 0

set_help_text toggle_raster_view \
"Shows a red square around the current position of the raster beam in debug
breaked state, as well as a message indicating the current position."

proc toggle_raster_view {} {
	variable raster_view_enabled
	variable raster_view_after_id

	if {$raster_view_enabled} {
		set raster_view_enabled false
		osd destroy showraster
		catch { after cancel $raster_view_after_id }
		return "Show raster disabled"
	} else {
		set raster_view_enabled true
		osd_widgets::msx_init showraster

		osd create rectangle showraster.box -x -100 -y -100 -h 3 -w 3 \
			-rgba 0xFF111140 -borderrgba 0xFF1111C0 -bordersize 1

		set raster_view_after_id [after break [namespace code update_raster]]
		return "Show raster enabled: will indicate raster beam with red square at next break..."
	}
}

proc update_raster {} {
	variable raster_view_enabled
	variable raster_view_after_id
	if {$raster_view_enabled} {
		osd_widgets::msx_update showraster
		set mode [get_screen_mode_number]
		set x256 true
		if {$mode == 0} {
			set x256 [expr {!([debug read "VDP regs" 0] & 0x04)}]
		} elseif {$mode == 6 || $mode == 7} {
			set x256 false
		}
		set x [machine_info [expr {$x256 ? "VDP_msx_x256_pos" : "VDP_msx_x512_pos"}]]
		set y [machine_info VDP_line_in_frame]
		osd configure showraster.box -x [expr {$x - 1}] -y [expr {$y - 1}]
		message "Raster beam currently at: ($x, $y)"
		set raster_view_after_id [after break [namespace code update_raster]]
	}
}

namespace export toggle_raster_view

};# namespace raster_view

namespace import raster_view::*