Browse Source

still footbar can not draw

cuu 5 years ago
parent
commit
c9de67c78f
55 changed files with 3388 additions and 157 deletions
  1. 7 0
      Menu/GameShell/20_Retro Games/MAME/action.config
  2. 111 0
      Menu/GameShell/20_Retro Games/MAME/retroarch-core-options.cfg
  3. 2880 0
      Menu/GameShell/20_Retro Games/MAME/retroarch.cfg
  4. 6 0
      Menu/GameShell/20_Retro Games/MGBA/action.config
  5. 7 0
      Menu/GameShell/20_Retro Games/NESTOPIA/action.config
  6. 1 0
      Menu/GameShell/CaveStory.sh
  7. 1 0
      Menu/GameShell/RetroArch.sh
  8. 1 0
      Menu/GameShell/freeDM.sh
  9. BIN
      main
  10. 92 0
      main.go
  11. 0 0
      skin/default/sysgo/gameshell/blank.png
  12. 0 0
      skin/default/sysgo/gameshell/footbar_icons/footbar.png
  13. 0 0
      skin/default/sysgo/gameshell/icons/_L.png
  14. 0 0
      skin/default/sysgo/gameshell/icons/_R.png
  15. 0 0
      skin/default/sysgo/gameshell/icons/about_bg.png
  16. 0 0
      skin/default/sysgo/gameshell/icons/blueselector.png
  17. 0 0
      skin/default/sysgo/gameshell/icons/done.png
  18. 0 0
      skin/default/sysgo/gameshell/icons/empty.png
  19. 0 0
      skin/default/sysgo/gameshell/icons/heart.png
  20. 0 0
      skin/default/sysgo/gameshell/icons/icon_sd.png
  21. 0 0
      skin/default/sysgo/gameshell/icons/light.png
  22. 0 0
      skin/default/sysgo/gameshell/icons/lock.png
  23. 0 0
      skin/default/sysgo/gameshell/icons/needwifi_bg.png
  24. 0 0
      skin/default/sysgo/gameshell/icons/online.png
  25. 0 0
      skin/default/sysgo/gameshell/icons/rom_download.png
  26. 0 0
      skin/default/sysgo/gameshell/icons/roundcorners.png
  27. 0 0
      skin/default/sysgo/gameshell/icons/scale.png
  28. 0 0
      skin/default/sysgo/gameshell/icons/star.png
  29. 0 0
      skin/default/sysgo/gameshell/icons/sys.png
  30. 0 0
      skin/default/sysgo/gameshell/icons/vol.png
  31. 0 0
      skin/default/sysgo/gameshell/titlebar_icons/battery_unknown.png
  32. 0 0
      skin/default/sysgo/gameshell/titlebar_icons/soundvolume.png
  33. 0 0
      skin/default/sysgo/gameshell/titlebar_icons/wifi.png
  34. 0 0
      skin/default/sysgo/gameshell/titlebar_icons/withcharging.png
  35. 0 0
      skin/default/sysgo/gameshell/titlebar_icons/without_charging.png
  36. 2 0
      sysgo/DBUS/dbus.go
  37. 2 0
      sysgo/UI/confirm_page.go
  38. 1 1
      sysgo/UI/fonts.go
  39. 27 25
      sysgo/UI/foot_bar.go
  40. 43 14
      sysgo/UI/icon_item.go
  41. 1 1
      sysgo/UI/icon_pool.go
  42. 1 1
      sysgo/UI/keys_def.go
  43. 12 5
      sysgo/UI/label.go
  44. 45 25
      sysgo/UI/main_screen.go
  45. 3 0
      sysgo/UI/multi_icon_item.go
  46. 70 34
      sysgo/UI/page.go
  47. 12 9
      sysgo/UI/plugin.go
  48. 1 0
      sysgo/UI/scroller.go
  49. 21 9
      sysgo/UI/skin_manager.go
  50. 27 17
      sysgo/UI/title_bar.go
  51. 8 4
      sysgo/UI/untitled_icon.go
  52. 5 4
      sysgo/UI/util_funcs.go
  53. 0 7
      sysgo/easings/README.md
  54. 0 0
      sysgo/main.go
  55. 1 1
      sysgo/plugins/HelloWorld/helloworld.go

+ 7 - 0
Menu/GameShell/20_Retro Games/MAME/action.config

@@ -0,0 +1,7 @@
+ROM=/home/cpi/games/MAME
+ROM_SO=/home/cpi/apps/emulators/mame2003_plus_libretro.so
+EXT=zip
+LAUNCHER=retroarch -L
+TITLE=MAME Roms
+SO_URL=http://buildbot.libretro.com/nightly/linux/armhf/latest/mame2003_plus_libretro.so.zip
+RETRO_CONFIG=/home/cpi/apps/launcher/Menu/GameShell/20_Retro\ Games/MAME/retroarch.cfg

+ 111 - 0
Menu/GameShell/20_Retro Games/MAME/retroarch-core-options.cfg

@@ -0,0 +1,111 @@
+mame2003-plus_frameskip = "0"
+mame2003-plus_input_interface = "retropad"
+mame2003-plus_retropad_layout = "modern"
+mame2003-plus_mouse_device = "mouse"
+mame2003-plus_crosshair_enabled = "enabled"
+mame2003-plus_display_setup = "disabled"
+mame2003-plus_enable_backdrop = "disabled"
+mame2003-plus_bios_region = "default"
+mame2003-plus_dialsharexy = "disabled"
+mame2003-plus_rstick_to_btns = "enabled"
+mame2003-plus_tate_mode = "disabled"
+mame2003-plus_vector_resolution_multiplier = "1"
+mame2003-plus_vector_antialias = "disabled"
+mame2003-plus_vector_translucency = "enabled"
+mame2003-plus_vector_beam_width = "1"
+mame2003-plus_vector_flicker = "20"
+mame2003-plus_vector_intensity = "1.5"
+mame2003-plus_skip_rom_verify = "disabled"
+mame2003-plus_external_hiscore = "disabled"
+mame2003-plus_sample_rate = "48000"
+mame2003-plus_dcs_speedhack = "enabled"
+mame2003-plus_skip_disclaimer = "enabled"
+mame2003-plus_skip_warnings = "disabled"
+mgba_solar_sensor_level = "0"
+mgba_allow_opposing_directions = "OFF"
+mgba_gb_model = "Autodetect"
+mgba_use_bios = "ON"
+mgba_skip_bios = "OFF"
+mgba_sgb_borders = "ON"
+mgba_idle_optimization = "Remove Known"
+mgba_frameskip = "0"
+vbanext_bios = "enabled"
+mame_current_mouse_enable = "enabled"
+mame_current_videoapproach1_enable = "disabled"
+mame_current_skip_nagscreen = "enabled"
+mame_current_skip_gameinfo = "disabled"
+mame_current_skip_warnings = "disabled"
+mame_current_aspect_ratio = "DAR"
+mame_current_turbo_button = "disabled"
+mame_current_turbo_delay = "medium"
+mame_current_frame_skip = "0"
+mame_current_sample_rate = "48000Hz"
+mame_current_adj_brightness = "default"
+mame_current_adj_contrast = "default"
+mame_current_adj_gamma = "default"
+mame-external_hiscore = "disabled"
+vbam_layer_1 = "Yes"
+vbam_layer_2 = "Yes"
+vbam_layer_3 = "Yes"
+vbam_layer_4 = "Yes"
+vbam_layer_5 = "Yes"
+vbam_layer_6 = "Yes"
+vbam_layer_7 = "Yes"
+vbam_layer_8 = "Yes"
+snes9x_next_overclock = "disabled"
+beetle_psx_cdimagecache = "disabled"
+beetle_psx_widescreen_hack = "disabled"
+beetle_psx_widescreen_auto_ar = "disabled"
+beetle_psx_use_mednafen_memcard0_method = "libretro"
+beetle_psx_shared_memory_cards = "disabled"
+beetle_psx_experimental_save_states = "disabled"
+beetle_psx_initial_scanline = "0"
+beetle_psx_initial_scanline_pal = "0"
+beetle_psx_last_scanline = "239"
+beetle_psx_last_scanline_pal = "287"
+beetle_psx_analog_toggle = "disabled"
+beetle_psx_enable_multitap_port1 = "disabled"
+beetle_psx_enable_multitap_port2 = "disabled"
+fceumm_region = "Auto"
+fceumm_aspect = "8:7 PAR"
+fceumm_palette = "default"
+fceumm_up_down_allowed = "disabled"
+fceumm_use_ntsc = "disabled"
+fceumm_overscan_h = "disabled"
+fceumm_overscan_v = "enabled"
+fceumm_nospritelimit = "disabled"
+fceumm_sndvolume = "150"
+fceumm_sndquality = "Low"
+fceumm_swapduty = "disabled"
+fceumm_turbo_enable = "None"
+fceumm_turbo_delay = "3"
+fceumm_zapper_mode = "pointer"
+fceumm_show_crosshair = "enabled"
+fceumm_overclocking = "disabled"
+nestopia_blargg_ntsc_filter = "disabled"
+nestopia_palette = "cxa2025as"
+nestopia_nospritelimit = "disabled"
+nestopia_overclock = "1x"
+nestopia_select_adapter = "auto"
+nestopia_fds_auto_insert = "enabled"
+nestopia_overscan_v = "enabled"
+nestopia_overscan_h = "disabled"
+nestopia_aspect = "auto"
+nestopia_genie_distortion = "disabled"
+nestopia_favored_system = "auto"
+nestopia_ram_power_state = "0x00"
+nestopia_turbo_pulse = "2"
+mame2003-plus_brightness = "1.0"
+mame2003-plus_gamma = "1.2"
+mame2003-plus_neogeo_bios = "default"
+mame2003-plus_stv_bios = "default"
+mame2003-plus_dual_joysticks = "disabled"
+mame2003-plus_use_samples = "enabled"
+mame2003-plus_nvram_bootstraps = "enabled"
+mame2003-plus_retropad1_layout = "Modern Gamepad"
+mame2003-plus_retropad2_layout = "Modern Gamepad"
+mame2003-plus_retropad3_layout = "Modern Gamepad"
+mame2003-plus_retropad4_layout = "Modern Gamepad"
+mame2003-plus_retropad5_layout = "Modern Gamepad"
+mame2003-plus_retropad6_layout = "Modern Gamepad"
+mame2003-plus_mame_remapping = "disabled"

+ 2880 - 0
Menu/GameShell/20_Retro Games/MAME/retroarch.cfg

