# boot_env -- Sets various openMSX settings based from environment variables. # # Typically used in automation tools which run openMSX without human interaction. # # Adds the following command to openMSX; # # 'boot_gui_mode' # Enableds the renderer and throttle from the inside. # # Supported environment variables by this script; # # RENDERER=on|off # Override video output from command line. # # RENDERER_TYPE=SDL # Select video renderer type. # # SCALE_FACTOR=3 # Override video scale factor for SDL renderer. # # THROTTLE=off # Disables msx speed emulation. # # SPEED=400 # Sets msx speed to 4x of original but only when throttle is on. # # JOYPORTA=mouse # Inserts mouse in joyporta. # # JOYPORTB=mouse # Inserts mouse in joyportb. # # RECORDER=bin/output.avi # Enables the the video recorder. # # Enabled openMSX gui from inside proc boot_gui_mode {} { global renderer global throttle global boot_env_renderer_type if {$boot_env_renderer_type != 0} { set renderer $boot_env_renderer_type set throttle on } else { puts stderr "error: Requested boot_gui_mode but env.RENDERER_TYPE is missing." exit 1 } } # Globals set boot_env_renderer_type 0 if {[info exists ::env(RENDERER_TYPE)] && ([string trim $::env(RENDERER_TYPE)] != "")} { set boot_env_renderer_type [string trim $::env(RENDERER_TYPE)] } if {[info exists ::env(RENDERER)] && ([string trim $::env(RENDERER)] == "on")} { if {[catch {set renderer $boot_env_renderer_type} err_msg]} { puts stderr "error: env.RENDERER 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 } } if {[info exists ::env(JOYPORTA)] && ([string trim $::env(JOYPORTA)] != "")} { if {[catch {plug joyporta [string trim $::env(JOYPORTA)]} err_msg]} { puts stderr "error: env.JOYPORTA value $err_msg" exit 1 } } if {[info exists ::env(JOYPORTB)] && ([string trim $::env(JOYPORTB)] != "")} { if {[catch {plug joyportb [string trim $::env(JOYPORTB)]} err_msg]} { puts stderr "error: env.JOYPORTB value $err_msg" exit 1 } } if {[info exists ::env(RECORDER)] && ([string trim $::env(RECORDER)] != "")} { if {[catch {after time 1 "record start [string trim $::env(RECORDER)]"} err_msg]} { puts stderr "error: env.RECORDER value $err_msg" exit 1 } }