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>2017-10-10 16:44:59 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2017-10-10 16:47:23 +0300
commit6af516520f949979686adc4399926d3fe3dc0441 (patch)
tree70487d51693c4f45b1d9839ee9294b10520384d8
parent115c6a445c519103eb7aaeb09930f104d94228fc (diff)
Reduced size of original games, fixes, cleanup
-rw-r--r--FelLib/Fel.cs43
-rw-r--r--MainForm.cs214
-rw-r--r--Properties/AssemblyInfo.cs4
-rw-r--r--WaitingFelForm.cs16
-rw-r--r--WorkerForm.cs48
-rw-r--r--hakchi_gui.csproj4
-rw-r--r--user_mods/remove_thumbnails.hmod/install2
-rw-r--r--user_mods/remove_thumbnails.hmod/readme.txt3
8 files changed, 176 insertions, 158 deletions
diff --git a/FelLib/Fel.cs b/FelLib/Fel.cs
index ca44c35a..7e3a8bdd 100644
--- a/FelLib/Fel.cs
+++ b/FelLib/Fel.cs
@@ -64,14 +64,14 @@ namespace com.clusterrr.FelLib
var fel = new Fel();
try
{
- fel.Open(vid, pid);
- Debug.WriteLine("Device detection successful");
- return true;
- }
- catch (Exception ex)
- {
- Debug.WriteLine("Device detection error: " + ex.Message + ex.StackTrace);
- return false;
+ if (fel.Open(vid, pid))
+ {
+ Debug.WriteLine("Device detection successful");
+ return true;
+ } else
+ {
+ return false;
+ }
}
finally
{
@@ -79,12 +79,12 @@ namespace com.clusterrr.FelLib
}
}
- public void Open(UInt16 vid, UInt16 pid)
+ public bool Open(UInt16 vid, UInt16 pid)
{
this.vid = vid;
this.pid = pid;
Close();
- Debug.WriteLine("Trying to open device...");
+ //Debug.WriteLine("Trying to open device...");
var devices = UsbDevice.AllDevices;
device = null;
foreach (UsbRegistry regDevice in devices)
@@ -95,7 +95,13 @@ namespace com.clusterrr.FelLib
break;
}
}
- if (device == null) throw new FelException("Device with such VID and PID not found");
+ if (device == null)
+ {
+#if VERY_DEBUG
+ Debug.WriteLine("Device with such VID and PID not found");
+#endif
+ return false;
+ }
IUsbDevice wholeUsbDevice = device as IUsbDevice;
if (!ReferenceEquals(wholeUsbDevice, null))
@@ -135,12 +141,21 @@ namespace com.clusterrr.FelLib
}
}
if (inEndp != 0x82 || outEndp != 0x01)
- throw new Exception("Uncorrect FEL device");
+ {
+ Debug.WriteLine("Uncorrect FEL device/mode");
+ return false;
+ }
epReader = device.OpenEndpointReader((ReadEndpointID)inEndp, 65536);
epWriter = device.OpenEndpointWriter((WriteEndpointID)outEndp);
Debug.WriteLine("Trying to verify device");
- if (VerifyDevice().Board != 0x00166700) throw new FelException("Invalid board ID: " + VerifyDevice().Board);
+ if (VerifyDevice().Board != 0x00166700)
+ {
+ Debug.WriteLine("Invalid board ID: " + VerifyDevice().Board);
+ return false;
+ }
+
+ return true;
}
public void Close()
{
@@ -394,7 +409,7 @@ namespace com.clusterrr.FelLib
{
Thread.Sleep(500);
callback?.Invoke(CurrentAction.RunningCommand, command);
- }
+ }
int errorCount = 0;
while (true)
{
diff --git a/MainForm.cs b/MainForm.cs
index 512ed1d4..a0a9ffa0 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -31,116 +31,116 @@ namespace com.clusterrr.hakchi_gui
public static bool? DownloadCover;
static NesDefaultGame[] defaultNesGames = new NesDefaultGame[] {
- new NesDefaultGame { Code = "CLV-P-NAAAE", Name = "Super Mario Bros.", Size = 571031 },
- new NesDefaultGame { Code = "CLV-P-NAACE", Name = "Super Mario Bros. 3", Size = 1163285 },
- new NesDefaultGame { Code = "CLV-P-NAADE", Name = "Super Mario Bros. 2",Size = 1510337 },
- new NesDefaultGame { Code = "CLV-P-NAAEE", Name = "Donkey Kong", Size = 556016 },
- new NesDefaultGame { Code = "CLV-P-NAAFE", Name = "Donkey Kong Jr." , Size = 558176 },
- new NesDefaultGame { Code = "CLV-P-NAAHE", Name = "Excitebike", Size = 573231 },
- new NesDefaultGame { Code = "CLV-P-NAANE", Name = "The Legend of Zelda", Size = 663910 },
- new NesDefaultGame { Code = "CLV-P-NAAPE", Name = "Kirby's Adventure", Size = 1321661 },
- new NesDefaultGame { Code = "CLV-P-NAAQE", Name = "Metroid", Size = 662601 },
- new NesDefaultGame { Code = "CLV-P-NAARE", Name = "Balloon Fight", Size = 556131 },
- new NesDefaultGame { Code = "CLV-P-NAASE", Name = "Zelda II - The Adventure of Link", Size = 1024158 },
- new NesDefaultGame { Code = "CLV-P-NAATE", Name = "Punch-Out!! Featuring Mr. Dream", Size = 1038128 },
- new NesDefaultGame { Code = "CLV-P-NAAUE", Name = "Ice Climber", Size = 553436 },
- new NesDefaultGame { Code = "CLV-P-NAAVE", Name = "Kid Icarus", Size = 670710 },
- new NesDefaultGame { Code = "CLV-P-NAAWE", Name = "Mario Bros.", Size = 1018973 },
- new NesDefaultGame { Code = "CLV-P-NAAXE", Name = "Dr. MARIO", Size = 1089427 },
- new NesDefaultGame { Code = "CLV-P-NAAZE", Name = "StarTropics", Size = 1299361 },
- new NesDefaultGame { Code = "CLV-P-NABBE", Name = "MEGA MAN™ 2", Size = 569868 },
- new NesDefaultGame { Code = "CLV-P-NABCE", Name = "GHOSTS'N GOBLINS™", Size = 440971 },
- new NesDefaultGame { Code = "CLV-P-NABJE", Name = "FINAL FANTASY®", Size = 552556 },
- new NesDefaultGame { Code = "CLV-P-NABKE", Name = "BUBBLE BOBBLE" , Size = 474232 },
- new NesDefaultGame { Code = "CLV-P-NABME", Name = "PAC-MAN", Size = 325888 },
- new NesDefaultGame { Code = "CLV-P-NABNE", Name = "Galaga", Size = 347079 },
- new NesDefaultGame { Code = "CLV-P-NABQE", Name = "Castlevania", Size = 434240 },
- new NesDefaultGame { Code = "CLV-P-NABRE", Name = "GRADIUS", Size = 370790 },
- new NesDefaultGame { Code = "CLV-P-NABVE", Name = "Super C", Size = 565974 },
- new NesDefaultGame { Code = "CLV-P-NABXE", Name = "Castlevania II Simon's Quest", Size = 569759 },
- new NesDefaultGame { Code = "CLV-P-NACBE", Name = "NINJA GAIDEN", Size =573536 },
- new NesDefaultGame { Code = "CLV-P-NACDE", Name = "TECMO BOWL", Size =568276 },
- new NesDefaultGame { Code = "CLV-P-NACHE", Name = "DOUBLE DRAGON II: The Revenge", Size = 578900 }
+ new NesDefaultGame { Code = "CLV-P-NAAAE", Name = "Super Mario Bros.", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAACE", Name = "Super Mario Bros. 3", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAADE", Name = "Super Mario Bros. 2",Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAEE", Name = "Donkey Kong", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAFE", Name = "Donkey Kong Jr." , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAHE", Name = "Excitebike", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAANE", Name = "The Legend of Zelda", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAPE", Name = "Kirby's Adventure", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAQE", Name = "Metroid", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAARE", Name = "Balloon Fight", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAASE", Name = "Zelda II - The Adventure of Link", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAATE", Name = "Punch-Out!! Featuring Mr. Dream", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAUE", Name = "Ice Climber", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAVE", Name = "Kid Icarus", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAWE", Name = "Mario Bros.", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAXE", Name = "Dr. MARIO", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NAAZE", Name = "StarTropics", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABBE", Name = "MEGA MAN™ 2", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABCE", Name = "GHOSTS'N GOBLINS™", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABJE", Name = "FINAL FANTASY®", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABKE", Name = "BUBBLE BOBBLE" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABME", Name = "PAC-MAN", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABNE", Name = "Galaga", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABQE", Name = "Castlevania", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABRE", Name = "GRADIUS", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABVE", Name = "Super C", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NABXE", Name = "Castlevania II Simon's Quest", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-NACBE", Name = "NINJA GAIDEN", Size =25000 },
+ new NesDefaultGame { Code = "CLV-P-NACDE", Name = "TECMO BOWL", Size =25000 },
+ new NesDefaultGame { Code = "CLV-P-NACHE", Name = "DOUBLE DRAGON II: The Revenge", Size = 25000 }
};
static NesDefaultGame[] defaultFamicomGames = new NesDefaultGame[] {
- new NesDefaultGame { Code = "CLV-P-HAAAJ", Name = "スーパーマリオブラザーズ", Size = 596775 },
- new NesDefaultGame { Code = "CLV-P-HAACJ", Name = "スーパーマリオブラザーズ3", Size = 1411534 },
- new NesDefaultGame { Code = "CLV-P-HAADJ", Name = "スーパーマリオUSA", Size = 1501542 },
- new NesDefaultGame { Code = "CLV-P-HAAEJ", Name = "ドンキーコング" , Size = 568006 },
- new NesDefaultGame { Code = "CLV-P-HAAHJ", Name = "エキサイトバイク" , Size = 597513 },
- new NesDefaultGame { Code = "CLV-P-HAAMJ", Name = "マリオオープンゴルフ" , Size = 798179 },
- new NesDefaultGame { Code = "CLV-P-HAANJ", Name = "ゼルダの伝説", Size = 677971 },
- new NesDefaultGame { Code = "CLV-P-HAAPJ", Name = "星のカービィ 夢の泉の物語" , Size = 1331436 },
- new NesDefaultGame { Code = "CLV-P-HAAQJ", Name = "メトロイド" , Size = 666895 },
- new NesDefaultGame { Code = "CLV-P-HAARJ", Name = "バルーンファイト" , Size = 569750 },
- new NesDefaultGame { Code = "CLV-P-HAASJ", Name = "リンクの冒険" , Size = 666452 },
- new NesDefaultGame { Code = "CLV-P-HAAUJ", Name = "アイスクライマー" , Size = 812372 },
- new NesDefaultGame { Code = "CLV-P-HAAWJ", Name = "マリオブラザーズ" , Size = 1038275 },
- new NesDefaultGame { Code = "CLV-P-HAAXJ", Name = "ドクターマリオ" , Size = 1083234 },
- new NesDefaultGame { Code = "CLV-P-HABBJ", Name = "ロックマン®2 Dr.ワイリーの謎" , Size = 592425 },
- new NesDefaultGame { Code = "CLV-P-HABCJ", Name = "魔界村®", Size = 456166 },
- new NesDefaultGame { Code = "CLV-P-HABLJ", Name = "ファイナルファンタジー®III" , Size = 830898 },
- new NesDefaultGame { Code = "CLV-P-HABMJ", Name = "パックマン" , Size = 341593 },
- new NesDefaultGame { Code = "CLV-P-HABNJ", Name = "ギャラガ", Size = 345552 },
- new NesDefaultGame { Code = "CLV-P-HABQJ", Name = "悪魔城ドラキュラ" , Size = 428522 },
- new NesDefaultGame { Code = "CLV-P-HABRJ", Name = "グラディウス", Size = 393055 },
- new NesDefaultGame { Code = "CLV-P-HABVJ", Name = "スーパー魂斗羅" , Size = 569537 },
- new NesDefaultGame { Code = "CLV-P-HACAJ", Name = "イー・アル・カンフー", Size = 336353 },
- new NesDefaultGame { Code = "CLV-P-HACBJ", Name = "忍者龍剣伝" , Size = 578623 },
- new NesDefaultGame { Code = "CLV-P-HACCJ", Name = "ソロモンの鍵" , Size = 387084 },
- new NesDefaultGame { Code = "CLV-P-HACEJ", Name = "つっぱり大相撲", Size = 392595 },
- new NesDefaultGame { Code = "CLV-P-HACHJ", Name = "ダブルドラゴンⅡ The Revenge", Size = 579757 },
- new NesDefaultGame { Code = "CLV-P-HACJJ", Name = "ダウンタウン熱血物語" , Size = 588367 },
- new NesDefaultGame { Code = "CLV-P-HACLJ", Name = "ダウンタウン熱血行進曲 それゆけ大運動会", Size = 587083 },
- new NesDefaultGame { Code = "CLV-P-HACPJ", Name = "アトランチスの謎", Size = 376213 }
+ new NesDefaultGame { Code = "CLV-P-HAAAJ", Name = "スーパーマリオブラザーズ", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAACJ", Name = "スーパーマリオブラザーズ3", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAADJ", Name = "スーパーマリオUSA", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAEJ", Name = "ドンキーコング" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAHJ", Name = "エキサイトバイク" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAMJ", Name = "マリオオープンゴルフ" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAANJ", Name = "ゼルダの伝説", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAPJ", Name = "星のカービィ 夢の泉の物語" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAQJ", Name = "メトロイド" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAARJ", Name = "バルーンファイト" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAASJ", Name = "リンクの冒険" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAUJ", Name = "アイスクライマー" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAWJ", Name = "マリオブラザーズ" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HAAXJ", Name = "ドクターマリオ" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABBJ", Name = "ロックマン®2 Dr.ワイリーの謎" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABCJ", Name = "魔界村®", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABLJ", Name = "ファイナルファンタジー®III" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABMJ", Name = "パックマン" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABNJ", Name = "ギャラガ", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABQJ", Name = "悪魔城ドラキュラ" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABRJ", Name = "グラディウス", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HABVJ", Name = "スーパー魂斗羅" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACAJ", Name = "イー・アル・カンフー", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACBJ", Name = "忍者龍剣伝" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACCJ", Name = "ソロモンの鍵" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACEJ", Name = "つっぱり大相撲", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACHJ", Name = "ダブルドラゴンⅡ The Revenge", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACJJ", Name = "ダウンタウン熱血物語" , Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACLJ", Name = "ダウンタウン熱血行進曲 それゆけ大運動会", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-HACPJ", Name = "アトランチスの謎", Size = 25000 }
};
- static NesDefaultGame[] defaultSnesGames = new NesDefaultGame[]
- {
- new NesDefaultGame { Code = "CLV-P-SAAAE", Name = "Super Mario World", Size = 2979540 },
- new NesDefaultGame { Code = "CLV-P-SAABE", Name = "F-ZERO", Size = 2770166 },
- new NesDefaultGame { Code = "CLV-P-SAAEE", Name = "The Legend of Zelda: A Link to the Past", Size = 2618796 },
- new NesDefaultGame { Code = "CLV-P-SAAFE", Name = "Super Mario Kart", Size = 2436777 },
- new NesDefaultGame { Code = "CLV-P-SAAHE", Name = "Super Metroid", Size = 6237435 },
- new NesDefaultGame { Code = "CLV-P-SAAJE", Name = "EarthBound", Size = 5954521 },
- new NesDefaultGame { Code = "CLV-P-SAAKE", Name = "Kirby's Dream Course", Size = 3210055 },
- new NesDefaultGame { Code = "CLV-P-SAALE", Name = "Donkey Kong Country", Size = 5899153 },
- new NesDefaultGame { Code = "CLV-P-SAAQE", Name = "Kirby Super Star", Size = 6893805 },
- new NesDefaultGame { Code = "CLV-P-SAAXE", Name = "Super Punch-Out!!", Size = 5085386 },
- new NesDefaultGame { Code = "CLV-P-SABCE", Name = "Mega Man X", Size = 2680591 },
- new NesDefaultGame { Code = "CLV-P-SABDE", Name = "Super Ghouls'n Ghosts", Size = 2157749 },
- new NesDefaultGame { Code = "CLV-P-SABHE", Name = "Street Fighter II Turbo: Hyper Fighting", Size = 9166072 },
- new NesDefaultGame { Code = "CLV-P-SABQE", Name = "Super Mario RPG: Legend of the Seven Stars", Size = 5620137 },
- new NesDefaultGame { Code = "CLV-P-SABRE", Name = "Secret of Mana", Size = 3029013 },
- new NesDefaultGame { Code = "CLV-P-SABTE", Name = "Final Fantasy III", Size = 4336655 },
- new NesDefaultGame { Code = "CLV-P-SACBE", Name = "Super Castlevania IV", Size = 2953337 },
- new NesDefaultGame { Code = "CLV-P-SACCE", Name = "CONTRA III THE ALIEN WARS", Size = 2803555 },
- new NesDefaultGame { Code = "CLV-P-SADGE", Name = "Star Fox", Size = 3339549 },
- new NesDefaultGame { Code = "CLV-P-SADJE", Name = "Yoshi's Island", Size = 4261051 },
- new NesDefaultGame { Code = "CLV-P-SADKE", Name = "Star Fox 2", Size = 2088122 }
+ static NesDefaultGame[] defaultSnesGames = new NesDefaultGame[] {
+
+ new NesDefaultGame { Code = "CLV-P-SAAAE", Name = "Super Mario World", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAABE", Name = "F-ZERO", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAAEE", Name = "The Legend of Zelda: A Link to the Past", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAAFE", Name = "Super Mario Kart", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAAHE", Name = "Super Metroid", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAAJE", Name = "EarthBound", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAAKE", Name = "Kirby's Dream Course", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAALE", Name = "Donkey Kong Country", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAAQE", Name = "Kirby Super Star", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SAAXE", Name = "Super Punch-Out!!", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SABCE", Name = "Mega Man X", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SABDE", Name = "Super Ghouls'n Ghosts", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SABHE", Name = "Street Fighter II Turbo: Hyper Fighting", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SABQE", Name = "Super Mario RPG: Legend of the Seven Stars", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SABRE", Name = "Secret of Mana", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SABTE", Name = "Final Fantasy III", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SACBE", Name = "Super Castlevania IV", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SACCE", Name = "CONTRA III THE ALIEN WARS", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SADGE", Name = "Star Fox", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SADJE", Name = "Yoshi's Island", Size = 25000 },
+ new NesDefaultGame { Code = "CLV-P-SADKE", Name = "Star Fox 2", Size = 25000 }
};
static NesDefaultGame[] defaultSuperFamicomGames = new NesDefaultGame[]
{
- new NesDefaultGame { Code = "CLV-P-VAAAJ", Name = "スーパーマリオワールド", Size = 2648224 },
- new NesDefaultGame { Code = "CLV-P-VAABJ", Name = "F-ZERO", Size = 2666349 },
- new NesDefaultGame { Code = "CLV-P-VAAEJ", Name = "ゼルダの伝説 神々のトライフォース", Size = 2377849 },
- new NesDefaultGame { Code = "CLV-P-VAAFJ", Name = "スーパーマリオカート", Size = 2295761 },
- new NesDefaultGame { Code = "CLV-P-VAAGJ", Name = "ファイアーエムブレム 紋章の謎", Size = 5272630 },
- new NesDefaultGame { Code = "CLV-P-VAAHJ", Name = "スーパーメトロイド", Size = 6211090 },
- new NesDefaultGame { Code = "CLV-P-VAALJ", Name = "スーパードンキーコング", Size = 5688108 },
- new NesDefaultGame { Code = "CLV-P-VAAQJ", Name = "星のカービィ スーパーデラックス", Size = 7071882 },
- new NesDefaultGame { Code = "CLV-P-VABBJ", Name = "スーパーストリートファイターⅡ ザ ニューチャレンジャーズ", Size = 13481718 },
- new NesDefaultGame { Code = "CLV-P-VABCJ", Name = "ロックマンX", Size = 2666724 },
- new NesDefaultGame { Code = "CLV-P-VABDJ", Name = "超魔界村", Size = 2143395 },
- new NesDefaultGame { Code = "CLV-P-VABQJ", Name = "スーパーマリオRPG", Size = 5659168 },
- new NesDefaultGame { Code = "CLV-P-VABRJ", Name = "聖剣伝説2", Size = 2922201 },
- new NesDefaultGame { Code = "CLV-P-VABTJ", Name = "ファイナルファンタジーVI", Size = 4335899 },
- new NesDefaultGame { Code = "CLV-P-VACCJ", Name = "魂斗羅スピリッツ", Size = 2762661 },
- new NesDefaultGame { Code = "CLV-P-VACDJ", Name = "がんばれゴエモン ゆき姫救出絵巻", Size = 2415384 },
- new NesDefaultGame { Code = "CLV-P-VADFJ", Name = "スーパーフォーメーションサッカー", Size = 1922523 },
- new NesDefaultGame { Code = "CLV-P-VADGJ", Name = "スターフォックス", Size = 3324346 },
- new NesDefaultGame { Code = "CLV-P-VADJJ", Name = "スーパーマリオ ヨッシーアイランド", Size = 3799569 },
- new NesDefaultGame { Code = "CLV-P-VADKJ", Name = "スターフォックス2", Size = 2066174 },
- new NesDefaultGame { Code = "CLV-P-VADZJ", Name = "パネルでポン", Size = 3563159 },
+ new NesDefaultGame { Code = "CLV-P-VAAAJ", Name = "スーパーマリオワールド", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VAABJ", Name = "F-ZERO", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VAAEJ", Name = "ゼルダの伝説 神々のトライフォース", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VAAFJ", Name = "スーパーマリオカート", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VAAGJ", Name = "ファイアーエムブレム 紋章の謎", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VAAHJ", Name = "スーパーメトロイド", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VAALJ", Name = "スーパードンキーコング", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VAAQJ", Name = "星のカービィ スーパーデラックス", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VABBJ", Name = "スーパーストリートファイターⅡ ザ ニューチャレンジャーズ", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VABCJ", Name = "ロックマンX", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VABDJ", Name = "超魔界村", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VABQJ", Name = "スーパーマリオRPG", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VABRJ", Name = "聖剣伝説2", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VABTJ", Name = "ファイナルファンタジーVI", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VACCJ", Name = "魂斗羅スピリッツ", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VACDJ", Name = "がんばれゴエモン ゆき姫救出絵巻", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VADFJ", Name = "スーパーフォーメーションサッカー", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VADGJ", Name = "スターフォックス", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VADJJ", Name = "スーパーマリオ ヨッシーアイランド", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VADKJ", Name = "スターフォックス2", Size = 24576 },
+ new NesDefaultGame { Code = "CLV-P-VADZJ", Name = "パネルでポン", Size = 24576 },
};
@@ -782,10 +782,14 @@ namespace com.clusterrr.hakchi_gui
return;
}
var maxGamesSize = DefaultMaxGamesSize * 1024 * 1024;
+ string prefix = "~";
if (WorkerForm.NandCTotal > 0)
+ {
maxGamesSize = (WorkerForm.NandCFree + WorkerForm.WritedGamesSize) - WorkerForm.ReservedMemory * 1024 * 1024;
+ prefix = "";
+ }
toolStripStatusLabelSelected.Text = stats.Count + " " + Resources.GamesSelected;
- toolStripStatusLabelSize.Text = string.Format("{0:F1}MB / {1:F1}MB", stats.Size / 1024.0 / 1024.0, maxGamesSize / 1024.0 / 1024.0);
+ toolStripStatusLabelSize.Text = string.Format("{0:F1}MB / {2}{1:F1}MB", stats.Size / 1024.0 / 1024.0, maxGamesSize / 1024.0 / 1024.0, prefix);
toolStripProgressBar.Maximum = (int)maxGamesSize;
toolStripProgressBar.Value = Math.Min((int)stats.Size, toolStripProgressBar.Maximum);
toolStripStatusLabelSize.ForeColor =
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index b2c74a3e..ec1eec9f 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -33,6 +33,6 @@ using System.Resources;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.0.21.10")]
-[assembly: AssemblyFileVersion("2.0.21.10")]
+[assembly: AssemblyVersion("2.0.21.20")]
+[assembly: AssemblyFileVersion("2.0.21.20")]
[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/WaitingFelForm.cs b/WaitingFelForm.cs
index 6d8a6788..d6500adb 100644
--- a/WaitingFelForm.cs
+++ b/WaitingFelForm.cs
@@ -30,22 +30,6 @@ namespace com.clusterrr.hakchi_gui
return form.DialogResult == DialogResult.OK;
}
- static bool DeviceExists(UInt16 vid, UInt16 pid)
- {
- try
- {
- using (var fel = new Fel())
- {
- fel.Open(vid, pid);
- return true;
- }
- }
- catch
- {
- return false;
- }
- }
-
private void timer_Tick(object sender, EventArgs e)
{
if (Fel.DeviceExists(vid, pid))
diff --git a/WorkerForm.cs b/WorkerForm.cs
index 69697dc1..5d789604 100644
--- a/WorkerForm.cs
+++ b/WorkerForm.cs
@@ -190,7 +190,8 @@ namespace com.clusterrr.hakchi_gui
if (!File.Exists(ubootPath)) throw new FileNotFoundException(ubootPath + " not found");
fel.Fes1Bin = File.ReadAllBytes(fes1Path);
fel.UBootBin = File.ReadAllBytes(ubootPath);
- fel.Open(vid, pid);
+ if (!fel.Open(vid, pid))
+ throw new FelException("Can't open device");
SetStatus(Resources.UploadingFes1);
fel.InitDram(true);
TaskbarProgress.SetState(this, TaskbarProgress.TaskbarStates.Normal);
@@ -774,6 +775,7 @@ namespace com.clusterrr.hakchi_gui
string gamesPath = 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)
@@ -854,6 +856,15 @@ namespace com.clusterrr.hakchi_gui
}
SetStatus(Resources.UploadingOriginalGames);
+ var squashFsMount = clovershell.ExecuteSimple($"mount | grep {squashFsPath}", 30000, false);
+ if (string.IsNullOrEmpty(squashFsMount))
+ {
+ clovershell.ExecuteSimple($"mkdir -p {squashFsPath} && mount /dev/mapper/root-crypt {squashFsPath}", 30000, true);
+ MessageBoxFromThread(this, "Seems like your are using old version of custom kernel. " +
+ "Please install latest version using \"Kernel->Flash custom kernel\" menu to make original games work.",
+ Resources.CustomKernel, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, false);
+ }
+
startProgress = progress;
foreach (var originalCode in originalGames.Keys)
{
@@ -862,23 +873,30 @@ namespace com.clusterrr.hakchi_gui
{
case MainForm.ConsoleType.NES:
case MainForm.ConsoleType.Famicom:
- originalSyncCode = $"mkdir -p \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"rsync -ac \"{gamesPath}/{originalCode}/\" \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"sed -i -e 's/\\/usr\\/bin\\/clover-kachikachi/\\/bin\\/clover-kachikachi-wr/g' \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/{originalCode}.desktop\"";
+ 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 = $"mkdir -p \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"rsync -ac \"{gamesPath}/{originalCode}/\" \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"sed -i -e 's/\\/usr\\/bin\\/clover-canoe-shvc/\\/bin\\/clover-canoe-shvc-wr/g' \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/{originalCode}.desktop\"";
- /*
- // With compression but very slow
- originalSyncCode = $"mkdir -p \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"rsync -ac \"{gamesPath}/{originalCode}/\" \"/tmp/{originalCode}/\" && " +
- $"gzip \"/tmp/{originalCode}/{originalCode}.sfrom\" && " +
- $"rsync -ac \"/tmp/{originalCode}/\" \"{rootFsPath}{gamesPath}/{originalGames[originalCode]}/{originalCode}/\" && " +
- $"rm -rf \"/tmp/{originalCode}/\"";
- */
+ 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);
diff --git a/hakchi_gui.csproj b/hakchi_gui.csproj
index 68138b24..5bece96a 100644
--- a/hakchi_gui.csproj
+++ b/hakchi_gui.csproj
@@ -31,8 +31,8 @@
<PublisherName>Alexey %27Cluster%27 Avdyukhin</PublisherName>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>index.html</WebPage>
- <ApplicationRevision>10</ApplicationRevision>
- <ApplicationVersion>2.0.21.10</ApplicationVersion>
+ <ApplicationRevision>20</ApplicationRevision>
+ <ApplicationVersion>2.0.21.20</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
<PublishWizardCompleted>true</PublishWizardCompleted>
diff --git a/user_mods/remove_thumbnails.hmod/install b/user_mods/remove_thumbnails.hmod/install
index b887093b..af41f6ac 100644
--- a/user_mods/remove_thumbnails.hmod/install
+++ b/user_mods/remove_thumbnails.hmod/install
@@ -18,7 +18,7 @@ echo nesjson: $nesjson
restore $nesjson
# sed is GNU util to modify file, this command replaces "enabled:true" to "enabled:false"
# Please note that we need to edit $rootfs$scnfile (writable file), not a just $scnfile (original read-only file)
-sed -i -e 's/"enabled":true/"enabled":false/g' $rootfs$scnfile
+sed -i -e 's/color":\[1,1,1,1\]/color":\[1,1,1,0\]/g' $rootfs$scnfile
# Same with nes.json file, most simple way is to replace coordinates sprite coords with zeros
# For NES Mini
sed -i -e 's/\[93,861,12,8\]/\[0,0,0,0\]/g' $rootfs$nesjson
diff --git a/user_mods/remove_thumbnails.hmod/readme.txt b/user_mods/remove_thumbnails.hmod/readme.txt
index 99f0f75b..557d3552 100644
--- a/user_mods/remove_thumbnails.hmod/readme.txt
+++ b/user_mods/remove_thumbnails.hmod/readme.txt
@@ -1,6 +1,3 @@
=== No-thumbnails Hack ===
This module removes thumbnails at the bottom of the screen.
-
-Known problems:
-- Long startup time on SNES Classic Mini for unknown reason