@@ -0,0 +1,2880 @@
+video_driver = "sdl"
+video_fullscreen = "true"
+video_windowed_fullscreen = "false"
+video_threaded = "true"
+video_smooth = "true"
+video_message_bgcolor_enable = "false"
+video_message_bgcolor_red = "0"
+video_message_bgcolor_green = "0"
+video_message_bgcolor_blue = "0"
+video_message_bgcolor_opacity = "1.0"
+menu_driver = "rgui"
+core_updater_buildbot_url = "http://buildbot.libretro.com/nightly/linux/armhf/latest/"
+core_updater_buildbot_assets_url = "http://buildbot.libretro.com/assets/"
+libretro_directory = "~/.config/retroarch/cores"
+libretro_info_path = "~/.config/retroarch/cores"
+content_database_path = "~/.config/retroarch/database/rdb"
+cheat_database_path = "~/.config/retroarch/cheats"
+content_history_path = "~/.config/retroarch/content_history.lpl"
+content_favorites_path = "~/.config/retroarch/content_favorites.lpl"
+content_music_history_path = "~/.config/retroarch/content_music_history.lpl"
+content_video_history_path = "~/.config/retroarch/content_video_history.lpl"
+content_image_history_path = "~/.config/retroarch/content_image_history.lpl"
+cursor_directory = "~/.config/retroarch/database/cursors"
+screenshot_directory = "~/.config/retroarch/screenshots"
+system_directory = "default"
+input_remapping_directory = "~/.config/retroarch/config/remaps"
+video_shader_dir = "~/.config/retroarch/shaders"
+video_filter_dir = "default"
+core_assets_directory = "~/.config/retroarch/downloads"
+assets_directory = "~/.config/retroarch/assets"
+dynamic_wallpapers_directory = "default"
+thumbnails_directory = "~/.config/retroarch/thumbnails"
+playlist_directory = "~/.config/retroarch/playlists"
+joypad_autoconfig_dir = "~/.config/retroarch/autoconfig"
+audio_filter_dir = "default"
+savefile_directory = "default"
+savestate_directory = "default"
+rgui_browser_directory = "default"
+rgui_config_directory = "~/.config/retroarch/config"
+overlay_directory = "~/.config/retroarch/overlay"
+record_driver = "null"
+camera_driver = "null"
+wifi_driver = "null"
+location_driver = "null"
+audio_driver = "alsathread"
+audio_resampler = "sinc"
+input_driver = "x"
+input_joypad_driver = "udev"
+led_driver = "null"
+netplay_mitm_server = "nyc"
+video_aspect_ratio = "-1.000000"
+video_scale = "1.000000"
+video_refresh_rate = "59.940060"
+audio_rate_control_delta = "0.005000"
+audio_max_timing_skew = "0.050000"
+audio_volume = "-4.000000"
+audio_mixer_volume = "0.000000"
+input_overlay_opacity = "0.700000"
+input_overlay_scale = "1.000000"
+menu_wallpaper_opacity = "0.300000"
+menu_framebuffer_opacity = "0.900000"
+menu_footer_opacity = "1.000000"
+menu_header_opacity = "1.000000"
+video_message_pos_x = "0.050000"
+video_message_pos_y = "0.050000"
+video_font_size = "12.000000"
+fastforward_ratio = "0.000000"
+slowmotion_ratio = "3.000000"
+input_axis_threshold = "0.500000"
+video_msg_bgcolor_opacity = "1.000000"
+state_slot = "0"
+netplay_check_frames = "600"
+input_bind_timeout = "1"
+input_turbo_period = "6"
+input_duty_cycle = "3"
+input_max_users = "0"
+input_menu_toggle_gamepad_combo = "0"
+audio_latency = "512"
+audio_resampler_quality = "2"
+audio_block_frames = "0"
+rewind_granularity = "1"
+autosave_interval = "0"
+libretro_log_level = "1"
+keyboard_gamepad_mapping_type = "1"
+input_poll_type_behavior = "2"
+video_monitor_index = "0"
+video_fullscreen_x = "0"
+video_fullscreen_y = "0"
+video_window_x = "0"
+video_window_y = "0"
+video_window_opacity = "100"
+network_cmd_port = "55355"
+network_remote_base_port = "55400"
+keymapper_port = "0"
+dpi_override_value = "200"
+menu_thumbnails = "3"
+xmb_alpha_factor = "75"
+xmb_scale_factor = "100"
+xmb_theme = "0"
+xmb_menu_color_theme = "4"
+menu_font_color_red = "255"
+menu_font_color_green = "255"
+menu_font_color_blue = "255"
+materialui_menu_color_theme = "0"
+menu_shader_pipeline = "2"
+audio_out_rate = "48000"
+custom_viewport_width = "320"
+custom_viewport_height = "240"
+custom_viewport_x = "0"
+custom_viewport_y = "0"
+content_history_size = "100"
+video_hard_sync_frames = "0"
+video_frame_delay = "0"
+video_max_swapchain_images = "4"
+video_swap_interval = "4"
+video_rotation = "0"
+aspect_ratio_index = "21"
+netplay_ip_port = "55435"
+netplay_input_latency_frames_min = "0"
+netplay_input_latency_frames_range = "0"
+netplay_share_digital = "1"
+netplay_share_analog = "1"
+user_language = "0"
+bundle_assets_extract_version_current = "0"
+bundle_assets_extract_last_version = "0"
+input_overlay_show_physical_inputs_port = "0"
+video_msg_bgcolor_red = "0"
+video_msg_bgcolor_green = "0"
+video_msg_bgcolor_blue = "0"
+input_device_p1 = "0"
+input_player1_joypad_index = "0"
+input_libretro_device_p1 = "1"
+input_player1_analog_dpad_mode = "0"
+input_player1_mouse_index = "0"
+input_device_p2 = "0"
+input_player2_joypad_index = "1"
+input_libretro_device_p2 = "1"
+input_player2_analog_dpad_mode = "0"
+input_player2_mouse_index = "0"
+input_device_p3 = "0"
+input_player3_joypad_index = "2"
+input_libretro_device_p3 = "1"
+input_player3_analog_dpad_mode = "0"
+input_player3_mouse_index = "0"
+input_device_p4 = "0"
+input_player4_joypad_index = "3"
+input_libretro_device_p4 = "1"
+input_player4_analog_dpad_mode = "0"
+input_player4_mouse_index = "0"
+input_device_p5 = "0"
+input_player5_joypad_index = "4"
+input_libretro_device_p5 = "1"
+input_player5_analog_dpad_mode = "0"
+input_player5_mouse_index = "0"
+input_device_p6 = "0"
+input_player6_joypad_index = "5"
+input_libretro_device_p6 = "1"
+input_player6_analog_dpad_mode = "0"
+input_player6_mouse_index = "0"
+input_device_p7 = "0"
+input_player7_joypad_index = "6"
+input_libretro_device_p7 = "1"
+input_player7_analog_dpad_mode = "0"
+input_player7_mouse_index = "0"
+input_device_p8 = "0"
+input_player8_joypad_index = "7"
+input_libretro_device_p8 = "1"
+input_player8_analog_dpad_mode = "0"
+input_player8_mouse_index = "0"
+input_device_p9 = "0"
+input_player9_joypad_index = "8"
+input_libretro_device_p9 = "1"
+input_player9_analog_dpad_mode = "0"
+input_player9_mouse_index = "0"
+input_device_p10 = "0"
+input_player10_joypad_index = "9"
+input_libretro_device_p10 = "1"
+input_player10_analog_dpad_mode = "0"
+input_player10_mouse_index = "0"
+input_device_p11 = "0"
+input_player11_joypad_index = "10"
+input_libretro_device_p11 = "1"
+input_player11_analog_dpad_mode = "0"
+input_player11_mouse_index = "0"
+input_device_p12 = "0"
+input_player12_joypad_index = "11"
+input_libretro_device_p12 = "1"
+input_player12_analog_dpad_mode = "0"
+input_player12_mouse_index = "0"
+input_device_p13 = "0"
+input_player13_joypad_index = "12"
+input_libretro_device_p13 = "1"
+input_player13_analog_dpad_mode = "0"
+input_player13_mouse_index = "0"
+input_device_p14 = "0"
+input_player14_joypad_index = "13"
+input_libretro_device_p14 = "1"
+input_player14_analog_dpad_mode = "0"
+input_player14_mouse_index = "0"
+input_device_p15 = "0"
+input_player15_joypad_index = "14"
+input_libretro_device_p15 = "1"
+input_player15_analog_dpad_mode = "0"
+input_player15_mouse_index = "0"
+input_device_p16 = "0"
+input_player16_joypad_index = "15"
+input_libretro_device_p16 = "1"
+input_player16_analog_dpad_mode = "0"
+input_player16_mouse_index = "0"
+automatically_add_content_to_playlist = "false"
+ui_companion_start_on_boot = "true"
+ui_companion_enable = "false"
+video_gpu_record = "false"
+input_remap_binds_enable = "true"
+all_users_control_menu = "false"
+menu_swap_ok_cancel_buttons = "false"
+netplay_public_announce = "true"
+netplay_start_as_spectator = "false"
+netplay_allow_slaves = "true"
+netplay_require_slaves = "false"
+netplay_stateless_mode = "false"
+netplay_use_mitm_server = "false"
+netplay_request_device_p1 = "false"
+netplay_request_device_p2 = "false"
+netplay_request_device_p3 = "false"
+netplay_request_device_p4 = "false"
+netplay_request_device_p5 = "false"
+netplay_request_device_p6 = "false"
+netplay_request_device_p7 = "false"
+netplay_request_device_p8 = "false"
+netplay_request_device_p9 = "false"
+netplay_request_device_p10 = "false"
+netplay_request_device_p11 = "false"
+netplay_request_device_p12 = "false"
+netplay_request_device_p13 = "false"
+netplay_request_device_p14 = "false"
+netplay_request_device_p15 = "false"
+netplay_request_device_p16 = "false"
+input_descriptor_label_show = "true"
+input_descriptor_hide_unbound = "false"
+load_dummy_on_core_shutdown = "true"
+check_firmware_before_loading = "false"
+builtin_mediaplayer_enable = "false"
+builtin_imageviewer_enable = "true"
+fps_show = "false"
+framecount_show = "false"
+ui_menubar_enable = "true"
+suspend_screensaver_enable = "false"
+rewind_enable = "false"
+audio_sync = "true"
+video_shader_enable = "false"
+video_shader_watch_files = "false"
+video_aspect_ratio_auto = "false"
+video_allow_rotate = "true"
+video_crop_overscan = "true"
+video_scale_integer = "false"
+video_force_aspect = "true"
+video_shared_context = "false"
+auto_screenshot_filename = "true"
+video_force_srgb_disable = "false"
+bundle_assets_extract_enable = "false"
+video_vsync = "true"
+video_hard_sync = "false"
+video_black_frame_insertion = "false"
+video_disable_composition = "false"
+pause_nonactive = "true"
+video_gpu_screenshot = "true"
+video_post_filter_record = "false"
+keyboard_gamepad_enable = "true"
+core_set_supports_no_game_enable = "true"
+audio_enable = "true"
+audio_mute_enable = "false"
+audio_mixer_mute_enable = "false"
+location_allow = "false"
+video_font_enable = "true"
+core_updater_auto_extract_archive = "true"
+camera_allow = "false"
+menu_unified_controls = "false"
+threaded_data_runloop_enable = "true"
+menu_throttle_framerate = "true"
+menu_linear_filter = "true"
+menu_horizontal_animation = "true"
+dpi_override_enable = "true"
+menu_pause_libretro = "true"
+menu_mouse_enable = "true"
+menu_pointer_enable = "false"
+menu_timedate_enable = "true"
+menu_battery_level_enable = "true"
+menu_core_enable = "true"
+menu_dynamic_wallpaper_enable = "false"
+quick_menu_show_take_screenshot = "true"
+quick_menu_show_save_load_state = "true"
+quick_menu_show_undo_save_load_state = "true"
+quick_menu_show_add_to_favorites = "true"
+quick_menu_show_options = "true"
+quick_menu_show_controls = "true"
+quick_menu_show_cheats = "true"
+quick_menu_show_shaders = "true"
+quick_menu_show_save_core_overrides = "true"
+quick_menu_show_save_game_overrides = "true"
+quick_menu_show_information = "true"
+kiosk_mode_enable = "false"
+content_show_settings = "true"
+content_show_favorites = "true"
+content_show_images = "true"
+content_show_music = "true"
+content_show_netplay = "true"
+content_show_history = "true"
+content_show_add = "true"
+menu_show_load_core = "true"
+menu_show_load_content = "true"
+menu_show_information = "true"
+menu_show_configurations = "true"
+menu_show_help = "true"
+menu_show_quit_retroarch = "true"
+menu_show_reboot = "true"
+menu_show_online_updater = "true"
+menu_show_core_updater = "true"
+filter_by_current_core = "false"
+rgui_show_start_screen = "false"
+menu_navigation_wraparound_enable = "true"
+menu_navigation_browser_filter_supported_extensions_enable = "true"
+menu_show_advanced_settings = "true"
+materialui_icons_enable = "true"
+xmb_shadows_enable = "true"
+cheevos_enable = "false"
+cheevos_test_unofficial = "false"
+cheevos_hardcore_mode_enable = "false"
+cheevos_leaderboards_enable = "false"
+cheevos_badges_enable = "false"
+cheevos_verbose_enable = "false"
+input_overlay_enable = "true"
+input_overlay_enable_autopreferred = "true"
+input_overlay_show_physical_inputs = "false"
+input_overlay_hide_in_menu = "true"
+network_cmd_enable = "false"
+stdin_cmd_enable = "false"
+network_remote_enable = "false"
+keymapper_enable = "true"
+netplay_nat_traversal = "true"
+block_sram_overwrite = "false"
+savestate_auto_index = "false"
+savestate_auto_save = "false"
+savestate_auto_load = "false"
+savestate_thumbnail_enable = "false"
+history_list_enable = "true"
+playlist_entry_remove = "true"
+playlist_entry_rename = "true"
+game_specific_options = "true"
+auto_overrides_enable = "true"
+auto_remaps_enable = "true"
+auto_shaders_enable = "true"
+sort_savefiles_enable = "false"
+sort_savestates_enable = "false"
+config_save_on_exit = "true"
+show_hidden_files = "false"
+input_autodetect_enable = "true"
+audio_rate_control = "true"
+savestates_in_content_dir = "false"
+savefiles_in_content_dir = "false"
+systemfiles_in_content_dir = "false"
+screenshots_in_content_dir = "false"
+video_msg_bgcolor_enable = "false"
+video_window_show_decorations = "true"
+network_remote_enable_user_p1 = "false"
+network_remote_enable_user_p2 = "false"
+network_remote_enable_user_p3 = "false"
+network_remote_enable_user_p4 = "false"
+network_remote_enable_user_p5 = "false"
+network_remote_enable_user_p6 = "false"
+network_remote_enable_user_p7 = "false"
+network_remote_enable_user_p8 = "false"
+network_remote_enable_user_p9 = "false"
+network_remote_enable_user_p10 = "false"
+network_remote_enable_user_p11 = "false"
+network_remote_enable_user_p12 = "false"
+network_remote_enable_user_p13 = "false"
+network_remote_enable_user_p14 = "false"
+network_remote_enable_user_p15 = "false"
+network_remote_enable_user_p16 = "false"
+log_verbosity = "false"
+perfcnt_enable = "false"
+video_message_color = "ffff00"
+menu_entry_normal_color = "ffffffff"
+menu_entry_hover_color = "ff64ff64"
+menu_title_color = "ff64ff64"
+gamma_correction = "false"
+flicker_filter_enable = "false"
+soft_filter_enable = "false"
+soft_filter_index = "0"
+current_resolution_id = "0"
+flicker_filter_index = "0"
+input_player1_b = "k"
+input_player1_b_btn = "nul"
+input_player1_b_axis = "nul"
+input_player1_b_mbtn = "nul"
+input_player1_y = "i"
+input_player1_y_btn = "nul"
+input_player1_y_axis = "nul"
+input_player1_y_mbtn = "nul"
+input_player1_select = "space"
+input_player1_select_btn = "nul"
+input_player1_select_axis = "nul"
+input_player1_select_mbtn = "nul"
+input_player1_start = "enter"
+input_player1_start_btn = "nul"
+input_player1_start_axis = "nul"
+input_player1_start_mbtn = "nul"
+input_player1_up = "up"
+input_player1_up_btn = "nul"
+input_player1_up_axis = "nul"
+input_player1_up_mbtn = "nul"
+input_player1_down = "down"
+input_player1_down_btn = "nul"
+input_player1_down_axis = "nul"
+input_player1_down_mbtn = "nul"
+input_player1_left = "left"
+input_player1_left_btn = "nul"
+input_player1_left_axis = "nul"
+input_player1_left_mbtn = "nul"
+input_player1_right = "right"
+input_player1_right_btn = "nul"
+input_player1_right_axis = "nul"
+input_player1_right_mbtn = "nul"
+input_player1_a = "l"
+input_player1_a_btn = "nul"
+input_player1_a_axis = "nul"
+input_player1_a_mbtn = "nul"
+input_player1_x = "u"
+input_player1_x_btn = "nul"
+input_player1_x_axis = "nul"
+input_player1_x_mbtn = "nul"
+input_player1_l = "h"
+input_player1_l_btn = "nul"
+input_player1_l_axis = "nul"
+input_player1_l_mbtn = "nul"
+input_player1_r = "j"
+input_player1_r_btn = "nul"
+input_player1_r_axis = "nul"
+input_player1_r_mbtn = "nul"
+input_player1_l2 = "y"
+input_player1_l2_btn = "nul"
+input_player1_l2_axis = "nul"
+input_player1_l2_mbtn = "nul"
+input_player1_r2 = "o"
+input_player1_r2_btn = "nul"
+input_player1_r2_axis = "nul"
+input_player1_r2_mbtn = "nul"
+input_player1_l3 = "nul"
+input_player1_l3_btn = "nul"
+input_player1_l3_axis = "nul"
+input_player1_l3_mbtn = "nul"
+input_player1_r3 = "nul"
+input_player1_r3_btn = "nul"
+input_player1_r3_axis = "nul"
+input_player1_r3_mbtn = "nul"
+input_player1_l_x_plus = "nul"
+input_player1_l_x_plus_btn = "nul"
+input_player1_l_x_plus_axis = "nul"
+input_player1_l_x_plus_mbtn = "nul"
+input_player1_l_x_minus = "nul"
+input_player1_l_x_minus_btn = "nul"
+input_player1_l_x_minus_axis = "nul"
+input_player1_l_x_minus_mbtn = "nul"
+input_player1_l_y_plus = "nul"
+input_player1_l_y_plus_btn = "nul"
+input_player1_l_y_plus_axis = "nul"
+input_player1_l_y_plus_mbtn = "nul"
+input_player1_l_y_minus = "nul"
+input_player1_l_y_minus_btn = "nul"
+input_player1_l_y_minus_axis = "nul"
+input_player1_l_y_minus_mbtn = "nul"
+input_player1_r_x_plus = "nul"
+input_player1_r_x_plus_btn = "nul"
+input_player1_r_x_plus_axis = "nul"
+input_player1_r_x_plus_mbtn = "nul"
+input_player1_r_x_minus = "nul"
+input_player1_r_x_minus_btn = "nul"
+input_player1_r_x_minus_axis = "nul"
+input_player1_r_x_minus_mbtn = "nul"
+input_player1_r_y_plus = "nul"
+input_player1_r_y_plus_btn = "nul"
+input_player1_r_y_plus_axis = "nul"
+input_player1_r_y_plus_mbtn = "nul"
+input_player1_r_y_minus = "nul"
+input_player1_r_y_minus_btn = "nul"
+input_player1_r_y_minus_axis = "nul"
+input_player1_r_y_minus_mbtn = "nul"
+input_player1_gun_trigger = "nul"
+input_player1_gun_trigger_btn = "nul"
+input_player1_gun_trigger_axis = "nul"
+input_player1_gun_trigger_mbtn = "nul"
+input_player1_gun_offscreen_shot = "nul"
+input_player1_gun_offscreen_shot_btn = "nul"
+input_player1_gun_offscreen_shot_axis = "nul"
+input_player1_gun_offscreen_shot_mbtn = "nul"
+input_player1_gun_aux_a = "nul"
+input_player1_gun_aux_a_btn = "nul"
+input_player1_gun_aux_a_axis = "nul"
+input_player1_gun_aux_a_mbtn = "nul"
+input_player1_gun_aux_b = "nul"
+input_player1_gun_aux_b_btn = "nul"
+input_player1_gun_aux_b_axis = "nul"
+input_player1_gun_aux_b_mbtn = "nul"
+input_player1_gun_aux_c = "nul"
+input_player1_gun_aux_c_btn = "nul"
+input_player1_gun_aux_c_axis = "nul"
+input_player1_gun_aux_c_mbtn = "nul"
+input_player1_gun_start = "nul"
+input_player1_gun_start_btn = "nul"
+input_player1_gun_start_axis = "nul"
+input_player1_gun_start_mbtn = "nul"
+input_player1_gun_select = "nul"
+input_player1_gun_select_btn = "nul"
+input_player1_gun_select_axis = "nul"
+input_player1_gun_select_mbtn = "nul"
+input_player1_gun_dpad_up = "nul"
+input_player1_gun_dpad_up_btn = "nul"
+input_player1_gun_dpad_up_axis = "nul"
+input_player1_gun_dpad_up_mbtn = "nul"
+input_player1_gun_dpad_down = "nul"
+input_player1_gun_dpad_down_btn = "nul"
+input_player1_gun_dpad_down_axis = "nul"
+input_player1_gun_dpad_down_mbtn = "nul"
+input_player1_gun_dpad_left = "nul"
+input_player1_gun_dpad_left_btn = "nul"
+input_player1_gun_dpad_left_axis = "nul"
+input_player1_gun_dpad_left_mbtn = "nul"
+input_player1_gun_dpad_right = "nul"
+input_player1_gun_dpad_right_btn = "nul"
+input_player1_gun_dpad_right_axis = "nul"
+input_player1_gun_dpad_right_mbtn = "nul"
+input_player1_turbo = "nul"
+input_player1_turbo_btn = "nul"
+input_player1_turbo_axis = "nul"
+input_player1_turbo_mbtn = "nul"
+input_toggle_fast_forward = "nul"
+input_toggle_fast_forward_btn = "nul"
+input_toggle_fast_forward_axis = "nul"
+input_toggle_fast_forward_mbtn = "nul"
+input_hold_fast_forward = "nul"
+input_hold_fast_forward_btn = "nul"
+input_hold_fast_forward_axis = "nul"
+input_hold_fast_forward_mbtn = "nul"
+input_load_state = "f4"
+input_load_state_btn = "nul"
+input_load_state_axis = "nul"
+input_load_state_mbtn = "nul"
+input_save_state = "f2"
+input_save_state_btn = "nul"
+input_save_state_axis = "nul"
+input_save_state_mbtn = "nul"
+input_toggle_fullscreen = "nul"
+input_toggle_fullscreen_btn = "nul"
+input_toggle_fullscreen_axis = "nul"
+input_toggle_fullscreen_mbtn = "nul"
+input_exit_emulator = "escape"
+input_exit_emulator_btn = "nul"
+input_exit_emulator_axis = "nul"
+input_exit_emulator_mbtn = "nul"
+input_state_slot_increase = "f7"
+input_state_slot_increase_btn = "nul"
+input_state_slot_increase_axis = "nul"
+input_state_slot_increase_mbtn = "nul"
+input_state_slot_decrease = "f6"
+input_state_slot_decrease_btn = "nul"
+input_state_slot_decrease_axis = "nul"
+input_state_slot_decrease_mbtn = "nul"
+input_rewind = "nul"
+input_rewind_btn = "nul"
+input_rewind_axis = "nul"
+input_rewind_mbtn = "nul"
+input_movie_record_toggle = "nul"
+input_movie_record_toggle_btn = "nul"
+input_movie_record_toggle_axis = "nul"
+input_movie_record_toggle_mbtn = "nul"
+input_pause_toggle = "nul"
+input_pause_toggle_btn = "nul"
+input_pause_toggle_axis = "nul"
+input_pause_toggle_mbtn = "nul"
+input_frame_advance = "nul"
+input_frame_advance_btn = "nul"
+input_frame_advance_axis = "nul"
+input_frame_advance_mbtn = "nul"
+input_reset = "nul"
+input_reset_btn = "nul"
+input_reset_axis = "nul"
+input_reset_mbtn = "nul"
+input_shader_next = "m"
+input_shader_next_btn = "nul"
+input_shader_next_axis = "nul"
+input_shader_next_mbtn = "nul"
+input_shader_prev = "n"
+input_shader_prev_btn = "nul"
+input_shader_prev_axis = "nul"
+input_shader_prev_mbtn = "nul"
+input_cheat_index_plus = "nul"
+input_cheat_index_plus_btn = "nul"
+input_cheat_index_plus_axis = "nul"
+input_cheat_index_plus_mbtn = "nul"
+input_cheat_index_minus = "nul"
+input_cheat_index_minus_btn = "nul"
+input_cheat_index_minus_axis = "nul"
+input_cheat_index_minus_mbtn = "nul"
+input_cheat_toggle = "nul"
+input_cheat_toggle_btn = "nul"
+input_cheat_toggle_axis = "nul"
+input_cheat_toggle_mbtn = "nul"
+input_screenshot = "f8"
+input_screenshot_btn = "nul"
+input_screenshot_axis = "nul"
+input_screenshot_mbtn = "nul"
+input_audio_mute = "f9"
+input_audio_mute_btn = "nul"
+input_audio_mute_axis = "nul"
+input_audio_mute_mbtn = "nul"
+input_osk_toggle = "f12"
+input_osk_toggle_btn = "nul"
+input_osk_toggle_axis = "nul"
+input_osk_toggle_mbtn = "nul"
+input_netplay_game_watch = "nul"
+input_netplay_game_watch_btn = "nul"
+input_netplay_game_watch_axis = "nul"
+input_netplay_game_watch_mbtn = "nul"
+input_slowmotion = "e"
+input_slowmotion_btn = "nul"
+input_slowmotion_axis = "nul"
+input_slowmotion_mbtn = "nul"
+input_enable_hotkey = "nul"
+input_enable_hotkey_btn = "nul"
+input_enable_hotkey_axis = "nul"
+input_enable_hotkey_mbtn = "nul"
+input_volume_up = "add"
+input_volume_up_btn = "nul"
+input_volume_up_axis = "nul"
+input_volume_up_mbtn = "nul"
+input_volume_down = "subtract"
+input_volume_down_btn = "nul"
+input_volume_down_axis = "nul"
+input_volume_down_mbtn = "nul"
+input_overlay_next = "nul"
+input_overlay_next_btn = "nul"
+input_overlay_next_axis = "nul"
+input_overlay_next_mbtn = "nul"
+input_disk_eject_toggle = "nul"
+input_disk_eject_toggle_btn = "nul"
+input_disk_eject_toggle_axis = "nul"
+input_disk_eject_toggle_mbtn = "nul"
+input_disk_next = "nul"
+input_disk_next_btn = "nul"
+input_disk_next_axis = "nul"
+input_disk_next_mbtn = "nul"
+input_disk_prev = "nul"
+input_disk_prev_btn = "nul"
+input_disk_prev_axis = "nul"
+input_disk_prev_mbtn = "nul"
+input_grab_mouse_toggle = "f11"
+input_grab_mouse_toggle_btn = "nul"
+input_grab_mouse_toggle_axis = "nul"
+input_grab_mouse_toggle_mbtn = "nul"
+input_game_focus_toggle = "scroll_lock"
+input_game_focus_toggle_btn = "nul"
+input_game_focus_toggle_axis = "nul"
+input_game_focus_toggle_mbtn = "nul"
+input_menu_toggle = "f1"
+input_menu_toggle_btn = "nul"
+input_menu_toggle_axis = "nul"
+input_menu_toggle_mbtn = "nul"
+input_player2_b = "nul"
+input_player2_b_btn = "nul"
+input_player2_b_axis = "nul"
+input_player2_b_mbtn = "nul"
+input_player2_y = "nul"
+input_player2_y_btn = "nul"
+input_player2_y_axis = "nul"
+input_player2_y_mbtn = "nul"
+input_player2_select = "nul"
+input_player2_select_btn = "nul"
+input_player2_select_axis = "nul"
+input_player2_select_mbtn = "nul"
+input_player2_start = "nul"
+input_player2_start_btn = "nul"
+input_player2_start_axis = "nul"
+input_player2_start_mbtn = "nul"
+input_player2_up = "nul"
+input_player2_up_btn = "nul"
+input_player2_up_axis = "nul"
+input_player2_up_mbtn = "nul"
+input_player2_down = "nul"
+input_player2_down_btn = "nul"
+input_player2_down_axis = "nul"
+input_player2_down_mbtn = "nul"
+input_player2_left = "nul"
+input_player2_left_btn = "nul"
+input_player2_left_axis = "nul"
+input_player2_left_mbtn = "nul"
+input_player2_right = "nul"
+input_player2_right_btn = "nul"
+input_player2_right_axis = "nul"
+input_player2_right_mbtn = "nul"
+input_player2_a = "nul"
+input_player2_a_btn = "nul"
+input_player2_a_axis = "nul"
+input_player2_a_mbtn = "nul"
+input_player2_x = "nul"
+input_player2_x_btn = "nul"
+input_player2_x_axis = "nul"
+input_player2_x_mbtn = "nul"
+input_player2_l = "nul"
+input_player2_l_btn = "nul"
+input_player2_l_axis = "nul"
+input_player2_l_mbtn = "nul"
+input_player2_r = "nul"
+input_player2_r_btn = "nul"
+input_player2_r_axis = "nul"
+input_player2_r_mbtn = "nul"
+input_player2_l2 = "nul"
+input_player2_l2_btn = "nul"
+input_player2_l2_axis = "nul"
+input_player2_l2_mbtn = "nul"
+input_player2_r2 = "nul"
+input_player2_r2_btn = "nul"
+input_player2_r2_axis = "nul"
+input_player2_r2_mbtn = "nul"
+input_player2_l3 = "nul"
+input_player2_l3_btn = "nul"
+input_player2_l3_axis = "nul"
+input_player2_l3_mbtn = "nul"
+input_player2_r3 = "nul"
+input_player2_r3_btn = "nul"
+input_player2_r3_axis = "nul"
+input_player2_r3_mbtn = "nul"
+input_player2_l_x_plus = "nul"
+input_player2_l_x_plus_btn = "nul"
+input_player2_l_x_plus_axis = "nul"
+input_player2_l_x_plus_mbtn = "nul"
+input_player2_l_x_minus = "nul"
+input_player2_l_x_minus_btn = "nul"
+input_player2_l_x_minus_axis = "nul"
+input_player2_l_x_minus_mbtn = "nul"
+input_player2_l_y_plus = "nul"
+input_player2_l_y_plus_btn = "nul"
+input_player2_l_y_plus_axis = "nul"
+input_player2_l_y_plus_mbtn = "nul"
+input_player2_l_y_minus = "nul"
+input_player2_l_y_minus_btn = "nul"
+input_player2_l_y_minus_axis = "nul"
+input_player2_l_y_minus_mbtn = "nul"
+input_player2_r_x_plus = "nul"
+input_player2_r_x_plus_btn = "nul"
+input_player2_r_x_plus_axis = "nul"
+input_player2_r_x_plus_mbtn = "nul"
+input_player2_r_x_minus = "nul"
+input_player2_r_x_minus_btn = "nul"
+input_player2_r_x_minus_axis = "nul"
+input_player2_r_x_minus_mbtn = "nul"
+input_player2_r_y_plus = "nul"
+input_player2_r_y_plus_btn = "nul"
+input_player2_r_y_plus_axis = "nul"
+input_player2_r_y_plus_mbtn = "nul"
+input_player2_r_y_minus = "nul"
+input_player2_r_y_minus_btn = "nul"
+input_player2_r_y_minus_axis = "nul"
+input_player2_r_y_minus_mbtn = "nul"
+input_player2_gun_trigger = "nul"
+input_player2_gun_trigger_btn = "nul"
+input_player2_gun_trigger_axis = "nul"
+input_player2_gun_trigger_mbtn = "nul"
+input_player2_gun_offscreen_shot = "nul"
+input_player2_gun_offscreen_shot_btn = "nul"
+input_player2_gun_offscreen_shot_axis = "nul"
+input_player2_gun_offscreen_shot_mbtn = "nul"
+input_player2_gun_aux_a = "nul"
+input_player2_gun_aux_a_btn = "nul"
+input_player2_gun_aux_a_axis = "nul"
+input_player2_gun_aux_a_mbtn = "nul"
+input_player2_gun_aux_b = "nul"
+input_player2_gun_aux_b_btn = "nul"
+input_player2_gun_aux_b_axis = "nul"
+input_player2_gun_aux_b_mbtn = "nul"
+input_player2_gun_aux_c = "nul"
+input_player2_gun_aux_c_btn = "nul"
+input_player2_gun_aux_c_axis = "nul"
+input_player2_gun_aux_c_mbtn = "nul"
+input_player2_gun_start = "nul"
+input_player2_gun_start_btn = "nul"
+input_player2_gun_start_axis = "nul"
+input_player2_gun_start_mbtn = "nul"
+input_player2_gun_select = "nul"
+input_player2_gun_select_btn = "nul"
+input_player2_gun_select_axis = "nul"
+input_player2_gun_select_mbtn = "nul"
+input_player2_gun_dpad_up = "nul"
+input_player2_gun_dpad_up_btn = "nul"
+input_player2_gun_dpad_up_axis = "nul"
+input_player2_gun_dpad_up_mbtn = "nul"
+input_player2_gun_dpad_down = "nul"
+input_player2_gun_dpad_down_btn = "nul"
+input_player2_gun_dpad_down_axis = "nul"
+input_player2_gun_dpad_down_mbtn = "nul"
+input_player2_gun_dpad_left = "nul"
+input_player2_gun_dpad_left_btn = "nul"
+input_player2_gun_dpad_left_axis = "nul"
+input_player2_gun_dpad_left_mbtn = "nul"
+input_player2_gun_dpad_right = "nul"
+input_player2_gun_dpad_right_btn = "nul"
+input_player2_gun_dpad_right_axis = "nul"
+input_player2_gun_dpad_right_mbtn = "nul"
+input_player2_turbo = "nul"
+input_player2_turbo_btn = "nul"
+input_player2_turbo_axis = "nul"
+input_player2_turbo_mbtn = "nul"
+input_player3_b = "nul"
+input_player3_b_btn = "nul"
+input_player3_b_axis = "nul"
+input_player3_b_mbtn = "nul"
+input_player3_y = "nul"
+input_player3_y_btn = "nul"
+input_player3_y_axis = "nul"
+input_player3_y_mbtn = "nul"
+input_player3_select = "nul"
+input_player3_select_btn = "nul"
+input_player3_select_axis = "nul"
+input_player3_select_mbtn = "nul"
+input_player3_start = "nul"
+input_player3_start_btn = "nul"
+input_player3_start_axis = "nul"
+input_player3_start_mbtn = "nul"
+input_player3_up = "nul"
+input_player3_up_btn = "nul"
+input_player3_up_axis = "nul"
+input_player3_up_mbtn = "nul"
+input_player3_down = "nul"
+input_player3_down_btn = "nul"
+input_player3_down_axis = "nul"
+input_player3_down_mbtn = "nul"
+input_player3_left = "nul"
+input_player3_left_btn = "nul"
+input_player3_left_axis = "nul"
+input_player3_left_mbtn = "nul"
+input_player3_right = "nul"
+input_player3_right_btn = "nul"
+input_player3_right_axis = "nul"
+input_player3_right_mbtn = "nul"
+input_player3_a = "nul"
+input_player3_a_btn = "nul"
+input_player3_a_axis = "nul"
+input_player3_a_mbtn = "nul"
+input_player3_x = "nul"
+input_player3_x_btn = "nul"
+input_player3_x_axis = "nul"
+input_player3_x_mbtn = "nul"
+input_player3_l = "nul"
+input_player3_l_btn = "nul"
+input_player3_l_axis = "nul"
+input_player3_l_mbtn = "nul"
+input_player3_r = "nul"
+input_player3_r_btn = "nul"
+input_player3_r_axis = "nul"
+input_player3_r_mbtn = "nul"
+input_player3_l2 = "nul"
+input_player3_l2_btn = "nul"
+input_player3_l2_axis = "nul"
+input_player3_l2_mbtn = "nul"
+input_player3_r2 = "nul"
+input_player3_r2_btn = "nul"
+input_player3_r2_axis = "nul"
+input_player3_r2_mbtn = "nul"
+input_player3_l3 = "nul"
+input_player3_l3_btn = "nul"
+input_player3_l3_axis = "nul"
+input_player3_l3_mbtn = "nul"
+input_player3_r3 = "nul"
+input_player3_r3_btn = "nul"
+input_player3_r3_axis = "nul"
+input_player3_r3_mbtn = "nul"
+input_player3_l_x_plus = "nul"
+input_player3_l_x_plus_btn = "nul"
+input_player3_l_x_plus_axis = "nul"
+input_player3_l_x_plus_mbtn = "nul"
+input_player3_l_x_minus = "nul"
+input_player3_l_x_minus_btn = "nul"
+input_player3_l_x_minus_axis = "nul"
+input_player3_l_x_minus_mbtn = "nul"
+input_player3_l_y_plus = "nul"
+input_player3_l_y_plus_btn = "nul"
+input_player3_l_y_plus_axis = "nul"
+input_player3_l_y_plus_mbtn = "nul"
+input_player3_l_y_minus = "nul"
+input_player3_l_y_minus_btn = "nul"
+input_player3_l_y_minus_axis = "nul"
+input_player3_l_y_minus_mbtn = "nul"
+input_player3_r_x_plus = "nul"
+input_player3_r_x_plus_btn = "nul"
+input_player3_r_x_plus_axis = "nul"
+input_player3_r_x_plus_mbtn = "nul"
+input_player3_r_x_minus = "nul"
+input_player3_r_x_minus_btn = "nul"
+input_player3_r_x_minus_axis = "nul"
+input_player3_r_x_minus_mbtn = "nul"
+input_player3_r_y_plus = "nul"
+input_player3_r_y_plus_btn = "nul"
+input_player3_r_y_plus_axis = "nul"
+input_player3_r_y_plus_mbtn = "nul"
+input_player3_r_y_minus = "nul"
+input_player3_r_y_minus_btn = "nul"
+input_player3_r_y_minus_axis = "nul"
+input_player3_r_y_minus_mbtn = "nul"
+input_player3_gun_trigger = "nul"
+input_player3_gun_trigger_btn = "nul"
+input_player3_gun_trigger_axis = "nul"
+input_player3_gun_trigger_mbtn = "nul"
+input_player3_gun_offscreen_shot = "nul"
+input_player3_gun_offscreen_shot_btn = "nul"
+input_player3_gun_offscreen_shot_axis = "nul"
+input_player3_gun_offscreen_shot_mbtn = "nul"
+input_player3_gun_aux_a = "nul"
+input_player3_gun_aux_a_btn = "nul"
+input_player3_gun_aux_a_axis = "nul"
+input_player3_gun_aux_a_mbtn = "nul"
+input_player3_gun_aux_b = "nul"
+input_player3_gun_aux_b_btn = "nul"
+input_player3_gun_aux_b_axis = "nul"
+input_player3_gun_aux_b_mbtn = "nul"
+input_player3_gun_aux_c = "nul"
+input_player3_gun_aux_c_btn = "nul"
+input_player3_gun_aux_c_axis = "nul"
+input_player3_gun_aux_c_mbtn = "nul"
+input_player3_gun_start = "nul"
+input_player3_gun_start_btn = "nul"
+input_player3_gun_start_axis = "nul"
+input_player3_gun_start_mbtn = "nul"
+input_player3_gun_select = "nul"
+input_player3_gun_select_btn = "nul"
+input_player3_gun_select_axis = "nul"
+input_player3_gun_select_mbtn = "nul"
+input_player3_gun_dpad_up = "nul"
+input_player3_gun_dpad_up_btn = "nul"
+input_player3_gun_dpad_up_axis = "nul"
+input_player3_gun_dpad_up_mbtn = "nul"
+input_player3_gun_dpad_down = "nul"
+input_player3_gun_dpad_down_btn = "nul"
+input_player3_gun_dpad_down_axis = "nul"
+input_player3_gun_dpad_down_mbtn = "nul"
+input_player3_gun_dpad_left = "nul"
+input_player3_gun_dpad_left_btn = "nul"
+input_player3_gun_dpad_left_axis = "nul"
+input_player3_gun_dpad_left_mbtn = "nul"
+input_player3_gun_dpad_right = "nul"
+input_player3_gun_dpad_right_btn = "nul"
+input_player3_gun_dpad_right_axis = "nul"
+input_player3_gun_dpad_right_mbtn = "nul"
+input_player3_turbo = "nul"
+input_player3_turbo_btn = "nul"
+input_player3_turbo_axis = "nul"
+input_player3_turbo_mbtn = "nul"
+input_player4_b = "nul"
+input_player4_b_btn = "nul"
+input_player4_b_axis = "nul"
+input_player4_b_mbtn = "nul"
+input_player4_y = "nul"
+input_player4_y_btn = "nul"
+input_player4_y_axis = "nul"
+input_player4_y_mbtn = "nul"
+input_player4_select = "nul"
+input_player4_select_btn = "nul"
+input_player4_select_axis = "nul"
+input_player4_select_mbtn = "nul"
+input_player4_start = "nul"
+input_player4_start_btn = "nul"
+input_player4_start_axis = "nul"
+input_player4_start_mbtn = "nul"
+input_player4_up = "nul"
+input_player4_up_btn = "nul"
+input_player4_up_axis = "nul"
+input_player4_up_mbtn = "nul"
+input_player4_down = "nul"
+input_player4_down_btn = "nul"
+input_player4_down_axis = "nul"
+input_player4_down_mbtn = "nul"
+input_player4_left = "nul"
+input_player4_left_btn = "nul"
+input_player4_left_axis = "nul"
+input_player4_left_mbtn = "nul"
+input_player4_right = "nul"
+input_player4_right_btn = "nul"
+input_player4_right_axis = "nul"
+input_player4_right_mbtn = "nul"
+input_player4_a = "nul"
+input_player4_a_btn = "nul"
+input_player4_a_axis = "nul"
+input_player4_a_mbtn = "nul"
+input_player4_x = "nul"
+input_player4_x_btn = "nul"
+input_player4_x_axis = "nul"
+input_player4_x_mbtn = "nul"
+input_player4_l = "nul"
+input_player4_l_btn = "nul"
+input_player4_l_axis = "nul"
+input_player4_l_mbtn = "nul"
+input_player4_r = "nul"
+input_player4_r_btn = "nul"
+input_player4_r_axis = "nul"
+input_player4_r_mbtn = "nul"
+input_player4_l2 = "nul"
+input_player4_l2_btn = "nul"
+input_player4_l2_axis = "nul"
+input_player4_l2_mbtn = "nul"
+input_player4_r2 = "nul"
+input_player4_r2_btn = "nul"
+input_player4_r2_axis = "nul"
+input_player4_r2_mbtn = "nul"
+input_player4_l3 = "nul"
+input_player4_l3_btn = "nul"
+input_player4_l3_axis = "nul"
+input_player4_l3_mbtn = "nul"
+input_player4_r3 = "nul"
+input_player4_r3_btn = "nul"
+input_player4_r3_axis = "nul"
+input_player4_r3_mbtn = "nul"
+input_player4_l_x_plus = "nul"
+input_player4_l_x_plus_btn = "nul"
+input_player4_l_x_plus_axis = "nul"
+input_player4_l_x_plus_mbtn = "nul"
+input_player4_l_x_minus = "nul"
+input_player4_l_x_minus_btn = "nul"
+input_player4_l_x_minus_axis = "nul"
+input_player4_l_x_minus_mbtn = "nul"
+input_player4_l_y_plus = "nul"
+input_player4_l_y_plus_btn = "nul"
+input_player4_l_y_plus_axis = "nul"
+input_player4_l_y_plus_mbtn = "nul"
+input_player4_l_y_minus = "nul"
+input_player4_l_y_minus_btn = "nul"
+input_player4_l_y_minus_axis = "nul"
+input_player4_l_y_minus_mbtn = "nul"
+input_player4_r_x_plus = "nul"
+input_player4_r_x_plus_btn = "nul"
+input_player4_r_x_plus_axis = "nul"
+input_player4_r_x_plus_mbtn = "nul"
+input_player4_r_x_minus = "nul"
+input_player4_r_x_minus_btn = "nul"
+input_player4_r_x_minus_axis = "nul"
+input_player4_r_x_minus_mbtn = "nul"
+input_player4_r_y_plus = "nul"
+input_player4_r_y_plus_btn = "nul"
+input_player4_r_y_plus_axis = "nul"
+input_player4_r_y_plus_mbtn = "nul"
+input_player4_r_y_minus = "nul"
+input_player4_r_y_minus_btn = "nul"
+input_player4_r_y_minus_axis = "nul"
+input_player4_r_y_minus_mbtn = "nul"
+input_player4_gun_trigger = "nul"
+input_player4_gun_trigger_btn = "nul"
+input_player4_gun_trigger_axis = "nul"
+input_player4_gun_trigger_mbtn = "nul"
+input_player4_gun_offscreen_shot = "nul"
+input_player4_gun_offscreen_shot_btn = "nul"
+input_player4_gun_offscreen_shot_axis = "nul"
+input_player4_gun_offscreen_shot_mbtn = "nul"
+input_player4_gun_aux_a = "nul"
+input_player4_gun_aux_a_btn = "nul"
+input_player4_gun_aux_a_axis = "nul"
+input_player4_gun_aux_a_mbtn = "nul"
+input_player4_gun_aux_b = "nul"
+input_player4_gun_aux_b_btn = "nul"
+input_player4_gun_aux_b_axis = "nul"
+input_player4_gun_aux_b_mbtn = "nul"
+input_player4_gun_aux_c = "nul"
+input_player4_gun_aux_c_btn = "nul"
+input_player4_gun_aux_c_axis = "nul"
+input_player4_gun_aux_c_mbtn = "nul"
+input_player4_gun_start = "nul"
+input_player4_gun_start_btn = "nul"
+input_player4_gun_start_axis = "nul"
+input_player4_gun_start_mbtn = "nul"
+input_player4_gun_select = "nul"
+input_player4_gun_select_btn = "nul"
+input_player4_gun_select_axis = "nul"
+input_player4_gun_select_mbtn = "nul"
+input_player4_gun_dpad_up = "nul"
+input_player4_gun_dpad_up_btn = "nul"
+input_player4_gun_dpad_up_axis = "nul"
+input_player4_gun_dpad_up_mbtn = "nul"
+input_player4_gun_dpad_down = "nul"
+input_player4_gun_dpad_down_btn = "nul"
+input_player4_gun_dpad_down_axis = "nul"
+input_player4_gun_dpad_down_mbtn = "nul"
+input_player4_gun_dpad_left = "nul"
+input_player4_gun_dpad_left_btn = "nul"
+input_player4_gun_dpad_left_axis = "nul"
+input_player4_gun_dpad_left_mbtn = "nul"
+input_player4_gun_dpad_right = "nul"
+input_player4_gun_dpad_right_btn = "nul"
+input_player4_gun_dpad_right_axis = "nul"
+input_player4_gun_dpad_right_mbtn = "nul"
+input_player4_turbo = "nul"
+input_player4_turbo_btn = "nul"
+input_player4_turbo_axis = "nul"
+input_player4_turbo_mbtn = "nul"
+input_player5_b = "nul"
+input_player5_b_btn = "nul"
+input_player5_b_axis = "nul"
+input_player5_b_mbtn = "nul"
+input_player5_y = "nul"
+input_player5_y_btn = "nul"
+input_player5_y_axis = "nul"
+input_player5_y_mbtn = "nul"
+input_player5_select = "nul"
+input_player5_select_btn = "nul"
+input_player5_select_axis = "nul"
+input_player5_select_mbtn = "nul"
+input_player5_start = "nul"
+input_player5_start_btn = "nul"
+input_player5_start_axis = "nul"
+input_player5_start_mbtn = "nul"
+input_player5_up = "nul"
+input_player5_up_btn = "nul"
+input_player5_up_axis = "nul"
+input_player5_up_mbtn = "nul"
+input_player5_down = "nul"
+input_player5_down_btn = "nul"
+input_player5_down_axis = "nul"
+input_player5_down_mbtn = "nul"
+input_player5_left = "nul"
+input_player5_left_btn = "nul"
+input_player5_left_axis = "nul"
+input_player5_left_mbtn = "nul"
+input_player5_right = "nul"
+input_player5_right_btn = "nul"
+input_player5_right_axis = "nul"
+input_player5_right_mbtn = "nul"
+input_player5_a = "nul"
+input_player5_a_btn = "nul"
+input_player5_a_axis = "nul"
+input_player5_a_mbtn = "nul"
+input_player5_x = "nul"
+input_player5_x_btn = "nul"
+input_player5_x_axis = "nul"
+input_player5_x_mbtn = "nul"
+input_player5_l = "nul"
+input_player5_l_btn = "nul"
+input_player5_l_axis = "nul"
+input_player5_l_mbtn = "nul"
+input_player5_r = "nul"
+input_player5_r_btn = "nul"
+input_player5_r_axis = "nul"
+input_player5_r_mbtn = "nul"
+input_player5_l2 = "nul"
+input_player5_l2_btn = "nul"
+input_player5_l2_axis = "nul"
+input_player5_l2_mbtn = "nul"
+input_player5_r2 = "nul"
+input_player5_r2_btn = "nul"
+input_player5_r2_axis = "nul"
+input_player5_r2_mbtn = "nul"
+input_player5_l3 = "nul"
+input_player5_l3_btn = "nul"
+input_player5_l3_axis = "nul"
+input_player5_l3_mbtn = "nul"
+input_player5_r3 = "nul"
+input_player5_r3_btn = "nul"
+input_player5_r3_axis = "nul"
+input_player5_r3_mbtn = "nul"
+input_player5_l_x_plus = "nul"
+input_player5_l_x_plus_btn = "nul"
+input_player5_l_x_plus_axis = "nul"
+input_player5_l_x_plus_mbtn = "nul"
+input_player5_l_x_minus = "nul"
+input_player5_l_x_minus_btn = "nul"
+input_player5_l_x_minus_axis = "nul"
+input_player5_l_x_minus_mbtn = "nul"
+input_player5_l_y_plus = "nul"
+input_player5_l_y_plus_btn = "nul"
+input_player5_l_y_plus_axis = "nul"
+input_player5_l_y_plus_mbtn = "nul"
+input_player5_l_y_minus = "nul"
+input_player5_l_y_minus_btn = "nul"
+input_player5_l_y_minus_axis = "nul"
+input_player5_l_y_minus_mbtn = "nul"
+input_player5_r_x_plus = "nul"
+input_player5_r_x_plus_btn = "nul"
+input_player5_r_x_plus_axis = "nul"
+input_player5_r_x_plus_mbtn = "nul"
+input_player5_r_x_minus = "nul"
+input_player5_r_x_minus_btn = "nul"
+input_player5_r_x_minus_axis = "nul"
+input_player5_r_x_minus_mbtn = "nul"
+input_player5_r_y_plus = "nul"
+input_player5_r_y_plus_btn = "nul"
+input_player5_r_y_plus_axis = "nul"
+input_player5_r_y_plus_mbtn = "nul"
+input_player5_r_y_minus = "nul"
+input_player5_r_y_minus_btn = "nul"
+input_player5_r_y_minus_axis = "nul"
+input_player5_r_y_minus_mbtn = "nul"
+input_player5_gun_trigger = "nul"
+input_player5_gun_trigger_btn = "nul"
+input_player5_gun_trigger_axis = "nul"
+input_player5_gun_trigger_mbtn = "nul"
+input_player5_gun_offscreen_shot = "nul"
+input_player5_gun_offscreen_shot_btn = "nul"
+input_player5_gun_offscreen_shot_axis = "nul"
+input_player5_gun_offscreen_shot_mbtn = "nul"
+input_player5_gun_aux_a = "nul"
+input_player5_gun_aux_a_btn = "nul"
+input_player5_gun_aux_a_axis = "nul"
+input_player5_gun_aux_a_mbtn = "nul"
+input_player5_gun_aux_b = "nul"
+input_player5_gun_aux_b_btn = "nul"
+input_player5_gun_aux_b_axis = "nul"
+input_player5_gun_aux_b_mbtn = "nul"
+input_player5_gun_aux_c = "nul"
+input_player5_gun_aux_c_btn = "nul"
+input_player5_gun_aux_c_axis = "nul"
+input_player5_gun_aux_c_mbtn = "nul"
+input_player5_gun_start = "nul"
+input_player5_gun_start_btn = "nul"
+input_player5_gun_start_axis = "nul"
+input_player5_gun_start_mbtn = "nul"
+input_player5_gun_select = "nul"
+input_player5_gun_select_btn = "nul"
+input_player5_gun_select_axis = "nul"
+input_player5_gun_select_mbtn = "nul"
+input_player5_gun_dpad_up = "nul"
+input_player5_gun_dpad_up_btn = "nul"
+input_player5_gun_dpad_up_axis = "nul"
+input_player5_gun_dpad_up_mbtn = "nul"
+input_player5_gun_dpad_down = "nul"
+input_player5_gun_dpad_down_btn = "nul"
+input_player5_gun_dpad_down_axis = "nul"
+input_player5_gun_dpad_down_mbtn = "nul"
+input_player5_gun_dpad_left = "nul"
+input_player5_gun_dpad_left_btn = "nul"
+input_player5_gun_dpad_left_axis = "nul"
+input_player5_gun_dpad_left_mbtn = "nul"
+input_player5_gun_dpad_right = "nul"
+input_player5_gun_dpad_right_btn = "nul"
+input_player5_gun_dpad_right_axis = "nul"
+input_player5_gun_dpad_right_mbtn = "nul"
+input_player5_turbo = "nul"
+input_player5_turbo_btn = "nul"
+input_player5_turbo_axis = "nul"
+input_player5_turbo_mbtn = "nul"
+input_player6_b = "nul"
+input_player6_b_btn = "nul"
+input_player6_b_axis = "nul"
+input_player6_b_mbtn = "nul"
+input_player6_y = "nul"
+input_player6_y_btn = "nul"
+input_player6_y_axis = "nul"
+input_player6_y_mbtn = "nul"
+input_player6_select = "nul"
+input_player6_select_btn = "nul"
+input_player6_select_axis = "nul"
+input_player6_select_mbtn = "nul"
+input_player6_start = "nul"
+input_player6_start_btn = "nul"
+input_player6_start_axis = "nul"
+input_player6_start_mbtn = "nul"
+input_player6_up = "nul"
+input_player6_up_btn = "nul"
+input_player6_up_axis = "nul"
+input_player6_up_mbtn = "nul"
+input_player6_down = "nul"
+input_player6_down_btn = "nul"
+input_player6_down_axis = "nul"
+input_player6_down_mbtn = "nul"
+input_player6_left = "nul"
+input_player6_left_btn = "nul"
+input_player6_left_axis = "nul"
+input_player6_left_mbtn = "nul"
+input_player6_right = "nul"
+input_player6_right_btn = "nul"
+input_player6_right_axis = "nul"
+input_player6_right_mbtn = "nul"
+input_player6_a = "nul"
+input_player6_a_btn = "nul"
+input_player6_a_axis = "nul"
+input_player6_a_mbtn = "nul"
+input_player6_x = "nul"
+input_player6_x_btn = "nul"
+input_player6_x_axis = "nul"
+input_player6_x_mbtn = "nul"
+input_player6_l = "nul"
+input_player6_l_btn = "nul"
+input_player6_l_axis = "nul"
+input_player6_l_mbtn = "nul"
+input_player6_r = "nul"
+input_player6_r_btn = "nul"
+input_player6_r_axis = "nul"
+input_player6_r_mbtn = "nul"
+input_player6_l2 = "nul"
+input_player6_l2_btn = "nul"
+input_player6_l2_axis = "nul"
+input_player6_l2_mbtn = "nul"
+input_player6_r2 = "nul"
+input_player6_r2_btn = "nul"
+input_player6_r2_axis = "nul"
+input_player6_r2_mbtn = "nul"
+input_player6_l3 = "nul"
+input_player6_l3_btn = "nul"
+input_player6_l3_axis = "nul"
+input_player6_l3_mbtn = "nul"
+input_player6_r3 = "nul"
+input_player6_r3_btn = "nul"
+input_player6_r3_axis = "nul"
+input_player6_r3_mbtn = "nul"
+input_player6_l_x_plus = "nul"
+input_player6_l_x_plus_btn = "nul"
+input_player6_l_x_plus_axis = "nul"
+input_player6_l_x_plus_mbtn = "nul"
+input_player6_l_x_minus = "nul"
+input_player6_l_x_minus_btn = "nul"
+input_player6_l_x_minus_axis = "nul"
+input_player6_l_x_minus_mbtn = "nul"
+input_player6_l_y_plus = "nul"
+input_player6_l_y_plus_btn = "nul"
+input_player6_l_y_plus_axis = "nul"
+input_player6_l_y_plus_mbtn = "nul"
+input_player6_l_y_minus = "nul"
+input_player6_l_y_minus_btn = "nul"
+input_player6_l_y_minus_axis = "nul"
+input_player6_l_y_minus_mbtn = "nul"
+input_player6_r_x_plus = "nul"
+input_player6_r_x_plus_btn = "nul"
+input_player6_r_x_plus_axis = "nul"
+input_player6_r_x_plus_mbtn = "nul"
+input_player6_r_x_minus = "nul"
+input_player6_r_x_minus_btn = "nul"
+input_player6_r_x_minus_axis = "nul"
+input_player6_r_x_minus_mbtn = "nul"
+input_player6_r_y_plus = "nul"
+input_player6_r_y_plus_btn = "nul"
+input_player6_r_y_plus_axis = "nul"
+input_player6_r_y_plus_mbtn = "nul"
+input_player6_r_y_minus = "nul"
+input_player6_r_y_minus_btn = "nul"
+input_player6_r_y_minus_axis = "nul"
+input_player6_r_y_minus_mbtn = "nul"
+input_player6_gun_trigger = "nul"
+input_player6_gun_trigger_btn = "nul"
+input_player6_gun_trigger_axis = "nul"
+input_player6_gun_trigger_mbtn = "nul"
+input_player6_gun_offscreen_shot = "nul"
+input_player6_gun_offscreen_shot_btn = "nul"
+input_player6_gun_offscreen_shot_axis = "nul"
+input_player6_gun_offscreen_shot_mbtn = "nul"
+input_player6_gun_aux_a = "nul"
+input_player6_gun_aux_a_btn = "nul"
+input_player6_gun_aux_a_axis = "nul"
+input_player6_gun_aux_a_mbtn = "nul"
+input_player6_gun_aux_b = "nul"
+input_player6_gun_aux_b_btn = "nul"
+input_player6_gun_aux_b_axis = "nul"
+input_player6_gun_aux_b_mbtn = "nul"
+input_player6_gun_aux_c = "nul"
+input_player6_gun_aux_c_btn = "nul"
+input_player6_gun_aux_c_axis = "nul"
+input_player6_gun_aux_c_mbtn = "nul"
+input_player6_gun_start = "nul"
+input_player6_gun_start_btn = "nul"
+input_player6_gun_start_axis = "nul"
+input_player6_gun_start_mbtn = "nul"
+input_player6_gun_select = "nul"
+input_player6_gun_select_btn = "nul"
+input_player6_gun_select_axis = "nul"
+input_player6_gun_select_mbtn = "nul"
+input_player6_gun_dpad_up = "nul"
+input_player6_gun_dpad_up_btn = "nul"
+input_player6_gun_dpad_up_axis = "nul"
+input_player6_gun_dpad_up_mbtn = "nul"
+input_player6_gun_dpad_down = "nul"
+input_player6_gun_dpad_down_btn = "nul"
+input_player6_gun_dpad_down_axis = "nul"
+input_player6_gun_dpad_down_mbtn = "nul"
+input_player6_gun_dpad_left = "nul"
+input_player6_gun_dpad_left_btn = "nul"
+input_player6_gun_dpad_left_axis = "nul"
+input_player6_gun_dpad_left_mbtn = "nul"
+input_player6_gun_dpad_right = "nul"
+input_player6_gun_dpad_right_btn = "nul"
+input_player6_gun_dpad_right_axis = "nul"
+input_player6_gun_dpad_right_mbtn = "nul"
+input_player6_turbo = "nul"
+input_player6_turbo_btn = "nul"
+input_player6_turbo_axis = "nul"
+input_player6_turbo_mbtn = "nul"
+input_player7_b = "nul"
+input_player7_b_btn = "nul"
+input_player7_b_axis = "nul"
+input_player7_b_mbtn = "nul"
+input_player7_y = "nul"
+input_player7_y_btn = "nul"
+input_player7_y_axis = "nul"
+input_player7_y_mbtn = "nul"
+input_player7_select = "nul"
+input_player7_select_btn = "nul"
+input_player7_select_axis = "nul"
+input_player7_select_mbtn = "nul"
+input_player7_start = "nul"
+input_player7_start_btn = "nul"
+input_player7_start_axis = "nul"
+input_player7_start_mbtn = "nul"
+input_player7_up = "nul"
+input_player7_up_btn = "nul"
+input_player7_up_axis = "nul"
+input_player7_up_mbtn = "nul"
+input_player7_down = "nul"
+input_player7_down_btn = "nul"
+input_player7_down_axis = "nul"
+input_player7_down_mbtn = "nul"
+input_player7_left = "nul"
+input_player7_left_btn = "nul"
+input_player7_left_axis = "nul"
+input_player7_left_mbtn = "nul"
+input_player7_right = "nul"
+input_player7_right_btn = "nul"
+input_player7_right_axis = "nul"
+input_player7_right_mbtn = "nul"
+input_player7_a = "nul"
+input_player7_a_btn = "nul"
+input_player7_a_axis = "nul"
+input_player7_a_mbtn = "nul"
+input_player7_x = "nul"
+input_player7_x_btn = "nul"
+input_player7_x_axis = "nul"
+input_player7_x_mbtn = "nul"
+input_player7_l = "nul"
+input_player7_l_btn = "nul"
+input_player7_l_axis = "nul"
+input_player7_l_mbtn = "nul"
+input_player7_r = "nul"
+input_player7_r_btn = "nul"
+input_player7_r_axis = "nul"
+input_player7_r_mbtn = "nul"
+input_player7_l2 = "nul"
+input_player7_l2_btn = "nul"
+input_player7_l2_axis = "nul"
+input_player7_l2_mbtn = "nul"
+input_player7_r2 = "nul"
+input_player7_r2_btn = "nul"
+input_player7_r2_axis = "nul"
+input_player7_r2_mbtn = "nul"
+input_player7_l3 = "nul"
+input_player7_l3_btn = "nul"
+input_player7_l3_axis = "nul"
+input_player7_l3_mbtn = "nul"
+input_player7_r3 = "nul"
+input_player7_r3_btn = "nul"
+input_player7_r3_axis = "nul"
+input_player7_r3_mbtn = "nul"
+input_player7_l_x_plus = "nul"
+input_player7_l_x_plus_btn = "nul"
+input_player7_l_x_plus_axis = "nul"
+input_player7_l_x_plus_mbtn = "nul"
+input_player7_l_x_minus = "nul"
+input_player7_l_x_minus_btn = "nul"
+input_player7_l_x_minus_axis = "nul"
+input_player7_l_x_minus_mbtn = "nul"
+input_player7_l_y_plus = "nul"
+input_player7_l_y_plus_btn = "nul"
+input_player7_l_y_plus_axis = "nul"
+input_player7_l_y_plus_mbtn = "nul"
+input_player7_l_y_minus = "nul"
+input_player7_l_y_minus_btn = "nul"
+input_player7_l_y_minus_axis = "nul"
+input_player7_l_y_minus_mbtn = "nul"
+input_player7_r_x_plus = "nul"
+input_player7_r_x_plus_btn = "nul"
+input_player7_r_x_plus_axis = "nul"
+input_player7_r_x_plus_mbtn = "nul"
+input_player7_r_x_minus = "nul"
+input_player7_r_x_minus_btn = "nul"
+input_player7_r_x_minus_axis = "nul"
+input_player7_r_x_minus_mbtn = "nul"
+input_player7_r_y_plus = "nul"
+input_player7_r_y_plus_btn = "nul"
+input_player7_r_y_plus_axis = "nul"
+input_player7_r_y_plus_mbtn = "nul"
+input_player7_r_y_minus = "nul"
+input_player7_r_y_minus_btn = "nul"
+input_player7_r_y_minus_axis = "nul"
+input_player7_r_y_minus_mbtn = "nul"
+input_player7_gun_trigger = "nul"
+input_player7_gun_trigger_btn = "nul"
+input_player7_gun_trigger_axis = "nul"
+input_player7_gun_trigger_mbtn = "nul"
+input_player7_gun_offscreen_shot = "nul"
+input_player7_gun_offscreen_shot_btn = "nul"
+input_player7_gun_offscreen_shot_axis = "nul"
+input_player7_gun_offscreen_shot_mbtn = "nul"
+input_player7_gun_aux_a = "nul"
+input_player7_gun_aux_a_btn = "nul"
+input_player7_gun_aux_a_axis = "nul"
+input_player7_gun_aux_a_mbtn = "nul"
+input_player7_gun_aux_b = "nul"
+input_player7_gun_aux_b_btn = "nul"
+input_player7_gun_aux_b_axis = "nul"
+input_player7_gun_aux_b_mbtn = "nul"
+input_player7_gun_aux_c = "nul"
+input_player7_gun_aux_c_btn = "nul"
+input_player7_gun_aux_c_axis = "nul"
+input_player7_gun_aux_c_mbtn = "nul"
+input_player7_gun_start = "nul"
+input_player7_gun_start_btn = "nul"
+input_player7_gun_start_axis = "nul"
+input_player7_gun_start_mbtn = "nul"
+input_player7_gun_select = "nul"
+input_player7_gun_select_btn = "nul"
+input_player7_gun_select_axis = "nul"
+input_player7_gun_select_mbtn = "nul"
+input_player7_gun_dpad_up = "nul"
+input_player7_gun_dpad_up_btn = "nul"
+input_player7_gun_dpad_up_axis = "nul"
+input_player7_gun_dpad_up_mbtn = "nul"
+input_player7_gun_dpad_down = "nul"
+input_player7_gun_dpad_down_btn = "nul"
+input_player7_gun_dpad_down_axis = "nul"
+input_player7_gun_dpad_down_mbtn = "nul"
+input_player7_gun_dpad_left = "nul"
+input_player7_gun_dpad_left_btn = "nul"
+input_player7_gun_dpad_left_axis = "nul"
+input_player7_gun_dpad_left_mbtn = "nul"
+input_player7_gun_dpad_right = "nul"
+input_player7_gun_dpad_right_btn = "nul"
+input_player7_gun_dpad_right_axis = "nul"
+input_player7_gun_dpad_right_mbtn = "nul"
+input_player7_turbo = "nul"
+input_player7_turbo_btn = "nul"
+input_player7_turbo_axis = "nul"
+input_player7_turbo_mbtn = "nul"
+input_player8_b = "nul"
+input_player8_b_btn = "nul"
+input_player8_b_axis = "nul"
+input_player8_b_mbtn = "nul"
+input_player8_y = "nul"
+input_player8_y_btn = "nul"
+input_player8_y_axis = "nul"
+input_player8_y_mbtn = "nul"
+input_player8_select = "nul"
+input_player8_select_btn = "nul"
+input_player8_select_axis = "nul"
+input_player8_select_mbtn = "nul"
+input_player8_start = "nul"
+input_player8_start_btn = "nul"
+input_player8_start_axis = "nul"
+input_player8_start_mbtn = "nul"
+input_player8_up = "nul"
+input_player8_up_btn = "nul"
+input_player8_up_axis = "nul"
+input_player8_up_mbtn = "nul"
+input_player8_down = "nul"
+input_player8_down_btn = "nul"
+input_player8_down_axis = "nul"
+input_player8_down_mbtn = "nul"
+input_player8_left = "nul"
+input_player8_left_btn = "nul"
+input_player8_left_axis = "nul"
+input_player8_left_mbtn = "nul"
+input_player8_right = "nul"
+input_player8_right_btn = "nul"
+input_player8_right_axis = "nul"
+input_player8_right_mbtn = "nul"
+input_player8_a = "nul"
+input_player8_a_btn = "nul"
+input_player8_a_axis = "nul"
+input_player8_a_mbtn = "nul"
+input_player8_x = "nul"
+input_player8_x_btn = "nul"
+input_player8_x_axis = "nul"
+input_player8_x_mbtn = "nul"
+input_player8_l = "nul"
+input_player8_l_btn = "nul"
+input_player8_l_axis = "nul"
+input_player8_l_mbtn = "nul"
+input_player8_r = "nul"
+input_player8_r_btn = "nul"
+input_player8_r_axis = "nul"
+input_player8_r_mbtn = "nul"
+input_player8_l2 = "nul"
+input_player8_l2_btn = "nul"
+input_player8_l2_axis = "nul"
+input_player8_l2_mbtn = "nul"
+input_player8_r2 = "nul"
+input_player8_r2_btn = "nul"
+input_player8_r2_axis = "nul"
+input_player8_r2_mbtn = "nul"
+input_player8_l3 = "nul"
+input_player8_l3_btn = "nul"
+input_player8_l3_axis = "nul"
+input_player8_l3_mbtn = "nul"
+input_player8_r3 = "nul"
+input_player8_r3_btn = "nul"
+input_player8_r3_axis = "nul"
+input_player8_r3_mbtn = "nul"
+input_player8_l_x_plus = "nul"
+input_player8_l_x_plus_btn = "nul"
+input_player8_l_x_plus_axis = "nul"
+input_player8_l_x_plus_mbtn = "nul"
+input_player8_l_x_minus = "nul"
+input_player8_l_x_minus_btn = "nul"
+input_player8_l_x_minus_axis = "nul"
+input_player8_l_x_minus_mbtn = "nul"
+input_player8_l_y_plus = "nul"
+input_player8_l_y_plus_btn = "nul"
+input_player8_l_y_plus_axis = "nul"
+input_player8_l_y_plus_mbtn = "nul"
+input_player8_l_y_minus = "nul"
+input_player8_l_y_minus_btn = "nul"
+input_player8_l_y_minus_axis = "nul"
+input_player8_l_y_minus_mbtn = "nul"
+input_player8_r_x_plus = "nul"
+input_player8_r_x_plus_btn = "nul"
+input_player8_r_x_plus_axis = "nul"
+input_player8_r_x_plus_mbtn = "nul"
+input_player8_r_x_minus = "nul"
+input_player8_r_x_minus_btn = "nul"
+input_player8_r_x_minus_axis = "nul"
+input_player8_r_x_minus_mbtn = "nul"
+input_player8_r_y_plus = "nul"
+input_player8_r_y_plus_btn = "nul"
+input_player8_r_y_plus_axis = "nul"
+input_player8_r_y_plus_mbtn = "nul"
+input_player8_r_y_minus = "nul"
+input_player8_r_y_minus_btn = "nul"
+input_player8_r_y_minus_axis = "nul"
+input_player8_r_y_minus_mbtn = "nul"
+input_player8_gun_trigger = "nul"
+input_player8_gun_trigger_btn = "nul"
+input_player8_gun_trigger_axis = "nul"
+input_player8_gun_trigger_mbtn = "nul"
+input_player8_gun_offscreen_shot = "nul"
+input_player8_gun_offscreen_shot_btn = "nul"
+input_player8_gun_offscreen_shot_axis = "nul"
+input_player8_gun_offscreen_shot_mbtn = "nul"
+input_player8_gun_aux_a = "nul"
+input_player8_gun_aux_a_btn = "nul"
+input_player8_gun_aux_a_axis = "nul"
+input_player8_gun_aux_a_mbtn = "nul"
+input_player8_gun_aux_b = "nul"
+input_player8_gun_aux_b_btn = "nul"
+input_player8_gun_aux_b_axis = "nul"
+input_player8_gun_aux_b_mbtn = "nul"
+input_player8_gun_aux_c = "nul"
+input_player8_gun_aux_c_btn = "nul"
+input_player8_gun_aux_c_axis = "nul"
+input_player8_gun_aux_c_mbtn = "nul"
+input_player8_gun_start = "nul"
+input_player8_gun_start_btn = "nul"
+input_player8_gun_start_axis = "nul"
+input_player8_gun_start_mbtn = "nul"
+input_player8_gun_select = "nul"
+input_player8_gun_select_btn = "nul"
+input_player8_gun_select_axis = "nul"
+input_player8_gun_select_mbtn = "nul"
+input_player8_gun_dpad_up = "nul"
+input_player8_gun_dpad_up_btn = "nul"
+input_player8_gun_dpad_up_axis = "nul"
+input_player8_gun_dpad_up_mbtn = "nul"
+input_player8_gun_dpad_down = "nul"
+input_player8_gun_dpad_down_btn = "nul"
+input_player8_gun_dpad_down_axis = "nul"
+input_player8_gun_dpad_down_mbtn = "nul"
+input_player8_gun_dpad_left = "nul"
+input_player8_gun_dpad_left_btn = "nul"
+input_player8_gun_dpad_left_axis = "nul"
+input_player8_gun_dpad_left_mbtn = "nul"
+input_player8_gun_dpad_right = "nul"
+input_player8_gun_dpad_right_btn = "nul"
+input_player8_gun_dpad_right_axis = "nul"
+input_player8_gun_dpad_right_mbtn = "nul"
+input_player8_turbo = "nul"
+input_player8_turbo_btn = "nul"
+input_player8_turbo_axis = "nul"
+input_player8_turbo_mbtn = "nul"
+input_player9_b = "nul"
+input_player9_b_btn = "nul"
+input_player9_b_axis = "nul"
+input_player9_b_mbtn = "nul"
+input_player9_y = "nul"
+input_player9_y_btn = "nul"
+input_player9_y_axis = "nul"
+input_player9_y_mbtn = "nul"
+input_player9_select = "nul"
+input_player9_select_btn = "nul"
+input_player9_select_axis = "nul"
+input_player9_select_mbtn = "nul"
+input_player9_start = "nul"
+input_player9_start_btn = "nul"
+input_player9_start_axis = "nul"
+input_player9_start_mbtn = "nul"
+input_player9_up = "nul"
+input_player9_up_btn = "nul"
+input_player9_up_axis = "nul"
+input_player9_up_mbtn = "nul"
+input_player9_down = "nul"
+input_player9_down_btn = "nul"
+input_player9_down_axis = "nul"
+input_player9_down_mbtn = "nul"
+input_player9_left = "nul"
+input_player9_left_btn = "nul"
+input_player9_left_axis = "nul"
+input_player9_left_mbtn = "nul"
+input_player9_right = "nul"
+input_player9_right_btn = "nul"
+input_player9_right_axis = "nul"
+input_player9_right_mbtn = "nul"
+input_player9_a = "nul"
+input_player9_a_btn = "nul"
+input_player9_a_axis = "nul"
+input_player9_a_mbtn = "nul"
+input_player9_x = "nul"
+input_player9_x_btn = "nul"
+input_player9_x_axis = "nul"
+input_player9_x_mbtn = "nul"
+input_player9_l = "nul"
+input_player9_l_btn = "nul"
+input_player9_l_axis = "nul"
+input_player9_l_mbtn = "nul"
+input_player9_r = "nul"
+input_player9_r_btn = "nul"
+input_player9_r_axis = "nul"
+input_player9_r_mbtn = "nul"
+input_player9_l2 = "nul"
+input_player9_l2_btn = "nul"
+input_player9_l2_axis = "nul"
+input_player9_l2_mbtn = "nul"
+input_player9_r2 = "nul"
+input_player9_r2_btn = "nul"
+input_player9_r2_axis = "nul"
+input_player9_r2_mbtn = "nul"
+input_player9_l3 = "nul"
+input_player9_l3_btn = "nul"
+input_player9_l3_axis = "nul"
+input_player9_l3_mbtn = "nul"
+input_player9_r3 = "nul"
+input_player9_r3_btn = "nul"
+input_player9_r3_axis = "nul"
+input_player9_r3_mbtn = "nul"
+input_player9_l_x_plus = "nul"
+input_player9_l_x_plus_btn = "nul"
+input_player9_l_x_plus_axis = "nul"
+input_player9_l_x_plus_mbtn = "nul"
+input_player9_l_x_minus = "nul"
+input_player9_l_x_minus_btn = "nul"
+input_player9_l_x_minus_axis = "nul"
+input_player9_l_x_minus_mbtn = "nul"
+input_player9_l_y_plus = "nul"
+input_player9_l_y_plus_btn = "nul"
+input_player9_l_y_plus_axis = "nul"
+input_player9_l_y_plus_mbtn = "nul"
+input_player9_l_y_minus = "nul"
+input_player9_l_y_minus_btn = "nul"
+input_player9_l_y_minus_axis = "nul"
+input_player9_l_y_minus_mbtn = "nul"
+input_player9_r_x_plus = "nul"
+input_player9_r_x_plus_btn = "nul"
+input_player9_r_x_plus_axis = "nul"
+input_player9_r_x_plus_mbtn = "nul"
+input_player9_r_x_minus = "nul"
+input_player9_r_x_minus_btn = "nul"
+input_player9_r_x_minus_axis = "nul"
+input_player9_r_x_minus_mbtn = "nul"
+input_player9_r_y_plus = "nul"
+input_player9_r_y_plus_btn = "nul"
+input_player9_r_y_plus_axis = "nul"
+input_player9_r_y_plus_mbtn = "nul"
+input_player9_r_y_minus = "nul"
+input_player9_r_y_minus_btn = "nul"
+input_player9_r_y_minus_axis = "nul"
+input_player9_r_y_minus_mbtn = "nul"
+input_player9_gun_trigger = "nul"
+input_player9_gun_trigger_btn = "nul"
+input_player9_gun_trigger_axis = "nul"
+input_player9_gun_trigger_mbtn = "nul"
+input_player9_gun_offscreen_shot = "nul"
+input_player9_gun_offscreen_shot_btn = "nul"
+input_player9_gun_offscreen_shot_axis = "nul"
+input_player9_gun_offscreen_shot_mbtn = "nul"
+input_player9_gun_aux_a = "nul"
+input_player9_gun_aux_a_btn = "nul"
+input_player9_gun_aux_a_axis = "nul"
+input_player9_gun_aux_a_mbtn = "nul"
+input_player9_gun_aux_b = "nul"
+input_player9_gun_aux_b_btn = "nul"
+input_player9_gun_aux_b_axis = "nul"
+input_player9_gun_aux_b_mbtn = "nul"
+input_player9_gun_aux_c = "nul"
+input_player9_gun_aux_c_btn = "nul"
+input_player9_gun_aux_c_axis = "nul"
+input_player9_gun_aux_c_mbtn = "nul"
+input_player9_gun_start = "nul"
+input_player9_gun_start_btn = "nul"
+input_player9_gun_start_axis = "nul"
+input_player9_gun_start_mbtn = "nul"
+input_player9_gun_select = "nul"
+input_player9_gun_select_btn = "nul"
+input_player9_gun_select_axis = "nul"
+input_player9_gun_select_mbtn = "nul"
+input_player9_gun_dpad_up = "nul"
+input_player9_gun_dpad_up_btn = "nul"
+input_player9_gun_dpad_up_axis = "nul"
+input_player9_gun_dpad_up_mbtn = "nul"
+input_player9_gun_dpad_down = "nul"
+input_player9_gun_dpad_down_btn = "nul"
+input_player9_gun_dpad_down_axis = "nul"
+input_player9_gun_dpad_down_mbtn = "nul"
+input_player9_gun_dpad_left = "nul"
+input_player9_gun_dpad_left_btn = "nul"
+input_player9_gun_dpad_left_axis = "nul"
+input_player9_gun_dpad_left_mbtn = "nul"
+input_player9_gun_dpad_right = "nul"
+input_player9_gun_dpad_right_btn = "nul"
+input_player9_gun_dpad_right_axis = "nul"
+input_player9_gun_dpad_right_mbtn = "nul"
+input_player9_turbo = "nul"
+input_player9_turbo_btn = "nul"
+input_player9_turbo_axis = "nul"
+input_player9_turbo_mbtn = "nul"
+input_player10_b = "nul"
+input_player10_b_btn = "nul"
+input_player10_b_axis = "nul"
+input_player10_b_mbtn = "nul"
+input_player10_y = "nul"
+input_player10_y_btn = "nul"
+input_player10_y_axis = "nul"
+input_player10_y_mbtn = "nul"
+input_player10_select = "nul"
+input_player10_select_btn = "nul"
+input_player10_select_axis = "nul"
+input_player10_select_mbtn = "nul"
+input_player10_start = "nul"
+input_player10_start_btn = "nul"
+input_player10_start_axis = "nul"
+input_player10_start_mbtn = "nul"
+input_player10_up = "nul"
+input_player10_up_btn = "nul"
+input_player10_up_axis = "nul"
+input_player10_up_mbtn = "nul"
+input_player10_down = "nul"
+input_player10_down_btn = "nul"
+input_player10_down_axis = "nul"
+input_player10_down_mbtn = "nul"
+input_player10_left = "nul"
+input_player10_left_btn = "nul"
+input_player10_left_axis = "nul"
+input_player10_left_mbtn = "nul"
+input_player10_right = "nul"
+input_player10_right_btn = "nul"
+input_player10_right_axis = "nul"
+input_player10_right_mbtn = "nul"
+input_player10_a = "nul"
+input_player10_a_btn = "nul"
+input_player10_a_axis = "nul"
+input_player10_a_mbtn = "nul"
+input_player10_x = "nul"
+input_player10_x_btn = "nul"
+input_player10_x_axis = "nul"
+input_player10_x_mbtn = "nul"
+input_player10_l = "nul"
+input_player10_l_btn = "nul"
+input_player10_l_axis = "nul"
+input_player10_l_mbtn = "nul"
+input_player10_r = "nul"
+input_player10_r_btn = "nul"
+input_player10_r_axis = "nul"
+input_player10_r_mbtn = "nul"
+input_player10_l2 = "nul"
+input_player10_l2_btn = "nul"
+input_player10_l2_axis = "nul"
+input_player10_l2_mbtn = "nul"
+input_player10_r2 = "nul"
+input_player10_r2_btn = "nul"
+input_player10_r2_axis = "nul"
+input_player10_r2_mbtn = "nul"
+input_player10_l3 = "nul"
+input_player10_l3_btn = "nul"
+input_player10_l3_axis = "nul"
+input_player10_l3_mbtn = "nul"
+input_player10_r3 = "nul"
+input_player10_r3_btn = "nul"
+input_player10_r3_axis = "nul"
+input_player10_r3_mbtn = "nul"
+input_player10_l_x_plus = "nul"
+input_player10_l_x_plus_btn = "nul"
+input_player10_l_x_plus_axis = "nul"
+input_player10_l_x_plus_mbtn = "nul"
+input_player10_l_x_minus = "nul"
+input_player10_l_x_minus_btn = "nul"
+input_player10_l_x_minus_axis = "nul"
+input_player10_l_x_minus_mbtn = "nul"
+input_player10_l_y_plus = "nul"
+input_player10_l_y_plus_btn = "nul"
+input_player10_l_y_plus_axis = "nul"
+input_player10_l_y_plus_mbtn = "nul"
+input_player10_l_y_minus = "nul"
+input_player10_l_y_minus_btn = "nul"
+input_player10_l_y_minus_axis = "nul"
+input_player10_l_y_minus_mbtn = "nul"
+input_player10_r_x_plus = "nul"
+input_player10_r_x_plus_btn = "nul"
+input_player10_r_x_plus_axis = "nul"
+input_player10_r_x_plus_mbtn = "nul"
+input_player10_r_x_minus = "nul"
+input_player10_r_x_minus_btn = "nul"
+input_player10_r_x_minus_axis = "nul"
+input_player10_r_x_minus_mbtn = "nul"
+input_player10_r_y_plus = "nul"
+input_player10_r_y_plus_btn = "nul"
+input_player10_r_y_plus_axis = "nul"
+input_player10_r_y_plus_mbtn = "nul"
+input_player10_r_y_minus = "nul"
+input_player10_r_y_minus_btn = "nul"
+input_player10_r_y_minus_axis = "nul"
+input_player10_r_y_minus_mbtn = "nul"
+input_player10_gun_trigger = "nul"
+input_player10_gun_trigger_btn = "nul"
+input_player10_gun_trigger_axis = "nul"
+input_player10_gun_trigger_mbtn = "nul"
+input_player10_gun_offscreen_shot = "nul"
+input_player10_gun_offscreen_shot_btn = "nul"
+input_player10_gun_offscreen_shot_axis = "nul"
+input_player10_gun_offscreen_shot_mbtn = "nul"
+input_player10_gun_aux_a = "nul"
+input_player10_gun_aux_a_btn = "nul"
+input_player10_gun_aux_a_axis = "nul"
+input_player10_gun_aux_a_mbtn = "nul"
+input_player10_gun_aux_b = "nul"
+input_player10_gun_aux_b_btn = "nul"
+input_player10_gun_aux_b_axis = "nul"
+input_player10_gun_aux_b_mbtn = "nul"
+input_player10_gun_aux_c = "nul"
+input_player10_gun_aux_c_btn = "nul"
+input_player10_gun_aux_c_axis = "nul"
+input_player10_gun_aux_c_mbtn = "nul"
+input_player10_gun_start = "nul"
+input_player10_gun_start_btn = "nul"
+input_player10_gun_start_axis = "nul"
+input_player10_gun_start_mbtn = "nul"
+input_player10_gun_select = "nul"
+input_player10_gun_select_btn = "nul"
+input_player10_gun_select_axis = "nul"
+input_player10_gun_select_mbtn = "nul"
+input_player10_gun_dpad_up = "nul"
+input_player10_gun_dpad_up_btn = "nul"
+input_player10_gun_dpad_up_axis = "nul"
+input_player10_gun_dpad_up_mbtn = "nul"
+input_player10_gun_dpad_down = "nul"
+input_player10_gun_dpad_down_btn = "nul"
+input_player10_gun_dpad_down_axis = "nul"
+input_player10_gun_dpad_down_mbtn = "nul"
+input_player10_gun_dpad_left = "nul"
+input_player10_gun_dpad_left_btn = "nul"
+input_player10_gun_dpad_left_axis = "nul"
+input_player10_gun_dpad_left_mbtn = "nul"
+input_player10_gun_dpad_right = "nul"
+input_player10_gun_dpad_right_btn = "nul"
+input_player10_gun_dpad_right_axis = "nul"
+input_player10_gun_dpad_right_mbtn = "nul"
+input_player10_turbo = "nul"
+input_player10_turbo_btn = "nul"
+input_player10_turbo_axis = "nul"
+input_player10_turbo_mbtn = "nul"
+input_player11_b = "nul"
+input_player11_b_btn = "nul"
+input_player11_b_axis = "nul"
+input_player11_b_mbtn = "nul"
+input_player11_y = "nul"
+input_player11_y_btn = "nul"
+input_player11_y_axis = "nul"
+input_player11_y_mbtn = "nul"
+input_player11_select = "nul"
+input_player11_select_btn = "nul"
+input_player11_select_axis = "nul"
+input_player11_select_mbtn = "nul"
+input_player11_start = "nul"
+input_player11_start_btn = "nul"
+input_player11_start_axis = "nul"
+input_player11_start_mbtn = "nul"
+input_player11_up = "nul"
+input_player11_up_btn = "nul"
+input_player11_up_axis = "nul"
+input_player11_up_mbtn = "nul"
+input_player11_down = "nul"
+input_player11_down_btn = "nul"
+input_player11_down_axis = "nul"
+input_player11_down_mbtn = "nul"
+input_player11_left = "nul"
+input_player11_left_btn = "nul"
+input_player11_left_axis = "nul"
+input_player11_left_mbtn = "nul"
+input_player11_right = "nul"
+input_player11_right_btn = "nul"
+input_player11_right_axis = "nul"
+input_player11_right_mbtn = "nul"
+input_player11_a = "nul"
+input_player11_a_btn = "nul"
+input_player11_a_axis = "nul"
+input_player11_a_mbtn = "nul"
+input_player11_x = "nul"
+input_player11_x_btn = "nul"
+input_player11_x_axis = "nul"
+input_player11_x_mbtn = "nul"
+input_player11_l = "nul"
+input_player11_l_btn = "nul"
+input_player11_l_axis = "nul"
+input_player11_l_mbtn = "nul"
+input_player11_r = "nul"
+input_player11_r_btn = "nul"
+input_player11_r_axis = "nul"
+input_player11_r_mbtn = "nul"
+input_player11_l2 = "nul"
+input_player11_l2_btn = "nul"
+input_player11_l2_axis = "nul"
+input_player11_l2_mbtn = "nul"
+input_player11_r2 = "nul"
+input_player11_r2_btn = "nul"
+input_player11_r2_axis = "nul"
+input_player11_r2_mbtn = "nul"
+input_player11_l3 = "nul"
+input_player11_l3_btn = "nul"
+input_player11_l3_axis = "nul"
+input_player11_l3_mbtn = "nul"
+input_player11_r3 = "nul"
+input_player11_r3_btn = "nul"
+input_player11_r3_axis = "nul"
+input_player11_r3_mbtn = "nul"
+input_player11_l_x_plus = "nul"
+input_player11_l_x_plus_btn = "nul"
+input_player11_l_x_plus_axis = "nul"
+input_player11_l_x_plus_mbtn = "nul"
+input_player11_l_x_minus = "nul"
+input_player11_l_x_minus_btn = "nul"
+input_player11_l_x_minus_axis = "nul"
+input_player11_l_x_minus_mbtn = "nul"
+input_player11_l_y_plus = "nul"
+input_player11_l_y_plus_btn = "nul"
+input_player11_l_y_plus_axis = "nul"
+input_player11_l_y_plus_mbtn = "nul"
+input_player11_l_y_minus = "nul"
+input_player11_l_y_minus_btn = "nul"
+input_player11_l_y_minus_axis = "nul"
+input_player11_l_y_minus_mbtn = "nul"
+input_player11_r_x_plus = "nul"
+input_player11_r_x_plus_btn = "nul"
+input_player11_r_x_plus_axis = "nul"
+input_player11_r_x_plus_mbtn = "nul"
+input_player11_r_x_minus = "nul"
+input_player11_r_x_minus_btn = "nul"
+input_player11_r_x_minus_axis = "nul"
+input_player11_r_x_minus_mbtn = "nul"
+input_player11_r_y_plus = "nul"
+input_player11_r_y_plus_btn = "nul"
+input_player11_r_y_plus_axis = "nul"
+input_player11_r_y_plus_mbtn = "nul"
+input_player11_r_y_minus = "nul"
+input_player11_r_y_minus_btn = "nul"
+input_player11_r_y_minus_axis = "nul"
+input_player11_r_y_minus_mbtn = "nul"
+input_player11_gun_trigger = "nul"
+input_player11_gun_trigger_btn = "nul"
+input_player11_gun_trigger_axis = "nul"
+input_player11_gun_trigger_mbtn = "nul"
+input_player11_gun_offscreen_shot = "nul"
+input_player11_gun_offscreen_shot_btn = "nul"
+input_player11_gun_offscreen_shot_axis = "nul"
+input_player11_gun_offscreen_shot_mbtn = "nul"
+input_player11_gun_aux_a = "nul"
+input_player11_gun_aux_a_btn = "nul"
+input_player11_gun_aux_a_axis = "nul"
+input_player11_gun_aux_a_mbtn = "nul"
+input_player11_gun_aux_b = "nul"
+input_player11_gun_aux_b_btn = "nul"
+input_player11_gun_aux_b_axis = "nul"
+input_player11_gun_aux_b_mbtn = "nul"
+input_player11_gun_aux_c = "nul"
+input_player11_gun_aux_c_btn = "nul"
+input_player11_gun_aux_c_axis = "nul"
+input_player11_gun_aux_c_mbtn = "nul"
+input_player11_gun_start = "nul"
+input_player11_gun_start_btn = "nul"
+input_player11_gun_start_axis = "nul"
+input_player11_gun_start_mbtn = "nul"
+input_player11_gun_select = "nul"
+input_player11_gun_select_btn = "nul"
+input_player11_gun_select_axis = "nul"
+input_player11_gun_select_mbtn = "nul"
+input_player11_gun_dpad_up = "nul"
+input_player11_gun_dpad_up_btn = "nul"
+input_player11_gun_dpad_up_axis = "nul"
+input_player11_gun_dpad_up_mbtn = "nul"
+input_player11_gun_dpad_down = "nul"
+input_player11_gun_dpad_down_btn = "nul"
+input_player11_gun_dpad_down_axis = "nul"
+input_player11_gun_dpad_down_mbtn = "nul"
+input_player11_gun_dpad_left = "nul"
+input_player11_gun_dpad_left_btn = "nul"
+input_player11_gun_dpad_left_axis = "nul"
+input_player11_gun_dpad_left_mbtn = "nul"
+input_player11_gun_dpad_right = "nul"
+input_player11_gun_dpad_right_btn = "nul"
+input_player11_gun_dpad_right_axis = "nul"
+input_player11_gun_dpad_right_mbtn = "nul"
+input_player11_turbo = "nul"
+input_player11_turbo_btn = "nul"
+input_player11_turbo_axis = "nul"
+input_player11_turbo_mbtn = "nul"
+input_player12_b = "nul"
+input_player12_b_btn = "nul"
+input_player12_b_axis = "nul"
+input_player12_b_mbtn = "nul"
+input_player12_y = "nul"
+input_player12_y_btn = "nul"
+input_player12_y_axis = "nul"
+input_player12_y_mbtn = "nul"
+input_player12_select = "nul"
+input_player12_select_btn = "nul"
+input_player12_select_axis = "nul"
+input_player12_select_mbtn = "nul"
+input_player12_start = "nul"
+input_player12_start_btn = "nul"
+input_player12_start_axis = "nul"
+input_player12_start_mbtn = "nul"
+input_player12_up = "nul"
+input_player12_up_btn = "nul"
+input_player12_up_axis = "nul"
+input_player12_up_mbtn = "nul"
+input_player12_down = "nul"
+input_player12_down_btn = "nul"
+input_player12_down_axis = "nul"
+input_player12_down_mbtn = "nul"
+input_player12_left = "nul"
+input_player12_left_btn = "nul"
+input_player12_left_axis = "nul"
+input_player12_left_mbtn = "nul"
+input_player12_right = "nul"
+input_player12_right_btn = "nul"
+input_player12_right_axis = "nul"
+input_player12_right_mbtn = "nul"
+input_player12_a = "nul"
+input_player12_a_btn = "nul"
+input_player12_a_axis = "nul"
+input_player12_a_mbtn = "nul"
+input_player12_x = "nul"
+input_player12_x_btn = "nul"
+input_player12_x_axis = "nul"
+input_player12_x_mbtn = "nul"
+input_player12_l = "nul"
+input_player12_l_btn = "nul"
+input_player12_l_axis = "nul"
+input_player12_l_mbtn = "nul"
+input_player12_r = "nul"
+input_player12_r_btn = "nul"
+input_player12_r_axis = "nul"
+input_player12_r_mbtn = "nul"
+input_player12_l2 = "nul"
+input_player12_l2_btn = "nul"
+input_player12_l2_axis = "nul"
+input_player12_l2_mbtn = "nul"
+input_player12_r2 = "nul"
+input_player12_r2_btn = "nul"
+input_player12_r2_axis = "nul"
+input_player12_r2_mbtn = "nul"
+input_player12_l3 = "nul"
+input_player12_l3_btn = "nul"
+input_player12_l3_axis = "nul"
+input_player12_l3_mbtn = "nul"
+input_player12_r3 = "nul"
+input_player12_r3_btn = "nul"
+input_player12_r3_axis = "nul"
+input_player12_r3_mbtn = "nul"
+input_player12_l_x_plus = "nul"
+input_player12_l_x_plus_btn = "nul"
+input_player12_l_x_plus_axis = "nul"
+input_player12_l_x_plus_mbtn = "nul"
+input_player12_l_x_minus = "nul"
+input_player12_l_x_minus_btn = "nul"
+input_player12_l_x_minus_axis = "nul"
+input_player12_l_x_minus_mbtn = "nul"
+input_player12_l_y_plus = "nul"
+input_player12_l_y_plus_btn = "nul"
+input_player12_l_y_plus_axis = "nul"
+input_player12_l_y_plus_mbtn = "nul"
+input_player12_l_y_minus = "nul"
+input_player12_l_y_minus_btn = "nul"
+input_player12_l_y_minus_axis = "nul"
+input_player12_l_y_minus_mbtn = "nul"
+input_player12_r_x_plus = "nul"
+input_player12_r_x_plus_btn = "nul"
+input_player12_r_x_plus_axis = "nul"
+input_player12_r_x_plus_mbtn = "nul"
+input_player12_r_x_minus = "nul"
+input_player12_r_x_minus_btn = "nul"
+input_player12_r_x_minus_axis = "nul"
+input_player12_r_x_minus_mbtn = "nul"
+input_player12_r_y_plus = "nul"
+input_player12_r_y_plus_btn = "nul"
+input_player12_r_y_plus_axis = "nul"
+input_player12_r_y_plus_mbtn = "nul"
+input_player12_r_y_minus = "nul"
+input_player12_r_y_minus_btn = "nul"
+input_player12_r_y_minus_axis = "nul"
+input_player12_r_y_minus_mbtn = "nul"
+input_player12_gun_trigger = "nul"
+input_player12_gun_trigger_btn = "nul"
+input_player12_gun_trigger_axis = "nul"
+input_player12_gun_trigger_mbtn = "nul"
+input_player12_gun_offscreen_shot = "nul"
+input_player12_gun_offscreen_shot_btn = "nul"
+input_player12_gun_offscreen_shot_axis = "nul"
+input_player12_gun_offscreen_shot_mbtn = "nul"
+input_player12_gun_aux_a = "nul"
+input_player12_gun_aux_a_btn = "nul"
+input_player12_gun_aux_a_axis = "nul"
+input_player12_gun_aux_a_mbtn = "nul"
+input_player12_gun_aux_b = "nul"
+input_player12_gun_aux_b_btn = "nul"
+input_player12_gun_aux_b_axis = "nul"
+input_player12_gun_aux_b_mbtn = "nul"
+input_player12_gun_aux_c = "nul"
+input_player12_gun_aux_c_btn = "nul"
+input_player12_gun_aux_c_axis = "nul"
+input_player12_gun_aux_c_mbtn = "nul"
+input_player12_gun_start = "nul"
+input_player12_gun_start_btn = "nul"
+input_player12_gun_start_axis = "nul"
+input_player12_gun_start_mbtn = "nul"
+input_player12_gun_select = "nul"
+input_player12_gun_select_btn = "nul"
+input_player12_gun_select_axis = "nul"
+input_player12_gun_select_mbtn = "nul"
+input_player12_gun_dpad_up = "nul"
+input_player12_gun_dpad_up_btn = "nul"
+input_player12_gun_dpad_up_axis = "nul"
+input_player12_gun_dpad_up_mbtn = "nul"
+input_player12_gun_dpad_down = "nul"
+input_player12_gun_dpad_down_btn = "nul"
+input_player12_gun_dpad_down_axis = "nul"
+input_player12_gun_dpad_down_mbtn = "nul"
+input_player12_gun_dpad_left = "nul"
+input_player12_gun_dpad_left_btn = "nul"
+input_player12_gun_dpad_left_axis = "nul"
+input_player12_gun_dpad_left_mbtn = "nul"
+input_player12_gun_dpad_right = "nul"
+input_player12_gun_dpad_right_btn = "nul"
+input_player12_gun_dpad_right_axis = "nul"
+input_player12_gun_dpad_right_mbtn = "nul"
+input_player12_turbo = "nul"
+input_player12_turbo_btn = "nul"
+input_player12_turbo_axis = "nul"
+input_player12_turbo_mbtn = "nul"
+input_player13_b = "nul"
+input_player13_b_btn = "nul"
+input_player13_b_axis = "nul"
+input_player13_b_mbtn = "nul"
+input_player13_y = "nul"
+input_player13_y_btn = "nul"
+input_player13_y_axis = "nul"
+input_player13_y_mbtn = "nul"
+input_player13_select = "nul"
+input_player13_select_btn = "nul"
+input_player13_select_axis = "nul"
+input_player13_select_mbtn = "nul"
+input_player13_start = "nul"
+input_player13_start_btn = "nul"
+input_player13_start_axis = "nul"
+input_player13_start_mbtn = "nul"
+input_player13_up = "nul"
+input_player13_up_btn = "nul"
+input_player13_up_axis = "nul"
+input_player13_up_mbtn = "nul"
+input_player13_down = "nul"
+input_player13_down_btn = "nul"
+input_player13_down_axis = "nul"
+input_player13_down_mbtn = "nul"
+input_player13_left = "nul"
+input_player13_left_btn = "nul"
+input_player13_left_axis = "nul"
+input_player13_left_mbtn = "nul"
+input_player13_right = "nul"
+input_player13_right_btn = "nul"
+input_player13_right_axis = "nul"
+input_player13_right_mbtn = "nul"
+input_player13_a = "nul"
+input_player13_a_btn = "nul"
+input_player13_a_axis = "nul"
+input_player13_a_mbtn = "nul"
+input_player13_x = "nul"
+input_player13_x_btn = "nul"
+input_player13_x_axis = "nul"
+input_player13_x_mbtn = "nul"
+input_player13_l = "nul"
+input_player13_l_btn = "nul"
+input_player13_l_axis = "nul"
+input_player13_l_mbtn = "nul"
+input_player13_r = "nul"
+input_player13_r_btn = "nul"
+input_player13_r_axis = "nul"
+input_player13_r_mbtn = "nul"
+input_player13_l2 = "nul"
+input_player13_l2_btn = "nul"
+input_player13_l2_axis = "nul"
+input_player13_l2_mbtn = "nul"
+input_player13_r2 = "nul"
+input_player13_r2_btn = "nul"
+input_player13_r2_axis = "nul"
+input_player13_r2_mbtn = "nul"
+input_player13_l3 = "nul"
+input_player13_l3_btn = "nul"
+input_player13_l3_axis = "nul"
+input_player13_l3_mbtn = "nul"
+input_player13_r3 = "nul"
+input_player13_r3_btn = "nul"
+input_player13_r3_axis = "nul"
+input_player13_r3_mbtn = "nul"
+input_player13_l_x_plus = "nul"
+input_player13_l_x_plus_btn = "nul"
+input_player13_l_x_plus_axis = "nul"
+input_player13_l_x_plus_mbtn = "nul"
+input_player13_l_x_minus = "nul"
+input_player13_l_x_minus_btn = "nul"
+input_player13_l_x_minus_axis = "nul"
+input_player13_l_x_minus_mbtn = "nul"
+input_player13_l_y_plus = "nul"
+input_player13_l_y_plus_btn = "nul"
+input_player13_l_y_plus_axis = "nul"
+input_player13_l_y_plus_mbtn = "nul"
+input_player13_l_y_minus = "nul"
+input_player13_l_y_minus_btn = "nul"
+input_player13_l_y_minus_axis = "nul"
+input_player13_l_y_minus_mbtn = "nul"
+input_player13_r_x_plus = "nul"
+input_player13_r_x_plus_btn = "nul"
+input_player13_r_x_plus_axis = "nul"
+input_player13_r_x_plus_mbtn = "nul"
+input_player13_r_x_minus = "nul"
+input_player13_r_x_minus_btn = "nul"
+input_player13_r_x_minus_axis = "nul"
+input_player13_r_x_minus_mbtn = "nul"
+input_player13_r_y_plus = "nul"
+input_player13_r_y_plus_btn = "nul"
+input_player13_r_y_plus_axis = "nul"
+input_player13_r_y_plus_mbtn = "nul"
+input_player13_r_y_minus = "nul"
+input_player13_r_y_minus_btn = "nul"
+input_player13_r_y_minus_axis = "nul"
+input_player13_r_y_minus_mbtn = "nul"
+input_player13_gun_trigger = "nul"
+input_player13_gun_trigger_btn = "nul"
+input_player13_gun_trigger_axis = "nul"
+input_player13_gun_trigger_mbtn = "nul"
+input_player13_gun_offscreen_shot = "nul"
+input_player13_gun_offscreen_shot_btn = "nul"
+input_player13_gun_offscreen_shot_axis = "nul"
+input_player13_gun_offscreen_shot_mbtn = "nul"
+input_player13_gun_aux_a = "nul"
+input_player13_gun_aux_a_btn = "nul"
+input_player13_gun_aux_a_axis = "nul"
+input_player13_gun_aux_a_mbtn = "nul"
+input_player13_gun_aux_b = "nul"
+input_player13_gun_aux_b_btn = "nul"
+input_player13_gun_aux_b_axis = "nul"
+input_player13_gun_aux_b_mbtn = "nul"
+input_player13_gun_aux_c = "nul"
+input_player13_gun_aux_c_btn = "nul"
+input_player13_gun_aux_c_axis = "nul"
+input_player13_gun_aux_c_mbtn = "nul"
+input_player13_gun_start = "nul"
+input_player13_gun_start_btn = "nul"
+input_player13_gun_start_axis = "nul"
+input_player13_gun_start_mbtn = "nul"
+input_player13_gun_select = "nul"
+input_player13_gun_select_btn = "nul"
+input_player13_gun_select_axis = "nul"
+input_player13_gun_select_mbtn = "nul"
+input_player13_gun_dpad_up = "nul"
+input_player13_gun_dpad_up_btn = "nul"
+input_player13_gun_dpad_up_axis = "nul"
+input_player13_gun_dpad_up_mbtn = "nul"
+input_player13_gun_dpad_down = "nul"
+input_player13_gun_dpad_down_btn = "nul"
+input_player13_gun_dpad_down_axis = "nul"
+input_player13_gun_dpad_down_mbtn = "nul"
+input_player13_gun_dpad_left = "nul"
+input_player13_gun_dpad_left_btn = "nul"
+input_player13_gun_dpad_left_axis = "nul"
+input_player13_gun_dpad_left_mbtn = "nul"
+input_player13_gun_dpad_right = "nul"
+input_player13_gun_dpad_right_btn = "nul"
+input_player13_gun_dpad_right_axis = "nul"
+input_player13_gun_dpad_right_mbtn = "nul"
+input_player13_turbo = "nul"
+input_player13_turbo_btn = "nul"
+input_player13_turbo_axis = "nul"
+input_player13_turbo_mbtn = "nul"
+input_player14_b = "nul"
+input_player14_b_btn = "nul"
+input_player14_b_axis = "nul"
+input_player14_b_mbtn = "nul"
+input_player14_y = "nul"
+input_player14_y_btn = "nul"
+input_player14_y_axis = "nul"
+input_player14_y_mbtn = "nul"
+input_player14_select = "nul"
+input_player14_select_btn = "nul"
+input_player14_select_axis = "nul"
+input_player14_select_mbtn = "nul"
+input_player14_start = "nul"
+input_player14_start_btn = "nul"
+input_player14_start_axis = "nul"
+input_player14_start_mbtn = "nul"
+input_player14_up = "nul"
+input_player14_up_btn = "nul"
+input_player14_up_axis = "nul"
+input_player14_up_mbtn = "nul"
+input_player14_down = "nul"
+input_player14_down_btn = "nul"
+input_player14_down_axis = "nul"
+input_player14_down_mbtn = "nul"
+input_player14_left = "nul"
+input_player14_left_btn = "nul"
+input_player14_left_axis = "nul"
+input_player14_left_mbtn = "nul"
+input_player14_right = "nul"
+input_player14_right_btn = "nul"
+input_player14_right_axis = "nul"
+input_player14_right_mbtn = "nul"
+input_player14_a = "nul"
+input_player14_a_btn = "nul"
+input_player14_a_axis = "nul"
+input_player14_a_mbtn = "nul"
+input_player14_x = "nul"
+input_player14_x_btn = "nul"
+input_player14_x_axis = "nul"
+input_player14_x_mbtn = "nul"
+input_player14_l = "nul"
+input_player14_l_btn = "nul"
+input_player14_l_axis = "nul"
+input_player14_l_mbtn = "nul"
+input_player14_r = "nul"
+input_player14_r_btn = "nul"
+input_player14_r_axis = "nul"
+input_player14_r_mbtn = "nul"
+input_player14_l2 = "nul"
+input_player14_l2_btn = "nul"
+input_player14_l2_axis = "nul"
+input_player14_l2_mbtn = "nul"
+input_player14_r2 = "nul"
+input_player14_r2_btn = "nul"
+input_player14_r2_axis = "nul"
+input_player14_r2_mbtn = "nul"
+input_player14_l3 = "nul"
+input_player14_l3_btn = "nul"
+input_player14_l3_axis = "nul"
+input_player14_l3_mbtn = "nul"
+input_player14_r3 = "nul"
+input_player14_r3_btn = "nul"
+input_player14_r3_axis = "nul"
+input_player14_r3_mbtn = "nul"
+input_player14_l_x_plus = "nul"
+input_player14_l_x_plus_btn = "nul"
+input_player14_l_x_plus_axis = "nul"
+input_player14_l_x_plus_mbtn = "nul"
+input_player14_l_x_minus = "nul"
+input_player14_l_x_minus_btn = "nul"
+input_player14_l_x_minus_axis = "nul"
+input_player14_l_x_minus_mbtn = "nul"
+input_player14_l_y_plus = "nul"
+input_player14_l_y_plus_btn = "nul"
+input_player14_l_y_plus_axis = "nul"
+input_player14_l_y_plus_mbtn = "nul"
+input_player14_l_y_minus = "nul"
+input_player14_l_y_minus_btn = "nul"
+input_player14_l_y_minus_axis = "nul"
+input_player14_l_y_minus_mbtn = "nul"
+input_player14_r_x_plus = "nul"
+input_player14_r_x_plus_btn = "nul"
+input_player14_r_x_plus_axis = "nul"
+input_player14_r_x_plus_mbtn = "nul"
+input_player14_r_x_minus = "nul"
+input_player14_r_x_minus_btn = "nul"
+input_player14_r_x_minus_axis = "nul"
+input_player14_r_x_minus_mbtn = "nul"
+input_player14_r_y_plus = "nul"
+input_player14_r_y_plus_btn = "nul"
+input_player14_r_y_plus_axis = "nul"
+input_player14_r_y_plus_mbtn = "nul"
+input_player14_r_y_minus = "nul"
+input_player14_r_y_minus_btn = "nul"
+input_player14_r_y_minus_axis = "nul"
+input_player14_r_y_minus_mbtn = "nul"
+input_player14_gun_trigger = "nul"
+input_player14_gun_trigger_btn = "nul"
+input_player14_gun_trigger_axis = "nul"
+input_player14_gun_trigger_mbtn = "nul"
+input_player14_gun_offscreen_shot = "nul"
+input_player14_gun_offscreen_shot_btn = "nul"
+input_player14_gun_offscreen_shot_axis = "nul"
+input_player14_gun_offscreen_shot_mbtn = "nul"
+input_player14_gun_aux_a = "nul"
+input_player14_gun_aux_a_btn = "nul"
+input_player14_gun_aux_a_axis = "nul"
+input_player14_gun_aux_a_mbtn = "nul"
+input_player14_gun_aux_b = "nul"
+input_player14_gun_aux_b_btn = "nul"
+input_player14_gun_aux_b_axis = "nul"
+input_player14_gun_aux_b_mbtn = "nul"
+input_player14_gun_aux_c = "nul"
+input_player14_gun_aux_c_btn = "nul"
+input_player14_gun_aux_c_axis = "nul"
+input_player14_gun_aux_c_mbtn = "nul"
+input_player14_gun_start = "nul"
+input_player14_gun_start_btn = "nul"
+input_player14_gun_start_axis = "nul"
+input_player14_gun_start_mbtn = "nul"
+input_player14_gun_select = "nul"
+input_player14_gun_select_btn = "nul"
+input_player14_gun_select_axis = "nul"
+input_player14_gun_select_mbtn = "nul"
+input_player14_gun_dpad_up = "nul"
+input_player14_gun_dpad_up_btn = "nul"
+input_player14_gun_dpad_up_axis = "nul"
+input_player14_gun_dpad_up_mbtn = "nul"
+input_player14_gun_dpad_down = "nul"
+input_player14_gun_dpad_down_btn = "nul"
+input_player14_gun_dpad_down_axis = "nul"
+input_player14_gun_dpad_down_mbtn = "nul"
+input_player14_gun_dpad_left = "nul"
+input_player14_gun_dpad_left_btn = "nul"
+input_player14_gun_dpad_left_axis = "nul"
+input_player14_gun_dpad_left_mbtn = "nul"
+input_player14_gun_dpad_right = "nul"
+input_player14_gun_dpad_right_btn = "nul"
+input_player14_gun_dpad_right_axis = "nul"
+input_player14_gun_dpad_right_mbtn = "nul"
+input_player14_turbo = "nul"
+input_player14_turbo_btn = "nul"
+input_player14_turbo_axis = "nul"
+input_player14_turbo_mbtn = "nul"
+input_player15_b = "nul"
+input_player15_b_btn = "nul"
+input_player15_b_axis = "nul"
+input_player15_b_mbtn = "nul"
+input_player15_y = "nul"
+input_player15_y_btn = "nul"
+input_player15_y_axis = "nul"
+input_player15_y_mbtn = "nul"
+input_player15_select = "nul"
+input_player15_select_btn = "nul"
+input_player15_select_axis = "nul"
+input_player15_select_mbtn = "nul"
+input_player15_start = "nul"
+input_player15_start_btn = "nul"
+input_player15_start_axis = "nul"
+input_player15_start_mbtn = "nul"
+input_player15_up = "nul"
+input_player15_up_btn = "nul"
+input_player15_up_axis = "nul"
+input_player15_up_mbtn = "nul"
+input_player15_down = "nul"
+input_player15_down_btn = "nul"
+input_player15_down_axis = "nul"
+input_player15_down_mbtn = "nul"
+input_player15_left = "nul"
+input_player15_left_btn = "nul"
+input_player15_left_axis = "nul"
+input_player15_left_mbtn = "nul"
+input_player15_right = "nul"
+input_player15_right_btn = "nul"
+input_player15_right_axis = "nul"
+input_player15_right_mbtn = "nul"
+input_player15_a = "nul"
+input_player15_a_btn = "nul"
+input_player15_a_axis = "nul"
+input_player15_a_mbtn = "nul"
+input_player15_x = "nul"
+input_player15_x_btn = "nul"
+input_player15_x_axis = "nul"
+input_player15_x_mbtn = "nul"
+input_player15_l = "nul"
+input_player15_l_btn = "nul"
+input_player15_l_axis = "nul"
+input_player15_l_mbtn = "nul"
+input_player15_r = "nul"
+input_player15_r_btn = "nul"
+input_player15_r_axis = "nul"
+input_player15_r_mbtn = "nul"
+input_player15_l2 = "nul"
+input_player15_l2_btn = "nul"
+input_player15_l2_axis = "nul"
+input_player15_l2_mbtn = "nul"
+input_player15_r2 = "nul"
+input_player15_r2_btn = "nul"
+input_player15_r2_axis = "nul"
+input_player15_r2_mbtn = "nul"
+input_player15_l3 = "nul"
+input_player15_l3_btn = "nul"
+input_player15_l3_axis = "nul"
+input_player15_l3_mbtn = "nul"
+input_player15_r3 = "nul"
+input_player15_r3_btn = "nul"
+input_player15_r3_axis = "nul"
+input_player15_r3_mbtn = "nul"
+input_player15_l_x_plus = "nul"
+input_player15_l_x_plus_btn = "nul"
+input_player15_l_x_plus_axis = "nul"
+input_player15_l_x_plus_mbtn = "nul"
+input_player15_l_x_minus = "nul"
+input_player15_l_x_minus_btn = "nul"
+input_player15_l_x_minus_axis = "nul"
+input_player15_l_x_minus_mbtn = "nul"
+input_player15_l_y_plus = "nul"
+input_player15_l_y_plus_btn = "nul"
+input_player15_l_y_plus_axis = "nul"
+input_player15_l_y_plus_mbtn = "nul"
+input_player15_l_y_minus = "nul"
+input_player15_l_y_minus_btn = "nul"
+input_player15_l_y_minus_axis = "nul"
+input_player15_l_y_minus_mbtn = "nul"
+input_player15_r_x_plus = "nul"
+input_player15_r_x_plus_btn = "nul"
+input_player15_r_x_plus_axis = "nul"
+input_player15_r_x_plus_mbtn = "nul"
+input_player15_r_x_minus = "nul"
+input_player15_r_x_minus_btn = "nul"
+input_player15_r_x_minus_axis = "nul"
+input_player15_r_x_minus_mbtn = "nul"
+input_player15_r_y_plus = "nul"
+input_player15_r_y_plus_btn = "nul"
+input_player15_r_y_plus_axis = "nul"
+input_player15_r_y_plus_mbtn = "nul"
+input_player15_r_y_minus = "nul"
+input_player15_r_y_minus_btn = "nul"
+input_player15_r_y_minus_axis = "nul"
+input_player15_r_y_minus_mbtn = "nul"
+input_player15_gun_trigger = "nul"
+input_player15_gun_trigger_btn = "nul"
+input_player15_gun_trigger_axis = "nul"
+input_player15_gun_trigger_mbtn = "nul"
+input_player15_gun_offscreen_shot = "nul"
+input_player15_gun_offscreen_shot_btn = "nul"
+input_player15_gun_offscreen_shot_axis = "nul"
+input_player15_gun_offscreen_shot_mbtn = "nul"
+input_player15_gun_aux_a = "nul"
+input_player15_gun_aux_a_btn = "nul"
+input_player15_gun_aux_a_axis = "nul"
+input_player15_gun_aux_a_mbtn = "nul"
+input_player15_gun_aux_b = "nul"
+input_player15_gun_aux_b_btn = "nul"
+input_player15_gun_aux_b_axis = "nul"
+input_player15_gun_aux_b_mbtn = "nul"
+input_player15_gun_aux_c = "nul"
+input_player15_gun_aux_c_btn = "nul"
+input_player15_gun_aux_c_axis = "nul"
+input_player15_gun_aux_c_mbtn = "nul"
+input_player15_gun_start = "nul"
+input_player15_gun_start_btn = "nul"
+input_player15_gun_start_axis = "nul"
+input_player15_gun_start_mbtn = "nul"
+input_player15_gun_select = "nul"
+input_player15_gun_select_btn = "nul"
+input_player15_gun_select_axis = "nul"
+input_player15_gun_select_mbtn = "nul"
+input_player15_gun_dpad_up = "nul"
+input_player15_gun_dpad_up_btn = "nul"
+input_player15_gun_dpad_up_axis = "nul"
+input_player15_gun_dpad_up_mbtn = "nul"
+input_player15_gun_dpad_down = "nul"
+input_player15_gun_dpad_down_btn = "nul"
+input_player15_gun_dpad_down_axis = "nul"
+input_player15_gun_dpad_down_mbtn = "nul"
+input_player15_gun_dpad_left = "nul"
+input_player15_gun_dpad_left_btn = "nul"
+input_player15_gun_dpad_left_axis = "nul"
+input_player15_gun_dpad_left_mbtn = "nul"
+input_player15_gun_dpad_right = "nul"
+input_player15_gun_dpad_right_btn = "nul"
+input_player15_gun_dpad_right_axis = "nul"
+input_player15_gun_dpad_right_mbtn = "nul"
+input_player15_turbo = "nul"
+input_player15_turbo_btn = "nul"
+input_player15_turbo_axis = "nul"
+input_player15_turbo_mbtn = "nul"
+input_player16_b = "nul"
+input_player16_b_btn = "nul"
+input_player16_b_axis = "nul"
+input_player16_b_mbtn = "nul"
+input_player16_y = "nul"
+input_player16_y_btn = "nul"
+input_player16_y_axis = "nul"
+input_player16_y_mbtn = "nul"
+input_player16_select = "nul"
+input_player16_select_btn = "nul"
+input_player16_select_axis = "nul"
+input_player16_select_mbtn = "nul"
+input_player16_start = "nul"
+input_player16_start_btn = "nul"
+input_player16_start_axis = "nul"
+input_player16_start_mbtn = "nul"
+input_player16_up = "nul"
+input_player16_up_btn = "nul"
+input_player16_up_axis = "nul"
+input_player16_up_mbtn = "nul"
+input_player16_down = "nul"
+input_player16_down_btn = "nul"
+input_player16_down_axis = "nul"
+input_player16_down_mbtn = "nul"
+input_player16_left = "nul"
+input_player16_left_btn = "nul"
+input_player16_left_axis = "nul"
+input_player16_left_mbtn = "nul"
+input_player16_right = "nul"
+input_player16_right_btn = "nul"
+input_player16_right_axis = "nul"
+input_player16_right_mbtn = "nul"
+input_player16_a = "nul"
+input_player16_a_btn = "nul"
+input_player16_a_axis = "nul"
+input_player16_a_mbtn = "nul"
+input_player16_x = "nul"
+input_player16_x_btn = "nul"
+input_player16_x_axis = "nul"
+input_player16_x_mbtn = "nul"
+input_player16_l = "nul"
+input_player16_l_btn = "nul"
+input_player16_l_axis = "nul"
+input_player16_l_mbtn = "nul"
+input_player16_r = "nul"
+input_player16_r_btn = "nul"
+input_player16_r_axis = "nul"
+input_player16_r_mbtn = "nul"
+input_player16_l2 = "nul"
+input_player16_l2_btn = "nul"
+input_player16_l2_axis = "nul"
+input_player16_l2_mbtn = "nul"
+input_player16_r2 = "nul"
+input_player16_r2_btn = "nul"
+input_player16_r2_axis = "nul"
+input_player16_r2_mbtn = "nul"
+input_player16_l3 = "nul"
+input_player16_l3_btn = "nul"
+input_player16_l3_axis = "nul"
+input_player16_l3_mbtn = "nul"
+input_player16_r3 = "nul"
+input_player16_r3_btn = "nul"
+input_player16_r3_axis = "nul"
+input_player16_r3_mbtn = "nul"
+input_player16_l_x_plus = "nul"
+input_player16_l_x_plus_btn = "nul"
+input_player16_l_x_plus_axis = "nul"
+input_player16_l_x_plus_mbtn = "nul"
+input_player16_l_x_minus = "nul"
+input_player16_l_x_minus_btn = "nul"
+input_player16_l_x_minus_axis = "nul"
+input_player16_l_x_minus_mbtn = "nul"
+input_player16_l_y_plus = "nul"
+input_player16_l_y_plus_btn = "nul"
+input_player16_l_y_plus_axis = "nul"
+input_player16_l_y_plus_mbtn = "nul"
+input_player16_l_y_minus = "nul"
+input_player16_l_y_minus_btn = "nul"
+input_player16_l_y_minus_axis = "nul"
+input_player16_l_y_minus_mbtn = "nul"
+input_player16_r_x_plus = "nul"
+input_player16_r_x_plus_btn = "nul"
+input_player16_r_x_plus_axis = "nul"
+input_player16_r_x_plus_mbtn = "nul"
+input_player16_r_x_minus = "nul"
+input_player16_r_x_minus_btn = "nul"
+input_player16_r_x_minus_axis = "nul"
+input_player16_r_x_minus_mbtn = "nul"
+input_player16_r_y_plus = "nul"
+input_player16_r_y_plus_btn = "nul"
+input_player16_r_y_plus_axis = "nul"
+input_player16_r_y_plus_mbtn = "nul"
+input_player16_r_y_minus = "nul"
+input_player16_r_y_minus_btn = "nul"
+input_player16_r_y_minus_axis = "nul"
+input_player16_r_y_minus_mbtn = "nul"
+input_player16_gun_trigger = "nul"
+input_player16_gun_trigger_btn = "nul"
+input_player16_gun_trigger_axis = "nul"
+input_player16_gun_trigger_mbtn = "nul"
+input_player16_gun_offscreen_shot = "nul"
+input_player16_gun_offscreen_shot_btn = "nul"
+input_player16_gun_offscreen_shot_axis = "nul"
+input_player16_gun_offscreen_shot_mbtn = "nul"
+input_player16_gun_aux_a = "nul"
+input_player16_gun_aux_a_btn = "nul"
+input_player16_gun_aux_a_axis = "nul"
+input_player16_gun_aux_a_mbtn = "nul"
+input_player16_gun_aux_b = "nul"
+input_player16_gun_aux_b_btn = "nul"
+input_player16_gun_aux_b_axis = "nul"
+input_player16_gun_aux_b_mbtn = "nul"
+input_player16_gun_aux_c = "nul"
+input_player16_gun_aux_c_btn = "nul"
+input_player16_gun_aux_c_axis = "nul"
+input_player16_gun_aux_c_mbtn = "nul"
+input_player16_gun_start = "nul"
+input_player16_gun_start_btn = "nul"
+input_player16_gun_start_axis = "nul"
+input_player16_gun_start_mbtn = "nul"
+input_player16_gun_select = "nul"
+input_player16_gun_select_btn = "nul"
+input_player16_gun_select_axis = "nul"
+input_player16_gun_select_mbtn = "nul"
+input_player16_gun_dpad_up = "nul"
+input_player16_gun_dpad_up_btn = "nul"
+input_player16_gun_dpad_up_axis = "nul"
+input_player16_gun_dpad_up_mbtn = "nul"
+input_player16_gun_dpad_down = "nul"
+input_player16_gun_dpad_down_btn = "nul"
+input_player16_gun_dpad_down_axis = "nul"
+input_player16_gun_dpad_down_mbtn = "nul"
+input_player16_gun_dpad_left = "nul"
+input_player16_gun_dpad_left_btn = "nul"
+input_player16_gun_dpad_left_axis = "nul"
+input_player16_gun_dpad_left_mbtn = "nul"
+input_player16_gun_dpad_right = "nul"
+input_player16_gun_dpad_right_btn = "nul"
+input_player16_gun_dpad_right_axis = "nul"
+input_player16_gun_dpad_right_mbtn = "nul"
+input_player16_turbo = "nul"
+input_player16_turbo_btn = "nul"
+input_player16_turbo_axis = "nul"
+input_player16_turbo_mbtn = "nul"
+back_as_menu_toggle_enable = "true"
+netplay_client_swap_input = "true"
+ups_pref = "false"
+bps_pref = "false"
+ips_pref = "false"
+osk_overlay_directory = "~/.config/retroarch/overlay"
+input_osk_overlay_enable = "true"
+netplay_spectator_mode_enable = "false"
+netplay_mode = "false"
+netplay_delay_frames = "0"
+custom_bgm_enable = "false"
+input_netplay_flip_players = "nul"
+input_netplay_flip_players_btn = "nul"
+input_netplay_flip_players_axis = "nul"
+core_specific_config = "false"
+menu_ok_btn = "8"
+menu_cancel_btn = "0"
+menu_search_btn = "9"
+menu_info_btn = "2"
+menu_default_btn = "3"
+menu_scroll_down_btn = "11"
+menu_scroll_up_btn = "10"
+audio_device = "sysdefault:CARD=sun8ia33audio"
+xmb_font = ""
+content_show_settings_password = ""
+kiosk_mode_password = ""
+netplay_nickname = ""
+video_filter = ""
+audio_dsp_plugin = ""
+netplay_ip_address = ""
+netplay_password = ""
+netplay_spectate_password = ""
+core_options_path = ""
+video_shader = ""
+menu_wallpaper = ""
+input_overlay = ""
+video_font_path = ""
+content_history_dir = ""
+cache_directory = ""
+resampler_directory = ""
+recording_output_directory = ""
+recording_config_directory = ""
+playlist_names = ""
+playlist_cores = ""
+camera_device = ""
+cheevos_username = ""
+cheevos_password = ""
+video_context_driver = ""
+input_keyboard_layout = ""
+bundle_assets_src_path = ""
+bundle_assets_dst_path = ""
+bundle_assets_dst_path_subdir = ""

