Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/hakchi2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2018-02-14 00:22:16 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2018-02-14 00:22:16 +0300
commit6dfed02838c04e499e287dcc32c15e655664283d (patch)
tree26774f200eeb1af3af38a45e4207c198560b04fe
parent1923b2d55a0266c945364764df4e1d97b402c4d9 (diff)
Many changes, updated to madmonkey's hakchi, zImage support, USB host support
-rw-r--r--Apps/NesMiniApplication.cs19
-rw-r--r--DesktopEntries/CLV-P-HAAAJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAACJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAADJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAEJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAHJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAMJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAANJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAPJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAQJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAARJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAASJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAUJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAWJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HAAXJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABBJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABCJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABLJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABMJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABNJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABQJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABRJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HABVJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACAJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACBJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACCJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACEJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACHJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACJJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACLJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-HACPJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAAE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAACE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAADE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAEE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAFE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAHE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAANE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAPE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAQE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAARE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAASE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAATE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAUE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAVE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAWE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAXE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NAAZE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABBE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABCE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABJE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABKE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABME.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABNE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABQE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABRE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABVE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NABXE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NACBE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NACDE.desktop4
-rw-r--r--DesktopEntries/CLV-P-NACHE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAAE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAABE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAEE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAFE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAHE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAJE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAKE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAALE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAQE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SAAXE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SABCE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SABDE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SABHE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SABQE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SABRE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SABTE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SACBE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SACCE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SADGE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SADJE.desktop4
-rw-r--r--DesktopEntries/CLV-P-SADKE.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAAAJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAABJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAAEJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAAFJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAAGJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAAHJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAALJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VAAQJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VABBJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VABCJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VABDJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VABQJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VABRJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VABTJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VACCJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VACDJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VADFJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VADGJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VADJJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VADKJ.desktop4
-rw-r--r--DesktopEntries/CLV-P-VADZJ.desktop4
-rw-r--r--FtpServer/NesMiniFileSystemHandler.cs19
-rw-r--r--MainForm.Designer.cs6
-rw-r--r--MainForm.cs19
-rw-r--r--MainForm.resx243
-rw-r--r--Properties/Resources.resx3
-rw-r--r--WorkerForm.cs243
-rw-r--r--data/zImagebin2498208 -> 2623832 bytes
-rw-r--r--hakchi_gui.csproj24
-rw-r--r--mods/hmods/core-modules.hmodbin98949 -> 0 bytes
-rw-r--r--mods/hmods/modules-3.4.112.madmonkey.hmodbin0 -> 99046 bytes
-rw-r--r--mods/hmods/ntfs-3g.hmodbin0 -> 434156 bytes
-rwxr-xr-xmods/mod_hakchi/bin/busyboxbin1109128 -> 1427376 bytes
-rw-r--r--mods/mod_hakchi/etc/filesystems37
-rw-r--r--mods/mod_hakchi/hakchi/config9
-rw-r--r--mods/mod_hakchi/hakchi/init5
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/chmenu27
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/hsqs3
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.fbbin0 -> 4342 bytes
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.pngbin0 -> 5728 bytes
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines4
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions195
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup2
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb195
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config5
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo1
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb25
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware9
-rw-r--r--mods/mod_hakchi/hakchi/script/transfer3
-rw-r--r--tools/cygpopt-0.dllbin0 -> 22528 bytes
-rw-r--r--tools/rsync.exebin0 -> 334336 bytes
-rw-r--r--tools/xz.exebin0 -> 219136 bytes
134 files changed, 859 insertions, 645 deletions
diff --git a/Apps/NesMiniApplication.cs b/Apps/NesMiniApplication.cs
index ceeb9f62..3b6a7ad5 100644
--- a/Apps/NesMiniApplication.cs
+++ b/Apps/NesMiniApplication.cs
@@ -7,6 +7,7 @@ using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
+using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms;
@@ -23,6 +24,7 @@ namespace com.clusterrr.hakchi_gui
public static bool? NeedPatch;
public static bool? Need3rdPartyEmulator;
public static bool? NeedAutoDownloadCover;
+ const int MaxCompressSize = 10 * 1024;
public static string GamesDirectory
{
@@ -196,7 +198,8 @@ namespace com.clusterrr.hakchi_gui
Image cover = DefaultCover;
byte saveCount = 0;
uint crc32 = CRC32(rawRomData);
- string outputFileName = Regex.Replace(System.IO.Path.GetFileName(inputFileName), @"[^A-Za-z0-9()!\[\]\.\-]", "_").Trim();
+ string outputFileName = Regex.Replace(System.IO.Path.GetFileName(inputFileName), @" ?\(.*?\)| ?\[.*?\]", "").Trim();
+ outputFileName = Regex.Replace(outputFileName, @"[^A-Za-z0-9!\.]+", "_");
// Trying to determine file type
var appinfo = AppTypeCollection.GetAppByExtension(extension);
@@ -586,7 +589,7 @@ namespace com.clusterrr.hakchi_gui
return FromDirectory(targetDir);
}
- internal static long DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
+ internal static long DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs, string[] skipFiles = null)
{
long size = 0;
// Get the subdirectories for the specified directory.
@@ -610,6 +613,8 @@ namespace com.clusterrr.hakchi_gui
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
+ if (skipFiles != null && skipFiles.Contains(file.Name))
+ continue;
string temppath = System.IO.Path.Combine(destDirName, file.Name);
size += file.CopyTo(temppath, true).Length;
}
@@ -620,7 +625,7 @@ namespace com.clusterrr.hakchi_gui
foreach (DirectoryInfo subdir in dirs)
{
string temppath = System.IO.Path.Combine(destDirName, subdir.Name);
- size += DirectoryCopy(subdir.FullName, temppath, copySubDirs);
+ size += DirectoryCopy(subdir.FullName, temppath, copySubDirs, skipFiles);
}
}
return size;
@@ -700,11 +705,13 @@ namespace com.clusterrr.hakchi_gui
var result = new List<string>();
var exec = Regex.Replace(Command, "[/\\\"]", " ") + " ";
var files = Directory.GetFiles(GamePath, "*.*", SearchOption.TopDirectoryOnly);
+ var ignoreExtensions = new string[] { ".7z", ".zip", ".hsqs", ".sh" };
foreach (var file in files)
{
- if (Path.GetExtension(file).ToLower() == ".7z")
+ var a = from i in ignoreExtensions select i;
+ if (ignoreExtensions.Contains(Path.GetExtension(file).ToLower()))
continue;
- if (Path.GetExtension(file).ToLower() == ".zip")
+ if (new FileInfo(file).Length > MaxCompressSize)
continue;
if (exec.Contains(" " + Path.GetFileName(file) + " "))
result.Add(file);
@@ -737,7 +744,7 @@ namespace com.clusterrr.hakchi_gui
Debug.WriteLine("Compressing " + filename);
compressor.CompressFiles(archName, filename);
File.Delete(filename);
- Command = Command.Replace(System.IO.Path.GetFileName(filename), System.IO.Path.GetFileName(archName));
+ Command = Command.Replace(Path.GetFileName(filename), Path.GetFileName(archName));
}
}
diff --git a/DesktopEntries/CLV-P-HAAAJ.desktop b/DesktopEntries/CLV-P-HAAAJ.desktop
index 6c7ca327..8b863fec 100644
--- a/DesktopEntries/CLV-P-HAAAJ.desktop
+++ b/DesktopEntries/CLV-P-HAAAJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAAJ/CLV-P-HAAAJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAAJ/CLV-P-HAAAJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAAJ
Name=スーパーマリオブラザーズ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAAJ/CLV-P-HAAAJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAAJ/CLV-P-HAAAJ.png
[X-CLOVER Game]
Code=CLV-P-HAAAJ
diff --git a/DesktopEntries/CLV-P-HAACJ.desktop b/DesktopEntries/CLV-P-HAACJ.desktop
index 29bccb83..a2006412 100644
--- a/DesktopEntries/CLV-P-HAACJ.desktop
+++ b/DesktopEntries/CLV-P-HAACJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAACJ/CLV-P-HAACJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAACJ/CLV-P-HAACJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAACJ
Name=スーパーマリオブラザーズ3
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAACJ/CLV-P-HAACJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAACJ/CLV-P-HAACJ.png
[X-CLOVER Game]
Code=CLV-P-HAACJ
diff --git a/DesktopEntries/CLV-P-HAADJ.desktop b/DesktopEntries/CLV-P-HAADJ.desktop
index eac08e21..ab0686e8 100644
--- a/DesktopEntries/CLV-P-HAADJ.desktop
+++ b/DesktopEntries/CLV-P-HAADJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAADJ/CLV-P-HAADJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAADJ/CLV-P-HAADJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAADJ
Name=スーパーマリオUSA
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAADJ/CLV-P-HAADJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAADJ/CLV-P-HAADJ.png
[X-CLOVER Game]
Code=CLV-P-HAADJ
diff --git a/DesktopEntries/CLV-P-HAAEJ.desktop b/DesktopEntries/CLV-P-HAAEJ.desktop
index 9a021c35..39f6fa45 100644
--- a/DesktopEntries/CLV-P-HAAEJ.desktop
+++ b/DesktopEntries/CLV-P-HAAEJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAEJ/CLV-P-HAAEJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAEJ/CLV-P-HAAEJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAEJ
Name=ドンキーコング
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAEJ/CLV-P-HAAEJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAEJ/CLV-P-HAAEJ.png
[X-CLOVER Game]
Code=CLV-P-HAAEJ
diff --git a/DesktopEntries/CLV-P-HAAHJ.desktop b/DesktopEntries/CLV-P-HAAHJ.desktop
index 41c378d5..42625733 100644
--- a/DesktopEntries/CLV-P-HAAHJ.desktop
+++ b/DesktopEntries/CLV-P-HAAHJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAHJ/CLV-P-HAAHJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAHJ/CLV-P-HAAHJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAHJ
Name=エキサイトバイク
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAHJ/CLV-P-HAAHJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAHJ/CLV-P-HAAHJ.png
[X-CLOVER Game]
Code=CLV-P-HAAHJ
diff --git a/DesktopEntries/CLV-P-HAAMJ.desktop b/DesktopEntries/CLV-P-HAAMJ.desktop
index 64700180..ea56a5ef 100644
--- a/DesktopEntries/CLV-P-HAAMJ.desktop
+++ b/DesktopEntries/CLV-P-HAAMJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAMJ/CLV-P-HAAMJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAMJ/CLV-P-HAAMJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAMJ
Name=マリオオープンゴルフ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAMJ/CLV-P-HAAMJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAMJ/CLV-P-HAAMJ.png
[X-CLOVER Game]
Code=CLV-P-HAAMJ
diff --git a/DesktopEntries/CLV-P-HAANJ.desktop b/DesktopEntries/CLV-P-HAANJ.desktop
index 6a3d4d1c..9cf03495 100644
--- a/DesktopEntries/CLV-P-HAANJ.desktop
+++ b/DesktopEntries/CLV-P-HAANJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAANJ/CLV-P-HAANJ.qd --fds-disk-switch-side-delay 2 --fds-auto-disk-side-switch-on-keypress --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 5,2 --volume 80 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAANJ/CLV-P-HAANJ.qd --fds-disk-switch-side-delay 2 --fds-auto-disk-side-switch-on-keypress --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 5,2 --volume 80 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAANJ
Name=ゼルダの伝説
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAANJ/CLV-P-HAANJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAANJ/CLV-P-HAANJ.png
[X-CLOVER Game]
Code=CLV-P-HAANJ
diff --git a/DesktopEntries/CLV-P-HAAPJ.desktop b/DesktopEntries/CLV-P-HAAPJ.desktop
index 99ae8b01..05d4b817 100644
--- a/DesktopEntries/CLV-P-HAAPJ.desktop
+++ b/DesktopEntries/CLV-P-HAAPJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAPJ/CLV-P-HAAPJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAPJ/CLV-P-HAAPJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAPJ
Name=星のカービィ 夢の泉の物語
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAPJ/CLV-P-HAAPJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAPJ/CLV-P-HAAPJ.png
[X-CLOVER Game]
Code=CLV-P-HAAPJ
diff --git a/DesktopEntries/CLV-P-HAAQJ.desktop b/DesktopEntries/CLV-P-HAAQJ.desktop
index 6443c62d..0ffe9438 100644
--- a/DesktopEntries/CLV-P-HAAQJ.desktop
+++ b/DesktopEntries/CLV-P-HAAQJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAQJ/CLV-P-HAAQJ.qd --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 80 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAQJ/CLV-P-HAAQJ.qd --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 80 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAQJ
Name=メトロイド
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAQJ/CLV-P-HAAQJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAQJ/CLV-P-HAAQJ.png
[X-CLOVER Game]
Code=CLV-P-HAAQJ
diff --git a/DesktopEntries/CLV-P-HAARJ.desktop b/DesktopEntries/CLV-P-HAARJ.desktop
index b77b4ccc..de62ce87 100644
--- a/DesktopEntries/CLV-P-HAARJ.desktop
+++ b/DesktopEntries/CLV-P-HAARJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAARJ/CLV-P-HAARJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAARJ/CLV-P-HAARJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAARJ
Name=バルーンファイト
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAARJ/CLV-P-HAARJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAARJ/CLV-P-HAARJ.png
[X-CLOVER Game]
Code=CLV-P-HAARJ
diff --git a/DesktopEntries/CLV-P-HAASJ.desktop b/DesktopEntries/CLV-P-HAASJ.desktop
index c4bfbc17..75e9d152 100644
--- a/DesktopEntries/CLV-P-HAASJ.desktop
+++ b/DesktopEntries/CLV-P-HAASJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAASJ/CLV-P-HAASJ.qd --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 80 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAASJ/CLV-P-HAASJ.qd --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 80 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAASJ
Name=リンクの冒険
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAASJ/CLV-P-HAASJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAASJ/CLV-P-HAASJ.png
[X-CLOVER Game]
Code=CLV-P-HAASJ
diff --git a/DesktopEntries/CLV-P-HAAUJ.desktop b/DesktopEntries/CLV-P-HAAUJ.desktop
index 466b4960..557267c2 100644
--- a/DesktopEntries/CLV-P-HAAUJ.desktop
+++ b/DesktopEntries/CLV-P-HAAUJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAUJ/CLV-P-HAAUJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAUJ/CLV-P-HAAUJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAUJ
Name=アイスクライマー
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAUJ/CLV-P-HAAUJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAUJ/CLV-P-HAAUJ.png
[X-CLOVER Game]
Code=CLV-P-HAAUJ
diff --git a/DesktopEntries/CLV-P-HAAWJ.desktop b/DesktopEntries/CLV-P-HAAWJ.desktop
index 9ea0fb6e..1f2e1e75 100644
--- a/DesktopEntries/CLV-P-HAAWJ.desktop
+++ b/DesktopEntries/CLV-P-HAAWJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAWJ/CLV-P-HAAWJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 69 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAWJ/CLV-P-HAAWJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 69 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAWJ
Name=マリオブラザーズ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAWJ/CLV-P-HAAWJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAWJ/CLV-P-HAAWJ.png
[X-CLOVER Game]
Code=CLV-P-HAAWJ
diff --git a/DesktopEntries/CLV-P-HAAXJ.desktop b/DesktopEntries/CLV-P-HAAXJ.desktop
index d0cbd3bb..e3499cbc 100644
--- a/DesktopEntries/CLV-P-HAAXJ.desktop
+++ b/DesktopEntries/CLV-P-HAAXJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAXJ/CLV-P-HAAXJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAXJ/CLV-P-HAAXJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HAAXJ
Name=ドクターマリオ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAXJ/CLV-P-HAAXJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HAAXJ/CLV-P-HAAXJ.png
[X-CLOVER Game]
Code=CLV-P-HAAXJ
diff --git a/DesktopEntries/CLV-P-HABBJ.desktop b/DesktopEntries/CLV-P-HABBJ.desktop
index 6a311f45..2977e4cb 100644
--- a/DesktopEntries/CLV-P-HABBJ.desktop
+++ b/DesktopEntries/CLV-P-HABBJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABBJ/CLV-P-HABBJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 65 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABBJ/CLV-P-HABBJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 65 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABBJ
Name=ロックマン®2 Dr.ワイリーの謎
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABBJ/CLV-P-HABBJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABBJ/CLV-P-HABBJ.png
[X-CLOVER Game]
Code=CLV-P-HABBJ
diff --git a/DesktopEntries/CLV-P-HABCJ.desktop b/DesktopEntries/CLV-P-HABCJ.desktop
index fa710cf9..c0fd7cc7 100644
--- a/DesktopEntries/CLV-P-HABCJ.desktop
+++ b/DesktopEntries/CLV-P-HABCJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABCJ/CLV-P-HABCJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 67 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABCJ/CLV-P-HABCJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 67 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABCJ
Name=魔界村®
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABCJ/CLV-P-HABCJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABCJ/CLV-P-HABCJ.png
[X-CLOVER Game]
Code=CLV-P-HABCJ
diff --git a/DesktopEntries/CLV-P-HABLJ.desktop b/DesktopEntries/CLV-P-HABLJ.desktop
index 4eb31ec3..18a7572a 100644
--- a/DesktopEntries/CLV-P-HABLJ.desktop
+++ b/DesktopEntries/CLV-P-HABLJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABLJ/CLV-P-HABLJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABLJ/CLV-P-HABLJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABLJ
Name=ファイナルファンタジー®III
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABLJ/CLV-P-HABLJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABLJ/CLV-P-HABLJ.png
[X-CLOVER Game]
Code=CLV-P-HABLJ
diff --git a/DesktopEntries/CLV-P-HABMJ.desktop b/DesktopEntries/CLV-P-HABMJ.desktop
index b3782556..9edd153a 100644
--- a/DesktopEntries/CLV-P-HABMJ.desktop
+++ b/DesktopEntries/CLV-P-HABMJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABMJ/CLV-P-HABMJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABMJ/CLV-P-HABMJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABMJ
Name=パックマン
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABMJ/CLV-P-HABMJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABMJ/CLV-P-HABMJ.png
[X-CLOVER Game]
Code=CLV-P-HABMJ
diff --git a/DesktopEntries/CLV-P-HABNJ.desktop b/DesktopEntries/CLV-P-HABNJ.desktop
index 36e24894..124cd544 100644
--- a/DesktopEntries/CLV-P-HABNJ.desktop
+++ b/DesktopEntries/CLV-P-HABNJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABNJ/CLV-P-HABNJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 63 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABNJ/CLV-P-HABNJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 63 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABNJ
Name=ギャラガ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABNJ/CLV-P-HABNJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABNJ/CLV-P-HABNJ.png
[X-CLOVER Game]
Code=CLV-P-HABNJ
diff --git a/DesktopEntries/CLV-P-HABQJ.desktop b/DesktopEntries/CLV-P-HABQJ.desktop
index 23409207..dd98b9bc 100644
--- a/DesktopEntries/CLV-P-HABQJ.desktop
+++ b/DesktopEntries/CLV-P-HABQJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABQJ/CLV-P-HABQJ.qd --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 90 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABQJ/CLV-P-HABQJ.qd --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 90 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABQJ
Name=悪魔城ドラキュラ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABQJ/CLV-P-HABQJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABQJ/CLV-P-HABQJ.png
[X-CLOVER Game]
Code=CLV-P-HABQJ
diff --git a/DesktopEntries/CLV-P-HABRJ.desktop b/DesktopEntries/CLV-P-HABRJ.desktop
index 0367ae15..53177525 100644
--- a/DesktopEntries/CLV-P-HABRJ.desktop
+++ b/DesktopEntries/CLV-P-HABRJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABRJ/CLV-P-HABRJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABRJ/CLV-P-HABRJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABRJ
Name=グラディウス
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABRJ/CLV-P-HABRJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABRJ/CLV-P-HABRJ.png
[X-CLOVER Game]
Code=CLV-P-HABRJ
diff --git a/DesktopEntries/CLV-P-HABVJ.desktop b/DesktopEntries/CLV-P-HABVJ.desktop
index 8097f15c..18b5d1b3 100644
--- a/DesktopEntries/CLV-P-HABVJ.desktop
+++ b/DesktopEntries/CLV-P-HABVJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABVJ/CLV-P-HABVJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 77 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABVJ/CLV-P-HABVJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 77 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HABVJ
Name=スーパー魂斗羅
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABVJ/CLV-P-HABVJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HABVJ/CLV-P-HABVJ.png
[X-CLOVER Game]
Code=CLV-P-HABVJ
diff --git a/DesktopEntries/CLV-P-HACAJ.desktop b/DesktopEntries/CLV-P-HACAJ.desktop
index 6d156b53..a2e8c32d 100644
--- a/DesktopEntries/CLV-P-HACAJ.desktop
+++ b/DesktopEntries/CLV-P-HACAJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACAJ/CLV-P-HACAJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 78 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACAJ/CLV-P-HACAJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 78 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACAJ
Name=イー・アル・カンフー
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACAJ/CLV-P-HACAJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACAJ/CLV-P-HACAJ.png
[X-CLOVER Game]
Code=CLV-P-HACAJ
diff --git a/DesktopEntries/CLV-P-HACBJ.desktop b/DesktopEntries/CLV-P-HACBJ.desktop
index d8172d13..0b4bf992 100644
--- a/DesktopEntries/CLV-P-HACBJ.desktop
+++ b/DesktopEntries/CLV-P-HACBJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACBJ/CLV-P-HACBJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 82 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACBJ/CLV-P-HACBJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 82 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACBJ
Name=忍者龍剣伝
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACBJ/CLV-P-HACBJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACBJ/CLV-P-HACBJ.png
[X-CLOVER Game]
Code=CLV-P-HACBJ
diff --git a/DesktopEntries/CLV-P-HACCJ.desktop b/DesktopEntries/CLV-P-HACCJ.desktop
index 5b2f6188..71805271 100644
--- a/DesktopEntries/CLV-P-HACCJ.desktop
+++ b/DesktopEntries/CLV-P-HACCJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACCJ/CLV-P-HACCJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACCJ/CLV-P-HACCJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACCJ
Name=ソロモンの鍵
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACCJ/CLV-P-HACCJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACCJ/CLV-P-HACCJ.png
[X-CLOVER Game]
Code=CLV-P-HACCJ
diff --git a/DesktopEntries/CLV-P-HACEJ.desktop b/DesktopEntries/CLV-P-HACEJ.desktop
index 9b8c1e9f..85e74a5b 100644
--- a/DesktopEntries/CLV-P-HACEJ.desktop
+++ b/DesktopEntries/CLV-P-HACEJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACEJ/CLV-P-HACEJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACEJ/CLV-P-HACEJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACEJ
Name=つっぱり大相撲
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACEJ/CLV-P-HACEJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACEJ/CLV-P-HACEJ.png
[X-CLOVER Game]
Code=CLV-P-HACEJ
diff --git a/DesktopEntries/CLV-P-HACHJ.desktop b/DesktopEntries/CLV-P-HACHJ.desktop
index fca811aa..124ee0ef 100644
--- a/DesktopEntries/CLV-P-HACHJ.desktop
+++ b/DesktopEntries/CLV-P-HACHJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACHJ/CLV-P-HACHJ.nes --guest-overscan-dimensions 12,8,9,11 --initial-fadein-durations 3,2 --volume 80 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACHJ/CLV-P-HACHJ.nes --guest-overscan-dimensions 12,8,9,11 --initial-fadein-durations 3,2 --volume 80 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACHJ
Name=ダブルドラゴンⅡ The Revenge
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACHJ/CLV-P-HACHJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACHJ/CLV-P-HACHJ.png
[X-CLOVER Game]
Code=CLV-P-HACHJ
diff --git a/DesktopEntries/CLV-P-HACJJ.desktop b/DesktopEntries/CLV-P-HACJJ.desktop
index 1f32c568..e8f90cb2 100644
--- a/DesktopEntries/CLV-P-HACJJ.desktop
+++ b/DesktopEntries/CLV-P-HACJJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACJJ/CLV-P-HACJJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 83 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACJJ/CLV-P-HACJJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 83 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACJJ
Name=ダウンタウン熱血物語
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACJJ/CLV-P-HACJJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACJJ/CLV-P-HACJJ.png
[X-CLOVER Game]
Code=CLV-P-HACJJ
diff --git a/DesktopEntries/CLV-P-HACLJ.desktop b/DesktopEntries/CLV-P-HACLJ.desktop
index 85e5dcb3..13759bed 100644
--- a/DesktopEntries/CLV-P-HACLJ.desktop
+++ b/DesktopEntries/CLV-P-HACLJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACLJ/CLV-P-HACLJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 78 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACLJ/CLV-P-HACLJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 78 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACLJ
Name=ダウンタウン熱血行進曲 それゆけ大運動会
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACLJ/CLV-P-HACLJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACLJ/CLV-P-HACLJ.png
[X-CLOVER Game]
Code=CLV-P-HACLJ
diff --git a/DesktopEntries/CLV-P-HACPJ.desktop b/DesktopEntries/CLV-P-HACPJ.desktop
index 49fe3829..35fe4cbc 100644
--- a/DesktopEntries/CLV-P-HACPJ.desktop
+++ b/DesktopEntries/CLV-P-HACPJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACPJ/CLV-P-HACPJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 68 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACPJ/CLV-P-HACPJ.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 68 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-HACPJ
Name=アトランチスの謎
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACPJ/CLV-P-HACPJ.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-HACPJ/CLV-P-HACPJ.png
[X-CLOVER Game]
Code=CLV-P-HACPJ
diff --git a/DesktopEntries/CLV-P-NAAAE.desktop b/DesktopEntries/CLV-P-NAAAE.desktop
index 8fbac89c..e5a9ea4b 100644
--- a/DesktopEntries/CLV-P-NAAAE.desktop
+++ b/DesktopEntries/CLV-P-NAAAE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAAE/CLV-P-NAAAE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAAE/CLV-P-NAAAE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAAE
Name=Super Mario Bros.
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAAE/CLV-P-NAAAE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAAE/CLV-P-NAAAE.png
[X-CLOVER Game]
Code=CLV-P-NAAAE
diff --git a/DesktopEntries/CLV-P-NAACE.desktop b/DesktopEntries/CLV-P-NAACE.desktop
index 483df9cb..fa997b40 100644
--- a/DesktopEntries/CLV-P-NAACE.desktop
+++ b/DesktopEntries/CLV-P-NAACE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAACE/CLV-P-NAACE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAACE/CLV-P-NAACE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAACE
Name=Super Mario Bros. 3
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAACE/CLV-P-NAACE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAACE/CLV-P-NAACE.png
[X-CLOVER Game]
Code=CLV-P-NAACE
diff --git a/DesktopEntries/CLV-P-NAADE.desktop b/DesktopEntries/CLV-P-NAADE.desktop
index 7fc06f73..f7dc0d1c 100644
--- a/DesktopEntries/CLV-P-NAADE.desktop
+++ b/DesktopEntries/CLV-P-NAADE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAADE/CLV-P-NAADE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAADE/CLV-P-NAADE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAADE
Name=Super Mario Bros. 2
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAADE/CLV-P-NAADE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAADE/CLV-P-NAADE.png
[X-CLOVER Game]
Code=CLV-P-NAADE
diff --git a/DesktopEntries/CLV-P-NAAEE.desktop b/DesktopEntries/CLV-P-NAAEE.desktop
index 7c3d1b61..abcd3f49 100644
--- a/DesktopEntries/CLV-P-NAAEE.desktop
+++ b/DesktopEntries/CLV-P-NAAEE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAEE/CLV-P-NAAEE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAEE/CLV-P-NAAEE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAEE
Name=Donkey Kong
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAEE/CLV-P-NAAEE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAEE/CLV-P-NAAEE.png
[X-CLOVER Game]
Code=CLV-P-NAAEE
diff --git a/DesktopEntries/CLV-P-NAAFE.desktop b/DesktopEntries/CLV-P-NAAFE.desktop
index 5e8746a6..07a14111 100644
--- a/DesktopEntries/CLV-P-NAAFE.desktop
+++ b/DesktopEntries/CLV-P-NAAFE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAFE/CLV-P-NAAFE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAFE/CLV-P-NAAFE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAFE
Name=Donkey Kong Jr.
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAFE/CLV-P-NAAFE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAFE/CLV-P-NAAFE.png
[X-CLOVER Game]
Code=CLV-P-NAAFE
diff --git a/DesktopEntries/CLV-P-NAAHE.desktop b/DesktopEntries/CLV-P-NAAHE.desktop
index 3e5c8f34..187fcf44 100644
--- a/DesktopEntries/CLV-P-NAAHE.desktop
+++ b/DesktopEntries/CLV-P-NAAHE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAHE/CLV-P-NAAHE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAHE/CLV-P-NAAHE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAHE
Name=Excitebike
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAHE/CLV-P-NAAHE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAHE/CLV-P-NAAHE.png
[X-CLOVER Game]
Code=CLV-P-NAAHE
diff --git a/DesktopEntries/CLV-P-NAANE.desktop b/DesktopEntries/CLV-P-NAANE.desktop
index 675e8163..9875b815 100644
--- a/DesktopEntries/CLV-P-NAANE.desktop
+++ b/DesktopEntries/CLV-P-NAANE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAANE/CLV-P-NAANE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 5,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAANE/CLV-P-NAANE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 5,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAANE
Name=The Legend of Zelda
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAANE/CLV-P-NAANE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAANE/CLV-P-NAANE.png
[X-CLOVER Game]
Code=CLV-P-NAANE
diff --git a/DesktopEntries/CLV-P-NAAPE.desktop b/DesktopEntries/CLV-P-NAAPE.desktop
index f87b9c3c..4c9020ce 100644
--- a/DesktopEntries/CLV-P-NAAPE.desktop
+++ b/DesktopEntries/CLV-P-NAAPE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAPE/CLV-P-NAAPE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAPE/CLV-P-NAAPE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAPE
Name=Kirby's Adventure
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAPE/CLV-P-NAAPE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAPE/CLV-P-NAAPE.png
[X-CLOVER Game]
Code=CLV-P-NAAPE
diff --git a/DesktopEntries/CLV-P-NAAQE.desktop b/DesktopEntries/CLV-P-NAAQE.desktop
index 34d54790..93cf4fcf 100644
--- a/DesktopEntries/CLV-P-NAAQE.desktop
+++ b/DesktopEntries/CLV-P-NAAQE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAQE/CLV-P-NAAQE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAQE/CLV-P-NAAQE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAQE
Name=Metroid
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAQE/CLV-P-NAAQE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAQE/CLV-P-NAAQE.png
[X-CLOVER Game]
Code=CLV-P-NAAQE
diff --git a/DesktopEntries/CLV-P-NAARE.desktop b/DesktopEntries/CLV-P-NAARE.desktop
index cb3c2203..5726d318 100644
--- a/DesktopEntries/CLV-P-NAARE.desktop
+++ b/DesktopEntries/CLV-P-NAARE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAARE/CLV-P-NAARE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAARE/CLV-P-NAARE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAARE
Name=Balloon Fight
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAARE/CLV-P-NAARE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAARE/CLV-P-NAARE.png
[X-CLOVER Game]
Code=CLV-P-NAARE
diff --git a/DesktopEntries/CLV-P-NAASE.desktop b/DesktopEntries/CLV-P-NAASE.desktop
index a4fbdc52..7277d425 100644
--- a/DesktopEntries/CLV-P-NAASE.desktop
+++ b/DesktopEntries/CLV-P-NAASE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAASE/CLV-P-NAASE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAASE/CLV-P-NAASE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAASE
Name=Zelda II - The Adventure of Link
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAASE/CLV-P-NAASE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAASE/CLV-P-NAASE.png
[X-CLOVER Game]
Code=CLV-P-NAASE
diff --git a/DesktopEntries/CLV-P-NAATE.desktop b/DesktopEntries/CLV-P-NAATE.desktop
index 327e9b79..c44a6b95 100644
--- a/DesktopEntries/CLV-P-NAATE.desktop
+++ b/DesktopEntries/CLV-P-NAATE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAATE/CLV-P-NAATE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 73 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAATE/CLV-P-NAATE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 73 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAATE
Name=Punch-Out!! Featuring Mr. Dream
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAATE/CLV-P-NAATE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAATE/CLV-P-NAATE.png
[X-CLOVER Game]
Code=CLV-P-NAATE
diff --git a/DesktopEntries/CLV-P-NAAUE.desktop b/DesktopEntries/CLV-P-NAAUE.desktop
index dcacf837..d3d05b93 100644
--- a/DesktopEntries/CLV-P-NAAUE.desktop
+++ b/DesktopEntries/CLV-P-NAAUE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAUE/CLV-P-NAAUE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAUE/CLV-P-NAAUE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAUE
Name=Ice Climber
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAUE/CLV-P-NAAUE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAUE/CLV-P-NAAUE.png
[X-CLOVER Game]
Code=CLV-P-NAAUE
diff --git a/DesktopEntries/CLV-P-NAAVE.desktop b/DesktopEntries/CLV-P-NAAVE.desktop
index 576d4d00..d6dc92a6 100644
--- a/DesktopEntries/CLV-P-NAAVE.desktop
+++ b/DesktopEntries/CLV-P-NAAVE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAVE/CLV-P-NAAVE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 77 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAVE/CLV-P-NAAVE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 77 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAVE
Name=Kid Icarus
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAVE/CLV-P-NAAVE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAVE/CLV-P-NAAVE.png
[X-CLOVER Game]
Code=CLV-P-NAAVE
diff --git a/DesktopEntries/CLV-P-NAAWE.desktop b/DesktopEntries/CLV-P-NAAWE.desktop
index 2a52075c..a072cb32 100644
--- a/DesktopEntries/CLV-P-NAAWE.desktop
+++ b/DesktopEntries/CLV-P-NAAWE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAWE/CLV-P-NAAWE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 69 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAWE/CLV-P-NAAWE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 69 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAWE
Name=Mario Bros.
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAWE/CLV-P-NAAWE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAWE/CLV-P-NAAWE.png
[X-CLOVER Game]
Code=CLV-P-NAAWE
diff --git a/DesktopEntries/CLV-P-NAAXE.desktop b/DesktopEntries/CLV-P-NAAXE.desktop
index 1c45017e..567a3c4c 100644
--- a/DesktopEntries/CLV-P-NAAXE.desktop
+++ b/DesktopEntries/CLV-P-NAAXE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAXE/CLV-P-NAAXE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAXE/CLV-P-NAAXE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAXE
Name=Dr. MARIO
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAXE/CLV-P-NAAXE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAXE/CLV-P-NAAXE.png
[X-CLOVER Game]
Code=CLV-P-NAAXE
diff --git a/DesktopEntries/CLV-P-NAAZE.desktop b/DesktopEntries/CLV-P-NAAZE.desktop
index 318aac1c..331219c6 100644
--- a/DesktopEntries/CLV-P-NAAZE.desktop
+++ b/DesktopEntries/CLV-P-NAAZE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAZE/CLV-P-NAAZE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAZE/CLV-P-NAAZE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NAAZE
Name=StarTropics
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAZE/CLV-P-NAAZE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NAAZE/CLV-P-NAAZE.png
[X-CLOVER Game]
Code=CLV-P-NAAZE
diff --git a/DesktopEntries/CLV-P-NABBE.desktop b/DesktopEntries/CLV-P-NABBE.desktop
index 9a31e8e6..443f6959 100644
--- a/DesktopEntries/CLV-P-NABBE.desktop
+++ b/DesktopEntries/CLV-P-NABBE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABBE/CLV-P-NABBE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 65 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABBE/CLV-P-NABBE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 65 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABBE
Name=MEGA MAN™ 2
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABBE/CLV-P-NABBE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABBE/CLV-P-NABBE.png
[X-CLOVER Game]
Code=CLV-P-NABBE
diff --git a/DesktopEntries/CLV-P-NABCE.desktop b/DesktopEntries/CLV-P-NABCE.desktop
index d9bab2ab..76c768cd 100644
--- a/DesktopEntries/CLV-P-NABCE.desktop
+++ b/DesktopEntries/CLV-P-NABCE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABCE/CLV-P-NABCE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 67 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABCE/CLV-P-NABCE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 67 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABCE
Name=GHOSTS'N GOBLINS™
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABCE/CLV-P-NABCE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABCE/CLV-P-NABCE.png
[X-CLOVER Game]
Code=CLV-P-NABCE
diff --git a/DesktopEntries/CLV-P-NABJE.desktop b/DesktopEntries/CLV-P-NABJE.desktop
index fc7fa090..ee631c61 100644
--- a/DesktopEntries/CLV-P-NABJE.desktop
+++ b/DesktopEntries/CLV-P-NABJE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABJE/CLV-P-NABJE.nes --armet-threshold 11 --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABJE/CLV-P-NABJE.nes --armet-threshold 11 --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABJE
Name=FINAL FANTASY®
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABJE/CLV-P-NABJE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABJE/CLV-P-NABJE.png
[X-CLOVER Game]
Code=CLV-P-NABJE
diff --git a/DesktopEntries/CLV-P-NABKE.desktop b/DesktopEntries/CLV-P-NABKE.desktop
index 3a9f01a9..bc6c1966 100644
--- a/DesktopEntries/CLV-P-NABKE.desktop
+++ b/DesktopEntries/CLV-P-NABKE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABKE/CLV-P-NABKE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABKE/CLV-P-NABKE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 72 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABKE
Name=BUBBLE BOBBLE
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABKE/CLV-P-NABKE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABKE/CLV-P-NABKE.png
[X-CLOVER Game]
Code=CLV-P-NABKE
diff --git a/DesktopEntries/CLV-P-NABME.desktop b/DesktopEntries/CLV-P-NABME.desktop
index 33810261..976091e3 100644
--- a/DesktopEntries/CLV-P-NABME.desktop
+++ b/DesktopEntries/CLV-P-NABME.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABME/CLV-P-NABME.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABME/CLV-P-NABME.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 75 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABME
Name=PAC-MAN
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABME/CLV-P-NABME.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABME/CLV-P-NABME.png
[X-CLOVER Game]
Code=CLV-P-NABME
diff --git a/DesktopEntries/CLV-P-NABNE.desktop b/DesktopEntries/CLV-P-NABNE.desktop
index ae5d26f8..d868d73f 100644
--- a/DesktopEntries/CLV-P-NABNE.desktop
+++ b/DesktopEntries/CLV-P-NABNE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABNE/CLV-P-NABNE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 63 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABNE/CLV-P-NABNE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 63 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABNE
Name=Galaga
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABNE/CLV-P-NABNE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABNE/CLV-P-NABNE.png
[X-CLOVER Game]
Code=CLV-P-NABNE
diff --git a/DesktopEntries/CLV-P-NABQE.desktop b/DesktopEntries/CLV-P-NABQE.desktop
index 495cd4a0..11b62de7 100644
--- a/DesktopEntries/CLV-P-NABQE.desktop
+++ b/DesktopEntries/CLV-P-NABQE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABQE/CLV-P-NABQE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 83 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABQE/CLV-P-NABQE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 83 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABQE
Name=Castlevania
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABQE/CLV-P-NABQE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABQE/CLV-P-NABQE.png
[X-CLOVER Game]
Code=CLV-P-NABQE
diff --git a/DesktopEntries/CLV-P-NABRE.desktop b/DesktopEntries/CLV-P-NABRE.desktop
index 9949388f..e2983626 100644
--- a/DesktopEntries/CLV-P-NABRE.desktop
+++ b/DesktopEntries/CLV-P-NABRE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABRE/CLV-P-NABRE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABRE/CLV-P-NABRE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 70 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABRE
Name=GRADIUS
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABRE/CLV-P-NABRE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABRE/CLV-P-NABRE.png
[X-CLOVER Game]
Code=CLV-P-NABRE
diff --git a/DesktopEntries/CLV-P-NABVE.desktop b/DesktopEntries/CLV-P-NABVE.desktop
index c014718c..0df0e894 100644
--- a/DesktopEntries/CLV-P-NABVE.desktop
+++ b/DesktopEntries/CLV-P-NABVE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABVE/CLV-P-NABVE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 77 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABVE/CLV-P-NABVE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 77 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABVE
Name=Super C
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABVE/CLV-P-NABVE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABVE/CLV-P-NABVE.png
[X-CLOVER Game]
Code=CLV-P-NABVE
diff --git a/DesktopEntries/CLV-P-NABXE.desktop b/DesktopEntries/CLV-P-NABXE.desktop
index 86b60c4b..7fc2ed2d 100644
--- a/DesktopEntries/CLV-P-NABXE.desktop
+++ b/DesktopEntries/CLV-P-NABXE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABXE/CLV-P-NABXE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 80 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABXE/CLV-P-NABXE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 80 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NABXE
Name=Castlevania II Simon's Quest
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABXE/CLV-P-NABXE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NABXE/CLV-P-NABXE.png
[X-CLOVER Game]
Code=CLV-P-NABXE
diff --git a/DesktopEntries/CLV-P-NACBE.desktop b/DesktopEntries/CLV-P-NACBE.desktop
index 4210a852..18d9b432 100644
--- a/DesktopEntries/CLV-P-NACBE.desktop
+++ b/DesktopEntries/CLV-P-NACBE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACBE/CLV-P-NACBE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 82 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACBE/CLV-P-NACBE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 82 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NACBE
Name=NINJA GAIDEN
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACBE/CLV-P-NACBE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACBE/CLV-P-NACBE.png
[X-CLOVER Game]
Code=CLV-P-NACBE
diff --git a/DesktopEntries/CLV-P-NACDE.desktop b/DesktopEntries/CLV-P-NACDE.desktop
index fca73eae..43356c50 100644
--- a/DesktopEntries/CLV-P-NACDE.desktop
+++ b/DesktopEntries/CLV-P-NACDE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACDE/CLV-P-NACDE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 85 --enable-armet
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACDE/CLV-P-NACDE.nes --guest-overscan-dimensions 0,0,9,3 --initial-fadein-durations 3,2 --volume 85 --enable-armet
Path=/var/lib/clover/profiles/0//CLV-P-NACDE
Name=TECMO BOWL
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACDE/CLV-P-NACDE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACDE/CLV-P-NACDE.png
[X-CLOVER Game]
Code=CLV-P-NACDE
diff --git a/DesktopEntries/CLV-P-NACHE.desktop b/DesktopEntries/CLV-P-NACHE.desktop
index 05ad1f6f..9d4de326 100644
--- a/DesktopEntries/CLV-P-NACHE.desktop
+++ b/DesktopEntries/CLV-P-NACHE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-kachikachi-wr /var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACHE/CLV-P-NACHE.nes --guest-overscan-dimensions 12,8,9,11 --initial-fadein-durations 3,2 --volume 80
+Exec=/bin/clover-kachikachi-wr /var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACHE/CLV-P-NACHE.nes --guest-overscan-dimensions 12,8,9,11 --initial-fadein-durations 3,2 --volume 80
Path=/var/lib/clover/profiles/0//CLV-P-NACHE
Name=DOUBLE DRAGON II: The Revenge
-Icon=/var/lib/hakchi/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACHE/CLV-P-NACHE.png
+Icon=/var/squashfs/usr/share/games/nes/kachikachi/CLV-P-NACHE/CLV-P-NACHE.png
[X-CLOVER Game]
Code=CLV-P-NACHE
diff --git a/DesktopEntries/CLV-P-SAAAE.desktop b/DesktopEntries/CLV-P-SAAAE.desktop
index 10e421a3..b33b37d9 100644
--- a/DesktopEntries/CLV-P-SAAAE.desktop
+++ b/DesktopEntries/CLV-P-SAAAE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAAE/CLV-P-SAAAE.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAAE/CLV-P-SAAAE.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAAAE
Name=Super Mario World
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAAE/CLV-P-SAAAE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAAE/CLV-P-SAAAE.png
[X-CLOVER Game]
Code=CLV-P-SAAAE
diff --git a/DesktopEntries/CLV-P-SAABE.desktop b/DesktopEntries/CLV-P-SAABE.desktop
index 81ed0d60..2b369d06 100644
--- a/DesktopEntries/CLV-P-SAABE.desktop
+++ b/DesktopEntries/CLV-P-SAABE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAABE/CLV-P-SAABE.sfrom --volume 80 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAABE/CLV-P-SAABE.sfrom --volume 80 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAABE
Name=F-ZERO
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAABE/CLV-P-SAABE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAABE/CLV-P-SAABE.png
[X-CLOVER Game]
Code=CLV-P-SAABE
diff --git a/DesktopEntries/CLV-P-SAAEE.desktop b/DesktopEntries/CLV-P-SAAEE.desktop
index 6409d9fd..ace19b75 100644
--- a/DesktopEntries/CLV-P-SAAEE.desktop
+++ b/DesktopEntries/CLV-P-SAAEE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAEE/CLV-P-SAAEE.sfrom --volume 85 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAEE/CLV-P-SAAEE.sfrom --volume 85 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAAEE
Name=The Legend of Zelda: A Link to the Past
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAEE/CLV-P-SAAEE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAEE/CLV-P-SAAEE.png
[X-CLOVER Game]
Code=CLV-P-SAAEE
diff --git a/DesktopEntries/CLV-P-SAAFE.desktop b/DesktopEntries/CLV-P-SAAFE.desktop
index 53ebc661..971d7c27 100644
--- a/DesktopEntries/CLV-P-SAAFE.desktop
+++ b/DesktopEntries/CLV-P-SAAFE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAFE/CLV-P-SAAFE.sfrom --volume 70 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAFE/CLV-P-SAAFE.sfrom --volume 70 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAAFE
Name=Super Mario Kart
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAFE/CLV-P-SAAFE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAFE/CLV-P-SAAFE.png
[X-CLOVER Game]
Code=CLV-P-SAAFE
diff --git a/DesktopEntries/CLV-P-SAAHE.desktop b/DesktopEntries/CLV-P-SAAHE.desktop
index d0392a24..85cf5d09 100644
--- a/DesktopEntries/CLV-P-SAAHE.desktop
+++ b/DesktopEntries/CLV-P-SAAHE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAHE/CLV-P-SAAHE.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAHE/CLV-P-SAAHE.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAAHE
Name=Super Metroid
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAHE/CLV-P-SAAHE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAHE/CLV-P-SAAHE.png
[X-CLOVER Game]
Code=CLV-P-SAAHE
diff --git a/DesktopEntries/CLV-P-SAAJE.desktop b/DesktopEntries/CLV-P-SAAJE.desktop
index daa8ef74..08260182 100644
--- a/DesktopEntries/CLV-P-SAAJE.desktop
+++ b/DesktopEntries/CLV-P-SAAJE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAJE/CLV-P-SAAJE.sfrom --volume 85 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAJE/CLV-P-SAAJE.sfrom --volume 85 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-SAAJE
Name=EarthBound
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAJE/CLV-P-SAAJE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAJE/CLV-P-SAAJE.png
[X-CLOVER Game]
Code=CLV-P-SAAJE
diff --git a/DesktopEntries/CLV-P-SAAKE.desktop b/DesktopEntries/CLV-P-SAAKE.desktop
index 07079783..45034120 100644
--- a/DesktopEntries/CLV-P-SAAKE.desktop
+++ b/DesktopEntries/CLV-P-SAAKE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAKE/CLV-P-SAAKE.sfrom --volume 85 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAKE/CLV-P-SAAKE.sfrom --volume 85 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAAKE
Name=Kirby's Dream Course
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAKE/CLV-P-SAAKE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAKE/CLV-P-SAAKE.png
[X-CLOVER Game]
Code=CLV-P-SAAKE
diff --git a/DesktopEntries/CLV-P-SAALE.desktop b/DesktopEntries/CLV-P-SAALE.desktop
index 39fad6c2..06ae1b90 100644
--- a/DesktopEntries/CLV-P-SAALE.desktop
+++ b/DesktopEntries/CLV-P-SAALE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAALE/CLV-P-SAALE.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAALE/CLV-P-SAALE.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAALE
Name=Donkey Kong Country
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAALE/CLV-P-SAALE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAALE/CLV-P-SAALE.png
[X-CLOVER Game]
Code=CLV-P-SAALE
diff --git a/DesktopEntries/CLV-P-SAAQE.desktop b/DesktopEntries/CLV-P-SAAQE.desktop
index 043a2531..792f86aa 100644
--- a/DesktopEntries/CLV-P-SAAQE.desktop
+++ b/DesktopEntries/CLV-P-SAAQE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAQE/CLV-P-SAAQE.sfrom --volume 80 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAQE/CLV-P-SAAQE.sfrom --volume 80 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAAQE
Name=Kirby Super Star
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAQE/CLV-P-SAAQE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAQE/CLV-P-SAAQE.png
[X-CLOVER Game]
Code=CLV-P-SAAQE
diff --git a/DesktopEntries/CLV-P-SAAXE.desktop b/DesktopEntries/CLV-P-SAAXE.desktop
index e107dce1..0b0f050d 100644
--- a/DesktopEntries/CLV-P-SAAXE.desktop
+++ b/DesktopEntries/CLV-P-SAAXE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAXE/CLV-P-SAAXE.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SAAXE/CLV-P-SAAXE.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SAAXE
Name=Super Punch-Out!!
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SAAXE/CLV-P-SAAXE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SAAXE/CLV-P-SAAXE.png
[X-CLOVER Game]
Code=CLV-P-SAAXE
diff --git a/DesktopEntries/CLV-P-SABCE.desktop b/DesktopEntries/CLV-P-SABCE.desktop
index 07a8191d..dc377010 100644
--- a/DesktopEntries/CLV-P-SABCE.desktop
+++ b/DesktopEntries/CLV-P-SABCE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABCE/CLV-P-SABCE.sfrom --volume 85 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SABCE/CLV-P-SABCE.sfrom --volume 85 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SABCE
Name=Mega Man X
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABCE/CLV-P-SABCE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SABCE/CLV-P-SABCE.png
[X-CLOVER Game]
Code=CLV-P-SABCE
diff --git a/DesktopEntries/CLV-P-SABDE.desktop b/DesktopEntries/CLV-P-SABDE.desktop
index ef1366a6..f97aefb9 100644
--- a/DesktopEntries/CLV-P-SABDE.desktop
+++ b/DesktopEntries/CLV-P-SABDE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABDE/CLV-P-SABDE.sfrom --volume 37 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SABDE/CLV-P-SABDE.sfrom --volume 37 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SABDE
Name=Super Ghouls'n Ghosts
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABDE/CLV-P-SABDE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SABDE/CLV-P-SABDE.png
[X-CLOVER Game]
Code=CLV-P-SABDE
diff --git a/DesktopEntries/CLV-P-SABHE.desktop b/DesktopEntries/CLV-P-SABHE.desktop
index dc0113cc..50ec7f6a 100644
--- a/DesktopEntries/CLV-P-SABHE.desktop
+++ b/DesktopEntries/CLV-P-SABHE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABHE/CLV-P-SABHE.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SABHE/CLV-P-SABHE.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SABHE
Name=Street Fighter II Turbo: Hyper Fighting
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABHE/CLV-P-SABHE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SABHE/CLV-P-SABHE.png
[X-CLOVER Game]
Code=CLV-P-SABHE
diff --git a/DesktopEntries/CLV-P-SABQE.desktop b/DesktopEntries/CLV-P-SABQE.desktop
index 38e60925..7b4194a8 100644
--- a/DesktopEntries/CLV-P-SABQE.desktop
+++ b/DesktopEntries/CLV-P-SABQE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABQE/CLV-P-SABQE.sfrom --volume 60 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SABQE/CLV-P-SABQE.sfrom --volume 60 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-SABQE
Name=Super Mario RPG: Legend of the Seven Stars
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABQE/CLV-P-SABQE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SABQE/CLV-P-SABQE.png
[X-CLOVER Game]
Code=CLV-P-SABQE
diff --git a/DesktopEntries/CLV-P-SABRE.desktop b/DesktopEntries/CLV-P-SABRE.desktop
index b72fb613..5cf33ed2 100644
--- a/DesktopEntries/CLV-P-SABRE.desktop
+++ b/DesktopEntries/CLV-P-SABRE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABRE/CLV-P-SABRE.sfrom --volume 75 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SABRE/CLV-P-SABRE.sfrom --volume 75 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-SABRE
Name=Secret of Mana
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABRE/CLV-P-SABRE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SABRE/CLV-P-SABRE.png
[X-CLOVER Game]
Code=CLV-P-SABRE
diff --git a/DesktopEntries/CLV-P-SABTE.desktop b/DesktopEntries/CLV-P-SABTE.desktop
index 2e1d92df..bd65f1ee 100644
--- a/DesktopEntries/CLV-P-SABTE.desktop
+++ b/DesktopEntries/CLV-P-SABTE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABTE/CLV-P-SABTE.sfrom --volume 85 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SABTE/CLV-P-SABTE.sfrom --volume 85 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-SABTE
Name=Final Fantasy III
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SABTE/CLV-P-SABTE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SABTE/CLV-P-SABTE.png
[X-CLOVER Game]
Code=CLV-P-SABTE
diff --git a/DesktopEntries/CLV-P-SACBE.desktop b/DesktopEntries/CLV-P-SACBE.desktop
index 1a9ed691..1dfd9789 100644
--- a/DesktopEntries/CLV-P-SACBE.desktop
+++ b/DesktopEntries/CLV-P-SACBE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SACBE/CLV-P-SACBE.sfrom --volume 85 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SACBE/CLV-P-SACBE.sfrom --volume 85 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SACBE
Name=Super Castlevania IV
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SACBE/CLV-P-SACBE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SACBE/CLV-P-SACBE.png
[X-CLOVER Game]
Code=CLV-P-SACBE
diff --git a/DesktopEntries/CLV-P-SACCE.desktop b/DesktopEntries/CLV-P-SACCE.desktop
index f7e2a193..9b835ddf 100644
--- a/DesktopEntries/CLV-P-SACCE.desktop
+++ b/DesktopEntries/CLV-P-SACCE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SACCE/CLV-P-SACCE.sfrom --volume 70 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SACCE/CLV-P-SACCE.sfrom --volume 70 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SACCE
Name=CONTRA III THE ALIEN WARS
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SACCE/CLV-P-SACCE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SACCE/CLV-P-SACCE.png
[X-CLOVER Game]
Code=CLV-P-SACCE
diff --git a/DesktopEntries/CLV-P-SADGE.desktop b/DesktopEntries/CLV-P-SADGE.desktop
index 7553de85..eb98a622 100644
--- a/DesktopEntries/CLV-P-SADGE.desktop
+++ b/DesktopEntries/CLV-P-SADGE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SADGE/CLV-P-SADGE.sfrom --volume 65 -rollback-snapshot-period 600 -output-dir /var/lib/clover/profiles/0/
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SADGE/CLV-P-SADGE.sfrom --volume 65 -rollback-snapshot-period 600 -output-dir /var/lib/clover/profiles/0/
Path=/var/lib/clover/profiles/0//CLV-P-SADGE
Name=Star Fox
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SADGE/CLV-P-SADGE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SADGE/CLV-P-SADGE.png
[X-CLOVER Game]
Code=CLV-P-SADGE
diff --git a/DesktopEntries/CLV-P-SADJE.desktop b/DesktopEntries/CLV-P-SADJE.desktop
index e0bd7901..386bd8a5 100644
--- a/DesktopEntries/CLV-P-SADJE.desktop
+++ b/DesktopEntries/CLV-P-SADJE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SADJE/CLV-P-SADJE.sfrom --volume 70 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SADJE/CLV-P-SADJE.sfrom --volume 70 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SADJE
Name=Yoshi's Island
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SADJE/CLV-P-SADJE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SADJE/CLV-P-SADJE.png
[X-CLOVER Game]
Code=CLV-P-SADJE
diff --git a/DesktopEntries/CLV-P-SADKE.desktop b/DesktopEntries/CLV-P-SADKE.desktop
index 15d9b73e..5a33a1b6 100644
--- a/DesktopEntries/CLV-P-SADKE.desktop
+++ b/DesktopEntries/CLV-P-SADKE.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-SADKE/CLV-P-SADKE.sfrom --volume 65 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-SADKE/CLV-P-SADKE.sfrom --volume 65 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-SADKE
Name=Star Fox 2
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-SADKE/CLV-P-SADKE.png
+Icon=/var/squashfs/usr/share/games/CLV-P-SADKE/CLV-P-SADKE.png
[X-CLOVER Game]
Code=CLV-P-SADKE
diff --git a/DesktopEntries/CLV-P-VAAAJ.desktop b/DesktopEntries/CLV-P-VAAAJ.desktop
index 847853ba..281a1650 100644
--- a/DesktopEntries/CLV-P-VAAAJ.desktop
+++ b/DesktopEntries/CLV-P-VAAAJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAAJ/CLV-P-VAAAJ.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAAAJ/CLV-P-VAAAJ.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VAAAJ
Name=スーパーマリオワールド
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAAJ/CLV-P-VAAAJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAAAJ/CLV-P-VAAAJ.png
[X-CLOVER Game]
Code=CLV-P-VAAAJ
diff --git a/DesktopEntries/CLV-P-VAABJ.desktop b/DesktopEntries/CLV-P-VAABJ.desktop
index 642a9b7a..9c5ad7af 100644
--- a/DesktopEntries/CLV-P-VAABJ.desktop
+++ b/DesktopEntries/CLV-P-VAABJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAABJ/CLV-P-VAABJ.sfrom --volume 80 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAABJ/CLV-P-VAABJ.sfrom --volume 80 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VAABJ
Name=F-ZERO
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAABJ/CLV-P-VAABJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAABJ/CLV-P-VAABJ.png
[X-CLOVER Game]
Code=CLV-P-VAABJ
diff --git a/DesktopEntries/CLV-P-VAAEJ.desktop b/DesktopEntries/CLV-P-VAAEJ.desktop
index e891b800..78151b01 100644
--- a/DesktopEntries/CLV-P-VAAEJ.desktop
+++ b/DesktopEntries/CLV-P-VAAEJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAEJ/CLV-P-VAAEJ.sfrom --volume 85 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAAEJ/CLV-P-VAAEJ.sfrom --volume 85 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VAAEJ
Name=ゼルダの伝説 神々のトライフォース
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAEJ/CLV-P-VAAEJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAAEJ/CLV-P-VAAEJ.png
[X-CLOVER Game]
Code=CLV-P-VAAEJ
diff --git a/DesktopEntries/CLV-P-VAAFJ.desktop b/DesktopEntries/CLV-P-VAAFJ.desktop
index b150e249..a38a6eef 100644
--- a/DesktopEntries/CLV-P-VAAFJ.desktop
+++ b/DesktopEntries/CLV-P-VAAFJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAFJ/CLV-P-VAAFJ.sfrom --volume 70 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAAFJ/CLV-P-VAAFJ.sfrom --volume 70 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VAAFJ
Name=スーパーマリオカート
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAFJ/CLV-P-VAAFJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAAFJ/CLV-P-VAAFJ.png
[X-CLOVER Game]
Code=CLV-P-VAAFJ
diff --git a/DesktopEntries/CLV-P-VAAGJ.desktop b/DesktopEntries/CLV-P-VAAGJ.desktop
index a532dfb2..9e620030 100644
--- a/DesktopEntries/CLV-P-VAAGJ.desktop
+++ b/DesktopEntries/CLV-P-VAAGJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAGJ/CLV-P-VAAGJ.sfrom --volume 75 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAAGJ/CLV-P-VAAGJ.sfrom --volume 75 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-VAAGJ
Name=ファイアーエムブレム 紋章の謎
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAGJ/CLV-P-VAAGJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAAGJ/CLV-P-VAAGJ.png
[X-CLOVER Game]
Code=CLV-P-VAAGJ
diff --git a/DesktopEntries/CLV-P-VAAHJ.desktop b/DesktopEntries/CLV-P-VAAHJ.desktop
index 2a3707bd..42e60d6c 100644
--- a/DesktopEntries/CLV-P-VAAHJ.desktop
+++ b/DesktopEntries/CLV-P-VAAHJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAHJ/CLV-P-VAAHJ.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAAHJ/CLV-P-VAAHJ.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VAAHJ
Name=スーパーメトロイド
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAHJ/CLV-P-VAAHJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAAHJ/CLV-P-VAAHJ.png
[X-CLOVER Game]
Code=CLV-P-VAAHJ
diff --git a/DesktopEntries/CLV-P-VAALJ.desktop b/DesktopEntries/CLV-P-VAALJ.desktop
index 0863b59b..8152cad0 100644
--- a/DesktopEntries/CLV-P-VAALJ.desktop
+++ b/DesktopEntries/CLV-P-VAALJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAALJ/CLV-P-VAALJ.sfrom --volume 100 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAALJ/CLV-P-VAALJ.sfrom --volume 100 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VAALJ
Name=スーパードンキーコング
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAALJ/CLV-P-VAALJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAALJ/CLV-P-VAALJ.png
[X-CLOVER Game]
Code=CLV-P-VAALJ
diff --git a/DesktopEntries/CLV-P-VAAQJ.desktop b/DesktopEntries/CLV-P-VAAQJ.desktop
index b4b1b88f..1978602a 100644
--- a/DesktopEntries/CLV-P-VAAQJ.desktop
+++ b/DesktopEntries/CLV-P-VAAQJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAQJ/CLV-P-VAAQJ.sfrom --volume 80 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VAAQJ/CLV-P-VAAQJ.sfrom --volume 80 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VAAQJ
Name=星のカービィ スーパーデラックス
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VAAQJ/CLV-P-VAAQJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VAAQJ/CLV-P-VAAQJ.png
[X-CLOVER Game]
Code=CLV-P-VAAQJ
diff --git a/DesktopEntries/CLV-P-VABBJ.desktop b/DesktopEntries/CLV-P-VABBJ.desktop
index 76dece88..cd1dc3ef 100644
--- a/DesktopEntries/CLV-P-VABBJ.desktop
+++ b/DesktopEntries/CLV-P-VABBJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABBJ/CLV-P-VABBJ.sfrom --volume 90 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VABBJ/CLV-P-VABBJ.sfrom --volume 90 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VABBJ
Name=スーパーストリートファイターⅡ ザ ニューチャレンジャーズ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABBJ/CLV-P-VABBJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VABBJ/CLV-P-VABBJ.png
[X-CLOVER Game]
Code=CLV-P-VABBJ
diff --git a/DesktopEntries/CLV-P-VABCJ.desktop b/DesktopEntries/CLV-P-VABCJ.desktop
index b4df335c..ed611fdb 100644
--- a/DesktopEntries/CLV-P-VABCJ.desktop
+++ b/DesktopEntries/CLV-P-VABCJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABCJ/CLV-P-VABCJ.sfrom --volume 85 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VABCJ/CLV-P-VABCJ.sfrom --volume 85 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VABCJ
Name=ロックマンX
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABCJ/CLV-P-VABCJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VABCJ/CLV-P-VABCJ.png
[X-CLOVER Game]
Code=CLV-P-VABCJ
diff --git a/DesktopEntries/CLV-P-VABDJ.desktop b/DesktopEntries/CLV-P-VABDJ.desktop
index 72dc8b74..43d0a92c 100644
--- a/DesktopEntries/CLV-P-VABDJ.desktop
+++ b/DesktopEntries/CLV-P-VABDJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABDJ/CLV-P-VABDJ.sfrom --volume 37 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VABDJ/CLV-P-VABDJ.sfrom --volume 37 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VABDJ
Name=超魔界村
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABDJ/CLV-P-VABDJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VABDJ/CLV-P-VABDJ.png
[X-CLOVER Game]
Code=CLV-P-VABDJ
diff --git a/DesktopEntries/CLV-P-VABQJ.desktop b/DesktopEntries/CLV-P-VABQJ.desktop
index 776fb671..b13abb2c 100644
--- a/DesktopEntries/CLV-P-VABQJ.desktop
+++ b/DesktopEntries/CLV-P-VABQJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABQJ/CLV-P-VABQJ.sfrom --volume 60 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VABQJ/CLV-P-VABQJ.sfrom --volume 60 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-VABQJ
Name=スーパーマリオRPG
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABQJ/CLV-P-VABQJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VABQJ/CLV-P-VABQJ.png
[X-CLOVER Game]
Code=CLV-P-VABQJ
diff --git a/DesktopEntries/CLV-P-VABRJ.desktop b/DesktopEntries/CLV-P-VABRJ.desktop
index 7f6b16d9..e5d3a0ee 100644
--- a/DesktopEntries/CLV-P-VABRJ.desktop
+++ b/DesktopEntries/CLV-P-VABRJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABRJ/CLV-P-VABRJ.sfrom --volume 75 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VABRJ/CLV-P-VABRJ.sfrom --volume 75 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-VABRJ
Name=聖剣伝説2
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABRJ/CLV-P-VABRJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VABRJ/CLV-P-VABRJ.png
[X-CLOVER Game]
Code=CLV-P-VABRJ
diff --git a/DesktopEntries/CLV-P-VABTJ.desktop b/DesktopEntries/CLV-P-VABTJ.desktop
index ad71da3e..f6746da6 100644
--- a/DesktopEntries/CLV-P-VABTJ.desktop
+++ b/DesktopEntries/CLV-P-VABTJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABTJ/CLV-P-VABTJ.sfrom --volume 85 -rollback-snapshot-period 3600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VABTJ/CLV-P-VABTJ.sfrom --volume 85 -rollback-snapshot-period 3600
Path=/var/lib/clover/profiles/0//CLV-P-VABTJ
Name=ファイナルファンタジーVI
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VABTJ/CLV-P-VABTJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VABTJ/CLV-P-VABTJ.png
[X-CLOVER Game]
Code=CLV-P-VABTJ
diff --git a/DesktopEntries/CLV-P-VACCJ.desktop b/DesktopEntries/CLV-P-VACCJ.desktop
index 9f02d205..57e32eae 100644
--- a/DesktopEntries/CLV-P-VACCJ.desktop
+++ b/DesktopEntries/CLV-P-VACCJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VACCJ/CLV-P-VACCJ.sfrom --volume 70 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VACCJ/CLV-P-VACCJ.sfrom --volume 70 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VACCJ
Name=魂斗羅スピリッツ
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VACCJ/CLV-P-VACCJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VACCJ/CLV-P-VACCJ.png
[X-CLOVER Game]
Code=CLV-P-VACCJ
diff --git a/DesktopEntries/CLV-P-VACDJ.desktop b/DesktopEntries/CLV-P-VACDJ.desktop
index 433ee603..6d4a4fff 100644
--- a/DesktopEntries/CLV-P-VACDJ.desktop
+++ b/DesktopEntries/CLV-P-VACDJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VACDJ/CLV-P-VACDJ.sfrom --volume 65 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VACDJ/CLV-P-VACDJ.sfrom --volume 65 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VACDJ
Name=がんばれゴエモン ゆき姫救出絵巻
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VACDJ/CLV-P-VACDJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VACDJ/CLV-P-VACDJ.png
[X-CLOVER Game]
Code=CLV-P-VACDJ
diff --git a/DesktopEntries/CLV-P-VADFJ.desktop b/DesktopEntries/CLV-P-VADFJ.desktop
index b616e445..dfb08701 100644
--- a/DesktopEntries/CLV-P-VADFJ.desktop
+++ b/DesktopEntries/CLV-P-VADFJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADFJ/CLV-P-VADFJ.sfrom --volume 70 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VADFJ/CLV-P-VADFJ.sfrom --volume 70 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VADFJ
Name=スーパーフォーメーションサッカー
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADFJ/CLV-P-VADFJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VADFJ/CLV-P-VADFJ.png
[X-CLOVER Game]
Code=CLV-P-VADFJ
diff --git a/DesktopEntries/CLV-P-VADGJ.desktop b/DesktopEntries/CLV-P-VADGJ.desktop
index 9faf1614..4db3baf6 100644
--- a/DesktopEntries/CLV-P-VADGJ.desktop
+++ b/DesktopEntries/CLV-P-VADGJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADGJ/CLV-P-VADGJ.sfrom --volume 65 -rollback-snapshot-period 600 -output-dir /var/lib/clover/profiles/0/
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VADGJ/CLV-P-VADGJ.sfrom --volume 65 -rollback-snapshot-period 600 -output-dir /var/lib/clover/profiles/0/
Path=/var/lib/clover/profiles/0//CLV-P-VADGJ
Name=スターフォックス
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADGJ/CLV-P-VADGJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VADGJ/CLV-P-VADGJ.png
[X-CLOVER Game]
Code=CLV-P-VADGJ
diff --git a/DesktopEntries/CLV-P-VADJJ.desktop b/DesktopEntries/CLV-P-VADJJ.desktop
index 3bd1e40c..668fe681 100644
--- a/DesktopEntries/CLV-P-VADJJ.desktop
+++ b/DesktopEntries/CLV-P-VADJJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADJJ/CLV-P-VADJJ.sfrom --volume 70 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VADJJ/CLV-P-VADJJ.sfrom --volume 70 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VADJJ
Name=スーパーマリオ ヨッシーアイランド
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADJJ/CLV-P-VADJJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VADJJ/CLV-P-VADJJ.png
[X-CLOVER Game]
Code=CLV-P-VADJJ
diff --git a/DesktopEntries/CLV-P-VADKJ.desktop b/DesktopEntries/CLV-P-VADKJ.desktop
index c1f69928..4903819e 100644
--- a/DesktopEntries/CLV-P-VADKJ.desktop
+++ b/DesktopEntries/CLV-P-VADKJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADKJ/CLV-P-VADKJ.sfrom --volume 65 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VADKJ/CLV-P-VADKJ.sfrom --volume 65 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VADKJ
Name=スターフォックス2
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADKJ/CLV-P-VADKJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VADKJ/CLV-P-VADKJ.png
[X-CLOVER Game]
Code=CLV-P-VADKJ
diff --git a/DesktopEntries/CLV-P-VADZJ.desktop b/DesktopEntries/CLV-P-VADZJ.desktop
index 05ad20b1..0eeecf97 100644
--- a/DesktopEntries/CLV-P-VADZJ.desktop
+++ b/DesktopEntries/CLV-P-VADZJ.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
-Exec=/bin/clover-canoe-shvc-wr -rom /var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADZJ/CLV-P-VADZJ.sfrom --volume 90 -rollback-snapshot-period 600
+Exec=/bin/clover-canoe-shvc-wr -rom /var/squashfs/usr/share/games/CLV-P-VADZJ/CLV-P-VADZJ.sfrom --volume 90 -rollback-snapshot-period 600
Path=/var/lib/clover/profiles/0//CLV-P-VADZJ
Name=パネルでポン
-Icon=/var/lib/hakchi/squashfs/usr/share/games/CLV-P-VADZJ/CLV-P-VADZJ.png
+Icon=/var/squashfs/usr/share/games/CLV-P-VADZJ/CLV-P-VADZJ.png
[X-CLOVER Game]
Code=CLV-P-VADZJ
diff --git a/FtpServer/NesMiniFileSystemHandler.cs b/FtpServer/NesMiniFileSystemHandler.cs
index 5fb8b0ab..c505cb38 100644
--- a/FtpServer/NesMiniFileSystemHandler.cs
+++ b/FtpServer/NesMiniFileSystemHandler.cs
@@ -192,19 +192,26 @@ namespace mooftpserv
List<FileSystemEntry> result = new List<FileSystemEntry>();
try
{
- var lines = clovershell.ExecuteSimple("ls -lApe \"" + newPath + "\"", 1000, true)
+ var lines = clovershell.ExecuteSimple("ls -lAp \"" + newPath + "\"", 1000, true)
.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
if (line.StartsWith("total")) continue;
FileSystemEntry entry = new FileSystemEntry();
entry.Mode = line.Substring(0, 13).Trim();
- entry.Name = line.Substring(69).Trim();
+ entry.Name = line.Substring(57).Trim();
entry.IsDirectory = entry.Name.EndsWith("/");
if (entry.IsDirectory) entry.Name = entry.Name.Substring(0, entry.Name.Length - 1);
- entry.Size = long.Parse(line.Substring(29, 15).Trim());
- var dt = line.Substring(44, 25).Trim();
- entry.LastModifiedTimeUtc = DateTime.ParseExact(dt, "ddd MMM d HH:mm:ss yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AllowInnerWhite);
+ entry.Size = long.Parse(line.Substring(34, 9).Trim());
+ var dt = line.Substring(44, 12).Trim();
+ try
+ {
+ entry.LastModifiedTimeUtc = DateTime.ParseExact(dt, "MMM d HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.AllowInnerWhite);
+ }
+ catch (FormatException)
+ {
+ entry.LastModifiedTimeUtc = DateTime.ParseExact(dt, "MMM d yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AllowInnerWhite);
+ }
result.Add(entry);
}
}
@@ -217,6 +224,8 @@ namespace mooftpserv
public ResultOrError<string> ListEntriesRaw(string path)
{
+ if (path == null)
+ path = "/";
if (path.StartsWith("-"))
path = ". " + path;
string newPath = ResolvePath(path);
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 118c5a7f..7ee865d1 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -1037,6 +1037,12 @@
//
resources.ApplyResources(this.gameName, "gameName");
//
+ // exportFolderDialog
+ //
+ resources.ApplyResources(this.exportFolderDialog, "exportFolderDialog");
+ this.exportFolderDialog.RootFolder = System.Environment.SpecialFolder.MyComputer;
+ this.exportFolderDialog.ShowNewFolderButton = false;
+ //
// MainForm
//
this.AllowDrop = true;
diff --git a/MainForm.cs b/MainForm.cs
index 6f79db79..ec16f3ca 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -403,10 +403,17 @@ namespace com.clusterrr.hakchi_gui
maskedTextBoxReleaseDate.Text = app.ReleaseDate;
textBoxPublisher.Text = app.Publisher;
textBoxArguments.Text = app.Command;
- if (File.Exists(app.IconPath))
- pictureBoxArt.Image = NesMiniApplication.LoadBitmap(app.IconPath);
- else
- pictureBoxArt.Image = null;
+ try
+ {
+ if (File.Exists(app.IconPath))
+ pictureBoxArt.Image = NesMiniApplication.LoadBitmap(app.IconPath);
+ else
+ pictureBoxArt.Image = null;
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine("Image loading error: " + ex.Message + ex.StackTrace);
+ }
buttonShowGameGenieDatabase.Enabled = app is NesGame; //ISupportsGameGenie;
textBoxGameGenie.Enabled = app is ISupportsGameGenie;
textBoxGameGenie.Text = (app is ISupportsGameGenie) ? (app as NesMiniApplication).GameGenie : "";
@@ -989,9 +996,9 @@ namespace com.clusterrr.hakchi_gui
workerForm.Config = ConfigIni.GetConfigDictionary();
workerForm.Games = new NesMenuCollection();
workerForm.exportGames = exportGames;
-
+
if (exportGames)
- workerForm.exportDirectory = exportFolderDialog.SelectedPath;
+ workerForm.exportDirectory = Path.Combine(Path.Combine(exportFolderDialog.SelectedPath, "hakchi"), "games");
bool needOriginal = false;
foreach (ListViewItem game in listViewGames.CheckedItems)
diff --git a/MainForm.resx b/MainForm.resx
index 4a115dc5..545cb6e5 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -120,51 +120,17 @@
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>315, 17</value>
</metadata>
- <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <data name="menuStrip.Location" type="System.Drawing.Point, System.Drawing">
- <value>0, 0</value>
- </data>
- <data name="menuStrip.Size" type="System.Drawing.Size, System.Drawing">
- <value>609, 24</value>
- </data>
- <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="menuStrip.TabIndex" type="System.Int32, mscorlib">
- <value>1</value>
- </data>
- <data name="&gt;&gt;menuStrip.Name" xml:space="preserve">
- <value>menuStrip</value>
- </data>
- <data name="&gt;&gt;menuStrip.Type" xml:space="preserve">
- <value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name="&gt;&gt;menuStrip.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name="&gt;&gt;menuStrip.ZOrder" xml:space="preserve">
- <value>5</value>
- </data>
- <data name="fileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>37, 20</value>
- </data>
- <data name="fileToolStripMenuItem.Text" xml:space="preserve">
- <value>&amp;File</value>
- </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="addMoreGamesToolStripMenuItem.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>Ctrl+O</value>
</data>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="addMoreGamesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>208, 22</value>
</data>
<data name="addMoreGamesToolStripMenuItem.Text" xml:space="preserve">
<value>Add more &amp;games</value>
</data>
- <data name="presetsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>208, 22</value>
- </data>
- <data name="presetsToolStripMenuItem.Text" xml:space="preserve">
- <value>Selection presets</value>
- </data>
<data name="toolStripMenuItem2.Size" type="System.Drawing.Size, System.Drawing">
<value>139, 6</value>
</data>
@@ -180,6 +146,12 @@
<data name="deletePresetToolStripMenuItem.Text" xml:space="preserve">
<value>Delete preset</value>
</data>
+ <data name="presetsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>208, 22</value>
+ </data>
+ <data name="presetsToolStripMenuItem.Text" xml:space="preserve">
+ <value>Selection presets</value>
+ </data>
<data name="synchronizeToolStripMenuItem.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>F5</value>
</data>
@@ -207,11 +179,11 @@
<data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>&amp;Exit</value>
</data>
- <data name="kernelToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>52, 20</value>
+ <data name="fileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>37, 20</value>
</data>
- <data name="kernelToolStripMenuItem.Text" xml:space="preserve">
- <value>&amp;Kernel</value>
+ <data name="fileToolStripMenuItem.Text" xml:space="preserve">
+ <value>&amp;File</value>
</data>
<data name="dumpKernelToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>276, 22</value>
@@ -261,6 +233,7 @@
<data name="toolFlashTheWholeNANDStripMenuItem.Text" xml:space="preserve">
<value>Flash the whole NAND (experts only!)</value>
</data>
+ <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="toolFlashTheWholeNANDStripMenuItem.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
@@ -291,11 +264,11 @@
<data name="uninstallToolStripMenuItem.Text" xml:space="preserve">
<value>Uninstall</value>
</data>
- <data name="modulesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>65, 20</value>
+ <data name="kernelToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>52, 20</value>
</data>
- <data name="modulesToolStripMenuItem.Text" xml:space="preserve">
- <value>&amp;Modules</value>
+ <data name="kernelToolStripMenuItem.Text" xml:space="preserve">
+ <value>&amp;Kernel</value>
</data>
<data name="installModulesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>197, 22</value>
@@ -309,11 +282,11 @@
<data name="uninstallModulesToolStripMenuItem.Text" xml:space="preserve">
<value>Uninstall extra modules</value>
</data>
- <data name="settingsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>61, 20</value>
+ <data name="modulesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>65, 20</value>
</data>
- <data name="settingsToolStripMenuItem.Text" xml:space="preserve">
- <value>&amp;Settings</value>
+ <data name="modulesToolStripMenuItem.Text" xml:space="preserve">
+ <value>&amp;Modules</value>
</data>
<data name="languageToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
@@ -341,12 +314,6 @@
<data name="languageToolStripMenuItem.Text" xml:space="preserve">
<value>Language</value>
</data>
- <data name="consoleTypeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>327, 22</value>
- </data>
- <data name="consoleTypeToolStripMenuItem.Text" xml:space="preserve">
- <value>Console type</value>
- </data>
<data name="nESMiniToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>198, 22</value>
</data>
@@ -371,11 +338,11 @@
<data name="superFamicomMiniToolStripMenuItem.Text" xml:space="preserve">
<value>Super Famicom (Japan)</value>
</data>
- <data name="pagesfoldersTypeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <data name="consoleTypeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>327, 22</value>
</data>
- <data name="pagesfoldersTypeToolStripMenuItem.Text" xml:space="preserve">
- <value>Pages/folders structure</value>
+ <data name="consoleTypeToolStripMenuItem.Text" xml:space="preserve">
+ <value>Console type</value>
</data>
<data name="disablePagefoldersToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>356, 22</value>
@@ -455,11 +422,11 @@
<data name="customToolStripMenuItem.Text" xml:space="preserve">
<value>Custom - show Folders Manager every time</value>
</data>
- <data name="cloverconHackToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <data name="pagesfoldersTypeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>327, 22</value>
</data>
- <data name="cloverconHackToolStripMenuItem.Text" xml:space="preserve">
- <value>Controller hacks</value>
+ <data name="pagesfoldersTypeToolStripMenuItem.Text" xml:space="preserve">
+ <value>Pages/folders structure</value>
</data>
<data name="resetUsingCombinationOfButtonsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>308, 22</value>
@@ -491,6 +458,12 @@
<data name="upABStartOnSecondControllerToolStripMenuItem.Text" xml:space="preserve">
<value>"Up+A+B = Start" on 2nd controller</value>
</data>
+ <data name="cloverconHackToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>327, 22</value>
+ </data>
+ <data name="cloverconHackToolStripMenuItem.Text" xml:space="preserve">
+ <value>Controller hacks</value>
+ </data>
<data name="compressGamesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>327, 22</value>
</data>
@@ -527,11 +500,11 @@
<data name="saveSettingsToNESMiniNowToolStripMenuItem.Text" xml:space="preserve">
<value>Save settings to NES/SNES Mini now</value>
</data>
- <data name="toolsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>47, 20</value>
+ <data name="settingsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>61, 20</value>
</data>
- <data name="toolsToolStripMenuItem.Text" xml:space="preserve">
- <value>&amp;Tools</value>
+ <data name="settingsToolStripMenuItem.Text" xml:space="preserve">
+ <value>&amp;Settings</value>
</data>
<data name="saveStateManagerToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>331, 22</value>
@@ -584,11 +557,11 @@
<data name="takeScreenshotToolStripMenuItem.Text" xml:space="preserve">
<value>Take screenshot</value>
</data>
- <data name="helpToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>44, 20</value>
+ <data name="toolsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>47, 20</value>
</data>
- <data name="helpToolStripMenuItem.Text" xml:space="preserve">
- <value>&amp;Help</value>
+ <data name="toolsToolStripMenuItem.Text" xml:space="preserve">
+ <value>&amp;Tools</value>
</data>
<data name="gitHubPageWithActualReleasesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>246, 22</value>
@@ -614,6 +587,33 @@
<data name="aboutToolStripMenuItem.Text" xml:space="preserve">
<value>About...</value>
</data>
+ <data name="helpToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
+ <value>44, 20</value>
+ </data>
+ <data name="helpToolStripMenuItem.Text" xml:space="preserve">
+ <value>&amp;Help</value>
+ </data>
+ <data name="menuStrip.Location" type="System.Drawing.Point, System.Drawing">
+ <value>0, 0</value>
+ </data>
+ <data name="menuStrip.Size" type="System.Drawing.Size, System.Drawing">
+ <value>609, 24</value>
+ </data>
+ <data name="menuStrip.TabIndex" type="System.Int32, mscorlib">
+ <value>1</value>
+ </data>
+ <data name="&gt;&gt;menuStrip.Name" xml:space="preserve">
+ <value>menuStrip</value>
+ </data>
+ <data name="&gt;&gt;menuStrip.Type" xml:space="preserve">
+ <value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name="&gt;&gt;menuStrip.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name="&gt;&gt;menuStrip.ZOrder" xml:space="preserve">
+ <value>5</value>
+ </data>
<data name="groupBoxOptions.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
@@ -1265,27 +1265,6 @@
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>407, 17</value>
</metadata>
- <data name="statusStrip.Location" type="System.Drawing.Point, System.Drawing">
- <value>0, 614</value>
- </data>
- <data name="statusStrip.Size" type="System.Drawing.Size, System.Drawing">
- <value>609, 22</value>
- </data>
- <data name="statusStrip.TabIndex" type="System.Int32, mscorlib">
- <value>6</value>
- </data>
- <data name="&gt;&gt;statusStrip.Name" xml:space="preserve">
- <value>statusStrip</value>
- </data>
- <data name="&gt;&gt;statusStrip.Type" xml:space="preserve">
- <value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name="&gt;&gt;statusStrip.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name="&gt;&gt;statusStrip.ZOrder" xml:space="preserve">
- <value>2</value>
- </data>
<data name="toolStripStatusConnectionIcon.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
@@ -1307,6 +1286,27 @@
<data name="toolStripProgressBar.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 16</value>
</data>
+ <data name="statusStrip.Location" type="System.Drawing.Point, System.Drawing">
+ <value>0, 614</value>
+ </data>
+ <data name="statusStrip.Size" type="System.Drawing.Size, System.Drawing">
+ <value>609, 22</value>
+ </data>
+ <data name="statusStrip.TabIndex" type="System.Int32, mscorlib">
+ <value>6</value>
+ </data>
+ <data name="&gt;&gt;statusStrip.Name" xml:space="preserve">
+ <value>statusStrip</value>
+ </data>
+ <data name="&gt;&gt;statusStrip.Type" xml:space="preserve">
+ <value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name="&gt;&gt;statusStrip.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name="&gt;&gt;statusStrip.ZOrder" xml:space="preserve">
+ <value>2</value>
+ </data>
<metadata name="openFileDialogNes.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>500, 17</value>
</metadata>
@@ -1316,15 +1316,6 @@
<metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>638, 17</value>
</metadata>
- <data name="contextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
- <value>270, 92</value>
- </data>
- <data name="&gt;&gt;contextMenuStrip.Name" xml:space="preserve">
- <value>contextMenuStrip</value>
- </data>
- <data name="&gt;&gt;contextMenuStrip.Type" xml:space="preserve">
- <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
<data name="downloadBoxArtForSelectedGamesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>269, 22</value>
</data>
@@ -1352,6 +1343,15 @@
<data name="deleteSelectedGamesToolStripMenuItem.Text" xml:space="preserve">
<value>Delete selected games</value>
</data>
+ <data name="contextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
+ <value>270, 92</value>
+ </data>
+ <data name="&gt;&gt;contextMenuStrip.Name" xml:space="preserve">
+ <value>contextMenuStrip</value>
+ </data>
+ <data name="&gt;&gt;contextMenuStrip.Type" xml:space="preserve">
+ <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
<metadata name="openFileDialogImage.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 98</value>
</metadata>
@@ -1391,6 +1391,18 @@
<data name="groupBoxDefaultGames.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
+ <data name="checkedListBoxDefaultGames.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+ <value>Top, Bottom, Left, Right</value>
+ </data>
+ <data name="checkedListBoxDefaultGames.Location" type="System.Drawing.Point, System.Drawing">
+ <value>5, 49</value>
+ </data>
+ <data name="checkedListBoxDefaultGames.Size" type="System.Drawing.Size, System.Drawing">
+ <value>282, 454</value>
+ </data>
+ <data name="checkedListBoxDefaultGames.TabIndex" type="System.Int32, mscorlib">
+ <value>3</value>
+ </data>
<data name="&gt;&gt;checkedListBoxDefaultGames.Name" xml:space="preserve">
<value>checkedListBoxDefaultGames</value>
</data>
@@ -1430,30 +1442,6 @@
<data name="&gt;&gt;groupBoxDefaultGames.ZOrder" xml:space="preserve">
<value>7</value>
</data>
- <data name="checkedListBoxDefaultGames.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Top, Bottom, Left, Right</value>
- </data>
- <data name="checkedListBoxDefaultGames.Location" type="System.Drawing.Point, System.Drawing">
- <value>5, 49</value>
- </data>
- <data name="checkedListBoxDefaultGames.Size" type="System.Drawing.Size, System.Drawing">
- <value>282, 454</value>
- </data>
- <data name="checkedListBoxDefaultGames.TabIndex" type="System.Int32, mscorlib">
- <value>3</value>
- </data>
- <data name="&gt;&gt;checkedListBoxDefaultGames.Name" xml:space="preserve">
- <value>checkedListBoxDefaultGames</value>
- </data>
- <data name="&gt;&gt;checkedListBoxDefaultGames.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name="&gt;&gt;checkedListBoxDefaultGames.Parent" xml:space="preserve">
- <value>groupBoxDefaultGames</value>
- </data>
- <data name="&gt;&gt;checkedListBoxDefaultGames.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
<metadata name="timerCalculateGames.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>771, 17</value>
</metadata>
@@ -1475,6 +1463,12 @@
<data name="listViewGames.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
+ <data name="gameName.Text" xml:space="preserve">
+ <value>Game name</value>
+ </data>
+ <data name="gameName.Width" type="System.Int32, mscorlib">
+ <value>253</value>
+ </data>
<data name="listViewGames.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 57</value>
</data>
@@ -1499,11 +1493,8 @@
<metadata name="exportFolderDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>922, 17</value>
</metadata>
- <data name="gameName.Text" xml:space="preserve">
- <value>Game name</value>
- </data>
- <data name="gameName.Width" type="System.Int32, mscorlib">
- <value>253</value>
+ <data name="exportFolderDialog.Description" xml:space="preserve">
+ <value>Select your USB drive</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
diff --git a/Properties/Resources.resx b/Properties/Resources.resx
index 8c30bd49..b08d2863 100644
--- a/Properties/Resources.resx
+++ b/Properties/Resources.resx
@@ -721,9 +721,6 @@
<data name="TooManyPerFolder" xml:space="preserve">
<value>Warning! It's not recommended to store so many games per folder.</value>
</data>
- <data name="FolderNotEmpty" xml:space="preserve">
- <value>The selected folder isn't empty</value>
- </data>
<data name="gitCommit" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\commit.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
diff --git a/WorkerForm.cs b/WorkerForm.cs
index b5ac3c94..a2e07d6b 100644
--- a/WorkerForm.cs
+++ b/WorkerForm.cs
@@ -86,7 +86,7 @@ namespace com.clusterrr.hakchi_gui
const long maxCompressedsRamfsSize = 30 * 1024 * 1024;
string selectedFile = null;
public NesMiniApplication[] addedApplications;
- public static int NandCTotal, NandCUsed, NandCFree, WritedGamesSize, SaveStatesSize;
+ public static long NandCTotal, NandCUsed, NandCFree, WritedGamesSize, SaveStatesSize;
public static bool ExternalSaves = false;
public static long ReservedMemory
{
@@ -107,6 +107,27 @@ namespace com.clusterrr.hakchi_gui
}
}
+ public static string SubConsoleDirectory
+ {
+ get
+ {
+ switch (ConfigIni.ConsoleType)
+ {
+ case MainForm.ConsoleType.NES:
+ return "nes";
+ case MainForm.ConsoleType.Famicom:
+ return "nes-jpn";
+ case MainForm.ConsoleType.SNES:
+ return "snes";
+ case MainForm.ConsoleType.SuperFamicom:
+ return "snes-jpn";
+ default:
+ return ".";
+ }
+ }
+ }
+
+
public WorkerForm(MainForm parentForm)
{
InitializeComponent();
@@ -542,9 +563,12 @@ namespace com.clusterrr.hakchi_gui
byte[] kernel;
if (!string.IsNullOrEmpty(Mod))
{
+ // TODO: check version
+ //#if !DEBUG
// Just to verify that correct console is selected
if (!DoKernelDump(null, maxProgress, progress))
return;
+ //#endif
progress += 80;
kernel = CreatePatchedKernel();
progress += 5;
@@ -789,17 +813,27 @@ namespace com.clusterrr.hakchi_gui
throw new NotImplementedException();
}
- public static void GetMemoryStats()
+ public static void GetMemoryStats(string gameSyncStorage = null)
{
+ string originalGamesPath = NesMiniApplication.GamesCloverPath;
+ const string rootFsPath = "/var/lib/hakchi/rootfs";
+
var clovershell = MainForm.Clovershell;
- var nandc = clovershell.ExecuteSimple("df /dev/nandc | tail -n 1 | awk '{ print $2 \" | \" $3 \" | \" $4 }'", 500, true).Split('|');
+ if (gameSyncStorage == null) gameSyncStorage = clovershell.ExecuteSimple($"hakchi findGameSyncStorage", 3000, false);
+ var storageDevice = clovershell.ExecuteSimple("df /var/games | sed -n '2p' | awk '{print $1}'", 3000, true);
+ if (storageDevice.Equals("/dev/mapper/root-crypt")) storageDevice = "/dev/nandc";
+ var storageStats = clovershell.ExecuteSimple("df " + storageDevice + " | tail -n 1 | awk '{ print $2 \" | \" $3 \" | \" $4 }'", 3000, true).Split('|');
+
ExternalSaves = clovershell.ExecuteSimple("mount | grep /var/lib/clover").Trim().Length > 0;
- WritedGamesSize = int.Parse(clovershell.ExecuteSimple("mkdir -p /var/lib/hakchi/rootfs/usr/share/games/ && du -s /var/lib/hakchi/rootfs/usr/share/games/ | awk '{ print $1 }'", 1000, true)) * 1024;
- SaveStatesSize = int.Parse(clovershell.ExecuteSimple("mkdir -p /var/lib/clover/profiles/0/ && du -s /var/lib/clover/profiles/0/ | awk '{ print $1 }'", 1000, true)) * 1024;
- NandCTotal = int.Parse(nandc[0]) * 1024;
- NandCUsed = int.Parse(nandc[1]) * 1024;
- NandCFree = int.Parse(nandc[2]) * 1024;
- Debug.WriteLine(string.Format("NANDC size: {0:F1}MB, used: {1:F1}MB, free: {2:F1}MB", NandCTotal / 1024.0 / 1024.0, NandCUsed / 1024.0 / 1024.0, NandCFree / 1024.0 / 1024.0));
+ var writedGamesSizeAll = long.Parse(clovershell.ExecuteSimple($"mkdir -p {rootFsPath}{originalGamesPath} && du -s {rootFsPath}{originalGamesPath} | awk '{{ print $1 }}'", 3000, true)) * 1024;
+ if (gameSyncStorage != $"{rootFsPath}{originalGamesPath}")
+ writedGamesSizeAll += long.Parse(clovershell.ExecuteSimple($"mkdir -p {gameSyncStorage}/{SubConsoleDirectory}/ && du -s {gameSyncStorage}/{SubConsoleDirectory}/ | awk '{{ print $1 }}'", 3000, true)) * 1024;
+ WritedGamesSize = writedGamesSizeAll;
+ SaveStatesSize = long.Parse(clovershell.ExecuteSimple("mkdir -p /var/lib/clover/profiles/0/ && du -s /var/lib/clover/profiles/0/ | awk '{ print $1 }'", 3000, true)) * 1024;
+ NandCTotal = long.Parse(storageStats[0]) * 1024;
+ NandCUsed = long.Parse(storageStats[1]) * 1024;
+ NandCFree = long.Parse(storageStats[2]) * 1024;
+ Debug.WriteLine(string.Format("Storage device size: {0:F1}MB, used: {1:F1}MB, free: {2:F1}MB", NandCTotal / 1024.0 / 1024.0, NandCUsed / 1024.0 / 1024.0, NandCFree / 1024.0 / 1024.0));
Debug.WriteLine(string.Format("Used by games: {0:F1}MB", WritedGamesSize / 1024.0 / 1024.0));
Debug.WriteLine(string.Format("Used by save-states: {0:F1}MB", SaveStatesSize / 1024.0 / 1024.0));
Debug.WriteLine(string.Format("Used by other files (mods, configs, etc.): {0:F1}MB", (NandCUsed - WritedGamesSize - SaveStatesSize) / 1024.0 / 1024.0));
@@ -825,10 +859,9 @@ namespace com.clusterrr.hakchi_gui
public void UploadGames()
{
- string gamesPath = NesMiniApplication.GamesCloverPath;
+ string originalGamesPath = NesMiniApplication.GamesCloverPath;
const string rootFsPath = "/var/lib/hakchi/rootfs";
const string installPath = "/var/lib/hakchi";
- const string squashFsPath = "/var/lib/hakchi/squashfs";
int progress = 0;
int maxProgress = 400;
if (Games == null || Games.Count == 0)
@@ -836,7 +869,7 @@ namespace com.clusterrr.hakchi_gui
SetStatus(Resources.BuildingFolders);
if (FoldersMode == NesMenuCollection.SplitStyle.Custom)
{
- if (FoldersManagerFromThread(Games) != System.Windows.Forms.DialogResult.OK)
+ if (FoldersManagerFromThread(Games) != DialogResult.OK)
{
DialogResult = DialogResult.Abort;
return;
@@ -857,33 +890,22 @@ namespace com.clusterrr.hakchi_gui
DialogResult = DialogResult.Abort;
return;
}
- }
- progress += 5;
- SetProgress(progress, maxProgress);
- if (!exportGames)
- {
ShowSplashScreen();
UpdateRootfs();
- var squashFsMount = clovershell.ExecuteSimple($"mount | grep {squashFsPath}", 3000, false);
- if (string.IsNullOrEmpty(squashFsMount))
- clovershell.ExecuteSimple($"mkdir -p {squashFsPath} && mount /dev/mapper/root-crypt {squashFsPath}", 3000, true);
}
+ progress += 5;
+ SetProgress(progress, maxProgress);
SetStatus(Resources.BuildingFolders);
if (Directory.Exists(tempDirectory))
Directory.Delete(tempDirectory, true);
Directory.CreateDirectory(tempDirectory);
// Games!
tempGamesDirectory = Path.Combine(tempDirectory, "games");
- if (exportDirectory != null)
- {
- tempGamesDirectory = exportDirectory;
- }
+ if (exportGames)
+ tempGamesDirectory = Path.Combine(tempGamesDirectory, SubConsoleDirectory);
Directory.CreateDirectory(tempDirectory);
Directory.CreateDirectory(tempGamesDirectory);
- if (Directory.GetDirectories(tempGamesDirectory).Length > 0)
- {
- throw new Exception(Resources.FolderNotEmpty);
- }
+ File.WriteAllBytes(Path.Combine(tempGamesDirectory, ".repair.flag"), new byte[0]);
Dictionary<string, string> originalGames = new Dictionary<string, string>();
var stats = new GamesTreeStats();
AddMenu(Games, originalGames, stats);
@@ -893,7 +915,8 @@ namespace com.clusterrr.hakchi_gui
int startProgress = progress;
if (!exportGames)
{
- GetMemoryStats();
+ var gameSyncStorage = clovershell.ExecuteSimple($"hakchi findGameSyncStorage", 3000, false);
+ GetMemoryStats(gameSyncStorage);
var maxGamesSize = (NandCFree + WritedGamesSize) - ReservedMemory * 1024 * 1024;
if (stats.TotalSize > maxGamesSize)
{
@@ -908,16 +931,9 @@ namespace com.clusterrr.hakchi_gui
using (var gamesTar = new TarStream(tempGamesDirectory))
{
maxProgress = (int)(gamesTar.Length / 1024 / 1024 + 20 + originalGames.Count() * 2);
- SetProgress(progress, maxProgress);
-
- clovershell.ExecuteSimple(string.Format("umount {0}", gamesPath));
- clovershell.ExecuteSimple($"mkdir -p \"{rootFsPath}{gamesPath}\"", 3000, true);
- if (ConfigIni.ConsoleType == MainForm.ConsoleType.NES || ConfigIni.ConsoleType == MainForm.ConsoleType.Famicom)
- {
- clovershell.ExecuteSimple($"[ -f \"{squashFsPath}{gamesPath}/title.fnt\" ] && [ ! -f \"{rootFsPath}{gamesPath}/title.fnt\" ] && cp -f \"{squashFsPath}{gamesPath}/title.fnt\" \"{rootFsPath}{gamesPath}\"/", 3000, false);
- clovershell.ExecuteSimple($"[ -f \"{squashFsPath}{gamesPath}/copyright.fnt\" ] && [ ! -f \"{rootFsPath}{gamesPath}/copyright.fnt\" ] && cp -f \"{squashFsPath}{gamesPath}/copyright.fnt\" \"{rootFsPath}{gamesPath}\"/", 3000, false);
- }
- clovershell.ExecuteSimple(string.Format("rm -rf {0}{1}/CLV-* {0}{1}/??? {2}/menu", rootFsPath, gamesPath, installPath), 5000, true);
+ SetProgress(progress, maxProgress);
+ clovershell.ExecuteSimple($"rm -rf {gameSyncStorage}/{SubConsoleDirectory} {installPath}/menu {rootFsPath}{originalGamesPath}", 5000, true);
+ clovershell.ExecuteSimple($"mkdir -p \"{gameSyncStorage}/{SubConsoleDirectory}\"", 3000, true);
if (gamesTar.Length > 0)
{
@@ -926,89 +942,28 @@ namespace com.clusterrr.hakchi_gui
progress = (int)(startProgress + pos / 1024 / 1024);
SetProgress(progress, maxProgress);
};
-
SetStatus(Resources.UploadingGames);
- clovershell.Execute(string.Format("tar -xvC {0}{1}", rootFsPath, gamesPath), gamesTar, null, null, 30000, true);
+ clovershell.Execute($"tar -xvC \"{gameSyncStorage}/{SubConsoleDirectory}\"", gamesTar, null, null, 30000, true);
}
}
}
- SetStatus(Resources.UploadingOriginalGames);
- // Need to make sure that squashfs if mounted
- startProgress = progress;
- string executablePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
- string desktopEntriesPath = Path.Combine(executablePath, "DesktopEntries");
- foreach (var originalCode in originalGames.Keys)
- {
- if (exportGames)
- {
- string desktopFilePath = Path.Combine(desktopEntriesPath, $"{originalCode}.desktop");
- string tempGamePath = Path.Combine(tempGamesDirectory, $"{originalGames[originalCode]}/{originalCode}");
- Directory.CreateDirectory(Path.Combine(tempGamePath, "autoplay"));
- if (ConfigIni.ConsoleType == MainForm.ConsoleType.NES || ConfigIni.ConsoleType == MainForm.ConsoleType.Famicom)
- {
- Directory.CreateDirectory(Path.Combine(tempGamePath, "pixelart"));
- }
- File.Copy(desktopFilePath, Path.Combine(tempGamePath, $"{originalCode}.desktop"));
- }
- else
- {
- string originalSyncCode = "";
- switch (ConfigIni.ConsoleType)
- {
- case MainForm.ConsoleType.NES:
- case MainForm.ConsoleType.Famicom:
- originalSyncCode =
- $"src=\"{squashFsPath}{gamesPath}/{originalCode}\" && " +
- $"dst=\"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"mkdir -p \"$dst\" && " +
- $"ln -s \"$src/{originalCode}.png\" \"$dst\" && " +
- $"ln -s \"$src/{originalCode}_small.png\" \"$dst\" && " +
- $"ln -s \"$src/{originalCode}.nes\" \"$dst\" && " +
- $"ln -s \"$src/autoplay/\" \"$dst/autoplay\" && " +
- $"ln -s \"$src/pixelart/\" \"$dst/pixelart\" && " +
- $"cp \"$src/{originalCode}.desktop\" \"$dst/{originalCode}.desktop\" && " +
- $"sed -i -e 's/\\/usr\\/bin\\/clover-kachikachi/\\/bin\\/clover-kachikachi-wr/g' \"$dst/{originalCode}.desktop\"";
- break;
- case MainForm.ConsoleType.SNES:
- case MainForm.ConsoleType.SuperFamicom:
- originalSyncCode =
- $"src=\"{squashFsPath}{gamesPath}/{originalCode}\" && " +
- $"dst=\"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"mkdir -p \"$dst\" && " +
- $"ln -s \"$src/{originalCode}.png\" \"$dst\" && " +
- $"ln -s \"$src/{originalCode}_small.png\" \"$dst\" && " +
- $"ln -s \"$src/{originalCode}.sfrom\" \"$dst\" && " +
- $"ln -s \"$src/autoplay/\" \"$dst/autoplay\" && " +
- $"cp \"$src/{originalCode}.desktop\" \"$dst/{originalCode}.desktop\" && " +
- $"sed -i -e 's/\\/usr\\/bin\\/clover-canoe-shvc/\\/bin\\/clover-canoe-shvc-wr/g' \"$dst/{originalCode}.desktop\"";
- break;
- }
- clovershell.ExecuteSimple(originalSyncCode, 30000, true);
- }
- progress += 2;
- SetProgress(progress, maxProgress);
- };
-
- SetStatus(Resources.UploadingConfig);
if (!exportGames)
{
+ SetStatus(Resources.UploadingConfig);
SyncConfig(Config);
}
+ else
+ {
+ SetStatus("Writing games to USB drive...");
+ Directory.CreateDirectory(exportDirectory);
+ if (!ExecuteTool("rsync.exe", $"-ac --delete \"/{tempGamesDirectory.Replace("\\", "/").Replace(":/", "/")}\" \"/{exportDirectory.Replace("\\", "/").Replace(":/", "/")}\""))
+ throw new Exception("Can't rsync to USB drive");
+ }
#if !DEBUG
- if (!exportGames && Directory.Exists(tempDirectory))
+ if (Directory.Exists(tempDirectory))
Directory.Delete(tempDirectory, true);
#endif
- if (exportGames)
- {
- new Process()
- {
- StartInfo = new ProcessStartInfo()
- {
- FileName = tempGamesDirectory,
- }
- }.Start();
- }
SetStatus(Resources.Done);
SetProgress(maxProgress, maxProgress);
}
@@ -1038,9 +993,11 @@ namespace com.clusterrr.hakchi_gui
if (updateTar.Length > 0)
{
var clovershell = MainForm.Clovershell;
- clovershell.Execute("tar -xvC /", updateTar, null, null, 30000, true);
- clovershell.ExecuteSimple("chmod +x /bin/*", 3000, true);
- clovershell.ExecuteSimple("chmod +x /etc/init.d/*", 3000, true);
+ clovershell.ExecuteSimple("mkdir -p /tmp/root", 3000, true);
+ clovershell.Execute("tar -xvC /tmp/root", updateTar, null, null, 30000, true);
+ clovershell.ExecuteSimple("chmod +x /tmp/root/bin/*", 3000, true);
+ clovershell.ExecuteSimple("chmod +x /tmp/root/etc/init.d/*", 3000, true);
+ clovershell.ExecuteSimple("rsync -ac /tmp/root/* /", 3000, true);
}
}
}
@@ -1126,7 +1083,7 @@ namespace com.clusterrr.hakchi_gui
byte[] kernel;
if (!string.IsNullOrEmpty(Mod))
- kernel = CreatePatchedKernel();
+ kernel = CreatePatchedKernel(null, true);
else
kernel = File.ReadAllBytes(KernelDumpPath);
var size = CalcKernelSize(kernel);
@@ -1197,8 +1154,13 @@ namespace com.clusterrr.hakchi_gui
File.Copy(kernelPath ?? KernelDumpPath, tempKernelDump, true);
if (!ExecuteTool("unpackbootimg.exe", string.Format("-i \"{0}\" -o \"{1}\"", tempKernelDump, kernelDirectory)))
throw new Exception("Can't unpack kernel image");
- if (!ExecuteTool("lzop.exe", string.Format("-d \"{0}\" -o \"{1}\"",
- Path.Combine(kernelDirectory, "kernel.img-ramdisk.gz"), initramfs_cpio)))
+ string ramdiskGz = Path.Combine(kernelDirectory, "kernel.img-ramdisk.gz");
+ byte[] output;
+ if (ExecuteTool("xz.exe", string.Format("-dc \"{0}\"",
+ ramdiskGz), out output))
+ File.WriteAllBytes(initramfs_cpio, output);
+ else if (!ExecuteTool("lzop.exe", string.Format("-d \"{0}\" -o \"{1}\"",
+ ramdiskGz, initramfs_cpio)))
throw new Exception("Can't unpack ramdisk");
ExecuteTool("cpio.exe", string.Format("-imd --no-preserve-owner --quiet -I \"{0}\"",
@"..\initramfs.cpio"), ramfsDirectory);
@@ -1206,14 +1168,15 @@ namespace com.clusterrr.hakchi_gui
throw new Exception("Can't unpack ramdisk 2");
}
- private byte[] CreatePatchedKernel(string kernelPath = null)
+ private byte[] CreatePatchedKernel(string kernelPath = null, bool includeExtraBinaries = false)
{
SetStatus(Resources.BuildingCustom);
if (!File.Exists(Path.Combine(ramfsDirectory, "init")))
UnpackRamfs(kernelPath);
if (Directory.Exists(hakchiDirectory))
Directory.Delete(hakchiDirectory, true);
- NesMiniApplication.DirectoryCopy(Path.Combine(modsDirectory, Mod), ramfsDirectory, true);
+ NesMiniApplication.DirectoryCopy(Path.Combine(modsDirectory, Mod), ramfsDirectory, true,
+ includeExtraBinaries ? null : new string[] { "rsync", "usleep" }); // Remove huge files
var ramfsFiles = Directory.GetFiles(ramfsDirectory, "*.*", SearchOption.AllDirectories);
foreach (var file in ramfsFiles)
{
@@ -1269,9 +1232,18 @@ namespace com.clusterrr.hakchi_gui
var argKerneloff = File.ReadAllText(Path.Combine(kernelDirectory, "kernel.img-kerneloff")).Trim();
var argRamdiscoff = File.ReadAllText(Path.Combine(kernelDirectory, "kernel.img-ramdiskoff")).Trim();
var argTagsoff = File.ReadAllText(Path.Combine(kernelDirectory, "kernel.img-tagsoff")).Trim();
- if (!ExecuteTool("lzop.exe", string.Format("--best -f -o \"{0}\" \"{1}\"",
- ramdiskPatched, initramfs_cpioPatched)))
- throw new Exception("Can't repack ramdisk 2");
+ byte[] output;
+ if (ExecuteTool("xz.exe", string.Format("--check=crc32 --lzma2=dict=1MiB -c \"{0}\"",
+ initramfs_cpioPatched), out output))
+ {
+ File.WriteAllBytes(ramdiskPatched, output);
+ }
+ else
+ {
+ if (!ExecuteTool("lzop.exe", string.Format("--best -f -o \"{0}\" \"{1}\"",
+ ramdiskPatched, initramfs_cpioPatched)))
+ throw new Exception("Can't repack ramdisk 2");
+ }
if (!ExecuteTool("mkbootimg.exe", string.Format("--kernel \"{0}\" --ramdisk \"{1}\" --cmdline \"{2}\" --board \"{3}\" --base \"{4}\" --pagesize \"{5}\" --kernel_offset \"{6}\" --ramdisk_offset \"{7}\" --tags_offset \"{8}\" -o \"{9}\"",
Path.Combine(kernelDirectory, "kernel.img-zImage"), ramdiskPatched, argCmdline, argBoard, argBase, argPagesize, argKerneloff, argRamdiscoff, argTagsoff, kernelPatched)))
throw new Exception("Can't rebuild kernel");
@@ -1300,13 +1272,30 @@ namespace com.clusterrr.hakchi_gui
stats.allMenus.Add(menuCollection);
int menuIndex = stats.allMenus.IndexOf(menuCollection);
string targetDirectory;
- if (menuIndex == 0)
- targetDirectory = tempGamesDirectory;
- else
- targetDirectory = Path.Combine(tempGamesDirectory, string.Format("{0:D3}", menuIndex));
+ targetDirectory = Path.Combine(tempGamesDirectory, string.Format("{0:D3}", menuIndex));
foreach (var element in menuCollection)
{
- if (element is NesMiniApplication)
+ if (element is NesDefaultGame)
+ {
+ stats.TotalGames++;
+ var game = element as NesDefaultGame;
+ var gameSize = 25000;
+ string desktopEntriesPath = Path.Combine(baseDirectoryInternal, "DesktopEntries");
+ var originalCode = game.Code;
+ var desktopFilePath = Path.Combine(desktopEntriesPath, $"{originalCode}.desktop");
+ var targetGamePath = Path.Combine(targetDirectory, originalCode);
+ Directory.CreateDirectory(targetGamePath);
+ Directory.CreateDirectory(Path.Combine(targetGamePath, "autoplay"));
+ if (ConfigIni.ConsoleType == MainForm.ConsoleType.NES || ConfigIni.ConsoleType == MainForm.ConsoleType.Famicom)
+ {
+ Directory.CreateDirectory(Path.Combine(targetGamePath, "pixelart"));
+ }
+ File.Copy(desktopFilePath, Path.Combine(targetGamePath, $"{originalCode}.desktop"));
+ stats.TotalSize += gameSize;
+ stats.TransferSize += gameSize;
+ stats.TotalGames++;
+ }
+ else if (element is NesMiniApplication)
{
stats.TotalGames++;
var game = element as NesMiniApplication;
@@ -1360,7 +1349,7 @@ namespace com.clusterrr.hakchi_gui
{
var game = element as NesDefaultGame;
stats.TotalSize += game.Size;
- originalGames[game.Code] = menuIndex == 0 ? "." : string.Format("{0:D3}", menuIndex);
+ originalGames[game.Code] = string.Format("{0:D3}", menuIndex);
}
}
}
diff --git a/data/zImage b/data/zImage
index b273922d..5c655969 100644
--- a/data/zImage
+++ b/data/zImage
Binary files differ
diff --git a/hakchi_gui.csproj b/hakchi_gui.csproj
index 3b801600..e210881f 100644
--- a/hakchi_gui.csproj
+++ b/hakchi_gui.csproj
@@ -520,6 +520,12 @@
<Content Include="folder_images\cps.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
+ <Content Include="tools\rsync.exe">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="tools\xz.exe">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
<Content Include="user_mods\extra_space.hmod\readme.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
@@ -1712,9 +1718,6 @@
<Content Include="LICENSE">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
- <Content Include="mods\hmods\clovershell.hmod">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </Content>
<Content Include="mods\hmods\copyleft.hmod">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
@@ -2361,6 +2364,21 @@
<Content Include="data\zImage">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
+ <Content Include="mods\hmods\ntfs-3g.hmod">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="mods\hmods\clovershell.hmod">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="mods\hmods\modules-3.4.112.madmonkey.hmod">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="mods\mod_hakchi\etc\filesystems">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="mods\mod_hakchi\hakchi\rootfs\etc\pleasewait.fb">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
<None Include="Properties\app.manifest" />
<Content Include="user_mods\snes_custom_filters.hmod\canoe-custom-filters">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
diff --git a/mods/hmods/core-modules.hmod b/mods/hmods/core-modules.hmod
deleted file mode 100644
index ca8247a1..00000000
--- a/mods/hmods/core-modules.hmod
+++ /dev/null
Binary files differ
diff --git a/mods/hmods/modules-3.4.112.madmonkey.hmod b/mods/hmods/modules-3.4.112.madmonkey.hmod
new file mode 100644
index 00000000..3419c1a8
--- /dev/null
+++ b/mods/hmods/modules-3.4.112.madmonkey.hmod
Binary files differ
diff --git a/mods/hmods/ntfs-3g.hmod b/mods/hmods/ntfs-3g.hmod
new file mode 100644
index 00000000..558d5b58
--- /dev/null
+++ b/mods/hmods/ntfs-3g.hmod
Binary files differ
diff --git a/mods/mod_hakchi/bin/busybox b/mods/mod_hakchi/bin/busybox
index 0cf516b5..f2a314ff 100755
--- a/mods/mod_hakchi/bin/busybox
+++ b/mods/mod_hakchi/bin/busybox
Binary files differ
diff --git a/mods/mod_hakchi/etc/filesystems b/mods/mod_hakchi/etc/filesystems
new file mode 100644
index 00000000..2b8cb984
--- /dev/null
+++ b/mods/mod_hakchi/etc/filesystems
@@ -0,0 +1,37 @@
+nodev sysfs
+nodev rootfs
+nodev bdev
+nodev proc
+nodev tmpfs
+nodev devtmpfs
+nodev binfmt_misc
+nodev sockfs
+nodev usbfs
+nodev pipefs
+nodev anon_inodefs
+nodev rpc_pipefs
+nodev configfs
+nodev devpts
+ ext3
+ ext2
+ ext4
+ cramfs
+ squashfs
+nodev ramfs
+ vfat
+ msdos
+ iso9660
+nodev nfs
+nodev nfs4
+nodev cifs
+nodev autofs
+ fuseblk
+nodev fuse
+nodev fusectl
+nodev overlayfs
+ udf
+nodev mqueue
+nodev functionfs
+nodev oprofilefs
+ ntfs
+ exfat
diff --git a/mods/mod_hakchi/hakchi/config b/mods/mod_hakchi/hakchi/config
index 6e90132e..6cefdfe6 100644
--- a/mods/mod_hakchi/hakchi/config
+++ b/mods/mod_hakchi/hakchi/config
@@ -1,5 +1,4 @@
-local cf_backup_dummy='n'
-local cf_backup='n'
-local cf_backup_nandc='n'
-local cf_shutdown='n'
-local cf_usb='y'
+export cf_backup_dummy='n'
+export cf_backup='n'
+export cf_backup_nandc='n'
+export cf_shutdown='r'
diff --git a/mods/mod_hakchi/hakchi/init b/mods/mod_hakchi/hakchi/init
index 50fc66a4..023db13a 100644
--- a/mods/mod_hakchi/hakchi/init
+++ b/mods/mod_hakchi/hakchi/init
@@ -6,6 +6,7 @@ init(){
export modpath="/$modname"
export mountpoint="/newroot"
export temppath="/tmp"
+ echo "$modname init script version: 1.0"
/bin/busybox --install -s /bin/
mkdir -p "$temppath"
@@ -18,15 +19,15 @@ init(){
source "$modpath/script/base"
if [ -d "$modpath/transfer" ]; then
- export cf_usb='n'
source "$modpath/script/transfer"
else
mount_base
fi
if [ -f "$preinit" ]; then
+ export preinit
PATH="$rootfs/sbin:$rootfs/usr/sbin:$rootfs/bin:$rootfs/usr/bin:$PATH"
- "$rootfs/bin/busybox" sh -c "source "$preinit.d/b0000_defines" && source "$preinit" && preinit"
+ "$rootfs/bin/busybox" sh -c "source "$preinit" && preinit"
else
umount_base
fi
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/chmenu b/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
index 3ad32b84..921709ca 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
@@ -2,34 +2,27 @@
source /etc/preinit
script_init
-state_file="$installpath/menu"
+state_path="/var/saves/$modname"
+state_file="$state_path/menu"
[ -z "$1" ] && exit 1
[ -f "$state_file" ] && prev_code="$(cat "$state_file")" || prev_code="000"
[ "$1" == "$prev_code" ] && exit 1
echo "Switching to menu $1"
-if [ "$1" == "000" ]; then
- targetpath="$rootfs$gamepath"
-else
- targetpath="$rootfs$gamepath/$1"
+gameStorage="$(findGameStorage)"
+targetpath="$gameStorage/$1"
+if ! containsGames "$targetpath"; then
+ [ "$1" == "000" ] || exit 1
+ targetpath="$gameStorage"
+ containsGames "$targetpath" || exit 1
fi
-[ -d "$targetpath" ] || exit 1
+mkdir -p "$state_path"
echo "$1" > "$state_file"
echo "New directory: $targetpath"
-
-if [ "$1" != "000" ]; then
- if [ -f "$rootfs$gamepath/title.fnt" ] && [ ! -f "$targetpath/title.fnt" ]; then
- ln -s "$rootfs$gamepath/title.fnt" "$targetpath/title.fnt"
- fi
- if [ -f "$rootfs$gamepath/copyright.fnt" ] && [ ! -f "$targetpath/copyright.fnt" ]; then
- ln -s "$rootfs$gamepath/copyright.fnt" "$targetpath/copyright.fnt"
- fi
-fi
-
uistop
-overmount_games
+overmount_games "$1"
sleep 1
touch "/var/startmcp.flag"
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/hsqs b/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
index 800c4567..041654fc 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
@@ -6,7 +6,7 @@ echo "current firmware: $(currentFirmware)"
printSoftwareInfo
firmware="$1"
-if [ "$firmware" != "_nand_" ]; then
+if [ "$firmware" != "auto" ] && [ "$firmware" != "_nand_" ]; then
firmware="$(echo "$firmware" | sed -re 's/^\/usr\/share\/games\/(nes\/kachikachi\/)?/\/var\/games\//')"
firmware="$(readlink -f "$firmware")"
checkFirmware "$firmware" || exit 1
@@ -17,6 +17,7 @@ cfg_firmware="$firmware"
save_config
[ "$(currentFirmware)" == "$firmware" ] && exit 0
+[ "$(currentFirmware)" == "auto" ] && exit 0 #?
echo "changing firmware to: $firmware"
reboot
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.fb b/mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.fb
new file mode 100644
index 00000000..2826ef40
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.fb
Binary files differ
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.png b/mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.png
new file mode 100644
index 00000000..229e0fd3
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/pleasewait.png
Binary files differ
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
index 684054df..c774d8c6 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
@@ -3,11 +3,13 @@ modpath="/$modname"
#mountpoint="/newroot"
installpath="$mountpoint/var/lib/$modname"
firmwarepath="$installpath/firmware"
+extfirmwarepath="$mountpoint/media/$modname/firmware"
rootfs="$installpath/rootfs"
-squashfs="$installpath/squashfs"
+squashfs="$mountpoint/var/squashfs"
preinit="$rootfs/etc/preinit"
preinitpath="$preinit.d"
sftype=""
sfregion=""
gamepath=""
+profilepath="/var/lib/clover/profiles/0"
temppath="/tmp"
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
index 7ec99650..cb5c9e15 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
@@ -75,7 +75,10 @@ remount_root(){
mount_move l media
mount_move l var
+ stopTask decodepng
+ stopTask aplay
umount "$mountpoint"
+
local loopfile="/var${1##$mountpoint/var}"
[ -f "$loopfile" ] || loopfile="/media${1##$mountpoint/media}"
if ! mount -o loop,ro,noatime "$loopfile" "$mountpoint"; then
@@ -97,7 +100,7 @@ checkFirmware(){
}
currentFirmware(){
- local firmware="$(losetup | awk '{print $3'})"
+ local firmware="$(losetup -a | awk '{print $3'})"
if ! [ -z "$firmware" ]; then
echo "$firmware"
return 0
@@ -109,14 +112,28 @@ currentFirmware(){
return 1
}
+overmountModules(){
+ if [ ! -d "$mountpoint/lib/modules/$(uname -r)" ]; then
+ if [ -d "$rootfs/lib/modules/$(uname -r)" ]; then
+ overmount "/lib/modules"
+ else
+ echo "no modules for loaded kernel $(uname -r)"
+ fi
+ fi
+}
+
loadFirmware(){
[ -z "$(mount | grep -F loop0)" ] || return 1
local firmware="$mountpoint$cfg_firmware"
if ! checkFirmware "$firmware"; then
[ "$cfg_firmware" == "auto" ] || return 0
- [ -d "$firmwarepath" ] || return 0
- firmware="$(find "$firmwarepath" -type f -name "*.hsqs" | sort | head -n 1)"
+ [ -d "$extfirmwarepath" ] && \
+ firmware="$(find "$extfirmwarepath" -type f -name "*.hsqs" | sort | head -n1)"
+ if ! checkFirmware "$firmware"; then
+ [ -d "$firmwarepath" ] && \
+ firmware="$(find "$firmwarepath" -type f -name "*.hsqs" | sort | head -n1)"
+ fi
fi
checkFirmware "$firmware" || return 0
@@ -125,13 +142,7 @@ loadFirmware(){
remount_root "$firmware"
cryptsetup close root-crypt
mountSquash
- if [ ! -d "$mountpoint/lib/modules/$(uname -r)" ]; then
- if [ -d "$rootfs/lib/modules/$(uname -r)" ]; then
- overmount "/lib/modules"
- else
- echo "no modules for loaded kernel $(uname -r)"
- fi
- fi
+ overmountModules
}
shutdown(){
@@ -181,6 +192,8 @@ restore(){
mount_bind(){
if mountpoint -q "$2"; then
umount "$2" || umount -f "$2"
+ else
+ umount "$2" 2>/dev/null
fi
mount -o bind "$1" "$2"
}
@@ -205,7 +218,7 @@ containsGames(){
}
linkGames(){
- local games="$mountpoint/media/$modname/games${1##$rootfs$gamepath}"
+ local games="$mountpoint/media/$modname/games${1##$installpath/games}"
[ -d "$games" ] || games="$installpath/games${1##$rootfs$gamepath}"
[ -d "$games" ] || games="$1"
games="${games##$mountpoint}"
@@ -221,7 +234,7 @@ softwareCheck(){
[ "$(cat "$mountpoint/etc/clover/REGION")" == "JPN" ] && sfregion="jpn"
[ "$(cat "$mountpoint/etc/clover/REGION")" == "EUR" ] && sfregion="eur"
- local feck="$mountpoint/var/lib/clover/profiles/0/home-menu/save/system-save.json"
+ local feck="$mountpoint$profilepath/home-menu/save/system-save.json"
if [ "$sftype" == "snes" ]; then
gamepath="/usr/share/games"
[ -f "$feck" ] && mv -f "$feck" "$feck.nes"
@@ -231,31 +244,35 @@ softwareCheck(){
[ -d "$feck" ] && rm -rf "$feck.snes" && mv "$feck" "$feck.snes"
[ -f "$feck.nes" ] && mv -f "$feck.nes" "$feck"
fi
-
+
+ mkdir -p "$mountpoint$profilepath/$modname"
+
rm -f "$mountpoint/var/saves"
- ln -s "/var/lib/clover/profiles/0" "$mountpoint/var/saves"
+ ln -s "$profilepath" "$mountpoint/var/saves"
}
repair_fonts(){
if [ "$sftype" == "nes" ]; then
mkdir -p "$1" || return 1
- [ ! -f "$1/title.fnt" ] && (cp $rootfs$gamepath/title.fnt "$1" || cp $squashfs$gamepath/title.fnt "$1")
- [ ! -f "$1/copyright.fnt" ] && (cp $rootfs$gamepath/copyright.fnt "$1" || cp $squashfs$gamepath/copyright.fnt "$1")
+ [ ! -f "$1/title.fnt" ] && copy "$squashfs$gamepath/title.fnt" "$1/"
+ [ ! -f "$1/copyright.fnt" ] && copy "$squashfs$gamepath/copyright.fnt" "$1/"
fi
}
repair_games(){
[ -w "$1" ] || return 0
+ [ -f "$1/.repair.flag" ] || return 0
+ cat "$rootfs/etc/pleasewait.fb" | gunzip -c - > "/dev/fb0"
local usesymlink=''
- ln -s / "$1/symlinktest" && rm "$1/symlinktest" && usesymlink='y'
-
+ ln -s / "$1/symlinktest" 2>/dev/null && rm -f "$1/symlinktest" && usesymlink='y'
+
ls -1 "$squashfs$gamepath" | grep CLV- | while read code
do
- local gamedir="$1/$code"
+ local gamedir=$(find "$1" -name $code -type d)
local squashgamedir="$squashfs$gamepath/$code"
-
+
[ -d "$gamedir" ] || continue
-
+
if [ ! -f "$gamedir/$code.desktop" ]; then
cp "$squashgamedir/$code.desktop" "$gamedir/"
[ "$sftype" == "nes" ] && \
@@ -263,10 +280,10 @@ repair_games(){
[ "$sftype" == "snes" ] && \
sed -i -e 's#/usr/bin/clover-canoe-shvc#/bin/clover-canoe-shvc-wr#g' "$gamedir/$code.desktop"
fi
-
- [ -d "$gamedir/autoplay/" ] && ([ "$(ls -A "$gamedir/autoplay/")" ] || rm -r "$gamedir/autoplay/")
- [ -d "$gamedir/pixelart/" ] && ([ "$(ls -A "$gamedir/pixelart/")" ] || rm -r "$gamedir/pixelart/")
-
+
+ [ -d "$gamedir/autoplay/" ] && ([ "$(ls -A "$gamedir/autoplay/")" ] || rm -rf "$gamedir/autoplay/")
+ [ -d "$gamedir/pixelart/" ] && ([ "$(ls -A "$gamedir/pixelart/")" ] || rm -rf "$gamedir/pixelart/")
+
find "$squashgamedir" -maxdepth 1 | sed -n '1!p' | while read squashfile
do
if [ "$usesymlink" == "y" ]; then
@@ -276,19 +293,58 @@ repair_games(){
fi
done
done
- sync
- return 0
+
+ ls -1 "$1" | while read f; do repair_fonts "$1/$f"; done
+
+ rm -f "$1/.repair.flag" && sync && reboot
+}
+
+checkGamepath(){
+ containsGames "$1" && echo "$1" && return 0
+ containsGames "$1/000" && echo "$1" && return 0
+ return 1
+}
+
+checkPath(){
+ [ -d "$1" ] && echo "$1" && return 0
+ return 1
+}
+
+findGameSyncStorage(){
+ checkPath "$mountpoint/media/hakchi/games" && return 0
+ mkdir -p "$installpath/games"
+ checkPath "$installpath/games" && return 0
+ return 1
+}
+
+findGameStorage(){
+ checkGamepath "$mountpoint/media/hakchi/games/$sftype-$sfregion" && return 0
+ checkGamepath "$mountpoint/media/hakchi/games/$sftype" && return 0
+ checkGamepath "$mountpoint/media/hakchi/games" && return 0
+
+ checkGamepath "$installpath/games/$sftype-$sfregion" && return 0
+ checkGamepath "$installpath/games/$sftype" && return 0
+ checkGamepath "$installpath/games" && return 0
+ return 1
}
overmount_games(){
- local menu_code="000"
- [ -f "$installpath/menu" ] && menu_code="$(cat "$installpath/menu")"
- containsGames "$rootfs$gamepath/$menu_code" || menu_code=""
+ local gameStorage="$(findGameStorage)" || return 0
+ local state_path="$mountpoint$profilepath/$modname"
+ local state_file="$state_path/menu"
+ local menu_code="$1"
+ [ -z "$1" ] && menu_code="000"
+ [ -z "$1" ] && [ -f "$state_file" ] && menu_code="$(cat "$state_file")"
+ containsGames "$gameStorage/$menu_code" || menu_code=""
echo "menu code: $menu_code"
- if containsGames "$rootfs$gamepath/$menu_code"; then
- overmount "$gamepath/$menu_code" "$gamepath" && repair_games "$rootfs$gamepath/$menu_code" && linkGames "$rootfs$gamepath/$menu_code" && return 0
+ if containsGames "$gameStorage/$menu_code"; then
+ mount_bind "$gameStorage/$menu_code" "$mountpoint/$gamepath" && \
+ repair_games "$gameStorage"
+ repair_fonts "$gameStorage/$menu_code" && \
+ linkGames "$gameStorage/$menu_code" && \
+ return 0
else
- echo "no romz found at: $rootfs$gamepath/$menu_code"
+ echo "no romz found at: $gameStorage/$menu_code"
fi
linkGames "$gamepath"
return 1
@@ -330,15 +386,86 @@ printSoftwareInfo(){
echo "region=$sfregion"
}
+stopTask(){
+ local tokill="false"
+ if [ "$1" = "-f" ]; then
+ tokill="true"
+ shift
+ fi
+ local pid="$(pidof "$1")"
+ [ -z "$pid" ] && return 0
+ "$tokill" && kill "$pid"
+ wait "$pid"
+}
+
+waitTask(){
+ local A="stopTask ${1+"$@"}"
+ trap "$A" EXIT
+}
+
showImage(){
- image="$(eval echo "$1")"
+ local image="$(eval echo "$1")"
[ -f "$image" ] || image="$rootfs$1"
[ -f "$image" ] || image="$squashfs$1"
[ -f "$image" ] || return 1
decodepng "$image" > "/dev/fb0" &
+ waitTask decodepng
+ return 0
+}
+
+playSound(){
+ local wavfile="$(eval echo "$1")"
+ [ -f "$wavfile" ] || wavfile="$rootfs$1"
+ [ -f "$wavfile" ] || wavfile="$squashfs$1"
+ [ -f "$wavfile" ] || return 1
+ aplay -q "$wavfile" &
+ waitTask aplay
return 0
}
hwmon(){
cat "/sys/devices/virtual/hwmon/hwmon1/temp1_input"
}
+
+usedBlockSpace(){
+ local path="$1"
+ [ -e "$path" ] || path="$rootfs"
+ local line="$(df -k "$path" | tail -n1)"
+ local used="$(echo "$line" | awk '{print $3}')"
+ local available="$(echo "$line" | awk '{print $4}')"
+ local total="$(($used+$available))"
+ echo "$used $total"
+}
+
+freeBlockSpace(){
+ local path="$1"
+ [ -e "$path" ] || path="$rootfs"
+ df -k "$path" | tail -n1 | awk '{print $4}'
+}
+
+usedSpace(){
+# Warning: SLOW
+ local path="$1"
+ [ -e "$path" ] || path="$rootfs"
+ du -ksx "$path" | awk '{print $1}'
+}
+
+usedBy(){
+ case "$1" in
+ games)
+ usedSpace "$(findGameSyncStorage)"
+ ;;
+ saves)
+ usedSpace "$profilepath"
+ ;;
+ mods)
+ usedSpace "$rootfs"
+ ;;
+ firmware)
+ usedSpace "$firmwarepath"
+ ;;
+ *)
+ echo "Usage: usedBy {games|saves|mods|firmware}"
+ return 1
+ esac
+}
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup
index 8377e1d7..6819ccdd 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup
@@ -14,7 +14,7 @@ backup_nandb(){
if [ ! -f "$nandb_filename" ]; then
echo "backup $nandb_filename"
dd if=/dev/mapper/root-crypt bs=4k \
- count=$((($(hexdump -e '1/4 "%u"' -s $((0x28)) -n 4 /dev/mapper/root-crypt)+0xfff)/0x1000)) \
+ count="$((($(hexdump -e '1/4 "%u"' -s $((0x28)) -n 4 /dev/mapper/root-crypt)+0xfff)/0x1000))" \
> "$nandb_filename" && \
md5sum "$nandb_filename" > "$nandb_filename.md5"
fi
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
index 786d6f36..ddfffdb4 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
@@ -1,81 +1,114 @@
-disableUsbDevice(){
- #disable usb
- echo 0 > "/sys/devices/sunxi_usb/usb_role"
-}
-
-switchToUsbDevice(){
- echo Switching to USB device mode
- disableUsbDevice
-
- # enable device mode
- echo 2 > "/sys/devices/sunxi_usb/usb_role"
-
- # make sure the usb gadgets are disabled
- echo 0 > "/sys/devices/virtual/android_usb/android0/enable"
-}
-
-switchToUsbHost(){
- echo Switching to USB host mode
- # make sure the usb gadgets are disabled
- echo 0 > "/sys/devices/virtual/android_usb/android0/enable"
-
- disableUsbDevice
-
- # enable host mode
- echo 1 > "/sys/devices/sunxi_usb/usb_role"
-}
-
-checkUsbStorage(){
- local disk="/dev/sda1"
-
- local timeout=5
- while [ $timeout -gt 0 ] && ! [ -b "$disk" ]; do
- echo "waiting for media $timeout"
- let timeout=timeout-1
- sleep 1
- done
-
- [ -b "$disk" ] || return 1
-
- local ro="defaults,nosuid,nodev,noatime,ro"
- local rw="defaults,nosuid,nodev,noatime,rw"
- mount -o $ro "$disk" "$mountpoint/media" || return 1
-
- local saves="$modname/saves"
-
- if [ -d "$mountpoint/media/$saves" ] || [ -d "$mountpoint/media/$modname/transfer" ] || [ "$cfg_usb_rw" == "y" ]; then
- mount -o remount,$rw "$disk"
- fi
- [ -d "$mountpoint/media/$saves" ] && mount_bind "$mountpoint/media/$saves" "$mountpoint/var/lib/clover/profiles/0"
-
- local bootlogo0="boot.png"
- local bootlogo1="$mountpoint/media/$modname/$bootlogo0"
- local bootlogo2="$rootfs/etc/$bootlogo0"
- if [ -f "$bootlogo1" ]; then
- rsync -ac "$bootlogo1" "$bootlogo2"
- showImage "$bootlogo2"
- cfg_boot_logo=''
- else
- [ -f "$bootlogo2" ] && rm "$bootlogo2" && source "$preinit.d/p7010_bootlogo"
- fi
-
- return 0
-}
-
-checkUsbGamepath(){
- local disk="/dev/sda1"
- [ -b "$disk" ] || return 1
-
- local games="$modname/games"
- if containsGames "$mountpoint/media/$games"; then
- if ! mkdir -p "$rootfs$gamepath"; then
- rm -rf "$rootfs$gamepath"
- mkdir -p "$rootfs$gamepath" || return 1
- fi
- mount_bind "$mountpoint/media/$games" "$rootfs$gamepath"
- return 0
- else
- echo "no romz found at: $disk:/$games"
- return 1
- fi
-}
+disableUsbDevice(){
+ #disable usb
+ [ -f "/sys/devices/sunxi_usb/usb_role" ] || return 1
+ echo 0 > "/sys/devices/sunxi_usb/usb_role"
+}
+
+switchToUsbDevice(){
+ [ -f "/sys/devices/sunxi_usb/usb_role" ] || return 1
+ disableUsbDevice
+ # enable device mode
+ echo 2 > "/sys/devices/sunxi_usb/usb_role"
+ # make sure the usb gadgets are disabled
+ echo 0 > "/sys/devices/virtual/android_usb/android0/enable"
+}
+
+switchToUsbHost(){
+ [ -f "/sys/devices/sunxi_usb/usb_role" ] || return 1
+ # make sure the usb gadgets are disabled
+ [ -f "/sys/devices/virtual/android_usb/android0/enable" ] && \
+ echo 0 > "/sys/devices/virtual/android_usb/android0/enable"
+ disableUsbDevice
+ # enable host mode
+ echo 1 > "/sys/devices/sunxi_usb/usb_role"
+}
+
+getUsbStorageIds(){
+ find "/dev/bus/usb" -type c | while read device
+ do
+ hexdump -n 1 -s 32 "$device" -C | grep -e '^00000020 08' && echo "$device"
+ done
+}
+
+waitForUsbDevice(){
+ [ -z "$(getUsbStorageIds)" ] && return 1
+ local blockDevice="$1"
+ local timeout=5
+ while [ $timeout -gt 0 ] && ! [ -b "$blockDevice" ]; do
+ echo "waiting for media $timeout"
+ let timeout=timeout-1
+ sleep 1
+ done
+ [ -b "$blockDevice" ]
+}
+
+checkStorageDevice(){
+ local blockDevice="$1"
+ [ -b "$blockDevice" ] || return 1
+
+ local ro="defaults,nosuid,nodev,noatime,ro"
+ local rw="defaults,nosuid,nodev,noatime,rw"
+ local games="$modname/games"
+ local saves="$modname/saves"
+
+ if ! [ "$cfg_usb_rw" == "y" ]; then
+ mount -o $ro "$blockDevice" "$mountpoint/media" || return 1
+ fi
+
+ local need_repair=""
+ [ -d "$mountpoint/media/$games" ] && ! [ -z "$(find $mountpoint/media/$games -name .repair.flag -maxdepth 2)" ] && need_repair=y
+
+ if [ -d "$mountpoint/media/$saves" ] || [ -d "$mountpoint/media/$modname/transfer" ] || [ "$cfg_usb_rw" == "y" ] || [ "$need_repair" == "y" ]; then
+ umount "$mountpoint/media" 2>/dev/null
+ mount -o $rw "$blockDevice" "$mountpoint/media" || return 1
+ fi
+
+ if ! [ -d "$mountpoint/media/$modname" ]; then
+ umount "$mountpoint/media"
+ return 1
+ fi
+
+ [ -d "$mountpoint/media/$saves" ] && mount_bind "$mountpoint/media/$saves" "$mountpoint$profilepath"
+
+ local bootlogo0="boot.png"
+ local bootlogo1="$mountpoint/media/$modname/$bootlogo0"
+ local bootlogo2="$rootfs/etc/$bootlogo0"
+ if [ -f "$bootlogo1" ]; then
+ rsync -ac "$bootlogo1" "$bootlogo2"
+ showImage "$bootlogo2"
+ cfg_boot_logo=''
+ else
+ [ -f "$bootlogo2" ] && rm -f "$bootlogo2" && source "$preinit.d/p7010_bootlogo"
+ fi
+
+ local bootsound0="boot.wav"
+ local bootsound1="$mountpoint/media/$modname/$bootsound0"
+ local bootsound2="$rootfs/etc/$bootsound0"
+ if [ -f "$bootsound1" ]; then
+ [ -f "$bootsound2" ] || playSound "$bootsound1"
+ rsync -ac "$bootsound1" "$bootsound2"
+ else
+ rm -f "$bootsound2"
+ fi
+
+ return 0
+}
+
+checkExtStorage(){
+ local di
+ local d
+ local p
+ local blockDevice="/dev/sd"
+ waitForUsbDevice "${blockDevice}a1"
+ for di in $(seq 97 99); do
+ d="$(printf "\\$(printf %o $di)\n")"
+ for p in $(seq 1 9); do
+ checkStorageDevice "$blockDevice$d$p" && return 0
+ done
+ done
+ blockDevice="/dev/mmcblk0p"
+ for p in $(seq 1 9); do
+ checkStorageDevice "$blockDevice$p" && return 0
+ done
+ return 1
+}
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
index 7e99591c..00917bff 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
@@ -1,3 +1,6 @@
cfg_boot_stock='n'
+cfg_disable_armet='y'
cfg_firmware='auto'
-cfg_usb_host='n'
+cfg_nes_extra_args=''
+cfg_snes_extra_args=''
+cfg_usb_host='y'
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo
index 9675ad27..4a5e3f18 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo
@@ -1 +1,2 @@
showImage "$cfg_boot_logo" || showImage "$rootfs/etc/boot.png" || showImage "$rootfs/etc/$modname.png"
+playSound "$rootfs/etc/boot.wav"
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
index 6f299d7f..43b27c24 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
@@ -1,13 +1,12 @@
-if [ "$cfg_usb_host" != "y" ]; then
- switchToUsbDevice
-else
- # the usb driver needs some time to initialize
- sleep 1
-
- if [ -z "$(lsusb | grep -v "1d6b:0001")" ]; then
- switchToUsbDevice
- else
- checkUsbStorage
- fi
-
-fi
+if [ "$cfg_usb_host" != "y" ]; then
+ switchToUsbDevice
+else
+ switchToUsbHost
+ # the usb driver needs some time to initialize
+ sleep 1
+ if [ -z "$(lsusb | grep -v "1d6b:0001")" ]; then
+ switchToUsbDevice
+ fi
+fi
+
+checkExtStorage
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
index e14653c0..ba531140 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
@@ -2,12 +2,5 @@
mod_repair_etc
softwareCheck
-checkUsbGamepath
-if [ ! -d "$mountpoint/lib/modules/$(uname -r)" ]; then
- if [ -d "$rootfs/lib/modules/$(uname -r)" ]; then
- overmount "/lib/modules"
- else
- echo "no modules for loaded kernel $(uname -r)"
- fi
-fi
+overmountModules
diff --git a/mods/mod_hakchi/hakchi/script/transfer b/mods/mod_hakchi/hakchi/script/transfer
index 6a27c7bf..82110c8f 100644
--- a/mods/mod_hakchi/hakchi/script/transfer
+++ b/mods/mod_hakchi/hakchi/script/transfer
@@ -68,5 +68,6 @@ transfer_path "$transferpath"
echo
save_config
-[ "$cf_shutdown" != "y" ] || shutdown
+[ "$cf_shutdown" == "y" ] && shutdown
+[ "$cf_shutdown" == "r" ] && reboot
echo
diff --git a/tools/cygpopt-0.dll b/tools/cygpopt-0.dll
new file mode 100644
index 00000000..27fe24c2
--- /dev/null
+++ b/tools/cygpopt-0.dll
Binary files differ
diff --git a/tools/rsync.exe b/tools/rsync.exe
new file mode 100644
index 00000000..329e9e81
--- /dev/null
+++ b/tools/rsync.exe
Binary files differ
diff --git a/tools/xz.exe b/tools/xz.exe
new file mode 100644
index 00000000..73ab3bfa
--- /dev/null
+++ b/tools/xz.exe
Binary files differ