@@ -141,7 +141,7 @@ func _find_video_path(path: String) -> String:
141
141
142
142
func _load_media (media : RetroHubGameMediaData , game_data : RetroHubGameData , types : Type ):
143
143
var media_path := RetroHubConfig .get_gamemedia_dir ().path_join (game_data .system_path )
144
- var game_path := game_data . path . get_file (). get_basename ( )
144
+ var game_path := _get_game_path ( game_data )
145
145
146
146
var path : String
147
147
# Logo
@@ -252,14 +252,25 @@ func retrieve_media_data(game_data: RetroHubGameData, types: Type = Type.ALL) ->
252
252
# In the future there needs to be a way to recompute it, in case the user manually
253
253
# changes files.
254
254
var media_path := RetroHubConfig .get_gamemedia_dir ().path_join (game_data .system_path )
255
- var game_path := game_data . path . get_file (). get_basename ( )
255
+ var game_path := _get_game_path ( game_data )
256
256
var blurhash_path := media_path .path_join ("blurhash" ).path_join (game_path + ".json" )
257
257
if not FileAccess .file_exists (blurhash_path ):
258
258
compute_blurhash (game_data )
259
259
260
260
_load_media (game_media_data , game_data , types )
261
261
return game_media_data
262
262
263
+ func _get_game_path (game_data : RetroHubGameData ) -> String :
264
+ if game_data .system .name == "ps3" :
265
+ # PS3 games use PARAM.SFO as the game identifier. We need to use the folder name instead.
266
+ var path := game_data .path .get_base_dir ()
267
+ while not path .is_empty ():
268
+ if not path .ends_with ("PS3_GAME" ):
269
+ return path .get_file ()
270
+ path = path .get_base_dir ()
271
+
272
+ return game_data .path .get_file ().get_basename ()
273
+
263
274
func retrieve_media_data_async (game_data : RetroHubGameData , types : int = Type .ALL , priority : bool = false ):
264
275
if not game_data .has_media :
265
276
push_error ("Error: game %s has no media" % game_data .name )
@@ -287,7 +298,7 @@ func retrieve_media_blurhash(game_data: RetroHubGameData, types: Type = Type.ALL
287
298
var game_media_data := RetroHubGameMediaData .new ()
288
299
289
300
var media_path := RetroHubConfig .get_gamemedia_dir ().path_join (game_data .system_path )
290
- var game_path := game_data . path . get_file (). get_basename ( )
301
+ var game_path := _get_game_path ( game_data )
291
302
292
303
var blurhashes := _get_blurhashes (media_path .path_join ("blurhash" ).path_join (game_path + ".json" ))
293
304
@@ -367,7 +378,7 @@ func compute_blurhash(game_data: RetroHubGameData) -> void:
367
378
print ("\t " , key , ": " , blurhash )
368
379
369
380
var media_path := RetroHubConfig .get_gamemedia_dir ().path_join (game_data .system_path )
370
- var game_path := game_data . path . get_file (). get_basename ( )
381
+ var game_path := _get_game_path ( game_data )
371
382
var file_path := media_path .path_join ("blurhash" ).path_join (game_path + ".json" )
372
383
FileUtils .ensure_path (file_path )
373
384
JSONUtils .save_json_file (json_data , file_path )
0 commit comments