Merge pull request #739 from WallK/feat/godot-bios

Full BIOS check functionality, temp file management
This commit is contained in:
XargonWan 2024-03-25 14:44:05 +01:00 committed by GitHub
commit b1ba8c96b2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
29 changed files with 223 additions and 68 deletions

View file

@ -50,8 +50,12 @@ incompatible_presets_reference_list="$emuconfigs/defaults/retrodeck/reference_li
pretty_system_names_reference_list="$emuconfigs/defaults/retrodeck/reference_lists/pretty_system_names.cfg" # An internal translation list for turning internal names (eg. gbc) to "pretty" names (Nintendo GameBoy Color)
# Godot data transfer temp files
godot_bios_files_checked="/var/config/retrodeck/godot/godot_bios_files_checked.tmp"
# Check if XDG_RUNTIME_DIR is set
if [ -n "$XDG_RUNTIME_DIR" ]; then
godot_bios_files_checked="$XDG_RUNTIME_DIR/godot_temp/godot_bios_files_checked.tmp"
else
godot_bios_files_checked="/var/config/retrodeck/godot_temp/godot_bios_files_checked.tmp"
fi
# Config files for emulators with single config files

View file

@ -25,7 +25,11 @@ prepare_component() {
create_dir "$rdhome/$(basename $current_setting_value)"
fi
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
create_dir "/var/config/retrodeck/godot"
if [ -n "$XDG_RUNTIME_DIR" ]; then
create_dir "$XDG_RUNTIME_DIR/godot_temp"
else
create_dir "/var/config/retrodeck/godot_temp"
fi
dir_prep "$logs_folder" "$rd_logs_folder"
fi
if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move

View file

@ -0,0 +1,44 @@
extends Control
var file := FileAccess
var bios_tempfile : String
var BIOS_COLUMNS_BASIC := ["BIOS File Name", "System", "Found", "Hash Match", "Description"]
var BIOS_COLUMNS_EXPERT := ["BIOS File Name", "System", "Found", "Hash Match", "Description", "Subdirectory", "Hash"]
@onready var bios_type:int = get_tree().current_scene.bios_type
func _ready():
#Check if XDG_RUNTIME_DIR is set and choose temp file location
if OS.has_environment("XDG_RUNTIME_DIR"):
bios_tempfile = OS.get_environment("XDG_RUNTIME_DIR") + "/godot_temp/godot_bios_files_checked.tmp"
else:
bios_tempfile = "/var/config/retrodeck/godot_temp/godot_bios_files_checked.tmp"
var table := $Table
if bios_type == 0: #Basic BIOS button pressed
table.columns = BIOS_COLUMNS_BASIC.size()
for i in BIOS_COLUMNS_BASIC.size():
table.set_column_title(i, BIOS_COLUMNS_BASIC[i])
else: #Assume advanced BIOS button pressed
table.columns = BIOS_COLUMNS_EXPERT.size()
for i in BIOS_COLUMNS_EXPERT.size():
table.set_column_title(i, BIOS_COLUMNS_EXPERT[i])
var root = table.create_item()
table.hide_root = true
if bios_type == 0: #Basic BIOS button pressed
OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files", "basic"])
else: #Assume advanced BIOS button pressed
OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files"])
if file.file_exists(bios_tempfile): #File to be removed after script is done
var bios_list := file.open(bios_tempfile, FileAccess.READ)
var bios_line := []
while ! bios_list.eof_reached():
bios_line = bios_list.get_csv_line("^")
var table_line: TreeItem = table.create_item(root)
for i in bios_line.size():
table_line.set_text(i, bios_line[i])
if table_line.get_index() % 2 == 1:
table_line.set_custom_bg_color(i,Color(1, 1, 1, 0.1),false)

View file

@ -0,0 +1,38 @@
[gd_scene load_steps=2 format=3 uid="uid://bihon3xtx45y7"]
[ext_resource type="Script" path="res://components/bios_check/bios_check.gd" id="1_qrkee"]
[node name="PopupContent" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_qrkee")
[node name="RichTextLabel" type="RichTextLabel" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
text = "This is a list of problematic BIOS?
Very multiline text
Why do we use it?
PS3 BIOS IS VERY BAD
I'm not sure what else?"
[node name="Table" type="Tree" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
columns = 5
column_titles_visible = true
select_mode = 1

View file

@ -2,18 +2,15 @@ extends Control
var content = null
# Called when the node enters the scene tree for the first time.
func _ready():
if (content != null):
$Panel/VBoxContainer/ContentContainer.add_child(content)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
$Panel/MarginContainer/VBoxContainer/ContentContainer/MarginContainer.add_child(content)
func set_content(new_content):
content = load(new_content).instantiate()
func set_title(new_title):
$Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/Label.text = new_title
func _on_back_pressed():
queue_free()

View file

@ -1,6 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://ixg127wfv7wo"]
[gd_scene load_steps=3 format=3 uid="uid://ixg127wfv7wo"]
[ext_resource type="Script" path="res://components/popup.gd" id="1_ck1vn"]
[ext_resource type="Theme" uid="uid://bq8dsxeo34sl" path="res://res/pixel_ui_theme/RetroDECKTheme.tres" id="1_oqd8s"]
[node name="Popup" type="Control"]
layout_mode = 3
@ -9,6 +10,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_oqd8s")
script = ExtResource("1_ck1vn")
[node name="Panel" type="Panel" parent="."]
@ -19,7 +21,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Panel"]
[node name="MarginContainer" type="MarginContainer" parent="Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -27,13 +29,43 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Button" type="Button" parent="Panel/VBoxContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 0
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 0
theme_override_constants/margin_right = 0
theme_override_constants/margin_bottom = 0
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 23
text = "This is the label"
[node name="BackButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 10
text = "Back"
[node name="ContentContainer" type="Panel" parent="Panel/VBoxContainer"]
[node name="ContentContainer" type="Panel" parent="Panel/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[connection signal="pressed" from="Panel/VBoxContainer/Button" to="." method="_on_back_pressed"]
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/ContentContainer"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 6
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 6
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/BackButton" to="." method="_on_back_pressed"]

View file

@ -0,0 +1,15 @@
[gd_scene format=3 uid="uid://c5uvguthjpfjq"]
[node name="PopupContentTest" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Button" type="Button" parent="."]
layout_mode = 1
offset_right = 12.0
offset_bottom = 8.0
text = "Test"

0
tools/configurator/icon.svg.import Executable file → Normal file
View file

View file

@ -1,5 +1,7 @@
extends Control
var bios_type:int
func _ready():
var children = findElements(self, "Control")
for n: Control in children: #iterate the children
@ -8,8 +10,7 @@ func _ready():
if (n.is_class("BaseButton") and n.disabled == true): #if button-like control and disabled
n.self_modulate.a = 0.5 #make it half transparent
combine_tkeys()
func _input(event):
if event.is_action_pressed("quit"):
_exit()
@ -24,11 +25,23 @@ func findElements(node: Node, className: String, result: Array = []) -> Array:
func _on_control_mouse_entered(control: Node):
control.grab_focus()
func load_popup(title:String, content_path:String):
var popup = load("res://components/popup.tscn").instantiate() as Control
popup.set_title(title)
popup.set_content(content_path)
$Background.add_child(popup)
func _on_quickresume_advanced_pressed():
var popup = load("res://components/popup.tscn").instantiate() as Control
popup.set_content("res://popup_content_test.tscn")
$Background.add_child(popup)
load_popup("Quick Resume Advanced", "res://components/popups_content/popup_content_test.tscn")
func _on_bios_button_pressed():
bios_type = 0
load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn")
func _on_bios_button_expert_pressed():
bios_type = 1
load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn")
func _on_exit_button_pressed():

View file

@ -91,6 +91,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_obpq7")
metadata/bios_type = 0
[node name="Background" type="Panel" parent="."]
layout_mode = 1
@ -117,9 +118,11 @@ grow_vertical = 2
[node name="TabContainer" type="TabContainer" parent="Background/MarginContainer"]
layout_mode = 2
tab_alignment = 1
current_tab = 3
script = ExtResource("3_id6l4")
[node name="TK_SYSTEM" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
visible = false
layout_mode = 2
theme_override_constants/margin_right = 240
@ -346,7 +349,6 @@ button_pressed = true
text = "TK_HOTKEYSOUND"
[node name="TK_TOOLS" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
visible = false
layout_mode = 2
theme_override_constants/margin_right = 240
@ -392,6 +394,10 @@ text = "TK_3DSDECRYPT"
layout_mode = 2
text = "TK_BIOS"
[node name="bios_button_expert" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
layout_mode = 2
text = "TK_BIOS_EXPERT"
[node name="tools_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer"]
layout_mode = 2
@ -959,5 +965,7 @@ animation = &"speech"
frame_progress = 0.664627
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer/quick_resume_adv_button" to="." method="_on_quickresume_advanced_pressed"]
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button" to="." method="_on_bios_button_pressed"]
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button_expert" to="." method="_on_bios_button_expert_pressed"]
[connection signal="pressed" from="Background/exit_button" to="." method="_on_exit_button_pressed"]
[connection signal="item_selected" from="Background/locale_option" to="." method="_on_locale_selected"]

0
tools/configurator/res/Rekku/base.png.import Executable file → Normal file
View file

0
tools/configurator/res/Rekku/blink1.png.import Executable file → Normal file
View file

0
tools/configurator/res/Rekku/blink2.png.import Executable file → Normal file
View file

0
tools/configurator/res/Rekku/eyes-open.png.import Executable file → Normal file
View file

0
tools/configurator/res/Rekku/mouth-A.png.import Executable file → Normal file
View file

0
tools/configurator/res/Rekku/mouth-O.png.import Executable file → Normal file
View file

0
tools/configurator/res/Rekku/mouth-base.png.import Executable file → Normal file
View file

0
tools/configurator/res/configurator.mp3.import Executable file → Normal file
View file

View file

View file

File diff suppressed because one or more lines are too long

0
tools/configurator/res/pixel_ui_theme/m5x7.ttf.import Executable file → Normal file
View file