So I edited the Launchbox plugin for RL and put in a RegexReplace to look for the files with special characters as underscores. I only had it look for the ones windows complains about as invalid characters so it should be good enough. I would backup the whole plugin file just to be safe but here is the changed launchboxProcessExtraFiles function in the RL Launchbox plugin. It should pull in all the Launchbox media correctly. There's definitely a cleaner way of doing this, but today was my first time learning AutoHotKey so I was just trying to get it to work lol
launchboxProcessExtraFiles(list,label,AssetType,extensions){
Global gameInfo, romName
obj := {}
StringSplit, labelArray, label, |,
StringSplit, AssetTypeArray, AssetType, |,
Loop, Parse, list,|
{ currentLabel := A_Index
If !(labelArray%currentLabel% = "#disabled#"){
If (AssetTypeArray%currentLabel% = "game"){
;adding dbnamed assets
gameName:={}
gameName := RegexReplace(gameInfo["Name"].Value, "[\\/:\*\?<>\|]" , "_")
obj := BuildAssetsTable(A_loopfield . "\" . gameName . ".*",labelArray%currentLabel%,AssetTypeArray%currentLabel%,extensions, obj)
Loop, 9
obj := BuildAssetsTable(A_loopfield . "\" . gameName . "-0" . a_index . ".*",labelArray%currentLabel% . "-0" . a_index,AssetTypeArray%currentLabel%,extensions, obj)
if (parentDbName){
obj := BuildAssetsTable(A_loopfield . "\" . gameInfo["CloneOf"].Value . ".*","Parent " . labelArray%currentLabel%,AssetTypeArray%currentLabel%,extensions, obj)
Loop, 9
obj := BuildAssetsTable(A_loopfield . "\" . gameInfo["CloneOf"].Value . "-0" . a_index . ".*","Parent " . labelArray%currentLabel% . "-0" . a_index,AssetTypeArray%currentLabel%,extensions, obj)
}
;adding rom named assets
obj := BuildAssetsTable(A_loopfield . "\" . romName . ".*","Rom " . labelArray%currentLabel%,AssetTypeArray%currentLabel%,extensions, obj)
Loop, 9
obj := BuildAssetsTable(A_loopfield . "\" . romName . "-0" . a_index . ".*","Rom " . labelArray%currentLabel% . "-0" . a_index,AssetTypeArray%currentLabel%,extensions, obj)
} else { ;system assets
obj := BuildAssetsTable(A_loopfield . "\" . gameInfo["Platform"].Value . ".*",labelArray%currentLabel%,AssetTypeArray%currentLabel%,extensions, obj)
Loop, 9
obj := BuildAssetsTable(A_loopfield . "\" . gameInfo["Platform"].Value . "-0" . a_index . ".*",labelArray%currentLabel% . "-0" . a_index,AssetTypeArray%currentLabel%,extensions, obj)
}
}
}
Return obj
}