+ 6 - 0
Menu/GameShell/20_Retro Games/MGBA/action.config

@@ -0,0 +1,6 @@
+ROM=/home/cpi/games/MGBA
+ROM_SO=/home/cpi/apps/emulators/mgba_libretro.so
+EXT=gba,gbx
+LAUNCHER=retroarch -L
+TITLE=MGBA Roms
+SO_URL=http://buildbot.libretro.com/nightly/linux/armhf/latest/mgba_libretro.so.zip

+ 7 - 0
Menu/GameShell/20_Retro Games/NESTOPIA/action.config

@@ -0,0 +1,7 @@
+ROM=/home/cpi/games/NESTOPIA
+ROM_SO=/home/cpi/apps/emulators/nestopia_libretro.so
+EXT=zip
+LAUNCHER=retroarch -L
+TITLE=NESTOPIA Roms
+SO_URL=http://buildbot.libretro.com/nightly/linux/armhf/latest/nestopia_libretro.so.zip
+

+ 1 - 0
Menu/GameShell/CaveStory.sh

@@ -0,0 +1 @@
+retroarch -L /home/cpi/apps/emulators/nxengine_libretro.so /home/cpi/games/nxengine/cavestory/data

+ 1 - 0
Menu/GameShell/RetroArch.sh

@@ -0,0 +1 @@
+retroarch 

