# boot_mode -- Controls the boot mode config of openMSX from environment variables. # # Typically used in automation tools which run openMSX without human interaction. # # Adds the following command to openMSX; # # 'boot_mode_show_gui' # Enables the renderer and throttle from the inside. # # Supported environment variables by this script; # # HEADLESS=on|off # Override video output from command line. # # RENDERER=SDL # Select video renderer type for GUI mode or in none headless mode. # # SCALE_FACTOR=3 # Override video scale factor for the renderer. # # THROTTLE=off # Disables MSX speed emulation. # # SPEED=333 # Sets CPU speed to relative from normal but only when throttle is on. # set boot_env_renderer_type 0 proc boot_mode_show_gui {} { global renderer global throttle global boot_env_renderer_type if {$boot_env_renderer_type != 0} { after time 1 "set renderer $boot_env_renderer_type" set throttle on } else { puts stderr "error: Requested boot_gui_mode but env.RENDERER is missing." exit 1 } return "Requested GUI with $boot_env_renderer_type" } if {[info exists ::env(RENDERER)] && ([string trim $::env(RENDERER)] != "")} { set boot_env_renderer_type [string trim $::env(RENDERER)] } if {[info exists ::env(HEADLESS)] && ([string trim $::env(HEADLESS)] != "on")} { if {[catch {set renderer $boot_env_renderer_type} err_msg]} { puts stderr "error: env.HEADLESS value $err_msg" exit 1 } } if {[info exists ::env(SCALE_FACTOR)] && ([string trim $::env(SCALE_FACTOR)] != "")} { if {[catch {set scale_factor [string trim $::env(SCALE_FACTOR)]} err_msg]} { puts stderr "error: env.SCALE_FACTOR value $err_msg" exit 1 } } if {[info exists ::env(THROTTLE)] && ([string trim $::env(THROTTLE)] != "")} { if {[catch {set throttle [string trim $::env(THROTTLE)]} err_msg]} { puts stderr "error: env.THROTTLE value $err_msg" exit 1 } } if {[info exists ::env(SPEED)] && ([string trim $::env(SPEED)] != "")} { if {[catch {set speed [string trim $::env(SPEED)]} err_msg]} { puts stderr "error: env.SPEED value $err_msg" exit 1 } }