]> FriiDump Source - friidump.git/blobdiff - libfriidump/xbox_ref_bridge.c
Fix MSVC CMake SHA1 header resolution
[friidump.git] / libfriidump / xbox_ref_bridge.c
index 33e987c69c33fb1bcc4c35341b0f6b886e251ddf..25e317ab1b7a49b3882d550552e716d32bc83f88 100644 (file)
@@ -1,4 +1,5 @@
 #include "xbox_ref_bridge.h"
 #include "xbox_ref_bridge.h"
+#include "xbox_region.h"
 
 #include <string.h>
 
 
 #include <string.h>
 
@@ -797,7 +798,12 @@ static int xbox_ref_xgd1_layout_probe_core(HANDLE hDevice,
 }
 
 
 }
 
 
-static int xbox_ref_gdr8050l_dump_core(HANDLE hDevice, const char *device, const char *filename, char mode, BOOL ownsHandle, xbox_ref_dump_result *result)
+static int xbox_ref_gdr8050l_dump_core(HANDLE hDevice, const char *device,
+                                          const char *filename, char mode,
+                                          BOOL ownsHandle,
+                                          xbox_ref_cancel_func cancel,
+                                          void *cancel_data,
+                                          xbox_ref_dump_result *result)
 {
     char driveLetter;
     XboxGameInfo game;
 {
     char driveLetter;
     XboxGameInfo game;
@@ -918,6 +924,13 @@ static int xbox_ref_gdr8050l_dump_core(HANDLE hDevice, const char *device, const
             strncpy(result->media_id, mediaId, sizeof(result->media_id) - 1);
             result->media_id[sizeof(result->media_id) - 1] = '\0';
         }
             strncpy(result->media_id, mediaId, sizeof(result->media_id) - 1);
             result->media_id[sizeof(result->media_id) - 1] = '\0';
         }
+        if (game.Success) {
+            result->have_game_region = 1;
+            result->game_region = game.GameRegion;
+            xbox_region_format(game.GameRegion,
+                               result->region,
+                               sizeof(result->region));
+        }
     }
 
     if (game.Success) {
     }
 
     if (game.Success) {
@@ -972,7 +985,7 @@ static int xbox_ref_gdr8050l_dump_core(HANDLE hDevice, const char *device, const
     }
 
     printf("Starting dump with copied DumpXboxGameDisc() mode %c...\n", mode);
     }
 
     printf("Starting dump with copied DumpXboxGameDisc() mode %c...\n", mode);
-    ok = DumpXboxGameDisc(hDevice, finalFilename, mode, totalSectors, isDualLayerBool, FALSE, result);
+    ok = DumpXboxGameDisc(hDevice, finalFilename, mode, totalSectors, isDualLayerBool, FALSE, cancel, cancel_data, result);
 
 cleanup:
     if (volumeLocked)
 
 cleanup:
     if (volumeLocked)
@@ -990,7 +1003,7 @@ cleanup:
     } else if (ok) {
         printf("[XBOX-REF] Returning finalized output evidence to FriiDump's shared Redump verifier.\n");
     } else {
     } else if (ok) {
         printf("[XBOX-REF] Returning finalized output evidence to FriiDump's shared Redump verifier.\n");
     } else {
-        printf("[XBOX-REF] No completed output evidence is available for shared Redump verification.\n");
+        printf("[XBOX-REF] No completed full-output evidence is available for shared Redump verification.\n");
     }
     return ok ? 0 : 1;
 }
     }
     return ok ? 0 : 1;
 }
@@ -1037,9 +1050,14 @@ int xbox_ref_xgd1_layout_probe(const char *device,
                                             TRUE);
 }
 
                                             TRUE);
 }
 
-int xbox_ref_gdr8050l_dump_with_handle(void *native_handle, const char *device, const char *filename, char mode, xbox_ref_dump_result *result)
+int xbox_ref_gdr8050l_dump_with_handle(void *native_handle, const char *device,
+                                         const char *filename, char mode,
+                                         xbox_ref_cancel_func cancel,
+                                         void *cancel_data,
+                                         xbox_ref_dump_result *result)
 {
 {
-    return xbox_ref_gdr8050l_dump_core((HANDLE)native_handle, device, filename, mode, FALSE, result);
+    return xbox_ref_gdr8050l_dump_core((HANDLE)native_handle, device, filename,
+                                      mode, FALSE, cancel, cancel_data, result);
 }
 
 int xbox_ref_gdr8050l_dump(const char *device, const char *filename, char mode, xbox_ref_dump_result *result)
 }
 
 int xbox_ref_gdr8050l_dump(const char *device, const char *filename, char mode, xbox_ref_dump_result *result)
@@ -1063,7 +1081,7 @@ int xbox_ref_gdr8050l_dump(const char *device, const char *filename, char mode,
         return 1;
     }
 
         return 1;
     }
 
-    return xbox_ref_gdr8050l_dump_core(hDevice, device, filename, mode, TRUE, result);
+    return xbox_ref_gdr8050l_dump_core(hDevice, device, filename, mode, TRUE, NULL, NULL, result);
 }
 #else
 int xbox_ref_xgd1_layout_probe_with_handle(void *native_handle,
 }
 #else
 int xbox_ref_xgd1_layout_probe_with_handle(void *native_handle,
@@ -1084,9 +1102,16 @@ int xbox_ref_xgd1_layout_probe(const char *device,
     return 1;
 }
 
     return 1;
 }
 
-int xbox_ref_gdr8050l_dump_with_handle(void *native_handle, const char *device, const char *filename, char mode, xbox_ref_dump_result *result)
+int xbox_ref_gdr8050l_dump_with_handle(void *native_handle, const char *device,
+                                         const char *filename, char mode,
+                                         xbox_ref_cancel_func cancel,
+                                         void *cancel_data,
+                                         xbox_ref_dump_result *result)
 {
 {
-    (void)native_handle; (void)device; (void)filename; (void)mode; xbox_ref_dump_result_init(result); return 1;
+    (void)native_handle; (void)device; (void)filename; (void)mode;
+    (void)cancel; (void)cancel_data;
+    xbox_ref_dump_result_init(result);
+    return 1;
 }
 
 int xbox_ref_gdr8050l_dump(const char *device, const char *filename, char mode, xbox_ref_dump_result *result)
 }
 
 int xbox_ref_gdr8050l_dump(const char *device, const char *filename, char mode, xbox_ref_dump_result *result)