+ 1 - 0
Menu/GameShell/freeDM.sh

@@ -0,0 +1 @@
+chocolate-doom -iwad /home/cpi/games/FreeDM/freedoom1.wad

BIN
main


+ 92 - 0
main.go

@@ -0,0 +1,92 @@
+package main
+
+import (
+
+	"os"
+	"fmt"
+	
+	"github.com/veandco/go-sdl2/sdl"
+	
+	"github.com/cuu/gogame/display"
+	"github.com/cuu/gogame/event"
+//	"github.com/cuu/gogame/color"
+	"github.com/cuu/gogame/font"
+	"github.com/cuu/gogame/time"
+	
+	"./sysgo/UI"
+)
+
+
+func run() int {	
+	display.Init()
+	font.Init()
+	screen := display.SetMode(int32(UI.Width),int32(UI.Height),0,32)
+
+	UI.MyIconPool.Init()
+
+	main_screen := UI.NewMainScreen()
+	main_screen.HWND = screen
+	main_screen.Init()
+		
+	title_bar := UI.NewTitleBar()
+	foot_bar := UI.NewFootBar()
+
+	title_bar.Init(main_screen)
+	foot_bar.Init(main_screen)
+	
+	main_screen.TitleBar = title_bar
+	main_screen.FootBar  = foot_bar
+
+	main_screen.ReadTheDirIntoPages("Menu",0,nil)
+	main_screen.FartherPages()
+
+	main_screen.Draw()
+	main_screen.SwapAndShow()
+
+	UI.SwapAndShow()
+	
+	fmt.Println(main_screen)
+	
+	running := true
+	for running {
+		ev := event.Wait()
+		if ev.Type == event.QUIT {
+			running = false
+			break
+		}
+		if ev.Type == event.USEREVENT {
+			
+			fmt.Println(ev.Data["Msg"])
+		}
+		if ev.Type == event.KEYDOWN {
+			fmt.Println(ev)
+			if ev.Data["Key"] == "Q" {
+				return 0
+			}
+			if ev.Data["Key"] == "Escape" {
+				return 0
+			}
+			if ev.Data["Key"] == "T" {
+				time.Delay(1000)
+			}
+			if ev.Data["Key"] == "P" {				
+				event.Post(event.RUNEVT,"GODEBUG=cgocheck=0 sucks") // just id and string, simpify the stuff
+			}
+		}
+	}
+
+	return 0
+}
+
+func main() {
+	
+	var exitcode int
+
+	os.Setenv("SDL_VIDEO_CENTERED","1")
+	
+	sdl.Main(func() {
+		exitcode = run()
+	})
+
+	os.Exit(exitcode)
+}

