diff --git a/.gitignore b/.gitignore index b66269d0..89aa5abe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ downloaded-artifacts */artifacts +archive_*/*/artifacts .tmpfunc *.log _work diff --git a/archive_later/ecwolf/component_functions.sh b/archive_later/ecwolf/component_functions.sh index 3c0c309d..b44f947f 100755 --- a/archive_later/ecwolf/component_functions.sh +++ b/archive_later/ecwolf/component_functions.sh @@ -10,5 +10,30 @@ ecwolf_config_path="$XDG_CONFIG_HOME/ecwolf" ecwolf_saves_path="$XDG_DATA_HOME/ecwolf/saves" ecwolf_roms_path="$roms_path/wolf" +_prepare_component::ecwolf() { + # Setting component name and path based on the directory name + component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" + component_config="/app/retrodeck/components/$component_name/rd_config" + ecwolf_rd_cfg="$XDG_CONFIG_HOME/$component_name/ecwolf_rd.cfg" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Preparing $component_name" + log i "----------------------" + + dir_prep "$saves_path/ecwolf" "$ecwolf_saves_path" + rm -vrf "$ecwolf_rd_cfg" + cp -v "$component_config/ecwolf_rd.cfg" "$ecwolf_rd_cfg" + + fi + + if [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves + log i "----------------------" + log i "Post-moving $component_name" + log i "----------------------" + + dir_prep "$saves_path/ecwolf" "$ecwolf_saves_path" + + fi +} diff --git a/archive_later/ecwolf/component_manifest.json b/archive_later/ecwolf/component_manifest.json index 5a0d73e4..451038ee 100644 --- a/archive_later/ecwolf/component_manifest.json +++ b/archive_later/ecwolf/component_manifest.json @@ -8,6 +8,115 @@ "description": "ECWolf is a Wolfenstein 3D engine based of Wolf4SDL", "component_type": "Engine", "system": "wolf", - "system_friendly_name": "ECWolf" + "system_friendly_name": "ECWolf", + "es_de_config": { + "es_find_rules": { + "emulators": [ + { + "name": "ECWOLF", + "description": "ECWolf is a Wolfenstein 3D engine based of Wolf4SDL", + "rules": [ + { + "type": "staticpath", + "entries": [ + "%COMPONENT_PATH%/component_launcher.sh" + ] + } + ] + } + ] + }, + "es_systems": [ + { + "name": "wolf", + "fullname": "Wolfenstein 3D", + "path": "%ROMPATH%/wolf", + "extension": ".wolf", + "commands": [ + { + "label": "ECWolf (Standalone)", + "command": "%EMULATOR_ECWOLF% %ROM%", + "priority": 50 + } + ], + "platform": "wolf", + "theme": "wolf" + } + ] + }, + "bios": [ + { + "filename": "AUDIOHED.WL6", + "md5": "a41af25a2f193e7d4afbcc4301b3d1ce", + "system": "wolf3d", + "description": "Audio header file that indexes sound data", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "AUDIOT.WL6", + "md5": "2385b488b18f8721633e5b2bdf054853", + "system": "wolf3d", + "description": "Contains digitized sound effects and AdLib audio data", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "CONFIG.WL6", + "md5": "aa75133df873b660d2058425ca8539b3", + "system": "wolf3d", + "description": "Stores game configuration settings", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "GAMEMAPS.WL6", + "md5": "a4e73706e100dc0cadfb02d23de46481", + "system": "wolf3d", + "description": "Contains all level map data", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "MAPHEAD.WL6", + "md5": "b8d2a78bc7c50da7ec9ab1d94f7975e1", + "system": "wolf3d", + "description": "Map header information for level lookup", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "VGADICT.WL6", + "md5": "dec8939cff5a4ec27ae7b43e8f52ec28", + "system": "wolf3d", + "description": "VGA graphics dictionary for decompression", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "VGAGRAPH.WL6", + "md5": "8b40b5b785f898e229bf1c2f2e3ee003", + "system": "wolf3d", + "description": "Compressed graphics data (sprites, UI, textures)", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "VGAHEAD.WL6", + "md5": "8e75e3ffb842ed3d08abe6ffea97b231", + "system": "wolf3d", + "description": "Header for VGA graphics data", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + }, + { + "filename": "VSAP.WL6", + "md5": [ "b8ff4997461bafa5ef2a94c11f9de001", "a6d901dfb455dfac96db5e4705837cdb" ], + "system": "wolf3d", + "description": "Main asset container (sprites, walls, sounds)", + "required": "required", + "paths": "$roms_path/wolf/*.wolf" + } + ] } } \ No newline at end of file diff --git a/archive_later/ecwolf/component_prepare.sh b/archive_later/ecwolf/component_prepare.sh deleted file mode 100755 index 27463f0a..00000000 --- a/archive_later/ecwolf/component_prepare.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Setting component name and path based on the directory name -component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" -component_config="/app/retrodeck/components/$component_name/rd_config" -ecwolf_rd_cfg="$XDG_CONFIG_HOME/$component_name/ecwolf_rd.cfg" - -if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Preparing $component_name" - log i "----------------------" - - dir_prep "$saves_path/ecwolf" "$ecwolf_saves_path" - rm -vrf "$ecwolf_rd_cfg" - cp -v "$component_config/ecwolf_rd.cfg" "$ecwolf_rd_cfg" - -fi - -if [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves - log i "----------------------" - log i "Post-moving $component_name" - log i "----------------------" - - dir_prep "$saves_path/ecwolf" "$ecwolf_saves_path" - -fi diff --git a/archive_later/raze/component_functions.sh b/archive_later/raze/component_functions.sh index cc1f786e..980f4fb6 100755 --- a/archive_later/raze/component_functions.sh +++ b/archive_later/raze/component_functions.sh @@ -1 +1,23 @@ -#!/bin/bash \ No newline at end of file +#!/bin/bash + +_prepare_component::raze() { + # Setting component name and path based on the directory name + component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" + component_config="/app/retrodeck/components/$component_name/rd_config" + + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Preparing $component_name" + log i "----------------------" + + create_dir "$XDG_CONFIG_HOME/raze" + create_dir "$XDG_DATA_HOME/raze/audio/soundfonts" + create_dir "$bios_path/raze" + + cp -fvr "$component_config/raze.ini" "$XDG_CONFIG_HOME/raze" + + sed -i "s#RETRODECKHOMEDIR#${rd_home_path}#g" "$XDG_CONFIG_HOME/raze/raze.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON + sed -i "s#RETRODECKROMSDIR#${roms_path}#g" "$XDG_CONFIG_HOME/raze/raze.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON + sed -i "s#RETRODECKSAVESDIR#${saves_path}#g" "$XDG_CONFIG_HOME/raze/raze.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON + fi +} \ No newline at end of file diff --git a/archive_later/raze/component_launcher.sh b/archive_later/raze/component_launcher.sh index ecefbd06..35b91ee8 100755 --- a/archive_later/raze/component_launcher.sh +++ b/archive_later/raze/component_launcher.sh @@ -5,7 +5,7 @@ component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)" # Set LD_LIBRARY_PATH -export LD_LIBRARY_PATH="$component_path/lib:$ffmpeg_path/25.08:$rd_shared_libs:$rd_shared_libs/org.kde.Platform/6.10/:$rd_shared_libs/org.gnome.Platform/49/:$rd_shared_libs/org.freedesktop.Platform/25.08/:${DEFAULT_LD_LIBRARY_PATH}" +export LD_LIBRARY_PATH="$component_path/lib:$ffmpeg_path/25.08:$rd_shared_libs:$rd_shared_libs/org.kde.Platform/6.10/:$rd_shared_libs/org.gnome.Platform/49/:$rd_shared_libs/org.freedesktop.Platform/25.08/:$rd_shared_libs/org.freedesktop.Platform/24.08/:${DEFAULT_LD_LIBRARY_PATH}" export QT_PLUGIN_PATH="$rd_shared_libs/org.kde.Platform/6.10/plugins/:${QT_PLUGIN_PATH}" export QT_QPA_PLATFORM_PLUGIN_PATH="$rd_shared_libs/org.kde.Platform/6.10/plugins/platforms/:${QT_QPA_PLATFORM_PLUGIN_PATH}" @@ -15,4 +15,4 @@ log d "QT plugin path is: $QT_PLUGIN_PATH" log d "QT QPA PLATFORM plugin path is: $QT_QPA_PLATFORM_PLUGIN_PATH" # Launch -exec "$component_path/bin/raze" "$@" +exec "$component_path/bin/raze" +fluid_patchset "$component_path/raze/soundfonts/raze.sf2" "$@" diff --git a/archive_later/raze/component_prepare.sh b/archive_later/raze/component_prepare.sh deleted file mode 100755 index c19fa260..00000000 --- a/archive_later/raze/component_prepare.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -# Setting component name and path based on the directory name -component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" -component_config="/app/retrodeck/components/$component_name/rd_config" - -if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Preparing $component_name" - log i "----------------------" - - create_dir "$XDG_CONFIG_HOME/raze" - create_dir "$XDG_DATA_HOME/raze/audio/soundfonts" - create_dir "$bios_path/raze" - - cp -fvr "$component_config/raze.ini" "$XDG_CONFIG_HOME/raze" - - sed -i "s#RETRODECKHOMEDIR#${rd_home_path}#g" "$XDG_CONFIG_HOME/raze/raze.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON - sed -i "s#RETRODECKROMSDIR#${roms_path}#g" "$XDG_CONFIG_HOME/raze/raze.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON - sed -i "s#RETRODECKSAVESDIR#${saves_path}#g" "$XDG_CONFIG_HOME/raze/raze.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON -fi diff --git a/archive_later/raze/component_recipe.json b/archive_later/raze/component_recipe.json index 659cc954..f01a3526 100755 --- a/archive_later/raze/component_recipe.json +++ b/archive_later/raze/component_recipe.json @@ -52,11 +52,6 @@ "source": "$REPO_ROOT/$COMPONENT_NAME/component_recipe.json", "dest": "$COMPONENT_ARTIFACT_ROOT" }, - { - "type": "file", - "source": "$REPO_ROOT/$COMPONENT_NAME/component_prepare.sh", - "dest": "$COMPONENT_ARTIFACT_ROOT" - }, { "type": "file", "source": "$REPO_ROOT/$COMPONENT_NAME/component_update.sh", diff --git a/archive_later/raze/rd_config/raze.ini b/archive_later/raze/rd_config/raze.ini new file mode 100644 index 00000000..deceb2ed --- /dev/null +++ b/archive_later/raze/rd_config/raze.ini @@ -0,0 +1,473 @@ +# This file was generated by Raze 1.11.0 +# These are the directories to automatically search for game data. +# Each directory should be on a separate line, preceded by Path= +[GameSearch.Directories] +Path=$roms_path/raze +Path=$XDG_CONFIG_HOME/raze +Path=$PROGDIR +Path=/app/retrodeck/components/raze + +# These are the directories to search for add-ons added with the -file +# command line parameter, if they cannot be found with the path +# as-is. Layout is the same as for GameSearch.Directories +[FileSearch.Directories] +Path=$roms_path/raze +Path=$XDG_CONFIG_HOME/raze +Path=$PROGDIR + +# These are the directories to search for soundfonts that let listed in the menu. +# Layout is the same as for GameSearch.Directories +[SoundfontSearch.Directories] +Path=$roms_path/raze/soundfonts +Path=$XDG_CONFIG_HOME/raze/soundfonts +Path=$PROGDIR/soundfonts +Path=/app/retrodeck/components/raze/soundfonts + +[GlobalSettings] +I_FriendlyWindowTitle=1 +adl_chips_count=6 +adl_emulator_id=0 +adl_fullpan=true +adl_run_at_pcm_rate=false +adl_volume_model=0 +autoloadbrightmaps=true +autoloadlights=true +autoloadwidescreen=true +autosavecount=4 +autosavenum=0 +cl_capfps=false +cl_defaultconfiguration=0 +cl_gender=0 +cl_hudinterpolation=true +cl_interpolate=true +cl_loadingscreens=true +cl_noexitscreens=false +cl_nostartscreens=false +cl_noturnscaling=false +cl_showweapon=1 +cl_slopetilting=false +cl_syncinput=false +cl_viewtilting=0 +cl_viewtiltscale=1 +cl_weaponsway=true +con_4bitansi=false +con_buffersize=-1 +con_ctrl_d= +con_notifylines=4 +con_printansi=true +defaultiwad= +developer=0 +disableautoload=false +disableautosave=0 +duke_menufont=-1 +fluid_chorus=false +fluid_chorus_depth=8 +fluid_chorus_level=1.2 +fluid_chorus_speed=0.3 +fluid_chorus_type=0 +fluid_chorus_voices=3 +fluid_gain=0.5 +fluid_interp=1 +fluid_lib= +fluid_patchset=raze +fluid_reverb=false +fluid_reverb_damping=0.23 +fluid_reverb_level=0.57 +fluid_reverb_roomsize=0.61 +fluid_reverb_width=0.76 +fluid_samplerate=0 +fluid_threads=1 +fluid_voices=128 +gl_debug=false +gl_debug_breakpoint=false +gl_debug_level=0 +gl_dither_bpc=0 +gl_es=false +gl_finishbeforeswap=false +gl_fxaa=0 +gl_lens=false +gl_lens_chromatic=1.12 +gl_lens_k=-0.12 +gl_lens_kcube=0.1 +gl_light_shadowmap=false +gl_mask_sprite_threshold=0.5 +gl_mask_threshold=0.5 +gl_mirror_envmap=true +gl_multisample=1 +gl_no_skyclear=false +gl_pipeline_depth=0 +gl_plane_reflection=true +gl_satformula=1 +gl_seamless=false +gl_shadowmap_filter=1 +gl_shadowmap_quality=512 +gl_ssao=0 +gl_ssao_portals=1 +gl_ssao_strength=0.7 +gl_texture_filter=4 +gl_texture_filter_anisotropic=8 +gl_texture_hqresize_maxinputsize=512 +gl_texture_hqresize_mt_height=4 +gl_texture_hqresize_mt_width=16 +gl_texture_hqresize_multithread=true +gl_texture_hqresize_targets=15 +gl_texture_hqresizemode=0 +gl_texture_hqresizemult=1 +gme_stereodepth=0 +gus_memsize=0 +gus_patchdir= +hud_stats=0 +hw_hightile=true +hw_models=false +hw_shadeinterpolate=true +hw_useindexedcolortextures=false +i_discordrpc=false +i_pauseinbackground=true +i_soundinbackground=false +in_mousemode=true +inter_subtitles=false +invertmouse=false +invertmousex=false +language=auto +longsavemessages=false +m_blockcontrollers=false +m_cleanscale=false +m_forward=1 +m_pitch=1 +m_sensitivity_x=2 +m_sensitivity_y=2 +m_show_backbutton=0 +m_showinputgrid=0 +m_side=1 +m_use_mouse=2 +m_yaw=1 +map_point_coordinates=true +midi_config= +midi_dmxgus=false +midi_voices=32 +mod_autochip=false +mod_autochip_scan_threshold=12 +mod_autochip_size_force=100 +mod_autochip_size_scan=500 +mod_dumb_mastervolume=1 +mod_interp=2 +mod_preferred_player=0 +mod_samplerate=0 +mod_volramp=2 +mouse_capturemode=1 +mus_calcgain=true +mus_enabled=true +mus_extendedlookup=false +mus_usereplaygain=false +opl_core=0 +opl_fullpan=true +opl_numchips=2 +opn_chips_count=8 +opn_emulator_id=0 +opn_fullpan=true +opn_run_at_pcm_rate=false +os_isanyof=true +png_gamma=0 +png_level=5 +queryiwad=true +quicksavecount=4 +quicksavenum=0 +r_ambientlight=1 +r_drawweapon=1 +r_fov=90 +r_mirror_recursions=4 +r_multithreaded=1 +r_precache=true +r_shadows=true +r_skipmats=false +r_spriteadjust=2 +r_ticstability=true +save_dir= +save_sort_order=0 +saveloadconfirmation=true +savestatistics=0 +secret_notify=false +showendoom=1 +silentmouseaimtoggle=false +snd_aldevice=Default +snd_alresampler=Default +snd_ambience=true +snd_backend=openal +snd_buffersize=0 +snd_channels=128 +snd_efx=true +snd_enabled=true +snd_extendedlookup=false +snd_hrtf=-1 +snd_mastervolume=1 +snd_mididevice=-5 +snd_midiprecache=false +snd_musicvolume=0.5 +snd_reverb=true +snd_samplerate=0 +snd_sfxvolume=1 +snd_streambuffersize=64 +snd_tryformats=true +snd_waterreverb=true +statfile=razestat.txt +strictdecorate=false +timidity_channel_pressure=false +timidity_chorus=0 +timidity_config=raze +timidity_drum_effect=false +timidity_drum_power=1 +timidity_key_adjust=0 +timidity_lpf_def=1 +timidity_min_sustain_time=5000 +timidity_modulation_envelope=true +timidity_modulation_wheel=true +timidity_overlap_voice_allow=true +timidity_pan_delay=false +timidity_portamento=true +timidity_reverb=0 +timidity_reverb_level=0 +timidity_surround_chorus=false +timidity_temper_control=true +timidity_tempo_adjust=1 +use_joystick=false +use_mouse=true +vid_activeinbackground=false +vid_adapter=0 +vid_aspect=0 +vid_brightness=0 +vid_contrast=1 +vid_cropaspect=false +vid_defheight=480 +vid_defwidth=640 +vid_dontdowait=false +vid_fullscreen=true +vid_gamma=1 +vid_hdr=false +vid_maxfps=500 +vid_preferbackend=1 +vid_saturation=1 +vid_scale_customheight=400 +vid_scale_custompixelaspect=1 +vid_scale_customwidth=640 +vid_scale_linear=false +vid_scalefactor=1 +vid_scalemode=0 +vid_sdl_render_driver= +vid_vsync=false +vk_debug=false +vk_debug_callstack=true +vk_device=0 +vk_exclusivefullscreen=false +vk_hdr=false +vk_raytrace=false +vr_hunits_per_meter=41 +vr_ipd=0.062 +vr_mode=0 +vr_screendist=0.8 +vr_swap_eyes=false +warningstoerrors=false +wildmidi_config= +wildmidi_enhanced_resampling=true +wildmidi_reverb=false +win_h=-1 +win_maximized=false +win_w=-1 +win_x=-1 +win_y=-1 +wt_commentary=false +wt_forcemidi=false +wt_forcevoc=false +xbrz_centerdirectionbias=4 +xbrz_colorformat=0 +xbrz_dominantdirectionthreshold=3.6 +xbrz_equalcolortolerance=30 +xbrz_luminanceweight=1 +xbrz_steepdirectionthreshold=2.2 + +[GlobalSettings.Unknown] + +[.Player] +cl_autoaim=1 +cl_weaponswitch=3 +combatmacro0= +combatmacro1= +combatmacro2= +combatmacro3= +combatmacro4= +combatmacro5= +combatmacro6= +combatmacro7= +combatmacro8= +combatmacro9= +playercolor=0 +playergender=0 +playername=RetroDECK +rtsname= + +[.ConsoleVariables] +adl_bank=14 +adl_custom_bank= +adl_use_custom_bank=false +adult_lockout=false +althud_flashing=true +am_followplayer=true +am_linealpha=1 +am_linethickness=1 +am_nameontop=false +am_onesidedcolor=aa aa aa +am_ovonesidedcolor=aa aa aa +am_ovplayercolor=aa aa aa +am_ovtwosidedcolor=aa aa aa +am_playercolor=aa aa aa +am_rotate=true +am_showlabel=false +am_showtime=0 +am_showtotaltime=0 +am_textfont=false +am_twosidedcolor=aa aa aa +chat_substitution=false +cl_automsg=false +cl_autorun=true +cl_autosave=true +cl_autosavedeletion=true +cl_bloodoldweapbalance=false +cl_bloodqavinterp=true +cl_bloodvanillabobbing=true +cl_bloodvanillaenemies=false +cl_bloodvanillaexplosions=false +cl_bloodvanillarun=true +cl_bloodweapinterp=false +cl_clampedpitch=true +cl_crosshair=true +cl_dukepitchmode=7 +cl_exjumprebound=false +cl_exvertpanscale=8 +cl_exviewbobheight=5 +cl_exviewbobspeed=4 +cl_idplayers=true +cl_maxautosaves=8 +cl_maxdecalamount=1024 +cl_nomeleeblur=false +cl_obituaries=true +cl_resumesavegame=true +cl_rrvehicletilting=false +cl_runmode=false +cl_showmagamt=false +cl_sointerpolation=true +cl_swsmoothsway=true +cl_viewbob=1 +cl_viewhbob=true +cl_viewvbob=true +classic_scaling_factor=1 +classic_scaling_pixelaspect=1.2 +con_alpha=0.75 +con_centernotify=false +con_notablist=false +con_notify_advanced=false +con_notifyscale=1 +con_notifytime=3 +con_pulsetext=false +con_scale=0 +crosshair=0 +crosshaircolor=ff 00 00 +crosshairgrow=false +crosshairhealth=2 +crosshairscale=0.5 +gl_aalines=false +gl_bloom=false +gl_bloom_amount=1.4 +gl_exposure_base=0.35 +gl_exposure_min=0.35 +gl_exposure_scale=1.3 +gl_exposure_speed=0.05 +gl_fogmode=2 +gl_menu_blur=-1 +gl_paltonemap_powtable=2 +gl_paltonemap_reverselookup=true +gl_precache=false +gl_scale_viewport=true +gl_tonemap=0 +hud_althudscale=0 +hud_ammo_order=0 +hud_ammo_red=25 +hud_ammo_yellow=50 +hud_armor_green=100 +hud_armor_red=25 +hud_armor_yellow=50 +hud_aspectscale=true +hud_berserk_health=true +hud_bgstretch=false +hud_ctf_vanilla=false +hud_health_green=100 +hud_health_red=25 +hud_health_yellow=50 +hud_messages=true +hud_position=false +hud_powerupduration=true +hud_scalefactor=1 +hud_showammo=2 +hud_showangles=false +hud_showkills=true +hud_showmapname=true +hud_showscore=false +hud_showsecrets=true +hud_showstats=false +hud_showtime=0 +hud_showtimestat=0 +hud_showweapons=true +hud_size=5 +hud_statscale=0.5 +hud_textfont=false +hud_timecolor=5 +hudcolor_ltim=8 +hudcolor_statnames=6 +hudcolor_stats=3 +hudcolor_time=6 +hudcolor_titl=10 +hudcolor_ttim=5 +hudcolor_xyco=3 +hw_2dmip=true +hw_lightmode=0 +hw_weaponlight=8 +m_quickexit=false +menu_sounds=true +msg=0 +msg0color=11 +msg1color=5 +msg2color=2 +msg3color=3 +msg4color=3 +msgmidcolor=11 +msgmidcolor2=4 +mus_redbook=true +nocheats=false +opn_custom_bank= +opn_use_custom_bank=false +r_drawfuzz=1 +r_voxels=true +safe_spritelist=false +screenshot_dir= +screenshotname= +snd_menuvolume=0.6 +snd_pitched=false +snd_speech=1 +sw_darts=false +sw_ninjahack=false +sw_nocenterview=false +transsouls=0.75 +ui_screenborder_classic_scaling=true +uiscale=0 +usermapfolder= +vid_allowtrueultrawide=1 + +[.VideoSettings] + +[.UnknownConsoleVariables] + +[.ConsoleAliases] + +[.Bindings] + +[.DoubleBindings] + +[.AutomapBindings] diff --git a/archive_later/uzdoom/component_launcher.sh b/archive_later/uzdoom/component_launcher.sh index b673b499..5c79e7a5 100755 --- a/archive_later/uzdoom/component_launcher.sh +++ b/archive_later/uzdoom/component_launcher.sh @@ -7,7 +7,7 @@ component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)" export LD_LIBRARY_PATH="$rd_shared_libs:${DEFAULT_LD_LIBRARY_PATH}" export QT_PLUGIN_PATH="${QT_PLUGIN_PATH}" export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH}" -export DOOMWADDIR="$component_path/share/games/doom" +export DOOMWADDIR="$component_path/share/games/uzdoom" log i "RetroDECK is now launching $component_name" log d "Library path is: $LD_LIBRARY_PATH" diff --git a/archive_later/uzdoom/component_recipe.json b/archive_later/uzdoom/component_recipe.json index 82acb1f1..2f61de5f 100644 --- a/archive_later/uzdoom/component_recipe.json +++ b/archive_later/uzdoom/component_recipe.json @@ -1,24 +1,25 @@ { "uzdoom": [ { - "source_url": "https://github.com/UZDoom/UZDoom/releases/download/{VERSION}/Linux-UZDoom-*.AppImage", - "source_type": "github_release", + "source_url": "org.zdoom.UZDoom", + "source_type": "flatpak_id", "version": "$UZDOOM_DESIRED_VERSION", - "extraction_type": "appimage", + "dest": "user", + "extraction_type": "flatpak", "assets": [ { "type": "dir", - "source": "usr/bin", + "source": "bin", "dest": "bin" }, { "type": "dir", - "source": "usr/share/doc/uzdoom/licenses", + "source": "share/licenses", "dest": "doc" }, { "type": "dir", - "source": "usr/share/games/uzdoom/", + "source": "share/games/uzdoom/", "dest": "share/games/uzdoom/" }, { @@ -70,7 +71,7 @@ "libs": [ { "library": "libzmusic.so.1", - "source": "usr/lib/x86_64-linux-gnu/", + "source": "lib", "dest": "shared-libs" } ] diff --git a/archive_later/uzdoom/component_update.sh b/archive_later/uzdoom/component_update.sh index ddb42abd..333a50ca 100755 --- a/archive_later/uzdoom/component_update.sh +++ b/archive_later/uzdoom/component_update.sh @@ -5,8 +5,8 @@ ######################################################################### if [[ $(check_version_is_older_than "$version_being_updated" "0.10.1b") == "true" ]]; then - if [ -d "$storage_path/uzdoom"]; then - move "$storage_path/uzdoom" "$storage_path/doom/uzdoom" + if [ -d "$storage_path/gzdoom"]; then + move "$storage_path/gzdoom" "$storage_path/doom/uzdoom" fi if [ -d "$storage_path/gzdoom"]; then move "$storage_path/gzdoom" "$storage_path/doom/uzdoom" diff --git a/archive_later/uzdoom/rd_assets/uzdoom.sh b/archive_later/uzdoom/rd_assets/uzdoom.sh index e3aaab4c..7ea67035 100755 --- a/archive_later/uzdoom/rd_assets/uzdoom.sh +++ b/archive_later/uzdoom/rd_assets/uzdoom.sh @@ -1,16 +1,42 @@ #!/bin/bash +log d "RetroDECK Doom Parser booting..." + # Source the global.sh script if not already sourced if [ -z "${GLOBAL_SOURCED+x}" ]; then source /app/libexec/global.sh fi # Define the IWAD files list -IWAD_FILES=("DOOM1.WAD" "DOOM.WAD" "DOOM2.WAD" "DOOM2F.WAD" "DOOM64.WAD" "TNT.WAD" - "PLUTONIA.WAD" "HERETIC1.WAD" "HERETIC.WAD" "HEXEN.WAD" "HEXDD.WAD" - "STRIFE0.WAD" "STRIFE1.WAD" "VOICES.WAD" "CHEX.WAD" - "CHEX3.WAD" "HACX.WAD" "freedoom1.wad" "freedoom2.wad" "freedm.wad" - "doom_complete.pk3" +IWAD_FILES=( + "ACTION2.WAD" # Action Doom 2: Urban Brawl + "BLASPHEM.WAD" # Blasphemer + "CHEX.WAD" # Chex Quest + "CHEX3.WAD" # Chex Quest 3 + "DELAWEARE.WAD" # Delaweare + "DOOM.WAD" # Doom shareware + "DOOM1.WAD" # Doom + "DOOM2.WAD" # Doom II: Hell on Earth + "DOOM2F.WAD" # Doom II French + "DOOM64.WAD" # Doom 64 + "DOOM_COMPLETE.PK3" # WadSmoosh merged Doom + "FREEDOOM1.WAD" # Freedoom Phase 1 + "FREEDOOM2.WAD" # Freedoom Phase 2 + "FREEDM.WAD" # Freedoom Deathmatch + "HEXDD.WAD" # Hexen: Deathkings of the Dark Citadel + "HEXEN.WAD" # Hexen: Beyond Heretic + "HACX.WAD" # HACX + "HARM1.WAD" # Harmony + "HERETIC.WAD" # Heretic: Shadow of the Serpent Riders + "HERETIC1.WAD" # Heretic shareware + "PLUTONIA.WAD" # Plutonia Experiment + "ROTWB.WAD" # Rise Of The Wool Ball + "SQUARE1.PK3" # The Adventures of Square + "STRIFE0.WAD" # Strife shareware + "STRIFE1.WAD" # Strife + "TNT.WAD" # TNT: Evilution + "VOICES.WAD" # Strife Voices + "WADSMOOSH+.IPK3" # WadSmoosh+ merged Doom ) # Get the directory where this script is located @@ -23,7 +49,7 @@ uzdoom="$SCRIPT_DIR/uzdoom" is_iwad() { local file="$1" local lowercase_file="$(basename "${file,,}")" - + # Loop through the list of IWAD files for iwad in "${IWAD_FILES[@]}"; do # Check if the lowercase version of the IWAD file matches the input file @@ -40,56 +66,125 @@ search_file_recursive() { local file="$1" local directory="$2" local found_file="" - - # Check if the file exists in the current directory + + # We'll try several places so this works when the DOOM folder is symlinked + # 1) $directory/$file + # 2) recursive find under $directory + # 3) script-level doom dir (relative to assets) recursive + + # 0. normalize file name for case-insensitive search + local lowercase_file="$(echo "$file" | tr '[:upper:]' '[:lower:]')" + + # Resolve directory symlinks (if the DOOM folder itself was symlinked) + if [[ -L "$directory" ]]; then + directory=$(readlink -f "$directory") + fi + + # Try direct path first if [[ -e "$directory/$file" ]]; then # Resolve symlinks if the file is a symlink found_file=$(readlink -f "$directory/$file") - else - # Search recursively - local lowercase_file="$(echo "$file" | tr '[:upper:]' '[:lower:]')" - found_file=$(find "$directory" -type f -iname "$lowercase_file" | head -n 1) - if [[ -n "$found_file" ]]; then - # Resolve symlinks if the file is a symlink - found_file=$(readlink -f "$found_file") + echo "$found_file" + return + fi + + # Try recursive find under provided directory (case-insensitive) + # Use the basename for recursive search, so entries listed as "subdir/name.wad" + # will still match files located below the given directory. + local base="$(basename "$file")" + # Collect all case-insensitive matches, prefer one whose basename equals requested basename exactly + mapfile -t matches < <(find "$directory" -type f -iname "$base" 2>/dev/null || true) + if [[ ${#matches[@]} -gt 0 ]]; then + # First try to find a case-sensitive basename match + found_file="" + for m in "${matches[@]}"; do + if [[ "$(basename "$m")" == "$base" ]]; then + found_file="$m" + break + fi + done + # Fallback to the first match if no exact-case match found + if [[ -z "$found_file" ]]; then + found_file="${matches[0]}" fi + found_file=$(readlink -f "$found_file") + echo "$found_file" + return fi echo "$found_file" } # Main script -log d "RetroDECK uzdoom wrapper init" +log d "RetroDECK UZDOOM wrapper init" -# Check if the filename contains a single quote -if [[ "$1" == *"'"* ]]; then - log e "Invalid filename: \"$1\" contains a single quote.\nPlease rename the file in a proper way before continuing." - rd_zenity --error --no-wrap \ +# Check non-option arguments for a filename containing a single quote +for a in "$@"; do + case "$a" in + +*|-) continue ;; + esac + if [[ "$a" == *"'"* ]]; then + log e "DOOM Invalid filename: \"$a\" contains a single quote.\nPlease rename the file in a proper way before continuing." + rd_zenity --error --no-wrap \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK" \ --text="Invalid filename\n\n\"$1\" contains a single quote.\nPlease rename the file properly before continuing." exit 1 + fi +done + +# Determine if one of the arguments is a .doom file (we might be launched with +options first) +doom_file="" +for a in "$@"; do + # ignore option entries that start with '+' or '-' + case "$a" in + +*|-) continue ;; + esac + if [[ "${a##*.}" == "doom" ]]; then + doom_file="$a" + break + fi +done + +# If a .doom file wasn't found yet, try to detect any provided candidate file arg (first non-option) +target_arg="" +for a in "$@"; do + case "$a" in + +*|-) continue ;; + esac + target_arg="$a" +done + +# If no target was found, fall back to $1 to preserve legacy behavior +if [[ -z "$target_arg" ]]; then + target_arg="$1" fi -# Check if $1 is not a .doom file -if [[ "${1##*.}" != "doom" ]]; then +# If the chosen target arg doesn't have the .doom extension, we take the non-doom path +log d "Selected target: '$target_arg' (doom_file='$doom_file')" + +if [[ "${doom_file}" == "" && "${target_arg##*.}" != "doom" ]]; then # Check if the file is in the IWAD list - if [[ $(is_iwad "$1") == "true" ]]; then - command="$uzdoom -config /var/config/uzdoom/uzdoom.ini -iwad \"$1\"" + if [[ $(is_iwad "$target_arg") == "true" ]]; then + log d "iWAD found" + command="$uzdoom -config /var/config/uzdoom/uzdoom.ini -iwad \"$target_arg\"" else - command="$uzdoom -config /var/config/uzdoom/uzdoom.ini -file \"$1\"" + log d "WAD, IPK3 or PK3 file found" + command="$uzdoom -config /var/config/uzdoom/uzdoom.ini -file \"$target_arg\"" fi # Log the command - log i "Loading: \"$1\"" + log i "Loading: \"$target_arg\"" log i "Executing command \"$command\"" # Execute the command with double quotes eval "$command" -# Check if $1 is a .doom file -else - doom_file="$1" - log i "Found a doom file: \"$1\"" +# Check if a .doom file was found in arguments +elif [[ -n "$doom_file" || "${target_arg##*.}" == "doom" ]]; then + if [[ -z "$doom_file" ]]; then + doom_file="$target_arg" + fi + log i "Found a doom file: \"$doom_file\"" # Check if the .doom file exists if [[ ! -e "$doom_file" ]]; then @@ -105,13 +200,26 @@ else command="$uzdoom -config /var/config/uzdoom/uzdoom.ini" while IFS= read -r line; do + # Trim leading/trailing whitespace + line="$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" + + # Ignore empty lines and comment lines + if [[ -z "$line" || "${line:0:1}" == "#" ]]; then + continue + fi + + # Remove surrounding quotes if present + if [[ "$line" =~ ^\".*\"$ ]]; then + line="${line:1:${#line}-2}" + fi + # Check if the line contains a single quote if [[ "$line" == *"'"* ]]; then - log e "Invalid filename: A file contained in \"$1\" contains a single quote" + log e "Invalid filename: A file contained in \"$doom_file\" contains a single quote" rd_zenity --error --no-wrap \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK" \ - --text="Invalid filename\n\n\"$1\" contains a single quote.\nPlease rename the file properly before continuing in the .doom file." + --title "RetroDECK: DOOM - Warning: .doom file error" \ + --text="Invalid filename\n\n\"$1\" contains a single quote.\nPlease rename the file properly in the .doom file before continuing." exit 1 fi @@ -120,22 +228,36 @@ else # If the file is not found, exit with an error if [[ -z "$found_file" ]]; then - log "[ERROR] File not found: $line" + log "[ERROR] File not found in \"$line\"" rd_zenity --error --no-wrap \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK" \ - --text="File \"$line\" not found. Quitting." + --title "RetroDECK: DOOM - Warning: Not found" \ + --text="File \"$line\" not found. Quitting." exit 1 fi - # Check if the file is an IWAD - if [[ $(is_iwad "$found_file") == "true" ]]; then - command+=" -iwad \"$found_file\"" - log i "Appending the param \"-iwad $found_file\"" - else - command+=" -file \"$found_file\"" - log i "Appending the param \"-file $found_file\"" - fi + # Add param depending on file extension (.ini -> -cfg, iwads -> -iwad, others -> -file) + ext="${found_file##*.}" + ext_lc="${ext,,}" + case "$ext_lc" in + ini) + command+=" -cfg \"$found_file\"" + log i "Appending the param \"-cfg $found_file\"" + ;; + wad|pk3|ipk3) + if [[ $(is_iwad "$found_file") == "true" ]]; then + command+=" -iwad \"$found_file\"" + log i "Appending the param \"-iwad $found_file\"" + else + command+=" -file \"$found_file\"" + log i "Appending the param \"-file $found_file\"" + fi + ;; + *) + command+=" -file \"$found_file\"" + log i "Appending the param \"-file $found_file\"" + ;; + esac done < "$doom_file" # Log the command diff --git a/automation-tools/alchemist/desired_versions.sh b/automation-tools/alchemist/desired_versions.sh index 913d8a9a..a75610c5 100644 --- a/automation-tools/alchemist/desired_versions.sh +++ b/automation-tools/alchemist/desired_versions.sh @@ -108,8 +108,8 @@ export DESIRED_QT5_RUNTIME_VERSION="5.15-25.08" # Link: https://flathub.org/en/apps/org.mamedev.MAME # ------------------------------------------------------------------------------ # MAIN (Stable) -# Version: 0.286 - export MAME_DESIRED_VERSION="a5f7ddbc14ffd38bd9bc09f60c73204cf9e64dd361666f0e59b3247eb2c23395" +# Version: 0.287 + export MAME_DESIRED_VERSION="3dbe7b7f802da3b0c1628d604bee9925d67174a5efb7e4ae2235266ce2946739" # COOKER (Override) # export MAME_DESIRED_VERSION="latest" @@ -147,8 +147,8 @@ export DESIRED_QT5_RUNTIME_VERSION="5.15-25.08" # Link: https://flathub.org/en/apps/net.rpcs3.RPCS3 # ------------------------------------------------------------------------------ # MAIN (Stable) -# Version: 0.0.40-190 - export RPCS3_DESIRED_VERSION="bbfc8350f2e6e6e2eda3157f264486717ee68fe6f9d238d6ab46901d00c2d958" +# Version: 0.0.40-191 + export RPCS3_DESIRED_VERSION="0713512d383febae08dae58b6cc10eeb974d993e80765d94cabe9ee3e83416ca" # COOKER (Override) # export RPCS3_DESIRED_VERSION="latest" @@ -160,8 +160,8 @@ export DESIRED_QT5_RUNTIME_VERSION="5.15-25.08" # Link: https://flathub.org/en/apps/rs.ruffle.Ruffle # ------------------------------------------------------------------------------ # MAIN (Stable) -# Version: 0.2.0-nightly.2026.3.12 - export RUFFLE_DESIRED_VERSION="48a57600d24643d7267fe391177882376130654b588abafe1d31437f896b1488" +# Version: 0.2.0-nightly.2026.4.9 + export RUFFLE_DESIRED_VERSION="2b9a6e77082e1f8c97d0d39f71a2a2443ea08cc198139b068ec9c765d820378e" # COOKER (Override) # export RUFFLE_DESIRED_VERSION="latest" @@ -244,7 +244,7 @@ export DESIRED_QT5_RUNTIME_VERSION="5.15-25.08" # Link: https://gitlab.com/solarus-games/solarus/-/releases/ # ------------------------------------------------------------------------------ # MAIN (Stable) - export SOLARUS_DESIRED_VERSION="v2.0.3" + export SOLARUS_DESIRED_VERSION="v2.0.4" # COOKER (Override) # export SOLARUS_DESIRED_VERSION="latest" @@ -344,7 +344,7 @@ export DESIRED_QT5_RUNTIME_VERSION="5.15-25.08" # Link: https://github.com/RetroDECK/Vita3K-bin/releases # ------------------------------------------------------------------------------ # MAIN (Stable) - export VITA3K_DESIRED_VERSION="3936" + export VITA3K_DESIRED_VERSION="3949" # COOKER (Override) # export VITA3K_DESIRED_VERSION="latest" diff --git a/automation-tools/alchemist/lib/libs.sh b/automation-tools/alchemist/lib/libs.sh index f39e988a..f6c80a58 100644 --- a/automation-tools/alchemist/lib/libs.sh +++ b/automation-tools/alchemist/lib/libs.sh @@ -99,6 +99,11 @@ gather_lib() { fi if [[ ! -e "$EXTRACTED_PATH/$source/$name" ]]; then log error "Library $name not found at defined source $EXTRACTED_PATH/$source/$name" + local library_basename="${name%%.*}" + if [[ $(find "$EXTRACTED_PATH/$source" -iname "$library_basename"* ) ]]; then + log info "However, a file with a matching name was found. The source may need to be adjusted in the recipe file." + log info $(find "$EXTRACTED_PATH/$source" -iname "$library_basename"*) + fi return 1 fi final_source="$EXTRACTED_PATH/$source/$lib_basename" diff --git a/retroarch/component_manifest.json b/retroarch/component_manifest.json index 1de26783..ee32ae6b 100644 --- a/retroarch/component_manifest.json +++ b/retroarch/component_manifest.json @@ -3819,14 +3819,14 @@ }, { "filename": "scummvm.zip", - "md5": "a17e0e0150155400d8cced329563d9c8", + "md5": "368bdb1816a02640f873310faa9dedf7", "system": "scummvm", "description": "SCUMMVM Assets", "required": "Yes, for RetroArch ScummVM Core" }, { "filename": "cpc464.rom", - "md5": "a17e0e0150155400d8cced329563d9c8", + "md5": "a993f85b88ac4350cf4d41554e87fe4f", "system": "amstradcpc", "description": "Amstrad CPC 464 BIOS" }, diff --git a/rpcs3/component_functions.sh b/rpcs3/component_functions.sh index 8b55734f..f65eb7e9 100755 --- a/rpcs3/component_functions.sh +++ b/rpcs3/component_functions.sh @@ -8,7 +8,7 @@ rpcs3_gui_current_settings="$XDG_CONFIG_HOME/rpcs3/GuiConfigs/CurrentSettings.in rpcs3_input_active_profiles="$XDG_CONFIG_HOME/rpcs3/input_configs/active_profiles.yml" rpcs3_input_Default="$XDG_CONFIG_HOME/rpcs3/input_configs/global/Default.yml" rpcs3_component_dir="$rd_components/rpcs3" -rpcs3_firmware="http://dus01.ps3.update.playstation.net/update/ps3/image/us/2025_0305_c179ad173bbc08b55431d30947725a4b/PS3UPDAT.PUP" +rpcs3_firmware="http://dus01.ps3.update.playstation.net/update/ps3/image/us/2026_0318_a2b60b6ac1d2e49e230144345616927c/PS3UPDAT.PUP" update_rpcs3_firmware() { if [[ $(check_network_connectivity) == "true" ]]; then diff --git a/solarus/component_recipe.json b/solarus/component_recipe.json index e9af471b..409d9b93 100755 --- a/solarus/component_recipe.json +++ b/solarus/component_recipe.json @@ -83,7 +83,7 @@ "dest": "shared-libs" }, { - "library": "libsolarus.so.2.0.3", + "library": "libsolarus.so.2.0.4", "source": "usr/lib", "dest": "shared-libs" },