+ 0 - 0
skin/default/sys.go/gameshell/blank.png → skin/default/sysgo/gameshell/blank.png


+ 0 - 0
skin/default/sys.go/gameshell/footbar_icons/footbar.png → skin/default/sysgo/gameshell/footbar_icons/footbar.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/_L.png → skin/default/sysgo/gameshell/icons/_L.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/_R.png → skin/default/sysgo/gameshell/icons/_R.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/about_bg.png → skin/default/sysgo/gameshell/icons/about_bg.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/blueselector.png → skin/default/sysgo/gameshell/icons/blueselector.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/done.png → skin/default/sysgo/gameshell/icons/done.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/empty.png → skin/default/sysgo/gameshell/icons/empty.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/heart.png → skin/default/sysgo/gameshell/icons/heart.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/icon_sd.png → skin/default/sysgo/gameshell/icons/icon_sd.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/light.png → skin/default/sysgo/gameshell/icons/light.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/lock.png → skin/default/sysgo/gameshell/icons/lock.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/needwifi_bg.png → skin/default/sysgo/gameshell/icons/needwifi_bg.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/online.png → skin/default/sysgo/gameshell/icons/online.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/rom_download.png → skin/default/sysgo/gameshell/icons/rom_download.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/roundcorners.png → skin/default/sysgo/gameshell/icons/roundcorners.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/scale.png → skin/default/sysgo/gameshell/icons/scale.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/star.png → skin/default/sysgo/gameshell/icons/star.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/sys.png → skin/default/sysgo/gameshell/icons/sys.png


+ 0 - 0
skin/default/sys.go/gameshell/icons/vol.png → skin/default/sysgo/gameshell/icons/vol.png


+ 0 - 0
skin/default/sys.go/gameshell/titlebar_icons/battery_unknown.png → skin/default/sysgo/gameshell/titlebar_icons/battery_unknown.png


+ 0 - 0
skin/default/sys.go/gameshell/titlebar_icons/soundvolume.png → skin/default/sysgo/gameshell/titlebar_icons/soundvolume.png


+ 0 - 0
skin/default/sys.go/gameshell/titlebar_icons/wifi.png → skin/default/sysgo/gameshell/titlebar_icons/wifi.png


+ 0 - 0
skin/default/sys.go/gameshell/titlebar_icons/withcharging.png → skin/default/sysgo/gameshell/titlebar_icons/withcharging.png


+ 0 - 0
skin/default/sys.go/gameshell/titlebar_icons/without_charging.png → skin/default/sysgo/gameshell/titlebar_icons/without_charging.png


+ 2 - 0
sysgo/DBUS/dbus.go

@@ -1,6 +1,8 @@
 package DBUS
 
 import (
+	"fmt"
+	"strconv"
 	"github.com/godbus/dbus"
 )
 

+ 2 - 0
sysgo/UI/confirm_page.go

@@ -0,0 +1,2 @@
+package UI
+

+ 1 - 1
sysgo/UI/fonts.go

@@ -15,7 +15,7 @@ var Fonts map[string]*ttf.Font
 func init() {
 	font.Init()
 
-	skinpath := "../skin/"+sysgo.SKIN+"/truetype"
+	skinpath := "skin/"+sysgo.SKIN+"/truetype"
 
 	Fonts = make(map[string]*ttf.Font)
 

+ 27 - 25
sysgo/UI/foot_bar.go

@@ -1,11 +1,18 @@
 package UI
 
 import (
+	"fmt"
+//	"io/ioutil"
+	"log"
+	
 	"github.com/veandco/go-sdl2/sdl"
 	"github.com/veandco/go-sdl2/ttf"
 	
 	"github.com/cuu/gogame/rect"
 	"github.com/cuu/gogame/surface"
+	"github.com/cuu/gogame/draw"
+	"github.com/cuu/gogame/image"
+	"github.com/cuu/gogame/font"
 	
 )
 
@@ -62,6 +69,7 @@ type FootBar struct {
 	LabelFont *ttf.Font
 	State   string
 	SkinManager *SkinManager
+	
 	icon_base_path string
 	
 }
@@ -93,13 +101,7 @@ func (self *FootBar) ReadFootBarIcons( icondir string) {
 	}
 	keynames := [5]string{"nav","x","y","a","b"}
 
-	share_surf := image.Load(icon_base_path+"footbar.png")
-
-	files,err := ioutil.ReadDir(icondir)
-	if err != nil {
-		log.Fatal(err)
-		return
-	}
+	share_surf := image.Load(self.icon_base_path+"footbar.png")
 
 	for i,v := range keynames { // share_surf contains same number of image pieces of keynames
 		it := NewFootBarIconItem()
@@ -119,8 +121,6 @@ func (self *FootBar) Init(main_screen *MainScreen) {
 	self.CanvasHWND = surface.Surface(self.Width,self.Height)
 	self.HWND = main_screen.HWND
 	self.SkinManager = main_screen.SkinManager
-	self.DBusManager = main_screen.DBusManager
-
 
 	round_corners := NewFootBarIconItem()
 	round_corners.IconWidth = 10
@@ -128,7 +128,7 @@ func (self *FootBar) Init(main_screen *MainScreen) {
 	
 	round_corners.MyType = ICON_TYPES["STAT"]
 	round_corners.Parent = self
-	round_corners.ImgSurf = MyIconPool.GetImageSurf["roundcorners"]
+	round_corners.ImgSurf = MyIconPool.GetImgSurf("roundcorners")
 	round_corners.Adjust(0,0,10,10,0)
 	
 	self.Icons["round_corners"] = round_corners
@@ -136,14 +136,15 @@ func (self *FootBar) Init(main_screen *MainScreen) {
 }
 
 func (self *FootBar) ResetNavText() {
-	self.Icons["nav"].Label.SetText("Nav.")
+	self.Icons["nav"].SetLabelText("Nav.")
 	self.State = "normal"
 	self.Draw()
 }
 
 func (self *FootBar) UpdateNavText(texts string) {
 	self.State = "tips"
-	my_text := font.Render(self.LabelFont, texts, true,self.SkinManager.GiveColor("Text"))
+	
+//	my_text := font.Render(self.LabelFont, texts, true,self.SkinManager.GiveColor("Text"),nil)
 
 	left_width := self.Width - 18
 
@@ -151,21 +152,21 @@ func (self *FootBar) UpdateNavText(texts string) {
 
 	for i,_ := range texts {
 		text_ := texts[:i+1]
-		my_text := font.Render(self.LabelFont, text_, true, self.SkinManager.GiveColor("Text"))
+		my_text := font.Render(self.LabelFont, text_, true, self.SkinManager.GiveColor("Text"),nil)
 		final_piece  = text_
-		if my_text.W >= left_width {
+		if int(my_text.W) >= left_width {
 			break
 		}
 	}
 	
 	fmt.Printf("finalpiece %s\n", final_piece)
 
-	self.Icons["nav"].Label.SetText(final_piece)
+	self.Icons["nav"].SetLabelText(final_piece)
 	self.Draw()
 	
 }
 
-func (self *FootBar) SetLabelTexts( texts []string) {
+func (self *FootBar) SetLabelTexts( texts [5]string) {
 	keynames := [5]string{"nav","x","y","a","b"}
 	if len(texts) < 5 {
 		log.Fatal("SetLabelTexts texts length error")
@@ -173,7 +174,7 @@ func (self *FootBar) SetLabelTexts( texts []string) {
 	}
 
 	for idx,x := range keynames {
-		self.Icons[x].Label.SetText(texts[idx])
+		self.Icons[x].SetLabelText(texts[idx])
 	}
 	
 }
@@ -202,7 +203,7 @@ func (self *FootBar) Draw() {
 		_w := 0
 
 		for i,x := range []string{"b","a","y","x"} {
-			if self.Icons[x].Label.GetText() != "" {
+			if self.Icons[x].GetLabelText() != "" {
 				if i== 0 {
 					_w += self.Icons[x].TotalWidth()
 				}else {
@@ -215,11 +216,12 @@ func (self *FootBar) Draw() {
 				self.Icons[x].Draw()
 			}
 		}
-
-		draw.Line(self.CanvasHWND, self.SkinManager.GiveColor("Line"),0,0,Width,0,self.BorderWidth)
-
-		if self.HWND != nil {
-			rect_ := rect.Rect(self.PosX, Height - self.Height, Width, self.BarHeight)
-			surface.Blit(self.HWND,self.CanvasHWND, &rect_,nil)
-		}
+	}
+	
+	draw.Line(self.CanvasHWND, self.SkinManager.GiveColor("Line"),0,0,Width,0,self.BorderWidth)
+	
+	if self.HWND != nil {
+		rect_ := rect.Rect(self.PosX, Height - self.Height, Width, self.BarHeight)
+		surface.Blit(self.HWND,self.CanvasHWND, &rect_,nil)
+	}
 }

+ 43 - 14
sysgo/UI/icon_item.go

@@ -5,6 +5,10 @@ import (
 	"github.com/veandco/go-sdl2/sdl"
 	"github.com/veandco/go-sdl2/ttf"
 
+	"github.com/cuu/gogame/surface"
+	"github.com/cuu/gogame/draw"
+	"github.com/cuu/gogame/color"
+	"github.com/cuu/gogame/image"
 	"github.com/cuu/gogame/transform"
 	"github.com/cuu/gogame/utils"
 )
@@ -27,20 +31,29 @@ type IconItemInterface interface {
 	SetParent( p interface{} )
 	
 	SetLabelColor(col *color.Color)
+	SetLabelText(text string)
+	GetLabelText() string
 	
 	Coord() (int,int)
 	NewCoord(x,y int)
 
 	TotalWidth() int
 	Size() (int,int)
+
 	
 	AddLabel(text string, fontobj *ttf.Font)
 	GetLinkPage() PageInterface
 	AdjustLinkPage()
-	GetImageSurf() *sdl.Surface
-	SetImageSurf(newsurf *sdl.Surface)
-	CreateImageSurf()
+	GetImgSurf() *sdl.Surface
+	SetImgSurf(newsurf *sdl.Surface)
+	CreateImgSurf()
 	ChangeImgSurfColor(col *color.Color)
+	
+	Clear()
+
+	GetCmdInvoke() PluginInterface
+
+	
 	Draw() 
 }
 
@@ -86,7 +99,7 @@ func (self *IconItem) Init(x,y,w,h,at int) {
 	self.AnimationTime = at
 }
 
-func (self *IconItem) Init(x,y,w,h,at int) {
+func (self *IconItem) Adjust(x,y,w,h,at int) {
 	self.PosX = x
 	self.PosY = y
 	self.Width = w
@@ -97,7 +110,7 @@ func (self *IconItem) Init(x,y,w,h,at int) {
 		self.Label.SetCanvasHWND(self.Parent.GetCanvasHWND())
 	}
 
-	self.CreateImageSurf()
+	self.CreateImgSurf()
 	self.AdjustLinkPage()
 	
 }
@@ -136,13 +149,21 @@ func (self *IconItem) SetIndex(i int) {
 }
 
 func (self *IconItem) SetParent(p interface{} ) {
-	self.Parent = p
+	self.Parent = p.(PageInterface)
 }
 
 func (self *IconItem) SetLabelColor(col *color.Color) {
 	self.Label.SetColor(col)
 }
 
+func (self *IconItem) GetLabelText() string {
+	return self.Label.GetText()
+}
+
+func (self *IconItem) SetLabelText(text string) {
+	self.Label.SetText(text)
+}
+
 func (self *IconItem) Coord() (int,int) {
 	return self.PosX,self.PosY
 }
@@ -153,7 +174,7 @@ func (self *IconItem) NewCoord(x,y int) {
 }
 
 func (self *IconItem) TotalWidth() int {
-	
+	return 0
 }
 
 func (self *IconItem) Size() (int,int) {
@@ -165,7 +186,7 @@ func (self *IconItem) AddLabel(text string, fontobj *ttf.Font) {
 		l:= NewLabel()
 		self.Label = l
 	}else {
-		self.Label.Init(text,fontobj)
+		self.Label.Init(text,fontobj,nil)
 	}	
 }
 
@@ -177,7 +198,7 @@ func (self *IconItem) AdjustLinkPage() {
 	if self.MyType == ICON_TYPES["DIR"] && self.LinkPage != nil {
 		self.LinkPage.SetIndex(0)
 		self.LinkPage.SetAlign(ALIGN["SLeft"])
-		self.LinkPage.SetIconNumbers( len(self.LinkPage.GetIcons()) )
+		self.LinkPage.UpdateIconNumbers()
 		self.LinkPage.SetScreen(self.Parent.GetScreen())
 		self.LinkPage.SetCanvasHWND( (self.Parent.GetScreen()).CanvasHWND )
 		self.LinkPage.SetFootMsg([5]string{ "Nav.","","","Back","Enter" } )
@@ -194,19 +215,19 @@ func (self *IconItem) AdjustLinkPage() {
 }
 
 
-func (self *IconItem) GetImageSurf() *sdl.Surface {
+func (self *IconItem) GetImgSurf() *sdl.Surface {
 	return self.ImgSurf
 }
 
-func (self *IconItem) SetImageSurf(newsurf *sdl.Surface) {
+func (self *IconItem) SetImgSurf(newsurf *sdl.Surface) {
 	self.ImgSurf = newsurf
 }
 
 
-func (self *IconItem) CreateImageSurf() {
+func (self *IconItem) CreateImgSurf() {
 	if self.ImgSurf == nil && self.ImageName != "" {
 		self.ImgSurf = image.Load(self.ImageName)
-		if self.ImgSurf.W  > IconWidth  || self.ImgSurf.H > IconHeight {
+		if int(self.ImgSurf.W)  > IconWidth  || int(self.ImgSurf.H) > IconHeight {
 			self.ImgSurf = transform.Scale(self.ImgSurf,IconWidth,IconHeight)
 		}
 	}
@@ -216,12 +237,20 @@ func (self *IconItem) ChangeImgSurfColor(col *color.Color) {
 	utils.ColorSurface(self.ImgSurf,col)
 }
 
+func (self *IconItem) Clear() {
+	
+}
+
+func (self *IconItem) GetCmdInvoke() PluginInterface {
+	return self.CmdInvoke
+}
+
 func (self *IconItem) Draw() {
 	
 	parent_x,parent_y := self.Parent.Coord()
 	
 	if self.Label != nil {
-		lab_x,lab_y := self.Label.Coord()
+//		lab_x,lab_y := self.Label.Coord()
 		lab_w,lab_h:= self.Label.Size()
 		
 		if self.Align == ALIGN["VCenter"] {

+ 1 - 1
sysgo/UI/icon_pool.go

@@ -46,7 +46,7 @@ func (self *IconPool) Init() {
 }
 
 func (self *IconPool) GetImgSurf(keyname string) *sdl.Surface {
-	if val,ok := self.Icons[keyname]; ok {
+	if _,ok := self.Icons[keyname]; ok {
 		return self.Icons[keyname]
 	} else {
 		return nil

+ 1 - 1
sysgo/UI/keys_def.go

@@ -1,7 +1,7 @@
 package UI
 
 import (
-	"../sysgo"
+	"../../sysgo"
 )
 
 

+ 12 - 5
sysgo/UI/label.go

@@ -1,15 +1,18 @@
 package UI
 
 import (
-	
+	"github.com/veandco/go-sdl2/sdl"
 	"github.com/veandco/go-sdl2/ttf"
-
+	
+	"github.com/cuu/gogame/surface"
+	"github.com/cuu/gogame/rect"
 	"github.com/cuu/gogame/color"
 	"github.com/cuu/gogame/font"
 )
 
 type LabelInterface interface {
 	Init( text string, font_obj *ttf.Font,col *color.Color )
+	SetCanvasHWND( canvas *sdl.Surface)
 	Coord() (int,int)
 	Size() (int,int)
 	NewCoord(x,y int)
@@ -31,7 +34,7 @@ type Label struct {
 //	TextSurf *sdl.Surface
 }
 
-func NewLabel() *Label() {
+func NewLabel() *Label {
 	l := &Label{}
 	l.Color = &color.Color{83,83,83,255}
 	return l
@@ -51,6 +54,10 @@ func (self *Label) Init(text string, font_obj *ttf.Font,col *color.Color ) {
 	
 }
 
+func (self *Label) SetCanvasHWND( canvas *sdl.Surface) {
+	self.CanvasHWND = canvas
+}
+
 func (self *Label) Coord() (int,int) {
 	return self.PosX,self.PosY
 }
@@ -85,8 +92,8 @@ func (self *Label) Draw() {
 	font.SetBold(self.FontObj,false) // avoing same font tangling set_bold to others
 	my_text := font.Render(self.FontObj,self.Text, true, self.Color, nil)
 
-	rect_ := &rect.Rect{self.PosX,self.PosY,self.Width,self.Height}
+	rect_ := rect.Rect(self.PosX,self.PosY,self.Width,self.Height)
 	
-	surface.Blit(self.CanvasHWND,my_text,rect_,nil)
+	surface.Blit(self.CanvasHWND,my_text,&rect_,nil)
 	
 }

+ 45 - 25
sysgo/UI/main_screen.go

@@ -1,15 +1,22 @@
 package UI
 
 import (
-
+	"fmt"
+	"io/ioutil"
 	"strings"
+	"log"
+	
 	"github.com/veandco/go-sdl2/sdl"
 	"github.com/veandco/go-sdl2/ttf"
 
-	"github.com/cuu/gogame/display"	
+	"github.com/cuu/gogame/display"
 	"github.com/cuu/gogame/surface"
+	"github.com/cuu/gogame/draw"
 	"github.com/cuu/gogame/color"
+	"github.com/cuu/gogame/rect"
+	"github.com/cuu/gogame/font"
 	"github.com/cuu/gogame/time"
+	
 	"github.com/cuu/gogame/event"
 
 	"../DBUS"
@@ -23,7 +30,7 @@ var (
 type MessageBox struct {
 	Label
 	Parent *MainScreen
-
+	HWND *sdl.Surface
 }
 
 func NewMessageBox() *MessageBox {
@@ -56,7 +63,7 @@ func (self *MessageBox) SetText( text string) {
 func (self *MessageBox) Draw() {
 	self.Width = 0
 	self.Height = 0
-	surface.Fill(self.CanvasHWND, color.Color{255,255,255,255} )
+	surface.Fill(self.CanvasHWND, &color.Color{255,255,255,255} )
 
 	words := strings.Split(self.Text," ")
 	space,_ := font.Size(self.FontObj," ")
@@ -70,8 +77,8 @@ func (self *MessageBox) Draw() {
 
 	for _,word := range words {
 		word_surface := font.Render( self.FontObj, word, true, self.Color,nil)
-		word_width := word_surface.W
-		word_height := word_surface.H
+		word_width := int(word_surface.W)
+		word_height := int(word_surface.H)
 		row_total_width += word_width
 		if lines == 0 {
 			lines += word_height
@@ -109,15 +116,20 @@ func (self *MessageBox) Draw() {
 
 	rect_ := rect.Rect(x-padding,y-padding, self.Width+padding*2, self.Height+padding*2)
 	
-	draw.Rect(self.HWND , &color.Color{255,255,255,255},&rect_,0)
-
 	if self.HWND != nil {
+		
+		draw.Rect(self.HWND , &color.Color{255,255,255,255},&rect_,0)
+		
 		rect__ := draw.MidRect(self.Parent.Width/2, self.Parent.Height/2,self.Width,self.Height,Width,Height)
-		dest_rect := rect.Rect(0,0,self.Width,self,Height)
-		surface.Blit(self.HWND, rect__, &dest_rect,nil)
+		
+		dest_rect := rect.Rect(0,0,self.Width,self.Height)
+		
+		surface.Blit(self.HWND, self.CanvasHWND, rect__, &dest_rect)
+		
+		draw.Rect(self.HWND , &color.Color{0,0,0,255},&rect_,1)
+		
 	}
 
-	draw.Rect(self.HWND , &color.Color{0,0,0,255},&rect_,1)
 	
 }
 
@@ -153,6 +165,7 @@ func NewMainScreen() *MainScreen {
 	
 	m.MsgBoxFont = Fonts["veramono20"]
 	m.IconFont   = Fonts["varela15"]
+	return m
 }
 
 func (self *MainScreen) Init() {
@@ -160,12 +173,12 @@ func (self *MainScreen) Init() {
 	
 	self.MsgBox     = NewMessageBox()
 	self.MsgBox.Parent = self
-	self.MsgBox.Init(" ", self.MsgBoxFont, &color.Color{83,83,83})
+	self.MsgBox.Init(" ", self.MsgBoxFont, &color.Color{83,83,83,255})
 
 	self.SkinManager = NewSkinManager()
 	self.SkinManager.Init()
 
-	self.DBusManager = NewDBus()
+	self.DBusManager = DBUS.NewDBus()
 	self.DBusManager.Init()
 }
 
@@ -177,7 +190,8 @@ func (self *MainScreen) FartherPages() { // right after ReadTheDirIntoPages
 		self.Pages[i].SetCanvasHWND(self.CanvasHWND)
 		self.Pages[i].UpdateIconNumbers() // IconNumbers always == len(Pages[i].Icons)
 		self.Pages[i].SetScreen(self)
-
+		self.Pages[i].Adjust()
+		
 		if self.Pages[i].GetIconNumbers() > 1 {
 			self.Pages[i].SetPsIndex(1)
 			self.Pages[i].SetIconIndex( 1 )
@@ -213,14 +227,16 @@ func (self *MainScreen) AppendPage( pg PageInterface ) {
 }
 
 func (self *MainScreen) ClearCanvas() {
-	surface.Fill(self.CanvasHWND, color.Color{255,255,255,255} ) 
+	surface.Fill(self.CanvasHWND, &color.Color{255,255,255,255} ) 
 }
 
 func (self *MainScreen) SwapAndShow() {
 	if self.HWND != nil {
 		rect_ := rect.Rect( self.PosX,self.PosY,self.Width,self.Height)
-		surface.Blit(self.HWND,self.CanvasHWND,*rect_, nil)
+		surface.Blit(self.HWND,self.CanvasHWND,&rect_, nil)
 	}
+
+	display.Flip()
 }
 
 func (self *MainScreen) ExtraName(name string) string {
@@ -308,9 +324,9 @@ func (self *MainScreen) ReadTheDirIntoPages(_dir string, pglevel int, cur_page P
 					untitled := NewUntitledIcon()
 					untitled.Init()
 					if len(i2) > 1 {
-						untitled.SetWords(i2[0],i2[1])
+						untitled.SetWords(string(i2[0]),string(i2[1]))
 					}else if len(i2) == 1 {
-						untitled.SetWords(i2[0],i2[0])
+						untitled.SetWords(string(i2[0]),string(i2[0]))
 					}else {
 						untitled.SetWords("G","s")
 					}
@@ -336,7 +352,7 @@ func (self *MainScreen) ReadTheDirIntoPages(_dir string, pglevel int, cur_page P
 		} else if IsAFile(_dir+"/"+f.Name()) && (pglevel > 0) {
 			if strings.HasSuffix(strings.ToLower(f.Name()),IconExt) {
 				i2 := self.ExtraName(f.Name())
-				iconitem = NewIconItem()
+				iconitem := NewIconItem()
 				iconitem.CmdPath = _dir+"/"+f.Name()
 				MakeExecutable( iconitem.CmdPath )
 				iconitem.MyType = ICON_TYPES["EXE"]
@@ -346,9 +362,9 @@ func (self *MainScreen) ReadTheDirIntoPages(_dir string, pglevel int, cur_page P
 					untitled:= NewUntitledIcon()
 					untitled.Init()
 					if len(i2) > 1 {
-						untitled.SetWords(i2[0],i2[1])
+						untitled.SetWords(string(i2[0]),string(i2[1]))
 					}else if len(i2) == 1 {
-						untitled.SetWords(i2[0],i2[0])
+						untitled.SetWords(string(i2[0]),string(i2[0]))
 					}else {
 						untitled.SetWords("G","s")
 					}
@@ -357,7 +373,7 @@ func (self *MainScreen) ReadTheDirIntoPages(_dir string, pglevel int, cur_page P
 				}
 
 				iconitem.AddLabel(strings.Split(i2,".")[0], self.IconFont)
-				iconfont.LinkPage = nil
+				iconitem.LinkPage = nil
 				cur_page.AppendIcon(iconitem)
 			}
 		}
@@ -406,13 +422,17 @@ func (self *MainScreen) DrawRun() {
 }
 
 func (self *MainScreen) Draw() {
-	self.CurrentPage.Draw()
+	if self.CurrentPage != nil {
+		self.CurrentPage.Draw()
+	}
+	
 	if self.TitleBar != nil {
 		self.TitleBar.Draw( self.CurrentPage.GetName())
 	}
 
 	if self.FootBar != nil {
-		self.FootBar.SetLabelTexts( self.CurrentPage.GetFootMsg())
-		self.FootBar.Draw()
+		fmt.Println( len(self.CurrentPage.GetFootMsg()))
+//		self.FootBar.SetLabelTexts( self.CurrentPage.GetFootMsg())
+//		self.FootBar.Draw()
 	}
 }

+ 3 - 0
sysgo/UI/multi_icon_item.go

@@ -1,7 +1,10 @@
 package UI
 
 import (
+	"github.com/cuu/gogame/surface"
 	"github.com/cuu/gogame/image"
+	"github.com/cuu/gogame/draw"
+	"github.com/cuu/gogame/rect"
 )
 
 

+ 70 - 34
sysgo/UI/page.go

@@ -1,14 +1,20 @@
 package UI
 
 import (
+	"fmt"
+	
 	"math"
 	"sync"
 	
 	"github.com/veandco/go-sdl2/sdl"
-	
-	"github.com/cuu/gogame/font"
+
+	"github.com/cuu/gogame/surface"
+	"github.com/cuu/gogame/draw"
+//	"github.com/cuu/gogame/rect"
+//	"github.com/cuu/gogame/font"
 	"github.com/cuu/gogame/event"
-	
+
+	"github.com/cuu/gogame/transform"
 	"../easings"
 	
 )
@@ -101,11 +107,11 @@ func (self *PageSelector) Adjust(x,y,w,h,alpha int) {
 }
 
 func (self *PageSelector) GetOnShow() bool {
-	return self.Onshow
+	return self.OnShow
 }
 
 func (self *PageSelector) SetOnShow( onshow bool ) {
-	self.Onshow = onshow
+	self.OnShow = onshow
 }
 
 func (self *PageSelector) Draw() {
@@ -118,13 +124,13 @@ func (self *PageSelector) Draw() {
 		icon_x ,_ := icons[idx].Coord()
 		_,icon_y  := icons[iconidx].Coord()
 		
-		parent_x,parent_y := self.Parent.Coord()
+		parent_x,_ := self.Parent.Coord()
 		parent_w,parent_h := self.Parent.Size()
 		
 		x := icon_x + parent_x
 		y := icon_y // only use current icon's PosY
 		
-		rect_ = draw.MidRect(x,y, self.Width, self.Height, parent_w,parent_h)
+		rect_ := draw.MidRect(x,y, self.Width, self.Height, parent_w,parent_h)
 		if rect_.W <=0 || rect_.H <= 0 {
 			return
 		}
@@ -158,6 +164,12 @@ type PageInterface interface {
 	SetPsIndex( idx int)
 	GetPsIndex() int
 
+	SetIndex(idx int)
+
+	GetAlign() int
+	SetAlign(al int)
+	
+	
 	SetIconIndex(idx int)
 	GetIconIndex() int
 
@@ -167,6 +179,7 @@ type PageInterface interface {
 	UpdateIconNumbers()
 	GetIconNumbers() int
 
+	
 	SetOnShow(on_show bool)
 	GetOnShow() bool
 	
@@ -210,7 +223,7 @@ type Page struct {
 
 	Index int
 
-	Align string
+	Align int
 	
 	CanvasHWND *sdl.Surface
 	HWND       *sdl.Surface
@@ -301,14 +314,14 @@ func (self *Page) AdjustSLeftAlign() { // ## adjust coordinator and append the P
 		it.SetIndex(i)
 		it.Adjust(start_x+i*self.PageIconMargin+i*IconWidth, start_y, IconWidth-6,IconHeight-6,0)
 
-		old_surf := it.GetImageSurf()
+		old_surf := it.GetImgSurf()
 		
 		it_w,it_h := it.Size() //width height changed by Adjust above
-		it.SetImageSurf( transform.SmoothScale(old_surf,it_w,it_h) )
+		it.SetImgSurf( transform.SmoothScale(old_surf,it_w,it_h) )
 	}
 
 	ps := NewPageSelector()
-	ps.IconSurf = MyIconPool.GetImageSurf("blueselector")
+	ps.IconSurf = MyIconPool.GetImgSurf("blueselector")
 	ps.Parent = self
 	ps.Init(start_x,start_y,92,92,128)
 
@@ -341,9 +354,9 @@ func (self *Page) AdjustSAutoLeftAlign() { //  ## adjust coordinator and append
 		it.SetParent(self)
 		it.SetIndex(0)
 		it.Adjust(start_x,start_y, IconWidth-6,IconHeight-6,0)
-		old_surf := it.GetImageSurf()
+		old_surf := it.GetImgSurf()
 		it_w,it_h := it.Size()
-		it.SetImageSurf( transform.SmoothScale(old_surf, it_w,it_h))
+		it.SetImgSurf( transform.SmoothScale(old_surf, it_w,it_h))
 		
 	}else if self.IconNumbers == 2 {
 		start_x = (self.Width - self.PageIconMargin - self.IconNumbers*IconWidth) / 2 + IconWidth/2
@@ -354,9 +367,9 @@ func (self *Page) AdjustSAutoLeftAlign() { //  ## adjust coordinator and append
 			it.SetParent(self)
 			it.SetIndex(i)
 			it.Adjust( start_x+ i*self.PageIconMargin+i*IconWidth, start_y, IconWidth-6, IconHeight-6,0)
-			old_surf := it.GetImageSurf()
+			old_surf := it.GetImgSurf()
 			it_w,it_h := it.Size()
-			it.SetImageSurf( transform.SmoothScale( old_surf, it_w,it_h))
+			it.SetImgSurf( transform.SmoothScale( old_surf, it_w,it_h))
 			
 		}
 		
@@ -366,14 +379,14 @@ func (self *Page) AdjustSAutoLeftAlign() { //  ## adjust coordinator and append
 			it.SetParent(self)
 			it.SetIndex(i)
 			it.Adjust(start_x+i*self.PageIconMargin + i*IconWidth, start_y, IconWidth-6, IconHeight-6, 0)
-			old_surf := it.GetImageSurf()
+			old_surf := it.GetImgSurf()
 			it_w,it_h := it.Size()
-			it.SetImageSurf( transform.SmoothScale( old_surf, it_w,it_h))			
+			it.SetImgSurf( transform.SmoothScale( old_surf, it_w,it_h))			
 		}
 	}
 
 	ps := NewPageSelector()
-	ps.IconSurf = MyIconPool.GetImageSurf("blueselector")
+	ps.IconSurf = MyIconPool.GetImgSurf("blueselector")
 	ps.Parent = self
 	ps.Init(start_x,start_y,92,92,128)
 
@@ -425,7 +438,7 @@ func (self *Page) InitLeftAlign() {
 	}
 
 	ps := NewPageSelector()
-	ps.IconSurf = MyIconPool.GetImageSurf("blueselector")
+	ps.IconSurf = MyIconPool.GetImgSurf("blueselector")
 	ps.Parent = self
 	ps.Init(IconWidth/2,IconHeight/2,92,92,128)
 
@@ -448,14 +461,13 @@ func (self *Page) Adjust() { // default init way,
 		start_y = self.Height/2
 
 		for i:=0;i< self.IconNumbers; i++ {
-			it:=self.Icons[i]
-			it.SetParent(self)
-			it.SetIndex(i)
-			it.Adjust(start_x + i*IconWidth, start_y, IconWidth, IconHeight,0)
+			self.Icons[i].SetParent(self)
+			self.Icons[i].SetIndex(i)
+			self.Icons[i].Adjust(start_x + i*IconWidth, start_y, IconWidth, IconHeight,0)
 		}
 
 		ps := NewPageSelector()
-		ps.IconSurf = MyIconPool.GetImageSurf("blueselector")
+		ps.IconSurf = MyIconPool.GetImgSurf("blueselector")
 		ps.Parent = self
 		ps.Init(start_x,start_y, 92,92,128)
 		self.Ps = ps
@@ -472,7 +484,7 @@ func (self *Page) Adjust() { // default init way,
 			it.Adjust(start_x + i*self.PageIconMargin+i*IconWidth, start_y, IconWidth, IconHeight,0)
 		}
 		ps := NewPageSelector()
-		ps.IconSurf = MyIconPool.GetImageSurf("blueselector")
+		ps.IconSurf = MyIconPool.GetImgSurf("blueselector")
 		ps.Parent = self
 		ps.Init(start_x,start_y-self.SelectedIconTopOffset, 92,92,128)
 		self.Ps = ps
@@ -533,7 +545,7 @@ func (self *Page) Init() {
 
 	if self.IconNumbers > 0 {
 		ps := NewPageSelector()
-		ps.IconSurf = MyIconPool.GetImageSurf("blueselector")
+		ps.IconSurf = MyIconPool.GetImgSurf("blueselector")
 		ps.Parent = self
 		ps.Init(start_x,start_y, IconWidth+4, IconHeight+4, 128)
 		self.Ps = ps
@@ -578,7 +590,7 @@ func (self *Page) IconStepMoveData(icon_eh ,cuts int)  []int {  //  no Sine,No c
 		dff := cuts - len(all_pieces)
 		var diffa []int
 		for i:=0;i<dff;i++ {
-			diffa= diffa.append(0)
+			diffa= append(diffa,0)
 		}
 		
 		all_pieces = append(all_pieces, diffa...)
@@ -591,8 +603,8 @@ func (self *Page) EasingData(start,distance int) []int {
 	current_time := 0.0
 	start_posx   := 0.0
 	current_posx := start_posx
-	final_posx   := float(distance)
-	posx_init    := start
+	final_posx   := float64(distance)
+//	posx_init    := start
 	dur          := self.EasingDur
 	last_posx    := 0.0
 
@@ -617,7 +629,7 @@ func (self *Page) EasingData(start,distance int) []int {
 		c+=v
 	}
 	if c < int(final_posx - start_posx) {
-		all_last_posx = append(all_last_posx, int( final_posx - c ))
+		all_last_posx = append(all_last_posx, int( int(final_posx) - c ))
 	}
 
 	return all_last_posx	
@@ -628,7 +640,7 @@ func (self *Page) IconSmoothUp(icon_ew int) {
 	data := self.EasingData(self.PosX,icon_ew)
 	data2 := self.IconStepMoveData(self.SelectedIconTopOffset, len(data))
 
-	for i,v := range data {
+	for i,_ := range data {
 		self.ClearCanvas()
 		cur_icon_x,cur_icon_y := self.Icons[self.IconIndex].Coord()
 		self.Icons[self.IconIndex].NewCoord(cur_icon_x, cur_icon_y - data2[i] )
@@ -790,8 +802,9 @@ func (self *Page) IconClick() {
 func (self *Page) ReturnToUpLevelPage() {
 	pop_page := self.Screen.MyPageStack.Pop()
 	if pop_page != nil {
-		pop_page.Draw()
-		self.Screen.SetCurPage(pop_page)
+		page_ := pop_page.(PageInterface)
+		page_.Draw()
+		self.Screen.SetCurPage(page_)
 	}else {
 		if self.Screen.MyPageStack.Length() == 0 {
 			if len(self.Screen.Pages) > 0 {
@@ -810,7 +823,7 @@ func (self *Page) ClearCanvas() {
 }
 
 func (self *Page) AppendIcon( it interface{} ) {
-	self.Icons = append(self.Icons, it)
+	self.Icons = append(self.Icons, it.(IconItemInterface))
 }
 
 func (self *Page) GetIcons() []IconItemInterface {
@@ -957,3 +970,26 @@ func (self *Page) Size() (int,int) {
 func (self *Page) GetName() string {
 	return self.Name
 }
+
+func (self *Page) SetIndex(idx int) {
+	self.Index = idx
+}
+
+func (self *Page) SetAlign(al int) {
+	inthere := false
+	for _,v := range ALIGN {
+		if v == al {
+			inthere = true
+			break
+		}
+	}
+
+	if inthere {
+		self.Align = al
+	}
+}
+
+func (self *Page) GetAlign() int {
+	return self.Align
+}
+

+ 12 - 9
sysgo/UI/plugin.go

@@ -1,12 +1,13 @@
 package UI
 
 import (
-	"plugin"
+	"log"
+	goplugin "plugin"
 )
 var PluginPool = NewPluginPool()
 
-type PluginInterface {
-	Name() string
+type PluginInterface interface {
+	GetName() string
 	Init(screen *MainScreen)
 	Run(screen *MainScreen)
 }
@@ -15,7 +16,7 @@ type Plugin struct {
 	Name string // only ID for plugin
 }
 
-func (self *Plugin) Name() string {
+func (self *Plugin) GetName() string {
 	return self.Name
 }
 
@@ -35,20 +36,22 @@ func NewPluginPool() map[string]PluginInterface {
 }
 
 func PluginPoolRegister( pi PluginInterface ) bool {
-	name := pi.Name()
+	name := pi.GetName()
 	
 	if _,ok := PluginPool[name]; ok {
 		return false
 	}
 	
 	PluginPool[name] = pi
+	return true
+	
 }
 
-func LoadPlugin( pname string) (*plugin.Plugin,error) {
-	return plugin.Load(pname)
+func LoadPlugin( pname string) (*goplugin.Plugin,error) {
+	return goplugin.Open(pname)
 }
 
-func InitPlugin(p *plugin.Plugin, main_screen *MainScreen) {
+func InitPlugin(p *goplugin.Plugin, main_screen *MainScreen) {
 	symAPI,err := p.Lookup("APIOBJ")
 
 	if err!= nil {
@@ -66,7 +69,7 @@ func InitPlugin(p *plugin.Plugin, main_screen *MainScreen) {
 	pi.Init(main_screen)
 }
 
-func RunPlugin(p *plugin.Plugin, main_screen *MainScreen) {
+func RunPlugin(p *goplugin.Plugin, main_screen *MainScreen) {
 	symAPI,err := p.Lookup("APIOBJ")
 
 	if err!= nil {

+ 1 - 0
sysgo/UI/scroller.go

@@ -0,0 +1 @@
+package UI

+ 21 - 9
sysgo/UI/skin_manager.go

@@ -2,7 +2,11 @@ package UI
 
 
 import (
+	"fmt"
+	
+	"log"
 	"strings"
+	"strconv"
 	
 	"github.com/go-ini/ini"
 	
@@ -24,21 +28,26 @@ func NewSkinManager() *SkinManager {
 
 
 func (self *SkinManager) ConvertToRGB(hexstr string) *color.Color {
-	if len(hexstr) < 7 || hexstr[0] != '#' { // # 00 00 00 
+	if len(hexstr) < 7 || string(hexstr[0]) != "#" { // # 00 00 00
 		log.Fatalf("ConvertToRGB hex string format error %s", hexstr)
+		//fmt.Printf("ConvertToRGB hex string format error %s", hexstr)
 		return nil
 	}
 	
 	h := strings.TrimLeft(hexstr,"#")
 
-	r := strconv.ParseInt(hexstr[0:2], 16,0)
-	g := strconv.ParseInt(hexstr[2:4], 16,0)
-	b := strconv.ParseInt(hexstr[4:6], 16,0)
+	r,_ := strconv.ParseInt(h[0:2], 16,0)
+	g,_ := strconv.ParseInt(h[2:4], 16,0)
+	b,_ := strconv.ParseInt(h[4:6], 16,0)
 	
-	col := &color.Color{ r,g,b,255 }
+	col := &color.Color{ uint32(r),uint32(g),uint32(b),255 }
 	return col
 }
 
+func (self *SkinManager) ChangeSkin( skin_name string ) {
+	
+}
+
 func (self *SkinManager) Init() {
 	self.Colors = make(map[string]*color.Color)
 
@@ -52,11 +61,14 @@ func (self *SkinManager) Init() {
 	self.Colors["White"]  = &color.Color{255,255,255,255}
 
 
-	fname := "../skin/"+sysgo.SKIN+"/config.cfg"
-	
-	cfg, err := ini.Load( fname )
+	fname := "skin/"+sysgo.SKIN+"/config.cfg"
+
+	load_opts := ini.LoadOptions{
+		IgnoreInlineComment:true,
+	}
+	cfg, err := ini.LoadSources(load_opts, fname )
 	if err != nil {
-		fmt.Printf("Fail to read file: %v", err)
+		fmt.Printf("Fail to read file: %v\n", err)
 		return
 	}
 	

+ 27 - 17
sysgo/UI/title_bar.go

@@ -1,22 +1,31 @@
 package UI
 
 import (
+	"fmt"
+	"os"
 	"log"
 	"strconv"
 	"bufio"
 	"strings"
+	"time"
 	
 	"github.com/veandco/go-sdl2/sdl"
-//	"github.com/veandco/go-sdl2/ttf"
+	"github.com/veandco/go-sdl2/ttf"
 	
 	"github.com/cuu/gogame/surface"
+	"github.com/cuu/gogame/rect"
 	"github.com/cuu/gogame/font"
+	"github.com/cuu/gogame/draw"
 	
 	"github.com/itchyny/volume-go"
 	
 	"github.com/vjeantet/jodaTime"
+
+	"../DBUS"
 	
 	"../../sysgo"
+
+	
 )
 
 
@@ -53,7 +62,7 @@ func (self *TitleBarIconItem) Draw() {
 		
 		portion := rect.Rect(0,self.IconIndex*self.IconHeight,self.IconWidth,self.IconHeight)
 		
-		surface.Blit(self.Parent.GetCanvasHWND(),
+		surface.Blit(self.Parent.CanvasHWND,
 			self.ImgSurf,draw.MidRect(self.PosX + parent_x, self.PosY + parent_y,
 			self.Width,self.Height, Width, Height),&portion)
 	}
@@ -70,15 +79,15 @@ type TitleBar struct {
 	LOffset int
 	ROffset int
 	Icons map[string]IconItemInterface
-	IconWidth
-	IconHeight
-	BorderWidth
+	IconWidth int
+	IconHeight int 
+	BorderWidth int
 	CanvasHWND *sdl.Surface
 	HWND       *sdl.Surface
 	Title string
 	InLowBackLight int
 	SkinManager *SkinManager //set by MainScreen
-	DBusManager *DBusInterface
+	DBusManager DBUS.DBusInterface
 	
 	icon_base_path string /// SkinMap("gameshell/titlebar_icons/")
 
@@ -90,7 +99,6 @@ type TitleBar struct {
 func NewTitleBar() *TitleBar {
 	t := &TitleBar{}
 
-	
 	t.BorderWidth = 1
 
 	t.BarHeight = TitleBar_BarHeight
@@ -110,9 +118,11 @@ func NewTitleBar() *TitleBar {
 
 	t.TitleFont = Fonts["varela12"]
 	t.TimeFont  = Fonts["varela16"]
+	return t
+	
 }
 
-func (t *TitleBar) RoundRobinCheck {
+func (t *TitleBar) RoundRobinCheck() {
 	
 }
 
@@ -121,14 +131,14 @@ func (t *TitleBar) UpdateWifiStrength() {
 }
 
 func (t *TitleBar) GetWifiStrength(stren int) int {
-	segs := [][]int{ []int{-2,-1}, []int{0,25}, []int{25,50}, []int{50,75},int{75,100}}
+	segs := [][]int{ []int{-2,-1}, []int{0,25}, []int{25,50}, []int{50,75},[]int{75,100}}
 	stren_number :=  stren 
 	ge := 0
 	if stren_number == 0 {
 		return ge
 	}
 	
-	for i,v in range segs {
+	for i,v := range segs {
 		if stren_number >= v[0] && stren_number <= v[1] {
 			ge = i
 			break
@@ -150,7 +160,7 @@ func (self *TitleBar) SyncSoundVolume() {
 	snd_segs := [][]int{ []int{0,10}, []int{10,30}, []int{30,70},[]int{70,100} }
 	ge := 0
 
-	for i,v in range snd_segs {
+	for i,v := range snd_segs {
 		if vol >= v[0] && vol <= v[1] {
 			ge = i
 			break
@@ -178,7 +188,7 @@ func (self *TitleBar) CheckBatteryStat() {
 
 	defer file.Close()
 
-	bat_uevent := make([string]string)
+	bat_uevent := make(map[string]string)
 	
   scanner := bufio.NewScanner(file)
 	scanner.Split(bufio.ScanLines) 
@@ -195,14 +205,14 @@ func (self *TitleBar) CheckBatteryStat() {
 	cur_cap := 0
 	
 	if val, ok := bat_uevent["POWER_SUPPLY_CAPACITY"]; ok {
-		cur_cap = strings.Atoi(val)
+		cur_cap,_ = strconv.Atoi(val)
 	}else {
 		cur_cap = 0
 	}
 
 	cap_ge := 0
 
-	for i,v in range bat_segs {
+	for i,v := range bat_segs {
 		if cur_cap >= v[0] && cur_cap <= v[1] {
 			cap_ge = i
 			break
@@ -286,7 +296,7 @@ func (self *TitleBar) Init(main_screen *MainScreen) {
 	
 	round_corners.MyType = ICON_TYPES["STAT"]
 	round_corners.Parent = self
-	round_corners.ImgSurf = MyIconPool.GetImageSurf["roundcorners"]
+	round_corners.ImgSurf = MyIconPool.GetImgSurf("roundcorners")
 	round_corners.Adjust(0,0,10,10,0)
 	
 	self.Icons["round_corners"] = round_corners
@@ -320,12 +330,12 @@ func (self *TitleBar) Draw(title string) {
 	time_text_w,  time_text_h  := font.Size(self.TimeFont, cur_time)
 	title_text_w, title_text_h := font.Size(self.TitleFont, self.Title)
 
-	title_text_surf := font.Render(self.TitleFont, self.Title, true, self.SkinManager.GiveColor("Text"))
+	title_text_surf := font.Render(self.TitleFont, self.Title, true, self.SkinManager.GiveColor("Text"),nil)
 	
 	surface.Blit(self.CanvasHWND,title_text_surf, draw.MidRect(title_text_w/2+self.LOffset,title_text_h/2+(self.BarHeight-title_text_h)/2,title_text_w,title_text_h,Width,Height),nil)
 
 
-	time_text_surf := font.Render(self.TimeFont, cur_time,true,self.SkinManager.GiveColor("Text"))
+	time_text_surf := font.Render(self.TimeFont, cur_time,true,self.SkinManager.GiveColor("Text"),nil)
 	surface.Blit(self.CanvasHWND, time_text_surf, draw.MidRect(Width-time_text_w/2-self.ROffset, time_text_h/2+(self.BarHeight-time_text_h)/2, time_text_w,time_text_h,Width,Height),nil)
 
 	start_x := Width - time_text_w - self.ROffset - self.IconWidth*3 // close to the time_text

+ 8 - 4
sysgo/UI/untitled_icon.go

@@ -6,8 +6,11 @@ import (
 	"github.com/veandco/go-sdl2/sdl"
 	"github.com/veandco/go-sdl2/ttf"
 
+	"github.com/cuu/gogame/surface"
 	"github.com/cuu/gogame/draw"	
 	"github.com/cuu/gogame/color"
+	"github.com/cuu/gogame/image"
+	"github.com/cuu/gogame/font"
 )
 
 
@@ -17,7 +20,7 @@ type UntitledIcon struct {
 	PosY int
 	Width int
 	Height int
-	Words [2]string
+	Words []string
 	FontObj *ttf.Font
 	BG *sdl.Surface
 	Color *color.Color
@@ -29,18 +32,19 @@ func NewUntitledIcon() *UntitledIcon {
 	u := &UntitledIcon{}
 	u.Width = 80
 	u.Height = 80
-	u.Words = [2]string{"G","s"}
+	u.Words = []string{"G","s"}
 
 	u.FontObj = Fonts["varela40"]
 
 	u.Color = &color.Color{83,83,83,255}
 
 	u.BlankPng = SkinMap("gameshell/blank.png")
+	return u
 }
 
 func (self *UntitledIcon) Init() {
 	self.BG = image.Load(self.BlankPng)
-)
+}
 
 func (self *UntitledIcon) SetWords( TwoWords ...string) {
 	if len(TwoWords) == 1 {
@@ -59,7 +63,7 @@ func (self *UntitledIcon) Draw() {
 		w_ := self.Text.W
 		h_ := self.Text.H
 		
-		surface.Blit(self.BG,self.Text,draw.MidRect(self.Width/2, self.Height/2,w_,h_, self.Width, self.Height),nil)
+		surface.Blit(self.BG,self.Text,draw.MidRect(self.Width/2, self.Height/2, int(w_),int(h_), self.Width, self.Height),nil)
 	}
 }
 

+ 5 - 4
sysgo/UI/util_funcs.go

@@ -14,15 +14,16 @@ import (
 func SkinMap(orig_file_or_dir string) string {
 	DefaultSkin := "default"
 	ret := ""
+	skin_dir_prefix:= "skin/"
 	if strings.HasPrefix(orig_file_or_dir, "..") {
-		ret = strings.Replace(orig_file_or_dir,"..","../skin/"+sysgo.SKIN,-1)
+		ret = strings.Replace(orig_file_or_dir,"..",skin_dir_prefix + sysgo.SKIN,-1)
 		if FileExists(ret) == false {
-			ret = strings.Replace(orig_file_or_dir,"..", "../skin/"+DefaultSkin)
+			ret = strings.Replace(orig_file_or_dir,"..", skin_dir_prefix + DefaultSkin,-1)
 		}
 	}else {
-		ret = "../skin/"+sysgo.SKIN+"/sysgo/"+orig_file_or_dir
+		ret = skin_dir_prefix+sysgo.SKIN+"/sysgo/"+orig_file_or_dir
 		if FileExists(ret) == false {
-			ret = "../skin/"+DefaultSkin+"/sysgo/"+orig_file_or_dir
+			ret = skin_dir_prefix+DefaultSkin+"/sysgo/"+orig_file_or_dir
 		}
 	}
 

+ 0 - 7
sysgo/easings/README.md

@@ -1,7 +0,0 @@
-## easings [![GoDoc](https://godoc.org/github.com/gen2brain/raylib-go/easings?status.svg)](https://godoc.org/github.com/gen2brain/raylib-go/easings)
-
-Useful easing functions for values animation.
-
-A port of Robert Penner's [easing equations](http://robertpenner.com/easing/).
-
-![screenshot](https://goo.gl/crzRrH)

+ 0 - 0
sysgo/main.go


+ 1 - 1
sysgo/UI/plugins/HelloWorld/helloworld.go → sysgo/plugins/HelloWorld/helloworld.go

@@ -1,7 +1,7 @@
 package main
 
 import (
-	"../../../UI"
+	"../../UI"
 )
 
 type HelloWorldPage struct {